<?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>216497</bug_id>
          
          <creation_ts>2020-09-14 15:11:25 -0700</creation_ts>
          <short_desc>[LFC] The result of layout should be Layout::Geometry, not Display::Box</short_desc>
          <delta_ts>2020-09-14 16:01:16 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <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>1688431</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-09-14 15:11:25 -0700</bug_when>
    <thetext>[LFC] The result of layout should be Layout::Geometry, not Display::Box</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1688432</commentid>
    <comment_count>1</comment_count>
      <attachid>408750</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-09-14 15:13:26 -0700</bug_when>
    <thetext>Created attachment 408750
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1688438</commentid>
    <comment_count>2</comment_count>
      <attachid>408752</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-09-14 15:22:29 -0700</bug_when>
    <thetext>Created attachment 408752
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1688441</commentid>
    <comment_count>3</comment_count>
      <attachid>408752</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-09-14 15:33:28 -0700</bug_when>
    <thetext>Comment on attachment 408752
Patch

ok, I&apos;ll clean up the variable names etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1688452</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-09-14 16:00:49 -0700</bug_when>
    <thetext>Committed r267054: &lt;https://trac.webkit.org/changeset/267054&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 408752.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1688453</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-09-14 16:01:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/68884235&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408750</attachid>
            <date>2020-09-14 15:13:26 -0700</date>
            <delta_ts>2020-09-14 15:22:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216497-20200914151325.patch</filename>
            <type>text/plain</type>
            <size>78426</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3MDI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDlmOTc3OTg4ODE3MDlk
Y2UwNGZhZWQwZjg0ZTMyNWJmZjY5YTQ0OS4uZTQ1OGM0Mzc2NDNmZDU1YjI1MTg1ZDQ3MGViMTky
ZmMyMTMxNzVjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwMSBAQAorMjAyMC0wOS0xNCAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBbTEZDXSBUaGUg
cmVzdWx0IG9mIGxheW91dCBzaG91bGQgYmUgTGF5b3V0OjpHZW9tZXRyeSwgbm90IERpc3BsYXk6
OkJveAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2
NDk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAJV2Ugc2hv
dWxkIHJlc2VydmUgdGhpbmdzIGluIHRoZSBEaXNwbGF5IG5hbWVzcGFjZSBmb3IgcGFpbnRpbmcs
IHNvIGxheW91dCBzaG91bGQgZW1pdAorICAgIAlMYXlvdXQ6Okdlb21ldHJ5IHJhdGhlciB0aGFu
IERpc3BsYXk6OkJveGVzLiBTbyBjbG9uZSBEaXNwbGF5OjpCb3ggdG8gTGF5b3V0OjpHZW9tZXRy
eQorICAgIAlhbmQgdXNlIExheW91dDo6R2VvbWV0cnkgZXZlcnl3aGVyZSB0aGF0IERpc3BsYXk6
OkJveCB3YXMgdXNlZC4KKworICAgIAlGdXR1cmUgcGF0Y2hlcyB3aWxsIG1vdmUgcGFpbnRpbmcg
b3QgdXNlIERpc3BsYXkgb2JqZWN0cy4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBsYXlvdXQv
Rm9ybWF0dGluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0
aW5nQ29udGV4dDo6Z2VvbWV0cnlGb3JCb3ggY29uc3QpOgorICAgICAgICAqIGxheW91dC9Gb3Jt
YXR0aW5nQ29udGV4dC5oOgorICAgICAgICAqIGxheW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21l
dHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdl
b21ldHJ5OjpzdGF0aWNWZXJ0aWNhbFBvc2l0aW9uRm9yT3V0T2ZGbG93UG9zaXRpb25lZCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRy
eTo6c3RhdGljSG9yaXpvbnRhbFBvc2l0aW9uRm9yT3V0T2ZGbG93UG9zaXRpb25lZCBjb25zdCk6
CisgICAgICAgICogbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNwcDoKKyAgICAgICAg
KiBsYXlvdXQvRm9ybWF0dGluZ1N0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
Rm9ybWF0dGluZ1N0YXRlOjpkaXNwbGF5Qm94KToKKyAgICAgICAgKiBsYXlvdXQvRm9ybWF0dGlu
Z1N0YXRlLmg6CisgICAgICAgICogbGF5b3V0L0xheW91dENvbnRleHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRDb250ZXh0OjpsYXlvdXQpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpMYXlvdXRDb250ZXh0OjpsYXlvdXRGb3JtYXR0aW5nQ29udGV4dFN1YnRyZWUp
OgorICAgICAgICAqIGxheW91dC9MYXlvdXRTdGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OkxheW91dFN0YXRlOjpnZW9tZXRyeUZvclJvb3RMYXlvdXRCb3gpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRTdGF0ZTo6ZW5zdXJlRGlzcGxheUJveEZvckxheW91dEJv
eFNsb3cpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRTdGF0ZTo6ZGlzcGxheUJv
eEZvclJvb3RMYXlvdXRCb3gpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9MYXlvdXRTdGF0
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRTdGF0ZTo6ZW5zdXJlR2VvbWV0
cnlGb3JMYXlvdXRCb3gpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRTdGF0ZTo6
Z2VvbWV0cnlGb3JMYXlvdXRCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpC
b3g6OmNhY2hlZERpc3BsYXlCb3hGb3JMYXlvdXRTdGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OkxheW91dFN0YXRlOjplbnN1cmVEaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGF5b3V0U3RhdGU6OmRpc3BsYXlC
b3hGb3JMYXlvdXRCb3ggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9WZXJpZmlj
YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpvdXRwdXRNaXNtYXRjaGluZ0Js
b2NrQm94SW5mb3JtYXRpb25JZk5lZWRlZCk6CisgICAgICAgICogbGF5b3V0L2Jsb2NrZm9ybWF0
dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwOgorICAgICAgICAqIGxheW91
dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHA6CisgICAg
ICAgICogbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy90YWJsZXdyYXBwZXIvVGFibGVXcmFwcGVyQmxv
Y2tGb3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAgICAgICogbGF5b3V0L2Rpc3BsYXkvRGlzcGxh
eUxheWVyQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMYXllckNv
bnRyb2xsZXI6OnByZXBhcmVGb3JEaXNwbGF5KToKKyAgICAgICAgKiBsYXlvdXQvZGlzcGxheXRy
ZWUvRGlzcGxheVBhaW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6cGFpbnRC
b3hEZWNvcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OlBhaW50ZXI6OmFic29s
dXRlRGlzcGxheUJveCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5Ojpjb2xsZWN0UGFpbnRS
b290c0FuZENvbnRlbnRSZWN0KToKKyAgICAgICAgKiBsYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxh
eVBhaW50ZXIuaDoKKyAgICAgICAgKiBsYXlvdXQvZmxvYXRzL0Zsb2F0QXZvaWRlci5oOgorICAg
ICAgICAqIGxheW91dC9mbG9hdHMvRmxvYXRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6RmxvYXRpbmdDb250ZXh0OjphcHBlbmQpOgorICAgICAgICAqIGxheW91dC9m
bG9hdHMvRmxvYXRpbmdTdGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZsb2F0
aW5nU3RhdGU6OkZsb2F0SXRlbTo6RmxvYXRJdGVtKToKKyAgICAgICAgKiBsYXlvdXQvZmxvYXRz
L0Zsb2F0aW5nU3RhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6RmxvYXRpbmdTdGF0
ZTo6RmxvYXRJdGVtOjpyZWN0V2l0aE1hcmdpbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OkZsb2F0aW5nU3RhdGU6OkZsb2F0SXRlbTo6aG9yaXpvbnRhbE1hcmdpbiBjb25zdCk6
CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJveC5oOgorICAg
ICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmNwcDoKKyAg
ICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lTGF5b3V0OjpwcmVw
YXJlRmxvYXRpbmdTdGF0ZSk6CisgICAgICAgICogbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Qm94OjpzZXRDYWNoZWREaXNwbGF5Qm94
Rm9yTGF5b3V0U3RhdGUgY29uc3QpOgorICAgICAgICAqIGxheW91dC9sYXlvdXR0cmVlL0xheW91
dEJveC5oOgorICAgICAgICAqIGxheW91dC9sYXlvdXR0cmVlL0xheW91dEdlb21ldHJ5LmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Okdlb21ldHJ5OjpHZW9tZXRyeSk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Okdlb21ldHJ5Ojp+R2VvbWV0cnkpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpHZW9tZXRyeTo6bWFyZ2luQm94IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6R2VvbWV0cnk6OmJvcmRlckJveCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6Okdlb21ldHJ5OjpwYWRkaW5nQm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6R2VvbWV0cnk6OmNvbnRlbnRCb3ggY29uc3QpOgorICAgICAgICAqIGxheW91
dC9sYXlvdXR0cmVlL0xheW91dEdlb21ldHJ5Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpSZWN0OjpleHBhbmRIb3Jpem9udGFsbHkpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpSZWN0OjpleHBhbmRWZXJ0aWNhbGx5KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
UmVjdDo6aW50ZXJzZWN0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJlY3Q6
OmludmFsaWRhdGVUb3ApOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpSZWN0OjppbnZhbGlk
YXRlTGVmdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJlY3Q6OmludmFsaWRhdGVXaWR0
aCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJlY3Q6OmludmFsaWRhdGVIZWlnaHQpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpSZWN0OjpoYXNWYWxpZFBvc2l0aW9uIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6UmVjdDo6aGFzVmFsaWRTaXplIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6UmVjdDo6aGFzVmFsaWRHZW9tZXRyeSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJlY3Q6OlJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpSZWN0OjppbnZhbGlkYXRlUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpSZWN0OjpzZXRIYXNWYWxpZFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6UmVjdDo6c2V0SGFzVmFsaWRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6UmVj
dDo6dG9wIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6UmVjdDo6bGVmdCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJlY3Q6OmJvdHRvbSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJlY3Q6OnJpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6UmVjdDo6dG9wTGVmdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OlJlY3Q6OmJvdHRvbVJpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
UmVjdDo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJlY3Q6OndpZHRo
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6UmVjdDo6aGVpZ2h0IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6UmVjdDo6c2V0VG9wTGVmdCk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OlJlY3Q6OnNldFRvcCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OlJlY3Q6OnNldExlZnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpSZWN0OjpzZXRXaWR0
aCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJlY3Q6OnNldEhlaWdodCk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OlJlY3Q6OnNldFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpSZWN0OjpzaGlmdExlZnRUbyk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJlY3Q6
OnNoaWZ0UmlnaHRUbyk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJlY3Q6OnNoaWZ0VG9w
VG8pOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpSZWN0OjpzaGlmdEJvdHRvbVRvKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6UmVjdDo6bW92ZUhvcml6b250YWxseSk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OlJlY3Q6Om1vdmVWZXJ0aWNhbGx5KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6UmVjdDo6ZXhwYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6UmVj
dDo6Y2xvbmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpSZWN0OjpvcGVyYXRv
ciBMYXlvdXRSZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6R2VvbWV0cnk6
OmJvdHRvbSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Okdlb21ldHJ5OjpyaWdo
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Okdlb21ldHJ5Ojpib3R0b21SaWdo
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Okdlb21ldHJ5OjpzaXplIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6R2VvbWV0cnk6OndpZHRoIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6R2VvbWV0cnk6OmhlaWdodCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6Okdlb21ldHJ5Ojppc0VtcHR5IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6R2VvbWV0cnk6OnJlY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpHZW9tZXRyeTo6cmVjdFdpdGhNYXJnaW4gY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpHZW9tZXRyeTo6aGFzQ2xlYXJhbmNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6R2VvbWV0cnk6OnZlcnRpY2FsQm9yZGVyIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6R2VvbWV0cnk6Omhvcml6b250YWxCb3JkZXIgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpHZW9tZXRyeTo6Y29udGVudEJveFRvcCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6Okdlb21ldHJ5Ojpjb250ZW50Qm94TGVmdCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Okdlb21ldHJ5Ojpjb250ZW50Qm94Qm90dG9tIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6R2VvbWV0cnk6OmNvbnRlbnRCb3hSaWdodCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Okdlb21ldHJ5OjpwYWRkaW5nQm94VG9w
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6R2VvbWV0cnk6OnBhZGRpbmdCb3hM
ZWZ0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6R2VvbWV0cnk6OnBhZGRpbmdC
b3hCb3R0b20gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpHZW9tZXRyeTo6cGFk
ZGluZ0JveFJpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6R2VvbWV0cnk6
OnBhZGRpbmdCb3hIZWlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpHZW9t
ZXRyeTo6cGFkZGluZ0JveFdpZHRoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
R2VvbWV0cnk6OmJvcmRlckJveEhlaWdodCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6Okdlb21ldHJ5Ojpib3JkZXJCb3hXaWR0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6Okdlb21ldHJ5OjptYXJnaW5Cb3hIZWlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpHZW9tZXRyeTo6bWFyZ2luQm94V2lkdGggY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpHZW9tZXRyeTo6dmVydGljYWxNYXJnaW5Cb3JkZXJBbmRQYWRkaW5nIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6R2VvbWV0cnk6Omhvcml6b250YWxNYXJn
aW5Cb3JkZXJBbmRQYWRkaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6R2Vv
bWV0cnk6OnNldEhhc1ByZWNvbXB1dGVkTWFyZ2luQmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6R2VvbWV0cnk6Om1vdmVIb3Jpem9udGFsbHkpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpHZW9tZXRyeTo6bW92ZVZlcnRpY2FsbHkpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpHZW9tZXRyeTo6bW92ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Okdlb21ldHJ5
Ojptb3ZlQnkpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpHZW9tZXRyeTo6c2V0SGFzQ2xl
YXJhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6R2VvbWV0cnk6OmludmFsaWRhdGVC
b3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpHZW9tZXRyeTo6aW52YWxpZGF0ZVBh
ZGRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpHZW9tZXRyeTo6aW52YWxpZGF0ZVBy
ZWNvbXB1dGVkTWFyZ2luQmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6R2VvbWV0
cnk6OnNldEhhc1ZhbGlkVG9wKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6R2VvbWV0cnk6
OnNldEhhc1ZhbGlkTGVmdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Okdlb21ldHJ5Ojpz
ZXRIYXNWYWxpZFZlcnRpY2FsTWFyZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6R2Vv
bWV0cnk6OnNldEhhc1ZhbGlkSG9yaXpvbnRhbE1hcmdpbik6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6Okdlb21ldHJ5OjpzZXRIYXNWYWxpZEJvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6Okdlb21ldHJ5OjpzZXRIYXNWYWxpZFBhZGRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpHZW9tZXRyeTo6c2V0SGFzVmFsaWRDb250ZW50SGVpZ2h0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6R2VvbWV0cnk6OnNldEhhc1ZhbGlkQ29udGVudFdpZHRoKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6R2VvbWV0cnk6OmludmFsaWRhdGVNYXJnaW4pOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpHZW9tZXRyeTo6dG9wIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6R2VvbWV0cnk6OmxlZnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpHZW9tZXRyeTo6dG9wTGVmdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
Okdlb21ldHJ5OjpzZXRUb3BMZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6R2VvbWV0
cnk6OnNldFRvcCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Okdlb21ldHJ5OjpzZXRMZWZ0
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6R2VvbWV0cnk6OnNldENvbnRlbnRCb3hIZWln
aHQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpHZW9tZXRyeTo6c2V0Q29udGVudEJveFdp
ZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6R2VvbWV0cnk6OmNvbnRlbnRCb3hIZWln
aHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpHZW9tZXRyeTo6Y29udGVudEJv
eFdpZHRoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6R2VvbWV0cnk6OnNldEhv
cml6b250YWxNYXJnaW4pOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpHZW9tZXRyeTo6c2V0
VmVydGljYWxNYXJnaW4pOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpHZW9tZXRyeTo6c2V0
Qm9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6R2VvbWV0cnk6OnNldFBhZGRpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpHZW9tZXRyeTo6c2V0VmVydGljYWxQYWRkaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6R2VvbWV0cnk6OnZlcnRpY2FsTWFyZ2luIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6R2VvbWV0cnk6Omhvcml6b250YWxNYXJn
aW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpHZW9tZXRyeTo6bWFyZ2luQmVm
b3JlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6R2VvbWV0cnk6Om1hcmdpblN0
YXJ0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6R2VvbWV0cnk6Om1hcmdpbkFm
dGVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6R2VvbWV0cnk6Om1hcmdpbkVu
ZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Okdlb21ldHJ5OjpwYWRkaW5nVG9w
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6R2VvbWV0cnk6OnBhZGRpbmdMZWZ0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6R2VvbWV0cnk6OnBhZGRpbmdCb3R0
b20gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpHZW9tZXRyeTo6cGFkZGluZ1Jp
Z2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6R2VvbWV0cnk6OnZlcnRpY2Fs
UGFkZGluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Okdlb21ldHJ5Ojpob3Jp
em9udGFsUGFkZGluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Okdlb21ldHJ5
Ojpib3JkZXJUb3AgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpHZW9tZXRyeTo6
Ym9yZGVyTGVmdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Okdlb21ldHJ5Ojpi
b3JkZXJCb3R0b20gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpHZW9tZXRyeTo6
Ym9yZGVyUmlnaHQgY29uc3QpOgorICAgICAgICAqIGxheW91dC9sYXlvdXR0cmVlL0xheW91dFRy
ZWVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6b3V0cHV0TGF5b3V0Qm94
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6b3V0cHV0TGF5b3V0VHJlZSk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OnNob3dMYXlvdXRUcmVlKToKKyAgICAgICAgKiBsYXlvdXQvdGFi
bGVmb3JtYXR0aW5nL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuY3BwOgorICAgICAgICAqIGxheW91
dC90YWJsZWZvcm1hdHRpbmcvVGFibGVGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcDoKKyAg
ICAgICAgKiBsYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlTGF5b3V0LmNwcDoKKyAgICAgICAg
KiBwYWdlL0ZyYW1lVmlld0xheW91dENvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVWaWV3TGF5b3V0Q29udGV4dDo6bGF5b3V0VXNpbmdGb3JtYXR0aW5nQ29udGV4dCk6CisKIDIw
MjAtMDktMTQgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAg
ICAgRmlyc3Qgc3RlcHMgdG93YXJkcyBMRkMgcGFpbnRpbmcgaW4gV2ViS2l0MgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dAppbmRleCAzMDM2NjRjNjk0ZjNlOGEzOWJhODJjMGU2ZDY3YWRmNDlmNjEyNjJiLi44NWJjZDBl
MzIzMjBiYzc2NTJmZmI4ZTVkNTk1MGYwMTg5MjdjZmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTQ1
Nyw2ICsxNDU3LDcgQEAgbGF5b3V0L2ludmFsaWRhdGlvbi9JbnZhbGlkYXRpb25Db250ZXh0LmNw
cAogbGF5b3V0L2ludmFsaWRhdGlvbi9JbnZhbGlkYXRpb25TdGF0ZS5jcHAKIGxheW91dC9sYXlv
dXR0cmVlL0xheW91dEJveC5jcHAKIGxheW91dC9sYXlvdXR0cmVlL0xheW91dENvbnRhaW5lckJv
eC5jcHAKK2xheW91dC9sYXlvdXR0cmVlL0xheW91dEdlb21ldHJ5LmNwcAogbGF5b3V0L2xheW91
dHRyZWUvTGF5b3V0SW5pdGlhbENvbnRhaW5pbmdCbG9jay5jcHAKIGxheW91dC9sYXlvdXR0cmVl
L0xheW91dElubGluZVRleHRCb3guY3BwCiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRMaW5lQnJl
YWtCb3guY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggNzRmNjFjYjJmNzdhZmNiOTVjOTA2MjQwMjdlNzUxYzhhN2VjMGYyYi4u
ZTk3MjdiMzFkZDdlODljYmM4Y2IyN2RkODNlOGQwZjc2ZGI0YmI3YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjA1OSw2ICs2
MDU5LDggQEAKIAkJMEZFQzEyMEIyMkJGMkNDNzAwNEU5RDM1IC8qIExheWVyQW5jZXN0b3JDbGlw
cGluZ1N0YWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExheWVyQW5jZXN0b3JDbGlwcGluZ1N0
YWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZFRjIwQ0QxQkQ0QTI0MTAw
MTI4RTVEIC8qIExlbmd0aFNpemUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTGVuZ3RoU2l6ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRUYy
MENGMUJENEE2NEYwMDEyOEU1RCAvKiBSZW5kZXJTdHlsZUNvbnN0YW50cy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJTdHlsZUNvbnN0YW50cy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRjI5QTUzMjUxMDFBNjEwMDNDMzRFMiAvKiBM
YXlvdXRHZW9tZXRyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMYXlvdXRHZW9tZXRyeS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRkYyOUE1NTI1MTAxQTYxMDAzQzM0RTIgLyogTGF5b3V0
R2VvbWV0cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTGF5b3V0R2VvbWV0cnkuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkYyRTgwQzFFRTBENDMwMDA5RUFCRDQgLyogUGVy
Zm9ybWFuY2VMb2dnaW5nQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFBlcmZvcm1hbmNlTG9nZ2luZ0NsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGRjNCOTI0MUVFM0I2REUwMEI4NDE0NCAvKiBKU0RPTVF1YWQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNET01RdWFkLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZGM0I5MjUxRUUzQjZERTAwQjg0MTQ0IC8qIEpTRE9NUXVh
ZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RPTVF1YWQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3NDc0LDYgKzE3NDc2LDggQEAKIAkJCQkxMTk5RkE0
NTIwOEUzNUEzMDAyMzU4Q0MgLyogTGF5b3V0Q29udGFpbmVyQm94LmNwcCAqLywKIAkJCQkxMTk5
RkE0NDIwOEUzNUEzMDAyMzU4Q0MgLyogTGF5b3V0Q29udGFpbmVyQm94LmggKi8sCiAJCQkJMTFC
MDQyRkIyMEIwRTIxNDAwODI4QTZCIC8qIExheW91dERlc2NlbmRhbnRJdGVyYXRvci5oICovLAor
CQkJCTBGRjI5QTU1MjUxMDFBNjEwMDNDMzRFMiAvKiBMYXlvdXRHZW9tZXRyeS5jcHAgKi8sCisJ
CQkJMEZGMjlBNTMyNTEwMUE2MTAwM0MzNEUyIC8qIExheW91dEdlb21ldHJ5LmggKi8sCiAJCQkJ
NkZCMEVEMTEyNDI3QjZDNjAwMjczN0U2IC8qIExheW91dEluaXRpYWxDb250YWluaW5nQmxvY2su
Y3BwICovLAogCQkJCTZGNjM4M0Y0MjQyN0FGNDkwMERBQkE1MyAvKiBMYXlvdXRJbml0aWFsQ29u
dGFpbmluZ0Jsb2NrLmggKi8sCiAJCQkJNkYwQjk4QjYyM0YyNjkwNjAwRUVDMkYyIC8qIExheW91
dElubGluZVRleHRCb3guY3BwICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L0Zvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5n
Q29udGV4dC5jcHAKaW5kZXggYjc0NzQ3OTUxNzY4ZGU3ZGUwN2ZmOTEzYmEzMTY0YTIwZmZkYTBj
ZC4uNjVlODYzYTRiMjgxZTEzMzVlYzY3ZTJhOTI2NWM1MzZhOTE5NmE4YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC0yOCwxMyArMjgsMTMgQEAK
IAogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQogCi0jaW5jbHVkZSAiRGlz
cGxheUJveC5oIgogI2luY2x1ZGUgIkZvcm1hdHRpbmdTdGF0ZS5oIgogI2luY2x1ZGUgIkludmFs
aWRhdGlvblN0YXRlLmgiCiAjaW5jbHVkZSAiTGF5b3V0Qm94LmgiCiAjaW5jbHVkZSAiTGF5b3V0
Q29udGFpbmVyQm94LmgiCiAjaW5jbHVkZSAiTGF5b3V0Q29udGV4dC5oIgogI2luY2x1ZGUgIkxh
eW91dERlc2NlbmRhbnRJdGVyYXRvci5oIgorI2luY2x1ZGUgIkxheW91dEdlb21ldHJ5LmgiCiAj
aW5jbHVkZSAiTGF5b3V0SW5pdGlhbENvbnRhaW5pbmdCbG9jay5oIgogI2luY2x1ZGUgIkxheW91
dFJlcGxhY2VkQm94LmgiCiAjaW5jbHVkZSAiTGF5b3V0U3RhdGUuaCIKQEAgLTE2OCw3ICsxNjgs
NyBAQCB2b2lkIEZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRPdXRPZkZsb3dDb250ZW50KEludmFs
aWRhdGlvblN0YXRlJiBpbnZhbGlkYXRpb25TdAogICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0
aW5nQ29udGV4dExheW91dCwgc3RyZWFtIDw8ICJFbmQ6IGxheW91dCBvdXQtb2YtZmxvdyBjb250
ZW50IC0+IGNvbnRleHQ6ICIgPDwgJmxheW91dFN0YXRlKCkgPDwgIiByb290OiAiIDw8ICZyb290
KCkpOwogfQogCi1jb25zdCBEaXNwbGF5OjpCb3gmIEZvcm1hdHRpbmdDb250ZXh0OjpnZW9tZXRy
eUZvckJveChjb25zdCBCb3gmIGxheW91dEJveCwgT3B0aW9uYWw8RXNjYXBlUmVhc29uPiBlc2Nh
cGVSZWFzb24pIGNvbnN0Citjb25zdCBMYXlvdXQ6Okdlb21ldHJ5JiBGb3JtYXR0aW5nQ29udGV4
dDo6Z2VvbWV0cnlGb3JCb3goY29uc3QgQm94JiBsYXlvdXRCb3gsIE9wdGlvbmFsPEVzY2FwZVJl
YXNvbj4gZXNjYXBlUmVhc29uKSBjb25zdAogewogICAgIFVOVVNFRF9QQVJBTShlc2NhcGVSZWFz
b24pOwogI2lmIEFTU0VSVF9FTkFCTEVECkBAIC0yNTEsNyArMjUxLDcgQEAgY29uc3QgRGlzcGxh
eTo6Qm94JiBGb3JtYXR0aW5nQ29udGV4dDo6Z2VvbWV0cnlGb3JCb3goY29uc3QgQm94JiBsYXlv
dXRCb3gsIE9wdGkKICNlbmRpZgogICAgIEFTU0VSVChpc09rVG9BY2Nlc3NEaXNwbGF5Qm94KCkp
OwogICAgIEFTU0VSVChsYXlvdXRTdGF0ZSgpLmhhc0Rpc3BsYXlCb3gobGF5b3V0Qm94KSk7Ci0g
ICAgcmV0dXJuIGxheW91dFN0YXRlKCkuZGlzcGxheUJveEZvckxheW91dEJveChsYXlvdXRCb3gp
OworICAgIHJldHVybiBsYXlvdXRTdGF0ZSgpLmdlb21ldHJ5Rm9yTGF5b3V0Qm94KGxheW91dEJv
eCk7CiB9CiAKIHZvaWQgRm9ybWF0dGluZ0NvbnRleHQ6OmNvbGxlY3RPdXRPZkZsb3dEZXNjZW5k
YW50c0lmTmVlZGVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0
aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmgK
aW5kZXggNTZjZWU2MzFmYTdjOTE1ODI2YzE0ZDg1NmFiMjM5ODk3ZDIwNDllYS4uYTNlYmFjYjg5
NDY1NWRkNjIwMmEzNmEwNmZmNDA0NDA4MzFkY2Y3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L0Zvcm1hdHRpbmdDb250ZXh0LmgKQEAgLTM1LDkgKzM1LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1uYW1lc3BhY2UgRGlzcGxheSB7Ci1jbGFzcyBCb3g7Ci19CiBjbGFzcyBMYXlvdXRT
aXplOwogc3RydWN0IExlbmd0aDsKIApAQCAtNTIsNiArNDksNyBAQCBzdHJ1Y3QgQ29udGVudEhl
aWdodEFuZE1hcmdpbjsKIHN0cnVjdCBDb250ZW50V2lkdGhBbmRNYXJnaW47CiBzdHJ1Y3QgRWRn
ZXM7CiBjbGFzcyBGb3JtYXR0aW5nU3RhdGU7CitjbGFzcyBHZW9tZXRyeTsKIHN0cnVjdCBIb3Jp
em9udGFsR2VvbWV0cnk7CiBjbGFzcyBJbnZhbGlkYXRpb25TdGF0ZTsKIGNsYXNzIExheW91dFN0
YXRlOwpAQCAtMTA2LDcgKzEwNCw3IEBAIHB1YmxpYzoKICAgICAgICAgU3Ryb2tlT3ZlcmZsb3dO
ZWVkc1ZpZXdwb3J0R2VvbWV0cnksCiAgICAgICAgIFRhYmxlTmVlZHNBY2Nlc3NUb1RhYmxlV3Jh
cHBlcgogICAgIH07Ci0gICAgY29uc3QgRGlzcGxheTo6Qm94JiBnZW9tZXRyeUZvckJveChjb25z
dCBCb3gmLCBPcHRpb25hbDxFc2NhcGVSZWFzb24+ID0gV1RGOjpudWxsb3B0KSBjb25zdDsKKyAg
ICBjb25zdCBMYXlvdXQ6Okdlb21ldHJ5JiBnZW9tZXRyeUZvckJveChjb25zdCBCb3gmLCBPcHRp
b25hbDxFc2NhcGVSZWFzb24+ID0gV1RGOjpudWxsb3B0KSBjb25zdDsKICAgICBjb25zdCBDb250
YWluZXJCb3gmIHJvb3QoKSBjb25zdCB7IHJldHVybiAqbV9yb290OyB9CiAKICAgICBMYXlvdXRT
dGF0ZSYgbGF5b3V0U3RhdGUoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAppbmRleCAwNWNlOTZlODE2NzhjMWU4MTYw
YWYyNDZiMzc3MzU1ZjI1MTU5NTVhLi44MDFhMWJjMWFhNWRjNjczNjliMzIyNzA1ZDA4ZTY4MmNh
OTllOTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRl
eHRHZW9tZXRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250
ZXh0R2VvbWV0cnkuY3BwCkBAIC0yOTcsNyArMjk3LDcgQEAgTGF5b3V0VW5pdCBGb3JtYXR0aW5n
Q29udGV4dDo6R2VvbWV0cnk6OnN0YXRpY1ZlcnRpY2FsUG9zaXRpb25Gb3JPdXRPZkZsb3dQb3Np
dGkKICAgICAvLyBTdGFydCB3aXRoIHRoZSBwYXJlbnQgc2luY2Ugd2UgcHJldGVuZCB0aGF0IHRo
aXMgYm94IGlzIG5vcm1hbCBmbG93LgogICAgIGZvciAoYXV0byogYW5jZXN0b3IgPSAmbGF5b3V0
Qm94LnBhcmVudCgpOyBhbmNlc3RvciAhPSAmY29udGFpbmluZ0Jsb2NrOyBhbmNlc3RvciA9ICZh
bmNlc3Rvci0+Y29udGFpbmluZ0Jsb2NrKCkpIHsKICAgICAgICAgYXV0byYgYm94R2VvbWV0cnkg
PSBmb3JtYXR0aW5nQ29udGV4dC5nZW9tZXRyeUZvckJveCgqYW5jZXN0b3IsIEVzY2FwZVJlYXNv
bjo6T3V0T2ZGbG93Qm94TmVlZHNJbkZsb3dHZW9tZXRyeSk7Ci0gICAgICAgIC8vIERpc3BsYXk6
OkJveDo6dG9wIGlzIHRoZSBib3JkZXIgYm94IHRvcCBwb3NpdGlvbiBpbiBpdHMgY29udGFpbmlu
ZyBibG9jaydzIGNvb3JkaW5hdGUgc3lzdGVtLgorICAgICAgICAvLyBMYXlvdXQ6Okdlb21ldHJ5
Ojp0b3AgaXMgdGhlIGJvcmRlciBib3ggdG9wIHBvc2l0aW9uIGluIGl0cyBjb250YWluaW5nIGJs
b2NrJ3MgY29vcmRpbmF0ZSBzeXN0ZW0uCiAgICAgICAgIHRvcCArPSBib3hHZW9tZXRyeS50b3Ao
KTsKICAgICAgICAgQVNTRVJUKCFhbmNlc3Rvci0+aXNQb3NpdGlvbmVkKCkgfHwgbGF5b3V0Qm94
LmlzRml4ZWRQb3NpdGlvbmVkKCkpOwogICAgIH0KQEAgLTMxOSw3ICszMTksNyBAQCBMYXlvdXRV
bml0IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6c3RhdGljSG9yaXpvbnRhbFBvc2l0aW9u
Rm9yT3V0T2ZGbG93UG9zaQogICAgIC8vIFN0YXJ0IHdpdGggdGhlIHBhcmVudCBzaW5jZSB3ZSBw
cmV0ZW5kIHRoYXQgdGhpcyBib3ggaXMgbm9ybWFsIGZsb3cuCiAgICAgZm9yIChhdXRvKiBhbmNl
c3RvciA9ICZsYXlvdXRCb3gucGFyZW50KCk7IGFuY2VzdG9yICE9ICZjb250YWluaW5nQmxvY2s7
IGFuY2VzdG9yID0gJmFuY2VzdG9yLT5jb250YWluaW5nQmxvY2soKSkgewogICAgICAgICBhdXRv
JiBib3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250ZXh0Lmdlb21ldHJ5Rm9yQm94KCphbmNlc3Rv
ciwgRXNjYXBlUmVhc29uOjpPdXRPZkZsb3dCb3hOZWVkc0luRmxvd0dlb21ldHJ5KTsKLSAgICAg
ICAgLy8gRGlzcGxheTo6Qm94OjpsZWZ0IGlzIHRoZSBib3JkZXIgYm94IGxlZnQgcG9zaXRpb24g
aW4gaXRzIGNvbnRhaW5pbmcgYmxvY2sncyBjb29yZGluYXRlIHN5c3RlbS4KKyAgICAgICAgLy8g
TGF5b3V0OjpHZW9tZXRyeTo6bGVmdCBpcyB0aGUgYm9yZGVyIGJveCBsZWZ0IHBvc2l0aW9uIGlu
IGl0cyBjb250YWluaW5nIGJsb2NrJ3MgY29vcmRpbmF0ZSBzeXN0ZW0uCiAgICAgICAgIGxlZnQg
Kz0gYm94R2VvbWV0cnkubGVmdCgpOwogICAgICAgICBBU1NFUlQoIWFuY2VzdG9yLT5pc1Bvc2l0
aW9uZWQoKSB8fCBsYXlvdXRCb3guaXNGaXhlZFBvc2l0aW9uZWQoKSk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHAKaW5kZXgg
MTQ2Mzc1YThjOWFlNDQyYzM1OTJkZWMzM2UyMDQ4NWJmYjE4ZWI3Ny4uODg1ZWRmYmFhY2I1YjA4
NjdkMDVkYWM5ZGIzZjE3YzczNzg4ODYyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L0Zvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvRm9ybWF0dGluZ0NvbnRleHRRdWlya3MuY3BwCkBAIC0yOCw4ICsyOCw4IEBACiAKICNpZiBF
TkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKIAotI2luY2x1ZGUgIkRpc3BsYXlCb3gu
aCIKICNpbmNsdWRlICJMYXlvdXRCb3guaCIKKyNpbmNsdWRlICJMYXlvdXRHZW9tZXRyeS5oIgog
I2luY2x1ZGUgIkxheW91dEluaXRpYWxDb250YWluaW5nQmxvY2suaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdTdGF0
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ1N0YXRlLmNwcAppbmRleCA2
M2M2NzFlNjJlMTUyZGQ0NWI0Yjc2MjJlNTY4OGNkMzYxZDg0NDkyLi44YTIxOWNjZjExMTYyYTZj
YTRiYTc0MzhiODZmYWVlOTVmYTBlMWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvRm9ybWF0dGluZ1N0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0
dGluZ1N0YXRlLmNwcApAQCAtMjgsOCArMjgsOCBAQAogCiAjaWYgRU5BQkxFKExBWU9VVF9GT1JN
QVRUSU5HX0NPTlRFWFQpCiAKLSNpbmNsdWRlICJEaXNwbGF5Qm94LmgiCiAjaW5jbHVkZSAiRmxv
YXRpbmdTdGF0ZS5oIgorI2luY2x1ZGUgIkxheW91dEdlb21ldHJ5LmgiCiAjaW5jbHVkZSA8d3Rm
L0lzb01hbGxvY0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDgsMTMgKzQ4
LDEzIEBAIEZvcm1hdHRpbmdTdGF0ZTo6fkZvcm1hdHRpbmdTdGF0ZSgpCiB7CiB9CiAKLURpc3Bs
YXk6OkJveCYgRm9ybWF0dGluZ1N0YXRlOjpkaXNwbGF5Qm94KGNvbnN0IEJveCYgbGF5b3V0Qm94
KQorTGF5b3V0OjpHZW9tZXRyeSYgRm9ybWF0dGluZ1N0YXRlOjpkaXNwbGF5Qm94KGNvbnN0IEJv
eCYgbGF5b3V0Qm94KQogewogICAgIC8vIFNob3VsZCBuZXZlciBuZWVkIHRvIG11dGF0ZSBhIGRp
c3BsYXkgYm94IG91dHNpZGUgb2YgdGhlIGZvcm1hdHRpbmcgY29udGV4dC4KICAgICBBU1NFUlQo
JmxheW91dFN0YXRlKCkuZXN0YWJsaXNoZWRGb3JtYXR0aW5nU3RhdGUobGF5b3V0Qm94LmZvcm1h
dHRpbmdDb250ZXh0Um9vdCgpKSA9PSB0aGlzKTsKICAgICAvLyBBbm9ueW1vdXMgdGV4dCB3cmFw
cGVycy9saW5lIGJyZWFrIGJveGVzIHNob3VsZCBub3QgbmVlZCBkaXNwbGF5IGJveGVzLgogICAg
IEFTU0VSVCghbGF5b3V0Qm94LmlzSW5saW5lVGV4dEJveCgpICYmICghbGF5b3V0Qm94LmlzTGlu
ZUJyZWFrQm94KCkgfHwgbGF5b3V0Qm94LmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKSk7Ci0gICAg
cmV0dXJuIGxheW91dFN0YXRlKCkuZW5zdXJlRGlzcGxheUJveEZvckxheW91dEJveChsYXlvdXRC
b3gpOworICAgIHJldHVybiBsYXlvdXRTdGF0ZSgpLmVuc3VyZUdlb21ldHJ5Rm9yTGF5b3V0Qm94
KGxheW91dEJveCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9G
b3JtYXR0aW5nU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nU3RhdGUu
aAppbmRleCBjNjI5MThkNjVjM2UwNmVhMWI2YmVjYzZlYzY3ZDA2ZjViOGUyZWQ2Li5mZWNkNzkw
Nzk2YWRkZmYxNmYwODNmOWIxM2ZhMDRlMmIzYjllOGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvRm9ybWF0dGluZ1N0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L0Zvcm1hdHRpbmdTdGF0ZS5oCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKIAogICAgIExheW91
dFN0YXRlJiBsYXlvdXRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5b3V0U3RhdGU7IH0KIAot
ICAgIERpc3BsYXk6OkJveCYgZGlzcGxheUJveChjb25zdCBCb3gmIGxheW91dEJveCk7CisgICAg
TGF5b3V0OjpHZW9tZXRyeSYgZGlzcGxheUJveChjb25zdCBCb3gmIGxheW91dEJveCk7CiAgICAg
Ly8gU2luY2Ugd2UgbGF5b3V0IHRoZSBvdXQtb2YtZmxvdyBib3hlcyBhdCB0aGUgZW5kIG9mIHRo
ZSBmb3JtYXR0aW5nIGNvbnRleHQgbGF5b3V0LCBpdCdzIG9rYXkgdG8gc3RvcmUgdGhlbSBpbiB0
aGUgZm9ybWF0dGluZyBzdGF0ZSAtYXMgb3Bwb3NlZCB0byB0aGUgY29udGFpbmluZyBibG9jayBs
ZXZlbC4KICAgICB1c2luZyBPdXRPZkZsb3dCb3hMaXN0ID0gVmVjdG9yPFdlYWtQdHI8Y29uc3Qg
Qm94Pj47CiAgICAgdm9pZCBhZGRPdXRPZkZsb3dCb3goY29uc3QgQm94JiBvdXRPZkZsb3dCb3gp
IHsgbV9vdXRPZkZsb3dCb3hlcy5hcHBlbmQobWFrZVdlYWtQdHIob3V0T2ZGbG93Qm94KSk7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRDb250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRDb250ZXh0LmNwcAppbmRleCAzYjU2MTlmNzY0MDU1
Mjk5ZGZlYTcyNzFkNzg2NjFlYTliOTVhZDA2Li5mZjNjMTRlZmExYTJiYWNkMzA1NmVjMmM0OGJj
OTYwOGY2YTgyNzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0Q29u
dGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dENvbnRleHQuY3BwCkBA
IC0zMCw3ICszMCw2IEBACiAKICNpbmNsdWRlICJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmgiCiAj
aW5jbHVkZSAiQmxvY2tGb3JtYXR0aW5nU3RhdGUuaCIKLSNpbmNsdWRlICJEaXNwbGF5Qm94Lmgi
CiAjaW5jbHVkZSAiRGlzcGxheVBhaW50ZXIuaCIKICNpbmNsdWRlICJJbmxpbmVGb3JtYXR0aW5n
Q29udGV4dC5oIgogI2luY2x1ZGUgIklubGluZUZvcm1hdHRpbmdTdGF0ZS5oIgpAQCAtMzgsNiAr
MzcsNyBAQAogI2luY2x1ZGUgIkludmFsaWRhdGlvblN0YXRlLmgiCiAjaW5jbHVkZSAiTGF5b3V0
Qm94LmgiCiAjaW5jbHVkZSAiTGF5b3V0Q29udGFpbmVyQm94LmgiCisjaW5jbHVkZSAiTGF5b3V0
R2VvbWV0cnkuaCIKICNpbmNsdWRlICJMYXlvdXRQaGFzZS5oIgogI2luY2x1ZGUgIkxheW91dFRy
ZWVCdWlsZGVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGVDb25zdGFudHMuaCIKQEAgLTY0LDcg
KzY0LDcgQEAgdm9pZCBMYXlvdXRDb250ZXh0OjpsYXlvdXQoY29uc3QgTGF5b3V0U2l6ZSYgcm9v
dENvbnRlbnRCb3hTaXplLCBJbnZhbGlkYXRpb25TdGEKICAgICAvLyBOb3RlIHRoYXQgd2UgbmV2
ZXIgbGF5b3V0IHRoZSByb290IGJveC4gSXQgaGFzIHRvIGhhdmUgYW4gYWxyZWFkeSBjb21wdXRl
ZCBnZW9tZXRyeSAoaW4gY2FzZSBvZiBJQ0IsIGl0J3MgdGhlIHZpZXcgZ2VvbWV0cnkpLgogICAg
IC8vIElDQiBlc3RhYmxpc2hlcyB0aGUgaW5pdGlhbCBCRkMsIGJ1dCBpdCBkb2VzIG5vdCBsaXZl
IGluIGEgZm9ybWF0dGluZyBjb250ZXh0IGFuZCB3aGlsZSBhIG5vbi1JQ0Igcm9vdChzdWJ0cmVl
IGxheW91dCkgaGFzIHRvIGhhdmUgYSBmb3JtYXR0aW5nIGNvbnRleHQsCiAgICAgLy8gd2UgY291
bGQgbm90IGxheSBpdCBvdXQgZXZlbiBpZiB3ZSB3YW50ZWQgdG8gc2luY2UgaXQncyBvdXRzaWRl
IG9mIHRoaXMgTGF5b3V0Q29udGV4dC4KLSAgICBhdXRvJiBkaXNwbGF5Qm94ID0gbGF5b3V0U3Rh
dGUoKS5kaXNwbGF5Qm94Rm9yUm9vdExheW91dEJveCgpOworICAgIGF1dG8mIGRpc3BsYXlCb3gg
PSBsYXlvdXRTdGF0ZSgpLmdlb21ldHJ5Rm9yUm9vdExheW91dEJveCgpOwogICAgIGRpc3BsYXlC
b3guc2V0SG9yaXpvbnRhbE1hcmdpbih7IH0pOwogICAgIGRpc3BsYXlCb3guc2V0VmVydGljYWxN
YXJnaW4oeyB9KTsKICAgICBkaXNwbGF5Qm94LnNldEJvcmRlcih7IH0pOwpAQCAtOTYsNyArOTYs
NyBAQCB2b2lkIExheW91dENvbnRleHQ6OmxheW91dEZvcm1hdHRpbmdDb250ZXh0U3VidHJlZShj
b25zdCBDb250YWluZXJCb3gmIGZvcm1hdHRpbgogICAgICAgICByZXR1cm47CiAKICAgICBhdXRv
IGZvcm1hdHRpbmdDb250ZXh0ID0gY3JlYXRlRm9ybWF0dGluZ0NvbnRleHQoZm9ybWF0dGluZ0Nv
bnRleHRSb290LCBsYXlvdXRTdGF0ZSgpKTsKLSAgICBhdXRvJiBkaXNwbGF5Qm94ID0gbGF5b3V0
U3RhdGUoKS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGZvcm1hdHRpbmdDb250ZXh0Um9vdCk7Cisg
ICAgYXV0byYgZGlzcGxheUJveCA9IGxheW91dFN0YXRlKCkuZ2VvbWV0cnlGb3JMYXlvdXRCb3go
Zm9ybWF0dGluZ0NvbnRleHRSb290KTsKIAogICAgIGlmIChmb3JtYXR0aW5nQ29udGV4dFJvb3Qu
aGFzSW5GbG93T3JGbG9hdGluZ0NoaWxkKCkpIHsKICAgICAgICAgYXV0byBjb25zdHJhaW50c0Zv
ckluRmxvd0NvbnRlbnQgPSBGb3JtYXR0aW5nQ29udGV4dDo6Q29uc3RyYWludHNGb3JJbkZsb3dD
b250ZW50IHsgeyBkaXNwbGF5Qm94LmNvbnRlbnRCb3hMZWZ0KCksIGRpc3BsYXlCb3guY29udGVu
dEJveFdpZHRoKCkgfSwgeyBkaXNwbGF5Qm94LmNvbnRlbnRCb3hUb3AoKSwgeyB9IH0gfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0ZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvTGF5b3V0U3RhdGUuY3BwCmluZGV4IDYzOWI4YzJiODM5MzMxZjE5ZTE0
NDlhZDYxOGIxYmE1YzhhOTRjNTguLjg2ZmU2ZGVjNGEwZTFmOTU0OWJmMjZhYWM1ZWYzZTFmYjM2
ZGRjMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFN0YXRlLmNwcApAQCAtMjksNyArMjks
NyBAQAogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQogCiAjaW5jbHVkZSAi
QmxvY2tGb3JtYXR0aW5nU3RhdGUuaCIKLSNpbmNsdWRlICJEaXNwbGF5Qm94LmgiCisjaW5jbHVk
ZSAiTGF5b3V0R2VvbWV0cnkuaCIKICNpbmNsdWRlICJGbG9hdGluZ1N0YXRlLmgiCiAjaW5jbHVk
ZSAiSW5saW5lRm9ybWF0dGluZ1N0YXRlLmgiCiAjaW5jbHVkZSAiTGF5b3V0Qm94LmgiCkBAIC02
MiwyMyArNjIsMjMgQEAgTGF5b3V0U3RhdGU6OkxheW91dFN0YXRlKGNvbnN0IERvY3VtZW50JiBk
b2N1bWVudCwgY29uc3QgQ29udGFpbmVyQm94JiByb290Q29udGEKIAogTGF5b3V0U3RhdGU6On5M
YXlvdXRTdGF0ZSgpID0gZGVmYXVsdDsKIAotRGlzcGxheTo6Qm94JiBMYXlvdXRTdGF0ZTo6ZGlz
cGxheUJveEZvclJvb3RMYXlvdXRCb3goKQorTGF5b3V0OjpHZW9tZXRyeSYgTGF5b3V0U3RhdGU6
Omdlb21ldHJ5Rm9yUm9vdExheW91dEJveCgpCiB7Ci0gICAgcmV0dXJuIGVuc3VyZURpc3BsYXlC
b3hGb3JMYXlvdXRCb3gocm9vdCgpKTsKKyAgICByZXR1cm4gZW5zdXJlR2VvbWV0cnlGb3JMYXlv
dXRCb3gocm9vdCgpKTsKIH0KIAotRGlzcGxheTo6Qm94JiBMYXlvdXRTdGF0ZTo6ZW5zdXJlRGlz
cGxheUJveEZvckxheW91dEJveFNsb3coY29uc3QgQm94JiBsYXlvdXRCb3gpCitMYXlvdXQ6Okdl
b21ldHJ5JiBMYXlvdXRTdGF0ZTo6ZW5zdXJlRGlzcGxheUJveEZvckxheW91dEJveFNsb3coY29u
c3QgQm94JiBsYXlvdXRCb3gpCiB7CiAgICAgaWYgKGxheW91dEJveC5jYW5DYWNoZUZvckxheW91
dFN0YXRlKCp0aGlzKSkgewogICAgICAgICBBU1NFUlQoIWxheW91dEJveC5jYWNoZWREaXNwbGF5
Qm94Rm9yTGF5b3V0U3RhdGUoKnRoaXMpKTsKLSAgICAgICAgYXV0byBuZXdCb3ggPSBtYWtlVW5p
cXVlPERpc3BsYXk6OkJveD4oKTsKKyAgICAgICAgYXV0byBuZXdCb3ggPSBtYWtlVW5pcXVlPExh
eW91dDo6R2VvbWV0cnk+KCk7CiAgICAgICAgIGF1dG8mIG5ld0JveFB0ciA9ICpuZXdCb3g7CiAg
ICAgICAgIGxheW91dEJveC5zZXRDYWNoZWREaXNwbGF5Qm94Rm9yTGF5b3V0U3RhdGUoKnRoaXMs
IFdURk1vdmUobmV3Qm94KSk7CiAgICAgICAgIHJldHVybiBuZXdCb3hQdHI7CiAgICAgfQogCiAg
ICAgcmV0dXJuICptX2xheW91dFRvRGlzcGxheUJveC5lbnN1cmUoJmxheW91dEJveCwgW10gewot
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxEaXNwbGF5OjpCb3g+KCk7CisgICAgICAgIHJldHVy
biBtYWtlVW5pcXVlPExheW91dDo6R2VvbWV0cnk+KCk7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVl
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0U3RhdGUuaCBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0ZS5oCmluZGV4IDU2MDBiOWU5MDU2NzBi
ZjYzZTIwZTVhZmE3NTY4Y2ExZDJmNGJkYWUuLjMxYWYyOWIyNTBjODUxYTI0MzhjMTgwNTQ4Nzdj
Mjk0OTdjZjYzNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0ZS5oCkBAIC0zNSwxNSAr
MzUsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1uYW1lc3BhY2UgRGlzcGxheSB7Ci1j
bGFzcyBCb3g7Ci19Ci0KIG5hbWVzcGFjZSBMYXlvdXQgewogCitjbGFzcyBCbG9ja0Zvcm1hdHRp
bmdTdGF0ZTsKIGNsYXNzIEZvcm1hdHRpbmdDb250ZXh0OwogY2xhc3MgRm9ybWF0dGluZ1N0YXRl
OwotY2xhc3MgQmxvY2tGb3JtYXR0aW5nU3RhdGU7CitjbGFzcyBHZW9tZXRyeTsKIGNsYXNzIElu
bGluZUZvcm1hdHRpbmdTdGF0ZTsKIGNsYXNzIFRhYmxlRm9ybWF0dGluZ1N0YXRlOwogCkBAIC03
MSw5ICs2OCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlcmVnaXN0ZXJGb3JtYXR0aW5nQ29udGV4
dChjb25zdCBGb3JtYXR0aW5nQ29udGV4dCYgZm9ybWF0dGluZ0NvbnRleHQpIHsgbV9mb3JtYXR0
aW5nQ29udGV4dExpc3QucmVtb3ZlKCZmb3JtYXR0aW5nQ29udGV4dCk7IH0KICNlbmRpZgogCi0g
ICAgRGlzcGxheTo6Qm94JiBkaXNwbGF5Qm94Rm9yUm9vdExheW91dEJveCgpOwotICAgIERpc3Bs
YXk6OkJveCYgZW5zdXJlRGlzcGxheUJveEZvckxheW91dEJveChjb25zdCBCb3gmKTsKLSAgICBj
b25zdCBEaXNwbGF5OjpCb3gmIGRpc3BsYXlCb3hGb3JMYXlvdXRCb3goY29uc3QgQm94JikgY29u
c3Q7CisgICAgTGF5b3V0OjpHZW9tZXRyeSYgZ2VvbWV0cnlGb3JSb290TGF5b3V0Qm94KCk7Cisg
ICAgTGF5b3V0OjpHZW9tZXRyeSYgZW5zdXJlR2VvbWV0cnlGb3JMYXlvdXRCb3goY29uc3QgQm94
Jik7CisgICAgY29uc3QgTGF5b3V0OjpHZW9tZXRyeSYgZ2VvbWV0cnlGb3JMYXlvdXRCb3goY29u
c3QgQm94JikgY29uc3Q7CiAKICAgICBib29sIGhhc0Rpc3BsYXlCb3goY29uc3QgQm94JikgY29u
c3Q7CiAKQEAgLTkzLDcgKzkwLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHZvaWQgc2V0
UXVpcmtzTW9kZShRdWlya3NNb2RlIHF1aXJrc01vZGUpIHsgbV9xdWlya3NNb2RlID0gcXVpcmtz
TW9kZTsgfQotICAgIERpc3BsYXk6OkJveCYgZW5zdXJlRGlzcGxheUJveEZvckxheW91dEJveFNs
b3coY29uc3QgQm94Jik7CisgICAgTGF5b3V0OjpHZW9tZXRyeSYgZW5zdXJlRGlzcGxheUJveEZv
ckxheW91dEJveFNsb3coY29uc3QgQm94Jik7CiAKICAgICBIYXNoTWFwPGNvbnN0IENvbnRhaW5l
ckJveCosIHN0ZDo6dW5pcXVlX3B0cjxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+PiBtX2lubGluZUZv
cm1hdHRpbmdTdGF0ZXM7CiAgICAgSGFzaE1hcDxjb25zdCBDb250YWluZXJCb3gqLCBzdGQ6OnVu
aXF1ZV9wdHI8QmxvY2tGb3JtYXR0aW5nU3RhdGU+PiBtX2Jsb2NrRm9ybWF0dGluZ1N0YXRlczsK
QEAgLTEwNCw3ICsxMDEsNyBAQCBwcml2YXRlOgogI2lmbmRlZiBOREVCVUcKICAgICBIYXNoU2V0
PGNvbnN0IEZvcm1hdHRpbmdDb250ZXh0Kj4gbV9mb3JtYXR0aW5nQ29udGV4dExpc3Q7CiAjZW5k
aWYKLSAgICBIYXNoTWFwPGNvbnN0IEJveCosIHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5OjpCb3g+
PiBtX2xheW91dFRvRGlzcGxheUJveDsKKyAgICBIYXNoTWFwPGNvbnN0IEJveCosIHN0ZDo6dW5p
cXVlX3B0cjxMYXlvdXQ6Okdlb21ldHJ5Pj4gbV9sYXlvdXRUb0Rpc3BsYXlCb3g7CiAgICAgUXVp
cmtzTW9kZSBtX3F1aXJrc01vZGUgeyBRdWlya3NNb2RlOjpObyB9OwogCiAgICAgV2Vha1B0cjxj
b25zdCBDb250YWluZXJCb3g+IG1fcm9vdENvbnRhaW5lcjsKQEAgLTEyMSwxNCArMTE4LDE0IEBA
IGlubGluZSBib29sIExheW91dFN0YXRlOjpoYXNEaXNwbGF5Qm94KGNvbnN0IEJveCYgbGF5b3V0
Qm94KSBjb25zdAogICAgIHJldHVybiBtX2xheW91dFRvRGlzcGxheUJveC5jb250YWlucygmbGF5
b3V0Qm94KTsKIH0KIAotaW5saW5lIERpc3BsYXk6OkJveCYgTGF5b3V0U3RhdGU6OmVuc3VyZURp
c3BsYXlCb3hGb3JMYXlvdXRCb3goY29uc3QgQm94JiBsYXlvdXRCb3gpCitpbmxpbmUgTGF5b3V0
OjpHZW9tZXRyeSYgTGF5b3V0U3RhdGU6OmVuc3VyZUdlb21ldHJ5Rm9yTGF5b3V0Qm94KGNvbnN0
IEJveCYgbGF5b3V0Qm94KQogewogICAgIGlmIChhdXRvKiBkaXNwbGF5Qm94ID0gbGF5b3V0Qm94
LmNhY2hlZERpc3BsYXlCb3hGb3JMYXlvdXRTdGF0ZSgqdGhpcykpCiAgICAgICAgIHJldHVybiAq
ZGlzcGxheUJveDsKICAgICByZXR1cm4gZW5zdXJlRGlzcGxheUJveEZvckxheW91dEJveFNsb3co
bGF5b3V0Qm94KTsKIH0KIAotaW5saW5lIGNvbnN0IERpc3BsYXk6OkJveCYgTGF5b3V0U3RhdGU6
OmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0Citpbmxp
bmUgY29uc3QgTGF5b3V0OjpHZW9tZXRyeSYgTGF5b3V0U3RhdGU6Omdlb21ldHJ5Rm9yTGF5b3V0
Qm94KGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAogewogICAgIGlmIChhdXRvKiBkaXNwbGF5
Qm94ID0gbGF5b3V0Qm94LmNhY2hlZERpc3BsYXlCb3hGb3JMYXlvdXRTdGF0ZSgqdGhpcykpCiAg
ICAgICAgIHJldHVybiAqZGlzcGxheUJveDsKQEAgLTE1MSw3ICsxNDgsNyBAQCBpbmxpbmUgYm9v
bCBCb3g6OmNhbkNhY2hlRm9yTGF5b3V0U3RhdGUoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0
YXRlKSBjb25zdAogICAgIHJldHVybiAhbV9jYWNoZWRMYXlvdXRTdGF0ZSB8fCBtX2NhY2hlZExh
eW91dFN0YXRlLmdldCgpID09ICZsYXlvdXRTdGF0ZTsKIH0KIAotaW5saW5lIERpc3BsYXk6OkJv
eCogQm94OjpjYWNoZWREaXNwbGF5Qm94Rm9yTGF5b3V0U3RhdGUoY29uc3QgTGF5b3V0U3RhdGUm
IGxheW91dFN0YXRlKSBjb25zdAoraW5saW5lIExheW91dDo6R2VvbWV0cnkqIEJveDo6Y2FjaGVk
RGlzcGxheUJveEZvckxheW91dFN0YXRlKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSkg
Y29uc3QKIHsKICAgICBpZiAobV9jYWNoZWRMYXlvdXRTdGF0ZS5nZXQoKSAhPSAmbGF5b3V0U3Rh
dGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L1ZlcmlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvVmVyaWZpY2F0
aW9uLmNwcAppbmRleCA3ZDAxMzYxZmMzODI4MjcyYzI0ZjNmOWFiOWYyOGE1MzVjMGZiOTVlLi4z
ZmJkNjhmNjNjNmJjM2E2ZThmODY4MjBhNzhkY2M1ZWI5ZWM2Y2JmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvVmVyaWZpY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvVmVyaWZpY2F0aW9uLmNwcApAQCAtMzAsMTIgKzMwLDEyIEBACiAKICNpZm5kZWYgTkRF
QlVHCiAjaW5jbHVkZSAiQmxvY2tGb3JtYXR0aW5nU3RhdGUuaCIKLSNpbmNsdWRlICJEaXNwbGF5
Qm94LmgiCiAjaW5jbHVkZSAiSW5saW5lRm9ybWF0dGluZ1N0YXRlLmgiCiAjaW5jbHVkZSAiSW5s
aW5lVGV4dEJveC5oIgogI2luY2x1ZGUgIkxheW91dEJveC5oIgogI2luY2x1ZGUgIkxheW91dENv
bnRhaW5lckJveC5oIgogI2luY2x1ZGUgIkxheW91dENvbnRleHQuaCIKKyNpbmNsdWRlICJMYXlv
dXRHZW9tZXRyeS5oIgogI2luY2x1ZGUgIkxheW91dFRyZWVCdWlsZGVyLmgiCiAjaW5jbHVkZSAi
UmVuZGVyQm94LmgiCiAjaW5jbHVkZSAiUmVuZGVySW5saW5lLmgiCkBAIC0yMzgsNyArMjM4LDcg
QEAgc3RhdGljIGJvb2wgb3V0cHV0TWlzbWF0Y2hpbmdCbG9ja0JveEluZm9ybWF0aW9uSWZOZWVk
ZWQoVGV4dFN0cmVhbSYgc3RyZWFtLCBjb24KICAgICAgICAgICAgIHJldHVybiBkaXNwbGF5Qm94
LnJlY3QoKTsKIAogICAgICAgICAvLyBQcm9kdWNlIGEgUmVuZGVyQm94IG1hdGNoaW5nIG1hcmdp
biBib3guCi0gICAgICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrV2lkdGggPSBsYXlvdXRTdGF0ZS5k
aXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGxheW91dEJveC5jb250YWluaW5nQmxvY2soKSkuY29udGVu
dEJveFdpZHRoKCk7CisgICAgICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrV2lkdGggPSBsYXlvdXRT
dGF0ZS5nZW9tZXRyeUZvckxheW91dEJveChsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkpLmNv
bnRlbnRCb3hXaWR0aCgpOwogICAgICAgICBhdXRvIG1hcmdpblN0YXJ0ID0gTGF5b3V0VW5pdCB7
IH07CiAgICAgICAgIGF1dG8mIG1hcmdpblN0YXJ0U3R5bGUgPSBsYXlvdXRCb3guc3R5bGUoKS5t
YXJnaW5TdGFydCgpOwogICAgICAgICBpZiAobWFyZ2luU3RhcnRTdHlsZS5pc0ZpeGVkKCkgfHwg
bWFyZ2luU3RhcnRTdHlsZS5pc1BlcmNlbnQoKSB8fCBtYXJnaW5TdGFydFN0eWxlLmlzQ2FsY3Vs
YXRlZCgpKQpAQCAtMjU4LDcgKzI1OCw3IEBAIHN0YXRpYyBib29sIG91dHB1dE1pc21hdGNoaW5n
QmxvY2tCb3hJbmZvcm1hdGlvbklmTmVlZGVkKFRleHRTdHJlYW0mIHN0cmVhbSwgY29uCiAgICAg
ICAgICAgICBtYXJnaW5BZnRlciA9IHZlcnRpY2FsTWFyZ2luLm5vbkNvbGxhcHNlZFZhbHVlcy5h
ZnRlcjsKICAgICAgICAgfQogICAgICAgICBhdXRvIGJvcmRlckJveCA9IGRpc3BsYXlCb3guYm9y
ZGVyQm94KCk7Ci0gICAgICAgIHJldHVybiBEaXNwbGF5OjpSZWN0IHsKKyAgICAgICAgcmV0dXJu
IFJlY3QgewogICAgICAgICAgICAgYm9yZGVyQm94LnRvcCgpIC0gbWFyZ2luQmVmb3JlLAogICAg
ICAgICAgICAgYm9yZGVyQm94LmxlZnQoKSAtIG1hcmdpblN0YXJ0LAogICAgICAgICAgICAgbWFy
Z2luU3RhcnQgKyBib3JkZXJCb3gud2lkdGgoKSArIG1hcmdpbkVuZCwKQEAgLTI3MSwxMSArMjcx
LDExIEBAIHN0YXRpYyBib29sIG91dHB1dE1pc21hdGNoaW5nQmxvY2tCb3hJbmZvcm1hdGlvbklm
TmVlZGVkKFRleHRTdHJlYW0mIHN0cmVhbSwgY29uCiAgICAgaWYgKHJlbmRlcmVyLmlzSW5GbG93
UG9zaXRpb25lZCgpKQogICAgICAgICBmcmFtZVJlY3QubW92ZShyZW5kZXJlci5vZmZzZXRGb3JJ
bkZsb3dQb3NpdGlvbigpKTsKIAotICAgIGF1dG8gZGlzcGxheUJveCA9IERpc3BsYXk6OkJveCB7
IGxheW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94KSB9OworICAgIGF1
dG8gZGlzcGxheUJveCA9IEdlb21ldHJ5IHsgbGF5b3V0U3RhdGUuZ2VvbWV0cnlGb3JMYXlvdXRC
b3gobGF5b3V0Qm94KSB9OwogICAgIGlmIChsYXlvdXRCb3guaXNUYWJsZUJveCgpKSB7CiAgICAg
ICAgIC8vIFdoZW4gdGhlIDx0YWJsZT4gaXMgb3V0LW9mLWZsb3cgcG9zaXRpb25lZCwgdGhlIHdy
YXBwZXIgdGFibGUgYm94IGhhcyB0aGUgb2Zmc2V0CiAgICAgICAgIC8vIHdoaWxlIHRoZSBhY3R1
YWwgdGFibGUgYm94IGlzIHN0YXRpYywgaW5mbG93LgotICAgICAgICBhdXRvJiB0YWJsZVdyYXBw
ZXJEaXNwbGF5Qm94ID0gbGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxheW91dEJveChsYXlvdXRC
b3guY29udGFpbmluZ0Jsb2NrKCkpOworICAgICAgICBhdXRvJiB0YWJsZVdyYXBwZXJEaXNwbGF5
Qm94ID0gbGF5b3V0U3RhdGUuZ2VvbWV0cnlGb3JMYXlvdXRCb3gobGF5b3V0Qm94LmNvbnRhaW5p
bmdCbG9jaygpKTsKICAgICAgICAgZGlzcGxheUJveC5tb3ZlQnkodGFibGVXcmFwcGVyRGlzcGxh
eUJveC50b3BMZWZ0KCkpOwogICAgICAgICAvLyBUYWJsZSB3cmFwcGVyIGJveCBoYXMgdGhlIG1h
cmdpbiB2YWx1ZXMgZm9yIHRoZSB0YWJsZS4KICAgICAgICAgZGlzcGxheUJveC5zZXRIb3Jpem9u
dGFsTWFyZ2luKHRhYmxlV3JhcHBlckRpc3BsYXlCb3guaG9yaXpvbnRhbE1hcmdpbigpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3Jt
YXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zv
cm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAppbmRleCBiYjcwZmJi
Mjk3NThhMTk3YTViZDk0NTk4Y2EzMDlkM2QwNzNmMWNmLi40MThiMmNiYWE0NDc2NWJhYTJmNjUz
OTgxOGQzODc2MjQ3NWUzMGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxv
Y2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0
R2VvbWV0cnkuY3BwCkBAIC0yOSwxMSArMjksMTEgQEAKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1B
VFRJTkdfQ09OVEVYVCkKIAogI2luY2x1ZGUgIkJsb2NrRm9ybWF0dGluZ1N0YXRlLmgiCi0jaW5j
bHVkZSAiRGlzcGxheUJveC5oIgogI2luY2x1ZGUgIkZvcm1hdHRpbmdDb250ZXh0LmgiCiAjaW5j
bHVkZSAiSW5saW5lRm9ybWF0dGluZ1N0YXRlLmgiCiAjaW5jbHVkZSAiTGF5b3V0Q2hpbGRJdGVy
YXRvci5oIgogI2luY2x1ZGUgIkxheW91dENvbnRleHQuaCIKKyNpbmNsdWRlICJMYXlvdXRHZW9t
ZXRyeS5oIgogI2luY2x1ZGUgIkxheW91dEluaXRpYWxDb250YWluaW5nQmxvY2suaCIKICNpbmNs
dWRlICJMYXlvdXRSZXBsYWNlZEJveC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5n
Q29udGV4dFF1aXJrcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5n
L0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRRdWlya3MuY3BwCmluZGV4IGNiOGI5YTBlNDAyMDQ5NjAy
ZWE5ZTUyMTU5ZGNiYzllMmVlN2E0NGQuLjVlNzkxZjlmZDE2Mjg4ZjhjMmQxOGQ3ZjQzMjFmYWY3
OTNjM2QyNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRp
bmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNwcApA
QCAtMjksOSArMjksOSBAQAogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQog
CiAjaW5jbHVkZSAiQmxvY2tGb3JtYXR0aW5nU3RhdGUuaCIKLSNpbmNsdWRlICJEaXNwbGF5Qm94
LmgiCiAjaW5jbHVkZSAiTGF5b3V0Qm94LmgiCiAjaW5jbHVkZSAiTGF5b3V0Q29udGFpbmVyQm94
LmgiCisjaW5jbHVkZSAiTGF5b3V0R2VvbWV0cnkuaCIKICNpbmNsdWRlICJMYXlvdXRJbml0aWFs
Q29udGFpbmluZ0Jsb2NrLmgiCiAjaW5jbHVkZSAiTGF5b3V0U3RhdGUuaCIKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy90YWJsZXdyYXBwZXIvVGFi
bGVXcmFwcGVyQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvYmxvY2tmb3JtYXR0aW5nL3RhYmxld3JhcHBlci9UYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRp
bmdDb250ZXh0LmNwcAppbmRleCBhNmQxOTkyYTI1YWU0MDlmZDQzOTZhZGE4NzRhYjFjMDFjZTg1
MTMyLi42NjM4YWU1MzMwNjVjZGE0NzA0Njc4OWZlYjMxNTE0MGY2OTQzZjE1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL3RhYmxld3JhcHBlci9UYWJs
ZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvYmxvY2tmb3JtYXR0aW5nL3RhYmxld3JhcHBlci9UYWJsZVdyYXBwZXJCbG9ja0Zvcm1h
dHRpbmdDb250ZXh0LmNwcApAQCAtMjksMTAgKzI5LDEwIEBACiAjaWYgRU5BQkxFKExBWU9VVF9G
T1JNQVRUSU5HX0NPTlRFWFQpCiAKICNpbmNsdWRlICJCbG9ja0Zvcm1hdHRpbmdTdGF0ZS5oIgot
I2luY2x1ZGUgIkRpc3BsYXlCb3guaCIKICNpbmNsdWRlICJJbnZhbGlkYXRpb25TdGF0ZS5oIgog
I2luY2x1ZGUgIkxheW91dENoaWxkSXRlcmF0b3IuaCIKICNpbmNsdWRlICJMYXlvdXRDb250ZXh0
LmgiCisjaW5jbHVkZSAiTGF5b3V0R2VvbWV0cnkuaCIKICNpbmNsdWRlICJMYXlvdXRJbml0aWFs
Q29udGFpbmluZ0Jsb2NrLmgiCiAjaW5jbHVkZSAiVGFibGVGb3JtYXR0aW5nQ29udGV4dC5oIgog
I2luY2x1ZGUgIlRhYmxlRm9ybWF0dGluZ1N0YXRlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZGlzcGxheS9EaXNwbGF5TGF5ZXJDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9kaXNwbGF5L0Rpc3BsYXlMYXllckNvbnRyb2xsZXIuY3BwCmluZGV4IGE2
MDM4NGJlZDQ0MjZhYTAyMjM1OGY4NzdmZDRkZTE4ZjZiYjE2NWUuLjRiYjNhMDdhY2NlZjI0MmU2
OTM1NjNmMzI3NTZlOTIyOWM4M2NmNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9kaXNwbGF5L0Rpc3BsYXlMYXllckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9kaXNwbGF5L0Rpc3BsYXlMYXllckNvbnRyb2xsZXIuY3BwCkBAIC0zMCwxMiArMzAs
MTIgQEAKIAogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgot
I2luY2x1ZGUgIkRpc3BsYXlCb3guaCIKICNpbmNsdWRlICJEaXNwbGF5UGFpbnRlci5oIgogI2lu
Y2x1ZGUgIkRpc3BsYXlWaWV3LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFt
ZVZpZXcuaCIKICNpbmNsdWRlICJMYXlvdXRDb250ZXh0LmgiCisjaW5jbHVkZSAiTGF5b3V0R2Vv
bWV0cnkuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1
ZGUgIlNldHRpbmdzLmgiCkBAIC04NSw4ICs4NSw4IEBAIHZvaWQgTGF5ZXJDb250cm9sbGVyOjpw
cmVwYXJlRm9yRGlzcGxheShjb25zdCBMYXlvdXQ6OkxheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSkK
IAogICAgIEFTU0VSVChsYXlvdXRTdGF0ZS5oYXNEaXNwbGF5Qm94KHJvb3RMYXlvdXRCb3gpKTsK
IAotICAgIGF1dG8gdmlld1NpemUgPSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94
KHJvb3RMYXlvdXRCb3gpLnNpemUoKTsKLSAgICBhdXRvIGNvbnRlbnRTaXplID0gbGF5b3V0U3Rh
dGUuZGlzcGxheUJveEZvckxheW91dEJveCgqcm9vdExheW91dEJveC5maXJzdENoaWxkKCkpLnNp
emUoKTsKKyAgICBhdXRvIHZpZXdTaXplID0gbGF5b3V0U3RhdGUuZ2VvbWV0cnlGb3JMYXlvdXRC
b3gocm9vdExheW91dEJveCkuc2l6ZSgpOworICAgIGF1dG8gY29udGVudFNpemUgPSBsYXlvdXRT
dGF0ZS5nZW9tZXRyeUZvckxheW91dEJveCgqcm9vdExheW91dEJveC5maXJzdENoaWxkKCkpLnNp
emUoKTsKICAgICAKICAgICAvLyBGSVhNRTogVXNpbmcgdGhlIGZpcnN0Q2hpbGQoKSBzaXplIHdv
bid0IGJlIGNvcnJlY3QgdW50aWwgd2UgY29tcHV0ZSBvdmVyZmxvdyBjb3JyZWN0bHksCiAgICAg
Y29udGVudFNpemUuY2xhbXBUb01pbmltdW1TaXplKHZpZXdTaXplKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5UGFpbnRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheVBhaW50ZXIuY3BwCmluZGV4IDQ2
ZmNmNGZiNTRhMTBhNjZkN2IzNmQ5OGI1Njk4MGY3YjQzYzQ0MGEuLjJhMjljNDQwNDQxNGNjMWZj
OTA1MTFmYjZjODQ1ZDk5YWI2N2VlNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9kaXNwbGF5dHJlZS9EaXNwbGF5UGFpbnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlQYWludGVyLmNwcApAQCAtMzAsMTIgKzMwLDEyIEBACiAK
ICNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUgIkNvbG9yLmgiCi0jaW5jbHVkZSAi
RGlzcGxheUJveC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIklu
bGluZUZvcm1hdHRpbmdTdGF0ZS5oIgogI2luY2x1ZGUgIklubGluZVRleHRJdGVtLmgiCiAjaW5j
bHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkxheW91dENvbnRhaW5lckJveC5oIgorI2luY2x1
ZGUgIkxheW91dEdlb21ldHJ5LmgiCiAjaW5jbHVkZSAiTGF5b3V0SW5pdGlhbENvbnRhaW5pbmdC
bG9jay5oIgogI2luY2x1ZGUgIkxheW91dFN0YXRlLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUu
aCIKQEAgLTQ0LDcgKzQ0LDggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBEaXNw
bGF5IHsKIAotc3RhdGljIHZvaWQgcGFpbnRCb3hEZWNvcmF0aW9uKEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgQm94JiBhYnNvbHV0ZURpc3BsYXlCb3gsIGNvbnN0IFJlbmRlclN0eWxl
JiBzdHlsZSwgYm9vbCBuZWVkc01hcmdpblBhaW50aW5nKQorLy8gRklYTUU6IE1vdmUgdG8gZGlz
cGxheSBib3guCitzdGF0aWMgdm9pZCBwYWludEJveERlY29yYXRpb24oR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBMYXlvdXQ6Okdlb21ldHJ5JiBhYnNvbHV0ZURpc3BsYXlCb3gsIGNv
bnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgYm9vbCBuZWVkc01hcmdpblBhaW50aW5nKQogewogICAg
IGF1dG8gZGVjb3JhdGlvbkJveFRvcExlZnQgPSBuZWVkc01hcmdpblBhaW50aW5nID8gYWJzb2x1
dGVEaXNwbGF5Qm94LnJlY3RXaXRoTWFyZ2luKCkudG9wTGVmdCgpIDogYWJzb2x1dGVEaXNwbGF5
Qm94LnRvcExlZnQoKTsKICAgICBhdXRvIGRlY29yYXRpb25Cb3hTaXplID0gbmVlZHNNYXJnaW5Q
YWludGluZyA/IGFic29sdXRlRGlzcGxheUJveC5yZWN0V2l0aE1hcmdpbigpLnNpemUoKSA6IExh
eW91dFNpemUoYWJzb2x1dGVEaXNwbGF5Qm94LmJvcmRlckJveFdpZHRoKCksIGFic29sdXRlRGlz
cGxheUJveC5ib3JkZXJCb3hIZWlnaHQoKSk7CkBAIC0xNDEsMTMgKzE0MiwxMyBAQCBzdGF0aWMg
dm9pZCBwYWludElubGluZUNvbnRlbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBMYXlvdXRQ
b2ludCBhYnNvbHV0ZU9mZgogICAgIH0KIH0KIAotQm94IFBhaW50ZXI6OmFic29sdXRlRGlzcGxh
eUJveChjb25zdCBMYXlvdXQ6OkxheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgTGF5b3V0
OjpCb3gmIGxheW91dEJveFRvUGFpbnQpCitMYXlvdXQ6Okdlb21ldHJ5IFBhaW50ZXI6OmFic29s
dXRlRGlzcGxheUJveChjb25zdCBMYXlvdXQ6OkxheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29u
c3QgTGF5b3V0OjpCb3gmIGxheW91dEJveFRvUGFpbnQpCiB7CiAgICAgLy8gU2hvdWxkIG5ldmVy
IHJlYWxseSBoYXBwZW4gYnV0IHRhYmxlIGNvZGUgaXMgd2F5IHRvbyBpbmNvbXBsZXRlLgogICAg
IGlmICghbGF5b3V0U3RhdGUuaGFzRGlzcGxheUJveChsYXlvdXRCb3hUb1BhaW50KSkKICAgICAg
ICAgcmV0dXJuIHsgfTsKICAgICBpZiAoaXM8TGF5b3V0OjpJbml0aWFsQ29udGFpbmluZ0Jsb2Nr
PihsYXlvdXRCb3hUb1BhaW50KSkKLSAgICAgICAgcmV0dXJuIGxheW91dFN0YXRlLmRpc3BsYXlC
b3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94VG9QYWludCk7CisgICAgICAgIHJldHVybiBsYXlvdXRT
dGF0ZS5nZW9tZXRyeUZvckxheW91dEJveChsYXlvdXRCb3hUb1BhaW50KTsKIAogICAgIGF1dG8g
cGFpbnRDb250YWluZXIgPSBbJl0gKGNvbnN0IGF1dG8mIGxheW91dEJveCkgewogICAgICAgICBp
ZiAobGF5b3V0Qm94LmlzVGFibGVDZWxsKCkpIHsKQEAgLTE1Nyw5ICsxNTgsOSBAQCBCb3ggUGFp
bnRlcjo6YWJzb2x1dGVEaXNwbGF5Qm94KGNvbnN0IExheW91dDo6TGF5b3V0U3RhdGUmIGxheW91
dFN0YXRlLCBjb25zdCBMYQogICAgICAgICB9CiAgICAgICAgIHJldHVybiAmbGF5b3V0Qm94LmNv
bnRhaW5pbmdCbG9jaygpOwogICAgIH07Ci0gICAgYXV0byBhYnNvbHV0ZUJveCA9IEJveCB7IGxh
eW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94VG9QYWludCkgfTsKKyAg
ICBhdXRvIGFic29sdXRlQm94ID0gTGF5b3V0OjpHZW9tZXRyeSB7IGxheW91dFN0YXRlLmdlb21l
dHJ5Rm9yTGF5b3V0Qm94KGxheW91dEJveFRvUGFpbnQpIH07CiAgICAgZm9yIChhdXRvKiBjb250
YWluZXIgPSBwYWludENvbnRhaW5lcihsYXlvdXRCb3hUb1BhaW50KTsgIWlzPExheW91dDo6SW5p
dGlhbENvbnRhaW5pbmdCbG9jaz4oY29udGFpbmVyKTsgY29udGFpbmVyID0gcGFpbnRDb250YWlu
ZXIoKmNvbnRhaW5lcikpCi0gICAgICAgIGFic29sdXRlQm94Lm1vdmVCeShsYXlvdXRTdGF0ZS5k
aXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCpjb250YWluZXIpLnRvcExlZnQoKSk7CisgICAgICAgIGFi
c29sdXRlQm94Lm1vdmVCeShsYXlvdXRTdGF0ZS5nZW9tZXRyeUZvckxheW91dEJveCgqY29udGFp
bmVyKS50b3BMZWZ0KCkpOwogICAgIHJldHVybiBhYnNvbHV0ZUJveDsKIH0KIApAQCAtMjM0LDcg
KzIzNSw3IEBAIHN0YXRpYyBMYXlvdXRSZWN0IGNvbGxlY3RQYWludFJvb3RzQW5kQ29udGVudFJl
Y3QoY29uc3QgTGF5b3V0OjpMYXlvdXRTdGF0ZSYgbGF5CiAgICAgICAgIHBvc2l0aXZlWk9yZGVy
TGlzdC5hcHBlbmQoJmxheW91dEJveCk7CiAgICAgfTsKIAotICAgIGF1dG8gY29udGVudFJlY3Qg
PSBMYXlvdXRSZWN0IHsgbGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxheW91dEJveChyb290TGF5
b3V0Qm94KS5yZWN0KCkgfTsKKyAgICBhdXRvIGNvbnRlbnRSZWN0ID0gTGF5b3V0UmVjdCB7IGxh
eW91dFN0YXRlLmdlb21ldHJ5Rm9yTGF5b3V0Qm94KHJvb3RMYXlvdXRCb3gpLnJlY3QoKSB9Owog
CiAgICAgLy8gSW5pdGlhbCBCRkMgaXMgYWx3YXlzIGEgcGFpbnQgcm9vdC4KICAgICBhcHBlbmRQ
YWludFJvb3Qocm9vdExheW91dEJveCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZGlzcGxheXRyZWUvRGlzcGxheVBhaW50ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9k
aXNwbGF5dHJlZS9EaXNwbGF5UGFpbnRlci5oCmluZGV4IGJmMTAwZjk1YTVkMmJjYmU0MmM0ZDM5
Nzc1YTU2YzA1YTVkNDg0MjMuLjFiZTVlZmM5ZWJiZjFjNmQwZDUyZWMyZmQyYWFjN2FmYzEyYWJk
MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5
UGFpbnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5
UGFpbnRlci5oCkBAIC0zMyw2ICszMyw3IEBAIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNz
IEludFJlY3Q7CiAKIG5hbWVzcGFjZSBMYXlvdXQgeworY2xhc3MgR2VvbWV0cnk7CiBjbGFzcyBM
YXlvdXRTdGF0ZTsKIH0KIApAQCAtNDMsNyArNDQsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZv
aWQgcGFpbnQoY29uc3QgTGF5b3V0OjpMYXlvdXRTdGF0ZSYsIEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IEludFJlY3QmIGRpcnR5UmVjdCk7CiAgICAgc3RhdGljIHZvaWQgcGFpbnRJbmxpbmVGbG93
KGNvbnN0IExheW91dDo6TGF5b3V0U3RhdGUmLCBHcmFwaGljc0NvbnRleHQmKTsKIAotICAgIHN0
YXRpYyBCb3ggYWJzb2x1dGVEaXNwbGF5Qm94KGNvbnN0IExheW91dDo6TGF5b3V0U3RhdGUmLCBj
b25zdCBMYXlvdXQ6OkJveCYpOyAgICAKKyAgICAvLyBGSVhNRTogTW92ZSB0byBkaXNwbGF5IGJv
eC4KKyAgICBzdGF0aWMgTGF5b3V0OjpHZW9tZXRyeSBhYnNvbHV0ZURpc3BsYXlCb3goY29uc3Qg
TGF5b3V0OjpMYXlvdXRTdGF0ZSYsIGNvbnN0IExheW91dDo6Qm94Jik7CiB9OwogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0QXZvaWRlci5oIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdEF2b2lkZXIuaAppbmRleCA3ZjRkODU2YTdk
NWNhNjkwY2NiM2IyYWZlZWM4ZTRlNDgzYWQ0NTFjLi44ZTI1M2IxOTBmMjllMWQyYTQzMjhhNzRl
OGExMDlhY2IzYzNkNzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRz
L0Zsb2F0QXZvaWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRB
dm9pZGVyLmgKQEAgLTI3LDggKzI3LDggQEAKIAogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElO
R19DT05URVhUKQogCi0jaW5jbHVkZSAiRGlzcGxheUJveC5oIgogI2luY2x1ZGUgIkxheW91dEJv
eC5oIgorI2luY2x1ZGUgIkxheW91dEdlb21ldHJ5LmgiCiAjaW5jbHVkZSAiTGF5b3V0UG9pbnQu
aCIKICNpbmNsdWRlICJMYXlvdXRVbml0cy5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdDb250ZXh0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdDb250ZXh0LmNwcApp
bmRleCAwZmI2NmZmODU1ZTAzZGY4NWZkMWEwY2Q5M2UwNDU5ZDFiMTg4ZDc1Li44NTVmZjVmZTU3
OTA0OTYyYzAzOWIyMDdmZDg4ODZlNGY5YmM0MTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZmxvYXRzL0Zsb2F0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zsb2F0cy9GbG9hdGluZ0NvbnRleHQuY3BwCkBAIC0yOSwxMSArMjksMTEgQEAKICNp
ZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKIAogI2luY2x1ZGUgIkJsb2NrRm9y
bWF0dGluZ1N0YXRlLmgiCi0jaW5jbHVkZSAiRGlzcGxheUJveC5oIgogI2luY2x1ZGUgIkZsb2F0
QXZvaWRlci5oIgogI2luY2x1ZGUgIkZvcm1hdHRpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiTGF5
b3V0Qm94LmgiCiAjaW5jbHVkZSAiTGF5b3V0Q29udGFpbmVyQm94LmgiCisjaW5jbHVkZSAiTGF5
b3V0R2VvbWV0cnkuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC00MDQsNyArNDA0LDcgQEAgRmxvYXRpbmdDb250ZXh0OjpDb25z
dHJhaW50cyBGbG9hdGluZ0NvbnRleHQ6OmNvbnN0cmFpbnRzKExheW91dFVuaXQgY2FuZGlkYXRl
VG8KIAogdm9pZCBGbG9hdGluZ0NvbnRleHQ6OmFwcGVuZChjb25zdCBCb3gmIGZsb2F0Qm94KQog
ewotICAgIGF1dG8gYWJzb2x1dGVEaXNwbGF5Qm94ID0gRGlzcGxheTo6Qm94KGZvcm1hdHRpbmdD
b250ZXh0KCkuZ2VvbWV0cnlGb3JCb3goZmxvYXRCb3gpKTsKKyAgICBhdXRvIGFic29sdXRlRGlz
cGxheUJveCA9IEdlb21ldHJ5KGZvcm1hdHRpbmdDb250ZXh0KCkuZ2VvbWV0cnlGb3JCb3goZmxv
YXRCb3gpKTsKICAgICBhYnNvbHV0ZURpc3BsYXlCb3guc2V0VG9wTGVmdChtYXBUb3BMZWZ0VG9G
bG9hdGluZ1N0YXRlUm9vdChmbG9hdEJveCkpOwogICAgIGZsb2F0aW5nU3RhdGUoKS5hcHBlbmQo
RmxvYXRpbmdTdGF0ZTo6RmxvYXRJdGVtIHsgZmxvYXRCb3gsIGFic29sdXRlRGlzcGxheUJveCB9
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdT
dGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0aW5nU3RhdGUuY3Bw
CmluZGV4IDVhN2ZkMTlkMDYwMDMwNjkyYjZiYzRiN2Y2ZDIxMDkzNWYyZTQ4ZDMuLjNlNjNjMmY3
NjU5YjI0YWJmZjQ3ZGJjODJkYzI2MGQzOGZhODFlN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zsb2F0cy9GbG9hdGluZ1N0YXRlLmNwcApAQCAtNDAsMTQgKzQwLDE0IEBAIG5hbWVz
cGFjZSBMYXlvdXQgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoRmxvYXRpbmdTdGF0
ZSk7CiAKLUZsb2F0aW5nU3RhdGU6OkZsb2F0SXRlbTo6RmxvYXRJdGVtKGNvbnN0IEJveCYgbGF5
b3V0Qm94LCBEaXNwbGF5OjpCb3ggYWJzb2x1dGVEaXNwbGF5Qm94KQorRmxvYXRpbmdTdGF0ZTo6
RmxvYXRJdGVtOjpGbG9hdEl0ZW0oY29uc3QgQm94JiBsYXlvdXRCb3gsIEdlb21ldHJ5IGFic29s
dXRlRGlzcGxheUJveCkKICAgICA6IG1fbGF5b3V0Qm94KG1ha2VXZWFrUHRyKGxheW91dEJveCkp
CiAgICAgLCBtX3Bvc2l0aW9uKGxheW91dEJveC5pc0xlZnRGbG9hdGluZ1Bvc2l0aW9uZWQoKSA/
IFBvc2l0aW9uOjpMZWZ0IDogUG9zaXRpb246OlJpZ2h0KQogICAgICwgbV9hYnNvbHV0ZURpc3Bs
YXlCb3goYWJzb2x1dGVEaXNwbGF5Qm94KQogewogfQogCi1GbG9hdGluZ1N0YXRlOjpGbG9hdEl0
ZW06OkZsb2F0SXRlbShQb3NpdGlvbiBwb3NpdGlvbiwgRGlzcGxheTo6Qm94IGFic29sdXRlRGlz
cGxheUJveCkKK0Zsb2F0aW5nU3RhdGU6OkZsb2F0SXRlbTo6RmxvYXRJdGVtKFBvc2l0aW9uIHBv
c2l0aW9uLCBHZW9tZXRyeSBhYnNvbHV0ZURpc3BsYXlCb3gpCiAgICAgOiBtX3Bvc2l0aW9uKHBv
c2l0aW9uKQogICAgICwgbV9hYnNvbHV0ZURpc3BsYXlCb3goYWJzb2x1dGVEaXNwbGF5Qm94KQog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ1N0YXRl
LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0aW5nU3RhdGUuaAppbmRleCA3
YmExZmRlNDg1MTQxNmRkN2ZjMWFmYzMxMzA5OTQ1MTE2OTE0YjgxLi4xZDgxMzUzMDI2MmFkZmY3
OTg3YmFmMThmNTQxZDc2N2FjMGExYWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZmxvYXRzL0Zsb2F0aW5nU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxv
YXRzL0Zsb2F0aW5nU3RhdGUuaApAQCAtMjcsMjMgKzI3LDIxIEBACiAKICNpZiBFTkFCTEUoTEFZ
T1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKIAotI2luY2x1ZGUgIkRpc3BsYXlCb3guaCIKICNpbmNs
dWRlICJMYXlvdXRDb250YWluZXJCb3guaCIKKyNpbmNsdWRlICJMYXlvdXRHZW9tZXRyeS5oIgog
I2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVk
ZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1uYW1lc3BhY2UgRGlz
cGxheSB7Ci1jbGFzcyBCb3g7Ci19Ci0KIG5hbWVzcGFjZSBMYXlvdXQgewogCiBjbGFzcyBCb3g7
CiBjbGFzcyBGbG9hdGluZ0NvbnRleHQ7CitjbGFzcyBHZW9tZXRyeTsKIGNsYXNzIExheW91dFN0
YXRlOworY2xhc3MgUmVjdDsKIAogLy8gRmxvYXRpbmdTdGF0ZSBob2xkcyB0aGUgZmxvYXRpbmcg
Ym94ZXMgcGVyIGZvcm1hdHRpbmcgY29udGV4dC4KIGNsYXNzIEZsb2F0aW5nU3RhdGUgOiBwdWJs
aWMgUmVmQ291bnRlZDxGbG9hdGluZ1N0YXRlPiB7CkBAIC02MCwxNyArNTgsMTcgQEAgcHVibGlj
OgogCiAgICAgY2xhc3MgRmxvYXRJdGVtIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEZsb2F0SXRl
bShjb25zdCBCb3gmLCBEaXNwbGF5OjpCb3ggYWJzb2x1dGVEaXNwbGF5Qm94KTsKKyAgICAgICAg
RmxvYXRJdGVtKGNvbnN0IEJveCYsIEdlb21ldHJ5IGFic29sdXRlRGlzcGxheUJveCk7CiAKICAg
ICAgICAgLy8gRklYTUU6IFRoaXMgYyd0b3IgaXMgb25seSB1c2VkIGJ5IHRoZSByZW5kZXIgdHJl
ZSBpbnRlZ2F0aW9uIGNvZGVwYXRoLgogICAgICAgICBlbnVtIGNsYXNzIFBvc2l0aW9uIHsgTGVm
dCwgUmlnaHQgfTsKLSAgICAgICAgRmxvYXRJdGVtKFBvc2l0aW9uLCBEaXNwbGF5OjpCb3ggYWJz
b2x1dGVEaXNwbGF5Qm94KTsKKyAgICAgICAgRmxvYXRJdGVtKFBvc2l0aW9uLCBHZW9tZXRyeSBh
YnNvbHV0ZURpc3BsYXlCb3gpOwogCiAgICAgICAgIGJvb2wgaXNMZWZ0UG9zaXRpb25lZCgpIGNv
bnN0IHsgcmV0dXJuIG1fcG9zaXRpb24gPT0gUG9zaXRpb246OkxlZnQ7IH0KICAgICAgICAgYm9v
bCBpc0luRm9ybWF0dGluZ0NvbnRleHRPZihjb25zdCBDb250YWluZXJCb3gmIGZvcm1hdHRpbmdD
b250ZXh0Um9vdCkgY29uc3QgeyByZXR1cm4gbV9sYXlvdXRCb3gtPmlzSW5Gb3JtYXR0aW5nQ29u
dGV4dE9mKGZvcm1hdHRpbmdDb250ZXh0Um9vdCk7IH0KIAotICAgICAgICBEaXNwbGF5OjpSZWN0
IHJlY3RXaXRoTWFyZ2luKCkgY29uc3QgeyByZXR1cm4gbV9hYnNvbHV0ZURpc3BsYXlCb3gucmVj
dFdpdGhNYXJnaW4oKTsgfQotICAgICAgICBEaXNwbGF5OjpCb3g6Okhvcml6b250YWxNYXJnaW4g
aG9yaXpvbnRhbE1hcmdpbigpIGNvbnN0IHsgcmV0dXJuIG1fYWJzb2x1dGVEaXNwbGF5Qm94Lmhv
cml6b250YWxNYXJnaW4oKTsgfQorICAgICAgICBSZWN0IHJlY3RXaXRoTWFyZ2luKCkgY29uc3Qg
eyByZXR1cm4gbV9hYnNvbHV0ZURpc3BsYXlCb3gucmVjdFdpdGhNYXJnaW4oKTsgfQorICAgICAg
ICBHZW9tZXRyeTo6SG9yaXpvbnRhbE1hcmdpbiBob3Jpem9udGFsTWFyZ2luKCkgY29uc3QgeyBy
ZXR1cm4gbV9hYnNvbHV0ZURpc3BsYXlCb3guaG9yaXpvbnRhbE1hcmdpbigpOyB9CiAgICAgICAg
IFBvc2l0aW9uSW5Db250ZXh0Um9vdCBib3R0b20oKSBjb25zdCB7IHJldHVybiB7IG1fYWJzb2x1
dGVEaXNwbGF5Qm94LmJvdHRvbSgpIH07IH0KIAogI2lmIEFTU0VSVF9FTkFCTEVECkBAIC03OSw3
ICs3Nyw3IEBAIHB1YmxpYzoKICAgICBwcml2YXRlOgogICAgICAgICBXZWFrUHRyPGNvbnN0IEJv
eD4gbV9sYXlvdXRCb3g7CiAgICAgICAgIFBvc2l0aW9uIG1fcG9zaXRpb247Ci0gICAgICAgIERp
c3BsYXk6OkJveCBtX2Fic29sdXRlRGlzcGxheUJveDsKKyAgICAgICAgR2VvbWV0cnkgbV9hYnNv
bHV0ZURpc3BsYXlCb3g7CiAgICAgfTsKICAgICB1c2luZyBGbG9hdExpc3QgPSBWZWN0b3I8Rmxv
YXRJdGVtPjsKICAgICBjb25zdCBGbG9hdExpc3QmIGZsb2F0cygpIGNvbnN0IHsgcmV0dXJuIG1f
ZmxvYXRzOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0
dGluZy9JbmxpbmVMaW5lQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0
dGluZy9JbmxpbmVMaW5lQm94LmgKaW5kZXggOTdmODRhNTUxNTkwMWE0ZDQ5MTgxNDFjZTQ0YjI1
ZDcwZGIwMmU4OS4uZmM3NWZlMWY0MmJjZTg1OTBmODZiZDg5OTUxZGU1MWY1ZjNlY2QzMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGlu
ZUJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGlu
ZUxpbmVCb3guaApAQCAtMjcsOSArMjcsOSBAQAogCiAjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRU
SU5HX0NPTlRFWFQpCiAKLSNpbmNsdWRlICJEaXNwbGF5Qm94LmgiCiAjaW5jbHVkZSAiRGlzcGxh
eUlubGluZVJlY3QuaCIKICNpbmNsdWRlICJJbmxpbmVMaW5lLmgiCisjaW5jbHVkZSAiTGF5b3V0
R2VvbWV0cnkuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogI2luY2x1ZGUg
PHd0Zi9XZWFrUHRyLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxp
bmVmb3JtYXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmNwcAppbmRleCA4MThmODI3MjEw
MmY4YWIwYTE3YTU2ODhlYmQ1NjAzYWI0OWZiYjJiLi5hMTUwODUwNThiN2QwNDE0ZGFmZGU5MjRi
NmE1ZGVhZjc4OTBhMDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5l
Zm9ybWF0dGluZy9JbmxpbmVMaW5lQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIuY3BwCkBAIC0yOCwxMCArMjgs
MTAgQEAKIAogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQogCi0jaW5jbHVk
ZSAiRGlzcGxheUJveC5oIgogI2luY2x1ZGUgIkZsb2F0aW5nQ29udGV4dC5oIgogI2luY2x1ZGUg
IklubGluZUZvcm1hdHRpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiTGF5b3V0Qm94LmgiCisjaW5j
bHVkZSAiTGF5b3V0R2VvbWV0cnkuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVz
LmgiCiAjaW5jbHVkZSAiVGV4dFV0aWwuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0
LmNwcAppbmRleCBkZjUwMjY3ODA1OTE0ZjJjMzI3ODFlYmJkZjljNDYzZWZlNDAzZTkyLi43N2Ex
ZGMyZjAxYjZlOTZlMjdlMDlhNGMxMDc1ZmU3ODQ0YThkNmNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRp
b25MaW5lTGF5b3V0LmNwcApAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgRU5BQkxFKExBWU9VVF9G
T1JNQVRUSU5HX0NPTlRFWFQpCiAKLSNpbmNsdWRlICJEaXNwbGF5Qm94LmgiCiAjaW5jbHVkZSAi
RXZlbnRSZWdpb24uaCIKICNpbmNsdWRlICJGbG9hdGluZ1N0YXRlLmgiCiAjaW5jbHVkZSAiSGl0
VGVzdExvY2F0aW9uLmgiCkBAIC0zNyw2ICszNiw3IEBACiAjaW5jbHVkZSAiSW5saW5lRm9ybWF0
dGluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJJbmxpbmVGb3JtYXR0aW5nU3RhdGUuaCIKICNpbmNs
dWRlICJJbnZhbGlkYXRpb25TdGF0ZS5oIgorI2luY2x1ZGUgIkxheW91dEdlb21ldHJ5LmgiCiAj
aW5jbHVkZSAiTGF5b3V0VHJlZUJ1aWxkZXIuaCIKICNpbmNsdWRlICJQYWludEluZm8uaCIKICNp
bmNsdWRlICJSZW5kZXJCbG9ja0Zsb3cuaCIKQEAgLTEzOCw3ICsxMzgsNyBAQCB2b2lkIExpbmVM
YXlvdXQ6OnByZXBhcmVGbG9hdGluZ1N0YXRlKCkKICAgICAgICAgYXV0byBwb3NpdGlvbiA9IGZs
b2F0aW5nT2JqZWN0LT50eXBlKCkgPT0gRmxvYXRpbmdPYmplY3Q6OkZsb2F0UmlnaHQKICAgICAg
ICAgICAgID8gTGF5b3V0OjpGbG9hdGluZ1N0YXRlOjpGbG9hdEl0ZW06OlBvc2l0aW9uOjpSaWdo
dAogICAgICAgICAgICAgOiBMYXlvdXQ6OkZsb2F0aW5nU3RhdGU6OkZsb2F0SXRlbTo6UG9zaXRp
b246OkxlZnQ7Ci0gICAgICAgIGF1dG8gYm94ID0gRGlzcGxheTo6Qm94IHsgfTsKKyAgICAgICAg
YXV0byBib3ggPSBMYXlvdXQ6Okdlb21ldHJ5IHsgfTsKICAgICAgICAgLy8gRklYTUU6IFdlIGFy
ZSBmbG9vcmluZyBoZXJlIGZvciBsZWdhY3kgY29tcGF0aWJpbGl0eS4KICAgICAgICAgLy8gICAg
ICAgIFNlZSBGbG9hdGluZ09iamVjdHM6OmludGVydmFsRm9yRmxvYXRpbmdPYmplY3QuCiAgICAg
ICAgIGF1dG8geSA9IHJlY3QueSgpLmZsb29yKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2xheW91dHRyZWUvTGF5b3V0Qm94LmNwcAppbmRleCA3Njc3N2RiZWI0NjEzNThhMmQ5YmYwOWJm
YTVkMGYwZjYzNzk2OWRmLi42NTJkZTViOTdhZDVhMzk4OTQyMTFjZjAwZGJmMTlkZWUzYmU4ODE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3gu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5jcHAK
QEAgLTI4LDggKzI4LDggQEAKIAogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhU
KQogCi0jaW5jbHVkZSAiRGlzcGxheUJveC5oIgogI2luY2x1ZGUgIkxheW91dENvbnRhaW5lckJv
eC5oIgorI2luY2x1ZGUgIkxheW91dEdlb21ldHJ5LmgiCiAjaW5jbHVkZSAiTGF5b3V0SW5pdGlh
bENvbnRhaW5pbmdCbG9jay5oIgogI2luY2x1ZGUgIkxheW91dFBoYXNlLmgiCiAjaW5jbHVkZSAi
TGF5b3V0U3RhdGUuaCIKQEAgLTQyOSw3ICs0MjksNyBAQCBPcHRpb25hbDxMYXlvdXRVbml0PiBC
b3g6OmNvbHVtbldpZHRoKCkgY29uc3QKICAgICByZXR1cm4gcmFyZURhdGEoKS5jb2x1bW5XaWR0
aDsKIH0KIAotdm9pZCBCb3g6OnNldENhY2hlZERpc3BsYXlCb3hGb3JMYXlvdXRTdGF0ZShMYXlv
dXRTdGF0ZSYgbGF5b3V0U3RhdGUsIHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5OjpCb3g+IGJveCkg
Y29uc3QKK3ZvaWQgQm94OjpzZXRDYWNoZWREaXNwbGF5Qm94Rm9yTGF5b3V0U3RhdGUoTGF5b3V0
U3RhdGUmIGxheW91dFN0YXRlLCBzdGQ6OnVuaXF1ZV9wdHI8R2VvbWV0cnk+IGJveCkgY29uc3QK
IHsKICAgICBBU1NFUlQoIW1fY2FjaGVkTGF5b3V0U3RhdGUpOwogICAgIG1fY2FjaGVkTGF5b3V0
U3RhdGUgPSBtYWtlV2Vha1B0cihsYXlvdXRTdGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9sYXlvdXR0cmVlL0xheW91dEJveC5oCmluZGV4IGE3YWM5ODFjNmY4MzY5N2M0YjVkYjQ1MzQx
NDUwMDdjOGIzMTU1MGIuLmRmMGUxYzgzNTcyYjM0YmEzMzE2MDJiYTk5ZTkyYzExMDdjOWRhNjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5oCkBAIC0z
NCwxMyArMzQsMTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1uYW1lc3BhY2UgRGlzcGxh
eSB7Ci1jbGFzcyBCb3g7Ci19Ci0KIG5hbWVzcGFjZSBMYXlvdXQgewogCiBjbGFzcyBDb250YWlu
ZXJCb3g7CitjbGFzcyBHZW9tZXRyeTsKIGNsYXNzIEluaXRpYWxDb250YWluaW5nQmxvY2s7CiBj
bGFzcyBMYXlvdXRTdGF0ZTsKIGNsYXNzIFRyZWVCdWlsZGVyOwpAQCAtMTY2LDggKzE2Myw4IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldElzQW5vbnltb3VzKCkgeyBtX2lzQW5vbnltb3VzID0gdHJ1
ZTsgfQogCiAgICAgYm9vbCBjYW5DYWNoZUZvckxheW91dFN0YXRlKGNvbnN0IExheW91dFN0YXRl
JikgY29uc3Q7Ci0gICAgRGlzcGxheTo6Qm94KiBjYWNoZWREaXNwbGF5Qm94Rm9yTGF5b3V0U3Rh
dGUoY29uc3QgTGF5b3V0U3RhdGUmKSBjb25zdDsKLSAgICB2b2lkIHNldENhY2hlZERpc3BsYXlC
b3hGb3JMYXlvdXRTdGF0ZShMYXlvdXRTdGF0ZSYsIHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5OjpC
b3g+KSBjb25zdDsKKyAgICBHZW9tZXRyeSogY2FjaGVkRGlzcGxheUJveEZvckxheW91dFN0YXRl
KGNvbnN0IExheW91dFN0YXRlJikgY29uc3Q7CisgICAgdm9pZCBzZXRDYWNoZWREaXNwbGF5Qm94
Rm9yTGF5b3V0U3RhdGUoTGF5b3V0U3RhdGUmLCBzdGQ6OnVuaXF1ZV9wdHI8R2VvbWV0cnk+KSBj
b25zdDsKIAogcHJvdGVjdGVkOgogICAgIEJveChPcHRpb25hbDxFbGVtZW50QXR0cmlidXRlcz4s
IFJlbmRlclN0eWxlJiYsIE9wdGlvblNldDxCYXNlVHlwZUZsYWc+KTsKQEAgLTIwMyw3ICsyMDAs
NyBAQCBwcml2YXRlOgogICAgIAogICAgIC8vIEZpcnN0IExheW91dFN0YXRlIGdldHMgYSBkaXJl
Y3QgY2FjaGUuCiAgICAgbXV0YWJsZSBXZWFrUHRyPExheW91dFN0YXRlPiBtX2NhY2hlZExheW91
dFN0YXRlOwotICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPERpc3BsYXk6OkJveD4gbV9jYWNo
ZWREaXNwbGF5Qm94Rm9yTGF5b3V0U3RhdGU7CisgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8
R2VvbWV0cnk+IG1fY2FjaGVkRGlzcGxheUJveEZvckxheW91dFN0YXRlOwogCiAgICAgdW5zaWdu
ZWQgbV9iYXNlVHlwZUZsYWdzIDogNjsgLy8gT3B0aW9uU2V0PEJhc2VUeXBlRmxhZz4KICAgICBi
b29sIG1faGFzUmFyZURhdGEgOiAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2xheW91dHRyZWUvTGF5b3V0R2VvbWV0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xh
eW91dHRyZWUvTGF5b3V0R2VvbWV0cnkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMxNTkzY2E1MDNhMjNlOWRm
MzgzMGQyYWZkNDk0OWNhZmM4NzNmY2UKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRHZW9tZXRyeS5jcHAKQEAgLTAsMCArMSwxMTAgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTGF5b3V0R2VvbWV0
cnkuaCIKKworI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQorCisjaW5jbHVk
ZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNw
YWNlIExheW91dCB7CisKK1dURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChHZW9tZXRyeSk7CisK
K0dlb21ldHJ5OjpHZW9tZXRyeShjb25zdCBHZW9tZXRyeSYgb3RoZXIpCisgICAgOiBtX3RvcExl
ZnQob3RoZXIubV90b3BMZWZ0KQorICAgICwgbV9jb250ZW50V2lkdGgob3RoZXIubV9jb250ZW50
V2lkdGgpCisgICAgLCBtX2NvbnRlbnRIZWlnaHQob3RoZXIubV9jb250ZW50SGVpZ2h0KQorICAg
ICwgbV9ob3Jpem9udGFsTWFyZ2luKG90aGVyLm1faG9yaXpvbnRhbE1hcmdpbikKKyAgICAsIG1f
dmVydGljYWxNYXJnaW4ob3RoZXIubV92ZXJ0aWNhbE1hcmdpbikKKyAgICAsIG1faGFzQ2xlYXJh
bmNlKG90aGVyLm1faGFzQ2xlYXJhbmNlKQorICAgICwgbV9ib3JkZXIob3RoZXIubV9ib3JkZXIp
CisgICAgLCBtX3BhZGRpbmcob3RoZXIubV9wYWRkaW5nKQorI2lmIEFTU0VSVF9FTkFCTEVECisg
ICAgLCBtX2hhc1ZhbGlkVG9wKG90aGVyLm1faGFzVmFsaWRUb3ApCisgICAgLCBtX2hhc1ZhbGlk
TGVmdChvdGhlci5tX2hhc1ZhbGlkTGVmdCkKKyAgICAsIG1faGFzVmFsaWRIb3Jpem9udGFsTWFy
Z2luKG90aGVyLm1faGFzVmFsaWRIb3Jpem9udGFsTWFyZ2luKQorICAgICwgbV9oYXNWYWxpZFZl
cnRpY2FsTWFyZ2luKG90aGVyLm1faGFzVmFsaWRWZXJ0aWNhbE1hcmdpbikKKyAgICAsIG1faGFz
VmFsaWRCb3JkZXIob3RoZXIubV9oYXNWYWxpZEJvcmRlcikKKyAgICAsIG1faGFzVmFsaWRQYWRk
aW5nKG90aGVyLm1faGFzVmFsaWRQYWRkaW5nKQorICAgICwgbV9oYXNWYWxpZENvbnRlbnRIZWln
aHQob3RoZXIubV9oYXNWYWxpZENvbnRlbnRIZWlnaHQpCisgICAgLCBtX2hhc1ZhbGlkQ29udGVu
dFdpZHRoKG90aGVyLm1faGFzVmFsaWRDb250ZW50V2lkdGgpCisgICAgLCBtX2hhc1ByZWNvbXB1
dGVkTWFyZ2luQmVmb3JlKG90aGVyLm1faGFzUHJlY29tcHV0ZWRNYXJnaW5CZWZvcmUpCisjZW5k
aWYKK3sKK30KKworR2VvbWV0cnk6On5HZW9tZXRyeSgpCit7Cit9CisKK1JlY3QgR2VvbWV0cnk6
Om1hcmdpbkJveCgpIGNvbnN0Cit7CisgICAgYXV0byBib3JkZXJCb3ggPSB0aGlzLT5ib3JkZXJC
b3goKTsKKworICAgIFJlY3QgbWFyZ2luQm94OworICAgIG1hcmdpbkJveC5zZXRUb3AoYm9yZGVy
Qm94LnRvcCgpIC0gbWFyZ2luQmVmb3JlKCkpOworICAgIG1hcmdpbkJveC5zZXRMZWZ0KGJvcmRl
ckJveC5sZWZ0KCkgLSBtYXJnaW5TdGFydCgpKTsKKyAgICBtYXJnaW5Cb3guc2V0SGVpZ2h0KGJv
cmRlckJveC5oZWlnaHQoKSArIG1hcmdpbkJlZm9yZSgpICsgbWFyZ2luQWZ0ZXIoKSk7CisgICAg
bWFyZ2luQm94LnNldFdpZHRoKGJvcmRlckJveC53aWR0aCgpICsgbWFyZ2luU3RhcnQoKSArIG1h
cmdpbkVuZCgpKTsKKyAgICByZXR1cm4gbWFyZ2luQm94OworfQorCitSZWN0IEdlb21ldHJ5Ojpi
b3JkZXJCb3goKSBjb25zdAoreworICAgIFJlY3QgYm9yZGVyQm94OworICAgIGJvcmRlckJveC5z
ZXRUb3BMZWZ0KHsgfSk7CisgICAgYm9yZGVyQm94LnNldFNpemUoeyB3aWR0aCgpLCBoZWlnaHQo
KSB9KTsKKyAgICByZXR1cm4gYm9yZGVyQm94OworfQorCitSZWN0IEdlb21ldHJ5OjpwYWRkaW5n
Qm94KCkgY29uc3QKK3sKKyAgICBhdXRvIGJvcmRlckJveCA9IHRoaXMtPmJvcmRlckJveCgpOwor
CisgICAgUmVjdCBwYWRkaW5nQm94OworICAgIHBhZGRpbmdCb3guc2V0VG9wKGJvcmRlckJveC50
b3AoKSArIGJvcmRlclRvcCgpKTsKKyAgICBwYWRkaW5nQm94LnNldExlZnQoYm9yZGVyQm94Lmxl
ZnQoKSArIGJvcmRlckxlZnQoKSk7CisgICAgcGFkZGluZ0JveC5zZXRIZWlnaHQoYm9yZGVyQm94
LmJvdHRvbSgpIC0gYm9yZGVyVG9wKCkgLSBib3JkZXJCb3R0b20oKSk7CisgICAgcGFkZGluZ0Jv
eC5zZXRXaWR0aChib3JkZXJCb3gud2lkdGgoKSAtIGJvcmRlckxlZnQoKSAtIGJvcmRlclJpZ2h0
KCkpOworICAgIHJldHVybiBwYWRkaW5nQm94OworfQorCitSZWN0IEdlb21ldHJ5Ojpjb250ZW50
Qm94KCkgY29uc3QKK3sKKyAgICBSZWN0IGNvbnRlbnRCb3g7CisgICAgY29udGVudEJveC5zZXRU
b3AoY29udGVudEJveFRvcCgpKTsKKyAgICBjb250ZW50Qm94LnNldExlZnQoY29udGVudEJveExl
ZnQoKSk7CisgICAgY29udGVudEJveC5zZXRXaWR0aChjb250ZW50Qm94V2lkdGgoKSk7CisgICAg
Y29udGVudEJveC5zZXRIZWlnaHQoY29udGVudEJveEhlaWdodCgpKTsKKyAgICByZXR1cm4gY29u
dGVudEJveDsKK30KKworfQorfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9sYXlvdXR0cmVlL0xheW91dEdlb21ldHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvbGF5b3V0dHJlZS9MYXlvdXRHZW9tZXRyeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEyZDY0ZGEyMzU5YmRh
M2E4MDc4MDRhMTk5NGViNzljMzY4MjEwN2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRHZW9tZXRyeS5oCkBAIC0wLDAgKzEsNjg4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJ
TkdfQ09OVEVYVCkKKworI2luY2x1ZGUgIkRpc3BsYXlSZWN0LmgiCisjaW5jbHVkZSAiTGF5b3V0
VW5pdHMuaCIKKyNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKK25hbWVzcGFjZSBMYXlvdXQgeworCitjbGFzcyBSZWN0IHsKK3B1YmxpYzoKKyAgICBSZWN0
KCkgPSBkZWZhdWx0OworICAgIFJlY3QoTGF5b3V0VW5pdCB0b3AsIExheW91dFVuaXQgbGVmdCwg
TGF5b3V0VW5pdCB3aWR0aCwgTGF5b3V0VW5pdCBoZWlnaHQpOworICAgIFJlY3QoTGF5b3V0UG9p
bnQgdG9wTGVmdCwgTGF5b3V0VW5pdCB3aWR0aCwgTGF5b3V0VW5pdCBoZWlnaHQpOworICAgIFJl
Y3QoY29uc3QgTGF5b3V0UG9pbnQmIHRvcExlZnQsIGNvbnN0IExheW91dFNpemUmKTsKKyAgICAK
KyAgICBMYXlvdXRVbml0IHRvcCgpIGNvbnN0OworICAgIExheW91dFVuaXQgbGVmdCgpIGNvbnN0
OworICAgIExheW91dFBvaW50IHRvcExlZnQoKSBjb25zdDsKKworICAgIExheW91dFVuaXQgYm90
dG9tKCkgY29uc3Q7CisgICAgTGF5b3V0VW5pdCByaWdodCgpIGNvbnN0OworICAgIExheW91dFBv
aW50IGJvdHRvbVJpZ2h0KCkgY29uc3Q7CisKKyAgICBMYXlvdXRVbml0IHdpZHRoKCkgY29uc3Q7
CisgICAgTGF5b3V0VW5pdCBoZWlnaHQoKSBjb25zdDsKKyAgICBMYXlvdXRTaXplIHNpemUoKSBj
b25zdDsKKworICAgIHZvaWQgc2V0VG9wKExheW91dFVuaXQpOworICAgIHZvaWQgc2V0TGVmdChM
YXlvdXRVbml0KTsKKyAgICB2b2lkIHNldFRvcExlZnQoY29uc3QgTGF5b3V0UG9pbnQmKTsKKyAg
ICB2b2lkIHNldFdpZHRoKExheW91dFVuaXQpOworICAgIHZvaWQgc2V0SGVpZ2h0KExheW91dFVu
aXQpOworICAgIHZvaWQgc2V0U2l6ZShjb25zdCBMYXlvdXRTaXplJik7CisKKyAgICB2b2lkIHNo
aWZ0TGVmdFRvKExheW91dFVuaXQpOworICAgIHZvaWQgc2hpZnRSaWdodFRvKExheW91dFVuaXQp
OworICAgIHZvaWQgc2hpZnRUb3BUbyhMYXlvdXRVbml0KTsKKyAgICB2b2lkIHNoaWZ0Qm90dG9t
VG8oTGF5b3V0VW5pdCk7CisKKyAgICB2b2lkIG1vdmVIb3Jpem9udGFsbHkoTGF5b3V0VW5pdCk7
CisgICAgdm9pZCBtb3ZlVmVydGljYWxseShMYXlvdXRVbml0KTsKKworICAgIHZvaWQgZXhwYW5k
KE9wdGlvbmFsPExheW91dFVuaXQ+LCBPcHRpb25hbDxMYXlvdXRVbml0Pik7CisgICAgdm9pZCBl
eHBhbmRIb3Jpem9udGFsbHkoTGF5b3V0VW5pdCBkZWx0YSkgeyBleHBhbmQoZGVsdGEsIHsgfSk7
IH0KKyAgICB2b2lkIGV4cGFuZFZlcnRpY2FsbHkoTGF5b3V0VW5pdCBkZWx0YSkgeyBleHBhbmQo
eyB9LCBkZWx0YSk7IH0KKyAgICBib29sIGludGVyc2VjdHMoY29uc3QgUmVjdCYgcmVjdCkgY29u
c3QgeyByZXR1cm4gbV9yZWN0LmludGVyc2VjdHMocmVjdCk7IH0KKworICAgIFJlY3QgY2xvbmUo
KSBjb25zdDsKKyAgICBvcGVyYXRvciBMYXlvdXRSZWN0KCkgY29uc3Q7CisKK3ByaXZhdGU6Cisj
aWYgQVNTRVJUX0VOQUJMRUQKKyAgICB2b2lkIGludmFsaWRhdGVUb3AoKSB7IG1faGFzVmFsaWRU
b3AgPSBmYWxzZTsgfQorICAgIHZvaWQgaW52YWxpZGF0ZUxlZnQoKSB7IG1faGFzVmFsaWRMZWZ0
ID0gZmFsc2U7IH0KKyAgICB2b2lkIGludmFsaWRhdGVXaWR0aCgpIHsgbV9oYXNWYWxpZFdpZHRo
ID0gZmFsc2U7IH0KKyAgICB2b2lkIGludmFsaWRhdGVIZWlnaHQoKSB7IG1faGFzVmFsaWRIZWln
aHQgPSBmYWxzZTsgfQorICAgIHZvaWQgaW52YWxpZGF0ZVBvc2l0aW9uKCk7CisKKyAgICBib29s
IGhhc1ZhbGlkUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX2hhc1ZhbGlkVG9wICYmIG1faGFz
VmFsaWRMZWZ0OyB9CisgICAgYm9vbCBoYXNWYWxpZFNpemUoKSBjb25zdCB7IHJldHVybiBtX2hh
c1ZhbGlkV2lkdGggJiYgbV9oYXNWYWxpZEhlaWdodDsgfQorICAgIGJvb2wgaGFzVmFsaWRHZW9t
ZXRyeSgpIGNvbnN0IHsgcmV0dXJuIGhhc1ZhbGlkUG9zaXRpb24oKSAmJiBoYXNWYWxpZFNpemUo
KTsgfQorCisgICAgdm9pZCBzZXRIYXNWYWxpZFBvc2l0aW9uKCk7CisgICAgdm9pZCBzZXRIYXNW
YWxpZFNpemUoKTsKKworICAgIGJvb2wgbV9oYXNWYWxpZFRvcCB7IGZhbHNlIH07CisgICAgYm9v
bCBtX2hhc1ZhbGlkTGVmdCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2hhc1ZhbGlkV2lkdGggeyBm
YWxzZSB9OworICAgIGJvb2wgbV9oYXNWYWxpZEhlaWdodCB7IGZhbHNlIH07CisjZW5kaWYgLy8g
QVNTRVJUX0VOQUJMRUQKKyAgICBMYXlvdXRSZWN0IG1fcmVjdDsKK307CisKK2lubGluZSBSZWN0
OjpSZWN0KExheW91dFVuaXQgdG9wLCBMYXlvdXRVbml0IGxlZnQsIExheW91dFVuaXQgd2lkdGgs
IExheW91dFVuaXQgaGVpZ2h0KQorICAgIDogbV9yZWN0KGxlZnQsIHRvcCwgd2lkdGgsIGhlaWdo
dCkKK3sKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIG1faGFzVmFsaWRUb3AgPSB0cnVlOworICAg
IG1faGFzVmFsaWRMZWZ0ID0gdHJ1ZTsKKyAgICBtX2hhc1ZhbGlkV2lkdGggPSB0cnVlOworICAg
IG1faGFzVmFsaWRIZWlnaHQgPSB0cnVlOworI2VuZGlmCit9CisKK2lubGluZSBSZWN0OjpSZWN0
KExheW91dFBvaW50IHRvcExlZnQsIExheW91dFVuaXQgd2lkdGgsIExheW91dFVuaXQgaGVpZ2h0
KQorICAgIDogUmVjdCh0b3BMZWZ0LnkoKSwgdG9wTGVmdC54KCksIHdpZHRoLCBoZWlnaHQpCit7
Cit9CisKK2lubGluZSBSZWN0OjpSZWN0KGNvbnN0IExheW91dFBvaW50JiB0b3BMZWZ0LCBjb25z
dCBMYXlvdXRTaXplJiBzaXplKQorICAgIDogUmVjdCh0b3BMZWZ0LnkoKSwgdG9wTGVmdC54KCks
IHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSkKK3sKK30KKworI2lmIEFTU0VSVF9FTkFCTEVE
CitpbmxpbmUgdm9pZCBSZWN0OjppbnZhbGlkYXRlUG9zaXRpb24oKQoreworICAgIGludmFsaWRh
dGVUb3AoKTsKKyAgICBpbnZhbGlkYXRlTGVmdCgpOworfQorCitpbmxpbmUgdm9pZCBSZWN0Ojpz
ZXRIYXNWYWxpZFBvc2l0aW9uKCkKK3sKKyAgICBtX2hhc1ZhbGlkVG9wID0gdHJ1ZTsKKyAgICBt
X2hhc1ZhbGlkTGVmdCA9IHRydWU7Cit9CisKK2lubGluZSB2b2lkIFJlY3Q6OnNldEhhc1ZhbGlk
U2l6ZSgpCit7CisgICAgbV9oYXNWYWxpZFdpZHRoID0gdHJ1ZTsKKyAgICBtX2hhc1ZhbGlkSGVp
Z2h0ID0gdHJ1ZTsKK30KKyNlbmRpZgorCitpbmxpbmUgTGF5b3V0VW5pdCBSZWN0Ojp0b3AoKSBj
b25zdAoreworICAgIEFTU0VSVChtX2hhc1ZhbGlkVG9wKTsKKyAgICByZXR1cm4gbV9yZWN0Lnko
KTsKK30KKworaW5saW5lIExheW91dFVuaXQgUmVjdDo6bGVmdCgpIGNvbnN0Cit7CisgICAgQVNT
RVJUKG1faGFzVmFsaWRMZWZ0KTsKKyAgICByZXR1cm4gbV9yZWN0LngoKTsKK30KKworaW5saW5l
IExheW91dFVuaXQgUmVjdDo6Ym90dG9tKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9oYXNWYWxp
ZFRvcCAmJiBtX2hhc1ZhbGlkSGVpZ2h0KTsKKyAgICByZXR1cm4gbV9yZWN0Lm1heFkoKTsKK30K
KworaW5saW5lIExheW91dFVuaXQgUmVjdDo6cmlnaHQoKSBjb25zdAoreworICAgIEFTU0VSVCht
X2hhc1ZhbGlkTGVmdCAmJiBtX2hhc1ZhbGlkV2lkdGgpOworICAgIHJldHVybiBtX3JlY3QubWF4
WCgpOworfQorCitpbmxpbmUgTGF5b3V0UG9pbnQgUmVjdDo6dG9wTGVmdCgpIGNvbnN0Cit7Cisg
ICAgQVNTRVJUKGhhc1ZhbGlkUG9zaXRpb24oKSk7CisgICAgcmV0dXJuIG1fcmVjdC5taW5YTWlu
WUNvcm5lcigpOworfQorCitpbmxpbmUgTGF5b3V0UG9pbnQgUmVjdDo6Ym90dG9tUmlnaHQoKSBj
b25zdAoreworICAgIEFTU0VSVChoYXNWYWxpZEdlb21ldHJ5KCkpOworICAgIHJldHVybiBtX3Jl
Y3QubWF4WE1heFlDb3JuZXIoKTsKK30KKworaW5saW5lIExheW91dFNpemUgUmVjdDo6c2l6ZSgp
IGNvbnN0Cit7CisgICAgQVNTRVJUKGhhc1ZhbGlkU2l6ZSgpKTsKKyAgICByZXR1cm4gbV9yZWN0
LnNpemUoKTsKK30KKworaW5saW5lIExheW91dFVuaXQgUmVjdDo6d2lkdGgoKSBjb25zdAorewor
ICAgIEFTU0VSVChtX2hhc1ZhbGlkV2lkdGgpOworICAgIHJldHVybiBtX3JlY3Qud2lkdGgoKTsK
K30KKworaW5saW5lIExheW91dFVuaXQgUmVjdDo6aGVpZ2h0KCkgY29uc3QKK3sKKyAgICBBU1NF
UlQobV9oYXNWYWxpZEhlaWdodCk7CisgICAgcmV0dXJuIG1fcmVjdC5oZWlnaHQoKTsKK30KKwor
aW5saW5lIHZvaWQgUmVjdDo6c2V0VG9wTGVmdChjb25zdCBMYXlvdXRQb2ludCYgdG9wTGVmdCkK
K3sKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIHNldEhhc1ZhbGlkUG9zaXRpb24oKTsKKyNlbmRp
ZgorICAgIG1fcmVjdC5zZXRMb2NhdGlvbih0b3BMZWZ0KTsKK30KKworaW5saW5lIHZvaWQgUmVj
dDo6c2V0VG9wKExheW91dFVuaXQgdG9wKQoreworI2lmIEFTU0VSVF9FTkFCTEVECisgICAgbV9o
YXNWYWxpZFRvcCA9IHRydWU7CisjZW5kaWYKKyAgICBtX3JlY3Quc2V0WSh0b3ApOworfQorCitp
bmxpbmUgdm9pZCBSZWN0OjpzZXRMZWZ0KExheW91dFVuaXQgbGVmdCkKK3sKKyNpZiBBU1NFUlRf
RU5BQkxFRAorICAgIG1faGFzVmFsaWRMZWZ0ID0gdHJ1ZTsKKyNlbmRpZgorICAgIG1fcmVjdC5z
ZXRYKGxlZnQpOworfQorCitpbmxpbmUgdm9pZCBSZWN0OjpzZXRXaWR0aChMYXlvdXRVbml0IHdp
ZHRoKQoreworI2lmIEFTU0VSVF9FTkFCTEVECisgICAgbV9oYXNWYWxpZFdpZHRoID0gdHJ1ZTsK
KyNlbmRpZgorICAgIG1fcmVjdC5zZXRXaWR0aCh3aWR0aCk7Cit9CisKK2lubGluZSB2b2lkIFJl
Y3Q6OnNldEhlaWdodChMYXlvdXRVbml0IGhlaWdodCkKK3sKKyNpZiBBU1NFUlRfRU5BQkxFRAor
ICAgIG1faGFzVmFsaWRIZWlnaHQgPSB0cnVlOworI2VuZGlmCisgICAgbV9yZWN0LnNldEhlaWdo
dChoZWlnaHQpOworfQorCitpbmxpbmUgdm9pZCBSZWN0OjpzZXRTaXplKGNvbnN0IExheW91dFNp
emUmIHNpemUpCit7CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICBzZXRIYXNWYWxpZFNpemUoKTsK
KyNlbmRpZgorICAgIG1fcmVjdC5zZXRTaXplKHNpemUpOworfQorCitpbmxpbmUgdm9pZCBSZWN0
OjpzaGlmdExlZnRUbyhMYXlvdXRVbml0IGxlZnQpCit7CisgICAgQVNTRVJUKG1faGFzVmFsaWRM
ZWZ0KTsKKyAgICBtX3JlY3Quc2hpZnRYRWRnZVRvKGxlZnQpOworfQorCitpbmxpbmUgdm9pZCBS
ZWN0OjpzaGlmdFJpZ2h0VG8oTGF5b3V0VW5pdCByaWdodCkKK3sKKyAgICBBU1NFUlQobV9oYXNW
YWxpZExlZnQgJiYgbV9oYXNWYWxpZFdpZHRoKTsKKyAgICBtX3JlY3Quc2hpZnRNYXhYRWRnZVRv
KHJpZ2h0KTsKK30KKworaW5saW5lIHZvaWQgUmVjdDo6c2hpZnRUb3BUbyhMYXlvdXRVbml0IHRv
cCkKK3sKKyAgICBBU1NFUlQobV9oYXNWYWxpZFRvcCk7CisgICAgbV9yZWN0LnNoaWZ0WUVkZ2VU
byh0b3ApOworfQorCitpbmxpbmUgdm9pZCBSZWN0OjpzaGlmdEJvdHRvbVRvKExheW91dFVuaXQg
Ym90dG9tKQoreworICAgIEFTU0VSVChtX2hhc1ZhbGlkVG9wICYmIG1faGFzVmFsaWRIZWlnaHQp
OworICAgIG1fcmVjdC5zaGlmdE1heFlFZGdlVG8oYm90dG9tKTsKK30KKworaW5saW5lIHZvaWQg
UmVjdDo6bW92ZUhvcml6b250YWxseShMYXlvdXRVbml0IG9mZnNldCkKK3sKKyAgICBBU1NFUlQo
bV9oYXNWYWxpZExlZnQpOworICAgIG1fcmVjdC5tb3ZlKExheW91dFNpemUgeyBvZmZzZXQsIDAg
fSk7Cit9CisKK2lubGluZSB2b2lkIFJlY3Q6Om1vdmVWZXJ0aWNhbGx5KExheW91dFVuaXQgb2Zm
c2V0KQoreworICAgIEFTU0VSVChtX2hhc1ZhbGlkVG9wKTsKKyAgICBtX3JlY3QubW92ZShMYXlv
dXRTaXplIHsgMCwgb2Zmc2V0IH0pOworfQorCitpbmxpbmUgdm9pZCBSZWN0OjpleHBhbmQoT3B0
aW9uYWw8TGF5b3V0VW5pdD4gd2lkdGgsIE9wdGlvbmFsPExheW91dFVuaXQ+IGhlaWdodCkKK3sK
KyAgICBBU1NFUlQoIXdpZHRoIHx8IG1faGFzVmFsaWRXaWR0aCk7CisgICAgQVNTRVJUKCFoZWln
aHQgfHwgbV9oYXNWYWxpZEhlaWdodCk7CisgICAgbV9yZWN0LmV4cGFuZCh3aWR0aC52YWx1ZU9y
KDApLCBoZWlnaHQudmFsdWVPcigwKSk7Cit9CisKK2lubGluZSBSZWN0IFJlY3Q6OmNsb25lKCkg
Y29uc3QKK3sKKyAgICBSZWN0IHJlY3Q7CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICByZWN0Lm1f
aGFzVmFsaWRUb3AgPSBtX2hhc1ZhbGlkVG9wOworICAgIHJlY3QubV9oYXNWYWxpZExlZnQgPSBt
X2hhc1ZhbGlkTGVmdDsKKyAgICByZWN0Lm1faGFzVmFsaWRXaWR0aCA9IG1faGFzVmFsaWRXaWR0
aDsKKyAgICByZWN0Lm1faGFzVmFsaWRIZWlnaHQgID0gbV9oYXNWYWxpZEhlaWdodDsKKyNlbmRp
ZgorICAgIHJlY3QubV9yZWN0ID0gbV9yZWN0OworICAgIHJldHVybiByZWN0OworfQorCitpbmxp
bmUgUmVjdDo6b3BlcmF0b3IgTGF5b3V0UmVjdCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGhhc1Zh
bGlkR2VvbWV0cnkoKSk7CisgICAgcmV0dXJuIG1fcmVjdDsKK30KKworCitjbGFzcyBHZW9tZXRy
eSB7CisgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChHZW9tZXRyeSk7CitwdWJsaWM6CisgICAg
R2VvbWV0cnkoY29uc3QgR2VvbWV0cnkmKTsKKyAgICBHZW9tZXRyeSgpID0gZGVmYXVsdDsKKyAg
ICB+R2VvbWV0cnkoKTsKKworICAgIExheW91dFVuaXQgdG9wKCkgY29uc3Q7CisgICAgTGF5b3V0
VW5pdCBsZWZ0KCkgY29uc3Q7CisgICAgTGF5b3V0VW5pdCBib3R0b20oKSBjb25zdCB7IHJldHVy
biB0b3AoKSArIGhlaWdodCgpOyB9CisgICAgTGF5b3V0VW5pdCByaWdodCgpIGNvbnN0IHsgcmV0
dXJuIGxlZnQoKSArIHdpZHRoKCk7IH0KKworICAgIExheW91dFBvaW50IHRvcExlZnQoKSBjb25z
dDsKKyAgICBMYXlvdXRQb2ludCBib3R0b21SaWdodCgpIGNvbnN0IHsgcmV0dXJuIHsgcmlnaHQo
KSwgYm90dG9tKCkgfTsgfQorCisgICAgTGF5b3V0U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4g
eyB3aWR0aCgpLCBoZWlnaHQoKSB9OyB9CisgICAgTGF5b3V0VW5pdCB3aWR0aCgpIGNvbnN0IHsg
cmV0dXJuIGJvcmRlckxlZnQoKSArIHBhZGRpbmdCb3hXaWR0aCgpICsgYm9yZGVyUmlnaHQoKTsg
fQorICAgIExheW91dFVuaXQgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gYm9yZGVyVG9wKCkgKyBw
YWRkaW5nQm94SGVpZ2h0KCkgKyBib3JkZXJCb3R0b20oKTsgfQorICAgIGJvb2wgaXNFbXB0eSgp
IGNvbnN0IHsgcmV0dXJuIHNpemUoKS5pc0VtcHR5KCk7IH0KKyAgICBSZWN0IHJlY3QoKSBjb25z
dCB7IHJldHVybiB7IHRvcCgpLCBsZWZ0KCksIHdpZHRoKCksIGhlaWdodCgpIH07IH0KKyAgICBS
ZWN0IHJlY3RXaXRoTWFyZ2luKCkgY29uc3QgeyByZXR1cm4geyB0b3AoKSAtIG1hcmdpbkJlZm9y
ZSgpLCBsZWZ0KCkgLSBtYXJnaW5TdGFydCgpLCBtYXJnaW5TdGFydCgpICsgd2lkdGgoKSArIG1h
cmdpbkVuZCgpLCBtYXJnaW5CZWZvcmUoKSArIGhlaWdodCgpICsgbWFyZ2luQWZ0ZXIoKSB9OyB9
CisKKyAgICBzdHJ1Y3QgVmVydGljYWxNYXJnaW4geworICAgICAgICBMYXlvdXRVbml0IGJlZm9y
ZTsKKyAgICAgICAgTGF5b3V0VW5pdCBhZnRlcjsKKyAgICB9OworICAgIFZlcnRpY2FsTWFyZ2lu
IHZlcnRpY2FsTWFyZ2luKCkgY29uc3Q7CisKKyAgICBzdHJ1Y3QgSG9yaXpvbnRhbE1hcmdpbiB7
CisgICAgICAgIExheW91dFVuaXQgc3RhcnQ7CisgICAgICAgIExheW91dFVuaXQgZW5kOworICAg
IH07CisgICAgSG9yaXpvbnRhbE1hcmdpbiBob3Jpem9udGFsTWFyZ2luKCkgY29uc3Q7CisgICAg
TGF5b3V0VW5pdCBtYXJnaW5CZWZvcmUoKSBjb25zdDsKKyAgICBMYXlvdXRVbml0IG1hcmdpblN0
YXJ0KCkgY29uc3Q7CisgICAgTGF5b3V0VW5pdCBtYXJnaW5BZnRlcigpIGNvbnN0OworICAgIExh
eW91dFVuaXQgbWFyZ2luRW5kKCkgY29uc3Q7CisgICAgYm9vbCBoYXNDbGVhcmFuY2UoKSBjb25z
dCB7IHJldHVybiBtX2hhc0NsZWFyYW5jZTsgfQorCisgICAgTGF5b3V0VW5pdCBib3JkZXJUb3Ao
KSBjb25zdDsKKyAgICBMYXlvdXRVbml0IGJvcmRlckxlZnQoKSBjb25zdDsKKyAgICBMYXlvdXRV
bml0IGJvcmRlckJvdHRvbSgpIGNvbnN0OworICAgIExheW91dFVuaXQgYm9yZGVyUmlnaHQoKSBj
b25zdDsKKyAgICBMYXlvdXRVbml0IHZlcnRpY2FsQm9yZGVyKCkgY29uc3QgeyByZXR1cm4gYm9y
ZGVyVG9wKCkgKyBib3JkZXJCb3R0b20oKTsgfQorICAgIExheW91dFVuaXQgaG9yaXpvbnRhbEJv
cmRlcigpIGNvbnN0IHsgcmV0dXJuIGJvcmRlckxlZnQoKSArIGJvcmRlclJpZ2h0KCk7IH0KKwor
ICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IHBhZGRpbmdUb3AoKSBjb25zdDsKKyAgICBPcHRpb25h
bDxMYXlvdXRVbml0PiBwYWRkaW5nTGVmdCgpIGNvbnN0OworICAgIE9wdGlvbmFsPExheW91dFVu
aXQ+IHBhZGRpbmdCb3R0b20oKSBjb25zdDsKKyAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBwYWRk
aW5nUmlnaHQoKSBjb25zdDsKKyAgICBPcHRpb25hbDxMYXlvdXRVbml0PiB2ZXJ0aWNhbFBhZGRp
bmcoKSBjb25zdDsKKyAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBob3Jpem9udGFsUGFkZGluZygp
IGNvbnN0OworCisgICAgTGF5b3V0VW5pdCBjb250ZW50Qm94VG9wKCkgY29uc3QgeyByZXR1cm4g
cGFkZGluZ0JveFRvcCgpICsgcGFkZGluZ1RvcCgpLnZhbHVlT3IoMCk7IH0KKyAgICBMYXlvdXRV
bml0IGNvbnRlbnRCb3hMZWZ0KCkgY29uc3QgeyByZXR1cm4gcGFkZGluZ0JveExlZnQoKSArIHBh
ZGRpbmdMZWZ0KCkudmFsdWVPcigwKTsgfQorICAgIExheW91dFVuaXQgY29udGVudEJveEJvdHRv
bSgpIGNvbnN0IHsgcmV0dXJuIGNvbnRlbnRCb3hUb3AoKSArIGNvbnRlbnRCb3hIZWlnaHQoKTsg
fQorICAgIExheW91dFVuaXQgY29udGVudEJveFJpZ2h0KCkgY29uc3QgeyByZXR1cm4gY29udGVu
dEJveExlZnQoKSArIGNvbnRlbnRCb3hXaWR0aCgpOyB9CisgICAgTGF5b3V0VW5pdCBjb250ZW50
Qm94SGVpZ2h0KCkgY29uc3Q7CisgICAgTGF5b3V0VW5pdCBjb250ZW50Qm94V2lkdGgoKSBjb25z
dDsKKworICAgIExheW91dFVuaXQgcGFkZGluZ0JveFRvcCgpIGNvbnN0IHsgcmV0dXJuIGJvcmRl
clRvcCgpOyB9CisgICAgTGF5b3V0VW5pdCBwYWRkaW5nQm94TGVmdCgpIGNvbnN0IHsgcmV0dXJu
IGJvcmRlckxlZnQoKTsgfQorICAgIExheW91dFVuaXQgcGFkZGluZ0JveEJvdHRvbSgpIGNvbnN0
IHsgcmV0dXJuIHBhZGRpbmdCb3hUb3AoKSArIHBhZGRpbmdCb3hIZWlnaHQoKTsgfQorICAgIExh
eW91dFVuaXQgcGFkZGluZ0JveFJpZ2h0KCkgY29uc3QgeyByZXR1cm4gcGFkZGluZ0JveExlZnQo
KSArIHBhZGRpbmdCb3hXaWR0aCgpOyB9CisgICAgTGF5b3V0VW5pdCBwYWRkaW5nQm94SGVpZ2h0
KCkgY29uc3QgeyByZXR1cm4gcGFkZGluZ1RvcCgpLnZhbHVlT3IoMCkgKyBjb250ZW50Qm94SGVp
Z2h0KCkgKyBwYWRkaW5nQm90dG9tKCkudmFsdWVPcigwKTsgfQorICAgIExheW91dFVuaXQgcGFk
ZGluZ0JveFdpZHRoKCkgY29uc3QgeyByZXR1cm4gcGFkZGluZ0xlZnQoKS52YWx1ZU9yKDApICsg
Y29udGVudEJveFdpZHRoKCkgKyBwYWRkaW5nUmlnaHQoKS52YWx1ZU9yKDApOyB9CisKKyAgICBM
YXlvdXRVbml0IGJvcmRlckJveEhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIGJvcmRlclRvcCgpICsg
cGFkZGluZ0JveEhlaWdodCgpICsgYm9yZGVyQm90dG9tKCk7IH0KKyAgICBMYXlvdXRVbml0IGJv
cmRlckJveFdpZHRoKCkgY29uc3QgeyByZXR1cm4gYm9yZGVyTGVmdCgpICsgcGFkZGluZ0JveFdp
ZHRoKCkgKyBib3JkZXJSaWdodCgpOyB9CisgICAgTGF5b3V0VW5pdCBtYXJnaW5Cb3hIZWlnaHQo
KSBjb25zdCB7IHJldHVybiBtYXJnaW5CZWZvcmUoKSArIGJvcmRlckJveEhlaWdodCgpICsgbWFy
Z2luQWZ0ZXIoKTsgfQorICAgIExheW91dFVuaXQgbWFyZ2luQm94V2lkdGgoKSBjb25zdCB7IHJl
dHVybiBtYXJnaW5TdGFydCgpICsgYm9yZGVyQm94V2lkdGgoKSArIG1hcmdpbkVuZCgpOyB9CisK
KyAgICBMYXlvdXRVbml0IHZlcnRpY2FsTWFyZ2luQm9yZGVyQW5kUGFkZGluZygpIGNvbnN0IHsg
cmV0dXJuIG1hcmdpbkJlZm9yZSgpICsgdmVydGljYWxCb3JkZXIoKSArIHZlcnRpY2FsUGFkZGlu
ZygpLnZhbHVlT3IoMCkgKyBtYXJnaW5BZnRlcigpOyB9CisgICAgTGF5b3V0VW5pdCBob3Jpem9u
dGFsTWFyZ2luQm9yZGVyQW5kUGFkZGluZygpIGNvbnN0IHsgcmV0dXJuIG1hcmdpblN0YXJ0KCkg
KyBob3Jpem9udGFsQm9yZGVyKCkgKyBob3Jpem9udGFsUGFkZGluZygpLnZhbHVlT3IoMCkgKyBt
YXJnaW5FbmQoKTsgfQorCisgICAgUmVjdCBtYXJnaW5Cb3goKSBjb25zdDsKKyAgICBSZWN0IGJv
cmRlckJveCgpIGNvbnN0OworICAgIFJlY3QgcGFkZGluZ0JveCgpIGNvbnN0OworICAgIFJlY3Qg
Y29udGVudEJveCgpIGNvbnN0OworCisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICB2b2lkIHNldEhh
c1ByZWNvbXB1dGVkTWFyZ2luQmVmb3JlKCkgeyBtX2hhc1ByZWNvbXB1dGVkTWFyZ2luQmVmb3Jl
ID0gdHJ1ZTsgfQorI2VuZGlmCisKKyAgICB2b2lkIHNldFRvcExlZnQoY29uc3QgTGF5b3V0UG9p
bnQmKTsKKyAgICB2b2lkIHNldFRvcChMYXlvdXRVbml0KTsKKyAgICB2b2lkIHNldExlZnQoTGF5
b3V0VW5pdCk7CisgICAgdm9pZCBtb3ZlSG9yaXpvbnRhbGx5KExheW91dFVuaXQgb2Zmc2V0KSB7
IG1fdG9wTGVmdC5tb3ZlKG9mZnNldCwgMF9sdSk7IH0KKyAgICB2b2lkIG1vdmVWZXJ0aWNhbGx5
KExheW91dFVuaXQgb2Zmc2V0KSB7IG1fdG9wTGVmdC5tb3ZlKDBfbHUsIG9mZnNldCk7IH0KKyAg
ICB2b2lkIG1vdmUoY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSkgeyBtX3RvcExlZnQubW92ZShzaXpl
KTsgfQorICAgIHZvaWQgbW92ZUJ5KExheW91dFBvaW50IG9mZnNldCkgeyBtX3RvcExlZnQubW92
ZUJ5KG9mZnNldCk7IH0KKworICAgIHZvaWQgc2V0Q29udGVudEJveEhlaWdodChMYXlvdXRVbml0
KTsKKyAgICB2b2lkIHNldENvbnRlbnRCb3hXaWR0aChMYXlvdXRVbml0KTsKKworICAgIHZvaWQg
c2V0SG9yaXpvbnRhbE1hcmdpbihIb3Jpem9udGFsTWFyZ2luKTsKKyAgICB2b2lkIHNldFZlcnRp
Y2FsTWFyZ2luKFZlcnRpY2FsTWFyZ2luKTsKKyAgICB2b2lkIHNldEhhc0NsZWFyYW5jZSgpIHsg
bV9oYXNDbGVhcmFuY2UgPSB0cnVlOyB9CisKKyAgICB2b2lkIHNldEJvcmRlcihMYXlvdXQ6OkVk
Z2VzKTsKKworICAgIHZvaWQgc2V0VmVydGljYWxQYWRkaW5nKExheW91dDo6VmVydGljYWxFZGdl
cyk7CisgICAgdm9pZCBzZXRQYWRkaW5nKE9wdGlvbmFsPExheW91dDo6RWRnZXM+KTsKKworcHJp
dmF0ZToKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIHZvaWQgaW52YWxpZGF0ZU1hcmdpbigpOwor
ICAgIHZvaWQgaW52YWxpZGF0ZUJvcmRlcigpIHsgbV9oYXNWYWxpZEJvcmRlciA9IGZhbHNlOyB9
CisgICAgdm9pZCBpbnZhbGlkYXRlUGFkZGluZygpIHsgbV9oYXNWYWxpZFBhZGRpbmcgPSBmYWxz
ZTsgfQorICAgIHZvaWQgaW52YWxpZGF0ZVByZWNvbXB1dGVkTWFyZ2luQmVmb3JlKCkgeyBtX2hh
c1ByZWNvbXB1dGVkTWFyZ2luQmVmb3JlID0gZmFsc2U7IH0KKworICAgIHZvaWQgc2V0SGFzVmFs
aWRUb3AoKSB7IG1faGFzVmFsaWRUb3AgPSB0cnVlOyB9CisgICAgdm9pZCBzZXRIYXNWYWxpZExl
ZnQoKSB7IG1faGFzVmFsaWRMZWZ0ID0gdHJ1ZTsgfQorICAgIHZvaWQgc2V0SGFzVmFsaWRWZXJ0
aWNhbE1hcmdpbigpIHsgbV9oYXNWYWxpZFZlcnRpY2FsTWFyZ2luID0gdHJ1ZTsgfQorICAgIHZv
aWQgc2V0SGFzVmFsaWRIb3Jpem9udGFsTWFyZ2luKCkgeyBtX2hhc1ZhbGlkSG9yaXpvbnRhbE1h
cmdpbiA9IHRydWU7IH0KKworICAgIHZvaWQgc2V0SGFzVmFsaWRCb3JkZXIoKSB7IG1faGFzVmFs
aWRCb3JkZXIgPSB0cnVlOyB9CisgICAgdm9pZCBzZXRIYXNWYWxpZFBhZGRpbmcoKSB7IG1faGFz
VmFsaWRQYWRkaW5nID0gdHJ1ZTsgfQorCisgICAgdm9pZCBzZXRIYXNWYWxpZENvbnRlbnRIZWln
aHQoKSB7IG1faGFzVmFsaWRDb250ZW50SGVpZ2h0ID0gdHJ1ZTsgfQorICAgIHZvaWQgc2V0SGFz
VmFsaWRDb250ZW50V2lkdGgoKSB7IG1faGFzVmFsaWRDb250ZW50V2lkdGggPSB0cnVlOyB9Cisj
ZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKKworICAgIExheW91dFBvaW50IG1fdG9wTGVmdDsKKyAg
ICBMYXlvdXRVbml0IG1fY29udGVudFdpZHRoOworICAgIExheW91dFVuaXQgbV9jb250ZW50SGVp
Z2h0OworCisgICAgSG9yaXpvbnRhbE1hcmdpbiBtX2hvcml6b250YWxNYXJnaW47CisgICAgVmVy
dGljYWxNYXJnaW4gbV92ZXJ0aWNhbE1hcmdpbjsKKyAgICBib29sIG1faGFzQ2xlYXJhbmNlIHsg
ZmFsc2UgfTsKKworICAgIExheW91dDo6RWRnZXMgbV9ib3JkZXI7CisgICAgT3B0aW9uYWw8TGF5
b3V0OjpFZGdlcz4gbV9wYWRkaW5nOworCisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICBib29sIG1f
aGFzVmFsaWRUb3AgeyBmYWxzZSB9OworICAgIGJvb2wgbV9oYXNWYWxpZExlZnQgeyBmYWxzZSB9
OworICAgIGJvb2wgbV9oYXNWYWxpZEhvcml6b250YWxNYXJnaW4geyBmYWxzZSB9OworICAgIGJv
b2wgbV9oYXNWYWxpZFZlcnRpY2FsTWFyZ2luIHsgZmFsc2UgfTsKKyAgICBib29sIG1faGFzVmFs
aWRCb3JkZXIgeyBmYWxzZSB9OworICAgIGJvb2wgbV9oYXNWYWxpZFBhZGRpbmcgeyBmYWxzZSB9
OworICAgIGJvb2wgbV9oYXNWYWxpZENvbnRlbnRIZWlnaHQgeyBmYWxzZSB9OworICAgIGJvb2wg
bV9oYXNWYWxpZENvbnRlbnRXaWR0aCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2hhc1ByZWNvbXB1
dGVkTWFyZ2luQmVmb3JlIHsgZmFsc2UgfTsKKyNlbmRpZiAvLyBBU1NFUlRfRU5BQkxFRAorfTsK
KworI2lmIEFTU0VSVF9FTkFCTEVECitpbmxpbmUgdm9pZCBHZW9tZXRyeTo6aW52YWxpZGF0ZU1h
cmdpbigpCit7CisgICAgbV9oYXNWYWxpZEhvcml6b250YWxNYXJnaW4gPSBmYWxzZTsKKyAgICBt
X2hhc1ZhbGlkVmVydGljYWxNYXJnaW4gPSBmYWxzZTsKK30KKyNlbmRpZgorCitpbmxpbmUgTGF5
b3V0VW5pdCBHZW9tZXRyeTo6dG9wKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9oYXNWYWxpZFRv
cCAmJiAobV9oYXNQcmVjb21wdXRlZE1hcmdpbkJlZm9yZSB8fCBtX2hhc1ZhbGlkVmVydGljYWxN
YXJnaW4pKTsKKyAgICByZXR1cm4gbV90b3BMZWZ0LnkoKTsKK30KKworaW5saW5lIExheW91dFVu
aXQgR2VvbWV0cnk6OmxlZnQoKSBjb25zdAoreworICAgIEFTU0VSVChtX2hhc1ZhbGlkTGVmdCAm
JiBtX2hhc1ZhbGlkSG9yaXpvbnRhbE1hcmdpbik7CisgICAgcmV0dXJuIG1fdG9wTGVmdC54KCk7
Cit9CisKK2lubGluZSBMYXlvdXRQb2ludCBHZW9tZXRyeTo6dG9wTGVmdCgpIGNvbnN0Cit7Cisg
ICAgQVNTRVJUKG1faGFzVmFsaWRUb3AgJiYgKG1faGFzUHJlY29tcHV0ZWRNYXJnaW5CZWZvcmUg
fHwgbV9oYXNWYWxpZFZlcnRpY2FsTWFyZ2luKSk7CisgICAgQVNTRVJUKG1faGFzVmFsaWRMZWZ0
ICYmIG1faGFzVmFsaWRIb3Jpem9udGFsTWFyZ2luKTsKKyAgICByZXR1cm4gbV90b3BMZWZ0Owor
fQorCitpbmxpbmUgdm9pZCBHZW9tZXRyeTo6c2V0VG9wTGVmdChjb25zdCBMYXlvdXRQb2ludCYg
dG9wTGVmdCkKK3sKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIHNldEhhc1ZhbGlkVG9wKCk7Cisg
ICAgc2V0SGFzVmFsaWRMZWZ0KCk7CisjZW5kaWYKKyAgICBtX3RvcExlZnQgPSB0b3BMZWZ0Owor
fQorCitpbmxpbmUgdm9pZCBHZW9tZXRyeTo6c2V0VG9wKExheW91dFVuaXQgdG9wKQoreworI2lm
IEFTU0VSVF9FTkFCTEVECisgICAgc2V0SGFzVmFsaWRUb3AoKTsKKyNlbmRpZgorICAgIG1fdG9w
TGVmdC5zZXRZKHRvcCk7Cit9CisKK2lubGluZSB2b2lkIEdlb21ldHJ5OjpzZXRMZWZ0KExheW91
dFVuaXQgbGVmdCkKK3sKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIHNldEhhc1ZhbGlkTGVmdCgp
OworI2VuZGlmCisgICAgbV90b3BMZWZ0LnNldFgobGVmdCk7Cit9CisKK2lubGluZSB2b2lkIEdl
b21ldHJ5OjpzZXRDb250ZW50Qm94SGVpZ2h0KExheW91dFVuaXQgaGVpZ2h0KQoreyAKKyNpZiBB
U1NFUlRfRU5BQkxFRAorICAgIHNldEhhc1ZhbGlkQ29udGVudEhlaWdodCgpOworI2VuZGlmCisg
ICAgbV9jb250ZW50SGVpZ2h0ID0gaGVpZ2h0OworfQorCitpbmxpbmUgdm9pZCBHZW9tZXRyeTo6
c2V0Q29udGVudEJveFdpZHRoKExheW91dFVuaXQgd2lkdGgpCit7IAorI2lmIEFTU0VSVF9FTkFC
TEVECisgICAgc2V0SGFzVmFsaWRDb250ZW50V2lkdGgoKTsKKyNlbmRpZgorICAgIG1fY29udGVu
dFdpZHRoID0gd2lkdGg7Cit9CisKK2lubGluZSBMYXlvdXRVbml0IEdlb21ldHJ5Ojpjb250ZW50
Qm94SGVpZ2h0KCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9oYXNWYWxpZENvbnRlbnRIZWlnaHQp
OworICAgIHJldHVybiBtX2NvbnRlbnRIZWlnaHQ7Cit9CisKK2lubGluZSBMYXlvdXRVbml0IEdl
b21ldHJ5Ojpjb250ZW50Qm94V2lkdGgoKSBjb25zdAoreworICAgIEFTU0VSVChtX2hhc1ZhbGlk
Q29udGVudFdpZHRoKTsKKyAgICByZXR1cm4gbV9jb250ZW50V2lkdGg7Cit9CisKK2lubGluZSB2
b2lkIEdlb21ldHJ5OjpzZXRIb3Jpem9udGFsTWFyZ2luKEhvcml6b250YWxNYXJnaW4gbWFyZ2lu
KQoreworI2lmIEFTU0VSVF9FTkFCTEVECisgICAgc2V0SGFzVmFsaWRIb3Jpem9udGFsTWFyZ2lu
KCk7CisjZW5kaWYKKyAgICBtX2hvcml6b250YWxNYXJnaW4gPSBtYXJnaW47Cit9CisKK2lubGlu
ZSB2b2lkIEdlb21ldHJ5OjpzZXRWZXJ0aWNhbE1hcmdpbihWZXJ0aWNhbE1hcmdpbiBtYXJnaW4p
Cit7CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICBzZXRIYXNWYWxpZFZlcnRpY2FsTWFyZ2luKCk7
CisgICAgaW52YWxpZGF0ZVByZWNvbXB1dGVkTWFyZ2luQmVmb3JlKCk7CisjZW5kaWYKKyAgICBt
X3ZlcnRpY2FsTWFyZ2luID0gbWFyZ2luOworfQorCitpbmxpbmUgdm9pZCBHZW9tZXRyeTo6c2V0
Qm9yZGVyKExheW91dDo6RWRnZXMgYm9yZGVyKQoreworI2lmIEFTU0VSVF9FTkFCTEVECisgICAg
c2V0SGFzVmFsaWRCb3JkZXIoKTsKKyNlbmRpZgorICAgIG1fYm9yZGVyID0gYm9yZGVyOworfQor
CitpbmxpbmUgdm9pZCBHZW9tZXRyeTo6c2V0UGFkZGluZyhPcHRpb25hbDxMYXlvdXQ6OkVkZ2Vz
PiBwYWRkaW5nKQoreworI2lmIEFTU0VSVF9FTkFCTEVECisgICAgc2V0SGFzVmFsaWRQYWRkaW5n
KCk7CisjZW5kaWYKKyAgICBtX3BhZGRpbmcgPSBwYWRkaW5nOworfQorCitpbmxpbmUgdm9pZCBH
ZW9tZXRyeTo6c2V0VmVydGljYWxQYWRkaW5nKExheW91dDo6VmVydGljYWxFZGdlcyB2ZXJ0aWNh
bFBhZGRpbmcpCit7CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICBzZXRIYXNWYWxpZFBhZGRpbmco
KTsKKyNlbmRpZgorICAgIG1fcGFkZGluZyA9IExheW91dDo6RWRnZXMgeyBtX3BhZGRpbmcgPyBt
X3BhZGRpbmctPmhvcml6b250YWwgOiBMYXlvdXQ6Okhvcml6b250YWxFZGdlcygpLCB2ZXJ0aWNh
bFBhZGRpbmcgfTsKK30KKworaW5saW5lIEdlb21ldHJ5OjpWZXJ0aWNhbE1hcmdpbiBHZW9tZXRy
eTo6dmVydGljYWxNYXJnaW4oKSBjb25zdAoreworICAgIEFTU0VSVChtX2hhc1ZhbGlkVmVydGlj
YWxNYXJnaW4pOworICAgIHJldHVybiBtX3ZlcnRpY2FsTWFyZ2luOworfQorCitpbmxpbmUgR2Vv
bWV0cnk6Okhvcml6b250YWxNYXJnaW4gR2VvbWV0cnk6Omhvcml6b250YWxNYXJnaW4oKSBjb25z
dAoreworICAgIEFTU0VSVChtX2hhc1ZhbGlkSG9yaXpvbnRhbE1hcmdpbik7CisgICAgcmV0dXJu
IG1faG9yaXpvbnRhbE1hcmdpbjsKK30KKworaW5saW5lIExheW91dFVuaXQgR2VvbWV0cnk6Om1h
cmdpbkJlZm9yZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1faGFzVmFsaWRWZXJ0aWNhbE1hcmdp
bik7CisgICAgcmV0dXJuIG1fdmVydGljYWxNYXJnaW4uYmVmb3JlOworfQorCitpbmxpbmUgTGF5
b3V0VW5pdCBHZW9tZXRyeTo6bWFyZ2luU3RhcnQoKSBjb25zdAoreworICAgIEFTU0VSVChtX2hh
c1ZhbGlkSG9yaXpvbnRhbE1hcmdpbik7CisgICAgcmV0dXJuIG1faG9yaXpvbnRhbE1hcmdpbi5z
dGFydDsKK30KKworaW5saW5lIExheW91dFVuaXQgR2VvbWV0cnk6Om1hcmdpbkFmdGVyKCkgY29u
c3QKK3sKKyAgICBBU1NFUlQobV9oYXNWYWxpZFZlcnRpY2FsTWFyZ2luKTsKKyAgICByZXR1cm4g
bV92ZXJ0aWNhbE1hcmdpbi5hZnRlcjsKK30KKworaW5saW5lIExheW91dFVuaXQgR2VvbWV0cnk6
Om1hcmdpbkVuZCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1faGFzVmFsaWRIb3Jpem9udGFsTWFy
Z2luKTsKKyAgICByZXR1cm4gbV9ob3Jpem9udGFsTWFyZ2luLmVuZDsKK30KKworaW5saW5lIE9w
dGlvbmFsPExheW91dFVuaXQ+IEdlb21ldHJ5OjpwYWRkaW5nVG9wKCkgY29uc3QKK3sKKyAgICBB
U1NFUlQobV9oYXNWYWxpZFBhZGRpbmcpOworICAgIGlmICghbV9wYWRkaW5nKQorICAgICAgICBy
ZXR1cm4geyB9OworICAgIHJldHVybiBtX3BhZGRpbmctPnZlcnRpY2FsLnRvcDsKK30KKworaW5s
aW5lIE9wdGlvbmFsPExheW91dFVuaXQ+IEdlb21ldHJ5OjpwYWRkaW5nTGVmdCgpIGNvbnN0Cit7
CisgICAgQVNTRVJUKG1faGFzVmFsaWRQYWRkaW5nKTsKKyAgICBpZiAoIW1fcGFkZGluZykKKyAg
ICAgICAgcmV0dXJuIHsgfTsKKyAgICByZXR1cm4gbV9wYWRkaW5nLT5ob3Jpem9udGFsLmxlZnQ7
Cit9CisKK2lubGluZSBPcHRpb25hbDxMYXlvdXRVbml0PiBHZW9tZXRyeTo6cGFkZGluZ0JvdHRv
bSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1faGFzVmFsaWRQYWRkaW5nKTsKKyAgICBpZiAoIW1f
cGFkZGluZykKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICByZXR1cm4gbV9wYWRkaW5nLT52ZXJ0
aWNhbC5ib3R0b207Cit9CisKK2lubGluZSBPcHRpb25hbDxMYXlvdXRVbml0PiBHZW9tZXRyeTo6
cGFkZGluZ1JpZ2h0KCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9oYXNWYWxpZFBhZGRpbmcpOwor
ICAgIGlmICghbV9wYWRkaW5nKQorICAgICAgICByZXR1cm4geyB9OworICAgIHJldHVybiBtX3Bh
ZGRpbmctPmhvcml6b250YWwucmlnaHQ7Cit9CisKK2lubGluZSBPcHRpb25hbDxMYXlvdXRVbml0
PiBHZW9tZXRyeTo6dmVydGljYWxQYWRkaW5nKCkgY29uc3QKK3sKKyAgICBhdXRvIHBhZGRpbmdU
b3AgPSB0aGlzLT5wYWRkaW5nVG9wKCk7CisgICAgYXV0byBwYWRkaW5nQm90dG9tID0gdGhpcy0+
cGFkZGluZ0JvdHRvbSgpOworICAgIGlmICghcGFkZGluZ1RvcCAmJiAhcGFkZGluZ0JvdHRvbSkK
KyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICByZXR1cm4gcGFkZGluZ1RvcC52YWx1ZU9yKDApICsg
cGFkZGluZ0JvdHRvbS52YWx1ZU9yKDApOworfQorCitpbmxpbmUgT3B0aW9uYWw8TGF5b3V0VW5p
dD4gR2VvbWV0cnk6Omhvcml6b250YWxQYWRkaW5nKCkgY29uc3QKK3sKKyAgICBhdXRvIHBhZGRp
bmdMZWZ0ID0gdGhpcy0+cGFkZGluZ0xlZnQoKTsKKyAgICBhdXRvIHBhZGRpbmdSaWdodCA9IHRo
aXMtPnBhZGRpbmdSaWdodCgpOworICAgIGlmICghcGFkZGluZ0xlZnQgJiYgIXBhZGRpbmdSaWdo
dCkKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICByZXR1cm4gcGFkZGluZ0xlZnQudmFsdWVPcigw
KSArIHBhZGRpbmdSaWdodC52YWx1ZU9yKDApOworfQorCitpbmxpbmUgTGF5b3V0VW5pdCBHZW9t
ZXRyeTo6Ym9yZGVyVG9wKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9oYXNWYWxpZEJvcmRlcik7
CisgICAgcmV0dXJuIG1fYm9yZGVyLnZlcnRpY2FsLnRvcDsKK30KKworaW5saW5lIExheW91dFVu
aXQgR2VvbWV0cnk6OmJvcmRlckxlZnQoKSBjb25zdAoreworICAgIEFTU0VSVChtX2hhc1ZhbGlk
Qm9yZGVyKTsKKyAgICByZXR1cm4gbV9ib3JkZXIuaG9yaXpvbnRhbC5sZWZ0OworfQorCitpbmxp
bmUgTGF5b3V0VW5pdCBHZW9tZXRyeTo6Ym9yZGVyQm90dG9tKCkgY29uc3QKK3sKKyAgICBBU1NF
UlQobV9oYXNWYWxpZEJvcmRlcik7CisgICAgcmV0dXJuIG1fYm9yZGVyLnZlcnRpY2FsLmJvdHRv
bTsKK30KKworaW5saW5lIExheW91dFVuaXQgR2VvbWV0cnk6OmJvcmRlclJpZ2h0KCkgY29uc3QK
K3sKKyAgICBBU1NFUlQobV9oYXNWYWxpZEJvcmRlcik7CisgICAgcmV0dXJuIG1fYm9yZGVyLmhv
cml6b250YWwucmlnaHQ7Cit9CisKK30KK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCmluZGV4IDcwMmFl
MzU1ZDY1YWYxY2RiY2VjMzhmNmFjNmM3ZjM1Y2MyMzBhMmUuLmQ0YmZiYTA2MjY2NmY4NmY3ZGQ3
OWM5ZjEyYzI2MjU3NmEzMmUyMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9s
YXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAKQEAgLTI5LDcgKzI5LDYgQEAKICNp
ZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKIAogI2luY2x1ZGUgIkNhY2hlZElt
YWdlLmgiCi0jaW5jbHVkZSAiRGlzcGxheUJveC5oIgogI2luY2x1ZGUgIkRpc3BsYXlSdW4uaCIK
ICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MVGFibGVDZWxsRWxlbWVudC5o
IgpAQCAtNDIsNiArNDEsNyBAQAogI2luY2x1ZGUgIkxheW91dENoaWxkSXRlcmF0b3IuaCIKICNp
bmNsdWRlICJMYXlvdXRDb250YWluZXJCb3guaCIKICNpbmNsdWRlICJMYXlvdXRDb250ZXh0Lmgi
CisjaW5jbHVkZSAiTGF5b3V0R2VvbWV0cnkuaCIKICNpbmNsdWRlICJMYXlvdXRJbml0aWFsQ29u
dGFpbmluZ0Jsb2NrLmgiCiAjaW5jbHVkZSAiTGF5b3V0SW5saW5lVGV4dEJveC5oIgogI2luY2x1
ZGUgIkxheW91dExpbmVCcmVha0JveC5oIgpAQCAtNDI2LDcgKzQyNiw3IEBAIHN0YXRpYyB2b2lk
IG91dHB1dElubGluZVJ1bnMoVGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBMYXlvdXRTdGF0ZSYg
bGF5b3V0U3RhdGUsCiAgICAgfQogfQogCi1zdGF0aWMgdm9pZCBvdXRwdXRMYXlvdXRCb3goVGV4
dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgRGlzcGxheTo6Qm94
KiBkaXNwbGF5Qm94LCB1bnNpZ25lZCBkZXB0aCkKK3N0YXRpYyB2b2lkIG91dHB1dExheW91dEJv
eChUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBHZW9tZXRy
eSogZGlzcGxheUJveCwgdW5zaWduZWQgZGVwdGgpCiB7CiAgICAgdW5zaWduZWQgcHJpbnRlZENo
YXJhY3RlcnMgPSAwOwogICAgIHdoaWxlICgrK3ByaW50ZWRDaGFyYWN0ZXJzIDw9IGRlcHRoICog
MikKQEAgLTUwNyw3ICs1MDcsNyBAQCBzdGF0aWMgdm9pZCBvdXRwdXRMYXlvdXRUcmVlKGNvbnN0
IExheW91dFN0YXRlKiBsYXlvdXRTdGF0ZSwgVGV4dFN0cmVhbSYgc3RyZWFtLAogICAgICAgICBp
ZiAobGF5b3V0U3RhdGUpIHsKICAgICAgICAgICAgIC8vIE5vdCBhbGwgYm94ZXMgZ2VuZXJhdGUg
ZGlzcGxheSBib3hlcy4KICAgICAgICAgICAgIGlmIChsYXlvdXRTdGF0ZS0+aGFzRGlzcGxheUJv
eChjaGlsZCkpCi0gICAgICAgICAgICAgICAgb3V0cHV0TGF5b3V0Qm94KHN0cmVhbSwgY2hpbGQs
ICZsYXlvdXRTdGF0ZS0+ZGlzcGxheUJveEZvckxheW91dEJveChjaGlsZCksIGRlcHRoKTsKKyAg
ICAgICAgICAgICAgICBvdXRwdXRMYXlvdXRCb3goc3RyZWFtLCBjaGlsZCwgJmxheW91dFN0YXRl
LT5nZW9tZXRyeUZvckxheW91dEJveChjaGlsZCksIGRlcHRoKTsKICAgICAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgICAgICBvdXRwdXRMYXlvdXRCb3goc3RyZWFtLCBjaGlsZCwgbnVsbHB0ciwg
ZGVwdGgpOwogICAgICAgICAgICAgaWYgKGNoaWxkLmVzdGFibGlzaGVzSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQoKSkKQEAgLTUyNSw3ICs1MjUsNyBAQCB2b2lkIHNob3dMYXlvdXRUcmVlKGNvbnN0
IEJveCYgbGF5b3V0Qm94LCBjb25zdCBMYXlvdXRTdGF0ZSogbGF5b3V0U3RhdGUpCiAgICAgVGV4
dFN0cmVhbSBzdHJlYW0oVGV4dFN0cmVhbTo6TGluZU1vZGU6Ok11bHRpcGxlTGluZSwgVGV4dFN0
cmVhbTo6Rm9ybWF0dGluZzo6U1ZHU3R5bGVSZWN0KTsKIAogICAgIGF1dG8mIGluaXRpYWxDb250
YWluaW5nQmxvY2sgPSBsYXlvdXRCb3guaW5pdGlhbENvbnRhaW5pbmdCbG9jaygpOwotICAgIG91
dHB1dExheW91dEJveChzdHJlYW0sIGluaXRpYWxDb250YWluaW5nQmxvY2ssIGxheW91dFN0YXRl
ID8gJmxheW91dFN0YXRlLT5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGluaXRpYWxDb250YWluaW5n
QmxvY2spIDogbnVsbHB0ciwgMCk7CisgICAgb3V0cHV0TGF5b3V0Qm94KHN0cmVhbSwgaW5pdGlh
bENvbnRhaW5pbmdCbG9jaywgbGF5b3V0U3RhdGUgPyAmbGF5b3V0U3RhdGUtPmdlb21ldHJ5Rm9y
TGF5b3V0Qm94KGluaXRpYWxDb250YWluaW5nQmxvY2spIDogbnVsbHB0ciwgMCk7CiAgICAgb3V0
cHV0TGF5b3V0VHJlZShsYXlvdXRTdGF0ZSwgc3RyZWFtLCBpbml0aWFsQ29udGFpbmluZ0Jsb2Nr
LCAxKTsKICAgICBXVEZMb2dBbHdheXMoIiVzIiwgc3RyZWFtLnJlbGVhc2UoKS51dGY4KCkuZGF0
YSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRp
bmcvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvdGFi
bGVmb3JtYXR0aW5nL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IDZiMDIyZjRhY2My
ODI0OGZkYjA3MjdlMmQyYzhiMTFmZTUyNDAxM2YuLjViOWMwOWQyY2Y3ZmZiNTlmMWNmMjJiZjVj
ZTZlYTllMGM2YTY5ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZv
cm1hdHRpbmcvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUZvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtMjks
MTMgKzI5LDEzIEBACiAjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCiAKICNp
bmNsdWRlICJCbG9ja0Zvcm1hdHRpbmdTdGF0ZS5oIgotI2luY2x1ZGUgIkRpc3BsYXlCb3guaCIK
ICNpbmNsdWRlICJGbG9hdGluZ1N0YXRlLmgiCiAjaW5jbHVkZSAiSW5saW5lRm9ybWF0dGluZ1N0
YXRlLmgiCiAjaW5jbHVkZSAiSW52YWxpZGF0aW9uU3RhdGUuaCIKICNpbmNsdWRlICJMYXlvdXRC
b3guaCIKICNpbmNsdWRlICJMYXlvdXRDaGlsZEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiTGF5b3V0
Q29udGV4dC5oIgorI2luY2x1ZGUgIkxheW91dEdlb21ldHJ5LmgiCiAjaW5jbHVkZSAiTGF5b3V0
SW5pdGlhbENvbnRhaW5pbmdCbG9jay5oIgogI2luY2x1ZGUgIlRhYmxlRm9ybWF0dGluZ1N0YXRl
LmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVGb3JtYXR0aW5nQ29udGV4dEdl
b21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVG
b3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAppbmRleCA5NzhjNzA0ZGJlZjI4MGVmN2IwOGIz
ZDc1MTcxY2QzYjQ3MjI5N2Y3Li4xMjE0ZjE2MjNjYjY0YzMwOTRjOGI0ZDczNjIxMjk1YTYyNGRm
ZTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvdGFibGVmb3JtYXR0aW5nL1Rh
YmxlRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUZvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCkBA
IC0yOCwxMCArMjgsMTAgQEAKIAogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhU
KQogCi0jaW5jbHVkZSAiRGlzcGxheUJveC5oIgogI2luY2x1ZGUgIklubGluZUZvcm1hdHRpbmdT
dGF0ZS5oIgogI2luY2x1ZGUgIkxheW91dENvbnRleHQuaCIKICNpbmNsdWRlICJMYXlvdXREZXNj
ZW5kYW50SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJMYXlvdXRHZW9tZXRyeS5oIgogI2luY2x1ZGUg
IkxheW91dEluaXRpYWxDb250YWluaW5nQmxvY2suaCIKICNpbmNsdWRlICJUYWJsZUZvcm1hdHRp
bmdTdGF0ZS5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvdGFibGVmb3Jt
YXR0aW5nL1RhYmxlTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1h
dHRpbmcvVGFibGVMYXlvdXQuY3BwCmluZGV4IDdmMDI4ZGNlODA4YTlhYTI1NzVmMzk5M2UyNzA3
MTJjMjBjYTQ0ZmUuLjgxNGZiMTMwYzZhMDg1MGIyNzVmZDk2OTY1NTk3NTk2NTg2ZDRkNzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVMYXlv
dXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVM
YXlvdXQuY3BwCkBAIC0yOCw4ICsyOCw4IEBACiAKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJ
TkdfQ09OVEVYVCkKIAotI2luY2x1ZGUgIkRpc3BsYXlCb3guaCIKICNpbmNsdWRlICJMYXlvdXRC
b3guaCIKKyNpbmNsdWRlICJMYXlvdXRHZW9tZXRyeS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBuYW1lc3BhY2UgTGF5b3V0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3TGF5b3V0Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlld0xh
eW91dENvbnRleHQuY3BwCmluZGV4IDM0MTQ3ZmJhYWMxMTU0MWE0YTBlMzRlMzJmYmI0NzUxOTI1
YTUyM2EuLmRhYTJjNWIxNjNlMzczZjA4YWMxYmE1MGRjNTMzMjI2MjU3YWRkNWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3TGF5b3V0Q29udGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmNwcApAQCAtNDAsMTAg
KzQwLDEwIEBACiAjaW5jbHVkZSAiU2NyaXB0RGlzYWxsb3dlZFNjb3BlLmgiCiAjaW5jbHVkZSAi
U2V0dGluZ3MuaCIKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKLSNpbmNs
dWRlICJEaXNwbGF5Qm94LmgiCiAjaW5jbHVkZSAiSW52YWxpZGF0aW9uQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIkludmFsaWRhdGlvblN0YXRlLmgiCiAjaW5jbHVkZSAiTGF5b3V0Q29udGV4dC5oIgor
I2luY2x1ZGUgIkxheW91dEdlb21ldHJ5LmgiCiAjaW5jbHVkZSAiTGF5b3V0U3RhdGUuaCIKICNp
bmNsdWRlICJMYXlvdXRUcmVlQnVpbGRlci5oIgogI2luY2x1ZGUgIlJlbmRlckRlc2NlbmRhbnRJ
dGVyYXRvci5oIgpAQCAtODEsNyArODEsNyBAQCB2b2lkIEZyYW1lVmlld0xheW91dENvbnRleHQ6
OmxheW91dFVzaW5nRm9ybWF0dGluZ0NvbnRleHQoKQogCiAgICAgLy8gQ2xlYW4gdXAgdGhlIHJl
bmRlciB0cmVlIHN0YXRlIHdoZW4gd2UgZG9uJ3QgcnVuIFJlbmRlclZpZXc6OmxheW91dC4KICAg
ICBpZiAocmVuZGVyVmlldy5uZWVkc0xheW91dCgpKSB7Ci0gICAgICAgIGF1dG8gY29udGVudFNp
emUgPSBtX2xheW91dFN0YXRlLT5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCptX2xheW91dFN0YXRl
LT5yb290KCkuZmlyc3RDaGlsZCgpKS5zaXplKCk7CisgICAgICAgIGF1dG8gY29udGVudFNpemUg
PSBtX2xheW91dFN0YXRlLT5nZW9tZXRyeUZvckxheW91dEJveCgqbV9sYXlvdXRTdGF0ZS0+cm9v
dCgpLmZpcnN0Q2hpbGQoKSkuc2l6ZSgpOwogICAgICAgICByZW5kZXJWaWV3LnNldFNpemUoY29u
dGVudFNpemUpOwogICAgICAgICByZW5kZXJWaWV3LnJlcGFpbnRWaWV3UmVjdGFuZ2xlKHsgMCwg
MCwgY29udGVudFNpemUud2lkdGgoKSwgY29udGVudFNpemUuaGVpZ2h0KCkgfSk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408752</attachid>
            <date>2020-09-14 15:22:29 -0700</date>
            <delta_ts>2020-09-14 16:00:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216497-20200914152228.patch</filename>
            <type>text/plain</type>
            <size>78651</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3MDQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTg3NTFiYjM1NDkxN2Ix
NzBiOTA2YWI0ZjM0OTdjNjI0MzNiYmQ2Ni4uNTJkNGJjNzUxOTg2MTZmYmE2OTdhMzllYTA3NGEx
OGJjNzNiMDQwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwMSBAQAorMjAyMC0wOS0xNCAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBbTEZDXSBUaGUg
cmVzdWx0IG9mIGxheW91dCBzaG91bGQgYmUgTGF5b3V0OjpHZW9tZXRyeSwgbm90IERpc3BsYXk6
OkJveAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2
NDk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2Ug
c2hvdWxkIHJlc2VydmUgdGhpbmdzIGluIHRoZSBEaXNwbGF5IG5hbWVzcGFjZSBmb3IgcGFpbnRp
bmcsIHNvIGxheW91dCBzaG91bGQgZW1pdAorICAgICAgICBMYXlvdXQ6Okdlb21ldHJ5IHJhdGhl
ciB0aGFuIERpc3BsYXk6OkJveGVzLiBTbyBjbG9uZSBEaXNwbGF5OjpCb3ggdG8gTGF5b3V0OjpH
ZW9tZXRyeQorICAgICAgICBhbmQgdXNlIExheW91dDo6R2VvbWV0cnkgZXZlcnl3aGVyZSB0aGF0
IERpc3BsYXk6OkJveCB3YXMgdXNlZC4KKworICAgICAgICBGdXR1cmUgcGF0Y2hlcyB3aWxsIG1v
dmUgcGFpbnRpbmcgb3QgdXNlIERpc3BsYXkgb2JqZWN0cy4KKworICAgICAgICAqIFNvdXJjZXMu
dHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBsYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6Z2VvbWV0cnlGb3JCb3ggY29uc3QpOgorICAgICAgICAq
IGxheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5oOgorICAgICAgICAqIGxheW91dC9Gb3JtYXR0aW5n
Q29udGV4dEdlb21ldHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGlu
Z0NvbnRleHQ6Okdlb21ldHJ5OjpzdGF0aWNWZXJ0aWNhbFBvc2l0aW9uRm9yT3V0T2ZGbG93UG9z
aXRpb25lZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250
ZXh0OjpHZW9tZXRyeTo6c3RhdGljSG9yaXpvbnRhbFBvc2l0aW9uRm9yT3V0T2ZGbG93UG9zaXRp
b25lZCBjb25zdCk6CisgICAgICAgICogbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNw
cDoKKyAgICAgICAgKiBsYXlvdXQvRm9ybWF0dGluZ1N0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6Rm9ybWF0dGluZ1N0YXRlOjpkaXNwbGF5Qm94KToKKyAgICAgICAgKiBsYXlv
dXQvRm9ybWF0dGluZ1N0YXRlLmg6CisgICAgICAgICogbGF5b3V0L0xheW91dENvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRDb250ZXh0OjpsYXlvdXQpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRDb250ZXh0OjpsYXlvdXRGb3JtYXR0aW5nQ29u
dGV4dFN1YnRyZWUpOgorICAgICAgICAqIGxheW91dC9MYXlvdXRTdGF0ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkxheW91dFN0YXRlOjpnZW9tZXRyeUZvclJvb3RMYXlvdXRCb3gp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRTdGF0ZTo6ZW5zdXJlRGlzcGxheUJv
eEZvckxheW91dEJveFNsb3cpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRTdGF0
ZTo6ZGlzcGxheUJveEZvclJvb3RMYXlvdXRCb3gpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91
dC9MYXlvdXRTdGF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRTdGF0ZTo6
ZW5zdXJlR2VvbWV0cnlGb3JMYXlvdXRCb3gpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpM
YXlvdXRTdGF0ZTo6Z2VvbWV0cnlGb3JMYXlvdXRCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpCb3g6OmNhY2hlZERpc3BsYXlCb3hGb3JMYXlvdXRTdGF0ZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxheW91dFN0YXRlOjplbnN1cmVEaXNwbGF5Qm94Rm9y
TGF5b3V0Qm94KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGF5b3V0U3Rh
dGU6OmRpc3BsYXlCb3hGb3JMYXlvdXRCb3ggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGxh
eW91dC9WZXJpZmljYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpvdXRwdXRN
aXNtYXRjaGluZ0Jsb2NrQm94SW5mb3JtYXRpb25JZk5lZWRlZCk6CisgICAgICAgICogbGF5b3V0
L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwOgorICAg
ICAgICAqIGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dFF1aXJr
cy5jcHA6CisgICAgICAgICogbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy90YWJsZXdyYXBwZXIvVGFi
bGVXcmFwcGVyQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAgICAgICogbGF5b3V0L2Rp
c3BsYXkvRGlzcGxheUxheWVyQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5OjpMYXllckNvbnRyb2xsZXI6OnByZXBhcmVGb3JEaXNwbGF5KToKKyAgICAgICAgKiBsYXlv
dXQvZGlzcGxheXRyZWUvRGlzcGxheVBhaW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheTo6cGFpbnRCb3hEZWNvcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OlBh
aW50ZXI6OmFic29sdXRlRGlzcGxheUJveCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5Ojpj
b2xsZWN0UGFpbnRSb290c0FuZENvbnRlbnRSZWN0KToKKyAgICAgICAgKiBsYXlvdXQvZGlzcGxh
eXRyZWUvRGlzcGxheVBhaW50ZXIuaDoKKyAgICAgICAgKiBsYXlvdXQvZmxvYXRzL0Zsb2F0QXZv
aWRlci5oOgorICAgICAgICAqIGxheW91dC9mbG9hdHMvRmxvYXRpbmdDb250ZXh0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6RmxvYXRpbmdDb250ZXh0OjphcHBlbmQpOgorICAgICAg
ICAqIGxheW91dC9mbG9hdHMvRmxvYXRpbmdTdGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OkZsb2F0aW5nU3RhdGU6OkZsb2F0SXRlbTo6RmxvYXRJdGVtKToKKyAgICAgICAgKiBs
YXlvdXQvZmxvYXRzL0Zsb2F0aW5nU3RhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
RmxvYXRpbmdTdGF0ZTo6RmxvYXRJdGVtOjpyZWN0V2l0aE1hcmdpbiBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkZsb2F0aW5nU3RhdGU6OkZsb2F0SXRlbTo6aG9yaXpvbnRhbE1h
cmdpbiBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGlu
ZUJveC5oOgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCdWls
ZGVyLmNwcDoKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25M
aW5lTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5l
TGF5b3V0OjpwcmVwYXJlRmxvYXRpbmdTdGF0ZSk6CisgICAgICAgICogbGF5b3V0L2xheW91dHRy
ZWUvTGF5b3V0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Qm94OjpzZXRDYWNo
ZWREaXNwbGF5Qm94Rm9yTGF5b3V0U3RhdGUgY29uc3QpOgorICAgICAgICAqIGxheW91dC9sYXlv
dXR0cmVlL0xheW91dEJveC5oOgorICAgICAgICAqIGxheW91dC9sYXlvdXR0cmVlL0xheW91dEdl
b21ldHJ5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Okdlb21ldHJ5OjpH
ZW9tZXRyeSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Okdlb21ldHJ5Ojp+R2VvbWV0cnkp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpHZW9tZXRyeTo6bWFyZ2luQm94IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6R2VvbWV0cnk6OmJvcmRlckJveCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Okdlb21ldHJ5OjpwYWRkaW5nQm94IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6R2VvbWV0cnk6OmNvbnRlbnRCb3ggY29uc3QpOgorICAg
ICAgICAqIGxheW91dC9sYXlvdXR0cmVlL0xheW91dEdlb21ldHJ5Lmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpSZWN0OjpleHBhbmRIb3Jpem9udGFsbHkpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpSZWN0OjpleHBhbmRWZXJ0aWNhbGx5KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6UmVjdDo6aW50ZXJzZWN0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OlJlY3Q6OmludmFsaWRhdGVUb3ApOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpS
ZWN0OjppbnZhbGlkYXRlTGVmdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJlY3Q6Omlu
dmFsaWRhdGVXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJlY3Q6OmludmFsaWRh
dGVIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpSZWN0OjpoYXNWYWxpZFBvc2l0
aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6UmVjdDo6aGFzVmFsaWRTaXpl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6UmVjdDo6aGFzVmFsaWRHZW9tZXRy
eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJlY3Q6OlJlY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpSZWN0OjppbnZhbGlkYXRlUG9zaXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpSZWN0OjpzZXRIYXNWYWxpZFBvc2l0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6UmVjdDo6c2V0SGFzVmFsaWRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6UmVjdDo6dG9wIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6UmVj
dDo6bGVmdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJlY3Q6OmJvdHRvbSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJlY3Q6OnJpZ2h0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6UmVjdDo6dG9wTGVmdCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OlJlY3Q6OmJvdHRvbVJpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6UmVjdDo6c2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OlJlY3Q6OndpZHRoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6UmVjdDo6aGVp
Z2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6UmVjdDo6c2V0VG9wTGVmdCk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJlY3Q6OnNldFRvcCk6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OlJlY3Q6OnNldExlZnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpS
ZWN0OjpzZXRXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJlY3Q6OnNldEhlaWdo
dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJlY3Q6OnNldFNpemUpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpSZWN0OjpzaGlmdExlZnRUbyk6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OlJlY3Q6OnNoaWZ0UmlnaHRUbyk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJl
Y3Q6OnNoaWZ0VG9wVG8pOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpSZWN0OjpzaGlmdEJv
dHRvbVRvKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6UmVjdDo6bW92ZUhvcml6b250YWxs
eSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJlY3Q6Om1vdmVWZXJ0aWNhbGx5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6UmVjdDo6ZXhwYW5kKToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6UmVjdDo6Y2xvbmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpS
ZWN0OjpvcGVyYXRvciBMYXlvdXRSZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6R2VvbWV0cnk6OmJvdHRvbSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Okdl
b21ldHJ5OjpyaWdodCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Okdlb21ldHJ5
Ojpib3R0b21SaWdodCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Okdlb21ldHJ5
OjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6R2VvbWV0cnk6OndpZHRo
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6R2VvbWV0cnk6OmhlaWdodCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Okdlb21ldHJ5Ojppc0VtcHR5IGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6R2VvbWV0cnk6OnJlY3QgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpHZW9tZXRyeTo6cmVjdFdpdGhNYXJnaW4gY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpHZW9tZXRyeTo6aGFzQ2xlYXJhbmNlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6R2VvbWV0cnk6OnZlcnRpY2FsQm9yZGVyIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6R2VvbWV0cnk6Omhvcml6b250YWxCb3JkZXIgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpHZW9tZXRyeTo6Y29udGVudEJveFRvcCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Okdlb21ldHJ5Ojpjb250ZW50Qm94TGVm
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Okdlb21ldHJ5Ojpjb250ZW50Qm94
Qm90dG9tIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6R2VvbWV0cnk6OmNvbnRl
bnRCb3hSaWdodCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Okdlb21ldHJ5Ojpw
YWRkaW5nQm94VG9wIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6R2VvbWV0cnk6
OnBhZGRpbmdCb3hMZWZ0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6R2VvbWV0
cnk6OnBhZGRpbmdCb3hCb3R0b20gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpH
ZW9tZXRyeTo6cGFkZGluZ0JveFJpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6R2VvbWV0cnk6OnBhZGRpbmdCb3hIZWlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpHZW9tZXRyeTo6cGFkZGluZ0JveFdpZHRoIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6R2VvbWV0cnk6OmJvcmRlckJveEhlaWdodCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6Okdlb21ldHJ5Ojpib3JkZXJCb3hXaWR0aCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6Okdlb21ldHJ5OjptYXJnaW5Cb3hIZWlnaHQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpHZW9tZXRyeTo6bWFyZ2luQm94V2lkdGggY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpHZW9tZXRyeTo6dmVydGljYWxNYXJnaW5Cb3JkZXJB
bmRQYWRkaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6R2VvbWV0cnk6Omhv
cml6b250YWxNYXJnaW5Cb3JkZXJBbmRQYWRkaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6R2VvbWV0cnk6OnNldEhhc1ByZWNvbXB1dGVkTWFyZ2luQmVmb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6R2VvbWV0cnk6Om1vdmVIb3Jpem9udGFsbHkpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpHZW9tZXRyeTo6bW92ZVZlcnRpY2FsbHkpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpHZW9tZXRyeTo6bW92ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6Okdlb21ldHJ5Ojptb3ZlQnkpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpHZW9tZXRy
eTo6c2V0SGFzQ2xlYXJhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6R2VvbWV0cnk6
OmludmFsaWRhdGVCb3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpHZW9tZXRyeTo6
aW52YWxpZGF0ZVBhZGRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpHZW9tZXRyeTo6
aW52YWxpZGF0ZVByZWNvbXB1dGVkTWFyZ2luQmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6R2VvbWV0cnk6OnNldEhhc1ZhbGlkVG9wKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6R2VvbWV0cnk6OnNldEhhc1ZhbGlkTGVmdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
Okdlb21ldHJ5OjpzZXRIYXNWYWxpZFZlcnRpY2FsTWFyZ2luKToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6R2VvbWV0cnk6OnNldEhhc1ZhbGlkSG9yaXpvbnRhbE1hcmdpbik6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6Okdlb21ldHJ5OjpzZXRIYXNWYWxpZEJvcmRlcik6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6Okdlb21ldHJ5OjpzZXRIYXNWYWxpZFBhZGRpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpHZW9tZXRyeTo6c2V0SGFzVmFsaWRDb250ZW50SGVpZ2h0KToK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6R2VvbWV0cnk6OnNldEhhc1ZhbGlkQ29udGVudFdp
ZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6R2VvbWV0cnk6OmludmFsaWRhdGVNYXJn
aW4pOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpHZW9tZXRyeTo6dG9wIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6R2VvbWV0cnk6OmxlZnQgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpHZW9tZXRyeTo6dG9wTGVmdCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6Okdlb21ldHJ5OjpzZXRUb3BMZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6R2VvbWV0cnk6OnNldFRvcCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Okdlb21l
dHJ5OjpzZXRMZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6R2VvbWV0cnk6OnNldENv
bnRlbnRCb3hIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpHZW9tZXRyeTo6c2V0
Q29udGVudEJveFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6R2VvbWV0cnk6OmNv
bnRlbnRCb3hIZWlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpHZW9tZXRy
eTo6Y29udGVudEJveFdpZHRoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6R2Vv
bWV0cnk6OnNldEhvcml6b250YWxNYXJnaW4pOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpH
ZW9tZXRyeTo6c2V0VmVydGljYWxNYXJnaW4pOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpH
ZW9tZXRyeTo6c2V0Qm9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6R2VvbWV0cnk6
OnNldFBhZGRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpHZW9tZXRyeTo6c2V0VmVy
dGljYWxQYWRkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6R2VvbWV0cnk6OnZlcnRp
Y2FsTWFyZ2luIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6R2VvbWV0cnk6Omhv
cml6b250YWxNYXJnaW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpHZW9tZXRy
eTo6bWFyZ2luQmVmb3JlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6R2VvbWV0
cnk6Om1hcmdpblN0YXJ0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6R2VvbWV0
cnk6Om1hcmdpbkFmdGVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6R2VvbWV0
cnk6Om1hcmdpbkVuZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Okdlb21ldHJ5
OjpwYWRkaW5nVG9wIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6R2VvbWV0cnk6
OnBhZGRpbmdMZWZ0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6R2VvbWV0cnk6
OnBhZGRpbmdCb3R0b20gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpHZW9tZXRy
eTo6cGFkZGluZ1JpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6R2VvbWV0
cnk6OnZlcnRpY2FsUGFkZGluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Okdl
b21ldHJ5Ojpob3Jpem9udGFsUGFkZGluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6Okdlb21ldHJ5Ojpib3JkZXJUb3AgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpHZW9tZXRyeTo6Ym9yZGVyTGVmdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
Okdlb21ldHJ5Ojpib3JkZXJCb3R0b20gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpHZW9tZXRyeTo6Ym9yZGVyUmlnaHQgY29uc3QpOgorICAgICAgICAqIGxheW91dC9sYXlvdXR0
cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6b3V0
cHV0TGF5b3V0Qm94KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6b3V0cHV0TGF5b3V0VHJl
ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OnNob3dMYXlvdXRUcmVlKToKKyAgICAgICAg
KiBsYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuY3BwOgorICAg
ICAgICAqIGxheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVGb3JtYXR0aW5nQ29udGV4dEdlb21l
dHJ5LmNwcDoKKyAgICAgICAgKiBsYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlTGF5b3V0LmNw
cDoKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlld0xheW91dENvbnRleHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVWaWV3TGF5b3V0Q29udGV4dDo6bGF5b3V0VXNpbmdGb3JtYXR0aW5nQ29u
dGV4dCk6CisKIDIwMjAtMDktMTQgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbTEZDXVtGRkNdIEVhY2ggaW4tZmxvdyBjaGlsZCBvZiBhIGZsZXggY29udGFpbmVy
IGJlY29tZXMgYSBmbGV4IGl0ZW0uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDNjOGI0OTMzNmVjMWQ5Nzhi
YjUzYjhkODJjZjgwNTZjOTA0NzUxMTcuLmY3MjhlNmI2NGExNzQ5NzIzZmUxNzE5YzVhMjY1NTZj
ZWUxZjk4ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xNDU5LDYgKzE0NTksNyBAQCBsYXlvdXQvaW52
YWxpZGF0aW9uL0ludmFsaWRhdGlvbkNvbnRleHQuY3BwCiBsYXlvdXQvaW52YWxpZGF0aW9uL0lu
dmFsaWRhdGlvblN0YXRlLmNwcAogbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmNwcAogbGF5
b3V0L2xheW91dHRyZWUvTGF5b3V0Q29udGFpbmVyQm94LmNwcAorbGF5b3V0L2xheW91dHRyZWUv
TGF5b3V0R2VvbWV0cnkuY3BwCiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRJbml0aWFsQ29udGFp
bmluZ0Jsb2NrLmNwcAogbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0SW5saW5lVGV4dEJveC5jcHAK
IGxheW91dC9sYXlvdXR0cmVlL0xheW91dExpbmVCcmVha0JveC5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1NTVjMzUxZmIz
ZTMyM2M4YzQzMjE1M2ExOThjNzdiMWJjNzU2NTY2Li45MjNhM2EyMzc5ZGJiYjRhYjFmODJhOGY0
ZmMyOWU5YTZkYjFkYTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC02MDYxLDYgKzYwNjEsOCBAQAogCQkwRkVDMTIwQjIyQkYy
Q0M3MDA0RTlEMzUgLyogTGF5ZXJBbmNlc3RvckNsaXBwaW5nU3RhY2suY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gTGF5ZXJBbmNlc3RvckNsaXBwaW5nU3RhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRkVGMjBDRDFCRDRBMjQxMDAxMjhFNUQgLyogTGVuZ3RoU2l6ZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMZW5ndGhTaXplLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZFRjIwQ0YxQkQ0QTY0RjAwMTI4RTVEIC8qIFJl
bmRlclN0eWxlQ29uc3RhbnRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFJlbmRlclN0eWxlQ29uc3RhbnRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEZGMjlBNTMyNTEwMUE2MTAwM0MzNEUyIC8qIExheW91dEdlb21ldHJ5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IExheW91dEdlb21ldHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
RjI5QTU1MjUxMDFBNjEwMDNDMzRFMiAvKiBMYXlvdXRHZW9tZXRyeS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBMYXlvdXRHZW9tZXRyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGRjJFODBDMUVFMEQ0MzAwMDlFQUJENCAvKiBQZXJmb3JtYW5jZUxvZ2dpbmdDbGllbnQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGVyZm9ybWFuY2VMb2dnaW5n
Q2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZGM0I5MjQxRUUzQjZE
RTAwQjg0MTQ0IC8qIEpTRE9NUXVhZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU0RPTVF1YWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkYz
QjkyNTFFRTNCNkRFMDBCODQxNDQgLyogSlNET01RdWFkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTRE9NUXVhZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTc0ODEsNiArMTc0ODMsOCBAQAogCQkJCTExOTlGQTQ1MjA4RTM1QTMwMDIzNThDQyAvKiBMYXlv
dXRDb250YWluZXJCb3guY3BwICovLAogCQkJCTExOTlGQTQ0MjA4RTM1QTMwMDIzNThDQyAvKiBM
YXlvdXRDb250YWluZXJCb3guaCAqLywKIAkJCQkxMUIwNDJGQjIwQjBFMjE0MDA4MjhBNkIgLyog
TGF5b3V0RGVzY2VuZGFudEl0ZXJhdG9yLmggKi8sCisJCQkJMEZGMjlBNTUyNTEwMUE2MTAwM0Mz
NEUyIC8qIExheW91dEdlb21ldHJ5LmNwcCAqLywKKwkJCQkwRkYyOUE1MzI1MTAxQTYxMDAzQzM0
RTIgLyogTGF5b3V0R2VvbWV0cnkuaCAqLywKIAkJCQk2RkIwRUQxMTI0MjdCNkM2MDAyNzM3RTYg
LyogTGF5b3V0SW5pdGlhbENvbnRhaW5pbmdCbG9jay5jcHAgKi8sCiAJCQkJNkY2MzgzRjQyNDI3
QUY0OTAwREFCQTUzIC8qIExheW91dEluaXRpYWxDb250YWluaW5nQmxvY2suaCAqLywKIAkJCQk2
RjBCOThCNjIzRjI2OTA2MDBFRUMyRjIgLyogTGF5b3V0SW5saW5lVGV4dEJveC5jcHAgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmNwcAppbmRleCBiNzQ3NDc5
NTE3NjhkZTdkZTA3ZmY5MTNiYTMxNjRhMjBmZmRhMGNkLi42NWU4NjNhNGIyODFlMTMzNWVjNjdl
MmE5MjY1YzUzNmE5MTk2YThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9y
bWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5n
Q29udGV4dC5jcHAKQEAgLTI4LDEzICsyOCwxMyBAQAogCiAjaWYgRU5BQkxFKExBWU9VVF9GT1JN
QVRUSU5HX0NPTlRFWFQpCiAKLSNpbmNsdWRlICJEaXNwbGF5Qm94LmgiCiAjaW5jbHVkZSAiRm9y
bWF0dGluZ1N0YXRlLmgiCiAjaW5jbHVkZSAiSW52YWxpZGF0aW9uU3RhdGUuaCIKICNpbmNsdWRl
ICJMYXlvdXRCb3guaCIKICNpbmNsdWRlICJMYXlvdXRDb250YWluZXJCb3guaCIKICNpbmNsdWRl
ICJMYXlvdXRDb250ZXh0LmgiCiAjaW5jbHVkZSAiTGF5b3V0RGVzY2VuZGFudEl0ZXJhdG9yLmgi
CisjaW5jbHVkZSAiTGF5b3V0R2VvbWV0cnkuaCIKICNpbmNsdWRlICJMYXlvdXRJbml0aWFsQ29u
dGFpbmluZ0Jsb2NrLmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVwbGFjZWRCb3guaCIKICNpbmNsdWRl
ICJMYXlvdXRTdGF0ZS5oIgpAQCAtMTY4LDcgKzE2OCw3IEBAIHZvaWQgRm9ybWF0dGluZ0NvbnRl
eHQ6OmxheW91dE91dE9mRmxvd0NvbnRlbnQoSW52YWxpZGF0aW9uU3RhdGUmIGludmFsaWRhdGlv
blN0CiAgICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0g
PDwgIkVuZDogbGF5b3V0IG91dC1vZi1mbG93IGNvbnRlbnQgLT4gY29udGV4dDogIiA8PCAmbGF5
b3V0U3RhdGUoKSA8PCAiIHJvb3Q6ICIgPDwgJnJvb3QoKSk7CiB9CiAKLWNvbnN0IERpc3BsYXk6
OkJveCYgRm9ybWF0dGluZ0NvbnRleHQ6Omdlb21ldHJ5Rm9yQm94KGNvbnN0IEJveCYgbGF5b3V0
Qm94LCBPcHRpb25hbDxFc2NhcGVSZWFzb24+IGVzY2FwZVJlYXNvbikgY29uc3QKK2NvbnN0IExh
eW91dDo6R2VvbWV0cnkmIEZvcm1hdHRpbmdDb250ZXh0OjpnZW9tZXRyeUZvckJveChjb25zdCBC
b3gmIGxheW91dEJveCwgT3B0aW9uYWw8RXNjYXBlUmVhc29uPiBlc2NhcGVSZWFzb24pIGNvbnN0
CiB7CiAgICAgVU5VU0VEX1BBUkFNKGVzY2FwZVJlYXNvbik7CiAjaWYgQVNTRVJUX0VOQUJMRUQK
QEAgLTI1MSw3ICsyNTEsNyBAQCBjb25zdCBEaXNwbGF5OjpCb3gmIEZvcm1hdHRpbmdDb250ZXh0
OjpnZW9tZXRyeUZvckJveChjb25zdCBCb3gmIGxheW91dEJveCwgT3B0aQogI2VuZGlmCiAgICAg
QVNTRVJUKGlzT2tUb0FjY2Vzc0Rpc3BsYXlCb3goKSk7CiAgICAgQVNTRVJUKGxheW91dFN0YXRl
KCkuaGFzRGlzcGxheUJveChsYXlvdXRCb3gpKTsKLSAgICByZXR1cm4gbGF5b3V0U3RhdGUoKS5k
aXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGxheW91dEJveCk7CisgICAgcmV0dXJuIGxheW91dFN0YXRl
KCkuZ2VvbWV0cnlGb3JMYXlvdXRCb3gobGF5b3V0Qm94KTsKIH0KIAogdm9pZCBGb3JtYXR0aW5n
Q29udGV4dDo6Y29sbGVjdE91dE9mRmxvd0Rlc2NlbmRhbnRzSWZOZWVkZWQoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuaAppbmRleCA4ODM0NGE0M2U1NWE3YWI1ZDNh
MmY2MTI3NWM4MmVlNmIzMjQyZDNhLi4wYjVkN2QwYWU2YmRhMWRhNzUxNWZhNDE1Y2U2ODdjNWFh
MTFlMzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRl
eHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuaApAQCAt
MzUsOSArMzUsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLW5hbWVzcGFjZSBEaXNwbGF5
IHsKLWNsYXNzIEJveDsKLX0KIGNsYXNzIExheW91dFNpemU7CiBzdHJ1Y3QgTGVuZ3RoOwogCkBA
IC01Miw2ICs0OSw3IEBAIHN0cnVjdCBDb250ZW50SGVpZ2h0QW5kTWFyZ2luOwogc3RydWN0IENv
bnRlbnRXaWR0aEFuZE1hcmdpbjsKIHN0cnVjdCBFZGdlczsKIGNsYXNzIEZvcm1hdHRpbmdTdGF0
ZTsKK2NsYXNzIEdlb21ldHJ5Owogc3RydWN0IEhvcml6b250YWxHZW9tZXRyeTsKIGNsYXNzIElu
dmFsaWRhdGlvblN0YXRlOwogY2xhc3MgTGF5b3V0U3RhdGU7CkBAIC0xMDcsNyArMTA1LDcgQEAg
cHVibGljOgogICAgICAgICBTdHJva2VPdmVyZmxvd05lZWRzVmlld3BvcnRHZW9tZXRyeSwKICAg
ICAgICAgVGFibGVOZWVkc0FjY2Vzc1RvVGFibGVXcmFwcGVyCiAgICAgfTsKLSAgICBjb25zdCBE
aXNwbGF5OjpCb3gmIGdlb21ldHJ5Rm9yQm94KGNvbnN0IEJveCYsIE9wdGlvbmFsPEVzY2FwZVJl
YXNvbj4gPSBXVEY6Om51bGxvcHQpIGNvbnN0OworICAgIGNvbnN0IExheW91dDo6R2VvbWV0cnkm
IGdlb21ldHJ5Rm9yQm94KGNvbnN0IEJveCYsIE9wdGlvbmFsPEVzY2FwZVJlYXNvbj4gPSBXVEY6
Om51bGxvcHQpIGNvbnN0OwogICAgIGNvbnN0IENvbnRhaW5lckJveCYgcm9vdCgpIGNvbnN0IHsg
cmV0dXJuICptX3Jvb3Q7IH0KIAogICAgIExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSgpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2Vv
bWV0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0
cnkuY3BwCmluZGV4IDA1Y2U5NmU4MTY3OGMxZTgxNjBhZjI0NmIzNzczNTVmMjUxNTk1NWEuLjgw
MWExYmMxYWE1ZGM2NzM2OWIzMjI3MDVkMDhlNjgyY2E5OWU5MDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKQEAgLTI5Nyw3
ICsyOTcsNyBAQCBMYXlvdXRVbml0IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6c3RhdGlj
VmVydGljYWxQb3NpdGlvbkZvck91dE9mRmxvd1Bvc2l0aQogICAgIC8vIFN0YXJ0IHdpdGggdGhl
IHBhcmVudCBzaW5jZSB3ZSBwcmV0ZW5kIHRoYXQgdGhpcyBib3ggaXMgbm9ybWFsIGZsb3cuCiAg
ICAgZm9yIChhdXRvKiBhbmNlc3RvciA9ICZsYXlvdXRCb3gucGFyZW50KCk7IGFuY2VzdG9yICE9
ICZjb250YWluaW5nQmxvY2s7IGFuY2VzdG9yID0gJmFuY2VzdG9yLT5jb250YWluaW5nQmxvY2so
KSkgewogICAgICAgICBhdXRvJiBib3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250ZXh0Lmdlb21l
dHJ5Rm9yQm94KCphbmNlc3RvciwgRXNjYXBlUmVhc29uOjpPdXRPZkZsb3dCb3hOZWVkc0luRmxv
d0dlb21ldHJ5KTsKLSAgICAgICAgLy8gRGlzcGxheTo6Qm94Ojp0b3AgaXMgdGhlIGJvcmRlciBi
b3ggdG9wIHBvc2l0aW9uIGluIGl0cyBjb250YWluaW5nIGJsb2NrJ3MgY29vcmRpbmF0ZSBzeXN0
ZW0uCisgICAgICAgIC8vIExheW91dDo6R2VvbWV0cnk6OnRvcCBpcyB0aGUgYm9yZGVyIGJveCB0
b3AgcG9zaXRpb24gaW4gaXRzIGNvbnRhaW5pbmcgYmxvY2sncyBjb29yZGluYXRlIHN5c3RlbS4K
ICAgICAgICAgdG9wICs9IGJveEdlb21ldHJ5LnRvcCgpOwogICAgICAgICBBU1NFUlQoIWFuY2Vz
dG9yLT5pc1Bvc2l0aW9uZWQoKSB8fCBsYXlvdXRCb3guaXNGaXhlZFBvc2l0aW9uZWQoKSk7CiAg
ICAgfQpAQCAtMzE5LDcgKzMxOSw3IEBAIExheW91dFVuaXQgRm9ybWF0dGluZ0NvbnRleHQ6Okdl
b21ldHJ5OjpzdGF0aWNIb3Jpem9udGFsUG9zaXRpb25Gb3JPdXRPZkZsb3dQb3NpCiAgICAgLy8g
U3RhcnQgd2l0aCB0aGUgcGFyZW50IHNpbmNlIHdlIHByZXRlbmQgdGhhdCB0aGlzIGJveCBpcyBu
b3JtYWwgZmxvdy4KICAgICBmb3IgKGF1dG8qIGFuY2VzdG9yID0gJmxheW91dEJveC5wYXJlbnQo
KTsgYW5jZXN0b3IgIT0gJmNvbnRhaW5pbmdCbG9jazsgYW5jZXN0b3IgPSAmYW5jZXN0b3ItPmNv
bnRhaW5pbmdCbG9jaygpKSB7CiAgICAgICAgIGF1dG8mIGJveEdlb21ldHJ5ID0gZm9ybWF0dGlu
Z0NvbnRleHQuZ2VvbWV0cnlGb3JCb3goKmFuY2VzdG9yLCBFc2NhcGVSZWFzb246Ok91dE9mRmxv
d0JveE5lZWRzSW5GbG93R2VvbWV0cnkpOwotICAgICAgICAvLyBEaXNwbGF5OjpCb3g6OmxlZnQg
aXMgdGhlIGJvcmRlciBib3ggbGVmdCBwb3NpdGlvbiBpbiBpdHMgY29udGFpbmluZyBibG9jaydz
IGNvb3JkaW5hdGUgc3lzdGVtLgorICAgICAgICAvLyBMYXlvdXQ6Okdlb21ldHJ5OjpsZWZ0IGlz
IHRoZSBib3JkZXIgYm94IGxlZnQgcG9zaXRpb24gaW4gaXRzIGNvbnRhaW5pbmcgYmxvY2sncyBj
b29yZGluYXRlIHN5c3RlbS4KICAgICAgICAgbGVmdCArPSBib3hHZW9tZXRyeS5sZWZ0KCk7CiAg
ICAgICAgIEFTU0VSVCghYW5jZXN0b3ItPmlzUG9zaXRpb25lZCgpIHx8IGxheW91dEJveC5pc0Zp
eGVkUG9zaXRpb25lZCgpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvRm9ybWF0dGluZ0NvbnRleHRRdWlya3MuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zv
cm1hdHRpbmdDb250ZXh0UXVpcmtzLmNwcAppbmRleCAxNDYzNzVhOGM5YWU0NDJjMzU5MmRlYzMz
ZTIwNDg1YmZiMThlYjc3Li44ODVlZGZiYWFjYjViMDg2N2QwNWRhYzlkYjNmMTdjNzM3ODg4NjJh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRRdWly
a3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dFF1aXJr
cy5jcHAKQEAgLTI4LDggKzI4LDggQEAKIAogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19D
T05URVhUKQogCi0jaW5jbHVkZSAiRGlzcGxheUJveC5oIgogI2luY2x1ZGUgIkxheW91dEJveC5o
IgorI2luY2x1ZGUgIkxheW91dEdlb21ldHJ5LmgiCiAjaW5jbHVkZSAiTGF5b3V0SW5pdGlhbENv
bnRhaW5pbmdCbG9jay5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ1N0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9Gb3JtYXR0aW5nU3RhdGUuY3BwCmluZGV4IDYzYzY3MWU2MmUxNTJkZDQ1YjRiNzYyMmU1
Njg4Y2QzNjFkODQ0OTIuLjhhMjE5Y2NmMTExNjJhNmNhNGJhNzQzOGI4NmZhZWU5NWZhMGUxZjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nU3RhdGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nU3RhdGUuY3BwCkBAIC0yOCw4ICsy
OCw4IEBACiAKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKIAotI2luY2x1
ZGUgIkRpc3BsYXlCb3guaCIKICNpbmNsdWRlICJGbG9hdGluZ1N0YXRlLmgiCisjaW5jbHVkZSAi
TGF5b3V0R2VvbWV0cnkuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00OCwxMyArNDgsMTMgQEAgRm9ybWF0dGluZ1N0YXRlOjp+
Rm9ybWF0dGluZ1N0YXRlKCkKIHsKIH0KIAotRGlzcGxheTo6Qm94JiBGb3JtYXR0aW5nU3RhdGU6
OmRpc3BsYXlCb3goY29uc3QgQm94JiBsYXlvdXRCb3gpCitMYXlvdXQ6Okdlb21ldHJ5JiBGb3Jt
YXR0aW5nU3RhdGU6OmRpc3BsYXlCb3goY29uc3QgQm94JiBsYXlvdXRCb3gpCiB7CiAgICAgLy8g
U2hvdWxkIG5ldmVyIG5lZWQgdG8gbXV0YXRlIGEgZGlzcGxheSBib3ggb3V0c2lkZSBvZiB0aGUg
Zm9ybWF0dGluZyBjb250ZXh0LgogICAgIEFTU0VSVCgmbGF5b3V0U3RhdGUoKS5lc3RhYmxpc2hl
ZEZvcm1hdHRpbmdTdGF0ZShsYXlvdXRCb3guZm9ybWF0dGluZ0NvbnRleHRSb290KCkpID09IHRo
aXMpOwogICAgIC8vIEFub255bW91cyB0ZXh0IHdyYXBwZXJzL2xpbmUgYnJlYWsgYm94ZXMgc2hv
dWxkIG5vdCBuZWVkIGRpc3BsYXkgYm94ZXMuCiAgICAgQVNTRVJUKCFsYXlvdXRCb3guaXNJbmxp
bmVUZXh0Qm94KCkgJiYgKCFsYXlvdXRCb3guaXNMaW5lQnJlYWtCb3goKSB8fCBsYXlvdXRCb3gu
aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpKTsKLSAgICByZXR1cm4gbGF5b3V0U3RhdGUoKS5lbnN1
cmVEaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGxheW91dEJveCk7CisgICAgcmV0dXJuIGxheW91dFN0
YXRlKCkuZW5zdXJlR2VvbWV0cnlGb3JMYXlvdXRCb3gobGF5b3V0Qm94KTsKIH0KIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdTdGF0ZS5oIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdTdGF0ZS5oCmluZGV4IGRhOTA0MTFmMDAxMDk5Njgy
M2JhZDM3YTkyNTIzMjcxMjAyMGQ1ODYuLmNlZjhkZDliZmEwYWZjYTJiMWU4YjM2OGVlN2ZmNjQ5
MzUyNDgwNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nU3Rh
dGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ1N0YXRlLmgKQEAgLTYx
LDcgKzYxLDcgQEAgcHVibGljOgogCiAgICAgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlKCkgY29u
c3QgeyByZXR1cm4gbV9sYXlvdXRTdGF0ZTsgfQogCi0gICAgRGlzcGxheTo6Qm94JiBkaXNwbGF5
Qm94KGNvbnN0IEJveCYgbGF5b3V0Qm94KTsKKyAgICBMYXlvdXQ6Okdlb21ldHJ5JiBkaXNwbGF5
Qm94KGNvbnN0IEJveCYgbGF5b3V0Qm94KTsKICAgICAvLyBTaW5jZSB3ZSBsYXlvdXQgdGhlIG91
dC1vZi1mbG93IGJveGVzIGF0IHRoZSBlbmQgb2YgdGhlIGZvcm1hdHRpbmcgY29udGV4dCBsYXlv
dXQsIGl0J3Mgb2theSB0byBzdG9yZSB0aGVtIGluIHRoZSBmb3JtYXR0aW5nIHN0YXRlIC1hcyBv
cHBvc2VkIHRvIHRoZSBjb250YWluaW5nIGJsb2NrIGxldmVsLgogICAgIHVzaW5nIE91dE9mRmxv
d0JveExpc3QgPSBWZWN0b3I8V2Vha1B0cjxjb25zdCBCb3g+PjsKICAgICB2b2lkIGFkZE91dE9m
Rmxvd0JveChjb25zdCBCb3gmIG91dE9mRmxvd0JveCkgeyBtX291dE9mRmxvd0JveGVzLmFwcGVu
ZChtYWtlV2Vha1B0cihvdXRPZkZsb3dCb3gpKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L0xheW91dENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91
dENvbnRleHQuY3BwCmluZGV4IDNiNTYxOWY3NjQwNTUyOTlkZmVhNzI3MWQ3ODY2MWVhOWI5NWFk
MDYuLmZmM2MxNGVmYTFhMmJhY2QzMDU2ZWMyYzQ4YmM5NjA4ZjZhODI3NWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvTGF5b3V0Q29udGV4dC5jcHAKQEAgLTMwLDcgKzMwLDYgQEAKIAogI2luY2x1
ZGUgIkJsb2NrRm9ybWF0dGluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJCbG9ja0Zvcm1hdHRpbmdT
dGF0ZS5oIgotI2luY2x1ZGUgIkRpc3BsYXlCb3guaCIKICNpbmNsdWRlICJEaXNwbGF5UGFpbnRl
ci5oIgogI2luY2x1ZGUgIklubGluZUZvcm1hdHRpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiSW5s
aW5lRm9ybWF0dGluZ1N0YXRlLmgiCkBAIC0zOCw2ICszNyw3IEBACiAjaW5jbHVkZSAiSW52YWxp
ZGF0aW9uU3RhdGUuaCIKICNpbmNsdWRlICJMYXlvdXRCb3guaCIKICNpbmNsdWRlICJMYXlvdXRD
b250YWluZXJCb3guaCIKKyNpbmNsdWRlICJMYXlvdXRHZW9tZXRyeS5oIgogI2luY2x1ZGUgIkxh
eW91dFBoYXNlLmgiCiAjaW5jbHVkZSAiTGF5b3V0VHJlZUJ1aWxkZXIuaCIKICNpbmNsdWRlICJS
ZW5kZXJTdHlsZUNvbnN0YW50cy5oIgpAQCAtNjQsNyArNjQsNyBAQCB2b2lkIExheW91dENvbnRl
eHQ6OmxheW91dChjb25zdCBMYXlvdXRTaXplJiByb290Q29udGVudEJveFNpemUsIEludmFsaWRh
dGlvblN0YQogICAgIC8vIE5vdGUgdGhhdCB3ZSBuZXZlciBsYXlvdXQgdGhlIHJvb3QgYm94LiBJ
dCBoYXMgdG8gaGF2ZSBhbiBhbHJlYWR5IGNvbXB1dGVkIGdlb21ldHJ5IChpbiBjYXNlIG9mIElD
QiwgaXQncyB0aGUgdmlldyBnZW9tZXRyeSkuCiAgICAgLy8gSUNCIGVzdGFibGlzaGVzIHRoZSBp
bml0aWFsIEJGQywgYnV0IGl0IGRvZXMgbm90IGxpdmUgaW4gYSBmb3JtYXR0aW5nIGNvbnRleHQg
YW5kIHdoaWxlIGEgbm9uLUlDQiByb290KHN1YnRyZWUgbGF5b3V0KSBoYXMgdG8gaGF2ZSBhIGZv
cm1hdHRpbmcgY29udGV4dCwKICAgICAvLyB3ZSBjb3VsZCBub3QgbGF5IGl0IG91dCBldmVuIGlm
IHdlIHdhbnRlZCB0byBzaW5jZSBpdCdzIG91dHNpZGUgb2YgdGhpcyBMYXlvdXRDb250ZXh0Lgot
ICAgIGF1dG8mIGRpc3BsYXlCb3ggPSBsYXlvdXRTdGF0ZSgpLmRpc3BsYXlCb3hGb3JSb290TGF5
b3V0Qm94KCk7CisgICAgYXV0byYgZGlzcGxheUJveCA9IGxheW91dFN0YXRlKCkuZ2VvbWV0cnlG
b3JSb290TGF5b3V0Qm94KCk7CiAgICAgZGlzcGxheUJveC5zZXRIb3Jpem9udGFsTWFyZ2luKHsg
fSk7CiAgICAgZGlzcGxheUJveC5zZXRWZXJ0aWNhbE1hcmdpbih7IH0pOwogICAgIGRpc3BsYXlC
b3guc2V0Qm9yZGVyKHsgfSk7CkBAIC05Niw3ICs5Niw3IEBAIHZvaWQgTGF5b3V0Q29udGV4dDo6
bGF5b3V0Rm9ybWF0dGluZ0NvbnRleHRTdWJ0cmVlKGNvbnN0IENvbnRhaW5lckJveCYgZm9ybWF0
dGluCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gZm9ybWF0dGluZ0NvbnRleHQgPSBjcmVh
dGVGb3JtYXR0aW5nQ29udGV4dChmb3JtYXR0aW5nQ29udGV4dFJvb3QsIGxheW91dFN0YXRlKCkp
OwotICAgIGF1dG8mIGRpc3BsYXlCb3ggPSBsYXlvdXRTdGF0ZSgpLmRpc3BsYXlCb3hGb3JMYXlv
dXRCb3goZm9ybWF0dGluZ0NvbnRleHRSb290KTsKKyAgICBhdXRvJiBkaXNwbGF5Qm94ID0gbGF5
b3V0U3RhdGUoKS5nZW9tZXRyeUZvckxheW91dEJveChmb3JtYXR0aW5nQ29udGV4dFJvb3QpOwog
CiAgICAgaWYgKGZvcm1hdHRpbmdDb250ZXh0Um9vdC5oYXNJbkZsb3dPckZsb2F0aW5nQ2hpbGQo
KSkgewogICAgICAgICBhdXRvIGNvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudCA9IEZvcm1hdHRp
bmdDb250ZXh0OjpDb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQgeyB7IGRpc3BsYXlCb3guY29u
dGVudEJveExlZnQoKSwgZGlzcGxheUJveC5jb250ZW50Qm94V2lkdGgoKSB9LCB7IGRpc3BsYXlC
b3guY29udGVudEJveFRvcCgpLCB7IH0gfSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L0xheW91dFN0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0
ZS5jcHAKaW5kZXggMmRhZmI0NWFlYzcxOWYyMTQ3N2JmZWI5MWRhMWRjNzg3ZDc2NzhhNS4uYzcz
NmJlNWQzMzI0YmI3N2UzNjQ3OTBmNGVmOGNiZGU0ZGE2YTAzMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L0xheW91dFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvTGF5b3V0U3RhdGUuY3BwCkBAIC0yOSwxMiArMjksMTIgQEAKICNpZiBFTkFCTEUoTEFZT1VU
X0ZPUk1BVFRJTkdfQ09OVEVYVCkKIAogI2luY2x1ZGUgIkJsb2NrRm9ybWF0dGluZ1N0YXRlLmgi
Ci0jaW5jbHVkZSAiRGlzcGxheUJveC5oIgogI2luY2x1ZGUgIkZsZXhGb3JtYXR0aW5nU3RhdGUu
aCIKICNpbmNsdWRlICJGbG9hdGluZ1N0YXRlLmgiCiAjaW5jbHVkZSAiSW5saW5lRm9ybWF0dGlu
Z1N0YXRlLmgiCiAjaW5jbHVkZSAiTGF5b3V0Qm94LmgiCiAjaW5jbHVkZSAiTGF5b3V0Q29udGFp
bmVyQm94LmgiCisjaW5jbHVkZSAiTGF5b3V0R2VvbWV0cnkuaCIKICNpbmNsdWRlICJSZW5kZXJC
b3guaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiVGFi
bGVGb3JtYXR0aW5nU3RhdGUuaCIKQEAgLTYzLDIzICs2MywyMyBAQCBMYXlvdXRTdGF0ZTo6TGF5
b3V0U3RhdGUoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBDb250YWluZXJCb3gmIHJv
b3RDb250YQogCiBMYXlvdXRTdGF0ZTo6fkxheW91dFN0YXRlKCkgPSBkZWZhdWx0OwogCi1EaXNw
bGF5OjpCb3gmIExheW91dFN0YXRlOjpkaXNwbGF5Qm94Rm9yUm9vdExheW91dEJveCgpCitMYXlv
dXQ6Okdlb21ldHJ5JiBMYXlvdXRTdGF0ZTo6Z2VvbWV0cnlGb3JSb290TGF5b3V0Qm94KCkKIHsK
LSAgICByZXR1cm4gZW5zdXJlRGlzcGxheUJveEZvckxheW91dEJveChyb290KCkpOworICAgIHJl
dHVybiBlbnN1cmVHZW9tZXRyeUZvckxheW91dEJveChyb290KCkpOwogfQogCi1EaXNwbGF5OjpC
b3gmIExheW91dFN0YXRlOjplbnN1cmVEaXNwbGF5Qm94Rm9yTGF5b3V0Qm94U2xvdyhjb25zdCBC
b3gmIGxheW91dEJveCkKK0xheW91dDo6R2VvbWV0cnkmIExheW91dFN0YXRlOjplbnN1cmVEaXNw
bGF5Qm94Rm9yTGF5b3V0Qm94U2xvdyhjb25zdCBCb3gmIGxheW91dEJveCkKIHsKICAgICBpZiAo
bGF5b3V0Qm94LmNhbkNhY2hlRm9yTGF5b3V0U3RhdGUoKnRoaXMpKSB7CiAgICAgICAgIEFTU0VS
VCghbGF5b3V0Qm94LmNhY2hlZERpc3BsYXlCb3hGb3JMYXlvdXRTdGF0ZSgqdGhpcykpOwotICAg
ICAgICBhdXRvIG5ld0JveCA9IG1ha2VVbmlxdWU8RGlzcGxheTo6Qm94PigpOworICAgICAgICBh
dXRvIG5ld0JveCA9IG1ha2VVbmlxdWU8TGF5b3V0OjpHZW9tZXRyeT4oKTsKICAgICAgICAgYXV0
byYgbmV3Qm94UHRyID0gKm5ld0JveDsKICAgICAgICAgbGF5b3V0Qm94LnNldENhY2hlZERpc3Bs
YXlCb3hGb3JMYXlvdXRTdGF0ZSgqdGhpcywgV1RGTW92ZShuZXdCb3gpKTsKICAgICAgICAgcmV0
dXJuIG5ld0JveFB0cjsKICAgICB9CiAKICAgICByZXR1cm4gKm1fbGF5b3V0VG9EaXNwbGF5Qm94
LmVuc3VyZSgmbGF5b3V0Qm94LCBbXSB7Ci0gICAgICAgIHJldHVybiBtYWtlVW5pcXVlPERpc3Bs
YXk6OkJveD4oKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8TGF5b3V0OjpHZW9tZXRyeT4o
KTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9MYXlvdXRTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFN0
YXRlLmgKaW5kZXggM2I3Mzk1ZThkMjNhZTFiNjhkOTRkY2Y1N2UwZjI5MjYyODQzMGE0ZC4uZDc0
OWFlZGUzNzk0NWNiN2E5OTIyZjY0OTg1NmRkODIzMzMzNzVkMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L0xheW91dFN0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L0xheW91dFN0YXRlLmgKQEAgLTM1LDE2ICszNSwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLW5hbWVzcGFjZSBEaXNwbGF5IHsKLWNsYXNzIEJveDsKLX0KLQogbmFtZXNwYWNlIExheW91
dCB7CiAKK2NsYXNzIEJsb2NrRm9ybWF0dGluZ1N0YXRlOwogY2xhc3MgRmxleEZvcm1hdHRpbmdT
dGF0ZTsKIGNsYXNzIEZvcm1hdHRpbmdDb250ZXh0OwogY2xhc3MgRm9ybWF0dGluZ1N0YXRlOwot
Y2xhc3MgQmxvY2tGb3JtYXR0aW5nU3RhdGU7CitjbGFzcyBHZW9tZXRyeTsKIGNsYXNzIElubGlu
ZUZvcm1hdHRpbmdTdGF0ZTsKIGNsYXNzIFRhYmxlRm9ybWF0dGluZ1N0YXRlOwogCkBAIC03NCw5
ICs3MSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlcmVnaXN0ZXJGb3JtYXR0aW5nQ29udGV4dChj
b25zdCBGb3JtYXR0aW5nQ29udGV4dCYgZm9ybWF0dGluZ0NvbnRleHQpIHsgbV9mb3JtYXR0aW5n
Q29udGV4dExpc3QucmVtb3ZlKCZmb3JtYXR0aW5nQ29udGV4dCk7IH0KICNlbmRpZgogCi0gICAg
RGlzcGxheTo6Qm94JiBkaXNwbGF5Qm94Rm9yUm9vdExheW91dEJveCgpOwotICAgIERpc3BsYXk6
OkJveCYgZW5zdXJlRGlzcGxheUJveEZvckxheW91dEJveChjb25zdCBCb3gmKTsKLSAgICBjb25z
dCBEaXNwbGF5OjpCb3gmIGRpc3BsYXlCb3hGb3JMYXlvdXRCb3goY29uc3QgQm94JikgY29uc3Q7
CisgICAgTGF5b3V0OjpHZW9tZXRyeSYgZ2VvbWV0cnlGb3JSb290TGF5b3V0Qm94KCk7CisgICAg
TGF5b3V0OjpHZW9tZXRyeSYgZW5zdXJlR2VvbWV0cnlGb3JMYXlvdXRCb3goY29uc3QgQm94Jik7
CisgICAgY29uc3QgTGF5b3V0OjpHZW9tZXRyeSYgZ2VvbWV0cnlGb3JMYXlvdXRCb3goY29uc3Qg
Qm94JikgY29uc3Q7CiAKICAgICBib29sIGhhc0Rpc3BsYXlCb3goY29uc3QgQm94JikgY29uc3Q7
CiAKQEAgLTk2LDcgKzkzLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHZvaWQgc2V0UXVp
cmtzTW9kZShRdWlya3NNb2RlIHF1aXJrc01vZGUpIHsgbV9xdWlya3NNb2RlID0gcXVpcmtzTW9k
ZTsgfQotICAgIERpc3BsYXk6OkJveCYgZW5zdXJlRGlzcGxheUJveEZvckxheW91dEJveFNsb3co
Y29uc3QgQm94Jik7CisgICAgTGF5b3V0OjpHZW9tZXRyeSYgZW5zdXJlRGlzcGxheUJveEZvckxh
eW91dEJveFNsb3coY29uc3QgQm94Jik7CiAKICAgICBIYXNoTWFwPGNvbnN0IENvbnRhaW5lckJv
eCosIHN0ZDo6dW5pcXVlX3B0cjxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+PiBtX2lubGluZUZvcm1h
dHRpbmdTdGF0ZXM7CiAgICAgSGFzaE1hcDxjb25zdCBDb250YWluZXJCb3gqLCBzdGQ6OnVuaXF1
ZV9wdHI8QmxvY2tGb3JtYXR0aW5nU3RhdGU+PiBtX2Jsb2NrRm9ybWF0dGluZ1N0YXRlczsKQEAg
LTEwOCw3ICsxMDUsNyBAQCBwcml2YXRlOgogI2lmbmRlZiBOREVCVUcKICAgICBIYXNoU2V0PGNv
bnN0IEZvcm1hdHRpbmdDb250ZXh0Kj4gbV9mb3JtYXR0aW5nQ29udGV4dExpc3Q7CiAjZW5kaWYK
LSAgICBIYXNoTWFwPGNvbnN0IEJveCosIHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5OjpCb3g+PiBt
X2xheW91dFRvRGlzcGxheUJveDsKKyAgICBIYXNoTWFwPGNvbnN0IEJveCosIHN0ZDo6dW5pcXVl
X3B0cjxMYXlvdXQ6Okdlb21ldHJ5Pj4gbV9sYXlvdXRUb0Rpc3BsYXlCb3g7CiAgICAgUXVpcmtz
TW9kZSBtX3F1aXJrc01vZGUgeyBRdWlya3NNb2RlOjpObyB9OwogCiAgICAgV2Vha1B0cjxjb25z
dCBDb250YWluZXJCb3g+IG1fcm9vdENvbnRhaW5lcjsKQEAgLTEyNSwxNCArMTIyLDE0IEBAIGlu
bGluZSBib29sIExheW91dFN0YXRlOjpoYXNEaXNwbGF5Qm94KGNvbnN0IEJveCYgbGF5b3V0Qm94
KSBjb25zdAogICAgIHJldHVybiBtX2xheW91dFRvRGlzcGxheUJveC5jb250YWlucygmbGF5b3V0
Qm94KTsKIH0KIAotaW5saW5lIERpc3BsYXk6OkJveCYgTGF5b3V0U3RhdGU6OmVuc3VyZURpc3Bs
YXlCb3hGb3JMYXlvdXRCb3goY29uc3QgQm94JiBsYXlvdXRCb3gpCitpbmxpbmUgTGF5b3V0OjpH
ZW9tZXRyeSYgTGF5b3V0U3RhdGU6OmVuc3VyZUdlb21ldHJ5Rm9yTGF5b3V0Qm94KGNvbnN0IEJv
eCYgbGF5b3V0Qm94KQogewogICAgIGlmIChhdXRvKiBkaXNwbGF5Qm94ID0gbGF5b3V0Qm94LmNh
Y2hlZERpc3BsYXlCb3hGb3JMYXlvdXRTdGF0ZSgqdGhpcykpCiAgICAgICAgIHJldHVybiAqZGlz
cGxheUJveDsKICAgICByZXR1cm4gZW5zdXJlRGlzcGxheUJveEZvckxheW91dEJveFNsb3cobGF5
b3V0Qm94KTsKIH0KIAotaW5saW5lIGNvbnN0IERpc3BsYXk6OkJveCYgTGF5b3V0U3RhdGU6OmRp
c3BsYXlCb3hGb3JMYXlvdXRCb3goY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0CitpbmxpbmUg
Y29uc3QgTGF5b3V0OjpHZW9tZXRyeSYgTGF5b3V0U3RhdGU6Omdlb21ldHJ5Rm9yTGF5b3V0Qm94
KGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAogewogICAgIGlmIChhdXRvKiBkaXNwbGF5Qm94
ID0gbGF5b3V0Qm94LmNhY2hlZERpc3BsYXlCb3hGb3JMYXlvdXRTdGF0ZSgqdGhpcykpCiAgICAg
ICAgIHJldHVybiAqZGlzcGxheUJveDsKQEAgLTE1NSw3ICsxNTIsNyBAQCBpbmxpbmUgYm9vbCBC
b3g6OmNhbkNhY2hlRm9yTGF5b3V0U3RhdGUoY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRl
KSBjb25zdAogICAgIHJldHVybiAhbV9jYWNoZWRMYXlvdXRTdGF0ZSB8fCBtX2NhY2hlZExheW91
dFN0YXRlLmdldCgpID09ICZsYXlvdXRTdGF0ZTsKIH0KIAotaW5saW5lIERpc3BsYXk6OkJveCog
Qm94OjpjYWNoZWREaXNwbGF5Qm94Rm9yTGF5b3V0U3RhdGUoY29uc3QgTGF5b3V0U3RhdGUmIGxh
eW91dFN0YXRlKSBjb25zdAoraW5saW5lIExheW91dDo6R2VvbWV0cnkqIEJveDo6Y2FjaGVkRGlz
cGxheUJveEZvckxheW91dFN0YXRlKGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSkgY29u
c3QKIHsKICAgICBpZiAobV9jYWNoZWRMYXlvdXRTdGF0ZS5nZXQoKSAhPSAmbGF5b3V0U3RhdGUp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L1ZlcmlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvVmVyaWZpY2F0aW9u
LmNwcAppbmRleCA3ZDAxMzYxZmMzODI4MjcyYzI0ZjNmOWFiOWYyOGE1MzVjMGZiOTVlLi4zZmJk
NjhmNjNjNmJjM2E2ZThmODY4MjBhNzhkY2M1ZWI5ZWM2Y2JmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvVmVyaWZpY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvVmVyaWZpY2F0aW9uLmNwcApAQCAtMzAsMTIgKzMwLDEyIEBACiAKICNpZm5kZWYgTkRFQlVH
CiAjaW5jbHVkZSAiQmxvY2tGb3JtYXR0aW5nU3RhdGUuaCIKLSNpbmNsdWRlICJEaXNwbGF5Qm94
LmgiCiAjaW5jbHVkZSAiSW5saW5lRm9ybWF0dGluZ1N0YXRlLmgiCiAjaW5jbHVkZSAiSW5saW5l
VGV4dEJveC5oIgogI2luY2x1ZGUgIkxheW91dEJveC5oIgogI2luY2x1ZGUgIkxheW91dENvbnRh
aW5lckJveC5oIgogI2luY2x1ZGUgIkxheW91dENvbnRleHQuaCIKKyNpbmNsdWRlICJMYXlvdXRH
ZW9tZXRyeS5oIgogI2luY2x1ZGUgIkxheW91dFRyZWVCdWlsZGVyLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyQm94LmgiCiAjaW5jbHVkZSAiUmVuZGVySW5saW5lLmgiCkBAIC0yMzgsNyArMjM4LDcgQEAg
c3RhdGljIGJvb2wgb3V0cHV0TWlzbWF0Y2hpbmdCbG9ja0JveEluZm9ybWF0aW9uSWZOZWVkZWQo
VGV4dFN0cmVhbSYgc3RyZWFtLCBjb24KICAgICAgICAgICAgIHJldHVybiBkaXNwbGF5Qm94LnJl
Y3QoKTsKIAogICAgICAgICAvLyBQcm9kdWNlIGEgUmVuZGVyQm94IG1hdGNoaW5nIG1hcmdpbiBi
b3guCi0gICAgICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrV2lkdGggPSBsYXlvdXRTdGF0ZS5kaXNw
bGF5Qm94Rm9yTGF5b3V0Qm94KGxheW91dEJveC5jb250YWluaW5nQmxvY2soKSkuY29udGVudEJv
eFdpZHRoKCk7CisgICAgICAgIGF1dG8gY29udGFpbmluZ0Jsb2NrV2lkdGggPSBsYXlvdXRTdGF0
ZS5nZW9tZXRyeUZvckxheW91dEJveChsYXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkpLmNvbnRl
bnRCb3hXaWR0aCgpOwogICAgICAgICBhdXRvIG1hcmdpblN0YXJ0ID0gTGF5b3V0VW5pdCB7IH07
CiAgICAgICAgIGF1dG8mIG1hcmdpblN0YXJ0U3R5bGUgPSBsYXlvdXRCb3guc3R5bGUoKS5tYXJn
aW5TdGFydCgpOwogICAgICAgICBpZiAobWFyZ2luU3RhcnRTdHlsZS5pc0ZpeGVkKCkgfHwgbWFy
Z2luU3RhcnRTdHlsZS5pc1BlcmNlbnQoKSB8fCBtYXJnaW5TdGFydFN0eWxlLmlzQ2FsY3VsYXRl
ZCgpKQpAQCAtMjU4LDcgKzI1OCw3IEBAIHN0YXRpYyBib29sIG91dHB1dE1pc21hdGNoaW5nQmxv
Y2tCb3hJbmZvcm1hdGlvbklmTmVlZGVkKFRleHRTdHJlYW0mIHN0cmVhbSwgY29uCiAgICAgICAg
ICAgICBtYXJnaW5BZnRlciA9IHZlcnRpY2FsTWFyZ2luLm5vbkNvbGxhcHNlZFZhbHVlcy5hZnRl
cjsKICAgICAgICAgfQogICAgICAgICBhdXRvIGJvcmRlckJveCA9IGRpc3BsYXlCb3guYm9yZGVy
Qm94KCk7Ci0gICAgICAgIHJldHVybiBEaXNwbGF5OjpSZWN0IHsKKyAgICAgICAgcmV0dXJuIFJl
Y3QgewogICAgICAgICAgICAgYm9yZGVyQm94LnRvcCgpIC0gbWFyZ2luQmVmb3JlLAogICAgICAg
ICAgICAgYm9yZGVyQm94LmxlZnQoKSAtIG1hcmdpblN0YXJ0LAogICAgICAgICAgICAgbWFyZ2lu
U3RhcnQgKyBib3JkZXJCb3gud2lkdGgoKSArIG1hcmdpbkVuZCwKQEAgLTI3MSwxMSArMjcxLDEx
IEBAIHN0YXRpYyBib29sIG91dHB1dE1pc21hdGNoaW5nQmxvY2tCb3hJbmZvcm1hdGlvbklmTmVl
ZGVkKFRleHRTdHJlYW0mIHN0cmVhbSwgY29uCiAgICAgaWYgKHJlbmRlcmVyLmlzSW5GbG93UG9z
aXRpb25lZCgpKQogICAgICAgICBmcmFtZVJlY3QubW92ZShyZW5kZXJlci5vZmZzZXRGb3JJbkZs
b3dQb3NpdGlvbigpKTsKIAotICAgIGF1dG8gZGlzcGxheUJveCA9IERpc3BsYXk6OkJveCB7IGxh
eW91dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94KSB9OworICAgIGF1dG8g
ZGlzcGxheUJveCA9IEdlb21ldHJ5IHsgbGF5b3V0U3RhdGUuZ2VvbWV0cnlGb3JMYXlvdXRCb3go
bGF5b3V0Qm94KSB9OwogICAgIGlmIChsYXlvdXRCb3guaXNUYWJsZUJveCgpKSB7CiAgICAgICAg
IC8vIFdoZW4gdGhlIDx0YWJsZT4gaXMgb3V0LW9mLWZsb3cgcG9zaXRpb25lZCwgdGhlIHdyYXBw
ZXIgdGFibGUgYm94IGhhcyB0aGUgb2Zmc2V0CiAgICAgICAgIC8vIHdoaWxlIHRoZSBhY3R1YWwg
dGFibGUgYm94IGlzIHN0YXRpYywgaW5mbG93LgotICAgICAgICBhdXRvJiB0YWJsZVdyYXBwZXJE
aXNwbGF5Qm94ID0gbGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxheW91dEJveChsYXlvdXRCb3gu
Y29udGFpbmluZ0Jsb2NrKCkpOworICAgICAgICBhdXRvJiB0YWJsZVdyYXBwZXJEaXNwbGF5Qm94
ID0gbGF5b3V0U3RhdGUuZ2VvbWV0cnlGb3JMYXlvdXRCb3gobGF5b3V0Qm94LmNvbnRhaW5pbmdC
bG9jaygpKTsKICAgICAgICAgZGlzcGxheUJveC5tb3ZlQnkodGFibGVXcmFwcGVyRGlzcGxheUJv
eC50b3BMZWZ0KCkpOwogICAgICAgICAvLyBUYWJsZSB3cmFwcGVyIGJveCBoYXMgdGhlIG1hcmdp
biB2YWx1ZXMgZm9yIHRoZSB0YWJsZS4KICAgICAgICAgZGlzcGxheUJveC5zZXRIb3Jpem9udGFs
TWFyZ2luKHRhYmxlV3JhcHBlckRpc3BsYXlCb3guaG9yaXpvbnRhbE1hcmdpbigpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0
aW5nQ29udGV4dEdlb21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1h
dHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAppbmRleCBiYjcwZmJiMjk3
NThhMTk3YTViZDk0NTk4Y2EzMDlkM2QwNzNmMWNmLi40MThiMmNiYWE0NDc2NWJhYTJmNjUzOTgx
OGQzODc2MjQ3NWUzMGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tm
b3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0R2Vv
bWV0cnkuY3BwCkBAIC0yOSwxMSArMjksMTEgQEAKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJ
TkdfQ09OVEVYVCkKIAogI2luY2x1ZGUgIkJsb2NrRm9ybWF0dGluZ1N0YXRlLmgiCi0jaW5jbHVk
ZSAiRGlzcGxheUJveC5oIgogI2luY2x1ZGUgIkZvcm1hdHRpbmdDb250ZXh0LmgiCiAjaW5jbHVk
ZSAiSW5saW5lRm9ybWF0dGluZ1N0YXRlLmgiCiAjaW5jbHVkZSAiTGF5b3V0Q2hpbGRJdGVyYXRv
ci5oIgogI2luY2x1ZGUgIkxheW91dENvbnRleHQuaCIKKyNpbmNsdWRlICJMYXlvdXRHZW9tZXRy
eS5oIgogI2luY2x1ZGUgIkxheW91dEluaXRpYWxDb250YWluaW5nQmxvY2suaCIKICNpbmNsdWRl
ICJMYXlvdXRSZXBsYWNlZEJveC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dFF1aXJrcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Js
b2NrRm9ybWF0dGluZ0NvbnRleHRRdWlya3MuY3BwCmluZGV4IGNiOGI5YTBlNDAyMDQ5NjAyZWE5
ZTUyMTU5ZGNiYzllMmVlN2E0NGQuLjVlNzkxZjlmZDE2Mjg4ZjhjMmQxOGQ3ZjQzMjFmYWY3OTNj
M2QyNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcv
QmxvY2tGb3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNwcApAQCAt
MjksOSArMjksOSBAQAogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQogCiAj
aW5jbHVkZSAiQmxvY2tGb3JtYXR0aW5nU3RhdGUuaCIKLSNpbmNsdWRlICJEaXNwbGF5Qm94Lmgi
CiAjaW5jbHVkZSAiTGF5b3V0Qm94LmgiCiAjaW5jbHVkZSAiTGF5b3V0Q29udGFpbmVyQm94Lmgi
CisjaW5jbHVkZSAiTGF5b3V0R2VvbWV0cnkuaCIKICNpbmNsdWRlICJMYXlvdXRJbml0aWFsQ29u
dGFpbmluZ0Jsb2NrLmgiCiAjaW5jbHVkZSAiTGF5b3V0U3RhdGUuaCIKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy90YWJsZXdyYXBwZXIvVGFibGVX
cmFwcGVyQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
YmxvY2tmb3JtYXR0aW5nL3RhYmxld3JhcHBlci9UYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0LmNwcAppbmRleCBhNmQxOTkyYTI1YWU0MDlmZDQzOTZhZGE4NzRhYjFjMDFjZTg1MTMy
Li42NjM4YWU1MzMwNjVjZGE0NzA0Njc4OWZlYjMxNTE0MGY2OTQzZjE1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL3RhYmxld3JhcHBlci9UYWJsZVdy
YXBwZXJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvYmxvY2tmb3JtYXR0aW5nL3RhYmxld3JhcHBlci9UYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRp
bmdDb250ZXh0LmNwcApAQCAtMjksMTAgKzI5LDEwIEBACiAjaWYgRU5BQkxFKExBWU9VVF9GT1JN
QVRUSU5HX0NPTlRFWFQpCiAKICNpbmNsdWRlICJCbG9ja0Zvcm1hdHRpbmdTdGF0ZS5oIgotI2lu
Y2x1ZGUgIkRpc3BsYXlCb3guaCIKICNpbmNsdWRlICJJbnZhbGlkYXRpb25TdGF0ZS5oIgogI2lu
Y2x1ZGUgIkxheW91dENoaWxkSXRlcmF0b3IuaCIKICNpbmNsdWRlICJMYXlvdXRDb250ZXh0Lmgi
CisjaW5jbHVkZSAiTGF5b3V0R2VvbWV0cnkuaCIKICNpbmNsdWRlICJMYXlvdXRJbml0aWFsQ29u
dGFpbmluZ0Jsb2NrLmgiCiAjaW5jbHVkZSAiVGFibGVGb3JtYXR0aW5nQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIlRhYmxlRm9ybWF0dGluZ1N0YXRlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZGlzcGxheS9EaXNwbGF5TGF5ZXJDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9kaXNwbGF5L0Rpc3BsYXlMYXllckNvbnRyb2xsZXIuY3BwCmluZGV4IGE2MDM4
NGJlZDQ0MjZhYTAyMjM1OGY4NzdmZDRkZTE4ZjZiYjE2NWUuLjRiYjNhMDdhY2NlZjI0MmU2OTM1
NjNmMzI3NTZlOTIyOWM4M2NmNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9k
aXNwbGF5L0Rpc3BsYXlMYXllckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9kaXNwbGF5L0Rpc3BsYXlMYXllckNvbnRyb2xsZXIuY3BwCkBAIC0zMCwxMiArMzAsMTIg
QEAKIAogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgotI2lu
Y2x1ZGUgIkRpc3BsYXlCb3guaCIKICNpbmNsdWRlICJEaXNwbGF5UGFpbnRlci5oIgogI2luY2x1
ZGUgIkRpc3BsYXlWaWV3LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZVZp
ZXcuaCIKICNpbmNsdWRlICJMYXlvdXRDb250ZXh0LmgiCisjaW5jbHVkZSAiTGF5b3V0R2VvbWV0
cnkuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUg
IlNldHRpbmdzLmgiCkBAIC04NSw4ICs4NSw4IEBAIHZvaWQgTGF5ZXJDb250cm9sbGVyOjpwcmVw
YXJlRm9yRGlzcGxheShjb25zdCBMYXlvdXQ6OkxheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSkKIAog
ICAgIEFTU0VSVChsYXlvdXRTdGF0ZS5oYXNEaXNwbGF5Qm94KHJvb3RMYXlvdXRCb3gpKTsKIAot
ICAgIGF1dG8gdmlld1NpemUgPSBsYXlvdXRTdGF0ZS5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KHJv
b3RMYXlvdXRCb3gpLnNpemUoKTsKLSAgICBhdXRvIGNvbnRlbnRTaXplID0gbGF5b3V0U3RhdGUu
ZGlzcGxheUJveEZvckxheW91dEJveCgqcm9vdExheW91dEJveC5maXJzdENoaWxkKCkpLnNpemUo
KTsKKyAgICBhdXRvIHZpZXdTaXplID0gbGF5b3V0U3RhdGUuZ2VvbWV0cnlGb3JMYXlvdXRCb3go
cm9vdExheW91dEJveCkuc2l6ZSgpOworICAgIGF1dG8gY29udGVudFNpemUgPSBsYXlvdXRTdGF0
ZS5nZW9tZXRyeUZvckxheW91dEJveCgqcm9vdExheW91dEJveC5maXJzdENoaWxkKCkpLnNpemUo
KTsKICAgICAKICAgICAvLyBGSVhNRTogVXNpbmcgdGhlIGZpcnN0Q2hpbGQoKSBzaXplIHdvbid0
IGJlIGNvcnJlY3QgdW50aWwgd2UgY29tcHV0ZSBvdmVyZmxvdyBjb3JyZWN0bHksCiAgICAgY29u
dGVudFNpemUuY2xhbXBUb01pbmltdW1TaXplKHZpZXdTaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5UGFpbnRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheVBhaW50ZXIuY3BwCmluZGV4IDQ2ZmNm
NGZiNTRhMTBhNjZkN2IzNmQ5OGI1Njk4MGY3YjQzYzQ0MGEuLjJhMjljNDQwNDQxNGNjMWZjOTA1
MTFmYjZjODQ1ZDk5YWI2N2VlNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9k
aXNwbGF5dHJlZS9EaXNwbGF5UGFpbnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Rpc3BsYXl0cmVlL0Rpc3BsYXlQYWludGVyLmNwcApAQCAtMzAsMTIgKzMwLDEyIEBACiAKICNp
bmNsdWRlICJDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUgIkNvbG9yLmgiCi0jaW5jbHVkZSAiRGlz
cGxheUJveC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIklubGlu
ZUZvcm1hdHRpbmdTdGF0ZS5oIgogI2luY2x1ZGUgIklubGluZVRleHRJdGVtLmgiCiAjaW5jbHVk
ZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkxheW91dENvbnRhaW5lckJveC5oIgorI2luY2x1ZGUg
IkxheW91dEdlb21ldHJ5LmgiCiAjaW5jbHVkZSAiTGF5b3V0SW5pdGlhbENvbnRhaW5pbmdCbG9j
ay5oIgogI2luY2x1ZGUgIkxheW91dFN0YXRlLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIK
QEAgLTQ0LDcgKzQ0LDggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBEaXNwbGF5
IHsKIAotc3RhdGljIHZvaWQgcGFpbnRCb3hEZWNvcmF0aW9uKEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgQm94JiBhYnNvbHV0ZURpc3BsYXlCb3gsIGNvbnN0IFJlbmRlclN0eWxlJiBz
dHlsZSwgYm9vbCBuZWVkc01hcmdpblBhaW50aW5nKQorLy8gRklYTUU6IE1vdmUgdG8gZGlzcGxh
eSBib3guCitzdGF0aWMgdm9pZCBwYWludEJveERlY29yYXRpb24oR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBMYXlvdXQ6Okdlb21ldHJ5JiBhYnNvbHV0ZURpc3BsYXlCb3gsIGNvbnN0
IFJlbmRlclN0eWxlJiBzdHlsZSwgYm9vbCBuZWVkc01hcmdpblBhaW50aW5nKQogewogICAgIGF1
dG8gZGVjb3JhdGlvbkJveFRvcExlZnQgPSBuZWVkc01hcmdpblBhaW50aW5nID8gYWJzb2x1dGVE
aXNwbGF5Qm94LnJlY3RXaXRoTWFyZ2luKCkudG9wTGVmdCgpIDogYWJzb2x1dGVEaXNwbGF5Qm94
LnRvcExlZnQoKTsKICAgICBhdXRvIGRlY29yYXRpb25Cb3hTaXplID0gbmVlZHNNYXJnaW5QYWlu
dGluZyA/IGFic29sdXRlRGlzcGxheUJveC5yZWN0V2l0aE1hcmdpbigpLnNpemUoKSA6IExheW91
dFNpemUoYWJzb2x1dGVEaXNwbGF5Qm94LmJvcmRlckJveFdpZHRoKCksIGFic29sdXRlRGlzcGxh
eUJveC5ib3JkZXJCb3hIZWlnaHQoKSk7CkBAIC0xNDEsMTMgKzE0MiwxMyBAQCBzdGF0aWMgdm9p
ZCBwYWludElubGluZUNvbnRlbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBMYXlvdXRQb2lu
dCBhYnNvbHV0ZU9mZgogICAgIH0KIH0KIAotQm94IFBhaW50ZXI6OmFic29sdXRlRGlzcGxheUJv
eChjb25zdCBMYXlvdXQ6OkxheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3QgTGF5b3V0OjpC
b3gmIGxheW91dEJveFRvUGFpbnQpCitMYXlvdXQ6Okdlb21ldHJ5IFBhaW50ZXI6OmFic29sdXRl
RGlzcGxheUJveChjb25zdCBMYXlvdXQ6OkxheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgY29uc3Qg
TGF5b3V0OjpCb3gmIGxheW91dEJveFRvUGFpbnQpCiB7CiAgICAgLy8gU2hvdWxkIG5ldmVyIHJl
YWxseSBoYXBwZW4gYnV0IHRhYmxlIGNvZGUgaXMgd2F5IHRvbyBpbmNvbXBsZXRlLgogICAgIGlm
ICghbGF5b3V0U3RhdGUuaGFzRGlzcGxheUJveChsYXlvdXRCb3hUb1BhaW50KSkKICAgICAgICAg
cmV0dXJuIHsgfTsKICAgICBpZiAoaXM8TGF5b3V0OjpJbml0aWFsQ29udGFpbmluZ0Jsb2NrPihs
YXlvdXRCb3hUb1BhaW50KSkKLSAgICAgICAgcmV0dXJuIGxheW91dFN0YXRlLmRpc3BsYXlCb3hG
b3JMYXlvdXRCb3gobGF5b3V0Qm94VG9QYWludCk7CisgICAgICAgIHJldHVybiBsYXlvdXRTdGF0
ZS5nZW9tZXRyeUZvckxheW91dEJveChsYXlvdXRCb3hUb1BhaW50KTsKIAogICAgIGF1dG8gcGFp
bnRDb250YWluZXIgPSBbJl0gKGNvbnN0IGF1dG8mIGxheW91dEJveCkgewogICAgICAgICBpZiAo
bGF5b3V0Qm94LmlzVGFibGVDZWxsKCkpIHsKQEAgLTE1Nyw5ICsxNTgsOSBAQCBCb3ggUGFpbnRl
cjo6YWJzb2x1dGVEaXNwbGF5Qm94KGNvbnN0IExheW91dDo6TGF5b3V0U3RhdGUmIGxheW91dFN0
YXRlLCBjb25zdCBMYQogICAgICAgICB9CiAgICAgICAgIHJldHVybiAmbGF5b3V0Qm94LmNvbnRh
aW5pbmdCbG9jaygpOwogICAgIH07Ci0gICAgYXV0byBhYnNvbHV0ZUJveCA9IEJveCB7IGxheW91
dFN0YXRlLmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94VG9QYWludCkgfTsKKyAgICBh
dXRvIGFic29sdXRlQm94ID0gTGF5b3V0OjpHZW9tZXRyeSB7IGxheW91dFN0YXRlLmdlb21ldHJ5
Rm9yTGF5b3V0Qm94KGxheW91dEJveFRvUGFpbnQpIH07CiAgICAgZm9yIChhdXRvKiBjb250YWlu
ZXIgPSBwYWludENvbnRhaW5lcihsYXlvdXRCb3hUb1BhaW50KTsgIWlzPExheW91dDo6SW5pdGlh
bENvbnRhaW5pbmdCbG9jaz4oY29udGFpbmVyKTsgY29udGFpbmVyID0gcGFpbnRDb250YWluZXIo
KmNvbnRhaW5lcikpCi0gICAgICAgIGFic29sdXRlQm94Lm1vdmVCeShsYXlvdXRTdGF0ZS5kaXNw
bGF5Qm94Rm9yTGF5b3V0Qm94KCpjb250YWluZXIpLnRvcExlZnQoKSk7CisgICAgICAgIGFic29s
dXRlQm94Lm1vdmVCeShsYXlvdXRTdGF0ZS5nZW9tZXRyeUZvckxheW91dEJveCgqY29udGFpbmVy
KS50b3BMZWZ0KCkpOwogICAgIHJldHVybiBhYnNvbHV0ZUJveDsKIH0KIApAQCAtMjM0LDcgKzIz
NSw3IEBAIHN0YXRpYyBMYXlvdXRSZWN0IGNvbGxlY3RQYWludFJvb3RzQW5kQ29udGVudFJlY3Qo
Y29uc3QgTGF5b3V0OjpMYXlvdXRTdGF0ZSYgbGF5CiAgICAgICAgIHBvc2l0aXZlWk9yZGVyTGlz
dC5hcHBlbmQoJmxheW91dEJveCk7CiAgICAgfTsKIAotICAgIGF1dG8gY29udGVudFJlY3QgPSBM
YXlvdXRSZWN0IHsgbGF5b3V0U3RhdGUuZGlzcGxheUJveEZvckxheW91dEJveChyb290TGF5b3V0
Qm94KS5yZWN0KCkgfTsKKyAgICBhdXRvIGNvbnRlbnRSZWN0ID0gTGF5b3V0UmVjdCB7IGxheW91
dFN0YXRlLmdlb21ldHJ5Rm9yTGF5b3V0Qm94KHJvb3RMYXlvdXRCb3gpLnJlY3QoKSB9OwogCiAg
ICAgLy8gSW5pdGlhbCBCRkMgaXMgYWx3YXlzIGEgcGFpbnQgcm9vdC4KICAgICBhcHBlbmRQYWlu
dFJvb3Qocm9vdExheW91dEJveCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
ZGlzcGxheXRyZWUvRGlzcGxheVBhaW50ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNw
bGF5dHJlZS9EaXNwbGF5UGFpbnRlci5oCmluZGV4IGJmMTAwZjk1YTVkMmJjYmU0MmM0ZDM5Nzc1
YTU2YzA1YTVkNDg0MjMuLjFiZTVlZmM5ZWJiZjFjNmQwZDUyZWMyZmQyYWFjN2FmYzEyYWJkMjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5UGFp
bnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5UGFp
bnRlci5oCkBAIC0zMyw2ICszMyw3IEBAIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIElu
dFJlY3Q7CiAKIG5hbWVzcGFjZSBMYXlvdXQgeworY2xhc3MgR2VvbWV0cnk7CiBjbGFzcyBMYXlv
dXRTdGF0ZTsKIH0KIApAQCAtNDMsNyArNDQsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQg
cGFpbnQoY29uc3QgTGF5b3V0OjpMYXlvdXRTdGF0ZSYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IEludFJlY3QmIGRpcnR5UmVjdCk7CiAgICAgc3RhdGljIHZvaWQgcGFpbnRJbmxpbmVGbG93KGNv
bnN0IExheW91dDo6TGF5b3V0U3RhdGUmLCBHcmFwaGljc0NvbnRleHQmKTsKIAotICAgIHN0YXRp
YyBCb3ggYWJzb2x1dGVEaXNwbGF5Qm94KGNvbnN0IExheW91dDo6TGF5b3V0U3RhdGUmLCBjb25z
dCBMYXlvdXQ6OkJveCYpOyAgICAKKyAgICAvLyBGSVhNRTogTW92ZSB0byBkaXNwbGF5IGJveC4K
KyAgICBzdGF0aWMgTGF5b3V0OjpHZW9tZXRyeSBhYnNvbHV0ZURpc3BsYXlCb3goY29uc3QgTGF5
b3V0OjpMYXlvdXRTdGF0ZSYsIGNvbnN0IExheW91dDo6Qm94Jik7CiB9OwogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0QXZvaWRlci5oIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdEF2b2lkZXIuaAppbmRleCA3ZjRkODU2YTdkNWNh
NjkwY2NiM2IyYWZlZWM4ZTRlNDgzYWQ0NTFjLi44ZTI1M2IxOTBmMjllMWQyYTQzMjhhNzRlOGEx
MDlhY2IzYzNkNzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zs
b2F0QXZvaWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRBdm9p
ZGVyLmgKQEAgLTI3LDggKzI3LDggQEAKIAogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19D
T05URVhUKQogCi0jaW5jbHVkZSAiRGlzcGxheUJveC5oIgogI2luY2x1ZGUgIkxheW91dEJveC5o
IgorI2luY2x1ZGUgIkxheW91dEdlb21ldHJ5LmgiCiAjaW5jbHVkZSAiTGF5b3V0UG9pbnQuaCIK
ICNpbmNsdWRlICJMYXlvdXRVbml0cy5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdDb250ZXh0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdDb250ZXh0LmNwcAppbmRl
eCAwZmI2NmZmODU1ZTAzZGY4NWZkMWEwY2Q5M2UwNDU5ZDFiMTg4ZDc1Li44NTVmZjVmZTU3OTA0
OTYyYzAzOWIyMDdmZDg4ODZlNGY5YmM0MTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZmxvYXRzL0Zsb2F0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zsb2F0cy9GbG9hdGluZ0NvbnRleHQuY3BwCkBAIC0yOSwxMSArMjksMTEgQEAKICNpZiBF
TkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKIAogI2luY2x1ZGUgIkJsb2NrRm9ybWF0
dGluZ1N0YXRlLmgiCi0jaW5jbHVkZSAiRGlzcGxheUJveC5oIgogI2luY2x1ZGUgIkZsb2F0QXZv
aWRlci5oIgogI2luY2x1ZGUgIkZvcm1hdHRpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiTGF5b3V0
Qm94LmgiCiAjaW5jbHVkZSAiTGF5b3V0Q29udGFpbmVyQm94LmgiCisjaW5jbHVkZSAiTGF5b3V0
R2VvbWV0cnkuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC00MDQsNyArNDA0LDcgQEAgRmxvYXRpbmdDb250ZXh0OjpDb25zdHJh
aW50cyBGbG9hdGluZ0NvbnRleHQ6OmNvbnN0cmFpbnRzKExheW91dFVuaXQgY2FuZGlkYXRlVG8K
IAogdm9pZCBGbG9hdGluZ0NvbnRleHQ6OmFwcGVuZChjb25zdCBCb3gmIGZsb2F0Qm94KQogewot
ICAgIGF1dG8gYWJzb2x1dGVEaXNwbGF5Qm94ID0gRGlzcGxheTo6Qm94KGZvcm1hdHRpbmdDb250
ZXh0KCkuZ2VvbWV0cnlGb3JCb3goZmxvYXRCb3gpKTsKKyAgICBhdXRvIGFic29sdXRlRGlzcGxh
eUJveCA9IEdlb21ldHJ5KGZvcm1hdHRpbmdDb250ZXh0KCkuZ2VvbWV0cnlGb3JCb3goZmxvYXRC
b3gpKTsKICAgICBhYnNvbHV0ZURpc3BsYXlCb3guc2V0VG9wTGVmdChtYXBUb3BMZWZ0VG9GbG9h
dGluZ1N0YXRlUm9vdChmbG9hdEJveCkpOwogICAgIGZsb2F0aW5nU3RhdGUoKS5hcHBlbmQoRmxv
YXRpbmdTdGF0ZTo6RmxvYXRJdGVtIHsgZmxvYXRCb3gsIGFic29sdXRlRGlzcGxheUJveCB9KTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbG9hdHMvRmxvYXRpbmdTdGF0
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0aW5nU3RhdGUuY3BwCmlu
ZGV4IDVhN2ZkMTlkMDYwMDMwNjkyYjZiYzRiN2Y2ZDIxMDkzNWYyZTQ4ZDMuLjNlNjNjMmY3NjU5
YjI0YWJmZjQ3ZGJjODJkYzI2MGQzOGZhODFlN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mbG9hdHMvRmxvYXRpbmdTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zsb2F0cy9GbG9hdGluZ1N0YXRlLmNwcApAQCAtNDAsMTQgKzQwLDE0IEBAIG5hbWVzcGFj
ZSBMYXlvdXQgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoRmxvYXRpbmdTdGF0ZSk7
CiAKLUZsb2F0aW5nU3RhdGU6OkZsb2F0SXRlbTo6RmxvYXRJdGVtKGNvbnN0IEJveCYgbGF5b3V0
Qm94LCBEaXNwbGF5OjpCb3ggYWJzb2x1dGVEaXNwbGF5Qm94KQorRmxvYXRpbmdTdGF0ZTo6Rmxv
YXRJdGVtOjpGbG9hdEl0ZW0oY29uc3QgQm94JiBsYXlvdXRCb3gsIEdlb21ldHJ5IGFic29sdXRl
RGlzcGxheUJveCkKICAgICA6IG1fbGF5b3V0Qm94KG1ha2VXZWFrUHRyKGxheW91dEJveCkpCiAg
ICAgLCBtX3Bvc2l0aW9uKGxheW91dEJveC5pc0xlZnRGbG9hdGluZ1Bvc2l0aW9uZWQoKSA/IFBv
c2l0aW9uOjpMZWZ0IDogUG9zaXRpb246OlJpZ2h0KQogICAgICwgbV9hYnNvbHV0ZURpc3BsYXlC
b3goYWJzb2x1dGVEaXNwbGF5Qm94KQogewogfQogCi1GbG9hdGluZ1N0YXRlOjpGbG9hdEl0ZW06
OkZsb2F0SXRlbShQb3NpdGlvbiBwb3NpdGlvbiwgRGlzcGxheTo6Qm94IGFic29sdXRlRGlzcGxh
eUJveCkKK0Zsb2F0aW5nU3RhdGU6OkZsb2F0SXRlbTo6RmxvYXRJdGVtKFBvc2l0aW9uIHBvc2l0
aW9uLCBHZW9tZXRyeSBhYnNvbHV0ZURpc3BsYXlCb3gpCiAgICAgOiBtX3Bvc2l0aW9uKHBvc2l0
aW9uKQogICAgICwgbV9hYnNvbHV0ZURpc3BsYXlCb3goYWJzb2x1dGVEaXNwbGF5Qm94KQogewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zsb2F0cy9GbG9hdGluZ1N0YXRlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRzL0Zsb2F0aW5nU3RhdGUuaAppbmRleCA3YmEx
ZmRlNDg1MTQxNmRkN2ZjMWFmYzMxMzA5OTQ1MTE2OTE0YjgxLi4xZDgxMzUzMDI2MmFkZmY3OTg3
YmFmMThmNTQxZDc2N2FjMGExYWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
ZmxvYXRzL0Zsb2F0aW5nU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxvYXRz
L0Zsb2F0aW5nU3RhdGUuaApAQCAtMjcsMjMgKzI3LDIxIEBACiAKICNpZiBFTkFCTEUoTEFZT1VU
X0ZPUk1BVFRJTkdfQ09OVEVYVCkKIAotI2luY2x1ZGUgIkRpc3BsYXlCb3guaCIKICNpbmNsdWRl
ICJMYXlvdXRDb250YWluZXJCb3guaCIKKyNpbmNsdWRlICJMYXlvdXRHZW9tZXRyeS5oIgogI2lu
Y2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8
d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1uYW1lc3BhY2UgRGlzcGxh
eSB7Ci1jbGFzcyBCb3g7Ci19Ci0KIG5hbWVzcGFjZSBMYXlvdXQgewogCiBjbGFzcyBCb3g7CiBj
bGFzcyBGbG9hdGluZ0NvbnRleHQ7CitjbGFzcyBHZW9tZXRyeTsKIGNsYXNzIExheW91dFN0YXRl
OworY2xhc3MgUmVjdDsKIAogLy8gRmxvYXRpbmdTdGF0ZSBob2xkcyB0aGUgZmxvYXRpbmcgYm94
ZXMgcGVyIGZvcm1hdHRpbmcgY29udGV4dC4KIGNsYXNzIEZsb2F0aW5nU3RhdGUgOiBwdWJsaWMg
UmVmQ291bnRlZDxGbG9hdGluZ1N0YXRlPiB7CkBAIC02MCwxNyArNTgsMTcgQEAgcHVibGljOgog
CiAgICAgY2xhc3MgRmxvYXRJdGVtIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEZsb2F0SXRlbShj
b25zdCBCb3gmLCBEaXNwbGF5OjpCb3ggYWJzb2x1dGVEaXNwbGF5Qm94KTsKKyAgICAgICAgRmxv
YXRJdGVtKGNvbnN0IEJveCYsIEdlb21ldHJ5IGFic29sdXRlRGlzcGxheUJveCk7CiAKICAgICAg
ICAgLy8gRklYTUU6IFRoaXMgYyd0b3IgaXMgb25seSB1c2VkIGJ5IHRoZSByZW5kZXIgdHJlZSBp
bnRlZ2F0aW9uIGNvZGVwYXRoLgogICAgICAgICBlbnVtIGNsYXNzIFBvc2l0aW9uIHsgTGVmdCwg
UmlnaHQgfTsKLSAgICAgICAgRmxvYXRJdGVtKFBvc2l0aW9uLCBEaXNwbGF5OjpCb3ggYWJzb2x1
dGVEaXNwbGF5Qm94KTsKKyAgICAgICAgRmxvYXRJdGVtKFBvc2l0aW9uLCBHZW9tZXRyeSBhYnNv
bHV0ZURpc3BsYXlCb3gpOwogCiAgICAgICAgIGJvb2wgaXNMZWZ0UG9zaXRpb25lZCgpIGNvbnN0
IHsgcmV0dXJuIG1fcG9zaXRpb24gPT0gUG9zaXRpb246OkxlZnQ7IH0KICAgICAgICAgYm9vbCBp
c0luRm9ybWF0dGluZ0NvbnRleHRPZihjb25zdCBDb250YWluZXJCb3gmIGZvcm1hdHRpbmdDb250
ZXh0Um9vdCkgY29uc3QgeyByZXR1cm4gbV9sYXlvdXRCb3gtPmlzSW5Gb3JtYXR0aW5nQ29udGV4
dE9mKGZvcm1hdHRpbmdDb250ZXh0Um9vdCk7IH0KIAotICAgICAgICBEaXNwbGF5OjpSZWN0IHJl
Y3RXaXRoTWFyZ2luKCkgY29uc3QgeyByZXR1cm4gbV9hYnNvbHV0ZURpc3BsYXlCb3gucmVjdFdp
dGhNYXJnaW4oKTsgfQotICAgICAgICBEaXNwbGF5OjpCb3g6Okhvcml6b250YWxNYXJnaW4gaG9y
aXpvbnRhbE1hcmdpbigpIGNvbnN0IHsgcmV0dXJuIG1fYWJzb2x1dGVEaXNwbGF5Qm94Lmhvcml6
b250YWxNYXJnaW4oKTsgfQorICAgICAgICBSZWN0IHJlY3RXaXRoTWFyZ2luKCkgY29uc3QgeyBy
ZXR1cm4gbV9hYnNvbHV0ZURpc3BsYXlCb3gucmVjdFdpdGhNYXJnaW4oKTsgfQorICAgICAgICBH
ZW9tZXRyeTo6SG9yaXpvbnRhbE1hcmdpbiBob3Jpem9udGFsTWFyZ2luKCkgY29uc3QgeyByZXR1
cm4gbV9hYnNvbHV0ZURpc3BsYXlCb3guaG9yaXpvbnRhbE1hcmdpbigpOyB9CiAgICAgICAgIFBv
c2l0aW9uSW5Db250ZXh0Um9vdCBib3R0b20oKSBjb25zdCB7IHJldHVybiB7IG1fYWJzb2x1dGVE
aXNwbGF5Qm94LmJvdHRvbSgpIH07IH0KIAogI2lmIEFTU0VSVF9FTkFCTEVECkBAIC03OSw3ICs3
Nyw3IEBAIHB1YmxpYzoKICAgICBwcml2YXRlOgogICAgICAgICBXZWFrUHRyPGNvbnN0IEJveD4g
bV9sYXlvdXRCb3g7CiAgICAgICAgIFBvc2l0aW9uIG1fcG9zaXRpb247Ci0gICAgICAgIERpc3Bs
YXk6OkJveCBtX2Fic29sdXRlRGlzcGxheUJveDsKKyAgICAgICAgR2VvbWV0cnkgbV9hYnNvbHV0
ZURpc3BsYXlCb3g7CiAgICAgfTsKICAgICB1c2luZyBGbG9hdExpc3QgPSBWZWN0b3I8RmxvYXRJ
dGVtPjsKICAgICBjb25zdCBGbG9hdExpc3QmIGZsb2F0cygpIGNvbnN0IHsgcmV0dXJuIG1fZmxv
YXRzOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGlu
Zy9JbmxpbmVMaW5lQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGlu
Zy9JbmxpbmVMaW5lQm94LmgKaW5kZXggOTdmODRhNTUxNTkwMWE0ZDQ5MTgxNDFjZTQ0YjI1ZDcw
ZGIwMmU4OS4uZmM3NWZlMWY0MmJjZTg1OTBmODZiZDg5OTUxZGU1MWY1ZjNlY2QzMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJv
eC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxp
bmVCb3guaApAQCAtMjcsOSArMjcsOSBAQAogCiAjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5H
X0NPTlRFWFQpCiAKLSNpbmNsdWRlICJEaXNwbGF5Qm94LmgiCiAjaW5jbHVkZSAiRGlzcGxheUlu
bGluZVJlY3QuaCIKICNpbmNsdWRlICJJbmxpbmVMaW5lLmgiCisjaW5jbHVkZSAiTGF5b3V0R2Vv
bWV0cnkuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0
Zi9XZWFrUHRyLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVm
b3JtYXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmNwcAppbmRleCA4MThmODI3MjEwMmY4
YWIwYTE3YTU2ODhlYmQ1NjAzYWI0OWZiYjJiLi5hMTUwODUwNThiN2QwNDE0ZGFmZGU5MjRiNmE1
ZGVhZjc4OTBhMDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9y
bWF0dGluZy9JbmxpbmVMaW5lQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIuY3BwCkBAIC0yOCwxMCArMjgsMTAg
QEAKIAogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQogCi0jaW5jbHVkZSAi
RGlzcGxheUJveC5oIgogI2luY2x1ZGUgIkZsb2F0aW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIklu
bGluZUZvcm1hdHRpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiTGF5b3V0Qm94LmgiCisjaW5jbHVk
ZSAiTGF5b3V0R2VvbWV0cnkuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgi
CiAjaW5jbHVkZSAiVGV4dFV0aWwuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNw
cAppbmRleCBkZjUwMjY3ODA1OTE0ZjJjMzI3ODFlYmJkZjljNDYzZWZlNDAzZTkyLi43N2ExZGMy
ZjAxYjZlOTZlMjdlMDlhNGMxMDc1ZmU3ODQ0YThkNmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25M
aW5lTGF5b3V0LmNwcApAQCAtMjgsNyArMjgsNiBAQAogCiAjaWYgRU5BQkxFKExBWU9VVF9GT1JN
QVRUSU5HX0NPTlRFWFQpCiAKLSNpbmNsdWRlICJEaXNwbGF5Qm94LmgiCiAjaW5jbHVkZSAiRXZl
bnRSZWdpb24uaCIKICNpbmNsdWRlICJGbG9hdGluZ1N0YXRlLmgiCiAjaW5jbHVkZSAiSGl0VGVz
dExvY2F0aW9uLmgiCkBAIC0zNyw2ICszNiw3IEBACiAjaW5jbHVkZSAiSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQuaCIKICNpbmNsdWRlICJJbmxpbmVGb3JtYXR0aW5nU3RhdGUuaCIKICNpbmNsdWRl
ICJJbnZhbGlkYXRpb25TdGF0ZS5oIgorI2luY2x1ZGUgIkxheW91dEdlb21ldHJ5LmgiCiAjaW5j
bHVkZSAiTGF5b3V0VHJlZUJ1aWxkZXIuaCIKICNpbmNsdWRlICJQYWludEluZm8uaCIKICNpbmNs
dWRlICJSZW5kZXJCbG9ja0Zsb3cuaCIKQEAgLTEzOCw3ICsxMzgsNyBAQCB2b2lkIExpbmVMYXlv
dXQ6OnByZXBhcmVGbG9hdGluZ1N0YXRlKCkKICAgICAgICAgYXV0byBwb3NpdGlvbiA9IGZsb2F0
aW5nT2JqZWN0LT50eXBlKCkgPT0gRmxvYXRpbmdPYmplY3Q6OkZsb2F0UmlnaHQKICAgICAgICAg
ICAgID8gTGF5b3V0OjpGbG9hdGluZ1N0YXRlOjpGbG9hdEl0ZW06OlBvc2l0aW9uOjpSaWdodAog
ICAgICAgICAgICAgOiBMYXlvdXQ6OkZsb2F0aW5nU3RhdGU6OkZsb2F0SXRlbTo6UG9zaXRpb246
OkxlZnQ7Ci0gICAgICAgIGF1dG8gYm94ID0gRGlzcGxheTo6Qm94IHsgfTsKKyAgICAgICAgYXV0
byBib3ggPSBMYXlvdXQ6Okdlb21ldHJ5IHsgfTsKICAgICAgICAgLy8gRklYTUU6IFdlIGFyZSBm
bG9vcmluZyBoZXJlIGZvciBsZWdhY3kgY29tcGF0aWJpbGl0eS4KICAgICAgICAgLy8gICAgICAg
IFNlZSBGbG9hdGluZ09iamVjdHM6OmludGVydmFsRm9yRmxvYXRpbmdPYmplY3QuCiAgICAgICAg
IGF1dG8geSA9IHJlY3QueSgpLmZsb29yKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xh
eW91dHRyZWUvTGF5b3V0Qm94LmNwcAppbmRleCBiYzNjMmFiNmRhZDg4ZmNkYTFlM2M1ZTZhMGUx
NjU5MjUxNjc4YTIwLi5lNDM2M2FjZGQxNTIxYTMwNTI5OTc5OTQzNjE2MjljZDJkMjBhYTk5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5jcHAKQEAg
LTI4LDggKzI4LDggQEAKIAogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQog
Ci0jaW5jbHVkZSAiRGlzcGxheUJveC5oIgogI2luY2x1ZGUgIkxheW91dENvbnRhaW5lckJveC5o
IgorI2luY2x1ZGUgIkxheW91dEdlb21ldHJ5LmgiCiAjaW5jbHVkZSAiTGF5b3V0SW5pdGlhbENv
bnRhaW5pbmdCbG9jay5oIgogI2luY2x1ZGUgIkxheW91dFBoYXNlLmgiCiAjaW5jbHVkZSAiTGF5
b3V0U3RhdGUuaCIKQEAgLTQ0NCw3ICs0NDQsNyBAQCBPcHRpb25hbDxMYXlvdXRVbml0PiBCb3g6
OmNvbHVtbldpZHRoKCkgY29uc3QKICAgICByZXR1cm4gcmFyZURhdGEoKS5jb2x1bW5XaWR0aDsK
IH0KIAotdm9pZCBCb3g6OnNldENhY2hlZERpc3BsYXlCb3hGb3JMYXlvdXRTdGF0ZShMYXlvdXRT
dGF0ZSYgbGF5b3V0U3RhdGUsIHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5OjpCb3g+IGJveCkgY29u
c3QKK3ZvaWQgQm94OjpzZXRDYWNoZWREaXNwbGF5Qm94Rm9yTGF5b3V0U3RhdGUoTGF5b3V0U3Rh
dGUmIGxheW91dFN0YXRlLCBzdGQ6OnVuaXF1ZV9wdHI8R2VvbWV0cnk+IGJveCkgY29uc3QKIHsK
ICAgICBBU1NFUlQoIW1fY2FjaGVkTGF5b3V0U3RhdGUpOwogICAgIG1fY2FjaGVkTGF5b3V0U3Rh
dGUgPSBtYWtlV2Vha1B0cihsYXlvdXRTdGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9s
YXlvdXR0cmVlL0xheW91dEJveC5oCmluZGV4IGZlZGZhZWRlNmE2ZmNlMWYwZmU2MGFiNjUwMGJh
MmVkNmZjYzUzMzQuLjIxNGE4Y2U3NGYyYzcyYTg5ZjIzZDdjMmE1NWQ1ZjQwYjhlMzZiNTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5oCkBAIC0zNCwx
MyArMzQsMTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1uYW1lc3BhY2UgRGlzcGxheSB7
Ci1jbGFzcyBCb3g7Ci19Ci0KIG5hbWVzcGFjZSBMYXlvdXQgewogCiBjbGFzcyBDb250YWluZXJC
b3g7CitjbGFzcyBHZW9tZXRyeTsKIGNsYXNzIEluaXRpYWxDb250YWluaW5nQmxvY2s7CiBjbGFz
cyBMYXlvdXRTdGF0ZTsKIGNsYXNzIFRyZWVCdWlsZGVyOwpAQCAtMTY5LDggKzE2Niw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldElzQW5vbnltb3VzKCkgeyBtX2lzQW5vbnltb3VzID0gdHJ1ZTsg
fQogCiAgICAgYm9vbCBjYW5DYWNoZUZvckxheW91dFN0YXRlKGNvbnN0IExheW91dFN0YXRlJikg
Y29uc3Q7Ci0gICAgRGlzcGxheTo6Qm94KiBjYWNoZWREaXNwbGF5Qm94Rm9yTGF5b3V0U3RhdGUo
Y29uc3QgTGF5b3V0U3RhdGUmKSBjb25zdDsKLSAgICB2b2lkIHNldENhY2hlZERpc3BsYXlCb3hG
b3JMYXlvdXRTdGF0ZShMYXlvdXRTdGF0ZSYsIHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5OjpCb3g+
KSBjb25zdDsKKyAgICBHZW9tZXRyeSogY2FjaGVkRGlzcGxheUJveEZvckxheW91dFN0YXRlKGNv
bnN0IExheW91dFN0YXRlJikgY29uc3Q7CisgICAgdm9pZCBzZXRDYWNoZWREaXNwbGF5Qm94Rm9y
TGF5b3V0U3RhdGUoTGF5b3V0U3RhdGUmLCBzdGQ6OnVuaXF1ZV9wdHI8R2VvbWV0cnk+KSBjb25z
dDsKIAogcHJvdGVjdGVkOgogICAgIEJveChPcHRpb25hbDxFbGVtZW50QXR0cmlidXRlcz4sIFJl
bmRlclN0eWxlJiYsIE9wdGlvblNldDxCYXNlVHlwZUZsYWc+KTsKQEAgLTIwNiw3ICsyMDMsNyBA
QCBwcml2YXRlOgogICAgIAogICAgIC8vIEZpcnN0IExheW91dFN0YXRlIGdldHMgYSBkaXJlY3Qg
Y2FjaGUuCiAgICAgbXV0YWJsZSBXZWFrUHRyPExheW91dFN0YXRlPiBtX2NhY2hlZExheW91dFN0
YXRlOwotICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPERpc3BsYXk6OkJveD4gbV9jYWNoZWRE
aXNwbGF5Qm94Rm9yTGF5b3V0U3RhdGU7CisgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8R2Vv
bWV0cnk+IG1fY2FjaGVkRGlzcGxheUJveEZvckxheW91dFN0YXRlOwogCiAgICAgdW5zaWduZWQg
bV9iYXNlVHlwZUZsYWdzIDogNjsgLy8gT3B0aW9uU2V0PEJhc2VUeXBlRmxhZz4KICAgICBib29s
IG1faGFzUmFyZURhdGEgOiAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xh
eW91dHRyZWUvTGF5b3V0R2VvbWV0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91
dHRyZWUvTGF5b3V0R2VvbWV0cnkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMxNTkzY2E1MDNhMjNlOWRmMzgz
MGQyYWZkNDk0OWNhZmM4NzNmY2UKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRHZW9tZXRyeS5jcHAKQEAgLTAsMCArMSwxMTAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTGF5b3V0R2VvbWV0cnku
aCIKKworI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQorCisjaW5jbHVkZSA8
d3RmL0lzb01hbGxvY0lubGluZXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNl
IExheW91dCB7CisKK1dURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChHZW9tZXRyeSk7CisKK0dl
b21ldHJ5OjpHZW9tZXRyeShjb25zdCBHZW9tZXRyeSYgb3RoZXIpCisgICAgOiBtX3RvcExlZnQo
b3RoZXIubV90b3BMZWZ0KQorICAgICwgbV9jb250ZW50V2lkdGgob3RoZXIubV9jb250ZW50V2lk
dGgpCisgICAgLCBtX2NvbnRlbnRIZWlnaHQob3RoZXIubV9jb250ZW50SGVpZ2h0KQorICAgICwg
bV9ob3Jpem9udGFsTWFyZ2luKG90aGVyLm1faG9yaXpvbnRhbE1hcmdpbikKKyAgICAsIG1fdmVy
dGljYWxNYXJnaW4ob3RoZXIubV92ZXJ0aWNhbE1hcmdpbikKKyAgICAsIG1faGFzQ2xlYXJhbmNl
KG90aGVyLm1faGFzQ2xlYXJhbmNlKQorICAgICwgbV9ib3JkZXIob3RoZXIubV9ib3JkZXIpCisg
ICAgLCBtX3BhZGRpbmcob3RoZXIubV9wYWRkaW5nKQorI2lmIEFTU0VSVF9FTkFCTEVECisgICAg
LCBtX2hhc1ZhbGlkVG9wKG90aGVyLm1faGFzVmFsaWRUb3ApCisgICAgLCBtX2hhc1ZhbGlkTGVm
dChvdGhlci5tX2hhc1ZhbGlkTGVmdCkKKyAgICAsIG1faGFzVmFsaWRIb3Jpem9udGFsTWFyZ2lu
KG90aGVyLm1faGFzVmFsaWRIb3Jpem9udGFsTWFyZ2luKQorICAgICwgbV9oYXNWYWxpZFZlcnRp
Y2FsTWFyZ2luKG90aGVyLm1faGFzVmFsaWRWZXJ0aWNhbE1hcmdpbikKKyAgICAsIG1faGFzVmFs
aWRCb3JkZXIob3RoZXIubV9oYXNWYWxpZEJvcmRlcikKKyAgICAsIG1faGFzVmFsaWRQYWRkaW5n
KG90aGVyLm1faGFzVmFsaWRQYWRkaW5nKQorICAgICwgbV9oYXNWYWxpZENvbnRlbnRIZWlnaHQo
b3RoZXIubV9oYXNWYWxpZENvbnRlbnRIZWlnaHQpCisgICAgLCBtX2hhc1ZhbGlkQ29udGVudFdp
ZHRoKG90aGVyLm1faGFzVmFsaWRDb250ZW50V2lkdGgpCisgICAgLCBtX2hhc1ByZWNvbXB1dGVk
TWFyZ2luQmVmb3JlKG90aGVyLm1faGFzUHJlY29tcHV0ZWRNYXJnaW5CZWZvcmUpCisjZW5kaWYK
K3sKK30KKworR2VvbWV0cnk6On5HZW9tZXRyeSgpCit7Cit9CisKK1JlY3QgR2VvbWV0cnk6Om1h
cmdpbkJveCgpIGNvbnN0Cit7CisgICAgYXV0byBib3JkZXJCb3ggPSB0aGlzLT5ib3JkZXJCb3go
KTsKKworICAgIFJlY3QgbWFyZ2luQm94OworICAgIG1hcmdpbkJveC5zZXRUb3AoYm9yZGVyQm94
LnRvcCgpIC0gbWFyZ2luQmVmb3JlKCkpOworICAgIG1hcmdpbkJveC5zZXRMZWZ0KGJvcmRlckJv
eC5sZWZ0KCkgLSBtYXJnaW5TdGFydCgpKTsKKyAgICBtYXJnaW5Cb3guc2V0SGVpZ2h0KGJvcmRl
ckJveC5oZWlnaHQoKSArIG1hcmdpbkJlZm9yZSgpICsgbWFyZ2luQWZ0ZXIoKSk7CisgICAgbWFy
Z2luQm94LnNldFdpZHRoKGJvcmRlckJveC53aWR0aCgpICsgbWFyZ2luU3RhcnQoKSArIG1hcmdp
bkVuZCgpKTsKKyAgICByZXR1cm4gbWFyZ2luQm94OworfQorCitSZWN0IEdlb21ldHJ5Ojpib3Jk
ZXJCb3goKSBjb25zdAoreworICAgIFJlY3QgYm9yZGVyQm94OworICAgIGJvcmRlckJveC5zZXRU
b3BMZWZ0KHsgfSk7CisgICAgYm9yZGVyQm94LnNldFNpemUoeyB3aWR0aCgpLCBoZWlnaHQoKSB9
KTsKKyAgICByZXR1cm4gYm9yZGVyQm94OworfQorCitSZWN0IEdlb21ldHJ5OjpwYWRkaW5nQm94
KCkgY29uc3QKK3sKKyAgICBhdXRvIGJvcmRlckJveCA9IHRoaXMtPmJvcmRlckJveCgpOworCisg
ICAgUmVjdCBwYWRkaW5nQm94OworICAgIHBhZGRpbmdCb3guc2V0VG9wKGJvcmRlckJveC50b3Ao
KSArIGJvcmRlclRvcCgpKTsKKyAgICBwYWRkaW5nQm94LnNldExlZnQoYm9yZGVyQm94LmxlZnQo
KSArIGJvcmRlckxlZnQoKSk7CisgICAgcGFkZGluZ0JveC5zZXRIZWlnaHQoYm9yZGVyQm94LmJv
dHRvbSgpIC0gYm9yZGVyVG9wKCkgLSBib3JkZXJCb3R0b20oKSk7CisgICAgcGFkZGluZ0JveC5z
ZXRXaWR0aChib3JkZXJCb3gud2lkdGgoKSAtIGJvcmRlckxlZnQoKSAtIGJvcmRlclJpZ2h0KCkp
OworICAgIHJldHVybiBwYWRkaW5nQm94OworfQorCitSZWN0IEdlb21ldHJ5Ojpjb250ZW50Qm94
KCkgY29uc3QKK3sKKyAgICBSZWN0IGNvbnRlbnRCb3g7CisgICAgY29udGVudEJveC5zZXRUb3Ao
Y29udGVudEJveFRvcCgpKTsKKyAgICBjb250ZW50Qm94LnNldExlZnQoY29udGVudEJveExlZnQo
KSk7CisgICAgY29udGVudEJveC5zZXRXaWR0aChjb250ZW50Qm94V2lkdGgoKSk7CisgICAgY29u
dGVudEJveC5zZXRIZWlnaHQoY29udGVudEJveEhlaWdodCgpKTsKKyAgICByZXR1cm4gY29udGVu
dEJveDsKK30KKworfQorfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9sYXlvdXR0cmVlL0xheW91dEdlb21ldHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
bGF5b3V0dHJlZS9MYXlvdXRHZW9tZXRyeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEyZDY0ZGEyMzU5YmRhM2E4
MDc4MDRhMTk5NGViNzljMzY4MjEwN2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRHZW9tZXRyeS5oCkBAIC0wLDAgKzEsNjg4IEBACisv
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
Q09OVEVYVCkKKworI2luY2x1ZGUgIkRpc3BsYXlSZWN0LmgiCisjaW5jbHVkZSAiTGF5b3V0VW5p
dHMuaCIKKyNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
K25hbWVzcGFjZSBMYXlvdXQgeworCitjbGFzcyBSZWN0IHsKK3B1YmxpYzoKKyAgICBSZWN0KCkg
PSBkZWZhdWx0OworICAgIFJlY3QoTGF5b3V0VW5pdCB0b3AsIExheW91dFVuaXQgbGVmdCwgTGF5
b3V0VW5pdCB3aWR0aCwgTGF5b3V0VW5pdCBoZWlnaHQpOworICAgIFJlY3QoTGF5b3V0UG9pbnQg
dG9wTGVmdCwgTGF5b3V0VW5pdCB3aWR0aCwgTGF5b3V0VW5pdCBoZWlnaHQpOworICAgIFJlY3Qo
Y29uc3QgTGF5b3V0UG9pbnQmIHRvcExlZnQsIGNvbnN0IExheW91dFNpemUmKTsKKyAgICAKKyAg
ICBMYXlvdXRVbml0IHRvcCgpIGNvbnN0OworICAgIExheW91dFVuaXQgbGVmdCgpIGNvbnN0Owor
ICAgIExheW91dFBvaW50IHRvcExlZnQoKSBjb25zdDsKKworICAgIExheW91dFVuaXQgYm90dG9t
KCkgY29uc3Q7CisgICAgTGF5b3V0VW5pdCByaWdodCgpIGNvbnN0OworICAgIExheW91dFBvaW50
IGJvdHRvbVJpZ2h0KCkgY29uc3Q7CisKKyAgICBMYXlvdXRVbml0IHdpZHRoKCkgY29uc3Q7Cisg
ICAgTGF5b3V0VW5pdCBoZWlnaHQoKSBjb25zdDsKKyAgICBMYXlvdXRTaXplIHNpemUoKSBjb25z
dDsKKworICAgIHZvaWQgc2V0VG9wKExheW91dFVuaXQpOworICAgIHZvaWQgc2V0TGVmdChMYXlv
dXRVbml0KTsKKyAgICB2b2lkIHNldFRvcExlZnQoY29uc3QgTGF5b3V0UG9pbnQmKTsKKyAgICB2
b2lkIHNldFdpZHRoKExheW91dFVuaXQpOworICAgIHZvaWQgc2V0SGVpZ2h0KExheW91dFVuaXQp
OworICAgIHZvaWQgc2V0U2l6ZShjb25zdCBMYXlvdXRTaXplJik7CisKKyAgICB2b2lkIHNoaWZ0
TGVmdFRvKExheW91dFVuaXQpOworICAgIHZvaWQgc2hpZnRSaWdodFRvKExheW91dFVuaXQpOwor
ICAgIHZvaWQgc2hpZnRUb3BUbyhMYXlvdXRVbml0KTsKKyAgICB2b2lkIHNoaWZ0Qm90dG9tVG8o
TGF5b3V0VW5pdCk7CisKKyAgICB2b2lkIG1vdmVIb3Jpem9udGFsbHkoTGF5b3V0VW5pdCk7Cisg
ICAgdm9pZCBtb3ZlVmVydGljYWxseShMYXlvdXRVbml0KTsKKworICAgIHZvaWQgZXhwYW5kKE9w
dGlvbmFsPExheW91dFVuaXQ+LCBPcHRpb25hbDxMYXlvdXRVbml0Pik7CisgICAgdm9pZCBleHBh
bmRIb3Jpem9udGFsbHkoTGF5b3V0VW5pdCBkZWx0YSkgeyBleHBhbmQoZGVsdGEsIHsgfSk7IH0K
KyAgICB2b2lkIGV4cGFuZFZlcnRpY2FsbHkoTGF5b3V0VW5pdCBkZWx0YSkgeyBleHBhbmQoeyB9
LCBkZWx0YSk7IH0KKyAgICBib29sIGludGVyc2VjdHMoY29uc3QgUmVjdCYgcmVjdCkgY29uc3Qg
eyByZXR1cm4gbV9yZWN0LmludGVyc2VjdHMocmVjdCk7IH0KKworICAgIFJlY3QgY2xvbmUoKSBj
b25zdDsKKyAgICBvcGVyYXRvciBMYXlvdXRSZWN0KCkgY29uc3Q7CisKK3ByaXZhdGU6CisjaWYg
QVNTRVJUX0VOQUJMRUQKKyAgICB2b2lkIGludmFsaWRhdGVUb3AoKSB7IG1faGFzVmFsaWRUb3Ag
PSBmYWxzZTsgfQorICAgIHZvaWQgaW52YWxpZGF0ZUxlZnQoKSB7IG1faGFzVmFsaWRMZWZ0ID0g
ZmFsc2U7IH0KKyAgICB2b2lkIGludmFsaWRhdGVXaWR0aCgpIHsgbV9oYXNWYWxpZFdpZHRoID0g
ZmFsc2U7IH0KKyAgICB2b2lkIGludmFsaWRhdGVIZWlnaHQoKSB7IG1faGFzVmFsaWRIZWlnaHQg
PSBmYWxzZTsgfQorICAgIHZvaWQgaW52YWxpZGF0ZVBvc2l0aW9uKCk7CisKKyAgICBib29sIGhh
c1ZhbGlkUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX2hhc1ZhbGlkVG9wICYmIG1faGFzVmFs
aWRMZWZ0OyB9CisgICAgYm9vbCBoYXNWYWxpZFNpemUoKSBjb25zdCB7IHJldHVybiBtX2hhc1Zh
bGlkV2lkdGggJiYgbV9oYXNWYWxpZEhlaWdodDsgfQorICAgIGJvb2wgaGFzVmFsaWRHZW9tZXRy
eSgpIGNvbnN0IHsgcmV0dXJuIGhhc1ZhbGlkUG9zaXRpb24oKSAmJiBoYXNWYWxpZFNpemUoKTsg
fQorCisgICAgdm9pZCBzZXRIYXNWYWxpZFBvc2l0aW9uKCk7CisgICAgdm9pZCBzZXRIYXNWYWxp
ZFNpemUoKTsKKworICAgIGJvb2wgbV9oYXNWYWxpZFRvcCB7IGZhbHNlIH07CisgICAgYm9vbCBt
X2hhc1ZhbGlkTGVmdCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2hhc1ZhbGlkV2lkdGggeyBmYWxz
ZSB9OworICAgIGJvb2wgbV9oYXNWYWxpZEhlaWdodCB7IGZhbHNlIH07CisjZW5kaWYgLy8gQVNT
RVJUX0VOQUJMRUQKKyAgICBMYXlvdXRSZWN0IG1fcmVjdDsKK307CisKK2lubGluZSBSZWN0OjpS
ZWN0KExheW91dFVuaXQgdG9wLCBMYXlvdXRVbml0IGxlZnQsIExheW91dFVuaXQgd2lkdGgsIExh
eW91dFVuaXQgaGVpZ2h0KQorICAgIDogbV9yZWN0KGxlZnQsIHRvcCwgd2lkdGgsIGhlaWdodCkK
K3sKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIG1faGFzVmFsaWRUb3AgPSB0cnVlOworICAgIG1f
aGFzVmFsaWRMZWZ0ID0gdHJ1ZTsKKyAgICBtX2hhc1ZhbGlkV2lkdGggPSB0cnVlOworICAgIG1f
aGFzVmFsaWRIZWlnaHQgPSB0cnVlOworI2VuZGlmCit9CisKK2lubGluZSBSZWN0OjpSZWN0KExh
eW91dFBvaW50IHRvcExlZnQsIExheW91dFVuaXQgd2lkdGgsIExheW91dFVuaXQgaGVpZ2h0KQor
ICAgIDogUmVjdCh0b3BMZWZ0LnkoKSwgdG9wTGVmdC54KCksIHdpZHRoLCBoZWlnaHQpCit7Cit9
CisKK2lubGluZSBSZWN0OjpSZWN0KGNvbnN0IExheW91dFBvaW50JiB0b3BMZWZ0LCBjb25zdCBM
YXlvdXRTaXplJiBzaXplKQorICAgIDogUmVjdCh0b3BMZWZ0LnkoKSwgdG9wTGVmdC54KCksIHNp
emUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSkKK3sKK30KKworI2lmIEFTU0VSVF9FTkFCTEVECitp
bmxpbmUgdm9pZCBSZWN0OjppbnZhbGlkYXRlUG9zaXRpb24oKQoreworICAgIGludmFsaWRhdGVU
b3AoKTsKKyAgICBpbnZhbGlkYXRlTGVmdCgpOworfQorCitpbmxpbmUgdm9pZCBSZWN0OjpzZXRI
YXNWYWxpZFBvc2l0aW9uKCkKK3sKKyAgICBtX2hhc1ZhbGlkVG9wID0gdHJ1ZTsKKyAgICBtX2hh
c1ZhbGlkTGVmdCA9IHRydWU7Cit9CisKK2lubGluZSB2b2lkIFJlY3Q6OnNldEhhc1ZhbGlkU2l6
ZSgpCit7CisgICAgbV9oYXNWYWxpZFdpZHRoID0gdHJ1ZTsKKyAgICBtX2hhc1ZhbGlkSGVpZ2h0
ID0gdHJ1ZTsKK30KKyNlbmRpZgorCitpbmxpbmUgTGF5b3V0VW5pdCBSZWN0Ojp0b3AoKSBjb25z
dAoreworICAgIEFTU0VSVChtX2hhc1ZhbGlkVG9wKTsKKyAgICByZXR1cm4gbV9yZWN0LnkoKTsK
K30KKworaW5saW5lIExheW91dFVuaXQgUmVjdDo6bGVmdCgpIGNvbnN0Cit7CisgICAgQVNTRVJU
KG1faGFzVmFsaWRMZWZ0KTsKKyAgICByZXR1cm4gbV9yZWN0LngoKTsKK30KKworaW5saW5lIExh
eW91dFVuaXQgUmVjdDo6Ym90dG9tKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9oYXNWYWxpZFRv
cCAmJiBtX2hhc1ZhbGlkSGVpZ2h0KTsKKyAgICByZXR1cm4gbV9yZWN0Lm1heFkoKTsKK30KKwor
aW5saW5lIExheW91dFVuaXQgUmVjdDo6cmlnaHQoKSBjb25zdAoreworICAgIEFTU0VSVChtX2hh
c1ZhbGlkTGVmdCAmJiBtX2hhc1ZhbGlkV2lkdGgpOworICAgIHJldHVybiBtX3JlY3QubWF4WCgp
OworfQorCitpbmxpbmUgTGF5b3V0UG9pbnQgUmVjdDo6dG9wTGVmdCgpIGNvbnN0Cit7CisgICAg
QVNTRVJUKGhhc1ZhbGlkUG9zaXRpb24oKSk7CisgICAgcmV0dXJuIG1fcmVjdC5taW5YTWluWUNv
cm5lcigpOworfQorCitpbmxpbmUgTGF5b3V0UG9pbnQgUmVjdDo6Ym90dG9tUmlnaHQoKSBjb25z
dAoreworICAgIEFTU0VSVChoYXNWYWxpZEdlb21ldHJ5KCkpOworICAgIHJldHVybiBtX3JlY3Qu
bWF4WE1heFlDb3JuZXIoKTsKK30KKworaW5saW5lIExheW91dFNpemUgUmVjdDo6c2l6ZSgpIGNv
bnN0Cit7CisgICAgQVNTRVJUKGhhc1ZhbGlkU2l6ZSgpKTsKKyAgICByZXR1cm4gbV9yZWN0LnNp
emUoKTsKK30KKworaW5saW5lIExheW91dFVuaXQgUmVjdDo6d2lkdGgoKSBjb25zdAoreworICAg
IEFTU0VSVChtX2hhc1ZhbGlkV2lkdGgpOworICAgIHJldHVybiBtX3JlY3Qud2lkdGgoKTsKK30K
KworaW5saW5lIExheW91dFVuaXQgUmVjdDo6aGVpZ2h0KCkgY29uc3QKK3sKKyAgICBBU1NFUlQo
bV9oYXNWYWxpZEhlaWdodCk7CisgICAgcmV0dXJuIG1fcmVjdC5oZWlnaHQoKTsKK30KKworaW5s
aW5lIHZvaWQgUmVjdDo6c2V0VG9wTGVmdChjb25zdCBMYXlvdXRQb2ludCYgdG9wTGVmdCkKK3sK
KyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIHNldEhhc1ZhbGlkUG9zaXRpb24oKTsKKyNlbmRpZgor
ICAgIG1fcmVjdC5zZXRMb2NhdGlvbih0b3BMZWZ0KTsKK30KKworaW5saW5lIHZvaWQgUmVjdDo6
c2V0VG9wKExheW91dFVuaXQgdG9wKQoreworI2lmIEFTU0VSVF9FTkFCTEVECisgICAgbV9oYXNW
YWxpZFRvcCA9IHRydWU7CisjZW5kaWYKKyAgICBtX3JlY3Quc2V0WSh0b3ApOworfQorCitpbmxp
bmUgdm9pZCBSZWN0OjpzZXRMZWZ0KExheW91dFVuaXQgbGVmdCkKK3sKKyNpZiBBU1NFUlRfRU5B
QkxFRAorICAgIG1faGFzVmFsaWRMZWZ0ID0gdHJ1ZTsKKyNlbmRpZgorICAgIG1fcmVjdC5zZXRY
KGxlZnQpOworfQorCitpbmxpbmUgdm9pZCBSZWN0OjpzZXRXaWR0aChMYXlvdXRVbml0IHdpZHRo
KQoreworI2lmIEFTU0VSVF9FTkFCTEVECisgICAgbV9oYXNWYWxpZFdpZHRoID0gdHJ1ZTsKKyNl
bmRpZgorICAgIG1fcmVjdC5zZXRXaWR0aCh3aWR0aCk7Cit9CisKK2lubGluZSB2b2lkIFJlY3Q6
OnNldEhlaWdodChMYXlvdXRVbml0IGhlaWdodCkKK3sKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAg
IG1faGFzVmFsaWRIZWlnaHQgPSB0cnVlOworI2VuZGlmCisgICAgbV9yZWN0LnNldEhlaWdodCho
ZWlnaHQpOworfQorCitpbmxpbmUgdm9pZCBSZWN0OjpzZXRTaXplKGNvbnN0IExheW91dFNpemUm
IHNpemUpCit7CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICBzZXRIYXNWYWxpZFNpemUoKTsKKyNl
bmRpZgorICAgIG1fcmVjdC5zZXRTaXplKHNpemUpOworfQorCitpbmxpbmUgdm9pZCBSZWN0Ojpz
aGlmdExlZnRUbyhMYXlvdXRVbml0IGxlZnQpCit7CisgICAgQVNTRVJUKG1faGFzVmFsaWRMZWZ0
KTsKKyAgICBtX3JlY3Quc2hpZnRYRWRnZVRvKGxlZnQpOworfQorCitpbmxpbmUgdm9pZCBSZWN0
OjpzaGlmdFJpZ2h0VG8oTGF5b3V0VW5pdCByaWdodCkKK3sKKyAgICBBU1NFUlQobV9oYXNWYWxp
ZExlZnQgJiYgbV9oYXNWYWxpZFdpZHRoKTsKKyAgICBtX3JlY3Quc2hpZnRNYXhYRWRnZVRvKHJp
Z2h0KTsKK30KKworaW5saW5lIHZvaWQgUmVjdDo6c2hpZnRUb3BUbyhMYXlvdXRVbml0IHRvcCkK
K3sKKyAgICBBU1NFUlQobV9oYXNWYWxpZFRvcCk7CisgICAgbV9yZWN0LnNoaWZ0WUVkZ2VUbyh0
b3ApOworfQorCitpbmxpbmUgdm9pZCBSZWN0OjpzaGlmdEJvdHRvbVRvKExheW91dFVuaXQgYm90
dG9tKQoreworICAgIEFTU0VSVChtX2hhc1ZhbGlkVG9wICYmIG1faGFzVmFsaWRIZWlnaHQpOwor
ICAgIG1fcmVjdC5zaGlmdE1heFlFZGdlVG8oYm90dG9tKTsKK30KKworaW5saW5lIHZvaWQgUmVj
dDo6bW92ZUhvcml6b250YWxseShMYXlvdXRVbml0IG9mZnNldCkKK3sKKyAgICBBU1NFUlQobV9o
YXNWYWxpZExlZnQpOworICAgIG1fcmVjdC5tb3ZlKExheW91dFNpemUgeyBvZmZzZXQsIDAgfSk7
Cit9CisKK2lubGluZSB2b2lkIFJlY3Q6Om1vdmVWZXJ0aWNhbGx5KExheW91dFVuaXQgb2Zmc2V0
KQoreworICAgIEFTU0VSVChtX2hhc1ZhbGlkVG9wKTsKKyAgICBtX3JlY3QubW92ZShMYXlvdXRT
aXplIHsgMCwgb2Zmc2V0IH0pOworfQorCitpbmxpbmUgdm9pZCBSZWN0OjpleHBhbmQoT3B0aW9u
YWw8TGF5b3V0VW5pdD4gd2lkdGgsIE9wdGlvbmFsPExheW91dFVuaXQ+IGhlaWdodCkKK3sKKyAg
ICBBU1NFUlQoIXdpZHRoIHx8IG1faGFzVmFsaWRXaWR0aCk7CisgICAgQVNTRVJUKCFoZWlnaHQg
fHwgbV9oYXNWYWxpZEhlaWdodCk7CisgICAgbV9yZWN0LmV4cGFuZCh3aWR0aC52YWx1ZU9yKDAp
LCBoZWlnaHQudmFsdWVPcigwKSk7Cit9CisKK2lubGluZSBSZWN0IFJlY3Q6OmNsb25lKCkgY29u
c3QKK3sKKyAgICBSZWN0IHJlY3Q7CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICByZWN0Lm1faGFz
VmFsaWRUb3AgPSBtX2hhc1ZhbGlkVG9wOworICAgIHJlY3QubV9oYXNWYWxpZExlZnQgPSBtX2hh
c1ZhbGlkTGVmdDsKKyAgICByZWN0Lm1faGFzVmFsaWRXaWR0aCA9IG1faGFzVmFsaWRXaWR0aDsK
KyAgICByZWN0Lm1faGFzVmFsaWRIZWlnaHQgID0gbV9oYXNWYWxpZEhlaWdodDsKKyNlbmRpZgor
ICAgIHJlY3QubV9yZWN0ID0gbV9yZWN0OworICAgIHJldHVybiByZWN0OworfQorCitpbmxpbmUg
UmVjdDo6b3BlcmF0b3IgTGF5b3V0UmVjdCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGhhc1ZhbGlk
R2VvbWV0cnkoKSk7CisgICAgcmV0dXJuIG1fcmVjdDsKK30KKworCitjbGFzcyBHZW9tZXRyeSB7
CisgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChHZW9tZXRyeSk7CitwdWJsaWM6CisgICAgR2Vv
bWV0cnkoY29uc3QgR2VvbWV0cnkmKTsKKyAgICBHZW9tZXRyeSgpID0gZGVmYXVsdDsKKyAgICB+
R2VvbWV0cnkoKTsKKworICAgIExheW91dFVuaXQgdG9wKCkgY29uc3Q7CisgICAgTGF5b3V0VW5p
dCBsZWZ0KCkgY29uc3Q7CisgICAgTGF5b3V0VW5pdCBib3R0b20oKSBjb25zdCB7IHJldHVybiB0
b3AoKSArIGhlaWdodCgpOyB9CisgICAgTGF5b3V0VW5pdCByaWdodCgpIGNvbnN0IHsgcmV0dXJu
IGxlZnQoKSArIHdpZHRoKCk7IH0KKworICAgIExheW91dFBvaW50IHRvcExlZnQoKSBjb25zdDsK
KyAgICBMYXlvdXRQb2ludCBib3R0b21SaWdodCgpIGNvbnN0IHsgcmV0dXJuIHsgcmlnaHQoKSwg
Ym90dG9tKCkgfTsgfQorCisgICAgTGF5b3V0U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4geyB3
aWR0aCgpLCBoZWlnaHQoKSB9OyB9CisgICAgTGF5b3V0VW5pdCB3aWR0aCgpIGNvbnN0IHsgcmV0
dXJuIGJvcmRlckxlZnQoKSArIHBhZGRpbmdCb3hXaWR0aCgpICsgYm9yZGVyUmlnaHQoKTsgfQor
ICAgIExheW91dFVuaXQgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gYm9yZGVyVG9wKCkgKyBwYWRk
aW5nQm94SGVpZ2h0KCkgKyBib3JkZXJCb3R0b20oKTsgfQorICAgIGJvb2wgaXNFbXB0eSgpIGNv
bnN0IHsgcmV0dXJuIHNpemUoKS5pc0VtcHR5KCk7IH0KKyAgICBSZWN0IHJlY3QoKSBjb25zdCB7
IHJldHVybiB7IHRvcCgpLCBsZWZ0KCksIHdpZHRoKCksIGhlaWdodCgpIH07IH0KKyAgICBSZWN0
IHJlY3RXaXRoTWFyZ2luKCkgY29uc3QgeyByZXR1cm4geyB0b3AoKSAtIG1hcmdpbkJlZm9yZSgp
LCBsZWZ0KCkgLSBtYXJnaW5TdGFydCgpLCBtYXJnaW5TdGFydCgpICsgd2lkdGgoKSArIG1hcmdp
bkVuZCgpLCBtYXJnaW5CZWZvcmUoKSArIGhlaWdodCgpICsgbWFyZ2luQWZ0ZXIoKSB9OyB9CisK
KyAgICBzdHJ1Y3QgVmVydGljYWxNYXJnaW4geworICAgICAgICBMYXlvdXRVbml0IGJlZm9yZTsK
KyAgICAgICAgTGF5b3V0VW5pdCBhZnRlcjsKKyAgICB9OworICAgIFZlcnRpY2FsTWFyZ2luIHZl
cnRpY2FsTWFyZ2luKCkgY29uc3Q7CisKKyAgICBzdHJ1Y3QgSG9yaXpvbnRhbE1hcmdpbiB7Cisg
ICAgICAgIExheW91dFVuaXQgc3RhcnQ7CisgICAgICAgIExheW91dFVuaXQgZW5kOworICAgIH07
CisgICAgSG9yaXpvbnRhbE1hcmdpbiBob3Jpem9udGFsTWFyZ2luKCkgY29uc3Q7CisgICAgTGF5
b3V0VW5pdCBtYXJnaW5CZWZvcmUoKSBjb25zdDsKKyAgICBMYXlvdXRVbml0IG1hcmdpblN0YXJ0
KCkgY29uc3Q7CisgICAgTGF5b3V0VW5pdCBtYXJnaW5BZnRlcigpIGNvbnN0OworICAgIExheW91
dFVuaXQgbWFyZ2luRW5kKCkgY29uc3Q7CisgICAgYm9vbCBoYXNDbGVhcmFuY2UoKSBjb25zdCB7
IHJldHVybiBtX2hhc0NsZWFyYW5jZTsgfQorCisgICAgTGF5b3V0VW5pdCBib3JkZXJUb3AoKSBj
b25zdDsKKyAgICBMYXlvdXRVbml0IGJvcmRlckxlZnQoKSBjb25zdDsKKyAgICBMYXlvdXRVbml0
IGJvcmRlckJvdHRvbSgpIGNvbnN0OworICAgIExheW91dFVuaXQgYm9yZGVyUmlnaHQoKSBjb25z
dDsKKyAgICBMYXlvdXRVbml0IHZlcnRpY2FsQm9yZGVyKCkgY29uc3QgeyByZXR1cm4gYm9yZGVy
VG9wKCkgKyBib3JkZXJCb3R0b20oKTsgfQorICAgIExheW91dFVuaXQgaG9yaXpvbnRhbEJvcmRl
cigpIGNvbnN0IHsgcmV0dXJuIGJvcmRlckxlZnQoKSArIGJvcmRlclJpZ2h0KCk7IH0KKworICAg
IE9wdGlvbmFsPExheW91dFVuaXQ+IHBhZGRpbmdUb3AoKSBjb25zdDsKKyAgICBPcHRpb25hbDxM
YXlvdXRVbml0PiBwYWRkaW5nTGVmdCgpIGNvbnN0OworICAgIE9wdGlvbmFsPExheW91dFVuaXQ+
IHBhZGRpbmdCb3R0b20oKSBjb25zdDsKKyAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBwYWRkaW5n
UmlnaHQoKSBjb25zdDsKKyAgICBPcHRpb25hbDxMYXlvdXRVbml0PiB2ZXJ0aWNhbFBhZGRpbmco
KSBjb25zdDsKKyAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBob3Jpem9udGFsUGFkZGluZygpIGNv
bnN0OworCisgICAgTGF5b3V0VW5pdCBjb250ZW50Qm94VG9wKCkgY29uc3QgeyByZXR1cm4gcGFk
ZGluZ0JveFRvcCgpICsgcGFkZGluZ1RvcCgpLnZhbHVlT3IoMCk7IH0KKyAgICBMYXlvdXRVbml0
IGNvbnRlbnRCb3hMZWZ0KCkgY29uc3QgeyByZXR1cm4gcGFkZGluZ0JveExlZnQoKSArIHBhZGRp
bmdMZWZ0KCkudmFsdWVPcigwKTsgfQorICAgIExheW91dFVuaXQgY29udGVudEJveEJvdHRvbSgp
IGNvbnN0IHsgcmV0dXJuIGNvbnRlbnRCb3hUb3AoKSArIGNvbnRlbnRCb3hIZWlnaHQoKTsgfQor
ICAgIExheW91dFVuaXQgY29udGVudEJveFJpZ2h0KCkgY29uc3QgeyByZXR1cm4gY29udGVudEJv
eExlZnQoKSArIGNvbnRlbnRCb3hXaWR0aCgpOyB9CisgICAgTGF5b3V0VW5pdCBjb250ZW50Qm94
SGVpZ2h0KCkgY29uc3Q7CisgICAgTGF5b3V0VW5pdCBjb250ZW50Qm94V2lkdGgoKSBjb25zdDsK
KworICAgIExheW91dFVuaXQgcGFkZGluZ0JveFRvcCgpIGNvbnN0IHsgcmV0dXJuIGJvcmRlclRv
cCgpOyB9CisgICAgTGF5b3V0VW5pdCBwYWRkaW5nQm94TGVmdCgpIGNvbnN0IHsgcmV0dXJuIGJv
cmRlckxlZnQoKTsgfQorICAgIExheW91dFVuaXQgcGFkZGluZ0JveEJvdHRvbSgpIGNvbnN0IHsg
cmV0dXJuIHBhZGRpbmdCb3hUb3AoKSArIHBhZGRpbmdCb3hIZWlnaHQoKTsgfQorICAgIExheW91
dFVuaXQgcGFkZGluZ0JveFJpZ2h0KCkgY29uc3QgeyByZXR1cm4gcGFkZGluZ0JveExlZnQoKSAr
IHBhZGRpbmdCb3hXaWR0aCgpOyB9CisgICAgTGF5b3V0VW5pdCBwYWRkaW5nQm94SGVpZ2h0KCkg
Y29uc3QgeyByZXR1cm4gcGFkZGluZ1RvcCgpLnZhbHVlT3IoMCkgKyBjb250ZW50Qm94SGVpZ2h0
KCkgKyBwYWRkaW5nQm90dG9tKCkudmFsdWVPcigwKTsgfQorICAgIExheW91dFVuaXQgcGFkZGlu
Z0JveFdpZHRoKCkgY29uc3QgeyByZXR1cm4gcGFkZGluZ0xlZnQoKS52YWx1ZU9yKDApICsgY29u
dGVudEJveFdpZHRoKCkgKyBwYWRkaW5nUmlnaHQoKS52YWx1ZU9yKDApOyB9CisKKyAgICBMYXlv
dXRVbml0IGJvcmRlckJveEhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIGJvcmRlclRvcCgpICsgcGFk
ZGluZ0JveEhlaWdodCgpICsgYm9yZGVyQm90dG9tKCk7IH0KKyAgICBMYXlvdXRVbml0IGJvcmRl
ckJveFdpZHRoKCkgY29uc3QgeyByZXR1cm4gYm9yZGVyTGVmdCgpICsgcGFkZGluZ0JveFdpZHRo
KCkgKyBib3JkZXJSaWdodCgpOyB9CisgICAgTGF5b3V0VW5pdCBtYXJnaW5Cb3hIZWlnaHQoKSBj
b25zdCB7IHJldHVybiBtYXJnaW5CZWZvcmUoKSArIGJvcmRlckJveEhlaWdodCgpICsgbWFyZ2lu
QWZ0ZXIoKTsgfQorICAgIExheW91dFVuaXQgbWFyZ2luQm94V2lkdGgoKSBjb25zdCB7IHJldHVy
biBtYXJnaW5TdGFydCgpICsgYm9yZGVyQm94V2lkdGgoKSArIG1hcmdpbkVuZCgpOyB9CisKKyAg
ICBMYXlvdXRVbml0IHZlcnRpY2FsTWFyZ2luQm9yZGVyQW5kUGFkZGluZygpIGNvbnN0IHsgcmV0
dXJuIG1hcmdpbkJlZm9yZSgpICsgdmVydGljYWxCb3JkZXIoKSArIHZlcnRpY2FsUGFkZGluZygp
LnZhbHVlT3IoMCkgKyBtYXJnaW5BZnRlcigpOyB9CisgICAgTGF5b3V0VW5pdCBob3Jpem9udGFs
TWFyZ2luQm9yZGVyQW5kUGFkZGluZygpIGNvbnN0IHsgcmV0dXJuIG1hcmdpblN0YXJ0KCkgKyBo
b3Jpem9udGFsQm9yZGVyKCkgKyBob3Jpem9udGFsUGFkZGluZygpLnZhbHVlT3IoMCkgKyBtYXJn
aW5FbmQoKTsgfQorCisgICAgUmVjdCBtYXJnaW5Cb3goKSBjb25zdDsKKyAgICBSZWN0IGJvcmRl
ckJveCgpIGNvbnN0OworICAgIFJlY3QgcGFkZGluZ0JveCgpIGNvbnN0OworICAgIFJlY3QgY29u
dGVudEJveCgpIGNvbnN0OworCisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICB2b2lkIHNldEhhc1By
ZWNvbXB1dGVkTWFyZ2luQmVmb3JlKCkgeyBtX2hhc1ByZWNvbXB1dGVkTWFyZ2luQmVmb3JlID0g
dHJ1ZTsgfQorI2VuZGlmCisKKyAgICB2b2lkIHNldFRvcExlZnQoY29uc3QgTGF5b3V0UG9pbnQm
KTsKKyAgICB2b2lkIHNldFRvcChMYXlvdXRVbml0KTsKKyAgICB2b2lkIHNldExlZnQoTGF5b3V0
VW5pdCk7CisgICAgdm9pZCBtb3ZlSG9yaXpvbnRhbGx5KExheW91dFVuaXQgb2Zmc2V0KSB7IG1f
dG9wTGVmdC5tb3ZlKG9mZnNldCwgMF9sdSk7IH0KKyAgICB2b2lkIG1vdmVWZXJ0aWNhbGx5KExh
eW91dFVuaXQgb2Zmc2V0KSB7IG1fdG9wTGVmdC5tb3ZlKDBfbHUsIG9mZnNldCk7IH0KKyAgICB2
b2lkIG1vdmUoY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSkgeyBtX3RvcExlZnQubW92ZShzaXplKTsg
fQorICAgIHZvaWQgbW92ZUJ5KExheW91dFBvaW50IG9mZnNldCkgeyBtX3RvcExlZnQubW92ZUJ5
KG9mZnNldCk7IH0KKworICAgIHZvaWQgc2V0Q29udGVudEJveEhlaWdodChMYXlvdXRVbml0KTsK
KyAgICB2b2lkIHNldENvbnRlbnRCb3hXaWR0aChMYXlvdXRVbml0KTsKKworICAgIHZvaWQgc2V0
SG9yaXpvbnRhbE1hcmdpbihIb3Jpem9udGFsTWFyZ2luKTsKKyAgICB2b2lkIHNldFZlcnRpY2Fs
TWFyZ2luKFZlcnRpY2FsTWFyZ2luKTsKKyAgICB2b2lkIHNldEhhc0NsZWFyYW5jZSgpIHsgbV9o
YXNDbGVhcmFuY2UgPSB0cnVlOyB9CisKKyAgICB2b2lkIHNldEJvcmRlcihMYXlvdXQ6OkVkZ2Vz
KTsKKworICAgIHZvaWQgc2V0VmVydGljYWxQYWRkaW5nKExheW91dDo6VmVydGljYWxFZGdlcyk7
CisgICAgdm9pZCBzZXRQYWRkaW5nKE9wdGlvbmFsPExheW91dDo6RWRnZXM+KTsKKworcHJpdmF0
ZToKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIHZvaWQgaW52YWxpZGF0ZU1hcmdpbigpOworICAg
IHZvaWQgaW52YWxpZGF0ZUJvcmRlcigpIHsgbV9oYXNWYWxpZEJvcmRlciA9IGZhbHNlOyB9Cisg
ICAgdm9pZCBpbnZhbGlkYXRlUGFkZGluZygpIHsgbV9oYXNWYWxpZFBhZGRpbmcgPSBmYWxzZTsg
fQorICAgIHZvaWQgaW52YWxpZGF0ZVByZWNvbXB1dGVkTWFyZ2luQmVmb3JlKCkgeyBtX2hhc1By
ZWNvbXB1dGVkTWFyZ2luQmVmb3JlID0gZmFsc2U7IH0KKworICAgIHZvaWQgc2V0SGFzVmFsaWRU
b3AoKSB7IG1faGFzVmFsaWRUb3AgPSB0cnVlOyB9CisgICAgdm9pZCBzZXRIYXNWYWxpZExlZnQo
KSB7IG1faGFzVmFsaWRMZWZ0ID0gdHJ1ZTsgfQorICAgIHZvaWQgc2V0SGFzVmFsaWRWZXJ0aWNh
bE1hcmdpbigpIHsgbV9oYXNWYWxpZFZlcnRpY2FsTWFyZ2luID0gdHJ1ZTsgfQorICAgIHZvaWQg
c2V0SGFzVmFsaWRIb3Jpem9udGFsTWFyZ2luKCkgeyBtX2hhc1ZhbGlkSG9yaXpvbnRhbE1hcmdp
biA9IHRydWU7IH0KKworICAgIHZvaWQgc2V0SGFzVmFsaWRCb3JkZXIoKSB7IG1faGFzVmFsaWRC
b3JkZXIgPSB0cnVlOyB9CisgICAgdm9pZCBzZXRIYXNWYWxpZFBhZGRpbmcoKSB7IG1faGFzVmFs
aWRQYWRkaW5nID0gdHJ1ZTsgfQorCisgICAgdm9pZCBzZXRIYXNWYWxpZENvbnRlbnRIZWlnaHQo
KSB7IG1faGFzVmFsaWRDb250ZW50SGVpZ2h0ID0gdHJ1ZTsgfQorICAgIHZvaWQgc2V0SGFzVmFs
aWRDb250ZW50V2lkdGgoKSB7IG1faGFzVmFsaWRDb250ZW50V2lkdGggPSB0cnVlOyB9CisjZW5k
aWYgLy8gQVNTRVJUX0VOQUJMRUQKKworICAgIExheW91dFBvaW50IG1fdG9wTGVmdDsKKyAgICBM
YXlvdXRVbml0IG1fY29udGVudFdpZHRoOworICAgIExheW91dFVuaXQgbV9jb250ZW50SGVpZ2h0
OworCisgICAgSG9yaXpvbnRhbE1hcmdpbiBtX2hvcml6b250YWxNYXJnaW47CisgICAgVmVydGlj
YWxNYXJnaW4gbV92ZXJ0aWNhbE1hcmdpbjsKKyAgICBib29sIG1faGFzQ2xlYXJhbmNlIHsgZmFs
c2UgfTsKKworICAgIExheW91dDo6RWRnZXMgbV9ib3JkZXI7CisgICAgT3B0aW9uYWw8TGF5b3V0
OjpFZGdlcz4gbV9wYWRkaW5nOworCisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICBib29sIG1faGFz
VmFsaWRUb3AgeyBmYWxzZSB9OworICAgIGJvb2wgbV9oYXNWYWxpZExlZnQgeyBmYWxzZSB9Owor
ICAgIGJvb2wgbV9oYXNWYWxpZEhvcml6b250YWxNYXJnaW4geyBmYWxzZSB9OworICAgIGJvb2wg
bV9oYXNWYWxpZFZlcnRpY2FsTWFyZ2luIHsgZmFsc2UgfTsKKyAgICBib29sIG1faGFzVmFsaWRC
b3JkZXIgeyBmYWxzZSB9OworICAgIGJvb2wgbV9oYXNWYWxpZFBhZGRpbmcgeyBmYWxzZSB9Owor
ICAgIGJvb2wgbV9oYXNWYWxpZENvbnRlbnRIZWlnaHQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9o
YXNWYWxpZENvbnRlbnRXaWR0aCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2hhc1ByZWNvbXB1dGVk
TWFyZ2luQmVmb3JlIHsgZmFsc2UgfTsKKyNlbmRpZiAvLyBBU1NFUlRfRU5BQkxFRAorfTsKKwor
I2lmIEFTU0VSVF9FTkFCTEVECitpbmxpbmUgdm9pZCBHZW9tZXRyeTo6aW52YWxpZGF0ZU1hcmdp
bigpCit7CisgICAgbV9oYXNWYWxpZEhvcml6b250YWxNYXJnaW4gPSBmYWxzZTsKKyAgICBtX2hh
c1ZhbGlkVmVydGljYWxNYXJnaW4gPSBmYWxzZTsKK30KKyNlbmRpZgorCitpbmxpbmUgTGF5b3V0
VW5pdCBHZW9tZXRyeTo6dG9wKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9oYXNWYWxpZFRvcCAm
JiAobV9oYXNQcmVjb21wdXRlZE1hcmdpbkJlZm9yZSB8fCBtX2hhc1ZhbGlkVmVydGljYWxNYXJn
aW4pKTsKKyAgICByZXR1cm4gbV90b3BMZWZ0LnkoKTsKK30KKworaW5saW5lIExheW91dFVuaXQg
R2VvbWV0cnk6OmxlZnQoKSBjb25zdAoreworICAgIEFTU0VSVChtX2hhc1ZhbGlkTGVmdCAmJiBt
X2hhc1ZhbGlkSG9yaXpvbnRhbE1hcmdpbik7CisgICAgcmV0dXJuIG1fdG9wTGVmdC54KCk7Cit9
CisKK2lubGluZSBMYXlvdXRQb2ludCBHZW9tZXRyeTo6dG9wTGVmdCgpIGNvbnN0Cit7CisgICAg
QVNTRVJUKG1faGFzVmFsaWRUb3AgJiYgKG1faGFzUHJlY29tcHV0ZWRNYXJnaW5CZWZvcmUgfHwg
bV9oYXNWYWxpZFZlcnRpY2FsTWFyZ2luKSk7CisgICAgQVNTRVJUKG1faGFzVmFsaWRMZWZ0ICYm
IG1faGFzVmFsaWRIb3Jpem9udGFsTWFyZ2luKTsKKyAgICByZXR1cm4gbV90b3BMZWZ0OworfQor
CitpbmxpbmUgdm9pZCBHZW9tZXRyeTo6c2V0VG9wTGVmdChjb25zdCBMYXlvdXRQb2ludCYgdG9w
TGVmdCkKK3sKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIHNldEhhc1ZhbGlkVG9wKCk7CisgICAg
c2V0SGFzVmFsaWRMZWZ0KCk7CisjZW5kaWYKKyAgICBtX3RvcExlZnQgPSB0b3BMZWZ0OworfQor
CitpbmxpbmUgdm9pZCBHZW9tZXRyeTo6c2V0VG9wKExheW91dFVuaXQgdG9wKQoreworI2lmIEFT
U0VSVF9FTkFCTEVECisgICAgc2V0SGFzVmFsaWRUb3AoKTsKKyNlbmRpZgorICAgIG1fdG9wTGVm
dC5zZXRZKHRvcCk7Cit9CisKK2lubGluZSB2b2lkIEdlb21ldHJ5OjpzZXRMZWZ0KExheW91dFVu
aXQgbGVmdCkKK3sKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgIHNldEhhc1ZhbGlkTGVmdCgpOwor
I2VuZGlmCisgICAgbV90b3BMZWZ0LnNldFgobGVmdCk7Cit9CisKK2lubGluZSB2b2lkIEdlb21l
dHJ5OjpzZXRDb250ZW50Qm94SGVpZ2h0KExheW91dFVuaXQgaGVpZ2h0KQoreyAKKyNpZiBBU1NF
UlRfRU5BQkxFRAorICAgIHNldEhhc1ZhbGlkQ29udGVudEhlaWdodCgpOworI2VuZGlmCisgICAg
bV9jb250ZW50SGVpZ2h0ID0gaGVpZ2h0OworfQorCitpbmxpbmUgdm9pZCBHZW9tZXRyeTo6c2V0
Q29udGVudEJveFdpZHRoKExheW91dFVuaXQgd2lkdGgpCit7IAorI2lmIEFTU0VSVF9FTkFCTEVE
CisgICAgc2V0SGFzVmFsaWRDb250ZW50V2lkdGgoKTsKKyNlbmRpZgorICAgIG1fY29udGVudFdp
ZHRoID0gd2lkdGg7Cit9CisKK2lubGluZSBMYXlvdXRVbml0IEdlb21ldHJ5Ojpjb250ZW50Qm94
SGVpZ2h0KCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9oYXNWYWxpZENvbnRlbnRIZWlnaHQpOwor
ICAgIHJldHVybiBtX2NvbnRlbnRIZWlnaHQ7Cit9CisKK2lubGluZSBMYXlvdXRVbml0IEdlb21l
dHJ5Ojpjb250ZW50Qm94V2lkdGgoKSBjb25zdAoreworICAgIEFTU0VSVChtX2hhc1ZhbGlkQ29u
dGVudFdpZHRoKTsKKyAgICByZXR1cm4gbV9jb250ZW50V2lkdGg7Cit9CisKK2lubGluZSB2b2lk
IEdlb21ldHJ5OjpzZXRIb3Jpem9udGFsTWFyZ2luKEhvcml6b250YWxNYXJnaW4gbWFyZ2luKQor
eworI2lmIEFTU0VSVF9FTkFCTEVECisgICAgc2V0SGFzVmFsaWRIb3Jpem9udGFsTWFyZ2luKCk7
CisjZW5kaWYKKyAgICBtX2hvcml6b250YWxNYXJnaW4gPSBtYXJnaW47Cit9CisKK2lubGluZSB2
b2lkIEdlb21ldHJ5OjpzZXRWZXJ0aWNhbE1hcmdpbihWZXJ0aWNhbE1hcmdpbiBtYXJnaW4pCit7
CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICBzZXRIYXNWYWxpZFZlcnRpY2FsTWFyZ2luKCk7Cisg
ICAgaW52YWxpZGF0ZVByZWNvbXB1dGVkTWFyZ2luQmVmb3JlKCk7CisjZW5kaWYKKyAgICBtX3Zl
cnRpY2FsTWFyZ2luID0gbWFyZ2luOworfQorCitpbmxpbmUgdm9pZCBHZW9tZXRyeTo6c2V0Qm9y
ZGVyKExheW91dDo6RWRnZXMgYm9yZGVyKQoreworI2lmIEFTU0VSVF9FTkFCTEVECisgICAgc2V0
SGFzVmFsaWRCb3JkZXIoKTsKKyNlbmRpZgorICAgIG1fYm9yZGVyID0gYm9yZGVyOworfQorCitp
bmxpbmUgdm9pZCBHZW9tZXRyeTo6c2V0UGFkZGluZyhPcHRpb25hbDxMYXlvdXQ6OkVkZ2VzPiBw
YWRkaW5nKQoreworI2lmIEFTU0VSVF9FTkFCTEVECisgICAgc2V0SGFzVmFsaWRQYWRkaW5nKCk7
CisjZW5kaWYKKyAgICBtX3BhZGRpbmcgPSBwYWRkaW5nOworfQorCitpbmxpbmUgdm9pZCBHZW9t
ZXRyeTo6c2V0VmVydGljYWxQYWRkaW5nKExheW91dDo6VmVydGljYWxFZGdlcyB2ZXJ0aWNhbFBh
ZGRpbmcpCit7CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICBzZXRIYXNWYWxpZFBhZGRpbmcoKTsK
KyNlbmRpZgorICAgIG1fcGFkZGluZyA9IExheW91dDo6RWRnZXMgeyBtX3BhZGRpbmcgPyBtX3Bh
ZGRpbmctPmhvcml6b250YWwgOiBMYXlvdXQ6Okhvcml6b250YWxFZGdlcygpLCB2ZXJ0aWNhbFBh
ZGRpbmcgfTsKK30KKworaW5saW5lIEdlb21ldHJ5OjpWZXJ0aWNhbE1hcmdpbiBHZW9tZXRyeTo6
dmVydGljYWxNYXJnaW4oKSBjb25zdAoreworICAgIEFTU0VSVChtX2hhc1ZhbGlkVmVydGljYWxN
YXJnaW4pOworICAgIHJldHVybiBtX3ZlcnRpY2FsTWFyZ2luOworfQorCitpbmxpbmUgR2VvbWV0
cnk6Okhvcml6b250YWxNYXJnaW4gR2VvbWV0cnk6Omhvcml6b250YWxNYXJnaW4oKSBjb25zdAor
eworICAgIEFTU0VSVChtX2hhc1ZhbGlkSG9yaXpvbnRhbE1hcmdpbik7CisgICAgcmV0dXJuIG1f
aG9yaXpvbnRhbE1hcmdpbjsKK30KKworaW5saW5lIExheW91dFVuaXQgR2VvbWV0cnk6Om1hcmdp
bkJlZm9yZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1faGFzVmFsaWRWZXJ0aWNhbE1hcmdpbik7
CisgICAgcmV0dXJuIG1fdmVydGljYWxNYXJnaW4uYmVmb3JlOworfQorCitpbmxpbmUgTGF5b3V0
VW5pdCBHZW9tZXRyeTo6bWFyZ2luU3RhcnQoKSBjb25zdAoreworICAgIEFTU0VSVChtX2hhc1Zh
bGlkSG9yaXpvbnRhbE1hcmdpbik7CisgICAgcmV0dXJuIG1faG9yaXpvbnRhbE1hcmdpbi5zdGFy
dDsKK30KKworaW5saW5lIExheW91dFVuaXQgR2VvbWV0cnk6Om1hcmdpbkFmdGVyKCkgY29uc3QK
K3sKKyAgICBBU1NFUlQobV9oYXNWYWxpZFZlcnRpY2FsTWFyZ2luKTsKKyAgICByZXR1cm4gbV92
ZXJ0aWNhbE1hcmdpbi5hZnRlcjsKK30KKworaW5saW5lIExheW91dFVuaXQgR2VvbWV0cnk6Om1h
cmdpbkVuZCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1faGFzVmFsaWRIb3Jpem9udGFsTWFyZ2lu
KTsKKyAgICByZXR1cm4gbV9ob3Jpem9udGFsTWFyZ2luLmVuZDsKK30KKworaW5saW5lIE9wdGlv
bmFsPExheW91dFVuaXQ+IEdlb21ldHJ5OjpwYWRkaW5nVG9wKCkgY29uc3QKK3sKKyAgICBBU1NF
UlQobV9oYXNWYWxpZFBhZGRpbmcpOworICAgIGlmICghbV9wYWRkaW5nKQorICAgICAgICByZXR1
cm4geyB9OworICAgIHJldHVybiBtX3BhZGRpbmctPnZlcnRpY2FsLnRvcDsKK30KKworaW5saW5l
IE9wdGlvbmFsPExheW91dFVuaXQ+IEdlb21ldHJ5OjpwYWRkaW5nTGVmdCgpIGNvbnN0Cit7Cisg
ICAgQVNTRVJUKG1faGFzVmFsaWRQYWRkaW5nKTsKKyAgICBpZiAoIW1fcGFkZGluZykKKyAgICAg
ICAgcmV0dXJuIHsgfTsKKyAgICByZXR1cm4gbV9wYWRkaW5nLT5ob3Jpem9udGFsLmxlZnQ7Cit9
CisKK2lubGluZSBPcHRpb25hbDxMYXlvdXRVbml0PiBHZW9tZXRyeTo6cGFkZGluZ0JvdHRvbSgp
IGNvbnN0Cit7CisgICAgQVNTRVJUKG1faGFzVmFsaWRQYWRkaW5nKTsKKyAgICBpZiAoIW1fcGFk
ZGluZykKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICByZXR1cm4gbV9wYWRkaW5nLT52ZXJ0aWNh
bC5ib3R0b207Cit9CisKK2lubGluZSBPcHRpb25hbDxMYXlvdXRVbml0PiBHZW9tZXRyeTo6cGFk
ZGluZ1JpZ2h0KCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9oYXNWYWxpZFBhZGRpbmcpOworICAg
IGlmICghbV9wYWRkaW5nKQorICAgICAgICByZXR1cm4geyB9OworICAgIHJldHVybiBtX3BhZGRp
bmctPmhvcml6b250YWwucmlnaHQ7Cit9CisKK2lubGluZSBPcHRpb25hbDxMYXlvdXRVbml0PiBH
ZW9tZXRyeTo6dmVydGljYWxQYWRkaW5nKCkgY29uc3QKK3sKKyAgICBhdXRvIHBhZGRpbmdUb3Ag
PSB0aGlzLT5wYWRkaW5nVG9wKCk7CisgICAgYXV0byBwYWRkaW5nQm90dG9tID0gdGhpcy0+cGFk
ZGluZ0JvdHRvbSgpOworICAgIGlmICghcGFkZGluZ1RvcCAmJiAhcGFkZGluZ0JvdHRvbSkKKyAg
ICAgICAgcmV0dXJuIHsgfTsKKyAgICByZXR1cm4gcGFkZGluZ1RvcC52YWx1ZU9yKDApICsgcGFk
ZGluZ0JvdHRvbS52YWx1ZU9yKDApOworfQorCitpbmxpbmUgT3B0aW9uYWw8TGF5b3V0VW5pdD4g
R2VvbWV0cnk6Omhvcml6b250YWxQYWRkaW5nKCkgY29uc3QKK3sKKyAgICBhdXRvIHBhZGRpbmdM
ZWZ0ID0gdGhpcy0+cGFkZGluZ0xlZnQoKTsKKyAgICBhdXRvIHBhZGRpbmdSaWdodCA9IHRoaXMt
PnBhZGRpbmdSaWdodCgpOworICAgIGlmICghcGFkZGluZ0xlZnQgJiYgIXBhZGRpbmdSaWdodCkK
KyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICByZXR1cm4gcGFkZGluZ0xlZnQudmFsdWVPcigwKSAr
IHBhZGRpbmdSaWdodC52YWx1ZU9yKDApOworfQorCitpbmxpbmUgTGF5b3V0VW5pdCBHZW9tZXRy
eTo6Ym9yZGVyVG9wKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9oYXNWYWxpZEJvcmRlcik7Cisg
ICAgcmV0dXJuIG1fYm9yZGVyLnZlcnRpY2FsLnRvcDsKK30KKworaW5saW5lIExheW91dFVuaXQg
R2VvbWV0cnk6OmJvcmRlckxlZnQoKSBjb25zdAoreworICAgIEFTU0VSVChtX2hhc1ZhbGlkQm9y
ZGVyKTsKKyAgICByZXR1cm4gbV9ib3JkZXIuaG9yaXpvbnRhbC5sZWZ0OworfQorCitpbmxpbmUg
TGF5b3V0VW5pdCBHZW9tZXRyeTo6Ym9yZGVyQm90dG9tKCkgY29uc3QKK3sKKyAgICBBU1NFUlQo
bV9oYXNWYWxpZEJvcmRlcik7CisgICAgcmV0dXJuIG1fYm9yZGVyLnZlcnRpY2FsLmJvdHRvbTsK
K30KKworaW5saW5lIExheW91dFVuaXQgR2VvbWV0cnk6OmJvcmRlclJpZ2h0KCkgY29uc3QKK3sK
KyAgICBBU1NFUlQobV9oYXNWYWxpZEJvcmRlcik7CisgICAgcmV0dXJuIG1fYm9yZGVyLmhvcml6
b250YWwucmlnaHQ7Cit9CisKK30KK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCmluZGV4IDcwMmFlMzU1
ZDY1YWYxY2RiY2VjMzhmNmFjNmM3ZjM1Y2MyMzBhMmUuLmQ0YmZiYTA2MjY2NmY4NmY3ZGQ3OWM5
ZjEyYzI2MjU3NmEzMmUyMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlv
dXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
bGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAKQEAgLTI5LDcgKzI5LDYgQEAKICNpZiBF
TkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKIAogI2luY2x1ZGUgIkNhY2hlZEltYWdl
LmgiCi0jaW5jbHVkZSAiRGlzcGxheUJveC5oIgogI2luY2x1ZGUgIkRpc3BsYXlSdW4uaCIKICNp
bmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MVGFibGVDZWxsRWxlbWVudC5oIgpA
QCAtNDIsNiArNDEsNyBAQAogI2luY2x1ZGUgIkxheW91dENoaWxkSXRlcmF0b3IuaCIKICNpbmNs
dWRlICJMYXlvdXRDb250YWluZXJCb3guaCIKICNpbmNsdWRlICJMYXlvdXRDb250ZXh0LmgiCisj
aW5jbHVkZSAiTGF5b3V0R2VvbWV0cnkuaCIKICNpbmNsdWRlICJMYXlvdXRJbml0aWFsQ29udGFp
bmluZ0Jsb2NrLmgiCiAjaW5jbHVkZSAiTGF5b3V0SW5saW5lVGV4dEJveC5oIgogI2luY2x1ZGUg
IkxheW91dExpbmVCcmVha0JveC5oIgpAQCAtNDI2LDcgKzQyNiw3IEBAIHN0YXRpYyB2b2lkIG91
dHB1dElubGluZVJ1bnMoVGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBMYXlvdXRTdGF0ZSYgbGF5
b3V0U3RhdGUsCiAgICAgfQogfQogCi1zdGF0aWMgdm9pZCBvdXRwdXRMYXlvdXRCb3goVGV4dFN0
cmVhbSYgc3RyZWFtLCBjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QgRGlzcGxheTo6Qm94KiBk
aXNwbGF5Qm94LCB1bnNpZ25lZCBkZXB0aCkKK3N0YXRpYyB2b2lkIG91dHB1dExheW91dEJveChU
ZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBHZW9tZXRyeSog
ZGlzcGxheUJveCwgdW5zaWduZWQgZGVwdGgpCiB7CiAgICAgdW5zaWduZWQgcHJpbnRlZENoYXJh
Y3RlcnMgPSAwOwogICAgIHdoaWxlICgrK3ByaW50ZWRDaGFyYWN0ZXJzIDw9IGRlcHRoICogMikK
QEAgLTUwNyw3ICs1MDcsNyBAQCBzdGF0aWMgdm9pZCBvdXRwdXRMYXlvdXRUcmVlKGNvbnN0IExh
eW91dFN0YXRlKiBsYXlvdXRTdGF0ZSwgVGV4dFN0cmVhbSYgc3RyZWFtLAogICAgICAgICBpZiAo
bGF5b3V0U3RhdGUpIHsKICAgICAgICAgICAgIC8vIE5vdCBhbGwgYm94ZXMgZ2VuZXJhdGUgZGlz
cGxheSBib3hlcy4KICAgICAgICAgICAgIGlmIChsYXlvdXRTdGF0ZS0+aGFzRGlzcGxheUJveChj
aGlsZCkpCi0gICAgICAgICAgICAgICAgb3V0cHV0TGF5b3V0Qm94KHN0cmVhbSwgY2hpbGQsICZs
YXlvdXRTdGF0ZS0+ZGlzcGxheUJveEZvckxheW91dEJveChjaGlsZCksIGRlcHRoKTsKKyAgICAg
ICAgICAgICAgICBvdXRwdXRMYXlvdXRCb3goc3RyZWFtLCBjaGlsZCwgJmxheW91dFN0YXRlLT5n
ZW9tZXRyeUZvckxheW91dEJveChjaGlsZCksIGRlcHRoKTsKICAgICAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgICAgICBvdXRwdXRMYXlvdXRCb3goc3RyZWFtLCBjaGlsZCwgbnVsbHB0ciwgZGVw
dGgpOwogICAgICAgICAgICAgaWYgKGNoaWxkLmVzdGFibGlzaGVzSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQoKSkKQEAgLTUyNSw3ICs1MjUsNyBAQCB2b2lkIHNob3dMYXlvdXRUcmVlKGNvbnN0IEJv
eCYgbGF5b3V0Qm94LCBjb25zdCBMYXlvdXRTdGF0ZSogbGF5b3V0U3RhdGUpCiAgICAgVGV4dFN0
cmVhbSBzdHJlYW0oVGV4dFN0cmVhbTo6TGluZU1vZGU6Ok11bHRpcGxlTGluZSwgVGV4dFN0cmVh
bTo6Rm9ybWF0dGluZzo6U1ZHU3R5bGVSZWN0KTsKIAogICAgIGF1dG8mIGluaXRpYWxDb250YWlu
aW5nQmxvY2sgPSBsYXlvdXRCb3guaW5pdGlhbENvbnRhaW5pbmdCbG9jaygpOwotICAgIG91dHB1
dExheW91dEJveChzdHJlYW0sIGluaXRpYWxDb250YWluaW5nQmxvY2ssIGxheW91dFN0YXRlID8g
JmxheW91dFN0YXRlLT5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGluaXRpYWxDb250YWluaW5nQmxv
Y2spIDogbnVsbHB0ciwgMCk7CisgICAgb3V0cHV0TGF5b3V0Qm94KHN0cmVhbSwgaW5pdGlhbENv
bnRhaW5pbmdCbG9jaywgbGF5b3V0U3RhdGUgPyAmbGF5b3V0U3RhdGUtPmdlb21ldHJ5Rm9yTGF5
b3V0Qm94KGluaXRpYWxDb250YWluaW5nQmxvY2spIDogbnVsbHB0ciwgMCk7CiAgICAgb3V0cHV0
TGF5b3V0VHJlZShsYXlvdXRTdGF0ZSwgc3RyZWFtLCBpbml0aWFsQ29udGFpbmluZ0Jsb2NrLCAx
KTsKICAgICBXVEZMb2dBbHdheXMoIiVzIiwgc3RyZWFtLnJlbGVhc2UoKS51dGY4KCkuZGF0YSgp
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcv
VGFibGVGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvdGFibGVm
b3JtYXR0aW5nL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IDZiMDIyZjRhY2MyODI0
OGZkYjA3MjdlMmQyYzhiMTFmZTUyNDAxM2YuLjViOWMwOWQyY2Y3ZmZiNTlmMWNmMjJiZjVjZTZl
YTllMGM2YTY5ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1h
dHRpbmcvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUZvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtMjksMTMg
KzI5LDEzIEBACiAjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCiAKICNpbmNs
dWRlICJCbG9ja0Zvcm1hdHRpbmdTdGF0ZS5oIgotI2luY2x1ZGUgIkRpc3BsYXlCb3guaCIKICNp
bmNsdWRlICJGbG9hdGluZ1N0YXRlLmgiCiAjaW5jbHVkZSAiSW5saW5lRm9ybWF0dGluZ1N0YXRl
LmgiCiAjaW5jbHVkZSAiSW52YWxpZGF0aW9uU3RhdGUuaCIKICNpbmNsdWRlICJMYXlvdXRCb3gu
aCIKICNpbmNsdWRlICJMYXlvdXRDaGlsZEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiTGF5b3V0Q29u
dGV4dC5oIgorI2luY2x1ZGUgIkxheW91dEdlb21ldHJ5LmgiCiAjaW5jbHVkZSAiTGF5b3V0SW5p
dGlhbENvbnRhaW5pbmdCbG9jay5oIgogI2luY2x1ZGUgIlRhYmxlRm9ybWF0dGluZ1N0YXRlLmgi
CiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVGb3JtYXR0aW5nQ29udGV4dEdlb21l
dHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVGb3Jt
YXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAppbmRleCA5NzhjNzA0ZGJlZjI4MGVmN2IwOGIzZDc1
MTcxY2QzYjQ3MjI5N2Y3Li4xMjE0ZjE2MjNjYjY0YzMwOTRjOGI0ZDczNjIxMjk1YTYyNGRmZTQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxl
Rm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L3RhYmxlZm9ybWF0dGluZy9UYWJsZUZvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCkBAIC0y
OCwxMCArMjgsMTAgQEAKIAogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQog
Ci0jaW5jbHVkZSAiRGlzcGxheUJveC5oIgogI2luY2x1ZGUgIklubGluZUZvcm1hdHRpbmdTdGF0
ZS5oIgogI2luY2x1ZGUgIkxheW91dENvbnRleHQuaCIKICNpbmNsdWRlICJMYXlvdXREZXNjZW5k
YW50SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJMYXlvdXRHZW9tZXRyeS5oIgogI2luY2x1ZGUgIkxh
eW91dEluaXRpYWxDb250YWluaW5nQmxvY2suaCIKICNpbmNsdWRlICJUYWJsZUZvcm1hdHRpbmdT
dGF0ZS5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvdGFibGVmb3JtYXR0
aW5nL1RhYmxlTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRp
bmcvVGFibGVMYXlvdXQuY3BwCmluZGV4IDdmMDI4ZGNlODA4YTlhYTI1NzVmMzk5M2UyNzA3MTJj
MjBjYTQ0ZmUuLjgxNGZiMTMwYzZhMDg1MGIyNzVmZDk2OTY1NTk3NTk2NTg2ZDRkNzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVMYXlvdXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVMYXlv
dXQuY3BwCkBAIC0yOCw4ICsyOCw4IEBACiAKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdf
Q09OVEVYVCkKIAotI2luY2x1ZGUgIkRpc3BsYXlCb3guaCIKICNpbmNsdWRlICJMYXlvdXRCb3gu
aCIKKyNpbmNsdWRlICJMYXlvdXRHZW9tZXRyeS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBu
YW1lc3BhY2UgTGF5b3V0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3TGF5b3V0Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlld0xheW91
dENvbnRleHQuY3BwCmluZGV4IDM0MTQ3ZmJhYWMxMTU0MWE0YTBlMzRlMzJmYmI0NzUxOTI1YTUy
M2EuLmRhYTJjNWIxNjNlMzczZjA4YWMxYmE1MGRjNTMzMjI2MjU3YWRkNWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3TGF5b3V0Q29udGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmNwcApAQCAtNDAsMTAgKzQw
LDEwIEBACiAjaW5jbHVkZSAiU2NyaXB0RGlzYWxsb3dlZFNjb3BlLmgiCiAjaW5jbHVkZSAiU2V0
dGluZ3MuaCIKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKLSNpbmNsdWRl
ICJEaXNwbGF5Qm94LmgiCiAjaW5jbHVkZSAiSW52YWxpZGF0aW9uQ29udGV4dC5oIgogI2luY2x1
ZGUgIkludmFsaWRhdGlvblN0YXRlLmgiCiAjaW5jbHVkZSAiTGF5b3V0Q29udGV4dC5oIgorI2lu
Y2x1ZGUgIkxheW91dEdlb21ldHJ5LmgiCiAjaW5jbHVkZSAiTGF5b3V0U3RhdGUuaCIKICNpbmNs
dWRlICJMYXlvdXRUcmVlQnVpbGRlci5oIgogI2luY2x1ZGUgIlJlbmRlckRlc2NlbmRhbnRJdGVy
YXRvci5oIgpAQCAtODEsNyArODEsNyBAQCB2b2lkIEZyYW1lVmlld0xheW91dENvbnRleHQ6Omxh
eW91dFVzaW5nRm9ybWF0dGluZ0NvbnRleHQoKQogCiAgICAgLy8gQ2xlYW4gdXAgdGhlIHJlbmRl
ciB0cmVlIHN0YXRlIHdoZW4gd2UgZG9uJ3QgcnVuIFJlbmRlclZpZXc6OmxheW91dC4KICAgICBp
ZiAocmVuZGVyVmlldy5uZWVkc0xheW91dCgpKSB7Ci0gICAgICAgIGF1dG8gY29udGVudFNpemUg
PSBtX2xheW91dFN0YXRlLT5kaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KCptX2xheW91dFN0YXRlLT5y
b290KCkuZmlyc3RDaGlsZCgpKS5zaXplKCk7CisgICAgICAgIGF1dG8gY29udGVudFNpemUgPSBt
X2xheW91dFN0YXRlLT5nZW9tZXRyeUZvckxheW91dEJveCgqbV9sYXlvdXRTdGF0ZS0+cm9vdCgp
LmZpcnN0Q2hpbGQoKSkuc2l6ZSgpOwogICAgICAgICByZW5kZXJWaWV3LnNldFNpemUoY29udGVu
dFNpemUpOwogICAgICAgICByZW5kZXJWaWV3LnJlcGFpbnRWaWV3UmVjdGFuZ2xlKHsgMCwgMCwg
Y29udGVudFNpemUud2lkdGgoKSwgY29udGVudFNpemUuaGVpZ2h0KCkgfSk7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>