<?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>201521</bug_id>
          
          <creation_ts>2019-09-05 15:16:41 -0700</creation_ts>
          <short_desc>Refactor the Gigacage code to require less pointer casting.</short_desc>
          <delta_ts>2019-09-06 18:26:19 -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>JavaScriptCore</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>201570</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1568283</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-09-05 15:16:41 -0700</bug_when>
    <thetext>Also clean up the code a bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568287</commentid>
    <comment_count>1</comment_count>
      <attachid>378129</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-09-05 15:29:47 -0700</bug_when>
    <thetext>Created attachment 378129
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568289</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-09-05 15:30:33 -0700</bug_when>
    <thetext>&lt;rdar://problem/55087505&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568290</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-09-05 15:30:41 -0700</bug_when>
    <thetext>&lt;rdar://problem/55087515&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568297</commentid>
    <comment_count>4</comment_count>
      <attachid>378129</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-09-05 15:53:32 -0700</bug_when>
    <thetext>Comment on attachment 378129
proposed patch.

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

r=me

&gt; Source/bmalloc/ChangeLog:17
&gt; +        5. Change LLInt&apos;s loadCagedJSValue() to skip the caging if Gigacage is not enabled
&gt; +           in the build.  This allows us to remove the unneeded stubs in WTF Gigacage.h.

nit: some part of this belongs in the JSC changelog.

&gt; Source/bmalloc/bmalloc/Gigacage.h:50
&gt; +    NumberOfKinds // This should always be at the end of this list.

this comment is implied by the name of the enum value

&gt; Source/bmalloc/bmalloc/Gigacage.h:61
&gt; +        break; // Invalid: go to BCRASH();

no need for this comment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568304</commentid>
    <comment_count>5</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-09-05 16:08:48 -0700</bug_when>
    <thetext>Thanks for the review.

