<?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>226431</bug_id>
          
          <creation_ts>2021-05-29 20:01:42 -0700</creation_ts>
          <short_desc>Adopt clang thread safety annotations in WTF::DataMutex</short_desc>
          <delta_ts>2021-06-03 04:03:48 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Template Framework</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>226432</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>aboya</cc>
    
    <cc>achristensen</cc>
    
    <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>cgarcia</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>jer.noble</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>menard</cc>
    
    <cc>philipj</cc>
    
    <cc>pnormand</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>vjaquez</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1765167</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-29 20:01:42 -0700</bug_when>
    <thetext>Adopt clang thread safety annotation in WTF::DataMutex. This allows us to stop using UncheckedCondition in a few places.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765168</commentid>
    <comment_count>1</comment_count>
      <attachid>430122</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-29 20:03:58 -0700</bug_when>
    <thetext>Created attachment 430122
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765169</commentid>
    <comment_count>2</comment_count>
      <attachid>430123</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-29 20:05:48 -0700</bug_when>
    <thetext>Created attachment 430123
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765170</commentid>
    <comment_count>3</comment_count>
      <attachid>430124</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-29 20:16:47 -0700</bug_when>
    <thetext>Created attachment 430124
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765172</commentid>
    <comment_count>4</comment_count>
      <attachid>430125</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-29 20:20:02 -0700</bug_when>
    <thetext>Created attachment 430125
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765173</commentid>
    <comment_count>5</comment_count>
      <attachid>430126</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-29 20:26:57 -0700</bug_when>
    <thetext>Created attachment 430126
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765179</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-29 22:23:05 -0700</bug_when>
    <thetext>Committed r278248 (238285@main): &lt;https://commits.webkit.org/238285@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 430126.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765180</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-29 22:24:22 -0700</bug_when>
    <thetext>&lt;rdar://problem/78656465&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766343</commentid>
    <comment_count>8</comment_count>
      <attachid>430126</attachid>
    <who name="Alicia Boya García">aboya</who>
    <bug_when>2021-06-03 04:03:48 -0700</bug_when>
    <thetext>Comment on attachment 430126
Patch

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

&gt; Source/WTF/wtf/DataMutex.h:68
&gt; +        DATA_MUTEX_CHECK(!mutex().isHeld());

Checking this *before* taking the mutex will crash in inocuous cases such when another thread has already locked the DataMutex and the calling thread needs to wait.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430122</attachid>
            <date>2021-05-29 20:03:58 -0700</date>
            <delta_ts>2021-05-29 20:08:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226431-20210529200357.patch</filename>
            <type>text/plain</type>
            <size>34979</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MjQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDk1NjVmYTExNTA1YTQ4N2I2ZTVhNThl
MzMzNzEwZGNhYjcwYWM5NmIuLmVmMGNmODkyNTgwNzIwZmRkYWY0Nzk2YmY5YWVhMDNkMmNiMzU3
ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMDUtMjkgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBBZG9wdCBjbGFuZyB0aHJlYWQgc2FmZXR5IGFubm90YXRp
b24gaW4gV1RGOjpEYXRhTXV0ZXgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyNjQzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkb3B0IGNsYW5nIHRocmVhZCBzYWZldHkgYW5ub3RhdGlvbiBpbiBXVEY6
OkRhdGFNdXRleC4gVGhpcyBhbGxvd3MgdXMgdG8KKyAgICAgICAgc3RvcCB1c2luZyBVbmNoZWNr
ZWRDb25kaXRpb24gaW4gYSBmZXcgcGxhY2VzLgorCisgICAgICAgICogd3RmL0RhdGFNdXRleC5o
OgorICAgICAgICAoV1RGOjpEYXRhTXV0ZXg6OkRhdGFNdXRleCk6CisKIDIwMjEtMDUtMjkgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBTdG9wIHVzaW5nIFVuY2hl
Y2tlZExvY2sgaW4gSlNDOjpWTUluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGMwM2E1YTdlOTI3NTNj
Y2JkMzBhODdjYWJlMTg2NjA0NTI0NTFiNWQuLmU5YzQ4NWY5YzQ5Y2NjZDdhYTU2NWY2YjRkZGU2
YWVkNWEzNDQ3M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OSBAQAorMjAyMS0wNS0yOSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEFkb3B0IGNsYW5nIHRocmVh
ZCBzYWZldHkgYW5ub3RhdGlvbiBpbiBXVEY6OkRhdGFNdXRleAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NDMxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGNvZGUgYmFzZSBkdWUgdG8gRGF0
YU11dGV4IEFQSSBjaGFuZ2VzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnBlcmZvcm1UYXNrQXRNZWRpYVRpbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp0cmlnZ2VyUmVwYWlu
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9X
ZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwOgorICAgICAgICAod2ViS2l0V2ViU3JjQ29uc3Ry
dWN0ZWQpOgorICAgICAgICAod2ViS2l0V2ViU3JjR2V0UHJvcGVydHkpOgorICAgICAgICAod2Vi
S2l0V2ViU3JjU2V0Q29udGV4dCk6CisgICAgICAgICh3ZWJLaXRXZWJTcmNDcmVhdGUpOgorICAg
ICAgICAod2ViS2l0V2ViU3JjTWFrZVJlcXVlc3QpOgorICAgICAgICAod2ViS2l0V2ViU3JjU3Rv
cCk6CisgICAgICAgICh3ZWJLaXRXZWJTcmNHZXRTaXplKToKKyAgICAgICAgKHdlYktpdFdlYlNy
Y0lzU2Vla2FibGUpOgorICAgICAgICAod2ViS2l0V2ViU3JjRG9TZWVrKToKKyAgICAgICAgKHdl
YktpdFdlYlNyY1F1ZXJ5KToKKyAgICAgICAgKHdlYktpdFdlYlNyY1VuTG9jayk6CisgICAgICAg
ICh3ZWJLaXRXZWJTcmNVbkxvY2tTdG9wKToKKyAgICAgICAgKHdlYktpdFdlYlNyY1NldE1lZGlh
UGxheWVyKToKKyAgICAgICAgKHdlYktpdFNyY1Bhc3NlZENPUlNBY2Nlc3NDaGVjayk6CisgICAg
ICAgIChDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6cmVzcG9uc2VSZWNlaXZlZCk6Cisg
ICAgICAgIChDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6ZGF0YVJlY2VpdmVkKToKKyAg
ICAgICAgKENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjphY2Nlc3NDb250cm9sQ2hlY2tG
YWlsZWQpOgorICAgICAgICAoQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmxvYWRGYWls
ZWQpOgorICAgICAgICAoQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmxvYWRGaW5pc2hl
ZCk6CisgICAgICAgICh3ZWJLaXRTcmNXb3VsZFRhaW50T3JpZ2luKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291cmNlVHJhY2tHU3RyZWFtZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2VUcmFja0dTdHJlYW1lcjo6aXNSZWFkeUZv
ck1vcmVTYW1wbGVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlVHJhY2tHU3RyZWFt
ZXI6Om5vdGlmeVdoZW5SZWFkeUZvck1vcmVTYW1wbGVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU291cmNlVHJhY2tHU3RyZWFtZXI6OmVucXVldWVPYmplY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTb3VyY2VUcmFja0dTdHJlYW1lcjo6Y2xlYXJRdWV1ZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJjZVRyYWNrR1N0cmVhbWVyLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9XZWJLaXRNZWRpYVNv
dXJjZUdTdHJlYW1lci5jcHA6CisgICAgICAgICh3ZWJLaXRNZWRpYVNyY0FjdGl2YXRlTW9kZSk6
CisgICAgICAgICh3ZWJLaXRNZWRpYVNyY1BhZExpbmtlZCk6CisgICAgICAgICh3ZWJLaXRNZWRp
YVNyY0xvb3ApOgorICAgICAgICAod2ViS2l0TWVkaWFTcmNTdHJlYW1GbHVzaCk6CisKIDIwMjEt
MDUtMjggIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIENsaWVudHMg
b2Ygb3B0aW9uYWwgc2hvdWxkIHVzZSBoYXNfdmFsdWUgaW5zdGVhZCBvZiByZWx5aW5nIG9uIGhh
c1ZhbHVlIG1hY3JvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9EYXRhTXV0ZXguaCBiL1Nv
dXJjZS9XVEYvd3RmL0RhdGFNdXRleC5oCmluZGV4IGEyZTFkMjQwYThhNTA3YmU2YmJiOTllNzMz
NDM1MTI1NWY1NThlNTUuLjEyOGVmOTQxOWY4NWFjMjBjMjY1NTQxNzBmMWNmYjJlYjAwMTQ3ZDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0RhdGFNdXRleC5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL0RhdGFNdXRleC5oCkBAIC00MCwxMTkgKzQwLDg0IEBAIG5hbWVzcGFjZSBXVEYgewogI2Rl
ZmluZSBEQVRBX01VVEVYX0NIRUNLKGV4cHIpCiAjZW5kaWYKIAotdGVtcGxhdGU8dHlwZW5hbWUg
TG9ja1R5cGU+Ci1jbGFzcyBPd25lckF3YXJlTG9ja0FkYXB0ZXIgewordGVtcGxhdGUgPHR5cGVu
YW1lIFQ+IGNsYXNzIERhdGFNdXRleExvY2tlcjsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2Ns
YXNzIERhdGFNdXRleCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoRGF0YU11dGV4KTsKK3B1YmxpYzoKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSAuLi5BcmdzPgorICAgIGV4cGxpY2l0IERhdGFNdXRleChBcmdzJiYuLi4gYXJncykKKyAgICAg
ICAgOiBtX2RhdGEoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKQorICAgIHsgfQorCitwcml2
YXRlOgorICAgIGZyaWVuZCBjbGFzcyBEYXRhTXV0ZXhMb2NrZXI8VD47CisKKyAgICBMb2NrIG1f
bXV0ZXg7CisgICAgVCBtX2RhdGEgV1RGX0dVQVJERURfQllfTE9DSyhtX211dGV4KTsKK307CisK
K3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgV1RGX0NBUEFCSUxJVFlfU0NPUEVEX0xPQ0sg
RGF0YU11dGV4TG9ja2VyIHsKIHB1YmxpYzoKLSAgICB2b2lkIGxvY2soKQorICAgIGV4cGxpY2l0
IERhdGFNdXRleExvY2tlcihEYXRhTXV0ZXg8VD4mIGRhdGFNdXRleCkgV1RGX0FDUVVJUkVTX0xP
Q0sobV9kYXRhTXV0ZXgubV9tdXRleCkKKyAgICAgICAgOiBtX2RhdGFNdXRleChkYXRhTXV0ZXgp
CiAgICAgewotICAgICAgICBEQVRBX01VVEVYX0NIRUNLKG1fb3duZXIgIT0gJlRocmVhZDo6Y3Vy
cmVudCgpKTsgLy8gVGhyZWFkIGF0dGVtcHRlZCByZWN1cnNpdmUgbG9jayAodW5zdXBwb3J0ZWQp
LgotICAgICAgICBtX2xvY2subG9jaygpOwotI2lmIEVOQUJMRV9EQVRBX01VVEVYX0NIRUNLUwot
ICAgICAgICBBU1NFUlQoIW1fb3duZXIpOwotICAgICAgICBtX293bmVyID0gJlRocmVhZDo6Y3Vy
cmVudCgpOwotI2VuZGlmCisgICAgICAgIERBVEFfTVVURVhfQ0hFQ0soIW11dGV4KCkuaXNIZWxk
KCkpOworICAgICAgICBtdXRleCgpLmxvY2soKTsKKyAgICAgICAgbV9pc0xvY2tlZCA9IHRydWU7
CiAgICAgfQogCi0gICAgdm9pZCB1bmxvY2soKQorICAgIH5EYXRhTXV0ZXhMb2NrZXIoKSBXVEZf
UkVMRUFTRVNfTE9DSyhtX2RhdGFNdXRleC5tX211dGV4KQogICAgIHsKLSNpZiBFTkFCTEVfREFU
QV9NVVRFWF9DSEVDS1MKLSAgICAgICAgbV9vd25lciA9IG51bGxwdHI7Ci0jZW5kaWYKLSAgICAg
ICAgbV9sb2NrLnVubG9jaygpOworICAgICAgICBpZiAobV9pc0xvY2tlZCkKKyAgICAgICAgICAg
IG11dGV4KCkudW5sb2NrKCk7CiAgICAgfQogCi0gICAgYm9vbCB0cnlMb2NrKCkKKyAgICBUKiBv
cGVyYXRvci0+KCkKICAgICB7Ci0gICAgICAgIERBVEFfTVVURVhfQ0hFQ0sobV9vd25lciAhPSAm
VGhyZWFkOjpjdXJyZW50KCkpOyAvLyBUaHJlYWQgYXR0ZW1wdGVkIHJlY3Vyc2l2ZSBsb2NrICh1
bnN1cHBvcnRlZCkuCi0gICAgICAgIGlmICghbV9sb2NrLnRyeUxvY2soKSkKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLQotI2lmIEVOQUJMRV9EQVRBX01VVEVYX0NIRUNLUwotICAgICAgICBB
U1NFUlQoIW1fb3duZXIpOwotICAgICAgICBtX293bmVyID0gJlRocmVhZDo6Y3VycmVudCgpOwot
I2VuZGlmCi0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBEQVRBX01VVEVYX0NIRUNLKG11
dGV4KCkuaXNIZWxkKCkpOworICAgICAgICBhc3NlcnRJc0hlbGQobV9kYXRhTXV0ZXgubV9tdXRl
eCk7CisgICAgICAgIHJldHVybiAmbV9kYXRhTXV0ZXgubV9kYXRhOwogICAgIH0KIAotICAgIGJv
b2wgaXNMb2NrZWQoKSBjb25zdAorICAgIFQmIG9wZXJhdG9yKigpCiAgICAgewotICAgICAgICBy
ZXR1cm4gbV9sb2NrLmlzTG9ja2VkKCk7CisgICAgICAgIERBVEFfTVVURVhfQ0hFQ0sobXV0ZXgo
KS5pc0hlbGQoKSk7CisgICAgICAgIGFzc2VydElzSGVsZChtX2RhdGFNdXRleC5tX211dGV4KTsK
KyAgICAgICAgcmV0dXJuIG1fZGF0YU11dGV4Lm1fZGF0YTsKICAgICB9CiAKLXByaXZhdGU6Ci0j
aWYgRU5BQkxFX0RBVEFfTVVURVhfQ0hFQ0tTCi0gICAgVGhyZWFkKiBtX293bmVyIHsgbnVsbHB0
ciB9OyAvLyBVc2UgVGhyZWFkKiBpbnN0ZWFkIG9mIFJlZlB0cjxUaHJlYWQ+IHNpbmNlIG1fb3du
ZXIgdGhyZWFkIGlzIGFsd2F5cyBhbGl2ZSB3aGlsZSBtX293bmVyIGlzIHNldC4KLSNlbmRpZgot
ICAgIExvY2tUeXBlIG1fbG9jazsKLX07Ci0KLXVzaW5nIE93bmVyQXdhcmVMb2NrID0gT3duZXJB
d2FyZUxvY2tBZGFwdGVyPExvY2s+OworICAgIExvY2smIG11dGV4KCkgV1RGX1JFVFVSTlNfTE9D
SyhtX2RhdGFNdXRleC5tX211dGV4KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZGF0YU11dGV4
Lm1fbXV0ZXg7CisgICAgfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBMb2NrVHlw
ZSA9IE93bmVyQXdhcmVMb2NrPgotY2xhc3MgRGF0YU11dGV4IHsKLSAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEYXRhTXV0ZXgpOwotcHVibGlj
OgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIC4uLkFyZ3M+Ci0gICAgZXhwbGljaXQgRGF0YU11dGV4
KEFyZ3MmJi4uLiBhcmdzKQotICAgICAgICA6IG1fZGF0YShzdGQ6OmZvcndhcmQ8QXJncz4oYXJn
cykuLi4pCi0gICAgeyB9CisgICAgdm9pZCB1bmxvY2tFYXJseSgpIFdURl9SRUxFQVNFU19MT0NL
KG1fZGF0YU11dGV4Lm1fbXV0ZXgpCisgICAgeworICAgICAgICBEQVRBX01VVEVYX0NIRUNLKG11
dGV4KCkuaXNIZWxkKCkpOworICAgICAgICBtX2lzTG9ja2VkID0gZmFsc2U7CisgICAgICAgIG1f
bG9ja0hvbGRlci51bmxvY2tFYXJseSgpOworICAgIH0KIAotICAgIGNsYXNzIExvY2tlZFdyYXBw
ZXIgewotICAgIHB1YmxpYzoKLSAgICAgICAgZXhwbGljaXQgTG9ja2VkV3JhcHBlcihEYXRhTXV0
ZXgmIGRhdGFNdXRleCkKLSAgICAgICAgICAgIDogbV9tdXRleChkYXRhTXV0ZXgubV9tdXRleCkK
LSAgICAgICAgICAgICwgbV9sb2NrSG9sZGVyKGRhdGFNdXRleC5tX211dGV4KQotICAgICAgICAg
ICAgLCBtX2RhdGEoZGF0YU11dGV4Lm1fZGF0YSkKLSAgICAgICAgeyB9Ci0KLSAgICAgICAgVCog
b3BlcmF0b3ItPigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIERBVEFfTVVURVhfQ0hFQ0sobV9t
dXRleC5pc0xvY2tlZCgpKTsKLSAgICAgICAgICAgIHJldHVybiAmbV9kYXRhOwotICAgICAgICB9
Ci0KLSAgICAgICAgVCYgb3BlcmF0b3IqKCkKLSAgICAgICAgewotICAgICAgICAgICAgREFUQV9N
VVRFWF9DSEVDSyhtX211dGV4LmlzTG9ja2VkKCkpOwotICAgICAgICAgICAgcmV0dXJuIG1fZGF0
YTsKLSAgICAgICAgfQotCi0gICAgICAgIExvY2tUeXBlJiBtdXRleCgpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiBtX211dGV4OwotICAgICAgICB9Ci0KLSAgICAgICAgTG9ja2VyPExv
Y2tUeXBlPiYgbG9ja0hvbGRlcigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBtX2xv
Y2tIb2xkZXI7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBVc2VkIHRvIGF2b2lkIGV4Y2Vzc2l2
ZSBicmFjZSBzY29waW5nIHdoZW4gb25seSBzbWFsbCBwYXJ0cyBvZiB0aGUgY29kZSBuZWVkIHRv
IGJlIHJ1biB1bmxvY2tlZC4KLSAgICAgICAgLy8gUGxlYXNlIGJlIG1pbmRmdWwgdGhhdCBhY2Nl
c3NpbmcgdGhlIHdyYXBwZWQgZGF0YSBmcm9tIHRoZSBjYWxsYmFjayBpcyB1bnNhZmUgYW5kIHdp
bGwgZmFpbCBvbiBhc3NlcnRpb25zLgotICAgICAgICAvLyBJdCdzIGhlbHBmdWwgdG8gdXNlIGEg
bWluaW1hbCBsYW1iZGEgY2FwdHVyZSB0byBiZSBjb25zY2lvdXMgb2Ygd2hhdCBkYXRhIHlvdSdy
ZSBoYXZpbmcgYWNjZXNzIHRvIGluIHRoZXNlIHNlY3Rpb25zLgotICAgICAgICB2b2lkIHJ1blVu
bG9ja2VkKFdURjo6RnVuY3Rpb248dm9pZCgpPiBjYWxsYmFjaykKLSAgICAgICAgewotICAgICAg
ICAgICAgbV9tdXRleC51bmxvY2soKTsKLSAgICAgICAgICAgIGNhbGxiYWNrKCk7Ci0gICAgICAg
ICAgICBtX211dGV4LmxvY2soKTsKLSAgICAgICAgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAg
TG9ja1R5cGUmIG1fbXV0ZXg7Ci0gICAgICAgIExvY2tlcjxMb2NrVHlwZT4gbV9sb2NrSG9sZGVy
OwotICAgICAgICBUJiBtX2RhdGE7Ci0gICAgfTsKKyAgICAvLyBVc2VkIHRvIGF2b2lkIGV4Y2Vz
c2l2ZSBicmFjZSBzY29waW5nIHdoZW4gb25seSBzbWFsbCBwYXJ0cyBvZiB0aGUgY29kZSBuZWVk
IHRvIGJlIHJ1biB1bmxvY2tlZC4KKyAgICAvLyBQbGVhc2UgYmUgbWluZGZ1bCB0aGF0IGFjY2Vz
c2luZyB0aGUgd3JhcHBlZCBkYXRhIGZyb20gdGhlIGNhbGxiYWNrIGlzIHVuc2FmZSBhbmQgd2ls
bCBmYWlsIG9uIGFzc2VydGlvbnMuCisgICAgLy8gSXQncyBoZWxwZnVsIHRvIHVzZSBhIG1pbmlt
YWwgbGFtYmRhIGNhcHR1cmUgdG8gYmUgY29uc2Npb3VzIG9mIHdoYXQgZGF0YSB5b3UncmUgaGF2
aW5nIGFjY2VzcyB0byBpbiB0aGVzZSBzZWN0aW9ucy4KKyAgICB2b2lkIHJ1blVubG9ja2VkKGNv
bnN0IEZ1bmN0aW9uPHZvaWQoKT4mIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgREFUQV9NVVRF
WF9DSEVDSyhtdXRleCgpLmlzSGVsZCgpKTsKKyAgICAgICAgRHJvcExvY2tGb3JTY29wZSBkcm9w
TG9jayB7IG1fbG9ja0hvbGRlciB9OworICAgICAgICBjYWxsYmFjaygpOworICAgIH0KIAogcHJp
dmF0ZToKLSAgICBMb2NrVHlwZSBtX211dGV4OwotICAgIFQgbV9kYXRhOworICAgIERhdGFNdXRl
eDxUPiYgbV9kYXRhTXV0ZXg7CisgICAgYm9vbCBtX2lzTG9ja2VkIHsgZmFsc2UgfTsKIH07CiAK
LXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci10eXBlbmFtZSBEYXRhTXV0ZXg8VD46OkxvY2tlZFdyYXBw
ZXIgaG9sZExvY2soRGF0YU11dGV4PFQ+JiBkYXRhTXV0ZXgpCi17Ci0gICAgcmV0dXJuIHR5cGVu
YW1lIERhdGFNdXRleDxUPjo6TG9ja2VkV3JhcHBlcihkYXRhTXV0ZXgpOwotfQotCiB9IC8vIG5h
bWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpEYXRhTXV0ZXg7Cit1c2luZyBXVEY6OkRhdGFNdXRl
eExvY2tlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5j
cHAKaW5kZXggNjgwOTEzOTVjZGUzM2RiMTkxMDdlNDc1ZTA4MjYyYTEyZDJmMWRkNC4uNWIxODAy
MTFlZmEyNjIyZGVmMWFhNGE4NzI5ZmI2MjdjNTIyZjczZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTI4NjMsNyArMjg2Myw3IEBAIGJv
b2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwZXJmb3JtVGFza0F0TWVkaWFUaW1lKEZ1
bmN0aW9uPHZvaWQoKT4mJiB0YXNrCiAKICAgICBPcHRpb25hbDxGdW5jdGlvbjx2b2lkKCk+PiB0
YXNrVG9TY2hlZHVsZTsKICAgICB7Ci0gICAgICAgIGF1dG8gdGFza0F0TWVkaWFUaW1lU2NoZWR1
bGVyID0gaG9sZExvY2sobV9UYXNrQXRNZWRpYVRpbWVTY2hlZHVsZXJEYXRhTXV0ZXgpOworICAg
ICAgICBEYXRhTXV0ZXhMb2NrZXIgdGFza0F0TWVkaWFUaW1lU2NoZWR1bGVyIHsgbV9UYXNrQXRN
ZWRpYVRpbWVTY2hlZHVsZXJEYXRhTXV0ZXggfTsKICAgICAgICAgdGFza0F0TWVkaWFUaW1lU2No
ZWR1bGVyLT5zZXRUYXNrKFdURk1vdmUodGFzayksIHRpbWUsCiAgICAgICAgICAgICBtX3BsYXli
YWNrUmF0ZSA+PSAwID8gVGFza0F0TWVkaWFUaW1lU2NoZWR1bGVyOjpGb3J3YXJkIDogVGFza0F0
TWVkaWFUaW1lU2NoZWR1bGVyOjpCYWNrd2FyZCk7CiAgICAgICAgIHRhc2tUb1NjaGVkdWxlID0g
dGFza0F0TWVkaWFUaW1lU2NoZWR1bGVyLT5jaGVja1Rhc2tGb3JTY2hlZHVsaW5nKGN1cnJlbnRU
aW1lKTsKQEAgLTMxMjQsNyArMzEyNCw4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyOjp0cmlnZ2VyUmVwYWludChHc3RTYW1wbGUqIHNhbXBsZSkKICAgICBpZiAoYnVmZmVyICYm
IEdTVF9CVUZGRVJfUFRTX0lTX1ZBTElEKGJ1ZmZlcikpIHsKICAgICAgICAgLy8gSGV1cmlzdGlj
IHRvIGF2b2lkIGFza2luZyBmb3IgcGxheWJhY2tQb3NpdGlvbigpIGZyb20gYSBub24tbWFpbiB0
aHJlYWQuCiAgICAgICAgIE1lZGlhVGltZSBjdXJyZW50VGltZSA9IE1lZGlhVGltZShnc3Rfc2Vn
bWVudF90b19zdHJlYW1fdGltZShnc3Rfc2FtcGxlX2dldF9zZWdtZW50KHNhbXBsZSksIEdTVF9G
T1JNQVRfVElNRSwgR1NUX0JVRkZFUl9QVFMoYnVmZmVyKSksIEdTVF9TRUNPTkQpOwotICAgICAg
ICBpZiAoYXV0byB0YXNrID0gaG9sZExvY2sobV9UYXNrQXRNZWRpYVRpbWVTY2hlZHVsZXJEYXRh
TXV0ZXgpLT5jaGVja1Rhc2tGb3JTY2hlZHVsaW5nKGN1cnJlbnRUaW1lKSkKKyAgICAgICAgRGF0
YU11dGV4TG9ja2VyIHRhc2tBdE1lZGlhVGltZVNjaGVkdWxlciB7IG1fVGFza0F0TWVkaWFUaW1l
U2NoZWR1bGVyRGF0YU11dGV4IH07CisgICAgICAgIGlmIChhdXRvIHRhc2sgPSB0YXNrQXRNZWRp
YVRpbWVTY2hlZHVsZXItPmNoZWNrVGFza0ZvclNjaGVkdWxpbmcoY3VycmVudFRpbWUpKQogICAg
ICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFdURk1vdmUodGFzay52YWx1ZSgpKSk7
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgK
aW5kZXggODAzOTFkOTE2NzY1NDU0NGFlZjU1ZjhhMjRhZGZkMTU1YTYwMTVkZC4uZGYwMjk2Y2Q2
M2VkOGYzNmM0YmJjZjhkYTFlNmUyYzc3YWE2OTZkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXIuaApAQCAtNTY1LDcgKzU2NSw3IEBAIHByaXZhdGU6CiAg
ICAgLy8gVGhpcyBpcyBzZXQgdG8gdHJ1ZSBpZiBubyB2aWRlb2ZsaXAgZWxlbWVudCBoYXMgYmVl
biBhZGRlZCB0byB0aGUgcGlwZWxpbmUuCiAgICAgYm9vbCBtX3Nob3VsZEhhbmRsZU9yaWVudGF0
aW9uVGFncyB7IGZhbHNlIH07CiAKLSAgICBXVEY6OkRhdGFNdXRleDxUYXNrQXRNZWRpYVRpbWVT
Y2hlZHVsZXI+IG1fVGFza0F0TWVkaWFUaW1lU2NoZWR1bGVyRGF0YU11dGV4OworICAgIERhdGFN
dXRleDxUYXNrQXRNZWRpYVRpbWVTY2hlZHVsZXI+IG1fVGFza0F0TWVkaWFUaW1lU2NoZWR1bGVy
RGF0YU11dGV4OwogCiBwcml2YXRlOgogI2lmIFVTRShXUEVfVklERU9fUExBTkVfRElTUExBWV9E
TUFCVUYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCmluZGV4
IDVjN2M5ODA2ZDM0Y2I4YzEzODU5YzkxYTljOWNiMmFkOTkxNjc3NmYuLjgyMmMyMjcxZDJjN2My
OTc4MGU5NWE0ZTFjMzE2MzIwZDgzMzZjMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJT
b3VyY2VHU3RyZWFtZXIuY3BwCkBAIC00MSw3ICs0MSw2IEBACiAjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
LXVzaW5nIFdURjo6RGF0YU11dGV4OwogCiAvLyBOZXZlciBwYXVzZSBkb3dubG9hZCBvZiBtZWRp
YSByZXNvdXJjZXMgc21hbGxlciB0aGFuIDJNaUIuCiAjZGVmaW5lIFNNQUxMX01FRElBX1JFU09V
UkNFX01BWF9TSVpFIDIgKiAxMDI0ICogMTAyNApAQCAtMTQwLDcgKzEzOSw3IEBAIHN0cnVjdCBX
ZWJLaXRXZWJTcmNQcml2YXRlIHsKIAogICAgICAgICAvLyBQcm9wZXJ0aWVzIHVzZWQgZm9yIEdT
dHJlYW1lciBkYXRhLWZsb3cgaW4gY3JlYXRlKCkuCiAgICAgICAgIGJvb2wgaXNGbHVzaGluZyB7
IGZhbHNlIH07Ci0gICAgICAgIFVuY2hlY2tlZENvbmRpdGlvbiByZXNwb25zZUNvbmRpdGlvbjsg
Ly8gTXVzdCBiZSBzaWduYWxlZCBhZnRlciBhbnkgdXBkYXRlcyBvbiBIVFRQIHJlcXVlc3RzLCBh
bmQgd2hlbiBmbHVzaGluZy4KKyAgICAgICAgQ29uZGl0aW9uIHJlc3BvbnNlQ29uZGl0aW9uOyAv
LyBNdXN0IGJlIHNpZ25hbGVkIGFmdGVyIGFueSB1cGRhdGVzIG9uIEhUVFAgcmVxdWVzdHMsIGFu
ZCB3aGVuIGZsdXNoaW5nLgogICAgICAgICBHUmVmUHRyPEdzdEFkYXB0ZXI+IGFkYXB0ZXI7CiAg
ICAgICAgIGJvb2wgaXNEdXJhdGlvblNldDsKICAgICAgICAgdWludDY0X3QgcmVhZFBvc2l0aW9u
OwpAQCAtMzAxLDcgKzMwMCw3IEBAIHN0YXRpYyB2b2lkIHdlYktpdFdlYlNyY0NvbnN0cnVjdGVk
KEdPYmplY3QqIG9iamVjdCkKIAogICAgIHByaXYtPm1pbmltdW1CbG9ja3NpemUgPSBnc3RfYmFz
ZV9zcmNfZ2V0X2Jsb2Nrc2l6ZShHU1RfQkFTRV9TUkNfQ0FTVChzcmMpKTsKIAotICAgIGF1dG8g
bWVtYmVycyA9IGhvbGRMb2NrKHByaXYtPmRhdGFNdXRleCk7CisgICAgRGF0YU11dGV4TG9ja2Vy
IG1lbWJlcnMgeyBwcml2LT5kYXRhTXV0ZXggfTsKICAgICBtZW1iZXJzLT5hZGFwdGVyID0gYWRv
cHRHUmVmKGdzdF9hZGFwdGVyX25ldygpKTsKICAgICB3ZWJraXRXZWJTcmNSZXNldChzcmMsIG1l
bWJlcnMsIFJlc2V0VHlwZTo6SGFyZCk7CiAKQEAgLTM0Niw3ICszNDUsNyBAQCBzdGF0aWMgdm9p
ZCB3ZWJLaXRXZWJTcmNHZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJRCwg
R1ZhbHVlKiB2YWx1ZQogICAgICAgICBnX3ZhbHVlX3NldF9zdHJpbmcodmFsdWUsIHByaXYtPm9y
aWdpbmFsVVJJLmRhdGEoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJPUF9SRVNPTFZF
RF9MT0NBVElPTjogewotICAgICAgICBhdXRvIG1lbWJlcnMgPSBob2xkTG9jayhwcml2LT5kYXRh
TXV0ZXgpOworICAgICAgICBEYXRhTXV0ZXhMb2NrZXIgbWVtYmVycyB7IHByaXYtPmRhdGFNdXRl
eCB9OwogICAgICAgICBnX3ZhbHVlX3NldF9zdHJpbmcodmFsdWUsIG1lbWJlcnMtPnJlZGlyZWN0
ZWRVUkkuaXNOdWxsKCkgPyBwcml2LT5vcmlnaW5hbFVSSS5kYXRhKCkgOiBtZW1iZXJzLT5yZWRp
cmVjdGVkVVJJLmRhdGEoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTM3Niw3ICszNzUs
NyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNTZXRDb250ZXh0KEdzdEVsZW1lbnQqIGVsZW1l
bnQsIEdzdENvbnRleHQqIGNvbnRleHQpCiAgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJjb250
ZXh0IHR5cGU6ICVzIiwgZ3N0X2NvbnRleHRfZ2V0X2NvbnRleHRfdHlwZShjb250ZXh0KSk7CiAg
ICAgaWYgKGdzdF9jb250ZXh0X2hhc19jb250ZXh0X3R5cGUoY29udGV4dCwgV0VCS0lUX1dFQl9T
UkNfUExBWUVSX0NPTlRFWFRfVFlQRV9OQU1FKSkgewogICAgICAgICBjb25zdCBHVmFsdWUqIHZh
bHVlID0gZ3N0X3N0cnVjdHVyZV9nZXRfdmFsdWUoZ3N0X2NvbnRleHRfZ2V0X3N0cnVjdHVyZShj
b250ZXh0KSwgInBsYXllciIpOwotICAgICAgICBhdXRvIG1lbWJlcnMgPSBob2xkTG9jayhwcml2
LT5kYXRhTXV0ZXgpOworICAgICAgICBEYXRhTXV0ZXhMb2NrZXIgbWVtYmVycyB7IHByaXYtPmRh
dGFNdXRleCB9OwogICAgICAgICBtZW1iZXJzLT5wbGF5ZXIgPSByZWludGVycHJldF9jYXN0PE1l
ZGlhUGxheWVyKj4oZ192YWx1ZV9nZXRfcG9pbnRlcih2YWx1ZSkpOwogICAgIH0KICAgICBHU1Rf
RUxFTUVOVF9DTEFTUyhwYXJlbnRfY2xhc3MpLT5zZXRfY29udGV4dChlbGVtZW50LCBjb250ZXh0
KTsKQEAgLTQ1OSw3ICs0NTgsNyBAQCBzdGF0aWMgR3N0Rmxvd1JldHVybiB3ZWJLaXRXZWJTcmND
cmVhdGUoR3N0UHVzaFNyYyogcHVzaFNyYywgR3N0QnVmZmVyKiogYnVmZmVyKQogICAgIEdzdEJh
c2VTcmMqIGJhc2VTcmMgPSBHU1RfQkFTRV9TUkNfQ0FTVChwdXNoU3JjKTsKICAgICBXZWJLaXRX
ZWJTcmMqIHNyYyA9IFdFQktJVF9XRUJfU1JDKGJhc2VTcmMpOwogICAgIFdlYktpdFdlYlNyY1By
aXZhdGUqIHByaXYgPSBzcmMtPnByaXY7Ci0gICAgYXV0byBtZW1iZXJzID0gaG9sZExvY2socHJp
di0+ZGF0YU11dGV4KTsKKyAgICBEYXRhTXV0ZXhMb2NrZXIgbWVtYmVycyB7IHByaXYtPmRhdGFN
dXRleCB9OwogCiAgICAgLy8gV2UgbmVlZCBtZW1iZXJzLT5wbGF5ZXIgdG8gbWFrZSByZXF1ZXN0
cy4gVGhlcmUgYXJlIHR3byBtZWNoYW5pc21zIGZvciB0aGlzLgogICAgIC8vCkBAIC02ODksNyAr
Njg4LDcgQEAgc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjTWFrZVJlcXVlc3QoV2ViS2l0V2ViU3Jj
KiBzcmMsIERhdGFNdXRleDxXZWJLaXRXZWJTcmNQcmkKICAgICBBU1NFUlQoIWlzTWFpblRocmVh
ZCgpKTsKICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RvciA9IFdURjo6ZW5z
dXJlR1JlZihzcmMpLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgcmVxdWVzdE51bWJlciA9
IG1lbWJlcnMtPnJlcXVlc3ROdW1iZXJdIHsKICAgICAgICAgV2ViS2l0V2ViU3JjUHJpdmF0ZSog
cHJpdiA9IHByb3RlY3Rvci0+cHJpdjsKLSAgICAgICAgYXV0byBtZW1iZXJzID0gaG9sZExvY2so
cHJpdi0+ZGF0YU11dGV4KTsKKyAgICAgICAgRGF0YU11dGV4TG9ja2VyIG1lbWJlcnMgeyBwcml2
LT5kYXRhTXV0ZXggfTsKICAgICAgICAgLy8gSWdub3JlIHRoaXMgdGFzayAobm90IG1ha2luZyBh
bnkgSFRUUCByZXF1ZXN0KSBpZiBieSBub3cgV2ViS2l0V2ViU3JjIHN0cmVhbWluZyB0aHJlYWQg
aXMgYWxyZWFkeSB3YWl0aW5nCiAgICAgICAgIC8vIGZvciBhIGRpZmZlcmVudCByZXF1ZXN0LiBU
aGVyZSBpcyBubyBwb2ludCBhbnltb3JlIGluIHNlbmRpbmcgdGhpcyBvbmUuCiAgICAgICAgIGlm
IChtZW1iZXJzLT5yZXF1ZXN0TnVtYmVyICE9IHJlcXVlc3ROdW1iZXIpIHsKQEAgLTcxNiw3ICs3
MTUsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0V2ViU3JjU3RvcChHc3RCYXNlU3JjKiBiYXNl
U3JjKQogewogICAgIFdlYktpdFdlYlNyYyogc3JjID0gV0VCS0lUX1dFQl9TUkMoYmFzZVNyYyk7
CiAgICAgLy8gYmFzZXNyYyB3aWxsIGFsd2F5cyBjYWxsIHVuTG9jaygpIGFuZCB1bkxvY2tTdG9w
KCkgYmVmb3JlIGNhbGxpbmcgdGhpcy4gU2VlIGdzdF9iYXNlX3NyY19zdG9wKCkuCi0gICAgYXV0
byBtZW1iZXJzID0gaG9sZExvY2soc3JjLT5wcml2LT5kYXRhTXV0ZXgpOworICAgIERhdGFNdXRl
eExvY2tlciBtZW1iZXJzIHsgc3JjLT5wcml2LT5kYXRhTXV0ZXggfTsKICAgICB3ZWJraXRXZWJT
cmNSZXNldChzcmMsIG1lbWJlcnMsIFJlc2V0VHlwZTo6SGFyZCk7CiAgICAgR1NUX0RFQlVHX09C
SkVDVChzcmMsICJTdG9wcGVkIFdlYktpdFdlYlNyYyIpOwogICAgIHJldHVybiBUUlVFOwpAQCAt
NzI1LDcgKzcyNCw3IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRXZWJTcmNTdG9wKEdzdEJhc2VT
cmMqIGJhc2VTcmMpCiBzdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0V2ViU3JjR2V0U2l6ZShHc3RCYXNl
U3JjKiBiYXNlU3JjLCBndWludDY0KiBzaXplKQogewogICAgIFdlYktpdFdlYlNyYyogc3JjID0g
V0VCS0lUX1dFQl9TUkMoYmFzZVNyYyk7Ci0gICAgYXV0byBtZW1iZXJzID0gaG9sZExvY2soc3Jj
LT5wcml2LT5kYXRhTXV0ZXgpOworICAgIERhdGFNdXRleExvY2tlciBtZW1iZXJzIHsgc3JjLT5w
cml2LT5kYXRhTXV0ZXggfTsKIAogICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiaGF2ZVNpemU6
ICVzLCBzaXplOiAlIiBHX0dVSU5UNjRfRk9STUFULCBib29sRm9yUHJpbnRpbmcobWVtYmVycy0+
aGF2ZVNpemUpLCBtZW1iZXJzLT5zaXplKTsKICAgICBpZiAobWVtYmVycy0+aGF2ZVNpemUpIHsK
QEAgLTczOSw3ICs3MzgsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0V2ViU3JjR2V0U2l6ZShH
c3RCYXNlU3JjKiBiYXNlU3JjLCBndWludDY0KiBzaXplKQogc3RhdGljIGdib29sZWFuIHdlYktp
dFdlYlNyY0lzU2Vla2FibGUoR3N0QmFzZVNyYyogYmFzZVNyYykKIHsKICAgICBXZWJLaXRXZWJT
cmMqIHNyYyA9IFdFQktJVF9XRUJfU1JDKGJhc2VTcmMpOwotICAgIGF1dG8gbWVtYmVycyA9IGhv
bGRMb2NrKHNyYy0+cHJpdi0+ZGF0YU11dGV4KTsKKyAgICBEYXRhTXV0ZXhMb2NrZXIgbWVtYmVy
cyB7IHNyYy0+cHJpdi0+ZGF0YU11dGV4IH07CiAgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJp
c1NlZWthYmxlOiAlcyIsIGJvb2xGb3JQcmludGluZyhtZW1iZXJzLT5pc1NlZWthYmxlKSk7CiAg
ICAgcmV0dXJuIG1lbWJlcnMtPmlzU2Vla2FibGU7CiB9CkBAIC03NTYsNyArNzU1LDcgQEAgc3Rh
dGljIGdib29sZWFuIHdlYktpdFdlYlNyY0RvU2VlayhHc3RCYXNlU3JjKiBiYXNlU3JjLCBHc3RT
ZWdtZW50KiBzZWdtZW50KQogICAgIEFTU0VSVChHU1RfRUxFTUVOVChiYXNlU3JjKS0+Y3VycmVu
dF9zdGF0ZSA8IEdTVF9TVEFURV9QQVVTRUQgfHwgd2ViS2l0V2ViU3JjSXNTZWVrYWJsZShiYXNl
U3JjKSk7CiAKICAgICBXZWJLaXRXZWJTcmMqIHNyYyA9IFdFQktJVF9XRUJfU1JDKGJhc2VTcmMp
OwotICAgIGF1dG8gbWVtYmVycyA9IGhvbGRMb2NrKHNyYy0+cHJpdi0+ZGF0YU11dGV4KTsKKyAg
ICBEYXRhTXV0ZXhMb2NrZXIgbWVtYmVycyB7IHNyYy0+cHJpdi0+ZGF0YU11dGV4IH07CiAKICAg
ICBHU1RfREVCVUdfT0JKRUNUKHNyYywgIlNlZWsgc2VnbWVudDogKCUiIEdfR1VJTlQ2NF9GT1JN
QVQgIi0lIiBHX0dVSU5UNjRfRk9STUFUICIpIFBvc2l0aW9uIHByZXZpb3VzIHRvIHNlZWs6ICUi
IEdfR1VJTlQ2NF9GT1JNQVQsIHNlZ21lbnQtPnN0YXJ0LCBzZWdtZW50LT5zdG9wLCBtZW1iZXJz
LT5yZWFkUG9zaXRpb24pOwogCkBAIC03ODYsNyArNzg1LDcgQEAgc3RhdGljIGdib29sZWFuIHdl
YktpdFdlYlNyY1F1ZXJ5KEdzdEJhc2VTcmMqIGJhc2VTcmMsIEdzdFF1ZXJ5KiBxdWVyeSkKIAog
ICAgIGlmIChHU1RfUVVFUllfVFlQRShxdWVyeSkgPT0gR1NUX1FVRVJZX1VSSSkgewogICAgICAg
ICBnc3RfcXVlcnlfc2V0X3VyaShxdWVyeSwgcHJpdi0+b3JpZ2luYWxVUkkuZGF0YSgpKTsKLSAg
ICAgICAgYXV0byBtZW1iZXJzID0gaG9sZExvY2soc3JjLT5wcml2LT5kYXRhTXV0ZXgpOworICAg
ICAgICBEYXRhTXV0ZXhMb2NrZXIgbWVtYmVycyB7IHNyYy0+cHJpdi0+ZGF0YU11dGV4IH07CiAg
ICAgICAgIGlmICghbWVtYmVycy0+cmVkaXJlY3RlZFVSSS5pc051bGwoKSkKICAgICAgICAgICAg
IGdzdF9xdWVyeV9zZXRfdXJpX3JlZGlyZWN0aW9uKHF1ZXJ5LCBtZW1iZXJzLT5yZWRpcmVjdGVk
VVJJLmRhdGEoKSk7CiAgICAgICAgIHJlc3VsdCA9IFRSVUU7CkBAIC04MDksNyArODA4LDcgQEAg
c3RhdGljIGdib29sZWFuIHdlYktpdFdlYlNyY1F1ZXJ5KEdzdEJhc2VTcmMqIGJhc2VTcmMsIEdz
dFF1ZXJ5KiBxdWVyeSkKIHN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRXZWJTcmNVbkxvY2soR3N0QmFz
ZVNyYyogYmFzZVNyYykKIHsKICAgICBXZWJLaXRXZWJTcmMqIHNyYyA9IFdFQktJVF9XRUJfU1JD
KGJhc2VTcmMpOwotICAgIGF1dG8gbWVtYmVycyA9IGhvbGRMb2NrKHNyYy0+cHJpdi0+ZGF0YU11
dGV4KTsKKyAgICBEYXRhTXV0ZXhMb2NrZXIgbWVtYmVycyB7IHNyYy0+cHJpdi0+ZGF0YU11dGV4
IH07CiAKICAgICBHU1RfREVCVUdfT0JKRUNUKHNyYywgIlVubG9jayIpOwogICAgIG1lbWJlcnMt
PmlzRmx1c2hpbmcgPSB0cnVlOwpAQCAtODQwLDcgKzgzOSw3IEBAIHN0YXRpYyBnYm9vbGVhbiB3
ZWJLaXRXZWJTcmNVbkxvY2soR3N0QmFzZVNyYyogYmFzZVNyYykKIHN0YXRpYyBnYm9vbGVhbiB3
ZWJLaXRXZWJTcmNVbkxvY2tTdG9wKEdzdEJhc2VTcmMqIGJhc2VTcmMpCiB7CiAgICAgV2ViS2l0
V2ViU3JjKiBzcmMgPSBXRUJLSVRfV0VCX1NSQyhiYXNlU3JjKTsKLSAgICBhdXRvIG1lbWJlcnMg
PSBob2xkTG9jayhzcmMtPnByaXYtPmRhdGFNdXRleCk7CisgICAgRGF0YU11dGV4TG9ja2VyIG1l
bWJlcnMgeyBzcmMtPnByaXYtPmRhdGFNdXRleCB9OwogICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3Jj
LCAiVW5sb2NrIHN0b3AiKTsKICAgICBtZW1iZXJzLT5pc0ZsdXNoaW5nID0gZmFsc2U7CiAgICAg
d2Via2l0V2ViU3JjUmVzZXQoc3JjLCBtZW1iZXJzLCBSZXNldFR5cGU6OlNvZnQpOwpAQCAtOTI2
LDE0ICs5MjUsMTQgQEAgc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjVXJpSGFuZGxlckluaXQoZ3Bv
aW50ZXIgZ0lmYWNlLCBncG9pbnRlcikKIHZvaWQgd2ViS2l0V2ViU3JjU2V0TWVkaWFQbGF5ZXIo
V2ViS2l0V2ViU3JjKiBzcmMsIFdlYkNvcmU6Ok1lZGlhUGxheWVyKiBwbGF5ZXIsIGNvbnN0IFN0
cmluZyYgcmVmZXJyZXIpCiB7CiAgICAgQVNTRVJUKHBsYXllcik7Ci0gICAgYXV0byBtZW1iZXJz
ID0gaG9sZExvY2soc3JjLT5wcml2LT5kYXRhTXV0ZXgpOworICAgIERhdGFNdXRleExvY2tlciBt
ZW1iZXJzIHsgc3JjLT5wcml2LT5kYXRhTXV0ZXggfTsKICAgICBtZW1iZXJzLT5wbGF5ZXIgPSBw
bGF5ZXI7CiAgICAgbWVtYmVycy0+cmVmZXJyZXIgPSByZWZlcnJlcjsKIH0KIAogYm9vbCB3ZWJL
aXRTcmNQYXNzZWRDT1JTQWNjZXNzQ2hlY2soV2ViS2l0V2ViU3JjKiBzcmMpCiB7Ci0gICAgYXV0
byBtZW1iZXJzID0gaG9sZExvY2soc3JjLT5wcml2LT5kYXRhTXV0ZXgpOworICAgIERhdGFNdXRl
eExvY2tlciBtZW1iZXJzIHsgc3JjLT5wcml2LT5kYXRhTXV0ZXggfTsKICAgICByZXR1cm4gbWVt
YmVycy0+ZGlkUGFzc0FjY2Vzc0NvbnRyb2xDaGVjazsKIH0KIApAQCAtOTg4LDcgKzk4Nyw3IEBA
IHZvaWQgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OnJlc3BvbnNlUmVjZWl2ZWQoUGxh
dGZvcm1NZWRpYVJlc291cmNlJiwgY29uCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAg
ICBXZWJLaXRXZWJTcmMqIHNyYyA9IFdFQktJVF9XRUJfU1JDKG1fc3JjLmdldCgpKTsKICAgICBX
ZWJLaXRXZWJTcmNQcml2YXRlKiBwcml2ID0gc3JjLT5wcml2OwotICAgIGF1dG8gbWVtYmVycyA9
IGhvbGRMb2NrKHByaXYtPmRhdGFNdXRleCk7CisgICAgRGF0YU11dGV4TG9ja2VyIG1lbWJlcnMg
eyBwcml2LT5kYXRhTXV0ZXggfTsKICAgICBpZiAobWVtYmVycy0+cmVxdWVzdE51bWJlciAhPSBt
X3JlcXVlc3ROdW1iZXIpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoU2hvdWxkQ29udGlu
dWVQb2xpY3lDaGVjazo6Tm8pOwogICAgICAgICByZXR1cm47CkBAIC0xMDk0LDcgKzEwOTMsNyBA
QCB2b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpkYXRhUmVjZWl2ZWQoUGxhdGZv
cm1NZWRpYVJlc291cmNlJiwgY29uc3QgYwogICAgIFdlYktpdFdlYlNyYyogc3JjID0gV0VCS0lU
X1dFQl9TUkMobV9zcmMuZ2V0KCkpOwogICAgIFdlYktpdFdlYlNyY1ByaXZhdGUqIHByaXYgPSBz
cmMtPnByaXY7CiAKLSAgICBhdXRvIG1lbWJlcnMgPSBob2xkTG9jayhwcml2LT5kYXRhTXV0ZXgp
OworICAgIERhdGFNdXRleExvY2tlciBtZW1iZXJzIHsgcHJpdi0+ZGF0YU11dGV4IH07CiAgICAg
aWYgKG1lbWJlcnMtPnJlcXVlc3ROdW1iZXIgIT0gbV9yZXF1ZXN0TnVtYmVyKQogICAgICAgICBy
ZXR1cm47CiAKQEAgLTExMzAsNyArMTEyOSw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VTdHJlYW1p
bmdDbGllbnQ6OmFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyCiB7
CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBXZWJLaXRXZWJTcmMqIHNyYyA9IFdF
QktJVF9XRUJfU1JDKG1fc3JjLmdldCgpKTsKLSAgICBhdXRvIG1lbWJlcnMgPSBob2xkTG9jayhz
cmMtPnByaXYtPmRhdGFNdXRleCk7CisgICAgRGF0YU11dGV4TG9ja2VyIG1lbWJlcnMgeyBzcmMt
PnByaXYtPmRhdGFNdXRleCB9OwogICAgIGlmIChtZW1iZXJzLT5yZXF1ZXN0TnVtYmVyICE9IG1f
cmVxdWVzdE51bWJlcikKICAgICAgICAgcmV0dXJuOwogCkBAIC0xMTQzLDcgKzExNDIsNyBAQCB2
b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50Ojpsb2FkRmFpbGVkKFBsYXRmb3JtTWVk
aWFSZXNvdXJjZSYsIGNvbnN0IFJlcwogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAg
ICAgV2ViS2l0V2ViU3JjKiBzcmMgPSBXRUJLSVRfV0VCX1NSQyhtX3NyYy5nZXQoKSk7Ci0gICAg
YXV0byBtZW1iZXJzID0gaG9sZExvY2soc3JjLT5wcml2LT5kYXRhTXV0ZXgpOworICAgIERhdGFN
dXRleExvY2tlciBtZW1iZXJzIHsgc3JjLT5wcml2LT5kYXRhTXV0ZXggfTsKICAgICBpZiAobWVt
YmVycy0+cmVxdWVzdE51bWJlciAhPSBtX3JlcXVlc3ROdW1iZXIpCiAgICAgICAgIHJldHVybjsK
IApAQCAtMTE2MCw3ICsxMTU5LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVu
dDo6bG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IE4KIHsKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIFdlYktpdFdlYlNyYyogc3JjID0gV0VCS0lUX1dF
Ql9TUkMobV9zcmMuZ2V0KCkpOwotICAgIGF1dG8gbWVtYmVycyA9IGhvbGRMb2NrKHNyYy0+cHJp
di0+ZGF0YU11dGV4KTsKKyAgICBEYXRhTXV0ZXhMb2NrZXIgbWVtYmVycyB7IHNyYy0+cHJpdi0+
ZGF0YU11dGV4IH07CiAgICAgaWYgKG1lbWJlcnMtPnJlcXVlc3ROdW1iZXIgIT0gbV9yZXF1ZXN0
TnVtYmVyKQogICAgICAgICByZXR1cm47CiAKQEAgLTExNzAsNyArMTE2OSw3IEBAIHZvaWQgQ2Fj
aGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmxvYWRGaW5pc2hlZChQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmLCBjb25zdCBOCiAKIGJvb2wgd2ViS2l0U3JjV291bGRUYWludE9yaWdpbihXZWJLaXRX
ZWJTcmMqIHNyYywgY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbikKIHsKLSAgICBhdXRvIG1l
bWJlcnMgPSBob2xkTG9jayhzcmMtPnByaXYtPmRhdGFNdXRleCk7CisgICAgRGF0YU11dGV4TG9j
a2VyIG1lbWJlcnMgeyBzcmMtPnByaXYtPmRhdGFNdXRleCB9OwogCiAgICAgYXV0byogY2FjaGVk
UmVzb3VyY2VTdHJlYW1pbmdDbGllbnQgPSByZWludGVycHJldF9jYXN0PENhY2hlZFJlc291cmNl
U3RyZWFtaW5nQ2xpZW50Kj4obWVtYmVycy0+cmVzb3VyY2UtPmNsaWVudCgpKTsKICAgICBmb3Ig
KGF1dG8mIHJlc3BvbnNlT3JpZ2luIDogY2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQtPnNl
Y3VyaXR5T3JpZ2lucygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291cmNlVHJhY2tHU3RyZWFtZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJjZVRy
YWNrR1N0cmVhbWVyLmNwcAppbmRleCA4NjJiMTY5NTE5NDdlZDU1YmRmYWQzMjM4ODcxOTdiYzZl
MGZkMzc2Li5kMTg3OTJjY2EyOTUxYWMxNjA0NThhM2I5ODgyOWNiNTdlODVlMWNmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlh
U291cmNlVHJhY2tHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFTb3VyY2VUcmFja0dTdHJlYW1lci5jcHAKQEAgLTM3
LDggKzM3LDYgQEAKIEdTVF9ERUJVR19DQVRFR09SWV9FWFRFUk4od2Via2l0X21zZV9kZWJ1Zyk7
CiAjZGVmaW5lIEdTVF9DQVRfREVGQVVMVCB3ZWJraXRfbXNlX2RlYnVnCiAKLXVzaW5nIFdURjo6
RGF0YU11dGV4OwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIE1lZGlhU291cmNlVHJhY2tHU3Ry
ZWFtZXI6Ok1lZGlhU291cmNlVHJhY2tHU3RyZWFtZXIoVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1l
cjo6VHJhY2tUeXBlIHR5cGUsIEF0b21TdHJpbmcgdHJhY2tJZCwgR1JlZlB0cjxHc3RDYXBzPiYm
IGluaXRpYWxDYXBzKQpAQCAtNjEsMjggKzU5LDI4IEBAIFJlZjxNZWRpYVNvdXJjZVRyYWNrR1N0
cmVhbWVyPiBNZWRpYVNvdXJjZVRyYWNrR1N0cmVhbWVyOjpjcmVhdGUoVHJhY2tQcml2YXRlQmFz
CiBib29sIE1lZGlhU291cmNlVHJhY2tHU3RyZWFtZXI6OmlzUmVhZHlGb3JNb3JlU2FtcGxlcygp
CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBhdXRvIHF1ZXVlID0gaG9sZExv
Y2sobV9xdWV1ZURhdGFNdXRleCk7CisgICAgRGF0YU11dGV4TG9ja2VyIHF1ZXVlIHsgbV9xdWV1
ZURhdGFNdXRleCB9OwogICAgIHJldHVybiAhcXVldWUtPmlzRnVsbCgpOwogfQogCiB2b2lkIE1l
ZGlhU291cmNlVHJhY2tHU3RyZWFtZXI6Om5vdGlmeVdoZW5SZWFkeUZvck1vcmVTYW1wbGVzKFRy
YWNrUXVldWU6Okxvd0xldmVsSGFuZGxlciYmIGhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKLSAgICBhdXRvIHF1ZXVlID0gaG9sZExvY2sobV9xdWV1ZURhdGFNdXRleCk7
CisgICAgRGF0YU11dGV4TG9ja2VyIHF1ZXVlIHsgbV9xdWV1ZURhdGFNdXRleCB9OwogICAgIHF1
ZXVlLT5ub3RpZnlXaGVuTG93TGV2ZWwoV1RGTW92ZShoYW5kbGVyKSk7CiB9CiAKIHZvaWQgTWVk
aWFTb3VyY2VUcmFja0dTdHJlYW1lcjo6ZW5xdWV1ZU9iamVjdChHUmVmUHRyPEdzdE1pbmlPYmpl
Y3Q+JiYgb2JqZWN0KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgYXV0byBx
dWV1ZSA9IGhvbGRMb2NrKG1fcXVldWVEYXRhTXV0ZXgpOworICAgIERhdGFNdXRleExvY2tlciBx
dWV1ZSB7IG1fcXVldWVEYXRhTXV0ZXggfTsKICAgICBxdWV1ZS0+ZW5xdWV1ZU9iamVjdChXVEZN
b3ZlKG9iamVjdCkpOwogfQogCiB2b2lkIE1lZGlhU291cmNlVHJhY2tHU3RyZWFtZXI6OmNsZWFy
UXVldWUoKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgYXV0byBxdWV1ZSA9
IGhvbGRMb2NrKG1fcXVldWVEYXRhTXV0ZXgpOworICAgIERhdGFNdXRleExvY2tlciBxdWV1ZSB7
IG1fcXVldWVEYXRhTXV0ZXggfTsKICAgICBxdWV1ZS0+Y2xlYXIoKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNv
dXJjZVRyYWNrR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvbXNlL01lZGlhU291cmNlVHJhY2tHU3RyZWFtZXIuaAppbmRleCA2YWU0MWM0YWEx
ZDExMzMxMDBkM2Y4ODk4NGQxZDFjOTQ2NjBjYjQ4Li44ZGM1ZjU0MTFhMzVlMGVmMzQxMDdkMGJl
YTRlYTJlYzQ2OGQ5ZmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291cmNlVHJhY2tHU3RyZWFtZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291cmNlVHJh
Y2tHU3RyZWFtZXIuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgVHJhY2tQcml2YXRl
QmFzZUdTdHJlYW1lcjo6VHJhY2tUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0K
ICAgICBBdG9tU3RyaW5nIHRyYWNrSWQoKSBjb25zdCB7IHJldHVybiBtX3RyYWNrSWQ7IH0KICAg
ICBHUmVmUHRyPEdzdENhcHM+JiBpbml0aWFsQ2FwcygpIHsgcmV0dXJuIG1faW5pdGlhbENhcHM7
IH0KLSAgICBXVEY6OkRhdGFNdXRleDxUcmFja1F1ZXVlPiYgcXVldWVEYXRhTXV0ZXgoKSB7IHJl
dHVybiBtX3F1ZXVlRGF0YU11dGV4OyB9CisgICAgRGF0YU11dGV4PFRyYWNrUXVldWU+JiBxdWV1
ZURhdGFNdXRleCgpIHsgcmV0dXJuIG1fcXVldWVEYXRhTXV0ZXg7IH0KIAogICAgIGJvb2wgaXNS
ZWFkeUZvck1vcmVTYW1wbGVzKCk7CiAKQEAgLTY5LDcgKzY5LDcgQEAgcHJpdmF0ZToKICAgICBU
cmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpUcmFja1R5cGUgbV90eXBlOwogICAgIEF0b21TdHJp
bmcgbV90cmFja0lkOwogICAgIEdSZWZQdHI8R3N0Q2Fwcz4gbV9pbml0aWFsQ2FwczsKLSAgICBX
VEY6OkRhdGFNdXRleDxUcmFja1F1ZXVlPiBtX3F1ZXVlRGF0YU11dGV4OworICAgIERhdGFNdXRl
eDxUcmFja1F1ZXVlPiBtX3F1ZXVlRGF0YU11dGV4OwogCiAgICAgYm9vbCBtX2lzUmVtb3ZlZCB7
IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL21zZS9XZWJLaXRNZWRpYVNvdXJjZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1dlYktpdE1lZGlhU291cmNl
R1N0cmVhbWVyLmNwcAppbmRleCA3ZjBhOWQ0YWNiMGYzMTJmYzVkMGViM2I5NmQ2NDVlNDZjMGNk
NWY5Li43ZmNmNDZhNWMxZTZhZTBmZWY2YThhNDlhM2M5MjNmODlkNDg2Y2I1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1dlYktpdE1l
ZGlhU291cmNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvbXNlL1dlYktpdE1lZGlhU291cmNlR1N0cmVhbWVyLmNwcApAQCAtMTg0
LDggKzE4NCw4IEBAIHN0cnVjdCBTdHJlYW0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
U3RyZWFtPiB7CiAgICAgICAgIEdzdFNlZ21lbnQgc2VnbWVudDsKICAgICAgICAgR1JlZlB0cjxH
c3RDYXBzPiBwZW5kaW5nSW5pdGlhbENhcHM7CiAgICAgICAgIEdSZWZQdHI8R3N0Q2Fwcz4gcHJl
dmlvdXNDYXBzOyAvLyBDYXBzIGZyb20gZW5xdWV1ZWQgc2FtcGxlcyBhcmUgY29tcGFyZWQgdG8g
dGhlc2UgdG8gcHVzaCBDQVBTIGV2ZW50cyBhcyBuZWVkZWQuCi0gICAgICAgIFVuY2hlY2tlZENv
bmRpdGlvbiBwYWRMaW5rZWRPckZsdXNoZWRDb25kaXRpb247Ci0gICAgICAgIFVuY2hlY2tlZENv
bmRpdGlvbiBxdWV1ZUNoYW5nZWRPckZsdXNoZWRDb25kaXRpb247CisgICAgICAgIENvbmRpdGlv
biBwYWRMaW5rZWRPckZsdXNoZWRDb25kaXRpb247CisgICAgICAgIENvbmRpdGlvbiBxdWV1ZUNo
YW5nZWRPckZsdXNoZWRDb25kaXRpb247CiAgICAgICAgIGJvb2wgaXNGbHVzaGluZyB7IGZhbHNl
IH07CiAKICAgICAgICAgLy8gRmx1c2hlcyBiZWZvcmUgYW55IGJ1ZmZlciBoYXMgYmVlbiBwb3Bw
ZWQgZnJvbSB0aGUgcXVldWUgYW5kIHNlbnQgZG93bnN0cmVhbSBjYW4gYmUgYXZvaWRlZCBqdXN0
CkBAIC0zNDQsNyArMzQ0LDcgQEAgc3RhdGljIGdib29sZWFuIHdlYktpdE1lZGlhU3JjQWN0aXZh
dGVNb2RlKEdzdFBhZCogcGFkLCBHc3RPYmplY3QqIHNvdXJjZSwgR3N0UGEKICAgICAgICAgLy8g
VW5ibG9jayB0aGUgc3RyZWFtaW5nIHRocmVhZC4KICAgICAgICAgUmVmUHRyPFN0cmVhbT4mIHN0
cmVhbSA9IFdFQktJVF9NRURJQV9TUkNfUEFEKHBhZCktPnByaXYtPnN0cmVhbTsKICAgICAgICAg
ewotICAgICAgICAgICAgYXV0byBzdHJlYW1pbmdNZW1iZXJzID0gaG9sZExvY2soc3RyZWFtLT5z
dHJlYW1pbmdNZW1iZXJzRGF0YU11dGV4KTsKKyAgICAgICAgICAgIERhdGFNdXRleExvY2tlciBz
dHJlYW1pbmdNZW1iZXJzIHsgc3RyZWFtLT5zdHJlYW1pbmdNZW1iZXJzRGF0YU11dGV4IH07CiAg
ICAgICAgICAgICBzdHJlYW1pbmdNZW1iZXJzLT5pc0ZsdXNoaW5nID0gdHJ1ZTsKICAgICAgICAg
ICAgIHN0cmVhbWluZ01lbWJlcnMtPnBhZExpbmtlZE9yRmx1c2hlZENvbmRpdGlvbi5ub3RpZnlP
bmUoKTsKICAgICAgICAgICAgIHN0cmVhbWluZ01lbWJlcnMtPnF1ZXVlQ2hhbmdlZE9yRmx1c2hl
ZENvbmRpdGlvbi5ub3RpZnlPbmUoKTsKQEAgLTM1NCw3ICszNTQsNyBAQCBzdGF0aWMgZ2Jvb2xl
YW4gd2ViS2l0TWVkaWFTcmNBY3RpdmF0ZU1vZGUoR3N0UGFkKiBwYWQsIEdzdE9iamVjdCogc291
cmNlLCBHc3RQYQogICAgICAgICAvLyBPdGhlcndpc2UgYSBkZWFkbG9jayB3b3VsZCBvY2N1ciBh
cyB0aGUgbmV4dCBmdW5jdGlvbiB0cmllcyB0byBqb2luIHRoZSB0aHJlYWQuCiAgICAgICAgIGdz
dF9wYWRfc3RvcF90YXNrKHBhZCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIGF1dG8gc3RyZWFt
aW5nTWVtYmVycyA9IGhvbGRMb2NrKHN0cmVhbS0+c3RyZWFtaW5nTWVtYmVyc0RhdGFNdXRleCk7
CisgICAgICAgICAgICBEYXRhTXV0ZXhMb2NrZXIgc3RyZWFtaW5nTWVtYmVycyB7IHN0cmVhbS0+
c3RyZWFtaW5nTWVtYmVyc0RhdGFNdXRleCB9OwogICAgICAgICAgICAgc3RyZWFtaW5nTWVtYmVy
cy0+aXNGbHVzaGluZyA9IGZhbHNlOwogICAgICAgICB9CiAgICAgfQpAQCAtMzY0LDcgKzM2NCw3
IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRNZWRpYVNyY0FjdGl2YXRlTW9kZShHc3RQYWQqIHBh
ZCwgR3N0T2JqZWN0KiBzb3VyY2UsIEdzdFBhCiBzdGF0aWMgdm9pZCB3ZWJLaXRNZWRpYVNyY1Bh
ZExpbmtlZChHc3RQYWQqIHBhZCwgR3N0UGFkKiwgdm9pZCopCiB7CiAgICAgUmVmUHRyPFN0cmVh
bT4mIHN0cmVhbSA9IFdFQktJVF9NRURJQV9TUkNfUEFEKHBhZCktPnByaXYtPnN0cmVhbTsKLSAg
ICBhdXRvIHN0cmVhbWluZ01lbWJlcnMgPSBob2xkTG9jayhzdHJlYW0tPnN0cmVhbWluZ01lbWJl
cnNEYXRhTXV0ZXgpOworICAgIERhdGFNdXRleExvY2tlciBzdHJlYW1pbmdNZW1iZXJzIHsgc3Ry
ZWFtLT5zdHJlYW1pbmdNZW1iZXJzRGF0YU11dGV4IH07CiAgICAgc3RyZWFtaW5nTWVtYmVycy0+
cGFkTGlua2VkT3JGbHVzaGVkQ29uZGl0aW9uLm5vdGlmeU9uZSgpOwogfQogCkBAIC0zNzQsNyAr
Mzc0LDcgQEAgc3RhdGljIHZvaWQgd2ViS2l0TWVkaWFTcmNMb29wKHZvaWQqIHVzZXJEYXRhKQog
ICAgIEdzdFBhZCogcGFkID0gR1NUX1BBRCh1c2VyRGF0YSk7CiAgICAgUmVmUHRyPFN0cmVhbT4m
IHN0cmVhbSA9IFdFQktJVF9NRURJQV9TUkNfUEFEKHBhZCktPnByaXYtPnN0cmVhbTsKIAotICAg
IGF1dG8gc3RyZWFtaW5nTWVtYmVycyA9IGhvbGRMb2NrKHN0cmVhbS0+c3RyZWFtaW5nTWVtYmVy
c0RhdGFNdXRleCk7CisgICAgRGF0YU11dGV4TG9ja2VyIHN0cmVhbWluZ01lbWJlcnMgeyBzdHJl
YW0tPnN0cmVhbWluZ01lbWJlcnNEYXRhTXV0ZXggfTsKICAgICBpZiAoc3RyZWFtaW5nTWVtYmVy
cy0+aXNGbHVzaGluZykgewogICAgICAgICBnc3RfcGFkX3BhdXNlX3Rhc2socGFkKTsKICAgICAg
ICAgcmV0dXJuOwpAQCAtNDQwLDcgKzQ0MCw3IEBAIHN0YXRpYyB2b2lkIHdlYktpdE1lZGlhU3Jj
TG9vcCh2b2lkKiB1c2VyRGF0YSkKIAogICAgIEdSZWZQdHI8R3N0TWluaU9iamVjdD4gb2JqZWN0
OwogICAgIHsKLSAgICAgICAgYXV0byBxdWV1ZSA9IGhvbGRMb2NrKHN0cmVhbS0+dHJhY2stPnF1
ZXVlRGF0YU11dGV4KCkpOworICAgICAgICBEYXRhTXV0ZXhMb2NrZXIgcXVldWUgeyBzdHJlYW0t
PnRyYWNrLT5xdWV1ZURhdGFNdXRleCgpIH07CiAgICAgICAgIGlmICghcXVldWUtPmlzRW1wdHko
KSkgewogICAgICAgICAgICAgb2JqZWN0ID0gcXVldWUtPnBvcCgpOwogICAgICAgICAgICAgc3Ry
ZWFtaW5nTWVtYmVycy0+aGFzUG9wcGVkRmlyc3RPYmplY3QgPSB0cnVlOwpAQCAtNDQ4LDcgKzQ0
OCw3IEBAIHN0YXRpYyB2b2lkIHdlYktpdE1lZGlhU3JjTG9vcCh2b2lkKiB1c2VyRGF0YSkKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHF1ZXVlLT5ub3RpZnlXaGVuTm90RW1wdHkoWyZv
YmplY3QsIHN0cmVhbV0oR1JlZlB0cjxHc3RNaW5pT2JqZWN0PiYmIHJlY2VpdmVkT2JqZWN0KSB7
CiAgICAgICAgICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICAgICAgICAgICAg
ICBhdXRvIHN0cmVhbWluZ01lbWJlcnMgPSBob2xkTG9jayhzdHJlYW0tPnN0cmVhbWluZ01lbWJl
cnNEYXRhTXV0ZXgpOworICAgICAgICAgICAgICAgIERhdGFNdXRleExvY2tlciBzdHJlYW1pbmdN
ZW1iZXJzIHsgc3RyZWFtLT5zdHJlYW1pbmdNZW1iZXJzRGF0YU11dGV4IH07CiAgICAgICAgICAg
ICAgICAgQVNTRVJUKCFzdHJlYW1pbmdNZW1iZXJzLT5pc0ZsdXNoaW5nKTsKIAogICAgICAgICAg
ICAgICAgIG9iamVjdCA9IFdURk1vdmUocmVjZWl2ZWRPYmplY3QpOwpAQCAtNDY1LDcgKzQ2NSw3
IEBAIHN0YXRpYyB2b2lkIHdlYktpdE1lZGlhU3JjTG9vcCh2b2lkKiB1c2VyRGF0YSkKICAgICB9
KTsKICAgICB7CiAgICAgICAgIC8vIEVuc3VyZSB0aGF0IG5vdGlmeVdoZW5Ob3RFbXB0eSgpJ3Mg
Y2FsbGJhY2sgKGlmIGFueSkgaXMgY2xlYXJlZCBhZnRlciB0aGlzIHBvaW50LgotICAgICAgICBh
dXRvIHF1ZXVlID0gaG9sZExvY2soc3RyZWFtLT50cmFjay0+cXVldWVEYXRhTXV0ZXgoKSk7Cisg
ICAgICAgIERhdGFNdXRleExvY2tlciBxdWV1ZSB7IHN0cmVhbS0+dHJhY2stPnF1ZXVlRGF0YU11
dGV4KCkgfTsKICAgICAgICAgcXVldWUtPnJlc2V0Tm90RW1wdHlIYW5kbGVyKCk7CiAgICAgfQog
ICAgIGlmIChzdHJlYW1pbmdNZW1iZXJzLT5pc0ZsdXNoaW5nKSB7CkBAIC01MDksNyArNTA5LDcg
QEAgc3RhdGljIHZvaWQgd2ViS2l0TWVkaWFTcmNMb29wKHZvaWQqIHVzZXJEYXRhKQogICAgICAg
ICB9CiAKICAgICAgICAgLy8gUHVzaCB0aGUgYnVmZmVyIHdpdGhvdXQgdGhlIHN0cmVhbWluZ01l
bWJlcnMgbG9jayBzbyB0aGF0IGZsdXNoZXMgY2FuIGhhcHBlbiB3aGlsZSBpdCB0cmF2ZWxzIGRv
d25zdHJlYW0uCi0gICAgICAgIHN0cmVhbWluZ01lbWJlcnMubG9ja0hvbGRlcigpLnVubG9ja0Vh
cmx5KCk7CisgICAgICAgIHN0cmVhbWluZ01lbWJlcnMudW5sb2NrRWFybHkoKTsKIAogICAgICAg
ICBBU1NFUlQoR1NUX0JVRkZFUl9QVFNfSVNfVkFMSUQoYnVmZmVyLmdldCgpKSk7CiAgICAgICAg
IEdTVF9UUkFDRV9PQkpFQ1QocGFkLCAiUHVzaGluZyBidWZmZXIgZG93bnN0cmVhbTogJSIgR1NU
X1BUUl9GT1JNQVQsIGJ1ZmZlci5nZXQoKSk7CkBAIC01MjUsNyArNTI1LDcgQEAgc3RhdGljIHZv
aWQgd2ViS2l0TWVkaWFTcmNMb29wKHZvaWQqIHVzZXJEYXRhKQogICAgICAgICAvLyBFT1MgZXZl
bnRzIGFuZCBvdGhlciBlbnF1ZXVlZCBldmVudHMgYXJlIGFsc28gc2VudCB1bmxvY2tlZCBzbyB0
aGV5IGNhbiByZWFjdCB0byBmbHVzaGVzIGlmIG5lY2Vzc2FyeS4KICAgICAgICAgR1JlZlB0cjxH
c3RFdmVudD4gZXZlbnQgPSBHUmVmUHRyPEdzdEV2ZW50PihHU1RfRVZFTlQob2JqZWN0LmxlYWtS
ZWYoKSkpOwogCi0gICAgICAgIHN0cmVhbWluZ01lbWJlcnMubG9ja0hvbGRlcigpLnVubG9ja0Vh
cmx5KCk7CisgICAgICAgIHN0cmVhbWluZ01lbWJlcnMudW5sb2NrRWFybHkoKTsKICAgICAgICAg
R1NUX0RFQlVHX09CSkVDVChwYWQsICJQdXNoaW5nIGV2ZW50IGRvd25zdHJlYW06ICUiIEdTVF9Q
VFJfRk9STUFULCBldmVudC5nZXQoKSk7CiAgICAgICAgIGJvb2wgZXZlbnRIYW5kbGVkID0gZ3N0
X3BhZF9wdXNoX2V2ZW50KHBhZCwgR1JlZlB0cjxHc3RFdmVudD4oZXZlbnQpLmxlYWtSZWYoKSk7
CiAgICAgICAgIGlmICghZXZlbnRIYW5kbGVkKQpAQCAtNTQwLDExICs1NDAsMTEgQEAgc3RhdGlj
IHZvaWQgd2ViS2l0TWVkaWFTcmNTdHJlYW1GbHVzaChTdHJlYW0qIHN0cmVhbSwgYm9vbCBpc1Nl
ZWtpbmdGbHVzaCkKICAgICBib29sIHNraXBGbHVzaCA9IGZhbHNlOwogCiAgICAgewotICAgICAg
ICBhdXRvIHN0cmVhbWluZ01lbWJlcnMgPSBob2xkTG9jayhzdHJlYW0tPnN0cmVhbWluZ01lbWJl
cnNEYXRhTXV0ZXgpOworICAgICAgICBEYXRhTXV0ZXhMb2NrZXIgc3RyZWFtaW5nTWVtYmVycyB7
IHN0cmVhbS0+c3RyZWFtaW5nTWVtYmVyc0RhdGFNdXRleCB9OwogCiAgICAgICAgIGlmICghc3Ry
ZWFtaW5nTWVtYmVycy0+aGFzUG9wcGVkRmlyc3RPYmplY3QpIHsKICAgICAgICAgICAgIEdTVF9E
RUJVR19PQkpFQ1Qoc3RyZWFtLT5zb3VyY2UsICJGbHVzaCByZXF1ZXN0IGZvciBzdHJlYW0gJyVz
JyBvY2N1cnJlZCBiZWZvcmUgaGFzUG9wcGVkRmlyc3RPYmplY3QsIGp1c3QgY2xlYXJpbmcgdGhl
IHF1ZXVlIGFuZCByZWFkanVzdGluZyB0aGUgc2VnbWVudC4iLCBzdHJlYW0tPnRyYWNrLT50cmFj
a0lkKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgICAgICBhdXRvIHF1ZXVlID0g
aG9sZExvY2soc3RyZWFtLT50cmFjay0+cXVldWVEYXRhTXV0ZXgoKSk7CisgICAgICAgICAgICBE
YXRhTXV0ZXhMb2NrZXIgcXVldWUgeyBzdHJlYW0tPnRyYWNrLT5xdWV1ZURhdGFNdXRleCgpIH07
CiAgICAgICAgICAgICAvLyBXZSB1c2UgY2xlYXIoKSBpbnN0ZWFkIG9mIGZsdXNoKCkgYmVjYXVz
ZSB0aGUgV2ViS2l0TWVkaWFTcmMgc3RyZWFtaW5nIHRocmVhZCBjb3VsZCBiZSB3YWl0aW5nCiAg
ICAgICAgICAgICAvLyBmb3IgdGhlIHF1ZXVlLiBmbHVzaCgpIHdvdWxkIGNhbmNlbCB0aGUgbm90
RW1wdHlDYWxsYmFjayB0aGVyZWZvcmUgbGVhdmluZyB0aGUgc3RyZWFtaW5nIHRocmVhZAogICAg
ICAgICAgICAgLy8gc3R1Y2sgd2FpdGluZyBmb3JldmVyLgpAQCAtNTU4LDggKzU1OCw4IEBAIHN0
YXRpYyB2b2lkIHdlYktpdE1lZGlhU3JjU3RyZWFtRmx1c2goU3RyZWFtKiBzdHJlYW0sIGJvb2wg
aXNTZWVraW5nRmx1c2gpCiAgICAgICAgIC8vIHdoaWNoIHdpbGwga2VlcGluZyB0aGUgc3RyZWFt
aW5nIHRocmVhZCBpZGxlLgogICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHN0cmVhbS0+cGFkLmdl
dCgpLCAiVGFraW5nIHRoZSBTdHJlYW1pbmdNZW1iZXJzIG11dGV4IGFuZCBzZXR0aW5nIGlzRmx1
c2hpbmcgPSB0cnVlLiIpOwogICAgICAgICB7Ci0gICAgICAgICAgICBhdXRvIHN0cmVhbWluZ01l
bWJlcnMgPSBob2xkTG9jayhzdHJlYW0tPnN0cmVhbWluZ01lbWJlcnNEYXRhTXV0ZXgpOwotICAg
ICAgICAgICAgYXV0byBxdWV1ZSA9IGhvbGRMb2NrKHN0cmVhbS0+dHJhY2stPnF1ZXVlRGF0YU11
dGV4KCkpOworICAgICAgICAgICAgRGF0YU11dGV4TG9ja2VyIHN0cmVhbWluZ01lbWJlcnMgeyBz
dHJlYW0tPnN0cmVhbWluZ01lbWJlcnNEYXRhTXV0ZXggfTsKKyAgICAgICAgICAgIERhdGFNdXRl
eExvY2tlciBxdWV1ZSB7IHN0cmVhbS0+dHJhY2stPnF1ZXVlRGF0YU11dGV4KCkgfTsKIAogICAg
ICAgICAgICAgc3RyZWFtaW5nTWVtYmVycy0+aXNGbHVzaGluZyA9IHRydWU7CiAgICAgICAgICAg
ICBxdWV1ZS0+Zmx1c2goKTsgLy8gQ2xlYXIgdGhlIHF1ZXVlIGFuZCBjYW5jZWwgYW55IHdhaXRp
bmcgY2FsbGJhY2suCkBAIC01ODEsNyArNTgxLDcgQEAgc3RhdGljIHZvaWQgd2ViS2l0TWVkaWFT
cmNTdHJlYW1GbHVzaChTdHJlYW0qIHN0cmVhbSwgYm9vbCBpc1NlZWtpbmdGbHVzaCkKICAgICAg
ICAgLy8gSW4gdGhlIGNhc2Ugb2Ygc2Vla2luZyBmbHVzaCB3ZSBhcmUgcmVzZXR0aW5nIHRoZSB0
aW1lbGluZSAoc2VlIHRoZSBmbHVzaCBzdG9wIGxhdGVyKS4KICAgICAgICAgLy8gVGhlIHJlc3Vs
dGluZyBzZWdtZW50IGlzIGJyYW5kIG5ldywgYnV0IHdpdGggYSBkaWZmZXJlbnQgc3RhcnQgdGlt
ZS4KICAgICAgICAgV2ViS2l0TWVkaWFTcmNQcml2YXRlKiBwcml2ID0gc3RyZWFtLT5zb3VyY2Ut
PnByaXY7Ci0gICAgICAgIGF1dG8gc3RyZWFtaW5nTWVtYmVycyA9IGhvbGRMb2NrKHN0cmVhbS0+
c3RyZWFtaW5nTWVtYmVyc0RhdGFNdXRleCk7CisgICAgICAgIERhdGFNdXRleExvY2tlciBzdHJl
YW1pbmdNZW1iZXJzIHsgc3RyZWFtLT5zdHJlYW1pbmdNZW1iZXJzRGF0YU11dGV4IH07CiAgICAg
ICAgIHN0cmVhbWluZ01lbWJlcnMtPnNlZ21lbnQuYmFzZSA9IDA7CiAgICAgICAgIHN0cmVhbWlu
Z01lbWJlcnMtPnNlZ21lbnQucmF0ZSA9IHByaXYtPnJhdGU7CiAgICAgICAgIHN0cmVhbWluZ01l
bWJlcnMtPnNlZ21lbnQuc3RhcnQgPSBzdHJlYW1pbmdNZW1iZXJzLT5zZWdtZW50LnRpbWUgPSBw
cml2LT5zdGFydFRpbWU7CkBAIC01OTUsNyArNTk1LDcgQEAgc3RhdGljIHZvaWQgd2ViS2l0TWVk
aWFTcmNTdHJlYW1GbHVzaChTdHJlYW0qIHN0cmVhbSwgYm9vbCBpc1NlZWtpbmdGbHVzaCkKICAg
ICAgICAgLy8gR1NUX0NMT0NLX1RJTUVfTk9ORSBpcyByZXR1cm5lZCB3aGVuIHRoZSBwaXBlbGlu
ZSBpcyBub3QgeWV0IHByZS1yb2xsZWQgKGUuZy4ganVzdCBhZnRlciBhIHNlZWspLiBJbiB0aGlz
IGNhc2UKICAgICAgICAgLy8gd2UgZG9uJ3QgbmVlZCB0byBhZGp1c3QgdGhlIHNlZ21lbnQgdGhv
dWdoLCBhcyBydW5uaW5nIHRpbWUgaGFzIG5vdCBhZHZhbmNlZC4KICAgICAgICAgaWYgKEdTVF9D
TE9DS19USU1FX0lTX1ZBTElEKHBpcGVsaW5lU3RyZWFtVGltZSkpIHsKLSAgICAgICAgICAgIGF1
dG8gc3RyZWFtaW5nTWVtYmVycyA9IGhvbGRMb2NrKHN0cmVhbS0+c3RyZWFtaW5nTWVtYmVyc0Rh
dGFNdXRleCk7CisgICAgICAgICAgICBEYXRhTXV0ZXhMb2NrZXIgc3RyZWFtaW5nTWVtYmVycyB7
IHN0cmVhbS0+c3RyZWFtaW5nTWVtYmVyc0RhdGFNdXRleCB9OwogICAgICAgICAgICAgLy8gV2Ug
bmVlZCB0byBpbmNyZWFzZSB0aGUgYmFzZSBieSB0aGUgcnVubmluZyB0aW1lIGFjY3VtdWxhdGVk
IGR1cmluZyB0aGUgcHJldmlvdXMgc2VnbWVudC4KIAogICAgICAgICAgICAgR3N0Q2xvY2tUaW1l
IHBpcGVsaW5lUnVubmluZ1RpbWUgPSBnc3Rfc2VnbWVudF90b19ydW5uaW5nX3RpbWUoJnN0cmVh
bWluZ01lbWJlcnMtPnNlZ21lbnQsIEdTVF9GT1JNQVRfVElNRSwgcGlwZWxpbmVTdHJlYW1UaW1l
KTsKQEAgLTYxNCw3ICs2MTQsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRNZWRpYVNyY1N0cmVhbUZs
dXNoKFN0cmVhbSogc3RyZWFtLCBib29sIGlzU2Vla2luZ0ZsdXNoKQogICAgICAgICBHU1RfUEFE
X1NUUkVBTV9MT0NLKHN0cmVhbS0+cGFkLmdldCgpKTsKICAgICAgICAgewogICAgICAgICAgICAg
R1NUX0RFQlVHX09CSkVDVChzdHJlYW0tPnBhZC5nZXQoKSwgIlRha2luZyB0aGUgU3RyZWFtaW5n
TWVtYmVycyBtdXRleCBhZ2Fpbi4iKTsKLSAgICAgICAgICAgIGF1dG8gc3RyZWFtaW5nTWVtYmVy
cyA9IGhvbGRMb2NrKHN0cmVhbS0+c3RyZWFtaW5nTWVtYmVyc0RhdGFNdXRleCk7CisgICAgICAg
ICAgICBEYXRhTXV0ZXhMb2NrZXIgc3RyZWFtaW5nTWVtYmVycyB7IHN0cmVhbS0+c3RyZWFtaW5n
TWVtYmVyc0RhdGFNdXRleCB9OwogICAgICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChzdHJlYW0t
PnBhZC5nZXQoKSwgIlN0cmVhbWluZ01lbWJlcnMgbXV0ZXggdGFrZW4sIHVzaW5nIGl0IHRvIHNl
dCBpc0ZsdXNoaW5nID0gZmFsc2UuIik7CiAgICAgICAgICAgICBzdHJlYW1pbmdNZW1iZXJzLT5p
c0ZsdXNoaW5nID0gZmFsc2U7CiAgICAgICAgICAgICBzdHJlYW1pbmdNZW1iZXJzLT5kb2VzTmVl
ZFNlZ21lbnRFdmVudCA9IHRydWU7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggYTViYzk3MTg4MTY5MmE4Yjk5MjlmMmE5ZjZmOGIzMjM3NzM0N2Uz
NS4uYjc1Zjc3NDk5NTY4NDVlMzRiZTZmMmE1NDIxMDY4MDcwMDExMTAxYiAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisy
MDIxLTA1LTI5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRv
cHQgY2xhbmcgdGhyZWFkIHNhZmV0eSBhbm5vdGF0aW9uIGluIFdURjo6RGF0YU11dGV4CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY0MzEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgQVBJIHRl
c3QgZHVlIHRvIERhdGFNdXRleCBBUEkgY2hhbmdlcy4KKworICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL0RhdGFNdXRleC5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNU
KToKKwogMjAyMS0wNS0yOCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgQ2xpZW50cyBvZiBvcHRpb25hbCBzaG91bGQgdXNlIGhhc192YWx1ZSBpbnN0ZWFkIG9mIHJl
bHlpbmcgb24gaGFzVmFsdWUgbWFjcm8KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL0RhdGFNdXRleC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9E
YXRhTXV0ZXguY3BwCmluZGV4IGI3ODBiOTY5NmNjMzE1NDA5ODM5MGZmYjRlODc0MzI2YTAyMmZk
MDkuLjExYmZmZWY0MTM2ZGZiMDk4Mjk1NjlmNjgzOWQ0YTQ4MjUyZmU5NTYgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0RhdGFNdXRleC5jcHAKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRGF0YU11dGV4LmNwcApAQCAtMzAsOCArMzAsNiBAQAog
I2RlZmluZSBFTkFCTEVfREFUQV9NVVRFWF9DSEVDS1MgMQogI2luY2x1ZGUgPHd0Zi9EYXRhTXV0
ZXguaD4KIAotdXNpbmcgbmFtZXNwYWNlIFdURjsKLQogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkg
ewogCiBzdHJ1Y3QgTXlTdHJ1Y3R1cmUgewpAQCAtNDIsNyArNDAsNyBAQCBURVNUKFdURl9EYXRh
TXV0ZXgsIFRha2luZ1RoZU11dGV4KQogewogICAgIERhdGFNdXRleDxNeVN0cnVjdHVyZT4gbXlE
YXRhTXV0ZXg7CiAKLSAgICBPd25lckF3YXJlTG9jayogbXV0ZXg7CisgICAgTG9jayogbXV0ZXg7
CiAgICAgewogICAgICAgICBEYXRhTXV0ZXg8TXlTdHJ1Y3R1cmU+OjpMb2NrZWRXcmFwcGVyIHdy
YXBwZXIobXlEYXRhTXV0ZXgpOwogICAgICAgICBtdXRleCA9ICZ3cmFwcGVyLm11dGV4KCk7CkBA
IC04MCw4ICs3OCw4IEBAIFRFU1QoV1RGX0RhdGFNdXRleCwgRG91YmxlTG9ja0RlYXRoVGVzdCkK
IHsKICAgICA6OnRlc3Rpbmc6OkZMQUdTX2d0ZXN0X2RlYXRoX3Rlc3Rfc3R5bGUgPSAidGhyZWFk
c2FmZSI7CiAgICAgRGF0YU11dGV4PE15U3RydWN0dXJlPiBteURhdGFNdXRleDsKLSAgICBEYXRh
TXV0ZXg8TXlTdHJ1Y3R1cmU+OjpMb2NrZWRXcmFwcGVyIHdyYXBwZXIxKG15RGF0YU11dGV4KTsK
LSAgICBBU1NFUlRfREVBVEgoRGF0YU11dGV4PE15U3RydWN0dXJlPjo6TG9ja2VkV3JhcHBlciB3
cmFwcGVyMihteURhdGFNdXRleCksICIiKTsKKyAgICBEYXRhTXV0ZXhMb2NrZXIgd3JhcHBlcjEg
eyBteURhdGFNdXRleCB9OworICAgIEFTU0VSVF9ERUFUSChEYXRhTXV0ZXhMb2NrZXIgd3JhcHBl
cjIgeyBteURhdGFNdXRleCB9LCAiIik7CiB9CiAjZW5kaWYKIAo=
</data>
<flag name="commit-queue"
          id="451485"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430123</attachid>
            <date>2021-05-29 20:05:48 -0700</date>
            <delta_ts>2021-05-29 20:16:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226431-20210529200548.patch</filename>
            <type>text/plain</type>
            <size>35731</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MjQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDk1NjVmYTExNTA1YTQ4N2I2ZTVhNThl
MzMzNzEwZGNhYjcwYWM5NmIuLmVmMGNmODkyNTgwNzIwZmRkYWY0Nzk2YmY5YWVhMDNkMmNiMzU3
ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMDUtMjkgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBBZG9wdCBjbGFuZyB0aHJlYWQgc2FmZXR5IGFubm90YXRp
b24gaW4gV1RGOjpEYXRhTXV0ZXgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyNjQzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkb3B0IGNsYW5nIHRocmVhZCBzYWZldHkgYW5ub3RhdGlvbiBpbiBXVEY6
OkRhdGFNdXRleC4gVGhpcyBhbGxvd3MgdXMgdG8KKyAgICAgICAgc3RvcCB1c2luZyBVbmNoZWNr
ZWRDb25kaXRpb24gaW4gYSBmZXcgcGxhY2VzLgorCisgICAgICAgICogd3RmL0RhdGFNdXRleC5o
OgorICAgICAgICAoV1RGOjpEYXRhTXV0ZXg6OkRhdGFNdXRleCk6CisKIDIwMjEtMDUtMjkgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBTdG9wIHVzaW5nIFVuY2hl
Y2tlZExvY2sgaW4gSlNDOjpWTUluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGMwM2E1YTdlOTI3NTNj
Y2JkMzBhODdjYWJlMTg2NjA0NTI0NTFiNWQuLmU5YzQ4NWY5YzQ5Y2NjZDdhYTU2NWY2YjRkZGU2
YWVkNWEzNDQ3M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OSBAQAorMjAyMS0wNS0yOSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEFkb3B0IGNsYW5nIHRocmVh
ZCBzYWZldHkgYW5ub3RhdGlvbiBpbiBXVEY6OkRhdGFNdXRleAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NDMxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGNvZGUgYmFzZSBkdWUgdG8gRGF0
YU11dGV4IEFQSSBjaGFuZ2VzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnBlcmZvcm1UYXNrQXRNZWRpYVRpbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp0cmlnZ2VyUmVwYWlu
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9X
ZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwOgorICAgICAgICAod2ViS2l0V2ViU3JjQ29uc3Ry
dWN0ZWQpOgorICAgICAgICAod2ViS2l0V2ViU3JjR2V0UHJvcGVydHkpOgorICAgICAgICAod2Vi
S2l0V2ViU3JjU2V0Q29udGV4dCk6CisgICAgICAgICh3ZWJLaXRXZWJTcmNDcmVhdGUpOgorICAg
ICAgICAod2ViS2l0V2ViU3JjTWFrZVJlcXVlc3QpOgorICAgICAgICAod2ViS2l0V2ViU3JjU3Rv
cCk6CisgICAgICAgICh3ZWJLaXRXZWJTcmNHZXRTaXplKToKKyAgICAgICAgKHdlYktpdFdlYlNy
Y0lzU2Vla2FibGUpOgorICAgICAgICAod2ViS2l0V2ViU3JjRG9TZWVrKToKKyAgICAgICAgKHdl
YktpdFdlYlNyY1F1ZXJ5KToKKyAgICAgICAgKHdlYktpdFdlYlNyY1VuTG9jayk6CisgICAgICAg
ICh3ZWJLaXRXZWJTcmNVbkxvY2tTdG9wKToKKyAgICAgICAgKHdlYktpdFdlYlNyY1NldE1lZGlh
UGxheWVyKToKKyAgICAgICAgKHdlYktpdFNyY1Bhc3NlZENPUlNBY2Nlc3NDaGVjayk6CisgICAg
ICAgIChDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6cmVzcG9uc2VSZWNlaXZlZCk6Cisg
ICAgICAgIChDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6ZGF0YVJlY2VpdmVkKToKKyAg
ICAgICAgKENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjphY2Nlc3NDb250cm9sQ2hlY2tG
YWlsZWQpOgorICAgICAgICAoQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmxvYWRGYWls
ZWQpOgorICAgICAgICAoQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmxvYWRGaW5pc2hl
ZCk6CisgICAgICAgICh3ZWJLaXRTcmNXb3VsZFRhaW50T3JpZ2luKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291cmNlVHJhY2tHU3RyZWFtZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2VUcmFja0dTdHJlYW1lcjo6aXNSZWFkeUZv
ck1vcmVTYW1wbGVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlVHJhY2tHU3RyZWFt
ZXI6Om5vdGlmeVdoZW5SZWFkeUZvck1vcmVTYW1wbGVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU291cmNlVHJhY2tHU3RyZWFtZXI6OmVucXVldWVPYmplY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTb3VyY2VUcmFja0dTdHJlYW1lcjo6Y2xlYXJRdWV1ZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJjZVRyYWNrR1N0cmVhbWVyLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9XZWJLaXRNZWRpYVNv
dXJjZUdTdHJlYW1lci5jcHA6CisgICAgICAgICh3ZWJLaXRNZWRpYVNyY0FjdGl2YXRlTW9kZSk6
CisgICAgICAgICh3ZWJLaXRNZWRpYVNyY1BhZExpbmtlZCk6CisgICAgICAgICh3ZWJLaXRNZWRp
YVNyY0xvb3ApOgorICAgICAgICAod2ViS2l0TWVkaWFTcmNTdHJlYW1GbHVzaCk6CisKIDIwMjEt
MDUtMjggIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIENsaWVudHMg
b2Ygb3B0aW9uYWwgc2hvdWxkIHVzZSBoYXNfdmFsdWUgaW5zdGVhZCBvZiByZWx5aW5nIG9uIGhh
c1ZhbHVlIG1hY3JvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9EYXRhTXV0ZXguaCBiL1Nv
dXJjZS9XVEYvd3RmL0RhdGFNdXRleC5oCmluZGV4IGEyZTFkMjQwYThhNTA3YmU2YmJiOTllNzMz
NDM1MTI1NWY1NThlNTUuLjEyOGVmOTQxOWY4NWFjMjBjMjY1NTQxNzBmMWNmYjJlYjAwMTQ3ZDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0RhdGFNdXRleC5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL0RhdGFNdXRleC5oCkBAIC00MCwxMTkgKzQwLDg0IEBAIG5hbWVzcGFjZSBXVEYgewogI2Rl
ZmluZSBEQVRBX01VVEVYX0NIRUNLKGV4cHIpCiAjZW5kaWYKIAotdGVtcGxhdGU8dHlwZW5hbWUg
TG9ja1R5cGU+Ci1jbGFzcyBPd25lckF3YXJlTG9ja0FkYXB0ZXIgewordGVtcGxhdGUgPHR5cGVu
YW1lIFQ+IGNsYXNzIERhdGFNdXRleExvY2tlcjsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2Ns
YXNzIERhdGFNdXRleCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoRGF0YU11dGV4KTsKK3B1YmxpYzoKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSAuLi5BcmdzPgorICAgIGV4cGxpY2l0IERhdGFNdXRleChBcmdzJiYuLi4gYXJncykKKyAgICAg
ICAgOiBtX2RhdGEoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKQorICAgIHsgfQorCitwcml2
YXRlOgorICAgIGZyaWVuZCBjbGFzcyBEYXRhTXV0ZXhMb2NrZXI8VD47CisKKyAgICBMb2NrIG1f
bXV0ZXg7CisgICAgVCBtX2RhdGEgV1RGX0dVQVJERURfQllfTE9DSyhtX211dGV4KTsKK307CisK
K3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgV1RGX0NBUEFCSUxJVFlfU0NPUEVEX0xPQ0sg
RGF0YU11dGV4TG9ja2VyIHsKIHB1YmxpYzoKLSAgICB2b2lkIGxvY2soKQorICAgIGV4cGxpY2l0
IERhdGFNdXRleExvY2tlcihEYXRhTXV0ZXg8VD4mIGRhdGFNdXRleCkgV1RGX0FDUVVJUkVTX0xP
Q0sobV9kYXRhTXV0ZXgubV9tdXRleCkKKyAgICAgICAgOiBtX2RhdGFNdXRleChkYXRhTXV0ZXgp
CiAgICAgewotICAgICAgICBEQVRBX01VVEVYX0NIRUNLKG1fb3duZXIgIT0gJlRocmVhZDo6Y3Vy
cmVudCgpKTsgLy8gVGhyZWFkIGF0dGVtcHRlZCByZWN1cnNpdmUgbG9jayAodW5zdXBwb3J0ZWQp
LgotICAgICAgICBtX2xvY2subG9jaygpOwotI2lmIEVOQUJMRV9EQVRBX01VVEVYX0NIRUNLUwot
ICAgICAgICBBU1NFUlQoIW1fb3duZXIpOwotICAgICAgICBtX293bmVyID0gJlRocmVhZDo6Y3Vy
cmVudCgpOwotI2VuZGlmCisgICAgICAgIERBVEFfTVVURVhfQ0hFQ0soIW11dGV4KCkuaXNIZWxk
KCkpOworICAgICAgICBtdXRleCgpLmxvY2soKTsKKyAgICAgICAgbV9pc0xvY2tlZCA9IHRydWU7
CiAgICAgfQogCi0gICAgdm9pZCB1bmxvY2soKQorICAgIH5EYXRhTXV0ZXhMb2NrZXIoKSBXVEZf
UkVMRUFTRVNfTE9DSyhtX2RhdGFNdXRleC5tX211dGV4KQogICAgIHsKLSNpZiBFTkFCTEVfREFU
QV9NVVRFWF9DSEVDS1MKLSAgICAgICAgbV9vd25lciA9IG51bGxwdHI7Ci0jZW5kaWYKLSAgICAg
ICAgbV9sb2NrLnVubG9jaygpOworICAgICAgICBpZiAobV9pc0xvY2tlZCkKKyAgICAgICAgICAg
IG11dGV4KCkudW5sb2NrKCk7CiAgICAgfQogCi0gICAgYm9vbCB0cnlMb2NrKCkKKyAgICBUKiBv
cGVyYXRvci0+KCkKICAgICB7Ci0gICAgICAgIERBVEFfTVVURVhfQ0hFQ0sobV9vd25lciAhPSAm
VGhyZWFkOjpjdXJyZW50KCkpOyAvLyBUaHJlYWQgYXR0ZW1wdGVkIHJlY3Vyc2l2ZSBsb2NrICh1
bnN1cHBvcnRlZCkuCi0gICAgICAgIGlmICghbV9sb2NrLnRyeUxvY2soKSkKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLQotI2lmIEVOQUJMRV9EQVRBX01VVEVYX0NIRUNLUwotICAgICAgICBB
U1NFUlQoIW1fb3duZXIpOwotICAgICAgICBtX293bmVyID0gJlRocmVhZDo6Y3VycmVudCgpOwot
I2VuZGlmCi0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBEQVRBX01VVEVYX0NIRUNLKG11
dGV4KCkuaXNIZWxkKCkpOworICAgICAgICBhc3NlcnRJc0hlbGQobV9kYXRhTXV0ZXgubV9tdXRl
eCk7CisgICAgICAgIHJldHVybiAmbV9kYXRhTXV0ZXgubV9kYXRhOwogICAgIH0KIAotICAgIGJv
b2wgaXNMb2NrZWQoKSBjb25zdAorICAgIFQmIG9wZXJhdG9yKigpCiAgICAgewotICAgICAgICBy
ZXR1cm4gbV9sb2NrLmlzTG9ja2VkKCk7CisgICAgICAgIERBVEFfTVVURVhfQ0hFQ0sobXV0ZXgo
KS5pc0hlbGQoKSk7CisgICAgICAgIGFzc2VydElzSGVsZChtX2RhdGFNdXRleC5tX211dGV4KTsK
KyAgICAgICAgcmV0dXJuIG1fZGF0YU11dGV4Lm1fZGF0YTsKICAgICB9CiAKLXByaXZhdGU6Ci0j
aWYgRU5BQkxFX0RBVEFfTVVURVhfQ0hFQ0tTCi0gICAgVGhyZWFkKiBtX293bmVyIHsgbnVsbHB0
ciB9OyAvLyBVc2UgVGhyZWFkKiBpbnN0ZWFkIG9mIFJlZlB0cjxUaHJlYWQ+IHNpbmNlIG1fb3du
ZXIgdGhyZWFkIGlzIGFsd2F5cyBhbGl2ZSB3aGlsZSBtX293bmVyIGlzIHNldC4KLSNlbmRpZgot
ICAgIExvY2tUeXBlIG1fbG9jazsKLX07Ci0KLXVzaW5nIE93bmVyQXdhcmVMb2NrID0gT3duZXJB
d2FyZUxvY2tBZGFwdGVyPExvY2s+OworICAgIExvY2smIG11dGV4KCkgV1RGX1JFVFVSTlNfTE9D
SyhtX2RhdGFNdXRleC5tX211dGV4KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZGF0YU11dGV4
Lm1fbXV0ZXg7CisgICAgfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBMb2NrVHlw
ZSA9IE93bmVyQXdhcmVMb2NrPgotY2xhc3MgRGF0YU11dGV4IHsKLSAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEYXRhTXV0ZXgpOwotcHVibGlj
OgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIC4uLkFyZ3M+Ci0gICAgZXhwbGljaXQgRGF0YU11dGV4
KEFyZ3MmJi4uLiBhcmdzKQotICAgICAgICA6IG1fZGF0YShzdGQ6OmZvcndhcmQ8QXJncz4oYXJn
cykuLi4pCi0gICAgeyB9CisgICAgdm9pZCB1bmxvY2tFYXJseSgpIFdURl9SRUxFQVNFU19MT0NL
KG1fZGF0YU11dGV4Lm1fbXV0ZXgpCisgICAgeworICAgICAgICBEQVRBX01VVEVYX0NIRUNLKG11
dGV4KCkuaXNIZWxkKCkpOworICAgICAgICBtX2lzTG9ja2VkID0gZmFsc2U7CisgICAgICAgIG1f
bG9ja0hvbGRlci51bmxvY2tFYXJseSgpOworICAgIH0KIAotICAgIGNsYXNzIExvY2tlZFdyYXBw
ZXIgewotICAgIHB1YmxpYzoKLSAgICAgICAgZXhwbGljaXQgTG9ja2VkV3JhcHBlcihEYXRhTXV0
ZXgmIGRhdGFNdXRleCkKLSAgICAgICAgICAgIDogbV9tdXRleChkYXRhTXV0ZXgubV9tdXRleCkK
LSAgICAgICAgICAgICwgbV9sb2NrSG9sZGVyKGRhdGFNdXRleC5tX211dGV4KQotICAgICAgICAg
ICAgLCBtX2RhdGEoZGF0YU11dGV4Lm1fZGF0YSkKLSAgICAgICAgeyB9Ci0KLSAgICAgICAgVCog
b3BlcmF0b3ItPigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIERBVEFfTVVURVhfQ0hFQ0sobV9t
dXRleC5pc0xvY2tlZCgpKTsKLSAgICAgICAgICAgIHJldHVybiAmbV9kYXRhOwotICAgICAgICB9
Ci0KLSAgICAgICAgVCYgb3BlcmF0b3IqKCkKLSAgICAgICAgewotICAgICAgICAgICAgREFUQV9N
VVRFWF9DSEVDSyhtX211dGV4LmlzTG9ja2VkKCkpOwotICAgICAgICAgICAgcmV0dXJuIG1fZGF0
YTsKLSAgICAgICAgfQotCi0gICAgICAgIExvY2tUeXBlJiBtdXRleCgpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiBtX211dGV4OwotICAgICAgICB9Ci0KLSAgICAgICAgTG9ja2VyPExv
Y2tUeXBlPiYgbG9ja0hvbGRlcigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBtX2xv
Y2tIb2xkZXI7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBVc2VkIHRvIGF2b2lkIGV4Y2Vzc2l2
ZSBicmFjZSBzY29waW5nIHdoZW4gb25seSBzbWFsbCBwYXJ0cyBvZiB0aGUgY29kZSBuZWVkIHRv
IGJlIHJ1biB1bmxvY2tlZC4KLSAgICAgICAgLy8gUGxlYXNlIGJlIG1pbmRmdWwgdGhhdCBhY2Nl
c3NpbmcgdGhlIHdyYXBwZWQgZGF0YSBmcm9tIHRoZSBjYWxsYmFjayBpcyB1bnNhZmUgYW5kIHdp
bGwgZmFpbCBvbiBhc3NlcnRpb25zLgotICAgICAgICAvLyBJdCdzIGhlbHBmdWwgdG8gdXNlIGEg
bWluaW1hbCBsYW1iZGEgY2FwdHVyZSB0byBiZSBjb25zY2lvdXMgb2Ygd2hhdCBkYXRhIHlvdSdy
ZSBoYXZpbmcgYWNjZXNzIHRvIGluIHRoZXNlIHNlY3Rpb25zLgotICAgICAgICB2b2lkIHJ1blVu
bG9ja2VkKFdURjo6RnVuY3Rpb248dm9pZCgpPiBjYWxsYmFjaykKLSAgICAgICAgewotICAgICAg
ICAgICAgbV9tdXRleC51bmxvY2soKTsKLSAgICAgICAgICAgIGNhbGxiYWNrKCk7Ci0gICAgICAg
ICAgICBtX211dGV4LmxvY2soKTsKLSAgICAgICAgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAg
TG9ja1R5cGUmIG1fbXV0ZXg7Ci0gICAgICAgIExvY2tlcjxMb2NrVHlwZT4gbV9sb2NrSG9sZGVy
OwotICAgICAgICBUJiBtX2RhdGE7Ci0gICAgfTsKKyAgICAvLyBVc2VkIHRvIGF2b2lkIGV4Y2Vz
c2l2ZSBicmFjZSBzY29waW5nIHdoZW4gb25seSBzbWFsbCBwYXJ0cyBvZiB0aGUgY29kZSBuZWVk
IHRvIGJlIHJ1biB1bmxvY2tlZC4KKyAgICAvLyBQbGVhc2UgYmUgbWluZGZ1bCB0aGF0IGFjY2Vz
c2luZyB0aGUgd3JhcHBlZCBkYXRhIGZyb20gdGhlIGNhbGxiYWNrIGlzIHVuc2FmZSBhbmQgd2ls
bCBmYWlsIG9uIGFzc2VydGlvbnMuCisgICAgLy8gSXQncyBoZWxwZnVsIHRvIHVzZSBhIG1pbmlt
YWwgbGFtYmRhIGNhcHR1cmUgdG8gYmUgY29uc2Npb3VzIG9mIHdoYXQgZGF0YSB5b3UncmUgaGF2
aW5nIGFjY2VzcyB0byBpbiB0aGVzZSBzZWN0aW9ucy4KKyAgICB2b2lkIHJ1blVubG9ja2VkKGNv
bnN0IEZ1bmN0aW9uPHZvaWQoKT4mIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgREFUQV9NVVRF
WF9DSEVDSyhtdXRleCgpLmlzSGVsZCgpKTsKKyAgICAgICAgRHJvcExvY2tGb3JTY29wZSBkcm9w
TG9jayB7IG1fbG9ja0hvbGRlciB9OworICAgICAgICBjYWxsYmFjaygpOworICAgIH0KIAogcHJp
dmF0ZToKLSAgICBMb2NrVHlwZSBtX211dGV4OwotICAgIFQgbV9kYXRhOworICAgIERhdGFNdXRl
eDxUPiYgbV9kYXRhTXV0ZXg7CisgICAgYm9vbCBtX2lzTG9ja2VkIHsgZmFsc2UgfTsKIH07CiAK
LXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci10eXBlbmFtZSBEYXRhTXV0ZXg8VD46OkxvY2tlZFdyYXBw
ZXIgaG9sZExvY2soRGF0YU11dGV4PFQ+JiBkYXRhTXV0ZXgpCi17Ci0gICAgcmV0dXJuIHR5cGVu
YW1lIERhdGFNdXRleDxUPjo6TG9ja2VkV3JhcHBlcihkYXRhTXV0ZXgpOwotfQotCiB9IC8vIG5h
bWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpEYXRhTXV0ZXg7Cit1c2luZyBXVEY6OkRhdGFNdXRl
eExvY2tlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5j
cHAKaW5kZXggNjgwOTEzOTVjZGUzM2RiMTkxMDdlNDc1ZTA4MjYyYTEyZDJmMWRkNC4uNWIxODAy
MTFlZmEyNjIyZGVmMWFhNGE4NzI5ZmI2MjdjNTIyZjczZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTI4NjMsNyArMjg2Myw3IEBAIGJv
b2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwZXJmb3JtVGFza0F0TWVkaWFUaW1lKEZ1
bmN0aW9uPHZvaWQoKT4mJiB0YXNrCiAKICAgICBPcHRpb25hbDxGdW5jdGlvbjx2b2lkKCk+PiB0
YXNrVG9TY2hlZHVsZTsKICAgICB7Ci0gICAgICAgIGF1dG8gdGFza0F0TWVkaWFUaW1lU2NoZWR1
bGVyID0gaG9sZExvY2sobV9UYXNrQXRNZWRpYVRpbWVTY2hlZHVsZXJEYXRhTXV0ZXgpOworICAg
ICAgICBEYXRhTXV0ZXhMb2NrZXIgdGFza0F0TWVkaWFUaW1lU2NoZWR1bGVyIHsgbV9UYXNrQXRN
ZWRpYVRpbWVTY2hlZHVsZXJEYXRhTXV0ZXggfTsKICAgICAgICAgdGFza0F0TWVkaWFUaW1lU2No
ZWR1bGVyLT5zZXRUYXNrKFdURk1vdmUodGFzayksIHRpbWUsCiAgICAgICAgICAgICBtX3BsYXli
YWNrUmF0ZSA+PSAwID8gVGFza0F0TWVkaWFUaW1lU2NoZWR1bGVyOjpGb3J3YXJkIDogVGFza0F0
TWVkaWFUaW1lU2NoZWR1bGVyOjpCYWNrd2FyZCk7CiAgICAgICAgIHRhc2tUb1NjaGVkdWxlID0g
dGFza0F0TWVkaWFUaW1lU2NoZWR1bGVyLT5jaGVja1Rhc2tGb3JTY2hlZHVsaW5nKGN1cnJlbnRU
aW1lKTsKQEAgLTMxMjQsNyArMzEyNCw4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyOjp0cmlnZ2VyUmVwYWludChHc3RTYW1wbGUqIHNhbXBsZSkKICAgICBpZiAoYnVmZmVyICYm
IEdTVF9CVUZGRVJfUFRTX0lTX1ZBTElEKGJ1ZmZlcikpIHsKICAgICAgICAgLy8gSGV1cmlzdGlj
IHRvIGF2b2lkIGFza2luZyBmb3IgcGxheWJhY2tQb3NpdGlvbigpIGZyb20gYSBub24tbWFpbiB0
aHJlYWQuCiAgICAgICAgIE1lZGlhVGltZSBjdXJyZW50VGltZSA9IE1lZGlhVGltZShnc3Rfc2Vn
bWVudF90b19zdHJlYW1fdGltZShnc3Rfc2FtcGxlX2dldF9zZWdtZW50KHNhbXBsZSksIEdTVF9G
T1JNQVRfVElNRSwgR1NUX0JVRkZFUl9QVFMoYnVmZmVyKSksIEdTVF9TRUNPTkQpOwotICAgICAg
ICBpZiAoYXV0byB0YXNrID0gaG9sZExvY2sobV9UYXNrQXRNZWRpYVRpbWVTY2hlZHVsZXJEYXRh
TXV0ZXgpLT5jaGVja1Rhc2tGb3JTY2hlZHVsaW5nKGN1cnJlbnRUaW1lKSkKKyAgICAgICAgRGF0
YU11dGV4TG9ja2VyIHRhc2tBdE1lZGlhVGltZVNjaGVkdWxlciB7IG1fVGFza0F0TWVkaWFUaW1l
U2NoZWR1bGVyRGF0YU11dGV4IH07CisgICAgICAgIGlmIChhdXRvIHRhc2sgPSB0YXNrQXRNZWRp
YVRpbWVTY2hlZHVsZXItPmNoZWNrVGFza0ZvclNjaGVkdWxpbmcoY3VycmVudFRpbWUpKQogICAg
ICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFdURk1vdmUodGFzay52YWx1ZSgpKSk7
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgK
aW5kZXggODAzOTFkOTE2NzY1NDU0NGFlZjU1ZjhhMjRhZGZkMTU1YTYwMTVkZC4uZGYwMjk2Y2Q2
M2VkOGYzNmM0YmJjZjhkYTFlNmUyYzc3YWE2OTZkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXIuaApAQCAtNTY1LDcgKzU2NSw3IEBAIHByaXZhdGU6CiAg
ICAgLy8gVGhpcyBpcyBzZXQgdG8gdHJ1ZSBpZiBubyB2aWRlb2ZsaXAgZWxlbWVudCBoYXMgYmVl
biBhZGRlZCB0byB0aGUgcGlwZWxpbmUuCiAgICAgYm9vbCBtX3Nob3VsZEhhbmRsZU9yaWVudGF0
aW9uVGFncyB7IGZhbHNlIH07CiAKLSAgICBXVEY6OkRhdGFNdXRleDxUYXNrQXRNZWRpYVRpbWVT
Y2hlZHVsZXI+IG1fVGFza0F0TWVkaWFUaW1lU2NoZWR1bGVyRGF0YU11dGV4OworICAgIERhdGFN
dXRleDxUYXNrQXRNZWRpYVRpbWVTY2hlZHVsZXI+IG1fVGFza0F0TWVkaWFUaW1lU2NoZWR1bGVy
RGF0YU11dGV4OwogCiBwcml2YXRlOgogI2lmIFVTRShXUEVfVklERU9fUExBTkVfRElTUExBWV9E
TUFCVUYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCmluZGV4
IDVjN2M5ODA2ZDM0Y2I4YzEzODU5YzkxYTljOWNiMmFkOTkxNjc3NmYuLjgyMmMyMjcxZDJjN2My
OTc4MGU5NWE0ZTFjMzE2MzIwZDgzMzZjMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJT
b3VyY2VHU3RyZWFtZXIuY3BwCkBAIC00MSw3ICs0MSw2IEBACiAjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
LXVzaW5nIFdURjo6RGF0YU11dGV4OwogCiAvLyBOZXZlciBwYXVzZSBkb3dubG9hZCBvZiBtZWRp
YSByZXNvdXJjZXMgc21hbGxlciB0aGFuIDJNaUIuCiAjZGVmaW5lIFNNQUxMX01FRElBX1JFU09V
UkNFX01BWF9TSVpFIDIgKiAxMDI0ICogMTAyNApAQCAtMTQwLDcgKzEzOSw3IEBAIHN0cnVjdCBX
ZWJLaXRXZWJTcmNQcml2YXRlIHsKIAogICAgICAgICAvLyBQcm9wZXJ0aWVzIHVzZWQgZm9yIEdT
dHJlYW1lciBkYXRhLWZsb3cgaW4gY3JlYXRlKCkuCiAgICAgICAgIGJvb2wgaXNGbHVzaGluZyB7
IGZhbHNlIH07Ci0gICAgICAgIFVuY2hlY2tlZENvbmRpdGlvbiByZXNwb25zZUNvbmRpdGlvbjsg
Ly8gTXVzdCBiZSBzaWduYWxlZCBhZnRlciBhbnkgdXBkYXRlcyBvbiBIVFRQIHJlcXVlc3RzLCBh
bmQgd2hlbiBmbHVzaGluZy4KKyAgICAgICAgQ29uZGl0aW9uIHJlc3BvbnNlQ29uZGl0aW9uOyAv
LyBNdXN0IGJlIHNpZ25hbGVkIGFmdGVyIGFueSB1cGRhdGVzIG9uIEhUVFAgcmVxdWVzdHMsIGFu
ZCB3aGVuIGZsdXNoaW5nLgogICAgICAgICBHUmVmUHRyPEdzdEFkYXB0ZXI+IGFkYXB0ZXI7CiAg
ICAgICAgIGJvb2wgaXNEdXJhdGlvblNldDsKICAgICAgICAgdWludDY0X3QgcmVhZFBvc2l0aW9u
OwpAQCAtMzAxLDcgKzMwMCw3IEBAIHN0YXRpYyB2b2lkIHdlYktpdFdlYlNyY0NvbnN0cnVjdGVk
KEdPYmplY3QqIG9iamVjdCkKIAogICAgIHByaXYtPm1pbmltdW1CbG9ja3NpemUgPSBnc3RfYmFz
ZV9zcmNfZ2V0X2Jsb2Nrc2l6ZShHU1RfQkFTRV9TUkNfQ0FTVChzcmMpKTsKIAotICAgIGF1dG8g
bWVtYmVycyA9IGhvbGRMb2NrKHByaXYtPmRhdGFNdXRleCk7CisgICAgRGF0YU11dGV4TG9ja2Vy
IG1lbWJlcnMgeyBwcml2LT5kYXRhTXV0ZXggfTsKICAgICBtZW1iZXJzLT5hZGFwdGVyID0gYWRv
cHRHUmVmKGdzdF9hZGFwdGVyX25ldygpKTsKICAgICB3ZWJraXRXZWJTcmNSZXNldChzcmMsIG1l
bWJlcnMsIFJlc2V0VHlwZTo6SGFyZCk7CiAKQEAgLTM0Niw3ICszNDUsNyBAQCBzdGF0aWMgdm9p
ZCB3ZWJLaXRXZWJTcmNHZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJRCwg
R1ZhbHVlKiB2YWx1ZQogICAgICAgICBnX3ZhbHVlX3NldF9zdHJpbmcodmFsdWUsIHByaXYtPm9y
aWdpbmFsVVJJLmRhdGEoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJPUF9SRVNPTFZF
RF9MT0NBVElPTjogewotICAgICAgICBhdXRvIG1lbWJlcnMgPSBob2xkTG9jayhwcml2LT5kYXRh
TXV0ZXgpOworICAgICAgICBEYXRhTXV0ZXhMb2NrZXIgbWVtYmVycyB7IHByaXYtPmRhdGFNdXRl
eCB9OwogICAgICAgICBnX3ZhbHVlX3NldF9zdHJpbmcodmFsdWUsIG1lbWJlcnMtPnJlZGlyZWN0
ZWRVUkkuaXNOdWxsKCkgPyBwcml2LT5vcmlnaW5hbFVSSS5kYXRhKCkgOiBtZW1iZXJzLT5yZWRp
cmVjdGVkVVJJLmRhdGEoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTM3Niw3ICszNzUs
NyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNTZXRDb250ZXh0KEdzdEVsZW1lbnQqIGVsZW1l
bnQsIEdzdENvbnRleHQqIGNvbnRleHQpCiAgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJjb250
ZXh0IHR5cGU6ICVzIiwgZ3N0X2NvbnRleHRfZ2V0X2NvbnRleHRfdHlwZShjb250ZXh0KSk7CiAg
ICAgaWYgKGdzdF9jb250ZXh0X2hhc19jb250ZXh0X3R5cGUoY29udGV4dCwgV0VCS0lUX1dFQl9T
UkNfUExBWUVSX0NPTlRFWFRfVFlQRV9OQU1FKSkgewogICAgICAgICBjb25zdCBHVmFsdWUqIHZh
bHVlID0gZ3N0X3N0cnVjdHVyZV9nZXRfdmFsdWUoZ3N0X2NvbnRleHRfZ2V0X3N0cnVjdHVyZShj
b250ZXh0KSwgInBsYXllciIpOwotICAgICAgICBhdXRvIG1lbWJlcnMgPSBob2xkTG9jayhwcml2
LT5kYXRhTXV0ZXgpOworICAgICAgICBEYXRhTXV0ZXhMb2NrZXIgbWVtYmVycyB7IHByaXYtPmRh
dGFNdXRleCB9OwogICAgICAgICBtZW1iZXJzLT5wbGF5ZXIgPSByZWludGVycHJldF9jYXN0PE1l
ZGlhUGxheWVyKj4oZ192YWx1ZV9nZXRfcG9pbnRlcih2YWx1ZSkpOwogICAgIH0KICAgICBHU1Rf
RUxFTUVOVF9DTEFTUyhwYXJlbnRfY2xhc3MpLT5zZXRfY29udGV4dChlbGVtZW50LCBjb250ZXh0
KTsKQEAgLTQ1OSw3ICs0NTgsNyBAQCBzdGF0aWMgR3N0Rmxvd1JldHVybiB3ZWJLaXRXZWJTcmND
cmVhdGUoR3N0UHVzaFNyYyogcHVzaFNyYywgR3N0QnVmZmVyKiogYnVmZmVyKQogICAgIEdzdEJh
c2VTcmMqIGJhc2VTcmMgPSBHU1RfQkFTRV9TUkNfQ0FTVChwdXNoU3JjKTsKICAgICBXZWJLaXRX
ZWJTcmMqIHNyYyA9IFdFQktJVF9XRUJfU1JDKGJhc2VTcmMpOwogICAgIFdlYktpdFdlYlNyY1By
aXZhdGUqIHByaXYgPSBzcmMtPnByaXY7Ci0gICAgYXV0byBtZW1iZXJzID0gaG9sZExvY2socHJp
di0+ZGF0YU11dGV4KTsKKyAgICBEYXRhTXV0ZXhMb2NrZXIgbWVtYmVycyB7IHByaXYtPmRhdGFN
dXRleCB9OwogCiAgICAgLy8gV2UgbmVlZCBtZW1iZXJzLT5wbGF5ZXIgdG8gbWFrZSByZXF1ZXN0
cy4gVGhlcmUgYXJlIHR3byBtZWNoYW5pc21zIGZvciB0aGlzLgogICAgIC8vCkBAIC02ODksNyAr
Njg4LDcgQEAgc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjTWFrZVJlcXVlc3QoV2ViS2l0V2ViU3Jj
KiBzcmMsIERhdGFNdXRleDxXZWJLaXRXZWJTcmNQcmkKICAgICBBU1NFUlQoIWlzTWFpblRocmVh
ZCgpKTsKICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RvciA9IFdURjo6ZW5z
dXJlR1JlZihzcmMpLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgcmVxdWVzdE51bWJlciA9
IG1lbWJlcnMtPnJlcXVlc3ROdW1iZXJdIHsKICAgICAgICAgV2ViS2l0V2ViU3JjUHJpdmF0ZSog
cHJpdiA9IHByb3RlY3Rvci0+cHJpdjsKLSAgICAgICAgYXV0byBtZW1iZXJzID0gaG9sZExvY2so
cHJpdi0+ZGF0YU11dGV4KTsKKyAgICAgICAgRGF0YU11dGV4TG9ja2VyIG1lbWJlcnMgeyBwcml2
LT5kYXRhTXV0ZXggfTsKICAgICAgICAgLy8gSWdub3JlIHRoaXMgdGFzayAobm90IG1ha2luZyBh
bnkgSFRUUCByZXF1ZXN0KSBpZiBieSBub3cgV2ViS2l0V2ViU3JjIHN0cmVhbWluZyB0aHJlYWQg
aXMgYWxyZWFkeSB3YWl0aW5nCiAgICAgICAgIC8vIGZvciBhIGRpZmZlcmVudCByZXF1ZXN0LiBU
aGVyZSBpcyBubyBwb2ludCBhbnltb3JlIGluIHNlbmRpbmcgdGhpcyBvbmUuCiAgICAgICAgIGlm
IChtZW1iZXJzLT5yZXF1ZXN0TnVtYmVyICE9IHJlcXVlc3ROdW1iZXIpIHsKQEAgLTcxNiw3ICs3
MTUsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0V2ViU3JjU3RvcChHc3RCYXNlU3JjKiBiYXNl
U3JjKQogewogICAgIFdlYktpdFdlYlNyYyogc3JjID0gV0VCS0lUX1dFQl9TUkMoYmFzZVNyYyk7
CiAgICAgLy8gYmFzZXNyYyB3aWxsIGFsd2F5cyBjYWxsIHVuTG9jaygpIGFuZCB1bkxvY2tTdG9w
KCkgYmVmb3JlIGNhbGxpbmcgdGhpcy4gU2VlIGdzdF9iYXNlX3NyY19zdG9wKCkuCi0gICAgYXV0
byBtZW1iZXJzID0gaG9sZExvY2soc3JjLT5wcml2LT5kYXRhTXV0ZXgpOworICAgIERhdGFNdXRl
eExvY2tlciBtZW1iZXJzIHsgc3JjLT5wcml2LT5kYXRhTXV0ZXggfTsKICAgICB3ZWJraXRXZWJT
cmNSZXNldChzcmMsIG1lbWJlcnMsIFJlc2V0VHlwZTo6SGFyZCk7CiAgICAgR1NUX0RFQlVHX09C
SkVDVChzcmMsICJTdG9wcGVkIFdlYktpdFdlYlNyYyIpOwogICAgIHJldHVybiBUUlVFOwpAQCAt
NzI1LDcgKzcyNCw3IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRXZWJTcmNTdG9wKEdzdEJhc2VT
cmMqIGJhc2VTcmMpCiBzdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0V2ViU3JjR2V0U2l6ZShHc3RCYXNl
U3JjKiBiYXNlU3JjLCBndWludDY0KiBzaXplKQogewogICAgIFdlYktpdFdlYlNyYyogc3JjID0g
V0VCS0lUX1dFQl9TUkMoYmFzZVNyYyk7Ci0gICAgYXV0byBtZW1iZXJzID0gaG9sZExvY2soc3Jj
LT5wcml2LT5kYXRhTXV0ZXgpOworICAgIERhdGFNdXRleExvY2tlciBtZW1iZXJzIHsgc3JjLT5w
cml2LT5kYXRhTXV0ZXggfTsKIAogICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiaGF2ZVNpemU6
ICVzLCBzaXplOiAlIiBHX0dVSU5UNjRfRk9STUFULCBib29sRm9yUHJpbnRpbmcobWVtYmVycy0+
aGF2ZVNpemUpLCBtZW1iZXJzLT5zaXplKTsKICAgICBpZiAobWVtYmVycy0+aGF2ZVNpemUpIHsK
QEAgLTczOSw3ICs3MzgsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0V2ViU3JjR2V0U2l6ZShH
c3RCYXNlU3JjKiBiYXNlU3JjLCBndWludDY0KiBzaXplKQogc3RhdGljIGdib29sZWFuIHdlYktp
dFdlYlNyY0lzU2Vla2FibGUoR3N0QmFzZVNyYyogYmFzZVNyYykKIHsKICAgICBXZWJLaXRXZWJT
cmMqIHNyYyA9IFdFQktJVF9XRUJfU1JDKGJhc2VTcmMpOwotICAgIGF1dG8gbWVtYmVycyA9IGhv
bGRMb2NrKHNyYy0+cHJpdi0+ZGF0YU11dGV4KTsKKyAgICBEYXRhTXV0ZXhMb2NrZXIgbWVtYmVy
cyB7IHNyYy0+cHJpdi0+ZGF0YU11dGV4IH07CiAgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJp
c1NlZWthYmxlOiAlcyIsIGJvb2xGb3JQcmludGluZyhtZW1iZXJzLT5pc1NlZWthYmxlKSk7CiAg
ICAgcmV0dXJuIG1lbWJlcnMtPmlzU2Vla2FibGU7CiB9CkBAIC03NTYsNyArNzU1LDcgQEAgc3Rh
dGljIGdib29sZWFuIHdlYktpdFdlYlNyY0RvU2VlayhHc3RCYXNlU3JjKiBiYXNlU3JjLCBHc3RT
ZWdtZW50KiBzZWdtZW50KQogICAgIEFTU0VSVChHU1RfRUxFTUVOVChiYXNlU3JjKS0+Y3VycmVu
dF9zdGF0ZSA8IEdTVF9TVEFURV9QQVVTRUQgfHwgd2ViS2l0V2ViU3JjSXNTZWVrYWJsZShiYXNl
U3JjKSk7CiAKICAgICBXZWJLaXRXZWJTcmMqIHNyYyA9IFdFQktJVF9XRUJfU1JDKGJhc2VTcmMp
OwotICAgIGF1dG8gbWVtYmVycyA9IGhvbGRMb2NrKHNyYy0+cHJpdi0+ZGF0YU11dGV4KTsKKyAg
ICBEYXRhTXV0ZXhMb2NrZXIgbWVtYmVycyB7IHNyYy0+cHJpdi0+ZGF0YU11dGV4IH07CiAKICAg
ICBHU1RfREVCVUdfT0JKRUNUKHNyYywgIlNlZWsgc2VnbWVudDogKCUiIEdfR1VJTlQ2NF9GT1JN
QVQgIi0lIiBHX0dVSU5UNjRfRk9STUFUICIpIFBvc2l0aW9uIHByZXZpb3VzIHRvIHNlZWs6ICUi
IEdfR1VJTlQ2NF9GT1JNQVQsIHNlZ21lbnQtPnN0YXJ0LCBzZWdtZW50LT5zdG9wLCBtZW1iZXJz
LT5yZWFkUG9zaXRpb24pOwogCkBAIC03ODYsNyArNzg1LDcgQEAgc3RhdGljIGdib29sZWFuIHdl
YktpdFdlYlNyY1F1ZXJ5KEdzdEJhc2VTcmMqIGJhc2VTcmMsIEdzdFF1ZXJ5KiBxdWVyeSkKIAog
ICAgIGlmIChHU1RfUVVFUllfVFlQRShxdWVyeSkgPT0gR1NUX1FVRVJZX1VSSSkgewogICAgICAg
ICBnc3RfcXVlcnlfc2V0X3VyaShxdWVyeSwgcHJpdi0+b3JpZ2luYWxVUkkuZGF0YSgpKTsKLSAg
ICAgICAgYXV0byBtZW1iZXJzID0gaG9sZExvY2soc3JjLT5wcml2LT5kYXRhTXV0ZXgpOworICAg
ICAgICBEYXRhTXV0ZXhMb2NrZXIgbWVtYmVycyB7IHNyYy0+cHJpdi0+ZGF0YU11dGV4IH07CiAg
ICAgICAgIGlmICghbWVtYmVycy0+cmVkaXJlY3RlZFVSSS5pc051bGwoKSkKICAgICAgICAgICAg
IGdzdF9xdWVyeV9zZXRfdXJpX3JlZGlyZWN0aW9uKHF1ZXJ5LCBtZW1iZXJzLT5yZWRpcmVjdGVk
VVJJLmRhdGEoKSk7CiAgICAgICAgIHJlc3VsdCA9IFRSVUU7CkBAIC04MDksNyArODA4LDcgQEAg
c3RhdGljIGdib29sZWFuIHdlYktpdFdlYlNyY1F1ZXJ5KEdzdEJhc2VTcmMqIGJhc2VTcmMsIEdz
dFF1ZXJ5KiBxdWVyeSkKIHN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRXZWJTcmNVbkxvY2soR3N0QmFz
ZVNyYyogYmFzZVNyYykKIHsKICAgICBXZWJLaXRXZWJTcmMqIHNyYyA9IFdFQktJVF9XRUJfU1JD
KGJhc2VTcmMpOwotICAgIGF1dG8gbWVtYmVycyA9IGhvbGRMb2NrKHNyYy0+cHJpdi0+ZGF0YU11
dGV4KTsKKyAgICBEYXRhTXV0ZXhMb2NrZXIgbWVtYmVycyB7IHNyYy0+cHJpdi0+ZGF0YU11dGV4
IH07CiAKICAgICBHU1RfREVCVUdfT0JKRUNUKHNyYywgIlVubG9jayIpOwogICAgIG1lbWJlcnMt
PmlzRmx1c2hpbmcgPSB0cnVlOwpAQCAtODQwLDcgKzgzOSw3IEBAIHN0YXRpYyBnYm9vbGVhbiB3
ZWJLaXRXZWJTcmNVbkxvY2soR3N0QmFzZVNyYyogYmFzZVNyYykKIHN0YXRpYyBnYm9vbGVhbiB3
ZWJLaXRXZWJTcmNVbkxvY2tTdG9wKEdzdEJhc2VTcmMqIGJhc2VTcmMpCiB7CiAgICAgV2ViS2l0
V2ViU3JjKiBzcmMgPSBXRUJLSVRfV0VCX1NSQyhiYXNlU3JjKTsKLSAgICBhdXRvIG1lbWJlcnMg
PSBob2xkTG9jayhzcmMtPnByaXYtPmRhdGFNdXRleCk7CisgICAgRGF0YU11dGV4TG9ja2VyIG1l
bWJlcnMgeyBzcmMtPnByaXYtPmRhdGFNdXRleCB9OwogICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3Jj
LCAiVW5sb2NrIHN0b3AiKTsKICAgICBtZW1iZXJzLT5pc0ZsdXNoaW5nID0gZmFsc2U7CiAgICAg
d2Via2l0V2ViU3JjUmVzZXQoc3JjLCBtZW1iZXJzLCBSZXNldFR5cGU6OlNvZnQpOwpAQCAtOTI2
LDE0ICs5MjUsMTQgQEAgc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjVXJpSGFuZGxlckluaXQoZ3Bv
aW50ZXIgZ0lmYWNlLCBncG9pbnRlcikKIHZvaWQgd2ViS2l0V2ViU3JjU2V0TWVkaWFQbGF5ZXIo
V2ViS2l0V2ViU3JjKiBzcmMsIFdlYkNvcmU6Ok1lZGlhUGxheWVyKiBwbGF5ZXIsIGNvbnN0IFN0
cmluZyYgcmVmZXJyZXIpCiB7CiAgICAgQVNTRVJUKHBsYXllcik7Ci0gICAgYXV0byBtZW1iZXJz
ID0gaG9sZExvY2soc3JjLT5wcml2LT5kYXRhTXV0ZXgpOworICAgIERhdGFNdXRleExvY2tlciBt
ZW1iZXJzIHsgc3JjLT5wcml2LT5kYXRhTXV0ZXggfTsKICAgICBtZW1iZXJzLT5wbGF5ZXIgPSBw
bGF5ZXI7CiAgICAgbWVtYmVycy0+cmVmZXJyZXIgPSByZWZlcnJlcjsKIH0KIAogYm9vbCB3ZWJL
aXRTcmNQYXNzZWRDT1JTQWNjZXNzQ2hlY2soV2ViS2l0V2ViU3JjKiBzcmMpCiB7Ci0gICAgYXV0
byBtZW1iZXJzID0gaG9sZExvY2soc3JjLT5wcml2LT5kYXRhTXV0ZXgpOworICAgIERhdGFNdXRl
eExvY2tlciBtZW1iZXJzIHsgc3JjLT5wcml2LT5kYXRhTXV0ZXggfTsKICAgICByZXR1cm4gbWVt
YmVycy0+ZGlkUGFzc0FjY2Vzc0NvbnRyb2xDaGVjazsKIH0KIApAQCAtOTg4LDcgKzk4Nyw3IEBA
IHZvaWQgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OnJlc3BvbnNlUmVjZWl2ZWQoUGxh
dGZvcm1NZWRpYVJlc291cmNlJiwgY29uCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAg
ICBXZWJLaXRXZWJTcmMqIHNyYyA9IFdFQktJVF9XRUJfU1JDKG1fc3JjLmdldCgpKTsKICAgICBX
ZWJLaXRXZWJTcmNQcml2YXRlKiBwcml2ID0gc3JjLT5wcml2OwotICAgIGF1dG8gbWVtYmVycyA9
IGhvbGRMb2NrKHByaXYtPmRhdGFNdXRleCk7CisgICAgRGF0YU11dGV4TG9ja2VyIG1lbWJlcnMg
eyBwcml2LT5kYXRhTXV0ZXggfTsKICAgICBpZiAobWVtYmVycy0+cmVxdWVzdE51bWJlciAhPSBt
X3JlcXVlc3ROdW1iZXIpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoU2hvdWxkQ29udGlu
dWVQb2xpY3lDaGVjazo6Tm8pOwogICAgICAgICByZXR1cm47CkBAIC0xMDk0LDcgKzEwOTMsNyBA
QCB2b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpkYXRhUmVjZWl2ZWQoUGxhdGZv
cm1NZWRpYVJlc291cmNlJiwgY29uc3QgYwogICAgIFdlYktpdFdlYlNyYyogc3JjID0gV0VCS0lU
X1dFQl9TUkMobV9zcmMuZ2V0KCkpOwogICAgIFdlYktpdFdlYlNyY1ByaXZhdGUqIHByaXYgPSBz
cmMtPnByaXY7CiAKLSAgICBhdXRvIG1lbWJlcnMgPSBob2xkTG9jayhwcml2LT5kYXRhTXV0ZXgp
OworICAgIERhdGFNdXRleExvY2tlciBtZW1iZXJzIHsgcHJpdi0+ZGF0YU11dGV4IH07CiAgICAg
aWYgKG1lbWJlcnMtPnJlcXVlc3ROdW1iZXIgIT0gbV9yZXF1ZXN0TnVtYmVyKQogICAgICAgICBy
ZXR1cm47CiAKQEAgLTExMzAsNyArMTEyOSw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VTdHJlYW1p
bmdDbGllbnQ6OmFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyCiB7
CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBXZWJLaXRXZWJTcmMqIHNyYyA9IFdF
QktJVF9XRUJfU1JDKG1fc3JjLmdldCgpKTsKLSAgICBhdXRvIG1lbWJlcnMgPSBob2xkTG9jayhz
cmMtPnByaXYtPmRhdGFNdXRleCk7CisgICAgRGF0YU11dGV4TG9ja2VyIG1lbWJlcnMgeyBzcmMt
PnByaXYtPmRhdGFNdXRleCB9OwogICAgIGlmIChtZW1iZXJzLT5yZXF1ZXN0TnVtYmVyICE9IG1f
cmVxdWVzdE51bWJlcikKICAgICAgICAgcmV0dXJuOwogCkBAIC0xMTQzLDcgKzExNDIsNyBAQCB2
b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50Ojpsb2FkRmFpbGVkKFBsYXRmb3JtTWVk
aWFSZXNvdXJjZSYsIGNvbnN0IFJlcwogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAg
ICAgV2ViS2l0V2ViU3JjKiBzcmMgPSBXRUJLSVRfV0VCX1NSQyhtX3NyYy5nZXQoKSk7Ci0gICAg
YXV0byBtZW1iZXJzID0gaG9sZExvY2soc3JjLT5wcml2LT5kYXRhTXV0ZXgpOworICAgIERhdGFN
dXRleExvY2tlciBtZW1iZXJzIHsgc3JjLT5wcml2LT5kYXRhTXV0ZXggfTsKICAgICBpZiAobWVt
YmVycy0+cmVxdWVzdE51bWJlciAhPSBtX3JlcXVlc3ROdW1iZXIpCiAgICAgICAgIHJldHVybjsK
IApAQCAtMTE2MCw3ICsxMTU5LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVu
dDo6bG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IE4KIHsKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIFdlYktpdFdlYlNyYyogc3JjID0gV0VCS0lUX1dF
Ql9TUkMobV9zcmMuZ2V0KCkpOwotICAgIGF1dG8gbWVtYmVycyA9IGhvbGRMb2NrKHNyYy0+cHJp
di0+ZGF0YU11dGV4KTsKKyAgICBEYXRhTXV0ZXhMb2NrZXIgbWVtYmVycyB7IHNyYy0+cHJpdi0+
ZGF0YU11dGV4IH07CiAgICAgaWYgKG1lbWJlcnMtPnJlcXVlc3ROdW1iZXIgIT0gbV9yZXF1ZXN0
TnVtYmVyKQogICAgICAgICByZXR1cm47CiAKQEAgLTExNzAsNyArMTE2OSw3IEBAIHZvaWQgQ2Fj
aGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmxvYWRGaW5pc2hlZChQbGF0Zm9ybU1lZGlhUmVz
b3VyY2UmLCBjb25zdCBOCiAKIGJvb2wgd2ViS2l0U3JjV291bGRUYWludE9yaWdpbihXZWJLaXRX
ZWJTcmMqIHNyYywgY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbikKIHsKLSAgICBhdXRvIG1l
bWJlcnMgPSBob2xkTG9jayhzcmMtPnByaXYtPmRhdGFNdXRleCk7CisgICAgRGF0YU11dGV4TG9j
a2VyIG1lbWJlcnMgeyBzcmMtPnByaXYtPmRhdGFNdXRleCB9OwogCiAgICAgYXV0byogY2FjaGVk
UmVzb3VyY2VTdHJlYW1pbmdDbGllbnQgPSByZWludGVycHJldF9jYXN0PENhY2hlZFJlc291cmNl
U3RyZWFtaW5nQ2xpZW50Kj4obWVtYmVycy0+cmVzb3VyY2UtPmNsaWVudCgpKTsKICAgICBmb3Ig
KGF1dG8mIHJlc3BvbnNlT3JpZ2luIDogY2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQtPnNl
Y3VyaXR5T3JpZ2lucygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291cmNlVHJhY2tHU3RyZWFtZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJjZVRy
YWNrR1N0cmVhbWVyLmNwcAppbmRleCA4NjJiMTY5NTE5NDdlZDU1YmRmYWQzMjM4ODcxOTdiYzZl
MGZkMzc2Li5kMTg3OTJjY2EyOTUxYWMxNjA0NThhM2I5ODgyOWNiNTdlODVlMWNmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlh
U291cmNlVHJhY2tHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFTb3VyY2VUcmFja0dTdHJlYW1lci5jcHAKQEAgLTM3
LDggKzM3LDYgQEAKIEdTVF9ERUJVR19DQVRFR09SWV9FWFRFUk4od2Via2l0X21zZV9kZWJ1Zyk7
CiAjZGVmaW5lIEdTVF9DQVRfREVGQVVMVCB3ZWJraXRfbXNlX2RlYnVnCiAKLXVzaW5nIFdURjo6
RGF0YU11dGV4OwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIE1lZGlhU291cmNlVHJhY2tHU3Ry
ZWFtZXI6Ok1lZGlhU291cmNlVHJhY2tHU3RyZWFtZXIoVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1l
cjo6VHJhY2tUeXBlIHR5cGUsIEF0b21TdHJpbmcgdHJhY2tJZCwgR1JlZlB0cjxHc3RDYXBzPiYm
IGluaXRpYWxDYXBzKQpAQCAtNjEsMjggKzU5LDI4IEBAIFJlZjxNZWRpYVNvdXJjZVRyYWNrR1N0
cmVhbWVyPiBNZWRpYVNvdXJjZVRyYWNrR1N0cmVhbWVyOjpjcmVhdGUoVHJhY2tQcml2YXRlQmFz
CiBib29sIE1lZGlhU291cmNlVHJhY2tHU3RyZWFtZXI6OmlzUmVhZHlGb3JNb3JlU2FtcGxlcygp
CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBhdXRvIHF1ZXVlID0gaG9sZExv
Y2sobV9xdWV1ZURhdGFNdXRleCk7CisgICAgRGF0YU11dGV4TG9ja2VyIHF1ZXVlIHsgbV9xdWV1
ZURhdGFNdXRleCB9OwogICAgIHJldHVybiAhcXVldWUtPmlzRnVsbCgpOwogfQogCiB2b2lkIE1l
ZGlhU291cmNlVHJhY2tHU3RyZWFtZXI6Om5vdGlmeVdoZW5SZWFkeUZvck1vcmVTYW1wbGVzKFRy
YWNrUXVldWU6Okxvd0xldmVsSGFuZGxlciYmIGhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKLSAgICBhdXRvIHF1ZXVlID0gaG9sZExvY2sobV9xdWV1ZURhdGFNdXRleCk7
CisgICAgRGF0YU11dGV4TG9ja2VyIHF1ZXVlIHsgbV9xdWV1ZURhdGFNdXRleCB9OwogICAgIHF1
ZXVlLT5ub3RpZnlXaGVuTG93TGV2ZWwoV1RGTW92ZShoYW5kbGVyKSk7CiB9CiAKIHZvaWQgTWVk
aWFTb3VyY2VUcmFja0dTdHJlYW1lcjo6ZW5xdWV1ZU9iamVjdChHUmVmUHRyPEdzdE1pbmlPYmpl
Y3Q+JiYgb2JqZWN0KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgYXV0byBx
dWV1ZSA9IGhvbGRMb2NrKG1fcXVldWVEYXRhTXV0ZXgpOworICAgIERhdGFNdXRleExvY2tlciBx
dWV1ZSB7IG1fcXVldWVEYXRhTXV0ZXggfTsKICAgICBxdWV1ZS0+ZW5xdWV1ZU9iamVjdChXVEZN
b3ZlKG9iamVjdCkpOwogfQogCiB2b2lkIE1lZGlhU291cmNlVHJhY2tHU3RyZWFtZXI6OmNsZWFy
UXVldWUoKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgYXV0byBxdWV1ZSA9
IGhvbGRMb2NrKG1fcXVldWVEYXRhTXV0ZXgpOworICAgIERhdGFNdXRleExvY2tlciBxdWV1ZSB7
IG1fcXVldWVEYXRhTXV0ZXggfTsKICAgICBxdWV1ZS0+Y2xlYXIoKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNv
dXJjZVRyYWNrR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvbXNlL01lZGlhU291cmNlVHJhY2tHU3RyZWFtZXIuaAppbmRleCA2YWU0MWM0YWEx
ZDExMzMxMDBkM2Y4ODk4NGQxZDFjOTQ2NjBjYjQ4Li44ZGM1ZjU0MTFhMzVlMGVmMzQxMDdkMGJl
YTRlYTJlYzQ2OGQ5ZmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291cmNlVHJhY2tHU3RyZWFtZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291cmNlVHJh
Y2tHU3RyZWFtZXIuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgVHJhY2tQcml2YXRl
QmFzZUdTdHJlYW1lcjo6VHJhY2tUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0K
ICAgICBBdG9tU3RyaW5nIHRyYWNrSWQoKSBjb25zdCB7IHJldHVybiBtX3RyYWNrSWQ7IH0KICAg
ICBHUmVmUHRyPEdzdENhcHM+JiBpbml0aWFsQ2FwcygpIHsgcmV0dXJuIG1faW5pdGlhbENhcHM7
IH0KLSAgICBXVEY6OkRhdGFNdXRleDxUcmFja1F1ZXVlPiYgcXVldWVEYXRhTXV0ZXgoKSB7IHJl
dHVybiBtX3F1ZXVlRGF0YU11dGV4OyB9CisgICAgRGF0YU11dGV4PFRyYWNrUXVldWU+JiBxdWV1
ZURhdGFNdXRleCgpIHsgcmV0dXJuIG1fcXVldWVEYXRhTXV0ZXg7IH0KIAogICAgIGJvb2wgaXNS
ZWFkeUZvck1vcmVTYW1wbGVzKCk7CiAKQEAgLTY5LDcgKzY5LDcgQEAgcHJpdmF0ZToKICAgICBU
cmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpUcmFja1R5cGUgbV90eXBlOwogICAgIEF0b21TdHJp
bmcgbV90cmFja0lkOwogICAgIEdSZWZQdHI8R3N0Q2Fwcz4gbV9pbml0aWFsQ2FwczsKLSAgICBX
VEY6OkRhdGFNdXRleDxUcmFja1F1ZXVlPiBtX3F1ZXVlRGF0YU11dGV4OworICAgIERhdGFNdXRl
eDxUcmFja1F1ZXVlPiBtX3F1ZXVlRGF0YU11dGV4OwogCiAgICAgYm9vbCBtX2lzUmVtb3ZlZCB7
IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL21zZS9XZWJLaXRNZWRpYVNvdXJjZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1dlYktpdE1lZGlhU291cmNl
R1N0cmVhbWVyLmNwcAppbmRleCA3ZjBhOWQ0YWNiMGYzMTJmYzVkMGViM2I5NmQ2NDVlNDZjMGNk
NWY5Li43ZmNmNDZhNWMxZTZhZTBmZWY2YThhNDlhM2M5MjNmODlkNDg2Y2I1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1dlYktpdE1l
ZGlhU291cmNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvbXNlL1dlYktpdE1lZGlhU291cmNlR1N0cmVhbWVyLmNwcApAQCAtMTg0
LDggKzE4NCw4IEBAIHN0cnVjdCBTdHJlYW0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
U3RyZWFtPiB7CiAgICAgICAgIEdzdFNlZ21lbnQgc2VnbWVudDsKICAgICAgICAgR1JlZlB0cjxH
c3RDYXBzPiBwZW5kaW5nSW5pdGlhbENhcHM7CiAgICAgICAgIEdSZWZQdHI8R3N0Q2Fwcz4gcHJl
dmlvdXNDYXBzOyAvLyBDYXBzIGZyb20gZW5xdWV1ZWQgc2FtcGxlcyBhcmUgY29tcGFyZWQgdG8g
dGhlc2UgdG8gcHVzaCBDQVBTIGV2ZW50cyBhcyBuZWVkZWQuCi0gICAgICAgIFVuY2hlY2tlZENv
bmRpdGlvbiBwYWRMaW5rZWRPckZsdXNoZWRDb25kaXRpb247Ci0gICAgICAgIFVuY2hlY2tlZENv
bmRpdGlvbiBxdWV1ZUNoYW5nZWRPckZsdXNoZWRDb25kaXRpb247CisgICAgICAgIENvbmRpdGlv
biBwYWRMaW5rZWRPckZsdXNoZWRDb25kaXRpb247CisgICAgICAgIENvbmRpdGlvbiBxdWV1ZUNo
YW5nZWRPckZsdXNoZWRDb25kaXRpb247CiAgICAgICAgIGJvb2wgaXNGbHVzaGluZyB7IGZhbHNl
IH07CiAKICAgICAgICAgLy8gRmx1c2hlcyBiZWZvcmUgYW55IGJ1ZmZlciBoYXMgYmVlbiBwb3Bw
ZWQgZnJvbSB0aGUgcXVldWUgYW5kIHNlbnQgZG93bnN0cmVhbSBjYW4gYmUgYXZvaWRlZCBqdXN0
CkBAIC0zNDQsNyArMzQ0LDcgQEAgc3RhdGljIGdib29sZWFuIHdlYktpdE1lZGlhU3JjQWN0aXZh
dGVNb2RlKEdzdFBhZCogcGFkLCBHc3RPYmplY3QqIHNvdXJjZSwgR3N0UGEKICAgICAgICAgLy8g
VW5ibG9jayB0aGUgc3RyZWFtaW5nIHRocmVhZC4KICAgICAgICAgUmVmUHRyPFN0cmVhbT4mIHN0
cmVhbSA9IFdFQktJVF9NRURJQV9TUkNfUEFEKHBhZCktPnByaXYtPnN0cmVhbTsKICAgICAgICAg
ewotICAgICAgICAgICAgYXV0byBzdHJlYW1pbmdNZW1iZXJzID0gaG9sZExvY2soc3RyZWFtLT5z
dHJlYW1pbmdNZW1iZXJzRGF0YU11dGV4KTsKKyAgICAgICAgICAgIERhdGFNdXRleExvY2tlciBz
dHJlYW1pbmdNZW1iZXJzIHsgc3RyZWFtLT5zdHJlYW1pbmdNZW1iZXJzRGF0YU11dGV4IH07CiAg
ICAgICAgICAgICBzdHJlYW1pbmdNZW1iZXJzLT5pc0ZsdXNoaW5nID0gdHJ1ZTsKICAgICAgICAg
ICAgIHN0cmVhbWluZ01lbWJlcnMtPnBhZExpbmtlZE9yRmx1c2hlZENvbmRpdGlvbi5ub3RpZnlP
bmUoKTsKICAgICAgICAgICAgIHN0cmVhbWluZ01lbWJlcnMtPnF1ZXVlQ2hhbmdlZE9yRmx1c2hl
ZENvbmRpdGlvbi5ub3RpZnlPbmUoKTsKQEAgLTM1NCw3ICszNTQsNyBAQCBzdGF0aWMgZ2Jvb2xl
YW4gd2ViS2l0TWVkaWFTcmNBY3RpdmF0ZU1vZGUoR3N0UGFkKiBwYWQsIEdzdE9iamVjdCogc291
cmNlLCBHc3RQYQogICAgICAgICAvLyBPdGhlcndpc2UgYSBkZWFkbG9jayB3b3VsZCBvY2N1ciBh
cyB0aGUgbmV4dCBmdW5jdGlvbiB0cmllcyB0byBqb2luIHRoZSB0aHJlYWQuCiAgICAgICAgIGdz
dF9wYWRfc3RvcF90YXNrKHBhZCk7CiAgICAgICAgIHsKLSAgICAgICAgICAgIGF1dG8gc3RyZWFt
aW5nTWVtYmVycyA9IGhvbGRMb2NrKHN0cmVhbS0+c3RyZWFtaW5nTWVtYmVyc0RhdGFNdXRleCk7
CisgICAgICAgICAgICBEYXRhTXV0ZXhMb2NrZXIgc3RyZWFtaW5nTWVtYmVycyB7IHN0cmVhbS0+
c3RyZWFtaW5nTWVtYmVyc0RhdGFNdXRleCB9OwogICAgICAgICAgICAgc3RyZWFtaW5nTWVtYmVy
cy0+aXNGbHVzaGluZyA9IGZhbHNlOwogICAgICAgICB9CiAgICAgfQpAQCAtMzY0LDcgKzM2NCw3
IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRNZWRpYVNyY0FjdGl2YXRlTW9kZShHc3RQYWQqIHBh
ZCwgR3N0T2JqZWN0KiBzb3VyY2UsIEdzdFBhCiBzdGF0aWMgdm9pZCB3ZWJLaXRNZWRpYVNyY1Bh
ZExpbmtlZChHc3RQYWQqIHBhZCwgR3N0UGFkKiwgdm9pZCopCiB7CiAgICAgUmVmUHRyPFN0cmVh
bT4mIHN0cmVhbSA9IFdFQktJVF9NRURJQV9TUkNfUEFEKHBhZCktPnByaXYtPnN0cmVhbTsKLSAg
ICBhdXRvIHN0cmVhbWluZ01lbWJlcnMgPSBob2xkTG9jayhzdHJlYW0tPnN0cmVhbWluZ01lbWJl
cnNEYXRhTXV0ZXgpOworICAgIERhdGFNdXRleExvY2tlciBzdHJlYW1pbmdNZW1iZXJzIHsgc3Ry
ZWFtLT5zdHJlYW1pbmdNZW1iZXJzRGF0YU11dGV4IH07CiAgICAgc3RyZWFtaW5nTWVtYmVycy0+
cGFkTGlua2VkT3JGbHVzaGVkQ29uZGl0aW9uLm5vdGlmeU9uZSgpOwogfQogCkBAIC0zNzQsNyAr
Mzc0LDcgQEAgc3RhdGljIHZvaWQgd2ViS2l0TWVkaWFTcmNMb29wKHZvaWQqIHVzZXJEYXRhKQog
ICAgIEdzdFBhZCogcGFkID0gR1NUX1BBRCh1c2VyRGF0YSk7CiAgICAgUmVmUHRyPFN0cmVhbT4m
IHN0cmVhbSA9IFdFQktJVF9NRURJQV9TUkNfUEFEKHBhZCktPnByaXYtPnN0cmVhbTsKIAotICAg
IGF1dG8gc3RyZWFtaW5nTWVtYmVycyA9IGhvbGRMb2NrKHN0cmVhbS0+c3RyZWFtaW5nTWVtYmVy
c0RhdGFNdXRleCk7CisgICAgRGF0YU11dGV4TG9ja2VyIHN0cmVhbWluZ01lbWJlcnMgeyBzdHJl
YW0tPnN0cmVhbWluZ01lbWJlcnNEYXRhTXV0ZXggfTsKICAgICBpZiAoc3RyZWFtaW5nTWVtYmVy
cy0+aXNGbHVzaGluZykgewogICAgICAgICBnc3RfcGFkX3BhdXNlX3Rhc2socGFkKTsKICAgICAg
ICAgcmV0dXJuOwpAQCAtNDQwLDcgKzQ0MCw3IEBAIHN0YXRpYyB2b2lkIHdlYktpdE1lZGlhU3Jj
TG9vcCh2b2lkKiB1c2VyRGF0YSkKIAogICAgIEdSZWZQdHI8R3N0TWluaU9iamVjdD4gb2JqZWN0
OwogICAgIHsKLSAgICAgICAgYXV0byBxdWV1ZSA9IGhvbGRMb2NrKHN0cmVhbS0+dHJhY2stPnF1
ZXVlRGF0YU11dGV4KCkpOworICAgICAgICBEYXRhTXV0ZXhMb2NrZXIgcXVldWUgeyBzdHJlYW0t
PnRyYWNrLT5xdWV1ZURhdGFNdXRleCgpIH07CiAgICAgICAgIGlmICghcXVldWUtPmlzRW1wdHko
KSkgewogICAgICAgICAgICAgb2JqZWN0ID0gcXVldWUtPnBvcCgpOwogICAgICAgICAgICAgc3Ry
ZWFtaW5nTWVtYmVycy0+aGFzUG9wcGVkRmlyc3RPYmplY3QgPSB0cnVlOwpAQCAtNDQ4LDcgKzQ0
OCw3IEBAIHN0YXRpYyB2b2lkIHdlYktpdE1lZGlhU3JjTG9vcCh2b2lkKiB1c2VyRGF0YSkKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHF1ZXVlLT5ub3RpZnlXaGVuTm90RW1wdHkoWyZv
YmplY3QsIHN0cmVhbV0oR1JlZlB0cjxHc3RNaW5pT2JqZWN0PiYmIHJlY2VpdmVkT2JqZWN0KSB7
CiAgICAgICAgICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICAgICAgICAgICAg
ICBhdXRvIHN0cmVhbWluZ01lbWJlcnMgPSBob2xkTG9jayhzdHJlYW0tPnN0cmVhbWluZ01lbWJl
cnNEYXRhTXV0ZXgpOworICAgICAgICAgICAgICAgIERhdGFNdXRleExvY2tlciBzdHJlYW1pbmdN
ZW1iZXJzIHsgc3RyZWFtLT5zdHJlYW1pbmdNZW1iZXJzRGF0YU11dGV4IH07CiAgICAgICAgICAg
ICAgICAgQVNTRVJUKCFzdHJlYW1pbmdNZW1iZXJzLT5pc0ZsdXNoaW5nKTsKIAogICAgICAgICAg
ICAgICAgIG9iamVjdCA9IFdURk1vdmUocmVjZWl2ZWRPYmplY3QpOwpAQCAtNDY1LDcgKzQ2NSw3
IEBAIHN0YXRpYyB2b2lkIHdlYktpdE1lZGlhU3JjTG9vcCh2b2lkKiB1c2VyRGF0YSkKICAgICB9
KTsKICAgICB7CiAgICAgICAgIC8vIEVuc3VyZSB0aGF0IG5vdGlmeVdoZW5Ob3RFbXB0eSgpJ3Mg
Y2FsbGJhY2sgKGlmIGFueSkgaXMgY2xlYXJlZCBhZnRlciB0aGlzIHBvaW50LgotICAgICAgICBh
dXRvIHF1ZXVlID0gaG9sZExvY2soc3RyZWFtLT50cmFjay0+cXVldWVEYXRhTXV0ZXgoKSk7Cisg
ICAgICAgIERhdGFNdXRleExvY2tlciBxdWV1ZSB7IHN0cmVhbS0+dHJhY2stPnF1ZXVlRGF0YU11
dGV4KCkgfTsKICAgICAgICAgcXVldWUtPnJlc2V0Tm90RW1wdHlIYW5kbGVyKCk7CiAgICAgfQog
ICAgIGlmIChzdHJlYW1pbmdNZW1iZXJzLT5pc0ZsdXNoaW5nKSB7CkBAIC01MDksNyArNTA5LDcg
QEAgc3RhdGljIHZvaWQgd2ViS2l0TWVkaWFTcmNMb29wKHZvaWQqIHVzZXJEYXRhKQogICAgICAg
ICB9CiAKICAgICAgICAgLy8gUHVzaCB0aGUgYnVmZmVyIHdpdGhvdXQgdGhlIHN0cmVhbWluZ01l
bWJlcnMgbG9jayBzbyB0aGF0IGZsdXNoZXMgY2FuIGhhcHBlbiB3aGlsZSBpdCB0cmF2ZWxzIGRv
d25zdHJlYW0uCi0gICAgICAgIHN0cmVhbWluZ01lbWJlcnMubG9ja0hvbGRlcigpLnVubG9ja0Vh
cmx5KCk7CisgICAgICAgIHN0cmVhbWluZ01lbWJlcnMudW5sb2NrRWFybHkoKTsKIAogICAgICAg
ICBBU1NFUlQoR1NUX0JVRkZFUl9QVFNfSVNfVkFMSUQoYnVmZmVyLmdldCgpKSk7CiAgICAgICAg
IEdTVF9UUkFDRV9PQkpFQ1QocGFkLCAiUHVzaGluZyBidWZmZXIgZG93bnN0cmVhbTogJSIgR1NU
X1BUUl9GT1JNQVQsIGJ1ZmZlci5nZXQoKSk7CkBAIC01MjUsNyArNTI1LDcgQEAgc3RhdGljIHZv
aWQgd2ViS2l0TWVkaWFTcmNMb29wKHZvaWQqIHVzZXJEYXRhKQogICAgICAgICAvLyBFT1MgZXZl
bnRzIGFuZCBvdGhlciBlbnF1ZXVlZCBldmVudHMgYXJlIGFsc28gc2VudCB1bmxvY2tlZCBzbyB0
aGV5IGNhbiByZWFjdCB0byBmbHVzaGVzIGlmIG5lY2Vzc2FyeS4KICAgICAgICAgR1JlZlB0cjxH
c3RFdmVudD4gZXZlbnQgPSBHUmVmUHRyPEdzdEV2ZW50PihHU1RfRVZFTlQob2JqZWN0LmxlYWtS
ZWYoKSkpOwogCi0gICAgICAgIHN0cmVhbWluZ01lbWJlcnMubG9ja0hvbGRlcigpLnVubG9ja0Vh
cmx5KCk7CisgICAgICAgIHN0cmVhbWluZ01lbWJlcnMudW5sb2NrRWFybHkoKTsKICAgICAgICAg
R1NUX0RFQlVHX09CSkVDVChwYWQsICJQdXNoaW5nIGV2ZW50IGRvd25zdHJlYW06ICUiIEdTVF9Q
VFJfRk9STUFULCBldmVudC5nZXQoKSk7CiAgICAgICAgIGJvb2wgZXZlbnRIYW5kbGVkID0gZ3N0
X3BhZF9wdXNoX2V2ZW50KHBhZCwgR1JlZlB0cjxHc3RFdmVudD4oZXZlbnQpLmxlYWtSZWYoKSk7
CiAgICAgICAgIGlmICghZXZlbnRIYW5kbGVkKQpAQCAtNTQwLDExICs1NDAsMTEgQEAgc3RhdGlj
IHZvaWQgd2ViS2l0TWVkaWFTcmNTdHJlYW1GbHVzaChTdHJlYW0qIHN0cmVhbSwgYm9vbCBpc1Nl
ZWtpbmdGbHVzaCkKICAgICBib29sIHNraXBGbHVzaCA9IGZhbHNlOwogCiAgICAgewotICAgICAg
ICBhdXRvIHN0cmVhbWluZ01lbWJlcnMgPSBob2xkTG9jayhzdHJlYW0tPnN0cmVhbWluZ01lbWJl
cnNEYXRhTXV0ZXgpOworICAgICAgICBEYXRhTXV0ZXhMb2NrZXIgc3RyZWFtaW5nTWVtYmVycyB7
IHN0cmVhbS0+c3RyZWFtaW5nTWVtYmVyc0RhdGFNdXRleCB9OwogCiAgICAgICAgIGlmICghc3Ry
ZWFtaW5nTWVtYmVycy0+aGFzUG9wcGVkRmlyc3RPYmplY3QpIHsKICAgICAgICAgICAgIEdTVF9E
RUJVR19PQkpFQ1Qoc3RyZWFtLT5zb3VyY2UsICJGbHVzaCByZXF1ZXN0IGZvciBzdHJlYW0gJyVz
JyBvY2N1cnJlZCBiZWZvcmUgaGFzUG9wcGVkRmlyc3RPYmplY3QsIGp1c3QgY2xlYXJpbmcgdGhl
IHF1ZXVlIGFuZCByZWFkanVzdGluZyB0aGUgc2VnbWVudC4iLCBzdHJlYW0tPnRyYWNrLT50cmFj
a0lkKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgICAgICBhdXRvIHF1ZXVlID0g
aG9sZExvY2soc3RyZWFtLT50cmFjay0+cXVldWVEYXRhTXV0ZXgoKSk7CisgICAgICAgICAgICBE
YXRhTXV0ZXhMb2NrZXIgcXVldWUgeyBzdHJlYW0tPnRyYWNrLT5xdWV1ZURhdGFNdXRleCgpIH07
CiAgICAgICAgICAgICAvLyBXZSB1c2UgY2xlYXIoKSBpbnN0ZWFkIG9mIGZsdXNoKCkgYmVjYXVz
ZSB0aGUgV2ViS2l0TWVkaWFTcmMgc3RyZWFtaW5nIHRocmVhZCBjb3VsZCBiZSB3YWl0aW5nCiAg
ICAgICAgICAgICAvLyBmb3IgdGhlIHF1ZXVlLiBmbHVzaCgpIHdvdWxkIGNhbmNlbCB0aGUgbm90
RW1wdHlDYWxsYmFjayB0aGVyZWZvcmUgbGVhdmluZyB0aGUgc3RyZWFtaW5nIHRocmVhZAogICAg
ICAgICAgICAgLy8gc3R1Y2sgd2FpdGluZyBmb3JldmVyLgpAQCAtNTU4LDggKzU1OCw4IEBAIHN0
YXRpYyB2b2lkIHdlYktpdE1lZGlhU3JjU3RyZWFtRmx1c2goU3RyZWFtKiBzdHJlYW0sIGJvb2wg
aXNTZWVraW5nRmx1c2gpCiAgICAgICAgIC8vIHdoaWNoIHdpbGwga2VlcGluZyB0aGUgc3RyZWFt
aW5nIHRocmVhZCBpZGxlLgogICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHN0cmVhbS0+cGFkLmdl
dCgpLCAiVGFraW5nIHRoZSBTdHJlYW1pbmdNZW1iZXJzIG11dGV4IGFuZCBzZXR0aW5nIGlzRmx1
c2hpbmcgPSB0cnVlLiIpOwogICAgICAgICB7Ci0gICAgICAgICAgICBhdXRvIHN0cmVhbWluZ01l
bWJlcnMgPSBob2xkTG9jayhzdHJlYW0tPnN0cmVhbWluZ01lbWJlcnNEYXRhTXV0ZXgpOwotICAg
ICAgICAgICAgYXV0byBxdWV1ZSA9IGhvbGRMb2NrKHN0cmVhbS0+dHJhY2stPnF1ZXVlRGF0YU11
dGV4KCkpOworICAgICAgICAgICAgRGF0YU11dGV4TG9ja2VyIHN0cmVhbWluZ01lbWJlcnMgeyBz
dHJlYW0tPnN0cmVhbWluZ01lbWJlcnNEYXRhTXV0ZXggfTsKKyAgICAgICAgICAgIERhdGFNdXRl
eExvY2tlciBxdWV1ZSB7IHN0cmVhbS0+dHJhY2stPnF1ZXVlRGF0YU11dGV4KCkgfTsKIAogICAg
ICAgICAgICAgc3RyZWFtaW5nTWVtYmVycy0+aXNGbHVzaGluZyA9IHRydWU7CiAgICAgICAgICAg
ICBxdWV1ZS0+Zmx1c2goKTsgLy8gQ2xlYXIgdGhlIHF1ZXVlIGFuZCBjYW5jZWwgYW55IHdhaXRp
bmcgY2FsbGJhY2suCkBAIC01ODEsNyArNTgxLDcgQEAgc3RhdGljIHZvaWQgd2ViS2l0TWVkaWFT
cmNTdHJlYW1GbHVzaChTdHJlYW0qIHN0cmVhbSwgYm9vbCBpc1NlZWtpbmdGbHVzaCkKICAgICAg
ICAgLy8gSW4gdGhlIGNhc2Ugb2Ygc2Vla2luZyBmbHVzaCB3ZSBhcmUgcmVzZXR0aW5nIHRoZSB0
aW1lbGluZSAoc2VlIHRoZSBmbHVzaCBzdG9wIGxhdGVyKS4KICAgICAgICAgLy8gVGhlIHJlc3Vs
dGluZyBzZWdtZW50IGlzIGJyYW5kIG5ldywgYnV0IHdpdGggYSBkaWZmZXJlbnQgc3RhcnQgdGlt
ZS4KICAgICAgICAgV2ViS2l0TWVkaWFTcmNQcml2YXRlKiBwcml2ID0gc3RyZWFtLT5zb3VyY2Ut
PnByaXY7Ci0gICAgICAgIGF1dG8gc3RyZWFtaW5nTWVtYmVycyA9IGhvbGRMb2NrKHN0cmVhbS0+
c3RyZWFtaW5nTWVtYmVyc0RhdGFNdXRleCk7CisgICAgICAgIERhdGFNdXRleExvY2tlciBzdHJl
YW1pbmdNZW1iZXJzIHsgc3RyZWFtLT5zdHJlYW1pbmdNZW1iZXJzRGF0YU11dGV4IH07CiAgICAg
ICAgIHN0cmVhbWluZ01lbWJlcnMtPnNlZ21lbnQuYmFzZSA9IDA7CiAgICAgICAgIHN0cmVhbWlu
Z01lbWJlcnMtPnNlZ21lbnQucmF0ZSA9IHByaXYtPnJhdGU7CiAgICAgICAgIHN0cmVhbWluZ01l
bWJlcnMtPnNlZ21lbnQuc3RhcnQgPSBzdHJlYW1pbmdNZW1iZXJzLT5zZWdtZW50LnRpbWUgPSBw
cml2LT5zdGFydFRpbWU7CkBAIC01OTUsNyArNTk1LDcgQEAgc3RhdGljIHZvaWQgd2ViS2l0TWVk
aWFTcmNTdHJlYW1GbHVzaChTdHJlYW0qIHN0cmVhbSwgYm9vbCBpc1NlZWtpbmdGbHVzaCkKICAg
ICAgICAgLy8gR1NUX0NMT0NLX1RJTUVfTk9ORSBpcyByZXR1cm5lZCB3aGVuIHRoZSBwaXBlbGlu
ZSBpcyBub3QgeWV0IHByZS1yb2xsZWQgKGUuZy4ganVzdCBhZnRlciBhIHNlZWspLiBJbiB0aGlz
IGNhc2UKICAgICAgICAgLy8gd2UgZG9uJ3QgbmVlZCB0byBhZGp1c3QgdGhlIHNlZ21lbnQgdGhv
dWdoLCBhcyBydW5uaW5nIHRpbWUgaGFzIG5vdCBhZHZhbmNlZC4KICAgICAgICAgaWYgKEdTVF9D
TE9DS19USU1FX0lTX1ZBTElEKHBpcGVsaW5lU3RyZWFtVGltZSkpIHsKLSAgICAgICAgICAgIGF1
dG8gc3RyZWFtaW5nTWVtYmVycyA9IGhvbGRMb2NrKHN0cmVhbS0+c3RyZWFtaW5nTWVtYmVyc0Rh
dGFNdXRleCk7CisgICAgICAgICAgICBEYXRhTXV0ZXhMb2NrZXIgc3RyZWFtaW5nTWVtYmVycyB7
IHN0cmVhbS0+c3RyZWFtaW5nTWVtYmVyc0RhdGFNdXRleCB9OwogICAgICAgICAgICAgLy8gV2Ug
bmVlZCB0byBpbmNyZWFzZSB0aGUgYmFzZSBieSB0aGUgcnVubmluZyB0aW1lIGFjY3VtdWxhdGVk
IGR1cmluZyB0aGUgcHJldmlvdXMgc2VnbWVudC4KIAogICAgICAgICAgICAgR3N0Q2xvY2tUaW1l
IHBpcGVsaW5lUnVubmluZ1RpbWUgPSBnc3Rfc2VnbWVudF90b19ydW5uaW5nX3RpbWUoJnN0cmVh
bWluZ01lbWJlcnMtPnNlZ21lbnQsIEdTVF9GT1JNQVRfVElNRSwgcGlwZWxpbmVTdHJlYW1UaW1l
KTsKQEAgLTYxNCw3ICs2MTQsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRNZWRpYVNyY1N0cmVhbUZs
dXNoKFN0cmVhbSogc3RyZWFtLCBib29sIGlzU2Vla2luZ0ZsdXNoKQogICAgICAgICBHU1RfUEFE
X1NUUkVBTV9MT0NLKHN0cmVhbS0+cGFkLmdldCgpKTsKICAgICAgICAgewogICAgICAgICAgICAg
R1NUX0RFQlVHX09CSkVDVChzdHJlYW0tPnBhZC5nZXQoKSwgIlRha2luZyB0aGUgU3RyZWFtaW5n
TWVtYmVycyBtdXRleCBhZ2Fpbi4iKTsKLSAgICAgICAgICAgIGF1dG8gc3RyZWFtaW5nTWVtYmVy
cyA9IGhvbGRMb2NrKHN0cmVhbS0+c3RyZWFtaW5nTWVtYmVyc0RhdGFNdXRleCk7CisgICAgICAg
ICAgICBEYXRhTXV0ZXhMb2NrZXIgc3RyZWFtaW5nTWVtYmVycyB7IHN0cmVhbS0+c3RyZWFtaW5n
TWVtYmVyc0RhdGFNdXRleCB9OwogICAgICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChzdHJlYW0t
PnBhZC5nZXQoKSwgIlN0cmVhbWluZ01lbWJlcnMgbXV0ZXggdGFrZW4sIHVzaW5nIGl0IHRvIHNl
dCBpc0ZsdXNoaW5nID0gZmFsc2UuIik7CiAgICAgICAgICAgICBzdHJlYW1pbmdNZW1iZXJzLT5p
c0ZsdXNoaW5nID0gZmFsc2U7CiAgICAgICAgICAgICBzdHJlYW1pbmdNZW1iZXJzLT5kb2VzTmVl
ZFNlZ21lbnRFdmVudCA9IHRydWU7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggYTViYzk3MTg4MTY5MmE4Yjk5MjlmMmE5ZjZmOGIzMjM3NzM0N2Uz
NS4uYjc1Zjc3NDk5NTY4NDVlMzRiZTZmMmE1NDIxMDY4MDcwMDExMTAxYiAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisy
MDIxLTA1LTI5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRv
cHQgY2xhbmcgdGhyZWFkIHNhZmV0eSBhbm5vdGF0aW9uIGluIFdURjo6RGF0YU11dGV4CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY0MzEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgQVBJIHRl
c3QgZHVlIHRvIERhdGFNdXRleCBBUEkgY2hhbmdlcy4KKworICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL0RhdGFNdXRleC5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNU
KToKKwogMjAyMS0wNS0yOCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgQ2xpZW50cyBvZiBvcHRpb25hbCBzaG91bGQgdXNlIGhhc192YWx1ZSBpbnN0ZWFkIG9mIHJl
bHlpbmcgb24gaGFzVmFsdWUgbWFjcm8KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL0RhdGFNdXRleC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9E
YXRhTXV0ZXguY3BwCmluZGV4IGI3ODBiOTY5NmNjMzE1NDA5ODM5MGZmYjRlODc0MzI2YTAyMmZk
MDkuLjdlYjdjM2JjNmI1YjlkMDkzMjEwMzYzYzQ3NWFiNjI0NDQ1NmVjNTMgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0RhdGFNdXRleC5jcHAKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRGF0YU11dGV4LmNwcApAQCAtMzAsOCArMzAsNiBAQAog
I2RlZmluZSBFTkFCTEVfREFUQV9NVVRFWF9DSEVDS1MgMQogI2luY2x1ZGUgPHd0Zi9EYXRhTXV0
ZXguaD4KIAotdXNpbmcgbmFtZXNwYWNlIFdURjsKLQogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkg
ewogCiBzdHJ1Y3QgTXlTdHJ1Y3R1cmUgewpAQCAtNDIsOSArNDAsOSBAQCBURVNUKFdURl9EYXRh
TXV0ZXgsIFRha2luZ1RoZU11dGV4KQogewogICAgIERhdGFNdXRleDxNeVN0cnVjdHVyZT4gbXlE
YXRhTXV0ZXg7CiAKLSAgICBPd25lckF3YXJlTG9jayogbXV0ZXg7CisgICAgTG9jayogbXV0ZXg7
CiAgICAgewotICAgICAgICBEYXRhTXV0ZXg8TXlTdHJ1Y3R1cmU+OjpMb2NrZWRXcmFwcGVyIHdy
YXBwZXIobXlEYXRhTXV0ZXgpOworICAgICAgICBEYXRhTXV0ZXhMb2NrZXIgd3JhcHBlciB7IG15
RGF0YU11dGV4IH07CiAgICAgICAgIG11dGV4ID0gJndyYXBwZXIubXV0ZXgoKTsKICAgICAgICAg
QVNTRVJUX1RSVUUobXV0ZXgtPmlzTG9ja2VkKCkpOwogICAgICAgICB3cmFwcGVyLT5udW1iZXIg
PSA1OwpAQCAtNTcsNyArNTUsNyBAQCBURVNUKFdURl9EYXRhTXV0ZXgsIFRha2luZ1RoZU11dGV4
KQogICAgIEFTU0VSVF9GQUxTRShtdXRleC0+aXNMb2NrZWQoKSk7CiAKICAgICB7Ci0gICAgICAg
IERhdGFNdXRleDxNeVN0cnVjdHVyZT46OkxvY2tlZFdyYXBwZXIgd3JhcHBlcihteURhdGFNdXRl
eCk7CisgICAgICAgIERhdGFNdXRleExvY2sgd3JhcHBlciB7IG15RGF0YU11dGV4IH07CiAgICAg
ICAgIEVYUEVDVF9FUSh3cmFwcGVyLT5udW1iZXIsIDUpOwogICAgIH0KIH0KQEAgLTY4LDcgKzY2
LDcgQEAgVEVTVChXVEZfRGF0YU11dGV4LCBSdW5VbmxvY2tlZElsbGVnYWxBY2Nlc3NEZWF0aFRl
c3QpCiB7CiAgICAgOjp0ZXN0aW5nOjpGTEFHU19ndGVzdF9kZWF0aF90ZXN0X3N0eWxlID0gInRo
cmVhZHNhZmUiOwogICAgIERhdGFNdXRleDxNeVN0cnVjdHVyZT4gbXlEYXRhTXV0ZXg7Ci0gICAg
RGF0YU11dGV4PE15U3RydWN0dXJlPjo6TG9ja2VkV3JhcHBlciB3cmFwcGVyKG15RGF0YU11dGV4
KTsKKyAgICBEYXRhTXV0ZXhMb2NrZXIgd3JhcHBlciB7IG15RGF0YU11dGV4IH07CiAgICAgd3Jh
cHBlci0+bnVtYmVyID0gNTsKIAogICAgIEFTU0VSVF9ERUFUSCh3cmFwcGVyLnJ1blVubG9ja2Vk
KFsmXSgpIHsKQEAgLTgwLDggKzc4LDggQEAgVEVTVChXVEZfRGF0YU11dGV4LCBEb3VibGVMb2Nr
RGVhdGhUZXN0KQogewogICAgIDo6dGVzdGluZzo6RkxBR1NfZ3Rlc3RfZGVhdGhfdGVzdF9zdHls
ZSA9ICJ0aHJlYWRzYWZlIjsKICAgICBEYXRhTXV0ZXg8TXlTdHJ1Y3R1cmU+IG15RGF0YU11dGV4
OwotICAgIERhdGFNdXRleDxNeVN0cnVjdHVyZT46OkxvY2tlZFdyYXBwZXIgd3JhcHBlcjEobXlE
YXRhTXV0ZXgpOwotICAgIEFTU0VSVF9ERUFUSChEYXRhTXV0ZXg8TXlTdHJ1Y3R1cmU+OjpMb2Nr
ZWRXcmFwcGVyIHdyYXBwZXIyKG15RGF0YU11dGV4KSwgIiIpOworICAgIERhdGFNdXRleExvY2tl
ciB3cmFwcGVyMSB7IG15RGF0YU11dGV4IH07CisgICAgQVNTRVJUX0RFQVRIKERhdGFNdXRleExv
Y2tlciB3cmFwcGVyMiB7IG15RGF0YU11dGV4IH0sICIiKTsKIH0KICNlbmRpZgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430124</attachid>
            <date>2021-05-29 20:16:47 -0700</date>
            <delta_ts>2021-05-29 20:21:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226431-20210529201646.patch</filename>
            <type>text/plain</type>
            <size>35770</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MjQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDk1NjVmYTExNTA1YTQ4N2I2ZTVhNThl
MzMzNzEwZGNhYjcwYWM5NmIuLjJkMzFjYTljYzA0OWUyMjExOGMyOGM1MDcxZmZlNWQ5ZTc0MTg2
OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMDUtMjkgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBBZG9wdCBjbGFuZyB0aHJlYWQgc2FmZXR5IGFubm90YXRp
b25zIGluIFdURjo6RGF0YU11dGV4CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjY0MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZG9wdCBjbGFuZyB0aHJlYWQgc2FmZXR5IGFubm90YXRpb25zIGluIFdU
Rjo6RGF0YU11dGV4LiBUaGlzIGFsbG93cyB1cyB0bworICAgICAgICBzdG9wIHVzaW5nIFVuY2hl
Y2tlZENvbmRpdGlvbiBpbiBhIGZldyBwbGFjZXMuCisKKyAgICAgICAgKiB3dGYvRGF0YU11dGV4
Lmg6CisgICAgICAgIChXVEY6OkRhdGFNdXRleDo6RGF0YU11dGV4KToKKwogMjAyMS0wNS0yOSAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFN0b3AgdXNpbmcgVW5j
aGVja2VkTG9jayBpbiBKU0M6OlZNSW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzAzYTVhN2U5Mjc1
M2NjYmQzMGE4N2NhYmUxODY2MDQ1MjQ1MWI1ZC4uYzU1ZjI2ZjJmNjdjZWEzNTk1Zjc2YWJkNWMx
ODQ0Njc1NTM5NTk0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDIxLTA1LTI5ICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRvcHQgY2xhbmcgdGhy
ZWFkIHNhZmV0eSBhbm5vdGF0aW9ucyBpbiBXVEY6OkRhdGFNdXRleAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NDMxCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGNvZGUgYmFzZSBkdWUgdG8g
RGF0YU11dGV4IEFQSSBjaGFuZ2VzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnBlcmZvcm1UYXNrQXRNZWRpYVRpbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp0cmlnZ2VyUmVw
YWludCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwOgorICAgICAgICAod2ViS2l0V2ViU3JjQ29u
c3RydWN0ZWQpOgorICAgICAgICAod2ViS2l0V2ViU3JjR2V0UHJvcGVydHkpOgorICAgICAgICAo
d2ViS2l0V2ViU3JjU2V0Q29udGV4dCk6CisgICAgICAgICh3ZWJLaXRXZWJTcmNDcmVhdGUpOgor
ICAgICAgICAod2ViS2l0V2ViU3JjTWFrZVJlcXVlc3QpOgorICAgICAgICAod2ViS2l0V2ViU3Jj
U3RvcCk6CisgICAgICAgICh3ZWJLaXRXZWJTcmNHZXRTaXplKToKKyAgICAgICAgKHdlYktpdFdl
YlNyY0lzU2Vla2FibGUpOgorICAgICAgICAod2ViS2l0V2ViU3JjRG9TZWVrKToKKyAgICAgICAg
KHdlYktpdFdlYlNyY1F1ZXJ5KToKKyAgICAgICAgKHdlYktpdFdlYlNyY1VuTG9jayk6CisgICAg
ICAgICh3ZWJLaXRXZWJTcmNVbkxvY2tTdG9wKToKKyAgICAgICAgKHdlYktpdFdlYlNyY1NldE1l
ZGlhUGxheWVyKToKKyAgICAgICAgKHdlYktpdFNyY1Bhc3NlZENPUlNBY2Nlc3NDaGVjayk6Cisg
ICAgICAgIChDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6cmVzcG9uc2VSZWNlaXZlZCk6
CisgICAgICAgIChDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6ZGF0YVJlY2VpdmVkKToK
KyAgICAgICAgKENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjphY2Nlc3NDb250cm9sQ2hl
Y2tGYWlsZWQpOgorICAgICAgICAoQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmxvYWRG
YWlsZWQpOgorICAgICAgICAoQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmxvYWRGaW5p
c2hlZCk6CisgICAgICAgICh3ZWJLaXRTcmNXb3VsZFRhaW50T3JpZ2luKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291cmNlVHJhY2tHU3RyZWFtZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2VUcmFja0dTdHJlYW1lcjo6aXNSZWFk
eUZvck1vcmVTYW1wbGVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlVHJhY2tHU3Ry
ZWFtZXI6Om5vdGlmeVdoZW5SZWFkeUZvck1vcmVTYW1wbGVzKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhU291cmNlVHJhY2tHU3RyZWFtZXI6OmVucXVldWVPYmplY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFTb3VyY2VUcmFja0dTdHJlYW1lcjo6Y2xlYXJRdWV1ZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJjZVRyYWNrR1N0cmVhbWVy
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9XZWJLaXRNZWRp
YVNvdXJjZUdTdHJlYW1lci5jcHA6CisgICAgICAgICh3ZWJLaXRNZWRpYVNyY0FjdGl2YXRlTW9k
ZSk6CisgICAgICAgICh3ZWJLaXRNZWRpYVNyY1BhZExpbmtlZCk6CisgICAgICAgICh3ZWJLaXRN
ZWRpYVNyY0xvb3ApOgorICAgICAgICAod2ViS2l0TWVkaWFTcmNTdHJlYW1GbHVzaCk6CisKIDIw
MjEtMDUtMjggIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIENsaWVu
dHMgb2Ygb3B0aW9uYWwgc2hvdWxkIHVzZSBoYXNfdmFsdWUgaW5zdGVhZCBvZiByZWx5aW5nIG9u
IGhhc1ZhbHVlIG1hY3JvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9EYXRhTXV0ZXguaCBi
L1NvdXJjZS9XVEYvd3RmL0RhdGFNdXRleC5oCmluZGV4IGEyZTFkMjQwYThhNTA3YmU2YmJiOTll
NzMzNDM1MTI1NWY1NThlNTUuLjc3YTFlZDc5YjEwOTRjM2IzZmMwNGFiOTFiMzEzNDQzYTUzZDNj
YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0RhdGFNdXRleC5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL0RhdGFNdXRleC5oCkBAIC00MCwxMTkgKzQwLDg2IEBAIG5hbWVzcGFjZSBXVEYgewog
I2RlZmluZSBEQVRBX01VVEVYX0NIRUNLKGV4cHIpCiAjZW5kaWYKIAotdGVtcGxhdGU8dHlwZW5h
bWUgTG9ja1R5cGU+Ci1jbGFzcyBPd25lckF3YXJlTG9ja0FkYXB0ZXIgewordGVtcGxhdGUgPHR5
cGVuYW1lIFQ+IGNsYXNzIERhdGFNdXRleExvY2tlcjsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4K
K2NsYXNzIERhdGFNdXRleCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoRGF0YU11dGV4KTsKK3B1YmxpYzoKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSAuLi5BcmdzPgorICAgIGV4cGxpY2l0IERhdGFNdXRleChBcmdzJiYuLi4gYXJncykKKyAg
ICAgICAgOiBtX2RhdGEoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKQorICAgIHsgfQorCitw
cml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBEYXRhTXV0ZXhMb2NrZXI8VD47CisKKyAgICBMb2Nr
IG1fbXV0ZXg7CisgICAgVCBtX2RhdGEgV1RGX0dVQVJERURfQllfTE9DSyhtX211dGV4KTsKK307
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgV1RGX0NBUEFCSUxJVFlfU0NPUEVEX0xP
Q0sgRGF0YU11dGV4TG9ja2VyIHsKIHB1YmxpYzoKLSAgICB2b2lkIGxvY2soKQorICAgIGV4cGxp
Y2l0IERhdGFNdXRleExvY2tlcihEYXRhTXV0ZXg8VD4mIGRhdGFNdXRleCkgV1RGX0FDUVVJUkVT
X0xPQ0sobV9kYXRhTXV0ZXgubV9tdXRleCkKKyAgICAgICAgOiBtX2RhdGFNdXRleChkYXRhTXV0
ZXgpCiAgICAgewotICAgICAgICBEQVRBX01VVEVYX0NIRUNLKG1fb3duZXIgIT0gJlRocmVhZDo6
Y3VycmVudCgpKTsgLy8gVGhyZWFkIGF0dGVtcHRlZCByZWN1cnNpdmUgbG9jayAodW5zdXBwb3J0
ZWQpLgotICAgICAgICBtX2xvY2subG9jaygpOwotI2lmIEVOQUJMRV9EQVRBX01VVEVYX0NIRUNL
UwotICAgICAgICBBU1NFUlQoIW1fb3duZXIpOwotICAgICAgICBtX293bmVyID0gJlRocmVhZDo6
Y3VycmVudCgpOwotI2VuZGlmCisgICAgICAgIERBVEFfTVVURVhfQ0hFQ0soIW11dGV4KCkuaXNI
ZWxkKCkpOworICAgICAgICBtdXRleCgpLmxvY2soKTsKKyAgICAgICAgbV9pc0xvY2tlZCA9IHRy
dWU7CiAgICAgfQogCi0gICAgdm9pZCB1bmxvY2soKQorICAgIH5EYXRhTXV0ZXhMb2NrZXIoKSBX
VEZfUkVMRUFTRVNfTE9DSyhtX2RhdGFNdXRleC5tX211dGV4KQogICAgIHsKLSNpZiBFTkFCTEVf
REFUQV9NVVRFWF9DSEVDS1MKLSAgICAgICAgbV9vd25lciA9IG51bGxwdHI7Ci0jZW5kaWYKLSAg
ICAgICAgbV9sb2NrLnVubG9jaygpOworICAgICAgICBpZiAobV9pc0xvY2tlZCkKKyAgICAgICAg
ICAgIG11dGV4KCkudW5sb2NrKCk7CiAgICAgfQogCi0gICAgYm9vbCB0cnlMb2NrKCkKKyAgICBU
KiBvcGVyYXRvci0+KCkKICAgICB7Ci0gICAgICAgIERBVEFfTVVURVhfQ0hFQ0sobV9vd25lciAh
PSAmVGhyZWFkOjpjdXJyZW50KCkpOyAvLyBUaHJlYWQgYXR0ZW1wdGVkIHJlY3Vyc2l2ZSBsb2Nr
ICh1bnN1cHBvcnRlZCkuCi0gICAgICAgIGlmICghbV9sb2NrLnRyeUxvY2soKSkKLSAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLQotI2lmIEVOQUJMRV9EQVRBX01VVEVYX0NIRUNLUwotICAgICAg
ICBBU1NFUlQoIW1fb3duZXIpOwotICAgICAgICBtX293bmVyID0gJlRocmVhZDo6Y3VycmVudCgp
OwotI2VuZGlmCi0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBEQVRBX01VVEVYX0NIRUNL
KG11dGV4KCkuaXNIZWxkKCkpOworICAgICAgICBhc3NlcnRJc0hlbGQobV9kYXRhTXV0ZXgubV9t
dXRleCk7CisgICAgICAgIHJldHVybiAmbV9kYXRhTXV0ZXgubV9kYXRhOwogICAgIH0KIAotICAg
IGJvb2wgaXNMb2NrZWQoKSBjb25zdAorICAgIFQmIG9wZXJhdG9yKigpCiAgICAgewotICAgICAg
ICByZXR1cm4gbV9sb2NrLmlzTG9ja2VkKCk7CisgICAgICAgIERBVEFfTVVURVhfQ0hFQ0sobXV0
ZXgoKS5pc0hlbGQoKSk7CisgICAgICAgIGFzc2VydElzSGVsZChtX2RhdGFNdXRleC5tX211dGV4
KTsKKyAgICAgICAgcmV0dXJuIG1fZGF0YU11dGV4Lm1fZGF0YTsKICAgICB9CiAKLXByaXZhdGU6
Ci0jaWYgRU5BQkxFX0RBVEFfTVVURVhfQ0hFQ0tTCi0gICAgVGhyZWFkKiBtX293bmVyIHsgbnVs
bHB0ciB9OyAvLyBVc2UgVGhyZWFkKiBpbnN0ZWFkIG9mIFJlZlB0cjxUaHJlYWQ+IHNpbmNlIG1f
b3duZXIgdGhyZWFkIGlzIGFsd2F5cyBhbGl2ZSB3aGlsZSBtX293bmVyIGlzIHNldC4KLSNlbmRp
ZgotICAgIExvY2tUeXBlIG1fbG9jazsKLX07Ci0KLXVzaW5nIE93bmVyQXdhcmVMb2NrID0gT3du
ZXJBd2FyZUxvY2tBZGFwdGVyPExvY2s+OworICAgIExvY2smIG11dGV4KCkgV1RGX1JFVFVSTlNf
TE9DSyhtX2RhdGFNdXRleC5tX211dGV4KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZGF0YU11
dGV4Lm1fbXV0ZXg7CisgICAgfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBMb2Nr
VHlwZSA9IE93bmVyQXdhcmVMb2NrPgotY2xhc3MgRGF0YU11dGV4IHsKLSAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEYXRhTXV0ZXgpOwotcHVi
bGljOgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIC4uLkFyZ3M+Ci0gICAgZXhwbGljaXQgRGF0YU11
dGV4KEFyZ3MmJi4uLiBhcmdzKQotICAgICAgICA6IG1fZGF0YShzdGQ6OmZvcndhcmQ8QXJncz4o
YXJncykuLi4pCi0gICAgeyB9CisgICAgdm9pZCB1bmxvY2tFYXJseSgpIFdURl9SRUxFQVNFU19M
T0NLKG1fZGF0YU11dGV4Lm1fbXV0ZXgpCisgICAgeworICAgICAgICBEQVRBX01VVEVYX0NIRUNL
KG11dGV4KCkuaXNIZWxkKCkpOworICAgICAgICBtX2lzTG9ja2VkID0gZmFsc2U7CisgICAgICAg
IG11dGV4KCkudW5sb2NrKCk7CisgICAgfQogCi0gICAgY2xhc3MgTG9ja2VkV3JhcHBlciB7Ci0g
ICAgcHVibGljOgotICAgICAgICBleHBsaWNpdCBMb2NrZWRXcmFwcGVyKERhdGFNdXRleCYgZGF0
YU11dGV4KQotICAgICAgICAgICAgOiBtX211dGV4KGRhdGFNdXRleC5tX211dGV4KQotICAgICAg
ICAgICAgLCBtX2xvY2tIb2xkZXIoZGF0YU11dGV4Lm1fbXV0ZXgpCi0gICAgICAgICAgICAsIG1f
ZGF0YShkYXRhTXV0ZXgubV9kYXRhKQotICAgICAgICB7IH0KLQotICAgICAgICBUKiBvcGVyYXRv
ci0+KCkKLSAgICAgICAgewotICAgICAgICAgICAgREFUQV9NVVRFWF9DSEVDSyhtX211dGV4Lmlz
TG9ja2VkKCkpOwotICAgICAgICAgICAgcmV0dXJuICZtX2RhdGE7Ci0gICAgICAgIH0KLQotICAg
ICAgICBUJiBvcGVyYXRvciooKQotICAgICAgICB7Ci0gICAgICAgICAgICBEQVRBX01VVEVYX0NI
RUNLKG1fbXV0ZXguaXNMb2NrZWQoKSk7Ci0gICAgICAgICAgICByZXR1cm4gbV9kYXRhOwotICAg
ICAgICB9Ci0KLSAgICAgICAgTG9ja1R5cGUmIG11dGV4KCkKLSAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuIG1fbXV0ZXg7Ci0gICAgICAgIH0KLQotICAgICAgICBMb2NrZXI8TG9ja1R5cGU+
JiBsb2NrSG9sZGVyKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG1fbG9ja0hvbGRl
cjsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIFVzZWQgdG8gYXZvaWQgZXhjZXNzaXZlIGJyYWNl
IHNjb3Bpbmcgd2hlbiBvbmx5IHNtYWxsIHBhcnRzIG9mIHRoZSBjb2RlIG5lZWQgdG8gYmUgcnVu
IHVubG9ja2VkLgotICAgICAgICAvLyBQbGVhc2UgYmUgbWluZGZ1bCB0aGF0IGFjY2Vzc2luZyB0
aGUgd3JhcHBlZCBkYXRhIGZyb20gdGhlIGNhbGxiYWNrIGlzIHVuc2FmZSBhbmQgd2lsbCBmYWls
IG9uIGFzc2VydGlvbnMuCi0gICAgICAgIC8vIEl0J3MgaGVscGZ1bCB0byB1c2UgYSBtaW5pbWFs
IGxhbWJkYSBjYXB0dXJlIHRvIGJlIGNvbnNjaW91cyBvZiB3aGF0IGRhdGEgeW91J3JlIGhhdmlu
ZyBhY2Nlc3MgdG8gaW4gdGhlc2Ugc2VjdGlvbnMuCi0gICAgICAgIHZvaWQgcnVuVW5sb2NrZWQo
V1RGOjpGdW5jdGlvbjx2b2lkKCk+IGNhbGxiYWNrKQotICAgICAgICB7Ci0gICAgICAgICAgICBt
X211dGV4LnVubG9jaygpOwotICAgICAgICAgICAgY2FsbGJhY2soKTsKLSAgICAgICAgICAgIG1f
bXV0ZXgubG9jaygpOwotICAgICAgICB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBMb2NrVHlw
ZSYgbV9tdXRleDsKLSAgICAgICAgTG9ja2VyPExvY2tUeXBlPiBtX2xvY2tIb2xkZXI7Ci0gICAg
ICAgIFQmIG1fZGF0YTsKLSAgICB9OworICAgIC8vIFVzZWQgdG8gYXZvaWQgZXhjZXNzaXZlIGJy
YWNlIHNjb3Bpbmcgd2hlbiBvbmx5IHNtYWxsIHBhcnRzIG9mIHRoZSBjb2RlIG5lZWQgdG8gYmUg
cnVuIHVubG9ja2VkLgorICAgIC8vIFBsZWFzZSBiZSBtaW5kZnVsIHRoYXQgYWNjZXNzaW5nIHRo
ZSB3cmFwcGVkIGRhdGEgZnJvbSB0aGUgY2FsbGJhY2sgaXMgdW5zYWZlIGFuZCB3aWxsIGZhaWwg
b24gYXNzZXJ0aW9ucy4KKyAgICAvLyBJdCdzIGhlbHBmdWwgdG8gdXNlIGEgbWluaW1hbCBsYW1i
ZGEgY2FwdHVyZSB0byBiZSBjb25zY2lvdXMgb2Ygd2hhdCBkYXRhIHlvdSdyZSBoYXZpbmcgYWNj
ZXNzIHRvIGluIHRoZXNlIHNlY3Rpb25zLgorICAgIHZvaWQgcnVuVW5sb2NrZWQoY29uc3QgRnVu
Y3Rpb248dm9pZCgpPiYgY2FsbGJhY2spCisgICAgeworICAgICAgICBEQVRBX01VVEVYX0NIRUNL
KG11dGV4KCkuaXNIZWxkKCkpOworICAgICAgICBhc3NlcnRJc0hlbGQobV9kYXRhTXV0ZXgubV9t
dXRleCk7CisgICAgICAgIG11dGV4KCkudW5sb2NrKCk7CisgICAgICAgIGNhbGxiYWNrKCk7Cisg
ICAgICAgIG11dGV4KCkubG9jaygpOworICAgIH0KIAogcHJpdmF0ZToKLSAgICBMb2NrVHlwZSBt
X211dGV4OwotICAgIFQgbV9kYXRhOworICAgIERhdGFNdXRleDxUPiYgbV9kYXRhTXV0ZXg7Cisg
ICAgYm9vbCBtX2lzTG9ja2VkIHsgZmFsc2UgfTsKIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+
Ci10eXBlbmFtZSBEYXRhTXV0ZXg8VD46OkxvY2tlZFdyYXBwZXIgaG9sZExvY2soRGF0YU11dGV4
PFQ+JiBkYXRhTXV0ZXgpCi17Ci0gICAgcmV0dXJuIHR5cGVuYW1lIERhdGFNdXRleDxUPjo6TG9j
a2VkV3JhcHBlcihkYXRhTXV0ZXgpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcg
V1RGOjpEYXRhTXV0ZXg7Cit1c2luZyBXVEY6OkRhdGFNdXRleExvY2tlcjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNjgwOTEzOTVjZGUz
M2RiMTkxMDdlNDc1ZTA4MjYyYTEyZDJmMWRkNC4uNWIxODAyMTFlZmEyNjIyZGVmMWFhNGE4NzI5
ZmI2MjdjNTIyZjczZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lci5jcHAKQEAgLTI4NjMsNyArMjg2Myw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjpwZXJmb3JtVGFza0F0TWVkaWFUaW1lKEZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNr
CiAKICAgICBPcHRpb25hbDxGdW5jdGlvbjx2b2lkKCk+PiB0YXNrVG9TY2hlZHVsZTsKICAgICB7
Ci0gICAgICAgIGF1dG8gdGFza0F0TWVkaWFUaW1lU2NoZWR1bGVyID0gaG9sZExvY2sobV9UYXNr
QXRNZWRpYVRpbWVTY2hlZHVsZXJEYXRhTXV0ZXgpOworICAgICAgICBEYXRhTXV0ZXhMb2NrZXIg
dGFza0F0TWVkaWFUaW1lU2NoZWR1bGVyIHsgbV9UYXNrQXRNZWRpYVRpbWVTY2hlZHVsZXJEYXRh
TXV0ZXggfTsKICAgICAgICAgdGFza0F0TWVkaWFUaW1lU2NoZWR1bGVyLT5zZXRUYXNrKFdURk1v
dmUodGFzayksIHRpbWUsCiAgICAgICAgICAgICBtX3BsYXliYWNrUmF0ZSA+PSAwID8gVGFza0F0
TWVkaWFUaW1lU2NoZWR1bGVyOjpGb3J3YXJkIDogVGFza0F0TWVkaWFUaW1lU2NoZWR1bGVyOjpC
YWNrd2FyZCk7CiAgICAgICAgIHRhc2tUb1NjaGVkdWxlID0gdGFza0F0TWVkaWFUaW1lU2NoZWR1
bGVyLT5jaGVja1Rhc2tGb3JTY2hlZHVsaW5nKGN1cnJlbnRUaW1lKTsKQEAgLTMxMjQsNyArMzEy
NCw4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp0cmlnZ2VyUmVwYWludChH
c3RTYW1wbGUqIHNhbXBsZSkKICAgICBpZiAoYnVmZmVyICYmIEdTVF9CVUZGRVJfUFRTX0lTX1ZB
TElEKGJ1ZmZlcikpIHsKICAgICAgICAgLy8gSGV1cmlzdGljIHRvIGF2b2lkIGFza2luZyBmb3Ig
cGxheWJhY2tQb3NpdGlvbigpIGZyb20gYSBub24tbWFpbiB0aHJlYWQuCiAgICAgICAgIE1lZGlh
VGltZSBjdXJyZW50VGltZSA9IE1lZGlhVGltZShnc3Rfc2VnbWVudF90b19zdHJlYW1fdGltZShn
c3Rfc2FtcGxlX2dldF9zZWdtZW50KHNhbXBsZSksIEdTVF9GT1JNQVRfVElNRSwgR1NUX0JVRkZF
Ul9QVFMoYnVmZmVyKSksIEdTVF9TRUNPTkQpOwotICAgICAgICBpZiAoYXV0byB0YXNrID0gaG9s
ZExvY2sobV9UYXNrQXRNZWRpYVRpbWVTY2hlZHVsZXJEYXRhTXV0ZXgpLT5jaGVja1Rhc2tGb3JT
Y2hlZHVsaW5nKGN1cnJlbnRUaW1lKSkKKyAgICAgICAgRGF0YU11dGV4TG9ja2VyIHRhc2tBdE1l
ZGlhVGltZVNjaGVkdWxlciB7IG1fVGFza0F0TWVkaWFUaW1lU2NoZWR1bGVyRGF0YU11dGV4IH07
CisgICAgICAgIGlmIChhdXRvIHRhc2sgPSB0YXNrQXRNZWRpYVRpbWVTY2hlZHVsZXItPmNoZWNr
VGFza0ZvclNjaGVkdWxpbmcoY3VycmVudFRpbWUpKQogICAgICAgICAgICAgUnVuTG9vcDo6bWFp
bigpLmRpc3BhdGNoKFdURk1vdmUodGFzay52YWx1ZSgpKSk7CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKaW5kZXggODAzOTFkOTE2NzY1NDU0
NGFlZjU1ZjhhMjRhZGZkMTU1YTYwMTVkZC4uZGYwMjk2Y2Q2M2VkOGYzNmM0YmJjZjhkYTFlNmUy
Yzc3YWE2OTZkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIuaApAQCAtNTY1LDcgKzU2NSw3IEBAIHByaXZhdGU6CiAgICAgLy8gVGhpcyBpcyBzZXQgdG8g
dHJ1ZSBpZiBubyB2aWRlb2ZsaXAgZWxlbWVudCBoYXMgYmVlbiBhZGRlZCB0byB0aGUgcGlwZWxp
bmUuCiAgICAgYm9vbCBtX3Nob3VsZEhhbmRsZU9yaWVudGF0aW9uVGFncyB7IGZhbHNlIH07CiAK
LSAgICBXVEY6OkRhdGFNdXRleDxUYXNrQXRNZWRpYVRpbWVTY2hlZHVsZXI+IG1fVGFza0F0TWVk
aWFUaW1lU2NoZWR1bGVyRGF0YU11dGV4OworICAgIERhdGFNdXRleDxUYXNrQXRNZWRpYVRpbWVT
Y2hlZHVsZXI+IG1fVGFza0F0TWVkaWFUaW1lU2NoZWR1bGVyRGF0YU11dGV4OwogCiBwcml2YXRl
OgogI2lmIFVTRShXUEVfVklERU9fUExBTkVfRElTUExBWV9ETUFCVUYpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNl
R1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCmluZGV4IDVjN2M5ODA2ZDM0Y2I4YzEzODU5
YzkxYTljOWNiMmFkOTkxNjc3NmYuLjgyMmMyMjcxZDJjN2MyOTc4MGU5NWE0ZTFjMzE2MzIwZDgz
MzZjMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCkBA
IC00MSw3ICs0MSw2IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVy
c2lvbi5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLXVzaW5nIFdURjo6RGF0YU11dGV4
OwogCiAvLyBOZXZlciBwYXVzZSBkb3dubG9hZCBvZiBtZWRpYSByZXNvdXJjZXMgc21hbGxlciB0
aGFuIDJNaUIuCiAjZGVmaW5lIFNNQUxMX01FRElBX1JFU09VUkNFX01BWF9TSVpFIDIgKiAxMDI0
ICogMTAyNApAQCAtMTQwLDcgKzEzOSw3IEBAIHN0cnVjdCBXZWJLaXRXZWJTcmNQcml2YXRlIHsK
IAogICAgICAgICAvLyBQcm9wZXJ0aWVzIHVzZWQgZm9yIEdTdHJlYW1lciBkYXRhLWZsb3cgaW4g
Y3JlYXRlKCkuCiAgICAgICAgIGJvb2wgaXNGbHVzaGluZyB7IGZhbHNlIH07Ci0gICAgICAgIFVu
Y2hlY2tlZENvbmRpdGlvbiByZXNwb25zZUNvbmRpdGlvbjsgLy8gTXVzdCBiZSBzaWduYWxlZCBh
ZnRlciBhbnkgdXBkYXRlcyBvbiBIVFRQIHJlcXVlc3RzLCBhbmQgd2hlbiBmbHVzaGluZy4KKyAg
ICAgICAgQ29uZGl0aW9uIHJlc3BvbnNlQ29uZGl0aW9uOyAvLyBNdXN0IGJlIHNpZ25hbGVkIGFm
dGVyIGFueSB1cGRhdGVzIG9uIEhUVFAgcmVxdWVzdHMsIGFuZCB3aGVuIGZsdXNoaW5nLgogICAg
ICAgICBHUmVmUHRyPEdzdEFkYXB0ZXI+IGFkYXB0ZXI7CiAgICAgICAgIGJvb2wgaXNEdXJhdGlv
blNldDsKICAgICAgICAgdWludDY0X3QgcmVhZFBvc2l0aW9uOwpAQCAtMzAxLDcgKzMwMCw3IEBA
IHN0YXRpYyB2b2lkIHdlYktpdFdlYlNyY0NvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKIAog
ICAgIHByaXYtPm1pbmltdW1CbG9ja3NpemUgPSBnc3RfYmFzZV9zcmNfZ2V0X2Jsb2Nrc2l6ZShH
U1RfQkFTRV9TUkNfQ0FTVChzcmMpKTsKIAotICAgIGF1dG8gbWVtYmVycyA9IGhvbGRMb2NrKHBy
aXYtPmRhdGFNdXRleCk7CisgICAgRGF0YU11dGV4TG9ja2VyIG1lbWJlcnMgeyBwcml2LT5kYXRh
TXV0ZXggfTsKICAgICBtZW1iZXJzLT5hZGFwdGVyID0gYWRvcHRHUmVmKGdzdF9hZGFwdGVyX25l
dygpKTsKICAgICB3ZWJraXRXZWJTcmNSZXNldChzcmMsIG1lbWJlcnMsIFJlc2V0VHlwZTo6SGFy
ZCk7CiAKQEAgLTM0Niw3ICszNDUsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNHZXRQcm9w
ZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJRCwgR1ZhbHVlKiB2YWx1ZQogICAgICAg
ICBnX3ZhbHVlX3NldF9zdHJpbmcodmFsdWUsIHByaXYtPm9yaWdpbmFsVVJJLmRhdGEoKSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJPUF9SRVNPTFZFRF9MT0NBVElPTjogewotICAgICAg
ICBhdXRvIG1lbWJlcnMgPSBob2xkTG9jayhwcml2LT5kYXRhTXV0ZXgpOworICAgICAgICBEYXRh
TXV0ZXhMb2NrZXIgbWVtYmVycyB7IHByaXYtPmRhdGFNdXRleCB9OwogICAgICAgICBnX3ZhbHVl
X3NldF9zdHJpbmcodmFsdWUsIG1lbWJlcnMtPnJlZGlyZWN0ZWRVUkkuaXNOdWxsKCkgPyBwcml2
LT5vcmlnaW5hbFVSSS5kYXRhKCkgOiBtZW1iZXJzLT5yZWRpcmVjdGVkVVJJLmRhdGEoKSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTM3Niw3ICszNzUsNyBAQCBzdGF0aWMgdm9pZCB3ZWJL
aXRXZWJTcmNTZXRDb250ZXh0KEdzdEVsZW1lbnQqIGVsZW1lbnQsIEdzdENvbnRleHQqIGNvbnRl
eHQpCiAgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJjb250ZXh0IHR5cGU6ICVzIiwgZ3N0X2Nv
bnRleHRfZ2V0X2NvbnRleHRfdHlwZShjb250ZXh0KSk7CiAgICAgaWYgKGdzdF9jb250ZXh0X2hh
c19jb250ZXh0X3R5cGUoY29udGV4dCwgV0VCS0lUX1dFQl9TUkNfUExBWUVSX0NPTlRFWFRfVFlQ
RV9OQU1FKSkgewogICAgICAgICBjb25zdCBHVmFsdWUqIHZhbHVlID0gZ3N0X3N0cnVjdHVyZV9n
ZXRfdmFsdWUoZ3N0X2NvbnRleHRfZ2V0X3N0cnVjdHVyZShjb250ZXh0KSwgInBsYXllciIpOwot
ICAgICAgICBhdXRvIG1lbWJlcnMgPSBob2xkTG9jayhwcml2LT5kYXRhTXV0ZXgpOworICAgICAg
ICBEYXRhTXV0ZXhMb2NrZXIgbWVtYmVycyB7IHByaXYtPmRhdGFNdXRleCB9OwogICAgICAgICBt
ZW1iZXJzLT5wbGF5ZXIgPSByZWludGVycHJldF9jYXN0PE1lZGlhUGxheWVyKj4oZ192YWx1ZV9n
ZXRfcG9pbnRlcih2YWx1ZSkpOwogICAgIH0KICAgICBHU1RfRUxFTUVOVF9DTEFTUyhwYXJlbnRf
Y2xhc3MpLT5zZXRfY29udGV4dChlbGVtZW50LCBjb250ZXh0KTsKQEAgLTQ1OSw3ICs0NTgsNyBA
QCBzdGF0aWMgR3N0Rmxvd1JldHVybiB3ZWJLaXRXZWJTcmNDcmVhdGUoR3N0UHVzaFNyYyogcHVz
aFNyYywgR3N0QnVmZmVyKiogYnVmZmVyKQogICAgIEdzdEJhc2VTcmMqIGJhc2VTcmMgPSBHU1Rf
QkFTRV9TUkNfQ0FTVChwdXNoU3JjKTsKICAgICBXZWJLaXRXZWJTcmMqIHNyYyA9IFdFQktJVF9X
RUJfU1JDKGJhc2VTcmMpOwogICAgIFdlYktpdFdlYlNyY1ByaXZhdGUqIHByaXYgPSBzcmMtPnBy
aXY7Ci0gICAgYXV0byBtZW1iZXJzID0gaG9sZExvY2socHJpdi0+ZGF0YU11dGV4KTsKKyAgICBE
YXRhTXV0ZXhMb2NrZXIgbWVtYmVycyB7IHByaXYtPmRhdGFNdXRleCB9OwogCiAgICAgLy8gV2Ug
bmVlZCBtZW1iZXJzLT5wbGF5ZXIgdG8gbWFrZSByZXF1ZXN0cy4gVGhlcmUgYXJlIHR3byBtZWNo
YW5pc21zIGZvciB0aGlzLgogICAgIC8vCkBAIC02ODksNyArNjg4LDcgQEAgc3RhdGljIHZvaWQg
d2ViS2l0V2ViU3JjTWFrZVJlcXVlc3QoV2ViS2l0V2ViU3JjKiBzcmMsIERhdGFNdXRleDxXZWJL
aXRXZWJTcmNQcmkKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBSdW5Mb29wOjpt
YWluKCkuZGlzcGF0Y2goW3Byb3RlY3RvciA9IFdURjo6ZW5zdXJlR1JlZihzcmMpLCByZXF1ZXN0
ID0gV1RGTW92ZShyZXF1ZXN0KSwgcmVxdWVzdE51bWJlciA9IG1lbWJlcnMtPnJlcXVlc3ROdW1i
ZXJdIHsKICAgICAgICAgV2ViS2l0V2ViU3JjUHJpdmF0ZSogcHJpdiA9IHByb3RlY3Rvci0+cHJp
djsKLSAgICAgICAgYXV0byBtZW1iZXJzID0gaG9sZExvY2socHJpdi0+ZGF0YU11dGV4KTsKKyAg
ICAgICAgRGF0YU11dGV4TG9ja2VyIG1lbWJlcnMgeyBwcml2LT5kYXRhTXV0ZXggfTsKICAgICAg
ICAgLy8gSWdub3JlIHRoaXMgdGFzayAobm90IG1ha2luZyBhbnkgSFRUUCByZXF1ZXN0KSBpZiBi
eSBub3cgV2ViS2l0V2ViU3JjIHN0cmVhbWluZyB0aHJlYWQgaXMgYWxyZWFkeSB3YWl0aW5nCiAg
ICAgICAgIC8vIGZvciBhIGRpZmZlcmVudCByZXF1ZXN0LiBUaGVyZSBpcyBubyBwb2ludCBhbnlt
b3JlIGluIHNlbmRpbmcgdGhpcyBvbmUuCiAgICAgICAgIGlmIChtZW1iZXJzLT5yZXF1ZXN0TnVt
YmVyICE9IHJlcXVlc3ROdW1iZXIpIHsKQEAgLTcxNiw3ICs3MTUsNyBAQCBzdGF0aWMgZ2Jvb2xl
YW4gd2ViS2l0V2ViU3JjU3RvcChHc3RCYXNlU3JjKiBiYXNlU3JjKQogewogICAgIFdlYktpdFdl
YlNyYyogc3JjID0gV0VCS0lUX1dFQl9TUkMoYmFzZVNyYyk7CiAgICAgLy8gYmFzZXNyYyB3aWxs
IGFsd2F5cyBjYWxsIHVuTG9jaygpIGFuZCB1bkxvY2tTdG9wKCkgYmVmb3JlIGNhbGxpbmcgdGhp
cy4gU2VlIGdzdF9iYXNlX3NyY19zdG9wKCkuCi0gICAgYXV0byBtZW1iZXJzID0gaG9sZExvY2so
c3JjLT5wcml2LT5kYXRhTXV0ZXgpOworICAgIERhdGFNdXRleExvY2tlciBtZW1iZXJzIHsgc3Jj
LT5wcml2LT5kYXRhTXV0ZXggfTsKICAgICB3ZWJraXRXZWJTcmNSZXNldChzcmMsIG1lbWJlcnMs
IFJlc2V0VHlwZTo6SGFyZCk7CiAgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJTdG9wcGVkIFdl
YktpdFdlYlNyYyIpOwogICAgIHJldHVybiBUUlVFOwpAQCAtNzI1LDcgKzcyNCw3IEBAIHN0YXRp
YyBnYm9vbGVhbiB3ZWJLaXRXZWJTcmNTdG9wKEdzdEJhc2VTcmMqIGJhc2VTcmMpCiBzdGF0aWMg
Z2Jvb2xlYW4gd2ViS2l0V2ViU3JjR2V0U2l6ZShHc3RCYXNlU3JjKiBiYXNlU3JjLCBndWludDY0
KiBzaXplKQogewogICAgIFdlYktpdFdlYlNyYyogc3JjID0gV0VCS0lUX1dFQl9TUkMoYmFzZVNy
Yyk7Ci0gICAgYXV0byBtZW1iZXJzID0gaG9sZExvY2soc3JjLT5wcml2LT5kYXRhTXV0ZXgpOwor
ICAgIERhdGFNdXRleExvY2tlciBtZW1iZXJzIHsgc3JjLT5wcml2LT5kYXRhTXV0ZXggfTsKIAog
ICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiaGF2ZVNpemU6ICVzLCBzaXplOiAlIiBHX0dVSU5U
NjRfRk9STUFULCBib29sRm9yUHJpbnRpbmcobWVtYmVycy0+aGF2ZVNpemUpLCBtZW1iZXJzLT5z
aXplKTsKICAgICBpZiAobWVtYmVycy0+aGF2ZVNpemUpIHsKQEAgLTczOSw3ICs3MzgsNyBAQCBz
dGF0aWMgZ2Jvb2xlYW4gd2ViS2l0V2ViU3JjR2V0U2l6ZShHc3RCYXNlU3JjKiBiYXNlU3JjLCBn
dWludDY0KiBzaXplKQogc3RhdGljIGdib29sZWFuIHdlYktpdFdlYlNyY0lzU2Vla2FibGUoR3N0
QmFzZVNyYyogYmFzZVNyYykKIHsKICAgICBXZWJLaXRXZWJTcmMqIHNyYyA9IFdFQktJVF9XRUJf
U1JDKGJhc2VTcmMpOwotICAgIGF1dG8gbWVtYmVycyA9IGhvbGRMb2NrKHNyYy0+cHJpdi0+ZGF0
YU11dGV4KTsKKyAgICBEYXRhTXV0ZXhMb2NrZXIgbWVtYmVycyB7IHNyYy0+cHJpdi0+ZGF0YU11
dGV4IH07CiAgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJpc1NlZWthYmxlOiAlcyIsIGJvb2xG
b3JQcmludGluZyhtZW1iZXJzLT5pc1NlZWthYmxlKSk7CiAgICAgcmV0dXJuIG1lbWJlcnMtPmlz
U2Vla2FibGU7CiB9CkBAIC03NTYsNyArNzU1LDcgQEAgc3RhdGljIGdib29sZWFuIHdlYktpdFdl
YlNyY0RvU2VlayhHc3RCYXNlU3JjKiBiYXNlU3JjLCBHc3RTZWdtZW50KiBzZWdtZW50KQogICAg
IEFTU0VSVChHU1RfRUxFTUVOVChiYXNlU3JjKS0+Y3VycmVudF9zdGF0ZSA8IEdTVF9TVEFURV9Q
QVVTRUQgfHwgd2ViS2l0V2ViU3JjSXNTZWVrYWJsZShiYXNlU3JjKSk7CiAKICAgICBXZWJLaXRX
ZWJTcmMqIHNyYyA9IFdFQktJVF9XRUJfU1JDKGJhc2VTcmMpOwotICAgIGF1dG8gbWVtYmVycyA9
IGhvbGRMb2NrKHNyYy0+cHJpdi0+ZGF0YU11dGV4KTsKKyAgICBEYXRhTXV0ZXhMb2NrZXIgbWVt
YmVycyB7IHNyYy0+cHJpdi0+ZGF0YU11dGV4IH07CiAKICAgICBHU1RfREVCVUdfT0JKRUNUKHNy
YywgIlNlZWsgc2VnbWVudDogKCUiIEdfR1VJTlQ2NF9GT1JNQVQgIi0lIiBHX0dVSU5UNjRfRk9S
TUFUICIpIFBvc2l0aW9uIHByZXZpb3VzIHRvIHNlZWs6ICUiIEdfR1VJTlQ2NF9GT1JNQVQsIHNl
Z21lbnQtPnN0YXJ0LCBzZWdtZW50LT5zdG9wLCBtZW1iZXJzLT5yZWFkUG9zaXRpb24pOwogCkBA
IC03ODYsNyArNzg1LDcgQEAgc3RhdGljIGdib29sZWFuIHdlYktpdFdlYlNyY1F1ZXJ5KEdzdEJh
c2VTcmMqIGJhc2VTcmMsIEdzdFF1ZXJ5KiBxdWVyeSkKIAogICAgIGlmIChHU1RfUVVFUllfVFlQ
RShxdWVyeSkgPT0gR1NUX1FVRVJZX1VSSSkgewogICAgICAgICBnc3RfcXVlcnlfc2V0X3VyaShx
dWVyeSwgcHJpdi0+b3JpZ2luYWxVUkkuZGF0YSgpKTsKLSAgICAgICAgYXV0byBtZW1iZXJzID0g
aG9sZExvY2soc3JjLT5wcml2LT5kYXRhTXV0ZXgpOworICAgICAgICBEYXRhTXV0ZXhMb2NrZXIg
bWVtYmVycyB7IHNyYy0+cHJpdi0+ZGF0YU11dGV4IH07CiAgICAgICAgIGlmICghbWVtYmVycy0+
cmVkaXJlY3RlZFVSSS5pc051bGwoKSkKICAgICAgICAgICAgIGdzdF9xdWVyeV9zZXRfdXJpX3Jl
ZGlyZWN0aW9uKHF1ZXJ5LCBtZW1iZXJzLT5yZWRpcmVjdGVkVVJJLmRhdGEoKSk7CiAgICAgICAg
IHJlc3VsdCA9IFRSVUU7CkBAIC04MDksNyArODA4LDcgQEAgc3RhdGljIGdib29sZWFuIHdlYktp
dFdlYlNyY1F1ZXJ5KEdzdEJhc2VTcmMqIGJhc2VTcmMsIEdzdFF1ZXJ5KiBxdWVyeSkKIHN0YXRp
YyBnYm9vbGVhbiB3ZWJLaXRXZWJTcmNVbkxvY2soR3N0QmFzZVNyYyogYmFzZVNyYykKIHsKICAg
ICBXZWJLaXRXZWJTcmMqIHNyYyA9IFdFQktJVF9XRUJfU1JDKGJhc2VTcmMpOwotICAgIGF1dG8g
bWVtYmVycyA9IGhvbGRMb2NrKHNyYy0+cHJpdi0+ZGF0YU11dGV4KTsKKyAgICBEYXRhTXV0ZXhM
b2NrZXIgbWVtYmVycyB7IHNyYy0+cHJpdi0+ZGF0YU11dGV4IH07CiAKICAgICBHU1RfREVCVUdf
T0JKRUNUKHNyYywgIlVubG9jayIpOwogICAgIG1lbWJlcnMtPmlzRmx1c2hpbmcgPSB0cnVlOwpA
QCAtODQwLDcgKzgzOSw3IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRXZWJTcmNVbkxvY2soR3N0
QmFzZVNyYyogYmFzZVNyYykKIHN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRXZWJTcmNVbkxvY2tTdG9w
KEdzdEJhc2VTcmMqIGJhc2VTcmMpCiB7CiAgICAgV2ViS2l0V2ViU3JjKiBzcmMgPSBXRUJLSVRf
V0VCX1NSQyhiYXNlU3JjKTsKLSAgICBhdXRvIG1lbWJlcnMgPSBob2xkTG9jayhzcmMtPnByaXYt
PmRhdGFNdXRleCk7CisgICAgRGF0YU11dGV4TG9ja2VyIG1lbWJlcnMgeyBzcmMtPnByaXYtPmRh
dGFNdXRleCB9OwogICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiVW5sb2NrIHN0b3AiKTsKICAg
ICBtZW1iZXJzLT5pc0ZsdXNoaW5nID0gZmFsc2U7CiAgICAgd2Via2l0V2ViU3JjUmVzZXQoc3Jj
LCBtZW1iZXJzLCBSZXNldFR5cGU6OlNvZnQpOwpAQCAtOTI2LDE0ICs5MjUsMTQgQEAgc3RhdGlj
IHZvaWQgd2ViS2l0V2ViU3JjVXJpSGFuZGxlckluaXQoZ3BvaW50ZXIgZ0lmYWNlLCBncG9pbnRl
cikKIHZvaWQgd2ViS2l0V2ViU3JjU2V0TWVkaWFQbGF5ZXIoV2ViS2l0V2ViU3JjKiBzcmMsIFdl
YkNvcmU6Ok1lZGlhUGxheWVyKiBwbGF5ZXIsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpCiB7CiAg
ICAgQVNTRVJUKHBsYXllcik7Ci0gICAgYXV0byBtZW1iZXJzID0gaG9sZExvY2soc3JjLT5wcml2
LT5kYXRhTXV0ZXgpOworICAgIERhdGFNdXRleExvY2tlciBtZW1iZXJzIHsgc3JjLT5wcml2LT5k
YXRhTXV0ZXggfTsKICAgICBtZW1iZXJzLT5wbGF5ZXIgPSBwbGF5ZXI7CiAgICAgbWVtYmVycy0+
cmVmZXJyZXIgPSByZWZlcnJlcjsKIH0KIAogYm9vbCB3ZWJLaXRTcmNQYXNzZWRDT1JTQWNjZXNz
Q2hlY2soV2ViS2l0V2ViU3JjKiBzcmMpCiB7Ci0gICAgYXV0byBtZW1iZXJzID0gaG9sZExvY2so
c3JjLT5wcml2LT5kYXRhTXV0ZXgpOworICAgIERhdGFNdXRleExvY2tlciBtZW1iZXJzIHsgc3Jj
LT5wcml2LT5kYXRhTXV0ZXggfTsKICAgICByZXR1cm4gbWVtYmVycy0+ZGlkUGFzc0FjY2Vzc0Nv
bnRyb2xDaGVjazsKIH0KIApAQCAtOTg4LDcgKzk4Nyw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VT
dHJlYW1pbmdDbGllbnQ6OnJlc3BvbnNlUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwg
Y29uCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBXZWJLaXRXZWJTcmMqIHNyYyA9
IFdFQktJVF9XRUJfU1JDKG1fc3JjLmdldCgpKTsKICAgICBXZWJLaXRXZWJTcmNQcml2YXRlKiBw
cml2ID0gc3JjLT5wcml2OwotICAgIGF1dG8gbWVtYmVycyA9IGhvbGRMb2NrKHByaXYtPmRhdGFN
dXRleCk7CisgICAgRGF0YU11dGV4TG9ja2VyIG1lbWJlcnMgeyBwcml2LT5kYXRhTXV0ZXggfTsK
ICAgICBpZiAobWVtYmVycy0+cmVxdWVzdE51bWJlciAhPSBtX3JlcXVlc3ROdW1iZXIpIHsKICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoU2hvdWxkQ29udGludWVQb2xpY3lDaGVjazo6Tm8pOwog
ICAgICAgICByZXR1cm47CkBAIC0xMDk0LDcgKzEwOTMsNyBAQCB2b2lkIENhY2hlZFJlc291cmNl
U3RyZWFtaW5nQ2xpZW50OjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29u
c3QgYwogICAgIFdlYktpdFdlYlNyYyogc3JjID0gV0VCS0lUX1dFQl9TUkMobV9zcmMuZ2V0KCkp
OwogICAgIFdlYktpdFdlYlNyY1ByaXZhdGUqIHByaXYgPSBzcmMtPnByaXY7CiAKLSAgICBhdXRv
IG1lbWJlcnMgPSBob2xkTG9jayhwcml2LT5kYXRhTXV0ZXgpOworICAgIERhdGFNdXRleExvY2tl
ciBtZW1iZXJzIHsgcHJpdi0+ZGF0YU11dGV4IH07CiAgICAgaWYgKG1lbWJlcnMtPnJlcXVlc3RO
dW1iZXIgIT0gbV9yZXF1ZXN0TnVtYmVyKQogICAgICAgICByZXR1cm47CiAKQEAgLTExMzAsNyAr
MTEyOSw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmFjY2Vzc0NvbnRy
b2xDaGVja0ZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyCiB7CiAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKICAgICBXZWJLaXRXZWJTcmMqIHNyYyA9IFdFQktJVF9XRUJfU1JDKG1fc3JjLmdl
dCgpKTsKLSAgICBhdXRvIG1lbWJlcnMgPSBob2xkTG9jayhzcmMtPnByaXYtPmRhdGFNdXRleCk7
CisgICAgRGF0YU11dGV4TG9ja2VyIG1lbWJlcnMgeyBzcmMtPnByaXYtPmRhdGFNdXRleCB9Owog
ICAgIGlmIChtZW1iZXJzLT5yZXF1ZXN0TnVtYmVyICE9IG1fcmVxdWVzdE51bWJlcikKICAgICAg
ICAgcmV0dXJuOwogCkBAIC0xMTQzLDcgKzExNDIsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlU3Ry
ZWFtaW5nQ2xpZW50Ojpsb2FkRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IFJl
cwogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgV2ViS2l0V2ViU3JjKiBzcmMg
PSBXRUJLSVRfV0VCX1NSQyhtX3NyYy5nZXQoKSk7Ci0gICAgYXV0byBtZW1iZXJzID0gaG9sZExv
Y2soc3JjLT5wcml2LT5kYXRhTXV0ZXgpOworICAgIERhdGFNdXRleExvY2tlciBtZW1iZXJzIHsg
c3JjLT5wcml2LT5kYXRhTXV0ZXggfTsKICAgICBpZiAobWVtYmVycy0+cmVxdWVzdE51bWJlciAh
PSBtX3JlcXVlc3ROdW1iZXIpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTE2MCw3ICsxMTU5LDcg
QEAgdm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6bG9hZEZpbmlzaGVkKFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IE4KIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwogICAgIFdlYktpdFdlYlNyYyogc3JjID0gV0VCS0lUX1dFQl9TUkMobV9zcmMuZ2V0KCkpOwot
ICAgIGF1dG8gbWVtYmVycyA9IGhvbGRMb2NrKHNyYy0+cHJpdi0+ZGF0YU11dGV4KTsKKyAgICBE
YXRhTXV0ZXhMb2NrZXIgbWVtYmVycyB7IHNyYy0+cHJpdi0+ZGF0YU11dGV4IH07CiAgICAgaWYg
KG1lbWJlcnMtPnJlcXVlc3ROdW1iZXIgIT0gbV9yZXF1ZXN0TnVtYmVyKQogICAgICAgICByZXR1
cm47CiAKQEAgLTExNzAsNyArMTE2OSw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdD
bGllbnQ6OmxvYWRGaW5pc2hlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBOCiAKIGJv
b2wgd2ViS2l0U3JjV291bGRUYWludE9yaWdpbihXZWJLaXRXZWJTcmMqIHNyYywgY29uc3QgU2Vj
dXJpdHlPcmlnaW4mIG9yaWdpbikKIHsKLSAgICBhdXRvIG1lbWJlcnMgPSBob2xkTG9jayhzcmMt
PnByaXYtPmRhdGFNdXRleCk7CisgICAgRGF0YU11dGV4TG9ja2VyIG1lbWJlcnMgeyBzcmMtPnBy
aXYtPmRhdGFNdXRleCB9OwogCiAgICAgYXV0byogY2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGll
bnQgPSByZWludGVycHJldF9jYXN0PENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50Kj4obWVt
YmVycy0+cmVzb3VyY2UtPmNsaWVudCgpKTsKICAgICBmb3IgKGF1dG8mIHJlc3BvbnNlT3JpZ2lu
IDogY2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQtPnNlY3VyaXR5T3JpZ2lucygpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNl
L01lZGlhU291cmNlVHJhY2tHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJjZVRyYWNrR1N0cmVhbWVyLmNwcAppbmRl
eCA4NjJiMTY5NTE5NDdlZDU1YmRmYWQzMjM4ODcxOTdiYzZlMGZkMzc2Li5kMTg3OTJjY2EyOTUx
YWMxNjA0NThhM2I5ODgyOWNiNTdlODVlMWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291cmNlVHJhY2tHU3RyZWFtZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2Uv
TWVkaWFTb3VyY2VUcmFja0dTdHJlYW1lci5jcHAKQEAgLTM3LDggKzM3LDYgQEAKIEdTVF9ERUJV
R19DQVRFR09SWV9FWFRFUk4od2Via2l0X21zZV9kZWJ1Zyk7CiAjZGVmaW5lIEdTVF9DQVRfREVG
QVVMVCB3ZWJraXRfbXNlX2RlYnVnCiAKLXVzaW5nIFdURjo6RGF0YU11dGV4OwotCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIE1lZGlhU291cmNlVHJhY2tHU3RyZWFtZXI6Ok1lZGlhU291cmNlVHJh
Y2tHU3RyZWFtZXIoVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6VHJhY2tUeXBlIHR5cGUsIEF0
b21TdHJpbmcgdHJhY2tJZCwgR1JlZlB0cjxHc3RDYXBzPiYmIGluaXRpYWxDYXBzKQpAQCAtNjEs
MjggKzU5LDI4IEBAIFJlZjxNZWRpYVNvdXJjZVRyYWNrR1N0cmVhbWVyPiBNZWRpYVNvdXJjZVRy
YWNrR1N0cmVhbWVyOjpjcmVhdGUoVHJhY2tQcml2YXRlQmFzCiBib29sIE1lZGlhU291cmNlVHJh
Y2tHU3RyZWFtZXI6OmlzUmVhZHlGb3JNb3JlU2FtcGxlcygpCiB7CiAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKLSAgICBhdXRvIHF1ZXVlID0gaG9sZExvY2sobV9xdWV1ZURhdGFNdXRleCk7
CisgICAgRGF0YU11dGV4TG9ja2VyIHF1ZXVlIHsgbV9xdWV1ZURhdGFNdXRleCB9OwogICAgIHJl
dHVybiAhcXVldWUtPmlzRnVsbCgpOwogfQogCiB2b2lkIE1lZGlhU291cmNlVHJhY2tHU3RyZWFt
ZXI6Om5vdGlmeVdoZW5SZWFkeUZvck1vcmVTYW1wbGVzKFRyYWNrUXVldWU6Okxvd0xldmVsSGFu
ZGxlciYmIGhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBhdXRv
IHF1ZXVlID0gaG9sZExvY2sobV9xdWV1ZURhdGFNdXRleCk7CisgICAgRGF0YU11dGV4TG9ja2Vy
IHF1ZXVlIHsgbV9xdWV1ZURhdGFNdXRleCB9OwogICAgIHF1ZXVlLT5ub3RpZnlXaGVuTG93TGV2
ZWwoV1RGTW92ZShoYW5kbGVyKSk7CiB9CiAKIHZvaWQgTWVkaWFTb3VyY2VUcmFja0dTdHJlYW1l
cjo6ZW5xdWV1ZU9iamVjdChHUmVmUHRyPEdzdE1pbmlPYmplY3Q+JiYgb2JqZWN0KQogewogICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgYXV0byBxdWV1ZSA9IGhvbGRMb2NrKG1fcXVl
dWVEYXRhTXV0ZXgpOworICAgIERhdGFNdXRleExvY2tlciBxdWV1ZSB7IG1fcXVldWVEYXRhTXV0
ZXggfTsKICAgICBxdWV1ZS0+ZW5xdWV1ZU9iamVjdChXVEZNb3ZlKG9iamVjdCkpOwogfQogCiB2
b2lkIE1lZGlhU291cmNlVHJhY2tHU3RyZWFtZXI6OmNsZWFyUXVldWUoKQogewogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7Ci0gICAgYXV0byBxdWV1ZSA9IGhvbGRMb2NrKG1fcXVldWVEYXRh
TXV0ZXgpOworICAgIERhdGFNdXRleExvY2tlciBxdWV1ZSB7IG1fcXVldWVEYXRhTXV0ZXggfTsK
ICAgICBxdWV1ZS0+Y2xlYXIoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJjZVRyYWNrR1N0cmVhbWVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291
cmNlVHJhY2tHU3RyZWFtZXIuaAppbmRleCA2YWU0MWM0YWExZDExMzMxMDBkM2Y4ODk4NGQxZDFj
OTQ2NjBjYjQ4Li44ZGM1ZjU0MTFhMzVlMGVmMzQxMDdkMGJlYTRlYTJlYzQ2OGQ5ZmVjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01l
ZGlhU291cmNlVHJhY2tHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291cmNlVHJhY2tHU3RyZWFtZXIuaApAQCAtNDcs
NyArNDcsNyBAQCBwdWJsaWM6CiAgICAgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6VHJhY2tU
eXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KICAgICBBdG9tU3RyaW5nIHRyYWNr
SWQoKSBjb25zdCB7IHJldHVybiBtX3RyYWNrSWQ7IH0KICAgICBHUmVmUHRyPEdzdENhcHM+JiBp
bml0aWFsQ2FwcygpIHsgcmV0dXJuIG1faW5pdGlhbENhcHM7IH0KLSAgICBXVEY6OkRhdGFNdXRl
eDxUcmFja1F1ZXVlPiYgcXVldWVEYXRhTXV0ZXgoKSB7IHJldHVybiBtX3F1ZXVlRGF0YU11dGV4
OyB9CisgICAgRGF0YU11dGV4PFRyYWNrUXVldWU+JiBxdWV1ZURhdGFNdXRleCgpIHsgcmV0dXJu
IG1fcXVldWVEYXRhTXV0ZXg7IH0KIAogICAgIGJvb2wgaXNSZWFkeUZvck1vcmVTYW1wbGVzKCk7
CiAKQEAgLTY5LDcgKzY5LDcgQEAgcHJpdmF0ZToKICAgICBUcmFja1ByaXZhdGVCYXNlR1N0cmVh
bWVyOjpUcmFja1R5cGUgbV90eXBlOwogICAgIEF0b21TdHJpbmcgbV90cmFja0lkOwogICAgIEdS
ZWZQdHI8R3N0Q2Fwcz4gbV9pbml0aWFsQ2FwczsKLSAgICBXVEY6OkRhdGFNdXRleDxUcmFja1F1
ZXVlPiBtX3F1ZXVlRGF0YU11dGV4OworICAgIERhdGFNdXRleDxUcmFja1F1ZXVlPiBtX3F1ZXVl
RGF0YU11dGV4OwogCiAgICAgYm9vbCBtX2lzUmVtb3ZlZCB7IGZhbHNlIH07CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9XZWJL
aXRNZWRpYVNvdXJjZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvbXNlL1dlYktpdE1lZGlhU291cmNlR1N0cmVhbWVyLmNwcAppbmRleCA3
ZjBhOWQ0YWNiMGYzMTJmYzVkMGViM2I5NmQ2NDVlNDZjMGNkNWY5Li43ZmNmNDZhNWMxZTZhZTBm
ZWY2YThhNDlhM2M5MjNmODlkNDg2Y2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1dlYktpdE1lZGlhU291cmNlR1N0cmVhbWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1dl
YktpdE1lZGlhU291cmNlR1N0cmVhbWVyLmNwcApAQCAtMTg0LDggKzE4NCw4IEBAIHN0cnVjdCBT
dHJlYW0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U3RyZWFtPiB7CiAgICAgICAgIEdz
dFNlZ21lbnQgc2VnbWVudDsKICAgICAgICAgR1JlZlB0cjxHc3RDYXBzPiBwZW5kaW5nSW5pdGlh
bENhcHM7CiAgICAgICAgIEdSZWZQdHI8R3N0Q2Fwcz4gcHJldmlvdXNDYXBzOyAvLyBDYXBzIGZy
b20gZW5xdWV1ZWQgc2FtcGxlcyBhcmUgY29tcGFyZWQgdG8gdGhlc2UgdG8gcHVzaCBDQVBTIGV2
ZW50cyBhcyBuZWVkZWQuCi0gICAgICAgIFVuY2hlY2tlZENvbmRpdGlvbiBwYWRMaW5rZWRPckZs
dXNoZWRDb25kaXRpb247Ci0gICAgICAgIFVuY2hlY2tlZENvbmRpdGlvbiBxdWV1ZUNoYW5nZWRP
ckZsdXNoZWRDb25kaXRpb247CisgICAgICAgIENvbmRpdGlvbiBwYWRMaW5rZWRPckZsdXNoZWRD
b25kaXRpb247CisgICAgICAgIENvbmRpdGlvbiBxdWV1ZUNoYW5nZWRPckZsdXNoZWRDb25kaXRp
b247CiAgICAgICAgIGJvb2wgaXNGbHVzaGluZyB7IGZhbHNlIH07CiAKICAgICAgICAgLy8gRmx1
c2hlcyBiZWZvcmUgYW55IGJ1ZmZlciBoYXMgYmVlbiBwb3BwZWQgZnJvbSB0aGUgcXVldWUgYW5k
IHNlbnQgZG93bnN0cmVhbSBjYW4gYmUgYXZvaWRlZCBqdXN0CkBAIC0zNDQsNyArMzQ0LDcgQEAg
c3RhdGljIGdib29sZWFuIHdlYktpdE1lZGlhU3JjQWN0aXZhdGVNb2RlKEdzdFBhZCogcGFkLCBH
c3RPYmplY3QqIHNvdXJjZSwgR3N0UGEKICAgICAgICAgLy8gVW5ibG9jayB0aGUgc3RyZWFtaW5n
IHRocmVhZC4KICAgICAgICAgUmVmUHRyPFN0cmVhbT4mIHN0cmVhbSA9IFdFQktJVF9NRURJQV9T
UkNfUEFEKHBhZCktPnByaXYtPnN0cmVhbTsKICAgICAgICAgewotICAgICAgICAgICAgYXV0byBz
dHJlYW1pbmdNZW1iZXJzID0gaG9sZExvY2soc3RyZWFtLT5zdHJlYW1pbmdNZW1iZXJzRGF0YU11
dGV4KTsKKyAgICAgICAgICAgIERhdGFNdXRleExvY2tlciBzdHJlYW1pbmdNZW1iZXJzIHsgc3Ry
ZWFtLT5zdHJlYW1pbmdNZW1iZXJzRGF0YU11dGV4IH07CiAgICAgICAgICAgICBzdHJlYW1pbmdN
ZW1iZXJzLT5pc0ZsdXNoaW5nID0gdHJ1ZTsKICAgICAgICAgICAgIHN0cmVhbWluZ01lbWJlcnMt
PnBhZExpbmtlZE9yRmx1c2hlZENvbmRpdGlvbi5ub3RpZnlPbmUoKTsKICAgICAgICAgICAgIHN0
cmVhbWluZ01lbWJlcnMtPnF1ZXVlQ2hhbmdlZE9yRmx1c2hlZENvbmRpdGlvbi5ub3RpZnlPbmUo
KTsKQEAgLTM1NCw3ICszNTQsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0TWVkaWFTcmNBY3Rp
dmF0ZU1vZGUoR3N0UGFkKiBwYWQsIEdzdE9iamVjdCogc291cmNlLCBHc3RQYQogICAgICAgICAv
LyBPdGhlcndpc2UgYSBkZWFkbG9jayB3b3VsZCBvY2N1ciBhcyB0aGUgbmV4dCBmdW5jdGlvbiB0
cmllcyB0byBqb2luIHRoZSB0aHJlYWQuCiAgICAgICAgIGdzdF9wYWRfc3RvcF90YXNrKHBhZCk7
CiAgICAgICAgIHsKLSAgICAgICAgICAgIGF1dG8gc3RyZWFtaW5nTWVtYmVycyA9IGhvbGRMb2Nr
KHN0cmVhbS0+c3RyZWFtaW5nTWVtYmVyc0RhdGFNdXRleCk7CisgICAgICAgICAgICBEYXRhTXV0
ZXhMb2NrZXIgc3RyZWFtaW5nTWVtYmVycyB7IHN0cmVhbS0+c3RyZWFtaW5nTWVtYmVyc0RhdGFN
dXRleCB9OwogICAgICAgICAgICAgc3RyZWFtaW5nTWVtYmVycy0+aXNGbHVzaGluZyA9IGZhbHNl
OwogICAgICAgICB9CiAgICAgfQpAQCAtMzY0LDcgKzM2NCw3IEBAIHN0YXRpYyBnYm9vbGVhbiB3
ZWJLaXRNZWRpYVNyY0FjdGl2YXRlTW9kZShHc3RQYWQqIHBhZCwgR3N0T2JqZWN0KiBzb3VyY2Us
IEdzdFBhCiBzdGF0aWMgdm9pZCB3ZWJLaXRNZWRpYVNyY1BhZExpbmtlZChHc3RQYWQqIHBhZCwg
R3N0UGFkKiwgdm9pZCopCiB7CiAgICAgUmVmUHRyPFN0cmVhbT4mIHN0cmVhbSA9IFdFQktJVF9N
RURJQV9TUkNfUEFEKHBhZCktPnByaXYtPnN0cmVhbTsKLSAgICBhdXRvIHN0cmVhbWluZ01lbWJl
cnMgPSBob2xkTG9jayhzdHJlYW0tPnN0cmVhbWluZ01lbWJlcnNEYXRhTXV0ZXgpOworICAgIERh
dGFNdXRleExvY2tlciBzdHJlYW1pbmdNZW1iZXJzIHsgc3RyZWFtLT5zdHJlYW1pbmdNZW1iZXJz
RGF0YU11dGV4IH07CiAgICAgc3RyZWFtaW5nTWVtYmVycy0+cGFkTGlua2VkT3JGbHVzaGVkQ29u
ZGl0aW9uLm5vdGlmeU9uZSgpOwogfQogCkBAIC0zNzQsNyArMzc0LDcgQEAgc3RhdGljIHZvaWQg
d2ViS2l0TWVkaWFTcmNMb29wKHZvaWQqIHVzZXJEYXRhKQogICAgIEdzdFBhZCogcGFkID0gR1NU
X1BBRCh1c2VyRGF0YSk7CiAgICAgUmVmUHRyPFN0cmVhbT4mIHN0cmVhbSA9IFdFQktJVF9NRURJ
QV9TUkNfUEFEKHBhZCktPnByaXYtPnN0cmVhbTsKIAotICAgIGF1dG8gc3RyZWFtaW5nTWVtYmVy
cyA9IGhvbGRMb2NrKHN0cmVhbS0+c3RyZWFtaW5nTWVtYmVyc0RhdGFNdXRleCk7CisgICAgRGF0
YU11dGV4TG9ja2VyIHN0cmVhbWluZ01lbWJlcnMgeyBzdHJlYW0tPnN0cmVhbWluZ01lbWJlcnNE
YXRhTXV0ZXggfTsKICAgICBpZiAoc3RyZWFtaW5nTWVtYmVycy0+aXNGbHVzaGluZykgewogICAg
ICAgICBnc3RfcGFkX3BhdXNlX3Rhc2socGFkKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNDQwLDcg
KzQ0MCw3IEBAIHN0YXRpYyB2b2lkIHdlYktpdE1lZGlhU3JjTG9vcCh2b2lkKiB1c2VyRGF0YSkK
IAogICAgIEdSZWZQdHI8R3N0TWluaU9iamVjdD4gb2JqZWN0OwogICAgIHsKLSAgICAgICAgYXV0
byBxdWV1ZSA9IGhvbGRMb2NrKHN0cmVhbS0+dHJhY2stPnF1ZXVlRGF0YU11dGV4KCkpOworICAg
ICAgICBEYXRhTXV0ZXhMb2NrZXIgcXVldWUgeyBzdHJlYW0tPnRyYWNrLT5xdWV1ZURhdGFNdXRl
eCgpIH07CiAgICAgICAgIGlmICghcXVldWUtPmlzRW1wdHkoKSkgewogICAgICAgICAgICAgb2Jq
ZWN0ID0gcXVldWUtPnBvcCgpOwogICAgICAgICAgICAgc3RyZWFtaW5nTWVtYmVycy0+aGFzUG9w
cGVkRmlyc3RPYmplY3QgPSB0cnVlOwpAQCAtNDQ4LDcgKzQ0OCw3IEBAIHN0YXRpYyB2b2lkIHdl
YktpdE1lZGlhU3JjTG9vcCh2b2lkKiB1c2VyRGF0YSkKICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgIHF1ZXVlLT5ub3RpZnlXaGVuTm90RW1wdHkoWyZvYmplY3QsIHN0cmVhbV0oR1JlZlB0
cjxHc3RNaW5pT2JqZWN0PiYmIHJlY2VpdmVkT2JqZWN0KSB7CiAgICAgICAgICAgICAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICAgICAgICAgICAgICBhdXRvIHN0cmVhbWluZ01lbWJl
cnMgPSBob2xkTG9jayhzdHJlYW0tPnN0cmVhbWluZ01lbWJlcnNEYXRhTXV0ZXgpOworICAgICAg
ICAgICAgICAgIERhdGFNdXRleExvY2tlciBzdHJlYW1pbmdNZW1iZXJzIHsgc3RyZWFtLT5zdHJl
YW1pbmdNZW1iZXJzRGF0YU11dGV4IH07CiAgICAgICAgICAgICAgICAgQVNTRVJUKCFzdHJlYW1p
bmdNZW1iZXJzLT5pc0ZsdXNoaW5nKTsKIAogICAgICAgICAgICAgICAgIG9iamVjdCA9IFdURk1v
dmUocmVjZWl2ZWRPYmplY3QpOwpAQCAtNDY1LDcgKzQ2NSw3IEBAIHN0YXRpYyB2b2lkIHdlYktp
dE1lZGlhU3JjTG9vcCh2b2lkKiB1c2VyRGF0YSkKICAgICB9KTsKICAgICB7CiAgICAgICAgIC8v
IEVuc3VyZSB0aGF0IG5vdGlmeVdoZW5Ob3RFbXB0eSgpJ3MgY2FsbGJhY2sgKGlmIGFueSkgaXMg
Y2xlYXJlZCBhZnRlciB0aGlzIHBvaW50LgotICAgICAgICBhdXRvIHF1ZXVlID0gaG9sZExvY2so
c3RyZWFtLT50cmFjay0+cXVldWVEYXRhTXV0ZXgoKSk7CisgICAgICAgIERhdGFNdXRleExvY2tl
ciBxdWV1ZSB7IHN0cmVhbS0+dHJhY2stPnF1ZXVlRGF0YU11dGV4KCkgfTsKICAgICAgICAgcXVl
dWUtPnJlc2V0Tm90RW1wdHlIYW5kbGVyKCk7CiAgICAgfQogICAgIGlmIChzdHJlYW1pbmdNZW1i
ZXJzLT5pc0ZsdXNoaW5nKSB7CkBAIC01MDksNyArNTA5LDcgQEAgc3RhdGljIHZvaWQgd2ViS2l0
TWVkaWFTcmNMb29wKHZvaWQqIHVzZXJEYXRhKQogICAgICAgICB9CiAKICAgICAgICAgLy8gUHVz
aCB0aGUgYnVmZmVyIHdpdGhvdXQgdGhlIHN0cmVhbWluZ01lbWJlcnMgbG9jayBzbyB0aGF0IGZs
dXNoZXMgY2FuIGhhcHBlbiB3aGlsZSBpdCB0cmF2ZWxzIGRvd25zdHJlYW0uCi0gICAgICAgIHN0
cmVhbWluZ01lbWJlcnMubG9ja0hvbGRlcigpLnVubG9ja0Vhcmx5KCk7CisgICAgICAgIHN0cmVh
bWluZ01lbWJlcnMudW5sb2NrRWFybHkoKTsKIAogICAgICAgICBBU1NFUlQoR1NUX0JVRkZFUl9Q
VFNfSVNfVkFMSUQoYnVmZmVyLmdldCgpKSk7CiAgICAgICAgIEdTVF9UUkFDRV9PQkpFQ1QocGFk
LCAiUHVzaGluZyBidWZmZXIgZG93bnN0cmVhbTogJSIgR1NUX1BUUl9GT1JNQVQsIGJ1ZmZlci5n
ZXQoKSk7CkBAIC01MjUsNyArNTI1LDcgQEAgc3RhdGljIHZvaWQgd2ViS2l0TWVkaWFTcmNMb29w
KHZvaWQqIHVzZXJEYXRhKQogICAgICAgICAvLyBFT1MgZXZlbnRzIGFuZCBvdGhlciBlbnF1ZXVl
ZCBldmVudHMgYXJlIGFsc28gc2VudCB1bmxvY2tlZCBzbyB0aGV5IGNhbiByZWFjdCB0byBmbHVz
aGVzIGlmIG5lY2Vzc2FyeS4KICAgICAgICAgR1JlZlB0cjxHc3RFdmVudD4gZXZlbnQgPSBHUmVm
UHRyPEdzdEV2ZW50PihHU1RfRVZFTlQob2JqZWN0LmxlYWtSZWYoKSkpOwogCi0gICAgICAgIHN0
cmVhbWluZ01lbWJlcnMubG9ja0hvbGRlcigpLnVubG9ja0Vhcmx5KCk7CisgICAgICAgIHN0cmVh
bWluZ01lbWJlcnMudW5sb2NrRWFybHkoKTsKICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChwYWQs
ICJQdXNoaW5nIGV2ZW50IGRvd25zdHJlYW06ICUiIEdTVF9QVFJfRk9STUFULCBldmVudC5nZXQo
KSk7CiAgICAgICAgIGJvb2wgZXZlbnRIYW5kbGVkID0gZ3N0X3BhZF9wdXNoX2V2ZW50KHBhZCwg
R1JlZlB0cjxHc3RFdmVudD4oZXZlbnQpLmxlYWtSZWYoKSk7CiAgICAgICAgIGlmICghZXZlbnRI
YW5kbGVkKQpAQCAtNTQwLDExICs1NDAsMTEgQEAgc3RhdGljIHZvaWQgd2ViS2l0TWVkaWFTcmNT
dHJlYW1GbHVzaChTdHJlYW0qIHN0cmVhbSwgYm9vbCBpc1NlZWtpbmdGbHVzaCkKICAgICBib29s
IHNraXBGbHVzaCA9IGZhbHNlOwogCiAgICAgewotICAgICAgICBhdXRvIHN0cmVhbWluZ01lbWJl
cnMgPSBob2xkTG9jayhzdHJlYW0tPnN0cmVhbWluZ01lbWJlcnNEYXRhTXV0ZXgpOworICAgICAg
ICBEYXRhTXV0ZXhMb2NrZXIgc3RyZWFtaW5nTWVtYmVycyB7IHN0cmVhbS0+c3RyZWFtaW5nTWVt
YmVyc0RhdGFNdXRleCB9OwogCiAgICAgICAgIGlmICghc3RyZWFtaW5nTWVtYmVycy0+aGFzUG9w
cGVkRmlyc3RPYmplY3QpIHsKICAgICAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3RyZWFtLT5z
b3VyY2UsICJGbHVzaCByZXF1ZXN0IGZvciBzdHJlYW0gJyVzJyBvY2N1cnJlZCBiZWZvcmUgaGFz
UG9wcGVkRmlyc3RPYmplY3QsIGp1c3QgY2xlYXJpbmcgdGhlIHF1ZXVlIGFuZCByZWFkanVzdGlu
ZyB0aGUgc2VnbWVudC4iLCBzdHJlYW0tPnRyYWNrLT50cmFja0lkKCkuc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7Ci0gICAgICAgICAgICBhdXRvIHF1ZXVlID0gaG9sZExvY2soc3RyZWFtLT50cmFj
ay0+cXVldWVEYXRhTXV0ZXgoKSk7CisgICAgICAgICAgICBEYXRhTXV0ZXhMb2NrZXIgcXVldWUg
eyBzdHJlYW0tPnRyYWNrLT5xdWV1ZURhdGFNdXRleCgpIH07CiAgICAgICAgICAgICAvLyBXZSB1
c2UgY2xlYXIoKSBpbnN0ZWFkIG9mIGZsdXNoKCkgYmVjYXVzZSB0aGUgV2ViS2l0TWVkaWFTcmMg
c3RyZWFtaW5nIHRocmVhZCBjb3VsZCBiZSB3YWl0aW5nCiAgICAgICAgICAgICAvLyBmb3IgdGhl
IHF1ZXVlLiBmbHVzaCgpIHdvdWxkIGNhbmNlbCB0aGUgbm90RW1wdHlDYWxsYmFjayB0aGVyZWZv
cmUgbGVhdmluZyB0aGUgc3RyZWFtaW5nIHRocmVhZAogICAgICAgICAgICAgLy8gc3R1Y2sgd2Fp
dGluZyBmb3JldmVyLgpAQCAtNTU4LDggKzU1OCw4IEBAIHN0YXRpYyB2b2lkIHdlYktpdE1lZGlh
U3JjU3RyZWFtRmx1c2goU3RyZWFtKiBzdHJlYW0sIGJvb2wgaXNTZWVraW5nRmx1c2gpCiAgICAg
ICAgIC8vIHdoaWNoIHdpbGwga2VlcGluZyB0aGUgc3RyZWFtaW5nIHRocmVhZCBpZGxlLgogICAg
ICAgICBHU1RfREVCVUdfT0JKRUNUKHN0cmVhbS0+cGFkLmdldCgpLCAiVGFraW5nIHRoZSBTdHJl
YW1pbmdNZW1iZXJzIG11dGV4IGFuZCBzZXR0aW5nIGlzRmx1c2hpbmcgPSB0cnVlLiIpOwogICAg
ICAgICB7Ci0gICAgICAgICAgICBhdXRvIHN0cmVhbWluZ01lbWJlcnMgPSBob2xkTG9jayhzdHJl
YW0tPnN0cmVhbWluZ01lbWJlcnNEYXRhTXV0ZXgpOwotICAgICAgICAgICAgYXV0byBxdWV1ZSA9
IGhvbGRMb2NrKHN0cmVhbS0+dHJhY2stPnF1ZXVlRGF0YU11dGV4KCkpOworICAgICAgICAgICAg
RGF0YU11dGV4TG9ja2VyIHN0cmVhbWluZ01lbWJlcnMgeyBzdHJlYW0tPnN0cmVhbWluZ01lbWJl
cnNEYXRhTXV0ZXggfTsKKyAgICAgICAgICAgIERhdGFNdXRleExvY2tlciBxdWV1ZSB7IHN0cmVh
bS0+dHJhY2stPnF1ZXVlRGF0YU11dGV4KCkgfTsKIAogICAgICAgICAgICAgc3RyZWFtaW5nTWVt
YmVycy0+aXNGbHVzaGluZyA9IHRydWU7CiAgICAgICAgICAgICBxdWV1ZS0+Zmx1c2goKTsgLy8g
Q2xlYXIgdGhlIHF1ZXVlIGFuZCBjYW5jZWwgYW55IHdhaXRpbmcgY2FsbGJhY2suCkBAIC01ODEs
NyArNTgxLDcgQEAgc3RhdGljIHZvaWQgd2ViS2l0TWVkaWFTcmNTdHJlYW1GbHVzaChTdHJlYW0q
IHN0cmVhbSwgYm9vbCBpc1NlZWtpbmdGbHVzaCkKICAgICAgICAgLy8gSW4gdGhlIGNhc2Ugb2Yg
c2Vla2luZyBmbHVzaCB3ZSBhcmUgcmVzZXR0aW5nIHRoZSB0aW1lbGluZSAoc2VlIHRoZSBmbHVz
aCBzdG9wIGxhdGVyKS4KICAgICAgICAgLy8gVGhlIHJlc3VsdGluZyBzZWdtZW50IGlzIGJyYW5k
IG5ldywgYnV0IHdpdGggYSBkaWZmZXJlbnQgc3RhcnQgdGltZS4KICAgICAgICAgV2ViS2l0TWVk
aWFTcmNQcml2YXRlKiBwcml2ID0gc3RyZWFtLT5zb3VyY2UtPnByaXY7Ci0gICAgICAgIGF1dG8g
c3RyZWFtaW5nTWVtYmVycyA9IGhvbGRMb2NrKHN0cmVhbS0+c3RyZWFtaW5nTWVtYmVyc0RhdGFN
dXRleCk7CisgICAgICAgIERhdGFNdXRleExvY2tlciBzdHJlYW1pbmdNZW1iZXJzIHsgc3RyZWFt
LT5zdHJlYW1pbmdNZW1iZXJzRGF0YU11dGV4IH07CiAgICAgICAgIHN0cmVhbWluZ01lbWJlcnMt
PnNlZ21lbnQuYmFzZSA9IDA7CiAgICAgICAgIHN0cmVhbWluZ01lbWJlcnMtPnNlZ21lbnQucmF0
ZSA9IHByaXYtPnJhdGU7CiAgICAgICAgIHN0cmVhbWluZ01lbWJlcnMtPnNlZ21lbnQuc3RhcnQg
PSBzdHJlYW1pbmdNZW1iZXJzLT5zZWdtZW50LnRpbWUgPSBwcml2LT5zdGFydFRpbWU7CkBAIC01
OTUsNyArNTk1LDcgQEAgc3RhdGljIHZvaWQgd2ViS2l0TWVkaWFTcmNTdHJlYW1GbHVzaChTdHJl
YW0qIHN0cmVhbSwgYm9vbCBpc1NlZWtpbmdGbHVzaCkKICAgICAgICAgLy8gR1NUX0NMT0NLX1RJ
TUVfTk9ORSBpcyByZXR1cm5lZCB3aGVuIHRoZSBwaXBlbGluZSBpcyBub3QgeWV0IHByZS1yb2xs
ZWQgKGUuZy4ganVzdCBhZnRlciBhIHNlZWspLiBJbiB0aGlzIGNhc2UKICAgICAgICAgLy8gd2Ug
ZG9uJ3QgbmVlZCB0byBhZGp1c3QgdGhlIHNlZ21lbnQgdGhvdWdoLCBhcyBydW5uaW5nIHRpbWUg
aGFzIG5vdCBhZHZhbmNlZC4KICAgICAgICAgaWYgKEdTVF9DTE9DS19USU1FX0lTX1ZBTElEKHBp
cGVsaW5lU3RyZWFtVGltZSkpIHsKLSAgICAgICAgICAgIGF1dG8gc3RyZWFtaW5nTWVtYmVycyA9
IGhvbGRMb2NrKHN0cmVhbS0+c3RyZWFtaW5nTWVtYmVyc0RhdGFNdXRleCk7CisgICAgICAgICAg
ICBEYXRhTXV0ZXhMb2NrZXIgc3RyZWFtaW5nTWVtYmVycyB7IHN0cmVhbS0+c3RyZWFtaW5nTWVt
YmVyc0RhdGFNdXRleCB9OwogICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBpbmNyZWFzZSB0aGUg
YmFzZSBieSB0aGUgcnVubmluZyB0aW1lIGFjY3VtdWxhdGVkIGR1cmluZyB0aGUgcHJldmlvdXMg
c2VnbWVudC4KIAogICAgICAgICAgICAgR3N0Q2xvY2tUaW1lIHBpcGVsaW5lUnVubmluZ1RpbWUg
PSBnc3Rfc2VnbWVudF90b19ydW5uaW5nX3RpbWUoJnN0cmVhbWluZ01lbWJlcnMtPnNlZ21lbnQs
IEdTVF9GT1JNQVRfVElNRSwgcGlwZWxpbmVTdHJlYW1UaW1lKTsKQEAgLTYxNCw3ICs2MTQsNyBA
QCBzdGF0aWMgdm9pZCB3ZWJLaXRNZWRpYVNyY1N0cmVhbUZsdXNoKFN0cmVhbSogc3RyZWFtLCBi
b29sIGlzU2Vla2luZ0ZsdXNoKQogICAgICAgICBHU1RfUEFEX1NUUkVBTV9MT0NLKHN0cmVhbS0+
cGFkLmdldCgpKTsKICAgICAgICAgewogICAgICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChzdHJl
YW0tPnBhZC5nZXQoKSwgIlRha2luZyB0aGUgU3RyZWFtaW5nTWVtYmVycyBtdXRleCBhZ2Fpbi4i
KTsKLSAgICAgICAgICAgIGF1dG8gc3RyZWFtaW5nTWVtYmVycyA9IGhvbGRMb2NrKHN0cmVhbS0+
c3RyZWFtaW5nTWVtYmVyc0RhdGFNdXRleCk7CisgICAgICAgICAgICBEYXRhTXV0ZXhMb2NrZXIg
c3RyZWFtaW5nTWVtYmVycyB7IHN0cmVhbS0+c3RyZWFtaW5nTWVtYmVyc0RhdGFNdXRleCB9Owog
ICAgICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChzdHJlYW0tPnBhZC5nZXQoKSwgIlN0cmVhbWlu
Z01lbWJlcnMgbXV0ZXggdGFrZW4sIHVzaW5nIGl0IHRvIHNldCBpc0ZsdXNoaW5nID0gZmFsc2Uu
Iik7CiAgICAgICAgICAgICBzdHJlYW1pbmdNZW1iZXJzLT5pc0ZsdXNoaW5nID0gZmFsc2U7CiAg
ICAgICAgICAgICBzdHJlYW1pbmdNZW1iZXJzLT5kb2VzTmVlZFNlZ21lbnRFdmVudCA9IHRydWU7
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTVi
Yzk3MTg4MTY5MmE4Yjk5MjlmMmE5ZjZmOGIzMjM3NzM0N2UzNS4uZWEwNjIwZWQxYzQwOTI5ZTky
MzFlNDU2Zjc2OGY2MzM4MzQ4MmE5NSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIxLTA1LTI5ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRvcHQgY2xhbmcgdGhyZWFkIHNhZmV0
eSBhbm5vdGF0aW9ucyBpbiBXVEY6OkRhdGFNdXRleAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NDMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIEFQSSB0ZXN0IGR1ZSB0byBEYXRhTXV0ZXgg
QVBJIGNoYW5nZXMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9EYXRhTXV0
ZXguY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMjEtMDUtMjggIERh
cmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIENsaWVudHMgb2Ygb3B0aW9u
YWwgc2hvdWxkIHVzZSBoYXNfdmFsdWUgaW5zdGVhZCBvZiByZWx5aW5nIG9uIGhhc1ZhbHVlIG1h
Y3JvCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9EYXRhTXV0ZXgu
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRGF0YU11dGV4LmNwcAppbmRleCBi
NzgwYjk2OTZjYzMxNTQwOTgzOTBmZmI0ZTg3NDMyNmEwMjJmZDA5Li5lM2U3ODY0YTEzNmIwOTk0
ZmQ2ZGY0YzllMWEyNWEyMzNlM2E3ODc2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9EYXRhTXV0ZXguY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL0RhdGFNdXRleC5jcHAKQEAgLTMwLDggKzMwLDYgQEAKICNkZWZpbmUgRU5BQkxFX0RBVEFf
TVVURVhfQ0hFQ0tTIDEKICNpbmNsdWRlIDx3dGYvRGF0YU11dGV4Lmg+CiAKLXVzaW5nIG5hbWVz
cGFjZSBXVEY7Ci0KIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogc3RydWN0IE15U3RydWN0
dXJlIHsKQEAgLTQyLDkgKzQwLDkgQEAgVEVTVChXVEZfRGF0YU11dGV4LCBUYWtpbmdUaGVNdXRl
eCkKIHsKICAgICBEYXRhTXV0ZXg8TXlTdHJ1Y3R1cmU+IG15RGF0YU11dGV4OwogCi0gICAgT3du
ZXJBd2FyZUxvY2sqIG11dGV4OworICAgIExvY2sqIG11dGV4OwogICAgIHsKLSAgICAgICAgRGF0
YU11dGV4PE15U3RydWN0dXJlPjo6TG9ja2VkV3JhcHBlciB3cmFwcGVyKG15RGF0YU11dGV4KTsK
KyAgICAgICAgRGF0YU11dGV4TG9ja2VyIHdyYXBwZXIgeyBteURhdGFNdXRleCB9OwogICAgICAg
ICBtdXRleCA9ICZ3cmFwcGVyLm11dGV4KCk7CiAgICAgICAgIEFTU0VSVF9UUlVFKG11dGV4LT5p
c0xvY2tlZCgpKTsKICAgICAgICAgd3JhcHBlci0+bnVtYmVyID0gNTsKQEAgLTU3LDcgKzU1LDcg
QEAgVEVTVChXVEZfRGF0YU11dGV4LCBUYWtpbmdUaGVNdXRleCkKICAgICBBU1NFUlRfRkFMU0Uo
bXV0ZXgtPmlzTG9ja2VkKCkpOwogCiAgICAgewotICAgICAgICBEYXRhTXV0ZXg8TXlTdHJ1Y3R1
cmU+OjpMb2NrZWRXcmFwcGVyIHdyYXBwZXIobXlEYXRhTXV0ZXgpOworICAgICAgICBEYXRhTXV0
ZXhMb2NrZXIgd3JhcHBlciB7IG15RGF0YU11dGV4IH07CiAgICAgICAgIEVYUEVDVF9FUSh3cmFw
cGVyLT5udW1iZXIsIDUpOwogICAgIH0KIH0KQEAgLTY4LDcgKzY2LDcgQEAgVEVTVChXVEZfRGF0
YU11dGV4LCBSdW5VbmxvY2tlZElsbGVnYWxBY2Nlc3NEZWF0aFRlc3QpCiB7CiAgICAgOjp0ZXN0
aW5nOjpGTEFHU19ndGVzdF9kZWF0aF90ZXN0X3N0eWxlID0gInRocmVhZHNhZmUiOwogICAgIERh
dGFNdXRleDxNeVN0cnVjdHVyZT4gbXlEYXRhTXV0ZXg7Ci0gICAgRGF0YU11dGV4PE15U3RydWN0
dXJlPjo6TG9ja2VkV3JhcHBlciB3cmFwcGVyKG15RGF0YU11dGV4KTsKKyAgICBEYXRhTXV0ZXhM
b2NrZXIgd3JhcHBlciB7IG15RGF0YU11dGV4IH07CiAgICAgd3JhcHBlci0+bnVtYmVyID0gNTsK
IAogICAgIEFTU0VSVF9ERUFUSCh3cmFwcGVyLnJ1blVubG9ja2VkKFsmXSgpIHsKQEAgLTgwLDgg
Kzc4LDggQEAgVEVTVChXVEZfRGF0YU11dGV4LCBEb3VibGVMb2NrRGVhdGhUZXN0KQogewogICAg
IDo6dGVzdGluZzo6RkxBR1NfZ3Rlc3RfZGVhdGhfdGVzdF9zdHlsZSA9ICJ0aHJlYWRzYWZlIjsK
ICAgICBEYXRhTXV0ZXg8TXlTdHJ1Y3R1cmU+IG15RGF0YU11dGV4OwotICAgIERhdGFNdXRleDxN
eVN0cnVjdHVyZT46OkxvY2tlZFdyYXBwZXIgd3JhcHBlcjEobXlEYXRhTXV0ZXgpOwotICAgIEFT
U0VSVF9ERUFUSChEYXRhTXV0ZXg8TXlTdHJ1Y3R1cmU+OjpMb2NrZWRXcmFwcGVyIHdyYXBwZXIy
KG15RGF0YU11dGV4KSwgIiIpOworICAgIERhdGFNdXRleExvY2tlciB3cmFwcGVyMSB7IG15RGF0
YU11dGV4IH07CisgICAgQVNTRVJUX0RFQVRIKERhdGFNdXRleExvY2tlciB3cmFwcGVyMiB7IG15
RGF0YU11dGV4IH0sICIiKTsKIH0KICNlbmRpZgogCg==
</data>
<flag name="commit-queue"
          id="451487"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430125</attachid>
            <date>2021-05-29 20:20:02 -0700</date>
            <delta_ts>2021-05-29 20:26:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226431-20210529202002.patch</filename>
            <type>text/plain</type>
            <size>38963</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MjQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDk1NjVmYTExNTA1YTQ4N2I2ZTVhNThl
MzMzNzEwZGNhYjcwYWM5NmIuLjJkMzFjYTljYzA0OWUyMjExOGMyOGM1MDcxZmZlNWQ5ZTc0MTg2
OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMDUtMjkgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBBZG9wdCBjbGFuZyB0aHJlYWQgc2FmZXR5IGFubm90YXRp
b25zIGluIFdURjo6RGF0YU11dGV4CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjY0MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZG9wdCBjbGFuZyB0aHJlYWQgc2FmZXR5IGFubm90YXRpb25zIGluIFdU
Rjo6RGF0YU11dGV4LiBUaGlzIGFsbG93cyB1cyB0bworICAgICAgICBzdG9wIHVzaW5nIFVuY2hl
Y2tlZENvbmRpdGlvbiBpbiBhIGZldyBwbGFjZXMuCisKKyAgICAgICAgKiB3dGYvRGF0YU11dGV4
Lmg6CisgICAgICAgIChXVEY6OkRhdGFNdXRleDo6RGF0YU11dGV4KToKKwogMjAyMS0wNS0yOSAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFN0b3AgdXNpbmcgVW5j
aGVja2VkTG9jayBpbiBKU0M6OlZNSW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzAzYTVhN2U5Mjc1
M2NjYmQzMGE4N2NhYmUxODY2MDQ1MjQ1MWI1ZC4uYzU1ZjI2ZjJmNjdjZWEzNTk1Zjc2YWJkNWMx
ODQ0Njc1NTM5NTk0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDIxLTA1LTI5ICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRvcHQgY2xhbmcgdGhy
ZWFkIHNhZmV0eSBhbm5vdGF0aW9ucyBpbiBXVEY6OkRhdGFNdXRleAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NDMxCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGNvZGUgYmFzZSBkdWUgdG8g
RGF0YU11dGV4IEFQSSBjaGFuZ2VzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnBlcmZvcm1UYXNrQXRNZWRpYVRpbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp0cmlnZ2VyUmVw
YWludCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwOgorICAgICAgICAod2ViS2l0V2ViU3JjQ29u
c3RydWN0ZWQpOgorICAgICAgICAod2ViS2l0V2ViU3JjR2V0UHJvcGVydHkpOgorICAgICAgICAo
d2ViS2l0V2ViU3JjU2V0Q29udGV4dCk6CisgICAgICAgICh3ZWJLaXRXZWJTcmNDcmVhdGUpOgor
ICAgICAgICAod2ViS2l0V2ViU3JjTWFrZVJlcXVlc3QpOgorICAgICAgICAod2ViS2l0V2ViU3Jj
U3RvcCk6CisgICAgICAgICh3ZWJLaXRXZWJTcmNHZXRTaXplKToKKyAgICAgICAgKHdlYktpdFdl
YlNyY0lzU2Vla2FibGUpOgorICAgICAgICAod2ViS2l0V2ViU3JjRG9TZWVrKToKKyAgICAgICAg
KHdlYktpdFdlYlNyY1F1ZXJ5KToKKyAgICAgICAgKHdlYktpdFdlYlNyY1VuTG9jayk6CisgICAg
ICAgICh3ZWJLaXRXZWJTcmNVbkxvY2tTdG9wKToKKyAgICAgICAgKHdlYktpdFdlYlNyY1NldE1l
ZGlhUGxheWVyKToKKyAgICAgICAgKHdlYktpdFNyY1Bhc3NlZENPUlNBY2Nlc3NDaGVjayk6Cisg
ICAgICAgIChDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6cmVzcG9uc2VSZWNlaXZlZCk6
CisgICAgICAgIChDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6ZGF0YVJlY2VpdmVkKToK
KyAgICAgICAgKENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjphY2Nlc3NDb250cm9sQ2hl
Y2tGYWlsZWQpOgorICAgICAgICAoQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmxvYWRG
YWlsZWQpOgorICAgICAgICAoQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmxvYWRGaW5p
c2hlZCk6CisgICAgICAgICh3ZWJLaXRTcmNXb3VsZFRhaW50T3JpZ2luKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291cmNlVHJhY2tHU3RyZWFtZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2VUcmFja0dTdHJlYW1lcjo6aXNSZWFk
eUZvck1vcmVTYW1wbGVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlVHJhY2tHU3Ry
ZWFtZXI6Om5vdGlmeVdoZW5SZWFkeUZvck1vcmVTYW1wbGVzKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhU291cmNlVHJhY2tHU3RyZWFtZXI6OmVucXVldWVPYmplY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFTb3VyY2VUcmFja0dTdHJlYW1lcjo6Y2xlYXJRdWV1ZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJjZVRyYWNrR1N0cmVhbWVy
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9XZWJLaXRNZWRp
YVNvdXJjZUdTdHJlYW1lci5jcHA6CisgICAgICAgICh3ZWJLaXRNZWRpYVNyY0FjdGl2YXRlTW9k
ZSk6CisgICAgICAgICh3ZWJLaXRNZWRpYVNyY1BhZExpbmtlZCk6CisgICAgICAgICh3ZWJLaXRN
ZWRpYVNyY0xvb3ApOgorICAgICAgICAod2ViS2l0TWVkaWFTcmNTdHJlYW1GbHVzaCk6CisKIDIw
MjEtMDUtMjggIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIENsaWVu
dHMgb2Ygb3B0aW9uYWwgc2hvdWxkIHVzZSBoYXNfdmFsdWUgaW5zdGVhZCBvZiByZWx5aW5nIG9u
IGhhc1ZhbHVlIG1hY3JvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9EYXRhTXV0ZXguaCBi
L1NvdXJjZS9XVEYvd3RmL0RhdGFNdXRleC5oCmluZGV4IGEyZTFkMjQwYThhNTA3YmU2YmJiOTll
NzMzNDM1MTI1NWY1NThlNTUuLjc3YTFlZDc5YjEwOTRjM2IzZmMwNGFiOTFiMzEzNDQzYTUzZDNj
YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0RhdGFNdXRleC5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL0RhdGFNdXRleC5oCkBAIC00MCwxMTkgKzQwLDg2IEBAIG5hbWVzcGFjZSBXVEYgewog
I2RlZmluZSBEQVRBX01VVEVYX0NIRUNLKGV4cHIpCiAjZW5kaWYKIAotdGVtcGxhdGU8dHlwZW5h
bWUgTG9ja1R5cGU+Ci1jbGFzcyBPd25lckF3YXJlTG9ja0FkYXB0ZXIgewordGVtcGxhdGUgPHR5
cGVuYW1lIFQ+IGNsYXNzIERhdGFNdXRleExvY2tlcjsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4K
K2NsYXNzIERhdGFNdXRleCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoRGF0YU11dGV4KTsKK3B1YmxpYzoKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSAuLi5BcmdzPgorICAgIGV4cGxpY2l0IERhdGFNdXRleChBcmdzJiYuLi4gYXJncykKKyAg
ICAgICAgOiBtX2RhdGEoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKQorICAgIHsgfQorCitw
cml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBEYXRhTXV0ZXhMb2NrZXI8VD47CisKKyAgICBMb2Nr
IG1fbXV0ZXg7CisgICAgVCBtX2RhdGEgV1RGX0dVQVJERURfQllfTE9DSyhtX211dGV4KTsKK307
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgV1RGX0NBUEFCSUxJVFlfU0NPUEVEX0xP
Q0sgRGF0YU11dGV4TG9ja2VyIHsKIHB1YmxpYzoKLSAgICB2b2lkIGxvY2soKQorICAgIGV4cGxp
Y2l0IERhdGFNdXRleExvY2tlcihEYXRhTXV0ZXg8VD4mIGRhdGFNdXRleCkgV1RGX0FDUVVJUkVT
X0xPQ0sobV9kYXRhTXV0ZXgubV9tdXRleCkKKyAgICAgICAgOiBtX2RhdGFNdXRleChkYXRhTXV0
ZXgpCiAgICAgewotICAgICAgICBEQVRBX01VVEVYX0NIRUNLKG1fb3duZXIgIT0gJlRocmVhZDo6
Y3VycmVudCgpKTsgLy8gVGhyZWFkIGF0dGVtcHRlZCByZWN1cnNpdmUgbG9jayAodW5zdXBwb3J0
ZWQpLgotICAgICAgICBtX2xvY2subG9jaygpOwotI2lmIEVOQUJMRV9EQVRBX01VVEVYX0NIRUNL
UwotICAgICAgICBBU1NFUlQoIW1fb3duZXIpOwotICAgICAgICBtX293bmVyID0gJlRocmVhZDo6
Y3VycmVudCgpOwotI2VuZGlmCisgICAgICAgIERBVEFfTVVURVhfQ0hFQ0soIW11dGV4KCkuaXNI
ZWxkKCkpOworICAgICAgICBtdXRleCgpLmxvY2soKTsKKyAgICAgICAgbV9pc0xvY2tlZCA9IHRy
dWU7CiAgICAgfQogCi0gICAgdm9pZCB1bmxvY2soKQorICAgIH5EYXRhTXV0ZXhMb2NrZXIoKSBX
VEZfUkVMRUFTRVNfTE9DSyhtX2RhdGFNdXRleC5tX211dGV4KQogICAgIHsKLSNpZiBFTkFCTEVf
REFUQV9NVVRFWF9DSEVDS1MKLSAgICAgICAgbV9vd25lciA9IG51bGxwdHI7Ci0jZW5kaWYKLSAg
ICAgICAgbV9sb2NrLnVubG9jaygpOworICAgICAgICBpZiAobV9pc0xvY2tlZCkKKyAgICAgICAg
ICAgIG11dGV4KCkudW5sb2NrKCk7CiAgICAgfQogCi0gICAgYm9vbCB0cnlMb2NrKCkKKyAgICBU
KiBvcGVyYXRvci0+KCkKICAgICB7Ci0gICAgICAgIERBVEFfTVVURVhfQ0hFQ0sobV9vd25lciAh
PSAmVGhyZWFkOjpjdXJyZW50KCkpOyAvLyBUaHJlYWQgYXR0ZW1wdGVkIHJlY3Vyc2l2ZSBsb2Nr
ICh1bnN1cHBvcnRlZCkuCi0gICAgICAgIGlmICghbV9sb2NrLnRyeUxvY2soKSkKLSAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLQotI2lmIEVOQUJMRV9EQVRBX01VVEVYX0NIRUNLUwotICAgICAg
ICBBU1NFUlQoIW1fb3duZXIpOwotICAgICAgICBtX293bmVyID0gJlRocmVhZDo6Y3VycmVudCgp
OwotI2VuZGlmCi0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBEQVRBX01VVEVYX0NIRUNL
KG11dGV4KCkuaXNIZWxkKCkpOworICAgICAgICBhc3NlcnRJc0hlbGQobV9kYXRhTXV0ZXgubV9t
dXRleCk7CisgICAgICAgIHJldHVybiAmbV9kYXRhTXV0ZXgubV9kYXRhOwogICAgIH0KIAotICAg
IGJvb2wgaXNMb2NrZWQoKSBjb25zdAorICAgIFQmIG9wZXJhdG9yKigpCiAgICAgewotICAgICAg
ICByZXR1cm4gbV9sb2NrLmlzTG9ja2VkKCk7CisgICAgICAgIERBVEFfTVVURVhfQ0hFQ0sobXV0
ZXgoKS5pc0hlbGQoKSk7CisgICAgICAgIGFzc2VydElzSGVsZChtX2RhdGFNdXRleC5tX211dGV4
KTsKKyAgICAgICAgcmV0dXJuIG1fZGF0YU11dGV4Lm1fZGF0YTsKICAgICB9CiAKLXByaXZhdGU6
Ci0jaWYgRU5BQkxFX0RBVEFfTVVURVhfQ0hFQ0tTCi0gICAgVGhyZWFkKiBtX293bmVyIHsgbnVs
bHB0ciB9OyAvLyBVc2UgVGhyZWFkKiBpbnN0ZWFkIG9mIFJlZlB0cjxUaHJlYWQ+IHNpbmNlIG1f
b3duZXIgdGhyZWFkIGlzIGFsd2F5cyBhbGl2ZSB3aGlsZSBtX293bmVyIGlzIHNldC4KLSNlbmRp
ZgotICAgIExvY2tUeXBlIG1fbG9jazsKLX07Ci0KLXVzaW5nIE93bmVyQXdhcmVMb2NrID0gT3du
ZXJBd2FyZUxvY2tBZGFwdGVyPExvY2s+OworICAgIExvY2smIG11dGV4KCkgV1RGX1JFVFVSTlNf
TE9DSyhtX2RhdGFNdXRleC5tX211dGV4KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZGF0YU11
dGV4Lm1fbXV0ZXg7CisgICAgfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBMb2Nr
VHlwZSA9IE93bmVyQXdhcmVMb2NrPgotY2xhc3MgRGF0YU11dGV4IHsKLSAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEYXRhTXV0ZXgpOwotcHVi
bGljOgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIC4uLkFyZ3M+Ci0gICAgZXhwbGljaXQgRGF0YU11
dGV4KEFyZ3MmJi4uLiBhcmdzKQotICAgICAgICA6IG1fZGF0YShzdGQ6OmZvcndhcmQ8QXJncz4o
YXJncykuLi4pCi0gICAgeyB9CisgICAgdm9pZCB1bmxvY2tFYXJseSgpIFdURl9SRUxFQVNFU19M
T0NLKG1fZGF0YU11dGV4Lm1fbXV0ZXgpCisgICAgeworICAgICAgICBEQVRBX01VVEVYX0NIRUNL
KG11dGV4KCkuaXNIZWxkKCkpOworICAgICAgICBtX2lzTG9ja2VkID0gZmFsc2U7CisgICAgICAg
IG11dGV4KCkudW5sb2NrKCk7CisgICAgfQogCi0gICAgY2xhc3MgTG9ja2VkV3JhcHBlciB7Ci0g
ICAgcHVibGljOgotICAgICAgICBleHBsaWNpdCBMb2NrZWRXcmFwcGVyKERhdGFNdXRleCYgZGF0
YU11dGV4KQotICAgICAgICAgICAgOiBtX211dGV4KGRhdGFNdXRleC5tX211dGV4KQotICAgICAg
ICAgICAgLCBtX2xvY2tIb2xkZXIoZGF0YU11dGV4Lm1fbXV0ZXgpCi0gICAgICAgICAgICAsIG1f
ZGF0YShkYXRhTXV0ZXgubV9kYXRhKQotICAgICAgICB7IH0KLQotICAgICAgICBUKiBvcGVyYXRv
ci0+KCkKLSAgICAgICAgewotICAgICAgICAgICAgREFUQV9NVVRFWF9DSEVDSyhtX211dGV4Lmlz
TG9ja2VkKCkpOwotICAgICAgICAgICAgcmV0dXJuICZtX2RhdGE7Ci0gICAgICAgIH0KLQotICAg
ICAgICBUJiBvcGVyYXRvciooKQotICAgICAgICB7Ci0gICAgICAgICAgICBEQVRBX01VVEVYX0NI
RUNLKG1fbXV0ZXguaXNMb2NrZWQoKSk7Ci0gICAgICAgICAgICByZXR1cm4gbV9kYXRhOwotICAg
ICAgICB9Ci0KLSAgICAgICAgTG9ja1R5cGUmIG11dGV4KCkKLSAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuIG1fbXV0ZXg7Ci0gICAgICAgIH0KLQotICAgICAgICBMb2NrZXI8TG9ja1R5cGU+
JiBsb2NrSG9sZGVyKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG1fbG9ja0hvbGRl
cjsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIFVzZWQgdG8gYXZvaWQgZXhjZXNzaXZlIGJyYWNl
IHNjb3Bpbmcgd2hlbiBvbmx5IHNtYWxsIHBhcnRzIG9mIHRoZSBjb2RlIG5lZWQgdG8gYmUgcnVu
IHVubG9ja2VkLgotICAgICAgICAvLyBQbGVhc2UgYmUgbWluZGZ1bCB0aGF0IGFjY2Vzc2luZyB0
aGUgd3JhcHBlZCBkYXRhIGZyb20gdGhlIGNhbGxiYWNrIGlzIHVuc2FmZSBhbmQgd2lsbCBmYWls
IG9uIGFzc2VydGlvbnMuCi0gICAgICAgIC8vIEl0J3MgaGVscGZ1bCB0byB1c2UgYSBtaW5pbWFs
IGxhbWJkYSBjYXB0dXJlIHRvIGJlIGNvbnNjaW91cyBvZiB3aGF0IGRhdGEgeW91J3JlIGhhdmlu
ZyBhY2Nlc3MgdG8gaW4gdGhlc2Ugc2VjdGlvbnMuCi0gICAgICAgIHZvaWQgcnVuVW5sb2NrZWQo
V1RGOjpGdW5jdGlvbjx2b2lkKCk+IGNhbGxiYWNrKQotICAgICAgICB7Ci0gICAgICAgICAgICBt
X211dGV4LnVubG9jaygpOwotICAgICAgICAgICAgY2FsbGJhY2soKTsKLSAgICAgICAgICAgIG1f
bXV0ZXgubG9jaygpOwotICAgICAgICB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBMb2NrVHlw
ZSYgbV9tdXRleDsKLSAgICAgICAgTG9ja2VyPExvY2tUeXBlPiBtX2xvY2tIb2xkZXI7Ci0gICAg
ICAgIFQmIG1fZGF0YTsKLSAgICB9OworICAgIC8vIFVzZWQgdG8gYXZvaWQgZXhjZXNzaXZlIGJy
YWNlIHNjb3Bpbmcgd2hlbiBvbmx5IHNtYWxsIHBhcnRzIG9mIHRoZSBjb2RlIG5lZWQgdG8gYmUg
cnVuIHVubG9ja2VkLgorICAgIC8vIFBsZWFzZSBiZSBtaW5kZnVsIHRoYXQgYWNjZXNzaW5nIHRo
ZSB3cmFwcGVkIGRhdGEgZnJvbSB0aGUgY2FsbGJhY2sgaXMgdW5zYWZlIGFuZCB3aWxsIGZhaWwg
b24gYXNzZXJ0aW9ucy4KKyAgICAvLyBJdCdzIGhlbHBmdWwgdG8gdXNlIGEgbWluaW1hbCBsYW1i
ZGEgY2FwdHVyZSB0byBiZSBjb25zY2lvdXMgb2Ygd2hhdCBkYXRhIHlvdSdyZSBoYXZpbmcgYWNj
ZXNzIHRvIGluIHRoZXNlIHNlY3Rpb25zLgorICAgIHZvaWQgcnVuVW5sb2NrZWQoY29uc3QgRnVu
Y3Rpb248dm9pZCgpPiYgY2FsbGJhY2spCisgICAgeworICAgICAgICBEQVRBX01VVEVYX0NIRUNL
KG11dGV4KCkuaXNIZWxkKCkpOworICAgICAgICBhc3NlcnRJc0hlbGQobV9kYXRhTXV0ZXgubV9t
dXRleCk7CisgICAgICAgIG11dGV4KCkudW5sb2NrKCk7CisgICAgICAgIGNhbGxiYWNrKCk7Cisg
ICAgICAgIG11dGV4KCkubG9jaygpOworICAgIH0KIAogcHJpdmF0ZToKLSAgICBMb2NrVHlwZSBt
X211dGV4OwotICAgIFQgbV9kYXRhOworICAgIERhdGFNdXRleDxUPiYgbV9kYXRhTXV0ZXg7Cisg
ICAgYm9vbCBtX2lzTG9ja2VkIHsgZmFsc2UgfTsKIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+
Ci10eXBlbmFtZSBEYXRhTXV0ZXg8VD46OkxvY2tlZFdyYXBwZXIgaG9sZExvY2soRGF0YU11dGV4
PFQ+JiBkYXRhTXV0ZXgpCi17Ci0gICAgcmV0dXJuIHR5cGVuYW1lIERhdGFNdXRleDxUPjo6TG9j
a2VkV3JhcHBlcihkYXRhTXV0ZXgpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcg
V1RGOjpEYXRhTXV0ZXg7Cit1c2luZyBXVEY6OkRhdGFNdXRleExvY2tlcjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNjgwOTEzOTVjZGUz
M2RiMTkxMDdlNDc1ZTA4MjYyYTEyZDJmMWRkNC4uNWIxODAyMTFlZmEyNjIyZGVmMWFhNGE4NzI5
ZmI2MjdjNTIyZjczZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lci5jcHAKQEAgLTI4NjMsNyArMjg2Myw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjpwZXJmb3JtVGFza0F0TWVkaWFUaW1lKEZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNr
CiAKICAgICBPcHRpb25hbDxGdW5jdGlvbjx2b2lkKCk+PiB0YXNrVG9TY2hlZHVsZTsKICAgICB7
Ci0gICAgICAgIGF1dG8gdGFza0F0TWVkaWFUaW1lU2NoZWR1bGVyID0gaG9sZExvY2sobV9UYXNr
QXRNZWRpYVRpbWVTY2hlZHVsZXJEYXRhTXV0ZXgpOworICAgICAgICBEYXRhTXV0ZXhMb2NrZXIg
dGFza0F0TWVkaWFUaW1lU2NoZWR1bGVyIHsgbV9UYXNrQXRNZWRpYVRpbWVTY2hlZHVsZXJEYXRh
TXV0ZXggfTsKICAgICAgICAgdGFza0F0TWVkaWFUaW1lU2NoZWR1bGVyLT5zZXRUYXNrKFdURk1v
dmUodGFzayksIHRpbWUsCiAgICAgICAgICAgICBtX3BsYXliYWNrUmF0ZSA+PSAwID8gVGFza0F0
TWVkaWFUaW1lU2NoZWR1bGVyOjpGb3J3YXJkIDogVGFza0F0TWVkaWFUaW1lU2NoZWR1bGVyOjpC
YWNrd2FyZCk7CiAgICAgICAgIHRhc2tUb1NjaGVkdWxlID0gdGFza0F0TWVkaWFUaW1lU2NoZWR1
bGVyLT5jaGVja1Rhc2tGb3JTY2hlZHVsaW5nKGN1cnJlbnRUaW1lKTsKQEAgLTMxMjQsNyArMzEy
NCw4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp0cmlnZ2VyUmVwYWludChH
c3RTYW1wbGUqIHNhbXBsZSkKICAgICBpZiAoYnVmZmVyICYmIEdTVF9CVUZGRVJfUFRTX0lTX1ZB
TElEKGJ1ZmZlcikpIHsKICAgICAgICAgLy8gSGV1cmlzdGljIHRvIGF2b2lkIGFza2luZyBmb3Ig
cGxheWJhY2tQb3NpdGlvbigpIGZyb20gYSBub24tbWFpbiB0aHJlYWQuCiAgICAgICAgIE1lZGlh
VGltZSBjdXJyZW50VGltZSA9IE1lZGlhVGltZShnc3Rfc2VnbWVudF90b19zdHJlYW1fdGltZShn
c3Rfc2FtcGxlX2dldF9zZWdtZW50KHNhbXBsZSksIEdTVF9GT1JNQVRfVElNRSwgR1NUX0JVRkZF
Ul9QVFMoYnVmZmVyKSksIEdTVF9TRUNPTkQpOwotICAgICAgICBpZiAoYXV0byB0YXNrID0gaG9s
ZExvY2sobV9UYXNrQXRNZWRpYVRpbWVTY2hlZHVsZXJEYXRhTXV0ZXgpLT5jaGVja1Rhc2tGb3JT
Y2hlZHVsaW5nKGN1cnJlbnRUaW1lKSkKKyAgICAgICAgRGF0YU11dGV4TG9ja2VyIHRhc2tBdE1l
ZGlhVGltZVNjaGVkdWxlciB7IG1fVGFza0F0TWVkaWFUaW1lU2NoZWR1bGVyRGF0YU11dGV4IH07
CisgICAgICAgIGlmIChhdXRvIHRhc2sgPSB0YXNrQXRNZWRpYVRpbWVTY2hlZHVsZXItPmNoZWNr
VGFza0ZvclNjaGVkdWxpbmcoY3VycmVudFRpbWUpKQogICAgICAgICAgICAgUnVuTG9vcDo6bWFp
bigpLmRpc3BhdGNoKFdURk1vdmUodGFzay52YWx1ZSgpKSk7CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKaW5kZXggODAzOTFkOTE2NzY1NDU0
NGFlZjU1ZjhhMjRhZGZkMTU1YTYwMTVkZC4uZGYwMjk2Y2Q2M2VkOGYzNmM0YmJjZjhkYTFlNmUy
Yzc3YWE2OTZkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIuaApAQCAtNTY1LDcgKzU2NSw3IEBAIHByaXZhdGU6CiAgICAgLy8gVGhpcyBpcyBzZXQgdG8g
dHJ1ZSBpZiBubyB2aWRlb2ZsaXAgZWxlbWVudCBoYXMgYmVlbiBhZGRlZCB0byB0aGUgcGlwZWxp
bmUuCiAgICAgYm9vbCBtX3Nob3VsZEhhbmRsZU9yaWVudGF0aW9uVGFncyB7IGZhbHNlIH07CiAK
LSAgICBXVEY6OkRhdGFNdXRleDxUYXNrQXRNZWRpYVRpbWVTY2hlZHVsZXI+IG1fVGFza0F0TWVk
aWFUaW1lU2NoZWR1bGVyRGF0YU11dGV4OworICAgIERhdGFNdXRleDxUYXNrQXRNZWRpYVRpbWVT
Y2hlZHVsZXI+IG1fVGFza0F0TWVkaWFUaW1lU2NoZWR1bGVyRGF0YU11dGV4OwogCiBwcml2YXRl
OgogI2lmIFVTRShXUEVfVklERU9fUExBTkVfRElTUExBWV9ETUFCVUYpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNl
R1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCmluZGV4IDVjN2M5ODA2ZDM0Y2I4YzEzODU5
YzkxYTljOWNiMmFkOTkxNjc3NmYuLjJhNzIzNjEzMDRlNGM2NGRmZDhmMDM2NzNkMzAwNjkwYWEw
ZWJhODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCkBA
IC00MSw3ICs0MSw2IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVy
c2lvbi5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLXVzaW5nIFdURjo6RGF0YU11dGV4
OwogCiAvLyBOZXZlciBwYXVzZSBkb3dubG9hZCBvZiBtZWRpYSByZXNvdXJjZXMgc21hbGxlciB0
aGFuIDJNaUIuCiAjZGVmaW5lIFNNQUxMX01FRElBX1JFU09VUkNFX01BWF9TSVpFIDIgKiAxMDI0
ICogMTAyNApAQCAtMTQwLDcgKzEzOSw3IEBAIHN0cnVjdCBXZWJLaXRXZWJTcmNQcml2YXRlIHsK
IAogICAgICAgICAvLyBQcm9wZXJ0aWVzIHVzZWQgZm9yIEdTdHJlYW1lciBkYXRhLWZsb3cgaW4g
Y3JlYXRlKCkuCiAgICAgICAgIGJvb2wgaXNGbHVzaGluZyB7IGZhbHNlIH07Ci0gICAgICAgIFVu
Y2hlY2tlZENvbmRpdGlvbiByZXNwb25zZUNvbmRpdGlvbjsgLy8gTXVzdCBiZSBzaWduYWxlZCBh
ZnRlciBhbnkgdXBkYXRlcyBvbiBIVFRQIHJlcXVlc3RzLCBhbmQgd2hlbiBmbHVzaGluZy4KKyAg
ICAgICAgQ29uZGl0aW9uIHJlc3BvbnNlQ29uZGl0aW9uOyAvLyBNdXN0IGJlIHNpZ25hbGVkIGFm
dGVyIGFueSB1cGRhdGVzIG9uIEhUVFAgcmVxdWVzdHMsIGFuZCB3aGVuIGZsdXNoaW5nLgogICAg
ICAgICBHUmVmUHRyPEdzdEFkYXB0ZXI+IGFkYXB0ZXI7CiAgICAgICAgIGJvb2wgaXNEdXJhdGlv
blNldDsKICAgICAgICAgdWludDY0X3QgcmVhZFBvc2l0aW9uOwpAQCAtMTgxLDcgKzE4MCw3IEBA
IHN0YXRpYyB2b2lkIHdlYktpdFdlYlNyY0NvbnN0cnVjdGVkKEdPYmplY3QqKTsKIHN0YXRpYyB2
b2lkIHdlYktpdFdlYlNyY1NldFByb3BlcnR5KEdPYmplY3QqLCBndWludCBwcm9wZXJ0eUlELCBj
b25zdCBHVmFsdWUqLCBHUGFyYW1TcGVjKik7CiBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNHZXRQ
cm9wZXJ0eShHT2JqZWN0KiwgZ3VpbnQgcHJvcGVydHlJRCwgR1ZhbHVlKiwgR1BhcmFtU3BlYyop
Owogc3RhdGljIEdzdEZsb3dSZXR1cm4gd2ViS2l0V2ViU3JjQ3JlYXRlKEdzdFB1c2hTcmMqLCBH
c3RCdWZmZXIqKik7Ci1zdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVxdWVzdChXZWJLaXRX
ZWJTcmMqLCBEYXRhTXV0ZXg8V2ViS2l0V2ViU3JjUHJpdmF0ZTo6U3RyZWFtaW5nTWVtYmVycz46
OkxvY2tlZFdyYXBwZXImKTsKK3N0YXRpYyB2b2lkIHdlYktpdFdlYlNyY01ha2VSZXF1ZXN0KFdl
YktpdFdlYlNyYyosIERhdGFNdXRleExvY2tlcjxEYXRhTXV0ZXg8V2ViS2l0V2ViU3JjUHJpdmF0
ZTo6U3RyZWFtaW5nTWVtYmVycz4+Jik7CiBzdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0V2ViU3JjU3Rh
cnQoR3N0QmFzZVNyYyopOwogc3RhdGljIGdib29sZWFuIHdlYktpdFdlYlNyY1N0b3AoR3N0QmFz
ZVNyYyopOwogc3RhdGljIGdib29sZWFuIHdlYktpdFdlYlNyY0dldFNpemUoR3N0QmFzZVNyYyos
IGd1aW50NjQqIHNpemUpOwpAQCAtMTkxLDggKzE5MCw4IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJL
aXRXZWJTcmNRdWVyeShHc3RCYXNlU3JjKiwgR3N0UXVlcnkqKTsKIHN0YXRpYyBnYm9vbGVhbiB3
ZWJLaXRXZWJTcmNVbkxvY2soR3N0QmFzZVNyYyopOwogc3RhdGljIGdib29sZWFuIHdlYktpdFdl
YlNyY1VuTG9ja1N0b3AoR3N0QmFzZVNyYyopOwogc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjU2V0
Q29udGV4dChHc3RFbGVtZW50KiwgR3N0Q29udGV4dCopOwotc3RhdGljIHZvaWQgcmVzdGFydExv
YWRlcklmTmVlZGVkKFdlYktpdFdlYlNyYyosIERhdGFNdXRleDxXZWJLaXRXZWJTcmNQcml2YXRl
OjpTdHJlYW1pbmdNZW1iZXJzPjo6TG9ja2VkV3JhcHBlciYpOwotc3RhdGljIHZvaWQgc3RvcExv
YWRlcklmTmVlZGVkKFdlYktpdFdlYlNyYyosIERhdGFNdXRleDxXZWJLaXRXZWJTcmNQcml2YXRl
OjpTdHJlYW1pbmdNZW1iZXJzPjo6TG9ja2VkV3JhcHBlciYpOworc3RhdGljIHZvaWQgcmVzdGFy
dExvYWRlcklmTmVlZGVkKFdlYktpdFdlYlNyYyosIERhdGFNdXRleExvY2tlcjxEYXRhTXV0ZXg8
V2ViS2l0V2ViU3JjUHJpdmF0ZTo6U3RyZWFtaW5nTWVtYmVycz4+Jik7CitzdGF0aWMgdm9pZCBz
dG9wTG9hZGVySWZOZWVkZWQoV2ViS2l0V2ViU3JjKiwgRGF0YU11dGV4TG9ja2VyPERhdGFNdXRl
eDxXZWJLaXRXZWJTcmNQcml2YXRlOjpTdHJlYW1pbmdNZW1iZXJzPj4mKTsKIAogI2RlZmluZSB3
ZWJraXRfd2ViX3NyY19wYXJlbnRfY2xhc3MgcGFyZW50X2NsYXNzCiBXRUJLSVRfREVGSU5FX1RZ
UEVfV0lUSF9DT0RFKFdlYktpdFdlYlNyYywgd2Via2l0X3dlYl9zcmMsIEdTVF9UWVBFX1BVU0hf
U1JDLApAQCAtMjYxLDcgKzI2MCw3IEBAIGVudW0gY2xhc3MgUmVzZXRUeXBlIHsKICAgICBIYXJk
CiB9OwogCi1zdGF0aWMgdm9pZCB3ZWJraXRXZWJTcmNSZXNldChXZWJLaXRXZWJTcmMqIHNyYywg
RGF0YU11dGV4PFdlYktpdFdlYlNyY1ByaXZhdGU6OlN0cmVhbWluZ01lbWJlcnM+OjpMb2NrZWRX
cmFwcGVyJiBtZW1iZXJzLCBSZXNldFR5cGUgcmVzZXRUeXBlKQorc3RhdGljIHZvaWQgd2Via2l0
V2ViU3JjUmVzZXQoV2ViS2l0V2ViU3JjKiBzcmMsIERhdGFNdXRleExvY2tlcjxEYXRhTXV0ZXg8
V2ViS2l0V2ViU3JjUHJpdmF0ZTo6U3RyZWFtaW5nTWVtYmVycz4+JiBtZW1iZXJzLCBSZXNldFR5
cGUgcmVzZXRUeXBlKQogewogICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiUmVzZXR0aW5nIGlu
dGVybmFsIHN0YXRlIik7CiAgICAgZ3N0X2FkYXB0ZXJfY2xlYXIobWVtYmVycy0+YWRhcHRlci5n
ZXQoKSk7CkBAIC0zMDEsNyArMzAwLDcgQEAgc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjQ29uc3Ry
dWN0ZWQoR09iamVjdCogb2JqZWN0KQogCiAgICAgcHJpdi0+bWluaW11bUJsb2Nrc2l6ZSA9IGdz
dF9iYXNlX3NyY19nZXRfYmxvY2tzaXplKEdTVF9CQVNFX1NSQ19DQVNUKHNyYykpOwogCi0gICAg
YXV0byBtZW1iZXJzID0gaG9sZExvY2socHJpdi0+ZGF0YU11dGV4KTsKKyAgICBEYXRhTXV0ZXhM
b2NrZXIgbWVtYmVycyB7IHByaXYtPmRhdGFNdXRleCB9OwogICAgIG1lbWJlcnMtPmFkYXB0ZXIg
PSBhZG9wdEdSZWYoZ3N0X2FkYXB0ZXJfbmV3KCkpOwogICAgIHdlYmtpdFdlYlNyY1Jlc2V0KHNy
YywgbWVtYmVycywgUmVzZXRUeXBlOjpIYXJkKTsKIApAQCAtMzQ2LDcgKzM0NSw3IEBAIHN0YXRp
YyB2b2lkIHdlYktpdFdlYlNyY0dldFByb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJv
cElELCBHVmFsdWUqIHZhbHVlCiAgICAgICAgIGdfdmFsdWVfc2V0X3N0cmluZyh2YWx1ZSwgcHJp
di0+b3JpZ2luYWxVUkkuZGF0YSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9QX1JF
U09MVkVEX0xPQ0FUSU9OOiB7Ci0gICAgICAgIGF1dG8gbWVtYmVycyA9IGhvbGRMb2NrKHByaXYt
PmRhdGFNdXRleCk7CisgICAgICAgIERhdGFNdXRleExvY2tlciBtZW1iZXJzIHsgcHJpdi0+ZGF0
YU11dGV4IH07CiAgICAgICAgIGdfdmFsdWVfc2V0X3N0cmluZyh2YWx1ZSwgbWVtYmVycy0+cmVk
aXJlY3RlZFVSSS5pc051bGwoKSA/IHByaXYtPm9yaWdpbmFsVVJJLmRhdGEoKSA6IG1lbWJlcnMt
PnJlZGlyZWN0ZWRVUkkuZGF0YSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMzc2LDEz
ICszNzUsMTMgQEAgc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjU2V0Q29udGV4dChHc3RFbGVtZW50
KiBlbGVtZW50LCBHc3RDb250ZXh0KiBjb250ZXh0KQogICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3Jj
LCAiY29udGV4dCB0eXBlOiAlcyIsIGdzdF9jb250ZXh0X2dldF9jb250ZXh0X3R5cGUoY29udGV4
dCkpOwogICAgIGlmIChnc3RfY29udGV4dF9oYXNfY29udGV4dF90eXBlKGNvbnRleHQsIFdFQktJ
VF9XRUJfU1JDX1BMQVlFUl9DT05URVhUX1RZUEVfTkFNRSkpIHsKICAgICAgICAgY29uc3QgR1Zh
bHVlKiB2YWx1ZSA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3ZhbHVlKGdzdF9jb250ZXh0X2dldF9zdHJ1
Y3R1cmUoY29udGV4dCksICJwbGF5ZXIiKTsKLSAgICAgICAgYXV0byBtZW1iZXJzID0gaG9sZExv
Y2socHJpdi0+ZGF0YU11dGV4KTsKKyAgICAgICAgRGF0YU11dGV4TG9ja2VyIG1lbWJlcnMgeyBw
cml2LT5kYXRhTXV0ZXggfTsKICAgICAgICAgbWVtYmVycy0+cGxheWVyID0gcmVpbnRlcnByZXRf
Y2FzdDxNZWRpYVBsYXllcio+KGdfdmFsdWVfZ2V0X3BvaW50ZXIodmFsdWUpKTsKICAgICB9CiAg
ICAgR1NUX0VMRU1FTlRfQ0xBU1MocGFyZW50X2NsYXNzKS0+c2V0X2NvbnRleHQoZWxlbWVudCwg
Y29udGV4dCk7CiB9CiAKLXN0YXRpYyB2b2lkIHJlc3RhcnRMb2FkZXJJZk5lZWRlZChXZWJLaXRX
ZWJTcmMqIHNyYywgRGF0YU11dGV4PFdlYktpdFdlYlNyY1ByaXZhdGU6OlN0cmVhbWluZ01lbWJl
cnM+OjpMb2NrZWRXcmFwcGVyJiBtZW1iZXJzKQorc3RhdGljIHZvaWQgcmVzdGFydExvYWRlcklm
TmVlZGVkKFdlYktpdFdlYlNyYyogc3JjLCBEYXRhTXV0ZXhMb2NrZXI8RGF0YU11dGV4PFdlYktp
dFdlYlNyY1ByaXZhdGU6OlN0cmVhbWluZ01lbWJlcnM+PiYgbWVtYmVycykKIHsKICAgICBpZiAo
IW1lbWJlcnMtPmlzRG93bmxvYWRTdXNwZW5kZWQpIHsKICAgICAgICAgR1NUX1RSQUNFX09CSkVD
VChzcmMsICJkb3dubG9hZCBhbHJlYWR5IGFjdGl2ZSIpOwpAQCAtNDE5LDcgKzQxOCw3IEBAIHN0
YXRpYyB2b2lkIHJlc3RhcnRMb2FkZXJJZk5lZWRlZChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11
dGV4PFdlYktpdFdlYlNyY1ByaXZhCiB9CiAKIAotc3RhdGljIHZvaWQgc3RvcExvYWRlcklmTmVl
ZGVkKFdlYktpdFdlYlNyYyogc3JjLCBEYXRhTXV0ZXg8V2ViS2l0V2ViU3JjUHJpdmF0ZTo6U3Ry
ZWFtaW5nTWVtYmVycz46OkxvY2tlZFdyYXBwZXImIG1lbWJlcnMpCitzdGF0aWMgdm9pZCBzdG9w
TG9hZGVySWZOZWVkZWQoV2ViS2l0V2ViU3JjKiBzcmMsIERhdGFNdXRleExvY2tlcjxEYXRhTXV0
ZXg8V2ViS2l0V2ViU3JjUHJpdmF0ZTo6U3RyZWFtaW5nTWVtYmVycz4+JiBtZW1iZXJzKQogewog
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKQEAgLTQ1OSw3ICs0NTgsNyBAQCBzdGF0aWMg
R3N0Rmxvd1JldHVybiB3ZWJLaXRXZWJTcmNDcmVhdGUoR3N0UHVzaFNyYyogcHVzaFNyYywgR3N0
QnVmZmVyKiogYnVmZmVyKQogICAgIEdzdEJhc2VTcmMqIGJhc2VTcmMgPSBHU1RfQkFTRV9TUkNf
Q0FTVChwdXNoU3JjKTsKICAgICBXZWJLaXRXZWJTcmMqIHNyYyA9IFdFQktJVF9XRUJfU1JDKGJh
c2VTcmMpOwogICAgIFdlYktpdFdlYlNyY1ByaXZhdGUqIHByaXYgPSBzcmMtPnByaXY7Ci0gICAg
YXV0byBtZW1iZXJzID0gaG9sZExvY2socHJpdi0+ZGF0YU11dGV4KTsKKyAgICBEYXRhTXV0ZXhM
b2NrZXIgbWVtYmVycyB7IHByaXYtPmRhdGFNdXRleCB9OwogCiAgICAgLy8gV2UgbmVlZCBtZW1i
ZXJzLT5wbGF5ZXIgdG8gbWFrZSByZXF1ZXN0cy4gVGhlcmUgYXJlIHR3byBtZWNoYW5pc21zIGZv
ciB0aGlzLgogICAgIC8vCkBAIC02MzEsNyArNjMwLDcgQEAgc3RhdGljIGdib29sZWFuIHdlYktp
dFdlYlNyY1N0YXJ0KEdzdEJhc2VTcmMqIGJhc2VTcmMpCiAgICAgcmV0dXJuIFRSVUU7CiB9CiAK
LXN0YXRpYyB2b2lkIHdlYktpdFdlYlNyY01ha2VSZXF1ZXN0KFdlYktpdFdlYlNyYyogc3JjLCBE
YXRhTXV0ZXg8V2ViS2l0V2ViU3JjUHJpdmF0ZTo6U3RyZWFtaW5nTWVtYmVycz46OkxvY2tlZFdy
YXBwZXImIG1lbWJlcnMpCitzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVxdWVzdChXZWJL
aXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPERhdGFNdXRleDxXZWJLaXRXZWJTcmNQcml2
YXRlOjpTdHJlYW1pbmdNZW1iZXJzPj4mIG1lbWJlcnMpCiB7CiAgICAgV2ViS2l0V2ViU3JjUHJp
dmF0ZSogcHJpdiA9IHNyYy0+cHJpdjsKIApAQCAtNjg5LDcgKzY4OCw3IEBAIHN0YXRpYyB2b2lk
IHdlYktpdFdlYlNyY01ha2VSZXF1ZXN0KFdlYktpdFdlYlNyYyogc3JjLCBEYXRhTXV0ZXg8V2Vi
S2l0V2ViU3JjUHJpCiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0b3IgPSBXVEY6OmVuc3VyZUdSZWYoc3JjKSwgcmVxdWVz
dCA9IFdURk1vdmUocmVxdWVzdCksIHJlcXVlc3ROdW1iZXIgPSBtZW1iZXJzLT5yZXF1ZXN0TnVt
YmVyXSB7CiAgICAgICAgIFdlYktpdFdlYlNyY1ByaXZhdGUqIHByaXYgPSBwcm90ZWN0b3ItPnBy
aXY7Ci0gICAgICAgIGF1dG8gbWVtYmVycyA9IGhvbGRMb2NrKHByaXYtPmRhdGFNdXRleCk7Cisg
ICAgICAgIERhdGFNdXRleExvY2tlciBtZW1iZXJzIHsgcHJpdi0+ZGF0YU11dGV4IH07CiAgICAg
ICAgIC8vIElnbm9yZSB0aGlzIHRhc2sgKG5vdCBtYWtpbmcgYW55IEhUVFAgcmVxdWVzdCkgaWYg
Ynkgbm93IFdlYktpdFdlYlNyYyBzdHJlYW1pbmcgdGhyZWFkIGlzIGFscmVhZHkgd2FpdGluZwog
ICAgICAgICAvLyBmb3IgYSBkaWZmZXJlbnQgcmVxdWVzdC4gVGhlcmUgaXMgbm8gcG9pbnQgYW55
bW9yZSBpbiBzZW5kaW5nIHRoaXMgb25lLgogICAgICAgICBpZiAobWVtYmVycy0+cmVxdWVzdE51
bWJlciAhPSByZXF1ZXN0TnVtYmVyKSB7CkBAIC03MTYsNyArNzE1LDcgQEAgc3RhdGljIGdib29s
ZWFuIHdlYktpdFdlYlNyY1N0b3AoR3N0QmFzZVNyYyogYmFzZVNyYykKIHsKICAgICBXZWJLaXRX
ZWJTcmMqIHNyYyA9IFdFQktJVF9XRUJfU1JDKGJhc2VTcmMpOwogICAgIC8vIGJhc2VzcmMgd2ls
bCBhbHdheXMgY2FsbCB1bkxvY2soKSBhbmQgdW5Mb2NrU3RvcCgpIGJlZm9yZSBjYWxsaW5nIHRo
aXMuIFNlZSBnc3RfYmFzZV9zcmNfc3RvcCgpLgotICAgIGF1dG8gbWVtYmVycyA9IGhvbGRMb2Nr
KHNyYy0+cHJpdi0+ZGF0YU11dGV4KTsKKyAgICBEYXRhTXV0ZXhMb2NrZXIgbWVtYmVycyB7IHNy
Yy0+cHJpdi0+ZGF0YU11dGV4IH07CiAgICAgd2Via2l0V2ViU3JjUmVzZXQoc3JjLCBtZW1iZXJz
LCBSZXNldFR5cGU6OkhhcmQpOwogICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiU3RvcHBlZCBX
ZWJLaXRXZWJTcmMiKTsKICAgICByZXR1cm4gVFJVRTsKQEAgLTcyNSw3ICs3MjQsNyBAQCBzdGF0
aWMgZ2Jvb2xlYW4gd2ViS2l0V2ViU3JjU3RvcChHc3RCYXNlU3JjKiBiYXNlU3JjKQogc3RhdGlj
IGdib29sZWFuIHdlYktpdFdlYlNyY0dldFNpemUoR3N0QmFzZVNyYyogYmFzZVNyYywgZ3VpbnQ2
NCogc2l6ZSkKIHsKICAgICBXZWJLaXRXZWJTcmMqIHNyYyA9IFdFQktJVF9XRUJfU1JDKGJhc2VT
cmMpOwotICAgIGF1dG8gbWVtYmVycyA9IGhvbGRMb2NrKHNyYy0+cHJpdi0+ZGF0YU11dGV4KTsK
KyAgICBEYXRhTXV0ZXhMb2NrZXIgbWVtYmVycyB7IHNyYy0+cHJpdi0+ZGF0YU11dGV4IH07CiAK
ICAgICBHU1RfREVCVUdfT0JKRUNUKHNyYywgImhhdmVTaXplOiAlcywgc2l6ZTogJSIgR19HVUlO
VDY0X0ZPUk1BVCwgYm9vbEZvclByaW50aW5nKG1lbWJlcnMtPmhhdmVTaXplKSwgbWVtYmVycy0+
c2l6ZSk7CiAgICAgaWYgKG1lbWJlcnMtPmhhdmVTaXplKSB7CkBAIC03MzksNyArNzM4LDcgQEAg
c3RhdGljIGdib29sZWFuIHdlYktpdFdlYlNyY0dldFNpemUoR3N0QmFzZVNyYyogYmFzZVNyYywg
Z3VpbnQ2NCogc2l6ZSkKIHN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRXZWJTcmNJc1NlZWthYmxlKEdz
dEJhc2VTcmMqIGJhc2VTcmMpCiB7CiAgICAgV2ViS2l0V2ViU3JjKiBzcmMgPSBXRUJLSVRfV0VC
X1NSQyhiYXNlU3JjKTsKLSAgICBhdXRvIG1lbWJlcnMgPSBob2xkTG9jayhzcmMtPnByaXYtPmRh
dGFNdXRleCk7CisgICAgRGF0YU11dGV4TG9ja2VyIG1lbWJlcnMgeyBzcmMtPnByaXYtPmRhdGFN
dXRleCB9OwogICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiaXNTZWVrYWJsZTogJXMiLCBib29s
Rm9yUHJpbnRpbmcobWVtYmVycy0+aXNTZWVrYWJsZSkpOwogICAgIHJldHVybiBtZW1iZXJzLT5p
c1NlZWthYmxlOwogfQpAQCAtNzU2LDcgKzc1NSw3IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRX
ZWJTcmNEb1NlZWsoR3N0QmFzZVNyYyogYmFzZVNyYywgR3N0U2VnbWVudCogc2VnbWVudCkKICAg
ICBBU1NFUlQoR1NUX0VMRU1FTlQoYmFzZVNyYyktPmN1cnJlbnRfc3RhdGUgPCBHU1RfU1RBVEVf
UEFVU0VEIHx8IHdlYktpdFdlYlNyY0lzU2Vla2FibGUoYmFzZVNyYykpOwogCiAgICAgV2ViS2l0
V2ViU3JjKiBzcmMgPSBXRUJLSVRfV0VCX1NSQyhiYXNlU3JjKTsKLSAgICBhdXRvIG1lbWJlcnMg
PSBob2xkTG9jayhzcmMtPnByaXYtPmRhdGFNdXRleCk7CisgICAgRGF0YU11dGV4TG9ja2VyIG1l
bWJlcnMgeyBzcmMtPnByaXYtPmRhdGFNdXRleCB9OwogCiAgICAgR1NUX0RFQlVHX09CSkVDVChz
cmMsICJTZWVrIHNlZ21lbnQ6ICglIiBHX0dVSU5UNjRfRk9STUFUICItJSIgR19HVUlOVDY0X0ZP
Uk1BVCAiKSBQb3NpdGlvbiBwcmV2aW91cyB0byBzZWVrOiAlIiBHX0dVSU5UNjRfRk9STUFULCBz
ZWdtZW50LT5zdGFydCwgc2VnbWVudC0+c3RvcCwgbWVtYmVycy0+cmVhZFBvc2l0aW9uKTsKIApA
QCAtNzg2LDcgKzc4NSw3IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRXZWJTcmNRdWVyeShHc3RC
YXNlU3JjKiBiYXNlU3JjLCBHc3RRdWVyeSogcXVlcnkpCiAKICAgICBpZiAoR1NUX1FVRVJZX1RZ
UEUocXVlcnkpID09IEdTVF9RVUVSWV9VUkkpIHsKICAgICAgICAgZ3N0X3F1ZXJ5X3NldF91cmko
cXVlcnksIHByaXYtPm9yaWdpbmFsVVJJLmRhdGEoKSk7Ci0gICAgICAgIGF1dG8gbWVtYmVycyA9
IGhvbGRMb2NrKHNyYy0+cHJpdi0+ZGF0YU11dGV4KTsKKyAgICAgICAgRGF0YU11dGV4TG9ja2Vy
IG1lbWJlcnMgeyBzcmMtPnByaXYtPmRhdGFNdXRleCB9OwogICAgICAgICBpZiAoIW1lbWJlcnMt
PnJlZGlyZWN0ZWRVUkkuaXNOdWxsKCkpCiAgICAgICAgICAgICBnc3RfcXVlcnlfc2V0X3VyaV9y
ZWRpcmVjdGlvbihxdWVyeSwgbWVtYmVycy0+cmVkaXJlY3RlZFVSSS5kYXRhKCkpOwogICAgICAg
ICByZXN1bHQgPSBUUlVFOwpAQCAtODA5LDcgKzgwOCw3IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJL
aXRXZWJTcmNRdWVyeShHc3RCYXNlU3JjKiBiYXNlU3JjLCBHc3RRdWVyeSogcXVlcnkpCiBzdGF0
aWMgZ2Jvb2xlYW4gd2ViS2l0V2ViU3JjVW5Mb2NrKEdzdEJhc2VTcmMqIGJhc2VTcmMpCiB7CiAg
ICAgV2ViS2l0V2ViU3JjKiBzcmMgPSBXRUJLSVRfV0VCX1NSQyhiYXNlU3JjKTsKLSAgICBhdXRv
IG1lbWJlcnMgPSBob2xkTG9jayhzcmMtPnByaXYtPmRhdGFNdXRleCk7CisgICAgRGF0YU11dGV4
TG9ja2VyIG1lbWJlcnMgeyBzcmMtPnByaXYtPmRhdGFNdXRleCB9OwogCiAgICAgR1NUX0RFQlVH
X09CSkVDVChzcmMsICJVbmxvY2siKTsKICAgICBtZW1iZXJzLT5pc0ZsdXNoaW5nID0gdHJ1ZTsK
QEAgLTg0MCw3ICs4MzksNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0V2ViU3JjVW5Mb2NrKEdz
dEJhc2VTcmMqIGJhc2VTcmMpCiBzdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0V2ViU3JjVW5Mb2NrU3Rv
cChHc3RCYXNlU3JjKiBiYXNlU3JjKQogewogICAgIFdlYktpdFdlYlNyYyogc3JjID0gV0VCS0lU
X1dFQl9TUkMoYmFzZVNyYyk7Ci0gICAgYXV0byBtZW1iZXJzID0gaG9sZExvY2soc3JjLT5wcml2
LT5kYXRhTXV0ZXgpOworICAgIERhdGFNdXRleExvY2tlciBtZW1iZXJzIHsgc3JjLT5wcml2LT5k
YXRhTXV0ZXggfTsKICAgICBHU1RfREVCVUdfT0JKRUNUKHNyYywgIlVubG9jayBzdG9wIik7CiAg
ICAgbWVtYmVycy0+aXNGbHVzaGluZyA9IGZhbHNlOwogICAgIHdlYmtpdFdlYlNyY1Jlc2V0KHNy
YywgbWVtYmVycywgUmVzZXRUeXBlOjpTb2Z0KTsKQEAgLTkyNiwxNCArOTI1LDE0IEBAIHN0YXRp
YyB2b2lkIHdlYktpdFdlYlNyY1VyaUhhbmRsZXJJbml0KGdwb2ludGVyIGdJZmFjZSwgZ3BvaW50
ZXIpCiB2b2lkIHdlYktpdFdlYlNyY1NldE1lZGlhUGxheWVyKFdlYktpdFdlYlNyYyogc3JjLCBX
ZWJDb3JlOjpNZWRpYVBsYXllciogcGxheWVyLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKQogewog
ICAgIEFTU0VSVChwbGF5ZXIpOwotICAgIGF1dG8gbWVtYmVycyA9IGhvbGRMb2NrKHNyYy0+cHJp
di0+ZGF0YU11dGV4KTsKKyAgICBEYXRhTXV0ZXhMb2NrZXIgbWVtYmVycyB7IHNyYy0+cHJpdi0+
ZGF0YU11dGV4IH07CiAgICAgbWVtYmVycy0+cGxheWVyID0gcGxheWVyOwogICAgIG1lbWJlcnMt
PnJlZmVycmVyID0gcmVmZXJyZXI7CiB9CiAKIGJvb2wgd2ViS2l0U3JjUGFzc2VkQ09SU0FjY2Vz
c0NoZWNrKFdlYktpdFdlYlNyYyogc3JjKQogewotICAgIGF1dG8gbWVtYmVycyA9IGhvbGRMb2Nr
KHNyYy0+cHJpdi0+ZGF0YU11dGV4KTsKKyAgICBEYXRhTXV0ZXhMb2NrZXIgbWVtYmVycyB7IHNy
Yy0+cHJpdi0+ZGF0YU11dGV4IH07CiAgICAgcmV0dXJuIG1lbWJlcnMtPmRpZFBhc3NBY2Nlc3ND
b250cm9sQ2hlY2s7CiB9CiAKQEAgLTk4OCw3ICs5ODcsNyBAQCB2b2lkIENhY2hlZFJlc291cmNl
U3RyZWFtaW5nQ2xpZW50OjpyZXNwb25zZVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYs
IGNvbgogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgV2ViS2l0V2ViU3JjKiBzcmMg
PSBXRUJLSVRfV0VCX1NSQyhtX3NyYy5nZXQoKSk7CiAgICAgV2ViS2l0V2ViU3JjUHJpdmF0ZSog
cHJpdiA9IHNyYy0+cHJpdjsKLSAgICBhdXRvIG1lbWJlcnMgPSBob2xkTG9jayhwcml2LT5kYXRh
TXV0ZXgpOworICAgIERhdGFNdXRleExvY2tlciBtZW1iZXJzIHsgcHJpdi0+ZGF0YU11dGV4IH07
CiAgICAgaWYgKG1lbWJlcnMtPnJlcXVlc3ROdW1iZXIgIT0gbV9yZXF1ZXN0TnVtYmVyKSB7CiAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFNob3VsZENvbnRpbnVlUG9saWN5Q2hlY2s6Ok5vKTsK
ICAgICAgICAgcmV0dXJuOwpAQCAtMTA5NCw3ICsxMDkzLDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJj
ZVN0cmVhbWluZ0NsaWVudDo6ZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNv
bnN0IGMKICAgICBXZWJLaXRXZWJTcmMqIHNyYyA9IFdFQktJVF9XRUJfU1JDKG1fc3JjLmdldCgp
KTsKICAgICBXZWJLaXRXZWJTcmNQcml2YXRlKiBwcml2ID0gc3JjLT5wcml2OwogCi0gICAgYXV0
byBtZW1iZXJzID0gaG9sZExvY2socHJpdi0+ZGF0YU11dGV4KTsKKyAgICBEYXRhTXV0ZXhMb2Nr
ZXIgbWVtYmVycyB7IHByaXYtPmRhdGFNdXRleCB9OwogICAgIGlmIChtZW1iZXJzLT5yZXF1ZXN0
TnVtYmVyICE9IG1fcmVxdWVzdE51bWJlcikKICAgICAgICAgcmV0dXJuOwogCkBAIC0xMTMwLDcg
KzExMjksNyBAQCB2b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjphY2Nlc3NDb250
cm9sQ2hlY2tGYWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cgogewogICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CiAgICAgV2ViS2l0V2ViU3JjKiBzcmMgPSBXRUJLSVRfV0VCX1NSQyhtX3NyYy5n
ZXQoKSk7Ci0gICAgYXV0byBtZW1iZXJzID0gaG9sZExvY2soc3JjLT5wcml2LT5kYXRhTXV0ZXgp
OworICAgIERhdGFNdXRleExvY2tlciBtZW1iZXJzIHsgc3JjLT5wcml2LT5kYXRhTXV0ZXggfTsK
ICAgICBpZiAobWVtYmVycy0+cmVxdWVzdE51bWJlciAhPSBtX3JlcXVlc3ROdW1iZXIpCiAgICAg
ICAgIHJldHVybjsKIApAQCAtMTE0Myw3ICsxMTQyLDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZVN0
cmVhbWluZ0NsaWVudDo6bG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBS
ZXMKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIFdlYktpdFdlYlNyYyogc3Jj
ID0gV0VCS0lUX1dFQl9TUkMobV9zcmMuZ2V0KCkpOwotICAgIGF1dG8gbWVtYmVycyA9IGhvbGRM
b2NrKHNyYy0+cHJpdi0+ZGF0YU11dGV4KTsKKyAgICBEYXRhTXV0ZXhMb2NrZXIgbWVtYmVycyB7
IHNyYy0+cHJpdi0+ZGF0YU11dGV4IH07CiAgICAgaWYgKG1lbWJlcnMtPnJlcXVlc3ROdW1iZXIg
IT0gbV9yZXF1ZXN0TnVtYmVyKQogICAgICAgICByZXR1cm47CiAKQEAgLTExNjAsNyArMTE1OSw3
IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmxvYWRGaW5pc2hlZChQbGF0
Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBOCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKICAgICBXZWJLaXRXZWJTcmMqIHNyYyA9IFdFQktJVF9XRUJfU1JDKG1fc3JjLmdldCgpKTsK
LSAgICBhdXRvIG1lbWJlcnMgPSBob2xkTG9jayhzcmMtPnByaXYtPmRhdGFNdXRleCk7CisgICAg
RGF0YU11dGV4TG9ja2VyIG1lbWJlcnMgeyBzcmMtPnByaXYtPmRhdGFNdXRleCB9OwogICAgIGlm
IChtZW1iZXJzLT5yZXF1ZXN0TnVtYmVyICE9IG1fcmVxdWVzdE51bWJlcikKICAgICAgICAgcmV0
dXJuOwogCkBAIC0xMTcwLDcgKzExNjksNyBAQCB2b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5n
Q2xpZW50Ojpsb2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgTgogCiBi
b29sIHdlYktpdFNyY1dvdWxkVGFpbnRPcmlnaW4oV2ViS2l0V2ViU3JjKiBzcmMsIGNvbnN0IFNl
Y3VyaXR5T3JpZ2luJiBvcmlnaW4pCiB7Ci0gICAgYXV0byBtZW1iZXJzID0gaG9sZExvY2soc3Jj
LT5wcml2LT5kYXRhTXV0ZXgpOworICAgIERhdGFNdXRleExvY2tlciBtZW1iZXJzIHsgc3JjLT5w
cml2LT5kYXRhTXV0ZXggfTsKIAogICAgIGF1dG8qIGNhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xp
ZW50ID0gcmVpbnRlcnByZXRfY2FzdDxDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudCo+KG1l
bWJlcnMtPnJlc291cmNlLT5jbGllbnQoKSk7CiAgICAgZm9yIChhdXRvJiByZXNwb25zZU9yaWdp
biA6IGNhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50LT5zZWN1cml0eU9yaWdpbnMoKSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21z
ZS9NZWRpYVNvdXJjZVRyYWNrR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFTb3VyY2VUcmFja0dTdHJlYW1lci5jcHAKaW5k
ZXggODYyYjE2OTUxOTQ3ZWQ1NWJkZmFkMzIzODg3MTk3YmM2ZTBmZDM3Ni4uZDE4NzkyY2NhMjk1
MWFjMTYwNDU4YTNiOTg4MjljYjU3ZTg1ZTFjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJjZVRyYWNrR1N0cmVhbWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNl
L01lZGlhU291cmNlVHJhY2tHU3RyZWFtZXIuY3BwCkBAIC0zNyw4ICszNyw2IEBACiBHU1RfREVC
VUdfQ0FURUdPUllfRVhURVJOKHdlYmtpdF9tc2VfZGVidWcpOwogI2RlZmluZSBHU1RfQ0FUX0RF
RkFVTFQgd2Via2l0X21zZV9kZWJ1ZwogCi11c2luZyBXVEY6OkRhdGFNdXRleDsKLQogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBNZWRpYVNvdXJjZVRyYWNrR1N0cmVhbWVyOjpNZWRpYVNvdXJjZVRy
YWNrR1N0cmVhbWVyKFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6OlRyYWNrVHlwZSB0eXBlLCBB
dG9tU3RyaW5nIHRyYWNrSWQsIEdSZWZQdHI8R3N0Q2Fwcz4mJiBpbml0aWFsQ2FwcykKQEAgLTYx
LDI4ICs1OSwyOCBAQCBSZWY8TWVkaWFTb3VyY2VUcmFja0dTdHJlYW1lcj4gTWVkaWFTb3VyY2VU
cmFja0dTdHJlYW1lcjo6Y3JlYXRlKFRyYWNrUHJpdmF0ZUJhcwogYm9vbCBNZWRpYVNvdXJjZVRy
YWNrR1N0cmVhbWVyOjppc1JlYWR5Rm9yTW9yZVNhbXBsZXMoKQogewogICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7Ci0gICAgYXV0byBxdWV1ZSA9IGhvbGRMb2NrKG1fcXVldWVEYXRhTXV0ZXgp
OworICAgIERhdGFNdXRleExvY2tlciBxdWV1ZSB7IG1fcXVldWVEYXRhTXV0ZXggfTsKICAgICBy
ZXR1cm4gIXF1ZXVlLT5pc0Z1bGwoKTsKIH0KIAogdm9pZCBNZWRpYVNvdXJjZVRyYWNrR1N0cmVh
bWVyOjpub3RpZnlXaGVuUmVhZHlGb3JNb3JlU2FtcGxlcyhUcmFja1F1ZXVlOjpMb3dMZXZlbEhh
bmRsZXImJiBoYW5kbGVyKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgYXV0
byBxdWV1ZSA9IGhvbGRMb2NrKG1fcXVldWVEYXRhTXV0ZXgpOworICAgIERhdGFNdXRleExvY2tl
ciBxdWV1ZSB7IG1fcXVldWVEYXRhTXV0ZXggfTsKICAgICBxdWV1ZS0+bm90aWZ5V2hlbkxvd0xl
dmVsKFdURk1vdmUoaGFuZGxlcikpOwogfQogCiB2b2lkIE1lZGlhU291cmNlVHJhY2tHU3RyZWFt
ZXI6OmVucXVldWVPYmplY3QoR1JlZlB0cjxHc3RNaW5pT2JqZWN0PiYmIG9iamVjdCkKIHsKICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGF1dG8gcXVldWUgPSBob2xkTG9jayhtX3F1
ZXVlRGF0YU11dGV4KTsKKyAgICBEYXRhTXV0ZXhMb2NrZXIgcXVldWUgeyBtX3F1ZXVlRGF0YU11
dGV4IH07CiAgICAgcXVldWUtPmVucXVldWVPYmplY3QoV1RGTW92ZShvYmplY3QpKTsKIH0KIAog
dm9pZCBNZWRpYVNvdXJjZVRyYWNrR1N0cmVhbWVyOjpjbGVhclF1ZXVlKCkKIHsKICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGF1dG8gcXVldWUgPSBob2xkTG9jayhtX3F1ZXVlRGF0
YU11dGV4KTsKKyAgICBEYXRhTXV0ZXhMb2NrZXIgcXVldWUgeyBtX3F1ZXVlRGF0YU11dGV4IH07
CiAgICAgcXVldWUtPmNsZWFyKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFTb3VyY2VUcmFja0dTdHJlYW1lci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNv
dXJjZVRyYWNrR1N0cmVhbWVyLmgKaW5kZXggNmFlNDFjNGFhMWQxMTMzMTAwZDNmODg5ODRkMWQx
Yzk0NjYwY2I0OC4uOGRjNWY1NDExYTM1ZTBlZjM0MTA3ZDBiZWE0ZWEyZWM0NjhkOWZlYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9N
ZWRpYVNvdXJjZVRyYWNrR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJjZVRyYWNrR1N0cmVhbWVyLmgKQEAgLTQ3
LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6OlRyYWNr
VHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAgICAgQXRvbVN0cmluZyB0cmFj
a0lkKCkgY29uc3QgeyByZXR1cm4gbV90cmFja0lkOyB9CiAgICAgR1JlZlB0cjxHc3RDYXBzPiYg
aW5pdGlhbENhcHMoKSB7IHJldHVybiBtX2luaXRpYWxDYXBzOyB9Ci0gICAgV1RGOjpEYXRhTXV0
ZXg8VHJhY2tRdWV1ZT4mIHF1ZXVlRGF0YU11dGV4KCkgeyByZXR1cm4gbV9xdWV1ZURhdGFNdXRl
eDsgfQorICAgIERhdGFNdXRleDxUcmFja1F1ZXVlPiYgcXVldWVEYXRhTXV0ZXgoKSB7IHJldHVy
biBtX3F1ZXVlRGF0YU11dGV4OyB9CiAKICAgICBib29sIGlzUmVhZHlGb3JNb3JlU2FtcGxlcygp
OwogCkBAIC02OSw3ICs2OSw3IEBAIHByaXZhdGU6CiAgICAgVHJhY2tQcml2YXRlQmFzZUdTdHJl
YW1lcjo6VHJhY2tUeXBlIG1fdHlwZTsKICAgICBBdG9tU3RyaW5nIG1fdHJhY2tJZDsKICAgICBH
UmVmUHRyPEdzdENhcHM+IG1faW5pdGlhbENhcHM7Ci0gICAgV1RGOjpEYXRhTXV0ZXg8VHJhY2tR
dWV1ZT4gbV9xdWV1ZURhdGFNdXRleDsKKyAgICBEYXRhTXV0ZXg8VHJhY2tRdWV1ZT4gbV9xdWV1
ZURhdGFNdXRleDsKIAogICAgIGJvb2wgbV9pc1JlbW92ZWQgeyBmYWxzZSB9OwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvV2Vi
S2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL21zZS9XZWJLaXRNZWRpYVNvdXJjZUdTdHJlYW1lci5jcHAKaW5kZXgg
N2YwYTlkNGFjYjBmMzEyZmM1ZDBlYjNiOTZkNjQ1ZTQ2YzBjZDVmOS4uN2ZjZjQ2YTVjMWU2YWUw
ZmVmNmE4YTQ5YTNjOTIzZjg5ZDQ4NmNiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9XZWJLaXRNZWRpYVNvdXJjZUdTdHJlYW1lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9X
ZWJLaXRNZWRpYVNvdXJjZUdTdHJlYW1lci5jcHAKQEAgLTE4NCw4ICsxODQsOCBAQCBzdHJ1Y3Qg
U3RyZWFtIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFN0cmVhbT4gewogICAgICAgICBH
c3RTZWdtZW50IHNlZ21lbnQ7CiAgICAgICAgIEdSZWZQdHI8R3N0Q2Fwcz4gcGVuZGluZ0luaXRp
YWxDYXBzOwogICAgICAgICBHUmVmUHRyPEdzdENhcHM+IHByZXZpb3VzQ2FwczsgLy8gQ2FwcyBm
cm9tIGVucXVldWVkIHNhbXBsZXMgYXJlIGNvbXBhcmVkIHRvIHRoZXNlIHRvIHB1c2ggQ0FQUyBl
dmVudHMgYXMgbmVlZGVkLgotICAgICAgICBVbmNoZWNrZWRDb25kaXRpb24gcGFkTGlua2VkT3JG
bHVzaGVkQ29uZGl0aW9uOwotICAgICAgICBVbmNoZWNrZWRDb25kaXRpb24gcXVldWVDaGFuZ2Vk
T3JGbHVzaGVkQ29uZGl0aW9uOworICAgICAgICBDb25kaXRpb24gcGFkTGlua2VkT3JGbHVzaGVk
Q29uZGl0aW9uOworICAgICAgICBDb25kaXRpb24gcXVldWVDaGFuZ2VkT3JGbHVzaGVkQ29uZGl0
aW9uOwogICAgICAgICBib29sIGlzRmx1c2hpbmcgeyBmYWxzZSB9OwogCiAgICAgICAgIC8vIEZs
dXNoZXMgYmVmb3JlIGFueSBidWZmZXIgaGFzIGJlZW4gcG9wcGVkIGZyb20gdGhlIHF1ZXVlIGFu
ZCBzZW50IGRvd25zdHJlYW0gY2FuIGJlIGF2b2lkZWQganVzdApAQCAtMzQ0LDcgKzM0NCw3IEBA
IHN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRNZWRpYVNyY0FjdGl2YXRlTW9kZShHc3RQYWQqIHBhZCwg
R3N0T2JqZWN0KiBzb3VyY2UsIEdzdFBhCiAgICAgICAgIC8vIFVuYmxvY2sgdGhlIHN0cmVhbWlu
ZyB0aHJlYWQuCiAgICAgICAgIFJlZlB0cjxTdHJlYW0+JiBzdHJlYW0gPSBXRUJLSVRfTUVESUFf
U1JDX1BBRChwYWQpLT5wcml2LT5zdHJlYW07CiAgICAgICAgIHsKLSAgICAgICAgICAgIGF1dG8g
c3RyZWFtaW5nTWVtYmVycyA9IGhvbGRMb2NrKHN0cmVhbS0+c3RyZWFtaW5nTWVtYmVyc0RhdGFN
dXRleCk7CisgICAgICAgICAgICBEYXRhTXV0ZXhMb2NrZXIgc3RyZWFtaW5nTWVtYmVycyB7IHN0
cmVhbS0+c3RyZWFtaW5nTWVtYmVyc0RhdGFNdXRleCB9OwogICAgICAgICAgICAgc3RyZWFtaW5n
TWVtYmVycy0+aXNGbHVzaGluZyA9IHRydWU7CiAgICAgICAgICAgICBzdHJlYW1pbmdNZW1iZXJz
LT5wYWRMaW5rZWRPckZsdXNoZWRDb25kaXRpb24ubm90aWZ5T25lKCk7CiAgICAgICAgICAgICBz
dHJlYW1pbmdNZW1iZXJzLT5xdWV1ZUNoYW5nZWRPckZsdXNoZWRDb25kaXRpb24ubm90aWZ5T25l
KCk7CkBAIC0zNTQsNyArMzU0LDcgQEAgc3RhdGljIGdib29sZWFuIHdlYktpdE1lZGlhU3JjQWN0
aXZhdGVNb2RlKEdzdFBhZCogcGFkLCBHc3RPYmplY3QqIHNvdXJjZSwgR3N0UGEKICAgICAgICAg
Ly8gT3RoZXJ3aXNlIGEgZGVhZGxvY2sgd291bGQgb2NjdXIgYXMgdGhlIG5leHQgZnVuY3Rpb24g
dHJpZXMgdG8gam9pbiB0aGUgdGhyZWFkLgogICAgICAgICBnc3RfcGFkX3N0b3BfdGFzayhwYWQp
OwogICAgICAgICB7Ci0gICAgICAgICAgICBhdXRvIHN0cmVhbWluZ01lbWJlcnMgPSBob2xkTG9j
ayhzdHJlYW0tPnN0cmVhbWluZ01lbWJlcnNEYXRhTXV0ZXgpOworICAgICAgICAgICAgRGF0YU11
dGV4TG9ja2VyIHN0cmVhbWluZ01lbWJlcnMgeyBzdHJlYW0tPnN0cmVhbWluZ01lbWJlcnNEYXRh
TXV0ZXggfTsKICAgICAgICAgICAgIHN0cmVhbWluZ01lbWJlcnMtPmlzRmx1c2hpbmcgPSBmYWxz
ZTsKICAgICAgICAgfQogICAgIH0KQEAgLTM2NCw3ICszNjQsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4g
d2ViS2l0TWVkaWFTcmNBY3RpdmF0ZU1vZGUoR3N0UGFkKiBwYWQsIEdzdE9iamVjdCogc291cmNl
LCBHc3RQYQogc3RhdGljIHZvaWQgd2ViS2l0TWVkaWFTcmNQYWRMaW5rZWQoR3N0UGFkKiBwYWQs
IEdzdFBhZCosIHZvaWQqKQogewogICAgIFJlZlB0cjxTdHJlYW0+JiBzdHJlYW0gPSBXRUJLSVRf
TUVESUFfU1JDX1BBRChwYWQpLT5wcml2LT5zdHJlYW07Ci0gICAgYXV0byBzdHJlYW1pbmdNZW1i
ZXJzID0gaG9sZExvY2soc3RyZWFtLT5zdHJlYW1pbmdNZW1iZXJzRGF0YU11dGV4KTsKKyAgICBE
YXRhTXV0ZXhMb2NrZXIgc3RyZWFtaW5nTWVtYmVycyB7IHN0cmVhbS0+c3RyZWFtaW5nTWVtYmVy
c0RhdGFNdXRleCB9OwogICAgIHN0cmVhbWluZ01lbWJlcnMtPnBhZExpbmtlZE9yRmx1c2hlZENv
bmRpdGlvbi5ub3RpZnlPbmUoKTsKIH0KIApAQCAtMzc0LDcgKzM3NCw3IEBAIHN0YXRpYyB2b2lk
IHdlYktpdE1lZGlhU3JjTG9vcCh2b2lkKiB1c2VyRGF0YSkKICAgICBHc3RQYWQqIHBhZCA9IEdT
VF9QQUQodXNlckRhdGEpOwogICAgIFJlZlB0cjxTdHJlYW0+JiBzdHJlYW0gPSBXRUJLSVRfTUVE
SUFfU1JDX1BBRChwYWQpLT5wcml2LT5zdHJlYW07CiAKLSAgICBhdXRvIHN0cmVhbWluZ01lbWJl
cnMgPSBob2xkTG9jayhzdHJlYW0tPnN0cmVhbWluZ01lbWJlcnNEYXRhTXV0ZXgpOworICAgIERh
dGFNdXRleExvY2tlciBzdHJlYW1pbmdNZW1iZXJzIHsgc3RyZWFtLT5zdHJlYW1pbmdNZW1iZXJz
RGF0YU11dGV4IH07CiAgICAgaWYgKHN0cmVhbWluZ01lbWJlcnMtPmlzRmx1c2hpbmcpIHsKICAg
ICAgICAgZ3N0X3BhZF9wYXVzZV90YXNrKHBhZCk7CiAgICAgICAgIHJldHVybjsKQEAgLTQ0MCw3
ICs0NDAsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRNZWRpYVNyY0xvb3Aodm9pZCogdXNlckRhdGEp
CiAKICAgICBHUmVmUHRyPEdzdE1pbmlPYmplY3Q+IG9iamVjdDsKICAgICB7Ci0gICAgICAgIGF1
dG8gcXVldWUgPSBob2xkTG9jayhzdHJlYW0tPnRyYWNrLT5xdWV1ZURhdGFNdXRleCgpKTsKKyAg
ICAgICAgRGF0YU11dGV4TG9ja2VyIHF1ZXVlIHsgc3RyZWFtLT50cmFjay0+cXVldWVEYXRhTXV0
ZXgoKSB9OwogICAgICAgICBpZiAoIXF1ZXVlLT5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIG9i
amVjdCA9IHF1ZXVlLT5wb3AoKTsKICAgICAgICAgICAgIHN0cmVhbWluZ01lbWJlcnMtPmhhc1Bv
cHBlZEZpcnN0T2JqZWN0ID0gdHJ1ZTsKQEAgLTQ0OCw3ICs0NDgsNyBAQCBzdGF0aWMgdm9pZCB3
ZWJLaXRNZWRpYVNyY0xvb3Aodm9pZCogdXNlckRhdGEpCiAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICBxdWV1ZS0+bm90aWZ5V2hlbk5vdEVtcHR5KFsmb2JqZWN0LCBzdHJlYW1dKEdSZWZQ
dHI8R3N0TWluaU9iamVjdD4mJiByZWNlaXZlZE9iamVjdCkgewogICAgICAgICAgICAgICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgICAgICAgICAgICAgYXV0byBzdHJlYW1pbmdNZW1i
ZXJzID0gaG9sZExvY2soc3RyZWFtLT5zdHJlYW1pbmdNZW1iZXJzRGF0YU11dGV4KTsKKyAgICAg
ICAgICAgICAgICBEYXRhTXV0ZXhMb2NrZXIgc3RyZWFtaW5nTWVtYmVycyB7IHN0cmVhbS0+c3Ry
ZWFtaW5nTWVtYmVyc0RhdGFNdXRleCB9OwogICAgICAgICAgICAgICAgIEFTU0VSVCghc3RyZWFt
aW5nTWVtYmVycy0+aXNGbHVzaGluZyk7CiAKICAgICAgICAgICAgICAgICBvYmplY3QgPSBXVEZN
b3ZlKHJlY2VpdmVkT2JqZWN0KTsKQEAgLTQ2NSw3ICs0NjUsNyBAQCBzdGF0aWMgdm9pZCB3ZWJL
aXRNZWRpYVNyY0xvb3Aodm9pZCogdXNlckRhdGEpCiAgICAgfSk7CiAgICAgewogICAgICAgICAv
LyBFbnN1cmUgdGhhdCBub3RpZnlXaGVuTm90RW1wdHkoKSdzIGNhbGxiYWNrIChpZiBhbnkpIGlz
IGNsZWFyZWQgYWZ0ZXIgdGhpcyBwb2ludC4KLSAgICAgICAgYXV0byBxdWV1ZSA9IGhvbGRMb2Nr
KHN0cmVhbS0+dHJhY2stPnF1ZXVlRGF0YU11dGV4KCkpOworICAgICAgICBEYXRhTXV0ZXhMb2Nr
ZXIgcXVldWUgeyBzdHJlYW0tPnRyYWNrLT5xdWV1ZURhdGFNdXRleCgpIH07CiAgICAgICAgIHF1
ZXVlLT5yZXNldE5vdEVtcHR5SGFuZGxlcigpOwogICAgIH0KICAgICBpZiAoc3RyZWFtaW5nTWVt
YmVycy0+aXNGbHVzaGluZykgewpAQCAtNTA5LDcgKzUwOSw3IEBAIHN0YXRpYyB2b2lkIHdlYktp
dE1lZGlhU3JjTG9vcCh2b2lkKiB1c2VyRGF0YSkKICAgICAgICAgfQogCiAgICAgICAgIC8vIFB1
c2ggdGhlIGJ1ZmZlciB3aXRob3V0IHRoZSBzdHJlYW1pbmdNZW1iZXJzIGxvY2sgc28gdGhhdCBm
bHVzaGVzIGNhbiBoYXBwZW4gd2hpbGUgaXQgdHJhdmVscyBkb3duc3RyZWFtLgotICAgICAgICBz
dHJlYW1pbmdNZW1iZXJzLmxvY2tIb2xkZXIoKS51bmxvY2tFYXJseSgpOworICAgICAgICBzdHJl
YW1pbmdNZW1iZXJzLnVubG9ja0Vhcmx5KCk7CiAKICAgICAgICAgQVNTRVJUKEdTVF9CVUZGRVJf
UFRTX0lTX1ZBTElEKGJ1ZmZlci5nZXQoKSkpOwogICAgICAgICBHU1RfVFJBQ0VfT0JKRUNUKHBh
ZCwgIlB1c2hpbmcgYnVmZmVyIGRvd25zdHJlYW06ICUiIEdTVF9QVFJfRk9STUFULCBidWZmZXIu
Z2V0KCkpOwpAQCAtNTI1LDcgKzUyNSw3IEBAIHN0YXRpYyB2b2lkIHdlYktpdE1lZGlhU3JjTG9v
cCh2b2lkKiB1c2VyRGF0YSkKICAgICAgICAgLy8gRU9TIGV2ZW50cyBhbmQgb3RoZXIgZW5xdWV1
ZWQgZXZlbnRzIGFyZSBhbHNvIHNlbnQgdW5sb2NrZWQgc28gdGhleSBjYW4gcmVhY3QgdG8gZmx1
c2hlcyBpZiBuZWNlc3NhcnkuCiAgICAgICAgIEdSZWZQdHI8R3N0RXZlbnQ+IGV2ZW50ID0gR1Jl
ZlB0cjxHc3RFdmVudD4oR1NUX0VWRU5UKG9iamVjdC5sZWFrUmVmKCkpKTsKIAotICAgICAgICBz
dHJlYW1pbmdNZW1iZXJzLmxvY2tIb2xkZXIoKS51bmxvY2tFYXJseSgpOworICAgICAgICBzdHJl
YW1pbmdNZW1iZXJzLnVubG9ja0Vhcmx5KCk7CiAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QocGFk
LCAiUHVzaGluZyBldmVudCBkb3duc3RyZWFtOiAlIiBHU1RfUFRSX0ZPUk1BVCwgZXZlbnQuZ2V0
KCkpOwogICAgICAgICBib29sIGV2ZW50SGFuZGxlZCA9IGdzdF9wYWRfcHVzaF9ldmVudChwYWQs
IEdSZWZQdHI8R3N0RXZlbnQ+KGV2ZW50KS5sZWFrUmVmKCkpOwogICAgICAgICBpZiAoIWV2ZW50
SGFuZGxlZCkKQEAgLTU0MCwxMSArNTQwLDExIEBAIHN0YXRpYyB2b2lkIHdlYktpdE1lZGlhU3Jj
U3RyZWFtRmx1c2goU3RyZWFtKiBzdHJlYW0sIGJvb2wgaXNTZWVraW5nRmx1c2gpCiAgICAgYm9v
bCBza2lwRmx1c2ggPSBmYWxzZTsKIAogICAgIHsKLSAgICAgICAgYXV0byBzdHJlYW1pbmdNZW1i
ZXJzID0gaG9sZExvY2soc3RyZWFtLT5zdHJlYW1pbmdNZW1iZXJzRGF0YU11dGV4KTsKKyAgICAg
ICAgRGF0YU11dGV4TG9ja2VyIHN0cmVhbWluZ01lbWJlcnMgeyBzdHJlYW0tPnN0cmVhbWluZ01l
bWJlcnNEYXRhTXV0ZXggfTsKIAogICAgICAgICBpZiAoIXN0cmVhbWluZ01lbWJlcnMtPmhhc1Bv
cHBlZEZpcnN0T2JqZWN0KSB7CiAgICAgICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHN0cmVhbS0+
c291cmNlLCAiRmx1c2ggcmVxdWVzdCBmb3Igc3RyZWFtICclcycgb2NjdXJyZWQgYmVmb3JlIGhh
c1BvcHBlZEZpcnN0T2JqZWN0LCBqdXN0IGNsZWFyaW5nIHRoZSBxdWV1ZSBhbmQgcmVhZGp1c3Rp
bmcgdGhlIHNlZ21lbnQuIiwgc3RyZWFtLT50cmFjay0+dHJhY2tJZCgpLnN0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOwotICAgICAgICAgICAgYXV0byBxdWV1ZSA9IGhvbGRMb2NrKHN0cmVhbS0+dHJh
Y2stPnF1ZXVlRGF0YU11dGV4KCkpOworICAgICAgICAgICAgRGF0YU11dGV4TG9ja2VyIHF1ZXVl
IHsgc3RyZWFtLT50cmFjay0+cXVldWVEYXRhTXV0ZXgoKSB9OwogICAgICAgICAgICAgLy8gV2Ug
dXNlIGNsZWFyKCkgaW5zdGVhZCBvZiBmbHVzaCgpIGJlY2F1c2UgdGhlIFdlYktpdE1lZGlhU3Jj
IHN0cmVhbWluZyB0aHJlYWQgY291bGQgYmUgd2FpdGluZwogICAgICAgICAgICAgLy8gZm9yIHRo
ZSBxdWV1ZS4gZmx1c2goKSB3b3VsZCBjYW5jZWwgdGhlIG5vdEVtcHR5Q2FsbGJhY2sgdGhlcmVm
b3JlIGxlYXZpbmcgdGhlIHN0cmVhbWluZyB0aHJlYWQKICAgICAgICAgICAgIC8vIHN0dWNrIHdh
aXRpbmcgZm9yZXZlci4KQEAgLTU1OCw4ICs1NTgsOCBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRNZWRp
YVNyY1N0cmVhbUZsdXNoKFN0cmVhbSogc3RyZWFtLCBib29sIGlzU2Vla2luZ0ZsdXNoKQogICAg
ICAgICAvLyB3aGljaCB3aWxsIGtlZXBpbmcgdGhlIHN0cmVhbWluZyB0aHJlYWQgaWRsZS4KICAg
ICAgICAgR1NUX0RFQlVHX09CSkVDVChzdHJlYW0tPnBhZC5nZXQoKSwgIlRha2luZyB0aGUgU3Ry
ZWFtaW5nTWVtYmVycyBtdXRleCBhbmQgc2V0dGluZyBpc0ZsdXNoaW5nID0gdHJ1ZS4iKTsKICAg
ICAgICAgewotICAgICAgICAgICAgYXV0byBzdHJlYW1pbmdNZW1iZXJzID0gaG9sZExvY2soc3Ry
ZWFtLT5zdHJlYW1pbmdNZW1iZXJzRGF0YU11dGV4KTsKLSAgICAgICAgICAgIGF1dG8gcXVldWUg
PSBob2xkTG9jayhzdHJlYW0tPnRyYWNrLT5xdWV1ZURhdGFNdXRleCgpKTsKKyAgICAgICAgICAg
IERhdGFNdXRleExvY2tlciBzdHJlYW1pbmdNZW1iZXJzIHsgc3RyZWFtLT5zdHJlYW1pbmdNZW1i
ZXJzRGF0YU11dGV4IH07CisgICAgICAgICAgICBEYXRhTXV0ZXhMb2NrZXIgcXVldWUgeyBzdHJl
YW0tPnRyYWNrLT5xdWV1ZURhdGFNdXRleCgpIH07CiAKICAgICAgICAgICAgIHN0cmVhbWluZ01l
bWJlcnMtPmlzRmx1c2hpbmcgPSB0cnVlOwogICAgICAgICAgICAgcXVldWUtPmZsdXNoKCk7IC8v
IENsZWFyIHRoZSBxdWV1ZSBhbmQgY2FuY2VsIGFueSB3YWl0aW5nIGNhbGxiYWNrLgpAQCAtNTgx
LDcgKzU4MSw3IEBAIHN0YXRpYyB2b2lkIHdlYktpdE1lZGlhU3JjU3RyZWFtRmx1c2goU3RyZWFt
KiBzdHJlYW0sIGJvb2wgaXNTZWVraW5nRmx1c2gpCiAgICAgICAgIC8vIEluIHRoZSBjYXNlIG9m
IHNlZWtpbmcgZmx1c2ggd2UgYXJlIHJlc2V0dGluZyB0aGUgdGltZWxpbmUgKHNlZSB0aGUgZmx1
c2ggc3RvcCBsYXRlcikuCiAgICAgICAgIC8vIFRoZSByZXN1bHRpbmcgc2VnbWVudCBpcyBicmFu
ZCBuZXcsIGJ1dCB3aXRoIGEgZGlmZmVyZW50IHN0YXJ0IHRpbWUuCiAgICAgICAgIFdlYktpdE1l
ZGlhU3JjUHJpdmF0ZSogcHJpdiA9IHN0cmVhbS0+c291cmNlLT5wcml2OwotICAgICAgICBhdXRv
IHN0cmVhbWluZ01lbWJlcnMgPSBob2xkTG9jayhzdHJlYW0tPnN0cmVhbWluZ01lbWJlcnNEYXRh
TXV0ZXgpOworICAgICAgICBEYXRhTXV0ZXhMb2NrZXIgc3RyZWFtaW5nTWVtYmVycyB7IHN0cmVh
bS0+c3RyZWFtaW5nTWVtYmVyc0RhdGFNdXRleCB9OwogICAgICAgICBzdHJlYW1pbmdNZW1iZXJz
LT5zZWdtZW50LmJhc2UgPSAwOwogICAgICAgICBzdHJlYW1pbmdNZW1iZXJzLT5zZWdtZW50LnJh
dGUgPSBwcml2LT5yYXRlOwogICAgICAgICBzdHJlYW1pbmdNZW1iZXJzLT5zZWdtZW50LnN0YXJ0
ID0gc3RyZWFtaW5nTWVtYmVycy0+c2VnbWVudC50aW1lID0gcHJpdi0+c3RhcnRUaW1lOwpAQCAt
NTk1LDcgKzU5NSw3IEBAIHN0YXRpYyB2b2lkIHdlYktpdE1lZGlhU3JjU3RyZWFtRmx1c2goU3Ry
ZWFtKiBzdHJlYW0sIGJvb2wgaXNTZWVraW5nRmx1c2gpCiAgICAgICAgIC8vIEdTVF9DTE9DS19U
SU1FX05PTkUgaXMgcmV0dXJuZWQgd2hlbiB0aGUgcGlwZWxpbmUgaXMgbm90IHlldCBwcmUtcm9s
bGVkIChlLmcuIGp1c3QgYWZ0ZXIgYSBzZWVrKS4gSW4gdGhpcyBjYXNlCiAgICAgICAgIC8vIHdl
IGRvbid0IG5lZWQgdG8gYWRqdXN0IHRoZSBzZWdtZW50IHRob3VnaCwgYXMgcnVubmluZyB0aW1l
IGhhcyBub3QgYWR2YW5jZWQuCiAgICAgICAgIGlmIChHU1RfQ0xPQ0tfVElNRV9JU19WQUxJRChw
aXBlbGluZVN0cmVhbVRpbWUpKSB7Ci0gICAgICAgICAgICBhdXRvIHN0cmVhbWluZ01lbWJlcnMg
PSBob2xkTG9jayhzdHJlYW0tPnN0cmVhbWluZ01lbWJlcnNEYXRhTXV0ZXgpOworICAgICAgICAg
ICAgRGF0YU11dGV4TG9ja2VyIHN0cmVhbWluZ01lbWJlcnMgeyBzdHJlYW0tPnN0cmVhbWluZ01l
bWJlcnNEYXRhTXV0ZXggfTsKICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gaW5jcmVhc2UgdGhl
IGJhc2UgYnkgdGhlIHJ1bm5pbmcgdGltZSBhY2N1bXVsYXRlZCBkdXJpbmcgdGhlIHByZXZpb3Vz
IHNlZ21lbnQuCiAKICAgICAgICAgICAgIEdzdENsb2NrVGltZSBwaXBlbGluZVJ1bm5pbmdUaW1l
ID0gZ3N0X3NlZ21lbnRfdG9fcnVubmluZ190aW1lKCZzdHJlYW1pbmdNZW1iZXJzLT5zZWdtZW50
LCBHU1RfRk9STUFUX1RJTUUsIHBpcGVsaW5lU3RyZWFtVGltZSk7CkBAIC02MTQsNyArNjE0LDcg
QEAgc3RhdGljIHZvaWQgd2ViS2l0TWVkaWFTcmNTdHJlYW1GbHVzaChTdHJlYW0qIHN0cmVhbSwg
Ym9vbCBpc1NlZWtpbmdGbHVzaCkKICAgICAgICAgR1NUX1BBRF9TVFJFQU1fTE9DSyhzdHJlYW0t
PnBhZC5nZXQoKSk7CiAgICAgICAgIHsKICAgICAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3Ry
ZWFtLT5wYWQuZ2V0KCksICJUYWtpbmcgdGhlIFN0cmVhbWluZ01lbWJlcnMgbXV0ZXggYWdhaW4u
Iik7Ci0gICAgICAgICAgICBhdXRvIHN0cmVhbWluZ01lbWJlcnMgPSBob2xkTG9jayhzdHJlYW0t
PnN0cmVhbWluZ01lbWJlcnNEYXRhTXV0ZXgpOworICAgICAgICAgICAgRGF0YU11dGV4TG9ja2Vy
IHN0cmVhbWluZ01lbWJlcnMgeyBzdHJlYW0tPnN0cmVhbWluZ01lbWJlcnNEYXRhTXV0ZXggfTsK
ICAgICAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3RyZWFtLT5wYWQuZ2V0KCksICJTdHJlYW1p
bmdNZW1iZXJzIG11dGV4IHRha2VuLCB1c2luZyBpdCB0byBzZXQgaXNGbHVzaGluZyA9IGZhbHNl
LiIpOwogICAgICAgICAgICAgc3RyZWFtaW5nTWVtYmVycy0+aXNGbHVzaGluZyA9IGZhbHNlOwog
ICAgICAgICAgICAgc3RyZWFtaW5nTWVtYmVycy0+ZG9lc05lZWRTZWdtZW50RXZlbnQgPSB0cnVl
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGE1
YmM5NzE4ODE2OTJhOGI5OTI5ZjJhOWY2ZjhiMzIzNzczNDdlMzUuLmVhMDYyMGVkMWM0MDkyOWU5
MjMxZTQ1NmY3NjhmNjMzODM0ODJhOTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0wNS0yOSAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEFkb3B0IGNsYW5nIHRocmVhZCBzYWZl
dHkgYW5ub3RhdGlvbnMgaW4gV1RGOjpEYXRhTXV0ZXgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjQzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBBUEkgdGVzdCBkdWUgdG8gRGF0YU11dGV4
IEFQSSBjaGFuZ2VzLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRGF0YU11
dGV4LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDIxLTA1LTI4ICBE
YXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBDbGllbnRzIG9mIG9wdGlv
bmFsIHNob3VsZCB1c2UgaGFzX3ZhbHVlIGluc3RlYWQgb2YgcmVseWluZyBvbiBoYXNWYWx1ZSBt
YWNybwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRGF0YU11dGV4
LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0RhdGFNdXRleC5jcHAKaW5kZXgg
Yjc4MGI5Njk2Y2MzMTU0MDk4MzkwZmZiNGU4NzQzMjZhMDIyZmQwOS4uZTNlNzg2NGExMzZiMDk5
NGZkNmRmNGM5ZTFhMjVhMjMzZTNhNzg3NiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvRGF0YU11dGV4LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9EYXRhTXV0ZXguY3BwCkBAIC0zMCw4ICszMCw2IEBACiAjZGVmaW5lIEVOQUJMRV9EQVRB
X01VVEVYX0NIRUNLUyAxCiAjaW5jbHVkZSA8d3RmL0RhdGFNdXRleC5oPgogCi11c2luZyBuYW1l
c3BhY2UgV1RGOwotCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIHN0cnVjdCBNeVN0cnVj
dHVyZSB7CkBAIC00Miw5ICs0MCw5IEBAIFRFU1QoV1RGX0RhdGFNdXRleCwgVGFraW5nVGhlTXV0
ZXgpCiB7CiAgICAgRGF0YU11dGV4PE15U3RydWN0dXJlPiBteURhdGFNdXRleDsKIAotICAgIE93
bmVyQXdhcmVMb2NrKiBtdXRleDsKKyAgICBMb2NrKiBtdXRleDsKICAgICB7Ci0gICAgICAgIERh
dGFNdXRleDxNeVN0cnVjdHVyZT46OkxvY2tlZFdyYXBwZXIgd3JhcHBlcihteURhdGFNdXRleCk7
CisgICAgICAgIERhdGFNdXRleExvY2tlciB3cmFwcGVyIHsgbXlEYXRhTXV0ZXggfTsKICAgICAg
ICAgbXV0ZXggPSAmd3JhcHBlci5tdXRleCgpOwogICAgICAgICBBU1NFUlRfVFJVRShtdXRleC0+
aXNMb2NrZWQoKSk7CiAgICAgICAgIHdyYXBwZXItPm51bWJlciA9IDU7CkBAIC01Nyw3ICs1NSw3
IEBAIFRFU1QoV1RGX0RhdGFNdXRleCwgVGFraW5nVGhlTXV0ZXgpCiAgICAgQVNTRVJUX0ZBTFNF
KG11dGV4LT5pc0xvY2tlZCgpKTsKIAogICAgIHsKLSAgICAgICAgRGF0YU11dGV4PE15U3RydWN0
dXJlPjo6TG9ja2VkV3JhcHBlciB3cmFwcGVyKG15RGF0YU11dGV4KTsKKyAgICAgICAgRGF0YU11
dGV4TG9ja2VyIHdyYXBwZXIgeyBteURhdGFNdXRleCB9OwogICAgICAgICBFWFBFQ1RfRVEod3Jh
cHBlci0+bnVtYmVyLCA1KTsKICAgICB9CiB9CkBAIC02OCw3ICs2Niw3IEBAIFRFU1QoV1RGX0Rh
dGFNdXRleCwgUnVuVW5sb2NrZWRJbGxlZ2FsQWNjZXNzRGVhdGhUZXN0KQogewogICAgIDo6dGVz
dGluZzo6RkxBR1NfZ3Rlc3RfZGVhdGhfdGVzdF9zdHlsZSA9ICJ0aHJlYWRzYWZlIjsKICAgICBE
YXRhTXV0ZXg8TXlTdHJ1Y3R1cmU+IG15RGF0YU11dGV4OwotICAgIERhdGFNdXRleDxNeVN0cnVj
dHVyZT46OkxvY2tlZFdyYXBwZXIgd3JhcHBlcihteURhdGFNdXRleCk7CisgICAgRGF0YU11dGV4
TG9ja2VyIHdyYXBwZXIgeyBteURhdGFNdXRleCB9OwogICAgIHdyYXBwZXItPm51bWJlciA9IDU7
CiAKICAgICBBU1NFUlRfREVBVEgod3JhcHBlci5ydW5VbmxvY2tlZChbJl0oKSB7CkBAIC04MCw4
ICs3OCw4IEBAIFRFU1QoV1RGX0RhdGFNdXRleCwgRG91YmxlTG9ja0RlYXRoVGVzdCkKIHsKICAg
ICA6OnRlc3Rpbmc6OkZMQUdTX2d0ZXN0X2RlYXRoX3Rlc3Rfc3R5bGUgPSAidGhyZWFkc2FmZSI7
CiAgICAgRGF0YU11dGV4PE15U3RydWN0dXJlPiBteURhdGFNdXRleDsKLSAgICBEYXRhTXV0ZXg8
TXlTdHJ1Y3R1cmU+OjpMb2NrZWRXcmFwcGVyIHdyYXBwZXIxKG15RGF0YU11dGV4KTsKLSAgICBB
U1NFUlRfREVBVEgoRGF0YU11dGV4PE15U3RydWN0dXJlPjo6TG9ja2VkV3JhcHBlciB3cmFwcGVy
MihteURhdGFNdXRleCksICIiKTsKKyAgICBEYXRhTXV0ZXhMb2NrZXIgd3JhcHBlcjEgeyBteURh
dGFNdXRleCB9OworICAgIEFTU0VSVF9ERUFUSChEYXRhTXV0ZXhMb2NrZXIgd3JhcHBlcjIgeyBt
eURhdGFNdXRleCB9LCAiIik7CiB9CiAjZW5kaWYKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430126</attachid>
            <date>2021-05-29 20:26:57 -0700</date>
            <delta_ts>2021-05-29 22:23:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226431-20210529202656.patch</filename>
            <type>text/plain</type>
            <size>38886</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MjQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDk1NjVmYTExNTA1YTQ4N2I2ZTVhNThl
MzMzNzEwZGNhYjcwYWM5NmIuLjJkMzFjYTljYzA0OWUyMjExOGMyOGM1MDcxZmZlNWQ5ZTc0MTg2
OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMDUtMjkgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBBZG9wdCBjbGFuZyB0aHJlYWQgc2FmZXR5IGFubm90YXRp
b25zIGluIFdURjo6RGF0YU11dGV4CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjY0MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZG9wdCBjbGFuZyB0aHJlYWQgc2FmZXR5IGFubm90YXRpb25zIGluIFdU
Rjo6RGF0YU11dGV4LiBUaGlzIGFsbG93cyB1cyB0bworICAgICAgICBzdG9wIHVzaW5nIFVuY2hl
Y2tlZENvbmRpdGlvbiBpbiBhIGZldyBwbGFjZXMuCisKKyAgICAgICAgKiB3dGYvRGF0YU11dGV4
Lmg6CisgICAgICAgIChXVEY6OkRhdGFNdXRleDo6RGF0YU11dGV4KToKKwogMjAyMS0wNS0yOSAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFN0b3AgdXNpbmcgVW5j
aGVja2VkTG9jayBpbiBKU0M6OlZNSW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzAzYTVhN2U5Mjc1
M2NjYmQzMGE4N2NhYmUxODY2MDQ1MjQ1MWI1ZC4uYzU1ZjI2ZjJmNjdjZWEzNTk1Zjc2YWJkNWMx
ODQ0Njc1NTM5NTk0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDIxLTA1LTI5ICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRvcHQgY2xhbmcgdGhy
ZWFkIHNhZmV0eSBhbm5vdGF0aW9ucyBpbiBXVEY6OkRhdGFNdXRleAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2NDMxCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGNvZGUgYmFzZSBkdWUgdG8g
RGF0YU11dGV4IEFQSSBjaGFuZ2VzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnBlcmZvcm1UYXNrQXRNZWRpYVRpbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp0cmlnZ2VyUmVw
YWludCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwOgorICAgICAgICAod2ViS2l0V2ViU3JjQ29u
c3RydWN0ZWQpOgorICAgICAgICAod2ViS2l0V2ViU3JjR2V0UHJvcGVydHkpOgorICAgICAgICAo
d2ViS2l0V2ViU3JjU2V0Q29udGV4dCk6CisgICAgICAgICh3ZWJLaXRXZWJTcmNDcmVhdGUpOgor
ICAgICAgICAod2ViS2l0V2ViU3JjTWFrZVJlcXVlc3QpOgorICAgICAgICAod2ViS2l0V2ViU3Jj
U3RvcCk6CisgICAgICAgICh3ZWJLaXRXZWJTcmNHZXRTaXplKToKKyAgICAgICAgKHdlYktpdFdl
YlNyY0lzU2Vla2FibGUpOgorICAgICAgICAod2ViS2l0V2ViU3JjRG9TZWVrKToKKyAgICAgICAg
KHdlYktpdFdlYlNyY1F1ZXJ5KToKKyAgICAgICAgKHdlYktpdFdlYlNyY1VuTG9jayk6CisgICAg
ICAgICh3ZWJLaXRXZWJTcmNVbkxvY2tTdG9wKToKKyAgICAgICAgKHdlYktpdFdlYlNyY1NldE1l
ZGlhUGxheWVyKToKKyAgICAgICAgKHdlYktpdFNyY1Bhc3NlZENPUlNBY2Nlc3NDaGVjayk6Cisg
ICAgICAgIChDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6cmVzcG9uc2VSZWNlaXZlZCk6
CisgICAgICAgIChDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6ZGF0YVJlY2VpdmVkKToK
KyAgICAgICAgKENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjphY2Nlc3NDb250cm9sQ2hl
Y2tGYWlsZWQpOgorICAgICAgICAoQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmxvYWRG
YWlsZWQpOgorICAgICAgICAoQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmxvYWRGaW5p
c2hlZCk6CisgICAgICAgICh3ZWJLaXRTcmNXb3VsZFRhaW50T3JpZ2luKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291cmNlVHJhY2tHU3RyZWFtZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2VUcmFja0dTdHJlYW1lcjo6aXNSZWFk
eUZvck1vcmVTYW1wbGVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlVHJhY2tHU3Ry
ZWFtZXI6Om5vdGlmeVdoZW5SZWFkeUZvck1vcmVTYW1wbGVzKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhU291cmNlVHJhY2tHU3RyZWFtZXI6OmVucXVldWVPYmplY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFTb3VyY2VUcmFja0dTdHJlYW1lcjo6Y2xlYXJRdWV1ZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJjZVRyYWNrR1N0cmVhbWVy
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9XZWJLaXRNZWRp
YVNvdXJjZUdTdHJlYW1lci5jcHA6CisgICAgICAgICh3ZWJLaXRNZWRpYVNyY0FjdGl2YXRlTW9k
ZSk6CisgICAgICAgICh3ZWJLaXRNZWRpYVNyY1BhZExpbmtlZCk6CisgICAgICAgICh3ZWJLaXRN
ZWRpYVNyY0xvb3ApOgorICAgICAgICAod2ViS2l0TWVkaWFTcmNTdHJlYW1GbHVzaCk6CisKIDIw
MjEtMDUtMjggIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIENsaWVu
dHMgb2Ygb3B0aW9uYWwgc2hvdWxkIHVzZSBoYXNfdmFsdWUgaW5zdGVhZCBvZiByZWx5aW5nIG9u
IGhhc1ZhbHVlIG1hY3JvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9EYXRhTXV0ZXguaCBi
L1NvdXJjZS9XVEYvd3RmL0RhdGFNdXRleC5oCmluZGV4IGEyZTFkMjQwYThhNTA3YmU2YmJiOTll
NzMzNDM1MTI1NWY1NThlNTUuLjc3YTFlZDc5YjEwOTRjM2IzZmMwNGFiOTFiMzEzNDQzYTUzZDNj
YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0RhdGFNdXRleC5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL0RhdGFNdXRleC5oCkBAIC00MCwxMTkgKzQwLDg2IEBAIG5hbWVzcGFjZSBXVEYgewog
I2RlZmluZSBEQVRBX01VVEVYX0NIRUNLKGV4cHIpCiAjZW5kaWYKIAotdGVtcGxhdGU8dHlwZW5h
bWUgTG9ja1R5cGU+Ci1jbGFzcyBPd25lckF3YXJlTG9ja0FkYXB0ZXIgewordGVtcGxhdGUgPHR5
cGVuYW1lIFQ+IGNsYXNzIERhdGFNdXRleExvY2tlcjsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4K
K2NsYXNzIERhdGFNdXRleCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoRGF0YU11dGV4KTsKK3B1YmxpYzoKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSAuLi5BcmdzPgorICAgIGV4cGxpY2l0IERhdGFNdXRleChBcmdzJiYuLi4gYXJncykKKyAg
ICAgICAgOiBtX2RhdGEoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKQorICAgIHsgfQorCitw
cml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBEYXRhTXV0ZXhMb2NrZXI8VD47CisKKyAgICBMb2Nr
IG1fbXV0ZXg7CisgICAgVCBtX2RhdGEgV1RGX0dVQVJERURfQllfTE9DSyhtX211dGV4KTsKK307
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgV1RGX0NBUEFCSUxJVFlfU0NPUEVEX0xP
Q0sgRGF0YU11dGV4TG9ja2VyIHsKIHB1YmxpYzoKLSAgICB2b2lkIGxvY2soKQorICAgIGV4cGxp
Y2l0IERhdGFNdXRleExvY2tlcihEYXRhTXV0ZXg8VD4mIGRhdGFNdXRleCkgV1RGX0FDUVVJUkVT
X0xPQ0sobV9kYXRhTXV0ZXgubV9tdXRleCkKKyAgICAgICAgOiBtX2RhdGFNdXRleChkYXRhTXV0
ZXgpCiAgICAgewotICAgICAgICBEQVRBX01VVEVYX0NIRUNLKG1fb3duZXIgIT0gJlRocmVhZDo6
Y3VycmVudCgpKTsgLy8gVGhyZWFkIGF0dGVtcHRlZCByZWN1cnNpdmUgbG9jayAodW5zdXBwb3J0
ZWQpLgotICAgICAgICBtX2xvY2subG9jaygpOwotI2lmIEVOQUJMRV9EQVRBX01VVEVYX0NIRUNL
UwotICAgICAgICBBU1NFUlQoIW1fb3duZXIpOwotICAgICAgICBtX293bmVyID0gJlRocmVhZDo6
Y3VycmVudCgpOwotI2VuZGlmCisgICAgICAgIERBVEFfTVVURVhfQ0hFQ0soIW11dGV4KCkuaXNI
ZWxkKCkpOworICAgICAgICBtdXRleCgpLmxvY2soKTsKKyAgICAgICAgbV9pc0xvY2tlZCA9IHRy
dWU7CiAgICAgfQogCi0gICAgdm9pZCB1bmxvY2soKQorICAgIH5EYXRhTXV0ZXhMb2NrZXIoKSBX
VEZfUkVMRUFTRVNfTE9DSyhtX2RhdGFNdXRleC5tX211dGV4KQogICAgIHsKLSNpZiBFTkFCTEVf
REFUQV9NVVRFWF9DSEVDS1MKLSAgICAgICAgbV9vd25lciA9IG51bGxwdHI7Ci0jZW5kaWYKLSAg
ICAgICAgbV9sb2NrLnVubG9jaygpOworICAgICAgICBpZiAobV9pc0xvY2tlZCkKKyAgICAgICAg
ICAgIG11dGV4KCkudW5sb2NrKCk7CiAgICAgfQogCi0gICAgYm9vbCB0cnlMb2NrKCkKKyAgICBU
KiBvcGVyYXRvci0+KCkKICAgICB7Ci0gICAgICAgIERBVEFfTVVURVhfQ0hFQ0sobV9vd25lciAh
PSAmVGhyZWFkOjpjdXJyZW50KCkpOyAvLyBUaHJlYWQgYXR0ZW1wdGVkIHJlY3Vyc2l2ZSBsb2Nr
ICh1bnN1cHBvcnRlZCkuCi0gICAgICAgIGlmICghbV9sb2NrLnRyeUxvY2soKSkKLSAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLQotI2lmIEVOQUJMRV9EQVRBX01VVEVYX0NIRUNLUwotICAgICAg
ICBBU1NFUlQoIW1fb3duZXIpOwotICAgICAgICBtX293bmVyID0gJlRocmVhZDo6Y3VycmVudCgp
OwotI2VuZGlmCi0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBEQVRBX01VVEVYX0NIRUNL
KG11dGV4KCkuaXNIZWxkKCkpOworICAgICAgICBhc3NlcnRJc0hlbGQobV9kYXRhTXV0ZXgubV9t
dXRleCk7CisgICAgICAgIHJldHVybiAmbV9kYXRhTXV0ZXgubV9kYXRhOwogICAgIH0KIAotICAg
IGJvb2wgaXNMb2NrZWQoKSBjb25zdAorICAgIFQmIG9wZXJhdG9yKigpCiAgICAgewotICAgICAg
ICByZXR1cm4gbV9sb2NrLmlzTG9ja2VkKCk7CisgICAgICAgIERBVEFfTVVURVhfQ0hFQ0sobXV0
ZXgoKS5pc0hlbGQoKSk7CisgICAgICAgIGFzc2VydElzSGVsZChtX2RhdGFNdXRleC5tX211dGV4
KTsKKyAgICAgICAgcmV0dXJuIG1fZGF0YU11dGV4Lm1fZGF0YTsKICAgICB9CiAKLXByaXZhdGU6
Ci0jaWYgRU5BQkxFX0RBVEFfTVVURVhfQ0hFQ0tTCi0gICAgVGhyZWFkKiBtX293bmVyIHsgbnVs
bHB0ciB9OyAvLyBVc2UgVGhyZWFkKiBpbnN0ZWFkIG9mIFJlZlB0cjxUaHJlYWQ+IHNpbmNlIG1f
b3duZXIgdGhyZWFkIGlzIGFsd2F5cyBhbGl2ZSB3aGlsZSBtX293bmVyIGlzIHNldC4KLSNlbmRp
ZgotICAgIExvY2tUeXBlIG1fbG9jazsKLX07Ci0KLXVzaW5nIE93bmVyQXdhcmVMb2NrID0gT3du
ZXJBd2FyZUxvY2tBZGFwdGVyPExvY2s+OworICAgIExvY2smIG11dGV4KCkgV1RGX1JFVFVSTlNf
TE9DSyhtX2RhdGFNdXRleC5tX211dGV4KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZGF0YU11
dGV4Lm1fbXV0ZXg7CisgICAgfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBMb2Nr
VHlwZSA9IE93bmVyQXdhcmVMb2NrPgotY2xhc3MgRGF0YU11dGV4IHsKLSAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEYXRhTXV0ZXgpOwotcHVi
bGljOgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIC4uLkFyZ3M+Ci0gICAgZXhwbGljaXQgRGF0YU11
dGV4KEFyZ3MmJi4uLiBhcmdzKQotICAgICAgICA6IG1fZGF0YShzdGQ6OmZvcndhcmQ8QXJncz4o
YXJncykuLi4pCi0gICAgeyB9CisgICAgdm9pZCB1bmxvY2tFYXJseSgpIFdURl9SRUxFQVNFU19M
T0NLKG1fZGF0YU11dGV4Lm1fbXV0ZXgpCisgICAgeworICAgICAgICBEQVRBX01VVEVYX0NIRUNL
KG11dGV4KCkuaXNIZWxkKCkpOworICAgICAgICBtX2lzTG9ja2VkID0gZmFsc2U7CisgICAgICAg
IG11dGV4KCkudW5sb2NrKCk7CisgICAgfQogCi0gICAgY2xhc3MgTG9ja2VkV3JhcHBlciB7Ci0g
ICAgcHVibGljOgotICAgICAgICBleHBsaWNpdCBMb2NrZWRXcmFwcGVyKERhdGFNdXRleCYgZGF0
YU11dGV4KQotICAgICAgICAgICAgOiBtX211dGV4KGRhdGFNdXRleC5tX211dGV4KQotICAgICAg
ICAgICAgLCBtX2xvY2tIb2xkZXIoZGF0YU11dGV4Lm1fbXV0ZXgpCi0gICAgICAgICAgICAsIG1f
ZGF0YShkYXRhTXV0ZXgubV9kYXRhKQotICAgICAgICB7IH0KLQotICAgICAgICBUKiBvcGVyYXRv
ci0+KCkKLSAgICAgICAgewotICAgICAgICAgICAgREFUQV9NVVRFWF9DSEVDSyhtX211dGV4Lmlz
TG9ja2VkKCkpOwotICAgICAgICAgICAgcmV0dXJuICZtX2RhdGE7Ci0gICAgICAgIH0KLQotICAg
ICAgICBUJiBvcGVyYXRvciooKQotICAgICAgICB7Ci0gICAgICAgICAgICBEQVRBX01VVEVYX0NI
RUNLKG1fbXV0ZXguaXNMb2NrZWQoKSk7Ci0gICAgICAgICAgICByZXR1cm4gbV9kYXRhOwotICAg
ICAgICB9Ci0KLSAgICAgICAgTG9ja1R5cGUmIG11dGV4KCkKLSAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuIG1fbXV0ZXg7Ci0gICAgICAgIH0KLQotICAgICAgICBMb2NrZXI8TG9ja1R5cGU+
JiBsb2NrSG9sZGVyKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG1fbG9ja0hvbGRl
cjsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIFVzZWQgdG8gYXZvaWQgZXhjZXNzaXZlIGJyYWNl
IHNjb3Bpbmcgd2hlbiBvbmx5IHNtYWxsIHBhcnRzIG9mIHRoZSBjb2RlIG5lZWQgdG8gYmUgcnVu
IHVubG9ja2VkLgotICAgICAgICAvLyBQbGVhc2UgYmUgbWluZGZ1bCB0aGF0IGFjY2Vzc2luZyB0
aGUgd3JhcHBlZCBkYXRhIGZyb20gdGhlIGNhbGxiYWNrIGlzIHVuc2FmZSBhbmQgd2lsbCBmYWls
IG9uIGFzc2VydGlvbnMuCi0gICAgICAgIC8vIEl0J3MgaGVscGZ1bCB0byB1c2UgYSBtaW5pbWFs
IGxhbWJkYSBjYXB0dXJlIHRvIGJlIGNvbnNjaW91cyBvZiB3aGF0IGRhdGEgeW91J3JlIGhhdmlu
ZyBhY2Nlc3MgdG8gaW4gdGhlc2Ugc2VjdGlvbnMuCi0gICAgICAgIHZvaWQgcnVuVW5sb2NrZWQo
V1RGOjpGdW5jdGlvbjx2b2lkKCk+IGNhbGxiYWNrKQotICAgICAgICB7Ci0gICAgICAgICAgICBt
X211dGV4LnVubG9jaygpOwotICAgICAgICAgICAgY2FsbGJhY2soKTsKLSAgICAgICAgICAgIG1f
bXV0ZXgubG9jaygpOwotICAgICAgICB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBMb2NrVHlw
ZSYgbV9tdXRleDsKLSAgICAgICAgTG9ja2VyPExvY2tUeXBlPiBtX2xvY2tIb2xkZXI7Ci0gICAg
ICAgIFQmIG1fZGF0YTsKLSAgICB9OworICAgIC8vIFVzZWQgdG8gYXZvaWQgZXhjZXNzaXZlIGJy
YWNlIHNjb3Bpbmcgd2hlbiBvbmx5IHNtYWxsIHBhcnRzIG9mIHRoZSBjb2RlIG5lZWQgdG8gYmUg
cnVuIHVubG9ja2VkLgorICAgIC8vIFBsZWFzZSBiZSBtaW5kZnVsIHRoYXQgYWNjZXNzaW5nIHRo
ZSB3cmFwcGVkIGRhdGEgZnJvbSB0aGUgY2FsbGJhY2sgaXMgdW5zYWZlIGFuZCB3aWxsIGZhaWwg
b24gYXNzZXJ0aW9ucy4KKyAgICAvLyBJdCdzIGhlbHBmdWwgdG8gdXNlIGEgbWluaW1hbCBsYW1i
ZGEgY2FwdHVyZSB0byBiZSBjb25zY2lvdXMgb2Ygd2hhdCBkYXRhIHlvdSdyZSBoYXZpbmcgYWNj
ZXNzIHRvIGluIHRoZXNlIHNlY3Rpb25zLgorICAgIHZvaWQgcnVuVW5sb2NrZWQoY29uc3QgRnVu
Y3Rpb248dm9pZCgpPiYgY2FsbGJhY2spCisgICAgeworICAgICAgICBEQVRBX01VVEVYX0NIRUNL
KG11dGV4KCkuaXNIZWxkKCkpOworICAgICAgICBhc3NlcnRJc0hlbGQobV9kYXRhTXV0ZXgubV9t
dXRleCk7CisgICAgICAgIG11dGV4KCkudW5sb2NrKCk7CisgICAgICAgIGNhbGxiYWNrKCk7Cisg
ICAgICAgIG11dGV4KCkubG9jaygpOworICAgIH0KIAogcHJpdmF0ZToKLSAgICBMb2NrVHlwZSBt
X211dGV4OwotICAgIFQgbV9kYXRhOworICAgIERhdGFNdXRleDxUPiYgbV9kYXRhTXV0ZXg7Cisg
ICAgYm9vbCBtX2lzTG9ja2VkIHsgZmFsc2UgfTsKIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+
Ci10eXBlbmFtZSBEYXRhTXV0ZXg8VD46OkxvY2tlZFdyYXBwZXIgaG9sZExvY2soRGF0YU11dGV4
PFQ+JiBkYXRhTXV0ZXgpCi17Ci0gICAgcmV0dXJuIHR5cGVuYW1lIERhdGFNdXRleDxUPjo6TG9j
a2VkV3JhcHBlcihkYXRhTXV0ZXgpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcg
V1RGOjpEYXRhTXV0ZXg7Cit1c2luZyBXVEY6OkRhdGFNdXRleExvY2tlcjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNjgwOTEzOTVjZGUz
M2RiMTkxMDdlNDc1ZTA4MjYyYTEyZDJmMWRkNC4uNWIxODAyMTFlZmEyNjIyZGVmMWFhNGE4NzI5
ZmI2MjdjNTIyZjczZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lci5jcHAKQEAgLTI4NjMsNyArMjg2Myw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjpwZXJmb3JtVGFza0F0TWVkaWFUaW1lKEZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNr
CiAKICAgICBPcHRpb25hbDxGdW5jdGlvbjx2b2lkKCk+PiB0YXNrVG9TY2hlZHVsZTsKICAgICB7
Ci0gICAgICAgIGF1dG8gdGFza0F0TWVkaWFUaW1lU2NoZWR1bGVyID0gaG9sZExvY2sobV9UYXNr
QXRNZWRpYVRpbWVTY2hlZHVsZXJEYXRhTXV0ZXgpOworICAgICAgICBEYXRhTXV0ZXhMb2NrZXIg
dGFza0F0TWVkaWFUaW1lU2NoZWR1bGVyIHsgbV9UYXNrQXRNZWRpYVRpbWVTY2hlZHVsZXJEYXRh
TXV0ZXggfTsKICAgICAgICAgdGFza0F0TWVkaWFUaW1lU2NoZWR1bGVyLT5zZXRUYXNrKFdURk1v
dmUodGFzayksIHRpbWUsCiAgICAgICAgICAgICBtX3BsYXliYWNrUmF0ZSA+PSAwID8gVGFza0F0
TWVkaWFUaW1lU2NoZWR1bGVyOjpGb3J3YXJkIDogVGFza0F0TWVkaWFUaW1lU2NoZWR1bGVyOjpC
YWNrd2FyZCk7CiAgICAgICAgIHRhc2tUb1NjaGVkdWxlID0gdGFza0F0TWVkaWFUaW1lU2NoZWR1
bGVyLT5jaGVja1Rhc2tGb3JTY2hlZHVsaW5nKGN1cnJlbnRUaW1lKTsKQEAgLTMxMjQsNyArMzEy
NCw4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp0cmlnZ2VyUmVwYWludChH
c3RTYW1wbGUqIHNhbXBsZSkKICAgICBpZiAoYnVmZmVyICYmIEdTVF9CVUZGRVJfUFRTX0lTX1ZB
TElEKGJ1ZmZlcikpIHsKICAgICAgICAgLy8gSGV1cmlzdGljIHRvIGF2b2lkIGFza2luZyBmb3Ig
cGxheWJhY2tQb3NpdGlvbigpIGZyb20gYSBub24tbWFpbiB0aHJlYWQuCiAgICAgICAgIE1lZGlh
VGltZSBjdXJyZW50VGltZSA9IE1lZGlhVGltZShnc3Rfc2VnbWVudF90b19zdHJlYW1fdGltZShn
c3Rfc2FtcGxlX2dldF9zZWdtZW50KHNhbXBsZSksIEdTVF9GT1JNQVRfVElNRSwgR1NUX0JVRkZF
Ul9QVFMoYnVmZmVyKSksIEdTVF9TRUNPTkQpOwotICAgICAgICBpZiAoYXV0byB0YXNrID0gaG9s
ZExvY2sobV9UYXNrQXRNZWRpYVRpbWVTY2hlZHVsZXJEYXRhTXV0ZXgpLT5jaGVja1Rhc2tGb3JT
Y2hlZHVsaW5nKGN1cnJlbnRUaW1lKSkKKyAgICAgICAgRGF0YU11dGV4TG9ja2VyIHRhc2tBdE1l
ZGlhVGltZVNjaGVkdWxlciB7IG1fVGFza0F0TWVkaWFUaW1lU2NoZWR1bGVyRGF0YU11dGV4IH07
CisgICAgICAgIGlmIChhdXRvIHRhc2sgPSB0YXNrQXRNZWRpYVRpbWVTY2hlZHVsZXItPmNoZWNr
VGFza0ZvclNjaGVkdWxpbmcoY3VycmVudFRpbWUpKQogICAgICAgICAgICAgUnVuTG9vcDo6bWFp
bigpLmRpc3BhdGNoKFdURk1vdmUodGFzay52YWx1ZSgpKSk7CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKaW5kZXggODAzOTFkOTE2NzY1NDU0
NGFlZjU1ZjhhMjRhZGZkMTU1YTYwMTVkZC4uZGYwMjk2Y2Q2M2VkOGYzNmM0YmJjZjhkYTFlNmUy
Yzc3YWE2OTZkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIuaApAQCAtNTY1LDcgKzU2NSw3IEBAIHByaXZhdGU6CiAgICAgLy8gVGhpcyBpcyBzZXQgdG8g
dHJ1ZSBpZiBubyB2aWRlb2ZsaXAgZWxlbWVudCBoYXMgYmVlbiBhZGRlZCB0byB0aGUgcGlwZWxp
bmUuCiAgICAgYm9vbCBtX3Nob3VsZEhhbmRsZU9yaWVudGF0aW9uVGFncyB7IGZhbHNlIH07CiAK
LSAgICBXVEY6OkRhdGFNdXRleDxUYXNrQXRNZWRpYVRpbWVTY2hlZHVsZXI+IG1fVGFza0F0TWVk
aWFUaW1lU2NoZWR1bGVyRGF0YU11dGV4OworICAgIERhdGFNdXRleDxUYXNrQXRNZWRpYVRpbWVT
Y2hlZHVsZXI+IG1fVGFza0F0TWVkaWFUaW1lU2NoZWR1bGVyRGF0YU11dGV4OwogCiBwcml2YXRl
OgogI2lmIFVTRShXUEVfVklERU9fUExBTkVfRElTUExBWV9ETUFCVUYpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNl
R1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCmluZGV4IDVjN2M5ODA2ZDM0Y2I4YzEzODU5
YzkxYTljOWNiMmFkOTkxNjc3NmYuLjBiODc5NmFiN2I0N2Q5ZjgxMTNiZTk0ZWNkYTk2M2ZlM2Mw
MGJmNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCkBA
IC00MSw3ICs0MSw2IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVy
c2lvbi5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLXVzaW5nIFdURjo6RGF0YU11dGV4
OwogCiAvLyBOZXZlciBwYXVzZSBkb3dubG9hZCBvZiBtZWRpYSByZXNvdXJjZXMgc21hbGxlciB0
aGFuIDJNaUIuCiAjZGVmaW5lIFNNQUxMX01FRElBX1JFU09VUkNFX01BWF9TSVpFIDIgKiAxMDI0
ICogMTAyNApAQCAtMTQwLDcgKzEzOSw3IEBAIHN0cnVjdCBXZWJLaXRXZWJTcmNQcml2YXRlIHsK
IAogICAgICAgICAvLyBQcm9wZXJ0aWVzIHVzZWQgZm9yIEdTdHJlYW1lciBkYXRhLWZsb3cgaW4g
Y3JlYXRlKCkuCiAgICAgICAgIGJvb2wgaXNGbHVzaGluZyB7IGZhbHNlIH07Ci0gICAgICAgIFVu
Y2hlY2tlZENvbmRpdGlvbiByZXNwb25zZUNvbmRpdGlvbjsgLy8gTXVzdCBiZSBzaWduYWxlZCBh
ZnRlciBhbnkgdXBkYXRlcyBvbiBIVFRQIHJlcXVlc3RzLCBhbmQgd2hlbiBmbHVzaGluZy4KKyAg
ICAgICAgQ29uZGl0aW9uIHJlc3BvbnNlQ29uZGl0aW9uOyAvLyBNdXN0IGJlIHNpZ25hbGVkIGFm
dGVyIGFueSB1cGRhdGVzIG9uIEhUVFAgcmVxdWVzdHMsIGFuZCB3aGVuIGZsdXNoaW5nLgogICAg
ICAgICBHUmVmUHRyPEdzdEFkYXB0ZXI+IGFkYXB0ZXI7CiAgICAgICAgIGJvb2wgaXNEdXJhdGlv
blNldDsKICAgICAgICAgdWludDY0X3QgcmVhZFBvc2l0aW9uOwpAQCAtMTgxLDcgKzE4MCw3IEBA
IHN0YXRpYyB2b2lkIHdlYktpdFdlYlNyY0NvbnN0cnVjdGVkKEdPYmplY3QqKTsKIHN0YXRpYyB2
b2lkIHdlYktpdFdlYlNyY1NldFByb3BlcnR5KEdPYmplY3QqLCBndWludCBwcm9wZXJ0eUlELCBj
b25zdCBHVmFsdWUqLCBHUGFyYW1TcGVjKik7CiBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNHZXRQ
cm9wZXJ0eShHT2JqZWN0KiwgZ3VpbnQgcHJvcGVydHlJRCwgR1ZhbHVlKiwgR1BhcmFtU3BlYyop
Owogc3RhdGljIEdzdEZsb3dSZXR1cm4gd2ViS2l0V2ViU3JjQ3JlYXRlKEdzdFB1c2hTcmMqLCBH
c3RCdWZmZXIqKik7Ci1zdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVxdWVzdChXZWJLaXRX
ZWJTcmMqLCBEYXRhTXV0ZXg8V2ViS2l0V2ViU3JjUHJpdmF0ZTo6U3RyZWFtaW5nTWVtYmVycz46
OkxvY2tlZFdyYXBwZXImKTsKK3N0YXRpYyB2b2lkIHdlYktpdFdlYlNyY01ha2VSZXF1ZXN0KFdl
YktpdFdlYlNyYyosIERhdGFNdXRleExvY2tlcjxXZWJLaXRXZWJTcmNQcml2YXRlOjpTdHJlYW1p
bmdNZW1iZXJzPiYpOwogc3RhdGljIGdib29sZWFuIHdlYktpdFdlYlNyY1N0YXJ0KEdzdEJhc2VT
cmMqKTsKIHN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRXZWJTcmNTdG9wKEdzdEJhc2VTcmMqKTsKIHN0
YXRpYyBnYm9vbGVhbiB3ZWJLaXRXZWJTcmNHZXRTaXplKEdzdEJhc2VTcmMqLCBndWludDY0KiBz
aXplKTsKQEAgLTE5MSw4ICsxOTAsOCBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0V2ViU3JjUXVl
cnkoR3N0QmFzZVNyYyosIEdzdFF1ZXJ5Kik7CiBzdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0V2ViU3Jj
VW5Mb2NrKEdzdEJhc2VTcmMqKTsKIHN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRXZWJTcmNVbkxvY2tT
dG9wKEdzdEJhc2VTcmMqKTsKIHN0YXRpYyB2b2lkIHdlYktpdFdlYlNyY1NldENvbnRleHQoR3N0
RWxlbWVudCosIEdzdENvbnRleHQqKTsKLXN0YXRpYyB2b2lkIHJlc3RhcnRMb2FkZXJJZk5lZWRl
ZChXZWJLaXRXZWJTcmMqLCBEYXRhTXV0ZXg8V2ViS2l0V2ViU3JjUHJpdmF0ZTo6U3RyZWFtaW5n
TWVtYmVycz46OkxvY2tlZFdyYXBwZXImKTsKLXN0YXRpYyB2b2lkIHN0b3BMb2FkZXJJZk5lZWRl
ZChXZWJLaXRXZWJTcmMqLCBEYXRhTXV0ZXg8V2ViS2l0V2ViU3JjUHJpdmF0ZTo6U3RyZWFtaW5n
TWVtYmVycz46OkxvY2tlZFdyYXBwZXImKTsKK3N0YXRpYyB2b2lkIHJlc3RhcnRMb2FkZXJJZk5l
ZWRlZChXZWJLaXRXZWJTcmMqLCBEYXRhTXV0ZXhMb2NrZXI8V2ViS2l0V2ViU3JjUHJpdmF0ZTo6
U3RyZWFtaW5nTWVtYmVycz4mKTsKK3N0YXRpYyB2b2lkIHN0b3BMb2FkZXJJZk5lZWRlZChXZWJL
aXRXZWJTcmMqLCBEYXRhTXV0ZXhMb2NrZXI8V2ViS2l0V2ViU3JjUHJpdmF0ZTo6U3RyZWFtaW5n
TWVtYmVycz4mKTsKIAogI2RlZmluZSB3ZWJraXRfd2ViX3NyY19wYXJlbnRfY2xhc3MgcGFyZW50
X2NsYXNzCiBXRUJLSVRfREVGSU5FX1RZUEVfV0lUSF9DT0RFKFdlYktpdFdlYlNyYywgd2Via2l0
X3dlYl9zcmMsIEdTVF9UWVBFX1BVU0hfU1JDLApAQCAtMjYxLDcgKzI2MCw3IEBAIGVudW0gY2xh
c3MgUmVzZXRUeXBlIHsKICAgICBIYXJkCiB9OwogCi1zdGF0aWMgdm9pZCB3ZWJraXRXZWJTcmNS
ZXNldChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4PFdlYktpdFdlYlNyY1ByaXZhdGU6OlN0
cmVhbWluZ01lbWJlcnM+OjpMb2NrZWRXcmFwcGVyJiBtZW1iZXJzLCBSZXNldFR5cGUgcmVzZXRU
eXBlKQorc3RhdGljIHZvaWQgd2Via2l0V2ViU3JjUmVzZXQoV2ViS2l0V2ViU3JjKiBzcmMsIERh
dGFNdXRleExvY2tlcjxXZWJLaXRXZWJTcmNQcml2YXRlOjpTdHJlYW1pbmdNZW1iZXJzPiYgbWVt
YmVycywgUmVzZXRUeXBlIHJlc2V0VHlwZSkKIHsKICAgICBHU1RfREVCVUdfT0JKRUNUKHNyYywg
IlJlc2V0dGluZyBpbnRlcm5hbCBzdGF0ZSIpOwogICAgIGdzdF9hZGFwdGVyX2NsZWFyKG1lbWJl
cnMtPmFkYXB0ZXIuZ2V0KCkpOwpAQCAtMzAxLDcgKzMwMCw3IEBAIHN0YXRpYyB2b2lkIHdlYktp
dFdlYlNyY0NvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKIAogICAgIHByaXYtPm1pbmltdW1C
bG9ja3NpemUgPSBnc3RfYmFzZV9zcmNfZ2V0X2Jsb2Nrc2l6ZShHU1RfQkFTRV9TUkNfQ0FTVChz
cmMpKTsKIAotICAgIGF1dG8gbWVtYmVycyA9IGhvbGRMb2NrKHByaXYtPmRhdGFNdXRleCk7Cisg
ICAgRGF0YU11dGV4TG9ja2VyIG1lbWJlcnMgeyBwcml2LT5kYXRhTXV0ZXggfTsKICAgICBtZW1i
ZXJzLT5hZGFwdGVyID0gYWRvcHRHUmVmKGdzdF9hZGFwdGVyX25ldygpKTsKICAgICB3ZWJraXRX
ZWJTcmNSZXNldChzcmMsIG1lbWJlcnMsIFJlc2V0VHlwZTo6SGFyZCk7CiAKQEAgLTM0Niw3ICsz
NDUsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNHZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmpl
Y3QsIGd1aW50IHByb3BJRCwgR1ZhbHVlKiB2YWx1ZQogICAgICAgICBnX3ZhbHVlX3NldF9zdHJp
bmcodmFsdWUsIHByaXYtPm9yaWdpbmFsVVJJLmRhdGEoKSk7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgUFJPUF9SRVNPTFZFRF9MT0NBVElPTjogewotICAgICAgICBhdXRvIG1lbWJlcnMgPSBo
b2xkTG9jayhwcml2LT5kYXRhTXV0ZXgpOworICAgICAgICBEYXRhTXV0ZXhMb2NrZXIgbWVtYmVy
cyB7IHByaXYtPmRhdGFNdXRleCB9OwogICAgICAgICBnX3ZhbHVlX3NldF9zdHJpbmcodmFsdWUs
IG1lbWJlcnMtPnJlZGlyZWN0ZWRVUkkuaXNOdWxsKCkgPyBwcml2LT5vcmlnaW5hbFVSSS5kYXRh
KCkgOiBtZW1iZXJzLT5yZWRpcmVjdGVkVVJJLmRhdGEoKSk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KQEAgLTM3NiwxMyArMzc1LDEzIEBAIHN0YXRpYyB2b2lkIHdlYktpdFdlYlNyY1NldENvbnRl
eHQoR3N0RWxlbWVudCogZWxlbWVudCwgR3N0Q29udGV4dCogY29udGV4dCkKICAgICBHU1RfREVC
VUdfT0JKRUNUKHNyYywgImNvbnRleHQgdHlwZTogJXMiLCBnc3RfY29udGV4dF9nZXRfY29udGV4
dF90eXBlKGNvbnRleHQpKTsKICAgICBpZiAoZ3N0X2NvbnRleHRfaGFzX2NvbnRleHRfdHlwZShj
b250ZXh0LCBXRUJLSVRfV0VCX1NSQ19QTEFZRVJfQ09OVEVYVF9UWVBFX05BTUUpKSB7CiAgICAg
ICAgIGNvbnN0IEdWYWx1ZSogdmFsdWUgPSBnc3Rfc3RydWN0dXJlX2dldF92YWx1ZShnc3RfY29u
dGV4dF9nZXRfc3RydWN0dXJlKGNvbnRleHQpLCAicGxheWVyIik7Ci0gICAgICAgIGF1dG8gbWVt
YmVycyA9IGhvbGRMb2NrKHByaXYtPmRhdGFNdXRleCk7CisgICAgICAgIERhdGFNdXRleExvY2tl
ciBtZW1iZXJzIHsgcHJpdi0+ZGF0YU11dGV4IH07CiAgICAgICAgIG1lbWJlcnMtPnBsYXllciA9
IHJlaW50ZXJwcmV0X2Nhc3Q8TWVkaWFQbGF5ZXIqPihnX3ZhbHVlX2dldF9wb2ludGVyKHZhbHVl
KSk7CiAgICAgfQogICAgIEdTVF9FTEVNRU5UX0NMQVNTKHBhcmVudF9jbGFzcyktPnNldF9jb250
ZXh0KGVsZW1lbnQsIGNvbnRleHQpOwogfQogCi1zdGF0aWMgdm9pZCByZXN0YXJ0TG9hZGVySWZO
ZWVkZWQoV2ViS2l0V2ViU3JjKiBzcmMsIERhdGFNdXRleDxXZWJLaXRXZWJTcmNQcml2YXRlOjpT
dHJlYW1pbmdNZW1iZXJzPjo6TG9ja2VkV3JhcHBlciYgbWVtYmVycykKK3N0YXRpYyB2b2lkIHJl
c3RhcnRMb2FkZXJJZk5lZWRlZChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdl
YktpdFdlYlNyY1ByaXZhdGU6OlN0cmVhbWluZ01lbWJlcnM+JiBtZW1iZXJzKQogewogICAgIGlm
ICghbWVtYmVycy0+aXNEb3dubG9hZFN1c3BlbmRlZCkgewogICAgICAgICBHU1RfVFJBQ0VfT0JK
RUNUKHNyYywgImRvd25sb2FkIGFscmVhZHkgYWN0aXZlIik7CkBAIC00MTksNyArNDE4LDcgQEAg
c3RhdGljIHZvaWQgcmVzdGFydExvYWRlcklmTmVlZGVkKFdlYktpdFdlYlNyYyogc3JjLCBEYXRh
TXV0ZXg8V2ViS2l0V2ViU3JjUHJpdmEKIH0KIAogCi1zdGF0aWMgdm9pZCBzdG9wTG9hZGVySWZO
ZWVkZWQoV2ViS2l0V2ViU3JjKiBzcmMsIERhdGFNdXRleDxXZWJLaXRXZWJTcmNQcml2YXRlOjpT
dHJlYW1pbmdNZW1iZXJzPjo6TG9ja2VkV3JhcHBlciYgbWVtYmVycykKK3N0YXRpYyB2b2lkIHN0
b3BMb2FkZXJJZk5lZWRlZChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktp
dFdlYlNyY1ByaXZhdGU6OlN0cmVhbWluZ01lbWJlcnM+JiBtZW1iZXJzKQogewogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CiAKQEAgLTQ1OSw3ICs0NTgsNyBAQCBzdGF0aWMgR3N0Rmxvd1Jl
dHVybiB3ZWJLaXRXZWJTcmNDcmVhdGUoR3N0UHVzaFNyYyogcHVzaFNyYywgR3N0QnVmZmVyKiog
YnVmZmVyKQogICAgIEdzdEJhc2VTcmMqIGJhc2VTcmMgPSBHU1RfQkFTRV9TUkNfQ0FTVChwdXNo
U3JjKTsKICAgICBXZWJLaXRXZWJTcmMqIHNyYyA9IFdFQktJVF9XRUJfU1JDKGJhc2VTcmMpOwog
ICAgIFdlYktpdFdlYlNyY1ByaXZhdGUqIHByaXYgPSBzcmMtPnByaXY7Ci0gICAgYXV0byBtZW1i
ZXJzID0gaG9sZExvY2socHJpdi0+ZGF0YU11dGV4KTsKKyAgICBEYXRhTXV0ZXhMb2NrZXIgbWVt
YmVycyB7IHByaXYtPmRhdGFNdXRleCB9OwogCiAgICAgLy8gV2UgbmVlZCBtZW1iZXJzLT5wbGF5
ZXIgdG8gbWFrZSByZXF1ZXN0cy4gVGhlcmUgYXJlIHR3byBtZWNoYW5pc21zIGZvciB0aGlzLgog
ICAgIC8vCkBAIC02MzEsNyArNjMwLDcgQEAgc3RhdGljIGdib29sZWFuIHdlYktpdFdlYlNyY1N0
YXJ0KEdzdEJhc2VTcmMqIGJhc2VTcmMpCiAgICAgcmV0dXJuIFRSVUU7CiB9CiAKLXN0YXRpYyB2
b2lkIHdlYktpdFdlYlNyY01ha2VSZXF1ZXN0KFdlYktpdFdlYlNyYyogc3JjLCBEYXRhTXV0ZXg8
V2ViS2l0V2ViU3JjUHJpdmF0ZTo6U3RyZWFtaW5nTWVtYmVycz46OkxvY2tlZFdyYXBwZXImIG1l
bWJlcnMpCitzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVxdWVzdChXZWJLaXRXZWJTcmMq
IHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktpdFdlYlNyY1ByaXZhdGU6OlN0cmVhbWluZ01lbWJl
cnM+JiBtZW1iZXJzKQogewogICAgIFdlYktpdFdlYlNyY1ByaXZhdGUqIHByaXYgPSBzcmMtPnBy
aXY7CiAKQEAgLTY4OSw3ICs2ODgsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVx
dWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4PFdlYktpdFdlYlNyY1ByaQogICAgIEFT
U0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJv
dGVjdG9yID0gV1RGOjplbnN1cmVHUmVmKHNyYyksIHJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3Qp
LCByZXF1ZXN0TnVtYmVyID0gbWVtYmVycy0+cmVxdWVzdE51bWJlcl0gewogICAgICAgICBXZWJL
aXRXZWJTcmNQcml2YXRlKiBwcml2ID0gcHJvdGVjdG9yLT5wcml2OwotICAgICAgICBhdXRvIG1l
bWJlcnMgPSBob2xkTG9jayhwcml2LT5kYXRhTXV0ZXgpOworICAgICAgICBEYXRhTXV0ZXhMb2Nr
ZXIgbWVtYmVycyB7IHByaXYtPmRhdGFNdXRleCB9OwogICAgICAgICAvLyBJZ25vcmUgdGhpcyB0
YXNrIChub3QgbWFraW5nIGFueSBIVFRQIHJlcXVlc3QpIGlmIGJ5IG5vdyBXZWJLaXRXZWJTcmMg
c3RyZWFtaW5nIHRocmVhZCBpcyBhbHJlYWR5IHdhaXRpbmcKICAgICAgICAgLy8gZm9yIGEgZGlm
ZmVyZW50IHJlcXVlc3QuIFRoZXJlIGlzIG5vIHBvaW50IGFueW1vcmUgaW4gc2VuZGluZyB0aGlz
IG9uZS4KICAgICAgICAgaWYgKG1lbWJlcnMtPnJlcXVlc3ROdW1iZXIgIT0gcmVxdWVzdE51bWJl
cikgewpAQCAtNzE2LDcgKzcxNSw3IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRXZWJTcmNTdG9w
KEdzdEJhc2VTcmMqIGJhc2VTcmMpCiB7CiAgICAgV2ViS2l0V2ViU3JjKiBzcmMgPSBXRUJLSVRf
V0VCX1NSQyhiYXNlU3JjKTsKICAgICAvLyBiYXNlc3JjIHdpbGwgYWx3YXlzIGNhbGwgdW5Mb2Nr
KCkgYW5kIHVuTG9ja1N0b3AoKSBiZWZvcmUgY2FsbGluZyB0aGlzLiBTZWUgZ3N0X2Jhc2Vfc3Jj
X3N0b3AoKS4KLSAgICBhdXRvIG1lbWJlcnMgPSBob2xkTG9jayhzcmMtPnByaXYtPmRhdGFNdXRl
eCk7CisgICAgRGF0YU11dGV4TG9ja2VyIG1lbWJlcnMgeyBzcmMtPnByaXYtPmRhdGFNdXRleCB9
OwogICAgIHdlYmtpdFdlYlNyY1Jlc2V0KHNyYywgbWVtYmVycywgUmVzZXRUeXBlOjpIYXJkKTsK
ICAgICBHU1RfREVCVUdfT0JKRUNUKHNyYywgIlN0b3BwZWQgV2ViS2l0V2ViU3JjIik7CiAgICAg
cmV0dXJuIFRSVUU7CkBAIC03MjUsNyArNzI0LDcgQEAgc3RhdGljIGdib29sZWFuIHdlYktpdFdl
YlNyY1N0b3AoR3N0QmFzZVNyYyogYmFzZVNyYykKIHN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRXZWJT
cmNHZXRTaXplKEdzdEJhc2VTcmMqIGJhc2VTcmMsIGd1aW50NjQqIHNpemUpCiB7CiAgICAgV2Vi
S2l0V2ViU3JjKiBzcmMgPSBXRUJLSVRfV0VCX1NSQyhiYXNlU3JjKTsKLSAgICBhdXRvIG1lbWJl
cnMgPSBob2xkTG9jayhzcmMtPnByaXYtPmRhdGFNdXRleCk7CisgICAgRGF0YU11dGV4TG9ja2Vy
IG1lbWJlcnMgeyBzcmMtPnByaXYtPmRhdGFNdXRleCB9OwogCiAgICAgR1NUX0RFQlVHX09CSkVD
VChzcmMsICJoYXZlU2l6ZTogJXMsIHNpemU6ICUiIEdfR1VJTlQ2NF9GT1JNQVQsIGJvb2xGb3JQ
cmludGluZyhtZW1iZXJzLT5oYXZlU2l6ZSksIG1lbWJlcnMtPnNpemUpOwogICAgIGlmIChtZW1i
ZXJzLT5oYXZlU2l6ZSkgewpAQCAtNzM5LDcgKzczOCw3IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJL
aXRXZWJTcmNHZXRTaXplKEdzdEJhc2VTcmMqIGJhc2VTcmMsIGd1aW50NjQqIHNpemUpCiBzdGF0
aWMgZ2Jvb2xlYW4gd2ViS2l0V2ViU3JjSXNTZWVrYWJsZShHc3RCYXNlU3JjKiBiYXNlU3JjKQog
ewogICAgIFdlYktpdFdlYlNyYyogc3JjID0gV0VCS0lUX1dFQl9TUkMoYmFzZVNyYyk7Ci0gICAg
YXV0byBtZW1iZXJzID0gaG9sZExvY2soc3JjLT5wcml2LT5kYXRhTXV0ZXgpOworICAgIERhdGFN
dXRleExvY2tlciBtZW1iZXJzIHsgc3JjLT5wcml2LT5kYXRhTXV0ZXggfTsKICAgICBHU1RfREVC
VUdfT0JKRUNUKHNyYywgImlzU2Vla2FibGU6ICVzIiwgYm9vbEZvclByaW50aW5nKG1lbWJlcnMt
PmlzU2Vla2FibGUpKTsKICAgICByZXR1cm4gbWVtYmVycy0+aXNTZWVrYWJsZTsKIH0KQEAgLTc1
Niw3ICs3NTUsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0V2ViU3JjRG9TZWVrKEdzdEJhc2VT
cmMqIGJhc2VTcmMsIEdzdFNlZ21lbnQqIHNlZ21lbnQpCiAgICAgQVNTRVJUKEdTVF9FTEVNRU5U
KGJhc2VTcmMpLT5jdXJyZW50X3N0YXRlIDwgR1NUX1NUQVRFX1BBVVNFRCB8fCB3ZWJLaXRXZWJT
cmNJc1NlZWthYmxlKGJhc2VTcmMpKTsKIAogICAgIFdlYktpdFdlYlNyYyogc3JjID0gV0VCS0lU
X1dFQl9TUkMoYmFzZVNyYyk7Ci0gICAgYXV0byBtZW1iZXJzID0gaG9sZExvY2soc3JjLT5wcml2
LT5kYXRhTXV0ZXgpOworICAgIERhdGFNdXRleExvY2tlciBtZW1iZXJzIHsgc3JjLT5wcml2LT5k
YXRhTXV0ZXggfTsKIAogICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiU2VlayBzZWdtZW50OiAo
JSIgR19HVUlOVDY0X0ZPUk1BVCAiLSUiIEdfR1VJTlQ2NF9GT1JNQVQgIikgUG9zaXRpb24gcHJl
dmlvdXMgdG8gc2VlazogJSIgR19HVUlOVDY0X0ZPUk1BVCwgc2VnbWVudC0+c3RhcnQsIHNlZ21l
bnQtPnN0b3AsIG1lbWJlcnMtPnJlYWRQb3NpdGlvbik7CiAKQEAgLTc4Niw3ICs3ODUsNyBAQCBz
dGF0aWMgZ2Jvb2xlYW4gd2ViS2l0V2ViU3JjUXVlcnkoR3N0QmFzZVNyYyogYmFzZVNyYywgR3N0
UXVlcnkqIHF1ZXJ5KQogCiAgICAgaWYgKEdTVF9RVUVSWV9UWVBFKHF1ZXJ5KSA9PSBHU1RfUVVF
UllfVVJJKSB7CiAgICAgICAgIGdzdF9xdWVyeV9zZXRfdXJpKHF1ZXJ5LCBwcml2LT5vcmlnaW5h
bFVSSS5kYXRhKCkpOwotICAgICAgICBhdXRvIG1lbWJlcnMgPSBob2xkTG9jayhzcmMtPnByaXYt
PmRhdGFNdXRleCk7CisgICAgICAgIERhdGFNdXRleExvY2tlciBtZW1iZXJzIHsgc3JjLT5wcml2
LT5kYXRhTXV0ZXggfTsKICAgICAgICAgaWYgKCFtZW1iZXJzLT5yZWRpcmVjdGVkVVJJLmlzTnVs
bCgpKQogICAgICAgICAgICAgZ3N0X3F1ZXJ5X3NldF91cmlfcmVkaXJlY3Rpb24ocXVlcnksIG1l
bWJlcnMtPnJlZGlyZWN0ZWRVUkkuZGF0YSgpKTsKICAgICAgICAgcmVzdWx0ID0gVFJVRTsKQEAg
LTgwOSw3ICs4MDgsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0V2ViU3JjUXVlcnkoR3N0QmFz
ZVNyYyogYmFzZVNyYywgR3N0UXVlcnkqIHF1ZXJ5KQogc3RhdGljIGdib29sZWFuIHdlYktpdFdl
YlNyY1VuTG9jayhHc3RCYXNlU3JjKiBiYXNlU3JjKQogewogICAgIFdlYktpdFdlYlNyYyogc3Jj
ID0gV0VCS0lUX1dFQl9TUkMoYmFzZVNyYyk7Ci0gICAgYXV0byBtZW1iZXJzID0gaG9sZExvY2so
c3JjLT5wcml2LT5kYXRhTXV0ZXgpOworICAgIERhdGFNdXRleExvY2tlciBtZW1iZXJzIHsgc3Jj
LT5wcml2LT5kYXRhTXV0ZXggfTsKIAogICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiVW5sb2Nr
Iik7CiAgICAgbWVtYmVycy0+aXNGbHVzaGluZyA9IHRydWU7CkBAIC04NDAsNyArODM5LDcgQEAg
c3RhdGljIGdib29sZWFuIHdlYktpdFdlYlNyY1VuTG9jayhHc3RCYXNlU3JjKiBiYXNlU3JjKQog
c3RhdGljIGdib29sZWFuIHdlYktpdFdlYlNyY1VuTG9ja1N0b3AoR3N0QmFzZVNyYyogYmFzZVNy
YykKIHsKICAgICBXZWJLaXRXZWJTcmMqIHNyYyA9IFdFQktJVF9XRUJfU1JDKGJhc2VTcmMpOwot
ICAgIGF1dG8gbWVtYmVycyA9IGhvbGRMb2NrKHNyYy0+cHJpdi0+ZGF0YU11dGV4KTsKKyAgICBE
YXRhTXV0ZXhMb2NrZXIgbWVtYmVycyB7IHNyYy0+cHJpdi0+ZGF0YU11dGV4IH07CiAgICAgR1NU
X0RFQlVHX09CSkVDVChzcmMsICJVbmxvY2sgc3RvcCIpOwogICAgIG1lbWJlcnMtPmlzRmx1c2hp
bmcgPSBmYWxzZTsKICAgICB3ZWJraXRXZWJTcmNSZXNldChzcmMsIG1lbWJlcnMsIFJlc2V0VHlw
ZTo6U29mdCk7CkBAIC05MjYsMTQgKzkyNSwxNCBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNV
cmlIYW5kbGVySW5pdChncG9pbnRlciBnSWZhY2UsIGdwb2ludGVyKQogdm9pZCB3ZWJLaXRXZWJT
cmNTZXRNZWRpYVBsYXllcihXZWJLaXRXZWJTcmMqIHNyYywgV2ViQ29yZTo6TWVkaWFQbGF5ZXIq
IHBsYXllciwgY29uc3QgU3RyaW5nJiByZWZlcnJlcikKIHsKICAgICBBU1NFUlQocGxheWVyKTsK
LSAgICBhdXRvIG1lbWJlcnMgPSBob2xkTG9jayhzcmMtPnByaXYtPmRhdGFNdXRleCk7CisgICAg
RGF0YU11dGV4TG9ja2VyIG1lbWJlcnMgeyBzcmMtPnByaXYtPmRhdGFNdXRleCB9OwogICAgIG1l
bWJlcnMtPnBsYXllciA9IHBsYXllcjsKICAgICBtZW1iZXJzLT5yZWZlcnJlciA9IHJlZmVycmVy
OwogfQogCiBib29sIHdlYktpdFNyY1Bhc3NlZENPUlNBY2Nlc3NDaGVjayhXZWJLaXRXZWJTcmMq
IHNyYykKIHsKLSAgICBhdXRvIG1lbWJlcnMgPSBob2xkTG9jayhzcmMtPnByaXYtPmRhdGFNdXRl
eCk7CisgICAgRGF0YU11dGV4TG9ja2VyIG1lbWJlcnMgeyBzcmMtPnByaXYtPmRhdGFNdXRleCB9
OwogICAgIHJldHVybiBtZW1iZXJzLT5kaWRQYXNzQWNjZXNzQ29udHJvbENoZWNrOwogfQogCkBA
IC05ODgsNyArOTg3LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6cmVz
cG9uc2VSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb24KICAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOwogICAgIFdlYktpdFdlYlNyYyogc3JjID0gV0VCS0lUX1dFQl9TUkMobV9z
cmMuZ2V0KCkpOwogICAgIFdlYktpdFdlYlNyY1ByaXZhdGUqIHByaXYgPSBzcmMtPnByaXY7Ci0g
ICAgYXV0byBtZW1iZXJzID0gaG9sZExvY2socHJpdi0+ZGF0YU11dGV4KTsKKyAgICBEYXRhTXV0
ZXhMb2NrZXIgbWVtYmVycyB7IHByaXYtPmRhdGFNdXRleCB9OwogICAgIGlmIChtZW1iZXJzLT5y
ZXF1ZXN0TnVtYmVyICE9IG1fcmVxdWVzdE51bWJlcikgewogICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihTaG91bGRDb250aW51ZVBvbGljeUNoZWNrOjpObyk7CiAgICAgICAgIHJldHVybjsKQEAg
LTEwOTQsNyArMTA5Myw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmRh
dGFSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBjCiAgICAgV2ViS2l0V2Vi
U3JjKiBzcmMgPSBXRUJLSVRfV0VCX1NSQyhtX3NyYy5nZXQoKSk7CiAgICAgV2ViS2l0V2ViU3Jj
UHJpdmF0ZSogcHJpdiA9IHNyYy0+cHJpdjsKIAotICAgIGF1dG8gbWVtYmVycyA9IGhvbGRMb2Nr
KHByaXYtPmRhdGFNdXRleCk7CisgICAgRGF0YU11dGV4TG9ja2VyIG1lbWJlcnMgeyBwcml2LT5k
YXRhTXV0ZXggfTsKICAgICBpZiAobWVtYmVycy0+cmVxdWVzdE51bWJlciAhPSBtX3JlcXVlc3RO
dW1iZXIpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTEzMCw3ICsxMTI5LDcgQEAgdm9pZCBDYWNo
ZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6YWNjZXNzQ29udHJvbENoZWNrRmFpbGVkKFBsYXRm
b3JtTWVkaWFSZXNvdXIKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIFdlYktp
dFdlYlNyYyogc3JjID0gV0VCS0lUX1dFQl9TUkMobV9zcmMuZ2V0KCkpOwotICAgIGF1dG8gbWVt
YmVycyA9IGhvbGRMb2NrKHNyYy0+cHJpdi0+ZGF0YU11dGV4KTsKKyAgICBEYXRhTXV0ZXhMb2Nr
ZXIgbWVtYmVycyB7IHNyYy0+cHJpdi0+ZGF0YU11dGV4IH07CiAgICAgaWYgKG1lbWJlcnMtPnJl
cXVlc3ROdW1iZXIgIT0gbV9yZXF1ZXN0TnVtYmVyKQogICAgICAgICByZXR1cm47CiAKQEAgLTEx
NDMsNyArMTE0Miw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmxvYWRG
YWlsZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgUmVzCiB7CiAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKICAgICBXZWJLaXRXZWJTcmMqIHNyYyA9IFdFQktJVF9XRUJfU1JDKG1f
c3JjLmdldCgpKTsKLSAgICBhdXRvIG1lbWJlcnMgPSBob2xkTG9jayhzcmMtPnByaXYtPmRhdGFN
dXRleCk7CisgICAgRGF0YU11dGV4TG9ja2VyIG1lbWJlcnMgeyBzcmMtPnByaXYtPmRhdGFNdXRl
eCB9OwogICAgIGlmIChtZW1iZXJzLT5yZXF1ZXN0TnVtYmVyICE9IG1fcmVxdWVzdE51bWJlcikK
ICAgICAgICAgcmV0dXJuOwogCkBAIC0xMTYwLDcgKzExNTksNyBAQCB2b2lkIENhY2hlZFJlc291
cmNlU3RyZWFtaW5nQ2xpZW50Ojpsb2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwg
Y29uc3QgTgogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgV2ViS2l0V2ViU3Jj
KiBzcmMgPSBXRUJLSVRfV0VCX1NSQyhtX3NyYy5nZXQoKSk7Ci0gICAgYXV0byBtZW1iZXJzID0g
aG9sZExvY2soc3JjLT5wcml2LT5kYXRhTXV0ZXgpOworICAgIERhdGFNdXRleExvY2tlciBtZW1i
ZXJzIHsgc3JjLT5wcml2LT5kYXRhTXV0ZXggfTsKICAgICBpZiAobWVtYmVycy0+cmVxdWVzdE51
bWJlciAhPSBtX3JlcXVlc3ROdW1iZXIpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTE3MCw3ICsx
MTY5LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6bG9hZEZpbmlzaGVk
KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IE4KIAogYm9vbCB3ZWJLaXRTcmNXb3VsZFRh
aW50T3JpZ2luKFdlYktpdFdlYlNyYyogc3JjLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2lu
KQogewotICAgIGF1dG8gbWVtYmVycyA9IGhvbGRMb2NrKHNyYy0+cHJpdi0+ZGF0YU11dGV4KTsK
KyAgICBEYXRhTXV0ZXhMb2NrZXIgbWVtYmVycyB7IHNyYy0+cHJpdi0+ZGF0YU11dGV4IH07CiAK
ICAgICBhdXRvKiBjYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudCA9IHJlaW50ZXJwcmV0X2Nh
c3Q8Q2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQqPihtZW1iZXJzLT5yZXNvdXJjZS0+Y2xp
ZW50KCkpOwogICAgIGZvciAoYXV0byYgcmVzcG9uc2VPcmlnaW4gOiBjYWNoZWRSZXNvdXJjZVN0
cmVhbWluZ0NsaWVudC0+c2VjdXJpdHlPcmlnaW5zKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFTb3VyY2VUcmFja0dT
dHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
bXNlL01lZGlhU291cmNlVHJhY2tHU3RyZWFtZXIuY3BwCmluZGV4IDg2MmIxNjk1MTk0N2VkNTVi
ZGZhZDMyMzg4NzE5N2JjNmUwZmQzNzYuLmQxODc5MmNjYTI5NTFhYzE2MDQ1OGEzYjk4ODI5Y2I1
N2U4NWUxY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9tc2UvTWVkaWFTb3VyY2VUcmFja0dTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJjZVRyYWNrR1N0
cmVhbWVyLmNwcApAQCAtMzcsOCArMzcsNiBAQAogR1NUX0RFQlVHX0NBVEVHT1JZX0VYVEVSTih3
ZWJraXRfbXNlX2RlYnVnKTsKICNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIHdlYmtpdF9tc2VfZGVi
dWcKIAotdXNpbmcgV1RGOjpEYXRhTXV0ZXg7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogTWVk
aWFTb3VyY2VUcmFja0dTdHJlYW1lcjo6TWVkaWFTb3VyY2VUcmFja0dTdHJlYW1lcihUcmFja1By
aXZhdGVCYXNlR1N0cmVhbWVyOjpUcmFja1R5cGUgdHlwZSwgQXRvbVN0cmluZyB0cmFja0lkLCBH
UmVmUHRyPEdzdENhcHM+JiYgaW5pdGlhbENhcHMpCkBAIC02MSwyOCArNTksMjggQEAgUmVmPE1l
ZGlhU291cmNlVHJhY2tHU3RyZWFtZXI+IE1lZGlhU291cmNlVHJhY2tHU3RyZWFtZXI6OmNyZWF0
ZShUcmFja1ByaXZhdGVCYXMKIGJvb2wgTWVkaWFTb3VyY2VUcmFja0dTdHJlYW1lcjo6aXNSZWFk
eUZvck1vcmVTYW1wbGVzKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGF1
dG8gcXVldWUgPSBob2xkTG9jayhtX3F1ZXVlRGF0YU11dGV4KTsKKyAgICBEYXRhTXV0ZXhMb2Nr
ZXIgcXVldWUgeyBtX3F1ZXVlRGF0YU11dGV4IH07CiAgICAgcmV0dXJuICFxdWV1ZS0+aXNGdWxs
KCk7CiB9CiAKIHZvaWQgTWVkaWFTb3VyY2VUcmFja0dTdHJlYW1lcjo6bm90aWZ5V2hlblJlYWR5
Rm9yTW9yZVNhbXBsZXMoVHJhY2tRdWV1ZTo6TG93TGV2ZWxIYW5kbGVyJiYgaGFuZGxlcikKIHsK
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGF1dG8gcXVldWUgPSBob2xkTG9jayht
X3F1ZXVlRGF0YU11dGV4KTsKKyAgICBEYXRhTXV0ZXhMb2NrZXIgcXVldWUgeyBtX3F1ZXVlRGF0
YU11dGV4IH07CiAgICAgcXVldWUtPm5vdGlmeVdoZW5Mb3dMZXZlbChXVEZNb3ZlKGhhbmRsZXIp
KTsKIH0KIAogdm9pZCBNZWRpYVNvdXJjZVRyYWNrR1N0cmVhbWVyOjplbnF1ZXVlT2JqZWN0KEdS
ZWZQdHI8R3N0TWluaU9iamVjdD4mJiBvYmplY3QpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKLSAgICBhdXRvIHF1ZXVlID0gaG9sZExvY2sobV9xdWV1ZURhdGFNdXRleCk7CisgICAg
RGF0YU11dGV4TG9ja2VyIHF1ZXVlIHsgbV9xdWV1ZURhdGFNdXRleCB9OwogICAgIHF1ZXVlLT5l
bnF1ZXVlT2JqZWN0KFdURk1vdmUob2JqZWN0KSk7CiB9CiAKIHZvaWQgTWVkaWFTb3VyY2VUcmFj
a0dTdHJlYW1lcjo6Y2xlYXJRdWV1ZSgpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
LSAgICBhdXRvIHF1ZXVlID0gaG9sZExvY2sobV9xdWV1ZURhdGFNdXRleCk7CisgICAgRGF0YU11
dGV4TG9ja2VyIHF1ZXVlIHsgbV9xdWV1ZURhdGFNdXRleCB9OwogICAgIHF1ZXVlLT5jbGVhcigp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvbXNlL01lZGlhU291cmNlVHJhY2tHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFTb3VyY2VUcmFja0dTdHJlYW1lci5o
CmluZGV4IDZhZTQxYzRhYTFkMTEzMzEwMGQzZjg4OTg0ZDFkMWM5NDY2MGNiNDguLjhkYzVmNTQx
MWEzNWUwZWYzNDEwN2QwYmVhNGVhMmVjNDY4ZDlmZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFTb3VyY2VUcmFja0dTdHJl
YW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9t
c2UvTWVkaWFTb3VyY2VUcmFja0dTdHJlYW1lci5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoK
ICAgICBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpUcmFja1R5cGUgdHlwZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdHlwZTsgfQogICAgIEF0b21TdHJpbmcgdHJhY2tJZCgpIGNvbnN0IHsgcmV0dXJu
IG1fdHJhY2tJZDsgfQogICAgIEdSZWZQdHI8R3N0Q2Fwcz4mIGluaXRpYWxDYXBzKCkgeyByZXR1
cm4gbV9pbml0aWFsQ2FwczsgfQotICAgIFdURjo6RGF0YU11dGV4PFRyYWNrUXVldWU+JiBxdWV1
ZURhdGFNdXRleCgpIHsgcmV0dXJuIG1fcXVldWVEYXRhTXV0ZXg7IH0KKyAgICBEYXRhTXV0ZXg8
VHJhY2tRdWV1ZT4mIHF1ZXVlRGF0YU11dGV4KCkgeyByZXR1cm4gbV9xdWV1ZURhdGFNdXRleDsg
fQogCiAgICAgYm9vbCBpc1JlYWR5Rm9yTW9yZVNhbXBsZXMoKTsKIApAQCAtNjksNyArNjksNyBA
QCBwcml2YXRlOgogICAgIFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6OlRyYWNrVHlwZSBtX3R5
cGU7CiAgICAgQXRvbVN0cmluZyBtX3RyYWNrSWQ7CiAgICAgR1JlZlB0cjxHc3RDYXBzPiBtX2lu
aXRpYWxDYXBzOwotICAgIFdURjo6RGF0YU11dGV4PFRyYWNrUXVldWU+IG1fcXVldWVEYXRhTXV0
ZXg7CisgICAgRGF0YU11dGV4PFRyYWNrUXVldWU+IG1fcXVldWVEYXRhTXV0ZXg7CiAKICAgICBi
b29sIG1faXNSZW1vdmVkIHsgZmFsc2UgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1dlYktpdE1lZGlhU291cmNlR1N0cmVh
bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2Uv
V2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIuY3BwCmluZGV4IDdmMGE5ZDRhY2IwZjMxMmZjNWQw
ZWIzYjk2ZDY0NWU0NmMwY2Q1ZjkuLjdmY2Y0NmE1YzFlNmFlMGZlZjZhOGE0OWEzYzkyM2Y4OWQ0
ODZjYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9tc2UvV2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvV2ViS2l0TWVkaWFTb3VyY2VHU3Ry
ZWFtZXIuY3BwCkBAIC0xODQsOCArMTg0LDggQEAgc3RydWN0IFN0cmVhbSA6IHB1YmxpYyBUaHJl
YWRTYWZlUmVmQ291bnRlZDxTdHJlYW0+IHsKICAgICAgICAgR3N0U2VnbWVudCBzZWdtZW50Owog
ICAgICAgICBHUmVmUHRyPEdzdENhcHM+IHBlbmRpbmdJbml0aWFsQ2FwczsKICAgICAgICAgR1Jl
ZlB0cjxHc3RDYXBzPiBwcmV2aW91c0NhcHM7IC8vIENhcHMgZnJvbSBlbnF1ZXVlZCBzYW1wbGVz
IGFyZSBjb21wYXJlZCB0byB0aGVzZSB0byBwdXNoIENBUFMgZXZlbnRzIGFzIG5lZWRlZC4KLSAg
ICAgICAgVW5jaGVja2VkQ29uZGl0aW9uIHBhZExpbmtlZE9yRmx1c2hlZENvbmRpdGlvbjsKLSAg
ICAgICAgVW5jaGVja2VkQ29uZGl0aW9uIHF1ZXVlQ2hhbmdlZE9yRmx1c2hlZENvbmRpdGlvbjsK
KyAgICAgICAgQ29uZGl0aW9uIHBhZExpbmtlZE9yRmx1c2hlZENvbmRpdGlvbjsKKyAgICAgICAg
Q29uZGl0aW9uIHF1ZXVlQ2hhbmdlZE9yRmx1c2hlZENvbmRpdGlvbjsKICAgICAgICAgYm9vbCBp
c0ZsdXNoaW5nIHsgZmFsc2UgfTsKIAogICAgICAgICAvLyBGbHVzaGVzIGJlZm9yZSBhbnkgYnVm
ZmVyIGhhcyBiZWVuIHBvcHBlZCBmcm9tIHRoZSBxdWV1ZSBhbmQgc2VudCBkb3duc3RyZWFtIGNh
biBiZSBhdm9pZGVkIGp1c3QKQEAgLTM0NCw3ICszNDQsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Vi
S2l0TWVkaWFTcmNBY3RpdmF0ZU1vZGUoR3N0UGFkKiBwYWQsIEdzdE9iamVjdCogc291cmNlLCBH
c3RQYQogICAgICAgICAvLyBVbmJsb2NrIHRoZSBzdHJlYW1pbmcgdGhyZWFkLgogICAgICAgICBS
ZWZQdHI8U3RyZWFtPiYgc3RyZWFtID0gV0VCS0lUX01FRElBX1NSQ19QQUQocGFkKS0+cHJpdi0+
c3RyZWFtOwogICAgICAgICB7Ci0gICAgICAgICAgICBhdXRvIHN0cmVhbWluZ01lbWJlcnMgPSBo
b2xkTG9jayhzdHJlYW0tPnN0cmVhbWluZ01lbWJlcnNEYXRhTXV0ZXgpOworICAgICAgICAgICAg
RGF0YU11dGV4TG9ja2VyIHN0cmVhbWluZ01lbWJlcnMgeyBzdHJlYW0tPnN0cmVhbWluZ01lbWJl
cnNEYXRhTXV0ZXggfTsKICAgICAgICAgICAgIHN0cmVhbWluZ01lbWJlcnMtPmlzRmx1c2hpbmcg
PSB0cnVlOwogICAgICAgICAgICAgc3RyZWFtaW5nTWVtYmVycy0+cGFkTGlua2VkT3JGbHVzaGVk
Q29uZGl0aW9uLm5vdGlmeU9uZSgpOwogICAgICAgICAgICAgc3RyZWFtaW5nTWVtYmVycy0+cXVl
dWVDaGFuZ2VkT3JGbHVzaGVkQ29uZGl0aW9uLm5vdGlmeU9uZSgpOwpAQCAtMzU0LDcgKzM1NCw3
IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRNZWRpYVNyY0FjdGl2YXRlTW9kZShHc3RQYWQqIHBh
ZCwgR3N0T2JqZWN0KiBzb3VyY2UsIEdzdFBhCiAgICAgICAgIC8vIE90aGVyd2lzZSBhIGRlYWRs
b2NrIHdvdWxkIG9jY3VyIGFzIHRoZSBuZXh0IGZ1bmN0aW9uIHRyaWVzIHRvIGpvaW4gdGhlIHRo
cmVhZC4KICAgICAgICAgZ3N0X3BhZF9zdG9wX3Rhc2socGFkKTsKICAgICAgICAgewotICAgICAg
ICAgICAgYXV0byBzdHJlYW1pbmdNZW1iZXJzID0gaG9sZExvY2soc3RyZWFtLT5zdHJlYW1pbmdN
ZW1iZXJzRGF0YU11dGV4KTsKKyAgICAgICAgICAgIERhdGFNdXRleExvY2tlciBzdHJlYW1pbmdN
ZW1iZXJzIHsgc3RyZWFtLT5zdHJlYW1pbmdNZW1iZXJzRGF0YU11dGV4IH07CiAgICAgICAgICAg
ICBzdHJlYW1pbmdNZW1iZXJzLT5pc0ZsdXNoaW5nID0gZmFsc2U7CiAgICAgICAgIH0KICAgICB9
CkBAIC0zNjQsNyArMzY0LDcgQEAgc3RhdGljIGdib29sZWFuIHdlYktpdE1lZGlhU3JjQWN0aXZh
dGVNb2RlKEdzdFBhZCogcGFkLCBHc3RPYmplY3QqIHNvdXJjZSwgR3N0UGEKIHN0YXRpYyB2b2lk
IHdlYktpdE1lZGlhU3JjUGFkTGlua2VkKEdzdFBhZCogcGFkLCBHc3RQYWQqLCB2b2lkKikKIHsK
ICAgICBSZWZQdHI8U3RyZWFtPiYgc3RyZWFtID0gV0VCS0lUX01FRElBX1NSQ19QQUQocGFkKS0+
cHJpdi0+c3RyZWFtOwotICAgIGF1dG8gc3RyZWFtaW5nTWVtYmVycyA9IGhvbGRMb2NrKHN0cmVh
bS0+c3RyZWFtaW5nTWVtYmVyc0RhdGFNdXRleCk7CisgICAgRGF0YU11dGV4TG9ja2VyIHN0cmVh
bWluZ01lbWJlcnMgeyBzdHJlYW0tPnN0cmVhbWluZ01lbWJlcnNEYXRhTXV0ZXggfTsKICAgICBz
dHJlYW1pbmdNZW1iZXJzLT5wYWRMaW5rZWRPckZsdXNoZWRDb25kaXRpb24ubm90aWZ5T25lKCk7
CiB9CiAKQEAgLTM3NCw3ICszNzQsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRNZWRpYVNyY0xvb3Ao
dm9pZCogdXNlckRhdGEpCiAgICAgR3N0UGFkKiBwYWQgPSBHU1RfUEFEKHVzZXJEYXRhKTsKICAg
ICBSZWZQdHI8U3RyZWFtPiYgc3RyZWFtID0gV0VCS0lUX01FRElBX1NSQ19QQUQocGFkKS0+cHJp
di0+c3RyZWFtOwogCi0gICAgYXV0byBzdHJlYW1pbmdNZW1iZXJzID0gaG9sZExvY2soc3RyZWFt
LT5zdHJlYW1pbmdNZW1iZXJzRGF0YU11dGV4KTsKKyAgICBEYXRhTXV0ZXhMb2NrZXIgc3RyZWFt
aW5nTWVtYmVycyB7IHN0cmVhbS0+c3RyZWFtaW5nTWVtYmVyc0RhdGFNdXRleCB9OwogICAgIGlm
IChzdHJlYW1pbmdNZW1iZXJzLT5pc0ZsdXNoaW5nKSB7CiAgICAgICAgIGdzdF9wYWRfcGF1c2Vf
dGFzayhwYWQpOwogICAgICAgICByZXR1cm47CkBAIC00NDAsNyArNDQwLDcgQEAgc3RhdGljIHZv
aWQgd2ViS2l0TWVkaWFTcmNMb29wKHZvaWQqIHVzZXJEYXRhKQogCiAgICAgR1JlZlB0cjxHc3RN
aW5pT2JqZWN0PiBvYmplY3Q7CiAgICAgewotICAgICAgICBhdXRvIHF1ZXVlID0gaG9sZExvY2so
c3RyZWFtLT50cmFjay0+cXVldWVEYXRhTXV0ZXgoKSk7CisgICAgICAgIERhdGFNdXRleExvY2tl
ciBxdWV1ZSB7IHN0cmVhbS0+dHJhY2stPnF1ZXVlRGF0YU11dGV4KCkgfTsKICAgICAgICAgaWYg
KCFxdWV1ZS0+aXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBvYmplY3QgPSBxdWV1ZS0+cG9wKCk7
CiAgICAgICAgICAgICBzdHJlYW1pbmdNZW1iZXJzLT5oYXNQb3BwZWRGaXJzdE9iamVjdCA9IHRy
dWU7CkBAIC00NDgsNyArNDQ4LDcgQEAgc3RhdGljIHZvaWQgd2ViS2l0TWVkaWFTcmNMb29wKHZv
aWQqIHVzZXJEYXRhKQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgcXVldWUtPm5vdGlm
eVdoZW5Ob3RFbXB0eShbJm9iamVjdCwgc3RyZWFtXShHUmVmUHRyPEdzdE1pbmlPYmplY3Q+JiYg
cmVjZWl2ZWRPYmplY3QpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwotICAgICAgICAgICAgICAgIGF1dG8gc3RyZWFtaW5nTWVtYmVycyA9IGhvbGRMb2NrKHN0cmVh
bS0+c3RyZWFtaW5nTWVtYmVyc0RhdGFNdXRleCk7CisgICAgICAgICAgICAgICAgRGF0YU11dGV4
TG9ja2VyIHN0cmVhbWluZ01lbWJlcnMgeyBzdHJlYW0tPnN0cmVhbWluZ01lbWJlcnNEYXRhTXV0
ZXggfTsKICAgICAgICAgICAgICAgICBBU1NFUlQoIXN0cmVhbWluZ01lbWJlcnMtPmlzRmx1c2hp
bmcpOwogCiAgICAgICAgICAgICAgICAgb2JqZWN0ID0gV1RGTW92ZShyZWNlaXZlZE9iamVjdCk7
CkBAIC00NjUsNyArNDY1LDcgQEAgc3RhdGljIHZvaWQgd2ViS2l0TWVkaWFTcmNMb29wKHZvaWQq
IHVzZXJEYXRhKQogICAgIH0pOwogICAgIHsKICAgICAgICAgLy8gRW5zdXJlIHRoYXQgbm90aWZ5
V2hlbk5vdEVtcHR5KCkncyBjYWxsYmFjayAoaWYgYW55KSBpcyBjbGVhcmVkIGFmdGVyIHRoaXMg
cG9pbnQuCi0gICAgICAgIGF1dG8gcXVldWUgPSBob2xkTG9jayhzdHJlYW0tPnRyYWNrLT5xdWV1
ZURhdGFNdXRleCgpKTsKKyAgICAgICAgRGF0YU11dGV4TG9ja2VyIHF1ZXVlIHsgc3RyZWFtLT50
cmFjay0+cXVldWVEYXRhTXV0ZXgoKSB9OwogICAgICAgICBxdWV1ZS0+cmVzZXROb3RFbXB0eUhh
bmRsZXIoKTsKICAgICB9CiAgICAgaWYgKHN0cmVhbWluZ01lbWJlcnMtPmlzRmx1c2hpbmcpIHsK
QEAgLTUwOSw3ICs1MDksNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRNZWRpYVNyY0xvb3Aodm9pZCog
dXNlckRhdGEpCiAgICAgICAgIH0KIAogICAgICAgICAvLyBQdXNoIHRoZSBidWZmZXIgd2l0aG91
dCB0aGUgc3RyZWFtaW5nTWVtYmVycyBsb2NrIHNvIHRoYXQgZmx1c2hlcyBjYW4gaGFwcGVuIHdo
aWxlIGl0IHRyYXZlbHMgZG93bnN0cmVhbS4KLSAgICAgICAgc3RyZWFtaW5nTWVtYmVycy5sb2Nr
SG9sZGVyKCkudW5sb2NrRWFybHkoKTsKKyAgICAgICAgc3RyZWFtaW5nTWVtYmVycy51bmxvY2tF
YXJseSgpOwogCiAgICAgICAgIEFTU0VSVChHU1RfQlVGRkVSX1BUU19JU19WQUxJRChidWZmZXIu
Z2V0KCkpKTsKICAgICAgICAgR1NUX1RSQUNFX09CSkVDVChwYWQsICJQdXNoaW5nIGJ1ZmZlciBk
b3duc3RyZWFtOiAlIiBHU1RfUFRSX0ZPUk1BVCwgYnVmZmVyLmdldCgpKTsKQEAgLTUyNSw3ICs1
MjUsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRNZWRpYVNyY0xvb3Aodm9pZCogdXNlckRhdGEpCiAg
ICAgICAgIC8vIEVPUyBldmVudHMgYW5kIG90aGVyIGVucXVldWVkIGV2ZW50cyBhcmUgYWxzbyBz
ZW50IHVubG9ja2VkIHNvIHRoZXkgY2FuIHJlYWN0IHRvIGZsdXNoZXMgaWYgbmVjZXNzYXJ5Lgog
ICAgICAgICBHUmVmUHRyPEdzdEV2ZW50PiBldmVudCA9IEdSZWZQdHI8R3N0RXZlbnQ+KEdTVF9F
VkVOVChvYmplY3QubGVha1JlZigpKSk7CiAKLSAgICAgICAgc3RyZWFtaW5nTWVtYmVycy5sb2Nr
SG9sZGVyKCkudW5sb2NrRWFybHkoKTsKKyAgICAgICAgc3RyZWFtaW5nTWVtYmVycy51bmxvY2tF
YXJseSgpOwogICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHBhZCwgIlB1c2hpbmcgZXZlbnQgZG93
bnN0cmVhbTogJSIgR1NUX1BUUl9GT1JNQVQsIGV2ZW50LmdldCgpKTsKICAgICAgICAgYm9vbCBl
dmVudEhhbmRsZWQgPSBnc3RfcGFkX3B1c2hfZXZlbnQocGFkLCBHUmVmUHRyPEdzdEV2ZW50Pihl
dmVudCkubGVha1JlZigpKTsKICAgICAgICAgaWYgKCFldmVudEhhbmRsZWQpCkBAIC01NDAsMTEg
KzU0MCwxMSBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRNZWRpYVNyY1N0cmVhbUZsdXNoKFN0cmVhbSog
c3RyZWFtLCBib29sIGlzU2Vla2luZ0ZsdXNoKQogICAgIGJvb2wgc2tpcEZsdXNoID0gZmFsc2U7
CiAKICAgICB7Ci0gICAgICAgIGF1dG8gc3RyZWFtaW5nTWVtYmVycyA9IGhvbGRMb2NrKHN0cmVh
bS0+c3RyZWFtaW5nTWVtYmVyc0RhdGFNdXRleCk7CisgICAgICAgIERhdGFNdXRleExvY2tlciBz
dHJlYW1pbmdNZW1iZXJzIHsgc3RyZWFtLT5zdHJlYW1pbmdNZW1iZXJzRGF0YU11dGV4IH07CiAK
ICAgICAgICAgaWYgKCFzdHJlYW1pbmdNZW1iZXJzLT5oYXNQb3BwZWRGaXJzdE9iamVjdCkgewog
ICAgICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChzdHJlYW0tPnNvdXJjZSwgIkZsdXNoIHJlcXVl
c3QgZm9yIHN0cmVhbSAnJXMnIG9jY3VycmVkIGJlZm9yZSBoYXNQb3BwZWRGaXJzdE9iamVjdCwg
anVzdCBjbGVhcmluZyB0aGUgcXVldWUgYW5kIHJlYWRqdXN0aW5nIHRoZSBzZWdtZW50LiIsIHN0
cmVhbS0+dHJhY2stPnRyYWNrSWQoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAg
ICAgIGF1dG8gcXVldWUgPSBob2xkTG9jayhzdHJlYW0tPnRyYWNrLT5xdWV1ZURhdGFNdXRleCgp
KTsKKyAgICAgICAgICAgIERhdGFNdXRleExvY2tlciBxdWV1ZSB7IHN0cmVhbS0+dHJhY2stPnF1
ZXVlRGF0YU11dGV4KCkgfTsKICAgICAgICAgICAgIC8vIFdlIHVzZSBjbGVhcigpIGluc3RlYWQg
b2YgZmx1c2goKSBiZWNhdXNlIHRoZSBXZWJLaXRNZWRpYVNyYyBzdHJlYW1pbmcgdGhyZWFkIGNv
dWxkIGJlIHdhaXRpbmcKICAgICAgICAgICAgIC8vIGZvciB0aGUgcXVldWUuIGZsdXNoKCkgd291
bGQgY2FuY2VsIHRoZSBub3RFbXB0eUNhbGxiYWNrIHRoZXJlZm9yZSBsZWF2aW5nIHRoZSBzdHJl
YW1pbmcgdGhyZWFkCiAgICAgICAgICAgICAvLyBzdHVjayB3YWl0aW5nIGZvcmV2ZXIuCkBAIC01
NTgsOCArNTU4LDggQEAgc3RhdGljIHZvaWQgd2ViS2l0TWVkaWFTcmNTdHJlYW1GbHVzaChTdHJl
YW0qIHN0cmVhbSwgYm9vbCBpc1NlZWtpbmdGbHVzaCkKICAgICAgICAgLy8gd2hpY2ggd2lsbCBr
ZWVwaW5nIHRoZSBzdHJlYW1pbmcgdGhyZWFkIGlkbGUuCiAgICAgICAgIEdTVF9ERUJVR19PQkpF
Q1Qoc3RyZWFtLT5wYWQuZ2V0KCksICJUYWtpbmcgdGhlIFN0cmVhbWluZ01lbWJlcnMgbXV0ZXgg
YW5kIHNldHRpbmcgaXNGbHVzaGluZyA9IHRydWUuIik7CiAgICAgICAgIHsKLSAgICAgICAgICAg
IGF1dG8gc3RyZWFtaW5nTWVtYmVycyA9IGhvbGRMb2NrKHN0cmVhbS0+c3RyZWFtaW5nTWVtYmVy
c0RhdGFNdXRleCk7Ci0gICAgICAgICAgICBhdXRvIHF1ZXVlID0gaG9sZExvY2soc3RyZWFtLT50
cmFjay0+cXVldWVEYXRhTXV0ZXgoKSk7CisgICAgICAgICAgICBEYXRhTXV0ZXhMb2NrZXIgc3Ry
ZWFtaW5nTWVtYmVycyB7IHN0cmVhbS0+c3RyZWFtaW5nTWVtYmVyc0RhdGFNdXRleCB9OworICAg
ICAgICAgICAgRGF0YU11dGV4TG9ja2VyIHF1ZXVlIHsgc3RyZWFtLT50cmFjay0+cXVldWVEYXRh
TXV0ZXgoKSB9OwogCiAgICAgICAgICAgICBzdHJlYW1pbmdNZW1iZXJzLT5pc0ZsdXNoaW5nID0g
dHJ1ZTsKICAgICAgICAgICAgIHF1ZXVlLT5mbHVzaCgpOyAvLyBDbGVhciB0aGUgcXVldWUgYW5k
IGNhbmNlbCBhbnkgd2FpdGluZyBjYWxsYmFjay4KQEAgLTU4MSw3ICs1ODEsNyBAQCBzdGF0aWMg
dm9pZCB3ZWJLaXRNZWRpYVNyY1N0cmVhbUZsdXNoKFN0cmVhbSogc3RyZWFtLCBib29sIGlzU2Vl
a2luZ0ZsdXNoKQogICAgICAgICAvLyBJbiB0aGUgY2FzZSBvZiBzZWVraW5nIGZsdXNoIHdlIGFy
ZSByZXNldHRpbmcgdGhlIHRpbWVsaW5lIChzZWUgdGhlIGZsdXNoIHN0b3AgbGF0ZXIpLgogICAg
ICAgICAvLyBUaGUgcmVzdWx0aW5nIHNlZ21lbnQgaXMgYnJhbmQgbmV3LCBidXQgd2l0aCBhIGRp
ZmZlcmVudCBzdGFydCB0aW1lLgogICAgICAgICBXZWJLaXRNZWRpYVNyY1ByaXZhdGUqIHByaXYg
PSBzdHJlYW0tPnNvdXJjZS0+cHJpdjsKLSAgICAgICAgYXV0byBzdHJlYW1pbmdNZW1iZXJzID0g
aG9sZExvY2soc3RyZWFtLT5zdHJlYW1pbmdNZW1iZXJzRGF0YU11dGV4KTsKKyAgICAgICAgRGF0
YU11dGV4TG9ja2VyIHN0cmVhbWluZ01lbWJlcnMgeyBzdHJlYW0tPnN0cmVhbWluZ01lbWJlcnNE
YXRhTXV0ZXggfTsKICAgICAgICAgc3RyZWFtaW5nTWVtYmVycy0+c2VnbWVudC5iYXNlID0gMDsK
ICAgICAgICAgc3RyZWFtaW5nTWVtYmVycy0+c2VnbWVudC5yYXRlID0gcHJpdi0+cmF0ZTsKICAg
ICAgICAgc3RyZWFtaW5nTWVtYmVycy0+c2VnbWVudC5zdGFydCA9IHN0cmVhbWluZ01lbWJlcnMt
PnNlZ21lbnQudGltZSA9IHByaXYtPnN0YXJ0VGltZTsKQEAgLTU5NSw3ICs1OTUsNyBAQCBzdGF0
aWMgdm9pZCB3ZWJLaXRNZWRpYVNyY1N0cmVhbUZsdXNoKFN0cmVhbSogc3RyZWFtLCBib29sIGlz
U2Vla2luZ0ZsdXNoKQogICAgICAgICAvLyBHU1RfQ0xPQ0tfVElNRV9OT05FIGlzIHJldHVybmVk
IHdoZW4gdGhlIHBpcGVsaW5lIGlzIG5vdCB5ZXQgcHJlLXJvbGxlZCAoZS5nLiBqdXN0IGFmdGVy
IGEgc2VlaykuIEluIHRoaXMgY2FzZQogICAgICAgICAvLyB3ZSBkb24ndCBuZWVkIHRvIGFkanVz
dCB0aGUgc2VnbWVudCB0aG91Z2gsIGFzIHJ1bm5pbmcgdGltZSBoYXMgbm90IGFkdmFuY2VkLgog
ICAgICAgICBpZiAoR1NUX0NMT0NLX1RJTUVfSVNfVkFMSUQocGlwZWxpbmVTdHJlYW1UaW1lKSkg
ewotICAgICAgICAgICAgYXV0byBzdHJlYW1pbmdNZW1iZXJzID0gaG9sZExvY2soc3RyZWFtLT5z
dHJlYW1pbmdNZW1iZXJzRGF0YU11dGV4KTsKKyAgICAgICAgICAgIERhdGFNdXRleExvY2tlciBz
dHJlYW1pbmdNZW1iZXJzIHsgc3RyZWFtLT5zdHJlYW1pbmdNZW1iZXJzRGF0YU11dGV4IH07CiAg
ICAgICAgICAgICAvLyBXZSBuZWVkIHRvIGluY3JlYXNlIHRoZSBiYXNlIGJ5IHRoZSBydW5uaW5n
IHRpbWUgYWNjdW11bGF0ZWQgZHVyaW5nIHRoZSBwcmV2aW91cyBzZWdtZW50LgogCiAgICAgICAg
ICAgICBHc3RDbG9ja1RpbWUgcGlwZWxpbmVSdW5uaW5nVGltZSA9IGdzdF9zZWdtZW50X3RvX3J1
bm5pbmdfdGltZSgmc3RyZWFtaW5nTWVtYmVycy0+c2VnbWVudCwgR1NUX0ZPUk1BVF9USU1FLCBw
aXBlbGluZVN0cmVhbVRpbWUpOwpAQCAtNjE0LDcgKzYxNCw3IEBAIHN0YXRpYyB2b2lkIHdlYktp
dE1lZGlhU3JjU3RyZWFtRmx1c2goU3RyZWFtKiBzdHJlYW0sIGJvb2wgaXNTZWVraW5nRmx1c2gp
CiAgICAgICAgIEdTVF9QQURfU1RSRUFNX0xPQ0soc3RyZWFtLT5wYWQuZ2V0KCkpOwogICAgICAg
ICB7CiAgICAgICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHN0cmVhbS0+cGFkLmdldCgpLCAiVGFr
aW5nIHRoZSBTdHJlYW1pbmdNZW1iZXJzIG11dGV4IGFnYWluLiIpOwotICAgICAgICAgICAgYXV0
byBzdHJlYW1pbmdNZW1iZXJzID0gaG9sZExvY2soc3RyZWFtLT5zdHJlYW1pbmdNZW1iZXJzRGF0
YU11dGV4KTsKKyAgICAgICAgICAgIERhdGFNdXRleExvY2tlciBzdHJlYW1pbmdNZW1iZXJzIHsg
c3RyZWFtLT5zdHJlYW1pbmdNZW1iZXJzRGF0YU11dGV4IH07CiAgICAgICAgICAgICBHU1RfREVC
VUdfT0JKRUNUKHN0cmVhbS0+cGFkLmdldCgpLCAiU3RyZWFtaW5nTWVtYmVycyBtdXRleCB0YWtl
biwgdXNpbmcgaXQgdG8gc2V0IGlzRmx1c2hpbmcgPSBmYWxzZS4iKTsKICAgICAgICAgICAgIHN0
cmVhbWluZ01lbWJlcnMtPmlzRmx1c2hpbmcgPSBmYWxzZTsKICAgICAgICAgICAgIHN0cmVhbWlu
Z01lbWJlcnMtPmRvZXNOZWVkU2VnbWVudEV2ZW50ID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhNWJjOTcxODgxNjkyYThiOTkyOWYy
YTlmNmY4YjMyMzc3MzQ3ZTM1Li5lYTA2MjBlZDFjNDA5MjllOTIzMWU0NTZmNzY4ZjYzMzgzNDgy
YTk1IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMjEtMDUtMjkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KKworICAgICAgICBBZG9wdCBjbGFuZyB0aHJlYWQgc2FmZXR5IGFubm90YXRpb25zIGluIFdU
Rjo6RGF0YU11dGV4CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjY0MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBVcGRhdGUgQVBJIHRlc3QgZHVlIHRvIERhdGFNdXRleCBBUEkgY2hhbmdlcy4KKworICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0RhdGFNdXRleC5jcHA6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAyMS0wNS0yOCAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+CiAKICAgICAgICAgQ2xpZW50cyBvZiBvcHRpb25hbCBzaG91bGQgdXNlIGhhc192
YWx1ZSBpbnN0ZWFkIG9mIHJlbHlpbmcgb24gaGFzVmFsdWUgbWFjcm8KZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0RhdGFNdXRleC5jcHAgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9EYXRhTXV0ZXguY3BwCmluZGV4IGI3ODBiOTY5NmNjMzE1NDA5ODM5
MGZmYjRlODc0MzI2YTAyMmZkMDkuLmUzZTc4NjRhMTM2YjA5OTRmZDZkZjRjOWUxYTI1YTIzM2Uz
YTc4NzYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0RhdGFNdXRl
eC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRGF0YU11dGV4LmNwcApA
QCAtMzAsOCArMzAsNiBAQAogI2RlZmluZSBFTkFCTEVfREFUQV9NVVRFWF9DSEVDS1MgMQogI2lu
Y2x1ZGUgPHd0Zi9EYXRhTXV0ZXguaD4KIAotdXNpbmcgbmFtZXNwYWNlIFdURjsKLQogbmFtZXNw
YWNlIFRlc3RXZWJLaXRBUEkgewogCiBzdHJ1Y3QgTXlTdHJ1Y3R1cmUgewpAQCAtNDIsOSArNDAs
OSBAQCBURVNUKFdURl9EYXRhTXV0ZXgsIFRha2luZ1RoZU11dGV4KQogewogICAgIERhdGFNdXRl
eDxNeVN0cnVjdHVyZT4gbXlEYXRhTXV0ZXg7CiAKLSAgICBPd25lckF3YXJlTG9jayogbXV0ZXg7
CisgICAgTG9jayogbXV0ZXg7CiAgICAgewotICAgICAgICBEYXRhTXV0ZXg8TXlTdHJ1Y3R1cmU+
OjpMb2NrZWRXcmFwcGVyIHdyYXBwZXIobXlEYXRhTXV0ZXgpOworICAgICAgICBEYXRhTXV0ZXhM
b2NrZXIgd3JhcHBlciB7IG15RGF0YU11dGV4IH07CiAgICAgICAgIG11dGV4ID0gJndyYXBwZXIu
bXV0ZXgoKTsKICAgICAgICAgQVNTRVJUX1RSVUUobXV0ZXgtPmlzTG9ja2VkKCkpOwogICAgICAg
ICB3cmFwcGVyLT5udW1iZXIgPSA1OwpAQCAtNTcsNyArNTUsNyBAQCBURVNUKFdURl9EYXRhTXV0
ZXgsIFRha2luZ1RoZU11dGV4KQogICAgIEFTU0VSVF9GQUxTRShtdXRleC0+aXNMb2NrZWQoKSk7
CiAKICAgICB7Ci0gICAgICAgIERhdGFNdXRleDxNeVN0cnVjdHVyZT46OkxvY2tlZFdyYXBwZXIg
d3JhcHBlcihteURhdGFNdXRleCk7CisgICAgICAgIERhdGFNdXRleExvY2tlciB3cmFwcGVyIHsg
bXlEYXRhTXV0ZXggfTsKICAgICAgICAgRVhQRUNUX0VRKHdyYXBwZXItPm51bWJlciwgNSk7CiAg
ICAgfQogfQpAQCAtNjgsNyArNjYsNyBAQCBURVNUKFdURl9EYXRhTXV0ZXgsIFJ1blVubG9ja2Vk
SWxsZWdhbEFjY2Vzc0RlYXRoVGVzdCkKIHsKICAgICA6OnRlc3Rpbmc6OkZMQUdTX2d0ZXN0X2Rl
YXRoX3Rlc3Rfc3R5bGUgPSAidGhyZWFkc2FmZSI7CiAgICAgRGF0YU11dGV4PE15U3RydWN0dXJl
PiBteURhdGFNdXRleDsKLSAgICBEYXRhTXV0ZXg8TXlTdHJ1Y3R1cmU+OjpMb2NrZWRXcmFwcGVy
IHdyYXBwZXIobXlEYXRhTXV0ZXgpOworICAgIERhdGFNdXRleExvY2tlciB3cmFwcGVyIHsgbXlE
YXRhTXV0ZXggfTsKICAgICB3cmFwcGVyLT5udW1iZXIgPSA1OwogCiAgICAgQVNTRVJUX0RFQVRI
KHdyYXBwZXIucnVuVW5sb2NrZWQoWyZdKCkgewpAQCAtODAsOCArNzgsOCBAQCBURVNUKFdURl9E
YXRhTXV0ZXgsIERvdWJsZUxvY2tEZWF0aFRlc3QpCiB7CiAgICAgOjp0ZXN0aW5nOjpGTEFHU19n
dGVzdF9kZWF0aF90ZXN0X3N0eWxlID0gInRocmVhZHNhZmUiOwogICAgIERhdGFNdXRleDxNeVN0
cnVjdHVyZT4gbXlEYXRhTXV0ZXg7Ci0gICAgRGF0YU11dGV4PE15U3RydWN0dXJlPjo6TG9ja2Vk
V3JhcHBlciB3cmFwcGVyMShteURhdGFNdXRleCk7Ci0gICAgQVNTRVJUX0RFQVRIKERhdGFNdXRl
eDxNeVN0cnVjdHVyZT46OkxvY2tlZFdyYXBwZXIgd3JhcHBlcjIobXlEYXRhTXV0ZXgpLCAiIik7
CisgICAgRGF0YU11dGV4TG9ja2VyIHdyYXBwZXIxIHsgbXlEYXRhTXV0ZXggfTsKKyAgICBBU1NF
UlRfREVBVEgoRGF0YU11dGV4TG9ja2VyIHdyYXBwZXIyIHsgbXlEYXRhTXV0ZXggfSwgIiIpOwog
fQogI2VuZGlmCiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>