<?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>91565</bug_id>
          
          <creation_ts>2012-07-17 17:32:48 -0700</creation_ts>
          <short_desc>IndexedDB: Fix some coding style violations</short_desc>
          <delta_ts>2012-07-18 14:33:47 -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>New Bugs</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joshua Bell">jsbell</reporter>
          <assigned_to name="Joshua Bell">jsbell</assigned_to>
          <cc>alecflett</cc>
    
    <cc>dgrogan</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>671795</commentid>
    <comment_count>0</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-07-17 17:32:48 -0700</bug_when>
    <thetext>IndexedDB: Fix some coding style violations</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>671799</commentid>
    <comment_count>1</comment_count>
      <attachid>152884</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-07-17 17:35:36 -0700</bug_when>
    <thetext>Created attachment 152884
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>671804</commentid>
    <comment_count>2</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-07-17 17:37:10 -0700</bug_when>
    <thetext>tony@ - r?

I replaced kConstName with ConstName everywhere except local variables, where the WebKit standard seems to be to start with lowercase (i.e. constName)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672558</commentid>
    <comment_count>3</comment_count>
      <attachid>153053</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-07-18 11:22:02 -0700</bug_when>
    <thetext>Created attachment 153053
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672765</commentid>
    <comment_count>4</comment_count>
      <attachid>153053</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-18 14:33:42 -0700</bug_when>
    <thetext>Comment on attachment 153053
Patch for landing

Clearing flags on attachment: 153053

Committed r123020: &lt;http://trac.webkit.org/changeset/123020&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672766</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-18 14:33:47 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152884</attachid>
            <date>2012-07-17 17:35:36 -0700</date>
            <delta_ts>2012-07-18 11:21:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91565-20120717173535.patch</filename>
            <type>text/plain</type>
            <size>59385</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyODMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTFjMzNhZjAyNzQ3ODdk
