<?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>207585</bug_id>
          
          <creation_ts>2020-02-11 14:27:02 -0800</creation_ts>
          <short_desc>[LFC] Rename Layout::Container to Layout::ContainerBox</short_desc>
          <delta_ts>2020-02-11 17:08:15 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>koivisto</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1617632</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2020-02-11 14:27:02 -0800</bug_when>
    <thetext>it&apos;s more inline with the rest of the class names.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1617633</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-02-11 14:27:22 -0800</bug_when>
    <thetext>&lt;rdar://problem/59363845&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1617636</commentid>
    <comment_count>2</comment_count>
      <attachid>390426</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-02-11 14:30:28 -0800</bug_when>
    <thetext>Created attachment 390426
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1617729</commentid>
    <comment_count>3</comment_count>
      <attachid>390454</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-02-11 16:02:30 -0800</bug_when>
    <thetext>Created attachment 390454
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1617783</commentid>
    <comment_count>4</comment_count>
      <attachid>390454</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-11 17:08:13 -0800</bug_when>
    <thetext>Comment on attachment 390454
Patch

Clearing flags on attachment: 390454

Committed r256417: &lt;https://trac.webkit.org/changeset/256417&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1617784</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-11 17:08:15 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390426</attachid>
            <date>2020-02-11 14:30:28 -0800</date>
            <delta_ts>2020-02-11 16:02:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207585-20200211143028.patch</filename>
            <type>text/plain</type>
            <size>141699</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2MzcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWE2Y2ViZWZiZjY1YWVi
NTEyMzIwYWYzMmVjN2M0NmE0NWEyMGJjZS4uM2FhZjZkNTVjYzllOTA1ZjMzY2Q2ZTM4MTZmNzYx
MzNiZTU5OTljZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3NSBAQAorMjAyMC0wMi0xMSAgWmFs
YW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgorCisgICAgICAgIFtMRkNdIFJlbmFtZSBMYXlv
dXQ6OkNvbnRhaW5lciB0byBMYXlvdXQ6OkNvbnRhaW5lckJveAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NTg1CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS81OTM2Mzg0NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBDb250YWluZXJCb3ggbmFtZSBpcyBtb3JlIGlubGluZSB3aXRoIHRoZSByZXN0IG9m
IHRoZSBib3ggY2xhc3Nlcy4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBsYXlvdXQvRm9ybWF0
dGluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29u
dGV4dDo6Rm9ybWF0dGluZ0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3Jt
YXR0aW5nQ29udGV4dDo6bGF5b3V0T3V0T2ZGbG93Q29udGVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6Om1hcEhvcml6b250YWxQb3NpdGlvblRvQW5jZXN0b3IpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6bWFwVG9wVG9Gb3JtYXR0aW5nQ29udGV4
dFJvb3QgY29uc3QpOgorICAgICAgICAqIGxheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5oOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6cm9vdCBjb25zdCk6Cisg
ICAgICAgICogbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNvbnRlbnRIZWln
aHRGb3JGb3JtYXR0aW5nQ29udGV4dFJvb3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OnN0YXRpY1ZlcnRpY2FsUG9zaXRpb25G
b3JPdXRPZkZsb3dQb3NpdGlvbmVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpzdGF0aWNIb3Jpem9udGFsUG9zaXRpb25Gb3JP
dXRPZkZsb3dQb3NpdGlvbmVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9y
bWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpzaHJpbmtUb0ZpdFdpZHRoKToKKyAgICAgICAgKiBs
YXlvdXQvTGF5b3V0Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxheW91
dENvbnRleHQ6OmxheW91dEZvcm1hdHRpbmdDb250ZXh0U3VidHJlZSk6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OkxheW91dENvbnRleHQ6OmNyZWF0ZUZvcm1hdHRpbmdDb250ZXh0KToKKyAg
ICAgICAgKiBsYXlvdXQvTGF5b3V0Q29udGV4dC5oOgorICAgICAgICAqIGxheW91dC9MYXlvdXRT
dGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxheW91dFN0YXRlOjpMYXlvdXRT
dGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxheW91dFN0YXRlOjplc3RhYmxpc2hl
ZEZvcm1hdHRpbmdTdGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxheW91
dFN0YXRlOjplc3RhYmxpc2hlZElubGluZUZvcm1hdHRpbmdTdGF0ZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkxheW91dFN0YXRlOjplc3RhYmxpc2hlZEJsb2NrRm9ybWF0dGlu
Z1N0YXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGF5b3V0U3RhdGU6OmVz
dGFibGlzaGVkVGFibGVGb3JtYXR0aW5nU3RhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpMYXlvdXRTdGF0ZTo6ZW5zdXJlRm9ybWF0dGluZ1N0YXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6TGF5b3V0U3RhdGU6OmVuc3VyZUlubGluZUZvcm1hdHRpbmdTdGF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxheW91dFN0YXRlOjplbnN1cmVCbG9ja0Zvcm1h
dHRpbmdTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxheW91dFN0YXRlOjplbnN1
cmVUYWJsZUZvcm1hdHRpbmdTdGF0ZSk6CisgICAgICAgICogbGF5b3V0L0xheW91dFN0YXRlLmg6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxheW91dFN0YXRlOjpoYXNJbmxpbmVGb3JtYXR0
aW5nU3RhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRTdGF0ZTo6
cm9vdCBjb25zdCk6CisgICAgICAgICogbGF5b3V0L1ZlcmlmaWNhdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6Om91dHB1dE1pc21hdGNoaW5nU2ltcGxlTGluZUluZm9ybWF0aW9u
SWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpvdXRwdXRNaXNtYXRjaGluZ0Nv
bXBsZXhMaW5lSW5mb3JtYXRpb25JZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OnZlcmlmeUFuZE91dHB1dFN1YnRyZWUpOgorICAgICAgICAqIGxheW91dC9ibG9ja2Zvcm1hdHRp
bmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRJbkZsb3dD
b250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4
dDo6cGxhY2VJbkZsb3dQb3NpdGlvbmVkQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlZEludHJpbnNpY1dpZHRoQ29uc3Ry
YWludHMpOgorICAgICAgICAqIGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5n
Q29udGV4dC5oOgorICAgICAgICAqIGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0
aW5nQ29udGV4dEdlb21ldHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tG
b3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd05vblJlcGxhY2VkSGVpZ2h0QW5kTWFy
Z2luKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6
R2VvbWV0cnk6OmludHJpbnNpY1dpZHRoQ29uc3RyYWludHMpOgorICAgICAgICAqIGxheW91dC9i
bG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OmluaXRpYWxDb250YWluaW5nQmxvY2spOgorICAgICAgICAqIGxh
eW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tNYXJnaW5Db2xsYXBzZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbkNvbGxhcHNlOjpt
YXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRoRmlyc3RJbkZsb3dDaGlsZE1hcmdpbkJlZm9yZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1h
cmdpbkNvbGxhcHNlOjptYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhMYXN0SW5GbG93Q2hpbGRNYXJn
aW5BZnRlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGlu
Z0NvbnRleHQ6Ok1hcmdpbkNvbGxhcHNlOjptYXJnaW5zQ29sbGFwc2VUaHJvdWdoIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6TWFyZ2lu
Q29sbGFwc2U6OnBvc2l0aXZlTmVnYXRpdmVNYXJnaW5CZWZvcmUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW5Db2xsYXBzZTo6
cG9zaXRpdmVOZWdhdGl2ZU1hcmdpbkFmdGVyIGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvZGlz
cGxheXRyZWUvRGlzcGxheVBhaW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6
YWJzb2x1dGVEaXNwbGF5Qm94KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OnBhaW50U3Vi
dHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5Ojpjb2xsZWN0UGFpbnRSb290c0FuZENv
bnRlbnRSZWN0KToKKyAgICAgICAgKiBsYXlvdXQvZmxvYXRzL0Zsb2F0QXZvaWRlci5jcHA6Cisg
ICAgICAgICogbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpGbG9hdGluZ0NvbnRleHQ6OkZsb2F0aW5nQ29udGV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkZsb2F0aW5nQ29udGV4dDo6bWFwVG9wVG9GbG9hdGluZ1N0YXRl
Um9vdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZsb2F0aW5nQ29udGV4dDo6
bWFwUG9pbnRGcm9tRm9ybWF0dGluZ0NvbnRleHRSb290VG9GbG9hdGluZ1N0YXRlUm9vdCBjb25z
dCk6CisgICAgICAgICogbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ0NvbnRleHQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6RmxvYXRpbmdDb250ZXh0Ojpyb290IGNvbnN0KToKKyAgICAgICAg
KiBsYXlvdXQvZmxvYXRzL0Zsb2F0aW5nU3RhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpGbG9hdGluZ1N0YXRlOjpGbG9hdGluZ1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6RmxvYXRpbmdTdGF0ZTo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
RmxvYXRpbmdTdGF0ZTo6Ym90dG9tIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
RmxvYXRpbmdTdGF0ZTo6dG9wIGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvZmxvYXRzL0Zsb2F0
aW5nU3RhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6RmxvYXRpbmdTdGF0ZTo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6RmxvYXRpbmdTdGF0ZTo6cm9vdCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZsb2F0aW5nU3RhdGU6OmxlZnRCb3R0b20g
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGbG9hdGluZ1N0YXRlOjpyaWdodEJv
dHRvbSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZsb2F0aW5nU3RhdGU6OmJv
dHRvbSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZsb2F0aW5nU3RhdGU6OkZs
b2F0SXRlbTo6aXNEZXNjZW5kYW50T2ZGb3JtYXR0aW5nUm9vdCBjb25zdCk6CisgICAgICAgICog
bGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6SW5saW5lRm9y
bWF0dGluZ0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpuZXh0SW5saW5lTGV2
ZWxCb3hUb0xheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRp
bmdDb250ZXh0OjpsYXlvdXRJbkZsb3dDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVJbnRyaW5zaWNXaWR0aEZvckZvcm1h
dHRpbmdSb290KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQ6OmNvbGxlY3RJbmxpbmVDb250ZW50SWZOZWVkZWQpOgorICAgICAgICAqIGxheW91dC9p
bmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0Lmg6CisgICAgICAgICogbGF5
b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0OjpHZW9t
ZXRyeTo6Y29tcHV0ZWRUZXh0SW5kZW50IGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5l
Zm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0OjpRdWlya3M6OmxpbmVEZXNj
ZW50TmVlZHNDb2xsYXBzaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJrczo6bGluZUhlaWdodENvbnN0cmFpbnRzIGNvbnN0
KToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnVpbGRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjphbGlnbkNvbnRlbnRW
ZXJ0aWNhbGx5KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OmFkanVz
dEJhc2VsaW5lQW5kTGluZUhlaWdodCk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRp
bmcvTGluZUxheW91dENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5l
TGF5b3V0Q29udGV4dDo6TGluZUxheW91dENvbnRleHQpOgorICAgICAgICAqIGxheW91dC9pbmxp
bmVmb3JtYXR0aW5nL0xpbmVMYXlvdXRDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OkxpbmVMYXlvdXRDb250ZXh0Ojpyb290IGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvaW50
ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlLmg6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXRJbnRlZ3JhdGlvbjo6Qm94VHJlZTo6cm9vdExheW91dEJveCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6Qm94VHJlZTo6cm9vdExheW91dEJveCk6Cisg
ICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6cm9v
dExheW91dEJveCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6
TGluZUxheW91dDo6cm9vdExheW91dEJveCk6CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9u
L0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5oOgorICAgICAgICAqIGxheW91dC9pbnZhbGlk
YXRpb24vSW52YWxpZGF0aW9uU3RhdGUuaDoKKyAgICAgICAgKiBsYXlvdXQvbGF5b3V0dHJlZS9M
YXlvdXRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCb3g6OmVzdGFibGlzaGVz
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpCb3g6OmNvbnRhaW5pbmdCbG9jayBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OkJveDo6Zm9ybWF0dGluZ0NvbnRleHRSb290IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6Qm94Ojppbml0aWFsQ29udGFpbmluZ0Jsb2NrIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6Qm94Ojppc0Rlc2NlbmRhbnRPZiBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OkJveDo6aXNDb250YWluaW5nQmxvY2tEZXNjZW5kYW50T2YgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCb3g6OmlzT3ZlcmZsb3dWaXNpYmxlIGNvbnN0KToKKyAg
ICAgICAgKiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guaDoKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6Qm94OjpwYXJlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpC
b3g6OmlzQ29udGFpbmVyQm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Qm94
OjpzZXRQYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCb3g6OmlzQ29udGFpbmVy
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRDaGls
ZEl0ZXJhdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxheW91dENoaWxkSXRlcmF0
b3I8VD46OkxheW91dENoaWxkSXRlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpM
YXlvdXRDaGlsZEl0ZXJhdG9yQWRhcHRlcjxUPjo6TGF5b3V0Q2hpbGRJdGVyYXRvckFkYXB0ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpjaGlsZHJlbk9mVHlwZSk6CisgICAgICAgICog
bGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Q29udGFpbmVyQm94LmNwcDogUmVuYW1lZCBmcm9tIFNv
dXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dENvbnRhaW5lci5jcHAuCisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OkNvbnRhaW5lckJveDo6Q29udGFpbmVyQm94KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6Q29udGFpbmVyQm94OjpmaXJzdEluRmxvd0NoaWxkIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Q29udGFpbmVyQm94OjpmaXJzdEluRmxvd09y
RmxvYXRpbmdDaGlsZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkNvbnRhaW5l
ckJveDo6bGFzdEluRmxvd0NoaWxkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
Q29udGFpbmVyQm94OjpsYXN0SW5GbG93T3JGbG9hdGluZ0NoaWxkIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6Q29udGFpbmVyQm94OjpzZXRGaXJzdENoaWxkKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6Q29udGFpbmVyQm94OjpzZXRMYXN0Q2hpbGQpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpDb250YWluZXJCb3g6OmFwcGVuZENoaWxkKToKKyAgICAgICAgKiBs
YXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRDb250YWluZXJCb3guaDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dENvbnRhaW5lci5oLgorICAgICAgICAq
IGxheW91dC9sYXlvdXR0cmVlL0xheW91dERlc2NlbmRhbnRJdGVyYXRvci5oOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpMYXlvdXREZXNjZW5kYW50SXRlcmF0b3I8VD46OkxheW91dERlc2Nl
bmRhbnRJdGVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxheW91dERlc2NlbmRh
bnRJdGVyYXRvckFkYXB0ZXI8VD46OkxheW91dERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpkZXNjZW5kYW50c09mVHlwZSk6CisgICAgICAgICog
bGF5b3V0L2xheW91dHRyZWUvTGF5b3V0SXRlcmF0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6TGF5b3V0Qm94VHJhdmVyc2FsOjpmaXJzdENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6TGF5b3V0Qm94VHJhdmVyc2FsOjpuZXh0QW5jZXN0b3JTaWJsaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6TGF5b3V0Qm94VHJhdmVyc2FsOjpuZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6TGF5b3V0Qm94VHJhdmVyc2FsOjpuZXh0U2tpcHBpbmdDaGlsZHJl
bik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlRyYXZlcnNhbDo6bmV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkxheW91dEl0ZXJhdG9yPFQ+OjpMYXlvdXRJdGVyYXRvcik6Cisg
ICAgICAgICogbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRUcmVlQ29udGVudDo6TGF5b3V0VHJlZUNvbnRlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjphcHBlbmRDaGlsZCk6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OlRyZWVCdWlsZGVyOjpidWlsZExheW91dFRyZWUpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpUcmVlQnVpbGRlcjo6Y3JlYXRlQ29udGFpbmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6VHJlZUJ1aWxkZXI6OmNyZWF0ZUxheW91dEJveCk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OlRyZWVCdWlsZGVyOjpidWlsZFRhYmxlU3RydWN0dXJlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6VHJlZUJ1aWxkZXI6OmJ1aWxkU3ViVHJlZSk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6Om91dHB1dElubGluZVJ1bnMpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpvdXRwdXRMYXlvdXRUcmVlKToKKyAgICAgICAgKiBsYXlvdXQvbGF5b3V0dHJlZS9M
YXlvdXRUcmVlQnVpbGRlci5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRUcmVl
Q29udGVudDo6cm9vdExheW91dEJveCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OkxheW91dFRyZWVDb250ZW50Ojpyb290TGF5b3V0Qm94KToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6TGF5b3V0VHJlZUNvbnRlbnQ6OmFkZEJveCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OkxheW91dFRyZWVDb250ZW50OjphZGRDb250YWluZXIpOgorICAgICAgICAqIGxheW91dC90
YWJsZWZvcm1hdHRpbmcvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OlRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OlRhYmxlRm9ybWF0dGluZ0NvbnRl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpUYWJsZUZvcm1hdHRpbmdDb250ZXh0Ojps
YXlvdXRUYWJsZUNlbGxCb3gpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpUYWJsZUZvcm1h
dHRpbmdDb250ZXh0OjplbnN1cmVUYWJsZUdyaWQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpUYWJsZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlUHJlZmVycmVkV2lkdGhGb3JDb2x1bW5z
KToKKyAgICAgICAgKiBsYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlRm9ybWF0dGluZ0NvbnRl
eHQuaDoKKwogMjAyMC0wMi0xMSAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFtMRkNdIERvIG5vdCBjcmVhdGUgZ2VuZXJpYyBMYXlvdXQ6OkJveCBsZWFmIGJveGVz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0CmluZGV4IDQyOTc0MDVmNWQ2MDhhYzAzZThlZmRmMDg1NmQ4MDdkMmIwMzIx
YTIuLmVhMjIyY2E2ZTdkMGI0ZWVhNGQyMGFkNDEwMjE1NjFmNDQ1N2M3ZTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMu
dHh0CkBAIC0xNDUwLDcgKzE0NTAsNyBAQCBsYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdy
YXRpb25MaW5lTGF5b3V0LmNwcAogbGF5b3V0L2ludmFsaWRhdGlvbi9JbnZhbGlkYXRpb25Db250
ZXh0LmNwcAogbGF5b3V0L2ludmFsaWRhdGlvbi9JbnZhbGlkYXRpb25TdGF0ZS5jcHAKIGxheW91
dC9sYXlvdXR0cmVlL0xheW91dEJveC5jcHAKLWxheW91dC9sYXlvdXR0cmVlL0xheW91dENvbnRh
aW5lci5jcHAKK2xheW91dC9sYXlvdXR0cmVlL0xheW91dENvbnRhaW5lckJveC5jcHAKIGxheW91
dC9sYXlvdXR0cmVlL0xheW91dElubGluZVRleHRCb3guY3BwCiBsYXlvdXQvbGF5b3V0dHJlZS9M
YXlvdXRMaW5lQnJlYWtCb3guY3BwCiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRSZXBsYWNlZEJv
eC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCA5NTY3ZWQ0MmMyYzQyNmMxNGIxYWNjYjg4ZTlhNjRkN2MyNWFmNjVhLi4wMjgx
MzBkYzFiNThkZDhkOTAwZGU5YzI5OTEyZTYyY2ZmYTk5OTNlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zOTMsNyArMzkzLDcg
QEAKIAkJMTE5MzQwOEExRkVCMzU1RDAwOTM1RjFFIC8qIFJlbmRlclRyZWVCdWlsZGVyUnVieS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTE5MzQwODgx
RkVCMzU1RDAwOTM1RjFFIC8qIFJlbmRlclRyZWVCdWlsZGVyUnVieS5oICovOyB9OwogCQkxMTkz
NDA5NzFGRUQ3MTU1MDA5MzVGMUUgLyogUmVuZGVyVHJlZUJ1aWxkZXJGb3JtQ29udHJvbHMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDExOTM0MDk1MUZF
RDcxNTUwMDkzNUYxRSAvKiBSZW5kZXJUcmVlQnVpbGRlckZvcm1Db250cm9scy5oICovOyB9Owog
CQkxMTkzNDBBMzFGRUUwMjQwMDA5MzVGMUUgLyogUmVuZGVyVHJlZUJ1aWxkZXJCbG9jay5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTE5MzQwQTExRkVF
MDI0MDAwOTM1RjFFIC8qIFJlbmRlclRyZWVCdWlsZGVyQmxvY2suaCAqLzsgfTsKLQkJMTE5OUZB
NDYyMDhFMzVBMzAwMjM1OENDIC8qIExheW91dENvbnRhaW5lci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTE5OUZBNDQyMDhFMzVBMzAwMjM1OENDIC8q
IExheW91dENvbnRhaW5lci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTExOTlGQTQ2MjA4RTM1QTMwMDIzNThDQyAvKiBMYXlvdXRDb250YWluZXJC
b3guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDExOTlG
QTQ0MjA4RTM1QTMwMDIzNThDQyAvKiBMYXlvdXRDb250YWluZXJCb3guaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxMTk5RkE1QjIwOEUzQzdGMDAy
MzU4Q0MgLyogRGlzcGxheUJveC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMTE5OUZBNTkyMDhFM0M3RjAwMjM1OENDIC8qIERpc3BsYXlCb3guaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxMUNCMjc4OTIw
M0JBNTcwMDA0QTFEQzkgLyogUmVuZGVyVHJlZUJ1aWxkZXJGdWxsU2NyZWVuLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxMUNCMjc4NzIwM0JBNTcwMDA0
QTFEQzkgLyogUmVuZGVyVHJlZUJ1aWxkZXJGdWxsU2NyZWVuLmggKi87IH07CiAJCTExRTA2N0VF
MUU2MjQ2RTUwMDE2MkQxNiAvKiBTaW1wbGVMaW5lTGF5b3V0Q292ZXJhZ2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDExRTA2N0VEMUU2MjQ2RTUwMDE2
MkQxNiAvKiBTaW1wbGVMaW5lTGF5b3V0Q292ZXJhZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNTk0NSw4ICs1OTQ1LDggQEAKIAkJMTE5MzQw
OTUxRkVENzE1NTAwOTM1RjFFIC8qIFJlbmRlclRyZWVCdWlsZGVyRm9ybUNvbnRyb2xzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlbmRlclRyZWVCdWlsZGVyRm9ybUNvbnRyb2xzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTExOTM0MEEwMUZFRTAyNDAwMDkzNUYxRSAvKiBSZW5kZXJUcmVl
QnVpbGRlckJsb2NrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclRyZWVCdWlsZGVyQmxv
Y2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxMTkzNDBBMTFGRUUwMjQwMDA5
MzVGMUUgLyogUmVuZGVyVHJlZUJ1aWxkZXJCbG9jay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJU
cmVlQnVpbGRlckJsb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTExOTlGQTQ0
MjA4RTM1QTMwMDIzNThDQyAvKiBMYXlvdXRDb250YWluZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGF5
b3V0Q29udGFpbmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTExOTlGQTQ1MjA4
RTM1QTMwMDIzNThDQyAvKiBMYXlvdXRDb250YWluZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TGF5b3V0Q29udGFpbmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTE5OUZB
NDQyMDhFMzVBMzAwMjM1OENDIC8qIExheW91dENvbnRhaW5lckJveC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBMYXlvdXRDb250YWluZXJCb3guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTE5
OUZBNDUyMDhFMzVBMzAwMjM1OENDIC8qIExheW91dENvbnRhaW5lckJveC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBMYXlvdXRDb250YWluZXJCb3guY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxMTk5RkE1OTIwOEUzQzdGMDAyMzU4Q0MgLyogRGlzcGxheUJveC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBEaXNwbGF5Qm94Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTExOTlG
QTVBMjA4RTNDN0YwMDIzNThDQyAvKiBEaXNwbGF5Qm94LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IERpc3BsYXlCb3guY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxMUIwNDJGQjIw
QjBFMjE0MDA4MjhBNkIgLyogTGF5b3V0RGVzY2VuZGFudEl0ZXJhdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExheW91dERlc2NlbmRhbnRJdGVyYXRvci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY3NDUsOCArMTY3NDUsOCBAQAogCQkJCTExNUNGQTk2
MjA4Qjk1MkIwMDFFNjk5MSAvKiBMYXlvdXRCb3guY3BwICovLAogCQkJCTExNUNGQTk1MjA4Qjk1
MkIwMDFFNjk5MSAvKiBMYXlvdXRCb3guaCAqLywKIAkJCQkxMTEwMEZDOTIwOTI3Q0JDMDA4MUFB
NkMgLyogTGF5b3V0Q2hpbGRJdGVyYXRvci5oICovLAotCQkJCTExOTlGQTQ1MjA4RTM1QTMwMDIz
NThDQyAvKiBMYXlvdXRDb250YWluZXIuY3BwICovLAotCQkJCTExOTlGQTQ0MjA4RTM1QTMwMDIz
NThDQyAvKiBMYXlvdXRDb250YWluZXIuaCAqLywKKwkJCQkxMTk5RkE0NTIwOEUzNUEzMDAyMzU4
Q0MgLyogTGF5b3V0Q29udGFpbmVyQm94LmNwcCAqLywKKwkJCQkxMTk5RkE0NDIwOEUzNUEzMDAy
MzU4Q0MgLyogTGF5b3V0Q29udGFpbmVyQm94LmggKi8sCiAJCQkJMTFCMDQyRkIyMEIwRTIxNDAw
ODI4QTZCIC8qIExheW91dERlc2NlbmRhbnRJdGVyYXRvci5oICovLAogCQkJCTZGMEI5OEI2MjNG
MjY5MDYwMEVFQzJGMiAvKiBMYXlvdXRJbmxpbmVUZXh0Qm94LmNwcCAqLywKIAkJCQk2RjBCOThC
MzIzRjI2OEVCMDBFRUMyRjIgLyogTGF5b3V0SW5saW5lVGV4dEJveC5oICovLApAQCAtMzEzMDcs
NyArMzEzMDcsNyBAQAogCQkJCTExMzEwQ0Y3MjBCQTRBNjIwMDY1QThEMCAvKiBMYXlvdXRBbmNl
c3Rvckl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkxMTVDRkE5NzIwOEI5NTJCMDAxRTY5
OTEgLyogTGF5b3V0Qm94LmggaW4gSGVhZGVycyAqLywKIAkJCQkxMTMxMENGNjIwQkE0QTU2MDA2
NUE4RDAgLyogTGF5b3V0Q2hpbGRJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMTE5OUZB
NDYyMDhFMzVBMzAwMjM1OENDIC8qIExheW91dENvbnRhaW5lci5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMTE5OUZBNDYyMDhFMzVBMzAwMjM1OENDIC8qIExheW91dENvbnRhaW5lckJveC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNkYyNkJCNkMyMzM0M0U2RjAwMkYyQkVBIC8qIExheW91dENvbnRleHQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTExMzEwQ0Y1MjBCQTRBNEMwMDY1QThEMCAvKiBMYXlvdXRE
ZXNjZW5kYW50SXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTZGMEI5OEI1MjNGMjY4RUMw
MEVFQzJGMiAvKiBMYXlvdXRJbmxpbmVUZXh0Qm94LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IGNiODYwMmYzNmVjYTI3
Yzc2YWIzZWJjNzM0NWZmZWZlYWY1OTEwNzkuLjExMjhlYTFhZDg4NzdmZTVlYWNlOWIzYzFhMzg2
ZjE2OTk4ZjhhYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5n
Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0
LmNwcApAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgIkZvcm1hdHRpbmdTdGF0ZS5oIgogI2lu
Y2x1ZGUgIkludmFsaWRhdGlvblN0YXRlLmgiCiAjaW5jbHVkZSAiTGF5b3V0Qm94LmgiCi0jaW5j
bHVkZSAiTGF5b3V0Q29udGFpbmVyLmgiCisjaW5jbHVkZSAiTGF5b3V0Q29udGFpbmVyQm94Lmgi
CiAjaW5jbHVkZSAiTGF5b3V0Q29udGV4dC5oIgogI2luY2x1ZGUgIkxheW91dERlc2NlbmRhbnRJ
dGVyYXRvci5oIgogI2luY2x1ZGUgIkxheW91dFJlcGxhY2VkQm94LmgiCkBAIC00Niw3ICs0Niw3
IEBAIG5hbWVzcGFjZSBMYXlvdXQgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoRm9y
bWF0dGluZ0NvbnRleHQpOwogCi1Gb3JtYXR0aW5nQ29udGV4dDo6Rm9ybWF0dGluZ0NvbnRleHQo
Y29uc3QgQ29udGFpbmVyJiBmb3JtYXR0aW5nQ29udGV4dFJvb3QsIEZvcm1hdHRpbmdTdGF0ZSYg
Zm9ybWF0dGluZ1N0YXRlKQorRm9ybWF0dGluZ0NvbnRleHQ6OkZvcm1hdHRpbmdDb250ZXh0KGNv
bnN0IENvbnRhaW5lckJveCYgZm9ybWF0dGluZ0NvbnRleHRSb290LCBGb3JtYXR0aW5nU3RhdGUm
IGZvcm1hdHRpbmdTdGF0ZSkKICAgICA6IG1fcm9vdChtYWtlV2Vha1B0cihmb3JtYXR0aW5nQ29u
dGV4dFJvb3QpKQogICAgICwgbV9mb3JtYXR0aW5nU3RhdGUoZm9ybWF0dGluZ1N0YXRlKQogewpA
QCAtMTY1LDEyICsxNjUsMTIgQEAgdm9pZCBGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0T3V0T2ZG
bG93Q29udGVudChJbnZhbGlkYXRpb25TdGF0ZSYgaW52YWxpZGF0aW9uU3QKICAgICAgICAgYXV0
byYgb3V0T2ZGbG93Um9vdERpc3BsYXlCb3ggPSBnZW9tZXRyeUZvckJveCgqb3V0T2ZGbG93Qm94
KTsKICAgICAgICAgY29tcHV0ZUJvcmRlckFuZFBhZGRpbmcoKm91dE9mRmxvd0JveCwgR2VvbWV0
cnk6Omhvcml6b250YWxDb25zdHJhaW50c0ZvckluRmxvdyhvdXRPZkZsb3dSb290RGlzcGxheUJv
eCkpOwogICAgICAgICBjb21wdXRlT3V0T2ZGbG93SG9yaXpvbnRhbEdlb21ldHJ5KCpvdXRPZkZs
b3dCb3gsIGhvcml6b250YWxDb25zdHJhaW50cyk7Ci0gICAgICAgIGlmICghaXM8Q29udGFpbmVy
Pigqb3V0T2ZGbG93Qm94KSB8fCAhZG93bmNhc3Q8Q29udGFpbmVyPigqb3V0T2ZGbG93Qm94KS5o
YXNDaGlsZCgpKSB7CisgICAgICAgIGlmICghaXM8Q29udGFpbmVyQm94Pigqb3V0T2ZGbG93Qm94
KSB8fCAhZG93bmNhc3Q8Q29udGFpbmVyQm94Pigqb3V0T2ZGbG93Qm94KS5oYXNDaGlsZCgpKSB7
CiAgICAgICAgICAgICBjb21wdXRlT3V0T2ZGbG93VmVydGljYWxHZW9tZXRyeSgqb3V0T2ZGbG93
Qm94LCBob3Jpem9udGFsQ29uc3RyYWludHMsIHZlcnRpY2FsQ29uc3RyYWludHMpOwogICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvJiBvdXRPZkZsb3dSb290
Q29udGFpbmVyID0gZG93bmNhc3Q8Q29udGFpbmVyPigqb3V0T2ZGbG93Qm94KTsKKyAgICAgICAg
YXV0byYgb3V0T2ZGbG93Um9vdENvbnRhaW5lciA9IGRvd25jYXN0PENvbnRhaW5lckJveD4oKm91
dE9mRmxvd0JveCk7CiAgICAgICAgIGF1dG8gZm9ybWF0dGluZ0NvbnRleHQgPSBMYXlvdXRDb250
ZXh0OjpjcmVhdGVGb3JtYXR0aW5nQ29udGV4dChvdXRPZkZsb3dSb290Q29udGFpbmVyLCBsYXlv
dXRTdGF0ZSgpKTsKICAgICAgICAgaWYgKG91dE9mRmxvd1Jvb3RDb250YWluZXIuaGFzSW5GbG93
T3JGbG9hdGluZ0NoaWxkKCkpCiAgICAgICAgICAgICBmb3JtYXR0aW5nQ29udGV4dC0+bGF5b3V0
SW5GbG93Q29udGVudChpbnZhbGlkYXRpb25TdGF0ZSwgR2VvbWV0cnk6Omhvcml6b250YWxDb25z
dHJhaW50c0ZvckluRmxvdyhvdXRPZkZsb3dSb290RGlzcGxheUJveCksIEdlb21ldHJ5Ojp2ZXJ0
aWNhbENvbnN0cmFpbnRzRm9ySW5GbG93KG91dE9mRmxvd1Jvb3REaXNwbGF5Qm94KSk7CkBAIC0x
ODAsMTQgKzE4MCwxNCBAQCB2b2lkIEZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRPdXRPZkZsb3dD
b250ZW50KEludmFsaWRhdGlvblN0YXRlJiBpbnZhbGlkYXRpb25TdAogICAgIExPR19XSVRIX1NU
UkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFtIDw8ICJFbmQ6IGxheW91dCBvdXQt
b2YtZmxvdyBjb250ZW50IC0+IGNvbnRleHQ6ICIgPDwgJmxheW91dFN0YXRlKCkgPDwgIiByb290
OiAiIDw8ICZyb290KCkpOwogfQogCi1zdGF0aWMgTGF5b3V0VW5pdCBtYXBIb3Jpem9udGFsUG9z
aXRpb25Ub0FuY2VzdG9yKGNvbnN0IEZvcm1hdHRpbmdDb250ZXh0JiBmb3JtYXR0aW5nQ29udGV4
dCwgTGF5b3V0VW5pdCBob3Jpem9udGFsUG9zaXRpb24sIGNvbnN0IENvbnRhaW5lciYgY29udGFp
bmluZ0Jsb2NrLCBjb25zdCBDb250YWluZXImIGFuY2VzdG9yKQorc3RhdGljIExheW91dFVuaXQg
bWFwSG9yaXpvbnRhbFBvc2l0aW9uVG9BbmNlc3Rvcihjb25zdCBGb3JtYXR0aW5nQ29udGV4dCYg
Zm9ybWF0dGluZ0NvbnRleHQsIExheW91dFVuaXQgaG9yaXpvbnRhbFBvc2l0aW9uLCBjb25zdCBD
b250YWluZXJCb3gmIGNvbnRhaW5pbmdCbG9jaywgY29uc3QgQ29udGFpbmVyQm94JiBhbmNlc3Rv
cikKIHsKICAgICAvLyAiaG9yaXpvbnRhbFBvc2l0aW9uIiBpcyBpbiB0aGUgY29vcmRpbmF0ZSBz
eXN0ZW0gb2YgdGhlICJjb250YWluaW5nQmxvY2siLiAtPiBtYXAgZnJvbSBjb250YWluaW5nQmxv
Y2sgdG8gYW5jZXN0b3IuCiAgICAgaWYgKCZjb250YWluaW5nQmxvY2sgPT0gJmFuY2VzdG9yKQog
ICAgICAgICByZXR1cm4gaG9yaXpvbnRhbFBvc2l0aW9uOwogICAgIEFTU0VSVChjb250YWluaW5n
QmxvY2suaXNDb250YWluaW5nQmxvY2tEZXNjZW5kYW50T2YoYW5jZXN0b3IpKTsKLSAgICBmb3Ig
KGF1dG8qIGNvbnRhaW5lciA9ICZjb250YWluaW5nQmxvY2s7IGNvbnRhaW5lciAmJiBjb250YWlu
ZXIgIT0gJmFuY2VzdG9yOyBjb250YWluZXIgPSBjb250YWluZXItPmNvbnRhaW5pbmdCbG9jaygp
KQotICAgICAgICBob3Jpem9udGFsUG9zaXRpb24gKz0gZm9ybWF0dGluZ0NvbnRleHQuZ2VvbWV0
cnlGb3JCb3goKmNvbnRhaW5lcikubGVmdCgpOworICAgIGZvciAoYXV0byogY29udGFpbmVyQm94
ID0gJmNvbnRhaW5pbmdCbG9jazsgY29udGFpbmVyQm94ICYmIGNvbnRhaW5lckJveCAhPSAmYW5j
ZXN0b3I7IGNvbnRhaW5lckJveCA9IGNvbnRhaW5lckJveC0+Y29udGFpbmluZ0Jsb2NrKCkpCisg
ICAgICAgIGhvcml6b250YWxQb3NpdGlvbiArPSBmb3JtYXR0aW5nQ29udGV4dC5nZW9tZXRyeUZv
ckJveCgqY29udGFpbmVyQm94KS5sZWZ0KCk7CiAgICAgcmV0dXJuIGhvcml6b250YWxQb3NpdGlv
bjsKIH0KIApAQCAtMTk4LDggKzE5OCw4IEBAIExheW91dFVuaXQgRm9ybWF0dGluZ0NvbnRleHQ6
Om1hcFRvcFRvRm9ybWF0dGluZ0NvbnRleHRSb290KGNvbnN0IEJveCYgbGF5b3V0Qm94CiAgICAg
YXV0byYgZm9ybWF0dGluZ0NvbnRleHRSb290ID0gcm9vdCgpOwogICAgIEFTU0VSVChsYXlvdXRC
b3guaXNDb250YWluaW5nQmxvY2tEZXNjZW5kYW50T2YoZm9ybWF0dGluZ0NvbnRleHRSb290KSk7
CiAgICAgYXV0byB0b3AgPSBnZW9tZXRyeUZvckJveChsYXlvdXRCb3gpLnRvcCgpOwotICAgIGZv
ciAoYXV0byogY29udGFpbmVyID0gbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpOyBjb250YWlu
ZXIgJiYgY29udGFpbmVyICE9ICZmb3JtYXR0aW5nQ29udGV4dFJvb3Q7IGNvbnRhaW5lciA9IGNv
bnRhaW5lci0+Y29udGFpbmluZ0Jsb2NrKCkpCi0gICAgICAgIHRvcCArPSBnZW9tZXRyeUZvckJv
eCgqY29udGFpbmVyKS50b3AoKTsKKyAgICBmb3IgKGF1dG8qIGNvbnRhaW5lckJveCA9IGxheW91
dEJveC5jb250YWluaW5nQmxvY2soKTsgY29udGFpbmVyQm94ICYmIGNvbnRhaW5lckJveCAhPSAm
Zm9ybWF0dGluZ0NvbnRleHRSb290OyBjb250YWluZXJCb3ggPSBjb250YWluZXJCb3gtPmNvbnRh
aW5pbmdCbG9jaygpKQorICAgICAgICB0b3AgKz0gZ2VvbWV0cnlGb3JCb3goKmNvbnRhaW5lckJv
eCkudG9wKCk7CiAgICAgcmV0dXJuIHRvcDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9y
bWF0dGluZ0NvbnRleHQuaAppbmRleCAxYzZkOTU3NGI3YjFhN2E2YjMxNzg5NDIzN2VjZjM3M2Ex
MGYxOGI2Li44MjU5ZjQ5OWZlYWM5ZjU1ZmMyNTYyM2ViYzg0NzZmOWE4ZDYwY2FlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuaApAQCAtMjcsNyArMjcsNyBAQAog
CiAjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCiAKLSNpbmNsdWRlICJMYXlv
dXRDb250YWluZXIuaCIKKyNpbmNsdWRlICJMYXlvdXRDb250YWluZXJCb3guaCIKICNpbmNsdWRl
ICJMYXlvdXRVbml0LmgiCiAjaW5jbHVkZSAiTGF5b3V0VW5pdHMuaCIKICNpbmNsdWRlIDx3dGYv
SXNvTWFsbG9jLmg+CkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIEJveDsKIGNsYXNzIFJlcGxhY2Vk
Qm94Owogc3RydWN0IENvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbjsKIHN0cnVjdCBDb21wdXRlZFZl
cnRpY2FsTWFyZ2luOwotY2xhc3MgQ29udGFpbmVyOworY2xhc3MgQ29udGFpbmVyQm94Owogc3Ry
dWN0IENvbnRlbnRIZWlnaHRBbmRNYXJnaW47CiBzdHJ1Y3QgQ29udGVudFdpZHRoQW5kTWFyZ2lu
Owogc3RydWN0IEVkZ2VzOwpAQCAtNjIsNyArNjIsNyBAQCBzdHJ1Y3QgVmVydGljYWxHZW9tZXRy
eTsKIGNsYXNzIEZvcm1hdHRpbmdDb250ZXh0IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVE
KEZvcm1hdHRpbmdDb250ZXh0KTsKIHB1YmxpYzoKLSAgICBGb3JtYXR0aW5nQ29udGV4dChjb25z
dCBDb250YWluZXImIGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgRm9ybWF0dGluZ1N0YXRlJik7Cisg
ICAgRm9ybWF0dGluZ0NvbnRleHQoY29uc3QgQ29udGFpbmVyQm94JiBmb3JtYXR0aW5nQ29udGV4
dFJvb3QsIEZvcm1hdHRpbmdTdGF0ZSYpOwogICAgIHZpcnR1YWwgfkZvcm1hdHRpbmdDb250ZXh0
KCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0SW5GbG93Q29udGVudChJbnZhbGlkYXRpb25T
dGF0ZSYsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYsIGNvbnN0IFZlcnRpY2FsQ29uc3Ry
YWludHMmKSA9IDA7CkBAIC05OSw3ICs5OSw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICB1
c2luZyBMYXlvdXRRdWV1ZSA9IFZlY3Rvcjxjb25zdCBCb3gqPjsKIAotICAgIGNvbnN0IENvbnRh
aW5lciYgcm9vdCgpIGNvbnN0IHsgcmV0dXJuICptX3Jvb3Q7IH0KKyAgICBjb25zdCBDb250YWlu
ZXJCb3gmIHJvb3QoKSBjb25zdCB7IHJldHVybiAqbV9yb290OyB9CiAgICAgTGF5b3V0U3RhdGUm
IGxheW91dFN0YXRlKCkgY29uc3Q7CiAgICAgY29uc3QgRm9ybWF0dGluZ1N0YXRlJiBmb3JtYXR0
aW5nU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2Zvcm1hdHRpbmdTdGF0ZTsgfQogICAgIEZvcm1h
dHRpbmdTdGF0ZSYgZm9ybWF0dGluZ1N0YXRlKCkgeyByZXR1cm4gbV9mb3JtYXR0aW5nU3RhdGU7
IH0KQEAgLTIwNCw3ICsyMDQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcHV0ZU91dE9mRmxv
d1ZlcnRpY2FsR2VvbWV0cnkoY29uc3QgQm94JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRz
JiwgY29uc3QgVmVydGljYWxDb25zdHJhaW50cyYpOwogICAgIHZvaWQgY29tcHV0ZU91dE9mRmxv
d0hvcml6b250YWxHZW9tZXRyeShjb25zdCBCb3gmLCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWlu
dHMmKTsKIAotICAgIFdlYWtQdHI8Y29uc3QgQ29udGFpbmVyPiBtX3Jvb3Q7CisgICAgV2Vha1B0
cjxjb25zdCBDb250YWluZXJCb3g+IG1fcm9vdDsKICAgICBGb3JtYXR0aW5nU3RhdGUmIG1fZm9y
bWF0dGluZ1N0YXRlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zv
cm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1h
dHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCmluZGV4IDEyYmE4Y2FkZjE0OTViMjEyZDc1OGQ1YjZl
NWY5ZGU4MDZlN2E3MTEuLjY4YTJjY2NmM2EzMjg4ODE3YzI1MzU0MGJmMmVjZDEyOTQzYTZhMTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21l
dHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRHZW9t
ZXRyeS5jcHAKQEAgLTEyMiw3ICsxMjIsNyBAQCBMYXlvdXRVbml0IEZvcm1hdHRpbmdDb250ZXh0
OjpHZW9tZXRyeTo6Y29udGVudEhlaWdodEZvckZvcm1hdHRpbmdDb250ZXh0Um9vdChjbwogICAg
IC8vIEluIGFkZGl0aW9uLCBpZiB0aGUgZWxlbWVudCBoYXMgYW55IGZsb2F0aW5nIGRlc2NlbmRh
bnRzIHdob3NlIGJvdHRvbSBtYXJnaW4gZWRnZSBpcyBiZWxvdyB0aGUgZWxlbWVudCdzIGJvdHRv
bSBjb250ZW50IGVkZ2UsCiAgICAgLy8gdGhlbiB0aGUgaGVpZ2h0IGlzIGluY3JlYXNlZCB0byBp
bmNsdWRlIHRob3NlIGVkZ2VzLiBPbmx5IGZsb2F0cyB0aGF0IHBhcnRpY2lwYXRlIGluIHRoaXMg
YmxvY2sgZm9ybWF0dGluZyBjb250ZXh0IGFyZSB0YWtlbgogICAgIC8vIGludG8gYWNjb3VudCwg
ZS5nLiwgZmxvYXRzIGluc2lkZSBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQgZGVzY2VuZGFudHMgb3Ig
b3RoZXIgZmxvYXRzIGFyZSBub3QuCi0gICAgaWYgKCFpczxDb250YWluZXI+KGxheW91dEJveCkg
fHwgIWRvd25jYXN0PENvbnRhaW5lcj4obGF5b3V0Qm94KS5oYXNJbkZsb3dPckZsb2F0aW5nQ2hp
bGQoKSkKKyAgICBpZiAoIWlzPENvbnRhaW5lckJveD4obGF5b3V0Qm94KSB8fCAhZG93bmNhc3Q8
Q29udGFpbmVyQm94PihsYXlvdXRCb3gpLmhhc0luRmxvd09yRmxvYXRpbmdDaGlsZCgpKQogICAg
ICAgICByZXR1cm4geyB9OwogCiAgICAgYXV0byYgbGF5b3V0U3RhdGUgPSB0aGlzLT5sYXlvdXRT
dGF0ZSgpOwpAQCAtMTMxLDcgKzEzMSw3IEBAIExheW91dFVuaXQgRm9ybWF0dGluZ0NvbnRleHQ6
Okdlb21ldHJ5Ojpjb250ZW50SGVpZ2h0Rm9yRm9ybWF0dGluZ0NvbnRleHRSb290KGNvCiAgICAg
YXV0byBib3JkZXJBbmRQYWRkaW5nVG9wID0gYm94R2VvbWV0cnkuYm9yZGVyVG9wKCkgKyBib3hH
ZW9tZXRyeS5wYWRkaW5nVG9wKCkudmFsdWVPcigwKTsKICAgICBhdXRvIHRvcCA9IGJvcmRlckFu
ZFBhZGRpbmdUb3A7CiAgICAgYXV0byBib3R0b20gPSBib3JkZXJBbmRQYWRkaW5nVG9wOwotICAg
IGF1dG8mIGZvcm1hdHRpbmdSb290Q29udGFpbmVyID0gZG93bmNhc3Q8Q29udGFpbmVyPihsYXlv
dXRCb3gpOworICAgIGF1dG8mIGZvcm1hdHRpbmdSb290Q29udGFpbmVyID0gZG93bmNhc3Q8Q29u
dGFpbmVyQm94PihsYXlvdXRCb3gpOwogICAgIGlmIChmb3JtYXR0aW5nUm9vdENvbnRhaW5lci5l
c3RhYmxpc2hlc0lubGluZUZvcm1hdHRpbmdDb250ZXh0KCkpIHsKICAgICAgICAgYXV0byYgbGlu
ZUJveGVzID0gbGF5b3V0U3RhdGUuZXN0YWJsaXNoZWRJbmxpbmVGb3JtYXR0aW5nU3RhdGUoZm9y
bWF0dGluZ1Jvb3RDb250YWluZXIpLmRpc3BsYXlJbmxpbmVDb250ZW50KCktPmxpbmVCb3hlczsK
ICAgICAgICAgLy8gRXZlbiBlbXB0eSBjb250YWluZXJzIGdlbmVyYXRlIG9uZSBsaW5lLiAKQEAg
LTIzOSwxMSArMjM5LDExIEBAIExheW91dFVuaXQgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5
OjpzdGF0aWNWZXJ0aWNhbFBvc2l0aW9uRm9yT3V0T2ZGbG93UG9zaXRpCiAgICAgLy8gUmVzb2x2
ZSB0b3AgYWxsIHRoZSB3YXkgdXAgdG8gdGhlIGNvbnRhaW5pbmcgYmxvY2suCiAgICAgYXV0byYg
Y29udGFpbmluZ0Jsb2NrID0gKmxheW91dEJveC5jb250YWluaW5nQmxvY2soKTsKICAgICAvLyBT
dGFydCB3aXRoIHRoZSBwYXJlbnQgc2luY2Ugd2UgcHJldGVuZCB0aGF0IHRoaXMgYm94IGlzIG5v
cm1hbCBmbG93LgotICAgIGZvciAoYXV0byogY29udGFpbmVyID0gbGF5b3V0Qm94LnBhcmVudCgp
OyBjb250YWluZXIgIT0gJmNvbnRhaW5pbmdCbG9jazsgY29udGFpbmVyID0gY29udGFpbmVyLT5j
b250YWluaW5nQmxvY2soKSkgewotICAgICAgICBhdXRvJiBib3hHZW9tZXRyeSA9IGZvcm1hdHRp
bmdDb250ZXh0Lmdlb21ldHJ5Rm9yQm94KCpjb250YWluZXIsIEVzY2FwZVJlYXNvbjo6T3V0T2ZG
bG93Qm94TmVlZHNJbkZsb3dHZW9tZXRyeSk7CisgICAgZm9yIChhdXRvKiBjb250YWluZXJCb3gg
PSBsYXlvdXRCb3gucGFyZW50KCk7IGNvbnRhaW5lckJveCAhPSAmY29udGFpbmluZ0Jsb2NrOyBj
b250YWluZXJCb3ggPSBjb250YWluZXJCb3gtPmNvbnRhaW5pbmdCbG9jaygpKSB7CisgICAgICAg
IGF1dG8mIGJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ0NvbnRleHQuZ2VvbWV0cnlGb3JCb3goKmNv
bnRhaW5lckJveCwgRXNjYXBlUmVhc29uOjpPdXRPZkZsb3dCb3hOZWVkc0luRmxvd0dlb21ldHJ5
KTsKICAgICAgICAgLy8gRGlzcGxheTo6Qm94Ojp0b3AgaXMgdGhlIGJvcmRlciBib3ggdG9wIHBv
c2l0aW9uIGluIGl0cyBjb250YWluaW5nIGJsb2NrJ3MgY29vcmRpbmF0ZSBzeXN0ZW0uCiAgICAg
ICAgIHRvcCArPSBib3hHZW9tZXRyeS50b3AoKTsKLSAgICAgICAgQVNTRVJUKCFjb250YWluZXIt
PmlzUG9zaXRpb25lZCgpIHx8IGxheW91dEJveC5pc0ZpeGVkUG9zaXRpb25lZCgpKTsKKyAgICAg
ICAgQVNTRVJUKCFjb250YWluZXJCb3gtPmlzUG9zaXRpb25lZCgpIHx8IGxheW91dEJveC5pc0Zp
eGVkUG9zaXRpb25lZCgpKTsKICAgICB9CiAgICAgLy8gTW92ZSB0aGUgc3RhdGljIHBvc2l0aW9u
IHJlbGF0aXZlIHRvIHRoZSBwYWRkaW5nIGJveC4gVGhpcyBpcyB2ZXJ5IHNwZWNpZmljIHRvIGFi
b2x1dGVseSBwb3NpdGlvbmVkIGJveGVzLgogICAgIHJldHVybiB0b3AgLSB2ZXJ0aWNhbENvbnN0
cmFpbnRzLmxvZ2ljYWxUb3A7CkBAIC0yNjIsMTEgKzI2MiwxMSBAQCBMYXlvdXRVbml0IEZvcm1h
dHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6c3RhdGljSG9yaXpvbnRhbFBvc2l0aW9uRm9yT3V0T2ZG
bG93UG9zaQogICAgIC8vIFJlc29sdmUgbGVmdCBhbGwgdGhlIHdheSB1cCB0byB0aGUgY29udGFp
bmluZyBibG9jay4KICAgICBhdXRvJiBjb250YWluaW5nQmxvY2sgPSAqbGF5b3V0Qm94LmNvbnRh
aW5pbmdCbG9jaygpOwogICAgIC8vIFN0YXJ0IHdpdGggdGhlIHBhcmVudCBzaW5jZSB3ZSBwcmV0
ZW5kIHRoYXQgdGhpcyBib3ggaXMgbm9ybWFsIGZsb3cuCi0gICAgZm9yIChhdXRvKiBjb250YWlu
ZXIgPSBsYXlvdXRCb3gucGFyZW50KCk7IGNvbnRhaW5lciAhPSAmY29udGFpbmluZ0Jsb2NrOyBj
b250YWluZXIgPSBjb250YWluZXItPmNvbnRhaW5pbmdCbG9jaygpKSB7Ci0gICAgICAgIGF1dG8m
IGJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ0NvbnRleHQuZ2VvbWV0cnlGb3JCb3goKmNvbnRhaW5l
ciwgRXNjYXBlUmVhc29uOjpPdXRPZkZsb3dCb3hOZWVkc0luRmxvd0dlb21ldHJ5KTsKKyAgICBm
b3IgKGF1dG8qIGNvbnRhaW5lckJveCA9IGxheW91dEJveC5wYXJlbnQoKTsgY29udGFpbmVyQm94
ICE9ICZjb250YWluaW5nQmxvY2s7IGNvbnRhaW5lckJveCA9IGNvbnRhaW5lckJveC0+Y29udGFp
bmluZ0Jsb2NrKCkpIHsKKyAgICAgICAgYXV0byYgYm94R2VvbWV0cnkgPSBmb3JtYXR0aW5nQ29u
dGV4dC5nZW9tZXRyeUZvckJveCgqY29udGFpbmVyQm94LCBFc2NhcGVSZWFzb246Ok91dE9mRmxv
d0JveE5lZWRzSW5GbG93R2VvbWV0cnkpOwogICAgICAgICAvLyBEaXNwbGF5OjpCb3g6OmxlZnQg
aXMgdGhlIGJvcmRlciBib3ggbGVmdCBwb3NpdGlvbiBpbiBpdHMgY29udGFpbmluZyBibG9jaydz
IGNvb3JkaW5hdGUgc3lzdGVtLgogICAgICAgICBsZWZ0ICs9IGJveEdlb21ldHJ5LmxlZnQoKTsK
LSAgICAgICAgQVNTRVJUKCFjb250YWluZXItPmlzUG9zaXRpb25lZCgpIHx8IGxheW91dEJveC5p
c0ZpeGVkUG9zaXRpb25lZCgpKTsKKyAgICAgICAgQVNTRVJUKCFjb250YWluZXJCb3gtPmlzUG9z
aXRpb25lZCgpIHx8IGxheW91dEJveC5pc0ZpeGVkUG9zaXRpb25lZCgpKTsKICAgICB9CiAgICAg
Ly8gTW92ZSB0aGUgc3RhdGljIHBvc2l0aW9uIHJlbGF0aXZlIHRvIHRoZSBwYWRkaW5nIGJveC4g
VGhpcyBpcyB2ZXJ5IHNwZWNpZmljIHRvIGFib2x1dGVseSBwb3NpdGlvbmVkIGJveGVzLgogICAg
IHJldHVybiBsZWZ0IC0gaG9yaXpvbnRhbENvbnN0cmFpbnRzLmxvZ2ljYWxMZWZ0OwpAQCAtMjg1
LDggKzI4NSw4IEBAIExheW91dFVuaXQgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpzaHJp
bmtUb0ZpdFdpZHRoKGNvbnN0IEJveCYgZm9ybWF0dGluZ1JvCiAKICAgICAvLyBUaGVuIHRoZSBz
aHJpbmstdG8tZml0IHdpZHRoIGlzOiBtaW4obWF4KHByZWZlcnJlZCBtaW5pbXVtIHdpZHRoLCBh
dmFpbGFibGUgd2lkdGgpLCBwcmVmZXJyZWQgd2lkdGgpLgogICAgIGF1dG8gaW50cmluc2ljV2lk
dGhDb25zdHJhaW50cyA9IEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgeyB9OwotICAgIGlmIChp
czxDb250YWluZXI+KGZvcm1hdHRpbmdSb290KSAmJiBkb3duY2FzdDxDb250YWluZXI+KGZvcm1h
dHRpbmdSb290KS5oYXNJbkZsb3dPckZsb2F0aW5nQ2hpbGQoKSkgewotICAgICAgICBhdXRvJiBy
b290ID0gZG93bmNhc3Q8Q29udGFpbmVyPihmb3JtYXR0aW5nUm9vdCk7CisgICAgaWYgKGlzPENv
bnRhaW5lckJveD4oZm9ybWF0dGluZ1Jvb3QpICYmIGRvd25jYXN0PENvbnRhaW5lckJveD4oZm9y
bWF0dGluZ1Jvb3QpLmhhc0luRmxvd09yRmxvYXRpbmdDaGlsZCgpKSB7CisgICAgICAgIGF1dG8m
IHJvb3QgPSBkb3duY2FzdDxDb250YWluZXJCb3g+KGZvcm1hdHRpbmdSb290KTsKICAgICAgICAg
YXV0byYgZm9ybWF0dGluZ1N0YXRlRm9yUm9vdCA9IGxheW91dFN0YXRlKCkuZW5zdXJlRm9ybWF0
dGluZ1N0YXRlKHJvb3QpOwogICAgICAgICBhdXRvIHByZWNvbXB1dGVkSW50cmluc2ljV2lkdGhD
b25zdHJhaW50cyA9IGZvcm1hdHRpbmdTdGF0ZUZvclJvb3QuaW50cmluc2ljV2lkdGhDb25zdHJh
aW50cygpOwogICAgICAgICBpZiAoIXByZWNvbXB1dGVkSW50cmluc2ljV2lkdGhDb25zdHJhaW50
cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRDb250ZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRDb250ZXh0LmNwcAppbmRleCAxN2UzZDIwMDhi
NmRkODFhOTczMDM2YzhlMGI4YjRlZTY3ZmEwY2NkLi42M2JhOTNiYjZkMzc5YmVhNWMxZWRiZTcy
YzdhZDQwMDE0ODBjMzM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0
Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dENvbnRleHQuY3Bw
CkBAIC0zNyw3ICszNyw3IEBACiAjaW5jbHVkZSAiSW52YWxpZGF0aW9uQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIkludmFsaWRhdGlvblN0YXRlLmgiCiAjaW5jbHVkZSAiTGF5b3V0Qm94LmgiCi0jaW5j
bHVkZSAiTGF5b3V0Q29udGFpbmVyLmgiCisjaW5jbHVkZSAiTGF5b3V0Q29udGFpbmVyQm94Lmgi
CiAjaW5jbHVkZSAiTGF5b3V0UGhhc2UuaCIKICNpbmNsdWRlICJMYXlvdXRUcmVlQnVpbGRlci5o
IgogI2luY2x1ZGUgIlJlbmRlclN0eWxlQ29uc3RhbnRzLmgiCkBAIC04OSw3ICs4OSw3IEBAIHZv
aWQgTGF5b3V0Q29udGV4dDo6bGF5b3V0V2l0aFByZXBhcmVkUm9vdEdlb21ldHJ5KEludmFsaWRh
dGlvblN0YXRlJiBpbnZhbGlkYXRpCiAgICAgICAgIGxheW91dEZvcm1hdHRpbmdDb250ZXh0U3Vi
dHJlZShmb3JtYXR0aW5nQ29udGV4dFJvb3QsIGludmFsaWRhdGlvblN0YXRlKTsKIH0KIAotdm9p
ZCBMYXlvdXRDb250ZXh0OjpsYXlvdXRGb3JtYXR0aW5nQ29udGV4dFN1YnRyZWUoY29uc3QgQ29u
dGFpbmVyJiBmb3JtYXR0aW5nQ29udGV4dFJvb3QsIEludmFsaWRhdGlvblN0YXRlJiBpbnZhbGlk
YXRpb25TdGF0ZSkKK3ZvaWQgTGF5b3V0Q29udGV4dDo6bGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRT
dWJ0cmVlKGNvbnN0IENvbnRhaW5lckJveCYgZm9ybWF0dGluZ0NvbnRleHRSb290LCBJbnZhbGlk
YXRpb25TdGF0ZSYgaW52YWxpZGF0aW9uU3RhdGUpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoZm9y
bWF0dGluZ0NvbnRleHRSb290LmVzdGFibGlzaGVzRm9ybWF0dGluZ0NvbnRleHQoKSk7CiAgICAg
YXV0byBmb3JtYXR0aW5nQ29udGV4dCA9IGNyZWF0ZUZvcm1hdHRpbmdDb250ZXh0KGZvcm1hdHRp
bmdDb250ZXh0Um9vdCwgbGF5b3V0U3RhdGUoKSk7CkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBM
YXlvdXRDb250ZXh0OjpsYXlvdXRGb3JtYXR0aW5nQ29udGV4dFN1YnRyZWUoY29uc3QgQ29udGFp
bmVyJiBmb3JtYXR0aW5nQ28KICAgICB9CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb3JtYXR0aW5n
Q29udGV4dD4gTGF5b3V0Q29udGV4dDo6Y3JlYXRlRm9ybWF0dGluZ0NvbnRleHQoY29uc3QgQ29u
dGFpbmVyJiBmb3JtYXR0aW5nQ29udGV4dFJvb3QsIExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSkK
K3N0ZDo6dW5pcXVlX3B0cjxGb3JtYXR0aW5nQ29udGV4dD4gTGF5b3V0Q29udGV4dDo6Y3JlYXRl
Rm9ybWF0dGluZ0NvbnRleHQoY29uc3QgQ29udGFpbmVyQm94JiBmb3JtYXR0aW5nQ29udGV4dFJv
b3QsIExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSkKIHsKICAgICBBU1NFUlQoZm9ybWF0dGluZ0Nv
bnRleHRSb290LmVzdGFibGlzaGVzRm9ybWF0dGluZ0NvbnRleHQoKSk7CiAgICAgaWYgKGZvcm1h
dHRpbmdDb250ZXh0Um9vdC5lc3RhYmxpc2hlc0lubGluZUZvcm1hdHRpbmdDb250ZXh0KCkpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRDb250ZXh0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0Q29udGV4dC5oCmluZGV4IGEwNzE4MDQ3Mzc5ZTBiYzM2
ZDhkZmE2MzM3NjA0MDI4ZWE0OGJkOTIuLjdlYThjM2I5MGQ4MjMyZGQ4YWZhMzJhZjNiZjc4NjFh
MTBjYjg4ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRDb250ZXh0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dENvbnRleHQuaApAQCAtMzksNyAr
MzksNyBAQCBjbGFzcyBSZW5kZXJWaWV3OwogCiBuYW1lc3BhY2UgTGF5b3V0IHsKIAotY2xhc3Mg
Q29udGFpbmVyOworY2xhc3MgQ29udGFpbmVyQm94OwogY2xhc3MgSW52YWxpZGF0aW9uU3RhdGU7
CiBjbGFzcyBMYXlvdXRTdGF0ZTsKIGNsYXNzIEZvcm1hdHRpbmdDb250ZXh0OwpAQCAtNTcsNyAr
NTcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBsYXlvdXQoY29uc3QgTGF5b3V0U2l6ZSYgcm9vdENv
bnRlbnRCb3hTaXplLCBJbnZhbGlkYXRpb25TdGF0ZSYpOwogICAgIHZvaWQgbGF5b3V0V2l0aFBy
ZXBhcmVkUm9vdEdlb21ldHJ5KEludmFsaWRhdGlvblN0YXRlJik7CiAKLSAgICBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPEZvcm1hdHRpbmdDb250ZXh0PiBjcmVhdGVGb3JtYXR0aW5nQ29udGV4dChj
b25zdCBDb250YWluZXImIGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgTGF5b3V0U3RhdGUmKTsKKyAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZvcm1hdHRpbmdDb250ZXh0PiBjcmVhdGVGb3JtYXR0
aW5nQ29udGV4dChjb25zdCBDb250YWluZXJCb3gmIGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgTGF5
b3V0U3RhdGUmKTsKIAogICAgIC8vIEZJWE1FOiBUaGlzIGlzIHRlbXBvcmFyeS4gCiAgICAgc3Rh
dGljIHZvaWQgcGFpbnQoY29uc3QgTGF5b3V0U3RhdGUmLCBHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBJbnRSZWN0JiBkaXJ0eVJlY3QpOwpAQCAtNjcsNyArNjcsNyBAQCBwdWJsaWM6CiAjZW5kaWYK
IAogcHJpdmF0ZToKLSAgICB2b2lkIGxheW91dEZvcm1hdHRpbmdDb250ZXh0U3VidHJlZShjb25z
dCBDb250YWluZXImLCBJbnZhbGlkYXRpb25TdGF0ZSYpOworICAgIHZvaWQgbGF5b3V0Rm9ybWF0
dGluZ0NvbnRleHRTdWJ0cmVlKGNvbnN0IENvbnRhaW5lckJveCYsIEludmFsaWRhdGlvblN0YXRl
Jik7CiAgICAgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlKCkgeyByZXR1cm4gbV9sYXlvdXRTdGF0
ZTsgfQogCiAgICAgTGF5b3V0U3RhdGUmIG1fbGF5b3V0U3RhdGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0U3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L0xheW91dFN0YXRlLmNwcAppbmRleCBjZjc5ZTg5M2ZhZjQ3YTJmMDk0YjEyODEwYjdiZTlkYzI5
MDdkNzUwLi4zMWE5MGE1YWY3ZTk2NTg0NTVjYzUzNTllNWU5MTU1NjExODIxMzRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0ZS5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRl
ICJGbG9hdGluZ1N0YXRlLmgiCiAjaW5jbHVkZSAiSW5saW5lRm9ybWF0dGluZ1N0YXRlLmgiCiAj
aW5jbHVkZSAiTGF5b3V0Qm94LmgiCi0jaW5jbHVkZSAiTGF5b3V0Q29udGFpbmVyLmgiCisjaW5j
bHVkZSAiTGF5b3V0Q29udGFpbmVyQm94LmgiCiAjaW5jbHVkZSAiUmVuZGVyQm94LmgiCiAjaW5j
bHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlRhYmxlRm9ybWF0dGlu
Z1N0YXRlLmgiCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBMYXlvdXQgewogCiBXVEZfTUFL
RV9JU09fQUxMT0NBVEVEX0lNUEwoTGF5b3V0U3RhdGUpOwogCi1MYXlvdXRTdGF0ZTo6TGF5b3V0
U3RhdGUoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBDb250YWluZXImIHJvb3RDb250
YWluZXIpCitMYXlvdXRTdGF0ZTo6TGF5b3V0U3RhdGUoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50
LCBjb25zdCBDb250YWluZXJCb3gmIHJvb3RDb250YWluZXIpCiAgICAgOiBtX3Jvb3RDb250YWlu
ZXIobWFrZVdlYWtQdHIocm9vdENvbnRhaW5lcikpCiB7CiAgICAgLy8gSXQgbWFrZXMgYWJzb2x1
dGVseSBubyBzZW5zZSB0byBjb25zdHJ1Y3QgYSBkZWRpY2F0ZWQgbGF5b3V0IHN0YXRlIGZvciBh
IG5vbi1mb3JtYXR0aW5nIGNvbnRleHQgcm9vdCAobGF5b3V0IHdvdWxkIGJlIGEgbm8tb3ApLgpA
QCAtODcsNyArODcsNyBAQCBGb3JtYXR0aW5nU3RhdGUmIExheW91dFN0YXRlOjpmb3JtYXR0aW5n
U3RhdGVGb3JCb3goY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0CiAgICAgcmV0dXJuIGVzdGFi
bGlzaGVkRm9ybWF0dGluZ1N0YXRlKGxheW91dEJveC5mb3JtYXR0aW5nQ29udGV4dFJvb3QoKSk7
CiB9CiAKLUZvcm1hdHRpbmdTdGF0ZSYgTGF5b3V0U3RhdGU6OmVzdGFibGlzaGVkRm9ybWF0dGlu
Z1N0YXRlKGNvbnN0IENvbnRhaW5lciYgZm9ybWF0dGluZ0NvbnRleHRSb290KSBjb25zdAorRm9y
bWF0dGluZ1N0YXRlJiBMYXlvdXRTdGF0ZTo6ZXN0YWJsaXNoZWRGb3JtYXR0aW5nU3RhdGUoY29u
c3QgQ29udGFpbmVyQm94JiBmb3JtYXR0aW5nQ29udGV4dFJvb3QpIGNvbnN0CiB7CiAgICAgaWYg
KFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkubGF5b3V0Rm9ybWF0dGlu
Z0NvbnRleHRJbnRlZ3JhdGlvbkVuYWJsZWQoKSkgewogICAgICAgICBBU1NFUlQoJmZvcm1hdHRp
bmdDb250ZXh0Um9vdCA9PSBtX3Jvb3RDb250YWluZXIuZ2V0KCkpOwpAQCAtMTA0LDcgKzEwNCw3
IEBAIEZvcm1hdHRpbmdTdGF0ZSYgTGF5b3V0U3RhdGU6OmVzdGFibGlzaGVkRm9ybWF0dGluZ1N0
YXRlKGNvbnN0IENvbnRhaW5lciYgZm9ybWF0CiAgICAgcmV0dXJuICptX3RhYmxlRm9ybWF0dGlu
Z1N0YXRlcy5nZXQoJmZvcm1hdHRpbmdDb250ZXh0Um9vdCk7CiB9CiAKLUlubGluZUZvcm1hdHRp
bmdTdGF0ZSYgTGF5b3V0U3RhdGU6OmVzdGFibGlzaGVkSW5saW5lRm9ybWF0dGluZ1N0YXRlKGNv
bnN0IENvbnRhaW5lciYgZm9ybWF0dGluZ0NvbnRleHRSb290KSBjb25zdAorSW5saW5lRm9ybWF0
dGluZ1N0YXRlJiBMYXlvdXRTdGF0ZTo6ZXN0YWJsaXNoZWRJbmxpbmVGb3JtYXR0aW5nU3RhdGUo
Y29uc3QgQ29udGFpbmVyQm94JiBmb3JtYXR0aW5nQ29udGV4dFJvb3QpIGNvbnN0CiB7CiAgICAg
QVNTRVJUKGZvcm1hdHRpbmdDb250ZXh0Um9vdC5lc3RhYmxpc2hlc0lubGluZUZvcm1hdHRpbmdD
b250ZXh0KCkpOwogCkBAIC0xMTYsMTkgKzExNiwxOSBAQCBJbmxpbmVGb3JtYXR0aW5nU3RhdGUm
IExheW91dFN0YXRlOjplc3RhYmxpc2hlZElubGluZUZvcm1hdHRpbmdTdGF0ZShjb25zdCBDb250
YQogICAgIHJldHVybiAqbV9pbmxpbmVGb3JtYXR0aW5nU3RhdGVzLmdldCgmZm9ybWF0dGluZ0Nv
bnRleHRSb290KTsKIH0KIAotQmxvY2tGb3JtYXR0aW5nU3RhdGUmIExheW91dFN0YXRlOjplc3Rh
Ymxpc2hlZEJsb2NrRm9ybWF0dGluZ1N0YXRlKGNvbnN0IENvbnRhaW5lciYgZm9ybWF0dGluZ0Nv
bnRleHRSb290KSBjb25zdAorQmxvY2tGb3JtYXR0aW5nU3RhdGUmIExheW91dFN0YXRlOjplc3Rh
Ymxpc2hlZEJsb2NrRm9ybWF0dGluZ1N0YXRlKGNvbnN0IENvbnRhaW5lckJveCYgZm9ybWF0dGlu
Z0NvbnRleHRSb290KSBjb25zdAogewogICAgIEFTU0VSVChmb3JtYXR0aW5nQ29udGV4dFJvb3Qu
ZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KCkpOwogICAgIHJldHVybiAqbV9ibG9j
a0Zvcm1hdHRpbmdTdGF0ZXMuZ2V0KCZmb3JtYXR0aW5nQ29udGV4dFJvb3QpOwogfQogCi1UYWJs
ZUZvcm1hdHRpbmdTdGF0ZSYgTGF5b3V0U3RhdGU6OmVzdGFibGlzaGVkVGFibGVGb3JtYXR0aW5n
U3RhdGUoY29uc3QgQ29udGFpbmVyJiBmb3JtYXR0aW5nQ29udGV4dFJvb3QpIGNvbnN0CitUYWJs
ZUZvcm1hdHRpbmdTdGF0ZSYgTGF5b3V0U3RhdGU6OmVzdGFibGlzaGVkVGFibGVGb3JtYXR0aW5n
U3RhdGUoY29uc3QgQ29udGFpbmVyQm94JiBmb3JtYXR0aW5nQ29udGV4dFJvb3QpIGNvbnN0CiB7
CiAgICAgQVNTRVJUKGZvcm1hdHRpbmdDb250ZXh0Um9vdC5lc3RhYmxpc2hlc1RhYmxlRm9ybWF0
dGluZ0NvbnRleHQoKSk7CiAgICAgcmV0dXJuICptX3RhYmxlRm9ybWF0dGluZ1N0YXRlcy5nZXQo
JmZvcm1hdHRpbmdDb250ZXh0Um9vdCk7CiB9CiAKLUZvcm1hdHRpbmdTdGF0ZSYgTGF5b3V0U3Rh
dGU6OmVuc3VyZUZvcm1hdHRpbmdTdGF0ZShjb25zdCBDb250YWluZXImIGZvcm1hdHRpbmdDb250
ZXh0Um9vdCkKK0Zvcm1hdHRpbmdTdGF0ZSYgTGF5b3V0U3RhdGU6OmVuc3VyZUZvcm1hdHRpbmdT
dGF0ZShjb25zdCBDb250YWluZXJCb3gmIGZvcm1hdHRpbmdDb250ZXh0Um9vdCkKIHsKICAgICBp
ZiAoZm9ybWF0dGluZ0NvbnRleHRSb290LmVzdGFibGlzaGVzSW5saW5lRm9ybWF0dGluZ0NvbnRl
eHQoKSkKICAgICAgICAgcmV0dXJuIGVuc3VyZUlubGluZUZvcm1hdHRpbmdTdGF0ZShmb3JtYXR0
aW5nQ29udGV4dFJvb3QpOwpAQCAtMTM5LDcgKzEzOSw3IEBAIEZvcm1hdHRpbmdTdGF0ZSYgTGF5
b3V0U3RhdGU6OmVuc3VyZUZvcm1hdHRpbmdTdGF0ZShjb25zdCBDb250YWluZXImIGZvcm1hdHRp
bmdDCiAgICAgcmV0dXJuIGVuc3VyZVRhYmxlRm9ybWF0dGluZ1N0YXRlKGZvcm1hdHRpbmdDb250
ZXh0Um9vdCk7CiB9CiAKLUlubGluZUZvcm1hdHRpbmdTdGF0ZSYgTGF5b3V0U3RhdGU6OmVuc3Vy
ZUlubGluZUZvcm1hdHRpbmdTdGF0ZShjb25zdCBDb250YWluZXImIGZvcm1hdHRpbmdDb250ZXh0
Um9vdCkKK0lubGluZUZvcm1hdHRpbmdTdGF0ZSYgTGF5b3V0U3RhdGU6OmVuc3VyZUlubGluZUZv
cm1hdHRpbmdTdGF0ZShjb25zdCBDb250YWluZXJCb3gmIGZvcm1hdHRpbmdDb250ZXh0Um9vdCkK
IHsKICAgICBBU1NFUlQoZm9ybWF0dGluZ0NvbnRleHRSb290LmVzdGFibGlzaGVzSW5saW5lRm9y
bWF0dGluZ0NvbnRleHQoKSk7CiAKQEAgLTE2OCw3ICsxNjgsNyBAQCBJbmxpbmVGb3JtYXR0aW5n
U3RhdGUmIExheW91dFN0YXRlOjplbnN1cmVJbmxpbmVGb3JtYXR0aW5nU3RhdGUoY29uc3QgQ29u
dGFpbmVyJgogICAgIHJldHVybiAqbV9pbmxpbmVGb3JtYXR0aW5nU3RhdGVzLmVuc3VyZSgmZm9y
bWF0dGluZ0NvbnRleHRSb290LCBjcmVhdGUpLml0ZXJhdG9yLT52YWx1ZTsKIH0KIAotQmxvY2tG
b3JtYXR0aW5nU3RhdGUmIExheW91dFN0YXRlOjplbnN1cmVCbG9ja0Zvcm1hdHRpbmdTdGF0ZShj
b25zdCBDb250YWluZXImIGZvcm1hdHRpbmdDb250ZXh0Um9vdCkKK0Jsb2NrRm9ybWF0dGluZ1N0
YXRlJiBMYXlvdXRTdGF0ZTo6ZW5zdXJlQmxvY2tGb3JtYXR0aW5nU3RhdGUoY29uc3QgQ29udGFp
bmVyQm94JiBmb3JtYXR0aW5nQ29udGV4dFJvb3QpCiB7CiAgICAgQVNTRVJUKGZvcm1hdHRpbmdD
b250ZXh0Um9vdC5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoKSk7CiAKQEAgLTE3
OSw3ICsxNzksNyBAQCBCbG9ja0Zvcm1hdHRpbmdTdGF0ZSYgTGF5b3V0U3RhdGU6OmVuc3VyZUJs
b2NrRm9ybWF0dGluZ1N0YXRlKGNvbnN0IENvbnRhaW5lciYgZgogICAgIHJldHVybiAqbV9ibG9j
a0Zvcm1hdHRpbmdTdGF0ZXMuZW5zdXJlKCZmb3JtYXR0aW5nQ29udGV4dFJvb3QsIGNyZWF0ZSku
aXRlcmF0b3ItPnZhbHVlOwogfQogCi1UYWJsZUZvcm1hdHRpbmdTdGF0ZSYgTGF5b3V0U3RhdGU6
OmVuc3VyZVRhYmxlRm9ybWF0dGluZ1N0YXRlKGNvbnN0IENvbnRhaW5lciYgZm9ybWF0dGluZ0Nv
bnRleHRSb290KQorVGFibGVGb3JtYXR0aW5nU3RhdGUmIExheW91dFN0YXRlOjplbnN1cmVUYWJs
ZUZvcm1hdHRpbmdTdGF0ZShjb25zdCBDb250YWluZXJCb3gmIGZvcm1hdHRpbmdDb250ZXh0Um9v
dCkKIHsKICAgICBBU1NFUlQoZm9ybWF0dGluZ0NvbnRleHRSb290LmVzdGFibGlzaGVzVGFibGVG
b3JtYXR0aW5nQ29udGV4dCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L0xheW91dFN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0U3RhdGUuaAppbmRl
eCA2NjRlNjIwNjYzZTAyNmViYmY1MTc5MjI5ZWNiNWRjNjUxNjI2MmI3Li42ZWU1NTQzN2NjNmJl
ZmUzMzI2Mzg4YjQ5ZjUyYjg4ZDNhNzhjMDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvTGF5b3V0U3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0U3Rh
dGUuaApAQCAtMjcsNyArMjcsNyBAQAogCiAjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NP
TlRFWFQpCiAKLSNpbmNsdWRlICJMYXlvdXRDb250YWluZXIuaCIKKyNpbmNsdWRlICJMYXlvdXRD
b250YWluZXJCb3guaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvYy5oPgpAQCAtNTAsMjEgKzUwLDIxIEBA
IGNsYXNzIFRhYmxlRm9ybWF0dGluZ1N0YXRlOwogY2xhc3MgTGF5b3V0U3RhdGUgOiBwdWJsaWMg
Q2FuTWFrZVdlYWtQdHI8TGF5b3V0U3RhdGU+IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVE
KExheW91dFN0YXRlKTsKIHB1YmxpYzoKLSAgICBMYXlvdXRTdGF0ZShjb25zdCBEb2N1bWVudCYs
IGNvbnN0IENvbnRhaW5lciYgcm9vdENvbnRhaW5lcik7CisgICAgTGF5b3V0U3RhdGUoY29uc3Qg
RG9jdW1lbnQmLCBjb25zdCBDb250YWluZXJCb3gmIHJvb3RDb250YWluZXIpOwogICAgIH5MYXlv
dXRTdGF0ZSgpOwogCi0gICAgRm9ybWF0dGluZ1N0YXRlJiBlbnN1cmVGb3JtYXR0aW5nU3RhdGUo
Y29uc3QgQ29udGFpbmVyJiBmb3JtYXR0aW5nQ29udGV4dFJvb3QpOwotICAgIElubGluZUZvcm1h
dHRpbmdTdGF0ZSYgZW5zdXJlSW5saW5lRm9ybWF0dGluZ1N0YXRlKGNvbnN0IENvbnRhaW5lciYg
Zm9ybWF0dGluZ0NvbnRleHRSb290KTsKLSAgICBCbG9ja0Zvcm1hdHRpbmdTdGF0ZSYgZW5zdXJl
QmxvY2tGb3JtYXR0aW5nU3RhdGUoY29uc3QgQ29udGFpbmVyJiBmb3JtYXR0aW5nQ29udGV4dFJv
b3QpOwotICAgIFRhYmxlRm9ybWF0dGluZ1N0YXRlJiBlbnN1cmVUYWJsZUZvcm1hdHRpbmdTdGF0
ZShjb25zdCBDb250YWluZXImIGZvcm1hdHRpbmdDb250ZXh0Um9vdCk7CisgICAgRm9ybWF0dGlu
Z1N0YXRlJiBlbnN1cmVGb3JtYXR0aW5nU3RhdGUoY29uc3QgQ29udGFpbmVyQm94JiBmb3JtYXR0
aW5nQ29udGV4dFJvb3QpOworICAgIElubGluZUZvcm1hdHRpbmdTdGF0ZSYgZW5zdXJlSW5saW5l
Rm9ybWF0dGluZ1N0YXRlKGNvbnN0IENvbnRhaW5lckJveCYgZm9ybWF0dGluZ0NvbnRleHRSb290
KTsKKyAgICBCbG9ja0Zvcm1hdHRpbmdTdGF0ZSYgZW5zdXJlQmxvY2tGb3JtYXR0aW5nU3RhdGUo
Y29uc3QgQ29udGFpbmVyQm94JiBmb3JtYXR0aW5nQ29udGV4dFJvb3QpOworICAgIFRhYmxlRm9y
bWF0dGluZ1N0YXRlJiBlbnN1cmVUYWJsZUZvcm1hdHRpbmdTdGF0ZShjb25zdCBDb250YWluZXJC
b3gmIGZvcm1hdHRpbmdDb250ZXh0Um9vdCk7CiAKLSAgICBGb3JtYXR0aW5nU3RhdGUmIGVzdGFi
bGlzaGVkRm9ybWF0dGluZ1N0YXRlKGNvbnN0IENvbnRhaW5lciYgZm9ybWF0dGluZ1Jvb3QpIGNv
bnN0OwotICAgIElubGluZUZvcm1hdHRpbmdTdGF0ZSYgZXN0YWJsaXNoZWRJbmxpbmVGb3JtYXR0
aW5nU3RhdGUoY29uc3QgQ29udGFpbmVyJiBmb3JtYXR0aW5nQ29udGV4dFJvb3QpIGNvbnN0Owot
ICAgIEJsb2NrRm9ybWF0dGluZ1N0YXRlJiBlc3RhYmxpc2hlZEJsb2NrRm9ybWF0dGluZ1N0YXRl
KGNvbnN0IENvbnRhaW5lciYgZm9ybWF0dGluZ0NvbnRleHRSb290KSBjb25zdDsKLSAgICBUYWJs
ZUZvcm1hdHRpbmdTdGF0ZSYgZXN0YWJsaXNoZWRUYWJsZUZvcm1hdHRpbmdTdGF0ZShjb25zdCBD
b250YWluZXImIGZvcm1hdHRpbmdDb250ZXh0Um9vdCkgY29uc3Q7CisgICAgRm9ybWF0dGluZ1N0
YXRlJiBlc3RhYmxpc2hlZEZvcm1hdHRpbmdTdGF0ZShjb25zdCBDb250YWluZXJCb3gmIGZvcm1h
dHRpbmdSb290KSBjb25zdDsKKyAgICBJbmxpbmVGb3JtYXR0aW5nU3RhdGUmIGVzdGFibGlzaGVk
SW5saW5lRm9ybWF0dGluZ1N0YXRlKGNvbnN0IENvbnRhaW5lckJveCYgZm9ybWF0dGluZ0NvbnRl
eHRSb290KSBjb25zdDsKKyAgICBCbG9ja0Zvcm1hdHRpbmdTdGF0ZSYgZXN0YWJsaXNoZWRCbG9j
a0Zvcm1hdHRpbmdTdGF0ZShjb25zdCBDb250YWluZXJCb3gmIGZvcm1hdHRpbmdDb250ZXh0Um9v
dCkgY29uc3Q7CisgICAgVGFibGVGb3JtYXR0aW5nU3RhdGUmIGVzdGFibGlzaGVkVGFibGVGb3Jt
YXR0aW5nU3RhdGUoY29uc3QgQ29udGFpbmVyQm94JiBmb3JtYXR0aW5nQ29udGV4dFJvb3QpIGNv
bnN0OwogCiAgICAgRm9ybWF0dGluZ1N0YXRlJiBmb3JtYXR0aW5nU3RhdGVGb3JCb3goY29uc3Qg
Qm94JikgY29uc3Q7Ci0gICAgYm9vbCBoYXNJbmxpbmVGb3JtYXR0aW5nU3RhdGUoY29uc3QgQ29u
dGFpbmVyJiBmb3JtYXR0aW5nUm9vdCkgY29uc3QgeyByZXR1cm4gbV9pbmxpbmVGb3JtYXR0aW5n
U3RhdGVzLmNvbnRhaW5zKCZmb3JtYXR0aW5nUm9vdCk7IH0KKyAgICBib29sIGhhc0lubGluZUZv
cm1hdHRpbmdTdGF0ZShjb25zdCBDb250YWluZXJCb3gmIGZvcm1hdHRpbmdSb290KSBjb25zdCB7
IHJldHVybiBtX2lubGluZUZvcm1hdHRpbmdTdGF0ZXMuY29udGFpbnMoJmZvcm1hdHRpbmdSb290
KTsgfQogCiAjaWZuZGVmIE5ERUJVRwogICAgIHZvaWQgcmVnaXN0ZXJGb3JtYXR0aW5nQ29udGV4
dChjb25zdCBGb3JtYXR0aW5nQ29udGV4dCYpOwpAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBpbkxpbWl0ZWRRdWlya3NNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9xdWlya3NNb2Rl
ID09IFF1aXJrc01vZGU6OkxpbWl0ZWQ7IH0KICAgICBib29sIGluTm9RdWlya3NNb2RlKCkgY29u
c3QgeyByZXR1cm4gbV9xdWlya3NNb2RlID09IFF1aXJrc01vZGU6Ok5vOyB9CiAKLSAgICBjb25z
dCBDb250YWluZXImIHJvb3QoKSBjb25zdCB7IHJldHVybiAqbV9yb290Q29udGFpbmVyOyB9Cisg
ICAgY29uc3QgQ29udGFpbmVyQm94JiByb290KCkgY29uc3QgeyByZXR1cm4gKm1fcm9vdENvbnRh
aW5lcjsgfQogCiAgICAgLy8gTEZDIGludGVncmF0aW9uIG9ubHkuIEZ1bGwgTEZDIGhhcyBwcm9w
ZXIgSUNCIGFjY2Vzcy4KICAgICB2b2lkIHNldFZpZXdwb3J0U2l6ZShjb25zdCBMYXlvdXRTaXpl
Jik7CkBAIC05NCw5ICs5NCw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRRdWlya3NNb2RlKFF1
aXJrc01vZGUgcXVpcmtzTW9kZSkgeyBtX3F1aXJrc01vZGUgPSBxdWlya3NNb2RlOyB9CiAgICAg
RGlzcGxheTo6Qm94JiBlbnN1cmVEaXNwbGF5Qm94Rm9yTGF5b3V0Qm94U2xvdyhjb25zdCBCb3gm
KTsKIAotICAgIEhhc2hNYXA8Y29uc3QgQ29udGFpbmVyKiwgc3RkOjp1bmlxdWVfcHRyPElubGlu
ZUZvcm1hdHRpbmdTdGF0ZT4+IG1faW5saW5lRm9ybWF0dGluZ1N0YXRlczsKLSAgICBIYXNoTWFw
PGNvbnN0IENvbnRhaW5lciosIHN0ZDo6dW5pcXVlX3B0cjxCbG9ja0Zvcm1hdHRpbmdTdGF0ZT4+
IG1fYmxvY2tGb3JtYXR0aW5nU3RhdGVzOwotICAgIEhhc2hNYXA8Y29uc3QgQ29udGFpbmVyKiwg
c3RkOjp1bmlxdWVfcHRyPFRhYmxlRm9ybWF0dGluZ1N0YXRlPj4gbV90YWJsZUZvcm1hdHRpbmdT
dGF0ZXM7CisgICAgSGFzaE1hcDxjb25zdCBDb250YWluZXJCb3gqLCBzdGQ6OnVuaXF1ZV9wdHI8
SW5saW5lRm9ybWF0dGluZ1N0YXRlPj4gbV9pbmxpbmVGb3JtYXR0aW5nU3RhdGVzOworICAgIEhh
c2hNYXA8Y29uc3QgQ29udGFpbmVyQm94Kiwgc3RkOjp1bmlxdWVfcHRyPEJsb2NrRm9ybWF0dGlu
Z1N0YXRlPj4gbV9ibG9ja0Zvcm1hdHRpbmdTdGF0ZXM7CisgICAgSGFzaE1hcDxjb25zdCBDb250
YWluZXJCb3gqLCBzdGQ6OnVuaXF1ZV9wdHI8VGFibGVGb3JtYXR0aW5nU3RhdGU+PiBtX3RhYmxl
Rm9ybWF0dGluZ1N0YXRlczsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbmxpbmVGb3JtYXR0aW5n
U3RhdGU+IG1fcm9vdElubGluZUZvcm1hdHRpbmdTdGF0ZUZvckludGVncmF0aW9uOwogCkBAIC0x
MDYsNyArMTA2LDcgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPGNvbnN0IEJveCosIHN0ZDo6dW5p
cXVlX3B0cjxEaXNwbGF5OjpCb3g+PiBtX2xheW91dFRvRGlzcGxheUJveDsKICAgICBRdWlya3NN
b2RlIG1fcXVpcmtzTW9kZSB7IFF1aXJrc01vZGU6Ok5vIH07CiAKLSAgICBXZWFrUHRyPGNvbnN0
IENvbnRhaW5lcj4gbV9yb290Q29udGFpbmVyOworICAgIFdlYWtQdHI8Y29uc3QgQ29udGFpbmVy
Qm94PiBtX3Jvb3RDb250YWluZXI7CiAKICAgICAvLyBMRkMgaW50ZWdyYXRpb24gb25seS4KICAg
ICBMYXlvdXRTaXplIG1fdmlld3BvcnRTaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L1ZlcmlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvVmVyaWZpY2F0
aW9uLmNwcAppbmRleCA1MzQxZTNjZjUzZDlhY2JmZTg0ODU4YjVkMzEwN2FhYjM1YTg3NzVmLi5h
YWFlOGE3ZDQ5MjcyNzI2N2M4OTM0ZDYxYzU4Y2JjM2NiMjg2N2IzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvVmVyaWZpY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvVmVyaWZpY2F0aW9uLmNwcApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgIklubGlu
ZUZvcm1hdHRpbmdTdGF0ZS5oIgogI2luY2x1ZGUgIklubGluZVRleHRCb3guaCIKICNpbmNsdWRl
ICJMYXlvdXRCb3guaCIKLSNpbmNsdWRlICJMYXlvdXRDb250YWluZXIuaCIKKyNpbmNsdWRlICJM
YXlvdXRDb250YWluZXJCb3guaCIKICNpbmNsdWRlICJMYXlvdXRDb250ZXh0LmgiCiAjaW5jbHVk
ZSAiTGF5b3V0VHJlZUJ1aWxkZXIuaCIKICNpbmNsdWRlICJSZW5kZXJCb3guaCIKQEAgLTY3LDcg
KzY3LDcgQEAgc3RhdGljIGJvb2wgYXJlRXNzZW50aWFsbHlFcXVhbChMYXlvdXRSZWN0IGEsIExh
eW91dFJlY3QgYikKICAgICAgICAgJiYgYXJlRXNzZW50aWFsbHlFcXVhbChhLmhlaWdodCgpLCBi
LmhlaWdodCgpKTsKIH0KIAotc3RhdGljIGJvb2wgb3V0cHV0TWlzbWF0Y2hpbmdTaW1wbGVMaW5l
SW5mb3JtYXRpb25JZk5lZWRlZChUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0IExheW91dFN0YXRl
JiBsYXlvdXRTdGF0ZSwgY29uc3QgUmVuZGVyQmxvY2tGbG93JiBibG9ja0Zsb3csIGNvbnN0IENv
bnRhaW5lciYgaW5saW5lRm9ybWF0dGluZ1Jvb3QpCitzdGF0aWMgYm9vbCBvdXRwdXRNaXNtYXRj
aGluZ1NpbXBsZUxpbmVJbmZvcm1hdGlvbklmTmVlZGVkKFRleHRTdHJlYW0mIHN0cmVhbSwgY29u
c3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGJsb2Nr
RmxvdywgY29uc3QgQ29udGFpbmVyQm94JiBpbmxpbmVGb3JtYXR0aW5nUm9vdCkKIHsKICAgICBh
dXRvKiBsaW5lTGF5b3V0RGF0YSA9IGJsb2NrRmxvdy5zaW1wbGVMaW5lTGF5b3V0KCk7CiAgICAg
aWYgKCFsaW5lTGF5b3V0RGF0YSkgewpAQCAtMTU5LDcgKzE1OSw3IEBAIHN0YXRpYyB2b2lkIGNv
bGxlY3RJbmxpbmVCb3hlcyhjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIHJvb3QsIFZlY3RvcjxXZWJD
b3JlOjpJbmxpCiAgICAgfQogfQogCi1zdGF0aWMgYm9vbCBvdXRwdXRNaXNtYXRjaGluZ0NvbXBs
ZXhMaW5lSW5mb3JtYXRpb25JZk5lZWRlZChUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0IExheW91
dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgUmVuZGVyQmxvY2tGbG93JiBibG9ja0Zsb3csIGNv
bnN0IENvbnRhaW5lciYgaW5saW5lRm9ybWF0dGluZ1Jvb3QpCitzdGF0aWMgYm9vbCBvdXRwdXRN
aXNtYXRjaGluZ0NvbXBsZXhMaW5lSW5mb3JtYXRpb25JZk5lZWRlZChUZXh0U3RyZWFtJiBzdHJl
YW0sIGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgUmVuZGVyQmxvY2tGbG93
JiBibG9ja0Zsb3csIGNvbnN0IENvbnRhaW5lckJveCYgaW5saW5lRm9ybWF0dGluZ1Jvb3QpCiB7
CiAgICAgYXV0byYgaW5saW5lRm9ybWF0dGluZ1N0YXRlID0gbGF5b3V0U3RhdGUuZXN0YWJsaXNo
ZWRGb3JtYXR0aW5nU3RhdGUoaW5saW5lRm9ybWF0dGluZ1Jvb3QpOwogCkBAIC0yOTAsMTUgKzI5
MCwxNSBAQCBzdGF0aWMgYm9vbCB2ZXJpZnlBbmRPdXRwdXRTdWJ0cmVlKFRleHRTdHJlYW0mIHN0
cmVhbSwgY29uc3QgTGF5b3V0U3RhdGUmIGNvbnRleAogewogICAgIC8vIFJlbmRlcmluZyBjb2Rl
IGRvZXMgbm90IGhhdmUgdGhlIGNvbmNlcHQgb2YgdGFibGUgd3JhcHBlciBib3guIFNraXAgaXQg
YnkgdmVyaWZ5aW5nIHRoZSBmaXJzdCBjaGlsZCh0YWJsZSBib3gpIGluc3RlYWQuIAogICAgIGlm
IChsYXlvdXRCb3guaXNUYWJsZVdyYXBwZXJCb3goKSkKLSAgICAgICAgcmV0dXJuIHZlcmlmeUFu
ZE91dHB1dFN1YnRyZWUoc3RyZWFtLCBjb250ZXh0LCByZW5kZXJlciwgKmRvd25jYXN0PENvbnRh
aW5lcj4obGF5b3V0Qm94KS5maXJzdENoaWxkKCkpOyAKKyAgICAgICAgcmV0dXJuIHZlcmlmeUFu
ZE91dHB1dFN1YnRyZWUoc3RyZWFtLCBjb250ZXh0LCByZW5kZXJlciwgKmRvd25jYXN0PENvbnRh
aW5lckJveD4obGF5b3V0Qm94KS5maXJzdENoaWxkKCkpOyAKIAogICAgIGF1dG8gbWlzbXRhY2hp
bmdHZW9tZXRyeSA9IG91dHB1dE1pc21hdGNoaW5nQmxvY2tCb3hJbmZvcm1hdGlvbklmTmVlZGVk
KHN0cmVhbSwgY29udGV4dCwgcmVuZGVyZXIsIGxheW91dEJveCk7CiAKLSAgICBpZiAoIWlzPENv
bnRhaW5lcj4obGF5b3V0Qm94KSkKKyAgICBpZiAoIWlzPENvbnRhaW5lckJveD4obGF5b3V0Qm94
KSkKICAgICAgICAgcmV0dXJuIG1pc210YWNoaW5nR2VvbWV0cnk7CiAKLSAgICBhdXRvJiBjb250
YWluZXIgPSBkb3duY2FzdDxDb250YWluZXI+KGxheW91dEJveCk7Ci0gICAgYXV0byogY2hpbGRM
YXlvdXRCb3ggPSBjb250YWluZXIuZmlyc3RDaGlsZCgpOworICAgIGF1dG8mIGNvbnRhaW5lckJv
eCA9IGRvd25jYXN0PENvbnRhaW5lckJveD4obGF5b3V0Qm94KTsKKyAgICBhdXRvKiBjaGlsZExh
eW91dEJveCA9IGNvbnRhaW5lckJveC5maXJzdENoaWxkKCk7CiAgICAgYXV0byogY2hpbGRSZW5k
ZXJlciA9IHJlbmRlcmVyLmZpcnN0Q2hpbGQoKTsKIAogICAgIHdoaWxlIChjaGlsZFJlbmRlcmVy
KSB7CkBAIC0zMjAsNyArMzIwLDcgQEAgc3RhdGljIGJvb2wgdmVyaWZ5QW5kT3V0cHV0U3VidHJl
ZShUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0IExheW91dFN0YXRlJiBjb250ZXgKICAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgICAgICAgICAgYXV0byYgYmxvY2tGbG93ID0gZG93
bmNhc3Q8UmVuZGVyQmxvY2tGbG93PigqY2hpbGRSZW5kZXJlcik7Ci0gICAgICAgICAgICBhdXRv
JiBmb3JtYXR0aW5nUm9vdCA9IGRvd25jYXN0PENvbnRhaW5lcj4oKmNoaWxkTGF5b3V0Qm94KTsK
KyAgICAgICAgICAgIGF1dG8mIGZvcm1hdHRpbmdSb290ID0gZG93bmNhc3Q8Q29udGFpbmVyQm94
PigqY2hpbGRMYXlvdXRCb3gpOwogICAgICAgICAgICAgbWlzbXRhY2hpbmdHZW9tZXRyeSB8PSBi
bG9ja0Zsb3cubGluZUxheW91dFBhdGgoKSA9PSBSZW5kZXJCbG9ja0Zsb3c6OlNpbXBsZUxpbmVz
UGF0aCA/IG91dHB1dE1pc21hdGNoaW5nU2ltcGxlTGluZUluZm9ybWF0aW9uSWZOZWVkZWQoc3Ry
ZWFtLCBjb250ZXh0LCBibG9ja0Zsb3csIGZvcm1hdHRpbmdSb290KSA6IG91dHB1dE1pc21hdGNo
aW5nQ29tcGxleExpbmVJbmZvcm1hdGlvbklmTmVlZGVkKHN0cmVhbSwgY29udGV4dCwgYmxvY2tG
bG93LCBmb3JtYXR0aW5nUm9vdCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBhdXRv
IG1pc21hdGNoaW5nU3VidHJlZUdlb21ldHJ5ID0gdmVyaWZ5QW5kT3V0cHV0U3VidHJlZShzdHJl
YW0sIGNvbnRleHQsIGRvd25jYXN0PFJlbmRlckJveD4oKmNoaWxkUmVuZGVyZXIpLCAqY2hpbGRM
YXlvdXRCb3gpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0
dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9i
bG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggOThlYzQ2MGZj
NWEzMTBhMDk4NmQ1M2E5MGMxMTBiZmY5NmE3MWI0YS4uNGM1NjQ0ZGVmMmFjOGQwNjc1ZGYzZTYy
M2VjMGMyM2U5ODRkMGM0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2Nr
Zm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC0z
NCw3ICszNCw3IEBACiAjaW5jbHVkZSAiSW52YWxpZGF0aW9uU3RhdGUuaCIKICNpbmNsdWRlICJM
YXlvdXRCb3guaCIKICNpbmNsdWRlICJMYXlvdXRDaGlsZEl0ZXJhdG9yLmgiCi0jaW5jbHVkZSAi
TGF5b3V0Q29udGFpbmVyLmgiCisjaW5jbHVkZSAiTGF5b3V0Q29udGFpbmVyQm94LmgiCiAjaW5j
bHVkZSAiTGF5b3V0Q29udGV4dC5oIgogI2luY2x1ZGUgIkxheW91dFN0YXRlLmgiCiAjaW5jbHVk
ZSAiTG9nZ2luZy5oIgpAQCAtNDYsNyArNDYsNyBAQCBuYW1lc3BhY2UgTGF5b3V0IHsKIAogV1RG
X01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEJsb2NrRm9ybWF0dGluZ0NvbnRleHQpOwogCi1CbG9j
a0Zvcm1hdHRpbmdDb250ZXh0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KGNvbnN0IENvbnRhaW5l
ciYgZm9ybWF0dGluZ0NvbnRleHRSb290LCBCbG9ja0Zvcm1hdHRpbmdTdGF0ZSYgZm9ybWF0dGlu
Z1N0YXRlKQorQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dChj
b25zdCBDb250YWluZXJCb3gmIGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgQmxvY2tGb3JtYXR0aW5n
U3RhdGUmIGZvcm1hdHRpbmdTdGF0ZSkKICAgICA6IEZvcm1hdHRpbmdDb250ZXh0KGZvcm1hdHRp
bmdDb250ZXh0Um9vdCwgZm9ybWF0dGluZ1N0YXRlKQogewogfQpAQCAtNjYsOSArNjYsOSBAQCB2
b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dEluRmxvd0NvbnRlbnQoSW52YWxpZGF0
aW9uU3RhdGUmIGludmFsaWRhdGlvbgogICAgIGVudW0gY2xhc3MgTGF5b3V0RGlyZWN0aW9uIHsg
Q2hpbGQsIFNpYmxpbmcgfTsKICAgICBhdXRvIGFwcGVuZE5leHRUb0xheW91dFF1ZXVlID0gWyZd
IChjb25zdCBhdXRvJiBsYXlvdXRCb3gsIGF1dG8gZGlyZWN0aW9uKSB7CiAgICAgICAgIGlmIChk
aXJlY3Rpb24gPT0gTGF5b3V0RGlyZWN0aW9uOjpDaGlsZCkgewotICAgICAgICAgICAgaWYgKCFp
czxDb250YWluZXI+KGxheW91dEJveCkpCisgICAgICAgICAgICBpZiAoIWlzPENvbnRhaW5lckJv
eD4obGF5b3V0Qm94KSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAg
ICBmb3IgKGF1dG8qIGNoaWxkID0gZG93bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRCb3gpLmZpcnN0
SW5GbG93T3JGbG9hdGluZ0NoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0SW5GbG93
T3JGbG9hdGluZ1NpYmxpbmcoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvKiBjaGlsZCA9IGRv
d25jYXN0PENvbnRhaW5lckJveD4obGF5b3V0Qm94KS5maXJzdEluRmxvd09yRmxvYXRpbmdDaGls
ZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dEluRmxvd09yRmxvYXRpbmdTaWJsaW5nKCkp
IHsKICAgICAgICAgICAgICAgICBpZiAoIWludmFsaWRhdGlvblN0YXRlLm5lZWRzTGF5b3V0KCpj
aGlsZCkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIGxh
eW91dFF1ZXVlLmFwcGVuZChjaGlsZCk7CkBAIC0xMjUsMTMgKzEyNSwxMyBAQCB2b2lkIEJsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dEluRmxvd0NvbnRlbnQoSW52YWxpZGF0aW9uU3RhdGUm
IGludmFsaWRhdGlvbgogICAgICAgICAgICAgY29tcHV0ZVN0YXRpY0hvcml6b250YWxQb3NpdGlv
bihsYXlvdXRCb3gsIGhvcml6b250YWxDb25zdHJhaW50cyk7CiAKICAgICAgICAgICAgIGlmIChs
YXlvdXRCb3guZXN0YWJsaXNoZXNGb3JtYXR0aW5nQ29udGV4dCgpKSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKGlzPENvbnRhaW5lcj4obGF5b3V0Qm94KSAmJiBkb3duY2FzdDxDb250YWluZXI+KGxh
eW91dEJveCkuaGFzSW5GbG93T3JGbG9hdGluZ0NoaWxkKCkpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoaXM8Q29udGFpbmVyQm94PihsYXlvdXRCb3gpICYmIGRvd25jYXN0PENvbnRhaW5lckJveD4o
bGF5b3V0Qm94KS5oYXNJbkZsb3dPckZsb2F0aW5nQ2hpbGQoKSkgewogICAgICAgICAgICAgICAg
ICAgICAvLyBMYXlvdXQgdGhlIGluZmxvdyBkZXNjZW5kYW50cyBvZiB0aGlzIGZvcm1hdHRpbmcg
Y29udGV4dCByb290LgogICAgICAgICAgICAgICAgICAgICBwcmVjb21wdXRlVmVydGljYWxQb3Np
dGlvbkZvckZvcm1hdHRpbmdSb290KGZsb2F0aW5nQ29udGV4dCwgbGF5b3V0Qm94LCBob3Jpem9u
dGFsQ29uc3RyYWludHMsIHZlcnRpY2FsQ29uc3RyYWludHMpOwogICAgICAgICAgICAgICAgICAg
ICBhdXRvJiByb290RGlzcGxheUJveCA9IGdlb21ldHJ5Rm9yQm94KGxheW91dEJveCk7CiAgICAg
ICAgICAgICAgICAgICAgIGF1dG8gaG9yaXpvbnRhbENvbnN0cmFpbnRzRm9yRm9ybWF0dGluZ0Nv
bnRleHQgPSBHZW9tZXRyeTo6aG9yaXpvbnRhbENvbnN0cmFpbnRzRm9ySW5GbG93KHJvb3REaXNw
bGF5Qm94KTsKICAgICAgICAgICAgICAgICAgICAgYXV0byB2ZXJ0aWNhbENvbnN0cmFpbnRzRm9y
Rm9ybWF0dGluZ0NvbnRleHQgPSBHZW9tZXRyeTo6dmVydGljYWxDb25zdHJhaW50c0ZvckluRmxv
dyhyb290RGlzcGxheUJveCk7Ci0gICAgICAgICAgICAgICAgICAgIExheW91dENvbnRleHQ6OmNy
ZWF0ZUZvcm1hdHRpbmdDb250ZXh0KGRvd25jYXN0PENvbnRhaW5lcj4obGF5b3V0Qm94KSwgbGF5
b3V0U3RhdGUoKSktPmxheW91dEluRmxvd0NvbnRlbnQoaW52YWxpZGF0aW9uU3RhdGUsIGhvcml6
b250YWxDb25zdHJhaW50c0ZvckZvcm1hdHRpbmdDb250ZXh0LCB2ZXJ0aWNhbENvbnN0cmFpbnRz
Rm9yRm9ybWF0dGluZ0NvbnRleHQpOworICAgICAgICAgICAgICAgICAgICBMYXlvdXRDb250ZXh0
OjpjcmVhdGVGb3JtYXR0aW5nQ29udGV4dChkb3duY2FzdDxDb250YWluZXJCb3g+KGxheW91dEJv
eCksIGxheW91dFN0YXRlKCkpLT5sYXlvdXRJbkZsb3dDb250ZW50KGludmFsaWRhdGlvblN0YXRl
LCBob3Jpem9udGFsQ29uc3RyYWludHNGb3JGb3JtYXR0aW5nQ29udGV4dCwgdmVydGljYWxDb25z
dHJhaW50c0ZvckZvcm1hdHRpbmdDb250ZXh0KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0xNTAsMTEgKzE1MCwxMSBAQCB2b2lk
IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dEluRmxvd0NvbnRlbnQoSW52YWxpZGF0aW9u
U3RhdGUmIGludmFsaWRhdGlvbgogCiAgICAgICAgICAgICBpZiAobGF5b3V0Qm94LmVzdGFibGlz
aGVzRm9ybWF0dGluZ0NvbnRleHQoKSkgewogICAgICAgICAgICAgICAgIC8vIE5vdyB0aGF0IHdl
IGNvbXB1dGVkIHRoZSByb290J3MgaGVpZ2h0LCB3ZSBjYW4gbGF5b3V0IHRoZSBvdXQtb2YtZmxv
dyBkZXNjZW5kYW50cy4KLSAgICAgICAgICAgICAgICBpZiAoaXM8Q29udGFpbmVyPihsYXlvdXRC
b3gpICYmIGRvd25jYXN0PENvbnRhaW5lcj4obGF5b3V0Qm94KS5oYXNDaGlsZCgpKSB7CisgICAg
ICAgICAgICAgICAgaWYgKGlzPENvbnRhaW5lckJveD4obGF5b3V0Qm94KSAmJiBkb3duY2FzdDxD
b250YWluZXJCb3g+KGxheW91dEJveCkuaGFzQ2hpbGQoKSkgewogICAgICAgICAgICAgICAgICAg
ICBhdXRvJiByb290RGlzcGxheUJveCA9IGdlb21ldHJ5Rm9yQm94KGxheW91dEJveCk7CiAgICAg
ICAgICAgICAgICAgICAgIGF1dG8gaG9yaXpvbnRhbENvbnN0cmFpbnRzRm9yT3V0T2ZGbG93ID0g
IEdlb21ldHJ5Ojpob3Jpem9udGFsQ29uc3RyYWludHNGb3JPdXRPZkZsb3cocm9vdERpc3BsYXlC
b3gpOwogICAgICAgICAgICAgICAgICAgICBhdXRvIHZlcnRpY2FsQ29uc3RyYWludHNGb3JPdXRP
ZkZsb3cgPSBHZW9tZXRyeTo6dmVydGljYWxDb25zdHJhaW50c0Zvck91dE9mRmxvdyhyb290RGlz
cGxheUJveCk7Ci0gICAgICAgICAgICAgICAgICAgIExheW91dENvbnRleHQ6OmNyZWF0ZUZvcm1h
dHRpbmdDb250ZXh0KGRvd25jYXN0PENvbnRhaW5lcj4obGF5b3V0Qm94KSwgbGF5b3V0U3RhdGUo
KSktPmxheW91dE91dE9mRmxvd0NvbnRlbnQoaW52YWxpZGF0aW9uU3RhdGUsIGhvcml6b250YWxD
b25zdHJhaW50c0Zvck91dE9mRmxvdywgdmVydGljYWxDb25zdHJhaW50c0Zvck91dE9mRmxvdyk7
CisgICAgICAgICAgICAgICAgICAgIExheW91dENvbnRleHQ6OmNyZWF0ZUZvcm1hdHRpbmdDb250
ZXh0KGRvd25jYXN0PENvbnRhaW5lckJveD4obGF5b3V0Qm94KSwgbGF5b3V0U3RhdGUoKSktPmxh
eW91dE91dE9mRmxvd0NvbnRlbnQoaW52YWxpZGF0aW9uU3RhdGUsIGhvcml6b250YWxDb25zdHJh
aW50c0Zvck91dE9mRmxvdywgdmVydGljYWxDb25zdHJhaW50c0Zvck91dE9mRmxvdyk7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8gUmVzb2x2ZSBmaW5h
bCBwb3NpdGlvbnMuCkBAIC0yMTIsMTEgKzIxMiwxMSBAQCBPcHRpb25hbDxMYXlvdXRVbml0PiBC
bG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojp1c2VkQXZhaWxhYmxlV2lkdGhGb3JGbG9hdEF2b2lkZXIo
YwogCiB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OnBsYWNlSW5GbG93UG9zaXRpb25lZENo
aWxkcmVuKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBDb25zdHJhaW50c1BhaXI8SG9yaXpv
bnRhbENvbnN0cmFpbnRzPiYgaG9yaXpvbnRhbENvbnN0cmFpbnRzKQogewotICAgIGlmICghaXM8
Q29udGFpbmVyPihsYXlvdXRCb3gpKQorICAgIGlmICghaXM8Q29udGFpbmVyQm94PihsYXlvdXRC
b3gpKQogICAgICAgICByZXR1cm47CiAgICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250
ZXh0TGF5b3V0LCBzdHJlYW0gPDwgIlN0YXJ0OiBtb3ZlIGluLWZsb3cgcG9zaXRpb25lZCBjaGls
ZHJlbiAtPiBwYXJlbnQ6ICIgPDwgJmxheW91dEJveCk7Ci0gICAgYXV0byYgY29udGFpbmVyID0g
ZG93bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRCb3gpOwotICAgIGZvciAoYXV0byYgY2hpbGRCb3gg
OiBjaGlsZHJlbk9mVHlwZTxCb3g+KGNvbnRhaW5lcikpIHsKKyAgICBhdXRvJiBjb250YWluZXJC
b3ggPSBkb3duY2FzdDxDb250YWluZXJCb3g+KGxheW91dEJveCk7CisgICAgZm9yIChhdXRvJiBj
aGlsZEJveCA6IGNoaWxkcmVuT2ZUeXBlPEJveD4oY29udGFpbmVyQm94KSkgewogICAgICAgICBp
ZiAoIWNoaWxkQm94LmlzSW5GbG93UG9zaXRpb25lZCgpKQogICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgIGF1dG8gcG9zaXRpb25PZmZzZXQgPSBnZW9tZXRyeSgpLmluRmxvd1Bvc2l0aW9u
ZWRQb3NpdGlvbk9mZnNldChjaGlsZEJveCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzLmNvbnRhaW5p
bmdCbG9jayk7CkBAIC00NTUsMTEgKzQ1NSwxMSBAQCBGb3JtYXR0aW5nQ29udGV4dDo6SW50cmlu
c2ljV2lkdGhDb25zdHJhaW50cyBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlZEludAog
ICAgIHdoaWxlICghcXVldWUuaXNFbXB0eSgpKSB7CiAgICAgICAgIHdoaWxlICh0cnVlKSB7CiAg
ICAgICAgICAgICBhdXRvJiBsYXlvdXRCb3ggPSAqcXVldWUubGFzdCgpOwotICAgICAgICAgICAg
YXV0byBoYXNJbkZsb3dPckZsb2F0aW5nQ2hpbGQgPSBpczxDb250YWluZXI+KGxheW91dEJveCkg
JiYgZG93bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRCb3gpLmhhc0luRmxvd09yRmxvYXRpbmdDaGls
ZCgpOworICAgICAgICAgICAgYXV0byBoYXNJbkZsb3dPckZsb2F0aW5nQ2hpbGQgPSBpczxDb250
YWluZXJCb3g+KGxheW91dEJveCkgJiYgZG93bmNhc3Q8Q29udGFpbmVyQm94PihsYXlvdXRCb3gp
Lmhhc0luRmxvd09yRmxvYXRpbmdDaGlsZCgpOwogICAgICAgICAgICAgYXV0byBza2lwRGVzY2Vu
ZGFudHMgPSBmb3JtYXR0aW5nU3RhdGUuaW50cmluc2ljV2lkdGhDb25zdHJhaW50c0ZvckJveChs
YXlvdXRCb3gpIHx8ICFoYXNJbkZsb3dPckZsb2F0aW5nQ2hpbGQgfHwgbGF5b3V0Qm94LmVzdGFi
bGlzaGVzRm9ybWF0dGluZ0NvbnRleHQoKSB8fCBsYXlvdXRCb3guc3R5bGUoKS53aWR0aCgpLmlz
Rml4ZWQoKTsKICAgICAgICAgICAgIGlmIChza2lwRGVzY2VuZGFudHMpCiAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICBxdWV1ZS5hcHBlbmQoZG93bmNhc3Q8Q29udGFpbmVyPihs
YXlvdXRCb3gpLmZpcnN0SW5GbG93T3JGbG9hdGluZ0NoaWxkKCkpOworICAgICAgICAgICAgcXVl
dWUuYXBwZW5kKGRvd25jYXN0PENvbnRhaW5lckJveD4obGF5b3V0Qm94KS5maXJzdEluRmxvd09y
RmxvYXRpbmdDaGlsZCgpKTsKICAgICAgICAgfQogICAgICAgICAvLyBDb21wdXRlIG1pbi9tYXgg
aW50cmluc2ljIHdpZHRoIGJvdHRvbSB1cCBpZiBuZWVkZWQuCiAgICAgICAgIHdoaWxlICghcXVl
dWUuaXNFbXB0eSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tm
b3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oCmluZGV4IGFkZWFiNmU2
N2YxODg4ZTcwOTc3YmUwMTk1OTkzOTRkM2UxODI4YzYuLmYxNjcxMDQyNTE3YmY2YTFhZTIyMTUw
YjdmNDIxM2Q2NzNmYWI5MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9j
a2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oCkBAIC00Niw3
ICs0Niw3IEBAIGNsYXNzIEZsb2F0aW5nQ29udGV4dDsKIGNsYXNzIEJsb2NrRm9ybWF0dGluZ0Nv
bnRleHQgZmluYWwgOiBwdWJsaWMgRm9ybWF0dGluZ0NvbnRleHQgewogICAgIFdURl9NQUtFX0lT
T19BTExPQ0FURUQoQmxvY2tGb3JtYXR0aW5nQ29udGV4dCk7CiBwdWJsaWM6Ci0gICAgQmxvY2tG
b3JtYXR0aW5nQ29udGV4dChjb25zdCBDb250YWluZXImIGZvcm1hdHRpbmdDb250ZXh0Um9vdCwg
QmxvY2tGb3JtYXR0aW5nU3RhdGUmKTsKKyAgICBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KGNvbnN0
IENvbnRhaW5lckJveCYgZm9ybWF0dGluZ0NvbnRleHRSb290LCBCbG9ja0Zvcm1hdHRpbmdTdGF0
ZSYpOwogCiAgICAgdm9pZCBsYXlvdXRJbkZsb3dDb250ZW50KEludmFsaWRhdGlvblN0YXRlJiwg
Y29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiwgY29uc3QgVmVydGljYWxDb25zdHJhaW50cyYp
IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3Jt
YXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5j
cHAKaW5kZXggOTliMzg1Njk3NmFjYzNhMjA2NzJlYWY1YjRmNDlkYWRiZjgwM2MyNi4uNDM4MTdh
NGVjYWUyYTE3YTA3YmZlMmFkNGZhYmNlNTU2NzY5YmI5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0
cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tG
b3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcApAQCAtNzAsMTEgKzcwLDExIEBAIENvbnRlbnRI
ZWlnaHRBbmRNYXJnaW4gQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd05v
blJlcGxhY2VkSGVpZ2h0CiAgICAgICAgIGlmIChoZWlnaHQpCiAgICAgICAgICAgICByZXR1cm4g
eyAqaGVpZ2h0LCBub25Db2xsYXBzZWRNYXJnaW4gfTsKIAotICAgICAgICBpZiAoIWlzPENvbnRh
aW5lcj4obGF5b3V0Qm94KSB8fCAhZG93bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRCb3gpLmhhc0lu
Rmxvd0NoaWxkKCkpCisgICAgICAgIGlmICghaXM8Q29udGFpbmVyQm94PihsYXlvdXRCb3gpIHx8
ICFkb3duY2FzdDxDb250YWluZXJCb3g+KGxheW91dEJveCkuaGFzSW5GbG93Q2hpbGQoKSkKICAg
ICAgICAgICAgIHJldHVybiB7IDAsIG5vbkNvbGxhcHNlZE1hcmdpbiB9OwogCiAgICAgICAgIC8v
IDEuIHRoZSBib3R0b20gZWRnZSBvZiB0aGUgbGFzdCBsaW5lIGJveCwgaWYgdGhlIGJveCBlc3Rh
Ymxpc2hlcyBhIGlubGluZSBmb3JtYXR0aW5nIGNvbnRleHQgd2l0aCBvbmUgb3IgbW9yZSBsaW5l
cwotICAgICAgICBhdXRvJiBsYXlvdXRDb250YWluZXIgPSBkb3duY2FzdDxDb250YWluZXI+KGxh
eW91dEJveCk7CisgICAgICAgIGF1dG8mIGxheW91dENvbnRhaW5lciA9IGRvd25jYXN0PENvbnRh
aW5lckJveD4obGF5b3V0Qm94KTsKICAgICAgICAgaWYgKGxheW91dENvbnRhaW5lci5lc3RhYmxp
c2hlc0lubGluZUZvcm1hdHRpbmdDb250ZXh0KCkpIHsKICAgICAgICAgICAgIGF1dG8mIGxpbmVC
b3hlcyA9IGxheW91dFN0YXRlKCkuZXN0YWJsaXNoZWRJbmxpbmVGb3JtYXR0aW5nU3RhdGUobGF5
b3V0Q29udGFpbmVyKS5kaXNwbGF5SW5saW5lQ29udGVudCgpLT5saW5lQm94ZXM7CiAgICAgICAg
ICAgICAvLyBFdmVuIGVtcHR5IGNvbnRhaW5lcnMgZ2VuZXJhdGUgb25lIGxpbmUuIApAQCAtMzIx
LDE1ICszMjEsMTUgQEAgRm9ybWF0dGluZ0NvbnRleHQ6OkludHJpbnNpY1dpZHRoQ29uc3RyYWlu
dHMgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmkKICAgICAgICAgICAgIHJldHVy
biB7IH07CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIWlzPENvbnRhaW5lcj4obGF5b3V0Qm94
KSB8fCAhZG93bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRCb3gpLmhhc0luRmxvd09yRmxvYXRpbmdD
aGlsZCgpKQorICAgICAgICBpZiAoIWlzPENvbnRhaW5lckJveD4obGF5b3V0Qm94KSB8fCAhZG93
bmNhc3Q8Q29udGFpbmVyQm94PihsYXlvdXRCb3gpLmhhc0luRmxvd09yRmxvYXRpbmdDaGlsZCgp
KQogICAgICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgICAgICBpZiAobGF5b3V0Qm94LmVzdGFi
bGlzaGVzRm9ybWF0dGluZ0NvbnRleHQoKSkKLSAgICAgICAgICAgIHJldHVybiBMYXlvdXRDb250
ZXh0OjpjcmVhdGVGb3JtYXR0aW5nQ29udGV4dChkb3duY2FzdDxDb250YWluZXI+KGxheW91dEJv
eCksIGxheW91dFN0YXRlKCkpLT5jb21wdXRlZEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMoKTsK
KyAgICAgICAgICAgIHJldHVybiBMYXlvdXRDb250ZXh0OjpjcmVhdGVGb3JtYXR0aW5nQ29udGV4
dChkb3duY2FzdDxDb250YWluZXJCb3g+KGxheW91dEJveCksIGxheW91dFN0YXRlKCkpLT5jb21w
dXRlZEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMoKTsKIAogICAgICAgICBhdXRvIGludHJpbnNp
Y1dpZHRoQ29uc3RyYWludHMgPSBJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzIHsgfTsKICAgICAg
ICAgYXV0byYgZm9ybWF0dGluZ1N0YXRlID0gbGF5b3V0U3RhdGUoKS5mb3JtYXR0aW5nU3RhdGVG
b3JCb3gobGF5b3V0Qm94KTsKLSAgICAgICAgZm9yIChhdXRvJiBjaGlsZCA6IGNoaWxkcmVuT2ZU
eXBlPEJveD4oZG93bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRCb3gpKSkgeworICAgICAgICBmb3Ig
KGF1dG8mIGNoaWxkIDogY2hpbGRyZW5PZlR5cGU8Qm94Pihkb3duY2FzdDxDb250YWluZXJCb3g+
KGxheW91dEJveCkpKSB7CiAgICAgICAgICAgICBpZiAoY2hpbGQuaXNPdXRPZkZsb3dQb3NpdGlv
bmVkKCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBhdXRvIGNoaWxk
SW50cmluc2ljV2lkdGhDb25zdHJhaW50cyA9IGZvcm1hdHRpbmdTdGF0ZS5pbnRyaW5zaWNXaWR0
aENvbnN0cmFpbnRzRm9yQm94KGNoaWxkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRl
eHRRdWlya3MuY3BwCmluZGV4IGNiM2NmM2NjZWIzODM3OGQ1MGNlOWRmZDAwMDQyYTY4YzgwNjVi
ZjIuLmQwM2JhMTU5ODViNWYxOWZmNzUzZTFiMjAyOGY1NGIwNDg4YjJiYTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dFF1aXJrcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGlu
Zy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNwcApAQCAtMzEsMTMgKzMxLDEzIEBACiAj
aW5jbHVkZSAiQmxvY2tGb3JtYXR0aW5nU3RhdGUuaCIKICNpbmNsdWRlICJEaXNwbGF5Qm94Lmgi
CiAjaW5jbHVkZSAiTGF5b3V0Qm94LmgiCi0jaW5jbHVkZSAiTGF5b3V0Q29udGFpbmVyLmgiCisj
aW5jbHVkZSAiTGF5b3V0Q29udGFpbmVyQm94LmgiCiAjaW5jbHVkZSAiTGF5b3V0U3RhdGUuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIExheW91dCB7CiAKLXN0YXRpYyBjb25z
dCBDb250YWluZXImIGluaXRpYWxDb250YWluaW5nQmxvY2soY29uc3QgQm94JiBsYXlvdXRCb3gp
CitzdGF0aWMgY29uc3QgQ29udGFpbmVyQm94JiBpbml0aWFsQ29udGFpbmluZ0Jsb2NrKGNvbnN0
IEJveCYgbGF5b3V0Qm94KQogewogICAgIGF1dG8qIGNvbnRhaW5pbmdCbG9jayA9IGxheW91dEJv
eC5jb250YWluaW5nQmxvY2soKTsKICAgICB3aGlsZSAoY29udGFpbmluZ0Jsb2NrLT5jb250YWlu
aW5nQmxvY2soKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1h
dHRpbmcvQmxvY2tNYXJnaW5Db2xsYXBzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxv
Y2tmb3JtYXR0aW5nL0Jsb2NrTWFyZ2luQ29sbGFwc2UuY3BwCmluZGV4IDdjZjgyZGM2N2ZjOGE4
YTgyYWMyNjg3ZGY1NTI5YTA4Y2Q3OWE5ZTYuLjZlM2I2ZmUxODgzZWZhMjVkMTI5ZDUwZjdlMjgx
YTFiZjViOGQ4MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1h
dHRpbmcvQmxvY2tNYXJnaW5Db2xsYXBzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Jsb2NrZm9ybWF0dGluZy9CbG9ja01hcmdpbkNvbGxhcHNlLmNwcApAQCAtMzIsNyArMzIsNyBA
QAogI2luY2x1ZGUgIkZsb2F0aW5nU3RhdGUuaCIKICNpbmNsdWRlICJJbmxpbmVGb3JtYXR0aW5n
U3RhdGUuaCIKICNpbmNsdWRlICJMYXlvdXRCb3guaCIKLSNpbmNsdWRlICJMYXlvdXRDb250YWlu
ZXIuaCIKKyNpbmNsdWRlICJMYXlvdXRDb250YWluZXJCb3guaCIKICNpbmNsdWRlICJMYXlvdXRV
bml0LmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKIApAQCAtMTk1LDEwICsxOTUsMTAgQEAg
Ym9vbCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW5Db2xsYXBzZTo6bWFyZ2luQmVmb3Jl
Q29sbGFwc2VzV2l0aEZpcnN0SW5GbG8KICAgICBpZiAoaGFzUGFkZGluZ0JlZm9yZShsYXlvdXRC
b3gpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoIWlzPENvbnRhaW5lcj4obGF5
b3V0Qm94KSB8fCAhZG93bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRCb3gpLmhhc0luRmxvd0NoaWxk
KCkpCisgICAgaWYgKCFpczxDb250YWluZXJCb3g+KGxheW91dEJveCkgfHwgIWRvd25jYXN0PENv
bnRhaW5lckJveD4obGF5b3V0Qm94KS5oYXNJbkZsb3dDaGlsZCgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICBhdXRvJiBmaXJzdEluRmxvd0NoaWxkID0gKmRvd25jYXN0PENvbnRhaW5l
cj4obGF5b3V0Qm94KS5maXJzdEluRmxvd0NoaWxkKCk7CisgICAgYXV0byYgZmlyc3RJbkZsb3dD
aGlsZCA9ICpkb3duY2FzdDxDb250YWluZXJCb3g+KGxheW91dEJveCkuZmlyc3RJbkZsb3dDaGls
ZCgpOwogICAgIGlmICghZmlyc3RJbkZsb3dDaGlsZC5pc0Jsb2NrTGV2ZWxCb3goKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCkBAIC0zMDQsMTAgKzMwNCwxMCBAQCBib29sIEJsb2NrRm9ybWF0
dGluZ0NvbnRleHQ6Ok1hcmdpbkNvbGxhcHNlOjptYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhMYXN0
SW5GbG93QwogICAgIGlmIChlc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQobGF5b3V0
Qm94KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKCFpczxDb250YWluZXI+KGxh
eW91dEJveCkgfHwgIWRvd25jYXN0PENvbnRhaW5lcj4obGF5b3V0Qm94KS5oYXNJbkZsb3dDaGls
ZCgpKQorICAgIGlmICghaXM8Q29udGFpbmVyQm94PihsYXlvdXRCb3gpIHx8ICFkb3duY2FzdDxD
b250YWluZXJCb3g+KGxheW91dEJveCkuaGFzSW5GbG93Q2hpbGQoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgYXV0byYgbGFzdEluRmxvd0NoaWxkID0gKmRvd25jYXN0PENvbnRhaW5l
cj4obGF5b3V0Qm94KS5sYXN0SW5GbG93Q2hpbGQoKTsKKyAgICBhdXRvJiBsYXN0SW5GbG93Q2hp
bGQgPSAqZG93bmNhc3Q8Q29udGFpbmVyQm94PihsYXlvdXRCb3gpLmxhc3RJbkZsb3dDaGlsZCgp
OwogICAgIGlmICghbGFzdEluRmxvd0NoaWxkLmlzQmxvY2tMZXZlbEJveCgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKQEAgLTM4MCwxMCArMzgwLDEwIEBAIGJvb2wgQmxvY2tGb3JtYXR0aW5n
Q29udGV4dDo6TWFyZ2luQ29sbGFwc2U6Om1hcmdpbnNDb2xsYXBzZVRocm91Z2goY29uc3QgQm94
JiBsCiAgICAgaWYgKGxheW91dEJveC5pc1JlcGxhY2VkQm94KCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIGlmICghaXM8Q29udGFpbmVyPihsYXlvdXRCb3gpKQorICAgIGlmICghaXM8
Q29udGFpbmVyQm94PihsYXlvdXRCb3gpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlm
ICghZG93bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRCb3gpLmhhc0luRmxvd0NoaWxkKCkpCisgICAg
aWYgKCFkb3duY2FzdDxDb250YWluZXJCb3g+KGxheW91dEJveCkuaGFzSW5GbG93Q2hpbGQoKSkK
ICAgICAgICAgcmV0dXJuICFlc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQobGF5b3V0
Qm94KTsKIAogICAgIGlmIChsYXlvdXRCb3guZXN0YWJsaXNoZXNGb3JtYXR0aW5nQ29udGV4dCgp
KSB7CkBAIC0zOTEsMTIgKzM5MSwxMiBAQCBib29sIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1h
cmdpbkNvbGxhcHNlOjptYXJnaW5zQ29sbGFwc2VUaHJvdWdoKGNvbnN0IEJveCYgbAogICAgICAg
ICAgICAgYXV0byYgbGF5b3V0U3RhdGUgPSB0aGlzLT5sYXlvdXRTdGF0ZSgpOwogICAgICAgICAg
ICAgLy8gSWYgd2UgZ2V0IGhlcmUgdGhyb3VnaCBtYXJnaW4gZXN0aW1hdGlvbiwgd2UgZG9uJ3Qg
bmVjZXNzYXJpbHkgaGF2ZSBhbiBhY3R1YWwgc3RhdGUgZm9yIHRoaXMgbGF5b3V0IGJveCBzaW5j
ZQogICAgICAgICAgICAgLy8gd2UgaGF2ZW4ndCBzdGFydGVkIGxheWluZyBpdCBvdXQgeWV0Lgot
ICAgICAgICAgICAgYXV0byYgbGF5b3V0Q29udGFpbmVyID0gZG93bmNhc3Q8Q29udGFpbmVyPihs
YXlvdXRCb3gpOwotICAgICAgICAgICAgaWYgKCFsYXlvdXRTdGF0ZS5oYXNJbmxpbmVGb3JtYXR0
aW5nU3RhdGUobGF5b3V0Q29udGFpbmVyKSkKKyAgICAgICAgICAgIGF1dG8mIGNvbnRhaW5lckJv
eCA9IGRvd25jYXN0PENvbnRhaW5lckJveD4obGF5b3V0Qm94KTsKKyAgICAgICAgICAgIGlmICgh
bGF5b3V0U3RhdGUuaGFzSW5saW5lRm9ybWF0dGluZ1N0YXRlKGNvbnRhaW5lckJveCkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgICAgICBhdXRvIGlzQ29uc2lkZXJl
ZEVtcHR5ID0gWyZdIHsKLSAgICAgICAgICAgICAgICBhdXRvJiBmb3JtYXR0aW5nU3RhdGUgPSBs
YXlvdXRTdGF0ZS5lc3RhYmxpc2hlZElubGluZUZvcm1hdHRpbmdTdGF0ZShsYXlvdXRDb250YWlu
ZXIpOworICAgICAgICAgICAgICAgIGF1dG8mIGZvcm1hdHRpbmdTdGF0ZSA9IGxheW91dFN0YXRl
LmVzdGFibGlzaGVkSW5saW5lRm9ybWF0dGluZ1N0YXRlKGNvbnRhaW5lckJveCk7CiAgICAgICAg
ICAgICAgICAgaWYgKGF1dG8qIGlubGluZUNvbnRlbnQgPSBmb3JtYXR0aW5nU3RhdGUuZGlzcGxh
eUlubGluZUNvbnRlbnQoKSkgewogICAgICAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIGxpbmVC
b3ggOiBpbmxpbmVDb250ZW50LT5saW5lQm94ZXMpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
IGlmICghbGluZUJveC5pc0NvbnNpZGVyZWRFbXB0eSgpKQpAQCAtNDA2LDcgKzQwNiw3IEBAIGJv
b2wgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6TWFyZ2luQ29sbGFwc2U6Om1hcmdpbnNDb2xsYXBz
ZVRocm91Z2goY29uc3QgQm94JiBsCiAgICAgICAgICAgICAgICAgLy8gQW55IGZsb2F0IGJveCBp
biB0aGlzIGZvcm1hdHRpbmcgY29udGV4dCBwcmV2ZW50cyBjb2xsYXBzaW5nIHRocm91Z2guCiAg
ICAgICAgICAgICAgICAgYXV0byYgZmxvYXRzID0gZm9ybWF0dGluZ1N0YXRlLmZsb2F0aW5nU3Rh
dGUoKS5mbG9hdHMoKTsKICAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIGZsb2F0SXRlbSA6IGZs
b2F0cykgewotICAgICAgICAgICAgICAgICAgICBpZiAoZmxvYXRJdGVtLmlzRGVzY2VuZGFudE9m
Rm9ybWF0dGluZ1Jvb3QobGF5b3V0Q29udGFpbmVyKSkKKyAgICAgICAgICAgICAgICAgICAgaWYg
KGZsb2F0SXRlbS5pc0Rlc2NlbmRhbnRPZkZvcm1hdHRpbmdSb290KGNvbnRhaW5lckJveCkpCiAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNDE4LDcgKzQxOCw3IEBAIGJvb2wgQmxv
Y2tGb3JtYXR0aW5nQ29udGV4dDo6TWFyZ2luQ29sbGFwc2U6Om1hcmdpbnNDb2xsYXBzZVRocm91
Z2goY29uc3QgQm94JiBsCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBmb3Ig
KGF1dG8qIGluZmxvd0NoaWxkID0gZG93bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRCb3gpLmZpcnN0
SW5GbG93T3JGbG9hdGluZ0NoaWxkKCk7IGluZmxvd0NoaWxkOyBpbmZsb3dDaGlsZCA9IGluZmxv
d0NoaWxkLT5uZXh0SW5GbG93T3JGbG9hdGluZ1NpYmxpbmcoKSkgeworICAgIGZvciAoYXV0byog
aW5mbG93Q2hpbGQgPSBkb3duY2FzdDxDb250YWluZXJCb3g+KGxheW91dEJveCkuZmlyc3RJbkZs
b3dPckZsb2F0aW5nQ2hpbGQoKTsgaW5mbG93Q2hpbGQ7IGluZmxvd0NoaWxkID0gaW5mbG93Q2hp
bGQtPm5leHRJbkZsb3dPckZsb2F0aW5nU2libGluZygpKSB7CiAgICAgICAgIGlmIChlc3RhYmxp
c2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoKmluZmxvd0NoaWxkKSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgaWYgKCFtYXJnaW5zQ29sbGFwc2VUaHJvdWdoKCppbmZsb3dD
aGlsZCkpCkBAIC01MjcsNyArNTI3LDcgQEAgUG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFy
Z2luOjpWYWx1ZXMgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6TWFyZ2luQ29sbGFwc2UKICAgICBh
dXRvIGZpcnN0Q2hpbGRDb2xsYXBzZWRNYXJnaW5CZWZvcmUgPSBbJl0oKSAtPiBQb3NpdGl2ZUFu
ZE5lZ2F0aXZlVmVydGljYWxNYXJnaW46OlZhbHVlcyB7CiAgICAgICAgIGlmICghbWFyZ2luQmVm
b3JlQ29sbGFwc2VzV2l0aEZpcnN0SW5GbG93Q2hpbGRNYXJnaW5CZWZvcmUobGF5b3V0Qm94KSkK
ICAgICAgICAgICAgIHJldHVybiB7IH07Ci0gICAgICAgIHJldHVybiBwb3NpdGl2ZU5lZ2F0aXZl
VmFsdWVzKCpkb3duY2FzdDxDb250YWluZXI+KGxheW91dEJveCkuZmlyc3RJbkZsb3dDaGlsZCgp
LCBNYXJnaW5UeXBlOjpCZWZvcmUpOworICAgICAgICByZXR1cm4gcG9zaXRpdmVOZWdhdGl2ZVZh
bHVlcygqZG93bmNhc3Q8Q29udGFpbmVyQm94PihsYXlvdXRCb3gpLmZpcnN0SW5GbG93Q2hpbGQo
KSwgTWFyZ2luVHlwZTo6QmVmb3JlKTsKICAgICB9OwogCiAgICAgYXV0byBwcmV2aW91U2libGlu
Z0NvbGxhcHNlZE1hcmdpbkFmdGVyID0gWyZdKCkgLT4gUG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRp
Y2FsTWFyZ2luOjpWYWx1ZXMgewpAQCAtNTU3LDcgKzU1Nyw3IEBAIFBvc2l0aXZlQW5kTmVnYXRp
dmVWZXJ0aWNhbE1hcmdpbjo6VmFsdWVzIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbkNv
bGxhcHNlCiAgICAgYXV0byBsYXN0Q2hpbGRDb2xsYXBzZWRNYXJnaW5BZnRlciA9IFsmXSgpIC0+
IFBvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdpbjo6VmFsdWVzIHsKICAgICAgICAgaWYg
KCFtYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhMYXN0SW5GbG93Q2hpbGRNYXJnaW5BZnRlcihsYXlv
dXRCb3gpKQogICAgICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICAgICAgcmV0dXJuIHBvc2l0aXZl
TmVnYXRpdmVWYWx1ZXMoKmRvd25jYXN0PENvbnRhaW5lcj4obGF5b3V0Qm94KS5sYXN0SW5GbG93
Q2hpbGQoKSwgTWFyZ2luVHlwZTo6QWZ0ZXIpOworICAgICAgICByZXR1cm4gcG9zaXRpdmVOZWdh
dGl2ZVZhbHVlcygqZG93bmNhc3Q8Q29udGFpbmVyQm94PihsYXlvdXRCb3gpLmxhc3RJbkZsb3dD
aGlsZCgpLCBNYXJnaW5UeXBlOjpBZnRlcik7CiAgICAgfTsKIAogICAgIC8vIFdlIGRvbid0IGtu
b3cgeWV0IHRoZSBtYXJnaW4gYmVmb3JlIHZhbHVlIG9mIHRoZSBuZXh0IHNpYmxpbmcuIExldCdz
IGp1c3QgcHJldGVuZCBpdCBkb2VzIG5vdCBoYXZlIG9uZSBhbmQgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheVBhaW50ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlQYWludGVyLmNwcAppbmRleCA1NmNk
NTlhNTQzYmE3OTgwMWYwNmE2YzJjNTE1NmVkZWIwZGM4NzVkLi4zMWZlMjQ1OGE2ZjZmYjE5ZjU2
MTNlN2RjY2Y4MTFhM2MxMzY4ZTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
ZGlzcGxheXRyZWUvRGlzcGxheVBhaW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9kaXNwbGF5dHJlZS9EaXNwbGF5UGFpbnRlci5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNs
dWRlICJJbmxpbmVGb3JtYXR0aW5nU3RhdGUuaCIKICNpbmNsdWRlICJJbmxpbmVUZXh0SXRlbS5o
IgogI2luY2x1ZGUgIkludFJlY3QuaCIKLSNpbmNsdWRlICJMYXlvdXRDb250YWluZXIuaCIKKyNp
bmNsdWRlICJMYXlvdXRDb250YWluZXJCb3guaCIKICNpbmNsdWRlICJMYXlvdXREZXNjZW5kYW50
SXRlcmF0b3IuaCIKICNpbmNsdWRlICJMYXlvdXRTdGF0ZS5oIgogI2luY2x1ZGUgIlJlbmRlclN0
eWxlLmgiCkBAIC0xNTIsOCArMTUyLDggQEAgc3RhdGljIEJveCBhYnNvbHV0ZURpc3BsYXlCb3go
Y29uc3QgTGF5b3V0OjpMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IExheW8KICAgICAg
ICAgcmV0dXJuIGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94KTsK
IAogICAgIGF1dG8gYWJzb2x1dGVCb3ggPSBCb3ggeyBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9y
TGF5b3V0Qm94KGxheW91dEJveCkgfTsKLSAgICBmb3IgKGF1dG8qIGNvbnRhaW5lciA9IGxheW91
dEJveC5jb250YWluaW5nQmxvY2soKTsgY29udGFpbmVyICE9ICZsYXlvdXRCb3guaW5pdGlhbENv
bnRhaW5pbmdCbG9jaygpOyBjb250YWluZXIgPSBjb250YWluZXItPmNvbnRhaW5pbmdCbG9jaygp
KQotICAgICAgICBhYnNvbHV0ZUJveC5tb3ZlQnkobGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxh
eW91dEJveCgqY29udGFpbmVyKS50b3BMZWZ0KCkpOworICAgIGZvciAoYXV0byogY29udGFpbmVy
Qm94ID0gbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpOyBjb250YWluZXJCb3ggIT0gJmxheW91
dEJveC5pbml0aWFsQ29udGFpbmluZ0Jsb2NrKCk7IGNvbnRhaW5lckJveCA9IGNvbnRhaW5lckJv
eC0+Y29udGFpbmluZ0Jsb2NrKCkpCisgICAgICAgIGFic29sdXRlQm94Lm1vdmVCeShsYXlvdXRT
dGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpjb250YWluZXJCb3gpLnRvcExlZnQoKSk7CiAg
ICAgcmV0dXJuIGFic29sdXRlQm94OwogfQogCkBAIC0xODIsMjYgKzE4MiwyNiBAQCBzdGF0aWMg
dm9pZCBwYWludFN1YnRyZWUoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdXQ6
OkxheW91dFN0YXRlJiBsYQogICAgICAgICB9CiAgICAgICAgIC8vIE9ubHkgaW5saW5lIGNvbnRl
bnQgZm9yIG5vdy4KICAgICAgICAgaWYgKGxheW91dEJveC5lc3RhYmxpc2hlc0lubGluZUZvcm1h
dHRpbmdDb250ZXh0KCkpIHsKLSAgICAgICAgICAgIGF1dG8mIGNvbnRhaW5lciA9IGRvd25jYXN0
PExheW91dDo6Q29udGFpbmVyPihsYXlvdXRCb3gpOwotICAgICAgICAgICAgcGFpbnRJbmxpbmVD
b250ZW50KGNvbnRleHQsIGFic29sdXRlRGlzcGxheUJveC50b3BMZWZ0KCksIGxheW91dFN0YXRl
LmVzdGFibGlzaGVkSW5saW5lRm9ybWF0dGluZ1N0YXRlKGNvbnRhaW5lcikpOworICAgICAgICAg
ICAgYXV0byYgY29udGFpbmVyQm94ID0gZG93bmNhc3Q8TGF5b3V0OjpDb250YWluZXJCb3g+KGxh
eW91dEJveCk7CisgICAgICAgICAgICBwYWludElubGluZUNvbnRlbnQoY29udGV4dCwgYWJzb2x1
dGVEaXNwbGF5Qm94LnRvcExlZnQoKSwgbGF5b3V0U3RhdGUuZXN0YWJsaXNoZWRJbmxpbmVGb3Jt
YXR0aW5nU3RhdGUoY29udGFpbmVyQm94KSk7CiAgICAgICAgIH0KICAgICB9OwogCiAgICAgcGFp
bnQocGFpbnRSb290Qm94KTsKLSAgICBpZiAoIWlzPExheW91dDo6Q29udGFpbmVyPihwYWludFJv
b3RCb3gpIHx8ICFkb3duY2FzdDxMYXlvdXQ6OkNvbnRhaW5lcj4ocGFpbnRSb290Qm94KS5oYXND
aGlsZCgpKQorICAgIGlmICghaXM8TGF5b3V0OjpDb250YWluZXJCb3g+KHBhaW50Um9vdEJveCkg
fHwgIWRvd25jYXN0PExheW91dDo6Q29udGFpbmVyQm94PihwYWludFJvb3RCb3gpLmhhc0NoaWxk
KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIExheW91dEJveExpc3QgbGF5b3V0Qm94TGlzdDsK
LSAgICBsYXlvdXRCb3hMaXN0LmFwcGVuZChkb3duY2FzdDxMYXlvdXQ6OkNvbnRhaW5lcj4ocGFp
bnRSb290Qm94KS5maXJzdENoaWxkKCkpOworICAgIGxheW91dEJveExpc3QuYXBwZW5kKGRvd25j
YXN0PExheW91dDo6Q29udGFpbmVyQm94PihwYWludFJvb3RCb3gpLmZpcnN0Q2hpbGQoKSk7CiAg
ICAgd2hpbGUgKCFsYXlvdXRCb3hMaXN0LmlzRW1wdHkoKSkgewogICAgICAgICB3aGlsZSAodHJ1
ZSkgewogICAgICAgICAgICAgYXV0byYgbGF5b3V0Qm94ID0gKmxheW91dEJveExpc3QubGFzdCgp
OwogICAgICAgICAgICAgaWYgKGlzUGFpbnRSb290Q2FuZGlkYXRlKGxheW91dEJveCkpCiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBwYWludChsYXlvdXRCb3gpOwotICAgICAg
ICAgICAgaWYgKCFpczxMYXlvdXQ6OkNvbnRhaW5lcj4obGF5b3V0Qm94KSB8fCAhZG93bmNhc3Q8
TGF5b3V0OjpDb250YWluZXI+KGxheW91dEJveCkuaGFzQ2hpbGQoKSkKKyAgICAgICAgICAgIGlm
ICghaXM8TGF5b3V0OjpDb250YWluZXJCb3g+KGxheW91dEJveCkgfHwgIWRvd25jYXN0PExheW91
dDo6Q29udGFpbmVyQm94PihsYXlvdXRCb3gpLmhhc0NoaWxkKCkpCiAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICBsYXlvdXRCb3hMaXN0LmFwcGVuZChkb3duY2FzdDxMYXlvdXQ6
OkNvbnRhaW5lcj4obGF5b3V0Qm94KS5maXJzdENoaWxkKCkpOworICAgICAgICAgICAgbGF5b3V0
Qm94TGlzdC5hcHBlbmQoZG93bmNhc3Q8TGF5b3V0OjpDb250YWluZXJCb3g+KGxheW91dEJveCku
Zmlyc3RDaGlsZCgpKTsKICAgICAgICAgfQogICAgICAgICB3aGlsZSAoIWxheW91dEJveExpc3Qu
aXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBhdXRvJiBsYXlvdXRCb3ggPSAqbGF5b3V0Qm94TGlz
dC50YWtlTGFzdCgpOwpAQCAtMjQwLDkgKzI0MCw5IEBAIHN0YXRpYyBMYXlvdXRSZWN0IGNvbGxl
Y3RQYWludFJvb3RzQW5kQ29udGVudFJlY3QoY29uc3QgTGF5b3V0OjpMYXlvdXRTdGF0ZSYgbGF5
CiAgICAgICAgICAgICBpZiAoaXNQYWludFJvb3RDYW5kaWRhdGUobGF5b3V0Qm94KSkKICAgICAg
ICAgICAgICAgICBhcHBlbmRQYWludFJvb3QobGF5b3V0Qm94KTsKICAgICAgICAgICAgIGNvbnRl
bnRSZWN0LnVuaXRlSWZOb25aZXJvKERpc3BsYXk6OmFic29sdXRlRGlzcGxheUJveChsYXlvdXRT
dGF0ZSwgbGF5b3V0Qm94KS5yZWN0KCkpOwotICAgICAgICAgICAgaWYgKCFpczxMYXlvdXQ6OkNv
bnRhaW5lcj4obGF5b3V0Qm94KSB8fCAhZG93bmNhc3Q8TGF5b3V0OjpDb250YWluZXI+KGxheW91
dEJveCkuaGFzQ2hpbGQoKSkKKyAgICAgICAgICAgIGlmICghaXM8TGF5b3V0OjpDb250YWluZXJC
b3g+KGxheW91dEJveCkgfHwgIWRvd25jYXN0PExheW91dDo6Q29udGFpbmVyQm94PihsYXlvdXRC
b3gpLmhhc0NoaWxkKCkpCiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBsYXlv
dXRCb3hMaXN0LmFwcGVuZChkb3duY2FzdDxMYXlvdXQ6OkNvbnRhaW5lcj4obGF5b3V0Qm94KS5m
aXJzdENoaWxkKCkpOworICAgICAgICAgICAgbGF5b3V0Qm94TGlzdC5hcHBlbmQoZG93bmNhc3Q8
TGF5b3V0OjpDb250YWluZXJCb3g+KGxheW91dEJveCkuZmlyc3RDaGlsZCgpKTsKICAgICAgICAg
fQogICAgICAgICB3aGlsZSAoIWxheW91dEJveExpc3QuaXNFbXB0eSgpKSB7CiAgICAgICAgICAg
ICBhdXRvJiBsYXlvdXRCb3ggPSAqbGF5b3V0Qm94TGlzdC50YWtlTGFzdCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdEF2b2lkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdEF2b2lkZXIuY3BwCmluZGV4IGM3NDk4MzBmODA0
ZGQwYmNmNTUxODQyNzA4MzM4NzM2YjJjOWQxODEuLmU3NzA5NmNmZGI3Y2MzOTIzMWNlNTFiZTY3
NGQ0NTgxMjc5NjU5YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMv
RmxvYXRBdm9pZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0
QXZvaWRlci5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJ
TkdfQ09OVEVYVCkKIAogI2luY2x1ZGUgIkxheW91dEJveC5oIgotI2luY2x1ZGUgIkxheW91dENv
bnRhaW5lci5oIgorI2luY2x1ZGUgIkxheW91dENvbnRhaW5lckJveC5oIgogI2luY2x1ZGUgPHd0
Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdDb250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdDb250ZXh0LmNwcAppbmRleCA5N2QxMTg1
MzAyZTVjYWRhOTYyOGQyMjU3MjFmZmU5OGM0MDRiZGNhLi4yMTAwM2I4OGJlZGQ2NjRmOThhNzkw
NzY3NjRjMDg1ZDczNGJiMjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxv
YXRzL0Zsb2F0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0
cy9GbG9hdGluZ0NvbnRleHQuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSAiRmxvYXRC
b3guaCIKICNpbmNsdWRlICJGb3JtYXR0aW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIkxheW91dEJv
eC5oIgotI2luY2x1ZGUgIkxheW91dENvbnRhaW5lci5oIgorI2luY2x1ZGUgIkxheW91dENvbnRh
aW5lckJveC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTE1NSw3ICsxNTUsNyBAQCBzdHJ1Y3QgRmxvYXRpbmdDb250ZXh0OjpB
YnNvbHV0ZUNvb3JkaW5hdGVWYWx1ZXNGb3JGbG9hdEF2b2lkZXIgewogICAgIEhvcml6b250YWxF
ZGdlcyBjb250YWluaW5nQmxvY2tDb250ZW50Qm94OwogfTsKIAotRmxvYXRpbmdDb250ZXh0OjpG
bG9hdGluZ0NvbnRleHQoY29uc3QgQ29udGFpbmVyJiBmbG9hdGluZ0NvbnRleHRSb290LCBjb25z
dCBGb3JtYXR0aW5nQ29udGV4dCYgZm9ybWF0dGluZ0NvbnRleHQsIEZsb2F0aW5nU3RhdGUmIGZs
b2F0aW5nU3RhdGUpCitGbG9hdGluZ0NvbnRleHQ6OkZsb2F0aW5nQ29udGV4dChjb25zdCBDb250
YWluZXJCb3gmIGZsb2F0aW5nQ29udGV4dFJvb3QsIGNvbnN0IEZvcm1hdHRpbmdDb250ZXh0JiBm
b3JtYXR0aW5nQ29udGV4dCwgRmxvYXRpbmdTdGF0ZSYgZmxvYXRpbmdTdGF0ZSkKICAgICA6IG1f
cm9vdChtYWtlV2Vha1B0cihmbG9hdGluZ0NvbnRleHRSb290KSkKICAgICAsIG1fZm9ybWF0dGlu
Z0NvbnRleHQoZm9ybWF0dGluZ0NvbnRleHQpCiAgICAgLCBtX2Zsb2F0aW5nU3RhdGUoZmxvYXRp
bmdTdGF0ZSkKQEAgLTQ0Niw4ICs0NDYsOCBAQCBMYXlvdXRVbml0IEZsb2F0aW5nQ29udGV4dDo6
bWFwVG9wVG9GbG9hdGluZ1N0YXRlUm9vdChjb25zdCBCb3gmIGZsb2F0Qm94KSBjb25zdAogewog
ICAgIGF1dG8mIGZsb2F0aW5nU3RhdGVSb290ID0gZmxvYXRpbmdTdGF0ZSgpLnJvb3QoKTsKICAg
ICBhdXRvIHRvcCA9IGZvcm1hdHRpbmdDb250ZXh0KCkuZ2VvbWV0cnlGb3JCb3goZmxvYXRCb3gs
IEZvcm1hdHRpbmdDb250ZXh0OjpFc2NhcGVSZWFzb246OkZsb2F0Qm94TmVlZHNUb0JlSW5BYnNv
bHV0ZUNvb3JkaW5hdGVzKS50b3AoKTsKLSAgICBmb3IgKGF1dG8qIGNvbnRhaW5lciA9IGZsb2F0
Qm94LmNvbnRhaW5pbmdCbG9jaygpOyBjb250YWluZXIgJiYgY29udGFpbmVyICE9ICZmbG9hdGlu
Z1N0YXRlUm9vdDsgY29udGFpbmVyID0gY29udGFpbmVyLT5jb250YWluaW5nQmxvY2soKSkKLSAg
ICAgICAgdG9wICs9IGZvcm1hdHRpbmdDb250ZXh0KCkuZ2VvbWV0cnlGb3JCb3goKmNvbnRhaW5l
ciwgRm9ybWF0dGluZ0NvbnRleHQ6OkVzY2FwZVJlYXNvbjo6RmxvYXRCb3hOZWVkc1RvQmVJbkFi
c29sdXRlQ29vcmRpbmF0ZXMpLnRvcCgpOworICAgIGZvciAoYXV0byogY29udGFpbmVyQm94ID0g
ZmxvYXRCb3guY29udGFpbmluZ0Jsb2NrKCk7IGNvbnRhaW5lckJveCAmJiBjb250YWluZXJCb3gg
IT0gJmZsb2F0aW5nU3RhdGVSb290OyBjb250YWluZXJCb3ggPSBjb250YWluZXJCb3gtPmNvbnRh
aW5pbmdCbG9jaygpKQorICAgICAgICB0b3AgKz0gZm9ybWF0dGluZ0NvbnRleHQoKS5nZW9tZXRy
eUZvckJveCgqY29udGFpbmVyQm94LCBGb3JtYXR0aW5nQ29udGV4dDo6RXNjYXBlUmVhc29uOjpG
bG9hdEJveE5lZWRzVG9CZUluQWJzb2x1dGVDb29yZGluYXRlcykudG9wKCk7CiAgICAgcmV0dXJu
IHRvcDsKIH0KIApAQCAtNDU4LDggKzQ1OCw4IEBAIFBvaW50IEZsb2F0aW5nQ29udGV4dDo6bWFw
UG9pbnRGcm9tRm9ybWF0dGluZ0NvbnRleHRSb290VG9GbG9hdGluZ1N0YXRlUm9vdChQb2luCiAg
ICAgaWYgKCZmcm9tID09ICZ0bykKICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOwogICAgIGF1dG8g
bWFwcGVkUG9zaXRpb24gPSBwb3NpdGlvbjsKLSAgICBmb3IgKGF1dG8qIGNvbnRhaW5lciA9ICZm
cm9tOyBjb250YWluZXIgJiYgY29udGFpbmVyICE9ICZ0bzsgY29udGFpbmVyID0gY29udGFpbmVy
LT5jb250YWluaW5nQmxvY2soKSkKLSAgICAgICAgbWFwcGVkUG9zaXRpb24ubW92ZUJ5KGZvcm1h
dHRpbmdDb250ZXh0KCkuZ2VvbWV0cnlGb3JCb3goKmNvbnRhaW5lciwgRm9ybWF0dGluZ0NvbnRl
eHQ6OkVzY2FwZVJlYXNvbjo6RmxvYXRCb3hOZWVkc1RvQmVJbkFic29sdXRlQ29vcmRpbmF0ZXMp
LnRvcExlZnQoKSk7CisgICAgZm9yIChhdXRvKiBjb250YWluZXJCb3ggPSAmZnJvbTsgY29udGFp
bmVyQm94ICYmIGNvbnRhaW5lckJveCAhPSAmdG87IGNvbnRhaW5lckJveCA9IGNvbnRhaW5lckJv
eC0+Y29udGFpbmluZ0Jsb2NrKCkpCisgICAgICAgIG1hcHBlZFBvc2l0aW9uLm1vdmVCeShmb3Jt
YXR0aW5nQ29udGV4dCgpLmdlb21ldHJ5Rm9yQm94KCpjb250YWluZXJCb3gsIEZvcm1hdHRpbmdD
b250ZXh0OjpFc2NhcGVSZWFzb246OkZsb2F0Qm94TmVlZHNUb0JlSW5BYnNvbHV0ZUNvb3JkaW5h
dGVzKS50b3BMZWZ0KCkpOwogICAgIHJldHVybiBtYXBwZWRQb3NpdGlvbjsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ0NvbnRleHQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdDb250ZXh0LmgKaW5kZXggMjA1YzQ1
YjYwMGQ1OWFhNWUzMzIyMDJjNzU5YTFmOGUxMDdmZjJkNS4uNzFkZjQxMTI1NmVlNDFlMWRmYTc0
ZWIyNzJkNzQ0YWQwYTQ4ZmY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zs
b2F0cy9GbG9hdGluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRz
L0Zsb2F0aW5nQ29udGV4dC5oCkBAIC0yOCw3ICsyOCw3IEBACiAjaWYgRU5BQkxFKExBWU9VVF9G
T1JNQVRUSU5HX0NPTlRFWFQpCiAKICNpbmNsdWRlICJGbG9hdGluZ1N0YXRlLmgiCi0jaW5jbHVk
ZSAiTGF5b3V0Q29udGFpbmVyLmgiCisjaW5jbHVkZSAiTGF5b3V0Q29udGFpbmVyQm94LmgiCiAj
aW5jbHVkZSA8d3RmL0lzb01hbGxvYy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00NSw3
ICs0NSw3IEBAIGNsYXNzIExheW91dFN0YXRlOwogY2xhc3MgRmxvYXRpbmdDb250ZXh0IHsKICAg
ICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEZsb2F0aW5nQ29udGV4dCk7CiBwdWJsaWM6Ci0gICAg
RmxvYXRpbmdDb250ZXh0KGNvbnN0IENvbnRhaW5lciYgZmxvYXRpbmdDb250ZXh0Um9vdCwgY29u
c3QgRm9ybWF0dGluZ0NvbnRleHQmLCBGbG9hdGluZ1N0YXRlJik7CisgICAgRmxvYXRpbmdDb250
ZXh0KGNvbnN0IENvbnRhaW5lckJveCYgZmxvYXRpbmdDb250ZXh0Um9vdCwgY29uc3QgRm9ybWF0
dGluZ0NvbnRleHQmLCBGbG9hdGluZ1N0YXRlJik7CiAKICAgICBGbG9hdGluZ1N0YXRlJiBmbG9h
dGluZ1N0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9mbG9hdGluZ1N0YXRlOyB9CiAKQEAgLTcwLDcg
KzcwLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUo
KSBjb25zdCB7IHJldHVybiBtX2Zsb2F0aW5nU3RhdGUubGF5b3V0U3RhdGUoKTsgfQogICAgIGNv
bnN0IEZvcm1hdHRpbmdDb250ZXh0JiBmb3JtYXR0aW5nQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJu
IG1fZm9ybWF0dGluZ0NvbnRleHQ7IH0KLSAgICBjb25zdCBDb250YWluZXImIHJvb3QoKSBjb25z
dCB7IHJldHVybiAqbV9yb290OyB9CisgICAgY29uc3QgQ29udGFpbmVyQm94JiByb290KCkgY29u
c3QgeyByZXR1cm4gKm1fcm9vdDsgfQogCiAgICAgdm9pZCBmaW5kUG9zaXRpb25Gb3JGbG9hdEJv
eChGbG9hdEJveCYpIGNvbnN0OwogICAgIHZvaWQgZmluZFBvc2l0aW9uRm9yRm9ybWF0dGluZ0Nv
bnRleHRSb290KEZsb2F0QXZvaWRlciYpIGNvbnN0OwpAQCAtODEsNyArODEsNyBAQCBwcml2YXRl
OgogICAgIExheW91dFVuaXQgbWFwVG9wVG9GbG9hdGluZ1N0YXRlUm9vdChjb25zdCBCb3gmKSBj
b25zdDsKICAgICBQb2ludCBtYXBQb2ludEZyb21Gb3JtYXR0aW5nQ29udGV4dFJvb3RUb0Zsb2F0
aW5nU3RhdGVSb290KFBvaW50KSBjb25zdDsKIAotICAgIFdlYWtQdHI8Y29uc3QgQ29udGFpbmVy
PiBtX3Jvb3Q7CisgICAgV2Vha1B0cjxjb25zdCBDb250YWluZXJCb3g+IG1fcm9vdDsKICAgICBj
b25zdCBGb3JtYXR0aW5nQ29udGV4dCYgbV9mb3JtYXR0aW5nQ29udGV4dDsKICAgICBGbG9hdGlu
Z1N0YXRlJiBtX2Zsb2F0aW5nU3RhdGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zsb2F0cy9GbG9hdGluZ1N0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
bG9hdHMvRmxvYXRpbmdTdGF0ZS5jcHAKaW5kZXggYWQ3ZjgwZjM5YzdiZjE3ODVjNWNlZmM2OGI2
MDZlMThjZTQ5MGU0Mi4uMmU4ODAzNDFmOTNlMzlkOTA3MjEyMWIwZDNiMTU4MDVmOTE1NWNkNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ1N0YXRlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0aW5nU3RhdGUuY3BwCkBA
IC0zMCw3ICszMCw3IEBACiAKICNpbmNsdWRlICJGb3JtYXR0aW5nQ29udGV4dC5oIgogI2luY2x1
ZGUgIkxheW91dEJveC5oIgotI2luY2x1ZGUgIkxheW91dENvbnRhaW5lci5oIgorI2luY2x1ZGUg
IkxheW91dENvbnRhaW5lckJveC5oIgogI2luY2x1ZGUgIkxheW91dFN0YXRlLmgiCiAjaW5jbHVk
ZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIApAQCAtNTIsNyArNTIsNyBAQCBGbG9hdGluZ1N0
YXRlOjpGbG9hdEl0ZW06OkZsb2F0SXRlbShQb3NpdGlvbiBwb3NpdGlvbiwgRGlzcGxheTo6Qm94
IGFic29sdXRlRGlzcAogewogfQogCi1GbG9hdGluZ1N0YXRlOjpGbG9hdGluZ1N0YXRlKExheW91
dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQ29udGFpbmVyJiBmb3JtYXR0aW5nQ29udGV4dFJv
b3QpCitGbG9hdGluZ1N0YXRlOjpGbG9hdGluZ1N0YXRlKExheW91dFN0YXRlJiBsYXlvdXRTdGF0
ZSwgY29uc3QgQ29udGFpbmVyQm94JiBmb3JtYXR0aW5nQ29udGV4dFJvb3QpCiAgICAgOiBtX2xh
eW91dFN0YXRlKGxheW91dFN0YXRlKQogICAgICwgbV9mb3JtYXR0aW5nQ29udGV4dFJvb3QobWFr
ZVdlYWtQdHIoZm9ybWF0dGluZ0NvbnRleHRSb290KSkKIHsKQEAgLTYwLDcgKzYwLDcgQEAgRmxv
YXRpbmdTdGF0ZTo6RmxvYXRpbmdTdGF0ZShMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0
IENvbnRhaW5lciYgZm9ybWF0dGkKIAogdm9pZCBGbG9hdGluZ1N0YXRlOjphcHBlbmQoRmxvYXRJ
dGVtIGZsb2F0SXRlbSkKIHsKLSAgICBBU1NFUlQoaXM8Q29udGFpbmVyPigqbV9mb3JtYXR0aW5n
Q29udGV4dFJvb3QpKTsKKyAgICBBU1NFUlQoaXM8Q29udGFpbmVyQm94PigqbV9mb3JtYXR0aW5n
Q29udGV4dFJvb3QpKTsKIAogICAgIGlmIChtX2Zsb2F0cy5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiBtX2Zsb2F0cy5hcHBlbmQoZmxvYXRJdGVtKTsKQEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBG
bG9hdGluZ1N0YXRlOjphcHBlbmQoRmxvYXRJdGVtIGZsb2F0SXRlbSkKICAgICByZXR1cm4gbV9m
bG9hdHMuaW5zZXJ0KDAsIGZsb2F0SXRlbSk7CiB9CiAKLU9wdGlvbmFsPFBvc2l0aW9uSW5Db250
ZXh0Um9vdD4gRmxvYXRpbmdTdGF0ZTo6Ym90dG9tKGNvbnN0IENvbnRhaW5lciYgZm9ybWF0dGlu
Z0NvbnRleHRSb290LCBDbGVhciB0eXBlKSBjb25zdAorT3B0aW9uYWw8UG9zaXRpb25JbkNvbnRl
eHRSb290PiBGbG9hdGluZ1N0YXRlOjpib3R0b20oY29uc3QgQ29udGFpbmVyQm94JiBmb3JtYXR0
aW5nQ29udGV4dFJvb3QsIENsZWFyIHR5cGUpIGNvbnN0CiB7CiAgICAgaWYgKG1fZmxvYXRzLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTExNCw3ICsxMTQsNyBAQCBPcHRpb25h
bDxQb3NpdGlvbkluQ29udGV4dFJvb3Q+IEZsb2F0aW5nU3RhdGU6OmJvdHRvbShjb25zdCBDb250
YWluZXImIGZvcm1hdHRpbgogICAgIHJldHVybiBib3R0b207CiB9CiAKLU9wdGlvbmFsPFBvc2l0
aW9uSW5Db250ZXh0Um9vdD4gRmxvYXRpbmdTdGF0ZTo6dG9wKGNvbnN0IENvbnRhaW5lciYgZm9y
bWF0dGluZ0NvbnRleHRSb290KSBjb25zdAorT3B0aW9uYWw8UG9zaXRpb25JbkNvbnRleHRSb290
PiBGbG9hdGluZ1N0YXRlOjp0b3AoY29uc3QgQ29udGFpbmVyQm94JiBmb3JtYXR0aW5nQ29udGV4
dFJvb3QpIGNvbnN0CiB7CiAgICAgaWYgKG1fZmxvYXRzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRp
bmdTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ1N0YXRlLmgK
aW5kZXggNmE5Nzk2YWYxMzk3NTViYWQ4ZDIyZjczODQ5MmZiZjIyMTBmYzJlNi4uYWNiMjUzZmIx
OTNhN2Y4NTk2Y2Q4NTZiMDRhMDc3NTY3ZTE1NzFhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ1N0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zsb2F0cy9GbG9hdGluZ1N0YXRlLmgKQEAgLTI4LDcgKzI4LDcgQEAKICNpZiBFTkFCTEUo
TEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKIAogI2luY2x1ZGUgIkRpc3BsYXlCb3guaCIKLSNp
bmNsdWRlICJMYXlvdXRDb250YWluZXIuaCIKKyNpbmNsdWRlICJMYXlvdXRDb250YWluZXJCb3gu
aCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2lu
Y2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CkBAIC00OSwxNCArNDksMTQgQEAgY2xhc3MgTGF5b3V0U3Rh
dGU7CiBjbGFzcyBGbG9hdGluZ1N0YXRlIDogcHVibGljIFJlZkNvdW50ZWQ8RmxvYXRpbmdTdGF0
ZT4gewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoRmxvYXRpbmdTdGF0ZSk7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZjxGbG9hdGluZ1N0YXRlPiBjcmVhdGUoTGF5b3V0U3RhdGUmIGxheW91
dFN0YXRlLCBjb25zdCBDb250YWluZXImIGZvcm1hdHRpbmdDb250ZXh0Um9vdCkgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBGbG9hdGluZ1N0YXRlKGxheW91dFN0YXRlLCBmb3JtYXR0aW5nQ29udGV4
dFJvb3QpKTsgfQorICAgIHN0YXRpYyBSZWY8RmxvYXRpbmdTdGF0ZT4gY3JlYXRlKExheW91dFN0
YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQ29udGFpbmVyQm94JiBmb3JtYXR0aW5nQ29udGV4dFJv
b3QpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmxvYXRpbmdTdGF0ZShsYXlvdXRTdGF0ZSwgZm9y
bWF0dGluZ0NvbnRleHRSb290KSk7IH0KIAotICAgIGNvbnN0IENvbnRhaW5lciYgcm9vdCgpIGNv
bnN0IHsgcmV0dXJuICptX2Zvcm1hdHRpbmdDb250ZXh0Um9vdDsgfQorICAgIGNvbnN0IENvbnRh
aW5lckJveCYgcm9vdCgpIGNvbnN0IHsgcmV0dXJuICptX2Zvcm1hdHRpbmdDb250ZXh0Um9vdDsg
fQogCi0gICAgT3B0aW9uYWw8UG9zaXRpb25JbkNvbnRleHRSb290PiB0b3AoY29uc3QgQ29udGFp
bmVyJiBmb3JtYXR0aW5nQ29udGV4dFJvb3QpIGNvbnN0OwotICAgIE9wdGlvbmFsPFBvc2l0aW9u
SW5Db250ZXh0Um9vdD4gbGVmdEJvdHRvbShjb25zdCBDb250YWluZXImIGZvcm1hdHRpbmdDb250
ZXh0Um9vdCkgY29uc3Q7Ci0gICAgT3B0aW9uYWw8UG9zaXRpb25JbkNvbnRleHRSb290PiByaWdo
dEJvdHRvbShjb25zdCBDb250YWluZXImIGZvcm1hdHRpbmdDb250ZXh0Um9vdCkgY29uc3Q7Ci0g
ICAgT3B0aW9uYWw8UG9zaXRpb25JbkNvbnRleHRSb290PiBib3R0b20oY29uc3QgQ29udGFpbmVy
JiBmb3JtYXR0aW5nQ29udGV4dFJvb3QpIGNvbnN0OworICAgIE9wdGlvbmFsPFBvc2l0aW9uSW5D
b250ZXh0Um9vdD4gdG9wKGNvbnN0IENvbnRhaW5lckJveCYgZm9ybWF0dGluZ0NvbnRleHRSb290
KSBjb25zdDsKKyAgICBPcHRpb25hbDxQb3NpdGlvbkluQ29udGV4dFJvb3Q+IGxlZnRCb3R0b20o
Y29uc3QgQ29udGFpbmVyQm94JiBmb3JtYXR0aW5nQ29udGV4dFJvb3QpIGNvbnN0OworICAgIE9w
dGlvbmFsPFBvc2l0aW9uSW5Db250ZXh0Um9vdD4gcmlnaHRCb3R0b20oY29uc3QgQ29udGFpbmVy
Qm94JiBmb3JtYXR0aW5nQ29udGV4dFJvb3QpIGNvbnN0OworICAgIE9wdGlvbmFsPFBvc2l0aW9u
SW5Db250ZXh0Um9vdD4gYm90dG9tKGNvbnN0IENvbnRhaW5lckJveCYgZm9ybWF0dGluZ0NvbnRl
eHRSb290KSBjb25zdDsKIAogICAgIGNsYXNzIEZsb2F0SXRlbSB7CiAgICAgcHVibGljOgpAQCAt
NjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgICAgIEZsb2F0SXRlbShQb3NpdGlvbiwgRGlzcGxh
eTo6Qm94IGFic29sdXRlRGlzcGxheUJveCk7CiAKICAgICAgICAgYm9vbCBpc0xlZnRQb3NpdGlv
bmVkKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbiA9PSBQb3NpdGlvbjo6TGVmdDsgfQotICAg
ICAgICBib29sIGlzRGVzY2VuZGFudE9mRm9ybWF0dGluZ1Jvb3QoY29uc3QgQ29udGFpbmVyJikg
Y29uc3Q7CisgICAgICAgIGJvb2wgaXNEZXNjZW5kYW50T2ZGb3JtYXR0aW5nUm9vdChjb25zdCBD
b250YWluZXJCb3gmKSBjb25zdDsKIAogICAgICAgICBEaXNwbGF5OjpSZWN0IHJlY3RXaXRoTWFy
Z2luKCkgY29uc3QgeyByZXR1cm4gbV9hYnNvbHV0ZURpc3BsYXlCb3gucmVjdFdpdGhNYXJnaW4o
KTsgfQogICAgICAgICBVc2VkSG9yaXpvbnRhbE1hcmdpbiBob3Jpem9udGFsTWFyZ2luKCkgY29u
c3QgeyByZXR1cm4gbV9hYnNvbHV0ZURpc3BsYXlCb3guaG9yaXpvbnRhbE1hcmdpbigpOyB9CkBA
IC04NiwzOSArODYsMzkgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBG
bG9hdGluZ0NvbnRleHQ7Ci0gICAgRmxvYXRpbmdTdGF0ZShMYXlvdXRTdGF0ZSYsIGNvbnN0IENv
bnRhaW5lciYgZm9ybWF0dGluZ0NvbnRleHRSb290KTsKKyAgICBGbG9hdGluZ1N0YXRlKExheW91
dFN0YXRlJiwgY29uc3QgQ29udGFpbmVyQm94JiBmb3JtYXR0aW5nQ29udGV4dFJvb3QpOwogCiAg
ICAgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9sYXlvdXRTdGF0
ZTsgfQogCi0gICAgT3B0aW9uYWw8UG9zaXRpb25JbkNvbnRleHRSb290PiBib3R0b20oY29uc3Qg
Q29udGFpbmVyJiBmb3JtYXR0aW5nQ29udGV4dFJvb3QsIENsZWFyKSBjb25zdDsKKyAgICBPcHRp
b25hbDxQb3NpdGlvbkluQ29udGV4dFJvb3Q+IGJvdHRvbShjb25zdCBDb250YWluZXJCb3gmIGZv
cm1hdHRpbmdDb250ZXh0Um9vdCwgQ2xlYXIpIGNvbnN0OwogCiAgICAgTGF5b3V0U3RhdGUmIG1f
bGF5b3V0U3RhdGU7Ci0gICAgV2Vha1B0cjxjb25zdCBDb250YWluZXI+IG1fZm9ybWF0dGluZ0Nv
bnRleHRSb290OworICAgIFdlYWtQdHI8Y29uc3QgQ29udGFpbmVyQm94PiBtX2Zvcm1hdHRpbmdD
b250ZXh0Um9vdDsKICAgICBGbG9hdExpc3QgbV9mbG9hdHM7CiB9OwogCi1pbmxpbmUgT3B0aW9u
YWw8UG9zaXRpb25JbkNvbnRleHRSb290PiBGbG9hdGluZ1N0YXRlOjpsZWZ0Qm90dG9tKGNvbnN0
IENvbnRhaW5lciYgZm9ybWF0dGluZ0NvbnRleHRSb290KSBjb25zdAoraW5saW5lIE9wdGlvbmFs
PFBvc2l0aW9uSW5Db250ZXh0Um9vdD4gRmxvYXRpbmdTdGF0ZTo6bGVmdEJvdHRvbShjb25zdCBD
b250YWluZXJCb3gmIGZvcm1hdHRpbmdDb250ZXh0Um9vdCkgY29uc3QKIHsgCiAgICAgQVNTRVJU
KGZvcm1hdHRpbmdDb250ZXh0Um9vdC5lc3RhYmxpc2hlc0Zvcm1hdHRpbmdDb250ZXh0KCkpOwog
ICAgIHJldHVybiBib3R0b20oZm9ybWF0dGluZ0NvbnRleHRSb290LCBDbGVhcjo6TGVmdCk7CiB9
CiAKLWlubGluZSBPcHRpb25hbDxQb3NpdGlvbkluQ29udGV4dFJvb3Q+IEZsb2F0aW5nU3RhdGU6
OnJpZ2h0Qm90dG9tKGNvbnN0IENvbnRhaW5lciYgZm9ybWF0dGluZ0NvbnRleHRSb290KSBjb25z
dAoraW5saW5lIE9wdGlvbmFsPFBvc2l0aW9uSW5Db250ZXh0Um9vdD4gRmxvYXRpbmdTdGF0ZTo6
cmlnaHRCb3R0b20oY29uc3QgQ29udGFpbmVyQm94JiBmb3JtYXR0aW5nQ29udGV4dFJvb3QpIGNv
bnN0CiB7CiAgICAgQVNTRVJUKGZvcm1hdHRpbmdDb250ZXh0Um9vdC5lc3RhYmxpc2hlc0Zvcm1h
dHRpbmdDb250ZXh0KCkpOwogICAgIHJldHVybiBib3R0b20oZm9ybWF0dGluZ0NvbnRleHRSb290
LCBDbGVhcjo6UmlnaHQpOwogfQogCi1pbmxpbmUgT3B0aW9uYWw8UG9zaXRpb25JbkNvbnRleHRS
b290PiBGbG9hdGluZ1N0YXRlOjpib3R0b20oY29uc3QgQ29udGFpbmVyJiBmb3JtYXR0aW5nQ29u
dGV4dFJvb3QpIGNvbnN0CitpbmxpbmUgT3B0aW9uYWw8UG9zaXRpb25JbkNvbnRleHRSb290PiBG
bG9hdGluZ1N0YXRlOjpib3R0b20oY29uc3QgQ29udGFpbmVyQm94JiBmb3JtYXR0aW5nQ29udGV4
dFJvb3QpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGZvcm1hdHRpbmdDb250ZXh0Um9vdC5lc3RhYmxp
c2hlc0Zvcm1hdHRpbmdDb250ZXh0KCkpOwogICAgIHJldHVybiBib3R0b20oZm9ybWF0dGluZ0Nv
bnRleHRSb290LCBDbGVhcjo6Qm90aCk7CiB9CiAKLWlubGluZSBib29sIEZsb2F0aW5nU3RhdGU6
OkZsb2F0SXRlbTo6aXNEZXNjZW5kYW50T2ZGb3JtYXR0aW5nUm9vdChjb25zdCBDb250YWluZXIm
IGZvcm1hdHRpbmdDb250ZXh0Um9vdCkgY29uc3QKK2lubGluZSBib29sIEZsb2F0aW5nU3RhdGU6
OkZsb2F0SXRlbTo6aXNEZXNjZW5kYW50T2ZGb3JtYXR0aW5nUm9vdChjb25zdCBDb250YWluZXJC
b3gmIGZvcm1hdHRpbmdDb250ZXh0Um9vdCkgY29uc3QKIHsKICAgICBBU1NFUlQoZm9ybWF0dGlu
Z0NvbnRleHRSb290LmVzdGFibGlzaGVzRm9ybWF0dGluZ0NvbnRleHQoKSk7Ci0gICAgcmV0dXJu
IG1fbGF5b3V0Qm94LT5pc0NvbnRhaW5pbmdCbG9ja0Rlc2NlbmRhbnRPZihkb3duY2FzdDxDb250
YWluZXI+KGZvcm1hdHRpbmdDb250ZXh0Um9vdCkpOworICAgIHJldHVybiBtX2xheW91dEJveC0+
aXNDb250YWluaW5nQmxvY2tEZXNjZW5kYW50T2YoZG93bmNhc3Q8Q29udGFpbmVyQm94Pihmb3Jt
YXR0aW5nQ29udGV4dFJvb3QpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRl
eHQuY3BwCmluZGV4IDQ2M2QxMDRhNTRmZGJjYWYzZDg3Yzg0ZTUxNzM2MGE2OWYyZjIyMWEuLmU1
MzNmZmE0NjdjZTliZDE0NmMxNDM0NjIwODA1ZGFkOGUzMWRkOTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVG
b3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlICJJbmxpbmVU
ZXh0SXRlbS5oIgogI2luY2x1ZGUgIkludmFsaWRhdGlvblN0YXRlLmgiCiAjaW5jbHVkZSAiTGF5
b3V0Qm94LmgiCi0jaW5jbHVkZSAiTGF5b3V0Q29udGFpbmVyLmgiCisjaW5jbHVkZSAiTGF5b3V0
Q29udGFpbmVyQm94LmgiCiAjaW5jbHVkZSAiTGF5b3V0Q29udGV4dC5oIgogI2luY2x1ZGUgIkxh
eW91dElubGluZVRleHRCb3guaCIKICNpbmNsdWRlICJMYXlvdXRSZXBsYWNlZEJveC5oIgpAQCAt
NTAsMjEgKzUwLDIxIEBAIG5hbWVzcGFjZSBMYXlvdXQgewogCiBXVEZfTUFLRV9JU09fQUxMT0NB
VEVEX0lNUEwoSW5saW5lRm9ybWF0dGluZ0NvbnRleHQpOwogCi1JbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQoY29uc3QgQ29udGFpbmVyJiBmb3JtYXR0aW5n
Q29udGV4dFJvb3QsIElubGluZUZvcm1hdHRpbmdTdGF0ZSYgZm9ybWF0dGluZ1N0YXRlKQorSW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0KGNvbnN0IENvbnRh
aW5lckJveCYgZm9ybWF0dGluZ0NvbnRleHRSb290LCBJbmxpbmVGb3JtYXR0aW5nU3RhdGUmIGZv
cm1hdHRpbmdTdGF0ZSkKICAgICA6IEZvcm1hdHRpbmdDb250ZXh0KGZvcm1hdHRpbmdDb250ZXh0
Um9vdCwgZm9ybWF0dGluZ1N0YXRlKQogewogfQogCi1zdGF0aWMgaW5saW5lIGNvbnN0IEJveCog
bmV4dElubGluZUxldmVsQm94VG9MYXlvdXQoY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IENv
bnRhaW5lciYgc3RheVdpdGhpbikKK3N0YXRpYyBpbmxpbmUgY29uc3QgQm94KiBuZXh0SW5saW5l
TGV2ZWxCb3hUb0xheW91dChjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgQ29udGFpbmVyQm94
JiBzdGF5V2l0aGluKQogewogICAgIC8vIEF0b21pYyBpbmxpbmUtbGV2ZWwgYm94ZXMgYW5kIGZs
b2F0cyBhcmUgb3BhcXVlIGJveGVzIG1lYW5pbmcgdGhhdCB0aGV5IGFyZQogICAgIC8vIHJlc3Bv
bnNpYmxlIGZvciB0aGVpciBvd24gY29udGVudCAoZG8gbm90IG5lZWQgdG8gZGVzY2VuZCBpbnRv
IHRoZWlyIHN1YnRyZWVzKS4KICAgICAvLyBPbmx5IGlubGluZSBib3hlcyBtYXkgaGF2ZSByZWxl
dmFudCBkZXNjZW5kYW50IGNvbnRlbnQuCiAgICAgaWYgKGxheW91dEJveC5pc0lubGluZUJveCgp
KSB7Ci0gICAgICAgIGlmIChpczxDb250YWluZXI+KGxheW91dEJveCkgJiYgZG93bmNhc3Q8Q29u
dGFpbmVyPihsYXlvdXRCb3gpLmhhc0luRmxvd09yRmxvYXRpbmdDaGlsZCgpKSB7CisgICAgICAg
IGlmIChpczxDb250YWluZXJCb3g+KGxheW91dEJveCkgJiYgZG93bmNhc3Q8Q29udGFpbmVyQm94
PihsYXlvdXRCb3gpLmhhc0luRmxvd09yRmxvYXRpbmdDaGlsZCgpKSB7CiAgICAgICAgICAgICAv
LyBBbm9ueW1vdXMgaW5saW5lIGJveGVzL2xpbmUgYnJlYWtzIGNhbid0IGhhdmUgZGVzY2VuZGFu
dCBjb250ZW50IGJ5IGRlZmluaXRpb24uCiAgICAgICAgICAgICBBU1NFUlQoIWxheW91dEJveC5p
c0Fub255bW91cygpICYmICFsYXlvdXRCb3guaXNMaW5lQnJlYWtCb3goKSk7Ci0gICAgICAgICAg
ICByZXR1cm4gZG93bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRCb3gpLmZpcnN0SW5GbG93T3JGbG9h
dGluZ0NoaWxkKCk7CisgICAgICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q29udGFpbmVyQm94Pihs
YXlvdXRCb3gpLmZpcnN0SW5GbG93T3JGbG9hdGluZ0NoaWxkKCk7CiAgICAgICAgIH0KICAgICB9
CiAKQEAgLTkyLDE3ICs5MiwxNyBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpsYXlv
dXRJbkZsb3dDb250ZW50KEludmFsaWRhdGlvblN0YXRlJiBpbnZhbGlkYXRpbwogICAgICAgICAg
ICAgY29tcHV0ZUJvcmRlckFuZFBhZGRpbmcoKmxheW91dEJveCwgaG9yaXpvbnRhbENvbnN0cmFp
bnRzKTsKICAgICAgICAgICAgIGNvbXB1dGVXaWR0aEFuZE1hcmdpbigqbGF5b3V0Qm94LCBob3Jp
em9udGFsQ29uc3RyYWludHMpOwogICAgICAgICAgICAgYXV0byBjcmVhdGVzRm9ybWF0dGluZ0Nv
bnRleHQgPSBsYXlvdXRCb3gtPmlzSW5saW5lQmxvY2tCb3goKSB8fCBsYXlvdXRCb3gtPmlzSW5s
aW5lVGFibGVCb3goKTsKLSAgICAgICAgICAgIGF1dG8gaGFzSW5GbG93T3JGbG9hdGluZ0NoaWxk
ID0gaXM8Q29udGFpbmVyPigqbGF5b3V0Qm94KSAmJiBkb3duY2FzdDxDb250YWluZXI+KCpsYXlv
dXRCb3gpLmhhc0luRmxvd09yRmxvYXRpbmdDaGlsZCgpOworICAgICAgICAgICAgYXV0byBoYXNJ
bkZsb3dPckZsb2F0aW5nQ2hpbGQgPSBpczxDb250YWluZXJCb3g+KCpsYXlvdXRCb3gpICYmIGRv
d25jYXN0PENvbnRhaW5lckJveD4oKmxheW91dEJveCkuaGFzSW5GbG93T3JGbG9hdGluZ0NoaWxk
KCk7CiAgICAgICAgICAgICBpZiAoY3JlYXRlc0Zvcm1hdHRpbmdDb250ZXh0ICYmIGhhc0luRmxv
d09yRmxvYXRpbmdDaGlsZCkgewotICAgICAgICAgICAgICAgIGF1dG8gZm9ybWF0dGluZ0NvbnRl
eHQgPSBMYXlvdXRDb250ZXh0OjpjcmVhdGVGb3JtYXR0aW5nQ29udGV4dChkb3duY2FzdDxDb250
YWluZXI+KCpsYXlvdXRCb3gpLCBsYXlvdXRTdGF0ZSgpKTsKKyAgICAgICAgICAgICAgICBhdXRv
IGZvcm1hdHRpbmdDb250ZXh0ID0gTGF5b3V0Q29udGV4dDo6Y3JlYXRlRm9ybWF0dGluZ0NvbnRl
eHQoZG93bmNhc3Q8Q29udGFpbmVyQm94PigqbGF5b3V0Qm94KSwgbGF5b3V0U3RhdGUoKSk7CiAg
ICAgICAgICAgICAgICAgZm9ybWF0dGluZ0NvbnRleHQtPmxheW91dEluRmxvd0NvbnRlbnQoaW52
YWxpZGF0aW9uU3RhdGUsIGhvcml6b250YWxDb25zdHJhaW50cywgdmVydGljYWxDb25zdHJhaW50
cyk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjb21wdXRlSGVpZ2h0QW5kTWFyZ2luKCps
YXlvdXRCb3gsIGhvcml6b250YWxDb25zdHJhaW50cyk7Ci0gICAgICAgICAgICBpZiAoY3JlYXRl
c0Zvcm1hdHRpbmdDb250ZXh0ICYmIGlzPENvbnRhaW5lcj4oKmxheW91dEJveCkgJiYgZG93bmNh
c3Q8Q29udGFpbmVyPigqbGF5b3V0Qm94KS5oYXNDaGlsZCgpKSB7CisgICAgICAgICAgICBpZiAo
Y3JlYXRlc0Zvcm1hdHRpbmdDb250ZXh0ICYmIGlzPENvbnRhaW5lckJveD4oKmxheW91dEJveCkg
JiYgZG93bmNhc3Q8Q29udGFpbmVyQm94PigqbGF5b3V0Qm94KS5oYXNDaGlsZCgpKSB7CiAgICAg
ICAgICAgICAgICAgYXV0byYgZGlzcGxheUJveCA9IGdlb21ldHJ5Rm9yQm94KCpsYXlvdXRCb3gp
OwogICAgICAgICAgICAgICAgIGF1dG8gaG9yaXpvbnRhbENvbnN0cmFpbnRzRm9yT3V0T2ZGbG93
ID0gR2VvbWV0cnk6Omhvcml6b250YWxDb25zdHJhaW50c0Zvck91dE9mRmxvdyhkaXNwbGF5Qm94
KTsKICAgICAgICAgICAgICAgICBhdXRvIHZlcnRpY2FsQ29uc3RyYWludHNGb3JPdXRPZkZsb3cg
PSBHZW9tZXRyeTo6dmVydGljYWxDb25zdHJhaW50c0Zvck91dE9mRmxvdyhkaXNwbGF5Qm94KTsK
LSAgICAgICAgICAgICAgICBhdXRvIGZvcm1hdHRpbmdDb250ZXh0ID0gTGF5b3V0Q29udGV4dDo6
Y3JlYXRlRm9ybWF0dGluZ0NvbnRleHQoZG93bmNhc3Q8Q29udGFpbmVyPigqbGF5b3V0Qm94KSwg
bGF5b3V0U3RhdGUoKSk7CisgICAgICAgICAgICAgICAgYXV0byBmb3JtYXR0aW5nQ29udGV4dCA9
IExheW91dENvbnRleHQ6OmNyZWF0ZUZvcm1hdHRpbmdDb250ZXh0KGRvd25jYXN0PENvbnRhaW5l
ckJveD4oKmxheW91dEJveCksIGxheW91dFN0YXRlKCkpOwogICAgICAgICAgICAgICAgIGZvcm1h
dHRpbmdDb250ZXh0LT5sYXlvdXRPdXRPZkZsb3dDb250ZW50KGludmFsaWRhdGlvblN0YXRlLCBo
b3Jpem9udGFsQ29uc3RyYWludHNGb3JPdXRPZkZsb3csIHZlcnRpY2FsQ29uc3RyYWludHNGb3JP
dXRPZkZsb3cpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKGxheW91dEJveC0+
aXNJbmxpbmVCb3goKSkgewpAQCAtMjUzLDggKzI1Myw4IEBAIHZvaWQgSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQ6OmNvbXB1dGVJbnRyaW5zaWNXaWR0aEZvckZvcm1hdHRpbmdSb290KGNvbnN0IEJv
eCYKICAgICBhdXRvIGNvbnN0cmFpbnRzID0gSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyB7IH07
CiAgICAgaWYgKGF1dG8gZml4ZWRXaWR0aCA9IGdlb21ldHJ5KCkuZml4ZWRWYWx1ZShmb3JtYXR0
aW5nUm9vdC5zdHlsZSgpLmxvZ2ljYWxXaWR0aCgpKSkKICAgICAgICAgY29uc3RyYWludHMgPSB7
ICpmaXhlZFdpZHRoLCAqZml4ZWRXaWR0aCB9OwotICAgIGVsc2UgaWYgKGlzPENvbnRhaW5lcj4o
Zm9ybWF0dGluZ1Jvb3QpICYmIGRvd25jYXN0PENvbnRhaW5lcj4oZm9ybWF0dGluZ1Jvb3QpLmhh
c0luRmxvd09yRmxvYXRpbmdDaGlsZCgpKQotICAgICAgICBjb25zdHJhaW50cyA9IExheW91dENv
bnRleHQ6OmNyZWF0ZUZvcm1hdHRpbmdDb250ZXh0KGRvd25jYXN0PENvbnRhaW5lcj4oZm9ybWF0
dGluZ1Jvb3QpLCBsYXlvdXRTdGF0ZSgpKS0+Y29tcHV0ZWRJbnRyaW5zaWNXaWR0aENvbnN0cmFp
bnRzKCk7CisgICAgZWxzZSBpZiAoaXM8Q29udGFpbmVyQm94Pihmb3JtYXR0aW5nUm9vdCkgJiYg
ZG93bmNhc3Q8Q29udGFpbmVyQm94Pihmb3JtYXR0aW5nUm9vdCkuaGFzSW5GbG93T3JGbG9hdGlu
Z0NoaWxkKCkpCisgICAgICAgIGNvbnN0cmFpbnRzID0gTGF5b3V0Q29udGV4dDo6Y3JlYXRlRm9y
bWF0dGluZ0NvbnRleHQoZG93bmNhc3Q8Q29udGFpbmVyQm94Pihmb3JtYXR0aW5nUm9vdCksIGxh
eW91dFN0YXRlKCkpLT5jb21wdXRlZEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMoKTsKICAgICBj
b25zdHJhaW50cyA9IGdlb21ldHJ5KCkuY29uc3RyYWluQnlNaW5NYXhXaWR0aChmb3JtYXR0aW5n
Um9vdCwgY29uc3RyYWludHMpOwogICAgIGNvbnN0cmFpbnRzLmV4cGFuZChnZW9tZXRyeUZvckJv
eChmb3JtYXR0aW5nUm9vdCkuaG9yaXpvbnRhbE1hcmdpbkJvcmRlckFuZFBhZGRpbmcoKSk7CiAg
ICAgZm9ybWF0dGluZ1N0YXRlKCkuc2V0SW50cmluc2ljV2lkdGhDb25zdHJhaW50c0ZvckJveChm
b3JtYXR0aW5nUm9vdCwgY29uc3RyYWludHMpOwpAQCAtMzI1LDcgKzMyNSw3IEBAIHZvaWQgSW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbGxlY3RJbmxpbmVDb250ZW50SWZOZWVkZWQoKQogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgc3RhcnQgb2Yg
YW4gaW5saW5lIGJveCAoZS5nLiA8c3Bhbj4pLgogICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRl
LmFkZElubGluZUl0ZW0oeyBsYXlvdXRCb3gsIElubGluZUl0ZW06OlR5cGU6OkNvbnRhaW5lclN0
YXJ0IH0pOwotICAgICAgICAgICAgYXV0byYgaW5saW5lQm94V2l0aElubGluZUNvbnRlbnQgPSBk
b3duY2FzdDxDb250YWluZXI+KGxheW91dEJveCk7CisgICAgICAgICAgICBhdXRvJiBpbmxpbmVC
b3hXaXRoSW5saW5lQ29udGVudCA9IGRvd25jYXN0PENvbnRhaW5lckJveD4obGF5b3V0Qm94KTsK
ICAgICAgICAgICAgIGlmICghaW5saW5lQm94V2l0aElubGluZUNvbnRlbnQuaGFzSW5GbG93T3JG
bG9hdGluZ0NoaWxkKCkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBsYXlv
dXRRdWV1ZS5hcHBlbmQoaW5saW5lQm94V2l0aElubGluZUNvbnRlbnQuZmlyc3RJbkZsb3dPckZs
b2F0aW5nQ2hpbGQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5l
Zm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaAppbmRleCA5ZjZm
OWViNGNmNWQ2MjdiODc1ZDhlNjJhODQ3YWJiZWFkYTk1YjE0Li41Mjc5ODY2ZmJlYzQwNzliNWI5
YTEwYzFlMmUzOWIyZDRmMDI0YTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmgK
QEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgSW52YWxpZGF0aW9uU3RhdGU7CiBjbGFzcyBJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dCBmaW5hbCA6IHB1YmxpYyBGb3JtYXR0aW5nQ29udGV4dCB7CiAgICAg
V1RGX01BS0VfSVNPX0FMTE9DQVRFRChJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCk7CiBwdWJsaWM6
Ci0gICAgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQoY29uc3QgQ29udGFpbmVyJiBmb3JtYXR0aW5n
Q29udGV4dFJvb3QsIElubGluZUZvcm1hdHRpbmdTdGF0ZSYpOworICAgIElubGluZUZvcm1hdHRp
bmdDb250ZXh0KGNvbnN0IENvbnRhaW5lckJveCYgZm9ybWF0dGluZ0NvbnRleHRSb290LCBJbmxp
bmVGb3JtYXR0aW5nU3RhdGUmKTsKICAgICB2b2lkIGxheW91dEluRmxvd0NvbnRlbnQoSW52YWxp
ZGF0aW9uU3RhdGUmLCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmLCBjb25zdCBWZXJ0aWNh
bENvbnN0cmFpbnRzJikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CkBAIC01MSw3ICs1MSw3IEBAIHBy
aXZhdGU6CiAgICAgY2xhc3MgUXVpcmtzIDogcHVibGljIEZvcm1hdHRpbmdDb250ZXh0OjpRdWly
a3MgewogICAgIHB1YmxpYzoKICAgICAgICAgYm9vbCBsaW5lRGVzY2VudE5lZWRzQ29sbGFwc2lu
Zyhjb25zdCBMaW5lQnVpbGRlcjo6UnVuTGlzdCYpIGNvbnN0OwotICAgICAgICBMaW5lQnVpbGRl
cjo6Q29uc3RyYWludHM6OkhlaWdodEFuZEJhc2VsaW5lIGxpbmVIZWlnaHRDb25zdHJhaW50cyhj
b25zdCBDb250YWluZXImIGZvcm1hdHRpbmdSb290KSBjb25zdDsKKyAgICAgICAgTGluZUJ1aWxk
ZXI6OkNvbnN0cmFpbnRzOjpIZWlnaHRBbmRCYXNlbGluZSBsaW5lSGVpZ2h0Q29uc3RyYWludHMo
Y29uc3QgQ29udGFpbmVyQm94JiBmb3JtYXR0aW5nUm9vdCkgY29uc3Q7CiAKICAgICBwcml2YXRl
OgogICAgICAgICBmcmllbmQgY2xhc3MgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ7CkBAIC02Niw3
ICs2Niw3IEBAIHByaXZhdGU6CiAgICAgcHVibGljOgogICAgICAgICBDb250ZW50SGVpZ2h0QW5k
TWFyZ2luIGlubGluZUJsb2NrSGVpZ2h0QW5kTWFyZ2luKGNvbnN0IEJveCYsIGNvbnN0IEhvcml6
b250YWxDb25zdHJhaW50cyYsIGNvbnN0IE92ZXJyaWRlVmVydGljYWxWYWx1ZXMmKSBjb25zdDsK
ICAgICAgICAgQ29udGVudFdpZHRoQW5kTWFyZ2luIGlubGluZUJsb2NrV2lkdGhBbmRNYXJnaW4o
Y29uc3QgQm94JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiwgY29uc3QgT3ZlcnJpZGVI
b3Jpem9udGFsVmFsdWVzJik7Ci0gICAgICAgIE9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IGNv
bXB1dGVkVGV4dEluZGVudChjb25zdCBDb250YWluZXImIGZvcm1hdHRpbmdDb250ZXh0Um9vdCwg
Y29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJikgY29uc3Q7CisgICAgICAgIE9wdGlvbmFsPElu
bGluZUxheW91dFVuaXQ+IGNvbXB1dGVkVGV4dEluZGVudChjb25zdCBDb250YWluZXJCb3gmIGZv
cm1hdHRpbmdDb250ZXh0Um9vdCwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJikgY29uc3Q7
CiAKICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGlu
Zy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3Bw
CmluZGV4IGFlOWI4NDYxNmIzYzI0YjExODM4YjQzOWEzNjBjZGJhYzRjMmFhM2YuLjVmNGQyZTRi
ZTE5NzUzMDcwN2Q3ODEzYjhmZTY0NTljY2NiNTdjOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0R2VvbWV0
cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGlu
ZUZvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKICNpbmNs
dWRlICJGb3JtYXR0aW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIkxheW91dEJveC5oIgotI2luY2x1
ZGUgIkxheW91dENvbnRhaW5lci5oIgorI2luY2x1ZGUgIkxheW91dENvbnRhaW5lckJveC5oIgog
I2luY2x1ZGUgIkxlbmd0aEZ1bmN0aW9ucy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03
NCw3ICs3NCw3IEBAIENvbnRlbnRIZWlnaHRBbmRNYXJnaW4gSW5saW5lRm9ybWF0dGluZ0NvbnRl
eHQ6Okdlb21ldHJ5OjppbmxpbmVCbG9ja0hlaWdodEFuZE1hCiAgICAgcmV0dXJuIGNvbXBsaWNh
dGVkQ2FzZXMobGF5b3V0Qm94LCBob3Jpem9udGFsQ29uc3RyYWludHMsIG92ZXJyaWRlVmVydGlj
YWxWYWx1ZXMpOwogfQogCi1PcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiBJbmxpbmVGb3JtYXR0
aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNvbXB1dGVkVGV4dEluZGVudChjb25zdCBDb250YWluZXIm
IGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiBob3Jp
em9udGFsQ29uc3RyYWludHMpIGNvbnN0CitPcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiBJbmxp
bmVGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNvbXB1dGVkVGV4dEluZGVudChjb25zdCBD
b250YWluZXJCb3gmIGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgY29uc3QgSG9yaXpvbnRhbENvbnN0
cmFpbnRzJiBob3Jpem9udGFsQ29uc3RyYWludHMpIGNvbnN0CiB7CiAgICAgYXV0byB0ZXh0SW5k
ZW50ID0gZm9ybWF0dGluZ0NvbnRleHRSb290LnN0eWxlKCkudGV4dEluZGVudCgpOwogICAgIGlm
ICh0ZXh0SW5kZW50ID09IFJlbmRlclN0eWxlOjppbml0aWFsVGV4dEluZGVudCgpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0
dGluZ0NvbnRleHRRdWlya3MuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1h
dHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHRRdWlya3MuY3BwCmluZGV4IGNlZTExN2E2ZDky
ZGZkM2Y3ZjE0Y2NlZDlkYjA4YTgxZThhYTEyNjEuLjI0MjExNjcxOGYwN2I2ZjAyOGMwYjRjZDY0
NGJjNzRjZDQxNzRjOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVm
b3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dFF1
aXJrcy5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgYm9vbCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6
UXVpcmtzOjpsaW5lRGVzY2VudE5lZWRzQ29sbGFwc2luZyhjb25zdCBMaW5lQnVpbGQKICAgICAg
ICAgfQogICAgICAgICBpZiAocnVuLmlzQm94KCkpIHsKICAgICAgICAgICAgIGlmIChsYXlvdXRC
b3guaXNJbmxpbmVCbG9ja0JveCgpICYmIGxheW91dEJveC5lc3RhYmxpc2hlc0lubGluZUZvcm1h
dHRpbmdDb250ZXh0KCkpIHsKLSAgICAgICAgICAgICAgICBhdXRvJiBmb3JtYXR0aW5nU3RhdGUg
PSBsYXlvdXRTdGF0ZS5lc3RhYmxpc2hlZElubGluZUZvcm1hdHRpbmdTdGF0ZShkb3duY2FzdDxD
b250YWluZXI+KGxheW91dEJveCkpOworICAgICAgICAgICAgICAgIGF1dG8mIGZvcm1hdHRpbmdT
dGF0ZSA9IGxheW91dFN0YXRlLmVzdGFibGlzaGVkSW5saW5lRm9ybWF0dGluZ1N0YXRlKGRvd25j
YXN0PENvbnRhaW5lckJveD4obGF5b3V0Qm94KSk7CiAgICAgICAgICAgICAgICAgYXV0byBpbmxp
bmVCbG9ja0Jhc2VsaW5lID0gZm9ybWF0dGluZ1N0YXRlLmRpc3BsYXlJbmxpbmVDb250ZW50KCkt
PmxpbmVCb3hlcy5sYXN0KCkuYmFzZWxpbmUoKTsKICAgICAgICAgICAgICAgICBpZiAoaW5saW5l
QmxvY2tCYXNlbGluZS5kZXNjZW50KCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTcxLDcgKzcxLDcgQEAgYm9vbCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6UXVpcmtz
OjpsaW5lRGVzY2VudE5lZWRzQ29sbGFwc2luZyhjb25zdCBMaW5lQnVpbGQKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotTGluZUJ1aWxkZXI6OkNvbnN0cmFpbnRzOjpIZWlnaHRBbmRCYXNlbGluZSBJ
bmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6UXVpcmtzOjpsaW5lSGVpZ2h0Q29uc3RyYWludHMoY29u
c3QgQ29udGFpbmVyJiBmb3JtYXR0aW5nUm9vdCkgY29uc3QKK0xpbmVCdWlsZGVyOjpDb25zdHJh
aW50czo6SGVpZ2h0QW5kQmFzZWxpbmUgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJrczo6
bGluZUhlaWdodENvbnN0cmFpbnRzKGNvbnN0IENvbnRhaW5lckJveCYgZm9ybWF0dGluZ1Jvb3Qp
IGNvbnN0CiB7CiAgICAgLy8gY29tcHV0ZWRMaW5lSGVpZ2h0IHRha2VzIGZvbnQtc2l6ZSBpbnRv
IGFjY291bnQgd2hlbiBsaW5lLWhlaWdodCBpcyBub3Qgc2V0LgogICAgIC8vIFN0cnV0IGlzIHRo
ZSBpbWFnaW5hcnkgYm94IHRoYXQgd2UgcHV0IG9uIGV2ZXJ5IGxpbmUuIEl0IHNldHMgdGhlIGlu
aXRpYWwgdmVydGljYWwgY29uc3RyYWludHMgZm9yIGVhY2ggbmV3IGxpbmUuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnVpbGRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5l
QnVpbGRlci5jcHAKaW5kZXggMTZiNDk1ZDZlZDIzMjBkMzBkZjY3NTFiNTYyYzg5NmRiMTBkMGYy
ZC4uYThmOTU5ZGY5MDJlYTBiMjVkMzBiOTYwMGQ4YmFiOWUzOTA4M2MyOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxp
bmVCdWlsZGVyLmNwcApAQCAtMTU1LDcgKzE1NSw3IEBAIHZvaWQgTGluZUJ1aWxkZXI6OmFsaWdu
Q29udGVudFZlcnRpY2FsbHkoKQogICAgICAgICAgICAgICAgIGF1dG8mIGJveEdlb21ldHJ5ID0g
Zm9ybWF0dGluZ0NvbnRleHQoKS5nZW9tZXRyeUZvckJveChsYXlvdXRCb3gpOwogICAgICAgICAg
ICAgICAgIGxvZ2ljYWxUb3AgPSBiYXNlbGluZU9mZnNldCgpIC0gYXNjZW50IC0gYm94R2VvbWV0
cnkuYm9yZGVyVG9wKCkgLSBib3hHZW9tZXRyeS5wYWRkaW5nVG9wKCkudmFsdWVPcigwKTsKICAg
ICAgICAgICAgIH0gZWxzZSBpZiAobGF5b3V0Qm94LmlzSW5saW5lQmxvY2tCb3goKSAmJiBsYXlv
dXRCb3guZXN0YWJsaXNoZXNJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCgpKSB7Ci0gICAgICAgICAg
ICAgICAgYXV0byYgZm9ybWF0dGluZ1N0YXRlID0gbGF5b3V0U3RhdGUoKS5lc3RhYmxpc2hlZElu
bGluZUZvcm1hdHRpbmdTdGF0ZShkb3duY2FzdDxDb250YWluZXI+KGxheW91dEJveCkpOworICAg
ICAgICAgICAgICAgIGF1dG8mIGZvcm1hdHRpbmdTdGF0ZSA9IGxheW91dFN0YXRlKCkuZXN0YWJs
aXNoZWRJbmxpbmVGb3JtYXR0aW5nU3RhdGUoZG93bmNhc3Q8Q29udGFpbmVyQm94PihsYXlvdXRC
b3gpKTsKICAgICAgICAgICAgICAgICAvLyBTcGVjIG1ha2VzIHVzIGdlbmVyYXRlIGF0IGxlYXN0
IG9uZSBsaW5lIC1ldmVuIGlmIGl0IGlzIGVtcHR5LgogICAgICAgICAgICAgICAgIGF1dG8gaW5s
aW5lQmxvY2tCYXNlbGluZU9mZnNldCA9IGZvcm1hdHRpbmdTdGF0ZS5kaXNwbGF5SW5saW5lQ29u
dGVudCgpLT5saW5lQm94ZXMubGFzdCgpLmJhc2VsaW5lT2Zmc2V0KCk7CiAgICAgICAgICAgICAg
ICAgLy8gVGhlIGlubGluZS1ibG9jaydzIGJhc2VsaW5lIG9mZnNldCBpcyByZWxhdGl2ZSB0byBp
dHMgY29udGVudCBib3guIExldCdzIGNvbnZlcnQgaXQgcmVsYXRpdmUgdG8gdGhlIG1hcmdpbiBi
b3guCkBAIC01NjUsNyArNTY1LDcgQEAgdm9pZCBMaW5lQnVpbGRlcjo6YWRqdXN0QmFzZWxpbmVB
bmRMaW5lSGVpZ2h0KGNvbnN0IFJ1biYgcnVuKQogICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246
OkJhc2VsaW5lOiB7CiAgICAgICAgICAgICBpZiAobGF5b3V0Qm94LmlzSW5saW5lQmxvY2tCb3go
KSAmJiBsYXlvdXRCb3guZXN0YWJsaXNoZXNJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCgpKSB7CiAg
ICAgICAgICAgICAgICAgLy8gSW5saW5lLWJsb2NrcyB3aXRoIGlubGluZSBjb250ZW50IGFsd2F5
cyBoYXZlIGJhc2VsaW5lcy4KLSAgICAgICAgICAgICAgICBhdXRvJiBmb3JtYXR0aW5nU3RhdGUg
PSBsYXlvdXRTdGF0ZSgpLmVzdGFibGlzaGVkSW5saW5lRm9ybWF0dGluZ1N0YXRlKGRvd25jYXN0
PENvbnRhaW5lcj4obGF5b3V0Qm94KSk7CisgICAgICAgICAgICAgICAgYXV0byYgZm9ybWF0dGlu
Z1N0YXRlID0gbGF5b3V0U3RhdGUoKS5lc3RhYmxpc2hlZElubGluZUZvcm1hdHRpbmdTdGF0ZShk
b3duY2FzdDxDb250YWluZXJCb3g+KGxheW91dEJveCkpOwogICAgICAgICAgICAgICAgIC8vIFNw
ZWMgbWFrZXMgdXMgZ2VuZXJhdGUgYXQgbGVhc3Qgb25lIGxpbmUgLWV2ZW4gaWYgaXQgaXMgZW1w
dHkuCiAgICAgICAgICAgICAgICAgYXV0byYgbGFzdExpbmVCb3ggPSBmb3JtYXR0aW5nU3RhdGUu
ZGlzcGxheUlubGluZUNvbnRlbnQoKS0+bGluZUJveGVzLmxhc3QoKTsKICAgICAgICAgICAgICAg
ICBhdXRvIGlubGluZUJsb2NrQmFzZWxpbmUgPSBsYXN0TGluZUJveC5iYXNlbGluZSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvTGluZUxheW91
dENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvTGlu
ZUxheW91dENvbnRleHQuY3BwCmluZGV4IGJlYjY4MmUzOTBkN2ZjZWMxNjc3ZDJlZWIwNGE0MWFj
NzE1Y2YzZDcuLjc4MTIyOWExYmQyZGMwNWJhY2YzMmFlYTc3ODA0M2Q1ODQxNjQxNWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0xpbmVMYXlvdXRD
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9M
aW5lTGF5b3V0Q29udGV4dC5jcHAKQEAgLTI0NSw3ICsyNDUsNyBAQCBzdGF0aWMgaW5saW5lIGJv
b2wgaXNMaW5lQ29uc2lkZXJlZEVtcHR5KGNvbnN0IExpbmVCdWlsZGVyJiBsaW5lKQogICAgIHJl
dHVybiBsaW5lLmlzVmlzdWFsbHlFbXB0eSgpICYmICFsaW5lLmhhc0ludHJ1c2l2ZUZsb2F0KCk7
CiB9CiAKLUxpbmVMYXlvdXRDb250ZXh0OjpMaW5lTGF5b3V0Q29udGV4dChjb25zdCBJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dCYgaW5saW5lRm9ybWF0dGluZ0NvbnRleHQsIGNvbnN0IENvbnRhaW5l
ciYgZm9ybWF0dGluZ0NvbnRleHRSb290LCBjb25zdCBJbmxpbmVJdGVtcyYgaW5saW5lSXRlbXMp
CitMaW5lTGF5b3V0Q29udGV4dDo6TGluZUxheW91dENvbnRleHQoY29uc3QgSW5saW5lRm9ybWF0
dGluZ0NvbnRleHQmIGlubGluZUZvcm1hdHRpbmdDb250ZXh0LCBjb25zdCBDb250YWluZXJCb3gm
IGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgY29uc3QgSW5saW5lSXRlbXMmIGlubGluZUl0ZW1zKQog
ICAgIDogbV9pbmxpbmVGb3JtYXR0aW5nQ29udGV4dChpbmxpbmVGb3JtYXR0aW5nQ29udGV4dCkK
ICAgICAsIG1fZm9ybWF0dGluZ0NvbnRleHRSb290KGZvcm1hdHRpbmdDb250ZXh0Um9vdCkKICAg
ICAsIG1faW5saW5lSXRlbXMoaW5saW5lSXRlbXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9MaW5lTGF5b3V0Q29udGV4dC5oIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvTGluZUxheW91dENvbnRleHQuaAppbmRleCAy
M2Q4ZjcxOWYzMTU1NjlhZDQ5MGJjMzUwY2M5OWFlZWUxNjgzZTA2Li44MzUwNmRkNGI5OGNkZTA4
ZTcwMjE3OGFjMTY2YTM0ZGIxMDM1YjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW5saW5lZm9ybWF0dGluZy9MaW5lTGF5b3V0Q29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0xpbmVMYXlvdXRDb250ZXh0LmgKQEAgLTM3LDcg
KzM3LDcgQEAgc3RydWN0IExpbmVDYW5kaWRhdGVDb250ZW50OwogCiBjbGFzcyBMaW5lTGF5b3V0
Q29udGV4dCB7CiBwdWJsaWM6Ci0gICAgTGluZUxheW91dENvbnRleHQoY29uc3QgSW5saW5lRm9y
bWF0dGluZ0NvbnRleHQmLCBjb25zdCBDb250YWluZXImIGZvcm1hdHRpbmdDb250ZXh0Um9vdCwg
Y29uc3QgSW5saW5lSXRlbXMmKTsKKyAgICBMaW5lTGF5b3V0Q29udGV4dChjb25zdCBJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dCYsIGNvbnN0IENvbnRhaW5lckJveCYgZm9ybWF0dGluZ0NvbnRleHRS
b290LCBjb25zdCBJbmxpbmVJdGVtcyYpOwogCiAgICAgc3RydWN0IExpbmVDb250ZW50IHsKICAg
ICAgICAgc3RydWN0IFBhcnRpYWxDb250ZW50IHsKQEAgLTc1LDEwICs3NSwxMCBAQCBwcml2YXRl
OgogICAgIElubGluZUxheW91dFVuaXQgaW5saW5lSXRlbVdpZHRoKGNvbnN0IElubGluZUl0ZW0m
LCBJbmxpbmVMYXlvdXRVbml0IGNvbnRlbnRMb2dpY2FsTGVmdCkgY29uc3Q7CiAKICAgICBjb25z
dCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYgZm9ybWF0dGluZ0NvbnRleHQoKSBjb25zdCB7IHJl
dHVybiBtX2lubGluZUZvcm1hdHRpbmdDb250ZXh0OyB9Ci0gICAgY29uc3QgQ29udGFpbmVyJiBy
b290KCkgY29uc3QgeyByZXR1cm4gbV9mb3JtYXR0aW5nQ29udGV4dFJvb3Q7IH0KKyAgICBjb25z
dCBDb250YWluZXJCb3gmIHJvb3QoKSBjb25zdCB7IHJldHVybiBtX2Zvcm1hdHRpbmdDb250ZXh0
Um9vdDsgfQogCiAgICAgY29uc3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQmIG1faW5saW5lRm9y
bWF0dGluZ0NvbnRleHQ7Ci0gICAgY29uc3QgQ29udGFpbmVyJiBtX2Zvcm1hdHRpbmdDb250ZXh0
Um9vdDsKKyAgICBjb25zdCBDb250YWluZXJCb3gmIG1fZm9ybWF0dGluZ0NvbnRleHRSb290Owog
ICAgIGNvbnN0IElubGluZUl0ZW1zJiBtX2lubGluZUl0ZW1zOwogICAgIEZsb2F0TGlzdCBtX2Zs
b2F0czsKICAgICBPcHRpb25hbDxJbmxpbmVUZXh0SXRlbT4gbV9wYXJ0aWFsTGVhZGluZ1RleHRJ
dGVtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91
dEludGVncmF0aW9uQm94VHJlZS5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9u
L0xheW91dEludGVncmF0aW9uQm94VHJlZS5oCmluZGV4IDRmMDYyMWFlMjkwNzAxMjYxNTFjMGQw
N2M1MWE2MDFlYjE2NzBjZTMuLjg4MTY4ZGExYWE5YmJhMWFiNGJmMzZiMThiNGU4OWYwYTMzMjVk
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJ
bnRlZ3JhdGlvbkJveFRyZWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRp
b24vTGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlLmgKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2lmIEVO
QUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQogCi0jaW5jbHVkZSAiTGF5b3V0Q29udGFp
bmVyLmgiCisjaW5jbHVkZSAiTGF5b3V0Q29udGFpbmVyQm94LmgiCiAjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTQxLDggKzQxLDggQEAgY2xh
c3MgQm94VHJlZSB7CiBwdWJsaWM6CiAgICAgQm94VHJlZShjb25zdCBSZW5kZXJCbG9ja0Zsb3cm
KTsKIAotICAgIGNvbnN0IExheW91dDo6Q29udGFpbmVyJiByb290TGF5b3V0Qm94KCkgY29uc3Qg
eyByZXR1cm4gbV9yb290OyB9Ci0gICAgTGF5b3V0OjpDb250YWluZXImIHJvb3RMYXlvdXRCb3go
KSB7IHJldHVybiBtX3Jvb3Q7IH0KKyAgICBjb25zdCBMYXlvdXQ6OkNvbnRhaW5lckJveCYgcm9v
dExheW91dEJveCgpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdDsgfQorICAgIExheW91dDo6Q29udGFp
bmVyQm94JiByb290TGF5b3V0Qm94KCkgeyByZXR1cm4gbV9yb290OyB9CiAKICAgICBjb25zdCBM
YXlvdXQ6OkJveCogbGF5b3V0Qm94Rm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0JikgY29u
c3Q7CiAgICAgY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlckZvckxheW91dEJveChjb25zdCBM
YXlvdXQ6OkJveCYpIGNvbnN0OwpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgog
ICAgIHZvaWQgYnVpbGRUcmVlKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYpOwogCi0gICAgTGF5b3V0
OjpDb250YWluZXIgbV9yb290OworICAgIExheW91dDo6Q29udGFpbmVyQm94IG1fcm9vdDsKICAg
ICBzdHJ1Y3QgQm94QW5kUmVuZGVyZXIgewogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Y29uc3Qg
TGF5b3V0OjpCb3g+IGJveDsKICAgICAgICAgY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlciB7
IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlv
bi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKaW5kZXggZDgxYzhi
NjI2NTVkYmRhMjM3ZDM4ODRmYTYxNmNlNzYzMzFjMWE5MC4uMmZjNjU3NTY4OTYxMjFhM2VhMDY3
OTUzOWI1ZTQ2OGZjZWVjNDQ1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
dGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAK
QEAgLTI0MiwxMiArMjQyLDEyIEBAIExpbmVMYXlvdXRUcmF2ZXJzYWw6OkVsZW1lbnRCb3hJdGVy
YXRvciBMaW5lTGF5b3V0OjplbGVtZW50Qm94Rm9yKGNvbnN0IFJlbmRlckxpCiAgICAgcmV0dXJu
IHsgfTsKIH0KIAotY29uc3QgTGF5b3V0OjpDb250YWluZXImIExpbmVMYXlvdXQ6OnJvb3RMYXlv
dXRCb3goKSBjb25zdAorY29uc3QgTGF5b3V0OjpDb250YWluZXJCb3gmIExpbmVMYXlvdXQ6OnJv
b3RMYXlvdXRCb3goKSBjb25zdAogewogICAgIHJldHVybiBtX2JveFRyZWUucm9vdExheW91dEJv
eCgpOwogfQogCi1MYXlvdXQ6OkNvbnRhaW5lciYgTGluZUxheW91dDo6cm9vdExheW91dEJveCgp
CitMYXlvdXQ6OkNvbnRhaW5lckJveCYgTGluZUxheW91dDo6cm9vdExheW91dEJveCgpCiB7CiAg
ICAgcmV0dXJuIG1fYm94VHJlZS5yb290TGF5b3V0Qm94KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0
LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25M
aW5lTGF5b3V0LmgKaW5kZXggYWE2YmJlZmUyMGZhM2IyZjBlNDkzMmEyYTE5NGUxNjVlY2EzMWQy
My4uMDIyZmE0MTY4ODFlNzVmMWFjYjhiYjgwNWQ0MmRhY2U4YmI5MmNlZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxh
eW91dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRl
Z3JhdGlvbkxpbmVMYXlvdXQuaApAQCAtODYsOCArODYsOCBAQCBwcml2YXRlOgogICAgIHZvaWQg
cHJlcGFyZUxheW91dFN0YXRlKCk7CiAgICAgdm9pZCBwcmVwYXJlRmxvYXRpbmdTdGF0ZSgpOwog
Ci0gICAgY29uc3QgTGF5b3V0OjpDb250YWluZXImIHJvb3RMYXlvdXRCb3goKSBjb25zdDsKLSAg
ICBMYXlvdXQ6OkNvbnRhaW5lciYgcm9vdExheW91dEJveCgpOworICAgIGNvbnN0IExheW91dDo6
Q29udGFpbmVyQm94JiByb290TGF5b3V0Qm94KCkgY29uc3Q7CisgICAgTGF5b3V0OjpDb250YWlu
ZXJCb3gmIHJvb3RMYXlvdXRCb3goKTsKICAgICBTaGFkb3dEYXRhKiBkZWJ1Z1RleHRTaGFkb3co
KTsKICAgICB2b2lkIHJlbGVhc2VJbmxpbmVJdGVtQ2FjaGUoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2ludmFsaWRhdGlvbi9JbnZhbGlkYXRpb25TdGF0ZS5oIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2ludmFsaWRhdGlvbi9JbnZhbGlkYXRpb25TdGF0ZS5oCmluZGV4
IDVlMjI0NWVjNzQwNGZiMDg0NzlhMTlhMjM1ODk0Y2VhNjkxZmI2YzEuLjE3MGUwMTQ0OGEwMDc4
YjMxYzI4NzI4YjQ1YjhkNmE1NDNiNTM3MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbnZhbGlkYXRpb24vSW52YWxpZGF0aW9uU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW52YWxpZGF0aW9uL0ludmFsaWRhdGlvblN0YXRlLmgKQEAgLTI4LDcgKzI4LDcg
QEAKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKIAogI2luY2x1ZGUgIkxh
eW91dEJveC5oIgotI2luY2x1ZGUgIkxheW91dENvbnRhaW5lci5oIgorI2luY2x1ZGUgIkxheW91
dENvbnRhaW5lckJveC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4KICNpbmNsdWRlIDx3
dGYvV2Vha0hhc2hTZXQuaD4KIApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBt
YXJrTmVlZHNVcGRhdGUoY29uc3QgQm94Jik7CiAgICAgYm9vbCBuZWVkc0xheW91dChjb25zdCBC
b3gmKSBjb25zdDsKIAotICAgIHVzaW5nIEZvcm1hdHRpbmdDb250ZXh0Um9vdHMgPSBXZWFrSGFz
aFNldDxjb25zdCBDb250YWluZXI+OworICAgIHVzaW5nIEZvcm1hdHRpbmdDb250ZXh0Um9vdHMg
PSBXZWFrSGFzaFNldDxjb25zdCBDb250YWluZXJCb3g+OwogICAgIC8vIEZJWE1FOiBXZSBjdXJy
ZW50bHkgZG8gZnVsbCBmb3JtYXR0aW5nIGNvbnRleHQgbGF5b3V0cyAobm8gcGFydGlhbCBsYXlv
dXQgd2l0aGluIGEgZm9ybWF0dGluZyBjb250ZXh0KS4KICAgICBjb25zdCBGb3JtYXR0aW5nQ29u
dGV4dFJvb3RzJiBmb3JtYXR0aW5nQ29udGV4dFJvb3RzKCkgY29uc3QgeyByZXR1cm4gbV9mb3Jt
YXR0aW5nQ29udGV4dFJvb3RzOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9sYXlvdXR0cmVlL0xheW91dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0
dHJlZS9MYXlvdXRCb3guY3BwCmluZGV4IGE3YjcwN2MxOTc5MWM4N2Y3MTVkNTJkMjg4MDI0ODM5
OGYxMWY2MDYuLmZmMTkzODI3ZWQ3MTQ3ZDA2ODE1ODllNGU1ODYyYjdiZjBkZjk0ODcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmNwcApAQCAtMjks
NyArMjksNyBAQAogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQogCiAjaW5j
bHVkZSAiRGlzcGxheUJveC5oIgotI2luY2x1ZGUgIkxheW91dENvbnRhaW5lci5oIgorI2luY2x1
ZGUgIkxheW91dENvbnRhaW5lckJveC5oIgogI2luY2x1ZGUgIkxheW91dFBoYXNlLmgiCiAjaW5j
bHVkZSAiTGF5b3V0U3RhdGUuaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgpAQCAtOTksMTUg
Kzk5LDE1IEBAIGJvb2wgQm94Ojplc3RhYmxpc2hlc0lubGluZUZvcm1hdHRpbmdDb250ZXh0KCkg
Y29uc3QKICAgICBpZiAoIWlzQmxvY2tDb250YWluZXJCb3goKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgaWYgKCFpc0NvbnRhaW5lcigpKQorICAgIGlmICghaXNDb250YWluZXJCb3go
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gRklYTUUgPz8/Ci0gICAgaWYgKCFk
b3duY2FzdDxDb250YWluZXI+KCp0aGlzKS5maXJzdEluRmxvd0NoaWxkKCkpCisgICAgaWYgKCFk
b3duY2FzdDxDb250YWluZXJCb3g+KCp0aGlzKS5maXJzdEluRmxvd0NoaWxkKCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIC8vIEl0J3MgZW5vdWdoIHRvIGNoZWNrIHRoZSBmaXJzdCBp
bi1mbG93IGNoaWxkIHNpbmNlIHdlIGNhbid0IGhhdmUgYm90aCBibG9jayBhbmQgaW5saW5lIGxl
dmVsIHNpYmxpbmcgYm94ZXMuCi0gICAgcmV0dXJuIGRvd25jYXN0PENvbnRhaW5lcj4oKnRoaXMp
LmZpcnN0SW5GbG93Q2hpbGQoKS0+aXNJbmxpbmVMZXZlbEJveCgpOworICAgIHJldHVybiBkb3du
Y2FzdDxDb250YWluZXJCb3g+KCp0aGlzKS5maXJzdEluRmxvd0NoaWxkKCktPmlzSW5saW5lTGV2
ZWxCb3goKTsKIH0KIAogYm9vbCBCb3g6OmVzdGFibGlzaGVzVGFibGVGb3JtYXR0aW5nQ29udGV4
dCgpIGNvbnN0CkBAIC0xNzQsNyArMTc0LDcgQEAgYm9vbCBCb3g6OmlzRmxvYXRBdm9pZGVyKCkg
Y29uc3QKICAgICAgICAgfHwgZXN0YWJsaXNoZXNUYWJsZUZvcm1hdHRpbmdDb250ZXh0KCkgfHwg
ZXN0YWJsaXNoZXNJbmRlcGVuZGVudEZvcm1hdHRpbmdDb250ZXh0KCkgfHwgaGFzRmxvYXRDbGVh
cigpOwogfQogCi1jb25zdCBDb250YWluZXIqIEJveDo6Y29udGFpbmluZ0Jsb2NrKCkgY29uc3QK
K2NvbnN0IENvbnRhaW5lckJveCogQm94Ojpjb250YWluaW5nQmxvY2soKSBjb25zdAogewogICAg
IC8vIEZpbmRpbmcgdGhlIGNvbnRhaW5pbmcgYmxvY2sgYnkgdHJhdmVyc2luZyB0aGUgdHJlZSBk
dXJpbmcgdHJlZSBjb25zdHJ1Y3Rpb24gY291bGQgcHJvdmlkZSBpbmNvcnJlY3QgcmVzdWx0Lgog
ICAgIEFTU0VSVCghUGhhc2U6OmlzSW5UcmVlQnVpbGRpbmcoKSk7CkBAIC0yMTMsNyArMjEzLDcg
QEAgY29uc3QgQ29udGFpbmVyKiBCb3g6OmNvbnRhaW5pbmdCbG9jaygpIGNvbnN0CiAgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKLWNvbnN0IENvbnRhaW5lciYgQm94Ojpmb3JtYXR0aW5nQ29udGV4
dFJvb3QoKSBjb25zdAorY29uc3QgQ29udGFpbmVyQm94JiBCb3g6OmZvcm1hdHRpbmdDb250ZXh0
Um9vdCgpIGNvbnN0CiB7CiAgICAgLy8gRmluZGluZyB0aGUgY29udGV4dCByb290IGJ5IHRyYXZl
cnNpbmcgdGhlIHRyZWUgZHVyaW5nIHRyZWUgY29uc3RydWN0aW9uIGNvdWxkIHByb3ZpZGUgaW5j
b3JyZWN0IHJlc3VsdC4KICAgICBBU1NFUlQoIVBoYXNlOjppc0luVHJlZUJ1aWxkaW5nKCkpOwpA
QCAtMjI2LDcgKzIyNiw3IEBAIGNvbnN0IENvbnRhaW5lciYgQm94Ojpmb3JtYXR0aW5nQ29udGV4
dFJvb3QoKSBjb25zdAogICAgIC8vIDxkaXYgaWQ9b3V0ZXIgc3R5bGU9InBvc2l0aW9uOiBhYnNv
bHV0ZSI+PGRpdiBpZD1pbm5lcj48c3BhbiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlIj5jb250
ZW50PC9zcGFuPjwvZGl2PjwvZGl2PgogICAgIC8vIFdoaWxlIHRoZSByZWxhdGl2ZWx5IHBvc2l0
aW9uZWQgaW5saW5lIGNvbnRhaW5lciAoc3BhbikgaXMgcGxhY2VkIHJlbGF0aXZlIHRvIGl0cyBj
b250YWluaW5nIGJsb2NrICJvdXRlciIsIGl0IGxpdmVzIGluIHRoZSBpbmxpbmUKICAgICAvLyBm
b3JtYXR0aW5nIGNvbnRleHQgZXN0YWJsaXNoZWQgYnkgImlubmVyIi4KLSAgICBjb25zdCBDb250
YWluZXIqIGFuY2VzdG9yID0gbnVsbHB0cjsKKyAgICBjb25zdCBDb250YWluZXJCb3gqIGFuY2Vz
dG9yID0gbnVsbHB0cjsKICAgICBpZiAoaXNJbmxpbmVMZXZlbEJveCgpICYmIGlzSW5GbG93UG9z
aXRpb25lZCgpKQogICAgICAgICBhbmNlc3RvciA9IHBhcmVudCgpOwogICAgIGVsc2UKQEAgLTIz
NywxMCArMjM3LDEwIEBAIGNvbnN0IENvbnRhaW5lciYgQm94Ojpmb3JtYXR0aW5nQ29udGV4dFJv
b3QoKSBjb25zdAogICAgIHJldHVybiBhbmNlc3Rvci0+Zm9ybWF0dGluZ0NvbnRleHRSb290KCk7
CiB9CiAKLWNvbnN0IENvbnRhaW5lciYgQm94Ojppbml0aWFsQ29udGFpbmluZ0Jsb2NrKCkgY29u
c3QKK2NvbnN0IENvbnRhaW5lckJveCYgQm94Ojppbml0aWFsQ29udGFpbmluZ0Jsb2NrKCkgY29u
c3QKIHsKICAgICBpZiAoaXNJbml0aWFsQ29udGFpbmluZ0Jsb2NrKCkpCi0gICAgICAgIHJldHVy
biBkb3duY2FzdDxDb250YWluZXI+KCp0aGlzKTsKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PENv
bnRhaW5lckJveD4oKnRoaXMpOwogCiAgICAgYXV0byogcGFyZW50ID0gdGhpcy0+cGFyZW50KCk7
CiAgICAgZm9yICg7IHBhcmVudC0+cGFyZW50KCk7IHBhcmVudCA9IHBhcmVudC0+cGFyZW50KCkp
IHsgfQpAQCAtMjQ4LDcgKzI0OCw3IEBAIGNvbnN0IENvbnRhaW5lciYgQm94Ojppbml0aWFsQ29u
dGFpbmluZ0Jsb2NrKCkgY29uc3QKICAgICByZXR1cm4gKnBhcmVudDsKIH0KIAotYm9vbCBCb3g6
OmlzRGVzY2VuZGFudE9mKGNvbnN0IENvbnRhaW5lciYgYW5jZXN0b3JDYW5kaWRhdGUpIGNvbnN0
Citib29sIEJveDo6aXNEZXNjZW5kYW50T2YoY29uc3QgQ29udGFpbmVyQm94JiBhbmNlc3RvckNh
bmRpZGF0ZSkgY29uc3QKIHsKICAgICBmb3IgKGF1dG8qIGFuY2VzdG9yID0gcGFyZW50KCk7IGFu
Y2VzdG9yOyBhbmNlc3RvciA9IGFuY2VzdG9yLT5wYXJlbnQoKSkgewogICAgICAgICBpZiAoYW5j
ZXN0b3IgPT0gJmFuY2VzdG9yQ2FuZGlkYXRlKQpAQCAtMjU3LDcgKzI1Nyw3IEBAIGJvb2wgQm94
Ojppc0Rlc2NlbmRhbnRPZihjb25zdCBDb250YWluZXImIGFuY2VzdG9yQ2FuZGlkYXRlKSBjb25z
dAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBCb3g6OmlzQ29udGFpbmluZ0Jsb2NrRGVz
Y2VuZGFudE9mKGNvbnN0IENvbnRhaW5lciYgYW5jZXN0b3JDYW5kaWRhdGUpIGNvbnN0Citib29s
IEJveDo6aXNDb250YWluaW5nQmxvY2tEZXNjZW5kYW50T2YoY29uc3QgQ29udGFpbmVyQm94JiBh
bmNlc3RvckNhbmRpZGF0ZSkgY29uc3QKIHsgCiAgICAgZm9yIChhdXRvKiBhbmNlc3RvciA9IGNv
bnRhaW5pbmdCbG9jaygpOyBhbmNlc3RvcjsgYW5jZXN0b3IgPSBhbmNlc3Rvci0+Y29udGFpbmlu
Z0Jsb2NrKCkpIHsKICAgICAgICAgaWYgKGFuY2VzdG9yID09ICZhbmNlc3RvckNhbmRpZGF0ZSkK
QEAgLTM2NSwxMCArMzY1LDEwIEBAIGJvb2wgQm94Ojppc092ZXJmbG93VmlzaWJsZSgpIGNvbnN0
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBpZiAoaXNJbml0aWFsQ29udGFpbmlu
Z0Jsb2NrKCkpIHsKLSAgICAgICAgYXV0byogZG9jdW1lbnRCb3ggPSBkb3duY2FzdDxDb250YWlu
ZXI+KCp0aGlzKS5maXJzdENoaWxkKCk7Ci0gICAgICAgIGlmICghZG9jdW1lbnRCb3ggfHwgIWRv
Y3VtZW50Qm94LT5pc0RvY3VtZW50Qm94KCkgfHwgIWlzPENvbnRhaW5lcj4oZG9jdW1lbnRCb3gp
KQorICAgICAgICBhdXRvKiBkb2N1bWVudEJveCA9IGRvd25jYXN0PENvbnRhaW5lckJveD4oKnRo
aXMpLmZpcnN0Q2hpbGQoKTsKKyAgICAgICAgaWYgKCFkb2N1bWVudEJveCB8fCAhZG9jdW1lbnRC
b3gtPmlzRG9jdW1lbnRCb3goKSB8fCAhaXM8Q29udGFpbmVyQm94Pihkb2N1bWVudEJveCkpCiAg
ICAgICAgICAgICByZXR1cm4gaXNPdmVyZmxvd1Zpc2libGU7Ci0gICAgICAgIGF1dG8qIGJvZHlC
b3ggPSBkb3duY2FzdDxDb250YWluZXI+KGRvY3VtZW50Qm94KS0+Zmlyc3RDaGlsZCgpOworICAg
ICAgICBhdXRvKiBib2R5Qm94ID0gZG93bmNhc3Q8Q29udGFpbmVyQm94Pihkb2N1bWVudEJveCkt
PmZpcnN0Q2hpbGQoKTsKICAgICAgICAgaWYgKCFib2R5Qm94IHx8ICFib2R5Qm94LT5pc0JvZHlC
b3goKSkKICAgICAgICAgICAgIHJldHVybiBpc092ZXJmbG93VmlzaWJsZTsKICAgICAgICAgYXV0
byYgYm9keUJveFN0eWxlID0gYm9keUJveC0+c3R5bGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5oIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmgKaW5kZXggNGRkNGQ4NWRiMjg2ODE5OWQ0OGMyMWUw
Zjg1YzRmZTFmOTZkMDllNC4uNzliODA5MmQ2ZDdlZDAzOTIyMWVmY2QyMjA2YmI3OWNkMmRjMDlm
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmgKQEAg
LTM5LDcgKzM5LDcgQEAgY2xhc3MgQm94OwogCiBuYW1lc3BhY2UgTGF5b3V0IHsKIAotY2xhc3Mg
Q29udGFpbmVyOworY2xhc3MgQ29udGFpbmVyQm94OwogY2xhc3MgTGF5b3V0U3RhdGU7CiBjbGFz
cyBUcmVlQnVpbGRlcjsKIApAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgICAgIElubGlu
ZVRleHRCb3ggICAgICAgICAgPSAxIDw8IDEsCiAgICAgICAgIExpbmVCcmVha0JveCAgICAgICAg
ICAgPSAxIDw8IDIsCiAgICAgICAgIFJlcGxhY2VkQm94ICAgICAgICAgICAgPSAxIDw8IDMsCi0g
ICAgICAgIENvbnRhaW5lckZsYWcgICAgICAgICAgPSAxIDw8IDQKKyAgICAgICAgQ29udGFpbmVy
Qm94RmxhZyAgICAgICA9IDEgPDwgNAogICAgIH07CiAgICAgdHlwZWRlZiB1bnNpZ25lZCBCYXNl
VHlwZUZsYWdzOwogCkBAIC05MywxMiArOTMsMTIgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0Zs
b2F0aW5nT3JPdXRPZkZsb3dQb3NpdGlvbmVkKCkgY29uc3QgeyByZXR1cm4gaXNGbG9hdGluZ1Bv
c2l0aW9uZWQoKSB8fCBpc091dE9mRmxvd1Bvc2l0aW9uZWQoKTsgfQogCi0gICAgY29uc3QgQ29u
dGFpbmVyKiBjb250YWluaW5nQmxvY2soKSBjb25zdDsKLSAgICBjb25zdCBDb250YWluZXImIGZv
cm1hdHRpbmdDb250ZXh0Um9vdCgpIGNvbnN0OwotICAgIGNvbnN0IENvbnRhaW5lciYgaW5pdGlh
bENvbnRhaW5pbmdCbG9jaygpIGNvbnN0OworICAgIGNvbnN0IENvbnRhaW5lckJveCogY29udGFp
bmluZ0Jsb2NrKCkgY29uc3Q7CisgICAgY29uc3QgQ29udGFpbmVyQm94JiBmb3JtYXR0aW5nQ29u
dGV4dFJvb3QoKSBjb25zdDsKKyAgICBjb25zdCBDb250YWluZXJCb3gmIGluaXRpYWxDb250YWlu
aW5nQmxvY2soKSBjb25zdDsKIAotICAgIGJvb2wgaXNEZXNjZW5kYW50T2YoY29uc3QgQ29udGFp
bmVyJikgY29uc3Q7Ci0gICAgYm9vbCBpc0NvbnRhaW5pbmdCbG9ja0Rlc2NlbmRhbnRPZihjb25z
dCBDb250YWluZXImKSBjb25zdDsKKyAgICBib29sIGlzRGVzY2VuZGFudE9mKGNvbnN0IENvbnRh
aW5lckJveCYpIGNvbnN0OworICAgIGJvb2wgaXNDb250YWluaW5nQmxvY2tEZXNjZW5kYW50T2Yo
Y29uc3QgQ29udGFpbmVyQm94JikgY29uc3Q7CiAKICAgICBib29sIGlzQW5vbnltb3VzKCkgY29u
c3QgeyByZXR1cm4gbV9pc0Fub255bW91czsgfQogCkBAIC0xMjYsNyArMTI2LDcgQEAgcHVibGlj
OgogICAgIGJvb2wgaXNJRnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnRBdHRyaWJ1dGVz
ICYmIG1fZWxlbWVudEF0dHJpYnV0ZXMudmFsdWUoKS5lbGVtZW50VHlwZSA9PSBFbGVtZW50VHlw
ZTo6SUZyYW1lOyB9CiAgICAgYm9vbCBpc0ltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50
QXR0cmlidXRlcyAmJiBtX2VsZW1lbnRBdHRyaWJ1dGVzLnZhbHVlKCkuZWxlbWVudFR5cGUgPT0g
RWxlbWVudFR5cGU6OkltYWdlOyB9CiAKLSAgICBjb25zdCBDb250YWluZXIqIHBhcmVudCgpIGNv
bnN0IHsgcmV0dXJuIG1fcGFyZW50OyB9CisgICAgY29uc3QgQ29udGFpbmVyQm94KiBwYXJlbnQo
KSBjb25zdCB7IHJldHVybiBtX3BhcmVudDsgfQogICAgIGNvbnN0IEJveCogbmV4dFNpYmxpbmco
KSBjb25zdCB7IHJldHVybiBtX25leHRTaWJsaW5nOyB9CiAgICAgY29uc3QgQm94KiBuZXh0SW5G
bG93U2libGluZygpIGNvbnN0OwogICAgIGNvbnN0IEJveCogbmV4dEluRmxvd09yRmxvYXRpbmdT
aWJsaW5nKCkgY29uc3Q7CkBAIC0xMzcsNyArMTM3LDcgQEAgcHVibGljOgogICAgIC8vIEZJWE1F
OiBUaGlzIGlzIGN1cnJlbnRseSBuZWVkZWQgZm9yIHN0eWxlIHVwZGF0ZXMuCiAgICAgQm94KiBu
ZXh0U2libGluZygpIHsgcmV0dXJuIG1fbmV4dFNpYmxpbmc7IH0KIAotICAgIGJvb2wgaXNDb250
YWluZXIoKSBjb25zdCB7IHJldHVybiBtX2Jhc2VUeXBlRmxhZ3MgJiBDb250YWluZXJGbGFnOyB9
CisgICAgYm9vbCBpc0NvbnRhaW5lckJveCgpIGNvbnN0IHsgcmV0dXJuIG1fYmFzZVR5cGVGbGFn
cyAmIENvbnRhaW5lckJveEZsYWc7IH0KICAgICBib29sIGlzSW5saW5lVGV4dEJveCgpIGNvbnN0
IHsgcmV0dXJuIG1fYmFzZVR5cGVGbGFncyAmIElubGluZVRleHRCb3g7IH0KICAgICBib29sIGlz
TGluZUJyZWFrQm94KCkgY29uc3QgeyByZXR1cm4gbV9iYXNlVHlwZUZsYWdzICYgTGluZUJyZWFr
Qm94OyB9CiAgICAgYm9vbCBpc1JlcGxhY2VkQm94KCkgY29uc3QgeyByZXR1cm4gbV9iYXNlVHlw
ZUZsYWdzICYgUmVwbGFjZWRCb3g7IH0KQEAgLTE1OCw3ICsxNTgsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRDb2x1bW5XaWR0aChMYXlvdXRVbml0KTsKICAgICBPcHRpb25hbDxMYXlvdXRVbml0
PiBjb2x1bW5XaWR0aCgpIGNvbnN0OwogCi0gICAgdm9pZCBzZXRQYXJlbnQoQ29udGFpbmVyJiBw
YXJlbnQpIHsgbV9wYXJlbnQgPSAmcGFyZW50OyB9CisgICAgdm9pZCBzZXRQYXJlbnQoQ29udGFp
bmVyQm94JiBwYXJlbnQpIHsgbV9wYXJlbnQgPSAmcGFyZW50OyB9CiAgICAgdm9pZCBzZXROZXh0
U2libGluZyhCb3gmIG5leHRTaWJsaW5nKSB7IG1fbmV4dFNpYmxpbmcgPSAmbmV4dFNpYmxpbmc7
IH0KICAgICB2b2lkIHNldFByZXZpb3VzU2libGluZyhCb3gmIHByZXZpb3VzU2libGluZykgeyBt
X3ByZXZpb3VzU2libGluZyA9ICZwcmV2aW91c1NpYmxpbmc7IH0KIApAQCAtMTk1LDcgKzE5NSw3
IEBAIHByaXZhdGU6CiAgICAgUmVuZGVyU3R5bGUgbV9zdHlsZTsKICAgICBPcHRpb25hbDxFbGVt
ZW50QXR0cmlidXRlcz4gbV9lbGVtZW50QXR0cmlidXRlczsKIAotICAgIENvbnRhaW5lciogbV9w
YXJlbnQgeyBudWxscHRyIH07CisgICAgQ29udGFpbmVyQm94KiBtX3BhcmVudCB7IG51bGxwdHIg
fTsKICAgICBCb3gqIG1fcHJldmlvdXNTaWJsaW5nIHsgbnVsbHB0ciB9OwogICAgIEJveCogbV9u
ZXh0U2libGluZyB7IG51bGxwdHIgfTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9sYXlvdXR0cmVlL0xheW91dENoaWxkSXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9sYXlvdXR0cmVlL0xheW91dENoaWxkSXRlcmF0b3IuaAppbmRleCBkNWQwMjE4N2Vi
YThiZDIzOGRmYTM4N2EyZjc1ODBjYWRmMmE5MmVhLi43ZDZlNGNmODBhNmIyNDQ5MmJkYmEwNjVj
YzA5ODE4MzFlMjg2NTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0
dHJlZS9MYXlvdXRDaGlsZEl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xh
eW91dHRyZWUvTGF5b3V0Q2hpbGRJdGVyYXRvci5oCkBAIC0zNSwzNiArMzUsMzYgQEAgbmFtZXNw
YWNlIExheW91dCB7CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIGNsYXNzIExheW91dENoaWxkSXRl
cmF0b3IgOiBwdWJsaWMgTGF5b3V0SXRlcmF0b3I8VD4gewogcHVibGljOgotICAgIExheW91dENo
aWxkSXRlcmF0b3IoY29uc3QgQ29udGFpbmVyJiBwYXJlbnQpOwotICAgIExheW91dENoaWxkSXRl
cmF0b3IoY29uc3QgQ29udGFpbmVyJiBwYXJlbnQsIGNvbnN0IFQqIGN1cnJlbnQpOworICAgIExh
eW91dENoaWxkSXRlcmF0b3IoY29uc3QgQ29udGFpbmVyQm94JiBwYXJlbnQpOworICAgIExheW91
dENoaWxkSXRlcmF0b3IoY29uc3QgQ29udGFpbmVyQm94JiBwYXJlbnQsIGNvbnN0IFQqIGN1cnJl
bnQpOwogICAgIExheW91dENoaWxkSXRlcmF0b3ImIG9wZXJhdG9yKysoKTsKIH07CiAKIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgogY2xhc3MgTGF5b3V0Q2hpbGRJdGVyYXRvckFkYXB0ZXIgewogcHVi
bGljOgotICAgIExheW91dENoaWxkSXRlcmF0b3JBZGFwdGVyKGNvbnN0IENvbnRhaW5lciYgcGFy
ZW50KTsKKyAgICBMYXlvdXRDaGlsZEl0ZXJhdG9yQWRhcHRlcihjb25zdCBDb250YWluZXJCb3gm
IHBhcmVudCk7CiAgICAgTGF5b3V0Q2hpbGRJdGVyYXRvcjxUPiBiZWdpbigpIGNvbnN0OwogICAg
IExheW91dENoaWxkSXRlcmF0b3I8VD4gZW5kKCkgY29uc3Q7CiAgICAgY29uc3QgVCogZmlyc3Qo
KSBjb25zdDsKICAgICBjb25zdCBUKiBsYXN0KCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgY29u
c3QgQ29udGFpbmVyJiBtX3BhcmVudDsKKyAgICBjb25zdCBDb250YWluZXJCb3gmIG1fcGFyZW50
OwogfTsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IExheW91dENoaWxkSXRlcmF0b3JBZGFwdGVy
PFQ+IGNoaWxkcmVuT2ZUeXBlKGNvbnN0IENvbnRhaW5lciYpOwordGVtcGxhdGUgPHR5cGVuYW1l
IFQ+IExheW91dENoaWxkSXRlcmF0b3JBZGFwdGVyPFQ+IGNoaWxkcmVuT2ZUeXBlKGNvbnN0IENv
bnRhaW5lckJveCYpOwogCiAvLyBMYXlvdXRDaGlsZEl0ZXJhdG9yCiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPgotaW5saW5lIExheW91dENoaWxkSXRlcmF0b3I8VD46OkxheW91dENoaWxkSXRlcmF0
b3IoY29uc3QgQ29udGFpbmVyJiBwYXJlbnQpCitpbmxpbmUgTGF5b3V0Q2hpbGRJdGVyYXRvcjxU
Pjo6TGF5b3V0Q2hpbGRJdGVyYXRvcihjb25zdCBDb250YWluZXJCb3gmIHBhcmVudCkKICAgICA6
IExheW91dEl0ZXJhdG9yPFQ+KCZwYXJlbnQpCiB7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PgotaW5saW5lIExheW91dENoaWxkSXRlcmF0b3I8VD46OkxheW91dENoaWxkSXRlcmF0b3IoY29u
c3QgQ29udGFpbmVyJiBwYXJlbnQsIGNvbnN0IFQqIGN1cnJlbnQpCitpbmxpbmUgTGF5b3V0Q2hp
bGRJdGVyYXRvcjxUPjo6TGF5b3V0Q2hpbGRJdGVyYXRvcihjb25zdCBDb250YWluZXJCb3gmIHBh
cmVudCwgY29uc3QgVCogY3VycmVudCkKICAgICA6IExheW91dEl0ZXJhdG9yPFQ+KCZwYXJlbnQs
IGN1cnJlbnQpCiB7CiB9CkBAIC03OCw3ICs3OCw3IEBAIGlubGluZSBMYXlvdXRDaGlsZEl0ZXJh
dG9yPFQ+JiBMYXlvdXRDaGlsZEl0ZXJhdG9yPFQ+OjpvcGVyYXRvcisrKCkKIC8vIExheW91dENo
aWxkSXRlcmF0b3JBZGFwdGVyCiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5lIExheW91
dENoaWxkSXRlcmF0b3JBZGFwdGVyPFQ+OjpMYXlvdXRDaGlsZEl0ZXJhdG9yQWRhcHRlcihjb25z
dCBDb250YWluZXImIHBhcmVudCkKK2lubGluZSBMYXlvdXRDaGlsZEl0ZXJhdG9yQWRhcHRlcjxU
Pjo6TGF5b3V0Q2hpbGRJdGVyYXRvckFkYXB0ZXIoY29uc3QgQ29udGFpbmVyQm94JiBwYXJlbnQp
CiAgICAgOiBtX3BhcmVudChwYXJlbnQpCiB7CiB9CkBAIC0xMDgsNyArMTA4LDcgQEAgaW5saW5l
IGNvbnN0IFQqIExheW91dENoaWxkSXRlcmF0b3JBZGFwdGVyPFQ+OjpsYXN0KCkgY29uc3QKIH0K
IAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgTGF5b3V0Q2hpbGRJdGVyYXRvckFkYXB0
ZXI8VD4gY2hpbGRyZW5PZlR5cGUoY29uc3QgQ29udGFpbmVyJiBwYXJlbnQpCitpbmxpbmUgTGF5
b3V0Q2hpbGRJdGVyYXRvckFkYXB0ZXI8VD4gY2hpbGRyZW5PZlR5cGUoY29uc3QgQ29udGFpbmVy
Qm94JiBwYXJlbnQpCiB7CiAgICAgcmV0dXJuIExheW91dENoaWxkSXRlcmF0b3JBZGFwdGVyPFQ+
KHBhcmVudCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJl
ZS9MYXlvdXRDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUv
TGF5b3V0Q29udGFpbmVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjBjYzgz
NGQzMmM5NGQ0ZjYxZTc2YmRlYmU2ZDc2OWU0ZDljZDk0My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJl
ZS9MYXlvdXRDb250YWluZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTA5ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiTGF5b3V0Q29udGFpbmVy
LmgiCi0KLSNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKLQotI2luY2x1ZGUg
IlJlbmRlclN0eWxlLmgiCi0jaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotbmFtZXNwYWNlIExheW91dCB7Ci0KLVdURl9NQUtFX0lTT19BTExP
Q0FURURfSU1QTChDb250YWluZXIpOwotCi1Db250YWluZXI6OkNvbnRhaW5lcihPcHRpb25hbDxF
bGVtZW50QXR0cmlidXRlcz4gYXR0cmlidXRlcywgUmVuZGVyU3R5bGUmJiBzdHlsZSwgQmFzZVR5
cGVGbGFncyBiYXNlVHlwZUZsYWdzKQotICAgIDogQm94KGF0dHJpYnV0ZXMsIFdURk1vdmUoc3R5
bGUpLCBiYXNlVHlwZUZsYWdzIHwgQ29udGFpbmVyRmxhZykKLXsKLX0KLQotY29uc3QgQm94KiBD
b250YWluZXI6OmZpcnN0SW5GbG93Q2hpbGQoKSBjb25zdAotewotICAgIGlmIChhdXRvKiBmaXJz
dENoaWxkID0gdGhpcy0+Zmlyc3RDaGlsZCgpKSB7Ci0gICAgICAgIGlmIChmaXJzdENoaWxkLT5p
c0luRmxvdygpKQotICAgICAgICAgICAgcmV0dXJuIGZpcnN0Q2hpbGQ7Ci0gICAgICAgIHJldHVy
biBmaXJzdENoaWxkLT5uZXh0SW5GbG93U2libGluZygpOwotICAgIH0KLSAgICByZXR1cm4gbnVs
bHB0cjsKLX0KLQotY29uc3QgQm94KiBDb250YWluZXI6OmZpcnN0SW5GbG93T3JGbG9hdGluZ0No
aWxkKCkgY29uc3QKLXsKLSAgICBpZiAoYXV0byogZmlyc3RDaGlsZCA9IHRoaXMtPmZpcnN0Q2hp
bGQoKSkgewotICAgICAgICBpZiAoZmlyc3RDaGlsZC0+aXNJbkZsb3coKSB8fCBmaXJzdENoaWxk
LT5pc0Zsb2F0aW5nUG9zaXRpb25lZCgpKQotICAgICAgICAgICAgcmV0dXJuIGZpcnN0Q2hpbGQ7
Ci0gICAgICAgIHJldHVybiBmaXJzdENoaWxkLT5uZXh0SW5GbG93T3JGbG9hdGluZ1NpYmxpbmco
KTsKLSAgICB9Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLWNvbnN0IEJveCogQ29udGFpbmVy
OjpsYXN0SW5GbG93Q2hpbGQoKSBjb25zdAotewotICAgIGlmIChhdXRvKiBsYXN0Q2hpbGQgPSB0
aGlzLT5sYXN0Q2hpbGQoKSkgewotICAgICAgICBpZiAobGFzdENoaWxkLT5pc0luRmxvdygpKQot
ICAgICAgICAgICAgcmV0dXJuIGxhc3RDaGlsZDsKLSAgICAgICAgcmV0dXJuIGxhc3RDaGlsZC0+
cHJldmlvdXNJbkZsb3dTaWJsaW5nKCk7Ci0gICAgfQotICAgIHJldHVybiBudWxscHRyOwotfQot
Ci1jb25zdCBCb3gqIENvbnRhaW5lcjo6bGFzdEluRmxvd09yRmxvYXRpbmdDaGlsZCgpIGNvbnN0
Ci17Ci0gICAgaWYgKGF1dG8qIGxhc3RDaGlsZCA9IHRoaXMtPmxhc3RDaGlsZCgpKSB7Ci0gICAg
ICAgIGlmIChsYXN0Q2hpbGQtPmlzSW5GbG93KCkgfHwgbGFzdENoaWxkLT5pc0Zsb2F0aW5nUG9z
aXRpb25lZCgpKQotICAgICAgICAgICAgcmV0dXJuIGxhc3RDaGlsZDsKLSAgICAgICAgcmV0dXJu
IGxhc3RDaGlsZC0+cHJldmlvdXNJbkZsb3dPckZsb2F0aW5nU2libGluZygpOwotICAgIH0KLSAg
ICByZXR1cm4gbnVsbHB0cjsKLX0KLQotdm9pZCBDb250YWluZXI6OnNldEZpcnN0Q2hpbGQoQm94
JiBjaGlsZEJveCkKLXsKLSAgICBtX2ZpcnN0Q2hpbGQgPSAmY2hpbGRCb3g7Ci19Ci0KLXZvaWQg
Q29udGFpbmVyOjpzZXRMYXN0Q2hpbGQoQm94JiBjaGlsZEJveCkKLXsKLSAgICBtX2xhc3RDaGls
ZCA9ICZjaGlsZEJveDsKLX0KLQotdm9pZCBDb250YWluZXI6OmFwcGVuZENoaWxkKEJveCYgY2hp
bGRCb3gpCi17Ci0gICAgY2hpbGRCb3guc2V0UGFyZW50KCp0aGlzKTsKLQotICAgIGlmIChtX2xh
c3RDaGlsZCkgewotICAgICAgICBtX2xhc3RDaGlsZC0+c2V0TmV4dFNpYmxpbmcoY2hpbGRCb3gp
OwotICAgICAgICBjaGlsZEJveC5zZXRQcmV2aW91c1NpYmxpbmcoKm1fbGFzdENoaWxkKTsKLSAg
ICB9IGVsc2UKLSAgICAgICAgbV9maXJzdENoaWxkID0gJmNoaWxkQm94OwotCi0gICAgbV9sYXN0
Q2hpbGQgPSAmY2hpbGRCb3g7Ci19Ci0KLX0KLX0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Q29udGFpbmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRDb250YWluZXIuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggOTBhMjFiYWFkNTAyYjcwMjEzYzNhNWRlZGVjYmI5MWVkMzNhNWI2My4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRDb250YWluZXIuaAorKysgL2Rldi9udWxsCkBA
IC0xLDcyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShM
QVlPVVRfRk9STUFUVElOR19DT05URVhUKQotCi0jaW5jbHVkZSAiTGF5b3V0Qm94LmgiCi0jaW5j
bHVkZSA8d3RmL0lzb01hbGxvYy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFJl
bmRlclN0eWxlOwotCi1uYW1lc3BhY2UgTGF5b3V0IHsKLQotY2xhc3MgQ29udGFpbmVyIGZpbmFs
IDogcHVibGljIEJveCB7Ci0gICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChDb250YWluZXIpOwot
cHVibGljOgotICAgIENvbnRhaW5lcihPcHRpb25hbDxFbGVtZW50QXR0cmlidXRlcz4sIFJlbmRl
clN0eWxlJiYsIEJhc2VUeXBlRmxhZ3MgPSBDb250YWluZXJGbGFnKTsKLQotICAgIGNvbnN0IEJv
eCogZmlyc3RDaGlsZCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3RDaGlsZDsgfQotICAgIGNvbnN0
IEJveCogZmlyc3RJbkZsb3dDaGlsZCgpIGNvbnN0OwotICAgIGNvbnN0IEJveCogZmlyc3RJbkZs
b3dPckZsb2F0aW5nQ2hpbGQoKSBjb25zdDsKLSAgICBjb25zdCBCb3gqIGxhc3RDaGlsZCgpIGNv
bnN0IHsgcmV0dXJuIG1fbGFzdENoaWxkOyB9Ci0gICAgY29uc3QgQm94KiBsYXN0SW5GbG93Q2hp
bGQoKSBjb25zdDsKLSAgICBjb25zdCBCb3gqIGxhc3RJbkZsb3dPckZsb2F0aW5nQ2hpbGQoKSBj
b25zdDsKLQotICAgIC8vIEZJWE1FOiBUaGlzIGlzIGN1cnJlbnRseSBuZWVkZWQgZm9yIHN0eWxl
IHVwZGF0ZXMuCi0gICAgQm94KiBmaXJzdENoaWxkKCkgeyByZXR1cm4gbV9maXJzdENoaWxkOyB9
Ci0KLSAgICBib29sIGhhc0NoaWxkKCkgY29uc3QgeyByZXR1cm4gZmlyc3RDaGlsZCgpOyB9Ci0g
ICAgYm9vbCBoYXNJbkZsb3dDaGlsZCgpIGNvbnN0IHsgcmV0dXJuIGZpcnN0SW5GbG93Q2hpbGQo
KTsgfQotICAgIGJvb2wgaGFzSW5GbG93T3JGbG9hdGluZ0NoaWxkKCkgY29uc3QgeyByZXR1cm4g
Zmlyc3RJbkZsb3dPckZsb2F0aW5nQ2hpbGQoKTsgfQotCi0gICAgdm9pZCBzZXRGaXJzdENoaWxk
KEJveCYpOwotICAgIHZvaWQgc2V0TGFzdENoaWxkKEJveCYpOwotICAgIHZvaWQgYXBwZW5kQ2hp
bGQoQm94Jik7Ci0KLXByaXZhdGU6Ci0gICAgQm94KiBtX2ZpcnN0Q2hpbGQgeyBudWxscHRyIH07
Ci0gICAgQm94KiBtX2xhc3RDaGlsZCB7IG51bGxwdHIgfTsKLX07Ci0KLX0KLX0KLQotU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19MQVlPVVRfQk9YKENvbnRhaW5lciwgaXNDb250YWluZXIoKSkKLQot
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlv
dXRDb250YWluZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5
b3V0Q29udGFpbmVyQm94LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMWI4OTFiNjg5YjAzYmRjNWE4OTVlN2Zh
MzVjYTAyNTExYjIxZjhiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2xheW91dHRyZWUvTGF5b3V0Q29udGFpbmVyQm94LmNwcApAQCAtMCwwICsxLDEwOSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMYXlvdXRDb250YWluZXJC
b3guaCIKKworI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQorCisjaW5jbHVk
ZSAiUmVuZGVyU3R5bGUuaCIKKyNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgTGF5b3V0IHsKKworV1RGX01BS0VfSVNPX0FM
TE9DQVRFRF9JTVBMKENvbnRhaW5lckJveCk7CisKK0NvbnRhaW5lckJveDo6Q29udGFpbmVyQm94
KE9wdGlvbmFsPEVsZW1lbnRBdHRyaWJ1dGVzPiBhdHRyaWJ1dGVzLCBSZW5kZXJTdHlsZSYmIHN0
eWxlLCBCYXNlVHlwZUZsYWdzIGJhc2VUeXBlRmxhZ3MpCisgICAgOiBCb3goYXR0cmlidXRlcywg
V1RGTW92ZShzdHlsZSksIGJhc2VUeXBlRmxhZ3MgfCBDb250YWluZXJCb3hGbGFnKQoreworfQor
Citjb25zdCBCb3gqIENvbnRhaW5lckJveDo6Zmlyc3RJbkZsb3dDaGlsZCgpIGNvbnN0Cit7Cisg
ICAgaWYgKGF1dG8qIGZpcnN0Q2hpbGQgPSB0aGlzLT5maXJzdENoaWxkKCkpIHsKKyAgICAgICAg
aWYgKGZpcnN0Q2hpbGQtPmlzSW5GbG93KCkpCisgICAgICAgICAgICByZXR1cm4gZmlyc3RDaGls
ZDsKKyAgICAgICAgcmV0dXJuIGZpcnN0Q2hpbGQtPm5leHRJbkZsb3dTaWJsaW5nKCk7CisgICAg
fQorICAgIHJldHVybiBudWxscHRyOworfQorCitjb25zdCBCb3gqIENvbnRhaW5lckJveDo6Zmly
c3RJbkZsb3dPckZsb2F0aW5nQ2hpbGQoKSBjb25zdAoreworICAgIGlmIChhdXRvKiBmaXJzdENo
aWxkID0gdGhpcy0+Zmlyc3RDaGlsZCgpKSB7CisgICAgICAgIGlmIChmaXJzdENoaWxkLT5pc0lu
RmxvdygpIHx8IGZpcnN0Q2hpbGQtPmlzRmxvYXRpbmdQb3NpdGlvbmVkKCkpCisgICAgICAgICAg
ICByZXR1cm4gZmlyc3RDaGlsZDsKKyAgICAgICAgcmV0dXJuIGZpcnN0Q2hpbGQtPm5leHRJbkZs
b3dPckZsb2F0aW5nU2libGluZygpOworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwor
Y29uc3QgQm94KiBDb250YWluZXJCb3g6Omxhc3RJbkZsb3dDaGlsZCgpIGNvbnN0Cit7CisgICAg
aWYgKGF1dG8qIGxhc3RDaGlsZCA9IHRoaXMtPmxhc3RDaGlsZCgpKSB7CisgICAgICAgIGlmIChs
YXN0Q2hpbGQtPmlzSW5GbG93KCkpCisgICAgICAgICAgICByZXR1cm4gbGFzdENoaWxkOworICAg
ICAgICByZXR1cm4gbGFzdENoaWxkLT5wcmV2aW91c0luRmxvd1NpYmxpbmcoKTsKKyAgICB9Cisg
ICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK2NvbnN0IEJveCogQ29udGFpbmVyQm94OjpsYXN0SW5G
bG93T3JGbG9hdGluZ0NoaWxkKCkgY29uc3QKK3sKKyAgICBpZiAoYXV0byogbGFzdENoaWxkID0g
dGhpcy0+bGFzdENoaWxkKCkpIHsKKyAgICAgICAgaWYgKGxhc3RDaGlsZC0+aXNJbkZsb3coKSB8
fCBsYXN0Q2hpbGQtPmlzRmxvYXRpbmdQb3NpdGlvbmVkKCkpCisgICAgICAgICAgICByZXR1cm4g
bGFzdENoaWxkOworICAgICAgICByZXR1cm4gbGFzdENoaWxkLT5wcmV2aW91c0luRmxvd09yRmxv
YXRpbmdTaWJsaW5nKCk7CisgICAgfQorICAgIHJldHVybiBudWxscHRyOworfQorCit2b2lkIENv
bnRhaW5lckJveDo6c2V0Rmlyc3RDaGlsZChCb3gmIGNoaWxkQm94KQoreworICAgIG1fZmlyc3RD
aGlsZCA9ICZjaGlsZEJveDsKK30KKwordm9pZCBDb250YWluZXJCb3g6OnNldExhc3RDaGlsZChC
b3gmIGNoaWxkQm94KQoreworICAgIG1fbGFzdENoaWxkID0gJmNoaWxkQm94OworfQorCit2b2lk
IENvbnRhaW5lckJveDo6YXBwZW5kQ2hpbGQoQm94JiBjaGlsZEJveCkKK3sKKyAgICBjaGlsZEJv
eC5zZXRQYXJlbnQoKnRoaXMpOworCisgICAgaWYgKG1fbGFzdENoaWxkKSB7CisgICAgICAgIG1f
bGFzdENoaWxkLT5zZXROZXh0U2libGluZyhjaGlsZEJveCk7CisgICAgICAgIGNoaWxkQm94LnNl
dFByZXZpb3VzU2libGluZygqbV9sYXN0Q2hpbGQpOworICAgIH0gZWxzZQorICAgICAgICBtX2Zp
cnN0Q2hpbGQgPSAmY2hpbGRCb3g7CisKKyAgICBtX2xhc3RDaGlsZCA9ICZjaGlsZEJveDsKK30K
KworfQorfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0
dHJlZS9MYXlvdXRDb250YWluZXJCb3guaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0
cmVlL0xheW91dENvbnRhaW5lckJveC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAwODMwOTU5ZjBlNmI4Y2RmNzRj
MTBmYmFmNzY1ODU1MzgxNDVmZDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRDb250YWluZXJCb3guaApAQCAtMCwwICsxLDcyIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdf
Q09OVEVYVCkKKworI2luY2x1ZGUgIkxheW91dEJveC5oIgorI2luY2x1ZGUgPHd0Zi9Jc29NYWxs
b2MuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBSZW5kZXJTdHlsZTsKKworbmFt
ZXNwYWNlIExheW91dCB7CisKK2NsYXNzIENvbnRhaW5lckJveCBmaW5hbCA6IHB1YmxpYyBCb3gg
eworICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoQ29udGFpbmVyQm94KTsKK3B1YmxpYzoKKyAg
ICBDb250YWluZXJCb3goT3B0aW9uYWw8RWxlbWVudEF0dHJpYnV0ZXM+LCBSZW5kZXJTdHlsZSYm
LCBCYXNlVHlwZUZsYWdzID0gQm94OjpDb250YWluZXJCb3hGbGFnKTsKKworICAgIGNvbnN0IEJv
eCogZmlyc3RDaGlsZCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3RDaGlsZDsgfQorICAgIGNvbnN0
IEJveCogZmlyc3RJbkZsb3dDaGlsZCgpIGNvbnN0OworICAgIGNvbnN0IEJveCogZmlyc3RJbkZs
b3dPckZsb2F0aW5nQ2hpbGQoKSBjb25zdDsKKyAgICBjb25zdCBCb3gqIGxhc3RDaGlsZCgpIGNv
bnN0IHsgcmV0dXJuIG1fbGFzdENoaWxkOyB9CisgICAgY29uc3QgQm94KiBsYXN0SW5GbG93Q2hp
bGQoKSBjb25zdDsKKyAgICBjb25zdCBCb3gqIGxhc3RJbkZsb3dPckZsb2F0aW5nQ2hpbGQoKSBj
b25zdDsKKworICAgIC8vIEZJWE1FOiBUaGlzIGlzIGN1cnJlbnRseSBuZWVkZWQgZm9yIHN0eWxl
IHVwZGF0ZXMuCisgICAgQm94KiBmaXJzdENoaWxkKCkgeyByZXR1cm4gbV9maXJzdENoaWxkOyB9
CisKKyAgICBib29sIGhhc0NoaWxkKCkgY29uc3QgeyByZXR1cm4gZmlyc3RDaGlsZCgpOyB9Cisg
ICAgYm9vbCBoYXNJbkZsb3dDaGlsZCgpIGNvbnN0IHsgcmV0dXJuIGZpcnN0SW5GbG93Q2hpbGQo
KTsgfQorICAgIGJvb2wgaGFzSW5GbG93T3JGbG9hdGluZ0NoaWxkKCkgY29uc3QgeyByZXR1cm4g
Zmlyc3RJbkZsb3dPckZsb2F0aW5nQ2hpbGQoKTsgfQorCisgICAgdm9pZCBzZXRGaXJzdENoaWxk
KEJveCYpOworICAgIHZvaWQgc2V0TGFzdENoaWxkKEJveCYpOworICAgIHZvaWQgYXBwZW5kQ2hp
bGQoQm94Jik7CisKK3ByaXZhdGU6CisgICAgQm94KiBtX2ZpcnN0Q2hpbGQgeyBudWxscHRyIH07
CisgICAgQm94KiBtX2xhc3RDaGlsZCB7IG51bGxwdHIgfTsKK307CisKK30KK30KKworU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19MQVlPVVRfQk9YKENvbnRhaW5lckJveCwgaXNDb250YWluZXJCb3go
KSkKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJl
ZS9MYXlvdXREZXNjZW5kYW50SXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlv
dXR0cmVlL0xheW91dERlc2NlbmRhbnRJdGVyYXRvci5oCmluZGV4IGI1ZWJjZWM3NzAxMmIyZGI0
OTE2YWQ4OTI3MzQ4NGI0NzE4OGNhMDguLmVlOGY2MTI4MjFiMDRlMTgzZjMyY2UyZTg1MWJlNjU3
MmUxZjFkYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xh
eW91dERlc2NlbmRhbnRJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlv
dXR0cmVlL0xheW91dERlc2NlbmRhbnRJdGVyYXRvci5oCkBAIC0zNSwyMSArMzUsMjEgQEAgbmFt
ZXNwYWNlIExheW91dCB7CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIGNsYXNzIExheW91dERlc2Nl
bmRhbnRJdGVyYXRvciA6IHB1YmxpYyBMYXlvdXRJdGVyYXRvcjxUPiB7CiBwdWJsaWM6Ci0gICAg
TGF5b3V0RGVzY2VuZGFudEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lciYgcm9vdCk7Ci0gICAgTGF5
b3V0RGVzY2VuZGFudEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lciYgcm9vdCwgY29uc3QgVCogY3Vy
cmVudCk7CisgICAgTGF5b3V0RGVzY2VuZGFudEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lckJveCYg
cm9vdCk7CisgICAgTGF5b3V0RGVzY2VuZGFudEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lckJveCYg
cm9vdCwgY29uc3QgVCogY3VycmVudCk7CiAgICAgTGF5b3V0RGVzY2VuZGFudEl0ZXJhdG9yJiBv
cGVyYXRvcisrKCk7CiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIGNsYXNzIExheW91dERl
c2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIgewogcHVibGljOgotICAgIExheW91dERlc2NlbmRhbnRJ
dGVyYXRvckFkYXB0ZXIoY29uc3QgQ29udGFpbmVyJiByb290KTsKKyAgICBMYXlvdXREZXNjZW5k
YW50SXRlcmF0b3JBZGFwdGVyKGNvbnN0IENvbnRhaW5lckJveCYgcm9vdCk7CiAgICAgTGF5b3V0
RGVzY2VuZGFudEl0ZXJhdG9yPFQ+IGJlZ2luKCk7CiAgICAgTGF5b3V0RGVzY2VuZGFudEl0ZXJh
dG9yPFQ+IGVuZCgpOwogICAgIExheW91dERlc2NlbmRhbnRJdGVyYXRvcjxUPiBhdChjb25zdCBU
Jik7CiAKIHByaXZhdGU6Ci0gICAgY29uc3QgQ29udGFpbmVyJiBtX3Jvb3Q7CisgICAgY29uc3Qg
Q29udGFpbmVyQm94JiBtX3Jvb3Q7CiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gTGF5b3V0
RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxUPiBkZXNjZW5kYW50c09mVHlwZShjb25zdCBCb3gm
KTsKQEAgLTU3LDEzICs1NywxMyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gTGF5b3V0RGVzY2Vu
ZGFudEl0ZXJhdG9yQWRhcHRlcjxUPiBkZXNjZW5kYW50c09mVHlwZShjb25zdAogLy8gTGF5b3V0
RGVzY2VuZGFudEl0ZXJhdG9yCiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5lIExheW91
dERlc2NlbmRhbnRJdGVyYXRvcjxUPjo6TGF5b3V0RGVzY2VuZGFudEl0ZXJhdG9yKGNvbnN0IENv
bnRhaW5lciYgcm9vdCkKK2lubGluZSBMYXlvdXREZXNjZW5kYW50SXRlcmF0b3I8VD46OkxheW91
dERlc2NlbmRhbnRJdGVyYXRvcihjb25zdCBDb250YWluZXJCb3gmIHJvb3QpCiAgICAgOiBMYXlv
dXRJdGVyYXRvcjxUPigmcm9vdCkKIHsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxp
bmUgTGF5b3V0RGVzY2VuZGFudEl0ZXJhdG9yPFQ+OjpMYXlvdXREZXNjZW5kYW50SXRlcmF0b3Io
Y29uc3QgQ29udGFpbmVyJiByb290LCBjb25zdCBUKiBjdXJyZW50KQoraW5saW5lIExheW91dERl
c2NlbmRhbnRJdGVyYXRvcjxUPjo6TGF5b3V0RGVzY2VuZGFudEl0ZXJhdG9yKGNvbnN0IENvbnRh
aW5lckJveCYgcm9vdCwgY29uc3QgVCogY3VycmVudCkKICAgICA6IExheW91dEl0ZXJhdG9yPFQ+
KCZyb290LCBjdXJyZW50KQogewogfQpAQCAtNzcsNyArNzcsNyBAQCBpbmxpbmUgTGF5b3V0RGVz
Y2VuZGFudEl0ZXJhdG9yPFQ+JiBMYXlvdXREZXNjZW5kYW50SXRlcmF0b3I8VD46Om9wZXJhdG9y
KysoKQogLy8gTGF5b3V0RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcgogCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KLWlubGluZSBMYXlvdXREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyPFQ+OjpMYXlv
dXREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyKGNvbnN0IENvbnRhaW5lciYgcm9vdCkKK2lubGlu
ZSBMYXlvdXREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyPFQ+OjpMYXlvdXREZXNjZW5kYW50SXRl
cmF0b3JBZGFwdGVyKGNvbnN0IENvbnRhaW5lckJveCYgcm9vdCkKICAgICA6IG1fcm9vdChyb290
KQogewogfQpAQCAtMTAzLDcgKzEwMyw3IEBAIGlubGluZSBMYXlvdXREZXNjZW5kYW50SXRlcmF0
b3I8VD4gTGF5b3V0RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxUPjo6YXQoY29uc3QKIC8vIFN0
YW5kYWxvbmUgZnVuY3Rpb25zCiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5lIExheW91
dERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXI8VD4gZGVzY2VuZGFudHNPZlR5cGUoY29uc3QgQ29u
dGFpbmVyJiByb290KQoraW5saW5lIExheW91dERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXI8VD4g
ZGVzY2VuZGFudHNPZlR5cGUoY29uc3QgQ29udGFpbmVyQm94JiByb290KQogewogICAgIHJldHVy
biBMYXlvdXREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyPFQ+KHJvb3QpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0SXRlcmF0b3IuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEl0ZXJhdG9yLmgKaW5kZXggMzMx
NDkxMTFiNDMwNGJjOWIxMDQyZWMwZDIyODA5NWVmY2NmY2JhOC4uZDFiZDk4YjMxMzg2ZmZjNmRh
NTE1NWI1Zjc0NjU5YTllMWVlMDBiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2xheW91dHRyZWUvTGF5b3V0SXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
bGF5b3V0dHJlZS9MYXlvdXRJdGVyYXRvci5oCkBAIC0zMyw4ICszMyw4IEBAIG5hbWVzcGFjZSBM
YXlvdXQgewogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBjbGFzcyBMYXlvdXRJdGVyYXRvciB7CiBw
dWJsaWM6Ci0gICAgTGF5b3V0SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyKiByb290KTsKLSAgICBM
YXlvdXRJdGVyYXRvcihjb25zdCBDb250YWluZXIqIHJvb3QsIGNvbnN0IFQqIGN1cnJlbnQpOwor
ICAgIExheW91dEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lckJveCogcm9vdCk7CisgICAgTGF5b3V0
SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyQm94KiByb290LCBjb25zdCBUKiBjdXJyZW50KTsKIAog
ICAgIGNvbnN0IFQmIG9wZXJhdG9yKigpIGNvbnN0OwogICAgIGNvbnN0IFQqIG9wZXJhdG9yLT4o
KSBjb25zdDsKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIExheW91dEl0ZXJhdG9yJiB0
cmF2ZXJzZUFuY2VzdG9yKCk7CiAKIHByaXZhdGU6Ci0gICAgY29uc3QgQ29udGFpbmVyKiBtX3Jv
b3Q7CisgICAgY29uc3QgQ29udGFpbmVyQm94KiBtX3Jvb3Q7CiAgICAgY29uc3QgVCogbV9jdXJy
ZW50OwogfTsKIApAQCAtNjYsMTIgKzY2LDEyIEBAIGlubGluZSBjb25zdCBCb3gqIGZpcnN0Q2hp
bGQoVSYgb2JqZWN0KQogCiBpbmxpbmUgY29uc3QgQm94KiBmaXJzdENoaWxkKGNvbnN0IEJveCYg
Ym94KQogewotICAgIGlmIChpczxDb250YWluZXI+KGJveCkpCi0gICAgICAgIHJldHVybiBkb3du
Y2FzdDxDb250YWluZXI+KGJveCkuZmlyc3RDaGlsZCgpOworICAgIGlmIChpczxDb250YWluZXJC
b3g+KGJveCkpCisgICAgICAgIHJldHVybiBkb3duY2FzdDxDb250YWluZXJCb3g+KGJveCkuZmly
c3RDaGlsZCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCi1pbmxpbmUgY29uc3QgQm94KiBu
ZXh0QW5jZXN0b3JTaWJsaW5nKGNvbnN0IEJveCYgY3VycmVudCwgY29uc3QgQ29udGFpbmVyKiBz
dGF5V2l0aGluKQoraW5saW5lIGNvbnN0IEJveCogbmV4dEFuY2VzdG9yU2libGluZyhjb25zdCBC
b3gmIGN1cnJlbnQsIGNvbnN0IENvbnRhaW5lckJveCogc3RheVdpdGhpbikKIHsKICAgICBmb3Ig
KGF1dG8qIGFuY2VzdG9yID0gY3VycmVudC5wYXJlbnQoKTsgYW5jZXN0b3I7IGFuY2VzdG9yID0g
YW5jZXN0b3ItPnBhcmVudCgpKSB7CiAgICAgICAgIGlmIChhbmNlc3RvciA9PSBzdGF5V2l0aGlu
KQpAQCAtODMsNyArODMsNyBAQCBpbmxpbmUgY29uc3QgQm94KiBuZXh0QW5jZXN0b3JTaWJsaW5n
KGNvbnN0IEJveCYgY3VycmVudCwgY29uc3QgQ29udGFpbmVyKiBzdGF5VwogfQogCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVT4KLWlubGluZSBjb25zdCBCb3gqIG5leHQoY29uc3QgVSYgY3VycmVudCwg
Y29uc3QgQ29udGFpbmVyKiBzdGF5V2l0aGluKQoraW5saW5lIGNvbnN0IEJveCogbmV4dChjb25z
dCBVJiBjdXJyZW50LCBjb25zdCBDb250YWluZXJCb3gqIHN0YXlXaXRoaW4pCiB7CiAgICAgaWYg
KGF1dG8qIGNoaWxkID0gZmlyc3RDaGlsZChjdXJyZW50KSkKICAgICAgICAgcmV0dXJuIGNoaWxk
OwpAQCAtOTcsNyArOTcsNyBAQCBpbmxpbmUgY29uc3QgQm94KiBuZXh0KGNvbnN0IFUmIGN1cnJl
bnQsIGNvbnN0IENvbnRhaW5lciogc3RheVdpdGhpbikKICAgICByZXR1cm4gbmV4dEFuY2VzdG9y
U2libGluZyhjdXJyZW50LCBzdGF5V2l0aGluKTsKIH0KIAotaW5saW5lIGNvbnN0IEJveCogbmV4
dFNraXBwaW5nQ2hpbGRyZW4oQm94JiBjdXJyZW50LCBjb25zdCBDb250YWluZXIqIHN0YXlXaXRo
aW4pCitpbmxpbmUgY29uc3QgQm94KiBuZXh0U2tpcHBpbmdDaGlsZHJlbihCb3gmIGN1cnJlbnQs
IGNvbnN0IENvbnRhaW5lckJveCogc3RheVdpdGhpbikKIHsKICAgICBpZiAoJmN1cnJlbnQgPT0g
c3RheVdpdGhpbikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xNjgsNyArMTY4LDcgQEAg
aW5saW5lIGNvbnN0IFQqIGZpcnN0V2l0aGluKGNvbnN0IFUmIHN0YXlXaXRoaW4pCiB9CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotaW5saW5lIGNvbnN0IFQqIG5leHQoY29u
c3QgVSYgY3VycmVudCwgY29uc3QgQ29udGFpbmVyKiBzdGF5V2l0aGluKQoraW5saW5lIGNvbnN0
IFQqIG5leHQoY29uc3QgVSYgY3VycmVudCwgY29uc3QgQ29udGFpbmVyQm94KiBzdGF5V2l0aGlu
KQogewogICAgIGF1dG8qIGRlc2NlbmRhbnQgPSBMYXlvdXRCb3hUcmF2ZXJzYWw6Om5leHQoY3Vy
cmVudCwgc3RheVdpdGhpbik7CiAgICAgd2hpbGUgKGRlc2NlbmRhbnQgJiYgIWlzTGF5b3V0Qm94
T2ZUeXBlPFQ+KCpkZXNjZW5kYW50KSkKQEAgLTE4MSwxNCArMTgxLDE0IEBAIGlubGluZSBjb25z
dCBUKiBuZXh0KGNvbnN0IFUmIGN1cnJlbnQsIGNvbnN0IENvbnRhaW5lciogc3RheVdpdGhpbikK
IC8vIExheW91dEl0ZXJhdG9yCiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5lIExheW91
dEl0ZXJhdG9yPFQ+OjpMYXlvdXRJdGVyYXRvcihjb25zdCBDb250YWluZXIqIHJvb3QpCitpbmxp
bmUgTGF5b3V0SXRlcmF0b3I8VD46OkxheW91dEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lckJveCog
cm9vdCkKICAgICA6IG1fcm9vdChyb290KQogICAgICwgbV9jdXJyZW50KG51bGxwdHIpCiB7CiB9
CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5lIExheW91dEl0ZXJhdG9yPFQ+OjpMYXlv
dXRJdGVyYXRvcihjb25zdCBDb250YWluZXIqIHJvb3QsIGNvbnN0IFQqIGN1cnJlbnQpCitpbmxp
bmUgTGF5b3V0SXRlcmF0b3I8VD46OkxheW91dEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lckJveCog
cm9vdCwgY29uc3QgVCogY3VycmVudCkKICAgICA6IG1fcm9vdChyb290KQogICAgICwgbV9jdXJy
ZW50KGN1cnJlbnQpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0
dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0
dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAKaW5kZXggM2UzYTg5MzU4YzZmYmVhMzM3NzhmNjFm
ZmY4OTM2MGE3MGQ2ZTViMC4uMjJmNzZkNzE0ZGVmNjRhMmY5YjdhNGJlNWFhN2JjNzczZTU5Mzll
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJl
ZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91
dFRyZWVCdWlsZGVyLmNwcApAQCAtMzksNyArMzksNyBAQAogI2luY2x1ZGUgIkludmFsaWRhdGlv
blN0YXRlLmgiCiAjaW5jbHVkZSAiTGF5b3V0Qm94LmgiCiAjaW5jbHVkZSAiTGF5b3V0Q2hpbGRJ
dGVyYXRvci5oIgotI2luY2x1ZGUgIkxheW91dENvbnRhaW5lci5oIgorI2luY2x1ZGUgIkxheW91
dENvbnRhaW5lckJveC5oIgogI2luY2x1ZGUgIkxheW91dENvbnRleHQuaCIKICNpbmNsdWRlICJM
YXlvdXREZXNjZW5kYW50SXRlcmF0b3IuaCIKICNpbmNsdWRlICJMYXlvdXRJbmxpbmVUZXh0Qm94
LmgiCkBAIC02Nyw3ICs2Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBMYXlv
dXQgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoTGF5b3V0VHJlZUNvbnRlbnQpOwot
TGF5b3V0VHJlZUNvbnRlbnQ6OkxheW91dFRyZWVDb250ZW50KGNvbnN0IFJlbmRlckJveCYgcm9v
dFJlbmRlcmVyLCBzdGQ6OnVuaXF1ZV9wdHI8Q29udGFpbmVyPiByb290TGF5b3V0Qm94KQorTGF5
b3V0VHJlZUNvbnRlbnQ6OkxheW91dFRyZWVDb250ZW50KGNvbnN0IFJlbmRlckJveCYgcm9vdFJl
bmRlcmVyLCBzdGQ6OnVuaXF1ZV9wdHI8Q29udGFpbmVyQm94PiByb290TGF5b3V0Qm94KQogICAg
IDogbV9yb290UmVuZGVyZXIocm9vdFJlbmRlcmVyKQogICAgICwgbV9yb290TGF5b3V0Qm94KFdU
Rk1vdmUocm9vdExheW91dEJveCkpCiB7CkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgTGF5b3V0VHJl
ZUNvbnRlbnQ6OmFkZExheW91dEJveEZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCYgcmVu
ZGVyZXIsIEJvCiAgICAgbV9sYXlvdXRCb3hUb1JlbmRlck9iamVjdC5hZGQoJmxheW91dEJveCwg
JnJlbmRlcmVyKTsKIH0KIAotc3RhdGljIHZvaWQgYXBwZW5kQ2hpbGQoQ29udGFpbmVyJiBwYXJl
bnQsIEJveCYgbmV3Q2hpbGQpCitzdGF0aWMgdm9pZCBhcHBlbmRDaGlsZChDb250YWluZXJCb3gm
IHBhcmVudCwgQm94JiBuZXdDaGlsZCkKIHsKICAgICBpZiAoIXBhcmVudC5oYXNDaGlsZCgpKSB7
CiAgICAgICAgIHBhcmVudC5zZXRGaXJzdENoaWxkKG5ld0NoaWxkKTsKQEAgLTEzMCw3ICsxMzAs
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TGF5b3V0OjpMYXlvdXRUcmVlQ29udGVudD4gVHJlZUJ1aWxk
ZXI6OmJ1aWxkTGF5b3V0VHJlZShjb25zdCBSZQogICAgIHN0eWxlLnNldExvZ2ljYWxXaWR0aChM
ZW5ndGgocmVuZGVyVmlldy53aWR0aCgpLCBGaXhlZCkpOwogICAgIHN0eWxlLnNldExvZ2ljYWxI
ZWlnaHQoTGVuZ3RoKHJlbmRlclZpZXcuaGVpZ2h0KCksIEZpeGVkKSk7CiAKLSAgICBhdXRvIGxh
eW91dFRyZWVDb250ZW50ID0gbWFrZVVuaXF1ZTxMYXlvdXRUcmVlQ29udGVudD4ocmVuZGVyVmll
dywgbWFrZVVuaXF1ZTxDb250YWluZXI+KFdURjo6bnVsbG9wdCwgV1RGTW92ZShzdHlsZSkpKTsK
KyAgICBhdXRvIGxheW91dFRyZWVDb250ZW50ID0gbWFrZVVuaXF1ZTxMYXlvdXRUcmVlQ29udGVu
dD4ocmVuZGVyVmlldywgbWFrZVVuaXF1ZTxDb250YWluZXJCb3g+KFdURjo6bnVsbG9wdCwgV1RG
TW92ZShzdHlsZSkpKTsKICAgICBUcmVlQnVpbGRlcigqbGF5b3V0VHJlZUNvbnRlbnQpLmJ1aWxk
VHJlZSgpOwogICAgIHJldHVybiBsYXlvdXRUcmVlQ29udGVudDsKIH0KQEAgLTE2OSwxNSArMTY5
LDE1IEBAIEJveCYgVHJlZUJ1aWxkZXI6OmNyZWF0ZUxpbmVCcmVha0JveChib29sIGlzT3B0aW9u
YWwsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgcmV0dXJuIGJveDsKIH0KIAotQ29udGFpbmVy
JiBUcmVlQnVpbGRlcjo6Y3JlYXRlQ29udGFpbmVyKE9wdGlvbmFsPEJveDo6RWxlbWVudEF0dHJp
YnV0ZXM+IGVsZW1lbnRBdHRyaWJ1dGVzLCBSZW5kZXJTdHlsZSYmIHN0eWxlKQorQ29udGFpbmVy
Qm94JiBUcmVlQnVpbGRlcjo6Y3JlYXRlQ29udGFpbmVyKE9wdGlvbmFsPEJveDo6RWxlbWVudEF0
dHJpYnV0ZXM+IGVsZW1lbnRBdHRyaWJ1dGVzLCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogewotICAg
IGF1dG8gbmV3Q29udGFpbmVyID0gbWFrZVVuaXF1ZTxDb250YWluZXI+KGVsZW1lbnRBdHRyaWJ1
dGVzLCBXVEZNb3ZlKHN0eWxlKSk7CisgICAgYXV0byBuZXdDb250YWluZXIgPSBtYWtlVW5pcXVl
PENvbnRhaW5lckJveD4oZWxlbWVudEF0dHJpYnV0ZXMsIFdURk1vdmUoc3R5bGUpKTsKICAgICBh
dXRvJiBjb250YWluZXIgPSAqbmV3Q29udGFpbmVyOwogICAgIG1fbGF5b3V0VHJlZUNvbnRlbnQu
YWRkQ29udGFpbmVyKFdURk1vdmUobmV3Q29udGFpbmVyKSk7CiAgICAgcmV0dXJuIGNvbnRhaW5l
cjsKIH0KIAotQm94KiBUcmVlQnVpbGRlcjo6Y3JlYXRlTGF5b3V0Qm94KGNvbnN0IENvbnRhaW5l
ciYgcGFyZW50Q29udGFpbmVyLCBjb25zdCBSZW5kZXJPYmplY3QmIGNoaWxkUmVuZGVyZXIpCitC
b3gqIFRyZWVCdWlsZGVyOjpjcmVhdGVMYXlvdXRCb3goY29uc3QgQ29udGFpbmVyQm94JiBwYXJl
bnRDb250YWluZXIsIGNvbnN0IFJlbmRlck9iamVjdCYgY2hpbGRSZW5kZXJlcikKIHsKICAgICBh
dXRvIGVsZW1lbnRBdHRyaWJ1dGVzID0gW10gKGNvbnN0IFJlbmRlckVsZW1lbnQmIHJlbmRlcmVy
KSAtPiBPcHRpb25hbDxCb3g6OkVsZW1lbnRBdHRyaWJ1dGVzPiB7CiAgICAgICAgIGlmIChyZW5k
ZXJlci5pc0RvY3VtZW50RWxlbWVudFJlbmRlcmVyKCkpCkBAIC0yNzgsNyArMjc4LDcgQEAgQm94
KiBUcmVlQnVpbGRlcjo6Y3JlYXRlTGF5b3V0Qm94KGNvbnN0IENvbnRhaW5lciYgcGFyZW50Q29u
dGFpbmVyLCBjb25zdCBSZW5kZXIKICAgICByZXR1cm4gY2hpbGRMYXlvdXRCb3g7CiB9CiAKLXZv
aWQgVHJlZUJ1aWxkZXI6OmJ1aWxkVGFibGVTdHJ1Y3R1cmUoY29uc3QgUmVuZGVyVGFibGUmIHRh
YmxlUmVuZGVyZXIsIENvbnRhaW5lciYgdGFibGVXcmFwcGVyQm94KQordm9pZCBUcmVlQnVpbGRl
cjo6YnVpbGRUYWJsZVN0cnVjdHVyZShjb25zdCBSZW5kZXJUYWJsZSYgdGFibGVSZW5kZXJlciwg
Q29udGFpbmVyQm94JiB0YWJsZVdyYXBwZXJCb3gpCiB7CiAgICAgLy8gQ3JlYXRlIGNhcHRpb24g
YW5kIHRhYmxlIGJveC4KICAgICBhdXRvKiB0YWJsZUNoaWxkID0gdGFibGVSZW5kZXJlci5maXJz
dENoaWxkKCk7CkBAIC0yODYsNyArMjg2LDcgQEAgdm9pZCBUcmVlQnVpbGRlcjo6YnVpbGRUYWJs
ZVN0cnVjdHVyZShjb25zdCBSZW5kZXJUYWJsZSYgdGFibGVSZW5kZXJlciwgQ29udGFpbmUKICAg
ICAgICAgYXV0byYgY2FwdGlvblJlbmRlcmVyID0gKnRhYmxlQ2hpbGQ7CiAgICAgICAgIGF1dG8q
IGNhcHRpb25Cb3ggPSBjcmVhdGVMYXlvdXRCb3godGFibGVXcmFwcGVyQm94LCBjYXB0aW9uUmVu
ZGVyZXIpOwogICAgICAgICBhcHBlbmRDaGlsZCh0YWJsZVdyYXBwZXJCb3gsICpjYXB0aW9uQm94
KTsKLSAgICAgICAgYXV0byYgY2FwdGlvbkNvbnRhaW5lciA9IGRvd25jYXN0PENvbnRhaW5lcj4o
KmNhcHRpb25Cb3gpOworICAgICAgICBhdXRvJiBjYXB0aW9uQ29udGFpbmVyID0gZG93bmNhc3Q8
Q29udGFpbmVyQm94PigqY2FwdGlvbkJveCk7CiAgICAgICAgIGJ1aWxkU3ViVHJlZShkb3duY2Fz
dDxSZW5kZXJFbGVtZW50PihjYXB0aW9uUmVuZGVyZXIpLCBjYXB0aW9uQ29udGFpbmVyKTsKICAg
ICAgICAgdGFibGVDaGlsZCA9IHRhYmxlQ2hpbGQtPm5leHRTaWJsaW5nKCk7CiAgICAgfQpAQCAt
Mjk3LDI2ICsyOTcsMjYgQEAgdm9pZCBUcmVlQnVpbGRlcjo6YnVpbGRUYWJsZVN0cnVjdHVyZShj
b25zdCBSZW5kZXJUYWJsZSYgdGFibGVSZW5kZXJlciwgQ29udGFpbmUKICAgICB3aGlsZSAoc2Vj
dGlvblJlbmRlcmVyKSB7CiAgICAgICAgIGF1dG8qIHNlY3Rpb25Cb3ggPSBjcmVhdGVMYXlvdXRC
b3godGFibGVCb3gsICpzZWN0aW9uUmVuZGVyZXIpOwogICAgICAgICBhcHBlbmRDaGlsZCh0YWJs
ZUJveCwgKnNlY3Rpb25Cb3gpOwotICAgICAgICBhdXRvJiBzZWN0aW9uQ29udGFpbmVyID0gZG93
bmNhc3Q8Q29udGFpbmVyPigqc2VjdGlvbkJveCk7CisgICAgICAgIGF1dG8mIHNlY3Rpb25Db250
YWluZXIgPSBkb3duY2FzdDxDb250YWluZXJCb3g+KCpzZWN0aW9uQm94KTsKICAgICAgICAgYnVp
bGRTdWJUcmVlKGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KCpzZWN0aW9uUmVuZGVyZXIpLCBzZWN0
aW9uQ29udGFpbmVyKTsKICAgICAgICAgc2VjdGlvblJlbmRlcmVyID0gc2VjdGlvblJlbmRlcmVy
LT5uZXh0U2libGluZygpOwogICAgIH0KIH0KIAotdm9pZCBUcmVlQnVpbGRlcjo6YnVpbGRTdWJU
cmVlKGNvbnN0IFJlbmRlckVsZW1lbnQmIHBhcmVudFJlbmRlcmVyLCBDb250YWluZXImIHBhcmVu
dENvbnRhaW5lcikKK3ZvaWQgVHJlZUJ1aWxkZXI6OmJ1aWxkU3ViVHJlZShjb25zdCBSZW5kZXJF
bGVtZW50JiBwYXJlbnRSZW5kZXJlciwgQ29udGFpbmVyQm94JiBwYXJlbnRDb250YWluZXIpCiB7
CiAgICAgZm9yIChhdXRvJiBjaGlsZFJlbmRlcmVyIDogY2hpbGRyZW5PZlR5cGU8UmVuZGVyT2Jq
ZWN0PihwYXJlbnRSZW5kZXJlcikpIHsKICAgICAgICAgYXV0byogY2hpbGRMYXlvdXRCb3ggPSBj
cmVhdGVMYXlvdXRCb3gocGFyZW50Q29udGFpbmVyLCBjaGlsZFJlbmRlcmVyKTsKICAgICAgICAg
YXBwZW5kQ2hpbGQocGFyZW50Q29udGFpbmVyLCAqY2hpbGRMYXlvdXRCb3gpOwogICAgICAgICBp
ZiAoY2hpbGRMYXlvdXRCb3gtPmlzVGFibGVXcmFwcGVyQm94KCkpCi0gICAgICAgICAgICBidWls
ZFRhYmxlU3RydWN0dXJlKGRvd25jYXN0PFJlbmRlclRhYmxlPihjaGlsZFJlbmRlcmVyKSwgZG93
bmNhc3Q8Q29udGFpbmVyPigqY2hpbGRMYXlvdXRCb3gpKTsKLSAgICAgICAgZWxzZSBpZiAoaXM8
Q29udGFpbmVyPigqY2hpbGRMYXlvdXRCb3gpKQotICAgICAgICAgICAgYnVpbGRTdWJUcmVlKGRv
d25jYXN0PFJlbmRlckVsZW1lbnQ+KGNoaWxkUmVuZGVyZXIpLCBkb3duY2FzdDxDb250YWluZXI+
KCpjaGlsZExheW91dEJveCkpOworICAgICAgICAgICAgYnVpbGRUYWJsZVN0cnVjdHVyZShkb3du
Y2FzdDxSZW5kZXJUYWJsZT4oY2hpbGRSZW5kZXJlciksIGRvd25jYXN0PENvbnRhaW5lckJveD4o
KmNoaWxkTGF5b3V0Qm94KSk7CisgICAgICAgIGVsc2UgaWYgKGlzPENvbnRhaW5lckJveD4oKmNo
aWxkTGF5b3V0Qm94KSkKKyAgICAgICAgICAgIGJ1aWxkU3ViVHJlZShkb3duY2FzdDxSZW5kZXJF
bGVtZW50PihjaGlsZFJlbmRlcmVyKSwgZG93bmNhc3Q8Q29udGFpbmVyQm94PigqY2hpbGRMYXlv
dXRCb3gpKTsKICAgICB9CiB9CiAKICNpZiBFTkFCTEUoVFJFRV9ERUJVR0dJTkcpCi1zdGF0aWMg
dm9pZCBvdXRwdXRJbmxpbmVSdW5zKFRleHRTdHJlYW0mIHN0cmVhbSwgY29uc3QgTGF5b3V0U3Rh
dGUmIGxheW91dFN0YXRlLCBjb25zdCBDb250YWluZXImIGlubGluZUZvcm1hdHRpbmdSb290LCB1
bnNpZ25lZCBkZXB0aCkKK3N0YXRpYyB2b2lkIG91dHB1dElubGluZVJ1bnMoVGV4dFN0cmVhbSYg
c3RyZWFtLCBjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IENvbnRhaW5lckJv
eCYgaW5saW5lRm9ybWF0dGluZ1Jvb3QsIHVuc2lnbmVkIGRlcHRoKQogewogICAgIGF1dG8mIGlu
bGluZUZvcm1hdHRpbmdTdGF0ZSA9IGxheW91dFN0YXRlLmVzdGFibGlzaGVkSW5saW5lRm9ybWF0
dGluZ1N0YXRlKGlubGluZUZvcm1hdHRpbmdSb290KTsKICAgICBhdXRvKiBkaXNwbGF5SW5saW5l
Q29udGVudCA9IGlubGluZUZvcm1hdHRpbmdTdGF0ZS5kaXNwbGF5SW5saW5lQ29udGVudCgpOwpA
QCAtNDE1LDcgKzQxNSw3IEBAIHN0YXRpYyB2b2lkIG91dHB1dExheW91dEJveChUZXh0U3RyZWFt
JiBzdHJlYW0sIGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBEaXNwCiAgICAgc3RyZWFtLm5l
eHRMaW5lKCk7CiB9CiAKLXN0YXRpYyB2b2lkIG91dHB1dExheW91dFRyZWUoY29uc3QgTGF5b3V0
U3RhdGUqIGxheW91dFN0YXRlLCBUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0IENvbnRhaW5lciYg
cm9vdENvbnRhaW5lciwgdW5zaWduZWQgZGVwdGgpCitzdGF0aWMgdm9pZCBvdXRwdXRMYXlvdXRU
cmVlKGNvbnN0IExheW91dFN0YXRlKiBsYXlvdXRTdGF0ZSwgVGV4dFN0cmVhbSYgc3RyZWFtLCBj
b25zdCBDb250YWluZXJCb3gmIHJvb3RDb250YWluZXIsIHVuc2lnbmVkIGRlcHRoKQogewogICAg
IGZvciAoYXV0byYgY2hpbGQgOiBjaGlsZHJlbk9mVHlwZTxCb3g+KHJvb3RDb250YWluZXIpKSB7
CiAgICAgICAgIGlmIChsYXlvdXRTdGF0ZSkgewpAQCAtNDIzLDEyICs0MjMsMTIgQEAgc3RhdGlj
IHZvaWQgb3V0cHV0TGF5b3V0VHJlZShjb25zdCBMYXlvdXRTdGF0ZSogbGF5b3V0U3RhdGUsIFRl
eHRTdHJlYW0mIHN0cmVhbSwKICAgICAgICAgICAgIGlmIChsYXlvdXRTdGF0ZS0+aGFzRGlzcGxh
eUJveChjaGlsZCkpCiAgICAgICAgICAgICAgICAgb3V0cHV0TGF5b3V0Qm94KHN0cmVhbSwgY2hp
bGQsICZsYXlvdXRTdGF0ZS0+ZGlzcGxheUJveEZvckxheW91dEJveChjaGlsZCksIGRlcHRoKTsK
ICAgICAgICAgICAgIGlmIChjaGlsZC5lc3RhYmxpc2hlc0lubGluZUZvcm1hdHRpbmdDb250ZXh0
KCkpCi0gICAgICAgICAgICAgICAgb3V0cHV0SW5saW5lUnVucyhzdHJlYW0sICpsYXlvdXRTdGF0
ZSwgZG93bmNhc3Q8Q29udGFpbmVyPihjaGlsZCksIGRlcHRoICsgMSk7CisgICAgICAgICAgICAg
ICAgb3V0cHV0SW5saW5lUnVucyhzdHJlYW0sICpsYXlvdXRTdGF0ZSwgZG93bmNhc3Q8Q29udGFp
bmVyQm94PihjaGlsZCksIGRlcHRoICsgMSk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAg
b3V0cHV0TGF5b3V0Qm94KHN0cmVhbSwgY2hpbGQsIG51bGxwdHIsIGRlcHRoKTsKIAotICAgICAg
ICBpZiAoaXM8Q29udGFpbmVyPihjaGlsZCkpCi0gICAgICAgICAgICBvdXRwdXRMYXlvdXRUcmVl
KGxheW91dFN0YXRlLCBzdHJlYW0sIGRvd25jYXN0PENvbnRhaW5lcj4oY2hpbGQpLCBkZXB0aCAr
IDEpOworICAgICAgICBpZiAoaXM8Q29udGFpbmVyQm94PihjaGlsZCkpCisgICAgICAgICAgICBv
dXRwdXRMYXlvdXRUcmVlKGxheW91dFN0YXRlLCBzdHJlYW0sIGRvd25jYXN0PENvbnRhaW5lckJv
eD4oY2hpbGQpLCBkZXB0aCArIDEpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmgKaW5kZXggNThjYjdlNmY0
MTU0Yjk5YzJjZWQ2ZWJlMjYxNmJlM2VjZmFmYWMxMi4uMDZjZDYxMTFiMjIzMTVmMWQ1NDQ0NDBj
ZjlmYTU0ZWZmMWRjMWYyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91
dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5
b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5oCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpZiBFTkFC
TEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKIAotI2luY2x1ZGUgIkxheW91dENvbnRhaW5l
ci5oIgorI2luY2x1ZGUgIkxheW91dENvbnRhaW5lckJveC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29N
YWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCkBAIC00NywxOSArNDcsMTkgQEAg
Y2xhc3MgTGF5b3V0U3RhdGU7CiBjbGFzcyBMYXlvdXRUcmVlQ29udGVudCA6IHB1YmxpYyBDYW5N
YWtlV2Vha1B0cjxMYXlvdXRUcmVlQ29udGVudD4gewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FU
RUQoTGF5b3V0VHJlZUNvbnRlbnQpOwogcHVibGljOgotICAgIExheW91dFRyZWVDb250ZW50KGNv
bnN0IFJlbmRlckJveCYsIHN0ZDo6dW5pcXVlX3B0cjxDb250YWluZXI+KTsKKyAgICBMYXlvdXRU
cmVlQ29udGVudChjb25zdCBSZW5kZXJCb3gmLCBzdGQ6OnVuaXF1ZV9wdHI8Q29udGFpbmVyQm94
Pik7CiAgICAgfkxheW91dFRyZWVDb250ZW50KCk7CiAKLSAgICBjb25zdCBDb250YWluZXImIHJv
b3RMYXlvdXRCb3goKSBjb25zdCB7IHJldHVybiAqbV9yb290TGF5b3V0Qm94OyB9Ci0gICAgQ29u
dGFpbmVyJiByb290TGF5b3V0Qm94KCkgeyByZXR1cm4gKm1fcm9vdExheW91dEJveDsgfQorICAg
IGNvbnN0IENvbnRhaW5lckJveCYgcm9vdExheW91dEJveCgpIGNvbnN0IHsgcmV0dXJuICptX3Jv
b3RMYXlvdXRCb3g7IH0KKyAgICBDb250YWluZXJCb3gmIHJvb3RMYXlvdXRCb3goKSB7IHJldHVy
biAqbV9yb290TGF5b3V0Qm94OyB9CiAgICAgY29uc3QgUmVuZGVyQm94JiByb290UmVuZGVyZXIo
KSBjb25zdCB7IHJldHVybiBtX3Jvb3RSZW5kZXJlcjsgfQogCiAgICAgdm9pZCBhZGRCb3goc3Rk
Ojp1bmlxdWVfcHRyPEJveD4gYm94KQogICAgIHsKLSAgICAgICAgQVNTRVJUKCFib3gtPmlzQ29u
dGFpbmVyKCkpOworICAgICAgICBBU1NFUlQoIWJveC0+aXNDb250YWluZXJCb3goKSk7CiAgICAg
ICAgIG1fYm94ZXMuYWRkKFdURk1vdmUoYm94KSk7CiAgICAgfQotICAgIHZvaWQgYWRkQ29udGFp
bmVyKHN0ZDo6dW5pcXVlX3B0cjxDb250YWluZXI+IGNvbnRhaW5lcikgeyBtX2NvbnRhaW5lcnMu
YWRkKFdURk1vdmUoY29udGFpbmVyKSk7IH0KKyAgICB2b2lkIGFkZENvbnRhaW5lcihzdGQ6OnVu
aXF1ZV9wdHI8Q29udGFpbmVyQm94PiBjb250YWluZXIpIHsgbV9jb250YWluZXJzLmFkZChXVEZN
b3ZlKGNvbnRhaW5lcikpOyB9CiAKICAgICBCb3gqIGxheW91dEJveEZvclJlbmRlcmVyKGNvbnN0
IFJlbmRlck9iamVjdCYgcmVuZGVyZXIpIHsgcmV0dXJuIG1fcmVuZGVyT2JqZWN0VG9MYXlvdXRC
b3guZ2V0KCZyZW5kZXJlcik7IH0KICAgICBjb25zdCBCb3gqIGxheW91dEJveEZvclJlbmRlcmVy
KGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyT2Jq
ZWN0VG9MYXlvdXRCb3guZ2V0KCZyZW5kZXJlcik7IH0KQEAgLTcwLDkgKzcwLDkgQEAgcHVibGlj
OgogCiBwcml2YXRlOgogICAgIGNvbnN0IFJlbmRlckJveCYgbV9yb290UmVuZGVyZXI7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPENvbnRhaW5lcj4gbV9yb290TGF5b3V0Qm94OworICAgIHN0ZDo6dW5p
cXVlX3B0cjxDb250YWluZXJCb3g+IG1fcm9vdExheW91dEJveDsKICAgICBIYXNoU2V0PHN0ZDo6
dW5pcXVlX3B0cjxCb3g+PiBtX2JveGVzOwotICAgIEhhc2hTZXQ8c3RkOjp1bmlxdWVfcHRyPENv
bnRhaW5lcj4+IG1fY29udGFpbmVyczsKKyAgICBIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxDb250
YWluZXJCb3g+PiBtX2NvbnRhaW5lcnM7CiAKICAgICBIYXNoTWFwPGNvbnN0IFJlbmRlck9iamVj
dCosIEJveCo+IG1fcmVuZGVyT2JqZWN0VG9MYXlvdXRCb3g7CiAgICAgSGFzaE1hcDxjb25zdCBC
b3gqLCBjb25zdCBSZW5kZXJPYmplY3QqPiBtX2xheW91dEJveFRvUmVuZGVyT2JqZWN0OwpAQCAt
ODYsMTQgKzg2LDE0IEBAIHByaXZhdGU6CiAgICAgVHJlZUJ1aWxkZXIoTGF5b3V0VHJlZUNvbnRl
bnQmKTsKIAogICAgIHZvaWQgYnVpbGRUcmVlKCk7Ci0gICAgdm9pZCBidWlsZFN1YlRyZWUoY29u
c3QgUmVuZGVyRWxlbWVudCYgcGFyZW50UmVuZGVyZXIsIENvbnRhaW5lciYgcGFyZW50Q29udGFp
bmVyKTsKLSAgICB2b2lkIGJ1aWxkVGFibGVTdHJ1Y3R1cmUoY29uc3QgUmVuZGVyVGFibGUmIHRh
YmxlUmVuZGVyZXIsIENvbnRhaW5lciYgdGFibGVXcmFwcGVyQm94KTsKLSAgICBCb3gqIGNyZWF0
ZUxheW91dEJveChjb25zdCBDb250YWluZXImIHBhcmVudENvbnRhaW5lciwgY29uc3QgUmVuZGVy
T2JqZWN0JiBjaGlsZFJlbmRlcmVyKTsKKyAgICB2b2lkIGJ1aWxkU3ViVHJlZShjb25zdCBSZW5k
ZXJFbGVtZW50JiBwYXJlbnRSZW5kZXJlciwgQ29udGFpbmVyQm94JiBwYXJlbnRDb250YWluZXIp
OworICAgIHZvaWQgYnVpbGRUYWJsZVN0cnVjdHVyZShjb25zdCBSZW5kZXJUYWJsZSYgdGFibGVS
ZW5kZXJlciwgQ29udGFpbmVyQm94JiB0YWJsZVdyYXBwZXJCb3gpOworICAgIEJveCogY3JlYXRl
TGF5b3V0Qm94KGNvbnN0IENvbnRhaW5lckJveCYgcGFyZW50Q29udGFpbmVyLCBjb25zdCBSZW5k
ZXJPYmplY3QmIGNoaWxkUmVuZGVyZXIpOwogCiAgICAgQm94JiBjcmVhdGVSZXBsYWNlZEJveChS
ZW5kZXJTdHlsZSYmKTsKICAgICBCb3gmIGNyZWF0ZVRleHRCb3goU3RyaW5nIHRleHQsIGJvb2wg
Y2FuVXNlU2ltcGxpZmllZFRleHRNZWFzdXJpbmcsIFJlbmRlclN0eWxlJiYpOwogICAgIEJveCYg
Y3JlYXRlTGluZUJyZWFrQm94KGJvb2wgaXNPcHRpb25hbCwgUmVuZGVyU3R5bGUmJik7Ci0gICAg
Q29udGFpbmVyJiBjcmVhdGVDb250YWluZXIoT3B0aW9uYWw8Qm94OjpFbGVtZW50QXR0cmlidXRl
cz4sIFJlbmRlclN0eWxlJiYpOworICAgIENvbnRhaW5lckJveCYgY3JlYXRlQ29udGFpbmVyKE9w
dGlvbmFsPEJveDo6RWxlbWVudEF0dHJpYnV0ZXM+LCBSZW5kZXJTdHlsZSYmKTsKIAogICAgIExh
eW91dFRyZWVDb250ZW50JiBtX2xheW91dFRyZWVDb250ZW50OwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVGb3JtYXR0aW5nQ29udGV4
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlRm9ybWF0
dGluZ0NvbnRleHQuY3BwCmluZGV4IGQyZWM2MTk4Y2FkZTU0NzdmNTIxMjkwYjlkYWM5ZTFmYWRl
MmJjNGQuLjM2MjU3ZWMzOWIzZWI2NDcwN2NkZGIxZDQzMzUxMTMzMzM3YWQzMWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVGb3JtYXR0aW5n
Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L3RhYmxlZm9ybWF0dGluZy9U
YWJsZUZvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtNTUsNyArNTUsNyBAQCB2b2lkIFRhYmxlRm9y
bWF0dGluZ0NvbnRleHQ6OmluaXRpYWxpemVEaXNwbGF5Qm94VG9CbGFuayhEaXNwbGF5OjpCb3gm
IGRpc3BsYXlCbwogfQogCiAvLyBodHRwczovL3d3dy53My5vcmcvVFIvY3NzLXRhYmxlcy0zLyN0
YWJsZS1sYXlvdXQtYWxnb3JpdGhtCi1UYWJsZUZvcm1hdHRpbmdDb250ZXh0OjpUYWJsZUZvcm1h
dHRpbmdDb250ZXh0KGNvbnN0IENvbnRhaW5lciYgZm9ybWF0dGluZ0NvbnRleHRSb290LCBUYWJs
ZUZvcm1hdHRpbmdTdGF0ZSYgZm9ybWF0dGluZ1N0YXRlKQorVGFibGVGb3JtYXR0aW5nQ29udGV4
dDo6VGFibGVGb3JtYXR0aW5nQ29udGV4dChjb25zdCBDb250YWluZXJCb3gmIGZvcm1hdHRpbmdD
b250ZXh0Um9vdCwgVGFibGVGb3JtYXR0aW5nU3RhdGUmIGZvcm1hdHRpbmdTdGF0ZSkKICAgICA6
IEZvcm1hdHRpbmdDb250ZXh0KGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgZm9ybWF0dGluZ1N0YXRl
KQogewogfQpAQCAtMTExLDggKzExMSw4IEBAIHZvaWQgVGFibGVGb3JtYXR0aW5nQ29udGV4dDo6
bGF5b3V0VGFibGVDZWxsQm94KGNvbnN0IEJveCYgY2VsbExheW91dEJveCwgY29uc3QKICAgICBj
ZWxsRGlzcGxheUJveC5zZXRDb250ZW50Qm94V2lkdGgoY29sdW1uLmxvZ2ljYWxXaWR0aCgpIC0g
Y2VsbERpc3BsYXlCb3guaG9yaXpvbnRhbE1hcmdpbkJvcmRlckFuZFBhZGRpbmcoKSk7CiAKICAg
ICBBU1NFUlQoY2VsbExheW91dEJveC5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQo
KSk7Ci0gICAgaWYgKGlzPENvbnRhaW5lcj4oY2VsbExheW91dEJveCkgJiYgZG93bmNhc3Q8Q29u
dGFpbmVyPihjZWxsTGF5b3V0Qm94KS5oYXNJbkZsb3dPckZsb2F0aW5nQ2hpbGQoKSkKLSAgICAg
ICAgTGF5b3V0Q29udGV4dDo6Y3JlYXRlRm9ybWF0dGluZ0NvbnRleHQoZG93bmNhc3Q8Q29udGFp
bmVyPihjZWxsTGF5b3V0Qm94KSwgbGF5b3V0U3RhdGUoKSktPmxheW91dEluRmxvd0NvbnRlbnQo
aW52YWxpZGF0aW9uU3RhdGUsIEdlb21ldHJ5Ojpob3Jpem9udGFsQ29uc3RyYWludHNGb3JJbkZs
b3coY2VsbERpc3BsYXlCb3gpLCBHZW9tZXRyeTo6dmVydGljYWxDb25zdHJhaW50c0ZvckluRmxv
dyhjZWxsRGlzcGxheUJveCkpOworICAgIGlmIChpczxDb250YWluZXJCb3g+KGNlbGxMYXlvdXRC
b3gpICYmIGRvd25jYXN0PENvbnRhaW5lckJveD4oY2VsbExheW91dEJveCkuaGFzSW5GbG93T3JG
bG9hdGluZ0NoaWxkKCkpCisgICAgICAgIExheW91dENvbnRleHQ6OmNyZWF0ZUZvcm1hdHRpbmdD
b250ZXh0KGRvd25jYXN0PENvbnRhaW5lckJveD4oY2VsbExheW91dEJveCksIGxheW91dFN0YXRl
KCkpLT5sYXlvdXRJbkZsb3dDb250ZW50KGludmFsaWRhdGlvblN0YXRlLCBHZW9tZXRyeTo6aG9y
aXpvbnRhbENvbnN0cmFpbnRzRm9ySW5GbG93KGNlbGxEaXNwbGF5Qm94KSwgR2VvbWV0cnk6OnZl
cnRpY2FsQ29uc3RyYWludHNGb3JJbkZsb3coY2VsbERpc3BsYXlCb3gpKTsKICAgICBjZWxsRGlz
cGxheUJveC5zZXRWZXJ0aWNhbE1hcmdpbih7IHsgfSwgeyB9IH0pOwogICAgIGNlbGxEaXNwbGF5
Qm94LnNldENvbnRlbnRCb3hIZWlnaHQoZ2VvbWV0cnkoKS50YWJsZUNlbGxIZWlnaHRBbmRNYXJn
aW4oY2VsbExheW91dEJveCkuY29udGVudEhlaWdodCk7CiAgICAgLy8gRklYTUU6IENoZWNrIHdo
YXQgdG8gZG8gd2l0aCBvdXQtb2YtZmxvdyBjb250ZW50LgpAQCAtMTk2LDcgKzE5Niw3IEBAIHZv
aWQgVGFibGVGb3JtYXR0aW5nQ29udGV4dDo6ZW5zdXJlVGFibGVHcmlkKCkKIAogICAgIGlmIChj
b2xncm91cCkgewogICAgICAgICBhdXRvJiBjb2x1bW5zQ29udGV4dCA9IHRhYmxlR3JpZC5jb2x1
bW5zQ29udGV4dCgpOwotICAgICAgICBmb3IgKGF1dG8qIGNvbHVtbiA9IGRvd25jYXN0PENvbnRh
aW5lcj4oKmNvbGdyb3VwKS5maXJzdENoaWxkKCk7IGNvbHVtbjsgY29sdW1uID0gY29sdW1uLT5u
ZXh0U2libGluZygpKSB7CisgICAgICAgIGZvciAoYXV0byogY29sdW1uID0gZG93bmNhc3Q8Q29u
dGFpbmVyQm94PigqY29sZ3JvdXApLmZpcnN0Q2hpbGQoKTsgY29sdW1uOyBjb2x1bW4gPSBjb2x1
bW4tPm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAgICAgIEFTU0VSVChjb2x1bW4tPmlzVGFibGVD
b2x1bW4oKSk7CiAgICAgICAgICAgICBhdXRvIGNvbHVtblNwYW5Db3VudCA9IGNvbHVtbi0+Y29s
dW1uU3BhbigpOwogICAgICAgICAgICAgQVNTRVJUKGNvbHVtblNwYW5Db3VudCA+IDApOwpAQCAt
MjA4LDkgKzIwOCw5IEBAIHZvaWQgVGFibGVGb3JtYXR0aW5nQ29udGV4dDo6ZW5zdXJlVGFibGVH
cmlkKCkKICAgICBhdXRvKiBmaXJzdFNlY3Rpb24gPSBjb2xncm91cCA/IGNvbGdyb3VwLT5uZXh0
U2libGluZygpIDogdGFibGVDYXB0aW9uID8gdGFibGVDYXB0aW9uLT5uZXh0U2libGluZygpIDog
Zmlyc3RDaGlsZDsKICAgICBmb3IgKGF1dG8qIHNlY3Rpb24gPSBmaXJzdFNlY3Rpb247IHNlY3Rp
b247IHNlY3Rpb24gPSBzZWN0aW9uLT5uZXh0U2libGluZygpKSB7CiAgICAgICAgIEFTU0VSVChz
ZWN0aW9uLT5pc1RhYmxlSGVhZGVyKCkgfHwgc2VjdGlvbi0+aXNUYWJsZUJvZHkoKSB8fCBzZWN0
aW9uLT5pc1RhYmxlRm9vdGVyKCkpOwotICAgICAgICBmb3IgKGF1dG8qIHJvdyA9IGRvd25jYXN0
PENvbnRhaW5lcj4oKnNlY3Rpb24pLmZpcnN0Q2hpbGQoKTsgcm93OyByb3cgPSByb3ctPm5leHRT
aWJsaW5nKCkpIHsKKyAgICAgICAgZm9yIChhdXRvKiByb3cgPSBkb3duY2FzdDxDb250YWluZXJC
b3g+KCpzZWN0aW9uKS5maXJzdENoaWxkKCk7IHJvdzsgcm93ID0gcm93LT5uZXh0U2libGluZygp
KSB7CiAgICAgICAgICAgICBBU1NFUlQocm93LT5pc1RhYmxlUm93KCkpOwotICAgICAgICAgICAg
Zm9yIChhdXRvKiBjZWxsID0gZG93bmNhc3Q8Q29udGFpbmVyPigqcm93KS5maXJzdENoaWxkKCk7
IGNlbGw7IGNlbGwgPSBjZWxsLT5uZXh0U2libGluZygpKSB7CisgICAgICAgICAgICBmb3IgKGF1
dG8qIGNlbGwgPSBkb3duY2FzdDxDb250YWluZXJCb3g+KCpyb3cpLmZpcnN0Q2hpbGQoKTsgY2Vs
bDsgY2VsbCA9IGNlbGwtPm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQo
Y2VsbC0+aXNUYWJsZUNlbGwoKSk7CiAgICAgICAgICAgICAgICAgdGFibGVHcmlkLmFwcGVuZENl
bGwoKmNlbGwpOwogICAgICAgICAgICAgfQpAQCAtMjM0LDggKzIzNCw4IEBAIHZvaWQgVGFibGVG
b3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVByZWZlcnJlZFdpZHRoRm9yQ29sdW1ucygpCiAgICAg
ICAgIGF1dG8gaW50cmluc2ljV2lkdGggPSBmb3JtYXR0aW5nU3RhdGUuaW50cmluc2ljV2lkdGhD
b25zdHJhaW50c0ZvckJveCh0YWJsZUNlbGxCb3gpOwogICAgICAgICBpZiAoIWludHJpbnNpY1dp
ZHRoKSB7CiAgICAgICAgICAgICBpbnRyaW5zaWNXaWR0aCA9IEludHJpbnNpY1dpZHRoQ29uc3Ry
YWludHMgeyB9OwotICAgICAgICAgICAgaWYgKGlzPENvbnRhaW5lcj4odGFibGVDZWxsQm94KSkK
LSAgICAgICAgICAgICAgICBpbnRyaW5zaWNXaWR0aCA9IExheW91dENvbnRleHQ6OmNyZWF0ZUZv
cm1hdHRpbmdDb250ZXh0KGRvd25jYXN0PENvbnRhaW5lcj4odGFibGVDZWxsQm94KSwgbGF5b3V0
U3RhdGUoKSktPmNvbXB1dGVkSW50cmluc2ljV2lkdGhDb25zdHJhaW50cygpOworICAgICAgICAg
ICAgaWYgKGlzPENvbnRhaW5lckJveD4odGFibGVDZWxsQm94KSkKKyAgICAgICAgICAgICAgICBp
bnRyaW5zaWNXaWR0aCA9IExheW91dENvbnRleHQ6OmNyZWF0ZUZvcm1hdHRpbmdDb250ZXh0KGRv
d25jYXN0PENvbnRhaW5lckJveD4odGFibGVDZWxsQm94KSwgbGF5b3V0U3RhdGUoKSktPmNvbXB1
dGVkSW50cmluc2ljV2lkdGhDb25zdHJhaW50cygpOwogICAgICAgICAgICAgaW50cmluc2ljV2lk
dGggPSBnZW9tZXRyeSgpLmNvbnN0cmFpbkJ5TWluTWF4V2lkdGgodGFibGVDZWxsQm94LCAqaW50
cmluc2ljV2lkdGgpOwogICAgICAgICAgICAgYXV0byBib3JkZXIgPSBnZW9tZXRyeSgpLmNvbXB1
dGVkQm9yZGVyKHRhYmxlQ2VsbEJveCk7CiAgICAgICAgICAgICBhdXRvIHBhZGRpbmcgPSAqZ2Vv
bWV0cnkoKS5jb21wdXRlZFBhZGRpbmcodGFibGVDZWxsQm94LCB7IH0pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUZvcm1hdHRpbmdDb250
ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlRm9ybWF0
dGluZ0NvbnRleHQuaAppbmRleCAwMDY1NmEyOWI3NjdmYjFkYmFjMGRmZGQyMmZmMWZlOTA3NGZi
NzRiLi5hNjdhY2M4ZWE4YTRhNTFiYmMwNzIxM2IyZjE0MDZhNmUxYWU0NjYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlRm9ybWF0dGluZ0Nv
bnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxl
Rm9ybWF0dGluZ0NvbnRleHQuaApAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBUYWJsZUZvcm1hdHRp
bmdTdGF0ZTsKIGNsYXNzIFRhYmxlRm9ybWF0dGluZ0NvbnRleHQgZmluYWwgOiBwdWJsaWMgRm9y
bWF0dGluZ0NvbnRleHQgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoVGFibGVGb3JtYXR0
aW5nQ29udGV4dCk7CiBwdWJsaWM6Ci0gICAgVGFibGVGb3JtYXR0aW5nQ29udGV4dChjb25zdCBD
b250YWluZXImIGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgVGFibGVGb3JtYXR0aW5nU3RhdGUmKTsK
KyAgICBUYWJsZUZvcm1hdHRpbmdDb250ZXh0KGNvbnN0IENvbnRhaW5lckJveCYgZm9ybWF0dGlu
Z0NvbnRleHRSb290LCBUYWJsZUZvcm1hdHRpbmdTdGF0ZSYpOwogICAgIHZvaWQgbGF5b3V0SW5G
bG93Q29udGVudChJbnZhbGlkYXRpb25TdGF0ZSYsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50
cyYsIGNvbnN0IFZlcnRpY2FsQ29uc3RyYWludHMmKSBvdmVycmlkZTsKIAogcHJpdmF0ZToK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390454</attachid>
            <date>2020-02-11 16:02:30 -0800</date>
            <delta_ts>2020-02-11 17:08:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207585-20200211160229.patch</filename>
            <type>text/plain</type>
            <size>141699</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2Mzg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWM1MDZmMzFlOTNhNDVh
OGJiMjk2NzE5NTU3YTM0NDIzMjEwNWM0MC4uNGQ4M2VjMjhmOTk1YzJkMzc0N2ZmYmI4MWVkZDNm
ZDQyNmI0MmIyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3NSBAQAorMjAyMC0wMi0xMSAgWmFs
YW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgorCisgICAgICAgIFtMRkNdIFJlbmFtZSBMYXlv
dXQ6OkNvbnRhaW5lciB0byBMYXlvdXQ6OkNvbnRhaW5lckJveAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NTg1CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS81OTM2Mzg0NT4KKworICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KKwor
ICAgICAgICBDb250YWluZXJCb3ggbmFtZSBpcyBtb3JlIGlubGluZSB3aXRoIHRoZSByZXN0IG9m
IHRoZSBib3ggY2xhc3Nlcy4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBsYXlvdXQvRm9ybWF0
dGluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29u
dGV4dDo6Rm9ybWF0dGluZ0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3Jt
YXR0aW5nQ29udGV4dDo6bGF5b3V0T3V0T2ZGbG93Q29udGVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6Om1hcEhvcml6b250YWxQb3NpdGlvblRvQW5jZXN0b3IpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6bWFwVG9wVG9Gb3JtYXR0aW5nQ29udGV4
dFJvb3QgY29uc3QpOgorICAgICAgICAqIGxheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5oOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6cm9vdCBjb25zdCk6Cisg
ICAgICAgICogbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNvbnRlbnRIZWln
aHRGb3JGb3JtYXR0aW5nQ29udGV4dFJvb3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OnN0YXRpY1ZlcnRpY2FsUG9zaXRpb25G
b3JPdXRPZkZsb3dQb3NpdGlvbmVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpzdGF0aWNIb3Jpem9udGFsUG9zaXRpb25Gb3JP
dXRPZkZsb3dQb3NpdGlvbmVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9y
bWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpzaHJpbmtUb0ZpdFdpZHRoKToKKyAgICAgICAgKiBs
YXlvdXQvTGF5b3V0Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxheW91
dENvbnRleHQ6OmxheW91dEZvcm1hdHRpbmdDb250ZXh0U3VidHJlZSk6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OkxheW91dENvbnRleHQ6OmNyZWF0ZUZvcm1hdHRpbmdDb250ZXh0KToKKyAg
ICAgICAgKiBsYXlvdXQvTGF5b3V0Q29udGV4dC5oOgorICAgICAgICAqIGxheW91dC9MYXlvdXRT
dGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxheW91dFN0YXRlOjpMYXlvdXRT
dGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxheW91dFN0YXRlOjplc3RhYmxpc2hl
ZEZvcm1hdHRpbmdTdGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxheW91
dFN0YXRlOjplc3RhYmxpc2hlZElubGluZUZvcm1hdHRpbmdTdGF0ZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkxheW91dFN0YXRlOjplc3RhYmxpc2hlZEJsb2NrRm9ybWF0dGlu
Z1N0YXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGF5b3V0U3RhdGU6OmVz
dGFibGlzaGVkVGFibGVGb3JtYXR0aW5nU3RhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpMYXlvdXRTdGF0ZTo6ZW5zdXJlRm9ybWF0dGluZ1N0YXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6TGF5b3V0U3RhdGU6OmVuc3VyZUlubGluZUZvcm1hdHRpbmdTdGF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxheW91dFN0YXRlOjplbnN1cmVCbG9ja0Zvcm1h
dHRpbmdTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxheW91dFN0YXRlOjplbnN1
cmVUYWJsZUZvcm1hdHRpbmdTdGF0ZSk6CisgICAgICAgICogbGF5b3V0L0xheW91dFN0YXRlLmg6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxheW91dFN0YXRlOjpoYXNJbmxpbmVGb3JtYXR0
aW5nU3RhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRTdGF0ZTo6
cm9vdCBjb25zdCk6CisgICAgICAgICogbGF5b3V0L1ZlcmlmaWNhdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6Om91dHB1dE1pc21hdGNoaW5nU2ltcGxlTGluZUluZm9ybWF0aW9u
SWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpvdXRwdXRNaXNtYXRjaGluZ0Nv
bXBsZXhMaW5lSW5mb3JtYXRpb25JZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OnZlcmlmeUFuZE91dHB1dFN1YnRyZWUpOgorICAgICAgICAqIGxheW91dC9ibG9ja2Zvcm1hdHRp
bmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRJbkZsb3dD
b250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4
dDo6cGxhY2VJbkZsb3dQb3NpdGlvbmVkQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlZEludHJpbnNpY1dpZHRoQ29uc3Ry
YWludHMpOgorICAgICAgICAqIGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5n
Q29udGV4dC5oOgorICAgICAgICAqIGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0
aW5nQ29udGV4dEdlb21ldHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tG
b3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd05vblJlcGxhY2VkSGVpZ2h0QW5kTWFy
Z2luKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6
R2VvbWV0cnk6OmludHJpbnNpY1dpZHRoQ29uc3RyYWludHMpOgorICAgICAgICAqIGxheW91dC9i
bG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OmluaXRpYWxDb250YWluaW5nQmxvY2spOgorICAgICAgICAqIGxh
eW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tNYXJnaW5Db2xsYXBzZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbkNvbGxhcHNlOjpt
YXJnaW5CZWZvcmVDb2xsYXBzZXNXaXRoRmlyc3RJbkZsb3dDaGlsZE1hcmdpbkJlZm9yZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1h
cmdpbkNvbGxhcHNlOjptYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhMYXN0SW5GbG93Q2hpbGRNYXJn
aW5BZnRlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGlu
Z0NvbnRleHQ6Ok1hcmdpbkNvbGxhcHNlOjptYXJnaW5zQ29sbGFwc2VUaHJvdWdoIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6TWFyZ2lu
Q29sbGFwc2U6OnBvc2l0aXZlTmVnYXRpdmVNYXJnaW5CZWZvcmUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW5Db2xsYXBzZTo6
cG9zaXRpdmVOZWdhdGl2ZU1hcmdpbkFmdGVyIGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvZGlz
cGxheXRyZWUvRGlzcGxheVBhaW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6
YWJzb2x1dGVEaXNwbGF5Qm94KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OnBhaW50U3Vi
dHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5Ojpjb2xsZWN0UGFpbnRSb290c0FuZENv
bnRlbnRSZWN0KToKKyAgICAgICAgKiBsYXlvdXQvZmxvYXRzL0Zsb2F0QXZvaWRlci5jcHA6Cisg
ICAgICAgICogbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpGbG9hdGluZ0NvbnRleHQ6OkZsb2F0aW5nQ29udGV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkZsb2F0aW5nQ29udGV4dDo6bWFwVG9wVG9GbG9hdGluZ1N0YXRl
Um9vdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZsb2F0aW5nQ29udGV4dDo6
bWFwUG9pbnRGcm9tRm9ybWF0dGluZ0NvbnRleHRSb290VG9GbG9hdGluZ1N0YXRlUm9vdCBjb25z
dCk6CisgICAgICAgICogbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ0NvbnRleHQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6RmxvYXRpbmdDb250ZXh0Ojpyb290IGNvbnN0KToKKyAgICAgICAg
KiBsYXlvdXQvZmxvYXRzL0Zsb2F0aW5nU3RhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpGbG9hdGluZ1N0YXRlOjpGbG9hdGluZ1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6RmxvYXRpbmdTdGF0ZTo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
RmxvYXRpbmdTdGF0ZTo6Ym90dG9tIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
RmxvYXRpbmdTdGF0ZTo6dG9wIGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvZmxvYXRzL0Zsb2F0
aW5nU3RhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6RmxvYXRpbmdTdGF0ZTo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6RmxvYXRpbmdTdGF0ZTo6cm9vdCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZsb2F0aW5nU3RhdGU6OmxlZnRCb3R0b20g
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGbG9hdGluZ1N0YXRlOjpyaWdodEJv
dHRvbSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZsb2F0aW5nU3RhdGU6OmJv
dHRvbSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZsb2F0aW5nU3RhdGU6OkZs
b2F0SXRlbTo6aXNEZXNjZW5kYW50T2ZGb3JtYXR0aW5nUm9vdCBjb25zdCk6CisgICAgICAgICog
bGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6SW5saW5lRm9y
bWF0dGluZ0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpuZXh0SW5saW5lTGV2
ZWxCb3hUb0xheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRp
bmdDb250ZXh0OjpsYXlvdXRJbkZsb3dDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVJbnRyaW5zaWNXaWR0aEZvckZvcm1h
dHRpbmdSb290KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQ6OmNvbGxlY3RJbmxpbmVDb250ZW50SWZOZWVkZWQpOgorICAgICAgICAqIGxheW91dC9p
bmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0Lmg6CisgICAgICAgICogbGF5
b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0OjpHZW9t
ZXRyeTo6Y29tcHV0ZWRUZXh0SW5kZW50IGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5l
Zm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0OjpRdWlya3M6OmxpbmVEZXNj
ZW50TmVlZHNDb2xsYXBzaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJrczo6bGluZUhlaWdodENvbnN0cmFpbnRzIGNvbnN0
KToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnVpbGRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjphbGlnbkNvbnRlbnRW
ZXJ0aWNhbGx5KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OmFkanVz
dEJhc2VsaW5lQW5kTGluZUhlaWdodCk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRp
bmcvTGluZUxheW91dENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5l
TGF5b3V0Q29udGV4dDo6TGluZUxheW91dENvbnRleHQpOgorICAgICAgICAqIGxheW91dC9pbmxp
bmVmb3JtYXR0aW5nL0xpbmVMYXlvdXRDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OkxpbmVMYXlvdXRDb250ZXh0Ojpyb290IGNvbnN0KToKKyAgICAgICAgKiBsYXlvdXQvaW50
ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlLmg6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXRJbnRlZ3JhdGlvbjo6Qm94VHJlZTo6cm9vdExheW91dEJveCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6Qm94VHJlZTo6cm9vdExheW91dEJveCk6Cisg
ICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6cm9v
dExheW91dEJveCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6
TGluZUxheW91dDo6cm9vdExheW91dEJveCk6CisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9u
L0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5oOgorICAgICAgICAqIGxheW91dC9pbnZhbGlk
YXRpb24vSW52YWxpZGF0aW9uU3RhdGUuaDoKKyAgICAgICAgKiBsYXlvdXQvbGF5b3V0dHJlZS9M
YXlvdXRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCb3g6OmVzdGFibGlzaGVz
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpCb3g6OmNvbnRhaW5pbmdCbG9jayBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OkJveDo6Zm9ybWF0dGluZ0NvbnRleHRSb290IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6Qm94Ojppbml0aWFsQ29udGFpbmluZ0Jsb2NrIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6Qm94Ojppc0Rlc2NlbmRhbnRPZiBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OkJveDo6aXNDb250YWluaW5nQmxvY2tEZXNjZW5kYW50T2YgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCb3g6OmlzT3ZlcmZsb3dWaXNpYmxlIGNvbnN0KToKKyAg
ICAgICAgKiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guaDoKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6Qm94OjpwYXJlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpC
b3g6OmlzQ29udGFpbmVyQm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Qm94
OjpzZXRQYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCb3g6OmlzQ29udGFpbmVy
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRDaGls
ZEl0ZXJhdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxheW91dENoaWxkSXRlcmF0
b3I8VD46OkxheW91dENoaWxkSXRlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpM
YXlvdXRDaGlsZEl0ZXJhdG9yQWRhcHRlcjxUPjo6TGF5b3V0Q2hpbGRJdGVyYXRvckFkYXB0ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpjaGlsZHJlbk9mVHlwZSk6CisgICAgICAgICog
bGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Q29udGFpbmVyQm94LmNwcDogUmVuYW1lZCBmcm9tIFNv
dXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dENvbnRhaW5lci5jcHAuCisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OkNvbnRhaW5lckJveDo6Q29udGFpbmVyQm94KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6Q29udGFpbmVyQm94OjpmaXJzdEluRmxvd0NoaWxkIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Q29udGFpbmVyQm94OjpmaXJzdEluRmxvd09y
RmxvYXRpbmdDaGlsZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkNvbnRhaW5l
ckJveDo6bGFzdEluRmxvd0NoaWxkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
Q29udGFpbmVyQm94OjpsYXN0SW5GbG93T3JGbG9hdGluZ0NoaWxkIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6Q29udGFpbmVyQm94OjpzZXRGaXJzdENoaWxkKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6Q29udGFpbmVyQm94OjpzZXRMYXN0Q2hpbGQpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpDb250YWluZXJCb3g6OmFwcGVuZENoaWxkKToKKyAgICAgICAgKiBs
YXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRDb250YWluZXJCb3guaDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dENvbnRhaW5lci5oLgorICAgICAgICAq
IGxheW91dC9sYXlvdXR0cmVlL0xheW91dERlc2NlbmRhbnRJdGVyYXRvci5oOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpMYXlvdXREZXNjZW5kYW50SXRlcmF0b3I8VD46OkxheW91dERlc2Nl
bmRhbnRJdGVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxheW91dERlc2NlbmRh
bnRJdGVyYXRvckFkYXB0ZXI8VD46OkxheW91dERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpkZXNjZW5kYW50c09mVHlwZSk6CisgICAgICAgICog
bGF5b3V0L2xheW91dHRyZWUvTGF5b3V0SXRlcmF0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6TGF5b3V0Qm94VHJhdmVyc2FsOjpmaXJzdENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6TGF5b3V0Qm94VHJhdmVyc2FsOjpuZXh0QW5jZXN0b3JTaWJsaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6TGF5b3V0Qm94VHJhdmVyc2FsOjpuZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6TGF5b3V0Qm94VHJhdmVyc2FsOjpuZXh0U2tpcHBpbmdDaGlsZHJl
bik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlRyYXZlcnNhbDo6bmV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkxheW91dEl0ZXJhdG9yPFQ+OjpMYXlvdXRJdGVyYXRvcik6Cisg
ICAgICAgICogbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRUcmVlQ29udGVudDo6TGF5b3V0VHJlZUNvbnRlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjphcHBlbmRDaGlsZCk6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OlRyZWVCdWlsZGVyOjpidWlsZExheW91dFRyZWUpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpUcmVlQnVpbGRlcjo6Y3JlYXRlQ29udGFpbmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6VHJlZUJ1aWxkZXI6OmNyZWF0ZUxheW91dEJveCk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OlRyZWVCdWlsZGVyOjpidWlsZFRhYmxlU3RydWN0dXJlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6VHJlZUJ1aWxkZXI6OmJ1aWxkU3ViVHJlZSk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6Om91dHB1dElubGluZVJ1bnMpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpvdXRwdXRMYXlvdXRUcmVlKToKKyAgICAgICAgKiBsYXlvdXQvbGF5b3V0dHJlZS9M
YXlvdXRUcmVlQnVpbGRlci5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRUcmVl
Q29udGVudDo6cm9vdExheW91dEJveCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OkxheW91dFRyZWVDb250ZW50Ojpyb290TGF5b3V0Qm94KToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6TGF5b3V0VHJlZUNvbnRlbnQ6OmFkZEJveCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OkxheW91dFRyZWVDb250ZW50OjphZGRDb250YWluZXIpOgorICAgICAgICAqIGxheW91dC90
YWJsZWZvcm1hdHRpbmcvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OlRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OlRhYmxlRm9ybWF0dGluZ0NvbnRl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpUYWJsZUZvcm1hdHRpbmdDb250ZXh0Ojps
YXlvdXRUYWJsZUNlbGxCb3gpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpUYWJsZUZvcm1h
dHRpbmdDb250ZXh0OjplbnN1cmVUYWJsZUdyaWQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpUYWJsZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlUHJlZmVycmVkV2lkdGhGb3JDb2x1bW5z
KToKKyAgICAgICAgKiBsYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlRm9ybWF0dGluZ0NvbnRl
eHQuaDoKKwogMjAyMC0wMi0xMSAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFtMRkNdIERvIG5vdCBjcmVhdGUgZ2VuZXJpYyBMYXlvdXQ6OkJveCBsZWFmIGJveGVz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0CmluZGV4IDQyOTc0MDVmNWQ2MDhhYzAzZThlZmRmMDg1NmQ4MDdkMmIwMzIx
YTIuLmVhMjIyY2E2ZTdkMGI0ZWVhNGQyMGFkNDEwMjE1NjFmNDQ1N2M3ZTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMu
dHh0CkBAIC0xNDUwLDcgKzE0NTAsNyBAQCBsYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdy
YXRpb25MaW5lTGF5b3V0LmNwcAogbGF5b3V0L2ludmFsaWRhdGlvbi9JbnZhbGlkYXRpb25Db250
ZXh0LmNwcAogbGF5b3V0L2ludmFsaWRhdGlvbi9JbnZhbGlkYXRpb25TdGF0ZS5jcHAKIGxheW91
dC9sYXlvdXR0cmVlL0xheW91dEJveC5jcHAKLWxheW91dC9sYXlvdXR0cmVlL0xheW91dENvbnRh
aW5lci5jcHAKK2xheW91dC9sYXlvdXR0cmVlL0xheW91dENvbnRhaW5lckJveC5jcHAKIGxheW91
dC9sYXlvdXR0cmVlL0xheW91dElubGluZVRleHRCb3guY3BwCiBsYXlvdXQvbGF5b3V0dHJlZS9M
YXlvdXRMaW5lQnJlYWtCb3guY3BwCiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRSZXBsYWNlZEJv
eC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCBiZGRiNDhlMTE4MTc3OGUzMzU4YjZjZTg3ODVmY2ViM2Y3NDQwMzJmLi5lMzI1
MGJiMDlkYzNkNjk5MDViNTg4YzM4ZGU3OWVlM2ZkMmI3ZjA0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zOTMsNyArMzkzLDcg
QEAKIAkJMTE5MzQwOEExRkVCMzU1RDAwOTM1RjFFIC8qIFJlbmRlclRyZWVCdWlsZGVyUnVieS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTE5MzQwODgx
RkVCMzU1RDAwOTM1RjFFIC8qIFJlbmRlclRyZWVCdWlsZGVyUnVieS5oICovOyB9OwogCQkxMTkz
NDA5NzFGRUQ3MTU1MDA5MzVGMUUgLyogUmVuZGVyVHJlZUJ1aWxkZXJGb3JtQ29udHJvbHMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDExOTM0MDk1MUZF
RDcxNTUwMDkzNUYxRSAvKiBSZW5kZXJUcmVlQnVpbGRlckZvcm1Db250cm9scy5oICovOyB9Owog
CQkxMTkzNDBBMzFGRUUwMjQwMDA5MzVGMUUgLyogUmVuZGVyVHJlZUJ1aWxkZXJCbG9jay5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTE5MzQwQTExRkVF
MDI0MDAwOTM1RjFFIC8qIFJlbmRlclRyZWVCdWlsZGVyQmxvY2suaCAqLzsgfTsKLQkJMTE5OUZB
NDYyMDhFMzVBMzAwMjM1OENDIC8qIExheW91dENvbnRhaW5lci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTE5OUZBNDQyMDhFMzVBMzAwMjM1OENDIC8q
IExheW91dENvbnRhaW5lci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTExOTlGQTQ2MjA4RTM1QTMwMDIzNThDQyAvKiBMYXlvdXRDb250YWluZXJC
b3guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDExOTlG
QTQ0MjA4RTM1QTMwMDIzNThDQyAvKiBMYXlvdXRDb250YWluZXJCb3guaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxMTk5RkE1QjIwOEUzQzdGMDAy
MzU4Q0MgLyogRGlzcGxheUJveC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMTE5OUZBNTkyMDhFM0M3RjAwMjM1OENDIC8qIERpc3BsYXlCb3guaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxMUNCMjc4OTIw
M0JBNTcwMDA0QTFEQzkgLyogUmVuZGVyVHJlZUJ1aWxkZXJGdWxsU2NyZWVuLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxMUNCMjc4NzIwM0JBNTcwMDA0
QTFEQzkgLyogUmVuZGVyVHJlZUJ1aWxkZXJGdWxsU2NyZWVuLmggKi87IH07CiAJCTExRTA2N0VF
MUU2MjQ2RTUwMDE2MkQxNiAvKiBTaW1wbGVMaW5lTGF5b3V0Q292ZXJhZ2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDExRTA2N0VEMUU2MjQ2RTUwMDE2
MkQxNiAvKiBTaW1wbGVMaW5lTGF5b3V0Q292ZXJhZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNTkzMSw4ICs1OTMxLDggQEAKIAkJMTE5MzQw
OTUxRkVENzE1NTAwOTM1RjFFIC8qIFJlbmRlclRyZWVCdWlsZGVyRm9ybUNvbnRyb2xzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlbmRlclRyZWVCdWlsZGVyRm9ybUNvbnRyb2xzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTExOTM0MEEwMUZFRTAyNDAwMDkzNUYxRSAvKiBSZW5kZXJUcmVl
QnVpbGRlckJsb2NrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclRyZWVCdWlsZGVyQmxv
Y2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxMTkzNDBBMTFGRUUwMjQwMDA5
MzVGMUUgLyogUmVuZGVyVHJlZUJ1aWxkZXJCbG9jay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJU
cmVlQnVpbGRlckJsb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTExOTlGQTQ0
MjA4RTM1QTMwMDIzNThDQyAvKiBMYXlvdXRDb250YWluZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGF5
b3V0Q29udGFpbmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTExOTlGQTQ1MjA4
RTM1QTMwMDIzNThDQyAvKiBMYXlvdXRDb250YWluZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TGF5b3V0Q29udGFpbmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTE5OUZB
NDQyMDhFMzVBMzAwMjM1OENDIC8qIExheW91dENvbnRhaW5lckJveC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBMYXlvdXRDb250YWluZXJCb3guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTE5
OUZBNDUyMDhFMzVBMzAwMjM1OENDIC8qIExheW91dENvbnRhaW5lckJveC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBMYXlvdXRDb250YWluZXJCb3guY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxMTk5RkE1OTIwOEUzQzdGMDAyMzU4Q0MgLyogRGlzcGxheUJveC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBEaXNwbGF5Qm94Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTExOTlG
QTVBMjA4RTNDN0YwMDIzNThDQyAvKiBEaXNwbGF5Qm94LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IERpc3BsYXlCb3guY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxMUIwNDJGQjIw
QjBFMjE0MDA4MjhBNkIgLyogTGF5b3V0RGVzY2VuZGFudEl0ZXJhdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExheW91dERlc2NlbmRhbnRJdGVyYXRvci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY3MjksOCArMTY3MjksOCBAQAogCQkJCTExNUNGQTk2
MjA4Qjk1MkIwMDFFNjk5MSAvKiBMYXlvdXRCb3guY3BwICovLAogCQkJCTExNUNGQTk1MjA4Qjk1
MkIwMDFFNjk5MSAvKiBMYXlvdXRCb3guaCAqLywKIAkJCQkxMTEwMEZDOTIwOTI3Q0JDMDA4MUFB
NkMgLyogTGF5b3V0Q2hpbGRJdGVyYXRvci5oICovLAotCQkJCTExOTlGQTQ1MjA4RTM1QTMwMDIz
NThDQyAvKiBMYXlvdXRDb250YWluZXIuY3BwICovLAotCQkJCTExOTlGQTQ0MjA4RTM1QTMwMDIz
NThDQyAvKiBMYXlvdXRDb250YWluZXIuaCAqLywKKwkJCQkxMTk5RkE0NTIwOEUzNUEzMDAyMzU4
Q0MgLyogTGF5b3V0Q29udGFpbmVyQm94LmNwcCAqLywKKwkJCQkxMTk5RkE0NDIwOEUzNUEzMDAy
MzU4Q0MgLyogTGF5b3V0Q29udGFpbmVyQm94LmggKi8sCiAJCQkJMTFCMDQyRkIyMEIwRTIxNDAw
ODI4QTZCIC8qIExheW91dERlc2NlbmRhbnRJdGVyYXRvci5oICovLAogCQkJCTZGMEI5OEI2MjNG
MjY5MDYwMEVFQzJGMiAvKiBMYXlvdXRJbmxpbmVUZXh0Qm94LmNwcCAqLywKIAkJCQk2RjBCOThC
MzIzRjI2OEVCMDBFRUMyRjIgLyogTGF5b3V0SW5saW5lVGV4dEJveC5oICovLApAQCAtMzEyNzgs
NyArMzEyNzgsNyBAQAogCQkJCTExMzEwQ0Y3MjBCQTRBNjIwMDY1QThEMCAvKiBMYXlvdXRBbmNl
c3Rvckl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkxMTVDRkE5NzIwOEI5NTJCMDAxRTY5
OTEgLyogTGF5b3V0Qm94LmggaW4gSGVhZGVycyAqLywKIAkJCQkxMTMxMENGNjIwQkE0QTU2MDA2
NUE4RDAgLyogTGF5b3V0Q2hpbGRJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMTE5OUZB
NDYyMDhFMzVBMzAwMjM1OENDIC8qIExheW91dENvbnRhaW5lci5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMTE5OUZBNDYyMDhFMzVBMzAwMjM1OENDIC8qIExheW91dENvbnRhaW5lckJveC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNkYyNkJCNkMyMzM0M0U2RjAwMkYyQkVBIC8qIExheW91dENvbnRleHQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTExMzEwQ0Y1MjBCQTRBNEMwMDY1QThEMCAvKiBMYXlvdXRE
ZXNjZW5kYW50SXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTZGMEI5OEI1MjNGMjY4RUMw
MEVFQzJGMiAvKiBMYXlvdXRJbmxpbmVUZXh0Qm94LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IGNiODYwMmYzNmVjYTI3
Yzc2YWIzZWJjNzM0NWZmZWZlYWY1OTEwNzkuLjExMjhlYTFhZDg4NzdmZTVlYWNlOWIzYzFhMzg2
ZjE2OTk4ZjhhYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5n
Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0
LmNwcApAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgIkZvcm1hdHRpbmdTdGF0ZS5oIgogI2lu
Y2x1ZGUgIkludmFsaWRhdGlvblN0YXRlLmgiCiAjaW5jbHVkZSAiTGF5b3V0Qm94LmgiCi0jaW5j
bHVkZSAiTGF5b3V0Q29udGFpbmVyLmgiCisjaW5jbHVkZSAiTGF5b3V0Q29udGFpbmVyQm94Lmgi
CiAjaW5jbHVkZSAiTGF5b3V0Q29udGV4dC5oIgogI2luY2x1ZGUgIkxheW91dERlc2NlbmRhbnRJ
dGVyYXRvci5oIgogI2luY2x1ZGUgIkxheW91dFJlcGxhY2VkQm94LmgiCkBAIC00Niw3ICs0Niw3
IEBAIG5hbWVzcGFjZSBMYXlvdXQgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoRm9y
bWF0dGluZ0NvbnRleHQpOwogCi1Gb3JtYXR0aW5nQ29udGV4dDo6Rm9ybWF0dGluZ0NvbnRleHQo
Y29uc3QgQ29udGFpbmVyJiBmb3JtYXR0aW5nQ29udGV4dFJvb3QsIEZvcm1hdHRpbmdTdGF0ZSYg
Zm9ybWF0dGluZ1N0YXRlKQorRm9ybWF0dGluZ0NvbnRleHQ6OkZvcm1hdHRpbmdDb250ZXh0KGNv
bnN0IENvbnRhaW5lckJveCYgZm9ybWF0dGluZ0NvbnRleHRSb290LCBGb3JtYXR0aW5nU3RhdGUm
IGZvcm1hdHRpbmdTdGF0ZSkKICAgICA6IG1fcm9vdChtYWtlV2Vha1B0cihmb3JtYXR0aW5nQ29u
dGV4dFJvb3QpKQogICAgICwgbV9mb3JtYXR0aW5nU3RhdGUoZm9ybWF0dGluZ1N0YXRlKQogewpA
QCAtMTY1LDEyICsxNjUsMTIgQEAgdm9pZCBGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0T3V0T2ZG
bG93Q29udGVudChJbnZhbGlkYXRpb25TdGF0ZSYgaW52YWxpZGF0aW9uU3QKICAgICAgICAgYXV0
byYgb3V0T2ZGbG93Um9vdERpc3BsYXlCb3ggPSBnZW9tZXRyeUZvckJveCgqb3V0T2ZGbG93Qm94
KTsKICAgICAgICAgY29tcHV0ZUJvcmRlckFuZFBhZGRpbmcoKm91dE9mRmxvd0JveCwgR2VvbWV0
cnk6Omhvcml6b250YWxDb25zdHJhaW50c0ZvckluRmxvdyhvdXRPZkZsb3dSb290RGlzcGxheUJv
eCkpOwogICAgICAgICBjb21wdXRlT3V0T2ZGbG93SG9yaXpvbnRhbEdlb21ldHJ5KCpvdXRPZkZs
b3dCb3gsIGhvcml6b250YWxDb25zdHJhaW50cyk7Ci0gICAgICAgIGlmICghaXM8Q29udGFpbmVy
Pigqb3V0T2ZGbG93Qm94KSB8fCAhZG93bmNhc3Q8Q29udGFpbmVyPigqb3V0T2ZGbG93Qm94KS5o
YXNDaGlsZCgpKSB7CisgICAgICAgIGlmICghaXM8Q29udGFpbmVyQm94Pigqb3V0T2ZGbG93Qm94
KSB8fCAhZG93bmNhc3Q8Q29udGFpbmVyQm94Pigqb3V0T2ZGbG93Qm94KS5oYXNDaGlsZCgpKSB7
CiAgICAgICAgICAgICBjb21wdXRlT3V0T2ZGbG93VmVydGljYWxHZW9tZXRyeSgqb3V0T2ZGbG93
Qm94LCBob3Jpem9udGFsQ29uc3RyYWludHMsIHZlcnRpY2FsQ29uc3RyYWludHMpOwogICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvJiBvdXRPZkZsb3dSb290
Q29udGFpbmVyID0gZG93bmNhc3Q8Q29udGFpbmVyPigqb3V0T2ZGbG93Qm94KTsKKyAgICAgICAg
YXV0byYgb3V0T2ZGbG93Um9vdENvbnRhaW5lciA9IGRvd25jYXN0PENvbnRhaW5lckJveD4oKm91
dE9mRmxvd0JveCk7CiAgICAgICAgIGF1dG8gZm9ybWF0dGluZ0NvbnRleHQgPSBMYXlvdXRDb250
ZXh0OjpjcmVhdGVGb3JtYXR0aW5nQ29udGV4dChvdXRPZkZsb3dSb290Q29udGFpbmVyLCBsYXlv
dXRTdGF0ZSgpKTsKICAgICAgICAgaWYgKG91dE9mRmxvd1Jvb3RDb250YWluZXIuaGFzSW5GbG93
T3JGbG9hdGluZ0NoaWxkKCkpCiAgICAgICAgICAgICBmb3JtYXR0aW5nQ29udGV4dC0+bGF5b3V0
SW5GbG93Q29udGVudChpbnZhbGlkYXRpb25TdGF0ZSwgR2VvbWV0cnk6Omhvcml6b250YWxDb25z
dHJhaW50c0ZvckluRmxvdyhvdXRPZkZsb3dSb290RGlzcGxheUJveCksIEdlb21ldHJ5Ojp2ZXJ0
aWNhbENvbnN0cmFpbnRzRm9ySW5GbG93KG91dE9mRmxvd1Jvb3REaXNwbGF5Qm94KSk7CkBAIC0x
ODAsMTQgKzE4MCwxNCBAQCB2b2lkIEZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRPdXRPZkZsb3dD
b250ZW50KEludmFsaWRhdGlvblN0YXRlJiBpbnZhbGlkYXRpb25TdAogICAgIExPR19XSVRIX1NU
UkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFtIDw8ICJFbmQ6IGxheW91dCBvdXQt
b2YtZmxvdyBjb250ZW50IC0+IGNvbnRleHQ6ICIgPDwgJmxheW91dFN0YXRlKCkgPDwgIiByb290
OiAiIDw8ICZyb290KCkpOwogfQogCi1zdGF0aWMgTGF5b3V0VW5pdCBtYXBIb3Jpem9udGFsUG9z
aXRpb25Ub0FuY2VzdG9yKGNvbnN0IEZvcm1hdHRpbmdDb250ZXh0JiBmb3JtYXR0aW5nQ29udGV4
dCwgTGF5b3V0VW5pdCBob3Jpem9udGFsUG9zaXRpb24sIGNvbnN0IENvbnRhaW5lciYgY29udGFp
bmluZ0Jsb2NrLCBjb25zdCBDb250YWluZXImIGFuY2VzdG9yKQorc3RhdGljIExheW91dFVuaXQg
bWFwSG9yaXpvbnRhbFBvc2l0aW9uVG9BbmNlc3Rvcihjb25zdCBGb3JtYXR0aW5nQ29udGV4dCYg
Zm9ybWF0dGluZ0NvbnRleHQsIExheW91dFVuaXQgaG9yaXpvbnRhbFBvc2l0aW9uLCBjb25zdCBD
b250YWluZXJCb3gmIGNvbnRhaW5pbmdCbG9jaywgY29uc3QgQ29udGFpbmVyQm94JiBhbmNlc3Rv
cikKIHsKICAgICAvLyAiaG9yaXpvbnRhbFBvc2l0aW9uIiBpcyBpbiB0aGUgY29vcmRpbmF0ZSBz
eXN0ZW0gb2YgdGhlICJjb250YWluaW5nQmxvY2siLiAtPiBtYXAgZnJvbSBjb250YWluaW5nQmxv
Y2sgdG8gYW5jZXN0b3IuCiAgICAgaWYgKCZjb250YWluaW5nQmxvY2sgPT0gJmFuY2VzdG9yKQog
ICAgICAgICByZXR1cm4gaG9yaXpvbnRhbFBvc2l0aW9uOwogICAgIEFTU0VSVChjb250YWluaW5n
QmxvY2suaXNDb250YWluaW5nQmxvY2tEZXNjZW5kYW50T2YoYW5jZXN0b3IpKTsKLSAgICBmb3Ig
KGF1dG8qIGNvbnRhaW5lciA9ICZjb250YWluaW5nQmxvY2s7IGNvbnRhaW5lciAmJiBjb250YWlu
ZXIgIT0gJmFuY2VzdG9yOyBjb250YWluZXIgPSBjb250YWluZXItPmNvbnRhaW5pbmdCbG9jaygp
KQotICAgICAgICBob3Jpem9udGFsUG9zaXRpb24gKz0gZm9ybWF0dGluZ0NvbnRleHQuZ2VvbWV0
cnlGb3JCb3goKmNvbnRhaW5lcikubGVmdCgpOworICAgIGZvciAoYXV0byogY29udGFpbmVyQm94
ID0gJmNvbnRhaW5pbmdCbG9jazsgY29udGFpbmVyQm94ICYmIGNvbnRhaW5lckJveCAhPSAmYW5j
ZXN0b3I7IGNvbnRhaW5lckJveCA9IGNvbnRhaW5lckJveC0+Y29udGFpbmluZ0Jsb2NrKCkpCisg
ICAgICAgIGhvcml6b250YWxQb3NpdGlvbiArPSBmb3JtYXR0aW5nQ29udGV4dC5nZW9tZXRyeUZv
ckJveCgqY29udGFpbmVyQm94KS5sZWZ0KCk7CiAgICAgcmV0dXJuIGhvcml6b250YWxQb3NpdGlv
bjsKIH0KIApAQCAtMTk4LDggKzE5OCw4IEBAIExheW91dFVuaXQgRm9ybWF0dGluZ0NvbnRleHQ6
Om1hcFRvcFRvRm9ybWF0dGluZ0NvbnRleHRSb290KGNvbnN0IEJveCYgbGF5b3V0Qm94CiAgICAg
YXV0byYgZm9ybWF0dGluZ0NvbnRleHRSb290ID0gcm9vdCgpOwogICAgIEFTU0VSVChsYXlvdXRC
b3guaXNDb250YWluaW5nQmxvY2tEZXNjZW5kYW50T2YoZm9ybWF0dGluZ0NvbnRleHRSb290KSk7
CiAgICAgYXV0byB0b3AgPSBnZW9tZXRyeUZvckJveChsYXlvdXRCb3gpLnRvcCgpOwotICAgIGZv
ciAoYXV0byogY29udGFpbmVyID0gbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpOyBjb250YWlu
ZXIgJiYgY29udGFpbmVyICE9ICZmb3JtYXR0aW5nQ29udGV4dFJvb3Q7IGNvbnRhaW5lciA9IGNv
bnRhaW5lci0+Y29udGFpbmluZ0Jsb2NrKCkpCi0gICAgICAgIHRvcCArPSBnZW9tZXRyeUZvckJv
eCgqY29udGFpbmVyKS50b3AoKTsKKyAgICBmb3IgKGF1dG8qIGNvbnRhaW5lckJveCA9IGxheW91
dEJveC5jb250YWluaW5nQmxvY2soKTsgY29udGFpbmVyQm94ICYmIGNvbnRhaW5lckJveCAhPSAm
Zm9ybWF0dGluZ0NvbnRleHRSb290OyBjb250YWluZXJCb3ggPSBjb250YWluZXJCb3gtPmNvbnRh
aW5pbmdCbG9jaygpKQorICAgICAgICB0b3AgKz0gZ2VvbWV0cnlGb3JCb3goKmNvbnRhaW5lckJv
eCkudG9wKCk7CiAgICAgcmV0dXJuIHRvcDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9y
bWF0dGluZ0NvbnRleHQuaAppbmRleCAxYzZkOTU3NGI3YjFhN2E2YjMxNzg5NDIzN2VjZjM3M2Ex
MGYxOGI2Li44MjU5ZjQ5OWZlYWM5ZjU1ZmMyNTYyM2ViYzg0NzZmOWE4ZDYwY2FlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuaApAQCAtMjcsNyArMjcsNyBAQAog
CiAjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCiAKLSNpbmNsdWRlICJMYXlv
dXRDb250YWluZXIuaCIKKyNpbmNsdWRlICJMYXlvdXRDb250YWluZXJCb3guaCIKICNpbmNsdWRl
ICJMYXlvdXRVbml0LmgiCiAjaW5jbHVkZSAiTGF5b3V0VW5pdHMuaCIKICNpbmNsdWRlIDx3dGYv
SXNvTWFsbG9jLmg+CkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIEJveDsKIGNsYXNzIFJlcGxhY2Vk
Qm94Owogc3RydWN0IENvbXB1dGVkSG9yaXpvbnRhbE1hcmdpbjsKIHN0cnVjdCBDb21wdXRlZFZl
cnRpY2FsTWFyZ2luOwotY2xhc3MgQ29udGFpbmVyOworY2xhc3MgQ29udGFpbmVyQm94Owogc3Ry
dWN0IENvbnRlbnRIZWlnaHRBbmRNYXJnaW47CiBzdHJ1Y3QgQ29udGVudFdpZHRoQW5kTWFyZ2lu
Owogc3RydWN0IEVkZ2VzOwpAQCAtNjIsNyArNjIsNyBAQCBzdHJ1Y3QgVmVydGljYWxHZW9tZXRy
eTsKIGNsYXNzIEZvcm1hdHRpbmdDb250ZXh0IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVE
KEZvcm1hdHRpbmdDb250ZXh0KTsKIHB1YmxpYzoKLSAgICBGb3JtYXR0aW5nQ29udGV4dChjb25z
dCBDb250YWluZXImIGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgRm9ybWF0dGluZ1N0YXRlJik7Cisg
ICAgRm9ybWF0dGluZ0NvbnRleHQoY29uc3QgQ29udGFpbmVyQm94JiBmb3JtYXR0aW5nQ29udGV4
dFJvb3QsIEZvcm1hdHRpbmdTdGF0ZSYpOwogICAgIHZpcnR1YWwgfkZvcm1hdHRpbmdDb250ZXh0
KCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0SW5GbG93Q29udGVudChJbnZhbGlkYXRpb25T
dGF0ZSYsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYsIGNvbnN0IFZlcnRpY2FsQ29uc3Ry
YWludHMmKSA9IDA7CkBAIC05OSw3ICs5OSw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICB1
c2luZyBMYXlvdXRRdWV1ZSA9IFZlY3Rvcjxjb25zdCBCb3gqPjsKIAotICAgIGNvbnN0IENvbnRh
aW5lciYgcm9vdCgpIGNvbnN0IHsgcmV0dXJuICptX3Jvb3Q7IH0KKyAgICBjb25zdCBDb250YWlu
ZXJCb3gmIHJvb3QoKSBjb25zdCB7IHJldHVybiAqbV9yb290OyB9CiAgICAgTGF5b3V0U3RhdGUm
IGxheW91dFN0YXRlKCkgY29uc3Q7CiAgICAgY29uc3QgRm9ybWF0dGluZ1N0YXRlJiBmb3JtYXR0
aW5nU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2Zvcm1hdHRpbmdTdGF0ZTsgfQogICAgIEZvcm1h
dHRpbmdTdGF0ZSYgZm9ybWF0dGluZ1N0YXRlKCkgeyByZXR1cm4gbV9mb3JtYXR0aW5nU3RhdGU7
IH0KQEAgLTIwNCw3ICsyMDQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcHV0ZU91dE9mRmxv
d1ZlcnRpY2FsR2VvbWV0cnkoY29uc3QgQm94JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRz
JiwgY29uc3QgVmVydGljYWxDb25zdHJhaW50cyYpOwogICAgIHZvaWQgY29tcHV0ZU91dE9mRmxv
d0hvcml6b250YWxHZW9tZXRyeShjb25zdCBCb3gmLCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWlu
dHMmKTsKIAotICAgIFdlYWtQdHI8Y29uc3QgQ29udGFpbmVyPiBtX3Jvb3Q7CisgICAgV2Vha1B0
cjxjb25zdCBDb250YWluZXJCb3g+IG1fcm9vdDsKICAgICBGb3JtYXR0aW5nU3RhdGUmIG1fZm9y
bWF0dGluZ1N0YXRlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zv
cm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1h
dHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCmluZGV4IDEyYmE4Y2FkZjE0OTViMjEyZDc1OGQ1YjZl
NWY5ZGU4MDZlN2E3MTEuLjY4YTJjY2NmM2EzMjg4ODE3YzI1MzU0MGJmMmVjZDEyOTQzYTZhMTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21l
dHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRHZW9t
ZXRyeS5jcHAKQEAgLTEyMiw3ICsxMjIsNyBAQCBMYXlvdXRVbml0IEZvcm1hdHRpbmdDb250ZXh0
OjpHZW9tZXRyeTo6Y29udGVudEhlaWdodEZvckZvcm1hdHRpbmdDb250ZXh0Um9vdChjbwogICAg
IC8vIEluIGFkZGl0aW9uLCBpZiB0aGUgZWxlbWVudCBoYXMgYW55IGZsb2F0aW5nIGRlc2NlbmRh
bnRzIHdob3NlIGJvdHRvbSBtYXJnaW4gZWRnZSBpcyBiZWxvdyB0aGUgZWxlbWVudCdzIGJvdHRv
bSBjb250ZW50IGVkZ2UsCiAgICAgLy8gdGhlbiB0aGUgaGVpZ2h0IGlzIGluY3JlYXNlZCB0byBp
bmNsdWRlIHRob3NlIGVkZ2VzLiBPbmx5IGZsb2F0cyB0aGF0IHBhcnRpY2lwYXRlIGluIHRoaXMg
YmxvY2sgZm9ybWF0dGluZyBjb250ZXh0IGFyZSB0YWtlbgogICAgIC8vIGludG8gYWNjb3VudCwg
ZS5nLiwgZmxvYXRzIGluc2lkZSBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQgZGVzY2VuZGFudHMgb3Ig
b3RoZXIgZmxvYXRzIGFyZSBub3QuCi0gICAgaWYgKCFpczxDb250YWluZXI+KGxheW91dEJveCkg
fHwgIWRvd25jYXN0PENvbnRhaW5lcj4obGF5b3V0Qm94KS5oYXNJbkZsb3dPckZsb2F0aW5nQ2hp
bGQoKSkKKyAgICBpZiAoIWlzPENvbnRhaW5lckJveD4obGF5b3V0Qm94KSB8fCAhZG93bmNhc3Q8
Q29udGFpbmVyQm94PihsYXlvdXRCb3gpLmhhc0luRmxvd09yRmxvYXRpbmdDaGlsZCgpKQogICAg
ICAgICByZXR1cm4geyB9OwogCiAgICAgYXV0byYgbGF5b3V0U3RhdGUgPSB0aGlzLT5sYXlvdXRT
dGF0ZSgpOwpAQCAtMTMxLDcgKzEzMSw3IEBAIExheW91dFVuaXQgRm9ybWF0dGluZ0NvbnRleHQ6
Okdlb21ldHJ5Ojpjb250ZW50SGVpZ2h0Rm9yRm9ybWF0dGluZ0NvbnRleHRSb290KGNvCiAgICAg
YXV0byBib3JkZXJBbmRQYWRkaW5nVG9wID0gYm94R2VvbWV0cnkuYm9yZGVyVG9wKCkgKyBib3hH
ZW9tZXRyeS5wYWRkaW5nVG9wKCkudmFsdWVPcigwKTsKICAgICBhdXRvIHRvcCA9IGJvcmRlckFu
ZFBhZGRpbmdUb3A7CiAgICAgYXV0byBib3R0b20gPSBib3JkZXJBbmRQYWRkaW5nVG9wOwotICAg
IGF1dG8mIGZvcm1hdHRpbmdSb290Q29udGFpbmVyID0gZG93bmNhc3Q8Q29udGFpbmVyPihsYXlv
dXRCb3gpOworICAgIGF1dG8mIGZvcm1hdHRpbmdSb290Q29udGFpbmVyID0gZG93bmNhc3Q8Q29u
dGFpbmVyQm94PihsYXlvdXRCb3gpOwogICAgIGlmIChmb3JtYXR0aW5nUm9vdENvbnRhaW5lci5l
c3RhYmxpc2hlc0lubGluZUZvcm1hdHRpbmdDb250ZXh0KCkpIHsKICAgICAgICAgYXV0byYgbGlu
ZUJveGVzID0gbGF5b3V0U3RhdGUuZXN0YWJsaXNoZWRJbmxpbmVGb3JtYXR0aW5nU3RhdGUoZm9y
bWF0dGluZ1Jvb3RDb250YWluZXIpLmRpc3BsYXlJbmxpbmVDb250ZW50KCktPmxpbmVCb3hlczsK
ICAgICAgICAgLy8gRXZlbiBlbXB0eSBjb250YWluZXJzIGdlbmVyYXRlIG9uZSBsaW5lLiAKQEAg
LTIzOSwxMSArMjM5LDExIEBAIExheW91dFVuaXQgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5
OjpzdGF0aWNWZXJ0aWNhbFBvc2l0aW9uRm9yT3V0T2ZGbG93UG9zaXRpCiAgICAgLy8gUmVzb2x2
ZSB0b3AgYWxsIHRoZSB3YXkgdXAgdG8gdGhlIGNvbnRhaW5pbmcgYmxvY2suCiAgICAgYXV0byYg
Y29udGFpbmluZ0Jsb2NrID0gKmxheW91dEJveC5jb250YWluaW5nQmxvY2soKTsKICAgICAvLyBT
dGFydCB3aXRoIHRoZSBwYXJlbnQgc2luY2Ugd2UgcHJldGVuZCB0aGF0IHRoaXMgYm94IGlzIG5v
cm1hbCBmbG93LgotICAgIGZvciAoYXV0byogY29udGFpbmVyID0gbGF5b3V0Qm94LnBhcmVudCgp
OyBjb250YWluZXIgIT0gJmNvbnRhaW5pbmdCbG9jazsgY29udGFpbmVyID0gY29udGFpbmVyLT5j
b250YWluaW5nQmxvY2soKSkgewotICAgICAgICBhdXRvJiBib3hHZW9tZXRyeSA9IGZvcm1hdHRp
bmdDb250ZXh0Lmdlb21ldHJ5Rm9yQm94KCpjb250YWluZXIsIEVzY2FwZVJlYXNvbjo6T3V0T2ZG
bG93Qm94TmVlZHNJbkZsb3dHZW9tZXRyeSk7CisgICAgZm9yIChhdXRvKiBjb250YWluZXJCb3gg
PSBsYXlvdXRCb3gucGFyZW50KCk7IGNvbnRhaW5lckJveCAhPSAmY29udGFpbmluZ0Jsb2NrOyBj
b250YWluZXJCb3ggPSBjb250YWluZXJCb3gtPmNvbnRhaW5pbmdCbG9jaygpKSB7CisgICAgICAg
IGF1dG8mIGJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ0NvbnRleHQuZ2VvbWV0cnlGb3JCb3goKmNv
bnRhaW5lckJveCwgRXNjYXBlUmVhc29uOjpPdXRPZkZsb3dCb3hOZWVkc0luRmxvd0dlb21ldHJ5
KTsKICAgICAgICAgLy8gRGlzcGxheTo6Qm94Ojp0b3AgaXMgdGhlIGJvcmRlciBib3ggdG9wIHBv
c2l0aW9uIGluIGl0cyBjb250YWluaW5nIGJsb2NrJ3MgY29vcmRpbmF0ZSBzeXN0ZW0uCiAgICAg
ICAgIHRvcCArPSBib3hHZW9tZXRyeS50b3AoKTsKLSAgICAgICAgQVNTRVJUKCFjb250YWluZXIt
PmlzUG9zaXRpb25lZCgpIHx8IGxheW91dEJveC5pc0ZpeGVkUG9zaXRpb25lZCgpKTsKKyAgICAg
ICAgQVNTRVJUKCFjb250YWluZXJCb3gtPmlzUG9zaXRpb25lZCgpIHx8IGxheW91dEJveC5pc0Zp
eGVkUG9zaXRpb25lZCgpKTsKICAgICB9CiAgICAgLy8gTW92ZSB0aGUgc3RhdGljIHBvc2l0aW9u
IHJlbGF0aXZlIHRvIHRoZSBwYWRkaW5nIGJveC4gVGhpcyBpcyB2ZXJ5IHNwZWNpZmljIHRvIGFi
b2x1dGVseSBwb3NpdGlvbmVkIGJveGVzLgogICAgIHJldHVybiB0b3AgLSB2ZXJ0aWNhbENvbnN0
cmFpbnRzLmxvZ2ljYWxUb3A7CkBAIC0yNjIsMTEgKzI2MiwxMSBAQCBMYXlvdXRVbml0IEZvcm1h
dHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6c3RhdGljSG9yaXpvbnRhbFBvc2l0aW9uRm9yT3V0T2ZG
bG93UG9zaQogICAgIC8vIFJlc29sdmUgbGVmdCBhbGwgdGhlIHdheSB1cCB0byB0aGUgY29udGFp
bmluZyBibG9jay4KICAgICBhdXRvJiBjb250YWluaW5nQmxvY2sgPSAqbGF5b3V0Qm94LmNvbnRh
aW5pbmdCbG9jaygpOwogICAgIC8vIFN0YXJ0IHdpdGggdGhlIHBhcmVudCBzaW5jZSB3ZSBwcmV0
ZW5kIHRoYXQgdGhpcyBib3ggaXMgbm9ybWFsIGZsb3cuCi0gICAgZm9yIChhdXRvKiBjb250YWlu
ZXIgPSBsYXlvdXRCb3gucGFyZW50KCk7IGNvbnRhaW5lciAhPSAmY29udGFpbmluZ0Jsb2NrOyBj
b250YWluZXIgPSBjb250YWluZXItPmNvbnRhaW5pbmdCbG9jaygpKSB7Ci0gICAgICAgIGF1dG8m
IGJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ0NvbnRleHQuZ2VvbWV0cnlGb3JCb3goKmNvbnRhaW5l
ciwgRXNjYXBlUmVhc29uOjpPdXRPZkZsb3dCb3hOZWVkc0luRmxvd0dlb21ldHJ5KTsKKyAgICBm
b3IgKGF1dG8qIGNvbnRhaW5lckJveCA9IGxheW91dEJveC5wYXJlbnQoKTsgY29udGFpbmVyQm94
ICE9ICZjb250YWluaW5nQmxvY2s7IGNvbnRhaW5lckJveCA9IGNvbnRhaW5lckJveC0+Y29udGFp
bmluZ0Jsb2NrKCkpIHsKKyAgICAgICAgYXV0byYgYm94R2VvbWV0cnkgPSBmb3JtYXR0aW5nQ29u
dGV4dC5nZW9tZXRyeUZvckJveCgqY29udGFpbmVyQm94LCBFc2NhcGVSZWFzb246Ok91dE9mRmxv
d0JveE5lZWRzSW5GbG93R2VvbWV0cnkpOwogICAgICAgICAvLyBEaXNwbGF5OjpCb3g6OmxlZnQg
aXMgdGhlIGJvcmRlciBib3ggbGVmdCBwb3NpdGlvbiBpbiBpdHMgY29udGFpbmluZyBibG9jaydz
IGNvb3JkaW5hdGUgc3lzdGVtLgogICAgICAgICBsZWZ0ICs9IGJveEdlb21ldHJ5LmxlZnQoKTsK
LSAgICAgICAgQVNTRVJUKCFjb250YWluZXItPmlzUG9zaXRpb25lZCgpIHx8IGxheW91dEJveC5p
c0ZpeGVkUG9zaXRpb25lZCgpKTsKKyAgICAgICAgQVNTRVJUKCFjb250YWluZXJCb3gtPmlzUG9z
aXRpb25lZCgpIHx8IGxheW91dEJveC5pc0ZpeGVkUG9zaXRpb25lZCgpKTsKICAgICB9CiAgICAg
Ly8gTW92ZSB0aGUgc3RhdGljIHBvc2l0aW9uIHJlbGF0aXZlIHRvIHRoZSBwYWRkaW5nIGJveC4g
VGhpcyBpcyB2ZXJ5IHNwZWNpZmljIHRvIGFib2x1dGVseSBwb3NpdGlvbmVkIGJveGVzLgogICAg
IHJldHVybiBsZWZ0IC0gaG9yaXpvbnRhbENvbnN0cmFpbnRzLmxvZ2ljYWxMZWZ0OwpAQCAtMjg1
LDggKzI4NSw4IEBAIExheW91dFVuaXQgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpzaHJp
bmtUb0ZpdFdpZHRoKGNvbnN0IEJveCYgZm9ybWF0dGluZ1JvCiAKICAgICAvLyBUaGVuIHRoZSBz
aHJpbmstdG8tZml0IHdpZHRoIGlzOiBtaW4obWF4KHByZWZlcnJlZCBtaW5pbXVtIHdpZHRoLCBh
dmFpbGFibGUgd2lkdGgpLCBwcmVmZXJyZWQgd2lkdGgpLgogICAgIGF1dG8gaW50cmluc2ljV2lk
dGhDb25zdHJhaW50cyA9IEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgeyB9OwotICAgIGlmIChp
czxDb250YWluZXI+KGZvcm1hdHRpbmdSb290KSAmJiBkb3duY2FzdDxDb250YWluZXI+KGZvcm1h
dHRpbmdSb290KS5oYXNJbkZsb3dPckZsb2F0aW5nQ2hpbGQoKSkgewotICAgICAgICBhdXRvJiBy
b290ID0gZG93bmNhc3Q8Q29udGFpbmVyPihmb3JtYXR0aW5nUm9vdCk7CisgICAgaWYgKGlzPENv
bnRhaW5lckJveD4oZm9ybWF0dGluZ1Jvb3QpICYmIGRvd25jYXN0PENvbnRhaW5lckJveD4oZm9y
bWF0dGluZ1Jvb3QpLmhhc0luRmxvd09yRmxvYXRpbmdDaGlsZCgpKSB7CisgICAgICAgIGF1dG8m
IHJvb3QgPSBkb3duY2FzdDxDb250YWluZXJCb3g+KGZvcm1hdHRpbmdSb290KTsKICAgICAgICAg
YXV0byYgZm9ybWF0dGluZ1N0YXRlRm9yUm9vdCA9IGxheW91dFN0YXRlKCkuZW5zdXJlRm9ybWF0
dGluZ1N0YXRlKHJvb3QpOwogICAgICAgICBhdXRvIHByZWNvbXB1dGVkSW50cmluc2ljV2lkdGhD
b25zdHJhaW50cyA9IGZvcm1hdHRpbmdTdGF0ZUZvclJvb3QuaW50cmluc2ljV2lkdGhDb25zdHJh
aW50cygpOwogICAgICAgICBpZiAoIXByZWNvbXB1dGVkSW50cmluc2ljV2lkdGhDb25zdHJhaW50
cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRDb250ZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRDb250ZXh0LmNwcAppbmRleCAxN2UzZDIwMDhi
NmRkODFhOTczMDM2YzhlMGI4YjRlZTY3ZmEwY2NkLi42M2JhOTNiYjZkMzc5YmVhNWMxZWRiZTcy
YzdhZDQwMDE0ODBjMzM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0
Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dENvbnRleHQuY3Bw
CkBAIC0zNyw3ICszNyw3IEBACiAjaW5jbHVkZSAiSW52YWxpZGF0aW9uQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIkludmFsaWRhdGlvblN0YXRlLmgiCiAjaW5jbHVkZSAiTGF5b3V0Qm94LmgiCi0jaW5j
bHVkZSAiTGF5b3V0Q29udGFpbmVyLmgiCisjaW5jbHVkZSAiTGF5b3V0Q29udGFpbmVyQm94Lmgi
CiAjaW5jbHVkZSAiTGF5b3V0UGhhc2UuaCIKICNpbmNsdWRlICJMYXlvdXRUcmVlQnVpbGRlci5o
IgogI2luY2x1ZGUgIlJlbmRlclN0eWxlQ29uc3RhbnRzLmgiCkBAIC04OSw3ICs4OSw3IEBAIHZv
aWQgTGF5b3V0Q29udGV4dDo6bGF5b3V0V2l0aFByZXBhcmVkUm9vdEdlb21ldHJ5KEludmFsaWRh
dGlvblN0YXRlJiBpbnZhbGlkYXRpCiAgICAgICAgIGxheW91dEZvcm1hdHRpbmdDb250ZXh0U3Vi
dHJlZShmb3JtYXR0aW5nQ29udGV4dFJvb3QsIGludmFsaWRhdGlvblN0YXRlKTsKIH0KIAotdm9p
ZCBMYXlvdXRDb250ZXh0OjpsYXlvdXRGb3JtYXR0aW5nQ29udGV4dFN1YnRyZWUoY29uc3QgQ29u
dGFpbmVyJiBmb3JtYXR0aW5nQ29udGV4dFJvb3QsIEludmFsaWRhdGlvblN0YXRlJiBpbnZhbGlk
YXRpb25TdGF0ZSkKK3ZvaWQgTGF5b3V0Q29udGV4dDo6bGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRT
dWJ0cmVlKGNvbnN0IENvbnRhaW5lckJveCYgZm9ybWF0dGluZ0NvbnRleHRSb290LCBJbnZhbGlk
YXRpb25TdGF0ZSYgaW52YWxpZGF0aW9uU3RhdGUpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoZm9y
bWF0dGluZ0NvbnRleHRSb290LmVzdGFibGlzaGVzRm9ybWF0dGluZ0NvbnRleHQoKSk7CiAgICAg
YXV0byBmb3JtYXR0aW5nQ29udGV4dCA9IGNyZWF0ZUZvcm1hdHRpbmdDb250ZXh0KGZvcm1hdHRp
bmdDb250ZXh0Um9vdCwgbGF5b3V0U3RhdGUoKSk7CkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBM
YXlvdXRDb250ZXh0OjpsYXlvdXRGb3JtYXR0aW5nQ29udGV4dFN1YnRyZWUoY29uc3QgQ29udGFp
bmVyJiBmb3JtYXR0aW5nQ28KICAgICB9CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxGb3JtYXR0aW5n
Q29udGV4dD4gTGF5b3V0Q29udGV4dDo6Y3JlYXRlRm9ybWF0dGluZ0NvbnRleHQoY29uc3QgQ29u
dGFpbmVyJiBmb3JtYXR0aW5nQ29udGV4dFJvb3QsIExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSkK
K3N0ZDo6dW5pcXVlX3B0cjxGb3JtYXR0aW5nQ29udGV4dD4gTGF5b3V0Q29udGV4dDo6Y3JlYXRl
Rm9ybWF0dGluZ0NvbnRleHQoY29uc3QgQ29udGFpbmVyQm94JiBmb3JtYXR0aW5nQ29udGV4dFJv
b3QsIExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSkKIHsKICAgICBBU1NFUlQoZm9ybWF0dGluZ0Nv
bnRleHRSb290LmVzdGFibGlzaGVzRm9ybWF0dGluZ0NvbnRleHQoKSk7CiAgICAgaWYgKGZvcm1h
dHRpbmdDb250ZXh0Um9vdC5lc3RhYmxpc2hlc0lubGluZUZvcm1hdHRpbmdDb250ZXh0KCkpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRDb250ZXh0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0Q29udGV4dC5oCmluZGV4IGEwNzE4MDQ3Mzc5ZTBiYzM2
ZDhkZmE2MzM3NjA0MDI4ZWE0OGJkOTIuLjdlYThjM2I5MGQ4MjMyZGQ4YWZhMzJhZjNiZjc4NjFh
MTBjYjg4ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRDb250ZXh0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dENvbnRleHQuaApAQCAtMzksNyAr
MzksNyBAQCBjbGFzcyBSZW5kZXJWaWV3OwogCiBuYW1lc3BhY2UgTGF5b3V0IHsKIAotY2xhc3Mg
Q29udGFpbmVyOworY2xhc3MgQ29udGFpbmVyQm94OwogY2xhc3MgSW52YWxpZGF0aW9uU3RhdGU7
CiBjbGFzcyBMYXlvdXRTdGF0ZTsKIGNsYXNzIEZvcm1hdHRpbmdDb250ZXh0OwpAQCAtNTcsNyAr
NTcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBsYXlvdXQoY29uc3QgTGF5b3V0U2l6ZSYgcm9vdENv
bnRlbnRCb3hTaXplLCBJbnZhbGlkYXRpb25TdGF0ZSYpOwogICAgIHZvaWQgbGF5b3V0V2l0aFBy
ZXBhcmVkUm9vdEdlb21ldHJ5KEludmFsaWRhdGlvblN0YXRlJik7CiAKLSAgICBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPEZvcm1hdHRpbmdDb250ZXh0PiBjcmVhdGVGb3JtYXR0aW5nQ29udGV4dChj
b25zdCBDb250YWluZXImIGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgTGF5b3V0U3RhdGUmKTsKKyAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEZvcm1hdHRpbmdDb250ZXh0PiBjcmVhdGVGb3JtYXR0
aW5nQ29udGV4dChjb25zdCBDb250YWluZXJCb3gmIGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgTGF5
b3V0U3RhdGUmKTsKIAogICAgIC8vIEZJWE1FOiBUaGlzIGlzIHRlbXBvcmFyeS4gCiAgICAgc3Rh
dGljIHZvaWQgcGFpbnQoY29uc3QgTGF5b3V0U3RhdGUmLCBHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBJbnRSZWN0JiBkaXJ0eVJlY3QpOwpAQCAtNjcsNyArNjcsNyBAQCBwdWJsaWM6CiAjZW5kaWYK
IAogcHJpdmF0ZToKLSAgICB2b2lkIGxheW91dEZvcm1hdHRpbmdDb250ZXh0U3VidHJlZShjb25z
dCBDb250YWluZXImLCBJbnZhbGlkYXRpb25TdGF0ZSYpOworICAgIHZvaWQgbGF5b3V0Rm9ybWF0
dGluZ0NvbnRleHRTdWJ0cmVlKGNvbnN0IENvbnRhaW5lckJveCYsIEludmFsaWRhdGlvblN0YXRl
Jik7CiAgICAgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlKCkgeyByZXR1cm4gbV9sYXlvdXRTdGF0
ZTsgfQogCiAgICAgTGF5b3V0U3RhdGUmIG1fbGF5b3V0U3RhdGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0U3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L0xheW91dFN0YXRlLmNwcAppbmRleCBjZjc5ZTg5M2ZhZjQ3YTJmMDk0YjEyODEwYjdiZTlkYzI5
MDdkNzUwLi4zMWE5MGE1YWY3ZTk2NTg0NTVjYzUzNTllNWU5MTU1NjExODIxMzRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0ZS5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRl
ICJGbG9hdGluZ1N0YXRlLmgiCiAjaW5jbHVkZSAiSW5saW5lRm9ybWF0dGluZ1N0YXRlLmgiCiAj
aW5jbHVkZSAiTGF5b3V0Qm94LmgiCi0jaW5jbHVkZSAiTGF5b3V0Q29udGFpbmVyLmgiCisjaW5j
bHVkZSAiTGF5b3V0Q29udGFpbmVyQm94LmgiCiAjaW5jbHVkZSAiUmVuZGVyQm94LmgiCiAjaW5j
bHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlRhYmxlRm9ybWF0dGlu
Z1N0YXRlLmgiCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBMYXlvdXQgewogCiBXVEZfTUFL
RV9JU09fQUxMT0NBVEVEX0lNUEwoTGF5b3V0U3RhdGUpOwogCi1MYXlvdXRTdGF0ZTo6TGF5b3V0
U3RhdGUoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBDb250YWluZXImIHJvb3RDb250
YWluZXIpCitMYXlvdXRTdGF0ZTo6TGF5b3V0U3RhdGUoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50
LCBjb25zdCBDb250YWluZXJCb3gmIHJvb3RDb250YWluZXIpCiAgICAgOiBtX3Jvb3RDb250YWlu
ZXIobWFrZVdlYWtQdHIocm9vdENvbnRhaW5lcikpCiB7CiAgICAgLy8gSXQgbWFrZXMgYWJzb2x1
dGVseSBubyBzZW5zZSB0byBjb25zdHJ1Y3QgYSBkZWRpY2F0ZWQgbGF5b3V0IHN0YXRlIGZvciBh
IG5vbi1mb3JtYXR0aW5nIGNvbnRleHQgcm9vdCAobGF5b3V0IHdvdWxkIGJlIGEgbm8tb3ApLgpA
QCAtODcsNyArODcsNyBAQCBGb3JtYXR0aW5nU3RhdGUmIExheW91dFN0YXRlOjpmb3JtYXR0aW5n
U3RhdGVGb3JCb3goY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0CiAgICAgcmV0dXJuIGVzdGFi
bGlzaGVkRm9ybWF0dGluZ1N0YXRlKGxheW91dEJveC5mb3JtYXR0aW5nQ29udGV4dFJvb3QoKSk7
CiB9CiAKLUZvcm1hdHRpbmdTdGF0ZSYgTGF5b3V0U3RhdGU6OmVzdGFibGlzaGVkRm9ybWF0dGlu
Z1N0YXRlKGNvbnN0IENvbnRhaW5lciYgZm9ybWF0dGluZ0NvbnRleHRSb290KSBjb25zdAorRm9y
bWF0dGluZ1N0YXRlJiBMYXlvdXRTdGF0ZTo6ZXN0YWJsaXNoZWRGb3JtYXR0aW5nU3RhdGUoY29u
c3QgQ29udGFpbmVyQm94JiBmb3JtYXR0aW5nQ29udGV4dFJvb3QpIGNvbnN0CiB7CiAgICAgaWYg
KFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkubGF5b3V0Rm9ybWF0dGlu
Z0NvbnRleHRJbnRlZ3JhdGlvbkVuYWJsZWQoKSkgewogICAgICAgICBBU1NFUlQoJmZvcm1hdHRp
bmdDb250ZXh0Um9vdCA9PSBtX3Jvb3RDb250YWluZXIuZ2V0KCkpOwpAQCAtMTA0LDcgKzEwNCw3
IEBAIEZvcm1hdHRpbmdTdGF0ZSYgTGF5b3V0U3RhdGU6OmVzdGFibGlzaGVkRm9ybWF0dGluZ1N0
YXRlKGNvbnN0IENvbnRhaW5lciYgZm9ybWF0CiAgICAgcmV0dXJuICptX3RhYmxlRm9ybWF0dGlu
Z1N0YXRlcy5nZXQoJmZvcm1hdHRpbmdDb250ZXh0Um9vdCk7CiB9CiAKLUlubGluZUZvcm1hdHRp
bmdTdGF0ZSYgTGF5b3V0U3RhdGU6OmVzdGFibGlzaGVkSW5saW5lRm9ybWF0dGluZ1N0YXRlKGNv
bnN0IENvbnRhaW5lciYgZm9ybWF0dGluZ0NvbnRleHRSb290KSBjb25zdAorSW5saW5lRm9ybWF0
dGluZ1N0YXRlJiBMYXlvdXRTdGF0ZTo6ZXN0YWJsaXNoZWRJbmxpbmVGb3JtYXR0aW5nU3RhdGUo
Y29uc3QgQ29udGFpbmVyQm94JiBmb3JtYXR0aW5nQ29udGV4dFJvb3QpIGNvbnN0CiB7CiAgICAg
QVNTRVJUKGZvcm1hdHRpbmdDb250ZXh0Um9vdC5lc3RhYmxpc2hlc0lubGluZUZvcm1hdHRpbmdD
b250ZXh0KCkpOwogCkBAIC0xMTYsMTkgKzExNiwxOSBAQCBJbmxpbmVGb3JtYXR0aW5nU3RhdGUm
IExheW91dFN0YXRlOjplc3RhYmxpc2hlZElubGluZUZvcm1hdHRpbmdTdGF0ZShjb25zdCBDb250
YQogICAgIHJldHVybiAqbV9pbmxpbmVGb3JtYXR0aW5nU3RhdGVzLmdldCgmZm9ybWF0dGluZ0Nv
bnRleHRSb290KTsKIH0KIAotQmxvY2tGb3JtYXR0aW5nU3RhdGUmIExheW91dFN0YXRlOjplc3Rh
Ymxpc2hlZEJsb2NrRm9ybWF0dGluZ1N0YXRlKGNvbnN0IENvbnRhaW5lciYgZm9ybWF0dGluZ0Nv
bnRleHRSb290KSBjb25zdAorQmxvY2tGb3JtYXR0aW5nU3RhdGUmIExheW91dFN0YXRlOjplc3Rh
Ymxpc2hlZEJsb2NrRm9ybWF0dGluZ1N0YXRlKGNvbnN0IENvbnRhaW5lckJveCYgZm9ybWF0dGlu
Z0NvbnRleHRSb290KSBjb25zdAogewogICAgIEFTU0VSVChmb3JtYXR0aW5nQ29udGV4dFJvb3Qu
ZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KCkpOwogICAgIHJldHVybiAqbV9ibG9j
a0Zvcm1hdHRpbmdTdGF0ZXMuZ2V0KCZmb3JtYXR0aW5nQ29udGV4dFJvb3QpOwogfQogCi1UYWJs
ZUZvcm1hdHRpbmdTdGF0ZSYgTGF5b3V0U3RhdGU6OmVzdGFibGlzaGVkVGFibGVGb3JtYXR0aW5n
U3RhdGUoY29uc3QgQ29udGFpbmVyJiBmb3JtYXR0aW5nQ29udGV4dFJvb3QpIGNvbnN0CitUYWJs
ZUZvcm1hdHRpbmdTdGF0ZSYgTGF5b3V0U3RhdGU6OmVzdGFibGlzaGVkVGFibGVGb3JtYXR0aW5n
U3RhdGUoY29uc3QgQ29udGFpbmVyQm94JiBmb3JtYXR0aW5nQ29udGV4dFJvb3QpIGNvbnN0CiB7
CiAgICAgQVNTRVJUKGZvcm1hdHRpbmdDb250ZXh0Um9vdC5lc3RhYmxpc2hlc1RhYmxlRm9ybWF0
dGluZ0NvbnRleHQoKSk7CiAgICAgcmV0dXJuICptX3RhYmxlRm9ybWF0dGluZ1N0YXRlcy5nZXQo
JmZvcm1hdHRpbmdDb250ZXh0Um9vdCk7CiB9CiAKLUZvcm1hdHRpbmdTdGF0ZSYgTGF5b3V0U3Rh
dGU6OmVuc3VyZUZvcm1hdHRpbmdTdGF0ZShjb25zdCBDb250YWluZXImIGZvcm1hdHRpbmdDb250
ZXh0Um9vdCkKK0Zvcm1hdHRpbmdTdGF0ZSYgTGF5b3V0U3RhdGU6OmVuc3VyZUZvcm1hdHRpbmdT
dGF0ZShjb25zdCBDb250YWluZXJCb3gmIGZvcm1hdHRpbmdDb250ZXh0Um9vdCkKIHsKICAgICBp
ZiAoZm9ybWF0dGluZ0NvbnRleHRSb290LmVzdGFibGlzaGVzSW5saW5lRm9ybWF0dGluZ0NvbnRl
eHQoKSkKICAgICAgICAgcmV0dXJuIGVuc3VyZUlubGluZUZvcm1hdHRpbmdTdGF0ZShmb3JtYXR0
aW5nQ29udGV4dFJvb3QpOwpAQCAtMTM5LDcgKzEzOSw3IEBAIEZvcm1hdHRpbmdTdGF0ZSYgTGF5
b3V0U3RhdGU6OmVuc3VyZUZvcm1hdHRpbmdTdGF0ZShjb25zdCBDb250YWluZXImIGZvcm1hdHRp
bmdDCiAgICAgcmV0dXJuIGVuc3VyZVRhYmxlRm9ybWF0dGluZ1N0YXRlKGZvcm1hdHRpbmdDb250
ZXh0Um9vdCk7CiB9CiAKLUlubGluZUZvcm1hdHRpbmdTdGF0ZSYgTGF5b3V0U3RhdGU6OmVuc3Vy
ZUlubGluZUZvcm1hdHRpbmdTdGF0ZShjb25zdCBDb250YWluZXImIGZvcm1hdHRpbmdDb250ZXh0
Um9vdCkKK0lubGluZUZvcm1hdHRpbmdTdGF0ZSYgTGF5b3V0U3RhdGU6OmVuc3VyZUlubGluZUZv
cm1hdHRpbmdTdGF0ZShjb25zdCBDb250YWluZXJCb3gmIGZvcm1hdHRpbmdDb250ZXh0Um9vdCkK
IHsKICAgICBBU1NFUlQoZm9ybWF0dGluZ0NvbnRleHRSb290LmVzdGFibGlzaGVzSW5saW5lRm9y
bWF0dGluZ0NvbnRleHQoKSk7CiAKQEAgLTE2OCw3ICsxNjgsNyBAQCBJbmxpbmVGb3JtYXR0aW5n
U3RhdGUmIExheW91dFN0YXRlOjplbnN1cmVJbmxpbmVGb3JtYXR0aW5nU3RhdGUoY29uc3QgQ29u
dGFpbmVyJgogICAgIHJldHVybiAqbV9pbmxpbmVGb3JtYXR0aW5nU3RhdGVzLmVuc3VyZSgmZm9y
bWF0dGluZ0NvbnRleHRSb290LCBjcmVhdGUpLml0ZXJhdG9yLT52YWx1ZTsKIH0KIAotQmxvY2tG
b3JtYXR0aW5nU3RhdGUmIExheW91dFN0YXRlOjplbnN1cmVCbG9ja0Zvcm1hdHRpbmdTdGF0ZShj
b25zdCBDb250YWluZXImIGZvcm1hdHRpbmdDb250ZXh0Um9vdCkKK0Jsb2NrRm9ybWF0dGluZ1N0
YXRlJiBMYXlvdXRTdGF0ZTo6ZW5zdXJlQmxvY2tGb3JtYXR0aW5nU3RhdGUoY29uc3QgQ29udGFp
bmVyQm94JiBmb3JtYXR0aW5nQ29udGV4dFJvb3QpCiB7CiAgICAgQVNTRVJUKGZvcm1hdHRpbmdD
b250ZXh0Um9vdC5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoKSk7CiAKQEAgLTE3
OSw3ICsxNzksNyBAQCBCbG9ja0Zvcm1hdHRpbmdTdGF0ZSYgTGF5b3V0U3RhdGU6OmVuc3VyZUJs
b2NrRm9ybWF0dGluZ1N0YXRlKGNvbnN0IENvbnRhaW5lciYgZgogICAgIHJldHVybiAqbV9ibG9j
a0Zvcm1hdHRpbmdTdGF0ZXMuZW5zdXJlKCZmb3JtYXR0aW5nQ29udGV4dFJvb3QsIGNyZWF0ZSku
aXRlcmF0b3ItPnZhbHVlOwogfQogCi1UYWJsZUZvcm1hdHRpbmdTdGF0ZSYgTGF5b3V0U3RhdGU6
OmVuc3VyZVRhYmxlRm9ybWF0dGluZ1N0YXRlKGNvbnN0IENvbnRhaW5lciYgZm9ybWF0dGluZ0Nv
bnRleHRSb290KQorVGFibGVGb3JtYXR0aW5nU3RhdGUmIExheW91dFN0YXRlOjplbnN1cmVUYWJs
ZUZvcm1hdHRpbmdTdGF0ZShjb25zdCBDb250YWluZXJCb3gmIGZvcm1hdHRpbmdDb250ZXh0Um9v
dCkKIHsKICAgICBBU1NFUlQoZm9ybWF0dGluZ0NvbnRleHRSb290LmVzdGFibGlzaGVzVGFibGVG
b3JtYXR0aW5nQ29udGV4dCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L0xheW91dFN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0U3RhdGUuaAppbmRl
eCA2NjRlNjIwNjYzZTAyNmViYmY1MTc5MjI5ZWNiNWRjNjUxNjI2MmI3Li42ZWU1NTQzN2NjNmJl
ZmUzMzI2Mzg4YjQ5ZjUyYjg4ZDNhNzhjMDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvTGF5b3V0U3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0U3Rh
dGUuaApAQCAtMjcsNyArMjcsNyBAQAogCiAjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NP
TlRFWFQpCiAKLSNpbmNsdWRlICJMYXlvdXRDb250YWluZXIuaCIKKyNpbmNsdWRlICJMYXlvdXRD
b250YWluZXJCb3guaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvYy5oPgpAQCAtNTAsMjEgKzUwLDIxIEBA
IGNsYXNzIFRhYmxlRm9ybWF0dGluZ1N0YXRlOwogY2xhc3MgTGF5b3V0U3RhdGUgOiBwdWJsaWMg
Q2FuTWFrZVdlYWtQdHI8TGF5b3V0U3RhdGU+IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVE
KExheW91dFN0YXRlKTsKIHB1YmxpYzoKLSAgICBMYXlvdXRTdGF0ZShjb25zdCBEb2N1bWVudCYs
IGNvbnN0IENvbnRhaW5lciYgcm9vdENvbnRhaW5lcik7CisgICAgTGF5b3V0U3RhdGUoY29uc3Qg
RG9jdW1lbnQmLCBjb25zdCBDb250YWluZXJCb3gmIHJvb3RDb250YWluZXIpOwogICAgIH5MYXlv
dXRTdGF0ZSgpOwogCi0gICAgRm9ybWF0dGluZ1N0YXRlJiBlbnN1cmVGb3JtYXR0aW5nU3RhdGUo
Y29uc3QgQ29udGFpbmVyJiBmb3JtYXR0aW5nQ29udGV4dFJvb3QpOwotICAgIElubGluZUZvcm1h
dHRpbmdTdGF0ZSYgZW5zdXJlSW5saW5lRm9ybWF0dGluZ1N0YXRlKGNvbnN0IENvbnRhaW5lciYg
Zm9ybWF0dGluZ0NvbnRleHRSb290KTsKLSAgICBCbG9ja0Zvcm1hdHRpbmdTdGF0ZSYgZW5zdXJl
QmxvY2tGb3JtYXR0aW5nU3RhdGUoY29uc3QgQ29udGFpbmVyJiBmb3JtYXR0aW5nQ29udGV4dFJv
b3QpOwotICAgIFRhYmxlRm9ybWF0dGluZ1N0YXRlJiBlbnN1cmVUYWJsZUZvcm1hdHRpbmdTdGF0
ZShjb25zdCBDb250YWluZXImIGZvcm1hdHRpbmdDb250ZXh0Um9vdCk7CisgICAgRm9ybWF0dGlu
Z1N0YXRlJiBlbnN1cmVGb3JtYXR0aW5nU3RhdGUoY29uc3QgQ29udGFpbmVyQm94JiBmb3JtYXR0
aW5nQ29udGV4dFJvb3QpOworICAgIElubGluZUZvcm1hdHRpbmdTdGF0ZSYgZW5zdXJlSW5saW5l
Rm9ybWF0dGluZ1N0YXRlKGNvbnN0IENvbnRhaW5lckJveCYgZm9ybWF0dGluZ0NvbnRleHRSb290
KTsKKyAgICBCbG9ja0Zvcm1hdHRpbmdTdGF0ZSYgZW5zdXJlQmxvY2tGb3JtYXR0aW5nU3RhdGUo
Y29uc3QgQ29udGFpbmVyQm94JiBmb3JtYXR0aW5nQ29udGV4dFJvb3QpOworICAgIFRhYmxlRm9y
bWF0dGluZ1N0YXRlJiBlbnN1cmVUYWJsZUZvcm1hdHRpbmdTdGF0ZShjb25zdCBDb250YWluZXJC
b3gmIGZvcm1hdHRpbmdDb250ZXh0Um9vdCk7CiAKLSAgICBGb3JtYXR0aW5nU3RhdGUmIGVzdGFi
bGlzaGVkRm9ybWF0dGluZ1N0YXRlKGNvbnN0IENvbnRhaW5lciYgZm9ybWF0dGluZ1Jvb3QpIGNv
bnN0OwotICAgIElubGluZUZvcm1hdHRpbmdTdGF0ZSYgZXN0YWJsaXNoZWRJbmxpbmVGb3JtYXR0
aW5nU3RhdGUoY29uc3QgQ29udGFpbmVyJiBmb3JtYXR0aW5nQ29udGV4dFJvb3QpIGNvbnN0Owot
ICAgIEJsb2NrRm9ybWF0dGluZ1N0YXRlJiBlc3RhYmxpc2hlZEJsb2NrRm9ybWF0dGluZ1N0YXRl
KGNvbnN0IENvbnRhaW5lciYgZm9ybWF0dGluZ0NvbnRleHRSb290KSBjb25zdDsKLSAgICBUYWJs
ZUZvcm1hdHRpbmdTdGF0ZSYgZXN0YWJsaXNoZWRUYWJsZUZvcm1hdHRpbmdTdGF0ZShjb25zdCBD
b250YWluZXImIGZvcm1hdHRpbmdDb250ZXh0Um9vdCkgY29uc3Q7CisgICAgRm9ybWF0dGluZ1N0
YXRlJiBlc3RhYmxpc2hlZEZvcm1hdHRpbmdTdGF0ZShjb25zdCBDb250YWluZXJCb3gmIGZvcm1h
dHRpbmdSb290KSBjb25zdDsKKyAgICBJbmxpbmVGb3JtYXR0aW5nU3RhdGUmIGVzdGFibGlzaGVk
SW5saW5lRm9ybWF0dGluZ1N0YXRlKGNvbnN0IENvbnRhaW5lckJveCYgZm9ybWF0dGluZ0NvbnRl
eHRSb290KSBjb25zdDsKKyAgICBCbG9ja0Zvcm1hdHRpbmdTdGF0ZSYgZXN0YWJsaXNoZWRCbG9j
a0Zvcm1hdHRpbmdTdGF0ZShjb25zdCBDb250YWluZXJCb3gmIGZvcm1hdHRpbmdDb250ZXh0Um9v
dCkgY29uc3Q7CisgICAgVGFibGVGb3JtYXR0aW5nU3RhdGUmIGVzdGFibGlzaGVkVGFibGVGb3Jt
YXR0aW5nU3RhdGUoY29uc3QgQ29udGFpbmVyQm94JiBmb3JtYXR0aW5nQ29udGV4dFJvb3QpIGNv
bnN0OwogCiAgICAgRm9ybWF0dGluZ1N0YXRlJiBmb3JtYXR0aW5nU3RhdGVGb3JCb3goY29uc3Qg
Qm94JikgY29uc3Q7Ci0gICAgYm9vbCBoYXNJbmxpbmVGb3JtYXR0aW5nU3RhdGUoY29uc3QgQ29u
dGFpbmVyJiBmb3JtYXR0aW5nUm9vdCkgY29uc3QgeyByZXR1cm4gbV9pbmxpbmVGb3JtYXR0aW5n
U3RhdGVzLmNvbnRhaW5zKCZmb3JtYXR0aW5nUm9vdCk7IH0KKyAgICBib29sIGhhc0lubGluZUZv
cm1hdHRpbmdTdGF0ZShjb25zdCBDb250YWluZXJCb3gmIGZvcm1hdHRpbmdSb290KSBjb25zdCB7
IHJldHVybiBtX2lubGluZUZvcm1hdHRpbmdTdGF0ZXMuY29udGFpbnMoJmZvcm1hdHRpbmdSb290
KTsgfQogCiAjaWZuZGVmIE5ERUJVRwogICAgIHZvaWQgcmVnaXN0ZXJGb3JtYXR0aW5nQ29udGV4
dChjb25zdCBGb3JtYXR0aW5nQ29udGV4dCYpOwpAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBpbkxpbWl0ZWRRdWlya3NNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9xdWlya3NNb2Rl
ID09IFF1aXJrc01vZGU6OkxpbWl0ZWQ7IH0KICAgICBib29sIGluTm9RdWlya3NNb2RlKCkgY29u
c3QgeyByZXR1cm4gbV9xdWlya3NNb2RlID09IFF1aXJrc01vZGU6Ok5vOyB9CiAKLSAgICBjb25z
dCBDb250YWluZXImIHJvb3QoKSBjb25zdCB7IHJldHVybiAqbV9yb290Q29udGFpbmVyOyB9Cisg
ICAgY29uc3QgQ29udGFpbmVyQm94JiByb290KCkgY29uc3QgeyByZXR1cm4gKm1fcm9vdENvbnRh
aW5lcjsgfQogCiAgICAgLy8gTEZDIGludGVncmF0aW9uIG9ubHkuIEZ1bGwgTEZDIGhhcyBwcm9w
ZXIgSUNCIGFjY2Vzcy4KICAgICB2b2lkIHNldFZpZXdwb3J0U2l6ZShjb25zdCBMYXlvdXRTaXpl
Jik7CkBAIC05NCw5ICs5NCw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRRdWlya3NNb2RlKFF1
aXJrc01vZGUgcXVpcmtzTW9kZSkgeyBtX3F1aXJrc01vZGUgPSBxdWlya3NNb2RlOyB9CiAgICAg
RGlzcGxheTo6Qm94JiBlbnN1cmVEaXNwbGF5Qm94Rm9yTGF5b3V0Qm94U2xvdyhjb25zdCBCb3gm
KTsKIAotICAgIEhhc2hNYXA8Y29uc3QgQ29udGFpbmVyKiwgc3RkOjp1bmlxdWVfcHRyPElubGlu
ZUZvcm1hdHRpbmdTdGF0ZT4+IG1faW5saW5lRm9ybWF0dGluZ1N0YXRlczsKLSAgICBIYXNoTWFw
PGNvbnN0IENvbnRhaW5lciosIHN0ZDo6dW5pcXVlX3B0cjxCbG9ja0Zvcm1hdHRpbmdTdGF0ZT4+
IG1fYmxvY2tGb3JtYXR0aW5nU3RhdGVzOwotICAgIEhhc2hNYXA8Y29uc3QgQ29udGFpbmVyKiwg
c3RkOjp1bmlxdWVfcHRyPFRhYmxlRm9ybWF0dGluZ1N0YXRlPj4gbV90YWJsZUZvcm1hdHRpbmdT
dGF0ZXM7CisgICAgSGFzaE1hcDxjb25zdCBDb250YWluZXJCb3gqLCBzdGQ6OnVuaXF1ZV9wdHI8
SW5saW5lRm9ybWF0dGluZ1N0YXRlPj4gbV9pbmxpbmVGb3JtYXR0aW5nU3RhdGVzOworICAgIEhh
c2hNYXA8Y29uc3QgQ29udGFpbmVyQm94Kiwgc3RkOjp1bmlxdWVfcHRyPEJsb2NrRm9ybWF0dGlu
Z1N0YXRlPj4gbV9ibG9ja0Zvcm1hdHRpbmdTdGF0ZXM7CisgICAgSGFzaE1hcDxjb25zdCBDb250
YWluZXJCb3gqLCBzdGQ6OnVuaXF1ZV9wdHI8VGFibGVGb3JtYXR0aW5nU3RhdGU+PiBtX3RhYmxl
Rm9ybWF0dGluZ1N0YXRlczsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbmxpbmVGb3JtYXR0aW5n
U3RhdGU+IG1fcm9vdElubGluZUZvcm1hdHRpbmdTdGF0ZUZvckludGVncmF0aW9uOwogCkBAIC0x
MDYsNyArMTA2LDcgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPGNvbnN0IEJveCosIHN0ZDo6dW5p
cXVlX3B0cjxEaXNwbGF5OjpCb3g+PiBtX2xheW91dFRvRGlzcGxheUJveDsKICAgICBRdWlya3NN
b2RlIG1fcXVpcmtzTW9kZSB7IFF1aXJrc01vZGU6Ok5vIH07CiAKLSAgICBXZWFrUHRyPGNvbnN0
IENvbnRhaW5lcj4gbV9yb290Q29udGFpbmVyOworICAgIFdlYWtQdHI8Y29uc3QgQ29udGFpbmVy
Qm94PiBtX3Jvb3RDb250YWluZXI7CiAKICAgICAvLyBMRkMgaW50ZWdyYXRpb24gb25seS4KICAg
ICBMYXlvdXRTaXplIG1fdmlld3BvcnRTaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L1ZlcmlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvVmVyaWZpY2F0
aW9uLmNwcAppbmRleCA1MzQxZTNjZjUzZDlhY2JmZTg0ODU4YjVkMzEwN2FhYjM1YTg3NzVmLi5h
YWFlOGE3ZDQ5MjcyNzI2N2M4OTM0ZDYxYzU4Y2JjM2NiMjg2N2IzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvVmVyaWZpY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvVmVyaWZpY2F0aW9uLmNwcApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgIklubGlu
ZUZvcm1hdHRpbmdTdGF0ZS5oIgogI2luY2x1ZGUgIklubGluZVRleHRCb3guaCIKICNpbmNsdWRl
ICJMYXlvdXRCb3guaCIKLSNpbmNsdWRlICJMYXlvdXRDb250YWluZXIuaCIKKyNpbmNsdWRlICJM
YXlvdXRDb250YWluZXJCb3guaCIKICNpbmNsdWRlICJMYXlvdXRDb250ZXh0LmgiCiAjaW5jbHVk
ZSAiTGF5b3V0VHJlZUJ1aWxkZXIuaCIKICNpbmNsdWRlICJSZW5kZXJCb3guaCIKQEAgLTY3LDcg
KzY3LDcgQEAgc3RhdGljIGJvb2wgYXJlRXNzZW50aWFsbHlFcXVhbChMYXlvdXRSZWN0IGEsIExh
eW91dFJlY3QgYikKICAgICAgICAgJiYgYXJlRXNzZW50aWFsbHlFcXVhbChhLmhlaWdodCgpLCBi
LmhlaWdodCgpKTsKIH0KIAotc3RhdGljIGJvb2wgb3V0cHV0TWlzbWF0Y2hpbmdTaW1wbGVMaW5l
SW5mb3JtYXRpb25JZk5lZWRlZChUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0IExheW91dFN0YXRl
JiBsYXlvdXRTdGF0ZSwgY29uc3QgUmVuZGVyQmxvY2tGbG93JiBibG9ja0Zsb3csIGNvbnN0IENv
bnRhaW5lciYgaW5saW5lRm9ybWF0dGluZ1Jvb3QpCitzdGF0aWMgYm9vbCBvdXRwdXRNaXNtYXRj
aGluZ1NpbXBsZUxpbmVJbmZvcm1hdGlvbklmTmVlZGVkKFRleHRTdHJlYW0mIHN0cmVhbSwgY29u
c3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGJsb2Nr
RmxvdywgY29uc3QgQ29udGFpbmVyQm94JiBpbmxpbmVGb3JtYXR0aW5nUm9vdCkKIHsKICAgICBh
dXRvKiBsaW5lTGF5b3V0RGF0YSA9IGJsb2NrRmxvdy5zaW1wbGVMaW5lTGF5b3V0KCk7CiAgICAg
aWYgKCFsaW5lTGF5b3V0RGF0YSkgewpAQCAtMTU5LDcgKzE1OSw3IEBAIHN0YXRpYyB2b2lkIGNv
bGxlY3RJbmxpbmVCb3hlcyhjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIHJvb3QsIFZlY3RvcjxXZWJD
b3JlOjpJbmxpCiAgICAgfQogfQogCi1zdGF0aWMgYm9vbCBvdXRwdXRNaXNtYXRjaGluZ0NvbXBs
ZXhMaW5lSW5mb3JtYXRpb25JZk5lZWRlZChUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0IExheW91
dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgUmVuZGVyQmxvY2tGbG93JiBibG9ja0Zsb3csIGNv
bnN0IENvbnRhaW5lciYgaW5saW5lRm9ybWF0dGluZ1Jvb3QpCitzdGF0aWMgYm9vbCBvdXRwdXRN
aXNtYXRjaGluZ0NvbXBsZXhMaW5lSW5mb3JtYXRpb25JZk5lZWRlZChUZXh0U3RyZWFtJiBzdHJl
YW0sIGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgUmVuZGVyQmxvY2tGbG93
JiBibG9ja0Zsb3csIGNvbnN0IENvbnRhaW5lckJveCYgaW5saW5lRm9ybWF0dGluZ1Jvb3QpCiB7
CiAgICAgYXV0byYgaW5saW5lRm9ybWF0dGluZ1N0YXRlID0gbGF5b3V0U3RhdGUuZXN0YWJsaXNo
ZWRGb3JtYXR0aW5nU3RhdGUoaW5saW5lRm9ybWF0dGluZ1Jvb3QpOwogCkBAIC0yOTAsMTUgKzI5
MCwxNSBAQCBzdGF0aWMgYm9vbCB2ZXJpZnlBbmRPdXRwdXRTdWJ0cmVlKFRleHRTdHJlYW0mIHN0
cmVhbSwgY29uc3QgTGF5b3V0U3RhdGUmIGNvbnRleAogewogICAgIC8vIFJlbmRlcmluZyBjb2Rl
IGRvZXMgbm90IGhhdmUgdGhlIGNvbmNlcHQgb2YgdGFibGUgd3JhcHBlciBib3guIFNraXAgaXQg
YnkgdmVyaWZ5aW5nIHRoZSBmaXJzdCBjaGlsZCh0YWJsZSBib3gpIGluc3RlYWQuIAogICAgIGlm
IChsYXlvdXRCb3guaXNUYWJsZVdyYXBwZXJCb3goKSkKLSAgICAgICAgcmV0dXJuIHZlcmlmeUFu
ZE91dHB1dFN1YnRyZWUoc3RyZWFtLCBjb250ZXh0LCByZW5kZXJlciwgKmRvd25jYXN0PENvbnRh
aW5lcj4obGF5b3V0Qm94KS5maXJzdENoaWxkKCkpOyAKKyAgICAgICAgcmV0dXJuIHZlcmlmeUFu
ZE91dHB1dFN1YnRyZWUoc3RyZWFtLCBjb250ZXh0LCByZW5kZXJlciwgKmRvd25jYXN0PENvbnRh
aW5lckJveD4obGF5b3V0Qm94KS5maXJzdENoaWxkKCkpOyAKIAogICAgIGF1dG8gbWlzbXRhY2hp
bmdHZW9tZXRyeSA9IG91dHB1dE1pc21hdGNoaW5nQmxvY2tCb3hJbmZvcm1hdGlvbklmTmVlZGVk
KHN0cmVhbSwgY29udGV4dCwgcmVuZGVyZXIsIGxheW91dEJveCk7CiAKLSAgICBpZiAoIWlzPENv
bnRhaW5lcj4obGF5b3V0Qm94KSkKKyAgICBpZiAoIWlzPENvbnRhaW5lckJveD4obGF5b3V0Qm94
KSkKICAgICAgICAgcmV0dXJuIG1pc210YWNoaW5nR2VvbWV0cnk7CiAKLSAgICBhdXRvJiBjb250
YWluZXIgPSBkb3duY2FzdDxDb250YWluZXI+KGxheW91dEJveCk7Ci0gICAgYXV0byogY2hpbGRM
YXlvdXRCb3ggPSBjb250YWluZXIuZmlyc3RDaGlsZCgpOworICAgIGF1dG8mIGNvbnRhaW5lckJv
eCA9IGRvd25jYXN0PENvbnRhaW5lckJveD4obGF5b3V0Qm94KTsKKyAgICBhdXRvKiBjaGlsZExh
eW91dEJveCA9IGNvbnRhaW5lckJveC5maXJzdENoaWxkKCk7CiAgICAgYXV0byogY2hpbGRSZW5k
ZXJlciA9IHJlbmRlcmVyLmZpcnN0Q2hpbGQoKTsKIAogICAgIHdoaWxlIChjaGlsZFJlbmRlcmVy
KSB7CkBAIC0zMjAsNyArMzIwLDcgQEAgc3RhdGljIGJvb2wgdmVyaWZ5QW5kT3V0cHV0U3VidHJl
ZShUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0IExheW91dFN0YXRlJiBjb250ZXgKICAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgICAgICAgICAgYXV0byYgYmxvY2tGbG93ID0gZG93
bmNhc3Q8UmVuZGVyQmxvY2tGbG93PigqY2hpbGRSZW5kZXJlcik7Ci0gICAgICAgICAgICBhdXRv
JiBmb3JtYXR0aW5nUm9vdCA9IGRvd25jYXN0PENvbnRhaW5lcj4oKmNoaWxkTGF5b3V0Qm94KTsK
KyAgICAgICAgICAgIGF1dG8mIGZvcm1hdHRpbmdSb290ID0gZG93bmNhc3Q8Q29udGFpbmVyQm94
PigqY2hpbGRMYXlvdXRCb3gpOwogICAgICAgICAgICAgbWlzbXRhY2hpbmdHZW9tZXRyeSB8PSBi
bG9ja0Zsb3cubGluZUxheW91dFBhdGgoKSA9PSBSZW5kZXJCbG9ja0Zsb3c6OlNpbXBsZUxpbmVz
UGF0aCA/IG91dHB1dE1pc21hdGNoaW5nU2ltcGxlTGluZUluZm9ybWF0aW9uSWZOZWVkZWQoc3Ry
ZWFtLCBjb250ZXh0LCBibG9ja0Zsb3csIGZvcm1hdHRpbmdSb290KSA6IG91dHB1dE1pc21hdGNo
aW5nQ29tcGxleExpbmVJbmZvcm1hdGlvbklmTmVlZGVkKHN0cmVhbSwgY29udGV4dCwgYmxvY2tG
bG93LCBmb3JtYXR0aW5nUm9vdCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBhdXRv
IG1pc21hdGNoaW5nU3VidHJlZUdlb21ldHJ5ID0gdmVyaWZ5QW5kT3V0cHV0U3VidHJlZShzdHJl
YW0sIGNvbnRleHQsIGRvd25jYXN0PFJlbmRlckJveD4oKmNoaWxkUmVuZGVyZXIpLCAqY2hpbGRM
YXlvdXRCb3gpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0
dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9i
bG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggOThlYzQ2MGZj
NWEzMTBhMDk4NmQ1M2E5MGMxMTBiZmY5NmE3MWI0YS4uNGM1NjQ0ZGVmMmFjOGQwNjc1ZGYzZTYy
M2VjMGMyM2U5ODRkMGM0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2Nr
Zm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC0z
NCw3ICszNCw3IEBACiAjaW5jbHVkZSAiSW52YWxpZGF0aW9uU3RhdGUuaCIKICNpbmNsdWRlICJM
YXlvdXRCb3guaCIKICNpbmNsdWRlICJMYXlvdXRDaGlsZEl0ZXJhdG9yLmgiCi0jaW5jbHVkZSAi
TGF5b3V0Q29udGFpbmVyLmgiCisjaW5jbHVkZSAiTGF5b3V0Q29udGFpbmVyQm94LmgiCiAjaW5j
bHVkZSAiTGF5b3V0Q29udGV4dC5oIgogI2luY2x1ZGUgIkxheW91dFN0YXRlLmgiCiAjaW5jbHVk
ZSAiTG9nZ2luZy5oIgpAQCAtNDYsNyArNDYsNyBAQCBuYW1lc3BhY2UgTGF5b3V0IHsKIAogV1RG
X01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEJsb2NrRm9ybWF0dGluZ0NvbnRleHQpOwogCi1CbG9j
a0Zvcm1hdHRpbmdDb250ZXh0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KGNvbnN0IENvbnRhaW5l
ciYgZm9ybWF0dGluZ0NvbnRleHRSb290LCBCbG9ja0Zvcm1hdHRpbmdTdGF0ZSYgZm9ybWF0dGlu
Z1N0YXRlKQorQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dChj
b25zdCBDb250YWluZXJCb3gmIGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgQmxvY2tGb3JtYXR0aW5n
U3RhdGUmIGZvcm1hdHRpbmdTdGF0ZSkKICAgICA6IEZvcm1hdHRpbmdDb250ZXh0KGZvcm1hdHRp
bmdDb250ZXh0Um9vdCwgZm9ybWF0dGluZ1N0YXRlKQogewogfQpAQCAtNjYsOSArNjYsOSBAQCB2
b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dEluRmxvd0NvbnRlbnQoSW52YWxpZGF0
aW9uU3RhdGUmIGludmFsaWRhdGlvbgogICAgIGVudW0gY2xhc3MgTGF5b3V0RGlyZWN0aW9uIHsg
Q2hpbGQsIFNpYmxpbmcgfTsKICAgICBhdXRvIGFwcGVuZE5leHRUb0xheW91dFF1ZXVlID0gWyZd
IChjb25zdCBhdXRvJiBsYXlvdXRCb3gsIGF1dG8gZGlyZWN0aW9uKSB7CiAgICAgICAgIGlmIChk
aXJlY3Rpb24gPT0gTGF5b3V0RGlyZWN0aW9uOjpDaGlsZCkgewotICAgICAgICAgICAgaWYgKCFp
czxDb250YWluZXI+KGxheW91dEJveCkpCisgICAgICAgICAgICBpZiAoIWlzPENvbnRhaW5lckJv
eD4obGF5b3V0Qm94KSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAg
ICBmb3IgKGF1dG8qIGNoaWxkID0gZG93bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRCb3gpLmZpcnN0
SW5GbG93T3JGbG9hdGluZ0NoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0SW5GbG93
T3JGbG9hdGluZ1NpYmxpbmcoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvKiBjaGlsZCA9IGRv
d25jYXN0PENvbnRhaW5lckJveD4obGF5b3V0Qm94KS5maXJzdEluRmxvd09yRmxvYXRpbmdDaGls
ZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dEluRmxvd09yRmxvYXRpbmdTaWJsaW5nKCkp
IHsKICAgICAgICAgICAgICAgICBpZiAoIWludmFsaWRhdGlvblN0YXRlLm5lZWRzTGF5b3V0KCpj
aGlsZCkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIGxh
eW91dFF1ZXVlLmFwcGVuZChjaGlsZCk7CkBAIC0xMjUsMTMgKzEyNSwxMyBAQCB2b2lkIEJsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dEluRmxvd0NvbnRlbnQoSW52YWxpZGF0aW9uU3RhdGUm
IGludmFsaWRhdGlvbgogICAgICAgICAgICAgY29tcHV0ZVN0YXRpY0hvcml6b250YWxQb3NpdGlv
bihsYXlvdXRCb3gsIGhvcml6b250YWxDb25zdHJhaW50cyk7CiAKICAgICAgICAgICAgIGlmIChs
YXlvdXRCb3guZXN0YWJsaXNoZXNGb3JtYXR0aW5nQ29udGV4dCgpKSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKGlzPENvbnRhaW5lcj4obGF5b3V0Qm94KSAmJiBkb3duY2FzdDxDb250YWluZXI+KGxh
eW91dEJveCkuaGFzSW5GbG93T3JGbG9hdGluZ0NoaWxkKCkpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoaXM8Q29udGFpbmVyQm94PihsYXlvdXRCb3gpICYmIGRvd25jYXN0PENvbnRhaW5lckJveD4o
bGF5b3V0Qm94KS5oYXNJbkZsb3dPckZsb2F0aW5nQ2hpbGQoKSkgewogICAgICAgICAgICAgICAg
ICAgICAvLyBMYXlvdXQgdGhlIGluZmxvdyBkZXNjZW5kYW50cyBvZiB0aGlzIGZvcm1hdHRpbmcg
Y29udGV4dCByb290LgogICAgICAgICAgICAgICAgICAgICBwcmVjb21wdXRlVmVydGljYWxQb3Np
dGlvbkZvckZvcm1hdHRpbmdSb290KGZsb2F0aW5nQ29udGV4dCwgbGF5b3V0Qm94LCBob3Jpem9u
dGFsQ29uc3RyYWludHMsIHZlcnRpY2FsQ29uc3RyYWludHMpOwogICAgICAgICAgICAgICAgICAg
ICBhdXRvJiByb290RGlzcGxheUJveCA9IGdlb21ldHJ5Rm9yQm94KGxheW91dEJveCk7CiAgICAg
ICAgICAgICAgICAgICAgIGF1dG8gaG9yaXpvbnRhbENvbnN0cmFpbnRzRm9yRm9ybWF0dGluZ0Nv
bnRleHQgPSBHZW9tZXRyeTo6aG9yaXpvbnRhbENvbnN0cmFpbnRzRm9ySW5GbG93KHJvb3REaXNw
bGF5Qm94KTsKICAgICAgICAgICAgICAgICAgICAgYXV0byB2ZXJ0aWNhbENvbnN0cmFpbnRzRm9y
Rm9ybWF0dGluZ0NvbnRleHQgPSBHZW9tZXRyeTo6dmVydGljYWxDb25zdHJhaW50c0ZvckluRmxv
dyhyb290RGlzcGxheUJveCk7Ci0gICAgICAgICAgICAgICAgICAgIExheW91dENvbnRleHQ6OmNy
ZWF0ZUZvcm1hdHRpbmdDb250ZXh0KGRvd25jYXN0PENvbnRhaW5lcj4obGF5b3V0Qm94KSwgbGF5
b3V0U3RhdGUoKSktPmxheW91dEluRmxvd0NvbnRlbnQoaW52YWxpZGF0aW9uU3RhdGUsIGhvcml6
b250YWxDb25zdHJhaW50c0ZvckZvcm1hdHRpbmdDb250ZXh0LCB2ZXJ0aWNhbENvbnN0cmFpbnRz
Rm9yRm9ybWF0dGluZ0NvbnRleHQpOworICAgICAgICAgICAgICAgICAgICBMYXlvdXRDb250ZXh0
OjpjcmVhdGVGb3JtYXR0aW5nQ29udGV4dChkb3duY2FzdDxDb250YWluZXJCb3g+KGxheW91dEJv
eCksIGxheW91dFN0YXRlKCkpLT5sYXlvdXRJbkZsb3dDb250ZW50KGludmFsaWRhdGlvblN0YXRl
LCBob3Jpem9udGFsQ29uc3RyYWludHNGb3JGb3JtYXR0aW5nQ29udGV4dCwgdmVydGljYWxDb25z
dHJhaW50c0ZvckZvcm1hdHRpbmdDb250ZXh0KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0xNTAsMTEgKzE1MCwxMSBAQCB2b2lk
IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dEluRmxvd0NvbnRlbnQoSW52YWxpZGF0aW9u
U3RhdGUmIGludmFsaWRhdGlvbgogCiAgICAgICAgICAgICBpZiAobGF5b3V0Qm94LmVzdGFibGlz
aGVzRm9ybWF0dGluZ0NvbnRleHQoKSkgewogICAgICAgICAgICAgICAgIC8vIE5vdyB0aGF0IHdl
IGNvbXB1dGVkIHRoZSByb290J3MgaGVpZ2h0LCB3ZSBjYW4gbGF5b3V0IHRoZSBvdXQtb2YtZmxv
dyBkZXNjZW5kYW50cy4KLSAgICAgICAgICAgICAgICBpZiAoaXM8Q29udGFpbmVyPihsYXlvdXRC
b3gpICYmIGRvd25jYXN0PENvbnRhaW5lcj4obGF5b3V0Qm94KS5oYXNDaGlsZCgpKSB7CisgICAg
ICAgICAgICAgICAgaWYgKGlzPENvbnRhaW5lckJveD4obGF5b3V0Qm94KSAmJiBkb3duY2FzdDxD
b250YWluZXJCb3g+KGxheW91dEJveCkuaGFzQ2hpbGQoKSkgewogICAgICAgICAgICAgICAgICAg
ICBhdXRvJiByb290RGlzcGxheUJveCA9IGdlb21ldHJ5Rm9yQm94KGxheW91dEJveCk7CiAgICAg
ICAgICAgICAgICAgICAgIGF1dG8gaG9yaXpvbnRhbENvbnN0cmFpbnRzRm9yT3V0T2ZGbG93ID0g
IEdlb21ldHJ5Ojpob3Jpem9udGFsQ29uc3RyYWludHNGb3JPdXRPZkZsb3cocm9vdERpc3BsYXlC
b3gpOwogICAgICAgICAgICAgICAgICAgICBhdXRvIHZlcnRpY2FsQ29uc3RyYWludHNGb3JPdXRP
ZkZsb3cgPSBHZW9tZXRyeTo6dmVydGljYWxDb25zdHJhaW50c0Zvck91dE9mRmxvdyhyb290RGlz
cGxheUJveCk7Ci0gICAgICAgICAgICAgICAgICAgIExheW91dENvbnRleHQ6OmNyZWF0ZUZvcm1h
dHRpbmdDb250ZXh0KGRvd25jYXN0PENvbnRhaW5lcj4obGF5b3V0Qm94KSwgbGF5b3V0U3RhdGUo
KSktPmxheW91dE91dE9mRmxvd0NvbnRlbnQoaW52YWxpZGF0aW9uU3RhdGUsIGhvcml6b250YWxD
b25zdHJhaW50c0Zvck91dE9mRmxvdywgdmVydGljYWxDb25zdHJhaW50c0Zvck91dE9mRmxvdyk7
CisgICAgICAgICAgICAgICAgICAgIExheW91dENvbnRleHQ6OmNyZWF0ZUZvcm1hdHRpbmdDb250
ZXh0KGRvd25jYXN0PENvbnRhaW5lckJveD4obGF5b3V0Qm94KSwgbGF5b3V0U3RhdGUoKSktPmxh
eW91dE91dE9mRmxvd0NvbnRlbnQoaW52YWxpZGF0aW9uU3RhdGUsIGhvcml6b250YWxDb25zdHJh
aW50c0Zvck91dE9mRmxvdywgdmVydGljYWxDb25zdHJhaW50c0Zvck91dE9mRmxvdyk7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8gUmVzb2x2ZSBmaW5h
bCBwb3NpdGlvbnMuCkBAIC0yMTIsMTEgKzIxMiwxMSBAQCBPcHRpb25hbDxMYXlvdXRVbml0PiBC
bG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojp1c2VkQXZhaWxhYmxlV2lkdGhGb3JGbG9hdEF2b2lkZXIo
YwogCiB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OnBsYWNlSW5GbG93UG9zaXRpb25lZENo
aWxkcmVuKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBDb25zdHJhaW50c1BhaXI8SG9yaXpv
bnRhbENvbnN0cmFpbnRzPiYgaG9yaXpvbnRhbENvbnN0cmFpbnRzKQogewotICAgIGlmICghaXM8
Q29udGFpbmVyPihsYXlvdXRCb3gpKQorICAgIGlmICghaXM8Q29udGFpbmVyQm94PihsYXlvdXRC
b3gpKQogICAgICAgICByZXR1cm47CiAgICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250
ZXh0TGF5b3V0LCBzdHJlYW0gPDwgIlN0YXJ0OiBtb3ZlIGluLWZsb3cgcG9zaXRpb25lZCBjaGls
ZHJlbiAtPiBwYXJlbnQ6ICIgPDwgJmxheW91dEJveCk7Ci0gICAgYXV0byYgY29udGFpbmVyID0g
ZG93bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRCb3gpOwotICAgIGZvciAoYXV0byYgY2hpbGRCb3gg
OiBjaGlsZHJlbk9mVHlwZTxCb3g+KGNvbnRhaW5lcikpIHsKKyAgICBhdXRvJiBjb250YWluZXJC
b3ggPSBkb3duY2FzdDxDb250YWluZXJCb3g+KGxheW91dEJveCk7CisgICAgZm9yIChhdXRvJiBj
aGlsZEJveCA6IGNoaWxkcmVuT2ZUeXBlPEJveD4oY29udGFpbmVyQm94KSkgewogICAgICAgICBp
ZiAoIWNoaWxkQm94LmlzSW5GbG93UG9zaXRpb25lZCgpKQogICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgIGF1dG8gcG9zaXRpb25PZmZzZXQgPSBnZW9tZXRyeSgpLmluRmxvd1Bvc2l0aW9u
ZWRQb3NpdGlvbk9mZnNldChjaGlsZEJveCwgaG9yaXpvbnRhbENvbnN0cmFpbnRzLmNvbnRhaW5p
bmdCbG9jayk7CkBAIC00NTUsMTEgKzQ1NSwxMSBAQCBGb3JtYXR0aW5nQ29udGV4dDo6SW50cmlu
c2ljV2lkdGhDb25zdHJhaW50cyBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlZEludAog
ICAgIHdoaWxlICghcXVldWUuaXNFbXB0eSgpKSB7CiAgICAgICAgIHdoaWxlICh0cnVlKSB7CiAg
ICAgICAgICAgICBhdXRvJiBsYXlvdXRCb3ggPSAqcXVldWUubGFzdCgpOwotICAgICAgICAgICAg
YXV0byBoYXNJbkZsb3dPckZsb2F0aW5nQ2hpbGQgPSBpczxDb250YWluZXI+KGxheW91dEJveCkg
JiYgZG93bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRCb3gpLmhhc0luRmxvd09yRmxvYXRpbmdDaGls
ZCgpOworICAgICAgICAgICAgYXV0byBoYXNJbkZsb3dPckZsb2F0aW5nQ2hpbGQgPSBpczxDb250
YWluZXJCb3g+KGxheW91dEJveCkgJiYgZG93bmNhc3Q8Q29udGFpbmVyQm94PihsYXlvdXRCb3gp
Lmhhc0luRmxvd09yRmxvYXRpbmdDaGlsZCgpOwogICAgICAgICAgICAgYXV0byBza2lwRGVzY2Vu
ZGFudHMgPSBmb3JtYXR0aW5nU3RhdGUuaW50cmluc2ljV2lkdGhDb25zdHJhaW50c0ZvckJveChs
YXlvdXRCb3gpIHx8ICFoYXNJbkZsb3dPckZsb2F0aW5nQ2hpbGQgfHwgbGF5b3V0Qm94LmVzdGFi
bGlzaGVzRm9ybWF0dGluZ0NvbnRleHQoKSB8fCBsYXlvdXRCb3guc3R5bGUoKS53aWR0aCgpLmlz
Rml4ZWQoKTsKICAgICAgICAgICAgIGlmIChza2lwRGVzY2VuZGFudHMpCiAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICBxdWV1ZS5hcHBlbmQoZG93bmNhc3Q8Q29udGFpbmVyPihs
YXlvdXRCb3gpLmZpcnN0SW5GbG93T3JGbG9hdGluZ0NoaWxkKCkpOworICAgICAgICAgICAgcXVl
dWUuYXBwZW5kKGRvd25jYXN0PENvbnRhaW5lckJveD4obGF5b3V0Qm94KS5maXJzdEluRmxvd09y
RmxvYXRpbmdDaGlsZCgpKTsKICAgICAgICAgfQogICAgICAgICAvLyBDb21wdXRlIG1pbi9tYXgg
aW50cmluc2ljIHdpZHRoIGJvdHRvbSB1cCBpZiBuZWVkZWQuCiAgICAgICAgIHdoaWxlICghcXVl
dWUuaXNFbXB0eSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tm
b3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oCmluZGV4IGFkZWFiNmU2
N2YxODg4ZTcwOTc3YmUwMTk1OTkzOTRkM2UxODI4YzYuLmYxNjcxMDQyNTE3YmY2YTFhZTIyMTUw
YjdmNDIxM2Q2NzNmYWI5MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9j
a2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oCkBAIC00Niw3
ICs0Niw3IEBAIGNsYXNzIEZsb2F0aW5nQ29udGV4dDsKIGNsYXNzIEJsb2NrRm9ybWF0dGluZ0Nv
bnRleHQgZmluYWwgOiBwdWJsaWMgRm9ybWF0dGluZ0NvbnRleHQgewogICAgIFdURl9NQUtFX0lT
T19BTExPQ0FURUQoQmxvY2tGb3JtYXR0aW5nQ29udGV4dCk7CiBwdWJsaWM6Ci0gICAgQmxvY2tG
b3JtYXR0aW5nQ29udGV4dChjb25zdCBDb250YWluZXImIGZvcm1hdHRpbmdDb250ZXh0Um9vdCwg
QmxvY2tGb3JtYXR0aW5nU3RhdGUmKTsKKyAgICBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KGNvbnN0
IENvbnRhaW5lckJveCYgZm9ybWF0dGluZ0NvbnRleHRSb290LCBCbG9ja0Zvcm1hdHRpbmdTdGF0
ZSYpOwogCiAgICAgdm9pZCBsYXlvdXRJbkZsb3dDb250ZW50KEludmFsaWRhdGlvblN0YXRlJiwg
Y29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiwgY29uc3QgVmVydGljYWxDb25zdHJhaW50cyYp
IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3Jt
YXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5j
cHAKaW5kZXggOTliMzg1Njk3NmFjYzNhMjA2NzJlYWY1YjRmNDlkYWRiZjgwM2MyNi4uNDM4MTdh
NGVjYWUyYTE3YTA3YmZlMmFkNGZhYmNlNTU2NzY5YmI5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0
cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tG
b3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcApAQCAtNzAsMTEgKzcwLDExIEBAIENvbnRlbnRI
ZWlnaHRBbmRNYXJnaW4gQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd05v
blJlcGxhY2VkSGVpZ2h0CiAgICAgICAgIGlmIChoZWlnaHQpCiAgICAgICAgICAgICByZXR1cm4g
eyAqaGVpZ2h0LCBub25Db2xsYXBzZWRNYXJnaW4gfTsKIAotICAgICAgICBpZiAoIWlzPENvbnRh
aW5lcj4obGF5b3V0Qm94KSB8fCAhZG93bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRCb3gpLmhhc0lu
Rmxvd0NoaWxkKCkpCisgICAgICAgIGlmICghaXM8Q29udGFpbmVyQm94PihsYXlvdXRCb3gpIHx8
ICFkb3duY2FzdDxDb250YWluZXJCb3g+KGxheW91dEJveCkuaGFzSW5GbG93Q2hpbGQoKSkKICAg
ICAgICAgICAgIHJldHVybiB7IDAsIG5vbkNvbGxhcHNlZE1hcmdpbiB9OwogCiAgICAgICAgIC8v
IDEuIHRoZSBib3R0b20gZWRnZSBvZiB0aGUgbGFzdCBsaW5lIGJveCwgaWYgdGhlIGJveCBlc3Rh
Ymxpc2hlcyBhIGlubGluZSBmb3JtYXR0aW5nIGNvbnRleHQgd2l0aCBvbmUgb3IgbW9yZSBsaW5l
cwotICAgICAgICBhdXRvJiBsYXlvdXRDb250YWluZXIgPSBkb3duY2FzdDxDb250YWluZXI+KGxh
eW91dEJveCk7CisgICAgICAgIGF1dG8mIGxheW91dENvbnRhaW5lciA9IGRvd25jYXN0PENvbnRh
aW5lckJveD4obGF5b3V0Qm94KTsKICAgICAgICAgaWYgKGxheW91dENvbnRhaW5lci5lc3RhYmxp
c2hlc0lubGluZUZvcm1hdHRpbmdDb250ZXh0KCkpIHsKICAgICAgICAgICAgIGF1dG8mIGxpbmVC
b3hlcyA9IGxheW91dFN0YXRlKCkuZXN0YWJsaXNoZWRJbmxpbmVGb3JtYXR0aW5nU3RhdGUobGF5
b3V0Q29udGFpbmVyKS5kaXNwbGF5SW5saW5lQ29udGVudCgpLT5saW5lQm94ZXM7CiAgICAgICAg
ICAgICAvLyBFdmVuIGVtcHR5IGNvbnRhaW5lcnMgZ2VuZXJhdGUgb25lIGxpbmUuIApAQCAtMzIx
LDE1ICszMjEsMTUgQEAgRm9ybWF0dGluZ0NvbnRleHQ6OkludHJpbnNpY1dpZHRoQ29uc3RyYWlu
dHMgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmkKICAgICAgICAgICAgIHJldHVy
biB7IH07CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIWlzPENvbnRhaW5lcj4obGF5b3V0Qm94
KSB8fCAhZG93bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRCb3gpLmhhc0luRmxvd09yRmxvYXRpbmdD
aGlsZCgpKQorICAgICAgICBpZiAoIWlzPENvbnRhaW5lckJveD4obGF5b3V0Qm94KSB8fCAhZG93
bmNhc3Q8Q29udGFpbmVyQm94PihsYXlvdXRCb3gpLmhhc0luRmxvd09yRmxvYXRpbmdDaGlsZCgp
KQogICAgICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgICAgICBpZiAobGF5b3V0Qm94LmVzdGFi
bGlzaGVzRm9ybWF0dGluZ0NvbnRleHQoKSkKLSAgICAgICAgICAgIHJldHVybiBMYXlvdXRDb250
ZXh0OjpjcmVhdGVGb3JtYXR0aW5nQ29udGV4dChkb3duY2FzdDxDb250YWluZXI+KGxheW91dEJv
eCksIGxheW91dFN0YXRlKCkpLT5jb21wdXRlZEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMoKTsK
KyAgICAgICAgICAgIHJldHVybiBMYXlvdXRDb250ZXh0OjpjcmVhdGVGb3JtYXR0aW5nQ29udGV4
dChkb3duY2FzdDxDb250YWluZXJCb3g+KGxheW91dEJveCksIGxheW91dFN0YXRlKCkpLT5jb21w
dXRlZEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMoKTsKIAogICAgICAgICBhdXRvIGludHJpbnNp
Y1dpZHRoQ29uc3RyYWludHMgPSBJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzIHsgfTsKICAgICAg
ICAgYXV0byYgZm9ybWF0dGluZ1N0YXRlID0gbGF5b3V0U3RhdGUoKS5mb3JtYXR0aW5nU3RhdGVG
b3JCb3gobGF5b3V0Qm94KTsKLSAgICAgICAgZm9yIChhdXRvJiBjaGlsZCA6IGNoaWxkcmVuT2ZU
eXBlPEJveD4oZG93bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRCb3gpKSkgeworICAgICAgICBmb3Ig
KGF1dG8mIGNoaWxkIDogY2hpbGRyZW5PZlR5cGU8Qm94Pihkb3duY2FzdDxDb250YWluZXJCb3g+
KGxheW91dEJveCkpKSB7CiAgICAgICAgICAgICBpZiAoY2hpbGQuaXNPdXRPZkZsb3dQb3NpdGlv
bmVkKCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBhdXRvIGNoaWxk
SW50cmluc2ljV2lkdGhDb25zdHJhaW50cyA9IGZvcm1hdHRpbmdTdGF0ZS5pbnRyaW5zaWNXaWR0
aENvbnN0cmFpbnRzRm9yQm94KGNoaWxkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRl
eHRRdWlya3MuY3BwCmluZGV4IGNiM2NmM2NjZWIzODM3OGQ1MGNlOWRmZDAwMDQyYTY4YzgwNjVi
ZjIuLmQwM2JhMTU5ODViNWYxOWZmNzUzZTFiMjAyOGY1NGIwNDg4YjJiYTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dFF1aXJrcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGlu
Zy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNwcApAQCAtMzEsMTMgKzMxLDEzIEBACiAj
aW5jbHVkZSAiQmxvY2tGb3JtYXR0aW5nU3RhdGUuaCIKICNpbmNsdWRlICJEaXNwbGF5Qm94Lmgi
CiAjaW5jbHVkZSAiTGF5b3V0Qm94LmgiCi0jaW5jbHVkZSAiTGF5b3V0Q29udGFpbmVyLmgiCisj
aW5jbHVkZSAiTGF5b3V0Q29udGFpbmVyQm94LmgiCiAjaW5jbHVkZSAiTGF5b3V0U3RhdGUuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIExheW91dCB7CiAKLXN0YXRpYyBjb25z
dCBDb250YWluZXImIGluaXRpYWxDb250YWluaW5nQmxvY2soY29uc3QgQm94JiBsYXlvdXRCb3gp
CitzdGF0aWMgY29uc3QgQ29udGFpbmVyQm94JiBpbml0aWFsQ29udGFpbmluZ0Jsb2NrKGNvbnN0
IEJveCYgbGF5b3V0Qm94KQogewogICAgIGF1dG8qIGNvbnRhaW5pbmdCbG9jayA9IGxheW91dEJv
eC5jb250YWluaW5nQmxvY2soKTsKICAgICB3aGlsZSAoY29udGFpbmluZ0Jsb2NrLT5jb250YWlu
aW5nQmxvY2soKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1h
dHRpbmcvQmxvY2tNYXJnaW5Db2xsYXBzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxv
Y2tmb3JtYXR0aW5nL0Jsb2NrTWFyZ2luQ29sbGFwc2UuY3BwCmluZGV4IDdjZjgyZGM2N2ZjOGE4
YTgyYWMyNjg3ZGY1NTI5YTA4Y2Q3OWE5ZTYuLjZlM2I2ZmUxODgzZWZhMjVkMTI5ZDUwZjdlMjgx
YTFiZjViOGQ4MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1h
dHRpbmcvQmxvY2tNYXJnaW5Db2xsYXBzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Jsb2NrZm9ybWF0dGluZy9CbG9ja01hcmdpbkNvbGxhcHNlLmNwcApAQCAtMzIsNyArMzIsNyBA
QAogI2luY2x1ZGUgIkZsb2F0aW5nU3RhdGUuaCIKICNpbmNsdWRlICJJbmxpbmVGb3JtYXR0aW5n
U3RhdGUuaCIKICNpbmNsdWRlICJMYXlvdXRCb3guaCIKLSNpbmNsdWRlICJMYXlvdXRDb250YWlu
ZXIuaCIKKyNpbmNsdWRlICJMYXlvdXRDb250YWluZXJCb3guaCIKICNpbmNsdWRlICJMYXlvdXRV
bml0LmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKIApAQCAtMTk1LDEwICsxOTUsMTAgQEAg
Ym9vbCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpNYXJnaW5Db2xsYXBzZTo6bWFyZ2luQmVmb3Jl
Q29sbGFwc2VzV2l0aEZpcnN0SW5GbG8KICAgICBpZiAoaGFzUGFkZGluZ0JlZm9yZShsYXlvdXRC
b3gpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoIWlzPENvbnRhaW5lcj4obGF5
b3V0Qm94KSB8fCAhZG93bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRCb3gpLmhhc0luRmxvd0NoaWxk
KCkpCisgICAgaWYgKCFpczxDb250YWluZXJCb3g+KGxheW91dEJveCkgfHwgIWRvd25jYXN0PENv
bnRhaW5lckJveD4obGF5b3V0Qm94KS5oYXNJbkZsb3dDaGlsZCgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICBhdXRvJiBmaXJzdEluRmxvd0NoaWxkID0gKmRvd25jYXN0PENvbnRhaW5l
cj4obGF5b3V0Qm94KS5maXJzdEluRmxvd0NoaWxkKCk7CisgICAgYXV0byYgZmlyc3RJbkZsb3dD
aGlsZCA9ICpkb3duY2FzdDxDb250YWluZXJCb3g+KGxheW91dEJveCkuZmlyc3RJbkZsb3dDaGls
ZCgpOwogICAgIGlmICghZmlyc3RJbkZsb3dDaGlsZC5pc0Jsb2NrTGV2ZWxCb3goKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCkBAIC0zMDQsMTAgKzMwNCwxMCBAQCBib29sIEJsb2NrRm9ybWF0
dGluZ0NvbnRleHQ6Ok1hcmdpbkNvbGxhcHNlOjptYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhMYXN0
SW5GbG93QwogICAgIGlmIChlc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQobGF5b3V0
Qm94KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKCFpczxDb250YWluZXI+KGxh
eW91dEJveCkgfHwgIWRvd25jYXN0PENvbnRhaW5lcj4obGF5b3V0Qm94KS5oYXNJbkZsb3dDaGls
ZCgpKQorICAgIGlmICghaXM8Q29udGFpbmVyQm94PihsYXlvdXRCb3gpIHx8ICFkb3duY2FzdDxD
b250YWluZXJCb3g+KGxheW91dEJveCkuaGFzSW5GbG93Q2hpbGQoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgYXV0byYgbGFzdEluRmxvd0NoaWxkID0gKmRvd25jYXN0PENvbnRhaW5l
cj4obGF5b3V0Qm94KS5sYXN0SW5GbG93Q2hpbGQoKTsKKyAgICBhdXRvJiBsYXN0SW5GbG93Q2hp
bGQgPSAqZG93bmNhc3Q8Q29udGFpbmVyQm94PihsYXlvdXRCb3gpLmxhc3RJbkZsb3dDaGlsZCgp
OwogICAgIGlmICghbGFzdEluRmxvd0NoaWxkLmlzQmxvY2tMZXZlbEJveCgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKQEAgLTM4MCwxMCArMzgwLDEwIEBAIGJvb2wgQmxvY2tGb3JtYXR0aW5n
Q29udGV4dDo6TWFyZ2luQ29sbGFwc2U6Om1hcmdpbnNDb2xsYXBzZVRocm91Z2goY29uc3QgQm94
JiBsCiAgICAgaWYgKGxheW91dEJveC5pc1JlcGxhY2VkQm94KCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIGlmICghaXM8Q29udGFpbmVyPihsYXlvdXRCb3gpKQorICAgIGlmICghaXM8
Q29udGFpbmVyQm94PihsYXlvdXRCb3gpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlm
ICghZG93bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRCb3gpLmhhc0luRmxvd0NoaWxkKCkpCisgICAg
aWYgKCFkb3duY2FzdDxDb250YWluZXJCb3g+KGxheW91dEJveCkuaGFzSW5GbG93Q2hpbGQoKSkK
ICAgICAgICAgcmV0dXJuICFlc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQobGF5b3V0
Qm94KTsKIAogICAgIGlmIChsYXlvdXRCb3guZXN0YWJsaXNoZXNGb3JtYXR0aW5nQ29udGV4dCgp
KSB7CkBAIC0zOTEsMTIgKzM5MSwxMiBAQCBib29sIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1h
cmdpbkNvbGxhcHNlOjptYXJnaW5zQ29sbGFwc2VUaHJvdWdoKGNvbnN0IEJveCYgbAogICAgICAg
ICAgICAgYXV0byYgbGF5b3V0U3RhdGUgPSB0aGlzLT5sYXlvdXRTdGF0ZSgpOwogICAgICAgICAg
ICAgLy8gSWYgd2UgZ2V0IGhlcmUgdGhyb3VnaCBtYXJnaW4gZXN0aW1hdGlvbiwgd2UgZG9uJ3Qg
bmVjZXNzYXJpbHkgaGF2ZSBhbiBhY3R1YWwgc3RhdGUgZm9yIHRoaXMgbGF5b3V0IGJveCBzaW5j
ZQogICAgICAgICAgICAgLy8gd2UgaGF2ZW4ndCBzdGFydGVkIGxheWluZyBpdCBvdXQgeWV0Lgot
ICAgICAgICAgICAgYXV0byYgbGF5b3V0Q29udGFpbmVyID0gZG93bmNhc3Q8Q29udGFpbmVyPihs
YXlvdXRCb3gpOwotICAgICAgICAgICAgaWYgKCFsYXlvdXRTdGF0ZS5oYXNJbmxpbmVGb3JtYXR0
aW5nU3RhdGUobGF5b3V0Q29udGFpbmVyKSkKKyAgICAgICAgICAgIGF1dG8mIGNvbnRhaW5lckJv
eCA9IGRvd25jYXN0PENvbnRhaW5lckJveD4obGF5b3V0Qm94KTsKKyAgICAgICAgICAgIGlmICgh
bGF5b3V0U3RhdGUuaGFzSW5saW5lRm9ybWF0dGluZ1N0YXRlKGNvbnRhaW5lckJveCkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgICAgICBhdXRvIGlzQ29uc2lkZXJl
ZEVtcHR5ID0gWyZdIHsKLSAgICAgICAgICAgICAgICBhdXRvJiBmb3JtYXR0aW5nU3RhdGUgPSBs
YXlvdXRTdGF0ZS5lc3RhYmxpc2hlZElubGluZUZvcm1hdHRpbmdTdGF0ZShsYXlvdXRDb250YWlu
ZXIpOworICAgICAgICAgICAgICAgIGF1dG8mIGZvcm1hdHRpbmdTdGF0ZSA9IGxheW91dFN0YXRl
LmVzdGFibGlzaGVkSW5saW5lRm9ybWF0dGluZ1N0YXRlKGNvbnRhaW5lckJveCk7CiAgICAgICAg
ICAgICAgICAgaWYgKGF1dG8qIGlubGluZUNvbnRlbnQgPSBmb3JtYXR0aW5nU3RhdGUuZGlzcGxh
eUlubGluZUNvbnRlbnQoKSkgewogICAgICAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIGxpbmVC
b3ggOiBpbmxpbmVDb250ZW50LT5saW5lQm94ZXMpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
IGlmICghbGluZUJveC5pc0NvbnNpZGVyZWRFbXB0eSgpKQpAQCAtNDA2LDcgKzQwNiw3IEBAIGJv
b2wgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6TWFyZ2luQ29sbGFwc2U6Om1hcmdpbnNDb2xsYXBz
ZVRocm91Z2goY29uc3QgQm94JiBsCiAgICAgICAgICAgICAgICAgLy8gQW55IGZsb2F0IGJveCBp
biB0aGlzIGZvcm1hdHRpbmcgY29udGV4dCBwcmV2ZW50cyBjb2xsYXBzaW5nIHRocm91Z2guCiAg
ICAgICAgICAgICAgICAgYXV0byYgZmxvYXRzID0gZm9ybWF0dGluZ1N0YXRlLmZsb2F0aW5nU3Rh
dGUoKS5mbG9hdHMoKTsKICAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIGZsb2F0SXRlbSA6IGZs
b2F0cykgewotICAgICAgICAgICAgICAgICAgICBpZiAoZmxvYXRJdGVtLmlzRGVzY2VuZGFudE9m
Rm9ybWF0dGluZ1Jvb3QobGF5b3V0Q29udGFpbmVyKSkKKyAgICAgICAgICAgICAgICAgICAgaWYg
KGZsb2F0SXRlbS5pc0Rlc2NlbmRhbnRPZkZvcm1hdHRpbmdSb290KGNvbnRhaW5lckJveCkpCiAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNDE4LDcgKzQxOCw3IEBAIGJvb2wgQmxv
Y2tGb3JtYXR0aW5nQ29udGV4dDo6TWFyZ2luQ29sbGFwc2U6Om1hcmdpbnNDb2xsYXBzZVRocm91
Z2goY29uc3QgQm94JiBsCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBmb3Ig
KGF1dG8qIGluZmxvd0NoaWxkID0gZG93bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRCb3gpLmZpcnN0
SW5GbG93T3JGbG9hdGluZ0NoaWxkKCk7IGluZmxvd0NoaWxkOyBpbmZsb3dDaGlsZCA9IGluZmxv
d0NoaWxkLT5uZXh0SW5GbG93T3JGbG9hdGluZ1NpYmxpbmcoKSkgeworICAgIGZvciAoYXV0byog
aW5mbG93Q2hpbGQgPSBkb3duY2FzdDxDb250YWluZXJCb3g+KGxheW91dEJveCkuZmlyc3RJbkZs
b3dPckZsb2F0aW5nQ2hpbGQoKTsgaW5mbG93Q2hpbGQ7IGluZmxvd0NoaWxkID0gaW5mbG93Q2hp
bGQtPm5leHRJbkZsb3dPckZsb2F0aW5nU2libGluZygpKSB7CiAgICAgICAgIGlmIChlc3RhYmxp
c2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQoKmluZmxvd0NoaWxkKSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgaWYgKCFtYXJnaW5zQ29sbGFwc2VUaHJvdWdoKCppbmZsb3dD
aGlsZCkpCkBAIC01MjcsNyArNTI3LDcgQEAgUG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRpY2FsTWFy
Z2luOjpWYWx1ZXMgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6TWFyZ2luQ29sbGFwc2UKICAgICBh
dXRvIGZpcnN0Q2hpbGRDb2xsYXBzZWRNYXJnaW5CZWZvcmUgPSBbJl0oKSAtPiBQb3NpdGl2ZUFu
ZE5lZ2F0aXZlVmVydGljYWxNYXJnaW46OlZhbHVlcyB7CiAgICAgICAgIGlmICghbWFyZ2luQmVm
b3JlQ29sbGFwc2VzV2l0aEZpcnN0SW5GbG93Q2hpbGRNYXJnaW5CZWZvcmUobGF5b3V0Qm94KSkK
ICAgICAgICAgICAgIHJldHVybiB7IH07Ci0gICAgICAgIHJldHVybiBwb3NpdGl2ZU5lZ2F0aXZl
VmFsdWVzKCpkb3duY2FzdDxDb250YWluZXI+KGxheW91dEJveCkuZmlyc3RJbkZsb3dDaGlsZCgp
LCBNYXJnaW5UeXBlOjpCZWZvcmUpOworICAgICAgICByZXR1cm4gcG9zaXRpdmVOZWdhdGl2ZVZh
bHVlcygqZG93bmNhc3Q8Q29udGFpbmVyQm94PihsYXlvdXRCb3gpLmZpcnN0SW5GbG93Q2hpbGQo
KSwgTWFyZ2luVHlwZTo6QmVmb3JlKTsKICAgICB9OwogCiAgICAgYXV0byBwcmV2aW91U2libGlu
Z0NvbGxhcHNlZE1hcmdpbkFmdGVyID0gWyZdKCkgLT4gUG9zaXRpdmVBbmROZWdhdGl2ZVZlcnRp
Y2FsTWFyZ2luOjpWYWx1ZXMgewpAQCAtNTU3LDcgKzU1Nyw3IEBAIFBvc2l0aXZlQW5kTmVnYXRp
dmVWZXJ0aWNhbE1hcmdpbjo6VmFsdWVzIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Ok1hcmdpbkNv
bGxhcHNlCiAgICAgYXV0byBsYXN0Q2hpbGRDb2xsYXBzZWRNYXJnaW5BZnRlciA9IFsmXSgpIC0+
IFBvc2l0aXZlQW5kTmVnYXRpdmVWZXJ0aWNhbE1hcmdpbjo6VmFsdWVzIHsKICAgICAgICAgaWYg
KCFtYXJnaW5BZnRlckNvbGxhcHNlc1dpdGhMYXN0SW5GbG93Q2hpbGRNYXJnaW5BZnRlcihsYXlv
dXRCb3gpKQogICAgICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICAgICAgcmV0dXJuIHBvc2l0aXZl
TmVnYXRpdmVWYWx1ZXMoKmRvd25jYXN0PENvbnRhaW5lcj4obGF5b3V0Qm94KS5sYXN0SW5GbG93
Q2hpbGQoKSwgTWFyZ2luVHlwZTo6QWZ0ZXIpOworICAgICAgICByZXR1cm4gcG9zaXRpdmVOZWdh
dGl2ZVZhbHVlcygqZG93bmNhc3Q8Q29udGFpbmVyQm94PihsYXlvdXRCb3gpLmxhc3RJbkZsb3dD
aGlsZCgpLCBNYXJnaW5UeXBlOjpBZnRlcik7CiAgICAgfTsKIAogICAgIC8vIFdlIGRvbid0IGtu
b3cgeWV0IHRoZSBtYXJnaW4gYmVmb3JlIHZhbHVlIG9mIHRoZSBuZXh0IHNpYmxpbmcuIExldCdz
IGp1c3QgcHJldGVuZCBpdCBkb2VzIG5vdCBoYXZlIG9uZSBhbmQgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheVBhaW50ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlQYWludGVyLmNwcAppbmRleCA1NmNk
NTlhNTQzYmE3OTgwMWYwNmE2YzJjNTE1NmVkZWIwZGM4NzVkLi4zMWZlMjQ1OGE2ZjZmYjE5ZjU2
MTNlN2RjY2Y4MTFhM2MxMzY4ZTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
ZGlzcGxheXRyZWUvRGlzcGxheVBhaW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9kaXNwbGF5dHJlZS9EaXNwbGF5UGFpbnRlci5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNs
dWRlICJJbmxpbmVGb3JtYXR0aW5nU3RhdGUuaCIKICNpbmNsdWRlICJJbmxpbmVUZXh0SXRlbS5o
IgogI2luY2x1ZGUgIkludFJlY3QuaCIKLSNpbmNsdWRlICJMYXlvdXRDb250YWluZXIuaCIKKyNp
bmNsdWRlICJMYXlvdXRDb250YWluZXJCb3guaCIKICNpbmNsdWRlICJMYXlvdXREZXNjZW5kYW50
SXRlcmF0b3IuaCIKICNpbmNsdWRlICJMYXlvdXRTdGF0ZS5oIgogI2luY2x1ZGUgIlJlbmRlclN0
eWxlLmgiCkBAIC0xNTIsOCArMTUyLDggQEAgc3RhdGljIEJveCBhYnNvbHV0ZURpc3BsYXlCb3go
Y29uc3QgTGF5b3V0OjpMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IExheW8KICAgICAg
ICAgcmV0dXJuIGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94KTsK
IAogICAgIGF1dG8gYWJzb2x1dGVCb3ggPSBCb3ggeyBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9y
TGF5b3V0Qm94KGxheW91dEJveCkgfTsKLSAgICBmb3IgKGF1dG8qIGNvbnRhaW5lciA9IGxheW91
dEJveC5jb250YWluaW5nQmxvY2soKTsgY29udGFpbmVyICE9ICZsYXlvdXRCb3guaW5pdGlhbENv
bnRhaW5pbmdCbG9jaygpOyBjb250YWluZXIgPSBjb250YWluZXItPmNvbnRhaW5pbmdCbG9jaygp
KQotICAgICAgICBhYnNvbHV0ZUJveC5tb3ZlQnkobGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxh
eW91dEJveCgqY29udGFpbmVyKS50b3BMZWZ0KCkpOworICAgIGZvciAoYXV0byogY29udGFpbmVy
Qm94ID0gbGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygpOyBjb250YWluZXJCb3ggIT0gJmxheW91
dEJveC5pbml0aWFsQ29udGFpbmluZ0Jsb2NrKCk7IGNvbnRhaW5lckJveCA9IGNvbnRhaW5lckJv
eC0+Y29udGFpbmluZ0Jsb2NrKCkpCisgICAgICAgIGFic29sdXRlQm94Lm1vdmVCeShsYXlvdXRT
dGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpjb250YWluZXJCb3gpLnRvcExlZnQoKSk7CiAg
ICAgcmV0dXJuIGFic29sdXRlQm94OwogfQogCkBAIC0xODIsMjYgKzE4MiwyNiBAQCBzdGF0aWMg
dm9pZCBwYWludFN1YnRyZWUoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdXQ6
OkxheW91dFN0YXRlJiBsYQogICAgICAgICB9CiAgICAgICAgIC8vIE9ubHkgaW5saW5lIGNvbnRl
bnQgZm9yIG5vdy4KICAgICAgICAgaWYgKGxheW91dEJveC5lc3RhYmxpc2hlc0lubGluZUZvcm1h
dHRpbmdDb250ZXh0KCkpIHsKLSAgICAgICAgICAgIGF1dG8mIGNvbnRhaW5lciA9IGRvd25jYXN0
PExheW91dDo6Q29udGFpbmVyPihsYXlvdXRCb3gpOwotICAgICAgICAgICAgcGFpbnRJbmxpbmVD
b250ZW50KGNvbnRleHQsIGFic29sdXRlRGlzcGxheUJveC50b3BMZWZ0KCksIGxheW91dFN0YXRl
LmVzdGFibGlzaGVkSW5saW5lRm9ybWF0dGluZ1N0YXRlKGNvbnRhaW5lcikpOworICAgICAgICAg
ICAgYXV0byYgY29udGFpbmVyQm94ID0gZG93bmNhc3Q8TGF5b3V0OjpDb250YWluZXJCb3g+KGxh
eW91dEJveCk7CisgICAgICAgICAgICBwYWludElubGluZUNvbnRlbnQoY29udGV4dCwgYWJzb2x1
dGVEaXNwbGF5Qm94LnRvcExlZnQoKSwgbGF5b3V0U3RhdGUuZXN0YWJsaXNoZWRJbmxpbmVGb3Jt
YXR0aW5nU3RhdGUoY29udGFpbmVyQm94KSk7CiAgICAgICAgIH0KICAgICB9OwogCiAgICAgcGFp
bnQocGFpbnRSb290Qm94KTsKLSAgICBpZiAoIWlzPExheW91dDo6Q29udGFpbmVyPihwYWludFJv
b3RCb3gpIHx8ICFkb3duY2FzdDxMYXlvdXQ6OkNvbnRhaW5lcj4ocGFpbnRSb290Qm94KS5oYXND
aGlsZCgpKQorICAgIGlmICghaXM8TGF5b3V0OjpDb250YWluZXJCb3g+KHBhaW50Um9vdEJveCkg
fHwgIWRvd25jYXN0PExheW91dDo6Q29udGFpbmVyQm94PihwYWludFJvb3RCb3gpLmhhc0NoaWxk
KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIExheW91dEJveExpc3QgbGF5b3V0Qm94TGlzdDsK
LSAgICBsYXlvdXRCb3hMaXN0LmFwcGVuZChkb3duY2FzdDxMYXlvdXQ6OkNvbnRhaW5lcj4ocGFp
bnRSb290Qm94KS5maXJzdENoaWxkKCkpOworICAgIGxheW91dEJveExpc3QuYXBwZW5kKGRvd25j
YXN0PExheW91dDo6Q29udGFpbmVyQm94PihwYWludFJvb3RCb3gpLmZpcnN0Q2hpbGQoKSk7CiAg
ICAgd2hpbGUgKCFsYXlvdXRCb3hMaXN0LmlzRW1wdHkoKSkgewogICAgICAgICB3aGlsZSAodHJ1
ZSkgewogICAgICAgICAgICAgYXV0byYgbGF5b3V0Qm94ID0gKmxheW91dEJveExpc3QubGFzdCgp
OwogICAgICAgICAgICAgaWYgKGlzUGFpbnRSb290Q2FuZGlkYXRlKGxheW91dEJveCkpCiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBwYWludChsYXlvdXRCb3gpOwotICAgICAg
ICAgICAgaWYgKCFpczxMYXlvdXQ6OkNvbnRhaW5lcj4obGF5b3V0Qm94KSB8fCAhZG93bmNhc3Q8
TGF5b3V0OjpDb250YWluZXI+KGxheW91dEJveCkuaGFzQ2hpbGQoKSkKKyAgICAgICAgICAgIGlm
ICghaXM8TGF5b3V0OjpDb250YWluZXJCb3g+KGxheW91dEJveCkgfHwgIWRvd25jYXN0PExheW91
dDo6Q29udGFpbmVyQm94PihsYXlvdXRCb3gpLmhhc0NoaWxkKCkpCiAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICBsYXlvdXRCb3hMaXN0LmFwcGVuZChkb3duY2FzdDxMYXlvdXQ6
OkNvbnRhaW5lcj4obGF5b3V0Qm94KS5maXJzdENoaWxkKCkpOworICAgICAgICAgICAgbGF5b3V0
Qm94TGlzdC5hcHBlbmQoZG93bmNhc3Q8TGF5b3V0OjpDb250YWluZXJCb3g+KGxheW91dEJveCku
Zmlyc3RDaGlsZCgpKTsKICAgICAgICAgfQogICAgICAgICB3aGlsZSAoIWxheW91dEJveExpc3Qu
aXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBhdXRvJiBsYXlvdXRCb3ggPSAqbGF5b3V0Qm94TGlz
dC50YWtlTGFzdCgpOwpAQCAtMjQwLDkgKzI0MCw5IEBAIHN0YXRpYyBMYXlvdXRSZWN0IGNvbGxl
Y3RQYWludFJvb3RzQW5kQ29udGVudFJlY3QoY29uc3QgTGF5b3V0OjpMYXlvdXRTdGF0ZSYgbGF5
CiAgICAgICAgICAgICBpZiAoaXNQYWludFJvb3RDYW5kaWRhdGUobGF5b3V0Qm94KSkKICAgICAg
ICAgICAgICAgICBhcHBlbmRQYWludFJvb3QobGF5b3V0Qm94KTsKICAgICAgICAgICAgIGNvbnRl
bnRSZWN0LnVuaXRlSWZOb25aZXJvKERpc3BsYXk6OmFic29sdXRlRGlzcGxheUJveChsYXlvdXRT
dGF0ZSwgbGF5b3V0Qm94KS5yZWN0KCkpOwotICAgICAgICAgICAgaWYgKCFpczxMYXlvdXQ6OkNv
bnRhaW5lcj4obGF5b3V0Qm94KSB8fCAhZG93bmNhc3Q8TGF5b3V0OjpDb250YWluZXI+KGxheW91
dEJveCkuaGFzQ2hpbGQoKSkKKyAgICAgICAgICAgIGlmICghaXM8TGF5b3V0OjpDb250YWluZXJC
b3g+KGxheW91dEJveCkgfHwgIWRvd25jYXN0PExheW91dDo6Q29udGFpbmVyQm94PihsYXlvdXRC
b3gpLmhhc0NoaWxkKCkpCiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBsYXlv
dXRCb3hMaXN0LmFwcGVuZChkb3duY2FzdDxMYXlvdXQ6OkNvbnRhaW5lcj4obGF5b3V0Qm94KS5m
aXJzdENoaWxkKCkpOworICAgICAgICAgICAgbGF5b3V0Qm94TGlzdC5hcHBlbmQoZG93bmNhc3Q8
TGF5b3V0OjpDb250YWluZXJCb3g+KGxheW91dEJveCkuZmlyc3RDaGlsZCgpKTsKICAgICAgICAg
fQogICAgICAgICB3aGlsZSAoIWxheW91dEJveExpc3QuaXNFbXB0eSgpKSB7CiAgICAgICAgICAg
ICBhdXRvJiBsYXlvdXRCb3ggPSAqbGF5b3V0Qm94TGlzdC50YWtlTGFzdCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdEF2b2lkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdEF2b2lkZXIuY3BwCmluZGV4IGM3NDk4MzBmODA0
ZGQwYmNmNTUxODQyNzA4MzM4NzM2YjJjOWQxODEuLmU3NzA5NmNmZGI3Y2MzOTIzMWNlNTFiZTY3
NGQ0NTgxMjc5NjU5YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMv
RmxvYXRBdm9pZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0
QXZvaWRlci5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJ
TkdfQ09OVEVYVCkKIAogI2luY2x1ZGUgIkxheW91dEJveC5oIgotI2luY2x1ZGUgIkxheW91dENv
bnRhaW5lci5oIgorI2luY2x1ZGUgIkxheW91dENvbnRhaW5lckJveC5oIgogI2luY2x1ZGUgPHd0
Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdDb250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdDb250ZXh0LmNwcAppbmRleCA5N2QxMTg1
MzAyZTVjYWRhOTYyOGQyMjU3MjFmZmU5OGM0MDRiZGNhLi4yMTAwM2I4OGJlZGQ2NjRmOThhNzkw
NzY3NjRjMDg1ZDczNGJiMjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxv
YXRzL0Zsb2F0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0
cy9GbG9hdGluZ0NvbnRleHQuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSAiRmxvYXRC
b3guaCIKICNpbmNsdWRlICJGb3JtYXR0aW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIkxheW91dEJv
eC5oIgotI2luY2x1ZGUgIkxheW91dENvbnRhaW5lci5oIgorI2luY2x1ZGUgIkxheW91dENvbnRh
aW5lckJveC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTE1NSw3ICsxNTUsNyBAQCBzdHJ1Y3QgRmxvYXRpbmdDb250ZXh0OjpB
YnNvbHV0ZUNvb3JkaW5hdGVWYWx1ZXNGb3JGbG9hdEF2b2lkZXIgewogICAgIEhvcml6b250YWxF
ZGdlcyBjb250YWluaW5nQmxvY2tDb250ZW50Qm94OwogfTsKIAotRmxvYXRpbmdDb250ZXh0OjpG
bG9hdGluZ0NvbnRleHQoY29uc3QgQ29udGFpbmVyJiBmbG9hdGluZ0NvbnRleHRSb290LCBjb25z
dCBGb3JtYXR0aW5nQ29udGV4dCYgZm9ybWF0dGluZ0NvbnRleHQsIEZsb2F0aW5nU3RhdGUmIGZs
b2F0aW5nU3RhdGUpCitGbG9hdGluZ0NvbnRleHQ6OkZsb2F0aW5nQ29udGV4dChjb25zdCBDb250
YWluZXJCb3gmIGZsb2F0aW5nQ29udGV4dFJvb3QsIGNvbnN0IEZvcm1hdHRpbmdDb250ZXh0JiBm
b3JtYXR0aW5nQ29udGV4dCwgRmxvYXRpbmdTdGF0ZSYgZmxvYXRpbmdTdGF0ZSkKICAgICA6IG1f
cm9vdChtYWtlV2Vha1B0cihmbG9hdGluZ0NvbnRleHRSb290KSkKICAgICAsIG1fZm9ybWF0dGlu
Z0NvbnRleHQoZm9ybWF0dGluZ0NvbnRleHQpCiAgICAgLCBtX2Zsb2F0aW5nU3RhdGUoZmxvYXRp
bmdTdGF0ZSkKQEAgLTQ0Niw4ICs0NDYsOCBAQCBMYXlvdXRVbml0IEZsb2F0aW5nQ29udGV4dDo6
bWFwVG9wVG9GbG9hdGluZ1N0YXRlUm9vdChjb25zdCBCb3gmIGZsb2F0Qm94KSBjb25zdAogewog
ICAgIGF1dG8mIGZsb2F0aW5nU3RhdGVSb290ID0gZmxvYXRpbmdTdGF0ZSgpLnJvb3QoKTsKICAg
ICBhdXRvIHRvcCA9IGZvcm1hdHRpbmdDb250ZXh0KCkuZ2VvbWV0cnlGb3JCb3goZmxvYXRCb3gs
IEZvcm1hdHRpbmdDb250ZXh0OjpFc2NhcGVSZWFzb246OkZsb2F0Qm94TmVlZHNUb0JlSW5BYnNv
bHV0ZUNvb3JkaW5hdGVzKS50b3AoKTsKLSAgICBmb3IgKGF1dG8qIGNvbnRhaW5lciA9IGZsb2F0
Qm94LmNvbnRhaW5pbmdCbG9jaygpOyBjb250YWluZXIgJiYgY29udGFpbmVyICE9ICZmbG9hdGlu
Z1N0YXRlUm9vdDsgY29udGFpbmVyID0gY29udGFpbmVyLT5jb250YWluaW5nQmxvY2soKSkKLSAg
ICAgICAgdG9wICs9IGZvcm1hdHRpbmdDb250ZXh0KCkuZ2VvbWV0cnlGb3JCb3goKmNvbnRhaW5l
ciwgRm9ybWF0dGluZ0NvbnRleHQ6OkVzY2FwZVJlYXNvbjo6RmxvYXRCb3hOZWVkc1RvQmVJbkFi
c29sdXRlQ29vcmRpbmF0ZXMpLnRvcCgpOworICAgIGZvciAoYXV0byogY29udGFpbmVyQm94ID0g
ZmxvYXRCb3guY29udGFpbmluZ0Jsb2NrKCk7IGNvbnRhaW5lckJveCAmJiBjb250YWluZXJCb3gg
IT0gJmZsb2F0aW5nU3RhdGVSb290OyBjb250YWluZXJCb3ggPSBjb250YWluZXJCb3gtPmNvbnRh
aW5pbmdCbG9jaygpKQorICAgICAgICB0b3AgKz0gZm9ybWF0dGluZ0NvbnRleHQoKS5nZW9tZXRy
eUZvckJveCgqY29udGFpbmVyQm94LCBGb3JtYXR0aW5nQ29udGV4dDo6RXNjYXBlUmVhc29uOjpG
bG9hdEJveE5lZWRzVG9CZUluQWJzb2x1dGVDb29yZGluYXRlcykudG9wKCk7CiAgICAgcmV0dXJu
IHRvcDsKIH0KIApAQCAtNDU4LDggKzQ1OCw4IEBAIFBvaW50IEZsb2F0aW5nQ29udGV4dDo6bWFw
UG9pbnRGcm9tRm9ybWF0dGluZ0NvbnRleHRSb290VG9GbG9hdGluZ1N0YXRlUm9vdChQb2luCiAg
ICAgaWYgKCZmcm9tID09ICZ0bykKICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOwogICAgIGF1dG8g
bWFwcGVkUG9zaXRpb24gPSBwb3NpdGlvbjsKLSAgICBmb3IgKGF1dG8qIGNvbnRhaW5lciA9ICZm
cm9tOyBjb250YWluZXIgJiYgY29udGFpbmVyICE9ICZ0bzsgY29udGFpbmVyID0gY29udGFpbmVy
LT5jb250YWluaW5nQmxvY2soKSkKLSAgICAgICAgbWFwcGVkUG9zaXRpb24ubW92ZUJ5KGZvcm1h
dHRpbmdDb250ZXh0KCkuZ2VvbWV0cnlGb3JCb3goKmNvbnRhaW5lciwgRm9ybWF0dGluZ0NvbnRl
eHQ6OkVzY2FwZVJlYXNvbjo6RmxvYXRCb3hOZWVkc1RvQmVJbkFic29sdXRlQ29vcmRpbmF0ZXMp
LnRvcExlZnQoKSk7CisgICAgZm9yIChhdXRvKiBjb250YWluZXJCb3ggPSAmZnJvbTsgY29udGFp
bmVyQm94ICYmIGNvbnRhaW5lckJveCAhPSAmdG87IGNvbnRhaW5lckJveCA9IGNvbnRhaW5lckJv
eC0+Y29udGFpbmluZ0Jsb2NrKCkpCisgICAgICAgIG1hcHBlZFBvc2l0aW9uLm1vdmVCeShmb3Jt
YXR0aW5nQ29udGV4dCgpLmdlb21ldHJ5Rm9yQm94KCpjb250YWluZXJCb3gsIEZvcm1hdHRpbmdD
b250ZXh0OjpFc2NhcGVSZWFzb246OkZsb2F0Qm94TmVlZHNUb0JlSW5BYnNvbHV0ZUNvb3JkaW5h
dGVzKS50b3BMZWZ0KCkpOwogICAgIHJldHVybiBtYXBwZWRQb3NpdGlvbjsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ0NvbnRleHQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdDb250ZXh0LmgKaW5kZXggMjA1YzQ1
YjYwMGQ1OWFhNWUzMzIyMDJjNzU5YTFmOGUxMDdmZjJkNS4uNzFkZjQxMTI1NmVlNDFlMWRmYTc0
ZWIyNzJkNzQ0YWQwYTQ4ZmY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zs
b2F0cy9GbG9hdGluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRz
L0Zsb2F0aW5nQ29udGV4dC5oCkBAIC0yOCw3ICsyOCw3IEBACiAjaWYgRU5BQkxFKExBWU9VVF9G
T1JNQVRUSU5HX0NPTlRFWFQpCiAKICNpbmNsdWRlICJGbG9hdGluZ1N0YXRlLmgiCi0jaW5jbHVk
ZSAiTGF5b3V0Q29udGFpbmVyLmgiCisjaW5jbHVkZSAiTGF5b3V0Q29udGFpbmVyQm94LmgiCiAj
aW5jbHVkZSA8d3RmL0lzb01hbGxvYy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00NSw3
ICs0NSw3IEBAIGNsYXNzIExheW91dFN0YXRlOwogY2xhc3MgRmxvYXRpbmdDb250ZXh0IHsKICAg
ICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEZsb2F0aW5nQ29udGV4dCk7CiBwdWJsaWM6Ci0gICAg
RmxvYXRpbmdDb250ZXh0KGNvbnN0IENvbnRhaW5lciYgZmxvYXRpbmdDb250ZXh0Um9vdCwgY29u
c3QgRm9ybWF0dGluZ0NvbnRleHQmLCBGbG9hdGluZ1N0YXRlJik7CisgICAgRmxvYXRpbmdDb250
ZXh0KGNvbnN0IENvbnRhaW5lckJveCYgZmxvYXRpbmdDb250ZXh0Um9vdCwgY29uc3QgRm9ybWF0
dGluZ0NvbnRleHQmLCBGbG9hdGluZ1N0YXRlJik7CiAKICAgICBGbG9hdGluZ1N0YXRlJiBmbG9h
dGluZ1N0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9mbG9hdGluZ1N0YXRlOyB9CiAKQEAgLTcwLDcg
KzcwLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUo
KSBjb25zdCB7IHJldHVybiBtX2Zsb2F0aW5nU3RhdGUubGF5b3V0U3RhdGUoKTsgfQogICAgIGNv
bnN0IEZvcm1hdHRpbmdDb250ZXh0JiBmb3JtYXR0aW5nQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJu
IG1fZm9ybWF0dGluZ0NvbnRleHQ7IH0KLSAgICBjb25zdCBDb250YWluZXImIHJvb3QoKSBjb25z
dCB7IHJldHVybiAqbV9yb290OyB9CisgICAgY29uc3QgQ29udGFpbmVyQm94JiByb290KCkgY29u
c3QgeyByZXR1cm4gKm1fcm9vdDsgfQogCiAgICAgdm9pZCBmaW5kUG9zaXRpb25Gb3JGbG9hdEJv
eChGbG9hdEJveCYpIGNvbnN0OwogICAgIHZvaWQgZmluZFBvc2l0aW9uRm9yRm9ybWF0dGluZ0Nv
bnRleHRSb290KEZsb2F0QXZvaWRlciYpIGNvbnN0OwpAQCAtODEsNyArODEsNyBAQCBwcml2YXRl
OgogICAgIExheW91dFVuaXQgbWFwVG9wVG9GbG9hdGluZ1N0YXRlUm9vdChjb25zdCBCb3gmKSBj
b25zdDsKICAgICBQb2ludCBtYXBQb2ludEZyb21Gb3JtYXR0aW5nQ29udGV4dFJvb3RUb0Zsb2F0
aW5nU3RhdGVSb290KFBvaW50KSBjb25zdDsKIAotICAgIFdlYWtQdHI8Y29uc3QgQ29udGFpbmVy
PiBtX3Jvb3Q7CisgICAgV2Vha1B0cjxjb25zdCBDb250YWluZXJCb3g+IG1fcm9vdDsKICAgICBj
b25zdCBGb3JtYXR0aW5nQ29udGV4dCYgbV9mb3JtYXR0aW5nQ29udGV4dDsKICAgICBGbG9hdGlu
Z1N0YXRlJiBtX2Zsb2F0aW5nU3RhdGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zsb2F0cy9GbG9hdGluZ1N0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
bG9hdHMvRmxvYXRpbmdTdGF0ZS5jcHAKaW5kZXggYWQ3ZjgwZjM5YzdiZjE3ODVjNWNlZmM2OGI2
MDZlMThjZTQ5MGU0Mi4uMmU4ODAzNDFmOTNlMzlkOTA3MjEyMWIwZDNiMTU4MDVmOTE1NWNkNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ1N0YXRlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0aW5nU3RhdGUuY3BwCkBA
IC0zMCw3ICszMCw3IEBACiAKICNpbmNsdWRlICJGb3JtYXR0aW5nQ29udGV4dC5oIgogI2luY2x1
ZGUgIkxheW91dEJveC5oIgotI2luY2x1ZGUgIkxheW91dENvbnRhaW5lci5oIgorI2luY2x1ZGUg
IkxheW91dENvbnRhaW5lckJveC5oIgogI2luY2x1ZGUgIkxheW91dFN0YXRlLmgiCiAjaW5jbHVk
ZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIApAQCAtNTIsNyArNTIsNyBAQCBGbG9hdGluZ1N0
YXRlOjpGbG9hdEl0ZW06OkZsb2F0SXRlbShQb3NpdGlvbiBwb3NpdGlvbiwgRGlzcGxheTo6Qm94
IGFic29sdXRlRGlzcAogewogfQogCi1GbG9hdGluZ1N0YXRlOjpGbG9hdGluZ1N0YXRlKExheW91
dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQ29udGFpbmVyJiBmb3JtYXR0aW5nQ29udGV4dFJv
b3QpCitGbG9hdGluZ1N0YXRlOjpGbG9hdGluZ1N0YXRlKExheW91dFN0YXRlJiBsYXlvdXRTdGF0
ZSwgY29uc3QgQ29udGFpbmVyQm94JiBmb3JtYXR0aW5nQ29udGV4dFJvb3QpCiAgICAgOiBtX2xh
eW91dFN0YXRlKGxheW91dFN0YXRlKQogICAgICwgbV9mb3JtYXR0aW5nQ29udGV4dFJvb3QobWFr
ZVdlYWtQdHIoZm9ybWF0dGluZ0NvbnRleHRSb290KSkKIHsKQEAgLTYwLDcgKzYwLDcgQEAgRmxv
YXRpbmdTdGF0ZTo6RmxvYXRpbmdTdGF0ZShMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0
IENvbnRhaW5lciYgZm9ybWF0dGkKIAogdm9pZCBGbG9hdGluZ1N0YXRlOjphcHBlbmQoRmxvYXRJ
dGVtIGZsb2F0SXRlbSkKIHsKLSAgICBBU1NFUlQoaXM8Q29udGFpbmVyPigqbV9mb3JtYXR0aW5n
Q29udGV4dFJvb3QpKTsKKyAgICBBU1NFUlQoaXM8Q29udGFpbmVyQm94PigqbV9mb3JtYXR0aW5n
Q29udGV4dFJvb3QpKTsKIAogICAgIGlmIChtX2Zsb2F0cy5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiBtX2Zsb2F0cy5hcHBlbmQoZmxvYXRJdGVtKTsKQEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBG
bG9hdGluZ1N0YXRlOjphcHBlbmQoRmxvYXRJdGVtIGZsb2F0SXRlbSkKICAgICByZXR1cm4gbV9m
bG9hdHMuaW5zZXJ0KDAsIGZsb2F0SXRlbSk7CiB9CiAKLU9wdGlvbmFsPFBvc2l0aW9uSW5Db250
ZXh0Um9vdD4gRmxvYXRpbmdTdGF0ZTo6Ym90dG9tKGNvbnN0IENvbnRhaW5lciYgZm9ybWF0dGlu
Z0NvbnRleHRSb290LCBDbGVhciB0eXBlKSBjb25zdAorT3B0aW9uYWw8UG9zaXRpb25JbkNvbnRl
eHRSb290PiBGbG9hdGluZ1N0YXRlOjpib3R0b20oY29uc3QgQ29udGFpbmVyQm94JiBmb3JtYXR0
aW5nQ29udGV4dFJvb3QsIENsZWFyIHR5cGUpIGNvbnN0CiB7CiAgICAgaWYgKG1fZmxvYXRzLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTExNCw3ICsxMTQsNyBAQCBPcHRpb25h
bDxQb3NpdGlvbkluQ29udGV4dFJvb3Q+IEZsb2F0aW5nU3RhdGU6OmJvdHRvbShjb25zdCBDb250
YWluZXImIGZvcm1hdHRpbgogICAgIHJldHVybiBib3R0b207CiB9CiAKLU9wdGlvbmFsPFBvc2l0
aW9uSW5Db250ZXh0Um9vdD4gRmxvYXRpbmdTdGF0ZTo6dG9wKGNvbnN0IENvbnRhaW5lciYgZm9y
bWF0dGluZ0NvbnRleHRSb290KSBjb25zdAorT3B0aW9uYWw8UG9zaXRpb25JbkNvbnRleHRSb290
PiBGbG9hdGluZ1N0YXRlOjp0b3AoY29uc3QgQ29udGFpbmVyQm94JiBmb3JtYXR0aW5nQ29udGV4
dFJvb3QpIGNvbnN0CiB7CiAgICAgaWYgKG1fZmxvYXRzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRp
bmdTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ1N0YXRlLmgK
aW5kZXggNmE5Nzk2YWYxMzk3NTViYWQ4ZDIyZjczODQ5MmZiZjIyMTBmYzJlNi4uYWNiMjUzZmIx
OTNhN2Y4NTk2Y2Q4NTZiMDRhMDc3NTY3ZTE1NzFhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ1N0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zsb2F0cy9GbG9hdGluZ1N0YXRlLmgKQEAgLTI4LDcgKzI4LDcgQEAKICNpZiBFTkFCTEUo
TEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKIAogI2luY2x1ZGUgIkRpc3BsYXlCb3guaCIKLSNp
bmNsdWRlICJMYXlvdXRDb250YWluZXIuaCIKKyNpbmNsdWRlICJMYXlvdXRDb250YWluZXJCb3gu
aCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2lu
Y2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CkBAIC00OSwxNCArNDksMTQgQEAgY2xhc3MgTGF5b3V0U3Rh
dGU7CiBjbGFzcyBGbG9hdGluZ1N0YXRlIDogcHVibGljIFJlZkNvdW50ZWQ8RmxvYXRpbmdTdGF0
ZT4gewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoRmxvYXRpbmdTdGF0ZSk7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZjxGbG9hdGluZ1N0YXRlPiBjcmVhdGUoTGF5b3V0U3RhdGUmIGxheW91
dFN0YXRlLCBjb25zdCBDb250YWluZXImIGZvcm1hdHRpbmdDb250ZXh0Um9vdCkgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBGbG9hdGluZ1N0YXRlKGxheW91dFN0YXRlLCBmb3JtYXR0aW5nQ29udGV4
dFJvb3QpKTsgfQorICAgIHN0YXRpYyBSZWY8RmxvYXRpbmdTdGF0ZT4gY3JlYXRlKExheW91dFN0
YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgQ29udGFpbmVyQm94JiBmb3JtYXR0aW5nQ29udGV4dFJv
b3QpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRmxvYXRpbmdTdGF0ZShsYXlvdXRTdGF0ZSwgZm9y
bWF0dGluZ0NvbnRleHRSb290KSk7IH0KIAotICAgIGNvbnN0IENvbnRhaW5lciYgcm9vdCgpIGNv
bnN0IHsgcmV0dXJuICptX2Zvcm1hdHRpbmdDb250ZXh0Um9vdDsgfQorICAgIGNvbnN0IENvbnRh
aW5lckJveCYgcm9vdCgpIGNvbnN0IHsgcmV0dXJuICptX2Zvcm1hdHRpbmdDb250ZXh0Um9vdDsg
fQogCi0gICAgT3B0aW9uYWw8UG9zaXRpb25JbkNvbnRleHRSb290PiB0b3AoY29uc3QgQ29udGFp
bmVyJiBmb3JtYXR0aW5nQ29udGV4dFJvb3QpIGNvbnN0OwotICAgIE9wdGlvbmFsPFBvc2l0aW9u
SW5Db250ZXh0Um9vdD4gbGVmdEJvdHRvbShjb25zdCBDb250YWluZXImIGZvcm1hdHRpbmdDb250
ZXh0Um9vdCkgY29uc3Q7Ci0gICAgT3B0aW9uYWw8UG9zaXRpb25JbkNvbnRleHRSb290PiByaWdo
dEJvdHRvbShjb25zdCBDb250YWluZXImIGZvcm1hdHRpbmdDb250ZXh0Um9vdCkgY29uc3Q7Ci0g
ICAgT3B0aW9uYWw8UG9zaXRpb25JbkNvbnRleHRSb290PiBib3R0b20oY29uc3QgQ29udGFpbmVy
JiBmb3JtYXR0aW5nQ29udGV4dFJvb3QpIGNvbnN0OworICAgIE9wdGlvbmFsPFBvc2l0aW9uSW5D
b250ZXh0Um9vdD4gdG9wKGNvbnN0IENvbnRhaW5lckJveCYgZm9ybWF0dGluZ0NvbnRleHRSb290
KSBjb25zdDsKKyAgICBPcHRpb25hbDxQb3NpdGlvbkluQ29udGV4dFJvb3Q+IGxlZnRCb3R0b20o
Y29uc3QgQ29udGFpbmVyQm94JiBmb3JtYXR0aW5nQ29udGV4dFJvb3QpIGNvbnN0OworICAgIE9w
dGlvbmFsPFBvc2l0aW9uSW5Db250ZXh0Um9vdD4gcmlnaHRCb3R0b20oY29uc3QgQ29udGFpbmVy
Qm94JiBmb3JtYXR0aW5nQ29udGV4dFJvb3QpIGNvbnN0OworICAgIE9wdGlvbmFsPFBvc2l0aW9u
SW5Db250ZXh0Um9vdD4gYm90dG9tKGNvbnN0IENvbnRhaW5lckJveCYgZm9ybWF0dGluZ0NvbnRl
eHRSb290KSBjb25zdDsKIAogICAgIGNsYXNzIEZsb2F0SXRlbSB7CiAgICAgcHVibGljOgpAQCAt
NjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgICAgIEZsb2F0SXRlbShQb3NpdGlvbiwgRGlzcGxh
eTo6Qm94IGFic29sdXRlRGlzcGxheUJveCk7CiAKICAgICAgICAgYm9vbCBpc0xlZnRQb3NpdGlv
bmVkKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbiA9PSBQb3NpdGlvbjo6TGVmdDsgfQotICAg
ICAgICBib29sIGlzRGVzY2VuZGFudE9mRm9ybWF0dGluZ1Jvb3QoY29uc3QgQ29udGFpbmVyJikg
Y29uc3Q7CisgICAgICAgIGJvb2wgaXNEZXNjZW5kYW50T2ZGb3JtYXR0aW5nUm9vdChjb25zdCBD
b250YWluZXJCb3gmKSBjb25zdDsKIAogICAgICAgICBEaXNwbGF5OjpSZWN0IHJlY3RXaXRoTWFy
Z2luKCkgY29uc3QgeyByZXR1cm4gbV9hYnNvbHV0ZURpc3BsYXlCb3gucmVjdFdpdGhNYXJnaW4o
KTsgfQogICAgICAgICBVc2VkSG9yaXpvbnRhbE1hcmdpbiBob3Jpem9udGFsTWFyZ2luKCkgY29u
c3QgeyByZXR1cm4gbV9hYnNvbHV0ZURpc3BsYXlCb3guaG9yaXpvbnRhbE1hcmdpbigpOyB9CkBA
IC04NiwzOSArODYsMzkgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBG
bG9hdGluZ0NvbnRleHQ7Ci0gICAgRmxvYXRpbmdTdGF0ZShMYXlvdXRTdGF0ZSYsIGNvbnN0IENv
bnRhaW5lciYgZm9ybWF0dGluZ0NvbnRleHRSb290KTsKKyAgICBGbG9hdGluZ1N0YXRlKExheW91
dFN0YXRlJiwgY29uc3QgQ29udGFpbmVyQm94JiBmb3JtYXR0aW5nQ29udGV4dFJvb3QpOwogCiAg
ICAgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9sYXlvdXRTdGF0
ZTsgfQogCi0gICAgT3B0aW9uYWw8UG9zaXRpb25JbkNvbnRleHRSb290PiBib3R0b20oY29uc3Qg
Q29udGFpbmVyJiBmb3JtYXR0aW5nQ29udGV4dFJvb3QsIENsZWFyKSBjb25zdDsKKyAgICBPcHRp
b25hbDxQb3NpdGlvbkluQ29udGV4dFJvb3Q+IGJvdHRvbShjb25zdCBDb250YWluZXJCb3gmIGZv
cm1hdHRpbmdDb250ZXh0Um9vdCwgQ2xlYXIpIGNvbnN0OwogCiAgICAgTGF5b3V0U3RhdGUmIG1f
bGF5b3V0U3RhdGU7Ci0gICAgV2Vha1B0cjxjb25zdCBDb250YWluZXI+IG1fZm9ybWF0dGluZ0Nv
bnRleHRSb290OworICAgIFdlYWtQdHI8Y29uc3QgQ29udGFpbmVyQm94PiBtX2Zvcm1hdHRpbmdD
b250ZXh0Um9vdDsKICAgICBGbG9hdExpc3QgbV9mbG9hdHM7CiB9OwogCi1pbmxpbmUgT3B0aW9u
YWw8UG9zaXRpb25JbkNvbnRleHRSb290PiBGbG9hdGluZ1N0YXRlOjpsZWZ0Qm90dG9tKGNvbnN0
IENvbnRhaW5lciYgZm9ybWF0dGluZ0NvbnRleHRSb290KSBjb25zdAoraW5saW5lIE9wdGlvbmFs
PFBvc2l0aW9uSW5Db250ZXh0Um9vdD4gRmxvYXRpbmdTdGF0ZTo6bGVmdEJvdHRvbShjb25zdCBD
b250YWluZXJCb3gmIGZvcm1hdHRpbmdDb250ZXh0Um9vdCkgY29uc3QKIHsgCiAgICAgQVNTRVJU
KGZvcm1hdHRpbmdDb250ZXh0Um9vdC5lc3RhYmxpc2hlc0Zvcm1hdHRpbmdDb250ZXh0KCkpOwog
ICAgIHJldHVybiBib3R0b20oZm9ybWF0dGluZ0NvbnRleHRSb290LCBDbGVhcjo6TGVmdCk7CiB9
CiAKLWlubGluZSBPcHRpb25hbDxQb3NpdGlvbkluQ29udGV4dFJvb3Q+IEZsb2F0aW5nU3RhdGU6
OnJpZ2h0Qm90dG9tKGNvbnN0IENvbnRhaW5lciYgZm9ybWF0dGluZ0NvbnRleHRSb290KSBjb25z
dAoraW5saW5lIE9wdGlvbmFsPFBvc2l0aW9uSW5Db250ZXh0Um9vdD4gRmxvYXRpbmdTdGF0ZTo6
cmlnaHRCb3R0b20oY29uc3QgQ29udGFpbmVyQm94JiBmb3JtYXR0aW5nQ29udGV4dFJvb3QpIGNv
bnN0CiB7CiAgICAgQVNTRVJUKGZvcm1hdHRpbmdDb250ZXh0Um9vdC5lc3RhYmxpc2hlc0Zvcm1h
dHRpbmdDb250ZXh0KCkpOwogICAgIHJldHVybiBib3R0b20oZm9ybWF0dGluZ0NvbnRleHRSb290
LCBDbGVhcjo6UmlnaHQpOwogfQogCi1pbmxpbmUgT3B0aW9uYWw8UG9zaXRpb25JbkNvbnRleHRS
b290PiBGbG9hdGluZ1N0YXRlOjpib3R0b20oY29uc3QgQ29udGFpbmVyJiBmb3JtYXR0aW5nQ29u
dGV4dFJvb3QpIGNvbnN0CitpbmxpbmUgT3B0aW9uYWw8UG9zaXRpb25JbkNvbnRleHRSb290PiBG
bG9hdGluZ1N0YXRlOjpib3R0b20oY29uc3QgQ29udGFpbmVyQm94JiBmb3JtYXR0aW5nQ29udGV4
dFJvb3QpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGZvcm1hdHRpbmdDb250ZXh0Um9vdC5lc3RhYmxp
c2hlc0Zvcm1hdHRpbmdDb250ZXh0KCkpOwogICAgIHJldHVybiBib3R0b20oZm9ybWF0dGluZ0Nv
bnRleHRSb290LCBDbGVhcjo6Qm90aCk7CiB9CiAKLWlubGluZSBib29sIEZsb2F0aW5nU3RhdGU6
OkZsb2F0SXRlbTo6aXNEZXNjZW5kYW50T2ZGb3JtYXR0aW5nUm9vdChjb25zdCBDb250YWluZXIm
IGZvcm1hdHRpbmdDb250ZXh0Um9vdCkgY29uc3QKK2lubGluZSBib29sIEZsb2F0aW5nU3RhdGU6
OkZsb2F0SXRlbTo6aXNEZXNjZW5kYW50T2ZGb3JtYXR0aW5nUm9vdChjb25zdCBDb250YWluZXJC
b3gmIGZvcm1hdHRpbmdDb250ZXh0Um9vdCkgY29uc3QKIHsKICAgICBBU1NFUlQoZm9ybWF0dGlu
Z0NvbnRleHRSb290LmVzdGFibGlzaGVzRm9ybWF0dGluZ0NvbnRleHQoKSk7Ci0gICAgcmV0dXJu
IG1fbGF5b3V0Qm94LT5pc0NvbnRhaW5pbmdCbG9ja0Rlc2NlbmRhbnRPZihkb3duY2FzdDxDb250
YWluZXI+KGZvcm1hdHRpbmdDb250ZXh0Um9vdCkpOworICAgIHJldHVybiBtX2xheW91dEJveC0+
aXNDb250YWluaW5nQmxvY2tEZXNjZW5kYW50T2YoZG93bmNhc3Q8Q29udGFpbmVyQm94Pihmb3Jt
YXR0aW5nQ29udGV4dFJvb3QpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRl
eHQuY3BwCmluZGV4IDQ2M2QxMDRhNTRmZGJjYWYzZDg3Yzg0ZTUxNzM2MGE2OWYyZjIyMWEuLmU1
MzNmZmE0NjdjZTliZDE0NmMxNDM0NjIwODA1ZGFkOGUzMWRkOTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVG
b3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlICJJbmxpbmVU
ZXh0SXRlbS5oIgogI2luY2x1ZGUgIkludmFsaWRhdGlvblN0YXRlLmgiCiAjaW5jbHVkZSAiTGF5
b3V0Qm94LmgiCi0jaW5jbHVkZSAiTGF5b3V0Q29udGFpbmVyLmgiCisjaW5jbHVkZSAiTGF5b3V0
Q29udGFpbmVyQm94LmgiCiAjaW5jbHVkZSAiTGF5b3V0Q29udGV4dC5oIgogI2luY2x1ZGUgIkxh
eW91dElubGluZVRleHRCb3guaCIKICNpbmNsdWRlICJMYXlvdXRSZXBsYWNlZEJveC5oIgpAQCAt
NTAsMjEgKzUwLDIxIEBAIG5hbWVzcGFjZSBMYXlvdXQgewogCiBXVEZfTUFLRV9JU09fQUxMT0NB
VEVEX0lNUEwoSW5saW5lRm9ybWF0dGluZ0NvbnRleHQpOwogCi1JbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQoY29uc3QgQ29udGFpbmVyJiBmb3JtYXR0aW5n
Q29udGV4dFJvb3QsIElubGluZUZvcm1hdHRpbmdTdGF0ZSYgZm9ybWF0dGluZ1N0YXRlKQorSW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0KGNvbnN0IENvbnRh
aW5lckJveCYgZm9ybWF0dGluZ0NvbnRleHRSb290LCBJbmxpbmVGb3JtYXR0aW5nU3RhdGUmIGZv
cm1hdHRpbmdTdGF0ZSkKICAgICA6IEZvcm1hdHRpbmdDb250ZXh0KGZvcm1hdHRpbmdDb250ZXh0
Um9vdCwgZm9ybWF0dGluZ1N0YXRlKQogewogfQogCi1zdGF0aWMgaW5saW5lIGNvbnN0IEJveCog
bmV4dElubGluZUxldmVsQm94VG9MYXlvdXQoY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IENv
bnRhaW5lciYgc3RheVdpdGhpbikKK3N0YXRpYyBpbmxpbmUgY29uc3QgQm94KiBuZXh0SW5saW5l
TGV2ZWxCb3hUb0xheW91dChjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgQ29udGFpbmVyQm94
JiBzdGF5V2l0aGluKQogewogICAgIC8vIEF0b21pYyBpbmxpbmUtbGV2ZWwgYm94ZXMgYW5kIGZs
b2F0cyBhcmUgb3BhcXVlIGJveGVzIG1lYW5pbmcgdGhhdCB0aGV5IGFyZQogICAgIC8vIHJlc3Bv
bnNpYmxlIGZvciB0aGVpciBvd24gY29udGVudCAoZG8gbm90IG5lZWQgdG8gZGVzY2VuZCBpbnRv
IHRoZWlyIHN1YnRyZWVzKS4KICAgICAvLyBPbmx5IGlubGluZSBib3hlcyBtYXkgaGF2ZSByZWxl
dmFudCBkZXNjZW5kYW50IGNvbnRlbnQuCiAgICAgaWYgKGxheW91dEJveC5pc0lubGluZUJveCgp
KSB7Ci0gICAgICAgIGlmIChpczxDb250YWluZXI+KGxheW91dEJveCkgJiYgZG93bmNhc3Q8Q29u
dGFpbmVyPihsYXlvdXRCb3gpLmhhc0luRmxvd09yRmxvYXRpbmdDaGlsZCgpKSB7CisgICAgICAg
IGlmIChpczxDb250YWluZXJCb3g+KGxheW91dEJveCkgJiYgZG93bmNhc3Q8Q29udGFpbmVyQm94
PihsYXlvdXRCb3gpLmhhc0luRmxvd09yRmxvYXRpbmdDaGlsZCgpKSB7CiAgICAgICAgICAgICAv
LyBBbm9ueW1vdXMgaW5saW5lIGJveGVzL2xpbmUgYnJlYWtzIGNhbid0IGhhdmUgZGVzY2VuZGFu
dCBjb250ZW50IGJ5IGRlZmluaXRpb24uCiAgICAgICAgICAgICBBU1NFUlQoIWxheW91dEJveC5p
c0Fub255bW91cygpICYmICFsYXlvdXRCb3guaXNMaW5lQnJlYWtCb3goKSk7Ci0gICAgICAgICAg
ICByZXR1cm4gZG93bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRCb3gpLmZpcnN0SW5GbG93T3JGbG9h
dGluZ0NoaWxkKCk7CisgICAgICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q29udGFpbmVyQm94Pihs
YXlvdXRCb3gpLmZpcnN0SW5GbG93T3JGbG9hdGluZ0NoaWxkKCk7CiAgICAgICAgIH0KICAgICB9
CiAKQEAgLTkyLDE3ICs5MiwxNyBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpsYXlv
dXRJbkZsb3dDb250ZW50KEludmFsaWRhdGlvblN0YXRlJiBpbnZhbGlkYXRpbwogICAgICAgICAg
ICAgY29tcHV0ZUJvcmRlckFuZFBhZGRpbmcoKmxheW91dEJveCwgaG9yaXpvbnRhbENvbnN0cmFp
bnRzKTsKICAgICAgICAgICAgIGNvbXB1dGVXaWR0aEFuZE1hcmdpbigqbGF5b3V0Qm94LCBob3Jp
em9udGFsQ29uc3RyYWludHMpOwogICAgICAgICAgICAgYXV0byBjcmVhdGVzRm9ybWF0dGluZ0Nv
bnRleHQgPSBsYXlvdXRCb3gtPmlzSW5saW5lQmxvY2tCb3goKSB8fCBsYXlvdXRCb3gtPmlzSW5s
aW5lVGFibGVCb3goKTsKLSAgICAgICAgICAgIGF1dG8gaGFzSW5GbG93T3JGbG9hdGluZ0NoaWxk
ID0gaXM8Q29udGFpbmVyPigqbGF5b3V0Qm94KSAmJiBkb3duY2FzdDxDb250YWluZXI+KCpsYXlv
dXRCb3gpLmhhc0luRmxvd09yRmxvYXRpbmdDaGlsZCgpOworICAgICAgICAgICAgYXV0byBoYXNJ
bkZsb3dPckZsb2F0aW5nQ2hpbGQgPSBpczxDb250YWluZXJCb3g+KCpsYXlvdXRCb3gpICYmIGRv
d25jYXN0PENvbnRhaW5lckJveD4oKmxheW91dEJveCkuaGFzSW5GbG93T3JGbG9hdGluZ0NoaWxk
KCk7CiAgICAgICAgICAgICBpZiAoY3JlYXRlc0Zvcm1hdHRpbmdDb250ZXh0ICYmIGhhc0luRmxv
d09yRmxvYXRpbmdDaGlsZCkgewotICAgICAgICAgICAgICAgIGF1dG8gZm9ybWF0dGluZ0NvbnRl
eHQgPSBMYXlvdXRDb250ZXh0OjpjcmVhdGVGb3JtYXR0aW5nQ29udGV4dChkb3duY2FzdDxDb250
YWluZXI+KCpsYXlvdXRCb3gpLCBsYXlvdXRTdGF0ZSgpKTsKKyAgICAgICAgICAgICAgICBhdXRv
IGZvcm1hdHRpbmdDb250ZXh0ID0gTGF5b3V0Q29udGV4dDo6Y3JlYXRlRm9ybWF0dGluZ0NvbnRl
eHQoZG93bmNhc3Q8Q29udGFpbmVyQm94PigqbGF5b3V0Qm94KSwgbGF5b3V0U3RhdGUoKSk7CiAg
ICAgICAgICAgICAgICAgZm9ybWF0dGluZ0NvbnRleHQtPmxheW91dEluRmxvd0NvbnRlbnQoaW52
YWxpZGF0aW9uU3RhdGUsIGhvcml6b250YWxDb25zdHJhaW50cywgdmVydGljYWxDb25zdHJhaW50
cyk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjb21wdXRlSGVpZ2h0QW5kTWFyZ2luKCps
YXlvdXRCb3gsIGhvcml6b250YWxDb25zdHJhaW50cyk7Ci0gICAgICAgICAgICBpZiAoY3JlYXRl
c0Zvcm1hdHRpbmdDb250ZXh0ICYmIGlzPENvbnRhaW5lcj4oKmxheW91dEJveCkgJiYgZG93bmNh
c3Q8Q29udGFpbmVyPigqbGF5b3V0Qm94KS5oYXNDaGlsZCgpKSB7CisgICAgICAgICAgICBpZiAo
Y3JlYXRlc0Zvcm1hdHRpbmdDb250ZXh0ICYmIGlzPENvbnRhaW5lckJveD4oKmxheW91dEJveCkg
JiYgZG93bmNhc3Q8Q29udGFpbmVyQm94PigqbGF5b3V0Qm94KS5oYXNDaGlsZCgpKSB7CiAgICAg
ICAgICAgICAgICAgYXV0byYgZGlzcGxheUJveCA9IGdlb21ldHJ5Rm9yQm94KCpsYXlvdXRCb3gp
OwogICAgICAgICAgICAgICAgIGF1dG8gaG9yaXpvbnRhbENvbnN0cmFpbnRzRm9yT3V0T2ZGbG93
ID0gR2VvbWV0cnk6Omhvcml6b250YWxDb25zdHJhaW50c0Zvck91dE9mRmxvdyhkaXNwbGF5Qm94
KTsKICAgICAgICAgICAgICAgICBhdXRvIHZlcnRpY2FsQ29uc3RyYWludHNGb3JPdXRPZkZsb3cg
PSBHZW9tZXRyeTo6dmVydGljYWxDb25zdHJhaW50c0Zvck91dE9mRmxvdyhkaXNwbGF5Qm94KTsK
LSAgICAgICAgICAgICAgICBhdXRvIGZvcm1hdHRpbmdDb250ZXh0ID0gTGF5b3V0Q29udGV4dDo6
Y3JlYXRlRm9ybWF0dGluZ0NvbnRleHQoZG93bmNhc3Q8Q29udGFpbmVyPigqbGF5b3V0Qm94KSwg
bGF5b3V0U3RhdGUoKSk7CisgICAgICAgICAgICAgICAgYXV0byBmb3JtYXR0aW5nQ29udGV4dCA9
IExheW91dENvbnRleHQ6OmNyZWF0ZUZvcm1hdHRpbmdDb250ZXh0KGRvd25jYXN0PENvbnRhaW5l
ckJveD4oKmxheW91dEJveCksIGxheW91dFN0YXRlKCkpOwogICAgICAgICAgICAgICAgIGZvcm1h
dHRpbmdDb250ZXh0LT5sYXlvdXRPdXRPZkZsb3dDb250ZW50KGludmFsaWRhdGlvblN0YXRlLCBo
b3Jpem9udGFsQ29uc3RyYWludHNGb3JPdXRPZkZsb3csIHZlcnRpY2FsQ29uc3RyYWludHNGb3JP
dXRPZkZsb3cpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKGxheW91dEJveC0+
aXNJbmxpbmVCb3goKSkgewpAQCAtMjUzLDggKzI1Myw4IEBAIHZvaWQgSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQ6OmNvbXB1dGVJbnRyaW5zaWNXaWR0aEZvckZvcm1hdHRpbmdSb290KGNvbnN0IEJv
eCYKICAgICBhdXRvIGNvbnN0cmFpbnRzID0gSW50cmluc2ljV2lkdGhDb25zdHJhaW50cyB7IH07
CiAgICAgaWYgKGF1dG8gZml4ZWRXaWR0aCA9IGdlb21ldHJ5KCkuZml4ZWRWYWx1ZShmb3JtYXR0
aW5nUm9vdC5zdHlsZSgpLmxvZ2ljYWxXaWR0aCgpKSkKICAgICAgICAgY29uc3RyYWludHMgPSB7
ICpmaXhlZFdpZHRoLCAqZml4ZWRXaWR0aCB9OwotICAgIGVsc2UgaWYgKGlzPENvbnRhaW5lcj4o
Zm9ybWF0dGluZ1Jvb3QpICYmIGRvd25jYXN0PENvbnRhaW5lcj4oZm9ybWF0dGluZ1Jvb3QpLmhh
c0luRmxvd09yRmxvYXRpbmdDaGlsZCgpKQotICAgICAgICBjb25zdHJhaW50cyA9IExheW91dENv
bnRleHQ6OmNyZWF0ZUZvcm1hdHRpbmdDb250ZXh0KGRvd25jYXN0PENvbnRhaW5lcj4oZm9ybWF0
dGluZ1Jvb3QpLCBsYXlvdXRTdGF0ZSgpKS0+Y29tcHV0ZWRJbnRyaW5zaWNXaWR0aENvbnN0cmFp
bnRzKCk7CisgICAgZWxzZSBpZiAoaXM8Q29udGFpbmVyQm94Pihmb3JtYXR0aW5nUm9vdCkgJiYg
ZG93bmNhc3Q8Q29udGFpbmVyQm94Pihmb3JtYXR0aW5nUm9vdCkuaGFzSW5GbG93T3JGbG9hdGlu
Z0NoaWxkKCkpCisgICAgICAgIGNvbnN0cmFpbnRzID0gTGF5b3V0Q29udGV4dDo6Y3JlYXRlRm9y
bWF0dGluZ0NvbnRleHQoZG93bmNhc3Q8Q29udGFpbmVyQm94Pihmb3JtYXR0aW5nUm9vdCksIGxh
eW91dFN0YXRlKCkpLT5jb21wdXRlZEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMoKTsKICAgICBj
b25zdHJhaW50cyA9IGdlb21ldHJ5KCkuY29uc3RyYWluQnlNaW5NYXhXaWR0aChmb3JtYXR0aW5n
Um9vdCwgY29uc3RyYWludHMpOwogICAgIGNvbnN0cmFpbnRzLmV4cGFuZChnZW9tZXRyeUZvckJv
eChmb3JtYXR0aW5nUm9vdCkuaG9yaXpvbnRhbE1hcmdpbkJvcmRlckFuZFBhZGRpbmcoKSk7CiAg
ICAgZm9ybWF0dGluZ1N0YXRlKCkuc2V0SW50cmluc2ljV2lkdGhDb25zdHJhaW50c0ZvckJveChm
b3JtYXR0aW5nUm9vdCwgY29uc3RyYWludHMpOwpAQCAtMzI1LDcgKzMyNSw3IEBAIHZvaWQgSW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbGxlY3RJbmxpbmVDb250ZW50SWZOZWVkZWQoKQogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgc3RhcnQgb2Yg
YW4gaW5saW5lIGJveCAoZS5nLiA8c3Bhbj4pLgogICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRl
LmFkZElubGluZUl0ZW0oeyBsYXlvdXRCb3gsIElubGluZUl0ZW06OlR5cGU6OkNvbnRhaW5lclN0
YXJ0IH0pOwotICAgICAgICAgICAgYXV0byYgaW5saW5lQm94V2l0aElubGluZUNvbnRlbnQgPSBk
b3duY2FzdDxDb250YWluZXI+KGxheW91dEJveCk7CisgICAgICAgICAgICBhdXRvJiBpbmxpbmVC
b3hXaXRoSW5saW5lQ29udGVudCA9IGRvd25jYXN0PENvbnRhaW5lckJveD4obGF5b3V0Qm94KTsK
ICAgICAgICAgICAgIGlmICghaW5saW5lQm94V2l0aElubGluZUNvbnRlbnQuaGFzSW5GbG93T3JG
bG9hdGluZ0NoaWxkKCkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBsYXlv
dXRRdWV1ZS5hcHBlbmQoaW5saW5lQm94V2l0aElubGluZUNvbnRlbnQuZmlyc3RJbkZsb3dPckZs
b2F0aW5nQ2hpbGQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5l
Zm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaAppbmRleCA5ZjZm
OWViNGNmNWQ2MjdiODc1ZDhlNjJhODQ3YWJiZWFkYTk1YjE0Li41Mjc5ODY2ZmJlYzQwNzliNWI5
YTEwYzFlMmUzOWIyZDRmMDI0YTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmgK
QEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgSW52YWxpZGF0aW9uU3RhdGU7CiBjbGFzcyBJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dCBmaW5hbCA6IHB1YmxpYyBGb3JtYXR0aW5nQ29udGV4dCB7CiAgICAg
V1RGX01BS0VfSVNPX0FMTE9DQVRFRChJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCk7CiBwdWJsaWM6
Ci0gICAgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQoY29uc3QgQ29udGFpbmVyJiBmb3JtYXR0aW5n
Q29udGV4dFJvb3QsIElubGluZUZvcm1hdHRpbmdTdGF0ZSYpOworICAgIElubGluZUZvcm1hdHRp
bmdDb250ZXh0KGNvbnN0IENvbnRhaW5lckJveCYgZm9ybWF0dGluZ0NvbnRleHRSb290LCBJbmxp
bmVGb3JtYXR0aW5nU3RhdGUmKTsKICAgICB2b2lkIGxheW91dEluRmxvd0NvbnRlbnQoSW52YWxp
ZGF0aW9uU3RhdGUmLCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmLCBjb25zdCBWZXJ0aWNh
bENvbnN0cmFpbnRzJikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CkBAIC01MSw3ICs1MSw3IEBAIHBy
aXZhdGU6CiAgICAgY2xhc3MgUXVpcmtzIDogcHVibGljIEZvcm1hdHRpbmdDb250ZXh0OjpRdWly
a3MgewogICAgIHB1YmxpYzoKICAgICAgICAgYm9vbCBsaW5lRGVzY2VudE5lZWRzQ29sbGFwc2lu
Zyhjb25zdCBMaW5lQnVpbGRlcjo6UnVuTGlzdCYpIGNvbnN0OwotICAgICAgICBMaW5lQnVpbGRl
cjo6Q29uc3RyYWludHM6OkhlaWdodEFuZEJhc2VsaW5lIGxpbmVIZWlnaHRDb25zdHJhaW50cyhj
b25zdCBDb250YWluZXImIGZvcm1hdHRpbmdSb290KSBjb25zdDsKKyAgICAgICAgTGluZUJ1aWxk
ZXI6OkNvbnN0cmFpbnRzOjpIZWlnaHRBbmRCYXNlbGluZSBsaW5lSGVpZ2h0Q29uc3RyYWludHMo
Y29uc3QgQ29udGFpbmVyQm94JiBmb3JtYXR0aW5nUm9vdCkgY29uc3Q7CiAKICAgICBwcml2YXRl
OgogICAgICAgICBmcmllbmQgY2xhc3MgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ7CkBAIC02Niw3
ICs2Niw3IEBAIHByaXZhdGU6CiAgICAgcHVibGljOgogICAgICAgICBDb250ZW50SGVpZ2h0QW5k
TWFyZ2luIGlubGluZUJsb2NrSGVpZ2h0QW5kTWFyZ2luKGNvbnN0IEJveCYsIGNvbnN0IEhvcml6
b250YWxDb25zdHJhaW50cyYsIGNvbnN0IE92ZXJyaWRlVmVydGljYWxWYWx1ZXMmKSBjb25zdDsK
ICAgICAgICAgQ29udGVudFdpZHRoQW5kTWFyZ2luIGlubGluZUJsb2NrV2lkdGhBbmRNYXJnaW4o
Y29uc3QgQm94JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiwgY29uc3QgT3ZlcnJpZGVI
b3Jpem9udGFsVmFsdWVzJik7Ci0gICAgICAgIE9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IGNv
bXB1dGVkVGV4dEluZGVudChjb25zdCBDb250YWluZXImIGZvcm1hdHRpbmdDb250ZXh0Um9vdCwg
Y29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJikgY29uc3Q7CisgICAgICAgIE9wdGlvbmFsPElu
bGluZUxheW91dFVuaXQ+IGNvbXB1dGVkVGV4dEluZGVudChjb25zdCBDb250YWluZXJCb3gmIGZv
cm1hdHRpbmdDb250ZXh0Um9vdCwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJikgY29uc3Q7
CiAKICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGlu
Zy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3Bw
CmluZGV4IGFlOWI4NDYxNmIzYzI0YjExODM4YjQzOWEzNjBjZGJhYzRjMmFhM2YuLjVmNGQyZTRi
ZTE5NzUzMDcwN2Q3ODEzYjhmZTY0NTljY2NiNTdjOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0R2VvbWV0
cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGlu
ZUZvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKICNpbmNs
dWRlICJGb3JtYXR0aW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIkxheW91dEJveC5oIgotI2luY2x1
ZGUgIkxheW91dENvbnRhaW5lci5oIgorI2luY2x1ZGUgIkxheW91dENvbnRhaW5lckJveC5oIgog
I2luY2x1ZGUgIkxlbmd0aEZ1bmN0aW9ucy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03
NCw3ICs3NCw3IEBAIENvbnRlbnRIZWlnaHRBbmRNYXJnaW4gSW5saW5lRm9ybWF0dGluZ0NvbnRl
eHQ6Okdlb21ldHJ5OjppbmxpbmVCbG9ja0hlaWdodEFuZE1hCiAgICAgcmV0dXJuIGNvbXBsaWNh
dGVkQ2FzZXMobGF5b3V0Qm94LCBob3Jpem9udGFsQ29uc3RyYWludHMsIG92ZXJyaWRlVmVydGlj
YWxWYWx1ZXMpOwogfQogCi1PcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiBJbmxpbmVGb3JtYXR0
aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNvbXB1dGVkVGV4dEluZGVudChjb25zdCBDb250YWluZXIm
IGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiBob3Jp
em9udGFsQ29uc3RyYWludHMpIGNvbnN0CitPcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiBJbmxp
bmVGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmNvbXB1dGVkVGV4dEluZGVudChjb25zdCBD
b250YWluZXJCb3gmIGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgY29uc3QgSG9yaXpvbnRhbENvbnN0
cmFpbnRzJiBob3Jpem9udGFsQ29uc3RyYWludHMpIGNvbnN0CiB7CiAgICAgYXV0byB0ZXh0SW5k
ZW50ID0gZm9ybWF0dGluZ0NvbnRleHRSb290LnN0eWxlKCkudGV4dEluZGVudCgpOwogICAgIGlm
ICh0ZXh0SW5kZW50ID09IFJlbmRlclN0eWxlOjppbml0aWFsVGV4dEluZGVudCgpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0
dGluZ0NvbnRleHRRdWlya3MuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1h
dHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHRRdWlya3MuY3BwCmluZGV4IGNlZTExN2E2ZDky
ZGZkM2Y3ZjE0Y2NlZDlkYjA4YTgxZThhYTEyNjEuLjI0MjExNjcxOGYwN2I2ZjAyOGMwYjRjZDY0
NGJjNzRjZDQxNzRjOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVm
b3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dFF1
aXJrcy5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgYm9vbCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6
UXVpcmtzOjpsaW5lRGVzY2VudE5lZWRzQ29sbGFwc2luZyhjb25zdCBMaW5lQnVpbGQKICAgICAg
ICAgfQogICAgICAgICBpZiAocnVuLmlzQm94KCkpIHsKICAgICAgICAgICAgIGlmIChsYXlvdXRC
b3guaXNJbmxpbmVCbG9ja0JveCgpICYmIGxheW91dEJveC5lc3RhYmxpc2hlc0lubGluZUZvcm1h
dHRpbmdDb250ZXh0KCkpIHsKLSAgICAgICAgICAgICAgICBhdXRvJiBmb3JtYXR0aW5nU3RhdGUg
PSBsYXlvdXRTdGF0ZS5lc3RhYmxpc2hlZElubGluZUZvcm1hdHRpbmdTdGF0ZShkb3duY2FzdDxD
b250YWluZXI+KGxheW91dEJveCkpOworICAgICAgICAgICAgICAgIGF1dG8mIGZvcm1hdHRpbmdT
dGF0ZSA9IGxheW91dFN0YXRlLmVzdGFibGlzaGVkSW5saW5lRm9ybWF0dGluZ1N0YXRlKGRvd25j
YXN0PENvbnRhaW5lckJveD4obGF5b3V0Qm94KSk7CiAgICAgICAgICAgICAgICAgYXV0byBpbmxp
bmVCbG9ja0Jhc2VsaW5lID0gZm9ybWF0dGluZ1N0YXRlLmRpc3BsYXlJbmxpbmVDb250ZW50KCkt
PmxpbmVCb3hlcy5sYXN0KCkuYmFzZWxpbmUoKTsKICAgICAgICAgICAgICAgICBpZiAoaW5saW5l
QmxvY2tCYXNlbGluZS5kZXNjZW50KCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTcxLDcgKzcxLDcgQEAgYm9vbCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6UXVpcmtz
OjpsaW5lRGVzY2VudE5lZWRzQ29sbGFwc2luZyhjb25zdCBMaW5lQnVpbGQKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotTGluZUJ1aWxkZXI6OkNvbnN0cmFpbnRzOjpIZWlnaHRBbmRCYXNlbGluZSBJ
bmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6UXVpcmtzOjpsaW5lSGVpZ2h0Q29uc3RyYWludHMoY29u
c3QgQ29udGFpbmVyJiBmb3JtYXR0aW5nUm9vdCkgY29uc3QKK0xpbmVCdWlsZGVyOjpDb25zdHJh
aW50czo6SGVpZ2h0QW5kQmFzZWxpbmUgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJrczo6
bGluZUhlaWdodENvbnN0cmFpbnRzKGNvbnN0IENvbnRhaW5lckJveCYgZm9ybWF0dGluZ1Jvb3Qp
IGNvbnN0CiB7CiAgICAgLy8gY29tcHV0ZWRMaW5lSGVpZ2h0IHRha2VzIGZvbnQtc2l6ZSBpbnRv
IGFjY291bnQgd2hlbiBsaW5lLWhlaWdodCBpcyBub3Qgc2V0LgogICAgIC8vIFN0cnV0IGlzIHRo
ZSBpbWFnaW5hcnkgYm94IHRoYXQgd2UgcHV0IG9uIGV2ZXJ5IGxpbmUuIEl0IHNldHMgdGhlIGlu
aXRpYWwgdmVydGljYWwgY29uc3RyYWludHMgZm9yIGVhY2ggbmV3IGxpbmUuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnVpbGRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5l
QnVpbGRlci5jcHAKaW5kZXggMTZiNDk1ZDZlZDIzMjBkMzBkZjY3NTFiNTYyYzg5NmRiMTBkMGYy
ZC4uYThmOTU5ZGY5MDJlYTBiMjVkMzBiOTYwMGQ4YmFiOWUzOTA4M2MyOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxp
bmVCdWlsZGVyLmNwcApAQCAtMTU1LDcgKzE1NSw3IEBAIHZvaWQgTGluZUJ1aWxkZXI6OmFsaWdu
Q29udGVudFZlcnRpY2FsbHkoKQogICAgICAgICAgICAgICAgIGF1dG8mIGJveEdlb21ldHJ5ID0g
Zm9ybWF0dGluZ0NvbnRleHQoKS5nZW9tZXRyeUZvckJveChsYXlvdXRCb3gpOwogICAgICAgICAg
ICAgICAgIGxvZ2ljYWxUb3AgPSBiYXNlbGluZU9mZnNldCgpIC0gYXNjZW50IC0gYm94R2VvbWV0
cnkuYm9yZGVyVG9wKCkgLSBib3hHZW9tZXRyeS5wYWRkaW5nVG9wKCkudmFsdWVPcigwKTsKICAg
ICAgICAgICAgIH0gZWxzZSBpZiAobGF5b3V0Qm94LmlzSW5saW5lQmxvY2tCb3goKSAmJiBsYXlv
dXRCb3guZXN0YWJsaXNoZXNJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCgpKSB7Ci0gICAgICAgICAg
ICAgICAgYXV0byYgZm9ybWF0dGluZ1N0YXRlID0gbGF5b3V0U3RhdGUoKS5lc3RhYmxpc2hlZElu
bGluZUZvcm1hdHRpbmdTdGF0ZShkb3duY2FzdDxDb250YWluZXI+KGxheW91dEJveCkpOworICAg
ICAgICAgICAgICAgIGF1dG8mIGZvcm1hdHRpbmdTdGF0ZSA9IGxheW91dFN0YXRlKCkuZXN0YWJs
aXNoZWRJbmxpbmVGb3JtYXR0aW5nU3RhdGUoZG93bmNhc3Q8Q29udGFpbmVyQm94PihsYXlvdXRC
b3gpKTsKICAgICAgICAgICAgICAgICAvLyBTcGVjIG1ha2VzIHVzIGdlbmVyYXRlIGF0IGxlYXN0
IG9uZSBsaW5lIC1ldmVuIGlmIGl0IGlzIGVtcHR5LgogICAgICAgICAgICAgICAgIGF1dG8gaW5s
aW5lQmxvY2tCYXNlbGluZU9mZnNldCA9IGZvcm1hdHRpbmdTdGF0ZS5kaXNwbGF5SW5saW5lQ29u
dGVudCgpLT5saW5lQm94ZXMubGFzdCgpLmJhc2VsaW5lT2Zmc2V0KCk7CiAgICAgICAgICAgICAg
ICAgLy8gVGhlIGlubGluZS1ibG9jaydzIGJhc2VsaW5lIG9mZnNldCBpcyByZWxhdGl2ZSB0byBp
dHMgY29udGVudCBib3guIExldCdzIGNvbnZlcnQgaXQgcmVsYXRpdmUgdG8gdGhlIG1hcmdpbiBi
b3guCkBAIC01NjUsNyArNTY1LDcgQEAgdm9pZCBMaW5lQnVpbGRlcjo6YWRqdXN0QmFzZWxpbmVB
bmRMaW5lSGVpZ2h0KGNvbnN0IFJ1biYgcnVuKQogICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246
OkJhc2VsaW5lOiB7CiAgICAgICAgICAgICBpZiAobGF5b3V0Qm94LmlzSW5saW5lQmxvY2tCb3go
KSAmJiBsYXlvdXRCb3guZXN0YWJsaXNoZXNJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCgpKSB7CiAg
ICAgICAgICAgICAgICAgLy8gSW5saW5lLWJsb2NrcyB3aXRoIGlubGluZSBjb250ZW50IGFsd2F5
cyBoYXZlIGJhc2VsaW5lcy4KLSAgICAgICAgICAgICAgICBhdXRvJiBmb3JtYXR0aW5nU3RhdGUg
PSBsYXlvdXRTdGF0ZSgpLmVzdGFibGlzaGVkSW5saW5lRm9ybWF0dGluZ1N0YXRlKGRvd25jYXN0
PENvbnRhaW5lcj4obGF5b3V0Qm94KSk7CisgICAgICAgICAgICAgICAgYXV0byYgZm9ybWF0dGlu
Z1N0YXRlID0gbGF5b3V0U3RhdGUoKS5lc3RhYmxpc2hlZElubGluZUZvcm1hdHRpbmdTdGF0ZShk
b3duY2FzdDxDb250YWluZXJCb3g+KGxheW91dEJveCkpOwogICAgICAgICAgICAgICAgIC8vIFNw
ZWMgbWFrZXMgdXMgZ2VuZXJhdGUgYXQgbGVhc3Qgb25lIGxpbmUgLWV2ZW4gaWYgaXQgaXMgZW1w
dHkuCiAgICAgICAgICAgICAgICAgYXV0byYgbGFzdExpbmVCb3ggPSBmb3JtYXR0aW5nU3RhdGUu
ZGlzcGxheUlubGluZUNvbnRlbnQoKS0+bGluZUJveGVzLmxhc3QoKTsKICAgICAgICAgICAgICAg
ICBhdXRvIGlubGluZUJsb2NrQmFzZWxpbmUgPSBsYXN0TGluZUJveC5iYXNlbGluZSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvTGluZUxheW91
dENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvTGlu
ZUxheW91dENvbnRleHQuY3BwCmluZGV4IGJlYjY4MmUzOTBkN2ZjZWMxNjc3ZDJlZWIwNGE0MWFj
NzE1Y2YzZDcuLjc4MTIyOWExYmQyZGMwNWJhY2YzMmFlYTc3ODA0M2Q1ODQxNjQxNWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0xpbmVMYXlvdXRD
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9M
aW5lTGF5b3V0Q29udGV4dC5jcHAKQEAgLTI0NSw3ICsyNDUsNyBAQCBzdGF0aWMgaW5saW5lIGJv
b2wgaXNMaW5lQ29uc2lkZXJlZEVtcHR5KGNvbnN0IExpbmVCdWlsZGVyJiBsaW5lKQogICAgIHJl
dHVybiBsaW5lLmlzVmlzdWFsbHlFbXB0eSgpICYmICFsaW5lLmhhc0ludHJ1c2l2ZUZsb2F0KCk7
CiB9CiAKLUxpbmVMYXlvdXRDb250ZXh0OjpMaW5lTGF5b3V0Q29udGV4dChjb25zdCBJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dCYgaW5saW5lRm9ybWF0dGluZ0NvbnRleHQsIGNvbnN0IENvbnRhaW5l
ciYgZm9ybWF0dGluZ0NvbnRleHRSb290LCBjb25zdCBJbmxpbmVJdGVtcyYgaW5saW5lSXRlbXMp
CitMaW5lTGF5b3V0Q29udGV4dDo6TGluZUxheW91dENvbnRleHQoY29uc3QgSW5saW5lRm9ybWF0
dGluZ0NvbnRleHQmIGlubGluZUZvcm1hdHRpbmdDb250ZXh0LCBjb25zdCBDb250YWluZXJCb3gm
IGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgY29uc3QgSW5saW5lSXRlbXMmIGlubGluZUl0ZW1zKQog
ICAgIDogbV9pbmxpbmVGb3JtYXR0aW5nQ29udGV4dChpbmxpbmVGb3JtYXR0aW5nQ29udGV4dCkK
ICAgICAsIG1fZm9ybWF0dGluZ0NvbnRleHRSb290KGZvcm1hdHRpbmdDb250ZXh0Um9vdCkKICAg
ICAsIG1faW5saW5lSXRlbXMoaW5saW5lSXRlbXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9MaW5lTGF5b3V0Q29udGV4dC5oIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvTGluZUxheW91dENvbnRleHQuaAppbmRleCAy
M2Q4ZjcxOWYzMTU1NjlhZDQ5MGJjMzUwY2M5OWFlZWUxNjgzZTA2Li44MzUwNmRkNGI5OGNkZTA4
ZTcwMjE3OGFjMTY2YTM0ZGIxMDM1YjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW5saW5lZm9ybWF0dGluZy9MaW5lTGF5b3V0Q29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0xpbmVMYXlvdXRDb250ZXh0LmgKQEAgLTM3LDcg
KzM3LDcgQEAgc3RydWN0IExpbmVDYW5kaWRhdGVDb250ZW50OwogCiBjbGFzcyBMaW5lTGF5b3V0
Q29udGV4dCB7CiBwdWJsaWM6Ci0gICAgTGluZUxheW91dENvbnRleHQoY29uc3QgSW5saW5lRm9y
bWF0dGluZ0NvbnRleHQmLCBjb25zdCBDb250YWluZXImIGZvcm1hdHRpbmdDb250ZXh0Um9vdCwg
Y29uc3QgSW5saW5lSXRlbXMmKTsKKyAgICBMaW5lTGF5b3V0Q29udGV4dChjb25zdCBJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dCYsIGNvbnN0IENvbnRhaW5lckJveCYgZm9ybWF0dGluZ0NvbnRleHRS
b290LCBjb25zdCBJbmxpbmVJdGVtcyYpOwogCiAgICAgc3RydWN0IExpbmVDb250ZW50IHsKICAg
ICAgICAgc3RydWN0IFBhcnRpYWxDb250ZW50IHsKQEAgLTc1LDEwICs3NSwxMCBAQCBwcml2YXRl
OgogICAgIElubGluZUxheW91dFVuaXQgaW5saW5lSXRlbVdpZHRoKGNvbnN0IElubGluZUl0ZW0m
LCBJbmxpbmVMYXlvdXRVbml0IGNvbnRlbnRMb2dpY2FsTGVmdCkgY29uc3Q7CiAKICAgICBjb25z
dCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYgZm9ybWF0dGluZ0NvbnRleHQoKSBjb25zdCB7IHJl
dHVybiBtX2lubGluZUZvcm1hdHRpbmdDb250ZXh0OyB9Ci0gICAgY29uc3QgQ29udGFpbmVyJiBy
b290KCkgY29uc3QgeyByZXR1cm4gbV9mb3JtYXR0aW5nQ29udGV4dFJvb3Q7IH0KKyAgICBjb25z
dCBDb250YWluZXJCb3gmIHJvb3QoKSBjb25zdCB7IHJldHVybiBtX2Zvcm1hdHRpbmdDb250ZXh0
Um9vdDsgfQogCiAgICAgY29uc3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQmIG1faW5saW5lRm9y
bWF0dGluZ0NvbnRleHQ7Ci0gICAgY29uc3QgQ29udGFpbmVyJiBtX2Zvcm1hdHRpbmdDb250ZXh0
Um9vdDsKKyAgICBjb25zdCBDb250YWluZXJCb3gmIG1fZm9ybWF0dGluZ0NvbnRleHRSb290Owog
ICAgIGNvbnN0IElubGluZUl0ZW1zJiBtX2lubGluZUl0ZW1zOwogICAgIEZsb2F0TGlzdCBtX2Zs
b2F0czsKICAgICBPcHRpb25hbDxJbmxpbmVUZXh0SXRlbT4gbV9wYXJ0aWFsTGVhZGluZ1RleHRJ
dGVtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91
dEludGVncmF0aW9uQm94VHJlZS5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9u
L0xheW91dEludGVncmF0aW9uQm94VHJlZS5oCmluZGV4IDRmMDYyMWFlMjkwNzAxMjYxNTFjMGQw
N2M1MWE2MDFlYjE2NzBjZTMuLjg4MTY4ZGExYWE5YmJhMWFiNGJmMzZiMThiNGU4OWYwYTMzMjVk
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJ
bnRlZ3JhdGlvbkJveFRyZWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRp
b24vTGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlLmgKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2lmIEVO
QUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQogCi0jaW5jbHVkZSAiTGF5b3V0Q29udGFp
bmVyLmgiCisjaW5jbHVkZSAiTGF5b3V0Q29udGFpbmVyQm94LmgiCiAjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTQxLDggKzQxLDggQEAgY2xh
c3MgQm94VHJlZSB7CiBwdWJsaWM6CiAgICAgQm94VHJlZShjb25zdCBSZW5kZXJCbG9ja0Zsb3cm
KTsKIAotICAgIGNvbnN0IExheW91dDo6Q29udGFpbmVyJiByb290TGF5b3V0Qm94KCkgY29uc3Qg
eyByZXR1cm4gbV9yb290OyB9Ci0gICAgTGF5b3V0OjpDb250YWluZXImIHJvb3RMYXlvdXRCb3go
KSB7IHJldHVybiBtX3Jvb3Q7IH0KKyAgICBjb25zdCBMYXlvdXQ6OkNvbnRhaW5lckJveCYgcm9v
dExheW91dEJveCgpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdDsgfQorICAgIExheW91dDo6Q29udGFp
bmVyQm94JiByb290TGF5b3V0Qm94KCkgeyByZXR1cm4gbV9yb290OyB9CiAKICAgICBjb25zdCBM
YXlvdXQ6OkJveCogbGF5b3V0Qm94Rm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0JikgY29u
c3Q7CiAgICAgY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlckZvckxheW91dEJveChjb25zdCBM
YXlvdXQ6OkJveCYpIGNvbnN0OwpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgog
ICAgIHZvaWQgYnVpbGRUcmVlKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYpOwogCi0gICAgTGF5b3V0
OjpDb250YWluZXIgbV9yb290OworICAgIExheW91dDo6Q29udGFpbmVyQm94IG1fcm9vdDsKICAg
ICBzdHJ1Y3QgQm94QW5kUmVuZGVyZXIgewogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Y29uc3Qg
TGF5b3V0OjpCb3g+IGJveDsKICAgICAgICAgY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlciB7
IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlv
bi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKaW5kZXggZDgxYzhi
NjI2NTVkYmRhMjM3ZDM4ODRmYTYxNmNlNzYzMzFjMWE5MC4uMmZjNjU3NTY4OTYxMjFhM2VhMDY3
OTUzOWI1ZTQ2OGZjZWVjNDQ1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
dGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAK
QEAgLTI0MiwxMiArMjQyLDEyIEBAIExpbmVMYXlvdXRUcmF2ZXJzYWw6OkVsZW1lbnRCb3hJdGVy
YXRvciBMaW5lTGF5b3V0OjplbGVtZW50Qm94Rm9yKGNvbnN0IFJlbmRlckxpCiAgICAgcmV0dXJu
IHsgfTsKIH0KIAotY29uc3QgTGF5b3V0OjpDb250YWluZXImIExpbmVMYXlvdXQ6OnJvb3RMYXlv
dXRCb3goKSBjb25zdAorY29uc3QgTGF5b3V0OjpDb250YWluZXJCb3gmIExpbmVMYXlvdXQ6OnJv
b3RMYXlvdXRCb3goKSBjb25zdAogewogICAgIHJldHVybiBtX2JveFRyZWUucm9vdExheW91dEJv
eCgpOwogfQogCi1MYXlvdXQ6OkNvbnRhaW5lciYgTGluZUxheW91dDo6cm9vdExheW91dEJveCgp
CitMYXlvdXQ6OkNvbnRhaW5lckJveCYgTGluZUxheW91dDo6cm9vdExheW91dEJveCgpCiB7CiAg
ICAgcmV0dXJuIG1fYm94VHJlZS5yb290TGF5b3V0Qm94KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0
LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25M
aW5lTGF5b3V0LmgKaW5kZXggYWE2YmJlZmUyMGZhM2IyZjBlNDkzMmEyYTE5NGUxNjVlY2EzMWQy
My4uMDIyZmE0MTY4ODFlNzVmMWFjYjhiYjgwNWQ0MmRhY2U4YmI5MmNlZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxh
eW91dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRl
Z3JhdGlvbkxpbmVMYXlvdXQuaApAQCAtODYsOCArODYsOCBAQCBwcml2YXRlOgogICAgIHZvaWQg
cHJlcGFyZUxheW91dFN0YXRlKCk7CiAgICAgdm9pZCBwcmVwYXJlRmxvYXRpbmdTdGF0ZSgpOwog
Ci0gICAgY29uc3QgTGF5b3V0OjpDb250YWluZXImIHJvb3RMYXlvdXRCb3goKSBjb25zdDsKLSAg
ICBMYXlvdXQ6OkNvbnRhaW5lciYgcm9vdExheW91dEJveCgpOworICAgIGNvbnN0IExheW91dDo6
Q29udGFpbmVyQm94JiByb290TGF5b3V0Qm94KCkgY29uc3Q7CisgICAgTGF5b3V0OjpDb250YWlu
ZXJCb3gmIHJvb3RMYXlvdXRCb3goKTsKICAgICBTaGFkb3dEYXRhKiBkZWJ1Z1RleHRTaGFkb3co
KTsKICAgICB2b2lkIHJlbGVhc2VJbmxpbmVJdGVtQ2FjaGUoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2ludmFsaWRhdGlvbi9JbnZhbGlkYXRpb25TdGF0ZS5oIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2ludmFsaWRhdGlvbi9JbnZhbGlkYXRpb25TdGF0ZS5oCmluZGV4
IDVlMjI0NWVjNzQwNGZiMDg0NzlhMTlhMjM1ODk0Y2VhNjkxZmI2YzEuLjE3MGUwMTQ0OGEwMDc4
YjMxYzI4NzI4YjQ1YjhkNmE1NDNiNTM3MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbnZhbGlkYXRpb24vSW52YWxpZGF0aW9uU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW52YWxpZGF0aW9uL0ludmFsaWRhdGlvblN0YXRlLmgKQEAgLTI4LDcgKzI4LDcg
QEAKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKIAogI2luY2x1ZGUgIkxh
eW91dEJveC5oIgotI2luY2x1ZGUgIkxheW91dENvbnRhaW5lci5oIgorI2luY2x1ZGUgIkxheW91
dENvbnRhaW5lckJveC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4KICNpbmNsdWRlIDx3
dGYvV2Vha0hhc2hTZXQuaD4KIApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBt
YXJrTmVlZHNVcGRhdGUoY29uc3QgQm94Jik7CiAgICAgYm9vbCBuZWVkc0xheW91dChjb25zdCBC
b3gmKSBjb25zdDsKIAotICAgIHVzaW5nIEZvcm1hdHRpbmdDb250ZXh0Um9vdHMgPSBXZWFrSGFz
aFNldDxjb25zdCBDb250YWluZXI+OworICAgIHVzaW5nIEZvcm1hdHRpbmdDb250ZXh0Um9vdHMg
PSBXZWFrSGFzaFNldDxjb25zdCBDb250YWluZXJCb3g+OwogICAgIC8vIEZJWE1FOiBXZSBjdXJy
ZW50bHkgZG8gZnVsbCBmb3JtYXR0aW5nIGNvbnRleHQgbGF5b3V0cyAobm8gcGFydGlhbCBsYXlv
dXQgd2l0aGluIGEgZm9ybWF0dGluZyBjb250ZXh0KS4KICAgICBjb25zdCBGb3JtYXR0aW5nQ29u
dGV4dFJvb3RzJiBmb3JtYXR0aW5nQ29udGV4dFJvb3RzKCkgY29uc3QgeyByZXR1cm4gbV9mb3Jt
YXR0aW5nQ29udGV4dFJvb3RzOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9sYXlvdXR0cmVlL0xheW91dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0
dHJlZS9MYXlvdXRCb3guY3BwCmluZGV4IGE3YjcwN2MxOTc5MWM4N2Y3MTVkNTJkMjg4MDI0ODM5
OGYxMWY2MDYuLmZmMTkzODI3ZWQ3MTQ3ZDA2ODE1ODllNGU1ODYyYjdiZjBkZjk0ODcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmNwcApAQCAtMjks
NyArMjksNyBAQAogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQogCiAjaW5j
bHVkZSAiRGlzcGxheUJveC5oIgotI2luY2x1ZGUgIkxheW91dENvbnRhaW5lci5oIgorI2luY2x1
ZGUgIkxheW91dENvbnRhaW5lckJveC5oIgogI2luY2x1ZGUgIkxheW91dFBoYXNlLmgiCiAjaW5j
bHVkZSAiTGF5b3V0U3RhdGUuaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgpAQCAtOTksMTUg
Kzk5LDE1IEBAIGJvb2wgQm94Ojplc3RhYmxpc2hlc0lubGluZUZvcm1hdHRpbmdDb250ZXh0KCkg
Y29uc3QKICAgICBpZiAoIWlzQmxvY2tDb250YWluZXJCb3goKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgaWYgKCFpc0NvbnRhaW5lcigpKQorICAgIGlmICghaXNDb250YWluZXJCb3go
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gRklYTUUgPz8/Ci0gICAgaWYgKCFk
b3duY2FzdDxDb250YWluZXI+KCp0aGlzKS5maXJzdEluRmxvd0NoaWxkKCkpCisgICAgaWYgKCFk
b3duY2FzdDxDb250YWluZXJCb3g+KCp0aGlzKS5maXJzdEluRmxvd0NoaWxkKCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIC8vIEl0J3MgZW5vdWdoIHRvIGNoZWNrIHRoZSBmaXJzdCBp
bi1mbG93IGNoaWxkIHNpbmNlIHdlIGNhbid0IGhhdmUgYm90aCBibG9jayBhbmQgaW5saW5lIGxl
dmVsIHNpYmxpbmcgYm94ZXMuCi0gICAgcmV0dXJuIGRvd25jYXN0PENvbnRhaW5lcj4oKnRoaXMp
LmZpcnN0SW5GbG93Q2hpbGQoKS0+aXNJbmxpbmVMZXZlbEJveCgpOworICAgIHJldHVybiBkb3du
Y2FzdDxDb250YWluZXJCb3g+KCp0aGlzKS5maXJzdEluRmxvd0NoaWxkKCktPmlzSW5saW5lTGV2
ZWxCb3goKTsKIH0KIAogYm9vbCBCb3g6OmVzdGFibGlzaGVzVGFibGVGb3JtYXR0aW5nQ29udGV4
dCgpIGNvbnN0CkBAIC0xNzQsNyArMTc0LDcgQEAgYm9vbCBCb3g6OmlzRmxvYXRBdm9pZGVyKCkg
Y29uc3QKICAgICAgICAgfHwgZXN0YWJsaXNoZXNUYWJsZUZvcm1hdHRpbmdDb250ZXh0KCkgfHwg
ZXN0YWJsaXNoZXNJbmRlcGVuZGVudEZvcm1hdHRpbmdDb250ZXh0KCkgfHwgaGFzRmxvYXRDbGVh
cigpOwogfQogCi1jb25zdCBDb250YWluZXIqIEJveDo6Y29udGFpbmluZ0Jsb2NrKCkgY29uc3QK
K2NvbnN0IENvbnRhaW5lckJveCogQm94Ojpjb250YWluaW5nQmxvY2soKSBjb25zdAogewogICAg
IC8vIEZpbmRpbmcgdGhlIGNvbnRhaW5pbmcgYmxvY2sgYnkgdHJhdmVyc2luZyB0aGUgdHJlZSBk
dXJpbmcgdHJlZSBjb25zdHJ1Y3Rpb24gY291bGQgcHJvdmlkZSBpbmNvcnJlY3QgcmVzdWx0Lgog
ICAgIEFTU0VSVCghUGhhc2U6OmlzSW5UcmVlQnVpbGRpbmcoKSk7CkBAIC0yMTMsNyArMjEzLDcg
QEAgY29uc3QgQ29udGFpbmVyKiBCb3g6OmNvbnRhaW5pbmdCbG9jaygpIGNvbnN0CiAgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKLWNvbnN0IENvbnRhaW5lciYgQm94Ojpmb3JtYXR0aW5nQ29udGV4
dFJvb3QoKSBjb25zdAorY29uc3QgQ29udGFpbmVyQm94JiBCb3g6OmZvcm1hdHRpbmdDb250ZXh0
Um9vdCgpIGNvbnN0CiB7CiAgICAgLy8gRmluZGluZyB0aGUgY29udGV4dCByb290IGJ5IHRyYXZl
cnNpbmcgdGhlIHRyZWUgZHVyaW5nIHRyZWUgY29uc3RydWN0aW9uIGNvdWxkIHByb3ZpZGUgaW5j
b3JyZWN0IHJlc3VsdC4KICAgICBBU1NFUlQoIVBoYXNlOjppc0luVHJlZUJ1aWxkaW5nKCkpOwpA
QCAtMjI2LDcgKzIyNiw3IEBAIGNvbnN0IENvbnRhaW5lciYgQm94Ojpmb3JtYXR0aW5nQ29udGV4
dFJvb3QoKSBjb25zdAogICAgIC8vIDxkaXYgaWQ9b3V0ZXIgc3R5bGU9InBvc2l0aW9uOiBhYnNv
bHV0ZSI+PGRpdiBpZD1pbm5lcj48c3BhbiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlIj5jb250
ZW50PC9zcGFuPjwvZGl2PjwvZGl2PgogICAgIC8vIFdoaWxlIHRoZSByZWxhdGl2ZWx5IHBvc2l0
aW9uZWQgaW5saW5lIGNvbnRhaW5lciAoc3BhbikgaXMgcGxhY2VkIHJlbGF0aXZlIHRvIGl0cyBj
b250YWluaW5nIGJsb2NrICJvdXRlciIsIGl0IGxpdmVzIGluIHRoZSBpbmxpbmUKICAgICAvLyBm
b3JtYXR0aW5nIGNvbnRleHQgZXN0YWJsaXNoZWQgYnkgImlubmVyIi4KLSAgICBjb25zdCBDb250
YWluZXIqIGFuY2VzdG9yID0gbnVsbHB0cjsKKyAgICBjb25zdCBDb250YWluZXJCb3gqIGFuY2Vz
dG9yID0gbnVsbHB0cjsKICAgICBpZiAoaXNJbmxpbmVMZXZlbEJveCgpICYmIGlzSW5GbG93UG9z
aXRpb25lZCgpKQogICAgICAgICBhbmNlc3RvciA9IHBhcmVudCgpOwogICAgIGVsc2UKQEAgLTIz
NywxMCArMjM3LDEwIEBAIGNvbnN0IENvbnRhaW5lciYgQm94Ojpmb3JtYXR0aW5nQ29udGV4dFJv
b3QoKSBjb25zdAogICAgIHJldHVybiBhbmNlc3Rvci0+Zm9ybWF0dGluZ0NvbnRleHRSb290KCk7
CiB9CiAKLWNvbnN0IENvbnRhaW5lciYgQm94Ojppbml0aWFsQ29udGFpbmluZ0Jsb2NrKCkgY29u
c3QKK2NvbnN0IENvbnRhaW5lckJveCYgQm94Ojppbml0aWFsQ29udGFpbmluZ0Jsb2NrKCkgY29u
c3QKIHsKICAgICBpZiAoaXNJbml0aWFsQ29udGFpbmluZ0Jsb2NrKCkpCi0gICAgICAgIHJldHVy
biBkb3duY2FzdDxDb250YWluZXI+KCp0aGlzKTsKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PENv
bnRhaW5lckJveD4oKnRoaXMpOwogCiAgICAgYXV0byogcGFyZW50ID0gdGhpcy0+cGFyZW50KCk7
CiAgICAgZm9yICg7IHBhcmVudC0+cGFyZW50KCk7IHBhcmVudCA9IHBhcmVudC0+cGFyZW50KCkp
IHsgfQpAQCAtMjQ4LDcgKzI0OCw3IEBAIGNvbnN0IENvbnRhaW5lciYgQm94Ojppbml0aWFsQ29u
dGFpbmluZ0Jsb2NrKCkgY29uc3QKICAgICByZXR1cm4gKnBhcmVudDsKIH0KIAotYm9vbCBCb3g6
OmlzRGVzY2VuZGFudE9mKGNvbnN0IENvbnRhaW5lciYgYW5jZXN0b3JDYW5kaWRhdGUpIGNvbnN0
Citib29sIEJveDo6aXNEZXNjZW5kYW50T2YoY29uc3QgQ29udGFpbmVyQm94JiBhbmNlc3RvckNh
bmRpZGF0ZSkgY29uc3QKIHsKICAgICBmb3IgKGF1dG8qIGFuY2VzdG9yID0gcGFyZW50KCk7IGFu
Y2VzdG9yOyBhbmNlc3RvciA9IGFuY2VzdG9yLT5wYXJlbnQoKSkgewogICAgICAgICBpZiAoYW5j
ZXN0b3IgPT0gJmFuY2VzdG9yQ2FuZGlkYXRlKQpAQCAtMjU3LDcgKzI1Nyw3IEBAIGJvb2wgQm94
Ojppc0Rlc2NlbmRhbnRPZihjb25zdCBDb250YWluZXImIGFuY2VzdG9yQ2FuZGlkYXRlKSBjb25z
dAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBCb3g6OmlzQ29udGFpbmluZ0Jsb2NrRGVz
Y2VuZGFudE9mKGNvbnN0IENvbnRhaW5lciYgYW5jZXN0b3JDYW5kaWRhdGUpIGNvbnN0Citib29s
IEJveDo6aXNDb250YWluaW5nQmxvY2tEZXNjZW5kYW50T2YoY29uc3QgQ29udGFpbmVyQm94JiBh
bmNlc3RvckNhbmRpZGF0ZSkgY29uc3QKIHsgCiAgICAgZm9yIChhdXRvKiBhbmNlc3RvciA9IGNv
bnRhaW5pbmdCbG9jaygpOyBhbmNlc3RvcjsgYW5jZXN0b3IgPSBhbmNlc3Rvci0+Y29udGFpbmlu
Z0Jsb2NrKCkpIHsKICAgICAgICAgaWYgKGFuY2VzdG9yID09ICZhbmNlc3RvckNhbmRpZGF0ZSkK
QEAgLTM2NSwxMCArMzY1LDEwIEBAIGJvb2wgQm94Ojppc092ZXJmbG93VmlzaWJsZSgpIGNvbnN0
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBpZiAoaXNJbml0aWFsQ29udGFpbmlu
Z0Jsb2NrKCkpIHsKLSAgICAgICAgYXV0byogZG9jdW1lbnRCb3ggPSBkb3duY2FzdDxDb250YWlu
ZXI+KCp0aGlzKS5maXJzdENoaWxkKCk7Ci0gICAgICAgIGlmICghZG9jdW1lbnRCb3ggfHwgIWRv
Y3VtZW50Qm94LT5pc0RvY3VtZW50Qm94KCkgfHwgIWlzPENvbnRhaW5lcj4oZG9jdW1lbnRCb3gp
KQorICAgICAgICBhdXRvKiBkb2N1bWVudEJveCA9IGRvd25jYXN0PENvbnRhaW5lckJveD4oKnRo
aXMpLmZpcnN0Q2hpbGQoKTsKKyAgICAgICAgaWYgKCFkb2N1bWVudEJveCB8fCAhZG9jdW1lbnRC
b3gtPmlzRG9jdW1lbnRCb3goKSB8fCAhaXM8Q29udGFpbmVyQm94Pihkb2N1bWVudEJveCkpCiAg
ICAgICAgICAgICByZXR1cm4gaXNPdmVyZmxvd1Zpc2libGU7Ci0gICAgICAgIGF1dG8qIGJvZHlC
b3ggPSBkb3duY2FzdDxDb250YWluZXI+KGRvY3VtZW50Qm94KS0+Zmlyc3RDaGlsZCgpOworICAg
ICAgICBhdXRvKiBib2R5Qm94ID0gZG93bmNhc3Q8Q29udGFpbmVyQm94Pihkb2N1bWVudEJveCkt
PmZpcnN0Q2hpbGQoKTsKICAgICAgICAgaWYgKCFib2R5Qm94IHx8ICFib2R5Qm94LT5pc0JvZHlC
b3goKSkKICAgICAgICAgICAgIHJldHVybiBpc092ZXJmbG93VmlzaWJsZTsKICAgICAgICAgYXV0
byYgYm9keUJveFN0eWxlID0gYm9keUJveC0+c3R5bGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5oIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmgKaW5kZXggNGRkNGQ4NWRiMjg2ODE5OWQ0OGMyMWUw
Zjg1YzRmZTFmOTZkMDllNC4uNzliODA5MmQ2ZDdlZDAzOTIyMWVmY2QyMjA2YmI3OWNkMmRjMDlm
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmgKQEAg
LTM5LDcgKzM5LDcgQEAgY2xhc3MgQm94OwogCiBuYW1lc3BhY2UgTGF5b3V0IHsKIAotY2xhc3Mg
Q29udGFpbmVyOworY2xhc3MgQ29udGFpbmVyQm94OwogY2xhc3MgTGF5b3V0U3RhdGU7CiBjbGFz
cyBUcmVlQnVpbGRlcjsKIApAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgICAgIElubGlu
ZVRleHRCb3ggICAgICAgICAgPSAxIDw8IDEsCiAgICAgICAgIExpbmVCcmVha0JveCAgICAgICAg
ICAgPSAxIDw8IDIsCiAgICAgICAgIFJlcGxhY2VkQm94ICAgICAgICAgICAgPSAxIDw8IDMsCi0g
ICAgICAgIENvbnRhaW5lckZsYWcgICAgICAgICAgPSAxIDw8IDQKKyAgICAgICAgQ29udGFpbmVy
Qm94RmxhZyAgICAgICA9IDEgPDwgNAogICAgIH07CiAgICAgdHlwZWRlZiB1bnNpZ25lZCBCYXNl
VHlwZUZsYWdzOwogCkBAIC05MywxMiArOTMsMTIgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0Zs
b2F0aW5nT3JPdXRPZkZsb3dQb3NpdGlvbmVkKCkgY29uc3QgeyByZXR1cm4gaXNGbG9hdGluZ1Bv
c2l0aW9uZWQoKSB8fCBpc091dE9mRmxvd1Bvc2l0aW9uZWQoKTsgfQogCi0gICAgY29uc3QgQ29u
dGFpbmVyKiBjb250YWluaW5nQmxvY2soKSBjb25zdDsKLSAgICBjb25zdCBDb250YWluZXImIGZv
cm1hdHRpbmdDb250ZXh0Um9vdCgpIGNvbnN0OwotICAgIGNvbnN0IENvbnRhaW5lciYgaW5pdGlh
bENvbnRhaW5pbmdCbG9jaygpIGNvbnN0OworICAgIGNvbnN0IENvbnRhaW5lckJveCogY29udGFp
bmluZ0Jsb2NrKCkgY29uc3Q7CisgICAgY29uc3QgQ29udGFpbmVyQm94JiBmb3JtYXR0aW5nQ29u
dGV4dFJvb3QoKSBjb25zdDsKKyAgICBjb25zdCBDb250YWluZXJCb3gmIGluaXRpYWxDb250YWlu
aW5nQmxvY2soKSBjb25zdDsKIAotICAgIGJvb2wgaXNEZXNjZW5kYW50T2YoY29uc3QgQ29udGFp
bmVyJikgY29uc3Q7Ci0gICAgYm9vbCBpc0NvbnRhaW5pbmdCbG9ja0Rlc2NlbmRhbnRPZihjb25z
dCBDb250YWluZXImKSBjb25zdDsKKyAgICBib29sIGlzRGVzY2VuZGFudE9mKGNvbnN0IENvbnRh
aW5lckJveCYpIGNvbnN0OworICAgIGJvb2wgaXNDb250YWluaW5nQmxvY2tEZXNjZW5kYW50T2Yo
Y29uc3QgQ29udGFpbmVyQm94JikgY29uc3Q7CiAKICAgICBib29sIGlzQW5vbnltb3VzKCkgY29u
c3QgeyByZXR1cm4gbV9pc0Fub255bW91czsgfQogCkBAIC0xMjYsNyArMTI2LDcgQEAgcHVibGlj
OgogICAgIGJvb2wgaXNJRnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnRBdHRyaWJ1dGVz
ICYmIG1fZWxlbWVudEF0dHJpYnV0ZXMudmFsdWUoKS5lbGVtZW50VHlwZSA9PSBFbGVtZW50VHlw
ZTo6SUZyYW1lOyB9CiAgICAgYm9vbCBpc0ltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50
QXR0cmlidXRlcyAmJiBtX2VsZW1lbnRBdHRyaWJ1dGVzLnZhbHVlKCkuZWxlbWVudFR5cGUgPT0g
RWxlbWVudFR5cGU6OkltYWdlOyB9CiAKLSAgICBjb25zdCBDb250YWluZXIqIHBhcmVudCgpIGNv
bnN0IHsgcmV0dXJuIG1fcGFyZW50OyB9CisgICAgY29uc3QgQ29udGFpbmVyQm94KiBwYXJlbnQo
KSBjb25zdCB7IHJldHVybiBtX3BhcmVudDsgfQogICAgIGNvbnN0IEJveCogbmV4dFNpYmxpbmco
KSBjb25zdCB7IHJldHVybiBtX25leHRTaWJsaW5nOyB9CiAgICAgY29uc3QgQm94KiBuZXh0SW5G
bG93U2libGluZygpIGNvbnN0OwogICAgIGNvbnN0IEJveCogbmV4dEluRmxvd09yRmxvYXRpbmdT
aWJsaW5nKCkgY29uc3Q7CkBAIC0xMzcsNyArMTM3LDcgQEAgcHVibGljOgogICAgIC8vIEZJWE1F
OiBUaGlzIGlzIGN1cnJlbnRseSBuZWVkZWQgZm9yIHN0eWxlIHVwZGF0ZXMuCiAgICAgQm94KiBu
ZXh0U2libGluZygpIHsgcmV0dXJuIG1fbmV4dFNpYmxpbmc7IH0KIAotICAgIGJvb2wgaXNDb250
YWluZXIoKSBjb25zdCB7IHJldHVybiBtX2Jhc2VUeXBlRmxhZ3MgJiBDb250YWluZXJGbGFnOyB9
CisgICAgYm9vbCBpc0NvbnRhaW5lckJveCgpIGNvbnN0IHsgcmV0dXJuIG1fYmFzZVR5cGVGbGFn
cyAmIENvbnRhaW5lckJveEZsYWc7IH0KICAgICBib29sIGlzSW5saW5lVGV4dEJveCgpIGNvbnN0
IHsgcmV0dXJuIG1fYmFzZVR5cGVGbGFncyAmIElubGluZVRleHRCb3g7IH0KICAgICBib29sIGlz
TGluZUJyZWFrQm94KCkgY29uc3QgeyByZXR1cm4gbV9iYXNlVHlwZUZsYWdzICYgTGluZUJyZWFr
Qm94OyB9CiAgICAgYm9vbCBpc1JlcGxhY2VkQm94KCkgY29uc3QgeyByZXR1cm4gbV9iYXNlVHlw
ZUZsYWdzICYgUmVwbGFjZWRCb3g7IH0KQEAgLTE1OCw3ICsxNTgsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRDb2x1bW5XaWR0aChMYXlvdXRVbml0KTsKICAgICBPcHRpb25hbDxMYXlvdXRVbml0
PiBjb2x1bW5XaWR0aCgpIGNvbnN0OwogCi0gICAgdm9pZCBzZXRQYXJlbnQoQ29udGFpbmVyJiBw
YXJlbnQpIHsgbV9wYXJlbnQgPSAmcGFyZW50OyB9CisgICAgdm9pZCBzZXRQYXJlbnQoQ29udGFp
bmVyQm94JiBwYXJlbnQpIHsgbV9wYXJlbnQgPSAmcGFyZW50OyB9CiAgICAgdm9pZCBzZXROZXh0
U2libGluZyhCb3gmIG5leHRTaWJsaW5nKSB7IG1fbmV4dFNpYmxpbmcgPSAmbmV4dFNpYmxpbmc7
IH0KICAgICB2b2lkIHNldFByZXZpb3VzU2libGluZyhCb3gmIHByZXZpb3VzU2libGluZykgeyBt
X3ByZXZpb3VzU2libGluZyA9ICZwcmV2aW91c1NpYmxpbmc7IH0KIApAQCAtMTk1LDcgKzE5NSw3
IEBAIHByaXZhdGU6CiAgICAgUmVuZGVyU3R5bGUgbV9zdHlsZTsKICAgICBPcHRpb25hbDxFbGVt
ZW50QXR0cmlidXRlcz4gbV9lbGVtZW50QXR0cmlidXRlczsKIAotICAgIENvbnRhaW5lciogbV9w
YXJlbnQgeyBudWxscHRyIH07CisgICAgQ29udGFpbmVyQm94KiBtX3BhcmVudCB7IG51bGxwdHIg
fTsKICAgICBCb3gqIG1fcHJldmlvdXNTaWJsaW5nIHsgbnVsbHB0ciB9OwogICAgIEJveCogbV9u
ZXh0U2libGluZyB7IG51bGxwdHIgfTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9sYXlvdXR0cmVlL0xheW91dENoaWxkSXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9sYXlvdXR0cmVlL0xheW91dENoaWxkSXRlcmF0b3IuaAppbmRleCBkNWQwMjE4N2Vi
YThiZDIzOGRmYTM4N2EyZjc1ODBjYWRmMmE5MmVhLi43ZDZlNGNmODBhNmIyNDQ5MmJkYmEwNjVj
YzA5ODE4MzFlMjg2NTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0
dHJlZS9MYXlvdXRDaGlsZEl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xh
eW91dHRyZWUvTGF5b3V0Q2hpbGRJdGVyYXRvci5oCkBAIC0zNSwzNiArMzUsMzYgQEAgbmFtZXNw
YWNlIExheW91dCB7CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIGNsYXNzIExheW91dENoaWxkSXRl
cmF0b3IgOiBwdWJsaWMgTGF5b3V0SXRlcmF0b3I8VD4gewogcHVibGljOgotICAgIExheW91dENo
aWxkSXRlcmF0b3IoY29uc3QgQ29udGFpbmVyJiBwYXJlbnQpOwotICAgIExheW91dENoaWxkSXRl
cmF0b3IoY29uc3QgQ29udGFpbmVyJiBwYXJlbnQsIGNvbnN0IFQqIGN1cnJlbnQpOworICAgIExh
eW91dENoaWxkSXRlcmF0b3IoY29uc3QgQ29udGFpbmVyQm94JiBwYXJlbnQpOworICAgIExheW91
dENoaWxkSXRlcmF0b3IoY29uc3QgQ29udGFpbmVyQm94JiBwYXJlbnQsIGNvbnN0IFQqIGN1cnJl
bnQpOwogICAgIExheW91dENoaWxkSXRlcmF0b3ImIG9wZXJhdG9yKysoKTsKIH07CiAKIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgogY2xhc3MgTGF5b3V0Q2hpbGRJdGVyYXRvckFkYXB0ZXIgewogcHVi
bGljOgotICAgIExheW91dENoaWxkSXRlcmF0b3JBZGFwdGVyKGNvbnN0IENvbnRhaW5lciYgcGFy
ZW50KTsKKyAgICBMYXlvdXRDaGlsZEl0ZXJhdG9yQWRhcHRlcihjb25zdCBDb250YWluZXJCb3gm
IHBhcmVudCk7CiAgICAgTGF5b3V0Q2hpbGRJdGVyYXRvcjxUPiBiZWdpbigpIGNvbnN0OwogICAg
IExheW91dENoaWxkSXRlcmF0b3I8VD4gZW5kKCkgY29uc3Q7CiAgICAgY29uc3QgVCogZmlyc3Qo
KSBjb25zdDsKICAgICBjb25zdCBUKiBsYXN0KCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgY29u
c3QgQ29udGFpbmVyJiBtX3BhcmVudDsKKyAgICBjb25zdCBDb250YWluZXJCb3gmIG1fcGFyZW50
OwogfTsKIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IExheW91dENoaWxkSXRlcmF0b3JBZGFwdGVy
PFQ+IGNoaWxkcmVuT2ZUeXBlKGNvbnN0IENvbnRhaW5lciYpOwordGVtcGxhdGUgPHR5cGVuYW1l
IFQ+IExheW91dENoaWxkSXRlcmF0b3JBZGFwdGVyPFQ+IGNoaWxkcmVuT2ZUeXBlKGNvbnN0IENv
bnRhaW5lckJveCYpOwogCiAvLyBMYXlvdXRDaGlsZEl0ZXJhdG9yCiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPgotaW5saW5lIExheW91dENoaWxkSXRlcmF0b3I8VD46OkxheW91dENoaWxkSXRlcmF0
b3IoY29uc3QgQ29udGFpbmVyJiBwYXJlbnQpCitpbmxpbmUgTGF5b3V0Q2hpbGRJdGVyYXRvcjxU
Pjo6TGF5b3V0Q2hpbGRJdGVyYXRvcihjb25zdCBDb250YWluZXJCb3gmIHBhcmVudCkKICAgICA6
IExheW91dEl0ZXJhdG9yPFQ+KCZwYXJlbnQpCiB7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PgotaW5saW5lIExheW91dENoaWxkSXRlcmF0b3I8VD46OkxheW91dENoaWxkSXRlcmF0b3IoY29u
c3QgQ29udGFpbmVyJiBwYXJlbnQsIGNvbnN0IFQqIGN1cnJlbnQpCitpbmxpbmUgTGF5b3V0Q2hp
bGRJdGVyYXRvcjxUPjo6TGF5b3V0Q2hpbGRJdGVyYXRvcihjb25zdCBDb250YWluZXJCb3gmIHBh
cmVudCwgY29uc3QgVCogY3VycmVudCkKICAgICA6IExheW91dEl0ZXJhdG9yPFQ+KCZwYXJlbnQs
IGN1cnJlbnQpCiB7CiB9CkBAIC03OCw3ICs3OCw3IEBAIGlubGluZSBMYXlvdXRDaGlsZEl0ZXJh
dG9yPFQ+JiBMYXlvdXRDaGlsZEl0ZXJhdG9yPFQ+OjpvcGVyYXRvcisrKCkKIC8vIExheW91dENo
aWxkSXRlcmF0b3JBZGFwdGVyCiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5lIExheW91
dENoaWxkSXRlcmF0b3JBZGFwdGVyPFQ+OjpMYXlvdXRDaGlsZEl0ZXJhdG9yQWRhcHRlcihjb25z
dCBDb250YWluZXImIHBhcmVudCkKK2lubGluZSBMYXlvdXRDaGlsZEl0ZXJhdG9yQWRhcHRlcjxU
Pjo6TGF5b3V0Q2hpbGRJdGVyYXRvckFkYXB0ZXIoY29uc3QgQ29udGFpbmVyQm94JiBwYXJlbnQp
CiAgICAgOiBtX3BhcmVudChwYXJlbnQpCiB7CiB9CkBAIC0xMDgsNyArMTA4LDcgQEAgaW5saW5l
IGNvbnN0IFQqIExheW91dENoaWxkSXRlcmF0b3JBZGFwdGVyPFQ+OjpsYXN0KCkgY29uc3QKIH0K
IAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgTGF5b3V0Q2hpbGRJdGVyYXRvckFkYXB0
ZXI8VD4gY2hpbGRyZW5PZlR5cGUoY29uc3QgQ29udGFpbmVyJiBwYXJlbnQpCitpbmxpbmUgTGF5
b3V0Q2hpbGRJdGVyYXRvckFkYXB0ZXI8VD4gY2hpbGRyZW5PZlR5cGUoY29uc3QgQ29udGFpbmVy
Qm94JiBwYXJlbnQpCiB7CiAgICAgcmV0dXJuIExheW91dENoaWxkSXRlcmF0b3JBZGFwdGVyPFQ+
KHBhcmVudCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJl
ZS9MYXlvdXRDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUv
TGF5b3V0Q29udGFpbmVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjBjYzgz
NGQzMmM5NGQ0ZjYxZTc2YmRlYmU2ZDc2OWU0ZDljZDk0My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJl
ZS9MYXlvdXRDb250YWluZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTA5ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiTGF5b3V0Q29udGFpbmVy
LmgiCi0KLSNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKLQotI2luY2x1ZGUg
IlJlbmRlclN0eWxlLmgiCi0jaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotbmFtZXNwYWNlIExheW91dCB7Ci0KLVdURl9NQUtFX0lTT19BTExP
Q0FURURfSU1QTChDb250YWluZXIpOwotCi1Db250YWluZXI6OkNvbnRhaW5lcihPcHRpb25hbDxF
bGVtZW50QXR0cmlidXRlcz4gYXR0cmlidXRlcywgUmVuZGVyU3R5bGUmJiBzdHlsZSwgQmFzZVR5
cGVGbGFncyBiYXNlVHlwZUZsYWdzKQotICAgIDogQm94KGF0dHJpYnV0ZXMsIFdURk1vdmUoc3R5
bGUpLCBiYXNlVHlwZUZsYWdzIHwgQ29udGFpbmVyRmxhZykKLXsKLX0KLQotY29uc3QgQm94KiBD
b250YWluZXI6OmZpcnN0SW5GbG93Q2hpbGQoKSBjb25zdAotewotICAgIGlmIChhdXRvKiBmaXJz
dENoaWxkID0gdGhpcy0+Zmlyc3RDaGlsZCgpKSB7Ci0gICAgICAgIGlmIChmaXJzdENoaWxkLT5p
c0luRmxvdygpKQotICAgICAgICAgICAgcmV0dXJuIGZpcnN0Q2hpbGQ7Ci0gICAgICAgIHJldHVy
biBmaXJzdENoaWxkLT5uZXh0SW5GbG93U2libGluZygpOwotICAgIH0KLSAgICByZXR1cm4gbnVs
bHB0cjsKLX0KLQotY29uc3QgQm94KiBDb250YWluZXI6OmZpcnN0SW5GbG93T3JGbG9hdGluZ0No
aWxkKCkgY29uc3QKLXsKLSAgICBpZiAoYXV0byogZmlyc3RDaGlsZCA9IHRoaXMtPmZpcnN0Q2hp
bGQoKSkgewotICAgICAgICBpZiAoZmlyc3RDaGlsZC0+aXNJbkZsb3coKSB8fCBmaXJzdENoaWxk
LT5pc0Zsb2F0aW5nUG9zaXRpb25lZCgpKQotICAgICAgICAgICAgcmV0dXJuIGZpcnN0Q2hpbGQ7
Ci0gICAgICAgIHJldHVybiBmaXJzdENoaWxkLT5uZXh0SW5GbG93T3JGbG9hdGluZ1NpYmxpbmco
KTsKLSAgICB9Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLWNvbnN0IEJveCogQ29udGFpbmVy
OjpsYXN0SW5GbG93Q2hpbGQoKSBjb25zdAotewotICAgIGlmIChhdXRvKiBsYXN0Q2hpbGQgPSB0
aGlzLT5sYXN0Q2hpbGQoKSkgewotICAgICAgICBpZiAobGFzdENoaWxkLT5pc0luRmxvdygpKQot
ICAgICAgICAgICAgcmV0dXJuIGxhc3RDaGlsZDsKLSAgICAgICAgcmV0dXJuIGxhc3RDaGlsZC0+
cHJldmlvdXNJbkZsb3dTaWJsaW5nKCk7Ci0gICAgfQotICAgIHJldHVybiBudWxscHRyOwotfQot
Ci1jb25zdCBCb3gqIENvbnRhaW5lcjo6bGFzdEluRmxvd09yRmxvYXRpbmdDaGlsZCgpIGNvbnN0
Ci17Ci0gICAgaWYgKGF1dG8qIGxhc3RDaGlsZCA9IHRoaXMtPmxhc3RDaGlsZCgpKSB7Ci0gICAg
ICAgIGlmIChsYXN0Q2hpbGQtPmlzSW5GbG93KCkgfHwgbGFzdENoaWxkLT5pc0Zsb2F0aW5nUG9z
aXRpb25lZCgpKQotICAgICAgICAgICAgcmV0dXJuIGxhc3RDaGlsZDsKLSAgICAgICAgcmV0dXJu
IGxhc3RDaGlsZC0+cHJldmlvdXNJbkZsb3dPckZsb2F0aW5nU2libGluZygpOwotICAgIH0KLSAg
ICByZXR1cm4gbnVsbHB0cjsKLX0KLQotdm9pZCBDb250YWluZXI6OnNldEZpcnN0Q2hpbGQoQm94
JiBjaGlsZEJveCkKLXsKLSAgICBtX2ZpcnN0Q2hpbGQgPSAmY2hpbGRCb3g7Ci19Ci0KLXZvaWQg
Q29udGFpbmVyOjpzZXRMYXN0Q2hpbGQoQm94JiBjaGlsZEJveCkKLXsKLSAgICBtX2xhc3RDaGls
ZCA9ICZjaGlsZEJveDsKLX0KLQotdm9pZCBDb250YWluZXI6OmFwcGVuZENoaWxkKEJveCYgY2hp
bGRCb3gpCi17Ci0gICAgY2hpbGRCb3guc2V0UGFyZW50KCp0aGlzKTsKLQotICAgIGlmIChtX2xh
c3RDaGlsZCkgewotICAgICAgICBtX2xhc3RDaGlsZC0+c2V0TmV4dFNpYmxpbmcoY2hpbGRCb3gp
OwotICAgICAgICBjaGlsZEJveC5zZXRQcmV2aW91c1NpYmxpbmcoKm1fbGFzdENoaWxkKTsKLSAg
ICB9IGVsc2UKLSAgICAgICAgbV9maXJzdENoaWxkID0gJmNoaWxkQm94OwotCi0gICAgbV9sYXN0
Q2hpbGQgPSAmY2hpbGRCb3g7Ci19Ci0KLX0KLX0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Q29udGFpbmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRDb250YWluZXIuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggOTBhMjFiYWFkNTAyYjcwMjEzYzNhNWRlZGVjYmI5MWVkMzNhNWI2My4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRDb250YWluZXIuaAorKysgL2Rldi9udWxsCkBA
IC0xLDcyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShM
QVlPVVRfRk9STUFUVElOR19DT05URVhUKQotCi0jaW5jbHVkZSAiTGF5b3V0Qm94LmgiCi0jaW5j
bHVkZSA8d3RmL0lzb01hbGxvYy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFJl
bmRlclN0eWxlOwotCi1uYW1lc3BhY2UgTGF5b3V0IHsKLQotY2xhc3MgQ29udGFpbmVyIGZpbmFs
IDogcHVibGljIEJveCB7Ci0gICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChDb250YWluZXIpOwot
cHVibGljOgotICAgIENvbnRhaW5lcihPcHRpb25hbDxFbGVtZW50QXR0cmlidXRlcz4sIFJlbmRl
clN0eWxlJiYsIEJhc2VUeXBlRmxhZ3MgPSBDb250YWluZXJGbGFnKTsKLQotICAgIGNvbnN0IEJv
eCogZmlyc3RDaGlsZCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3RDaGlsZDsgfQotICAgIGNvbnN0
IEJveCogZmlyc3RJbkZsb3dDaGlsZCgpIGNvbnN0OwotICAgIGNvbnN0IEJveCogZmlyc3RJbkZs
b3dPckZsb2F0aW5nQ2hpbGQoKSBjb25zdDsKLSAgICBjb25zdCBCb3gqIGxhc3RDaGlsZCgpIGNv
bnN0IHsgcmV0dXJuIG1fbGFzdENoaWxkOyB9Ci0gICAgY29uc3QgQm94KiBsYXN0SW5GbG93Q2hp
bGQoKSBjb25zdDsKLSAgICBjb25zdCBCb3gqIGxhc3RJbkZsb3dPckZsb2F0aW5nQ2hpbGQoKSBj
b25zdDsKLQotICAgIC8vIEZJWE1FOiBUaGlzIGlzIGN1cnJlbnRseSBuZWVkZWQgZm9yIHN0eWxl
IHVwZGF0ZXMuCi0gICAgQm94KiBmaXJzdENoaWxkKCkgeyByZXR1cm4gbV9maXJzdENoaWxkOyB9
Ci0KLSAgICBib29sIGhhc0NoaWxkKCkgY29uc3QgeyByZXR1cm4gZmlyc3RDaGlsZCgpOyB9Ci0g
ICAgYm9vbCBoYXNJbkZsb3dDaGlsZCgpIGNvbnN0IHsgcmV0dXJuIGZpcnN0SW5GbG93Q2hpbGQo
KTsgfQotICAgIGJvb2wgaGFzSW5GbG93T3JGbG9hdGluZ0NoaWxkKCkgY29uc3QgeyByZXR1cm4g
Zmlyc3RJbkZsb3dPckZsb2F0aW5nQ2hpbGQoKTsgfQotCi0gICAgdm9pZCBzZXRGaXJzdENoaWxk
KEJveCYpOwotICAgIHZvaWQgc2V0TGFzdENoaWxkKEJveCYpOwotICAgIHZvaWQgYXBwZW5kQ2hp
bGQoQm94Jik7Ci0KLXByaXZhdGU6Ci0gICAgQm94KiBtX2ZpcnN0Q2hpbGQgeyBudWxscHRyIH07
Ci0gICAgQm94KiBtX2xhc3RDaGlsZCB7IG51bGxwdHIgfTsKLX07Ci0KLX0KLX0KLQotU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19MQVlPVVRfQk9YKENvbnRhaW5lciwgaXNDb250YWluZXIoKSkKLQot
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlv
dXRDb250YWluZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5
b3V0Q29udGFpbmVyQm94LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMWI4OTFiNjg5YjAzYmRjNWE4OTVlN2Zh
MzVjYTAyNTExYjIxZjhiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2xheW91dHRyZWUvTGF5b3V0Q29udGFpbmVyQm94LmNwcApAQCAtMCwwICsxLDEwOSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMYXlvdXRDb250YWluZXJC
b3guaCIKKworI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQorCisjaW5jbHVk
ZSAiUmVuZGVyU3R5bGUuaCIKKyNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgTGF5b3V0IHsKKworV1RGX01BS0VfSVNPX0FM
TE9DQVRFRF9JTVBMKENvbnRhaW5lckJveCk7CisKK0NvbnRhaW5lckJveDo6Q29udGFpbmVyQm94
KE9wdGlvbmFsPEVsZW1lbnRBdHRyaWJ1dGVzPiBhdHRyaWJ1dGVzLCBSZW5kZXJTdHlsZSYmIHN0
eWxlLCBCYXNlVHlwZUZsYWdzIGJhc2VUeXBlRmxhZ3MpCisgICAgOiBCb3goYXR0cmlidXRlcywg
V1RGTW92ZShzdHlsZSksIGJhc2VUeXBlRmxhZ3MgfCBDb250YWluZXJCb3hGbGFnKQoreworfQor
Citjb25zdCBCb3gqIENvbnRhaW5lckJveDo6Zmlyc3RJbkZsb3dDaGlsZCgpIGNvbnN0Cit7Cisg
ICAgaWYgKGF1dG8qIGZpcnN0Q2hpbGQgPSB0aGlzLT5maXJzdENoaWxkKCkpIHsKKyAgICAgICAg
aWYgKGZpcnN0Q2hpbGQtPmlzSW5GbG93KCkpCisgICAgICAgICAgICByZXR1cm4gZmlyc3RDaGls
ZDsKKyAgICAgICAgcmV0dXJuIGZpcnN0Q2hpbGQtPm5leHRJbkZsb3dTaWJsaW5nKCk7CisgICAg
fQorICAgIHJldHVybiBudWxscHRyOworfQorCitjb25zdCBCb3gqIENvbnRhaW5lckJveDo6Zmly
c3RJbkZsb3dPckZsb2F0aW5nQ2hpbGQoKSBjb25zdAoreworICAgIGlmIChhdXRvKiBmaXJzdENo
aWxkID0gdGhpcy0+Zmlyc3RDaGlsZCgpKSB7CisgICAgICAgIGlmIChmaXJzdENoaWxkLT5pc0lu
RmxvdygpIHx8IGZpcnN0Q2hpbGQtPmlzRmxvYXRpbmdQb3NpdGlvbmVkKCkpCisgICAgICAgICAg
ICByZXR1cm4gZmlyc3RDaGlsZDsKKyAgICAgICAgcmV0dXJuIGZpcnN0Q2hpbGQtPm5leHRJbkZs
b3dPckZsb2F0aW5nU2libGluZygpOworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwor
Y29uc3QgQm94KiBDb250YWluZXJCb3g6Omxhc3RJbkZsb3dDaGlsZCgpIGNvbnN0Cit7CisgICAg
aWYgKGF1dG8qIGxhc3RDaGlsZCA9IHRoaXMtPmxhc3RDaGlsZCgpKSB7CisgICAgICAgIGlmIChs
YXN0Q2hpbGQtPmlzSW5GbG93KCkpCisgICAgICAgICAgICByZXR1cm4gbGFzdENoaWxkOworICAg
ICAgICByZXR1cm4gbGFzdENoaWxkLT5wcmV2aW91c0luRmxvd1NpYmxpbmcoKTsKKyAgICB9Cisg
ICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK2NvbnN0IEJveCogQ29udGFpbmVyQm94OjpsYXN0SW5G
bG93T3JGbG9hdGluZ0NoaWxkKCkgY29uc3QKK3sKKyAgICBpZiAoYXV0byogbGFzdENoaWxkID0g
dGhpcy0+bGFzdENoaWxkKCkpIHsKKyAgICAgICAgaWYgKGxhc3RDaGlsZC0+aXNJbkZsb3coKSB8
fCBsYXN0Q2hpbGQtPmlzRmxvYXRpbmdQb3NpdGlvbmVkKCkpCisgICAgICAgICAgICByZXR1cm4g
bGFzdENoaWxkOworICAgICAgICByZXR1cm4gbGFzdENoaWxkLT5wcmV2aW91c0luRmxvd09yRmxv
YXRpbmdTaWJsaW5nKCk7CisgICAgfQorICAgIHJldHVybiBudWxscHRyOworfQorCit2b2lkIENv
bnRhaW5lckJveDo6c2V0Rmlyc3RDaGlsZChCb3gmIGNoaWxkQm94KQoreworICAgIG1fZmlyc3RD
aGlsZCA9ICZjaGlsZEJveDsKK30KKwordm9pZCBDb250YWluZXJCb3g6OnNldExhc3RDaGlsZChC
b3gmIGNoaWxkQm94KQoreworICAgIG1fbGFzdENoaWxkID0gJmNoaWxkQm94OworfQorCit2b2lk
IENvbnRhaW5lckJveDo6YXBwZW5kQ2hpbGQoQm94JiBjaGlsZEJveCkKK3sKKyAgICBjaGlsZEJv
eC5zZXRQYXJlbnQoKnRoaXMpOworCisgICAgaWYgKG1fbGFzdENoaWxkKSB7CisgICAgICAgIG1f
bGFzdENoaWxkLT5zZXROZXh0U2libGluZyhjaGlsZEJveCk7CisgICAgICAgIGNoaWxkQm94LnNl
dFByZXZpb3VzU2libGluZygqbV9sYXN0Q2hpbGQpOworICAgIH0gZWxzZQorICAgICAgICBtX2Zp
cnN0Q2hpbGQgPSAmY2hpbGRCb3g7CisKKyAgICBtX2xhc3RDaGlsZCA9ICZjaGlsZEJveDsKK30K
KworfQorfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0
dHJlZS9MYXlvdXRDb250YWluZXJCb3guaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0
cmVlL0xheW91dENvbnRhaW5lckJveC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAwODMwOTU5ZjBlNmI4Y2RmNzRj
MTBmYmFmNzY1ODU1MzgxNDVmZDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRDb250YWluZXJCb3guaApAQCAtMCwwICsxLDcyIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdf
Q09OVEVYVCkKKworI2luY2x1ZGUgIkxheW91dEJveC5oIgorI2luY2x1ZGUgPHd0Zi9Jc29NYWxs
b2MuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBSZW5kZXJTdHlsZTsKKworbmFt
ZXNwYWNlIExheW91dCB7CisKK2NsYXNzIENvbnRhaW5lckJveCBmaW5hbCA6IHB1YmxpYyBCb3gg
eworICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoQ29udGFpbmVyQm94KTsKK3B1YmxpYzoKKyAg
ICBDb250YWluZXJCb3goT3B0aW9uYWw8RWxlbWVudEF0dHJpYnV0ZXM+LCBSZW5kZXJTdHlsZSYm
LCBCYXNlVHlwZUZsYWdzID0gQm94OjpDb250YWluZXJCb3hGbGFnKTsKKworICAgIGNvbnN0IEJv
eCogZmlyc3RDaGlsZCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3RDaGlsZDsgfQorICAgIGNvbnN0
IEJveCogZmlyc3RJbkZsb3dDaGlsZCgpIGNvbnN0OworICAgIGNvbnN0IEJveCogZmlyc3RJbkZs
b3dPckZsb2F0aW5nQ2hpbGQoKSBjb25zdDsKKyAgICBjb25zdCBCb3gqIGxhc3RDaGlsZCgpIGNv
bnN0IHsgcmV0dXJuIG1fbGFzdENoaWxkOyB9CisgICAgY29uc3QgQm94KiBsYXN0SW5GbG93Q2hp
bGQoKSBjb25zdDsKKyAgICBjb25zdCBCb3gqIGxhc3RJbkZsb3dPckZsb2F0aW5nQ2hpbGQoKSBj
b25zdDsKKworICAgIC8vIEZJWE1FOiBUaGlzIGlzIGN1cnJlbnRseSBuZWVkZWQgZm9yIHN0eWxl
IHVwZGF0ZXMuCisgICAgQm94KiBmaXJzdENoaWxkKCkgeyByZXR1cm4gbV9maXJzdENoaWxkOyB9
CisKKyAgICBib29sIGhhc0NoaWxkKCkgY29uc3QgeyByZXR1cm4gZmlyc3RDaGlsZCgpOyB9Cisg
ICAgYm9vbCBoYXNJbkZsb3dDaGlsZCgpIGNvbnN0IHsgcmV0dXJuIGZpcnN0SW5GbG93Q2hpbGQo
KTsgfQorICAgIGJvb2wgaGFzSW5GbG93T3JGbG9hdGluZ0NoaWxkKCkgY29uc3QgeyByZXR1cm4g
Zmlyc3RJbkZsb3dPckZsb2F0aW5nQ2hpbGQoKTsgfQorCisgICAgdm9pZCBzZXRGaXJzdENoaWxk
KEJveCYpOworICAgIHZvaWQgc2V0TGFzdENoaWxkKEJveCYpOworICAgIHZvaWQgYXBwZW5kQ2hp
bGQoQm94Jik7CisKK3ByaXZhdGU6CisgICAgQm94KiBtX2ZpcnN0Q2hpbGQgeyBudWxscHRyIH07
CisgICAgQm94KiBtX2xhc3RDaGlsZCB7IG51bGxwdHIgfTsKK307CisKK30KK30KKworU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19MQVlPVVRfQk9YKENvbnRhaW5lckJveCwgaXNDb250YWluZXJCb3go
KSkKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJl
ZS9MYXlvdXREZXNjZW5kYW50SXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlv
dXR0cmVlL0xheW91dERlc2NlbmRhbnRJdGVyYXRvci5oCmluZGV4IGI1ZWJjZWM3NzAxMmIyZGI0
OTE2YWQ4OTI3MzQ4NGI0NzE4OGNhMDguLmVlOGY2MTI4MjFiMDRlMTgzZjMyY2UyZTg1MWJlNjU3
MmUxZjFkYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xh
eW91dERlc2NlbmRhbnRJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlv
dXR0cmVlL0xheW91dERlc2NlbmRhbnRJdGVyYXRvci5oCkBAIC0zNSwyMSArMzUsMjEgQEAgbmFt
ZXNwYWNlIExheW91dCB7CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIGNsYXNzIExheW91dERlc2Nl
bmRhbnRJdGVyYXRvciA6IHB1YmxpYyBMYXlvdXRJdGVyYXRvcjxUPiB7CiBwdWJsaWM6Ci0gICAg
TGF5b3V0RGVzY2VuZGFudEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lciYgcm9vdCk7Ci0gICAgTGF5
b3V0RGVzY2VuZGFudEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lciYgcm9vdCwgY29uc3QgVCogY3Vy
cmVudCk7CisgICAgTGF5b3V0RGVzY2VuZGFudEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lckJveCYg
cm9vdCk7CisgICAgTGF5b3V0RGVzY2VuZGFudEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lckJveCYg
cm9vdCwgY29uc3QgVCogY3VycmVudCk7CiAgICAgTGF5b3V0RGVzY2VuZGFudEl0ZXJhdG9yJiBv
cGVyYXRvcisrKCk7CiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIGNsYXNzIExheW91dERl
c2NlbmRhbnRJdGVyYXRvckFkYXB0ZXIgewogcHVibGljOgotICAgIExheW91dERlc2NlbmRhbnRJ
dGVyYXRvckFkYXB0ZXIoY29uc3QgQ29udGFpbmVyJiByb290KTsKKyAgICBMYXlvdXREZXNjZW5k
YW50SXRlcmF0b3JBZGFwdGVyKGNvbnN0IENvbnRhaW5lckJveCYgcm9vdCk7CiAgICAgTGF5b3V0
RGVzY2VuZGFudEl0ZXJhdG9yPFQ+IGJlZ2luKCk7CiAgICAgTGF5b3V0RGVzY2VuZGFudEl0ZXJh
dG9yPFQ+IGVuZCgpOwogICAgIExheW91dERlc2NlbmRhbnRJdGVyYXRvcjxUPiBhdChjb25zdCBU
Jik7CiAKIHByaXZhdGU6Ci0gICAgY29uc3QgQ29udGFpbmVyJiBtX3Jvb3Q7CisgICAgY29uc3Qg
Q29udGFpbmVyQm94JiBtX3Jvb3Q7CiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gTGF5b3V0
RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxUPiBkZXNjZW5kYW50c09mVHlwZShjb25zdCBCb3gm
KTsKQEAgLTU3LDEzICs1NywxMyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gTGF5b3V0RGVzY2Vu
ZGFudEl0ZXJhdG9yQWRhcHRlcjxUPiBkZXNjZW5kYW50c09mVHlwZShjb25zdAogLy8gTGF5b3V0
RGVzY2VuZGFudEl0ZXJhdG9yCiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5lIExheW91
dERlc2NlbmRhbnRJdGVyYXRvcjxUPjo6TGF5b3V0RGVzY2VuZGFudEl0ZXJhdG9yKGNvbnN0IENv
bnRhaW5lciYgcm9vdCkKK2lubGluZSBMYXlvdXREZXNjZW5kYW50SXRlcmF0b3I8VD46OkxheW91
dERlc2NlbmRhbnRJdGVyYXRvcihjb25zdCBDb250YWluZXJCb3gmIHJvb3QpCiAgICAgOiBMYXlv
dXRJdGVyYXRvcjxUPigmcm9vdCkKIHsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxp
bmUgTGF5b3V0RGVzY2VuZGFudEl0ZXJhdG9yPFQ+OjpMYXlvdXREZXNjZW5kYW50SXRlcmF0b3Io
Y29uc3QgQ29udGFpbmVyJiByb290LCBjb25zdCBUKiBjdXJyZW50KQoraW5saW5lIExheW91dERl
c2NlbmRhbnRJdGVyYXRvcjxUPjo6TGF5b3V0RGVzY2VuZGFudEl0ZXJhdG9yKGNvbnN0IENvbnRh
aW5lckJveCYgcm9vdCwgY29uc3QgVCogY3VycmVudCkKICAgICA6IExheW91dEl0ZXJhdG9yPFQ+
KCZyb290LCBjdXJyZW50KQogewogfQpAQCAtNzcsNyArNzcsNyBAQCBpbmxpbmUgTGF5b3V0RGVz
Y2VuZGFudEl0ZXJhdG9yPFQ+JiBMYXlvdXREZXNjZW5kYW50SXRlcmF0b3I8VD46Om9wZXJhdG9y
KysoKQogLy8gTGF5b3V0RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcgogCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KLWlubGluZSBMYXlvdXREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyPFQ+OjpMYXlv
dXREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyKGNvbnN0IENvbnRhaW5lciYgcm9vdCkKK2lubGlu
ZSBMYXlvdXREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyPFQ+OjpMYXlvdXREZXNjZW5kYW50SXRl
cmF0b3JBZGFwdGVyKGNvbnN0IENvbnRhaW5lckJveCYgcm9vdCkKICAgICA6IG1fcm9vdChyb290
KQogewogfQpAQCAtMTAzLDcgKzEwMyw3IEBAIGlubGluZSBMYXlvdXREZXNjZW5kYW50SXRlcmF0
b3I8VD4gTGF5b3V0RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxUPjo6YXQoY29uc3QKIC8vIFN0
YW5kYWxvbmUgZnVuY3Rpb25zCiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5lIExheW91
dERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXI8VD4gZGVzY2VuZGFudHNPZlR5cGUoY29uc3QgQ29u
dGFpbmVyJiByb290KQoraW5saW5lIExheW91dERlc2NlbmRhbnRJdGVyYXRvckFkYXB0ZXI8VD4g
ZGVzY2VuZGFudHNPZlR5cGUoY29uc3QgQ29udGFpbmVyQm94JiByb290KQogewogICAgIHJldHVy
biBMYXlvdXREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyPFQ+KHJvb3QpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0SXRlcmF0b3IuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEl0ZXJhdG9yLmgKaW5kZXggMzMx
NDkxMTFiNDMwNGJjOWIxMDQyZWMwZDIyODA5NWVmY2NmY2JhOC4uZDFiZDk4YjMxMzg2ZmZjNmRh
NTE1NWI1Zjc0NjU5YTllMWVlMDBiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2xheW91dHRyZWUvTGF5b3V0SXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
bGF5b3V0dHJlZS9MYXlvdXRJdGVyYXRvci5oCkBAIC0zMyw4ICszMyw4IEBAIG5hbWVzcGFjZSBM
YXlvdXQgewogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBjbGFzcyBMYXlvdXRJdGVyYXRvciB7CiBw
dWJsaWM6Ci0gICAgTGF5b3V0SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyKiByb290KTsKLSAgICBM
YXlvdXRJdGVyYXRvcihjb25zdCBDb250YWluZXIqIHJvb3QsIGNvbnN0IFQqIGN1cnJlbnQpOwor
ICAgIExheW91dEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lckJveCogcm9vdCk7CisgICAgTGF5b3V0
SXRlcmF0b3IoY29uc3QgQ29udGFpbmVyQm94KiByb290LCBjb25zdCBUKiBjdXJyZW50KTsKIAog
ICAgIGNvbnN0IFQmIG9wZXJhdG9yKigpIGNvbnN0OwogICAgIGNvbnN0IFQqIG9wZXJhdG9yLT4o
KSBjb25zdDsKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIExheW91dEl0ZXJhdG9yJiB0
cmF2ZXJzZUFuY2VzdG9yKCk7CiAKIHByaXZhdGU6Ci0gICAgY29uc3QgQ29udGFpbmVyKiBtX3Jv
b3Q7CisgICAgY29uc3QgQ29udGFpbmVyQm94KiBtX3Jvb3Q7CiAgICAgY29uc3QgVCogbV9jdXJy
ZW50OwogfTsKIApAQCAtNjYsMTIgKzY2LDEyIEBAIGlubGluZSBjb25zdCBCb3gqIGZpcnN0Q2hp
bGQoVSYgb2JqZWN0KQogCiBpbmxpbmUgY29uc3QgQm94KiBmaXJzdENoaWxkKGNvbnN0IEJveCYg
Ym94KQogewotICAgIGlmIChpczxDb250YWluZXI+KGJveCkpCi0gICAgICAgIHJldHVybiBkb3du
Y2FzdDxDb250YWluZXI+KGJveCkuZmlyc3RDaGlsZCgpOworICAgIGlmIChpczxDb250YWluZXJC
b3g+KGJveCkpCisgICAgICAgIHJldHVybiBkb3duY2FzdDxDb250YWluZXJCb3g+KGJveCkuZmly
c3RDaGlsZCgpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCi1pbmxpbmUgY29uc3QgQm94KiBu
ZXh0QW5jZXN0b3JTaWJsaW5nKGNvbnN0IEJveCYgY3VycmVudCwgY29uc3QgQ29udGFpbmVyKiBz
dGF5V2l0aGluKQoraW5saW5lIGNvbnN0IEJveCogbmV4dEFuY2VzdG9yU2libGluZyhjb25zdCBC
b3gmIGN1cnJlbnQsIGNvbnN0IENvbnRhaW5lckJveCogc3RheVdpdGhpbikKIHsKICAgICBmb3Ig
KGF1dG8qIGFuY2VzdG9yID0gY3VycmVudC5wYXJlbnQoKTsgYW5jZXN0b3I7IGFuY2VzdG9yID0g
YW5jZXN0b3ItPnBhcmVudCgpKSB7CiAgICAgICAgIGlmIChhbmNlc3RvciA9PSBzdGF5V2l0aGlu
KQpAQCAtODMsNyArODMsNyBAQCBpbmxpbmUgY29uc3QgQm94KiBuZXh0QW5jZXN0b3JTaWJsaW5n
KGNvbnN0IEJveCYgY3VycmVudCwgY29uc3QgQ29udGFpbmVyKiBzdGF5VwogfQogCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVT4KLWlubGluZSBjb25zdCBCb3gqIG5leHQoY29uc3QgVSYgY3VycmVudCwg
Y29uc3QgQ29udGFpbmVyKiBzdGF5V2l0aGluKQoraW5saW5lIGNvbnN0IEJveCogbmV4dChjb25z
dCBVJiBjdXJyZW50LCBjb25zdCBDb250YWluZXJCb3gqIHN0YXlXaXRoaW4pCiB7CiAgICAgaWYg
KGF1dG8qIGNoaWxkID0gZmlyc3RDaGlsZChjdXJyZW50KSkKICAgICAgICAgcmV0dXJuIGNoaWxk
OwpAQCAtOTcsNyArOTcsNyBAQCBpbmxpbmUgY29uc3QgQm94KiBuZXh0KGNvbnN0IFUmIGN1cnJl
bnQsIGNvbnN0IENvbnRhaW5lciogc3RheVdpdGhpbikKICAgICByZXR1cm4gbmV4dEFuY2VzdG9y
U2libGluZyhjdXJyZW50LCBzdGF5V2l0aGluKTsKIH0KIAotaW5saW5lIGNvbnN0IEJveCogbmV4
dFNraXBwaW5nQ2hpbGRyZW4oQm94JiBjdXJyZW50LCBjb25zdCBDb250YWluZXIqIHN0YXlXaXRo
aW4pCitpbmxpbmUgY29uc3QgQm94KiBuZXh0U2tpcHBpbmdDaGlsZHJlbihCb3gmIGN1cnJlbnQs
IGNvbnN0IENvbnRhaW5lckJveCogc3RheVdpdGhpbikKIHsKICAgICBpZiAoJmN1cnJlbnQgPT0g
c3RheVdpdGhpbikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xNjgsNyArMTY4LDcgQEAg
aW5saW5lIGNvbnN0IFQqIGZpcnN0V2l0aGluKGNvbnN0IFUmIHN0YXlXaXRoaW4pCiB9CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotaW5saW5lIGNvbnN0IFQqIG5leHQoY29u
c3QgVSYgY3VycmVudCwgY29uc3QgQ29udGFpbmVyKiBzdGF5V2l0aGluKQoraW5saW5lIGNvbnN0
IFQqIG5leHQoY29uc3QgVSYgY3VycmVudCwgY29uc3QgQ29udGFpbmVyQm94KiBzdGF5V2l0aGlu
KQogewogICAgIGF1dG8qIGRlc2NlbmRhbnQgPSBMYXlvdXRCb3hUcmF2ZXJzYWw6Om5leHQoY3Vy
cmVudCwgc3RheVdpdGhpbik7CiAgICAgd2hpbGUgKGRlc2NlbmRhbnQgJiYgIWlzTGF5b3V0Qm94
T2ZUeXBlPFQ+KCpkZXNjZW5kYW50KSkKQEAgLTE4MSwxNCArMTgxLDE0IEBAIGlubGluZSBjb25z
dCBUKiBuZXh0KGNvbnN0IFUmIGN1cnJlbnQsIGNvbnN0IENvbnRhaW5lciogc3RheVdpdGhpbikK
IC8vIExheW91dEl0ZXJhdG9yCiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5lIExheW91
dEl0ZXJhdG9yPFQ+OjpMYXlvdXRJdGVyYXRvcihjb25zdCBDb250YWluZXIqIHJvb3QpCitpbmxp
bmUgTGF5b3V0SXRlcmF0b3I8VD46OkxheW91dEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lckJveCog
cm9vdCkKICAgICA6IG1fcm9vdChyb290KQogICAgICwgbV9jdXJyZW50KG51bGxwdHIpCiB7CiB9
CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5lIExheW91dEl0ZXJhdG9yPFQ+OjpMYXlv
dXRJdGVyYXRvcihjb25zdCBDb250YWluZXIqIHJvb3QsIGNvbnN0IFQqIGN1cnJlbnQpCitpbmxp
bmUgTGF5b3V0SXRlcmF0b3I8VD46OkxheW91dEl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lckJveCog
cm9vdCwgY29uc3QgVCogY3VycmVudCkKICAgICA6IG1fcm9vdChyb290KQogICAgICwgbV9jdXJy
ZW50KGN1cnJlbnQpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0
dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0
dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAKaW5kZXggM2UzYTg5MzU4YzZmYmVhMzM3NzhmNjFm
ZmY4OTM2MGE3MGQ2ZTViMC4uMjJmNzZkNzE0ZGVmNjRhMmY5YjdhNGJlNWFhN2JjNzczZTU5Mzll
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJl
ZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91
dFRyZWVCdWlsZGVyLmNwcApAQCAtMzksNyArMzksNyBAQAogI2luY2x1ZGUgIkludmFsaWRhdGlv
blN0YXRlLmgiCiAjaW5jbHVkZSAiTGF5b3V0Qm94LmgiCiAjaW5jbHVkZSAiTGF5b3V0Q2hpbGRJ
dGVyYXRvci5oIgotI2luY2x1ZGUgIkxheW91dENvbnRhaW5lci5oIgorI2luY2x1ZGUgIkxheW91
dENvbnRhaW5lckJveC5oIgogI2luY2x1ZGUgIkxheW91dENvbnRleHQuaCIKICNpbmNsdWRlICJM
YXlvdXREZXNjZW5kYW50SXRlcmF0b3IuaCIKICNpbmNsdWRlICJMYXlvdXRJbmxpbmVUZXh0Qm94
LmgiCkBAIC02Nyw3ICs2Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBMYXlv
dXQgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoTGF5b3V0VHJlZUNvbnRlbnQpOwot
TGF5b3V0VHJlZUNvbnRlbnQ6OkxheW91dFRyZWVDb250ZW50KGNvbnN0IFJlbmRlckJveCYgcm9v
dFJlbmRlcmVyLCBzdGQ6OnVuaXF1ZV9wdHI8Q29udGFpbmVyPiByb290TGF5b3V0Qm94KQorTGF5
b3V0VHJlZUNvbnRlbnQ6OkxheW91dFRyZWVDb250ZW50KGNvbnN0IFJlbmRlckJveCYgcm9vdFJl
bmRlcmVyLCBzdGQ6OnVuaXF1ZV9wdHI8Q29udGFpbmVyQm94PiByb290TGF5b3V0Qm94KQogICAg
IDogbV9yb290UmVuZGVyZXIocm9vdFJlbmRlcmVyKQogICAgICwgbV9yb290TGF5b3V0Qm94KFdU
Rk1vdmUocm9vdExheW91dEJveCkpCiB7CkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgTGF5b3V0VHJl
ZUNvbnRlbnQ6OmFkZExheW91dEJveEZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCYgcmVu
ZGVyZXIsIEJvCiAgICAgbV9sYXlvdXRCb3hUb1JlbmRlck9iamVjdC5hZGQoJmxheW91dEJveCwg
JnJlbmRlcmVyKTsKIH0KIAotc3RhdGljIHZvaWQgYXBwZW5kQ2hpbGQoQ29udGFpbmVyJiBwYXJl
bnQsIEJveCYgbmV3Q2hpbGQpCitzdGF0aWMgdm9pZCBhcHBlbmRDaGlsZChDb250YWluZXJCb3gm
IHBhcmVudCwgQm94JiBuZXdDaGlsZCkKIHsKICAgICBpZiAoIXBhcmVudC5oYXNDaGlsZCgpKSB7
CiAgICAgICAgIHBhcmVudC5zZXRGaXJzdENoaWxkKG5ld0NoaWxkKTsKQEAgLTEzMCw3ICsxMzAs
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8TGF5b3V0OjpMYXlvdXRUcmVlQ29udGVudD4gVHJlZUJ1aWxk
ZXI6OmJ1aWxkTGF5b3V0VHJlZShjb25zdCBSZQogICAgIHN0eWxlLnNldExvZ2ljYWxXaWR0aChM
ZW5ndGgocmVuZGVyVmlldy53aWR0aCgpLCBGaXhlZCkpOwogICAgIHN0eWxlLnNldExvZ2ljYWxI
ZWlnaHQoTGVuZ3RoKHJlbmRlclZpZXcuaGVpZ2h0KCksIEZpeGVkKSk7CiAKLSAgICBhdXRvIGxh
eW91dFRyZWVDb250ZW50ID0gbWFrZVVuaXF1ZTxMYXlvdXRUcmVlQ29udGVudD4ocmVuZGVyVmll
dywgbWFrZVVuaXF1ZTxDb250YWluZXI+KFdURjo6bnVsbG9wdCwgV1RGTW92ZShzdHlsZSkpKTsK
KyAgICBhdXRvIGxheW91dFRyZWVDb250ZW50ID0gbWFrZVVuaXF1ZTxMYXlvdXRUcmVlQ29udGVu
dD4ocmVuZGVyVmlldywgbWFrZVVuaXF1ZTxDb250YWluZXJCb3g+KFdURjo6bnVsbG9wdCwgV1RG
TW92ZShzdHlsZSkpKTsKICAgICBUcmVlQnVpbGRlcigqbGF5b3V0VHJlZUNvbnRlbnQpLmJ1aWxk
VHJlZSgpOwogICAgIHJldHVybiBsYXlvdXRUcmVlQ29udGVudDsKIH0KQEAgLTE2OSwxNSArMTY5
LDE1IEBAIEJveCYgVHJlZUJ1aWxkZXI6OmNyZWF0ZUxpbmVCcmVha0JveChib29sIGlzT3B0aW9u
YWwsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAgICAgcmV0dXJuIGJveDsKIH0KIAotQ29udGFpbmVy
JiBUcmVlQnVpbGRlcjo6Y3JlYXRlQ29udGFpbmVyKE9wdGlvbmFsPEJveDo6RWxlbWVudEF0dHJp
YnV0ZXM+IGVsZW1lbnRBdHRyaWJ1dGVzLCBSZW5kZXJTdHlsZSYmIHN0eWxlKQorQ29udGFpbmVy
Qm94JiBUcmVlQnVpbGRlcjo6Y3JlYXRlQ29udGFpbmVyKE9wdGlvbmFsPEJveDo6RWxlbWVudEF0
dHJpYnV0ZXM+IGVsZW1lbnRBdHRyaWJ1dGVzLCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogewotICAg
IGF1dG8gbmV3Q29udGFpbmVyID0gbWFrZVVuaXF1ZTxDb250YWluZXI+KGVsZW1lbnRBdHRyaWJ1
dGVzLCBXVEZNb3ZlKHN0eWxlKSk7CisgICAgYXV0byBuZXdDb250YWluZXIgPSBtYWtlVW5pcXVl
PENvbnRhaW5lckJveD4oZWxlbWVudEF0dHJpYnV0ZXMsIFdURk1vdmUoc3R5bGUpKTsKICAgICBh
dXRvJiBjb250YWluZXIgPSAqbmV3Q29udGFpbmVyOwogICAgIG1fbGF5b3V0VHJlZUNvbnRlbnQu
YWRkQ29udGFpbmVyKFdURk1vdmUobmV3Q29udGFpbmVyKSk7CiAgICAgcmV0dXJuIGNvbnRhaW5l
cjsKIH0KIAotQm94KiBUcmVlQnVpbGRlcjo6Y3JlYXRlTGF5b3V0Qm94KGNvbnN0IENvbnRhaW5l
ciYgcGFyZW50Q29udGFpbmVyLCBjb25zdCBSZW5kZXJPYmplY3QmIGNoaWxkUmVuZGVyZXIpCitC
b3gqIFRyZWVCdWlsZGVyOjpjcmVhdGVMYXlvdXRCb3goY29uc3QgQ29udGFpbmVyQm94JiBwYXJl
bnRDb250YWluZXIsIGNvbnN0IFJlbmRlck9iamVjdCYgY2hpbGRSZW5kZXJlcikKIHsKICAgICBh
dXRvIGVsZW1lbnRBdHRyaWJ1dGVzID0gW10gKGNvbnN0IFJlbmRlckVsZW1lbnQmIHJlbmRlcmVy
KSAtPiBPcHRpb25hbDxCb3g6OkVsZW1lbnRBdHRyaWJ1dGVzPiB7CiAgICAgICAgIGlmIChyZW5k
ZXJlci5pc0RvY3VtZW50RWxlbWVudFJlbmRlcmVyKCkpCkBAIC0yNzgsNyArMjc4LDcgQEAgQm94
KiBUcmVlQnVpbGRlcjo6Y3JlYXRlTGF5b3V0Qm94KGNvbnN0IENvbnRhaW5lciYgcGFyZW50Q29u
dGFpbmVyLCBjb25zdCBSZW5kZXIKICAgICByZXR1cm4gY2hpbGRMYXlvdXRCb3g7CiB9CiAKLXZv
aWQgVHJlZUJ1aWxkZXI6OmJ1aWxkVGFibGVTdHJ1Y3R1cmUoY29uc3QgUmVuZGVyVGFibGUmIHRh
YmxlUmVuZGVyZXIsIENvbnRhaW5lciYgdGFibGVXcmFwcGVyQm94KQordm9pZCBUcmVlQnVpbGRl
cjo6YnVpbGRUYWJsZVN0cnVjdHVyZShjb25zdCBSZW5kZXJUYWJsZSYgdGFibGVSZW5kZXJlciwg
Q29udGFpbmVyQm94JiB0YWJsZVdyYXBwZXJCb3gpCiB7CiAgICAgLy8gQ3JlYXRlIGNhcHRpb24g
YW5kIHRhYmxlIGJveC4KICAgICBhdXRvKiB0YWJsZUNoaWxkID0gdGFibGVSZW5kZXJlci5maXJz
dENoaWxkKCk7CkBAIC0yODYsNyArMjg2LDcgQEAgdm9pZCBUcmVlQnVpbGRlcjo6YnVpbGRUYWJs
ZVN0cnVjdHVyZShjb25zdCBSZW5kZXJUYWJsZSYgdGFibGVSZW5kZXJlciwgQ29udGFpbmUKICAg
ICAgICAgYXV0byYgY2FwdGlvblJlbmRlcmVyID0gKnRhYmxlQ2hpbGQ7CiAgICAgICAgIGF1dG8q
IGNhcHRpb25Cb3ggPSBjcmVhdGVMYXlvdXRCb3godGFibGVXcmFwcGVyQm94LCBjYXB0aW9uUmVu
ZGVyZXIpOwogICAgICAgICBhcHBlbmRDaGlsZCh0YWJsZVdyYXBwZXJCb3gsICpjYXB0aW9uQm94
KTsKLSAgICAgICAgYXV0byYgY2FwdGlvbkNvbnRhaW5lciA9IGRvd25jYXN0PENvbnRhaW5lcj4o
KmNhcHRpb25Cb3gpOworICAgICAgICBhdXRvJiBjYXB0aW9uQ29udGFpbmVyID0gZG93bmNhc3Q8
Q29udGFpbmVyQm94PigqY2FwdGlvbkJveCk7CiAgICAgICAgIGJ1aWxkU3ViVHJlZShkb3duY2Fz
dDxSZW5kZXJFbGVtZW50PihjYXB0aW9uUmVuZGVyZXIpLCBjYXB0aW9uQ29udGFpbmVyKTsKICAg
ICAgICAgdGFibGVDaGlsZCA9IHRhYmxlQ2hpbGQtPm5leHRTaWJsaW5nKCk7CiAgICAgfQpAQCAt
Mjk3LDI2ICsyOTcsMjYgQEAgdm9pZCBUcmVlQnVpbGRlcjo6YnVpbGRUYWJsZVN0cnVjdHVyZShj
b25zdCBSZW5kZXJUYWJsZSYgdGFibGVSZW5kZXJlciwgQ29udGFpbmUKICAgICB3aGlsZSAoc2Vj
dGlvblJlbmRlcmVyKSB7CiAgICAgICAgIGF1dG8qIHNlY3Rpb25Cb3ggPSBjcmVhdGVMYXlvdXRC
b3godGFibGVCb3gsICpzZWN0aW9uUmVuZGVyZXIpOwogICAgICAgICBhcHBlbmRDaGlsZCh0YWJs
ZUJveCwgKnNlY3Rpb25Cb3gpOwotICAgICAgICBhdXRvJiBzZWN0aW9uQ29udGFpbmVyID0gZG93
bmNhc3Q8Q29udGFpbmVyPigqc2VjdGlvbkJveCk7CisgICAgICAgIGF1dG8mIHNlY3Rpb25Db250
YWluZXIgPSBkb3duY2FzdDxDb250YWluZXJCb3g+KCpzZWN0aW9uQm94KTsKICAgICAgICAgYnVp
bGRTdWJUcmVlKGRvd25jYXN0PFJlbmRlckVsZW1lbnQ+KCpzZWN0aW9uUmVuZGVyZXIpLCBzZWN0
aW9uQ29udGFpbmVyKTsKICAgICAgICAgc2VjdGlvblJlbmRlcmVyID0gc2VjdGlvblJlbmRlcmVy
LT5uZXh0U2libGluZygpOwogICAgIH0KIH0KIAotdm9pZCBUcmVlQnVpbGRlcjo6YnVpbGRTdWJU
cmVlKGNvbnN0IFJlbmRlckVsZW1lbnQmIHBhcmVudFJlbmRlcmVyLCBDb250YWluZXImIHBhcmVu
dENvbnRhaW5lcikKK3ZvaWQgVHJlZUJ1aWxkZXI6OmJ1aWxkU3ViVHJlZShjb25zdCBSZW5kZXJF
bGVtZW50JiBwYXJlbnRSZW5kZXJlciwgQ29udGFpbmVyQm94JiBwYXJlbnRDb250YWluZXIpCiB7
CiAgICAgZm9yIChhdXRvJiBjaGlsZFJlbmRlcmVyIDogY2hpbGRyZW5PZlR5cGU8UmVuZGVyT2Jq
ZWN0PihwYXJlbnRSZW5kZXJlcikpIHsKICAgICAgICAgYXV0byogY2hpbGRMYXlvdXRCb3ggPSBj
cmVhdGVMYXlvdXRCb3gocGFyZW50Q29udGFpbmVyLCBjaGlsZFJlbmRlcmVyKTsKICAgICAgICAg
YXBwZW5kQ2hpbGQocGFyZW50Q29udGFpbmVyLCAqY2hpbGRMYXlvdXRCb3gpOwogICAgICAgICBp
ZiAoY2hpbGRMYXlvdXRCb3gtPmlzVGFibGVXcmFwcGVyQm94KCkpCi0gICAgICAgICAgICBidWls
ZFRhYmxlU3RydWN0dXJlKGRvd25jYXN0PFJlbmRlclRhYmxlPihjaGlsZFJlbmRlcmVyKSwgZG93
bmNhc3Q8Q29udGFpbmVyPigqY2hpbGRMYXlvdXRCb3gpKTsKLSAgICAgICAgZWxzZSBpZiAoaXM8
Q29udGFpbmVyPigqY2hpbGRMYXlvdXRCb3gpKQotICAgICAgICAgICAgYnVpbGRTdWJUcmVlKGRv
d25jYXN0PFJlbmRlckVsZW1lbnQ+KGNoaWxkUmVuZGVyZXIpLCBkb3duY2FzdDxDb250YWluZXI+
KCpjaGlsZExheW91dEJveCkpOworICAgICAgICAgICAgYnVpbGRUYWJsZVN0cnVjdHVyZShkb3du
Y2FzdDxSZW5kZXJUYWJsZT4oY2hpbGRSZW5kZXJlciksIGRvd25jYXN0PENvbnRhaW5lckJveD4o
KmNoaWxkTGF5b3V0Qm94KSk7CisgICAgICAgIGVsc2UgaWYgKGlzPENvbnRhaW5lckJveD4oKmNo
aWxkTGF5b3V0Qm94KSkKKyAgICAgICAgICAgIGJ1aWxkU3ViVHJlZShkb3duY2FzdDxSZW5kZXJF
bGVtZW50PihjaGlsZFJlbmRlcmVyKSwgZG93bmNhc3Q8Q29udGFpbmVyQm94PigqY2hpbGRMYXlv
dXRCb3gpKTsKICAgICB9CiB9CiAKICNpZiBFTkFCTEUoVFJFRV9ERUJVR0dJTkcpCi1zdGF0aWMg
dm9pZCBvdXRwdXRJbmxpbmVSdW5zKFRleHRTdHJlYW0mIHN0cmVhbSwgY29uc3QgTGF5b3V0U3Rh
dGUmIGxheW91dFN0YXRlLCBjb25zdCBDb250YWluZXImIGlubGluZUZvcm1hdHRpbmdSb290LCB1
bnNpZ25lZCBkZXB0aCkKK3N0YXRpYyB2b2lkIG91dHB1dElubGluZVJ1bnMoVGV4dFN0cmVhbSYg
c3RyZWFtLCBjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IENvbnRhaW5lckJv
eCYgaW5saW5lRm9ybWF0dGluZ1Jvb3QsIHVuc2lnbmVkIGRlcHRoKQogewogICAgIGF1dG8mIGlu
bGluZUZvcm1hdHRpbmdTdGF0ZSA9IGxheW91dFN0YXRlLmVzdGFibGlzaGVkSW5saW5lRm9ybWF0
dGluZ1N0YXRlKGlubGluZUZvcm1hdHRpbmdSb290KTsKICAgICBhdXRvKiBkaXNwbGF5SW5saW5l
Q29udGVudCA9IGlubGluZUZvcm1hdHRpbmdTdGF0ZS5kaXNwbGF5SW5saW5lQ29udGVudCgpOwpA
QCAtNDE1LDcgKzQxNSw3IEBAIHN0YXRpYyB2b2lkIG91dHB1dExheW91dEJveChUZXh0U3RyZWFt
JiBzdHJlYW0sIGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBEaXNwCiAgICAgc3RyZWFtLm5l
eHRMaW5lKCk7CiB9CiAKLXN0YXRpYyB2b2lkIG91dHB1dExheW91dFRyZWUoY29uc3QgTGF5b3V0
U3RhdGUqIGxheW91dFN0YXRlLCBUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0IENvbnRhaW5lciYg
cm9vdENvbnRhaW5lciwgdW5zaWduZWQgZGVwdGgpCitzdGF0aWMgdm9pZCBvdXRwdXRMYXlvdXRU
cmVlKGNvbnN0IExheW91dFN0YXRlKiBsYXlvdXRTdGF0ZSwgVGV4dFN0cmVhbSYgc3RyZWFtLCBj
b25zdCBDb250YWluZXJCb3gmIHJvb3RDb250YWluZXIsIHVuc2lnbmVkIGRlcHRoKQogewogICAg
IGZvciAoYXV0byYgY2hpbGQgOiBjaGlsZHJlbk9mVHlwZTxCb3g+KHJvb3RDb250YWluZXIpKSB7
CiAgICAgICAgIGlmIChsYXlvdXRTdGF0ZSkgewpAQCAtNDIzLDEyICs0MjMsMTIgQEAgc3RhdGlj
IHZvaWQgb3V0cHV0TGF5b3V0VHJlZShjb25zdCBMYXlvdXRTdGF0ZSogbGF5b3V0U3RhdGUsIFRl
eHRTdHJlYW0mIHN0cmVhbSwKICAgICAgICAgICAgIGlmIChsYXlvdXRTdGF0ZS0+aGFzRGlzcGxh
eUJveChjaGlsZCkpCiAgICAgICAgICAgICAgICAgb3V0cHV0TGF5b3V0Qm94KHN0cmVhbSwgY2hp
bGQsICZsYXlvdXRTdGF0ZS0+ZGlzcGxheUJveEZvckxheW91dEJveChjaGlsZCksIGRlcHRoKTsK
ICAgICAgICAgICAgIGlmIChjaGlsZC5lc3RhYmxpc2hlc0lubGluZUZvcm1hdHRpbmdDb250ZXh0
KCkpCi0gICAgICAgICAgICAgICAgb3V0cHV0SW5saW5lUnVucyhzdHJlYW0sICpsYXlvdXRTdGF0
ZSwgZG93bmNhc3Q8Q29udGFpbmVyPihjaGlsZCksIGRlcHRoICsgMSk7CisgICAgICAgICAgICAg
ICAgb3V0cHV0SW5saW5lUnVucyhzdHJlYW0sICpsYXlvdXRTdGF0ZSwgZG93bmNhc3Q8Q29udGFp
bmVyQm94PihjaGlsZCksIGRlcHRoICsgMSk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAg
b3V0cHV0TGF5b3V0Qm94KHN0cmVhbSwgY2hpbGQsIG51bGxwdHIsIGRlcHRoKTsKIAotICAgICAg
ICBpZiAoaXM8Q29udGFpbmVyPihjaGlsZCkpCi0gICAgICAgICAgICBvdXRwdXRMYXlvdXRUcmVl
KGxheW91dFN0YXRlLCBzdHJlYW0sIGRvd25jYXN0PENvbnRhaW5lcj4oY2hpbGQpLCBkZXB0aCAr
IDEpOworICAgICAgICBpZiAoaXM8Q29udGFpbmVyQm94PihjaGlsZCkpCisgICAgICAgICAgICBv
dXRwdXRMYXlvdXRUcmVlKGxheW91dFN0YXRlLCBzdHJlYW0sIGRvd25jYXN0PENvbnRhaW5lckJv
eD4oY2hpbGQpLCBkZXB0aCArIDEpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmgKaW5kZXggNThjYjdlNmY0
MTU0Yjk5YzJjZWQ2ZWJlMjYxNmJlM2VjZmFmYWMxMi4uMDZjZDYxMTFiMjIzMTVmMWQ1NDQ0NDBj
ZjlmYTU0ZWZmMWRjMWYyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91
dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5
b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5oCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpZiBFTkFC
TEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKIAotI2luY2x1ZGUgIkxheW91dENvbnRhaW5l
ci5oIgorI2luY2x1ZGUgIkxheW91dENvbnRhaW5lckJveC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29N
YWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCkBAIC00NywxOSArNDcsMTkgQEAg
Y2xhc3MgTGF5b3V0U3RhdGU7CiBjbGFzcyBMYXlvdXRUcmVlQ29udGVudCA6IHB1YmxpYyBDYW5N
YWtlV2Vha1B0cjxMYXlvdXRUcmVlQ29udGVudD4gewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FU
RUQoTGF5b3V0VHJlZUNvbnRlbnQpOwogcHVibGljOgotICAgIExheW91dFRyZWVDb250ZW50KGNv
bnN0IFJlbmRlckJveCYsIHN0ZDo6dW5pcXVlX3B0cjxDb250YWluZXI+KTsKKyAgICBMYXlvdXRU
cmVlQ29udGVudChjb25zdCBSZW5kZXJCb3gmLCBzdGQ6OnVuaXF1ZV9wdHI8Q29udGFpbmVyQm94
Pik7CiAgICAgfkxheW91dFRyZWVDb250ZW50KCk7CiAKLSAgICBjb25zdCBDb250YWluZXImIHJv
b3RMYXlvdXRCb3goKSBjb25zdCB7IHJldHVybiAqbV9yb290TGF5b3V0Qm94OyB9Ci0gICAgQ29u
dGFpbmVyJiByb290TGF5b3V0Qm94KCkgeyByZXR1cm4gKm1fcm9vdExheW91dEJveDsgfQorICAg
IGNvbnN0IENvbnRhaW5lckJveCYgcm9vdExheW91dEJveCgpIGNvbnN0IHsgcmV0dXJuICptX3Jv
b3RMYXlvdXRCb3g7IH0KKyAgICBDb250YWluZXJCb3gmIHJvb3RMYXlvdXRCb3goKSB7IHJldHVy
biAqbV9yb290TGF5b3V0Qm94OyB9CiAgICAgY29uc3QgUmVuZGVyQm94JiByb290UmVuZGVyZXIo
KSBjb25zdCB7IHJldHVybiBtX3Jvb3RSZW5kZXJlcjsgfQogCiAgICAgdm9pZCBhZGRCb3goc3Rk
Ojp1bmlxdWVfcHRyPEJveD4gYm94KQogICAgIHsKLSAgICAgICAgQVNTRVJUKCFib3gtPmlzQ29u
dGFpbmVyKCkpOworICAgICAgICBBU1NFUlQoIWJveC0+aXNDb250YWluZXJCb3goKSk7CiAgICAg
ICAgIG1fYm94ZXMuYWRkKFdURk1vdmUoYm94KSk7CiAgICAgfQotICAgIHZvaWQgYWRkQ29udGFp
bmVyKHN0ZDo6dW5pcXVlX3B0cjxDb250YWluZXI+IGNvbnRhaW5lcikgeyBtX2NvbnRhaW5lcnMu
YWRkKFdURk1vdmUoY29udGFpbmVyKSk7IH0KKyAgICB2b2lkIGFkZENvbnRhaW5lcihzdGQ6OnVu
aXF1ZV9wdHI8Q29udGFpbmVyQm94PiBjb250YWluZXIpIHsgbV9jb250YWluZXJzLmFkZChXVEZN
b3ZlKGNvbnRhaW5lcikpOyB9CiAKICAgICBCb3gqIGxheW91dEJveEZvclJlbmRlcmVyKGNvbnN0
IFJlbmRlck9iamVjdCYgcmVuZGVyZXIpIHsgcmV0dXJuIG1fcmVuZGVyT2JqZWN0VG9MYXlvdXRC
b3guZ2V0KCZyZW5kZXJlcik7IH0KICAgICBjb25zdCBCb3gqIGxheW91dEJveEZvclJlbmRlcmVy
KGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyT2Jq
ZWN0VG9MYXlvdXRCb3guZ2V0KCZyZW5kZXJlcik7IH0KQEAgLTcwLDkgKzcwLDkgQEAgcHVibGlj
OgogCiBwcml2YXRlOgogICAgIGNvbnN0IFJlbmRlckJveCYgbV9yb290UmVuZGVyZXI7Ci0gICAg
c3RkOjp1bmlxdWVfcHRyPENvbnRhaW5lcj4gbV9yb290TGF5b3V0Qm94OworICAgIHN0ZDo6dW5p
cXVlX3B0cjxDb250YWluZXJCb3g+IG1fcm9vdExheW91dEJveDsKICAgICBIYXNoU2V0PHN0ZDo6
dW5pcXVlX3B0cjxCb3g+PiBtX2JveGVzOwotICAgIEhhc2hTZXQ8c3RkOjp1bmlxdWVfcHRyPENv
bnRhaW5lcj4+IG1fY29udGFpbmVyczsKKyAgICBIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxDb250
YWluZXJCb3g+PiBtX2NvbnRhaW5lcnM7CiAKICAgICBIYXNoTWFwPGNvbnN0IFJlbmRlck9iamVj
dCosIEJveCo+IG1fcmVuZGVyT2JqZWN0VG9MYXlvdXRCb3g7CiAgICAgSGFzaE1hcDxjb25zdCBC
b3gqLCBjb25zdCBSZW5kZXJPYmplY3QqPiBtX2xheW91dEJveFRvUmVuZGVyT2JqZWN0OwpAQCAt
ODYsMTQgKzg2LDE0IEBAIHByaXZhdGU6CiAgICAgVHJlZUJ1aWxkZXIoTGF5b3V0VHJlZUNvbnRl
bnQmKTsKIAogICAgIHZvaWQgYnVpbGRUcmVlKCk7Ci0gICAgdm9pZCBidWlsZFN1YlRyZWUoY29u
c3QgUmVuZGVyRWxlbWVudCYgcGFyZW50UmVuZGVyZXIsIENvbnRhaW5lciYgcGFyZW50Q29udGFp
bmVyKTsKLSAgICB2b2lkIGJ1aWxkVGFibGVTdHJ1Y3R1cmUoY29uc3QgUmVuZGVyVGFibGUmIHRh
YmxlUmVuZGVyZXIsIENvbnRhaW5lciYgdGFibGVXcmFwcGVyQm94KTsKLSAgICBCb3gqIGNyZWF0
ZUxheW91dEJveChjb25zdCBDb250YWluZXImIHBhcmVudENvbnRhaW5lciwgY29uc3QgUmVuZGVy
T2JqZWN0JiBjaGlsZFJlbmRlcmVyKTsKKyAgICB2b2lkIGJ1aWxkU3ViVHJlZShjb25zdCBSZW5k
ZXJFbGVtZW50JiBwYXJlbnRSZW5kZXJlciwgQ29udGFpbmVyQm94JiBwYXJlbnRDb250YWluZXIp
OworICAgIHZvaWQgYnVpbGRUYWJsZVN0cnVjdHVyZShjb25zdCBSZW5kZXJUYWJsZSYgdGFibGVS
ZW5kZXJlciwgQ29udGFpbmVyQm94JiB0YWJsZVdyYXBwZXJCb3gpOworICAgIEJveCogY3JlYXRl
TGF5b3V0Qm94KGNvbnN0IENvbnRhaW5lckJveCYgcGFyZW50Q29udGFpbmVyLCBjb25zdCBSZW5k
ZXJPYmplY3QmIGNoaWxkUmVuZGVyZXIpOwogCiAgICAgQm94JiBjcmVhdGVSZXBsYWNlZEJveChS
ZW5kZXJTdHlsZSYmKTsKICAgICBCb3gmIGNyZWF0ZVRleHRCb3goU3RyaW5nIHRleHQsIGJvb2wg
Y2FuVXNlU2ltcGxpZmllZFRleHRNZWFzdXJpbmcsIFJlbmRlclN0eWxlJiYpOwogICAgIEJveCYg
Y3JlYXRlTGluZUJyZWFrQm94KGJvb2wgaXNPcHRpb25hbCwgUmVuZGVyU3R5bGUmJik7Ci0gICAg
Q29udGFpbmVyJiBjcmVhdGVDb250YWluZXIoT3B0aW9uYWw8Qm94OjpFbGVtZW50QXR0cmlidXRl
cz4sIFJlbmRlclN0eWxlJiYpOworICAgIENvbnRhaW5lckJveCYgY3JlYXRlQ29udGFpbmVyKE9w
dGlvbmFsPEJveDo6RWxlbWVudEF0dHJpYnV0ZXM+LCBSZW5kZXJTdHlsZSYmKTsKIAogICAgIExh
eW91dFRyZWVDb250ZW50JiBtX2xheW91dFRyZWVDb250ZW50OwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVGb3JtYXR0aW5nQ29udGV4
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlRm9ybWF0
dGluZ0NvbnRleHQuY3BwCmluZGV4IGQyZWM2MTk4Y2FkZTU0NzdmNTIxMjkwYjlkYWM5ZTFmYWRl
MmJjNGQuLjM2MjU3ZWMzOWIzZWI2NDcwN2NkZGIxZDQzMzUxMTMzMzM3YWQzMWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVGb3JtYXR0aW5n
Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L3RhYmxlZm9ybWF0dGluZy9U
YWJsZUZvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtNTUsNyArNTUsNyBAQCB2b2lkIFRhYmxlRm9y
bWF0dGluZ0NvbnRleHQ6OmluaXRpYWxpemVEaXNwbGF5Qm94VG9CbGFuayhEaXNwbGF5OjpCb3gm
IGRpc3BsYXlCbwogfQogCiAvLyBodHRwczovL3d3dy53My5vcmcvVFIvY3NzLXRhYmxlcy0zLyN0
YWJsZS1sYXlvdXQtYWxnb3JpdGhtCi1UYWJsZUZvcm1hdHRpbmdDb250ZXh0OjpUYWJsZUZvcm1h
dHRpbmdDb250ZXh0KGNvbnN0IENvbnRhaW5lciYgZm9ybWF0dGluZ0NvbnRleHRSb290LCBUYWJs
ZUZvcm1hdHRpbmdTdGF0ZSYgZm9ybWF0dGluZ1N0YXRlKQorVGFibGVGb3JtYXR0aW5nQ29udGV4
dDo6VGFibGVGb3JtYXR0aW5nQ29udGV4dChjb25zdCBDb250YWluZXJCb3gmIGZvcm1hdHRpbmdD
b250ZXh0Um9vdCwgVGFibGVGb3JtYXR0aW5nU3RhdGUmIGZvcm1hdHRpbmdTdGF0ZSkKICAgICA6
IEZvcm1hdHRpbmdDb250ZXh0KGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgZm9ybWF0dGluZ1N0YXRl
KQogewogfQpAQCAtMTExLDggKzExMSw4IEBAIHZvaWQgVGFibGVGb3JtYXR0aW5nQ29udGV4dDo6
bGF5b3V0VGFibGVDZWxsQm94KGNvbnN0IEJveCYgY2VsbExheW91dEJveCwgY29uc3QKICAgICBj
ZWxsRGlzcGxheUJveC5zZXRDb250ZW50Qm94V2lkdGgoY29sdW1uLmxvZ2ljYWxXaWR0aCgpIC0g
Y2VsbERpc3BsYXlCb3guaG9yaXpvbnRhbE1hcmdpbkJvcmRlckFuZFBhZGRpbmcoKSk7CiAKICAg
ICBBU1NFUlQoY2VsbExheW91dEJveC5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQo
KSk7Ci0gICAgaWYgKGlzPENvbnRhaW5lcj4oY2VsbExheW91dEJveCkgJiYgZG93bmNhc3Q8Q29u
dGFpbmVyPihjZWxsTGF5b3V0Qm94KS5oYXNJbkZsb3dPckZsb2F0aW5nQ2hpbGQoKSkKLSAgICAg
ICAgTGF5b3V0Q29udGV4dDo6Y3JlYXRlRm9ybWF0dGluZ0NvbnRleHQoZG93bmNhc3Q8Q29udGFp
bmVyPihjZWxsTGF5b3V0Qm94KSwgbGF5b3V0U3RhdGUoKSktPmxheW91dEluRmxvd0NvbnRlbnQo
aW52YWxpZGF0aW9uU3RhdGUsIEdlb21ldHJ5Ojpob3Jpem9udGFsQ29uc3RyYWludHNGb3JJbkZs
b3coY2VsbERpc3BsYXlCb3gpLCBHZW9tZXRyeTo6dmVydGljYWxDb25zdHJhaW50c0ZvckluRmxv
dyhjZWxsRGlzcGxheUJveCkpOworICAgIGlmIChpczxDb250YWluZXJCb3g+KGNlbGxMYXlvdXRC
b3gpICYmIGRvd25jYXN0PENvbnRhaW5lckJveD4oY2VsbExheW91dEJveCkuaGFzSW5GbG93T3JG
bG9hdGluZ0NoaWxkKCkpCisgICAgICAgIExheW91dENvbnRleHQ6OmNyZWF0ZUZvcm1hdHRpbmdD
b250ZXh0KGRvd25jYXN0PENvbnRhaW5lckJveD4oY2VsbExheW91dEJveCksIGxheW91dFN0YXRl
KCkpLT5sYXlvdXRJbkZsb3dDb250ZW50KGludmFsaWRhdGlvblN0YXRlLCBHZW9tZXRyeTo6aG9y
aXpvbnRhbENvbnN0cmFpbnRzRm9ySW5GbG93KGNlbGxEaXNwbGF5Qm94KSwgR2VvbWV0cnk6OnZl
cnRpY2FsQ29uc3RyYWludHNGb3JJbkZsb3coY2VsbERpc3BsYXlCb3gpKTsKICAgICBjZWxsRGlz
cGxheUJveC5zZXRWZXJ0aWNhbE1hcmdpbih7IHsgfSwgeyB9IH0pOwogICAgIGNlbGxEaXNwbGF5
Qm94LnNldENvbnRlbnRCb3hIZWlnaHQoZ2VvbWV0cnkoKS50YWJsZUNlbGxIZWlnaHRBbmRNYXJn
aW4oY2VsbExheW91dEJveCkuY29udGVudEhlaWdodCk7CiAgICAgLy8gRklYTUU6IENoZWNrIHdo
YXQgdG8gZG8gd2l0aCBvdXQtb2YtZmxvdyBjb250ZW50LgpAQCAtMTk2LDcgKzE5Niw3IEBAIHZv
aWQgVGFibGVGb3JtYXR0aW5nQ29udGV4dDo6ZW5zdXJlVGFibGVHcmlkKCkKIAogICAgIGlmIChj
b2xncm91cCkgewogICAgICAgICBhdXRvJiBjb2x1bW5zQ29udGV4dCA9IHRhYmxlR3JpZC5jb2x1
bW5zQ29udGV4dCgpOwotICAgICAgICBmb3IgKGF1dG8qIGNvbHVtbiA9IGRvd25jYXN0PENvbnRh
aW5lcj4oKmNvbGdyb3VwKS5maXJzdENoaWxkKCk7IGNvbHVtbjsgY29sdW1uID0gY29sdW1uLT5u
ZXh0U2libGluZygpKSB7CisgICAgICAgIGZvciAoYXV0byogY29sdW1uID0gZG93bmNhc3Q8Q29u
dGFpbmVyQm94PigqY29sZ3JvdXApLmZpcnN0Q2hpbGQoKTsgY29sdW1uOyBjb2x1bW4gPSBjb2x1
bW4tPm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAgICAgIEFTU0VSVChjb2x1bW4tPmlzVGFibGVD
b2x1bW4oKSk7CiAgICAgICAgICAgICBhdXRvIGNvbHVtblNwYW5Db3VudCA9IGNvbHVtbi0+Y29s
dW1uU3BhbigpOwogICAgICAgICAgICAgQVNTRVJUKGNvbHVtblNwYW5Db3VudCA+IDApOwpAQCAt
MjA4LDkgKzIwOCw5IEBAIHZvaWQgVGFibGVGb3JtYXR0aW5nQ29udGV4dDo6ZW5zdXJlVGFibGVH
cmlkKCkKICAgICBhdXRvKiBmaXJzdFNlY3Rpb24gPSBjb2xncm91cCA/IGNvbGdyb3VwLT5uZXh0
U2libGluZygpIDogdGFibGVDYXB0aW9uID8gdGFibGVDYXB0aW9uLT5uZXh0U2libGluZygpIDog
Zmlyc3RDaGlsZDsKICAgICBmb3IgKGF1dG8qIHNlY3Rpb24gPSBmaXJzdFNlY3Rpb247IHNlY3Rp
b247IHNlY3Rpb24gPSBzZWN0aW9uLT5uZXh0U2libGluZygpKSB7CiAgICAgICAgIEFTU0VSVChz
ZWN0aW9uLT5pc1RhYmxlSGVhZGVyKCkgfHwgc2VjdGlvbi0+aXNUYWJsZUJvZHkoKSB8fCBzZWN0
aW9uLT5pc1RhYmxlRm9vdGVyKCkpOwotICAgICAgICBmb3IgKGF1dG8qIHJvdyA9IGRvd25jYXN0
PENvbnRhaW5lcj4oKnNlY3Rpb24pLmZpcnN0Q2hpbGQoKTsgcm93OyByb3cgPSByb3ctPm5leHRT
aWJsaW5nKCkpIHsKKyAgICAgICAgZm9yIChhdXRvKiByb3cgPSBkb3duY2FzdDxDb250YWluZXJC
b3g+KCpzZWN0aW9uKS5maXJzdENoaWxkKCk7IHJvdzsgcm93ID0gcm93LT5uZXh0U2libGluZygp
KSB7CiAgICAgICAgICAgICBBU1NFUlQocm93LT5pc1RhYmxlUm93KCkpOwotICAgICAgICAgICAg
Zm9yIChhdXRvKiBjZWxsID0gZG93bmNhc3Q8Q29udGFpbmVyPigqcm93KS5maXJzdENoaWxkKCk7
IGNlbGw7IGNlbGwgPSBjZWxsLT5uZXh0U2libGluZygpKSB7CisgICAgICAgICAgICBmb3IgKGF1
dG8qIGNlbGwgPSBkb3duY2FzdDxDb250YWluZXJCb3g+KCpyb3cpLmZpcnN0Q2hpbGQoKTsgY2Vs
bDsgY2VsbCA9IGNlbGwtPm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQo
Y2VsbC0+aXNUYWJsZUNlbGwoKSk7CiAgICAgICAgICAgICAgICAgdGFibGVHcmlkLmFwcGVuZENl
bGwoKmNlbGwpOwogICAgICAgICAgICAgfQpAQCAtMjM0LDggKzIzNCw4IEBAIHZvaWQgVGFibGVG
b3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVByZWZlcnJlZFdpZHRoRm9yQ29sdW1ucygpCiAgICAg
ICAgIGF1dG8gaW50cmluc2ljV2lkdGggPSBmb3JtYXR0aW5nU3RhdGUuaW50cmluc2ljV2lkdGhD
b25zdHJhaW50c0ZvckJveCh0YWJsZUNlbGxCb3gpOwogICAgICAgICBpZiAoIWludHJpbnNpY1dp
ZHRoKSB7CiAgICAgICAgICAgICBpbnRyaW5zaWNXaWR0aCA9IEludHJpbnNpY1dpZHRoQ29uc3Ry
YWludHMgeyB9OwotICAgICAgICAgICAgaWYgKGlzPENvbnRhaW5lcj4odGFibGVDZWxsQm94KSkK
LSAgICAgICAgICAgICAgICBpbnRyaW5zaWNXaWR0aCA9IExheW91dENvbnRleHQ6OmNyZWF0ZUZv
cm1hdHRpbmdDb250ZXh0KGRvd25jYXN0PENvbnRhaW5lcj4odGFibGVDZWxsQm94KSwgbGF5b3V0
U3RhdGUoKSktPmNvbXB1dGVkSW50cmluc2ljV2lkdGhDb25zdHJhaW50cygpOworICAgICAgICAg
ICAgaWYgKGlzPENvbnRhaW5lckJveD4odGFibGVDZWxsQm94KSkKKyAgICAgICAgICAgICAgICBp
bnRyaW5zaWNXaWR0aCA9IExheW91dENvbnRleHQ6OmNyZWF0ZUZvcm1hdHRpbmdDb250ZXh0KGRv
d25jYXN0PENvbnRhaW5lckJveD4odGFibGVDZWxsQm94KSwgbGF5b3V0U3RhdGUoKSktPmNvbXB1
dGVkSW50cmluc2ljV2lkdGhDb25zdHJhaW50cygpOwogICAgICAgICAgICAgaW50cmluc2ljV2lk
dGggPSBnZW9tZXRyeSgpLmNvbnN0cmFpbkJ5TWluTWF4V2lkdGgodGFibGVDZWxsQm94LCAqaW50
cmluc2ljV2lkdGgpOwogICAgICAgICAgICAgYXV0byBib3JkZXIgPSBnZW9tZXRyeSgpLmNvbXB1
dGVkQm9yZGVyKHRhYmxlQ2VsbEJveCk7CiAgICAgICAgICAgICBhdXRvIHBhZGRpbmcgPSAqZ2Vv
bWV0cnkoKS5jb21wdXRlZFBhZGRpbmcodGFibGVDZWxsQm94LCB7IH0pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUZvcm1hdHRpbmdDb250
ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlRm9ybWF0
dGluZ0NvbnRleHQuaAppbmRleCAwMDY1NmEyOWI3NjdmYjFkYmFjMGRmZGQyMmZmMWZlOTA3NGZi
NzRiLi5hNjdhY2M4ZWE4YTRhNTFiYmMwNzIxM2IyZjE0MDZhNmUxYWU0NjYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlRm9ybWF0dGluZ0Nv
bnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxl
Rm9ybWF0dGluZ0NvbnRleHQuaApAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBUYWJsZUZvcm1hdHRp
bmdTdGF0ZTsKIGNsYXNzIFRhYmxlRm9ybWF0dGluZ0NvbnRleHQgZmluYWwgOiBwdWJsaWMgRm9y
bWF0dGluZ0NvbnRleHQgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoVGFibGVGb3JtYXR0
aW5nQ29udGV4dCk7CiBwdWJsaWM6Ci0gICAgVGFibGVGb3JtYXR0aW5nQ29udGV4dChjb25zdCBD
b250YWluZXImIGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgVGFibGVGb3JtYXR0aW5nU3RhdGUmKTsK
KyAgICBUYWJsZUZvcm1hdHRpbmdDb250ZXh0KGNvbnN0IENvbnRhaW5lckJveCYgZm9ybWF0dGlu
Z0NvbnRleHRSb290LCBUYWJsZUZvcm1hdHRpbmdTdGF0ZSYpOwogICAgIHZvaWQgbGF5b3V0SW5G
bG93Q29udGVudChJbnZhbGlkYXRpb25TdGF0ZSYsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50
cyYsIGNvbnN0IFZlcnRpY2FsQ29uc3RyYWludHMmKSBvdmVycmlkZTsKIAogcHJpdmF0ZToK
</data>

          </attachment>
      

    </bug>

</bugzilla>