(In reply to Saam Barati from comment #4)
&gt; &gt; Source/bmalloc/ChangeLog:17
&gt; &gt; +        5. Change LLInt&apos;s loadCagedJSValue() to skip the caging if Gigacage is not enabled
&gt; &gt; +           in the build.  This allows us to remove the unneeded stubs in WTF Gigacage.h.
&gt; 
&gt; nit: some part of this belongs in the JSC changelog.

Fixed.

&gt; 
&gt; &gt; Source/bmalloc/bmalloc/Gigacage.h:50
&gt; &gt; +    NumberOfKinds // This should always be at the end of this list.
&gt; 
&gt; this comment is implied by the name of the enum value

Fixed.

&gt; &gt; Source/bmalloc/bmalloc/Gigacage.h:61
&gt; &gt; +        break; // Invalid: go to BCRASH();
&gt; 
&gt; no need for this comment

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568306</commentid>
    <comment_count>6</comment_count>
      <attachid>378133</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-09-05 16:14:20 -0700</bug_when>
    <thetext>Created attachment 378133
patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568312</commentid>
    <comment_count>7</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-09-05 16:28:23 -0700</bug_when>
    <thetext>The jsc EWS is red purportedly due to a build failure.  However, that failure can only manifest if the bot is picking up an outdated Gigacage.h.  Obviously, the JSC lib built correctly for all the other bots.  So the jsc EWS failure is bogus.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568327</commentid>
    <comment_count>8</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-09-05 17:04:18 -0700</bug_when>
    <thetext>Landed in r249556: &lt;http://trac.webkit.org/r249556&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378129</attachid>
            <date>2019-09-05 15:29:47 -0700</date>
            <delta_ts>2019-09-05 16:14:20 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-201521.patch</filename>
            <type>text/plain</type>
            <size>22605</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjQ5NTM5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBA
CisyMDE5LTA5LTA1ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZWZhY3RvciB0aGUgR2lnYWNhZ2UgY29kZSB0byByZXF1aXJlIGxlc3MgcG9pbnRlciBjYXN0aW5n
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxNTIx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBqaXQv
QXNzZW1ibHlIZWxwZXJzLmg6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6Y2FnZUNv
bmRpdGlvbmFsbHkpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgor
ICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcnVu
dGltZS9WTS5oOgorICAgICAgICAoSlNDOjpWTTo6Z2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSk6CisK
IDIwMTktMDktMDUgIFRhZGV1IFphZ2FsbG8gIDx0emFnYWxsb0BhcHBsZS5jb20+CiAKICAgICAg
ICAgTGF6eUNsYXNzU3RydWN0dXJlOjpzZXRDb25zdHJ1Y3RvciBzaG91bGQgbm90IHN0b3JlIHRo
ZSBjb25zdHJ1Y3RvciB0byB0aGUgZ2xvYmFsIG9iamVjdApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCShyZXZpc2lvbiAyNDk1MzkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xNTk1LDcgKzE1OTUsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgaWYgKGxlbmd0aCA9
PSBzY3JhdGNoKQogICAgICAgICAgICAgICAgICAgICBzY3JhdGNoID0gZ2V0Q2FjaGVkTWVtb3J5
VGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCk7CiAjZW5kaWYKLSAgICAgICAgICAgICAgICBs
b2FkUHRyKCZHaWdhY2FnZTo6YmFzZVB0cihraW5kKSwgc2NyYXRjaCk7CisgICAgICAgICAgICAg
ICAgbG9hZFB0cihHaWdhY2FnZTo6YWRkcmVzc09mQmFzZVB0cihraW5kKSwgc2NyYXRjaCk7CiAg
ICAgICAgICAgICAgICAgSnVtcCBkb25lID0gYnJhbmNoVGVzdDY0KFplcm8sIHNjcmF0Y2gpOwog
I2lmIENQVShBUk02NEUpCiAgICAgICAgICAgICAgICAgR1BSUmVnIHRlbXBSZWcgPSBnZXRDYWNo
ZWREYXRhVGVtcFJlZ2lzdGVySURBbmRJbnZhbGlkYXRlKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkocmV2
aXNpb24gMjQ5NTM5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXI2NC5hc20JKHdvcmtpbmcgY29weSkKQEAgLTQ0MCw3ICs0NDAsNyBAQCBtYWNybyBj
YWdlZFByaW1pdGl2ZShwdHIsIGxlbmd0aCwgc2NyYXRjCiAgICAgICAgIGNvbnN0IHNvdXJjZSA9
IHB0cgogICAgIGVuZAogICAgIGlmIEdJR0FDQUdFX0VOQUJMRUQKLSAgICAgICAgY2FnZShfZ19n
aWdhY2FnZUJhc2VQdHJzICsgR2lnYWNhZ2U6OkJhc2VQdHJzOjpwcmltaXRpdmUsIGNvbnN0ZXhw
ciBHaWdhY2FnZTo6cHJpbWl0aXZlR2lnYWNhZ2VNYXNrLCBzb3VyY2UsIHNjcmF0Y2gpCisgICAg
ICAgIGNhZ2UoX2dfZ2lnYWNhZ2VDb25maWcgKyBHaWdhY2FnZTo6Q29uZmlnOjpiYXNlUHRycyAr
IEdpZ2FjYWdlUHJpbWl0aXZlQmFzZVB0ck9mZnNldCwgY29uc3RleHByIEdpZ2FjYWdlOjpwcmlt
aXRpdmVHaWdhY2FnZU1hc2ssIHNvdXJjZSwgc2NyYXRjaCkKICAgICAgICAgaWYgQVJNNjRFCiAg
ICAgICAgICAgICBjb25zdCBudW1iZXJPZlBBQ0JpdHMgPSBjb25zdGV4cHIgTWFjcm9Bc3NlbWJs
ZXI6Om51bWJlck9mUEFDQml0cwogICAgICAgICAgICAgYmZpcSBzY3JhdGNoMiwgMCwgNjQgLSBu
dW1iZXJPZlBBQ0JpdHMsIHB0cgpAQCAtNDUzLDcgKzQ1Myw5IEBAIGVuZAogCiBtYWNybyBsb2Fk
Q2FnZWRKU1ZhbHVlKHNvdXJjZSwgZGVzdCwgc2NyYXRjaE9yTGVuZ3RoKQogICAgIGxvYWRwIHNv
dXJjZSwgZGVzdAotICAgIGNhZ2UoX2dfZ2lnYWNhZ2VCYXNlUHRycyArIEdpZ2FjYWdlOjpCYXNl
UHRyczo6anNWYWx1ZSwgY29uc3RleHByIEdpZ2FjYWdlOjpqc1ZhbHVlR2lnYWNhZ2VNYXNrLCBk
ZXN0LCBzY3JhdGNoT3JMZW5ndGgpCisgICAgaWYgR0lHQUNBR0VfRU5BQkxFRAorICAgICAgICBj
YWdlKF9nX2dpZ2FjYWdlQ29uZmlnICsgR2lnYWNhZ2U6OkNvbmZpZzo6YmFzZVB0cnMgKyBHaWdh
Y2FnZUpTVmFsdWVCYXNlUHRyT2Zmc2V0LCBjb25zdGV4cHIgR2lnYWNhZ2U6OmpzVmFsdWVHaWdh
Y2FnZU1hc2ssIGRlc3QsIHNjcmF0Y2hPckxlbmd0aCkKKyAgICBlbmQKIGVuZAogCiBtYWNybyBs
b2FkVmFyaWFibGUoZ2V0LCBmaWVsZE5hbWUsIHZhbHVlUmVnKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkocmV2aXNp
b24gMjQ5NTM5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0yOTcsNiArMjk3LDExIEBAIGVsc2UKICAgICBl
bmQKIGVuZAogCitpZiBHSUdBQ0FHRV9FTkFCTEVECisgICAgY29uc3QgR2lnYWNhZ2VQcmltaXRp
dmVCYXNlUHRyT2Zmc2V0ID0gY29uc3RleHByIEdpZ2FjYWdlOjpvZmZzZXRPZlByaW1pdGl2ZUdp
Z2FjYWdlQmFzZVB0cgorICAgIGNvbnN0IEdpZ2FjYWdlSlNWYWx1ZUJhc2VQdHJPZmZzZXQgPSBj
b25zdGV4cHIgR2lnYWNhZ2U6Om9mZnNldE9mSlNWYWx1ZUdpZ2FjYWdlQmFzZVB0cgorZW5kCisK
IG1hY3JvIGRpc3BhdGNoKGFkdmFuY2VSZWcpCiAgICAgYWRkcCBhZHZhbmNlUmVnLCBQQwogICAg
IG5leHRJbnN0cnVjdGlvbigpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJl
dmlzaW9uIDI0OTUzOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM1MywxMiArMzUzLDEyIEBAIHB1YmxpYzoKICAgICBBTFdBWVNfSU5M
SU5FIENvbXBsZXRlU3Vic3BhY2UmIGdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoR2lnYWNhZ2U6Oktp
bmQga2luZCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAoa2luZCkgewotICAgICAgICBjYXNlIEdp
Z2FjYWdlOjpSZXNlcnZlZEZvckZsYWdzQW5kTm90QUJhc2VQdHI6Ci0gICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBjYXNlIEdpZ2FjYWdlOjpQcmltaXRp
dmU6CiAgICAgICAgICAgICByZXR1cm4gcHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZTsK
ICAgICAgICAgY2FzZSBHaWdhY2FnZTo6SlNWYWx1ZToKICAgICAgICAgICAgIHJldHVybiBqc1Zh
bHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZTsKKyAgICAgICAgY2FzZSBHaWdhY2FnZTo6TnVtYmVy
T2ZLaW5kczoKKyAgICAgICAgICAgIGJyZWFrOyAvLyBJbnZhbGlkOiBnbyB0byBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpLgogICAgICAgICB9CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBwcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNw
YWNlOwpJbmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dU
Ri9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0OTUzOSkKKysrIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTktMDktMDUgIE1hcmsgTGFtICA8bWFy
ay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIHRoZSBHaWdhY2FnZSBjb2RlIHRv
IHJlcXVpcmUgbGVzcyBwb2ludGVyIGNhc3RpbmcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDE1MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9HaWdhY2FnZS5jcHA6CisgICAgICAgICogd3Rm
L0dpZ2FjYWdlLmg6CisgICAgICAgIChHaWdhY2FnZTo6bmFtZSk6CisgICAgICAgIChHaWdhY2Fn
ZTo6aXNFbmFibGVkKToKKyAgICAgICAgKEdpZ2FjYWdlOjpiYXNlUHRyKTogRGVsZXRlZC4KKyAg
ICAgICAgKEdpZ2FjYWdlOjpiYXNlUHRycyk6IERlbGV0ZWQuCisKIDIwMTktMDgtMzAgIEFsZXgg
Q2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUg
SEFWRV9DRk5FVFdPUktfV0lUSF9BVVRPX0FEREVEX0hUVFBfSEVBREVSX1NVUFBSRVNTSU9OX1NV
UFBPUlQgY29uZGl0aW9uYWwKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0dpZ2FjYWdlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9HaWdhY2FnZS5jcHAJKHJldmlzaW9uIDI0OTUzOSkK
KysrIFNvdXJjZS9XVEYvd3RmL0dpZ2FjYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNCw4ICszNCw2
IEBACiAKIG5hbWVzcGFjZSBHaWdhY2FnZSB7CiAKLWFsaWduYXModm9pZCopIGNoYXIgZ19naWdh
Y2FnZUJhc2VQdHJzW2dpZ2FjYWdlQmFzZVB0cnNTaXplXTsKLQogdm9pZCogdHJ5TWFsbG9jKEtp
bmQsIHNpemVfdCBzaXplKQogewogICAgIHJldHVybiBGYXN0TWFsbG9jOjp0cnlNYWxsb2Moc2l6
ZSk7CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9HaWdhY2FnZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XVEYvd3RmL0dpZ2FjYWdlLmgJKHJldmlzaW9uIDI0OTUzOSkKKysrIFNvdXJjZS9XVEYvd3Rm
L0dpZ2FjYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDI1ICszNSwxMyBAQCBuYW1lc3BhY2Ug
R2lnYWNhZ2UgewogCiBjb25zdCBzaXplX3QgcHJpbWl0aXZlR2lnYWNhZ2VNYXNrID0gMDsKIGNv
bnN0IHNpemVfdCBqc1ZhbHVlR2lnYWNhZ2VNYXNrID0gMDsKLWNvbnN0IHNpemVfdCBnaWdhY2Fn
ZUJhc2VQdHJzU2l6ZSA9IDggKiBLQjsKLQotZXh0ZXJuICJDIiBhbGlnbmFzKHZvaWQqKSBXVEZf
RVhQT1JUX1BSSVZBVEUgY2hhciBnX2dpZ2FjYWdlQmFzZVB0cnNbZ2lnYWNhZ2VCYXNlUHRyc1Np
emVdOwotCi1zdHJ1Y3QgQmFzZVB0cnMgewotICAgIHVpbnRwdHJfdCByZXNlcnZlZEZvckZsYWdz
OwotICAgIHZvaWQqIHByaW1pdGl2ZTsKLSAgICB2b2lkKiBqc1ZhbHVlOwotfTsKIAogZW51bSBL
aW5kIHsKLSAgICBSZXNlcnZlZEZvckZsYWdzQW5kTm90QUJhc2VQdHIgPSAwLAogICAgIFByaW1p
dGl2ZSwKICAgICBKU1ZhbHVlLAorICAgIE51bWJlck9mS2luZHMgLy8gVGhpcyBzaG91bGQgYWx3
YXlzIGJlIGF0IHRoZSBlbmQgb2YgdGhpcyBsaXN0LgogfTsKIAotc3RhdGljX2Fzc2VydChvZmZz
ZXRvZihCYXNlUHRycywgcHJpbWl0aXZlKSA9PSBLaW5kOjpQcmltaXRpdmUgKiBzaXplb2Yodm9p
ZCopLCAiIik7Ci1zdGF0aWNfYXNzZXJ0KG9mZnNldG9mKEJhc2VQdHJzLCBqc1ZhbHVlKSA9PSBL
aW5kOjpKU1ZhbHVlICogc2l6ZW9mKHZvaWQqKSwgIiIpOwotCiBpbmxpbmUgdm9pZCBlbnN1cmVH
aWdhY2FnZSgpIHsgfQogaW5saW5lIHZvaWQgZGlzYWJsZVByaW1pdGl2ZUdpZ2FjYWdlKCkgeyB9
CiBpbmxpbmUgYm9vbCBzaG91bGRCZUVuYWJsZWQoKSB7IHJldHVybiBmYWxzZTsgfQpAQCAtNzAs
NDYgKzU4LDE4IEBAIGlubGluZSBib29sIGNhblByaW1pdGl2ZUdpZ2FjYWdlQmVEaXNhYmwKIEFM
V0FZU19JTkxJTkUgY29uc3QgY2hhciogbmFtZShLaW5kIGtpbmQpCiB7CiAgICAgc3dpdGNoIChr
aW5kKSB7Ci0gICAgY2FzZSBSZXNlcnZlZEZvckZsYWdzQW5kTm90QUJhc2VQdHI6Ci0gICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgY2FzZSBQcmltaXRpdmU6CiAgICAg
ICAgIHJldHVybiAiUHJpbWl0aXZlIjsKICAgICBjYXNlIEpTVmFsdWU6CiAgICAgICAgIHJldHVy
biAiSlNWYWx1ZSI7CisgICAgY2FzZSBOdW1iZXJPZktpbmRzOgorICAgICAgICBicmVhazsgLy8g
SW52YWxpZDogZ28gdG8gUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAot
QUxXQVlTX0lOTElORSB2b2lkKiYgYmFzZVB0cihCYXNlUHRycyYgYmFzZVB0cnMsIEtpbmQga2lu
ZCkKLXsKLSAgICBzd2l0Y2ggKGtpbmQpIHsKLSAgICBjYXNlIFJlc2VydmVkRm9yRmxhZ3NBbmRO
b3RBQmFzZVB0cjoKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBj
YXNlIFByaW1pdGl2ZToKLSAgICAgICAgcmV0dXJuIGJhc2VQdHJzLnByaW1pdGl2ZTsKLSAgICBj
YXNlIEpTVmFsdWU6Ci0gICAgICAgIHJldHVybiBiYXNlUHRycy5qc1ZhbHVlOwotICAgIH0KLSAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBiYXNlUHRycy5wcmlt
aXRpdmU7Ci19Ci0KLUFMV0FZU19JTkxJTkUgQmFzZVB0cnMmIGJhc2VQdHJzKCkKLXsKLSAgICBy
ZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8QmFzZVB0cnMqPihyZWludGVycHJldF9jYXN0PHZvaWQq
PihnX2dpZ2FjYWdlQmFzZVB0cnMpKTsKLX0KLQotQUxXQVlTX0lOTElORSB2b2lkKiYgYmFzZVB0
cihLaW5kIGtpbmQpCi17Ci0gICAgcmV0dXJuIGJhc2VQdHIoYmFzZVB0cnMoKSwga2luZCk7Ci19
Ci0KLUFMV0FZU19JTkxJTkUgYm9vbCBpc0VuYWJsZWQoS2luZCBraW5kKQotewotICAgIHJldHVy
biAhIWJhc2VQdHIoa2luZCk7Ci19Ci0KK0FMV0FZU19JTkxJTkUgYm9vbCBpc0VuYWJsZWQoS2lu
ZCkgeyByZXR1cm4gZmFsc2U7IH0KIEFMV0FZU19JTkxJTkUgc2l6ZV90IG1hc2soS2luZCkgeyBy
ZXR1cm4gMDsgfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpJbmRleDogU291cmNlL2JtYWxsb2Mv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwkocmV2aXNp
b24gMjQ5NTQ4KQorKysgU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDYgQEAKKzIwMTktMDktMDUgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29t
PgorCisgICAgICAgIFJlZmFjdG9yIHRoZSBHaWdhY2FnZSBjb2RlIHRvIHJlcXVpcmUgbGVzcyBw
b2ludGVyIGNhc3RpbmcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDE1MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAxLiBEZWZpbmUgYSBHaWdhY2FnZTo6Q29uZmlnIHN0cnVjdCBpbnN0ZWFkIG9mIGhh
Y2tpbmcgYXJvdW5kIGEgZ19naWdhY2FnZUJhc2VQdHJzCisgICAgICAgICAgIGFycmF5IG9mIGJ5
dGVzLgorICAgICAgICAyLiBDaGFuZ2UgR2lnYWNhZ2U6OmJhc2VQdHIoKSB0byByZXR1cm4gYSBw
b2ludGVyIGluc3RlYWQgb2YgYSByZWZlcmVuY2UgdG8gdGhlCisgICAgICAgICAgIHJlcXVlc3Rl
ZCBiYXNlUHRyLiAgSW5zdGVhZCwgbWFrZSBpdCBleHBsaWNpdCB3aGVuIHRoZSBjbGllbnQgaXMg
dHJ5aW5nIHRvCisgICAgICAgICAgIHRha2UgdGhlIGFkZHJlc3Mgb2YgdGhlIGJhc2VQdHIsIG9y
IHNldHRpbmcgaXQuCisgICAgICAgIDMuIFJlbmFtZWQgd2FzRW5hYmxlZCgpIHRvIGlzRW5hYmxl
ZCgpIGJlY2F1c2UgaXQgcmV0dXJucyB0aGUgcHJlc2VudCBzdGF0ZSBvZiB0aGUKKyAgICAgICAg
ICAgZmxhZywgbm90IHNvbWUgcGFzdCBzdGF0ZS4KKyAgICAgICAgNC4gUmVtb3ZlIHNvbWUgdW5u
ZWVkZWQgc3R1YnMgaW4gV1RGIEdpZ2FjYWdlLmguCisgICAgICAgIDUuIENoYW5nZSBMTEludCdz
IGxvYWRDYWdlZEpTVmFsdWUoKSB0byBza2lwIHRoZSBjYWdpbmcgaWYgR2lnYWNhZ2UgaXMgbm90
IGVuYWJsZWQKKyAgICAgICAgICAgaW4gdGhlIGJ1aWxkLiAgVGhpcyBhbGxvd3MgdXMgdG8gcmVt
b3ZlIHRoZSB1bm5lZWRlZCBzdHVicyBpbiBXVEYgR2lnYWNhZ2UuaC4KKworICAgICAgICAqIGJt
YWxsb2MvR2lnYWNhZ2UuY3BwOgorICAgICAgICAoR2lnYWNhZ2U6OmJtYWxsb2M6OnByb3RlY3RH
aWdhY2FnZUJhc2VQdHJzKToKKyAgICAgICAgKEdpZ2FjYWdlOjpibWFsbG9jOjp1bnByb3RlY3RH
aWdhY2FnZUJhc2VQdHJzKToKKyAgICAgICAgKEdpZ2FjYWdlOjpibWFsbG9jOjpydW53YXlTaXpl
KToKKyAgICAgICAgKEdpZ2FjYWdlOjplbnN1cmVHaWdhY2FnZSk6CisgICAgICAgIChHaWdhY2Fn
ZTo6ZGlzYWJsZVByaW1pdGl2ZUdpZ2FjYWdlKToKKyAgICAgICAgKEdpZ2FjYWdlOjphZGRQcmlt
aXRpdmVEaXNhYmxlQ2FsbGJhY2spOgorICAgICAgICAoR2lnYWNhZ2U6OnByaW1pdGl2ZUdpZ2Fj
YWdlRGlzYWJsZWQpOgorICAgICAgICAqIGJtYWxsb2MvR2lnYWNhZ2UuaDoKKyAgICAgICAgKEdp
Z2FjYWdlOjpuYW1lKToKKyAgICAgICAgKEdpZ2FjYWdlOjpDb25maWc6OmJhc2VQdHIgY29uc3Qp
OgorICAgICAgICAoR2lnYWNhZ2U6OkNvbmZpZzo6c2V0QmFzZVB0cik6CisgICAgICAgIChHaWdh
Y2FnZTo6aXNFbmFibGVkKToKKyAgICAgICAgKEdpZ2FjYWdlOjpiYXNlUHRyKToKKyAgICAgICAg
KEdpZ2FjYWdlOjphZGRyZXNzT2ZCYXNlUHRyKToKKyAgICAgICAgKEdpZ2FjYWdlOjpzaXplKToK
KyAgICAgICAgKEdpZ2FjYWdlOjpjYWdlZCk6CisgICAgICAgIChHaWdhY2FnZTo6d2FzRW5hYmxl
ZCk6IERlbGV0ZWQuCisgICAgICAgIChHaWdhY2FnZTo6c2V0V2FzRW5hYmxlZCk6IERlbGV0ZWQu
CisgICAgICAgIChHaWdhY2FnZTo6YmFzZVB0cnMpOiBEZWxldGVkLgorICAgICAgICAqIGJtYWxs
b2MvSGVhcEtpbmQuaDoKKyAgICAgICAgKGJtYWxsb2M6OmhlYXBLaW5kKToKKyAgICAgICAgKGJt
YWxsb2M6OmlzQWN0aXZlSGVhcEtpbmRBZnRlckVuc3VyaW5nR2lnYWNhZ2UpOgorICAgICAgICAo
Ym1hbGxvYzo6bWFwVG9BY3RpdmVIZWFwS2luZEFmdGVyRW5zdXJpbmdHaWdhY2FnZSk6CisKIDIw
MTktMDktMDMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBb
Ym1hbGxvY10gSXNvVExTTGF5b3V0IGFuZCBBbGxJc29IZWFwcyByZWdpc3RyYXRpb24gaXMgcmFj
eSB3aXRoIGRlcml2ZWQgY2xhc3MgaW5pdGlhbGl6YXRpb24gd2l0aCB2aXJ0dWFsIGZ1bmN0aW9u
cwpJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9HaWdhY2FnZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL2JtYWxsb2MvYm1hbGxvYy9HaWdhY2FnZS5jcHAJKHJldmlzaW9uIDI0OTUzOSkK
KysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvR2lnYWNhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03NSwxMSArNzUsNyBAQCBuYW1lc3BhY2UgR2lnYWNhZ2UgewogLy8gSWYgdGhpcyB3ZXJlIGxl
c3MgdGhhbiAzMkdCLCB0aG9zZSBPT0IgYWNjZXNzZXMgY291bGQgcmVhY2ggb3V0c2lkZSBvZiB0
aGUgY2FnZS4KIGNvbnN0ZXhwciBzaXplX3QgZ2lnYWNhZ2VSdW53YXkgPSAzMmxsdSAqIDEwMjQg
KiAxMDI0ICogMTAyNDsKIAotLy8gTm90ZTogZ19naWdhY2FnZUJhc2VQdHJzWzBdIGlzIHJlc2Vy
dmVkIGZvciBzdG9yaW5nIHRoZSB3YXNFbmFibGVkIGZsYWcuCi0vLyBUaGUgZmlyc3QgZ2lnYWNh
Z2VCYXNlUHRyIHdpbGwgc3RhcnQgYXQgZ19naWdhY2FnZUJhc2VQdHJzW3NpemVvZih2b2lkKild
LgotLy8gVGhpcyBpcyBkb25lIHNvIHRoYXQgdGhlIHdhc0VuYWJsZWQgZmxhZyB3aWxsIGFsc28g
YmUgcHJvdGVjdGVkIGFsb25nIHdpdGggdGhlCi0vLyBnaWdhY2FnZUJhc2VQdHJzLgotYWxpZ25h
cyhnaWdhY2FnZUJhc2VQdHJzU2l6ZSkgY2hhciBnX2dpZ2FjYWdlQmFzZVB0cnNbZ2lnYWNhZ2VC
YXNlUHRyc1NpemVdOworYWxpZ25hcyhjb25maWdTaXplVG9Qcm90ZWN0KSBDb25maWcgZ19naWdh
Y2FnZUNvbmZpZzsKIAogdXNpbmcgbmFtZXNwYWNlIGJtYWxsb2M7CiAKQEAgLTg5LDE1ICs4NSwx
NCBAQCBib29sIHNfaXNEaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZURpc2FiCiAKIHZvaWQgcHJv
dGVjdEdpZ2FjYWdlQmFzZVB0cnMoKQogewotICAgIHVpbnRwdHJfdCBiYXNlUHRycyA9IHJlaW50
ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihnX2dpZ2FjYWdlQmFzZVB0cnMpOwogICAgIC8vIFdlIG1p
Z2h0IG9ubHkgZ2V0IHBhZ2Ugc2l6ZSBhbGlnbm1lbnQsIGJ1dCB0aGF0J3MgYWxzbyB0aGUgbWlu
aW11bSB3ZSBuZWVkLgotICAgIFJFTEVBU0VfQkFTU0VSVCghKGJhc2VQdHJzICYgKHZtUGFnZVNp
emUoKSAtIDEpKSk7Ci0gICAgbXByb3RlY3QoZ19naWdhY2FnZUJhc2VQdHJzLCBnaWdhY2FnZUJh
c2VQdHJzU2l6ZSwgUFJPVF9SRUFEKTsKKyAgICBSRUxFQVNFX0JBU1NFUlQoIShyZWludGVycHJl
dF9jYXN0PHNpemVfdD4oJmdfZ2lnYWNhZ2VDb25maWcpICYgKHZtUGFnZVNpemUoKSAtIDEpKSk7
CisgICAgbXByb3RlY3QoJmdfZ2lnYWNhZ2VDb25maWcsIGNvbmZpZ1NpemVUb1Byb3RlY3QsIFBS
T1RfUkVBRCk7CiB9CiAKIHZvaWQgdW5wcm90ZWN0R2lnYWNhZ2VCYXNlUHRycygpCiB7Ci0gICAg
bXByb3RlY3QoZ19naWdhY2FnZUJhc2VQdHJzLCBnaWdhY2FnZUJhc2VQdHJzU2l6ZSwgUFJPVF9S
RUFEIHwgUFJPVF9XUklURSk7CisgICAgbXByb3RlY3QoJmdfZ2lnYWNhZ2VDb25maWcsIGNvbmZp
Z1NpemVUb1Byb3RlY3QsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUpOwogfQogCiBjbGFzcyBVbnBy
b3RlY3RHaWdhY2FnZUJhc2VQdHJzU2NvcGUgewpAQCAtMTE2LDEyICsxMTEsMTIgQEAgcHVibGlj
Ogogc2l6ZV90IHJ1bndheVNpemUoS2luZCBraW5kKQogewogICAgIHN3aXRjaCAoa2luZCkgewot
ICAgIGNhc2UgS2luZDo6UmVzZXJ2ZWRGb3JGbGFnc0FuZE5vdEFCYXNlUHRyOgotICAgICAgICBS
RUxFQVNFX0JBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICBjYXNlIEtpbmQ6OlByaW1pdGl2ZToK
ICAgICAgICAgcmV0dXJuIGdpZ2FjYWdlUnVud2F5OwogICAgIGNhc2UgS2luZDo6SlNWYWx1ZToK
ICAgICAgICAgcmV0dXJuIDA7CisgICAgY2FzZSBLaW5kOjpOdW1iZXJPZktpbmRzOgorICAgICAg
ICBSRUxFQVNFX0JBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAgICAgcmV0dXJuIDA7CiB9
CkBAIC0xMzcsMTcgKzEzMiwxNyBAQCB2b2lkIGVuc3VyZUdpZ2FjYWdlKCkKICAgICAgICAgICAg
IGlmICghc2hvdWxkQmVFbmFibGVkKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAgICAgCi0gICAgICAgICAgICBLaW5kIHNodWZmbGVkS2luZHNbbnVtS2luZHNdOwotICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bUtpbmRzOyArK2kpCi0gICAgICAgICAg
ICAgICAgc2h1ZmZsZWRLaW5kc1tpXSA9IHN0YXRpY19jYXN0PEtpbmQ+KGkgKyAxKTsgLy8gKyAx
IHRvIHNraXAgS2luZDo6UmVzZXJ2ZWRGb3JGbGFnc0FuZE5vdEFCYXNlUHRyLgorICAgICAgICAg
ICAgS2luZCBzaHVmZmxlZEtpbmRzW051bWJlck9mS2luZHNdOworICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IE51bWJlck9mS2luZHM7ICsraSkKKyAgICAgICAgICAgICAgICBz
aHVmZmxlZEtpbmRzW2ldID0gc3RhdGljX2Nhc3Q8S2luZD4oaSk7CiAgICAgICAgICAgICAKICAg
ICAgICAgICAgIC8vIFdlIGp1c3QgZ28gYWhlYWQgYW5kIGFzc3VtZSB0aGF0IDY0IGJpdHMgaXMg
ZW5vdWdoIHJhbmRvbW5lc3MuIFRoYXQncyB0cml2aWFsbHkgdHJ1ZSByaWdodAogICAgICAgICAg
ICAgLy8gbm93LCBidXQgd291bGQgc3RvcCBiZWluZyB0cnVlIGlmIHdlIHdlbnQgY3Jhenkgd2l0
aCBnaWdhY2FnZXMuIEJhc2VkIG9uIG15IG1hdGgsIDIxIGlzIHRoZQogICAgICAgICAgICAgLy8g
bGFyZ2VzdCB2YWx1ZSBvZiBuIHNvIHRoYXQgbiEgPD0gMl42NC4KLSAgICAgICAgICAgIHN0YXRp
Y19hc3NlcnQobnVtS2luZHMgPD0gMjEsICJ0b28gbWFueSBraW5kcyIpOworICAgICAgICAgICAg
c3RhdGljX2Fzc2VydChOdW1iZXJPZktpbmRzIDw9IDIxLCAidG9vIG1hbnkga2luZHMiKTsKICAg
ICAgICAgICAgIHVpbnQ2NF90IHJhbmRvbTsKICAgICAgICAgICAgIGNyeXB0b1JhbmRvbShyZWlu
dGVycHJldF9jYXN0PHVuc2lnbmVkIGNoYXIqPigmcmFuZG9tKSwgc2l6ZW9mKHJhbmRvbSkpOwot
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtS2luZHM7IGktLTspIHsKKyAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IE51bWJlck9mS2luZHM7IGktLTspIHsKICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBsaW1pdCA9IGkgKyAxOwogICAgICAgICAgICAgICAgIHVuc2lnbmVkIGog
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmFuZG9tICUgbGltaXQpOwogICAgICAgICAgICAgICAg
IHJhbmRvbSAvPSBsaW1pdDsKQEAgLTE4NCw3ICsxNzksNyBAQCB2b2lkIGVuc3VyZUdpZ2FjYWdl
KCkKICAgICAgICAgICAgIHNpemVfdCBuZXh0Q2FnZSA9IDA7CiAgICAgICAgICAgICBmb3IgKEtp
bmQga2luZCA6IHNodWZmbGVkS2luZHMpIHsKICAgICAgICAgICAgICAgICBuZXh0Q2FnZSA9IGFs
aWduVG8oa2luZCwgbmV4dENhZ2UpOwotICAgICAgICAgICAgICAgIGJhc2VQdHIoa2luZCkgPSBy
ZWludGVycHJldF9jYXN0PGNoYXIqPihiYXNlKSArIG5leHRDYWdlOworICAgICAgICAgICAgICAg
IGdfZ2lnYWNhZ2VDb25maWcuc2V0QmFzZVB0cihraW5kLCByZWludGVycHJldF9jYXN0PGNoYXIq
PihiYXNlKSArIG5leHRDYWdlKTsKICAgICAgICAgICAgICAgICBuZXh0Q2FnZSA9IGJ1bXAoa2lu
ZCwgbmV4dENhZ2UpOwogICAgICAgICAgICAgICAgIGlmIChydW53YXlTaXplKGtpbmQpID4gMCkg
ewogICAgICAgICAgICAgICAgICAgICBjaGFyKiBydW53YXkgPSByZWludGVycHJldF9jYXN0PGNo
YXIqPihiYXNlKSArIG5leHRDYWdlOwpAQCAtMTk1LDcgKzE5MCw3IEBAIHZvaWQgZW5zdXJlR2ln
YWNhZ2UoKQogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICB2bURlYWxs
b2NhdGVQaHlzaWNhbFBhZ2VzKGJhc2UsIHRvdGFsU2l6ZSk7Ci0gICAgICAgICAgICBzZXRXYXNF
bmFibGVkKCk7CisgICAgICAgICAgICBnX2dpZ2FjYWdlQ29uZmlnLmlzRW5hYmxlZCA9IHRydWU7
CiAgICAgICAgICAgICBwcm90ZWN0R2lnYWNhZ2VCYXNlUHRycygpOwogICAgICAgICB9KTsKIH0K
QEAgLTIwMyw3ICsxOTgsNyBAQCB2b2lkIGVuc3VyZUdpZ2FjYWdlKCkKIHZvaWQgZGlzYWJsZVBy
aW1pdGl2ZUdpZ2FjYWdlKCkKIHsKICAgICBlbnN1cmVHaWdhY2FnZSgpOwotICAgIGlmICghYmFz
ZVB0cnMoKS5wcmltaXRpdmUpIHsKKyAgICBpZiAoIWdfZ2lnYWNhZ2VDb25maWcuYmFzZVB0cnNb
UHJpbWl0aXZlXSkgewogICAgICAgICAvLyBJdCB3YXMgbmV2ZXIgZW5hYmxlZC4gVGhhdCBtZWFu
cyB0aGF0IHdlIG5ldmVyIGV2ZW4gc2F2ZWQgYW55IGNhbGxiYWNrcy4gT3IsIHdlIGhhZCBhbHJl
YWR5IGRpc2FibGVkCiAgICAgICAgIC8vIGl0IGJlZm9yZSwgYW5kIGFscmVhZHkgY2FsbGVkIHRo
ZSBjYWxsYmFja3MuCiAgICAgICAgIHJldHVybjsKQEAgLTIxNSwxMyArMjEwLDEzIEBAIHZvaWQg
ZGlzYWJsZVByaW1pdGl2ZUdpZ2FjYWdlKCkKICAgICAgICAgY2FsbGJhY2suZnVuY3Rpb24oY2Fs
bGJhY2suYXJndW1lbnQpOwogICAgIGNhbGxiYWNrcy5jYWxsYmFja3Muc2hyaW5rKDApOwogICAg
IFVucHJvdGVjdEdpZ2FjYWdlQmFzZVB0cnNTY29wZSB1bnByb3RlY3RTY29wZTsKLSAgICBiYXNl
UHRycygpLnByaW1pdGl2ZSA9IG51bGxwdHI7CisgICAgZ19naWdhY2FnZUNvbmZpZy5iYXNlUHRy
c1tQcmltaXRpdmVdID0gbnVsbHB0cjsKIH0KIAogdm9pZCBhZGRQcmltaXRpdmVEaXNhYmxlQ2Fs
bGJhY2sodm9pZCAoKmZ1bmN0aW9uKSh2b2lkKiksIHZvaWQqIGFyZ3VtZW50KQogewogICAgIGVu
c3VyZUdpZ2FjYWdlKCk7Ci0gICAgaWYgKCFiYXNlUHRycygpLnByaW1pdGl2ZSkgeworICAgIGlm
ICghZ19naWdhY2FnZUNvbmZpZy5iYXNlUHRyc1tQcmltaXRpdmVdKSB7CiAgICAgICAgIC8vIEl0
IHdhcyBhbHJlYWR5IGRpc2FibGVkIG9yIHdlIHdlcmUgbmV2ZXIgYWJsZSB0byBlbmFibGUgaXQu
CiAgICAgICAgIGZ1bmN0aW9uKGFyZ3VtZW50KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjQ4LDcg
KzI0Myw3IEBAIHZvaWQgcmVtb3ZlUHJpbWl0aXZlRGlzYWJsZUNhbGxiYWNrKHZvaWQKIAogc3Rh
dGljIHZvaWQgcHJpbWl0aXZlR2lnYWNhZ2VEaXNhYmxlZCh2b2lkKikKIHsKLSAgICBpZiAoR0lH
QUNBR0VfQUxMT0NBVElPTl9DQU5fRkFJTCAmJiAhd2FzRW5hYmxlZCgpKQorICAgIGlmIChHSUdB
Q0FHRV9BTExPQ0FUSU9OX0NBTl9GQUlMICYmICFpc0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgc3RhdGljIGJvb2wgc19mYWxzZTsKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvR2lnYWNhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0dpZ2Fj
YWdlLmgJKHJldmlzaW9uIDI0OTUzOSkKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvR2lnYWNh
Z2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsMjAgKzQ1LDIwIEBACiBuYW1lc3BhY2UgR2lnYWNh
Z2UgewogCiBlbnVtIEtpbmQgewotICAgIFJlc2VydmVkRm9yRmxhZ3NBbmROb3RBQmFzZVB0ciA9
IDAsCiAgICAgUHJpbWl0aXZlLAogICAgIEpTVmFsdWUsCisgICAgTnVtYmVyT2ZLaW5kcyAvLyBU
aGlzIHNob3VsZCBhbHdheXMgYmUgYXQgdGhlIGVuZCBvZiB0aGlzIGxpc3QuCiB9OwogCiBCSU5M
SU5FIGNvbnN0IGNoYXIqIG5hbWUoS2luZCBraW5kKQogewogICAgIHN3aXRjaCAoa2luZCkgewot
ICAgIGNhc2UgUmVzZXJ2ZWRGb3JGbGFnc0FuZE5vdEFCYXNlUHRyOgotICAgICAgICBSRUxFQVNF
X0JBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICBjYXNlIFByaW1pdGl2ZToKICAgICAgICAgcmV0
dXJuICJQcmltaXRpdmUiOwogICAgIGNhc2UgSlNWYWx1ZToKICAgICAgICAgcmV0dXJuICJKU1Zh
bHVlIjsKKyAgICBjYXNlIE51bWJlck9mS2luZHM6CisgICAgICAgIGJyZWFrOyAvLyBJbnZhbGlk
OiBnbyB0byBCQ1JBU0goKTsKICAgICB9CiAgICAgQkNSQVNIKCk7CiAgICAgcmV0dXJuIG51bGxw
dHI7CkBAIC02OSwxNCArNjksMTQgQEAgQklOTElORSBjb25zdCBjaGFyKiBuYW1lKEtpbmQga2lu
ZCkKICNpZiBCQ1BVKEFSTTY0KQogY29uc3RleHByIHNpemVfdCBwcmltaXRpdmVHaWdhY2FnZVNp
emUgPSAyICogYm1hbGxvYzo6U2l6ZXM6OkdCOwogY29uc3RleHByIHNpemVfdCBqc1ZhbHVlR2ln
YWNhZ2VTaXplID0gMiAqIGJtYWxsb2M6OlNpemVzOjpHQjsKLWNvbnN0ZXhwciBzaXplX3QgZ2ln
YWNhZ2VCYXNlUHRyc1NpemUgPSAxNiAqIGJtYWxsb2M6OlNpemVzOjprQjsKIGNvbnN0ZXhwciBz
aXplX3QgbWF4aW11bUNhZ2VTaXplUmVkdWN0aW9uRm9yU2xpZGUgPSBibWFsbG9jOjpTaXplczo6
R0IgLyA0OworY29uc3RleHByIHNpemVfdCBjb25maWdTaXplVG9Qcm90ZWN0ID0gMTYgKiBibWFs
bG9jOjpTaXplczo6a0I7CiAjZGVmaW5lIEdJR0FDQUdFX0FMTE9DQVRJT05fQ0FOX0ZBSUwgMQog
I2Vsc2UKIGNvbnN0ZXhwciBzaXplX3QgcHJpbWl0aXZlR2lnYWNhZ2VTaXplID0gMzIgKiBibWFs
bG9jOjpTaXplczo6R0I7CiBjb25zdGV4cHIgc2l6ZV90IGpzVmFsdWVHaWdhY2FnZVNpemUgPSAx
NiAqIGJtYWxsb2M6OlNpemVzOjpHQjsKLWNvbnN0ZXhwciBzaXplX3QgZ2lnYWNhZ2VCYXNlUHRy
c1NpemUgPSA0ICogYm1hbGxvYzo6U2l6ZXM6OmtCOwogY29uc3RleHByIHNpemVfdCBtYXhpbXVt
Q2FnZVNpemVSZWR1Y3Rpb25Gb3JTbGlkZSA9IDQgKiBibWFsbG9jOjpTaXplczo6R0I7Citjb25z
dGV4cHIgc2l6ZV90IGNvbmZpZ1NpemVUb1Byb3RlY3QgPSA0ICogYm1hbGxvYzo6U2l6ZXM6OmtC
OwogI2RlZmluZSBHSUdBQ0FHRV9BTExPQ0FUSU9OX0NBTl9GQUlMIDAKICNlbmRpZgogCkBAIC05
OCwyMSArOTgsMzcgQEAgY29uc3RleHByIHNpemVfdCBnaWdhY2FnZVNpemVUb01hc2soc2l6ZQog
Y29uc3RleHByIHNpemVfdCBwcmltaXRpdmVHaWdhY2FnZU1hc2sgPSBnaWdhY2FnZVNpemVUb01h
c2socHJpbWl0aXZlR2lnYWNhZ2VTaXplKTsKIGNvbnN0ZXhwciBzaXplX3QganNWYWx1ZUdpZ2Fj
YWdlTWFzayA9IGdpZ2FjYWdlU2l6ZVRvTWFzayhqc1ZhbHVlR2lnYWNhZ2VTaXplKTsKIAotZXh0
ZXJuICJDIiBhbGlnbmFzKGdpZ2FjYWdlQmFzZVB0cnNTaXplKSBCRVhQT1JUIGNoYXIgZ19naWdh
Y2FnZUJhc2VQdHJzW2dpZ2FjYWdlQmFzZVB0cnNTaXplXTsKK3N0cnVjdCBDb25maWcgeworICAg
IHZvaWQqIGJhc2VQdHIoS2luZCBraW5kKSBjb25zdAorICAgIHsKKyAgICAgICAgUkVMRUFTRV9C
QVNTRVJUKGtpbmQgPCBOdW1iZXJPZktpbmRzKTsKKyAgICAgICAgcmV0dXJuIGJhc2VQdHJzW2tp
bmRdOworICAgIH0KIAotQklOTElORSBib29sIHdhc0VuYWJsZWQoKSB7IHJldHVybiBnX2dpZ2Fj
YWdlQmFzZVB0cnNbMF07IH0KLUJJTkxJTkUgdm9pZCBzZXRXYXNFbmFibGVkKCkgeyBnX2dpZ2Fj
YWdlQmFzZVB0cnNbMF0gPSB0cnVlOyB9CisgICAgdm9pZCBzZXRCYXNlUHRyKEtpbmQga2luZCwg
dm9pZCogcHRyKQorICAgIHsKKyAgICAgICAgUkVMRUFTRV9CQVNTRVJUKGtpbmQgPCBOdW1iZXJP
ZktpbmRzKTsKKyAgICAgICAgYmFzZVB0cnNba2luZF0gPSBwdHI7CisgICAgfQogCi1zdHJ1Y3Qg
QmFzZVB0cnMgewotICAgIHVpbnRwdHJfdCByZXNlcnZlZEZvckZsYWdzOwotICAgIHZvaWQqIHBy
aW1pdGl2ZTsKLSAgICB2b2lkKiBqc1ZhbHVlOworICAgIHVuaW9uIHsKKyAgICAgICAgc3RydWN0
IHsKKyAgICAgICAgICAgIGJvb2wgaXNFbmFibGVkOworICAgICAgICAgICAgdm9pZCogYmFzZVB0
cnNbTnVtYmVyT2ZLaW5kc107CisgICAgICAgIH07CisgICAgICAgIGNoYXIgZW5zdXJlU2l6ZVtj
b25maWdTaXplVG9Qcm90ZWN0XTsKKyAgICB9OwogfTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKENv
bmZpZykgPT0gY29uZmlnU2l6ZVRvUHJvdGVjdCwgIkdpZ2FjYWdlIENvbmZpZyBtdXN0IGZpdCBp
biBjb25maWdTaXplVG9Qcm90ZWN0Iik7CisKK2V4dGVybiAiQyIgYWxpZ25hcyhjb25maWdTaXpl
VG9Qcm90ZWN0KSBCRVhQT1JUIENvbmZpZyBnX2dpZ2FjYWdlQ29uZmlnOwogCi1zdGF0aWNfYXNz
ZXJ0KG9mZnNldG9mKEJhc2VQdHJzLCBwcmltaXRpdmUpID09IEtpbmQ6OlByaW1pdGl2ZSAqIHNp
emVvZih2b2lkKiksICIiKTsKLXN0YXRpY19hc3NlcnQob2Zmc2V0b2YoQmFzZVB0cnMsIGpzVmFs
dWUpID09IEtpbmQ6OkpTVmFsdWUgKiBzaXplb2Yodm9pZCopLCAiIik7CisvLyBUaGVzZSBjb25z
dGFudHMgYXJlIG5lZWRlZCBieSB0aGUgTExJbnQuCitjb25zdGV4cHIgcHRyZGlmZl90IG9mZnNl
dE9mUHJpbWl0aXZlR2lnYWNhZ2VCYXNlUHRyID0gS2luZDo6UHJpbWl0aXZlICogc2l6ZW9mKHZv
aWQqKTsKK2NvbnN0ZXhwciBwdHJkaWZmX3Qgb2Zmc2V0T2ZKU1ZhbHVlR2lnYWNhZ2VCYXNlUHRy
ID0gS2luZDo6SlNWYWx1ZSAqIHNpemVvZih2b2lkKik7CiAKLWNvbnN0ZXhwciB1bnNpZ25lZCBu
dW1LaW5kcyA9IDI7CisKK0JJTkxJTkUgYm9vbCBpc0VuYWJsZWQoKSB7IHJldHVybiBnX2dpZ2Fj
YWdlQ29uZmlnLmlzRW5hYmxlZDsgfQogCiBCRVhQT1JUIHZvaWQgZW5zdXJlR2lnYWNhZ2UoKTsK
IApAQCAtMTI4LDQ0ICsxNDQsMzEgQEAgQkVYUE9SVCBib29sIGlzRGlzYWJsaW5nUHJpbWl0aXZl
R2lnYWNhZwogaW5saW5lIGJvb2wgaXNQcmltaXRpdmVHaWdhY2FnZVBlcm1hbmVudGx5RW5hYmxl
ZCgpIHsgcmV0dXJuIGlzRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZ2VEaXNhYmxlZCgpOyB9CiBp
bmxpbmUgYm9vbCBjYW5QcmltaXRpdmVHaWdhY2FnZUJlRGlzYWJsZWQoKSB7IHJldHVybiAhaXNE
aXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZURpc2FibGVkKCk7IH0KIAotQklOTElORSB2b2lkKiYg
YmFzZVB0cihCYXNlUHRycyYgYmFzZVB0cnMsIEtpbmQga2luZCkKLXsKLSAgICBzd2l0Y2ggKGtp
bmQpIHsKLSAgICBjYXNlIFJlc2VydmVkRm9yRmxhZ3NBbmROb3RBQmFzZVB0cjoKLSAgICAgICAg
UkVMRUFTRV9CQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgY2FzZSBQcmltaXRpdmU6Ci0gICAg
ICAgIHJldHVybiBiYXNlUHRycy5wcmltaXRpdmU7Ci0gICAgY2FzZSBKU1ZhbHVlOgotICAgICAg
ICByZXR1cm4gYmFzZVB0cnMuanNWYWx1ZTsKLSAgICB9Ci0gICAgQkNSQVNIKCk7Ci0gICAgcmV0
dXJuIGJhc2VQdHJzLnByaW1pdGl2ZTsKLX0KLQotQklOTElORSBCYXNlUHRycyYgYmFzZVB0cnMo
KQorQklOTElORSB2b2lkKiBiYXNlUHRyKEtpbmQga2luZCkKIHsKLSAgICByZXR1cm4gKnJlaW50
ZXJwcmV0X2Nhc3Q8QmFzZVB0cnMqPihyZWludGVycHJldF9jYXN0PHZvaWQqPihnX2dpZ2FjYWdl
QmFzZVB0cnMpKTsKKyAgICByZXR1cm4gZ19naWdhY2FnZUNvbmZpZy5iYXNlUHRyKGtpbmQpOwog
fQogCi1CSU5MSU5FIHZvaWQqJiBiYXNlUHRyKEtpbmQga2luZCkKK0JJTkxJTkUgdm9pZCogYWRk
cmVzc09mQmFzZVB0cihLaW5kIGtpbmQpCiB7Ci0gICAgcmV0dXJuIGJhc2VQdHIoYmFzZVB0cnMo
KSwga2luZCk7CisgICAgUkVMRUFTRV9CQVNTRVJUKGtpbmQgPCBOdW1iZXJPZktpbmRzKTsKKyAg
ICByZXR1cm4gJmdfZ2lnYWNhZ2VDb25maWcuYmFzZVB0cnNba2luZF07CiB9CiAKIEJJTkxJTkUg
Ym9vbCBpc0VuYWJsZWQoS2luZCBraW5kKQogewotICAgIHJldHVybiAhIWJhc2VQdHIoa2luZCk7
CisgICAgcmV0dXJuICEhZ19naWdhY2FnZUNvbmZpZy5iYXNlUHRyKGtpbmQpOwogfQogCiBCSU5M
SU5FIHNpemVfdCBzaXplKEtpbmQga2luZCkKIHsKICAgICBzd2l0Y2ggKGtpbmQpIHsKLSAgICBj
YXNlIFJlc2VydmVkRm9yRmxhZ3NBbmROb3RBQmFzZVB0cjoKLSAgICAgICAgUkVMRUFTRV9CQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgY2FzZSBQcmltaXRpdmU6CiAgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxzaXplX3Q+KHByaW1pdGl2ZUdpZ2FjYWdlU2l6ZSk7CiAgICAgY2FzZSBKU1Zh
bHVlOgogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90Pihqc1ZhbHVlR2lnYWNhZ2VT
aXplKTsKKyAgICBjYXNlIE51bWJlck9mS2luZHM6CisgICAgICAgIGJyZWFrOyAvLyBJbnZhbGlk
OiBnbyB0byBCQ1JBU0goKTsKICAgICB9CiAgICAgQkNSQVNIKCk7CiAgICAgcmV0dXJuIDA7CkBA
IC0xOTIsNyArMTk1LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KIEJJTkxJTkUgVCogY2FnZWQo
S2luZCBraW5kLCBUKiBwdHIpCiB7CiAgICAgQkFTU0VSVChwdHIpOwotICAgIHZvaWQqIGdpZ2Fj
YWdlQmFzZVB0ciA9IGJhc2VQdHIoa2luZCk7CisgICAgdm9pZCogZ2lnYWNhZ2VCYXNlUHRyID0g
Z19naWdhY2FnZUNvbmZpZy5iYXNlUHRyKGtpbmQpOwogICAgIGlmICghZ2lnYWNhZ2VCYXNlUHRy
KQogICAgICAgICByZXR1cm4gcHRyOwogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFQqPigK
QEAgLTIxNyw3ICsyMjAsNyBAQCBCRVhQT1JUIGJvb2wgc2hvdWxkQmVFbmFibGVkKCk7CiAKICNl
bHNlIC8vIEdJR0FDQUdFX0VOQUJMRUQKIAotQklOTElORSB2b2lkKiYgYmFzZVB0cihLaW5kKQor
QklOTElORSB2b2lkKiBiYXNlUHRyKEtpbmQpCiB7CiAgICAgQkNSQVNIKCk7CiAgICAgc3RhdGlj
IHZvaWQqIHVucmVhY2hhYmxlOwpAQCAtMjI1LDcgKzIyOCw3IEBAIEJJTkxJTkUgdm9pZComIGJh
c2VQdHIoS2luZCkKIH0KIEJJTkxJTkUgc2l6ZV90IHNpemUoS2luZCkgeyBCQ1JBU0goKTsgcmV0
dXJuIDA7IH0KIEJJTkxJTkUgdm9pZCBlbnN1cmVHaWdhY2FnZSgpIHsgfQotQklOTElORSBib29s
IHdhc0VuYWJsZWQoKSB7IHJldHVybiBmYWxzZTsgfQorQklOTElORSBib29sIGlzRW5hYmxlZCgp
IHsgcmV0dXJuIGZhbHNlOyB9CiBCSU5MSU5FIGJvb2wgaXNDYWdlZChLaW5kLCBjb25zdCB2b2lk
KikgeyByZXR1cm4gdHJ1ZTsgfQogQklOTElORSBib29sIGlzRW5hYmxlZChLaW5kKSB7IHJldHVy
biBmYWxzZTsgfQogdGVtcGxhdGU8dHlwZW5hbWUgVD4gQklOTElORSBUKiBjYWdlZChLaW5kLCBU
KiBwdHIpIHsgcmV0dXJuIHB0cjsgfQpJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFw
S2luZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcEtpbmQuaAko
cmV2aXNpb24gMjQ5NTM5KQorKysgU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwS2luZC5oCSh3
b3JraW5nIGNvcHkpCkBAIC03MCwxMiArNzAsMTIgQEAgQklOTElORSBHaWdhY2FnZTo6S2luZCBn
aWdhY2FnZUtpbmQoSGVhcAogQklOTElORSBIZWFwS2luZCBoZWFwS2luZChHaWdhY2FnZTo6S2lu
ZCBraW5kKQogewogICAgIHN3aXRjaCAoa2luZCkgewotICAgIGNhc2UgR2lnYWNhZ2U6OlJlc2Vy
dmVkRm9yRmxhZ3NBbmROb3RBQmFzZVB0cjoKLSAgICAgICAgUkVMRUFTRV9CQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgY2FzZSBHaWdhY2FnZTo6UHJpbWl0aXZlOgogICAgICAgICByZXR1cm4g
SGVhcEtpbmQ6OlByaW1pdGl2ZUdpZ2FjYWdlOwogICAgIGNhc2UgR2lnYWNhZ2U6OkpTVmFsdWU6
CiAgICAgICAgIHJldHVybiBIZWFwS2luZDo6SlNWYWx1ZUdpZ2FjYWdlOworICAgIGNhc2UgR2ln
YWNhZ2U6Ok51bWJlck9mS2luZHM6CisgICAgICAgIGJyZWFrOyAvLyBJbnZhbGlkOiBnbyB0byBC
Q1JBU0goKS4KICAgICB9CiAgICAgQkNSQVNIKCk7CiAgICAgcmV0dXJuIEhlYXBLaW5kOjpQcmlt
YXJ5OwpAQCAtODYsNyArODYsNyBAQCBCSU5MSU5FIGJvb2wgaXNBY3RpdmVIZWFwS2luZEFmdGVy
RW5zdXJpCiAgICAgc3dpdGNoIChraW5kKSB7CiAgICAgY2FzZSBIZWFwS2luZDo6UHJpbWl0aXZl
R2lnYWNhZ2U6CiAgICAgY2FzZSBIZWFwS2luZDo6SlNWYWx1ZUdpZ2FjYWdlOgotICAgICAgICBp
ZiAoR2lnYWNhZ2U6Ondhc0VuYWJsZWQoKSkKKyAgICAgICAgaWYgKEdpZ2FjYWdlOjppc0VuYWJs
ZWQoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgZGVmYXVsdDoKQEAgLTEwMSw3ICsxMDEsNyBAQCBCSU5MSU5FIEhlYXBLaW5kIG1hcFRvQWN0
aXZlSGVhcEtpbmRBZnRlCiAgICAgc3dpdGNoIChraW5kKSB7CiAgICAgY2FzZSBIZWFwS2luZDo6
UHJpbWl0aXZlR2lnYWNhZ2U6CiAgICAgY2FzZSBIZWFwS2luZDo6SlNWYWx1ZUdpZ2FjYWdlOgot
ICAgICAgICBpZiAoR2lnYWNhZ2U6Ondhc0VuYWJsZWQoKSkKKyAgICAgICAgaWYgKEdpZ2FjYWdl
Ojppc0VuYWJsZWQoKSkKICAgICAgICAgICAgIHJldHVybiBraW5kOwogICAgICAgICByZXR1cm4g
SGVhcEtpbmQ6OlByaW1hcnk7CiAgICAgZGVmYXVsdDoK
</data>
<flag name="review"
          id="393788"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378133</attachid>
            <date>2019-09-05 16:14:20 -0700</date>
            <delta_ts>2019-09-05 16:14:20 -0700</delta_ts>
            <desc>patch for landing.</desc>
            <filename>bug-201521.patch</filename>
            <type>text/plain</type>
            <size>22294</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjQ5NTUwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBA
CisyMDE5LTA5LTA1ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZWZhY3RvciB0aGUgR2lnYWNhZ2UgY29kZSB0byByZXF1aXJlIGxlc3MgcG9pbnRlciBjYXN0aW5n
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxNTIx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FhbSBCYXJhdGkuCisKKyAgICAgICAgQ2hhbmdlIExM
SW50J3MgbG9hZENhZ2VkSlNWYWx1ZSgpIHRvIHNraXAgdGhlIGNhZ2luZyBpZiBHaWdhY2FnZSBp
cyBub3QgZW5hYmxlZAorICAgICAgICBpbiB0aGUgYnVpbGQuICBUaGlzIGFsbG93cyB1cyB0byBy
ZW1vdmUgdGhlIHVubmVlZGVkIHN0dWJzIGluIFdURiBHaWdhY2FnZS5oLgorCisgICAgICAgICog
aml0L0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmNh
Z2VDb25kaXRpb25hbGx5KToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFz
bToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAq
IHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKEpTQzo6Vk06OmdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2Up
OgorCiAyMDE5LTA5LTA1ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAg
ICAgICAgW0pTQ10gR2VuZXJhbGl6ZSBHZXQvUHV0UHJvbWlzZUludGVybmFsRmllbGQgZm9yIElu
dGVybmFsRmllbGRPYmplY3RJbXBsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fz
c2VtYmx5SGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
QXNzZW1ibHlIZWxwZXJzLmgJKHJldmlzaW9uIDI0OTU1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1OTUsNyArMTU5
NSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBpZiAobGVuZ3RoID09IHNjcmF0Y2gpCiAg
ICAgICAgICAgICAgICAgICAgIHNjcmF0Y2ggPSBnZXRDYWNoZWRNZW1vcnlUZW1wUmVnaXN0ZXJJ
REFuZEludmFsaWRhdGUoKTsKICNlbmRpZgotICAgICAgICAgICAgICAgIGxvYWRQdHIoJkdpZ2Fj
YWdlOjpiYXNlUHRyKGtpbmQpLCBzY3JhdGNoKTsKKyAgICAgICAgICAgICAgICBsb2FkUHRyKEdp
Z2FjYWdlOjphZGRyZXNzT2ZCYXNlUHRyKGtpbmQpLCBzY3JhdGNoKTsKICAgICAgICAgICAgICAg
ICBKdW1wIGRvbmUgPSBicmFuY2hUZXN0NjQoWmVybywgc2NyYXRjaCk7CiAjaWYgQ1BVKEFSTTY0
RSkKICAgICAgICAgICAgICAgICBHUFJSZWcgdGVtcFJlZyA9IGdldENhY2hlZERhdGFUZW1wUmVn
aXN0ZXJJREFuZEludmFsaWRhdGUoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCShyZXZpc2lvbiAyNDk1NTAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFz
bQkod29ya2luZyBjb3B5KQpAQCAtNDQwLDcgKzQ0MCw3IEBAIG1hY3JvIGNhZ2VkUHJpbWl0aXZl
KHB0ciwgbGVuZ3RoLCBzY3JhdGMKICAgICAgICAgY29uc3Qgc291cmNlID0gcHRyCiAgICAgZW5k
CiAgICAgaWYgR0lHQUNBR0VfRU5BQkxFRAotICAgICAgICBjYWdlKF9nX2dpZ2FjYWdlQmFzZVB0
cnMgKyBHaWdhY2FnZTo6QmFzZVB0cnM6OnByaW1pdGl2ZSwgY29uc3RleHByIEdpZ2FjYWdlOjpw
cmltaXRpdmVHaWdhY2FnZU1hc2ssIHNvdXJjZSwgc2NyYXRjaCkKKyAgICAgICAgY2FnZShfZ19n
aWdhY2FnZUNvbmZpZyArIEdpZ2FjYWdlOjpDb25maWc6OmJhc2VQdHJzICsgR2lnYWNhZ2VQcmlt
aXRpdmVCYXNlUHRyT2Zmc2V0LCBjb25zdGV4cHIgR2lnYWNhZ2U6OnByaW1pdGl2ZUdpZ2FjYWdl
TWFzaywgc291cmNlLCBzY3JhdGNoKQogICAgICAgICBpZiBBUk02NEUKICAgICAgICAgICAgIGNv
bnN0IG51bWJlck9mUEFDQml0cyA9IGNvbnN0ZXhwciBNYWNyb0Fzc2VtYmxlcjo6bnVtYmVyT2ZQ
QUNCaXRzCiAgICAgICAgICAgICBiZmlxIHNjcmF0Y2gyLCAwLCA2NCAtIG51bWJlck9mUEFDQml0
cywgcHRyCkBAIC00NTMsNyArNDUzLDkgQEAgZW5kCiAKIG1hY3JvIGxvYWRDYWdlZEpTVmFsdWUo
c291cmNlLCBkZXN0LCBzY3JhdGNoT3JMZW5ndGgpCiAgICAgbG9hZHAgc291cmNlLCBkZXN0Ci0g
ICAgY2FnZShfZ19naWdhY2FnZUJhc2VQdHJzICsgR2lnYWNhZ2U6OkJhc2VQdHJzOjpqc1ZhbHVl
LCBjb25zdGV4cHIgR2lnYWNhZ2U6OmpzVmFsdWVHaWdhY2FnZU1hc2ssIGRlc3QsIHNjcmF0Y2hP
ckxlbmd0aCkKKyAgICBpZiBHSUdBQ0FHRV9FTkFCTEVECisgICAgICAgIGNhZ2UoX2dfZ2lnYWNh
Z2VDb25maWcgKyBHaWdhY2FnZTo6Q29uZmlnOjpiYXNlUHRycyArIEdpZ2FjYWdlSlNWYWx1ZUJh
c2VQdHJPZmZzZXQsIGNvbnN0ZXhwciBHaWdhY2FnZTo6anNWYWx1ZUdpZ2FjYWdlTWFzaywgZGVz
dCwgc2NyYXRjaE9yTGVuZ3RoKQorICAgIGVuZAogZW5kCiAKIG1hY3JvIGxvYWRWYXJpYWJsZShn
ZXQsIGZpZWxkTmFtZSwgdmFsdWVSZWcpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAyNDk1NTApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHdv
cmtpbmcgY29weSkKQEAgLTI5OCw2ICsyOTgsMTEgQEAgZWxzZQogICAgIGVuZAogZW5kCiAKK2lm
IEdJR0FDQUdFX0VOQUJMRUQKKyAgICBjb25zdCBHaWdhY2FnZVByaW1pdGl2ZUJhc2VQdHJPZmZz
ZXQgPSBjb25zdGV4cHIgR2lnYWNhZ2U6Om9mZnNldE9mUHJpbWl0aXZlR2lnYWNhZ2VCYXNlUHRy
CisgICAgY29uc3QgR2lnYWNhZ2VKU1ZhbHVlQmFzZVB0ck9mZnNldCA9IGNvbnN0ZXhwciBHaWdh
Y2FnZTo6b2Zmc2V0T2ZKU1ZhbHVlR2lnYWNhZ2VCYXNlUHRyCitlbmQKKwogbWFjcm8gZGlzcGF0
Y2goYWR2YW5jZVJlZykKICAgICBhZGRwIGFkdmFuY2VSZWcsIFBDCiAgICAgbmV4dEluc3RydWN0
aW9uKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkocmV2aXNpb24gMjQ5NTUw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkod29ya2luZyBjb3B5KQpA
QCAtMzUzLDEyICszNTMsMTIgQEAgcHVibGljOgogICAgIEFMV0FZU19JTkxJTkUgQ29tcGxldGVT
dWJzcGFjZSYgZ2lnYWNhZ2VBdXhpbGlhcnlTcGFjZShHaWdhY2FnZTo6S2luZCBraW5kKQogICAg
IHsKICAgICAgICAgc3dpdGNoIChraW5kKSB7Ci0gICAgICAgIGNhc2UgR2lnYWNhZ2U6OlJlc2Vy
dmVkRm9yRmxhZ3NBbmROb3RBQmFzZVB0cjoKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgIGNhc2UgR2lnYWNhZ2U6OlByaW1pdGl2ZToKICAgICAgICAg
ICAgIHJldHVybiBwcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlOwogICAgICAgICBjYXNl
IEdpZ2FjYWdlOjpKU1ZhbHVlOgogICAgICAgICAgICAgcmV0dXJuIGpzVmFsdWVHaWdhY2FnZUF1
eGlsaWFyeVNwYWNlOworICAgICAgICBjYXNlIEdpZ2FjYWdlOjpOdW1iZXJPZktpbmRzOgorICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICAgICAgcmV0dXJuIHByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2U7
CkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0No
YW5nZUxvZwkocmV2aXNpb24gMjQ5NTUwKQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAxOS0wOS0wNSAgTWFyayBMYW0gIDxtYXJrLmxh
bUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVmYWN0b3IgdGhlIEdpZ2FjYWdlIGNvZGUgdG8gcmVx
dWlyZSBsZXNzIHBvaW50ZXIgY2FzdGluZy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwMTUyMQorCisgICAgICAgIFJldmlld2VkIGJ5IFNhYW0gQmFy
YXRpLgorCisgICAgICAgIFJlbW92ZSBzb21lIHVubmVlZGVkIHN0dWJzIGluIFdURiBHaWdhY2Fn
ZS5oLgorCisgICAgICAgICogd3RmL0dpZ2FjYWdlLmNwcDoKKyAgICAgICAgKiB3dGYvR2lnYWNh
Z2UuaDoKKyAgICAgICAgKEdpZ2FjYWdlOjpuYW1lKToKKyAgICAgICAgKEdpZ2FjYWdlOjppc0Vu
YWJsZWQpOgorICAgICAgICAoR2lnYWNhZ2U6OmJhc2VQdHIpOiBEZWxldGVkLgorICAgICAgICAo
R2lnYWNhZ2U6OmJhc2VQdHJzKTogRGVsZXRlZC4KKwogMjAxOS0wOC0zMCAgQWxleCBDaHJpc3Rl
bnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSBIQVZFX0NG
TkVUV09SS19XSVRIX0FVVE9fQURERURfSFRUUF9IRUFERVJfU1VQUFJFU1NJT05fU1VQUE9SVCBj
b25kaXRpb25hbApJbmRleDogU291cmNlL1dURi93dGYvR2lnYWNhZ2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XVEYvd3RmL0dpZ2FjYWdlLmNwcAkocmV2aXNpb24gMjQ5NTUwKQorKysgU291
cmNlL1dURi93dGYvR2lnYWNhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM0LDggKzM0LDYgQEAKIAog
bmFtZXNwYWNlIEdpZ2FjYWdlIHsKIAotYWxpZ25hcyh2b2lkKikgY2hhciBnX2dpZ2FjYWdlQmFz
ZVB0cnNbZ2lnYWNhZ2VCYXNlUHRyc1NpemVdOwotCiB2b2lkKiB0cnlNYWxsb2MoS2luZCwgc2l6
ZV90IHNpemUpCiB7CiAgICAgcmV0dXJuIEZhc3RNYWxsb2M6OnRyeU1hbGxvYyhzaXplKTsKSW5k
ZXg6IFNvdXJjZS9XVEYvd3RmL0dpZ2FjYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93
dGYvR2lnYWNhZ2UuaAkocmV2aXNpb24gMjQ5NTUwKQorKysgU291cmNlL1dURi93dGYvR2lnYWNh
Z2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsMjUgKzM1LDEzIEBAIG5hbWVzcGFjZSBHaWdhY2Fn
ZSB7CiAKIGNvbnN0IHNpemVfdCBwcmltaXRpdmVHaWdhY2FnZU1hc2sgPSAwOwogY29uc3Qgc2l6
ZV90IGpzVmFsdWVHaWdhY2FnZU1hc2sgPSAwOwotY29uc3Qgc2l6ZV90IGdpZ2FjYWdlQmFzZVB0
cnNTaXplID0gOCAqIEtCOwotCi1leHRlcm4gIkMiIGFsaWduYXModm9pZCopIFdURl9FWFBPUlRf
UFJJVkFURSBjaGFyIGdfZ2lnYWNhZ2VCYXNlUHRyc1tnaWdhY2FnZUJhc2VQdHJzU2l6ZV07Ci0K
LXN0cnVjdCBCYXNlUHRycyB7Ci0gICAgdWludHB0cl90IHJlc2VydmVkRm9yRmxhZ3M7Ci0gICAg
dm9pZCogcHJpbWl0aXZlOwotICAgIHZvaWQqIGpzVmFsdWU7Ci19OwogCiBlbnVtIEtpbmQgewot
ICAgIFJlc2VydmVkRm9yRmxhZ3NBbmROb3RBQmFzZVB0ciA9IDAsCiAgICAgUHJpbWl0aXZlLAog
ICAgIEpTVmFsdWUsCisgICAgTnVtYmVyT2ZLaW5kcwogfTsKIAotc3RhdGljX2Fzc2VydChvZmZz
ZXRvZihCYXNlUHRycywgcHJpbWl0aXZlKSA9PSBLaW5kOjpQcmltaXRpdmUgKiBzaXplb2Yodm9p
ZCopLCAiIik7Ci1zdGF0aWNfYXNzZXJ0KG9mZnNldG9mKEJhc2VQdHJzLCBqc1ZhbHVlKSA9PSBL
aW5kOjpKU1ZhbHVlICogc2l6ZW9mKHZvaWQqKSwgIiIpOwotCiBpbmxpbmUgdm9pZCBlbnN1cmVH
aWdhY2FnZSgpIHsgfQogaW5saW5lIHZvaWQgZGlzYWJsZVByaW1pdGl2ZUdpZ2FjYWdlKCkgeyB9
CiBpbmxpbmUgYm9vbCBzaG91bGRCZUVuYWJsZWQoKSB7IHJldHVybiBmYWxzZTsgfQpAQCAtNzAs
NDYgKzU4LDE4IEBAIGlubGluZSBib29sIGNhblByaW1pdGl2ZUdpZ2FjYWdlQmVEaXNhYmwKIEFM
V0FZU19JTkxJTkUgY29uc3QgY2hhciogbmFtZShLaW5kIGtpbmQpCiB7CiAgICAgc3dpdGNoIChr
aW5kKSB7Ci0gICAgY2FzZSBSZXNlcnZlZEZvckZsYWdzQW5kTm90QUJhc2VQdHI6Ci0gICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgY2FzZSBQcmltaXRpdmU6CiAgICAg
ICAgIHJldHVybiAiUHJpbWl0aXZlIjsKICAgICBjYXNlIEpTVmFsdWU6CiAgICAgICAgIHJldHVy
biAiSlNWYWx1ZSI7CisgICAgY2FzZSBOdW1iZXJPZktpbmRzOgorICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIAotQUxXQVlTX0lOTElORSB2b2lkKiYgYmFzZVB0cihCYXNlUHRycyYgYmFzZVB0cnMs
IEtpbmQga2luZCkKLXsKLSAgICBzd2l0Y2ggKGtpbmQpIHsKLSAgICBjYXNlIFJlc2VydmVkRm9y
RmxhZ3NBbmROb3RBQmFzZVB0cjoKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICBjYXNlIFByaW1pdGl2ZToKLSAgICAgICAgcmV0dXJuIGJhc2VQdHJzLnByaW1pdGl2
ZTsKLSAgICBjYXNlIEpTVmFsdWU6Ci0gICAgICAgIHJldHVybiBiYXNlUHRycy5qc1ZhbHVlOwot
ICAgIH0KLSAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBiYXNl
UHRycy5wcmltaXRpdmU7Ci19Ci0KLUFMV0FZU19JTkxJTkUgQmFzZVB0cnMmIGJhc2VQdHJzKCkK
LXsKLSAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8QmFzZVB0cnMqPihyZWludGVycHJldF9j
YXN0PHZvaWQqPihnX2dpZ2FjYWdlQmFzZVB0cnMpKTsKLX0KLQotQUxXQVlTX0lOTElORSB2b2lk
KiYgYmFzZVB0cihLaW5kIGtpbmQpCi17Ci0gICAgcmV0dXJuIGJhc2VQdHIoYmFzZVB0cnMoKSwg
a2luZCk7Ci19Ci0KLUFMV0FZU19JTkxJTkUgYm9vbCBpc0VuYWJsZWQoS2luZCBraW5kKQotewot
ICAgIHJldHVybiAhIWJhc2VQdHIoa2luZCk7Ci19Ci0KK0FMV0FZU19JTkxJTkUgYm9vbCBpc0Vu
YWJsZWQoS2luZCkgeyByZXR1cm4gZmFsc2U7IH0KIEFMV0FZU19JTkxJTkUgc2l6ZV90IG1hc2so
S2luZCkgeyByZXR1cm4gMDsgfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpJbmRleDogU291cmNl
L2JtYWxsb2MvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL0NoYW5nZUxv
ZwkocmV2aXNpb24gMjQ5NTUwKQorKysgU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTktMDktMDUgIE1hcmsgTGFtICA8bWFyay5sYW1A
YXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIHRoZSBHaWdhY2FnZSBjb2RlIHRvIHJlcXVp
cmUgbGVzcyBwb2ludGVyIGNhc3RpbmcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDE1MjEKKworICAgICAgICBSZXZpZXdlZCBieSBTYWFtIEJhcmF0
aS4KKworICAgICAgICAxLiBEZWZpbmUgYSBHaWdhY2FnZTo6Q29uZmlnIHN0cnVjdCBpbnN0ZWFk
IG9mIGhhY2tpbmcgYXJvdW5kIGEgZ19naWdhY2FnZUJhc2VQdHJzCisgICAgICAgICAgIGFycmF5
IG9mIGJ5dGVzLgorICAgICAgICAyLiBDaGFuZ2UgR2lnYWNhZ2U6OmJhc2VQdHIoKSB0byByZXR1
cm4gYSBwb2ludGVyIGluc3RlYWQgb2YgYSByZWZlcmVuY2UgdG8gdGhlCisgICAgICAgICAgIHJl
cXVlc3RlZCBiYXNlUHRyLiAgSW5zdGVhZCwgbWFrZSBpdCBleHBsaWNpdCB3aGVuIHRoZSBjbGll
bnQgaXMgdHJ5aW5nIHRvCisgICAgICAgICAgIHRha2UgdGhlIGFkZHJlc3Mgb2YgdGhlIGJhc2VQ
dHIsIG9yIHNldHRpbmcgaXQuCisgICAgICAgIDMuIFJlbmFtZWQgd2FzRW5hYmxlZCgpIHRvIGlz
RW5hYmxlZCgpIGJlY2F1c2UgaXQgcmV0dXJucyB0aGUgcHJlc2VudCBzdGF0ZSBvZiB0aGUKKyAg
ICAgICAgICAgZmxhZywgbm90IHNvbWUgcGFzdCBzdGF0ZS4KKworICAgICAgICAqIGJtYWxsb2Mv
R2lnYWNhZ2UuY3BwOgorICAgICAgICAoR2lnYWNhZ2U6OmJtYWxsb2M6OnByb3RlY3RHaWdhY2Fn
ZUJhc2VQdHJzKToKKyAgICAgICAgKEdpZ2FjYWdlOjpibWFsbG9jOjp1bnByb3RlY3RHaWdhY2Fn
ZUJhc2VQdHJzKToKKyAgICAgICAgKEdpZ2FjYWdlOjpibWFsbG9jOjpydW53YXlTaXplKToKKyAg
ICAgICAgKEdpZ2FjYWdlOjplbnN1cmVHaWdhY2FnZSk6CisgICAgICAgIChHaWdhY2FnZTo6ZGlz
YWJsZVByaW1pdGl2ZUdpZ2FjYWdlKToKKyAgICAgICAgKEdpZ2FjYWdlOjphZGRQcmltaXRpdmVE
aXNhYmxlQ2FsbGJhY2spOgorICAgICAgICAoR2lnYWNhZ2U6OnByaW1pdGl2ZUdpZ2FjYWdlRGlz
YWJsZWQpOgorICAgICAgICAqIGJtYWxsb2MvR2lnYWNhZ2UuaDoKKyAgICAgICAgKEdpZ2FjYWdl
OjpuYW1lKToKKyAgICAgICAgKEdpZ2FjYWdlOjpDb25maWc6OmJhc2VQdHIgY29uc3QpOgorICAg
ICAgICAoR2lnYWNhZ2U6OkNvbmZpZzo6c2V0QmFzZVB0cik6CisgICAgICAgIChHaWdhY2FnZTo6
aXNFbmFibGVkKToKKyAgICAgICAgKEdpZ2FjYWdlOjpiYXNlUHRyKToKKyAgICAgICAgKEdpZ2Fj
YWdlOjphZGRyZXNzT2ZCYXNlUHRyKToKKyAgICAgICAgKEdpZ2FjYWdlOjpzaXplKToKKyAgICAg
ICAgKEdpZ2FjYWdlOjpjYWdlZCk6CisgICAgICAgIChHaWdhY2FnZTo6d2FzRW5hYmxlZCk6IERl
bGV0ZWQuCisgICAgICAgIChHaWdhY2FnZTo6c2V0V2FzRW5hYmxlZCk6IERlbGV0ZWQuCisgICAg
ICAgIChHaWdhY2FnZTo6YmFzZVB0cnMpOiBEZWxldGVkLgorICAgICAgICAqIGJtYWxsb2MvSGVh
cEtpbmQuaDoKKyAgICAgICAgKGJtYWxsb2M6OmhlYXBLaW5kKToKKyAgICAgICAgKGJtYWxsb2M6
OmlzQWN0aXZlSGVhcEtpbmRBZnRlckVuc3VyaW5nR2lnYWNhZ2UpOgorICAgICAgICAoYm1hbGxv
Yzo6bWFwVG9BY3RpdmVIZWFwS2luZEFmdGVyRW5zdXJpbmdHaWdhY2FnZSk6CisKIDIwMTktMDkt
MDMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbYm1hbGxv
Y10gSXNvVExTTGF5b3V0IGFuZCBBbGxJc29IZWFwcyByZWdpc3RyYXRpb24gaXMgcmFjeSB3aXRo
IGRlcml2ZWQgY2xhc3MgaW5pdGlhbGl6YXRpb24gd2l0aCB2aXJ0dWFsIGZ1bmN0aW9ucwpJbmRl
eDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9HaWdhY2FnZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL2JtYWxsb2MvYm1hbGxvYy9HaWdhY2FnZS5jcHAJKHJldmlzaW9uIDI0OTU1MCkKKysrIFNv
dXJjZS9ibWFsbG9jL2JtYWxsb2MvR2lnYWNhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSwx
MSArNzUsNyBAQCBuYW1lc3BhY2UgR2lnYWNhZ2UgewogLy8gSWYgdGhpcyB3ZXJlIGxlc3MgdGhh
biAzMkdCLCB0aG9zZSBPT0IgYWNjZXNzZXMgY291bGQgcmVhY2ggb3V0c2lkZSBvZiB0aGUgY2Fn
ZS4KIGNvbnN0ZXhwciBzaXplX3QgZ2lnYWNhZ2VSdW53YXkgPSAzMmxsdSAqIDEwMjQgKiAxMDI0
ICogMTAyNDsKIAotLy8gTm90ZTogZ19naWdhY2FnZUJhc2VQdHJzWzBdIGlzIHJlc2VydmVkIGZv
ciBzdG9yaW5nIHRoZSB3YXNFbmFibGVkIGZsYWcuCi0vLyBUaGUgZmlyc3QgZ2lnYWNhZ2VCYXNl
UHRyIHdpbGwgc3RhcnQgYXQgZ19naWdhY2FnZUJhc2VQdHJzW3NpemVvZih2b2lkKildLgotLy8g
VGhpcyBpcyBkb25lIHNvIHRoYXQgdGhlIHdhc0VuYWJsZWQgZmxhZyB3aWxsIGFsc28gYmUgcHJv
dGVjdGVkIGFsb25nIHdpdGggdGhlCi0vLyBnaWdhY2FnZUJhc2VQdHJzLgotYWxpZ25hcyhnaWdh
Y2FnZUJhc2VQdHJzU2l6ZSkgY2hhciBnX2dpZ2FjYWdlQmFzZVB0cnNbZ2lnYWNhZ2VCYXNlUHRy
c1NpemVdOworYWxpZ25hcyhjb25maWdTaXplVG9Qcm90ZWN0KSBDb25maWcgZ19naWdhY2FnZUNv
bmZpZzsKIAogdXNpbmcgbmFtZXNwYWNlIGJtYWxsb2M7CiAKQEAgLTg5LDE1ICs4NSwxNCBAQCBi
b29sIHNfaXNEaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZURpc2FiCiAKIHZvaWQgcHJvdGVjdEdp
Z2FjYWdlQmFzZVB0cnMoKQogewotICAgIHVpbnRwdHJfdCBiYXNlUHRycyA9IHJlaW50ZXJwcmV0
X2Nhc3Q8dWludHB0cl90PihnX2dpZ2FjYWdlQmFzZVB0cnMpOwogICAgIC8vIFdlIG1pZ2h0IG9u
bHkgZ2V0IHBhZ2Ugc2l6ZSBhbGlnbm1lbnQsIGJ1dCB0aGF0J3MgYWxzbyB0aGUgbWluaW11bSB3
ZSBuZWVkLgotICAgIFJFTEVBU0VfQkFTU0VSVCghKGJhc2VQdHJzICYgKHZtUGFnZVNpemUoKSAt
IDEpKSk7Ci0gICAgbXByb3RlY3QoZ19naWdhY2FnZUJhc2VQdHJzLCBnaWdhY2FnZUJhc2VQdHJz
U2l6ZSwgUFJPVF9SRUFEKTsKKyAgICBSRUxFQVNFX0JBU1NFUlQoIShyZWludGVycHJldF9jYXN0
PHNpemVfdD4oJmdfZ2lnYWNhZ2VDb25maWcpICYgKHZtUGFnZVNpemUoKSAtIDEpKSk7CisgICAg
bXByb3RlY3QoJmdfZ2lnYWNhZ2VDb25maWcsIGNvbmZpZ1NpemVUb1Byb3RlY3QsIFBST1RfUkVB
RCk7CiB9CiAKIHZvaWQgdW5wcm90ZWN0R2lnYWNhZ2VCYXNlUHRycygpCiB7Ci0gICAgbXByb3Rl
Y3QoZ19naWdhY2FnZUJhc2VQdHJzLCBnaWdhY2FnZUJhc2VQdHJzU2l6ZSwgUFJPVF9SRUFEIHwg
UFJPVF9XUklURSk7CisgICAgbXByb3RlY3QoJmdfZ2lnYWNhZ2VDb25maWcsIGNvbmZpZ1NpemVU
b1Byb3RlY3QsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUpOwogfQogCiBjbGFzcyBVbnByb3RlY3RH
aWdhY2FnZUJhc2VQdHJzU2NvcGUgewpAQCAtMTE2LDEyICsxMTEsMTIgQEAgcHVibGljOgogc2l6
ZV90IHJ1bndheVNpemUoS2luZCBraW5kKQogewogICAgIHN3aXRjaCAoa2luZCkgewotICAgIGNh
c2UgS2luZDo6UmVzZXJ2ZWRGb3JGbGFnc0FuZE5vdEFCYXNlUHRyOgotICAgICAgICBSRUxFQVNF
X0JBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICBjYXNlIEtpbmQ6OlByaW1pdGl2ZToKICAgICAg
ICAgcmV0dXJuIGdpZ2FjYWdlUnVud2F5OwogICAgIGNhc2UgS2luZDo6SlNWYWx1ZToKICAgICAg
ICAgcmV0dXJuIDA7CisgICAgY2FzZSBLaW5kOjpOdW1iZXJPZktpbmRzOgorICAgICAgICBSRUxF
QVNFX0JBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAgICAgcmV0dXJuIDA7CiB9CkBAIC0x
MzcsMTcgKzEzMiwxNyBAQCB2b2lkIGVuc3VyZUdpZ2FjYWdlKCkKICAgICAgICAgICAgIGlmICgh
c2hvdWxkQmVFbmFibGVkKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAg
Ci0gICAgICAgICAgICBLaW5kIHNodWZmbGVkS2luZHNbbnVtS2luZHNdOwotICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bUtpbmRzOyArK2kpCi0gICAgICAgICAgICAgICAg
c2h1ZmZsZWRLaW5kc1tpXSA9IHN0YXRpY19jYXN0PEtpbmQ+KGkgKyAxKTsgLy8gKyAxIHRvIHNr
aXAgS2luZDo6UmVzZXJ2ZWRGb3JGbGFnc0FuZE5vdEFCYXNlUHRyLgorICAgICAgICAgICAgS2lu
ZCBzaHVmZmxlZEtpbmRzW051bWJlck9mS2luZHNdOworICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IE51bWJlck9mS2luZHM7ICsraSkKKyAgICAgICAgICAgICAgICBzaHVmZmxl
ZEtpbmRzW2ldID0gc3RhdGljX2Nhc3Q8S2luZD4oaSk7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIC8vIFdlIGp1c3QgZ28gYWhlYWQgYW5kIGFzc3VtZSB0aGF0IDY0IGJpdHMgaXMgZW5vdWdo
IHJhbmRvbW5lc3MuIFRoYXQncyB0cml2aWFsbHkgdHJ1ZSByaWdodAogICAgICAgICAgICAgLy8g
bm93LCBidXQgd291bGQgc3RvcCBiZWluZyB0cnVlIGlmIHdlIHdlbnQgY3Jhenkgd2l0aCBnaWdh
Y2FnZXMuIEJhc2VkIG9uIG15IG1hdGgsIDIxIGlzIHRoZQogICAgICAgICAgICAgLy8gbGFyZ2Vz
dCB2YWx1ZSBvZiBuIHNvIHRoYXQgbiEgPD0gMl42NC4KLSAgICAgICAgICAgIHN0YXRpY19hc3Nl
cnQobnVtS2luZHMgPD0gMjEsICJ0b28gbWFueSBraW5kcyIpOworICAgICAgICAgICAgc3RhdGlj
X2Fzc2VydChOdW1iZXJPZktpbmRzIDw9IDIxLCAidG9vIG1hbnkga2luZHMiKTsKICAgICAgICAg
ICAgIHVpbnQ2NF90IHJhbmRvbTsKICAgICAgICAgICAgIGNyeXB0b1JhbmRvbShyZWludGVycHJl
dF9jYXN0PHVuc2lnbmVkIGNoYXIqPigmcmFuZG9tKSwgc2l6ZW9mKHJhbmRvbSkpOwotICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtS2luZHM7IGktLTspIHsKKyAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IE51bWJlck9mS2luZHM7IGktLTspIHsKICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBsaW1pdCA9IGkgKyAxOwogICAgICAgICAgICAgICAgIHVuc2lnbmVkIGogPSBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4ocmFuZG9tICUgbGltaXQpOwogICAgICAgICAgICAgICAgIHJhbmRv
bSAvPSBsaW1pdDsKQEAgLTE4NCw3ICsxNzksNyBAQCB2b2lkIGVuc3VyZUdpZ2FjYWdlKCkKICAg
ICAgICAgICAgIHNpemVfdCBuZXh0Q2FnZSA9IDA7CiAgICAgICAgICAgICBmb3IgKEtpbmQga2lu
ZCA6IHNodWZmbGVkS2luZHMpIHsKICAgICAgICAgICAgICAgICBuZXh0Q2FnZSA9IGFsaWduVG8o
a2luZCwgbmV4dENhZ2UpOwotICAgICAgICAgICAgICAgIGJhc2VQdHIoa2luZCkgPSByZWludGVy
cHJldF9jYXN0PGNoYXIqPihiYXNlKSArIG5leHRDYWdlOworICAgICAgICAgICAgICAgIGdfZ2ln
YWNhZ2VDb25maWcuc2V0QmFzZVB0cihraW5kLCByZWludGVycHJldF9jYXN0PGNoYXIqPihiYXNl
KSArIG5leHRDYWdlKTsKICAgICAgICAgICAgICAgICBuZXh0Q2FnZSA9IGJ1bXAoa2luZCwgbmV4
dENhZ2UpOwogICAgICAgICAgICAgICAgIGlmIChydW53YXlTaXplKGtpbmQpID4gMCkgewogICAg
ICAgICAgICAgICAgICAgICBjaGFyKiBydW53YXkgPSByZWludGVycHJldF9jYXN0PGNoYXIqPihi
YXNlKSArIG5leHRDYWdlOwpAQCAtMTk1LDcgKzE5MCw3IEBAIHZvaWQgZW5zdXJlR2lnYWNhZ2Uo
KQogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICB2bURlYWxsb2NhdGVQ
aHlzaWNhbFBhZ2VzKGJhc2UsIHRvdGFsU2l6ZSk7Ci0gICAgICAgICAgICBzZXRXYXNFbmFibGVk
KCk7CisgICAgICAgICAgICBnX2dpZ2FjYWdlQ29uZmlnLmlzRW5hYmxlZCA9IHRydWU7CiAgICAg
ICAgICAgICBwcm90ZWN0R2lnYWNhZ2VCYXNlUHRycygpOwogICAgICAgICB9KTsKIH0KQEAgLTIw
Myw3ICsxOTgsNyBAQCB2b2lkIGVuc3VyZUdpZ2FjYWdlKCkKIHZvaWQgZGlzYWJsZVByaW1pdGl2
ZUdpZ2FjYWdlKCkKIHsKICAgICBlbnN1cmVHaWdhY2FnZSgpOwotICAgIGlmICghYmFzZVB0cnMo
KS5wcmltaXRpdmUpIHsKKyAgICBpZiAoIWdfZ2lnYWNhZ2VDb25maWcuYmFzZVB0cnNbUHJpbWl0
aXZlXSkgewogICAgICAgICAvLyBJdCB3YXMgbmV2ZXIgZW5hYmxlZC4gVGhhdCBtZWFucyB0aGF0
IHdlIG5ldmVyIGV2ZW4gc2F2ZWQgYW55IGNhbGxiYWNrcy4gT3IsIHdlIGhhZCBhbHJlYWR5IGRp
c2FibGVkCiAgICAgICAgIC8vIGl0IGJlZm9yZSwgYW5kIGFscmVhZHkgY2FsbGVkIHRoZSBjYWxs
YmFja3MuCiAgICAgICAgIHJldHVybjsKQEAgLTIxNSwxMyArMjEwLDEzIEBAIHZvaWQgZGlzYWJs
ZVByaW1pdGl2ZUdpZ2FjYWdlKCkKICAgICAgICAgY2FsbGJhY2suZnVuY3Rpb24oY2FsbGJhY2su
YXJndW1lbnQpOwogICAgIGNhbGxiYWNrcy5jYWxsYmFja3Muc2hyaW5rKDApOwogICAgIFVucHJv
dGVjdEdpZ2FjYWdlQmFzZVB0cnNTY29wZSB1bnByb3RlY3RTY29wZTsKLSAgICBiYXNlUHRycygp
LnByaW1pdGl2ZSA9IG51bGxwdHI7CisgICAgZ19naWdhY2FnZUNvbmZpZy5iYXNlUHRyc1tQcmlt
aXRpdmVdID0gbnVsbHB0cjsKIH0KIAogdm9pZCBhZGRQcmltaXRpdmVEaXNhYmxlQ2FsbGJhY2so
dm9pZCAoKmZ1bmN0aW9uKSh2b2lkKiksIHZvaWQqIGFyZ3VtZW50KQogewogICAgIGVuc3VyZUdp
Z2FjYWdlKCk7Ci0gICAgaWYgKCFiYXNlUHRycygpLnByaW1pdGl2ZSkgeworICAgIGlmICghZ19n
aWdhY2FnZUNvbmZpZy5iYXNlUHRyc1tQcmltaXRpdmVdKSB7CiAgICAgICAgIC8vIEl0IHdhcyBh
bHJlYWR5IGRpc2FibGVkIG9yIHdlIHdlcmUgbmV2ZXIgYWJsZSB0byBlbmFibGUgaXQuCiAgICAg
ICAgIGZ1bmN0aW9uKGFyZ3VtZW50KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjQ4LDcgKzI0Myw3
IEBAIHZvaWQgcmVtb3ZlUHJpbWl0aXZlRGlzYWJsZUNhbGxiYWNrKHZvaWQKIAogc3RhdGljIHZv
aWQgcHJpbWl0aXZlR2lnYWNhZ2VEaXNhYmxlZCh2b2lkKikKIHsKLSAgICBpZiAoR0lHQUNBR0Vf
QUxMT0NBVElPTl9DQU5fRkFJTCAmJiAhd2FzRW5hYmxlZCgpKQorICAgIGlmIChHSUdBQ0FHRV9B
TExPQ0FUSU9OX0NBTl9GQUlMICYmICFpc0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgc3RhdGljIGJvb2wgc19mYWxzZTsKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvR2ln
YWNhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0dpZ2FjYWdlLmgJ
KHJldmlzaW9uIDI0OTU1MCkKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvR2lnYWNhZ2UuaAko
d29ya2luZyBjb3B5KQpAQCAtNDUsMjAgKzQ1LDIwIEBACiBuYW1lc3BhY2UgR2lnYWNhZ2Ugewog
CiBlbnVtIEtpbmQgewotICAgIFJlc2VydmVkRm9yRmxhZ3NBbmROb3RBQmFzZVB0ciA9IDAsCiAg
ICAgUHJpbWl0aXZlLAogICAgIEpTVmFsdWUsCisgICAgTnVtYmVyT2ZLaW5kcwogfTsKIAogQklO
TElORSBjb25zdCBjaGFyKiBuYW1lKEtpbmQga2luZCkKIHsKICAgICBzd2l0Y2ggKGtpbmQpIHsK
LSAgICBjYXNlIFJlc2VydmVkRm9yRmxhZ3NBbmROb3RBQmFzZVB0cjoKLSAgICAgICAgUkVMRUFT
RV9CQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgY2FzZSBQcmltaXRpdmU6CiAgICAgICAgIHJl
dHVybiAiUHJpbWl0aXZlIjsKICAgICBjYXNlIEpTVmFsdWU6CiAgICAgICAgIHJldHVybiAiSlNW
YWx1ZSI7CisgICAgY2FzZSBOdW1iZXJPZktpbmRzOgorICAgICAgICBicmVhazsKICAgICB9CiAg
ICAgQkNSQVNIKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC02OSwxNCArNjksMTQgQEAgQklO
TElORSBjb25zdCBjaGFyKiBuYW1lKEtpbmQga2luZCkKICNpZiBCQ1BVKEFSTTY0KQogY29uc3Rl
eHByIHNpemVfdCBwcmltaXRpdmVHaWdhY2FnZVNpemUgPSAyICogYm1hbGxvYzo6U2l6ZXM6OkdC
OwogY29uc3RleHByIHNpemVfdCBqc1ZhbHVlR2lnYWNhZ2VTaXplID0gMiAqIGJtYWxsb2M6OlNp
emVzOjpHQjsKLWNvbnN0ZXhwciBzaXplX3QgZ2lnYWNhZ2VCYXNlUHRyc1NpemUgPSAxNiAqIGJt
YWxsb2M6OlNpemVzOjprQjsKIGNvbnN0ZXhwciBzaXplX3QgbWF4aW11bUNhZ2VTaXplUmVkdWN0
aW9uRm9yU2xpZGUgPSBibWFsbG9jOjpTaXplczo6R0IgLyA0OworY29uc3RleHByIHNpemVfdCBj
b25maWdTaXplVG9Qcm90ZWN0ID0gMTYgKiBibWFsbG9jOjpTaXplczo6a0I7CiAjZGVmaW5lIEdJ
R0FDQUdFX0FMTE9DQVRJT05fQ0FOX0ZBSUwgMQogI2Vsc2UKIGNvbnN0ZXhwciBzaXplX3QgcHJp
bWl0aXZlR2lnYWNhZ2VTaXplID0gMzIgKiBibWFsbG9jOjpTaXplczo6R0I7CiBjb25zdGV4cHIg
c2l6ZV90IGpzVmFsdWVHaWdhY2FnZVNpemUgPSAxNiAqIGJtYWxsb2M6OlNpemVzOjpHQjsKLWNv
bnN0ZXhwciBzaXplX3QgZ2lnYWNhZ2VCYXNlUHRyc1NpemUgPSA0ICogYm1hbGxvYzo6U2l6ZXM6
OmtCOwogY29uc3RleHByIHNpemVfdCBtYXhpbXVtQ2FnZVNpemVSZWR1Y3Rpb25Gb3JTbGlkZSA9
IDQgKiBibWFsbG9jOjpTaXplczo6R0I7Citjb25zdGV4cHIgc2l6ZV90IGNvbmZpZ1NpemVUb1By
b3RlY3QgPSA0ICogYm1hbGxvYzo6U2l6ZXM6OmtCOwogI2RlZmluZSBHSUdBQ0FHRV9BTExPQ0FU
SU9OX0NBTl9GQUlMIDAKICNlbmRpZgogCkBAIC05OCwyMSArOTgsMzcgQEAgY29uc3RleHByIHNp
emVfdCBnaWdhY2FnZVNpemVUb01hc2soc2l6ZQogY29uc3RleHByIHNpemVfdCBwcmltaXRpdmVH
aWdhY2FnZU1hc2sgPSBnaWdhY2FnZVNpemVUb01hc2socHJpbWl0aXZlR2lnYWNhZ2VTaXplKTsK
IGNvbnN0ZXhwciBzaXplX3QganNWYWx1ZUdpZ2FjYWdlTWFzayA9IGdpZ2FjYWdlU2l6ZVRvTWFz
ayhqc1ZhbHVlR2lnYWNhZ2VTaXplKTsKIAotZXh0ZXJuICJDIiBhbGlnbmFzKGdpZ2FjYWdlQmFz
ZVB0cnNTaXplKSBCRVhQT1JUIGNoYXIgZ19naWdhY2FnZUJhc2VQdHJzW2dpZ2FjYWdlQmFzZVB0
cnNTaXplXTsKK3N0cnVjdCBDb25maWcgeworICAgIHZvaWQqIGJhc2VQdHIoS2luZCBraW5kKSBj
b25zdAorICAgIHsKKyAgICAgICAgUkVMRUFTRV9CQVNTRVJUKGtpbmQgPCBOdW1iZXJPZktpbmRz
KTsKKyAgICAgICAgcmV0dXJuIGJhc2VQdHJzW2tpbmRdOworICAgIH0KIAotQklOTElORSBib29s
IHdhc0VuYWJsZWQoKSB7IHJldHVybiBnX2dpZ2FjYWdlQmFzZVB0cnNbMF07IH0KLUJJTkxJTkUg
dm9pZCBzZXRXYXNFbmFibGVkKCkgeyBnX2dpZ2FjYWdlQmFzZVB0cnNbMF0gPSB0cnVlOyB9Cisg
ICAgdm9pZCBzZXRCYXNlUHRyKEtpbmQga2luZCwgdm9pZCogcHRyKQorICAgIHsKKyAgICAgICAg
UkVMRUFTRV9CQVNTRVJUKGtpbmQgPCBOdW1iZXJPZktpbmRzKTsKKyAgICAgICAgYmFzZVB0cnNb
a2luZF0gPSBwdHI7CisgICAgfQogCi1zdHJ1Y3QgQmFzZVB0cnMgewotICAgIHVpbnRwdHJfdCBy
ZXNlcnZlZEZvckZsYWdzOwotICAgIHZvaWQqIHByaW1pdGl2ZTsKLSAgICB2b2lkKiBqc1ZhbHVl
OworICAgIHVuaW9uIHsKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIGJvb2wgaXNFbmFi
bGVkOworICAgICAgICAgICAgdm9pZCogYmFzZVB0cnNbTnVtYmVyT2ZLaW5kc107CisgICAgICAg
IH07CisgICAgICAgIGNoYXIgZW5zdXJlU2l6ZVtjb25maWdTaXplVG9Qcm90ZWN0XTsKKyAgICB9
OwogfTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKENvbmZpZykgPT0gY29uZmlnU2l6ZVRvUHJvdGVj
dCwgIkdpZ2FjYWdlIENvbmZpZyBtdXN0IGZpdCBpbiBjb25maWdTaXplVG9Qcm90ZWN0Iik7CisK
K2V4dGVybiAiQyIgYWxpZ25hcyhjb25maWdTaXplVG9Qcm90ZWN0KSBCRVhQT1JUIENvbmZpZyBn
X2dpZ2FjYWdlQ29uZmlnOwogCi1zdGF0aWNfYXNzZXJ0KG9mZnNldG9mKEJhc2VQdHJzLCBwcmlt
aXRpdmUpID09IEtpbmQ6OlByaW1pdGl2ZSAqIHNpemVvZih2b2lkKiksICIiKTsKLXN0YXRpY19h
c3NlcnQob2Zmc2V0b2YoQmFzZVB0cnMsIGpzVmFsdWUpID09IEtpbmQ6OkpTVmFsdWUgKiBzaXpl
b2Yodm9pZCopLCAiIik7CisvLyBUaGVzZSBjb25zdGFudHMgYXJlIG5lZWRlZCBieSB0aGUgTExJ
bnQuCitjb25zdGV4cHIgcHRyZGlmZl90IG9mZnNldE9mUHJpbWl0aXZlR2lnYWNhZ2VCYXNlUHRy
ID0gS2luZDo6UHJpbWl0aXZlICogc2l6ZW9mKHZvaWQqKTsKK2NvbnN0ZXhwciBwdHJkaWZmX3Qg
b2Zmc2V0T2ZKU1ZhbHVlR2lnYWNhZ2VCYXNlUHRyID0gS2luZDo6SlNWYWx1ZSAqIHNpemVvZih2
b2lkKik7CiAKLWNvbnN0ZXhwciB1bnNpZ25lZCBudW1LaW5kcyA9IDI7CisKK0JJTkxJTkUgYm9v
bCBpc0VuYWJsZWQoKSB7IHJldHVybiBnX2dpZ2FjYWdlQ29uZmlnLmlzRW5hYmxlZDsgfQogCiBC
RVhQT1JUIHZvaWQgZW5zdXJlR2lnYWNhZ2UoKTsKIApAQCAtMTI4LDQ0ICsxNDQsMzEgQEAgQkVY
UE9SVCBib29sIGlzRGlzYWJsaW5nUHJpbWl0aXZlR2lnYWNhZwogaW5saW5lIGJvb2wgaXNQcmlt
aXRpdmVHaWdhY2FnZVBlcm1hbmVudGx5RW5hYmxlZCgpIHsgcmV0dXJuIGlzRGlzYWJsaW5nUHJp
bWl0aXZlR2lnYWNhZ2VEaXNhYmxlZCgpOyB9CiBpbmxpbmUgYm9vbCBjYW5QcmltaXRpdmVHaWdh
Y2FnZUJlRGlzYWJsZWQoKSB7IHJldHVybiAhaXNEaXNhYmxpbmdQcmltaXRpdmVHaWdhY2FnZURp
c2FibGVkKCk7IH0KIAotQklOTElORSB2b2lkKiYgYmFzZVB0cihCYXNlUHRycyYgYmFzZVB0cnMs
IEtpbmQga2luZCkKLXsKLSAgICBzd2l0Y2ggKGtpbmQpIHsKLSAgICBjYXNlIFJlc2VydmVkRm9y
RmxhZ3NBbmROb3RBQmFzZVB0cjoKLSAgICAgICAgUkVMRUFTRV9CQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgY2FzZSBQcmltaXRpdmU6Ci0gICAgICAgIHJldHVybiBiYXNlUHRycy5wcmltaXRp
dmU7Ci0gICAgY2FzZSBKU1ZhbHVlOgotICAgICAgICByZXR1cm4gYmFzZVB0cnMuanNWYWx1ZTsK
LSAgICB9Ci0gICAgQkNSQVNIKCk7Ci0gICAgcmV0dXJuIGJhc2VQdHJzLnByaW1pdGl2ZTsKLX0K
LQotQklOTElORSBCYXNlUHRycyYgYmFzZVB0cnMoKQorQklOTElORSB2b2lkKiBiYXNlUHRyKEtp
bmQga2luZCkKIHsKLSAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8QmFzZVB0cnMqPihyZWlu
dGVycHJldF9jYXN0PHZvaWQqPihnX2dpZ2FjYWdlQmFzZVB0cnMpKTsKKyAgICByZXR1cm4gZ19n
aWdhY2FnZUNvbmZpZy5iYXNlUHRyKGtpbmQpOwogfQogCi1CSU5MSU5FIHZvaWQqJiBiYXNlUHRy
KEtpbmQga2luZCkKK0JJTkxJTkUgdm9pZCogYWRkcmVzc09mQmFzZVB0cihLaW5kIGtpbmQpCiB7
Ci0gICAgcmV0dXJuIGJhc2VQdHIoYmFzZVB0cnMoKSwga2luZCk7CisgICAgUkVMRUFTRV9CQVNT
RVJUKGtpbmQgPCBOdW1iZXJPZktpbmRzKTsKKyAgICByZXR1cm4gJmdfZ2lnYWNhZ2VDb25maWcu
YmFzZVB0cnNba2luZF07CiB9CiAKIEJJTkxJTkUgYm9vbCBpc0VuYWJsZWQoS2luZCBraW5kKQog
ewotICAgIHJldHVybiAhIWJhc2VQdHIoa2luZCk7CisgICAgcmV0dXJuICEhZ19naWdhY2FnZUNv
bmZpZy5iYXNlUHRyKGtpbmQpOwogfQogCiBCSU5MSU5FIHNpemVfdCBzaXplKEtpbmQga2luZCkK
IHsKICAgICBzd2l0Y2ggKGtpbmQpIHsKLSAgICBjYXNlIFJlc2VydmVkRm9yRmxhZ3NBbmROb3RB
QmFzZVB0cjoKLSAgICAgICAgUkVMRUFTRV9CQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgY2Fz
ZSBQcmltaXRpdmU6CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KHByaW1pdGl2
ZUdpZ2FjYWdlU2l6ZSk7CiAgICAgY2FzZSBKU1ZhbHVlOgogICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8c2l6ZV90Pihqc1ZhbHVlR2lnYWNhZ2VTaXplKTsKKyAgICBjYXNlIE51bWJlck9mS2lu
ZHM6CisgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBCQ1JBU0goKTsKICAgICByZXR1cm4gMDsK
QEAgLTE5Miw3ICsxOTUsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogQklOTElORSBUKiBjYWdl
ZChLaW5kIGtpbmQsIFQqIHB0cikKIHsKICAgICBCQVNTRVJUKHB0cik7Ci0gICAgdm9pZCogZ2ln
YWNhZ2VCYXNlUHRyID0gYmFzZVB0cihraW5kKTsKKyAgICB2b2lkKiBnaWdhY2FnZUJhc2VQdHIg
PSBnX2dpZ2FjYWdlQ29uZmlnLmJhc2VQdHIoa2luZCk7CiAgICAgaWYgKCFnaWdhY2FnZUJhc2VQ
dHIpCiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VCo+
KApAQCAtMjE3LDcgKzIyMCw3IEBAIEJFWFBPUlQgYm9vbCBzaG91bGRCZUVuYWJsZWQoKTsKIAog
I2Vsc2UgLy8gR0lHQUNBR0VfRU5BQkxFRAogCi1CSU5MSU5FIHZvaWQqJiBiYXNlUHRyKEtpbmQp
CitCSU5MSU5FIHZvaWQqIGJhc2VQdHIoS2luZCkKIHsKICAgICBCQ1JBU0goKTsKICAgICBzdGF0
aWMgdm9pZCogdW5yZWFjaGFibGU7CkBAIC0yMjUsNyArMjI4LDcgQEAgQklOTElORSB2b2lkKiYg
YmFzZVB0cihLaW5kKQogfQogQklOTElORSBzaXplX3Qgc2l6ZShLaW5kKSB7IEJDUkFTSCgpOyBy
ZXR1cm4gMDsgfQogQklOTElORSB2b2lkIGVuc3VyZUdpZ2FjYWdlKCkgeyB9Ci1CSU5MSU5FIGJv
b2wgd2FzRW5hYmxlZCgpIHsgcmV0dXJuIGZhbHNlOyB9CitCSU5MSU5FIGJvb2wgaXNFbmFibGVk
KCkgeyByZXR1cm4gZmFsc2U7IH0KIEJJTkxJTkUgYm9vbCBpc0NhZ2VkKEtpbmQsIGNvbnN0IHZv
aWQqKSB7IHJldHVybiB0cnVlOyB9CiBCSU5MSU5FIGJvb2wgaXNFbmFibGVkKEtpbmQpIHsgcmV0
dXJuIGZhbHNlOyB9CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBCSU5MSU5FIFQqIGNhZ2VkKEtpbmQs
IFQqIHB0cikgeyByZXR1cm4gcHRyOyB9CkluZGV4OiBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hl
YXBLaW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwS2luZC5o
CShyZXZpc2lvbiAyNDk1NTApCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXBLaW5kLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTcwLDEyICs3MCwxMiBAQCBCSU5MSU5FIEdpZ2FjYWdlOjpLaW5k
IGdpZ2FjYWdlS2luZChIZWFwCiBCSU5MSU5FIEhlYXBLaW5kIGhlYXBLaW5kKEdpZ2FjYWdlOjpL
aW5kIGtpbmQpCiB7CiAgICAgc3dpdGNoIChraW5kKSB7Ci0gICAgY2FzZSBHaWdhY2FnZTo6UmVz
ZXJ2ZWRGb3JGbGFnc0FuZE5vdEFCYXNlUHRyOgotICAgICAgICBSRUxFQVNFX0JBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICBjYXNlIEdpZ2FjYWdlOjpQcmltaXRpdmU6CiAgICAgICAgIHJldHVy
biBIZWFwS2luZDo6UHJpbWl0aXZlR2lnYWNhZ2U7CiAgICAgY2FzZSBHaWdhY2FnZTo6SlNWYWx1
ZToKICAgICAgICAgcmV0dXJuIEhlYXBLaW5kOjpKU1ZhbHVlR2lnYWNhZ2U7CisgICAgY2FzZSBH
aWdhY2FnZTo6TnVtYmVyT2ZLaW5kczoKKyAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIEJDUkFT
SCgpOwogICAgIHJldHVybiBIZWFwS2luZDo6UHJpbWFyeTsKQEAgLTg2LDcgKzg2LDcgQEAgQklO
TElORSBib29sIGlzQWN0aXZlSGVhcEtpbmRBZnRlckVuc3VyaQogICAgIHN3aXRjaCAoa2luZCkg
ewogICAgIGNhc2UgSGVhcEtpbmQ6OlByaW1pdGl2ZUdpZ2FjYWdlOgogICAgIGNhc2UgSGVhcEtp
bmQ6OkpTVmFsdWVHaWdhY2FnZToKLSAgICAgICAgaWYgKEdpZ2FjYWdlOjp3YXNFbmFibGVkKCkp
CisgICAgICAgIGlmIChHaWdhY2FnZTo6aXNFbmFibGVkKCkpCiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGRlZmF1bHQ6CkBAIC0xMDEsNyArMTAx
LDcgQEAgQklOTElORSBIZWFwS2luZCBtYXBUb0FjdGl2ZUhlYXBLaW5kQWZ0ZQogICAgIHN3aXRj
aCAoa2luZCkgewogICAgIGNhc2UgSGVhcEtpbmQ6OlByaW1pdGl2ZUdpZ2FjYWdlOgogICAgIGNh
c2UgSGVhcEtpbmQ6OkpTVmFsdWVHaWdhY2FnZToKLSAgICAgICAgaWYgKEdpZ2FjYWdlOjp3YXNF
bmFibGVkKCkpCisgICAgICAgIGlmIChHaWdhY2FnZTo6aXNFbmFibGVkKCkpCiAgICAgICAgICAg
ICByZXR1cm4ga2luZDsKICAgICAgICAgcmV0dXJuIEhlYXBLaW5kOjpQcmltYXJ5OwogICAgIGRl
ZmF1bHQ6Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>