NGJiMzJjZWM1YWQ1OTExMDdhNTY1NmNhMS4uNTY2NDMwYWIzYzBhZjA2M2VlYzFlNTdhMzY1OTFi
NzNkOTY2NjEyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg2IEBACisyMDEyLTA3LTE3ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBGaXgg
c29tZSBjb2Rpbmcgc3R5bGUgdmlvbGF0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE1NjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbiBkZWNsYXJhdGlvbnMsIHB1dCB0aGUgKiBuZXh0IHRvIHRo
ZSB0eXBlIG5vdCB0aGUgaWRlbnRpZmllci4KKyAgICAgICAgUmVtb3ZlIGsgYXMgYSBwcmVmaXgg
Zm9yIHZhcmlvdXMgY29uc3RhbnRzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAtIG5vIGZ1bmN0
aW9uYWwgY2hhbmdlcy4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJh
Y2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkN1cnNvckJhY2tlbmRJbXBsOjpw
cmVmZXRjaENvbnRpbnVlSW50ZXJuYWwpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lE
QkZhY3RvcnlCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlRmlsZUlk
ZW50aWZpZXIpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQktleS5oOgorICAgICAg
ICAoV2ViQ29yZTo6SURCS2V5OjpJREJLZXkpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxE
QkJhY2tpbmdTdG9yZTo6Z2V0RGF0YWJhc2VOYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpJREJM
ZXZlbERCQmFja2luZ1N0b3JlOjpnZXRJREJEYXRhYmFzZU1ldGFEYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6OmNyZWF0ZUlEQkRhdGFiYXNlTWV0YURhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6dXBkYXRlSURCRGF0
YWJhc2VNZXRhRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQmFja2luZ1N0b3Jl
OjpkZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQmFja2luZ1N0
b3JlOjpnZXRPYmplY3RTdG9yZXMpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0TmV3T2JqZWN0U3Rv
cmVJZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQmFja2luZ1N0b3JlOjpjcmVhdGVP
YmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQmFja2luZ1N0b3JlOjpk
ZWxldGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpnZXROZXdWZXJzaW9uTnVtYmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6Om5leHRBdXRvSW5j
cmVtZW50TnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6
OmZvckVhY2hPYmplY3RTdG9yZVJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERC
QmFja2luZ1N0b3JlOjpnZXRJbmRleGVzKToKKyAgICAgICAgKFdlYkNvcmU6OmdldE5ld0luZGV4
SWQpOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSW5k
ZXgpOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6cHV0SW5kZXhE
YXRhRm9yUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL0lEQkxldmVsREJDb2RpbmcuY3BwOgorICAgICAgICAoSURCTGV2ZWxEQkNvZGluZyk6
CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQ29kaW5nOjptYXhJREJLZXkpOgorICAgICAg
ICAoV2ViQ29yZTo6SURCTGV2ZWxEQkNvZGluZzo6bWluSURCS2V5KToKKyAgICAgICAgKFdlYkNv
cmU6OklEQkxldmVsREJDb2Rpbmc6OmRlY29kZVZhckludCk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJMZXZlbERCQ29kaW5nOjplbmNvZGVJREJLZXkpOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2
ZWxEQkNvZGluZzo6ZGVjb2RlSURCS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJD
b2Rpbmc6OmV4dHJhY3RFbmNvZGVkSURCS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVs
REJDb2Rpbmc6OmtleVR5cGVCeXRlVG9LZXlUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxl
dmVsREJDb2Rpbmc6OmNvbXBhcmVFbmNvZGVkSURCS2V5cyk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJMZXZlbERCQ29kaW5nOjplbmNvZGVJREJLZXlQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkxldmVsREJDb2Rpbmc6OmRlY29kZUlEQktleVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6SURC
TGV2ZWxEQkNvZGluZzo6Y29tcGFyZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQ29k
aW5nOjpLZXlQcmVmaXg6OktleVByZWZpeCk6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERC
Q29kaW5nOjpLZXlQcmVmaXg6OmVuY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERC
Q29kaW5nOjpLZXlQcmVmaXg6OmNvbXBhcmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxE
QkNvZGluZzo6S2V5UHJlZml4Ojp0eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJD
b2Rpbmc6OlNjaGVtYVZlcnNpb25LZXk6OmVuY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJM
ZXZlbERCQ29kaW5nOjpNYXhEYXRhYmFzZUlkS2V5OjplbmNvZGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCTGV2ZWxEQkNvZGluZzo6RGF0YWJhc2VGcmVlTGlzdEtleTo6ZGVjb2RlKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkxldmVsREJDb2Rpbmc6OkRhdGFiYXNlRnJlZUxpc3RLZXk6OmVuY29k
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQ29kaW5nOjpEYXRhYmFzZU5hbWVLZXk6
OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQ29kaW5nOjpEYXRhYmFzZU5h
bWVLZXk6OmVuY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQ29kaW5nOjpPYmpl
Y3RTdG9yZU1ldGFEYXRhS2V5OjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxE
QkNvZGluZzo6T2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQkxldmVsREJDb2Rpbmc6Ok9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmVuY29kZU1heEtl
eSk6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQ29kaW5nOjpJbmRleE1ldGFEYXRhS2V5
OjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkNvZGluZzo6SW5kZXhNZXRh
RGF0YUtleTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJDb2Rpbmc6Oklu
ZGV4TWV0YURhdGFLZXk6OmVuY29kZU1heEtleSk6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZl
bERCQ29kaW5nOjpPYmplY3RTdG9yZUZyZWVMaXN0S2V5OjpkZWNvZGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCTGV2ZWxEQkNvZGluZzo6T2JqZWN0U3RvcmVGcmVlTGlzdEtleTo6ZW5jb2RlKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJDb2Rpbmc6OkluZGV4RnJlZUxpc3RLZXk6OmRl
Y29kZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQ29kaW5nOjpJbmRleEZyZWVMaXN0
S2V5OjplbmNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkNvZGluZzo6T2JqZWN0
U3RvcmVOYW1lc0tleTo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJDb2Rp
bmc6Ok9iamVjdFN0b3JlTmFtZXNLZXk6OmVuY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJM
ZXZlbERCQ29kaW5nOjpJbmRleE5hbWVzS2V5OjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6
SURCTGV2ZWxEQkNvZGluZzo6SW5kZXhOYW1lc0tleTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQkxldmVsREJDb2Rpbmc6Ok9iamVjdFN0b3JlRGF0YUtleTo6ZGVjb2RlKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkxldmVsREJDb2Rpbmc6Ok9iamVjdFN0b3JlRGF0YUtleTo6ZW5jb2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJDb2Rpbmc6OkV4aXN0c0VudHJ5S2V5Ojpk
ZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkNvZGluZzo6RXhpc3RzRW50cnlL
ZXk6OmVuY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQ29kaW5nOjpJbmRleERh
dGFLZXk6OmRlY29kZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNv
ZGluZy5oOgorICAgICAgICAoSURCTGV2ZWxEQkNvZGluZyk6CisgICAgICAgIChPYmplY3RTdG9y
ZURhdGFLZXkpOgorICAgICAgICAoRXhpc3RzRW50cnlLZXkpOgorCiAyMDEyLTA3LTE3ICBLd2Fu
ZyBZdWwgU2VvICA8c2t5dWxAY29tcGFueTEwMC5uZXQ+CiAKICAgICAgICAgImluIGJvZHkiIGlu
c2VydGlvbiBtb2RlLCAiYW55IG90aGVyIGVuZCB0YWciIHN0ZXAgMi4xIGlzIHVwZGF0ZWQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggODIyNzJiMWVkMTczNGE0ODcwNzc1NThhZjU4YzU3
NTcyZGQ3YzZmNy4uZmRlN2I1ODU2YzFhYjUyNmI3Mjk1YzNmOGRlZGNmZjZiZWJiMTk3YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0wNy0xNyAgSm9z
aHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogRml4
IHNvbWUgY29kaW5nIHN0eWxlIHZpb2xhdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTkxNTY1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiB0ZXN0cy9JREJMZXZlbERCQ29kaW5nVGVzdC5jcHA6Cisg
ICAgICAgIChJREJMZXZlbERCQ29kaW5nOjpURVNUKToKKwogMjAxMi0wNy0xNiAgQWRhbSBCYXJ0
aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIFJlbW92ZSB0d28g
ZW1wdHkgZGlyZWN0b3JpZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHAKaW5kZXggZmU1ODk4OGU0MmUyOGUz
MjAyYmJjNjA3ZmZkODZjZWYyYTI2MzU3OC4uYjc0Yzk1ODUxMGM4NTZlOGViZGFhNDE1NGIwOTE1
OGFhNzQ1OTU5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCQ3Vyc29yQmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcApAQCAtMTg5LDcgKzE4OSw3IEBAIHZvaWQg
SURCQ3Vyc29yQmFja2VuZEltcGw6OnByZWZldGNoQ29udGludWVJbnRlcm5hbChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgUGFzCiAgICAgaWYgKGN1cnNvci0+bV9jdXJzb3IpCiAgICAgICAgIGN1
cnNvci0+bV9zYXZlZEN1cnNvciA9IGN1cnNvci0+bV9jdXJzb3ItPmNsb25lKCk7CiAKLSAgICBj
b25zdCBzaXplX3Qga01heFNpemVFc3RpbWF0ZSA9IDEwICogMTAyNCAqIDEwMjQ7CisgICAgY29u
c3Qgc2l6ZV90IG1heFNpemVFc3RpbWF0ZSA9IDEwICogMTAyNCAqIDEwMjQ7CiAgICAgc2l6ZV90
IHNpemVFc3RpbWF0ZSA9IDA7CiAKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bWJlclRvRmV0
Y2g7ICsraSkgewpAQCAtMjExLDcgKzIxMSw3IEBAIHZvaWQgSURCQ3Vyc29yQmFja2VuZEltcGw6
OnByZWZldGNoQ29udGludWVJbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzCiAg
ICAgICAgIGlmIChjdXJzb3ItPm1fY3Vyc29yVHlwZSAhPSBJREJDdXJzb3JCYWNrZW5kSW50ZXJm
YWNlOjpJbmRleEtleUN1cnNvcikKICAgICAgICAgICAgIHNpemVFc3RpbWF0ZSArPSBjdXJzb3It
Pm1fY3Vyc29yLT52YWx1ZSgpLmxlbmd0aCgpICogc2l6ZW9mKFVDaGFyKTsKIAotICAgICAgICBp
ZiAoc2l6ZUVzdGltYXRlID4ga01heFNpemVFc3RpbWF0ZSkKKyAgICAgICAgaWYgKHNpemVFc3Rp
bWF0ZSA+IG1heFNpemVFc3RpbWF0ZSkKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tl
bmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnlC
YWNrZW5kSW1wbC5jcHAKaW5kZXggM2NjZTBjMzc1NTA5MjdiNzE0N2Q5NGFjOGM0YzQ3OGE1MTg2
MTIzZC4uZGZiMTQ1N2EzMDZkYWE3YTU2OGMyMWFmNmVmYTM0NTQ2Y2UzZmY0NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5QmFj
a2VuZEltcGwuY3BwCkBAIC00NCw4ICs0NCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3Rh
dGljIFN0cmluZyBjb21wdXRlRmlsZUlkZW50aWZpZXIoU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5
T3JpZ2luKQogewotICAgIHN0YXRpYyBjb25zdCBjaGFyIGtMZXZlbERCRmlsZVN1ZmZpeFtdID0g
IkAxIjsKLSAgICByZXR1cm4gc2VjdXJpdHlPcmlnaW4tPmRhdGFiYXNlSWRlbnRpZmllcigpICsg
a0xldmVsREJGaWxlU3VmZml4OworICAgIHN0YXRpYyBjb25zdCBjaGFyIGxldmVsREJGaWxlU3Vm
Zml4W10gPSAiQDEiOworICAgIHJldHVybiBzZWN1cml0eU9yaWdpbi0+ZGF0YWJhc2VJZGVudGlm
aWVyKCkgKyBsZXZlbERCRmlsZVN1ZmZpeDsKIH0KIAogc3RhdGljIFN0cmluZyBjb21wdXRlVW5p
cXVlSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIG5hbWUsIFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0
eU9yaWdpbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QktleS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5LmgKaW5kZXgg
N2RlYmYwZDg4Zjc4M2I2MDJmNDJiMjdiMTM4Zjg2MGRjMGQxNWU4Ni4uODU5ODcyOWQ3ZWM0MjVk
NTA4NTc3OWE1Y2JmNWIwYTcwMjZjODU2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCS2V5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCS2V5LmgKQEAgLTE0OCwxMCArMTQ4LDEwIEBAIHB1YmxpYzoKICAgICB1c2luZyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxJREJLZXk+OjpkZXJlZjsKIAogcHJpdmF0ZToKLSAgICBJREJL
ZXkoKSA6IG1fdHlwZShJbnZhbGlkVHlwZSksIG1fbnVtYmVyKDApLCBtX3NpemVFc3RpbWF0ZShr
T3ZlcmhlYWRTaXplKSB7IH0KLSAgICBJREJLZXkoVHlwZSB0eXBlLCBkb3VibGUgbnVtYmVyKSA6
IG1fdHlwZSh0eXBlKSwgbV9udW1iZXIobnVtYmVyKSwgbV9zaXplRXN0aW1hdGUoa092ZXJoZWFk
U2l6ZSArIHNpemVvZihkb3VibGUpKSB7IH0KLSAgICBleHBsaWNpdCBJREJLZXkoY29uc3QgU3Ry
aW5nJiB2YWx1ZSkgOiBtX3R5cGUoU3RyaW5nVHlwZSksIG1fc3RyaW5nKHZhbHVlKSwgbV9udW1i
ZXIoMCksIG1fc2l6ZUVzdGltYXRlKGtPdmVyaGVhZFNpemUgKyB2YWx1ZS5sZW5ndGgoKSAqIHNp
emVvZihVQ2hhcikpIHsgfQotICAgIElEQktleShjb25zdCBLZXlBcnJheSYga2V5QXJyYXksIHNp
emVfdCBhcnJheVNpemUpIDogbV90eXBlKEFycmF5VHlwZSksIG1fYXJyYXkoa2V5QXJyYXkpLCBt
X251bWJlcigwKSwgbV9zaXplRXN0aW1hdGUoa092ZXJoZWFkU2l6ZSArIGFycmF5U2l6ZSkgeyB9
CisgICAgSURCS2V5KCkgOiBtX3R5cGUoSW52YWxpZFR5cGUpLCBtX251bWJlcigwKSwgbV9zaXpl
RXN0aW1hdGUoT3ZlcmhlYWRTaXplKSB7IH0KKyAgICBJREJLZXkoVHlwZSB0eXBlLCBkb3VibGUg
bnVtYmVyKSA6IG1fdHlwZSh0eXBlKSwgbV9udW1iZXIobnVtYmVyKSwgbV9zaXplRXN0aW1hdGUo
T3ZlcmhlYWRTaXplICsgc2l6ZW9mKGRvdWJsZSkpIHsgfQorICAgIGV4cGxpY2l0IElEQktleShj
b25zdCBTdHJpbmcmIHZhbHVlKSA6IG1fdHlwZShTdHJpbmdUeXBlKSwgbV9zdHJpbmcodmFsdWUp
LCBtX251bWJlcigwKSwgbV9zaXplRXN0aW1hdGUoT3ZlcmhlYWRTaXplICsgdmFsdWUubGVuZ3Ro
KCkgKiBzaXplb2YoVUNoYXIpKSB7IH0KKyAgICBJREJLZXkoY29uc3QgS2V5QXJyYXkmIGtleUFy
cmF5LCBzaXplX3QgYXJyYXlTaXplKSA6IG1fdHlwZShBcnJheVR5cGUpLCBtX2FycmF5KGtleUFy
cmF5KSwgbV9udW1iZXIoMCksIG1fc2l6ZUVzdGltYXRlKE92ZXJoZWFkU2l6ZSArIGFycmF5U2l6
ZSkgeyB9CiAKICAgICBjb25zdCBUeXBlIG1fdHlwZTsKICAgICBjb25zdCBLZXlBcnJheSBtX2Fy
cmF5OwpAQCAtMTYxLDcgKzE2MSw3IEBAIHByaXZhdGU6CiAgICAgY29uc3Qgc2l6ZV90IG1fc2l6
ZUVzdGltYXRlOwogCiAgICAgLy8gVmVyeSByb3VnaCBlc3RpbWF0ZSBvZiBtaW5pbXVtIGtleSBz
aXplIG92ZXJoZWFkLgotICAgIGVudW0geyBrT3ZlcmhlYWRTaXplID0gMTYgfTsKKyAgICBlbnVt
IHsgT3ZlcmhlYWRTaXplID0gMTYgfTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHAKaW5k
ZXggYWI4MjkzZjBmYTQ3Y2VjMDg1OTExYTU1NDRlYWIxM2M1NGE3NDQ1OS4uYTk4MDc4ZWFiZTQ1
Mjk4ZGE2OTljNWI0ZGUxY2NlYjA2MTg4NmYxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHAKQEAg
LTIyMCw4ICsyMjAsOCBAQCB2b2lkIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmdldERhdGFiYXNl
TmFtZXMoVmVjdG9yPFN0cmluZz4mIGZvdW5kTmFtZXMpCiAKICAgICBPd25QdHI8TGV2ZWxEQkl0
ZXJhdG9yPiBpdCA9IG1fZGItPmNyZWF0ZUl0ZXJhdG9yKCk7CiAgICAgZm9yIChpdC0+c2Vlayhz
dGFydEtleSk7IGl0LT5pc1ZhbGlkKCkgJiYgY29tcGFyZUtleXMoaXQtPmtleSgpLCBzdG9wS2V5
KSA8IDA7IGl0LT5uZXh0KCkpIHsKLSAgICAgICAgY29uc3QgY2hhciAqcCA9IGl0LT5rZXkoKS5i
ZWdpbigpOwotICAgICAgICBjb25zdCBjaGFyICpsaW1pdCA9IGl0LT5rZXkoKS5lbmQoKTsKKyAg
ICAgICAgY29uc3QgY2hhciogcCA9IGl0LT5rZXkoKS5iZWdpbigpOworICAgICAgICBjb25zdCBj
aGFyKiBsaW1pdCA9IGl0LT5rZXkoKS5lbmQoKTsKIAogICAgICAgICBEYXRhYmFzZU5hbWVLZXkg
ZGF0YWJhc2VOYW1lS2V5OwogICAgICAgICBwID0gRGF0YWJhc2VOYW1lS2V5OjpkZWNvZGUocCwg
bGltaXQsICZkYXRhYmFzZU5hbWVLZXkpOwpAQCAtMjM5LDcgKzIzOSw3IEBAIGJvb2wgSURCTGV2
ZWxEQkJhY2tpbmdTdG9yZTo6Z2V0SURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5h
bWUsIFN0cmluZyYKICAgICBpZiAoIW9rKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBv
ayA9IGdldFN0cmluZyhtX2RiLmdldCgpLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjplbmNvZGUoZm91
bmRJZCwgRGF0YWJhc2VNZXRhRGF0YUtleTo6a1VzZXJWZXJzaW9uKSwgZm91bmRWZXJzaW9uKTsK
KyAgICBvayA9IGdldFN0cmluZyhtX2RiLmdldCgpLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjplbmNv
ZGUoZm91bmRJZCwgRGF0YWJhc2VNZXRhRGF0YUtleTo6VXNlclZlcnNpb24pLCBmb3VuZFZlcnNp
b24pOwogICAgIGlmICghb2spCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMjcwLDcgKzI3
MCw3IEBAIGJvb2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSURCRGF0YWJhc2VNZXRh
RGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0CiAgICAgY29uc3QgVmVjdG9yPGNoYXI+IGtl
eSA9IERhdGFiYXNlTmFtZUtleTo6ZW5jb2RlKG1faWRlbnRpZmllciwgbmFtZSk7CiAgICAgaWYg
KCFwdXRJbnQobV9kYi5nZXQoKSwga2V5LCByb3dJZCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICBpZiAoIXB1dFN0cmluZyhtX2RiLmdldCgpLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjplbmNv
ZGUocm93SWQsIERhdGFiYXNlTWV0YURhdGFLZXk6OmtVc2VyVmVyc2lvbiksIHZlcnNpb24pKQor
ICAgIGlmICghcHV0U3RyaW5nKG1fZGIuZ2V0KCksIERhdGFiYXNlTWV0YURhdGFLZXk6OmVuY29k
ZShyb3dJZCwgRGF0YWJhc2VNZXRhRGF0YUtleTo6VXNlclZlcnNpb24pLCB2ZXJzaW9uKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMjc4LDcgKzI3OCw3
IEBAIGJvb2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSURCRGF0YWJhc2VNZXRhRGF0
YShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0CiBib29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6
OnVwZGF0ZUlEQkRhdGFiYXNlTWV0YURhdGEoaW50NjRfdCByb3dJZCwgY29uc3QgU3RyaW5nJiB2
ZXJzaW9uKQogewogICAgIEFTU0VSVChtX2N1cnJlbnRUcmFuc2FjdGlvbik7Ci0gICAgaWYgKCFw
dXRTdHJpbmcobV9jdXJyZW50VHJhbnNhY3Rpb24uZ2V0KCksIERhdGFiYXNlTWV0YURhdGFLZXk6
OmVuY29kZShyb3dJZCwgRGF0YWJhc2VNZXRhRGF0YUtleTo6a1VzZXJWZXJzaW9uKSwgdmVyc2lv
bikpCisgICAgaWYgKCFwdXRTdHJpbmcobV9jdXJyZW50VHJhbnNhY3Rpb24uZ2V0KCksIERhdGFi
YXNlTWV0YURhdGFLZXk6OmVuY29kZShyb3dJZCwgRGF0YWJhc2VNZXRhRGF0YUtleTo6VXNlclZl
cnNpb24pLCB2ZXJzaW9uKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIHRy
dWU7CkBAIC0zMDcsOCArMzA3LDggQEAgYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpkZWxl
dGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KIAotICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBzdGFydEtleSA9IERhdGFiYXNlTWV0YURhdGFL
ZXk6OmVuY29kZShkYXRhYmFzZUlkLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjprT3JpZ2luTmFtZSk7
Ci0gICAgY29uc3QgVmVjdG9yPGNoYXI+IHN0b3BLZXkgPSBEYXRhYmFzZU1ldGFEYXRhS2V5Ojpl
bmNvZGUoZGF0YWJhc2VJZCArIDEsIERhdGFiYXNlTWV0YURhdGFLZXk6OmtPcmlnaW5OYW1lKTsK
KyAgICBjb25zdCBWZWN0b3I8Y2hhcj4gc3RhcnRLZXkgPSBEYXRhYmFzZU1ldGFEYXRhS2V5Ojpl
bmNvZGUoZGF0YWJhc2VJZCwgRGF0YWJhc2VNZXRhRGF0YUtleTo6T3JpZ2luTmFtZSk7CisgICAg
Y29uc3QgVmVjdG9yPGNoYXI+IHN0b3BLZXkgPSBEYXRhYmFzZU1ldGFEYXRhS2V5OjplbmNvZGUo
ZGF0YWJhc2VJZCArIDEsIERhdGFiYXNlTWV0YURhdGFLZXk6Ok9yaWdpbk5hbWUpOwogICAgIGlm
ICghZGVsZXRlUmFuZ2UodHJhbnNhY3Rpb24uZ2V0KCksIHN0YXJ0S2V5LCBzdG9wS2V5KSkgewog
ICAgICAgICB0cmFuc2FjdGlvbi0+cm9sbGJhY2soKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtMzQ4LDEzICszNDgsMTMgQEAgdm9pZCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpnZXRPYmpl
Y3RTdG9yZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBWZWN0b3I8aW50NjRfdD4KICAgICBPd25QdHI8
TGV2ZWxEQkl0ZXJhdG9yPiBpdCA9IG1fZGItPmNyZWF0ZUl0ZXJhdG9yKCk7CiAgICAgaXQtPnNl
ZWsoc3RhcnRLZXkpOwogICAgIHdoaWxlIChpdC0+aXNWYWxpZCgpICYmIGNvbXBhcmVLZXlzKGl0
LT5rZXkoKSwgc3RvcEtleSkgPCAwKSB7Ci0gICAgICAgIGNvbnN0IGNoYXIgKnAgPSBpdC0+a2V5
KCkuYmVnaW4oKTsKLSAgICAgICAgY29uc3QgY2hhciAqbGltaXQgPSBpdC0+a2V5KCkuZW5kKCk7
CisgICAgICAgIGNvbnN0IGNoYXIqIHAgPSBpdC0+a2V5KCkuYmVnaW4oKTsKKyAgICAgICAgY29u
c3QgY2hhciogbGltaXQgPSBpdC0+a2V5KCkuZW5kKCk7CiAKICAgICAgICAgT2JqZWN0U3RvcmVN
ZXRhRGF0YUtleSBtZXRhRGF0YUtleTsKICAgICAgICAgcCA9IE9iamVjdFN0b3JlTWV0YURhdGFL
ZXk6OmRlY29kZShwLCBsaW1pdCwgJm1ldGFEYXRhS2V5KTsKICAgICAgICAgQVNTRVJUKHApOwot
ICAgICAgICBpZiAobWV0YURhdGFLZXkubWV0YURhdGFUeXBlKCkgIT0gT2JqZWN0U3RvcmVNZXRh
RGF0YUtleTo6a05hbWUpIHsKKyAgICAgICAgaWYgKG1ldGFEYXRhS2V5Lm1ldGFEYXRhVHlwZSgp
ICE9IE9iamVjdFN0b3JlTWV0YURhdGFLZXk6Ok5hbWUpIHsKICAgICAgICAgICAgIExPR19FUlJP
UigiSW50ZXJuYWwgSW5kZXhlZCBEQiBlcnJvci4iKTsKICAgICAgICAgICAgIC8vIFBvc3NpYmxl
IHN0YWxlIG1ldGFkYXRhLCBidXQgZG9uJ3QgZmFpbCB0aGUgbG9hZC4KICAgICAgICAgICAgIGl0
LT5uZXh0KCk7CkBAIC0zNjcsMzkgKzM2NywzOSBAQCB2b2lkIElEQkxldmVsREJCYWNraW5nU3Rv
cmU6OmdldE9iamVjdFN0b3JlcyhpbnQ2NF90IGRhdGFiYXNlSWQsIFZlY3RvcjxpbnQ2NF90Pgog
ICAgICAgICBTdHJpbmcgb2JqZWN0U3RvcmVOYW1lID0gZGVjb2RlU3RyaW5nKGl0LT52YWx1ZSgp
LmJlZ2luKCksIGl0LT52YWx1ZSgpLmVuZCgpKTsKIAogICAgICAgICBpdC0+bmV4dCgpOwotICAg
ICAgICBpZiAoIWNoZWNrT2JqZWN0U3RvcmVBbmRNZXRhRGF0YVR5cGUoaXQuZ2V0KCksIHN0b3BL
ZXksIG9iamVjdFN0b3JlSWQsIE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmtLZXlQYXRoKSkgewor
ICAgICAgICBpZiAoIWNoZWNrT2JqZWN0U3RvcmVBbmRNZXRhRGF0YVR5cGUoaXQuZ2V0KCksIHN0
b3BLZXksIG9iamVjdFN0b3JlSWQsIE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OktleVBhdGgpKSB7
CiAgICAgICAgICAgICBMT0dfRVJST1IoIkludGVybmFsIEluZGV4ZWQgREIgZXJyb3IuIik7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgSURCS2V5UGF0aCBrZXlQYXRo
ID0gZGVjb2RlSURCS2V5UGF0aChpdC0+dmFsdWUoKS5iZWdpbigpLCBpdC0+dmFsdWUoKS5lbmQo
KSk7CiAKICAgICAgICAgaXQtPm5leHQoKTsKLSAgICAgICAgaWYgKCFjaGVja09iamVjdFN0b3Jl
QW5kTWV0YURhdGFUeXBlKGl0LmdldCgpLCBzdG9wS2V5LCBvYmplY3RTdG9yZUlkLCBPYmplY3RT
dG9yZU1ldGFEYXRhS2V5OjprQXV0b0luY3JlbWVudCkpIHsKKyAgICAgICAgaWYgKCFjaGVja09i
amVjdFN0b3JlQW5kTWV0YURhdGFUeXBlKGl0LmdldCgpLCBzdG9wS2V5LCBvYmplY3RTdG9yZUlk
LCBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjpBdXRvSW5jcmVtZW50KSkgewogICAgICAgICAgICAg
TE9HX0VSUk9SKCJJbnRlcm5hbCBJbmRleGVkIERCIGVycm9yLiIpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAgICAgICAgIGJvb2wgYXV0b0luY3JlbWVudCA9IGRlY29kZUJvb2wo
aXQtPnZhbHVlKCkuYmVnaW4oKSwgaXQtPnZhbHVlKCkuZW5kKCkpOwogCiAgICAgICAgIGl0LT5u
ZXh0KCk7IC8vIElzIGV2aWNhdGJsZS4KLSAgICAgICAgaWYgKCFjaGVja09iamVjdFN0b3JlQW5k
TWV0YURhdGFUeXBlKGl0LmdldCgpLCBzdG9wS2V5LCBvYmplY3RTdG9yZUlkLCBPYmplY3RTdG9y
ZU1ldGFEYXRhS2V5OjprRXZpY3RhYmxlKSkgeworICAgICAgICBpZiAoIWNoZWNrT2JqZWN0U3Rv
cmVBbmRNZXRhRGF0YVR5cGUoaXQuZ2V0KCksIHN0b3BLZXksIG9iamVjdFN0b3JlSWQsIE9iamVj
dFN0b3JlTWV0YURhdGFLZXk6OkV2aWN0YWJsZSkpIHsKICAgICAgICAgICAgIExPR19FUlJPUigi
SW50ZXJuYWwgSW5kZXhlZCBEQiBlcnJvci4iKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCiAgICAgICAgIGl0LT5uZXh0KCk7IC8vIExhc3QgdmVyc2lvbi4KLSAgICAgICAgaWYg
KCFjaGVja09iamVjdFN0b3JlQW5kTWV0YURhdGFUeXBlKGl0LmdldCgpLCBzdG9wS2V5LCBvYmpl
Y3RTdG9yZUlkLCBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjprTGFzdFZlcnNpb24pKSB7CisgICAg
ICAgIGlmICghY2hlY2tPYmplY3RTdG9yZUFuZE1ldGFEYXRhVHlwZShpdC5nZXQoKSwgc3RvcEtl
eSwgb2JqZWN0U3RvcmVJZCwgT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6TGFzdFZlcnNpb24pKSB7
CiAgICAgICAgICAgICBMT0dfRVJST1IoIkludGVybmFsIEluZGV4ZWQgREIgZXJyb3IuIik7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBpdC0+bmV4dCgpOyAvLyBN
YXhpbXVtIGluZGV4IGlkIGFsbG9jYXRlZC4KLSAgICAgICAgaWYgKCFjaGVja09iamVjdFN0b3Jl
QW5kTWV0YURhdGFUeXBlKGl0LmdldCgpLCBzdG9wS2V5LCBvYmplY3RTdG9yZUlkLCBPYmplY3RT
dG9yZU1ldGFEYXRhS2V5OjprTWF4SW5kZXhJZCkpIHsKKyAgICAgICAgaWYgKCFjaGVja09iamVj
dFN0b3JlQW5kTWV0YURhdGFUeXBlKGl0LmdldCgpLCBzdG9wS2V5LCBvYmplY3RTdG9yZUlkLCBP
YmplY3RTdG9yZU1ldGFEYXRhS2V5OjpNYXhJbmRleElkKSkgewogICAgICAgICAgICAgTE9HX0VS
Uk9SKCJJbnRlcm5hbCBJbmRleGVkIERCIGVycm9yLiIpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKICAgICAgICAgaXQtPm5leHQoKTsgLy8gW29wdGlvbmFsXSBoYXMga2V5IHBh
dGggKGlzIG5vdCBudWxsKQotICAgICAgICBpZiAoY2hlY2tPYmplY3RTdG9yZUFuZE1ldGFEYXRh
VHlwZShpdC5nZXQoKSwgc3RvcEtleSwgb2JqZWN0U3RvcmVJZCwgT2JqZWN0U3RvcmVNZXRhRGF0
YUtleTo6a0hhc0tleVBhdGgpKSB7CisgICAgICAgIGlmIChjaGVja09iamVjdFN0b3JlQW5kTWV0
YURhdGFUeXBlKGl0LmdldCgpLCBzdG9wS2V5LCBvYmplY3RTdG9yZUlkLCBPYmplY3RTdG9yZU1l
dGFEYXRhS2V5OjpIYXNLZXlQYXRoKSkgewogICAgICAgICAgICAgYm9vbCBoYXNLZXlQYXRoID0g
ZGVjb2RlQm9vbChpdC0+dmFsdWUoKS5iZWdpbigpLCBpdC0+dmFsdWUoKS5lbmQoKSk7CiAgICAg
ICAgICAgICAvLyBUaGlzIGNoZWNrIGFjY291bnRzIGZvciB0d28gbGF5ZXJzIG9mIGxlZ2FjeSBj
b2Rpbmc6CiAgICAgICAgICAgICAvLyAoMSkgSW5pdGlhbGx5LCBoYXNLZXlQYXRoIHdhcyBhZGRl
ZCB0byBkaXN0aW5ndWlzaCBudWxsIHZzLiBzdHJpbmcuCkBAIC00MjQsNyArNDI0LDcgQEAgdm9p
ZCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpnZXRPYmplY3RTdG9yZXMoaW50NjRfdCBkYXRhYmFz
ZUlkLCBWZWN0b3I8aW50NjRfdD4KIHN0YXRpYyBpbnQ2NF90IGdldE5ld09iamVjdFN0b3JlSWQo
TGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkKQogewog
ICAgIGludDY0X3QgbWF4T2JqZWN0U3RvcmVJZCA9IC0xOwotICAgIGNvbnN0IFZlY3RvcjxjaGFy
PiBtYXhPYmplY3RTdG9yZUlkS2V5ID0gRGF0YWJhc2VNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFi
YXNlSWQsIERhdGFiYXNlTWV0YURhdGFLZXk6OmtNYXhPYmplY3RTdG9yZUlkKTsKKyAgICBjb25z
dCBWZWN0b3I8Y2hhcj4gbWF4T2JqZWN0U3RvcmVJZEtleSA9IERhdGFiYXNlTWV0YURhdGFLZXk6
OmVuY29kZShkYXRhYmFzZUlkLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjpNYXhPYmplY3RTdG9yZUlk
KTsKICAgICBpZiAoIWdldEludCh0cmFuc2FjdGlvbiwgbWF4T2JqZWN0U3RvcmVJZEtleSwgbWF4
T2JqZWN0U3RvcmVJZCkpCiAgICAgICAgIG1heE9iamVjdFN0b3JlSWQgPSAwOwogCkBAIC00NDQs
MTMgKzQ0NCwxMyBAQCBib29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVjdFN0
b3JlKGludDY0X3QgZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5nJgogICAgIGlmIChvYmplY3RTdG9y
ZUlkIDwgMCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgY29uc3QgVmVjdG9yPGNoYXI+
IG5hbWVLZXkgPSBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2Jq
ZWN0U3RvcmVJZCwgT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6a05hbWUpOwotICAgIGNvbnN0IFZl
Y3RvcjxjaGFyPiBrZXlQYXRoS2V5ID0gT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6ZW5jb2RlKGRh
dGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmtLZXlQYXRo
KTsKLSAgICBjb25zdCBWZWN0b3I8Y2hhcj4gYXV0b0luY3JlbWVudEtleSA9IE9iamVjdFN0b3Jl
TWV0YURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBPYmplY3RTdG9y
ZU1ldGFEYXRhS2V5OjprQXV0b0luY3JlbWVudCk7Ci0gICAgY29uc3QgVmVjdG9yPGNoYXI+IGV2
aWN0YWJsZUtleSA9IE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBv
YmplY3RTdG9yZUlkLCBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjprRXZpY3RhYmxlKTsKLSAgICBj
b25zdCBWZWN0b3I8Y2hhcj4gbGFzdFZlcnNpb25LZXkgPSBPYmplY3RTdG9yZU1ldGFEYXRhS2V5
OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgT2JqZWN0U3RvcmVNZXRhRGF0YUtl
eTo6a0xhc3RWZXJzaW9uKTsKLSAgICBjb25zdCBWZWN0b3I8Y2hhcj4gbWF4SW5kZXhJZEtleSA9
IE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlk
LCBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjprTWF4SW5kZXhJZCk7Ci0gICAgY29uc3QgVmVjdG9y
PGNoYXI+IGhhc0tleVBhdGhLZXkgID0gT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6ZW5jb2RlKGRh
dGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmtIYXNLZXlQ
YXRoKTsKKyAgICBjb25zdCBWZWN0b3I8Y2hhcj4gbmFtZUtleSA9IE9iamVjdFN0b3JlTWV0YURh
dGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBPYmplY3RTdG9yZU1ldGFE
YXRhS2V5OjpOYW1lKTsKKyAgICBjb25zdCBWZWN0b3I8Y2hhcj4ga2V5UGF0aEtleSA9IE9iamVj
dFN0b3JlTWV0YURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBPYmpl
Y3RTdG9yZU1ldGFEYXRhS2V5OjpLZXlQYXRoKTsKKyAgICBjb25zdCBWZWN0b3I8Y2hhcj4gYXV0
b0luY3JlbWVudEtleSA9IE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlk
LCBvYmplY3RTdG9yZUlkLCBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjpBdXRvSW5jcmVtZW50KTsK
KyAgICBjb25zdCBWZWN0b3I8Y2hhcj4gZXZpY3RhYmxlS2V5ID0gT2JqZWN0U3RvcmVNZXRhRGF0
YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIE9iamVjdFN0b3JlTWV0YURh
dGFLZXk6OkV2aWN0YWJsZSk7CisgICAgY29uc3QgVmVjdG9yPGNoYXI+IGxhc3RWZXJzaW9uS2V5
ID0gT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3Jl
SWQsIE9iamVjdFN0b3JlTWV0YURhdGFLZXk6Okxhc3RWZXJzaW9uKTsKKyAgICBjb25zdCBWZWN0
b3I8Y2hhcj4gbWF4SW5kZXhJZEtleSA9IE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmVuY29kZShk
YXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjpNYXhJbmRl
eElkKTsKKyAgICBjb25zdCBWZWN0b3I8Y2hhcj4gaGFzS2V5UGF0aEtleSAgPSBPYmplY3RTdG9y
ZU1ldGFEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgT2JqZWN0U3Rv
cmVNZXRhRGF0YUtleTo6SGFzS2V5UGF0aCk7CiAgICAgY29uc3QgVmVjdG9yPGNoYXI+IG5hbWVz
S2V5ID0gT2JqZWN0U3RvcmVOYW1lc0tleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG5hbWUpOwogCiAg
ICAgYm9vbCBvayA9IHB1dFN0cmluZyhtX2N1cnJlbnRUcmFuc2FjdGlvbi5nZXQoKSwgbmFtZUtl
eSwgbmFtZSk7CkBAIC00ODMsNyArNDgzLDcgQEAgYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3Jl
OjpjcmVhdGVPYmplY3RTdG9yZShpbnQ2NF90IGRhdGFiYXNlSWQsIGNvbnN0IFN0cmluZyYKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIG9rID0gcHV0SW50KG1fY3VycmVudFRy
YW5zYWN0aW9uLmdldCgpLCBtYXhJbmRleElkS2V5LCBrTWluaW11bUluZGV4SWQpOworICAgIG9r
ID0gcHV0SW50KG1fY3VycmVudFRyYW5zYWN0aW9uLmdldCgpLCBtYXhJbmRleElkS2V5LCBNaW5p
bXVtSW5kZXhJZCk7CiAgICAgaWYgKCFvaykgewogICAgICAgICBMT0dfRVJST1IoIkludGVybmFs
IEluZGV4ZWQgREIgZXJyb3IuIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTUxMSw3ICs1
MTEsNyBAQCB2b2lkIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmRlbGV0ZU9iamVjdFN0b3JlKGlu
dDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplYwogICAgIEFTU0VSVChtX2N1cnJlbnRUcmFu
c2FjdGlvbik7CiAKICAgICBTdHJpbmcgb2JqZWN0U3RvcmVOYW1lOwotICAgIGdldFN0cmluZyht
X2N1cnJlbnRUcmFuc2FjdGlvbi5nZXQoKSwgT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6ZW5jb2Rl
KGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmtOYW1l
KSwgb2JqZWN0U3RvcmVOYW1lKTsKKyAgICBnZXRTdHJpbmcobV9jdXJyZW50VHJhbnNhY3Rpb24u
Z2V0KCksIE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RT
dG9yZUlkLCBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjpOYW1lKSwgb2JqZWN0U3RvcmVOYW1lKTsK
IAogICAgIGlmICghZGVsZXRlUmFuZ2UobV9jdXJyZW50VHJhbnNhY3Rpb24uZ2V0KCksIE9iamVj
dFN0b3JlTWV0YURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCAwKSwg
T2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6ZW5jb2RlTWF4S2V5KGRhdGFiYXNlSWQsIG9iamVjdFN0
b3JlSWQpKSkKICAgICAgICAgcmV0dXJuOyAvLyBGSVhNRTogUmVwb3J0IGVycm9yLgpAQCAtNTY3
LDcgKzU2Nyw3IEBAIHByaXZhdGU6CiAKIHN0YXRpYyBpbnQ2NF90IGdldE5ld1ZlcnNpb25OdW1i
ZXIoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBp
bnQ2NF90IG9iamVjdFN0b3JlSWQpCiB7Ci0gICAgY29uc3QgVmVjdG9yPGNoYXI+IGxhc3RWZXJz
aW9uS2V5ID0gT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVj
dFN0b3JlSWQsIE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmtMYXN0VmVyc2lvbik7CisgICAgY29u
c3QgVmVjdG9yPGNoYXI+IGxhc3RWZXJzaW9uS2V5ID0gT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6
ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIE9iamVjdFN0b3JlTWV0YURhdGFLZXk6
Okxhc3RWZXJzaW9uKTsKIAogICAgIGludDY0X3QgbGFzdFZlcnNpb24gPSAtMTsKICAgICBpZiAo
IWdldEludCh0cmFuc2FjdGlvbiwgbGFzdFZlcnNpb25LZXksIGxhc3RWZXJzaW9uKSkKQEAgLTY0
OCw4ICs2NDgsOCBAQCBpbnQ2NF90IElEQkxldmVsREJCYWNraW5nU3RvcmU6Om5leHRBdXRvSW5j
cmVtZW50TnVtYmVyKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NgogICAgIC8vIFNpbmNlIGFsbCBk
YXRlcyA+IGFsbCBudW1iZXJzLCBjcmVhdGUgRGF0ZSgtSW5maW5pdHkpIGFuZCBzZWVrIGJhY2t3
YXJkcy4KIAogICAgIGZvciAoaXQtPnNlZWsoc3RhcnRLZXkpOyBpdC0+aXNWYWxpZCgpICYmIGNv
bXBhcmVLZXlzKGl0LT5rZXkoKSwgc3RvcEtleSkgPCAwOyBpdC0+bmV4dCgpKSB7Ci0gICAgICAg
IGNvbnN0IGNoYXIgKnAgPSBpdC0+a2V5KCkuYmVnaW4oKTsKLSAgICAgICAgY29uc3QgY2hhciAq
bGltaXQgPSBpdC0+a2V5KCkuZW5kKCk7CisgICAgICAgIGNvbnN0IGNoYXIqIHAgPSBpdC0+a2V5
KCkuYmVnaW4oKTsKKyAgICAgICAgY29uc3QgY2hhciogbGltaXQgPSBpdC0+a2V5KCkuZW5kKCk7
CiAKICAgICAgICAgT2JqZWN0U3RvcmVEYXRhS2V5IGRhdGFLZXk7CiAgICAgICAgIHAgPSBPYmpl
Y3RTdG9yZURhdGFLZXk6OmRlY29kZShwLCBsaW1pdCwgJmRhdGFLZXkpOwpAQCAtNjkyLDggKzY5
Miw4IEBAIGJvb2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Zm9yRWFjaE9iamVjdFN0b3JlUmVj
b3JkKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfCiAKICAgICBPd25QdHI8TGV2ZWxEQkl0ZXJh
dG9yPiBpdCA9IG1fY3VycmVudFRyYW5zYWN0aW9uLT5jcmVhdGVJdGVyYXRvcigpOwogICAgIGZv
ciAoaXQtPnNlZWsoc3RhcnRLZXkpOyBpdC0+aXNWYWxpZCgpICYmIGNvbXBhcmVLZXlzKGl0LT5r
ZXkoKSwgc3RvcEtleSkgPCAwOyBpdC0+bmV4dCgpKSB7Ci0gICAgICAgIGNvbnN0IGNoYXIgKnAg
PSBpdC0+a2V5KCkuYmVnaW4oKTsKLSAgICAgICAgY29uc3QgY2hhciAqbGltaXQgPSBpdC0+a2V5
KCkuZW5kKCk7CisgICAgICAgIGNvbnN0IGNoYXIqIHAgPSBpdC0+a2V5KCkuYmVnaW4oKTsKKyAg
ICAgICAgY29uc3QgY2hhciogbGltaXQgPSBpdC0+a2V5KCkuZW5kKCk7CiAgICAgICAgIE9iamVj
dFN0b3JlRGF0YUtleSBkYXRhS2V5OwogICAgICAgICBwID0gT2JqZWN0U3RvcmVEYXRhS2V5Ojpk
ZWNvZGUocCwgbGltaXQsICZkYXRhS2V5KTsKICAgICAgICAgQVNTRVJUKHApOwpAQCAtNzUxLDcg
Kzc1MSw3IEBAIHZvaWQgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Z2V0SW5kZXhlcyhpbnQ2NF90
IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJCiAgICAgICAgIEluZGV4TWV0YURhdGFL
ZXkgbWV0YURhdGFLZXk7CiAgICAgICAgIHAgPSBJbmRleE1ldGFEYXRhS2V5OjpkZWNvZGUocCwg
bGltaXQsICZtZXRhRGF0YUtleSk7CiAgICAgICAgIEFTU0VSVChwKTsKLSAgICAgICAgaWYgKG1l
dGFEYXRhS2V5Lm1ldGFEYXRhVHlwZSgpICE9IEluZGV4TWV0YURhdGFLZXk6OmtOYW1lKSB7Cisg
ICAgICAgIGlmIChtZXRhRGF0YUtleS5tZXRhRGF0YVR5cGUoKSAhPSBJbmRleE1ldGFEYXRhS2V5
OjpOYW1lKSB7CiAgICAgICAgICAgICBMT0dfRVJST1IoIkludGVybmFsIEluZGV4ZWQgREIgZXJy
b3IuIik7CiAgICAgICAgICAgICAvLyBQb3NzaWJsZSBzdGFsZSBtZXRhZGF0YSBkdWUgdG8gaHR0
cDovL3dlYmtpdC5vcmcvYi84NTU1NyBidXQgZG9uJ3QgZmFpbCB0aGUgbG9hZC4KICAgICAgICAg
ICAgIGl0LT5uZXh0KCk7CkBAIC03NjMsMTQgKzc2MywxNCBAQCB2b2lkIElEQkxldmVsREJCYWNr
aW5nU3RvcmU6OmdldEluZGV4ZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0
b3JlSQogICAgICAgICBTdHJpbmcgaW5kZXhOYW1lID0gZGVjb2RlU3RyaW5nKGl0LT52YWx1ZSgp
LmJlZ2luKCksIGl0LT52YWx1ZSgpLmVuZCgpKTsKIAogICAgICAgICBpdC0+bmV4dCgpOyAvLyB1
bmlxdWUgZmxhZwotICAgICAgICBpZiAoIWNoZWNrSW5kZXhBbmRNZXRhRGF0YUtleShpdC5nZXQo
KSwgc3RvcEtleSwgaW5kZXhJZCwgSW5kZXhNZXRhRGF0YUtleTo6a1VuaXF1ZSkpIHsKKyAgICAg
ICAgaWYgKCFjaGVja0luZGV4QW5kTWV0YURhdGFLZXkoaXQuZ2V0KCksIHN0b3BLZXksIGluZGV4
SWQsIEluZGV4TWV0YURhdGFLZXk6OlVuaXF1ZSkpIHsKICAgICAgICAgICAgIExPR19FUlJPUigi
SW50ZXJuYWwgSW5kZXhlZCBEQiBlcnJvci4iKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogICAgICAgICBib29sIGluZGV4VW5pcXVlID0gZGVjb2RlQm9vbChpdC0+dmFsdWUoKS5i
ZWdpbigpLCBpdC0+dmFsdWUoKS5lbmQoKSk7CiAKICAgICAgICAgaXQtPm5leHQoKTsgLy8ga2V5
UGF0aAotICAgICAgICBpZiAoIWNoZWNrSW5kZXhBbmRNZXRhRGF0YUtleShpdC5nZXQoKSwgc3Rv
cEtleSwgaW5kZXhJZCwgSW5kZXhNZXRhRGF0YUtleTo6a0tleVBhdGgpKSB7CisgICAgICAgIGlm
ICghY2hlY2tJbmRleEFuZE1ldGFEYXRhS2V5KGl0LmdldCgpLCBzdG9wS2V5LCBpbmRleElkLCBJ
bmRleE1ldGFEYXRhS2V5OjpLZXlQYXRoKSkgewogICAgICAgICAgICAgTE9HX0VSUk9SKCJJbnRl
cm5hbCBJbmRleGVkIERCIGVycm9yLiIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CkBAIC03NzgsNyArNzc4LDcgQEAgdm9pZCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpnZXRJbmRl
eGVzKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUkKIAogICAgICAgICBp
dC0+bmV4dCgpOyAvLyBbb3B0aW9uYWxdIG11bHRpRW50cnkgZmxhZwogICAgICAgICBib29sIGlu
ZGV4TXVsdGlFbnRyeSA9IGZhbHNlOwotICAgICAgICBpZiAoY2hlY2tJbmRleEFuZE1ldGFEYXRh
S2V5KGl0LmdldCgpLCBzdG9wS2V5LCBpbmRleElkLCBJbmRleE1ldGFEYXRhS2V5OjprTXVsdGlF
bnRyeSkpIHsKKyAgICAgICAgaWYgKGNoZWNrSW5kZXhBbmRNZXRhRGF0YUtleShpdC5nZXQoKSwg
c3RvcEtleSwgaW5kZXhJZCwgSW5kZXhNZXRhRGF0YUtleTo6TXVsdGlFbnRyeSkpIHsKICAgICAg
ICAgICAgIGluZGV4TXVsdGlFbnRyeSA9IGRlY29kZUJvb2woaXQtPnZhbHVlKCkuYmVnaW4oKSwg
aXQtPnZhbHVlKCkuZW5kKCkpOwogICAgICAgICAgICAgaXQtPm5leHQoKTsKICAgICAgICAgfQpA
QCAtNzk0LDkgKzc5NCw5IEBAIHZvaWQgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Z2V0SW5kZXhl
cyhpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJCiBzdGF0aWMgaW50NjRf
dCBnZXROZXdJbmRleElkKExldmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3Qg
ZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKQogewogICAgIGludDY0X3QgbWF4SW5k
ZXhJZCA9IC0xOwotICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBtYXhJbmRleElkS2V5ID0gT2JqZWN0
U3RvcmVNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIE9iamVj
dFN0b3JlTWV0YURhdGFLZXk6OmtNYXhJbmRleElkKTsKKyAgICBjb25zdCBWZWN0b3I8Y2hhcj4g
bWF4SW5kZXhJZEtleSA9IE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlk
LCBvYmplY3RTdG9yZUlkLCBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjpNYXhJbmRleElkKTsKICAg
ICBpZiAoIWdldEludCh0cmFuc2FjdGlvbiwgbWF4SW5kZXhJZEtleSwgbWF4SW5kZXhJZCkpCi0g
ICAgICAgIG1heEluZGV4SWQgPSBrTWluaW11bUluZGV4SWQ7CisgICAgICAgIG1heEluZGV4SWQg
PSBNaW5pbXVtSW5kZXhJZDsKIAogICAgIEFTU0VSVChtYXhJbmRleElkID49IDApOwogCkBAIC04
MTQsMTAgKzgxNCwxMCBAQCBib29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmNyZWF0ZUluZGV4
KGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZQogICAgIGlmIChpbmRleElk
IDwgMCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgY29uc3QgVmVjdG9yPGNoYXI+IG5h
bWVLZXkgPSBJbmRleE1ldGFEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJ
ZCwgaW5kZXhJZCwgSW5kZXhNZXRhRGF0YUtleTo6a05hbWUpOwotICAgIGNvbnN0IFZlY3Rvcjxj
aGFyPiB1bmlxdWVLZXkgPSBJbmRleE1ldGFEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2Jq
ZWN0U3RvcmVJZCwgaW5kZXhJZCwgSW5kZXhNZXRhRGF0YUtleTo6a1VuaXF1ZSk7Ci0gICAgY29u
c3QgVmVjdG9yPGNoYXI+IGtleVBhdGhLZXkgPSBJbmRleE1ldGFEYXRhS2V5OjplbmNvZGUoZGF0
YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwgSW5kZXhNZXRhRGF0YUtleTo6a0tleVBh
dGgpOwotICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBtdWx0aUVudHJ5S2V5ID0gSW5kZXhNZXRhRGF0
YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQsIEluZGV4TWV0
YURhdGFLZXk6OmtNdWx0aUVudHJ5KTsKKyAgICBjb25zdCBWZWN0b3I8Y2hhcj4gbmFtZUtleSA9
IEluZGV4TWV0YURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRl
eElkLCBJbmRleE1ldGFEYXRhS2V5OjpOYW1lKTsKKyAgICBjb25zdCBWZWN0b3I8Y2hhcj4gdW5p
cXVlS2V5ID0gSW5kZXhNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3Jl
SWQsIGluZGV4SWQsIEluZGV4TWV0YURhdGFLZXk6OlVuaXF1ZSk7CisgICAgY29uc3QgVmVjdG9y
PGNoYXI+IGtleVBhdGhLZXkgPSBJbmRleE1ldGFEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwg
b2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwgSW5kZXhNZXRhRGF0YUtleTo6S2V5UGF0aCk7CisgICAg
Y29uc3QgVmVjdG9yPGNoYXI+IG11bHRpRW50cnlLZXkgPSBJbmRleE1ldGFEYXRhS2V5OjplbmNv
ZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwgSW5kZXhNZXRhRGF0YUtleTo6
TXVsdGlFbnRyeSk7CiAKICAgICBib29sIG9rID0gcHV0U3RyaW5nKG1fY3VycmVudFRyYW5zYWN0
aW9uLmdldCgpLCBuYW1lS2V5LCBuYW1lKTsKICAgICBpZiAoIW9rKSB7CkBAIC04NzAsNyArODcw
LDcgQEAgdm9pZCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpkZWxldGVJbmRleChpbnQ2NF90IGRh
dGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmUKIGJvb2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9y
ZTo6cHV0SW5kZXhEYXRhRm9yUmVjb3JkKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmpl
Y3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleSYga2V5LCBjb25zdCBPYmpl
Y3RTdG9yZVJlY29yZElkZW50aWZpZXIqIHJlY29yZElkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJU
KGtleS5pc1ZhbGlkKCkpOwotICAgIEFTU0VSVChpbmRleElkID49IGtNaW5pbXVtSW5kZXhJZCk7
CisgICAgQVNTRVJUKGluZGV4SWQgPj0gTWluaW11bUluZGV4SWQpOwogICAgIGNvbnN0IExldmVs
REJSZWNvcmRJZGVudGlmaWVyKiBsZXZlbERCUmVjb3JkSWRlbnRpZmllciA9IHN0YXRpY19jYXN0
PGNvbnN0IExldmVsREJSZWNvcmRJZGVudGlmaWVyKj4ocmVjb3JkSWRlbnRpZmllcik7CiAKICAg
ICBBU1NFUlQobV9jdXJyZW50VHJhbnNhY3Rpb24pOwpAQCAtMTM3MiwxNiArMTM3MiwxNiBAQCBw
cml2YXRlOgogCiBib29sIEluZGV4Q3Vyc29ySW1wbDo6bG9hZEN1cnJlbnRSb3coKQogewotICAg
IGNvbnN0IGNoYXIgKnAgPSBtX2l0ZXJhdG9yLT5rZXkoKS5iZWdpbigpOwotICAgIGNvbnN0IGNo
YXIgKmxpbWl0ID0gbV9pdGVyYXRvci0+a2V5KCkuZW5kKCk7CisgICAgY29uc3QgY2hhciogcCA9
IG1faXRlcmF0b3ItPmtleSgpLmJlZ2luKCk7CisgICAgY29uc3QgY2hhciogbGltaXQgPSBtX2l0
ZXJhdG9yLT5rZXkoKS5lbmQoKTsKIAogICAgIEluZGV4RGF0YUtleSBpbmRleERhdGFLZXk7CiAg
ICAgcCA9IEluZGV4RGF0YUtleTo6ZGVjb2RlKHAsIGxpbWl0LCAmaW5kZXhEYXRhS2V5KTsKIAog
ICAgIG1fY3VycmVudEtleSA9IGluZGV4RGF0YUtleS51c2VyS2V5KCk7CiAKLSAgICBjb25zdCBj
aGFyICpxID0gbV9pdGVyYXRvci0+dmFsdWUoKS5iZWdpbigpOwotICAgIGNvbnN0IGNoYXIgKnZh
bHVlTGltaXQgPSBtX2l0ZXJhdG9yLT52YWx1ZSgpLmVuZCgpOworICAgIGNvbnN0IGNoYXIqIHEg
PSBtX2l0ZXJhdG9yLT52YWx1ZSgpLmJlZ2luKCk7CisgICAgY29uc3QgY2hhciogdmFsdWVMaW1p
dCA9IG1faXRlcmF0b3ItPnZhbHVlKCkuZW5kKCk7CiAKICAgICBpbnQ2NF90IGluZGV4RGF0YVZl
cnNpb247CiAgICAgcSA9IGRlY29kZVZhckludChxLCB2YWx1ZUxpbWl0LCBpbmRleERhdGFWZXJz
aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxl
dmVsREJDb2RpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2
ZWxEQkNvZGluZy5jcHAKaW5kZXggMTgzNjM3NzIxZjBiMTI3M2ZmMDFmODdhMDIzMzZiMGY3MTJi
YWZiNy4uYTZjMDM1YWNkMjQzZDUxYzAwODYyMmQ1MzczNzIzYzk3ODA0MzYxMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5j
cHAKQEAgLTEzNiwzMyArMTM2LDMzIEBAIG5hbWVzcGFjZSBJREJMZXZlbERCQ29kaW5nIHsKICNk
ZWZpbmUgSU5UMzJfTUFYIDB4N2ZmZmZmZmZMCiAjZW5kaWYKIAotc3RhdGljIGNvbnN0IHVuc2ln
bmVkIGNoYXIga0lEQktleU51bGxUeXBlQnl0ZSA9IDA7Ci1zdGF0aWMgY29uc3QgdW5zaWduZWQg
Y2hhciBrSURCS2V5U3RyaW5nVHlwZUJ5dGUgPSAxOwotc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNo
YXIga0lEQktleURhdGVUeXBlQnl0ZSA9IDI7Ci1zdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBr
SURCS2V5TnVtYmVyVHlwZUJ5dGUgPSAzOwotc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIga0lE
QktleUFycmF5VHlwZUJ5dGUgPSA0Owotc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIga0lEQktl
eU1pbktleVR5cGVCeXRlID0gNTsKLQotc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIga0lEQktl
eVBhdGhUeXBlQ29kZWRCeXRlMSA9IDA7Ci1zdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBrSURC
S2V5UGF0aFR5cGVDb2RlZEJ5dGUyID0gMDsKLQotc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIg
a09iamVjdFN0b3JlRGF0YUluZGV4SWQgPSAxOwotc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIg
a0V4aXN0c0VudHJ5SW5kZXhJZCA9IDI7Ci0KLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGtT
Y2hlbWFWZXJzaW9uVHlwZUJ5dGUgPSAwOwotc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIga01h
eERhdGFiYXNlSWRUeXBlQnl0ZSA9IDE7Ci1zdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBrRGF0
YWJhc2VGcmVlTGlzdFR5cGVCeXRlID0gMTAwOwotc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIg
a0RhdGFiYXNlTmFtZVR5cGVCeXRlID0gMjAxOwotCi1zdGF0aWMgY29uc3QgdW5zaWduZWQgY2hh
ciBrT2JqZWN0U3RvcmVNZXRhRGF0YVR5cGVCeXRlID0gNTA7Ci1zdGF0aWMgY29uc3QgdW5zaWdu
ZWQgY2hhciBrSW5kZXhNZXRhRGF0YVR5cGVCeXRlID0gMTAwOwotc3RhdGljIGNvbnN0IHVuc2ln
bmVkIGNoYXIga09iamVjdFN0b3JlRnJlZUxpc3RUeXBlQnl0ZSA9IDE1MDsKLXN0YXRpYyBjb25z
dCB1bnNpZ25lZCBjaGFyIGtJbmRleEZyZWVMaXN0VHlwZUJ5dGUgPSAxNTE7Ci1zdGF0aWMgY29u
c3QgdW5zaWduZWQgY2hhciBrT2JqZWN0U3RvcmVOYW1lc1R5cGVCeXRlID0gMjAwOwotc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIGNoYXIga0luZGV4TmFtZXNLZXlUeXBlQnl0ZSA9IDIwMTsKLQotc3Rh
dGljIGNvbnN0IGludDY0X3Qga09iamVjdE1ldGFEYXRhVHlwZU1heGltdW0gPSBJTlQ2NF9NQVg7
Ci1zdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBrSW5kZXhNZXRhRGF0YVR5cGVNYXhpbXVtID0g
MjU1Oworc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgSURCS2V5TnVsbFR5cGVCeXRlID0gMDsK
K3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIElEQktleVN0cmluZ1R5cGVCeXRlID0gMTsKK3N0
YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIElEQktleURhdGVUeXBlQnl0ZSA9IDI7CitzdGF0aWMg
Y29uc3QgdW5zaWduZWQgY2hhciBJREJLZXlOdW1iZXJUeXBlQnl0ZSA9IDM7CitzdGF0aWMgY29u
c3QgdW5zaWduZWQgY2hhciBJREJLZXlBcnJheVR5cGVCeXRlID0gNDsKK3N0YXRpYyBjb25zdCB1
bnNpZ25lZCBjaGFyIElEQktleU1pbktleVR5cGVCeXRlID0gNTsKKworc3RhdGljIGNvbnN0IHVu
c2lnbmVkIGNoYXIgSURCS2V5UGF0aFR5cGVDb2RlZEJ5dGUxID0gMDsKK3N0YXRpYyBjb25zdCB1
bnNpZ25lZCBjaGFyIElEQktleVBhdGhUeXBlQ29kZWRCeXRlMiA9IDA7CisKK3N0YXRpYyBjb25z
dCB1bnNpZ25lZCBjaGFyIE9iamVjdFN0b3JlRGF0YUluZGV4SWQgPSAxOworc3RhdGljIGNvbnN0
IHVuc2lnbmVkIGNoYXIgRXhpc3RzRW50cnlJbmRleElkID0gMjsKKworc3RhdGljIGNvbnN0IHVu
c2lnbmVkIGNoYXIgU2NoZW1hVmVyc2lvblR5cGVCeXRlID0gMDsKK3N0YXRpYyBjb25zdCB1bnNp
Z25lZCBjaGFyIE1heERhdGFiYXNlSWRUeXBlQnl0ZSA9IDE7CitzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgY2hhciBEYXRhYmFzZUZyZWVMaXN0VHlwZUJ5dGUgPSAxMDA7CitzdGF0aWMgY29uc3QgdW5z
aWduZWQgY2hhciBEYXRhYmFzZU5hbWVUeXBlQnl0ZSA9IDIwMTsKKworc3RhdGljIGNvbnN0IHVu
c2lnbmVkIGNoYXIgT2JqZWN0U3RvcmVNZXRhRGF0YVR5cGVCeXRlID0gNTA7CitzdGF0aWMgY29u
c3QgdW5zaWduZWQgY2hhciBJbmRleE1ldGFEYXRhVHlwZUJ5dGUgPSAxMDA7CitzdGF0aWMgY29u
c3QgdW5zaWduZWQgY2hhciBPYmplY3RTdG9yZUZyZWVMaXN0VHlwZUJ5dGUgPSAxNTA7CitzdGF0
aWMgY29uc3QgdW5zaWduZWQgY2hhciBJbmRleEZyZWVMaXN0VHlwZUJ5dGUgPSAxNTE7CitzdGF0
aWMgY29uc3QgdW5zaWduZWQgY2hhciBPYmplY3RTdG9yZU5hbWVzVHlwZUJ5dGUgPSAyMDA7Citz
dGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBJbmRleE5hbWVzS2V5VHlwZUJ5dGUgPSAyMDE7CisK
K3N0YXRpYyBjb25zdCBpbnQ2NF90IE9iamVjdE1ldGFEYXRhVHlwZU1heGltdW0gPSBJTlQ2NF9N
QVg7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBJbmRleE1ldGFEYXRhVHlwZU1heGltdW0g
PSAyNTU7CiAKIFZlY3RvcjxjaGFyPiBlbmNvZGVCeXRlKHVuc2lnbmVkIGNoYXIgYykKIHsKQEAg
LTE3MywxMiArMTczLDEyIEBAIFZlY3RvcjxjaGFyPiBlbmNvZGVCeXRlKHVuc2lnbmVkIGNoYXIg
YykKIAogVmVjdG9yPGNoYXI+IG1heElEQktleSgpCiB7Ci0gICAgcmV0dXJuIGVuY29kZUJ5dGUo
a0lEQktleU51bGxUeXBlQnl0ZSk7CisgICAgcmV0dXJuIGVuY29kZUJ5dGUoSURCS2V5TnVsbFR5
cGVCeXRlKTsKIH0KIAogVmVjdG9yPGNoYXI+IG1pbklEQktleSgpCiB7Ci0gICAgcmV0dXJuIGVu
Y29kZUJ5dGUoa0lEQktleU1pbktleVR5cGVCeXRlKTsKKyAgICByZXR1cm4gZW5jb2RlQnl0ZShJ
REJLZXlNaW5LZXlUeXBlQnl0ZSk7CiB9CiAKIFZlY3RvcjxjaGFyPiBlbmNvZGVCb29sKGJvb2wg
YikKQEAgLTI1NCw3ICsyNTQsNyBAQCBWZWN0b3I8Y2hhcj4gZW5jb2RlVmFySW50KGludDY0X3Qg
blBhcmFtKQogICAgIHJldHVybiByZXQ7CiB9CiAKLWNvbnN0IGNoYXIqIGRlY29kZVZhckludChj
b25zdCBjaGFyICpwLCBjb25zdCBjaGFyKiBsaW1pdCwgaW50NjRfdCYgZm91bmRJbnQpCitjb25z
dCBjaGFyKiBkZWNvZGVWYXJJbnQoY29uc3QgY2hhciogcCwgY29uc3QgY2hhciogbGltaXQsIGlu
dDY0X3QmIGZvdW5kSW50KQogewogICAgIEFTU0VSVChsaW1pdCA+PSBwKTsKICAgICBmb3VuZElu
dCA9IDA7CkBAIC0zOTUsMTAgKzM5NSwxMCBAQCB2b2lkIGVuY29kZUlEQktleShjb25zdCBJREJL
ZXkmIGtleSwgVmVjdG9yPGNoYXI+JiBpbnRvKQogICAgIGNhc2UgSURCS2V5OjpJbnZhbGlkVHlw
ZToKICAgICBjYXNlIElEQktleTo6TWluVHlwZToKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgICAgIGludG8uYXBwZW5kKGVuY29kZUJ5dGUoa0lEQktleU51bGxUeXBlQnl0ZSkp
OworICAgICAgICBpbnRvLmFwcGVuZChlbmNvZGVCeXRlKElEQktleU51bGxUeXBlQnl0ZSkpOwog
ICAgICAgICByZXR1cm47CiAgICAgY2FzZSBJREJLZXk6OkFycmF5VHlwZTogewotICAgICAgICBp
bnRvLmFwcGVuZChlbmNvZGVCeXRlKGtJREJLZXlBcnJheVR5cGVCeXRlKSk7CisgICAgICAgIGlu
dG8uYXBwZW5kKGVuY29kZUJ5dGUoSURCS2V5QXJyYXlUeXBlQnl0ZSkpOwogICAgICAgICBzaXpl
X3QgbGVuZ3RoID0ga2V5LmFycmF5KCkuc2l6ZSgpOwogICAgICAgICBpbnRvLmFwcGVuZChlbmNv
ZGVWYXJJbnQobGVuZ3RoKSk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3Ro
OyArK2kpCkBAIC00MDcsMTcgKzQwNywxNyBAQCB2b2lkIGVuY29kZUlEQktleShjb25zdCBJREJL
ZXkmIGtleSwgVmVjdG9yPGNoYXI+JiBpbnRvKQogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IGNhc2UgSURCS2V5OjpTdHJpbmdUeXBlOgotICAgICAgICBpbnRvLmFwcGVuZChlbmNvZGVCeXRl
KGtJREJLZXlTdHJpbmdUeXBlQnl0ZSkpOworICAgICAgICBpbnRvLmFwcGVuZChlbmNvZGVCeXRl
KElEQktleVN0cmluZ1R5cGVCeXRlKSk7CiAgICAgICAgIGludG8uYXBwZW5kKGVuY29kZVN0cmlu
Z1dpdGhMZW5ndGgoa2V5LnN0cmluZygpKSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQocHJldmlv
dXNTaXplLCBpbnRvLnNpemUoKSA+IHByZXZpb3VzU2l6ZSk7CiAgICAgICAgIHJldHVybjsKICAg
ICBjYXNlIElEQktleTo6RGF0ZVR5cGU6Ci0gICAgICAgIGludG8uYXBwZW5kKGVuY29kZUJ5dGUo
a0lEQktleURhdGVUeXBlQnl0ZSkpOworICAgICAgICBpbnRvLmFwcGVuZChlbmNvZGVCeXRlKElE
QktleURhdGVUeXBlQnl0ZSkpOwogICAgICAgICBpbnRvLmFwcGVuZChlbmNvZGVEb3VibGUoa2V5
LmRhdGUoKSkpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKHByZXZpb3VzU2l6ZSwgaW50by5zaXpl
KCkgLSBwcmV2aW91c1NpemUgPT0gOSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIElEQktl
eTo6TnVtYmVyVHlwZToKLSAgICAgICAgaW50by5hcHBlbmQoZW5jb2RlQnl0ZShrSURCS2V5TnVt
YmVyVHlwZUJ5dGUpKTsKKyAgICAgICAgaW50by5hcHBlbmQoZW5jb2RlQnl0ZShJREJLZXlOdW1i
ZXJUeXBlQnl0ZSkpOwogICAgICAgICBpbnRvLmFwcGVuZChlbmNvZGVEb3VibGUoa2V5Lm51bWJl
cigpKSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQocHJldmlvdXNTaXplLCBpbnRvLnNpemUoKSAt
IHByZXZpb3VzU2l6ZSA9PSA5KTsKICAgICAgICAgcmV0dXJuOwpAQCAtNDM2LDExICs0MzYsMTEg
QEAgY29uc3QgY2hhciogZGVjb2RlSURCS2V5KGNvbnN0IGNoYXIqIHAsIGNvbnN0IGNoYXIqIGxp
bWl0LCBSZWZQdHI8SURCS2V5PiYgZm91bmQKICAgICB1bnNpZ25lZCBjaGFyIHR5cGUgPSAqcCsr
OwogCiAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBrSURCS2V5TnVsbFR5cGVCeXRlOgor
ICAgIGNhc2UgSURCS2V5TnVsbFR5cGVCeXRlOgogICAgICAgICBmb3VuZEtleSA9IElEQktleTo6
Y3JlYXRlSW52YWxpZCgpOwogICAgICAgICByZXR1cm4gcDsKIAotICAgIGNhc2Uga0lEQktleUFy
cmF5VHlwZUJ5dGU6IHsKKyAgICBjYXNlIElEQktleUFycmF5VHlwZUJ5dGU6IHsKICAgICAgICAg
aW50NjRfdCBsZW5ndGg7CiAgICAgICAgIHAgPSBkZWNvZGVWYXJJbnQocCwgbGltaXQsIGxlbmd0
aCk7CiAgICAgICAgIGlmICghcCkKQEAgLTQ1OCw3ICs0NTgsNyBAQCBjb25zdCBjaGFyKiBkZWNv
ZGVJREJLZXkoY29uc3QgY2hhciogcCwgY29uc3QgY2hhciogbGltaXQsIFJlZlB0cjxJREJLZXk+
JiBmb3VuZAogICAgICAgICBmb3VuZEtleSA9IElEQktleTo6Y3JlYXRlQXJyYXkoYXJyYXkpOwog
ICAgICAgICByZXR1cm4gcDsKICAgICB9Ci0gICAgY2FzZSBrSURCS2V5U3RyaW5nVHlwZUJ5dGU6
IHsKKyAgICBjYXNlIElEQktleVN0cmluZ1R5cGVCeXRlOiB7CiAgICAgICAgIFN0cmluZyBzOwog
ICAgICAgICBwID0gZGVjb2RlU3RyaW5nV2l0aExlbmd0aChwLCBsaW1pdCwgcyk7CiAgICAgICAg
IGlmICghcCkKQEAgLTQ2Niw3ICs0NjYsNyBAQCBjb25zdCBjaGFyKiBkZWNvZGVJREJLZXkoY29u
c3QgY2hhciogcCwgY29uc3QgY2hhciogbGltaXQsIFJlZlB0cjxJREJLZXk+JiBmb3VuZAogICAg
ICAgICBmb3VuZEtleSA9IElEQktleTo6Y3JlYXRlU3RyaW5nKHMpOwogICAgICAgICByZXR1cm4g
cDsKICAgICB9Ci0gICAgY2FzZSBrSURCS2V5RGF0ZVR5cGVCeXRlOiB7CisgICAgY2FzZSBJREJL
ZXlEYXRlVHlwZUJ5dGU6IHsKICAgICAgICAgZG91YmxlIGQ7CiAgICAgICAgIHAgPSBkZWNvZGVE
b3VibGUocCwgbGltaXQsICZkKTsKICAgICAgICAgaWYgKCFwKQpAQCAtNDc0LDcgKzQ3NCw3IEBA
IGNvbnN0IGNoYXIqIGRlY29kZUlEQktleShjb25zdCBjaGFyKiBwLCBjb25zdCBjaGFyKiBsaW1p
dCwgUmVmUHRyPElEQktleT4mIGZvdW5kCiAgICAgICAgIGZvdW5kS2V5ID0gSURCS2V5OjpjcmVh
dGVEYXRlKGQpOwogICAgICAgICByZXR1cm4gcDsKICAgICB9Ci0gICAgY2FzZSBrSURCS2V5TnVt
YmVyVHlwZUJ5dGU6IHsKKyAgICBjYXNlIElEQktleU51bWJlclR5cGVCeXRlOiB7CiAgICAgICAg
IGRvdWJsZSBkOwogICAgICAgICBwID0gZGVjb2RlRG91YmxlKHAsIGxpbWl0LCAmZCk7CiAgICAg
ICAgIGlmICghcCkKQEAgLTQ5OCwxMSArNDk4LDExIEBAIGNvbnN0IGNoYXIqIGV4dHJhY3RFbmNv
ZGVkSURCS2V5KGNvbnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBjaGFyKiBsaW1pdCwgVmVjdG9yPGNo
CiAgICAgdW5zaWduZWQgY2hhciB0eXBlID0gKnArKzsKIAogICAgIHN3aXRjaCAodHlwZSkgewot
ICAgIGNhc2Uga0lEQktleU51bGxUeXBlQnl0ZToKLSAgICBjYXNlIGtJREJLZXlNaW5LZXlUeXBl
Qnl0ZToKKyAgICBjYXNlIElEQktleU51bGxUeXBlQnl0ZToKKyAgICBjYXNlIElEQktleU1pbktl
eVR5cGVCeXRlOgogICAgICAgICAqcmVzdWx0ID0gZW5jb2RlQnl0ZSh0eXBlKTsKICAgICAgICAg
cmV0dXJuIHA7Ci0gICAgY2FzZSBrSURCS2V5QXJyYXlUeXBlQnl0ZTogeworICAgIGNhc2UgSURC
S2V5QXJyYXlUeXBlQnl0ZTogewogICAgICAgICBpbnQ2NF90IGxlbmd0aDsKICAgICAgICAgcCA9
IGRlY29kZVZhckludChwLCBsaW1pdCwgbGVuZ3RoKTsKICAgICAgICAgaWYgKCFwKQpAQCAtNTIw
LDcgKzUyMCw3IEBAIGNvbnN0IGNoYXIqIGV4dHJhY3RFbmNvZGVkSURCS2V5KGNvbnN0IGNoYXIq
IHN0YXJ0LCBjb25zdCBjaGFyKiBsaW1pdCwgVmVjdG9yPGNoCiAgICAgICAgIH0KICAgICAgICAg
cmV0dXJuIHA7CiAgICAgfQotICAgIGNhc2Uga0lEQktleVN0cmluZ1R5cGVCeXRlOiB7CisgICAg
Y2FzZSBJREJLZXlTdHJpbmdUeXBlQnl0ZTogewogICAgICAgICBpbnQ2NF90IGxlbmd0aDsKICAg
ICAgICAgcCA9IGRlY29kZVZhckludChwLCBsaW1pdCwgbGVuZ3RoKTsKICAgICAgICAgaWYgKCFw
KQpAQCAtNTMxLDggKzUzMSw4IEBAIGNvbnN0IGNoYXIqIGV4dHJhY3RFbmNvZGVkSURCS2V5KGNv
bnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBjaGFyKiBsaW1pdCwgVmVjdG9yPGNoCiAgICAgICAgIHJl
c3VsdC0+YXBwZW5kKHN0YXJ0LCBwIC0gc3RhcnQgKyBsZW5ndGggKiAyKTsKICAgICAgICAgcmV0
dXJuIHAgKyBsZW5ndGggKiAyOwogICAgIH0KLSAgICBjYXNlIGtJREJLZXlEYXRlVHlwZUJ5dGU6
Ci0gICAgY2FzZSBrSURCS2V5TnVtYmVyVHlwZUJ5dGU6CisgICAgY2FzZSBJREJLZXlEYXRlVHlw
ZUJ5dGU6CisgICAgY2FzZSBJREJLZXlOdW1iZXJUeXBlQnl0ZToKICAgICAgICAgaWYgKHAgKyBz
aXplb2YoZG91YmxlKSA+IGxpbWl0KQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIHJl
c3VsdC0+Y2xlYXIoKTsKQEAgLTU0NiwxNyArNTQ2LDE3IEBAIGNvbnN0IGNoYXIqIGV4dHJhY3RF
bmNvZGVkSURCS2V5KGNvbnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBjaGFyKiBsaW1pdCwgVmVjdG9y
PGNoCiBzdGF0aWMgSURCS2V5OjpUeXBlIGtleVR5cGVCeXRlVG9LZXlUeXBlKHVuc2lnbmVkIGNo
YXIgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIGtJREJLZXlOdWxsVHlw
ZUJ5dGU6CisgICAgY2FzZSBJREJLZXlOdWxsVHlwZUJ5dGU6CiAgICAgICAgIHJldHVybiBJREJL
ZXk6OkludmFsaWRUeXBlOwotICAgIGNhc2Uga0lEQktleUFycmF5VHlwZUJ5dGU6CisgICAgY2Fz
ZSBJREJLZXlBcnJheVR5cGVCeXRlOgogICAgICAgICByZXR1cm4gSURCS2V5OjpBcnJheVR5cGU7
Ci0gICAgY2FzZSBrSURCS2V5U3RyaW5nVHlwZUJ5dGU6CisgICAgY2FzZSBJREJLZXlTdHJpbmdU
eXBlQnl0ZToKICAgICAgICAgcmV0dXJuIElEQktleTo6U3RyaW5nVHlwZTsKLSAgICBjYXNlIGtJ
REJLZXlEYXRlVHlwZUJ5dGU6CisgICAgY2FzZSBJREJLZXlEYXRlVHlwZUJ5dGU6CiAgICAgICAg
IHJldHVybiBJREJLZXk6OkRhdGVUeXBlOwotICAgIGNhc2Uga0lEQktleU51bWJlclR5cGVCeXRl
OgorICAgIGNhc2UgSURCS2V5TnVtYmVyVHlwZUJ5dGU6CiAgICAgICAgIHJldHVybiBJREJLZXk6
Ok51bWJlclR5cGU7Ci0gICAgY2FzZSBrSURCS2V5TWluS2V5VHlwZUJ5dGU6CisgICAgY2FzZSBJ
REJLZXlNaW5LZXlUeXBlQnl0ZToKICAgICAgICAgcmV0dXJuIElEQktleTo6TWluVHlwZTsKICAg
ICB9CiAKQEAgLTU3NiwxMSArNTc2LDExIEBAIGludCBjb21wYXJlRW5jb2RlZElEQktleXMoY29u
c3QgY2hhciomIHAsIGNvbnN0IGNoYXIqIGxpbWl0QSwgY29uc3QgY2hhciomIHEsIGNvCiAgICAg
ICAgIHJldHVybiB4OwogCiAgICAgc3dpdGNoICh0eXBlQSkgewotICAgIGNhc2Uga0lEQktleU51
bGxUeXBlQnl0ZToKLSAgICBjYXNlIGtJREJLZXlNaW5LZXlUeXBlQnl0ZToKKyAgICBjYXNlIElE
QktleU51bGxUeXBlQnl0ZToKKyAgICBjYXNlIElEQktleU1pbktleVR5cGVCeXRlOgogICAgICAg
ICAvLyBOdWxsIHR5cGUgb3IgbWF4IHR5cGU7IG5vIHBheWxvYWQgdG8gY29tcGFyZS4KICAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgY2FzZSBrSURCS2V5QXJyYXlUeXBlQnl0ZTogeworICAgIGNhc2Ug
SURCS2V5QXJyYXlUeXBlQnl0ZTogewogICAgICAgICBpbnQ2NF90IGxlbmd0aEEsIGxlbmd0aEI7
CiAgICAgICAgIHAgPSBkZWNvZGVWYXJJbnQocCwgbGltaXRBLCBsZW5ndGhBKTsKICAgICAgICAg
aWYgKCFwKQpAQCAtNjAwLDEwICs2MDAsMTAgQEAgaW50IGNvbXBhcmVFbmNvZGVkSURCS2V5cyhj
b25zdCBjaGFyKiYgcCwgY29uc3QgY2hhciogbGltaXRBLCBjb25zdCBjaGFyKiYgcSwgY28KICAg
ICAgICAgICAgIHJldHVybiAxOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgY2FzZSBr
SURCS2V5U3RyaW5nVHlwZUJ5dGU6CisgICAgY2FzZSBJREJLZXlTdHJpbmdUeXBlQnl0ZToKICAg
ICAgICAgcmV0dXJuIGNvbXBhcmVFbmNvZGVkU3RyaW5nc1dpdGhMZW5ndGgocCwgbGltaXRBLCBx
LCBsaW1pdEIpOwotICAgIGNhc2Uga0lEQktleURhdGVUeXBlQnl0ZToKLSAgICBjYXNlIGtJREJL
ZXlOdW1iZXJUeXBlQnl0ZTogeworICAgIGNhc2UgSURCS2V5RGF0ZVR5cGVCeXRlOgorICAgIGNh
c2UgSURCS2V5TnVtYmVyVHlwZUJ5dGU6IHsKICAgICAgICAgZG91YmxlIGQsIGU7CiAgICAgICAg
IHAgPSBkZWNvZGVEb3VibGUocCwgbGltaXRBLCAmZCk7CiAgICAgICAgIEFTU0VSVChwKTsKQEAg
LTY0MCw4ICs2NDAsOCBAQCBWZWN0b3I8Y2hhcj4gZW5jb2RlSURCS2V5UGF0aChjb25zdCBJREJL
ZXlQYXRoJiBrZXlQYXRoKQogICAgIC8vIGJ5dGUgaXMgdXNlZCB0byBpZGVudGlmeSB0eXBlZCBj
b2RpbmcuIE5ldyByZWNvcmRzIGFyZQogICAgIC8vIGFsd2F5cyB3cml0dGVuIGFzIHR5cGVkLgog
ICAgIFZlY3RvcjxjaGFyPiByZXQ7Ci0gICAgcmV0LmFwcGVuZChrSURCS2V5UGF0aFR5cGVDb2Rl
ZEJ5dGUxKTsKLSAgICByZXQuYXBwZW5kKGtJREJLZXlQYXRoVHlwZUNvZGVkQnl0ZTIpOworICAg
IHJldC5hcHBlbmQoSURCS2V5UGF0aFR5cGVDb2RlZEJ5dGUxKTsKKyAgICByZXQuYXBwZW5kKElE
QktleVBhdGhUeXBlQ29kZWRCeXRlMik7CiAgICAgcmV0LmFwcGVuZChzdGF0aWNfY2FzdDxjaGFy
PihrZXlQYXRoLnR5cGUoKSkpOwogICAgIHN3aXRjaCAoa2V5UGF0aC50eXBlKCkpIHsKICAgICBj
YXNlIElEQktleVBhdGg6Ok51bGxUeXBlOgpAQCAtNjY2LDcgKzY2Niw3IEBAIElEQktleVBhdGgg
ZGVjb2RlSURCS2V5UGF0aChjb25zdCBjaGFyKiBwLCBjb25zdCBjaGFyKiBsaW1pdCkKICAgICAv
LyBNYXkgYmUgdHlwZWQsIG9yIG1heSBiZSBhIHJhdyBzdHJpbmcuIEFuIGludmFsaWQgbGVhZGlu
ZwogICAgIC8vIGJ5dGUgc2VxdWVuY2UgaXMgdXNlZCB0byBpZGVudGlmeSB0eXBlZCBjb2Rpbmcu
IE5ldyByZWNvcmRzIGFyZQogICAgIC8vIGFsd2F5cyB3cml0dGVuIGFzIHR5cGVkLgotICAgIGlm
IChwID09IGxpbWl0IHx8IChsaW1pdCAtIHAgPj0gMiAmJiAoKnAgIT0ga0lEQktleVBhdGhUeXBl
Q29kZWRCeXRlMSB8fCAqKHAgKyAxKSAhPSBrSURCS2V5UGF0aFR5cGVDb2RlZEJ5dGUyKSkpCisg
ICAgaWYgKHAgPT0gbGltaXQgfHwgKGxpbWl0IC0gcCA+PSAyICYmICgqcCAhPSBJREJLZXlQYXRo
VHlwZUNvZGVkQnl0ZTEgfHwgKihwICsgMSkgIT0gSURCS2V5UGF0aFR5cGVDb2RlZEJ5dGUyKSkp
CiAgICAgICAgIHJldHVybiBJREJLZXlQYXRoKGRlY29kZVN0cmluZyhwLCBsaW1pdCkpOwogICAg
IHAgKz0gMjsKIApAQCAtNzM2LDcgKzczNiw3IEBAIGludCBjb21wYXJlKGNvbnN0IExldmVsREJT
bGljZSYgYSwgY29uc3QgTGV2ZWxEQlNsaWNlJiBiLCBib29sIGluZGV4S2V5cykKICAgICBpZiAo
aW50IHggPSBwcmVmaXhBLmNvbXBhcmUocHJlZml4QikpCiAgICAgICAgIHJldHVybiB4OwogCi0g
ICAgaWYgKHByZWZpeEEudHlwZSgpID09IEtleVByZWZpeDo6a0dsb2JhbE1ldGFEYXRhKSB7Cisg
ICAgaWYgKHByZWZpeEEudHlwZSgpID09IEtleVByZWZpeDo6R2xvYmFsTWV0YURhdGEpIHsKICAg
ICAgICAgQVNTRVJUKHB0ckEgIT0gZW5kQSk7CiAgICAgICAgIEFTU0VSVChwdHJCICE9IGVuZEIp
OwogCkBAIC03NDgsMTMgKzc0OCwxMyBAQCBpbnQgY29tcGFyZShjb25zdCBMZXZlbERCU2xpY2Um
IGEsIGNvbnN0IExldmVsREJTbGljZSYgYiwgYm9vbCBpbmRleEtleXMpCiAKICAgICAgICAgaWYg
KHR5cGVCeXRlQSA8PSAxKQogICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIGlmICh0eXBl
Qnl0ZUEgPT0ga0RhdGFiYXNlRnJlZUxpc3RUeXBlQnl0ZSkKKyAgICAgICAgaWYgKHR5cGVCeXRl
QSA9PSBEYXRhYmFzZUZyZWVMaXN0VHlwZUJ5dGUpCiAgICAgICAgICAgICByZXR1cm4gZGVjb2Rl
QW5kQ29tcGFyZTxEYXRhYmFzZUZyZWVMaXN0S2V5PihhLCBiKTsKLSAgICAgICAgaWYgKHR5cGVC
eXRlQSA9PSBrRGF0YWJhc2VOYW1lVHlwZUJ5dGUpCisgICAgICAgIGlmICh0eXBlQnl0ZUEgPT0g
RGF0YWJhc2VOYW1lVHlwZUJ5dGUpCiAgICAgICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ29tcGFy
ZTxEYXRhYmFzZU5hbWVLZXk+KGEsIGIpOwogICAgIH0KIAotICAgIGlmIChwcmVmaXhBLnR5cGUo
KSA9PSBLZXlQcmVmaXg6OmtEYXRhYmFzZU1ldGFEYXRhKSB7CisgICAgaWYgKHByZWZpeEEudHlw
ZSgpID09IEtleVByZWZpeDo6RGF0YWJhc2VNZXRhRGF0YSkgewogICAgICAgICBBU1NFUlQocHRy
QSAhPSBlbmRBKTsKICAgICAgICAgQVNTRVJUKHB0ckIgIT0gZW5kQik7CiAKQEAgLTc2NywyNCAr
NzY3LDI0IEBAIGludCBjb21wYXJlKGNvbnN0IExldmVsREJTbGljZSYgYSwgY29uc3QgTGV2ZWxE
QlNsaWNlJiBiLCBib29sIGluZGV4S2V5cykKICAgICAgICAgaWYgKHR5cGVCeXRlQSA8PSAzKQog
ICAgICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICAgICAgaWYgKHR5cGVCeXRlQSA9PSBrT2JqZWN0
U3RvcmVNZXRhRGF0YVR5cGVCeXRlKQorICAgICAgICBpZiAodHlwZUJ5dGVBID09IE9iamVjdFN0
b3JlTWV0YURhdGFUeXBlQnl0ZSkKICAgICAgICAgICAgIHJldHVybiBkZWNvZGVBbmRDb21wYXJl
PE9iamVjdFN0b3JlTWV0YURhdGFLZXk+KGEsIGIpOwotICAgICAgICBpZiAodHlwZUJ5dGVBID09
IGtJbmRleE1ldGFEYXRhVHlwZUJ5dGUpCisgICAgICAgIGlmICh0eXBlQnl0ZUEgPT0gSW5kZXhN
ZXRhRGF0YVR5cGVCeXRlKQogICAgICAgICAgICAgcmV0dXJuIGRlY29kZUFuZENvbXBhcmU8SW5k
ZXhNZXRhRGF0YUtleT4oYSwgYik7Ci0gICAgICAgIGlmICh0eXBlQnl0ZUEgPT0ga09iamVjdFN0
b3JlRnJlZUxpc3RUeXBlQnl0ZSkKKyAgICAgICAgaWYgKHR5cGVCeXRlQSA9PSBPYmplY3RTdG9y
ZUZyZWVMaXN0VHlwZUJ5dGUpCiAgICAgICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ29tcGFyZTxP
YmplY3RTdG9yZUZyZWVMaXN0S2V5PihhLCBiKTsKLSAgICAgICAgaWYgKHR5cGVCeXRlQSA9PSBr
SW5kZXhGcmVlTGlzdFR5cGVCeXRlKQorICAgICAgICBpZiAodHlwZUJ5dGVBID09IEluZGV4RnJl
ZUxpc3RUeXBlQnl0ZSkKICAgICAgICAgICAgIHJldHVybiBkZWNvZGVBbmRDb21wYXJlPEluZGV4
RnJlZUxpc3RLZXk+KGEsIGIpOwotICAgICAgICBpZiAodHlwZUJ5dGVBID09IGtPYmplY3RTdG9y
ZU5hbWVzVHlwZUJ5dGUpCisgICAgICAgIGlmICh0eXBlQnl0ZUEgPT0gT2JqZWN0U3RvcmVOYW1l
c1R5cGVCeXRlKQogICAgICAgICAgICAgcmV0dXJuIGRlY29kZUFuZENvbXBhcmU8T2JqZWN0U3Rv
cmVOYW1lc0tleT4oYSwgYik7Ci0gICAgICAgIGlmICh0eXBlQnl0ZUEgPT0ga0luZGV4TmFtZXNL
ZXlUeXBlQnl0ZSkKKyAgICAgICAgaWYgKHR5cGVCeXRlQSA9PSBJbmRleE5hbWVzS2V5VHlwZUJ5
dGUpCiAgICAgICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ29tcGFyZTxJbmRleE5hbWVzS2V5Pihh
LCBiKTsKIAogICAgICAgICByZXR1cm4gMDsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgfQogCi0gICAgaWYgKHByZWZpeEEudHlwZSgpID09IEtleVByZWZpeDo6a09iamVjdFN0
b3JlRGF0YSkgeworICAgIGlmIChwcmVmaXhBLnR5cGUoKSA9PSBLZXlQcmVmaXg6Ok9iamVjdFN0
b3JlRGF0YSkgewogICAgICAgICBpZiAocHRyQSA9PSBlbmRBICYmIHB0ckIgPT0gZW5kQikKICAg
ICAgICAgICAgIHJldHVybiAwOwogICAgICAgICBpZiAocHRyQSA9PSBlbmRBKQpAQCAtNzk0LDcg
Kzc5NCw3IEBAIGludCBjb21wYXJlKGNvbnN0IExldmVsREJTbGljZSYgYSwgY29uc3QgTGV2ZWxE
QlNsaWNlJiBiLCBib29sIGluZGV4S2V5cykKIAogICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ29t
cGFyZTxPYmplY3RTdG9yZURhdGFLZXk+KGEsIGIpOwogICAgIH0KLSAgICBpZiAocHJlZml4QS50
eXBlKCkgPT0gS2V5UHJlZml4OjprRXhpc3RzRW50cnkpIHsKKyAgICBpZiAocHJlZml4QS50eXBl
KCkgPT0gS2V5UHJlZml4OjpFeGlzdHNFbnRyeSkgewogICAgICAgICBpZiAocHRyQSA9PSBlbmRB
ICYmIHB0ckIgPT0gZW5kQikKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICBpZiAocHRy
QSA9PSBlbmRBKQpAQCAtODA0LDcgKzgwNCw3IEBAIGludCBjb21wYXJlKGNvbnN0IExldmVsREJT
bGljZSYgYSwgY29uc3QgTGV2ZWxEQlNsaWNlJiBiLCBib29sIGluZGV4S2V5cykKIAogICAgICAg
ICByZXR1cm4gZGVjb2RlQW5kQ29tcGFyZTxFeGlzdHNFbnRyeUtleT4oYSwgYik7CiAgICAgfQot
ICAgIGlmIChwcmVmaXhBLnR5cGUoKSA9PSBLZXlQcmVmaXg6OmtJbmRleERhdGEpIHsKKyAgICBp
ZiAocHJlZml4QS50eXBlKCkgPT0gS2V5UHJlZml4OjpJbmRleERhdGEpIHsKICAgICAgICAgaWYg
KHB0ckEgPT0gZW5kQSAmJiBwdHJCID09IGVuZEIpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAg
ICAgICAgaWYgKHB0ckEgPT0gZW5kQSkKQEAgLTgzMCw5ICs4MzAsOSBAQCBpbnQgY29tcGFyZShj
b25zdCBMZXZlbERCU2xpY2UmIGEsIGNvbnN0IExldmVsREJTbGljZSYgYiwgYm9vbCBpbmRleEtl
eXMpCiAKIAogS2V5UHJlZml4OjpLZXlQcmVmaXgoKQotICAgIDogbV9kYXRhYmFzZUlkKGtJbnZh
bGlkVHlwZSkKLSAgICAsIG1fb2JqZWN0U3RvcmVJZChrSW52YWxpZFR5cGUpCi0gICAgLCBtX2lu
ZGV4SWQoa0ludmFsaWRUeXBlKQorICAgIDogbV9kYXRhYmFzZUlkKEludmFsaWRUeXBlKQorICAg
ICwgbV9vYmplY3RTdG9yZUlkKEludmFsaWRUeXBlKQorICAgICwgbV9pbmRleElkKEludmFsaWRU
eXBlKQogewogfQogCkBAIC04NjksOSArODY5LDkgQEAgY29uc3QgY2hhciogS2V5UHJlZml4Ojpk
ZWNvZGUoY29uc3QgY2hhciogc3RhcnQsIGNvbnN0IGNoYXIqIGxpbWl0LCBLZXlQcmVmaXgqIHIK
IAogVmVjdG9yPGNoYXI+IEtleVByZWZpeDo6ZW5jb2RlKCkgY29uc3QKIHsKLSAgICBBU1NFUlQo
bV9kYXRhYmFzZUlkICE9IGtJbnZhbGlkSWQpOwotICAgIEFTU0VSVChtX29iamVjdFN0b3JlSWQg
IT0ga0ludmFsaWRJZCk7Ci0gICAgQVNTRVJUKG1faW5kZXhJZCAhPSBrSW52YWxpZElkKTsKKyAg
ICBBU1NFUlQobV9kYXRhYmFzZUlkICE9IEludmFsaWRJZCk7CisgICAgQVNTRVJUKG1fb2JqZWN0
U3RvcmVJZCAhPSBJbnZhbGlkSWQpOworICAgIEFTU0VSVChtX2luZGV4SWQgIT0gSW52YWxpZElk
KTsKIAogICAgIFZlY3RvcjxjaGFyPiBkYXRhYmFzZUlkU3RyaW5nID0gZW5jb2RlSW50KG1fZGF0
YWJhc2VJZCk7CiAgICAgVmVjdG9yPGNoYXI+IG9iamVjdFN0b3JlSWRTdHJpbmcgPSBlbmNvZGVJ
bnQobV9vYmplY3RTdG9yZUlkKTsKQEAgLTg5NCw5ICs4OTQsOSBAQCBWZWN0b3I8Y2hhcj4gS2V5
UHJlZml4OjplbmNvZGUoKSBjb25zdAogCiBpbnQgS2V5UHJlZml4Ojpjb21wYXJlKGNvbnN0IEtl
eVByZWZpeCYgb3RoZXIpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKG1fZGF0YWJhc2VJZCAhPSBrSW52
YWxpZElkKTsKLSAgICBBU1NFUlQobV9vYmplY3RTdG9yZUlkICE9IGtJbnZhbGlkSWQpOwotICAg
IEFTU0VSVChtX2luZGV4SWQgIT0ga0ludmFsaWRJZCk7CisgICAgQVNTRVJUKG1fZGF0YWJhc2VJ
ZCAhPSBJbnZhbGlkSWQpOworICAgIEFTU0VSVChtX29iamVjdFN0b3JlSWQgIT0gSW52YWxpZElk
KTsKKyAgICBBU1NFUlQobV9pbmRleElkICE9IEludmFsaWRJZCk7CiAKICAgICBpZiAobV9kYXRh
YmFzZUlkICE9IG90aGVyLm1fZGF0YWJhc2VJZCkKICAgICAgICAgcmV0dXJuIGNvbXBhcmVJbnRz
KG1fZGF0YWJhc2VJZCwgb3RoZXIubV9kYXRhYmFzZUlkKTsKQEAgLTkwOSwzMCArOTA5LDMwIEBA
IGludCBLZXlQcmVmaXg6OmNvbXBhcmUoY29uc3QgS2V5UHJlZml4JiBvdGhlcikgY29uc3QKIAog
S2V5UHJlZml4OjpUeXBlIEtleVByZWZpeDo6dHlwZSgpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKG1f
ZGF0YWJhc2VJZCAhPSBrSW52YWxpZElkKTsKLSAgICBBU1NFUlQobV9vYmplY3RTdG9yZUlkICE9
IGtJbnZhbGlkSWQpOwotICAgIEFTU0VSVChtX2luZGV4SWQgIT0ga0ludmFsaWRJZCk7CisgICAg
QVNTRVJUKG1fZGF0YWJhc2VJZCAhPSBJbnZhbGlkSWQpOworICAgIEFTU0VSVChtX29iamVjdFN0
b3JlSWQgIT0gSW52YWxpZElkKTsKKyAgICBBU1NFUlQobV9pbmRleElkICE9IEludmFsaWRJZCk7
CiAKICAgICBpZiAoIW1fZGF0YWJhc2VJZCkKLSAgICAgICAgcmV0dXJuIGtHbG9iYWxNZXRhRGF0
YTsKKyAgICAgICAgcmV0dXJuIEdsb2JhbE1ldGFEYXRhOwogICAgIGlmICghbV9vYmplY3RTdG9y
ZUlkKQotICAgICAgICByZXR1cm4ga0RhdGFiYXNlTWV0YURhdGE7Ci0gICAgaWYgKG1faW5kZXhJ
ZCA9PSBrT2JqZWN0U3RvcmVEYXRhSW5kZXhJZCkKLSAgICAgICAgcmV0dXJuIGtPYmplY3RTdG9y
ZURhdGE7Ci0gICAgaWYgKG1faW5kZXhJZCA9PSBrRXhpc3RzRW50cnlJbmRleElkKQotICAgICAg
ICByZXR1cm4ga0V4aXN0c0VudHJ5OwotICAgIGlmIChtX2luZGV4SWQgPj0ga01pbmltdW1JbmRl
eElkKQotICAgICAgICByZXR1cm4ga0luZGV4RGF0YTsKKyAgICAgICAgcmV0dXJuIERhdGFiYXNl
TWV0YURhdGE7CisgICAgaWYgKG1faW5kZXhJZCA9PSBPYmplY3RTdG9yZURhdGFJbmRleElkKQor
ICAgICAgICByZXR1cm4gT2JqZWN0U3RvcmVEYXRhOworICAgIGlmIChtX2luZGV4SWQgPT0gRXhp
c3RzRW50cnlJbmRleElkKQorICAgICAgICByZXR1cm4gRXhpc3RzRW50cnk7CisgICAgaWYgKG1f
aW5kZXhJZCA+PSBNaW5pbXVtSW5kZXhJZCkKKyAgICAgICAgcmV0dXJuIEluZGV4RGF0YTsKIAog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBrSW52YWxpZFR5cGU7CisgICAg
cmV0dXJuIEludmFsaWRUeXBlOwogfQogCiBWZWN0b3I8Y2hhcj4gU2NoZW1hVmVyc2lvbktleTo6
ZW5jb2RlKCkKIHsKICAgICBLZXlQcmVmaXggcHJlZml4KDAsIDAsIDApOwogICAgIFZlY3Rvcjxj
aGFyPiByZXQgPSBwcmVmaXguZW5jb2RlKCk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVCeXRlKGtT
Y2hlbWFWZXJzaW9uVHlwZUJ5dGUpKTsKKyAgICByZXQuYXBwZW5kKGVuY29kZUJ5dGUoU2NoZW1h
VmVyc2lvblR5cGVCeXRlKSk7CiAgICAgcmV0dXJuIHJldDsKIH0KIApAQCAtOTQwLDcgKzk0MCw3
IEBAIFZlY3RvcjxjaGFyPiBNYXhEYXRhYmFzZUlkS2V5OjplbmNvZGUoKQogewogICAgIEtleVBy
ZWZpeCBwcmVmaXgoMCwgMCwgMCk7CiAgICAgVmVjdG9yPGNoYXI+IHJldCA9IHByZWZpeC5lbmNv
ZGUoKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZUJ5dGUoa01heERhdGFiYXNlSWRUeXBlQnl0ZSkp
OworICAgIHJldC5hcHBlbmQoZW5jb2RlQnl0ZShNYXhEYXRhYmFzZUlkVHlwZUJ5dGUpKTsKICAg
ICByZXR1cm4gcmV0OwogfQogCkBAIC05NTIsNyArOTUyLDcgQEAgRGF0YWJhc2VGcmVlTGlzdEtl
eTo6RGF0YWJhc2VGcmVlTGlzdEtleSgpCiBjb25zdCBjaGFyKiBEYXRhYmFzZUZyZWVMaXN0S2V5
OjpkZWNvZGUoY29uc3QgY2hhciogc3RhcnQsIGNvbnN0IGNoYXIqIGxpbWl0LCBEYXRhYmFzZUZy
ZWVMaXN0S2V5KiByZXN1bHQpCiB7CiAgICAgS2V5UHJlZml4IHByZWZpeDsKLSAgICBjb25zdCBj
aGFyICpwID0gS2V5UHJlZml4OjpkZWNvZGUoc3RhcnQsIGxpbWl0LCAmcHJlZml4KTsKKyAgICBj
b25zdCBjaGFyKiBwID0gS2V5UHJlZml4OjpkZWNvZGUoc3RhcnQsIGxpbWl0LCAmcHJlZml4KTsK
ICAgICBpZiAoIXApCiAgICAgICAgIHJldHVybiAwOwogICAgIEFTU0VSVCghcHJlZml4Lm1fZGF0
YWJhc2VJZCk7CkBAIC05NjEsNyArOTYxLDcgQEAgY29uc3QgY2hhciogRGF0YWJhc2VGcmVlTGlz
dEtleTo6ZGVjb2RlKGNvbnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBjaGFyKiBsaW1pdCwgRGEKICAg
ICBpZiAocCA9PSBsaW1pdCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgdW5zaWduZWQgY2hhciB0
eXBlQnl0ZSA9ICpwKys7Ci0gICAgQVNTRVJUX1VOVVNFRCh0eXBlQnl0ZSwgdHlwZUJ5dGUgPT0g
a0RhdGFiYXNlRnJlZUxpc3RUeXBlQnl0ZSk7CisgICAgQVNTRVJUX1VOVVNFRCh0eXBlQnl0ZSwg
dHlwZUJ5dGUgPT0gRGF0YWJhc2VGcmVlTGlzdFR5cGVCeXRlKTsKICAgICBpZiAocCA9PSBsaW1p
dCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIGRlY29kZVZhckludChwLCBsaW1pdCwg
cmVzdWx0LT5tX2RhdGFiYXNlSWQpOwpAQCAtOTcxLDcgKzk3MSw3IEBAIFZlY3RvcjxjaGFyPiBE
YXRhYmFzZUZyZWVMaXN0S2V5OjplbmNvZGUoaW50NjRfdCBkYXRhYmFzZUlkKQogewogICAgIEtl
eVByZWZpeCBwcmVmaXgoMCwgMCwgMCk7CiAgICAgVmVjdG9yPGNoYXI+IHJldCA9IHByZWZpeC5l
bmNvZGUoKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZUJ5dGUoa0RhdGFiYXNlRnJlZUxpc3RUeXBl
Qnl0ZSkpOworICAgIHJldC5hcHBlbmQoZW5jb2RlQnl0ZShEYXRhYmFzZUZyZWVMaXN0VHlwZUJ5
dGUpKTsKICAgICByZXQuYXBwZW5kKGVuY29kZVZhckludChkYXRhYmFzZUlkKSk7CiAgICAgcmV0
dXJuIHJldDsKIH0KQEAgLTEwMDUsNyArMTAwNSw3IEBAIGNvbnN0IGNoYXIqIERhdGFiYXNlTmFt
ZUtleTo6ZGVjb2RlKGNvbnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBjaGFyKiBsaW1pdCwgRGF0YWJh
CiAgICAgaWYgKHAgPT0gbGltaXQpCiAgICAgICAgIHJldHVybiAwOwogICAgIHVuc2lnbmVkIGNo
YXIgdHlwZUJ5dGUgPSAqcCsrOwotICAgIEFTU0VSVF9VTlVTRUQodHlwZUJ5dGUsIHR5cGVCeXRl
ID09IGtEYXRhYmFzZU5hbWVUeXBlQnl0ZSk7CisgICAgQVNTRVJUX1VOVVNFRCh0eXBlQnl0ZSwg
dHlwZUJ5dGUgPT0gRGF0YWJhc2VOYW1lVHlwZUJ5dGUpOwogICAgIGlmIChwID09IGxpbWl0KQog
ICAgICAgICByZXR1cm4gMDsKICAgICBwID0gZGVjb2RlU3RyaW5nV2l0aExlbmd0aChwLCBsaW1p
dCwgcmVzdWx0LT5tX29yaWdpbik7CkBAIC0xMDE4LDcgKzEwMTgsNyBAQCBWZWN0b3I8Y2hhcj4g
RGF0YWJhc2VOYW1lS2V5OjplbmNvZGUoY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmlu
ZyYgZGF0YWJhcwogewogICAgIEtleVByZWZpeCBwcmVmaXgoMCwgMCwgMCk7CiAgICAgVmVjdG9y
PGNoYXI+IHJldCA9IHByZWZpeC5lbmNvZGUoKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZUJ5dGUo
a0RhdGFiYXNlTmFtZVR5cGVCeXRlKSk7CisgICAgcmV0LmFwcGVuZChlbmNvZGVCeXRlKERhdGFi
YXNlTmFtZVR5cGVCeXRlKSk7CiAgICAgcmV0LmFwcGVuZChlbmNvZGVTdHJpbmdXaXRoTGVuZ3Ro
KG9yaWdpbikpOwogICAgIHJldC5hcHBlbmQoZW5jb2RlU3RyaW5nV2l0aExlbmd0aChkYXRhYmFz
ZU5hbWUpKTsKICAgICByZXR1cm4gcmV0OwpAQCAtMTA2OCw3ICsxMDY4LDcgQEAgY29uc3QgY2hh
ciogT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6ZGVjb2RlKGNvbnN0IGNoYXIqIHN0YXJ0LCBjb25z
dCBjaGFyKiBsaW1pdCwKICAgICBpZiAocCA9PSBsaW1pdCkKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgdW5zaWduZWQgY2hhciB0eXBlQnl0ZSA9ICpwKys7Ci0gICAgQVNTRVJUX1VOVVNFRCh0eXBl
Qnl0ZSwgdHlwZUJ5dGUgPT0ga09iamVjdFN0b3JlTWV0YURhdGFUeXBlQnl0ZSk7CisgICAgQVNT
RVJUX1VOVVNFRCh0eXBlQnl0ZSwgdHlwZUJ5dGUgPT0gT2JqZWN0U3RvcmVNZXRhRGF0YVR5cGVC
eXRlKTsKICAgICBpZiAocCA9PSBsaW1pdCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcCA9IGRl
Y29kZVZhckludChwLCBsaW1pdCwgcmVzdWx0LT5tX29iamVjdFN0b3JlSWQpOwpAQCAtMTA4NCw3
ICsxMDg0LDcgQEAgVmVjdG9yPGNoYXI+IE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmVuY29kZShp
bnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3QKIHsKICAgICBLZXlQcmVmaXggcHJl
Zml4KGRhdGFiYXNlSWQsIDAsIDApOwogICAgIFZlY3RvcjxjaGFyPiByZXQgPSBwcmVmaXguZW5j
b2RlKCk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVCeXRlKGtPYmplY3RTdG9yZU1ldGFEYXRhVHlw
ZUJ5dGUpKTsKKyAgICByZXQuYXBwZW5kKGVuY29kZUJ5dGUoT2JqZWN0U3RvcmVNZXRhRGF0YVR5
cGVCeXRlKSk7CiAgICAgcmV0LmFwcGVuZChlbmNvZGVWYXJJbnQob2JqZWN0U3RvcmVJZCkpOwog
ICAgIHJldC5hcHBlbmQoZW5jb2RlVmFySW50KG1ldGFEYXRhVHlwZSkpOwogICAgIHJldHVybiBy
ZXQ7CkBAIC0xMDkyLDEyICsxMDkyLDEyIEBAIFZlY3RvcjxjaGFyPiBPYmplY3RTdG9yZU1ldGFE
YXRhS2V5OjplbmNvZGUoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0CiAKIFZl
Y3RvcjxjaGFyPiBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjplbmNvZGVNYXhLZXkoaW50NjRfdCBk
YXRhYmFzZUlkKQogewotICAgIHJldHVybiBlbmNvZGUoZGF0YWJhc2VJZCwgSU5UNjRfTUFYLCBr
T2JqZWN0TWV0YURhdGFUeXBlTWF4aW11bSk7CisgICAgcmV0dXJuIGVuY29kZShkYXRhYmFzZUlk
LCBJTlQ2NF9NQVgsIE9iamVjdE1ldGFEYXRhVHlwZU1heGltdW0pOwogfQogCiBWZWN0b3I8Y2hh
cj4gT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6ZW5jb2RlTWF4S2V5KGludDY0X3QgZGF0YWJhc2VJ
ZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkKQogewotICAgIHJldHVybiBlbmNvZGUoZGF0YWJhc2VJ
ZCwgb2JqZWN0U3RvcmVJZCwga09iamVjdE1ldGFEYXRhVHlwZU1heGltdW0pOworICAgIHJldHVy
biBlbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgT2JqZWN0TWV0YURhdGFUeXBlTWF4
aW11bSk7CiB9CiAKIGludDY0X3QgT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6b2JqZWN0U3RvcmVJ
ZCgpIGNvbnN0CkBAIC0xMTQyLDcgKzExNDIsNyBAQCBjb25zdCBjaGFyKiBJbmRleE1ldGFEYXRh
S2V5OjpkZWNvZGUoY29uc3QgY2hhciogc3RhcnQsIGNvbnN0IGNoYXIqIGxpbWl0LCBJbmRleAog
ICAgIGlmIChwID09IGxpbWl0KQogICAgICAgICByZXR1cm4gMDsKICAgICB1bnNpZ25lZCBjaGFy
IHR5cGVCeXRlID0gKnArKzsKLSAgICBBU1NFUlRfVU5VU0VEKHR5cGVCeXRlLCB0eXBlQnl0ZSA9
PSBrSW5kZXhNZXRhRGF0YVR5cGVCeXRlKTsKKyAgICBBU1NFUlRfVU5VU0VEKHR5cGVCeXRlLCB0
eXBlQnl0ZSA9PSBJbmRleE1ldGFEYXRhVHlwZUJ5dGUpOwogICAgIGlmIChwID09IGxpbWl0KQog
ICAgICAgICByZXR1cm4gMDsKICAgICBwID0gZGVjb2RlVmFySW50KHAsIGxpbWl0LCByZXN1bHQt
Pm1fb2JqZWN0U3RvcmVJZCk7CkBAIC0xMTYxLDcgKzExNjEsNyBAQCBWZWN0b3I8Y2hhcj4gSW5k
ZXhNZXRhRGF0YUtleTo6ZW5jb2RlKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RT
dG9yZUlkLAogewogICAgIEtleVByZWZpeCBwcmVmaXgoZGF0YWJhc2VJZCwgMCwgMCk7CiAgICAg
VmVjdG9yPGNoYXI+IHJldCA9IHByZWZpeC5lbmNvZGUoKTsKLSAgICByZXQuYXBwZW5kKGVuY29k
ZUJ5dGUoa0luZGV4TWV0YURhdGFUeXBlQnl0ZSkpOworICAgIHJldC5hcHBlbmQoZW5jb2RlQnl0
ZShJbmRleE1ldGFEYXRhVHlwZUJ5dGUpKTsKICAgICByZXQuYXBwZW5kKGVuY29kZVZhckludChv
YmplY3RTdG9yZUlkKSk7CiAgICAgcmV0LmFwcGVuZChlbmNvZGVWYXJJbnQoaW5kZXhJZCkpOwog
ICAgIHJldC5hcHBlbmQoZW5jb2RlQnl0ZShtZXRhRGF0YVR5cGUpKTsKQEAgLTExNzAsMTIgKzEx
NzAsMTIgQEAgVmVjdG9yPGNoYXI+IEluZGV4TWV0YURhdGFLZXk6OmVuY29kZShpbnQ2NF90IGRh
dGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwKIAogVmVjdG9yPGNoYXI+IEluZGV4TWV0
YURhdGFLZXk6OmVuY29kZU1heEtleShpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0
U3RvcmVJZCkKIHsKLSAgICByZXR1cm4gZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQs
IElOVDY0X01BWCwga0luZGV4TWV0YURhdGFUeXBlTWF4aW11bSk7CisgICAgcmV0dXJuIGVuY29k
ZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBJTlQ2NF9NQVgsIEluZGV4TWV0YURhdGFUeXBl
TWF4aW11bSk7CiB9CiAKIFZlY3RvcjxjaGFyPiBJbmRleE1ldGFEYXRhS2V5OjplbmNvZGVNYXhL
ZXkoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5k
ZXhJZCkKIHsKLSAgICByZXR1cm4gZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGlu
ZGV4SWQsIGtJbmRleE1ldGFEYXRhVHlwZU1heGltdW0pOworICAgIHJldHVybiBlbmNvZGUoZGF0
YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwgSW5kZXhNZXRhRGF0YVR5cGVNYXhpbXVt
KTsKIH0KIAogaW50IEluZGV4TWV0YURhdGFLZXk6OmNvbXBhcmUoY29uc3QgSW5kZXhNZXRhRGF0
YUtleSYgb3RoZXIpCkBAIC0xMjA0LDcgKzEyMDQsNyBAQCBPYmplY3RTdG9yZUZyZWVMaXN0S2V5
OjpPYmplY3RTdG9yZUZyZWVMaXN0S2V5KCkKIGNvbnN0IGNoYXIqIE9iamVjdFN0b3JlRnJlZUxp
c3RLZXk6OmRlY29kZShjb25zdCBjaGFyKiBzdGFydCwgY29uc3QgY2hhciogbGltaXQsIE9iamVj
dFN0b3JlRnJlZUxpc3RLZXkqIHJlc3VsdCkKIHsKICAgICBLZXlQcmVmaXggcHJlZml4OwotICAg
IGNvbnN0IGNoYXIgKnAgPSBLZXlQcmVmaXg6OmRlY29kZShzdGFydCwgbGltaXQsICZwcmVmaXgp
OworICAgIGNvbnN0IGNoYXIqIHAgPSBLZXlQcmVmaXg6OmRlY29kZShzdGFydCwgbGltaXQsICZw
cmVmaXgpOwogICAgIGlmICghcCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgQVNTRVJUKHByZWZp
eC5tX2RhdGFiYXNlSWQpOwpAQCAtMTIxMyw3ICsxMjEzLDcgQEAgY29uc3QgY2hhciogT2JqZWN0
U3RvcmVGcmVlTGlzdEtleTo6ZGVjb2RlKGNvbnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBjaGFyKiBs
aW1pdCwKICAgICBpZiAocCA9PSBsaW1pdCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgdW5zaWdu
ZWQgY2hhciB0eXBlQnl0ZSA9ICpwKys7Ci0gICAgQVNTRVJUX1VOVVNFRCh0eXBlQnl0ZSwgdHlw
ZUJ5dGUgPT0ga09iamVjdFN0b3JlRnJlZUxpc3RUeXBlQnl0ZSk7CisgICAgQVNTRVJUX1VOVVNF
RCh0eXBlQnl0ZSwgdHlwZUJ5dGUgPT0gT2JqZWN0U3RvcmVGcmVlTGlzdFR5cGVCeXRlKTsKICAg
ICBpZiAocCA9PSBsaW1pdCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIGRlY29kZVZh
ckludChwLCBsaW1pdCwgcmVzdWx0LT5tX29iamVjdFN0b3JlSWQpOwpAQCAtMTIyMyw3ICsxMjIz
LDcgQEAgVmVjdG9yPGNoYXI+IE9iamVjdFN0b3JlRnJlZUxpc3RLZXk6OmVuY29kZShpbnQ2NF90
IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3QKIHsKICAgICBLZXlQcmVmaXggcHJlZml4KGRh
dGFiYXNlSWQsIDAsIDApOwogICAgIFZlY3RvcjxjaGFyPiByZXQgPSBwcmVmaXguZW5jb2RlKCk7
Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVCeXRlKGtPYmplY3RTdG9yZUZyZWVMaXN0VHlwZUJ5dGUp
KTsKKyAgICByZXQuYXBwZW5kKGVuY29kZUJ5dGUoT2JqZWN0U3RvcmVGcmVlTGlzdFR5cGVCeXRl
KSk7CiAgICAgcmV0LmFwcGVuZChlbmNvZGVWYXJJbnQob2JqZWN0U3RvcmVJZCkpOwogICAgIHJl
dHVybiByZXQ7CiB9CkBAIC0xMjY2LDcgKzEyNjYsNyBAQCBjb25zdCBjaGFyKiBJbmRleEZyZWVM
aXN0S2V5OjpkZWNvZGUoY29uc3QgY2hhciogc3RhcnQsIGNvbnN0IGNoYXIqIGxpbWl0LCBJbmRl
eAogICAgIGlmIChwID09IGxpbWl0KQogICAgICAgICByZXR1cm4gMDsKICAgICB1bnNpZ25lZCBj
aGFyIHR5cGVCeXRlID0gKnArKzsKLSAgICBBU1NFUlRfVU5VU0VEKHR5cGVCeXRlLCB0eXBlQnl0
ZSA9PSBrSW5kZXhGcmVlTGlzdFR5cGVCeXRlKTsKKyAgICBBU1NFUlRfVU5VU0VEKHR5cGVCeXRl
LCB0eXBlQnl0ZSA9PSBJbmRleEZyZWVMaXN0VHlwZUJ5dGUpOwogICAgIGlmIChwID09IGxpbWl0
KQogICAgICAgICByZXR1cm4gMDsKICAgICBwID0gZGVjb2RlVmFySW50KHAsIGxpbWl0LCByZXN1
bHQtPm1fb2JqZWN0U3RvcmVJZCk7CkBAIC0xMjc5LDcgKzEyNzksNyBAQCBWZWN0b3I8Y2hhcj4g
SW5kZXhGcmVlTGlzdEtleTo6ZW5jb2RlKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmpl
Y3RTdG9yZUlkLAogewogICAgIEtleVByZWZpeCBwcmVmaXgoZGF0YWJhc2VJZCwgMCwgMCk7CiAg
ICAgVmVjdG9yPGNoYXI+IHJldCA9IHByZWZpeC5lbmNvZGUoKTsKLSAgICByZXQuYXBwZW5kKGVu
Y29kZUJ5dGUoa0luZGV4RnJlZUxpc3RUeXBlQnl0ZSkpOworICAgIHJldC5hcHBlbmQoZW5jb2Rl
Qnl0ZShJbmRleEZyZWVMaXN0VHlwZUJ5dGUpKTsKICAgICByZXQuYXBwZW5kKGVuY29kZVZhcklu
dChvYmplY3RTdG9yZUlkKSk7CiAgICAgcmV0LmFwcGVuZChlbmNvZGVWYXJJbnQoaW5kZXhJZCkp
OwogICAgIHJldHVybiByZXQ7CkBAIC0xMzI2LDcgKzEzMjYsNyBAQCBjb25zdCBjaGFyKiBPYmpl
Y3RTdG9yZU5hbWVzS2V5OjpkZWNvZGUoY29uc3QgY2hhciogc3RhcnQsIGNvbnN0IGNoYXIqIGxp
bWl0LCBPYgogICAgIGlmIChwID09IGxpbWl0KQogICAgICAgICByZXR1cm4gMDsKICAgICB1bnNp
Z25lZCBjaGFyIHR5cGVCeXRlID0gKnArKzsKLSAgICBBU1NFUlRfVU5VU0VEKHR5cGVCeXRlLCB0
eXBlQnl0ZSA9PSBrT2JqZWN0U3RvcmVOYW1lc1R5cGVCeXRlKTsKKyAgICBBU1NFUlRfVU5VU0VE
KHR5cGVCeXRlLCB0eXBlQnl0ZSA9PSBPYmplY3RTdG9yZU5hbWVzVHlwZUJ5dGUpOwogICAgIHJl
dHVybiBkZWNvZGVTdHJpbmdXaXRoTGVuZ3RoKHAsIGxpbWl0LCByZXN1bHQtPm1fb2JqZWN0U3Rv
cmVOYW1lKTsKIH0KIApAQCAtMTMzNCw3ICsxMzM0LDcgQEAgVmVjdG9yPGNoYXI+IE9iamVjdFN0
b3JlTmFtZXNLZXk6OmVuY29kZShpbnQ2NF90IGRhdGFiYXNlSWQsIGNvbnN0IFN0cmluZyYgb2Jq
ZWMKIHsKICAgICBLZXlQcmVmaXggcHJlZml4KGRhdGFiYXNlSWQsIDAsIDApOwogICAgIFZlY3Rv
cjxjaGFyPiByZXQgPSBwcmVmaXguZW5jb2RlKCk7Ci0gICAgcmV0LmFwcGVuZChlbmNvZGVCeXRl
KGtPYmplY3RTdG9yZU5hbWVzVHlwZUJ5dGUpKTsKKyAgICByZXQuYXBwZW5kKGVuY29kZUJ5dGUo
T2JqZWN0U3RvcmVOYW1lc1R5cGVCeXRlKSk7CiAgICAgcmV0LmFwcGVuZChlbmNvZGVTdHJpbmdX
aXRoTGVuZ3RoKG9iamVjdFN0b3JlTmFtZSkpOwogICAgIHJldHVybiByZXQ7CiB9CkBAIC0xMzYz
LDcgKzEzNjMsNyBAQCBjb25zdCBjaGFyKiBJbmRleE5hbWVzS2V5OjpkZWNvZGUoY29uc3QgY2hh
ciogc3RhcnQsIGNvbnN0IGNoYXIqIGxpbWl0LCBJbmRleE5hbQogICAgIGlmIChwID09IGxpbWl0
KQogICAgICAgICByZXR1cm4gMDsKICAgICB1bnNpZ25lZCBjaGFyIHR5cGVCeXRlID0gKnArKzsK
LSAgICBBU1NFUlRfVU5VU0VEKHR5cGVCeXRlLCB0eXBlQnl0ZSA9PSBrSW5kZXhOYW1lc0tleVR5
cGVCeXRlKTsKKyAgICBBU1NFUlRfVU5VU0VEKHR5cGVCeXRlLCB0eXBlQnl0ZSA9PSBJbmRleE5h
bWVzS2V5VHlwZUJ5dGUpOwogICAgIGlmIChwID09IGxpbWl0KQogICAgICAgICByZXR1cm4gMDsK
ICAgICBwID0gZGVjb2RlVmFySW50KHAsIGxpbWl0LCByZXN1bHQtPm1fb2JqZWN0U3RvcmVJZCk7
CkBAIC0xMzc2LDcgKzEzNzYsNyBAQCBWZWN0b3I8Y2hhcj4gSW5kZXhOYW1lc0tleTo6ZW5jb2Rl
KGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjbwogewogICAgIEtl
eVByZWZpeCBwcmVmaXgoZGF0YWJhc2VJZCwgMCwgMCk7CiAgICAgVmVjdG9yPGNoYXI+IHJldCA9
IHByZWZpeC5lbmNvZGUoKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZUJ5dGUoa0luZGV4TmFtZXNL
ZXlUeXBlQnl0ZSkpOworICAgIHJldC5hcHBlbmQoZW5jb2RlQnl0ZShJbmRleE5hbWVzS2V5VHlw
ZUJ5dGUpKTsKICAgICByZXQuYXBwZW5kKGVuY29kZVZhckludChvYmplY3RTdG9yZUlkKSk7CiAg
ICAgcmV0LmFwcGVuZChlbmNvZGVTdHJpbmdXaXRoTGVuZ3RoKGluZGV4TmFtZSkpOwogICAgIHJl
dHVybiByZXQ7CkBAIC0xMzk4LDcgKzEzOTgsNyBAQCBjb25zdCBjaGFyKiBPYmplY3RTdG9yZURh
dGFLZXk6OmRlY29kZShjb25zdCBjaGFyKiBzdGFydCwgY29uc3QgY2hhciogZW5kLCBPYmplYwog
ICAgICAgICByZXR1cm4gMDsKICAgICBBU1NFUlQocHJlZml4Lm1fZGF0YWJhc2VJZCk7CiAgICAg
QVNTRVJUKHByZWZpeC5tX29iamVjdFN0b3JlSWQpOwotICAgIEFTU0VSVChwcmVmaXgubV9pbmRl
eElkID09IGtTcGVjaWFsSW5kZXhOdW1iZXIpOworICAgIEFTU0VSVChwcmVmaXgubV9pbmRleElk
ID09IFNwZWNpYWxJbmRleE51bWJlcik7CiAgICAgaWYgKHAgPT0gZW5kKQogICAgICAgICByZXR1
cm4gMDsKICAgICByZXR1cm4gZXh0cmFjdEVuY29kZWRJREJLZXkocCwgZW5kLCAmcmVzdWx0LT5t
X2VuY29kZWRVc2VyS2V5KTsKQEAgLTE0MDYsNyArMTQwNiw3IEBAIGNvbnN0IGNoYXIqIE9iamVj
dFN0b3JlRGF0YUtleTo6ZGVjb2RlKGNvbnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBjaGFyKiBlbmQs
IE9iamVjCiAKIFZlY3RvcjxjaGFyPiBPYmplY3RTdG9yZURhdGFLZXk6OmVuY29kZShpbnQ2NF90
IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgVmVjdG9yPGNoYXI+IGVu
Y29kZWRVc2VyS2V5KQogewotICAgIEtleVByZWZpeCBwcmVmaXgoZGF0YWJhc2VJZCwgb2JqZWN0
U3RvcmVJZCwga1NwZWNpYWxJbmRleE51bWJlcik7CisgICAgS2V5UHJlZml4IHByZWZpeChkYXRh
YmFzZUlkLCBvYmplY3RTdG9yZUlkLCBTcGVjaWFsSW5kZXhOdW1iZXIpOwogICAgIFZlY3Rvcjxj
aGFyPiByZXQgPSBwcmVmaXguZW5jb2RlKCk7CiAgICAgcmV0LmFwcGVuZChlbmNvZGVkVXNlcktl
eSk7CiAKQEAgLTE0MzAsNyArMTQzMCw3IEBAIFBhc3NSZWZQdHI8SURCS2V5PiBPYmplY3RTdG9y
ZURhdGFLZXk6OnVzZXJLZXkoKSBjb25zdAogICAgIHJldHVybiBrZXk7CiB9CiAKLWNvbnN0IGlu
dDY0X3QgT2JqZWN0U3RvcmVEYXRhS2V5OjprU3BlY2lhbEluZGV4TnVtYmVyID0ga09iamVjdFN0
b3JlRGF0YUluZGV4SWQ7Citjb25zdCBpbnQ2NF90IE9iamVjdFN0b3JlRGF0YUtleTo6U3BlY2lh
bEluZGV4TnVtYmVyID0gT2JqZWN0U3RvcmVEYXRhSW5kZXhJZDsKIAogY29uc3QgY2hhciogRXhp
c3RzRW50cnlLZXk6OmRlY29kZShjb25zdCBjaGFyKiBzdGFydCwgY29uc3QgY2hhciogZW5kLCBF
eGlzdHNFbnRyeUtleSogcmVzdWx0KQogewpAQCAtMTQ0MCw3ICsxNDQwLDcgQEAgY29uc3QgY2hh
ciogRXhpc3RzRW50cnlLZXk6OmRlY29kZShjb25zdCBjaGFyKiBzdGFydCwgY29uc3QgY2hhciog
ZW5kLCBFeGlzdHNFbnQKICAgICAgICAgcmV0dXJuIDA7CiAgICAgQVNTRVJUKHByZWZpeC5tX2Rh
dGFiYXNlSWQpOwogICAgIEFTU0VSVChwcmVmaXgubV9vYmplY3RTdG9yZUlkKTsKLSAgICBBU1NF
UlQocHJlZml4Lm1faW5kZXhJZCA9PSBrU3BlY2lhbEluZGV4TnVtYmVyKTsKKyAgICBBU1NFUlQo
cHJlZml4Lm1faW5kZXhJZCA9PSBTcGVjaWFsSW5kZXhOdW1iZXIpOwogICAgIGlmIChwID09IGVu
ZCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIGV4dHJhY3RFbmNvZGVkSURCS2V5KHAs
IGVuZCwgJnJlc3VsdC0+bV9lbmNvZGVkVXNlcktleSk7CkBAIC0xNDQ4LDcgKzE0NDgsNyBAQCBj
b25zdCBjaGFyKiBFeGlzdHNFbnRyeUtleTo6ZGVjb2RlKGNvbnN0IGNoYXIqIHN0YXJ0LCBjb25z
dCBjaGFyKiBlbmQsIEV4aXN0c0VudAogCiBWZWN0b3I8Y2hhcj4gRXhpc3RzRW50cnlLZXk6OmVu
Y29kZShpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgVmVj
dG9yPGNoYXI+JiBlbmNvZGVkS2V5KQogewotICAgIEtleVByZWZpeCBwcmVmaXgoZGF0YWJhc2VJ
ZCwgb2JqZWN0U3RvcmVJZCwga1NwZWNpYWxJbmRleE51bWJlcik7CisgICAgS2V5UHJlZml4IHBy
ZWZpeChkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBTcGVjaWFsSW5kZXhOdW1iZXIpOwogICAg
IFZlY3RvcjxjaGFyPiByZXQgPSBwcmVmaXguZW5jb2RlKCk7CiAgICAgcmV0LmFwcGVuZChlbmNv
ZGVkS2V5KTsKICAgICByZXR1cm4gcmV0OwpAQCAtMTQ3MSw3ICsxNDcxLDcgQEAgUGFzc1JlZlB0
cjxJREJLZXk+IEV4aXN0c0VudHJ5S2V5Ojp1c2VyS2V5KCkgY29uc3QKICAgICByZXR1cm4ga2V5
OwogfQogCi1jb25zdCBpbnQ2NF90IEV4aXN0c0VudHJ5S2V5OjprU3BlY2lhbEluZGV4TnVtYmVy
ID0ga0V4aXN0c0VudHJ5SW5kZXhJZDsKK2NvbnN0IGludDY0X3QgRXhpc3RzRW50cnlLZXk6OlNw
ZWNpYWxJbmRleE51bWJlciA9IEV4aXN0c0VudHJ5SW5kZXhJZDsKIAogSW5kZXhEYXRhS2V5OjpJ
bmRleERhdGFLZXkoKQogICAgIDogbV9kYXRhYmFzZUlkKC0xKQpAQCAtMTQ4OSw3ICsxNDg5LDcg
QEAgY29uc3QgY2hhciogSW5kZXhEYXRhS2V5OjpkZWNvZGUoY29uc3QgY2hhciogc3RhcnQsIGNv
bnN0IGNoYXIqIGxpbWl0LCBJbmRleERhdGEKICAgICAgICAgcmV0dXJuIDA7CiAgICAgQVNTRVJU
KHByZWZpeC5tX2RhdGFiYXNlSWQpOwogICAgIEFTU0VSVChwcmVmaXgubV9vYmplY3RTdG9yZUlk
KTsKLSAgICBBU1NFUlQocHJlZml4Lm1faW5kZXhJZCA+PSBrTWluaW11bUluZGV4SWQpOworICAg
IEFTU0VSVChwcmVmaXgubV9pbmRleElkID49IE1pbmltdW1JbmRleElkKTsKICAgICByZXN1bHQt
Pm1fZGF0YWJhc2VJZCA9IHByZWZpeC5tX2RhdGFiYXNlSWQ7CiAgICAgcmVzdWx0LT5tX29iamVj
dFN0b3JlSWQgPSBwcmVmaXgubV9vYmplY3RTdG9yZUlkOwogICAgIHJlc3VsdC0+bV9pbmRleElk
ID0gcHJlZml4Lm1faW5kZXhJZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkxldmVsREJDb2RpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkxldmVsREJDb2RpbmcuaAppbmRleCBjYzFmNzI3OGRlZmVjNmU0NjBkOTRjMTQy
MTkyNmQxNDkxODYzOWQyLi4wZjMxNWQ2OGI3MDZmNjY3YTFlZTExZjI4NGUxNzcwODM5ZGFiYjY2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERC
Q29kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxE
QkNvZGluZy5oCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIExldmVsREJTbGljZTsKIAogbmFtZXNw
YWNlIElEQkxldmVsREJDb2RpbmcgewogCi1jb25zdCB1bnNpZ25lZCBjaGFyIGtNaW5pbXVtSW5k
ZXhJZCA9IDMwOworY29uc3QgdW5zaWduZWQgY2hhciBNaW5pbXVtSW5kZXhJZCA9IDMwOwogCiBW
ZWN0b3I8Y2hhcj4gZW5jb2RlQnl0ZSh1bnNpZ25lZCBjaGFyKTsKIFZlY3RvcjxjaGFyPiBtYXhJ
REJLZXkoKTsKQEAgLTUxLDcgKzUxLDcgQEAgYm9vbCBkZWNvZGVCb29sKGNvbnN0IGNoYXIqIGJl
Z2luLCBjb25zdCBjaGFyKiBlbmQpOwogVmVjdG9yPGNoYXI+IGVuY29kZUludChpbnQ2NF90KTsK
IGludDY0X3QgZGVjb2RlSW50KGNvbnN0IGNoYXIqIGJlZ2luLCBjb25zdCBjaGFyKiBlbmQpOwog
VmVjdG9yPGNoYXI+IGVuY29kZVZhckludChpbnQ2NF90KTsKLWNvbnN0IGNoYXIqIGRlY29kZVZh
ckludChjb25zdCBjaGFyICpwLCBjb25zdCBjaGFyKiBsaW1pdCwgaW50NjRfdCYgZm91bmRJbnQp
OworY29uc3QgY2hhciogZGVjb2RlVmFySW50KGNvbnN0IGNoYXIqIHAsIGNvbnN0IGNoYXIqIGxp
bWl0LCBpbnQ2NF90JiBmb3VuZEludCk7CiBWZWN0b3I8Y2hhcj4gZW5jb2RlU3RyaW5nKGNvbnN0
IFN0cmluZyYpOwogU3RyaW5nIGRlY29kZVN0cmluZyhjb25zdCBjaGFyKiBwLCBjb25zdCBjaGFy
KiBlbmQpOwogVmVjdG9yPGNoYXI+IGVuY29kZVN0cmluZ1dpdGhMZW5ndGgoY29uc3QgU3RyaW5n
Jik7CkBAIC03OSwxMiArNzksMTIgQEAgcHVibGljOgogICAgIGludCBjb21wYXJlKGNvbnN0IEtl
eVByZWZpeCYgb3RoZXIpIGNvbnN0OwogCiAgICAgZW51bSBUeXBlIHsKLSAgICAgICAga0dsb2Jh
bE1ldGFEYXRhLAotICAgICAgICBrRGF0YWJhc2VNZXRhRGF0YSwKLSAgICAgICAga09iamVjdFN0
b3JlRGF0YSwKLSAgICAgICAga0V4aXN0c0VudHJ5LAotICAgICAgICBrSW5kZXhEYXRhLAotICAg
ICAgICBrSW52YWxpZFR5cGUKKyAgICAgICAgR2xvYmFsTWV0YURhdGEsCisgICAgICAgIERhdGFi
YXNlTWV0YURhdGEsCisgICAgICAgIE9iamVjdFN0b3JlRGF0YSwKKyAgICAgICAgRXhpc3RzRW50
cnksCisgICAgICAgIEluZGV4RGF0YSwKKyAgICAgICAgSW52YWxpZFR5cGUKICAgICB9OwogCiAg
ICAgVHlwZSB0eXBlKCkgY29uc3Q7CkBAIC05Myw3ICs5Myw3IEBAIHB1YmxpYzoKICAgICBpbnQ2
NF90IG1fb2JqZWN0U3RvcmVJZDsKICAgICBpbnQ2NF90IG1faW5kZXhJZDsKIAotICAgIHN0YXRp
YyBjb25zdCBpbnQ2NF90IGtJbnZhbGlkSWQgPSAtMTsKKyAgICBzdGF0aWMgY29uc3QgaW50NjRf
dCBJbnZhbGlkSWQgPSAtMTsKIH07CiAKIGNsYXNzIFNjaGVtYVZlcnNpb25LZXkgewpAQCAtMTM3
LDEwICsxMzcsMTAgQEAgcHJpdmF0ZToKIGNsYXNzIERhdGFiYXNlTWV0YURhdGFLZXkgewogcHVi
bGljOgogICAgIGVudW0gTWV0YURhdGFUeXBlIHsKLSAgICAgICAga09yaWdpbk5hbWUgPSAwLAot
ICAgICAgICBrRGF0YWJhc2VOYW1lID0gMSwKLSAgICAgICAga1VzZXJWZXJzaW9uID0gMiwKLSAg
ICAgICAga01heE9iamVjdFN0b3JlSWQgPSAzCisgICAgICAgIE9yaWdpbk5hbWUgPSAwLAorICAg
ICAgICBEYXRhYmFzZU5hbWUgPSAxLAorICAgICAgICBVc2VyVmVyc2lvbiA9IDIsCisgICAgICAg
IE1heE9iamVjdFN0b3JlSWQgPSAzCiAgICAgfTsKIAogICAgIHN0YXRpYyBWZWN0b3I8Y2hhcj4g
ZW5jb2RlKGludDY0X3QgZGF0YWJhc2VJZCwgTWV0YURhdGFUeXBlKTsKQEAgLTE0OSwxMyArMTQ5
LDEzIEBAIHB1YmxpYzoKIGNsYXNzIE9iamVjdFN0b3JlTWV0YURhdGFLZXkgewogcHVibGljOgog
ICAgIGVudW0gTWV0YURhdGFUeXBlIHsKLSAgICAgICAga05hbWUgPSAwLAotICAgICAgICBrS2V5
UGF0aCA9IDEsCi0gICAgICAgIGtBdXRvSW5jcmVtZW50ID0gMiwKLSAgICAgICAga0V2aWN0YWJs
ZSA9IDMsCi0gICAgICAgIGtMYXN0VmVyc2lvbiA9IDQsCi0gICAgICAgIGtNYXhJbmRleElkID0g
NSwKLSAgICAgICAga0hhc0tleVBhdGggPSA2CisgICAgICAgIE5hbWUgPSAwLAorICAgICAgICBL
ZXlQYXRoID0gMSwKKyAgICAgICAgQXV0b0luY3JlbWVudCA9IDIsCisgICAgICAgIEV2aWN0YWJs
ZSA9IDMsCisgICAgICAgIExhc3RWZXJzaW9uID0gNCwKKyAgICAgICAgTWF4SW5kZXhJZCA9IDUs
CisgICAgICAgIEhhc0tleVBhdGggPSA2CiAgICAgfTsKIAogICAgIE9iamVjdFN0b3JlTWV0YURh
dGFLZXkoKTsKQEAgLTE3NSwxMCArMTc1LDEwIEBAIHByaXZhdGU6CiBjbGFzcyBJbmRleE1ldGFE
YXRhS2V5IHsKIHB1YmxpYzoKICAgICBlbnVtIE1ldGFEYXRhVHlwZSB7Ci0gICAgICAgIGtOYW1l
ID0gMCwKLSAgICAgICAga1VuaXF1ZSA9IDEsCi0gICAgICAgIGtLZXlQYXRoID0gMiwKLSAgICAg
ICAga011bHRpRW50cnkgPSAzCisgICAgICAgIE5hbWUgPSAwLAorICAgICAgICBVbmlxdWUgPSAx
LAorICAgICAgICBLZXlQYXRoID0gMiwKKyAgICAgICAgTXVsdGlFbnRyeSA9IDMKICAgICB9Owog
CiAgICAgSW5kZXhNZXRhRGF0YUtleSgpOwpAQCAtMjYwLDcgKzI2MCw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgVmVjdG9yPGNoYXI+IGVuY29kZShpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qg
b2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5JiB1c2VyS2V5KTsKICAgICBpbnQgY29tcGFyZShj
b25zdCBPYmplY3RTdG9yZURhdGFLZXkmIG90aGVyKTsKICAgICBQYXNzUmVmUHRyPElEQktleT4g
dXNlcktleSgpIGNvbnN0OwotICAgIHN0YXRpYyBjb25zdCBpbnQ2NF90IGtTcGVjaWFsSW5kZXhO
dW1iZXI7CisgICAgc3RhdGljIGNvbnN0IGludDY0X3QgU3BlY2lhbEluZGV4TnVtYmVyOwogCiBw
cml2YXRlOgogICAgIFZlY3RvcjxjaGFyPiBtX2VuY29kZWRVc2VyS2V5OwpAQCAtMjc0LDcgKzI3
NCw3IEBAIHB1YmxpYzoKICAgICBpbnQgY29tcGFyZShjb25zdCBFeGlzdHNFbnRyeUtleSYgb3Ro
ZXIpOwogICAgIFBhc3NSZWZQdHI8SURCS2V5PiB1c2VyS2V5KCkgY29uc3Q7CiAKLSAgICBzdGF0
aWMgY29uc3QgaW50NjRfdCBrU3BlY2lhbEluZGV4TnVtYmVyOworICAgIHN0YXRpYyBjb25zdCBp
bnQ2NF90IFNwZWNpYWxJbmRleE51bWJlcjsKIAogcHJpdmF0ZToKICAgICBWZWN0b3I8Y2hhcj4g
bV9lbmNvZGVkVXNlcktleTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvSURCTGV2ZWxEQkNvZGluZ1Rlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9JREJMZXZlbERCQ29kaW5nVGVzdC5jcHAKaW5kZXggYTM0YjQzNmJkYWFiNjEyOTEzMDFjODM3
ZWMzNWZlYmQ4NjIwM2ZmMC4uMTM3Njk5YzMwZTVkNjBiMjQ1MzRhYjQ3MzYzNzcxYTk0NDBhYjE3
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJMZXZlbERCQ29k
aW5nVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJMZXZlbERC
Q29kaW5nVGVzdC5jcHAKQEAgLTYzMCw3ICs2MzAsNyBAQCBURVNUKElEQkxldmVsREJDb2RpbmdU
ZXN0LCBDb21wYXJpc29uVGVzdCkKICAgICBrZXlzLmFwcGVuZChEYXRhYmFzZU5hbWVLZXk6OmVu
Y29kZSgiIiwgIiIpKTsKICAgICBrZXlzLmFwcGVuZChEYXRhYmFzZU5hbWVLZXk6OmVuY29kZSgi
IiwgImEiKSk7CiAgICAga2V5cy5hcHBlbmQoRGF0YWJhc2VOYW1lS2V5OjplbmNvZGUoImEiLCAi
YSIpKTsKLSAgICBrZXlzLmFwcGVuZChEYXRhYmFzZU1ldGFEYXRhS2V5OjplbmNvZGUoMSwgRGF0
YWJhc2VNZXRhRGF0YUtleTo6a09yaWdpbk5hbWUpKTsKKyAgICBrZXlzLmFwcGVuZChEYXRhYmFz
ZU1ldGFEYXRhS2V5OjplbmNvZGUoMSwgRGF0YWJhc2VNZXRhRGF0YUtleTo6T3JpZ2luTmFtZSkp
OwogICAgIGtleXMuYXBwZW5kKE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmVuY29kZSgxLCAxLCAw
KSk7CiAgICAga2V5cy5hcHBlbmQoT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6ZW5jb2RlKDEsIDEs
IDEpKTsKICAgICBrZXlzLmFwcGVuZChPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjplbmNvZGVNYXhL
ZXkoMSwgMSkpOwpAQCAtNjQ1LDkgKzY0NSw5IEBAIFRFU1QoSURCTGV2ZWxEQkNvZGluZ1Rlc3Qs
IENvbXBhcmlzb25UZXN0KQogICAgIGtleXMuYXBwZW5kKEluZGV4TWV0YURhdGFLZXk6OmVuY29k
ZU1heEtleSgxLCAyKSk7CiAgICAga2V5cy5hcHBlbmQoT2JqZWN0U3RvcmVGcmVlTGlzdEtleTo6
ZW5jb2RlKDEsIDEpKTsKICAgICBrZXlzLmFwcGVuZChPYmplY3RTdG9yZUZyZWVMaXN0S2V5Ojpl
bmNvZGVNYXhLZXkoMSkpOwotICAgIGtleXMuYXBwZW5kKEluZGV4RnJlZUxpc3RLZXk6OmVuY29k
ZSgxLCAxLCBrTWluaW11bUluZGV4SWQpKTsKKyAgICBrZXlzLmFwcGVuZChJbmRleEZyZWVMaXN0
S2V5OjplbmNvZGUoMSwgMSwgTWluaW11bUluZGV4SWQpKTsKICAgICBrZXlzLmFwcGVuZChJbmRl
eEZyZWVMaXN0S2V5OjplbmNvZGVNYXhLZXkoMSwgMSkpOwotICAgIGtleXMuYXBwZW5kKEluZGV4
RnJlZUxpc3RLZXk6OmVuY29kZSgxLCAyLCBrTWluaW11bUluZGV4SWQpKTsKKyAgICBrZXlzLmFw
cGVuZChJbmRleEZyZWVMaXN0S2V5OjplbmNvZGUoMSwgMiwgTWluaW11bUluZGV4SWQpKTsKICAg
ICBrZXlzLmFwcGVuZChJbmRleEZyZWVMaXN0S2V5OjplbmNvZGVNYXhLZXkoMSwgMikpOwogICAg
IGtleXMuYXBwZW5kKE9iamVjdFN0b3JlTmFtZXNLZXk6OmVuY29kZSgxLCAiIikpOwogICAgIGtl
eXMuYXBwZW5kKE9iamVjdFN0b3JlTmFtZXNLZXk6OmVuY29kZSgxLCAiYSIpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153053</attachid>
            <date>2012-07-18 11:22:02 -0700</date>
            <delta_ts>2012-07-18 14:33:42 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-91565-20120718112202.patch</filename>
            <type>text/plain</type>
            <size>61124</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyOTgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzc3NGM1Yjc2ZWZjMDUz
NjdjNTFhZDZmOWI5Yzc4YjUyNzk1M2MzNS4uNGFjOGEyNjRhN2EwNjAyMGE1ZDg0ODNhMjQzODA1
NjgzMTNmZTdjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg2IEBACisyMDEyLTA3LTE3ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBGaXgg
c29tZSBjb2Rpbmcgc3R5bGUgdmlvbGF0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE1NjUKKworICAgICAgICBSZXZpZXdlZCBieSBUb255IENo
YW5nLgorCisgICAgICAgIEluIGRlY2xhcmF0aW9ucywgcHV0IHRoZSAqIG5leHQgdG8gdGhlIHR5
cGUgbm90IHRoZSBpZGVudGlmaWVyLgorICAgICAgICBSZW1vdmUgayBhcyBhIHByZWZpeCBmb3Ig
dmFyaW91cyBjb25zdGFudHMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIC0gbm8gZnVuY3Rpb25h
bCBjaGFuZ2VzLgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2Vu
ZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yQmFja2VuZEltcGw6OnByZWZl
dGNoQ29udGludWVJbnRlcm5hbCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRmFj
dG9yeUJhY2tlbmRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVGaWxlSWRlbnRp
Zmllcik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpJREJLZXk6OklEQktleSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
TGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQmFj
a2luZ1N0b3JlOjpnZXREYXRhYmFzZU5hbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVs
REJCYWNraW5nU3RvcmU6OmdldElEQkRhdGFiYXNlTWV0YURhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSURCRGF0YWJhc2VNZXRhRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQmFja2luZ1N0b3JlOjp1cGRhdGVJREJEYXRhYmFz
ZU1ldGFEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6OmRl
bGV0ZURhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6
OmdldE9iamVjdFN0b3Jlcyk6CisgICAgICAgIChXZWJDb3JlOjpnZXROZXdPYmplY3RTdG9yZUlk
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6OmNyZWF0ZU9iamVj
dFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6OmRlbGV0
ZU9iamVjdFN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmdldE5ld1ZlcnNpb25OdW1iZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6bmV4dEF1dG9JbmNyZW1l
bnROdW1iZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Zm9y
RWFjaE9iamVjdFN0b3JlUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNr
aW5nU3RvcmU6OmdldEluZGV4ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0TmV3SW5kZXhJZCk6
CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQmFja2luZ1N0b3JlOjpjcmVhdGVJbmRleCk6
CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQmFja2luZ1N0b3JlOjpwdXRJbmRleERhdGFG
b3JSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvSURCTGV2ZWxEQkNvZGluZy5jcHA6CisgICAgICAgIChJREJMZXZlbERCQ29kaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJDb2Rpbmc6Om1heElEQktleSk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJMZXZlbERCQ29kaW5nOjptaW5JREJLZXkpOgorICAgICAgICAoV2ViQ29yZTo6
SURCTGV2ZWxEQkNvZGluZzo6ZGVjb2RlVmFySW50KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxl
dmVsREJDb2Rpbmc6OmVuY29kZUlEQktleSk6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERC
Q29kaW5nOjpkZWNvZGVJREJLZXkpOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkNvZGlu
Zzo6ZXh0cmFjdEVuY29kZWRJREJLZXkpOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkNv
ZGluZzo6a2V5VHlwZUJ5dGVUb0tleVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxE
QkNvZGluZzo6Y29tcGFyZUVuY29kZWRJREJLZXlzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxl
dmVsREJDb2Rpbmc6OmVuY29kZUlEQktleVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2
ZWxEQkNvZGluZzo6ZGVjb2RlSURCS2V5UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZl
bERCQ29kaW5nOjpjb21wYXJlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJDb2Rpbmc6
OktleVByZWZpeDo6S2V5UHJlZml4KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJDb2Rp
bmc6OktleVByZWZpeDo6ZW5jb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJDb2Rp
bmc6OktleVByZWZpeDo6Y29tcGFyZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQ29k
aW5nOjpLZXlQcmVmaXg6OnR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkNvZGlu
Zzo6U2NoZW1hVmVyc2lvbktleTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVs
REJDb2Rpbmc6Ok1heERhdGFiYXNlSWRLZXk6OmVuY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJMZXZlbERCQ29kaW5nOjpEYXRhYmFzZUZyZWVMaXN0S2V5OjpkZWNvZGUpOgorICAgICAgICAo
V2ViQ29yZTo6SURCTGV2ZWxEQkNvZGluZzo6RGF0YWJhc2VGcmVlTGlzdEtleTo6ZW5jb2RlKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJDb2Rpbmc6OkRhdGFiYXNlTmFtZUtleTo6ZGVj
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJDb2Rpbmc6OkRhdGFiYXNlTmFtZUtl
eTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJDb2Rpbmc6Ok9iamVjdFN0
b3JlTWV0YURhdGFLZXk6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQ29k
aW5nOjpPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjplbmNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6
SURCTGV2ZWxEQkNvZGluZzo6T2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6ZW5jb2RlTWF4S2V5KToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJDb2Rpbmc6OkluZGV4TWV0YURhdGFLZXk6OmRl
Y29kZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQ29kaW5nOjpJbmRleE1ldGFEYXRh
S2V5OjplbmNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkNvZGluZzo6SW5kZXhN
ZXRhRGF0YUtleTo6ZW5jb2RlTWF4S2V5KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJD
b2Rpbmc6Ok9iamVjdFN0b3JlRnJlZUxpc3RLZXk6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJMZXZlbERCQ29kaW5nOjpPYmplY3RTdG9yZUZyZWVMaXN0S2V5OjplbmNvZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkNvZGluZzo6SW5kZXhGcmVlTGlzdEtleTo6ZGVjb2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJDb2Rpbmc6OkluZGV4RnJlZUxpc3RLZXk6
OmVuY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQ29kaW5nOjpPYmplY3RTdG9y
ZU5hbWVzS2V5OjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkNvZGluZzo6
T2JqZWN0U3RvcmVOYW1lc0tleTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVs
REJDb2Rpbmc6OkluZGV4TmFtZXNLZXk6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJM
ZXZlbERCQ29kaW5nOjpJbmRleE5hbWVzS2V5OjplbmNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6
SURCTGV2ZWxEQkNvZGluZzo6T2JqZWN0U3RvcmVEYXRhS2V5OjpkZWNvZGUpOgorICAgICAgICAo
V2ViQ29yZTo6SURCTGV2ZWxEQkNvZGluZzo6T2JqZWN0U3RvcmVEYXRhS2V5OjplbmNvZGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkNvZGluZzo6RXhpc3RzRW50cnlLZXk6OmRlY29k
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQ29kaW5nOjpFeGlzdHNFbnRyeUtleTo6
ZW5jb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJDb2Rpbmc6OkluZGV4RGF0YUtl
eTo6ZGVjb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5n
Lmg6CisgICAgICAgIChJREJMZXZlbERCQ29kaW5nKToKKyAgICAgICAgKE9iamVjdFN0b3JlRGF0
YUtleSk6CisgICAgICAgIChFeGlzdHNFbnRyeUtleSk6CisKIDIwMTItMDctMTggIENocmlzIEZs
ZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KIAogICAgICAgICBBWDogPGlucHV0IHR5cGU9
InN1Ym1pdCI+IHVubGFiZWxsZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGQ2M2E4
NjNjYTY0ODFjMzdhOTgyNmFlNzAyYjc0NzM5YTMxYWJkMWQuLjcxYmFiN2NmNDViZmEzYTY5YmE2
MWM3YjYwNzA5YWE2MmFjOWIwMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTMgQEAKKzIwMTItMDctMTcgIEpvc2h1YSBCZWxsICA8anNiZWxsQGNocm9taXVtLm9yZz4K
KworICAgICAgICBJbmRleGVkREI6IEZpeCBzb21lIGNvZGluZyBzdHlsZSB2aW9sYXRpb25zCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTU2NQorCisg
ICAgICAgIFJldmlld2VkIGJ5IFRvbnkgQ2hhbmcuCisKKyAgICAgICAgKiB0ZXN0cy9JREJMZXZl
bERCQ29kaW5nVGVzdC5jcHA6CisgICAgICAgIChJREJMZXZlbERCQ29kaW5nOjpURVNUKToKKwog
MjAxMi0wNy0xNyAgU2hhd24gU2luZ2ggIDxzaGF3bnNpbmdoQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBbY2hyb21pdW1dIFJlbW92ZSBhd2t3YXJkIGFuY2hvclBvaW50IHVzYWdlIHRoYXQgaW1w
bGljaXR5IGFmZmVjdHMgbGF5ZXIgcG9zaXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmNwcAppbmRleCBmZTU4
OTg4ZTQyZTI4ZTMyMDJiYmM2MDdmZmQ4NmNlZjJhMjYzNTc4Li5iNzRjOTU4NTEwYzg1NmU4ZWJk
YWE0MTU0YjA5MTU4YWE3NDU5NTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEltcGwuY3BwCkBAIC0xODksNyArMTg5
LDcgQEAgdm9pZCBJREJDdXJzb3JCYWNrZW5kSW1wbDo6cHJlZmV0Y2hDb250aW51ZUludGVybmFs
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXMKICAgICBpZiAoY3Vyc29yLT5tX2N1cnNvcikK
ICAgICAgICAgY3Vyc29yLT5tX3NhdmVkQ3Vyc29yID0gY3Vyc29yLT5tX2N1cnNvci0+Y2xvbmUo
KTsKIAotICAgIGNvbnN0IHNpemVfdCBrTWF4U2l6ZUVzdGltYXRlID0gMTAgKiAxMDI0ICogMTAy
NDsKKyAgICBjb25zdCBzaXplX3QgbWF4U2l6ZUVzdGltYXRlID0gMTAgKiAxMDI0ICogMTAyNDsK
ICAgICBzaXplX3Qgc2l6ZUVzdGltYXRlID0gMDsKIAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
bnVtYmVyVG9GZXRjaDsgKytpKSB7CkBAIC0yMTEsNyArMjExLDcgQEAgdm9pZCBJREJDdXJzb3JC
YWNrZW5kSW1wbDo6cHJlZmV0Y2hDb250aW51ZUludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBQYXMKICAgICAgICAgaWYgKGN1cnNvci0+bV9jdXJzb3JUeXBlICE9IElEQkN1cnNvckJh
Y2tlbmRJbnRlcmZhY2U6OkluZGV4S2V5Q3Vyc29yKQogICAgICAgICAgICAgc2l6ZUVzdGltYXRl
ICs9IGN1cnNvci0+bV9jdXJzb3ItPnZhbHVlKCkubGVuZ3RoKCkgKiBzaXplb2YoVUNoYXIpOwog
Ci0gICAgICAgIGlmIChzaXplRXN0aW1hdGUgPiBrTWF4U2l6ZUVzdGltYXRlKQorICAgICAgICBp
ZiAoc2l6ZUVzdGltYXRlID4gbWF4U2l6ZUVzdGltYXRlKQogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJG
YWN0b3J5QmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcAppbmRleCAzY2NlMGMzNzU1MDkyN2I3MTQ3ZDk0YWM4
YzRjNDc4YTUxODYxMjNkLi5kZmIxNDU3YTMwNmRhYTdhNTY4YzIxYWY2ZWZhMzQ1NDZjZTNmZjQ2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5
QmFja2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkZhY3RvcnlCYWNrZW5kSW1wbC5jcHAKQEAgLTQ0LDggKzQ0LDggQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBzdGF0aWMgU3RyaW5nIGNvbXB1dGVGaWxlSWRlbnRpZmllcihTZWN1cml0eU9yaWdp
biogc2VjdXJpdHlPcmlnaW4pCiB7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIga0xldmVsREJGaWxl
U3VmZml4W10gPSAiQDEiOwotICAgIHJldHVybiBzZWN1cml0eU9yaWdpbi0+ZGF0YWJhc2VJZGVu
dGlmaWVyKCkgKyBrTGV2ZWxEQkZpbGVTdWZmaXg7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgbGV2
ZWxEQkZpbGVTdWZmaXhbXSA9ICJAMSI7CisgICAgcmV0dXJuIHNlY3VyaXR5T3JpZ2luLT5kYXRh
YmFzZUlkZW50aWZpZXIoKSArIGxldmVsREJGaWxlU3VmZml4OwogfQogCiBzdGF0aWMgU3RyaW5n
IGNvbXB1dGVVbmlxdWVJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgbmFtZSwgU2VjdXJpdHlPcmln
aW4qIHNlY3VyaXR5T3JpZ2luKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCS2V5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJL
ZXkuaAppbmRleCA3ZGViZjBkODhmNzgzYjYwMmY0MmIyN2IxMzhmODYwZGMwZDE1ZTg2Li44NTk4
NzI5ZDdlYzQyNWQ1MDg1Nzc5YTVjYmY1YjBhNzAyNmM4NTY3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJLZXkuaApAQCAtMTQ4LDEwICsxNDgsMTAgQEAgcHVibGljOgog
ICAgIHVzaW5nIFRocmVhZFNhZmVSZWZDb3VudGVkPElEQktleT46OmRlcmVmOwogCiBwcml2YXRl
OgotICAgIElEQktleSgpIDogbV90eXBlKEludmFsaWRUeXBlKSwgbV9udW1iZXIoMCksIG1fc2l6
ZUVzdGltYXRlKGtPdmVyaGVhZFNpemUpIHsgfQotICAgIElEQktleShUeXBlIHR5cGUsIGRvdWJs
ZSBudW1iZXIpIDogbV90eXBlKHR5cGUpLCBtX251bWJlcihudW1iZXIpLCBtX3NpemVFc3RpbWF0
ZShrT3ZlcmhlYWRTaXplICsgc2l6ZW9mKGRvdWJsZSkpIHsgfQotICAgIGV4cGxpY2l0IElEQktl
eShjb25zdCBTdHJpbmcmIHZhbHVlKSA6IG1fdHlwZShTdHJpbmdUeXBlKSwgbV9zdHJpbmcodmFs
dWUpLCBtX251bWJlcigwKSwgbV9zaXplRXN0aW1hdGUoa092ZXJoZWFkU2l6ZSArIHZhbHVlLmxl
bmd0aCgpICogc2l6ZW9mKFVDaGFyKSkgeyB9Ci0gICAgSURCS2V5KGNvbnN0IEtleUFycmF5JiBr
ZXlBcnJheSwgc2l6ZV90IGFycmF5U2l6ZSkgOiBtX3R5cGUoQXJyYXlUeXBlKSwgbV9hcnJheShr
ZXlBcnJheSksIG1fbnVtYmVyKDApLCBtX3NpemVFc3RpbWF0ZShrT3ZlcmhlYWRTaXplICsgYXJy
YXlTaXplKSB7IH0KKyAgICBJREJLZXkoKSA6IG1fdHlwZShJbnZhbGlkVHlwZSksIG1fbnVtYmVy
KDApLCBtX3NpemVFc3RpbWF0ZShPdmVyaGVhZFNpemUpIHsgfQorICAgIElEQktleShUeXBlIHR5
cGUsIGRvdWJsZSBudW1iZXIpIDogbV90eXBlKHR5cGUpLCBtX251bWJlcihudW1iZXIpLCBtX3Np
emVFc3RpbWF0ZShPdmVyaGVhZFNpemUgKyBzaXplb2YoZG91YmxlKSkgeyB9CisgICAgZXhwbGlj
aXQgSURCS2V5KGNvbnN0IFN0cmluZyYgdmFsdWUpIDogbV90eXBlKFN0cmluZ1R5cGUpLCBtX3N0
cmluZyh2YWx1ZSksIG1fbnVtYmVyKDApLCBtX3NpemVFc3RpbWF0ZShPdmVyaGVhZFNpemUgKyB2
YWx1ZS5sZW5ndGgoKSAqIHNpemVvZihVQ2hhcikpIHsgfQorICAgIElEQktleShjb25zdCBLZXlB
cnJheSYga2V5QXJyYXksIHNpemVfdCBhcnJheVNpemUpIDogbV90eXBlKEFycmF5VHlwZSksIG1f
YXJyYXkoa2V5QXJyYXkpLCBtX251bWJlcigwKSwgbV9zaXplRXN0aW1hdGUoT3ZlcmhlYWRTaXpl
ICsgYXJyYXlTaXplKSB7IH0KIAogICAgIGNvbnN0IFR5cGUgbV90eXBlOwogICAgIGNvbnN0IEtl
eUFycmF5IG1fYXJyYXk7CkBAIC0xNjEsNyArMTYxLDcgQEAgcHJpdmF0ZToKICAgICBjb25zdCBz
aXplX3QgbV9zaXplRXN0aW1hdGU7CiAKICAgICAvLyBWZXJ5IHJvdWdoIGVzdGltYXRlIG9mIG1p
bmltdW0ga2V5IHNpemUgb3ZlcmhlYWQuCi0gICAgZW51bSB7IGtPdmVyaGVhZFNpemUgPSAxNiB9
OworICAgIGVudW0geyBPdmVyaGVhZFNpemUgPSAxNiB9OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0
b3JlLmNwcAppbmRleCA4MzJjZDRjOWRiMTQ5ZGQxMzg1NmRjODI1NjdjZDBlMjg1NTM2NjZmLi4z
MmUyZjY4MTU3OTQwOWEwOTA4ZDI5YTE4NzJjMGNkYzU2Yjg5ZWY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0
b3JlLmNwcApAQCAtMjIzLDggKzIyMyw4IEBAIHZvaWQgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6
Z2V0RGF0YWJhc2VOYW1lcyhWZWN0b3I8U3RyaW5nPiYgZm91bmROYW1lcykKIAogICAgIE93blB0
cjxMZXZlbERCSXRlcmF0b3I+IGl0ID0gbV9kYi0+Y3JlYXRlSXRlcmF0b3IoKTsKICAgICBmb3Ig
KGl0LT5zZWVrKHN0YXJ0S2V5KTsgaXQtPmlzVmFsaWQoKSAmJiBjb21wYXJlS2V5cyhpdC0+a2V5
KCksIHN0b3BLZXkpIDwgMDsgaXQtPm5leHQoKSkgewotICAgICAgICBjb25zdCBjaGFyICpwID0g
aXQtPmtleSgpLmJlZ2luKCk7Ci0gICAgICAgIGNvbnN0IGNoYXIgKmxpbWl0ID0gaXQtPmtleSgp
LmVuZCgpOworICAgICAgICBjb25zdCBjaGFyKiBwID0gaXQtPmtleSgpLmJlZ2luKCk7CisgICAg
ICAgIGNvbnN0IGNoYXIqIGxpbWl0ID0gaXQtPmtleSgpLmVuZCgpOwogCiAgICAgICAgIERhdGFi
YXNlTmFtZUtleSBkYXRhYmFzZU5hbWVLZXk7CiAgICAgICAgIHAgPSBEYXRhYmFzZU5hbWVLZXk6
OmRlY29kZShwLCBsaW1pdCwgJmRhdGFiYXNlTmFtZUtleSk7CkBAIC0yNDIsNyArMjQyLDcgQEAg
Ym9vbCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpnZXRJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0
IFN0cmluZyYgbmFtZSwgU3RyaW5nJgogICAgIGlmICghb2spCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIG9rID0gZ2V0U3RyaW5nKG1fZGIuZ2V0KCksIERhdGFiYXNlTWV0YURhdGFLZXk6
OmVuY29kZShmb3VuZElkLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjprVXNlclZlcnNpb24pLCBmb3Vu
ZFZlcnNpb24pOworICAgIG9rID0gZ2V0U3RyaW5nKG1fZGIuZ2V0KCksIERhdGFiYXNlTWV0YURh
dGFLZXk6OmVuY29kZShmb3VuZElkLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjpVc2VyVmVyc2lvbiks
IGZvdW5kVmVyc2lvbik7CiAgICAgaWYgKCFvaykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBA
IC0yNzMsNyArMjczLDcgQEAgYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpjcmVhdGVJREJE
YXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QKICAgICBjb25zdCBWZWN0
b3I8Y2hhcj4ga2V5ID0gRGF0YWJhc2VOYW1lS2V5OjplbmNvZGUobV9pZGVudGlmaWVyLCBuYW1l
KTsKICAgICBpZiAoIXB1dEludChtX2RiLmdldCgpLCBrZXksIHJvd0lkKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIGlmICghcHV0U3RyaW5nKG1fZGIuZ2V0KCksIERhdGFiYXNlTWV0YURh
dGFLZXk6OmVuY29kZShyb3dJZCwgRGF0YWJhc2VNZXRhRGF0YUtleTo6a1VzZXJWZXJzaW9uKSwg
dmVyc2lvbikpCisgICAgaWYgKCFwdXRTdHJpbmcobV9kYi5nZXQoKSwgRGF0YWJhc2VNZXRhRGF0
YUtleTo6ZW5jb2RlKHJvd0lkLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjpVc2VyVmVyc2lvbiksIHZl
cnNpb24pKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0y
ODEsNyArMjgxLDcgQEAgYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpjcmVhdGVJREJEYXRh
YmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QKIGJvb2wgSURCTGV2ZWxEQkJh
Y2tpbmdTdG9yZTo6dXBkYXRlSURCRGF0YWJhc2VNZXRhRGF0YShpbnQ2NF90IHJvd0lkLCBjb25z
dCBTdHJpbmcmIHZlcnNpb24pCiB7CiAgICAgQVNTRVJUKG1fY3VycmVudFRyYW5zYWN0aW9uKTsK
LSAgICBpZiAoIXB1dFN0cmluZyhtX2N1cnJlbnRUcmFuc2FjdGlvbi5nZXQoKSwgRGF0YWJhc2VN
ZXRhRGF0YUtleTo6ZW5jb2RlKHJvd0lkLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjprVXNlclZlcnNp
b24pLCB2ZXJzaW9uKSkKKyAgICBpZiAoIXB1dFN0cmluZyhtX2N1cnJlbnRUcmFuc2FjdGlvbi5n
ZXQoKSwgRGF0YWJhc2VNZXRhRGF0YUtleTo6ZW5jb2RlKHJvd0lkLCBEYXRhYmFzZU1ldGFEYXRh
S2V5OjpVc2VyVmVyc2lvbiksIHZlcnNpb24pKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICByZXR1cm4gdHJ1ZTsKQEAgLTMxMCw4ICszMTAsOCBAQCBib29sIElEQkxldmVsREJCYWNraW5n
U3RvcmU6OmRlbGV0ZURhdGFiYXNlKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogCi0gICAgY29uc3QgVmVjdG9yPGNoYXI+IHN0YXJ0S2V5ID0gRGF0YWJh
c2VNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIERhdGFiYXNlTWV0YURhdGFLZXk6OmtP
cmlnaW5OYW1lKTsKLSAgICBjb25zdCBWZWN0b3I8Y2hhcj4gc3RvcEtleSA9IERhdGFiYXNlTWV0
YURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkICsgMSwgRGF0YWJhc2VNZXRhRGF0YUtleTo6a09y
aWdpbk5hbWUpOworICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBzdGFydEtleSA9IERhdGFiYXNlTWV0
YURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjpPcmlnaW5O
YW1lKTsKKyAgICBjb25zdCBWZWN0b3I8Y2hhcj4gc3RvcEtleSA9IERhdGFiYXNlTWV0YURhdGFL
ZXk6OmVuY29kZShkYXRhYmFzZUlkICsgMSwgRGF0YWJhc2VNZXRhRGF0YUtleTo6T3JpZ2luTmFt
ZSk7CiAgICAgaWYgKCFkZWxldGVSYW5nZSh0cmFuc2FjdGlvbi5nZXQoKSwgc3RhcnRLZXksIHN0
b3BLZXkpKSB7CiAgICAgICAgIHRyYW5zYWN0aW9uLT5yb2xsYmFjaygpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC0zNTEsMTMgKzM1MSwxMyBAQCB2b2lkIElEQkxldmVsREJCYWNraW5nU3Rv
cmU6OmdldE9iamVjdFN0b3JlcyhpbnQ2NF90IGRhdGFiYXNlSWQsIFZlY3RvcjxpbnQ2NF90Pgog
ICAgIE93blB0cjxMZXZlbERCSXRlcmF0b3I+IGl0ID0gbV9kYi0+Y3JlYXRlSXRlcmF0b3IoKTsK
ICAgICBpdC0+c2VlayhzdGFydEtleSk7CiAgICAgd2hpbGUgKGl0LT5pc1ZhbGlkKCkgJiYgY29t
cGFyZUtleXMoaXQtPmtleSgpLCBzdG9wS2V5KSA8IDApIHsKLSAgICAgICAgY29uc3QgY2hhciAq
cCA9IGl0LT5rZXkoKS5iZWdpbigpOwotICAgICAgICBjb25zdCBjaGFyICpsaW1pdCA9IGl0LT5r
ZXkoKS5lbmQoKTsKKyAgICAgICAgY29uc3QgY2hhciogcCA9IGl0LT5rZXkoKS5iZWdpbigpOwor
ICAgICAgICBjb25zdCBjaGFyKiBsaW1pdCA9IGl0LT5rZXkoKS5lbmQoKTsKIAogICAgICAgICBP
YmplY3RTdG9yZU1ldGFEYXRhS2V5IG1ldGFEYXRhS2V5OwogICAgICAgICBwID0gT2JqZWN0U3Rv
cmVNZXRhRGF0YUtleTo6ZGVjb2RlKHAsIGxpbWl0LCAmbWV0YURhdGFLZXkpOwogICAgICAgICBB
U1NFUlQocCk7Ci0gICAgICAgIGlmIChtZXRhRGF0YUtleS5tZXRhRGF0YVR5cGUoKSAhPSBPYmpl
Y3RTdG9yZU1ldGFEYXRhS2V5OjprTmFtZSkgeworICAgICAgICBpZiAobWV0YURhdGFLZXkubWV0
YURhdGFUeXBlKCkgIT0gT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6TmFtZSkgewogICAgICAgICAg
ICAgTE9HX0VSUk9SKCJJbnRlcm5hbCBJbmRleGVkIERCIGVycm9yLiIpOwogICAgICAgICAgICAg
Ly8gUG9zc2libGUgc3RhbGUgbWV0YWRhdGEsIGJ1dCBkb24ndCBmYWlsIHRoZSBsb2FkLgogICAg
ICAgICAgICAgaXQtPm5leHQoKTsKQEAgLTM3MCwzOSArMzcwLDM5IEBAIHZvaWQgSURCTGV2ZWxE
QkJhY2tpbmdTdG9yZTo6Z2V0T2JqZWN0U3RvcmVzKGludDY0X3QgZGF0YWJhc2VJZCwgVmVjdG9y
PGludDY0X3Q+CiAgICAgICAgIFN0cmluZyBvYmplY3RTdG9yZU5hbWUgPSBkZWNvZGVTdHJpbmco
aXQtPnZhbHVlKCkuYmVnaW4oKSwgaXQtPnZhbHVlKCkuZW5kKCkpOwogCiAgICAgICAgIGl0LT5u
ZXh0KCk7Ci0gICAgICAgIGlmICghY2hlY2tPYmplY3RTdG9yZUFuZE1ldGFEYXRhVHlwZShpdC5n
ZXQoKSwgc3RvcEtleSwgb2JqZWN0U3RvcmVJZCwgT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6a0tl
eVBhdGgpKSB7CisgICAgICAgIGlmICghY2hlY2tPYmplY3RTdG9yZUFuZE1ldGFEYXRhVHlwZShp
dC5nZXQoKSwgc3RvcEtleSwgb2JqZWN0U3RvcmVJZCwgT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6
S2V5UGF0aCkpIHsKICAgICAgICAgICAgIExPR19FUlJPUigiSW50ZXJuYWwgSW5kZXhlZCBEQiBl
cnJvci4iKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBJREJLZXlQ
YXRoIGtleVBhdGggPSBkZWNvZGVJREJLZXlQYXRoKGl0LT52YWx1ZSgpLmJlZ2luKCksIGl0LT52
YWx1ZSgpLmVuZCgpKTsKIAogICAgICAgICBpdC0+bmV4dCgpOwotICAgICAgICBpZiAoIWNoZWNr
T2JqZWN0U3RvcmVBbmRNZXRhRGF0YVR5cGUoaXQuZ2V0KCksIHN0b3BLZXksIG9iamVjdFN0b3Jl
SWQsIE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmtBdXRvSW5jcmVtZW50KSkgeworICAgICAgICBp
ZiAoIWNoZWNrT2JqZWN0U3RvcmVBbmRNZXRhRGF0YVR5cGUoaXQuZ2V0KCksIHN0b3BLZXksIG9i
amVjdFN0b3JlSWQsIE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OkF1dG9JbmNyZW1lbnQpKSB7CiAg
ICAgICAgICAgICBMT0dfRVJST1IoIkludGVybmFsIEluZGV4ZWQgREIgZXJyb3IuIik7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgYm9vbCBhdXRvSW5jcmVtZW50ID0g
ZGVjb2RlQm9vbChpdC0+dmFsdWUoKS5iZWdpbigpLCBpdC0+dmFsdWUoKS5lbmQoKSk7CiAKICAg
ICAgICAgaXQtPm5leHQoKTsgLy8gSXMgZXZpY2F0YmxlLgotICAgICAgICBpZiAoIWNoZWNrT2Jq
ZWN0U3RvcmVBbmRNZXRhRGF0YVR5cGUoaXQuZ2V0KCksIHN0b3BLZXksIG9iamVjdFN0b3JlSWQs
IE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmtFdmljdGFibGUpKSB7CisgICAgICAgIGlmICghY2hl
Y2tPYmplY3RTdG9yZUFuZE1ldGFEYXRhVHlwZShpdC5nZXQoKSwgc3RvcEtleSwgb2JqZWN0U3Rv
cmVJZCwgT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6RXZpY3RhYmxlKSkgewogICAgICAgICAgICAg
TE9HX0VSUk9SKCJJbnRlcm5hbCBJbmRleGVkIERCIGVycm9yLiIpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKICAgICAgICAgaXQtPm5leHQoKTsgLy8gTGFzdCB2ZXJzaW9uLgot
ICAgICAgICBpZiAoIWNoZWNrT2JqZWN0U3RvcmVBbmRNZXRhRGF0YVR5cGUoaXQuZ2V0KCksIHN0
b3BLZXksIG9iamVjdFN0b3JlSWQsIE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmtMYXN0VmVyc2lv
bikpIHsKKyAgICAgICAgaWYgKCFjaGVja09iamVjdFN0b3JlQW5kTWV0YURhdGFUeXBlKGl0Lmdl
dCgpLCBzdG9wS2V5LCBvYmplY3RTdG9yZUlkLCBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjpMYXN0
VmVyc2lvbikpIHsKICAgICAgICAgICAgIExPR19FUlJPUigiSW50ZXJuYWwgSW5kZXhlZCBEQiBl
cnJvci4iKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGl0LT5u
ZXh0KCk7IC8vIE1heGltdW0gaW5kZXggaWQgYWxsb2NhdGVkLgotICAgICAgICBpZiAoIWNoZWNr
T2JqZWN0U3RvcmVBbmRNZXRhRGF0YVR5cGUoaXQuZ2V0KCksIHN0b3BLZXksIG9iamVjdFN0b3Jl
SWQsIE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmtNYXhJbmRleElkKSkgeworICAgICAgICBpZiAo
IWNoZWNrT2JqZWN0U3RvcmVBbmRNZXRhRGF0YVR5cGUoaXQuZ2V0KCksIHN0b3BLZXksIG9iamVj
dFN0b3JlSWQsIE9iamVjdFN0b3JlTWV0YURhdGFLZXk6Ok1heEluZGV4SWQpKSB7CiAgICAgICAg
ICAgICBMT0dfRVJST1IoIkludGVybmFsIEluZGV4ZWQgREIgZXJyb3IuIik7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBpdC0+bmV4dCgpOyAvLyBbb3B0aW9uYWxd
IGhhcyBrZXkgcGF0aCAoaXMgbm90IG51bGwpCi0gICAgICAgIGlmIChjaGVja09iamVjdFN0b3Jl
QW5kTWV0YURhdGFUeXBlKGl0LmdldCgpLCBzdG9wS2V5LCBvYmplY3RTdG9yZUlkLCBPYmplY3RT
dG9yZU1ldGFEYXRhS2V5OjprSGFzS2V5UGF0aCkpIHsKKyAgICAgICAgaWYgKGNoZWNrT2JqZWN0
U3RvcmVBbmRNZXRhRGF0YVR5cGUoaXQuZ2V0KCksIHN0b3BLZXksIG9iamVjdFN0b3JlSWQsIE9i
amVjdFN0b3JlTWV0YURhdGFLZXk6Okhhc0tleVBhdGgpKSB7CiAgICAgICAgICAgICBib29sIGhh
c0tleVBhdGggPSBkZWNvZGVCb29sKGl0LT52YWx1ZSgpLmJlZ2luKCksIGl0LT52YWx1ZSgpLmVu
ZCgpKTsKICAgICAgICAgICAgIC8vIFRoaXMgY2hlY2sgYWNjb3VudHMgZm9yIHR3byBsYXllcnMg
b2YgbGVnYWN5IGNvZGluZzoKICAgICAgICAgICAgIC8vICgxKSBJbml0aWFsbHksIGhhc0tleVBh
dGggd2FzIGFkZGVkIHRvIGRpc3Rpbmd1aXNoIG51bGwgdnMuIHN0cmluZy4KQEAgLTQxOCw3ICs0
MTgsNyBAQCB2b2lkIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmdldE9iamVjdFN0b3JlcyhpbnQ2
NF90IGRhdGFiYXNlSWQsIFZlY3RvcjxpbnQ2NF90PgogICAgICAgICB9CiAKICAgICAgICAgaW50
NjRfdCBrZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVyID0gLTE7Ci0gICAgICAgIGlmIChjaGVja09i
amVjdFN0b3JlQW5kTWV0YURhdGFUeXBlKGl0LmdldCgpLCBzdG9wS2V5LCBvYmplY3RTdG9yZUlk
LCBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjprS2V5R2VuZXJhdG9yQ3VycmVudE51bWJlcikpIHsK
KyAgICAgICAgaWYgKGNoZWNrT2JqZWN0U3RvcmVBbmRNZXRhRGF0YVR5cGUoaXQuZ2V0KCksIHN0
b3BLZXksIG9iamVjdFN0b3JlSWQsIE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OktleUdlbmVyYXRv
ckN1cnJlbnROdW1iZXIpKSB7CiAgICAgICAgICAgICBrZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVy
ID0gZGVjb2RlSW50KGl0LT52YWx1ZSgpLmJlZ2luKCksIGl0LT52YWx1ZSgpLmVuZCgpKTsKICAg
ICAgICAgICAgIC8vIEZJWE1FOiBSZXR1cm4ga2V5R2VuZXJhdG9yQ3VycmVudE51bWJlciwgY2Fj
aGUgaW4gb2JqZWN0IHN0b3JlLCBhbmQgd3JpdGUgbGF6aWx5IHRvIGJhY2tpbmcgc3RvcmUuCiAg
ICAgICAgICAgICAvLyBGb3Igbm93LCBqdXN0IGFzc2VydCB0aGF0IGlmIGl0IHdhcyB3cml0dGVu
IGl0IHdhcyB2YWxpZC4KQEAgLTQzNiw3ICs0MzYsNyBAQCB2b2lkIElEQkxldmVsREJCYWNraW5n
U3RvcmU6OmdldE9iamVjdFN0b3JlcyhpbnQ2NF90IGRhdGFiYXNlSWQsIFZlY3RvcjxpbnQ2NF90
Pgogc3RhdGljIGludDY0X3QgZ2V0TmV3T2JqZWN0U3RvcmVJZChMZXZlbERCVHJhbnNhY3Rpb24q
IHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQpCiB7CiAgICAgaW50NjRfdCBtYXhPYmpl
Y3RTdG9yZUlkID0gLTE7Ci0gICAgY29uc3QgVmVjdG9yPGNoYXI+IG1heE9iamVjdFN0b3JlSWRL
ZXkgPSBEYXRhYmFzZU1ldGFEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgRGF0YWJhc2VNZXRh
RGF0YUtleTo6a01heE9iamVjdFN0b3JlSWQpOworICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBtYXhP
YmplY3RTdG9yZUlkS2V5ID0gRGF0YWJhc2VNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQs
IERhdGFiYXNlTWV0YURhdGFLZXk6Ok1heE9iamVjdFN0b3JlSWQpOwogICAgIGlmICghZ2V0SW50
KHRyYW5zYWN0aW9uLCBtYXhPYmplY3RTdG9yZUlkS2V5LCBtYXhPYmplY3RTdG9yZUlkKSkKICAg
ICAgICAgbWF4T2JqZWN0U3RvcmVJZCA9IDA7CiAKQEAgLTQ1NiwxNCArNDU2LDE0IEBAIGJvb2wg
SURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlT2JqZWN0U3RvcmUoaW50NjRfdCBkYXRhYmFz
ZUlkLCBjb25zdCBTdHJpbmcmCiAgICAgaWYgKG9iamVjdFN0b3JlSWQgPCAwKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBjb25zdCBWZWN0b3I8Y2hhcj4gbmFtZUtleSA9IE9iamVjdFN0
b3JlTWV0YURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBPYmplY3RT
dG9yZU1ldGFEYXRhS2V5OjprTmFtZSk7Ci0gICAgY29uc3QgVmVjdG9yPGNoYXI+IGtleVBhdGhL
ZXkgPSBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3Rv
cmVJZCwgT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6a0tleVBhdGgpOwotICAgIGNvbnN0IFZlY3Rv
cjxjaGFyPiBhdXRvSW5jcmVtZW50S2V5ID0gT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6ZW5jb2Rl
KGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmtBdXRv
SW5jcmVtZW50KTsKLSAgICBjb25zdCBWZWN0b3I8Y2hhcj4gZXZpY3RhYmxlS2V5ID0gT2JqZWN0
U3RvcmVNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIE9iamVj
dFN0b3JlTWV0YURhdGFLZXk6OmtFdmljdGFibGUpOwotICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBs
YXN0VmVyc2lvbktleSA9IE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlk
LCBvYmplY3RTdG9yZUlkLCBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjprTGFzdFZlcnNpb24pOwot
ICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBtYXhJbmRleElkS2V5ID0gT2JqZWN0U3RvcmVNZXRhRGF0
YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIE9iamVjdFN0b3JlTWV0YURh
dGFLZXk6OmtNYXhJbmRleElkKTsKLSAgICBjb25zdCBWZWN0b3I8Y2hhcj4gaGFzS2V5UGF0aEtl
eSAgPSBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3Rv
cmVJZCwgT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6a0hhc0tleVBhdGgpOwotICAgIGNvbnN0IFZl
Y3RvcjxjaGFyPiBrZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVyS2V5ID0gT2JqZWN0U3RvcmVNZXRh
RGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIE9iamVjdFN0b3JlTWV0
YURhdGFLZXk6OmtLZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVyKTsKKyAgICBjb25zdCBWZWN0b3I8
Y2hhcj4gbmFtZUtleSA9IE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlk
LCBvYmplY3RTdG9yZUlkLCBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjpOYW1lKTsKKyAgICBjb25z
dCBWZWN0b3I8Y2hhcj4ga2V5UGF0aEtleSA9IE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmVuY29k
ZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjpLZXlQ
YXRoKTsKKyAgICBjb25zdCBWZWN0b3I8Y2hhcj4gYXV0b0luY3JlbWVudEtleSA9IE9iamVjdFN0
b3JlTWV0YURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBPYmplY3RT
dG9yZU1ldGFEYXRhS2V5OjpBdXRvSW5jcmVtZW50KTsKKyAgICBjb25zdCBWZWN0b3I8Y2hhcj4g
ZXZpY3RhYmxlS2V5ID0gT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQs
IG9iamVjdFN0b3JlSWQsIE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OkV2aWN0YWJsZSk7CisgICAg
Y29uc3QgVmVjdG9yPGNoYXI+IGxhc3RWZXJzaW9uS2V5ID0gT2JqZWN0U3RvcmVNZXRhRGF0YUtl
eTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIE9iamVjdFN0b3JlTWV0YURhdGFL
ZXk6Okxhc3RWZXJzaW9uKTsKKyAgICBjb25zdCBWZWN0b3I8Y2hhcj4gbWF4SW5kZXhJZEtleSA9
IE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlk
LCBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjpNYXhJbmRleElkKTsKKyAgICBjb25zdCBWZWN0b3I8
Y2hhcj4gaGFzS2V5UGF0aEtleSAgPSBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjplbmNvZGUoZGF0
YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6SGFzS2V5UGF0
aCk7CisgICAgY29uc3QgVmVjdG9yPGNoYXI+IGtleUdlbmVyYXRvckN1cnJlbnROdW1iZXJLZXkg
PSBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJ
ZCwgT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6S2V5R2VuZXJhdG9yQ3VycmVudE51bWJlcik7CiAg
ICAgY29uc3QgVmVjdG9yPGNoYXI+IG5hbWVzS2V5ID0gT2JqZWN0U3RvcmVOYW1lc0tleTo6ZW5j
b2RlKGRhdGFiYXNlSWQsIG5hbWUpOwogCiAgICAgYm9vbCBvayA9IHB1dFN0cmluZyhtX2N1cnJl
bnRUcmFuc2FjdGlvbi5nZXQoKSwgbmFtZUtleSwgbmFtZSk7CkBAIC00OTYsNyArNDk2LDcgQEAg
Ym9vbCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpjcmVhdGVPYmplY3RTdG9yZShpbnQ2NF90IGRh
dGFiYXNlSWQsIGNvbnN0IFN0cmluZyYKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAot
ICAgIG9rID0gcHV0SW50KG1fY3VycmVudFRyYW5zYWN0aW9uLmdldCgpLCBtYXhJbmRleElkS2V5
LCBrTWluaW11bUluZGV4SWQpOworICAgIG9rID0gcHV0SW50KG1fY3VycmVudFRyYW5zYWN0aW9u
LmdldCgpLCBtYXhJbmRleElkS2V5LCBNaW5pbXVtSW5kZXhJZCk7CiAgICAgaWYgKCFvaykgewog
ICAgICAgICBMT0dfRVJST1IoIkludGVybmFsIEluZGV4ZWQgREIgZXJyb3IuIik7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTUzMCw3ICs1MzAsNyBAQCB2b2lkIElEQkxldmVsREJCYWNraW5n
U3RvcmU6OmRlbGV0ZU9iamVjdFN0b3JlKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmpl
YwogICAgIEFTU0VSVChtX2N1cnJlbnRUcmFuc2FjdGlvbik7CiAKICAgICBTdHJpbmcgb2JqZWN0
U3RvcmVOYW1lOwotICAgIGdldFN0cmluZyhtX2N1cnJlbnRUcmFuc2FjdGlvbi5nZXQoKSwgT2Jq
ZWN0U3RvcmVNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIE9i
amVjdFN0b3JlTWV0YURhdGFLZXk6OmtOYW1lKSwgb2JqZWN0U3RvcmVOYW1lKTsKKyAgICBnZXRT
dHJpbmcobV9jdXJyZW50VHJhbnNhY3Rpb24uZ2V0KCksIE9iamVjdFN0b3JlTWV0YURhdGFLZXk6
OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBPYmplY3RTdG9yZU1ldGFEYXRhS2V5
OjpOYW1lKSwgb2JqZWN0U3RvcmVOYW1lKTsKIAogICAgIGlmICghZGVsZXRlUmFuZ2UobV9jdXJy
ZW50VHJhbnNhY3Rpb24uZ2V0KCksIE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmVuY29kZShkYXRh
YmFzZUlkLCBvYmplY3RTdG9yZUlkLCAwKSwgT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6ZW5jb2Rl
TWF4S2V5KGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQpKSkKICAgICAgICAgcmV0dXJuOyAvLyBG
SVhNRTogUmVwb3J0IGVycm9yLgpAQCAtNTg2LDcgKzU4Niw3IEBAIHByaXZhdGU6CiAKIHN0YXRp
YyBpbnQ2NF90IGdldE5ld1ZlcnNpb25OdW1iZXIoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2Fj
dGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpCiB7Ci0gICAg
Y29uc3QgVmVjdG9yPGNoYXI+IGxhc3RWZXJzaW9uS2V5ID0gT2JqZWN0U3RvcmVNZXRhRGF0YUtl
eTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIE9iamVjdFN0b3JlTWV0YURhdGFL
ZXk6OmtMYXN0VmVyc2lvbik7CisgICAgY29uc3QgVmVjdG9yPGNoYXI+IGxhc3RWZXJzaW9uS2V5
ID0gT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3Jl
SWQsIE9iamVjdFN0b3JlTWV0YURhdGFLZXk6Okxhc3RWZXJzaW9uKTsKIAogICAgIGludDY0X3Qg
bGFzdFZlcnNpb24gPSAtMTsKICAgICBpZiAoIWdldEludCh0cmFuc2FjdGlvbiwgbGFzdFZlcnNp
b25LZXksIGxhc3RWZXJzaW9uKSkKQEAgLTY1OCw3ICs2NTgsNyBAQCBpbnQ2NF90IElEQkxldmVs
REJCYWNraW5nU3RvcmU6OmdldEtleUdlbmVyYXRvckN1cnJlbnROdW1iZXIoaW50NjRfdCBkYXRh
YmFzZUlkLAogewogICAgIEFTU0VSVChtX2N1cnJlbnRUcmFuc2FjdGlvbik7CiAKLSAgICBjb25z
dCBWZWN0b3I8Y2hhcj4ga2V5R2VuZXJhdG9yQ3VycmVudE51bWJlcktleSA9IE9iamVjdFN0b3Jl
TWV0YURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBPYmplY3RTdG9y
ZU1ldGFEYXRhS2V5OjprS2V5R2VuZXJhdG9yQ3VycmVudE51bWJlcik7CisgICAgY29uc3QgVmVj
dG9yPGNoYXI+IGtleUdlbmVyYXRvckN1cnJlbnROdW1iZXJLZXkgPSBPYmplY3RTdG9yZU1ldGFE
YXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgT2JqZWN0U3RvcmVNZXRh
RGF0YUtleTo6S2V5R2VuZXJhdG9yQ3VycmVudE51bWJlcik7CiAKICAgICBpbnQ2NF90IGtleUdl
bmVyYXRvckN1cnJlbnROdW1iZXIgPSAtMTsKICAgICBWZWN0b3I8Y2hhcj4gZGF0YTsKQEAgLTcw
Niw3ICs3MDYsNyBAQCBib29sIElEQkxldmVsREJCYWNraW5nU3RvcmU6Om1heWJlVXBkYXRlS2V5
R2VuZXJhdG9yQ3VycmVudE51bWJlcihpbnQ2NF90IGRhdGFiYQogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogCi0gICAgY29uc3QgVmVjdG9yPGNoYXI+IGtleUdlbmVyYXRvckN1cnJl
bnROdW1iZXJLZXkgPSBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwg
b2JqZWN0U3RvcmVJZCwgT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6a0tleUdlbmVyYXRvckN1cnJl
bnROdW1iZXIpOworICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBrZXlHZW5lcmF0b3JDdXJyZW50TnVt
YmVyS2V5ID0gT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVj
dFN0b3JlSWQsIE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OktleUdlbmVyYXRvckN1cnJlbnROdW1i
ZXIpOwogICAgIGJvb2wgb2sgPSBwdXRJbnQobV9jdXJyZW50VHJhbnNhY3Rpb24uZ2V0KCksIGtl
eUdlbmVyYXRvckN1cnJlbnROdW1iZXJLZXksIG5ld051bWJlcik7CiAgICAgaWYgKCFvaykgewog
ICAgICAgICBMT0dfRVJST1IoIkludGVybmFsIEluZGV4ZWQgREIgZXJyb3IuIik7CkBAIC03NDIs
OCArNzQyLDggQEAgYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpmb3JFYWNoT2JqZWN0U3Rv
cmVSZWNvcmQoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF8KIAogICAgIE93blB0cjxMZXZlbERC
SXRlcmF0b3I+IGl0ID0gbV9jdXJyZW50VHJhbnNhY3Rpb24tPmNyZWF0ZUl0ZXJhdG9yKCk7CiAg
ICAgZm9yIChpdC0+c2VlayhzdGFydEtleSk7IGl0LT5pc1ZhbGlkKCkgJiYgY29tcGFyZUtleXMo
aXQtPmtleSgpLCBzdG9wS2V5KSA8IDA7IGl0LT5uZXh0KCkpIHsKLSAgICAgICAgY29uc3QgY2hh
ciAqcCA9IGl0LT5rZXkoKS5iZWdpbigpOwotICAgICAgICBjb25zdCBjaGFyICpsaW1pdCA9IGl0
LT5rZXkoKS5lbmQoKTsKKyAgICAgICAgY29uc3QgY2hhciogcCA9IGl0LT5rZXkoKS5iZWdpbigp
OworICAgICAgICBjb25zdCBjaGFyKiBsaW1pdCA9IGl0LT5rZXkoKS5lbmQoKTsKICAgICAgICAg
T2JqZWN0U3RvcmVEYXRhS2V5IGRhdGFLZXk7CiAgICAgICAgIHAgPSBPYmplY3RTdG9yZURhdGFL
ZXk6OmRlY29kZShwLCBsaW1pdCwgJmRhdGFLZXkpOwogICAgICAgICBBU1NFUlQocCk7CkBAIC04
MDEsNyArODAxLDcgQEAgdm9pZCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpnZXRJbmRleGVzKGlu
dDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUkKICAgICAgICAgSW5kZXhNZXRh
RGF0YUtleSBtZXRhRGF0YUtleTsKICAgICAgICAgcCA9IEluZGV4TWV0YURhdGFLZXk6OmRlY29k
ZShwLCBsaW1pdCwgJm1ldGFEYXRhS2V5KTsKICAgICAgICAgQVNTRVJUKHApOwotICAgICAgICBp
ZiAobWV0YURhdGFLZXkubWV0YURhdGFUeXBlKCkgIT0gSW5kZXhNZXRhRGF0YUtleTo6a05hbWUp
IHsKKyAgICAgICAgaWYgKG1ldGFEYXRhS2V5Lm1ldGFEYXRhVHlwZSgpICE9IEluZGV4TWV0YURh
dGFLZXk6Ok5hbWUpIHsKICAgICAgICAgICAgIExPR19FUlJPUigiSW50ZXJuYWwgSW5kZXhlZCBE
QiBlcnJvci4iKTsKICAgICAgICAgICAgIC8vIFBvc3NpYmxlIHN0YWxlIG1ldGFkYXRhIGR1ZSB0
byBodHRwOi8vd2Via2l0Lm9yZy9iLzg1NTU3IGJ1dCBkb24ndCBmYWlsIHRoZSBsb2FkLgogICAg
ICAgICAgICAgaXQtPm5leHQoKTsKQEAgLTgxMywxNCArODEzLDE0IEBAIHZvaWQgSURCTGV2ZWxE
QkJhY2tpbmdTdG9yZTo6Z2V0SW5kZXhlcyhpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJCiAgICAgICAgIFN0cmluZyBpbmRleE5hbWUgPSBkZWNvZGVTdHJpbmcoaXQtPnZh
bHVlKCkuYmVnaW4oKSwgaXQtPnZhbHVlKCkuZW5kKCkpOwogCiAgICAgICAgIGl0LT5uZXh0KCk7
IC8vIHVuaXF1ZSBmbGFnCi0gICAgICAgIGlmICghY2hlY2tJbmRleEFuZE1ldGFEYXRhS2V5KGl0
LmdldCgpLCBzdG9wS2V5LCBpbmRleElkLCBJbmRleE1ldGFEYXRhS2V5OjprVW5pcXVlKSkgewor
ICAgICAgICBpZiAoIWNoZWNrSW5kZXhBbmRNZXRhRGF0YUtleShpdC5nZXQoKSwgc3RvcEtleSwg
aW5kZXhJZCwgSW5kZXhNZXRhRGF0YUtleTo6VW5pcXVlKSkgewogICAgICAgICAgICAgTE9HX0VS
Uk9SKCJJbnRlcm5hbCBJbmRleGVkIERCIGVycm9yLiIpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAgICAgICAgIGJvb2wgaW5kZXhVbmlxdWUgPSBkZWNvZGVCb29sKGl0LT52YWx1
ZSgpLmJlZ2luKCksIGl0LT52YWx1ZSgpLmVuZCgpKTsKIAogICAgICAgICBpdC0+bmV4dCgpOyAv
LyBrZXlQYXRoCi0gICAgICAgIGlmICghY2hlY2tJbmRleEFuZE1ldGFEYXRhS2V5KGl0LmdldCgp
LCBzdG9wS2V5LCBpbmRleElkLCBJbmRleE1ldGFEYXRhS2V5OjprS2V5UGF0aCkpIHsKKyAgICAg
ICAgaWYgKCFjaGVja0luZGV4QW5kTWV0YURhdGFLZXkoaXQuZ2V0KCksIHN0b3BLZXksIGluZGV4
SWQsIEluZGV4TWV0YURhdGFLZXk6OktleVBhdGgpKSB7CiAgICAgICAgICAgICBMT0dfRVJST1Io
IkludGVybmFsIEluZGV4ZWQgREIgZXJyb3IuIik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KQEAgLTgyOCw3ICs4MjgsNyBAQCB2b2lkIElEQkxldmVsREJCYWNraW5nU3RvcmU6Omdl
dEluZGV4ZXMoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSQogCiAgICAg
ICAgIGl0LT5uZXh0KCk7IC8vIFtvcHRpb25hbF0gbXVsdGlFbnRyeSBmbGFnCiAgICAgICAgIGJv
b2wgaW5kZXhNdWx0aUVudHJ5ID0gZmFsc2U7Ci0gICAgICAgIGlmIChjaGVja0luZGV4QW5kTWV0
YURhdGFLZXkoaXQuZ2V0KCksIHN0b3BLZXksIGluZGV4SWQsIEluZGV4TWV0YURhdGFLZXk6OmtN
dWx0aUVudHJ5KSkgeworICAgICAgICBpZiAoY2hlY2tJbmRleEFuZE1ldGFEYXRhS2V5KGl0Lmdl
dCgpLCBzdG9wS2V5LCBpbmRleElkLCBJbmRleE1ldGFEYXRhS2V5OjpNdWx0aUVudHJ5KSkgewog
ICAgICAgICAgICAgaW5kZXhNdWx0aUVudHJ5ID0gZGVjb2RlQm9vbChpdC0+dmFsdWUoKS5iZWdp
bigpLCBpdC0+dmFsdWUoKS5lbmQoKSk7CiAgICAgICAgICAgICBpdC0+bmV4dCgpOwogICAgICAg
ICB9CkBAIC04NDQsOSArODQ0LDkgQEAgdm9pZCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpnZXRJ
bmRleGVzKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUkKIHN0YXRpYyBp
bnQ2NF90IGdldE5ld0luZGV4SWQoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50
NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpCiB7CiAgICAgaW50NjRfdCBt
YXhJbmRleElkID0gLTE7Ci0gICAgY29uc3QgVmVjdG9yPGNoYXI+IG1heEluZGV4SWRLZXkgPSBP
YmplY3RTdG9yZU1ldGFEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwg
T2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6a01heEluZGV4SWQpOworICAgIGNvbnN0IFZlY3Rvcjxj
aGFyPiBtYXhJbmRleElkS2V5ID0gT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFi
YXNlSWQsIG9iamVjdFN0b3JlSWQsIE9iamVjdFN0b3JlTWV0YURhdGFLZXk6Ok1heEluZGV4SWQp
OwogICAgIGlmICghZ2V0SW50KHRyYW5zYWN0aW9uLCBtYXhJbmRleElkS2V5LCBtYXhJbmRleElk
KSkKLSAgICAgICAgbWF4SW5kZXhJZCA9IGtNaW5pbXVtSW5kZXhJZDsKKyAgICAgICAgbWF4SW5k
ZXhJZCA9IE1pbmltdW1JbmRleElkOwogCiAgICAgQVNTRVJUKG1heEluZGV4SWQgPj0gMCk7CiAK
QEAgLTg2NCwxMCArODY0LDEwIEBAIGJvb2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Y3JlYXRl
SW5kZXgoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlCiAgICAgaWYgKGlu
ZGV4SWQgPCAwKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBjb25zdCBWZWN0b3I8Y2hh
cj4gbmFtZUtleSA9IEluZGV4TWV0YURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RT
dG9yZUlkLCBpbmRleElkLCBJbmRleE1ldGFEYXRhS2V5OjprTmFtZSk7Ci0gICAgY29uc3QgVmVj
dG9yPGNoYXI+IHVuaXF1ZUtleSA9IEluZGV4TWV0YURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlk
LCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCBJbmRleE1ldGFEYXRhS2V5OjprVW5pcXVlKTsKLSAg
ICBjb25zdCBWZWN0b3I8Y2hhcj4ga2V5UGF0aEtleSA9IEluZGV4TWV0YURhdGFLZXk6OmVuY29k
ZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCBJbmRleE1ldGFEYXRhS2V5Ojpr
S2V5UGF0aCk7Ci0gICAgY29uc3QgVmVjdG9yPGNoYXI+IG11bHRpRW50cnlLZXkgPSBJbmRleE1l
dGFEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgaW5kZXhJZCwgSW5k
ZXhNZXRhRGF0YUtleTo6a011bHRpRW50cnkpOworICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBuYW1l
S2V5ID0gSW5kZXhNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQs
IGluZGV4SWQsIEluZGV4TWV0YURhdGFLZXk6Ok5hbWUpOworICAgIGNvbnN0IFZlY3RvcjxjaGFy
PiB1bmlxdWVLZXkgPSBJbmRleE1ldGFEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0
U3RvcmVJZCwgaW5kZXhJZCwgSW5kZXhNZXRhRGF0YUtleTo6VW5pcXVlKTsKKyAgICBjb25zdCBW
ZWN0b3I8Y2hhcj4ga2V5UGF0aEtleSA9IEluZGV4TWV0YURhdGFLZXk6OmVuY29kZShkYXRhYmFz
ZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCBJbmRleE1ldGFEYXRhS2V5OjpLZXlQYXRoKTsK
KyAgICBjb25zdCBWZWN0b3I8Y2hhcj4gbXVsdGlFbnRyeUtleSA9IEluZGV4TWV0YURhdGFLZXk6
OmVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCBJbmRleE1ldGFEYXRh
S2V5OjpNdWx0aUVudHJ5KTsKIAogICAgIGJvb2wgb2sgPSBwdXRTdHJpbmcobV9jdXJyZW50VHJh
bnNhY3Rpb24uZ2V0KCksIG5hbWVLZXksIG5hbWUpOwogICAgIGlmICghb2spIHsKQEAgLTkyMCw3
ICs5MjAsNyBAQCB2b2lkIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmRlbGV0ZUluZGV4KGludDY0
X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZQogYm9vbCBJREJMZXZlbERCQmFja2lu
Z1N0b3JlOjpwdXRJbmRleERhdGFGb3JSZWNvcmQoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5JiBrZXksIGNvbnN0
IE9iamVjdFN0b3JlUmVjb3JkSWRlbnRpZmllciogcmVjb3JkSWRlbnRpZmllcikKIHsKICAgICBB
U1NFUlQoa2V5LmlzVmFsaWQoKSk7Ci0gICAgQVNTRVJUKGluZGV4SWQgPj0ga01pbmltdW1JbmRl
eElkKTsKKyAgICBBU1NFUlQoaW5kZXhJZCA+PSBNaW5pbXVtSW5kZXhJZCk7CiAgICAgY29uc3Qg
TGV2ZWxEQlJlY29yZElkZW50aWZpZXIqIGxldmVsREJSZWNvcmRJZGVudGlmaWVyID0gc3RhdGlj
X2Nhc3Q8Y29uc3QgTGV2ZWxEQlJlY29yZElkZW50aWZpZXIqPihyZWNvcmRJZGVudGlmaWVyKTsK
IAogICAgIEFTU0VSVChtX2N1cnJlbnRUcmFuc2FjdGlvbik7CkBAIC0xNDIyLDE2ICsxNDIyLDE2
IEBAIHByaXZhdGU6CiAKIGJvb2wgSW5kZXhDdXJzb3JJbXBsOjpsb2FkQ3VycmVudFJvdygpCiB7
Ci0gICAgY29uc3QgY2hhciAqcCA9IG1faXRlcmF0b3ItPmtleSgpLmJlZ2luKCk7Ci0gICAgY29u
c3QgY2hhciAqbGltaXQgPSBtX2l0ZXJhdG9yLT5rZXkoKS5lbmQoKTsKKyAgICBjb25zdCBjaGFy
KiBwID0gbV9pdGVyYXRvci0+a2V5KCkuYmVnaW4oKTsKKyAgICBjb25zdCBjaGFyKiBsaW1pdCA9
IG1faXRlcmF0b3ItPmtleSgpLmVuZCgpOwogCiAgICAgSW5kZXhEYXRhS2V5IGluZGV4RGF0YUtl
eTsKICAgICBwID0gSW5kZXhEYXRhS2V5OjpkZWNvZGUocCwgbGltaXQsICZpbmRleERhdGFLZXkp
OwogCiAgICAgbV9jdXJyZW50S2V5ID0gaW5kZXhEYXRhS2V5LnVzZXJLZXkoKTsKIAotICAgIGNv
bnN0IGNoYXIgKnEgPSBtX2l0ZXJhdG9yLT52YWx1ZSgpLmJlZ2luKCk7Ci0gICAgY29uc3QgY2hh
ciAqdmFsdWVMaW1pdCA9IG1faXRlcmF0b3ItPnZhbHVlKCkuZW5kKCk7CisgICAgY29uc3QgY2hh
ciogcSA9IG1faXRlcmF0b3ItPnZhbHVlKCkuYmVnaW4oKTsKKyAgICBjb25zdCBjaGFyKiB2YWx1
ZUxpbWl0ID0gbV9pdGVyYXRvci0+dmFsdWUoKS5lbmQoKTsKIAogICAgIGludDY0X3QgaW5kZXhE
YXRhVmVyc2lvbjsKICAgICBxID0gZGVjb2RlVmFySW50KHEsIHZhbHVlTGltaXQsIGluZGV4RGF0
YVZlcnNpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCTGV2ZWxEQkNvZGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJMZXZlbERCQ29kaW5nLmNwcAppbmRleCAxZmY0NWEyZmQxZDkyODZjZTAwM2FjMDNmZWVkZjQy
MzVjZGNlZTk2Li4zYWY0NTRmMGEyM2M2YjcwOGU4ZTFjMWY0NTc4MTg5YzgxMTRmODM4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQ29kaW5n
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQ29k
aW5nLmNwcApAQCAtMTM3LDMzICsxMzcsMzMgQEAgbmFtZXNwYWNlIElEQkxldmVsREJDb2Rpbmcg
ewogI2RlZmluZSBJTlQzMl9NQVggMHg3ZmZmZmZmZkwKICNlbmRpZgogCi1zdGF0aWMgY29uc3Qg
dW5zaWduZWQgY2hhciBrSURCS2V5TnVsbFR5cGVCeXRlID0gMDsKLXN0YXRpYyBjb25zdCB1bnNp
Z25lZCBjaGFyIGtJREJLZXlTdHJpbmdUeXBlQnl0ZSA9IDE7Ci1zdGF0aWMgY29uc3QgdW5zaWdu
ZWQgY2hhciBrSURCS2V5RGF0ZVR5cGVCeXRlID0gMjsKLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBj
aGFyIGtJREJLZXlOdW1iZXJUeXBlQnl0ZSA9IDM7Ci1zdGF0aWMgY29uc3QgdW5zaWduZWQgY2hh
ciBrSURCS2V5QXJyYXlUeXBlQnl0ZSA9IDQ7Ci1zdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBr
SURCS2V5TWluS2V5VHlwZUJ5dGUgPSA1OwotCi1zdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBr
SURCS2V5UGF0aFR5cGVDb2RlZEJ5dGUxID0gMDsKLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFy
IGtJREJLZXlQYXRoVHlwZUNvZGVkQnl0ZTIgPSAwOwotCi1zdGF0aWMgY29uc3QgdW5zaWduZWQg
Y2hhciBrT2JqZWN0U3RvcmVEYXRhSW5kZXhJZCA9IDE7Ci1zdGF0aWMgY29uc3QgdW5zaWduZWQg
Y2hhciBrRXhpc3RzRW50cnlJbmRleElkID0gMjsKLQotc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNo
YXIga1NjaGVtYVZlcnNpb25UeXBlQnl0ZSA9IDA7Ci1zdGF0aWMgY29uc3QgdW5zaWduZWQgY2hh
ciBrTWF4RGF0YWJhc2VJZFR5cGVCeXRlID0gMTsKLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFy
IGtEYXRhYmFzZUZyZWVMaXN0VHlwZUJ5dGUgPSAxMDA7Ci1zdGF0aWMgY29uc3QgdW5zaWduZWQg
Y2hhciBrRGF0YWJhc2VOYW1lVHlwZUJ5dGUgPSAyMDE7Ci0KLXN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBjaGFyIGtPYmplY3RTdG9yZU1ldGFEYXRhVHlwZUJ5dGUgPSA1MDsKLXN0YXRpYyBjb25zdCB1
bnNpZ25lZCBjaGFyIGtJbmRleE1ldGFEYXRhVHlwZUJ5dGUgPSAxMDA7Ci1zdGF0aWMgY29uc3Qg
dW5zaWduZWQgY2hhciBrT2JqZWN0U3RvcmVGcmVlTGlzdFR5cGVCeXRlID0gMTUwOwotc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIGNoYXIga0luZGV4RnJlZUxpc3RUeXBlQnl0ZSA9IDE1MTsKLXN0YXRp
YyBjb25zdCB1bnNpZ25lZCBjaGFyIGtPYmplY3RTdG9yZU5hbWVzVHlwZUJ5dGUgPSAyMDA7Ci1z
dGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBrSW5kZXhOYW1lc0tleVR5cGVCeXRlID0gMjAxOwot
Ci1zdGF0aWMgY29uc3QgaW50NjRfdCBrT2JqZWN0TWV0YURhdGFUeXBlTWF4aW11bSA9IElOVDY0
X01BWDsKLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGtJbmRleE1ldGFEYXRhVHlwZU1heGlt
dW0gPSAyNTU7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBJREJLZXlOdWxsVHlwZUJ5dGUg
PSAwOworc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgSURCS2V5U3RyaW5nVHlwZUJ5dGUgPSAx
Oworc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgSURCS2V5RGF0ZVR5cGVCeXRlID0gMjsKK3N0
YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIElEQktleU51bWJlclR5cGVCeXRlID0gMzsKK3N0YXRp
YyBjb25zdCB1bnNpZ25lZCBjaGFyIElEQktleUFycmF5VHlwZUJ5dGUgPSA0Oworc3RhdGljIGNv
bnN0IHVuc2lnbmVkIGNoYXIgSURCS2V5TWluS2V5VHlwZUJ5dGUgPSA1OworCitzdGF0aWMgY29u
c3QgdW5zaWduZWQgY2hhciBJREJLZXlQYXRoVHlwZUNvZGVkQnl0ZTEgPSAwOworc3RhdGljIGNv
bnN0IHVuc2lnbmVkIGNoYXIgSURCS2V5UGF0aFR5cGVDb2RlZEJ5dGUyID0gMDsKKworc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIGNoYXIgT2JqZWN0U3RvcmVEYXRhSW5kZXhJZCA9IDE7CitzdGF0aWMg
Y29uc3QgdW5zaWduZWQgY2hhciBFeGlzdHNFbnRyeUluZGV4SWQgPSAyOworCitzdGF0aWMgY29u
c3QgdW5zaWduZWQgY2hhciBTY2hlbWFWZXJzaW9uVHlwZUJ5dGUgPSAwOworc3RhdGljIGNvbnN0
IHVuc2lnbmVkIGNoYXIgTWF4RGF0YWJhc2VJZFR5cGVCeXRlID0gMTsKK3N0YXRpYyBjb25zdCB1
bnNpZ25lZCBjaGFyIERhdGFiYXNlRnJlZUxpc3RUeXBlQnl0ZSA9IDEwMDsKK3N0YXRpYyBjb25z
dCB1bnNpZ25lZCBjaGFyIERhdGFiYXNlTmFtZVR5cGVCeXRlID0gMjAxOworCitzdGF0aWMgY29u
c3QgdW5zaWduZWQgY2hhciBPYmplY3RTdG9yZU1ldGFEYXRhVHlwZUJ5dGUgPSA1MDsKK3N0YXRp
YyBjb25zdCB1bnNpZ25lZCBjaGFyIEluZGV4TWV0YURhdGFUeXBlQnl0ZSA9IDEwMDsKK3N0YXRp
YyBjb25zdCB1bnNpZ25lZCBjaGFyIE9iamVjdFN0b3JlRnJlZUxpc3RUeXBlQnl0ZSA9IDE1MDsK
K3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIEluZGV4RnJlZUxpc3RUeXBlQnl0ZSA9IDE1MTsK
K3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIE9iamVjdFN0b3JlTmFtZXNUeXBlQnl0ZSA9IDIw
MDsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIEluZGV4TmFtZXNLZXlUeXBlQnl0ZSA9IDIw
MTsKKworc3RhdGljIGNvbnN0IGludDY0X3QgT2JqZWN0TWV0YURhdGFUeXBlTWF4aW11bSA9IElO
VDY0X01BWDsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIEluZGV4TWV0YURhdGFUeXBlTWF4
aW11bSA9IDI1NTsKIAogVmVjdG9yPGNoYXI+IGVuY29kZUJ5dGUodW5zaWduZWQgY2hhciBjKQog
ewpAQCAtMTc0LDEyICsxNzQsMTIgQEAgVmVjdG9yPGNoYXI+IGVuY29kZUJ5dGUodW5zaWduZWQg
Y2hhciBjKQogCiBWZWN0b3I8Y2hhcj4gbWF4SURCS2V5KCkKIHsKLSAgICByZXR1cm4gZW5jb2Rl
Qnl0ZShrSURCS2V5TnVsbFR5cGVCeXRlKTsKKyAgICByZXR1cm4gZW5jb2RlQnl0ZShJREJLZXlO
dWxsVHlwZUJ5dGUpOwogfQogCiBWZWN0b3I8Y2hhcj4gbWluSURCS2V5KCkKIHsKLSAgICByZXR1
cm4gZW5jb2RlQnl0ZShrSURCS2V5TWluS2V5VHlwZUJ5dGUpOworICAgIHJldHVybiBlbmNvZGVC
eXRlKElEQktleU1pbktleVR5cGVCeXRlKTsKIH0KIAogVmVjdG9yPGNoYXI+IGVuY29kZUJvb2wo
Ym9vbCBiKQpAQCAtMjU1LDcgKzI1NSw3IEBAIFZlY3RvcjxjaGFyPiBlbmNvZGVWYXJJbnQoaW50
NjRfdCBuUGFyYW0pCiAgICAgcmV0dXJuIHJldDsKIH0KIAotY29uc3QgY2hhciogZGVjb2RlVmFy
SW50KGNvbnN0IGNoYXIgKnAsIGNvbnN0IGNoYXIqIGxpbWl0LCBpbnQ2NF90JiBmb3VuZEludCkK
K2NvbnN0IGNoYXIqIGRlY29kZVZhckludChjb25zdCBjaGFyKiBwLCBjb25zdCBjaGFyKiBsaW1p
dCwgaW50NjRfdCYgZm91bmRJbnQpCiB7CiAgICAgQVNTRVJUKGxpbWl0ID49IHApOwogICAgIGZv
dW5kSW50ID0gMDsKQEAgLTM5NiwxMCArMzk2LDEwIEBAIHZvaWQgZW5jb2RlSURCS2V5KGNvbnN0
IElEQktleSYga2V5LCBWZWN0b3I8Y2hhcj4mIGludG8pCiAgICAgY2FzZSBJREJLZXk6OkludmFs
aWRUeXBlOgogICAgIGNhc2UgSURCS2V5OjpNaW5UeXBlOgogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICAgICAgaW50by5hcHBlbmQoZW5jb2RlQnl0ZShrSURCS2V5TnVsbFR5cGVC
eXRlKSk7CisgICAgICAgIGludG8uYXBwZW5kKGVuY29kZUJ5dGUoSURCS2V5TnVsbFR5cGVCeXRl
KSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIElEQktleTo6QXJyYXlUeXBlOiB7Ci0gICAg
ICAgIGludG8uYXBwZW5kKGVuY29kZUJ5dGUoa0lEQktleUFycmF5VHlwZUJ5dGUpKTsKKyAgICAg
ICAgaW50by5hcHBlbmQoZW5jb2RlQnl0ZShJREJLZXlBcnJheVR5cGVCeXRlKSk7CiAgICAgICAg
IHNpemVfdCBsZW5ndGggPSBrZXkuYXJyYXkoKS5zaXplKCk7CiAgICAgICAgIGludG8uYXBwZW5k
KGVuY29kZVZhckludChsZW5ndGgpKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBs
ZW5ndGg7ICsraSkKQEAgLTQwOCwxNyArNDA4LDE3IEBAIHZvaWQgZW5jb2RlSURCS2V5KGNvbnN0
IElEQktleSYga2V5LCBWZWN0b3I8Y2hhcj4mIGludG8pCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgY2FzZSBJREJLZXk6OlN0cmluZ1R5cGU6Ci0gICAgICAgIGludG8uYXBwZW5kKGVuY29k
ZUJ5dGUoa0lEQktleVN0cmluZ1R5cGVCeXRlKSk7CisgICAgICAgIGludG8uYXBwZW5kKGVuY29k
ZUJ5dGUoSURCS2V5U3RyaW5nVHlwZUJ5dGUpKTsKICAgICAgICAgaW50by5hcHBlbmQoZW5jb2Rl
U3RyaW5nV2l0aExlbmd0aChrZXkuc3RyaW5nKCkpKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChw
cmV2aW91c1NpemUsIGludG8uc2l6ZSgpID4gcHJldmlvdXNTaXplKTsKICAgICAgICAgcmV0dXJu
OwogICAgIGNhc2UgSURCS2V5OjpEYXRlVHlwZToKLSAgICAgICAgaW50by5hcHBlbmQoZW5jb2Rl
Qnl0ZShrSURCS2V5RGF0ZVR5cGVCeXRlKSk7CisgICAgICAgIGludG8uYXBwZW5kKGVuY29kZUJ5
dGUoSURCS2V5RGF0ZVR5cGVCeXRlKSk7CiAgICAgICAgIGludG8uYXBwZW5kKGVuY29kZURvdWJs
ZShrZXkuZGF0ZSgpKSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQocHJldmlvdXNTaXplLCBpbnRv
LnNpemUoKSAtIHByZXZpb3VzU2l6ZSA9PSA5KTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2Ug
SURCS2V5OjpOdW1iZXJUeXBlOgotICAgICAgICBpbnRvLmFwcGVuZChlbmNvZGVCeXRlKGtJREJL
ZXlOdW1iZXJUeXBlQnl0ZSkpOworICAgICAgICBpbnRvLmFwcGVuZChlbmNvZGVCeXRlKElEQktl
eU51bWJlclR5cGVCeXRlKSk7CiAgICAgICAgIGludG8uYXBwZW5kKGVuY29kZURvdWJsZShrZXku
bnVtYmVyKCkpKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChwcmV2aW91c1NpemUsIGludG8uc2l6
ZSgpIC0gcHJldmlvdXNTaXplID09IDkpOwogICAgICAgICByZXR1cm47CkBAIC00MzcsMTEgKzQz
NywxMSBAQCBjb25zdCBjaGFyKiBkZWNvZGVJREJLZXkoY29uc3QgY2hhciogcCwgY29uc3QgY2hh
ciogbGltaXQsIFJlZlB0cjxJREJLZXk+JiBmb3VuZAogICAgIHVuc2lnbmVkIGNoYXIgdHlwZSA9
ICpwKys7CiAKICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIGtJREJLZXlOdWxsVHlwZUJ5
dGU6CisgICAgY2FzZSBJREJLZXlOdWxsVHlwZUJ5dGU6CiAgICAgICAgIGZvdW5kS2V5ID0gSURC
S2V5OjpjcmVhdGVJbnZhbGlkKCk7CiAgICAgICAgIHJldHVybiBwOwogCi0gICAgY2FzZSBrSURC
S2V5QXJyYXlUeXBlQnl0ZTogeworICAgIGNhc2UgSURCS2V5QXJyYXlUeXBlQnl0ZTogewogICAg
ICAgICBpbnQ2NF90IGxlbmd0aDsKICAgICAgICAgcCA9IGRlY29kZVZhckludChwLCBsaW1pdCwg
bGVuZ3RoKTsKICAgICAgICAgaWYgKCFwKQpAQCAtNDU5LDcgKzQ1OSw3IEBAIGNvbnN0IGNoYXIq
IGRlY29kZUlEQktleShjb25zdCBjaGFyKiBwLCBjb25zdCBjaGFyKiBsaW1pdCwgUmVmUHRyPElE
QktleT4mIGZvdW5kCiAgICAgICAgIGZvdW5kS2V5ID0gSURCS2V5OjpjcmVhdGVBcnJheShhcnJh
eSk7CiAgICAgICAgIHJldHVybiBwOwogICAgIH0KLSAgICBjYXNlIGtJREJLZXlTdHJpbmdUeXBl
Qnl0ZTogeworICAgIGNhc2UgSURCS2V5U3RyaW5nVHlwZUJ5dGU6IHsKICAgICAgICAgU3RyaW5n
IHM7CiAgICAgICAgIHAgPSBkZWNvZGVTdHJpbmdXaXRoTGVuZ3RoKHAsIGxpbWl0LCBzKTsKICAg
ICAgICAgaWYgKCFwKQpAQCAtNDY3LDcgKzQ2Nyw3IEBAIGNvbnN0IGNoYXIqIGRlY29kZUlEQktl
eShjb25zdCBjaGFyKiBwLCBjb25zdCBjaGFyKiBsaW1pdCwgUmVmUHRyPElEQktleT4mIGZvdW5k
CiAgICAgICAgIGZvdW5kS2V5ID0gSURCS2V5OjpjcmVhdGVTdHJpbmcocyk7CiAgICAgICAgIHJl
dHVybiBwOwogICAgIH0KLSAgICBjYXNlIGtJREJLZXlEYXRlVHlwZUJ5dGU6IHsKKyAgICBjYXNl
IElEQktleURhdGVUeXBlQnl0ZTogewogICAgICAgICBkb3VibGUgZDsKICAgICAgICAgcCA9IGRl
Y29kZURvdWJsZShwLCBsaW1pdCwgJmQpOwogICAgICAgICBpZiAoIXApCkBAIC00NzUsNyArNDc1
LDcgQEAgY29uc3QgY2hhciogZGVjb2RlSURCS2V5KGNvbnN0IGNoYXIqIHAsIGNvbnN0IGNoYXIq
IGxpbWl0LCBSZWZQdHI8SURCS2V5PiYgZm91bmQKICAgICAgICAgZm91bmRLZXkgPSBJREJLZXk6
OmNyZWF0ZURhdGUoZCk7CiAgICAgICAgIHJldHVybiBwOwogICAgIH0KLSAgICBjYXNlIGtJREJL
ZXlOdW1iZXJUeXBlQnl0ZTogeworICAgIGNhc2UgSURCS2V5TnVtYmVyVHlwZUJ5dGU6IHsKICAg
ICAgICAgZG91YmxlIGQ7CiAgICAgICAgIHAgPSBkZWNvZGVEb3VibGUocCwgbGltaXQsICZkKTsK
ICAgICAgICAgaWYgKCFwKQpAQCAtNDk5LDExICs0OTksMTEgQEAgY29uc3QgY2hhciogZXh0cmFj
dEVuY29kZWRJREJLZXkoY29uc3QgY2hhciogc3RhcnQsIGNvbnN0IGNoYXIqIGxpbWl0LCBWZWN0
b3I8Y2gKICAgICB1bnNpZ25lZCBjaGFyIHR5cGUgPSAqcCsrOwogCiAgICAgc3dpdGNoICh0eXBl
KSB7Ci0gICAgY2FzZSBrSURCS2V5TnVsbFR5cGVCeXRlOgotICAgIGNhc2Uga0lEQktleU1pbktl
eVR5cGVCeXRlOgorICAgIGNhc2UgSURCS2V5TnVsbFR5cGVCeXRlOgorICAgIGNhc2UgSURCS2V5
TWluS2V5VHlwZUJ5dGU6CiAgICAgICAgICpyZXN1bHQgPSBlbmNvZGVCeXRlKHR5cGUpOwogICAg
ICAgICByZXR1cm4gcDsKLSAgICBjYXNlIGtJREJLZXlBcnJheVR5cGVCeXRlOiB7CisgICAgY2Fz
ZSBJREJLZXlBcnJheVR5cGVCeXRlOiB7CiAgICAgICAgIGludDY0X3QgbGVuZ3RoOwogICAgICAg
ICBwID0gZGVjb2RlVmFySW50KHAsIGxpbWl0LCBsZW5ndGgpOwogICAgICAgICBpZiAoIXApCkBA
IC01MjEsNyArNTIxLDcgQEAgY29uc3QgY2hhciogZXh0cmFjdEVuY29kZWRJREJLZXkoY29uc3Qg
Y2hhciogc3RhcnQsIGNvbnN0IGNoYXIqIGxpbWl0LCBWZWN0b3I8Y2gKICAgICAgICAgfQogICAg
ICAgICByZXR1cm4gcDsKICAgICB9Ci0gICAgY2FzZSBrSURCS2V5U3RyaW5nVHlwZUJ5dGU6IHsK
KyAgICBjYXNlIElEQktleVN0cmluZ1R5cGVCeXRlOiB7CiAgICAgICAgIGludDY0X3QgbGVuZ3Ro
OwogICAgICAgICBwID0gZGVjb2RlVmFySW50KHAsIGxpbWl0LCBsZW5ndGgpOwogICAgICAgICBp
ZiAoIXApCkBAIC01MzIsOCArNTMyLDggQEAgY29uc3QgY2hhciogZXh0cmFjdEVuY29kZWRJREJL
ZXkoY29uc3QgY2hhciogc3RhcnQsIGNvbnN0IGNoYXIqIGxpbWl0LCBWZWN0b3I8Y2gKICAgICAg
ICAgcmVzdWx0LT5hcHBlbmQoc3RhcnQsIHAgLSBzdGFydCArIGxlbmd0aCAqIDIpOwogICAgICAg
ICByZXR1cm4gcCArIGxlbmd0aCAqIDI7CiAgICAgfQotICAgIGNhc2Uga0lEQktleURhdGVUeXBl
Qnl0ZToKLSAgICBjYXNlIGtJREJLZXlOdW1iZXJUeXBlQnl0ZToKKyAgICBjYXNlIElEQktleURh
dGVUeXBlQnl0ZToKKyAgICBjYXNlIElEQktleU51bWJlclR5cGVCeXRlOgogICAgICAgICBpZiAo
cCArIHNpemVvZihkb3VibGUpID4gbGltaXQpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAg
ICAgcmVzdWx0LT5jbGVhcigpOwpAQCAtNTQ3LDE3ICs1NDcsMTcgQEAgY29uc3QgY2hhciogZXh0
cmFjdEVuY29kZWRJREJLZXkoY29uc3QgY2hhciogc3RhcnQsIGNvbnN0IGNoYXIqIGxpbWl0LCBW
ZWN0b3I8Y2gKIHN0YXRpYyBJREJLZXk6OlR5cGUga2V5VHlwZUJ5dGVUb0tleVR5cGUodW5zaWdu
ZWQgY2hhciB0eXBlKQogewogICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2Uga0lEQktleU51
bGxUeXBlQnl0ZToKKyAgICBjYXNlIElEQktleU51bGxUeXBlQnl0ZToKICAgICAgICAgcmV0dXJu
IElEQktleTo6SW52YWxpZFR5cGU7Ci0gICAgY2FzZSBrSURCS2V5QXJyYXlUeXBlQnl0ZToKKyAg
ICBjYXNlIElEQktleUFycmF5VHlwZUJ5dGU6CiAgICAgICAgIHJldHVybiBJREJLZXk6OkFycmF5
VHlwZTsKLSAgICBjYXNlIGtJREJLZXlTdHJpbmdUeXBlQnl0ZToKKyAgICBjYXNlIElEQktleVN0
cmluZ1R5cGVCeXRlOgogICAgICAgICByZXR1cm4gSURCS2V5OjpTdHJpbmdUeXBlOwotICAgIGNh
c2Uga0lEQktleURhdGVUeXBlQnl0ZToKKyAgICBjYXNlIElEQktleURhdGVUeXBlQnl0ZToKICAg
ICAgICAgcmV0dXJuIElEQktleTo6RGF0ZVR5cGU7Ci0gICAgY2FzZSBrSURCS2V5TnVtYmVyVHlw
ZUJ5dGU6CisgICAgY2FzZSBJREJLZXlOdW1iZXJUeXBlQnl0ZToKICAgICAgICAgcmV0dXJuIElE
QktleTo6TnVtYmVyVHlwZTsKLSAgICBjYXNlIGtJREJLZXlNaW5LZXlUeXBlQnl0ZToKKyAgICBj
YXNlIElEQktleU1pbktleVR5cGVCeXRlOgogICAgICAgICByZXR1cm4gSURCS2V5OjpNaW5UeXBl
OwogICAgIH0KIApAQCAtNTc3LDExICs1NzcsMTEgQEAgaW50IGNvbXBhcmVFbmNvZGVkSURCS2V5
cyhjb25zdCBjaGFyKiYgcCwgY29uc3QgY2hhciogbGltaXRBLCBjb25zdCBjaGFyKiYgcSwgY28K
ICAgICAgICAgcmV0dXJuIHg7CiAKICAgICBzd2l0Y2ggKHR5cGVBKSB7Ci0gICAgY2FzZSBrSURC
S2V5TnVsbFR5cGVCeXRlOgotICAgIGNhc2Uga0lEQktleU1pbktleVR5cGVCeXRlOgorICAgIGNh
c2UgSURCS2V5TnVsbFR5cGVCeXRlOgorICAgIGNhc2UgSURCS2V5TWluS2V5VHlwZUJ5dGU6CiAg
ICAgICAgIC8vIE51bGwgdHlwZSBvciBtYXggdHlwZTsgbm8gcGF5bG9hZCB0byBjb21wYXJlLgog
ICAgICAgICByZXR1cm4gMDsKLSAgICBjYXNlIGtJREJLZXlBcnJheVR5cGVCeXRlOiB7CisgICAg
Y2FzZSBJREJLZXlBcnJheVR5cGVCeXRlOiB7CiAgICAgICAgIGludDY0X3QgbGVuZ3RoQSwgbGVu
Z3RoQjsKICAgICAgICAgcCA9IGRlY29kZVZhckludChwLCBsaW1pdEEsIGxlbmd0aEEpOwogICAg
ICAgICBpZiAoIXApCkBAIC02MDEsMTAgKzYwMSwxMCBAQCBpbnQgY29tcGFyZUVuY29kZWRJREJL
ZXlzKGNvbnN0IGNoYXIqJiBwLCBjb25zdCBjaGFyKiBsaW1pdEEsIGNvbnN0IGNoYXIqJiBxLCBj
bwogICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICBj
YXNlIGtJREJLZXlTdHJpbmdUeXBlQnl0ZToKKyAgICBjYXNlIElEQktleVN0cmluZ1R5cGVCeXRl
OgogICAgICAgICByZXR1cm4gY29tcGFyZUVuY29kZWRTdHJpbmdzV2l0aExlbmd0aChwLCBsaW1p
dEEsIHEsIGxpbWl0Qik7Ci0gICAgY2FzZSBrSURCS2V5RGF0ZVR5cGVCeXRlOgotICAgIGNhc2Ug
a0lEQktleU51bWJlclR5cGVCeXRlOiB7CisgICAgY2FzZSBJREJLZXlEYXRlVHlwZUJ5dGU6Cisg
ICAgY2FzZSBJREJLZXlOdW1iZXJUeXBlQnl0ZTogewogICAgICAgICBkb3VibGUgZCwgZTsKICAg
ICAgICAgcCA9IGRlY29kZURvdWJsZShwLCBsaW1pdEEsICZkKTsKICAgICAgICAgQVNTRVJUKHAp
OwpAQCAtNjQxLDggKzY0MSw4IEBAIFZlY3RvcjxjaGFyPiBlbmNvZGVJREJLZXlQYXRoKGNvbnN0
IElEQktleVBhdGgmIGtleVBhdGgpCiAgICAgLy8gYnl0ZSBpcyB1c2VkIHRvIGlkZW50aWZ5IHR5
cGVkIGNvZGluZy4gTmV3IHJlY29yZHMgYXJlCiAgICAgLy8gYWx3YXlzIHdyaXR0ZW4gYXMgdHlw
ZWQuCiAgICAgVmVjdG9yPGNoYXI+IHJldDsKLSAgICByZXQuYXBwZW5kKGtJREJLZXlQYXRoVHlw
ZUNvZGVkQnl0ZTEpOwotICAgIHJldC5hcHBlbmQoa0lEQktleVBhdGhUeXBlQ29kZWRCeXRlMik7
CisgICAgcmV0LmFwcGVuZChJREJLZXlQYXRoVHlwZUNvZGVkQnl0ZTEpOworICAgIHJldC5hcHBl
bmQoSURCS2V5UGF0aFR5cGVDb2RlZEJ5dGUyKTsKICAgICByZXQuYXBwZW5kKHN0YXRpY19jYXN0
PGNoYXI+KGtleVBhdGgudHlwZSgpKSk7CiAgICAgc3dpdGNoIChrZXlQYXRoLnR5cGUoKSkgewog
ICAgIGNhc2UgSURCS2V5UGF0aDo6TnVsbFR5cGU6CkBAIC02NjcsNyArNjY3LDcgQEAgSURCS2V5
UGF0aCBkZWNvZGVJREJLZXlQYXRoKGNvbnN0IGNoYXIqIHAsIGNvbnN0IGNoYXIqIGxpbWl0KQog
ICAgIC8vIE1heSBiZSB0eXBlZCwgb3IgbWF5IGJlIGEgcmF3IHN0cmluZy4gQW4gaW52YWxpZCBs
ZWFkaW5nCiAgICAgLy8gYnl0ZSBzZXF1ZW5jZSBpcyB1c2VkIHRvIGlkZW50aWZ5IHR5cGVkIGNv
ZGluZy4gTmV3IHJlY29yZHMgYXJlCiAgICAgLy8gYWx3YXlzIHdyaXR0ZW4gYXMgdHlwZWQuCi0g
ICAgaWYgKHAgPT0gbGltaXQgfHwgKGxpbWl0IC0gcCA+PSAyICYmICgqcCAhPSBrSURCS2V5UGF0
aFR5cGVDb2RlZEJ5dGUxIHx8ICoocCArIDEpICE9IGtJREJLZXlQYXRoVHlwZUNvZGVkQnl0ZTIp
KSkKKyAgICBpZiAocCA9PSBsaW1pdCB8fCAobGltaXQgLSBwID49IDIgJiYgKCpwICE9IElEQktl
eVBhdGhUeXBlQ29kZWRCeXRlMSB8fCAqKHAgKyAxKSAhPSBJREJLZXlQYXRoVHlwZUNvZGVkQnl0
ZTIpKSkKICAgICAgICAgcmV0dXJuIElEQktleVBhdGgoZGVjb2RlU3RyaW5nKHAsIGxpbWl0KSk7
CiAgICAgcCArPSAyOwogCkBAIC03MzcsNyArNzM3LDcgQEAgaW50IGNvbXBhcmUoY29uc3QgTGV2
ZWxEQlNsaWNlJiBhLCBjb25zdCBMZXZlbERCU2xpY2UmIGIsIGJvb2wgaW5kZXhLZXlzKQogICAg
IGlmIChpbnQgeCA9IHByZWZpeEEuY29tcGFyZShwcmVmaXhCKSkKICAgICAgICAgcmV0dXJuIHg7
CiAKLSAgICBpZiAocHJlZml4QS50eXBlKCkgPT0gS2V5UHJlZml4OjprR2xvYmFsTWV0YURhdGEp
IHsKKyAgICBpZiAocHJlZml4QS50eXBlKCkgPT0gS2V5UHJlZml4OjpHbG9iYWxNZXRhRGF0YSkg
ewogICAgICAgICBBU1NFUlQocHRyQSAhPSBlbmRBKTsKICAgICAgICAgQVNTRVJUKHB0ckIgIT0g
ZW5kQik7CiAKQEAgLTc0OSwxMyArNzQ5LDEzIEBAIGludCBjb21wYXJlKGNvbnN0IExldmVsREJT
bGljZSYgYSwgY29uc3QgTGV2ZWxEQlNsaWNlJiBiLCBib29sIGluZGV4S2V5cykKIAogICAgICAg
ICBpZiAodHlwZUJ5dGVBIDw9IDEpCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgaWYg
KHR5cGVCeXRlQSA9PSBrRGF0YWJhc2VGcmVlTGlzdFR5cGVCeXRlKQorICAgICAgICBpZiAodHlw
ZUJ5dGVBID09IERhdGFiYXNlRnJlZUxpc3RUeXBlQnl0ZSkKICAgICAgICAgICAgIHJldHVybiBk
ZWNvZGVBbmRDb21wYXJlPERhdGFiYXNlRnJlZUxpc3RLZXk+KGEsIGIpOwotICAgICAgICBpZiAo
dHlwZUJ5dGVBID09IGtEYXRhYmFzZU5hbWVUeXBlQnl0ZSkKKyAgICAgICAgaWYgKHR5cGVCeXRl
QSA9PSBEYXRhYmFzZU5hbWVUeXBlQnl0ZSkKICAgICAgICAgICAgIHJldHVybiBkZWNvZGVBbmRD
b21wYXJlPERhdGFiYXNlTmFtZUtleT4oYSwgYik7CiAgICAgfQogCi0gICAgaWYgKHByZWZpeEEu
dHlwZSgpID09IEtleVByZWZpeDo6a0RhdGFiYXNlTWV0YURhdGEpIHsKKyAgICBpZiAocHJlZml4
QS50eXBlKCkgPT0gS2V5UHJlZml4OjpEYXRhYmFzZU1ldGFEYXRhKSB7CiAgICAgICAgIEFTU0VS
VChwdHJBICE9IGVuZEEpOwogICAgICAgICBBU1NFUlQocHRyQiAhPSBlbmRCKTsKIApAQCAtNzY4
LDI0ICs3NjgsMjQgQEAgaW50IGNvbXBhcmUoY29uc3QgTGV2ZWxEQlNsaWNlJiBhLCBjb25zdCBM
ZXZlbERCU2xpY2UmIGIsIGJvb2wgaW5kZXhLZXlzKQogICAgICAgICBpZiAodHlwZUJ5dGVBIDw9
IDMpCiAgICAgICAgICAgICByZXR1cm4gMDsKIAotICAgICAgICBpZiAodHlwZUJ5dGVBID09IGtP
YmplY3RTdG9yZU1ldGFEYXRhVHlwZUJ5dGUpCisgICAgICAgIGlmICh0eXBlQnl0ZUEgPT0gT2Jq
ZWN0U3RvcmVNZXRhRGF0YVR5cGVCeXRlKQogICAgICAgICAgICAgcmV0dXJuIGRlY29kZUFuZENv
bXBhcmU8T2JqZWN0U3RvcmVNZXRhRGF0YUtleT4oYSwgYik7Ci0gICAgICAgIGlmICh0eXBlQnl0
ZUEgPT0ga0luZGV4TWV0YURhdGFUeXBlQnl0ZSkKKyAgICAgICAgaWYgKHR5cGVCeXRlQSA9PSBJ
bmRleE1ldGFEYXRhVHlwZUJ5dGUpCiAgICAgICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ29tcGFy
ZTxJbmRleE1ldGFEYXRhS2V5PihhLCBiKTsKLSAgICAgICAgaWYgKHR5cGVCeXRlQSA9PSBrT2Jq
ZWN0U3RvcmVGcmVlTGlzdFR5cGVCeXRlKQorICAgICAgICBpZiAodHlwZUJ5dGVBID09IE9iamVj
dFN0b3JlRnJlZUxpc3RUeXBlQnl0ZSkKICAgICAgICAgICAgIHJldHVybiBkZWNvZGVBbmRDb21w
YXJlPE9iamVjdFN0b3JlRnJlZUxpc3RLZXk+KGEsIGIpOwotICAgICAgICBpZiAodHlwZUJ5dGVB
ID09IGtJbmRleEZyZWVMaXN0VHlwZUJ5dGUpCisgICAgICAgIGlmICh0eXBlQnl0ZUEgPT0gSW5k
ZXhGcmVlTGlzdFR5cGVCeXRlKQogICAgICAgICAgICAgcmV0dXJuIGRlY29kZUFuZENvbXBhcmU8
SW5kZXhGcmVlTGlzdEtleT4oYSwgYik7Ci0gICAgICAgIGlmICh0eXBlQnl0ZUEgPT0ga09iamVj
dFN0b3JlTmFtZXNUeXBlQnl0ZSkKKyAgICAgICAgaWYgKHR5cGVCeXRlQSA9PSBPYmplY3RTdG9y
ZU5hbWVzVHlwZUJ5dGUpCiAgICAgICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ29tcGFyZTxPYmpl
Y3RTdG9yZU5hbWVzS2V5PihhLCBiKTsKLSAgICAgICAgaWYgKHR5cGVCeXRlQSA9PSBrSW5kZXhO
YW1lc0tleVR5cGVCeXRlKQorICAgICAgICBpZiAodHlwZUJ5dGVBID09IEluZGV4TmFtZXNLZXlU
eXBlQnl0ZSkKICAgICAgICAgICAgIHJldHVybiBkZWNvZGVBbmRDb21wYXJlPEluZGV4TmFtZXNL
ZXk+KGEsIGIpOwogCiAgICAgICAgIHJldHVybiAwOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICB9CiAKLSAgICBpZiAocHJlZml4QS50eXBlKCkgPT0gS2V5UHJlZml4OjprT2Jq
ZWN0U3RvcmVEYXRhKSB7CisgICAgaWYgKHByZWZpeEEudHlwZSgpID09IEtleVByZWZpeDo6T2Jq
ZWN0U3RvcmVEYXRhKSB7CiAgICAgICAgIGlmIChwdHJBID09IGVuZEEgJiYgcHRyQiA9PSBlbmRC
KQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIGlmIChwdHJBID09IGVuZEEpCkBAIC03
OTUsNyArNzk1LDcgQEAgaW50IGNvbXBhcmUoY29uc3QgTGV2ZWxEQlNsaWNlJiBhLCBjb25zdCBM
ZXZlbERCU2xpY2UmIGIsIGJvb2wgaW5kZXhLZXlzKQogCiAgICAgICAgIHJldHVybiBkZWNvZGVB
bmRDb21wYXJlPE9iamVjdFN0b3JlRGF0YUtleT4oYSwgYik7CiAgICAgfQotICAgIGlmIChwcmVm
aXhBLnR5cGUoKSA9PSBLZXlQcmVmaXg6OmtFeGlzdHNFbnRyeSkgeworICAgIGlmIChwcmVmaXhB
LnR5cGUoKSA9PSBLZXlQcmVmaXg6OkV4aXN0c0VudHJ5KSB7CiAgICAgICAgIGlmIChwdHJBID09
IGVuZEEgJiYgcHRyQiA9PSBlbmRCKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIGlm
IChwdHJBID09IGVuZEEpCkBAIC04MDUsNyArODA1LDcgQEAgaW50IGNvbXBhcmUoY29uc3QgTGV2
ZWxEQlNsaWNlJiBhLCBjb25zdCBMZXZlbERCU2xpY2UmIGIsIGJvb2wgaW5kZXhLZXlzKQogCiAg
ICAgICAgIHJldHVybiBkZWNvZGVBbmRDb21wYXJlPEV4aXN0c0VudHJ5S2V5PihhLCBiKTsKICAg
ICB9Ci0gICAgaWYgKHByZWZpeEEudHlwZSgpID09IEtleVByZWZpeDo6a0luZGV4RGF0YSkgewor
ICAgIGlmIChwcmVmaXhBLnR5cGUoKSA9PSBLZXlQcmVmaXg6OkluZGV4RGF0YSkgewogICAgICAg
ICBpZiAocHRyQSA9PSBlbmRBICYmIHB0ckIgPT0gZW5kQikKICAgICAgICAgICAgIHJldHVybiAw
OwogICAgICAgICBpZiAocHRyQSA9PSBlbmRBKQpAQCAtODMxLDkgKzgzMSw5IEBAIGludCBjb21w
YXJlKGNvbnN0IExldmVsREJTbGljZSYgYSwgY29uc3QgTGV2ZWxEQlNsaWNlJiBiLCBib29sIGlu
ZGV4S2V5cykKIAogCiBLZXlQcmVmaXg6OktleVByZWZpeCgpCi0gICAgOiBtX2RhdGFiYXNlSWQo
a0ludmFsaWRUeXBlKQotICAgICwgbV9vYmplY3RTdG9yZUlkKGtJbnZhbGlkVHlwZSkKLSAgICAs
IG1faW5kZXhJZChrSW52YWxpZFR5cGUpCisgICAgOiBtX2RhdGFiYXNlSWQoSW52YWxpZFR5cGUp
CisgICAgLCBtX29iamVjdFN0b3JlSWQoSW52YWxpZFR5cGUpCisgICAgLCBtX2luZGV4SWQoSW52
YWxpZFR5cGUpCiB7CiB9CiAKQEAgLTg3MCw5ICs4NzAsOSBAQCBjb25zdCBjaGFyKiBLZXlQcmVm
aXg6OmRlY29kZShjb25zdCBjaGFyKiBzdGFydCwgY29uc3QgY2hhciogbGltaXQsIEtleVByZWZp
eCogcgogCiBWZWN0b3I8Y2hhcj4gS2V5UHJlZml4OjplbmNvZGUoKSBjb25zdAogewotICAgIEFT
U0VSVChtX2RhdGFiYXNlSWQgIT0ga0ludmFsaWRJZCk7Ci0gICAgQVNTRVJUKG1fb2JqZWN0U3Rv
cmVJZCAhPSBrSW52YWxpZElkKTsKLSAgICBBU1NFUlQobV9pbmRleElkICE9IGtJbnZhbGlkSWQp
OworICAgIEFTU0VSVChtX2RhdGFiYXNlSWQgIT0gSW52YWxpZElkKTsKKyAgICBBU1NFUlQobV9v
YmplY3RTdG9yZUlkICE9IEludmFsaWRJZCk7CisgICAgQVNTRVJUKG1faW5kZXhJZCAhPSBJbnZh
bGlkSWQpOwogCiAgICAgVmVjdG9yPGNoYXI+IGRhdGFiYXNlSWRTdHJpbmcgPSBlbmNvZGVJbnQo
bV9kYXRhYmFzZUlkKTsKICAgICBWZWN0b3I8Y2hhcj4gb2JqZWN0U3RvcmVJZFN0cmluZyA9IGVu
Y29kZUludChtX29iamVjdFN0b3JlSWQpOwpAQCAtODk1LDkgKzg5NSw5IEBAIFZlY3RvcjxjaGFy
PiBLZXlQcmVmaXg6OmVuY29kZSgpIGNvbnN0CiAKIGludCBLZXlQcmVmaXg6OmNvbXBhcmUoY29u
c3QgS2V5UHJlZml4JiBvdGhlcikgY29uc3QKIHsKLSAgICBBU1NFUlQobV9kYXRhYmFzZUlkICE9
IGtJbnZhbGlkSWQpOwotICAgIEFTU0VSVChtX29iamVjdFN0b3JlSWQgIT0ga0ludmFsaWRJZCk7
Ci0gICAgQVNTRVJUKG1faW5kZXhJZCAhPSBrSW52YWxpZElkKTsKKyAgICBBU1NFUlQobV9kYXRh
YmFzZUlkICE9IEludmFsaWRJZCk7CisgICAgQVNTRVJUKG1fb2JqZWN0U3RvcmVJZCAhPSBJbnZh
bGlkSWQpOworICAgIEFTU0VSVChtX2luZGV4SWQgIT0gSW52YWxpZElkKTsKIAogICAgIGlmICht
X2RhdGFiYXNlSWQgIT0gb3RoZXIubV9kYXRhYmFzZUlkKQogICAgICAgICByZXR1cm4gY29tcGFy
ZUludHMobV9kYXRhYmFzZUlkLCBvdGhlci5tX2RhdGFiYXNlSWQpOwpAQCAtOTEwLDMwICs5MTAs
MzAgQEAgaW50IEtleVByZWZpeDo6Y29tcGFyZShjb25zdCBLZXlQcmVmaXgmIG90aGVyKSBjb25z
dAogCiBLZXlQcmVmaXg6OlR5cGUgS2V5UHJlZml4Ojp0eXBlKCkgY29uc3QKIHsKLSAgICBBU1NF
UlQobV9kYXRhYmFzZUlkICE9IGtJbnZhbGlkSWQpOwotICAgIEFTU0VSVChtX29iamVjdFN0b3Jl
SWQgIT0ga0ludmFsaWRJZCk7Ci0gICAgQVNTRVJUKG1faW5kZXhJZCAhPSBrSW52YWxpZElkKTsK
KyAgICBBU1NFUlQobV9kYXRhYmFzZUlkICE9IEludmFsaWRJZCk7CisgICAgQVNTRVJUKG1fb2Jq
ZWN0U3RvcmVJZCAhPSBJbnZhbGlkSWQpOworICAgIEFTU0VSVChtX2luZGV4SWQgIT0gSW52YWxp
ZElkKTsKIAogICAgIGlmICghbV9kYXRhYmFzZUlkKQotICAgICAgICByZXR1cm4ga0dsb2JhbE1l
dGFEYXRhOworICAgICAgICByZXR1cm4gR2xvYmFsTWV0YURhdGE7CiAgICAgaWYgKCFtX29iamVj
dFN0b3JlSWQpCi0gICAgICAgIHJldHVybiBrRGF0YWJhc2VNZXRhRGF0YTsKLSAgICBpZiAobV9p
bmRleElkID09IGtPYmplY3RTdG9yZURhdGFJbmRleElkKQotICAgICAgICByZXR1cm4ga09iamVj
dFN0b3JlRGF0YTsKLSAgICBpZiAobV9pbmRleElkID09IGtFeGlzdHNFbnRyeUluZGV4SWQpCi0g
ICAgICAgIHJldHVybiBrRXhpc3RzRW50cnk7Ci0gICAgaWYgKG1faW5kZXhJZCA+PSBrTWluaW11
bUluZGV4SWQpCi0gICAgICAgIHJldHVybiBrSW5kZXhEYXRhOworICAgICAgICByZXR1cm4gRGF0
YWJhc2VNZXRhRGF0YTsKKyAgICBpZiAobV9pbmRleElkID09IE9iamVjdFN0b3JlRGF0YUluZGV4
SWQpCisgICAgICAgIHJldHVybiBPYmplY3RTdG9yZURhdGE7CisgICAgaWYgKG1faW5kZXhJZCA9
PSBFeGlzdHNFbnRyeUluZGV4SWQpCisgICAgICAgIHJldHVybiBFeGlzdHNFbnRyeTsKKyAgICBp
ZiAobV9pbmRleElkID49IE1pbmltdW1JbmRleElkKQorICAgICAgICByZXR1cm4gSW5kZXhEYXRh
OwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIGtJbnZhbGlkVHlwZTsK
KyAgICByZXR1cm4gSW52YWxpZFR5cGU7CiB9CiAKIFZlY3RvcjxjaGFyPiBTY2hlbWFWZXJzaW9u
S2V5OjplbmNvZGUoKQogewogICAgIEtleVByZWZpeCBwcmVmaXgoMCwgMCwgMCk7CiAgICAgVmVj
dG9yPGNoYXI+IHJldCA9IHByZWZpeC5lbmNvZGUoKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZUJ5
dGUoa1NjaGVtYVZlcnNpb25UeXBlQnl0ZSkpOworICAgIHJldC5hcHBlbmQoZW5jb2RlQnl0ZShT
Y2hlbWFWZXJzaW9uVHlwZUJ5dGUpKTsKICAgICByZXR1cm4gcmV0OwogfQogCkBAIC05NDEsNyAr
OTQxLDcgQEAgVmVjdG9yPGNoYXI+IE1heERhdGFiYXNlSWRLZXk6OmVuY29kZSgpCiB7CiAgICAg
S2V5UHJlZml4IHByZWZpeCgwLCAwLCAwKTsKICAgICBWZWN0b3I8Y2hhcj4gcmV0ID0gcHJlZml4
LmVuY29kZSgpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlQnl0ZShrTWF4RGF0YWJhc2VJZFR5cGVC
eXRlKSk7CisgICAgcmV0LmFwcGVuZChlbmNvZGVCeXRlKE1heERhdGFiYXNlSWRUeXBlQnl0ZSkp
OwogICAgIHJldHVybiByZXQ7CiB9CiAKQEAgLTk1Myw3ICs5NTMsNyBAQCBEYXRhYmFzZUZyZWVM
aXN0S2V5OjpEYXRhYmFzZUZyZWVMaXN0S2V5KCkKIGNvbnN0IGNoYXIqIERhdGFiYXNlRnJlZUxp
c3RLZXk6OmRlY29kZShjb25zdCBjaGFyKiBzdGFydCwgY29uc3QgY2hhciogbGltaXQsIERhdGFi
YXNlRnJlZUxpc3RLZXkqIHJlc3VsdCkKIHsKICAgICBLZXlQcmVmaXggcHJlZml4OwotICAgIGNv
bnN0IGNoYXIgKnAgPSBLZXlQcmVmaXg6OmRlY29kZShzdGFydCwgbGltaXQsICZwcmVmaXgpOwor
ICAgIGNvbnN0IGNoYXIqIHAgPSBLZXlQcmVmaXg6OmRlY29kZShzdGFydCwgbGltaXQsICZwcmVm
aXgpOwogICAgIGlmICghcCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgQVNTRVJUKCFwcmVmaXgu
bV9kYXRhYmFzZUlkKTsKQEAgLTk2Miw3ICs5NjIsNyBAQCBjb25zdCBjaGFyKiBEYXRhYmFzZUZy
ZWVMaXN0S2V5OjpkZWNvZGUoY29uc3QgY2hhciogc3RhcnQsIGNvbnN0IGNoYXIqIGxpbWl0LCBE
YQogICAgIGlmIChwID09IGxpbWl0KQogICAgICAgICByZXR1cm4gMDsKICAgICB1bnNpZ25lZCBj
aGFyIHR5cGVCeXRlID0gKnArKzsKLSAgICBBU1NFUlRfVU5VU0VEKHR5cGVCeXRlLCB0eXBlQnl0
ZSA9PSBrRGF0YWJhc2VGcmVlTGlzdFR5cGVCeXRlKTsKKyAgICBBU1NFUlRfVU5VU0VEKHR5cGVC
eXRlLCB0eXBlQnl0ZSA9PSBEYXRhYmFzZUZyZWVMaXN0VHlwZUJ5dGUpOwogICAgIGlmIChwID09
IGxpbWl0KQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gZGVjb2RlVmFySW50KHAsIGxp
bWl0LCByZXN1bHQtPm1fZGF0YWJhc2VJZCk7CkBAIC05NzIsNyArOTcyLDcgQEAgVmVjdG9yPGNo
YXI+IERhdGFiYXNlRnJlZUxpc3RLZXk6OmVuY29kZShpbnQ2NF90IGRhdGFiYXNlSWQpCiB7CiAg
ICAgS2V5UHJlZml4IHByZWZpeCgwLCAwLCAwKTsKICAgICBWZWN0b3I8Y2hhcj4gcmV0ID0gcHJl
Zml4LmVuY29kZSgpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlQnl0ZShrRGF0YWJhc2VGcmVlTGlz
dFR5cGVCeXRlKSk7CisgICAgcmV0LmFwcGVuZChlbmNvZGVCeXRlKERhdGFiYXNlRnJlZUxpc3RU
eXBlQnl0ZSkpOwogICAgIHJldC5hcHBlbmQoZW5jb2RlVmFySW50KGRhdGFiYXNlSWQpKTsKICAg
ICByZXR1cm4gcmV0OwogfQpAQCAtMTAwNiw3ICsxMDA2LDcgQEAgY29uc3QgY2hhciogRGF0YWJh
c2VOYW1lS2V5OjpkZWNvZGUoY29uc3QgY2hhciogc3RhcnQsIGNvbnN0IGNoYXIqIGxpbWl0LCBE
YXRhYmEKICAgICBpZiAocCA9PSBsaW1pdCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgdW5zaWdu
ZWQgY2hhciB0eXBlQnl0ZSA9ICpwKys7Ci0gICAgQVNTRVJUX1VOVVNFRCh0eXBlQnl0ZSwgdHlw
ZUJ5dGUgPT0ga0RhdGFiYXNlTmFtZVR5cGVCeXRlKTsKKyAgICBBU1NFUlRfVU5VU0VEKHR5cGVC
eXRlLCB0eXBlQnl0ZSA9PSBEYXRhYmFzZU5hbWVUeXBlQnl0ZSk7CiAgICAgaWYgKHAgPT0gbGlt
aXQpCiAgICAgICAgIHJldHVybiAwOwogICAgIHAgPSBkZWNvZGVTdHJpbmdXaXRoTGVuZ3RoKHAs
IGxpbWl0LCByZXN1bHQtPm1fb3JpZ2luKTsKQEAgLTEwMTksNyArMTAxOSw3IEBAIFZlY3Rvcjxj
aGFyPiBEYXRhYmFzZU5hbWVLZXk6OmVuY29kZShjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3Qg
U3RyaW5nJiBkYXRhYmFzCiB7CiAgICAgS2V5UHJlZml4IHByZWZpeCgwLCAwLCAwKTsKICAgICBW
ZWN0b3I8Y2hhcj4gcmV0ID0gcHJlZml4LmVuY29kZSgpOwotICAgIHJldC5hcHBlbmQoZW5jb2Rl
Qnl0ZShrRGF0YWJhc2VOYW1lVHlwZUJ5dGUpKTsKKyAgICByZXQuYXBwZW5kKGVuY29kZUJ5dGUo
RGF0YWJhc2VOYW1lVHlwZUJ5dGUpKTsKICAgICByZXQuYXBwZW5kKGVuY29kZVN0cmluZ1dpdGhM
ZW5ndGgob3JpZ2luKSk7CiAgICAgcmV0LmFwcGVuZChlbmNvZGVTdHJpbmdXaXRoTGVuZ3RoKGRh
dGFiYXNlTmFtZSkpOwogICAgIHJldHVybiByZXQ7CkBAIC0xMDY5LDcgKzEwNjksNyBAQCBjb25z
dCBjaGFyKiBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjpkZWNvZGUoY29uc3QgY2hhciogc3RhcnQs
IGNvbnN0IGNoYXIqIGxpbWl0LAogICAgIGlmIChwID09IGxpbWl0KQogICAgICAgICByZXR1cm4g
MDsKICAgICB1bnNpZ25lZCBjaGFyIHR5cGVCeXRlID0gKnArKzsKLSAgICBBU1NFUlRfVU5VU0VE
KHR5cGVCeXRlLCB0eXBlQnl0ZSA9PSBrT2JqZWN0U3RvcmVNZXRhRGF0YVR5cGVCeXRlKTsKKyAg
ICBBU1NFUlRfVU5VU0VEKHR5cGVCeXRlLCB0eXBlQnl0ZSA9PSBPYmplY3RTdG9yZU1ldGFEYXRh
VHlwZUJ5dGUpOwogICAgIGlmIChwID09IGxpbWl0KQogICAgICAgICByZXR1cm4gMDsKICAgICBw
ID0gZGVjb2RlVmFySW50KHAsIGxpbWl0LCByZXN1bHQtPm1fb2JqZWN0U3RvcmVJZCk7CkBAIC0x
MDg1LDcgKzEwODUsNyBAQCBWZWN0b3I8Y2hhcj4gT2JqZWN0U3RvcmVNZXRhRGF0YUtleTo6ZW5j
b2RlKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdAogewogICAgIEtleVByZWZp
eCBwcmVmaXgoZGF0YWJhc2VJZCwgMCwgMCk7CiAgICAgVmVjdG9yPGNoYXI+IHJldCA9IHByZWZp
eC5lbmNvZGUoKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZUJ5dGUoa09iamVjdFN0b3JlTWV0YURh
dGFUeXBlQnl0ZSkpOworICAgIHJldC5hcHBlbmQoZW5jb2RlQnl0ZShPYmplY3RTdG9yZU1ldGFE
YXRhVHlwZUJ5dGUpKTsKICAgICByZXQuYXBwZW5kKGVuY29kZVZhckludChvYmplY3RTdG9yZUlk
KSk7CiAgICAgcmV0LmFwcGVuZChlbmNvZGVWYXJJbnQobWV0YURhdGFUeXBlKSk7CiAgICAgcmV0
dXJuIHJldDsKQEAgLTEwOTMsMTIgKzEwOTMsMTIgQEAgVmVjdG9yPGNoYXI+IE9iamVjdFN0b3Jl
TWV0YURhdGFLZXk6OmVuY29kZShpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3QK
IAogVmVjdG9yPGNoYXI+IE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmVuY29kZU1heEtleShpbnQ2
NF90IGRhdGFiYXNlSWQpCiB7Ci0gICAgcmV0dXJuIGVuY29kZShkYXRhYmFzZUlkLCBJTlQ2NF9N
QVgsIGtPYmplY3RNZXRhRGF0YVR5cGVNYXhpbXVtKTsKKyAgICByZXR1cm4gZW5jb2RlKGRhdGFi
YXNlSWQsIElOVDY0X01BWCwgT2JqZWN0TWV0YURhdGFUeXBlTWF4aW11bSk7CiB9CiAKIFZlY3Rv
cjxjaGFyPiBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjplbmNvZGVNYXhLZXkoaW50NjRfdCBkYXRh
YmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQpCiB7Ci0gICAgcmV0dXJuIGVuY29kZShkYXRh
YmFzZUlkLCBvYmplY3RTdG9yZUlkLCBrT2JqZWN0TWV0YURhdGFUeXBlTWF4aW11bSk7CisgICAg
cmV0dXJuIGVuY29kZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBPYmplY3RNZXRhRGF0YVR5
cGVNYXhpbXVtKTsKIH0KIAogaW50NjRfdCBPYmplY3RTdG9yZU1ldGFEYXRhS2V5OjpvYmplY3RT
dG9yZUlkKCkgY29uc3QKQEAgLTExNDMsNyArMTE0Myw3IEBAIGNvbnN0IGNoYXIqIEluZGV4TWV0
YURhdGFLZXk6OmRlY29kZShjb25zdCBjaGFyKiBzdGFydCwgY29uc3QgY2hhciogbGltaXQsIElu
ZGV4CiAgICAgaWYgKHAgPT0gbGltaXQpCiAgICAgICAgIHJldHVybiAwOwogICAgIHVuc2lnbmVk
IGNoYXIgdHlwZUJ5dGUgPSAqcCsrOwotICAgIEFTU0VSVF9VTlVTRUQodHlwZUJ5dGUsIHR5cGVC
eXRlID09IGtJbmRleE1ldGFEYXRhVHlwZUJ5dGUpOworICAgIEFTU0VSVF9VTlVTRUQodHlwZUJ5
dGUsIHR5cGVCeXRlID09IEluZGV4TWV0YURhdGFUeXBlQnl0ZSk7CiAgICAgaWYgKHAgPT0gbGlt
aXQpCiAgICAgICAgIHJldHVybiAwOwogICAgIHAgPSBkZWNvZGVWYXJJbnQocCwgbGltaXQsIHJl
c3VsdC0+bV9vYmplY3RTdG9yZUlkKTsKQEAgLTExNjIsNyArMTE2Miw3IEBAIFZlY3RvcjxjaGFy
PiBJbmRleE1ldGFEYXRhS2V5OjplbmNvZGUoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9i
amVjdFN0b3JlSWQsCiB7CiAgICAgS2V5UHJlZml4IHByZWZpeChkYXRhYmFzZUlkLCAwLCAwKTsK
ICAgICBWZWN0b3I8Y2hhcj4gcmV0ID0gcHJlZml4LmVuY29kZSgpOwotICAgIHJldC5hcHBlbmQo
ZW5jb2RlQnl0ZShrSW5kZXhNZXRhRGF0YVR5cGVCeXRlKSk7CisgICAgcmV0LmFwcGVuZChlbmNv
ZGVCeXRlKEluZGV4TWV0YURhdGFUeXBlQnl0ZSkpOwogICAgIHJldC5hcHBlbmQoZW5jb2RlVmFy
SW50KG9iamVjdFN0b3JlSWQpKTsKICAgICByZXQuYXBwZW5kKGVuY29kZVZhckludChpbmRleElk
KSk7CiAgICAgcmV0LmFwcGVuZChlbmNvZGVCeXRlKG1ldGFEYXRhVHlwZSkpOwpAQCAtMTE3MSwx
MiArMTE3MSwxMiBAQCBWZWN0b3I8Y2hhcj4gSW5kZXhNZXRhRGF0YUtleTo6ZW5jb2RlKGludDY0
X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLAogCiBWZWN0b3I8Y2hhcj4gSW5k
ZXhNZXRhRGF0YUtleTo6ZW5jb2RlTWF4S2V5KGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBv
YmplY3RTdG9yZUlkKQogewotICAgIHJldHVybiBlbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3Rv
cmVJZCwgSU5UNjRfTUFYLCBrSW5kZXhNZXRhRGF0YVR5cGVNYXhpbXVtKTsKKyAgICByZXR1cm4g
ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIElOVDY0X01BWCwgSW5kZXhNZXRhRGF0
YVR5cGVNYXhpbXVtKTsKIH0KIAogVmVjdG9yPGNoYXI+IEluZGV4TWV0YURhdGFLZXk6OmVuY29k
ZU1heEtleShpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRf
dCBpbmRleElkKQogewotICAgIHJldHVybiBlbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJ
ZCwgaW5kZXhJZCwga0luZGV4TWV0YURhdGFUeXBlTWF4aW11bSk7CisgICAgcmV0dXJuIGVuY29k
ZShkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkLCBJbmRleE1ldGFEYXRhVHlwZU1h
eGltdW0pOwogfQogCiBpbnQgSW5kZXhNZXRhRGF0YUtleTo6Y29tcGFyZShjb25zdCBJbmRleE1l
dGFEYXRhS2V5JiBvdGhlcikKQEAgLTEyMDUsNyArMTIwNSw3IEBAIE9iamVjdFN0b3JlRnJlZUxp
c3RLZXk6Ok9iamVjdFN0b3JlRnJlZUxpc3RLZXkoKQogY29uc3QgY2hhciogT2JqZWN0U3RvcmVG
cmVlTGlzdEtleTo6ZGVjb2RlKGNvbnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBjaGFyKiBsaW1pdCwg
T2JqZWN0U3RvcmVGcmVlTGlzdEtleSogcmVzdWx0KQogewogICAgIEtleVByZWZpeCBwcmVmaXg7
Ci0gICAgY29uc3QgY2hhciAqcCA9IEtleVByZWZpeDo6ZGVjb2RlKHN0YXJ0LCBsaW1pdCwgJnBy
ZWZpeCk7CisgICAgY29uc3QgY2hhciogcCA9IEtleVByZWZpeDo6ZGVjb2RlKHN0YXJ0LCBsaW1p
dCwgJnByZWZpeCk7CiAgICAgaWYgKCFwKQogICAgICAgICByZXR1cm4gMDsKICAgICBBU1NFUlQo
cHJlZml4Lm1fZGF0YWJhc2VJZCk7CkBAIC0xMjE0LDcgKzEyMTQsNyBAQCBjb25zdCBjaGFyKiBP
YmplY3RTdG9yZUZyZWVMaXN0S2V5OjpkZWNvZGUoY29uc3QgY2hhciogc3RhcnQsIGNvbnN0IGNo
YXIqIGxpbWl0LAogICAgIGlmIChwID09IGxpbWl0KQogICAgICAgICByZXR1cm4gMDsKICAgICB1
bnNpZ25lZCBjaGFyIHR5cGVCeXRlID0gKnArKzsKLSAgICBBU1NFUlRfVU5VU0VEKHR5cGVCeXRl
LCB0eXBlQnl0ZSA9PSBrT2JqZWN0U3RvcmVGcmVlTGlzdFR5cGVCeXRlKTsKKyAgICBBU1NFUlRf
VU5VU0VEKHR5cGVCeXRlLCB0eXBlQnl0ZSA9PSBPYmplY3RTdG9yZUZyZWVMaXN0VHlwZUJ5dGUp
OwogICAgIGlmIChwID09IGxpbWl0KQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gZGVj
b2RlVmFySW50KHAsIGxpbWl0LCByZXN1bHQtPm1fb2JqZWN0U3RvcmVJZCk7CkBAIC0xMjI0LDcg
KzEyMjQsNyBAQCBWZWN0b3I8Y2hhcj4gT2JqZWN0U3RvcmVGcmVlTGlzdEtleTo6ZW5jb2RlKGlu
dDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdAogewogICAgIEtleVByZWZpeCBwcmVm
aXgoZGF0YWJhc2VJZCwgMCwgMCk7CiAgICAgVmVjdG9yPGNoYXI+IHJldCA9IHByZWZpeC5lbmNv
ZGUoKTsKLSAgICByZXQuYXBwZW5kKGVuY29kZUJ5dGUoa09iamVjdFN0b3JlRnJlZUxpc3RUeXBl
Qnl0ZSkpOworICAgIHJldC5hcHBlbmQoZW5jb2RlQnl0ZShPYmplY3RTdG9yZUZyZWVMaXN0VHlw
ZUJ5dGUpKTsKICAgICByZXQuYXBwZW5kKGVuY29kZVZhckludChvYmplY3RTdG9yZUlkKSk7CiAg
ICAgcmV0dXJuIHJldDsKIH0KQEAgLTEyNjcsNyArMTI2Nyw3IEBAIGNvbnN0IGNoYXIqIEluZGV4
RnJlZUxpc3RLZXk6OmRlY29kZShjb25zdCBjaGFyKiBzdGFydCwgY29uc3QgY2hhciogbGltaXQs
IEluZGV4CiAgICAgaWYgKHAgPT0gbGltaXQpCiAgICAgICAgIHJldHVybiAwOwogICAgIHVuc2ln
bmVkIGNoYXIgdHlwZUJ5dGUgPSAqcCsrOwotICAgIEFTU0VSVF9VTlVTRUQodHlwZUJ5dGUsIHR5
cGVCeXRlID09IGtJbmRleEZyZWVMaXN0VHlwZUJ5dGUpOworICAgIEFTU0VSVF9VTlVTRUQodHlw
ZUJ5dGUsIHR5cGVCeXRlID09IEluZGV4RnJlZUxpc3RUeXBlQnl0ZSk7CiAgICAgaWYgKHAgPT0g
bGltaXQpCiAgICAgICAgIHJldHVybiAwOwogICAgIHAgPSBkZWNvZGVWYXJJbnQocCwgbGltaXQs
IHJlc3VsdC0+bV9vYmplY3RTdG9yZUlkKTsKQEAgLTEyODAsNyArMTI4MCw3IEBAIFZlY3Rvcjxj
aGFyPiBJbmRleEZyZWVMaXN0S2V5OjplbmNvZGUoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQsCiB7CiAgICAgS2V5UHJlZml4IHByZWZpeChkYXRhYmFzZUlkLCAwLCAw
KTsKICAgICBWZWN0b3I8Y2hhcj4gcmV0ID0gcHJlZml4LmVuY29kZSgpOwotICAgIHJldC5hcHBl
bmQoZW5jb2RlQnl0ZShrSW5kZXhGcmVlTGlzdFR5cGVCeXRlKSk7CisgICAgcmV0LmFwcGVuZChl
bmNvZGVCeXRlKEluZGV4RnJlZUxpc3RUeXBlQnl0ZSkpOwogICAgIHJldC5hcHBlbmQoZW5jb2Rl
VmFySW50KG9iamVjdFN0b3JlSWQpKTsKICAgICByZXQuYXBwZW5kKGVuY29kZVZhckludChpbmRl
eElkKSk7CiAgICAgcmV0dXJuIHJldDsKQEAgLTEzMjcsNyArMTMyNyw3IEBAIGNvbnN0IGNoYXIq
IE9iamVjdFN0b3JlTmFtZXNLZXk6OmRlY29kZShjb25zdCBjaGFyKiBzdGFydCwgY29uc3QgY2hh
ciogbGltaXQsIE9iCiAgICAgaWYgKHAgPT0gbGltaXQpCiAgICAgICAgIHJldHVybiAwOwogICAg
IHVuc2lnbmVkIGNoYXIgdHlwZUJ5dGUgPSAqcCsrOwotICAgIEFTU0VSVF9VTlVTRUQodHlwZUJ5
dGUsIHR5cGVCeXRlID09IGtPYmplY3RTdG9yZU5hbWVzVHlwZUJ5dGUpOworICAgIEFTU0VSVF9V
TlVTRUQodHlwZUJ5dGUsIHR5cGVCeXRlID09IE9iamVjdFN0b3JlTmFtZXNUeXBlQnl0ZSk7CiAg
ICAgcmV0dXJuIGRlY29kZVN0cmluZ1dpdGhMZW5ndGgocCwgbGltaXQsIHJlc3VsdC0+bV9vYmpl
Y3RTdG9yZU5hbWUpOwogfQogCkBAIC0xMzM1LDcgKzEzMzUsNyBAQCBWZWN0b3I8Y2hhcj4gT2Jq
ZWN0U3RvcmVOYW1lc0tleTo6ZW5jb2RlKGludDY0X3QgZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5n
JiBvYmplYwogewogICAgIEtleVByZWZpeCBwcmVmaXgoZGF0YWJhc2VJZCwgMCwgMCk7CiAgICAg
VmVjdG9yPGNoYXI+IHJldCA9IHByZWZpeC5lbmNvZGUoKTsKLSAgICByZXQuYXBwZW5kKGVuY29k
ZUJ5dGUoa09iamVjdFN0b3JlTmFtZXNUeXBlQnl0ZSkpOworICAgIHJldC5hcHBlbmQoZW5jb2Rl
Qnl0ZShPYmplY3RTdG9yZU5hbWVzVHlwZUJ5dGUpKTsKICAgICByZXQuYXBwZW5kKGVuY29kZVN0
cmluZ1dpdGhMZW5ndGgob2JqZWN0U3RvcmVOYW1lKSk7CiAgICAgcmV0dXJuIHJldDsKIH0KQEAg
LTEzNjQsNyArMTM2NCw3IEBAIGNvbnN0IGNoYXIqIEluZGV4TmFtZXNLZXk6OmRlY29kZShjb25z
dCBjaGFyKiBzdGFydCwgY29uc3QgY2hhciogbGltaXQsIEluZGV4TmFtCiAgICAgaWYgKHAgPT0g
bGltaXQpCiAgICAgICAgIHJldHVybiAwOwogICAgIHVuc2lnbmVkIGNoYXIgdHlwZUJ5dGUgPSAq
cCsrOwotICAgIEFTU0VSVF9VTlVTRUQodHlwZUJ5dGUsIHR5cGVCeXRlID09IGtJbmRleE5hbWVz
S2V5VHlwZUJ5dGUpOworICAgIEFTU0VSVF9VTlVTRUQodHlwZUJ5dGUsIHR5cGVCeXRlID09IElu
ZGV4TmFtZXNLZXlUeXBlQnl0ZSk7CiAgICAgaWYgKHAgPT0gbGltaXQpCiAgICAgICAgIHJldHVy
biAwOwogICAgIHAgPSBkZWNvZGVWYXJJbnQocCwgbGltaXQsIHJlc3VsdC0+bV9vYmplY3RTdG9y
ZUlkKTsKQEAgLTEzNzcsNyArMTM3Nyw3IEBAIFZlY3RvcjxjaGFyPiBJbmRleE5hbWVzS2V5Ojpl
bmNvZGUoaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvCiB7CiAg
ICAgS2V5UHJlZml4IHByZWZpeChkYXRhYmFzZUlkLCAwLCAwKTsKICAgICBWZWN0b3I8Y2hhcj4g
cmV0ID0gcHJlZml4LmVuY29kZSgpOwotICAgIHJldC5hcHBlbmQoZW5jb2RlQnl0ZShrSW5kZXhO
YW1lc0tleVR5cGVCeXRlKSk7CisgICAgcmV0LmFwcGVuZChlbmNvZGVCeXRlKEluZGV4TmFtZXNL
ZXlUeXBlQnl0ZSkpOwogICAgIHJldC5hcHBlbmQoZW5jb2RlVmFySW50KG9iamVjdFN0b3JlSWQp
KTsKICAgICByZXQuYXBwZW5kKGVuY29kZVN0cmluZ1dpdGhMZW5ndGgoaW5kZXhOYW1lKSk7CiAg
ICAgcmV0dXJuIHJldDsKQEAgLTEzOTksNyArMTM5OSw3IEBAIGNvbnN0IGNoYXIqIE9iamVjdFN0
b3JlRGF0YUtleTo6ZGVjb2RlKGNvbnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBjaGFyKiBlbmQsIE9i
amVjCiAgICAgICAgIHJldHVybiAwOwogICAgIEFTU0VSVChwcmVmaXgubV9kYXRhYmFzZUlkKTsK
ICAgICBBU1NFUlQocHJlZml4Lm1fb2JqZWN0U3RvcmVJZCk7Ci0gICAgQVNTRVJUKHByZWZpeC5t
X2luZGV4SWQgPT0ga1NwZWNpYWxJbmRleE51bWJlcik7CisgICAgQVNTRVJUKHByZWZpeC5tX2lu
ZGV4SWQgPT0gU3BlY2lhbEluZGV4TnVtYmVyKTsKICAgICBpZiAocCA9PSBlbmQpCiAgICAgICAg
IHJldHVybiAwOwogICAgIHJldHVybiBleHRyYWN0RW5jb2RlZElEQktleShwLCBlbmQsICZyZXN1
bHQtPm1fZW5jb2RlZFVzZXJLZXkpOwpAQCAtMTQwNyw3ICsxNDA3LDcgQEAgY29uc3QgY2hhciog
T2JqZWN0U3RvcmVEYXRhS2V5OjpkZWNvZGUoY29uc3QgY2hhciogc3RhcnQsIGNvbnN0IGNoYXIq
IGVuZCwgT2JqZWMKIAogVmVjdG9yPGNoYXI+IE9iamVjdFN0b3JlRGF0YUtleTo6ZW5jb2RlKGlu
dDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBWZWN0b3I8Y2hh
cj4gZW5jb2RlZFVzZXJLZXkpCiB7Ci0gICAgS2V5UHJlZml4IHByZWZpeChkYXRhYmFzZUlkLCBv
YmplY3RTdG9yZUlkLCBrU3BlY2lhbEluZGV4TnVtYmVyKTsKKyAgICBLZXlQcmVmaXggcHJlZml4
KGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIFNwZWNpYWxJbmRleE51bWJlcik7CiAgICAgVmVj
dG9yPGNoYXI+IHJldCA9IHByZWZpeC5lbmNvZGUoKTsKICAgICByZXQuYXBwZW5kKGVuY29kZWRV
c2VyS2V5KTsKIApAQCAtMTQzMSw3ICsxNDMxLDcgQEAgUGFzc1JlZlB0cjxJREJLZXk+IE9iamVj
dFN0b3JlRGF0YUtleTo6dXNlcktleSgpIGNvbnN0CiAgICAgcmV0dXJuIGtleTsKIH0KIAotY29u
c3QgaW50NjRfdCBPYmplY3RTdG9yZURhdGFLZXk6OmtTcGVjaWFsSW5kZXhOdW1iZXIgPSBrT2Jq
ZWN0U3RvcmVEYXRhSW5kZXhJZDsKK2NvbnN0IGludDY0X3QgT2JqZWN0U3RvcmVEYXRhS2V5OjpT
cGVjaWFsSW5kZXhOdW1iZXIgPSBPYmplY3RTdG9yZURhdGFJbmRleElkOwogCiBjb25zdCBjaGFy
KiBFeGlzdHNFbnRyeUtleTo6ZGVjb2RlKGNvbnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBjaGFyKiBl
bmQsIEV4aXN0c0VudHJ5S2V5KiByZXN1bHQpCiB7CkBAIC0xNDQxLDcgKzE0NDEsNyBAQCBjb25z
dCBjaGFyKiBFeGlzdHNFbnRyeUtleTo6ZGVjb2RlKGNvbnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBj
aGFyKiBlbmQsIEV4aXN0c0VudAogICAgICAgICByZXR1cm4gMDsKICAgICBBU1NFUlQocHJlZml4
Lm1fZGF0YWJhc2VJZCk7CiAgICAgQVNTRVJUKHByZWZpeC5tX29iamVjdFN0b3JlSWQpOwotICAg
IEFTU0VSVChwcmVmaXgubV9pbmRleElkID09IGtTcGVjaWFsSW5kZXhOdW1iZXIpOworICAgIEFT
U0VSVChwcmVmaXgubV9pbmRleElkID09IFNwZWNpYWxJbmRleE51bWJlcik7CiAgICAgaWYgKHAg
PT0gZW5kKQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gZXh0cmFjdEVuY29kZWRJREJL
ZXkocCwgZW5kLCAmcmVzdWx0LT5tX2VuY29kZWRVc2VyS2V5KTsKQEAgLTE0NDksNyArMTQ0OSw3
IEBAIGNvbnN0IGNoYXIqIEV4aXN0c0VudHJ5S2V5OjpkZWNvZGUoY29uc3QgY2hhciogc3RhcnQs
IGNvbnN0IGNoYXIqIGVuZCwgRXhpc3RzRW50CiAKIFZlY3RvcjxjaGFyPiBFeGlzdHNFbnRyeUtl
eTo6ZW5jb2RlKGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25z
dCBWZWN0b3I8Y2hhcj4mIGVuY29kZWRLZXkpCiB7Ci0gICAgS2V5UHJlZml4IHByZWZpeChkYXRh
YmFzZUlkLCBvYmplY3RTdG9yZUlkLCBrU3BlY2lhbEluZGV4TnVtYmVyKTsKKyAgICBLZXlQcmVm
aXggcHJlZml4KGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIFNwZWNpYWxJbmRleE51bWJlcik7
CiAgICAgVmVjdG9yPGNoYXI+IHJldCA9IHByZWZpeC5lbmNvZGUoKTsKICAgICByZXQuYXBwZW5k
KGVuY29kZWRLZXkpOwogICAgIHJldHVybiByZXQ7CkBAIC0xNDcyLDcgKzE0NzIsNyBAQCBQYXNz
UmVmUHRyPElEQktleT4gRXhpc3RzRW50cnlLZXk6OnVzZXJLZXkoKSBjb25zdAogICAgIHJldHVy
biBrZXk7CiB9CiAKLWNvbnN0IGludDY0X3QgRXhpc3RzRW50cnlLZXk6OmtTcGVjaWFsSW5kZXhO
dW1iZXIgPSBrRXhpc3RzRW50cnlJbmRleElkOworY29uc3QgaW50NjRfdCBFeGlzdHNFbnRyeUtl
eTo6U3BlY2lhbEluZGV4TnVtYmVyID0gRXhpc3RzRW50cnlJbmRleElkOwogCiBJbmRleERhdGFL
ZXk6OkluZGV4RGF0YUtleSgpCiAgICAgOiBtX2RhdGFiYXNlSWQoLTEpCkBAIC0xNDkwLDcgKzE0
OTAsNyBAQCBjb25zdCBjaGFyKiBJbmRleERhdGFLZXk6OmRlY29kZShjb25zdCBjaGFyKiBzdGFy
dCwgY29uc3QgY2hhciogbGltaXQsIEluZGV4RGF0YQogICAgICAgICByZXR1cm4gMDsKICAgICBB
U1NFUlQocHJlZml4Lm1fZGF0YWJhc2VJZCk7CiAgICAgQVNTRVJUKHByZWZpeC5tX29iamVjdFN0
b3JlSWQpOwotICAgIEFTU0VSVChwcmVmaXgubV9pbmRleElkID49IGtNaW5pbXVtSW5kZXhJZCk7
CisgICAgQVNTRVJUKHByZWZpeC5tX2luZGV4SWQgPj0gTWluaW11bUluZGV4SWQpOwogICAgIHJl
c3VsdC0+bV9kYXRhYmFzZUlkID0gcHJlZml4Lm1fZGF0YWJhc2VJZDsKICAgICByZXN1bHQtPm1f
b2JqZWN0U3RvcmVJZCA9IHByZWZpeC5tX29iamVjdFN0b3JlSWQ7CiAgICAgcmVzdWx0LT5tX2lu
ZGV4SWQgPSBwcmVmaXgubV9pbmRleElkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCTGV2ZWxEQkNvZGluZy5oCmluZGV4IGEyM2EyOTI3NDc4ZmQ3MjAzMjNi
ZWE4Njg4YjhiNGYxNTIwNjJkNDIuLjMxMTNlN2Q4YTk4ODJiZDdkOGU3NzljYWRhYTk3ZWQ4MjFj
NWE4ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxl
dmVsREJDb2RpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJM
ZXZlbERCQ29kaW5nLmgKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgTGV2ZWxEQlNsaWNlOwogCiBu
YW1lc3BhY2UgSURCTGV2ZWxEQkNvZGluZyB7CiAKLWNvbnN0IHVuc2lnbmVkIGNoYXIga01pbmlt
dW1JbmRleElkID0gMzA7Citjb25zdCB1bnNpZ25lZCBjaGFyIE1pbmltdW1JbmRleElkID0gMzA7
CiAKIFZlY3RvcjxjaGFyPiBlbmNvZGVCeXRlKHVuc2lnbmVkIGNoYXIpOwogVmVjdG9yPGNoYXI+
IG1heElEQktleSgpOwpAQCAtNTEsNyArNTEsNyBAQCBib29sIGRlY29kZUJvb2woY29uc3QgY2hh
ciogYmVnaW4sIGNvbnN0IGNoYXIqIGVuZCk7CiBWZWN0b3I8Y2hhcj4gZW5jb2RlSW50KGludDY0
X3QpOwogaW50NjRfdCBkZWNvZGVJbnQoY29uc3QgY2hhciogYmVnaW4sIGNvbnN0IGNoYXIqIGVu
ZCk7CiBWZWN0b3I8Y2hhcj4gZW5jb2RlVmFySW50KGludDY0X3QpOwotY29uc3QgY2hhciogZGVj
b2RlVmFySW50KGNvbnN0IGNoYXIgKnAsIGNvbnN0IGNoYXIqIGxpbWl0LCBpbnQ2NF90JiBmb3Vu
ZEludCk7Citjb25zdCBjaGFyKiBkZWNvZGVWYXJJbnQoY29uc3QgY2hhciogcCwgY29uc3QgY2hh
ciogbGltaXQsIGludDY0X3QmIGZvdW5kSW50KTsKIFZlY3RvcjxjaGFyPiBlbmNvZGVTdHJpbmco
Y29uc3QgU3RyaW5nJik7CiBTdHJpbmcgZGVjb2RlU3RyaW5nKGNvbnN0IGNoYXIqIHAsIGNvbnN0
IGNoYXIqIGVuZCk7CiBWZWN0b3I8Y2hhcj4gZW5jb2RlU3RyaW5nV2l0aExlbmd0aChjb25zdCBT
dHJpbmcmKTsKQEAgLTc5LDEyICs3OSwxMiBAQCBwdWJsaWM6CiAgICAgaW50IGNvbXBhcmUoY29u
c3QgS2V5UHJlZml4JiBvdGhlcikgY29uc3Q7CiAKICAgICBlbnVtIFR5cGUgewotICAgICAgICBr
R2xvYmFsTWV0YURhdGEsCi0gICAgICAgIGtEYXRhYmFzZU1ldGFEYXRhLAotICAgICAgICBrT2Jq
ZWN0U3RvcmVEYXRhLAotICAgICAgICBrRXhpc3RzRW50cnksCi0gICAgICAgIGtJbmRleERhdGEs
Ci0gICAgICAgIGtJbnZhbGlkVHlwZQorICAgICAgICBHbG9iYWxNZXRhRGF0YSwKKyAgICAgICAg
RGF0YWJhc2VNZXRhRGF0YSwKKyAgICAgICAgT2JqZWN0U3RvcmVEYXRhLAorICAgICAgICBFeGlz
dHNFbnRyeSwKKyAgICAgICAgSW5kZXhEYXRhLAorICAgICAgICBJbnZhbGlkVHlwZQogICAgIH07
CiAKICAgICBUeXBlIHR5cGUoKSBjb25zdDsKQEAgLTkzLDcgKzkzLDcgQEAgcHVibGljOgogICAg
IGludDY0X3QgbV9vYmplY3RTdG9yZUlkOwogICAgIGludDY0X3QgbV9pbmRleElkOwogCi0gICAg
c3RhdGljIGNvbnN0IGludDY0X3Qga0ludmFsaWRJZCA9IC0xOworICAgIHN0YXRpYyBjb25zdCBp
bnQ2NF90IEludmFsaWRJZCA9IC0xOwogfTsKIAogY2xhc3MgU2NoZW1hVmVyc2lvbktleSB7CkBA
IC0xMzcsMTAgKzEzNywxMCBAQCBwcml2YXRlOgogY2xhc3MgRGF0YWJhc2VNZXRhRGF0YUtleSB7
CiBwdWJsaWM6CiAgICAgZW51bSBNZXRhRGF0YVR5cGUgewotICAgICAgICBrT3JpZ2luTmFtZSA9
IDAsCi0gICAgICAgIGtEYXRhYmFzZU5hbWUgPSAxLAotICAgICAgICBrVXNlclZlcnNpb24gPSAy
LAotICAgICAgICBrTWF4T2JqZWN0U3RvcmVJZCA9IDMKKyAgICAgICAgT3JpZ2luTmFtZSA9IDAs
CisgICAgICAgIERhdGFiYXNlTmFtZSA9IDEsCisgICAgICAgIFVzZXJWZXJzaW9uID0gMiwKKyAg
ICAgICAgTWF4T2JqZWN0U3RvcmVJZCA9IDMKICAgICB9OwogCiAgICAgc3RhdGljIFZlY3Rvcjxj
aGFyPiBlbmNvZGUoaW50NjRfdCBkYXRhYmFzZUlkLCBNZXRhRGF0YVR5cGUpOwpAQCAtMTQ5LDE0
ICsxNDksMTQgQEAgcHVibGljOgogY2xhc3MgT2JqZWN0U3RvcmVNZXRhRGF0YUtleSB7CiBwdWJs
aWM6CiAgICAgZW51bSBNZXRhRGF0YVR5cGUgewotICAgICAgICBrTmFtZSA9IDAsCi0gICAgICAg
IGtLZXlQYXRoID0gMSwKLSAgICAgICAga0F1dG9JbmNyZW1lbnQgPSAyLAotICAgICAgICBrRXZp
Y3RhYmxlID0gMywKLSAgICAgICAga0xhc3RWZXJzaW9uID0gNCwKLSAgICAgICAga01heEluZGV4
SWQgPSA1LAotICAgICAgICBrSGFzS2V5UGF0aCA9IDYsCi0gICAgICAgIGtLZXlHZW5lcmF0b3JD
dXJyZW50TnVtYmVyID0gNworICAgICAgICBOYW1lID0gMCwKKyAgICAgICAgS2V5UGF0aCA9IDEs
CisgICAgICAgIEF1dG9JbmNyZW1lbnQgPSAyLAorICAgICAgICBFdmljdGFibGUgPSAzLAorICAg
ICAgICBMYXN0VmVyc2lvbiA9IDQsCisgICAgICAgIE1heEluZGV4SWQgPSA1LAorICAgICAgICBI
YXNLZXlQYXRoID0gNiwKKyAgICAgICAgS2V5R2VuZXJhdG9yQ3VycmVudE51bWJlciA9IDcKICAg
ICB9OwogCiAgICAgT2JqZWN0U3RvcmVNZXRhRGF0YUtleSgpOwpAQCAtMTc2LDEwICsxNzYsMTAg
QEAgcHJpdmF0ZToKIGNsYXNzIEluZGV4TWV0YURhdGFLZXkgewogcHVibGljOgogICAgIGVudW0g
TWV0YURhdGFUeXBlIHsKLSAgICAgICAga05hbWUgPSAwLAotICAgICAgICBrVW5pcXVlID0gMSwK
LSAgICAgICAga0tleVBhdGggPSAyLAotICAgICAgICBrTXVsdGlFbnRyeSA9IDMKKyAgICAgICAg
TmFtZSA9IDAsCisgICAgICAgIFVuaXF1ZSA9IDEsCisgICAgICAgIEtleVBhdGggPSAyLAorICAg
ICAgICBNdWx0aUVudHJ5ID0gMwogICAgIH07CiAKICAgICBJbmRleE1ldGFEYXRhS2V5KCk7CkBA
IC0yNjEsNyArMjYxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBWZWN0b3I8Y2hhcj4gZW5jb2Rl
KGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXkm
IHVzZXJLZXkpOwogICAgIGludCBjb21wYXJlKGNvbnN0IE9iamVjdFN0b3JlRGF0YUtleSYgb3Ro
ZXIpOwogICAgIFBhc3NSZWZQdHI8SURCS2V5PiB1c2VyS2V5KCkgY29uc3Q7Ci0gICAgc3RhdGlj
IGNvbnN0IGludDY0X3Qga1NwZWNpYWxJbmRleE51bWJlcjsKKyAgICBzdGF0aWMgY29uc3QgaW50
NjRfdCBTcGVjaWFsSW5kZXhOdW1iZXI7CiAKIHByaXZhdGU6CiAgICAgVmVjdG9yPGNoYXI+IG1f
ZW5jb2RlZFVzZXJLZXk7CkBAIC0yNzUsNyArMjc1LDcgQEAgcHVibGljOgogICAgIGludCBjb21w
YXJlKGNvbnN0IEV4aXN0c0VudHJ5S2V5JiBvdGhlcik7CiAgICAgUGFzc1JlZlB0cjxJREJLZXk+
IHVzZXJLZXkoKSBjb25zdDsKIAotICAgIHN0YXRpYyBjb25zdCBpbnQ2NF90IGtTcGVjaWFsSW5k
ZXhOdW1iZXI7CisgICAgc3RhdGljIGNvbnN0IGludDY0X3QgU3BlY2lhbEluZGV4TnVtYmVyOwog
CiBwcml2YXRlOgogICAgIFZlY3RvcjxjaGFyPiBtX2VuY29kZWRVc2VyS2V5OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJMZXZlbERCQ29kaW5nVGVzdC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkxldmVsREJDb2RpbmdUZXN0LmNwcApp
bmRleCBhMzRiNDM2YmRhYWI2MTI5MTMwMWM4MzdlYzM1ZmViZDg2MjAzZmYwLi4xMzc2OTljMzBl
NWQ2MGIyNDUzNGFiNDczNjM3NzFhOTQ0MGFiMTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0lEQkxldmVsREJDb2RpbmdUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0lEQkxldmVsREJDb2RpbmdUZXN0LmNwcApAQCAtNjMwLDcgKzYz
MCw3IEBAIFRFU1QoSURCTGV2ZWxEQkNvZGluZ1Rlc3QsIENvbXBhcmlzb25UZXN0KQogICAgIGtl
eXMuYXBwZW5kKERhdGFiYXNlTmFtZUtleTo6ZW5jb2RlKCIiLCAiIikpOwogICAgIGtleXMuYXBw
ZW5kKERhdGFiYXNlTmFtZUtleTo6ZW5jb2RlKCIiLCAiYSIpKTsKICAgICBrZXlzLmFwcGVuZChE
YXRhYmFzZU5hbWVLZXk6OmVuY29kZSgiYSIsICJhIikpOwotICAgIGtleXMuYXBwZW5kKERhdGFi
YXNlTWV0YURhdGFLZXk6OmVuY29kZSgxLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjprT3JpZ2luTmFt
ZSkpOworICAgIGtleXMuYXBwZW5kKERhdGFiYXNlTWV0YURhdGFLZXk6OmVuY29kZSgxLCBEYXRh
YmFzZU1ldGFEYXRhS2V5OjpPcmlnaW5OYW1lKSk7CiAgICAga2V5cy5hcHBlbmQoT2JqZWN0U3Rv
cmVNZXRhRGF0YUtleTo6ZW5jb2RlKDEsIDEsIDApKTsKICAgICBrZXlzLmFwcGVuZChPYmplY3RT
dG9yZU1ldGFEYXRhS2V5OjplbmNvZGUoMSwgMSwgMSkpOwogICAgIGtleXMuYXBwZW5kKE9iamVj
dFN0b3JlTWV0YURhdGFLZXk6OmVuY29kZU1heEtleSgxLCAxKSk7CkBAIC02NDUsOSArNjQ1LDkg
QEAgVEVTVChJREJMZXZlbERCQ29kaW5nVGVzdCwgQ29tcGFyaXNvblRlc3QpCiAgICAga2V5cy5h
cHBlbmQoSW5kZXhNZXRhRGF0YUtleTo6ZW5jb2RlTWF4S2V5KDEsIDIpKTsKICAgICBrZXlzLmFw
cGVuZChPYmplY3RTdG9yZUZyZWVMaXN0S2V5OjplbmNvZGUoMSwgMSkpOwogICAgIGtleXMuYXBw
ZW5kKE9iamVjdFN0b3JlRnJlZUxpc3RLZXk6OmVuY29kZU1heEtleSgxKSk7Ci0gICAga2V5cy5h
cHBlbmQoSW5kZXhGcmVlTGlzdEtleTo6ZW5jb2RlKDEsIDEsIGtNaW5pbXVtSW5kZXhJZCkpOwor
ICAgIGtleXMuYXBwZW5kKEluZGV4RnJlZUxpc3RLZXk6OmVuY29kZSgxLCAxLCBNaW5pbXVtSW5k
ZXhJZCkpOwogICAgIGtleXMuYXBwZW5kKEluZGV4RnJlZUxpc3RLZXk6OmVuY29kZU1heEtleSgx
LCAxKSk7Ci0gICAga2V5cy5hcHBlbmQoSW5kZXhGcmVlTGlzdEtleTo6ZW5jb2RlKDEsIDIsIGtN
aW5pbXVtSW5kZXhJZCkpOworICAgIGtleXMuYXBwZW5kKEluZGV4RnJlZUxpc3RLZXk6OmVuY29k
ZSgxLCAyLCBNaW5pbXVtSW5kZXhJZCkpOwogICAgIGtleXMuYXBwZW5kKEluZGV4RnJlZUxpc3RL
ZXk6OmVuY29kZU1heEtleSgxLCAyKSk7CiAgICAga2V5cy5hcHBlbmQoT2JqZWN0U3RvcmVOYW1l
c0tleTo6ZW5jb2RlKDEsICIiKSk7CiAgICAga2V5cy5hcHBlbmQoT2JqZWN0U3RvcmVOYW1lc0tl
eTo6ZW5jb2RlKDEsICJhIikpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>