<?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>163494</bug_id>
          
          <creation_ts>2016-10-15 16:35:23 -0700</creation_ts>
          <short_desc>Move CSS classes from ExceptionCode to Exception</short_desc>
          <delta_ts>2016-10-18 09:44:13 -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>Bindings</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>163599</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>achristensen</cc>
    
    <cc>andersca</cc>
    
    <cc>cdumez</cc>
    
    <cc>sam</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1240669</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-10-15 16:35:23 -0700</bug_when>
    <thetext>Move CSS classes from ExceptionCode to Exception</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1240683</commentid>
    <comment_count>1</comment_count>
      <attachid>291732</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-10-15 18:21:16 -0700</bug_when>
    <thetext>Created attachment 291732
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1240684</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-10-15 18:21:36 -0700</bug_when>
    <thetext>Uploaded a version to see if the GTK bindings are broken (I imagine they are).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1240728</commentid>
    <comment_count>3</comment_count>
      <attachid>291748</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-10-16 08:51:21 -0700</bug_when>
    <thetext>Created attachment 291748
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1240729</commentid>
    <comment_count>4</comment_count>
      <attachid>291749</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-10-16 10:04:01 -0700</bug_when>
    <thetext>Created attachment 291749
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1240732</commentid>
    <comment_count>5</comment_count>
      <attachid>291750</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-10-16 10:17:32 -0700</bug_when>
    <thetext>Created attachment 291750
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1240745</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-10-16 11:23:38 -0700</bug_when>
    <thetext>EWS all green. Ready for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1240819</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-10-16 17:18:48 -0700</bug_when>
    <thetext>Committed r207396: &lt;http://trac.webkit.org/changeset/207396&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291732</attachid>
            <date>2016-10-15 18:21:16 -0700</date>
            <delta_ts>2016-10-16 08:51:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163494-20161015181745.patch</filename>
            <type>text/plain</type>
            <size>331538</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3Mzg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTk0OWZhMmQwZDhjMTBh
M2I4M2ZjZTBmZTRmMjQ5ZTIwZDdjNTMzNy4uYzAxYjdmYTQwMWMyOTdkNjUyNjlmZDA1NGU0NzM5
ZjQ5MTFkZGJjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxNSBAQAorMjAxNi0xMC0xNSAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBDU1MgY2xhc3NlcyBm
cm9tIEV4Y2VwdGlvbkNvZGUgdG8gRXhjZXB0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM0OTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmVkIHRoZSAiZ2V0IiBwcmVmaXggZnJvbSB0aGUg
bmFtZXMgb2YgbWFueSBDU1NQcmltaXRpdmVWYWx1ZQorICAgICAgICBmdW5jdGlvbnMgdG8gbWF0
Y2ggV2ViS2l0IGNvZGluZyBzdHlsZSBhbmQgdG8gZGlzYW1iaWd1YXRlIHRoZW0KKyAgICAgICAg
ZnJvbSB0aGUgcHVibGljIENTUyBET00gZnVuY3Rpb25zIHRoYXQgcmFpc2UgZXhjZXB0aW9ucy4K
KworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpwcm9wZXJ0eU5hbWVQcmVmaXgpOiBVc2UgZW51bSBjbGFzcy4K
KyAgICAgICAgKFdlYkNvcmU6OnBhcnNlSmF2YVNjcmlwdENTU1Byb3BlcnR5TmFtZSk6IFR3ZWFr
IHN0eWxlIGEgYml0LgorICAgICAgICAoV2ViQ29yZTo6c3R5bGVQcm9wZXJ0eUdldHRlcik6IFJl
ZmFjdG9yIHRvIHNpbXBsaWZ5IHN0cnVjdHVyZS4KKyAgICAgICAgKFdlYkNvcmU6OnN0eWxlUHJv
cGVydHlHZXR0ZXJQaXhlbE9yUG9zUHJlZml4KTogRGl0dG8uIEFsc28gdXNlIGZsb2F0VmFsdWUu
CisgICAgICAgIChXZWJDb3JlOjpKU0NTU1N0eWxlRGVjbGFyYXRpb246OnB1dERlbGVnYXRlKTog
VXNlIGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZSwKKyAgICAgICAgYW5kIHVzZSBwcm9wYWdhdGVFeGNl
cHRpb24gdG8gaGFuZGxlIEV4Y3BldGlvbk9yLgorICAgICAgICAoV2ViQ29yZTo6SlNDU1NTdHls
ZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKTogVHdlYWsgc3R5bGUgYSBiaXQuCisg
ICAgICAgIChXZWJDb3JlOjpKU0NTU1N0eWxlRGVjbGFyYXRpb246OmdldE93blByb3BlcnR5TmFt
ZXMpOiBVc2UgYSBsYW1iZGEgdG8KKyAgICAgICAgaW5pdGlhbGl6ZSBhIGdsb2JhbCBoZXJlLgor
CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmg6IEFkZGVkIHRvSlNTdHJpbmcg
dG8gc3VwcG9ydCBiaW5kaW5ncyBmb3IKKyAgICAgICAgZnVuY3Rpb25zIHJldHVybmluZyBFeGNl
cHRpb25PcjxTdHJpbmc+LgorCisgICAgICAgICogY3NzL0Jhc2ljU2hhcGVGdW5jdGlvbnMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRvTGVuZ3RoU2l6ZSk6IFVzZSBwYWlyVmFsdWUu
CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VG9DZW50ZXJDb29yZGluYXRlKTogVXNlIHZhbHVl
SUQgYW5kIHBhaXJWYWx1ZS4KKyAgICAgICAgKFdlYkNvcmU6OmNzc1ZhbHVlVG9CYXNpY1NoYXBl
UmFkaXVzKTogRGl0dG8uCisgICAgICAgICogY3NzL0NTU0Jhc2ljU2hhcGVzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnNlcmlhbGl6ZVBvc2l0aW9uT2Zmc2V0KTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpidWlsZFNlcmlhbGl6YWJsZVBvc2l0aW9uT2Zmc2V0KTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpDU1NCYXNpY1NoYXBlQ2lyY2xlOjpjc3NUZXh0KTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpDU1NCYXNpY1NoYXBlRWxsaXBzZTo6Y3NzVGV4dCk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6dXBkYXRlQ29ybmVyUmFkaXVzV2lkdGhBbmRIZWlnaHQpOiBEaXR0by4KKyAg
ICAgICAgKiBjc3MvQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmg6IFVzZSBxdWFkVmFsdWUuCisg
ICAgICAgICogY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
ZGV0ZXJtaW5lQ2F0ZWdvcnkpOiBVc2UgZmxvYXRWYWx1ZSBhbmQgZG91YmxlVmFsdWUuCisKKyAg
ICAgICAgKiBjc3MvQ1NTQ2hhcnNldFJ1bGUuaDogVXNlIEV4Y2VwdGlvbk9yLiBBbHNvIG1hZGUg
bW9yZSB0aGluZ3MgcHJpdmF0ZS4KKyAgICAgICAgKiBjc3MvQ1NTQ2hhcnNldFJ1bGUuaWRsOiBV
c2Ugbm9uLWxlZ2FjeSBleGNlcHRpb25zLgorCisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb246OnNldENzc1RleHQpOiBVc2UgRXhjZXB0aW9uT3IuCisgICAgICAgIChXZWJDb3Jl
OjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eU1hdGNoZXMpOiBVc2UgdmFsdWVJRC4K
KyAgICAgICAgKFdlYkNvcmU6OkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6c2V0UHJvcGVy
dHkpOiBVc2UgRXhjZXB0aW9uT3IuCisgICAgICAgIChXZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb246OnJlbW92ZVByb3BlcnR5KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpD
U1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OnNldFByb3BlcnR5SW50ZXJuYWwpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkNvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldEJhY2tncm91bmRT
aG9ydGhhbmRWYWx1ZSk6IFJldHVybgorICAgICAgICBhIFJlZiBpbnN0ZWFkIG9mIGEgUmVmUHRy
LgorICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaDogVXBkYXRlZCBm
b3IgYWJvdmUgY2hhbmdlcy4KKworICAgICAgICAqIGNzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDU1NDcm9zc2ZhZGVWYWx1ZTo6Zml4ZWRTaXplKTogVXNlIGZs
b2F0VmFsdWUuCisgICAgICAgIChXZWJDb3JlOjpDU1NDcm9zc2ZhZGVWYWx1ZTo6aW1hZ2UpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0Nyb3NzZmFkZVZhbHVlOjpibGVuZCk6IFVzZSBk
b3VibGVWYWx1ZS4KKworICAgICAgICAqIGNzcy9DU1NGb250RmFjZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NGb250RmFjZTo6Y2FsY3VsYXRlU3R5bGVNYXNrKTogVXNlIHZhbHVlSUQuCisg
ICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZTo6Y2FsY3VsYXRlV2VpZ2h0TWFzayk6IERpdHRv
LgorICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NGb250RmFjZVNldDo6ZmFtaWx5TmFtZUZyb21QcmltaXRpdmUpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OkNTU0ZvbnRGYWNlU2V0OjptYXRjaGluZ0ZhY2VzKTogVXNlIEV4Y2VwdG9pbk9y
LgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTZXQ6OmNoZWNrKTogRGl0dG8uCisgICAg
ICAgICogY3NzL0NTU0ZvbnRGYWNlU2V0Lmg6IFVwZGF0ZWQgZm9yIGFib3ZlIGNoYW5nZXMuCisK
KyAgICAgICAgKiBjc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpj
b21wYXJlU3RvcHMpOiBVc2UgZG91YmxlVmFsdWUuCisgICAgICAgIChXZWJDb3JlOjpDU1NHcmFk
aWVudFZhbHVlOjphZGRTdG9wcyk6IFVzZSBmbG9hdFZhbHVlLgorICAgICAgICAoV2ViQ29yZTo6
cG9zaXRpb25Gcm9tVmFsdWUpOiBVc2UgZmxvYXRWYWx1ZSBhbmQgdmFsdWRJRC4KKyAgICAgICAg
KFdlYkNvcmU6OkNTU0xpbmVhckdyYWRpZW50VmFsdWU6OmN1c3RvbUNTU1RleHQpOiBVc2UgZG91
YmxlVmFsdWUgYW5kIHZhbHVlSUQuCisgICAgICAgIChXZWJDb3JlOjpDU1NMaW5lYXJHcmFkaWVu
dFZhbHVlOjpjcmVhdGVHcmFkaWVudCk6IFVzZSBmbG9hdFZhbHVlIGFuZCB2YWx1ZUlELgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6Y3VzdG9tQ1NTVGV4dCk6IFVz
ZSBkb3VibGVWYWx1ZSBhbmQgdmFsdWVJRC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1JhZGlhbEdy
YWRpZW50VmFsdWU6OnJlc29sdmVSYWRpdXMpOiBVc2UgZmxvYXRWYWx1ZS4KKyAgICAgICAgKFdl
YkNvcmU6OkNTU1JhZGlhbEdyYWRpZW50VmFsdWU6OmNyZWF0ZUdyYWRpZW50KTogVXNlIHZhbHVl
SUQuCisKKyAgICAgICAgKiBjc3MvQ1NTR3JvdXBpbmdSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNTU0dyb3VwaW5nUnVsZTo6aW5zZXJ0UnVsZSk6IFVzZSBFeGNlcHRpb25Pci4KKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0dyb3VwaW5nUnVsZTo6ZGVsZXRlUnVsZSk6IERpdHRvLgorICAgICAg
ICAqIGNzcy9DU1NHcm91cGluZ1J1bGUuaDogVXBkYXRlZCBmb3IgYWJvdmUgY2hhbmdlcy4KKwor
ICAgICAgICAqIGNzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OnN1YmltYWdlSXNQZW5kaW5nKTogVXNlIHZhbHVl
SUQuCisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpjYWNoZWRJbWFn
ZUZvckNTU1ZhbHVlKTogRGl0dG8uCisKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZVNldFZhbHVlOjpmaWxsSW1hZ2VTZXQpOiBV
c2UgZmxvYXRWYWx1ZS4KKworICAgICAgICAqIGNzcy9DU1NNZWRpYVJ1bGUuaWRsOiBVc2Ugbm9u
LWxlZ2FjeSBleGNlcHRpb25zLgorCisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlRGVncmVlcyk6
IFVzZSBkb3VibGVWYWx1ZS4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpz
ZXRGbG9hdFZhbHVlKTogVXNlIEV4Y2VwdGlvbk9yLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJp
bWl0aXZlVmFsdWU6OmdldEZsb2F0VmFsdWUpOiBSZXBsYWNlZCBnZXREb3VibGVWYWx1ZSB3aXRo
IHRoaXMsCisgICAgICAgIHNpbmNlIGdldERvdWJsZVZhbHVlIGlzIHVudXNlZCwgbW92aW5nIHRo
ZSBjYWxsIHRvIGNsYW1wVG8gaW50byB0aGlzIGZ1bmN0aW9uLgorICAgICAgICBBbHNvIGNoYW5n
ZWQgdGhpcyB0byB1c2UgRXhjZXB0aW9uT3IuCisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRp
dmVWYWx1ZTo6ZG91YmxlVmFsdWUpOiBSZW5hbWVkIGZyb20gZ2V0RG91YmxlVmFsdWUuCisgICAg
ICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6ZG91YmxlVmFsdWVJbnRlcm5hbCk6IFVz
ZSBPcHRpb25hbCBpbnN0ZWFkIG9mIGEgYm9vbAorICAgICAgICBhbmQgYW4gb3V0IGFyZ3VtZW50
IHRvIHJldHVybiB0aGUgdmFsdWUgYW5kIGNoZWNrIGZvciB0eXBlIGZhaWx1cmUuCisgICAgICAg
IChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6c2V0U3RyaW5nVmFsdWUpOiBVc2UgRXhjZXB0
aW9uT3IuCisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0U3RyaW5nVmFs
dWUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpzdHJpbmdW
YWx1ZSk6IFJlbmFtZWQgZnJvbSBnZXRTdHJpbmdWYWx1ZS4KKyAgICAgICAgKFdlYkNvcmU6OkNT
U1ByaW1pdGl2ZVZhbHVlOjpnZXRDb3VudGVyVmFsdWUpOiBVc2UgRXhjZXB0aW9uT3IuCisgICAg
ICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0UmVjdFZhbHVlKTogVXNlIEV4Y2Vw
dGlvbk9yLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OmdldFF1YWRWYWx1
ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0TGVu
Z3RoUmVwZWF0VmFsdWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZl
VmFsdWU6OmdldFJHQkNvbG9yVmFsdWUpOiBVc2UgRXhjZXB0aW9uT3IuCisgICAgICAgIChXZWJD
b3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0UGFpclZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpmb3JtYXROdW1iZXJGb3JDdXN0b21DU1NUZXh0
KTogVXNlIG5ldyBuYW1lcyBmb3IgZnVuY3Rpb25zLgorICAgICAgICAqIGNzcy9DU1NQcmltaXRp
dmVWYWx1ZS5oOiBSZW9yZ2FuaXplZCB0aGUgY2xhc3MsIG1vdmVkIGxhcmdlIGlubGluZSBmdW5j
dGlvbiBib2RpZXMKKyAgICAgICAgb3V0IG9mIHRoZSBjbGFzcyBkZWZpbml0aW9uLiBVcGRhdGVk
IGZvciB0aGUgYWJvdmUgY2hhbmdlcy4KKyAgICAgICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWUu
aWRsOiBVc2Ugbm9uLWxlZ2FjeSBleGNlcHRpb25zLgorCisgICAgICAgICogY3NzL0NTU1ByaW1p
dGl2ZVZhbHVlTWFwcGluZ3MuaDogVXNlIHZhbHVlIGluc3RlYWQgb2YgZ2V0VmFsdWUsIGV0Yy4K
KworICAgICAgICAqIGNzcy9DU1NSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1J1bGU6
OnNldENzc1RleHQpOiBVc2UgRXhjZXB0aW9uT3IuCisgICAgICAgICogY3NzL0NTU1J1bGUuaDog
VXBkYXRlZCBmb3IgYWJvdmUgY2hhbmdlLgorICAgICAgICAqIGNzcy9DU1NSdWxlLmlkbDogVXNl
IG5vbi1sZWdhY3kgZXhjZXB0aW9ucy4KKworICAgICAgICAqIGNzcy9DU1NTdHlsZURlY2xhcmF0
aW9uLmg6IFVzZSBFeGNlcHRpb25Pci4KKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVEZWNsYXJhdGlv
bi5pZGw6IFVzZSBub24tbGVnYWN5IGV4Y2VwdGlvbnMuCisKKyAgICAgICAgKiBjc3MvQ1NTU3R5
bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNoZWV0OjpkZXByZWNhdGVk
SW5zZXJ0UnVsZSk6IFVzZSBFeGNlcHRpb25Pci4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxl
U2hlZXQ6Omluc2VydFJ1bGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2hl
ZXQ6OmRlbGV0ZVJ1bGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2hlZXQ6
OmFkZFJ1bGUpOiBEaXR0by4KKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTaGVldC5oOiBVcGRhdGVk
IGZvciB0aGUgYWJvdmUgY2hhbmdlcy4KKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTaGVldC5pZGw6
IFVzZSBub24tbGVnYWN5IGV4Y2VwdGlvbnMuCisKKyAgICAgICAgKiBjc3MvQ1NTU3VwcG9ydHNS
dWxlLmlkbDogVXNlIG5vbi1sZWdhY3kgZXhjZXB0aW9ucy4KKworICAgICAgICAqIGNzcy9DU1NU
b1N0eWxlTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1RvU3R5bGVNYXA6Om1hcEZpbGxB
dHRhY2htZW50KTogVXNlIHZhbHVlSUQgaW5zdGVhZCBvZiBnZXRWYWx1ZUlELCBldGMuCisgICAg
ICAgIChXZWJDb3JlOjpjb252ZXJ0VG9MZW5ndGhTaXplKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpDU1NUb1N0eWxlTWFwOjptYXBGaWxsU2l6ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTVG9TdHlsZU1hcDo6bWFwRmlsbFhQb3NpdGlvbik6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTVG9TdHlsZU1hcDo6bWFwRmlsbFlQb3NpdGlvbik6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6Q1NTVG9TdHlsZU1hcDo6bWFwRmlsbE1hc2tTb3VyY2VUeXBlKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxlTWFwOjptYXBBbmltYXRpb25EaXJlY3Rpb24pOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1RvU3R5bGVNYXA6Om1hcEFuaW1hdGlvbkZpbGxN
b2RlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxlTWFwOjptYXBBbmltYXRp
b25JdGVyYXRpb25Db3VudCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9TdHlsZU1h
cDo6bWFwQW5pbWF0aW9uTmFtZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9TdHls
ZU1hcDo6bWFwQW5pbWF0aW9uUGxheVN0YXRlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpD
U1NUb1N0eWxlTWFwOjptYXBBbmltYXRpb25Qcm9wZXJ0eSk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9uVGltaW5nRnVuY3Rpb24pOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkNTU1RvU3R5bGVNYXA6Om1hcEFuaW1hdGlvblRyaWdnZXIpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1RvU3R5bGVNYXA6Om1hcE5pbmVQaWVjZUltYWdl
U2xpY2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1RvU3R5bGVNYXA6Om1hcE5pbmVQ
aWVjZUltYWdlUXVhZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9TdHlsZU1hcDo6
bWFwTmluZVBpZWNlSW1hZ2VSZXBlYXQpOiBEaXR0by4KKworICAgICAgICAqIGNzcy9DU1NWYWx1
ZS5oOiBVc2UgRXhjZXB0aW9uT3IuCisgICAgICAgICogY3NzL0NTU1ZhbHVlLmlkbDogVXNlIG5v
bi1sZWdhY3kgZXhjZXB0aW9ucy4KKworICAgICAgICAqIGNzcy9Db3VudGVyLmg6IFVzZSBzdHJp
bmdWYWx1ZSBpbnN0ZWFkIG9mIGdldFN0cmluZ1ZhbHVlLCBldGMuCisKKyAgICAgICAgKiBjc3Mv
Rm9udEZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhY2U6OmNyZWF0ZSk6IFVzZSBF
eGNlcHRpb25Pci4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlOjpzZXRGYW1pbHkpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlOjpzZXRTdHlsZSk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udEZhY2U6OnNldFdlaWdodCk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6Rm9udEZhY2U6OnNldFN0cmV0Y2gpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRG
YWNlOjpzZXRVbmljb2RlUmFuZ2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNl
OjpzZXRWYXJpYW50KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZTo6c2V0RmVh
dHVyZVNldHRpbmdzKTogRGl0dG8uCisgICAgICAgICogY3NzL0ZvbnRGYWNlLmg6IFVwZGF0ZWQg
Zm9yIGFib3ZlIGNoYW5nZXMuCisgICAgICAgICogY3NzL0ZvbnRGYWNlLmlkbDogVXNlIG5vbi1s
ZWdhY3kgZXhjZXB0aW9ucy4KKworICAgICAgICAqIGNzcy9Gb250RmFjZVNldC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGb250RmFjZVNldDo6bG9hZCk6IFVzZSBFeGNlcHRpb25Pci4KKyAgICAg
ICAgKFdlYkNvcmU6OkZvbnRGYWNlU2V0OjpjaGVjayk6IERpdHRvLgorICAgICAgICAqIGNzcy9G
b250RmFjZVNldC5oOiBVcGRhdGVkIGZvciBhYm92ZSBjaGFuZ2VzLgorICAgICAgICAqIGNzcy9G
b250RmFjZVNldC5pZGw6IFVzZSBub24tbGVnYWN5IGV4Y2VwdGlvbnMuCisKKyAgICAgICAgKiBj
c3MvRm9udFZhcmlhbnRCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RGb250
VmFyaWFudExpZ2F0dXJlcyk6IFVzZSB2YWx1ZUlEIGluc3RlYWQgb2YgZ2V0VmFsdWVJRCwgZXRj
LgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEZvbnRWYXJpYW50TnVtZXJpYyk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEZvbnRWYXJpYW50RWFzdEFzaWFuKTogRGl0dG8uCisK
KyAgICAgICAgKiBjc3MvTWVkaWFMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhTGlz
dDo6c2V0TWVkaWFUZXh0KTogVXNlIEV4Y2VwdGlvbk9yLgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFMaXN0OjpkZWxldGVNZWRpdW0pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhTGlz
dDo6YXBwZW5kTWVkaXVtKTogRGl0dG8uCisgICAgICAgICogY3NzL01lZGlhTGlzdC5oOiBVcGRh
dGVkIGZvciBhYm92ZSBjaGFuZ2VzLgorICAgICAgICAqIGNzcy9NZWRpYUxpc3QuaWRsOiBVc2Ug
bm9uLWxlZ2FjeSBleGNlcHRpb25zLgorCisgICAgICAgICogY3NzL01lZGlhUXVlcnlFdmFsdWF0
b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZG91YmxlVmFsdWUpOiBVc2UgdmFsdWVJRCBpbnN0
ZWFkIG9mIGdldFZhbHVlSUQsIGV0Yy4KKyAgICAgICAgKFdlYkNvcmU6OmNvbG9yR2FtdXRFdmFs
dWF0ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6aW52ZXJ0ZWRDb2xvcnNFdmFsdWF0ZSk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6b3JpZW50YXRpb25FdmFsdWF0ZSk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6ZXZhbHVhdGVSZXNvbHV0aW9uKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpjb21wdXRlTGVuZ3RoKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjp2aWV3TW9k
ZUV2YWx1YXRlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpob3ZlckV2YWx1YXRlKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpwb2ludGVyRXZhbHVhdGUpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OnByZWZlcnNSZWR1Y2VkTW90aW9uRXZhbHVhdGUpOiBEaXR0by4KKworICAgICAg
ICAqIGNzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpzZXRDc3NUZXh0KTogVXNlIEV4
Y2VwdGlvbk9yLgorICAgICAgICAoV2ViQ29yZTo6UHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0
aW9uOjpzZXRQcm9wZXJ0eSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UHJvcGVydHlTZXRD
U1NTdHlsZURlY2xhcmF0aW9uOjpyZW1vdmVQcm9wZXJ0eSk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6UHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVl
SW50ZXJuYWwpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5U2V0Q1NTU3R5bGVE
ZWNsYXJhdGlvbjo6c2V0UHJvcGVydHlJbnRlcm5hbCk6IERpdHRvLgorICAgICAgICAqIGNzcy9Q
cm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uaDogVXBkYXRlZCBmb3IgYWJvdmUgY2hhbmdl
cy4KKyAgICAgICAgQWxzbyBtYXJrZWQgYSBjb3VwbGUgYWRkaXRpb25hbCBmdW5jdGlvbnMgcHJp
dmF0ZS4KKworICAgICAgICAqIGNzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaDogVXNlIGRvdWJs
ZVZhbHVlIGluc3RlYWQgb2YgZ2V0RG91YmxlVmFsdWUsIGV0Yy4KKyAgICAgICAgKiBjc3MvU3R5
bGVCdWlsZGVyQ3VzdG9tLmg6IERpdHRvLgorICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnRpZXMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0aWVzOjpnZXRMYXllcmVkU2hvcnRo
YW5kVmFsdWUpOiBEaXR0by4KKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpNYXRjaFJlc3VsdDo6YWRkTWF0Y2hlZFByb3Bl
cnRpZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmNvbG9yRnJv
bVByaW1pdGl2ZVZhbHVlSXNEZXJpdmVkRnJvbUVsZW1lbnQpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmNvbG9yRnJvbVByaW1pdGl2ZVZhbHVlKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjcmVhdGVGaWx0ZXJPcGVyYXRpb25zKTog
RGl0dG8uCisgICAgICAgICogY3NzL1RyYW5zZm9ybUZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjp0cmFuc2Zvcm1zRm9yVmFsdWUpOiBEaXR0by4KKyAgICAgICAgKiBjc3MvVmlld3Bv
cnRTdHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZpZXdwb3J0U3R5bGVSZXNv
bHZlcjo6Z2V0Vmlld3BvcnRBcmd1bWVudFZhbHVlKTogRGl0dG8uCisKKyAgICAgICAgKiBjc3Mv
V2ViS2l0Q1NTTWF0cml4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdENTU01hdHJpeDo6
V2ViS2l0Q1NTTWF0cml4KTogVHdlYWtlZCBjb25zdHJ1Y3RvcnMgYSBiaXQsCisgICAgICAgIGdl
dHRpbmcgcmlkIG9mIHRoZSBvbmUgdGhhdCB1c2VzIGFuIEV4Y2VwdGlvbkNvZGUuCisgICAgICAg
IChXZWJDb3JlOjpXZWJLaXRDU1NNYXRyaXg6OmNyZWF0ZSk6IE1vdmVkIGluIGhlcmUsIGFuZCB1
c2UgRXhjZXB0aW9uT3IuCisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NNYXRyaXg6OnNldE1h
dHJpeFZhbHVlKTogVXNlIEV4Y2VwdGlvbk9yLgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NT
TWF0cml4OjptdWx0aXBseSk6IFR3ZWFrIGNvZGluZyBzdHlsZSBhIGJpdC4KKyAgICAgICAgKFdl
YkNvcmU6OldlYktpdENTU01hdHJpeDo6aW52ZXJzZSk6IFVzZSBFeGNlcHRpb25Pci4KKyAgICAg
ICAgKFdlYkNvcmU6OldlYktpdENTU01hdHJpeDo6dHJhbnNsYXRlKTogUmV0dXJuIGEgUmVmIGlu
c3RlYWQgb2YgUmVmUHRyLgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTTWF0cml4OjpzY2Fs
ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTTWF0cml4Ojpyb3RhdGUpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OldlYktpdENTU01hdHJpeDo6cm90YXRlQXhpc0FuZ2xl
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NNYXRyaXg6OnNrZXdYKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NNYXRyaXg6OnNrZXdZKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NNYXRyaXg6OnRvU3RyaW5nKTogVHdlYWtlZCBmb3Jt
YXR0aW5nIGEgYml0LgorICAgICAgICAqIGNzcy9XZWJLaXRDU1NNYXRyaXguaDogVXBkYXRlZCBm
b3IgYWJvdmUgY2hhbmdlcy4KKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTTWF0cml4LmlkbDogVXNl
IG5vbi1sZWdhY3kgZXh0ZW5zaW9ucy4KKworICAgICAgICAqIGNzcy9tYWtlcHJvcC5wbDoKKyAg
ICAgICAgKGhhbmRsZUN1cnJlbnRDb2xvclZhbHVlKTogVXNlIHZhbHVlSUQgaW5zdGVhZCBvZiBn
ZXRWYWx1ZUlELgorICAgICAgICAoZ2VuZXJhdGVWYWx1ZVNldHRlcik6IERpdHRvLgorCisgICAg
ICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFy
c2VyOjpwYXJzZTRWYWx1ZXNGaWxsUG9zaXRpb24pOiBVc2UgdmFsdWVJRCBpbnN0ZWFkIG9mIGdl
dFZhbHVlSUQsIGV0Yy4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2UzVmFsdWVz
RmlsbFBvc2l0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNl
RmlsbFBvc2l0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNl
RmlsbFJlcGVhdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUdy
aWRQb3NpdGlvbik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUdy
aWRUZW1wbGF0ZVJvd3NBbmRBcmVhc0FuZENvbHVtbnMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OmlzR3JpZFRyYWNrRml4ZWRTaXplZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UGFyc2VyOjpwYXJzZVJhZGlhbEdyYWRpZW50KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpD
U1NQYXJzZXI6OnBhcnNlQnVpbHRpbkZpbHRlckFyZ3VtZW50cyk6IERpdHRvLgorCisgICAgICAg
ICogY3NzL3BhcnNlci9DU1NQYXJzZXJWYWx1ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UGFyc2VyVmFsdWU6OmNyZWF0ZUNTU1ZhbHVlKTogUmVtb3ZlZCB0aGUgdW5uZWVkZWQgY2FsbCB0
bworICAgICAgICBzZXRQcmltaXRpdmVUeXBlIGhlcmUuIFRoZSBjcmVhdGVQYXJzZXJPcGVyYXRv
ciByZXR1cm5zIGFuIG9iamVjdCB0aGF0CisgICAgICAgIGFscmVhZHkgaGFzIHRoZSBjb3JyZWN0
IHByaW1pdGl2ZSB0eXBlLgorCisgICAgICAgICogY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNl
ci5jcHA6IFVwZGF0ZWQgbW9zdCBjYXNlcyBvZiBjYWxsaW5nIHRoZSBvbGQKKyAgICAgICAgZ2V0
WFhYVmFsdWUgZnVuY3Rpb25zLCBidXQgbm90IHN1cmUgaWYgaXQncyByaWdodCBzaW5jZSBpdCBp
cyBjb21tZW50ZWQgb3V0CisgICAgICAgIGNvZGUgdGhhdCBJIGRpZCBub3QgY29tcGlsZS4KKwor
ICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y2xhbXBSR0JDb21wb25lbnQp
OiBVc2UgaW50VmFsdWUgaW5zdGVhZCBvZiBnZXRJbnRWYWx1ZSwgZXRjLgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpwYXJzZUhTTFBhcmFtZXRlcnMpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6aXNIb3Jpem9u
dGFsUG9zaXRpb25LZXl3b3JkT25seSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJv
cGVydHlQYXJzZXJIZWxwZXJzOjppc1ZlcnRpY2FsUG9zaXRpb25LZXl3b3JkT25seSk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpwb3NpdGlvbkZy
b21UaHJlZU9yRm91clZhbHVlcyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVy
dHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lUmFkaWFsR3JhZGllbnQpOiBEaXR0by4KKworICAgICAg
ICAqIGRvbS9SYW5nZS5jcHA6IEFkZGVkIG5vdy1uZWVkZWQgaW5jbHVkZSBvZiBFeGNlcHRpb25D
b2RlLmguCisgICAgICAgICogZG9tL1NlbGVjdG9yUXVlcnkuY3BwOiBEaXR0by4KKworICAgICAg
ICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9J
ZGVudGlmaWVyKTogVXNlIHZhbHVlSUQgaW5zdGVhZCBvZiBnZXRWYWx1ZUlELCBldGMuCisgICAg
ICAgIChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6Y29tcHV0ZWRGb250U2l6ZSk6IERpdHRv
LgorICAgICAgICAqIGVkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmlkZW50aWZpZXJGb3JTdHlsZVByb3BlcnR5KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpI
VE1MRWxlbWVudEVxdWl2YWxlbnQ6OnZhbHVlSXNQcmVzZW50SW5TdHlsZSk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjpleHRyYWN0Rm9udFNpemVEZWx0YSk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjp0ZXh0RGlyZWN0aW9uKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OnByZXBhcmVUb0FwcGx5QXQpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkVkaXRpbmdTdHlsZTo6dGV4dERpcmVjdGlvbkZvclNlbGVj
dGlvbik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Zm9udFdlaWdodElzQm9sZCk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6bGVnYWN5Rm9udFNpemVGcm9tQ1NTVmFsdWUpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OmlzVHJhbnNwYXJlbnRDb2xvclZhbHVlKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpoYXNUcmFuc3BhcmVudEJhY2tncm91bmRDb2xvcik6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6YmFja2dyb3VuZENvbG9ySW5FZmZlY3QpOiBEaXR0by4KKworICAgICAg
ICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6YXBwbHlF
ZGl0aW5nU3R5bGVUb0VsZW1lbnQpOiBSZW1vdmVkIElHTk9SRV9FWENFUFRJT047IHRoYXQgaXMK
KyAgICAgICAgd2hhdCB3ZSBkbyBieSBkZWZhdWx0IGZvciB0aGluZ3MgcmV0dXJuaW5nIEV4Y2Vw
dGlvbk9yLgorICAgICAgICAqIGVkaXRpbmcvUmVtb3ZlQ1NTUHJvcGVydHlDb21tYW5kLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbW92ZUNTU1Byb3BlcnR5Q29tbWFuZDo6ZG9BcHBseSk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVtb3ZlQ1NTUHJvcGVydHlDb21tYW5kOjpkb1VuYXBw
bHkpOiBEaXR0by4KKyAgICAgICAgKiBlZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpyZW1vdmVSZWR1
bmRhbnRTdHlsZXNBbmRLZWVwU3R5bGVTcGFuSW5saW5lKTogRGl0dG8uCisKKyAgICAgICAgKiBl
ZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChmbG9hdFZhbHVlRnJvbVBy
aW1pdGl2ZVZhbHVlKTogVXNlIGZsb2F0VmFsdWUgaW5zdGVhZCBvZiBnZXRGbG9hdFZhbHVlLCBl
dGMuCisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJv
cGVydHlNaXNzaW5nT3JFcXVhbFRvTm9uZSk6IERpdHRvLgorCisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvclN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5
bGVTaGVldDo6YWRkUnVsZSk6IFVwZGF0ZWQgdG8gY2FsbCBFeGNlcHRpb25Pci1yZXR1cm5pbmcg
ZnVuY3Rpb25zLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6ZGVsZXRl
UnVsZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6c2V0
U3R5bGVUZXh0KTogRGl0dG8uCisKKyAgICAgICAgKiBzdmcvU1ZHTGVuZ3RoLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0xlbmd0aDo6ZnJvbUNTU1ByaW1pdGl2ZVZhbHVlKTogVXNlIGZsb2F0
VmFsdWUgaW5zdGVhZCBvZiBnZXRGbG9hdFZhbHVlLgorCiAyMDE2LTEwLTE1ICBTYWlkIEFib3Ut
SGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CiAKICAgICAgICAgRGVsZXRlIHRoZSBh
bmltYXRlZCBpbWFnZSBjYXRjaHVwIGNvZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCBiYmVjNDFlNjY0
YTczMTYyYjc2OGZlOTRiYWQ2Y2EzOTFmMDI3YWE1Li5hODdlZjc3M2U0ZmZhOGIxOWNmMzU4YTk4
MTFmYjIyYzcwODllOGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDYgQEAKKzIwMTYt
MTAtMTUgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgQ1NT
IGNsYXNzZXMgZnJvbSBFeGNlcHRpb25Db2RlIHRvIEV4Y2VwdGlvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDk0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBET00vRE9NQ1NTTWVkaWFSdWxlLm1t
OgorICAgICAgICAoLVtET01DU1NNZWRpYVJ1bGUgaW5zZXJ0UnVsZTppbmRleDpdKTogVXNlIHJh
aXNlT25ET01FcnJvcgorICAgICAgICB0aGUgbmV3IHdheSB0byBoYW5kbGUgRXhjZXB0aW9uT3Ig
aW5zdGVhZCBvZiBFeGNlcHRpb25Db2RlLgorICAgICAgICAoLVtET01DU1NNZWRpYVJ1bGUgZGVs
ZXRlUnVsZTpdKTogRGl0dG8uCisgICAgICAgICogRE9NL0RPTUNTU1ByaW1pdGl2ZVZhbHVlLm1t
OgorICAgICAgICAoLVtET01DU1NQcmltaXRpdmVWYWx1ZSBzZXRGbG9hdFZhbHVlOmZsb2F0VmFs
dWU6XSk6IERpdHRvLgorICAgICAgICAoLVtET01DU1NQcmltaXRpdmVWYWx1ZSBnZXRGbG9hdFZh
bHVlOl0pOiBEaXR0by4KKyAgICAgICAgKC1bRE9NQ1NTUHJpbWl0aXZlVmFsdWUgc2V0U3RyaW5n
VmFsdWU6c3RyaW5nVmFsdWU6XSk6IERpdHRvLgorICAgICAgICAoLVtET01DU1NQcmltaXRpdmVW
YWx1ZSBnZXRTdHJpbmdWYWx1ZV0pOiBEaXR0by4KKyAgICAgICAgKC1bRE9NQ1NTUHJpbWl0aXZl
VmFsdWUgZ2V0Q291bnRlclZhbHVlXSk6IERpdHRvLgorICAgICAgICAoLVtET01DU1NQcmltaXRp
dmVWYWx1ZSBnZXRSZWN0VmFsdWVdKTogRGl0dG8uCisgICAgICAgICgtW0RPTUNTU1ByaW1pdGl2
ZVZhbHVlIGdldFJHQkNvbG9yVmFsdWVdKTogRGl0dG8uCisgICAgICAgICogRE9NL0RPTUNTU1J1
bGUubW06CisgICAgICAgICgtW0RPTUNTU1J1bGUgc2V0Q3NzVGV4dDpdKTogRGl0dG8uCisgICAg
ICAgICogRE9NL0RPTUNTU1N0eWxlRGVjbGFyYXRpb24ubW06CisgICAgICAgICgtW0RPTUNTU1N0
eWxlRGVjbGFyYXRpb24gc2V0Q3NzVGV4dDpdKTogRGl0dG8uCisgICAgICAgICgtW0RPTUNTU1N0
eWxlRGVjbGFyYXRpb24gcmVtb3ZlUHJvcGVydHk6XSk6IERpdHRvLgorICAgICAgICAoLVtET01D
U1NTdHlsZURlY2xhcmF0aW9uIHNldFByb3BlcnR5OnZhbHVlOnByaW9yaXR5Ol0pOiBEaXR0by4K
KyAgICAgICAgKiBET00vRE9NQ1NTU3R5bGVTaGVldC5tbToKKyAgICAgICAgKC1bRE9NQ1NTU3R5
bGVTaGVldCBpbnNlcnRSdWxlOmluZGV4Ol0pOiBEaXR0by4KKyAgICAgICAgKC1bRE9NQ1NTU3R5
bGVTaGVldCBkZWxldGVSdWxlOl0pOiBEaXR0by4KKyAgICAgICAgKC1bRE9NQ1NTU3R5bGVTaGVl
dCBhZGRSdWxlOnN0eWxlOmluZGV4Ol0pOiBEaXR0by4KKyAgICAgICAgKC1bRE9NQ1NTU3R5bGVT
aGVldCByZW1vdmVSdWxlOl0pOiBEaXR0by4KKyAgICAgICAgKiBET00vRE9NQ1NTVmFsdWUubW06
CisgICAgICAgICgtW0RPTUNTU1ZhbHVlIHNldENzc1RleHQ6XSk6IERpdHRvLgorICAgICAgICAq
IERPTS9ET01NZWRpYUxpc3QubW06CisgICAgICAgICgtW0RPTU1lZGlhTGlzdCBzZXRNZWRpYVRl
eHQ6XSk6IERpdHRvLgorICAgICAgICAoLVtET01NZWRpYUxpc3QgZGVsZXRlTWVkaXVtOl0pOiBE
aXR0by4KKyAgICAgICAgKC1bRE9NTWVkaWFMaXN0IGFwcGVuZE1lZGl1bTpdKTogRGl0dG8uCisK
KyAgICAgICAgKiBET00vRXhjZXB0aW9uSGFuZGxlcnMuaDogQWRkZWQgYW4gb3ZlcmxvYWQgb2Yg
cmFpc2VET01FeGNlcHRpb24KKyAgICAgICAgdGhhdCB3b3JrcyB3aXRoIGEgV2ViQ29yZTo6RXhj
ZXB0aW9uJiYgYW5kIG92ZXJsb2FkcyBvZgorICAgICAgICByYWlzZU9uRE9NRXJyb3IgdGhhdCB3
b3JrIHdpdGggV2ViQ29yZTo6RXhjZXB0aW9uT3ImJi4KKyAgICAgICAgKiBET00vRXhjZXB0aW9u
SGFuZGxlcnMubW06CisgICAgICAgIChyYWlzZURPTUV4Y2VwdGlvbik6IEltcGxlbWVudGVkIHRo
ZSBuZXcgdmVyc2lvbi4KKwogMjAxNi0xMC0xNSAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIxOTE2OTkpOiBDb250ZXh0dWFsIG1lbnUgaW4g
TWFpbCBjb21wb3NlIHZpZXcgZG9lc27igJl0IGluY2x1ZGUgYW55IG9mIHRoZSBzdGFuZGFyZCBz
dWJtZW51cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHls
ZURlY2xhcmF0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NT
U3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAKaW5kZXggNGI3ZTMyYjQxM2FlODBjMmQwYTA1OTgx
MjcwYTY5ZmQ1YjQxZjRkOS4uMzVlNGEyMjc1YTY5NGYxOGY1NWY5NzljMDFiMzE5YzcxOWY3NDMx
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xh
cmF0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0
eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwNy0yMDA5LCAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDcsNyArNDcsNiBAQAog
I2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3Ry
aW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KLSNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIApAQCAtNTUs
NiArNTQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQqIHJvb3QoQ1NTU3R5bGVEZWNs
YXJhdGlvbiogc3R5bGUpCiB7CisgICAgQVNTRVJUKHN0eWxlKTsKICAgICBpZiAoYXV0byogcGFy
ZW50UnVsZSA9IHN0eWxlLT5wYXJlbnRSdWxlKCkpCiAgICAgICAgIHJldHVybiByb290KHBhcmVu
dFJ1bGUpOwogICAgIGlmIChhdXRvKiBzdHlsZVNoZWV0ID0gc3R5bGUtPnBhcmVudFN0eWxlU2hl
ZXQoKSkKQEAgLTY5LDI1ICs2OSwxMSBAQCB2b2lkIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6dmlz
aXRBZGRpdGlvbmFsQ2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5h
ZGRPcGFxdWVSb290KHJvb3QoJndyYXBwZWQoKSkpOwogfQogCi1jbGFzcyBDU1NQcm9wZXJ0eUlu
Zm8gewotcHVibGljOgotICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRDsKLSAgICBib29sIGhh
ZFBpeGVsT3JQb3NQcmVmaXg7Ci19OwotCi1lbnVtIFByb3BlcnR5TmFtZVByZWZpeCB7Ci0gICAg
UHJvcGVydHlOYW1lUHJlZml4Tm9uZSwKLSAgICBQcm9wZXJ0eU5hbWVQcmVmaXhDU1MsCi0gICAg
UHJvcGVydHlOYW1lUHJlZml4UGl4ZWwsCi0gICAgUHJvcGVydHlOYW1lUHJlZml4UG9zLAorZW51
bSBjbGFzcyBQcm9wZXJ0eU5hbWVQcmVmaXggeworICAgIE5vbmUsIEVwdWIsIENTUywgUGl4ZWws
IFBvcywgV2ViS2l0LAogI2lmIEVOQUJMRShMRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykKLSAg
ICBQcm9wZXJ0eU5hbWVQcmVmaXhBcHBsZSwKKyAgICBBcHBsZSwgS0hUTUwsCiAjZW5kaWYKLSAg
ICBQcm9wZXJ0eU5hbWVQcmVmaXhFcHViLAotI2lmIEVOQUJMRShMRUdBQ1lfQ1NTX1ZFTkRPUl9Q
UkVGSVhFUykKLSAgICBQcm9wZXJ0eU5hbWVQcmVmaXhLSFRNTCwKLSNlbmRpZgotICAgIFByb3Bl
cnR5TmFtZVByZWZpeFdlYktpdAogfTsKIAogdGVtcGxhdGU8c2l6ZV90IHByZWZpeENTdHJpbmdM
ZW5ndGg+CkBAIC0xMDcsNyArOTMsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgbWF0Y2hlc0NTU1By
b3BlcnR5TmFtZVByZWZpeChjb25zdCBTdHJpbmdJbXBsJiBwcm9wZXJ0eU5hbWUsCiAKICAgICAv
LyBUaGUgcHJlZml4IHdpdGhpbiB0aGUgcHJvcGVydHkgbmFtZSBtdXN0IGJlIGZvbGxvd2VkIGJ5
IGEgY2FwaXRhbCBsZXR0ZXIuCiAgICAgLy8gT3RoZXIgY2hhcmFjdGVycyBpbiB0aGUgcHJlZml4
IHdpdGhpbiB0aGUgcHJvcGVydHkgbmFtZSBtdXN0IGJlIGxvd2VyY2FzZS4KLSAgICBpZiAocHJv
cGVydHlOYW1lLmxlbmd0aCgpIDwgKHByZWZpeExlbmd0aCArIDEpKQorICAgIGlmIChwcm9wZXJ0
eU5hbWUubGVuZ3RoKCkgPCBwcmVmaXhMZW5ndGggKyAxKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBmb3IgKHNpemVfdCBpID0gb2Zmc2V0OyBpIDwgcHJlZml4TGVuZ3RoOyArK2kpIHsK
QEAgLTExNywxMCArMTAzLDExIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBtYXRjaGVzQ1NTUHJvcGVy
dHlOYW1lUHJlZml4KGNvbnN0IFN0cmluZ0ltcGwmIHByb3BlcnR5TmFtZSwKIAogICAgIGlmICgh
aXNBU0NJSVVwcGVyKHByb3BlcnR5TmFtZVtwcmVmaXhMZW5ndGhdKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOworCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBQcm9wZXJ0eU5hbWVQcmVm
aXggZ2V0Q1NTUHJvcGVydHlOYW1lUHJlZml4KGNvbnN0IFN0cmluZ0ltcGwmIHByb3BlcnR5TmFt
ZSkKK3N0YXRpYyBQcm9wZXJ0eU5hbWVQcmVmaXggcHJvcGVydHlOYW1lUHJlZml4KGNvbnN0IFN0
cmluZ0ltcGwmIHByb3BlcnR5TmFtZSkKIHsKICAgICBBU1NFUlQocHJvcGVydHlOYW1lLmxlbmd0
aCgpKTsKIApAQCAtMTMwLDM3ICsxMTcsMzcgQEAgc3RhdGljIFByb3BlcnR5TmFtZVByZWZpeCBn
ZXRDU1NQcm9wZXJ0eU5hbWVQcmVmaXgoY29uc3QgU3RyaW5nSW1wbCYgcHJvcGVydHlOYW0KICNp
ZiBFTkFCTEUoTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMpCiAgICAgY2FzZSAnYSc6CiAgICAg
ICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmxlZ2FjeUNT
U1ZlbmRvclByZWZpeGVzRW5hYmxlZCgpICYmIG1hdGNoZXNDU1NQcm9wZXJ0eU5hbWVQcmVmaXgo
cHJvcGVydHlOYW1lLCAiYXBwbGUiKSkKLSAgICAgICAgICAgIHJldHVybiBQcm9wZXJ0eU5hbWVQ
cmVmaXhBcHBsZTsKKyAgICAgICAgICAgIHJldHVybiBQcm9wZXJ0eU5hbWVQcmVmaXg6OkFwcGxl
OwogICAgICAgICBicmVhazsKICNlbmRpZgogICAgIGNhc2UgJ2MnOgogICAgICAgICBpZiAobWF0
Y2hlc0NTU1Byb3BlcnR5TmFtZVByZWZpeChwcm9wZXJ0eU5hbWUsICJjc3MiKSkKLSAgICAgICAg
ICAgIHJldHVybiBQcm9wZXJ0eU5hbWVQcmVmaXhDU1M7CisgICAgICAgICAgICByZXR1cm4gUHJv
cGVydHlOYW1lUHJlZml4OjpDU1M7CiAgICAgICAgIGJyZWFrOwogI2lmIEVOQUJMRShMRUdBQ1lf
Q1NTX1ZFTkRPUl9QUkVGSVhFUykKICAgICBjYXNlICdrJzoKICAgICAgICAgaWYgKFJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkubGVnYWN5Q1NTVmVuZG9yUHJlZml4ZXNF
bmFibGVkKCkgJiYgbWF0Y2hlc0NTU1Byb3BlcnR5TmFtZVByZWZpeChwcm9wZXJ0eU5hbWUsICJr
aHRtbCIpKQotICAgICAgICAgICAgcmV0dXJuIFByb3BlcnR5TmFtZVByZWZpeEtIVE1MOworICAg
ICAgICAgICAgcmV0dXJuIFByb3BlcnR5TmFtZVByZWZpeDo6S0hUTUw7CiAgICAgICAgIGJyZWFr
OwogI2VuZGlmCiAgICAgY2FzZSAnZSc6CiAgICAgICAgIGlmIChtYXRjaGVzQ1NTUHJvcGVydHlO
YW1lUHJlZml4KHByb3BlcnR5TmFtZSwgImVwdWIiKSkKLSAgICAgICAgICAgIHJldHVybiBQcm9w
ZXJ0eU5hbWVQcmVmaXhFcHViOworICAgICAgICAgICAgcmV0dXJuIFByb3BlcnR5TmFtZVByZWZp
eDo6RXB1YjsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSAncCc6CiAgICAgICAgIGlmIChtYXRj
aGVzQ1NTUHJvcGVydHlOYW1lUHJlZml4KHByb3BlcnR5TmFtZSwgInBvcyIpKQotICAgICAgICAg
ICAgcmV0dXJuIFByb3BlcnR5TmFtZVByZWZpeFBvczsKKyAgICAgICAgICAgIHJldHVybiBQcm9w
ZXJ0eU5hbWVQcmVmaXg6OlBvczsKICAgICAgICAgaWYgKG1hdGNoZXNDU1NQcm9wZXJ0eU5hbWVQ
cmVmaXgocHJvcGVydHlOYW1lLCAicGl4ZWwiKSkKLSAgICAgICAgICAgIHJldHVybiBQcm9wZXJ0
eU5hbWVQcmVmaXhQaXhlbDsKKyAgICAgICAgICAgIHJldHVybiBQcm9wZXJ0eU5hbWVQcmVmaXg6
OlBpeGVsOwogICAgICAgICBicmVhazsKICAgICBjYXNlICd3JzoKICAgICAgICAgaWYgKG1hdGNo
ZXNDU1NQcm9wZXJ0eU5hbWVQcmVmaXgocHJvcGVydHlOYW1lLCAid2Via2l0IikpCi0gICAgICAg
ICAgICByZXR1cm4gUHJvcGVydHlOYW1lUHJlZml4V2ViS2l0OworICAgICAgICAgICAgcmV0dXJu
IFByb3BlcnR5TmFtZVByZWZpeDo6V2ViS2l0OwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0
OgogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgcmV0dXJuIFByb3BlcnR5TmFtZVByZWZpeE5v
bmU7CisgICAgcmV0dXJuIFByb3BlcnR5TmFtZVByZWZpeDo6Tm9uZTsKIH0KIAogc3RhdGljIGlu
bGluZSB2b2lkIHdyaXRlV2ViS2l0UHJlZml4KGNoYXIqJiBidWZmZXIpCkBAIC0xODUsNyArMTcy
LDEyIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCB3cml0ZUVwdWJQcmVmaXgoY2hhciomIGJ1ZmZlcikK
ICAgICAqYnVmZmVyKysgPSAnLSc7CiB9CiAKLXN0YXRpYyBDU1NQcm9wZXJ0eUluZm8gY3NzUHJv
cGVydHlJREZvckpTQ1NTUHJvcGVydHlOYW1lKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitz
dHJ1Y3QgQ1NTUHJvcGVydHlJbmZvIHsKKyAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQ7Cisg
ICAgYm9vbCBoYWRQaXhlbE9yUG9zUHJlZml4OworfTsKKworc3RhdGljIENTU1Byb3BlcnR5SW5m
byBwYXJzZUphdmFTY3JpcHRDU1NQcm9wZXJ0eU5hbWUoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSkKIHsKICAgICBDU1NQcm9wZXJ0eUluZm8gcHJvcGVydHlJbmZvID0ge0NTU1Byb3BlcnR5SW52
YWxpZCwgZmFsc2V9OwogICAgIGJvb2wgaGFkUGl4ZWxPclBvc1ByZWZpeCA9IGZhbHNlOwpAQCAt
MTk4LDcgKzE5MCw3IEBAIHN0YXRpYyBDU1NQcm9wZXJ0eUluZm8gY3NzUHJvcGVydHlJREZvckpT
Q1NTUHJvcGVydHlOYW1lKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hCiAgICAgICAgIHJldHVybiBw
cm9wZXJ0eUluZm87CiAKICAgICBTdHJpbmcgc3RyaW5nRm9yQ2FjaGUgPSBTdHJpbmcocHJvcGVy
dHlOYW1lU3RyaW5nKTsKLSAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBDU1NQcm9wZXJ0eUlu
Zm8+IENTU1Byb3BlcnR5SW5mb01hcDsKKyAgICB1c2luZyBDU1NQcm9wZXJ0eUluZm9NYXAgPSBI
YXNoTWFwPFN0cmluZywgQ1NTUHJvcGVydHlJbmZvPjsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8Q1NTUHJvcGVydHlJbmZvTWFwPiBwcm9wZXJ0eUluZm9DYWNoZTsKICAgICBwcm9wZXJ0eUlu
Zm8gPSBwcm9wZXJ0eUluZm9DYWNoZS5nZXQoKS5nZXQoc3RyaW5nRm9yQ2FjaGUpOwogICAgIGlm
IChwcm9wZXJ0eUluZm8ucHJvcGVydHlJRCkKQEAgLTIxMywzNSArMjA1LDM1IEBAIHN0YXRpYyBD
U1NQcm9wZXJ0eUluZm8gY3NzUHJvcGVydHlJREZvckpTQ1NTUHJvcGVydHlOYW1lKFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hCiAgICAgLy8gUHJlZml4ZXMgQ1NTLCBQaXhlbCwgUG9zIGFyZSBpZ25v
cmVkLgogICAgIC8vIFByZWZpeGVzIEFwcGxlLCBLSFRNTCBhbmQgV2Via2l0IGFyZSB0cmFuc3Bv
c2VkIHRvICItd2Via2l0LSIuCiAgICAgLy8gVGhlIHByZWZpeCAiRXB1YiIgYmVjb21lcyAiLWVw
dWItIi4KLSAgICBzd2l0Y2ggKGdldENTU1Byb3BlcnR5TmFtZVByZWZpeCgqcHJvcGVydHlOYW1l
U3RyaW5nKSkgewotICAgIGNhc2UgUHJvcGVydHlOYW1lUHJlZml4Tm9uZToKKyAgICBzd2l0Y2gg
KHByb3BlcnR5TmFtZVByZWZpeCgqcHJvcGVydHlOYW1lU3RyaW5nKSkgeworICAgIGNhc2UgUHJv
cGVydHlOYW1lUHJlZml4OjpOb25lOgogICAgICAgICBpZiAoaXNBU0NJSVVwcGVyKCgqcHJvcGVy
dHlOYW1lU3RyaW5nKVswXSkpCiAgICAgICAgICAgICByZXR1cm4gcHJvcGVydHlJbmZvOwogICAg
ICAgICBicmVhazsKLSAgICBjYXNlIFByb3BlcnR5TmFtZVByZWZpeENTUzoKKyAgICBjYXNlIFBy
b3BlcnR5TmFtZVByZWZpeDo6Q1NTOgogICAgICAgICBpICs9IDM7CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgUHJvcGVydHlOYW1lUHJlZml4UGl4ZWw6CisgICAgY2FzZSBQcm9wZXJ0eU5hbWVQ
cmVmaXg6OlBpeGVsOgogICAgICAgICBpICs9IDU7CiAgICAgICAgIGhhZFBpeGVsT3JQb3NQcmVm
aXggPSB0cnVlOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFByb3BlcnR5TmFtZVByZWZpeFBv
czoKKyAgICBjYXNlIFByb3BlcnR5TmFtZVByZWZpeDo6UG9zOgogICAgICAgICBpICs9IDM7CiAg
ICAgICAgIGhhZFBpeGVsT3JQb3NQcmVmaXggPSB0cnVlOwogICAgICAgICBicmVhazsKICNpZiBF
TkFCTEUoTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMpCi0gICAgY2FzZSBQcm9wZXJ0eU5hbWVQ
cmVmaXhBcHBsZToKLSAgICBjYXNlIFByb3BlcnR5TmFtZVByZWZpeEtIVE1MOgorICAgIGNhc2Ug
UHJvcGVydHlOYW1lUHJlZml4OjpBcHBsZToKKyAgICBjYXNlIFByb3BlcnR5TmFtZVByZWZpeDo6
S0hUTUw6CiAgICAgICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0
dXJlcygpLmxlZ2FjeUNTU1ZlbmRvclByZWZpeGVzRW5hYmxlZCgpKTsKICAgICAgICAgd3JpdGVX
ZWJLaXRQcmVmaXgoYnVmZmVyUHRyKTsKICAgICAgICAgaSArPSA1OwogICAgICAgICBicmVhazsK
ICNlbmRpZgotICAgIGNhc2UgUHJvcGVydHlOYW1lUHJlZml4RXB1YjoKKyAgICBjYXNlIFByb3Bl
cnR5TmFtZVByZWZpeDo6RXB1YjoKICAgICAgICAgd3JpdGVFcHViUHJlZml4KGJ1ZmZlclB0cik7
CiAgICAgICAgIGkgKz0gNDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQcm9wZXJ0eU5hbWVQ
cmVmaXhXZWJLaXQ6CisgICAgY2FzZSBQcm9wZXJ0eU5hbWVQcmVmaXg6OldlYktpdDoKICAgICAg
ICAgd3JpdGVXZWJLaXRQcmVmaXgoYnVmZmVyUHRyKTsKICAgICAgICAgaSArPSA2OwogICAgICAg
ICBicmVhazsKQEAgLTI1OCw3ICsyNTAsNyBAQCBzdGF0aWMgQ1NTUHJvcGVydHlJbmZvIGNzc1By
b3BlcnR5SURGb3JKU0NTU1Byb3BlcnR5TmFtZShQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYQogCiAg
ICAgZm9yICg7IGkgPCBsZW5ndGg7ICsraSkgewogICAgICAgICBVQ2hhciBjID0gKCpwcm9wZXJ0
eU5hbWVTdHJpbmcpW2ldOwotICAgICAgICBpZiAoIWMgfHwgYyA+PSAweDdGKQorICAgICAgICBp
ZiAoIWMgfHwgIWlzQVNDSUkoYykpCiAgICAgICAgICAgICByZXR1cm4gcHJvcGVydHlJbmZvOyAv
LyBpbGxlZ2FsIGNoYXJhY3RlcgogICAgICAgICBpZiAoaXNBU0NJSVVwcGVyKGMpKSB7CiAgICAg
ICAgICAgICBzaXplX3QgYnVmZmVyU2l6ZUxlZnQgPSBzdHJpbmdFbmQgLSBidWZmZXJQdHI7CkBA
IC0yNjYsNyArMjU4LDcgQEAgc3RhdGljIENTU1Byb3BlcnR5SW5mbyBjc3NQcm9wZXJ0eUlERm9y
SlNDU1NQcm9wZXJ0eU5hbWUoUHJvcGVydHlOYW1lIHByb3BlcnR5TmEKICAgICAgICAgICAgIGlm
IChwcm9wZXJ0eVNpemVMZWZ0ID4gYnVmZmVyU2l6ZUxlZnQpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIHByb3BlcnR5SW5mbzsKICAgICAgICAgICAgICpidWZmZXJQdHIrKyA9ICctJzsKLSAgICAg
ICAgICAgICpidWZmZXJQdHIrKyA9IHRvQVNDSUlMb3dlcihjKTsKKyAgICAgICAgICAgICpidWZm
ZXJQdHIrKyA9IHRvQVNDSUlMb3dlclVuY2hlY2tlZChjKTsKICAgICAgICAgfSBlbHNlCiAgICAg
ICAgICAgICAqYnVmZmVyUHRyKysgPSBjOwogICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9J
TVBMSUNBVElPTihidWZmZXJQdHIgPCBidWZmZXJFbmQpOwpAQCAtMjc5LDkgKzI3MSw4IEBAIHN0
YXRpYyBDU1NQcm9wZXJ0eUluZm8gY3NzUHJvcGVydHlJREZvckpTQ1NTUHJvcGVydHlOYW1lKFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hCiAgICAgY3NzUHJvcGVydHlOYW1lSU9TQWxpYXNpbmcoYnVm
ZmVyLCBuYW1lLCBvdXRwdXRMZW5ndGgpOwogI2VuZGlmCiAKLSAgICBjb25zdCBQcm9wZXJ0eSog
aGFzaFRhYmxlRW50cnkgPSBmaW5kUHJvcGVydHkobmFtZSwgb3V0cHV0TGVuZ3RoKTsKLSAgICBp
bnQgcHJvcGVydHlJRCA9IGhhc2hUYWJsZUVudHJ5ID8gaGFzaFRhYmxlRW50cnktPmlkIDogMDsK
LSAgICBpZiAocHJvcGVydHlJRCkgeworICAgIGF1dG8qIGhhc2hUYWJsZUVudHJ5ID0gZmluZFBy
b3BlcnR5KG5hbWUsIG91dHB1dExlbmd0aCk7CisgICAgaWYgKGF1dG8gcHJvcGVydHlJRCA9IGhh
c2hUYWJsZUVudHJ5ID8gaGFzaFRhYmxlRW50cnktPmlkIDogMCkgewogICAgICAgICBwcm9wZXJ0
eUluZm8uaGFkUGl4ZWxPclBvc1ByZWZpeCA9IGhhZFBpeGVsT3JQb3NQcmVmaXg7CiAgICAgICAg
IHByb3BlcnR5SW5mby5wcm9wZXJ0eUlEID0gc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4ocHJv
cGVydHlJRCk7CiAgICAgICAgIHByb3BlcnR5SW5mb0NhY2hlLmdldCgpLmFkZChzdHJpbmdGb3JD
YWNoZSwgcHJvcGVydHlJbmZvKTsKQEAgLTI4OSw3NiArMjgwLDcxIEBAIHN0YXRpYyBDU1NQcm9w
ZXJ0eUluZm8gY3NzUHJvcGVydHlJREZvckpTQ1NTUHJvcGVydHlOYW1lKFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hCiAgICAgcmV0dXJuIHByb3BlcnR5SW5mbzsKIH0KIAotc3RhdGljIGlubGluZSBK
U1ZhbHVlIGdldFByb3BlcnR5VmFsdWVGYWxsYmFjayhFeGVjU3RhdGUqIGV4ZWMsIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbiogdGhpc09iaiwgdW5zaWduZWQgaW5kZXgpCitzdGF0aWMgaW5saW5lIEpT
VmFsdWUgc3R5bGVQcm9wZXJ0eUdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU0NTU1N0eWxlRGVj
bGFyYXRpb24mIHRoaXNPYmplY3QsIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgY29uc3QgUmVm
UHRyPENTU1ZhbHVlPiYgdmFsdWUpCiB7Ci0gICAgLy8gSWYgdGhlIHByb3BlcnR5IGlzIGEgc2hv
cnRoYW5kIHByb3BlcnR5IChzdWNoIGFzICJwYWRkaW5nIiksCi0gICAgLy8gaXQgY2FuIG9ubHkg
YmUgYWNjZXNzZWQgdXNpbmcgZ2V0UHJvcGVydHlWYWx1ZS4KLSAgICByZXR1cm4ganNTdHJpbmdX
aXRoQ2FjaGUoZXhlYywgdGhpc09iai0+d3JhcHBlZCgpLmdldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihpbmRleCkpKTsKKyAgICBpZiAodmFsdWUpCisg
ICAgICAgIHJldHVybiBqc1N0cmluZ09yTnVsbCgmc3RhdGUsIHZhbHVlLT5jc3NUZXh0KCkpOwor
ICAgIC8vIElmIHRoZSBwcm9wZXJ0eSBpcyBhIHNob3J0aGFuZCBwcm9wZXJ0eSAoc3VjaCBhcyAi
cGFkZGluZyIpLCBpdCBjYW4gb25seSBiZSBhY2Nlc3NlZCB1c2luZyBnZXRQcm9wZXJ0eVZhbHVl
LgorICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZSgmc3RhdGUsIHRoaXNPYmplY3Qud3JhcHBl
ZCgpLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChwcm9wZXJ0eUlEKSk7CiB9CiAKLXN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBjc3NQcm9wZXJ0eUdldHRlclBpeGVsT3JQb3NQcmVmaXgoRXhlY1N0YXRl
KiBleGVjLCBKU0NTU1N0eWxlRGVjbGFyYXRpb24qIHRoaXNPYmosIHVuc2lnbmVkIHByb3BlcnR5
SUQpCitzdGF0aWMgaW5saW5lIEpTVmFsdWUgc3R5bGVQcm9wZXJ0eUdldHRlcihFeGVjU3RhdGUm
IHN0YXRlLCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIENTU1Byb3BlcnR5SUQg
cHJvcGVydHlJRCkKIHsKLSAgICAvLyBTZXQgdXAgcGl4ZWxPclBvcyBib29sZWFuIHRvIGhhbmRs
ZSB0aGUgZmFjdCB0aGF0Ci0gICAgLy8gcGl4ZWxUb3AgcmV0dXJucyAiQ1NTIFRvcCIgYXMgbnVt
YmVyIHZhbHVlIGluIHVuaXQgcGl4ZWxzCi0gICAgLy8gcG9zVG9wIHJldHVybnMgIkNTUyB0b3Ai
IGFzIG51bWJlciB2YWx1ZSBpbiB1bml0IHBpeGVscyBfaWZfIGl0cyBhCi0gICAgLy8gcG9zaXRp
b25lZCBlbGVtZW50LiBpZiBpdCBpcyBub3QgYSBwb3NpdGlvbmVkIGVsZW1lbnQsIHJldHVybiAw
Ci0gICAgLy8gZnJvbSBNU0lFIGRvY3VtZW50YXRpb24gRklYTUU6IElNUExFTUVOVCBUSEFUIChE
aXJrKQotICAgIFJlZlB0cjxDU1NWYWx1ZT4gdiA9IHRoaXNPYmotPndyYXBwZWQoKS5nZXRQcm9w
ZXJ0eUNTU1ZhbHVlSW50ZXJuYWwoc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4ocHJvcGVydHlJ
RCkpOwotICAgIGlmICh2KSB7Ci0gICAgICAgIGlmICh2LT5pc1ByaW1pdGl2ZVZhbHVlKCkpCi0g
ICAgICAgICAgICByZXR1cm4ganNOdW1iZXIoc3RhdGljX3BvaW50ZXJfY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZT4odiktPmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCkpOwot
ICAgICAgICByZXR1cm4ganNTdHJpbmdPck51bGwoZXhlYywgdi0+Y3NzVGV4dCgpKTsKLSAgICB9
Ci0KLSAgICByZXR1cm4gZ2V0UHJvcGVydHlWYWx1ZUZhbGxiYWNrKGV4ZWMsIHRoaXNPYmosIHBy
b3BlcnR5SUQpOworICAgIHJldHVybiBzdHlsZVByb3BlcnR5R2V0dGVyKHN0YXRlLCB0aGlzT2Jq
ZWN0LCBwcm9wZXJ0eUlELCB0aGlzT2JqZWN0LndyYXBwZWQoKS5nZXRQcm9wZXJ0eUNTU1ZhbHVl
SW50ZXJuYWwocHJvcGVydHlJRCkpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTVmFsdWUgY3NzUHJv
cGVydHlHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU0NTU1N0eWxlRGVjbGFyYXRpb24qIHRoaXNP
YmosIHVuc2lnbmVkIHByb3BlcnR5SUQpCitzdGF0aWMgaW5saW5lIEpTVmFsdWUgc3R5bGVQcm9w
ZXJ0eUdldHRlclBpeGVsT3JQb3NQcmVmaXgoRXhlY1N0YXRlJiBzdGF0ZSwgSlNDU1NTdHlsZURl
Y2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQpCiB7Ci0gICAg
UmVmUHRyPENTU1ZhbHVlPiB2ID0gdGhpc09iai0+d3JhcHBlZCgpLmdldFByb3BlcnR5Q1NTVmFs
dWVJbnRlcm5hbChzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihwcm9wZXJ0eUlEKSk7Ci0gICAg
aWYgKHYpCi0gICAgICAgIHJldHVybiBqc1N0cmluZ09yTnVsbChleGVjLCB2LT5jc3NUZXh0KCkp
OworICAgIC8vIENhbGwgdGhpcyB2ZXJzaW9uIG9mIHRoZSBnZXR0ZXIgc28gdGhhdCwgZS5nLiwg
cGl4ZWxUb3AgcmV0dXJucyB0b3AgYXMgYSBudW1iZXIKKyAgICAvLyBpbiBwaXhlbCB1bml0cyBh
bmQgcG9zVG9wIHNob3VsZCBkb2VzIHRoZSBzYW1lIF9pZl8gdGhpcyBpcyBhIHBvc2l0aW9uZWQg
ZWxlbWVudC4KKyAgICAvLyBGSVhNRTogSWYgbm90IGEgcG9zaXRpb25lZCBlbGVtZW50LCBNU0lF
IGRvY3VtZW50YXRpb24gc2F5cyBwb3NUb3Agc2hvdWxkIHJldHVybiAwOyB0aGlzIHJ1bGUgaXMg
bm90IGltcGxlbWVudGVkLgorICAgIGF1dG8gdmFsdWUgPSB0aGlzT2JqZWN0LndyYXBwZWQoKS5n
ZXRQcm9wZXJ0eUNTU1ZhbHVlSW50ZXJuYWwocHJvcGVydHlJRCk7CisgICAgaWYgKGlzPENTU1By
aW1pdGl2ZVZhbHVlPih2YWx1ZS5nZXQoKSkpCisgICAgICAgIHJldHVybiBqc051bWJlcihkb3du
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVlKS5mbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfUFgpKTsKKyAgICByZXR1cm4gc3R5bGVQcm9wZXJ0eUdldHRlcihzdGF0ZSwgdGhp
c09iamVjdCwgcHJvcGVydHlJRCwgdmFsdWUpOworfQogCi0gICAgcmV0dXJuIGdldFByb3BlcnR5
VmFsdWVGYWxsYmFjayhleGVjLCB0aGlzT2JqLCBwcm9wZXJ0eUlEKTsKK3N0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBzdHlsZVByb3BlcnR5R2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgY29uc3QgQ1NTUHJvcGVydHlJbmZvJiBwcm9wZXJ0eUlu
Zm8pCit7CisgICAgaWYgKHByb3BlcnR5SW5mby5oYWRQaXhlbE9yUG9zUHJlZml4KQorICAgICAg
ICByZXR1cm4gc3R5bGVQcm9wZXJ0eUdldHRlclBpeGVsT3JQb3NQcmVmaXgoc3RhdGUsIHRoaXNP
YmplY3QsIHByb3BlcnR5SW5mby5wcm9wZXJ0eUlEKTsKKyAgICByZXR1cm4gc3R5bGVQcm9wZXJ0
eUdldHRlcihzdGF0ZSwgdGhpc09iamVjdCwgcHJvcGVydHlJbmZvLnByb3BlcnR5SUQpOwogfQog
Ci1ib29sIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUo
RXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlJZGVudGlmaWVyLCBQcm9wZXJ0
eVNsb3QmIHNsb3QpCitib29sIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0T3duUHJvcGVydHlT
bG90RGVsZWdhdGUoRXhlY1N0YXRlKiBzdGF0ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90JiBzbG90KQogewotICAgIENTU1Byb3BlcnR5SW5mbyBwcm9wZXJ0eUluZm8g
PSBjc3NQcm9wZXJ0eUlERm9ySlNDU1NQcm9wZXJ0eU5hbWUocHJvcGVydHlJZGVudGlmaWVyKTsK
KyAgICBhdXRvIHByb3BlcnR5SW5mbyA9IHBhcnNlSmF2YVNjcmlwdENTU1Byb3BlcnR5TmFtZShw
cm9wZXJ0eU5hbWUpOwogICAgIGlmICghcHJvcGVydHlJbmZvLnByb3BlcnR5SUQpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgIGlmIChwcm9wZXJ0eUluZm8uaGFkUGl4ZWxPclBvc1ByZWZp
eCkKLSAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzLCBEb250RGVsZXRlLCBjc3NQcm9wZXJ0eUdl
dHRlclBpeGVsT3JQb3NQcmVmaXgoZXhlYywgdGhpcywgcHJvcGVydHlJbmZvLnByb3BlcnR5SUQp
KTsKLSAgICBlbHNlCi0gICAgICAgIHNsb3Quc2V0VmFsdWUodGhpcywgRG9udERlbGV0ZSwgY3Nz
UHJvcGVydHlHZXR0ZXIoZXhlYywgdGhpcywgcHJvcGVydHlJbmZvLnByb3BlcnR5SUQpKTsKKyAg
ICBzbG90LnNldFZhbHVlKHRoaXMsIERvbnREZWxldGUsIHN0eWxlUHJvcGVydHlHZXR0ZXIoKnN0
YXRlLCAqdGhpcywgcHJvcGVydHlJbmZvKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
SlNDU1NTdHlsZURlY2xhcmF0aW9uOjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYsIGJv
b2wmIHB1dFJlc3VsdCkKK2Jvb2wgSlNDU1NTdHlsZURlY2xhcmF0aW9uOjpwdXREZWxlZ2F0ZShF
eGVjU3RhdGUqIHN0YXRlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVl
LCBQdXRQcm9wZXJ0eVNsb3QmLCBib29sJiBwdXRSZXN1bHQpCiB7Ci0gICAgQ1NTUHJvcGVydHlJ
bmZvIHByb3BlcnR5SW5mbyA9IGNzc1Byb3BlcnR5SURGb3JKU0NTU1Byb3BlcnR5TmFtZShwcm9w
ZXJ0eU5hbWUpOworICAgIGF1dG8gcHJvcGVydHlJbmZvID0gcGFyc2VKYXZhU2NyaXB0Q1NTUHJv
cGVydHlOYW1lKHByb3BlcnR5TmFtZSk7CiAgICAgaWYgKCFwcm9wZXJ0eUluZm8ucHJvcGVydHlJ
RCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgU3RyaW5nIHByb3BWYWx1ZSA9IHZhbHVl
VG9TdHJpbmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKGV4ZWMsIHZhbHVlKTsKKyAgICBhdXRv
IHByb3BlcnR5VmFsdWUgPSB2YWx1ZVRvU3RyaW5nVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyhz
dGF0ZSwgdmFsdWUpOwogICAgIGlmIChwcm9wZXJ0eUluZm8uaGFkUGl4ZWxPclBvc1ByZWZpeCkK
LSAgICAgICAgcHJvcFZhbHVlLmFwcGVuZCgicHgiKTsKKyAgICAgICAgcHJvcGVydHlWYWx1ZS5h
cHBlbmQoInB4Iik7CiAKICAgICBib29sIGltcG9ydGFudCA9IGZhbHNlOwogICAgIGlmIChTZXR0
aW5nczo6c2hvdWxkUmVzcGVjdFByaW9yaXR5SW5DU1NBdHRyaWJ1dGVTZXR0ZXJzKCkpIHsKLSAg
ICAgICAgc2l6ZV90IGltcG9ydGFudEluZGV4ID0gcHJvcFZhbHVlLmZpbmQoIiFpbXBvcnRhbnQi
LCAwLCBmYWxzZSk7Ci0gICAgICAgIGlmIChpbXBvcnRhbnRJbmRleCAhPSBub3RGb3VuZCkgewor
ICAgICAgICBhdXRvIGltcG9ydGFudEluZGV4ID0gcHJvcGVydHlWYWx1ZS5maW5kSWdub3JpbmdB
U0NJSUNhc2UoIiFpbXBvcnRhbnQiKTsKKyAgICAgICAgaWYgKGltcG9ydGFudEluZGV4ICYmIGlt
cG9ydGFudEluZGV4ICE9IG5vdEZvdW5kKSB7CiAgICAgICAgICAgICBpbXBvcnRhbnQgPSB0cnVl
OwotICAgICAgICAgICAgcHJvcFZhbHVlID0gcHJvcFZhbHVlLmxlZnQoaW1wb3J0YW50SW5kZXgg
LSAxKTsKKyAgICAgICAgICAgIHByb3BlcnR5VmFsdWUgPSBwcm9wZXJ0eVZhbHVlLmxlZnQoaW1w
b3J0YW50SW5kZXggLSAxKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwotICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCA9IHN0YXRpY19jYXN0PENTU1By
b3BlcnR5SUQ+KHByb3BlcnR5SW5mby5wcm9wZXJ0eUlEKTsKLSAgICBwdXRSZXN1bHQgPSB3cmFw
cGVkKCkuc2V0UHJvcGVydHlJbnRlcm5hbChwcm9wZXJ0eUlELCBwcm9wVmFsdWUsIGltcG9ydGFu
dCwgZWMpOwotICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7Ci0KKyAgICBhdXRvIHNldFBy
b3BlcnR5SW50ZXJuYWxSZXN1bHQgPSB3cmFwcGVkKCkuc2V0UHJvcGVydHlJbnRlcm5hbChwcm9w
ZXJ0eUluZm8ucHJvcGVydHlJRCwgcHJvcGVydHlWYWx1ZSwgaW1wb3J0YW50KTsKKyAgICBpZiAo
c2V0UHJvcGVydHlJbnRlcm5hbFJlc3VsdC5oYXNFeGNlcHRpb24oKSkgeworICAgICAgICBwcm9w
YWdhdGVFeGNlcHRpb24oKnN0YXRlLCBzZXRQcm9wZXJ0eUludGVybmFsUmVzdWx0LnJlbGVhc2VF
eGNlcHRpb24oKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcHV0UmVzdWx0
ID0gc2V0UHJvcGVydHlJbnRlcm5hbFJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzcwLDQyICszNTYsMzcgQEAgSlNWYWx1ZSBKU0NTU1N0eWxl
RGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICBp
ZiAoVU5MSUtFTFkoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0
aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cigmc3RhdGUpKTsKIAotICAgIFN0cmluZyBwcm9wZXJ0eU5hbWUgPSBzdGF0ZS51bmNoZWNrZWRB
cmd1bWVudCgwKS50b1dURlN0cmluZygmc3RhdGUpOworICAgIGF1dG8gcHJvcGVydHlOYW1lID0g
c3RhdGUudW5jaGVja2VkQXJndW1lbnQoMCkudG9XVEZTdHJpbmcoJnN0YXRlKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwogCi0gICAgUmVmUHRyPENTU1ZhbHVl
PiBjc3NWYWx1ZSA9IHdyYXBwZWQoKS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKHByb3BlcnR5TmFtZSk7
Ci0gICAgaWYgKCFjc3NWYWx1ZSkKKyAgICBhdXRvIHZhbHVlID0gd3JhcHBlZCgpLmdldFByb3Bl
cnR5Q1NTVmFsdWUocHJvcGVydHlOYW1lKTsKKyAgICBpZiAoIXZhbHVlKQogICAgICAgICByZXR1
cm4ganNOdWxsKCk7CiAKLSAgICBnbG9iYWxPYmplY3QoKS0+d29ybGQoKS5tX2Nzc1ZhbHVlUm9v
dHMuYWRkKGNzc1ZhbHVlLmdldCgpLCByb290KCZ3cmFwcGVkKCkpKTsgLy8gQmFsYW5jZWQgYnkg
SlNDU1NWYWx1ZU93bmVyOjpmaW5hbGl6ZSgpLgotICAgIHJldHVybiB0b0pTKCZzdGF0ZSwgZ2xv
YmFsT2JqZWN0KCksICpjc3NWYWx1ZSk7CisgICAgZ2xvYmFsT2JqZWN0KCktPndvcmxkKCkubV9j
c3NWYWx1ZVJvb3RzLmFkZCh2YWx1ZS5nZXQoKSwgcm9vdCgmd3JhcHBlZCgpKSk7IC8vIEJhbGFu
Y2VkIGJ5IEpTQ1NTVmFsdWVPd25lcjo6ZmluYWxpemUoKS4KKyAgICByZXR1cm4gdG9KUygmc3Rh
dGUsIGdsb2JhbE9iamVjdCgpLCAqdmFsdWUpOwogfQogCi12b2lkIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbjo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9k
ZSkKK3ZvaWQgSlNDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2Jq
ZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogc3RhdGUsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0
eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKIHsKLSAgICBKU0NTU1N0eWxlRGVjbGFyYXRp
b24qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNDU1NTdHlsZURlY2xhcmF0aW9uKj4ob2JqZWN0KTsK
LSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7Ci0KLSAg
ICB1bnNpZ25lZCBsZW5ndGggPSB0aGlzT2JqZWN0LT53cmFwcGVkKCkubGVuZ3RoKCk7Ci0gICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQotICAgICAgICBwcm9wZXJ0eU5h
bWVzLmFkZChJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIGkpKTsKLQotICAgIHN0YXRpYyBJZGVudGlm
aWVyKiBwcm9wZXJ0eUlkZW50aWZpZXJzID0gMDsKLSAgICBpZiAoIXByb3BlcnR5SWRlbnRpZmll
cnMpIHsKLSAgICAgICAgVmVjdG9yPFN0cmluZywgbnVtQ1NTUHJvcGVydGllcz4ganNQcm9wZXJ0
eU5hbWVzOwotICAgICAgICBmb3IgKGludCBpZCA9IGZpcnN0Q1NTUHJvcGVydHk7IGlkIDwgZmly
c3RDU1NQcm9wZXJ0eSArIG51bUNTU1Byb3BlcnRpZXM7ICsraWQpCi0gICAgICAgICAgICBqc1By
b3BlcnR5TmFtZXMuYXBwZW5kKGdldEpTUHJvcGVydHlOYW1lKHN0YXRpY19jYXN0PENTU1Byb3Bl
cnR5SUQ+KGlkKSkpOwotICAgICAgICBzdGQ6OnNvcnQoanNQcm9wZXJ0eU5hbWVzLmJlZ2luKCks
IGpzUHJvcGVydHlOYW1lcy5lbmQoKSwgV1RGOjpjb2RlUG9pbnRDb21wYXJlTGVzc1RoYW4pOwot
Ci0gICAgICAgIHByb3BlcnR5SWRlbnRpZmllcnMgPSBuZXcgSWRlbnRpZmllcltudW1DU1NQcm9w
ZXJ0aWVzXTsKKyAgICBzdGF0aWMgY29uc3QgSWRlbnRpZmllciogY29uc3QgY3NzUHJvcGVydHlO
YW1lcyA9IFtzdGF0ZV0geworICAgICAgICBTdHJpbmcgbmFtZXNbbnVtQ1NTUHJvcGVydGllc107
CiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtQ1NTUHJvcGVydGllczsgKytpKQotICAg
ICAgICAgICAgcHJvcGVydHlJZGVudGlmaWVyc1tpXSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmco
ZXhlYywganNQcm9wZXJ0eU5hbWVzW2ldKTsKLSAgICB9CisgICAgICAgICAgICBuYW1lc1tpXSA9
IGdldEpTUHJvcGVydHlOYW1lKHN0YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+KGZpcnN0Q1NTUHJv
cGVydHkgKyBpKSk7CisgICAgICAgIHN0ZDo6c29ydCgmbmFtZXNbMF0sICZuYW1lc1tudW1DU1NQ
cm9wZXJ0aWVzXSwgV1RGOjpjb2RlUG9pbnRDb21wYXJlTGVzc1RoYW4pOworICAgICAgICBhdXRv
KiBpZGVudGlmaWVycyA9IG5ldyBJZGVudGlmaWVyW251bUNTU1Byb3BlcnRpZXNdOworICAgICAg
ICBmb3IgKGludCBpID0gMDsgaSA8IG51bUNTU1Byb3BlcnRpZXM7ICsraSkKKyAgICAgICAgICAg
IGlkZW50aWZpZXJzW2ldID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhzdGF0ZSwgbmFtZXNbaV0p
OworICAgICAgICByZXR1cm4gaWRlbnRpZmllcnM7CisgICAgfSgpOwogCisgICAgdW5zaWduZWQg
bGVuZ3RoID0ganNDYXN0PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbio+KG9iamVjdCktPndyYXBwZWQo
KS5sZW5ndGgoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCisg
ICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb20oc3RhdGUsIGkpKTsKICAg
ICBmb3IgKGludCBpID0gMDsgaSA8IG51bUNTU1Byb3BlcnRpZXM7ICsraSkKLSAgICAgICAgcHJv
cGVydHlOYW1lcy5hZGQocHJvcGVydHlJZGVudGlmaWVyc1tpXSk7CisgICAgICAgIHByb3BlcnR5
TmFtZXMuYWRkKGNzc1Byb3BlcnR5TmFtZXNbaV0pOwogCi0gICAgQmFzZTo6Z2V0T3duUHJvcGVy
dHlOYW1lcyh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKKyAgICBCYXNl
OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgc3RhdGUsIHByb3BlcnR5TmFtZXMsIG1vZGUp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NQmluZGluZy5oCmluZGV4IDgzZDMwNjFkZjZhNmYxY2E3NWVmODdlMGI3ZmM3YWIxNGMx
MTQxZTUuLmZlM2NhNTY0ZWFmM2NkY2M3ODg0MWI5ODlkZWQ0MmM5YTZjMjFkYzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCkBAIC05NjUsNCArOTY1LDEzIEBA
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBKU0M6OkpTVmFsdWUgdG9KU051bWJlcihKU0M6
OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6CiAgICAgcmV0dXJuIEpTQzo6anNOdW1iZXIodmFsdWUu
cmVsZWFzZVJldHVyblZhbHVlKCkpOwogfQogCitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlNTdHJp
bmcoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUsIEV4
Y2VwdGlvbk9yPFN0cmluZz4mJiB2YWx1ZSkKK3sKKyAgICBpZiAoVU5MSUtFTFkodmFsdWUuaGFz
RXhjZXB0aW9uKCkpKSB7CisgICAgICAgIHByb3BhZ2F0ZUV4Y2VwdGlvbihzdGF0ZSwgdGhyb3dT
Y29wZSwgdmFsdWUucmVsZWFzZUV4Y2VwdGlvbigpKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAg
ICB9CisgICAgcmV0dXJuIEpTQzo6anNTdHJpbmdXaXRoQ2FjaGUoJnN0YXRlLCB2YWx1ZS5yZWxl
YXNlUmV0dXJuVmFsdWUoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9CYXNpY1NoYXBlRnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9CYXNpY1NoYXBlRnVuY3Rpb25zLmNwcAppbmRleCA0YzQ3ZTEzMTE2ZGViZDE0
ODAzNzgxODFhNmNlNDcxZjUzZWFiYjE2Li4wODg2NGZhMWE2OGU0MWFjN2VkY2RmZGU3ZGI0YWFk
MGIxZjQwZTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQmFzaWNTaGFwZUZ1bmN0
aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0Jhc2ljU2hhcGVGdW5jdGlvbnMuY3Bw
CkBAIC0xNDYsNyArMTQ2LDcgQEAgc3RhdGljIExlbmd0aFNpemUgY29udmVydFRvTGVuZ3RoU2l6
ZShjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW8KICAgICBpZiAoIXZh
bHVlKQogICAgICAgICByZXR1cm4gTGVuZ3RoU2l6ZShMZW5ndGgoMCwgRml4ZWQpLCBMZW5ndGgo
MCwgRml4ZWQpKTsKIAotICAgIFBhaXIqIHBhaXIgPSB2YWx1ZS0+Z2V0UGFpclZhbHVlKCk7Cisg
ICAgUGFpciogcGFpciA9IHZhbHVlLT5wYWlyVmFsdWUoKTsKICAgICByZXR1cm4gTGVuZ3RoU2l6
ZShjb252ZXJ0VG9MZW5ndGgoY29udmVyc2lvbkRhdGEsIHBhaXItPmZpcnN0KCkpLCBjb252ZXJ0
VG9MZW5ndGgoY29udmVyc2lvbkRhdGEsIHBhaXItPnNlY29uZCgpKSk7CiB9CiAKQEAgLTE1OSw5
ICsxNTksOSBAQCBzdGF0aWMgQmFzaWNTaGFwZUNlbnRlckNvb3JkaW5hdGUgY29udmVydFRvQ2Vu
dGVyQ29vcmRpbmF0ZShjb25zdCBDU1NUb0xlbmd0aENvbgogICAgIGlmICghdmFsdWUpCiAgICAg
ICAgIGtleXdvcmQgPSBDU1NWYWx1ZUNlbnRlcjsKICAgICBlbHNlIGlmICh2YWx1ZS0+aXNWYWx1
ZUlEKCkpCi0gICAgICAgIGtleXdvcmQgPSB2YWx1ZS0+Z2V0VmFsdWVJRCgpOwotICAgIGVsc2Ug
aWYgKFBhaXIqIHBhaXIgPSB2YWx1ZS0+Z2V0UGFpclZhbHVlKCkpIHsKLSAgICAgICAga2V5d29y
ZCA9IHBhaXItPmZpcnN0KCktPmdldFZhbHVlSUQoKTsKKyAgICAgICAga2V5d29yZCA9IHZhbHVl
LT52YWx1ZUlEKCk7CisgICAgZWxzZSBpZiAoUGFpciogcGFpciA9IHZhbHVlLT5wYWlyVmFsdWUo
KSkgeworICAgICAgICBrZXl3b3JkID0gcGFpci0+Zmlyc3QoKS0+dmFsdWVJRCgpOwogICAgICAg
ICBvZmZzZXQgPSBjb252ZXJ0VG9MZW5ndGgoY29udmVyc2lvbkRhdGEsIHBhaXItPnNlY29uZCgp
KTsKICAgICB9IGVsc2UKICAgICAgICAgb2Zmc2V0ID0gY29udmVydFRvTGVuZ3RoKGNvbnZlcnNp
b25EYXRhLCB2YWx1ZSk7CkBAIC0xOTQsNyArMTk0LDcgQEAgc3RhdGljIEJhc2ljU2hhcGVSYWRp
dXMgY3NzVmFsdWVUb0Jhc2ljU2hhcGVSYWRpdXMoY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9u
RGEKICAgICAgICAgcmV0dXJuIEJhc2ljU2hhcGVSYWRpdXMoQmFzaWNTaGFwZVJhZGl1czo6Q2xv
c2VzdFNpZGUpOwogCiAgICAgaWYgKHJhZGl1cy0+aXNWYWx1ZUlEKCkpIHsKLSAgICAgICAgc3dp
dGNoIChyYWRpdXMtPmdldFZhbHVlSUQoKSkgeworICAgICAgICBzd2l0Y2ggKHJhZGl1cy0+dmFs
dWVJRCgpKSB7CiAgICAgICAgIGNhc2UgQ1NTVmFsdWVDbG9zZXN0U2lkZToKICAgICAgICAgICAg
IHJldHVybiBCYXNpY1NoYXBlUmFkaXVzKEJhc2ljU2hhcGVSYWRpdXM6OkNsb3Nlc3RTaWRlKTsK
ICAgICAgICAgY2FzZSBDU1NWYWx1ZUZhcnRoZXN0U2lkZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFz
aWNTaGFwZXMuY3BwCmluZGV4IDdlOWNlNzJlZTkxZGRhYjdlY2UwZTk0YmJiNDg3YTIzMGI2Njhk
NTkuLmU0MTI1OTViOGY2Njk1NGNmMjA0ZjRjNmI3YjQyMmYxYWU0MDI1MzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmNwcApAQCAtNDUsOCArNDUsOCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHN0YXRpYyBTdHJpbmcgc2VyaWFsaXplUG9zaXRpb25PZmZzZXQoY29uc3QgUGFp
ciYgb2Zmc2V0LCBjb25zdCBQYWlyJiBvdGhlcikKIHsKLSAgICBpZiAoKG9mZnNldC5maXJzdCgp
LT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVMZWZ0ICYmIG90aGVyLmZpcnN0KCktPmdldFZhbHVl
SUQoKSA9PSBDU1NWYWx1ZVRvcCkKLSAgICAgICAgfHwgKG9mZnNldC5maXJzdCgpLT5nZXRWYWx1
ZUlEKCkgPT0gQ1NTVmFsdWVUb3AgJiYgb3RoZXIuZmlyc3QoKS0+Z2V0VmFsdWVJRCgpID09IENT
U1ZhbHVlTGVmdCkpCisgICAgaWYgKChvZmZzZXQuZmlyc3QoKS0+dmFsdWVJRCgpID09IENTU1Zh
bHVlTGVmdCAmJiBvdGhlci5maXJzdCgpLT52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVUb3ApCisgICAg
ICAgIHx8IChvZmZzZXQuZmlyc3QoKS0+dmFsdWVJRCgpID09IENTU1ZhbHVlVG9wICYmIG90aGVy
LmZpcnN0KCktPnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUxlZnQpKQogICAgICAgICByZXR1cm4gb2Zm
c2V0LnNlY29uZCgpLT5jc3NUZXh0KCk7CiAgICAgcmV0dXJuIG9mZnNldC5jc3NUZXh0KCk7CiB9
CkBAIC01OSw5ICs1OSw5IEBAIHN0YXRpYyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGJ1aWxkU2Vy
aWFsaXphYmxlUG9zaXRpb25PZmZzZXQoQ1NTUHJpbWl0aXZlVmFsdWUqCiAgICAgaWYgKCFvZmZz
ZXQpCiAgICAgICAgIHNpZGUgPSBDU1NWYWx1ZUNlbnRlcjsKICAgICBlbHNlIGlmIChvZmZzZXQt
PmlzVmFsdWVJRCgpKQotICAgICAgICBzaWRlID0gb2Zmc2V0LT5nZXRWYWx1ZUlEKCk7Ci0gICAg
ZWxzZSBpZiAoUGFpciogcGFpciA9IG9mZnNldC0+Z2V0UGFpclZhbHVlKCkpIHsKLSAgICAgICAg
c2lkZSA9IHBhaXItPmZpcnN0KCktPmdldFZhbHVlSUQoKTsKKyAgICAgICAgc2lkZSA9IG9mZnNl
dC0+dmFsdWVJRCgpOworICAgIGVsc2UgaWYgKFBhaXIqIHBhaXIgPSBvZmZzZXQtPnBhaXJWYWx1
ZSgpKSB7CisgICAgICAgIHNpZGUgPSBwYWlyLT5maXJzdCgpLT52YWx1ZUlEKCk7CiAgICAgICAg
IGFtb3VudCA9IHBhaXItPnNlY29uZCgpOwogICAgIH0gZWxzZQogICAgICAgICBhbW91bnQgPSBv
ZmZzZXQ7CkBAIC03Myw4ICs3Myw4IEBAIHN0YXRpYyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGJ1
aWxkU2VyaWFsaXphYmxlUG9zaXRpb25PZmZzZXQoQ1NTUHJpbWl0aXZlVmFsdWUqCiAgICAgfSBl
bHNlIGlmICgoc2lkZSA9PSBDU1NWYWx1ZVJpZ2h0IHx8IHNpZGUgPT0gQ1NTVmFsdWVCb3R0b20p
CiAgICAgICAgICYmIGFtb3VudC0+aXNQZXJjZW50YWdlKCkpIHsKICAgICAgICAgc2lkZSA9IGRl
ZmF1bHRTaWRlOwotICAgICAgICBhbW91bnQgPSBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoTGVu
Z3RoKDEwMCAtIGFtb3VudC0+Z2V0RmxvYXRWYWx1ZSgpLCBQZXJjZW50KSk7Ci0gICAgfSBlbHNl
IGlmIChhbW91bnQtPmlzTGVuZ3RoKCkgJiYgIWFtb3VudC0+Z2V0RmxvYXRWYWx1ZSgpKSB7Cisg
ICAgICAgIGFtb3VudCA9IGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShMZW5ndGgoMTAwIC0gYW1v
dW50LT5mbG9hdFZhbHVlKCksIFBlcmNlbnQpKTsKKyAgICB9IGVsc2UgaWYgKGFtb3VudC0+aXNM
ZW5ndGgoKSAmJiAhYW1vdW50LT5mbG9hdFZhbHVlKCkpIHsKICAgICAgICAgaWYgKHNpZGUgPT0g
Q1NTVmFsdWVSaWdodCB8fCBzaWRlID09IENTU1ZhbHVlQm90dG9tKQogICAgICAgICAgICAgYW1v
dW50ID0gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKExlbmd0aCgxMDAsIFBlcmNlbnQpKTsKICAg
ICAgICAgZWxzZQpAQCAtMTE0LDEyICsxMTQsMTIgQEAgU3RyaW5nIENTU0Jhc2ljU2hhcGVDaXJj
bGU6OmNzc1RleHQoKSBjb25zdAogICAgIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gbm9ybWFsaXpl
ZENZID0gYnVpbGRTZXJpYWxpemFibGVQb3NpdGlvbk9mZnNldChtX2NlbnRlclkuZ2V0KCksIENT
U1ZhbHVlVG9wKTsKIAogICAgIFN0cmluZyByYWRpdXM7Ci0gICAgaWYgKG1fcmFkaXVzICYmIG1f
cmFkaXVzLT5nZXRWYWx1ZUlEKCkgIT0gQ1NTVmFsdWVDbG9zZXN0U2lkZSkKKyAgICBpZiAobV9y
YWRpdXMgJiYgbV9yYWRpdXMtPnZhbHVlSUQoKSAhPSBDU1NWYWx1ZUNsb3Nlc3RTaWRlKQogICAg
ICAgICByYWRpdXMgPSBtX3JhZGl1cy0+Y3NzVGV4dCgpOwogCiAgICAgcmV0dXJuIGJ1aWxkQ2ly
Y2xlU3RyaW5nKHJhZGl1cywKLSAgICAgICAgc2VyaWFsaXplUG9zaXRpb25PZmZzZXQoKm5vcm1h
bGl6ZWRDWC0+Z2V0UGFpclZhbHVlKCksICpub3JtYWxpemVkQ1ktPmdldFBhaXJWYWx1ZSgpKSwK
LSAgICAgICAgc2VyaWFsaXplUG9zaXRpb25PZmZzZXQoKm5vcm1hbGl6ZWRDWS0+Z2V0UGFpclZh
bHVlKCksICpub3JtYWxpemVkQ1gtPmdldFBhaXJWYWx1ZSgpKSk7CisgICAgICAgIHNlcmlhbGl6
ZVBvc2l0aW9uT2Zmc2V0KCpub3JtYWxpemVkQ1gtPnBhaXJWYWx1ZSgpLCAqbm9ybWFsaXplZENZ
LT5wYWlyVmFsdWUoKSksCisgICAgICAgIHNlcmlhbGl6ZVBvc2l0aW9uT2Zmc2V0KCpub3JtYWxp
emVkQ1ktPnBhaXJWYWx1ZSgpLCAqbm9ybWFsaXplZENYLT5wYWlyVmFsdWUoKSkpOwogfQogCiBi
b29sIENTU0Jhc2ljU2hhcGVDaXJjbGU6OmVxdWFscyhjb25zdCBDU1NCYXNpY1NoYXBlJiBzaGFw
ZSkgY29uc3QKQEAgLTE3MywxMSArMTczLDExIEBAIFN0cmluZyBDU1NCYXNpY1NoYXBlRWxsaXBz
ZTo6Y3NzVGV4dCgpIGNvbnN0CiAgICAgU3RyaW5nIHJhZGl1c1g7CiAgICAgU3RyaW5nIHJhZGl1
c1k7CiAgICAgaWYgKG1fcmFkaXVzWCkgewotICAgICAgICBib29sIHNob3VsZFNlcmlhbGl6ZVJh
ZGl1c1hWYWx1ZSA9IG1fcmFkaXVzWC0+Z2V0VmFsdWVJRCgpICE9IENTU1ZhbHVlQ2xvc2VzdFNp
ZGU7CisgICAgICAgIGJvb2wgc2hvdWxkU2VyaWFsaXplUmFkaXVzWFZhbHVlID0gbV9yYWRpdXNY
LT52YWx1ZUlEKCkgIT0gQ1NTVmFsdWVDbG9zZXN0U2lkZTsKICAgICAgICAgYm9vbCBzaG91bGRT
ZXJpYWxpemVSYWRpdXNZVmFsdWUgPSBmYWxzZTsKIAogICAgICAgICBpZiAobV9yYWRpdXNZKSB7
Ci0gICAgICAgICAgICBzaG91bGRTZXJpYWxpemVSYWRpdXNZVmFsdWUgPSBtX3JhZGl1c1ktPmdl
dFZhbHVlSUQoKSAhPSBDU1NWYWx1ZUNsb3Nlc3RTaWRlOworICAgICAgICAgICAgc2hvdWxkU2Vy
aWFsaXplUmFkaXVzWVZhbHVlID0gbV9yYWRpdXNZLT52YWx1ZUlEKCkgIT0gQ1NTVmFsdWVDbG9z
ZXN0U2lkZTsKICAgICAgICAgICAgIGlmIChzaG91bGRTZXJpYWxpemVSYWRpdXNZVmFsdWUpCiAg
ICAgICAgICAgICAgICAgcmFkaXVzWSA9IG1fcmFkaXVzWS0+Y3NzVGV4dCgpOwogICAgICAgICB9
CkBAIC0xODUsOCArMTg1LDggQEAgU3RyaW5nIENTU0Jhc2ljU2hhcGVFbGxpcHNlOjpjc3NUZXh0
KCkgY29uc3QKICAgICAgICAgICAgIHJhZGl1c1ggPSBtX3JhZGl1c1gtPmNzc1RleHQoKTsKICAg
ICB9CiAgICAgcmV0dXJuIGJ1aWxkRWxsaXBzZVN0cmluZyhyYWRpdXNYLCByYWRpdXNZLAotICAg
ICAgICBzZXJpYWxpemVQb3NpdGlvbk9mZnNldCgqbm9ybWFsaXplZENYLT5nZXRQYWlyVmFsdWUo
KSwgKm5vcm1hbGl6ZWRDWS0+Z2V0UGFpclZhbHVlKCkpLAotICAgICAgICBzZXJpYWxpemVQb3Np
dGlvbk9mZnNldCgqbm9ybWFsaXplZENZLT5nZXRQYWlyVmFsdWUoKSwgKm5vcm1hbGl6ZWRDWC0+
Z2V0UGFpclZhbHVlKCkpKTsKKyAgICAgICAgc2VyaWFsaXplUG9zaXRpb25PZmZzZXQoKm5vcm1h
bGl6ZWRDWC0+cGFpclZhbHVlKCksICpub3JtYWxpemVkQ1ktPnBhaXJWYWx1ZSgpKSwKKyAgICAg
ICAgc2VyaWFsaXplUG9zaXRpb25PZmZzZXQoKm5vcm1hbGl6ZWRDWS0+cGFpclZhbHVlKCksICpu
b3JtYWxpemVkQ1gtPnBhaXJWYWx1ZSgpKSk7CiB9CiAKIGJvb2wgQ1NTQmFzaWNTaGFwZUVsbGlw
c2U6OmVxdWFscyhjb25zdCBDU1NCYXNpY1NoYXBlJiBzaGFwZSkgY29uc3QKQEAgLTM4Myw3ICsz
ODMsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgdXBkYXRlQ29ybmVyUmFkaXVzV2lkdGhBbmRIZWln
aHQoQ1NTUHJpbWl0aXZlVmFsdWUqIGNvcm5lciwgUwogICAgIGlmICghY29ybmVyKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBQYWlyKiByYWRpdXMgPSBjb3JuZXItPmdldFBhaXJWYWx1ZSgpOwor
ICAgIFBhaXIqIHJhZGl1cyA9IGNvcm5lci0+cGFpclZhbHVlKCk7CiAgICAgd2lkdGggPSByYWRp
dXMtPmZpcnN0KCkgPyByYWRpdXMtPmZpcnN0KCktPmNzc1RleHQoKSA6IFN0cmluZygiMCIpOwog
ICAgIGlmIChyYWRpdXMtPnNlY29uZCgpKQogICAgICAgICBoZWlnaHQgPSByYWRpdXMtPnNlY29u
ZCgpLT5jc3NUZXh0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQm9yZGVy
SW1hZ2VTbGljZVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1hZ2VTbGlj
ZVZhbHVlLmgKaW5kZXggMDg3MmJkZTRiNjUyYzMzYWM0ZTRmODA5ODdiNzhiNmY1YWQ0M2U1OS4u
MjQwMmYyYzc4Y2NhZWUzYzU2ZWYwOGViNGM1NDI0NmM3ZGEzNGU1ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuaApAQCAtNDEsNyArNDEsNyBAQCBw
dWJsaWM6CiAKICAgICBTdHJpbmcgY3VzdG9tQ1NTVGV4dCgpIGNvbnN0OwogCi0gICAgUXVhZCog
c2xpY2VzKCkgY29uc3QgeyByZXR1cm4gbV9zbGljZXMgPyBtX3NsaWNlcy0+Z2V0UXVhZFZhbHVl
KCkgOiBudWxscHRyOyB9CisgICAgUXVhZCogc2xpY2VzKCkgY29uc3QgeyByZXR1cm4gbV9zbGlj
ZXMgPyBtX3NsaWNlcy0+cXVhZFZhbHVlKCkgOiBudWxscHRyOyB9CiAKICAgICBib29sIGVxdWFs
cyhjb25zdCBDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUmKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwCmluZGV4IDJmMzIxNjczYWE0NWE4MDVjYWFk
YWU2MjAwMjRjMDFmMTY4NGFjMDUuLjU0ZTM0YjU4ZjAxZWY5M2NlYzZhNjRkODI3NTVjOWY5NDY2
ZjI2MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAKQEAg
LTIxNyw3ICsyMTcsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGJvb2wgaXNaZXJvKCkgY29u
c3QgZmluYWwKICAgICB7Ci0gICAgICAgIHJldHVybiAhbV92YWx1ZS0+Z2V0RG91YmxlVmFsdWUo
KTsKKyAgICAgICAgcmV0dXJuICFtX3ZhbHVlLT5kb3VibGVWYWx1ZSgpOwogICAgIH0KIAogICAg
IFN0cmluZyBjdXN0b21DU1NUZXh0KCkgY29uc3QgZmluYWwKQEAgLTIyOSw3ICsyMjksNyBAQCBw
cml2YXRlOgogICAgIHsKICAgICAgICAgc3dpdGNoIChjYXRlZ29yeSgpKSB7CiAgICAgICAgIGNh
c2UgQ2FsY051bWJlcjoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGNF
eHByZXNzaW9uTnVtYmVyPihtX3ZhbHVlLT5nZXRGbG9hdFZhbHVlKCkpOworICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25OdW1iZXI+KG1fdmFsdWUtPmZs
b2F0VmFsdWUoKSk7CiAgICAgICAgIGNhc2UgQ2FsY0xlbmd0aDoKICAgICAgICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPENhbGNFeHByZXNzaW9uTGVuZ3RoPihMZW5ndGgobV92YWx1ZS0+
Y29tcHV0ZUxlbmd0aDxmbG9hdD4oY29udmVyc2lvbkRhdGEpLCBXZWJDb3JlOjpGaXhlZCkpOwog
ICAgICAgICBjYXNlIENhbGNQZXJjZW50OgpAQCAtMjUyLDcgKzI1Miw3IEBAIHByaXZhdGU6CiAg
ICAgZG91YmxlIGRvdWJsZVZhbHVlKCkgY29uc3QgZmluYWwKICAgICB7CiAgICAgICAgIGlmICho
YXNEb3VibGVWYWx1ZShwcmltaXRpdmVUeXBlKCkpKQotICAgICAgICAgICAgcmV0dXJuIG1fdmFs
dWUtPmdldERvdWJsZVZhbHVlKCk7CisgICAgICAgICAgICByZXR1cm4gbV92YWx1ZS0+ZG91Ymxl
VmFsdWUoKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiAw
OwogICAgIH0KQEAgLTI2NCw3ICsyNjQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJu
IG1fdmFsdWUtPmNvbXB1dGVMZW5ndGg8ZG91YmxlPihjb252ZXJzaW9uRGF0YSk7CiAgICAgICAg
IGNhc2UgQ2FsY1BlcmNlbnQ6CiAgICAgICAgIGNhc2UgQ2FsY051bWJlcjoKLSAgICAgICAgICAg
IHJldHVybiBtX3ZhbHVlLT5nZXREb3VibGVWYWx1ZSgpOworICAgICAgICAgICAgcmV0dXJuIG1f
dmFsdWUtPmRvdWJsZVZhbHVlKCk7CiAgICAgICAgIGNhc2UgQ2FsY1BlcmNlbnRMZW5ndGg6CiAg
ICAgICAgIGNhc2UgQ2FsY1BlcmNlbnROdW1iZXI6CiAgICAgICAgIGNhc2UgQ2FsY0FuZ2xlOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NoYXJzZXRSdWxlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTQ2hhcnNldFJ1bGUuaAppbmRleCA1YjY4MDE5ZmI1OTVlM2FiNzgyZDkz
Zjk3NmQ3OWYwZjI4MDhiN2RlLi43YTQxNDBjZGU4N2EzMjBjN2FmOTQzMmFhMWNkMjVkOTVmMjcx
MjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2hhcnNldFJ1bGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2hhcnNldFJ1bGUuaApAQCAtMTksOCArMTksNyBAQAog
ICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCiAgKi8KIAotI2lmbmRlZiBDU1NDaGFyc2V0
UnVsZV9oCi0jZGVmaW5lIENTU0NoYXJzZXRSdWxlX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSAiQ1NTUnVsZS5oIgogCkBAIC0zMywyMiArMzIsMTcgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBDU1NDaGFyc2V0UnVsZShwYXJlbnQsIGVuY29kaW5nKSk7CiAgICAg
fQogCi0gICAgdmlydHVhbCB+Q1NTQ2hhcnNldFJ1bGUoKSB7IH0KLQotICAgIFN0cmluZyBjc3NU
ZXh0KCkgY29uc3QgZmluYWw7Ci0gICAgdm9pZCByZWF0dGFjaChTdHlsZVJ1bGVCYXNlJikgZmlu
YWwgeyB9Ci0KICAgICBjb25zdCBTdHJpbmcmIGVuY29kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9l
bmNvZGluZzsgfQotICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJiBlbmNvZGluZywg
RXhjZXB0aW9uQ29kZSYpIHsgbV9lbmNvZGluZyA9IGVuY29kaW5nOyB9CisgICAgRXhjZXB0aW9u
T3I8dm9pZD4gc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJiBlbmNvZGluZykgeyBtX2VuY29kaW5n
ID0gZW5jb2Rpbmc7IHJldHVybiB7IH07IH0KIAogcHJpdmF0ZToKLSAgICBDU1NSdWxlOjpUeXBl
IHR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBDSEFSU0VUX1JVTEU7IH0KLQogICAgIENTU0No
YXJzZXRSdWxlKENTU1N0eWxlU2hlZXQqIHBhcmVudCwgY29uc3QgU3RyaW5nJiBlbmNvZGluZyk7
CiAKKyAgICBDU1NSdWxlOjpUeXBlIHR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBDSEFSU0VU
X1JVTEU7IH0KKyAgICBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgcmVh
dHRhY2goU3R5bGVSdWxlQmFzZSYpIGZpbmFsIHsgfQorCiAgICAgU3RyaW5nIG1fZW5jb2Rpbmc7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBDU1NDaGFyc2V0UnVs
ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2hhcnNldFJ1bGUuaWRsIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0NoYXJzZXRSdWxlLmlkbAppbmRleCBmOTk1ODE3YTFmNGI3
YjI1NzBlZDA4YjQ4N2NkZTE5ZTk3MjZjMmQ2Li5kZTQxNDBiY2RhZDRjNjJjNjg3YjM2ZjNmODRh
MzI2MTk3NTE1ZDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2hhcnNldFJ1
bGUuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDaGFyc2V0UnVsZS5pZGwKQEAgLTE4
LDggKzE4LDYgQEAKICAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgogICovCiAKLS8vIElu
dHJvZHVjZWQgaW4gRE9NIExldmVsIDI6CiBpbnRlcmZhY2UgQ1NTQ2hhcnNldFJ1bGUgOiBDU1NS
dWxlIHsKLSAgICBbU2V0dGVyTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIGF0dHJpYnV0ZSBET01T
dHJpbmc/IGVuY29kaW5nOworICAgIFtTZXR0ZXJNYXlUaHJvd0V4Y2VwdGlvbl0gYXR0cmlidXRl
IERPTVN0cmluZz8gZW5jb2Rpbmc7CiB9OwotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IDY4NTkxMzFjZmZkMjNjNTY4MzNm
Mjk4M2Q4ZDYyM2VhY2M5N2UzZTAuLjY4MDEzNTJkNmUwZTY1MDRlY2ZhYWJlYTM0ZDAxODdkODRj
OGU5MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24uY3BwCkBAIC0xNjM2LDkgKzE2MzYsOSBAQCBTdHJpbmcgQ1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uOjpjc3NUZXh0KCkgY29uc3QKICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5n
KCk7CiB9CiAKLXZvaWQgQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpzZXRDc3NUZXh0KGNv
bnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8dm9pZD4gQ1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpzZXRDc3NUZXh0KGNvbnN0IFN0cmluZyYpCiB7Ci0gICAg
ZWMgPSBOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlI7CisgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IE5PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUiB9OwogfQogCiBSZWZQdHI8Q1NTUHJpbWl0aXZl
VmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldEZvbnRTaXplQ1NTVmFsdWVQcmVmZXJy
aW5nS2V5d29yZCgpIGNvbnN0CkBAIC00MDAxLDcgKzQwMDEsNyBAQCBib29sIENvbXB1dGVkU3R5
bGVFeHRyYWN0b3I6OnByb3BlcnR5TWF0Y2hlcyhDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIGNv
bnN0IENTUwogICAgICAgICBpZiAoYXV0byogc3R5bGUgPSBtX25vZGUtPmNvbXB1dGVkU3R5bGUo
bV9wc2V1ZG9FbGVtZW50U3BlY2lmaWVyKSkgewogICAgICAgICAgICAgaWYgKENTU1ZhbHVlSUQg
c2l6ZUlkZW50aWZpZXIgPSBzdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkua2V5d29yZFNpemVBc0lk
ZW50aWZpZXIoKSkgewogICAgICAgICAgICAgICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93
bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgaWYgKHBy
aW1pdGl2ZVZhbHVlLmlzVmFsdWVJRCgpICYmIHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQoKSA9
PSBzaXplSWRlbnRpZmllcikKKyAgICAgICAgICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUuaXNW
YWx1ZUlEKCkgJiYgcHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IHNpemVJZGVudGlmaWVyKQog
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQpAQCAtNDExOSwxNSArNDExOSwxNCBAQCBib29sIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bjo6aXNQcm9wZXJ0eUltcGxpY2l0KGNvbnN0IFN0cmluZyYpCiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi12b2lkIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6c2V0UHJvcGVydHkoY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYgZWMp
CitFeGNlcHRpb25Pcjx2b2lkPiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OnNldFByb3Bl
cnR5KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAg
ZWMgPSBOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlI7CisgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IE5PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUiB9OwogfQogCi1TdHJpbmcgQ1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uOjpyZW1vdmVQcm9wZXJ0eShjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25D
b2RlJiBlYykKK0V4Y2VwdGlvbk9yPFN0cmluZz4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
OjpyZW1vdmVQcm9wZXJ0eShjb25zdCBTdHJpbmcmKQogewotICAgIGVjID0gTk9fTU9ESUZJQ0FU
SU9OX0FMTE9XRURfRVJSOwotICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICByZXR1cm4gRXhjZXB0
aW9uIHsgTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSIH07CiB9CiAgICAgCiBSZWZQdHI8Q1NT
VmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZUlu
dGVybmFsKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkKQEAgLTQxNDAsMjEgKzQxMzksMTcgQEAg
U3RyaW5nIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKENTU1Byb3BlcnR5SUQgcHJvcGUKICAgICByZXR1cm4gZ2V0UHJvcGVydHlWYWx1ZShwcm9w
ZXJ0eUlEKTsKIH0KIAotYm9vbCBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OnNldFByb3Bl
cnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiwgYm9vbCwgRXhjZXB0aW9u
Q29kZSYgZWMpCitFeGNlcHRpb25Pcjxib29sPiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246
OnNldFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiwgYm9vbCkK
IHsKLSAgICBlYyA9IE5PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUjsKLSAgICByZXR1cm4gZmFs
c2U7CisgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUiB9
OwogfQogCi1SZWZQdHI8Q1NTVmFsdWVMaXN0PiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpnZXRC
YWNrZ3JvdW5kU2hvcnRoYW5kVmFsdWUoKSBjb25zdAorUmVmPENTU1ZhbHVlTGlzdD4gQ29tcHV0
ZWRTdHlsZUV4dHJhY3Rvcjo6Z2V0QmFja2dyb3VuZFNob3J0aGFuZFZhbHVlKCkgY29uc3QKIHsK
LSAgICBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0aWVzQmVmb3JlU2xhc2hTZXBl
cmF0b3JbNV0gPSB7IENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCBDU1NQcm9wZXJ0eUJhY2tn
cm91bmRJbWFnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdCwgQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kQXR0YWNobWVudCwgIAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlC
YWNrZ3JvdW5kUG9zaXRpb24gfTsKLSAgICBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBwcm9w
ZXJ0aWVzQWZ0ZXJTbGFzaFNlcGVyYXRvclszXSA9IHsgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kU2l6
ZSwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kT3JpZ2luLCAKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlC
YWNrZ3JvdW5kQ2xpcCB9OworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIHByb3BlcnRp
ZXNCZWZvcmVTbGFzaFNlcGVyYXRvcls1XSA9IHsgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3Is
IENTU1Byb3BlcnR5QmFja2dyb3VuZEltYWdlLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXQs
IENTU1Byb3BlcnR5QmFja2dyb3VuZEF0dGFjaG1lbnQsIENTU1Byb3BlcnR5QmFja2dyb3VuZFBv
c2l0aW9uIH07CisgICAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgcHJvcGVydGllc0FmdGVy
U2xhc2hTZXBlcmF0b3JbM10gPSB7IENTU1Byb3BlcnR5QmFja2dyb3VuZFNpemUsIENTU1Byb3Bl
cnR5QmFja2dyb3VuZE9yaWdpbiwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ2xpcCB9OwogCi0gICAg
UmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU2xhc2hTZXBh
cmF0ZWQoKTsKKyAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNsYXNoU2VwYXJh
dGVkKCk7CiAgICAgbGlzdC0+YXBwZW5kKCpnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNob3J0aGFu
ZFByb3BlcnRpZXMoU3R5bGVQcm9wZXJ0eVNob3J0aGFuZChDU1NQcm9wZXJ0eUJhY2tncm91bmQs
IHByb3BlcnRpZXNCZWZvcmVTbGFzaFNlcGVyYXRvcikpKTsKICAgICBsaXN0LT5hcHBlbmQoKmdl
dENTU1Byb3BlcnR5VmFsdWVzRm9yU2hvcnRoYW5kUHJvcGVydGllcyhTdHlsZVByb3BlcnR5U2hv
cnRoYW5kKENTU1Byb3BlcnR5QmFja2dyb3VuZCwgcHJvcGVydGllc0FmdGVyU2xhc2hTZXBlcmF0
b3IpKSk7CiAgICAgcmV0dXJuIGxpc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgKaW5kZXggYTg5MTcwNWI4NWI1NzYyYmU0NWQ4ZmY4ODVh
MzZlNmNhYzQzODgxMC4uNTU0MjJlZTcxNWY1NmNiNzdiMjQ5OWM3YjY1YTZiYTBhMzJiNGMzYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24u
aApAQCAtMTgsOCArMTgsNyBAQAogICogMDIxMTAtMTMwMSAgVVNBCiAgKi8KIAotI2lmbmRlZiBD
U1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb25faAotI2RlZmluZSBDU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb25faAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDU1NTdHlsZURlY2xhcmF0aW9u
LmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGVDb25zdGFudHMuaCIKQEAgLTc4LDcgKzc3LDcgQEAg
cHJpdmF0ZToKIAogICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGdldENTU1Byb3BlcnR5VmFsdWVz
Rm9yU2hvcnRoYW5kUHJvcGVydGllcyhjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJikgY29u
c3Q7CiAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gZ2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaWRl
c1Nob3J0aGFuZChjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJikgY29uc3Q7Ci0gICAgUmVm
UHRyPENTU1ZhbHVlTGlzdD4gZ2V0QmFja2dyb3VuZFNob3J0aGFuZFZhbHVlKCkgY29uc3Q7Cisg
ICAgUmVmPENTU1ZhbHVlTGlzdD4gZ2V0QmFja2dyb3VuZFNob3J0aGFuZFZhbHVlKCkgY29uc3Q7
CiAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gZ2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JHcmlkU2hv
cnRoYW5kKGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmKSBjb25zdDsKIAogICAgIFJlZlB0
cjxOb2RlPiBtX25vZGU7CkBAIC0xMTEsMTMgKzExMCwxMyBAQCBwcml2YXRlOgogICAgIFN0cmlu
ZyBnZXRQcm9wZXJ0eVByaW9yaXR5KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKSBmaW5hbDsK
ICAgICBTdHJpbmcgZ2V0UHJvcGVydHlTaG9ydGhhbmQoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5h
bWUpIGZpbmFsOwogICAgIGJvb2wgaXNQcm9wZXJ0eUltcGxpY2l0KGNvbnN0IFN0cmluZyYgcHJv
cGVydHlOYW1lKSBmaW5hbDsKLSAgICB2b2lkIHNldFByb3BlcnR5KGNvbnN0IFN0cmluZyYgcHJv
cGVydHlOYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBjb25zdCBTdHJpbmcmIHByaW9yaXR5LCBF
eGNlcHRpb25Db2RlJikgZmluYWw7Ci0gICAgU3RyaW5nIHJlbW92ZVByb3BlcnR5KGNvbnN0IFN0
cmluZyYgcHJvcGVydHlOYW1lLCBFeGNlcHRpb25Db2RlJikgZmluYWw7CisgICAgRXhjZXB0aW9u
T3I8dm9pZD4gc2V0UHJvcGVydHkoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFN0
cmluZyYgdmFsdWUsIGNvbnN0IFN0cmluZyYgcHJpb3JpdHkpIGZpbmFsOworICAgIEV4Y2VwdGlv
bk9yPFN0cmluZz4gcmVtb3ZlUHJvcGVydHkoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpIGZp
bmFsOwogICAgIFN0cmluZyBjc3NUZXh0KCkgY29uc3QgZmluYWw7Ci0gICAgdm9pZCBzZXRDc3NU
ZXh0KGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKSBmaW5hbDsKKyAgICBFeGNlcHRpb25P
cjx2b2lkPiBzZXRDc3NUZXh0KGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFJlZlB0cjxDU1NW
YWx1ZT4gZ2V0UHJvcGVydHlDU1NWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5SUQpIGZpbmFsOwog
ICAgIFN0cmluZyBnZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlJRCkgZmluYWw7
Ci0gICAgYm9vbCBzZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5SUQsIGNvbnN0IFN0cmlu
ZyYgdmFsdWUsIGJvb2wgaW1wb3J0YW50LCBFeGNlcHRpb25Db2RlJikgZmluYWw7CisgICAgRXhj
ZXB0aW9uT3I8Ym9vbD4gc2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eUlELCBjb25zdCBT
dHJpbmcmIHZhbHVlLCBib29sIGltcG9ydGFudCkgZmluYWw7CiAgICAgUmVmPE11dGFibGVTdHls
ZVByb3BlcnRpZXM+IGNvcHlQcm9wZXJ0aWVzKCkgY29uc3QgZmluYWw7CiAKICAgICBSZWZQdHI8
Q1NTVmFsdWU+IGdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlJRCwgRVVwZGF0ZUxheW91
dCA9IFVwZGF0ZUxheW91dCkgY29uc3Q7CkBAIC0xMjksNSArMTI4LDMgQEAgcHJpdmF0ZToKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIENTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRl
VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmNwcAppbmRl
eCAwY2Y3OWJjYzZiMWM4NDQ4NTZkYWIxZThiYzA3N2M5MTQyYjU0ZjVmLi4zMTQ3M2QyMzM0MTU2
ODFhNmY2MzIxNGFhOTM1YzNjNzdmMzVlMzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9z
c2ZhZGVWYWx1ZS5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgU3RyaW5nIENTU0Nyb3NzZmFkZVZhbHVl
OjpjdXN0b21DU1NUZXh0KCkgY29uc3QKIAogRmxvYXRTaXplIENTU0Nyb3NzZmFkZVZhbHVlOjpm
aXhlZFNpemUoY29uc3QgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIpCiB7Ci0gICAgZmxvYXQgcGVy
Y2VudGFnZSA9IG1fcGVyY2VudGFnZVZhbHVlLT5nZXRGbG9hdFZhbHVlKCk7CisgICAgZmxvYXQg
cGVyY2VudGFnZSA9IG1fcGVyY2VudGFnZVZhbHVlLT5mbG9hdFZhbHVlKCk7CiAgICAgZmxvYXQg
aW52ZXJzZVBlcmNlbnRhZ2UgPSAxIC0gcGVyY2VudGFnZTsKIAogICAgIC8vIEZJWE1FOiBTa2lw
IENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGNoZWNrIHdoZW4gY3Jvc3MgZmFkZSBpcyBhcHBsaWVk
IHRvIGFuIGVsZW1lbnQgaW4gYSB1c2VyIGFnZW50IHNoYWRvdyB0cmVlLgpAQCAtMTY4LDcgKzE2
OCw3IEBAIFJlZlB0cjxJbWFnZT4gQ1NTQ3Jvc3NmYWRlVmFsdWU6OmltYWdlKFJlbmRlckVsZW1l
bnQqIHJlbmRlcmVyLCBjb25zdCBGbG9hdFNpemUmCiAgICAgaWYgKCFmcm9tSW1hZ2UgfHwgIXRv
SW1hZ2UpCiAgICAgICAgIHJldHVybiBJbWFnZTo6bnVsbEltYWdlKCk7CiAKLSAgICBtX2dlbmVy
YXRlZEltYWdlID0gQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmNyZWF0ZSgqZnJvbUltYWdlLCAq
dG9JbWFnZSwgbV9wZXJjZW50YWdlVmFsdWUtPmdldEZsb2F0VmFsdWUoKSwgZml4ZWRTaXplKHJl
bmRlcmVyKSwgc2l6ZSk7CisgICAgbV9nZW5lcmF0ZWRJbWFnZSA9IENyb3NzZmFkZUdlbmVyYXRl
ZEltYWdlOjpjcmVhdGUoKmZyb21JbWFnZSwgKnRvSW1hZ2UsIG1fcGVyY2VudGFnZVZhbHVlLT5m
bG9hdFZhbHVlKCksIGZpeGVkU2l6ZShyZW5kZXJlciksIHNpemUpOwogCiAgICAgcmV0dXJuIG1f
Z2VuZXJhdGVkSW1hZ2U7CiB9CkBAIC0yMDIsMTAgKzIwMiwxMCBAQCBSZWZQdHI8Q1NTQ3Jvc3Nm
YWRlVmFsdWU+IENTU0Nyb3NzZmFkZVZhbHVlOjpibGVuZChjb25zdCBDU1NDcm9zc2ZhZGVWYWx1
ZSYgZnJvbQogICAgIGF1dG8gZnJvbUltYWdlVmFsdWUgPSBDU1NJbWFnZVZhbHVlOjpjcmVhdGUo
Km1fY2FjaGVkRnJvbUltYWdlKTsKICAgICBhdXRvIHRvSW1hZ2VWYWx1ZSA9IENTU0ltYWdlVmFs
dWU6OmNyZWF0ZSgqbV9jYWNoZWRUb0ltYWdlKTsKIAotICAgIGRvdWJsZSBmcm9tUGVyY2VudGFn
ZSA9IGZyb20ubV9wZXJjZW50YWdlVmFsdWUtPmdldERvdWJsZVZhbHVlKCk7CisgICAgZG91Ymxl
IGZyb21QZXJjZW50YWdlID0gZnJvbS5tX3BlcmNlbnRhZ2VWYWx1ZS0+ZG91YmxlVmFsdWUoKTsK
ICAgICBpZiAoZnJvbS5tX3BlcmNlbnRhZ2VWYWx1ZS0+aXNQZXJjZW50YWdlKCkpCiAgICAgICAg
IGZyb21QZXJjZW50YWdlIC89IDEwMC4wOwotICAgIGRvdWJsZSB0b1BlcmNlbnRhZ2UgPSBtX3Bl
cmNlbnRhZ2VWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKTsKKyAgICBkb3VibGUgdG9QZXJjZW50YWdl
ID0gbV9wZXJjZW50YWdlVmFsdWUtPmRvdWJsZVZhbHVlKCk7CiAgICAgaWYgKG1fcGVyY2VudGFn
ZVZhbHVlLT5pc1BlcmNlbnRhZ2UoKSkKICAgICAgICAgdG9QZXJjZW50YWdlIC89IDEwMC4wOwog
ICAgIGF1dG8gcGVyY2VudGFnZVZhbHVlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShibGVu
ZEZ1bmMoZnJvbVBlcmNlbnRhZ2UsIHRvUGVyY2VudGFnZSwgcHJvZ3Jlc3MpLCBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX05VTUJFUik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Rm9udEZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmNwcAppbmRleCA1
MTgyYWY3YjI3YTEzN2Y0NDY2MzBkN2E0NjhkNDA4M2MxZTgwMThmLi5hNzU0MDFiZjUyYjhhNDU0
MTJiNzE5YjQ5NGQyZmU1OWNkYTJjZGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRm9udEZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5jcHAK
QEAgLTEyOSw3ICsxMjksNyBAQCBPcHRpb25hbDxGb250VHJhaXRzTWFzaz4gQ1NTRm9udEZhY2U6
OmNhbGN1bGF0ZVN0eWxlTWFzayhDU1NWYWx1ZSYgc3R5bGUpCiAgICAgaWYgKCFpczxDU1NQcmlt
aXRpdmVWYWx1ZT4oc3R5bGUpKQogICAgICAgICByZXR1cm4gTnVsbG9wdDsKIAotICAgIHN3aXRj
aCAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHN0eWxlKS5nZXRWYWx1ZUlEKCkpIHsKKyAg
ICBzd2l0Y2ggKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihzdHlsZSkudmFsdWVJRCgpKSB7
CiAgICAgY2FzZSBDU1NWYWx1ZU5vcm1hbDoKICAgICAgICAgcmV0dXJuIEZvbnRTdHlsZU5vcm1h
bE1hc2s7CiAgICAgY2FzZSBDU1NWYWx1ZUl0YWxpYzoKQEAgLTE2NCw3ICsxNjQsNyBAQCBPcHRp
b25hbDxGb250VHJhaXRzTWFzaz4gQ1NTRm9udEZhY2U6OmNhbGN1bGF0ZVdlaWdodE1hc2soQ1NT
VmFsdWUmIHdlaWdodCkKICAgICBpZiAoIWlzPENTU1ByaW1pdGl2ZVZhbHVlPih3ZWlnaHQpKQog
ICAgICAgICByZXR1cm4gTnVsbG9wdDsKIAotICAgIHN3aXRjaCAoZG93bmNhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWU+KHdlaWdodCkuZ2V0VmFsdWVJRCgpKSB7CisgICAgc3dpdGNoIChkb3duY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZT4od2VpZ2h0KS52YWx1ZUlEKCkpIHsKICAgICBjYXNlIENTU1ZhbHVl
Qm9sZDoKICAgICBjYXNlIENTU1ZhbHVlQm9sZGVyOgogICAgIGNhc2UgQ1NTVmFsdWU3MDA6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTZXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcAppbmRleCA5ZTlkMTc3Mjg4ZmFhYzRiOTY4
MjY2MTM1NWQ2ZDU0YjgzNzQwZGMwLi41MjJhYzg2YTk0ZTliYmJiM2I4ZDNlMjExNWNmNjY5MDBm
NzM1MzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTZXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNldC5jcHAKQEAgLTM0LDYgKzM0
LDcgQEAKICNpbmNsdWRlICJDU1NTZWdtZW50ZWRGb250RmFjZS5oIgogI2luY2x1ZGUgIkNTU1Zh
bHVlTGlzdC5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlUG9vbC5oIgorI2luY2x1ZGUgIkV4Y2VwdGlv
bkNvZGUuaCIKICNpbmNsdWRlICJGb250Q2FjaGUuaCIKICNpbmNsdWRlICJTdHlsZVByb3BlcnRp
ZXMuaCIKIApAQCAtMTI4LDcgKzEyOSw3IEBAIFN0cmluZyBDU1NGb250RmFjZVNldDo6ZmFtaWx5
TmFtZUZyb21QcmltaXRpdmUoY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmIHZhbHVlKQogCiAgICAg
Ly8gV2UgbmVlZCB0byB1c2UgdGhlIHJhdyB0ZXh0IGZvciBhbGwgdGhlIGdlbmVyaWMgZmFtaWx5
IHR5cGVzLCBzaW5jZSBAZm9udC1mYWNlIGlzIGEgd2F5IG9mIGFjdHVhbGx5CiAgICAgLy8gZGVm
aW5pbmcgd2hhdCBmb250IHRvIHVzZSBmb3IgdGhvc2UgdHlwZXMuCi0gICAgc3dpdGNoICh2YWx1
ZS5nZXRWYWx1ZUlEKCkpIHsKKyAgICBzd2l0Y2ggKHZhbHVlLnZhbHVlSUQoKSkgewogICAgIGNh
c2UgQ1NTVmFsdWVTZXJpZjoKICAgICAgICAgcmV0dXJuIHNlcmlmRmFtaWx5OwogICAgIGNhc2Ug
Q1NTVmFsdWVTYW5zU2VyaWY6CkBAIC0yNDcsNyArMjQ4LDcgQEAgdm9pZCBDU1NGb250RmFjZVNl
dDo6cmVtb3ZlKGNvbnN0IENTU0ZvbnRGYWNlJiBmYWNlKQogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogfQogCi1DU1NGb250RmFjZSogQ1NTRm9udEZhY2VTZXQ6Omxvb2t1cEJ5Q1NTQ29ubmVj
dGlvbihTdHlsZVJ1bGVGb250RmFjZSYgdGFyZ2V0KQorQ1NTRm9udEZhY2UqIENTU0ZvbnRGYWNl
U2V0Ojpsb29rVXBCeUNTU0Nvbm5lY3Rpb24oU3R5bGVSdWxlRm9udEZhY2UmIHRhcmdldCkKIHsK
ICAgICByZXR1cm4gbV9jb25zdGl0dWVudENTU0Nvbm5lY3Rpb25zLmdldCgmdGFyZ2V0KTsKIH0K
QEAgLTMyNCwzNSArMzI1LDI4IEBAIHN0YXRpYyBIYXNoU2V0PFVDaGFyMzI+IGNvZGVQb2ludHNG
cm9tU3RyaW5nKFN0cmluZ1ZpZXcgc3RyaW5nVmlldykKICAgICByZXR1cm4gcmVzdWx0OwogfQog
Ci1WZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxDU1NGb250RmFjZT4+IENTU0ZvbnRGYWNl
U2V0OjptYXRjaGluZ0ZhY2VzKGNvbnN0IFN0cmluZyYgZm9udCwgY29uc3QgU3RyaW5nJiBzdHJp
bmcsIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8VmVjdG9yPHN0ZDo6cmVmZXJlbmNl
X3dyYXBwZXI8Q1NTRm9udEZhY2U+Pj4gQ1NTRm9udEZhY2VTZXQ6Om1hdGNoaW5nRmFjZXMoY29u
c3QgU3RyaW5nJiBmb250LCBjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKLSAgICBWZWN0b3I8c3Rk
OjpyZWZlcmVuY2Vfd3JhcHBlcjxDU1NGb250RmFjZT4+IHJlc3VsdDsKICAgICBhdXRvIHN0eWxl
ID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CiAgICAgYXV0byBwYXJzZVJlc3Vs
dCA9IENTU1BhcnNlcjo6cGFyc2VWYWx1ZShzdHlsZSwgQ1NTUHJvcGVydHlGb250LCBmb250LCB0
cnVlLCBIVE1MU3RhbmRhcmRNb2RlLCBudWxscHRyKTsKLSAgICBpZiAocGFyc2VSZXN1bHQgPT0g
Q1NTUGFyc2VyOjpQYXJzZVJlc3VsdDo6RXJyb3IpIHsKLSAgICAgICAgZWMgPSBTWU5UQVhfRVJS
OwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KKyAgICBpZiAocGFyc2VSZXN1bHQgPT0g
Q1NTUGFyc2VyOjpQYXJzZVJlc3VsdDo6RXJyb3IpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBTWU5UQVhfRVJSIH07CiAKICAgICBGb250VHJhaXRzTWFzayBmb250VHJhaXRzTWFzazsKICAg
ICBpZiAoYXV0byBtYXNrT3B0aW9uYWwgPSBjb21wdXRlRm9udFRyYWl0c01hc2soc3R5bGUuZ2V0
KCkpKQogICAgICAgICBmb250VHJhaXRzTWFzayA9IG1hc2tPcHRpb25hbC52YWx1ZSgpOwotICAg
IGVsc2UgewotICAgICAgICBlYyA9IFNZTlRBWF9FUlI7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7
Ci0gICAgfQorICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNZTlRBWF9FUlIg
fTsKIAotICAgIFJlZlB0cjxDU1NWYWx1ZT4gZmFtaWx5ID0gc3R5bGUtPmdldFByb3BlcnR5Q1NT
VmFsdWUoQ1NTUHJvcGVydHlGb250RmFtaWx5KTsKLSAgICBpZiAoIWlzPENTU1ZhbHVlTGlzdD4o
ZmFtaWx5LmdldCgpKSkgewotICAgICAgICBlYyA9IFNZTlRBWF9FUlI7Ci0gICAgICAgIHJldHVy
biByZXN1bHQ7Ci0gICAgfQorICAgIGF1dG8gZmFtaWx5ID0gc3R5bGUtPmdldFByb3BlcnR5Q1NT
VmFsdWUoQ1NTUHJvcGVydHlGb250RmFtaWx5KTsKKyAgICBpZiAoIWlzPENTU1ZhbHVlTGlzdD4o
ZmFtaWx5LmdldCgpKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNZTlRBWF9FUlIgfTsK
ICAgICBDU1NWYWx1ZUxpc3QmIGZhbWlseUxpc3QgPSBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KCpm
YW1pbHkpOwogCiAgICAgSGFzaFNldDxBdG9taWNTdHJpbmc+IHVuaXF1ZUZhbWlsaWVzOwogICAg
IFZlY3RvcjxBdG9taWNTdHJpbmc+IGZhbWlseU9yZGVyOwogICAgIGZvciAoYXV0byYgZmFtaWx5
IDogZmFtaWx5TGlzdCkgewotICAgICAgICBjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYgcHJpbWl0
aXZlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGZhbWlseS5nZXQoKSk7CisgICAgICAg
IGF1dG8mIHByaW1pdGl2ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihmYW1pbHkuZ2V0
KCkpOwogICAgICAgICBpZiAoIXByaW1pdGl2ZS5pc0ZvbnRGYW1pbHkoKSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICBpZiAodW5pcXVlRmFtaWxpZXMuYWRkKHByaW1pdGl2ZS5mb250
RmFtaWx5KCkuZmFtaWx5TmFtZSkuaXNOZXdFbnRyeSkKQEAgLTM2Myw3ICszNTcsNyBAQCBWZWN0
b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxDU1NGb250RmFjZT4+IENTU0ZvbnRGYWNlU2V0Ojpt
YXRjaGluZ0ZhY2VzKGNvbnN0CiAgICAgZm9yIChhdXRvIGNvZGVQb2ludCA6IGNvZGVQb2ludHNG
cm9tU3RyaW5nKHN0cmluZykpIHsKICAgICAgICAgYm9vbCBmb3VuZCA9IGZhbHNlOwogICAgICAg
ICBmb3IgKGF1dG8mIGZhbWlseSA6IGZhbWlseU9yZGVyKSB7Ci0gICAgICAgICAgICBDU1NTZWdt
ZW50ZWRGb250RmFjZSogZmFjZXMgPSBnZXRGb250RmFjZShmb250VHJhaXRzTWFzaywgZmFtaWx5
KTsKKyAgICAgICAgICAgIGF1dG8qIGZhY2VzID0gZm9udEZhY2UoZm9udFRyYWl0c01hc2ssIGZh
bWlseSk7CiAgICAgICAgICAgICBpZiAoIWZhY2VzKQogICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICAgICAgZm9yIChhdXRvJiBjb25zdGl0dWVudEZhY2UgOiBmYWNlcy0+Y29uc3Rp
dHVlbnRGYWNlcygpKSB7CkBAIC0zNzgsMTkgKzM3MiwyMCBAQCBWZWN0b3I8c3RkOjpyZWZlcmVu
Y2Vfd3JhcHBlcjxDU1NGb250RmFjZT4+IENTU0ZvbnRGYWNlU2V0OjptYXRjaGluZ0ZhY2VzKGNv
bnN0CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBl
cjxDU1NGb250RmFjZT4+IHJlc3VsdDsKKyAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eShyZXN1bHRDb25zdGl0dWVudHMuc2l6ZSgpKTsKICAgICBmb3IgKGF1dG8qIGNvbnN0aXR1ZW50
IDogcmVzdWx0Q29uc3RpdHVlbnRzKQotICAgICAgICByZXN1bHQuYXBwZW5kKCpjb25zdGl0dWVu
dCk7Ci0KLSAgICByZXR1cm4gcmVzdWx0OworICAgICAgICByZXN1bHQudW5jaGVja2VkQXBwZW5k
KCpjb25zdGl0dWVudCk7CisgICAgcmV0dXJuIFdURk1vdmUocmVzdWx0KTsKIH0KIAotYm9vbCBD
U1NGb250RmFjZVNldDo6Y2hlY2soY29uc3QgU3RyaW5nJiBmb250LCBjb25zdCBTdHJpbmcmIHRl
eHQsIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8Ym9vbD4gQ1NTRm9udEZhY2VTZXQ6
OmNoZWNrKGNvbnN0IFN0cmluZyYgZm9udCwgY29uc3QgU3RyaW5nJiB0ZXh0KQogewotICAgIGF1
dG8gbWF0Y2hpbmdGYWNlcyA9IHRoaXMtPm1hdGNoaW5nRmFjZXMoZm9udCwgdGV4dCwgZWMpOwot
ICAgIGlmIChlYykKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGF1dG8gbWF0Y2hpbmdGYWNl
cyA9IHRoaXMtPm1hdGNoaW5nRmFjZXMoZm9udCwgdGV4dCk7CisgICAgaWYgKG1hdGNoaW5nRmFj
ZXMuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBtYXRjaGluZ0ZhY2VzLnJlbGVhc2VF
eGNlcHRpb24oKTsKIAotICAgIGZvciAoYXV0byYgZmFjZSA6IG1hdGNoaW5nRmFjZXMpIHsKKyAg
ICBmb3IgKGF1dG8mIGZhY2UgOiBtYXRjaGluZ0ZhY2VzLnJlbGVhc2VSZXR1cm5WYWx1ZSgpKSB7
CiAgICAgICAgIGlmIChmYWNlLmdldCgpLnN0YXR1cygpID09IENTU0ZvbnRGYWNlOjpTdGF0dXM6
OlBlbmRpbmcpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtNDU2LDcgKzQ1
MSw3IEBAIHN0YXRpYyBib29sIGZvbnRGYWNlQ29tcGFyYXRvcihGb250VHJhaXRzTWFzayBkZXNp
cmVkVHJhaXRzTWFza0ZvckNvbXBhcmlzb24sIGNvCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1D
U1NTZWdtZW50ZWRGb250RmFjZSogQ1NTRm9udEZhY2VTZXQ6OmdldEZvbnRGYWNlKEZvbnRUcmFp
dHNNYXNrIHRyYWl0c01hc2ssIGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5KQorQ1NTU2VnbWVu
dGVkRm9udEZhY2UqIENTU0ZvbnRGYWNlU2V0Ojpmb250RmFjZShGb250VHJhaXRzTWFzayB0cmFp
dHNNYXNrLCBjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSkKIHsKICAgICBhdXRvIGl0ZXJhdG9y
ID0gbV9mYWNlc0xvb2t1cFRhYmxlLmZpbmQoZmFtaWx5KTsKICAgICBpZiAoaXRlcmF0b3IgPT0g
bV9mYWNlc0xvb2t1cFRhYmxlLmVuZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZvbnRGYWNlU2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTZXQuaApp
bmRleCBjZGY4OGJhNGQ2NmYzN2QzNGNiOTBhMzc4ZjExZjk4NjYyMWEzOTcxLi43OTEzNDAyZmQ2
MjhmYjg0MTM3YjQxZjM0YTI1NDljMDAwNjU1YzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRm9udEZhY2VTZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZh
Y2VTZXQuaApAQCAtMjMsOCArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVm
IENTU0ZvbnRGYWNlU2V0X2gKLSNkZWZpbmUgQ1NTRm9udEZhY2VTZXRfaAorI3ByYWdtYSBvbmNl
CiAKICNpbmNsdWRlICJDU1NGb250RmFjZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBA
IC02NCwyMyArNjMsMjAgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXIoKTsKICAgICBDU1NGb250
RmFjZSYgb3BlcmF0b3JbXShzaXplX3QgaSk7CiAKLSAgICBDU1NGb250RmFjZSogbG9va3VwQnlD
U1NDb25uZWN0aW9uKFN0eWxlUnVsZUZvbnRGYWNlJik7CisgICAgQ1NTRm9udEZhY2UqIGxvb2tV
cEJ5Q1NTQ29ubmVjdGlvbihTdHlsZVJ1bGVGb250RmFjZSYpOwogCi0gICAgYm9vbCBjaGVjayhj
b25zdCBTdHJpbmcmIGZvbnQsIGNvbnN0IFN0cmluZyYgdGV4dCwgRXhjZXB0aW9uQ29kZSYpOwor
ICAgIEV4Y2VwdGlvbk9yPGJvb2w+IGNoZWNrKGNvbnN0IFN0cmluZyYgZm9udCwgY29uc3QgU3Ry
aW5nJiB0ZXh0KTsKIAotICAgIENTU1NlZ21lbnRlZEZvbnRGYWNlKiBnZXRGb250RmFjZShGb250
VHJhaXRzTWFzaywgY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHkpOworICAgIENTU1NlZ21lbnRl
ZEZvbnRGYWNlKiBmb250RmFjZShGb250VHJhaXRzTWFzaywgY29uc3QgQXRvbWljU3RyaW5nJiBm
YW1pbHkpOwogCi0gICAgZW51bSBjbGFzcyBTdGF0dXMgewotICAgICAgICBMb2FkaW5nLAotICAg
ICAgICBMb2FkZWQKLSAgICB9OworICAgIGVudW0gY2xhc3MgU3RhdHVzIHsgTG9hZGluZywgTG9h
ZGVkIH07CiAgICAgU3RhdHVzIHN0YXR1cygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzOyB9CiAK
LSAgICBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxDU1NGb250RmFjZT4+IG1hdGNoaW5n
RmFjZXMoY29uc3QgU3RyaW5nJiBmb250LCBjb25zdCBTdHJpbmcmIHRleHQsIEV4Y2VwdGlvbkNv
ZGUmKTsKKyAgICBFeGNlcHRpb25PcjxWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxDU1NG
b250RmFjZT4+PiBtYXRjaGluZ0ZhY2VzKGNvbnN0IFN0cmluZyYgZm9udCwgY29uc3QgU3RyaW5n
JiB0ZXh0KTsKIAogICAgIC8vIENTU0ZvbnRGYWNlOjpDbGllbnQgbmVlZHMgdG8gYmUgYWJsZSB0
byBiZSBoZWxkIGluIGEgUmVmUHRyLgotICAgIHZvaWQgcmVmKCkgb3ZlcnJpZGUgeyBSZWZDb3Vu
dGVkPENTU0ZvbnRGYWNlU2V0Pjo6cmVmKCk7IH0KLSAgICB2b2lkIGRlcmVmKCkgb3ZlcnJpZGUg
eyBSZWZDb3VudGVkPENTU0ZvbnRGYWNlU2V0Pjo6ZGVyZWYoKTsgfQorICAgIHZvaWQgcmVmKCkg
ZmluYWwgeyBSZWZDb3VudGVkOjpyZWYoKTsgfQorICAgIHZvaWQgZGVyZWYoKSBmaW5hbCB7IFJl
ZkNvdW50ZWQ6OmRlcmVmKCk7IH0KIAogcHJpdmF0ZToKICAgICBDU1NGb250RmFjZVNldCgpOwpA
QCAtOTEsOCArODcsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgaW5jcmVtZW50QWN0aXZlQ291bnQo
KTsKICAgICB2b2lkIGRlY3JlbWVudEFjdGl2ZUNvdW50KCk7CiAKLSAgICB2b2lkIGZvbnRTdGF0
ZUNoYW5nZWQoQ1NTRm9udEZhY2UmLCBDU1NGb250RmFjZTo6U3RhdHVzIG9sZFN0YXRlLCBDU1NG
b250RmFjZTo6U3RhdHVzIG5ld1N0YXRlKSBvdmVycmlkZTsKLSAgICB2b2lkIGZvbnRQcm9wZXJ0
eUNoYW5nZWQoQ1NTRm9udEZhY2UmLCBDU1NWYWx1ZUxpc3QqIG9sZEZhbWlsaWVzID0gbnVsbHB0
cikgb3ZlcnJpZGU7CisgICAgdm9pZCBmb250U3RhdGVDaGFuZ2VkKENTU0ZvbnRGYWNlJiwgQ1NT
Rm9udEZhY2U6OlN0YXR1cyBvbGRTdGF0ZSwgQ1NTRm9udEZhY2U6OlN0YXR1cyBuZXdTdGF0ZSkg
ZmluYWw7CisgICAgdm9pZCBmb250UHJvcGVydHlDaGFuZ2VkKENTU0ZvbnRGYWNlJiwgQ1NTVmFs
dWVMaXN0KiBvbGRGYW1pbGllcyA9IG51bGxwdHIpIGZpbmFsOwogCiAgICAgdm9pZCBlbnN1cmVM
b2NhbEZvbnRGYWNlc0ZvckZhbWlseVJlZ2lzdGVyZWQoY29uc3QgU3RyaW5nJik7CiAKQEAgLTEx
MSw1ICsxMDcsMyBAQCBwcml2YXRlOgogfTsKIAogfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZvbnRTZWxlY3Rvci5jcHAKaW5kZXggNWVlMDg3MjBiNmI5MDFiNmNlNTNmYTFiYTUxNTdm
ODQyMjFiNTIxZi4uYjRlYzQ0ZDdkYTc4Mzk4NjM5ZTdhMzQyM2RlZjJhOTkyNjZmMTlkOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKQEAgLTIwNSw3ICsyMDUsNyBAQCB2
b2lkIENTU0ZvbnRTZWxlY3Rvcjo6YWRkRm9udEZhY2VSdWxlKFN0eWxlUnVsZUZvbnRGYWNlJiBm
b250RmFjZVJ1bGUsIGJvb2wgaXNJbgogICAgIGlmIChmb250RmFjZS0+YWxsU291cmNlc0ZhaWxl
ZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoUmVmUHRyPENTU0ZvbnRGYWNlPiBleGlz
dGluZ0ZhY2UgPSBtX2Nzc0ZvbnRGYWNlU2V0LT5sb29rdXBCeUNTU0Nvbm5lY3Rpb24oZm9udEZh
Y2VSdWxlKSkgeworICAgIGlmIChSZWZQdHI8Q1NTRm9udEZhY2U+IGV4aXN0aW5nRmFjZSA9IG1f
Y3NzRm9udEZhY2VTZXQtPmxvb2tVcEJ5Q1NTQ29ubmVjdGlvbihmb250RmFjZVJ1bGUpKSB7CiAg
ICAgICAgIG1fY3NzRm9udEZhY2VTZXQtPnJlbW92ZSgqZXhpc3RpbmdGYWNlKTsKICAgICAgICAg
aWYgKGF1dG8qIGV4aXN0aW5nV3JhcHBlciA9IGV4aXN0aW5nRmFjZS0+ZXhpc3RpbmdXcmFwcGVy
KCkpCiAgICAgICAgICAgICBleGlzdGluZ1dyYXBwZXItPmFkb3B0KGZvbnRGYWNlLmdldCgpKTsK
QEAgLTI4Niw3ICsyODYsNyBAQCBGb250UmFuZ2VzIENTU0ZvbnRTZWxlY3Rvcjo6Zm9udFJhbmdl
c0ZvckZhbWlseShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcgogICAgIGJvb2wgcmVz
b2x2ZUdlbmVyaWNGYW1pbHlGaXJzdCA9IGZhbWlseU5hbWUgPT0gc3RhbmRhcmRGYW1pbHk7CiAK
ICAgICBBdG9taWNTdHJpbmcgZmFtaWx5Rm9yTG9va3VwID0gcmVzb2x2ZUdlbmVyaWNGYW1pbHlG
aXJzdCA/IHJlc29sdmVHZW5lcmljRmFtaWx5KG1fZG9jdW1lbnQsIGZvbnREZXNjcmlwdGlvbiwg
ZmFtaWx5TmFtZSkgOiBmYW1pbHlOYW1lOwotICAgIENTU1NlZ21lbnRlZEZvbnRGYWNlKiBmYWNl
ID0gbV9jc3NGb250RmFjZVNldC0+Z2V0Rm9udEZhY2UoZm9udERlc2NyaXB0aW9uLnRyYWl0c01h
c2soKSwgZmFtaWx5Rm9yTG9va3VwKTsKKyAgICBhdXRvKiBmYWNlID0gbV9jc3NGb250RmFjZVNl
dC0+Zm9udEZhY2UoZm9udERlc2NyaXB0aW9uLnRyYWl0c01hc2soKSwgZmFtaWx5Rm9yTG9va3Vw
KTsKICAgICBpZiAoIWZhY2UpIHsKICAgICAgICAgaWYgKCFyZXNvbHZlR2VuZXJpY0ZhbWlseUZp
cnN0KQogICAgICAgICAgICAgZmFtaWx5Rm9yTG9va3VwID0gcmVzb2x2ZUdlbmVyaWNGYW1pbHko
bV9kb2N1bWVudCwgZm9udERlc2NyaXB0aW9uLCBmYW1pbHlOYW1lKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NHcmFkaWVudFZhbHVlLmNwcAppbmRleCA1Y2FhMjQxMzVjMjczNmZlZWZiYWIwOWEyNGQ3
NzUwZWNiYTBlZmI3Li41OTUxY2FiZjRmYTU3MzNiMzg3ODY4YWZhNTBmMGM4ZGRkMTE5MDNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwCkBAIC03NSw4ICs3NSw4IEBA
IFJlZlB0cjxJbWFnZT4gQ1NTR3JhZGllbnRWYWx1ZTo6aW1hZ2UoUmVuZGVyRWxlbWVudCogcmVu
ZGVyZXIsIGNvbnN0IEZsb2F0U2l6ZSYKIC8vIFNob3VsZCBvbmx5IGV2ZXIgYmUgY2FsbGVkIGZv
ciBkZXByZWNhdGVkIGdyYWRpZW50cy4KIHN0YXRpYyBpbmxpbmUgYm9vbCBjb21wYXJlU3RvcHMo
Y29uc3QgQ1NTR3JhZGllbnRDb2xvclN0b3AmIGEsIGNvbnN0IENTU0dyYWRpZW50Q29sb3JTdG9w
JiBiKQogewotICAgIGRvdWJsZSBhVmFsID0gYS5tX3Bvc2l0aW9uLT5nZXREb3VibGVWYWx1ZShD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7Ci0gICAgZG91YmxlIGJWYWwgPSBiLm1fcG9z
aXRpb24tPmdldERvdWJsZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKKyAg
ICBkb3VibGUgYVZhbCA9IGEubV9wb3NpdGlvbi0+ZG91YmxlVmFsdWUoQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19OVU1CRVIpOworICAgIGRvdWJsZSBiVmFsID0gYi5tX3Bvc2l0aW9uLT5kb3VibGVW
YWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7CiAKICAgICByZXR1cm4gYVZhbCA8
IGJWYWw7CiB9CkBAIC0xNjAsOSArMTYwLDkgQEAgdm9pZCBDU1NHcmFkaWVudFZhbHVlOjphZGRT
dG9wcyhHcmFkaWVudCYgZ3JhZGllbnQsIGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkQKIAog
ICAgICAgICAgICAgZmxvYXQgb2Zmc2V0OwogICAgICAgICAgICAgaWYgKHN0b3AubV9wb3NpdGlv
bi0+aXNQZXJjZW50YWdlKCkpCi0gICAgICAgICAgICAgICAgb2Zmc2V0ID0gc3RvcC5tX3Bvc2l0
aW9uLT5nZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSkgLyAx
MDA7CisgICAgICAgICAgICAgICAgb2Zmc2V0ID0gc3RvcC5tX3Bvc2l0aW9uLT5mbG9hdFZhbHVl
KENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSkgLyAxMDA7CiAgICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgb2Zmc2V0ID0gc3RvcC5tX3Bvc2l0aW9uLT5nZXRGbG9hdFZh
bHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKKyAgICAgICAgICAgICAgICBvZmZz
ZXQgPSBzdG9wLm1fcG9zaXRpb24tPmZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19O
VU1CRVIpOwogCiAgICAgICAgICAgICBncmFkaWVudC5hZGRDb2xvclN0b3Aob2Zmc2V0LCBzdG9w
Lm1fcmVzb2x2ZWRDb2xvcik7CiAgICAgICAgIH0KQEAgLTE5NSw3ICsxOTUsNyBAQCB2b2lkIENT
U0dyYWRpZW50VmFsdWU6OmFkZFN0b3BzKEdyYWRpZW50JiBncmFkaWVudCwgY29uc3QgQ1NTVG9M
ZW5ndGhDb252ZXJzaW9uRAogICAgICAgICBpZiAoc3RvcC5tX3Bvc2l0aW9uKSB7CiAgICAgICAg
ICAgICBjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYgcG9zaXRpb25WYWx1ZSA9ICpzdG9wLm1fcG9z
aXRpb247CiAgICAgICAgICAgICBpZiAocG9zaXRpb25WYWx1ZS5pc1BlcmNlbnRhZ2UoKSkKLSAg
ICAgICAgICAgICAgICBzdG9wc1tpXS5vZmZzZXQgPSBwb3NpdGlvblZhbHVlLmdldEZsb2F0VmFs
dWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKSAvIDEwMDsKKyAgICAgICAgICAg
ICAgICBzdG9wc1tpXS5vZmZzZXQgPSBwb3NpdGlvblZhbHVlLmZsb2F0VmFsdWUoQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKSAvIDEwMDsKICAgICAgICAgICAgIGVsc2UgaWYgKHBv
c2l0aW9uVmFsdWUuaXNMZW5ndGgoKSB8fCBwb3NpdGlvblZhbHVlLmlzVmlld3BvcnRQZXJjZW50
YWdlTGVuZ3RoKCkgfHwgcG9zaXRpb25WYWx1ZS5pc0NhbGN1bGF0ZWRQZXJjZW50YWdlV2l0aExl
bmd0aCgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFjb21wdXRlZEdyYWRpZW50TGVuZ3RoKSB7
CiAgICAgICAgICAgICAgICAgICAgIEZsb2F0U2l6ZSBncmFkaWVudFNpemUoZ3JhZGllbnRTdGFy
dCAtIGdyYWRpZW50RW5kKTsKQEAgLTQ5NywxOCArNDk3LDE4IEBAIHZvaWQgQ1NTR3JhZGllbnRW
YWx1ZTo6YWRkU3RvcHMoR3JhZGllbnQmIGdyYWRpZW50LCBjb25zdCBDU1NUb0xlbmd0aENvbnZl
cnNpb25ECiBzdGF0aWMgZmxvYXQgcG9zaXRpb25Gcm9tVmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUm
IHZhbHVlLCBjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW9uRGF0YSwg
Y29uc3QgRmxvYXRTaXplJiBzaXplLCBib29sIGlzSG9yaXpvbnRhbCkKIHsKICAgICBpZiAodmFs
dWUuaXNOdW1iZXIoKSkKLSAgICAgICAgcmV0dXJuIHZhbHVlLmdldEZsb2F0VmFsdWUoKSAqIGNv
bnZlcnNpb25EYXRhLnpvb20oKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlLmZsb2F0VmFsdWUoKSAq
IGNvbnZlcnNpb25EYXRhLnpvb20oKTsKIAogICAgIGludCBlZGdlRGlzdGFuY2UgPSBpc0hvcml6
b250YWwgPyBzaXplLndpZHRoKCkgOiBzaXplLmhlaWdodCgpOwogICAgIGlmICh2YWx1ZS5pc1Bl
cmNlbnRhZ2UoKSkKLSAgICAgICAgcmV0dXJuIHZhbHVlLmdldEZsb2F0VmFsdWUoKSAvIDEwMC5m
ICogZWRnZURpc3RhbmNlOworICAgICAgICByZXR1cm4gdmFsdWUuZmxvYXRWYWx1ZSgpIC8gMTAw
LmYgKiBlZGdlRGlzdGFuY2U7CiAKICAgICBpZiAodmFsdWUuaXNDYWxjdWxhdGVkUGVyY2VudGFn
ZVdpdGhMZW5ndGgoKSkgewogICAgICAgICBSZWY8Q2FsY3VsYXRpb25WYWx1ZT4gY2FsY3VsYXRp
b25WYWx1ZSB7IHZhbHVlLmNzc0NhbGNWYWx1ZSgpLT5jcmVhdGVDYWxjdWxhdGlvblZhbHVlKGNv
bnZlcnNpb25EYXRhKSB9OwogICAgICAgICByZXR1cm4gY2FsY3VsYXRpb25WYWx1ZS0+ZXZhbHVh
dGUoZWRnZURpc3RhbmNlKTsKICAgICB9CiAKLSAgICBzd2l0Y2ggKHZhbHVlLmdldFZhbHVlSUQo
KSkgeworICAgIHN3aXRjaCAodmFsdWUudmFsdWVJRCgpKSB7CiAgICAgY2FzZSBDU1NWYWx1ZVRv
cDoKICAgICAgICAgQVNTRVJUKCFpc0hvcml6b250YWwpOwogICAgICAgICByZXR1cm4gMDsKQEAg
LTU4MSwyMCArNTgxLDIwIEBAIFN0cmluZyBDU1NMaW5lYXJHcmFkaWVudFZhbHVlOjpjdXN0b21D
U1NUZXh0KCkgY29uc3QKICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICcpOwogICAgICAgICByZXN1
bHQuYXBwZW5kKG1fc2Vjb25kWS0+Y3NzVGV4dCgpKTsKIAotICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbV9zdG9wcy5zaXplKCk7IGkrKykgewotICAgICAgICAgICAgY29uc3QgQ1NT
R3JhZGllbnRDb2xvclN0b3AmIHN0b3AgPSBtX3N0b3BzW2ldOworICAgICAgICBmb3IgKGF1dG8m
IHN0b3AgOiBtX3N0b3BzKSB7CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiLCAi
KTsKLSAgICAgICAgICAgIGlmIChzdG9wLm1fcG9zaXRpb24tPmdldERvdWJsZVZhbHVlKENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSA9PSAwKSB7CisgICAgICAgICAgICBhdXRvIHBvc2l0
aW9uID0gc3RvcC5tX3Bvc2l0aW9uLT5kb3VibGVWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X05VTUJFUik7CisgICAgICAgICAgICBpZiAoIXBvc2l0aW9uKSB7CiAgICAgICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZExpdGVyYWwoImZyb20oIik7CiAgICAgICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZChzdG9wLm1fY29sb3ItPmNzc1RleHQoKSk7CiAgICAgICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZCgnKScpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChzdG9wLm1fcG9zaXRpb24tPmdldERv
dWJsZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSA9PSAxKSB7CisgICAgICAg
ICAgICB9IGVsc2UgaWYgKHBvc2l0aW9uID09IDEpIHsKICAgICAgICAgICAgICAgICByZXN1bHQu
YXBwZW5kTGl0ZXJhbCgidG8oIik7CiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChzdG9w
Lm1fY29sb3ItPmNzc1RleHQoKSk7CiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnKScp
OwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0
ZXJhbCgiY29sb3Itc3RvcCgiKTsKLSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kTnVtYmVy
KHN0b3AubV9wb3NpdGlvbi0+Z2V0RG91YmxlVmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19O
VU1CRVIpKTsKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kTnVtYmVyKHBvc2l0aW9uKTsK
ICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKICAgICAgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKHN0b3AubV9jb2xvci0+Y3NzVGV4dCgpKTsKICAgICAgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKCcpJyk7CkBAIC02NDIsNyArNjQyLDcgQEAgU3RyaW5nIENTU0xp
bmVhckdyYWRpZW50VmFsdWU6OmN1c3RvbUNTU1RleHQoKSBjb25zdAogICAgICAgICBpZiAobV9h
bmdsZSAmJiBtX2FuZ2xlLT5jb21wdXRlRGVncmVlcygpICE9IDE4MCkgewogICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZChtX2FuZ2xlLT5jc3NUZXh0KCkpOwogICAgICAgICAgICAgd3JvdGVTb21l
dGhpbmcgPSB0cnVlOwotICAgICAgICB9IGVsc2UgaWYgKChtX2ZpcnN0WCB8fCBtX2ZpcnN0WSkg
JiYgISghbV9maXJzdFggJiYgbV9maXJzdFkgJiYgbV9maXJzdFktPmdldFZhbHVlSUQoKSA9PSBD
U1NWYWx1ZUJvdHRvbSkpIHsKKyAgICAgICAgfSBlbHNlIGlmICgobV9maXJzdFggfHwgbV9maXJz
dFkpICYmICEoIW1fZmlyc3RYICYmIG1fZmlyc3RZICYmIG1fZmlyc3RZLT52YWx1ZUlEKCkgPT0g
Q1NTVmFsdWVCb3R0b20pKSB7CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgidG8g
Iik7CiAgICAgICAgICAgICBpZiAobV9maXJzdFggJiYgbV9maXJzdFkpIHsKICAgICAgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKG1fZmlyc3RYLT5jc3NUZXh0KCkpOwpAQCAtNzU0LDcgKzc1NCw3
IEBAIFJlZjxHcmFkaWVudD4gQ1NTTGluZWFyR3JhZGllbnRWYWx1ZTo6Y3JlYXRlR3JhZGllbnQo
UmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvCiAgICAgRmxvYXRQb2ludCBmaXJzdFBvaW50Owog
ICAgIEZsb2F0UG9pbnQgc2Vjb25kUG9pbnQ7CiAgICAgaWYgKG1fYW5nbGUpIHsKLSAgICAgICAg
ZmxvYXQgYW5nbGUgPSBtX2FuZ2xlLT5nZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfREVHKTsKKyAgICAgICAgZmxvYXQgYW5nbGUgPSBtX2FuZ2xlLT5mbG9hdFZhbHVlKENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfREVHKTsKICAgICAgICAgZW5kUG9pbnRzRnJvbUFuZ2xlKGFuZ2xl
LCBzaXplLCBmaXJzdFBvaW50LCBzZWNvbmRQb2ludCwgbV9ncmFkaWVudFR5cGUpOwogICAgIH0g
ZWxzZSB7CiAgICAgICAgIHN3aXRjaCAobV9ncmFkaWVudFR5cGUpIHsKQEAgLTc4MSw5ICs3ODEs
OSBAQCBSZWY8R3JhZGllbnQ+IENTU0xpbmVhckdyYWRpZW50VmFsdWU6OmNyZWF0ZUdyYWRpZW50
KFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjbwogICAgICAgICAgICAgICAgIC8vICJNYWdpYyIg
Y29ybmVycywgc28gdGhlIDUwJSBsaW5lIHRvdWNoZXMgdHdvIGNvcm5lcnMuCiAgICAgICAgICAg
ICAgICAgZmxvYXQgcmlzZSA9IHNpemUud2lkdGgoKTsKICAgICAgICAgICAgICAgICBmbG9hdCBy
dW4gPSBzaXplLmhlaWdodCgpOwotICAgICAgICAgICAgICAgIGlmIChtX2ZpcnN0WCAmJiBtX2Zp
cnN0WC0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlTGVmdCkKKyAgICAgICAgICAgICAgICBpZiAo
bV9maXJzdFggJiYgbV9maXJzdFgtPnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUxlZnQpCiAgICAgICAg
ICAgICAgICAgICAgIHJ1biAqPSAtMTsKLSAgICAgICAgICAgICAgICBpZiAobV9maXJzdFkgJiYg
bV9maXJzdFktPmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZUJvdHRvbSkKKyAgICAgICAgICAgICAg
ICBpZiAobV9maXJzdFkgJiYgbV9maXJzdFktPnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUJvdHRvbSkK
ICAgICAgICAgICAgICAgICAgICAgcmlzZSAqPSAtMTsKICAgICAgICAgICAgICAgICAvLyBDb21w
dXRlIGFuZ2xlLCBhbmQgZmxpcCBpdCBiYWNrIHRvICJiZWFyaW5nIGFuZ2xlIiBkZWdyZWVzLgog
ICAgICAgICAgICAgICAgIGZsb2F0IGFuZ2xlID0gOTAgLSByYWQyZGVnKGF0YW4yKHJpc2UsIHJ1
bikpOwpAQCAtODYyLDIwICs4NjIsMjAgQEAgU3RyaW5nIENTU1JhZGlhbEdyYWRpZW50VmFsdWU6
OmN1c3RvbUNTU1RleHQoKSBjb25zdAogICAgICAgICByZXN1bHQuYXBwZW5kKG1fc2Vjb25kUmFk
aXVzLT5jc3NUZXh0KCkpOwogCiAgICAgICAgIC8vIEZJWE1FOiBzaGFyZT8KLSAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc3RvcHMuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgICAg
IGNvbnN0IENTU0dyYWRpZW50Q29sb3JTdG9wJiBzdG9wID0gbV9zdG9wc1tpXTsKKyAgICAgICAg
Zm9yIChhdXRvJiBzdG9wIDogbV9zdG9wcykgewogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExp
dGVyYWwoIiwgIik7Ci0gICAgICAgICAgICBpZiAoc3RvcC5tX3Bvc2l0aW9uLT5nZXREb3VibGVW
YWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikgPT0gMCkgeworICAgICAgICAgICAg
YXV0byBwb3NpdGlvbiA9IHN0b3AubV9wb3NpdGlvbi0+ZG91YmxlVmFsdWUoQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19OVU1CRVIpOworICAgICAgICAgICAgaWYgKCFwb3NpdGlvbikgewogICAgICAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJmcm9tKCIpOwogICAgICAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoc3RvcC5tX2NvbG9yLT5jc3NUZXh0KCkpOwogICAgICAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoJyknKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RvcC5tX3Bvc2l0
aW9uLT5nZXREb3VibGVWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikgPT0gMSkg
eworICAgICAgICAgICAgfSBlbHNlIGlmIChwb3NpdGlvbiA9PSAxKSB7CiAgICAgICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoInRvKCIpOwogICAgICAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoc3RvcC5tX2NvbG9yLT5jc3NUZXh0KCkpOwogICAgICAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoJyknKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZExpdGVyYWwoImNvbG9yLXN0b3AoIik7Ci0gICAgICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZE51bWJlcihzdG9wLm1fcG9zaXRpb24tPmdldERvdWJsZVZhbHVlKENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfTlVNQkVSKSk7CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZE51bWJlcihw
b3NpdGlvbik7CiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiwgIik7CiAg
ICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChzdG9wLm1fY29sb3ItPmNzc1RleHQoKSk7CiAg
ICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnKScpOwpAQCAtOTM3LDEyICs5MzcsMTIgQEAg
U3RyaW5nIENTU1JhZGlhbEdyYWRpZW50VmFsdWU6OmN1c3RvbUNTU1RleHQoKSBjb25zdAogCiAg
ICAgICAgIC8vIFRoZSBvbmx5IGFtYmlndW91cyBjYXNlIHRoYXQgbmVlZHMgYW4gZXhwbGljaXQg
c2hhcGUgdG8gYmUgcHJvdmlkZWQKICAgICAgICAgLy8gaXMgd2hlbiBhIHNpemluZyBrZXl3b3Jk
IGlzIHVzZWQgKG9yIGFsbCBzaXppbmcgaXMgb21pdHRlZCkuCi0gICAgICAgIGlmIChtX3NoYXBl
ICYmIG1fc2hhcGUtPmdldFZhbHVlSUQoKSAhPSBDU1NWYWx1ZUVsbGlwc2UgJiYgKG1fc2l6aW5n
QmVoYXZpb3IgfHwgKCFtX3NpemluZ0JlaGF2aW9yICYmICFtX2VuZEhvcml6b250YWxTaXplKSkp
IHsKKyAgICAgICAgaWYgKG1fc2hhcGUgJiYgbV9zaGFwZS0+dmFsdWVJRCgpICE9IENTU1ZhbHVl
RWxsaXBzZSAmJiAobV9zaXppbmdCZWhhdmlvciB8fCAoIW1fc2l6aW5nQmVoYXZpb3IgJiYgIW1f
ZW5kSG9yaXpvbnRhbFNpemUpKSkgewogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwo
ImNpcmNsZSIpOwogICAgICAgICAgICAgd3JvdGVTb21ldGhpbmcgPSB0cnVlOwogICAgICAgICB9
CiAKLSAgICAgICAgaWYgKG1fc2l6aW5nQmVoYXZpb3IgJiYgbV9zaXppbmdCZWhhdmlvci0+Z2V0
VmFsdWVJRCgpICE9IENTU1ZhbHVlRmFydGhlc3RDb3JuZXIpIHsKKyAgICAgICAgaWYgKG1fc2l6
aW5nQmVoYXZpb3IgJiYgbV9zaXppbmdCZWhhdmlvci0+dmFsdWVJRCgpICE9IENTU1ZhbHVlRmFy
dGhlc3RDb3JuZXIpIHsKICAgICAgICAgICAgIGlmICh3cm90ZVNvbWV0aGluZykKICAgICAgICAg
ICAgICAgICByZXN1bHQuYXBwZW5kKCcgJyk7CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKG1f
c2l6aW5nQmVoYXZpb3ItPmNzc1RleHQoKSk7CkBAIC05OTksOSArOTk5LDkgQEAgZmxvYXQgQ1NT
UmFkaWFsR3JhZGllbnRWYWx1ZTo6cmVzb2x2ZVJhZGl1cyhDU1NQcmltaXRpdmVWYWx1ZSYgcmFk
aXVzLCBjb25zdCBDU1MKIHsKICAgICBmbG9hdCByZXN1bHQgPSAwOwogICAgIGlmIChyYWRpdXMu
aXNOdW1iZXIoKSkgLy8gQ2FuIHRoZSByYWRpdXMgYmUgYSBwZXJjZW50YWdlPwotICAgICAgICBy
ZXN1bHQgPSByYWRpdXMuZ2V0RmxvYXRWYWx1ZSgpICogY29udmVyc2lvbkRhdGEuem9vbSgpOwor
ICAgICAgICByZXN1bHQgPSByYWRpdXMuZmxvYXRWYWx1ZSgpICogY29udmVyc2lvbkRhdGEuem9v
bSgpOwogICAgIGVsc2UgaWYgKHdpZHRoT3JIZWlnaHQgJiYgcmFkaXVzLmlzUGVyY2VudGFnZSgp
KQotICAgICAgICByZXN1bHQgPSAqd2lkdGhPckhlaWdodCAqIHJhZGl1cy5nZXRGbG9hdFZhbHVl
KCkgLyAxMDA7CisgICAgICAgIHJlc3VsdCA9ICp3aWR0aE9ySGVpZ2h0ICogcmFkaXVzLmZsb2F0
VmFsdWUoKSAvIDEwMDsKICAgICBlbHNlCiAgICAgICAgIHJlc3VsdCA9IHJhZGl1cy5jb21wdXRl
TGVuZ3RoPGZsb2F0Pihjb252ZXJzaW9uRGF0YSk7CiAKQEAgLTExMjIsMTQgKzExMjIsMTQgQEAg
UmVmPEdyYWRpZW50PiBDU1NSYWRpYWxHcmFkaWVudFZhbHVlOjpjcmVhdGVHcmFkaWVudChSZW5k
ZXJFbGVtZW50JiByZW5kZXJlciwgY28KICAgICB9IGVsc2UgewogICAgICAgICBlbnVtIEdyYWRp
ZW50U2hhcGUgeyBDaXJjbGUsIEVsbGlwc2UgfTsKICAgICAgICAgR3JhZGllbnRTaGFwZSBzaGFw
ZSA9IEVsbGlwc2U7Ci0gICAgICAgIGlmICgobV9zaGFwZSAmJiBtX3NoYXBlLT5nZXRWYWx1ZUlE
KCkgPT0gQ1NTVmFsdWVDaXJjbGUpCisgICAgICAgIGlmICgobV9zaGFwZSAmJiBtX3NoYXBlLT52
YWx1ZUlEKCkgPT0gQ1NTVmFsdWVDaXJjbGUpCiAgICAgICAgICAgICB8fCAoIW1fc2hhcGUgJiYg
IW1fc2l6aW5nQmVoYXZpb3IgJiYgbV9lbmRIb3Jpem9udGFsU2l6ZSAmJiAhbV9lbmRWZXJ0aWNh
bFNpemUpKQogICAgICAgICAgICAgc2hhcGUgPSBDaXJjbGU7CiAKICAgICAgICAgZW51bSBHcmFk
aWVudEZpbGwgeyBDbG9zZXN0U2lkZSwgQ2xvc2VzdENvcm5lciwgRmFydGhlc3RTaWRlLCBGYXJ0
aGVzdENvcm5lciB9OwogICAgICAgICBHcmFkaWVudEZpbGwgZmlsbCA9IEZhcnRoZXN0Q29ybmVy
OwogCi0gICAgICAgIHN3aXRjaCAobV9zaXppbmdCZWhhdmlvciA/IG1fc2l6aW5nQmVoYXZpb3It
PmdldFZhbHVlSUQoKSA6IDApIHsKKyAgICAgICAgc3dpdGNoIChtX3NpemluZ0JlaGF2aW9yID8g
bV9zaXppbmdCZWhhdmlvci0+dmFsdWVJRCgpIDogMCkgewogICAgICAgICBjYXNlIENTU1ZhbHVl
Q29udGFpbjoKICAgICAgICAgY2FzZSBDU1NWYWx1ZUNsb3Nlc3RTaWRlOgogICAgICAgICAgICAg
ZmlsbCA9IENsb3Nlc3RTaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dy
b3VwaW5nUnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JvdXBpbmdSdWxlLmNwcApp
bmRleCA1YTZkNWYwMjliY2UxMjg2N2I5NGM0Mzg5NmY5ZGI5MDQyZWQxMzliLi5iNGZmNjA3NDM5
MmJkMGU0YTk5N2VhZmVhZTBhYjQ1OTE3MDUxODYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTR3JvdXBpbmdSdWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3Jv
dXBpbmdSdWxlLmNwcApAQCAtNTcsMTQgKzU3LDEzIEBAIENTU0dyb3VwaW5nUnVsZTo6fkNTU0dy
b3VwaW5nUnVsZSgpCiAgICAgfQogfQogCi11bnNpZ25lZCBDU1NHcm91cGluZ1J1bGU6Omluc2Vy
dFJ1bGUoY29uc3QgU3RyaW5nJiBydWxlU3RyaW5nLCB1bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9u
Q29kZSYgZWMpCitFeGNlcHRpb25Pcjx1bnNpZ25lZD4gQ1NTR3JvdXBpbmdSdWxlOjppbnNlcnRS
dWxlKGNvbnN0IFN0cmluZyYgcnVsZVN0cmluZywgdW5zaWduZWQgaW5kZXgpCiB7CiAgICAgQVNT
RVJUKG1fY2hpbGRSdWxlQ1NTT01XcmFwcGVycy5zaXplKCkgPT0gbV9ncm91cFJ1bGUtPmNoaWxk
UnVsZXMoKS5zaXplKCkpOwogCiAgICAgaWYgKGluZGV4ID4gbV9ncm91cFJ1bGUtPmNoaWxkUnVs
ZXMoKS5zaXplKCkpIHsKICAgICAgICAgLy8gSU5ERVhfU0laRV9FUlI6IFJhaXNlZCBpZiB0aGUg
c3BlY2lmaWVkIGluZGV4IGlzIG5vdCBhIHZhbGlkIGluc2VydGlvbiBwb2ludC4KLSAgICAgICAg
ZWMgPSBJTkRFWF9TSVpFX0VSUjsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBJTkRFWF9TSVpFX0VSUiB9OwogICAgIH0KIAogICAgIENTU1BhcnNlciBwYXJz
ZXIocGFyc2VyQ29udGV4dCgpKTsKQEAgLTcyLDggKzcxLDcgQEAgdW5zaWduZWQgQ1NTR3JvdXBp
bmdSdWxlOjppbnNlcnRSdWxlKGNvbnN0IFN0cmluZyYgcnVsZVN0cmluZywgdW5zaWduZWQgaW5k
ZXgsIEUKICAgICBSZWZQdHI8U3R5bGVSdWxlQmFzZT4gbmV3UnVsZSA9IHBhcnNlci5wYXJzZVJ1
bGUoc3R5bGVTaGVldCA/ICZzdHlsZVNoZWV0LT5jb250ZW50cygpIDogbnVsbHB0ciwgcnVsZVN0
cmluZyk7CiAgICAgaWYgKCFuZXdSdWxlKSB7CiAgICAgICAgIC8vIFNZTlRBWF9FUlI6IFJhaXNl
ZCBpZiB0aGUgc3BlY2lmaWVkIHJ1bGUgaGFzIGEgc3ludGF4IGVycm9yIGFuZCBpcyB1bnBhcnNh
YmxlLgotICAgICAgICBlYyA9IFNZTlRBWF9FUlI7Ci0gICAgICAgIHJldHVybiAwOworICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgU1lOVEFYX0VSUiB9OwogICAgIH0KIAogICAgIGlmIChuZXdS
dWxlLT5pc0ltcG9ydFJ1bGUoKSkgewpAQCAtODQsOCArODIsNyBAQCB1bnNpZ25lZCBDU1NHcm91
cGluZ1J1bGU6Omluc2VydFJ1bGUoY29uc3QgU3RyaW5nJiBydWxlU3RyaW5nLCB1bnNpZ25lZCBp
bmRleCwgRQogICAgICAgICAvLyBISUVSQVJDSFlfUkVRVUVTVF9FUlI6IFJhaXNlZCBpZiB0aGUg
cnVsZSBjYW5ub3QgYmUgaW5zZXJ0ZWQgYXQgdGhlIHNwZWNpZmllZAogICAgICAgICAvLyBpbmRl
eCwgZS5nLiwgaWYgYW4gQGltcG9ydCBydWxlIGlzIGluc2VydGVkIGFmdGVyIGEgc3RhbmRhcmQg
cnVsZSBzZXQgb3Igb3RoZXIKICAgICAgICAgLy8gYXQtcnVsZS4KLSAgICAgICAgZWMgPSBISUVS
QVJDSFlfUkVRVUVTVF9FUlI7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgSElFUkFSQ0hZX1JFUVVFU1RfRVJSIH07CiAgICAgfQogICAgIENTU1N0eWxlU2hl
ZXQ6OlJ1bGVNdXRhdGlvblNjb3BlIG11dGF0aW9uU2NvcGUodGhpcyk7CiAKQEAgLTk1LDE1ICs5
MiwxNCBAQCB1bnNpZ25lZCBDU1NHcm91cGluZ1J1bGU6Omluc2VydFJ1bGUoY29uc3QgU3RyaW5n
JiBydWxlU3RyaW5nLCB1bnNpZ25lZCBpbmRleCwgRQogICAgIHJldHVybiBpbmRleDsKIH0KIAot
dm9pZCBDU1NHcm91cGluZ1J1bGU6OmRlbGV0ZVJ1bGUodW5zaWduZWQgaW5kZXgsIEV4Y2VwdGlv
bkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8dm9pZD4gQ1NTR3JvdXBpbmdSdWxlOjpkZWxldGVSdWxl
KHVuc2lnbmVkIGluZGV4KQogewogICAgIEFTU0VSVChtX2NoaWxkUnVsZUNTU09NV3JhcHBlcnMu
c2l6ZSgpID09IG1fZ3JvdXBSdWxlLT5jaGlsZFJ1bGVzKCkuc2l6ZSgpKTsKIAogICAgIGlmIChp
bmRleCA+PSBtX2dyb3VwUnVsZS0+Y2hpbGRSdWxlcygpLnNpemUoKSkgewogICAgICAgICAvLyBJ
TkRFWF9TSVpFX0VSUjogUmFpc2VkIGlmIHRoZSBzcGVjaWZpZWQgaW5kZXggZG9lcyBub3QgY29y
cmVzcG9uZCB0byBhCiAgICAgICAgIC8vIHJ1bGUgaW4gdGhlIG1lZGlhIHJ1bGUgbGlzdC4KLSAg
ICAgICAgZWMgPSBJTkRFWF9TSVpFX0VSUjsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgSU5ERVhfU0laRV9FUlIgfTsKICAgICB9CiAKICAgICBDU1NTdHlsZVNo
ZWV0OjpSdWxlTXV0YXRpb25TY29wZSBtdXRhdGlvblNjb3BlKHRoaXMpOwpAQCAtMTEzLDYgKzEw
OSw4IEBAIHZvaWQgQ1NTR3JvdXBpbmdSdWxlOjpkZWxldGVSdWxlKHVuc2lnbmVkIGluZGV4LCBF
eGNlcHRpb25Db2RlJiBlYykKICAgICBpZiAobV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJzW2luZGV4
XSkKICAgICAgICAgbV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJzW2luZGV4XS0+c2V0UGFyZW50UnVs
ZSgwKTsKICAgICBtX2NoaWxkUnVsZUNTU09NV3JhcHBlcnMucmVtb3ZlKGluZGV4KTsKKworICAg
IHJldHVybiB7IH07CiB9CiAKIHZvaWQgQ1NTR3JvdXBpbmdSdWxlOjphcHBlbmRDc3NUZXh0Rm9y
SXRlbXMoU3RyaW5nQnVpbGRlciYgcmVzdWx0KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0dyb3VwaW5nUnVsZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyb3Vw
aW5nUnVsZS5oCmluZGV4IDRmZjE2MDA0NWI3NzY5MTFkZGVkZDJlMjU0MTYyYjU1NWE5YzRlMWQu
LmY1NGEzOTcxOTRlNWY5NzQ2NWUyYTVlMTg2ZDg1MmJmNDA5ZDUyMzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NHcm91cGluZ1J1bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTR3JvdXBpbmdSdWxlLmgKQEAgLTIzLDI0ICsyMywyMiBAQAogI3ByYWdtYSBvbmNlCiAK
ICNpbmNsdWRlICJDU1NSdWxlLmgiCi0jaW5jbHVkZSAiU3R5bGVSdWxlLmgiCiAjaW5jbHVkZSA8
bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBDU1NSdWxlTGlzdDsKK2NsYXNzIFN0eWxlUnVsZUdyb3VwOwogCiBjbGFzcyBDU1NH
cm91cGluZ1J1bGUgOiBwdWJsaWMgQ1NTUnVsZSB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q1NT
R3JvdXBpbmdSdWxlKCk7CiAKLSAgICB2b2lkIHJlYXR0YWNoKFN0eWxlUnVsZUJhc2UmKSBvdmVy
cmlkZTsKLQogICAgIFdFQkNPUkVfRVhQT1JUIENTU1J1bGVMaXN0JiBjc3NSdWxlcygpIGNvbnN0
OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdW5zaWduZWQgaW5zZXJ0UnVsZShjb25zdCBTdHJpbmcm
IHJ1bGUsIHVuc2lnbmVkIGluZGV4LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBkZWxldGVSdWxlKHVuc2lnbmVkIGluZGV4LCBFeGNlcHRpb25Db2RlJik7CisgICAg
V0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8dW5zaWduZWQ+IGluc2VydFJ1bGUoY29uc3QgU3Ry
aW5nJiBydWxlLCB1bnNpZ25lZCBpbmRleCk7CisgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9u
T3I8dm9pZD4gZGVsZXRlUnVsZSh1bnNpZ25lZCBpbmRleCk7CiAgICAgICAgIAogICAgIC8vIEZv
ciBDU1NSdWxlTGlzdAogICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0OwpAQCAtNDksOSArNDcs
MTMgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIENTU0dyb3VwaW5nUnVsZShTdHlsZVJ1bGVH
cm91cCYgZ3JvdXBSdWxlLCBDU1NTdHlsZVNoZWV0KiBwYXJlbnQpOwogICAgIAorICAgIHZvaWQg
cmVhdHRhY2goU3R5bGVSdWxlQmFzZSYpIG92ZXJyaWRlOworCiAgICAgdm9pZCBhcHBlbmRDc3NU
ZXh0Rm9ySXRlbXMoU3RyaW5nQnVpbGRlciYpIGNvbnN0OwogCiAgICAgUmVmPFN0eWxlUnVsZUdy
b3VwPiBtX2dyb3VwUnVsZTsKKworcHJpdmF0ZToKICAgICBtdXRhYmxlIFZlY3RvcjxSZWZQdHI8
Q1NTUnVsZT4+IG1fY2hpbGRSdWxlQ1NTT01XcmFwcGVyczsKICAgICBtdXRhYmxlIHN0ZDo6dW5p
cXVlX3B0cjxDU1NSdWxlTGlzdD4gbV9ydWxlTGlzdENTU09NV3JhcHBlcjsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAKaW5kZXggZTNiNmQzMjZh
MmIyMDY5YmQ4NzAyOGFjMzBiM2I2YjRkMjg3ZGY1My4uYTc1MjgzYTJiMjdjM2RlZDhkOTQzMTJk
ZTA0YTQxNThlZWNjMmY5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdl
R2VuZXJhdG9yVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVy
YXRvclZhbHVlLmNwcApAQCAtMjQwLDcgKzI0MCw3IEBAIGJvb2wgQ1NTSW1hZ2VHZW5lcmF0b3JW
YWx1ZTo6c3ViaW1hZ2VJc1BlbmRpbmcoY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogICAgIGlmIChp
czxDU1NJbWFnZUdlbmVyYXRvclZhbHVlPih2YWx1ZSkpCiAgICAgICAgIHJldHVybiBkb3duY2Fz
dDxDU1NJbWFnZUdlbmVyYXRvclZhbHVlPih2YWx1ZSkuaXNQZW5kaW5nKCk7CiAKLSAgICBpZiAo
aXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSAmJiBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZT4odmFsdWUpLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUpCisgICAgaWYgKGlzPENTU1By
aW1pdGl2ZVZhbHVlPih2YWx1ZSkgJiYgZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVl
KS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTI2MSw3ICsyNjEsNyBAQCBDYWNoZWRJbWFnZSog
Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6Y2FjaGVkSW1hZ2VGb3JDU1NWYWx1ZShDU1NWYWx1ZSYg
dmFsdWUsIENhYwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBpZiAoaXM8
Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSAmJiBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4o
dmFsdWUpLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUpCisgICAgaWYgKGlzPENTU1ByaW1p
dGl2ZVZhbHVlPih2YWx1ZSkgJiYgZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS52
YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ltYWdlU2V0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUu
Y3BwCmluZGV4IDVhOWMyMjIzZDRmMWM0MmZmY2FhY2RjZTJlMzFkZDc0NjNiODFlZjUuLjVlMTFi
MmM3YmQ0OGNkZTk1NWI3ZWExOTNiMGNjOGMyOTI5ZmRkMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NJbWFnZVNldFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTSW1hZ2VTZXRWYWx1ZS5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgdm9pZCBDU1NJbWFnZVNldFZh
bHVlOjpmaWxsSW1hZ2VTZXQoKQogICAgICAgICArK2k7CiAgICAgICAgIEFTU0VSVF9XSVRIX1NF
Q1VSSVRZX0lNUExJQ0FUSU9OKGkgPCBsZW5ndGgpOwogICAgICAgICBDU1NWYWx1ZSogc2NhbGVG
YWN0b3JWYWx1ZSA9IGl0ZW0oaSk7Ci0gICAgICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gZG93bmNh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCpzY2FsZUZhY3RvclZhbHVlKS5nZXRGbG9hdFZhbHVlKCk7
CisgICAgICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+
KCpzY2FsZUZhY3RvclZhbHVlKS5mbG9hdFZhbHVlKCk7CiAKICAgICAgICAgSW1hZ2VXaXRoU2Nh
bGUgaW1hZ2U7CiAgICAgICAgIGltYWdlLmltYWdlVVJMID0gaW1hZ2VVUkw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTWVkaWFSdWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTTWVkaWFSdWxlLmgKaW5kZXggZmIxYmM0ZTlhNGYyZjY2NTYxM2I4ZDk4ZjJkYmQxOGMxOTk3
Njg1Yy4uMjE2MGZhY2E5ZTRhNjgzMzUwMTc2MzYzMGNiODM4MjU5MmY4NGQ2MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU01lZGlhUnVsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NNZWRpYVJ1bGUuaApAQCAtMjcsNiArMjcsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBNZWRpYUxpc3Q7CitjbGFzcyBNZWRpYVF1ZXJ5U2V0OwogY2xhc3MgU3R5bGVS
dWxlTWVkaWE7CiAKIGNsYXNzIENTU01lZGlhUnVsZSBmaW5hbCA6IHB1YmxpYyBDU1NHcm91cGlu
Z1J1bGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU01lZGlhUnVsZS5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTWVkaWFSdWxlLmlkbAppbmRleCA0ZWRhODk3OWQ1MTFl
ZjljMDk5MGQ5ZWQ0Njc1N2I0MjkwZmY4OGU1Li5jZjIxNTU1MTFiMDlmNGYzYzRiMDdjNTVmMWUw
MDg4OWFmYWIxMmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTWVkaWFSdWxl
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTWVkaWFSdWxlLmlkbApAQCAtMjIsNiAr
MjIsNiBAQCBpbnRlcmZhY2UgQ1NTTWVkaWFSdWxlIDogQ1NTUnVsZSB7CiAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIE1lZGlhTGlzdCBtZWRpYTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgQ1NTUnVs
ZUxpc3QgY3NzUnVsZXM7CiAKLSAgICBbTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHVuc2lnbmVk
IGxvbmcgaW5zZXJ0UnVsZShvcHRpb25hbCBET01TdHJpbmcgcnVsZSA9ICJ1bmRlZmluZWQiLCBv
cHRpb25hbCB1bnNpZ25lZCBsb25nIGluZGV4ID0gMCk7Ci0gICAgW01heVRocm93TGVnYWN5RXhj
ZXB0aW9uXSB2b2lkIGRlbGV0ZVJ1bGUob3B0aW9uYWwgdW5zaWduZWQgbG9uZyBpbmRleCA9IDAp
OworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5zaWduZWQgbG9uZyBpbnNlcnRSdWxlKG9wdGlv
bmFsIERPTVN0cmluZyBydWxlID0gInVuZGVmaW5lZCIsIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcg
aW5kZXggPSAwKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgZGVsZXRlUnVsZShvcHRp
b25hbCB1bnNpZ25lZCBsb25nIGluZGV4ID0gMCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
cmltaXRpdmVWYWx1ZS5jcHAKaW5kZXggOTg3NzEzYzkxYWY5NWRhZTg1OTc4ZGFhMjA0NTAzMWVm
YThjNjg1ZS4uZjRiMzJkNDc0N2QyZTBkYTg5ZTkwZWFkYTA3YTVjMTJiNmY4MmExNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCkBAIC02MjksMTMgKzYyOSwxMyBA
QCBkb3VibGUgQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVEZWdyZWVzKCkgY29uc3QKIHsKICAg
ICBzd2l0Y2ggKHByaW1pdGl2ZVR5cGUoKSkgewogICAgIGNhc2UgQ1NTX0RFRzoKLSAgICAgICAg
cmV0dXJuIGdldERvdWJsZVZhbHVlKCk7CisgICAgICAgIHJldHVybiBkb3VibGVWYWx1ZSgpOwog
ICAgIGNhc2UgQ1NTX1JBRDoKLSAgICAgICAgcmV0dXJuIHJhZDJkZWcoZ2V0RG91YmxlVmFsdWUo
KSk7CisgICAgICAgIHJldHVybiByYWQyZGVnKGRvdWJsZVZhbHVlKCkpOwogICAgIGNhc2UgQ1NT
X0dSQUQ6Ci0gICAgICAgIHJldHVybiBncmFkMmRlZyhnZXREb3VibGVWYWx1ZSgpKTsKKyAgICAg
ICAgcmV0dXJuIGdyYWQyZGVnKGRvdWJsZVZhbHVlKCkpOwogICAgIGNhc2UgQ1NTX1RVUk46Ci0g
ICAgICAgIHJldHVybiB0dXJuMmRlZyhnZXREb3VibGVWYWx1ZSgpKTsKKyAgICAgICAgcmV0dXJu
IHR1cm4yZGVnKGRvdWJsZVZhbHVlKCkpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gMDsKQEAgLTY4MywxMCArNjgzLDEwIEBAIGRv
dWJsZSBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aERvdWJsZShjb25zdCBDU1NUb0xl
bmd0aENvbnZlcnNpb25EYXRhJiBjCiAgICAgICAgIC8vIFRoZSBtdWx0aXBsaWVyIGFuZCBmYWN0
b3IgaXMgYXBwbGllZCB0byBlYWNoIHZhbHVlIGluIHRoZSBjYWxjIGV4cHJlc3Npb24gaW5kaXZp
ZHVhbGx5CiAgICAgICAgIHJldHVybiBtX3ZhbHVlLmNhbGMtPmNvbXB1dGVMZW5ndGhQeChjb252
ZXJzaW9uRGF0YSk7CiAKLSAgICByZXR1cm4gY29tcHV0ZU5vbkNhbGNMZW5ndGhEb3VibGUoY29u
dmVyc2lvbkRhdGEsIHByaW1pdGl2ZVR5cGUoKSwgbV92YWx1ZS5udW0pOworICAgIHJldHVybiBj
b21wdXRlTm9uQ2FsY0xlbmd0aERvdWJsZShjb252ZXJzaW9uRGF0YSwgc3RhdGljX2Nhc3Q8VW5p
dFR5cGVzPihwcmltaXRpdmVUeXBlKCkpLCBtX3ZhbHVlLm51bSk7CiB9CiAKLWRvdWJsZSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Y29tcHV0ZU5vbkNhbGNMZW5ndGhEb3VibGUoY29uc3QgQ1NTVG9MZW5n
dGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEsIHVuc2lnbmVkIHNob3J0IHByaW1pdGl2
ZVR5cGUsIGRvdWJsZSB2YWx1ZSkKK2RvdWJsZSBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZU5v
bkNhbGNMZW5ndGhEb3VibGUoY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVy
c2lvbkRhdGEsIFVuaXRUeXBlcyBwcmltaXRpdmVUeXBlLCBkb3VibGUgdmFsdWUpCiB7CiAgICAg
ZG91YmxlIGZhY3RvcjsKIApAQCAtNzY2LDE1ICs3NjYsMTUgQEAgZG91YmxlIENTU1ByaW1pdGl2
ZVZhbHVlOjpjb21wdXRlTm9uQ2FsY0xlbmd0aERvdWJsZShjb25zdCBDU1NUb0xlbmd0aENvbnZl
cnNpb24KICAgICByZXR1cm4gcmVzdWx0ICogY29udmVyc2lvbkRhdGEuem9vbSgpOwogfQogCi12
b2lkIENTU1ByaW1pdGl2ZVZhbHVlOjpzZXRGbG9hdFZhbHVlKHVuc2lnbmVkIHNob3J0LCBkb3Vi
bGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8dm9pZD4gQ1NTUHJpbWl0aXZlVmFs
dWU6OnNldEZsb2F0VmFsdWUodW5zaWduZWQgc2hvcnQsIGRvdWJsZSkKIHsKICAgICAvLyBLZWVw
aW5nIHZhbHVlcyBpbW11dGFibGUgbWFrZXMgb3B0aW1pemF0aW9ucyBlYXNpZXIgYW5kIGFsbG93
cyBzaGFyaW5nIG9mIHRoZSBwcmltaXRpdmUgdmFsdWUgb2JqZWN0cy4KICAgICAvLyBObyBvdGhl
ciBlbmdpbmUgc3VwcG9ydHMgbXV0YXRpbmcgc3R5bGUgdGhyb3VnaCB0aGlzIEFQSS4gQ29tcHV0
ZWQgc3R5bGUgaXMgYWx3YXlzIHJlYWQtb25seSBhbnl3YXkuCiAgICAgLy8gU3VwcG9ydGluZyBz
ZXR0ZXIgd291bGQgcmVxdWlyZSBtYWtpbmcgcHJpbWl0aXZlIHZhbHVlIGNvcHktb24td3JpdGUg
YW5kIHRha2luZyBjYXJlIG9mIHN0eWxlIGludmFsaWRhdGlvbi4KLSAgICBlYyA9IE5PX01PRElG
SUNBVElPTl9BTExPV0VEX0VSUjsKKyAgICByZXR1cm4gRXhjZXB0aW9uIHsgTk9fTU9ESUZJQ0FU
SU9OX0FMTE9XRURfRVJSIH07CiB9CiAKLWRvdWJsZSBDU1NQcmltaXRpdmVWYWx1ZTo6Y29udmVy
c2lvblRvQ2Fub25pY2FsVW5pdHNTY2FsZUZhY3Rvcih1bnNpZ25lZCBzaG9ydCB1bml0VHlwZSkK
K2RvdWJsZSBDU1NQcmltaXRpdmVWYWx1ZTo6Y29udmVyc2lvblRvQ2Fub25pY2FsVW5pdHNTY2Fs
ZUZhY3RvcihVbml0VHlwZXMgdW5pdFR5cGUpCiB7CiAgICAgZG91YmxlIGZhY3RvciA9IDEuMDsK
ICAgICAvLyBGSVhNRTogdGhlIHN3aXRjaCBjYW4gYmUgcmVwbGFjZWQgYnkgYW4gYXJyYXkgb2Yg
c2NhbGUgZmFjdG9ycy4KQEAgLTgyNiwyNyArODI2LDIwIEBAIGRvdWJsZSBDU1NQcmltaXRpdmVW
YWx1ZTo6Y29udmVyc2lvblRvQ2Fub25pY2FsVW5pdHNTY2FsZUZhY3Rvcih1bnNpZ25lZCBzaG9y
dCB1CiAgICAgcmV0dXJuIGZhY3RvcjsKIH0KIAotZG91YmxlIENTU1ByaW1pdGl2ZVZhbHVlOjpn
ZXREb3VibGVWYWx1ZSh1bnNpZ25lZCBzaG9ydCB1bml0VHlwZSwgRXhjZXB0aW9uQ29kZSYgZWMp
IGNvbnN0CitFeGNlcHRpb25PcjxmbG9hdD4gQ1NTUHJpbWl0aXZlVmFsdWU6OmdldEZsb2F0VmFs
dWUodW5zaWduZWQgc2hvcnQgdW5pdFR5cGUpIGNvbnN0CiB7Ci0gICAgZG91YmxlIHJlc3VsdCA9
IDA7Ci0gICAgYm9vbCBzdWNjZXNzID0gZ2V0RG91YmxlVmFsdWVJbnRlcm5hbChzdGF0aWNfY2Fz
dDxVbml0VHlwZXM+KHVuaXRUeXBlKSwgJnJlc3VsdCk7Ci0gICAgaWYgKCFzdWNjZXNzKSB7Ci0g
ICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwotICAgICAgICByZXR1cm4gMC4wOwotICAg
IH0KLQotICAgIGVjID0gMDsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIGF1dG8gcmVzdWx0ID0g
ZG91YmxlVmFsdWVJbnRlcm5hbChzdGF0aWNfY2FzdDxVbml0VHlwZXM+KHVuaXRUeXBlKSk7Cisg
ICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJTlZBTElEX0FDQ0VT
U19FUlIgfTsKKyAgICByZXR1cm4gY2xhbXBUbzxmbG9hdD4ocmVzdWx0LnZhbHVlKCkpOwogfQog
Ci1kb3VibGUgQ1NTUHJpbWl0aXZlVmFsdWU6OmdldERvdWJsZVZhbHVlKHVuc2lnbmVkIHNob3J0
IHVuaXRUeXBlKSBjb25zdAorZG91YmxlIENTU1ByaW1pdGl2ZVZhbHVlOjpkb3VibGVWYWx1ZShV
bml0VHlwZXMgdW5pdFR5cGUpIGNvbnN0CiB7Ci0gICAgZG91YmxlIHJlc3VsdCA9IDA7Ci0gICAg
Z2V0RG91YmxlVmFsdWVJbnRlcm5hbChzdGF0aWNfY2FzdDxVbml0VHlwZXM+KHVuaXRUeXBlKSwg
JnJlc3VsdCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gZG91YmxlVmFsdWVJbnRl
cm5hbCh1bml0VHlwZSkudmFsdWVPcigwKTsKIH0KIAotZG91YmxlIENTU1ByaW1pdGl2ZVZhbHVl
OjpnZXREb3VibGVWYWx1ZSgpIGNvbnN0Citkb3VibGUgQ1NTUHJpbWl0aXZlVmFsdWU6OmRvdWJs
ZVZhbHVlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9wcmltaXRpdmVVbml0VHlwZSAhPSBDU1Nf
Q0FMQyA/IG1fdmFsdWUubnVtIDogbV92YWx1ZS5jYWxjLT5kb3VibGVWYWx1ZSgpOwogfQpAQCAt
ODc4LDE2ICs4NzEsMTQgQEAgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcyBDU1NQcmltaXRp
dmVWYWx1ZTo6Y2Fub25pY2FsVW5pdFR5cGVGb3JDYXRlZ29yeShVbmkKICAgICB9CiB9CiAKLWJv
b2wgQ1NTUHJpbWl0aXZlVmFsdWU6OmdldERvdWJsZVZhbHVlSW50ZXJuYWwoVW5pdFR5cGVzIHJl
cXVlc3RlZFVuaXRUeXBlLCBkb3VibGUqIHJlc3VsdCkgY29uc3QKK09wdGlvbmFsPGRvdWJsZT4g
Q1NTUHJpbWl0aXZlVmFsdWU6OmRvdWJsZVZhbHVlSW50ZXJuYWwoVW5pdFR5cGVzIHJlcXVlc3Rl
ZFVuaXRUeXBlKSBjb25zdAogewogICAgIGlmICghaXNWYWxpZENTU1VuaXRUeXBlRm9yRG91Ymxl
Q29udmVyc2lvbihzdGF0aWNfY2FzdDxVbml0VHlwZXM+KG1fcHJpbWl0aXZlVW5pdFR5cGUpKSB8
fCAhaXNWYWxpZENTU1VuaXRUeXBlRm9yRG91YmxlQ29udmVyc2lvbihyZXF1ZXN0ZWRVbml0VHlw
ZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIE51bGxvcHQ7CiAKICAg
ICBVbml0VHlwZXMgc291cmNlVW5pdFR5cGUgPSBzdGF0aWNfY2FzdDxVbml0VHlwZXM+KHByaW1p
dGl2ZVR5cGUoKSk7Ci0gICAgaWYgKHJlcXVlc3RlZFVuaXRUeXBlID09IHNvdXJjZVVuaXRUeXBl
IHx8IHJlcXVlc3RlZFVuaXRUeXBlID09IENTU19ESU1FTlNJT04pIHsKLSAgICAgICAgKnJlc3Vs
dCA9IGdldERvdWJsZVZhbHVlKCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KKyAgICBp
ZiAocmVxdWVzdGVkVW5pdFR5cGUgPT0gc291cmNlVW5pdFR5cGUgfHwgcmVxdWVzdGVkVW5pdFR5
cGUgPT0gQ1NTX0RJTUVOU0lPTikKKyAgICAgICAgcmV0dXJuIGRvdWJsZVZhbHVlKCk7CiAKICAg
ICBVbml0Q2F0ZWdvcnkgc291cmNlQ2F0ZWdvcnkgPSB1bml0Q2F0ZWdvcnkoc291cmNlVW5pdFR5
cGUpOwogICAgIEFTU0VSVChzb3VyY2VDYXRlZ29yeSAhPSBVT3RoZXIpOwpAQCAtODk4LDIzICs4
ODksMjMgQEAgYm9vbCBDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0RG91YmxlVmFsdWVJbnRlcm5hbChV
bml0VHlwZXMgcmVxdWVzdGVkVW5pdFR5cGUsIGRvdWIKIAogICAgIC8vIENhbm5vdCBjb252ZXJ0
IGJldHdlZW4gdW5yZWxhdGVkIHVuaXQgY2F0ZWdvcmllcyBpZiBvbmUgb2YgdGhlbSBpcyBub3Qg
VU51bWJlci4KICAgICBpZiAoc291cmNlQ2F0ZWdvcnkgIT0gdGFyZ2V0Q2F0ZWdvcnkgJiYgc291
cmNlQ2F0ZWdvcnkgIT0gVU51bWJlciAmJiB0YXJnZXRDYXRlZ29yeSAhPSBVTnVtYmVyKQotICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBOdWxsb3B0OwogCiAgICAgaWYgKHRh
cmdldENhdGVnb3J5ID09IFVOdW1iZXIpIHsKICAgICAgICAgLy8gV2UgaW50ZXJwcmV0IGNvbnZl
cnNpb24gdG8gQ1NTX05VTUJFUiBhcyBjb252ZXJzaW9uIHRvIGEgY2Fub25pY2FsIHVuaXQgaW4g
dGhpcyB2YWx1ZSdzIGNhdGVnb3J5LgogICAgICAgICB0YXJnZXRVbml0VHlwZSA9IGNhbm9uaWNh
bFVuaXRUeXBlRm9yQ2F0ZWdvcnkoc291cmNlQ2F0ZWdvcnkpOwogICAgICAgICBpZiAodGFyZ2V0
VW5pdFR5cGUgPT0gQ1NTX1VOS05PV04pCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgICByZXR1cm4gTnVsbG9wdDsKICAgICB9CiAKICAgICBpZiAoc291cmNlVW5pdFR5cGUg
PT0gQ1NTX05VTUJFUikgewogICAgICAgICAvLyBXZSBpbnRlcnByZXQgY29udmVyc2lvbiBmcm9t
IENTU19OVU1CRVIgaW4gdGhlIHNhbWUgd2F5IGFzIENTU1BhcnNlcjo6dmFsaWRVbml0KCkgd2hp
bGUgdXNpbmcgbm9uLXN0cmljdCBtb2RlLgogICAgICAgICBzb3VyY2VVbml0VHlwZSA9IGNhbm9u
aWNhbFVuaXRUeXBlRm9yQ2F0ZWdvcnkodGFyZ2V0Q2F0ZWdvcnkpOwogICAgICAgICBpZiAoc291
cmNlVW5pdFR5cGUgPT0gQ1NTX1VOS05PV04pCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKICAgICB9CiAKLSAgICBkb3VibGUgY29udmVydGVk
VmFsdWUgPSBnZXREb3VibGVWYWx1ZSgpOworICAgIGRvdWJsZSBjb252ZXJ0ZWRWYWx1ZSA9IGRv
dWJsZVZhbHVlKCk7CiAKICAgICAvLyBGaXJzdCBjb252ZXJ0IHRoZSB2YWx1ZSBmcm9tIG1fcHJp
bWl0aXZlVW5pdFR5cGUgdG8gY2Fub25pY2FsIHR5cGUuCiAgICAgZG91YmxlIGZhY3RvciA9IGNv
bnZlcnNpb25Ub0Nhbm9uaWNhbFVuaXRzU2NhbGVGYWN0b3Ioc291cmNlVW5pdFR5cGUpOwpAQCAt
OTI0LDQxICs5MTUsMzYgQEAgYm9vbCBDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0RG91YmxlVmFsdWVJ
bnRlcm5hbChVbml0VHlwZXMgcmVxdWVzdGVkVW5pdFR5cGUsIGRvdWIKICAgICBmYWN0b3IgPSBj
b252ZXJzaW9uVG9DYW5vbmljYWxVbml0c1NjYWxlRmFjdG9yKHRhcmdldFVuaXRUeXBlKTsKICAg
ICBjb252ZXJ0ZWRWYWx1ZSAvPSBmYWN0b3I7CiAKLSAgICAqcmVzdWx0ID0gY29udmVydGVkVmFs
dWU7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGNvbnZlcnRlZFZhbHVlOwogfQogCi12
b2lkIENTU1ByaW1pdGl2ZVZhbHVlOjpzZXRTdHJpbmdWYWx1ZSh1bnNpZ25lZCBzaG9ydCwgY29u
c3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRpb25Pcjx2b2lkPiBDU1NQcmlt
aXRpdmVWYWx1ZTo6c2V0U3RyaW5nVmFsdWUodW5zaWduZWQgc2hvcnQsIGNvbnN0IFN0cmluZyYp
CiB7CiAgICAgLy8gS2VlcGluZyB2YWx1ZXMgaW1tdXRhYmxlIG1ha2VzIG9wdGltaXphdGlvbnMg
ZWFzaWVyIGFuZCBhbGxvd3Mgc2hhcmluZyBvZiB0aGUgcHJpbWl0aXZlIHZhbHVlIG9iamVjdHMu
CiAgICAgLy8gTm8gb3RoZXIgZW5naW5lIHN1cHBvcnRzIG11dGF0aW5nIHN0eWxlIHRocm91Z2gg
dGhpcyBBUEkuIENvbXB1dGVkIHN0eWxlIGlzIGFsd2F5cyByZWFkLW9ubHkgYW55d2F5LgogICAg
IC8vIFN1cHBvcnRpbmcgc2V0dGVyIHdvdWxkIHJlcXVpcmUgbWFraW5nIHByaW1pdGl2ZSB2YWx1
ZSBjb3B5LW9uLXdyaXRlIGFuZCB0YWtpbmcgY2FyZSBvZiBzdHlsZSBpbnZhbGlkYXRpb24uCi0g
ICAgZWMgPSBOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlI7CisgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IE5PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUiB9OwogfQogCi1TdHJpbmcgQ1NTUHJpbWl0
aXZlVmFsdWU6OmdldFN0cmluZ1ZhbHVlKEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAorRXhjZXB0
aW9uT3I8U3RyaW5nPiBDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0U3RyaW5nVmFsdWUoKSBjb25zdAog
ewotICAgIGVjID0gMDsKICAgICBzd2l0Y2ggKG1fcHJpbWl0aXZlVW5pdFR5cGUpIHsKICAgICBj
YXNlIENTU19TVFJJTkc6CiAgICAgY2FzZSBDU1NfQVRUUjoKICAgICBjYXNlIENTU19VUkk6CiAg
ICAgICAgIHJldHVybiBtX3ZhbHVlLnN0cmluZzsKICAgICBjYXNlIENTU19GT05UX0ZBTUlMWToK
LSAgICAgICAgcmV0dXJuIG1fdmFsdWUuZm9udEZhbWlseS0+ZmFtaWx5TmFtZTsKKyAgICAgICAg
cmV0dXJuIFN0cmluZyB7IG1fdmFsdWUuZm9udEZhbWlseS0+ZmFtaWx5TmFtZSB9OwogICAgIGNh
c2UgQ1NTX1ZBTFVFX0lEOgotICAgICAgICByZXR1cm4gdmFsdWVOYW1lKG1fdmFsdWUudmFsdWVJ
RCk7CisgICAgICAgIHJldHVybiBTdHJpbmcgeyB2YWx1ZU5hbWUobV92YWx1ZS52YWx1ZUlEKSB9
OwogICAgIGNhc2UgQ1NTX1BST1BFUlRZX0lEOgotICAgICAgICByZXR1cm4gcHJvcGVydHlOYW1l
KG1fdmFsdWUucHJvcGVydHlJRCk7CisgICAgICAgIHJldHVybiBTdHJpbmcgeyBwcm9wZXJ0eU5h
bWUobV92YWx1ZS5wcm9wZXJ0eUlEKSB9OwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIGVjID0gSU5W
QUxJRF9BQ0NFU1NfRVJSOwotICAgICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IElOVkFMSURfQUNDRVNTX0VSUiB9OwogICAgIH0KLQotICAgIHJldHVybiBTdHJpbmcoKTsK
IH0KIAotU3RyaW5nIENTU1ByaW1pdGl2ZVZhbHVlOjpnZXRTdHJpbmdWYWx1ZSgpIGNvbnN0CitT
dHJpbmcgQ1NTUHJpbWl0aXZlVmFsdWU6OnN0cmluZ1ZhbHVlKCkgY29uc3QKIHsKICAgICBzd2l0
Y2ggKG1fcHJpbWl0aXZlVW5pdFR5cGUpIHsKICAgICBjYXNlIENTU19TVFJJTkc6CkBAIC05NzIs
ODAgKzk1OCwzMyBAQCBTdHJpbmcgQ1NTUHJpbWl0aXZlVmFsdWU6OmdldFN0cmluZ1ZhbHVlKCkg
Y29uc3QKICAgICBjYXNlIENTU19QUk9QRVJUWV9JRDoKICAgICAgICAgcmV0dXJuIHByb3BlcnR5
TmFtZShtX3ZhbHVlLnByb3BlcnR5SUQpOwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIGJyZWFrOwor
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgfQotCi0gICAgcmV0dXJuIFN0cmluZygpOwog
fQogCi1Db3VudGVyKiBDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0Q291bnRlclZhbHVlKEV4Y2VwdGlv
bkNvZGUmIGVjKSBjb25zdAorRXhjZXB0aW9uT3I8Q291bnRlcio+IENTU1ByaW1pdGl2ZVZhbHVl
OjpnZXRDb3VudGVyVmFsdWUoKSBjb25zdAogewotICAgIGVjID0gMDsKLSAgICBpZiAobV9wcmlt
aXRpdmVVbml0VHlwZSAhPSBDU1NfQ09VTlRFUikgewotICAgICAgICBlYyA9IElOVkFMSURfQUND
RVNTX0VSUjsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCisgICAgaWYgKG1fcHJpbWl0aXZl
VW5pdFR5cGUgIT0gQ1NTX0NPVU5URVIpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJTlZB
TElEX0FDQ0VTU19FUlIgfTsKICAgICByZXR1cm4gbV92YWx1ZS5jb3VudGVyOwogfQogCi1SZWN0
KiBDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0UmVjdFZhbHVlKEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25z
dAorRXhjZXB0aW9uT3I8UmVjdCo+IENTU1ByaW1pdGl2ZVZhbHVlOjpnZXRSZWN0VmFsdWUoKSBj
b25zdAogewotICAgIGVjID0gMDsKLSAgICBpZiAobV9wcmltaXRpdmVVbml0VHlwZSAhPSBDU1Nf
UkVDVCkgewotICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKLSAgICAgICAgcmV0dXJu
IDA7Ci0gICAgfQotCisgICAgaWYgKG1fcHJpbWl0aXZlVW5pdFR5cGUgIT0gQ1NTX1JFQ1QpCisg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJTlZBTElEX0FDQ0VTU19FUlIgfTsKICAgICByZXR1
cm4gbV92YWx1ZS5yZWN0OwogfQogCi1RdWFkKiBDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0UXVhZFZh
bHVlKEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAotewotICAgIGVjID0gMDsKLSAgICBpZiAobV9w
cmltaXRpdmVVbml0VHlwZSAhPSBDU1NfUVVBRCkgewotICAgICAgICBlYyA9IElOVkFMSURfQUND
RVNTX0VSUjsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgcmV0dXJuIG1fdmFsdWUu
cXVhZDsKLX0KLQotI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi1MZW5ndGhSZXBlYXQqIENT
U1ByaW1pdGl2ZVZhbHVlOjpnZXRMZW5ndGhSZXBlYXRWYWx1ZShFeGNlcHRpb25Db2RlJiBlYykg
Y29uc3QKLXsKLSAgICBlYyA9IDA7Ci0gICAgaWYgKG1fcHJpbWl0aXZlVW5pdFR5cGUgIT0gQ1NT
X0xFTkdUSF9SRVBFQVQpIHsKLSAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7Ci0gICAg
ICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIHJldHVybiBtX3ZhbHVlLmxlbmd0aFJlcGVhdDsK
LX0KLSNlbmRpZgotCi1SZWZQdHI8UkdCQ29sb3I+IENTU1ByaW1pdGl2ZVZhbHVlOjpnZXRSR0JD
b2xvclZhbHVlKEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAorRXhjZXB0aW9uT3I8UmVmPFJHQkNv
bG9yPj4gQ1NTUHJpbWl0aXZlVmFsdWU6OmdldFJHQkNvbG9yVmFsdWUoKSBjb25zdAogewotICAg
IGlmIChtX3ByaW1pdGl2ZVVuaXRUeXBlICE9IENTU19SR0JDT0xPUikgewotICAgICAgICBlYyA9
IElOVkFMSURfQUNDRVNTX0VSUjsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQorICAg
IGlmIChtX3ByaW1pdGl2ZVVuaXRUeXBlICE9IENTU19SR0JDT0xPUikKKyAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IElOVkFMSURfQUNDRVNTX0VSUiB9OwogCi0gICAgLy8gRklNWEU6IFRoaXMg
c2hvdWxkIG5vdCByZXR1cm4gYSBuZXcgb2JqZWN0IGZvciBlYWNoIGludm9jYXRpb24uCisgICAg
Ly8gRklYTUU6IFRoaXMgc2hvdWxkIG5vdCByZXR1cm4gYSBuZXcgb2JqZWN0IGZvciBlYWNoIGlu
dm9jYXRpb24uCiAgICAgcmV0dXJuIFJHQkNvbG9yOjpjcmVhdGUobV92YWx1ZS5jb2xvci0+cmdi
KCkpOwogfQogCi1QYWlyKiBDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0UGFpclZhbHVlKEV4Y2VwdGlv
bkNvZGUmIGVjKSBjb25zdAotewotICAgIGVjID0gMDsKLSAgICBpZiAobV9wcmltaXRpdmVVbml0
VHlwZSAhPSBDU1NfUEFJUikgewotICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKLSAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgcmV0dXJuIG1fdmFsdWUucGFpcjsKLX0KLQog
TkVWRVJfSU5MSU5FIFJlZjxTdHJpbmdJbXBsPiBDU1NQcmltaXRpdmVWYWx1ZTo6Zm9ybWF0TnVt
YmVyVmFsdWUoY29uc3QgY2hhciogc3VmZml4LCB1bnNpZ25lZCBzdWZmaXhMZW5ndGgpIGNvbnN0
CiB7CiAgICAgRGVjaW1hbE51bWJlciBkZWNpbWFsKG1fdmFsdWUubnVtKTsKQEAgLTExNzIsMTIg
KzExMTEsMTIgQEAgQUxXQVlTX0lOTElORSBTdHJpbmcgQ1NTUHJpbWl0aXZlVmFsdWU6OmZvcm1h
dE51bWJlckZvckN1c3RvbUNTU1RleHQoKSBjb25zdAogICAgICAgICByZXR1cm4gcmVzdWx0LnRv
U3RyaW5nKCk7CiAgICAgfQogICAgIGNhc2UgQ1NTX1JFQ1Q6Ci0gICAgICAgIHJldHVybiBnZXRS
ZWN0VmFsdWUoKS0+Y3NzVGV4dCgpOworICAgICAgICByZXR1cm4gcmVjdFZhbHVlKCktPmNzc1Rl
eHQoKTsKICAgICBjYXNlIENTU19RVUFEOgotICAgICAgICByZXR1cm4gZ2V0UXVhZFZhbHVlKCkt
PmNzc1RleHQoKTsKKyAgICAgICAgcmV0dXJuIHF1YWRWYWx1ZSgpLT5jc3NUZXh0KCk7CiAjaWYg
RU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAgICBjYXNlIENTU19MRU5HVEhfUkVQRUFUOgotICAg
ICAgICByZXR1cm4gZ2V0TGVuZ3RoUmVwZWF0VmFsdWUoKS0+Y3NzVGV4dCgpOworICAgICAgICBy
ZXR1cm4gbGVuZ3RoUmVwZWF0VmFsdWUoKS0+Y3NzVGV4dCgpOwogI2VuZGlmCiAgICAgY2FzZSBD
U1NfUEFSU0VSX0hFWENPTE9SOiB7CiAgICAgICAgIFJHQkEzMiByZ2I7CkBAIC0xMTg3LDExICsx
MTI2LDExIEBAIEFMV0FZU19JTkxJTkUgU3RyaW5nIENTU1ByaW1pdGl2ZVZhbHVlOjpmb3JtYXRO
dW1iZXJGb3JDdXN0b21DU1NUZXh0KCkgY29uc3QKICAgICBjYXNlIENTU19SR0JDT0xPUjoKICAg
ICAgICAgcmV0dXJuIGNvbG9yKCkuY3NzVGV4dCgpOwogICAgIGNhc2UgQ1NTX1BBSVI6Ci0gICAg
ICAgIHJldHVybiBnZXRQYWlyVmFsdWUoKS0+Y3NzVGV4dCgpOworICAgICAgICByZXR1cm4gcGFp
clZhbHVlKCktPmNzc1RleHQoKTsKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCiAgICAg
Y2FzZSBDU1NfREFTSEJPQVJEX1JFR0lPTjogewogICAgICAgICBTdHJpbmdCdWlsZGVyIHJlc3Vs
dDsKLSAgICAgICAgZm9yIChEYXNoYm9hcmRSZWdpb24qIHJlZ2lvbiA9IGdldERhc2hib2FyZFJl
Z2lvblZhbHVlKCk7IHJlZ2lvbjsgcmVnaW9uID0gcmVnaW9uLT5tX25leHQuZ2V0KCkpIHsKKyAg
ICAgICAgZm9yIChEYXNoYm9hcmRSZWdpb24qIHJlZ2lvbiA9IGRhc2hib2FyZFJlZ2lvblZhbHVl
KCk7IHJlZ2lvbjsgcmVnaW9uID0gcmVnaW9uLT5tX25leHQuZ2V0KCkpIHsKICAgICAgICAgICAg
IGlmICghcmVzdWx0LmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcg
Jyk7CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiZGFzaGJvYXJkLXJlZ2lvbigi
KTsKQEAgLTEyMDIsMTMgKzExNDEsMTMgQEAgQUxXQVlTX0lOTElORSBTdHJpbmcgQ1NTUHJpbWl0
aXZlVmFsdWU6OmZvcm1hdE51bWJlckZvckN1c3RvbUNTU1RleHQoKSBjb25zdAogICAgICAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCIgcmVjdGFuZ2xlIik7CiAgICAgICAgICAgICBl
bHNlCiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBpZiAocmVnaW9uLT50b3Ao
KS0+bV9wcmltaXRpdmVVbml0VHlwZSA9PSBDU1NfVkFMVUVfSUQgJiYgcmVnaW9uLT50b3AoKS0+
Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlSW52YWxpZCkgeworICAgICAgICAgICAgaWYgKHJlZ2lv
bi0+dG9wKCktPm1fcHJpbWl0aXZlVW5pdFR5cGUgPT0gQ1NTX1ZBTFVFX0lEICYmIHJlZ2lvbi0+
dG9wKCktPnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUludmFsaWQpIHsKICAgICAgICAgICAgICAgICBB
U1NFUlQocmVnaW9uLT5yaWdodCgpLT5tX3ByaW1pdGl2ZVVuaXRUeXBlID09IENTU19WQUxVRV9J
RCk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHJlZ2lvbi0+Ym90dG9tKCktPm1fcHJpbWl0aXZl
VW5pdFR5cGUgPT0gQ1NTX1ZBTFVFX0lEKTsKICAgICAgICAgICAgICAgICBBU1NFUlQocmVnaW9u
LT5sZWZ0KCktPm1fcHJpbWl0aXZlVW5pdFR5cGUgPT0gQ1NTX1ZBTFVFX0lEKTsKLSAgICAgICAg
ICAgICAgICBBU1NFUlQocmVnaW9uLT5yaWdodCgpLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVJ
bnZhbGlkKTsKLSAgICAgICAgICAgICAgICBBU1NFUlQocmVnaW9uLT5ib3R0b20oKS0+Z2V0VmFs
dWVJRCgpID09IENTU1ZhbHVlSW52YWxpZCk7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHJlZ2lv
bi0+bGVmdCgpLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVJbnZhbGlkKTsKKyAgICAgICAgICAg
ICAgICBBU1NFUlQocmVnaW9uLT5yaWdodCgpLT52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVJbnZhbGlk
KTsKKyAgICAgICAgICAgICAgICBBU1NFUlQocmVnaW9uLT5ib3R0b20oKS0+dmFsdWVJRCgpID09
IENTU1ZhbHVlSW52YWxpZCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKHJlZ2lvbi0+bGVmdCgp
LT52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVJbnZhbGlkKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICcpOwogICAgICAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQocmVnaW9uLT50b3AoKS0+Y3NzVGV4dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1By
aW1pdGl2ZVZhbHVlLmgKaW5kZXggYTlhNjc3ODFlZTBmNDQxZDRjNWM3ODM2MWQ2ZGYyYTQ5N2Fm
OGU0Zi4uMTMyZDlhYjc4ZDkxYWNiNzZmYjlmMDliZTI2ZWQxZjczYTVmMzdlMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgKQEAgLTMzLDIzICszMywyMCBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENTU0Jhc2ljU2hhcGU7CiBjbGFzcyBDU1NDYWxjVmFs
dWU7CiBjbGFzcyBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhOwogY2xhc3MgQ291bnRlcjsKIGNs
YXNzIERhc2hib2FyZFJlZ2lvbjsKK2NsYXNzIExlbmd0aFJlcGVhdDsKIGNsYXNzIFBhaXI7CiBj
bGFzcyBRdWFkOwogY2xhc3MgUkdCQ29sb3I7CiBjbGFzcyBSZWN0OwogY2xhc3MgUmVuZGVyU3R5
bGU7Ci1jbGFzcyBDU1NCYXNpY1NoYXBlOwotc3RydWN0IENTU1BhcnNlclZhbHVlOwotCi0jaWYg
RU5BQkxFKENTU19TQ1JPTExfU05BUCkKLWNsYXNzIExlbmd0aFJlcGVhdDsKLSNlbmRpZgogCiBz
dHJ1Y3QgQ1NTRm9udEZhbWlseTsKK3N0cnVjdCBDU1NQYXJzZXJWYWx1ZTsKIHN0cnVjdCBMZW5n
dGg7CiBzdHJ1Y3QgTGVuZ3RoU2l6ZTsKIApAQCAtMTc4LDM5ICsxNzUsMjIgQEAgcHVibGljOgog
I2VuZGlmCiAgICAgICAgIFVPdGhlcgogICAgIH07Ci0gICAgc3RhdGljIFVuaXRDYXRlZ29yeSB1
bml0Q2F0ZWdvcnkoQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcyk7Ci0KLSAgICBib29sIGlz
QW5nbGUoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fcHJpbWl0aXZlVW5pdFR5cGUg
PT0gQ1NTX0RFRwotICAgICAgICAgICAgICAgfHwgbV9wcmltaXRpdmVVbml0VHlwZSA9PSBDU1Nf
UkFECi0gICAgICAgICAgICAgICB8fCBtX3ByaW1pdGl2ZVVuaXRUeXBlID09IENTU19HUkFECi0g
ICAgICAgICAgICAgICB8fCBtX3ByaW1pdGl2ZVVuaXRUeXBlID09IENTU19UVVJOOwotICAgIH0K
KyAgICBzdGF0aWMgVW5pdENhdGVnb3J5IHVuaXRDYXRlZ29yeShVbml0VHlwZXMpOworCisgICAg
Ym9vbCBpc0FuZ2xlKCkgY29uc3Q7CiAgICAgYm9vbCBpc0F0dHIoKSBjb25zdCB7IHJldHVybiBt
X3ByaW1pdGl2ZVVuaXRUeXBlID09IENTU19BVFRSOyB9CiAgICAgYm9vbCBpc0NvdW50ZXIoKSBj
b25zdCB7IHJldHVybiBtX3ByaW1pdGl2ZVVuaXRUeXBlID09IENTU19DT1VOVEVSOyB9CiAgICAg
Ym9vbCBpc0ZvbnRJbmRlcGVuZGVudExlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpbWl0aXZl
VW5pdFR5cGUgPj0gQ1NTX1BYICYmIG1fcHJpbWl0aXZlVW5pdFR5cGUgPD0gQ1NTX1BDOyB9Ci0g
ICAgc3RhdGljIGJvb2wgaXNGb250UmVsYXRpdmVMZW5ndGgodW5zaWduZWQgcHJpbWl0aXZlVW5p
dFR5cGUpCi0gICAgewotICAgICAgICByZXR1cm4gcHJpbWl0aXZlVW5pdFR5cGUgPT0gQ1NTX0VN
UwotICAgICAgICAgICAgfHwgcHJpbWl0aXZlVW5pdFR5cGUgPT0gQ1NTX0VYUwotICAgICAgICAg
ICAgfHwgcHJpbWl0aXZlVW5pdFR5cGUgPT0gQ1NTX1JFTVMKLSAgICAgICAgICAgIHx8IHByaW1p
dGl2ZVVuaXRUeXBlID09IENTU19DSFMKLSAgICAgICAgICAgIHx8IHByaW1pdGl2ZVVuaXRUeXBl
ID09IENTU19RVUlSS1lfRU1TOwotICAgIH0KLSAgICBib29sIGlzRm9udFJlbGF0aXZlTGVuZ3Ro
KCkgY29uc3QgeyByZXR1cm4gaXNGb250UmVsYXRpdmVMZW5ndGgobV9wcmltaXRpdmVVbml0VHlw
ZSk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc0ZvbnRSZWxhdGl2ZUxlbmd0aChVbml0VHlwZXMpOwor
ICAgIGJvb2wgaXNGb250UmVsYXRpdmVMZW5ndGgoKSBjb25zdCB7IHJldHVybiBpc0ZvbnRSZWxh
dGl2ZUxlbmd0aChzdGF0aWNfY2FzdDxVbml0VHlwZXM+KG1fcHJpbWl0aXZlVW5pdFR5cGUpKTsg
fQogICAgIAogICAgIGJvb2wgaXNRdWlya3lFbXMoKSBjb25zdCB7IHJldHVybiBwcmltaXRpdmVU
eXBlKCkgPT0gVW5pdFR5cGVzOjpDU1NfUVVJUktZX0VNUzsgfQogCi0gICAgc3RhdGljIGJvb2wg
aXNWaWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgodW5zaWduZWQgc2hvcnQgdHlwZSkgeyByZXR1cm4g
dHlwZSA+PSBDU1NfVlcgJiYgdHlwZSA8PSBDU1NfVk1BWDsgfQotICAgIGJvb2wgaXNWaWV3cG9y
dFBlcmNlbnRhZ2VMZW5ndGgoKSBjb25zdCB7IHJldHVybiBpc1ZpZXdwb3J0UGVyY2VudGFnZUxl
bmd0aChtX3ByaW1pdGl2ZVVuaXRUeXBlKTsgfQorICAgIHN0YXRpYyBib29sIGlzVmlld3BvcnRQ
ZXJjZW50YWdlTGVuZ3RoKFVuaXRUeXBlcyB0eXBlKSB7IHJldHVybiB0eXBlID49IENTU19WVyAm
JiB0eXBlIDw9IENTU19WTUFYOyB9CisgICAgYm9vbCBpc1ZpZXdwb3J0UGVyY2VudGFnZUxlbmd0
aCgpIGNvbnN0IHsgcmV0dXJuIGlzVmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKHN0YXRpY19jYXN0
PFVuaXRUeXBlcz4obV9wcmltaXRpdmVVbml0VHlwZSkpOyB9CiAKLSAgICBzdGF0aWMgYm9vbCBp
c0xlbmd0aCh1bnNpZ25lZCBzaG9ydCB0eXBlKQotICAgIHsKLSAgICAgICAgcmV0dXJuICh0eXBl
ID49IENTU19FTVMgJiYgdHlwZSA8PSBDU1NfUEMpIHx8IHR5cGUgPT0gQ1NTX1JFTVMgfHwgdHlw
ZSA9PSBDU1NfQ0hTIHx8IGlzVmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKHR5cGUpIHx8IHR5cGUg
PT0gQ1NTX1FVSVJLWV9FTVM7Ci0gICAgfQotCi0gICAgYm9vbCBpc0xlbmd0aCgpIGNvbnN0IHsg
cmV0dXJuIGlzTGVuZ3RoKHByaW1pdGl2ZVR5cGUoKSk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc0xl
bmd0aChVbml0VHlwZXMpOworICAgIGJvb2wgaXNMZW5ndGgoKSBjb25zdCB7IHJldHVybiBpc0xl
bmd0aChzdGF0aWNfY2FzdDxVbml0VHlwZXM+KHByaW1pdGl2ZVR5cGUoKSkpOyB9CiAgICAgYm9v
bCBpc051bWJlcigpIGNvbnN0IHsgcmV0dXJuIHByaW1pdGl2ZVR5cGUoKSA9PSBDU1NfTlVNQkVS
OyB9CiAgICAgYm9vbCBpc1BlcmNlbnRhZ2UoKSBjb25zdCB7IHJldHVybiBwcmltaXRpdmVUeXBl
KCkgPT0gQ1NTX1BFUkNFTlRBR0U7IH0KICAgICBib29sIGlzUHgoKSBjb25zdCB7IHJldHVybiBw
cmltaXRpdmVUeXBlKCkgPT0gQ1NTX1BYOyB9CkBAIC0yMzMsMTIgKzIxMyw4IEBAIHB1YmxpYzoK
ICAgICBib29sIGlzRG90c1BlclBpeGVsKCkgY29uc3QgeyByZXR1cm4gcHJpbWl0aXZlVHlwZSgp
ID09IENTU19EUFBYOyB9CiAgICAgYm9vbCBpc0RvdHNQZXJDZW50aW1ldGVyKCkgY29uc3QgeyBy
ZXR1cm4gcHJpbWl0aXZlVHlwZSgpID09IENTU19EUENNOyB9CiAKLSAgICBzdGF0aWMgYm9vbCBp
c1Jlc29sdXRpb24odW5zaWduZWQgc2hvcnQgdHlwZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0
eXBlID49IENTU19EUFBYICYmIHR5cGUgPD0gQ1NTX0RQQ007Ci0gICAgfQotCi0gICAgYm9vbCBp
c1Jlc29sdXRpb24oKSBjb25zdCB7IHJldHVybiBpc1Jlc29sdXRpb24ocHJpbWl0aXZlVHlwZSgp
KTsgfQorICAgIHN0YXRpYyBib29sIGlzUmVzb2x1dGlvbihVbml0VHlwZXMpOworICAgIGJvb2wg
aXNSZXNvbHV0aW9uKCkgY29uc3QgeyByZXR1cm4gaXNSZXNvbHV0aW9uKHN0YXRpY19jYXN0PFVu
aXRUeXBlcz4ocHJpbWl0aXZlVHlwZSgpKSk7IH0KICAgICBib29sIGlzVmlld3BvcnRQZXJjZW50
YWdlV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3ByaW1pdGl2ZVVuaXRUeXBlID09IENTU19WVzsg
fQogICAgIGJvb2wgaXNWaWV3cG9ydFBlcmNlbnRhZ2VIZWlnaHQoKSBjb25zdCB7IHJldHVybiBt
X3ByaW1pdGl2ZVVuaXRUeXBlID09IENTU19WSDsgfQogICAgIGJvb2wgaXNWaWV3cG9ydFBlcmNl
bnRhZ2VNYXgoKSBjb25zdCB7IHJldHVybiBtX3ByaW1pdGl2ZVVuaXRUeXBlID09IENTU19WTUFY
OyB9CkBAIC0yNTgsMTIwICsyMzQsNzQgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8Q1NTUHJp
bWl0aXZlVmFsdWU+IGNyZWF0ZShjb25zdCBMZW5ndGgmIHZhbHVlLCBjb25zdCBSZW5kZXJTdHls
ZSYgc3R5bGUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUs
IHN0eWxlKSk7IH0KICAgICBzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGUoY29u
c3QgTGVuZ3RoU2l6ZSYgdmFsdWUsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBDU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSwgc3R5bGUpKTsgfQogCi0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRl
KFQmJiB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU1ByaW1p
dGl2ZVZhbHVlKHN0ZDo6Zm9yd2FyZDxUPih2YWx1ZSkpKTsKLSAgICB9CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4gc3RhdGljIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRlKFQmJik7CiAK
ICAgICAvLyBUaGlzIHZhbHVlIGlzIHVzZWQgdG8gaGFuZGxlIHF1aXJreSBtYXJnaW5zIGluIHJl
ZmxvdyByb290cyAoYm9keSwgdGQsIGFuZCB0aCkgbGlrZSBXaW5JRS4KICAgICAvLyBUaGUgYmFz
aWMgaWRlYSBpcyB0aGF0IGEgc3R5bGVzaGVldCBjYW4gdXNlIHRoZSB2YWx1ZSBfX3FlbSAoZm9y
IHF1aXJreSBlbSkgaW5zdGVhZCBvZiBlbS4KICAgICAvLyBXaGVuIHRoZSBxdWlya3kgdmFsdWUg
aXMgdXNlZCwgaWYgeW91J3JlIGluIHF1aXJrcyBtb2RlLCB0aGUgbWFyZ2luIHdpbGwgY29sbGFw
c2UgYXdheQogICAgIC8vIGluc2lkZSBhIHRhYmxlIGNlbGwuCi0gICAgc3RhdGljIFJlZjxDU1NQ
cmltaXRpdmVWYWx1ZT4gY3JlYXRlQWxsb3dpbmdNYXJnaW5RdWlyayhkb3VibGUgdmFsdWUsIFVu
aXRUeXBlcyB0eXBlKQotICAgIHsKLSAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHF1aXJrVmFs
dWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUsIHR5cGUpOwotICAgICAgICBxdWlya1Zh
bHVlLT5tX2lzUXVpcmtWYWx1ZSA9IHRydWU7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqcXVp
cmtWYWx1ZSk7Ci0gICAgfQorICAgIHN0YXRpYyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0
ZUFsbG93aW5nTWFyZ2luUXVpcmsoZG91YmxlIHZhbHVlLCBVbml0VHlwZXMpOwogCiAgICAgfkNT
U1ByaW1pdGl2ZVZhbHVlKCk7CiAKICAgICB2b2lkIGNsZWFudXAoKTsKIAogICAgIFdFQkNPUkVf
RVhQT1JUIHVuc2lnbmVkIHNob3J0IHByaW1pdGl2ZVR5cGUoKSBjb25zdDsKKyAgICBXRUJDT1JF
X0VYUE9SVCBFeGNlcHRpb25Pcjx2b2lkPiBzZXRGbG9hdFZhbHVlKHVuc2lnbmVkIHNob3J0IHVu
aXRUeXBlLCBkb3VibGUgZmxvYXRWYWx1ZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9u
T3I8ZmxvYXQ+IGdldEZsb2F0VmFsdWUodW5zaWduZWQgc2hvcnQgdW5pdFR5cGUpIGNvbnN0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFN0cmluZ1ZhbHVlKHVuc2ln
bmVkIHNob3J0IHN0cmluZ1R5cGUsIGNvbnN0IFN0cmluZyYgc3RyaW5nVmFsdWUpOworICAgIFdF
QkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPFN0cmluZz4gZ2V0U3RyaW5nVmFsdWUoKSBjb25zdDsK
KyAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25PcjxDb3VudGVyKj4gZ2V0Q291bnRlclZhbHVl
KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8UmVjdCo+IGdldFJlY3RW
YWx1ZSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPFJlZjxSR0JDb2xv
cj4+IGdldFJHQkNvbG9yVmFsdWUoKSBjb25zdDsKIAogICAgIGRvdWJsZSBjb21wdXRlRGVncmVl
cygpIGNvbnN0OwogICAgIAogICAgIGJvb2wgYnVpbGRQYXJzZXJWYWx1ZShDU1NQYXJzZXJWYWx1
ZSopIGNvbnN0OwogICAgIAogICAgIGVudW0gVGltZVVuaXQgeyBTZWNvbmRzLCBNaWxsaXNlY29u
ZHMgfTsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgVGltZVVuaXQgdGltZVVuaXQ+IFQgY29t
cHV0ZVRpbWUoKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKHRpbWVVbml0ID09IFNlY29uZHMg
JiYgcHJpbWl0aXZlVHlwZSgpID09IENTU19TKQotICAgICAgICAgICAgcmV0dXJuIGdldFZhbHVl
PFQ+KCk7Ci0gICAgICAgIGlmICh0aW1lVW5pdCA9PSBTZWNvbmRzICYmIHByaW1pdGl2ZVR5cGUo
KSA9PSBDU1NfTVMpCi0gICAgICAgICAgICByZXR1cm4gZ2V0VmFsdWU8VD4oKSAvIDEwMDA7Ci0g
ICAgICAgIGlmICh0aW1lVW5pdCA9PSBNaWxsaXNlY29uZHMgJiYgcHJpbWl0aXZlVHlwZSgpID09
IENTU19NUykKLSAgICAgICAgICAgIHJldHVybiBnZXRWYWx1ZTxUPigpOwotICAgICAgICBpZiAo
dGltZVVuaXQgPT0gTWlsbGlzZWNvbmRzICYmIHByaW1pdGl2ZVR5cGUoKSA9PSBDU1NfUykKLSAg
ICAgICAgICAgIHJldHVybiBnZXRWYWx1ZTxUPigpICogMTAwMDsKLSAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIC8qCi0gICAgICog
Y29tcHV0ZXMgYSBsZW5ndGggaW4gcGl4ZWxzIG91dCBvZiB0aGUgZ2l2ZW4gQ1NTVmFsdWUuIE5l
ZWQgdGhlIFJlbmRlclN0eWxlIHRvIGdldAotICAgICAqIHRoZSBmb250aW5mbyBpbiBjYXNlIHZh
bCBpcyBkZWZpbmVkIGluIGVtIG9yIGV4LgotICAgICAqCi0gICAgICogVGhlIG1ldHJpY3MgaGF2
ZSB0byBiZSBhIGJpdCBkaWZmZXJlbnQgZm9yIHNjcmVlbiBhbmQgcHJpbnRlciBvdXRwdXQuCi0g
ICAgICogRm9yIHNjcmVlbiBvdXRwdXQgd2UgYXNzdW1lIDEgaW5jaCA9PSA3MiBweCwgZm9yIHBy
aW50ZXIgd2UgYXNzdW1lIDMwMCBkcGkKLSAgICAgKgotICAgICAqIHRoaXMgaXMgc2NyZWVuL3By
aW50ZXIgZGVwZW5kZW50LCBzbyB3ZSBwcm9iYWJseSBuZWVkIGEgY29uZmlnIG9wdGlvbiBmb3Ig
dGhpcywKLSAgICAgKiBhbmQgc29tZSB0b29sIHRvIGNhbGlicmF0ZS4KLSAgICAgKi8KLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIGNvbXB1dGVMZW5ndGgoY29uc3QgQ1NTVG9MZW5ndGhDb252
ZXJzaW9uRGF0YSYpIGNvbnN0OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIFRpbWVVbml0IHRp
bWVVbml0PiBUIGNvbXB1dGVUaW1lKCkgY29uc3Q7CiAKLSAgICAvLyBDb252ZXJ0cyB0byBhIExl
bmd0aCwgbWFwcGluZyB2YXJpb3VzIHVuaXQgdHlwZXMgYXBwcm9wcmlhdGVseS4KKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBUIGNvbXB1dGVMZW5ndGgoY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJz
aW9uRGF0YSYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGludD4gTGVuZ3RoIGNvbnZlcnRUb0xlbmd0
aChjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJikgY29uc3Q7CiAKICAgICBib29sIGNv
bnZlcnRpbmdUb0xlbmd0aFJlcXVpcmVzTm9uTnVsbFN0eWxlKGludCBsZW5ndGhDb252ZXJzaW9u
KSBjb25zdDsKIAotICAgIC8vIHVzZSB3aXRoIGNhcmUhISEKLSAgICB2b2lkIHNldFByaW1pdGl2
ZVR5cGUodW5zaWduZWQgc2hvcnQgdHlwZSkgeyBtX3ByaW1pdGl2ZVVuaXRUeXBlID0gdHlwZTsg
fQotCi0gICAgV0VCQ09SRV9FWFBPUlQgZG91YmxlIGdldERvdWJsZVZhbHVlKHVuc2lnbmVkIHNo
b3J0IHVuaXRUeXBlLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7Ci0gICAgZG91YmxlIGdldERvdWJs
ZVZhbHVlKHVuc2lnbmVkIHNob3J0IHVuaXRUeXBlKSBjb25zdDsKLSAgICBkb3VibGUgZ2V0RG91
YmxlVmFsdWUoKSBjb25zdDsKLQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RmxvYXRWYWx1
ZSh1bnNpZ25lZCBzaG9ydCB1bml0VHlwZSwgZG91YmxlIGZsb2F0VmFsdWUsIEV4Y2VwdGlvbkNv
ZGUmKTsKLSAgICBmbG9hdCBnZXRGbG9hdFZhbHVlKHVuc2lnbmVkIHNob3J0IHVuaXRUeXBlLCBF
eGNlcHRpb25Db2RlJiBlYykgY29uc3QgeyByZXR1cm4gZ2V0VmFsdWU8ZmxvYXQ+KHVuaXRUeXBl
LCBlYyk7IH0KLSAgICBmbG9hdCBnZXRGbG9hdFZhbHVlKHVuc2lnbmVkIHNob3J0IHVuaXRUeXBl
KSBjb25zdCB7IHJldHVybiBnZXRWYWx1ZTxmbG9hdD4odW5pdFR5cGUpOyB9Ci0gICAgZmxvYXQg
Z2V0RmxvYXRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIGdldFZhbHVlPGZsb2F0PigpOyB9CisgICAg
ZG91YmxlIGRvdWJsZVZhbHVlKFVuaXRUeXBlcykgY29uc3Q7CisgICAgZG91YmxlIGRvdWJsZVZh
bHVlKCkgY29uc3Q7CiAKLSAgICBpbnQgZ2V0SW50VmFsdWUodW5zaWduZWQgc2hvcnQgdW5pdFR5
cGUsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdCB7IHJldHVybiBnZXRWYWx1ZTxpbnQ+KHVuaXRU
eXBlLCBlYyk7IH0KLSAgICBpbnQgZ2V0SW50VmFsdWUodW5zaWduZWQgc2hvcnQgdW5pdFR5cGUp
IGNvbnN0IHsgcmV0dXJuIGdldFZhbHVlPGludD4odW5pdFR5cGUpOyB9Ci0gICAgaW50IGdldElu
dFZhbHVlKCkgY29uc3QgeyByZXR1cm4gZ2V0VmFsdWU8aW50PigpOyB9CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4gaW5saW5lIFQgdmFsdWUoVW5pdFR5cGVzIHR5cGUpIGNvbnN0IHsgcmV0dXJu
IGNsYW1wVG88VD4oZG91YmxlVmFsdWUodHlwZSkpOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4gaW5saW5lIFQgdmFsdWUoKSBjb25zdCB7IHJldHVybiBjbGFtcFRvPFQ+KGRvdWJsZVZhbHVl
KCkpOyB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgVCBnZXRWYWx1ZSh1bnNp
Z25lZCBzaG9ydCB1bml0VHlwZSwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0IHsgcmV0dXJuIGNs
YW1wVG88VD4oZ2V0RG91YmxlVmFsdWUodW5pdFR5cGUsIGVjKSk7IH0KLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBpbmxpbmUgVCBnZXRWYWx1ZSh1bnNpZ25lZCBzaG9ydCB1bml0VHlwZSkgY29u
c3QgeyByZXR1cm4gY2xhbXBUbzxUPihnZXREb3VibGVWYWx1ZSh1bml0VHlwZSkpOyB9Ci0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFQgZ2V0VmFsdWUoKSBjb25zdCB7IHJldHVybiBj
bGFtcFRvPFQ+KGdldERvdWJsZVZhbHVlKCkpOyB9CisgICAgZmxvYXQgZmxvYXRWYWx1ZShVbml0
VHlwZXMgdHlwZSkgY29uc3QgeyByZXR1cm4gdmFsdWU8ZmxvYXQ+KHR5cGUpOyB9CisgICAgZmxv
YXQgZmxvYXRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIHZhbHVlPGZsb2F0PigpOyB9CiAKLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldFN0cmluZ1ZhbHVlKHVuc2lnbmVkIHNob3J0IHN0cmluZ1R5
cGUsIGNvbnN0IFN0cmluZyYgc3RyaW5nVmFsdWUsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBXRUJD
T1JFX0VYUE9SVCBTdHJpbmcgZ2V0U3RyaW5nVmFsdWUoRXhjZXB0aW9uQ29kZSYpIGNvbnN0Owot
ICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBnZXRTdHJpbmdWYWx1ZSgpIGNvbnN0OworICAgIGlu
dCBpbnRWYWx1ZShVbml0VHlwZXMgdHlwZSkgY29uc3QgeyByZXR1cm4gdmFsdWU8aW50Pih0eXBl
KTsgfQorICAgIGludCBpbnRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIHZhbHVlPGludD4oKTsgfQog
Ci0gICAgV0VCQ09SRV9FWFBPUlQgQ291bnRlciogZ2V0Q291bnRlclZhbHVlKEV4Y2VwdGlvbkNv
ZGUmKSBjb25zdDsKLSAgICBDb3VudGVyKiBnZXRDb3VudGVyVmFsdWUoKSBjb25zdCB7IHJldHVy
biBtX3ByaW1pdGl2ZVVuaXRUeXBlICE9IENTU19DT1VOVEVSID8gbnVsbHB0ciA6IG1fdmFsdWUu
Y291bnRlcjsgfQorICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdHJpbmdWYWx1ZSgpIGNvbnN0
OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgUmVjdCogZ2V0UmVjdFZhbHVlKEV4Y2VwdGlvbkNvZGUm
KSBjb25zdDsKLSAgICBSZWN0KiBnZXRSZWN0VmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ByaW1p
dGl2ZVVuaXRUeXBlICE9IENTU19SRUNUID8gbnVsbHB0ciA6IG1fdmFsdWUucmVjdDsgfQotCi0g
ICAgUXVhZCogZ2V0UXVhZFZhbHVlKEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKLSAgICBRdWFkKiBn
ZXRRdWFkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ByaW1pdGl2ZVVuaXRUeXBlICE9IENTU19R
VUFEID8gbnVsbHB0ciA6IG1fdmFsdWUucXVhZDsgfQorICAgIENvdW50ZXIqIGNvdW50ZXJWYWx1
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpbWl0aXZlVW5pdFR5cGUgIT0gQ1NTX0NPVU5URVIgPyAw
IDogbV92YWx1ZS5jb3VudGVyOyB9CisgICAgUmVjdCogcmVjdFZhbHVlKCkgY29uc3QgeyByZXR1
cm4gbV9wcmltaXRpdmVVbml0VHlwZSAhPSBDU1NfUkVDVCA/IDAgOiBtX3ZhbHVlLnJlY3Q7IH0K
KyAgICBRdWFkKiBxdWFkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ByaW1pdGl2ZVVuaXRUeXBl
ICE9IENTU19RVUFEID8gMCA6IG1fdmFsdWUucXVhZDsgfQogCiAjaWYgRU5BQkxFKENTU19TQ1JP
TExfU05BUCkKLSAgICBMZW5ndGhSZXBlYXQqIGdldExlbmd0aFJlcGVhdFZhbHVlKEV4Y2VwdGlv
bkNvZGUmKSBjb25zdDsKLSAgICBMZW5ndGhSZXBlYXQqIGdldExlbmd0aFJlcGVhdFZhbHVlKCkg
Y29uc3QgeyByZXR1cm4gbV9wcmltaXRpdmVVbml0VHlwZSAhPSBDU1NfTEVOR1RIX1JFUEVBVCA/
IG51bGxwdHIgOiBtX3ZhbHVlLmxlbmd0aFJlcGVhdDsgfQorICAgIExlbmd0aFJlcGVhdCogbGVu
Z3RoUmVwZWF0VmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ByaW1pdGl2ZVVuaXRUeXBlICE9IENT
U19MRU5HVEhfUkVQRUFUID8gMCA6IG1fdmFsdWUubGVuZ3RoUmVwZWF0OyB9CiAjZW5kaWYKIAot
ICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxSR0JDb2xvcj4gZ2V0UkdCQ29sb3JWYWx1ZShFeGNl
cHRpb25Db2RlJikgY29uc3Q7CiAgICAgY29uc3QgQ29sb3ImIGNvbG9yKCkgY29uc3QgeyBBU1NF
UlQobV9wcmltaXRpdmVVbml0VHlwZSA9PSBDU1NfUkdCQ09MT1IpOyByZXR1cm4gKm1fdmFsdWUu
Y29sb3I7IH0KLQotICAgIFBhaXIqIGdldFBhaXJWYWx1ZShFeGNlcHRpb25Db2RlJikgY29uc3Q7
Ci0gICAgUGFpciogZ2V0UGFpclZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9wcmltaXRpdmVVbml0
VHlwZSAhPSBDU1NfUEFJUiA/IG51bGxwdHIgOiBtX3ZhbHVlLnBhaXI7IH0KKyAgICBQYWlyKiBw
YWlyVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ByaW1pdGl2ZVVuaXRUeXBlICE9IENTU19QQUlS
ID8gbnVsbHB0ciA6IG1fdmFsdWUucGFpcjsgfQogCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQ
T1JUKQotICAgIERhc2hib2FyZFJlZ2lvbiogZ2V0RGFzaGJvYXJkUmVnaW9uVmFsdWUoKSBjb25z
dCB7IHJldHVybiBtX3ByaW1pdGl2ZVVuaXRUeXBlICE9IENTU19EQVNIQk9BUkRfUkVHSU9OID8g
bnVsbHB0ciA6IG1fdmFsdWUucmVnaW9uOyB9CisgICAgRGFzaGJvYXJkUmVnaW9uKiBkYXNoYm9h
cmRSZWdpb25WYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpbWl0aXZlVW5pdFR5cGUgIT0gQ1NT
X0RBU0hCT0FSRF9SRUdJT04gPyBudWxscHRyIDogbV92YWx1ZS5yZWdpb247IH0KICNlbmRpZgog
Ci0gICAgQ1NTQmFzaWNTaGFwZSogZ2V0U2hhcGVWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJp
bWl0aXZlVW5pdFR5cGUgIT0gQ1NTX1NIQVBFID8gbnVsbHB0ciA6IG1fdmFsdWUuc2hhcGU7IH0K
LQorICAgIENTU0Jhc2ljU2hhcGUqIHNoYXBlVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ByaW1p
dGl2ZVVuaXRUeXBlICE9IENTU19TSEFQRSA/IG51bGxwdHIgOiBtX3ZhbHVlLnNoYXBlOyB9CiAg
ICAgY29uc3QgQ1NTRm9udEZhbWlseSYgZm9udEZhbWlseSgpIGNvbnN0IHsgQVNTRVJUKG1fcHJp
bWl0aXZlVW5pdFR5cGUgPT0gQ1NTX0ZPTlRfRkFNSUxZKTsgcmV0dXJuICptX3ZhbHVlLmZvbnRG
YW1pbHk7IH0KLQogICAgIENTU0NhbGNWYWx1ZSogY3NzQ2FsY1ZhbHVlKCkgY29uc3QgeyByZXR1
cm4gbV9wcmltaXRpdmVVbml0VHlwZSAhPSBDU1NfQ0FMQyA/IG51bGxwdHIgOiBtX3ZhbHVlLmNh
bGM7IH0KIAotICAgIENTU1Byb3BlcnR5SUQgZ2V0UHJvcGVydHlJRCgpIGNvbnN0IHsgcmV0dXJu
IG1fcHJpbWl0aXZlVW5pdFR5cGUgPT0gQ1NTX1BST1BFUlRZX0lEID8gbV92YWx1ZS5wcm9wZXJ0
eUlEIDogQ1NTUHJvcGVydHlJbnZhbGlkOyB9Ci0gICAgQ1NTVmFsdWVJRCBnZXRWYWx1ZUlEKCkg
Y29uc3QgeyByZXR1cm4gbV9wcmltaXRpdmVVbml0VHlwZSA9PSBDU1NfVkFMVUVfSUQgPyBtX3Zh
bHVlLnZhbHVlSUQgOiBDU1NWYWx1ZUludmFsaWQ7IH0KKyAgICBDU1NQcm9wZXJ0eUlEIHByb3Bl
cnR5SUQoKSBjb25zdCB7IHJldHVybiBtX3ByaW1pdGl2ZVVuaXRUeXBlID09IENTU19QUk9QRVJU
WV9JRCA/IG1fdmFsdWUucHJvcGVydHlJRCA6IENTU1Byb3BlcnR5SW52YWxpZDsgfQorICAgIENT
U1ZhbHVlSUQgdmFsdWVJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpbWl0aXZlVW5pdFR5cGUgPT0g
Q1NTX1ZBTFVFX0lEID8gbV92YWx1ZS52YWx1ZUlEIDogQ1NTVmFsdWVJbnZhbGlkOyB9CiAKICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgb3BlcmF0b3IgVCgpIGNvbnN0OyAvLyBEZWZp
bmVkIGluIENTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaAogCkBAIC0zODYsOSArMzE2LDkgQEAg
cHVibGljOgogICAgIGJvb2wgZXF1YWxzKGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJikgY29uc3Q7
CiAKICAgICBzdGF0aWMgVW5pdFR5cGVzIGNhbm9uaWNhbFVuaXRUeXBlRm9yQ2F0ZWdvcnkoVW5p
dENhdGVnb3J5KTsKLSAgICBzdGF0aWMgZG91YmxlIGNvbnZlcnNpb25Ub0Nhbm9uaWNhbFVuaXRz
U2NhbGVGYWN0b3IodW5zaWduZWQgc2hvcnQgdW5pdFR5cGUpOworICAgIHN0YXRpYyBkb3VibGUg
Y29udmVyc2lvblRvQ2Fub25pY2FsVW5pdHNTY2FsZUZhY3RvcihVbml0VHlwZXMpOwogCi0gICAg
c3RhdGljIGRvdWJsZSBjb21wdXRlTm9uQ2FsY0xlbmd0aERvdWJsZShjb25zdCBDU1NUb0xlbmd0
aENvbnZlcnNpb25EYXRhJiwgdW5zaWduZWQgc2hvcnQgcHJpbWl0aXZlVHlwZSwgZG91YmxlIHZh
bHVlKTsKKyAgICBzdGF0aWMgZG91YmxlIGNvbXB1dGVOb25DYWxjTGVuZ3RoRG91YmxlKGNvbnN0
IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmLCBVbml0VHlwZXMsIGRvdWJsZSB2YWx1ZSk7CiAK
ICNpZiBDT01QSUxFUihNU1ZDKQogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBwcml2YXRl
LCBidXQgZm9yIHNvbWUgcmVhc29uIE1TVkMgdGhlbiBmYWlscyB0byBpbnZva2UgaXQgZnJvbSBM
YXp5TmV2ZXJEZXN0cm95ZWQ6OmNvbnN0cnVjdC4KQEAgLTQxMSwxOCArMzQxLDggQEAgcHJpdmF0
ZToKICAgICBDU1NQcmltaXRpdmVWYWx1ZShkb3VibGUsIFVuaXRUeXBlcyk7CiAKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBDU1NQcmltaXRpdmVWYWx1ZShUKTsgLy8gRGVmaW5lZCBpbiBDU1NQ
cmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IENTU1By
aW1pdGl2ZVZhbHVlKFJlZlB0cjxUPiYmIHZhbHVlKQotICAgICAgICA6IENTU1ZhbHVlKFByaW1p
dGl2ZUNsYXNzKQotICAgIHsKLSAgICAgICAgaW5pdChXVEZNb3ZlKHZhbHVlKSk7Ci0gICAgfQot
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gQ1NTUHJpbWl0aXZlVmFsdWUoUmVmPFQ+JiYgdmFs
dWUpCi0gICAgICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCi0gICAgewotICAgICAgICBp
bml0KFdURk1vdmUodmFsdWUpKTsKLSAgICB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gQ1NT
UHJpbWl0aXZlVmFsdWUoUmVmUHRyPFQ+JiYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IENT
U1ByaW1pdGl2ZVZhbHVlKFJlZjxUPiYmKTsKIAogICAgIHN0YXRpYyB2b2lkIGNyZWF0ZShpbnQp
OyAvLyBjb21waWxlLXRpbWUgZ3VhcmQKICAgICBzdGF0aWMgdm9pZCBjcmVhdGUodW5zaWduZWQp
OyAvLyBjb21waWxlLXRpbWUgZ3VhcmQKQEAgLTQ0MiwxMyArMzYyLDEyIEBAIHByaXZhdGU6CiAj
ZW5kaWYKICAgICB2b2lkIGluaXQoUmVmPENTU0Jhc2ljU2hhcGU+JiYpOwogICAgIHZvaWQgaW5p
dChSZWZQdHI8Q1NTQ2FsY1ZhbHVlPiYmKTsKLSAgICBib29sIGdldERvdWJsZVZhbHVlSW50ZXJu
YWwoVW5pdFR5cGVzIHRhcmdldFVuaXRUeXBlLCBkb3VibGUqIHJlc3VsdCkgY29uc3Q7CisgICAg
T3B0aW9uYWw8ZG91YmxlPiBkb3VibGVWYWx1ZUludGVybmFsKFVuaXRUeXBlcyB0YXJnZXRVbml0
VHlwZSkgY29uc3Q7CiAKICAgICBkb3VibGUgY29tcHV0ZUxlbmd0aERvdWJsZShjb25zdCBDU1NU
b0xlbmd0aENvbnZlcnNpb25EYXRhJikgY29uc3Q7CiAKICAgICBBTFdBWVNfSU5MSU5FIFN0cmlu
ZyBmb3JtYXROdW1iZXJGb3JDdXN0b21DU1NUZXh0KCkgY29uc3Q7Ci0gICAgdGVtcGxhdGUgPHVu
c2lnbmVkIGNoYXJhY3RlckNvdW50PgotICAgIEFMV0FZU19JTkxJTkUgUmVmPFN0cmluZ0ltcGw+
IGZvcm1hdE51bWJlclZhbHVlKGNvbnN0IGNoYXIgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJDb3Vu
dF0pIGNvbnN0OworICAgIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlckNvdW50PiBBTFdBWVNf
SU5MSU5FIFJlZjxTdHJpbmdJbXBsPiBmb3JtYXROdW1iZXJWYWx1ZShjb25zdCBjaGFyICgmY2hh
cmFjdGVycylbY2hhcmFjdGVyQ291bnRdKSBjb25zdDsKICAgICBORVZFUl9JTkxJTkUgUmVmPFN0
cmluZ0ltcGw+IGZvcm1hdE51bWJlclZhbHVlKGNvbnN0IGNoYXIqIHN1ZmZpeCwgdW5zaWduZWQg
c3VmZml4TGVuZ3RoKSBjb25zdDsKIAogICAgIHVuaW9uIHsKQEAgLTQ3Miw2ICszOTEsNzUgQEAg
cHJpdmF0ZToKICAgICB9IG1fdmFsdWU7CiB9OwogCitpbmxpbmUgYm9vbCBDU1NQcmltaXRpdmVW
YWx1ZTo6aXNBbmdsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpbWl0aXZlVW5pdFR5cGUg
PT0gQ1NTX0RFRworICAgICAgICB8fCBtX3ByaW1pdGl2ZVVuaXRUeXBlID09IENTU19SQUQKKyAg
ICAgICAgfHwgbV9wcmltaXRpdmVVbml0VHlwZSA9PSBDU1NfR1JBRAorICAgICAgICB8fCBtX3By
aW1pdGl2ZVVuaXRUeXBlID09IENTU19UVVJOOworfQorCitpbmxpbmUgYm9vbCBDU1NQcmltaXRp
dmVWYWx1ZTo6aXNGb250UmVsYXRpdmVMZW5ndGgoVW5pdFR5cGVzIHR5cGUpCit7CisgICAgcmV0
dXJuIHR5cGUgPT0gQ1NTX0VNUworICAgICAgICB8fCB0eXBlID09IENTU19FWFMKKyAgICAgICAg
fHwgdHlwZSA9PSBDU1NfUkVNUworICAgICAgICB8fCB0eXBlID09IENTU19DSFMKKyAgICAgICAg
fHwgdHlwZSA9PSBDU1NfUVVJUktZX0VNUzsKK30KKworaW5saW5lIGJvb2wgQ1NTUHJpbWl0aXZl
VmFsdWU6OmlzTGVuZ3RoKFVuaXRUeXBlcyB0eXBlKQoreworICAgIHJldHVybiAodHlwZSA+PSBD
U1NfRU1TICYmIHR5cGUgPD0gQ1NTX1BDKQorICAgICAgICB8fCB0eXBlID09IENTU19SRU1TCisg
ICAgICAgIHx8IHR5cGUgPT0gQ1NTX0NIUworICAgICAgICB8fCBpc1ZpZXdwb3J0UGVyY2VudGFn
ZUxlbmd0aCh0eXBlKQorICAgICAgICB8fCB0eXBlID09IENTU19RVUlSS1lfRU1TOworfQorCitp
bmxpbmUgYm9vbCBDU1NQcmltaXRpdmVWYWx1ZTo6aXNSZXNvbHV0aW9uKFVuaXRUeXBlcyB0eXBl
KQoreworICAgIHJldHVybiB0eXBlID49IENTU19EUFBYICYmIHR5cGUgPD0gQ1NTX0RQQ007Cit9
CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IENT
U1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoVCYmIHZhbHVlKQoreworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN0ZDo6Zm9yd2FyZDxUPih2YWx1ZSkpKTsKK30KKwor
aW5saW5lIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUFs
bG93aW5nTWFyZ2luUXVpcmsoZG91YmxlIHZhbHVlLCBVbml0VHlwZXMgdHlwZSkKK3sKKyAgICBh
dXRvIHJlc3VsdCA9IGFkb3B0UmVmKCpuZXcgQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUsIHR5cGUp
KTsKKyAgICByZXN1bHQtPm1faXNRdWlya1ZhbHVlID0gdHJ1ZTsKKyAgICByZXR1cm4gcmVzdWx0
OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBDU1NQcmltaXRpdmVWYWx1ZTo6VGltZVVuaXQg
dGltZVVuaXQ+IGlubGluZSBUIENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlVGltZSgpIGNvbnN0
Cit7CisgICAgaWYgKHRpbWVVbml0ID09IFNlY29uZHMgJiYgcHJpbWl0aXZlVHlwZSgpID09IENT
U19TKQorICAgICAgICByZXR1cm4gdmFsdWU8VD4oKTsKKyAgICBpZiAodGltZVVuaXQgPT0gU2Vj
b25kcyAmJiBwcmltaXRpdmVUeXBlKCkgPT0gQ1NTX01TKQorICAgICAgICByZXR1cm4gdmFsdWU8
VD4oKSAvIDEwMDA7CisgICAgaWYgKHRpbWVVbml0ID09IE1pbGxpc2Vjb25kcyAmJiBwcmltaXRp
dmVUeXBlKCkgPT0gQ1NTX01TKQorICAgICAgICByZXR1cm4gdmFsdWU8VD4oKTsKKyAgICBpZiAo
dGltZVVuaXQgPT0gTWlsbGlzZWNvbmRzICYmIHByaW1pdGl2ZVR5cGUoKSA9PSBDU1NfUykKKyAg
ICAgICAgcmV0dXJuIHZhbHVlPFQ+KCkgKiAxMDAwOworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIHJldHVybiAwOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKFJlZlB0cjxUPiYmIHZhbHVlKQorICAgIDog
Q1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCit7CisgICAgaW5pdChXVEZNb3ZlKHZhbHVlKSk7Cit9
CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJp
bWl0aXZlVmFsdWUoUmVmPFQ+JiYgdmFsdWUpCisgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFz
cykKK3sKKyAgICBpbml0KFdURk1vdmUodmFsdWUpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0NTU19WQUxVRShDU1NQcmltaXRpdmVWYWx1
ZSwgaXNQcmltaXRpdmVWYWx1ZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1ByaW1pdGl2ZVZhbHVlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1
ZS5pZGwKaW5kZXggMjM0YjAwZmM1NDk5YTEyYWZmM2VkMjA1YmZiYzlhNDQwNGJlYjI4My4uMjQ4
MmM2MjA2NGQ2ODUzNTAyZGJmM2JkNDY1ZGQ5YzJlMDk2N2Q5ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUHJpbWl0aXZlVmFsdWUuaWRsCkBAIC0yMCw3ICsyMCw2IEBACiBbCiAgICAgSW1wbGVt
ZW50YXRpb25MYWNrc1ZUYWJsZSwKIF0gaW50ZXJmYWNlIENTU1ByaW1pdGl2ZVZhbHVlIDogQ1NT
VmFsdWUgewotCiAgICAgLy8gVW5pdFR5cGVzCiAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgQ1NT
X1VOS05PV04gPSAwOwogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IENTU19OVU1CRVIgPSAxOwpA
QCAtNTUsMTMgKzU0LDEzIEBACiAgICAgCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVk
IHNob3J0IHByaW1pdGl2ZVR5cGU7CiAKLSAgICBbTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHZv
aWQgc2V0RmxvYXRWYWx1ZShvcHRpb25hbCB1bnNpZ25lZCBzaG9ydCB1bml0VHlwZSA9IDAsIG9w
dGlvbmFsIHVucmVzdHJpY3RlZCBmbG9hdCBmbG9hdFZhbHVlID0gTmFOKTsKLSAgICBbTWF5VGhy
b3dMZWdhY3lFeGNlcHRpb25dIHVucmVzdHJpY3RlZCBmbG9hdCBnZXRGbG9hdFZhbHVlKG9wdGlv
bmFsIHVuc2lnbmVkIHNob3J0IHVuaXRUeXBlID0gMCk7CisgICAgW01heVRocm93RXhjZXB0aW9u
XSB2b2lkIHNldEZsb2F0VmFsdWUob3B0aW9uYWwgdW5zaWduZWQgc2hvcnQgdW5pdFR5cGUgPSAw
LCBvcHRpb25hbCB1bnJlc3RyaWN0ZWQgZmxvYXQgZmxvYXRWYWx1ZSA9IE5hTik7CisgICAgW01h
eVRocm93RXhjZXB0aW9uXSB1bnJlc3RyaWN0ZWQgZmxvYXQgZ2V0RmxvYXRWYWx1ZShvcHRpb25h
bCB1bnNpZ25lZCBzaG9ydCB1bml0VHlwZSA9IDApOworCisgICAgW01heVRocm93RXhjZXB0aW9u
XSB2b2lkIHNldFN0cmluZ1ZhbHVlKG9wdGlvbmFsIHVuc2lnbmVkIHNob3J0IHN0cmluZ1R5cGUg
PSAwLCBvcHRpb25hbCBET01TdHJpbmcgc3RyaW5nVmFsdWUpOworICAgIFtNYXlUaHJvd0V4Y2Vw
dGlvbl0gRE9NU3RyaW5nIGdldFN0cmluZ1ZhbHVlKCk7CiAKLSAgICAvLyBGSVhNRTogVXNpbmcg
InVuZGVmaW5lZCIgYXMgZGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWUgaXMgd3JvbmcuCi0gICAgW01h
eVRocm93TGVnYWN5RXhjZXB0aW9uXSB2b2lkIHNldFN0cmluZ1ZhbHVlKG9wdGlvbmFsIHVuc2ln
bmVkIHNob3J0IHN0cmluZ1R5cGUgPSAwLCBvcHRpb25hbCBET01TdHJpbmcgc3RyaW5nVmFsdWUg
PSAidW5kZWZpbmVkIik7Ci0gICAgW01heVRocm93TGVnYWN5RXhjZXB0aW9uXSBET01TdHJpbmcg
Z2V0U3RyaW5nVmFsdWUoKTsKLSAgICBbTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIENvdW50ZXIg
Z2V0Q291bnRlclZhbHVlKCk7Ci0gICAgW01heVRocm93TGVnYWN5RXhjZXB0aW9uXSBSZWN0IGdl
dFJlY3RWYWx1ZSgpOwotICAgIFtNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gUkdCQ29sb3IgZ2V0
UkdCQ29sb3JWYWx1ZSgpOworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gQ291bnRlciBnZXRDb3Vu
dGVyVmFsdWUoKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFJlY3QgZ2V0UmVjdFZhbHVlKCk7
CisgICAgW01heVRocm93RXhjZXB0aW9uXSBSR0JDb2xvciBnZXRSR0JDb2xvclZhbHVlKCk7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGlu
Z3MuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgKaW5k
ZXggMmViZjMyMmMzYjU4Njk3Y2RhYzNlZTk2Zjc5YTE1NDJjZjA1Yzc0NS4uYmZiNjVjYWQ0OGM5
NTBkNGEzMDc4ZDkwYWIyOTQ0MDk5ZWNhNjcwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCkBAIC04Miw3ICs4Miw3IEBAIHRlbXBsYXRlPD4g
aW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZSh1bnNpZ25lZCBzaG9y
dCBpKQogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIHVuc2ln
bmVkIHNob3J0KCkgY29uc3QKIHsKICAgICBpZiAocHJpbWl0aXZlVHlwZSgpID09IENTU19OVU1C
RVIpCi0gICAgICAgIHJldHVybiBnZXRWYWx1ZTx1bnNpZ25lZCBzaG9ydD4oKTsKKyAgICAgICAg
cmV0dXJuIHZhbHVlPHVuc2lnbmVkIHNob3J0PigpOwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgcmV0dXJuIDA7CkBAIC05MSw3ICs5MSw3IEBAIHRlbXBsYXRlPD4gaW5saW5lIENT
U1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciB1bnNpZ25lZCBzaG9ydCgpIGNvbnN0CiB0ZW1wbGF0
ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgaW50KCkgY29uc3QKIHsKICAg
ICBpZiAocHJpbWl0aXZlVHlwZSgpID09IENTU19OVU1CRVIpCi0gICAgICAgIHJldHVybiBnZXRW
YWx1ZTxpbnQ+KCk7CisgICAgICAgIHJldHVybiB2YWx1ZTxpbnQ+KCk7CiAKICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gMDsKQEAgLTEwMCw3ICsxMDAsNyBAQCB0ZW1wbGF0
ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgaW50KCkgY29uc3QKIHRlbXBs
YXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciB1bnNpZ25lZCgpIGNvbnN0
CiB7CiAgICAgaWYgKHByaW1pdGl2ZVR5cGUoKSA9PSBDU1NfTlVNQkVSKQotICAgICAgICByZXR1
cm4gZ2V0VmFsdWU8dW5zaWduZWQ+KCk7CisgICAgICAgIHJldHVybiB2YWx1ZTx1bnNpZ25lZD4o
KTsKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiAwOwpAQCAtMTE3LDcg
KzExNyw3IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRp
dmVWYWx1ZShmbG9hdCBpKQogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9w
ZXJhdG9yIGZsb2F0KCkgY29uc3QKIHsKICAgICBpZiAocHJpbWl0aXZlVHlwZSgpID09IENTU19O
VU1CRVIpCi0gICAgICAgIHJldHVybiBnZXRWYWx1ZTxmbG9hdD4oKTsKKyAgICAgICAgcmV0dXJu
IHZhbHVlPGZsb2F0PigpOwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJu
IDAuMGY7CkBAIC0xMzMsMTAgKzEzMywxMCBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoTGluZUNsYW1wVmFsdWUgaSkKIHRlbXBsYXRlPD4g
aW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBMaW5lQ2xhbXBWYWx1ZSgpIGNvbnN0
CiB7CiAgICAgaWYgKHByaW1pdGl2ZVR5cGUoKSA9PSBDU1NfTlVNQkVSKQotICAgICAgICByZXR1
cm4gTGluZUNsYW1wVmFsdWUoZ2V0VmFsdWU8aW50PigpLCBMaW5lQ2xhbXBMaW5lQ291bnQpOwor
ICAgICAgICByZXR1cm4gTGluZUNsYW1wVmFsdWUodmFsdWU8aW50PigpLCBMaW5lQ2xhbXBMaW5l
Q291bnQpOwogCiAgICAgaWYgKHByaW1pdGl2ZVR5cGUoKSA9PSBDU1NfUEVSQ0VOVEFHRSkKLSAg
ICAgICAgcmV0dXJuIExpbmVDbGFtcFZhbHVlKGdldFZhbHVlPGludD4oKSwgTGluZUNsYW1wUGVy
Y2VudGFnZSk7CisgICAgICAgIHJldHVybiBMaW5lQ2xhbXBWYWx1ZSh2YWx1ZTxpbnQ+KCksIExp
bmVDbGFtcFBlcmNlbnRhZ2UpOwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0
dXJuIExpbmVDbGFtcFZhbHVlKCk7CkBAIC00NjE0LDggKzQ2MTQsOCBAQCB0ZW1wbGF0ZTxpbnQg
c3VwcG9ydGVkPiBMZW5ndGggQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbnZlcnRUb0xlbmd0aChjb25z
dCBDU1NUb0xlbgogICAgIGlmICgoc3VwcG9ydGVkICYgRml4ZWRGbG9hdENvbnZlcnNpb24pICYm
IGlzTGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBMZW5ndGgoY29tcHV0ZUxlbmd0aDxkb3VibGU+
KGNvbnZlcnNpb25EYXRhKSwgRml4ZWQpOwogICAgIGlmICgoc3VwcG9ydGVkICYgUGVyY2VudENv
bnZlcnNpb24pICYmIGlzUGVyY2VudGFnZSgpKQotICAgICAgICByZXR1cm4gTGVuZ3RoKGdldERv
dWJsZVZhbHVlKCksIFBlcmNlbnQpOwotICAgIGlmICgoc3VwcG9ydGVkICYgQXV0b0NvbnZlcnNp
b24pICYmIGdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZUF1dG8pCisgICAgICAgIHJldHVybiBMZW5n
dGgoZG91YmxlVmFsdWUoKSwgUGVyY2VudCk7CisgICAgaWYgKChzdXBwb3J0ZWQgJiBBdXRvQ29u
dmVyc2lvbikgJiYgdmFsdWVJRCgpID09IENTU1ZhbHVlQXV0bykKICAgICAgICAgcmV0dXJuIExl
bmd0aChBdXRvKTsKICAgICBpZiAoKHN1cHBvcnRlZCAmIENhbGN1bGF0ZWRDb252ZXJzaW9uKSAm
JiBpc0NhbGN1bGF0ZWQoKSkKICAgICAgICAgcmV0dXJuIExlbmd0aChjc3NDYWxjVmFsdWUoKS0+
Y3JlYXRlQ2FsY3VsYXRpb25WYWx1ZShjb252ZXJzaW9uRGF0YSkpOwpAQCAtNTA5OSw3ICs1MDk5
LDcgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZh
bHVlKENTU0JveFR5cGUgY3NzQm94KQogCiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVW
YWx1ZTo6b3BlcmF0b3IgQ1NTQm94VHlwZSgpIGNvbnN0CiB7Ci0gICAgc3dpdGNoIChnZXRWYWx1
ZUlEKCkpIHsKKyAgICBzd2l0Y2ggKHZhbHVlSUQoKSkgewogICAgIGNhc2UgQ1NTVmFsdWVNYXJn
aW5Cb3g6CiAgICAgICAgIHJldHVybiBNYXJnaW5Cb3g7CiAgICAgY2FzZSBDU1NWYWx1ZUJvcmRl
ckJveDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSdWxlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NSdWxlLmNwcAppbmRleCBmMDFjZmZhZmQ5MDc5NWU2NjQ1MmYyZmEy
YjA1YzFlMzM1MzMxZDAwLi5lNTI2MGE0MmEwNWY5NTcwMGM3YWZjNDI3N2YzMWZkZDQ4ZTJjYzNm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUnVsZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1J1bGUuY3BwCkBAIC00NSw5ICs0NSw5IEBAIENPTVBJTEVfQVNTRVJU
KFN0eWxlUnVsZUJhc2U6OlJlZ2lvbiA9PSBzdGF0aWNfY2FzdDxTdHlsZVJ1bGVCYXNlOjpUeXBl
PihDU1NSdWxlCiBDT01QSUxFX0FTU0VSVChTdHlsZVJ1bGVCYXNlOjpWaWV3cG9ydCA9PSBzdGF0
aWNfY2FzdDxTdHlsZVJ1bGVCYXNlOjpUeXBlPihDU1NSdWxlOjpXRUJLSVRfVklFV1BPUlRfUlVM
RSksIGVudW1zX3Nob3VsZF9tYXRjaCk7CiAjZW5kaWYKIAotdm9pZCBDU1NSdWxlOjpzZXRDc3NU
ZXh0KGNvbnN0IFN0cmluZyYgLypjc3NUZXh0Ki8sIEV4Y2VwdGlvbkNvZGUmIC8qZWMqLykKK0V4
Y2VwdGlvbk9yPHZvaWQ+IENTU1J1bGU6OnNldENzc1RleHQoY29uc3QgU3RyaW5nJikKIHsKLSAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiB7IH07CiB9CiAKIGNvbnN0IENTU1BhcnNl
ckNvbnRleHQmIENTU1J1bGU6OnBhcnNlckNvbnRleHQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1J1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSdWxlLmgK
aW5kZXggMzk0NjNlNjM1NTI2MGU3YzNjNTNmMTE2YWE1ZTU5ZmQyYjBmNTBjMC4uODY3MjRiYWQy
OTZmYWU5NThhM2YxYmRkNWZmOTBhOTQ2YmFhYzdmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1J1bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUnVsZS5oCkBAIC0y
MiwxNiArMjIsMTUgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgorI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5o
PgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIENTU1N0eWxlU2hlZXQ7CiBjbGFzcyBTdHlsZVJ1bGVCYXNlOworCiBzdHJ1Y3Qg
Q1NTUGFyc2VyQ29udGV4dDsKLXR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKIGNsYXNzIENT
U1J1bGUgOiBwdWJsaWMgUmVmQ291bnRlZDxDU1NSdWxlPiB7CiBwdWJsaWM6CkBAIC04OSw3ICs4
OCw3IEBAIHB1YmxpYzoKIAogICAgIENTU1J1bGUqIHBhcmVudFJ1bGUoKSBjb25zdCB7IHJldHVy
biBtX3BhcmVudElzUnVsZSA/IG1fcGFyZW50UnVsZSA6IDA7IH0KIAotICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0Q3NzVGV4dChjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CisgICAg
V0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8dm9pZD4gc2V0Q3NzVGV4dChjb25zdCBTdHJpbmcm
KTsKIAogcHJvdGVjdGVkOgogICAgIENTU1J1bGUoQ1NTU3R5bGVTaGVldCogcGFyZW50KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1J1bGUuaWRsIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1J1bGUuaWRsCmluZGV4IDU4MmVhZjk1NmYzZDNiZjIwZjMzOGJjNGE2ZjA4OTljZWJl
ZjM2YzMuLjEyNjhmMTE3MmRmNTZhZThjZWVjNTBiMWQ5YjE2MWY3NzExZWNiZjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSdWxlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUnVsZS5pZGwKQEAgLTM2LDE5ICszNiwxNiBAQAogICAgIGNvbnN0IHVuc2lnbmVkIHNo
b3J0IEtFWUZSQU1FU19SVUxFID0gNzsKICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBLRVlGUkFN
RV9SVUxFID0gODsKICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVVBQT1JUU19SVUxFID0gMTI7
Ci0jaWYgZGVmaW5lZChFTkFCTEVfQ1NTX0RFVklDRV9BREFQVEFUSU9OKSAmJiBFTkFCTEVfQ1NT
X0RFVklDRV9BREFQVEFUSU9OCi0gICAgY29uc3QgdW5zaWduZWQgc2hvcnQgV0VCS0lUX1ZJRVdQ
T1JUX1JVTEUgPSAxNTsKLSNlbmRpZgotI2lmIGRlZmluZWQoRU5BQkxFX0NTU19SRUdJT05TKSAm
JiBFTkFCTEVfQ1NTX1JFR0lPTlMKLSAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBXRUJLSVRfUkVH
SU9OX1JVTEUgPSAxNjsKLSNlbmRpZgorICAgIFtDb25kaXRpb25hbD1DU1NfREVWSUNFX0FEQVBU
QVRJT05dIGNvbnN0IHVuc2lnbmVkIHNob3J0IFdFQktJVF9WSUVXUE9SVF9SVUxFID0gMTU7Cisg
ICAgW0NvbmRpdGlvbmFsPUNTU19SRUdJT05TXSBjb25zdCB1bnNpZ25lZCBzaG9ydCBXRUJLSVRf
UkVHSU9OX1JVTEUgPSAxNjsKIAotICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFdFQktJVF9LRVlG
UkFNRVNfUlVMRSA9IDc7IC8vIEF2b2lkIGJyZWFraW5nIGV4aXN0aW5nIGNvbnRlbnQuCisgICAg
Ly8gTGVnYWN5IHN5bm9ueW1zIGZvciB0aGUgYWJvdmUsIGtlcHQgdG8gYXZvaWQgYnJlYWtpbmcg
ZXhpc3RpbmcgY29udGVudC4KKyAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBXRUJLSVRfS0VZRlJB
TUVTX1JVTEUgPSA3OwogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFdFQktJVF9LRVlGUkFNRV9S
VUxFID0gODsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCB0eXBlOwog
Ci0gICAgW1NldHRlck1heVRocm93TGVnYWN5RXhjZXB0aW9uXSBhdHRyaWJ1dGUgRE9NU3RyaW5n
PyBjc3NUZXh0OworICAgIFtTZXR0ZXJNYXlUaHJvd0V4Y2VwdGlvbl0gYXR0cmlidXRlIERPTVN0
cmluZz8gY3NzVGV4dDsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBDU1NTdHlsZVNoZWV0PyBw
YXJlbnRTdHlsZVNoZWV0OwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBDU1NSdWxlPyBwYXJlbnRS
dWxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmgKaW5kZXggNDhmZmYy
YWE4YWQ3YjJmNjIzMzcyN2RmMzRkYjlhN2NiYTBiZTIzOS4uNWU0MzIxYjI4ZWM2NWQ4ZmYyODFl
OTM2Y2E1MTE4OTA0NjZmODMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0
eWxlRGVjbGFyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVEZWNsYXJh
dGlvbi5oCkBAIC0xOCwxMCArMTgsMTAgQEAKICAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgogICovCiAKLSNpZm5kZWYgQ1NTU3R5bGVEZWNsYXJhdGlvbl9oCi0jZGVmaW5lIENTU1N0eWxl
RGVjbGFyYXRpb25faAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVz
LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNsdWRlICJTY3JpcHRXcmFwcGFibGUu
aCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCkBAIC0zNSw4ICszNSw2IEBAIGNsYXNzIE11
dGFibGVTdHlsZVByb3BlcnRpZXM7CiBjbGFzcyBTdHlsZVByb3BlcnRpZXM7CiBjbGFzcyBTdHls
ZWRFbGVtZW50OwogCi10eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwotCiBjbGFzcyBDU1NTdHls
ZURlY2xhcmF0aW9uIDogcHVibGljIFNjcmlwdFdyYXBwYWJsZSB7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoQ1NTU3R5bGVEZWNsYXJhdGlvbik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgpAQCAtNDgsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHlsZWRFbGVt
ZW50KiBwYXJlbnRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIHZpcnR1
YWwgQ1NTUnVsZSogcGFyZW50UnVsZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyBj
c3NUZXh0KCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDc3NUZXh0KGNvbnN0IFN0
cmluZyYsIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CisgICAgdmlydHVhbCBFeGNlcHRpb25Pcjx2b2lk
PiBzZXRDc3NUZXh0KGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGxl
bmd0aCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyBpdGVtKHVuc2lnbmVkIGluZGV4
KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBSZWZQdHI8Q1NTVmFsdWU+IGdldFByb3BlcnR5Q1NT
VmFsdWUoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpID0gMDsKQEAgLTU2LDI0ICs1NCwyMiBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgZ2V0UHJvcGVydHlQcmlvcml0eShjb25zdCBT
dHJpbmcmIHByb3BlcnR5TmFtZSkgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIGdldFByb3BlcnR5
U2hvcnRoYW5kKGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKSA9IDA7CiAgICAgdmlydHVhbCBi
b29sIGlzUHJvcGVydHlJbXBsaWNpdChjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBzZXRQcm9wZXJ0eShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwg
Y29uc3QgU3RyaW5nJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBwcmlvcml0eSwgRXhjZXB0aW9uQ29k
ZSYpID0gMDsKLSAgICB2aXJ0dWFsIFN0cmluZyByZW1vdmVQcm9wZXJ0eShjb25zdCBTdHJpbmcm
IHByb3BlcnR5TmFtZSwgRXhjZXB0aW9uQ29kZSYpID0gMDsKKyAgICB2aXJ0dWFsIEV4Y2VwdGlv
bk9yPHZvaWQ+IHNldFByb3BlcnR5KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBjb25zdCBT
dHJpbmcmIHZhbHVlLCBjb25zdCBTdHJpbmcmIHByaW9yaXR5KSA9IDA7CisgICAgdmlydHVhbCBF
eGNlcHRpb25PcjxTdHJpbmc+IHJlbW92ZVByb3BlcnR5KGNvbnN0IFN0cmluZyYgcHJvcGVydHlO
YW1lKSA9IDA7CiAKICAgICAvLyBDU1NQcm9wZXJ0eUlEIHZlcnNpb25zIG9mIHRoZSBDU1NPTSBm
dW5jdGlvbnMgdG8gc3VwcG9ydCBiaW5kaW5ncyBhbmQgZWRpdGluZy4KICAgICAvLyBVc2UgdGhl
IG5vbi12aXJ0dWFsIG1ldGhvZHMgaW4gdGhlIGNvbmNyZXRlIHN1YmNsYXNzZXMgd2hlbiBwb3Nz
aWJsZS4KICAgICAvLyBUaGUgQ1NTVmFsdWUgcmV0dXJuZWQgYnkgdGhpcyBmdW5jdGlvbiBzaG91
bGQgbm90IGJlIGV4cG9zZWQgdG8gdGhlIHdlYiBhcyBpdCBtYXkgYmUgdXNlZCBieSBtdWx0aXBs
ZSBkb2N1bWVudHMgYXQgdGhlIHNhbWUgdGltZS4KICAgICB2aXJ0dWFsIFJlZlB0cjxDU1NWYWx1
ZT4gZ2V0UHJvcGVydHlDU1NWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5SUQpID0gMDsKICAgICB2
aXJ0dWFsIFN0cmluZyBnZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlJRCkgPSAw
OwotICAgIHZpcnR1YWwgYm9vbCBzZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5SUQsIGNv
bnN0IFN0cmluZyYgdmFsdWUsIGJvb2wgaW1wb3J0YW50LCBFeGNlcHRpb25Db2RlJikgPSAwOwor
ICAgIHZpcnR1YWwgRXhjZXB0aW9uT3I8Ym9vbD4gc2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9w
ZXJ0eUlELCBjb25zdCBTdHJpbmcmIHZhbHVlLCBib29sIGltcG9ydGFudCkgPSAwOwogCiAgICAg
dmlydHVhbCBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gY29weVByb3BlcnRpZXMoKSBjb25z
dCA9IDA7CiAKLSAgICB2aXJ0dWFsIENTU1N0eWxlU2hlZXQqIHBhcmVudFN0eWxlU2hlZXQoKSBj
b25zdCB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBDU1NTdHlsZVNoZWV0KiBwYXJlbnRTdHls
ZVNoZWV0KCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgQ1NT
U3R5bGVEZWNsYXJhdGlvbigpIHsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0j
ZW5kaWYgLy8gQ1NTU3R5bGVEZWNsYXJhdGlvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5
bGVEZWNsYXJhdGlvbi5pZGwKaW5kZXggNDc4OTNhMjU2ODJiOTRjNTcyOTcxY2Y4ZWU3MWViZGI4
MTIxNmI5ZS4uMmM4NWE0YzBkOGFhNTY5ZWMwZTRkNTJhNTgxMWM2ZWUzM2UyNDIwNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uaWRsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmlkbApAQCAtMjgsMTUgKzI4LDE1
IEBACiAgICAgSlNDdXN0b21NYXJrRnVuY3Rpb24sCiAgICAgU2tpcFZUYWJsZVZhbGlkYXRpb24s
CiBdIGludGVyZmFjZSBDU1NTdHlsZURlY2xhcmF0aW9uIHsKLSAgICBbU2V0dGVyTWF5VGhyb3dM
ZWdhY3lFeGNlcHRpb25dIGF0dHJpYnV0ZSBET01TdHJpbmcgY3NzVGV4dDsKKyAgICBbU2V0dGVy
TWF5VGhyb3dFeGNlcHRpb25dIGF0dHJpYnV0ZSBET01TdHJpbmcgY3NzVGV4dDsKIAogICAgIERP
TVN0cmluZyBnZXRQcm9wZXJ0eVZhbHVlKERPTVN0cmluZyBwcm9wZXJ0eU5hbWUpOwogICAgIFtD
dXN0b21dIENTU1ZhbHVlPyBnZXRQcm9wZXJ0eUNTU1ZhbHVlKERPTVN0cmluZyBwcm9wZXJ0eU5h
bWUpOwogCi0gICAgW01heVRocm93TGVnYWN5RXhjZXB0aW9uXSBET01TdHJpbmcgcmVtb3ZlUHJv
cGVydHkoRE9NU3RyaW5nIHByb3BlcnR5TmFtZSk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBE
T01TdHJpbmcgcmVtb3ZlUHJvcGVydHkoRE9NU3RyaW5nIHByb3BlcnR5TmFtZSk7CiAgICAgRE9N
U3RyaW5nPyBnZXRQcm9wZXJ0eVByaW9yaXR5KERPTVN0cmluZyBwcm9wZXJ0eU5hbWUpOwogCi0g
ICAgW01heVRocm93TGVnYWN5RXhjZXB0aW9uXSB2b2lkIHNldFByb3BlcnR5KERPTVN0cmluZyBw
cm9wZXJ0eU5hbWUsIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIHZhbHVlLCBb
VHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIG9wdGlvbmFsIERPTVN0cmluZyBwcmlvcml0eSA9ICIi
KTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0UHJvcGVydHkoRE9NU3RyaW5nIHBy
b3BlcnR5TmFtZSwgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBET01TdHJpbmcgdmFsdWUsIFtU
cmVhdE51bGxBcz1FbXB0eVN0cmluZ10gb3B0aW9uYWwgRE9NU3RyaW5nIHByaW9yaXR5ID0gIiIp
OwogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOwogICAgIGdl
dHRlciBET01TdHJpbmcgaXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTdHlsZVNoZWV0LmNwcAppbmRleCBhZjhlMjQ1Zjk5ZDc0NDJlNGFmMjgyMWY5NzNiODZjMjM0
YjRjY2YxLi41ZjkxYWExZmRmYWFhNjIzNjU0NzhmMTdkZGU5NjM2YjYyZDNiYzViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCkBAIC0yODQsNTMgKzI4NCw0MyBAQCBSZWZQdHI8
Q1NTUnVsZUxpc3Q+IENTU1N0eWxlU2hlZXQ6OnJ1bGVzKCkKICAgICByZXR1cm4gbm9uQ2hhcnNl
dFJ1bGVzOwogfQogCi11bnNpZ25lZCBDU1NTdHlsZVNoZWV0OjpkZXByZWNhdGVkSW5zZXJ0UnVs
ZShjb25zdCBTdHJpbmcmIHJ1bGVTdHJpbmcsIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9u
T3I8dW5zaWduZWQ+IENTU1N0eWxlU2hlZXQ6OmRlcHJlY2F0ZWRJbnNlcnRSdWxlKGNvbnN0IFN0
cmluZyYgcnVsZVN0cmluZykKIHsKICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBvd25lckRvY3Vt
ZW50KCkpCiAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNl
OjpKUywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCBBU0NJSUxpdGVyYWwoIkNhbGxpbmcgQ1NTU3R5
bGVTaGVldC5pbnNlcnRSdWxlKCkgd2l0aCBvbmUgYXJndW1lbnQgaXMgZGVwcmVjYXRlZC4gUGxl
YXNlIHBhc3MgdGhlIGluZGV4IGFyZ3VtZW50IGFzIHdlbGw6IGluc2VydFJ1bGUoeCwgMCkuIikp
OwogCi0gICAgcmV0dXJuIGluc2VydFJ1bGUocnVsZVN0cmluZywgMCwgZWMpOworICAgIHJldHVy
biBpbnNlcnRSdWxlKHJ1bGVTdHJpbmcsIDApOwogfQogCi11bnNpZ25lZCBDU1NTdHlsZVNoZWV0
OjppbnNlcnRSdWxlKGNvbnN0IFN0cmluZyYgcnVsZVN0cmluZywgdW5zaWduZWQgaW5kZXgsIEV4
Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8dW5zaWduZWQ+IENTU1N0eWxlU2hlZXQ6Omlu
c2VydFJ1bGUoY29uc3QgU3RyaW5nJiBydWxlU3RyaW5nLCB1bnNpZ25lZCBpbmRleCkKIHsKICAg
ICBBU1NFUlQobV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJzLmlzRW1wdHkoKSB8fCBtX2NoaWxkUnVs
ZUNTU09NV3JhcHBlcnMuc2l6ZSgpID09IG1fY29udGVudHMtPnJ1bGVDb3VudCgpKTsKIAotICAg
IGVjID0gMDsKLSAgICBpZiAoaW5kZXggPiBsZW5ndGgoKSkgewotICAgICAgICBlYyA9IElOREVY
X1NJWkVfRVJSOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9CisgICAgaWYgKGluZGV4ID4gbGVu
Z3RoKCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJTkRFWF9TSVpFX0VSUiB9OwogICAg
IENTU1BhcnNlciBwKG1fY29udGVudHMuZ2V0KCkucGFyc2VyQ29udGV4dCgpKTsKICAgICBSZWZQ
dHI8U3R5bGVSdWxlQmFzZT4gcnVsZSA9IHAucGFyc2VSdWxlKG1fY29udGVudHMucHRyKCksIHJ1
bGVTdHJpbmcpOwogCi0gICAgaWYgKCFydWxlKSB7Ci0gICAgICAgIGVjID0gU1lOVEFYX0VSUjsK
LSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQorICAgIGlmICghcnVsZSkKKyAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IFNZTlRBWF9FUlIgfTsKIAogICAgIFJ1bGVNdXRhdGlvblNjb3BlIG11dGF0
aW9uU2NvcGUodGhpcywgUnVsZUluc2VydGlvbiwgaXM8U3R5bGVSdWxlS2V5ZnJhbWVzPigqcnVs
ZSkgPyBkb3duY2FzdDxTdHlsZVJ1bGVLZXlmcmFtZXM+KHJ1bGUuZ2V0KCkpIDogbnVsbHB0cik7
CiAKICAgICBib29sIHN1Y2Nlc3MgPSBtX2NvbnRlbnRzLmdldCgpLndyYXBwZXJJbnNlcnRSdWxl
KHJ1bGUucmVsZWFzZU5vbk51bGwoKSwgaW5kZXgpOwotICAgIGlmICghc3VjY2VzcykgewotICAg
ICAgICBlYyA9IEhJRVJBUkNIWV9SRVFVRVNUX0VSUjsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAg
fSAgICAgICAgCisgICAgaWYgKCFzdWNjZXNzKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
SElFUkFSQ0hZX1JFUVVFU1RfRVJSIH07CiAgICAgaWYgKCFtX2NoaWxkUnVsZUNTU09NV3JhcHBl
cnMuaXNFbXB0eSgpKQogICAgICAgICBtX2NoaWxkUnVsZUNTU09NV3JhcHBlcnMuaW5zZXJ0KGlu
ZGV4LCBSZWZQdHI8Q1NTUnVsZT4oKSk7CiAKICAgICByZXR1cm4gaW5kZXg7CiB9CiAKLXZvaWQg
Q1NTU3R5bGVTaGVldDo6ZGVsZXRlUnVsZSh1bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9uQ29kZSYg
ZWMpCitFeGNlcHRpb25Pcjx2b2lkPiBDU1NTdHlsZVNoZWV0OjpkZWxldGVSdWxlKHVuc2lnbmVk
IGluZGV4KQogewogICAgIEFTU0VSVChtX2NoaWxkUnVsZUNTU09NV3JhcHBlcnMuaXNFbXB0eSgp
IHx8IG1fY2hpbGRSdWxlQ1NTT01XcmFwcGVycy5zaXplKCkgPT0gbV9jb250ZW50cy0+cnVsZUNv
dW50KCkpOwogCi0gICAgZWMgPSAwOwotICAgIGlmIChpbmRleCA+PSBsZW5ndGgoKSkgewotICAg
ICAgICBlYyA9IElOREVYX1NJWkVfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlm
IChpbmRleCA+PSBsZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElOREVYX1NJ
WkVfRVJSIH07CiAgICAgUnVsZU11dGF0aW9uU2NvcGUgbXV0YXRpb25TY29wZSh0aGlzKTsKIAog
ICAgIG1fY29udGVudHMtPndyYXBwZXJEZWxldGVSdWxlKGluZGV4KTsKQEAgLTM0MCw5ICszMzAs
MTEgQEAgdm9pZCBDU1NTdHlsZVNoZWV0OjpkZWxldGVSdWxlKHVuc2lnbmVkIGluZGV4LCBFeGNl
cHRpb25Db2RlJiBlYykKICAgICAgICAgICAgIG1fY2hpbGRSdWxlQ1NTT01XcmFwcGVyc1tpbmRl
eF0tPnNldFBhcmVudFN0eWxlU2hlZXQobnVsbHB0cik7CiAgICAgICAgIG1fY2hpbGRSdWxlQ1NT
T01XcmFwcGVycy5yZW1vdmUoaW5kZXgpOwogICAgIH0KKworICAgIHJldHVybiB7IH07CiB9CiAK
LWludCBDU1NTdHlsZVNoZWV0OjphZGRSdWxlKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IsIGNvbnN0
IFN0cmluZyYgc3R5bGUsIE9wdGlvbmFsPHVuc2lnbmVkPiBpbmRleCwgRXhjZXB0aW9uQ29kZSYg
ZWMpCitFeGNlcHRpb25PcjxpbnQ+IENTU1N0eWxlU2hlZXQ6OmFkZFJ1bGUoY29uc3QgU3RyaW5n
JiBzZWxlY3RvciwgY29uc3QgU3RyaW5nJiBzdHlsZSwgT3B0aW9uYWw8dW5zaWduZWQ+IGluZGV4
KQogewogICAgIFN0cmluZ0J1aWxkZXIgdGV4dDsKICAgICB0ZXh0LmFwcGVuZChzZWxlY3Rvcik7
CkBAIC0zNTEsNyArMzQzLDkgQEAgaW50IENTU1N0eWxlU2hlZXQ6OmFkZFJ1bGUoY29uc3QgU3Ry
aW5nJiBzZWxlY3RvciwgY29uc3QgU3RyaW5nJiBzdHlsZSwgT3B0aW9uYWwKICAgICBpZiAoIXN0
eWxlLmlzRW1wdHkoKSkKICAgICAgICAgdGV4dC5hcHBlbmQoJyAnKTsKICAgICB0ZXh0LmFwcGVu
ZCgnfScpOwotICAgIGluc2VydFJ1bGUodGV4dC50b1N0cmluZygpLCBpbmRleC52YWx1ZU9yKGxl
bmd0aCgpKSwgZWMpOworICAgIGF1dG8gaW5zZXJ0UnVsZVJlc3VsdCA9IGluc2VydFJ1bGUodGV4
dC50b1N0cmluZygpLCBpbmRleC52YWx1ZU9yKGxlbmd0aCgpKSk7CisgICAgaWYgKGluc2VydFJ1
bGVSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBpbnNlcnRSdWxlUmVzdWx0
LnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICAKICAgICAvLyBBcyBwZXIgTWljcm9zb2Z0IGRvY3Vt
ZW50YXRpb24sIGFsd2F5cyByZXR1cm4gLTEuCiAgICAgcmV0dXJuIC0xOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTdHlsZVNoZWV0LmgKaW5kZXggYzFhZTFiZTc0YTMxZjg1OTVjNjM0YjJmYzBhZWJmNzU3YzM2
ZTk1MC4uNzQ0YTljMjQzY2Q2NDI0MjM5YmZhNDY3MDFlOWY5NmMxM2I1YWUwNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTU3R5bGVTaGVldC5oCkBAIC0yMSw2ICsyMSw3IEBACiAjcHJhZ21hIG9uY2UKIAog
I2luY2x1ZGUgIkNTU1BhcnNlck1vZGUuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2lu
Y2x1ZGUgIlN0eWxlU2hlZXQuaCIKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KQEAgLTQ5LDggKzUwLDYgQEAgbmFtZXNwYWNlIFN0eWxlIHsKIGNsYXNzIFNjb3Bl
OwogfQogCi10eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwotCiBjbGFzcyBDU1NTdHlsZVNoZWV0
IGZpbmFsIDogcHVibGljIFN0eWxlU2hlZXQgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8Q1NT
U3R5bGVTaGVldD4gY3JlYXRlKFJlZjxTdHlsZVNoZWV0Q29udGVudHM+JiYsIENTU0ltcG9ydFJ1
bGUqIG93bmVyUnVsZSA9IDApOwpAQCAtNjgsMTQgKzY3LDEzIEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldERpc2FibGVkKGJvb2wpIGZpbmFsOwogICAgIAogICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0
cjxDU1NSdWxlTGlzdD4gY3NzUnVsZXMoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB1bnNpZ25lZCBp
bnNlcnRSdWxlKGNvbnN0IFN0cmluZyYgcnVsZSwgdW5zaWduZWQgaW5kZXgsIEV4Y2VwdGlvbkNv
ZGUmKTsKLSAgICB1bnNpZ25lZCBkZXByZWNhdGVkSW5zZXJ0UnVsZShjb25zdCBTdHJpbmcmIHJ1
bGUsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZVJ1bGUo
dW5zaWduZWQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBFeGNl
cHRpb25Pcjx1bnNpZ25lZD4gaW5zZXJ0UnVsZShjb25zdCBTdHJpbmcmIHJ1bGUsIHVuc2lnbmVk
IGluZGV4KTsKKyAgICBFeGNlcHRpb25Pcjx1bnNpZ25lZD4gZGVwcmVjYXRlZEluc2VydFJ1bGUo
Y29uc3QgU3RyaW5nJiBydWxlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25Pcjx2b2lk
PiBkZWxldGVSdWxlKHVuc2lnbmVkIGluZGV4KTsKICAgICAKLSAgICAvLyBJRSBFeHRlbnNpb25z
CiAgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPENTU1J1bGVMaXN0PiBydWxlcygpOwotICAgIFdF
QkNPUkVfRVhQT1JUIGludCBhZGRSdWxlKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IsIGNvbnN0IFN0
cmluZyYgc3R5bGUsIE9wdGlvbmFsPHVuc2lnbmVkPiBpbmRleCwgRXhjZXB0aW9uQ29kZSYpOwot
ICAgIHZvaWQgcmVtb3ZlUnVsZSh1bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMpIHsg
ZGVsZXRlUnVsZShpbmRleCwgZWMpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8
aW50PiBhZGRSdWxlKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IsIGNvbnN0IFN0cmluZyYgc3R5bGUs
IE9wdGlvbmFsPHVuc2lnbmVkPiBpbmRleCk7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gcmVtb3Zl
UnVsZSh1bnNpZ25lZCBpbmRleCkgeyByZXR1cm4gZGVsZXRlUnVsZShpbmRleCk7IH0KICAgICAK
ICAgICAvLyBGb3IgQ1NTUnVsZUxpc3QuCiAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5pZGwKaW5kZXggOTUzOGY4NTY4NDMxOWYyNjNkODAz
Njg4YWY0MzU5ZjY1ZjllZjc2Ni4uMGNlYjQxNWI3ZTc1MzY4ODQxYmI5MzA4NjNhNTc2ODYyOTc0
NjY2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaWRsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmlkbApAQCAtMjIsMTQgKzIyLDE0
IEBAIGludGVyZmFjZSBDU1NTdHlsZVNoZWV0IDogU3R5bGVTaGVldCB7CiAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIENTU1J1bGUgb3duZXJSdWxlOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBDU1NS
dWxlTGlzdCBjc3NSdWxlczsKIAotICAgIFtNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gdW5zaWdu
ZWQgbG9uZyBpbnNlcnRSdWxlKERPTVN0cmluZyBydWxlLCB1bnNpZ25lZCBsb25nIGluZGV4KTsK
LSAgICBbTWF5VGhyb3dMZWdhY3lFeGNlcHRpb24sIEltcGxlbWVudGVkQXM9ZGVwcmVjYXRlZElu
c2VydFJ1bGVdIHVuc2lnbmVkIGxvbmcgaW5zZXJ0UnVsZShET01TdHJpbmcgcnVsZSk7IC8vIERl
cHJlY2F0ZWQuCisgICAgW01heVRocm93RXhjZXB0aW9uXSB1bnNpZ25lZCBsb25nIGluc2VydFJ1
bGUoRE9NU3RyaW5nIHJ1bGUsIHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgIFtNYXlUaHJvd0V4
Y2VwdGlvbiwgSW1wbGVtZW50ZWRBcz1kZXByZWNhdGVkSW5zZXJ0UnVsZV0gdW5zaWduZWQgbG9u
ZyBpbnNlcnRSdWxlKERPTVN0cmluZyBydWxlKTsgLy8gRGVwcmVjYXRlZC4KIAotICAgIFtNYXlU
aHJvd0xlZ2FjeUV4Y2VwdGlvbl0gdm9pZCBkZWxldGVSdWxlKHVuc2lnbmVkIGxvbmcgaW5kZXgp
OworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBkZWxldGVSdWxlKHVuc2lnbmVkIGxvbmcg
aW5kZXgpOwogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIENTU1J1bGVMaXN0IHJ1bGVzOwogCi0g
ICAgLy8gRklYTUU6IFRob3NlIG9wZXJhdGlvbnMgYXJlIFdlYktpdC1zcGVjaWZpYy4KLSAgICBb
TWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIGxvbmcgYWRkUnVsZShvcHRpb25hbCBET01TdHJpbmcg
c2VsZWN0b3IgPSAidW5kZWZpbmVkIiwgb3B0aW9uYWwgRE9NU3RyaW5nIHN0eWxlID0gInVuZGVm
aW5lZCIsIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgaW5kZXgpOwotICAgIFtNYXlUaHJvd0xlZ2Fj
eUV4Y2VwdGlvbl0gdm9pZCByZW1vdmVSdWxlKG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgaW5kZXgg
PSAwKTsKKyAgICAvLyBUaGUgZm9sbG93aW5nIHR3byBvcGVyYXRpb25zIGFyZSBXZWJLaXQtc3Bl
Y2lmaWMuCisgICAgW01heVRocm93RXhjZXB0aW9uXSBsb25nIGFkZFJ1bGUob3B0aW9uYWwgRE9N
U3RyaW5nIHNlbGVjdG9yID0gInVuZGVmaW5lZCIsIG9wdGlvbmFsIERPTVN0cmluZyBzdHlsZSA9
ICJ1bmRlZmluZWQiLCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICBbTWF5VGhy
b3dFeGNlcHRpb25dIHZvaWQgcmVtb3ZlUnVsZShvcHRpb25hbCB1bnNpZ25lZCBsb25nIGluZGV4
ID0gMCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N1cHBvcnRzUnVs
ZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3VwcG9ydHNSdWxlLmlkbAppbmRleCBhZDM2
NGY2MzRhMDJlNjliNmY5MWYxZDVmNTkyNDc4ZGYwMTE5MmM4Li5mOTY1MDBiMTkyYjEyNzQ5Y2M1
NDgzZjlmMTgxMjQ4ZmI5NGZiYzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U3VwcG9ydHNSdWxlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3VwcG9ydHNSdWxl
LmlkbApAQCAtMzAsNyArMzAsNiBAQCBpbnRlcmZhY2UgQ1NTU3VwcG9ydHNSdWxlIDogQ1NTUnVs
ZSB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIENTU1J1bGVMaXN0IGNzc1J1bGVzOwogICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgY29uZGl0aW9uVGV4dDsKIAotICAgIFtNYXlUaHJv
d0xlZ2FjeUV4Y2VwdGlvbl0gdW5zaWduZWQgbG9uZyBpbnNlcnRSdWxlKERPTVN0cmluZyBydWxl
LCB1bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICBbTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHZv
aWQgZGVsZXRlUnVsZSh1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICBbTWF5VGhyb3dFeGNlcHRp
b25dIHVuc2lnbmVkIGxvbmcgaW5zZXJ0UnVsZShET01TdHJpbmcgcnVsZSwgdW5zaWduZWQgbG9u
ZyBpbmRleCk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIGRlbGV0ZVJ1bGUodW5zaWdu
ZWQgbG9uZyBpbmRleCk7CiB9OwotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
VG9TdHlsZU1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVG9TdHlsZU1hcC5jcHAKaW5k
ZXggOWJkMmZkNmJlMmVjMjNiMzdkODYwMTQ3YmU3NDQ0MDQyODEwN2FjNC4uOGNmNWM3ZThjZTc1
YTYwZTVmZWUwY2U0NWE1MmJiNGNiNTEwM2MxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1RvU3R5bGVNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUb1N0eWxl
TWFwLmNwcApAQCAtODEsNyArODEsNyBAQCB2b2lkIENTU1RvU3R5bGVNYXA6Om1hcEZpbGxBdHRh
Y2htZW50KENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgRmlsbExheWVyJiBsYXllcgogICAgIGlm
ICghaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
c3dpdGNoIChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLmdldFZhbHVlSUQoKSkg
eworICAgIHN3aXRjaCAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS52YWx1ZUlE
KCkpIHsKICAgICBjYXNlIENTU1ZhbHVlRml4ZWQ6CiAgICAgICAgIGxheWVyLnNldEF0dGFjaG1l
bnQoRml4ZWRCYWNrZ3JvdW5kQXR0YWNobWVudCk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTg2LDcg
KzE4Niw3IEBAIHZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFwRmlsbFJlcGVhdFkoQ1NTUHJvcGVydHlJ
RCBwcm9wZXJ0eUlELCBGaWxsTGF5ZXImIGxheWVyLCBjCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBj
b252ZXJ0VG9MZW5ndGhTaXplKGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJiBwcmltaXRpdmVWYWx1
ZSwgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSBjb252ZXJzaW9uRGF0YSwgTGVuZ3RoU2l6ZSYg
c2l6ZSkKIHsKLSAgICBpZiAoYXV0byogcGFpciA9IHByaW1pdGl2ZVZhbHVlLmdldFBhaXJWYWx1
ZSgpKSB7CisgICAgaWYgKGF1dG8qIHBhaXIgPSBwcmltaXRpdmVWYWx1ZS5wYWlyVmFsdWUoKSkg
ewogICAgICAgICBzaXplLnNldFdpZHRoKHBhaXItPmZpcnN0KCktPmNvbnZlcnRUb0xlbmd0aDxB
bnlDb252ZXJzaW9uPihjb252ZXJzaW9uRGF0YSkpOwogICAgICAgICBzaXplLnNldEhlaWdodChw
YWlyLT5zZWNvbmQoKS0+Y29udmVydFRvTGVuZ3RoPEFueUNvbnZlcnNpb24+KGNvbnZlcnNpb25E
YXRhKSk7CiAgICAgfSBlbHNlCkBAIC0yMDcsNyArMjA3LDcgQEAgdm9pZCBDU1NUb1N0eWxlTWFw
OjptYXBGaWxsU2l6ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIEZpbGxMYXllciYgbGF5ZXIs
IGNvbnMKIAogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWU+KHZhbHVlKTsKICAgICBGaWxsU2l6ZSBmaWxsU2l6ZTsKLSAgICBzd2l0Y2ggKHByaW1p
dGl2ZVZhbHVlLmdldFZhbHVlSUQoKSkgeworICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUudmFs
dWVJRCgpKSB7CiAgICAgY2FzZSBDU1NWYWx1ZUNvbnRhaW46CiAgICAgICAgIGZpbGxTaXplLnR5
cGUgPSBDb250YWluOwogICAgICAgICBicmVhazsKQEAgLTIzNCw3ICsyMzQsNyBAQCB2b2lkIENT
U1RvU3R5bGVNYXA6Om1hcEZpbGxYUG9zaXRpb24oQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBG
aWxsTGF5ZXImIGxheWVyLAogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvKiBwcmltaXRpdmVW
YWx1ZSA9ICZkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwotICAgIFBhaXIqIHBh
aXIgPSBwcmltaXRpdmVWYWx1ZS0+Z2V0UGFpclZhbHVlKCk7CisgICAgUGFpciogcGFpciA9IHBy
aW1pdGl2ZVZhbHVlLT5wYWlyVmFsdWUoKTsKICAgICBpZiAocGFpcikgewogICAgICAgICBBU1NF
UlRfVU5VU0VEKHByb3BlcnR5SUQsIHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
UG9zaXRpb25YIHx8IHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25Y
KTsKICAgICAgICAgcHJpbWl0aXZlVmFsdWUgPSBwYWlyLT5zZWNvbmQoKTsKQEAgLTI0NCw3ICsy
NDQsNyBAQCB2b2lkIENTU1RvU3R5bGVNYXA6Om1hcEZpbGxYUG9zaXRpb24oQ1NTUHJvcGVydHlJ
RCBwcm9wZXJ0eUlELCBGaWxsTGF5ZXImIGxheWVyLAogICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+
aXNMZW5ndGgoKSkKICAgICAgICAgbGVuZ3RoID0gcHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5n
dGg8TGVuZ3RoPihtX3Jlc29sdmVyLT5zdGF0ZSgpLmNzc1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEo
KSk7CiAgICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPmlzUGVyY2VudGFnZSgpKQotICAgICAg
ICBsZW5ndGggPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmdldERvdWJsZVZhbHVlKCksIFBlcmNl
bnQpOworICAgICAgICBsZW5ndGggPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmRvdWJsZVZhbHVl
KCksIFBlcmNlbnQpOwogICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc0NhbGN1bGF0ZWRQ
ZXJjZW50YWdlV2l0aExlbmd0aCgpKQogICAgICAgICBsZW5ndGggPSBMZW5ndGgocHJpbWl0aXZl
VmFsdWUtPmNzc0NhbGNWYWx1ZSgpLT5jcmVhdGVDYWxjdWxhdGlvblZhbHVlKG1fcmVzb2x2ZXIt
PnN0YXRlKCkuY3NzVG9MZW5ndGhDb252ZXJzaW9uRGF0YSgpKSk7CiAgICAgZWxzZQpAQCAtMjY2
LDcgKzI2Niw3IEBAIHZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFwRmlsbFlQb3NpdGlvbihDU1NQcm9w
ZXJ0eUlEIHByb3BlcnR5SUQsIEZpbGxMYXllciYgbGF5ZXIsCiAgICAgICAgIHJldHVybjsKIAog
ICAgIGF1dG8qIHByaW1pdGl2ZVZhbHVlID0gJmRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2
YWx1ZSk7Ci0gICAgUGFpciogcGFpciA9IHByaW1pdGl2ZVZhbHVlLT5nZXRQYWlyVmFsdWUoKTsK
KyAgICBQYWlyKiBwYWlyID0gcHJpbWl0aXZlVmFsdWUtPnBhaXJWYWx1ZSgpOwogICAgIGlmIChw
YWlyKSB7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQocHJvcGVydHlJRCwgcHJvcGVydHlJRCA9PSBD
U1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblkgfHwgcHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0
eVdlYmtpdE1hc2tQb3NpdGlvblkpOwogICAgICAgICBwcmltaXRpdmVWYWx1ZSA9IHBhaXItPnNl
Y29uZCgpOwpAQCAtMjc2LDcgKzI3Niw3IEBAIHZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFwRmlsbFlQ
b3NpdGlvbihDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIEZpbGxMYXllciYgbGF5ZXIsCiAgICAg
aWYgKHByaW1pdGl2ZVZhbHVlLT5pc0xlbmd0aCgpKQogICAgICAgICBsZW5ndGggPSBwcmltaXRp
dmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aDxMZW5ndGg+KG1fcmVzb2x2ZXItPnN0YXRlKCkuY3NzVG9M
ZW5ndGhDb252ZXJzaW9uRGF0YSgpKTsKICAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS0+aXNQ
ZXJjZW50YWdlKCkpCi0gICAgICAgIGxlbmd0aCA9IExlbmd0aChwcmltaXRpdmVWYWx1ZS0+Z2V0
RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7CisgICAgICAgIGxlbmd0aCA9IExlbmd0aChwcmltaXRp
dmVWYWx1ZS0+ZG91YmxlVmFsdWUoKSwgUGVyY2VudCk7CiAgICAgZWxzZSBpZiAocHJpbWl0aXZl
VmFsdWUtPmlzQ2FsY3VsYXRlZFBlcmNlbnRhZ2VXaXRoTGVuZ3RoKCkpCiAgICAgICAgIGxlbmd0
aCA9IExlbmd0aChwcmltaXRpdmVWYWx1ZS0+Y3NzQ2FsY1ZhbHVlKCktPmNyZWF0ZUNhbGN1bGF0
aW9uVmFsdWUobV9yZXNvbHZlci0+c3RhdGUoKS5jc3NUb0xlbmd0aENvbnZlcnNpb25EYXRhKCkp
KTsKICAgICBlbHNlCkBAIC0yOTgsNyArMjk4LDcgQEAgdm9pZCBDU1NUb1N0eWxlTWFwOjptYXBG
aWxsTWFza1NvdXJjZVR5cGUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBGaWxsTGF5ZXImIGwK
ICAgICBpZiAoIWlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIHN3aXRjaCAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS5nZXRWYWx1
ZUlEKCkpIHsKKyAgICBzd2l0Y2ggKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSku
dmFsdWVJRCgpKSB7CiAgICAgY2FzZSBDU1NWYWx1ZUFscGhhOgogICAgICAgICB0eXBlID0gRU1h
c2tTb3VyY2VUeXBlOjpNYXNrQWxwaGE7CiAgICAgICAgIGJyZWFrOwpAQCAtMzM3LDcgKzMzNyw3
IEBAIHZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9uRGlyZWN0aW9uKEFuaW1hdGlvbiYg
bGF5ZXIsIGNvbnN0IENTU1ZhbHVlJiB2YWx1CiAgICAgaWYgKCFpczxDU1NQcmltaXRpdmVWYWx1
ZT4odmFsdWUpKQogICAgICAgICByZXR1cm47CiAKLSAgICBzd2l0Y2ggKGRvd25jYXN0PENTU1By
aW1pdGl2ZVZhbHVlPih2YWx1ZSkuZ2V0VmFsdWVJRCgpKSB7CisgICAgc3dpdGNoIChkb3duY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLnZhbHVlSUQoKSkgewogICAgIGNhc2UgQ1NTVmFs
dWVOb3JtYWw6CiAgICAgICAgIGxheWVyLnNldERpcmVjdGlvbihBbmltYXRpb246OkFuaW1hdGlv
bkRpcmVjdGlvbk5vcm1hbCk7CiAgICAgICAgIGJyZWFrOwpAQCAtMzc4LDcgKzM3OCw3IEBAIHZv
aWQgQ1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9uRmlsbE1vZGUoQW5pbWF0aW9uJiBsYXllciwg
Y29uc3QgQ1NTVmFsdWUmIHZhbHVlCiAgICAgaWYgKCFpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFs
dWUpKQogICAgICAgICByZXR1cm47CiAKLSAgICBzd2l0Y2ggKGRvd25jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlPih2YWx1ZSkuZ2V0VmFsdWVJRCgpKSB7CisgICAgc3dpdGNoIChkb3duY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZT4odmFsdWUpLnZhbHVlSUQoKSkgewogICAgIGNhc2UgQ1NTVmFsdWVOb25l
OgogICAgICAgICBsYXllci5zZXRGaWxsTW9kZShBbmltYXRpb25GaWxsTW9kZU5vbmUpOwogICAg
ICAgICBicmVhazsKQEAgLTQwNywxMCArNDA3LDEwIEBAIHZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFw
QW5pbWF0aW9uSXRlcmF0aW9uQ291bnQoQW5pbWF0aW9uJiBhbmltYXRpb24sIGNvbnN0IENTU1Zh
CiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8
Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKLSAgICBpZiAocHJpbWl0aXZlVmFsdWUuZ2V0VmFs
dWVJRCgpID09IENTU1ZhbHVlSW5maW5pdGUpCisgICAgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVl
SUQoKSA9PSBDU1NWYWx1ZUluZmluaXRlKQogICAgICAgICBhbmltYXRpb24uc2V0SXRlcmF0aW9u
Q291bnQoQW5pbWF0aW9uOjpJdGVyYXRpb25Db3VudEluZmluaXRlKTsKICAgICBlbHNlCi0gICAg
ICAgIGFuaW1hdGlvbi5zZXRJdGVyYXRpb25Db3VudChwcmltaXRpdmVWYWx1ZS5nZXRGbG9hdFZh
bHVlKCkpOworICAgICAgICBhbmltYXRpb24uc2V0SXRlcmF0aW9uQ291bnQocHJpbWl0aXZlVmFs
dWUuZmxvYXRWYWx1ZSgpKTsKIH0KIAogdm9pZCBDU1NUb1N0eWxlTWFwOjptYXBBbmltYXRpb25O
YW1lKEFuaW1hdGlvbiYgbGF5ZXIsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKQEAgLTQyNCwxMCAr
NDI0LDEwIEBAIHZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9uTmFtZShBbmltYXRpb24m
IGxheWVyLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1
dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsK
LSAgICBpZiAocHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZSkKKyAg
ICBpZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZSkKICAgICAgICAg
bGF5ZXIuc2V0SXNOb25lQW5pbWF0aW9uKHRydWUpOwogICAgIGVsc2UKLSAgICAgICAgbGF5ZXIu
c2V0TmFtZShwcmltaXRpdmVWYWx1ZS5nZXRTdHJpbmdWYWx1ZSgpKTsKKyAgICAgICAgbGF5ZXIu
c2V0TmFtZShwcmltaXRpdmVWYWx1ZS5zdHJpbmdWYWx1ZSgpKTsKIH0KIAogdm9pZCBDU1NUb1N0
eWxlTWFwOjptYXBBbmltYXRpb25QbGF5U3RhdGUoQW5pbWF0aW9uJiBsYXllciwgY29uc3QgQ1NT
VmFsdWUmIHZhbHVlKQpAQCAtNDQwLDcgKzQ0MCw3IEBAIHZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFw
QW5pbWF0aW9uUGxheVN0YXRlKEFuaW1hdGlvbiYgbGF5ZXIsIGNvbnN0IENTU1ZhbHVlJiB2YWx1
CiAgICAgaWYgKCFpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBFQW5pbVBsYXlTdGF0ZSBwbGF5U3RhdGUgPSAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWU+KHZhbHVlKS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVQYXVzZWQpID8gQW5pbVBsYXlT
dGF0ZVBhdXNlZCA6IEFuaW1QbGF5U3RhdGVQbGF5aW5nOworICAgIEVBbmltUGxheVN0YXRlIHBs
YXlTdGF0ZSA9IChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLnZhbHVlSUQoKSA9
PSBDU1NWYWx1ZVBhdXNlZCkgPyBBbmltUGxheVN0YXRlUGF1c2VkIDogQW5pbVBsYXlTdGF0ZVBs
YXlpbmc7CiAgICAgbGF5ZXIuc2V0UGxheVN0YXRlKHBsYXlTdGF0ZSk7CiB9CiAKQEAgLTQ1Niwx
NSArNDU2LDE1IEBAIHZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9uUHJvcGVydHkoQW5p
bWF0aW9uJiBhbmltYXRpb24sIGNvbnN0IENTU1ZhbHVlJiB2CiAgICAgICAgIHJldHVybjsKIAog
ICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZh
bHVlKTsKLSAgICBpZiAocHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlQWxs
KSB7CisgICAgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUFsbCkgewog
ICAgICAgICBhbmltYXRpb24uc2V0QW5pbWF0aW9uTW9kZShBbmltYXRpb246OkFuaW1hdGVBbGwp
OwogICAgICAgICBhbmltYXRpb24uc2V0UHJvcGVydHkoQ1NTUHJvcGVydHlJbnZhbGlkKTsKLSAg
ICB9IGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUp
IHsKKyAgICB9IGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5v
bmUpIHsKICAgICAgICAgYW5pbWF0aW9uLnNldEFuaW1hdGlvbk1vZGUoQW5pbWF0aW9uOjpBbmlt
YXRlTm9uZSk7CiAgICAgICAgIGFuaW1hdGlvbi5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUludmFs
aWQpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGFuaW1hdGlvbi5zZXRBbmltYXRpb25Nb2RlKEFu
aW1hdGlvbjo6QW5pbWF0ZVNpbmdsZVByb3BlcnR5KTsKLSAgICAgICAgYW5pbWF0aW9uLnNldFBy
b3BlcnR5KHByaW1pdGl2ZVZhbHVlLmdldFByb3BlcnR5SUQoKSk7CisgICAgICAgIGFuaW1hdGlv
bi5zZXRQcm9wZXJ0eShwcmltaXRpdmVWYWx1ZS5wcm9wZXJ0eUlEKCkpOwogICAgIH0KIH0KIApA
QCAtNDc2LDcgKzQ3Niw3IEBAIHZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9uVGltaW5n
RnVuY3Rpb24oQW5pbWF0aW9uJiBhbmltYXRpb24sIGNvbnN0IENTU1ZhCiAgICAgfQogCiAgICAg
aWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpIHsKLSAgICAgICAgc3dpdGNoIChkb3du
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLmdldFZhbHVlSUQoKSkgeworICAgICAgICBz
d2l0Y2ggKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkudmFsdWVJRCgpKSB7CiAg
ICAgICAgIGNhc2UgQ1NTVmFsdWVMaW5lYXI6CiAgICAgICAgICAgICBhbmltYXRpb24uc2V0VGlt
aW5nRnVuY3Rpb24oTGluZWFyVGltaW5nRnVuY3Rpb246OmNyZWF0ZSgpKTsKICAgICAgICAgICAg
IGJyZWFrOwpAQCAtNTI2LDcgKzUyNiw3IEBAIHZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0
aW9uVHJpZ2dlcihBbmltYXRpb24mIGFuaW1hdGlvbiwgY29uc3QgQ1NTVmFsdWUmIHZhCiAKICAg
ICBpZiAodmFsdWUuaXNQcmltaXRpdmVWYWx1ZSgpKSB7CiAgICAgICAgIGF1dG8mIHByaW1pdGl2
ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKLSAgICAgICAgaWYg
KHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZUF1dG8pCisgICAgICAgIGlm
IChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVBdXRvKQogICAgICAgICAgICAg
YW5pbWF0aW9uLnNldFRyaWdnZXIoQXV0b0FuaW1hdGlvblRyaWdnZXI6OmNyZWF0ZSgpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTYwOCwyMSArNjA4LDIxIEBAIHZvaWQgQ1NTVG9TdHls
ZU1hcDo6bWFwTmluZVBpZWNlSW1hZ2VTbGljZShDU1NWYWx1ZSYgdmFsdWUsIE5pbmVQaWVjZUlt
YWdlJiBpbWFnCiAgICAgTGVuZ3RoQm94IGJveDsKICAgICBRdWFkKiBzbGljZXMgPSBib3JkZXJJ
bWFnZVNsaWNlLnNsaWNlcygpOwogICAgIGlmIChzbGljZXMtPnRvcCgpLT5pc1BlcmNlbnRhZ2Uo
KSkKLSAgICAgICAgYm94LnRvcCgpID0gTGVuZ3RoKHNsaWNlcy0+dG9wKCktPmdldERvdWJsZVZh
bHVlKCksIFBlcmNlbnQpOworICAgICAgICBib3gudG9wKCkgPSBMZW5ndGgoc2xpY2VzLT50b3Ao
KS0+ZG91YmxlVmFsdWUoKSwgUGVyY2VudCk7CiAgICAgZWxzZQotICAgICAgICBib3gudG9wKCkg
PSBMZW5ndGgoc2xpY2VzLT50b3AoKS0+Z2V0SW50VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19OVU1CRVIpLCBGaXhlZCk7CisgICAgICAgIGJveC50b3AoKSA9IExlbmd0aChzbGljZXMtPnRv
cCgpLT5pbnRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUiksIEZpeGVkKTsKICAg
ICBpZiAoc2xpY2VzLT5ib3R0b20oKS0+aXNQZXJjZW50YWdlKCkpCi0gICAgICAgIGJveC5ib3R0
b20oKSA9IExlbmd0aChzbGljZXMtPmJvdHRvbSgpLT5nZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50
KTsKKyAgICAgICAgYm94LmJvdHRvbSgpID0gTGVuZ3RoKHNsaWNlcy0+Ym90dG9tKCktPmRvdWJs
ZVZhbHVlKCksIFBlcmNlbnQpOwogICAgIGVsc2UKLSAgICAgICAgYm94LmJvdHRvbSgpID0gTGVu
Z3RoKChpbnQpc2xpY2VzLT5ib3R0b20oKS0+Z2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX05VTUJFUiksIEZpeGVkKTsKKyAgICAgICAgYm94LmJvdHRvbSgpID0gTGVuZ3RoKChp
bnQpc2xpY2VzLT5ib3R0b20oKS0+ZmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05V
TUJFUiksIEZpeGVkKTsKICAgICBpZiAoc2xpY2VzLT5sZWZ0KCktPmlzUGVyY2VudGFnZSgpKQot
ICAgICAgICBib3gubGVmdCgpID0gTGVuZ3RoKHNsaWNlcy0+bGVmdCgpLT5nZXREb3VibGVWYWx1
ZSgpLCBQZXJjZW50KTsKKyAgICAgICAgYm94LmxlZnQoKSA9IExlbmd0aChzbGljZXMtPmxlZnQo
KS0+ZG91YmxlVmFsdWUoKSwgUGVyY2VudCk7CiAgICAgZWxzZQotICAgICAgICBib3gubGVmdCgp
ID0gTGVuZ3RoKHNsaWNlcy0+bGVmdCgpLT5nZXRJbnRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX05VTUJFUiksIEZpeGVkKTsKKyAgICAgICAgYm94LmxlZnQoKSA9IExlbmd0aChzbGljZXMt
PmxlZnQoKS0+aW50VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpLCBGaXhlZCk7
CiAgICAgaWYgKHNsaWNlcy0+cmlnaHQoKS0+aXNQZXJjZW50YWdlKCkpCi0gICAgICAgIGJveC5y
aWdodCgpID0gTGVuZ3RoKHNsaWNlcy0+cmlnaHQoKS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2Vu
dCk7CisgICAgICAgIGJveC5yaWdodCgpID0gTGVuZ3RoKHNsaWNlcy0+cmlnaHQoKS0+ZG91Ymxl
VmFsdWUoKSwgUGVyY2VudCk7CiAgICAgZWxzZQotICAgICAgICBib3gucmlnaHQoKSA9IExlbmd0
aChzbGljZXMtPnJpZ2h0KCktPmdldEludFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVN
QkVSKSwgRml4ZWQpOworICAgICAgICBib3gucmlnaHQoKSA9IExlbmd0aChzbGljZXMtPnJpZ2h0
KCktPmludFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSwgRml4ZWQpOwogICAg
IGltYWdlLnNldEltYWdlU2xpY2VzKGJveCk7CiAKICAgICAvLyBTZXQgb3VyIGZpbGwgbW9kZS4K
QEAgLTY0MiwzMyArNjQyLDMzIEBAIExlbmd0aEJveCBDU1NUb1N0eWxlTWFwOjptYXBOaW5lUGll
Y2VJbWFnZVF1YWQoQ1NTVmFsdWUmIHZhbHVlKQogCiAgICAgLy8gU2V0IHVwIGEgbGVuZ3RoIGJv
eCB0byByZXByZXNlbnQgb3VyIGltYWdlIHNsaWNlcy4KICAgICBMZW5ndGhCb3ggYm94OyAvLyBE
ZWZhdWx0cyB0byAnYXV0bycgc28gd2UgZG9uJ3QgaGF2ZSB0byBoYW5kbGUgdGhhdCBleHBsaWNp
dGx5IGJlbG93LgotICAgIFF1YWQqIHNsaWNlcyA9IGJvcmRlcldpZHRocy5nZXRRdWFkVmFsdWUo
KTsKKyAgICBRdWFkKiBzbGljZXMgPSBib3JkZXJXaWR0aHMucXVhZFZhbHVlKCk7CiAgICAgaWYg
KHNsaWNlcy0+dG9wKCktPmlzTnVtYmVyKCkpCi0gICAgICAgIGJveC50b3AoKSA9IExlbmd0aChz
bGljZXMtPnRvcCgpLT5nZXRJbnRWYWx1ZSgpLCBSZWxhdGl2ZSk7CisgICAgICAgIGJveC50b3Ao
KSA9IExlbmd0aChzbGljZXMtPnRvcCgpLT5pbnRWYWx1ZSgpLCBSZWxhdGl2ZSk7CiAgICAgZWxz
ZSBpZiAoc2xpY2VzLT50b3AoKS0+aXNQZXJjZW50YWdlKCkpCi0gICAgICAgIGJveC50b3AoKSA9
IExlbmd0aChzbGljZXMtPnRvcCgpLT5nZXREb3VibGVWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX1BFUkNFTlRBR0UpLCBQZXJjZW50KTsKLSAgICBlbHNlIGlmIChzbGljZXMtPnRvcCgpLT5n
ZXRWYWx1ZUlEKCkgIT0gQ1NTVmFsdWVBdXRvKQorICAgICAgICBib3gudG9wKCkgPSBMZW5ndGgo
c2xpY2VzLT50b3AoKS0+ZG91YmxlVmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5U
QUdFKSwgUGVyY2VudCk7CisgICAgZWxzZSBpZiAoc2xpY2VzLT50b3AoKS0+dmFsdWVJRCgpICE9
IENTU1ZhbHVlQXV0bykKICAgICAgICAgYm94LnRvcCgpID0gc2xpY2VzLT50b3AoKS0+Y29tcHV0
ZUxlbmd0aDxMZW5ndGg+KGNvbnZlcnNpb25EYXRhKTsKIAogICAgIGlmIChzbGljZXMtPnJpZ2h0
KCktPmlzTnVtYmVyKCkpCi0gICAgICAgIGJveC5yaWdodCgpID0gTGVuZ3RoKHNsaWNlcy0+cmln
aHQoKS0+Z2V0SW50VmFsdWUoKSwgUmVsYXRpdmUpOworICAgICAgICBib3gucmlnaHQoKSA9IExl
bmd0aChzbGljZXMtPnJpZ2h0KCktPmludFZhbHVlKCksIFJlbGF0aXZlKTsKICAgICBlbHNlIGlm
IChzbGljZXMtPnJpZ2h0KCktPmlzUGVyY2VudGFnZSgpKQotICAgICAgICBib3gucmlnaHQoKSA9
IExlbmd0aChzbGljZXMtPnJpZ2h0KCktPmdldERvdWJsZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfUEVSQ0VOVEFHRSksIFBlcmNlbnQpOwotICAgIGVsc2UgaWYgKHNsaWNlcy0+cmlnaHQo
KS0+Z2V0VmFsdWVJRCgpICE9IENTU1ZhbHVlQXV0bykKKyAgICAgICAgYm94LnJpZ2h0KCkgPSBM
ZW5ndGgoc2xpY2VzLT5yaWdodCgpLT5kb3VibGVWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X1BFUkNFTlRBR0UpLCBQZXJjZW50KTsKKyAgICBlbHNlIGlmIChzbGljZXMtPnJpZ2h0KCktPnZh
bHVlSUQoKSAhPSBDU1NWYWx1ZUF1dG8pCiAgICAgICAgIGJveC5yaWdodCgpID0gc2xpY2VzLT5y
aWdodCgpLT5jb21wdXRlTGVuZ3RoPExlbmd0aD4oY29udmVyc2lvbkRhdGEpOwogCiAgICAgaWYg
KHNsaWNlcy0+Ym90dG9tKCktPmlzTnVtYmVyKCkpCi0gICAgICAgIGJveC5ib3R0b20oKSA9IExl
bmd0aChzbGljZXMtPmJvdHRvbSgpLT5nZXRJbnRWYWx1ZSgpLCBSZWxhdGl2ZSk7CisgICAgICAg
IGJveC5ib3R0b20oKSA9IExlbmd0aChzbGljZXMtPmJvdHRvbSgpLT5pbnRWYWx1ZSgpLCBSZWxh
dGl2ZSk7CiAgICAgZWxzZSBpZiAoc2xpY2VzLT5ib3R0b20oKS0+aXNQZXJjZW50YWdlKCkpCi0g
ICAgICAgIGJveC5ib3R0b20oKSA9IExlbmd0aChzbGljZXMtPmJvdHRvbSgpLT5nZXREb3VibGVW
YWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpLCBQZXJjZW50KTsKLSAgICBl
bHNlIGlmIChzbGljZXMtPmJvdHRvbSgpLT5nZXRWYWx1ZUlEKCkgIT0gQ1NTVmFsdWVBdXRvKQor
ICAgICAgICBib3guYm90dG9tKCkgPSBMZW5ndGgoc2xpY2VzLT5ib3R0b20oKS0+ZG91YmxlVmFs
dWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKSwgUGVyY2VudCk7CisgICAgZWxz
ZSBpZiAoc2xpY2VzLT5ib3R0b20oKS0+dmFsdWVJRCgpICE9IENTU1ZhbHVlQXV0bykKICAgICAg
ICAgYm94LmJvdHRvbSgpID0gc2xpY2VzLT5ib3R0b20oKS0+Y29tcHV0ZUxlbmd0aDxMZW5ndGg+
KGNvbnZlcnNpb25EYXRhKTsKIAogICAgIGlmIChzbGljZXMtPmxlZnQoKS0+aXNOdW1iZXIoKSkK
LSAgICAgICAgYm94LmxlZnQoKSA9IExlbmd0aChzbGljZXMtPmxlZnQoKS0+Z2V0SW50VmFsdWUo
KSwgUmVsYXRpdmUpOworICAgICAgICBib3gubGVmdCgpID0gTGVuZ3RoKHNsaWNlcy0+bGVmdCgp
LT5pbnRWYWx1ZSgpLCBSZWxhdGl2ZSk7CiAgICAgZWxzZSBpZiAoc2xpY2VzLT5sZWZ0KCktPmlz
UGVyY2VudGFnZSgpKQotICAgICAgICBib3gubGVmdCgpID0gTGVuZ3RoKHNsaWNlcy0+bGVmdCgp
LT5nZXREb3VibGVWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpLCBQZXJj
ZW50KTsKLSAgICBlbHNlIGlmIChzbGljZXMtPmxlZnQoKS0+Z2V0VmFsdWVJRCgpICE9IENTU1Zh
bHVlQXV0bykKKyAgICAgICAgYm94LmxlZnQoKSA9IExlbmd0aChzbGljZXMtPmxlZnQoKS0+ZG91
YmxlVmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKSwgUGVyY2VudCk7Cisg
ICAgZWxzZSBpZiAoc2xpY2VzLT5sZWZ0KCktPnZhbHVlSUQoKSAhPSBDU1NWYWx1ZUF1dG8pCiAg
ICAgICAgIGJveC5sZWZ0KCkgPSBzbGljZXMtPmxlZnQoKS0+Y29tcHV0ZUxlbmd0aDxMZW5ndGg+
KGNvbnZlcnNpb25EYXRhKTsKIAogICAgIHJldHVybiBib3g7CkBAIC02ODAsMTIgKzY4MCwxMiBA
QCB2b2lkIENTU1RvU3R5bGVNYXA6Om1hcE5pbmVQaWVjZUltYWdlUmVwZWF0KENTU1ZhbHVlJiB2
YWx1ZSwgTmluZVBpZWNlSW1hZ2UmIGltYQogICAgICAgICByZXR1cm47CiAKICAgICBDU1NQcmlt
aXRpdmVWYWx1ZSYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4o
dmFsdWUpOwotICAgIFBhaXIqIHBhaXIgPSBwcmltaXRpdmVWYWx1ZS5nZXRQYWlyVmFsdWUoKTsK
KyAgICBQYWlyKiBwYWlyID0gcHJpbWl0aXZlVmFsdWUucGFpclZhbHVlKCk7CiAgICAgaWYgKCFw
YWlyIHx8ICFwYWlyLT5maXJzdCgpIHx8ICFwYWlyLT5zZWNvbmQoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgQ1NTVmFsdWVJRCBmaXJzdElkZW50aWZpZXIgPSBwYWlyLT5maXJzdCgpLT5nZXRW
YWx1ZUlEKCk7Ci0gICAgQ1NTVmFsdWVJRCBzZWNvbmRJZGVudGlmaWVyID0gcGFpci0+c2Vjb25k
KCktPmdldFZhbHVlSUQoKTsKKyAgICBDU1NWYWx1ZUlEIGZpcnN0SWRlbnRpZmllciA9IHBhaXIt
PmZpcnN0KCktPnZhbHVlSUQoKTsKKyAgICBDU1NWYWx1ZUlEIHNlY29uZElkZW50aWZpZXIgPSBw
YWlyLT5zZWNvbmQoKS0+dmFsdWVJRCgpOwogCiAgICAgRU5pbmVQaWVjZUltYWdlUnVsZSBob3Jp
em9udGFsUnVsZTsKICAgICBzd2l0Y2ggKGZpcnN0SWRlbnRpZmllcikgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFs
dWUuaAppbmRleCBmOTlkMzczYzk1MTE2OWUxNWRhZGJlNzdjYmQwZmU1NmMzZDhkMWFmLi5lZmQ5
ODgxOWIxMjc0YTE4ZjViN2JmYTgwOTI1MWVhM2Q3MmNmMmNmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUu
aApAQCAtMjAsNyArMjAsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkV4Y2VwdGlv
bkNvZGUuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2luY2x1ZGUgIlVSTEhhc2guaCIK
ICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgpA
QCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgY3Nz
VGV4dCgpIGNvbnN0OwogCi0gICAgdm9pZCBzZXRDc3NUZXh0KGNvbnN0IFN0cmluZyYsIEV4Y2Vw
dGlvbkNvZGUmKSB7IH0gLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KKyAgICBFeGNlcHRpb25P
cjx2b2lkPiBzZXRDc3NUZXh0KGNvbnN0IFN0cmluZyYpIHsgcmV0dXJuIHsgfTsgfSAvLyBGSVhN
RTogTm90IGltcGxlbWVudGVkLgogCiAgICAgYm9vbCBpc1ByaW1pdGl2ZVZhbHVlKCkgY29uc3Qg
eyByZXR1cm4gbV9jbGFzc1R5cGUgPT0gUHJpbWl0aXZlQ2xhc3M7IH0KICAgICBib29sIGlzVmFs
dWVMaXN0KCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc1R5cGUgPj0gVmFsdWVMaXN0Q2xhc3M7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTVmFsdWUuaWRsCmluZGV4IDYwOWJmYzBjNjY1NDcwZDlhODVmMGJhOWI2OWFi
YzgxNjNhYzBjYzAuLjhjZjE2NTQ4MmUyZmM5N2QxM2EyODU0MWQ4YjNhMDEyZTE0ODFjYzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5pZGwKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1ZhbHVlLmlkbApAQCAtMTksOCArMTksOCBAQAogICovCiAKIFsKLSAgICBD
dXN0b21Ub0pTT2JqZWN0LAogICAgIEN1c3RvbUlzUmVhY2hhYmxlLAorICAgIEN1c3RvbVRvSlNP
YmplY3QsCiAgICAgRXhwb3J0VG9XcmFwcGVkRnVuY3Rpb24sCiAgICAgSW1wbGVtZW50YXRpb25M
YWNrc1ZUYWJsZSwKICAgICBKU0N1c3RvbUZpbmFsaXplLApAQCAtMzEsNyArMzEsNyBAQAogICAg
IGNvbnN0IHVuc2lnbmVkIHNob3J0IENTU19WQUxVRV9MSVNUID0gMjsKICAgICBjb25zdCB1bnNp
Z25lZCBzaG9ydCBDU1NfQ1VTVE9NID0gMzsKIAotICAgIFtTZXR0ZXJNYXlUaHJvd0xlZ2FjeUV4
Y2VwdGlvbl0gYXR0cmlidXRlIERPTVN0cmluZz8gY3NzVGV4dDsKKyAgICBbU2V0dGVyTWF5VGhy
b3dFeGNlcHRpb25dIGF0dHJpYnV0ZSBET01TdHJpbmc/IGNzc1RleHQ7CiAKICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQgY3NzVmFsdWVUeXBlOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9Db3VudGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ291bnRl
ci5oCmluZGV4IDFiMjEwYmVkZTZlNWNmMmZmZjE3NjhhNWNhYmQ3MTY3N2E2MmZjYzguLjcxNDZh
NzJiZDRmMTRlNjI3ZDVlMDNkMGE2MjRjYjEwMGVmYmMzNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9Db3VudGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NvdW50ZXIuaApA
QCAtMzIsMTEgKzMyLDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
Q291bnRlcihXVEZNb3ZlKGlkZW50aWZpZXIpLCBXVEZNb3ZlKGxpc3RTdHlsZSksIFdURk1vdmUo
c2VwYXJhdG9yKSkpOwogICAgIH0KIAotICAgIFN0cmluZyBpZGVudGlmaWVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9pZGVudGlmaWVyLT5nZXRTdHJpbmdWYWx1ZSgpOyB9Ci0gICAgU3RyaW5nIGxpc3RT
dHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGlzdFN0eWxlLT5nZXRTdHJpbmdWYWx1ZSgpOyB9Ci0g
ICAgU3RyaW5nIHNlcGFyYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fc2VwYXJhdG9yLT5nZXRTdHJp
bmdWYWx1ZSgpOyB9CisgICAgU3RyaW5nIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lk
ZW50aWZpZXItPnN0cmluZ1ZhbHVlKCk7IH0KKyAgICBTdHJpbmcgbGlzdFN0eWxlKCkgY29uc3Qg
eyByZXR1cm4gbV9saXN0U3R5bGUtPnN0cmluZ1ZhbHVlKCk7IH0KKyAgICBTdHJpbmcgc2VwYXJh
dG9yKCkgY29uc3QgeyByZXR1cm4gbV9zZXBhcmF0b3ItPnN0cmluZ1ZhbHVlKCk7IH0KIAotICAg
IENTU1ZhbHVlSUQgbGlzdFN0eWxlSWRlbnQoKSBjb25zdCB7IHJldHVybiBtX2xpc3RTdHlsZS0+
Z2V0VmFsdWVJRCgpOyB9CisgICAgQ1NTVmFsdWVJRCBsaXN0U3R5bGVJZGVudCgpIGNvbnN0IHsg
cmV0dXJuIG1fbGlzdFN0eWxlLT52YWx1ZUlEKCk7IH0KIAogICAgIHZvaWQgc2V0SWRlbnRpZmll
cihSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+JiYgaWRlbnRpZmllcikgeyBtX2lkZW50aWZpZXIgPSBX
VEZNb3ZlKGlkZW50aWZpZXIpOyB9CiAgICAgdm9pZCBzZXRMaXN0U3R5bGUoUmVmPENTU1ByaW1p
dGl2ZVZhbHVlPiYmIGxpc3RTdHlsZSkgeyBtX2xpc3RTdHlsZSA9IFdURk1vdmUobGlzdFN0eWxl
KTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAKaW5kZXggZGYyMDcwMjc1ZDYwMmZlN2NiYmU5ZTVj
ZjQzYWQwODQyMzA4YTFlNy4uZjkxNjM5YThmZDhkY2FkOGQ1YzBjY2MyMmUzZjkxZWM5MjNmY2Nj
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwCkBAIC00NSwyMyArNDUsMjAgQEAgc3RhdGljIGJv
b2wgcG9wdWxhdGVGb250RmFjZVdpdGhBcnJheUJ1ZmZlcihDU1NGb250RmFjZSYgZm9udEZhY2Us
IFJlZjxKU0M6OkFycmEKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVJlZlB0cjxGb250RmFjZT4g
Rm9udEZhY2U6OmNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIERvY3VtZW50JiBkb2N1bWVu
dCwgY29uc3QgU3RyaW5nJiBmYW1pbHksIEpTQzo6SlNWYWx1ZSBzb3VyY2UsIGNvbnN0IERlc2Ny
aXB0b3JzJiBkZXNjcmlwdG9ycywgRXhjZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRpb25PcjxSZWY8
Rm9udEZhY2U+PiBGb250RmFjZTo6Y3JlYXRlKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgRG9jdW1l
bnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGZhbWlseSwgSlNDOjpKU1ZhbHVlIHNvdXJjZSwg
Y29uc3QgRGVzY3JpcHRvcnMmIGRlc2NyaXB0b3JzKQogewogICAgIGF1dG8gcmVzdWx0ID0gYWRv
cHRSZWYoKm5ldyBGb250RmFjZShkb2N1bWVudC5mb250U2VsZWN0b3IoKSkpOwogCiAgICAgYm9v
bCBkYXRhUmVxdWlyZXNBc3luY2hyb25vdXNMb2FkaW5nID0gdHJ1ZTsKIAotICAgIGVjID0gMDsK
LSAgICByZXN1bHQtPnNldEZhbWlseShmYW1pbHksIGVjKTsKLSAgICBpZiAoZWMpCi0gICAgICAg
IHJldHVybiBudWxscHRyOworICAgIGF1dG8gc2V0RmFtaWx5UmVzdWx0ID0gcmVzdWx0LT5zZXRG
YW1pbHkoZmFtaWx5KTsKKyAgICBpZiAoc2V0RmFtaWx5UmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQor
ICAgICAgICByZXR1cm4gc2V0RmFtaWx5UmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKIAogICAg
IGlmIChzb3VyY2UuaXNTdHJpbmcoKSkgewogICAgICAgICBhdXRvIHZhbHVlID0gRm9udEZhY2U6
OnBhcnNlU3RyaW5nKHNvdXJjZS5nZXRTdHJpbmcoJnN0YXRlKSwgQ1NTUHJvcGVydHlTcmMpOwot
ICAgICAgICBpZiAoIWlzPENTU1ZhbHVlTGlzdD4odmFsdWUuZ2V0KCkpKSB7Ci0gICAgICAgICAg
ICBlYyA9IFNZTlRBWF9FUlI7Ci0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAg
fQorICAgICAgICBpZiAoIWlzPENTU1ZhbHVlTGlzdD4odmFsdWUuZ2V0KCkpKQorICAgICAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNZTlRBWF9FUlIgfTsKICAgICAgICAgQ1NTRm9udEZhY2U6
OmFwcGVuZFNvdXJjZXMocmVzdWx0LT5iYWNraW5nKCksIGRvd25jYXN0PENTU1ZhbHVlTGlzdD4o
KnZhbHVlKSwgJmRvY3VtZW50LCBmYWxzZSk7CiAgICAgfSBlbHNlIGlmIChhdXRvIGFycmF5QnVm
ZmVyVmlldyA9IHRvQXJyYXlCdWZmZXJWaWV3KHNvdXJjZSkpCiAgICAgICAgIGRhdGFSZXF1aXJl
c0FzeW5jaHJvbm91c0xvYWRpbmcgPSBwb3B1bGF0ZUZvbnRGYWNlV2l0aEFycmF5QnVmZmVyKHJl
c3VsdC0+YmFja2luZygpLCBhcnJheUJ1ZmZlclZpZXcucmVsZWFzZU5vbk51bGwoKSk7CkBAIC03
MSwyNCArNjgsMjQgQEAgUmVmUHRyPEZvbnRGYWNlPiBGb250RmFjZTo6Y3JlYXRlKEpTQzo6RXhl
Y1N0YXRlJiBzdGF0ZSwgRG9jdW1lbnQmIGRvY3VtZW50LCBjb24KICAgICB9CiAKICAgICAvLyBU
aGVzZSB0ZXJuYXJpZXMgbWF0Y2ggdGhlIGRlZmF1bHQgc3RyaW5ncyBpbnNpZGUgdGhlIEZvbnRG
YWNlRGVzY3JpcHRvcnMgZGljdGlvbmFyeSBpbnNpZGUgRm9udEZhY2UuaWRsLgotICAgIHJlc3Vs
dC0+c2V0U3R5bGUoZGVzY3JpcHRvcnMuc3R5bGUuaXNFbXB0eSgpID8gQVNDSUlMaXRlcmFsKCJu
b3JtYWwiKSA6IGRlc2NyaXB0b3JzLnN0eWxlLCBlYyk7Ci0gICAgaWYgKGVjKQotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICByZXN1bHQtPnNldFdlaWdodChkZXNjcmlwdG9ycy53ZWlnaHQu
aXNFbXB0eSgpID8gQVNDSUlMaXRlcmFsKCJub3JtYWwiKSA6IGRlc2NyaXB0b3JzLndlaWdodCwg
ZWMpOwotICAgIGlmIChlYykKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmVzdWx0LT5z
ZXRTdHJldGNoKGRlc2NyaXB0b3JzLnN0cmV0Y2guaXNFbXB0eSgpID8gQVNDSUlMaXRlcmFsKCJu
b3JtYWwiKSA6IGRlc2NyaXB0b3JzLnN0cmV0Y2gsIGVjKTsKLSAgICBpZiAoZWMpCi0gICAgICAg
IHJldHVybiBudWxscHRyOwotICAgIHJlc3VsdC0+c2V0VW5pY29kZVJhbmdlKGRlc2NyaXB0b3Jz
LnVuaWNvZGVSYW5nZS5pc0VtcHR5KCkgPyBBU0NJSUxpdGVyYWwoIlUrMC0xMEZGRkYiKSA6IGRl
c2NyaXB0b3JzLnVuaWNvZGVSYW5nZSwgZWMpOwotICAgIGlmIChlYykKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgcmVzdWx0LT5zZXRWYXJpYW50KGRlc2NyaXB0b3JzLnZhcmlhbnQuaXNF
bXB0eSgpID8gQVNDSUlMaXRlcmFsKCJub3JtYWwiKSA6IGRlc2NyaXB0b3JzLnZhcmlhbnQsIGVj
KTsKLSAgICBpZiAoZWMpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJlc3VsdC0+c2V0
RmVhdHVyZVNldHRpbmdzKGRlc2NyaXB0b3JzLmZlYXR1cmVTZXR0aW5ncy5pc0VtcHR5KCkgPyBB
U0NJSUxpdGVyYWwoIm5vcm1hbCIpIDogZGVzY3JpcHRvcnMuZmVhdHVyZVNldHRpbmdzLCBlYyk7
Ci0gICAgaWYgKGVjKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBhdXRvIHNldFN0eWxl
UmVzdWx0ID0gcmVzdWx0LT5zZXRTdHlsZShkZXNjcmlwdG9ycy5zdHlsZS5pc0VtcHR5KCkgPyBB
U0NJSUxpdGVyYWwoIm5vcm1hbCIpIDogZGVzY3JpcHRvcnMuc3R5bGUpOworICAgIGlmIChzZXRT
dHlsZVJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIHNldFN0eWxlUmVzdWx0
LnJlbGVhc2VFeGNlcHRpb24oKTsKKyAgICBhdXRvIHNldFdlaWdodFJlc3VsdCA9IHJlc3VsdC0+
c2V0V2VpZ2h0KGRlc2NyaXB0b3JzLndlaWdodC5pc0VtcHR5KCkgPyBBU0NJSUxpdGVyYWwoIm5v
cm1hbCIpIDogZGVzY3JpcHRvcnMud2VpZ2h0KTsKKyAgICBpZiAoc2V0V2VpZ2h0UmVzdWx0Lmhh
c0V4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gc2V0V2VpZ2h0UmVzdWx0LnJlbGVhc2VFeGNl
cHRpb24oKTsKKyAgICBhdXRvIHNldFN0cmV0Y2hSZXN1bHQgPSByZXN1bHQtPnNldFN0cmV0Y2go
ZGVzY3JpcHRvcnMuc3RyZXRjaC5pc0VtcHR5KCkgPyBBU0NJSUxpdGVyYWwoIm5vcm1hbCIpIDog
ZGVzY3JpcHRvcnMuc3RyZXRjaCk7CisgICAgaWYgKHNldFN0cmV0Y2hSZXN1bHQuaGFzRXhjZXB0
aW9uKCkpCisgICAgICAgIHJldHVybiBzZXRTdHJldGNoUmVzdWx0LnJlbGVhc2VFeGNlcHRpb24o
KTsKKyAgICBhdXRvIHNldFVuaWNvZGVSYW5nZVJlc3VsdCA9IHJlc3VsdC0+c2V0VW5pY29kZVJh
bmdlKGRlc2NyaXB0b3JzLnVuaWNvZGVSYW5nZS5pc0VtcHR5KCkgPyBBU0NJSUxpdGVyYWwoIlUr
MC0xMEZGRkYiKSA6IGRlc2NyaXB0b3JzLnVuaWNvZGVSYW5nZSk7CisgICAgaWYgKHNldFVuaWNv
ZGVSYW5nZVJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIHNldFVuaWNvZGVS
YW5nZVJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CisgICAgYXV0byBzZXRWYXJpYW50UmVzdWx0
ID0gcmVzdWx0LT5zZXRWYXJpYW50KGRlc2NyaXB0b3JzLnZhcmlhbnQuaXNFbXB0eSgpID8gQVND
SUlMaXRlcmFsKCJub3JtYWwiKSA6IGRlc2NyaXB0b3JzLnZhcmlhbnQpOworICAgIGlmIChzZXRW
YXJpYW50UmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gc2V0VmFyaWFudFJl
c3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CisgICAgYXV0byBzZXRGZWF0dXJlU2V0dGluZ3NSZXN1
bHQgPSByZXN1bHQtPnNldEZlYXR1cmVTZXR0aW5ncyhkZXNjcmlwdG9ycy5mZWF0dXJlU2V0dGlu
Z3MuaXNFbXB0eSgpID8gQVNDSUlMaXRlcmFsKCJub3JtYWwiKSA6IGRlc2NyaXB0b3JzLmZlYXR1
cmVTZXR0aW5ncyk7CisgICAgaWYgKHNldEZlYXR1cmVTZXR0aW5nc1Jlc3VsdC5oYXNFeGNlcHRp
b24oKSkKKyAgICAgICAgcmV0dXJuIHNldEZlYXR1cmVTZXR0aW5nc1Jlc3VsdC5yZWxlYXNlRXhj
ZXB0aW9uKCk7CiAKICAgICBpZiAoIWRhdGFSZXF1aXJlc0FzeW5jaHJvbm91c0xvYWRpbmcpIHsK
ICAgICAgICAgcmVzdWx0LT5iYWNraW5nKCkubG9hZCgpOwpAQCAtMTM1LDgwICsxMzIsNzMgQEAg
UmVmUHRyPENTU1ZhbHVlPiBGb250RmFjZTo6cGFyc2VTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJp
bmcsIENTU1Byb3BlcnR5SUQgcHJvcGUKICAgICByZXR1cm4gc3R5bGUtPmdldFByb3BlcnR5Q1NT
VmFsdWUocHJvcGVydHlJRCk7CiB9CiAKLXZvaWQgRm9udEZhY2U6OnNldEZhbWlseShjb25zdCBT
dHJpbmcmIGZhbWlseSwgRXhjZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRpb25Pcjx2b2lkPiBGb250
RmFjZTo6c2V0RmFtaWx5KGNvbnN0IFN0cmluZyYgZmFtaWx5KQogewotICAgIGlmIChmYW1pbHku
aXNFbXB0eSgpKSB7Ci0gICAgICAgIGVjID0gU1lOVEFYX0VSUjsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KKyAgICBpZiAoZmFtaWx5LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IFNZTlRBWF9FUlIgfTsKIAogICAgIGJvb2wgc3VjY2VzcyA9IGZhbHNlOwogICAgIGlmIChh
dXRvIHZhbHVlID0gcGFyc2VTdHJpbmcoZmFtaWx5LCBDU1NQcm9wZXJ0eUZvbnRGYW1pbHkpKQog
ICAgICAgICBzdWNjZXNzID0gbV9iYWNraW5nLT5zZXRGYW1pbGllcygqdmFsdWUpOwogICAgIGlm
ICghc3VjY2VzcykKLSAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgU1lOVEFYX0VSUiB9OworICAgIHJldHVybiB7IH07CiB9CiAKLXZvaWQgRm9udEZh
Y2U6OnNldFN0eWxlKGNvbnN0IFN0cmluZyYgc3R5bGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhj
ZXB0aW9uT3I8dm9pZD4gRm9udEZhY2U6OnNldFN0eWxlKGNvbnN0IFN0cmluZyYgc3R5bGUpCiB7
Ci0gICAgaWYgKHN0eWxlLmlzRW1wdHkoKSkgewotICAgICAgICBlYyA9IFNZTlRBWF9FUlI7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKHN0eWxlLmlzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IFNZTlRBWF9FUlIgfTsKIAogICAgIGJvb2wgc3VjY2VzcyA9IGZh
bHNlOwogICAgIGlmIChhdXRvIHZhbHVlID0gcGFyc2VTdHJpbmcoc3R5bGUsIENTU1Byb3BlcnR5
Rm9udFN0eWxlKSkKICAgICAgICAgc3VjY2VzcyA9IG1fYmFja2luZy0+c2V0U3R5bGUoKnZhbHVl
KTsKICAgICBpZiAoIXN1Y2Nlc3MpCi0gICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IFNZTlRBWF9FUlIgfTsKKyAgICByZXR1cm4geyB9OwogfQogCi12
b2lkIEZvbnRGYWNlOjpzZXRXZWlnaHQoY29uc3QgU3RyaW5nJiB3ZWlnaHQsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQorRXhjZXB0aW9uT3I8dm9pZD4gRm9udEZhY2U6OnNldFdlaWdodChjb25zdCBTdHJp
bmcmIHdlaWdodCkKIHsKLSAgICBpZiAod2VpZ2h0LmlzRW1wdHkoKSkgewotICAgICAgICBlYyA9
IFNZTlRBWF9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKHdlaWdodC5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTWU5UQVhfRVJSIH07CiAKICAgICBi
b29sIHN1Y2Nlc3MgPSBmYWxzZTsKICAgICBpZiAoYXV0byB2YWx1ZSA9IHBhcnNlU3RyaW5nKHdl
aWdodCwgQ1NTUHJvcGVydHlGb250V2VpZ2h0KSkKICAgICAgICAgc3VjY2VzcyA9IG1fYmFja2lu
Zy0+c2V0V2VpZ2h0KCp2YWx1ZSk7CiAgICAgaWYgKCFzdWNjZXNzKQotICAgICAgICBlYyA9IFNZ
TlRBWF9FUlI7CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTWU5UQVhfRVJSIH07CisgICAg
cmV0dXJuIHsgfTsKIH0KIAotdm9pZCBGb250RmFjZTo6c2V0U3RyZXRjaChjb25zdCBTdHJpbmcm
LCBFeGNlcHRpb25Db2RlJikKK0V4Y2VwdGlvbk9yPHZvaWQ+IEZvbnRGYWNlOjpzZXRTdHJldGNo
KGNvbnN0IFN0cmluZyYpCiB7CiAgICAgLy8gV2UgZG9uJ3Qgc3VwcG9ydCBmb250LXN0cmV0Y2gu
IFN3YWxsb3cgdGhlIGNhbGwuCisgICAgcmV0dXJuIHsgfTsKIH0KIAotdm9pZCBGb250RmFjZTo6
c2V0VW5pY29kZVJhbmdlKGNvbnN0IFN0cmluZyYgdW5pY29kZVJhbmdlLCBFeGNlcHRpb25Db2Rl
JiBlYykKK0V4Y2VwdGlvbk9yPHZvaWQ+IEZvbnRGYWNlOjpzZXRVbmljb2RlUmFuZ2UoY29uc3Qg
U3RyaW5nJiB1bmljb2RlUmFuZ2UpCiB7Ci0gICAgaWYgKHVuaWNvZGVSYW5nZS5pc0VtcHR5KCkp
IHsKLSAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAg
IGlmICh1bmljb2RlUmFuZ2UuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
U1lOVEFYX0VSUiB9OwogCiAgICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7CiAgICAgaWYgKGF1dG8g
dmFsdWUgPSBwYXJzZVN0cmluZyh1bmljb2RlUmFuZ2UsIENTU1Byb3BlcnR5VW5pY29kZVJhbmdl
KSkKICAgICAgICAgc3VjY2VzcyA9IG1fYmFja2luZy0+c2V0VW5pY29kZVJhbmdlKCp2YWx1ZSk7
CiAgICAgaWYgKCFzdWNjZXNzKQotICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBTWU5UQVhfRVJSIH07CisgICAgcmV0dXJuIHsgfTsKIH0KIAotdm9p
ZCBGb250RmFjZTo6c2V0VmFyaWFudChjb25zdCBTdHJpbmcmIHZhcmlhbnQsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQorRXhjZXB0aW9uT3I8dm9pZD4gRm9udEZhY2U6OnNldFZhcmlhbnQoY29uc3QgU3Ry
aW5nJiB2YXJpYW50KQogewotICAgIGlmICh2YXJpYW50LmlzRW1wdHkoKSkgewotICAgICAgICBl
YyA9IFNZTlRBWF9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKHZhcmlhbnQu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU1lOVEFYX0VSUiB9OwogCiAg
ICAgYXV0byBzdHlsZSA9IE11dGFibGVTdHlsZVByb3BlcnRpZXM6OmNyZWF0ZSgpOwogICAgIGF1
dG8gcmVzdWx0ID0gQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKHN0eWxlLCBDU1NQcm9wZXJ0eUZvbnRW
YXJpYW50LCB2YXJpYW50LCB0cnVlLCBIVE1MU3RhbmRhcmRNb2RlLCBudWxscHRyKTsKLSAgICBp
ZiAocmVzdWx0ID09IENTU1BhcnNlcjo6UGFyc2VSZXN1bHQ6OkVycm9yKSB7Ci0gICAgICAgIGVj
ID0gU1lOVEFYX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAocmVzdWx0ID09
IENTU1BhcnNlcjo6UGFyc2VSZXN1bHQ6OkVycm9yKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgU1lOVEFYX0VSUiB9OwogCiAgICAgLy8gRklYTUU6IFdvdWxkIGJlIG11Y2ggYmV0dGVyIHRv
IHN0YWdlIHRoZSBuZXcgc2V0dGluZ3MgYW5kIHNldCB0aGVtIGFsbCBhdCBvbmNlCiAgICAgLy8g
aW5zdGVhZCBvZiB0aGlzIGRhbmNlIHdoZXJlIHdlIG1ha2UgYSBiYWNrdXAgYW5kIHJldmVydCB0
byBpdCBpZiBzb21ldGhpbmcgZmFpbHMuCkBAIC0yNDksMjMgKzIzOSwyMiBAQCB2b2lkIEZvbnRG
YWNlOjpzZXRWYXJpYW50KGNvbnN0IFN0cmluZyYgdmFyaWFudCwgRXhjZXB0aW9uQ29kZSYgZWMp
CiAKICAgICBpZiAoIXN1Y2Nlc3MpIHsKICAgICAgICAgbV9iYWNraW5nLT5zZXRWYXJpYW50U2V0
dGluZ3MoYmFja3VwKTsKLSAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgU1lOVEFYX0VSUiB9OwogICAgIH0KKworICAgIHJldHVybiB7IH07CiB9CiAK
LXZvaWQgRm9udEZhY2U6OnNldEZlYXR1cmVTZXR0aW5ncyhjb25zdCBTdHJpbmcmIGZlYXR1cmVT
ZXR0aW5ncywgRXhjZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRpb25Pcjx2b2lkPiBGb250RmFjZTo6
c2V0RmVhdHVyZVNldHRpbmdzKGNvbnN0IFN0cmluZyYgZmVhdHVyZVNldHRpbmdzKQogewotICAg
IGlmIChmZWF0dXJlU2V0dGluZ3MuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGVjID0gU1lOVEFYX0VS
UjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoZmVhdHVyZVNldHRpbmdzLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNZTlRBWF9FUlIgfTsKIAogICAgIGF1
dG8gdmFsdWUgPSBwYXJzZVN0cmluZyhmZWF0dXJlU2V0dGluZ3MsIENTU1Byb3BlcnR5Rm9udEZl
YXR1cmVTZXR0aW5ncyk7Ci0gICAgaWYgKCF2YWx1ZSkgewotICAgICAgICBlYyA9IFNZTlRBWF9F
UlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IFNZTlRBWF9FUlIgfTsKICAgICBtX2JhY2tpbmctPnNldEZlYXR1cmVT
ZXR0aW5ncygqdmFsdWUpOworICAgIHJldHVybiB7IH07CiB9CiAKIFN0cmluZyBGb250RmFjZTo6
ZmFtaWx5KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5o
IGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmgKaW5kZXggZWQzMGRkYmY1NTkxMDQ4MzBi
ZTBhNjViZGE4ZmEzNjIxZThkNDZhYS4uZmE4ZjMxM2RjZWQ4ZmI1ZGQyOGUyYzI5NDg1MTVlNDZk
N2VhY2UwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmgKQEAgLTQyLDE3ICs0MiwxNyBAQCBwdWJsaWM6
CiAgICAgICAgIFN0cmluZyB2YXJpYW50OwogICAgICAgICBTdHJpbmcgZmVhdHVyZVNldHRpbmdz
OwogICAgIH07Ci0gICAgc3RhdGljIFJlZlB0cjxGb250RmFjZT4gY3JlYXRlKEpTQzo6RXhlY1N0
YXRlJiwgRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmIGZhbWlseSwgSlNDOjpKU1ZhbHVlIHNvdXJj
ZSwgY29uc3QgRGVzY3JpcHRvcnMmLCBFeGNlcHRpb25Db2RlJik7CisgICAgc3RhdGljIEV4Y2Vw
dGlvbk9yPFJlZjxGb250RmFjZT4+IGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSYsIERvY3VtZW50Jiwg
Y29uc3QgU3RyaW5nJiBmYW1pbHksIEpTQzo6SlNWYWx1ZSBzb3VyY2UsIGNvbnN0IERlc2NyaXB0
b3JzJik7CiAgICAgc3RhdGljIFJlZjxGb250RmFjZT4gY3JlYXRlKENTU0ZvbnRGYWNlJik7CiAg
ICAgdmlydHVhbCB+Rm9udEZhY2UoKTsKIAotICAgIHZvaWQgc2V0RmFtaWx5KGNvbnN0IFN0cmlu
ZyYsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHNldFN0eWxlKGNvbnN0IFN0cmluZyYsIEV4
Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHNldFdlaWdodChjb25zdCBTdHJpbmcmLCBFeGNlcHRp
b25Db2RlJik7Ci0gICAgdm9pZCBzZXRTdHJldGNoKGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNv
ZGUmKTsKLSAgICB2b2lkIHNldFVuaWNvZGVSYW5nZShjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25D
b2RlJik7Ci0gICAgdm9pZCBzZXRWYXJpYW50KGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUm
KTsKLSAgICB2b2lkIHNldEZlYXR1cmVTZXR0aW5ncyhjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25D
b2RlJik7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0RmFtaWx5KGNvbnN0IFN0cmluZyYpOwor
ICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFN0eWxlKGNvbnN0IFN0cmluZyYpOworICAgIEV4Y2Vw
dGlvbk9yPHZvaWQ+IHNldFdlaWdodChjb25zdCBTdHJpbmcmKTsKKyAgICBFeGNlcHRpb25Pcjx2
b2lkPiBzZXRTdHJldGNoKGNvbnN0IFN0cmluZyYpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNl
dFVuaWNvZGVSYW5nZShjb25zdCBTdHJpbmcmKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRW
YXJpYW50KGNvbnN0IFN0cmluZyYpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldEZlYXR1cmVT
ZXR0aW5ncyhjb25zdCBTdHJpbmcmKTsKIAogICAgIFN0cmluZyBmYW1pbHkoKSBjb25zdDsKICAg
ICBTdHJpbmcgc3R5bGUoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9G
b250RmFjZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuaWRsCmluZGV4IDc3ZmEx
NDcyZGQ0MjcwZWFjMzFmNjgwNmI2NjNjNzhhNzVmNzRlMWYuLjU2OTViNWQxNjc4MjZmY2JiM2Uz
NDMxMzAwMDA3MDNkNjAwYjUzYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250
RmFjZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmlkbApAQCAtNDEsMTYg
KzQxLDE2IEBAIGRpY3Rpb25hcnkgRm9udEZhY2VEZXNjcmlwdG9ycyB7CiAKIFsKICAgICBDb25z
dHJ1Y3RvckNhbGxXaXRoPURvY3VtZW50JlNjcmlwdFN0YXRlLAotICAgIENvbnN0cnVjdG9yTWF5
VGhyb3dMZWdhY3lFeGNlcHRpb24sCisgICAgQ29uc3RydWN0b3JNYXlUaHJvd0V4Y2VwdGlvbiwK
ICAgICBDb25zdHJ1Y3RvcihET01TdHJpbmcgZmFtaWx5LCBhbnkgc291cmNlLCBvcHRpb25hbCBG
b250RmFjZURlc2NyaXB0b3JzIGRlc2NyaXB0b3JzKQogXSBpbnRlcmZhY2UgRm9udEZhY2Ugewot
ICAgIFtTZXR0ZXJNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gYXR0cmlidXRlIERPTVN0cmluZyBm
YW1pbHk7Ci0gICAgW1NldHRlck1heVRocm93TGVnYWN5RXhjZXB0aW9uXSBhdHRyaWJ1dGUgRE9N
U3RyaW5nIHN0eWxlOwotICAgIFtTZXR0ZXJNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gYXR0cmli
dXRlIERPTVN0cmluZyB3ZWlnaHQ7Ci0gICAgW1NldHRlck1heVRocm93TGVnYWN5RXhjZXB0aW9u
XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHN0cmV0Y2g7Ci0gICAgW1NldHRlck1heVRocm93TGVnYWN5
RXhjZXB0aW9uXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHVuaWNvZGVSYW5nZTsKLSAgICBbU2V0dGVy
TWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIGF0dHJpYnV0ZSBET01TdHJpbmcgdmFyaWFudDsKLSAg
ICBbU2V0dGVyTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIGF0dHJpYnV0ZSBET01TdHJpbmcgZmVh
dHVyZVNldHRpbmdzOworICAgIFtTZXR0ZXJNYXlUaHJvd0V4Y2VwdGlvbl0gYXR0cmlidXRlIERP
TVN0cmluZyBmYW1pbHk7CisgICAgW1NldHRlck1heVRocm93RXhjZXB0aW9uXSBhdHRyaWJ1dGUg
RE9NU3RyaW5nIHN0eWxlOworICAgIFtTZXR0ZXJNYXlUaHJvd0V4Y2VwdGlvbl0gYXR0cmlidXRl
IERPTVN0cmluZyB3ZWlnaHQ7CisgICAgW1NldHRlck1heVRocm93RXhjZXB0aW9uXSBhdHRyaWJ1
dGUgRE9NU3RyaW5nIHN0cmV0Y2g7CisgICAgW1NldHRlck1heVRocm93RXhjZXB0aW9uXSBhdHRy
aWJ1dGUgRE9NU3RyaW5nIHVuaWNvZGVSYW5nZTsKKyAgICBbU2V0dGVyTWF5VGhyb3dFeGNlcHRp
b25dIGF0dHJpYnV0ZSBET01TdHJpbmcgdmFyaWFudDsKKyAgICBbU2V0dGVyTWF5VGhyb3dFeGNl
cHRpb25dIGF0dHJpYnV0ZSBET01TdHJpbmcgZmVhdHVyZVNldHRpbmdzOwogCiAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIEZvbnRGYWNlTG9hZFN0YXR1cyBzdGF0dXM7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9u
dEZhY2VTZXQuY3BwCmluZGV4IDBkNTVkZDdiZGQyYzUyMzQ5MDhhN2Q3YzE2ZmFiMDEwZjg5YmY0
MWYuLjEzOWM0NTVjMmJlMzZhM2U5MWY4OGM4MWVjZDI2YzI4YjJmYzRiZmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0ZvbnRGYWNlU2V0LmNwcApAQCAtMTI1LDEyICsxMjUsMTIgQEAgdm9pZCBGb250RmFjZVNl
dDo6Y2xlYXIoKQogCiB2b2lkIEZvbnRGYWNlU2V0Ojpsb2FkKGNvbnN0IFN0cmluZyYgZm9udCwg
Y29uc3QgU3RyaW5nJiB0ZXh0LCBMb2FkUHJvbWlzZSYmIHByb21pc2UpCiB7Ci0gICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7Ci0gICAgYXV0byBtYXRjaGluZ0ZhY2VzID0gbV9iYWNraW5nLT5tYXRj
aGluZ0ZhY2VzKGZvbnQsIHRleHQsIGVjKTsKLSAgICBpZiAoZWMpIHsKLSAgICAgICAgcHJvbWlz
ZS5yZWplY3QoZWMpOworICAgIGF1dG8gbWF0Y2hpbmdGYWNlc1Jlc3VsdCA9IG1fYmFja2luZy0+
bWF0Y2hpbmdGYWNlcyhmb250LCB0ZXh0KTsKKyAgICBpZiAobWF0Y2hpbmdGYWNlc1Jlc3VsdC5o
YXNFeGNlcHRpb24oKSkgeworICAgICAgICBwcm9taXNlLnJlamVjdChtYXRjaGluZ0ZhY2VzUmVz
dWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgYXV0
byBtYXRjaGluZ0ZhY2VzID0gbWF0Y2hpbmdGYWNlc1Jlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUo
KTsKIAogICAgIGlmIChtYXRjaGluZ0ZhY2VzLmlzRW1wdHkoKSkgewogICAgICAgICBwcm9taXNl
LnJlc29sdmUoVmVjdG9yPFJlZlB0cjxGb250RmFjZT4+KCkpOwpAQCAtMTYyLDkgKzE2Miw5IEBA
IHZvaWQgRm9udEZhY2VTZXQ6OmxvYWQoY29uc3QgU3RyaW5nJiBmb250LCBjb25zdCBTdHJpbmcm
IHRleHQsIExvYWRQcm9taXNlJiYgcHJvCiAgICAgICAgIHBlbmRpbmdQcm9taXNlLT5wcm9taXNl
LnJlc29sdmUocGVuZGluZ1Byb21pc2UtPmZhY2VzKTsKIH0KIAotYm9vbCBGb250RmFjZVNldDo6
Y2hlY2soY29uc3QgU3RyaW5nJiBmYW1pbHksIGNvbnN0IFN0cmluZyYgdGV4dCwgRXhjZXB0aW9u
Q29kZSYgZWMpCitFeGNlcHRpb25Pcjxib29sPiBGb250RmFjZVNldDo6Y2hlY2soY29uc3QgU3Ry
aW5nJiBmYW1pbHksIGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKLSAgICByZXR1cm4gbV9iYWNraW5n
LT5jaGVjayhmYW1pbHksIHRleHQsIGVjKTsKKyAgICByZXR1cm4gbV9iYWNraW5nLT5jaGVjayhm
YW1pbHksIHRleHQpOwogfQogCiB2b2lkIEZvbnRGYWNlU2V0OjpyZWdpc3RlclJlYWR5KFJlYWR5
UHJvbWlzZSYmIHByb21pc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZh
Y2VTZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5oCmluZGV4IGFjMjc0ODA0
ZWQ5OGJjZDJhM2Q0YjE4ZmI1MDQ4YzU3NzU1NDU2MGEuLmUxYTcyNzQ0ZGNlZGFkMDVlNGYxYWM4
NjBlZjFlZjgxMjIwOTBhOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFj
ZVNldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5oCkBAIC0yMyw4ICsy
Myw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgRm9udEZhY2VTZXRfaAotI2Rl
ZmluZSBGb250RmFjZVNldF9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9i
amVjdC5oIgogI2luY2x1ZGUgIkNTU0ZvbnRGYWNlU2V0LmgiCkBAIC00OSw3ICs0OCw3IEBAIHB1
YmxpYzoKIAogICAgIHR5cGVkZWYgRE9NUHJvbWlzZTxWZWN0b3I8UmVmUHRyPEZvbnRGYWNlPj4+
IExvYWRQcm9taXNlOwogICAgIHZvaWQgbG9hZChjb25zdCBTdHJpbmcmIGZvbnQsIGNvbnN0IFN0
cmluZyYgdGV4dCwgTG9hZFByb21pc2UmJik7Ci0gICAgYm9vbCBjaGVjayhjb25zdCBTdHJpbmcm
IGZvbnQsIGNvbnN0IFN0cmluZyYgdGV4dCwgRXhjZXB0aW9uQ29kZSYpOworICAgIEV4Y2VwdGlv
bk9yPGJvb2w+IGNoZWNrKGNvbnN0IFN0cmluZyYgZm9udCwgY29uc3QgU3RyaW5nJiB0ZXh0KTsK
IAogICAgIGVudW0gY2xhc3MgTG9hZFN0YXR1cyB7IExvYWRpbmcsIExvYWRlZCB9OwogICAgIExv
YWRTdGF0dXMgc3RhdHVzKCkgY29uc3Q7CkBAIC0xMTUsNSArMTE0LDMgQEAgcHJpdmF0ZToKIH07
CiAKIH0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VT
ZXQuaWRsIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0LmlkbAppbmRleCBiNzZhMWEx
OWI4YmEyYzE5YWFiMTA1MTBiZTI2ODRmNWNkMzI4MGVkLi43YWIxZTNjZTUyNzNkNTdmMGFlMmM0
ZDEyNTEwNGVkOTYwNzRmYTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZh
Y2VTZXQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5pZGwKQEAgLTQ4
LDcgKzQ4LDcgQEAgZW51bSBGb250RmFjZVNldExvYWRTdGF0dXMgewogICAgIGF0dHJpYnV0ZSBF
dmVudEhhbmRsZXIgb25sb2FkaW5nZXJyb3I7CiAKICAgICBQcm9taXNlIGxvYWQoRE9NU3RyaW5n
IGZvbnQsIG9wdGlvbmFsIERPTVN0cmluZyB0ZXh0ID0gIiAiKTsKLSAgICBbTWF5VGhyb3dMZWdh
Y3lFeGNlcHRpb25dIGJvb2xlYW4gY2hlY2soRE9NU3RyaW5nIGZvbnQsIG9wdGlvbmFsIERPTVN0
cmluZyB0ZXh0ID0gIiAiKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIGJvb2xlYW4gY2hlY2so
RE9NU3RyaW5nIGZvbnQsIG9wdGlvbmFsIERPTVN0cmluZyB0ZXh0ID0gIiAiKTsKIAogICAgIFtD
dXN0b21HZXR0ZXIsIENhY2hlZEF0dHJpYnV0ZV0gcmVhZG9ubHkgYXR0cmlidXRlIFByb21pc2Ug
cmVhZHk7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEZvbnRGYWNlU2V0TG9hZFN0YXR1cyBzdGF0
dXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udFZhcmlhbnRCdWlsZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250VmFyaWFudEJ1aWxkZXIuY3BwCmluZGV4IDkyZmI2
NmY0NDRhYzU3OTlmYTY0NmJjNzk0NGFkMzc5MGE0YzNlMjUuLjU0NjQ4YWUxMTM4NjQwNzljYjE2
Mzc3NWUyYTRjOTgzNGI0NTQzNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250
VmFyaWFudEJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250VmFyaWFudEJ1
aWxkZXIuY3BwCkBAIC00Miw3ICs0Miw3IEBAIEZvbnRWYXJpYW50TGlnYXR1cmVzVmFsdWVzIGV4
dHJhY3RGb250VmFyaWFudExpZ2F0dXJlcyhjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiAKICAgICBp
ZiAoaXM8Q1NTVmFsdWVMaXN0Pih2YWx1ZSkpIHsKICAgICAgICAgZm9yIChhdXRvJiBpdGVtIDog
ZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pih2YWx1ZSkpIHsKLSAgICAgICAgICAgIHN3aXRjaCAoZG93
bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGl0ZW0uZ2V0KCkpLmdldFZhbHVlSUQoKSkgeworICAg
ICAgICAgICAgc3dpdGNoIChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oaXRlbS5nZXQoKSku
dmFsdWVJRCgpKSB7CiAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlTm9Db21tb25MaWdhdHVyZXM6
CiAgICAgICAgICAgICAgICAgY29tbW9uID0gRm9udFZhcmlhbnRMaWdhdHVyZXM6Ok5vOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwpAQCAtNzMsNyArNzMsNyBAQCBGb250VmFyaWFudExpZ2F0dXJl
c1ZhbHVlcyBleHRyYWN0Rm9udFZhcmlhbnRMaWdhdHVyZXMoY29uc3QgQ1NTVmFsdWUmIHZhbHVl
KQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChpczxDU1NQcmltaXRp
dmVWYWx1ZT4odmFsdWUpKSB7Ci0gICAgICAgIHN3aXRjaCAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWU+KHZhbHVlKS5nZXRWYWx1ZUlEKCkpIHsKKyAgICAgICAgc3dpdGNoIChkb3duY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLnZhbHVlSUQoKSkgewogICAgICAgICBjYXNlIENTU1Zh
bHVlTm9ybWFsOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTVmFsdWVOb25l
OgpAQCAtMTAxLDcgKzEwMSw3IEBAIEZvbnRWYXJpYW50TnVtZXJpY1ZhbHVlcyBleHRyYWN0Rm9u
dFZhcmlhbnROdW1lcmljKGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIAogICAgIGlmIChpczxDU1NW
YWx1ZUxpc3Q+KHZhbHVlKSkgewogICAgICAgICBmb3IgKGF1dG8mIGl0ZW0gOiBkb3duY2FzdDxD
U1NWYWx1ZUxpc3Q+KHZhbHVlKSkgewotICAgICAgICAgICAgc3dpdGNoIChkb3duY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZT4oaXRlbS5nZXQoKSkuZ2V0VmFsdWVJRCgpKSB7CisgICAgICAgICAgICBz
d2l0Y2ggKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihpdGVtLmdldCgpKS52YWx1ZUlEKCkp
IHsKICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVMaW5pbmdOdW1zOgogICAgICAgICAgICAgICAg
IGZpZ3VyZSA9IEZvbnRWYXJpYW50TnVtZXJpY0ZpZ3VyZTo6TGluaW5nTnVtYmVyczsKICAgICAg
ICAgICAgICAgICBicmVhazsKQEAgLTEzMiw3ICsxMzIsNyBAQCBGb250VmFyaWFudE51bWVyaWNW
YWx1ZXMgZXh0cmFjdEZvbnRWYXJpYW50TnVtZXJpYyhjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKGlzPENTU1ByaW1pdGl2ZVZh
bHVlPih2YWx1ZSkpCi0gICAgICAgIEFTU0VSVChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4o
dmFsdWUpLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vcm1hbCk7CisgICAgICAgIEFTU0VSVChk
b3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5v
cm1hbCk7CiAKICAgICByZXR1cm4gRm9udFZhcmlhbnROdW1lcmljVmFsdWVzKGZpZ3VyZSwgc3Bh
Y2luZywgZnJhY3Rpb24sIG9yZGluYWwsIHNsYXNoZWRaZXJvKTsKIH0KQEAgLTE0NSw3ICsxNDUs
NyBAQCBGb250VmFyaWFudEVhc3RBc2lhblZhbHVlcyBleHRyYWN0Rm9udFZhcmlhbnRFYXN0QXNp
YW4oY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogCiAgICAgaWYgKGlzPENTU1ZhbHVlTGlzdD4odmFs
dWUpKSB7CiAgICAgICAgIGZvciAoYXV0byYgaXRlbSA6IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4o
dmFsdWUpKSB7Ci0gICAgICAgICAgICBzd2l0Y2ggKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
PihpdGVtLmdldCgpKS5nZXRWYWx1ZUlEKCkpIHsKKyAgICAgICAgICAgIHN3aXRjaCAoZG93bmNh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGl0ZW0uZ2V0KCkpLnZhbHVlSUQoKSkgewogICAgICAgICAg
ICAgY2FzZSBDU1NWYWx1ZUppczc4OgogICAgICAgICAgICAgICAgIHZhcmlhbnQgPSBGb250VmFy
aWFudEVhc3RBc2lhblZhcmlhbnQ6Okppczc4OwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAt
MTc5LDcgKzE3OSw3IEBAIEZvbnRWYXJpYW50RWFzdEFzaWFuVmFsdWVzIGV4dHJhY3RGb250VmFy
aWFudEVhc3RBc2lhbihjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KICAgICB9IGVsc2UgaWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpCi0gICAg
ICAgIEFTU0VSVChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLmdldFZhbHVlSUQo
KSA9PSBDU1NWYWx1ZU5vcm1hbCk7CisgICAgICAgIEFTU0VSVChkb3duY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZT4odmFsdWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vcm1hbCk7CiAKICAgICByZXR1
cm4gRm9udFZhcmlhbnRFYXN0QXNpYW5WYWx1ZXModmFyaWFudCwgd2lkdGgsIHJ1YnkpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvTWVkaWFMaXN0LmNwcAppbmRleCAyOWQ4MjY5MWUyM2MxYTFjZjA1NzhlNjZiZWM4
M2MxODkxMzNiMTVkLi5lODUzODg3MTBmZjQ1YWYyMzU4MzhjZWQxYWE2OTc0YjM2OWQ0YWE2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFMaXN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvTWVkaWFMaXN0LmNwcApAQCAtMjIyLDE1ICsyMjIsMTQgQEAgTWVkaWFMaXN0
Ojp+TWVkaWFMaXN0KCkKIHsKIH0KIAotdm9pZCBNZWRpYUxpc3Q6OnNldE1lZGlhVGV4dChjb25z
dCBTdHJpbmcmIHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPHZvaWQ+IE1l
ZGlhTGlzdDo6c2V0TWVkaWFUZXh0KGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgQ1NTU3R5
bGVTaGVldDo6UnVsZU11dGF0aW9uU2NvcGUgbXV0YXRpb25TY29wZShtX3BhcmVudFJ1bGUpOwot
ICAgIGlmICghbV9tZWRpYVF1ZXJpZXMtPnBhcnNlKHZhbHVlKSkgewotICAgICAgICBlYyA9IFNZ
TlRBWF9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKCFtX21lZGlhUXVlcmll
cy0+cGFyc2UodmFsdWUpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU1lOVEFYX0VSUiB9
OwogICAgIGlmIChtX3BhcmVudFN0eWxlU2hlZXQpCiAgICAgICAgIG1fcGFyZW50U3R5bGVTaGVl
dC0+ZGlkTXV0YXRlKCk7CisgICAgcmV0dXJuIHsgfTsKIH0KIAogU3RyaW5nIE1lZGlhTGlzdDo6
aXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QKQEAgLTI0MSwzMSArMjQwLDMwIEBAIFN0cmluZyBN
ZWRpYUxpc3Q6Oml0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0CiAgICAgcmV0dXJuIFN0cmluZygp
OwogfQogCi12b2lkIE1lZGlhTGlzdDo6ZGVsZXRlTWVkaXVtKGNvbnN0IFN0cmluZyYgbWVkaXVt
LCBFeGNlcHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPHZvaWQ+IE1lZGlhTGlzdDo6ZGVsZXRl
TWVkaXVtKGNvbnN0IFN0cmluZyYgbWVkaXVtKQogewogICAgIENTU1N0eWxlU2hlZXQ6OlJ1bGVN
dXRhdGlvblNjb3BlIG11dGF0aW9uU2NvcGUobV9wYXJlbnRSdWxlKTsKIAogICAgIGJvb2wgc3Vj
Y2VzcyA9IG1fbWVkaWFRdWVyaWVzLT5yZW1vdmUobWVkaXVtKTsKLSAgICBpZiAoIXN1Y2Nlc3Mp
IHsKLSAgICAgICAgZWMgPSBOT1RfRk9VTkRfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQor
ICAgIGlmICghc3VjY2VzcykKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5PVF9GT1VORF9F
UlIgfTsKICAgICBpZiAobV9wYXJlbnRTdHlsZVNoZWV0KQogICAgICAgICBtX3BhcmVudFN0eWxl
U2hlZXQtPmRpZE11dGF0ZSgpOworICAgIHJldHVybiB7IH07CiB9CiAKLXZvaWQgTWVkaWFMaXN0
OjphcHBlbmRNZWRpdW0oY29uc3QgU3RyaW5nJiBtZWRpdW0sIEV4Y2VwdGlvbkNvZGUmIGVjKQor
RXhjZXB0aW9uT3I8dm9pZD4gTWVkaWFMaXN0OjphcHBlbmRNZWRpdW0oY29uc3QgU3RyaW5nJiBt
ZWRpdW0pCiB7CiAgICAgQ1NTU3R5bGVTaGVldDo6UnVsZU11dGF0aW9uU2NvcGUgbXV0YXRpb25T
Y29wZShtX3BhcmVudFJ1bGUpOwogCiAgICAgYm9vbCBzdWNjZXNzID0gbV9tZWRpYVF1ZXJpZXMt
PmFkZChtZWRpdW0pOwogICAgIGlmICghc3VjY2VzcykgewogICAgICAgICAvLyBGSVhNRTogU2hv
dWxkIHRoaXMgcmVhbGx5IGJlIElOVkFMSURfQ0hBUkFDVEVSX0VSUj8KLSAgICAgICAgZWMgPSBJ
TlZBTElEX0NIQVJBQ1RFUl9FUlI7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IElOVkFMSURfQ0hBUkFDVEVSX0VSUiB9OwogICAgIH0KICAgICBpZiAobV9wYXJl
bnRTdHlsZVNoZWV0KQogICAgICAgICBtX3BhcmVudFN0eWxlU2hlZXQtPmRpZE11dGF0ZSgpOwor
ICAgIHJldHVybiB7IH07CiB9CiAKIHZvaWQgTWVkaWFMaXN0OjpyZWF0dGFjaChNZWRpYVF1ZXJ5
U2V0KiBtZWRpYVF1ZXJpZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFM
aXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFMaXN0LmgKaW5kZXggYmYwNzFmZTJmODVl
ZDFiZTg0Y2YzMjI4MWNmMzI4MThlMWRiYjMxMS4uNjcyYWE0YTk5OWMxNzAyN2IwZmRiMzRmMDNm
MGE1OGRlYzZkYmVmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3QuaApAQCAtMjAsMTAgKzIwLDEwIEBA
CiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNsdWRlIDxt
ZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtMzMsOCArMzMsNiBAQCBjbGFzcyBDU1NTdHlsZVNoZWV0OwogY2xhc3MgRG9jdW1lbnQ7
CiBjbGFzcyBNZWRpYVF1ZXJ5OwogCi11c2luZyBFeGNlcHRpb25Db2RlID0gaW50OwotCiBjbGFz
cyBNZWRpYVF1ZXJ5U2V0IGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFRdWVyeVNldD4g
ewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8TWVkaWFRdWVyeVNldD4gY3JlYXRlKCkKQEAgLTk2
LDExICs5NCwxMSBAQCBwdWJsaWM6CiAKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJl
dHVybiBtX21lZGlhUXVlcmllcy0+cXVlcnlWZWN0b3IoKS5zaXplKCk7IH0KICAgICBXRUJDT1JF
X0VYUE9SVCBTdHJpbmcgaXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBkZWxldGVNZWRpdW0oY29uc3QgU3RyaW5nJiBvbGRNZWRpdW0sIEV4Y2VwdGlv
bkNvZGUmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZE1lZGl1bShjb25zdCBTdHJp
bmcmIG5ld01lZGl1bSwgRXhjZXB0aW9uQ29kZSYpOworICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2Vw
dGlvbk9yPHZvaWQ+IGRlbGV0ZU1lZGl1bShjb25zdCBTdHJpbmcmIG9sZE1lZGl1bSk7CisgICAg
V0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8dm9pZD4gYXBwZW5kTWVkaXVtKGNvbnN0IFN0cmlu
ZyYgbmV3TWVkaXVtKTsKIAogICAgIFN0cmluZyBtZWRpYVRleHQoKSBjb25zdCB7IHJldHVybiBt
X21lZGlhUXVlcmllcy0+bWVkaWFUZXh0KCk7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dE1lZGlhVGV4dChjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CisgICAgV0VCQ09SRV9F
WFBPUlQgRXhjZXB0aW9uT3I8dm9pZD4gc2V0TWVkaWFUZXh0KGNvbnN0IFN0cmluZyYpOwogCiAg
ICAgQ1NTUnVsZSogcGFyZW50UnVsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyZW50UnVsZTsgfQog
ICAgIENTU1N0eWxlU2hlZXQqIHBhcmVudFN0eWxlU2hlZXQoKSBjb25zdCB7IHJldHVybiBtX3Bh
cmVudFN0eWxlU2hlZXQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxp
c3QuaWRsIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5pZGwKaW5kZXggYmFmNWM5MzM4
YTFlMjAyZDRlZDY2NTI2ZTJhZjkxOTg3ODcyYTJhYy4uNmQ2ZDNjNDFlMWZkMzMzODU1ZDE3OGMy
NzVkYjg4ZmFhNWRmZDllNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlz
dC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5pZGwKQEAgLTI5LDExICsy
OSwxMSBAQAogICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCiAgICAgSlNDdXN0b21IZWFk
ZXIsCiBdIGludGVyZmFjZSBNZWRpYUxpc3QgewotICAgIFtTZXR0ZXJNYXlUaHJvd0xlZ2FjeUV4
Y2VwdGlvbiwgVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIGF0dHJpYnV0ZSBET01TdHJpbmcgbWVk
aWFUZXh0OworICAgIFtTZXR0ZXJNYXlUaHJvd0V4Y2VwdGlvbiwgVHJlYXROdWxsQXM9RW1wdHlT
dHJpbmddIGF0dHJpYnV0ZSBET01TdHJpbmcgbWVkaWFUZXh0OwogICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKIAogICAgIGdldHRlciBET01TdHJpbmc/IGl0ZW0o
dW5zaWduZWQgbG9uZyBpbmRleCk7CiAKLSAgICBbTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHZv
aWQgZGVsZXRlTWVkaXVtKERPTVN0cmluZyBvbGRNZWRpdW0pOwotICAgIFtNYXlUaHJvd0xlZ2Fj
eUV4Y2VwdGlvbl0gdm9pZCBhcHBlbmRNZWRpdW0oRE9NU3RyaW5nIG5ld01lZGl1bSk7CisgICAg
W01heVRocm93RXhjZXB0aW9uXSB2b2lkIGRlbGV0ZU1lZGl1bShET01TdHJpbmcgb2xkTWVkaXVt
KTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgYXBwZW5kTWVkaXVtKERPTVN0cmluZyBu
ZXdNZWRpdW0pOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5
RXZhbHVhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNw
cAppbmRleCA3NWJiNzQ2ZGNjNGIzYmYzYWExOGNkZGJjNGM5MjJmOWI1MTAwM2Y4Li4yYzFjZDIz
ODhjYTY5NDI0MTlmNTFhZjdhOGI2OGUwNjJlYmZiOGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCkBAIC0yMDgsNyArMjA4LDcgQEAgc3RhdGljIE9wdGlv
bmFsPGRvdWJsZT4gZG91YmxlVmFsdWUoQ1NTVmFsdWUqIHZhbHVlKQogewogICAgIGlmICghaXM8
Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSB8fCAhZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+
KCp2YWx1ZSkuaXNOdW1iZXIoKSkKICAgICAgICAgcmV0dXJuIE51bGxvcHQ7Ci0gICAgcmV0dXJu
IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUpLmdldERvdWJsZVZhbHVlKENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKKyAgICByZXR1cm4gZG93bmNhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWU+KCp2YWx1ZSkuZG91YmxlVmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1C
RVIpOwogfQogCiBzdGF0aWMgYm9vbCB6ZXJvRXZhbHVhdGUoQ1NTVmFsdWUqIHZhbHVlLCBNZWRp
YUZlYXR1cmVQcmVmaXggb3ApCkBAIC0yNDUsNyArMjQ1LDcgQEAgc3RhdGljIGJvb2wgY29sb3JH
YW11dEV2YWx1YXRlKENTU1ZhbHVlKiB2YWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9u
RGF0YSYKICAgICBpZiAoIXZhbHVlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIHN3aXRj
aCAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YWx1ZSkuZ2V0VmFsdWVJRCgpKSB7Cisg
ICAgc3dpdGNoIChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVlKS52YWx1ZUlEKCkp
IHsKICAgICBjYXNlIENTU1ZhbHVlU3JnYjoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgY2Fz
ZSBDU1NWYWx1ZVAzOgpAQCAtMjcxLDcgKzI3MSw3IEBAIHN0YXRpYyBib29sIGludmVydGVkQ29s
b3JzRXZhbHVhdGUoQ1NTVmFsdWUqIHZhbHVlLCBjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25E
CiAgICAgYm9vbCBpc0ludmVydGVkID0gc2NyZWVuSGFzSW52ZXJ0ZWRDb2xvcnMoKTsKICAgICBp
ZiAoIXZhbHVlKQogICAgICAgICByZXR1cm4gaXNJbnZlcnRlZDsKLSAgICByZXR1cm4gZG93bmNh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YWx1ZSkuZ2V0VmFsdWVJRCgpID09IChpc0ludmVydGVk
ID8gQ1NTVmFsdWVJbnZlcnRlZCA6IENTU1ZhbHVlTm9uZSk7CisgICAgcmV0dXJuIGRvd25jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUpLnZhbHVlSUQoKSA9PSAoaXNJbnZlcnRlZCA/IENT
U1ZhbHVlSW52ZXJ0ZWQgOiBDU1NWYWx1ZU5vbmUpOwogfQogCiBzdGF0aWMgYm9vbCBvcmllbnRh
dGlvbkV2YWx1YXRlKENTU1ZhbHVlKiB2YWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9u
RGF0YSYsIEZyYW1lJiBmcmFtZSwgTWVkaWFGZWF0dXJlUHJlZml4KQpAQCAtMjg4LDcgKzI4OCw3
IEBAIHN0YXRpYyBib29sIG9yaWVudGF0aW9uRXZhbHVhdGUoQ1NTVmFsdWUqIHZhbHVlLCBjb25z
dCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhCiAgICAgICAgIHJldHVybiBoZWlnaHQgPj0gMCAm
JiB3aWR0aCA+PSAwOwogICAgIH0KIAotICAgIGF1dG8ga2V5d29yZCA9IGRvd25jYXN0PENTU1By
aW1pdGl2ZVZhbHVlPigqdmFsdWUpLmdldFZhbHVlSUQoKTsKKyAgICBhdXRvIGtleXdvcmQgPSBk
b3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVlKS52YWx1ZUlEKCk7CiAgICAgaWYgKHdp
ZHRoID4gaGVpZ2h0KSAvLyBTcXVhcmUgdmlld3BvcnQgaXMgcG9ydHJhaXQuCiAgICAgICAgIHJl
dHVybiBrZXl3b3JkID09IENTU1ZhbHVlTGFuZHNjYXBlOwogICAgIHJldHVybiBrZXl3b3JkID09
IENTU1ZhbHVlUG9ydHJhaXQ7CkBAIC0zNDksNyArMzQ5LDcgQEAgc3RhdGljIGJvb2wgZXZhbHVh
dGVSZXNvbHV0aW9uKENTU1ZhbHVlKiB2YWx1ZSwgRnJhbWUmIGZyYW1lLCBNZWRpYUZlYXR1cmVQ
cmVmaXgKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgYXV0byYgcmVzb2x1dGlvbiA9IGRv
d25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUpOwotICAgIHJldHVybiBjb21wYXJlVmFs
dWUoZGV2aWNlU2NhbGVGYWN0b3IsIHJlc29sdXRpb24uaXNOdW1iZXIoKSA/IHJlc29sdXRpb24u
Z2V0RmxvYXRWYWx1ZSgpIDogcmVzb2x1dGlvbi5nZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfRFBQWCksIG9wKTsKKyAgICByZXR1cm4gY29tcGFyZVZhbHVlKGRldmljZVNjYWxl
RmFjdG9yLCByZXNvbHV0aW9uLmlzTnVtYmVyKCkgPyByZXNvbHV0aW9uLmZsb2F0VmFsdWUoKSA6
IHJlc29sdXRpb24uZmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RQUFgpLCBvcCk7
CiB9CiAKIHN0YXRpYyBib29sIGRldmljZVBpeGVsUmF0aW9FdmFsdWF0ZShDU1NWYWx1ZSogdmFs
dWUsIGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmLCBGcmFtZSYgZnJhbWUsIE1lZGlh
RmVhdHVyZVByZWZpeCBvcCkKQEAgLTM4Miw3ICszODIsNyBAQCBzdGF0aWMgYm9vbCBjb21wdXRl
TGVuZ3RoKENTU1ZhbHVlKiB2YWx1ZSwgYm9vbCBzdHJpY3QsIGNvbnN0IENTU1RvTGVuZ3RoQ29u
dmVycwogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWU+KCp2YWx1ZSk7CiAKICAgICBpZiAocHJpbWl0aXZlVmFsdWUuaXNOdW1iZXIoKSkgewotICAg
ICAgICByZXN1bHQgPSBwcmltaXRpdmVWYWx1ZS5nZXRJbnRWYWx1ZSgpOworICAgICAgICByZXN1
bHQgPSBwcmltaXRpdmVWYWx1ZS5pbnRWYWx1ZSgpOwogICAgICAgICByZXR1cm4gIXN0cmljdCB8
fCAhcmVzdWx0OwogICAgIH0KIApAQCAtNTg3LDcgKzU4Nyw3IEBAIHN0YXRpYyBib29sIHZpZXdN
b2RlRXZhbHVhdGUoQ1NTVmFsdWUqIHZhbHVlLCBjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25E
YXRhJiwKICAgICBpZiAoIXZhbHVlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGF1dG8g
a2V5d29yZCA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUpLmdldFZhbHVlSUQo
KTsKKyAgICBhdXRvIGtleXdvcmQgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVl
KS52YWx1ZUlEKCk7CiAKICAgICBzd2l0Y2ggKGZyYW1lLnBhZ2UoKS0+dmlld01vZGUoKSkgewog
ICAgIGNhc2UgUGFnZTo6Vmlld01vZGVXaW5kb3dlZDoKQEAgLTYyNCw3ICs2MjQsNyBAQCBzdGF0
aWMgYm9vbCBob3ZlckV2YWx1YXRlKENTU1ZhbHVlKiB2YWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGhD
b252ZXJzaW9uRGF0YSYsIEZyYQogI2VuZGlmCiAgICAgfQogCi0gICAgYXV0byBrZXl3b3JkID0g
ZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YWx1ZSkuZ2V0VmFsdWVJRCgpOworICAgIGF1
dG8ga2V5d29yZCA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUpLnZhbHVlSUQo
KTsKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIHJldHVybiBrZXl3b3JkID09IENTU1Zh
bHVlTm9uZTsKICNlbHNlCkBAIC02NDIsNyArNjQyLDcgQEAgc3RhdGljIGJvb2wgcG9pbnRlckV2
YWx1YXRlKENTU1ZhbHVlKiB2YWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYs
IEYKICAgICBpZiAoIWlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpCiAgICAgICAgIHJldHVy
biB0cnVlOwogCi0gICAgYXV0byBrZXl3b3JkID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+
KCp2YWx1ZSkuZ2V0VmFsdWVJRCgpOworICAgIGF1dG8ga2V5d29yZCA9IGRvd25jYXN0PENTU1By
aW1pdGl2ZVZhbHVlPigqdmFsdWUpLnZhbHVlSUQoKTsKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRT
KQogICAgIHJldHVybiBrZXl3b3JkID09IENTU1ZhbHVlQ29hcnNlOwogI2Vsc2UKQEAgLTY3MSw3
ICs2NzEsNyBAQCBzdGF0aWMgYm9vbCBwcmVmZXJzUmVkdWNlZE1vdGlvbkV2YWx1YXRlKENTU1Zh
bHVlKiB2YWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZQogICAgIGlmICghdmFsdWUpCiAgICAg
ICAgIHJldHVybiB1c2VyUHJlZmVyc1JlZHVjZWRNb3Rpb247CiAKLSAgICByZXR1cm4gZG93bmNh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YWx1ZSkuZ2V0VmFsdWVJRCgpID09ICh1c2VyUHJlZmVy
c1JlZHVjZWRNb3Rpb24gPyBDU1NWYWx1ZVJlZHVjZSA6IENTU1ZhbHVlRGVmYXVsdCk7CisgICAg
cmV0dXJuIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUpLnZhbHVlSUQoKSA9PSAo
dXNlclByZWZlcnNSZWR1Y2VkTW90aW9uID8gQ1NTVmFsdWVSZWR1Y2UgOiBDU1NWYWx1ZURlZmF1
bHQpOwogfQogCiAvLyBVc2UgdGhpcyBmdW5jdGlvbiBpbnN0ZWFkIG9mIGNhbGxpbmcgYWRkIGRp
cmVjdGx5IHRvIGF2b2lkIGlubGluaW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L01lZGlhUXVlcnlFeHAuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFeHAuY3Bw
CmluZGV4IDgwZjJmNzdhMDExYjZlMDVmNDg4ODdlOWFhNjU5MGM4MGNlNTRiOGYuLjZiZWQ5NGE3
YzFhODU5N2UwYmE0YmMzNGZiYWU2YmI3NTM1MzAwNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9NZWRpYVF1ZXJ5RXhwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFR
dWVyeUV4cC5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNGZWF0
dXJlVmFsaWRXaXRoSWRlbnRpZmllcihjb25zdCBBdG9taWNTdHJpbmcmIG1lZGlhRmVhdHVyZQog
CiBzdGF0aWMgaW5saW5lIGJvb2wgaXNGZWF0dXJlVmFsaWRXaXRoTm9uTmVnYXRpdmVMZW5ndGhP
ck51bWJlcihjb25zdCBBdG9taWNTdHJpbmcmIG1lZGlhRmVhdHVyZSwgY29uc3QgQ1NTUGFyc2Vy
VmFsdWUmIHZhbHVlKQogewotICAgIGlmICghKENTU1ByaW1pdGl2ZVZhbHVlOjppc0xlbmd0aCh2
YWx1ZS51bml0KSB8fCB2YWx1ZS51bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVS
KSB8fCB2YWx1ZS5mVmFsdWUgPCAwKQorICAgIGlmICghKENTU1ByaW1pdGl2ZVZhbHVlOjppc0xl
bmd0aChzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzPih2YWx1ZS51bml0
KSkgfHwgdmFsdWUudW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikgfHwgdmFs
dWUuZlZhbHVlIDwgMCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIG1lZGlh
RmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6aGVpZ2h0CkBAIC0xNDgsNyArMTQ4LDcgQEAg
c3RhdGljIGlubGluZSBib29sIGlzRmVhdHVyZVZhbGlkV2l0aE5vbk5lZ2F0aXZlTGVuZ3RoT3JO
dW1iZXIoY29uc3QgQXRvbWljU3RyaW4KIAogc3RhdGljIGlubGluZSBib29sIGlzRmVhdHVyZVZh
bGlkV2l0aERlbnNpdHkoY29uc3QgQXRvbWljU3RyaW5nJiBtZWRpYUZlYXR1cmUsIGNvbnN0IENT
U1BhcnNlclZhbHVlJiB2YWx1ZSkKIHsKLSAgICBpZiAoIUNTU1ByaW1pdGl2ZVZhbHVlOjppc1Jl
c29sdXRpb24odmFsdWUudW5pdCkgfHwgdmFsdWUuZlZhbHVlIDw9IDApCisgICAgaWYgKCFDU1NQ
cmltaXRpdmVWYWx1ZTo6aXNSZXNvbHV0aW9uKHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
OjpVbml0VHlwZXM+KHZhbHVlLnVuaXQpKSB8fCB2YWx1ZS5mVmFsdWUgPD0gMCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIG1lZGlhRmVhdHVyZSA9PSBNZWRpYUZlYXR1cmVO
YW1lczo6cmVzb2x1dGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5
U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlT
ZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCA5OWZjNWRkMmY4ZTcyODA5NDdmNjc5ZjQy
ZmFiMGI2MzY5NmNlMDM4Li5mZDVlMWI0NzdlMTcyMDAyNTNkYzAxN2RkYjM1NDExOGFjZTJhMDhl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xh
cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURl
Y2xhcmF0aW9uLmNwcApAQCAtMTQ4LDE3ICsxNDgsMTggQEAgU3RyaW5nIFByb3BlcnR5U2V0Q1NT
U3R5bGVEZWNsYXJhdGlvbjo6Y3NzVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcHJvcGVydHlT
ZXQtPmFzVGV4dCgpOwogfQogCi12b2lkIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6
c2V0Q3NzVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIEV4Y2VwdGlvbkNvZGUmKQorRXhjZXB0aW9u
T3I8dm9pZD4gUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpzZXRDc3NUZXh0KGNvbnN0
IFN0cmluZyYgdGV4dCkKIHsKICAgICBTdHlsZUF0dHJpYnV0ZU11dGF0aW9uU2NvcGUgbXV0YXRp
b25TY29wZSh0aGlzKTsKICAgICBpZiAoIXdpbGxNdXRhdGUoKSkKLSAgICAgICAgcmV0dXJuOwor
ICAgICAgICByZXR1cm4geyB9OwogCiAgICAgYm9vbCBjaGFuZ2VkID0gbV9wcm9wZXJ0eVNldC0+
cGFyc2VEZWNsYXJhdGlvbih0ZXh0LCBjc3NQYXJzZXJDb250ZXh0KCksIGNvbnRleHRTdHlsZVNo
ZWV0KCkpOwogCiAgICAgZGlkTXV0YXRlKGNoYW5nZWQgPyBQcm9wZXJ0eUNoYW5nZWQgOiBOb0No
YW5nZXMpOwogCi0gICAgbXV0YXRpb25TY29wZS5lbnF1ZXVlTXV0YXRpb25SZWNvcmQoKTsgICAg
CisgICAgbXV0YXRpb25TY29wZS5lbnF1ZXVlTXV0YXRpb25SZWNvcmQoKTsKKyAgICByZXR1cm4g
eyB9OwogfQogCiBSZWZQdHI8Q1NTVmFsdWU+IFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlv
bjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkKQEAgLTIx
NCw3ICsyMTUsNyBAQCBib29sIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6aXNQcm9w
ZXJ0eUltcGxpY2l0KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYQogICAgIHJldHVybiBtX3Byb3Bl
cnR5U2V0LT5pc1Byb3BlcnR5SW1wbGljaXQocHJvcGVydHlJRCk7CiB9CiAKLXZvaWQgUHJvcGVy
dHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpzZXRQcm9wZXJ0eShjb25zdCBTdHJpbmcmIHByb3Bl
cnR5TmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBwcmlvcml0eSwgRXhj
ZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRpb25Pcjx2b2lkPiBQcm9wZXJ0eVNldENTU1N0eWxlRGVj
bGFyYXRpb246OnNldFByb3BlcnR5KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBjb25zdCBT
dHJpbmcmIHZhbHVlLCBjb25zdCBTdHJpbmcmIHByaW9yaXR5KQogewogICAgIFN0eWxlQXR0cmli
dXRlTXV0YXRpb25TY29wZSBtdXRhdGlvblNjb3BlKHRoaXMpOwogICAgIApAQCAtMjIyLDE2ICsy
MjMsMTQgQEAgdm9pZCBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OnNldFByb3BlcnR5
KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBjb24KICAgICBpZiAoaXNDdXN0b21Qcm9wZXJ0
eU5hbWUocHJvcGVydHlOYW1lKSkKICAgICAgICAgcHJvcGVydHlJRCA9IENTU1Byb3BlcnR5Q3Vz
dG9tOwogICAgIGlmICghcHJvcGVydHlJRCkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1
cm4geyB9OwogCiAgICAgaWYgKCF3aWxsTXV0YXRlKCkpCi0gICAgICAgIHJldHVybjsKKyAgICAg
ICAgcmV0dXJuIHsgfTsKIAogICAgIGJvb2wgaW1wb3J0YW50ID0gZXF1YWxJZ25vcmluZ0FTQ0lJ
Q2FzZShwcmlvcml0eSwgImltcG9ydGFudCIpOwogICAgIGlmICghaW1wb3J0YW50ICYmICFwcmlv
cml0eS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGVjID0gMDsKKyAgICAgICAg
cmV0dXJuIHsgfTsKIAogICAgIGJvb2wgY2hhbmdlZDsKICAgICBpZiAocHJvcGVydHlJRCA9PSBD
U1NQcm9wZXJ0eUN1c3RvbSkKQEAgLTI0Niw5ICsyNDUsMTEgQEAgdm9pZCBQcm9wZXJ0eVNldENT
U1N0eWxlRGVjbGFyYXRpb246OnNldFByb3BlcnR5KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1l
LCBjb24KICAgICAgICAgLy8gc2VlIDxodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03Mjk2Pi4KICAgICAgICAgbXV0YXRpb25TY29wZS5lbnF1ZXVlTXV0YXRpb25SZWNvcmQo
KTsKICAgICB9CisKKyAgICByZXR1cm4geyB9OwogfQogCi1TdHJpbmcgUHJvcGVydHlTZXRDU1NT
dHlsZURlY2xhcmF0aW9uOjpyZW1vdmVQcm9wZXJ0eShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFt
ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRpb25PcjxTdHJpbmc+IFByb3BlcnR5U2V0Q1NT
U3R5bGVEZWNsYXJhdGlvbjo6cmVtb3ZlUHJvcGVydHkoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5h
bWUpCiB7CiAgICAgU3R5bGVBdHRyaWJ1dGVNdXRhdGlvblNjb3BlIG11dGF0aW9uU2NvcGUodGhp
cyk7CiAgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEID0gY3NzUHJvcGVydHlJRChwcm9wZXJ0
eU5hbWUpOwpAQCAtMjYwLDcgKzI2MSw2IEBAIFN0cmluZyBQcm9wZXJ0eVNldENTU1N0eWxlRGVj
bGFyYXRpb246OnJlbW92ZVByb3BlcnR5KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lCiAgICAg
aWYgKCF3aWxsTXV0YXRlKCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIGVjID0g
MDsKICAgICBTdHJpbmcgcmVzdWx0OwogICAgIGJvb2wgY2hhbmdlZCA9IHByb3BlcnR5SUQgIT0g
Q1NTUHJvcGVydHlDdXN0b20gPyBtX3Byb3BlcnR5U2V0LT5yZW1vdmVQcm9wZXJ0eShwcm9wZXJ0
eUlELCAmcmVzdWx0KSA6IG1fcHJvcGVydHlTZXQtPnJlbW92ZUN1c3RvbVByb3BlcnR5KHByb3Bl
cnR5TmFtZSwgJnJlc3VsdCk7CiAKQEAgLTI2OCwxNiArMjY4LDEyIEBAIFN0cmluZyBQcm9wZXJ0
eVNldENTU1N0eWxlRGVjbGFyYXRpb246OnJlbW92ZVByb3BlcnR5KGNvbnN0IFN0cmluZyYgcHJv
cGVydHlOYW1lCiAKICAgICBpZiAoY2hhbmdlZCkKICAgICAgICAgbXV0YXRpb25TY29wZS5lbnF1
ZXVlTXV0YXRpb25SZWNvcmQoKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBXVEZN
b3ZlKHJlc3VsdCk7CiB9CiAKIFJlZlB0cjxDU1NWYWx1ZT4gUHJvcGVydHlTZXRDU1NTdHlsZURl
Y2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlJRCBwcm9w
ZXJ0eUlEKQogewotICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWUgPSBtX3Byb3BlcnR5U2V0LT5n
ZXRQcm9wZXJ0eUNTU1ZhbHVlKHByb3BlcnR5SUQpOwotICAgIGlmICh2YWx1ZSkKLSAgICAgICAg
cmV0dXJuIHZhbHVlOwotCi0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIG1fcHJvcGVy
dHlTZXQtPmdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydHlJRCk7CiB9CiAKIFN0cmluZyBQcm9w
ZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQ
cm9wZXJ0eUlEIHByb3BlcnR5SUQpCkBAIC0yODksMTMgKzI4NSwxMiBAQCBTdHJpbmcgUHJvcGVy
dHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJv
cGVydHlJRCBwcgogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAotYm9vbCBQcm9wZXJ0eVNldENT
U1N0eWxlRGVjbGFyYXRpb246OnNldFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlJRCBwcm9w
ZXJ0eUlELCBjb25zdCBTdHJpbmcmIHZhbHVlLCBib29sIGltcG9ydGFudCwgRXhjZXB0aW9uQ29k
ZSYgZWMpCitFeGNlcHRpb25Pcjxib29sPiBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246
OnNldFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBjb25zdCBTdHJp
bmcmIHZhbHVlLCBib29sIGltcG9ydGFudCkKIHsgCiAgICAgU3R5bGVBdHRyaWJ1dGVNdXRhdGlv
blNjb3BlIG11dGF0aW9uU2NvcGUodGhpcyk7CiAgICAgaWYgKCF3aWxsTXV0YXRlKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIGVjID0gMDsKICAgICBib29sIGNoYW5nZWQgPSBtX3By
b3BlcnR5U2V0LT5zZXRQcm9wZXJ0eShwcm9wZXJ0eUlELCB2YWx1ZSwgaW1wb3J0YW50LCBjc3NQ
YXJzZXJDb250ZXh0KCksIGNvbnRleHRTdHlsZVNoZWV0KCkpOwogCiAgICAgZGlkTXV0YXRlKGNo
YW5nZWQgPyBQcm9wZXJ0eUNoYW5nZWQgOiBOb0NoYW5nZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5oCmluZGV4IDg3NWU5OGRj
M2VhNWQ3MWJmMGMyZjZhNTdhMmViODEzMWMxYjVlY2UuLjVhYmQwOTc0ZjVmYmE3YjE2ZmJhZTA2
MmVlMDM4OGI0OGM4YWE4MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0
eVNldENTU1N0eWxlRGVjbGFyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVy
dHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmgKQEAgLTIzLDggKzIzLDcgQEAKICAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAogICovCiAKLSNpZm5kZWYgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uX2gKLSNk
ZWZpbmUgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uX2gKKyNwcmFnbWEgb25jZQogCiAj
aW5jbHVkZSAiQ1NTUGFyc2VyTW9kZS5oIgogI2luY2x1ZGUgIkNTU1N0eWxlRGVjbGFyYXRpb24u
aCIKQEAgLTQ0LDE0ICs0MywyMyBAQCBjbGFzcyBTdHlsZWRFbGVtZW50OwogY2xhc3MgUHJvcGVy
dHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uIDogcHVibGljIENTU1N0eWxlRGVjbGFyYXRpb24gewog
cHVibGljOgogICAgIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbihNdXRhYmxlU3R5bGVQ
cm9wZXJ0aWVzKiBwcm9wZXJ0eVNldCkgOiBtX3Byb3BlcnR5U2V0KHByb3BlcnR5U2V0KSB7IH0K
LSAgICAKKwogICAgIHZpcnR1YWwgdm9pZCBjbGVhclBhcmVudEVsZW1lbnQoKSB7IEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOyB9CisKICAgICBTdHlsZVNoZWV0Q29udGVudHMqIGNvbnRleHRTdHlsZVNo
ZWV0KCkgY29uc3Q7Ci0gICAgCisKK3Byb3RlY3RlZDoKKyAgICBlbnVtIE11dGF0aW9uVHlwZSB7
IE5vQ2hhbmdlcywgUHJvcGVydHlDaGFuZ2VkIH07CisKKyAgICB2aXJ0dWFsIENTU1BhcnNlckNv
bnRleHQgY3NzUGFyc2VyQ29udGV4dCgpIGNvbnN0OworCisgICAgTXV0YWJsZVN0eWxlUHJvcGVy
dGllcyogbV9wcm9wZXJ0eVNldDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SGFzaE1hcDxDU1NWYWx1
ZSosIFJlZlB0cjxDU1NWYWx1ZT4+PiBtX2Nzc29tQ1NTVmFsdWVDbG9uZXM7CisKK3ByaXZhdGU6
CiAgICAgdm9pZCByZWYoKSBvdmVycmlkZTsKICAgICB2b2lkIGRlcmVmKCkgb3ZlcnJpZGU7CiAK
LXByaXZhdGU6CiAgICAgQ1NTUnVsZSogcGFyZW50UnVsZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG51bGxwdHI7IH0KICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCBmaW5hbDsKICAgICBT
dHJpbmcgaXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QgZmluYWw7CkBAIC02MCwzMCArNjgsMjMg
QEAgcHJpdmF0ZToKICAgICBTdHJpbmcgZ2V0UHJvcGVydHlQcmlvcml0eShjb25zdCBTdHJpbmcm
IHByb3BlcnR5TmFtZSkgZmluYWw7CiAgICAgU3RyaW5nIGdldFByb3BlcnR5U2hvcnRoYW5kKGNv
bnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKSBmaW5hbDsKICAgICBib29sIGlzUHJvcGVydHlJbXBs
aWNpdChjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkgZmluYWw7Ci0gICAgdm9pZCBzZXRQcm9w
ZXJ0eShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgY29u
c3QgU3RyaW5nJiBwcmlvcml0eSwgRXhjZXB0aW9uQ29kZSYpIGZpbmFsOwotICAgIFN0cmluZyBy
ZW1vdmVQcm9wZXJ0eShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgRXhjZXB0aW9uQ29kZSYp
IGZpbmFsOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFByb3BlcnR5KGNvbnN0IFN0cmluZyYg
cHJvcGVydHlOYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBjb25zdCBTdHJpbmcmIHByaW9yaXR5
KSBmaW5hbDsKKyAgICBFeGNlcHRpb25PcjxTdHJpbmc+IHJlbW92ZVByb3BlcnR5KGNvbnN0IFN0
cmluZyYgcHJvcGVydHlOYW1lKSBmaW5hbDsKICAgICBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0IGZp
bmFsOwotICAgIHZvaWQgc2V0Q3NzVGV4dChjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJikg
ZmluYWw7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0Q3NzVGV4dChjb25zdCBTdHJpbmcmKSBm
aW5hbDsKICAgICBSZWZQdHI8Q1NTVmFsdWU+IGdldFByb3BlcnR5Q1NTVmFsdWVJbnRlcm5hbChD
U1NQcm9wZXJ0eUlEKSBmaW5hbDsKICAgICBTdHJpbmcgZ2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5SUQpIGZpbmFsOwotICAgIGJvb2wgc2V0UHJvcGVydHlJbnRlcm5hbChDU1NQ
cm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIHZhbHVlLCBib29sIGltcG9ydGFudCwgRXhjZXB0aW9u
Q29kZSYpIGZpbmFsOworICAgIEV4Y2VwdGlvbk9yPGJvb2w+IHNldFByb3BlcnR5SW50ZXJuYWwo
Q1NTUHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQpIGZpbmFs
OwogICAgIAogICAgIFJlZjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBjb3B5UHJvcGVydGllcygp
IGNvbnN0IGZpbmFsOwogCiAgICAgQ1NTVmFsdWUqIGNsb25lQW5kQ2FjaGVGb3JDU1NPTShDU1NW
YWx1ZSopOwogICAgIAotcHJvdGVjdGVkOgotICAgIGVudW0gTXV0YXRpb25UeXBlIHsgTm9DaGFu
Z2VzLCBQcm9wZXJ0eUNoYW5nZWQgfTsKICAgICB2aXJ0dWFsIGJvb2wgd2lsbE11dGF0ZSgpIFdB
Uk5fVU5VU0VEX1JFVFVSTiB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZE11
dGF0ZShNdXRhdGlvblR5cGUpIHsgfQotICAgIHZpcnR1YWwgQ1NTUGFyc2VyQ29udGV4dCBjc3NQ
YXJzZXJDb250ZXh0KCkgY29uc3Q7Ci0KLSAgICBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzKiBtX3By
b3BlcnR5U2V0OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxIYXNoTWFwPENTU1ZhbHVlKiwgUmVmUHRy
PENTU1ZhbHVlPj4+IG1fY3Nzb21DU1NWYWx1ZUNsb25lczsKIH07CiAKLWNsYXNzIFN0eWxlUnVs
ZUNTU1N0eWxlRGVjbGFyYXRpb24gZmluYWwgOiBwdWJsaWMgUHJvcGVydHlTZXRDU1NTdHlsZURl
Y2xhcmF0aW9uCi17CitjbGFzcyBTdHlsZVJ1bGVDU1NTdHlsZURlY2xhcmF0aW9uIGZpbmFsIDog
cHVibGljIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbiB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFJlZjxTdHlsZVJ1bGVDU1NTdHlsZURlY2xhcmF0aW9uPiBjcmVhdGUoTXV0YWJsZVN0eWxl
UHJvcGVydGllcyYgcHJvcGVydHlTZXQsIENTU1J1bGUmIHBhcmVudFJ1bGUpCiAgICAgewpAQCAt
OTEsNyArOTIsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIHZpcnR1YWwgflN0eWxlUnVsZUNTU1N0
eWxlRGVjbGFyYXRpb24oKTsKIAotICAgIHZvaWQgY2xlYXJQYXJlbnRSdWxlKCkgeyBtX3BhcmVu
dFJ1bGUgPSAwOyB9CisgICAgdm9pZCBjbGVhclBhcmVudFJ1bGUoKSB7IG1fcGFyZW50UnVsZSA9
IG51bGxwdHI7IH0KICAgICAKICAgICB2b2lkIHJlZigpIGZpbmFsOwogICAgIHZvaWQgZGVyZWYo
KSBmaW5hbDsKQEAgLTExMywxOSArMTE0LDE4IEBAIHByaXZhdGU6CiAgICAgQ1NTUnVsZSogbV9w
YXJlbnRSdWxlOwogfTsKIAotY2xhc3MgSW5saW5lQ1NTU3R5bGVEZWNsYXJhdGlvbiBmaW5hbCA6
IHB1YmxpYyBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24KLXsKK2NsYXNzIElubGluZUNT
U1N0eWxlRGVjbGFyYXRpb24gZmluYWwgOiBwdWJsaWMgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xh
cmF0aW9uIHsKIHB1YmxpYzoKICAgICBJbmxpbmVDU1NTdHlsZURlY2xhcmF0aW9uKE11dGFibGVT
dHlsZVByb3BlcnRpZXMqIHByb3BlcnR5U2V0LCBTdHlsZWRFbGVtZW50KiBwYXJlbnRFbGVtZW50
KQogICAgICAgICA6IFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbihwcm9wZXJ0eVNldCkK
ICAgICAgICAgLCBtX3BhcmVudEVsZW1lbnQocGFyZW50RWxlbWVudCkgCiAgICAgewogICAgIH0K
LSAgICAKKwogcHJpdmF0ZToKICAgICBDU1NTdHlsZVNoZWV0KiBwYXJlbnRTdHlsZVNoZWV0KCkg
Y29uc3QgZmluYWw7CiAgICAgU3R5bGVkRWxlbWVudCogcGFyZW50RWxlbWVudCgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1fcGFyZW50RWxlbWVudDsgfQotICAgIHZvaWQgY2xlYXJQYXJlbnRFbGVt
ZW50KCkgZmluYWwgeyBtX3BhcmVudEVsZW1lbnQgPSAwOyB9CisgICAgdm9pZCBjbGVhclBhcmVu
dEVsZW1lbnQoKSBmaW5hbCB7IG1fcGFyZW50RWxlbWVudCA9IG51bGxwdHI7IH0KIAogICAgIHZv
aWQgZGlkTXV0YXRlKE11dGF0aW9uVHlwZSkgZmluYWw7CiAgICAgQ1NTUGFyc2VyQ29udGV4dCBj
c3NQYXJzZXJDb250ZXh0KCkgY29uc3QgZmluYWw7CkBAIC0xMzQsNSArMTM0LDMgQEAgcHJpdmF0
ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKaW5kZXggMWVmNjU5NjJlZWY5M2I2YzdjN2Ez
ZmEyZTBlNTg1MmY5NDJmZjJjMC4uNDc4NjMwYjY1MmE5ZTcyZTBmMmYyOWY2NzI3OGRmYTY0M2Ix
MmMyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaApAQCAt
MTg3LDcgKzE4Nyw3IEBAIGlubGluZSBMZW5ndGggU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252
ZXJ0TGVuZ3RoKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsCiAgICAgfQogCiAgICAgaWYg
KHByaW1pdGl2ZVZhbHVlLmlzUGVyY2VudGFnZSgpKQotICAgICAgICByZXR1cm4gTGVuZ3RoKHBy
aW1pdGl2ZVZhbHVlLmdldERvdWJsZVZhbHVlKCksIFBlcmNlbnQpOworICAgICAgICByZXR1cm4g
TGVuZ3RoKHByaW1pdGl2ZVZhbHVlLmRvdWJsZVZhbHVlKCksIFBlcmNlbnQpOwogCiAgICAgaWYg
KHByaW1pdGl2ZVZhbHVlLmlzQ2FsY3VsYXRlZFBlcmNlbnRhZ2VXaXRoTGVuZ3RoKCkpCiAgICAg
ICAgIHJldHVybiBMZW5ndGgocHJpbWl0aXZlVmFsdWUuY3NzQ2FsY1ZhbHVlKCktPmNyZWF0ZUNh
bGN1bGF0aW9uVmFsdWUoY29udmVyc2lvbkRhdGEpKTsKQEAgLTE5OCw3ICsxOTgsNyBAQCBpbmxp
bmUgTGVuZ3RoIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydExlbmd0aChTdHlsZVJlc29s
dmVyJiBzdHlsZVJlc29sdmVyLAogCiBpbmxpbmUgTGVuZ3RoIFN0eWxlQnVpbGRlckNvbnZlcnRl
cjo6Y29udmVydExlbmd0aE9yQXV0byhTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBDU1NW
YWx1ZSYgdmFsdWUpCiB7Ci0gICAgaWYgKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1
ZSkuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlQXV0bykKKyAgICBpZiAoZG93bmNhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWU+KHZhbHVlKS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVBdXRvKQogICAgICAgICBy
ZXR1cm4gTGVuZ3RoKEF1dG8pOwogICAgIHJldHVybiBjb252ZXJ0TGVuZ3RoKHN0eWxlUmVzb2x2
ZXIsIHZhbHVlKTsKIH0KQEAgLTIwNiw3ICsyMDYsNyBAQCBpbmxpbmUgTGVuZ3RoIFN0eWxlQnVp
bGRlckNvbnZlcnRlcjo6Y29udmVydExlbmd0aE9yQXV0byhTdHlsZVJlc29sdmVyJiBzdHlsZVJl
cwogaW5saW5lIExlbmd0aCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMZW5ndGhTaXpp
bmcoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAg
IGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVl
KTsKLSAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQoKSkgeworICAgIHN3aXRj
aCAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpKSB7CiAgICAgY2FzZSBDU1NWYWx1ZUludmFsaWQ6
CiAgICAgICAgIHJldHVybiBjb252ZXJ0TGVuZ3RoKHN0eWxlUmVzb2x2ZXIsIHZhbHVlKTsKICAg
ICBjYXNlIENTU1ZhbHVlSW50cmluc2ljOgpAQCAtMjMxLDcgKzIzMSw3IEBAIGlubGluZSBMZW5n
dGggU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TGVuZ3RoU2l6aW5nKFN0eWxlUmVzb2x2
ZXImIHN0eWxlUmVzCiAKIGlubGluZSBMZW5ndGggU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252
ZXJ0TGVuZ3RoTWF4U2l6aW5nKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVl
JiB2YWx1ZSkKIHsKLSAgICBpZiAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS5n
ZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKQorICAgIGlmIChkb3duY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZT4odmFsdWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUpCiAgICAgICAgIHJldHVy
biBMZW5ndGgoVW5kZWZpbmVkKTsKICAgICByZXR1cm4gY29udmVydExlbmd0aFNpemluZyhzdHls
ZVJlc29sdmVyLCB2YWx1ZSk7CiB9CkBAIC0yNDYsNyArMjQ2LDcgQEAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CiBpbmxpbmUgVCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMaW5lV2lkdGgo
U3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGF1
dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsK
LSAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQoKSkgeworICAgIHN3aXRjaCAo
cHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpKSB7CiAgICAgY2FzZSBDU1NWYWx1ZVRoaW46CiAgICAg
ICAgIHJldHVybiAxOwogICAgIGNhc2UgQ1NTVmFsdWVNZWRpdW06CkBAIC0yNzYsNyArMjc2LDcg
QEAgaW5saW5lIFQgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TGluZVdpZHRoKFN0eWxl
UmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIEMKIGlubGluZSBmbG9hdCBTdHlsZUJ1aWxkZXJDb252
ZXJ0ZXI6OmNvbnZlcnRTcGFjaW5nKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1Zh
bHVlJiB2YWx1ZSkKIHsKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1By
aW1pdGl2ZVZhbHVlPih2YWx1ZSk7Ci0gICAgaWYgKHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQo
KSA9PSBDU1NWYWx1ZU5vcm1hbCkKKyAgICBpZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09
IENTU1ZhbHVlTm9ybWFsKQogICAgICAgICByZXR1cm4gMC5mOwogCiAgICAgQ1NTVG9MZW5ndGhD
b252ZXJzaW9uRGF0YSBjb252ZXJzaW9uRGF0YSA9IHN0eWxlUmVzb2x2ZXIudXNlU1ZHWm9vbVJ1
bGVzRm9yTGVuZ3RoKCkgPwpAQCAtMjg4LDcgKzI4OCw3IEBAIGlubGluZSBmbG9hdCBTdHlsZUJ1
aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTcGFjaW5nKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2
ZXIsCiBpbmxpbmUgTGVuZ3RoIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRvUmFkaXVz
TGVuZ3RoKENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmIGNvbnZlcnNpb25EYXRhLCBDU1NQcmlt
aXRpdmVWYWx1ZSYgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlLmlzUGVyY2VudGFnZSgpKQotICAg
ICAgICByZXR1cm4gTGVuZ3RoKHZhbHVlLmdldERvdWJsZVZhbHVlKCksIFBlcmNlbnQpOworICAg
ICAgICByZXR1cm4gTGVuZ3RoKHZhbHVlLmRvdWJsZVZhbHVlKCksIFBlcmNlbnQpOwogICAgIGlm
ICh2YWx1ZS5pc0NhbGN1bGF0ZWRQZXJjZW50YWdlV2l0aExlbmd0aCgpKQogICAgICAgICByZXR1
cm4gTGVuZ3RoKHZhbHVlLmNzc0NhbGNWYWx1ZSgpLT5jcmVhdGVDYWxjdWxhdGlvblZhbHVlKGNv
bnZlcnNpb25EYXRhKSk7CiAgICAgcmV0dXJuIHZhbHVlLmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihj
b252ZXJzaW9uRGF0YSk7CkBAIC0yOTcsNyArMjk3LDcgQEAgaW5saW5lIExlbmd0aCBTdHlsZUJ1
aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUb1JhZGl1c0xlbmd0aChDU1NUb0xlbmd0aENvbnZlcnNp
b24KIGlubGluZSBMZW5ndGhTaXplIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFJhZGl1
cyhTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAg
YXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUp
OwotICAgIFBhaXIqIHBhaXIgPSBwcmltaXRpdmVWYWx1ZS5nZXRQYWlyVmFsdWUoKTsKKyAgICBQ
YWlyKiBwYWlyID0gcHJpbWl0aXZlVmFsdWUucGFpclZhbHVlKCk7CiAgICAgaWYgKCFwYWlyIHx8
ICFwYWlyLT5maXJzdCgpIHx8ICFwYWlyLT5zZWNvbmQoKSkKICAgICAgICAgcmV0dXJuIExlbmd0
aFNpemUoTGVuZ3RoKDAsIEZpeGVkKSwgTGVuZ3RoKDAsIEZpeGVkKSk7CiAKQEAgLTMzMywxMSAr
MzMzLDExIEBAIGlubGluZSBMZW5ndGggU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UG9z
aXRpb25Db21wb25lbnQoU3R5bGVSZXNvbHZlciYgc3R5CiAgICAgYm9vbCByZWxhdGl2ZVRvVHJh
aWxpbmdFZGdlID0gZmFsc2U7CiAgICAgCiAgICAgaWYgKHZhbHVlLmlzUGFpcigpKSB7Ci0gICAg
ICAgIGF1dG8mIGZpcnN0ID0gKnZhbHVlLmdldFBhaXJWYWx1ZSgpLT5maXJzdCgpOwotICAgICAg
ICBpZiAoZmlyc3QuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlUmlnaHQgfHwgZmlyc3QuZ2V0VmFs
dWVJRCgpID09IENTU1ZhbHVlQm90dG9tKQorICAgICAgICBhdXRvJiBmaXJzdCA9ICp2YWx1ZS5w
YWlyVmFsdWUoKS0+Zmlyc3QoKTsKKyAgICAgICAgaWYgKGZpcnN0LnZhbHVlSUQoKSA9PSBDU1NW
YWx1ZVJpZ2h0IHx8IGZpcnN0LnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUJvdHRvbSkKICAgICAgICAg
ICAgIHJlbGF0aXZlVG9UcmFpbGluZ0VkZ2UgPSB0cnVlOwogCi0gICAgICAgIGxlbmd0aFZhbHVl
ID0gdmFsdWUuZ2V0UGFpclZhbHVlKCktPnNlY29uZCgpOworICAgICAgICBsZW5ndGhWYWx1ZSA9
IHZhbHVlLnBhaXJWYWx1ZSgpLT5zZWNvbmQoKTsKICAgICB9CiAKICAgICBsZW5ndGggPSBjb252
ZXJ0TGVuZ3RoKHN0eWxlUmVzb2x2ZXIsICpsZW5ndGhWYWx1ZSk7CkBAIC0zNTEsNyArMzUxLDcg
QEAgaW5saW5lIExlbmd0aCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRQb3NpdGlvbkNv
bXBvbmVudChTdHlsZVJlc29sdmVyJiBzdHkKIGlubGluZSBMZW5ndGhQb2ludCBTdHlsZUJ1aWxk
ZXJDb252ZXJ0ZXI6OmNvbnZlcnRPYmplY3RQb3NpdGlvbihTdHlsZVJlc29sdmVyJiBzdHlsZVJl
c29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBk
b3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwotICAgIFBhaXIqIHBhaXIgPSBwcmlt
aXRpdmVWYWx1ZS5nZXRQYWlyVmFsdWUoKTsKKyAgICBQYWlyKiBwYWlyID0gcHJpbWl0aXZlVmFs
dWUucGFpclZhbHVlKCk7CiAgICAgaWYgKCFwYWlyIHx8ICFwYWlyLT5maXJzdCgpIHx8ICFwYWly
LT5zZWNvbmQoKSkKICAgICAgICAgcmV0dXJuIFJlbmRlclN0eWxlOjppbml0aWFsT2JqZWN0UG9z
aXRpb24oKTsKIApAQCAtMzc0LDEzICszNzQsMTMgQEAgaW5saW5lIFRleHREZWNvcmF0aW9uIFN0
eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRleHREZWNvcmF0aW9uKFN0eWxlUmVzb2x2ZXIK
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogaW5saW5lIFQgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpj
b252ZXJ0TnVtYmVyKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYgdmFsdWUpCiB7Ci0gICAgcmV0
dXJuIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkuZ2V0VmFsdWU8VD4oQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOworICAgIHJldHVybiBkb3duY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZT4odmFsdWUpLnZhbHVlPFQ+KENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsK
IH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBpbmxpbmUgVCBTdHlsZUJ1aWxkZXJDb252ZXJ0
ZXI6OmNvbnZlcnROdW1iZXJPckF1dG8oU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgQ1NT
VmFsdWUmIHZhbHVlKQogewotICAgIGlmIChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFs
dWUpLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZUF1dG8pCisgICAgaWYgKGRvd25jYXN0PENTU1By
aW1pdGl2ZVZhbHVlPih2YWx1ZSkudmFsdWVJRCgpID09IENTU1ZhbHVlQXV0bykKICAgICAgICAg
cmV0dXJuIC0xOwogICAgIHJldHVybiBjb252ZXJ0TnVtYmVyPFQ+KHN0eWxlUmVzb2x2ZXIsIHZh
bHVlKTsKIH0KQEAgLTM4OCw5ICszODgsOSBAQCBpbmxpbmUgVCBTdHlsZUJ1aWxkZXJDb252ZXJ0
ZXI6OmNvbnZlcnROdW1iZXJPckF1dG8oU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlcgogaW5s
aW5lIHNob3J0IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFdlYmtpdEh5cGhlbmF0ZUxp
bWl0TGluZXMoU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBhdXRvJiBw
cmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7Ci0gICAg
aWYgKHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vTGltaXQpCisgICAg
aWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vTGltaXQpCiAgICAgICAg
IHJldHVybiAtMTsKLSAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWU8c2hvcnQ+KENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKKyAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWUu
dmFsdWU8c2hvcnQ+KENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKIH0KIAogdGVtcGxh
dGUgPENTU1Byb3BlcnR5SUQgcHJvcGVydHk+CkBAIC00MjUsMTkgKzQyNSwxOSBAQCBpbmxpbmUg
VHJhbnNmb3JtT3BlcmF0aW9ucyBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUcmFuc2Zv
cm0oU3R5bGVSZXNvbHZlcgogCiBpbmxpbmUgU3RyaW5nIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6
Y29udmVydFN0cmluZyhTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmIHZhbHVlKQogewotICAgIHJl
dHVybiBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLmdldFN0cmluZ1ZhbHVlKCk7
CisgICAgcmV0dXJuIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkuc3RyaW5nVmFs
dWUoKTsKIH0KIAogaW5saW5lIFN0cmluZyBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRT
dHJpbmdPckF1dG8oU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHZhbHVl
KQogewotICAgIGlmIChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLmdldFZhbHVl
SUQoKSA9PSBDU1NWYWx1ZUF1dG8pCisgICAgaWYgKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
Pih2YWx1ZSkudmFsdWVJRCgpID09IENTU1ZhbHVlQXV0bykKICAgICAgICAgcmV0dXJuIG51bGxB
dG9tOwogICAgIHJldHVybiBjb252ZXJ0U3RyaW5nKHN0eWxlUmVzb2x2ZXIsIHZhbHVlKTsKIH0K
IAogaW5saW5lIFN0cmluZyBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTdHJpbmdPck5v
bmUoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHZhbHVlKQogewotICAg
IGlmIChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLmdldFZhbHVlSUQoKSA9PSBD
U1NWYWx1ZU5vbmUpCisgICAgaWYgKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSku
dmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZSkKICAgICAgICAgcmV0dXJuIG51bGxBdG9tOwogICAg
IHJldHVybiBjb252ZXJ0U3RyaW5nKHN0eWxlUmVzb2x2ZXIsIHZhbHVlKTsKIH0KQEAgLTQ0Niw3
ICs0NDYsNyBAQCBpbmxpbmUgVGV4dEVtcGhhc2lzUG9zaXRpb24gU3R5bGVCdWlsZGVyQ29udmVy
dGVyOjp2YWx1ZVRvRW1waGFzaXNQb3NpdGlvbihDU1NQcgogewogICAgIEFTU0VSVChwcmltaXRp
dmVWYWx1ZS5pc1ZhbHVlSUQoKSk7CiAKLSAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLmdldFZh
bHVlSUQoKSkgeworICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpKSB7CiAgICAg
Y2FzZSBDU1NWYWx1ZU92ZXI6CiAgICAgICAgIHJldHVybiBUZXh0RW1waGFzaXNQb3NpdGlvbk92
ZXI7CiAgICAgY2FzZSBDU1NWYWx1ZVVuZGVyOgpAQCAtNDc5LDcgKzQ3OSw3IEBAIGlubGluZSBF
VGV4dEFsaWduIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRleHRBbGlnbihTdHlsZVJl
c29sdmVyJiBzdHlsZVJlCiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZT4odmFsdWUpOwogICAgIEFTU0VSVChwcmltaXRpdmVWYWx1ZS5pc1ZhbHVl
SUQoKSk7CiAKLSAgICBpZiAocHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWVJRCgpICE9IENTU1ZhbHVl
V2Via2l0TWF0Y2hQYXJlbnQpCisgICAgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSAhPSBD
U1NWYWx1ZVdlYmtpdE1hdGNoUGFyZW50KQogICAgICAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWU7
CiAKICAgICBhdXRvKiBwYXJlbnRTdHlsZSA9IHN0eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKTsK
QEAgLTQ5NSwxMiArNDk1LDEyIEBAIGlubGluZSBSZWZQdHI8Q2xpcFBhdGhPcGVyYXRpb24+IFN0
eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydENsaXBQYXRoKFN0eWxlUmVzCiAgICAgaWYgKGlz
PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpIHsKICAgICAgICAgYXV0byYgcHJpbWl0aXZlVmFs
dWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwogICAgICAgICBpZiAocHJp
bWl0aXZlVmFsdWUucHJpbWl0aXZlVHlwZSgpID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVVJJ
KSB7Ci0gICAgICAgICAgICBTdHJpbmcgY3NzVVJMVmFsdWUgPSBwcmltaXRpdmVWYWx1ZS5nZXRT
dHJpbmdWYWx1ZSgpOworICAgICAgICAgICAgU3RyaW5nIGNzc1VSTFZhbHVlID0gcHJpbWl0aXZl
VmFsdWUuc3RyaW5nVmFsdWUoKTsKICAgICAgICAgICAgIFVSTCB1cmwgPSBzdHlsZVJlc29sdmVy
LmRvY3VtZW50KCkuY29tcGxldGVVUkwoY3NzVVJMVmFsdWUpOwogICAgICAgICAgICAgLy8gRklY
TUU6IEl0IGRvZXNuJ3Qgd29yayB3aXRoIGV4dGVybmFsIFNWRyByZWZlcmVuY2VzIChzZWUgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjEzMykKICAgICAgICAgICAg
IHJldHVybiBSZWZlcmVuY2VDbGlwUGF0aE9wZXJhdGlvbjo6Y3JlYXRlKGNzc1VSTFZhbHVlLCB1
cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkpOwogICAgICAgICB9Ci0gICAgICAgIEFTU0VSVChwcmlt
aXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKTsKKyAgICAgICAgQVNTRVJU
KHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUpOwogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTUxMSwxNSArNTExLDE1IEBAIGlubGluZSBSZWZQdHI8
Q2xpcFBhdGhPcGVyYXRpb24+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydENsaXBQYXRo
KFN0eWxlUmVzCiAgICAgICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWU+KGN1cnJlbnRWYWx1ZS5nZXQoKSk7CiAgICAgICAgIGlmIChwcmltaXRpdmVW
YWx1ZS5pc1NoYXBlKCkpIHsKICAgICAgICAgICAgIEFTU0VSVCghb3BlcmF0aW9uKTsKLSAgICAg
ICAgICAgIG9wZXJhdGlvbiA9IFNoYXBlQ2xpcFBhdGhPcGVyYXRpb246OmNyZWF0ZShiYXNpY1No
YXBlRm9yVmFsdWUoc3R5bGVSZXNvbHZlci5zdGF0ZSgpLmNzc1RvTGVuZ3RoQ29udmVyc2lvbkRh
dGEoKSwgKnByaW1pdGl2ZVZhbHVlLmdldFNoYXBlVmFsdWUoKSkpOworICAgICAgICAgICAgb3Bl
cmF0aW9uID0gU2hhcGVDbGlwUGF0aE9wZXJhdGlvbjo6Y3JlYXRlKGJhc2ljU2hhcGVGb3JWYWx1
ZShzdHlsZVJlc29sdmVyLnN0YXRlKCkuY3NzVG9MZW5ndGhDb252ZXJzaW9uRGF0YSgpLCAqcHJp
bWl0aXZlVmFsdWUuc2hhcGVWYWx1ZSgpKSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICBBU1NFUlQocHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlQ29udGVudEJv
eAotICAgICAgICAgICAgICAgICAgIHx8IHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQoKSA9PSBD
U1NWYWx1ZUJvcmRlckJveAotICAgICAgICAgICAgICAgICAgIHx8IHByaW1pdGl2ZVZhbHVlLmdl
dFZhbHVlSUQoKSA9PSBDU1NWYWx1ZVBhZGRpbmdCb3gKLSAgICAgICAgICAgICAgICAgICB8fCBw
cmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVNYXJnaW5Cb3gKLSAgICAgICAg
ICAgICAgICAgICB8fCBwcmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVGaWxs
Ci0gICAgICAgICAgICAgICAgICAgfHwgcHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWVJRCgpID09IENT
U1ZhbHVlU3Ryb2tlCi0gICAgICAgICAgICAgICAgICAgfHwgcHJpbWl0aXZlVmFsdWUuZ2V0VmFs
dWVJRCgpID09IENTU1ZhbHVlVmlld0JveCk7CisgICAgICAgICAgICBBU1NFUlQocHJpbWl0aXZl
VmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlQ29udGVudEJveAorICAgICAgICAgICAgICAgIHx8
IHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUJvcmRlckJveAorICAgICAgICAg
ICAgICAgIHx8IHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZVBhZGRpbmdCb3gK
KyAgICAgICAgICAgICAgICB8fCBwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVN
YXJnaW5Cb3gKKyAgICAgICAgICAgICAgICB8fCBwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0g
Q1NTVmFsdWVGaWxsCisgICAgICAgICAgICAgICAgfHwgcHJpbWl0aXZlVmFsdWUudmFsdWVJRCgp
ID09IENTU1ZhbHVlU3Ryb2tlCisgICAgICAgICAgICAgICAgfHwgcHJpbWl0aXZlVmFsdWUudmFs
dWVJRCgpID09IENTU1ZhbHVlVmlld0JveCk7CiAgICAgICAgICAgICBBU1NFUlQocmVmZXJlbmNl
Qm94ID09IEJveE1pc3NpbmcpOwogICAgICAgICAgICAgcmVmZXJlbmNlQm94ID0gcHJpbWl0aXZl
VmFsdWU7CiAgICAgICAgIH0KQEAgLTUzOSw3ICs1MzksNyBAQCBpbmxpbmUgRVJlc2l6ZSBTdHls
ZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRSZXNpemUoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNv
bHZlcgogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWU+KHZhbHVlKTsKIAogICAgIEVSZXNpemUgcmVzaXplID0gUkVTSVpFX05PTkU7Ci0gICAgaWYg
KHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZUF1dG8pIHsKKyAgICBpZiAo
cHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlQXV0bykgewogICAgICAgICBpZiAo
U2V0dGluZ3MqIHNldHRpbmdzID0gc3R5bGVSZXNvbHZlci5kb2N1bWVudCgpLnNldHRpbmdzKCkp
CiAgICAgICAgICAgICByZXNpemUgPSBzZXR0aW5ncy0+dGV4dEFyZWFzQXJlUmVzaXphYmxlKCkg
PyBSRVNJWkVfQk9USCA6IFJFU0laRV9OT05FOwogICAgIH0gZWxzZQpAQCAtNTUxLDE4ICs1NTEs
MTggQEAgaW5saW5lIEVSZXNpemUgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UmVzaXpl
KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIKIGlubGluZSBpbnQgU3R5bGVCdWlsZGVyQ29u
dmVydGVyOjpjb252ZXJ0TWFycXVlZVJlcGV0aXRpb24oU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVl
JiB2YWx1ZSkKIHsKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlPih2YWx1ZSk7Ci0gICAgaWYgKHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQoKSA9
PSBDU1NWYWx1ZUluZmluaXRlKQorICAgIGlmIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0g
Q1NTVmFsdWVJbmZpbml0ZSkKICAgICAgICAgcmV0dXJuIC0xOyAvLyAtMSBtZWFucyByZXBlYXQg
Zm9yZXZlci4KIAogICAgIEFTU0VSVChwcmltaXRpdmVWYWx1ZS5pc051bWJlcigpKTsKLSAgICBy
ZXR1cm4gcHJpbWl0aXZlVmFsdWUuZ2V0SW50VmFsdWUoKTsKKyAgICByZXR1cm4gcHJpbWl0aXZl
VmFsdWUuaW50VmFsdWUoKTsKIH0KIAogaW5saW5lIGludCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6
OmNvbnZlcnRNYXJxdWVlU3BlZWQoU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJiB2YWx1ZSkKIHsK
ICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2
YWx1ZSk7CiAgICAgaW50IHNwZWVkID0gODU7Ci0gICAgaWYgKENTU1ZhbHVlSUQgaWRlbnQgPSBw
cmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkpIHsKKyAgICBpZiAoQ1NTVmFsdWVJRCBpZGVudCA9
IHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSkgewogICAgICAgICBzd2l0Y2ggKGlkZW50KSB7CiAg
ICAgICAgIGNhc2UgQ1NTVmFsdWVTbG93OgogICAgICAgICAgICAgc3BlZWQgPSA1MDA7IC8vIDUw
MCBtc2VjLgpAQCAtNTgyLDcgKzU4Miw3IEBAIGlubGluZSBpbnQgU3R5bGVCdWlsZGVyQ29udmVy
dGVyOjpjb252ZXJ0TWFycXVlZVNwZWVkKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYKICAgICBl
bHNlIHsKICAgICAgICAgLy8gRm9yIHNjcm9sbGFtb3VudCBzdXBwb3J0LgogICAgICAgICBBU1NF
UlQocHJpbWl0aXZlVmFsdWUuaXNOdW1iZXIoKSk7Ci0gICAgICAgIHNwZWVkID0gcHJpbWl0aXZl
VmFsdWUuZ2V0SW50VmFsdWUoKTsKKyAgICAgICAgc3BlZWQgPSBwcmltaXRpdmVWYWx1ZS5pbnRW
YWx1ZSgpOwogICAgIH0KICAgICByZXR1cm4gc3BlZWQ7CiB9CkBAIC01OTAsNyArNTkwLDcgQEAg
aW5saW5lIGludCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRNYXJxdWVlU3BlZWQoU3R5
bGVSZXNvbHZlciYsIENTU1ZhbHVlJgogaW5saW5lIFBhc3NSZWZQdHI8UXVvdGVzRGF0YT4gU3R5
bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UXVvdGVzKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1
ZSYgdmFsdWUpCiB7CiAgICAgaWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpIHsKLSAg
ICAgICAgQVNTRVJUKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkuZ2V0VmFsdWVJ
RCgpID09IENTU1ZhbHVlTm9uZSk7CisgICAgICAgIEFTU0VSVChkb3duY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZT4odmFsdWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUpOwogICAgICAgICByZXR1
cm4gUXVvdGVzRGF0YTo6Y3JlYXRlKFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+Pigp
KTsKICAgICB9CiAKQEAgLTYwMyw4ICs2MDMsOCBAQCBpbmxpbmUgUGFzc1JlZlB0cjxRdW90ZXNE
YXRhPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRRdW90ZXMoU3R5bGVSZXNvbHZlcgog
ICAgICAgICBDU1NWYWx1ZSogc2Vjb25kID0gbGlzdC5pdGVtKGkgKyAxKTsKICAgICAgICAgaWYg
KCFzZWNvbmQpCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgU3RyaW5nIHN0YXJ0UXVvdGUg
PSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKmZpcnN0KS5nZXRTdHJpbmdWYWx1ZSgpOwot
ICAgICAgICBTdHJpbmcgZW5kUXVvdGUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnNl
Y29uZCkuZ2V0U3RyaW5nVmFsdWUoKTsKKyAgICAgICAgU3RyaW5nIHN0YXJ0UXVvdGUgPSBkb3du
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKmZpcnN0KS5zdHJpbmdWYWx1ZSgpOworICAgICAgICBT
dHJpbmcgZW5kUXVvdGUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnNlY29uZCkuc3Ry
aW5nVmFsdWUoKTsKICAgICAgICAgcXVvdGVzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihzdGFydFF1
b3RlLCBlbmRRdW90ZSkpOwogICAgIH0KICAgICByZXR1cm4gUXVvdGVzRGF0YTo6Y3JlYXRlKHF1
b3Rlcyk7CkBAIC02MjcsNyArNjI3LDcgQEAgaW5saW5lIFRleHRVbmRlcmxpbmVQb3NpdGlvbiBT
dHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUZXh0VW5kZXJsaW5lUG9zaXRpb24KIGlubGlu
ZSBSZWZQdHI8U3R5bGVSZWZsZWN0aW9uPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRS
ZWZsZWN0aW9uKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkK
IHsKICAgICBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSkgewotICAgICAgICBBU1NF
UlQoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS5nZXRWYWx1ZUlEKCkgPT0gQ1NT
VmFsdWVOb25lKTsKKyAgICAgICAgQVNTRVJUKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2
YWx1ZSkudmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZSk7CiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KIApAQCAtNjQ5LDE1ICs2NDksMTUgQEAgaW5saW5lIEludFNpemUgU3R5bGVCdWls
ZGVyQ29udmVydGVyOjpjb252ZXJ0SW5pdGlhbExldHRlcihTdHlsZVJlc29sdmVyJiwgQ1NTVmEK
IHsKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
Pih2YWx1ZSk7CiAKLSAgICBpZiAocHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWVJRCgpID09IENTU1Zh
bHVlTm9ybWFsKQorICAgIGlmIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVO
b3JtYWwpCiAgICAgICAgIHJldHVybiBJbnRTaXplKCk7CiAKLSAgICBQYWlyKiBwYWlyID0gcHJp
bWl0aXZlVmFsdWUuZ2V0UGFpclZhbHVlKCk7CisgICAgUGFpciogcGFpciA9IHByaW1pdGl2ZVZh
bHVlLnBhaXJWYWx1ZSgpOwogICAgIEFTU0VSVChwYWlyKTsKICAgICBBU1NFUlQocGFpci0+Zmly
c3QoKSk7CiAgICAgQVNTRVJUKHBhaXItPnNlY29uZCgpKTsKIAotICAgIHJldHVybiBJbnRTaXpl
KHBhaXItPmZpcnN0KCktPmdldEludFZhbHVlKCksIHBhaXItPnNlY29uZCgpLT5nZXRJbnRWYWx1
ZSgpKTsKKyAgICByZXR1cm4gSW50U2l6ZShwYWlyLT5maXJzdCgpLT5pbnRWYWx1ZSgpLCBwYWly
LT5zZWNvbmQoKS0+aW50VmFsdWUoKSk7CiB9CiAKIGlubGluZSBmbG9hdCBTdHlsZUJ1aWxkZXJD
b252ZXJ0ZXI6OmNvbnZlcnRUZXh0U3Ryb2tlV2lkdGgoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNv
bHZlciwgQ1NTVmFsdWUmIHZhbHVlKQpAQCAtNjY1LDE0ICs2NjUsMTQgQEAgaW5saW5lIGZsb2F0
IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRleHRTdHJva2VXaWR0aChTdHlsZVJlc29s
dmVyJiBzdHlsZVIKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlPih2YWx1ZSk7CiAKICAgICBmbG9hdCB3aWR0aCA9IDA7Ci0gICAgc3dpdGNoIChw
cmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkpIHsKKyAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVl
LnZhbHVlSUQoKSkgewogICAgIGNhc2UgQ1NTVmFsdWVUaGluOgogICAgIGNhc2UgQ1NTVmFsdWVN
ZWRpdW06CiAgICAgY2FzZSBDU1NWYWx1ZVRoaWNrOiB7CiAgICAgICAgIGRvdWJsZSByZXN1bHQg
PSAxLjAgLyA0ODsKLSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQoKSA9PSBD
U1NWYWx1ZU1lZGl1bSkKKyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBD
U1NWYWx1ZU1lZGl1bSkKICAgICAgICAgICAgIHJlc3VsdCAqPSAzOwotICAgICAgICBlbHNlIGlm
IChwcmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVUaGljaykKKyAgICAgICAg
ZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlVGhpY2spCiAgICAg
ICAgICAgICByZXN1bHQgKj0gNTsKICAgICAgICAgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBlbXNW
YWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHJlc3VsdCwgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19FTVMpKTsKICAgICAgICAgd2lkdGggPSBjb252ZXJ0Q29tcHV0ZWRMZW5ndGg8ZmxvYXQ+
KHN0eWxlUmVzb2x2ZXIsIGVtc1ZhbHVlKTsKQEAgLTY5Myw3ICs2OTMsNyBAQCBpbmxpbmUgZmxv
YXQgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VGV4dFN0cm9rZVdpZHRoKFN0eWxlUmVz
b2x2ZXImIHN0eWxlUgogaW5saW5lIExpbmVCb3hDb250YWluIFN0eWxlQnVpbGRlckNvbnZlcnRl
cjo6Y29udmVydExpbmVCb3hDb250YWluKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYgdmFsdWUp
CiB7CiAgICAgaWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpIHsKLSAgICAgICAgQVNT
RVJUKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkuZ2V0VmFsdWVJRCgpID09IENT
U1ZhbHVlTm9uZSk7CisgICAgICAgIEFTU0VSVChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4o
dmFsdWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUpOwogICAgICAgICByZXR1cm4gTGluZUJv
eENvbnRhaW5Ob25lOwogICAgIH0KIApAQCAtNzA0LDcgKzcwNCw3IEBAIGlubGluZSBUZXh0RGVj
b3JhdGlvblNraXAgU3R5bGVCdWlsZGVyQ29udmVydGVyOjp2YWx1ZVRvRGVjb3JhdGlvblNraXAo
Y29uc3QgQ1NTCiB7CiAgICAgQVNTRVJUKHByaW1pdGl2ZVZhbHVlLmlzVmFsdWVJRCgpKTsKIAot
ICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWVJRCgpKSB7CisgICAgc3dpdGNoIChw
cmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkpIHsKICAgICBjYXNlIENTU1ZhbHVlQXV0bzoKICAgICAg
ICAgcmV0dXJuIFRleHREZWNvcmF0aW9uU2tpcEF1dG87CiAgICAgY2FzZSBDU1NWYWx1ZU5vbmU6
CkBAIC03NDEsNyArNzQxLDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzSW1hZ2VTaGFwZShjb25z
dCBDU1NWYWx1ZSYgdmFsdWUpCiBpbmxpbmUgUGFzc1JlZlB0cjxTaGFwZVZhbHVlPiBTdHlsZUJ1
aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTaGFwZVZhbHVlKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVz
b2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+
KHZhbHVlKSkgewotICAgICAgICBBU1NFUlQoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZh
bHVlKS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKTsKKyAgICAgICAgQVNTRVJUKGRvd25j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkudmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZSk7
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAtNzUzLDExICs3NTMsMTEgQEAg
aW5saW5lIFBhc3NSZWZQdHI8U2hhcGVWYWx1ZT4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252
ZXJ0U2hhcGVWYWx1ZShTdHlsZVJlc28KICAgICBmb3IgKGF1dG8mIGN1cnJlbnRWYWx1ZSA6IGRv
d25jYXN0PENTU1ZhbHVlTGlzdD4odmFsdWUpKSB7CiAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVl
JiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihjdXJyZW50VmFs
dWUuZ2V0KCkpOwogICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUuaXNTaGFwZSgpKQotICAgICAg
ICAgICAgc2hhcGUgPSBiYXNpY1NoYXBlRm9yVmFsdWUoc3R5bGVSZXNvbHZlci5zdGF0ZSgpLmNz
c1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoKSwgKnByaW1pdGl2ZVZhbHVlLmdldFNoYXBlVmFsdWUo
KSk7Ci0gICAgICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQoKSA9PSBDU1NW
YWx1ZUNvbnRlbnRCb3gKLSAgICAgICAgICAgIHx8IHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQo
KSA9PSBDU1NWYWx1ZUJvcmRlckJveAotICAgICAgICAgICAgfHwgcHJpbWl0aXZlVmFsdWUuZ2V0
VmFsdWVJRCgpID09IENTU1ZhbHVlUGFkZGluZ0JveAotICAgICAgICAgICAgfHwgcHJpbWl0aXZl
VmFsdWUuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlTWFyZ2luQm94KQorICAgICAgICAgICAgc2hh
cGUgPSBiYXNpY1NoYXBlRm9yVmFsdWUoc3R5bGVSZXNvbHZlci5zdGF0ZSgpLmNzc1RvTGVuZ3Ro
Q29udmVyc2lvbkRhdGEoKSwgKnByaW1pdGl2ZVZhbHVlLnNoYXBlVmFsdWUoKSk7CisgICAgICAg
IGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUNvbnRlbnRCb3gK
KyAgICAgICAgICAgIHx8IHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUJvcmRl
ckJveAorICAgICAgICAgICAgfHwgcHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVl
UGFkZGluZ0JveAorICAgICAgICAgICAgfHwgcHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENT
U1ZhbHVlTWFyZ2luQm94KQogICAgICAgICAgICAgcmVmZXJlbmNlQm94ID0gcHJpbWl0aXZlVmFs
dWU7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBA
IC03ODcsMTQgKzc4NywxNCBAQCBpbmxpbmUgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbFNuYXBQb2lu
dHM+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFNjcm9sbFNuYQogICAgIGF1dG8gcG9p
bnRzID0gc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxTbmFwUG9pbnRzPigpOwogCiAgICAgaWYgKGlz
PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpIHsKLSAgICAgICAgQVNTRVJUKGRvd25jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlRWxlbWVudHMp
OworICAgICAgICBBU1NFUlQoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS52YWx1
ZUlEKCkgPT0gQ1NTVmFsdWVFbGVtZW50cyk7CiAgICAgICAgIHBvaW50cy0+dXNlc0VsZW1lbnRz
ID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuIHBvaW50czsKICAgICB9CiAKICAgICBmb3IgKGF1dG8m
IGN1cnJlbnRWYWx1ZSA6IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4odmFsdWUpKSB7CiAgICAgICAg
IGF1dG8mIGl0ZW1WYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihjdXJyZW50VmFs
dWUuZ2V0KCkpOwotICAgICAgICBpZiAoYXV0byogbGVuZ3RoUmVwZWF0ID0gaXRlbVZhbHVlLmdl
dExlbmd0aFJlcGVhdFZhbHVlKCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIGxlbmd0aFJlcGVhdCA9
IGl0ZW1WYWx1ZS5sZW5ndGhSZXBlYXRWYWx1ZSgpKSB7CiAgICAgICAgICAgICBpZiAoYXV0byog
aW50ZXJ2YWwgPSBsZW5ndGhSZXBlYXQtPmludGVydmFsKCkpIHsKICAgICAgICAgICAgICAgICBw
b2ludHMtPnJlcGVhdE9mZnNldCA9IHBhcnNlU25hcENvb3JkaW5hdGUoc3R5bGVSZXNvbHZlciwg
KmludGVydmFsKTsKICAgICAgICAgICAgICAgICBwb2ludHMtPmhhc1JlcGVhdCA9IHRydWU7CkBA
IC04MjksMTUgKzgyOSwxNSBAQCBpbmxpbmUgVmVjdG9yPExlbmd0aFNpemU+IFN0eWxlQnVpbGRl
ckNvbnZlcnRlcjo6Y29udmVydFNjcm9sbFNuYXBDb29yZGluYXRlcyhTdAogI2lmIEVOQUJMRShD
U1NfR1JJRF9MQVlPVVQpCiBpbmxpbmUgR3JpZExlbmd0aCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6
OmNyZWF0ZUdyaWRUcmFja0JyZWFkdGgoQ1NTUHJpbWl0aXZlVmFsdWUmIHByaW1pdGl2ZVZhbHVl
LCBTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyKQogewotICAgIGlmIChwcmltaXRpdmVWYWx1
ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVXZWJraXRNaW5Db250ZW50KQorICAgIGlmIChwcmlt
aXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVXZWJraXRNaW5Db250ZW50KQogICAgICAg
ICByZXR1cm4gTGVuZ3RoKE1pbkNvbnRlbnQpOwogCi0gICAgaWYgKHByaW1pdGl2ZVZhbHVlLmdl
dFZhbHVlSUQoKSA9PSBDU1NWYWx1ZVdlYmtpdE1heENvbnRlbnQpCisgICAgaWYgKHByaW1pdGl2
ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZVdlYmtpdE1heENvbnRlbnQpCiAgICAgICAgIHJl
dHVybiBMZW5ndGgoTWF4Q29udGVudCk7CiAKICAgICAvLyBGcmFjdGlvbmFsIHVuaXQuCiAgICAg
aWYgKHByaW1pdGl2ZVZhbHVlLmlzRmxleCgpKQotICAgICAgICByZXR1cm4gR3JpZExlbmd0aChw
cmltaXRpdmVWYWx1ZS5nZXREb3VibGVWYWx1ZSgpKTsKKyAgICAgICAgcmV0dXJuIEdyaWRMZW5n
dGgocHJpbWl0aXZlVmFsdWUuZG91YmxlVmFsdWUoKSk7CiAKICAgICByZXR1cm4gcHJpbWl0aXZl
VmFsdWUuY29udmVydFRvTGVuZ3RoPEZpeGVkSW50ZWdlckNvbnZlcnNpb24gfCBQZXJjZW50Q29u
dmVyc2lvbiB8IENhbGN1bGF0ZWRDb252ZXJzaW9uIHwgQXV0b0NvbnZlcnNpb24+KHN0eWxlUmVz
b2x2ZXIuc3RhdGUoKS5jc3NUb0xlbmd0aENvbnZlcnNpb25EYXRhKCkpOwogfQpAQCAtODY0LDcg
Kzg2NCw3IEBAIHN0YXRpYyB2b2lkIGNyZWF0ZUdyaWRMaW5lTmFtZXNMaXN0KGNvbnN0IENTU1Zh
bHVlJiB2YWx1ZSwgdW5zaWduZWQgY3VycmVudE5hbWVkCiAgICAgQVNTRVJUKHZhbHVlLmlzR3Jp
ZExpbmVOYW1lc1ZhbHVlKCkpOwogCiAgICAgZm9yIChhdXRvJiBuYW1lZEdyaWRMaW5lVmFsdWUg
OiBkb3duY2FzdDxDU1NHcmlkTGluZU5hbWVzVmFsdWU+KHZhbHVlKSkgewotICAgICAgICBTdHJp
bmcgbmFtZWRHcmlkTGluZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihuYW1lZEdyaWRM
aW5lVmFsdWUuZ2V0KCkpLmdldFN0cmluZ1ZhbHVlKCk7CisgICAgICAgIFN0cmluZyBuYW1lZEdy
aWRMaW5lID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KG5hbWVkR3JpZExpbmVWYWx1ZS5n
ZXQoKSkuc3RyaW5nVmFsdWUoKTsKICAgICAgICAgYXV0byByZXN1bHQgPSBuYW1lZEdyaWRMaW5l
cy5hZGQobmFtZWRHcmlkTGluZSwgVmVjdG9yPHVuc2lnbmVkPigpKTsKICAgICAgICAgcmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZS5hcHBlbmQoY3VycmVudE5hbWVkR3JpZExpbmUpOwogICAgICAgICBh
dXRvIG9yZGVyZWRSZXN1bHQgPSBvcmRlcmVkTmFtZWRHcmlkTGluZXMuYWRkKGN1cnJlbnROYW1l
ZEdyaWRMaW5lLCBWZWN0b3I8U3RyaW5nPigpKTsKQEAgLTg5MSw3ICs4OTEsNyBAQCBpbmxpbmUg
Ym9vbCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNyZWF0ZUdyaWRUcmFja0xpc3QoQ1NTVmFsdWUm
IHZhbHVlLCBUcmFja3NEYQogewogICAgIC8vIEhhbmRsZSAnbm9uZScuCiAgICAgaWYgKGlzPENT
U1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpCi0gICAgICAgIHJldHVybiBkb3duY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZT4odmFsdWUpLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmU7CisgICAgICAg
IHJldHVybiBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLnZhbHVlSUQoKSA9PSBD
U1NWYWx1ZU5vbmU7CiAKICAgICBpZiAoIWlzPENTU1ZhbHVlTGlzdD4odmFsdWUpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC05MzksMTEgKzkzOSwxMSBAQCBpbmxpbmUgYm9vbCBTdHlsZUJ1
aWxkZXJDb252ZXJ0ZXI6OmNyZWF0ZUdyaWRQb3NpdGlvbihDU1NWYWx1ZSYgdmFsdWUsIEdyaWRQ
b3NpdAogICAgICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlPih2YWx1ZSk7CiAgICAgICAgIC8vIFdlIHRyYW5zbGF0ZSA8aWRlbnQ+IHRvIDxzdHJp
bmc+IGR1cmluZyBwYXJzaW5nIGFzIGl0IG1ha2VzIGhhbmRsaW5nIGl0IHNpbXBsZXIuCiAgICAg
ICAgIGlmIChwcmltaXRpdmVWYWx1ZS5pc1N0cmluZygpKSB7Ci0gICAgICAgICAgICBwb3NpdGlv
bi5zZXROYW1lZEdyaWRBcmVhKHByaW1pdGl2ZVZhbHVlLmdldFN0cmluZ1ZhbHVlKCkpOworICAg
ICAgICAgICAgcG9zaXRpb24uc2V0TmFtZWRHcmlkQXJlYShwcmltaXRpdmVWYWx1ZS5zdHJpbmdW
YWx1ZSgpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKLSAgICAgICAg
QVNTRVJUKHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZUF1dG8pOworICAg
ICAgICBBU1NFUlQocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlQXV0byk7CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtOTUzLDcgKzk1Myw3IEBAIGlubGluZSBi
b29sIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y3JlYXRlR3JpZFBvc2l0aW9uKENTU1ZhbHVlJiB2
YWx1ZSwgR3JpZFBvc2l0CiAgICAgYXV0byBpdCA9IHZhbHVlcy5iZWdpbigpOwogICAgIENTU1By
aW1pdGl2ZVZhbHVlKiBjdXJyZW50VmFsdWUgPSAmZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+
KGl0LT5nZXQoKSk7CiAgICAgYm9vbCBpc1NwYW5Qb3NpdGlvbiA9IGZhbHNlOwotICAgIGlmIChj
dXJyZW50VmFsdWUtPmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZVNwYW4pIHsKKyAgICBpZiAoY3Vy
cmVudFZhbHVlLT52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVTcGFuKSB7CiAgICAgICAgIGlzU3BhblBv
c2l0aW9uID0gdHJ1ZTsKICAgICAgICAgKytpdDsKICAgICAgICAgY3VycmVudFZhbHVlID0gaXQg
IT0gdmFsdWVzLmVuZCgpID8gJmRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihpdC0+Z2V0KCkp
IDogbnVsbHB0cjsKQEAgLTk2MSwxNCArOTYxLDE0IEBAIGlubGluZSBib29sIFN0eWxlQnVpbGRl
ckNvbnZlcnRlcjo6Y3JlYXRlR3JpZFBvc2l0aW9uKENTU1ZhbHVlJiB2YWx1ZSwgR3JpZFBvc2l0
CiAKICAgICBpbnQgZ3JpZExpbmVOdW1iZXIgPSAwOwogICAgIGlmIChjdXJyZW50VmFsdWUgJiYg
Y3VycmVudFZhbHVlLT5pc051bWJlcigpKSB7Ci0gICAgICAgIGdyaWRMaW5lTnVtYmVyID0gY3Vy
cmVudFZhbHVlLT5nZXRJbnRWYWx1ZSgpOworICAgICAgICBncmlkTGluZU51bWJlciA9IGN1cnJl
bnRWYWx1ZS0+aW50VmFsdWUoKTsKICAgICAgICAgKytpdDsKICAgICAgICAgY3VycmVudFZhbHVl
ID0gaXQgIT0gdmFsdWVzLmVuZCgpID8gJmRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihpdC0+
Z2V0KCkpIDogbnVsbHB0cjsKICAgICB9CiAKICAgICBTdHJpbmcgZ3JpZExpbmVOYW1lOwogICAg
IGlmIChjdXJyZW50VmFsdWUgJiYgY3VycmVudFZhbHVlLT5pc1N0cmluZygpKSB7Ci0gICAgICAg
IGdyaWRMaW5lTmFtZSA9IGN1cnJlbnRWYWx1ZS0+Z2V0U3RyaW5nVmFsdWUoKTsKKyAgICAgICAg
Z3JpZExpbmVOYW1lID0gY3VycmVudFZhbHVlLT5zdHJpbmdWYWx1ZSgpOwogICAgICAgICArK2l0
OwogICAgIH0KIApAQCAtMTAzNSwxNSArMTAzNSwxNSBAQCBpbmxpbmUgR3JpZEF1dG9GbG93IFN0
eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEdyaWRBdXRvRmxvdyhTdHlsZVJlc29sdmVyJiwg
QwogICAgIGF1dG8qIHNlY29uZCA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihsaXN0Lml0
ZW0oMSkpOwogCiAgICAgR3JpZEF1dG9GbG93IGF1dG9GbG93ID0gUmVuZGVyU3R5bGU6OmluaXRp
YWxHcmlkQXV0b0Zsb3coKTsKLSAgICBzd2l0Y2ggKGZpcnN0LmdldFZhbHVlSUQoKSkgeworICAg
IHN3aXRjaCAoZmlyc3QudmFsdWVJRCgpKSB7CiAgICAgY2FzZSBDU1NWYWx1ZVJvdzoKLSAgICAg
ICAgaWYgKHNlY29uZCAmJiBzZWNvbmQtPmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZURlbnNlKQor
ICAgICAgICBpZiAoc2Vjb25kICYmIHNlY29uZC0+dmFsdWVJRCgpID09IENTU1ZhbHVlRGVuc2Up
CiAgICAgICAgICAgICBhdXRvRmxvdyA9ICBBdXRvRmxvd1Jvd0RlbnNlOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBhdXRvRmxvdyA9IEF1dG9GbG93Um93OwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIENTU1ZhbHVlQ29sdW1uOgotICAgICAgICBpZiAoc2Vjb25kICYmIHNlY29uZC0+Z2V0
VmFsdWVJRCgpID09IENTU1ZhbHVlRGVuc2UpCisgICAgICAgIGlmIChzZWNvbmQgJiYgc2Vjb25k
LT52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVEZW5zZSkKICAgICAgICAgICAgIGF1dG9GbG93ID0gQXV0
b0Zsb3dDb2x1bW5EZW5zZTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgYXV0b0Zsb3cgPSBB
dXRvRmxvd0NvbHVtbjsKQEAgLTEwNzAsMTQgKzEwNzAsMTQgQEAgaW5saW5lIE9wdGlvbmFsPExl
bmd0aD4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0V29yZFNwYWNpbmcoU3R5bGVSZXNv
bHZlciYKIHsKICAgICBPcHRpb25hbDxMZW5ndGg+IHdvcmRTcGFjaW5nOwogICAgIGF1dG8mIHBy
aW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKLSAgICBp
ZiAocHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlTm9ybWFsKQorICAgIGlm
IChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb3JtYWwpCiAgICAgICAgIHdv
cmRTcGFjaW5nID0gUmVuZGVyU3R5bGU6OmluaXRpYWxXb3JkU3BhY2luZygpOwogICAgIGVsc2Ug
aWYgKHByaW1pdGl2ZVZhbHVlLmlzTGVuZ3RoKCkpCiAgICAgICAgIHdvcmRTcGFjaW5nID0gcHJp
bWl0aXZlVmFsdWUuY29tcHV0ZUxlbmd0aDxMZW5ndGg+KGNzc3RvTGVuZ3RoQ29udmVyc2lvbkRh
dGFXaXRoVGV4dFpvb21GYWN0b3Ioc3R5bGVSZXNvbHZlcikpOwogICAgIGVsc2UgaWYgKHByaW1p
dGl2ZVZhbHVlLmlzUGVyY2VudGFnZSgpKQotICAgICAgICB3b3JkU3BhY2luZyA9IExlbmd0aChj
bGFtcFRvPGZsb2F0PihwcmltaXRpdmVWYWx1ZS5nZXREb3VibGVWYWx1ZSgpLCBtaW5WYWx1ZUZv
ckNzc0xlbmd0aCwgbWF4VmFsdWVGb3JDc3NMZW5ndGgpLCBQZXJjZW50KTsKKyAgICAgICAgd29y
ZFNwYWNpbmcgPSBMZW5ndGgoY2xhbXBUbzxmbG9hdD4ocHJpbWl0aXZlVmFsdWUuZG91YmxlVmFs
dWUoKSwgbWluVmFsdWVGb3JDc3NMZW5ndGgsIG1heFZhbHVlRm9yQ3NzTGVuZ3RoKSwgUGVyY2Vu
dCk7CiAgICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUuaXNOdW1iZXIoKSkKLSAgICAgICAgd29y
ZFNwYWNpbmcgPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUuZ2V0RG91YmxlVmFsdWUoKSwgRml4ZWQp
OworICAgICAgICB3b3JkU3BhY2luZyA9IExlbmd0aChwcmltaXRpdmVWYWx1ZS5kb3VibGVWYWx1
ZSgpLCBGaXhlZCk7CiAKICAgICByZXR1cm4gd29yZFNwYWNpbmc7CiB9CkBAIC0xMDg1LDE0ICsx
MDg1LDE0IEBAIGlubGluZSBPcHRpb25hbDxMZW5ndGg+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6
Y29udmVydFdvcmRTcGFjaW5nKFN0eWxlUmVzb2x2ZXImCiBpbmxpbmUgT3B0aW9uYWw8ZmxvYXQ+
IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFBlcnNwZWN0aXZlKFN0eWxlUmVzb2x2ZXIm
IHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBhdXRvJiBwcmltaXRpdmVW
YWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7Ci0gICAgaWYgKHByaW1p
dGl2ZVZhbHVlLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUpCisgICAgaWYgKHByaW1pdGl2
ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUpCiAgICAgICAgIHJldHVybiAwLmY7CiAK
ICAgICBmbG9hdCBwZXJzcGVjdGl2ZSA9IC0xOwogICAgIGlmIChwcmltaXRpdmVWYWx1ZS5pc0xl
bmd0aCgpKQogICAgICAgICBwZXJzcGVjdGl2ZSA9IHByaW1pdGl2ZVZhbHVlLmNvbXB1dGVMZW5n
dGg8ZmxvYXQ+KHN0eWxlUmVzb2x2ZXIuc3RhdGUoKS5jc3NUb0xlbmd0aENvbnZlcnNpb25EYXRh
KCkpOwogICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLmlzTnVtYmVyKCkpCi0gICAgICAgIHBl
cnNwZWN0aXZlID0gcHJpbWl0aXZlVmFsdWUuZ2V0RG91YmxlVmFsdWUoKSAqIHN0eWxlUmVzb2x2
ZXIuc3RhdGUoKS5jc3NUb0xlbmd0aENvbnZlcnNpb25EYXRhKCkuem9vbSgpOworICAgICAgICBw
ZXJzcGVjdGl2ZSA9IHByaW1pdGl2ZVZhbHVlLmRvdWJsZVZhbHVlKCkgKiBzdHlsZVJlc29sdmVy
LnN0YXRlKCkuY3NzVG9MZW5ndGhDb252ZXJzaW9uRGF0YSgpLnpvb20oKTsKICAgICBlbHNlCiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogCkBAIC0xMTAzLDcgKzExMDMsNyBAQCBpbmxp
bmUgT3B0aW9uYWw8TGVuZ3RoPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRNYXJxdWVl
SW5jcmVtZW50KFN0eWxlUmVzbwogewogICAgIE9wdGlvbmFsPExlbmd0aD4gbWFycXVlZUxlbmd0
aDsKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
Pih2YWx1ZSk7Ci0gICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkpIHsKKyAg
ICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSkgewogICAgIGNhc2UgQ1NTVmFsdWVT
bWFsbDoKICAgICAgICAgbWFycXVlZUxlbmd0aCA9IExlbmd0aCgxLCBGaXhlZCk7IC8vIDFweC4K
ICAgICAgICAgYnJlYWs7CkBAIC0xMTM2LDcgKzExMzYsNyBAQCBpbmxpbmUgT3B0aW9uYWw8Rmls
dGVyT3BlcmF0aW9ucz4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0RmlsdGVyT3BlcmF0
aW9ucwogaW5saW5lIEZvbnRGZWF0dXJlU2V0dGluZ3MgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpj
b252ZXJ0Rm9udEZlYXR1cmVTZXR0aW5ncyhTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmIHZhbHVl
KQogewogICAgIGlmIChpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKSB7Ci0gICAgICAgIEFT
U0VSVChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLmdldFZhbHVlSUQoKSA9PSBD
U1NWYWx1ZU5vcm1hbCk7CisgICAgICAgIEFTU0VSVChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZT4odmFsdWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vcm1hbCk7CiAgICAgICAgIHJldHVybiB7
IH07CiAgICAgfQogCkBAIC0xMTUyLDcgKzExNTIsNyBAQCBpbmxpbmUgRm9udEZlYXR1cmVTZXR0
aW5ncyBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRGb250RmVhdHVyZVNldHRpbmdzKFN0
eQogaW5saW5lIEZvbnRWYXJpYXRpb25TZXR0aW5ncyBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNv
bnZlcnRGb250VmFyaWF0aW9uU2V0dGluZ3MoU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJiB2YWx1
ZSkKIHsKICAgICBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSkgewotICAgICAgICBB
U1NFUlQoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS5nZXRWYWx1ZUlEKCkgPT0g
Q1NTVmFsdWVOb3JtYWwpOworICAgICAgICBBU1NFUlQoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWU+KHZhbHVlKS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb3JtYWwpOwogICAgICAgICByZXR1cm4g
eyB9OwogICAgIH0KIApAQCAtMTE2OCw3ICsxMTY4LDcgQEAgaW5saW5lIEZvbnRWYXJpYXRpb25T
ZXR0aW5ncyBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRGb250VmFyaWF0aW9uU2V0dGlu
Z3MKICNpZiBQTEFURk9STShJT1MpCiBpbmxpbmUgYm9vbCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6
OmNvbnZlcnRUb3VjaENhbGxvdXQoU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJiB2YWx1ZSkKIHsK
LSAgICByZXR1cm4gIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGRvd25jYXN0PENTU1By
aW1pdGl2ZVZhbHVlPih2YWx1ZSkuZ2V0U3RyaW5nVmFsdWUoKSwgIm5vbmUiKTsKKyAgICByZXR1
cm4gIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlPih2YWx1ZSkuc3RyaW5nVmFsdWUoKSwgIm5vbmUiKTsKIH0KICNlbmRpZgogCkBAIC0xMTgy
LDcgKzExODIsNyBAQCBpbmxpbmUgQ29sb3IgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0
VGFwSGlnaGxpZ2h0Q29sb3IoU3R5bGVSZXNvbHZlciYgc3R5bAogI2lmIEVOQUJMRShBQ0NFTEVS
QVRFRF9PVkVSRkxPV19TQ1JPTExJTkcpCiBpbmxpbmUgYm9vbCBTdHlsZUJ1aWxkZXJDb252ZXJ0
ZXI6OmNvbnZlcnRPdmVyZmxvd1Njcm9sbGluZyhTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmIHZh
bHVlKQogewotICAgIHJldHVybiBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLmdl
dFZhbHVlSUQoKSA9PSBDU1NWYWx1ZVRvdWNoOworICAgIHJldHVybiBkb3duY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZT4odmFsdWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZVRvdWNoOwogfQogI2VuZGlm
CiAKQEAgLTEyMDYsNyArMTIwNiw3IEBAIGlubGluZSBWZWN0b3I8U1ZHTGVuZ3RoPiBTdHlsZUJ1
aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTVkdMZW5ndGhWZWN0b3IoU3R5bGVSZXNvCiBpbmxpbmUg
VmVjdG9yPFNWR0xlbmd0aD4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U3Ryb2tlRGFz
aEFycmF5KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKIHsK
ICAgICBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSkgewotICAgICAgICBBU1NFUlQo
ZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFs
dWVOb25lKTsKKyAgICAgICAgQVNTRVJUKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1
ZSkudmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZSk7CiAgICAgICAgIHJldHVybiBTVkdSZW5kZXJT
dHlsZTo6aW5pdGlhbFN0cm9rZURhc2hBcnJheSgpOwogICAgIH0KIApAQCAtMTIxNiwxMiArMTIx
NiwxMiBAQCBpbmxpbmUgVmVjdG9yPFNWR0xlbmd0aD4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpj
b252ZXJ0U3Ryb2tlRGFzaEFycmF5KFN0eWxlUmVzbwogaW5saW5lIFBhaW50T3JkZXIgU3R5bGVC
dWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UGFpbnRPcmRlcihTdHlsZVJlc29sdmVyJiwgQ1NTVmFs
dWUmIHZhbHVlKQogewogICAgIGlmIChpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKSB7Ci0g
ICAgICAgIEFTU0VSVChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLmdldFZhbHVl
SUQoKSA9PSBDU1NWYWx1ZU5vcm1hbCk7CisgICAgICAgIEFTU0VSVChkb3duY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZT4odmFsdWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vcm1hbCk7CiAgICAgICAg
IHJldHVybiBQYWludE9yZGVyTm9ybWFsOwogICAgIH0KIAogICAgIGF1dG8mIG9yZGVyVHlwZUxp
c3QgPSBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KHZhbHVlKTsKLSAgICBzd2l0Y2ggKGRvd25jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlPigqb3JkZXJUeXBlTGlzdC5pdGVtV2l0aG91dEJvdW5kc0NoZWNr
KDApKS5nZXRWYWx1ZUlEKCkpIHsKKyAgICBzd2l0Y2ggKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlPigqb3JkZXJUeXBlTGlzdC5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDApKS52YWx1ZUlEKCkp
IHsKICAgICBjYXNlIENTU1ZhbHVlRmlsbDoKICAgICAgICAgcmV0dXJuIG9yZGVyVHlwZUxpc3Qu
bGVuZ3RoKCkgPiAxID8gUGFpbnRPcmRlckZpbGxNYXJrZXJzIDogUGFpbnRPcmRlckZpbGw7CiAg
ICAgY2FzZSBDU1NWYWx1ZVN0cm9rZToKQEAgLTEyMzcsNyArMTIzNyw3IEBAIGlubGluZSBQYWlu
dE9yZGVyIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFBhaW50T3JkZXIoU3R5bGVSZXNv
bHZlciYsIENTU1ZhCiBpbmxpbmUgZmxvYXQgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0
T3BhY2l0eShTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGF1dG8mIHBy
aW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKLSAgICBm
bG9hdCBvcGFjaXR5ID0gcHJpbWl0aXZlVmFsdWUuZ2V0RmxvYXRWYWx1ZSgpOworICAgIGZsb2F0
IG9wYWNpdHkgPSBwcmltaXRpdmVWYWx1ZS5mbG9hdFZhbHVlKCk7CiAgICAgaWYgKHByaW1pdGl2
ZVZhbHVlLmlzUGVyY2VudGFnZSgpKQogICAgICAgICBvcGFjaXR5IC89IDEwMC4wZjsKICAgICBy
ZXR1cm4gb3BhY2l0eTsKQEAgLTEyNDgsNyArMTI0OCw3IEBAIGlubGluZSBTdHJpbmcgU3R5bGVC
dWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U1ZHVVJJUmVmZXJlbmNlKFN0eWxlUmVzb2x2ZXImIHN0
eWxlCiAgICAgU3RyaW5nIHM7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwogICAgIGlmIChwcmltaXRpdmVWYWx1ZS5pc1VSSSgp
KQotICAgICAgICBzID0gcHJpbWl0aXZlVmFsdWUuZ2V0U3RyaW5nVmFsdWUoKTsKKyAgICAgICAg
cyA9IHByaW1pdGl2ZVZhbHVlLnN0cmluZ1ZhbHVlKCk7CiAKICAgICByZXR1cm4gU1ZHVVJJUmVm
ZXJlbmNlOjpmcmFnbWVudElkZW50aWZpZXJGcm9tSVJJU3RyaW5nKHMsIHN0eWxlUmVzb2x2ZXIu
ZG9jdW1lbnQoKSk7CiB9CkBAIC0xMjYzLDggKzEyNjMsOCBAQCBpbmxpbmUgU3R5bGVTZWxmQWxp
Z25tZW50RGF0YSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTZWxmT3JEZWZhdWx0QWxp
Z25tZQogewogICAgIFN0eWxlU2VsZkFsaWdubWVudERhdGEgYWxpZ25tZW50RGF0YSA9IFJlbmRl
clN0eWxlOjppbml0aWFsU2VsZkFsaWdubWVudCgpOwogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVl
ID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKLSAgICBpZiAoUGFpciogcGFp
clZhbHVlID0gcHJpbWl0aXZlVmFsdWUuZ2V0UGFpclZhbHVlKCkpIHsKLSAgICAgICAgaWYgKHBh
aXJWYWx1ZS0+Zmlyc3QoKS0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlTGVnYWN5KSB7CisgICAg
aWYgKFBhaXIqIHBhaXJWYWx1ZSA9IHByaW1pdGl2ZVZhbHVlLnBhaXJWYWx1ZSgpKSB7CisgICAg
ICAgIGlmIChwYWlyVmFsdWUtPmZpcnN0KCktPnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUxlZ2FjeSkg
ewogICAgICAgICAgICAgYWxpZ25tZW50RGF0YS5zZXRQb3NpdGlvblR5cGUoTGVnYWN5UG9zaXRp
b24pOwogICAgICAgICAgICAgYWxpZ25tZW50RGF0YS5zZXRQb3NpdGlvbigqcGFpclZhbHVlLT5z
ZWNvbmQoKSk7CiAgICAgICAgIH0gZWxzZSB7CkBAIC0xMjgyLDE3ICsxMjgyLDE3IEBAIGlubGlu
ZSBTdHlsZUNvbnRlbnRBbGlnbm1lbnREYXRhIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVy
dENvbnRlbnRBbGlnbm1lbnRECiAjaWYgRU5BQkxFKENTU19HUklEX0xBWU9VVCkKICAgICBpZiAo
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5pc0NTU0dyaWRMYXlvdXRF
bmFibGVkKCkpIHsKICAgICAgICAgYXV0byYgY29udGVudFZhbHVlID0gZG93bmNhc3Q8Q1NTQ29u
dGVudERpc3RyaWJ1dGlvblZhbHVlPih2YWx1ZSk7Ci0gICAgICAgIGlmIChjb250ZW50VmFsdWUu
ZGlzdHJpYnV0aW9uKCktPmdldFZhbHVlSUQoKSAhPSBDU1NWYWx1ZUludmFsaWQpCisgICAgICAg
IGlmIChjb250ZW50VmFsdWUuZGlzdHJpYnV0aW9uKCktPnZhbHVlSUQoKSAhPSBDU1NWYWx1ZUlu
dmFsaWQpCiAgICAgICAgICAgICBhbGlnbm1lbnREYXRhLnNldERpc3RyaWJ1dGlvbihjb250ZW50
VmFsdWUuZGlzdHJpYnV0aW9uKCkuZ2V0KCkpOwotICAgICAgICBpZiAoY29udGVudFZhbHVlLnBv
c2l0aW9uKCktPmdldFZhbHVlSUQoKSAhPSBDU1NWYWx1ZUludmFsaWQpCisgICAgICAgIGlmIChj
b250ZW50VmFsdWUucG9zaXRpb24oKS0+dmFsdWVJRCgpICE9IENTU1ZhbHVlSW52YWxpZCkKICAg
ICAgICAgICAgIGFsaWdubWVudERhdGEuc2V0UG9zaXRpb24oY29udGVudFZhbHVlLnBvc2l0aW9u
KCkuZ2V0KCkpOwotICAgICAgICBpZiAoY29udGVudFZhbHVlLm92ZXJmbG93KCktPmdldFZhbHVl
SUQoKSAhPSBDU1NWYWx1ZUludmFsaWQpCisgICAgICAgIGlmIChjb250ZW50VmFsdWUub3ZlcmZs
b3coKS0+dmFsdWVJRCgpICE9IENTU1ZhbHVlSW52YWxpZCkKICAgICAgICAgICAgIGFsaWdubWVu
dERhdGEuc2V0T3ZlcmZsb3coY29udGVudFZhbHVlLm92ZXJmbG93KCkuZ2V0KCkpOwogICAgICAg
ICByZXR1cm4gYWxpZ25tZW50RGF0YTsKICAgICB9CiAjZW5kaWYKICAgICBhdXRvJiBwcmltaXRp
dmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7Ci0gICAgc3dpdGNo
IChwcmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkpIHsKKyAgICBzd2l0Y2ggKHByaW1pdGl2ZVZh
bHVlLnZhbHVlSUQoKSkgewogICAgIGNhc2UgQ1NTVmFsdWVTdHJldGNoOgogICAgIGNhc2UgQ1NT
VmFsdWVTcGFjZUJldHdlZW46CiAgICAgY2FzZSBDU1NWYWx1ZVNwYWNlQXJvdW5kOgpAQCAtMTMx
MSw3ICsxMzExLDcgQEAgaW5saW5lIFN0eWxlQ29udGVudEFsaWdubWVudERhdGEgU3R5bGVCdWls
ZGVyQ29udmVydGVyOjpjb252ZXJ0Q29udGVudEFsaWdubWVudEQKIAogaW5saW5lIEVHbHlwaE9y
aWVudGF0aW9uIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEdseXBoT3JpZW50YXRpb24o
U3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKLSAgICBmbG9hdCBhbmdsZSA9IGZh
YnNmKGZtb2RmKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkuZ2V0RmxvYXRWYWx1
ZSgpLCAzNjAuMGYpKTsKKyAgICBmbG9hdCBhbmdsZSA9IGZhYnNmKGZtb2RmKGRvd25jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkuZmxvYXRWYWx1ZSgpLCAzNjAuMGYpKTsKICAgICBpZiAo
YW5nbGUgPD0gNDUuMGYgfHwgYW5nbGUgPiAzMTUuMGYpCiAgICAgICAgIHJldHVybiBHT18wREVH
OwogICAgIGlmIChhbmdsZSA+IDQ1LjBmICYmIGFuZ2xlIDw9IDEzNS4wZikKQEAgLTEzMjMsNyAr
MTMyMyw3IEBAIGlubGluZSBFR2x5cGhPcmllbnRhdGlvbiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6
OmNvbnZlcnRHbHlwaE9yaWVudGF0aW9uKFN0eWxlUmVzCiAKIGlubGluZSBFR2x5cGhPcmllbnRh
dGlvbiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRHbHlwaE9yaWVudGF0aW9uT3JBdXRv
KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKLSAgICBp
ZiAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS5nZXRWYWx1ZUlEKCkgPT0gQ1NT
VmFsdWVBdXRvKQorICAgIGlmIChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLnZh
bHVlSUQoKSA9PSBDU1NWYWx1ZUF1dG8pCiAgICAgICAgIHJldHVybiBHT19BVVRPOwogICAgIHJl
dHVybiBjb252ZXJ0R2x5cGhPcmllbnRhdGlvbihzdHlsZVJlc29sdmVyLCB2YWx1ZSk7CiB9CkBA
IC0xMzMxLDcgKzEzMzEsNyBAQCBpbmxpbmUgRUdseXBoT3JpZW50YXRpb24gU3R5bGVCdWlsZGVy
Q29udmVydGVyOjpjb252ZXJ0R2x5cGhPcmllbnRhdGlvbk9yQXV0byhTdAogaW5saW5lIE9wdGlv
bmFsPExlbmd0aD4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TGluZUhlaWdodChTdHls
ZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUsIGZsb2F0IG11bHRpcGxp
ZXIpCiB7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZT4odmFsdWUpOwotICAgIGlmIChwcmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NT
VmFsdWVOb3JtYWwpCisgICAgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1
ZU5vcm1hbCkKICAgICAgICAgcmV0dXJuIFJlbmRlclN0eWxlOjppbml0aWFsTGluZUhlaWdodCgp
OwogCiAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLmlzTGVuZ3RoKCkpIHsKQEAgLTEzNDIsMTEgKzEz
NDIsMTEgQEAgaW5saW5lIE9wdGlvbmFsPExlbmd0aD4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpj
b252ZXJ0TGluZUhlaWdodChTdHlsZVJlc29sdmVyJgogICAgIH0KICAgICBpZiAocHJpbWl0aXZl
VmFsdWUuaXNQZXJjZW50YWdlKCkpIHsKICAgICAgICAgLy8gRklYTUU6IHBlcmNlbnRhZ2Ugc2hv
dWxkIG5vdCBiZSByZXN0cmljdGVkIHRvIGFuIGludGVnZXIgaGVyZS4KLSAgICAgICAgcmV0dXJu
IExlbmd0aCgoc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5jb21wdXRlZEZvbnRTaXplKCkgKiBwcmlt
aXRpdmVWYWx1ZS5nZXRJbnRWYWx1ZSgpKSAvIDEwMCwgRml4ZWQpOworICAgICAgICByZXR1cm4g
TGVuZ3RoKChzdHlsZVJlc29sdmVyLnN0eWxlKCktPmNvbXB1dGVkRm9udFNpemUoKSAqIHByaW1p
dGl2ZVZhbHVlLmludFZhbHVlKCkpIC8gMTAwLCBGaXhlZCk7CiAgICAgfQogICAgIGlmIChwcmlt
aXRpdmVWYWx1ZS5pc051bWJlcigpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBudW1iZXIgYW5kIHBl
cmNlbnRhZ2UgdmFsdWVzIHNob3VsZCBwcm9kdWNlIHRoZSBzYW1lIHR5cGUgb2YgTGVuZ3RoIChp
ZS4gRml4ZWQgb3IgUGVyY2VudCkuCi0gICAgICAgIHJldHVybiBMZW5ndGgocHJpbWl0aXZlVmFs
dWUuZ2V0RG91YmxlVmFsdWUoKSAqIG11bHRpcGxpZXIgKiAxMDAuMCwgUGVyY2VudCk7CisgICAg
ICAgIHJldHVybiBMZW5ndGgocHJpbWl0aXZlVmFsdWUuZG91YmxlVmFsdWUoKSAqIG11bHRpcGxp
ZXIgKiAxMDAuMCwgUGVyY2VudCk7CiAgICAgfQogICAgIHJldHVybiBOdWxsb3B0OwogfQpAQCAt
MTM1NCwxNCArMTM1NCwxNCBAQCBpbmxpbmUgT3B0aW9uYWw8TGVuZ3RoPiBTdHlsZUJ1aWxkZXJD
b252ZXJ0ZXI6OmNvbnZlcnRMaW5lSGVpZ2h0KFN0eWxlUmVzb2x2ZXImCiBGb250U3ludGhlc2lz
IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEZvbnRTeW50aGVzaXMoU3R5bGVSZXNvbHZl
ciYsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZh
bHVlKSkgewotICAgICAgICBBU1NFUlQoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVl
KS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKTsKKyAgICAgICAgQVNTRVJUKGRvd25jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkudmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZSk7CiAg
ICAgICAgIHJldHVybiBGb250U3ludGhlc2lzTm9uZTsKICAgICB9CiAKICAgICBGb250U3ludGhl
c2lzIHJlc3VsdCA9IEZvbnRTeW50aGVzaXNOb25lOwogICAgIEFTU0VSVChpczxDU1NWYWx1ZUxp
c3Q+KHZhbHVlKSk7CiAgICAgZm9yIChDU1NWYWx1ZSYgdiA6IGRvd25jYXN0PENTU1ZhbHVlTGlz
dD4odmFsdWUpKSB7Ci0gICAgICAgIHN3aXRjaCAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+
KHYpLmdldFZhbHVlSUQoKSkgeworICAgICAgICBzd2l0Y2ggKGRvd25jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlPih2KS52YWx1ZUlEKCkpIHsKICAgICAgICAgY2FzZSBDU1NWYWx1ZVdlaWdodDoKICAg
ICAgICAgICAgIHJlc3VsdCB8PSBGb250U3ludGhlc2lzV2VpZ2h0OwogICAgICAgICAgICAgYnJl
YWs7CkBAIC0xMzgwLDkgKzEzODAsOSBAQCBGb250U3ludGhlc2lzIFN0eWxlQnVpbGRlckNvbnZl
cnRlcjo6Y29udmVydEZvbnRTeW50aGVzaXMoU3R5bGVSZXNvbHZlciYsIENTU1ZhbAogaW5saW5l
IEJyZWFrQmV0d2VlbiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRQYWdlQnJlYWtCZXR3
ZWVuKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0byYgcHJpbWl0
aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwotICAgIGlmIChw
cmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVBbHdheXMpCisgICAgaWYgKHBy
aW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUFsd2F5cykKICAgICAgICAgcmV0dXJu
IFBhZ2VCcmVha0JldHdlZW47Ci0gICAgaWYgKHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQoKSA9
PSBDU1NWYWx1ZUF2b2lkKQorICAgIGlmIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NT
VmFsdWVBdm9pZCkKICAgICAgICAgcmV0dXJuIEF2b2lkUGFnZUJyZWFrQmV0d2VlbjsKICAgICBy
ZXR1cm4gcHJpbWl0aXZlVmFsdWU7CiB9CkBAIC0xMzkwLDcgKzEzOTAsNyBAQCBpbmxpbmUgQnJl
YWtCZXR3ZWVuIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFBhZ2VCcmVha0JldHdlZW4o
U3R5bGVSZXNvbHZlcgogaW5saW5lIEJyZWFrSW5zaWRlIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6
Y29udmVydFBhZ2VCcmVha0luc2lkZShTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmIHZhbHVlKQog
ewogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+
KHZhbHVlKTsKLSAgICBpZiAocHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVl
QXZvaWQpCisgICAgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUF2b2lk
KQogICAgICAgICByZXR1cm4gQXZvaWRQYWdlQnJlYWtJbnNpZGU7CiAgICAgcmV0dXJuIHByaW1p
dGl2ZVZhbHVlOwogfQpAQCAtMTM5OCw5ICsxMzk4LDkgQEAgaW5saW5lIEJyZWFrSW5zaWRlIFN0
eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFBhZ2VCcmVha0luc2lkZShTdHlsZVJlc29sdmVy
JiwKIGlubGluZSBCcmVha0JldHdlZW4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Q29s
dW1uQnJlYWtCZXR3ZWVuKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAg
YXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUp
OwotICAgIGlmIChwcmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVBbHdheXMp
CisgICAgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUFsd2F5cykKICAg
ICAgICAgcmV0dXJuIENvbHVtbkJyZWFrQmV0d2VlbjsKLSAgICBpZiAocHJpbWl0aXZlVmFsdWUu
Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlQXZvaWQpCisgICAgaWYgKHByaW1pdGl2ZVZhbHVlLnZh
bHVlSUQoKSA9PSBDU1NWYWx1ZUF2b2lkKQogICAgICAgICByZXR1cm4gQXZvaWRDb2x1bW5CcmVh
a0JldHdlZW47CiAgICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlOwogfQpAQCAtMTQwOCw3ICsxNDA4
LDcgQEAgaW5saW5lIEJyZWFrQmV0d2VlbiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRD
b2x1bW5CcmVha0JldHdlZW4oU3R5bGVSZXNvbHYKIGlubGluZSBCcmVha0luc2lkZSBTdHlsZUJ1
aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRDb2x1bW5CcmVha0luc2lkZShTdHlsZVJlc29sdmVyJiwg
Q1NTVmFsdWUmIHZhbHVlKQogewogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8
Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKLSAgICBpZiAocHJpbWl0aXZlVmFsdWUuZ2V0VmFs
dWVJRCgpID09IENTU1ZhbHVlQXZvaWQpCisgICAgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQo
KSA9PSBDU1NWYWx1ZUF2b2lkKQogICAgICAgICByZXR1cm4gQXZvaWRDb2x1bW5CcmVha0luc2lk
ZTsKICAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWU7CiB9CkBAIC0xNDE3LDkgKzE0MTcsOSBAQCBp
bmxpbmUgQnJlYWtJbnNpZGUgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Q29sdW1uQnJl
YWtJbnNpZGUoU3R5bGVSZXNvbHZlcgogaW5saW5lIEJyZWFrQmV0d2VlbiBTdHlsZUJ1aWxkZXJD
b252ZXJ0ZXI6OmNvbnZlcnRSZWdpb25CcmVha0JldHdlZW4oU3R5bGVSZXNvbHZlciYsIENTU1Zh
bHVlJiB2YWx1ZSkKIHsKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1By
aW1pdGl2ZVZhbHVlPih2YWx1ZSk7Ci0gICAgaWYgKHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQo
KSA9PSBDU1NWYWx1ZUFsd2F5cykKKyAgICBpZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09
IENTU1ZhbHVlQWx3YXlzKQogICAgICAgICByZXR1cm4gUmVnaW9uQnJlYWtCZXR3ZWVuOwotICAg
IGlmIChwcmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVBdm9pZCkKKyAgICBp
ZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlQXZvaWQpCiAgICAgICAgIHJl
dHVybiBBdm9pZFJlZ2lvbkJyZWFrQmV0d2VlbjsKICAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWU7
CiB9CkBAIC0xNDI3LDcgKzE0MjcsNyBAQCBpbmxpbmUgQnJlYWtCZXR3ZWVuIFN0eWxlQnVpbGRl
ckNvbnZlcnRlcjo6Y29udmVydFJlZ2lvbkJyZWFrQmV0d2VlbihTdHlsZVJlc29sdgogaW5saW5l
IEJyZWFrSW5zaWRlIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFJlZ2lvbkJyZWFrSW5z
aWRlKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0byYgcHJpbWl0
aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwotICAgIGlmIChw
cmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVBdm9pZCkKKyAgICBpZiAocHJp
bWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlQXZvaWQpCiAgICAgICAgIHJldHVybiBB
dm9pZFJlZ2lvbkJyZWFrSW5zaWRlOwogICAgIHJldHVybiBwcmltaXRpdmVWYWx1ZTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDdXN0b20uaCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDdXN0b20uaAppbmRleCBjYWFiZjMyNWM2YzVlZDdi
YTUxZDc1YWQ1YzhjOGNiMzkzMTliNGNkLi5hYTYwMmMzN2RmZDIyNjE2ODMwZWEyOGUxZDhlYTZm
YTdjOGQ1M2EwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ3Vz
dG9tLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oCkBAIC0x
OTQsMjMgKzE5NCwyMyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFs
dWVab29tKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTUwogewogICAgIGF1dG8mIHBy
aW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKIAotICAg
IGlmIChwcmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb3JtYWwpIHsKKyAg
ICBpZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlTm9ybWFsKSB7CiAgICAg
ICAgIHJlc2V0RWZmZWN0aXZlWm9vbShzdHlsZVJlc29sdmVyKTsKICAgICAgICAgc3R5bGVSZXNv
bHZlci5zZXRab29tKFJlbmRlclN0eWxlOjppbml0aWFsWm9vbSgpKTsKLSAgICB9IGVsc2UgaWYg
KHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZVJlc2V0KSB7CisgICAgfSBl
bHNlIGlmIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVSZXNldCkgewogICAg
ICAgICBzdHlsZVJlc29sdmVyLnNldEVmZmVjdGl2ZVpvb20oUmVuZGVyU3R5bGU6OmluaXRpYWxa
b29tKCkpOwogICAgICAgICBzdHlsZVJlc29sdmVyLnNldFpvb20oUmVuZGVyU3R5bGU6OmluaXRp
YWxab29tKCkpOwotICAgIH0gZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWVJRCgpID09
IENTU1ZhbHVlRG9jdW1lbnQpIHsKKyAgICB9IGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVl
SUQoKSA9PSBDU1NWYWx1ZURvY3VtZW50KSB7CiAgICAgICAgIGZsb2F0IGRvY1pvb20gPSBzdHls
ZVJlc29sdmVyLnJvb3RFbGVtZW50U3R5bGUoKSA/IHN0eWxlUmVzb2x2ZXIucm9vdEVsZW1lbnRT
dHlsZSgpLT56b29tKCkgOiBSZW5kZXJTdHlsZTo6aW5pdGlhbFpvb20oKTsKICAgICAgICAgc3R5
bGVSZXNvbHZlci5zZXRFZmZlY3RpdmVab29tKGRvY1pvb20pOwogICAgICAgICBzdHlsZVJlc29s
dmVyLnNldFpvb20oZG9jWm9vbSk7CiAgICAgfSBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS5pc1Bl
cmNlbnRhZ2UoKSkgewogICAgICAgICByZXNldEVmZmVjdGl2ZVpvb20oc3R5bGVSZXNvbHZlcik7
Ci0gICAgICAgIGlmIChmbG9hdCBwZXJjZW50ID0gcHJpbWl0aXZlVmFsdWUuZ2V0RmxvYXRWYWx1
ZSgpKQorICAgICAgICBpZiAoZmxvYXQgcGVyY2VudCA9IHByaW1pdGl2ZVZhbHVlLmZsb2F0VmFs
dWUoKSkKICAgICAgICAgICAgIHN0eWxlUmVzb2x2ZXIuc2V0Wm9vbShwZXJjZW50IC8gMTAwLjBm
KTsKICAgICB9IGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLmlzTnVtYmVyKCkpIHsKICAgICAgICAg
cmVzZXRFZmZlY3RpdmVab29tKHN0eWxlUmVzb2x2ZXIpOwotICAgICAgICBpZiAoZmxvYXQgbnVt
YmVyID0gcHJpbWl0aXZlVmFsdWUuZ2V0RmxvYXRWYWx1ZSgpKQorICAgICAgICBpZiAoZmxvYXQg
bnVtYmVyID0gcHJpbWl0aXZlVmFsdWUuZmxvYXRWYWx1ZSgpKQogICAgICAgICAgICAgc3R5bGVS
ZXNvbHZlci5zZXRab29tKG51bWJlcik7CiAgICAgfQogfQpAQCAtMjQ2LDcgKzI0Niw3IEBAIGJv
b2wgU3R5bGVCdWlsZGVyQ3VzdG9tOjpnZXRQYWdlU2l6ZUZyb21OYW1lKENTU1ByaW1pdGl2ZVZh
bHVlKiBwYWdlU2l6ZU5hbWUsIENTCiAgICAgaWYgKCFwYWdlU2l6ZU5hbWUpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIHN3aXRjaCAocGFnZVNpemVOYW1lLT5nZXRWYWx1ZUlEKCkpIHsK
KyAgICBzd2l0Y2ggKHBhZ2VTaXplTmFtZS0+dmFsdWVJRCgpKSB7CiAgICAgY2FzZSBDU1NWYWx1
ZUE1OgogICAgICAgICB3aWR0aCA9IGE1V2lkdGg7CiAgICAgICAgIGhlaWdodCA9IGE1SGVpZ2h0
OwpAQCAtMjg0LDcgKzI4NCw3IEBAIGJvb2wgU3R5bGVCdWlsZGVyQ3VzdG9tOjpnZXRQYWdlU2l6
ZUZyb21OYW1lKENTU1ByaW1pdGl2ZVZhbHVlKiBwYWdlU2l6ZU5hbWUsIENTCiAgICAgfQogCiAg
ICAgaWYgKHBhZ2VPcmllbnRhdGlvbikgewotICAgICAgICBzd2l0Y2ggKHBhZ2VPcmllbnRhdGlv
bi0+Z2V0VmFsdWVJRCgpKSB7CisgICAgICAgIHN3aXRjaCAocGFnZU9yaWVudGF0aW9uLT52YWx1
ZUlEKCkpIHsKICAgICAgICAgY2FzZSBDU1NWYWx1ZUxhbmRzY2FwZToKICAgICAgICAgICAgIHN0
ZDo6c3dhcCh3aWR0aCwgaGVpZ2h0KTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzAxLDcgKzMw
MSw3IEBAIGJvb2wgU3R5bGVCdWlsZGVyQ3VzdG9tOjpnZXRQYWdlU2l6ZUZyb21OYW1lKENTU1By
aW1pdGl2ZVZhbHVlKiBwYWdlU2l6ZU5hbWUsIENTCiBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJD
dXN0b206OmFwcGx5VmFsdWVWZXJ0aWNhbEFsaWduKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2
ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7Ci0gICAgaWYgKHByaW1pdGl2ZVZhbHVlLmdl
dFZhbHVlSUQoKSkKKyAgICBpZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpKQogICAgICAgICBz
dHlsZVJlc29sdmVyLnN0eWxlKCktPnNldFZlcnRpY2FsQWxpZ24ocHJpbWl0aXZlVmFsdWUpOwog
ICAgIGVsc2UKICAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRWZXJ0aWNhbEFsaWdu
TGVuZ3RoKHByaW1pdGl2ZVZhbHVlLmNvbnZlcnRUb0xlbmd0aDxGaXhlZEludGVnZXJDb252ZXJz
aW9uIHwgUGVyY2VudENvbnZlcnNpb24gfCBDYWxjdWxhdGVkQ29udmVyc2lvbj4oc3R5bGVSZXNv
bHZlci5zdGF0ZSgpLmNzc1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoKSkpOwpAQCAtMzE2LDEyICsz
MTYsMTIgQEAgc3RhdGljIExlbmd0aCBjb252ZXJ0VG9JbnRMZW5ndGgoY29uc3QgQ1NTUHJpbWl0
aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlLCBjb25zdAogaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVy
Q3VzdG9tOjphcHBseVZhbHVlV2Via2l0RGFzaGJvYXJkUmVnaW9uKFN0eWxlUmVzb2x2ZXImIHN0
eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1
ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7Ci0gICAgaWYgKHByaW1pdGl2
ZVZhbHVlLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUpIHsKKyAgICBpZiAocHJpbWl0aXZl
VmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZSkgewogICAgICAgICBzdHlsZVJlc29sdmVy
LnN0eWxlKCktPnNldERhc2hib2FyZFJlZ2lvbnMoUmVuZGVyU3R5bGU6Om5vbmVEYXNoYm9hcmRS
ZWdpb25zKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgRGFzaGJvYXJkUmVnaW9u
KiByZWdpb24gPSBwcmltaXRpdmVWYWx1ZS5nZXREYXNoYm9hcmRSZWdpb25WYWx1ZSgpOworICAg
IGF1dG8qIHJlZ2lvbiA9IHByaW1pdGl2ZVZhbHVlLmRhc2hib2FyZFJlZ2lvblZhbHVlKCk7CiAg
ICAgaWYgKCFyZWdpb24pCiAgICAgICAgIHJldHVybjsKIApAQCAtMzc0LDkgKzM3NCw5IEBAIGlu
bGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUltYWdlUmVzb2x1dGlvbihT
dHlsZVJlc29sdmVyJiBzdHlsZVJlCiAgICAgZG91YmxlIHJlc29sdXRpb24gPSBSZW5kZXJTdHls
ZTo6aW5pdGlhbEltYWdlUmVzb2x1dGlvbigpOwogICAgIGZvciAoYXV0byYgaXRlbSA6IGRvd25j
YXN0PENTU1ZhbHVlTGlzdD4odmFsdWUpKSB7CiAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlJiBw
cmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihpdGVtLmdldCgpKTsK
LSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZUZyb21J
bWFnZSkKKyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUZy
b21JbWFnZSkKICAgICAgICAgICAgIHNvdXJjZSA9IEltYWdlUmVzb2x1dGlvbkZyb21JbWFnZTsK
LSAgICAgICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVl
U25hcCkKKyAgICAgICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1Zh
bHVlU25hcCkKICAgICAgICAgICAgIHNuYXAgPSBJbWFnZVJlc29sdXRpb25TbmFwUGl4ZWxzOwog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXNvbHV0aW9uID0gcHJpbWl0aXZlVmFsdWUuZ2V0
RG91YmxlVmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19EUFBYKTsKQEAgLTQzNSw3ICs0MzUs
NyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVTaXplKFN0eWxl
UmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTUwogICAgICAgICAgICAgcGFnZVNpemVUeXBlID0g
UEFHRV9TSVpFX1JFU09MVkVEOwogICAgICAgICAgICAgd2lkdGggPSBoZWlnaHQgPSBwcmltaXRp
dmVWYWx1ZS5jb21wdXRlTGVuZ3RoPExlbmd0aD4oc3R5bGVSZXNvbHZlci5zdGF0ZSgpLmNzc1Rv
TGVuZ3RoQ29udmVyc2lvbkRhdGEoKS5jb3B5V2l0aEFkanVzdGVkWm9vbSgxLjBmKSk7CiAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLmdldFZhbHVl
SUQoKSkgeworICAgICAgICAgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkpIHsK
ICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICBjYXNlIENTU1ZhbHVlQXV0bzoKQEAgLTQ5MCwxMiArNDkwLDEyIEBAIGlubGluZSB2b2lkIFN0
eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVRleHRJbmRlbnQoU3R5bGVSZXNvbHZlciYgc3R5
bGVSZXNvbHZlCiAjZW5kaWYKICAgICBmb3IgKGF1dG8mIGl0ZW0gOiBkb3duY2FzdDxDU1NWYWx1
ZUxpc3Q+KHZhbHVlKSkgewogICAgICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlPihpdGVtLmdldCgpKTsKLSAgICAgICAgaWYgKCFwcmltaXRpdmVW
YWx1ZS5nZXRWYWx1ZUlEKCkpCisgICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUudmFsdWVJRCgp
KQogICAgICAgICAgICAgbGVuZ3RoT3JQZXJjZW50YWdlVmFsdWUgPSBwcmltaXRpdmVWYWx1ZS5j
b252ZXJ0VG9MZW5ndGg8Rml4ZWRJbnRlZ2VyQ29udmVyc2lvbiB8IFBlcmNlbnRDb252ZXJzaW9u
IHwgQ2FsY3VsYXRlZENvbnZlcnNpb24+KHN0eWxlUmVzb2x2ZXIuc3RhdGUoKS5jc3NUb0xlbmd0
aENvbnZlcnNpb25EYXRhKCkpOwogI2lmIEVOQUJMRShDU1MzX1RFWFQpCi0gICAgICAgIGVsc2Ug
aWYgKHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZVdlYmtpdEVhY2hMaW5l
KQorICAgICAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVX
ZWJraXRFYWNoTGluZSkKICAgICAgICAgICAgIHRleHRJbmRlbnRMaW5lVmFsdWUgPSBUZXh0SW5k
ZW50RWFjaExpbmU7Ci0gICAgICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQo
KSA9PSBDU1NWYWx1ZVdlYmtpdEhhbmdpbmcpCisgICAgICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZh
bHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZVdlYmtpdEhhbmdpbmcpCiAgICAgICAgICAgICB0ZXh0
SW5kZW50VHlwZVZhbHVlID0gVGV4dEluZGVudEhhbmdpbmc7CiAjZW5kaWYKICAgICB9CkBAIC02
ODAsNyArNjgwLDcgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVl
Q2xpcChTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBDU1MKIHsKICAgICBhdXRvJiBwcmlt
aXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CiAKLSAgICBp
ZiAoUmVjdCogcmVjdCA9IHByaW1pdGl2ZVZhbHVlLmdldFJlY3RWYWx1ZSgpKSB7CisgICAgaWYg
KFJlY3QqIHJlY3QgPSBwcmltaXRpdmVWYWx1ZS5yZWN0VmFsdWUoKSkgewogICAgICAgICBhdXRv
IGNvbnZlcnNpb25EYXRhID0gc3R5bGVSZXNvbHZlci5zdGF0ZSgpLmNzc1RvTGVuZ3RoQ29udmVy
c2lvbkRhdGEoKTsKICAgICAgICAgTGVuZ3RoIHRvcCA9IHJlY3QtPnRvcCgpLT5jb252ZXJ0VG9M
ZW5ndGg8Rml4ZWRJbnRlZ2VyQ29udmVyc2lvbiB8IFBlcmNlbnRDb252ZXJzaW9uIHwgQXV0b0Nv
bnZlcnNpb24+KGNvbnZlcnNpb25EYXRhKTsKICAgICAgICAgTGVuZ3RoIHJpZ2h0ID0gcmVjdC0+
cmlnaHQoKS0+Y29udmVydFRvTGVuZ3RoPEZpeGVkSW50ZWdlckNvbnZlcnNpb24gfCBQZXJjZW50
Q29udmVyc2lvbiB8IEF1dG9Db252ZXJzaW9uPihjb252ZXJzaW9uRGF0YSk7CkBAIC02ODksNyAr
Njg5LDcgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlQ2xpcChT
dHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBDU1MKICAgICAgICAgc3R5bGVSZXNvbHZlci5z
dHlsZSgpLT5zZXRDbGlwKHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdCk7CiAgICAgICAgIHN0eWxl
UmVzb2x2ZXIuc3R5bGUoKS0+c2V0SGFzQ2xpcCh0cnVlKTsKICAgICB9IGVsc2UgewotICAgICAg
ICBBU1NFUlQocHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlQXV0byk7Cisg
ICAgICAgIEFTU0VSVChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVBdXRvKTsK
ICAgICAgICAgYXBwbHlJbml0aWFsQ2xpcChzdHlsZVJlc29sdmVyKTsKICAgICB9CiB9CkBAIC02
OTksMTAgKzY5OSwxMCBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFs
dWVXZWJraXRMb2NhbGUoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbAogICAgIGF1dG8mIHByaW1p
dGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKIAogICAgIEZv
bnRDYXNjYWRlRGVzY3JpcHRpb24gZm9udERlc2NyaXB0aW9uID0gc3R5bGVSZXNvbHZlci5zdHls
ZSgpLT5mb250RGVzY3JpcHRpb24oKTsKLSAgICBpZiAocHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWVJ
RCgpID09IENTU1ZhbHVlQXV0bykKKyAgICBpZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09
IENTU1ZhbHVlQXV0bykKICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldExvY2FsZShudWxsQXRv
bSk7CiAgICAgZWxzZQotICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0TG9jYWxlKHByaW1pdGl2
ZVZhbHVlLmdldFN0cmluZ1ZhbHVlKCkpOworICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0TG9j
YWxlKHByaW1pdGl2ZVZhbHVlLnN0cmluZ1ZhbHVlKCkpOwogICAgIHN0eWxlUmVzb2x2ZXIuc2V0
Rm9udERlc2NyaXB0aW9uKGZvbnREZXNjcmlwdGlvbik7CiB9CiAKQEAgLTcyMSwxMiArNzIxLDEy
IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVdlYmtpdFRleHRP
cmllbnRhdGlvbihTdHlsZVJlc29sdmVyJiBzCiBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0
b206OmFwcGx5VmFsdWVXZWJraXRUZXh0U2l6ZUFkanVzdChTdHlsZVJlc29sdmVyJiBzdHlsZVJl
c29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBk
b3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwotICAgIGlmIChwcmltaXRpdmVWYWx1
ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVBdXRvKQorICAgIGlmIChwcmltaXRpdmVWYWx1ZS52
YWx1ZUlEKCkgPT0gQ1NTVmFsdWVBdXRvKQogICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCkt
PnNldFRleHRTaXplQWRqdXN0KFRleHRTaXplQWRqdXN0bWVudChBdXRvVGV4dFNpemVBZGp1c3Rt
ZW50KSk7Ci0gICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWVJRCgpID09IENTU1Zh
bHVlTm9uZSkKKyAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFs
dWVOb25lKQogICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldFRleHRTaXplQWRqdXN0
KFRleHRTaXplQWRqdXN0bWVudChOb1RleHRTaXplQWRqdXN0bWVudCkpOwogICAgIGVsc2UKLSAg
ICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRUZXh0U2l6ZUFkanVzdChUZXh0U2l6ZUFk
anVzdG1lbnQocHJpbWl0aXZlVmFsdWUuZ2V0RmxvYXRWYWx1ZSgpKSk7CisgICAgICAgIHN0eWxl
UmVzb2x2ZXIuc3R5bGUoKS0+c2V0VGV4dFNpemVBZGp1c3QoVGV4dFNpemVBZGp1c3RtZW50KHBy
aW1pdGl2ZVZhbHVlLmZsb2F0VmFsdWUoKSkpOwogCiAgICAgc3R5bGVSZXNvbHZlci5zdGF0ZSgp
LnNldEZvbnREaXJ0eSh0cnVlKTsKIH0KQEAgLTczNSw5ICs3MzUsOSBAQCBpbmxpbmUgdm9pZCBT
dHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVXZWJraXRUZXh0U2l6ZUFkanVzdChTdHlsZVJl
c29sdmVyJiBzdAogaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlV2Vi
a2l0VGV4dFpvb20oU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHZhbHVl
KQogewogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWU+KHZhbHVlKTsKLSAgICBpZiAocHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWVJRCgpID09IENTU1Zh
bHVlTm9ybWFsKQorICAgIGlmIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVO
b3JtYWwpCiAgICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0VGV4dFpvb20oVGV4dFpv
b21Ob3JtYWwpOwotICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQoKSA9PSBD
U1NWYWx1ZVJlc2V0KQorICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBD
U1NWYWx1ZVJlc2V0KQogICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldFRleHRab29t
KFRleHRab29tUmVzZXQpOwogICAgIHN0eWxlUmVzb2x2ZXIuc3RhdGUoKS5zZXRGb250RGlydHko
dHJ1ZSk7CiB9CkBAIC03NDYsNyArNzQ2LDcgQEAgdGVtcGxhdGUgPENTU1Byb3BlcnR5SUQgaWQ+
CiBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VGV4dE9yQm94U2hhZG93VmFs
dWUoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAg
IGlmIChpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKSB7Ci0gICAgICAgIEFTU0VSVChkb3du
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5v
bmUpOworICAgICAgICBBU1NFUlQoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS52
YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKTsKICAgICAgICAgaWYgKGlkID09IENTU1Byb3BlcnR5
VGV4dFNoYWRvdykKICAgICAgICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0VGV4dFNo
YWRvdyhudWxscHRyKTsKICAgICAgICAgZWxzZQpAQCAtNzYyLDcgKzc2Miw3IEBAIGlubGluZSB2
b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlUZXh0T3JCb3hTaGFkb3dWYWx1ZShTdHlsZVJl
c29sdmVyJiBzdHlsZVJlCiAgICAgICAgIGludCB5ID0gc2hhZG93VmFsdWUueS0+Y29tcHV0ZUxl
bmd0aDxpbnQ+KGNvbnZlcnNpb25EYXRhKTsKICAgICAgICAgaW50IGJsdXIgPSBzaGFkb3dWYWx1
ZS5ibHVyID8gc2hhZG93VmFsdWUuYmx1ci0+Y29tcHV0ZUxlbmd0aDxpbnQ+KGNvbnZlcnNpb25E
YXRhKSA6IDA7CiAgICAgICAgIGludCBzcHJlYWQgPSBzaGFkb3dWYWx1ZS5zcHJlYWQgPyBzaGFk
b3dWYWx1ZS5zcHJlYWQtPmNvbXB1dGVMZW5ndGg8aW50Pihjb252ZXJzaW9uRGF0YSkgOiAwOwot
ICAgICAgICBTaGFkb3dTdHlsZSBzaGFkb3dTdHlsZSA9IHNoYWRvd1ZhbHVlLnN0eWxlICYmIHNo
YWRvd1ZhbHVlLnN0eWxlLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVJbnNldCA/IEluc2V0IDog
Tm9ybWFsOworICAgICAgICBTaGFkb3dTdHlsZSBzaGFkb3dTdHlsZSA9IHNoYWRvd1ZhbHVlLnN0
eWxlICYmIHNoYWRvd1ZhbHVlLnN0eWxlLT52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVJbnNldCA/IElu
c2V0IDogTm9ybWFsOwogICAgICAgICBDb2xvciBjb2xvcjsKICAgICAgICAgaWYgKHNoYWRvd1Zh
bHVlLmNvbG9yKQogICAgICAgICAgICAgY29sb3IgPSBzdHlsZVJlc29sdmVyLmNvbG9yRnJvbVBy
aW1pdGl2ZVZhbHVlKCpzaGFkb3dWYWx1ZS5jb2xvcik7CkBAIC04NjksNyArODY5LDcgQEAgaW5s
aW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlRm9udEZhbWlseShTdHlsZVJl
c29sdmVyJiBzdHlsZVJlc29sdmUKICAgICAgICAgICAgIC8vIElmIHRoZSBmYW1pbHkgbmFtZSB3
YXMgcmVzb2x2ZWQgYnkgdGhlIENTUyBwYXJzZXIgZnJvbSBhIHN5c3RlbSBmb250IElELCB0aGVu
IGl0IGlzIGdlbmVyaWMuCiAgICAgICAgICAgICBpc0dlbmVyaWNGYW1pbHkgPSBmb250RmFtaWx5
LmZyb21TeXN0ZW1Gb250SUQ7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBzd2l0Y2gg
KGNvbnRlbnRWYWx1ZS5nZXRWYWx1ZUlEKCkpIHsKKyAgICAgICAgICAgIHN3aXRjaCAoY29udGVu
dFZhbHVlLnZhbHVlSUQoKSkgewogICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVdlYmtpdEJvZHk6
CiAgICAgICAgICAgICAgICAgaWYgKFNldHRpbmdzKiBzZXR0aW5ncyA9IHN0eWxlUmVzb2x2ZXIu
ZG9jdW1lbnQoKS5zZXR0aW5ncygpKQogICAgICAgICAgICAgICAgICAgICBmYW1pbHkgPSBzZXR0
aW5ncy0+c3RhbmRhcmRGb250RmFtaWx5KCk7CkBAIC05NDgsNyArOTQ4LDcgQEAgaW5saW5lIHZv
aWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlQmFzZWxpbmVTaGlmdChTdHlsZVJlc29s
dmVyJiBzdHlsZVJlc28KICAgICBTVkdSZW5kZXJTdHlsZSYgc3ZnU3R5bGUgPSBzdHlsZVJlc29s
dmVyLnN0eWxlKCktPmFjY2Vzc1NWR1N0eWxlKCk7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUg
PSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwogICAgIGlmIChwcmltaXRpdmVW
YWx1ZS5pc1ZhbHVlSUQoKSkgewotICAgICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLmdldFZh
bHVlSUQoKSkgeworICAgICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSkgewog
ICAgICAgICBjYXNlIENTU1ZhbHVlQmFzZWxpbmU6CiAgICAgICAgICAgICBzdmdTdHlsZS5zZXRC
YXNlbGluZVNoaWZ0KEJTX0JBU0VMSU5FKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtOTg4LDEy
ICs5ODgsMTIgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlV2Vi
a2l0QXNwZWN0UmF0aW8oU3R5bGVSZXNvbHZlciYgc3R5bGUKICAgICBpZiAoaXM8Q1NTUHJpbWl0
aXZlVmFsdWU+KHZhbHVlKSkgewogICAgICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CiAKLSAgICAgICAgaWYgKHByaW1pdGl2ZVZh
bHVlLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZUZyb21EaW1lbnNpb25zKQorICAgICAgICBpZiAo
cHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlRnJvbURpbWVuc2lvbnMpCiAgICAg
ICAgICAgICByZXR1cm4gc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRBc3BlY3RSYXRpb1R5cGUo
QXNwZWN0UmF0aW9Gcm9tRGltZW5zaW9ucyk7Ci0gICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS5n
ZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVGcm9tSW50cmluc2ljKQorICAgICAgICBpZiAocHJpbWl0
aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlRnJvbUludHJpbnNpYykKICAgICAgICAgICAg
IHJldHVybiBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldEFzcGVjdFJhdGlvVHlwZShBc3BlY3RS
YXRpb0Zyb21JbnRyaW5zaWMpOwogCi0gICAgICAgIEFTU0VSVChwcmltaXRpdmVWYWx1ZS5nZXRW
YWx1ZUlEKCkgPT0gQ1NTVmFsdWVBdXRvKTsKKyAgICAgICAgQVNTRVJUKHByaW1pdGl2ZVZhbHVl
LnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUF1dG8pOwogICAgICAgICByZXR1cm4gc3R5bGVSZXNvbHZl
ci5zdHlsZSgpLT5zZXRBc3BlY3RSYXRpb1R5cGUoQXNwZWN0UmF0aW9BdXRvKTsKICAgICB9CiAK
QEAgLTEwMjUsNyArMTAyNSw3IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBw
bHlWYWx1ZVdlYmtpdFRleHRFbXBoYXNpc1N0eWxlKFN0eWxlUmVzb2x2ZXImCiAKICAgICAgICAg
Zm9yIChhdXRvJiBpdGVtIDogbGlzdCkgewogICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUm
IHZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGl0ZW0uZ2V0KCkpOwotICAgICAg
ICAgICAgaWYgKHZhbHVlLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZUZpbGxlZCB8fCB2YWx1ZS5n
ZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVPcGVuKQorICAgICAgICAgICAgaWYgKHZhbHVlLnZhbHVl
SUQoKSA9PSBDU1NWYWx1ZUZpbGxlZCB8fCB2YWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVPcGVu
KQogICAgICAgICAgICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0VGV4dEVtcGhhc2lz
RmlsbCh2YWx1ZSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgc3R5bGVSZXNv
bHZlci5zdHlsZSgpLT5zZXRUZXh0RW1waGFzaXNNYXJrKHZhbHVlKTsKQEAgLTEwMzgsMTMgKzEw
MzgsMTMgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlV2Via2l0
VGV4dEVtcGhhc2lzU3R5bGUoU3R5bGVSZXNvbHZlciYKICAgICBpZiAocHJpbWl0aXZlVmFsdWUu
aXNTdHJpbmcoKSkgewogICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldFRleHRFbXBo
YXNpc0ZpbGwoVGV4dEVtcGhhc2lzRmlsbEZpbGxlZCk7CiAgICAgICAgIHN0eWxlUmVzb2x2ZXIu
c3R5bGUoKS0+c2V0VGV4dEVtcGhhc2lzTWFyayhUZXh0RW1waGFzaXNNYXJrQ3VzdG9tKTsKLSAg
ICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRUZXh0RW1waGFzaXNDdXN0b21NYXJrKHBy
aW1pdGl2ZVZhbHVlLmdldFN0cmluZ1ZhbHVlKCkpOworICAgICAgICBzdHlsZVJlc29sdmVyLnN0
eWxlKCktPnNldFRleHRFbXBoYXNpc0N1c3RvbU1hcmsocHJpbWl0aXZlVmFsdWUuc3RyaW5nVmFs
dWUoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBzdHlsZVJlc29sdmVyLnN0eWxl
KCktPnNldFRleHRFbXBoYXNpc0N1c3RvbU1hcmsobnVsbEF0b20pOwogCi0gICAgaWYgKHByaW1p
dGl2ZVZhbHVlLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZUZpbGxlZCB8fCBwcmltaXRpdmVWYWx1
ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVPcGVuKSB7CisgICAgaWYgKHByaW1pdGl2ZVZhbHVl
LnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUZpbGxlZCB8fCBwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkg
PT0gQ1NTVmFsdWVPcGVuKSB7CiAgICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0VGV4
dEVtcGhhc2lzRmlsbChwcmltaXRpdmVWYWx1ZSk7CiAgICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5
bGUoKS0+c2V0VGV4dEVtcGhhc2lzTWFyayhUZXh0RW1waGFzaXNNYXJrQXV0byk7CiAgICAgfSBl
bHNlIHsKQEAgLTEwNjksNyArMTA2OSw3IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3Rv
bTo6YXBwbHlJbmhlcml0Q291bnRlcihTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyCiB0ZW1w
bGF0ZSA8U3R5bGVCdWlsZGVyQ3VzdG9tOjpDb3VudGVyQmVoYXZpb3IgY291bnRlckJlaGF2aW9y
PgogaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlQ291bnRlcihTdHls
ZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCiB7Ci0gICAgYm9vbCBz
ZXRDb3VudGVySW5jcmVtZW50VG9Ob25lID0gY291bnRlckJlaGF2aW9yID09IEluY3JlbWVudCAm
JiBpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpICYmIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlPih2YWx1ZSkuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZTsKKyAgICBib29sIHNldENv
dW50ZXJJbmNyZW1lbnRUb05vbmUgPSBjb3VudGVyQmVoYXZpb3IgPT0gSW5jcmVtZW50ICYmIGlz
PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkgJiYgZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+
KHZhbHVlKS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lOwogCiAgICAgaWYgKCFpczxDU1NWYWx1
ZUxpc3Q+KHZhbHVlKSAmJiAhc2V0Q291bnRlckluY3JlbWVudFRvTm9uZSkKICAgICAgICAgcmV0
dXJuOwpAQCAtMTA4NiwxMiArMTA4NiwxMiBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0
b206OmFwcGx5VmFsdWVDb3VudGVyKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGZvciAoYXV0byYgaXRlbSA6IGRvd25jYXN0PENTU1ZhbHVlTGlz
dD4odmFsdWUpKSB7Ci0gICAgICAgIFBhaXIqIHBhaXIgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZT4oaXRlbS5nZXQoKSkuZ2V0UGFpclZhbHVlKCk7CisgICAgICAgIFBhaXIqIHBhaXIgPSBk
b3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oaXRlbS5nZXQoKSkucGFpclZhbHVlKCk7CiAgICAg
ICAgIGlmICghcGFpciB8fCAhcGFpci0+Zmlyc3QoKSB8fCAhcGFpci0+c2Vjb25kKCkpCiAgICAg
ICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBBdG9taWNTdHJpbmcgaWRlbnRpZmllciA9IHBh
aXItPmZpcnN0KCktPmdldFN0cmluZ1ZhbHVlKCk7Ci0gICAgICAgIGludCB2YWx1ZSA9IHBhaXIt
PnNlY29uZCgpLT5nZXRJbnRWYWx1ZSgpOworICAgICAgICBBdG9taWNTdHJpbmcgaWRlbnRpZmll
ciA9IHBhaXItPmZpcnN0KCktPnN0cmluZ1ZhbHVlKCk7CisgICAgICAgIGludCB2YWx1ZSA9IHBh
aXItPnNlY29uZCgpLT5pbnRWYWx1ZSgpOwogICAgICAgICBDb3VudGVyRGlyZWN0aXZlcyYgZGly
ZWN0aXZlcyA9IG1hcC5hZGQoaWRlbnRpZmllciwgQ291bnRlckRpcmVjdGl2ZXMoKSkuaXRlcmF0
b3ItPnZhbHVlOwogICAgICAgICBpZiAoY291bnRlckJlaGF2aW9yID09IFJlc2V0KQogICAgICAg
ICAgICAgZGlyZWN0aXZlcy5zZXRSZXNldFZhbHVlKHZhbHVlKTsKQEAgLTEyMTksNyArMTIxOSw3
IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVdlYmtpdFN2Z1No
YWRvdyhTdHlsZVJlc29sdmVyJiBzdHlsZVJlCiB7CiAgICAgU1ZHUmVuZGVyU3R5bGUmIHN2Z1N0
eWxlID0gc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5hY2Nlc3NTVkdTdHlsZSgpOwogICAgIGlmIChp
czxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKSB7Ci0gICAgICAgIEFTU0VSVChkb3duY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUpOwor
ICAgICAgICBBU1NFUlQoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS52YWx1ZUlE
KCkgPT0gQ1NTVmFsdWVOb25lKTsKICAgICAgICAgc3ZnU3R5bGUuc2V0U2hhZG93KG51bGxwdHIp
OwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTI1Nyw3ICsxMjU3LDcgQEAgaW5saW5lIHZv
aWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlRm9udFdlaWdodChTdHlsZVJlc29sdmVy
JiBzdHlsZVJlc29sdmUKIHsKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CiAgICAgYXV0byBmb250RGVzY3JpcHRpb24gPSBzdHls
ZVJlc29sdmVyLmZvbnREZXNjcmlwdGlvbigpOwotICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUu
Z2V0VmFsdWVJRCgpKSB7CisgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkpIHsK
ICAgICBjYXNlIENTU1ZhbHVlSW52YWxpZDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgICAgIGJyZWFrOwpAQCAtMTI5MCw3ICsxMjkwLDcgQEAgaW5saW5lIHZvaWQgU3R5bGVC
dWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRDb2x1bW5HYXAoU3R5bGVSZXNvbHZlciYgc3R5bGVS
ZXNvbHYKIAogaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlQ29sdW1u
R2FwKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKLSAg
ICBpZiAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS5nZXRWYWx1ZUlEKCkgPT0g
Q1NTVmFsdWVOb3JtYWwpCisgICAgaWYgKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1
ZSkudmFsdWVJRCgpID09IENTU1ZhbHVlTm9ybWFsKQogICAgICAgICBzdHlsZVJlc29sdmVyLnN0
eWxlKCktPnNldEhhc05vcm1hbENvbHVtbkdhcCgpOwogICAgIGVsc2UKICAgICAgICAgc3R5bGVS
ZXNvbHZlci5zdHlsZSgpLT5zZXRDb2x1bW5HYXAoU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252
ZXJ0Q29tcHV0ZWRMZW5ndGg8ZmxvYXQ+KHN0eWxlUmVzb2x2ZXIsIHZhbHVlKSk7CkBAIC0xMzMz
LDcgKzEzMzMsNyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVD
b250ZW50KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsCiAKICAgICAgICAgYXV0byYgY29u
dGVudFZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGl0ZW0uZ2V0KCkpOwogICAg
ICAgICBpZiAoY29udGVudFZhbHVlLmlzU3RyaW5nKCkpIHsKLSAgICAgICAgICAgIHN0eWxlUmVz
b2x2ZXIuc3R5bGUoKS0+c2V0Q29udGVudChjb250ZW50VmFsdWUuZ2V0U3RyaW5nVmFsdWUoKS5p
bXBsKCksIGRpZFNldCk7CisgICAgICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldENv
bnRlbnQoY29udGVudFZhbHVlLnN0cmluZ1ZhbHVlKCkuaW1wbCgpLCBkaWRTZXQpOwogICAgICAg
ICAgICAgZGlkU2V0ID0gdHJ1ZTsKICAgICAgICAgfSBlbHNlIGlmIChjb250ZW50VmFsdWUuaXNB
dHRyKCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBDYW4gYSBuYW1lc3BhY2UgYmUgc3BlY2lm
aWVkIGZvciBhbiBhdHRyKGZvbyk/CkBAIC0xMzQxLDcgKzEzNDEsNyBAQCBpbmxpbmUgdm9pZCBT
dHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVDb250ZW50KFN0eWxlUmVzb2x2ZXImIHN0eWxl
UmVzb2x2ZXIsCiAgICAgICAgICAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRIYXNB
dHRyQ29udGVudCgpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGNvbnN0X2Nh
c3Q8UmVuZGVyU3R5bGUqPihzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCkpLT5zZXRIYXNBdHRy
Q29udGVudCgpOwotICAgICAgICAgICAgUXVhbGlmaWVkTmFtZSBhdHRyKG51bGxBdG9tLCBjb250
ZW50VmFsdWUuZ2V0U3RyaW5nVmFsdWUoKS5pbXBsKCksIG51bGxBdG9tKTsKKyAgICAgICAgICAg
IFF1YWxpZmllZE5hbWUgYXR0cihudWxsQXRvbSwgY29udGVudFZhbHVlLnN0cmluZ1ZhbHVlKCku
aW1wbCgpLCBudWxsQXRvbSk7CiAgICAgICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVl
ID0gc3R5bGVSZXNvbHZlci5lbGVtZW50KCktPmdldEF0dHJpYnV0ZShhdHRyKTsKICAgICAgICAg
ICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0Q29udGVudCh2YWx1ZS5pc051bGwoKSA/IGVt
cHR5QXRvbSA6IHZhbHVlLmltcGwoKSwgZGlkU2V0KTsKICAgICAgICAgICAgIGRpZFNldCA9IHRy
dWU7CkBAIC0xMzQ5LDcgKzEzNDksNyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206
OmFwcGx5VmFsdWVDb250ZW50KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsCiAgICAgICAg
ICAgICBzdHlsZVJlc29sdmVyLnJ1bGVTZXRzKCkubXV0YWJsZUZlYXR1cmVzKCkuYXR0cmlidXRl
Q2Fub25pY2FsTG9jYWxOYW1lc0luUnVsZXMuYWRkKGF0dHIubG9jYWxOYW1lKCkuaW1wbCgpKTsK
ICAgICAgICAgICAgIHN0eWxlUmVzb2x2ZXIucnVsZVNldHMoKS5tdXRhYmxlRmVhdHVyZXMoKS5h
dHRyaWJ1dGVMb2NhbE5hbWVzSW5SdWxlcy5hZGQoYXR0ci5sb2NhbE5hbWUoKS5pbXBsKCkpOwog
ICAgICAgICB9IGVsc2UgaWYgKGNvbnRlbnRWYWx1ZS5pc0NvdW50ZXIoKSkgewotICAgICAgICAg
ICAgQ291bnRlciogY291bnRlclZhbHVlID0gY29udGVudFZhbHVlLmdldENvdW50ZXJWYWx1ZSgp
OworICAgICAgICAgICAgYXV0byogY291bnRlclZhbHVlID0gY29udGVudFZhbHVlLmNvdW50ZXJW
YWx1ZSgpOwogICAgICAgICAgICAgRUxpc3RTdHlsZVR5cGUgbGlzdFN0eWxlVHlwZSA9IE5vbmVM
aXN0U3R5bGU7CiAgICAgICAgICAgICBDU1NWYWx1ZUlEIGxpc3RTdHlsZUlkZW50ID0gY291bnRl
clZhbHVlLT5saXN0U3R5bGVJZGVudCgpOwogICAgICAgICAgICAgaWYgKGxpc3RTdHlsZUlkZW50
ICE9IENTU1ZhbHVlTm9uZSkKQEAgLTEzNTgsNyArMTM1OCw3IEBAIGlubGluZSB2b2lkIFN0eWxl
QnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUNvbnRlbnQoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNv
bHZlciwKICAgICAgICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0Q29udGVudChXVEZN
b3ZlKGNvdW50ZXIpLCBkaWRTZXQpOwogICAgICAgICAgICAgZGlkU2V0ID0gdHJ1ZTsKICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHN3aXRjaCAoY29udGVudFZhbHVlLmdldFZhbHVlSUQo
KSkgeworICAgICAgICAgICAgc3dpdGNoIChjb250ZW50VmFsdWUudmFsdWVJRCgpKSB7CiAgICAg
ICAgICAgICBjYXNlIENTU1ZhbHVlT3BlblF1b3RlOgogICAgICAgICAgICAgICAgIHN0eWxlUmVz
b2x2ZXIuc3R5bGUoKS0+c2V0Q29udGVudChPUEVOX1FVT1RFLCBkaWRTZXQpOwogICAgICAgICAg
ICAgICAgIGRpZFNldCA9IHRydWU7CkBAIC0xNTUzLDcgKzE1NTMsNyBAQCBpbmxpbmUgdm9pZCBT
dHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVGb250U2l6ZShTdHlsZVJlc29sdmVyJiBzdHls
ZVJlc29sdmVyLAogCiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZT4odmFsdWUpOwogICAgIGZsb2F0IHNpemU7Ci0gICAgaWYgKENTU1ZhbHVlSUQg
aWRlbnQgPSBwcmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkpIHsKKyAgICBpZiAoQ1NTVmFsdWVJ
RCBpZGVudCA9IHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSkgewogICAgICAgICBmb250RGVzY3Jp
cHRpb24uc2V0SXNBYnNvbHV0ZVNpemUocGFyZW50SXNBYnNvbHV0ZVNpemUgJiYgKGlkZW50ID09
IENTU1ZhbHVlTGFyZ2VyIHx8IGlkZW50ID09IENTU1ZhbHVlU21hbGxlciB8fCBpZGVudCA9PSBD
U1NWYWx1ZVdlYmtpdFJ1YnlUZXh0KSk7CiAKICAgICAgICAgLy8gS2V5d29yZHMgYXJlIGJlaW5n
IHVzZWQuCkBAIC0xNTg3LDcgKzE1ODcsNyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0
b206OmFwcGx5VmFsdWVGb250U2l6ZShTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLAogICAg
ICAgICAgICAgc2l6ZSA9IHByaW1pdGl2ZVZhbHVlLmNvbXB1dGVMZW5ndGg8ZmxvYXQ+KENTU1Rv
TGVuZ3RoQ29udmVyc2lvbkRhdGEoc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLCBzdHlsZVJl
c29sdmVyLnJvb3RFbGVtZW50U3R5bGUoKSwgc3R5bGVSZXNvbHZlci5kb2N1bWVudCgpLnJlbmRl
clZpZXcoKSwgMS4wZiwgdHJ1ZSkpOwogICAgICAgICAgICAgc3R5bGVSZXNvbHZlci5zdGF0ZSgp
LnNldEZvbnRTaXplSGFzVmlld3BvcnRVbml0cyhwcmltaXRpdmVWYWx1ZS5pc1ZpZXdwb3J0UGVy
Y2VudGFnZUxlbmd0aCgpKTsKICAgICAgICAgfSBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS5pc1Bl
cmNlbnRhZ2UoKSkKLSAgICAgICAgICAgIHNpemUgPSAocHJpbWl0aXZlVmFsdWUuZ2V0RmxvYXRW
YWx1ZSgpICogcGFyZW50U2l6ZSkgLyAxMDAuMGY7CisgICAgICAgICAgICBzaXplID0gKHByaW1p
dGl2ZVZhbHVlLmZsb2F0VmFsdWUoKSAqIHBhcmVudFNpemUpIC8gMTAwLjBmOwogICAgICAgICBl
bHNlIGlmIChwcmltaXRpdmVWYWx1ZS5pc0NhbGN1bGF0ZWRQZXJjZW50YWdlV2l0aExlbmd0aCgp
KQogICAgICAgICAgICAgc2l6ZSA9IHByaW1pdGl2ZVZhbHVlLmNzc0NhbGNWYWx1ZSgpLT5jcmVh
dGVDYWxjdWxhdGlvblZhbHVlKHN0eWxlUmVzb2x2ZXIuc3RhdGUoKS5jc3NUb0xlbmd0aENvbnZl
cnNpb25EYXRhKCkuY29weVdpdGhBZGp1c3RlZFpvb20oMS4wZikpLT5ldmFsdWF0ZShwYXJlbnRT
aXplKTsKICAgICAgICAgZWxzZQpAQCAtMTYxOSw3ICsxNjE5LDcgQEAgaW5saW5lIHZvaWQgU3R5
bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaGVyaXRHcmlkVGVtcGxhdGVBcmVhcyhTdHlsZVJlc29s
dmVyJiBzdHkKIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUdyaWRU
ZW1wbGF0ZUFyZWFzKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1
ZSkKIHsKICAgICBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSkgewotICAgICAgICBB
U1NFUlQoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS5nZXRWYWx1ZUlEKCkgPT0g
Q1NTVmFsdWVOb25lKTsKKyAgICAgICAgQVNTRVJUKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
Pih2YWx1ZSkudmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKQEAgLTE3MDYsNyArMTcwNiw3IEBAIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBs
eVZhbHVlQWx0KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2CiB7CiAg
ICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFs
dWUpOwogICAgIGlmIChwcmltaXRpdmVWYWx1ZS5pc1N0cmluZygpKQotICAgICAgICBzdHlsZVJl
c29sdmVyLnN0eWxlKCktPnNldENvbnRlbnRBbHRUZXh0KHByaW1pdGl2ZVZhbHVlLmdldFN0cmlu
Z1ZhbHVlKCkpOworICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldENvbnRlbnRBbHRU
ZXh0KHByaW1pdGl2ZVZhbHVlLnN0cmluZ1ZhbHVlKCkpOwogICAgIGVsc2UgaWYgKHByaW1pdGl2
ZVZhbHVlLmlzQXR0cigpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBDYW4gYSBuYW1lc3BhY2UgYmUg
c3BlY2lmaWVkIGZvciBhbiBhdHRyKGZvbyk/CiAgICAgICAgIGlmIChzdHlsZVJlc29sdmVyLnN0
eWxlKCktPnN0eWxlVHlwZSgpID09IE5PUFNFVURPKQpAQCAtMTcxNCw3ICsxNzE0LDcgQEAgdm9p
ZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVBbHQoU3R5bGVSZXNvbHZlciYgc3R5bGVS
ZXNvbHZlciwgQ1NTVmFsdWUmIHYKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29uc3RfY2Fz
dDxSZW5kZXJTdHlsZSo+KHN0eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKSktPnNldFVuaXF1ZSgp
OwogCi0gICAgICAgIFF1YWxpZmllZE5hbWUgYXR0cihudWxsQXRvbSwgcHJpbWl0aXZlVmFsdWUu
Z2V0U3RyaW5nVmFsdWUoKSwgbnVsbEF0b20pOworICAgICAgICBRdWFsaWZpZWROYW1lIGF0dHIo
bnVsbEF0b20sIHByaW1pdGl2ZVZhbHVlLnN0cmluZ1ZhbHVlKCksIG51bGxBdG9tKTsKICAgICAg
ICAgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSA9IHN0eWxlUmVzb2x2ZXIuZWxlbWVudCgpLT5n
ZXRBdHRyaWJ1dGUoYXR0cik7CiAgICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0Q29u
dGVudEFsdFRleHQodmFsdWUuaXNOdWxsKCkgPyBlbXB0eUF0b20gOiB2YWx1ZSk7CiAKQEAgLTE3
MjYsNiArMTcyNiw3IEBAIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlQWx0KFN0
eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2CiB9CiAKICNpZiBFTkFCTEUo
Q1NTX1NDUk9MTF9TTkFQKQorCiBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5
SW5pdGlhbFdlYmtpdFNjcm9sbFNuYXBQb2ludHNYKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2
ZXIpCiB7CiAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRTY3JvbGxTbmFwUG9pbnRzWChu
dWxscHRyKTsKQEAgLTE3NDUsMjMgKzE3NDYsMjMgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVy
Q3VzdG9tOjphcHBseUluaGVyaXRXZWJraXRTY3JvbGxTbmFwUG9pbnRzWShTdHlsZVJlc29sdmUK
IHsKICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldFNjcm9sbFNuYXBQb2ludHNZKHN0eWxl
UmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+c2Nyb2xsU25hcFBvaW50c1koKSA/IHN0ZDo6bWFrZV91
bmlxdWU8U2Nyb2xsU25hcFBvaW50cz4oKnN0eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKS0+c2Ny
b2xsU25hcFBvaW50c1koKSkgOiBudWxscHRyKTsKIH0KKwogI2VuZGlmCiAKIGlubGluZSB2b2lk
IFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVdpbGxDaGFuZ2UoU3R5bGVSZXNvbHZlciYg
c3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGlmIChpczxDU1NQcmltaXRp
dmVWYWx1ZT4odmFsdWUpKSB7Ci0gICAgICAgIEFTU0VSVChkb3duY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZT4odmFsdWUpLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZUF1dG8pOworICAgICAgICBBU1NF
UlQoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS52YWx1ZUlEKCkgPT0gQ1NTVmFs
dWVBdXRvKTsKICAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRXaWxsQ2hhbmdlKG51
bGxwdHIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmVmPFdpbGxDaGFuZ2VEYXRh
PiB3aWxsQ2hhbmdlID0gV2lsbENoYW5nZURhdGE6OmNyZWF0ZSgpOworICAgIGF1dG8gd2lsbENo
YW5nZSA9IFdpbGxDaGFuZ2VEYXRhOjpjcmVhdGUoKTsKICAgICBmb3IgKGF1dG8mIGl0ZW0gOiBk
b3duY2FzdDxDU1NWYWx1ZUxpc3Q+KHZhbHVlKSkgewogICAgICAgICBpZiAoIWlzPENTU1ByaW1p
dGl2ZVZhbHVlPihpdGVtLmdldCgpKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAg
IGNvbnN0IGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+
KGl0ZW0uZ2V0KCkpOwotICAgICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQo
KSkgeworICAgICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlPihpdGVtLmdldCgpKTsKKyAgICAgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS52YWx1
ZUlEKCkpIHsKICAgICAgICAgY2FzZSBDU1NWYWx1ZVNjcm9sbFBvc2l0aW9uOgogICAgICAgICAg
ICAgd2lsbENoYW5nZS0+YWRkRmVhdHVyZShXaWxsQ2hhbmdlRGF0YTo6RmVhdHVyZTo6U2Nyb2xs
UG9zaXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNzcwLDExICsxNzcxLDEwIEBAIGlu
bGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVdpbGxDaGFuZ2UoU3R5bGVS
ZXNvbHZlciYgc3R5bGVSZXNvbHZlCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVs
dDoKICAgICAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS5pc1Byb3BlcnR5SUQoKSkKLSAgICAg
ICAgICAgICAgICB3aWxsQ2hhbmdlLT5hZGRGZWF0dXJlKFdpbGxDaGFuZ2VEYXRhOjpGZWF0dXJl
OjpQcm9wZXJ0eSwgcHJpbWl0aXZlVmFsdWUuZ2V0UHJvcGVydHlJRCgpKTsKKyAgICAgICAgICAg
ICAgICB3aWxsQ2hhbmdlLT5hZGRGZWF0dXJlKFdpbGxDaGFuZ2VEYXRhOjpGZWF0dXJlOjpQcm9w
ZXJ0eSwgcHJpbWl0aXZlVmFsdWUucHJvcGVydHlJRCgpKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgfQotCiAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRXaWxsQ2hh
bmdlKFdURk1vdmUod2lsbENoYW5nZSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3Bl
cnRpZXMuY3BwCmluZGV4IDZkZDRjNWFhMGFkYzIxZDc3MWIyZWRmM2Y5N2JlMTU4YzI5NWQwN2Eu
LjY2YjU5Y2MyMGZlOTAxYjY4OTI1N2Q0NWYwOTI4YTk5OTY3ODViOWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwCkBAIC00NDEsOCArNDQxLDggQEAgU3RyaW5nIFN0eWxl
UHJvcGVydGllczo6Z2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVlKGNvbnN0IFN0eWxlUHJvcGVydHlT
aG9ydGhhbmQmIHMKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXM8Q1NTUHJpbWl0aXZl
VmFsdWU+KCp2YWx1ZSkgfHwgIWlzPENTU1ByaW1pdGl2ZVZhbHVlPigqeVZhbHVlKSkKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgICAgICAgICAg
ICAgQ1NTVmFsdWVJRCB4SWQgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVlKS5n
ZXRWYWx1ZUlEKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBDU1NWYWx1ZUlEIHlJZCA9IGRv
d25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqeVZhbHVlKS5nZXRWYWx1ZUlEKCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBDU1NWYWx1ZUlEIHhJZCA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlPigqdmFsdWUpLnZhbHVlSUQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIENTU1ZhbHVl
SUQgeUlkID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp5VmFsdWUpLnZhbHVlSUQoKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh4SWQgIT0geUlkKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKHhJZCA9PSBDU1NWYWx1ZVJlcGVhdCAmJiB5SWQgPT0gQ1NTVmFs
dWVOb1JlcGVhdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VSZXBlYXRY
U2hvcnRoYW5kID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJl
c29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCA4
NDk5ZDhmN2Q1NDFmYmVhZTRkOTE3YjZlN2EyNzU5MWEyM2M4NjNmLi41ZGE2YmI3NjkxODcyY2Jl
OTA3NDEwYzliODM2Y2RmNDgyZGVlNGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIu
Y3BwCkBAIC0yMjcsNyArMjI3LDcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjpNYXRjaFJlc3VsdDo6
YWRkTWF0Y2hlZFByb3BlcnRpZXMoY29uc3QgU3R5bGVQcm9wZXJ0aWVzJiBwcm8KIAogICAgICAg
ICAgICAgICAgIC8vIFRoZSB2YWx1ZSBjdXJyZW50Q29sb3IgaGFzIGltcGxpY2l0ZWx5IHRoZSBz
YW1lIHNpZGUgZWZmZWN0LiBJdCBkZXBlbmRzIG9uIHRoZSB2YWx1ZSBvZiBjb2xvciwKICAgICAg
ICAgICAgICAgICAvLyB3aGljaCBpcyBhbiBpbmhlcml0ZWQgdmFsdWUsIG1ha2luZyB0aGUgbm9u
LWluaGVyaXRlZCBwcm9wZXJ0eSBpbXBsaWNpdGx5IGluaGVyaXRlZC4KLSAgICAgICAgICAgICAg
ICBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSAmJiBkb3duY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZT4odmFsdWUpLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZUN1cnJlbnRjb2xvcikgewor
ICAgICAgICAgICAgICAgIGlmIChpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpICYmIGRvd25j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkudmFsdWVJRCgpID09IENTU1ZhbHVlQ3VycmVu
dGNvbG9yKSB7CiAgICAgICAgICAgICAgICAgICAgIGlzQ2FjaGVhYmxlID0gZmFsc2U7CiAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KQEAgLTE4MTYsNyArMTgx
Niw3IEBAIHN0YXRpYyBDb2xvciBjb2xvckZvckNTU1ZhbHVlKENTU1ZhbHVlSUQgY3NzVmFsdWVJ
ZCkKIAogYm9vbCBTdHlsZVJlc29sdmVyOjpjb2xvckZyb21QcmltaXRpdmVWYWx1ZUlzRGVyaXZl
ZEZyb21FbGVtZW50KGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJiB2YWx1ZSkKIHsKLSAgICBpbnQg
aWRlbnQgPSB2YWx1ZS5nZXRWYWx1ZUlEKCk7CisgICAgaW50IGlkZW50ID0gdmFsdWUudmFsdWVJ
RCgpOwogICAgIHN3aXRjaCAoaWRlbnQpIHsKICAgICBjYXNlIENTU1ZhbHVlV2Via2l0VGV4dDoK
ICAgICBjYXNlIENTU1ZhbHVlV2Via2l0TGluazoKQEAgLTE4MzQsNyArMTgzNCw3IEBAIENvbG9y
IFN0eWxlUmVzb2x2ZXI6OmNvbG9yRnJvbVByaW1pdGl2ZVZhbHVlKGNvbnN0IENTU1ByaW1pdGl2
ZVZhbHVlJiB2YWx1ZSwgYm9vCiAgICAgICAgIHJldHVybiB2YWx1ZS5jb2xvcigpOwogCiAgICAg
Y29uc3QgU3RhdGUmIHN0YXRlID0gbV9zdGF0ZTsKLSAgICBDU1NWYWx1ZUlEIGlkZW50ID0gdmFs
dWUuZ2V0VmFsdWVJRCgpOworICAgIENTU1ZhbHVlSUQgaWRlbnQgPSB2YWx1ZS52YWx1ZUlEKCk7
CiAgICAgc3dpdGNoIChpZGVudCkgewogICAgIGNhc2UgMDoKICAgICAgICAgcmV0dXJuIENvbG9y
KCk7CkBAIC0xOTA1LDcgKzE5MDUsNyBAQCBib29sIFN0eWxlUmVzb2x2ZXI6OmNyZWF0ZUZpbHRl
ck9wZXJhdGlvbnMoY29uc3QgQ1NTVmFsdWUmIGluVmFsdWUsIEZpbHRlck9wZXJhdAogICAgIAog
ICAgIGlmIChpczxDU1NQcmltaXRpdmVWYWx1ZT4oaW5WYWx1ZSkpIHsKICAgICAgICAgYXV0byYg
cHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oaW5WYWx1ZSk7Ci0g
ICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKQor
ICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZSkKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAKQEAgLTE5MjksNyArMTkyOSw3IEBA
IGJvb2wgU3R5bGVSZXNvbHZlcjo6Y3JlYXRlRmlsdGVyT3BlcmF0aW9ucyhjb25zdCBDU1NWYWx1
ZSYgaW5WYWx1ZSwgRmlsdGVyT3BlcmF0CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAg
ICAgICAgICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWU+KGFyZ3VtZW50KTsKLSAgICAgICAgICAgIFN0cmluZyBjc3NVcmwgPSBwcmltaXRpdmVWYWx1
ZS5nZXRTdHJpbmdWYWx1ZSgpOworICAgICAgICAgICAgU3RyaW5nIGNzc1VybCA9IHByaW1pdGl2
ZVZhbHVlLnN0cmluZ1ZhbHVlKCk7CiAgICAgICAgICAgICBVUkwgdXJsID0gbV9zdGF0ZS5kb2N1
bWVudCgpLmNvbXBsZXRlVVJMKGNzc1VybCk7CiAKICAgICAgICAgICAgIFJlZlB0cjxSZWZlcmVu
Y2VGaWx0ZXJPcGVyYXRpb24+IG9wZXJhdGlvbiA9IFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbjo6
Y3JlYXRlKGNzc1VybCwgdXJsLmZyYWdtZW50SWRlbnRpZmllcigpKTsKQEAgLTE5NjAsNyArMTk2
MCw3IEBAIGJvb2wgU3R5bGVSZXNvbHZlcjo6Y3JlYXRlRmlsdGVyT3BlcmF0aW9ucyhjb25zdCBD
U1NWYWx1ZSYgaW5WYWx1ZSwgRmlsdGVyT3BlcmF0CiAgICAgICAgIGNhc2UgV2ViS2l0Q1NTRmls
dGVyVmFsdWU6OlNhdHVyYXRlRmlsdGVyT3BlcmF0aW9uOiB7CiAgICAgICAgICAgICBkb3VibGUg
YW1vdW50ID0gMTsKICAgICAgICAgICAgIGlmIChmaWx0ZXJWYWx1ZS5sZW5ndGgoKSA9PSAxKSB7
Ci0gICAgICAgICAgICAgICAgYW1vdW50ID0gZmlyc3RWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKTsK
KyAgICAgICAgICAgICAgICBhbW91bnQgPSBmaXJzdFZhbHVlLT5kb3VibGVWYWx1ZSgpOwogICAg
ICAgICAgICAgICAgIGlmIChmaXJzdFZhbHVlLT5pc1BlcmNlbnRhZ2UoKSkKICAgICAgICAgICAg
ICAgICAgICAgYW1vdW50IC89IDEwMDsKICAgICAgICAgICAgIH0KQEAgLTE5ODIsNyArMTk4Miw3
IEBAIGJvb2wgU3R5bGVSZXNvbHZlcjo6Y3JlYXRlRmlsdGVyT3BlcmF0aW9ucyhjb25zdCBDU1NW
YWx1ZSYgaW5WYWx1ZSwgRmlsdGVyT3BlcmF0CiAgICAgICAgIGNhc2UgV2ViS2l0Q1NTRmlsdGVy
VmFsdWU6Ok9wYWNpdHlGaWx0ZXJPcGVyYXRpb246IHsKICAgICAgICAgICAgIGRvdWJsZSBhbW91
bnQgPSAoZmlsdGVyVmFsdWUub3BlcmF0aW9uVHlwZSgpID09IFdlYktpdENTU0ZpbHRlclZhbHVl
OjpCcmlnaHRuZXNzRmlsdGVyT3BlcmF0aW9uKSA/IDAgOiAxOwogICAgICAgICAgICAgaWYgKGZp
bHRlclZhbHVlLmxlbmd0aCgpID09IDEpIHsKLSAgICAgICAgICAgICAgICBhbW91bnQgPSBmaXJz
dFZhbHVlLT5nZXREb3VibGVWYWx1ZSgpOworICAgICAgICAgICAgICAgIGFtb3VudCA9IGZpcnN0
VmFsdWUtPmRvdWJsZVZhbHVlKCk7CiAgICAgICAgICAgICAgICAgaWYgKGZpcnN0VmFsdWUtPmlz
UGVyY2VudGFnZSgpKQogICAgICAgICAgICAgICAgICAgICBhbW91bnQgLz0gMTAwOwogICAgICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1RyYW5zZm9ybUZ1bmN0aW9u
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvVHJhbnNmb3JtRnVuY3Rpb25zLmNwcAppbmRleCA2
MTk1OGJjZmY4MGExMzZkNGM0OWMyODk2MzM1MTYwNmQ2M2I5ZDJlLi5mNjIzMjVlNTU5MWFmMDY3
NWQwODU3ZWE5ZmY4NGViMWUwZDA4MGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
VHJhbnNmb3JtRnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvVHJhbnNmb3Jt
RnVuY3Rpb25zLmNwcApAQCAtMTE1LDEzICsxMTUsMTMgQEAgYm9vbCB0cmFuc2Zvcm1zRm9yVmFs
dWUoY29uc3QgQ1NTVmFsdWUmIHZhbHVlLCBjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRh
JgogICAgICAgICAgICAgZG91YmxlIHN4ID0gMS4wOwogICAgICAgICAgICAgZG91YmxlIHN5ID0g
MS4wOwogICAgICAgICAgICAgaWYgKHRyYW5zZm9ybVZhbHVlLm9wZXJhdGlvblR5cGUoKSA9PSBX
ZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6U2NhbGVZVHJhbnNmb3JtT3BlcmF0aW9uKQotICAgICAg
ICAgICAgICAgIHN5ID0gZmlyc3RWYWx1ZS5nZXREb3VibGVWYWx1ZSgpOworICAgICAgICAgICAg
ICAgIHN5ID0gZmlyc3RWYWx1ZS5kb3VibGVWYWx1ZSgpOwogICAgICAgICAgICAgZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgc3ggPSBmaXJzdFZhbHVlLmdldERvdWJsZVZhbHVlKCk7CisgICAgICAg
ICAgICAgICAgc3ggPSBmaXJzdFZhbHVlLmRvdWJsZVZhbHVlKCk7CiAgICAgICAgICAgICAgICAg
aWYgKHRyYW5zZm9ybVZhbHVlLm9wZXJhdGlvblR5cGUoKSAhPSBXZWJLaXRDU1NUcmFuc2Zvcm1W
YWx1ZTo6U2NhbGVYVHJhbnNmb3JtT3BlcmF0aW9uKSB7CiAgICAgICAgICAgICAgICAgICAgIGlm
ICh0cmFuc2Zvcm1WYWx1ZS5sZW5ndGgoKSA+IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
IGF1dG8mIHNlY29uZFZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp0cmFuc2Zv
cm1WYWx1ZS5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDEpKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHN5ID0gc2Vjb25kVmFsdWUuZ2V0RG91YmxlVmFsdWUoKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHN5ID0gc2Vjb25kVmFsdWUuZG91YmxlVmFsdWUoKTsKICAgICAgICAgICAgICAgICAg
ICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICBzeSA9IHN4OwogICAgICAgICAgICAg
ICAgIH0KQEAgLTEzNSwxOSArMTM1LDE5IEBAIGJvb2wgdHJhbnNmb3Jtc0ZvclZhbHVlKGNvbnN0
IENTU1ZhbHVlJiB2YWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYKICAgICAg
ICAgICAgIGRvdWJsZSBzeSA9IDEuMDsKICAgICAgICAgICAgIGRvdWJsZSBzeiA9IDEuMDsKICAg
ICAgICAgICAgIGlmICh0cmFuc2Zvcm1WYWx1ZS5vcGVyYXRpb25UeXBlKCkgPT0gV2ViS2l0Q1NT
VHJhbnNmb3JtVmFsdWU6OlNjYWxlWlRyYW5zZm9ybU9wZXJhdGlvbikKLSAgICAgICAgICAgICAg
ICBzeiA9IGZpcnN0VmFsdWUuZ2V0RG91YmxlVmFsdWUoKTsKKyAgICAgICAgICAgICAgICBzeiA9
IGZpcnN0VmFsdWUuZG91YmxlVmFsdWUoKTsKICAgICAgICAgICAgIGVsc2UgaWYgKHRyYW5zZm9y
bVZhbHVlLm9wZXJhdGlvblR5cGUoKSA9PSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6U2NhbGVZ
VHJhbnNmb3JtT3BlcmF0aW9uKQotICAgICAgICAgICAgICAgIHN5ID0gZmlyc3RWYWx1ZS5nZXRE
b3VibGVWYWx1ZSgpOworICAgICAgICAgICAgICAgIHN5ID0gZmlyc3RWYWx1ZS5kb3VibGVWYWx1
ZSgpOwogICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgc3ggPSBmaXJzdFZhbHVl
LmdldERvdWJsZVZhbHVlKCk7CisgICAgICAgICAgICAgICAgc3ggPSBmaXJzdFZhbHVlLmRvdWJs
ZVZhbHVlKCk7CiAgICAgICAgICAgICAgICAgaWYgKHRyYW5zZm9ybVZhbHVlLm9wZXJhdGlvblR5
cGUoKSAhPSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6U2NhbGVYVHJhbnNmb3JtT3BlcmF0aW9u
KSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1WYWx1ZS5sZW5ndGgoKSA+IDIp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8mIHRoaXJkVmFsdWUgPSBkb3duY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZT4oKnRyYW5zZm9ybVZhbHVlLml0ZW1XaXRob3V0Qm91bmRzQ2hlY2so
MikpOwotICAgICAgICAgICAgICAgICAgICAgICAgc3ogPSB0aGlyZFZhbHVlLmdldERvdWJsZVZh
bHVlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBzeiA9IHRoaXJkVmFsdWUuZG91YmxlVmFs
dWUoKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBpZiAodHJh
bnNmb3JtVmFsdWUubGVuZ3RoKCkgPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBhdXRv
JiBzZWNvbmRWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdHJhbnNmb3JtVmFs
dWUuaXRlbVdpdGhvdXRCb3VuZHNDaGVjaygxKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBz
eSA9IHNlY29uZFZhbHVlLmdldERvdWJsZVZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBzeSA9IHNlY29uZFZhbHVlLmRvdWJsZVZhbHVlKCk7CiAgICAgICAgICAgICAgICAgICAgIH0g
ZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgc3kgPSBzeDsKICAgICAgICAgICAgICAgICB9
CkBAIC0yMzUsOSArMjM1LDkgQEAgYm9vbCB0cmFuc2Zvcm1zRm9yVmFsdWUoY29uc3QgQ1NTVmFs
dWUmIHZhbHVlLCBjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJgogICAgICAgICAgICAg
YXV0byYgc2Vjb25kVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnRyYW5zZm9y
bVZhbHVlLml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMSkpOwogICAgICAgICAgICAgYXV0byYgdGhp
cmRWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdHJhbnNmb3JtVmFsdWUuaXRl
bVdpdGhvdXRCb3VuZHNDaGVjaygyKSk7CiAgICAgICAgICAgICBhdXRvJiBmb3VydGhWYWx1ZSA9
IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdHJhbnNmb3JtVmFsdWUuaXRlbVdpdGhvdXRC
b3VuZHNDaGVjaygzKSk7Ci0gICAgICAgICAgICBkb3VibGUgeCA9IGZpcnN0VmFsdWUuZ2V0RG91
YmxlVmFsdWUoKTsKLSAgICAgICAgICAgIGRvdWJsZSB5ID0gc2Vjb25kVmFsdWUuZ2V0RG91Ymxl
VmFsdWUoKTsKLSAgICAgICAgICAgIGRvdWJsZSB6ID0gdGhpcmRWYWx1ZS5nZXREb3VibGVWYWx1
ZSgpOworICAgICAgICAgICAgZG91YmxlIHggPSBmaXJzdFZhbHVlLmRvdWJsZVZhbHVlKCk7Cisg
ICAgICAgICAgICBkb3VibGUgeSA9IHNlY29uZFZhbHVlLmRvdWJsZVZhbHVlKCk7CisgICAgICAg
ICAgICBkb3VibGUgeiA9IHRoaXJkVmFsdWUuZG91YmxlVmFsdWUoKTsKICAgICAgICAgICAgIGRv
dWJsZSBhbmdsZSA9IGZvdXJ0aFZhbHVlLmNvbXB1dGVEZWdyZWVzKCk7CiAgICAgICAgICAgICBv
cGVyYXRpb25zLm9wZXJhdGlvbnMoKS5hcHBlbmQoUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uOjpj
cmVhdGUoeCwgeSwgeiwgYW5nbGUsIHRyYW5zZm9ybU9wZXJhdGlvblR5cGUodHJhbnNmb3JtVmFs
dWUub3BlcmF0aW9uVHlwZSgpKSkpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0yNjUsMzQgKzI2
NSwzNCBAQCBib29sIHRyYW5zZm9ybXNGb3JWYWx1ZShjb25zdCBDU1NWYWx1ZSYgdmFsdWUsIGNv
bnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmCiAgICAgICAgIGNhc2UgV2ViS2l0Q1NTVHJh
bnNmb3JtVmFsdWU6Ok1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbjogewogICAgICAgICAgICAgaWYg
KHRyYW5zZm9ybVZhbHVlLmxlbmd0aCgpIDwgNikKICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIGRvdWJsZSBhID0gZmlyc3RWYWx1ZS5nZXREb3VibGVWYWx1ZSgpOwotICAgICAg
ICAgICAgZG91YmxlIGIgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnRyYW5zZm9ybVZh
bHVlLml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMSkpLmdldERvdWJsZVZhbHVlKCk7Ci0gICAgICAg
ICAgICBkb3VibGUgYyA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdHJhbnNmb3JtVmFs
dWUuaXRlbVdpdGhvdXRCb3VuZHNDaGVjaygyKSkuZ2V0RG91YmxlVmFsdWUoKTsKLSAgICAgICAg
ICAgIGRvdWJsZSBkID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp0cmFuc2Zvcm1WYWx1
ZS5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDMpKS5nZXREb3VibGVWYWx1ZSgpOwotICAgICAgICAg
ICAgZG91YmxlIGUgPSBjb252ZXJzaW9uRGF0YS56b29tKCkgKiBkb3duY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZT4oKnRyYW5zZm9ybVZhbHVlLml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soNCkpLmdldERv
dWJsZVZhbHVlKCk7Ci0gICAgICAgICAgICBkb3VibGUgZiA9IGNvbnZlcnNpb25EYXRhLnpvb20o
KSAqIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdHJhbnNmb3JtVmFsdWUuaXRlbVdpdGhv
dXRCb3VuZHNDaGVjayg1KSkuZ2V0RG91YmxlVmFsdWUoKTsKKyAgICAgICAgICAgIGRvdWJsZSBh
ID0gZmlyc3RWYWx1ZS5kb3VibGVWYWx1ZSgpOworICAgICAgICAgICAgZG91YmxlIGIgPSBkb3du
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnRyYW5zZm9ybVZhbHVlLml0ZW1XaXRob3V0Qm91bmRz
Q2hlY2soMSkpLmRvdWJsZVZhbHVlKCk7CisgICAgICAgICAgICBkb3VibGUgYyA9IGRvd25jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlPigqdHJhbnNmb3JtVmFsdWUuaXRlbVdpdGhvdXRCb3VuZHNDaGVj
aygyKSkuZG91YmxlVmFsdWUoKTsKKyAgICAgICAgICAgIGRvdWJsZSBkID0gZG93bmNhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWU+KCp0cmFuc2Zvcm1WYWx1ZS5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDMp
KS5kb3VibGVWYWx1ZSgpOworICAgICAgICAgICAgZG91YmxlIGUgPSBjb252ZXJzaW9uRGF0YS56
b29tKCkgKiBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnRyYW5zZm9ybVZhbHVlLml0ZW1X
aXRob3V0Qm91bmRzQ2hlY2soNCkpLmRvdWJsZVZhbHVlKCk7CisgICAgICAgICAgICBkb3VibGUg
ZiA9IGNvbnZlcnNpb25EYXRhLnpvb20oKSAqIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigq
dHJhbnNmb3JtVmFsdWUuaXRlbVdpdGhvdXRCb3VuZHNDaGVjayg1KSkuZG91YmxlVmFsdWUoKTsK
ICAgICAgICAgICAgIG9wZXJhdGlvbnMub3BlcmF0aW9ucygpLmFwcGVuZChNYXRyaXhUcmFuc2Zv
cm1PcGVyYXRpb246OmNyZWF0ZShhLCBiLCBjLCBkLCBlLCBmKSk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgICAgICBjYXNlIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpNYXRy
aXgzRFRyYW5zZm9ybU9wZXJhdGlvbjogewogICAgICAgICAgICAgaWYgKHRyYW5zZm9ybVZhbHVl
Lmxlbmd0aCgpIDwgMTYpCiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCBtYXRyaXgoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp0cmFu
c2Zvcm1WYWx1ZS5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDApKS5nZXREb3VibGVWYWx1ZSgpLAot
ICAgICAgICAgICAgICAgIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdHJhbnNmb3JtVmFs
dWUuaXRlbVdpdGhvdXRCb3VuZHNDaGVjaygxKSkuZ2V0RG91YmxlVmFsdWUoKSwKLSAgICAgICAg
ICAgICAgICBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnRyYW5zZm9ybVZhbHVlLml0ZW1X
aXRob3V0Qm91bmRzQ2hlY2soMikpLmdldERvdWJsZVZhbHVlKCksCi0gICAgICAgICAgICAgICAg
ZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp0cmFuc2Zvcm1WYWx1ZS5pdGVtV2l0aG91dEJv
dW5kc0NoZWNrKDMpKS5nZXREb3VibGVWYWx1ZSgpLAotICAgICAgICAgICAgICAgIGRvd25jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlPigqdHJhbnNmb3JtVmFsdWUuaXRlbVdpdGhvdXRCb3VuZHNDaGVj
ayg0KSkuZ2V0RG91YmxlVmFsdWUoKSwKLSAgICAgICAgICAgICAgICBkb3duY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZT4oKnRyYW5zZm9ybVZhbHVlLml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soNSkpLmdl
dERvdWJsZVZhbHVlKCksCi0gICAgICAgICAgICAgICAgZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWU+KCp0cmFuc2Zvcm1WYWx1ZS5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDYpKS5nZXREb3VibGVW
YWx1ZSgpLAotICAgICAgICAgICAgICAgIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdHJh
bnNmb3JtVmFsdWUuaXRlbVdpdGhvdXRCb3VuZHNDaGVjayg3KSkuZ2V0RG91YmxlVmFsdWUoKSwK
LSAgICAgICAgICAgICAgICBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnRyYW5zZm9ybVZh
bHVlLml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soOCkpLmdldERvdWJsZVZhbHVlKCksCi0gICAgICAg
ICAgICAgICAgZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp0cmFuc2Zvcm1WYWx1ZS5pdGVt
V2l0aG91dEJvdW5kc0NoZWNrKDkpKS5nZXREb3VibGVWYWx1ZSgpLAotICAgICAgICAgICAgICAg
IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdHJhbnNmb3JtVmFsdWUuaXRlbVdpdGhvdXRC
b3VuZHNDaGVjaygxMCkpLmdldERvdWJsZVZhbHVlKCksCi0gICAgICAgICAgICAgICAgZG93bmNh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp0cmFuc2Zvcm1WYWx1ZS5pdGVtV2l0aG91dEJvdW5kc0No
ZWNrKDExKSkuZ2V0RG91YmxlVmFsdWUoKSwKLSAgICAgICAgICAgICAgICBjb252ZXJzaW9uRGF0
YS56b29tKCkgKiBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnRyYW5zZm9ybVZhbHVlLml0
ZW1XaXRob3V0Qm91bmRzQ2hlY2soMTIpKS5nZXREb3VibGVWYWx1ZSgpLAotICAgICAgICAgICAg
ICAgIGNvbnZlcnNpb25EYXRhLnpvb20oKSAqIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigq
dHJhbnNmb3JtVmFsdWUuaXRlbVdpdGhvdXRCb3VuZHNDaGVjaygxMykpLmdldERvdWJsZVZhbHVl
KCksCi0gICAgICAgICAgICAgICAgZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp0cmFuc2Zv
cm1WYWx1ZS5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDE0KSkuZ2V0RG91YmxlVmFsdWUoKSwKLSAg
ICAgICAgICAgICAgICBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnRyYW5zZm9ybVZhbHVl
Lml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMTUpKS5nZXREb3VibGVWYWx1ZSgpKTsKKyAgICAgICAg
ICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1hdHJpeChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZT4oKnRyYW5zZm9ybVZhbHVlLml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMCkpLmRvdWJsZVZhbHVl
KCksCisgICAgICAgICAgICAgICAgZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp0cmFuc2Zv
cm1WYWx1ZS5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDEpKS5kb3VibGVWYWx1ZSgpLAorICAgICAg
ICAgICAgICAgIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdHJhbnNmb3JtVmFsdWUuaXRl
bVdpdGhvdXRCb3VuZHNDaGVjaygyKSkuZG91YmxlVmFsdWUoKSwKKyAgICAgICAgICAgICAgICBk
b3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnRyYW5zZm9ybVZhbHVlLml0ZW1XaXRob3V0Qm91
bmRzQ2hlY2soMykpLmRvdWJsZVZhbHVlKCksCisgICAgICAgICAgICAgICAgZG93bmNhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWU+KCp0cmFuc2Zvcm1WYWx1ZS5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDQp
KS5kb3VibGVWYWx1ZSgpLAorICAgICAgICAgICAgICAgIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlPigqdHJhbnNmb3JtVmFsdWUuaXRlbVdpdGhvdXRCb3VuZHNDaGVjayg1KSkuZG91YmxlVmFs
dWUoKSwKKyAgICAgICAgICAgICAgICBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnRyYW5z
Zm9ybVZhbHVlLml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soNikpLmRvdWJsZVZhbHVlKCksCisgICAg
ICAgICAgICAgICAgZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp0cmFuc2Zvcm1WYWx1ZS5p
dGVtV2l0aG91dEJvdW5kc0NoZWNrKDcpKS5kb3VibGVWYWx1ZSgpLAorICAgICAgICAgICAgICAg
IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdHJhbnNmb3JtVmFsdWUuaXRlbVdpdGhvdXRC
b3VuZHNDaGVjayg4KSkuZG91YmxlVmFsdWUoKSwKKyAgICAgICAgICAgICAgICBkb3duY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZT4oKnRyYW5zZm9ybVZhbHVlLml0ZW1XaXRob3V0Qm91bmRzQ2hlY2so
OSkpLmRvdWJsZVZhbHVlKCksCisgICAgICAgICAgICAgICAgZG93bmNhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWU+KCp0cmFuc2Zvcm1WYWx1ZS5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDEwKSkuZG91Ymxl
VmFsdWUoKSwKKyAgICAgICAgICAgICAgICBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnRy
YW5zZm9ybVZhbHVlLml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMTEpKS5kb3VibGVWYWx1ZSgpLAor
ICAgICAgICAgICAgICAgIGNvbnZlcnNpb25EYXRhLnpvb20oKSAqIGRvd25jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlPigqdHJhbnNmb3JtVmFsdWUuaXRlbVdpdGhvdXRCb3VuZHNDaGVjaygxMikpLmRv
dWJsZVZhbHVlKCksCisgICAgICAgICAgICAgICAgY29udmVyc2lvbkRhdGEuem9vbSgpICogZG93
bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp0cmFuc2Zvcm1WYWx1ZS5pdGVtV2l0aG91dEJvdW5k
c0NoZWNrKDEzKSkuZG91YmxlVmFsdWUoKSwKKyAgICAgICAgICAgICAgICBkb3duY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZT4oKnRyYW5zZm9ybVZhbHVlLml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMTQp
KS5kb3VibGVWYWx1ZSgpLAorICAgICAgICAgICAgICAgIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlPigqdHJhbnNmb3JtVmFsdWUuaXRlbVdpdGhvdXRCb3VuZHNDaGVjaygxNSkpLmRvdWJsZVZh
bHVlKCkpOwogICAgICAgICAgICAgb3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuYXBwZW5kKE1hdHJp
eDNEVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUobWF0cml4KSk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQpAQCAtMzAyLDcgKzMwMiw3IEBAIGJvb2wgdHJhbnNmb3Jtc0ZvclZhbHVl
KGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYK
ICAgICAgICAgICAgICAgICBwID0gY29udmVydFRvRmxvYXRMZW5ndGgoJmZpcnN0VmFsdWUsIGNv
bnZlcnNpb25EYXRhKTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIC8vIFRo
aXMgaXMgYSBxdWlyayB0aGF0IHNob3VsZCBnbyBhd2F5IHdoZW4gM2QgdHJhbnNmb3JtcyBhcmUg
ZmluYWxpemVkLgotICAgICAgICAgICAgICAgIGRvdWJsZSB2YWwgPSBmaXJzdFZhbHVlLmdldERv
dWJsZVZhbHVlKCk7CisgICAgICAgICAgICAgICAgZG91YmxlIHZhbCA9IGZpcnN0VmFsdWUuZG91
YmxlVmFsdWUoKTsKICAgICAgICAgICAgICAgICBwID0gdmFsID49IDAgPyBMZW5ndGgoY2xhbXBU
b1Bvc2l0aXZlSW50ZWdlcih2YWwpLCBGaXhlZCkgOiBMZW5ndGgoVW5kZWZpbmVkKTsKICAgICAg
ICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1ZpZXdwb3J0U3R5bGVS
ZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvVmlld3BvcnRTdHlsZVJlc29sdmVyLmNw
cAppbmRleCBkYmI2Y2M0ZGY0NDA0MTVhNGJjNDBlMGM5ZTBkYWE2YzEyYTU2OWJhLi5kYzM0MjE5
MjRhZmQyMzUzYjliM2NmNjY2MTFlMjYyODM5NGJlMTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvVmlld3BvcnRTdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvVmlld3BvcnRTdHlsZVJlc29sdmVyLmNwcApAQCAtMTE0LDEzICsxMTQsMTMgQEAgZmxvYXQg
Vmlld3BvcnRTdHlsZVJlc29sdmVyOjpnZXRWaWV3cG9ydEFyZ3VtZW50VmFsdWUoQ1NTUHJvcGVy
dHlJRCBpZCkgY29uc3QKICAgICBDU1NQcmltaXRpdmVWYWx1ZSYgcHJpbWl0aXZlVmFsdWUgPSBk
b3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVlKTsKIAogICAgIGlmIChwcmltaXRpdmVW
YWx1ZS5pc051bWJlcigpIHx8IHByaW1pdGl2ZVZhbHVlLmlzUHgoKSkKLSAgICAgICAgcmV0dXJu
IHByaW1pdGl2ZVZhbHVlLmdldEZsb2F0VmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIHByaW1pdGl2
ZVZhbHVlLmZsb2F0VmFsdWUoKTsKIAogICAgIGlmIChwcmltaXRpdmVWYWx1ZS5pc0ZvbnRSZWxh
dGl2ZUxlbmd0aCgpKQotICAgICAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWUuZ2V0RmxvYXRWYWx1
ZSgpICogbV9kb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCktPnJlbmRlclN0eWxlKCktPmZvbnRE
ZXNjcmlwdGlvbigpLmNvbXB1dGVkU2l6ZSgpOworICAgICAgICByZXR1cm4gcHJpbWl0aXZlVmFs
dWUuZmxvYXRWYWx1ZSgpICogbV9kb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCktPnJlbmRlclN0
eWxlKCktPmZvbnREZXNjcmlwdGlvbigpLmNvbXB1dGVkU2l6ZSgpOwogCiAgICAgaWYgKHByaW1p
dGl2ZVZhbHVlLmlzUGVyY2VudGFnZSgpKSB7Ci0gICAgICAgIGZsb2F0IHBlcmNlbnRWYWx1ZSA9
IHByaW1pdGl2ZVZhbHVlLmdldEZsb2F0VmFsdWUoKSAvIDEwMC4wZjsKKyAgICAgICAgZmxvYXQg
cGVyY2VudFZhbHVlID0gcHJpbWl0aXZlVmFsdWUuZmxvYXRWYWx1ZSgpIC8gMTAwLjBmOwogICAg
ICAgICBzd2l0Y2ggKGlkKSB7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlNYXhIZWlnaHQ6CiAg
ICAgICAgIGNhc2UgQ1NTUHJvcGVydHlNaW5IZWlnaHQ6CkBAIC0xNDAsNyArMTQwLDcgQEAgZmxv
YXQgVmlld3BvcnRTdHlsZVJlc29sdmVyOjpnZXRWaWV3cG9ydEFyZ3VtZW50VmFsdWUoQ1NTUHJv
cGVydHlJRCBpZCkgY29uc3QKICAgICAgICAgfQogICAgIH0KIAotICAgIHN3aXRjaCAocHJpbWl0
aXZlVmFsdWUuZ2V0VmFsdWVJRCgpKSB7CisgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS52YWx1
ZUlEKCkpIHsKICAgICBjYXNlIENTU1ZhbHVlQXV0bzoKICAgICAgICAgcmV0dXJuIGRlZmF1bHRW
YWx1ZTsKICAgICBjYXNlIENTU1ZhbHVlRGV2aWNlSGVpZ2h0OgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2Vi
S2l0Q1NTTWF0cml4LmNwcAppbmRleCAxYmNhNGZkZTE0NGNiNWYyMmI5OWZhZjE5NjA2MDYwZTkx
Zjk2NWYxLi5lMzhhYWZjZWUzYjZhMGM4ZTAzZTM0MTM2YmM0MDY0ZWIwNTM2NTFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmNwcApAQCAtMzcsNTUgKzM3LDU3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotV2ViS2l0Q1NTTWF0cml4OjpXZWJLaXRDU1NNYXRyaXgoY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG0pCi0gICAgOiBtX21hdHJpeChtKQoraW5saW5lIFdl
YktpdENTU01hdHJpeDo6V2ViS2l0Q1NTTWF0cml4KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiBtYXRyaXgpCisgICAgOiBtX21hdHJpeChtYXRyaXgpCiB7CiB9CiAKLVdlYktpdENTU01hdHJp
eDo6V2ViS2l0Q1NTTWF0cml4KGNvbnN0IFN0cmluZyYgcywgRXhjZXB0aW9uQ29kZSYgZWMpCitS
ZWY8V2ViS2l0Q1NTTWF0cml4PiBXZWJLaXRDU1NNYXRyaXg6OmNyZWF0ZShjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgbWF0cml4KQogewotICAgIHNldE1hdHJpeFZhbHVlKHMsIGVjKTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJLaXRDU1NNYXRyaXgobWF0cml4KSk7Cit9CisKK0V4
Y2VwdGlvbk9yPFJlZjxXZWJLaXRDU1NNYXRyaXg+PiBXZWJLaXRDU1NNYXRyaXg6OmNyZWF0ZShj
b25zdCBTdHJpbmcmIHN0cmluZykKK3sKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0UmVmKCpuZXcg
V2ViS2l0Q1NTTWF0cml4KTsKKyAgICBhdXRvIHNldE1hdHJpeFZhbHVlUmVzdWx0ID0gcmVzdWx0
LT5zZXRNYXRyaXhWYWx1ZShzdHJpbmcpOworICAgIGlmIChzZXRNYXRyaXhWYWx1ZVJlc3VsdC5o
YXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIHNldE1hdHJpeFZhbHVlUmVzdWx0LnJlbGVh
c2VFeGNlcHRpb24oKTsKKyAgICByZXR1cm4gV1RGTW92ZShyZXN1bHQpOwogfQogCiBXZWJLaXRD
U1NNYXRyaXg6On5XZWJLaXRDU1NNYXRyaXgoKQogewogfQogCi12b2lkIFdlYktpdENTU01hdHJp
eDo6c2V0TWF0cml4VmFsdWUoY29uc3QgU3RyaW5nJiBzdHJpbmcsIEV4Y2VwdGlvbkNvZGUmIGVj
KQorRXhjZXB0aW9uT3I8dm9pZD4gV2ViS2l0Q1NTTWF0cml4OjpzZXRNYXRyaXhWYWx1ZShjb25z
dCBTdHJpbmcmIHN0cmluZykKIHsKICAgICBpZiAoc3RyaW5nLmlzRW1wdHkoKSkKLSAgICAgICAg
cmV0dXJuOworICAgICAgICByZXR1cm4geyB9OwogCiAgICAgYXV0byBzdHlsZURlY2xhcmF0aW9u
ID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7Ci0gICAgaWYgKENTU1BhcnNlcjo6
cGFyc2VWYWx1ZShzdHlsZURlY2xhcmF0aW9uLCBDU1NQcm9wZXJ0eVRyYW5zZm9ybSwgc3RyaW5n
LCB0cnVlLCBIVE1MU3RhbmRhcmRNb2RlLCBudWxscHRyKSAhPSBDU1NQYXJzZXI6OlBhcnNlUmVz
dWx0OjpFcnJvcikgewotICAgICAgICAvLyBDb252ZXJ0IHRvIFRyYW5zZm9ybU9wZXJhdGlvbnMu
IFRoaXMgY2FuIGZhaWwgaWYgYSBwcm9wZXJ0eQotICAgICAgICAvLyByZXF1aXJlcyBzdHlsZSAo
aS5lLiwgcGFyYW0gdXNlcyAnZW1zJyBvciAnZXhzJykKLSAgICAgICAgUmVmUHRyPENTU1ZhbHVl
PiB2YWx1ZSA9IHN0eWxlRGVjbGFyYXRpb24tPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVy
dHlUcmFuc2Zvcm0pOwotCi0gICAgICAgIC8vIENoZWNrIGZvciBhICJub25lIiBvciBlbXB0eSB0
cmFuc2Zvcm0uIEluIHRoZXNlIGNhc2VzIHdlIGNhbiB1c2UgdGhlIGRlZmF1bHQgaWRlbnRpdHkg
bWF0cml4LgotICAgICAgICBpZiAoIXZhbHVlIHx8IChpczxDU1NQcmltaXRpdmVWYWx1ZT4oKnZh
bHVlKSAmJiBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVlKS5nZXRWYWx1ZUlEKCkg
PT0gQ1NTVmFsdWVOb25lKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBUcmFuc2Zv
cm1PcGVyYXRpb25zIG9wZXJhdGlvbnM7Ci0gICAgICAgIGlmICghdHJhbnNmb3Jtc0ZvclZhbHVl
KCp2YWx1ZSwgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSgpLCBvcGVyYXRpb25zKSkgewotICAg
ICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9
Ci0KLSAgICAgICAgLy8gQ29udmVydCB0cmFuc2Zvcm0gb3BlcmF0aW9ucyB0byBhIFRyYW5zZm9y
bWF0aW9uTWF0cml4LiBUaGlzIGNhbiBmYWlsCi0gICAgICAgIC8vIGlmIGEgcGFyYW0gaGFzIGEg
cGVyY2VudGFnZSAoJyUnKQotICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0OwotICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgb3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuc2l6ZSgp
OyArK2kpIHsKLSAgICAgICAgICAgIGlmIChvcGVyYXRpb25zLm9wZXJhdGlvbnMoKVtpXS5nZXQo
KS0+YXBwbHkodCwgSW50U2l6ZSgwLCAwKSkpIHsKLSAgICAgICAgICAgICAgICBlYyA9IFNZTlRB
WF9FUlI7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0KLSAgICAgICAgLy8gc2V0IHRoZSBtYXRyaXgKLSAgICAgICAgbV9tYXRyaXggPSB0OwotICAg
IH0gZWxzZSAvLyBUaGVyZSBpcyBzb21ldGhpbmcgdGhlcmUgYnV0IHBhcnNpbmcgZmFpbGVkLgot
ICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgaWYgKENTU1BhcnNlcjo6cGFyc2VWYWx1ZShz
dHlsZURlY2xhcmF0aW9uLCBDU1NQcm9wZXJ0eVRyYW5zZm9ybSwgc3RyaW5nLCB0cnVlLCBIVE1M
U3RhbmRhcmRNb2RlLCBudWxscHRyKSA9PSBDU1NQYXJzZXI6OlBhcnNlUmVzdWx0OjpFcnJvcikK
KyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNZTlRBWF9FUlIgfTsKKworICAgIC8vIENvbnZl
cnQgdG8gVHJhbnNmb3JtT3BlcmF0aW9ucy4gVGhpcyBjYW4gZmFpbCBpZiBhIHByb3BlcnR5IHJl
cXVpcmVzIHN0eWxlIChpLmUuLCBwYXJhbSB1c2VzICdlbXMnIG9yICdleHMnKQorICAgIGF1dG8g
dmFsdWUgPSBzdHlsZURlY2xhcmF0aW9uLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5
VHJhbnNmb3JtKTsKKworICAgIC8vIENoZWNrIGZvciBhICJub25lIiBvciBlbXB0eSB0cmFuc2Zv
cm0uIEluIHRoZXNlIGNhc2VzIHdlIGNhbiB1c2UgdGhlIGRlZmF1bHQgaWRlbnRpdHkgbWF0cml4
LgorICAgIGlmICghdmFsdWUgfHwgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUpICYmIGRv
d25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5v
bmUpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgVHJhbnNmb3JtT3BlcmF0aW9ucyBvcGVy
YXRpb25zOworICAgIGlmICghdHJhbnNmb3Jtc0ZvclZhbHVlKCp2YWx1ZSwgQ1NTVG9MZW5ndGhD
b252ZXJzaW9uRGF0YSgpLCBvcGVyYXRpb25zKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IFNZTlRBWF9FUlIgfTsKKworICAgIC8vIENvbnZlcnQgdHJhbnNmb3JtIG9wZXJhdGlvbnMgdG8g
YSBUcmFuc2Zvcm1hdGlvbk1hdHJpeC4gVGhpcyBjYW4gZmFpbCBpZiBhIHBhcmFtZXRlciBoYXMg
YSBwZXJjZW50YWdlICgnJScpLgorICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1hdHJpeDsKKyAg
ICBmb3IgKGF1dG8mIG9wZXJhdGlvbiA6IG9wZXJhdGlvbnMub3BlcmF0aW9ucygpKSB7CisgICAg
ICAgIGlmIChvcGVyYXRpb24tPmFwcGx5KG1hdHJpeCwgSW50U2l6ZSgwLCAwKSkpCisgICAgICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU1lOVEFYX0VSUiB9OworICAgIH0KKyAgICBtX21hdHJp
eCA9IG1hdHJpeDsKKyAgICByZXR1cm4geyB9OwogfQogCiAvLyBQZXJmb3JtIGEgY29uY2F0ZW5h
dGlvbiBvZiB0aGUgbWF0cmljZXMgKHRoaXMgKiBzZWNvbmRNYXRyaXgpCkBAIC05NCwyMSArOTYs
MjAgQEAgUmVmUHRyPFdlYktpdENTU01hdHJpeD4gV2ViS2l0Q1NTTWF0cml4OjptdWx0aXBseShX
ZWJLaXRDU1NNYXRyaXgqIHNlY29uZE1hdHJpeCkKICAgICBpZiAoIXNlY29uZE1hdHJpeCkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiBtYXRy
aXggPSBXZWJLaXRDU1NNYXRyaXg6OmNyZWF0ZShtX21hdHJpeCk7CisgICAgYXV0byBtYXRyaXgg
PSBjcmVhdGUobV9tYXRyaXgpOwogICAgIG1hdHJpeC0+bV9tYXRyaXgubXVsdGlwbHkoc2Vjb25k
TWF0cml4LT5tX21hdHJpeCk7Ci0gICAgcmV0dXJuIG1hdHJpeDsKKyAgICByZXR1cm4gV1RGTW92
ZShtYXRyaXgpOwogfQogCi1SZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiBXZWJLaXRDU1NNYXRyaXg6
OmludmVyc2UoRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CitFeGNlcHRpb25PcjxSZWY8V2ViS2l0
Q1NTTWF0cml4Pj4gV2ViS2l0Q1NTTWF0cml4OjppbnZlcnNlKCkgY29uc3QKIHsKLSAgICBpZiAo
YXV0byBpbnZlcnNlID0gbV9tYXRyaXguaW52ZXJzZSgpKQotICAgICAgICByZXR1cm4gV2ViS2l0
Q1NTTWF0cml4OjpjcmVhdGUoaW52ZXJzZS52YWx1ZSgpKTsKLSAgICAKLSAgICBlYyA9IE5PVF9T
VVBQT1JURURfRVJSOwotICAgIHJldHVybiBudWxscHRyOworICAgIGF1dG8gaW52ZXJzZSA9IG1f
bWF0cml4LmludmVyc2UoKTsKKyAgICBpZiAoIWludmVyc2UpCisgICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBOT1RfU1VQUE9SVEVEX0VSUiB9OworICAgIHJldHVybiBjcmVhdGUoaW52ZXJzZS52
YWx1ZSgpKTsKIH0KIAotUmVmUHRyPFdlYktpdENTU01hdHJpeD4gV2ViS2l0Q1NTTWF0cml4Ojp0
cmFuc2xhdGUoZG91YmxlIHgsIGRvdWJsZSB5LCBkb3VibGUgeikgY29uc3QKK1JlZjxXZWJLaXRD
U1NNYXRyaXg+IFdlYktpdENTU01hdHJpeDo6dHJhbnNsYXRlKGRvdWJsZSB4LCBkb3VibGUgeSwg
ZG91YmxlIHopIGNvbnN0CiB7CiAgICAgaWYgKHN0ZDo6aXNuYW4oeCkpCiAgICAgICAgIHggPSAw
OwpAQCAtMTE3LDEyICsxMTgsMTIgQEAgUmVmUHRyPFdlYktpdENTU01hdHJpeD4gV2ViS2l0Q1NT
TWF0cml4Ojp0cmFuc2xhdGUoZG91YmxlIHgsIGRvdWJsZSB5LCBkb3VibGUgeikKICAgICBpZiAo
c3RkOjppc25hbih6KSkKICAgICAgICAgeiA9IDA7CiAKLSAgICBSZWZQdHI8V2ViS2l0Q1NTTWF0
cml4PiBtYXRyaXggPSBXZWJLaXRDU1NNYXRyaXg6OmNyZWF0ZShtX21hdHJpeCk7CisgICAgYXV0
byBtYXRyaXggPSBjcmVhdGUobV9tYXRyaXgpOwogICAgIG1hdHJpeC0+bV9tYXRyaXgudHJhbnNs
YXRlM2QoeCwgeSwgeik7CiAgICAgcmV0dXJuIG1hdHJpeDsKIH0KIAotUmVmUHRyPFdlYktpdENT
U01hdHJpeD4gV2ViS2l0Q1NTTWF0cml4OjpzY2FsZShkb3VibGUgc2NhbGVYLCBkb3VibGUgc2Nh
bGVZLCBkb3VibGUgc2NhbGVaKSBjb25zdAorUmVmPFdlYktpdENTU01hdHJpeD4gV2ViS2l0Q1NT
TWF0cml4OjpzY2FsZShkb3VibGUgc2NhbGVYLCBkb3VibGUgc2NhbGVZLCBkb3VibGUgc2NhbGVa
KSBjb25zdAogewogICAgIGlmIChzdGQ6OmlzbmFuKHNjYWxlWCkpCiAgICAgICAgIHNjYWxlWCA9
IDE7CkBAIC0xMzEsMTIgKzEzMiwxMiBAQCBSZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiBXZWJLaXRD
U1NNYXRyaXg6OnNjYWxlKGRvdWJsZSBzY2FsZVgsIGRvdWJsZSBzY2FsZVksIGRvdQogICAgIGlm
IChzdGQ6OmlzbmFuKHNjYWxlWikpCiAgICAgICAgIHNjYWxlWiA9IDE7CiAKLSAgICBSZWZQdHI8
V2ViS2l0Q1NTTWF0cml4PiBtYXRyaXggPSBXZWJLaXRDU1NNYXRyaXg6OmNyZWF0ZShtX21hdHJp
eCk7CisgICAgYXV0byBtYXRyaXggPSBjcmVhdGUobV9tYXRyaXgpOwogICAgIG1hdHJpeC0+bV9t
YXRyaXguc2NhbGUzZChzY2FsZVgsIHNjYWxlWSwgc2NhbGVaKTsKICAgICByZXR1cm4gbWF0cml4
OwogfQogCi1SZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiBXZWJLaXRDU1NNYXRyaXg6OnJvdGF0ZShk
b3VibGUgcm90WCwgZG91YmxlIHJvdFksIGRvdWJsZSByb3RaKSBjb25zdAorUmVmPFdlYktpdENT
U01hdHJpeD4gV2ViS2l0Q1NTTWF0cml4Ojpyb3RhdGUoZG91YmxlIHJvdFgsIGRvdWJsZSByb3RZ
LCBkb3VibGUgcm90WikgY29uc3QKIHsKICAgICBpZiAoc3RkOjppc25hbihyb3RYKSkKICAgICAg
ICAgcm90WCA9IDA7CkBAIC0xNTIsMTIgKzE1MywxMiBAQCBSZWZQdHI8V2ViS2l0Q1NTTWF0cml4
PiBXZWJLaXRDU1NNYXRyaXg6OnJvdGF0ZShkb3VibGUgcm90WCwgZG91YmxlIHJvdFksIGRvdWJs
ZQogICAgIGlmIChzdGQ6OmlzbmFuKHJvdFopKQogICAgICAgICByb3RaID0gMDsKIAotICAgIFJl
ZlB0cjxXZWJLaXRDU1NNYXRyaXg+IG1hdHJpeCA9IFdlYktpdENTU01hdHJpeDo6Y3JlYXRlKG1f
bWF0cml4KTsKKyAgICBhdXRvIG1hdHJpeCA9IGNyZWF0ZShtX21hdHJpeCk7CiAgICAgbWF0cml4
LT5tX21hdHJpeC5yb3RhdGUzZChyb3RYLCByb3RZLCByb3RaKTsKICAgICByZXR1cm4gbWF0cml4
OwogfQogCi1SZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiBXZWJLaXRDU1NNYXRyaXg6OnJvdGF0ZUF4
aXNBbmdsZShkb3VibGUgeCwgZG91YmxlIHksIGRvdWJsZSB6LCBkb3VibGUgYW5nbGUpIGNvbnN0
CitSZWY8V2ViS2l0Q1NTTWF0cml4PiBXZWJLaXRDU1NNYXRyaXg6OnJvdGF0ZUF4aXNBbmdsZShk
b3VibGUgeCwgZG91YmxlIHksIGRvdWJsZSB6LCBkb3VibGUgYW5nbGUpIGNvbnN0CiB7CiAgICAg
aWYgKHN0ZDo6aXNuYW4oeCkpCiAgICAgICAgIHggPSAwOwpAQCAtMTcwLDI3ICsxNzEsMjcgQEAg
UmVmUHRyPFdlYktpdENTU01hdHJpeD4gV2ViS2l0Q1NTTWF0cml4Ojpyb3RhdGVBeGlzQW5nbGUo
ZG91YmxlIHgsIGRvdWJsZSB5LCBkb3UKICAgICBpZiAoeCA9PSAwICYmIHkgPT0gMCAmJiB6ID09
IDApCiAgICAgICAgIHogPSAxOwogCi0gICAgUmVmUHRyPFdlYktpdENTU01hdHJpeD4gbWF0cml4
ID0gV2ViS2l0Q1NTTWF0cml4OjpjcmVhdGUobV9tYXRyaXgpOworICAgIGF1dG8gbWF0cml4ID0g
Y3JlYXRlKG1fbWF0cml4KTsKICAgICBtYXRyaXgtPm1fbWF0cml4LnJvdGF0ZTNkKHgsIHksIHos
IGFuZ2xlKTsKICAgICByZXR1cm4gbWF0cml4OwogfQogCi1SZWZQdHI8V2ViS2l0Q1NTTWF0cml4
PiBXZWJLaXRDU1NNYXRyaXg6OnNrZXdYKGRvdWJsZSBhbmdsZSkgY29uc3QKK1JlZjxXZWJLaXRD
U1NNYXRyaXg+IFdlYktpdENTU01hdHJpeDo6c2tld1goZG91YmxlIGFuZ2xlKSBjb25zdAogewog
ICAgIGlmIChzdGQ6OmlzbmFuKGFuZ2xlKSkKICAgICAgICAgYW5nbGUgPSAwOwogCi0gICAgUmVm
UHRyPFdlYktpdENTU01hdHJpeD4gbWF0cml4ID0gV2ViS2l0Q1NTTWF0cml4OjpjcmVhdGUobV9t
YXRyaXgpOworICAgIGF1dG8gbWF0cml4ID0gY3JlYXRlKG1fbWF0cml4KTsKICAgICBtYXRyaXgt
Pm1fbWF0cml4LnNrZXdYKGFuZ2xlKTsKICAgICByZXR1cm4gbWF0cml4OwogfQogCi1SZWZQdHI8
V2ViS2l0Q1NTTWF0cml4PiBXZWJLaXRDU1NNYXRyaXg6OnNrZXdZKGRvdWJsZSBhbmdsZSkgY29u
c3QKK1JlZjxXZWJLaXRDU1NNYXRyaXg+IFdlYktpdENTU01hdHJpeDo6c2tld1koZG91YmxlIGFu
Z2xlKSBjb25zdAogewogICAgIGlmIChzdGQ6OmlzbmFuKGFuZ2xlKSkKICAgICAgICAgYW5nbGUg
PSAwOwogCi0gICAgUmVmUHRyPFdlYktpdENTU01hdHJpeD4gbWF0cml4ID0gV2ViS2l0Q1NTTWF0
cml4OjpjcmVhdGUobV9tYXRyaXgpOworICAgIGF1dG8gbWF0cml4ID0gY3JlYXRlKG1fbWF0cml4
KTsKICAgICBtYXRyaXgtPm1fbWF0cml4LnNrZXdZKGFuZ2xlKTsKICAgICByZXR1cm4gbWF0cml4
OwogfQpAQCAtMTk5LDEzICsyMDAsMTIgQEAgU3RyaW5nIFdlYktpdENTU01hdHJpeDo6dG9TdHJp
bmcoKSBjb25zdAogewogICAgIC8vIEZJWE1FIC0gTmVlZCB0byBlbnN1cmUgdmFsaWQgQ1NTIGZs
b2F0aW5nIHBvaW50IHZhbHVlcyAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwNjc0KQogICAgIGlmIChtX21hdHJpeC5pc0FmZmluZSgpKQotICAgICAgICByZXR1cm4g
U3RyaW5nOjpmb3JtYXQoIm1hdHJpeCglZiwgJWYsICVmLCAlZiwgJWYsICVmKSIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1fbWF0cml4LmEoKSwgbV9tYXRyaXguYigpLCBtX21h
dHJpeC5jKCksIG1fbWF0cml4LmQoKSwgbV9tYXRyaXguZSgpLCBtX21hdHJpeC5mKCkpOworICAg
ICAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIm1hdHJpeCglZiwgJWYsICVmLCAlZiwgJWYsICVm
KSIsIG1fbWF0cml4LmEoKSwgbV9tYXRyaXguYigpLCBtX21hdHJpeC5jKCksIG1fbWF0cml4LmQo
KSwgbV9tYXRyaXguZSgpLCBtX21hdHJpeC5mKCkpOwogICAgIHJldHVybiBTdHJpbmc6OmZvcm1h
dCgibWF0cml4M2QoJWYsICVmLCAlZiwgJWYsICVmLCAlZiwgJWYsICVmLCAlZiwgJWYsICVmLCAl
ZiwgJWYsICVmLCAlZiwgJWYpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX21hdHJp
eC5tMTEoKSwgbV9tYXRyaXgubTEyKCksIG1fbWF0cml4Lm0xMygpLCBtX21hdHJpeC5tMTQoKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX21hdHJpeC5tMjEoKSwgbV9tYXRyaXgubTIy
KCksIG1fbWF0cml4Lm0yMygpLCBtX21hdHJpeC5tMjQoKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtX21hdHJpeC5tMzEoKSwgbV9tYXRyaXgubTMyKCksIG1fbWF0cml4Lm0zMygpLCBt
X21hdHJpeC5tMzQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX21hdHJpeC5tNDEo
KSwgbV9tYXRyaXgubTQyKCksIG1fbWF0cml4Lm00MygpLCBtX21hdHJpeC5tNDQoKSk7CisgICAg
ICAgIG1fbWF0cml4Lm0xMSgpLCBtX21hdHJpeC5tMTIoKSwgbV9tYXRyaXgubTEzKCksIG1fbWF0
cml4Lm0xNCgpLAorICAgICAgICBtX21hdHJpeC5tMjEoKSwgbV9tYXRyaXgubTIyKCksIG1fbWF0
cml4Lm0yMygpLCBtX21hdHJpeC5tMjQoKSwKKyAgICAgICAgbV9tYXRyaXgubTMxKCksIG1fbWF0
cml4Lm0zMigpLCBtX21hdHJpeC5tMzMoKSwgbV9tYXRyaXgubTM0KCksCisgICAgICAgIG1fbWF0
cml4Lm00MSgpLCBtX21hdHJpeC5tNDIoKSwgbV9tYXRyaXgubTQzKCksIG1fbWF0cml4Lm00NCgp
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL1dlYktpdENTU01hdHJpeC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU01h
dHJpeC5oCmluZGV4IDg5MjFjZTQ2NjA0MjA2MTFmNzFhYjA1YzQ2ODIxYzgyOTY1YTk5NmMuLjg0
YzAyNzliZjUwZTc1NTIwODMxZTQzYmI4YWY2ODZmYjI2ZmEyMWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NNYXRyaXguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
V2ViS2l0Q1NTTWF0cml4LmgKQEAgLTIzLDI5ICsyMywxOCBAQAogICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCi0jaWZuZGVmIFdlYktpdENTU01hdHJpeF9oCi0jZGVmaW5lIFdlYktpdENTU01hdHJpeF9o
CisjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0V3JhcHBhYmxlLmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKLSNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi10eXBlZGVm
IGludCBFeGNlcHRpb25Db2RlOwotCiBjbGFzcyBXZWJLaXRDU1NNYXRyaXggZmluYWwgOiBwdWJs
aWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgUmVmQ291bnRlZDxXZWJLaXRDU1NNYXRyaXg+IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYktpdENTU01hdHJpeD4gY3JlYXRlKGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4JiBtKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgV2ViS2l0Q1NTTWF0cml4KG0pKTsKLSAgICB9Ci0gICAgc3RhdGljIFJlZjxXZWJLaXRDU1NN
YXRyaXg+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHMsIEV4Y2VwdGlvbkNvZGUmIGVjKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViS2l0Q1NTTWF0cml4KHMsIGVjKSk7Ci0g
ICAgfQorICAgIHN0YXRpYyBSZWY8V2ViS2l0Q1NTTWF0cml4PiBjcmVhdGUoY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmKTsKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPFdlYktpdENTU01h
dHJpeD4+IGNyZWF0ZShjb25zdCBTdHJpbmcmKTsKIAogICAgIH5XZWJLaXRDU1NNYXRyaXgoKTsK
IApAQCAtOTcsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRNNDMoZG91YmxlIGYpIHsg
bV9tYXRyaXguc2V0TTQzKGYpOyB9CiAgICAgdm9pZCBzZXRNNDQoZG91YmxlIGYpIHsgbV9tYXRy
aXguc2V0TTQ0KGYpOyB9CiAKLSAgICB2b2lkIHNldE1hdHJpeFZhbHVlKGNvbnN0IFN0cmluZyYs
IEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRNYXRyaXhWYWx1ZShj
b25zdCBTdHJpbmcmKTsKIAogICAgIC8vIFRoZSBmb2xsb3dpbmcgbWF0aCBmdW5jdGlvbiByZXR1
cm4gYSBuZXcgbWF0cml4IHdpdGggdGhlCiAgICAgLy8gc3BlY2lmaWVkIG9wZXJhdGlvbiBhcHBs
aWVkLiBUaGUgdGhpcyB2YWx1ZSBpcyBub3QgbW9kaWZpZWQuCkBAIC0xMDYsNTcgKzk1LDU1IEBA
IHB1YmxpYzoKICAgICBSZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiBtdWx0aXBseShXZWJLaXRDU1NN
YXRyaXgqIHNlY29uZE1hdHJpeCkgY29uc3Q7CiAKICAgICAvLyBSZXR1cm4gdGhlIGludmVyc2Ug
b2YgdGhpcyBtYXRyaXguIFRocm93IGFuIGV4Y2VwdGlvbiBpZiB0aGUgbWF0cml4IGlzIG5vdCBp
bnZlcnRpYmxlCi0gICAgUmVmUHRyPFdlYktpdENTU01hdHJpeD4gaW52ZXJzZShFeGNlcHRpb25D
b2RlJikgY29uc3Q7CisgICAgRXhjZXB0aW9uT3I8UmVmPFdlYktpdENTU01hdHJpeD4+IGludmVy
c2UoKSBjb25zdDsKIAogICAgIC8vIFJldHVybiB0aGlzIG1hdHJpeCB0cmFuc2xhdGVkIGJ5IHRo
ZSBwYXNzZWQgdmFsdWVzLgogICAgIC8vIFBhc3NpbmcgYSBOYU4gd2lsbCB1c2UgYSB2YWx1ZSBv
ZiAwLiBUaGlzIGFsbG93cyB0aGUgM0QgZm9ybSB0byB1c2VkIGZvciAyRCBvcGVyYXRpb25zCiAg
ICAgLy8gT3BlcmF0aW9uIGlzIHBlcmZvcm1lZCBhcyB0aG91Z2ggdGhlIHRoaXMgbWF0cml4IGlz
IG11bHRpcGxpZWQgYnkgYSBtYXRyaXggd2l0aAogICAgIC8vIHRoZSB0cmFuc2xhdGlvbiB2YWx1
ZXMgb24gdGhlIGxlZnQgKHJlc3VsdCA9IHRyYW5zbGF0aW9uKHgseSx6KSAqIHRoaXMpCi0gICAg
UmVmUHRyPFdlYktpdENTU01hdHJpeD4gdHJhbnNsYXRlKGRvdWJsZSB4LCBkb3VibGUgeSwgZG91
YmxlIHopIGNvbnN0OworICAgIFJlZjxXZWJLaXRDU1NNYXRyaXg+IHRyYW5zbGF0ZShkb3VibGUg
eCwgZG91YmxlIHksIGRvdWJsZSB6KSBjb25zdDsKIAogICAgIC8vIFJldHVybnMgdGhpcyBtYXRy
aXggc2NhbGVkIGJ5IHRoZSBwYXNzZWQgdmFsdWVzLgogICAgIC8vIFBhc3Npbmcgc2NhbGVYIG9y
IHNjYWxlWiBhcyBOYU4gdXNlcyBhIHZhbHVlIG9mIDEsIGJ1dCBwYXNzaW5nIHNjYWxlWSBvZiBO
YU4KICAgICAvLyBtYWtlcyBpdCB0aGUgc2FtZSBhcyBzY2FsZVguIFRoaXMgYWxsb3dzIHRoZSAz
RCBmb3JtIHRvIHVzZWQgZm9yIDJEIG9wZXJhdGlvbnMKICAgICAvLyBPcGVyYXRpb24gaXMgcGVy
Zm9ybWVkIGFzIHRob3VnaCB0aGUgdGhpcyBtYXRyaXggaXMgbXVsdGlwbGllZCBieSBhIG1hdHJp
eCB3aXRoCiAgICAgLy8gdGhlIHNjYWxlIHZhbHVlcyBvbiB0aGUgbGVmdCAocmVzdWx0ID0gc2Nh
bGUoeCx5LHopICogdGhpcykKLSAgICBSZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiBzY2FsZShkb3Vi
bGUgc2NhbGVYLCBkb3VibGUgc2NhbGVZLCBkb3VibGUgc2NhbGVaKSBjb25zdDsKKyAgICBSZWY8
V2ViS2l0Q1NTTWF0cml4PiBzY2FsZShkb3VibGUgc2NhbGVYLCBkb3VibGUgc2NhbGVZLCBkb3Vi
bGUgc2NhbGVaKSBjb25zdDsKIAogICAgIC8vIFJldHVybnMgdGhpcyBtYXRyaXggcm90YXRlZCBi
eSB0aGUgcGFzc2VkIHZhbHVlcy4KICAgICAvLyBJZiByb3RZIGFuZCByb3RaIGFyZSBOYU4sIHJv
dGF0ZSBhYm91dCBaIChyb3RYPTAsIHJvdGF0ZVk9MCwgcm90YXRlWj1yb3RYKS4KICAgICAvLyBP
dGhlcndpc2UgdXNlIGEgcm90YXRpb24gdmFsdWUgb2YgMCBmb3IgYW55IHBhc3NlZCBOYU4uCiAg
ICAgLy8gT3BlcmF0aW9uIGlzIHBlcmZvcm1lZCBhcyB0aG91Z2ggdGhlIHRoaXMgbWF0cml4IGlz
IG11bHRpcGxpZWQgYnkgYSBtYXRyaXggd2l0aAogICAgIC8vIHRoZSByb3RhdGlvbiB2YWx1ZXMg
b24gdGhlIGxlZnQgKHJlc3VsdCA9IHJvdGF0aW9uKHgseSx6KSAqIHRoaXMpCi0gICAgUmVmUHRy
PFdlYktpdENTU01hdHJpeD4gcm90YXRlKGRvdWJsZSByb3RYLCBkb3VibGUgcm90WSwgZG91Ymxl
IHJvdFopIGNvbnN0OworICAgIFJlZjxXZWJLaXRDU1NNYXRyaXg+IHJvdGF0ZShkb3VibGUgcm90
WCwgZG91YmxlIHJvdFksIGRvdWJsZSByb3RaKSBjb25zdDsKIAogICAgIC8vIFJldHVybnMgdGhp
cyBtYXRyaXggcm90YXRlZCBhYm91dCB0aGUgcGFzc2VkIGF4aXMgYnkgdGhlIHBhc3NlZCBhbmds
ZS4KICAgICAvLyBQYXNzaW5nIGEgTmFOIHdpbGwgdXNlIGEgdmFsdWUgb2YgMC4gSWYgdGhlIGF4
aXMgaXMgKDAsMCwwKSB1c2UgYSB2YWx1ZQogICAgIC8vIE9wZXJhdGlvbiBpcyBwZXJmb3JtZWQg
YXMgdGhvdWdoIHRoZSB0aGlzIG1hdHJpeCBpcyBtdWx0aXBsaWVkIGJ5IGEgbWF0cml4IHdpdGgK
ICAgICAvLyB0aGUgcm90YXRpb24gdmFsdWVzIG9uIHRoZSBsZWZ0IChyZXN1bHQgPSByb3RhdGlv
bih4LHkseixhbmdsZSkgKiB0aGlzKQotICAgIFJlZlB0cjxXZWJLaXRDU1NNYXRyaXg+IHJvdGF0
ZUF4aXNBbmdsZShkb3VibGUgeCwgZG91YmxlIHksIGRvdWJsZSB6LCBkb3VibGUgYW5nbGUpIGNv
bnN0OworICAgIFJlZjxXZWJLaXRDU1NNYXRyaXg+IHJvdGF0ZUF4aXNBbmdsZShkb3VibGUgeCwg
ZG91YmxlIHksIGRvdWJsZSB6LCBkb3VibGUgYW5nbGUpIGNvbnN0OwogCiAgICAgLy8gUmV0dXJu
IHRoaXMgbWF0cml4IHNrZXdlZCBhbG9uZyB0aGUgWCBheGlzIGJ5IHRoZSBwYXNzZWQgdmFsdWVz
LgogICAgIC8vIFBhc3NpbmcgYSBOYU4gd2lsbCB1c2UgYSB2YWx1ZSBvZiAwLgogICAgIC8vIE9w
ZXJhdGlvbiBpcyBwZXJmb3JtZWQgYXMgdGhvdWdoIHRoZSB0aGlzIG1hdHJpeCBpcyBtdWx0aXBs
aWVkIGJ5IGEgbWF0cml4IHdpdGgKICAgICAvLyB0aGUgc2tldyB2YWx1ZXMgb24gdGhlIGxlZnQg
KHJlc3VsdCA9IHNrZXdYKGFuZ2xlKSAqIHRoaXMpCi0gICAgUmVmUHRyPFdlYktpdENTU01hdHJp
eD4gc2tld1goZG91YmxlIGFuZ2xlKSBjb25zdDsKKyAgICBSZWY8V2ViS2l0Q1NTTWF0cml4PiBz
a2V3WChkb3VibGUgYW5nbGUpIGNvbnN0OwogCiAgICAgLy8gUmV0dXJuIHRoaXMgbWF0cml4IHNr
ZXdlZCBhbG9uZyB0aGUgWSBheGlzIGJ5IHRoZSBwYXNzZWQgdmFsdWVzLgogICAgIC8vIFBhc3Np
bmcgYSBOYU4gd2lsbCB1c2UgYSB2YWx1ZSBvZiAwLgogICAgIC8vIE9wZXJhdGlvbiBpcyBwZXJm
b3JtZWQgYXMgdGhvdWdoIHRoZSB0aGlzIG1hdHJpeCBpcyBtdWx0aXBsaWVkIGJ5IGEgbWF0cml4
IHdpdGgKICAgICAvLyB0aGUgc2tldyB2YWx1ZXMgb24gdGhlIGxlZnQgKHJlc3VsdCA9IHNrZXdZ
KGFuZ2xlKSAqIHRoaXMpCi0gICAgUmVmUHRyPFdlYktpdENTU01hdHJpeD4gc2tld1koZG91Ymxl
IGFuZ2xlKSBjb25zdDsKKyAgICBSZWY8V2ViS2l0Q1NTTWF0cml4PiBza2V3WShkb3VibGUgYW5n
bGUpIGNvbnN0OwogCiAgICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSgp
IGNvbnN0IHsgcmV0dXJuIG1fbWF0cml4OyB9CiAKICAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25z
dDsKIAotcHJvdGVjdGVkOgorcHJpdmF0ZToKKyAgICBXZWJLaXRDU1NNYXRyaXgoKSA9IGRlZmF1
bHQ7CiAgICAgV2ViS2l0Q1NTTWF0cml4KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jik7Ci0g
ICAgV2ViS2l0Q1NTTWF0cml4KGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAg
IFRyYW5zZm9ybWF0aW9uTWF0cml4IG1fbWF0cml4OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYgLy8gV2ViS2l0Q1NTTWF0cml4X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9XZWJLaXRDU1NNYXRyaXguaWRsIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktp
dENTU01hdHJpeC5pZGwKaW5kZXggYjdmMTJiMmNjNjNmNDk1ZGM1Yzg3Y2UyYzllMmEwZDY1MDVm
ZTdmMy4uYjhkNWYzMjZhODUzY2IzMjcyNTMxNjk5YjRhMWFmNzFhN2NjNWY1ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5pZGwKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5pZGwKQEAgLTIzLDEwICsyMyw5IEBACiAgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKICAqLwogCi0vLyBJbnRyb2R1Y2VkIGluIERPTSBMZXZlbCA/OgogWwogICAgIENv
bnN0cnVjdG9yKG9wdGlvbmFsIERPTVN0cmluZyBjc3NWYWx1ZSksCi0gICAgQ29uc3RydWN0b3JN
YXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbiwKKyAgICBDb25zdHJ1Y3Rvck1heVRocm93RXhjZXB0aW9u
LAogICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCiBdIGludGVyZmFjZSBXZWJLaXRDU1NN
YXRyaXggewogCkBAIC01NywxMyArNTYsMTMgQEAKICAgICBhdHRyaWJ1dGUgdW5yZXN0cmljdGVk
IGRvdWJsZSBtNDQ7CiAKICAgICAvLyBGSVhNRTogVXNpbmcgInVuZGVmaW5lZCIgYXMgZGVmYXVs
dCBwYXJhbWV0ZXIgdmFsdWUgaXMgd3JvbmcuCi0gICAgW01heVRocm93TGVnYWN5RXhjZXB0aW9u
XSB2b2lkIHNldE1hdHJpeFZhbHVlKG9wdGlvbmFsIERPTVN0cmluZyBzdHJpbmcgPSAidW5kZWZp
bmVkIik7CisgICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldE1hdHJpeFZhbHVlKG9wdGlv
bmFsIERPTVN0cmluZyBzdHJpbmcgPSAidW5kZWZpbmVkIik7CiAgICAgCiAgICAgLy8gTXVsdGlw
bHkgdGhpcyBtYXRyaXggYnkgc2Vjb25kTWF0cml4LCBvbiB0aGUgcmlnaHQgKHJlc3VsdCA9IHRo
aXMgKiBzZWNvbmRNYXRyaXgpCiAgICAgW0ltbXV0YWJsZV0gV2ViS2l0Q1NTTWF0cml4IG11bHRp
cGx5KG9wdGlvbmFsIFdlYktpdENTU01hdHJpeD8gc2Vjb25kTWF0cml4ID0gbnVsbCk7CiAgICAg
CiAgICAgLy8gUmV0dXJuIHRoZSBpbnZlcnNlIG9mIHRoaXMgbWF0cml4LiBUaHJvdyBhbiBleGNl
cHRpb24gaWYgdGhlIG1hdHJpeCBpcyBub3QgaW52ZXJ0aWJsZQotICAgIFtJbW11dGFibGUsIE1h
eVRocm93TGVnYWN5RXhjZXB0aW9uXSBXZWJLaXRDU1NNYXRyaXggaW52ZXJzZSgpOworICAgIFtJ
bW11dGFibGUsIE1heVRocm93RXhjZXB0aW9uXSBXZWJLaXRDU1NNYXRyaXggaW52ZXJzZSgpOwog
ICAgIAogICAgIC8vIFJldHVybiB0aGlzIG1hdHJpeCB0cmFuc2xhdGVkIGJ5IHRoZSBwYXNzZWQg
dmFsdWVzLgogICAgIC8vIFBhc3NpbmcgYSBOYU4gd2lsbCB1c2UgYSB2YWx1ZSBvZiAwLiBUaGlz
IGFsbG93cyB0aGUgM0QgZm9ybSB0byB1c2VkIGZvciAyRCBvcGVyYXRpb25zCkBAIC0xMDMsNCAr
MTAyLDMgQEAKIAogICAgIFtOb3RFbnVtZXJhYmxlXSBET01TdHJpbmcgdG9TdHJpbmcoKTsKIH07
Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9tYWtlcHJvcC5wbCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9tYWtlcHJvcC5wbAppbmRleCA5ZTk2ZDliYWJiMTJhNDBmYjgwOTdmMGEwNjNj
YmY4ODE5MjMxNzMxLi40MjNmYmE2YjcwNDAwMWQ1MjhjNDZlNzJlMzA3ZTllYmVmNjY0NjA1IDEw
MDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvbWFrZXByb3AucGwKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL21ha2Vwcm9wLnBsCkBAIC01MTgsNyArNTE4LDcgQEAgc3ViIGhhbmRsZUN1cnJl
bnRDb2xvclZhbHVlIHsKICAgbXkgJHByaW1pdGl2ZVZhbHVlID0gc2hpZnQ7CiAgIG15ICRpbmRl
bnQgPSBzaGlmdDsKIAotICBteSAkY29kZSA9ICRpbmRlbnQgLiAiaWYgKCIgLiAkcHJpbWl0aXZl
VmFsdWUgLiAiLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZUN1cnJlbnRjb2xvcikge1xuIjsKKyAg
bXkgJGNvZGUgPSAkaW5kZW50IC4gImlmICgiIC4gJHByaW1pdGl2ZVZhbHVlIC4gIi52YWx1ZUlE
KCkgPT0gQ1NTVmFsdWVDdXJyZW50Y29sb3IpIHtcbiI7CiAgICRjb2RlIC49ICRpbmRlbnQgLiAi
ICAgIGFwcGx5SW5oZXJpdCIgLiAkbmFtZVRvSWR7JG5hbWV9IC4gIihzdHlsZVJlc29sdmVyKTtc
biI7CiAgICRjb2RlIC49ICRpbmRlbnQgLiAiICAgIHJldHVybjtcbiI7CiAgICRjb2RlIC49ICRp
bmRlbnQgLiAifVxuIjsKQEAgLTc5NCw3ICs3OTQsNyBAQCBzdWIgZ2VuZXJhdGVWYWx1ZVNldHRl
ciB7CiAgIG15ICRzdHlsZSA9ICJzdHlsZVJlc29sdmVyLnN0eWxlKCkiOwogICBteSAkZGlkQ2Fs
bFNldFZhbHVlID0gMDsKICAgaWYgKGV4aXN0cyAkcHJvcGVydGllc1dpdGhTdHlsZUJ1aWxkZXJP
cHRpb25zeyRuYW1lfXsiQXV0b0Z1bmN0aW9ucyJ9KSB7Ci0gICAgJHNldHRlckNvbnRlbnQgLj0g
JGluZGVudCAuICIgICAgaWYgKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkuZ2V0
VmFsdWVJRCgpID09IENTU1ZhbHVlQXV0bykge1xuIjsKKyAgICAkc2V0dGVyQ29udGVudCAuPSAk
aW5kZW50IC4gIiAgICBpZiAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS52YWx1
ZUlEKCkgPT0gQ1NTVmFsdWVBdXRvKSB7XG4iOwogICAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRl
bnQgLiAiICAgICAgICAiLiBnZXRBdXRvU2V0dGVyKCRuYW1lLCAkc3R5bGUpIC4gIjtcbiI7CiAg
ICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgICAgIHJldHVybjtcbiI7CiAgICAg
JHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgfVxuIjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9w
YXJzZXIvQ1NTUGFyc2VyLmNwcAppbmRleCAzZTA2Zjg1MjI3MzQzZjlkNjliNzhhMjU3MDgzOTEx
Y2U5ZmNhOGZhLi4yNDI2Y2MzMmI3ZjhkYjY3OTU4Y2Q0MTIyZGRkZWI5MjFiZWY4NmYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuY3BwCkBAIC00MjQ1LDcgKzQyNDUsNyBA
QCB2b2lkIENTU1BhcnNlcjo6cGFyc2U0VmFsdWVzRmlsbFBvc2l0aW9uKENTU1BhcnNlclZhbHVl
TGlzdCYgdmFsdWVMaXN0LCBSZWZQdHI8QwogewogICAgIC8vIFsgbGVmdCB8IHJpZ2h0IF0gWyA8
cGVyY2VudGFnZV0gfCA8bGVuZ3RoPiBdICYmIFsgdG9wIHwgYm90dG9tIF0gWyA8cGVyY2VudGFn
ZT4gfCA8bGVuZ3RoPiBdCiAgICAgLy8gSW4gdGhlIGNhc2Ugb2YgNCB2YWx1ZXMgPHBvc2l0aW9u
PiByZXF1aXJlcyB0aGUgc2Vjb25kIHZhbHVlIHRvIGJlIGEgbGVuZ3RoIG9yIGEgcGVyY2VudGFn
ZS4KLSAgICBpZiAoaXNGaWxsUG9zaXRpb25LZXl3b3JkKHBhcnNlZFZhbHVlMi0+Z2V0VmFsdWVJ
RCgpKSkKKyAgICBpZiAoaXNGaWxsUG9zaXRpb25LZXl3b3JkKHBhcnNlZFZhbHVlMi0+dmFsdWVJ
RCgpKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgdW5zaWduZWQgY3VtdWxhdGl2ZUZsYWdzID0g
MDsKQEAgLTQyNTQsOCArNDI1NCw4IEBAIHZvaWQgQ1NTUGFyc2VyOjpwYXJzZTRWYWx1ZXNGaWxs
UG9zaXRpb24oQ1NTUGFyc2VyVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIFJlZlB0cjxDCiAgICAgaWYg
KCF2YWx1ZTMpCiAgICAgICAgIHJldHVybjsKIAotICAgIENTU1ZhbHVlSUQgaWRlbnQxID0gcGFy
c2VkVmFsdWUxLT5nZXRWYWx1ZUlEKCk7Ci0gICAgQ1NTVmFsdWVJRCBpZGVudDMgPSB2YWx1ZTMt
PmdldFZhbHVlSUQoKTsKKyAgICBDU1NWYWx1ZUlEIGlkZW50MSA9IHBhcnNlZFZhbHVlMS0+dmFs
dWVJRCgpOworICAgIENTU1ZhbHVlSUQgaWRlbnQzID0gdmFsdWUzLT52YWx1ZUlEKCk7CiAKICAg
ICBpZiAoaWRlbnQxID09IENTU1ZhbHVlQ2VudGVyKQogICAgICAgICByZXR1cm47CkBAIC00Mjc4
LDcgKzQyNzgsNyBAQCB2b2lkIENTU1BhcnNlcjo6cGFyc2U0VmFsdWVzRmlsbFBvc2l0aW9uKENT
U1BhcnNlclZhbHVlTGlzdCYgdmFsdWVMaXN0LCBSZWZQdHI8QwogICAgICAgICByZXR1cm47CiAK
ICAgICAvLyA0dGggdmFsdWUgbXVzdCBiZSBhIGxlbmd0aCBvciBhIHBlcmNlbnRhZ2UuCi0gICAg
aWYgKGlzRmlsbFBvc2l0aW9uS2V5d29yZCh2YWx1ZTQtPmdldFZhbHVlSUQoKSkpCisgICAgaWYg
KGlzRmlsbFBvc2l0aW9uS2V5d29yZCh2YWx1ZTQtPnZhbHVlSUQoKSkpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIHZhbHVlMSA9IGNyZWF0ZVByaW1pdGl2ZVZhbHVlUGFpcihXVEZNb3ZlKHBhcnNl
ZFZhbHVlMSksIFdURk1vdmUocGFyc2VkVmFsdWUyKSk7CkBAIC00MzAzLDkgKzQzMDMsOSBAQCB2
b2lkIENTU1BhcnNlcjo6cGFyc2UzVmFsdWVzRmlsbFBvc2l0aW9uKENTU1BhcnNlclZhbHVlTGlz
dCYgdmFsdWVMaXN0LCBSZWZQdHI8QwogICAgIHZhbHVlTGlzdC5uZXh0KCk7CiAKICAgICBib29s
IHN3YXBOZWVkZWQgPSBmYWxzZTsKLSAgICBDU1NWYWx1ZUlEIGlkZW50MSA9IHBhcnNlZFZhbHVl
MS0+Z2V0VmFsdWVJRCgpOwotICAgIENTU1ZhbHVlSUQgaWRlbnQyID0gcGFyc2VkVmFsdWUyLT5n
ZXRWYWx1ZUlEKCk7Ci0gICAgQ1NTVmFsdWVJRCBpZGVudDMgPSB2YWx1ZTMtPmdldFZhbHVlSUQo
KTsKKyAgICBDU1NWYWx1ZUlEIGlkZW50MSA9IHBhcnNlZFZhbHVlMS0+dmFsdWVJRCgpOworICAg
IENTU1ZhbHVlSUQgaWRlbnQyID0gcGFyc2VkVmFsdWUyLT52YWx1ZUlEKCk7CisgICAgQ1NTVmFs
dWVJRCBpZGVudDMgPSB2YWx1ZTMtPnZhbHVlSUQoKTsKIAogICAgIENTU1ZhbHVlSUQgZmlyc3RQ
b3NpdGlvbktleXdvcmQ7CiAgICAgQ1NTVmFsdWVJRCBzZWNvbmRQb3NpdGlvbktleXdvcmQ7CkBA
IC00Mzc1LDggKzQzNzUsOCBAQCB2b2lkIENTU1BhcnNlcjo6cGFyc2UzVmFsdWVzRmlsbFBvc2l0
aW9uKENTU1BhcnNlclZhbHVlTGlzdCYgdmFsdWVMaXN0LCBSZWZQdHI8QwogI2lmbmRlZiBOREVC
VUcKICAgICBDU1NQcmltaXRpdmVWYWx1ZSYgZmlyc3QgPSAqdmFsdWUxOwogICAgIENTU1ByaW1p
dGl2ZVZhbHVlJiBzZWNvbmQgPSAqdmFsdWUyOwotICAgIGlkZW50MSA9IGZpcnN0LmdldFBhaXJW
YWx1ZSgpLT5maXJzdCgpLT5nZXRWYWx1ZUlEKCk7Ci0gICAgaWRlbnQyID0gc2Vjb25kLmdldFBh
aXJWYWx1ZSgpLT5maXJzdCgpLT5nZXRWYWx1ZUlEKCk7CisgICAgaWRlbnQxID0gZmlyc3QucGFp
clZhbHVlKCktPmZpcnN0KCktPnZhbHVlSUQoKTsKKyAgICBpZGVudDIgPSBzZWNvbmQucGFpclZh
bHVlKCktPmZpcnN0KCktPnZhbHVlSUQoKTsKICAgICBBU1NFUlQoaWRlbnQxID09IENTU1ZhbHVl
TGVmdCB8fCBpZGVudDEgPT0gQ1NTVmFsdWVSaWdodCk7CiAgICAgQVNTRVJUKGlkZW50MiA9PSBD
U1NWYWx1ZUJvdHRvbSB8fCBpZGVudDIgPT0gQ1NTVmFsdWVUb3ApOwogI2VuZGlmCkBAIC00NDQx
LDcgKzQ0NDEsNyBAQCB2b2lkIENTU1BhcnNlcjo6cGFyc2VGaWxsUG9zaXRpb24oQ1NTUGFyc2Vy
VmFsdWVMaXN0JiB2YWx1ZUxpc3QsIFJlZlB0cjxDU1NQcmltaQogICAgIGF1dG8gcGFyc2VkVmFs
dWUyID0gdmFsdWUyLnJlbGVhc2VOb25OdWxsKCk7CiAKICAgICAvLyBQZXIgQ1NTMyBzeW50YXgs
IDxwb3NpdGlvbj4gY2FuJ3QgaGF2ZSAnY2VudGVyJyBhcyBpdHMgc2Vjb25kIGtleXdvcmQgYXMg
d2UgaGF2ZSBtb3JlIGFyZ3VtZW50cyB0byBmb2xsb3cuCi0gICAgaWYgKHBhcnNlZFZhbHVlMi0+
Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlQ2VudGVyKQorICAgIGlmIChwYXJzZWRWYWx1ZTItPnZh
bHVlSUQoKSA9PSBDU1NWYWx1ZUNlbnRlcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG51
bWJlck9mVmFsdWVzID09IDMpCkBAIC00NTMyLDcgKzQ1MzIsNyBAQCB2b2lkIENTU1BhcnNlcjo6
cGFyc2VGaWxsUmVwZWF0KFJlZlB0cjxDU1NWYWx1ZT4mIHZhbHVlMSwgUmVmUHRyPENTU1ZhbHVl
PiYgdmFsdQogCiAgICAgLy8gSWYgb25seSBvbmUgdmFsdWUgd2FzIHNwZWNpZmllZCwgdmFsdWUy
IGlzIHRoZSBzYW1lIGFzIHZhbHVlMS4KICAgICBtX2ltcGxpY2l0U2hvcnRoYW5kID0gdHJ1ZTsK
LSAgICB2YWx1ZTIgPSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJW
YWx1ZShkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVlMSkuZ2V0VmFsdWVJRCgpKTsK
KyAgICB2YWx1ZTIgPSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJW
YWx1ZShkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVlMSkudmFsdWVJRCgpKTsKIH0K
IAogUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlRmlsbFNpemUoQ1NT
UHJvcGVydHlJRCBwcm9wSWQsIGJvb2wmIGFsbG93Q29tbWEpCkBAIC01Mjc0LDEyICs1Mjc0LDEy
IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUdyaWRQb3NpdGlvbigpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gTmVnYXRpdmUgbnVtYmVycyBhcmUgbm90IGFs
bG93ZWQgZm9yIHNwYW4gKGJ1dCBhcmUgZm9yIDxpbnRlZ2VyPikuCi0gICAgaWYgKGhhc1NlZW5T
cGFuS2V5d29yZCAmJiBudW1lcmljVmFsdWUgJiYgbnVtZXJpY1ZhbHVlLT5nZXRJbnRWYWx1ZSgp
IDwgMCkKKyAgICBpZiAoaGFzU2VlblNwYW5LZXl3b3JkICYmIG51bWVyaWNWYWx1ZSAmJiBudW1l
cmljVmFsdWUtPmludFZhbHVlKCkgPCAwKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAg
IC8vIEZvciB0aGUgPGN1c3RvbS1pZGVudD4gY2FzZS4KICAgICBpZiAoZ3JpZExpbmVOYW1lICYm
ICFudW1lcmljVmFsdWUgJiYgIWhhc1NlZW5TcGFuS2V5d29yZCkKLSAgICAgICAgcmV0dXJuIENT
U1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlVmFsdWUoZ3JpZExpbmVOYW1lLT5nZXRTdHJp
bmdWYWx1ZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORyk7CisgICAgICAgIHJldHVy
biBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZVZhbHVlKGdyaWRMaW5lTmFtZS0+c3Ry
aW5nVmFsdWUoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcpOwogCiAgICAgYXV0byB2
YWx1ZXMgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgaWYgKGhh
c1NlZW5TcGFuS2V5d29yZCkKQEAgLTU0MzcsNyArNTQzNyw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpw
YXJzZUdyaWRUZW1wbGF0ZVJvd3NBbmRBcmVhc0FuZENvbHVtbnMoYm9vbCBpbXBvcnRhbnQpCiAg
ICAgICAgIGlmICghdGVtcGxhdGVDb2x1bW5zKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICAvLyBUaGUgdGVtcGxhdGUtY29sdW1ucyA8dHJhY2stbGlzdD4gY2FuJ3QgYmUgJ25v
bmUnLgotICAgICAgICBpZiAodGVtcGxhdGVDb2x1bW5zLT5pc1ByaW1pdGl2ZVZhbHVlKCkgJiYg
ZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp0ZW1wbGF0ZUNvbHVtbnMpLmdldFZhbHVlSUQo
KSA9PSBDU1NWYWx1ZU5vbmUpCisgICAgICAgIGlmICh0ZW1wbGF0ZUNvbHVtbnMtPmlzUHJpbWl0
aXZlVmFsdWUoKSAmJiBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnRlbXBsYXRlQ29sdW1u
cykudmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKQEAgLTU3MDEsNyArNTcwMSw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUdyaWRM
aW5lTmFtZXMoQ1NTUGFyc2VyVmFsdWVMaXN0JiBpbnB1dExpc3QsIENTU1ZhbHVlTGlzdCYKIAog
c3RhdGljIGJvb2wgaXNHcmlkVHJhY2tGaXhlZFNpemVkKGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVl
JiB2YWx1ZSkKIHsKLSAgICBDU1NWYWx1ZUlEIHZhbHVlSUQgPSB2YWx1ZS5nZXRWYWx1ZUlEKCk7
CisgICAgQ1NTVmFsdWVJRCB2YWx1ZUlEID0gdmFsdWUudmFsdWVJRCgpOwogICAgIGlmICh2YWx1
ZUlEID09IENTU1ZhbHVlV2Via2l0TWluQ29udGVudCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlV2Vi
a2l0TWF4Q29udGVudCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZS5pc0ZsZXgo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC05MTc4LDEwICs5MTc4LDEwIEBAIGJvb2wg
Q1NTUGFyc2VyOjpwYXJzZVJhZGlhbEdyYWRpZW50KENTU1BhcnNlclZhbHVlTGlzdCYgdmFsdWVM
aXN0LCBSZWZQdHI8Q1NTVmFsCiAgICAgaWYgKHNpemVWYWx1ZSAmJiBob3Jpem9udGFsU2l6ZSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIC8vIENpcmNsZXMgbXVzdCBoYXZlIDAgb3IgMSBs
ZW5ndGhzLgotICAgIGlmIChzaGFwZVZhbHVlICYmIHNoYXBlVmFsdWUtPmdldFZhbHVlSUQoKSA9
PSBDU1NWYWx1ZUNpcmNsZSAmJiB2ZXJ0aWNhbFNpemUpCisgICAgaWYgKHNoYXBlVmFsdWUgJiYg
c2hhcGVWYWx1ZS0+dmFsdWVJRCgpID09IENTU1ZhbHVlQ2lyY2xlICYmIHZlcnRpY2FsU2l6ZSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIC8vIEVsbGlwc2VzIG11c3QgaGF2ZSAwIG9yIDIg
bGVuZ3RoL3BlcmNlbnRhZ2VzLgotICAgIGlmIChzaGFwZVZhbHVlICYmIHNoYXBlVmFsdWUtPmdl
dFZhbHVlSUQoKSA9PSBDU1NWYWx1ZUVsbGlwc2UgJiYgaG9yaXpvbnRhbFNpemUgJiYgIXZlcnRp
Y2FsU2l6ZSkKKyAgICBpZiAoc2hhcGVWYWx1ZSAmJiBzaGFwZVZhbHVlLT52YWx1ZUlEKCkgPT0g
Q1NTVmFsdWVFbGxpcHNlICYmIGhvcml6b250YWxTaXplICYmICF2ZXJ0aWNhbFNpemUpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAvLyBJZiB0aGVyZSdzIG9ubHkgb25lIHNpemUsIGl0IG11
c3QgYmUgYSBsZW5ndGguCiAgICAgaWYgKCF2ZXJ0aWNhbFNpemUgJiYgaG9yaXpvbnRhbFNpemUg
JiYgaG9yaXpvbnRhbFNpemUtPmlzUGVyY2VudGFnZSgpKQpAQCAtOTk1Nyw3ICs5OTU3LDcgQEAg
UmVmUHRyPFdlYktpdENTU0ZpbHRlclZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlQnVpbHRpbkZpbHRl
ckFyZ3VtZW50cyhDU1NQYXJzZXJWYWwKICAgICAgICAgICAgIGlmIChmaWx0ZXJUeXBlICE9IFdl
YktpdENTU0ZpbHRlclZhbHVlOjpTYXR1cmF0ZUZpbHRlck9wZXJhdGlvbgogICAgICAgICAgICAg
ICAgICYmIGZpbHRlclR5cGUgIT0gV2ViS2l0Q1NTRmlsdGVyVmFsdWU6OkNvbnRyYXN0RmlsdGVy
T3BlcmF0aW9uKSB7CiAgICAgICAgICAgICAgICAgZG91YmxlIG1heEFsbG93ZWQgPSBwcmltaXRp
dmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VO
VEFHRSA/IDEwMC4wIDogMS4wOwotICAgICAgICAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+
Z2V0RG91YmxlVmFsdWUoKSA+IG1heEFsbG93ZWQpCisgICAgICAgICAgICAgICAgaWYgKHByaW1p
dGl2ZVZhbHVlLT5kb3VibGVWYWx1ZSgpID4gbWF4QWxsb3dlZCkKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyVmFsdWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTUGFyc2VyVmFsdWVzLmNwcAppbmRleCBkM2E2MWI0ZmM1NmQxMmEwZmU0N2M0
MzA0ZDEzNWY0ZWEwNjY3Yjg1Li40NzdiNmY2ODEyNmIxODI1YmUzYWI0ZWIwNmQ0ODAyNTkyOTMy
MDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclZhbHVl
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJWYWx1ZXMuY3Bw
CkBAIC05NCwxMSArOTQsOCBAQCBSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlclZhbHVlOjpjcmVh
dGVDU1NWYWx1ZSgpCiAgICAgaWYgKGlkKQogICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFs
dWU6OmNyZWF0ZUlkZW50aWZpZXIoaWQpOwogICAgIAotICAgIGlmICh1bml0ID09IENTU1BhcnNl
clZhbHVlOjpPcGVyYXRvcikgewotICAgICAgICBhdXRvIHByaW1pdGl2ZVZhbHVlID0gQ1NTUHJp
bWl0aXZlVmFsdWU6OmNyZWF0ZVBhcnNlck9wZXJhdG9yKGlWYWx1ZSk7Ci0gICAgICAgIHByaW1p
dGl2ZVZhbHVlLT5zZXRQcmltaXRpdmVUeXBlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEFSU0VS
X09QRVJBVE9SKTsKLSAgICAgICAgcmV0dXJuIFdURk1vdmUocHJpbWl0aXZlVmFsdWUpOwotICAg
IH0KKyAgICBpZiAodW5pdCA9PSBDU1NQYXJzZXJWYWx1ZTo6T3BlcmF0b3IpCisgICAgICAgIHJl
dHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlUGFyc2VyT3BlcmF0b3IoaVZhbHVlKTsKICAg
ICBpZiAodW5pdCA9PSBDU1NQYXJzZXJWYWx1ZTo6RnVuY3Rpb24pCiAgICAgICAgIHJldHVybiBD
U1NGdW5jdGlvblZhbHVlOjpjcmVhdGUoZnVuY3Rpb24pOwogICAgIGlmICh1bml0ID09IENTU1Bh
cnNlclZhbHVlOjpWYXJpYWJsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQ
cm9wZXJ0eVBhcnNlci5jcHAKaW5kZXggMjA2Yjg2OWQyOTkzZjRiZmY0ZjZhNjE0MTAyMDAyNGY0
MjE1OTEzMy4uNDU4NDcyNGIwOTYxODExZTVhOGMyMzEzMGQyYmM3MDUzYWU4YWVlMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKQEAgLTg4
Myw3ICs4ODMsNyBAQCBzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVDb3VudGVyKENTU1BhcnNlclRv
a2VuUmFuZ2UmIHJhbmdlLCBpbnQgZGVmYXVsdFZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgICAgIGludCBpID0gZGVmYXVsdFZhbHVlOwogICAgICAgICBpZiAoQ1NTUHJp
bWl0aXZlVmFsdWUqIGNvdW50ZXJWYWx1ZSA9IGNvbnN1bWVJbnRlZ2VyKHJhbmdlKSkKLSAgICAg
ICAgICAgIGkgPSBjbGFtcFRvPGludD4oY291bnRlclZhbHVlLT5nZXREb3VibGVWYWx1ZSgpKTsK
KyAgICAgICAgICAgIGkgPSBjb3VudGVyVmFsdWUtPmludFZhbHVlKCkpOwogICAgICAgICBsaXN0
LT5hcHBlbmQoKkNTU1ZhbHVlUGFpcjo6Y3JlYXRlKGNvdW50ZXJOYW1lLAogICAgICAgICAgICAg
Q1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShpLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6
OkludGVnZXIpLAogICAgICAgICAgICAgQ1NTVmFsdWVQYWlyOjpEcm9wSWRlbnRpY2FsVmFsdWVz
KSk7CkBAIC05MzYsNyArOTM2LDcgQEAgc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lU25hcEhlaWdo
dChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3MKICAgICBsaXN0
LT5hcHBlbmQoKnVuaXQpOwogCiAgICAgaWYgKENTU1ByaW1pdGl2ZVZhbHVlKiBwb3NpdGlvbiA9
IGNvbnN1bWVQb3NpdGl2ZUludGVnZXIocmFuZ2UpKSB7Ci0gICAgICAgIGlmIChwb3NpdGlvbi0+
Z2V0SW50VmFsdWUoKSA+IDEwMCkKKyAgICAgICAgaWYgKHBvc2l0aW9uLT5pbnRWYWx1ZSgpID4g
MTAwKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIGxpc3QtPmFwcGVuZCgq
cG9zaXRpb24pOwogICAgIH0KQEAgLTExMzEsNyArMTEzMSw3IEBAIHN0YXRpYyBDU1NWYWx1ZSog
Y29uc3VtZUNvbHVtbldpZHRoKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQogICAgIC8vIEFs
d2F5cyBwYXJzZSBsZW5ndGhzIGluIHN0cmljdCBtb2RlIGhlcmUsIHNpbmNlIGl0IHdvdWxkIGJl
IGFtYmlndW91cyBvdGhlcndpc2Ugd2hlbiB1c2VkIGluCiAgICAgLy8gdGhlICdjb2x1bW5zJyBz
aG9ydGhhbmQgcHJvcGVydHkuCiAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbHVtbldpZHRoID0g
Y29uc3VtZUxlbmd0aChyYW5nZSwgSFRNTFN0YW5kYXJkTW9kZSwgVmFsdWVSYW5nZU5vbk5lZ2F0
aXZlKTsKLSAgICBpZiAoIWNvbHVtbldpZHRoIHx8ICghY29sdW1uV2lkdGgtPmlzQ2FsY3VsYXRl
ZCgpICYmIGNvbHVtbldpZHRoLT5nZXREb3VibGVWYWx1ZSgpID09IDApKQorICAgIGlmICghY29s
dW1uV2lkdGggfHwgKCFjb2x1bW5XaWR0aC0+aXNDYWxjdWxhdGVkKCkgJiYgY29sdW1uV2lkdGgt
PmRvdWJsZVZhbHVlKCkgPT0gMCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVy
biBjb2x1bW5XaWR0aDsKIH0KQEAgLTExNjgsOCArMTE2OCw4IEBAIHN0YXRpYyBDU1NWYWx1ZSog
Y29uc3VtZVpvb20oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNv
bnRleHQmCiAgICAgfQogICAgIGlmICh6b29tICYmIGNvbnRleHQudXNlQ291bnRlcigpCiAgICAg
ICAgICYmICEodG9rZW4uaWQoKSA9PSBDU1NWYWx1ZU5vcm1hbAotICAgICAgICAgICAgfHwgKHRv
a2VuLnR5cGUoKSA9PSBOdW1iZXJUb2tlbiAmJiB6b29tLT5nZXREb3VibGVWYWx1ZSgpID09IDEp
Ci0gICAgICAgICAgICB8fCAodG9rZW4udHlwZSgpID09IFBlcmNlbnRhZ2VUb2tlbiAmJiB6b29t
LT5nZXREb3VibGVWYWx1ZSgpID09IDEwMCkpKQorICAgICAgICAgICAgfHwgKHRva2VuLnR5cGUo
KSA9PSBOdW1iZXJUb2tlbiAmJiB6b29tLT5kb3VibGVWYWx1ZSgpID09IDEpCisgICAgICAgICAg
ICB8fCAodG9rZW4udHlwZSgpID09IFBlcmNlbnRhZ2VUb2tlbiAmJiB6b29tLT5kb3VibGVWYWx1
ZSgpID09IDEwMCkpKQogICAgICAgICBjb250ZXh0LnVzZUNvdW50ZXIoKS0+Y291bnQoVXNlQ291
bnRlcjo6Q1NTWm9vbU5vdEVxdWFsVG9PbmUpOwogICAgIHJldHVybiB6b29tOwogfQpAQCAtMTI0
OSw3ICsxMjQ5LDcgQEAgc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lU3RlcHMoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgcmFuZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgcmFuZ2UgPSBy
YW5nZUNvcHk7Ci0gICAgcmV0dXJuIENTU1N0ZXBzVGltaW5nRnVuY3Rpb25WYWx1ZTo6Y3JlYXRl
KHN0ZXBzLT5nZXRJbnRWYWx1ZSgpLCBwb3NpdGlvbik7CisgICAgcmV0dXJuIENTU1N0ZXBzVGlt
aW5nRnVuY3Rpb25WYWx1ZTo6Y3JlYXRlKHN0ZXBzLT5pbnRWYWx1ZSgpLCBwb3NpdGlvbik7CiB9
CiAKIHN0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUN1YmljQmV6aWVyKENTU1BhcnNlclRva2VuUmFu
Z2UmIHJhbmdlKQpAQCAtMTMyOCw3ICsxMzI4LDcgQEAgc3RhdGljIGJvb2wgaXNWYWxpZEFuaW1h
dGlvblByb3BlcnR5TGlzdChDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBjb25zdCBDU1NWYWx1ZUwK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgZm9yIChhdXRvJiB2YWx1ZSA6IHZhbHVlTGlzdCkg
ewogICAgICAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSAmJiB0b0NTU1ByaW1pdGl2
ZVZhbHVlKCp2YWx1ZSkuaXNWYWx1ZUlEKCkKLSAgICAgICAgICAgICYmIHRvQ1NTUHJpbWl0aXZl
VmFsdWUoKnZhbHVlKS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKQorICAgICAgICAgICAg
JiYgdG9DU1NQcmltaXRpdmVWYWx1ZSgqdmFsdWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHJldHVybiB0cnVlOwpAQCAt
MTQyOCw3ICsxNDI4LDcgQEAgc3RhdGljIENTU1NoYWRvd1ZhbHVlKiBwYXJzZVNpbmdsZVNoYWRv
dyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW8KICAgICBDU1NQcmltaXRp
dmVWYWx1ZSogc3ByZWFkRGlzdGFuY2UgPSBudWxscHRyOwogICAgIGlmIChibHVyUmFkaXVzKSB7
CiAgICAgICAgIC8vIEJsdXIgcmFkaXVzIG11c3QgYmUgbm9uLW5lZ2F0aXZlLgotICAgICAgICBp
ZiAoYmx1clJhZGl1cy0+Z2V0RG91YmxlVmFsdWUoKSA8IDApCisgICAgICAgIGlmIChibHVyUmFk
aXVzLT5kb3VibGVWYWx1ZSgpIDwgMCkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
ICAgICBpZiAoYWxsb3dTcHJlYWQpCiAgICAgICAgICAgICBzcHJlYWREaXN0YW5jZSA9IGNvbnN1
bWVMZW5ndGgocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VBbGwpOwpAQCAtMTQ5Niw3
ICsxNDk2LDcgQEAgc3RhdGljIENTU0Z1bmN0aW9uVmFsdWUqIGNvbnN1bWVGaWx0ZXJGdW5jdGlv
bihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QKICAgICAgICAgICAgIGlmIChwYXJz
ZWRWYWx1ZSAmJiBmaWx0ZXJUeXBlICE9IENTU1ZhbHVlU2F0dXJhdGUgJiYgZmlsdGVyVHlwZSAh
PSBDU1NWYWx1ZUNvbnRyYXN0KSB7CiAgICAgICAgICAgICAgICAgYm9vbCBpc1BlcmNlbnRhZ2Ug
PSB0b0NTU1ByaW1pdGl2ZVZhbHVlKHBhcnNlZFZhbHVlKS0+aXNQZXJjZW50YWdlKCk7CiAgICAg
ICAgICAgICAgICAgZG91YmxlIG1heEFsbG93ZWQgPSBpc1BlcmNlbnRhZ2UgPyAxMDAuMCA6IDEu
MDsKLSAgICAgICAgICAgICAgICBpZiAodG9DU1NQcmltaXRpdmVWYWx1ZShwYXJzZWRWYWx1ZSkt
PmdldERvdWJsZVZhbHVlKCkgPiBtYXhBbGxvd2VkKSB7CisgICAgICAgICAgICAgICAgaWYgKHRv
Q1NTUHJpbWl0aXZlVmFsdWUocGFyc2VkVmFsdWUpLT5kb3VibGVWYWx1ZSgpID4gbWF4QWxsb3dl
ZCkgewogICAgICAgICAgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IENTU1ByaW1pdGl2ZVZhbHVl
OjpjcmVhdGUoCiAgICAgICAgICAgICAgICAgICAgICAgICBtYXhBbGxvd2VkLAogICAgICAgICAg
ICAgICAgICAgICAgICAgaXNQZXJjZW50YWdlID8gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBl
OjpQZXJjZW50YWdlIDogQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpOdW1iZXIpOwpAQCAt
MjEyMSw3ICsyMTIxLDcgQEAgc3RhdGljIENTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lUGVyc3Bl
Y3RpdmUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnMKICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgICAgICBwYXJzZWRWYWx1ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpj
cmVhdGUocGVyc3BlY3RpdmUsIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6UGl4ZWxzKTsK
ICAgICB9Ci0gICAgaWYgKHBhcnNlZFZhbHVlICYmIChwYXJzZWRWYWx1ZS0+aXNDYWxjdWxhdGVk
KCkgfHwgcGFyc2VkVmFsdWUtPmdldERvdWJsZVZhbHVlKCkgPiAwKSkKKyAgICBpZiAocGFyc2Vk
VmFsdWUgJiYgKHBhcnNlZFZhbHVlLT5pc0NhbGN1bGF0ZWQoKSB8fCBwYXJzZWRWYWx1ZS0+ZG91
YmxlVmFsdWUoKSA+IDApKQogICAgICAgICByZXR1cm4gcGFyc2VkVmFsdWU7CiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CkBAIC0yMTUyLDcgKzIxNTIsNyBAQCBzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1
bWVTY3JvbGxTbmFwUG9pbnRzKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJN
bwogICAgIGlmIChyYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpID09IENTU1ZhbHVlUmVwZWF0KSB7
CiAgICAgICAgIENTU1BhcnNlclRva2VuUmFuZ2UgYXJncyA9IGNvbnN1bWVGdW5jdGlvbihyYW5n
ZSk7CiAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVMZW5n
dGhPclBlcmNlbnQoYXJncywgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsK
LSAgICAgICAgaWYgKGFyZ3MuYXRFbmQoKSAmJiBwYXJzZWRWYWx1ZSAmJiAocGFyc2VkVmFsdWUt
PmlzQ2FsY3VsYXRlZCgpIHx8IHBhcnNlZFZhbHVlLT5nZXREb3VibGVWYWx1ZSgpID4gMCkpIHsK
KyAgICAgICAgaWYgKGFyZ3MuYXRFbmQoKSAmJiBwYXJzZWRWYWx1ZSAmJiAocGFyc2VkVmFsdWUt
PmlzQ2FsY3VsYXRlZCgpIHx8IHBhcnNlZFZhbHVlLT5kb3VibGVWYWx1ZSgpID4gMCkpIHsKICAg
ICAgICAgICAgIENTU0Z1bmN0aW9uVmFsdWUqIHJlc3VsdCA9IENTU0Z1bmN0aW9uVmFsdWU6OmNy
ZWF0ZShDU1NWYWx1ZVJlcGVhdCk7CiAgICAgICAgICAgICByZXN1bHQtPmFwcGVuZCgqcGFyc2Vk
VmFsdWUpOwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTI1OTIsNyArMjU5Miw3IEBA
IHN0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUltYWdlT3JpZW50YXRpb24oQ1NTUGFyc2VyVG9rZW5S
YW5nZSYgcmFuZ2UpCiAgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOwogICAgIGlm
IChyYW5nZS5wZWVrKCkudHlwZSgpICE9IE51bWJlclRva2VuKSB7CiAgICAgICAgIENTU1ByaW1p
dGl2ZVZhbHVlKiBhbmdsZSA9IGNvbnN1bWVBbmdsZShyYW5nZSk7Ci0gICAgICAgIGlmIChhbmds
ZSAmJiBhbmdsZS0+Z2V0RG91YmxlVmFsdWUoKSA9PSAwKQorICAgICAgICBpZiAoYW5nbGUgJiYg
YW5nbGUtPmRvdWJsZVZhbHVlKCkgPT0gMCkKICAgICAgICAgICAgIHJldHVybiBhbmdsZTsKICAg
ICB9CiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yODQ3LDkgKzI4NDcsOSBAQCBzdGF0aWMgQ1NT
VmFsdWUqIGNvbnN1bWVHcmlkTGluZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKIAogICAg
IGlmIChzcGFuVmFsdWUgJiYgIW51bWVyaWNWYWx1ZSAmJiAhZ3JpZExpbmVOYW1lKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsgLy8gInNwYW4iIGtleXdvcmQgYWxvbmUgaXMgaW52YWxpZC4KLSAg
ICBpZiAoc3BhblZhbHVlICYmIG51bWVyaWNWYWx1ZSAmJiBudW1lcmljVmFsdWUtPmdldEludFZh
bHVlKCkgPCAwKQorICAgIGlmIChzcGFuVmFsdWUgJiYgbnVtZXJpY1ZhbHVlICYmIG51bWVyaWNW
YWx1ZS0+aW50VmFsdWUoKSA8IDApCiAgICAgICAgIHJldHVybiBudWxscHRyOyAvLyBOZWdhdGl2
ZSBudW1iZXJzIGFyZSBub3QgYWxsb3dlZCBmb3Igc3Bhbi4KLSAgICBpZiAobnVtZXJpY1ZhbHVl
ICYmIG51bWVyaWNWYWx1ZS0+Z2V0SW50VmFsdWUoKSA9PSAwKQorICAgIGlmIChudW1lcmljVmFs
dWUgJiYgbnVtZXJpY1ZhbHVlLT5pbnRWYWx1ZSgpID09IDApCiAgICAgICAgIHJldHVybiBudWxs
cHRyOyAvLyBBbiA8aW50ZWdlcj4gdmFsdWUgb2YgemVybyBtYWtlcyB0aGUgZGVjbGFyYXRpb24g
aW52YWxpZC4KIAogICAgIENTU1ZhbHVlTGlzdCogdmFsdWVzID0gQ1NTVmFsdWVMaXN0OjpjcmVh
dGVTcGFjZVNlcGFyYXRlZCgpOwpAQCAtMjg2NSw3ICsyODY1LDcgQEAgc3RhdGljIENTU1ZhbHVl
KiBjb25zdW1lR3JpZExpbmUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCiAKIHN0YXRpYyBi
b29sIGlzR3JpZFRyYWNrRml4ZWRTaXplZChjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYgcHJpbWl0
aXZlVmFsdWUpCiB7Ci0gICAgQ1NTVmFsdWVJRCB2YWx1ZUlEID0gcHJpbWl0aXZlVmFsdWUuZ2V0
VmFsdWVJRCgpOworICAgIENTU1ZhbHVlSUQgdmFsdWVJRCA9IHByaW1pdGl2ZVZhbHVlLnZhbHVl
SUQoKTsKICAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZU1pbkNvbnRlbnQgfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZU1heENvbnRlbnQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgcHJpbWl0
aXZlVmFsdWUuaXNGbGV4KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMzA1Myw3ICsz
MDUzLDcgQEAgc3RhdGljIGJvb2wgY29uc3VtZUdyaWRUcmFja1JlcGVhdEZ1bmN0aW9uKENTU1Bh
cnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXIKICAgICAgICAgQ1NTUHJpbWl0aXZlVmFs
dWUqIHJlcGV0aXRpb24gPSBjb25zdW1lUG9zaXRpdmVJbnRlZ2VyKGFyZ3MpOwogICAgICAgICBp
ZiAoIXJlcGV0aXRpb24pCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJlcGV0
aXRpb25zID0gY2xhbXBUbzxzaXplX3Q+KHJlcGV0aXRpb24tPmdldERvdWJsZVZhbHVlKCksIDAs
IGtHcmlkTWF4VHJhY2tzKTsKKyAgICAgICAgcmVwZXRpdGlvbnMgPSBjbGFtcFRvPHNpemVfdD4o
cmVwZXRpdGlvbi0+ZG91YmxlVmFsdWUoKSwgMCwga0dyaWRNYXhUcmFja3MpOwogICAgICAgICBy
ZXBlYXRlZFZhbHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAg
ICB9CiAgICAgaWYgKCFjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKQpAQCAt
NDI0Miw3ICs0MjQyLDcgQEAgYm9vbCBDU1NQcm9wZXJ0eVBhcnNlcjo6Y29uc3VtZUxlZ2FjeUJy
ZWFrUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgYm9vbAogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgaWYgKCFtX3JhbmdlLmF0RW5kKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICBDU1NWYWx1ZUlEIHZhbHVlID0ga2V5d29yZC0+Z2V0VmFsdWVJRCgpOworICAgIENTU1Zh
bHVlSUQgdmFsdWUgPSBrZXl3b3JkLT52YWx1ZUlEKCk7CiAgICAgc3dpdGNoIChwcm9wZXJ0eSkg
ewogICAgIGNhc2UgQ1NTUHJvcGVydHlQYWdlQnJlYWtBZnRlcjoKICAgICBjYXNlIENTU1Byb3Bl
cnR5UGFnZUJyZWFrQmVmb3JlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNl
ci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNl
ci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwCmluZGV4IGJkZGYwMTZjN2MwOWY0ZDljNmZj
N2E1OTI5NmMxODhkMDJjZjNjNTAuLjU3ODc3Y2RmNjk5NmJkNmM3Yzg0ZGYzM2M2Y2FlNDVmN2Ux
OTRhYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQ
YXJzZXJIZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3Bl
cnR5UGFyc2VySGVscGVycy5jcHAKQEAgLTM3OSw3ICszNzksNyBAQCBSZWZQdHI8Q1NTUHJpbWl0
aXZlVmFsdWU+IGNvbnN1bWVVcmwoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCiAKIHN0YXRp
YyBpbnQgY2xhbXBSR0JDb21wb25lbnQoY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmIHZhbHVlKQog
ewotICAgIGRvdWJsZSByZXN1bHQgPSB2YWx1ZS5nZXREb3VibGVWYWx1ZSgpOworICAgIGRvdWJs
ZSByZXN1bHQgPSB2YWx1ZS5kb3VibGVWYWx1ZSgpOwogICAgIC8vIEZJWE1FOiBNdWx0aXBseSBi
eSAyLjU1IGFuZCByb3VuZCBpbnN0ZWFkIG9mIGZsb29yLgogICAgIGlmICh2YWx1ZS5pc1BlcmNl
bnRhZ2UoKSkKICAgICAgICAgcmVzdWx0ICo9IDIuNTY7CkBAIC00MzAsMTQgKzQzMCwxNCBAQCBz
dGF0aWMgYm9vbCBwYXJzZUhTTFBhcmFtZXRlcnMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2Us
IFJHQkEzMiYgcmVzdWx0LCBib29sCiAgICAgaWYgKCFoc2xWYWx1ZSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIGRvdWJsZSBjb2xvckFycmF5WzNdOwotICAgIGNvbG9yQXJyYXlbMF0gPSAo
KChoc2xWYWx1ZS0+Z2V0SW50VmFsdWUoKSAlIDM2MCkgKyAzNjApICUgMzYwKSAvIDM2MC4wOwor
ICAgIGNvbG9yQXJyYXlbMF0gPSAoKChoc2xWYWx1ZS0+aW50VmFsdWUoKSAlIDM2MCkgKyAzNjAp
ICUgMzYwKSAvIDM2MC4wOwogICAgIGZvciAoaW50IGkgPSAxOyBpIDwgMzsgaSsrKSB7CiAgICAg
ICAgIGlmICghY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaHNsVmFsdWUgPSBjb25zdW1lUGVyY2VudChhcmdz
LCBWYWx1ZVJhbmdlQWxsKTsKICAgICAgICAgaWYgKCFoc2xWYWx1ZSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgZG91YmxlIGRvdWJsZVZhbHVlID0gaHNsVmFsdWUtPmdldERv
dWJsZVZhbHVlKCk7CisgICAgICAgIGRvdWJsZSBkb3VibGVWYWx1ZSA9IGhzbFZhbHVlLT5kb3Vi
bGVWYWx1ZSgpOwogICAgICAgICBjb2xvckFycmF5W2ldID0gY2xhbXBUbzxkb3VibGU+KGRvdWJs
ZVZhbHVlLCAwLjAsIDEwMC4wKSAvIDEwMC4wOyAvLyBOZWVkcyB0byBiZSB2YWx1ZSBiZXR3ZWVu
IDAgYW5kIDEuMC4KICAgICB9CiAgICAgZG91YmxlIGFscGhhID0gMS4wOwpAQCAtNTIxLDEyICs1
MjEsMTIgQEAgc3RhdGljIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZVBvc2l0aW9u
Q29tcG9uZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIHIKIAogc3RhdGljIGJvb2wgaXNIb3Jpem9u
dGFsUG9zaXRpb25LZXl3b3JkT25seShjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYgdmFsdWUpCiB7
Ci0gICAgcmV0dXJuIHZhbHVlLmlzVmFsdWVJRCgpICYmICh2YWx1ZS5nZXRWYWx1ZUlEKCkgPT0g
Q1NTVmFsdWVMZWZ0IHx8IHZhbHVlLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZVJpZ2h0KTsKKyAg
ICByZXR1cm4gdmFsdWUuaXNWYWx1ZUlEKCkgJiYgKHZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1
ZUxlZnQgfHwgdmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlUmlnaHQpOwogfQogCiBzdGF0aWMg
Ym9vbCBpc1ZlcnRpY2FsUG9zaXRpb25LZXl3b3JkT25seShjb25zdCBDU1NQcmltaXRpdmVWYWx1
ZSYgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIHZhbHVlLmlzVmFsdWVJRCgpICYmICh2YWx1ZS5nZXRW
YWx1ZUlEKCkgPT0gQ1NTVmFsdWVUb3AgfHwgdmFsdWUuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVl
Qm90dG9tKTsKKyAgICByZXR1cm4gdmFsdWUuaXNWYWx1ZUlEKCkgJiYgKHZhbHVlLnZhbHVlSUQo
KSA9PSBDU1NWYWx1ZVRvcCB8fCB2YWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVCb3R0b20pOwog
fQogCiBzdGF0aWMgdm9pZCBwb3NpdGlvbkZyb21PbmVWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZSYg
dmFsdWUsIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4mIHJlc3VsdFgsIFJlZlB0cjxDU1NQcmlt
aXRpdmVWYWx1ZT4mIHJlc3VsdFkpCkBAIC01NjcsNyArNTY3LDcgQEAgc3RhdGljIGJvb2wgcG9z
aXRpb25Gcm9tVGhyZWVPckZvdXJWYWx1ZXMoQ1NTUHJpbWl0aXZlVmFsdWUqKiB2YWx1ZXMsIFJl
ZlB0cjxDU1MKICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGN1cnJlbnRWYWx1ZSA9IHZhbHVl
c1tpXTsKICAgICAgICAgaWYgKCFjdXJyZW50VmFsdWUtPmlzVmFsdWVJRCgpKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBDU1NWYWx1ZUlEIGlkID0gY3VycmVudFZhbHVlLT5n
ZXRWYWx1ZUlEKCk7CisgICAgICAgIENTU1ZhbHVlSUQgaWQgPSBjdXJyZW50VmFsdWUtPnZhbHVl
SUQoKTsKIAogICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVDZW50ZXIpIHsKICAgICAgICAgICAg
IGlmIChjZW50ZXIpCkBAIC04ODksMTAgKzg4OSwxMCBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVl
PiBjb25zdW1lUmFkaWFsR3JhZGllbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgQ1NTUGFy
cwogICAgIGlmIChzaXplS2V5d29yZCAmJiBob3Jpem9udGFsU2l6ZSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgLy8gQ2lyY2xlcyBtdXN0IGhhdmUgMCBvciAxIGxlbmd0aHMuCi0gICAg
aWYgKHNoYXBlICYmIHNoYXBlLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVDaXJjbGUgJiYgdmVy
dGljYWxTaXplKQorICAgIGlmIChzaGFwZSAmJiBzaGFwZS0+dmFsdWVJRCgpID09IENTU1ZhbHVl
Q2lyY2xlICYmIHZlcnRpY2FsU2l6ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgLy8g
RWxsaXBzZXMgbXVzdCBoYXZlIDAgb3IgMiBsZW5ndGgvcGVyY2VudGFnZXMuCi0gICAgaWYgKHNo
YXBlICYmIHNoYXBlLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVFbGxpcHNlICYmIGhvcml6b250
YWxTaXplICYmICF2ZXJ0aWNhbFNpemUpCisgICAgaWYgKHNoYXBlICYmIHNoYXBlLT52YWx1ZUlE
KCkgPT0gQ1NTVmFsdWVFbGxpcHNlICYmIGhvcml6b250YWxTaXplICYmICF2ZXJ0aWNhbFNpemUp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIC8vIElmIHRoZXJlJ3Mgb25seSBvbmUgc2l6
ZSwgaXQgbXVzdCBiZSBhIGxlbmd0aC4KICAgICBpZiAoIXZlcnRpY2FsU2l6ZSAmJiBob3Jpem9u
dGFsU2l6ZSAmJiBob3Jpem9udGFsU2l6ZS0+aXNQZXJjZW50YWdlKCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNw
cAppbmRleCA4ZGNjOTc1NDg2YWVhYTAzNWYzY2VjODZlOGQxNDE2YWJkMzBjMjFmLi45NDBlN2Zk
NDY3OWM1MTA1NWNmM2E2NWE3ZjU4MGUxMzJlYzRmYmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vUmFuZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKQEAg
LTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJDb21tZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRG
cmFnbWVudC5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5o
IgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAi
SFRNTEJvZHlFbGVtZW50LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0
b3JRdWVyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5jcHAKaW5kZXgg
ZDI1MTdiYTk5YmI2M2I2NzQ1MmFhMmMxZDdkYzU2NzRhNmM1N2UxMy4uNTU3ZGJlNTk2NmY5MGJj
OGNkMjNlY2I3NDk1YzE2ZmU3NzA2N2Y5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L1NlbGVjdG9yUXVlcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5
LmNwcApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCiAjaW5jbHVk
ZSAiRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUu
aCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJTZWxlY3RvckNoZWNrZXIuaCIK
ICNpbmNsdWRlICJTdGF0aWNOb2RlTGlzdC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Fw
cGx5U3R5bGVDb21tYW5kLmNwcAppbmRleCA3MDIxYTAxZTUxODliZTcxODUzZTI1MmIwYzk0NTNj
ZmM4YzQ5ZDU1Li4yNjZjZjY5NzNhMzAzZmQxYWVkY2FlMDRkMmIyODI4MTQzNTI2MDNhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcApAQCAtNTksNyAr
NTksNyBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBzdGF0aWMgaW50IHRvSWRlbnRp
ZmllcihQYXNzUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSkKIHsKLSAgICByZXR1cm4gKHZhbHVlICYm
IHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpID8gc3RhdGljX3BvaW50ZXJfY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZT4odmFsdWUpLT5nZXRWYWx1ZUlEKCkgOiAwOworICAgIHJldHVybiAodmFsdWUg
JiYgdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgPyBzdGF0aWNfcG9pbnRlcl9jYXN0PENTU1By
aW1pdGl2ZVZhbHVlPih2YWx1ZSktPnZhbHVlSUQoKSA6IDA7CiB9CiAKIHN0YXRpYyBTdHJpbmcm
IHN0eWxlU3BhbkNsYXNzU3RyaW5nKCkKQEAgLTE1MTMsOCArMTUxMyw4IEBAIGZsb2F0IEFwcGx5
U3R5bGVDb21tYW5kOjpjb21wdXRlZEZvbnRTaXplKE5vZGUqIG5vZGUpCiAgICAgaWYgKCFub2Rl
KQogICAgICAgICByZXR1cm4gMDsKIAotICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWUgPSBDb21w
dXRlZFN0eWxlRXh0cmFjdG9yKG5vZGUpLnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlGb250U2l6
ZSk7Ci0gICAgcmV0dXJuIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUpLmdldEZs
b2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7CisgICAgYXV0byB2YWx1ZSA9IENv
bXB1dGVkU3R5bGVFeHRyYWN0b3Iobm9kZSkucHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUZvbnRT
aXplKTsKKyAgICByZXR1cm4gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YWx1ZSkuZmxv
YXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKIH0KIAogdm9pZCBBcHBseVN0eWxl
Q29tbWFuZDo6am9pbkNoaWxkVGV4dE5vZGVzKE5vZGUqIG5vZGUsIGNvbnN0IFBvc2l0aW9uJiBz
dGFydCwgY29uc3QgUG9zaXRpb24mIGVuZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdGluZ1N0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0
eWxlLmNwcAppbmRleCA3ZWFhYmIzZDk1MzNmYWRjMTlmOTYwZjA1OWUzYjU1YmVlMDM1Njk0Li40
YzdhOTA0NDZmYWM0Y2Q0ZmFkYjM2MDc3NmUzYjU3MzNkYjIxODQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCkBAIC0xNDQsMTMgKzE0NCwxMiBAQCBpbnQgaWRlbnRp
ZmllckZvclN0eWxlUHJvcGVydHkoVCYgc3R5bGUsIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkK
ICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlID0gZXh0cmFjdFByb3BlcnR5VmFsdWUoc3R5bGUs
IHByb3BlcnR5SUQpOwogICAgIGlmICghaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlLmdldCgp
KSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlPigqdmFsdWUpLmdldFZhbHVlSUQoKTsKKyAgICByZXR1cm4gZG93bmNhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWU+KCp2YWx1ZSkudmFsdWVJRCgpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBQ
YXNzUmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IGdldFByb3BlcnRpZXNOb3RJbihTdHls
ZVByb3BlcnRpZXMmIHN0eWxlV2l0aFJlZHVuZGFudFByb3BlcnRpZXMsIFQmIGJhc2VTdHlsZSk7
CiBlbnVtIExlZ2FjeUZvbnRTaXplTW9kZSB7IEFsd2F5c1VzZUxlZ2FjeUZvbnRTaXplLCBVc2VM
ZWdhY3lGb250U2l6ZU9ubHlJZlBpeGVsVmFsdWVzTWF0Y2ggfTsKIHN0YXRpYyBpbnQgbGVnYWN5
Rm9udFNpemVGcm9tQ1NTVmFsdWUoRG9jdW1lbnQqLCBDU1NQcmltaXRpdmVWYWx1ZSosIGJvb2wg
c2hvdWxkVXNlRml4ZWRGb250RGVmYXVsdFNpemUsIExlZ2FjeUZvbnRTaXplTW9kZSk7Ci1zdGF0
aWMgYm9vbCBpc1RyYW5zcGFyZW50Q29sb3JWYWx1ZShDU1NWYWx1ZSopOwogc3RhdGljIGJvb2wg
aGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kQ29sb3IoU3R5bGVQcm9wZXJ0aWVzKik7CiBzdGF0aWMg
UmVmUHRyPENTU1ZhbHVlPiBiYWNrZ3JvdW5kQ29sb3JJbkVmZmVjdChOb2RlKik7CiAKQEAgLTE5
Niw3ICsxOTUsNyBAQCBIVE1MRWxlbWVudEVxdWl2YWxlbnQ6OkhUTUxFbGVtZW50RXF1aXZhbGVu
dChDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZUlEIHByaW1pdAogYm9vbCBIVE1MRWxlbWVudEVx
dWl2YWxlbnQ6OnZhbHVlSXNQcmVzZW50SW5TdHlsZShFbGVtZW50JiBlbGVtZW50LCBjb25zdCBF
ZGl0aW5nU3R5bGUmIHN0eWxlKSBjb25zdAogewogICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWUg
PSBzdHlsZS5tX211dGFibGVTdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShtX3Byb3BlcnR5SUQp
OwotICAgIHJldHVybiBtYXRjaGVzKGVsZW1lbnQpICYmIGlzPENTU1ByaW1pdGl2ZVZhbHVlPih2
YWx1ZS5nZXQoKSkgJiYgZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YWx1ZSkuZ2V0VmFs
dWVJRCgpID09IG1fcHJpbWl0aXZlVmFsdWUtPmdldFZhbHVlSUQoKTsKKyAgICByZXR1cm4gbWF0
Y2hlcyhlbGVtZW50KSAmJiBpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUuZ2V0KCkpICYmIGRv
d25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUpLnZhbHVlSUQoKSA9PSBtX3ByaW1pdGl2
ZVZhbHVlLT52YWx1ZUlEKCk7CiB9CiAKIHZvaWQgSFRNTEVsZW1lbnRFcXVpdmFsZW50OjphZGRU
b1N0eWxlKEVsZW1lbnQqLCBFZGl0aW5nU3R5bGUqIHN0eWxlKSBjb25zdApAQCAtNTEyLDcgKzUx
MSw3IEBAIHZvaWQgRWRpdGluZ1N0eWxlOjpleHRyYWN0Rm9udFNpemVEZWx0YSgpCiAgICAgaWYg
KCFwcmltaXRpdmVWYWx1ZS5pc1B4KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZm9udFNp
emVEZWx0YSA9IHByaW1pdGl2ZVZhbHVlLmdldEZsb2F0VmFsdWUoKTsKKyAgICBtX2ZvbnRTaXpl
RGVsdGEgPSBwcmltaXRpdmVWYWx1ZS5mbG9hdFZhbHVlKCk7CiAgICAgbV9tdXRhYmxlU3R5bGUt
PnJlbW92ZVByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0Rm9udFNpemVEZWx0YSk7CiB9CiAKQEAg
LTU1MywxMyArNTUyLDEzIEBAIGJvb2wgRWRpdGluZ1N0eWxlOjp0ZXh0RGlyZWN0aW9uKFdyaXRp
bmdEaXJlY3Rpb24mIHdyaXRpbmdEaXJlY3Rpb24pIGNvbnN0CiAgICAgaWYgKCFpczxDU1NQcmlt
aXRpdmVWYWx1ZT4odW5pY29kZUJpZGkuZ2V0KCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBDU1NWYWx1ZUlEIHVuaWNvZGVCaWRpVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZT4oKnVuaWNvZGVCaWRpKS5nZXRWYWx1ZUlEKCk7CisgICAgQ1NTVmFsdWVJRCB1bmljb2Rl
QmlkaVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp1bmljb2RlQmlkaSkudmFs
dWVJRCgpOwogICAgIGlmICh1bmljb2RlQmlkaVZhbHVlID09IENTU1ZhbHVlRW1iZWQpIHsKICAg
ICAgICAgUmVmUHRyPENTU1ZhbHVlPiBkaXJlY3Rpb24gPSBtX211dGFibGVTdHlsZS0+Z2V0UHJv
cGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eURpcmVjdGlvbik7CiAgICAgICAgIGlmICghaXM8Q1NT
UHJpbWl0aXZlVmFsdWU+KGRpcmVjdGlvbi5nZXQoKSkpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICAgICAgd3JpdGluZ0RpcmVjdGlvbiA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlPigqZGlyZWN0aW9uKS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVMdHIgPyBMZWZ0VG9SaWdo
dFdyaXRpbmdEaXJlY3Rpb24gOiBSaWdodFRvTGVmdFdyaXRpbmdEaXJlY3Rpb247CisgICAgICAg
IHdyaXRpbmdEaXJlY3Rpb24gPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKmRpcmVjdGlv
bikudmFsdWVJRCgpID09IENTU1ZhbHVlTHRyID8gTGVmdFRvUmlnaHRXcml0aW5nRGlyZWN0aW9u
IDogUmlnaHRUb0xlZnRXcml0aW5nRGlyZWN0aW9uOwogCiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KQEAgLTEwOTgsOSArMTA5Nyw5IEBAIHZvaWQgRWRpdGluZ1N0eWxlOjpwcmVwYXJlVG9B
cHBseUF0KGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbiwgU2hvdWxkUHJlc2VydmVXcml0CiAgICAg
ICAgIG1fbXV0YWJsZVN0eWxlLT5yZW1vdmVQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRD
b2xvcik7CiAKICAgICBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHVuaWNvZGVCaWRpLmdldCgp
KSkgewotICAgICAgICBtX211dGFibGVTdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlVbmlj
b2RlQmlkaSwgc3RhdGljX2Nhc3Q8Q1NTVmFsdWVJRD4oZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWU+KCp1bmljb2RlQmlkaSkuZ2V0VmFsdWVJRCgpKSk7CisgICAgICAgIG1fbXV0YWJsZVN0eWxl
LT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVVuaWNvZGVCaWRpLCBzdGF0aWNfY2FzdDxDU1NWYWx1
ZUlEPihkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnVuaWNvZGVCaWRpKS52YWx1ZUlEKCkp
KTsKICAgICAgICAgaWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPihkaXJlY3Rpb24uZ2V0KCkpKQot
ICAgICAgICAgICAgbV9tdXRhYmxlU3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5RGlyZWN0
aW9uLCBzdGF0aWNfY2FzdDxDU1NWYWx1ZUlEPihkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4o
KmRpcmVjdGlvbikuZ2V0VmFsdWVJRCgpKSk7CisgICAgICAgICAgICBtX211dGFibGVTdHlsZS0+
c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlEaXJlY3Rpb24sIHN0YXRpY19jYXN0PENTU1ZhbHVlSUQ+
KGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqZGlyZWN0aW9uKS52YWx1ZUlEKCkpKTsKICAg
ICB9CiB9CiAKQEAgLTE0ODMsNyArMTQ4Miw3IEBAIFdyaXRpbmdEaXJlY3Rpb24gRWRpdGluZ1N0
eWxlOjp0ZXh0RGlyZWN0aW9uRm9yU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mCiAg
ICAgICAgICAgICBpZiAoIWlzPENTU1ByaW1pdGl2ZVZhbHVlPih1bmljb2RlQmlkaS5nZXQoKSkp
CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIENTU1ZhbHVlSUQgdW5p
Y29kZUJpZGlWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdW5pY29kZUJpZGkp
LmdldFZhbHVlSUQoKTsKKyAgICAgICAgICAgIENTU1ZhbHVlSUQgdW5pY29kZUJpZGlWYWx1ZSA9
IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdW5pY29kZUJpZGkpLnZhbHVlSUQoKTsKICAg
ICAgICAgICAgIGlmICh1bmljb2RlQmlkaVZhbHVlID09IENTU1ZhbHVlRW1iZWQgfHwgdW5pY29k
ZUJpZGlWYWx1ZSA9PSBDU1NWYWx1ZUJpZGlPdmVycmlkZSkKICAgICAgICAgICAgICAgICByZXR1
cm4gTmF0dXJhbFdyaXRpbmdEaXJlY3Rpb247CiAgICAgICAgIH0KQEAgLTE1MTIsNyArMTUxMSw3
IEBAIFdyaXRpbmdEaXJlY3Rpb24gRWRpdGluZ1N0eWxlOjp0ZXh0RGlyZWN0aW9uRm9yU2VsZWN0
aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mCiAgICAgICAgIGlmICghaXM8Q1NTUHJpbWl0aXZl
VmFsdWU+KHVuaWNvZGVCaWRpLmdldCgpKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAg
ICAgIENTU1ZhbHVlSUQgdW5pY29kZUJpZGlWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlPigqdW5pY29kZUJpZGkpLmdldFZhbHVlSUQoKTsKKyAgICAgICAgQ1NTVmFsdWVJRCB1bmlj
b2RlQmlkaVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp1bmljb2RlQmlkaSku
dmFsdWVJRCgpOwogICAgICAgICBpZiAodW5pY29kZUJpZGlWYWx1ZSA9PSBDU1NWYWx1ZU5vcm1h
bCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCkBAIC0xNTI0LDcgKzE1MjMsNyBAQCBXcml0aW5n
RGlyZWN0aW9uIEVkaXRpbmdTdHlsZTo6dGV4dERpcmVjdGlvbkZvclNlbGVjdGlvbihjb25zdCBW
aXNpYmxlU2VsZWN0aW9uJgogICAgICAgICBpZiAoIWlzPENTU1ByaW1pdGl2ZVZhbHVlPihkaXJl
Y3Rpb24uZ2V0KCkpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgQ1NTVmFsdWVJ
RCBkaXJlY3Rpb25WYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqZGlyZWN0aW9u
KS5nZXRWYWx1ZUlEKCk7CisgICAgICAgIENTU1ZhbHVlSUQgZGlyZWN0aW9uVmFsdWUgPSBkb3du
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKmRpcmVjdGlvbikudmFsdWVJRCgpOwogICAgICAgICBp
ZiAoZGlyZWN0aW9uVmFsdWUgIT0gQ1NTVmFsdWVMdHIgJiYgZGlyZWN0aW9uVmFsdWUgIT0gQ1NT
VmFsdWVSdGwpCiAgICAgICAgICAgICBjb250aW51ZTsKIApAQCAtMTc0MSw3ICsxNzQwLDcgQEAg
c3RhdGljIGJvb2wgZm9udFdlaWdodElzQm9sZChDU1NWYWx1ZSYgZm9udFdlaWdodCkKIAogICAg
IC8vIEJlY2F1c2UgYiB0YWcgY2FuIG9ubHkgYm9sZCB0ZXh0LCB0aGVyZSBhcmUgb25seSB0d28g
c3RhdGVzIGluIHBsYWluIGh0bWw6IGJvbGQgYW5kIG5vdCBib2xkLgogICAgIC8vIENvbGxhcHNl
IGFsbCBvdGhlciB2YWx1ZXMgdG8gZWl0aGVyIG9uZSBvZiB0aGVzZSB0d28gc3RhdGVzIGZvciBl
ZGl0aW5nIHB1cnBvc2VzLgotICAgIHN3aXRjaCAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+
KGZvbnRXZWlnaHQpLmdldFZhbHVlSUQoKSkgeworICAgIHN3aXRjaCAoZG93bmNhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWU+KGZvbnRXZWlnaHQpLnZhbHVlSUQoKSkgewogICAgICAgICBjYXNlIENTU1Zh
bHVlMTAwOgogICAgICAgICBjYXNlIENTU1ZhbHVlMjAwOgogICAgICAgICBjYXNlIENTU1ZhbHVl
MzAwOgpAQCAtMTgxNCw3ICsxODEzLDcgQEAgaW50IGxlZ2FjeUZvbnRTaXplRnJvbUNTU1ZhbHVl
KERvY3VtZW50KiBkb2N1bWVudCwgQ1NTUHJpbWl0aXZlVmFsdWUqIHZhbHVlLCBib28KICAgICBB
U1NFUlQoZG9jdW1lbnQpOyAvLyBGSVhNRTogVGhpcyBtZXRob2Qgc2hvdWxkIHRha2UgYSBEb2N1
bWVudCYKIAogICAgIGlmIChpc0NTU1ZhbHVlTGVuZ3RoKHZhbHVlKSkgewotICAgICAgICBpbnQg
cGl4ZWxGb250U2l6ZSA9IHZhbHVlLT5nZXRJbnRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X1BYKTsKKyAgICAgICAgaW50IHBpeGVsRm9udFNpemUgPSB2YWx1ZS0+aW50VmFsdWUoQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19QWCk7CiAgICAgICAgIGludCBsZWdhY3lGb250U2l6ZSA9IFN0eWxl
OjpsZWdhY3lGb250U2l6ZUZvclBpeGVsU2l6ZShwaXhlbEZvbnRTaXplLCBzaG91bGRVc2VGaXhl
ZEZvbnREZWZhdWx0U2l6ZSwgKmRvY3VtZW50KTsKICAgICAgICAgLy8gVXNlIGxlZ2FjeSBmb250
IHNpemUgb25seSBpZiBwaXhlbCB2YWx1ZSBtYXRjaGVzIGV4YWN0bHkgdG8gdGhhdCBvZiBsZWdh
Y3kgZm9udCBzaXplLgogICAgICAgICBpbnQgY3NzUHJpbWl0aXZlRXF1aXZhbGVudCA9IGxlZ2Fj
eUZvbnRTaXplIC0gMSArIENTU1ZhbHVlWFNtYWxsOwpAQCAtMTgyNCwzNCArMTgyMywzMyBAQCBp
bnQgbGVnYWN5Rm9udFNpemVGcm9tQ1NTVmFsdWUoRG9jdW1lbnQqIGRvY3VtZW50LCBDU1NQcmlt
aXRpdmVWYWx1ZSogdmFsdWUsIGJvbwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBp
ZiAoQ1NTVmFsdWVYU21hbGwgPD0gdmFsdWUtPmdldFZhbHVlSUQoKSAmJiB2YWx1ZS0+Z2V0VmFs
dWVJRCgpIDw9IENTU1ZhbHVlV2Via2l0WHh4TGFyZ2UpCi0gICAgICAgIHJldHVybiB2YWx1ZS0+
Z2V0VmFsdWVJRCgpIC0gQ1NTVmFsdWVYU21hbGwgKyAxOworICAgIGlmIChDU1NWYWx1ZVhTbWFs
bCA8PSB2YWx1ZS0+dmFsdWVJRCgpICYmIHZhbHVlLT52YWx1ZUlEKCkgPD0gQ1NTVmFsdWVXZWJr
aXRYeHhMYXJnZSkKKyAgICAgICAgcmV0dXJuIHZhbHVlLT52YWx1ZUlEKCkgLSBDU1NWYWx1ZVhT
bWFsbCArIDE7CiAKICAgICByZXR1cm4gMDsKIH0KIAotYm9vbCBpc1RyYW5zcGFyZW50Q29sb3JW
YWx1ZShDU1NWYWx1ZSogY3NzVmFsdWUpCitzdGF0aWMgYm9vbCBpc1RyYW5zcGFyZW50Q29sb3JW
YWx1ZShDU1NWYWx1ZSogdmFsdWUpCiB7Ci0gICAgaWYgKCFjc3NWYWx1ZSkKKyAgICBpZiAoIXZh
bHVlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoIWlzPENTU1ByaW1pdGl2ZVZhbHVl
PigqY3NzVmFsdWUpKQorICAgIGlmICghaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YWx1ZSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBDU1NQcmltaXRpdmVWYWx1ZSYgdmFsdWUgPSBkb3du
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKmNzc1ZhbHVlKTsKLSAgICBpZiAodmFsdWUuaXNSR0JD
b2xvcigpKQotICAgICAgICByZXR1cm4gdmFsdWUuY29sb3IoKS5hbHBoYSgpID09IDA7Ci0gICAg
cmV0dXJuIHZhbHVlLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZVRyYW5zcGFyZW50OworICAgIGF1
dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YWx1ZSk7
CisgICAgaWYgKHByaW1pdGl2ZVZhbHVlLmlzUkdCQ29sb3IoKSkKKyAgICAgICAgcmV0dXJuICFw
cmltaXRpdmVWYWx1ZS5jb2xvcigpLmFscGhhKCk7CisgICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVl
LnZhbHVlSUQoKSA9PSBDU1NWYWx1ZVRyYW5zcGFyZW50OwogfQogCiBib29sIGhhc1RyYW5zcGFy
ZW50QmFja2dyb3VuZENvbG9yKFN0eWxlUHJvcGVydGllcyogc3R5bGUpCiB7Ci0gICAgUmVmUHRy
PENTU1ZhbHVlPiBjc3NWYWx1ZSA9IHN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3Bl
cnR5QmFja2dyb3VuZENvbG9yKTsKLSAgICByZXR1cm4gaXNUcmFuc3BhcmVudENvbG9yVmFsdWUo
Y3NzVmFsdWUuZ2V0KCkpOworICAgIHJldHVybiBpc1RyYW5zcGFyZW50Q29sb3JWYWx1ZShzdHls
ZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcikuZ2V0KCkp
OwogfQogCiBSZWZQdHI8Q1NTVmFsdWU+IGJhY2tncm91bmRDb2xvckluRWZmZWN0KE5vZGUqIG5v
ZGUpCiB7CiAgICAgZm9yIChOb2RlKiBhbmNlc3RvciA9IG5vZGU7IGFuY2VzdG9yOyBhbmNlc3Rv
ciA9IGFuY2VzdG9yLT5wYXJlbnROb2RlKCkpIHsKLSAgICAgICAgaWYgKFJlZlB0cjxDU1NWYWx1
ZT4gdmFsdWUgPSBDb21wdXRlZFN0eWxlRXh0cmFjdG9yKGFuY2VzdG9yKS5wcm9wZXJ0eVZhbHVl
KENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKSkgeworICAgICAgICBpZiAoYXV0byB2YWx1ZSA9
IENvbXB1dGVkU3R5bGVFeHRyYWN0b3IoYW5jZXN0b3IpLnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kQ29sb3IpKSB7CiAgICAgICAgICAgICBpZiAoIWlzVHJhbnNwYXJlbnRDb2xv
clZhbHVlKHZhbHVlLmdldCgpKSkKICAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCA0ODkzN2UwYWJkZWNhMGZkZTMy
OTU5MWNkOTc1OGM4ZjgxZjA2MjJkLi4wZWZiNDM0N2I5ZWM5NzViMzZmNTBkYzc5NzcyNThmMzcz
MmQ0NGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0zMjA2LDkgKzMyMDYsOSBA
QCB2b2lkIEVkaXRvcjo6YXBwbHlFZGl0aW5nU3R5bGVUb0VsZW1lbnQoRWxlbWVudCogZWxlbWVu
dCkgY29uc3QKIAogICAgIC8vIE11dGF0ZSB1c2luZyB0aGUgQ1NTT00gd3JhcHBlciBzbyB3ZSBn
ZXQgdGhlIHNhbWUgZXZlbnQgYmVoYXZpb3IgYXMgYSBzY3JpcHQuCiAgICAgQ1NTU3R5bGVEZWNs
YXJhdGlvbiogc3R5bGUgPSBkb3duY2FzdDxTdHlsZWRFbGVtZW50PigqZWxlbWVudCkuY3Nzb21T
dHlsZSgpOwotICAgIHN0eWxlLT5zZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5V29yZFdy
YXAsICJicmVhay13b3JkIiwgZmFsc2UsIElHTk9SRV9FWENFUFRJT04pOwotICAgIHN0eWxlLT5z
ZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TmJzcE1vZGUsICJzcGFjZSIsIGZh
bHNlLCBJR05PUkVfRVhDRVBUSU9OKTsKLSAgICBzdHlsZS0+c2V0UHJvcGVydHlJbnRlcm5hbChD
U1NQcm9wZXJ0eVdlYmtpdExpbmVCcmVhaywgImFmdGVyLXdoaXRlLXNwYWNlIiwgZmFsc2UsIElH
Tk9SRV9FWENFUFRJT04pOworICAgIHN0eWxlLT5zZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3Bl
cnR5V29yZFdyYXAsICJicmVhay13b3JkIiwgZmFsc2UpOworICAgIHN0eWxlLT5zZXRQcm9wZXJ0
eUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TmJzcE1vZGUsICJzcGFjZSIsIGZhbHNlKTsKKyAg
ICBzdHlsZS0+c2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdExpbmVCcmVhaywg
ImFmdGVyLXdoaXRlLXNwYWNlIiwgZmFsc2UpOwogfQogCiBib29sIEVkaXRvcjo6ZmluZFN0cmlu
Zyhjb25zdCBTdHJpbmcmIHRhcmdldCwgRmluZE9wdGlvbnMgb3B0aW9ucykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlQ1NTUHJvcGVydHlDb21tYW5kLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlQ1NTUHJvcGVydHlDb21tYW5kLmNwcAppbmRleCBh
NTRlMmFmN2U3NmY0NDUyOGFlY2ExNmZmMzE0N2I5N2VhY2ZiOWMxLi4zNzcwNTY1YjlkOGQ0ZTRk
Mzk3M2UxNTM0N2VmMjg1ZDMwY2U0ZmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1JlbW92ZUNTU1Byb3BlcnR5Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9SZW1vdmVDU1NQcm9wZXJ0eUNvbW1hbmQuY3BwCkBAIC0yNyw3ICsyNyw2IEBACiAjaW5j
bHVkZSAiUmVtb3ZlQ1NTUHJvcGVydHlDb21tYW5kLmgiCiAKICNpbmNsdWRlICJDU1NTdHlsZURl
Y2xhcmF0aW9uLmgiCi0jaW5jbHVkZSAiRXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyLmgiCiAjaW5j
bHVkZSAiU3R5bGVQcm9wZXJ0aWVzLmgiCiAjaW5jbHVkZSAiU3R5bGVkRWxlbWVudC5oIgogI2lu
Y2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CkBAIC01NSwxMiArNTQsMTIgQEAgdm9pZCBSZW1vdmVD
U1NQcm9wZXJ0eUNvbW1hbmQ6OmRvQXBwbHkoKQogCiAgICAgLy8gTXV0YXRlIHVzaW5nIHRoZSBD
U1NPTSB3cmFwcGVyIHNvIHdlIGdldCB0aGUgc2FtZSBldmVudCBiZWhhdmlvciBhcyBhIHNjcmlw
dC4KICAgICAvLyBTZXR0aW5nIHRvIG51bGwgc3RyaW5nIHJlbW92ZXMgdGhlIHByb3BlcnR5LiBX
ZSBkb24ndCBoYXZlIGludGVybmFsIHZlcnNpb24gb2YgcmVtb3ZlUHJvcGVydHkuCi0gICAgbV9l
bGVtZW50LT5jc3NvbVN0eWxlKCktPnNldFByb3BlcnR5SW50ZXJuYWwobV9wcm9wZXJ0eSwgU3Ry
aW5nKCksIGZhbHNlLCBJR05PUkVfRVhDRVBUSU9OKTsKKyAgICBtX2VsZW1lbnQtPmNzc29tU3R5
bGUoKS0+c2V0UHJvcGVydHlJbnRlcm5hbChtX3Byb3BlcnR5LCBTdHJpbmcoKSwgZmFsc2UpOwog
fQogCiB2b2lkIFJlbW92ZUNTU1Byb3BlcnR5Q29tbWFuZDo6ZG9VbmFwcGx5KCkKIHsKLSAgICBt
X2VsZW1lbnQtPmNzc29tU3R5bGUoKS0+c2V0UHJvcGVydHlJbnRlcm5hbChtX3Byb3BlcnR5LCBt
X29sZFZhbHVlLCBtX2ltcG9ydGFudCwgSUdOT1JFX0VYQ0VQVElPTik7CisgICAgbV9lbGVtZW50
LT5jc3NvbVN0eWxlKCktPnNldFByb3BlcnR5SW50ZXJuYWwobV9wcm9wZXJ0eSwgbV9vbGRWYWx1
ZSwgbV9pbXBvcnRhbnQpOwogfQogCiAjaWZuZGVmIE5ERUJVRwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAppbmRleCBhMjc2NjRmY2Iz
ZDNkMTdlYTkyZmU3OTRlMjg2Y2E2YTkwNjBkNTJhLi5jZDZmNzMzOGFkZjY1MjVhYTFkYTMzZTY4
ZGQ2YzI4OGRmYjk3YTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxh
Y2VTZWxlY3Rpb25Db21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxh
Y2VTZWxlY3Rpb25Db21tYW5kLmNwcApAQCAtNTYyLDkgKzU2Miw5IEBAIHZvaWQgUmVwbGFjZVNl
bGVjdGlvbkNvbW1hbmQ6OnJlbW92ZVJlZHVuZGFudFN0eWxlc0FuZEtlZXBTdHlsZVNwYW5Jbmxp
bmUoSW5zZXJ0CiAKICAgICAgICAgICAgIC8vIE11dGF0ZSB1c2luZyB0aGUgQ1NTT00gd3JhcHBl
ciBzbyB3ZSBnZXQgdGhlIHNhbWUgZXZlbnQgYmVoYXZpb3IgYXMgYSBzY3JpcHQuCiAgICAgICAg
ICAgICBpZiAoaXNCbG9jayhlbGVtZW50KSkKLSAgICAgICAgICAgICAgICBlbGVtZW50LT5jc3Nv
bVN0eWxlKCktPnNldFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlEaXNwbGF5LCAiaW5saW5l
IiwgZmFsc2UsIElHTk9SRV9FWENFUFRJT04pOworICAgICAgICAgICAgICAgIGVsZW1lbnQtPmNz
c29tU3R5bGUoKS0+c2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eURpc3BsYXksICJpbmxp
bmUiLCBmYWxzZSk7CiAgICAgICAgICAgICBpZiAoZWxlbWVudC0+cmVuZGVyZXIoKSAmJiBlbGVt
ZW50LT5yZW5kZXJlcigpLT5zdHlsZSgpLmlzRmxvYXRpbmcoKSkKLSAgICAgICAgICAgICAgICBl
bGVtZW50LT5jc3NvbVN0eWxlKCktPnNldFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlGbG9h
dCwgIm5vbmUiLCBmYWxzZSwgSUdOT1JFX0VYQ0VQVElPTik7CisgICAgICAgICAgICAgICAgZWxl
bWVudC0+Y3Nzb21TdHlsZSgpLT5zZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5RmxvYXQs
ICJub25lIiwgZmFsc2UpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCmluZGV4IGU0MmZjZTZjMGIwNTYyYTA1OGM3
YWFmNmJjNWFiZjg2ZWFkYjg2MmQuLjk0ZmM3ZWQ5OTVjYzQwZDg2ZjRjMDI4MjMyZjQxMzQyMGJj
MDg4ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZl
cnRlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIu
bW0KQEAgLTc4NywyMiArNzg3LDIyIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBmbG9hdFZhbHVlRnJv
bVByaW1pdGl2ZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlJiBwcmltaXRpdmVWYWx1CiAgICAgLy8g
RklYTUU6IFVzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZVZhbHVlLgogICAgIHN3aXRjaCAo
cHJpbWl0aXZlVmFsdWUucHJpbWl0aXZlVHlwZSgpKSB7CiAgICAgY2FzZSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX1BYOgotICAgICAgICByZXN1bHQgPSBwcmltaXRpdmVWYWx1ZS5nZXRGbG9hdFZh
bHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOworICAgICAgICByZXN1bHQgPSBwcmltaXRp
dmVWYWx1ZS5mbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFQ6Ci0gICAgICAg
IHJlc3VsdCA9IDQgKiBwcmltaXRpdmVWYWx1ZS5nZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfUFQpIC8gMzsKKyAgICAgICAgcmVzdWx0ID0gNCAqIHByaW1pdGl2ZVZhbHVlLmZs
b2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QVCkgLyAzOwogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEM6Ci0gICAgICAgIHJlc3Vs
dCA9IDE2ICogcHJpbWl0aXZlVmFsdWUuZ2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX1BDKTsKKyAgICAgICAgcmVzdWx0ID0gMTYgKiBwcmltaXRpdmVWYWx1ZS5mbG9hdFZhbHVl
KENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEMpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBj
YXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfQ006Ci0gICAgICAgIHJlc3VsdCA9IDk2ICogcHJp
bWl0aXZlVmFsdWUuZ2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BDKSAvIDIu
NTQ7CisgICAgICAgIHJlc3VsdCA9IDk2ICogcHJpbWl0aXZlVmFsdWUuZmxvYXRWYWx1ZShDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX1BDKSAvIDIuNTQ7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19NTToKLSAgICAgICAgcmVzdWx0ID0gOTYgKiBw
cmltaXRpdmVWYWx1ZS5nZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEMpIC8g
MjUuNDsKKyAgICAgICAgcmVzdWx0ID0gOTYgKiBwcmltaXRpdmVWYWx1ZS5mbG9hdFZhbHVlKENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEMpIC8gMjUuNDsKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lOOgotICAgICAgICByZXN1bHQgPSA5NiAq
IHByaW1pdGl2ZVZhbHVlLmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JTik7
CisgICAgICAgIHJlc3VsdCA9IDk2ICogcHJpbWl0aXZlVmFsdWUuZmxvYXRWYWx1ZShDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX0lOKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgZGVmYXVsdDoK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9tYXJrdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCmluZGV4IGU0
Y2UxNTBhYTYwMDcwODY3NWNhYjc2ZDU2OTk5YTkwOWZlMGZjYTYuLjFlYjcyZmQyYjM4OWI4OTdl
ZDFkZDA4MDQ5YzZiOTcwY2EwNmNlNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvbWFya3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKQEAg
LTQ5OSw3ICs0OTksNyBAQCBzdGF0aWMgYm9vbCBwcm9wZXJ0eU1pc3NpbmdPckVxdWFsVG9Ob25l
KFN0eWxlUHJvcGVydGllcyogc3R5bGUsIENTU1Byb3BlcnR5SUQgcAogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICBpZiAoIWlzPENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFs
dWUpLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmU7CisgICAgcmV0dXJuIGRvd25jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmU7CiB9CiAK
IHN0YXRpYyBib29sIG5lZWRJbnRlcmNoYW5nZU5ld2xpbmVBZnRlcihjb25zdCBWaXNpYmxlUG9z
aXRpb24mIHYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
U3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVT
aGVldC5jcHAKaW5kZXggNWE0NGI4NGJiNzM0ZTYxMjI3NDU5OGFmNTlhZGU5NjQ0OGMyM2E3YS4u
ZDQzNjY1YzRjNjA2YTAwMDYyOGFlODAxZWZhNDJmMWE3ZGM5NzYwOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcApAQCAtNzA4LDkgKzcw
OCwxMSBAQCBDU1NTdHlsZVJ1bGUqIEluc3BlY3RvclN0eWxlU2hlZXQ6OmFkZFJ1bGUoY29uc3Qg
U3RyaW5nJiBzZWxlY3RvciwgRXhjZXB0aW9uQ29kZQogICAgIFN0cmluZ0J1aWxkZXIgc3R5bGVT
aGVldFRleHQ7CiAgICAgc3R5bGVTaGVldFRleHQuYXBwZW5kKHRleHQpOwogCi0gICAgbV9wYWdl
U3R5bGVTaGVldC0+YWRkUnVsZShzZWxlY3RvciwgZW1wdHlTdHJpbmcoKSwgTnVsbG9wdCwgZWMp
OwotICAgIGlmIChlYykKKyAgICBhdXRvIGFkZFJ1bGVSZXN1bHQgPSBtX3BhZ2VTdHlsZVNoZWV0
LT5hZGRSdWxlKHNlbGVjdG9yLCBlbXB0eVN0cmluZygpLCBOdWxsb3B0KTsKKyAgICBpZiAoYWRk
UnVsZVJlc3VsdC5oYXNFeGNlcHRpb24oKSkgeworICAgICAgICBlYyA9IGFkZFJ1bGVSZXN1bHQu
cmVsZWFzZUV4Y2VwdGlvbigpLmNvZGUoKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
fQogICAgIEFTU0VSVChtX3BhZ2VTdHlsZVNoZWV0LT5sZW5ndGgoKSk7CiAgICAgdW5zaWduZWQg
bGFzdFJ1bGVJbmRleCA9IG1fcGFnZVN0eWxlU2hlZXQtPmxlbmd0aCgpIC0gMTsKICAgICBDU1NS
dWxlKiBydWxlID0gbV9wYWdlU3R5bGVTaGVldC0+aXRlbShsYXN0UnVsZUluZGV4KTsKQEAgLTcy
MCw3ICs3MjIsNyBAQCBDU1NTdHlsZVJ1bGUqIEluc3BlY3RvclN0eWxlU2hlZXQ6OmFkZFJ1bGUo
Y29uc3QgU3RyaW5nJiBzZWxlY3RvciwgRXhjZXB0aW9uQ29kZQogICAgIGlmICghc3R5bGVSdWxl
KSB7CiAgICAgICAgIC8vIFdoYXQgd2UganVzdCBhZGRlZCBoYXMgdG8gYmUgYSBDU1NTdHlsZVJ1
bGUgLSB3ZSBjYW5ub3QgaGFuZGxlIG90aGVyIHR5cGVzIG9mIHJ1bGVzIHlldC4KICAgICAgICAg
Ly8gSWYgaXQgaXMgbm90IGEgc3R5bGUgcnVsZSwgcHJldGVuZCB3ZSBuZXZlciB0b3VjaGVkIHRo
ZSBzdHlsZXNoZWV0LgotICAgICAgICBtX3BhZ2VTdHlsZVNoZWV0LT5kZWxldGVSdWxlKGxhc3RS
dWxlSW5kZXgsIEFTU0VSVF9OT19FWENFUFRJT04pOworICAgICAgICBtX3BhZ2VTdHlsZVNoZWV0
LT5kZWxldGVSdWxlKGxhc3RSdWxlSW5kZXgpOwogICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KQEAgLTc1OSwxMSArNzYxLDEzIEBAIGJvb2wg
SW5zcGVjdG9yU3R5bGVTaGVldDo6ZGVsZXRlUnVsZShjb25zdCBJbnNwZWN0b3JDU1NJZCYgaWQs
IEV4Y2VwdGlvbkNvZGUmIGVjCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBz
dHlsZVNoZWV0LT5kZWxldGVSdWxlKGlkLm9yZGluYWwoKSwgZWMpOworICAgIGF1dG8gZGVsZXRl
UnVsZVJlc3VsdCA9IHN0eWxlU2hlZXQtPmRlbGV0ZVJ1bGUoaWQub3JkaW5hbCgpKTsKICAgICAv
LyB8cnVsZXwgTUFZIE5PVCBiZSBhZGRyZXNzZWQgYWZ0ZXIgdGhpcyBsaW5lIQogCi0gICAgaWYg
KGVjKQorICAgIGlmIChkZWxldGVSdWxlUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAg
IGVjID0gZGVsZXRlUnVsZVJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkuY29kZSgpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQogCiAgICAgU3RyaW5nIHNoZWV0VGV4dCA9IG1fcGFyc2Vk
U3R5bGVTaGVldC0+dGV4dCgpOwogICAgIHNoZWV0VGV4dC5yZW1vdmUoc291cmNlRGF0YS0+cnVs
ZUhlYWRlclJhbmdlLnN0YXJ0LCBzb3VyY2VEYXRhLT5ydWxlQm9keVJhbmdlLmVuZCAtIHNvdXJj
ZURhdGEtPnJ1bGVIZWFkZXJSYW5nZS5zdGFydCArIDEpOwpAQCAtMTE1MywxMSArMTE1NywxNCBA
QCBib29sIEluc3BlY3RvclN0eWxlU2hlZXQ6OnNldFN0eWxlVGV4dChDU1NTdHlsZURlY2xhcmF0
aW9uKiBzdHlsZSwgY29uc3QgU3RyaW5nJgogICAgIGlmIChpZC5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIHN0eWxlLT5zZXRDc3NUZXh0KHRleHQsIGVjKTsKLSAgICBp
ZiAoIWVjKQotICAgICAgICBtX3BhcnNlZFN0eWxlU2hlZXQtPnNldFRleHQocGF0Y2hlZFN0eWxl
U2hlZXRUZXh0KTsKKyAgICBhdXRvIHNldENzc1RleHRSZXN1bHQgPSBzdHlsZS0+c2V0Q3NzVGV4
dCh0ZXh0KTsKKyAgICBpZiAoc2V0Q3NzVGV4dFJlc3VsdC5oYXNFeGNlcHRpb24oKSkgeworICAg
ICAgICBlYyA9IHNldENzc1RleHRSZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpLmNvZGUoKTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KIAotICAgIHJldHVybiAhZWM7CisgICAgbV9wYXJz
ZWRTdHlsZVNoZWV0LT5zZXRUZXh0KHBhdGNoZWRTdHlsZVNoZWV0VGV4dCk7CisgICAgcmV0dXJu
IHRydWU7CiB9CiAKIGJvb2wgSW5zcGVjdG9yU3R5bGVTaGVldDo6c3R5bGVTaGVldFRleHRXaXRo
Q2hhbmdlZFN0eWxlKENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlLCBjb25zdCBTdHJpbmcmIG5l
d1N0eWxlVGV4dCwgU3RyaW5nKiByZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHTGVuZ3RoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGguY3BwCmluZGV4
IGI5OWI5NjZiNmY4OGNmNjAwNGY1OTE4OTg4YzIyODYyN2FjMmZlZGUuLjdiOWY0Yjk0N2M1MWQ3
YWY4YzVkMGM1NDI4ZTY3ZmMzYTgzNmM5NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdMZW5ndGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGguY3BwCkBA
IC0zMjcsNyArMzI3LDcgQEAgU1ZHTGVuZ3RoIFNWR0xlbmd0aDo6ZnJvbUNTU1ByaW1pdGl2ZVZh
bHVlKGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJiB2YWx1ZSkKIAogICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwogICAgIFNWR0xlbmd0aCBsZW5ndGg7Ci0gICAgbGVuZ3RoLm5ld1ZhbHVlU3BlY2lm
aWVkVW5pdHMoc3ZnVHlwZSwgdmFsdWUuZ2V0RmxvYXRWYWx1ZSgpLCBlYyk7CisgICAgbGVuZ3Ro
Lm5ld1ZhbHVlU3BlY2lmaWVkVW5pdHMoc3ZnVHlwZSwgdmFsdWUuZmxvYXRWYWx1ZSgpLCBlYyk7
CiAgICAgaWYgKGVjKSAgICAKICAgICAgICAgcmV0dXJuIFNWR0xlbmd0aCgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9ET00vRE9NQ1NTTWVkaWFSdWxlLm1tIGIvU291cmNlL1dl
YktpdC9tYWMvRE9NL0RPTUNTU01lZGlhUnVsZS5tbQppbmRleCBiMzhkM2FjMTkyOGE1NzE4OGQ0
OThlODdmYWJhOGM1OTkzNmMzZjJiLi45MDU5NmE1YWVjYzM2NzhhNjFiYmYyZTM0ZTc4NTlmZjVk
N2RjMjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9ET00vRE9NQ1NTTWVkaWFSdWxl
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9ET01DU1NNZWRpYVJ1bGUubW0KQEAgLTU4
LDE4ICs1OCwxMyBAQCAtIChET01DU1NSdWxlTGlzdCAqKWNzc1J1bGVzCiAtICh1bnNpZ25lZClp
bnNlcnRSdWxlOihOU1N0cmluZyAqKXJ1bGUgaW5kZXg6KHVuc2lnbmVkKWluZGV4CiB7CiAgICAg
V2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OkV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwotICAgIHVuc2lnbmVkIHJlc3VsdCA9IElNUEwtPmluc2VydFJ1bGUo
cnVsZSwgaW5kZXgsIGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgcmV0dXJuIHJhaXNlT25ET01FcnJvcihJTVBMLT5pbnNlcnRSdWxlKHJ1bGUs
IGluZGV4KSk7CiB9CiAKIC0gKHZvaWQpZGVsZXRlUnVsZToodW5zaWduZWQpaW5kZXgKIHsKICAg
ICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6RXhj
ZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgSU1QTC0+ZGVsZXRlUnVsZShpbmRleCwgZWMpOwotICAg
IHJhaXNlT25ET01FcnJvcihlYyk7CisgICAgcmV0dXJuIHJhaXNlT25ET01FcnJvcihJTVBMLT5k
ZWxldGVSdWxlKGluZGV4KSk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL0RPTS9ET01DU1NQcmltaXRpdmVWYWx1ZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9E
T01DU1NQcmltaXRpdmVWYWx1ZS5tbQppbmRleCA2YjNjN2ViYmM3ZTVmNDRkYjhiYTM4MmRkM2Y2
MjAxNzNjM2FjYjA0Li4yMjkwZmJkZjgzZTNiYmIzMjI0NWJkNTdjNWEzYmFkZmJhMGU2ZGQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9ET00vRE9NQ1NTUHJpbWl0aXZlVmFsdWUubW0K
KysrIGIvU291cmNlL1dlYktpdC9tYWMvRE9NL0RPTUNTU1ByaW1pdGl2ZVZhbHVlLm1tCkBAIC01
NCw2MiArNTQsNDMgQEAgLSAodW5zaWduZWQgc2hvcnQpcHJpbWl0aXZlVHlwZQogLSAodm9pZClz
ZXRGbG9hdFZhbHVlOih1bnNpZ25lZCBzaG9ydCl1bml0VHlwZSBmbG9hdFZhbHVlOihmbG9hdClm
bG9hdFZhbHVlCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwot
ICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIElNUEwtPnNldEZsb2F0VmFs
dWUodW5pdFR5cGUsIGZsb2F0VmFsdWUsIGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwor
ICAgIHJhaXNlT25ET01FcnJvcihJTVBMLT5zZXRGbG9hdFZhbHVlKHVuaXRUeXBlLCBmbG9hdFZh
bHVlKSk7CiB9CiAKIC0gKGZsb2F0KWdldEZsb2F0VmFsdWU6KHVuc2lnbmVkIHNob3J0KXVuaXRU
eXBlCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdl
YkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGZsb2F0IHJlc3VsdCA9IElNUEwtPmdl
dEZsb2F0VmFsdWUodW5pdFR5cGUsIGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAg
IHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIHJhaXNlT25ET01FcnJvcihJTVBMLT5nZXRGbG9h
dFZhbHVlKHVuaXRUeXBlKSk7CiB9CiAKIC0gKHZvaWQpc2V0U3RyaW5nVmFsdWU6KHVuc2lnbmVk
IHNob3J0KXN0cmluZ1R5cGUgc3RyaW5nVmFsdWU6KE5TU3RyaW5nICopc3RyaW5nVmFsdWUKIHsK
ICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6
RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgSU1QTC0+c2V0U3RyaW5nVmFsdWUoc3RyaW5nVHlw
ZSwgc3RyaW5nVmFsdWUsIGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOworICAgIHJhaXNl
T25ET01FcnJvcihJTVBMLT5zZXRTdHJpbmdWYWx1ZShzdHJpbmdUeXBlLCBzdHJpbmdWYWx1ZSkp
OwogfQogCiAtIChOU1N0cmluZyAqKWdldFN0cmluZ1ZhbHVlCiB7CiAgICAgV2ViQ29yZTo6SlNN
YWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMg
PSAwOwotICAgIE5TU3RyaW5nICpyZXN1bHQgPSBJTVBMLT5nZXRTdHJpbmdWYWx1ZShlYyk7Ci0g
ICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBy
YWlzZU9uRE9NRXJyb3IoSU1QTC0+Z2V0U3RyaW5nVmFsdWUoKSk7CiB9CiAKIC0gKERPTUNvdW50
ZXIgKilnZXRDb3VudGVyVmFsdWUKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3Rh
dGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgRE9NQ291
bnRlciAqcmVzdWx0ID0ga2l0KFdURjo6Z2V0UHRyKElNUEwtPmdldENvdW50ZXJWYWx1ZShlYykp
KTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0
dXJuIGtpdChyYWlzZU9uRE9NRXJyb3IoSU1QTC0+Z2V0Q291bnRlclZhbHVlKCkpKTsKIH0KIAog
LSAoRE9NUmVjdCAqKWdldFJlY3RWYWx1ZQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51
bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBE
T01SZWN0ICpyZXN1bHQgPSBraXQoV1RGOjpnZXRQdHIoSU1QTC0+Z2V0UmVjdFZhbHVlKGVjKSkp
OwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1
cm4ga2l0KHJhaXNlT25ET01FcnJvcihJTVBMLT5nZXRSZWN0VmFsdWUoKSkpOwogfQogCiAtIChE
T01SR0JDb2xvciAqKWdldFJHQkNvbG9yVmFsdWUKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJl
YWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0g
ICAgRE9NUkdCQ29sb3IgKnJlc3VsdCA9IGtpdChXVEY6OmdldFB0cihJTVBMLT5nZXRSR0JDb2xv
clZhbHVlKGVjKSkpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKKyAgICByZXR1cm4ga2l0KHJhaXNlT25ET01FcnJvcihJTVBMLT5nZXRSR0JDb2xvclZhbHVl
KCkpLnB0cigpKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvRE9N
L0RPTUNTU1J1bGUubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9ET00vRE9NQ1NTUnVsZS5tbQppbmRl
eCAzMWM2YThmYjFmZmZhM2M0ODdhMzc5ZmM4NDRjMmI4M2Q3N2UyMGFiLi43NjBmYjViMTg4NWU4
YTI3MjgzYzliYjJjYTcyYmZiMjk2NzZhNWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21h
Yy9ET00vRE9NQ1NTUnVsZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9ET00vRE9NQ1NTUnVs
ZS5tbQpAQCAtNjgsOSArNjgsNyBAQCAtIChOU1N0cmluZyAqKWNzc1RleHQKIC0gKHZvaWQpc2V0
Q3NzVGV4dDooTlNTdHJpbmcgKiluZXdDc3NUZXh0CiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhy
ZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwot
ICAgIElNUEwtPnNldENzc1RleHQobmV3Q3NzVGV4dCwgZWMpOwotICAgIHJhaXNlT25ET01FcnJv
cihlYyk7CisgICAgcmFpc2VPbkRPTUVycm9yKElNUEwtPnNldENzc1RleHQobmV3Q3NzVGV4dCkp
OwogfQogCiAtIChET01DU1NTdHlsZVNoZWV0ICopcGFyZW50U3R5bGVTaGVldApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvRE9NL0RPTUNTU1N0eWxlRGVjbGFyYXRpb24ubW0gYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9ET00vRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbi5tbQppbmRleCA2YjFjNzc4
ZTE0NDJhNjE1MTNkNWJjNGI3ZTkzOGYwZjczMjM0OTQ5Li4zN2IzYzczMTRkN2UzOTM0NjM3ZWZm
MmJmMjdiNmU0MDQ4ZmI0MzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9ET00vRE9N
Q1NTU3R5bGVEZWNsYXJhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9ET00vRE9NQ1NT
U3R5bGVEZWNsYXJhdGlvbi5tbQpAQCAtNjQsOSArNjQsNyBAQCAtIChOU1N0cmluZyAqKWNzc1Rl
eHQKIC0gKHZvaWQpc2V0Q3NzVGV4dDooTlNTdHJpbmcgKiluZXdDc3NUZXh0CiB7CiAgICAgV2Vi
Q29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OkV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwotICAgIElNUEwtPnNldENzc1RleHQobmV3Q3NzVGV4dCwgZWMpOwotICAg
IHJhaXNlT25ET01FcnJvcihlYyk7CisgICAgcmFpc2VPbkRPTUVycm9yKElNUEwtPnNldENzc1Rl
eHQobmV3Q3NzVGV4dCkpOwogfQogCiAtICh1bnNpZ25lZClsZW5ndGgKQEAgLTk2LDEwICs5NCw3
IEBAIC0gKERPTUNTU1ZhbHVlICopZ2V0UHJvcGVydHlDU1NWYWx1ZTooTlNTdHJpbmcgKilwcm9w
ZXJ0eU5hbWUKIC0gKE5TU3RyaW5nICopcmVtb3ZlUHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVy
dHlOYW1lCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAg
IFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIE5TU3RyaW5nICpyZXN1bHQgPSBJ
TVBMLT5yZW1vdmVQcm9wZXJ0eShwcm9wZXJ0eU5hbWUsIGVjKTsKLSAgICByYWlzZU9uRE9NRXJy
b3IoZWMpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIHJhaXNlT25ET01FcnJvcihJ
TVBMLT5yZW1vdmVQcm9wZXJ0eShwcm9wZXJ0eU5hbWUpKTsKIH0KIAogLSAoTlNTdHJpbmcgKiln
ZXRQcm9wZXJ0eVByaW9yaXR5OihOU1N0cmluZyAqKXByb3BlcnR5TmFtZQpAQCAtMTExLDkgKzEw
Niw3IEBAIC0gKE5TU3RyaW5nICopZ2V0UHJvcGVydHlQcmlvcml0eTooTlNTdHJpbmcgKilwcm9w
ZXJ0eU5hbWUKIC0gKHZvaWQpc2V0UHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVydHlOYW1lIHZh
bHVlOihOU1N0cmluZyAqKXZhbHVlIHByaW9yaXR5OihOU1N0cmluZyAqKXByaW9yaXR5CiB7CiAg
ICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OkV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIElNUEwtPnNldFByb3BlcnR5KHByb3BlcnR5TmFtZSwg
dmFsdWUsIHByaW9yaXR5LCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKKyAgICByZXR1
cm4gcmFpc2VPbkRPTUVycm9yKElNUEwtPnNldFByb3BlcnR5KHByb3BlcnR5TmFtZSwgdmFsdWUs
IHByaW9yaXR5KSk7CiB9CiAKIC0gKE5TU3RyaW5nICopaXRlbToodW5zaWduZWQpaW5kZXgKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9ET01DU1NTdHlsZVNoZWV0Lm1tIGIvU291
cmNlL1dlYktpdC9tYWMvRE9NL0RPTUNTU1N0eWxlU2hlZXQubW0KaW5kZXggYTcxMDQ2OTI1ZWEw
ZDNiNmFlNzg2ZjA1YjE3NjBlMTMyODEyNTM3NS4uZDFhMWYwZjFlZjNmYWQ4ODlmMzg3ZmU4NjEx
NzM1YzgyY2U2MDg3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvRE9NL0RPTUNTU1N0
eWxlU2hlZXQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvRE9NL0RPTUNTU1N0eWxlU2hlZXQu
bW0KQEAgLTY1LDM1ICs2NSwyNSBAQCAtIChET01DU1NSdWxlTGlzdCAqKXJ1bGVzCiAtICh1bnNp
Z25lZClpbnNlcnRSdWxlOihOU1N0cmluZyAqKXJ1bGUgaW5kZXg6KHVuc2lnbmVkKWluZGV4CiB7
CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6
OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIHVuc2lnbmVkIHJlc3VsdCA9IElNUEwtPmluc2Vy
dFJ1bGUocnVsZSwgaW5kZXgsIGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJl
dHVybiByZXN1bHQ7CisgICAgcmV0dXJuIHJhaXNlT25ET01FcnJvcihJTVBMLT5pbnNlcnRSdWxl
KHJ1bGUsIGluZGV4KSk7CiB9CiAKIC0gKHZvaWQpZGVsZXRlUnVsZToodW5zaWduZWQpaW5kZXgK
IHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29y
ZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgSU1QTC0+ZGVsZXRlUnVsZShpbmRleCwgZWMp
OwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7CisgICAgcmFpc2VPbkRPTUVycm9yKElNUEwtPmRl
bGV0ZVJ1bGUoaW5kZXgpKTsKIH0KIAogLSAoaW50KWFkZFJ1bGU6KE5TU3RyaW5nICopc2VsZWN0
b3Igc3R5bGU6KE5TU3RyaW5nICopc3R5bGUgaW5kZXg6KHVuc2lnbmVkKWluZGV4CiB7CiAgICAg
V2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OkV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwotICAgIGludCByZXN1bHQgPSBJTVBMLT5hZGRSdWxlKHNlbGVjdG9y
LCBzdHlsZSwgaW5kZXgsIGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVy
biByZXN1bHQ7CisgICAgcmV0dXJuIHJhaXNlT25ET01FcnJvcihJTVBMLT5hZGRSdWxlKHNlbGVj
dG9yLCBzdHlsZSwgaW5kZXgpKTsKIH0KIAogLSAodm9pZClyZW1vdmVSdWxlOih1bnNpZ25lZClp
bmRleAogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBX
ZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBJTVBMLT5yZW1vdmVSdWxlKGluZGV4
LCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKKyAgICByYWlzZU9uRE9NRXJyb3IoSU1Q
TC0+cmVtb3ZlUnVsZShpbmRleCkpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L21hYy9ET00vRE9NQ1NTVmFsdWUubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9ET00vRE9NQ1NT
VmFsdWUubW0KaW5kZXggZTVjMDg5MTlmYzQ3MWNlYzUxZmI2OWQ2MTAxMzU4Y2M3MzIzNjIxOS4u
ODgxZWYyN2Q0ZmE4ZjUzZTEzZWJmNDI4M2JlNTljOGUzZjhjNWZmMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9tYWMvRE9NL0RPTUNTU1ZhbHVlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFj
L0RPTS9ET01DU1NWYWx1ZS5tbQpAQCAtNTksOSArNTksNyBAQCAtIChOU1N0cmluZyAqKWNzc1Rl
eHQKIC0gKHZvaWQpc2V0Q3NzVGV4dDooTlNTdHJpbmcgKiluZXdDc3NUZXh0CiB7CiAgICAgV2Vi
Q29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OkV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwotICAgIElNUEwtPnNldENzc1RleHQobmV3Q3NzVGV4dCwgZWMpOwotICAg
IHJhaXNlT25ET01FcnJvcihlYyk7CisgICAgcmFpc2VPbkRPTUVycm9yKElNUEwtPnNldENzc1Rl
eHQobmV3Q3NzVGV4dCkpOwogfQogCiAtICh1bnNpZ25lZCBzaG9ydCljc3NWYWx1ZVR5cGUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9ET01NZWRpYUxpc3QubW0gYi9Tb3VyY2Uv
V2ViS2l0L21hYy9ET00vRE9NTWVkaWFMaXN0Lm1tCmluZGV4IGQ4MTdjYjJhOThlNTQ0Yjk2Nzc2
YWUzZmZjMjMwYmUyMmJkYzQ4MmQuLjAwM2RmNmY3YjgzOGE0YjgxZDBhOTE2OGIzODc4OTE5NzMy
NzFmMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9ET01NZWRpYUxpc3QubW0K
KysrIGIvU291cmNlL1dlYktpdC9tYWMvRE9NL0RPTU1lZGlhTGlzdC5tbQpAQCAtNjEsOSArNjEs
NyBAQCAtIChOU1N0cmluZyAqKW1lZGlhVGV4dAogLSAodm9pZClzZXRNZWRpYVRleHQ6KE5TU3Ry
aW5nICopbmV3TWVkaWFUZXh0CiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRl
IHN0YXRlOwotICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIElNUEwtPnNl
dE1lZGlhVGV4dChuZXdNZWRpYVRleHQsIGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwor
ICAgIHJhaXNlT25ET01FcnJvcihJTVBMLT5zZXRNZWRpYVRleHQobmV3TWVkaWFUZXh0KSk7CiB9
CiAKIC0gKHVuc2lnbmVkKWxlbmd0aApAQCAtODEsMTcgKzc5LDEzIEBAIC0gKE5TU3RyaW5nICop
aXRlbToodW5zaWduZWQpaW5kZXgKIC0gKHZvaWQpZGVsZXRlTWVkaXVtOihOU1N0cmluZyAqKW9s
ZE1lZGl1bQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAg
ICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBJTVBMLT5kZWxldGVNZWRpdW0o
b2xkTWVkaXVtLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKKyAgICByYWlzZU9uRE9N
RXJyb3IoSU1QTC0+ZGVsZXRlTWVkaXVtKG9sZE1lZGl1bSkpOwogfQogCiAtICh2b2lkKWFwcGVu
ZE1lZGl1bTooTlNTdHJpbmcgKiluZXdNZWRpdW0KIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJl
YWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0g
ICAgSU1QTC0+YXBwZW5kTWVkaXVtKG5ld01lZGl1bSwgZWMpOwotICAgIHJhaXNlT25ET01FcnJv
cihlYyk7CisgICAgcmFpc2VPbkRPTUVycm9yKElNUEwtPmFwcGVuZE1lZGl1bShuZXdNZWRpdW0p
KTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvRE9NL0V4Y2VwdGlv
bkhhbmRsZXJzLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9ET00vRXhjZXB0aW9uSGFuZGxlcnMuaApp
bmRleCAwYzc0NTFmYzE5Y2VlYTBhZjY1MmYwYmYxN2UyNjQ3N2QzN2VhYzY3Li4xYjBiMTE3NDU2
N2IxZWU1OWE1NjIzYWQ3YmUyYzQwYmFhY2EwMjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L21hYy9ET00vRXhjZXB0aW9uSGFuZGxlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9ET00v
RXhjZXB0aW9uSGFuZGxlcnMuaApAQCAtMjUsMTcgKzI1LDMxIEBACiAKICNwcmFnbWEgb25jZQog
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci11c2luZyBFeGNlcHRpb25Db2RlID0gaW50OwotfQorI2lu
Y2x1ZGUgPFdlYkNvcmUvRXhjZXB0aW9uT3IuaD4KIAogTk9fUkVUVVJOIHZvaWQgcmFpc2VET01F
eGNlcHRpb24oV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSk7CitOT19SRVRVUk4gdm9pZCByYWlzZURP
TUV4Y2VwdGlvbihXZWJDb3JlOjpFeGNlcHRpb24mJik7CiBOT19SRVRVUk4gdm9pZCByYWlzZVR5
cGVFcnJvckV4Y2VwdGlvbigpOwogCiB2b2lkIHJhaXNlT25ET01FcnJvcihXZWJDb3JlOjpFeGNl
cHRpb25Db2RlKTsKK3ZvaWQgcmFpc2VPbkRPTUVycm9yKFdlYkNvcmU6OkV4Y2VwdGlvbk9yPHZv
aWQ+JiYpOwordGVtcGxhdGU8dHlwZW5hbWUgVD4gVCByYWlzZU9uRE9NRXJyb3IoV2ViQ29yZTo6
RXhjZXB0aW9uT3I8VD4mJik7CiAKIGlubGluZSB2b2lkIHJhaXNlT25ET01FcnJvcihXZWJDb3Jl
OjpFeGNlcHRpb25Db2RlIGNvZGUpCiB7CiAgICAgaWYgKGNvZGUpCiAgICAgICAgIHJhaXNlRE9N
RXhjZXB0aW9uKGNvZGUpOwogfQorCitpbmxpbmUgdm9pZCByYWlzZU9uRE9NRXJyb3IoV2ViQ29y
ZTo6RXhjZXB0aW9uT3I8dm9pZD4mJiBwb3NzaWJsZUV4Y2VwdGlvbikKK3sKKyAgICBpZiAocG9z
c2libGVFeGNlcHRpb24uaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJhaXNlRE9NRXhjZXB0aW9u
KHBvc3NpYmxlRXhjZXB0aW9uLnJlbGVhc2VFeGNlcHRpb24oKSk7Cit9CisKK3RlbXBsYXRlPHR5
cGVuYW1lIFQ+IGlubGluZSBUIHJhaXNlT25ET01FcnJvcihXZWJDb3JlOjpFeGNlcHRpb25PcjxU
PiYmIGV4Y2VwdGlvbk9yUmV0dXJuVmFsdWUpCit7CisgICAgaWYgKGV4Y2VwdGlvbk9yUmV0dXJu
VmFsdWUuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJhaXNlRE9NRXhjZXB0aW9uKGV4Y2VwdGlv
bk9yUmV0dXJuVmFsdWUucmVsZWFzZUV4Y2VwdGlvbigpKTsKKyAgICByZXR1cm4gZXhjZXB0aW9u
T3JSZXR1cm5WYWx1ZS5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvbWFjL0RPTS9FeGNlcHRpb25IYW5kbGVycy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFj
L0RPTS9FeGNlcHRpb25IYW5kbGVycy5tbQppbmRleCAyOTdlYmQ5MzVmNDU5MTYwNDg1Nzg5NWIy
ZTZmNDNkYTRlMmM5ZmM1Li45ZWRiMWQ3NDFjYzdhMmRjN2YzZjk0MTc3NjY2NjBmOWMzZWUzYWFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9ET00vRXhjZXB0aW9uSGFuZGxlcnMubW0K
KysrIGIvU291cmNlL1dlYktpdC9tYWMvRE9NL0V4Y2VwdGlvbkhhbmRsZXJzLm1tCkBAIC03Niwz
ICs3Niw4IEBAIHZvaWQgcmFpc2VUeXBlRXJyb3JFeGNlcHRpb24oKQogewogICAgIHJhaXNlRE9N
RXhjZXB0aW9uKFdlYkNvcmU6OlR5cGVFcnJvcik7CiB9CisKK3ZvaWQgcmFpc2VET01FeGNlcHRp
b24oV2ViQ29yZTo6RXhjZXB0aW9uJiYgZXhjZXB0aW9uKQoreworICAgIHJhaXNlRE9NRXhjZXB0
aW9uKGV4Y2VwdGlvbi5jb2RlKCkpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291748</attachid>
            <date>2016-10-16 08:51:21 -0700</date>
            <delta_ts>2016-10-16 10:03:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163494-20161016084750.patch</filename>
            <type>text/plain</type>
            <size>334782</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3Mzg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTk0OWZhMmQwZDhjMTBh
M2I4M2ZjZTBmZTRmMjQ5ZTIwZDdjNTMzNy4uM2Q4NTNjMTdhOWEwMmY4ZTYyNGY2ZGVkNjRkYzIy
MzhlZGJkZDFhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxNSBAQAorMjAxNi0xMC0xNiAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBDU1MgY2xhc3NlcyBm
cm9tIEV4Y2VwdGlvbkNvZGUgdG8gRXhjZXB0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM0OTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmVkIHRoZSAiZ2V0IiBwcmVmaXggZnJvbSB0aGUg
bmFtZXMgb2YgbWFueSBDU1NQcmltaXRpdmVWYWx1ZQorICAgICAgICBmdW5jdGlvbnMgdG8gbWF0
Y2ggV2ViS2l0IGNvZGluZyBzdHlsZSBhbmQgdG8gZGlzYW1iaWd1YXRlIHRoZW0KKyAgICAgICAg
ZnJvbSB0aGUgcHVibGljIENTUyBET00gZnVuY3Rpb25zIHRoYXQgcmFpc2UgZXhjZXB0aW9ucy4K
KworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpwcm9wZXJ0eU5hbWVQcmVmaXgpOiBVc2UgZW51bSBjbGFzcy4K
KyAgICAgICAgKFdlYkNvcmU6OnBhcnNlSmF2YVNjcmlwdENTU1Byb3BlcnR5TmFtZSk6IFR3ZWFr
IHN0eWxlIGEgYml0LgorICAgICAgICAoV2ViQ29yZTo6c3R5bGVQcm9wZXJ0eUdldHRlcik6IFJl
ZmFjdG9yIHRvIHNpbXBsaWZ5IHN0cnVjdHVyZS4KKyAgICAgICAgKFdlYkNvcmU6OnN0eWxlUHJv
cGVydHlHZXR0ZXJQaXhlbE9yUG9zUHJlZml4KTogRGl0dG8uIEFsc28gdXNlIGZsb2F0VmFsdWUu
CisgICAgICAgIChXZWJDb3JlOjpKU0NTU1N0eWxlRGVjbGFyYXRpb246OnB1dERlbGVnYXRlKTog
VXNlIGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZSwKKyAgICAgICAgYW5kIHVzZSBwcm9wYWdhdGVFeGNl
cHRpb24gdG8gaGFuZGxlIEV4Y3BldGlvbk9yLgorICAgICAgICAoV2ViQ29yZTo6SlNDU1NTdHls
ZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKTogVHdlYWsgc3R5bGUgYSBiaXQuCisg
ICAgICAgIChXZWJDb3JlOjpKU0NTU1N0eWxlRGVjbGFyYXRpb246OmdldE93blByb3BlcnR5TmFt
ZXMpOiBVc2UgYSBsYW1iZGEgdG8KKyAgICAgICAgaW5pdGlhbGl6ZSBhIGdsb2JhbCBoZXJlLgor
CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmg6IEFkZGVkIHRvSlNTdHJpbmcg
dG8gc3VwcG9ydCBiaW5kaW5ncyBmb3IKKyAgICAgICAgZnVuY3Rpb25zIHJldHVybmluZyBFeGNl
cHRpb25PcjxTdHJpbmc+LgorCisgICAgICAgICogY3NzL0Jhc2ljU2hhcGVGdW5jdGlvbnMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydFRvTGVuZ3RoU2l6ZSk6IFVzZSBwYWlyVmFsdWUu
CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VG9DZW50ZXJDb29yZGluYXRlKTogVXNlIHZhbHVl
SUQgYW5kIHBhaXJWYWx1ZS4KKyAgICAgICAgKFdlYkNvcmU6OmNzc1ZhbHVlVG9CYXNpY1NoYXBl
UmFkaXVzKTogRGl0dG8uCisgICAgICAgICogY3NzL0NTU0Jhc2ljU2hhcGVzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnNlcmlhbGl6ZVBvc2l0aW9uT2Zmc2V0KTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpidWlsZFNlcmlhbGl6YWJsZVBvc2l0aW9uT2Zmc2V0KTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpDU1NCYXNpY1NoYXBlQ2lyY2xlOjpjc3NUZXh0KTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpDU1NCYXNpY1NoYXBlRWxsaXBzZTo6Y3NzVGV4dCk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6dXBkYXRlQ29ybmVyUmFkaXVzV2lkdGhBbmRIZWlnaHQpOiBEaXR0by4KKyAg
ICAgICAgKiBjc3MvQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmg6IFVzZSBxdWFkVmFsdWUuCisg
ICAgICAgICogY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
ZGV0ZXJtaW5lQ2F0ZWdvcnkpOiBVc2UgZmxvYXRWYWx1ZSBhbmQgZG91YmxlVmFsdWUuCisKKyAg
ICAgICAgKiBjc3MvQ1NTQ2hhcnNldFJ1bGUuaDogVXNlIEV4Y2VwdGlvbk9yLiBBbHNvIG1hZGUg
bW9yZSB0aGluZ3MgcHJpdmF0ZS4KKyAgICAgICAgKiBjc3MvQ1NTQ2hhcnNldFJ1bGUuaWRsOiBV
c2Ugbm9uLWxlZ2FjeSBleGNlcHRpb25zLgorCisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb246OnNldENzc1RleHQpOiBVc2UgRXhjZXB0aW9uT3IuCisgICAgICAgIChXZWJDb3Jl
OjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eU1hdGNoZXMpOiBVc2UgdmFsdWVJRC4K
KyAgICAgICAgKFdlYkNvcmU6OkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6c2V0UHJvcGVy
dHkpOiBVc2UgRXhjZXB0aW9uT3IuCisgICAgICAgIChXZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb246OnJlbW92ZVByb3BlcnR5KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpD
U1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OnNldFByb3BlcnR5SW50ZXJuYWwpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkNvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldEJhY2tncm91bmRT
aG9ydGhhbmRWYWx1ZSk6IFJldHVybgorICAgICAgICBhIFJlZiBpbnN0ZWFkIG9mIGEgUmVmUHRy
LgorICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaDogVXBkYXRlZCBm
b3IgYWJvdmUgY2hhbmdlcy4KKworICAgICAgICAqIGNzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDU1NDcm9zc2ZhZGVWYWx1ZTo6Zml4ZWRTaXplKTogVXNlIGZs
b2F0VmFsdWUuCisgICAgICAgIChXZWJDb3JlOjpDU1NDcm9zc2ZhZGVWYWx1ZTo6aW1hZ2UpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0Nyb3NzZmFkZVZhbHVlOjpibGVuZCk6IFVzZSBk
b3VibGVWYWx1ZS4KKworICAgICAgICAqIGNzcy9DU1NGb250RmFjZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NGb250RmFjZTo6Y2FsY3VsYXRlU3R5bGVNYXNrKTogVXNlIHZhbHVlSUQuCisg
ICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZTo6Y2FsY3VsYXRlV2VpZ2h0TWFzayk6IERpdHRv
LgorICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NGb250RmFjZVNldDo6ZmFtaWx5TmFtZUZyb21QcmltaXRpdmUpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OkNTU0ZvbnRGYWNlU2V0OjptYXRjaGluZ0ZhY2VzKTogVXNlIEV4Y2VwdG9pbk9y
LgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTZXQ6OmNoZWNrKTogRGl0dG8uCisgICAg
ICAgICogY3NzL0NTU0ZvbnRGYWNlU2V0Lmg6IFVwZGF0ZWQgZm9yIGFib3ZlIGNoYW5nZXMuCisK
KyAgICAgICAgKiBjc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpj
b21wYXJlU3RvcHMpOiBVc2UgZG91YmxlVmFsdWUuCisgICAgICAgIChXZWJDb3JlOjpDU1NHcmFk
aWVudFZhbHVlOjphZGRTdG9wcyk6IFVzZSBmbG9hdFZhbHVlLgorICAgICAgICAoV2ViQ29yZTo6
cG9zaXRpb25Gcm9tVmFsdWUpOiBVc2UgZmxvYXRWYWx1ZSBhbmQgdmFsdWRJRC4KKyAgICAgICAg
KFdlYkNvcmU6OkNTU0xpbmVhckdyYWRpZW50VmFsdWU6OmN1c3RvbUNTU1RleHQpOiBVc2UgZG91
YmxlVmFsdWUgYW5kIHZhbHVlSUQuCisgICAgICAgIChXZWJDb3JlOjpDU1NMaW5lYXJHcmFkaWVu
dFZhbHVlOjpjcmVhdGVHcmFkaWVudCk6IFVzZSBmbG9hdFZhbHVlIGFuZCB2YWx1ZUlELgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6Y3VzdG9tQ1NTVGV4dCk6IFVz
ZSBkb3VibGVWYWx1ZSBhbmQgdmFsdWVJRC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1JhZGlhbEdy
YWRpZW50VmFsdWU6OnJlc29sdmVSYWRpdXMpOiBVc2UgZmxvYXRWYWx1ZS4KKyAgICAgICAgKFdl
YkNvcmU6OkNTU1JhZGlhbEdyYWRpZW50VmFsdWU6OmNyZWF0ZUdyYWRpZW50KTogVXNlIHZhbHVl
SUQuCisKKyAgICAgICAgKiBjc3MvQ1NTR3JvdXBpbmdSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNTU0dyb3VwaW5nUnVsZTo6aW5zZXJ0UnVsZSk6IFVzZSBFeGNlcHRpb25Pci4KKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0dyb3VwaW5nUnVsZTo6ZGVsZXRlUnVsZSk6IERpdHRvLgorICAgICAg
ICAqIGNzcy9DU1NHcm91cGluZ1J1bGUuaDogVXBkYXRlZCBmb3IgYWJvdmUgY2hhbmdlcy4KKwor
ICAgICAgICAqIGNzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OnN1YmltYWdlSXNQZW5kaW5nKTogVXNlIHZhbHVl
SUQuCisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpjYWNoZWRJbWFn
ZUZvckNTU1ZhbHVlKTogRGl0dG8uCisKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZVNldFZhbHVlOjpmaWxsSW1hZ2VTZXQpOiBV
c2UgZmxvYXRWYWx1ZS4KKworICAgICAgICAqIGNzcy9DU1NNZWRpYVJ1bGUuaWRsOiBVc2Ugbm9u
LWxlZ2FjeSBleGNlcHRpb25zLgorCisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlRGVncmVlcyk6
IFVzZSBkb3VibGVWYWx1ZS4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpz
ZXRGbG9hdFZhbHVlKTogVXNlIEV4Y2VwdGlvbk9yLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJp
bWl0aXZlVmFsdWU6OmdldEZsb2F0VmFsdWUpOiBSZXBsYWNlZCBnZXREb3VibGVWYWx1ZSB3aXRo
IHRoaXMsCisgICAgICAgIHNpbmNlIGdldERvdWJsZVZhbHVlIGlzIHVudXNlZCwgbW92aW5nIHRo
ZSBjYWxsIHRvIGNsYW1wVG8gaW50byB0aGlzIGZ1bmN0aW9uLgorICAgICAgICBBbHNvIGNoYW5n
ZWQgdGhpcyB0byB1c2UgRXhjZXB0aW9uT3IuCisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRp
dmVWYWx1ZTo6ZG91YmxlVmFsdWUpOiBSZW5hbWVkIGZyb20gZ2V0RG91YmxlVmFsdWUuCisgICAg
ICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6ZG91YmxlVmFsdWVJbnRlcm5hbCk6IFVz
ZSBPcHRpb25hbCBpbnN0ZWFkIG9mIGEgYm9vbAorICAgICAgICBhbmQgYW4gb3V0IGFyZ3VtZW50
IHRvIHJldHVybiB0aGUgdmFsdWUgYW5kIGNoZWNrIGZvciB0eXBlIGZhaWx1cmUuCisgICAgICAg
IChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6c2V0U3RyaW5nVmFsdWUpOiBVc2UgRXhjZXB0
aW9uT3IuCisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0U3RyaW5nVmFs
dWUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpzdHJpbmdW
YWx1ZSk6IFJlbmFtZWQgZnJvbSBnZXRTdHJpbmdWYWx1ZS4KKyAgICAgICAgKFdlYkNvcmU6OkNT
U1ByaW1pdGl2ZVZhbHVlOjpnZXRDb3VudGVyVmFsdWUpOiBVc2UgRXhjZXB0aW9uT3IuCisgICAg
ICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0UmVjdFZhbHVlKTogVXNlIEV4Y2Vw
dGlvbk9yLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OmdldFF1YWRWYWx1
ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0TGVu
Z3RoUmVwZWF0VmFsdWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZl
VmFsdWU6OmdldFJHQkNvbG9yVmFsdWUpOiBVc2UgRXhjZXB0aW9uT3IuCisgICAgICAgIChXZWJD
b3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0UGFpclZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpmb3JtYXROdW1iZXJGb3JDdXN0b21DU1NUZXh0
KTogVXNlIG5ldyBuYW1lcyBmb3IgZnVuY3Rpb25zLgorICAgICAgICAqIGNzcy9DU1NQcmltaXRp
dmVWYWx1ZS5oOiBSZW9yZ2FuaXplZCB0aGUgY2xhc3MsIG1vdmVkIGxhcmdlIGlubGluZSBmdW5j
dGlvbiBib2RpZXMKKyAgICAgICAgb3V0IG9mIHRoZSBjbGFzcyBkZWZpbml0aW9uLiBVcGRhdGVk
IGZvciB0aGUgYWJvdmUgY2hhbmdlcy4KKyAgICAgICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWUu
aWRsOiBVc2Ugbm9uLWxlZ2FjeSBleGNlcHRpb25zLgorCisgICAgICAgICogY3NzL0NTU1ByaW1p
dGl2ZVZhbHVlTWFwcGluZ3MuaDogVXNlIHZhbHVlIGluc3RlYWQgb2YgZ2V0VmFsdWUsIGV0Yy4K
KworICAgICAgICAqIGNzcy9DU1NSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1J1bGU6
OnNldENzc1RleHQpOiBVc2UgRXhjZXB0aW9uT3IuCisgICAgICAgICogY3NzL0NTU1J1bGUuaDog
VXBkYXRlZCBmb3IgYWJvdmUgY2hhbmdlLgorICAgICAgICAqIGNzcy9DU1NSdWxlLmlkbDogVXNl
IG5vbi1sZWdhY3kgZXhjZXB0aW9ucy4KKworICAgICAgICAqIGNzcy9DU1NTdHlsZURlY2xhcmF0
aW9uLmg6IFVzZSBFeGNlcHRpb25Pci4KKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVEZWNsYXJhdGlv
bi5pZGw6IFVzZSBub24tbGVnYWN5IGV4Y2VwdGlvbnMuCisKKyAgICAgICAgKiBjc3MvQ1NTU3R5
bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNoZWV0OjpkZXByZWNhdGVk
SW5zZXJ0UnVsZSk6IFVzZSBFeGNlcHRpb25Pci4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxl
U2hlZXQ6Omluc2VydFJ1bGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2hl
ZXQ6OmRlbGV0ZVJ1bGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2hlZXQ6
OmFkZFJ1bGUpOiBEaXR0by4KKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTaGVldC5oOiBVcGRhdGVk
IGZvciB0aGUgYWJvdmUgY2hhbmdlcy4KKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTaGVldC5pZGw6
IFVzZSBub24tbGVnYWN5IGV4Y2VwdGlvbnMuCisKKyAgICAgICAgKiBjc3MvQ1NTU3VwcG9ydHNS
dWxlLmlkbDogVXNlIG5vbi1sZWdhY3kgZXhjZXB0aW9ucy4KKworICAgICAgICAqIGNzcy9DU1NU
b1N0eWxlTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1RvU3R5bGVNYXA6Om1hcEZpbGxB
dHRhY2htZW50KTogVXNlIHZhbHVlSUQgaW5zdGVhZCBvZiBnZXRWYWx1ZUlELCBldGMuCisgICAg
ICAgIChXZWJDb3JlOjpjb252ZXJ0VG9MZW5ndGhTaXplKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpDU1NUb1N0eWxlTWFwOjptYXBGaWxsU2l6ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTVG9TdHlsZU1hcDo6bWFwRmlsbFhQb3NpdGlvbik6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTVG9TdHlsZU1hcDo6bWFwRmlsbFlQb3NpdGlvbik6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6Q1NTVG9TdHlsZU1hcDo6bWFwRmlsbE1hc2tTb3VyY2VUeXBlKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxlTWFwOjptYXBBbmltYXRpb25EaXJlY3Rpb24pOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1RvU3R5bGVNYXA6Om1hcEFuaW1hdGlvbkZpbGxN
b2RlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxlTWFwOjptYXBBbmltYXRp
b25JdGVyYXRpb25Db3VudCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9TdHlsZU1h
cDo6bWFwQW5pbWF0aW9uTmFtZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9TdHls
ZU1hcDo6bWFwQW5pbWF0aW9uUGxheVN0YXRlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpD
U1NUb1N0eWxlTWFwOjptYXBBbmltYXRpb25Qcm9wZXJ0eSk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9uVGltaW5nRnVuY3Rpb24pOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkNTU1RvU3R5bGVNYXA6Om1hcEFuaW1hdGlvblRyaWdnZXIpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1RvU3R5bGVNYXA6Om1hcE5pbmVQaWVjZUltYWdl
U2xpY2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1RvU3R5bGVNYXA6Om1hcE5pbmVQ
aWVjZUltYWdlUXVhZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9TdHlsZU1hcDo6
bWFwTmluZVBpZWNlSW1hZ2VSZXBlYXQpOiBEaXR0by4KKworICAgICAgICAqIGNzcy9DU1NWYWx1
ZS5oOiBVc2UgRXhjZXB0aW9uT3IuCisgICAgICAgICogY3NzL0NTU1ZhbHVlLmlkbDogVXNlIG5v
bi1sZWdhY3kgZXhjZXB0aW9ucy4KKworICAgICAgICAqIGNzcy9Db3VudGVyLmg6IFVzZSBzdHJp
bmdWYWx1ZSBpbnN0ZWFkIG9mIGdldFN0cmluZ1ZhbHVlLCBldGMuCisKKyAgICAgICAgKiBjc3Mv
Rm9udEZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhY2U6OmNyZWF0ZSk6IFVzZSBF
eGNlcHRpb25Pci4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlOjpzZXRGYW1pbHkpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlOjpzZXRTdHlsZSk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6Rm9udEZhY2U6OnNldFdlaWdodCk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6Rm9udEZhY2U6OnNldFN0cmV0Y2gpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRG
YWNlOjpzZXRVbmljb2RlUmFuZ2UpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNl
OjpzZXRWYXJpYW50KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZTo6c2V0RmVh
dHVyZVNldHRpbmdzKTogRGl0dG8uCisgICAgICAgICogY3NzL0ZvbnRGYWNlLmg6IFVwZGF0ZWQg
Zm9yIGFib3ZlIGNoYW5nZXMuCisgICAgICAgICogY3NzL0ZvbnRGYWNlLmlkbDogVXNlIG5vbi1s
ZWdhY3kgZXhjZXB0aW9ucy4KKworICAgICAgICAqIGNzcy9Gb250RmFjZVNldC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGb250RmFjZVNldDo6bG9hZCk6IFVzZSBFeGNlcHRpb25Pci4KKyAgICAg
ICAgKFdlYkNvcmU6OkZvbnRGYWNlU2V0OjpjaGVjayk6IERpdHRvLgorICAgICAgICAqIGNzcy9G
b250RmFjZVNldC5oOiBVcGRhdGVkIGZvciBhYm92ZSBjaGFuZ2VzLgorICAgICAgICAqIGNzcy9G
b250RmFjZVNldC5pZGw6IFVzZSBub24tbGVnYWN5IGV4Y2VwdGlvbnMuCisKKyAgICAgICAgKiBj
c3MvRm9udFZhcmlhbnRCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RGb250
VmFyaWFudExpZ2F0dXJlcyk6IFVzZSB2YWx1ZUlEIGluc3RlYWQgb2YgZ2V0VmFsdWVJRCwgZXRj
LgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEZvbnRWYXJpYW50TnVtZXJpYyk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdEZvbnRWYXJpYW50RWFzdEFzaWFuKTogRGl0dG8uCisK
KyAgICAgICAgKiBjc3MvTWVkaWFMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhTGlz
dDo6c2V0TWVkaWFUZXh0KTogVXNlIEV4Y2VwdGlvbk9yLgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFMaXN0OjpkZWxldGVNZWRpdW0pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhTGlz
dDo6YXBwZW5kTWVkaXVtKTogRGl0dG8uCisgICAgICAgICogY3NzL01lZGlhTGlzdC5oOiBVcGRh
dGVkIGZvciBhYm92ZSBjaGFuZ2VzLgorICAgICAgICAqIGNzcy9NZWRpYUxpc3QuaWRsOiBVc2Ug
bm9uLWxlZ2FjeSBleGNlcHRpb25zLgorCisgICAgICAgICogY3NzL01lZGlhUXVlcnlFdmFsdWF0
b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZG91YmxlVmFsdWUpOiBVc2UgdmFsdWVJRCBpbnN0
ZWFkIG9mIGdldFZhbHVlSUQsIGV0Yy4KKyAgICAgICAgKFdlYkNvcmU6OmNvbG9yR2FtdXRFdmFs
dWF0ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6aW52ZXJ0ZWRDb2xvcnNFdmFsdWF0ZSk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6b3JpZW50YXRpb25FdmFsdWF0ZSk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6ZXZhbHVhdGVSZXNvbHV0aW9uKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpjb21wdXRlTGVuZ3RoKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjp2aWV3TW9k
ZUV2YWx1YXRlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpob3ZlckV2YWx1YXRlKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpwb2ludGVyRXZhbHVhdGUpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OnByZWZlcnNSZWR1Y2VkTW90aW9uRXZhbHVhdGUpOiBEaXR0by4KKworICAgICAg
ICAqIGNzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpzZXRDc3NUZXh0KTogVXNlIEV4
Y2VwdGlvbk9yLgorICAgICAgICAoV2ViQ29yZTo6UHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0
aW9uOjpzZXRQcm9wZXJ0eSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UHJvcGVydHlTZXRD
U1NTdHlsZURlY2xhcmF0aW9uOjpyZW1vdmVQcm9wZXJ0eSk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6UHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVl
SW50ZXJuYWwpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5U2V0Q1NTU3R5bGVE
ZWNsYXJhdGlvbjo6c2V0UHJvcGVydHlJbnRlcm5hbCk6IERpdHRvLgorICAgICAgICAqIGNzcy9Q
cm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uaDogVXBkYXRlZCBmb3IgYWJvdmUgY2hhbmdl
cy4KKyAgICAgICAgQWxzbyBtYXJrZWQgYSBjb3VwbGUgYWRkaXRpb25hbCBmdW5jdGlvbnMgcHJp
dmF0ZS4KKworICAgICAgICAqIGNzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaDogVXNlIGRvdWJs
ZVZhbHVlIGluc3RlYWQgb2YgZ2V0RG91YmxlVmFsdWUsIGV0Yy4KKyAgICAgICAgKiBjc3MvU3R5
bGVCdWlsZGVyQ3VzdG9tLmg6IERpdHRvLgorICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnRpZXMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0aWVzOjpnZXRMYXllcmVkU2hvcnRo
YW5kVmFsdWUpOiBEaXR0by4KKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpNYXRjaFJlc3VsdDo6YWRkTWF0Y2hlZFByb3Bl
cnRpZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmNvbG9yRnJv
bVByaW1pdGl2ZVZhbHVlSXNEZXJpdmVkRnJvbUVsZW1lbnQpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmNvbG9yRnJvbVByaW1pdGl2ZVZhbHVlKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjcmVhdGVGaWx0ZXJPcGVyYXRpb25zKTog
RGl0dG8uCisgICAgICAgICogY3NzL1RyYW5zZm9ybUZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjp0cmFuc2Zvcm1zRm9yVmFsdWUpOiBEaXR0by4KKyAgICAgICAgKiBjc3MvVmlld3Bv
cnRTdHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZpZXdwb3J0U3R5bGVSZXNv
bHZlcjo6Z2V0Vmlld3BvcnRBcmd1bWVudFZhbHVlKTogRGl0dG8uCisKKyAgICAgICAgKiBjc3Mv
V2ViS2l0Q1NTTWF0cml4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdENTU01hdHJpeDo6
V2ViS2l0Q1NTTWF0cml4KTogVHdlYWtlZCBjb25zdHJ1Y3RvcnMgYSBiaXQsCisgICAgICAgIGdl
dHRpbmcgcmlkIG9mIHRoZSBvbmUgdGhhdCB1c2VzIGFuIEV4Y2VwdGlvbkNvZGUuCisgICAgICAg
IChXZWJDb3JlOjpXZWJLaXRDU1NNYXRyaXg6OmNyZWF0ZSk6IE1vdmVkIGluIGhlcmUsIGFuZCB1
c2UgRXhjZXB0aW9uT3IuCisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NNYXRyaXg6OnNldE1h
dHJpeFZhbHVlKTogVXNlIEV4Y2VwdGlvbk9yLgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NT
TWF0cml4OjptdWx0aXBseSk6IFR3ZWFrIGNvZGluZyBzdHlsZSBhIGJpdC4KKyAgICAgICAgKFdl
YkNvcmU6OldlYktpdENTU01hdHJpeDo6aW52ZXJzZSk6IFVzZSBFeGNlcHRpb25Pci4KKyAgICAg
ICAgKFdlYkNvcmU6OldlYktpdENTU01hdHJpeDo6dHJhbnNsYXRlKTogUmV0dXJuIGEgUmVmIGlu
c3RlYWQgb2YgUmVmUHRyLgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTTWF0cml4OjpzY2Fs
ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTTWF0cml4Ojpyb3RhdGUpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OldlYktpdENTU01hdHJpeDo6cm90YXRlQXhpc0FuZ2xl
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NNYXRyaXg6OnNrZXdYKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NNYXRyaXg6OnNrZXdZKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NNYXRyaXg6OnRvU3RyaW5nKTogVHdlYWtlZCBmb3Jt
YXR0aW5nIGEgYml0LgorICAgICAgICAqIGNzcy9XZWJLaXRDU1NNYXRyaXguaDogVXBkYXRlZCBm
b3IgYWJvdmUgY2hhbmdlcy4KKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTTWF0cml4LmlkbDogVXNl
IG5vbi1sZWdhY3kgZXh0ZW5zaW9ucy4KKworICAgICAgICAqIGNzcy9tYWtlcHJvcC5wbDoKKyAg
ICAgICAgKGhhbmRsZUN1cnJlbnRDb2xvclZhbHVlKTogVXNlIHZhbHVlSUQgaW5zdGVhZCBvZiBn
ZXRWYWx1ZUlELgorICAgICAgICAoZ2VuZXJhdGVWYWx1ZVNldHRlcik6IERpdHRvLgorCisgICAg
ICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFy
c2VyOjpwYXJzZTRWYWx1ZXNGaWxsUG9zaXRpb24pOiBVc2UgdmFsdWVJRCBpbnN0ZWFkIG9mIGdl
dFZhbHVlSUQsIGV0Yy4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2UzVmFsdWVz
RmlsbFBvc2l0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNl
RmlsbFBvc2l0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNl
RmlsbFJlcGVhdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUdy
aWRQb3NpdGlvbik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUdy
aWRUZW1wbGF0ZVJvd3NBbmRBcmVhc0FuZENvbHVtbnMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OmlzR3JpZFRyYWNrRml4ZWRTaXplZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UGFyc2VyOjpwYXJzZVJhZGlhbEdyYWRpZW50KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpD
U1NQYXJzZXI6OnBhcnNlQnVpbHRpbkZpbHRlckFyZ3VtZW50cyk6IERpdHRvLgorCisgICAgICAg
ICogY3NzL3BhcnNlci9DU1NQYXJzZXJWYWx1ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UGFyc2VyVmFsdWU6OmNyZWF0ZUNTU1ZhbHVlKTogUmVtb3ZlZCB0aGUgdW5uZWVkZWQgY2FsbCB0
bworICAgICAgICBzZXRQcmltaXRpdmVUeXBlIGhlcmUuIFRoZSBjcmVhdGVQYXJzZXJPcGVyYXRv
ciByZXR1cm5zIGFuIG9iamVjdCB0aGF0CisgICAgICAgIGFscmVhZHkgaGFzIHRoZSBjb3JyZWN0
IHByaW1pdGl2ZSB0eXBlLgorCisgICAgICAgICogY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNl
ci5jcHA6IFVwZGF0ZWQgbW9zdCBjYXNlcyBvZiBjYWxsaW5nIHRoZSBvbGQKKyAgICAgICAgZ2V0
WFhYVmFsdWUgZnVuY3Rpb25zLCBidXQgbm90IHN1cmUgaWYgaXQncyByaWdodCBzaW5jZSBpdCBp
cyBjb21tZW50ZWQgb3V0CisgICAgICAgIGNvZGUgdGhhdCBJIGRpZCBub3QgY29tcGlsZS4KKwor
ICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y2xhbXBSR0JDb21wb25lbnQp
OiBVc2UgaW50VmFsdWUgaW5zdGVhZCBvZiBnZXRJbnRWYWx1ZSwgZXRjLgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpwYXJzZUhTTFBhcmFtZXRlcnMpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6aXNIb3Jpem9u
dGFsUG9zaXRpb25LZXl3b3JkT25seSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJv
cGVydHlQYXJzZXJIZWxwZXJzOjppc1ZlcnRpY2FsUG9zaXRpb25LZXl3b3JkT25seSk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpwb3NpdGlvbkZy
b21UaHJlZU9yRm91clZhbHVlcyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVy
dHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lUmFkaWFsR3JhZGllbnQpOiBEaXR0by4KKworICAgICAg
ICAqIGRvbS9SYW5nZS5jcHA6IEFkZGVkIG5vdy1uZWVkZWQgaW5jbHVkZSBvZiBFeGNlcHRpb25D
b2RlLmguCisgICAgICAgICogZG9tL1NlbGVjdG9yUXVlcnkuY3BwOiBEaXR0by4KKworICAgICAg
ICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9J
ZGVudGlmaWVyKTogVXNlIHZhbHVlSUQgaW5zdGVhZCBvZiBnZXRWYWx1ZUlELCBldGMuCisgICAg
ICAgIChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6Y29tcHV0ZWRGb250U2l6ZSk6IERpdHRv
LgorICAgICAgICAqIGVkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmlkZW50aWZpZXJGb3JTdHlsZVByb3BlcnR5KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpI
VE1MRWxlbWVudEVxdWl2YWxlbnQ6OnZhbHVlSXNQcmVzZW50SW5TdHlsZSk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjpleHRyYWN0Rm9udFNpemVEZWx0YSk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjp0ZXh0RGlyZWN0aW9uKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OnByZXBhcmVUb0FwcGx5QXQpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkVkaXRpbmdTdHlsZTo6dGV4dERpcmVjdGlvbkZvclNlbGVj
dGlvbik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Zm9udFdlaWdodElzQm9sZCk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6bGVnYWN5Rm9udFNpemVGcm9tQ1NTVmFsdWUpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OmlzVHJhbnNwYXJlbnRDb2xvclZhbHVlKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpoYXNUcmFuc3BhcmVudEJhY2tncm91bmRDb2xvcik6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6YmFja2dyb3VuZENvbG9ySW5FZmZlY3QpOiBEaXR0by4KKworICAgICAg
ICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6YXBwbHlF
ZGl0aW5nU3R5bGVUb0VsZW1lbnQpOiBSZW1vdmVkIElHTk9SRV9FWENFUFRJT047IHRoYXQgaXMK
KyAgICAgICAgd2hhdCB3ZSBkbyBieSBkZWZhdWx0IGZvciB0aGluZ3MgcmV0dXJuaW5nIEV4Y2Vw
dGlvbk9yLgorICAgICAgICAqIGVkaXRpbmcvUmVtb3ZlQ1NTUHJvcGVydHlDb21tYW5kLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbW92ZUNTU1Byb3BlcnR5Q29tbWFuZDo6ZG9BcHBseSk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVtb3ZlQ1NTUHJvcGVydHlDb21tYW5kOjpkb1VuYXBw
bHkpOiBEaXR0by4KKyAgICAgICAgKiBlZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpyZW1vdmVSZWR1
bmRhbnRTdHlsZXNBbmRLZWVwU3R5bGVTcGFuSW5saW5lKTogRGl0dG8uCisKKyAgICAgICAgKiBl
ZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW06CisgICAgICAgIChmbG9hdFZhbHVlRnJvbVBy
aW1pdGl2ZVZhbHVlKTogVXNlIGZsb2F0VmFsdWUgaW5zdGVhZCBvZiBnZXRGbG9hdFZhbHVlLCBl
dGMuCisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJv
cGVydHlNaXNzaW5nT3JFcXVhbFRvTm9uZSk6IERpdHRvLgorCisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvclN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5
bGVTaGVldDo6YWRkUnVsZSk6IFVwZGF0ZWQgdG8gY2FsbCBFeGNlcHRpb25Pci1yZXR1cm5pbmcg
ZnVuY3Rpb25zLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6ZGVsZXRl
UnVsZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yU3R5bGVTaGVldDo6c2V0
U3R5bGVUZXh0KTogRGl0dG8uCisKKyAgICAgICAgKiBzdmcvU1ZHTGVuZ3RoLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0xlbmd0aDo6ZnJvbUNTU1ByaW1pdGl2ZVZhbHVlKTogVXNlIGZsb2F0
VmFsdWUgaW5zdGVhZCBvZiBnZXRGbG9hdFZhbHVlLgorCiAyMDE2LTEwLTE1ICBTYWlkIEFib3Ut
SGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CiAKICAgICAgICAgRGVsZXRlIHRoZSBh
bmltYXRlZCBpbWFnZSBjYXRjaHVwIGNvZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCBiYmVjNDFlNjY0
YTczMTYyYjc2OGZlOTRiYWQ2Y2EzOTFmMDI3YWE1Li5hODdlZjc3M2U0ZmZhOGIxOWNmMzU4YTk4
MTFmYjIyYzcwODllOGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDYgQEAKKzIwMTYt
MTAtMTUgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgQ1NT
IGNsYXNzZXMgZnJvbSBFeGNlcHRpb25Db2RlIHRvIEV4Y2VwdGlvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDk0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBET00vRE9NQ1NTTWVkaWFSdWxlLm1t
OgorICAgICAgICAoLVtET01DU1NNZWRpYVJ1bGUgaW5zZXJ0UnVsZTppbmRleDpdKTogVXNlIHJh
aXNlT25ET01FcnJvcgorICAgICAgICB0aGUgbmV3IHdheSB0byBoYW5kbGUgRXhjZXB0aW9uT3Ig
aW5zdGVhZCBvZiBFeGNlcHRpb25Db2RlLgorICAgICAgICAoLVtET01DU1NNZWRpYVJ1bGUgZGVs
ZXRlUnVsZTpdKTogRGl0dG8uCisgICAgICAgICogRE9NL0RPTUNTU1ByaW1pdGl2ZVZhbHVlLm1t
OgorICAgICAgICAoLVtET01DU1NQcmltaXRpdmVWYWx1ZSBzZXRGbG9hdFZhbHVlOmZsb2F0VmFs
dWU6XSk6IERpdHRvLgorICAgICAgICAoLVtET01DU1NQcmltaXRpdmVWYWx1ZSBnZXRGbG9hdFZh
bHVlOl0pOiBEaXR0by4KKyAgICAgICAgKC1bRE9NQ1NTUHJpbWl0aXZlVmFsdWUgc2V0U3RyaW5n
VmFsdWU6c3RyaW5nVmFsdWU6XSk6IERpdHRvLgorICAgICAgICAoLVtET01DU1NQcmltaXRpdmVW
YWx1ZSBnZXRTdHJpbmdWYWx1ZV0pOiBEaXR0by4KKyAgICAgICAgKC1bRE9NQ1NTUHJpbWl0aXZl
VmFsdWUgZ2V0Q291bnRlclZhbHVlXSk6IERpdHRvLgorICAgICAgICAoLVtET01DU1NQcmltaXRp
dmVWYWx1ZSBnZXRSZWN0VmFsdWVdKTogRGl0dG8uCisgICAgICAgICgtW0RPTUNTU1ByaW1pdGl2
ZVZhbHVlIGdldFJHQkNvbG9yVmFsdWVdKTogRGl0dG8uCisgICAgICAgICogRE9NL0RPTUNTU1J1
bGUubW06CisgICAgICAgICgtW0RPTUNTU1J1bGUgc2V0Q3NzVGV4dDpdKTogRGl0dG8uCisgICAg
ICAgICogRE9NL0RPTUNTU1N0eWxlRGVjbGFyYXRpb24ubW06CisgICAgICAgICgtW0RPTUNTU1N0
eWxlRGVjbGFyYXRpb24gc2V0Q3NzVGV4dDpdKTogRGl0dG8uCisgICAgICAgICgtW0RPTUNTU1N0
eWxlRGVjbGFyYXRpb24gcmVtb3ZlUHJvcGVydHk6XSk6IERpdHRvLgorICAgICAgICAoLVtET01D
U1NTdHlsZURlY2xhcmF0aW9uIHNldFByb3BlcnR5OnZhbHVlOnByaW9yaXR5Ol0pOiBEaXR0by4K
KyAgICAgICAgKiBET00vRE9NQ1NTU3R5bGVTaGVldC5tbToKKyAgICAgICAgKC1bRE9NQ1NTU3R5
bGVTaGVldCBpbnNlcnRSdWxlOmluZGV4Ol0pOiBEaXR0by4KKyAgICAgICAgKC1bRE9NQ1NTU3R5
bGVTaGVldCBkZWxldGVSdWxlOl0pOiBEaXR0by4KKyAgICAgICAgKC1bRE9NQ1NTU3R5bGVTaGVl
dCBhZGRSdWxlOnN0eWxlOmluZGV4Ol0pOiBEaXR0by4KKyAgICAgICAgKC1bRE9NQ1NTU3R5bGVT
aGVldCByZW1vdmVSdWxlOl0pOiBEaXR0by4KKyAgICAgICAgKiBET00vRE9NQ1NTVmFsdWUubW06
CisgICAgICAgICgtW0RPTUNTU1ZhbHVlIHNldENzc1RleHQ6XSk6IERpdHRvLgorICAgICAgICAq
IERPTS9ET01NZWRpYUxpc3QubW06CisgICAgICAgICgtW0RPTU1lZGlhTGlzdCBzZXRNZWRpYVRl
eHQ6XSk6IERpdHRvLgorICAgICAgICAoLVtET01NZWRpYUxpc3QgZGVsZXRlTWVkaXVtOl0pOiBE
aXR0by4KKyAgICAgICAgKC1bRE9NTWVkaWFMaXN0IGFwcGVuZE1lZGl1bTpdKTogRGl0dG8uCisK
KyAgICAgICAgKiBET00vRXhjZXB0aW9uSGFuZGxlcnMuaDogQWRkZWQgYW4gb3ZlcmxvYWQgb2Yg
cmFpc2VET01FeGNlcHRpb24KKyAgICAgICAgdGhhdCB3b3JrcyB3aXRoIGEgV2ViQ29yZTo6RXhj
ZXB0aW9uJiYgYW5kIG92ZXJsb2FkcyBvZgorICAgICAgICByYWlzZU9uRE9NRXJyb3IgdGhhdCB3
b3JrIHdpdGggV2ViQ29yZTo6RXhjZXB0aW9uT3ImJi4KKyAgICAgICAgKiBET00vRXhjZXB0aW9u
SGFuZGxlcnMubW06CisgICAgICAgIChyYWlzZURPTUV4Y2VwdGlvbik6IEltcGxlbWVudGVkIHRo
ZSBuZXcgdmVyc2lvbi4KKwogMjAxNi0xMC0xNSAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIxOTE2OTkpOiBDb250ZXh0dWFsIG1lbnUgaW4g
TWFpbCBjb21wb3NlIHZpZXcgZG9lc27igJl0IGluY2x1ZGUgYW55IG9mIHRoZSBzdGFuZGFyZCBz
dWJtZW51cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IGYxYjBiYjQ4YzlmMWY0YWQ2NjgzM2EzYTBhMWI4
MGM3NTcxMTU4Y2QuLmYzYTU2ZWE1ZWRhYjA0YTYyZWQ0YTQxN2Q3NjNjZDc2NjA1N2JlOTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxNi0xMC0xNiAgRGFyaW4gQWRsZXIg
IDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBDU1MgY2xhc3NlcyBmcm9tIEV4Y2Vw
dGlvbkNvZGUgdG8gRXhjZXB0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjM0OTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIERPTUNTU0NsYXNzZXMuY3BwOgorICAgICAgICAoRE9NQ1NTU3R5bGVE
ZWNsYXJhdGlvbjo6c2V0Q3NzVGV4dCk6IFJlbW92ZSBFeGNlcHRpb25Db2RlIGhhbmRsaW5nLgor
ICAgICAgICAoRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbjo6c2V0UHJvcGVydHkpOiBEaXR0by4KKwog
MjAxNi0xMC0xMiAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAg
ICAgIENvcHkgQmFja0ZvcndhcmRMaXN0IGZyb20gV2ViQ29yZSB0byBXZWJLaXQvd2luCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25D
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0
aW9uQ3VzdG9tLmNwcAppbmRleCA0YjdlMzJiNDEzYWU4MGMyZDBhMDU5ODEyNzBhNjlmZDViNDFm
NGQ5Li4zNWU0YTIyNzVhNjk0ZjE4ZjU1Zjk3OWMwMWIzMTljNzE5Zjc0MzFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlv
bkN1c3RvbS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3LTIw
MDksIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA3LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Nyw3ICs0Nyw2IEBACiAjaW5jbHVkZSA8d3Rm
L0FTQ0lJQ1R5cGUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCkBAIC01NSw2ICs1NCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCogcm9vdChDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHls
ZSkKIHsKKyAgICBBU1NFUlQoc3R5bGUpOwogICAgIGlmIChhdXRvKiBwYXJlbnRSdWxlID0gc3R5
bGUtPnBhcmVudFJ1bGUoKSkKICAgICAgICAgcmV0dXJuIHJvb3QocGFyZW50UnVsZSk7CiAgICAg
aWYgKGF1dG8qIHN0eWxlU2hlZXQgPSBzdHlsZS0+cGFyZW50U3R5bGVTaGVldCgpKQpAQCAtNjks
MjUgKzY5LDExIEBAIHZvaWQgSlNDU1NTdHlsZURlY2xhcmF0aW9uOjp2aXNpdEFkZGl0aW9uYWxD
aGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qo
cm9vdCgmd3JhcHBlZCgpKSk7CiB9CiAKLWNsYXNzIENTU1Byb3BlcnR5SW5mbyB7Ci1wdWJsaWM6
Ci0gICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEOwotICAgIGJvb2wgaGFkUGl4ZWxPclBvc1By
ZWZpeDsKLX07Ci0KLWVudW0gUHJvcGVydHlOYW1lUHJlZml4IHsKLSAgICBQcm9wZXJ0eU5hbWVQ
cmVmaXhOb25lLAotICAgIFByb3BlcnR5TmFtZVByZWZpeENTUywKLSAgICBQcm9wZXJ0eU5hbWVQ
cmVmaXhQaXhlbCwKLSAgICBQcm9wZXJ0eU5hbWVQcmVmaXhQb3MsCitlbnVtIGNsYXNzIFByb3Bl
cnR5TmFtZVByZWZpeCB7CisgICAgTm9uZSwgRXB1YiwgQ1NTLCBQaXhlbCwgUG9zLCBXZWJLaXQs
CiAjaWYgRU5BQkxFKExFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKQotICAgIFByb3BlcnR5TmFt
ZVByZWZpeEFwcGxlLAorICAgIEFwcGxlLCBLSFRNTCwKICNlbmRpZgotICAgIFByb3BlcnR5TmFt
ZVByZWZpeEVwdWIsCi0jaWYgRU5BQkxFKExFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKQotICAg
IFByb3BlcnR5TmFtZVByZWZpeEtIVE1MLAotI2VuZGlmCi0gICAgUHJvcGVydHlOYW1lUHJlZml4
V2ViS2l0CiB9OwogCiB0ZW1wbGF0ZTxzaXplX3QgcHJlZml4Q1N0cmluZ0xlbmd0aD4KQEAgLTEw
Nyw3ICs5Myw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBtYXRjaGVzQ1NTUHJvcGVydHlOYW1lUHJl
Zml4KGNvbnN0IFN0cmluZ0ltcGwmIHByb3BlcnR5TmFtZSwKIAogICAgIC8vIFRoZSBwcmVmaXgg
d2l0aGluIHRoZSBwcm9wZXJ0eSBuYW1lIG11c3QgYmUgZm9sbG93ZWQgYnkgYSBjYXBpdGFsIGxl
dHRlci4KICAgICAvLyBPdGhlciBjaGFyYWN0ZXJzIGluIHRoZSBwcmVmaXggd2l0aGluIHRoZSBw
cm9wZXJ0eSBuYW1lIG11c3QgYmUgbG93ZXJjYXNlLgotICAgIGlmIChwcm9wZXJ0eU5hbWUubGVu
Z3RoKCkgPCAocHJlZml4TGVuZ3RoICsgMSkpCisgICAgaWYgKHByb3BlcnR5TmFtZS5sZW5ndGgo
KSA8IHByZWZpeExlbmd0aCArIDEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGZvciAo
c2l6ZV90IGkgPSBvZmZzZXQ7IGkgPCBwcmVmaXhMZW5ndGg7ICsraSkgewpAQCAtMTE3LDEwICsx
MDMsMTEgQEAgc3RhdGljIGlubGluZSBib29sIG1hdGNoZXNDU1NQcm9wZXJ0eU5hbWVQcmVmaXgo
Y29uc3QgU3RyaW5nSW1wbCYgcHJvcGVydHlOYW1lLAogCiAgICAgaWYgKCFpc0FTQ0lJVXBwZXIo
cHJvcGVydHlOYW1lW3ByZWZpeExlbmd0aF0pKQogICAgICAgICByZXR1cm4gZmFsc2U7CisKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIFByb3BlcnR5TmFtZVByZWZpeCBnZXRDU1NQcm9w
ZXJ0eU5hbWVQcmVmaXgoY29uc3QgU3RyaW5nSW1wbCYgcHJvcGVydHlOYW1lKQorc3RhdGljIFBy
b3BlcnR5TmFtZVByZWZpeCBwcm9wZXJ0eU5hbWVQcmVmaXgoY29uc3QgU3RyaW5nSW1wbCYgcHJv
cGVydHlOYW1lKQogewogICAgIEFTU0VSVChwcm9wZXJ0eU5hbWUubGVuZ3RoKCkpOwogCkBAIC0x
MzAsMzcgKzExNywzNyBAQCBzdGF0aWMgUHJvcGVydHlOYW1lUHJlZml4IGdldENTU1Byb3BlcnR5
TmFtZVByZWZpeChjb25zdCBTdHJpbmdJbXBsJiBwcm9wZXJ0eU5hbQogI2lmIEVOQUJMRShMRUdB
Q1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykKICAgICBjYXNlICdhJzoKICAgICAgICAgaWYgKFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkubGVnYWN5Q1NTVmVuZG9yUHJlZml4
ZXNFbmFibGVkKCkgJiYgbWF0Y2hlc0NTU1Byb3BlcnR5TmFtZVByZWZpeChwcm9wZXJ0eU5hbWUs
ICJhcHBsZSIpKQotICAgICAgICAgICAgcmV0dXJuIFByb3BlcnR5TmFtZVByZWZpeEFwcGxlOwor
ICAgICAgICAgICAgcmV0dXJuIFByb3BlcnR5TmFtZVByZWZpeDo6QXBwbGU7CiAgICAgICAgIGJy
ZWFrOwogI2VuZGlmCiAgICAgY2FzZSAnYyc6CiAgICAgICAgIGlmIChtYXRjaGVzQ1NTUHJvcGVy
dHlOYW1lUHJlZml4KHByb3BlcnR5TmFtZSwgImNzcyIpKQotICAgICAgICAgICAgcmV0dXJuIFBy
b3BlcnR5TmFtZVByZWZpeENTUzsKKyAgICAgICAgICAgIHJldHVybiBQcm9wZXJ0eU5hbWVQcmVm
aXg6OkNTUzsKICAgICAgICAgYnJlYWs7CiAjaWYgRU5BQkxFKExFR0FDWV9DU1NfVkVORE9SX1BS
RUZJWEVTKQogICAgIGNhc2UgJ2snOgogICAgICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJl
czo6c2hhcmVkRmVhdHVyZXMoKS5sZWdhY3lDU1NWZW5kb3JQcmVmaXhlc0VuYWJsZWQoKSAmJiBt
YXRjaGVzQ1NTUHJvcGVydHlOYW1lUHJlZml4KHByb3BlcnR5TmFtZSwgImtodG1sIikpCi0gICAg
ICAgICAgICByZXR1cm4gUHJvcGVydHlOYW1lUHJlZml4S0hUTUw7CisgICAgICAgICAgICByZXR1
cm4gUHJvcGVydHlOYW1lUHJlZml4OjpLSFRNTDsKICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAg
ICBjYXNlICdlJzoKICAgICAgICAgaWYgKG1hdGNoZXNDU1NQcm9wZXJ0eU5hbWVQcmVmaXgocHJv
cGVydHlOYW1lLCAiZXB1YiIpKQotICAgICAgICAgICAgcmV0dXJuIFByb3BlcnR5TmFtZVByZWZp
eEVwdWI7CisgICAgICAgICAgICByZXR1cm4gUHJvcGVydHlOYW1lUHJlZml4OjpFcHViOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlICdwJzoKICAgICAgICAgaWYgKG1hdGNoZXNDU1NQcm9wZXJ0
eU5hbWVQcmVmaXgocHJvcGVydHlOYW1lLCAicG9zIikpCi0gICAgICAgICAgICByZXR1cm4gUHJv
cGVydHlOYW1lUHJlZml4UG9zOworICAgICAgICAgICAgcmV0dXJuIFByb3BlcnR5TmFtZVByZWZp
eDo6UG9zOwogICAgICAgICBpZiAobWF0Y2hlc0NTU1Byb3BlcnR5TmFtZVByZWZpeChwcm9wZXJ0
eU5hbWUsICJwaXhlbCIpKQotICAgICAgICAgICAgcmV0dXJuIFByb3BlcnR5TmFtZVByZWZpeFBp
eGVsOworICAgICAgICAgICAgcmV0dXJuIFByb3BlcnR5TmFtZVByZWZpeDo6UGl4ZWw7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgJ3cnOgogICAgICAgICBpZiAobWF0Y2hlc0NTU1Byb3BlcnR5
TmFtZVByZWZpeChwcm9wZXJ0eU5hbWUsICJ3ZWJraXQiKSkKLSAgICAgICAgICAgIHJldHVybiBQ
cm9wZXJ0eU5hbWVQcmVmaXhXZWJLaXQ7CisgICAgICAgICAgICByZXR1cm4gUHJvcGVydHlOYW1l
UHJlZml4OjpXZWJLaXQ7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KLSAgICByZXR1cm4gUHJvcGVydHlOYW1lUHJlZml4Tm9uZTsKKyAgICByZXR1
cm4gUHJvcGVydHlOYW1lUHJlZml4OjpOb25lOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgd3Jp
dGVXZWJLaXRQcmVmaXgoY2hhciomIGJ1ZmZlcikKQEAgLTE4NSw3ICsxNzIsMTIgQEAgc3RhdGlj
IGlubGluZSB2b2lkIHdyaXRlRXB1YlByZWZpeChjaGFyKiYgYnVmZmVyKQogICAgICpidWZmZXIr
KyA9ICctJzsKIH0KIAotc3RhdGljIENTU1Byb3BlcnR5SW5mbyBjc3NQcm9wZXJ0eUlERm9ySlND
U1NQcm9wZXJ0eU5hbWUoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK3N0cnVjdCBDU1NQcm9w
ZXJ0eUluZm8geworICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRDsKKyAgICBib29sIGhhZFBp
eGVsT3JQb3NQcmVmaXg7Cit9OworCitzdGF0aWMgQ1NTUHJvcGVydHlJbmZvIHBhcnNlSmF2YVNj
cmlwdENTU1Byb3BlcnR5TmFtZShQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewogICAgIENT
U1Byb3BlcnR5SW5mbyBwcm9wZXJ0eUluZm8gPSB7Q1NTUHJvcGVydHlJbnZhbGlkLCBmYWxzZX07
CiAgICAgYm9vbCBoYWRQaXhlbE9yUG9zUHJlZml4ID0gZmFsc2U7CkBAIC0xOTgsNyArMTkwLDcg
QEAgc3RhdGljIENTU1Byb3BlcnR5SW5mbyBjc3NQcm9wZXJ0eUlERm9ySlNDU1NQcm9wZXJ0eU5h
bWUoUHJvcGVydHlOYW1lIHByb3BlcnR5TmEKICAgICAgICAgcmV0dXJuIHByb3BlcnR5SW5mbzsK
IAogICAgIFN0cmluZyBzdHJpbmdGb3JDYWNoZSA9IFN0cmluZyhwcm9wZXJ0eU5hbWVTdHJpbmcp
OwotICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIENTU1Byb3BlcnR5SW5mbz4gQ1NTUHJvcGVy
dHlJbmZvTWFwOworICAgIHVzaW5nIENTU1Byb3BlcnR5SW5mb01hcCA9IEhhc2hNYXA8U3RyaW5n
LCBDU1NQcm9wZXJ0eUluZm8+OwogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDU1NQcm9wZXJ0
eUluZm9NYXA+IHByb3BlcnR5SW5mb0NhY2hlOwogICAgIHByb3BlcnR5SW5mbyA9IHByb3BlcnR5
SW5mb0NhY2hlLmdldCgpLmdldChzdHJpbmdGb3JDYWNoZSk7CiAgICAgaWYgKHByb3BlcnR5SW5m
by5wcm9wZXJ0eUlEKQpAQCAtMjEzLDM1ICsyMDUsMzUgQEAgc3RhdGljIENTU1Byb3BlcnR5SW5m
byBjc3NQcm9wZXJ0eUlERm9ySlNDU1NQcm9wZXJ0eU5hbWUoUHJvcGVydHlOYW1lIHByb3BlcnR5
TmEKICAgICAvLyBQcmVmaXhlcyBDU1MsIFBpeGVsLCBQb3MgYXJlIGlnbm9yZWQuCiAgICAgLy8g
UHJlZml4ZXMgQXBwbGUsIEtIVE1MIGFuZCBXZWJraXQgYXJlIHRyYW5zcG9zZWQgdG8gIi13ZWJr
aXQtIi4KICAgICAvLyBUaGUgcHJlZml4ICJFcHViIiBiZWNvbWVzICItZXB1Yi0iLgotICAgIHN3
aXRjaCAoZ2V0Q1NTUHJvcGVydHlOYW1lUHJlZml4KCpwcm9wZXJ0eU5hbWVTdHJpbmcpKSB7Ci0g
ICAgY2FzZSBQcm9wZXJ0eU5hbWVQcmVmaXhOb25lOgorICAgIHN3aXRjaCAocHJvcGVydHlOYW1l
UHJlZml4KCpwcm9wZXJ0eU5hbWVTdHJpbmcpKSB7CisgICAgY2FzZSBQcm9wZXJ0eU5hbWVQcmVm
aXg6Ok5vbmU6CiAgICAgICAgIGlmIChpc0FTQ0lJVXBwZXIoKCpwcm9wZXJ0eU5hbWVTdHJpbmcp
WzBdKSkKICAgICAgICAgICAgIHJldHVybiBwcm9wZXJ0eUluZm87CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgUHJvcGVydHlOYW1lUHJlZml4Q1NTOgorICAgIGNhc2UgUHJvcGVydHlOYW1lUHJl
Zml4OjpDU1M6CiAgICAgICAgIGkgKz0gMzsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQcm9w
ZXJ0eU5hbWVQcmVmaXhQaXhlbDoKKyAgICBjYXNlIFByb3BlcnR5TmFtZVByZWZpeDo6UGl4ZWw6
CiAgICAgICAgIGkgKz0gNTsKICAgICAgICAgaGFkUGl4ZWxPclBvc1ByZWZpeCA9IHRydWU7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgUHJvcGVydHlOYW1lUHJlZml4UG9zOgorICAgIGNhc2Ug
UHJvcGVydHlOYW1lUHJlZml4OjpQb3M6CiAgICAgICAgIGkgKz0gMzsKICAgICAgICAgaGFkUGl4
ZWxPclBvc1ByZWZpeCA9IHRydWU7CiAgICAgICAgIGJyZWFrOwogI2lmIEVOQUJMRShMRUdBQ1lf
Q1NTX1ZFTkRPUl9QUkVGSVhFUykKLSAgICBjYXNlIFByb3BlcnR5TmFtZVByZWZpeEFwcGxlOgot
ICAgIGNhc2UgUHJvcGVydHlOYW1lUHJlZml4S0hUTUw6CisgICAgY2FzZSBQcm9wZXJ0eU5hbWVQ
cmVmaXg6OkFwcGxlOgorICAgIGNhc2UgUHJvcGVydHlOYW1lUHJlZml4OjpLSFRNTDoKICAgICAg
ICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkubGVnYWN5
Q1NTVmVuZG9yUHJlZml4ZXNFbmFibGVkKCkpOwogICAgICAgICB3cml0ZVdlYktpdFByZWZpeChi
dWZmZXJQdHIpOwogICAgICAgICBpICs9IDU7CiAgICAgICAgIGJyZWFrOwogI2VuZGlmCi0gICAg
Y2FzZSBQcm9wZXJ0eU5hbWVQcmVmaXhFcHViOgorICAgIGNhc2UgUHJvcGVydHlOYW1lUHJlZml4
OjpFcHViOgogICAgICAgICB3cml0ZUVwdWJQcmVmaXgoYnVmZmVyUHRyKTsKICAgICAgICAgaSAr
PSA0OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFByb3BlcnR5TmFtZVByZWZpeFdlYktpdDoK
KyAgICBjYXNlIFByb3BlcnR5TmFtZVByZWZpeDo6V2ViS2l0OgogICAgICAgICB3cml0ZVdlYktp
dFByZWZpeChidWZmZXJQdHIpOwogICAgICAgICBpICs9IDY7CiAgICAgICAgIGJyZWFrOwpAQCAt
MjU4LDcgKzI1MCw3IEBAIHN0YXRpYyBDU1NQcm9wZXJ0eUluZm8gY3NzUHJvcGVydHlJREZvckpT
Q1NTUHJvcGVydHlOYW1lKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hCiAKICAgICBmb3IgKDsgaSA8
IGxlbmd0aDsgKytpKSB7CiAgICAgICAgIFVDaGFyIGMgPSAoKnByb3BlcnR5TmFtZVN0cmluZylb
aV07Ci0gICAgICAgIGlmICghYyB8fCBjID49IDB4N0YpCisgICAgICAgIGlmICghYyB8fCAhaXNB
U0NJSShjKSkKICAgICAgICAgICAgIHJldHVybiBwcm9wZXJ0eUluZm87IC8vIGlsbGVnYWwgY2hh
cmFjdGVyCiAgICAgICAgIGlmIChpc0FTQ0lJVXBwZXIoYykpIHsKICAgICAgICAgICAgIHNpemVf
dCBidWZmZXJTaXplTGVmdCA9IHN0cmluZ0VuZCAtIGJ1ZmZlclB0cjsKQEAgLTI2Niw3ICsyNTgs
NyBAQCBzdGF0aWMgQ1NTUHJvcGVydHlJbmZvIGNzc1Byb3BlcnR5SURGb3JKU0NTU1Byb3BlcnR5
TmFtZShQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYQogICAgICAgICAgICAgaWYgKHByb3BlcnR5U2l6
ZUxlZnQgPiBidWZmZXJTaXplTGVmdCkKICAgICAgICAgICAgICAgICByZXR1cm4gcHJvcGVydHlJ
bmZvOwogICAgICAgICAgICAgKmJ1ZmZlclB0cisrID0gJy0nOwotICAgICAgICAgICAgKmJ1ZmZl
clB0cisrID0gdG9BU0NJSUxvd2VyKGMpOworICAgICAgICAgICAgKmJ1ZmZlclB0cisrID0gdG9B
U0NJSUxvd2VyVW5jaGVja2VkKGMpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICpidWZm
ZXJQdHIrKyA9IGM7CiAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGJ1
ZmZlclB0ciA8IGJ1ZmZlckVuZCk7CkBAIC0yNzksOSArMjcxLDggQEAgc3RhdGljIENTU1Byb3Bl
cnR5SW5mbyBjc3NQcm9wZXJ0eUlERm9ySlNDU1NQcm9wZXJ0eU5hbWUoUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmEKICAgICBjc3NQcm9wZXJ0eU5hbWVJT1NBbGlhc2luZyhidWZmZXIsIG5hbWUsIG91
dHB1dExlbmd0aCk7CiAjZW5kaWYKIAotICAgIGNvbnN0IFByb3BlcnR5KiBoYXNoVGFibGVFbnRy
eSA9IGZpbmRQcm9wZXJ0eShuYW1lLCBvdXRwdXRMZW5ndGgpOwotICAgIGludCBwcm9wZXJ0eUlE
ID0gaGFzaFRhYmxlRW50cnkgPyBoYXNoVGFibGVFbnRyeS0+aWQgOiAwOwotICAgIGlmIChwcm9w
ZXJ0eUlEKSB7CisgICAgYXV0byogaGFzaFRhYmxlRW50cnkgPSBmaW5kUHJvcGVydHkobmFtZSwg
b3V0cHV0TGVuZ3RoKTsKKyAgICBpZiAoYXV0byBwcm9wZXJ0eUlEID0gaGFzaFRhYmxlRW50cnkg
PyBoYXNoVGFibGVFbnRyeS0+aWQgOiAwKSB7CiAgICAgICAgIHByb3BlcnR5SW5mby5oYWRQaXhl
bE9yUG9zUHJlZml4ID0gaGFkUGl4ZWxPclBvc1ByZWZpeDsKICAgICAgICAgcHJvcGVydHlJbmZv
LnByb3BlcnR5SUQgPSBzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihwcm9wZXJ0eUlEKTsKICAg
ICAgICAgcHJvcGVydHlJbmZvQ2FjaGUuZ2V0KCkuYWRkKHN0cmluZ0ZvckNhY2hlLCBwcm9wZXJ0
eUluZm8pOwpAQCAtMjg5LDc2ICsyODAsNzEgQEAgc3RhdGljIENTU1Byb3BlcnR5SW5mbyBjc3NQ
cm9wZXJ0eUlERm9ySlNDU1NQcm9wZXJ0eU5hbWUoUHJvcGVydHlOYW1lIHByb3BlcnR5TmEKICAg
ICByZXR1cm4gcHJvcGVydHlJbmZvOwogfQogCi1zdGF0aWMgaW5saW5lIEpTVmFsdWUgZ2V0UHJv
cGVydHlWYWx1ZUZhbGxiYWNrKEV4ZWNTdGF0ZSogZXhlYywgSlNDU1NTdHlsZURlY2xhcmF0aW9u
KiB0aGlzT2JqLCB1bnNpZ25lZCBpbmRleCkKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBzdHlsZVBy
b3BlcnR5R2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhp
c09iamVjdCwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBjb25zdCBSZWZQdHI8Q1NTVmFsdWU+
JiB2YWx1ZSkKIHsKLSAgICAvLyBJZiB0aGUgcHJvcGVydHkgaXMgYSBzaG9ydGhhbmQgcHJvcGVy
dHkgKHN1Y2ggYXMgInBhZGRpbmciKSwKLSAgICAvLyBpdCBjYW4gb25seSBiZSBhY2Nlc3NlZCB1
c2luZyBnZXRQcm9wZXJ0eVZhbHVlLgotICAgIHJldHVybiBqc1N0cmluZ1dpdGhDYWNoZShleGVj
LCB0aGlzT2JqLT53cmFwcGVkKCkuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKHN0YXRpY19jYXN0
PENTU1Byb3BlcnR5SUQ+KGluZGV4KSkpOworICAgIGlmICh2YWx1ZSkKKyAgICAgICAgcmV0dXJu
IGpzU3RyaW5nT3JOdWxsKCZzdGF0ZSwgdmFsdWUtPmNzc1RleHQoKSk7CisgICAgLy8gSWYgdGhl
IHByb3BlcnR5IGlzIGEgc2hvcnRoYW5kIHByb3BlcnR5IChzdWNoIGFzICJwYWRkaW5nIiksIGl0
IGNhbiBvbmx5IGJlIGFjY2Vzc2VkIHVzaW5nIGdldFByb3BlcnR5VmFsdWUuCisgICAgcmV0dXJu
IGpzU3RyaW5nV2l0aENhY2hlKCZzdGF0ZSwgdGhpc09iamVjdC53cmFwcGVkKCkuZ2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKHByb3BlcnR5SUQpKTsKIH0KIAotc3RhdGljIGlubGluZSBKU1ZhbHVl
IGNzc1Byb3BlcnR5R2V0dGVyUGl4ZWxPclBvc1ByZWZpeChFeGVjU3RhdGUqIGV4ZWMsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiogdGhpc09iaiwgdW5zaWduZWQgcHJvcGVydHlJRCkKK3N0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBzdHlsZVByb3BlcnR5R2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTQ1NT
U3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEKQog
ewotICAgIC8vIFNldCB1cCBwaXhlbE9yUG9zIGJvb2xlYW4gdG8gaGFuZGxlIHRoZSBmYWN0IHRo
YXQKLSAgICAvLyBwaXhlbFRvcCByZXR1cm5zICJDU1MgVG9wIiBhcyBudW1iZXIgdmFsdWUgaW4g
dW5pdCBwaXhlbHMKLSAgICAvLyBwb3NUb3AgcmV0dXJucyAiQ1NTIHRvcCIgYXMgbnVtYmVyIHZh
bHVlIGluIHVuaXQgcGl4ZWxzIF9pZl8gaXRzIGEKLSAgICAvLyBwb3NpdGlvbmVkIGVsZW1lbnQu
IGlmIGl0IGlzIG5vdCBhIHBvc2l0aW9uZWQgZWxlbWVudCwgcmV0dXJuIDAKLSAgICAvLyBmcm9t
IE1TSUUgZG9jdW1lbnRhdGlvbiBGSVhNRTogSU1QTEVNRU5UIFRIQVQgKERpcmspCi0gICAgUmVm
UHRyPENTU1ZhbHVlPiB2ID0gdGhpc09iai0+d3JhcHBlZCgpLmdldFByb3BlcnR5Q1NTVmFsdWVJ
bnRlcm5hbChzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihwcm9wZXJ0eUlEKSk7Ci0gICAgaWYg
KHYpIHsKLSAgICAgICAgaWYgKHYtPmlzUHJpbWl0aXZlVmFsdWUoKSkKLSAgICAgICAgICAgIHJl
dHVybiBqc051bWJlcihzdGF0aWNfcG9pbnRlcl9jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2KS0+
Z2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKSk7Ci0gICAgICAgIHJldHVy
biBqc1N0cmluZ09yTnVsbChleGVjLCB2LT5jc3NUZXh0KCkpOwotICAgIH0KLQotICAgIHJldHVy
biBnZXRQcm9wZXJ0eVZhbHVlRmFsbGJhY2soZXhlYywgdGhpc09iaiwgcHJvcGVydHlJRCk7Cisg
ICAgcmV0dXJuIHN0eWxlUHJvcGVydHlHZXR0ZXIoc3RhdGUsIHRoaXNPYmplY3QsIHByb3BlcnR5
SUQsIHRoaXNPYmplY3Qud3JhcHBlZCgpLmdldFByb3BlcnR5Q1NTVmFsdWVJbnRlcm5hbChwcm9w
ZXJ0eUlEKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBjc3NQcm9wZXJ0eUdldHRlcihF
eGVjU3RhdGUqIGV4ZWMsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiogdGhpc09iaiwgdW5zaWduZWQg
cHJvcGVydHlJRCkKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBzdHlsZVByb3BlcnR5R2V0dGVyUGl4
ZWxPclBvc1ByZWZpeChFeGVjU3RhdGUmIHN0YXRlLCBKU0NTU1N0eWxlRGVjbGFyYXRpb24mIHRo
aXNPYmplY3QsIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkKIHsKLSAgICBSZWZQdHI8Q1NTVmFs
dWU+IHYgPSB0aGlzT2JqLT53cmFwcGVkKCkuZ2V0UHJvcGVydHlDU1NWYWx1ZUludGVybmFsKHN0
YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+KHByb3BlcnR5SUQpKTsKLSAgICBpZiAodikKLSAgICAg
ICAgcmV0dXJuIGpzU3RyaW5nT3JOdWxsKGV4ZWMsIHYtPmNzc1RleHQoKSk7CisgICAgLy8gQ2Fs
bCB0aGlzIHZlcnNpb24gb2YgdGhlIGdldHRlciBzbyB0aGF0LCBlLmcuLCBwaXhlbFRvcCByZXR1
cm5zIHRvcCBhcyBhIG51bWJlcgorICAgIC8vIGluIHBpeGVsIHVuaXRzIGFuZCBwb3NUb3Agc2hv
dWxkIGRvZXMgdGhlIHNhbWUgX2lmXyB0aGlzIGlzIGEgcG9zaXRpb25lZCBlbGVtZW50LgorICAg
IC8vIEZJWE1FOiBJZiBub3QgYSBwb3NpdGlvbmVkIGVsZW1lbnQsIE1TSUUgZG9jdW1lbnRhdGlv
biBzYXlzIHBvc1RvcCBzaG91bGQgcmV0dXJuIDA7IHRoaXMgcnVsZSBpcyBub3QgaW1wbGVtZW50
ZWQuCisgICAgYXV0byB2YWx1ZSA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLmdldFByb3BlcnR5Q1NT
VmFsdWVJbnRlcm5hbChwcm9wZXJ0eUlEKTsKKyAgICBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+
KHZhbHVlLmdldCgpKSkKKyAgICAgICAgcmV0dXJuIGpzTnVtYmVyKGRvd25jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlPigqdmFsdWUpLmZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCkp
OworICAgIHJldHVybiBzdHlsZVByb3BlcnR5R2V0dGVyKHN0YXRlLCB0aGlzT2JqZWN0LCBwcm9w
ZXJ0eUlELCB2YWx1ZSk7Cit9CiAKLSAgICByZXR1cm4gZ2V0UHJvcGVydHlWYWx1ZUZhbGxiYWNr
KGV4ZWMsIHRoaXNPYmosIHByb3BlcnR5SUQpOworc3RhdGljIGlubGluZSBKU1ZhbHVlIHN0eWxl
UHJvcGVydHlHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNDU1NTdHlsZURlY2xhcmF0aW9uJiB0
aGlzT2JqZWN0LCBjb25zdCBDU1NQcm9wZXJ0eUluZm8mIHByb3BlcnR5SW5mbykKK3sKKyAgICBp
ZiAocHJvcGVydHlJbmZvLmhhZFBpeGVsT3JQb3NQcmVmaXgpCisgICAgICAgIHJldHVybiBzdHls
ZVByb3BlcnR5R2V0dGVyUGl4ZWxPclBvc1ByZWZpeChzdGF0ZSwgdGhpc09iamVjdCwgcHJvcGVy
dHlJbmZvLnByb3BlcnR5SUQpOworICAgIHJldHVybiBzdHlsZVByb3BlcnR5R2V0dGVyKHN0YXRl
LCB0aGlzT2JqZWN0LCBwcm9wZXJ0eUluZm8ucHJvcGVydHlJRCk7CiB9CiAKLWJvb2wgSlNDU1NT
dHlsZURlY2xhcmF0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZShFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eUlkZW50aWZpZXIsIFByb3BlcnR5U2xvdCYgc2xvdCkK
K2Jvb2wgSlNDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0ZShF
eGVjU3RhdGUqIHN0YXRlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
IHNsb3QpCiB7Ci0gICAgQ1NTUHJvcGVydHlJbmZvIHByb3BlcnR5SW5mbyA9IGNzc1Byb3BlcnR5
SURGb3JKU0NTU1Byb3BlcnR5TmFtZShwcm9wZXJ0eUlkZW50aWZpZXIpOworICAgIGF1dG8gcHJv
cGVydHlJbmZvID0gcGFyc2VKYXZhU2NyaXB0Q1NTUHJvcGVydHlOYW1lKHByb3BlcnR5TmFtZSk7
CiAgICAgaWYgKCFwcm9wZXJ0eUluZm8ucHJvcGVydHlJRCkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgaWYgKHByb3BlcnR5SW5mby5oYWRQaXhlbE9yUG9zUHJlZml4KQotICAgICAgICBz
bG90LnNldFZhbHVlKHRoaXMsIERvbnREZWxldGUsIGNzc1Byb3BlcnR5R2V0dGVyUGl4ZWxPclBv
c1ByZWZpeChleGVjLCB0aGlzLCBwcm9wZXJ0eUluZm8ucHJvcGVydHlJRCkpOwotICAgIGVsc2UK
LSAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzLCBEb250RGVsZXRlLCBjc3NQcm9wZXJ0eUdldHRl
cihleGVjLCB0aGlzLCBwcm9wZXJ0eUluZm8ucHJvcGVydHlJRCkpOworICAgIHNsb3Quc2V0VmFs
dWUodGhpcywgRG9udERlbGV0ZSwgc3R5bGVQcm9wZXJ0eUdldHRlcigqc3RhdGUsICp0aGlzLCBw
cm9wZXJ0eUluZm8pKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBKU0NTU1N0eWxlRGVj
bGFyYXRpb246OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiwgYm9vbCYgcHV0UmVzdWx0
KQorYm9vbCBKU0NTU1N0eWxlRGVjbGFyYXRpb246OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSogc3Rh
dGUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5
U2xvdCYsIGJvb2wmIHB1dFJlc3VsdCkKIHsKLSAgICBDU1NQcm9wZXJ0eUluZm8gcHJvcGVydHlJ
bmZvID0gY3NzUHJvcGVydHlJREZvckpTQ1NTUHJvcGVydHlOYW1lKHByb3BlcnR5TmFtZSk7Cisg
ICAgYXV0byBwcm9wZXJ0eUluZm8gPSBwYXJzZUphdmFTY3JpcHRDU1NQcm9wZXJ0eU5hbWUocHJv
cGVydHlOYW1lKTsKICAgICBpZiAoIXByb3BlcnR5SW5mby5wcm9wZXJ0eUlEKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBTdHJpbmcgcHJvcFZhbHVlID0gdmFsdWVUb1N0cmluZ1RyZWF0
aW5nTnVsbEFzRW1wdHlTdHJpbmcoZXhlYywgdmFsdWUpOworICAgIGF1dG8gcHJvcGVydHlWYWx1
ZSA9IHZhbHVlVG9TdHJpbmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKHN0YXRlLCB2YWx1ZSk7
CiAgICAgaWYgKHByb3BlcnR5SW5mby5oYWRQaXhlbE9yUG9zUHJlZml4KQotICAgICAgICBwcm9w
VmFsdWUuYXBwZW5kKCJweCIpOworICAgICAgICBwcm9wZXJ0eVZhbHVlLmFwcGVuZCgicHgiKTsK
IAogICAgIGJvb2wgaW1wb3J0YW50ID0gZmFsc2U7CiAgICAgaWYgKFNldHRpbmdzOjpzaG91bGRS
ZXNwZWN0UHJpb3JpdHlJbkNTU0F0dHJpYnV0ZVNldHRlcnMoKSkgewotICAgICAgICBzaXplX3Qg
aW1wb3J0YW50SW5kZXggPSBwcm9wVmFsdWUuZmluZCgiIWltcG9ydGFudCIsIDAsIGZhbHNlKTsK
LSAgICAgICAgaWYgKGltcG9ydGFudEluZGV4ICE9IG5vdEZvdW5kKSB7CisgICAgICAgIGF1dG8g
aW1wb3J0YW50SW5kZXggPSBwcm9wZXJ0eVZhbHVlLmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZSgiIWlt
cG9ydGFudCIpOworICAgICAgICBpZiAoaW1wb3J0YW50SW5kZXggJiYgaW1wb3J0YW50SW5kZXgg
IT0gbm90Rm91bmQpIHsKICAgICAgICAgICAgIGltcG9ydGFudCA9IHRydWU7Ci0gICAgICAgICAg
ICBwcm9wVmFsdWUgPSBwcm9wVmFsdWUubGVmdChpbXBvcnRhbnRJbmRleCAtIDEpOworICAgICAg
ICAgICAgcHJvcGVydHlWYWx1ZSA9IHByb3BlcnR5VmFsdWUubGVmdChpbXBvcnRhbnRJbmRleCAt
IDEpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAg
Q1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEID0gc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4ocHJv
cGVydHlJbmZvLnByb3BlcnR5SUQpOwotICAgIHB1dFJlc3VsdCA9IHdyYXBwZWQoKS5zZXRQcm9w
ZXJ0eUludGVybmFsKHByb3BlcnR5SUQsIHByb3BWYWx1ZSwgaW1wb3J0YW50LCBlYyk7Ci0gICAg
c2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKLQorICAgIGF1dG8gc2V0UHJvcGVydHlJbnRlcm5h
bFJlc3VsdCA9IHdyYXBwZWQoKS5zZXRQcm9wZXJ0eUludGVybmFsKHByb3BlcnR5SW5mby5wcm9w
ZXJ0eUlELCBwcm9wZXJ0eVZhbHVlLCBpbXBvcnRhbnQpOworICAgIGlmIChzZXRQcm9wZXJ0eUlu
dGVybmFsUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgIHByb3BhZ2F0ZUV4Y2VwdGlv
bigqc3RhdGUsIHNldFByb3BlcnR5SW50ZXJuYWxSZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBwdXRSZXN1bHQgPSBzZXRQcm9wZXJ0
eUludGVybmFsUmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwogICAgIHJldHVybiB0cnVlOwog
fQogCkBAIC0zNzAsNDIgKzM1NiwzNyBAQCBKU1ZhbHVlIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6
Z2V0UHJvcGVydHlDU1NWYWx1ZShFeGVjU3RhdGUmIHN0YXRlKQogICAgIGlmIChVTkxJS0VMWShz
dGF0ZS5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9u
KCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKCZzdGF0ZSkpOwog
Ci0gICAgU3RyaW5nIHByb3BlcnR5TmFtZSA9IHN0YXRlLnVuY2hlY2tlZEFyZ3VtZW50KDApLnRv
V1RGU3RyaW5nKCZzdGF0ZSk7CisgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBzdGF0ZS51bmNoZWNr
ZWRBcmd1bWVudCgwKS50b1dURlN0cmluZygmc3RhdGUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIEpTVmFsdWUoKSk7CiAKLSAgICBSZWZQdHI8Q1NTVmFsdWU+IGNzc1ZhbHVlID0g
d3JhcHBlZCgpLmdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydHlOYW1lKTsKLSAgICBpZiAoIWNz
c1ZhbHVlKQorICAgIGF1dG8gdmFsdWUgPSB3cmFwcGVkKCkuZ2V0UHJvcGVydHlDU1NWYWx1ZShw
cm9wZXJ0eU5hbWUpOworICAgIGlmICghdmFsdWUpCiAgICAgICAgIHJldHVybiBqc051bGwoKTsK
IAotICAgIGdsb2JhbE9iamVjdCgpLT53b3JsZCgpLm1fY3NzVmFsdWVSb290cy5hZGQoY3NzVmFs
dWUuZ2V0KCksIHJvb3QoJndyYXBwZWQoKSkpOyAvLyBCYWxhbmNlZCBieSBKU0NTU1ZhbHVlT3du
ZXI6OmZpbmFsaXplKCkuCi0gICAgcmV0dXJuIHRvSlMoJnN0YXRlLCBnbG9iYWxPYmplY3QoKSwg
KmNzc1ZhbHVlKTsKKyAgICBnbG9iYWxPYmplY3QoKS0+d29ybGQoKS5tX2Nzc1ZhbHVlUm9vdHMu
YWRkKHZhbHVlLmdldCgpLCByb290KCZ3cmFwcGVkKCkpKTsgLy8gQmFsYW5jZWQgYnkgSlNDU1NW
YWx1ZU93bmVyOjpmaW5hbGl6ZSgpLgorICAgIHJldHVybiB0b0pTKCZzdGF0ZSwgZ2xvYmFsT2Jq
ZWN0KCksICp2YWx1ZSk7CiB9CiAKLXZvaWQgSlNDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRPd25Q
cm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlO
YW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQordm9pZCBKU0NT
U1N0eWxlRGVjbGFyYXRpb246OmdldE93blByb3BlcnR5TmFtZXMoSlNPYmplY3QqIG9iamVjdCwg
RXhlY1N0YXRlKiBzdGF0ZSwgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1l
cmF0aW9uTW9kZSBtb2RlKQogewotICAgIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiogdGhpc09iamVj
dCA9IGpzQ2FzdDxKU0NTU1N0eWxlRGVjbGFyYXRpb24qPihvYmplY3QpOwotICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKLQotICAgIHVuc2lnbmVkIGxl
bmd0aCA9IHRoaXNPYmplY3QtPndyYXBwZWQoKS5sZW5ndGgoKTsKLSAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCi0gICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50
aWZpZXI6OmZyb20oZXhlYywgaSkpOwotCi0gICAgc3RhdGljIElkZW50aWZpZXIqIHByb3BlcnR5
SWRlbnRpZmllcnMgPSAwOwotICAgIGlmICghcHJvcGVydHlJZGVudGlmaWVycykgewotICAgICAg
ICBWZWN0b3I8U3RyaW5nLCBudW1DU1NQcm9wZXJ0aWVzPiBqc1Byb3BlcnR5TmFtZXM7Ci0gICAg
ICAgIGZvciAoaW50IGlkID0gZmlyc3RDU1NQcm9wZXJ0eTsgaWQgPCBmaXJzdENTU1Byb3BlcnR5
ICsgbnVtQ1NTUHJvcGVydGllczsgKytpZCkKLSAgICAgICAgICAgIGpzUHJvcGVydHlOYW1lcy5h
cHBlbmQoZ2V0SlNQcm9wZXJ0eU5hbWUoc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4oaWQpKSk7
Ci0gICAgICAgIHN0ZDo6c29ydChqc1Byb3BlcnR5TmFtZXMuYmVnaW4oKSwganNQcm9wZXJ0eU5h
bWVzLmVuZCgpLCBXVEY6OmNvZGVQb2ludENvbXBhcmVMZXNzVGhhbik7Ci0KLSAgICAgICAgcHJv
cGVydHlJZGVudGlmaWVycyA9IG5ldyBJZGVudGlmaWVyW251bUNTU1Byb3BlcnRpZXNdOworICAg
IHN0YXRpYyBjb25zdCBJZGVudGlmaWVyKiBjb25zdCBjc3NQcm9wZXJ0eU5hbWVzID0gW3N0YXRl
XSB7CisgICAgICAgIFN0cmluZyBuYW1lc1tudW1DU1NQcm9wZXJ0aWVzXTsKICAgICAgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBudW1DU1NQcm9wZXJ0aWVzOyArK2kpCi0gICAgICAgICAgICBwcm9w
ZXJ0eUlkZW50aWZpZXJzW2ldID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBqc1Byb3Bl
cnR5TmFtZXNbaV0pOwotICAgIH0KKyAgICAgICAgICAgIG5hbWVzW2ldID0gZ2V0SlNQcm9wZXJ0
eU5hbWUoc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4oZmlyc3RDU1NQcm9wZXJ0eSArIGkpKTsK
KyAgICAgICAgc3RkOjpzb3J0KCZuYW1lc1swXSwgJm5hbWVzW251bUNTU1Byb3BlcnRpZXNdLCBX
VEY6OmNvZGVQb2ludENvbXBhcmVMZXNzVGhhbik7CisgICAgICAgIGF1dG8qIGlkZW50aWZpZXJz
ID0gbmV3IElkZW50aWZpZXJbbnVtQ1NTUHJvcGVydGllc107CisgICAgICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgbnVtQ1NTUHJvcGVydGllczsgKytpKQorICAgICAgICAgICAgaWRlbnRpZmllcnNb
aV0gPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHN0YXRlLCBuYW1lc1tpXSk7CisgICAgICAgIHJl
dHVybiBpZGVudGlmaWVyczsKKyAgICB9KCk7CiAKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBqc0Nh
c3Q8SlNDU1NTdHlsZURlY2xhcmF0aW9uKj4ob2JqZWN0KS0+d3JhcHBlZCgpLmxlbmd0aCgpOwor
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKKyAgICAgICAgcHJvcGVy
dHlOYW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbShzdGF0ZSwgaSkpOwogICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgbnVtQ1NTUHJvcGVydGllczsgKytpKQotICAgICAgICBwcm9wZXJ0eU5hbWVzLmFk
ZChwcm9wZXJ0eUlkZW50aWZpZXJzW2ldKTsKKyAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoY3Nz
UHJvcGVydHlOYW1lc1tpXSk7CiAKLSAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNP
YmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOworICAgIEJhc2U6OmdldE93blByb3Bl
cnR5TmFtZXMob2JqZWN0LCBzdGF0ZSwgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NQmluZGluZy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5n
LmgKaW5kZXggODNkMzA2MWRmNmE2ZjFjYTc1ZWY4N2UwYjdmYzdhYjE0YzExNDFlNS4uZmUzY2E1
NjRlYWYzY2RjYzc4ODQxYjk4OWRlZDQyYzlhNmMyMWRjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01CaW5kaW5nLmgKQEAgLTk2NSw0ICs5NjUsMTMgQEAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTTnVtYmVyKEpTQzo6RXhlY1N0YXRlJiBz
dGF0ZSwgSlNDOjoKICAgICByZXR1cm4gSlNDOjpqc051bWJlcih2YWx1ZS5yZWxlYXNlUmV0dXJu
VmFsdWUoKSk7CiB9CiAKK2lubGluZSBKU0M6OkpTVmFsdWUgdG9KU1N0cmluZyhKU0M6OkV4ZWNT
dGF0ZSYgc3RhdGUsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSwgRXhjZXB0aW9uT3I8U3Ry
aW5nPiYmIHZhbHVlKQoreworICAgIGlmIChVTkxJS0VMWSh2YWx1ZS5oYXNFeGNlcHRpb24oKSkp
IHsKKyAgICAgICAgcHJvcGFnYXRlRXhjZXB0aW9uKHN0YXRlLCB0aHJvd1Njb3BlLCB2YWx1ZS5y
ZWxlYXNlRXhjZXB0aW9uKCkpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKyAgICByZXR1
cm4gSlNDOjpqc1N0cmluZ1dpdGhDYWNoZSgmc3RhdGUsIHZhbHVlLnJlbGVhc2VSZXR1cm5WYWx1
ZSgpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0Jhc2ljU2hhcGVGdW5jdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0Jh
c2ljU2hhcGVGdW5jdGlvbnMuY3BwCmluZGV4IDRjNDdlMTMxMTZkZWJkMTQ4MDM3ODE4MWE2Y2U0
NzFmNTNlYWJiMTYuLjA4ODY0ZmExYTY4ZTQxYWM3ZWRjZGZkZTdkYjRhYWQwYjFmNDBlMTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9CYXNpY1NoYXBlRnVuY3Rpb25zLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQmFzaWNTaGFwZUZ1bmN0aW9ucy5jcHAKQEAgLTE0Niw3ICsx
NDYsNyBAQCBzdGF0aWMgTGVuZ3RoU2l6ZSBjb252ZXJ0VG9MZW5ndGhTaXplKGNvbnN0IENTU1Rv
TGVuZ3RoQ29udmVyc2lvbkRhdGEmIGNvbnZlcnNpbwogICAgIGlmICghdmFsdWUpCiAgICAgICAg
IHJldHVybiBMZW5ndGhTaXplKExlbmd0aCgwLCBGaXhlZCksIExlbmd0aCgwLCBGaXhlZCkpOwog
Ci0gICAgUGFpciogcGFpciA9IHZhbHVlLT5nZXRQYWlyVmFsdWUoKTsKKyAgICBQYWlyKiBwYWly
ID0gdmFsdWUtPnBhaXJWYWx1ZSgpOwogICAgIHJldHVybiBMZW5ndGhTaXplKGNvbnZlcnRUb0xl
bmd0aChjb252ZXJzaW9uRGF0YSwgcGFpci0+Zmlyc3QoKSksIGNvbnZlcnRUb0xlbmd0aChjb252
ZXJzaW9uRGF0YSwgcGFpci0+c2Vjb25kKCkpKTsKIH0KIApAQCAtMTU5LDkgKzE1OSw5IEBAIHN0
YXRpYyBCYXNpY1NoYXBlQ2VudGVyQ29vcmRpbmF0ZSBjb252ZXJ0VG9DZW50ZXJDb29yZGluYXRl
KGNvbnN0IENTU1RvTGVuZ3RoQ29uCiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAga2V5d29yZCA9
IENTU1ZhbHVlQ2VudGVyOwogICAgIGVsc2UgaWYgKHZhbHVlLT5pc1ZhbHVlSUQoKSkKLSAgICAg
ICAga2V5d29yZCA9IHZhbHVlLT5nZXRWYWx1ZUlEKCk7Ci0gICAgZWxzZSBpZiAoUGFpciogcGFp
ciA9IHZhbHVlLT5nZXRQYWlyVmFsdWUoKSkgewotICAgICAgICBrZXl3b3JkID0gcGFpci0+Zmly
c3QoKS0+Z2V0VmFsdWVJRCgpOworICAgICAgICBrZXl3b3JkID0gdmFsdWUtPnZhbHVlSUQoKTsK
KyAgICBlbHNlIGlmIChQYWlyKiBwYWlyID0gdmFsdWUtPnBhaXJWYWx1ZSgpKSB7CisgICAgICAg
IGtleXdvcmQgPSBwYWlyLT5maXJzdCgpLT52YWx1ZUlEKCk7CiAgICAgICAgIG9mZnNldCA9IGNv
bnZlcnRUb0xlbmd0aChjb252ZXJzaW9uRGF0YSwgcGFpci0+c2Vjb25kKCkpOwogICAgIH0gZWxz
ZQogICAgICAgICBvZmZzZXQgPSBjb252ZXJ0VG9MZW5ndGgoY29udmVyc2lvbkRhdGEsIHZhbHVl
KTsKQEAgLTE5NCw3ICsxOTQsNyBAQCBzdGF0aWMgQmFzaWNTaGFwZVJhZGl1cyBjc3NWYWx1ZVRv
QmFzaWNTaGFwZVJhZGl1cyhjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYQogICAgICAgICBy
ZXR1cm4gQmFzaWNTaGFwZVJhZGl1cyhCYXNpY1NoYXBlUmFkaXVzOjpDbG9zZXN0U2lkZSk7CiAK
ICAgICBpZiAocmFkaXVzLT5pc1ZhbHVlSUQoKSkgewotICAgICAgICBzd2l0Y2ggKHJhZGl1cy0+
Z2V0VmFsdWVJRCgpKSB7CisgICAgICAgIHN3aXRjaCAocmFkaXVzLT52YWx1ZUlEKCkpIHsKICAg
ICAgICAgY2FzZSBDU1NWYWx1ZUNsb3Nlc3RTaWRlOgogICAgICAgICAgICAgcmV0dXJuIEJhc2lj
U2hhcGVSYWRpdXMoQmFzaWNTaGFwZVJhZGl1czo6Q2xvc2VzdFNpZGUpOwogICAgICAgICBjYXNl
IENTU1ZhbHVlRmFydGhlc3RTaWRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0Jhc2ljU2hhcGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5jcHAK
aW5kZXggN2U5Y2U3MmVlOTFkZGFiN2VjZTBlOTRiYmI0ODdhMjMwYjY2OGQ1OS4uZTQxMjU5NWI4
ZjY2OTU0Y2YyMDRmNGM2YjdiNDIyZjFhZTQwMjUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFz
aWNTaGFwZXMuY3BwCkBAIC00NSw4ICs0NSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3Rh
dGljIFN0cmluZyBzZXJpYWxpemVQb3NpdGlvbk9mZnNldChjb25zdCBQYWlyJiBvZmZzZXQsIGNv
bnN0IFBhaXImIG90aGVyKQogewotICAgIGlmICgob2Zmc2V0LmZpcnN0KCktPmdldFZhbHVlSUQo
KSA9PSBDU1NWYWx1ZUxlZnQgJiYgb3RoZXIuZmlyc3QoKS0+Z2V0VmFsdWVJRCgpID09IENTU1Zh
bHVlVG9wKQotICAgICAgICB8fCAob2Zmc2V0LmZpcnN0KCktPmdldFZhbHVlSUQoKSA9PSBDU1NW
YWx1ZVRvcCAmJiBvdGhlci5maXJzdCgpLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVMZWZ0KSkK
KyAgICBpZiAoKG9mZnNldC5maXJzdCgpLT52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVMZWZ0ICYmIG90
aGVyLmZpcnN0KCktPnZhbHVlSUQoKSA9PSBDU1NWYWx1ZVRvcCkKKyAgICAgICAgfHwgKG9mZnNl
dC5maXJzdCgpLT52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVUb3AgJiYgb3RoZXIuZmlyc3QoKS0+dmFs
dWVJRCgpID09IENTU1ZhbHVlTGVmdCkpCiAgICAgICAgIHJldHVybiBvZmZzZXQuc2Vjb25kKCkt
PmNzc1RleHQoKTsKICAgICByZXR1cm4gb2Zmc2V0LmNzc1RleHQoKTsKIH0KQEAgLTU5LDkgKzU5
LDkgQEAgc3RhdGljIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gYnVpbGRTZXJpYWxpemFibGVQb3Np
dGlvbk9mZnNldChDU1NQcmltaXRpdmVWYWx1ZSoKICAgICBpZiAoIW9mZnNldCkKICAgICAgICAg
c2lkZSA9IENTU1ZhbHVlQ2VudGVyOwogICAgIGVsc2UgaWYgKG9mZnNldC0+aXNWYWx1ZUlEKCkp
Ci0gICAgICAgIHNpZGUgPSBvZmZzZXQtPmdldFZhbHVlSUQoKTsKLSAgICBlbHNlIGlmIChQYWly
KiBwYWlyID0gb2Zmc2V0LT5nZXRQYWlyVmFsdWUoKSkgewotICAgICAgICBzaWRlID0gcGFpci0+
Zmlyc3QoKS0+Z2V0VmFsdWVJRCgpOworICAgICAgICBzaWRlID0gb2Zmc2V0LT52YWx1ZUlEKCk7
CisgICAgZWxzZSBpZiAoUGFpciogcGFpciA9IG9mZnNldC0+cGFpclZhbHVlKCkpIHsKKyAgICAg
ICAgc2lkZSA9IHBhaXItPmZpcnN0KCktPnZhbHVlSUQoKTsKICAgICAgICAgYW1vdW50ID0gcGFp
ci0+c2Vjb25kKCk7CiAgICAgfSBlbHNlCiAgICAgICAgIGFtb3VudCA9IG9mZnNldDsKQEAgLTcz
LDggKzczLDggQEAgc3RhdGljIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gYnVpbGRTZXJpYWxpemFi
bGVQb3NpdGlvbk9mZnNldChDU1NQcmltaXRpdmVWYWx1ZSoKICAgICB9IGVsc2UgaWYgKChzaWRl
ID09IENTU1ZhbHVlUmlnaHQgfHwgc2lkZSA9PSBDU1NWYWx1ZUJvdHRvbSkKICAgICAgICAgJiYg
YW1vdW50LT5pc1BlcmNlbnRhZ2UoKSkgewogICAgICAgICBzaWRlID0gZGVmYXVsdFNpZGU7Ci0g
ICAgICAgIGFtb3VudCA9IGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShMZW5ndGgoMTAwIC0gYW1v
dW50LT5nZXRGbG9hdFZhbHVlKCksIFBlcmNlbnQpKTsKLSAgICB9IGVsc2UgaWYgKGFtb3VudC0+
aXNMZW5ndGgoKSAmJiAhYW1vdW50LT5nZXRGbG9hdFZhbHVlKCkpIHsKKyAgICAgICAgYW1vdW50
ID0gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKExlbmd0aCgxMDAgLSBhbW91bnQtPmZsb2F0VmFs
dWUoKSwgUGVyY2VudCkpOworICAgIH0gZWxzZSBpZiAoYW1vdW50LT5pc0xlbmd0aCgpICYmICFh
bW91bnQtPmZsb2F0VmFsdWUoKSkgewogICAgICAgICBpZiAoc2lkZSA9PSBDU1NWYWx1ZVJpZ2h0
IHx8IHNpZGUgPT0gQ1NTVmFsdWVCb3R0b20pCiAgICAgICAgICAgICBhbW91bnQgPSBjc3NWYWx1
ZVBvb2wuY3JlYXRlVmFsdWUoTGVuZ3RoKDEwMCwgUGVyY2VudCkpOwogICAgICAgICBlbHNlCkBA
IC0xMTQsMTIgKzExNCwxMiBAQCBTdHJpbmcgQ1NTQmFzaWNTaGFwZUNpcmNsZTo6Y3NzVGV4dCgp
IGNvbnN0CiAgICAgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBub3JtYWxpemVkQ1kgPSBidWlsZFNl
cmlhbGl6YWJsZVBvc2l0aW9uT2Zmc2V0KG1fY2VudGVyWS5nZXQoKSwgQ1NTVmFsdWVUb3ApOwog
CiAgICAgU3RyaW5nIHJhZGl1czsKLSAgICBpZiAobV9yYWRpdXMgJiYgbV9yYWRpdXMtPmdldFZh
bHVlSUQoKSAhPSBDU1NWYWx1ZUNsb3Nlc3RTaWRlKQorICAgIGlmIChtX3JhZGl1cyAmJiBtX3Jh
ZGl1cy0+dmFsdWVJRCgpICE9IENTU1ZhbHVlQ2xvc2VzdFNpZGUpCiAgICAgICAgIHJhZGl1cyA9
IG1fcmFkaXVzLT5jc3NUZXh0KCk7CiAKICAgICByZXR1cm4gYnVpbGRDaXJjbGVTdHJpbmcocmFk
aXVzLAotICAgICAgICBzZXJpYWxpemVQb3NpdGlvbk9mZnNldCgqbm9ybWFsaXplZENYLT5nZXRQ
YWlyVmFsdWUoKSwgKm5vcm1hbGl6ZWRDWS0+Z2V0UGFpclZhbHVlKCkpLAotICAgICAgICBzZXJp
YWxpemVQb3NpdGlvbk9mZnNldCgqbm9ybWFsaXplZENZLT5nZXRQYWlyVmFsdWUoKSwgKm5vcm1h
bGl6ZWRDWC0+Z2V0UGFpclZhbHVlKCkpKTsKKyAgICAgICAgc2VyaWFsaXplUG9zaXRpb25PZmZz
ZXQoKm5vcm1hbGl6ZWRDWC0+cGFpclZhbHVlKCksICpub3JtYWxpemVkQ1ktPnBhaXJWYWx1ZSgp
KSwKKyAgICAgICAgc2VyaWFsaXplUG9zaXRpb25PZmZzZXQoKm5vcm1hbGl6ZWRDWS0+cGFpclZh
bHVlKCksICpub3JtYWxpemVkQ1gtPnBhaXJWYWx1ZSgpKSk7CiB9CiAKIGJvb2wgQ1NTQmFzaWNT
aGFwZUNpcmNsZTo6ZXF1YWxzKGNvbnN0IENTU0Jhc2ljU2hhcGUmIHNoYXBlKSBjb25zdApAQCAt
MTczLDExICsxNzMsMTEgQEAgU3RyaW5nIENTU0Jhc2ljU2hhcGVFbGxpcHNlOjpjc3NUZXh0KCkg
Y29uc3QKICAgICBTdHJpbmcgcmFkaXVzWDsKICAgICBTdHJpbmcgcmFkaXVzWTsKICAgICBpZiAo
bV9yYWRpdXNYKSB7Ci0gICAgICAgIGJvb2wgc2hvdWxkU2VyaWFsaXplUmFkaXVzWFZhbHVlID0g
bV9yYWRpdXNYLT5nZXRWYWx1ZUlEKCkgIT0gQ1NTVmFsdWVDbG9zZXN0U2lkZTsKKyAgICAgICAg
Ym9vbCBzaG91bGRTZXJpYWxpemVSYWRpdXNYVmFsdWUgPSBtX3JhZGl1c1gtPnZhbHVlSUQoKSAh
PSBDU1NWYWx1ZUNsb3Nlc3RTaWRlOwogICAgICAgICBib29sIHNob3VsZFNlcmlhbGl6ZVJhZGl1
c1lWYWx1ZSA9IGZhbHNlOwogCiAgICAgICAgIGlmIChtX3JhZGl1c1kpIHsKLSAgICAgICAgICAg
IHNob3VsZFNlcmlhbGl6ZVJhZGl1c1lWYWx1ZSA9IG1fcmFkaXVzWS0+Z2V0VmFsdWVJRCgpICE9
IENTU1ZhbHVlQ2xvc2VzdFNpZGU7CisgICAgICAgICAgICBzaG91bGRTZXJpYWxpemVSYWRpdXNZ
VmFsdWUgPSBtX3JhZGl1c1ktPnZhbHVlSUQoKSAhPSBDU1NWYWx1ZUNsb3Nlc3RTaWRlOwogICAg
ICAgICAgICAgaWYgKHNob3VsZFNlcmlhbGl6ZVJhZGl1c1lWYWx1ZSkKICAgICAgICAgICAgICAg
ICByYWRpdXNZID0gbV9yYWRpdXNZLT5jc3NUZXh0KCk7CiAgICAgICAgIH0KQEAgLTE4NSw4ICsx
ODUsOCBAQCBTdHJpbmcgQ1NTQmFzaWNTaGFwZUVsbGlwc2U6OmNzc1RleHQoKSBjb25zdAogICAg
ICAgICAgICAgcmFkaXVzWCA9IG1fcmFkaXVzWC0+Y3NzVGV4dCgpOwogICAgIH0KICAgICByZXR1
cm4gYnVpbGRFbGxpcHNlU3RyaW5nKHJhZGl1c1gsIHJhZGl1c1ksCi0gICAgICAgIHNlcmlhbGl6
ZVBvc2l0aW9uT2Zmc2V0KCpub3JtYWxpemVkQ1gtPmdldFBhaXJWYWx1ZSgpLCAqbm9ybWFsaXpl
ZENZLT5nZXRQYWlyVmFsdWUoKSksCi0gICAgICAgIHNlcmlhbGl6ZVBvc2l0aW9uT2Zmc2V0KCpu
b3JtYWxpemVkQ1ktPmdldFBhaXJWYWx1ZSgpLCAqbm9ybWFsaXplZENYLT5nZXRQYWlyVmFsdWUo
KSkpOworICAgICAgICBzZXJpYWxpemVQb3NpdGlvbk9mZnNldCgqbm9ybWFsaXplZENYLT5wYWly
VmFsdWUoKSwgKm5vcm1hbGl6ZWRDWS0+cGFpclZhbHVlKCkpLAorICAgICAgICBzZXJpYWxpemVQ
b3NpdGlvbk9mZnNldCgqbm9ybWFsaXplZENZLT5wYWlyVmFsdWUoKSwgKm5vcm1hbGl6ZWRDWC0+
cGFpclZhbHVlKCkpKTsKIH0KIAogYm9vbCBDU1NCYXNpY1NoYXBlRWxsaXBzZTo6ZXF1YWxzKGNv
bnN0IENTU0Jhc2ljU2hhcGUmIHNoYXBlKSBjb25zdApAQCAtMzgzLDcgKzM4Myw3IEBAIHN0YXRp
YyBpbmxpbmUgdm9pZCB1cGRhdGVDb3JuZXJSYWRpdXNXaWR0aEFuZEhlaWdodChDU1NQcmltaXRp
dmVWYWx1ZSogY29ybmVyLCBTCiAgICAgaWYgKCFjb3JuZXIpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIFBhaXIqIHJhZGl1cyA9IGNvcm5lci0+Z2V0UGFpclZhbHVlKCk7CisgICAgUGFpciogcmFk
aXVzID0gY29ybmVyLT5wYWlyVmFsdWUoKTsKICAgICB3aWR0aCA9IHJhZGl1cy0+Zmlyc3QoKSA/
IHJhZGl1cy0+Zmlyc3QoKS0+Y3NzVGV4dCgpIDogU3RyaW5nKCIwIik7CiAgICAgaWYgKHJhZGl1
cy0+c2Vjb25kKCkpCiAgICAgICAgIGhlaWdodCA9IHJhZGl1cy0+c2Vjb25kKCktPmNzc1RleHQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFnZVNsaWNlVmFs
dWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuaAppbmRl
eCAwODcyYmRlNGI2NTJjMzNhYzRlNGY4MDk4N2I3OGI2ZjVhZDQzZTU5Li4yNDAyZjJjNzhjY2Fl
ZTNjNTZlZjA4ZWI0YzU0MjQ2YzdkYTM0ZTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0JvcmRlckltYWdlU2xpY2VWYWx1ZS5oCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKIAogICAg
IFN0cmluZyBjdXN0b21DU1NUZXh0KCkgY29uc3Q7CiAKLSAgICBRdWFkKiBzbGljZXMoKSBjb25z
dCB7IHJldHVybiBtX3NsaWNlcyA/IG1fc2xpY2VzLT5nZXRRdWFkVmFsdWUoKSA6IG51bGxwdHI7
IH0KKyAgICBRdWFkKiBzbGljZXMoKSBjb25zdCB7IHJldHVybiBtX3NsaWNlcyA/IG1fc2xpY2Vz
LT5xdWFkVmFsdWUoKSA6IG51bGxwdHI7IH0KIAogICAgIGJvb2wgZXF1YWxzKGNvbnN0IENTU0Jv
cmRlckltYWdlU2xpY2VWYWx1ZSYpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2Fs
Y3VsYXRpb25WYWx1ZS5jcHAKaW5kZXggMmYzMjE2NzNhYTQ1YTgwNWNhYWRhZTYyMDAyNGMwMWYx
Njg0YWMwNS4uNTRlMzRiNThmMDFlZjkzY2VjNmE2NGQ4Mjc1NWM5Zjk0NjZmMjYyYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcApAQCAtMjE3LDcgKzIxNyw3
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgYm9vbCBpc1plcm8oKSBjb25zdCBmaW5hbAogICAg
IHsKLSAgICAgICAgcmV0dXJuICFtX3ZhbHVlLT5nZXREb3VibGVWYWx1ZSgpOworICAgICAgICBy
ZXR1cm4gIW1fdmFsdWUtPmRvdWJsZVZhbHVlKCk7CiAgICAgfQogCiAgICAgU3RyaW5nIGN1c3Rv
bUNTU1RleHQoKSBjb25zdCBmaW5hbApAQCAtMjI5LDcgKzIyOSw3IEBAIHByaXZhdGU6CiAgICAg
ewogICAgICAgICBzd2l0Y2ggKGNhdGVnb3J5KCkpIHsKICAgICAgICAgY2FzZSBDYWxjTnVtYmVy
OgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25OdW1i
ZXI+KG1fdmFsdWUtPmdldEZsb2F0VmFsdWUoKSk7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxDYWxjRXhwcmVzc2lvbk51bWJlcj4obV92YWx1ZS0+ZmxvYXRWYWx1ZSgpKTsK
ICAgICAgICAgY2FzZSBDYWxjTGVuZ3RoOgogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91
bmlxdWU8Q2FsY0V4cHJlc3Npb25MZW5ndGg+KExlbmd0aChtX3ZhbHVlLT5jb21wdXRlTGVuZ3Ro
PGZsb2F0Pihjb252ZXJzaW9uRGF0YSksIFdlYkNvcmU6OkZpeGVkKSk7CiAgICAgICAgIGNhc2Ug
Q2FsY1BlcmNlbnQ6CkBAIC0yNTIsNyArMjUyLDcgQEAgcHJpdmF0ZToKICAgICBkb3VibGUgZG91
YmxlVmFsdWUoKSBjb25zdCBmaW5hbAogICAgIHsKICAgICAgICAgaWYgKGhhc0RvdWJsZVZhbHVl
KHByaW1pdGl2ZVR5cGUoKSkpCi0gICAgICAgICAgICByZXR1cm4gbV92YWx1ZS0+Z2V0RG91Ymxl
VmFsdWUoKTsKKyAgICAgICAgICAgIHJldHVybiBtX3ZhbHVlLT5kb3VibGVWYWx1ZSgpOwogICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQpAQCAt
MjY0LDcgKzI2NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm4gbV92YWx1ZS0+Y29t
cHV0ZUxlbmd0aDxkb3VibGU+KGNvbnZlcnNpb25EYXRhKTsKICAgICAgICAgY2FzZSBDYWxjUGVy
Y2VudDoKICAgICAgICAgY2FzZSBDYWxjTnVtYmVyOgotICAgICAgICAgICAgcmV0dXJuIG1fdmFs
dWUtPmdldERvdWJsZVZhbHVlKCk7CisgICAgICAgICAgICByZXR1cm4gbV92YWx1ZS0+ZG91Ymxl
VmFsdWUoKTsKICAgICAgICAgY2FzZSBDYWxjUGVyY2VudExlbmd0aDoKICAgICAgICAgY2FzZSBD
YWxjUGVyY2VudE51bWJlcjoKICAgICAgICAgY2FzZSBDYWxjQW5nbGU6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2hhcnNldFJ1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NDaGFyc2V0UnVsZS5oCmluZGV4IDViNjgwMTlmYjU5NWUzYWI3ODJkOTNmOTc2ZDc5ZjBmMjgw
OGI3ZGUuLjdhNDE0MGNkZTg3YTMyMGM3YWY5NDMyYWExY2QyNWQ5NWYyNzEyOGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDaGFyc2V0UnVsZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NDaGFyc2V0UnVsZS5oCkBAIC0xOSw4ICsxOSw3IEBACiAgKiBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KICAqLwogCi0jaWZuZGVmIENTU0NoYXJzZXRSdWxlX2gKLSNkZWZp
bmUgQ1NTQ2hhcnNldFJ1bGVfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDU1NSdWxlLmgi
CiAKQEAgLTMzLDIyICszMiwxNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IENTU0NoYXJzZXRSdWxlKHBhcmVudCwgZW5jb2RpbmcpKTsKICAgICB9CiAKLSAgICB2aXJ0
dWFsIH5DU1NDaGFyc2V0UnVsZSgpIHsgfQotCi0gICAgU3RyaW5nIGNzc1RleHQoKSBjb25zdCBm
aW5hbDsKLSAgICB2b2lkIHJlYXR0YWNoKFN0eWxlUnVsZUJhc2UmKSBmaW5hbCB7IH0KLQogICAg
IGNvbnN0IFN0cmluZyYgZW5jb2RpbmcoKSBjb25zdCB7IHJldHVybiBtX2VuY29kaW5nOyB9Ci0g
ICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBFeGNlcHRpb25Db2Rl
JikgeyBtX2VuY29kaW5nID0gZW5jb2Rpbmc7IH0KKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRF
bmNvZGluZyhjb25zdCBTdHJpbmcmIGVuY29kaW5nKSB7IG1fZW5jb2RpbmcgPSBlbmNvZGluZzsg
cmV0dXJuIHsgfTsgfQogCiBwcml2YXRlOgotICAgIENTU1J1bGU6OlR5cGUgdHlwZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIENIQVJTRVRfUlVMRTsgfQotCiAgICAgQ1NTQ2hhcnNldFJ1bGUoQ1NT
U3R5bGVTaGVldCogcGFyZW50LCBjb25zdCBTdHJpbmcmIGVuY29kaW5nKTsKIAorICAgIENTU1J1
bGU6OlR5cGUgdHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIENIQVJTRVRfUlVMRTsgfQorICAg
IFN0cmluZyBjc3NUZXh0KCkgY29uc3QgZmluYWw7CisgICAgdm9pZCByZWF0dGFjaChTdHlsZVJ1
bGVCYXNlJikgZmluYWwgeyB9CisKICAgICBTdHJpbmcgbV9lbmNvZGluZzsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIENTU0NoYXJzZXRSdWxlX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDaGFyc2V0UnVsZS5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTQ2hhcnNldFJ1bGUuaWRsCmluZGV4IGY5OTU4MTdhMWY0YjdiMjU3MGVkMDhiNDg3
Y2RlMTllOTcyNmMyZDYuLmRlNDE0MGJjZGFkNGM2MmM2ODdiMzZmM2Y4NGEzMjYxOTc1MTVkMjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDaGFyc2V0UnVsZS5pZGwKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0NoYXJzZXRSdWxlLmlkbApAQCAtMTgsOCArMTgsNiBAQAog
ICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCiAgKi8KIAotLy8gSW50cm9kdWNlZCBpbiBE
T00gTGV2ZWwgMjoKIGludGVyZmFjZSBDU1NDaGFyc2V0UnVsZSA6IENTU1J1bGUgewotICAgIFtT
ZXR0ZXJNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gYXR0cmlidXRlIERPTVN0cmluZz8gZW5jb2Rp
bmc7CisgICAgW1NldHRlck1heVRocm93RXhjZXB0aW9uXSBhdHRyaWJ1dGUgRE9NU3RyaW5nPyBl
bmNvZGluZzsKIH07Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRl
ZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggNjg1OTEzMWNmZmQyM2M1NjgzM2YyOTgzZDhkNjIzZWFj
Yzk3ZTNlMC4uNjgwMTM1MmQ2ZTBlNjUwNGVjZmFhYmVhMzRkMDE4N2Q4NGM4ZTkxMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAK
QEAgLTE2MzYsOSArMTYzNiw5IEBAIFN0cmluZyBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246
OmNzc1RleHQoKSBjb25zdAogICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKIH0KIAotdm9p
ZCBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OnNldENzc1RleHQoY29uc3QgU3RyaW5nJiwg
RXhjZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRpb25Pcjx2b2lkPiBDU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb246OnNldENzc1RleHQoY29uc3QgU3RyaW5nJikKIHsKLSAgICBlYyA9IE5PX01PRElG
SUNBVElPTl9BTExPV0VEX0VSUjsKKyAgICByZXR1cm4gRXhjZXB0aW9uIHsgTk9fTU9ESUZJQ0FU
SU9OX0FMTE9XRURfRVJSIH07CiB9CiAKIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gQ29tcHV0
ZWRTdHlsZUV4dHJhY3Rvcjo6Z2V0Rm9udFNpemVDU1NWYWx1ZVByZWZlcnJpbmdLZXl3b3JkKCkg
Y29uc3QKQEAgLTQwMDEsNyArNDAwMSw3IEBAIGJvb2wgQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6
cHJvcGVydHlNYXRjaGVzKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgY29uc3QgQ1NTCiAgICAg
ICAgIGlmIChhdXRvKiBzdHlsZSA9IG1fbm9kZS0+Y29tcHV0ZWRTdHlsZShtX3BzZXVkb0VsZW1l
bnRTcGVjaWZpZXIpKSB7CiAgICAgICAgICAgICBpZiAoQ1NTVmFsdWVJRCBzaXplSWRlbnRpZmll
ciA9IHN0eWxlLT5mb250RGVzY3JpcHRpb24oKS5rZXl3b3JkU2l6ZUFzSWRlbnRpZmllcigpKSB7
CiAgICAgICAgICAgICAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZT4oKnZhbHVlKTsKLSAgICAgICAgICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUu
aXNWYWx1ZUlEKCkgJiYgcHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWVJRCgpID09IHNpemVJZGVudGlm
aWVyKQorICAgICAgICAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS5pc1ZhbHVlSUQoKSAmJiBw
cmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gc2l6ZUlkZW50aWZpZXIpCiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC00MTE5LDE1
ICs0MTE5LDE0IEBAIGJvb2wgQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjppc1Byb3BlcnR5
SW1wbGljaXQoY29uc3QgU3RyaW5nJikKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpzZXRQcm9wZXJ0eShjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9y
PHZvaWQ+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6c2V0UHJvcGVydHkoY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBlYyA9IE5PX01PRElG
SUNBVElPTl9BTExPV0VEX0VSUjsKKyAgICByZXR1cm4gRXhjZXB0aW9uIHsgTk9fTU9ESUZJQ0FU
SU9OX0FMTE9XRURfRVJSIH07CiB9CiAKLVN0cmluZyBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b246OnJlbW92ZVByb3BlcnR5KGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhj
ZXB0aW9uT3I8U3RyaW5nPiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OnJlbW92ZVByb3Bl
cnR5KGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgZWMgPSBOT19NT0RJRklDQVRJT05fQUxMT1dFRF9F
UlI7Ci0gICAgcmV0dXJuIFN0cmluZygpOworICAgIHJldHVybiBFeGNlcHRpb24geyBOT19NT0RJ
RklDQVRJT05fQUxMT1dFRF9FUlIgfTsKIH0KICAgICAKIFJlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlSW50ZXJuYWwoQ1NTUHJv
cGVydHlJRCBwcm9wZXJ0eUlEKQpAQCAtNDE0MCwyMSArNDEzOSwxNyBAQCBTdHJpbmcgQ1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlJRCBwcm9wZQogICAgIHJldHVybiBnZXRQcm9wZXJ0eVZhbHVlKHByb3BlcnR5SUQpOwogfQog
Ci1ib29sIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6c2V0UHJvcGVydHlJbnRlcm5hbChD
U1NQcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmLCBib29sLCBFeGNlcHRpb25Db2RlJiBlYykKK0V4
Y2VwdGlvbk9yPGJvb2w+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6c2V0UHJvcGVydHlJ
bnRlcm5hbChDU1NQcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmLCBib29sKQogewotICAgIGVjID0g
Tk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSOwotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1
cm4gRXhjZXB0aW9uIHsgTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSIH07CiB9CiAKLVJlZlB0
cjxDU1NWYWx1ZUxpc3Q+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldEJhY2tncm91bmRTaG9y
dGhhbmRWYWx1ZSgpIGNvbnN0CitSZWY8Q1NTVmFsdWVMaXN0PiBDb21wdXRlZFN0eWxlRXh0cmFj
dG9yOjpnZXRCYWNrZ3JvdW5kU2hvcnRoYW5kVmFsdWUoKSBjb25zdAogewotICAgIHN0YXRpYyBj
b25zdCBDU1NQcm9wZXJ0eUlEIHByb3BlcnRpZXNCZWZvcmVTbGFzaFNlcGVyYXRvcls1XSA9IHsg
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsIENTU1Byb3BlcnR5QmFja2dyb3VuZEltYWdlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0LCBDU1NQcm9wZXJ0eUJhY2tn
cm91bmRBdHRhY2htZW50LCAgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3Np
dGlvbiB9OwotICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIHByb3BlcnRpZXNBZnRlclNs
YXNoU2VwZXJhdG9yWzNdID0geyBDU1NQcm9wZXJ0eUJhY2tncm91bmRTaXplLCBDU1NQcm9wZXJ0
eUJhY2tncm91bmRPcmlnaW4sIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRDbGlw
IH07CisgICAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgcHJvcGVydGllc0JlZm9yZVNsYXNo
U2VwZXJhdG9yWzVdID0geyBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgQ1NTUHJvcGVydHlC
YWNrZ3JvdW5kSW1hZ2UsIENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdCwgQ1NTUHJvcGVydHlC
YWNrZ3JvdW5kQXR0YWNobWVudCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb24gfTsKKyAg
ICBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0aWVzQWZ0ZXJTbGFzaFNlcGVyYXRv
clszXSA9IHsgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kU2l6ZSwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
T3JpZ2luLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRDbGlwIH07CiAKLSAgICBSZWZQdHI8Q1NTVmFs
dWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTbGFzaFNlcGFyYXRlZCgpOworICAg
IGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU2xhc2hTZXBhcmF0ZWQoKTsKICAgICBs
aXN0LT5hcHBlbmQoKmdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2hvcnRoYW5kUHJvcGVydGllcyhT
dHlsZVByb3BlcnR5U2hvcnRoYW5kKENTU1Byb3BlcnR5QmFja2dyb3VuZCwgcHJvcGVydGllc0Jl
Zm9yZVNsYXNoU2VwZXJhdG9yKSkpOwogICAgIGxpc3QtPmFwcGVuZCgqZ2V0Q1NTUHJvcGVydHlW
YWx1ZXNGb3JTaG9ydGhhbmRQcm9wZXJ0aWVzKFN0eWxlUHJvcGVydHlTaG9ydGhhbmQoQ1NTUHJv
cGVydHlCYWNrZ3JvdW5kLCBwcm9wZXJ0aWVzQWZ0ZXJTbGFzaFNlcGVyYXRvcikpKTsKICAgICBy
ZXR1cm4gbGlzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0
eWxlRGVjbGFyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24uaAppbmRleCBhODkxNzA1Yjg1YjU3NjJiZTQ1ZDhmZjg4NWEzNmU2Y2FjNDM4ODEw
Li41NTQyMmVlNzE1ZjU2Y2I3N2IyNDk5YzdiNjVhNmJhMGEzMmI0YzNiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oCkBAIC0xOCw4ICsx
OCw3IEBACiAgKiAwMjExMC0xMzAxICBVU0EKICAqLwogCi0jaWZuZGVmIENTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbl9oCi0jZGVmaW5lIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbl9oCisj
cHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNTU1N0eWxlRGVjbGFyYXRpb24uaCIKICNpbmNsdWRl
ICJSZW5kZXJTdHlsZUNvbnN0YW50cy5oIgpAQCAtNzgsNyArNzcsNyBAQCBwcml2YXRlOgogCiAg
ICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gZ2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaG9ydGhhbmRQ
cm9wZXJ0aWVzKGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmKSBjb25zdDsKICAgICBSZWZQ
dHI8Q1NTVmFsdWVMaXN0PiBnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvclNpZGVzU2hvcnRoYW5kKGNv
bnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmKSBjb25zdDsKLSAgICBSZWZQdHI8Q1NTVmFsdWVM
aXN0PiBnZXRCYWNrZ3JvdW5kU2hvcnRoYW5kVmFsdWUoKSBjb25zdDsKKyAgICBSZWY8Q1NTVmFs
dWVMaXN0PiBnZXRCYWNrZ3JvdW5kU2hvcnRoYW5kVmFsdWUoKSBjb25zdDsKICAgICBSZWZQdHI8
Q1NTVmFsdWVMaXN0PiBnZXRDU1NQcm9wZXJ0eVZhbHVlc0ZvckdyaWRTaG9ydGhhbmQoY29uc3Qg
U3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYpIGNvbnN0OwogCiAgICAgUmVmUHRyPE5vZGU+IG1fbm9k
ZTsKQEAgLTExMSwxMyArMTEwLDEzIEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIGdldFByb3BlcnR5
UHJpb3JpdHkoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpIGZpbmFsOwogICAgIFN0cmluZyBn
ZXRQcm9wZXJ0eVNob3J0aGFuZChjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkgZmluYWw7CiAg
ICAgYm9vbCBpc1Byb3BlcnR5SW1wbGljaXQoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpIGZp
bmFsOwotICAgIHZvaWQgc2V0UHJvcGVydHkoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIGNv
bnN0IFN0cmluZyYgdmFsdWUsIGNvbnN0IFN0cmluZyYgcHJpb3JpdHksIEV4Y2VwdGlvbkNvZGUm
KSBmaW5hbDsKLSAgICBTdHJpbmcgcmVtb3ZlUHJvcGVydHkoY29uc3QgU3RyaW5nJiBwcm9wZXJ0
eU5hbWUsIEV4Y2VwdGlvbkNvZGUmKSBmaW5hbDsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRQ
cm9wZXJ0eShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwg
Y29uc3QgU3RyaW5nJiBwcmlvcml0eSkgZmluYWw7CisgICAgRXhjZXB0aW9uT3I8U3RyaW5nPiBy
ZW1vdmVQcm9wZXJ0eShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkgZmluYWw7CiAgICAgU3Ry
aW5nIGNzc1RleHQoKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIHNldENzc1RleHQoY29uc3QgU3Ry
aW5nJiwgRXhjZXB0aW9uQ29kZSYpIGZpbmFsOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldENz
c1RleHQoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgUmVmUHRyPENTU1ZhbHVlPiBnZXRQcm9w
ZXJ0eUNTU1ZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlJRCkgZmluYWw7CiAgICAgU3RyaW5nIGdl
dFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUlEKSBmaW5hbDsKLSAgICBib29sIHNl
dFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9v
bCBpbXBvcnRhbnQsIEV4Y2VwdGlvbkNvZGUmKSBmaW5hbDsKKyAgICBFeGNlcHRpb25Pcjxib29s
PiBzZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgdmFsdWUs
IGJvb2wgaW1wb3J0YW50KSBmaW5hbDsKICAgICBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4g
Y29weVByb3BlcnRpZXMoKSBjb25zdCBmaW5hbDsKIAogICAgIFJlZlB0cjxDU1NWYWx1ZT4gZ2V0
UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUlELCBFVXBkYXRlTGF5b3V0ID0gVXBkYXRlTGF5
b3V0KSBjb25zdDsKQEAgLTEyOSw1ICsxMjgsMyBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwCmluZGV4IDBjZjc5YmNjNmIx
Yzg0NDg1NmRhYjFlOGJjMDc3YzkxNDJiNTRmNWYuLjMxNDczZDIzMzQxNTY4MWE2ZjYzMjE0YWE5
MzVjM2M3N2YzNWUzOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2Zh
ZGVWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmNw
cApAQCAtODQsNyArODQsNyBAQCBTdHJpbmcgQ1NTQ3Jvc3NmYWRlVmFsdWU6OmN1c3RvbUNTU1Rl
eHQoKSBjb25zdAogCiBGbG9hdFNpemUgQ1NTQ3Jvc3NmYWRlVmFsdWU6OmZpeGVkU2l6ZShjb25z
dCBSZW5kZXJFbGVtZW50KiByZW5kZXJlcikKIHsKLSAgICBmbG9hdCBwZXJjZW50YWdlID0gbV9w
ZXJjZW50YWdlVmFsdWUtPmdldEZsb2F0VmFsdWUoKTsKKyAgICBmbG9hdCBwZXJjZW50YWdlID0g
bV9wZXJjZW50YWdlVmFsdWUtPmZsb2F0VmFsdWUoKTsKICAgICBmbG9hdCBpbnZlcnNlUGVyY2Vu
dGFnZSA9IDEgLSBwZXJjZW50YWdlOwogCiAgICAgLy8gRklYTUU6IFNraXAgQ29udGVudCBTZWN1
cml0eSBQb2xpY3kgY2hlY2sgd2hlbiBjcm9zcyBmYWRlIGlzIGFwcGxpZWQgdG8gYW4gZWxlbWVu
dCBpbiBhIHVzZXIgYWdlbnQgc2hhZG93IHRyZWUuCkBAIC0xNjgsNyArMTY4LDcgQEAgUmVmUHRy
PEltYWdlPiBDU1NDcm9zc2ZhZGVWYWx1ZTo6aW1hZ2UoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIs
IGNvbnN0IEZsb2F0U2l6ZSYKICAgICBpZiAoIWZyb21JbWFnZSB8fCAhdG9JbWFnZSkKICAgICAg
ICAgcmV0dXJuIEltYWdlOjpudWxsSW1hZ2UoKTsKIAotICAgIG1fZ2VuZXJhdGVkSW1hZ2UgPSBD
cm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6Y3JlYXRlKCpmcm9tSW1hZ2UsICp0b0ltYWdlLCBtX3Bl
cmNlbnRhZ2VWYWx1ZS0+Z2V0RmxvYXRWYWx1ZSgpLCBmaXhlZFNpemUocmVuZGVyZXIpLCBzaXpl
KTsKKyAgICBtX2dlbmVyYXRlZEltYWdlID0gQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmNyZWF0
ZSgqZnJvbUltYWdlLCAqdG9JbWFnZSwgbV9wZXJjZW50YWdlVmFsdWUtPmZsb2F0VmFsdWUoKSwg
Zml4ZWRTaXplKHJlbmRlcmVyKSwgc2l6ZSk7CiAKICAgICByZXR1cm4gbV9nZW5lcmF0ZWRJbWFn
ZTsKIH0KQEAgLTIwMiwxMCArMjAyLDEwIEBAIFJlZlB0cjxDU1NDcm9zc2ZhZGVWYWx1ZT4gQ1NT
Q3Jvc3NmYWRlVmFsdWU6OmJsZW5kKGNvbnN0IENTU0Nyb3NzZmFkZVZhbHVlJiBmcm9tCiAgICAg
YXV0byBmcm9tSW1hZ2VWYWx1ZSA9IENTU0ltYWdlVmFsdWU6OmNyZWF0ZSgqbV9jYWNoZWRGcm9t
SW1hZ2UpOwogICAgIGF1dG8gdG9JbWFnZVZhbHVlID0gQ1NTSW1hZ2VWYWx1ZTo6Y3JlYXRlKCpt
X2NhY2hlZFRvSW1hZ2UpOwogCi0gICAgZG91YmxlIGZyb21QZXJjZW50YWdlID0gZnJvbS5tX3Bl
cmNlbnRhZ2VWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKTsKKyAgICBkb3VibGUgZnJvbVBlcmNlbnRh
Z2UgPSBmcm9tLm1fcGVyY2VudGFnZVZhbHVlLT5kb3VibGVWYWx1ZSgpOwogICAgIGlmIChmcm9t
Lm1fcGVyY2VudGFnZVZhbHVlLT5pc1BlcmNlbnRhZ2UoKSkKICAgICAgICAgZnJvbVBlcmNlbnRh
Z2UgLz0gMTAwLjA7Ci0gICAgZG91YmxlIHRvUGVyY2VudGFnZSA9IG1fcGVyY2VudGFnZVZhbHVl
LT5nZXREb3VibGVWYWx1ZSgpOworICAgIGRvdWJsZSB0b1BlcmNlbnRhZ2UgPSBtX3BlcmNlbnRh
Z2VWYWx1ZS0+ZG91YmxlVmFsdWUoKTsKICAgICBpZiAobV9wZXJjZW50YWdlVmFsdWUtPmlzUGVy
Y2VudGFnZSgpKQogICAgICAgICB0b1BlcmNlbnRhZ2UgLz0gMTAwLjA7CiAgICAgYXV0byBwZXJj
ZW50YWdlVmFsdWUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKGJsZW5kRnVuYyhmcm9tUGVy
Y2VudGFnZSwgdG9QZXJjZW50YWdlLCBwcm9ncmVzcyksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
TlVNQkVSKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuY3BwCmluZGV4IDUxODJhZjdiMjdhMTM3
ZjQ0NjYzMGQ3YTQ2OGQ0MDgzYzFlODAxOGYuLmE3NTQwMWJmNTJiOGE0NTQxMmI3MTliNDk0ZDJm
ZTU5Y2RhMmNkYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmNwcApAQCAtMTI5LDcgKzEy
OSw3IEBAIE9wdGlvbmFsPEZvbnRUcmFpdHNNYXNrPiBDU1NGb250RmFjZTo6Y2FsY3VsYXRlU3R5
bGVNYXNrKENTU1ZhbHVlJiBzdHlsZSkKICAgICBpZiAoIWlzPENTU1ByaW1pdGl2ZVZhbHVlPihz
dHlsZSkpCiAgICAgICAgIHJldHVybiBOdWxsb3B0OwogCi0gICAgc3dpdGNoIChkb3duY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZT4oc3R5bGUpLmdldFZhbHVlSUQoKSkgeworICAgIHN3aXRjaCAoZG93
bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHN0eWxlKS52YWx1ZUlEKCkpIHsKICAgICBjYXNlIENT
U1ZhbHVlTm9ybWFsOgogICAgICAgICByZXR1cm4gRm9udFN0eWxlTm9ybWFsTWFzazsKICAgICBj
YXNlIENTU1ZhbHVlSXRhbGljOgpAQCAtMTY0LDcgKzE2NCw3IEBAIE9wdGlvbmFsPEZvbnRUcmFp
dHNNYXNrPiBDU1NGb250RmFjZTo6Y2FsY3VsYXRlV2VpZ2h0TWFzayhDU1NWYWx1ZSYgd2VpZ2h0
KQogICAgIGlmICghaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHdlaWdodCkpCiAgICAgICAgIHJldHVy
biBOdWxsb3B0OwogCi0gICAgc3dpdGNoIChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4od2Vp
Z2h0KS5nZXRWYWx1ZUlEKCkpIHsKKyAgICBzd2l0Y2ggKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlPih3ZWlnaHQpLnZhbHVlSUQoKSkgewogICAgIGNhc2UgQ1NTVmFsdWVCb2xkOgogICAgIGNh
c2UgQ1NTVmFsdWVCb2xkZXI6CiAgICAgY2FzZSBDU1NWYWx1ZTcwMDoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRm9udEZhY2VTZXQuY3BwCmluZGV4IDllOWQxNzcyODhmYWFjNGI5NjgyNjYxMzU1ZDZkNTRi
ODM3NDBkYzAuLjUyMmFjODZhOTRlOWJiYmIzYjhkM2UyMTE1Y2Y2NjkwMGY3MzUzMWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNldC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1
ZGUgIkNTU1NlZ21lbnRlZEZvbnRGYWNlLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVMaXN0LmgiCiAj
aW5jbHVkZSAiQ1NTVmFsdWVQb29sLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2lu
Y2x1ZGUgIkZvbnRDYWNoZS5oIgogI2luY2x1ZGUgIlN0eWxlUHJvcGVydGllcy5oIgogCkBAIC0x
MjgsNyArMTI5LDcgQEAgU3RyaW5nIENTU0ZvbnRGYWNlU2V0OjpmYW1pbHlOYW1lRnJvbVByaW1p
dGl2ZShjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYgdmFsdWUpCiAKICAgICAvLyBXZSBuZWVkIHRv
IHVzZSB0aGUgcmF3IHRleHQgZm9yIGFsbCB0aGUgZ2VuZXJpYyBmYW1pbHkgdHlwZXMsIHNpbmNl
IEBmb250LWZhY2UgaXMgYSB3YXkgb2YgYWN0dWFsbHkKICAgICAvLyBkZWZpbmluZyB3aGF0IGZv
bnQgdG8gdXNlIGZvciB0aG9zZSB0eXBlcy4KLSAgICBzd2l0Y2ggKHZhbHVlLmdldFZhbHVlSUQo
KSkgeworICAgIHN3aXRjaCAodmFsdWUudmFsdWVJRCgpKSB7CiAgICAgY2FzZSBDU1NWYWx1ZVNl
cmlmOgogICAgICAgICByZXR1cm4gc2VyaWZGYW1pbHk7CiAgICAgY2FzZSBDU1NWYWx1ZVNhbnNT
ZXJpZjoKQEAgLTI0Nyw3ICsyNDgsNyBAQCB2b2lkIENTU0ZvbnRGYWNlU2V0OjpyZW1vdmUoY29u
c3QgQ1NTRm9udEZhY2UmIGZhY2UpCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLUNT
U0ZvbnRGYWNlKiBDU1NGb250RmFjZVNldDo6bG9va3VwQnlDU1NDb25uZWN0aW9uKFN0eWxlUnVs
ZUZvbnRGYWNlJiB0YXJnZXQpCitDU1NGb250RmFjZSogQ1NTRm9udEZhY2VTZXQ6Omxvb2tVcEJ5
Q1NTQ29ubmVjdGlvbihTdHlsZVJ1bGVGb250RmFjZSYgdGFyZ2V0KQogewogICAgIHJldHVybiBt
X2NvbnN0aXR1ZW50Q1NTQ29ubmVjdGlvbnMuZ2V0KCZ0YXJnZXQpOwogfQpAQCAtMzI0LDM1ICsz
MjUsMjggQEAgc3RhdGljIEhhc2hTZXQ8VUNoYXIzMj4gY29kZVBvaW50c0Zyb21TdHJpbmcoU3Ry
aW5nVmlldyBzdHJpbmdWaWV3KQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVZlY3RvcjxzdGQ6
OnJlZmVyZW5jZV93cmFwcGVyPENTU0ZvbnRGYWNlPj4gQ1NTRm9udEZhY2VTZXQ6Om1hdGNoaW5n
RmFjZXMoY29uc3QgU3RyaW5nJiBmb250LCBjb25zdCBTdHJpbmcmIHN0cmluZywgRXhjZXB0aW9u
Q29kZSYgZWMpCitFeGNlcHRpb25PcjxWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxDU1NG
b250RmFjZT4+PiBDU1NGb250RmFjZVNldDo6bWF0Y2hpbmdGYWNlcyhjb25zdCBTdHJpbmcmIGZv
bnQsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewotICAgIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93
cmFwcGVyPENTU0ZvbnRGYWNlPj4gcmVzdWx0OwogICAgIGF1dG8gc3R5bGUgPSBNdXRhYmxlU3R5
bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKICAgICBhdXRvIHBhcnNlUmVzdWx0ID0gQ1NTUGFyc2Vy
OjpwYXJzZVZhbHVlKHN0eWxlLCBDU1NQcm9wZXJ0eUZvbnQsIGZvbnQsIHRydWUsIEhUTUxTdGFu
ZGFyZE1vZGUsIG51bGxwdHIpOwotICAgIGlmIChwYXJzZVJlc3VsdCA9PSBDU1NQYXJzZXI6OlBh
cnNlUmVzdWx0OjpFcnJvcikgewotICAgICAgICBlYyA9IFNZTlRBWF9FUlI7Ci0gICAgICAgIHJl
dHVybiByZXN1bHQ7Ci0gICAgfQorICAgIGlmIChwYXJzZVJlc3VsdCA9PSBDU1NQYXJzZXI6OlBh
cnNlUmVzdWx0OjpFcnJvcikKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNZTlRBWF9FUlIg
fTsKIAogICAgIEZvbnRUcmFpdHNNYXNrIGZvbnRUcmFpdHNNYXNrOwogICAgIGlmIChhdXRvIG1h
c2tPcHRpb25hbCA9IGNvbXB1dGVGb250VHJhaXRzTWFzayhzdHlsZS5nZXQoKSkpCiAgICAgICAg
IGZvbnRUcmFpdHNNYXNrID0gbWFza09wdGlvbmFsLnZhbHVlKCk7Ci0gICAgZWxzZSB7Ci0gICAg
ICAgIGVjID0gU1lOVEFYX0VSUjsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9CisgICAg
ZWxzZQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU1lOVEFYX0VSUiB9OwogCi0gICAgUmVm
UHRyPENTU1ZhbHVlPiBmYW1pbHkgPSBzdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9w
ZXJ0eUZvbnRGYW1pbHkpOwotICAgIGlmICghaXM8Q1NTVmFsdWVMaXN0PihmYW1pbHkuZ2V0KCkp
KSB7Ci0gICAgICAgIGVjID0gU1lOVEFYX0VSUjsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAg
ICB9CisgICAgYXV0byBmYW1pbHkgPSBzdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9w
ZXJ0eUZvbnRGYW1pbHkpOworICAgIGlmICghaXM8Q1NTVmFsdWVMaXN0PihmYW1pbHkuZ2V0KCkp
KQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU1lOVEFYX0VSUiB9OwogICAgIENTU1ZhbHVl
TGlzdCYgZmFtaWx5TGlzdCA9IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4oKmZhbWlseSk7CiAKICAg
ICBIYXNoU2V0PEF0b21pY1N0cmluZz4gdW5pcXVlRmFtaWxpZXM7CiAgICAgVmVjdG9yPEF0b21p
Y1N0cmluZz4gZmFtaWx5T3JkZXI7CiAgICAgZm9yIChhdXRvJiBmYW1pbHkgOiBmYW1pbHlMaXN0
KSB7Ci0gICAgICAgIGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJiBwcmltaXRpdmUgPSBkb3duY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZT4oZmFtaWx5LmdldCgpKTsKKyAgICAgICAgYXV0byYgcHJpbWl0
aXZlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGZhbWlseS5nZXQoKSk7CiAgICAgICAg
IGlmICghcHJpbWl0aXZlLmlzRm9udEZhbWlseSgpKQogICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgIGlmICh1bmlxdWVGYW1pbGllcy5hZGQocHJpbWl0aXZlLmZvbnRGYW1pbHkoKS5mYW1p
bHlOYW1lKS5pc05ld0VudHJ5KQpAQCAtMzYzLDcgKzM1Nyw3IEBAIFZlY3RvcjxzdGQ6OnJlZmVy
ZW5jZV93cmFwcGVyPENTU0ZvbnRGYWNlPj4gQ1NTRm9udEZhY2VTZXQ6Om1hdGNoaW5nRmFjZXMo
Y29uc3QKICAgICBmb3IgKGF1dG8gY29kZVBvaW50IDogY29kZVBvaW50c0Zyb21TdHJpbmcoc3Ry
aW5nKSkgewogICAgICAgICBib29sIGZvdW5kID0gZmFsc2U7CiAgICAgICAgIGZvciAoYXV0byYg
ZmFtaWx5IDogZmFtaWx5T3JkZXIpIHsKLSAgICAgICAgICAgIENTU1NlZ21lbnRlZEZvbnRGYWNl
KiBmYWNlcyA9IGdldEZvbnRGYWNlKGZvbnRUcmFpdHNNYXNrLCBmYW1pbHkpOworICAgICAgICAg
ICAgYXV0byogZmFjZXMgPSBmb250RmFjZShmb250VHJhaXRzTWFzaywgZmFtaWx5KTsKICAgICAg
ICAgICAgIGlmICghZmFjZXMpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAg
ICBmb3IgKGF1dG8mIGNvbnN0aXR1ZW50RmFjZSA6IGZhY2VzLT5jb25zdGl0dWVudEZhY2VzKCkp
IHsKQEAgLTM3OCwxOSArMzcyLDIwIEBAIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPENT
U0ZvbnRGYWNlPj4gQ1NTRm9udEZhY2VTZXQ6Om1hdGNoaW5nRmFjZXMoY29uc3QKICAgICAgICAg
fQogICAgIH0KIAorICAgIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPENTU0ZvbnRGYWNl
Pj4gcmVzdWx0OworICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHJlc3VsdENvbnN0
aXR1ZW50cy5zaXplKCkpOwogICAgIGZvciAoYXV0byogY29uc3RpdHVlbnQgOiByZXN1bHRDb25z
dGl0dWVudHMpCi0gICAgICAgIHJlc3VsdC5hcHBlbmQoKmNvbnN0aXR1ZW50KTsKLQotICAgIHJl
dHVybiByZXN1bHQ7CisgICAgICAgIHJlc3VsdC51bmNoZWNrZWRBcHBlbmQoKmNvbnN0aXR1ZW50
KTsKKyAgICByZXR1cm4gV1RGTW92ZShyZXN1bHQpOwogfQogCi1ib29sIENTU0ZvbnRGYWNlU2V0
OjpjaGVjayhjb25zdCBTdHJpbmcmIGZvbnQsIGNvbnN0IFN0cmluZyYgdGV4dCwgRXhjZXB0aW9u
Q29kZSYgZWMpCitFeGNlcHRpb25Pcjxib29sPiBDU1NGb250RmFjZVNldDo6Y2hlY2soY29uc3Qg
U3RyaW5nJiBmb250LCBjb25zdCBTdHJpbmcmIHRleHQpCiB7Ci0gICAgYXV0byBtYXRjaGluZ0Zh
Y2VzID0gdGhpcy0+bWF0Y2hpbmdGYWNlcyhmb250LCB0ZXh0LCBlYyk7Ci0gICAgaWYgKGVjKQot
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgYXV0byBtYXRjaGluZ0ZhY2VzID0gdGhpcy0+bWF0
Y2hpbmdGYWNlcyhmb250LCB0ZXh0KTsKKyAgICBpZiAobWF0Y2hpbmdGYWNlcy5oYXNFeGNlcHRp
b24oKSkKKyAgICAgICAgcmV0dXJuIG1hdGNoaW5nRmFjZXMucmVsZWFzZUV4Y2VwdGlvbigpOwog
Ci0gICAgZm9yIChhdXRvJiBmYWNlIDogbWF0Y2hpbmdGYWNlcykgeworICAgIGZvciAoYXV0byYg
ZmFjZSA6IG1hdGNoaW5nRmFjZXMucmVsZWFzZVJldHVyblZhbHVlKCkpIHsKICAgICAgICAgaWYg
KGZhY2UuZ2V0KCkuc3RhdHVzKCkgPT0gQ1NTRm9udEZhY2U6OlN0YXR1czo6UGVuZGluZykKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC00NTYsNyArNDUxLDcgQEAgc3RhdGlj
IGJvb2wgZm9udEZhY2VDb21wYXJhdG9yKEZvbnRUcmFpdHNNYXNrIGRlc2lyZWRUcmFpdHNNYXNr
Rm9yQ29tcGFyaXNvbiwgY28KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLUNTU1NlZ21lbnRlZEZv
bnRGYWNlKiBDU1NGb250RmFjZVNldDo6Z2V0Rm9udEZhY2UoRm9udFRyYWl0c01hc2sgdHJhaXRz
TWFzaywgY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHkpCitDU1NTZWdtZW50ZWRGb250RmFjZSog
Q1NTRm9udEZhY2VTZXQ6OmZvbnRGYWNlKEZvbnRUcmFpdHNNYXNrIHRyYWl0c01hc2ssIGNvbnN0
IEF0b21pY1N0cmluZyYgZmFtaWx5KQogewogICAgIGF1dG8gaXRlcmF0b3IgPSBtX2ZhY2VzTG9v
a3VwVGFibGUuZmluZChmYW1pbHkpOwogICAgIGlmIChpdGVyYXRvciA9PSBtX2ZhY2VzTG9va3Vw
VGFibGUuZW5kKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VT
ZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNldC5oCmluZGV4IGNkZjg4YmE0
ZDY2ZjM3ZDM0Y2I5MGEzNzhmMTFmOTg2NjIxYTM5NzEuLjc5MTM0MDJmZDYyOGZiODQxMzdiNDFm
MzRhMjU0OWMwMDA2NTVjMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250
RmFjZVNldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNldC5oCkBAIC0y
Myw4ICsyMyw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgQ1NTRm9udEZhY2VT
ZXRfaAotI2RlZmluZSBDU1NGb250RmFjZVNldF9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUg
IkNTU0ZvbnRGYWNlLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTY0LDIzICs2Mywy
MCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhcigpOwogICAgIENTU0ZvbnRGYWNlJiBvcGVyYXRv
cltdKHNpemVfdCBpKTsKIAotICAgIENTU0ZvbnRGYWNlKiBsb29rdXBCeUNTU0Nvbm5lY3Rpb24o
U3R5bGVSdWxlRm9udEZhY2UmKTsKKyAgICBDU1NGb250RmFjZSogbG9va1VwQnlDU1NDb25uZWN0
aW9uKFN0eWxlUnVsZUZvbnRGYWNlJik7CiAKLSAgICBib29sIGNoZWNrKGNvbnN0IFN0cmluZyYg
Zm9udCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBFeGNlcHRpb25Db2RlJik7CisgICAgRXhjZXB0aW9u
T3I8Ym9vbD4gY2hlY2soY29uc3QgU3RyaW5nJiBmb250LCBjb25zdCBTdHJpbmcmIHRleHQpOwog
Ci0gICAgQ1NTU2VnbWVudGVkRm9udEZhY2UqIGdldEZvbnRGYWNlKEZvbnRUcmFpdHNNYXNrLCBj
b25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSk7CisgICAgQ1NTU2VnbWVudGVkRm9udEZhY2UqIGZv
bnRGYWNlKEZvbnRUcmFpdHNNYXNrLCBjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSk7CiAKLSAg
ICBlbnVtIGNsYXNzIFN0YXR1cyB7Ci0gICAgICAgIExvYWRpbmcsCi0gICAgICAgIExvYWRlZAot
ICAgIH07CisgICAgZW51bSBjbGFzcyBTdGF0dXMgeyBMb2FkaW5nLCBMb2FkZWQgfTsKICAgICBT
dGF0dXMgc3RhdHVzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXM7IH0KIAotICAgIFZlY3Rvcjxz
dGQ6OnJlZmVyZW5jZV93cmFwcGVyPENTU0ZvbnRGYWNlPj4gbWF0Y2hpbmdGYWNlcyhjb25zdCBT
dHJpbmcmIGZvbnQsIGNvbnN0IFN0cmluZyYgdGV4dCwgRXhjZXB0aW9uQ29kZSYpOworICAgIEV4
Y2VwdGlvbk9yPFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPENTU0ZvbnRGYWNlPj4+IG1h
dGNoaW5nRmFjZXMoY29uc3QgU3RyaW5nJiBmb250LCBjb25zdCBTdHJpbmcmIHRleHQpOwogCiAg
ICAgLy8gQ1NTRm9udEZhY2U6OkNsaWVudCBuZWVkcyB0byBiZSBhYmxlIHRvIGJlIGhlbGQgaW4g
YSBSZWZQdHIuCi0gICAgdm9pZCByZWYoKSBvdmVycmlkZSB7IFJlZkNvdW50ZWQ8Q1NTRm9udEZh
Y2VTZXQ+OjpyZWYoKTsgfQotICAgIHZvaWQgZGVyZWYoKSBvdmVycmlkZSB7IFJlZkNvdW50ZWQ8
Q1NTRm9udEZhY2VTZXQ+OjpkZXJlZigpOyB9CisgICAgdm9pZCByZWYoKSBmaW5hbCB7IFJlZkNv
dW50ZWQ6OnJlZigpOyB9CisgICAgdm9pZCBkZXJlZigpIGZpbmFsIHsgUmVmQ291bnRlZDo6ZGVy
ZWYoKTsgfQogCiBwcml2YXRlOgogICAgIENTU0ZvbnRGYWNlU2V0KCk7CkBAIC05MSw4ICs4Nyw4
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbmNyZW1lbnRBY3RpdmVDb3VudCgpOwogICAgIHZvaWQg
ZGVjcmVtZW50QWN0aXZlQ291bnQoKTsKIAotICAgIHZvaWQgZm9udFN0YXRlQ2hhbmdlZChDU1NG
b250RmFjZSYsIENTU0ZvbnRGYWNlOjpTdGF0dXMgb2xkU3RhdGUsIENTU0ZvbnRGYWNlOjpTdGF0
dXMgbmV3U3RhdGUpIG92ZXJyaWRlOwotICAgIHZvaWQgZm9udFByb3BlcnR5Q2hhbmdlZChDU1NG
b250RmFjZSYsIENTU1ZhbHVlTGlzdCogb2xkRmFtaWxpZXMgPSBudWxscHRyKSBvdmVycmlkZTsK
KyAgICB2b2lkIGZvbnRTdGF0ZUNoYW5nZWQoQ1NTRm9udEZhY2UmLCBDU1NGb250RmFjZTo6U3Rh
dHVzIG9sZFN0YXRlLCBDU1NGb250RmFjZTo6U3RhdHVzIG5ld1N0YXRlKSBmaW5hbDsKKyAgICB2
b2lkIGZvbnRQcm9wZXJ0eUNoYW5nZWQoQ1NTRm9udEZhY2UmLCBDU1NWYWx1ZUxpc3QqIG9sZEZh
bWlsaWVzID0gbnVsbHB0cikgZmluYWw7CiAKICAgICB2b2lkIGVuc3VyZUxvY2FsRm9udEZhY2Vz
Rm9yRmFtaWx5UmVnaXN0ZXJlZChjb25zdCBTdHJpbmcmKTsKIApAQCAtMTExLDUgKzEwNywzIEBA
IHByaXZhdGU6CiB9OwogCiB9Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVj
dG9yLmNwcAppbmRleCA1ZWUwODcyMGI2YjkwMWI2Y2U1M2ZhMWJhNTE1N2Y4NDIyMWI1MjFmLi5i
NGVjNDRkN2RhNzgzOTg2MzllN2EzNDIzZGVmMmE5OTI2NmYxOWQ4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRm9udFNlbGVjdG9yLmNwcApAQCAtMjA1LDcgKzIwNSw3IEBAIHZvaWQgQ1NTRm9udFNl
bGVjdG9yOjphZGRGb250RmFjZVJ1bGUoU3R5bGVSdWxlRm9udEZhY2UmIGZvbnRGYWNlUnVsZSwg
Ym9vbCBpc0luCiAgICAgaWYgKGZvbnRGYWNlLT5hbGxTb3VyY2VzRmFpbGVkKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGlmIChSZWZQdHI8Q1NTRm9udEZhY2U+IGV4aXN0aW5nRmFjZSA9IG1f
Y3NzRm9udEZhY2VTZXQtPmxvb2t1cEJ5Q1NTQ29ubmVjdGlvbihmb250RmFjZVJ1bGUpKSB7Cisg
ICAgaWYgKFJlZlB0cjxDU1NGb250RmFjZT4gZXhpc3RpbmdGYWNlID0gbV9jc3NGb250RmFjZVNl
dC0+bG9va1VwQnlDU1NDb25uZWN0aW9uKGZvbnRGYWNlUnVsZSkpIHsKICAgICAgICAgbV9jc3NG
b250RmFjZVNldC0+cmVtb3ZlKCpleGlzdGluZ0ZhY2UpOwogICAgICAgICBpZiAoYXV0byogZXhp
c3RpbmdXcmFwcGVyID0gZXhpc3RpbmdGYWNlLT5leGlzdGluZ1dyYXBwZXIoKSkKICAgICAgICAg
ICAgIGV4aXN0aW5nV3JhcHBlci0+YWRvcHQoZm9udEZhY2UuZ2V0KCkpOwpAQCAtMjg2LDcgKzI4
Niw3IEBAIEZvbnRSYW5nZXMgQ1NTRm9udFNlbGVjdG9yOjpmb250UmFuZ2VzRm9yRmFtaWx5KGNv
bnN0IEZvbnREZXNjcmlwdGlvbiYgZm9udERlc2NyCiAgICAgYm9vbCByZXNvbHZlR2VuZXJpY0Zh
bWlseUZpcnN0ID0gZmFtaWx5TmFtZSA9PSBzdGFuZGFyZEZhbWlseTsKIAogICAgIEF0b21pY1N0
cmluZyBmYW1pbHlGb3JMb29rdXAgPSByZXNvbHZlR2VuZXJpY0ZhbWlseUZpcnN0ID8gcmVzb2x2
ZUdlbmVyaWNGYW1pbHkobV9kb2N1bWVudCwgZm9udERlc2NyaXB0aW9uLCBmYW1pbHlOYW1lKSA6
IGZhbWlseU5hbWU7Ci0gICAgQ1NTU2VnbWVudGVkRm9udEZhY2UqIGZhY2UgPSBtX2Nzc0ZvbnRG
YWNlU2V0LT5nZXRGb250RmFjZShmb250RGVzY3JpcHRpb24udHJhaXRzTWFzaygpLCBmYW1pbHlG
b3JMb29rdXApOworICAgIGF1dG8qIGZhY2UgPSBtX2Nzc0ZvbnRGYWNlU2V0LT5mb250RmFjZShm
b250RGVzY3JpcHRpb24udHJhaXRzTWFzaygpLCBmYW1pbHlGb3JMb29rdXApOwogICAgIGlmICgh
ZmFjZSkgewogICAgICAgICBpZiAoIXJlc29sdmVHZW5lcmljRmFtaWx5Rmlyc3QpCiAgICAgICAg
ICAgICBmYW1pbHlGb3JMb29rdXAgPSByZXNvbHZlR2VuZXJpY0ZhbWlseShtX2RvY3VtZW50LCBm
b250RGVzY3JpcHRpb24sIGZhbWlseU5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50
VmFsdWUuY3BwCmluZGV4IDVjYWEyNDEzNWMyNzM2ZmVlZmJhYjA5YTI0ZDc3NTBlY2JhMGVmYjcu
LjU5NTFjYWJmNGZhNTczM2IzODc4NjhhZmE1MGYwYzhkZGQxMTkwM2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAKQEAgLTc1LDggKzc1LDggQEAgUmVmUHRyPEltYWdl
PiBDU1NHcmFkaWVudFZhbHVlOjppbWFnZShSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgY29uc3Qg
RmxvYXRTaXplJgogLy8gU2hvdWxkIG9ubHkgZXZlciBiZSBjYWxsZWQgZm9yIGRlcHJlY2F0ZWQg
Z3JhZGllbnRzLgogc3RhdGljIGlubGluZSBib29sIGNvbXBhcmVTdG9wcyhjb25zdCBDU1NHcmFk
aWVudENvbG9yU3RvcCYgYSwgY29uc3QgQ1NTR3JhZGllbnRDb2xvclN0b3AmIGIpCiB7Ci0gICAg
ZG91YmxlIGFWYWwgPSBhLm1fcG9zaXRpb24tPmdldERvdWJsZVZhbHVlKENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfTlVNQkVSKTsKLSAgICBkb3VibGUgYlZhbCA9IGIubV9wb3NpdGlvbi0+Z2V0RG91
YmxlVmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOworICAgIGRvdWJsZSBhVmFs
ID0gYS5tX3Bvc2l0aW9uLT5kb3VibGVWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJF
Uik7CisgICAgZG91YmxlIGJWYWwgPSBiLm1fcG9zaXRpb24tPmRvdWJsZVZhbHVlKENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKIAogICAgIHJldHVybiBhVmFsIDwgYlZhbDsKIH0KQEAg
LTE2MCw5ICsxNjAsOSBAQCB2b2lkIENTU0dyYWRpZW50VmFsdWU6OmFkZFN0b3BzKEdyYWRpZW50
JiBncmFkaWVudCwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRAogCiAgICAgICAgICAgICBm
bG9hdCBvZmZzZXQ7CiAgICAgICAgICAgICBpZiAoc3RvcC5tX3Bvc2l0aW9uLT5pc1BlcmNlbnRh
Z2UoKSkKLSAgICAgICAgICAgICAgICBvZmZzZXQgPSBzdG9wLm1fcG9zaXRpb24tPmdldEZsb2F0
VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKSAvIDEwMDsKKyAgICAgICAg
ICAgICAgICBvZmZzZXQgPSBzdG9wLm1fcG9zaXRpb24tPmZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19QRVJDRU5UQUdFKSAvIDEwMDsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICBvZmZzZXQgPSBzdG9wLm1fcG9zaXRpb24tPmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19OVU1CRVIpOworICAgICAgICAgICAgICAgIG9mZnNldCA9IHN0b3AubV9w
b3NpdGlvbi0+ZmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7CiAKICAg
ICAgICAgICAgIGdyYWRpZW50LmFkZENvbG9yU3RvcChvZmZzZXQsIHN0b3AubV9yZXNvbHZlZENv
bG9yKTsKICAgICAgICAgfQpAQCAtMTk1LDcgKzE5NSw3IEBAIHZvaWQgQ1NTR3JhZGllbnRWYWx1
ZTo6YWRkU3RvcHMoR3JhZGllbnQmIGdyYWRpZW50LCBjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNp
b25ECiAgICAgICAgIGlmIChzdG9wLm1fcG9zaXRpb24pIHsKICAgICAgICAgICAgIGNvbnN0IENT
U1ByaW1pdGl2ZVZhbHVlJiBwb3NpdGlvblZhbHVlID0gKnN0b3AubV9wb3NpdGlvbjsKICAgICAg
ICAgICAgIGlmIChwb3NpdGlvblZhbHVlLmlzUGVyY2VudGFnZSgpKQotICAgICAgICAgICAgICAg
IHN0b3BzW2ldLm9mZnNldCA9IHBvc2l0aW9uVmFsdWUuZ2V0RmxvYXRWYWx1ZShDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpIC8gMTAwOworICAgICAgICAgICAgICAgIHN0b3BzW2ld
Lm9mZnNldCA9IHBvc2l0aW9uVmFsdWUuZmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X1BFUkNFTlRBR0UpIC8gMTAwOwogICAgICAgICAgICAgZWxzZSBpZiAocG9zaXRpb25WYWx1ZS5p
c0xlbmd0aCgpIHx8IHBvc2l0aW9uVmFsdWUuaXNWaWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgoKSB8
fCBwb3NpdGlvblZhbHVlLmlzQ2FsY3VsYXRlZFBlcmNlbnRhZ2VXaXRoTGVuZ3RoKCkpIHsKICAg
ICAgICAgICAgICAgICBpZiAoIWNvbXB1dGVkR3JhZGllbnRMZW5ndGgpIHsKICAgICAgICAgICAg
ICAgICAgICAgRmxvYXRTaXplIGdyYWRpZW50U2l6ZShncmFkaWVudFN0YXJ0IC0gZ3JhZGllbnRF
bmQpOwpAQCAtNDk3LDE4ICs0OTcsMTggQEAgdm9pZCBDU1NHcmFkaWVudFZhbHVlOjphZGRTdG9w
cyhHcmFkaWVudCYgZ3JhZGllbnQsIGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkQKIHN0YXRp
YyBmbG9hdCBwb3NpdGlvbkZyb21WYWx1ZShDU1NQcmltaXRpdmVWYWx1ZSYgdmFsdWUsIGNvbnN0
IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmIGNvbnZlcnNpb25EYXRhLCBjb25zdCBGbG9hdFNp
emUmIHNpemUsIGJvb2wgaXNIb3Jpem9udGFsKQogewogICAgIGlmICh2YWx1ZS5pc051bWJlcigp
KQotICAgICAgICByZXR1cm4gdmFsdWUuZ2V0RmxvYXRWYWx1ZSgpICogY29udmVyc2lvbkRhdGEu
em9vbSgpOworICAgICAgICByZXR1cm4gdmFsdWUuZmxvYXRWYWx1ZSgpICogY29udmVyc2lvbkRh
dGEuem9vbSgpOwogCiAgICAgaW50IGVkZ2VEaXN0YW5jZSA9IGlzSG9yaXpvbnRhbCA/IHNpemUu
d2lkdGgoKSA6IHNpemUuaGVpZ2h0KCk7CiAgICAgaWYgKHZhbHVlLmlzUGVyY2VudGFnZSgpKQot
ICAgICAgICByZXR1cm4gdmFsdWUuZ2V0RmxvYXRWYWx1ZSgpIC8gMTAwLmYgKiBlZGdlRGlzdGFu
Y2U7CisgICAgICAgIHJldHVybiB2YWx1ZS5mbG9hdFZhbHVlKCkgLyAxMDAuZiAqIGVkZ2VEaXN0
YW5jZTsKIAogICAgIGlmICh2YWx1ZS5pc0NhbGN1bGF0ZWRQZXJjZW50YWdlV2l0aExlbmd0aCgp
KSB7CiAgICAgICAgIFJlZjxDYWxjdWxhdGlvblZhbHVlPiBjYWxjdWxhdGlvblZhbHVlIHsgdmFs
dWUuY3NzQ2FsY1ZhbHVlKCktPmNyZWF0ZUNhbGN1bGF0aW9uVmFsdWUoY29udmVyc2lvbkRhdGEp
IH07CiAgICAgICAgIHJldHVybiBjYWxjdWxhdGlvblZhbHVlLT5ldmFsdWF0ZShlZGdlRGlzdGFu
Y2UpOwogICAgIH0KIAotICAgIHN3aXRjaCAodmFsdWUuZ2V0VmFsdWVJRCgpKSB7CisgICAgc3dp
dGNoICh2YWx1ZS52YWx1ZUlEKCkpIHsKICAgICBjYXNlIENTU1ZhbHVlVG9wOgogICAgICAgICBB
U1NFUlQoIWlzSG9yaXpvbnRhbCk7CiAgICAgICAgIHJldHVybiAwOwpAQCAtNTgxLDIwICs1ODEs
MjAgQEAgU3RyaW5nIENTU0xpbmVhckdyYWRpZW50VmFsdWU6OmN1c3RvbUNTU1RleHQoKSBjb25z
dAogICAgICAgICByZXN1bHQuYXBwZW5kKCcgJyk7CiAgICAgICAgIHJlc3VsdC5hcHBlbmQobV9z
ZWNvbmRZLT5jc3NUZXh0KCkpOwogCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBt
X3N0b3BzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgICAgICBjb25zdCBDU1NHcmFkaWVudENvbG9y
U3RvcCYgc3RvcCA9IG1fc3RvcHNbaV07CisgICAgICAgIGZvciAoYXV0byYgc3RvcCA6IG1fc3Rv
cHMpIHsKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCIsICIpOwotICAgICAgICAg
ICAgaWYgKHN0b3AubV9wb3NpdGlvbi0+Z2V0RG91YmxlVmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19OVU1CRVIpID09IDApIHsKKyAgICAgICAgICAgIGF1dG8gcG9zaXRpb24gPSBzdG9wLm1f
cG9zaXRpb24tPmRvdWJsZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKKyAg
ICAgICAgICAgIGlmICghcG9zaXRpb24pIHsKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5k
TGl0ZXJhbCgiZnJvbSgiKTsKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHN0b3AubV9j
b2xvci0+Y3NzVGV4dCgpKTsKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcpJyk7Ci0g
ICAgICAgICAgICB9IGVsc2UgaWYgKHN0b3AubV9wb3NpdGlvbi0+Z2V0RG91YmxlVmFsdWUoQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpID09IDEpIHsKKyAgICAgICAgICAgIH0gZWxzZSBp
ZiAocG9zaXRpb24gPT0gMSkgewogICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFs
KCJ0bygiKTsKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHN0b3AubV9jb2xvci0+Y3Nz
VGV4dCgpKTsKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcpJyk7CiAgICAgICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJjb2xvci1z
dG9wKCIpOwotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmROdW1iZXIoc3RvcC5tX3Bvc2l0
aW9uLT5nZXREb3VibGVWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikpOworICAg
ICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmROdW1iZXIocG9zaXRpb24pOwogICAgICAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCIsICIpOwogICAgICAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoc3RvcC5tX2NvbG9yLT5jc3NUZXh0KCkpOwogICAgICAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoJyknKTsKQEAgLTY0Miw3ICs2NDIsNyBAQCBTdHJpbmcgQ1NTTGluZWFyR3JhZGllbnRW
YWx1ZTo6Y3VzdG9tQ1NTVGV4dCgpIGNvbnN0CiAgICAgICAgIGlmIChtX2FuZ2xlICYmIG1fYW5n
bGUtPmNvbXB1dGVEZWdyZWVzKCkgIT0gMTgwKSB7CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5k
KG1fYW5nbGUtPmNzc1RleHQoKSk7CiAgICAgICAgICAgICB3cm90ZVNvbWV0aGluZyA9IHRydWU7
Ci0gICAgICAgIH0gZWxzZSBpZiAoKG1fZmlyc3RYIHx8IG1fZmlyc3RZKSAmJiAhKCFtX2ZpcnN0
WCAmJiBtX2ZpcnN0WSAmJiBtX2ZpcnN0WS0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlQm90dG9t
KSkgeworICAgICAgICB9IGVsc2UgaWYgKChtX2ZpcnN0WCB8fCBtX2ZpcnN0WSkgJiYgISghbV9m
aXJzdFggJiYgbV9maXJzdFkgJiYgbV9maXJzdFktPnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUJvdHRv
bSkpIHsKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJ0byAiKTsKICAgICAgICAg
ICAgIGlmIChtX2ZpcnN0WCAmJiBtX2ZpcnN0WSkgewogICAgICAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQobV9maXJzdFgtPmNzc1RleHQoKSk7CkBAIC03NTQsNyArNzU0LDcgQEAgUmVmPEdyYWRp
ZW50PiBDU1NMaW5lYXJHcmFkaWVudFZhbHVlOjpjcmVhdGVHcmFkaWVudChSZW5kZXJFbGVtZW50
JiByZW5kZXJlciwgY28KICAgICBGbG9hdFBvaW50IGZpcnN0UG9pbnQ7CiAgICAgRmxvYXRQb2lu
dCBzZWNvbmRQb2ludDsKICAgICBpZiAobV9hbmdsZSkgewotICAgICAgICBmbG9hdCBhbmdsZSA9
IG1fYW5nbGUtPmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19ERUcpOworICAg
ICAgICBmbG9hdCBhbmdsZSA9IG1fYW5nbGUtPmZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19ERUcpOwogICAgICAgICBlbmRQb2ludHNGcm9tQW5nbGUoYW5nbGUsIHNpemUsIGZpcnN0
UG9pbnQsIHNlY29uZFBvaW50LCBtX2dyYWRpZW50VHlwZSk7CiAgICAgfSBlbHNlIHsKICAgICAg
ICAgc3dpdGNoIChtX2dyYWRpZW50VHlwZSkgewpAQCAtNzgxLDkgKzc4MSw5IEBAIFJlZjxHcmFk
aWVudD4gQ1NTTGluZWFyR3JhZGllbnRWYWx1ZTo6Y3JlYXRlR3JhZGllbnQoUmVuZGVyRWxlbWVu
dCYgcmVuZGVyZXIsIGNvCiAgICAgICAgICAgICAgICAgLy8gIk1hZ2ljIiBjb3JuZXJzLCBzbyB0
aGUgNTAlIGxpbmUgdG91Y2hlcyB0d28gY29ybmVycy4KICAgICAgICAgICAgICAgICBmbG9hdCBy
aXNlID0gc2l6ZS53aWR0aCgpOwogICAgICAgICAgICAgICAgIGZsb2F0IHJ1biA9IHNpemUuaGVp
Z2h0KCk7Ci0gICAgICAgICAgICAgICAgaWYgKG1fZmlyc3RYICYmIG1fZmlyc3RYLT5nZXRWYWx1
ZUlEKCkgPT0gQ1NTVmFsdWVMZWZ0KQorICAgICAgICAgICAgICAgIGlmIChtX2ZpcnN0WCAmJiBt
X2ZpcnN0WC0+dmFsdWVJRCgpID09IENTU1ZhbHVlTGVmdCkKICAgICAgICAgICAgICAgICAgICAg
cnVuICo9IC0xOwotICAgICAgICAgICAgICAgIGlmIChtX2ZpcnN0WSAmJiBtX2ZpcnN0WS0+Z2V0
VmFsdWVJRCgpID09IENTU1ZhbHVlQm90dG9tKQorICAgICAgICAgICAgICAgIGlmIChtX2ZpcnN0
WSAmJiBtX2ZpcnN0WS0+dmFsdWVJRCgpID09IENTU1ZhbHVlQm90dG9tKQogICAgICAgICAgICAg
ICAgICAgICByaXNlICo9IC0xOwogICAgICAgICAgICAgICAgIC8vIENvbXB1dGUgYW5nbGUsIGFu
ZCBmbGlwIGl0IGJhY2sgdG8gImJlYXJpbmcgYW5nbGUiIGRlZ3JlZXMuCiAgICAgICAgICAgICAg
ICAgZmxvYXQgYW5nbGUgPSA5MCAtIHJhZDJkZWcoYXRhbjIocmlzZSwgcnVuKSk7CkBAIC04NjIs
MjAgKzg2MiwyMCBAQCBTdHJpbmcgQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6Y3VzdG9tQ1NTVGV4
dCgpIGNvbnN0CiAgICAgICAgIHJlc3VsdC5hcHBlbmQobV9zZWNvbmRSYWRpdXMtPmNzc1RleHQo
KSk7CiAKICAgICAgICAgLy8gRklYTUU6IHNoYXJlPwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbV9zdG9wcy5zaXplKCk7IGkrKykgewotICAgICAgICAgICAgY29uc3QgQ1NTR3Jh
ZGllbnRDb2xvclN0b3AmIHN0b3AgPSBtX3N0b3BzW2ldOworICAgICAgICBmb3IgKGF1dG8mIHN0
b3AgOiBtX3N0b3BzKSB7CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiLCAiKTsK
LSAgICAgICAgICAgIGlmIChzdG9wLm1fcG9zaXRpb24tPmdldERvdWJsZVZhbHVlKENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSA9PSAwKSB7CisgICAgICAgICAgICBhdXRvIHBvc2l0aW9u
ID0gc3RvcC5tX3Bvc2l0aW9uLT5kb3VibGVWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05V
TUJFUik7CisgICAgICAgICAgICBpZiAoIXBvc2l0aW9uKSB7CiAgICAgICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZExpdGVyYWwoImZyb20oIik7CiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZChzdG9wLm1fY29sb3ItPmNzc1RleHQoKSk7CiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZCgnKScpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChzdG9wLm1fcG9zaXRpb24tPmdldERvdWJs
ZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSA9PSAxKSB7CisgICAgICAgICAg
ICB9IGVsc2UgaWYgKHBvc2l0aW9uID09IDEpIHsKICAgICAgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kTGl0ZXJhbCgidG8oIik7CiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChzdG9wLm1f
Y29sb3ItPmNzc1RleHQoKSk7CiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnKScpOwog
ICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJh
bCgiY29sb3Itc3RvcCgiKTsKLSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kTnVtYmVyKHN0
b3AubV9wb3NpdGlvbi0+Z2V0RG91YmxlVmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1C
RVIpKTsKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kTnVtYmVyKHBvc2l0aW9uKTsKICAg
ICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKICAgICAgICAgICAgICAg
ICByZXN1bHQuYXBwZW5kKHN0b3AubV9jb2xvci0+Y3NzVGV4dCgpKTsKICAgICAgICAgICAgICAg
ICByZXN1bHQuYXBwZW5kKCcpJyk7CkBAIC05MzcsMTIgKzkzNywxMiBAQCBTdHJpbmcgQ1NTUmFk
aWFsR3JhZGllbnRWYWx1ZTo6Y3VzdG9tQ1NTVGV4dCgpIGNvbnN0CiAKICAgICAgICAgLy8gVGhl
IG9ubHkgYW1iaWd1b3VzIGNhc2UgdGhhdCBuZWVkcyBhbiBleHBsaWNpdCBzaGFwZSB0byBiZSBw
cm92aWRlZAogICAgICAgICAvLyBpcyB3aGVuIGEgc2l6aW5nIGtleXdvcmQgaXMgdXNlZCAob3Ig
YWxsIHNpemluZyBpcyBvbWl0dGVkKS4KLSAgICAgICAgaWYgKG1fc2hhcGUgJiYgbV9zaGFwZS0+
Z2V0VmFsdWVJRCgpICE9IENTU1ZhbHVlRWxsaXBzZSAmJiAobV9zaXppbmdCZWhhdmlvciB8fCAo
IW1fc2l6aW5nQmVoYXZpb3IgJiYgIW1fZW5kSG9yaXpvbnRhbFNpemUpKSkgeworICAgICAgICBp
ZiAobV9zaGFwZSAmJiBtX3NoYXBlLT52YWx1ZUlEKCkgIT0gQ1NTVmFsdWVFbGxpcHNlICYmICht
X3NpemluZ0JlaGF2aW9yIHx8ICghbV9zaXppbmdCZWhhdmlvciAmJiAhbV9lbmRIb3Jpem9udGFs
U2l6ZSkpKSB7CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiY2lyY2xlIik7CiAg
ICAgICAgICAgICB3cm90ZVNvbWV0aGluZyA9IHRydWU7CiAgICAgICAgIH0KIAotICAgICAgICBp
ZiAobV9zaXppbmdCZWhhdmlvciAmJiBtX3NpemluZ0JlaGF2aW9yLT5nZXRWYWx1ZUlEKCkgIT0g
Q1NTVmFsdWVGYXJ0aGVzdENvcm5lcikgeworICAgICAgICBpZiAobV9zaXppbmdCZWhhdmlvciAm
JiBtX3NpemluZ0JlaGF2aW9yLT52YWx1ZUlEKCkgIT0gQ1NTVmFsdWVGYXJ0aGVzdENvcm5lcikg
ewogICAgICAgICAgICAgaWYgKHdyb3RlU29tZXRoaW5nKQogICAgICAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoJyAnKTsKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQobV9zaXppbmdCZWhhdmlv
ci0+Y3NzVGV4dCgpKTsKQEAgLTk5OSw5ICs5OTksOSBAQCBmbG9hdCBDU1NSYWRpYWxHcmFkaWVu
dFZhbHVlOjpyZXNvbHZlUmFkaXVzKENTU1ByaW1pdGl2ZVZhbHVlJiByYWRpdXMsIGNvbnN0IENT
UwogewogICAgIGZsb2F0IHJlc3VsdCA9IDA7CiAgICAgaWYgKHJhZGl1cy5pc051bWJlcigpKSAv
LyBDYW4gdGhlIHJhZGl1cyBiZSBhIHBlcmNlbnRhZ2U/Ci0gICAgICAgIHJlc3VsdCA9IHJhZGl1
cy5nZXRGbG9hdFZhbHVlKCkgKiBjb252ZXJzaW9uRGF0YS56b29tKCk7CisgICAgICAgIHJlc3Vs
dCA9IHJhZGl1cy5mbG9hdFZhbHVlKCkgKiBjb252ZXJzaW9uRGF0YS56b29tKCk7CiAgICAgZWxz
ZSBpZiAod2lkdGhPckhlaWdodCAmJiByYWRpdXMuaXNQZXJjZW50YWdlKCkpCi0gICAgICAgIHJl
c3VsdCA9ICp3aWR0aE9ySGVpZ2h0ICogcmFkaXVzLmdldEZsb2F0VmFsdWUoKSAvIDEwMDsKKyAg
ICAgICAgcmVzdWx0ID0gKndpZHRoT3JIZWlnaHQgKiByYWRpdXMuZmxvYXRWYWx1ZSgpIC8gMTAw
OwogICAgIGVsc2UKICAgICAgICAgcmVzdWx0ID0gcmFkaXVzLmNvbXB1dGVMZW5ndGg8ZmxvYXQ+
KGNvbnZlcnNpb25EYXRhKTsKIApAQCAtMTEyMiwxNCArMTEyMiwxNCBAQCBSZWY8R3JhZGllbnQ+
IENTU1JhZGlhbEdyYWRpZW50VmFsdWU6OmNyZWF0ZUdyYWRpZW50KFJlbmRlckVsZW1lbnQmIHJl
bmRlcmVyLCBjbwogICAgIH0gZWxzZSB7CiAgICAgICAgIGVudW0gR3JhZGllbnRTaGFwZSB7IENp
cmNsZSwgRWxsaXBzZSB9OwogICAgICAgICBHcmFkaWVudFNoYXBlIHNoYXBlID0gRWxsaXBzZTsK
LSAgICAgICAgaWYgKChtX3NoYXBlICYmIG1fc2hhcGUtPmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1
ZUNpcmNsZSkKKyAgICAgICAgaWYgKChtX3NoYXBlICYmIG1fc2hhcGUtPnZhbHVlSUQoKSA9PSBD
U1NWYWx1ZUNpcmNsZSkKICAgICAgICAgICAgIHx8ICghbV9zaGFwZSAmJiAhbV9zaXppbmdCZWhh
dmlvciAmJiBtX2VuZEhvcml6b250YWxTaXplICYmICFtX2VuZFZlcnRpY2FsU2l6ZSkpCiAgICAg
ICAgICAgICBzaGFwZSA9IENpcmNsZTsKIAogICAgICAgICBlbnVtIEdyYWRpZW50RmlsbCB7IENs
b3Nlc3RTaWRlLCBDbG9zZXN0Q29ybmVyLCBGYXJ0aGVzdFNpZGUsIEZhcnRoZXN0Q29ybmVyIH07
CiAgICAgICAgIEdyYWRpZW50RmlsbCBmaWxsID0gRmFydGhlc3RDb3JuZXI7CiAKLSAgICAgICAg
c3dpdGNoIChtX3NpemluZ0JlaGF2aW9yID8gbV9zaXppbmdCZWhhdmlvci0+Z2V0VmFsdWVJRCgp
IDogMCkgeworICAgICAgICBzd2l0Y2ggKG1fc2l6aW5nQmVoYXZpb3IgPyBtX3NpemluZ0JlaGF2
aW9yLT52YWx1ZUlEKCkgOiAwKSB7CiAgICAgICAgIGNhc2UgQ1NTVmFsdWVDb250YWluOgogICAg
ICAgICBjYXNlIENTU1ZhbHVlQ2xvc2VzdFNpZGU6CiAgICAgICAgICAgICBmaWxsID0gQ2xvc2Vz
dFNpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JvdXBpbmdSdWxlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcm91cGluZ1J1bGUuY3BwCmluZGV4IDVhNmQ1ZjAy
OWJjZTEyODY3Yjk0YzQzODk2ZjlkYjkwNDJlZDEzOWIuLmI0ZmY2MDc0MzkyYmQwZTRhOTk3ZWFm
ZWFlMGFiNDU5MTcwNTE4NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcm91
cGluZ1J1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcm91cGluZ1J1bGUuY3Bw
CkBAIC01NywxNCArNTcsMTMgQEAgQ1NTR3JvdXBpbmdSdWxlOjp+Q1NTR3JvdXBpbmdSdWxlKCkK
ICAgICB9CiB9CiAKLXVuc2lnbmVkIENTU0dyb3VwaW5nUnVsZTo6aW5zZXJ0UnVsZShjb25zdCBT
dHJpbmcmIHJ1bGVTdHJpbmcsIHVuc2lnbmVkIGluZGV4LCBFeGNlcHRpb25Db2RlJiBlYykKK0V4
Y2VwdGlvbk9yPHVuc2lnbmVkPiBDU1NHcm91cGluZ1J1bGU6Omluc2VydFJ1bGUoY29uc3QgU3Ry
aW5nJiBydWxlU3RyaW5nLCB1bnNpZ25lZCBpbmRleCkKIHsKICAgICBBU1NFUlQobV9jaGlsZFJ1
bGVDU1NPTVdyYXBwZXJzLnNpemUoKSA9PSBtX2dyb3VwUnVsZS0+Y2hpbGRSdWxlcygpLnNpemUo
KSk7CiAKICAgICBpZiAoaW5kZXggPiBtX2dyb3VwUnVsZS0+Y2hpbGRSdWxlcygpLnNpemUoKSkg
ewogICAgICAgICAvLyBJTkRFWF9TSVpFX0VSUjogUmFpc2VkIGlmIHRoZSBzcGVjaWZpZWQgaW5k
ZXggaXMgbm90IGEgdmFsaWQgaW5zZXJ0aW9uIHBvaW50LgotICAgICAgICBlYyA9IElOREVYX1NJ
WkVfRVJSOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElO
REVYX1NJWkVfRVJSIH07CiAgICAgfQogCiAgICAgQ1NTUGFyc2VyIHBhcnNlcihwYXJzZXJDb250
ZXh0KCkpOwpAQCAtNzIsOCArNzEsNyBAQCB1bnNpZ25lZCBDU1NHcm91cGluZ1J1bGU6Omluc2Vy
dFJ1bGUoY29uc3QgU3RyaW5nJiBydWxlU3RyaW5nLCB1bnNpZ25lZCBpbmRleCwgRQogICAgIFJl
ZlB0cjxTdHlsZVJ1bGVCYXNlPiBuZXdSdWxlID0gcGFyc2VyLnBhcnNlUnVsZShzdHlsZVNoZWV0
ID8gJnN0eWxlU2hlZXQtPmNvbnRlbnRzKCkgOiBudWxscHRyLCBydWxlU3RyaW5nKTsKICAgICBp
ZiAoIW5ld1J1bGUpIHsKICAgICAgICAgLy8gU1lOVEFYX0VSUjogUmFpc2VkIGlmIHRoZSBzcGVj
aWZpZWQgcnVsZSBoYXMgYSBzeW50YXggZXJyb3IgYW5kIGlzIHVucGFyc2FibGUuCi0gICAgICAg
IGVjID0gU1lOVEFYX0VSUjsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBTWU5UQVhfRVJSIH07CiAgICAgfQogCiAgICAgaWYgKG5ld1J1bGUtPmlzSW1wb3J0
UnVsZSgpKSB7CkBAIC04NCw4ICs4Miw3IEBAIHVuc2lnbmVkIENTU0dyb3VwaW5nUnVsZTo6aW5z
ZXJ0UnVsZShjb25zdCBTdHJpbmcmIHJ1bGVTdHJpbmcsIHVuc2lnbmVkIGluZGV4LCBFCiAgICAg
ICAgIC8vIEhJRVJBUkNIWV9SRVFVRVNUX0VSUjogUmFpc2VkIGlmIHRoZSBydWxlIGNhbm5vdCBi
ZSBpbnNlcnRlZCBhdCB0aGUgc3BlY2lmaWVkCiAgICAgICAgIC8vIGluZGV4LCBlLmcuLCBpZiBh
biBAaW1wb3J0IHJ1bGUgaXMgaW5zZXJ0ZWQgYWZ0ZXIgYSBzdGFuZGFyZCBydWxlIHNldCBvciBv
dGhlcgogICAgICAgICAvLyBhdC1ydWxlLgotICAgICAgICBlYyA9IEhJRVJBUkNIWV9SRVFVRVNU
X0VSUjsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBISUVS
QVJDSFlfUkVRVUVTVF9FUlIgfTsKICAgICB9CiAgICAgQ1NTU3R5bGVTaGVldDo6UnVsZU11dGF0
aW9uU2NvcGUgbXV0YXRpb25TY29wZSh0aGlzKTsKIApAQCAtOTUsMTUgKzkyLDE0IEBAIHVuc2ln
bmVkIENTU0dyb3VwaW5nUnVsZTo6aW5zZXJ0UnVsZShjb25zdCBTdHJpbmcmIHJ1bGVTdHJpbmcs
IHVuc2lnbmVkIGluZGV4LCBFCiAgICAgcmV0dXJuIGluZGV4OwogfQogCi12b2lkIENTU0dyb3Vw
aW5nUnVsZTo6ZGVsZXRlUnVsZSh1bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMpCitF
eGNlcHRpb25Pcjx2b2lkPiBDU1NHcm91cGluZ1J1bGU6OmRlbGV0ZVJ1bGUodW5zaWduZWQgaW5k
ZXgpCiB7CiAgICAgQVNTRVJUKG1fY2hpbGRSdWxlQ1NTT01XcmFwcGVycy5zaXplKCkgPT0gbV9n
cm91cFJ1bGUtPmNoaWxkUnVsZXMoKS5zaXplKCkpOwogCiAgICAgaWYgKGluZGV4ID49IG1fZ3Jv
dXBSdWxlLT5jaGlsZFJ1bGVzKCkuc2l6ZSgpKSB7CiAgICAgICAgIC8vIElOREVYX1NJWkVfRVJS
OiBSYWlzZWQgaWYgdGhlIHNwZWNpZmllZCBpbmRleCBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGEK
ICAgICAgICAgLy8gcnVsZSBpbiB0aGUgbWVkaWEgcnVsZSBsaXN0LgotICAgICAgICBlYyA9IElO
REVYX1NJWkVfRVJSOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBJTkRFWF9TSVpFX0VSUiB9OwogICAgIH0KIAogICAgIENTU1N0eWxlU2hlZXQ6OlJ1bGVNdXRh
dGlvblNjb3BlIG11dGF0aW9uU2NvcGUodGhpcyk7CkBAIC0xMTMsNiArMTA5LDggQEAgdm9pZCBD
U1NHcm91cGluZ1J1bGU6OmRlbGV0ZVJ1bGUodW5zaWduZWQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogICAgIGlmIChtX2NoaWxkUnVsZUNTU09NV3JhcHBlcnNbaW5kZXhdKQogICAgICAgICBt
X2NoaWxkUnVsZUNTU09NV3JhcHBlcnNbaW5kZXhdLT5zZXRQYXJlbnRSdWxlKDApOwogICAgIG1f
Y2hpbGRSdWxlQ1NTT01XcmFwcGVycy5yZW1vdmUoaW5kZXgpOworCisgICAgcmV0dXJuIHsgfTsK
IH0KIAogdm9pZCBDU1NHcm91cGluZ1J1bGU6OmFwcGVuZENzc1RleHRGb3JJdGVtcyhTdHJpbmdC
dWlsZGVyJiByZXN1bHQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
R3JvdXBpbmdSdWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JvdXBpbmdSdWxlLmgKaW5k
ZXggNGZmMTYwMDQ1Yjc3NjkxMWRkZWRkMmUyNTQxNjJiNTU1YTljNGUxZC4uZjU0YTM5NzE5NGU1
Zjk3NDY1ZTJhNWUxODZkODUyYmY0MDlkNTIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0dyb3VwaW5nUnVsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcm91cGlu
Z1J1bGUuaApAQCAtMjMsMjQgKzIzLDIyIEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNT
U1J1bGUuaCIKLSNpbmNsdWRlICJTdHlsZVJ1bGUuaCIKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENTU1J1
bGVMaXN0OworY2xhc3MgU3R5bGVSdWxlR3JvdXA7CiAKIGNsYXNzIENTU0dyb3VwaW5nUnVsZSA6
IHB1YmxpYyBDU1NSdWxlIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DU1NHcm91cGluZ1J1bGUo
KTsKIAotICAgIHZvaWQgcmVhdHRhY2goU3R5bGVSdWxlQmFzZSYpIG92ZXJyaWRlOwotCiAgICAg
V0VCQ09SRV9FWFBPUlQgQ1NTUnVsZUxpc3QmIGNzc1J1bGVzKCkgY29uc3Q7CiAKLSAgICBXRUJD
T1JFX0VYUE9SVCB1bnNpZ25lZCBpbnNlcnRSdWxlKGNvbnN0IFN0cmluZyYgcnVsZSwgdW5zaWdu
ZWQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0
ZVJ1bGUodW5zaWduZWQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBFeGNlcHRpb25Pcjx1bnNpZ25lZD4gaW5zZXJ0UnVsZShjb25zdCBTdHJpbmcmIHJ1bGUsIHVu
c2lnbmVkIGluZGV4KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25Pcjx2b2lkPiBkZWxl
dGVSdWxlKHVuc2lnbmVkIGluZGV4KTsKICAgICAgICAgCiAgICAgLy8gRm9yIENTU1J1bGVMaXN0
CiAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7CkBAIC00OSw5ICs0NywxMyBAQCBwdWJsaWM6
CiBwcm90ZWN0ZWQ6CiAgICAgQ1NTR3JvdXBpbmdSdWxlKFN0eWxlUnVsZUdyb3VwJiBncm91cFJ1
bGUsIENTU1N0eWxlU2hlZXQqIHBhcmVudCk7CiAgICAgCisgICAgdm9pZCByZWF0dGFjaChTdHls
ZVJ1bGVCYXNlJikgb3ZlcnJpZGU7CisKICAgICB2b2lkIGFwcGVuZENzc1RleHRGb3JJdGVtcyhT
dHJpbmdCdWlsZGVyJikgY29uc3Q7CiAKICAgICBSZWY8U3R5bGVSdWxlR3JvdXA+IG1fZ3JvdXBS
dWxlOworCitwcml2YXRlOgogICAgIG11dGFibGUgVmVjdG9yPFJlZlB0cjxDU1NSdWxlPj4gbV9j
aGlsZFJ1bGVDU1NPTVdyYXBwZXJzOwogICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPENTU1J1
bGVMaXN0PiBtX3J1bGVMaXN0Q1NTT01XcmFwcGVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcAppbmRleCBlM2I2ZDMyNmEyYjIwNjliZDg3MDI4
YWMzMGIzYjZiNGQyODdkZjUzLi5hNzUyODNhMmIyN2MzZGVkOGQ5NDMxMmRlMDRhNDE1OGVlY2My
ZjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3Bw
CkBAIC0yNDAsNyArMjQwLDcgQEAgYm9vbCBDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpzdWJpbWFn
ZUlzUGVuZGluZyhjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiAgICAgaWYgKGlzPENTU0ltYWdlR2Vu
ZXJhdG9yVmFsdWU+KHZhbHVlKSkKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PENTU0ltYWdlR2Vu
ZXJhdG9yVmFsdWU+KHZhbHVlKS5pc1BlbmRpbmcoKTsKIAotICAgIGlmIChpczxDU1NQcmltaXRp
dmVWYWx1ZT4odmFsdWUpICYmIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkuZ2V0
VmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZSkKKyAgICBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+
KHZhbHVlKSAmJiBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLnZhbHVlSUQoKSA9
PSBDU1NWYWx1ZU5vbmUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwpAQCAtMjYxLDcgKzI2MSw3IEBAIENhY2hlZEltYWdlKiBDU1NJbWFnZUdlbmVy
YXRvclZhbHVlOjpjYWNoZWRJbWFnZUZvckNTU1ZhbHVlKENTU1ZhbHVlJiB2YWx1ZSwgQ2FjCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGlmIChpczxDU1NQcmltaXRpdmVW
YWx1ZT4odmFsdWUpICYmIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkuZ2V0VmFs
dWVJRCgpID09IENTU1ZhbHVlTm9uZSkKKyAgICBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZh
bHVlKSAmJiBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLnZhbHVlSUQoKSA9PSBD
U1NWYWx1ZU5vbmUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5jcHAKaW5kZXggNWE5
YzIyMjNkNGYxYzQyZmZjYWFjZGNlMmUzMWRkNzQ2M2I4MWVmNS4uNWUxMWIyYzdiZDQ4Y2RlOTU1
YjdlYTE5M2IwY2M4YzI5MjlmZGQxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ltYWdlU2V0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVNldFZh
bHVlLmNwcApAQCAtNTksNyArNTksNyBAQCB2b2lkIENTU0ltYWdlU2V0VmFsdWU6OmZpbGxJbWFn
ZVNldCgpCiAgICAgICAgICsraTsKICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElD
QVRJT04oaSA8IGxlbmd0aCk7CiAgICAgICAgIENTU1ZhbHVlKiBzY2FsZUZhY3RvclZhbHVlID0g
aXRlbShpKTsKLSAgICAgICAgZmxvYXQgc2NhbGVGYWN0b3IgPSBkb3duY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZT4oKnNjYWxlRmFjdG9yVmFsdWUpLmdldEZsb2F0VmFsdWUoKTsKKyAgICAgICAgZmxv
YXQgc2NhbGVGYWN0b3IgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnNjYWxlRmFjdG9y
VmFsdWUpLmZsb2F0VmFsdWUoKTsKIAogICAgICAgICBJbWFnZVdpdGhTY2FsZSBpbWFnZTsKICAg
ICAgICAgaW1hZ2UuaW1hZ2VVUkwgPSBpbWFnZVVSTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NNZWRpYVJ1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNZWRpYVJ1bGUu
aAppbmRleCBmYjFiYzRlOWE0ZjJmNjY1NjEzYjhkOThmMmRiZDE4YzE5OTc2ODVjLi4yMTYwZmFj
YTllNGE2ODMzNTAxNzYzNjMwY2I4MzgyNTkyZjg0ZDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTTWVkaWFSdWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU01lZGlh
UnVsZS5oCkBAIC0yNyw2ICsyNyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1l
ZGlhTGlzdDsKK2NsYXNzIE1lZGlhUXVlcnlTZXQ7CiBjbGFzcyBTdHlsZVJ1bGVNZWRpYTsKIAog
Y2xhc3MgQ1NTTWVkaWFSdWxlIGZpbmFsIDogcHVibGljIENTU0dyb3VwaW5nUnVsZSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTWVkaWFSdWxlLmlkbCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NNZWRpYVJ1bGUuaWRsCmluZGV4IDRlZGE4OTc5ZDUxMWVmOWMwOTkwZDllZDQ2
NzU3YjQyOTBmZjg4ZTUuLmNmMjE1NTUxMWIwOWY0ZjNjNGIwN2M1NWYxZTAwODg5YWZhYjEyZGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNZWRpYVJ1bGUuaWRsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NNZWRpYVJ1bGUuaWRsCkBAIC0yMiw2ICsyMiw2IEBAIGludGVy
ZmFjZSBDU1NNZWRpYVJ1bGUgOiBDU1NSdWxlIHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgTWVk
aWFMaXN0IG1lZGlhOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBDU1NSdWxlTGlzdCBjc3NSdWxl
czsKIAotICAgIFtNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gdW5zaWduZWQgbG9uZyBpbnNlcnRS
dWxlKG9wdGlvbmFsIERPTVN0cmluZyBydWxlID0gInVuZGVmaW5lZCIsIG9wdGlvbmFsIHVuc2ln
bmVkIGxvbmcgaW5kZXggPSAwKTsKLSAgICBbTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHZvaWQg
ZGVsZXRlUnVsZShvcHRpb25hbCB1bnNpZ25lZCBsb25nIGluZGV4ID0gMCk7CisgICAgW01heVRo
cm93RXhjZXB0aW9uXSB1bnNpZ25lZCBsb25nIGluc2VydFJ1bGUob3B0aW9uYWwgRE9NU3RyaW5n
IHJ1bGUgPSAidW5kZWZpbmVkIiwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBpbmRleCA9IDApOwor
ICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBkZWxldGVSdWxlKG9wdGlvbmFsIHVuc2lnbmVk
IGxvbmcgaW5kZXggPSAwKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UHJpbWl0aXZlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVl
LmNwcAppbmRleCA5ODc3MTNjOTFhZjk1ZGFlODU5NzhkYWEyMDQ1MDMxZWZhOGM2ODVlLi5mNGIz
MmQ0NzQ3ZDJlMGRhODllOTBlYWRhMDdhNWMxMmI2ZjgyYTE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKQEAgLTYyOSwxMyArNjI5LDEzIEBAIGRvdWJsZSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Y29tcHV0ZURlZ3JlZXMoKSBjb25zdAogewogICAgIHN3aXRjaCAocHJp
bWl0aXZlVHlwZSgpKSB7CiAgICAgY2FzZSBDU1NfREVHOgotICAgICAgICByZXR1cm4gZ2V0RG91
YmxlVmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIGRvdWJsZVZhbHVlKCk7CiAgICAgY2FzZSBDU1Nf
UkFEOgotICAgICAgICByZXR1cm4gcmFkMmRlZyhnZXREb3VibGVWYWx1ZSgpKTsKKyAgICAgICAg
cmV0dXJuIHJhZDJkZWcoZG91YmxlVmFsdWUoKSk7CiAgICAgY2FzZSBDU1NfR1JBRDoKLSAgICAg
ICAgcmV0dXJuIGdyYWQyZGVnKGdldERvdWJsZVZhbHVlKCkpOworICAgICAgICByZXR1cm4gZ3Jh
ZDJkZWcoZG91YmxlVmFsdWUoKSk7CiAgICAgY2FzZSBDU1NfVFVSTjoKLSAgICAgICAgcmV0dXJu
IHR1cm4yZGVnKGdldERvdWJsZVZhbHVlKCkpOworICAgICAgICByZXR1cm4gdHVybjJkZWcoZG91
YmxlVmFsdWUoKSk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgICAgIHJldHVybiAwOwpAQCAtNjgzLDEwICs2ODMsMTAgQEAgZG91YmxlIENTU1ByaW1p
dGl2ZVZhbHVlOjpjb21wdXRlTGVuZ3RoRG91YmxlKGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lv
bkRhdGEmIGMKICAgICAgICAgLy8gVGhlIG11bHRpcGxpZXIgYW5kIGZhY3RvciBpcyBhcHBsaWVk
IHRvIGVhY2ggdmFsdWUgaW4gdGhlIGNhbGMgZXhwcmVzc2lvbiBpbmRpdmlkdWFsbHkKICAgICAg
ICAgcmV0dXJuIG1fdmFsdWUuY2FsYy0+Y29tcHV0ZUxlbmd0aFB4KGNvbnZlcnNpb25EYXRhKTsK
IAotICAgIHJldHVybiBjb21wdXRlTm9uQ2FsY0xlbmd0aERvdWJsZShjb252ZXJzaW9uRGF0YSwg
cHJpbWl0aXZlVHlwZSgpLCBtX3ZhbHVlLm51bSk7CisgICAgcmV0dXJuIGNvbXB1dGVOb25DYWxj
TGVuZ3RoRG91YmxlKGNvbnZlcnNpb25EYXRhLCBzdGF0aWNfY2FzdDxVbml0VHlwZXM+KHByaW1p
dGl2ZVR5cGUoKSksIG1fdmFsdWUubnVtKTsKIH0KIAotZG91YmxlIENTU1ByaW1pdGl2ZVZhbHVl
Ojpjb21wdXRlTm9uQ2FsY0xlbmd0aERvdWJsZShjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25E
YXRhJiBjb252ZXJzaW9uRGF0YSwgdW5zaWduZWQgc2hvcnQgcHJpbWl0aXZlVHlwZSwgZG91Ymxl
IHZhbHVlKQorZG91YmxlIENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTm9uQ2FsY0xlbmd0aERv
dWJsZShjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW9uRGF0YSwgVW5p
dFR5cGVzIHByaW1pdGl2ZVR5cGUsIGRvdWJsZSB2YWx1ZSkKIHsKICAgICBkb3VibGUgZmFjdG9y
OwogCkBAIC03NjYsMTUgKzc2NiwxNSBAQCBkb3VibGUgQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1
dGVOb25DYWxjTGVuZ3RoRG91YmxlKGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbgogICAgIHJl
dHVybiByZXN1bHQgKiBjb252ZXJzaW9uRGF0YS56b29tKCk7CiB9CiAKLXZvaWQgQ1NTUHJpbWl0
aXZlVmFsdWU6OnNldEZsb2F0VmFsdWUodW5zaWduZWQgc2hvcnQsIGRvdWJsZSwgRXhjZXB0aW9u
Q29kZSYgZWMpCitFeGNlcHRpb25Pcjx2b2lkPiBDU1NQcmltaXRpdmVWYWx1ZTo6c2V0RmxvYXRW
YWx1ZSh1bnNpZ25lZCBzaG9ydCwgZG91YmxlKQogewogICAgIC8vIEtlZXBpbmcgdmFsdWVzIGlt
bXV0YWJsZSBtYWtlcyBvcHRpbWl6YXRpb25zIGVhc2llciBhbmQgYWxsb3dzIHNoYXJpbmcgb2Yg
dGhlIHByaW1pdGl2ZSB2YWx1ZSBvYmplY3RzLgogICAgIC8vIE5vIG90aGVyIGVuZ2luZSBzdXBw
b3J0cyBtdXRhdGluZyBzdHlsZSB0aHJvdWdoIHRoaXMgQVBJLiBDb21wdXRlZCBzdHlsZSBpcyBh
bHdheXMgcmVhZC1vbmx5IGFueXdheS4KICAgICAvLyBTdXBwb3J0aW5nIHNldHRlciB3b3VsZCBy
ZXF1aXJlIG1ha2luZyBwcmltaXRpdmUgdmFsdWUgY29weS1vbi13cml0ZSBhbmQgdGFraW5nIGNh
cmUgb2Ygc3R5bGUgaW52YWxpZGF0aW9uLgotICAgIGVjID0gTk9fTU9ESUZJQ0FUSU9OX0FMTE9X
RURfRVJSOworICAgIHJldHVybiBFeGNlcHRpb24geyBOT19NT0RJRklDQVRJT05fQUxMT1dFRF9F
UlIgfTsKIH0KIAotZG91YmxlIENTU1ByaW1pdGl2ZVZhbHVlOjpjb252ZXJzaW9uVG9DYW5vbmlj
YWxVbml0c1NjYWxlRmFjdG9yKHVuc2lnbmVkIHNob3J0IHVuaXRUeXBlKQorZG91YmxlIENTU1By
aW1pdGl2ZVZhbHVlOjpjb252ZXJzaW9uVG9DYW5vbmljYWxVbml0c1NjYWxlRmFjdG9yKFVuaXRU
eXBlcyB1bml0VHlwZSkKIHsKICAgICBkb3VibGUgZmFjdG9yID0gMS4wOwogICAgIC8vIEZJWE1F
OiB0aGUgc3dpdGNoIGNhbiBiZSByZXBsYWNlZCBieSBhbiBhcnJheSBvZiBzY2FsZSBmYWN0b3Jz
LgpAQCAtODI2LDI3ICs4MjYsMjAgQEAgZG91YmxlIENTU1ByaW1pdGl2ZVZhbHVlOjpjb252ZXJz
aW9uVG9DYW5vbmljYWxVbml0c1NjYWxlRmFjdG9yKHVuc2lnbmVkIHNob3J0IHUKICAgICByZXR1
cm4gZmFjdG9yOwogfQogCi1kb3VibGUgQ1NTUHJpbWl0aXZlVmFsdWU6OmdldERvdWJsZVZhbHVl
KHVuc2lnbmVkIHNob3J0IHVuaXRUeXBlLCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKK0V4Y2Vw
dGlvbk9yPGZsb2F0PiBDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0RmxvYXRWYWx1ZSh1bnNpZ25lZCBz
aG9ydCB1bml0VHlwZSkgY29uc3QKIHsKLSAgICBkb3VibGUgcmVzdWx0ID0gMDsKLSAgICBib29s
IHN1Y2Nlc3MgPSBnZXREb3VibGVWYWx1ZUludGVybmFsKHN0YXRpY19jYXN0PFVuaXRUeXBlcz4o
dW5pdFR5cGUpLCAmcmVzdWx0KTsKLSAgICBpZiAoIXN1Y2Nlc3MpIHsKLSAgICAgICAgZWMgPSBJ
TlZBTElEX0FDQ0VTU19FUlI7Ci0gICAgICAgIHJldHVybiAwLjA7Ci0gICAgfQotCi0gICAgZWMg
PSAwOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgYXV0byByZXN1bHQgPSBkb3VibGVWYWx1ZUlu
dGVybmFsKHN0YXRpY19jYXN0PFVuaXRUeXBlcz4odW5pdFR5cGUpKTsKKyAgICBpZiAoIXJlc3Vs
dCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElOVkFMSURfQUNDRVNTX0VSUiB9OworICAg
IHJldHVybiBjbGFtcFRvPGZsb2F0PihyZXN1bHQudmFsdWUoKSk7CiB9CiAKLWRvdWJsZSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Z2V0RG91YmxlVmFsdWUodW5zaWduZWQgc2hvcnQgdW5pdFR5cGUpIGNv
bnN0Citkb3VibGUgQ1NTUHJpbWl0aXZlVmFsdWU6OmRvdWJsZVZhbHVlKFVuaXRUeXBlcyB1bml0
VHlwZSkgY29uc3QKIHsKLSAgICBkb3VibGUgcmVzdWx0ID0gMDsKLSAgICBnZXREb3VibGVWYWx1
ZUludGVybmFsKHN0YXRpY19jYXN0PFVuaXRUeXBlcz4odW5pdFR5cGUpLCAmcmVzdWx0KTsKLSAg
ICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBkb3VibGVWYWx1ZUludGVybmFsKHVuaXRUeXBl
KS52YWx1ZU9yKDApOwogfQogCi1kb3VibGUgQ1NTUHJpbWl0aXZlVmFsdWU6OmdldERvdWJsZVZh
bHVlKCkgY29uc3QKK2RvdWJsZSBDU1NQcmltaXRpdmVWYWx1ZTo6ZG91YmxlVmFsdWUoKSBjb25z
dAogewogICAgIHJldHVybiBtX3ByaW1pdGl2ZVVuaXRUeXBlICE9IENTU19DQUxDID8gbV92YWx1
ZS5udW0gOiBtX3ZhbHVlLmNhbGMtPmRvdWJsZVZhbHVlKCk7CiB9CkBAIC04NzgsMTYgKzg3MSwx
NCBAQCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzIENTU1ByaW1pdGl2ZVZhbHVlOjpjYW5v
bmljYWxVbml0VHlwZUZvckNhdGVnb3J5KFVuaQogICAgIH0KIH0KIAotYm9vbCBDU1NQcmltaXRp
dmVWYWx1ZTo6Z2V0RG91YmxlVmFsdWVJbnRlcm5hbChVbml0VHlwZXMgcmVxdWVzdGVkVW5pdFR5
cGUsIGRvdWJsZSogcmVzdWx0KSBjb25zdAorT3B0aW9uYWw8ZG91YmxlPiBDU1NQcmltaXRpdmVW
YWx1ZTo6ZG91YmxlVmFsdWVJbnRlcm5hbChVbml0VHlwZXMgcmVxdWVzdGVkVW5pdFR5cGUpIGNv
bnN0CiB7CiAgICAgaWYgKCFpc1ZhbGlkQ1NTVW5pdFR5cGVGb3JEb3VibGVDb252ZXJzaW9uKHN0
YXRpY19jYXN0PFVuaXRUeXBlcz4obV9wcmltaXRpdmVVbml0VHlwZSkpIHx8ICFpc1ZhbGlkQ1NT
VW5pdFR5cGVGb3JEb3VibGVDb252ZXJzaW9uKHJlcXVlc3RlZFVuaXRUeXBlKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gTnVsbG9wdDsKIAogICAgIFVuaXRUeXBlcyBz
b3VyY2VVbml0VHlwZSA9IHN0YXRpY19jYXN0PFVuaXRUeXBlcz4ocHJpbWl0aXZlVHlwZSgpKTsK
LSAgICBpZiAocmVxdWVzdGVkVW5pdFR5cGUgPT0gc291cmNlVW5pdFR5cGUgfHwgcmVxdWVzdGVk
VW5pdFR5cGUgPT0gQ1NTX0RJTUVOU0lPTikgewotICAgICAgICAqcmVzdWx0ID0gZ2V0RG91Ymxl
VmFsdWUoKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQorICAgIGlmIChyZXF1ZXN0ZWRV
bml0VHlwZSA9PSBzb3VyY2VVbml0VHlwZSB8fCByZXF1ZXN0ZWRVbml0VHlwZSA9PSBDU1NfRElN
RU5TSU9OKQorICAgICAgICByZXR1cm4gZG91YmxlVmFsdWUoKTsKIAogICAgIFVuaXRDYXRlZ29y
eSBzb3VyY2VDYXRlZ29yeSA9IHVuaXRDYXRlZ29yeShzb3VyY2VVbml0VHlwZSk7CiAgICAgQVNT
RVJUKHNvdXJjZUNhdGVnb3J5ICE9IFVPdGhlcik7CkBAIC04OTgsMjMgKzg4OSwyMyBAQCBib29s
IENTU1ByaW1pdGl2ZVZhbHVlOjpnZXREb3VibGVWYWx1ZUludGVybmFsKFVuaXRUeXBlcyByZXF1
ZXN0ZWRVbml0VHlwZSwgZG91YgogCiAgICAgLy8gQ2Fubm90IGNvbnZlcnQgYmV0d2VlbiB1bnJl
bGF0ZWQgdW5pdCBjYXRlZ29yaWVzIGlmIG9uZSBvZiB0aGVtIGlzIG5vdCBVTnVtYmVyLgogICAg
IGlmIChzb3VyY2VDYXRlZ29yeSAhPSB0YXJnZXRDYXRlZ29yeSAmJiBzb3VyY2VDYXRlZ29yeSAh
PSBVTnVtYmVyICYmIHRhcmdldENhdGVnb3J5ICE9IFVOdW1iZXIpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgcmV0dXJuIE51bGxvcHQ7CiAKICAgICBpZiAodGFyZ2V0Q2F0ZWdvcnkg
PT0gVU51bWJlcikgewogICAgICAgICAvLyBXZSBpbnRlcnByZXQgY29udmVyc2lvbiB0byBDU1Nf
TlVNQkVSIGFzIGNvbnZlcnNpb24gdG8gYSBjYW5vbmljYWwgdW5pdCBpbiB0aGlzIHZhbHVlJ3Mg
Y2F0ZWdvcnkuCiAgICAgICAgIHRhcmdldFVuaXRUeXBlID0gY2Fub25pY2FsVW5pdFR5cGVGb3JD
YXRlZ29yeShzb3VyY2VDYXRlZ29yeSk7CiAgICAgICAgIGlmICh0YXJnZXRVbml0VHlwZSA9PSBD
U1NfVU5LTk9XTikKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHJldHVy
biBOdWxsb3B0OwogICAgIH0KIAogICAgIGlmIChzb3VyY2VVbml0VHlwZSA9PSBDU1NfTlVNQkVS
KSB7CiAgICAgICAgIC8vIFdlIGludGVycHJldCBjb252ZXJzaW9uIGZyb20gQ1NTX05VTUJFUiBp
biB0aGUgc2FtZSB3YXkgYXMgQ1NTUGFyc2VyOjp2YWxpZFVuaXQoKSB3aGlsZSB1c2luZyBub24t
c3RyaWN0IG1vZGUuCiAgICAgICAgIHNvdXJjZVVuaXRUeXBlID0gY2Fub25pY2FsVW5pdFR5cGVG
b3JDYXRlZ29yeSh0YXJnZXRDYXRlZ29yeSk7CiAgICAgICAgIGlmIChzb3VyY2VVbml0VHlwZSA9
PSBDU1NfVU5LTk9XTikKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHJl
dHVybiBOdWxsb3B0OwogICAgIH0KIAotICAgIGRvdWJsZSBjb252ZXJ0ZWRWYWx1ZSA9IGdldERv
dWJsZVZhbHVlKCk7CisgICAgZG91YmxlIGNvbnZlcnRlZFZhbHVlID0gZG91YmxlVmFsdWUoKTsK
IAogICAgIC8vIEZpcnN0IGNvbnZlcnQgdGhlIHZhbHVlIGZyb20gbV9wcmltaXRpdmVVbml0VHlw
ZSB0byBjYW5vbmljYWwgdHlwZS4KICAgICBkb3VibGUgZmFjdG9yID0gY29udmVyc2lvblRvQ2Fu
b25pY2FsVW5pdHNTY2FsZUZhY3Rvcihzb3VyY2VVbml0VHlwZSk7CkBAIC05MjQsNDEgKzkxNSwz
NiBAQCBib29sIENTU1ByaW1pdGl2ZVZhbHVlOjpnZXREb3VibGVWYWx1ZUludGVybmFsKFVuaXRU
eXBlcyByZXF1ZXN0ZWRVbml0VHlwZSwgZG91YgogICAgIGZhY3RvciA9IGNvbnZlcnNpb25Ub0Nh
bm9uaWNhbFVuaXRzU2NhbGVGYWN0b3IodGFyZ2V0VW5pdFR5cGUpOwogICAgIGNvbnZlcnRlZFZh
bHVlIC89IGZhY3RvcjsKIAotICAgICpyZXN1bHQgPSBjb252ZXJ0ZWRWYWx1ZTsKLSAgICByZXR1
cm4gdHJ1ZTsKKyAgICByZXR1cm4gY29udmVydGVkVmFsdWU7CiB9CiAKLXZvaWQgQ1NTUHJpbWl0
aXZlVmFsdWU6OnNldFN0cmluZ1ZhbHVlKHVuc2lnbmVkIHNob3J0LCBjb25zdCBTdHJpbmcmLCBF
eGNlcHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPHZvaWQ+IENTU1ByaW1pdGl2ZVZhbHVlOjpz
ZXRTdHJpbmdWYWx1ZSh1bnNpZ25lZCBzaG9ydCwgY29uc3QgU3RyaW5nJikKIHsKICAgICAvLyBL
ZWVwaW5nIHZhbHVlcyBpbW11dGFibGUgbWFrZXMgb3B0aW1pemF0aW9ucyBlYXNpZXIgYW5kIGFs
bG93cyBzaGFyaW5nIG9mIHRoZSBwcmltaXRpdmUgdmFsdWUgb2JqZWN0cy4KICAgICAvLyBObyBv
dGhlciBlbmdpbmUgc3VwcG9ydHMgbXV0YXRpbmcgc3R5bGUgdGhyb3VnaCB0aGlzIEFQSS4gQ29t
cHV0ZWQgc3R5bGUgaXMgYWx3YXlzIHJlYWQtb25seSBhbnl3YXkuCiAgICAgLy8gU3VwcG9ydGlu
ZyBzZXR0ZXIgd291bGQgcmVxdWlyZSBtYWtpbmcgcHJpbWl0aXZlIHZhbHVlIGNvcHktb24td3Jp
dGUgYW5kIHRha2luZyBjYXJlIG9mIHN0eWxlIGludmFsaWRhdGlvbi4KLSAgICBlYyA9IE5PX01P
RElGSUNBVElPTl9BTExPV0VEX0VSUjsKKyAgICByZXR1cm4gRXhjZXB0aW9uIHsgTk9fTU9ESUZJ
Q0FUSU9OX0FMTE9XRURfRVJSIH07CiB9CiAKLVN0cmluZyBDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0
U3RyaW5nVmFsdWUoRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CitFeGNlcHRpb25PcjxTdHJpbmc+
IENTU1ByaW1pdGl2ZVZhbHVlOjpnZXRTdHJpbmdWYWx1ZSgpIGNvbnN0CiB7Ci0gICAgZWMgPSAw
OwogICAgIHN3aXRjaCAobV9wcmltaXRpdmVVbml0VHlwZSkgewogICAgIGNhc2UgQ1NTX1NUUklO
RzoKICAgICBjYXNlIENTU19BVFRSOgogICAgIGNhc2UgQ1NTX1VSSToKICAgICAgICAgcmV0dXJu
IG1fdmFsdWUuc3RyaW5nOwogICAgIGNhc2UgQ1NTX0ZPTlRfRkFNSUxZOgotICAgICAgICByZXR1
cm4gbV92YWx1ZS5mb250RmFtaWx5LT5mYW1pbHlOYW1lOworICAgICAgICByZXR1cm4gU3RyaW5n
IHsgbV92YWx1ZS5mb250RmFtaWx5LT5mYW1pbHlOYW1lIH07CiAgICAgY2FzZSBDU1NfVkFMVUVf
SUQ6Ci0gICAgICAgIHJldHVybiB2YWx1ZU5hbWUobV92YWx1ZS52YWx1ZUlEKTsKKyAgICAgICAg
cmV0dXJuIFN0cmluZyB7IHZhbHVlTmFtZShtX3ZhbHVlLnZhbHVlSUQpIH07CiAgICAgY2FzZSBD
U1NfUFJPUEVSVFlfSUQ6Ci0gICAgICAgIHJldHVybiBwcm9wZXJ0eU5hbWUobV92YWx1ZS5wcm9w
ZXJ0eUlEKTsKKyAgICAgICAgcmV0dXJuIFN0cmluZyB7IHByb3BlcnR5TmFtZShtX3ZhbHVlLnBy
b3BlcnR5SUQpIH07CiAgICAgZGVmYXVsdDoKLSAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19F
UlI7Ci0gICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSU5WQUxJRF9B
Q0NFU1NfRVJSIH07CiAgICAgfQotCi0gICAgcmV0dXJuIFN0cmluZygpOwogfQogCi1TdHJpbmcg
Q1NTUHJpbWl0aXZlVmFsdWU6OmdldFN0cmluZ1ZhbHVlKCkgY29uc3QKK1N0cmluZyBDU1NQcmlt
aXRpdmVWYWx1ZTo6c3RyaW5nVmFsdWUoKSBjb25zdAogewogICAgIHN3aXRjaCAobV9wcmltaXRp
dmVVbml0VHlwZSkgewogICAgIGNhc2UgQ1NTX1NUUklORzoKQEAgLTk3Miw4MCArOTU4LDMzIEBA
IFN0cmluZyBDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0U3RyaW5nVmFsdWUoKSBjb25zdAogICAgIGNh
c2UgQ1NTX1BST1BFUlRZX0lEOgogICAgICAgICByZXR1cm4gcHJvcGVydHlOYW1lKG1fdmFsdWUu
cHJvcGVydHlJRCk7CiAgICAgZGVmYXVsdDoKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKICAgICB9Ci0KLSAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLUNvdW50ZXIq
IENTU1ByaW1pdGl2ZVZhbHVlOjpnZXRDb3VudGVyVmFsdWUoRXhjZXB0aW9uQ29kZSYgZWMpIGNv
bnN0CitFeGNlcHRpb25PcjxDb3VudGVyKj4gQ1NTUHJpbWl0aXZlVmFsdWU6OmdldENvdW50ZXJW
YWx1ZSgpIGNvbnN0CiB7Ci0gICAgZWMgPSAwOwotICAgIGlmIChtX3ByaW1pdGl2ZVVuaXRUeXBl
ICE9IENTU19DT1VOVEVSKSB7Ci0gICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwotICAg
ICAgICByZXR1cm4gMDsKLSAgICB9Ci0KKyAgICBpZiAobV9wcmltaXRpdmVVbml0VHlwZSAhPSBD
U1NfQ09VTlRFUikKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElOVkFMSURfQUNDRVNTX0VS
UiB9OwogICAgIHJldHVybiBtX3ZhbHVlLmNvdW50ZXI7CiB9CiAKLVJlY3QqIENTU1ByaW1pdGl2
ZVZhbHVlOjpnZXRSZWN0VmFsdWUoRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CitFeGNlcHRpb25P
cjxSZWN0Kj4gQ1NTUHJpbWl0aXZlVmFsdWU6OmdldFJlY3RWYWx1ZSgpIGNvbnN0CiB7Ci0gICAg
ZWMgPSAwOwotICAgIGlmIChtX3ByaW1pdGl2ZVVuaXRUeXBlICE9IENTU19SRUNUKSB7Ci0gICAg
ICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0K
KyAgICBpZiAobV9wcmltaXRpdmVVbml0VHlwZSAhPSBDU1NfUkVDVCkKKyAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IElOVkFMSURfQUNDRVNTX0VSUiB9OwogICAgIHJldHVybiBtX3ZhbHVlLnJl
Y3Q7CiB9CiAKLVF1YWQqIENTU1ByaW1pdGl2ZVZhbHVlOjpnZXRRdWFkVmFsdWUoRXhjZXB0aW9u
Q29kZSYgZWMpIGNvbnN0Ci17Ci0gICAgZWMgPSAwOwotICAgIGlmIChtX3ByaW1pdGl2ZVVuaXRU
eXBlICE9IENTU19RVUFEKSB7Ci0gICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwotICAg
ICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICByZXR1cm4gbV92YWx1ZS5xdWFkOwotfQotCi0j
aWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKLUxlbmd0aFJlcGVhdCogQ1NTUHJpbWl0aXZlVmFs
dWU6OmdldExlbmd0aFJlcGVhdFZhbHVlKEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAotewotICAg
IGVjID0gMDsKLSAgICBpZiAobV9wcmltaXRpdmVVbml0VHlwZSAhPSBDU1NfTEVOR1RIX1JFUEVB
VCkgewotICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKLSAgICAgICAgcmV0dXJuIDA7
Ci0gICAgfQotCi0gICAgcmV0dXJuIG1fdmFsdWUubGVuZ3RoUmVwZWF0OwotfQotI2VuZGlmCi0K
LVJlZlB0cjxSR0JDb2xvcj4gQ1NTUHJpbWl0aXZlVmFsdWU6OmdldFJHQkNvbG9yVmFsdWUoRXhj
ZXB0aW9uQ29kZSYgZWMpIGNvbnN0CitFeGNlcHRpb25PcjxSZWY8UkdCQ29sb3I+PiBDU1NQcmlt
aXRpdmVWYWx1ZTo6Z2V0UkdCQ29sb3JWYWx1ZSgpIGNvbnN0CiB7Ci0gICAgaWYgKG1fcHJpbWl0
aXZlVW5pdFR5cGUgIT0gQ1NTX1JHQkNPTE9SKSB7Ci0gICAgICAgIGVjID0gSU5WQUxJRF9BQ0NF
U1NfRVJSOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9CisgICAgaWYgKG1fcHJpbWl0
aXZlVW5pdFR5cGUgIT0gQ1NTX1JHQkNPTE9SKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
SU5WQUxJRF9BQ0NFU1NfRVJSIH07CiAKLSAgICAvLyBGSU1YRTogVGhpcyBzaG91bGQgbm90IHJl
dHVybiBhIG5ldyBvYmplY3QgZm9yIGVhY2ggaW52b2NhdGlvbi4KKyAgICAvLyBGSVhNRTogVGhp
cyBzaG91bGQgbm90IHJldHVybiBhIG5ldyBvYmplY3QgZm9yIGVhY2ggaW52b2NhdGlvbi4KICAg
ICByZXR1cm4gUkdCQ29sb3I6OmNyZWF0ZShtX3ZhbHVlLmNvbG9yLT5yZ2IoKSk7CiB9CiAKLVBh
aXIqIENTU1ByaW1pdGl2ZVZhbHVlOjpnZXRQYWlyVmFsdWUoRXhjZXB0aW9uQ29kZSYgZWMpIGNv
bnN0Ci17Ci0gICAgZWMgPSAwOwotICAgIGlmIChtX3ByaW1pdGl2ZVVuaXRUeXBlICE9IENTU19Q
QUlSKSB7Ci0gICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwotICAgICAgICByZXR1cm4g
MDsKLSAgICB9Ci0KLSAgICByZXR1cm4gbV92YWx1ZS5wYWlyOwotfQotCiBORVZFUl9JTkxJTkUg
UmVmPFN0cmluZ0ltcGw+IENTU1ByaW1pdGl2ZVZhbHVlOjpmb3JtYXROdW1iZXJWYWx1ZShjb25z
dCBjaGFyKiBzdWZmaXgsIHVuc2lnbmVkIHN1ZmZpeExlbmd0aCkgY29uc3QKIHsKICAgICBEZWNp
bWFsTnVtYmVyIGRlY2ltYWwobV92YWx1ZS5udW0pOwpAQCAtMTE3MiwxMiArMTExMSwxMiBAQCBB
TFdBWVNfSU5MSU5FIFN0cmluZyBDU1NQcmltaXRpdmVWYWx1ZTo6Zm9ybWF0TnVtYmVyRm9yQ3Vz
dG9tQ1NTVGV4dCgpIGNvbnN0CiAgICAgICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKICAg
ICB9CiAgICAgY2FzZSBDU1NfUkVDVDoKLSAgICAgICAgcmV0dXJuIGdldFJlY3RWYWx1ZSgpLT5j
c3NUZXh0KCk7CisgICAgICAgIHJldHVybiByZWN0VmFsdWUoKS0+Y3NzVGV4dCgpOwogICAgIGNh
c2UgQ1NTX1FVQUQ6Ci0gICAgICAgIHJldHVybiBnZXRRdWFkVmFsdWUoKS0+Y3NzVGV4dCgpOwor
ICAgICAgICByZXR1cm4gcXVhZFZhbHVlKCktPmNzc1RleHQoKTsKICNpZiBFTkFCTEUoQ1NTX1ND
Uk9MTF9TTkFQKQogICAgIGNhc2UgQ1NTX0xFTkdUSF9SRVBFQVQ6Ci0gICAgICAgIHJldHVybiBn
ZXRMZW5ndGhSZXBlYXRWYWx1ZSgpLT5jc3NUZXh0KCk7CisgICAgICAgIHJldHVybiBsZW5ndGhS
ZXBlYXRWYWx1ZSgpLT5jc3NUZXh0KCk7CiAjZW5kaWYKICAgICBjYXNlIENTU19QQVJTRVJfSEVY
Q09MT1I6IHsKICAgICAgICAgUkdCQTMyIHJnYjsKQEAgLTExODcsMTEgKzExMjYsMTEgQEAgQUxX
QVlTX0lOTElORSBTdHJpbmcgQ1NTUHJpbWl0aXZlVmFsdWU6OmZvcm1hdE51bWJlckZvckN1c3Rv
bUNTU1RleHQoKSBjb25zdAogICAgIGNhc2UgQ1NTX1JHQkNPTE9SOgogICAgICAgICByZXR1cm4g
Y29sb3IoKS5jc3NUZXh0KCk7CiAgICAgY2FzZSBDU1NfUEFJUjoKLSAgICAgICAgcmV0dXJuIGdl
dFBhaXJWYWx1ZSgpLT5jc3NUZXh0KCk7CisgICAgICAgIHJldHVybiBwYWlyVmFsdWUoKS0+Y3Nz
VGV4dCgpOwogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKICAgICBjYXNlIENTU19EQVNI
Qk9BUkRfUkVHSU9OOiB7CiAgICAgICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OwotICAgICAgICBm
b3IgKERhc2hib2FyZFJlZ2lvbiogcmVnaW9uID0gZ2V0RGFzaGJvYXJkUmVnaW9uVmFsdWUoKTsg
cmVnaW9uOyByZWdpb24gPSByZWdpb24tPm1fbmV4dC5nZXQoKSkgeworICAgICAgICBmb3IgKERh
c2hib2FyZFJlZ2lvbiogcmVnaW9uID0gZGFzaGJvYXJkUmVnaW9uVmFsdWUoKTsgcmVnaW9uOyBy
ZWdpb24gPSByZWdpb24tPm1fbmV4dC5nZXQoKSkgewogICAgICAgICAgICAgaWYgKCFyZXN1bHQu
aXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAnKTsKICAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJkYXNoYm9hcmQtcmVnaW9uKCIpOwpAQCAtMTIwMiwx
MyArMTE0MSwxMyBAQCBBTFdBWVNfSU5MSU5FIFN0cmluZyBDU1NQcmltaXRpdmVWYWx1ZTo6Zm9y
bWF0TnVtYmVyRm9yQ3VzdG9tQ1NTVGV4dCgpIGNvbnN0CiAgICAgICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZExpdGVyYWwoIiByZWN0YW5nbGUiKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGlmIChyZWdpb24tPnRvcCgpLT5tX3ByaW1pdGl2
ZVVuaXRUeXBlID09IENTU19WQUxVRV9JRCAmJiByZWdpb24tPnRvcCgpLT5nZXRWYWx1ZUlEKCkg
PT0gQ1NTVmFsdWVJbnZhbGlkKSB7CisgICAgICAgICAgICBpZiAocmVnaW9uLT50b3AoKS0+bV9w
cmltaXRpdmVVbml0VHlwZSA9PSBDU1NfVkFMVUVfSUQgJiYgcmVnaW9uLT50b3AoKS0+dmFsdWVJ
RCgpID09IENTU1ZhbHVlSW52YWxpZCkgewogICAgICAgICAgICAgICAgIEFTU0VSVChyZWdpb24t
PnJpZ2h0KCktPm1fcHJpbWl0aXZlVW5pdFR5cGUgPT0gQ1NTX1ZBTFVFX0lEKTsKICAgICAgICAg
ICAgICAgICBBU1NFUlQocmVnaW9uLT5ib3R0b20oKS0+bV9wcmltaXRpdmVVbml0VHlwZSA9PSBD
U1NfVkFMVUVfSUQpOwogICAgICAgICAgICAgICAgIEFTU0VSVChyZWdpb24tPmxlZnQoKS0+bV9w
cmltaXRpdmVVbml0VHlwZSA9PSBDU1NfVkFMVUVfSUQpOwotICAgICAgICAgICAgICAgIEFTU0VS
VChyZWdpb24tPnJpZ2h0KCktPmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZUludmFsaWQpOwotICAg
ICAgICAgICAgICAgIEFTU0VSVChyZWdpb24tPmJvdHRvbSgpLT5nZXRWYWx1ZUlEKCkgPT0gQ1NT
VmFsdWVJbnZhbGlkKTsKLSAgICAgICAgICAgICAgICBBU1NFUlQocmVnaW9uLT5sZWZ0KCktPmdl
dFZhbHVlSUQoKSA9PSBDU1NWYWx1ZUludmFsaWQpOworICAgICAgICAgICAgICAgIEFTU0VSVChy
ZWdpb24tPnJpZ2h0KCktPnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUludmFsaWQpOworICAgICAgICAg
ICAgICAgIEFTU0VSVChyZWdpb24tPmJvdHRvbSgpLT52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVJbnZh
bGlkKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQocmVnaW9uLT5sZWZ0KCktPnZhbHVlSUQoKSA9
PSBDU1NWYWx1ZUludmFsaWQpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAg
ICByZXN1bHQuYXBwZW5kKCcgJyk7CiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChyZWdp
b24tPnRvcCgpLT5jc3NUZXh0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1ByaW1pdGl2ZVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUu
aAppbmRleCBhOWE2Nzc4MWVlMGY0NDFkNGM1Yzc4MzYxZDZkZjJhNDk3YWY4ZTRmLi4xMzJkOWFi
NzhkOTFhY2I3NmZiOWYwOWJlMjZlZDFmNzNhNWYzN2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UHJpbWl0aXZlVmFsdWUuaApAQCAtMzMsMjMgKzMzLDIwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAorY2xhc3MgQ1NTQmFzaWNTaGFwZTsKIGNsYXNzIENTU0NhbGNWYWx1ZTsKIGNsYXNzIENT
U1RvTGVuZ3RoQ29udmVyc2lvbkRhdGE7CiBjbGFzcyBDb3VudGVyOwogY2xhc3MgRGFzaGJvYXJk
UmVnaW9uOworY2xhc3MgTGVuZ3RoUmVwZWF0OwogY2xhc3MgUGFpcjsKIGNsYXNzIFF1YWQ7CiBj
bGFzcyBSR0JDb2xvcjsKIGNsYXNzIFJlY3Q7CiBjbGFzcyBSZW5kZXJTdHlsZTsKLWNsYXNzIENT
U0Jhc2ljU2hhcGU7Ci1zdHJ1Y3QgQ1NTUGFyc2VyVmFsdWU7Ci0KLSNpZiBFTkFCTEUoQ1NTX1ND
Uk9MTF9TTkFQKQotY2xhc3MgTGVuZ3RoUmVwZWF0OwotI2VuZGlmCiAKIHN0cnVjdCBDU1NGb250
RmFtaWx5Oworc3RydWN0IENTU1BhcnNlclZhbHVlOwogc3RydWN0IExlbmd0aDsKIHN0cnVjdCBM
ZW5ndGhTaXplOwogCkBAIC0xNzgsMzkgKzE3NSwyMiBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICAg
ICAgVU90aGVyCiAgICAgfTsKLSAgICBzdGF0aWMgVW5pdENhdGVnb3J5IHVuaXRDYXRlZ29yeShD
U1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzKTsKLQotICAgIGJvb2wgaXNBbmdsZSgpIGNvbnN0
Ci0gICAgewotICAgICAgICByZXR1cm4gbV9wcmltaXRpdmVVbml0VHlwZSA9PSBDU1NfREVHCi0g
ICAgICAgICAgICAgICB8fCBtX3ByaW1pdGl2ZVVuaXRUeXBlID09IENTU19SQUQKLSAgICAgICAg
ICAgICAgIHx8IG1fcHJpbWl0aXZlVW5pdFR5cGUgPT0gQ1NTX0dSQUQKLSAgICAgICAgICAgICAg
IHx8IG1fcHJpbWl0aXZlVW5pdFR5cGUgPT0gQ1NTX1RVUk47Ci0gICAgfQorICAgIHN0YXRpYyBV
bml0Q2F0ZWdvcnkgdW5pdENhdGVnb3J5KFVuaXRUeXBlcyk7CisKKyAgICBib29sIGlzQW5nbGUo
KSBjb25zdDsKICAgICBib29sIGlzQXR0cigpIGNvbnN0IHsgcmV0dXJuIG1fcHJpbWl0aXZlVW5p
dFR5cGUgPT0gQ1NTX0FUVFI7IH0KICAgICBib29sIGlzQ291bnRlcigpIGNvbnN0IHsgcmV0dXJu
IG1fcHJpbWl0aXZlVW5pdFR5cGUgPT0gQ1NTX0NPVU5URVI7IH0KICAgICBib29sIGlzRm9udElu
ZGVwZW5kZW50TGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9wcmltaXRpdmVVbml0VHlwZSA+PSBD
U1NfUFggJiYgbV9wcmltaXRpdmVVbml0VHlwZSA8PSBDU1NfUEM7IH0KLSAgICBzdGF0aWMgYm9v
bCBpc0ZvbnRSZWxhdGl2ZUxlbmd0aCh1bnNpZ25lZCBwcmltaXRpdmVVbml0VHlwZSkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBwcmltaXRpdmVVbml0VHlwZSA9PSBDU1NfRU1TCi0gICAgICAgICAg
ICB8fCBwcmltaXRpdmVVbml0VHlwZSA9PSBDU1NfRVhTCi0gICAgICAgICAgICB8fCBwcmltaXRp
dmVVbml0VHlwZSA9PSBDU1NfUkVNUwotICAgICAgICAgICAgfHwgcHJpbWl0aXZlVW5pdFR5cGUg
PT0gQ1NTX0NIUwotICAgICAgICAgICAgfHwgcHJpbWl0aXZlVW5pdFR5cGUgPT0gQ1NTX1FVSVJL
WV9FTVM7Ci0gICAgfQotICAgIGJvb2wgaXNGb250UmVsYXRpdmVMZW5ndGgoKSBjb25zdCB7IHJl
dHVybiBpc0ZvbnRSZWxhdGl2ZUxlbmd0aChtX3ByaW1pdGl2ZVVuaXRUeXBlKTsgfQorICAgIHN0
YXRpYyBib29sIGlzRm9udFJlbGF0aXZlTGVuZ3RoKFVuaXRUeXBlcyk7CisgICAgYm9vbCBpc0Zv
bnRSZWxhdGl2ZUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIGlzRm9udFJlbGF0aXZlTGVuZ3RoKHN0
YXRpY19jYXN0PFVuaXRUeXBlcz4obV9wcmltaXRpdmVVbml0VHlwZSkpOyB9CiAgICAgCiAgICAg
Ym9vbCBpc1F1aXJreUVtcygpIGNvbnN0IHsgcmV0dXJuIHByaW1pdGl2ZVR5cGUoKSA9PSBVbml0
VHlwZXM6OkNTU19RVUlSS1lfRU1TOyB9CiAKLSAgICBzdGF0aWMgYm9vbCBpc1ZpZXdwb3J0UGVy
Y2VudGFnZUxlbmd0aCh1bnNpZ25lZCBzaG9ydCB0eXBlKSB7IHJldHVybiB0eXBlID49IENTU19W
VyAmJiB0eXBlIDw9IENTU19WTUFYOyB9Ci0gICAgYm9vbCBpc1ZpZXdwb3J0UGVyY2VudGFnZUxl
bmd0aCgpIGNvbnN0IHsgcmV0dXJuIGlzVmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKG1fcHJpbWl0
aXZlVW5pdFR5cGUpOyB9CisgICAgc3RhdGljIGJvb2wgaXNWaWV3cG9ydFBlcmNlbnRhZ2VMZW5n
dGgoVW5pdFR5cGVzIHR5cGUpIHsgcmV0dXJuIHR5cGUgPj0gQ1NTX1ZXICYmIHR5cGUgPD0gQ1NT
X1ZNQVg7IH0KKyAgICBib29sIGlzVmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKCkgY29uc3QgeyBy
ZXR1cm4gaXNWaWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgoc3RhdGljX2Nhc3Q8VW5pdFR5cGVzPiht
X3ByaW1pdGl2ZVVuaXRUeXBlKSk7IH0KIAotICAgIHN0YXRpYyBib29sIGlzTGVuZ3RoKHVuc2ln
bmVkIHNob3J0IHR5cGUpCi0gICAgewotICAgICAgICByZXR1cm4gKHR5cGUgPj0gQ1NTX0VNUyAm
JiB0eXBlIDw9IENTU19QQykgfHwgdHlwZSA9PSBDU1NfUkVNUyB8fCB0eXBlID09IENTU19DSFMg
fHwgaXNWaWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgodHlwZSkgfHwgdHlwZSA9PSBDU1NfUVVJUktZ
X0VNUzsKLSAgICB9Ci0KLSAgICBib29sIGlzTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gaXNMZW5n
dGgocHJpbWl0aXZlVHlwZSgpKTsgfQorICAgIHN0YXRpYyBib29sIGlzTGVuZ3RoKFVuaXRUeXBl
cyk7CisgICAgYm9vbCBpc0xlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIGlzTGVuZ3RoKHN0YXRpY19j
YXN0PFVuaXRUeXBlcz4ocHJpbWl0aXZlVHlwZSgpKSk7IH0KICAgICBib29sIGlzTnVtYmVyKCkg
Y29uc3QgeyByZXR1cm4gcHJpbWl0aXZlVHlwZSgpID09IENTU19OVU1CRVI7IH0KICAgICBib29s
IGlzUGVyY2VudGFnZSgpIGNvbnN0IHsgcmV0dXJuIHByaW1pdGl2ZVR5cGUoKSA9PSBDU1NfUEVS
Q0VOVEFHRTsgfQogICAgIGJvb2wgaXNQeCgpIGNvbnN0IHsgcmV0dXJuIHByaW1pdGl2ZVR5cGUo
KSA9PSBDU1NfUFg7IH0KQEAgLTIzMywxMiArMjEzLDggQEAgcHVibGljOgogICAgIGJvb2wgaXNE
b3RzUGVyUGl4ZWwoKSBjb25zdCB7IHJldHVybiBwcmltaXRpdmVUeXBlKCkgPT0gQ1NTX0RQUFg7
IH0KICAgICBib29sIGlzRG90c1BlckNlbnRpbWV0ZXIoKSBjb25zdCB7IHJldHVybiBwcmltaXRp
dmVUeXBlKCkgPT0gQ1NTX0RQQ007IH0KIAotICAgIHN0YXRpYyBib29sIGlzUmVzb2x1dGlvbih1
bnNpZ25lZCBzaG9ydCB0eXBlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHR5cGUgPj0gQ1NTX0RQ
UFggJiYgdHlwZSA8PSBDU1NfRFBDTTsKLSAgICB9Ci0KLSAgICBib29sIGlzUmVzb2x1dGlvbigp
IGNvbnN0IHsgcmV0dXJuIGlzUmVzb2x1dGlvbihwcmltaXRpdmVUeXBlKCkpOyB9CisgICAgc3Rh
dGljIGJvb2wgaXNSZXNvbHV0aW9uKFVuaXRUeXBlcyk7CisgICAgYm9vbCBpc1Jlc29sdXRpb24o
KSBjb25zdCB7IHJldHVybiBpc1Jlc29sdXRpb24oc3RhdGljX2Nhc3Q8VW5pdFR5cGVzPihwcmlt
aXRpdmVUeXBlKCkpKTsgfQogICAgIGJvb2wgaXNWaWV3cG9ydFBlcmNlbnRhZ2VXaWR0aCgpIGNv
bnN0IHsgcmV0dXJuIG1fcHJpbWl0aXZlVW5pdFR5cGUgPT0gQ1NTX1ZXOyB9CiAgICAgYm9vbCBp
c1ZpZXdwb3J0UGVyY2VudGFnZUhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpbWl0aXZlVW5p
dFR5cGUgPT0gQ1NTX1ZIOyB9CiAgICAgYm9vbCBpc1ZpZXdwb3J0UGVyY2VudGFnZU1heCgpIGNv
bnN0IHsgcmV0dXJuIG1fcHJpbWl0aXZlVW5pdFR5cGUgPT0gQ1NTX1ZNQVg7IH0KQEAgLTI1OCwx
MjAgKzIzNCw3NCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4g
Y3JlYXRlKGNvbnN0IExlbmd0aCYgdmFsdWUsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSwgc3R5bGUpKTsgfQog
ICAgIHN0YXRpYyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZShjb25zdCBMZW5ndGhTaXpl
JiB2YWx1ZSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IENTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlLCBzdHlsZSkpOyB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGUoVCYmIHZhbHVlKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3Rk
Ojpmb3J3YXJkPFQ+KHZhbHVlKSkpOwotICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBz
dGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGUoVCYmKTsKIAogICAgIC8vIFRoaXMg
dmFsdWUgaXMgdXNlZCB0byBoYW5kbGUgcXVpcmt5IG1hcmdpbnMgaW4gcmVmbG93IHJvb3RzIChi
b2R5LCB0ZCwgYW5kIHRoKSBsaWtlIFdpbklFLgogICAgIC8vIFRoZSBiYXNpYyBpZGVhIGlzIHRo
YXQgYSBzdHlsZXNoZWV0IGNhbiB1c2UgdGhlIHZhbHVlIF9fcWVtIChmb3IgcXVpcmt5IGVtKSBp
bnN0ZWFkIG9mIGVtLgogICAgIC8vIFdoZW4gdGhlIHF1aXJreSB2YWx1ZSBpcyB1c2VkLCBpZiB5
b3UncmUgaW4gcXVpcmtzIG1vZGUsIHRoZSBtYXJnaW4gd2lsbCBjb2xsYXBzZSBhd2F5CiAgICAg
Ly8gaW5zaWRlIGEgdGFibGUgY2VsbC4KLSAgICBzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVl
PiBjcmVhdGVBbGxvd2luZ01hcmdpblF1aXJrKGRvdWJsZSB2YWx1ZSwgVW5pdFR5cGVzIHR5cGUp
Ci0gICAgewotICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcXVpcmtWYWx1ZSA9IG5ldyBDU1NQ
cmltaXRpdmVWYWx1ZSh2YWx1ZSwgdHlwZSk7Ci0gICAgICAgIHF1aXJrVmFsdWUtPm1faXNRdWly
a1ZhbHVlID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpxdWlya1ZhbHVlKTsKLSAg
ICB9CisgICAgc3RhdGljIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRlQWxsb3dpbmdNYXJn
aW5RdWlyayhkb3VibGUgdmFsdWUsIFVuaXRUeXBlcyk7CiAKICAgICB+Q1NTUHJpbWl0aXZlVmFs
dWUoKTsKIAogICAgIHZvaWQgY2xlYW51cCgpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdW5zaWdu
ZWQgc2hvcnQgcHJpbWl0aXZlVHlwZSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2Vw
dGlvbk9yPHZvaWQ+IHNldEZsb2F0VmFsdWUodW5zaWduZWQgc2hvcnQgdW5pdFR5cGUsIGRvdWJs
ZSBmbG9hdFZhbHVlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25PcjxmbG9hdD4gZ2V0
RmxvYXRWYWx1ZSh1bnNpZ25lZCBzaG9ydCB1bml0VHlwZSkgY29uc3Q7CisgICAgV0VCQ09SRV9F
WFBPUlQgRXhjZXB0aW9uT3I8dm9pZD4gc2V0U3RyaW5nVmFsdWUodW5zaWduZWQgc2hvcnQgc3Ry
aW5nVHlwZSwgY29uc3QgU3RyaW5nJiBzdHJpbmdWYWx1ZSk7CisgICAgV0VCQ09SRV9FWFBPUlQg
RXhjZXB0aW9uT3I8U3RyaW5nPiBnZXRTdHJpbmdWYWx1ZSgpIGNvbnN0OworICAgIFdFQkNPUkVf
RVhQT1JUIEV4Y2VwdGlvbk9yPENvdW50ZXIqPiBnZXRDb3VudGVyVmFsdWUoKSBjb25zdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25PcjxSZWN0Kj4gZ2V0UmVjdFZhbHVlKCkgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8UmVmPFJHQkNvbG9yPj4gZ2V0UkdCQ29s
b3JWYWx1ZSgpIGNvbnN0OwogCiAgICAgZG91YmxlIGNvbXB1dGVEZWdyZWVzKCkgY29uc3Q7CiAg
ICAgCiAgICAgYm9vbCBidWlsZFBhcnNlclZhbHVlKENTU1BhcnNlclZhbHVlKikgY29uc3Q7CiAg
ICAgCiAgICAgZW51bSBUaW1lVW5pdCB7IFNlY29uZHMsIE1pbGxpc2Vjb25kcyB9OwotICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBULCBUaW1lVW5pdCB0aW1lVW5pdD4gVCBjb21wdXRlVGltZSgpIGNv
bnN0Ci0gICAgewotICAgICAgICBpZiAodGltZVVuaXQgPT0gU2Vjb25kcyAmJiBwcmltaXRpdmVU
eXBlKCkgPT0gQ1NTX1MpCi0gICAgICAgICAgICByZXR1cm4gZ2V0VmFsdWU8VD4oKTsKLSAgICAg
ICAgaWYgKHRpbWVVbml0ID09IFNlY29uZHMgJiYgcHJpbWl0aXZlVHlwZSgpID09IENTU19NUykK
LSAgICAgICAgICAgIHJldHVybiBnZXRWYWx1ZTxUPigpIC8gMTAwMDsKLSAgICAgICAgaWYgKHRp
bWVVbml0ID09IE1pbGxpc2Vjb25kcyAmJiBwcmltaXRpdmVUeXBlKCkgPT0gQ1NTX01TKQotICAg
ICAgICAgICAgcmV0dXJuIGdldFZhbHVlPFQ+KCk7Ci0gICAgICAgIGlmICh0aW1lVW5pdCA9PSBN
aWxsaXNlY29uZHMgJiYgcHJpbWl0aXZlVHlwZSgpID09IENTU19TKQotICAgICAgICAgICAgcmV0
dXJuIGdldFZhbHVlPFQ+KCkgKiAxMDAwOwotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgLyoKLSAgICAgKiBjb21wdXRlcyBhIGxl
bmd0aCBpbiBwaXhlbHMgb3V0IG9mIHRoZSBnaXZlbiBDU1NWYWx1ZS4gTmVlZCB0aGUgUmVuZGVy
U3R5bGUgdG8gZ2V0Ci0gICAgICogdGhlIGZvbnRpbmZvIGluIGNhc2UgdmFsIGlzIGRlZmluZWQg
aW4gZW0gb3IgZXguCi0gICAgICoKLSAgICAgKiBUaGUgbWV0cmljcyBoYXZlIHRvIGJlIGEgYml0
IGRpZmZlcmVudCBmb3Igc2NyZWVuIGFuZCBwcmludGVyIG91dHB1dC4KLSAgICAgKiBGb3Igc2Ny
ZWVuIG91dHB1dCB3ZSBhc3N1bWUgMSBpbmNoID09IDcyIHB4LCBmb3IgcHJpbnRlciB3ZSBhc3N1
bWUgMzAwIGRwaQotICAgICAqCi0gICAgICogdGhpcyBpcyBzY3JlZW4vcHJpbnRlciBkZXBlbmRl
bnQsIHNvIHdlIHByb2JhYmx5IG5lZWQgYSBjb25maWcgb3B0aW9uIGZvciB0aGlzLAotICAgICAq
IGFuZCBzb21lIHRvb2wgdG8gY2FsaWJyYXRlLgotICAgICAqLwotICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+IFQgY29tcHV0ZUxlbmd0aChjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJikg
Y29uc3Q7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgVGltZVVuaXQgdGltZVVuaXQ+IFQgY29t
cHV0ZVRpbWUoKSBjb25zdDsKIAotICAgIC8vIENvbnZlcnRzIHRvIGEgTGVuZ3RoLCBtYXBwaW5n
IHZhcmlvdXMgdW5pdCB0eXBlcyBhcHByb3ByaWF0ZWx5LgorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+IFQgY29tcHV0ZUxlbmd0aChjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJikgY29u
c3Q7CiAgICAgdGVtcGxhdGU8aW50PiBMZW5ndGggY29udmVydFRvTGVuZ3RoKGNvbnN0IENTU1Rv
TGVuZ3RoQ29udmVyc2lvbkRhdGEmKSBjb25zdDsKIAogICAgIGJvb2wgY29udmVydGluZ1RvTGVu
Z3RoUmVxdWlyZXNOb25OdWxsU3R5bGUoaW50IGxlbmd0aENvbnZlcnNpb24pIGNvbnN0OwogCi0g
ICAgLy8gdXNlIHdpdGggY2FyZSEhIQotICAgIHZvaWQgc2V0UHJpbWl0aXZlVHlwZSh1bnNpZ25l
ZCBzaG9ydCB0eXBlKSB7IG1fcHJpbWl0aXZlVW5pdFR5cGUgPSB0eXBlOyB9Ci0KLSAgICBXRUJD
T1JFX0VYUE9SVCBkb3VibGUgZ2V0RG91YmxlVmFsdWUodW5zaWduZWQgc2hvcnQgdW5pdFR5cGUs
IEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKLSAgICBkb3VibGUgZ2V0RG91YmxlVmFsdWUodW5zaWdu
ZWQgc2hvcnQgdW5pdFR5cGUpIGNvbnN0OwotICAgIGRvdWJsZSBnZXREb3VibGVWYWx1ZSgpIGNv
bnN0OwotCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRGbG9hdFZhbHVlKHVuc2lnbmVkIHNo
b3J0IHVuaXRUeXBlLCBkb3VibGUgZmxvYXRWYWx1ZSwgRXhjZXB0aW9uQ29kZSYpOwotICAgIGZs
b2F0IGdldEZsb2F0VmFsdWUodW5zaWduZWQgc2hvcnQgdW5pdFR5cGUsIEV4Y2VwdGlvbkNvZGUm
IGVjKSBjb25zdCB7IHJldHVybiBnZXRWYWx1ZTxmbG9hdD4odW5pdFR5cGUsIGVjKTsgfQotICAg
IGZsb2F0IGdldEZsb2F0VmFsdWUodW5zaWduZWQgc2hvcnQgdW5pdFR5cGUpIGNvbnN0IHsgcmV0
dXJuIGdldFZhbHVlPGZsb2F0Pih1bml0VHlwZSk7IH0KLSAgICBmbG9hdCBnZXRGbG9hdFZhbHVl
KCkgY29uc3QgeyByZXR1cm4gZ2V0VmFsdWU8ZmxvYXQ+KCk7IH0KKyAgICBkb3VibGUgZG91Ymxl
VmFsdWUoVW5pdFR5cGVzKSBjb25zdDsKKyAgICBkb3VibGUgZG91YmxlVmFsdWUoKSBjb25zdDsK
IAotICAgIGludCBnZXRJbnRWYWx1ZSh1bnNpZ25lZCBzaG9ydCB1bml0VHlwZSwgRXhjZXB0aW9u
Q29kZSYgZWMpIGNvbnN0IHsgcmV0dXJuIGdldFZhbHVlPGludD4odW5pdFR5cGUsIGVjKTsgfQot
ICAgIGludCBnZXRJbnRWYWx1ZSh1bnNpZ25lZCBzaG9ydCB1bml0VHlwZSkgY29uc3QgeyByZXR1
cm4gZ2V0VmFsdWU8aW50Pih1bml0VHlwZSk7IH0KLSAgICBpbnQgZ2V0SW50VmFsdWUoKSBjb25z
dCB7IHJldHVybiBnZXRWYWx1ZTxpbnQ+KCk7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBp
bmxpbmUgVCB2YWx1ZShVbml0VHlwZXMgdHlwZSkgY29uc3QgeyByZXR1cm4gY2xhbXBUbzxUPihk
b3VibGVWYWx1ZSh0eXBlKSk7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgVCB2
YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIGNsYW1wVG88VD4oZG91YmxlVmFsdWUoKSk7IH0KIAotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBUIGdldFZhbHVlKHVuc2lnbmVkIHNob3J0IHVu
aXRUeXBlLCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QgeyByZXR1cm4gY2xhbXBUbzxUPihnZXRE
b3VibGVWYWx1ZSh1bml0VHlwZSwgZWMpKTsgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlu
bGluZSBUIGdldFZhbHVlKHVuc2lnbmVkIHNob3J0IHVuaXRUeXBlKSBjb25zdCB7IHJldHVybiBj
bGFtcFRvPFQ+KGdldERvdWJsZVZhbHVlKHVuaXRUeXBlKSk7IH0KLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBpbmxpbmUgVCBnZXRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIGNsYW1wVG88VD4oZ2V0
RG91YmxlVmFsdWUoKSk7IH0KKyAgICBmbG9hdCBmbG9hdFZhbHVlKFVuaXRUeXBlcyB0eXBlKSBj
b25zdCB7IHJldHVybiB2YWx1ZTxmbG9hdD4odHlwZSk7IH0KKyAgICBmbG9hdCBmbG9hdFZhbHVl
KCkgY29uc3QgeyByZXR1cm4gdmFsdWU8ZmxvYXQ+KCk7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0U3RyaW5nVmFsdWUodW5zaWduZWQgc2hvcnQgc3RyaW5nVHlwZSwgY29uc3QgU3Ry
aW5nJiBzdHJpbmdWYWx1ZSwgRXhjZXB0aW9uQ29kZSYpOwotICAgIFdFQkNPUkVfRVhQT1JUIFN0
cmluZyBnZXRTdHJpbmdWYWx1ZShFeGNlcHRpb25Db2RlJikgY29uc3Q7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgU3RyaW5nIGdldFN0cmluZ1ZhbHVlKCkgY29uc3Q7CisgICAgaW50IGludFZhbHVlKFVu
aXRUeXBlcyB0eXBlKSBjb25zdCB7IHJldHVybiB2YWx1ZTxpbnQ+KHR5cGUpOyB9CisgICAgaW50
IGludFZhbHVlKCkgY29uc3QgeyByZXR1cm4gdmFsdWU8aW50PigpOyB9CiAKLSAgICBXRUJDT1JF
X0VYUE9SVCBDb3VudGVyKiBnZXRDb3VudGVyVmFsdWUoRXhjZXB0aW9uQ29kZSYpIGNvbnN0Owot
ICAgIENvdW50ZXIqIGdldENvdW50ZXJWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpbWl0aXZl
VW5pdFR5cGUgIT0gQ1NTX0NPVU5URVIgPyBudWxscHRyIDogbV92YWx1ZS5jb3VudGVyOyB9Cisg
ICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN0cmluZ1ZhbHVlKCkgY29uc3Q7CiAKLSAgICBXRUJD
T1JFX0VYUE9SVCBSZWN0KiBnZXRSZWN0VmFsdWUoRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwotICAg
IFJlY3QqIGdldFJlY3RWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpbWl0aXZlVW5pdFR5cGUg
IT0gQ1NTX1JFQ1QgPyBudWxscHRyIDogbV92YWx1ZS5yZWN0OyB9Ci0KLSAgICBRdWFkKiBnZXRR
dWFkVmFsdWUoRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwotICAgIFF1YWQqIGdldFF1YWRWYWx1ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fcHJpbWl0aXZlVW5pdFR5cGUgIT0gQ1NTX1FVQUQgPyBudWxscHRy
IDogbV92YWx1ZS5xdWFkOyB9CisgICAgQ291bnRlciogY291bnRlclZhbHVlKCkgY29uc3QgeyBy
ZXR1cm4gbV9wcmltaXRpdmVVbml0VHlwZSAhPSBDU1NfQ09VTlRFUiA/IDAgOiBtX3ZhbHVlLmNv
dW50ZXI7IH0KKyAgICBSZWN0KiByZWN0VmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ByaW1pdGl2
ZVVuaXRUeXBlICE9IENTU19SRUNUID8gMCA6IG1fdmFsdWUucmVjdDsgfQorICAgIFF1YWQqIHF1
YWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpbWl0aXZlVW5pdFR5cGUgIT0gQ1NTX1FVQUQg
PyAwIDogbV92YWx1ZS5xdWFkOyB9CiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotICAg
IExlbmd0aFJlcGVhdCogZ2V0TGVuZ3RoUmVwZWF0VmFsdWUoRXhjZXB0aW9uQ29kZSYpIGNvbnN0
OwotICAgIExlbmd0aFJlcGVhdCogZ2V0TGVuZ3RoUmVwZWF0VmFsdWUoKSBjb25zdCB7IHJldHVy
biBtX3ByaW1pdGl2ZVVuaXRUeXBlICE9IENTU19MRU5HVEhfUkVQRUFUID8gbnVsbHB0ciA6IG1f
dmFsdWUubGVuZ3RoUmVwZWF0OyB9CisgICAgTGVuZ3RoUmVwZWF0KiBsZW5ndGhSZXBlYXRWYWx1
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpbWl0aXZlVW5pdFR5cGUgIT0gQ1NTX0xFTkdUSF9SRVBF
QVQgPyAwIDogbV92YWx1ZS5sZW5ndGhSZXBlYXQ7IH0KICNlbmRpZgogCi0gICAgV0VCQ09SRV9F
WFBPUlQgUmVmUHRyPFJHQkNvbG9yPiBnZXRSR0JDb2xvclZhbHVlKEV4Y2VwdGlvbkNvZGUmKSBj
b25zdDsKICAgICBjb25zdCBDb2xvciYgY29sb3IoKSBjb25zdCB7IEFTU0VSVChtX3ByaW1pdGl2
ZVVuaXRUeXBlID09IENTU19SR0JDT0xPUik7IHJldHVybiAqbV92YWx1ZS5jb2xvcjsgfQotCi0g
ICAgUGFpciogZ2V0UGFpclZhbHVlKEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKLSAgICBQYWlyKiBn
ZXRQYWlyVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ByaW1pdGl2ZVVuaXRUeXBlICE9IENTU19Q
QUlSID8gbnVsbHB0ciA6IG1fdmFsdWUucGFpcjsgfQorICAgIFBhaXIqIHBhaXJWYWx1ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcHJpbWl0aXZlVW5pdFR5cGUgIT0gQ1NTX1BBSVIgPyBudWxscHRyIDog
bV92YWx1ZS5wYWlyOyB9CiAKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCi0gICAgRGFz
aGJvYXJkUmVnaW9uKiBnZXREYXNoYm9hcmRSZWdpb25WYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cHJpbWl0aXZlVW5pdFR5cGUgIT0gQ1NTX0RBU0hCT0FSRF9SRUdJT04gPyBudWxscHRyIDogbV92
YWx1ZS5yZWdpb247IH0KKyAgICBEYXNoYm9hcmRSZWdpb24qIGRhc2hib2FyZFJlZ2lvblZhbHVl
KCkgY29uc3QgeyByZXR1cm4gbV9wcmltaXRpdmVVbml0VHlwZSAhPSBDU1NfREFTSEJPQVJEX1JF
R0lPTiA/IG51bGxwdHIgOiBtX3ZhbHVlLnJlZ2lvbjsgfQogI2VuZGlmCiAKLSAgICBDU1NCYXNp
Y1NoYXBlKiBnZXRTaGFwZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9wcmltaXRpdmVVbml0VHlw
ZSAhPSBDU1NfU0hBUEUgPyBudWxscHRyIDogbV92YWx1ZS5zaGFwZTsgfQotCisgICAgQ1NTQmFz
aWNTaGFwZSogc2hhcGVWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpbWl0aXZlVW5pdFR5cGUg
IT0gQ1NTX1NIQVBFID8gbnVsbHB0ciA6IG1fdmFsdWUuc2hhcGU7IH0KICAgICBjb25zdCBDU1NG
b250RmFtaWx5JiBmb250RmFtaWx5KCkgY29uc3QgeyBBU1NFUlQobV9wcmltaXRpdmVVbml0VHlw
ZSA9PSBDU1NfRk9OVF9GQU1JTFkpOyByZXR1cm4gKm1fdmFsdWUuZm9udEZhbWlseTsgfQotCiAg
ICAgQ1NTQ2FsY1ZhbHVlKiBjc3NDYWxjVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ByaW1pdGl2
ZVVuaXRUeXBlICE9IENTU19DQUxDID8gbnVsbHB0ciA6IG1fdmFsdWUuY2FsYzsgfQogCi0gICAg
Q1NTUHJvcGVydHlJRCBnZXRQcm9wZXJ0eUlEKCkgY29uc3QgeyByZXR1cm4gbV9wcmltaXRpdmVV
bml0VHlwZSA9PSBDU1NfUFJPUEVSVFlfSUQgPyBtX3ZhbHVlLnByb3BlcnR5SUQgOiBDU1NQcm9w
ZXJ0eUludmFsaWQ7IH0KLSAgICBDU1NWYWx1ZUlEIGdldFZhbHVlSUQoKSBjb25zdCB7IHJldHVy
biBtX3ByaW1pdGl2ZVVuaXRUeXBlID09IENTU19WQUxVRV9JRCA/IG1fdmFsdWUudmFsdWVJRCA6
IENTU1ZhbHVlSW52YWxpZDsgfQorICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCgpIGNvbnN0
IHsgcmV0dXJuIG1fcHJpbWl0aXZlVW5pdFR5cGUgPT0gQ1NTX1BST1BFUlRZX0lEID8gbV92YWx1
ZS5wcm9wZXJ0eUlEIDogQ1NTUHJvcGVydHlJbnZhbGlkOyB9CisgICAgQ1NTVmFsdWVJRCB2YWx1
ZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wcmltaXRpdmVVbml0VHlwZSA9PSBDU1NfVkFMVUVfSUQg
PyBtX3ZhbHVlLnZhbHVlSUQgOiBDU1NWYWx1ZUludmFsaWQ7IH0KIAogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+IGlubGluZSBvcGVyYXRvciBUKCkgY29uc3Q7IC8vIERlZmluZWQgaW4gQ1NTUHJp
bWl0aXZlVmFsdWVNYXBwaW5ncy5oCiAKQEAgLTM4Niw5ICszMTYsOSBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBlcXVhbHMoY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmKSBjb25zdDsKIAogICAgIHN0YXRp
YyBVbml0VHlwZXMgY2Fub25pY2FsVW5pdFR5cGVGb3JDYXRlZ29yeShVbml0Q2F0ZWdvcnkpOwot
ICAgIHN0YXRpYyBkb3VibGUgY29udmVyc2lvblRvQ2Fub25pY2FsVW5pdHNTY2FsZUZhY3Rvcih1
bnNpZ25lZCBzaG9ydCB1bml0VHlwZSk7CisgICAgc3RhdGljIGRvdWJsZSBjb252ZXJzaW9uVG9D
YW5vbmljYWxVbml0c1NjYWxlRmFjdG9yKFVuaXRUeXBlcyk7CiAKLSAgICBzdGF0aWMgZG91Ymxl
IGNvbXB1dGVOb25DYWxjTGVuZ3RoRG91YmxlKGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRh
dGEmLCB1bnNpZ25lZCBzaG9ydCBwcmltaXRpdmVUeXBlLCBkb3VibGUgdmFsdWUpOworICAgIHN0
YXRpYyBkb3VibGUgY29tcHV0ZU5vbkNhbGNMZW5ndGhEb3VibGUoY29uc3QgQ1NTVG9MZW5ndGhD
b252ZXJzaW9uRGF0YSYsIFVuaXRUeXBlcywgZG91YmxlIHZhbHVlKTsKIAogI2lmIENPTVBJTEVS
KE1TVkMpCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIHByaXZhdGUsIGJ1dCBmb3Igc29t
ZSByZWFzb24gTVNWQyB0aGVuIGZhaWxzIHRvIGludm9rZSBpdCBmcm9tIExhenlOZXZlckRlc3Ry
b3llZDo6Y29uc3RydWN0LgpAQCAtNDExLDE4ICszNDEsOCBAQCBwcml2YXRlOgogICAgIENTU1By
aW1pdGl2ZVZhbHVlKGRvdWJsZSwgVW5pdFR5cGVzKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+IENTU1ByaW1pdGl2ZVZhbHVlKFQpOyAvLyBEZWZpbmVkIGluIENTU1ByaW1pdGl2ZVZhbHVl
TWFwcGluZ3MuaAotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gQ1NTUHJpbWl0aXZlVmFsdWUo
UmVmUHRyPFQ+JiYgdmFsdWUpCi0gICAgICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCi0g
ICAgewotICAgICAgICBpbml0KFdURk1vdmUodmFsdWUpKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBDU1NQcmltaXRpdmVWYWx1ZShSZWY8VD4mJiB2YWx1ZSkKLSAgICAgICAg
OiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKLSAgICB7Ci0gICAgICAgIGluaXQoV1RGTW92ZSh2
YWx1ZSkpOwotICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBDU1NQcmltaXRpdmVWYWx1
ZShSZWZQdHI8VD4mJik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gQ1NTUHJpbWl0aXZlVmFs
dWUoUmVmPFQ+JiYpOwogCiAgICAgc3RhdGljIHZvaWQgY3JlYXRlKGludCk7IC8vIGNvbXBpbGUt
dGltZSBndWFyZAogICAgIHN0YXRpYyB2b2lkIGNyZWF0ZSh1bnNpZ25lZCk7IC8vIGNvbXBpbGUt
dGltZSBndWFyZApAQCAtNDQyLDEzICszNjIsMTIgQEAgcHJpdmF0ZToKICNlbmRpZgogICAgIHZv
aWQgaW5pdChSZWY8Q1NTQmFzaWNTaGFwZT4mJik7CiAgICAgdm9pZCBpbml0KFJlZlB0cjxDU1ND
YWxjVmFsdWU+JiYpOwotICAgIGJvb2wgZ2V0RG91YmxlVmFsdWVJbnRlcm5hbChVbml0VHlwZXMg
dGFyZ2V0VW5pdFR5cGUsIGRvdWJsZSogcmVzdWx0KSBjb25zdDsKKyAgICBPcHRpb25hbDxkb3Vi
bGU+IGRvdWJsZVZhbHVlSW50ZXJuYWwoVW5pdFR5cGVzIHRhcmdldFVuaXRUeXBlKSBjb25zdDsK
IAogICAgIGRvdWJsZSBjb21wdXRlTGVuZ3RoRG91YmxlKGNvbnN0IENTU1RvTGVuZ3RoQ29udmVy
c2lvbkRhdGEmKSBjb25zdDsKIAogICAgIEFMV0FZU19JTkxJTkUgU3RyaW5nIGZvcm1hdE51bWJl
ckZvckN1c3RvbUNTU1RleHQoKSBjb25zdDsKLSAgICB0ZW1wbGF0ZSA8dW5zaWduZWQgY2hhcmFj
dGVyQ291bnQ+Ci0gICAgQUxXQVlTX0lOTElORSBSZWY8U3RyaW5nSW1wbD4gZm9ybWF0TnVtYmVy
VmFsdWUoY29uc3QgY2hhciAoJmNoYXJhY3RlcnMpW2NoYXJhY3RlckNvdW50XSkgY29uc3Q7Cisg
ICAgdGVtcGxhdGU8dW5zaWduZWQgY2hhcmFjdGVyQ291bnQ+IEFMV0FZU19JTkxJTkUgUmVmPFN0
cmluZ0ltcGw+IGZvcm1hdE51bWJlclZhbHVlKGNvbnN0IGNoYXIgKCZjaGFyYWN0ZXJzKVtjaGFy
YWN0ZXJDb3VudF0pIGNvbnN0OwogICAgIE5FVkVSX0lOTElORSBSZWY8U3RyaW5nSW1wbD4gZm9y
bWF0TnVtYmVyVmFsdWUoY29uc3QgY2hhciogc3VmZml4LCB1bnNpZ25lZCBzdWZmaXhMZW5ndGgp
IGNvbnN0OwogCiAgICAgdW5pb24gewpAQCAtNDcyLDYgKzM5MSw3NSBAQCBwcml2YXRlOgogICAg
IH0gbV92YWx1ZTsKIH07CiAKK2lubGluZSBib29sIENTU1ByaW1pdGl2ZVZhbHVlOjppc0FuZ2xl
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcmltaXRpdmVVbml0VHlwZSA9PSBDU1NfREVHCisg
ICAgICAgIHx8IG1fcHJpbWl0aXZlVW5pdFR5cGUgPT0gQ1NTX1JBRAorICAgICAgICB8fCBtX3By
aW1pdGl2ZVVuaXRUeXBlID09IENTU19HUkFECisgICAgICAgIHx8IG1fcHJpbWl0aXZlVW5pdFR5
cGUgPT0gQ1NTX1RVUk47Cit9CisKK2lubGluZSBib29sIENTU1ByaW1pdGl2ZVZhbHVlOjppc0Zv
bnRSZWxhdGl2ZUxlbmd0aChVbml0VHlwZXMgdHlwZSkKK3sKKyAgICByZXR1cm4gdHlwZSA9PSBD
U1NfRU1TCisgICAgICAgIHx8IHR5cGUgPT0gQ1NTX0VYUworICAgICAgICB8fCB0eXBlID09IENT
U19SRU1TCisgICAgICAgIHx8IHR5cGUgPT0gQ1NTX0NIUworICAgICAgICB8fCB0eXBlID09IENT
U19RVUlSS1lfRU1TOworfQorCitpbmxpbmUgYm9vbCBDU1NQcmltaXRpdmVWYWx1ZTo6aXNMZW5n
dGgoVW5pdFR5cGVzIHR5cGUpCit7CisgICAgcmV0dXJuICh0eXBlID49IENTU19FTVMgJiYgdHlw
ZSA8PSBDU1NfUEMpCisgICAgICAgIHx8IHR5cGUgPT0gQ1NTX1JFTVMKKyAgICAgICAgfHwgdHlw
ZSA9PSBDU1NfQ0hTCisgICAgICAgIHx8IGlzVmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKHR5cGUp
CisgICAgICAgIHx8IHR5cGUgPT0gQ1NTX1FVSVJLWV9FTVM7Cit9CisKK2lubGluZSBib29sIENT
U1ByaW1pdGl2ZVZhbHVlOjppc1Jlc29sdXRpb24oVW5pdFR5cGVzIHR5cGUpCit7CisgICAgcmV0
dXJuIHR5cGUgPj0gQ1NTX0RQUFggJiYgdHlwZSA8PSBDU1NfRFBDTTsKK30KKwordGVtcGxhdGU8
dHlwZW5hbWUgVD4gaW5saW5lIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gQ1NTUHJpbWl0aXZlVmFs
dWU6OmNyZWF0ZShUJiYgdmFsdWUpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTUHJp
bWl0aXZlVmFsdWUoc3RkOjpmb3J3YXJkPFQ+KHZhbHVlKSkpOworfQorCitpbmxpbmUgUmVmPENT
U1ByaW1pdGl2ZVZhbHVlPiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlQWxsb3dpbmdNYXJnaW5R
dWlyayhkb3VibGUgdmFsdWUsIFVuaXRUeXBlcyB0eXBlKQoreworICAgIGF1dG8gcmVzdWx0ID0g
YWRvcHRSZWYoKm5ldyBDU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSwgdHlwZSkpOworICAgIHJlc3Vs
dC0+bV9pc1F1aXJrVmFsdWUgPSB0cnVlOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3RlbXBs
YXRlPHR5cGVuYW1lIFQsIENTU1ByaW1pdGl2ZVZhbHVlOjpUaW1lVW5pdCB0aW1lVW5pdD4gaW5s
aW5lIFQgQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVUaW1lKCkgY29uc3QKK3sKKyAgICBpZiAo
dGltZVVuaXQgPT0gU2Vjb25kcyAmJiBwcmltaXRpdmVUeXBlKCkgPT0gQ1NTX1MpCisgICAgICAg
IHJldHVybiB2YWx1ZTxUPigpOworICAgIGlmICh0aW1lVW5pdCA9PSBTZWNvbmRzICYmIHByaW1p
dGl2ZVR5cGUoKSA9PSBDU1NfTVMpCisgICAgICAgIHJldHVybiB2YWx1ZTxUPigpIC8gMTAwMDsK
KyAgICBpZiAodGltZVVuaXQgPT0gTWlsbGlzZWNvbmRzICYmIHByaW1pdGl2ZVR5cGUoKSA9PSBD
U1NfTVMpCisgICAgICAgIHJldHVybiB2YWx1ZTxUPigpOworICAgIGlmICh0aW1lVW5pdCA9PSBN
aWxsaXNlY29uZHMgJiYgcHJpbWl0aXZlVHlwZSgpID09IENTU19TKQorICAgICAgICByZXR1cm4g
dmFsdWU8VD4oKSAqIDEwMDA7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJu
IDA7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTUHJpbWl0aXZlVmFsdWUoUmVmUHRyPFQ+JiYgdmFsdWUpCisgICAgOiBDU1NWYWx1ZShQcmlt
aXRpdmVDbGFzcykKK3sKKyAgICBpbml0KFdURk1vdmUodmFsdWUpKTsKK30KKwordGVtcGxhdGU8
dHlwZW5hbWUgVD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShS
ZWY8VD4mJiB2YWx1ZSkKKyAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQoreworICAgIGlu
aXQoV1RGTW92ZSh2YWx1ZSkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKIFNQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfQ1NTX1ZBTFVFKENTU1ByaW1pdGl2ZVZhbHVlLCBpc1ByaW1pdGl2
ZVZhbHVlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFs
dWUuaWRsIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmlkbAppbmRleCAy
MzRiMDBmYzU0OTlhMTJhZmYzZWQyMDViZmJjOWE0NDA0YmViMjgzLi4yNDgyYzYyMDY0ZDY4NTM1
MDJkYmYzYmQ0NjVkZDljMmUwOTY3ZDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUHJpbWl0aXZlVmFsdWUuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRp
dmVWYWx1ZS5pZGwKQEAgLTIwLDcgKzIwLDYgQEAKIFsKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tz
VlRhYmxlLAogXSBpbnRlcmZhY2UgQ1NTUHJpbWl0aXZlVmFsdWUgOiBDU1NWYWx1ZSB7Ci0KICAg
ICAvLyBVbml0VHlwZXMKICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBDU1NfVU5LTk9XTiA9IDA7
CiAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgQ1NTX05VTUJFUiA9IDE7CkBAIC01NSwxMyArNTQs
MTMgQEAKICAgICAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQgcHJpbWl0
aXZlVHlwZTsKIAotICAgIFtNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gdm9pZCBzZXRGbG9hdFZh
bHVlKG9wdGlvbmFsIHVuc2lnbmVkIHNob3J0IHVuaXRUeXBlID0gMCwgb3B0aW9uYWwgdW5yZXN0
cmljdGVkIGZsb2F0IGZsb2F0VmFsdWUgPSBOYU4pOwotICAgIFtNYXlUaHJvd0xlZ2FjeUV4Y2Vw
dGlvbl0gdW5yZXN0cmljdGVkIGZsb2F0IGdldEZsb2F0VmFsdWUob3B0aW9uYWwgdW5zaWduZWQg
c2hvcnQgdW5pdFR5cGUgPSAwKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0Rmxv
YXRWYWx1ZShvcHRpb25hbCB1bnNpZ25lZCBzaG9ydCB1bml0VHlwZSA9IDAsIG9wdGlvbmFsIHVu
cmVzdHJpY3RlZCBmbG9hdCBmbG9hdFZhbHVlID0gTmFOKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRp
b25dIHVucmVzdHJpY3RlZCBmbG9hdCBnZXRGbG9hdFZhbHVlKG9wdGlvbmFsIHVuc2lnbmVkIHNo
b3J0IHVuaXRUeXBlID0gMCk7CisKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0U3Ry
aW5nVmFsdWUob3B0aW9uYWwgdW5zaWduZWQgc2hvcnQgc3RyaW5nVHlwZSA9IDAsIG9wdGlvbmFs
IERPTVN0cmluZyBzdHJpbmdWYWx1ZSk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBET01TdHJp
bmcgZ2V0U3RyaW5nVmFsdWUoKTsKIAotICAgIC8vIEZJWE1FOiBVc2luZyAidW5kZWZpbmVkIiBh
cyBkZWZhdWx0IHBhcmFtZXRlciB2YWx1ZSBpcyB3cm9uZy4KLSAgICBbTWF5VGhyb3dMZWdhY3lF
eGNlcHRpb25dIHZvaWQgc2V0U3RyaW5nVmFsdWUob3B0aW9uYWwgdW5zaWduZWQgc2hvcnQgc3Ry
aW5nVHlwZSA9IDAsIG9wdGlvbmFsIERPTVN0cmluZyBzdHJpbmdWYWx1ZSA9ICJ1bmRlZmluZWQi
KTsKLSAgICBbTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIERPTVN0cmluZyBnZXRTdHJpbmdWYWx1
ZSgpOwotICAgIFtNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gQ291bnRlciBnZXRDb3VudGVyVmFs
dWUoKTsKLSAgICBbTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIFJlY3QgZ2V0UmVjdFZhbHVlKCk7
Ci0gICAgW01heVRocm93TGVnYWN5RXhjZXB0aW9uXSBSR0JDb2xvciBnZXRSR0JDb2xvclZhbHVl
KCk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBDb3VudGVyIGdldENvdW50ZXJWYWx1ZSgpOwor
ICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gUmVjdCBnZXRSZWN0VmFsdWUoKTsKKyAgICBbTWF5VGhy
b3dFeGNlcHRpb25dIFJHQkNvbG9yIGdldFJHQkNvbG9yVmFsdWUoKTsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaAppbmRleCAyZWJmMzIyYzNi
NTg2OTdjZGFjM2VlOTZmNzlhMTU0MmNmMDVjNzQ1Li4yZDVlOGNlNmY0OGQ4NThjY2FlMjIwMTU3
MWExMzEzMWM1ZTZmYzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0
aXZlVmFsdWVNYXBwaW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVW
YWx1ZU1hcHBpbmdzLmgKQEAgLTI3LDggKzI3LDcgQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lm
bmRlZiBDU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzX2gKLSNkZWZpbmUgQ1NTUHJpbWl0aXZlVmFs
dWVNYXBwaW5nc19oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNTU0NhbGN1bGF0aW9uVmFs
dWUuaCIKICNpbmNsdWRlICJDU1NGb250RmFtaWx5LmgiCkBAIC04Miw3ICs4MSw3IEBAIHRlbXBs
YXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZSh1bnNpZ25l
ZCBzaG9ydCBpKQogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9y
IHVuc2lnbmVkIHNob3J0KCkgY29uc3QKIHsKICAgICBpZiAocHJpbWl0aXZlVHlwZSgpID09IENT
U19OVU1CRVIpCi0gICAgICAgIHJldHVybiBnZXRWYWx1ZTx1bnNpZ25lZCBzaG9ydD4oKTsKKyAg
ICAgICAgcmV0dXJuIHZhbHVlPHVuc2lnbmVkIHNob3J0PigpOwogCiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgcmV0dXJuIDA7CkBAIC05MSw3ICs5MCw3IEBAIHRlbXBsYXRlPD4gaW5s
aW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciB1bnNpZ25lZCBzaG9ydCgpIGNvbnN0CiB0
ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgaW50KCkgY29uc3QK
IHsKICAgICBpZiAocHJpbWl0aXZlVHlwZSgpID09IENTU19OVU1CRVIpCi0gICAgICAgIHJldHVy
biBnZXRWYWx1ZTxpbnQ+KCk7CisgICAgICAgIHJldHVybiB2YWx1ZTxpbnQ+KCk7CiAKICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gMDsKQEAgLTEwMCw3ICs5OSw3IEBAIHRl
bXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBpbnQoKSBjb25zdAog
dGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIHVuc2lnbmVkKCkg
Y29uc3QKIHsKICAgICBpZiAocHJpbWl0aXZlVHlwZSgpID09IENTU19OVU1CRVIpCi0gICAgICAg
IHJldHVybiBnZXRWYWx1ZTx1bnNpZ25lZD4oKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlPHVuc2ln
bmVkPigpOwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIDA7CkBAIC0x
MTcsNyArMTE2LDcgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1By
aW1pdGl2ZVZhbHVlKGZsb2F0IGkpCiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1
ZTo6b3BlcmF0b3IgZmxvYXQoKSBjb25zdAogewogICAgIGlmIChwcmltaXRpdmVUeXBlKCkgPT0g
Q1NTX05VTUJFUikKLSAgICAgICAgcmV0dXJuIGdldFZhbHVlPGZsb2F0PigpOworICAgICAgICBy
ZXR1cm4gdmFsdWU8ZmxvYXQ+KCk7CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICBy
ZXR1cm4gMC4wZjsKQEAgLTEzMywxMCArMTMyLDEwIEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShMaW5lQ2xhbXBWYWx1ZSBpKQogdGVtcGxh
dGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIExpbmVDbGFtcFZhbHVlKCkg
Y29uc3QKIHsKICAgICBpZiAocHJpbWl0aXZlVHlwZSgpID09IENTU19OVU1CRVIpCi0gICAgICAg
IHJldHVybiBMaW5lQ2xhbXBWYWx1ZShnZXRWYWx1ZTxpbnQ+KCksIExpbmVDbGFtcExpbmVDb3Vu
dCk7CisgICAgICAgIHJldHVybiBMaW5lQ2xhbXBWYWx1ZSh2YWx1ZTxpbnQ+KCksIExpbmVDbGFt
cExpbmVDb3VudCk7CiAKICAgICBpZiAocHJpbWl0aXZlVHlwZSgpID09IENTU19QRVJDRU5UQUdF
KQotICAgICAgICByZXR1cm4gTGluZUNsYW1wVmFsdWUoZ2V0VmFsdWU8aW50PigpLCBMaW5lQ2xh
bXBQZXJjZW50YWdlKTsKKyAgICAgICAgcmV0dXJuIExpbmVDbGFtcFZhbHVlKHZhbHVlPGludD4o
KSwgTGluZUNsYW1wUGVyY2VudGFnZSk7CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICByZXR1cm4gTGluZUNsYW1wVmFsdWUoKTsKQEAgLTQ2MTQsOCArNDYxMyw4IEBAIHRlbXBsYXRl
PGludCBzdXBwb3J0ZWQ+IExlbmd0aCBDU1NQcmltaXRpdmVWYWx1ZTo6Y29udmVydFRvTGVuZ3Ro
KGNvbnN0IENTU1RvTGVuCiAgICAgaWYgKChzdXBwb3J0ZWQgJiBGaXhlZEZsb2F0Q29udmVyc2lv
bikgJiYgaXNMZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIExlbmd0aChjb21wdXRlTGVuZ3RoPGRv
dWJsZT4oY29udmVyc2lvbkRhdGEpLCBGaXhlZCk7CiAgICAgaWYgKChzdXBwb3J0ZWQgJiBQZXJj
ZW50Q29udmVyc2lvbikgJiYgaXNQZXJjZW50YWdlKCkpCi0gICAgICAgIHJldHVybiBMZW5ndGgo
Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7Ci0gICAgaWYgKChzdXBwb3J0ZWQgJiBBdXRvQ29u
dmVyc2lvbikgJiYgZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlQXV0bykKKyAgICAgICAgcmV0dXJu
IExlbmd0aChkb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKKyAgICBpZiAoKHN1cHBvcnRlZCAmIEF1
dG9Db252ZXJzaW9uKSAmJiB2YWx1ZUlEKCkgPT0gQ1NTVmFsdWVBdXRvKQogICAgICAgICByZXR1
cm4gTGVuZ3RoKEF1dG8pOwogICAgIGlmICgoc3VwcG9ydGVkICYgQ2FsY3VsYXRlZENvbnZlcnNp
b24pICYmIGlzQ2FsY3VsYXRlZCgpKQogICAgICAgICByZXR1cm4gTGVuZ3RoKGNzc0NhbGNWYWx1
ZSgpLT5jcmVhdGVDYWxjdWxhdGlvblZhbHVlKGNvbnZlcnNpb25EYXRhKSk7CkBAIC01MDQ1LDcg
KzUwNDQsNyBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0
aXZlVmFsdWUoSW1hZ2VPcmllbnRhdGlvbkVudW0gZSkKIHRlbXBsYXRlPD4gaW5saW5lIENTU1By
aW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBJbWFnZU9yaWVudGF0aW9uRW51bSgpIGNvbnN0CiB7CiAg
ICAgQVNTRVJUKGlzQW5nbGUoKSk7Ci0gICAgZG91YmxlIHF1YXJ0ZXJzID0gNCAqIGdldERvdWJs
ZVZhbHVlKENTU19UVVJOKTsKKyAgICBkb3VibGUgcXVhcnRlcnMgPSA0ICogZG91YmxlVmFsdWUo
Q1NTX1RVUk4pOwogICAgIGludCBvcmllbnRhdGlvbiA9IDMgJiBzdGF0aWNfY2FzdDxpbnQ+KHF1
YXJ0ZXJzIDwgMCA/IGZsb29yKHF1YXJ0ZXJzKSA6IGNlaWwocXVhcnRlcnMpKTsKICAgICBzd2l0
Y2ggKG9yaWVudGF0aW9uKSB7CiAgICAgY2FzZSAwOgpAQCAtNTA5OSw3ICs1MDk4LDcgQEAgdGVt
cGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKENTU0Jv
eFR5cGUgY3NzQm94KQogCiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3Bl
cmF0b3IgQ1NTQm94VHlwZSgpIGNvbnN0CiB7Ci0gICAgc3dpdGNoIChnZXRWYWx1ZUlEKCkpIHsK
KyAgICBzd2l0Y2ggKHZhbHVlSUQoKSkgewogICAgIGNhc2UgQ1NTVmFsdWVNYXJnaW5Cb3g6CiAg
ICAgICAgIHJldHVybiBNYXJnaW5Cb3g7CiAgICAgY2FzZSBDU1NWYWx1ZUJvcmRlckJveDoKQEAg
LTU2ODYsNiArNTY4NSw1IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpv
cGVyYXRvciBGb250VmFyaWFudEFsdGVybmF0ZXMoKSBjb25zdAogICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgIHJldHVybiBGb250VmFyaWFudEFsdGVybmF0ZXM6Ok5vcm1hbDsKIH0KLX0K
IAotI2VuZGlmCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUnVsZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUnVsZS5jcHAKaW5kZXggZjAxY2ZmYWZkOTA3OTVlNjY0
NTJmMmZhMmIwNWMxZTMzNTMzMWQwMC4uZTUyNjBhNDJhMDVmOTU3MDBjN2FmYzQyNzdmMzFmZGQ0
OGUyY2MzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1J1bGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSdWxlLmNwcApAQCAtNDUsOSArNDUsOSBAQCBDT01QSUxF
X0FTU0VSVChTdHlsZVJ1bGVCYXNlOjpSZWdpb24gPT0gc3RhdGljX2Nhc3Q8U3R5bGVSdWxlQmFz
ZTo6VHlwZT4oQ1NTUnVsZQogQ09NUElMRV9BU1NFUlQoU3R5bGVSdWxlQmFzZTo6Vmlld3BvcnQg
PT0gc3RhdGljX2Nhc3Q8U3R5bGVSdWxlQmFzZTo6VHlwZT4oQ1NTUnVsZTo6V0VCS0lUX1ZJRVdQ
T1JUX1JVTEUpLCBlbnVtc19zaG91bGRfbWF0Y2gpOwogI2VuZGlmCiAKLXZvaWQgQ1NTUnVsZTo6
c2V0Q3NzVGV4dChjb25zdCBTdHJpbmcmIC8qY3NzVGV4dCovLCBFeGNlcHRpb25Db2RlJiAvKmVj
Ki8pCitFeGNlcHRpb25Pcjx2b2lkPiBDU1NSdWxlOjpzZXRDc3NUZXh0KGNvbnN0IFN0cmluZyYp
CiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4geyB9OwogfQogCiBjb25zdCBD
U1NQYXJzZXJDb250ZXh0JiBDU1NSdWxlOjpwYXJzZXJDb250ZXh0KCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSdWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UnVsZS5oCmluZGV4IDM5NDYzZTYzNTUyNjBlN2MzYzUzZjExNmFhNWU1OWZkMmIwZjUwYzAuLjg2
NzI0YmFkMjk2ZmFlOTU4YTNmMWJkZDVmZjkwYTk0NmJhYWM3ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NSdWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1J1bGUu
aApAQCAtMjIsMTYgKzIyLDE1IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KKyNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2luY2x1ZGUgPHd0Zi9UeXBl
Q2FzdHMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBDU1NTdHlsZVNoZWV0OwogY2xhc3MgU3R5bGVSdWxlQmFzZTsKKwog
c3RydWN0IENTU1BhcnNlckNvbnRleHQ7Ci10eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwogCiBj
bGFzcyBDU1NSdWxlIDogcHVibGljIFJlZkNvdW50ZWQ8Q1NTUnVsZT4gewogcHVibGljOgpAQCAt
ODksNyArODgsNyBAQCBwdWJsaWM6CiAKICAgICBDU1NSdWxlKiBwYXJlbnRSdWxlKCkgY29uc3Qg
eyByZXR1cm4gbV9wYXJlbnRJc1J1bGUgPyBtX3BhcmVudFJ1bGUgOiAwOyB9CiAKLSAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldENzc1RleHQoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYp
OworICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldENzc1RleHQoY29uc3Qg
U3RyaW5nJik7CiAKIHByb3RlY3RlZDoKICAgICBDU1NSdWxlKENTU1N0eWxlU2hlZXQqIHBhcmVu
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSdWxlLmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NSdWxlLmlkbAppbmRleCA1ODJlYWY5NTZmM2QzYmYyMGYzMzhiYzRhNmYw
ODk5Y2ViZWYzNmMzLi4xMjY4ZjExNzJkZjU2YWU4Y2VlYzUwYjFkOWIxNjFmNzcxMWVjYmYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUnVsZS5pZGwKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1J1bGUuaWRsCkBAIC0zNiwxOSArMzYsMTYgQEAKICAgICBjb25zdCB1bnNp
Z25lZCBzaG9ydCBLRVlGUkFNRVNfUlVMRSA9IDc7CiAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQg
S0VZRlJBTUVfUlVMRSA9IDg7CiAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1VQUE9SVFNfUlVM
RSA9IDEyOwotI2lmIGRlZmluZWQoRU5BQkxFX0NTU19ERVZJQ0VfQURBUFRBVElPTikgJiYgRU5B
QkxFX0NTU19ERVZJQ0VfQURBUFRBVElPTgotICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFdFQktJ
VF9WSUVXUE9SVF9SVUxFID0gMTU7Ci0jZW5kaWYKLSNpZiBkZWZpbmVkKEVOQUJMRV9DU1NfUkVH
SU9OUykgJiYgRU5BQkxFX0NTU19SRUdJT05TCi0gICAgY29uc3QgdW5zaWduZWQgc2hvcnQgV0VC
S0lUX1JFR0lPTl9SVUxFID0gMTY7Ci0jZW5kaWYKKyAgICBbQ29uZGl0aW9uYWw9Q1NTX0RFVklD
RV9BREFQVEFUSU9OXSBjb25zdCB1bnNpZ25lZCBzaG9ydCBXRUJLSVRfVklFV1BPUlRfUlVMRSA9
IDE1OworICAgIFtDb25kaXRpb25hbD1DU1NfUkVHSU9OU10gY29uc3QgdW5zaWduZWQgc2hvcnQg
V0VCS0lUX1JFR0lPTl9SVUxFID0gMTY7CiAKLSAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBXRUJL
SVRfS0VZRlJBTUVTX1JVTEUgPSA3OyAvLyBBdm9pZCBicmVha2luZyBleGlzdGluZyBjb250ZW50
LgorICAgIC8vIExlZ2FjeSBzeW5vbnltcyBmb3IgdGhlIGFib3ZlLCBrZXB0IHRvIGF2b2lkIGJy
ZWFraW5nIGV4aXN0aW5nIGNvbnRlbnQuCisgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgV0VCS0lU
X0tFWUZSQU1FU19SVUxFID0gNzsKICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBXRUJLSVRfS0VZ
RlJBTUVfUlVMRSA9IDg7CiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQg
dHlwZTsKIAotICAgIFtTZXR0ZXJNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gYXR0cmlidXRlIERP
TVN0cmluZz8gY3NzVGV4dDsKKyAgICBbU2V0dGVyTWF5VGhyb3dFeGNlcHRpb25dIGF0dHJpYnV0
ZSBET01TdHJpbmc/IGNzc1RleHQ7CiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgQ1NTU3R5bGVT
aGVldD8gcGFyZW50U3R5bGVTaGVldDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgQ1NTUnVsZT8g
cGFyZW50UnVsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xh
cmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5oCmluZGV4
IDQ4ZmZmMmFhOGFkN2IyZjYyMzM3MjdkZjM0ZGI5YTdjYmEwYmUyMzkuLjVlNDMyMWIyOGVjNjVk
OGZmMjgxZTkzNmNhNTExODkwNDY2ZjgzMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NTdHlsZURlY2xhcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxl
RGVjbGFyYXRpb24uaApAQCAtMTgsMTAgKzE4LDEwIEBACiAgKiBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KICAqLwogCi0jaWZuZGVmIENTU1N0eWxlRGVjbGFyYXRpb25faAotI2RlZmluZSBD
U1NTdHlsZURlY2xhcmF0aW9uX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ1NTUHJvcGVy
dHlOYW1lcy5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAiU2NyaXB0V3Jh
cHBhYmxlLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIApAQCAtMzUsOCArMzUsNiBAQCBj
bGFzcyBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOwogY2xhc3MgU3R5bGVQcm9wZXJ0aWVzOwogY2xh
c3MgU3R5bGVkRWxlbWVudDsKIAotdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKLQogY2xhc3Mg
Q1NTU3R5bGVEZWNsYXJhdGlvbiA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUgewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKENTU1N0eWxlRGVjbGFyYXRpb24pOyBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKQEAgLTQ4LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3R5
bGVkRWxlbWVudCogcGFyZW50RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KICAg
ICB2aXJ0dWFsIENTU1J1bGUqIHBhcmVudFJ1bGUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBT
dHJpbmcgY3NzVGV4dCgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q3NzVGV4dChj
b25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJikgPSAwOworICAgIHZpcnR1YWwgRXhjZXB0aW9u
T3I8dm9pZD4gc2V0Q3NzVGV4dChjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCB1bnNp
Z25lZCBsZW5ndGgoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgaXRlbSh1bnNpZ25l
ZCBpbmRleCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUmVmUHRyPENTU1ZhbHVlPiBnZXRQcm9w
ZXJ0eUNTU1ZhbHVlKGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKSA9IDA7CkBAIC01NiwyNCAr
NTQsMjIgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIGdldFByb3BlcnR5UHJpb3JpdHko
Y29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyBnZXRQ
cm9wZXJ0eVNob3J0aGFuZChjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkgPSAwOwogICAgIHZp
cnR1YWwgYm9vbCBpc1Byb3BlcnR5SW1wbGljaXQoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0UHJvcGVydHkoY29uc3QgU3RyaW5nJiBwcm9wZXJ0
eU5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGNvbnN0IFN0cmluZyYgcHJpb3JpdHksIEV4Y2Vw
dGlvbkNvZGUmKSA9IDA7Ci0gICAgdmlydHVhbCBTdHJpbmcgcmVtb3ZlUHJvcGVydHkoY29uc3Qg
U3RyaW5nJiBwcm9wZXJ0eU5hbWUsIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CisgICAgdmlydHVhbCBF
eGNlcHRpb25Pcjx2b2lkPiBzZXRQcm9wZXJ0eShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwg
Y29uc3QgU3RyaW5nJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBwcmlvcml0eSkgPSAwOworICAgIHZp
cnR1YWwgRXhjZXB0aW9uT3I8U3RyaW5nPiByZW1vdmVQcm9wZXJ0eShjb25zdCBTdHJpbmcmIHBy
b3BlcnR5TmFtZSkgPSAwOwogCiAgICAgLy8gQ1NTUHJvcGVydHlJRCB2ZXJzaW9ucyBvZiB0aGUg
Q1NTT00gZnVuY3Rpb25zIHRvIHN1cHBvcnQgYmluZGluZ3MgYW5kIGVkaXRpbmcuCiAgICAgLy8g
VXNlIHRoZSBub24tdmlydHVhbCBtZXRob2RzIGluIHRoZSBjb25jcmV0ZSBzdWJjbGFzc2VzIHdo
ZW4gcG9zc2libGUuCiAgICAgLy8gVGhlIENTU1ZhbHVlIHJldHVybmVkIGJ5IHRoaXMgZnVuY3Rp
b24gc2hvdWxkIG5vdCBiZSBleHBvc2VkIHRvIHRoZSB3ZWIgYXMgaXQgbWF5IGJlIHVzZWQgYnkg
bXVsdGlwbGUgZG9jdW1lbnRzIGF0IHRoZSBzYW1lIHRpbWUuCiAgICAgdmlydHVhbCBSZWZQdHI8
Q1NTVmFsdWU+IGdldFByb3BlcnR5Q1NTVmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUlEKSA9IDA7
CiAgICAgdmlydHVhbCBTdHJpbmcgZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
SUQpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgc2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0
eUlELCBjb25zdCBTdHJpbmcmIHZhbHVlLCBib29sIGltcG9ydGFudCwgRXhjZXB0aW9uQ29kZSYp
ID0gMDsKKyAgICB2aXJ0dWFsIEV4Y2VwdGlvbk9yPGJvb2w+IHNldFByb3BlcnR5SW50ZXJuYWwo
Q1NTUHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQpID0gMDsK
IAogICAgIHZpcnR1YWwgUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IGNvcHlQcm9wZXJ0aWVz
KCkgY29uc3QgPSAwOwogCi0gICAgdmlydHVhbCBDU1NTdHlsZVNoZWV0KiBwYXJlbnRTdHlsZVNo
ZWV0KCkgY29uc3QgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgQ1NTU3R5bGVTaGVldCogcGFy
ZW50U3R5bGVTaGVldCgpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KIAogcHJvdGVjdGVkOgog
ICAgIENTU1N0eWxlRGVjbGFyYXRpb24oKSB7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmIC8vIENTU1N0eWxlRGVjbGFyYXRpb25faApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uaWRsIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1N0eWxlRGVjbGFyYXRpb24uaWRsCmluZGV4IDQ3ODkzYTI1NjgyYjk0YzU3Mjk3MWNmOGVl
NzFlYmRiODEyMTZiOWUuLjJjODVhNGMwZDhhYTU2OWVjMGU0ZDUyYTU4MTFjNmVlMzNlMjQyMDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmlkbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5pZGwKQEAgLTI4LDE1
ICsyOCwxNSBAQAogICAgIEpTQ3VzdG9tTWFya0Z1bmN0aW9uLAogICAgIFNraXBWVGFibGVWYWxp
ZGF0aW9uLAogXSBpbnRlcmZhY2UgQ1NTU3R5bGVEZWNsYXJhdGlvbiB7Ci0gICAgW1NldHRlck1h
eVRocm93TGVnYWN5RXhjZXB0aW9uXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGNzc1RleHQ7CisgICAg
W1NldHRlck1heVRocm93RXhjZXB0aW9uXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGNzc1RleHQ7CiAK
ICAgICBET01TdHJpbmcgZ2V0UHJvcGVydHlWYWx1ZShET01TdHJpbmcgcHJvcGVydHlOYW1lKTsK
ICAgICBbQ3VzdG9tXSBDU1NWYWx1ZT8gZ2V0UHJvcGVydHlDU1NWYWx1ZShET01TdHJpbmcgcHJv
cGVydHlOYW1lKTsKIAotICAgIFtNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gRE9NU3RyaW5nIHJl
bW92ZVByb3BlcnR5KERPTVN0cmluZyBwcm9wZXJ0eU5hbWUpOworICAgIFtNYXlUaHJvd0V4Y2Vw
dGlvbl0gRE9NU3RyaW5nIHJlbW92ZVByb3BlcnR5KERPTVN0cmluZyBwcm9wZXJ0eU5hbWUpOwog
ICAgIERPTVN0cmluZz8gZ2V0UHJvcGVydHlQcmlvcml0eShET01TdHJpbmcgcHJvcGVydHlOYW1l
KTsKIAotICAgIFtNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gdm9pZCBzZXRQcm9wZXJ0eShET01T
dHJpbmcgcHJvcGVydHlOYW1lLCBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyB2
YWx1ZSwgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBvcHRpb25hbCBET01TdHJpbmcgcHJpb3Jp
dHkgPSAiIik7CisgICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldFByb3BlcnR5KERPTVN0
cmluZyBwcm9wZXJ0eU5hbWUsIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIHZh
bHVlLCBbVHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIG9wdGlvbmFsIERPTVN0cmluZyBwcmlvcml0
eSA9ICIiKTsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsK
ICAgICBnZXR0ZXIgRE9NU3RyaW5nIGl0ZW0odW5zaWduZWQgbG9uZyBpbmRleCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKaW5kZXggYWY4ZTI0NWY5OWQ3NDQyZTRhZjI4MjFmOTcz
Yjg2YzIzNGI0Y2NmMS4uNWY5MWFhMWZkZmFhYTYyMzY1NDc4ZjE3ZGRlOTYzNmI2MmQzYmM1YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcApAQCAtMjg0LDUzICsyODQsNDMgQEAg
UmVmUHRyPENTU1J1bGVMaXN0PiBDU1NTdHlsZVNoZWV0OjpydWxlcygpCiAgICAgcmV0dXJuIG5v
bkNoYXJzZXRSdWxlczsKIH0KIAotdW5zaWduZWQgQ1NTU3R5bGVTaGVldDo6ZGVwcmVjYXRlZElu
c2VydFJ1bGUoY29uc3QgU3RyaW5nJiBydWxlU3RyaW5nLCBFeGNlcHRpb25Db2RlJiBlYykKK0V4
Y2VwdGlvbk9yPHVuc2lnbmVkPiBDU1NTdHlsZVNoZWV0OjpkZXByZWNhdGVkSW5zZXJ0UnVsZShj
b25zdCBTdHJpbmcmIHJ1bGVTdHJpbmcpCiB7CiAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gb3du
ZXJEb2N1bWVudCgpKQogICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2Fn
ZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgQVNDSUlMaXRlcmFsKCJDYWxsaW5n
IENTU1N0eWxlU2hlZXQuaW5zZXJ0UnVsZSgpIHdpdGggb25lIGFyZ3VtZW50IGlzIGRlcHJlY2F0
ZWQuIFBsZWFzZSBwYXNzIHRoZSBpbmRleCBhcmd1bWVudCBhcyB3ZWxsOiBpbnNlcnRSdWxlKHgs
IDApLiIpKTsKIAotICAgIHJldHVybiBpbnNlcnRSdWxlKHJ1bGVTdHJpbmcsIDAsIGVjKTsKKyAg
ICByZXR1cm4gaW5zZXJ0UnVsZShydWxlU3RyaW5nLCAwKTsKIH0KIAotdW5zaWduZWQgQ1NTU3R5
bGVTaGVldDo6aW5zZXJ0UnVsZShjb25zdCBTdHJpbmcmIHJ1bGVTdHJpbmcsIHVuc2lnbmVkIGlu
ZGV4LCBFeGNlcHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPHVuc2lnbmVkPiBDU1NTdHlsZVNo
ZWV0OjppbnNlcnRSdWxlKGNvbnN0IFN0cmluZyYgcnVsZVN0cmluZywgdW5zaWduZWQgaW5kZXgp
CiB7CiAgICAgQVNTRVJUKG1fY2hpbGRSdWxlQ1NTT01XcmFwcGVycy5pc0VtcHR5KCkgfHwgbV9j
aGlsZFJ1bGVDU1NPTVdyYXBwZXJzLnNpemUoKSA9PSBtX2NvbnRlbnRzLT5ydWxlQ291bnQoKSk7
CiAKLSAgICBlYyA9IDA7Ci0gICAgaWYgKGluZGV4ID4gbGVuZ3RoKCkpIHsKLSAgICAgICAgZWMg
PSBJTkRFWF9TSVpFX0VSUjsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQorICAgIGlmIChpbmRl
eCA+IGxlbmd0aCgpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSU5ERVhfU0laRV9FUlIg
fTsKICAgICBDU1NQYXJzZXIgcChtX2NvbnRlbnRzLmdldCgpLnBhcnNlckNvbnRleHQoKSk7CiAg
ICAgUmVmUHRyPFN0eWxlUnVsZUJhc2U+IHJ1bGUgPSBwLnBhcnNlUnVsZShtX2NvbnRlbnRzLnB0
cigpLCBydWxlU3RyaW5nKTsKIAotICAgIGlmICghcnVsZSkgewotICAgICAgICBlYyA9IFNZTlRB
WF9FUlI7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KKyAgICBpZiAoIXJ1bGUpCisgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBTWU5UQVhfRVJSIH07CiAKICAgICBSdWxlTXV0YXRpb25TY29w
ZSBtdXRhdGlvblNjb3BlKHRoaXMsIFJ1bGVJbnNlcnRpb24sIGlzPFN0eWxlUnVsZUtleWZyYW1l
cz4oKnJ1bGUpID8gZG93bmNhc3Q8U3R5bGVSdWxlS2V5ZnJhbWVzPihydWxlLmdldCgpKSA6IG51
bGxwdHIpOwogCiAgICAgYm9vbCBzdWNjZXNzID0gbV9jb250ZW50cy5nZXQoKS53cmFwcGVySW5z
ZXJ0UnVsZShydWxlLnJlbGVhc2VOb25OdWxsKCksIGluZGV4KTsKLSAgICBpZiAoIXN1Y2Nlc3Mp
IHsKLSAgICAgICAgZWMgPSBISUVSQVJDSFlfUkVRVUVTVF9FUlI7Ci0gICAgICAgIHJldHVybiAw
OwotICAgIH0gICAgICAgIAorICAgIGlmICghc3VjY2VzcykKKyAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IEhJRVJBUkNIWV9SRVFVRVNUX0VSUiB9OwogICAgIGlmICghbV9jaGlsZFJ1bGVDU1NP
TVdyYXBwZXJzLmlzRW1wdHkoKSkKICAgICAgICAgbV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJzLmlu
c2VydChpbmRleCwgUmVmUHRyPENTU1J1bGU+KCkpOwogCiAgICAgcmV0dXJuIGluZGV4OwogfQog
Ci12b2lkIENTU1N0eWxlU2hlZXQ6OmRlbGV0ZVJ1bGUodW5zaWduZWQgaW5kZXgsIEV4Y2VwdGlv
bkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8dm9pZD4gQ1NTU3R5bGVTaGVldDo6ZGVsZXRlUnVsZSh1
bnNpZ25lZCBpbmRleCkKIHsKICAgICBBU1NFUlQobV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJzLmlz
RW1wdHkoKSB8fCBtX2NoaWxkUnVsZUNTU09NV3JhcHBlcnMuc2l6ZSgpID09IG1fY29udGVudHMt
PnJ1bGVDb3VudCgpKTsKIAotICAgIGVjID0gMDsKLSAgICBpZiAoaW5kZXggPj0gbGVuZ3RoKCkp
IHsKLSAgICAgICAgZWMgPSBJTkRFWF9TSVpFX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
KyAgICBpZiAoaW5kZXggPj0gbGVuZ3RoKCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJ
TkRFWF9TSVpFX0VSUiB9OwogICAgIFJ1bGVNdXRhdGlvblNjb3BlIG11dGF0aW9uU2NvcGUodGhp
cyk7CiAKICAgICBtX2NvbnRlbnRzLT53cmFwcGVyRGVsZXRlUnVsZShpbmRleCk7CkBAIC0zNDAs
OSArMzMwLDExIEBAIHZvaWQgQ1NTU3R5bGVTaGVldDo6ZGVsZXRlUnVsZSh1bnNpZ25lZCBpbmRl
eCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgICAgICBtX2NoaWxkUnVsZUNTU09NV3JhcHBl
cnNbaW5kZXhdLT5zZXRQYXJlbnRTdHlsZVNoZWV0KG51bGxwdHIpOwogICAgICAgICBtX2NoaWxk
UnVsZUNTU09NV3JhcHBlcnMucmVtb3ZlKGluZGV4KTsKICAgICB9CisKKyAgICByZXR1cm4geyB9
OwogfQogCi1pbnQgQ1NTU3R5bGVTaGVldDo6YWRkUnVsZShjb25zdCBTdHJpbmcmIHNlbGVjdG9y
LCBjb25zdCBTdHJpbmcmIHN0eWxlLCBPcHRpb25hbDx1bnNpZ25lZD4gaW5kZXgsIEV4Y2VwdGlv
bkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8aW50PiBDU1NTdHlsZVNoZWV0OjphZGRSdWxlKGNvbnN0
IFN0cmluZyYgc2VsZWN0b3IsIGNvbnN0IFN0cmluZyYgc3R5bGUsIE9wdGlvbmFsPHVuc2lnbmVk
PiBpbmRleCkKIHsKICAgICBTdHJpbmdCdWlsZGVyIHRleHQ7CiAgICAgdGV4dC5hcHBlbmQoc2Vs
ZWN0b3IpOwpAQCAtMzUxLDcgKzM0Myw5IEBAIGludCBDU1NTdHlsZVNoZWV0OjphZGRSdWxlKGNv
bnN0IFN0cmluZyYgc2VsZWN0b3IsIGNvbnN0IFN0cmluZyYgc3R5bGUsIE9wdGlvbmFsCiAgICAg
aWYgKCFzdHlsZS5pc0VtcHR5KCkpCiAgICAgICAgIHRleHQuYXBwZW5kKCcgJyk7CiAgICAgdGV4
dC5hcHBlbmQoJ30nKTsKLSAgICBpbnNlcnRSdWxlKHRleHQudG9TdHJpbmcoKSwgaW5kZXgudmFs
dWVPcihsZW5ndGgoKSksIGVjKTsKKyAgICBhdXRvIGluc2VydFJ1bGVSZXN1bHQgPSBpbnNlcnRS
dWxlKHRleHQudG9TdHJpbmcoKSwgaW5kZXgudmFsdWVPcihsZW5ndGgoKSkpOworICAgIGlmIChp
bnNlcnRSdWxlUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gaW5zZXJ0UnVs
ZVJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAgCiAgICAgLy8gQXMgcGVyIE1pY3Jvc29m
dCBkb2N1bWVudGF0aW9uLCBhbHdheXMgcmV0dXJuIC0xLgogICAgIHJldHVybiAtMTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTU3R5bGVTaGVldC5oCmluZGV4IGMxYWUxYmU3NGEzMWY4NTk1YzYzNGIyZmMwYWVi
Zjc1N2MzNmU5NTAuLjc0NGE5YzI0M2NkNjQyNDIzOWJmYTQ2NzAxZTlmOTZjMTNiNWFlMDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaApAQCAtMjEsNiArMjEsNyBAQAogI3ByYWdtYSBv
bmNlCiAKICNpbmNsdWRlICJDU1NQYXJzZXJNb2RlLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uT3Iu
aCIKICNpbmNsdWRlICJTdHlsZVNoZWV0LmgiCiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CkBAIC00OSw4ICs1MCw2IEBAIG5hbWVzcGFjZSBTdHlsZSB7CiBjbGFz
cyBTY29wZTsKIH0KIAotdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKLQogY2xhc3MgQ1NTU3R5
bGVTaGVldCBmaW5hbCA6IHB1YmxpYyBTdHlsZVNoZWV0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
UmVmPENTU1N0eWxlU2hlZXQ+IGNyZWF0ZShSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmLCBDU1NJ
bXBvcnRSdWxlKiBvd25lclJ1bGUgPSAwKTsKQEAgLTY4LDE0ICs2NywxMyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXREaXNhYmxlZChib29sKSBmaW5hbDsKICAgICAKICAgICBXRUJDT1JFX0VYUE9S
VCBSZWZQdHI8Q1NTUnVsZUxpc3Q+IGNzc1J1bGVzKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdW5z
aWduZWQgaW5zZXJ0UnVsZShjb25zdCBTdHJpbmcmIHJ1bGUsIHVuc2lnbmVkIGluZGV4LCBFeGNl
cHRpb25Db2RlJik7Ci0gICAgdW5zaWduZWQgZGVwcmVjYXRlZEluc2VydFJ1bGUoY29uc3QgU3Ry
aW5nJiBydWxlLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkZWxl
dGVSdWxlKHVuc2lnbmVkIGluZGV4LCBFeGNlcHRpb25Db2RlJik7CisgICAgV0VCQ09SRV9FWFBP
UlQgRXhjZXB0aW9uT3I8dW5zaWduZWQ+IGluc2VydFJ1bGUoY29uc3QgU3RyaW5nJiBydWxlLCB1
bnNpZ25lZCBpbmRleCk7CisgICAgRXhjZXB0aW9uT3I8dW5zaWduZWQ+IGRlcHJlY2F0ZWRJbnNl
cnRSdWxlKGNvbnN0IFN0cmluZyYgcnVsZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9u
T3I8dm9pZD4gZGVsZXRlUnVsZSh1bnNpZ25lZCBpbmRleCk7CiAgICAgCi0gICAgLy8gSUUgRXh0
ZW5zaW9ucwogICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxDU1NSdWxlTGlzdD4gcnVsZXMoKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCBpbnQgYWRkUnVsZShjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBj
b25zdCBTdHJpbmcmIHN0eWxlLCBPcHRpb25hbDx1bnNpZ25lZD4gaW5kZXgsIEV4Y2VwdGlvbkNv
ZGUmKTsKLSAgICB2b2lkIHJlbW92ZVJ1bGUodW5zaWduZWQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUm
IGVjKSB7IGRlbGV0ZVJ1bGUoaW5kZXgsIGVjKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2Vw
dGlvbk9yPGludD4gYWRkUnVsZShjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBjb25zdCBTdHJpbmcm
IHN0eWxlLCBPcHRpb25hbDx1bnNpZ25lZD4gaW5kZXgpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+
IHJlbW92ZVJ1bGUodW5zaWduZWQgaW5kZXgpIHsgcmV0dXJuIGRlbGV0ZVJ1bGUoaW5kZXgpOyB9
CiAgICAgCiAgICAgLy8gRm9yIENTU1J1bGVMaXN0LgogICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaWRsIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaWRsCmluZGV4IDk1MzhmODU2ODQzMTlm
MjYzZDgwMzY4OGFmNDM1OWY2NWY5ZWY3NjYuLjBjZWI0MTViN2U3NTM2ODg0MWJiOTMwODYzYTU3
Njg2Mjk3NDY2NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5pZGwKQEAgLTIyLDE0
ICsyMiwxNCBAQCBpbnRlcmZhY2UgQ1NTU3R5bGVTaGVldCA6IFN0eWxlU2hlZXQgewogICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBDU1NSdWxlIG93bmVyUnVsZTsKICAgICByZWFkb25seSBhdHRyaWJ1
dGUgQ1NTUnVsZUxpc3QgY3NzUnVsZXM7CiAKLSAgICBbTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25d
IHVuc2lnbmVkIGxvbmcgaW5zZXJ0UnVsZShET01TdHJpbmcgcnVsZSwgdW5zaWduZWQgbG9uZyBp
bmRleCk7Ci0gICAgW01heVRocm93TGVnYWN5RXhjZXB0aW9uLCBJbXBsZW1lbnRlZEFzPWRlcHJl
Y2F0ZWRJbnNlcnRSdWxlXSB1bnNpZ25lZCBsb25nIGluc2VydFJ1bGUoRE9NU3RyaW5nIHJ1bGUp
OyAvLyBEZXByZWNhdGVkLgorICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5zaWduZWQgbG9uZyBp
bnNlcnRSdWxlKERPTVN0cmluZyBydWxlLCB1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICBbTWF5
VGhyb3dFeGNlcHRpb24sIEltcGxlbWVudGVkQXM9ZGVwcmVjYXRlZEluc2VydFJ1bGVdIHVuc2ln
bmVkIGxvbmcgaW5zZXJ0UnVsZShET01TdHJpbmcgcnVsZSk7IC8vIERlcHJlY2F0ZWQuCiAKLSAg
ICBbTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHZvaWQgZGVsZXRlUnVsZSh1bnNpZ25lZCBsb25n
IGluZGV4KTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgZGVsZXRlUnVsZSh1bnNpZ25l
ZCBsb25nIGluZGV4KTsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBDU1NSdWxlTGlzdCBydWxl
czsKIAotICAgIC8vIEZJWE1FOiBUaG9zZSBvcGVyYXRpb25zIGFyZSBXZWJLaXQtc3BlY2lmaWMu
Ci0gICAgW01heVRocm93TGVnYWN5RXhjZXB0aW9uXSBsb25nIGFkZFJ1bGUob3B0aW9uYWwgRE9N
U3RyaW5nIHNlbGVjdG9yID0gInVuZGVmaW5lZCIsIG9wdGlvbmFsIERPTVN0cmluZyBzdHlsZSA9
ICJ1bmRlZmluZWQiLCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICBbTWF5VGhy
b3dMZWdhY3lFeGNlcHRpb25dIHZvaWQgcmVtb3ZlUnVsZShvcHRpb25hbCB1bnNpZ25lZCBsb25n
IGluZGV4ID0gMCk7CisgICAgLy8gVGhlIGZvbGxvd2luZyB0d28gb3BlcmF0aW9ucyBhcmUgV2Vi
S2l0LXNwZWNpZmljLgorICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gbG9uZyBhZGRSdWxlKG9wdGlv
bmFsIERPTVN0cmluZyBzZWxlY3RvciA9ICJ1bmRlZmluZWQiLCBvcHRpb25hbCBET01TdHJpbmcg
c3R5bGUgPSAidW5kZWZpbmVkIiwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAg
W01heVRocm93RXhjZXB0aW9uXSB2b2lkIHJlbW92ZVJ1bGUob3B0aW9uYWwgdW5zaWduZWQgbG9u
ZyBpbmRleCA9IDApOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdXBw
b3J0c1J1bGUuaWRsIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N1cHBvcnRzUnVsZS5pZGwKaW5k
ZXggYWQzNjRmNjM0YTAyZTY5YjZmOTFmMWQ1ZjU5MjQ3OGRmMDExOTJjOC4uZjk2NTAwYjE5MmIx
Mjc0OWNjNTQ4M2Y5ZjE4MTI0OGZiOTRmYmM3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1N1cHBvcnRzUnVsZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N1cHBv
cnRzUnVsZS5pZGwKQEAgLTMwLDcgKzMwLDYgQEAgaW50ZXJmYWNlIENTU1N1cHBvcnRzUnVsZSA6
IENTU1J1bGUgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBDU1NSdWxlTGlzdCBjc3NSdWxlczsK
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGNvbmRpdGlvblRleHQ7CiAKLSAgICBb
TWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHVuc2lnbmVkIGxvbmcgaW5zZXJ0UnVsZShET01TdHJp
bmcgcnVsZSwgdW5zaWduZWQgbG9uZyBpbmRleCk7Ci0gICAgW01heVRocm93TGVnYWN5RXhjZXB0
aW9uXSB2b2lkIGRlbGV0ZVJ1bGUodW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgW01heVRocm93
RXhjZXB0aW9uXSB1bnNpZ25lZCBsb25nIGluc2VydFJ1bGUoRE9NU3RyaW5nIHJ1bGUsIHVuc2ln
bmVkIGxvbmcgaW5kZXgpOworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBkZWxldGVSdWxl
KHVuc2lnbmVkIGxvbmcgaW5kZXgpOwogfTsKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1RvU3R5bGVNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RvU3R5bGVNYXAu
Y3BwCmluZGV4IDliZDJmZDZiZTJlYzIzYjM3ZDg2MDE0N2JlNzQ0NDA0MjgxMDdhYzQuLjhjZjVj
N2U4Y2U3NWE2MGU1ZmVlMGNlNDVhNTJiYjRjYjUxMDNjMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NUb1N0eWxlTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
VG9TdHlsZU1hcC5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgdm9pZCBDU1NUb1N0eWxlTWFwOjptYXBG
aWxsQXR0YWNobWVudChDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIEZpbGxMYXllciYgbGF5ZXIK
ICAgICBpZiAoIWlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIHN3aXRjaCAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS5nZXRWYWx1
ZUlEKCkpIHsKKyAgICBzd2l0Y2ggKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSku
dmFsdWVJRCgpKSB7CiAgICAgY2FzZSBDU1NWYWx1ZUZpeGVkOgogICAgICAgICBsYXllci5zZXRB
dHRhY2htZW50KEZpeGVkQmFja2dyb3VuZEF0dGFjaG1lbnQpOwogICAgICAgICBicmVhazsKQEAg
LTE4Niw3ICsxODYsNyBAQCB2b2lkIENTU1RvU3R5bGVNYXA6Om1hcEZpbGxSZXBlYXRZKENTU1By
b3BlcnR5SUQgcHJvcGVydHlJRCwgRmlsbExheWVyJiBsYXllciwgYwogCiBzdGF0aWMgaW5saW5l
IGJvb2wgY29udmVydFRvTGVuZ3RoU2l6ZShjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYgcHJpbWl0
aXZlVmFsdWUsIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEgY29udmVyc2lvbkRhdGEsIExlbmd0
aFNpemUmIHNpemUpCiB7Ci0gICAgaWYgKGF1dG8qIHBhaXIgPSBwcmltaXRpdmVWYWx1ZS5nZXRQ
YWlyVmFsdWUoKSkgeworICAgIGlmIChhdXRvKiBwYWlyID0gcHJpbWl0aXZlVmFsdWUucGFpclZh
bHVlKCkpIHsKICAgICAgICAgc2l6ZS5zZXRXaWR0aChwYWlyLT5maXJzdCgpLT5jb252ZXJ0VG9M
ZW5ndGg8QW55Q29udmVyc2lvbj4oY29udmVyc2lvbkRhdGEpKTsKICAgICAgICAgc2l6ZS5zZXRI
ZWlnaHQocGFpci0+c2Vjb25kKCktPmNvbnZlcnRUb0xlbmd0aDxBbnlDb252ZXJzaW9uPihjb252
ZXJzaW9uRGF0YSkpOwogICAgIH0gZWxzZQpAQCAtMjA3LDcgKzIwNyw3IEBAIHZvaWQgQ1NTVG9T
dHlsZU1hcDo6bWFwRmlsbFNpemUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBGaWxsTGF5ZXIm
IGxheWVyLCBjb25zCiAKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1By
aW1pdGl2ZVZhbHVlPih2YWx1ZSk7CiAgICAgRmlsbFNpemUgZmlsbFNpemU7Ci0gICAgc3dpdGNo
IChwcmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkpIHsKKyAgICBzd2l0Y2ggKHByaW1pdGl2ZVZh
bHVlLnZhbHVlSUQoKSkgewogICAgIGNhc2UgQ1NTVmFsdWVDb250YWluOgogICAgICAgICBmaWxs
U2l6ZS50eXBlID0gQ29udGFpbjsKICAgICAgICAgYnJlYWs7CkBAIC0yMzQsNyArMjM0LDcgQEAg
dm9pZCBDU1NUb1N0eWxlTWFwOjptYXBGaWxsWFBvc2l0aW9uKENTU1Byb3BlcnR5SUQgcHJvcGVy
dHlJRCwgRmlsbExheWVyJiBsYXllciwKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byogcHJp
bWl0aXZlVmFsdWUgPSAmZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKLSAgICBQ
YWlyKiBwYWlyID0gcHJpbWl0aXZlVmFsdWUtPmdldFBhaXJWYWx1ZSgpOworICAgIFBhaXIqIHBh
aXIgPSBwcmltaXRpdmVWYWx1ZS0+cGFpclZhbHVlKCk7CiAgICAgaWYgKHBhaXIpIHsKICAgICAg
ICAgQVNTRVJUX1VOVVNFRChwcm9wZXJ0eUlELCBwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5QmFj
a2dyb3VuZFBvc2l0aW9uWCB8fCBwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5V2Via2l0TWFza1Bv
c2l0aW9uWCk7CiAgICAgICAgIHByaW1pdGl2ZVZhbHVlID0gcGFpci0+c2Vjb25kKCk7CkBAIC0y
NDQsNyArMjQ0LDcgQEAgdm9pZCBDU1NUb1N0eWxlTWFwOjptYXBGaWxsWFBvc2l0aW9uKENTU1By
b3BlcnR5SUQgcHJvcGVydHlJRCwgRmlsbExheWVyJiBsYXllciwKICAgICBpZiAocHJpbWl0aXZl
VmFsdWUtPmlzTGVuZ3RoKCkpCiAgICAgICAgIGxlbmd0aCA9IHByaW1pdGl2ZVZhbHVlLT5jb21w
dXRlTGVuZ3RoPExlbmd0aD4obV9yZXNvbHZlci0+c3RhdGUoKS5jc3NUb0xlbmd0aENvbnZlcnNp
b25EYXRhKCkpOwogICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc1BlcmNlbnRhZ2UoKSkK
LSAgICAgICAgbGVuZ3RoID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5nZXREb3VibGVWYWx1ZSgp
LCBQZXJjZW50KTsKKyAgICAgICAgbGVuZ3RoID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5kb3Vi
bGVWYWx1ZSgpLCBQZXJjZW50KTsKICAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS0+aXNDYWxj
dWxhdGVkUGVyY2VudGFnZVdpdGhMZW5ndGgoKSkKICAgICAgICAgbGVuZ3RoID0gTGVuZ3RoKHBy
aW1pdGl2ZVZhbHVlLT5jc3NDYWxjVmFsdWUoKS0+Y3JlYXRlQ2FsY3VsYXRpb25WYWx1ZShtX3Jl
c29sdmVyLT5zdGF0ZSgpLmNzc1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoKSkpOwogICAgIGVsc2UK
QEAgLTI2Niw3ICsyNjYsNyBAQCB2b2lkIENTU1RvU3R5bGVNYXA6Om1hcEZpbGxZUG9zaXRpb24o
Q1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBGaWxsTGF5ZXImIGxheWVyLAogICAgICAgICByZXR1
cm47CiAKICAgICBhdXRvKiBwcmltaXRpdmVWYWx1ZSA9ICZkb3duY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZT4odmFsdWUpOwotICAgIFBhaXIqIHBhaXIgPSBwcmltaXRpdmVWYWx1ZS0+Z2V0UGFpclZh
bHVlKCk7CisgICAgUGFpciogcGFpciA9IHByaW1pdGl2ZVZhbHVlLT5wYWlyVmFsdWUoKTsKICAg
ICBpZiAocGFpcikgewogICAgICAgICBBU1NFUlRfVU5VU0VEKHByb3BlcnR5SUQsIHByb3BlcnR5
SUQgPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25ZIHx8IHByb3BlcnR5SUQgPT0gQ1NT
UHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25ZKTsKICAgICAgICAgcHJpbWl0aXZlVmFsdWUgPSBw
YWlyLT5zZWNvbmQoKTsKQEAgLTI3Niw3ICsyNzYsNyBAQCB2b2lkIENTU1RvU3R5bGVNYXA6Om1h
cEZpbGxZUG9zaXRpb24oQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBGaWxsTGF5ZXImIGxheWVy
LAogICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+aXNMZW5ndGgoKSkKICAgICAgICAgbGVuZ3RoID0g
cHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihtX3Jlc29sdmVyLT5zdGF0ZSgp
LmNzc1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoKSk7CiAgICAgZWxzZSBpZiAocHJpbWl0aXZlVmFs
dWUtPmlzUGVyY2VudGFnZSgpKQotICAgICAgICBsZW5ndGggPSBMZW5ndGgocHJpbWl0aXZlVmFs
dWUtPmdldERvdWJsZVZhbHVlKCksIFBlcmNlbnQpOworICAgICAgICBsZW5ndGggPSBMZW5ndGgo
cHJpbWl0aXZlVmFsdWUtPmRvdWJsZVZhbHVlKCksIFBlcmNlbnQpOwogICAgIGVsc2UgaWYgKHBy
aW1pdGl2ZVZhbHVlLT5pc0NhbGN1bGF0ZWRQZXJjZW50YWdlV2l0aExlbmd0aCgpKQogICAgICAg
ICBsZW5ndGggPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmNzc0NhbGNWYWx1ZSgpLT5jcmVhdGVD
YWxjdWxhdGlvblZhbHVlKG1fcmVzb2x2ZXItPnN0YXRlKCkuY3NzVG9MZW5ndGhDb252ZXJzaW9u
RGF0YSgpKSk7CiAgICAgZWxzZQpAQCAtMjk4LDcgKzI5OCw3IEBAIHZvaWQgQ1NTVG9TdHlsZU1h
cDo6bWFwRmlsbE1hc2tTb3VyY2VUeXBlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgRmlsbExh
eWVyJiBsCiAgICAgaWYgKCFpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBzd2l0Y2ggKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSku
Z2V0VmFsdWVJRCgpKSB7CisgICAgc3dpdGNoIChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4o
dmFsdWUpLnZhbHVlSUQoKSkgewogICAgIGNhc2UgQ1NTVmFsdWVBbHBoYToKICAgICAgICAgdHlw
ZSA9IEVNYXNrU291cmNlVHlwZTo6TWFza0FscGhhOwogICAgICAgICBicmVhazsKQEAgLTMzNyw3
ICszMzcsNyBAQCB2b2lkIENTU1RvU3R5bGVNYXA6Om1hcEFuaW1hdGlvbkRpcmVjdGlvbihBbmlt
YXRpb24mIGxheWVyLCBjb25zdCBDU1NWYWx1ZSYgdmFsdQogICAgIGlmICghaXM8Q1NTUHJpbWl0
aXZlVmFsdWU+KHZhbHVlKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc3dpdGNoIChkb3duY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLmdldFZhbHVlSUQoKSkgeworICAgIHN3aXRjaCAo
ZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS52YWx1ZUlEKCkpIHsKICAgICBjYXNl
IENTU1ZhbHVlTm9ybWFsOgogICAgICAgICBsYXllci5zZXREaXJlY3Rpb24oQW5pbWF0aW9uOjpB
bmltYXRpb25EaXJlY3Rpb25Ob3JtYWwpOwogICAgICAgICBicmVhazsKQEAgLTM3OCw3ICszNzgs
NyBAQCB2b2lkIENTU1RvU3R5bGVNYXA6Om1hcEFuaW1hdGlvbkZpbGxNb2RlKEFuaW1hdGlvbiYg
bGF5ZXIsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZQogICAgIGlmICghaXM8Q1NTUHJpbWl0aXZlVmFs
dWU+KHZhbHVlKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc3dpdGNoIChkb3duY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZT4odmFsdWUpLmdldFZhbHVlSUQoKSkgeworICAgIHN3aXRjaCAoZG93bmNh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS52YWx1ZUlEKCkpIHsKICAgICBjYXNlIENTU1Zh
bHVlTm9uZToKICAgICAgICAgbGF5ZXIuc2V0RmlsbE1vZGUoQW5pbWF0aW9uRmlsbE1vZGVOb25l
KTsKICAgICAgICAgYnJlYWs7CkBAIC00MDcsMTAgKzQwNywxMCBAQCB2b2lkIENTU1RvU3R5bGVN
YXA6Om1hcEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50KEFuaW1hdGlvbiYgYW5pbWF0aW9uLCBjb25z
dCBDU1NWYQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRv
d25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7Ci0gICAgaWYgKHByaW1pdGl2ZVZhbHVl
LmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZUluZmluaXRlKQorICAgIGlmIChwcmltaXRpdmVWYWx1
ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVJbmZpbml0ZSkKICAgICAgICAgYW5pbWF0aW9uLnNldEl0
ZXJhdGlvbkNvdW50KEFuaW1hdGlvbjo6SXRlcmF0aW9uQ291bnRJbmZpbml0ZSk7CiAgICAgZWxz
ZQotICAgICAgICBhbmltYXRpb24uc2V0SXRlcmF0aW9uQ291bnQocHJpbWl0aXZlVmFsdWUuZ2V0
RmxvYXRWYWx1ZSgpKTsKKyAgICAgICAgYW5pbWF0aW9uLnNldEl0ZXJhdGlvbkNvdW50KHByaW1p
dGl2ZVZhbHVlLmZsb2F0VmFsdWUoKSk7CiB9CiAKIHZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFwQW5p
bWF0aW9uTmFtZShBbmltYXRpb24mIGxheWVyLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCkBAIC00
MjQsMTAgKzQyNCwxMCBAQCB2b2lkIENTU1RvU3R5bGVNYXA6Om1hcEFuaW1hdGlvbk5hbWUoQW5p
bWF0aW9uJiBsYXllciwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogICAgICAgICByZXR1cm47CiAK
ICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2
YWx1ZSk7Ci0gICAgaWYgKHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5v
bmUpCisgICAgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUpCiAg
ICAgICAgIGxheWVyLnNldElzTm9uZUFuaW1hdGlvbih0cnVlKTsKICAgICBlbHNlCi0gICAgICAg
IGxheWVyLnNldE5hbWUocHJpbWl0aXZlVmFsdWUuZ2V0U3RyaW5nVmFsdWUoKSk7CisgICAgICAg
IGxheWVyLnNldE5hbWUocHJpbWl0aXZlVmFsdWUuc3RyaW5nVmFsdWUoKSk7CiB9CiAKIHZvaWQg
Q1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9uUGxheVN0YXRlKEFuaW1hdGlvbiYgbGF5ZXIsIGNv
bnN0IENTU1ZhbHVlJiB2YWx1ZSkKQEAgLTQ0MCw3ICs0NDAsNyBAQCB2b2lkIENTU1RvU3R5bGVN
YXA6Om1hcEFuaW1hdGlvblBsYXlTdGF0ZShBbmltYXRpb24mIGxheWVyLCBjb25zdCBDU1NWYWx1
ZSYgdmFsdQogICAgIGlmICghaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgRUFuaW1QbGF5U3RhdGUgcGxheVN0YXRlID0gKGRvd25jYXN0PENTU1By
aW1pdGl2ZVZhbHVlPih2YWx1ZSkuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlUGF1c2VkKSA/IEFu
aW1QbGF5U3RhdGVQYXVzZWQgOiBBbmltUGxheVN0YXRlUGxheWluZzsKKyAgICBFQW5pbVBsYXlT
dGF0ZSBwbGF5U3RhdGUgPSAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS52YWx1
ZUlEKCkgPT0gQ1NTVmFsdWVQYXVzZWQpID8gQW5pbVBsYXlTdGF0ZVBhdXNlZCA6IEFuaW1QbGF5
U3RhdGVQbGF5aW5nOwogICAgIGxheWVyLnNldFBsYXlTdGF0ZShwbGF5U3RhdGUpOwogfQogCkBA
IC00NTYsMTUgKzQ1NiwxNSBAQCB2b2lkIENTU1RvU3R5bGVNYXA6Om1hcEFuaW1hdGlvblByb3Bl
cnR5KEFuaW1hdGlvbiYgYW5pbWF0aW9uLCBjb25zdCBDU1NWYWx1ZSYgdgogICAgICAgICByZXR1
cm47CiAKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlPih2YWx1ZSk7Ci0gICAgaWYgKHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQoKSA9PSBDU1NW
YWx1ZUFsbCkgeworICAgIGlmIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVB
bGwpIHsKICAgICAgICAgYW5pbWF0aW9uLnNldEFuaW1hdGlvbk1vZGUoQW5pbWF0aW9uOjpBbmlt
YXRlQWxsKTsKICAgICAgICAgYW5pbWF0aW9uLnNldFByb3BlcnR5KENTU1Byb3BlcnR5SW52YWxp
ZCk7Ci0gICAgfSBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFs
dWVOb25lKSB7CisgICAgfSBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NT
VmFsdWVOb25lKSB7CiAgICAgICAgIGFuaW1hdGlvbi5zZXRBbmltYXRpb25Nb2RlKEFuaW1hdGlv
bjo6QW5pbWF0ZU5vbmUpOwogICAgICAgICBhbmltYXRpb24uc2V0UHJvcGVydHkoQ1NTUHJvcGVy
dHlJbnZhbGlkKTsKICAgICB9IGVsc2UgewogICAgICAgICBhbmltYXRpb24uc2V0QW5pbWF0aW9u
TW9kZShBbmltYXRpb246OkFuaW1hdGVTaW5nbGVQcm9wZXJ0eSk7Ci0gICAgICAgIGFuaW1hdGlv
bi5zZXRQcm9wZXJ0eShwcmltaXRpdmVWYWx1ZS5nZXRQcm9wZXJ0eUlEKCkpOworICAgICAgICBh
bmltYXRpb24uc2V0UHJvcGVydHkocHJpbWl0aXZlVmFsdWUucHJvcGVydHlJRCgpKTsKICAgICB9
CiB9CiAKQEAgLTQ3Niw3ICs0NzYsNyBAQCB2b2lkIENTU1RvU3R5bGVNYXA6Om1hcEFuaW1hdGlv
blRpbWluZ0Z1bmN0aW9uKEFuaW1hdGlvbiYgYW5pbWF0aW9uLCBjb25zdCBDU1NWYQogICAgIH0K
IAogICAgIGlmIChpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKSB7Ci0gICAgICAgIHN3aXRj
aCAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS5nZXRWYWx1ZUlEKCkpIHsKKyAg
ICAgICAgc3dpdGNoIChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLnZhbHVlSUQo
KSkgewogICAgICAgICBjYXNlIENTU1ZhbHVlTGluZWFyOgogICAgICAgICAgICAgYW5pbWF0aW9u
LnNldFRpbWluZ0Z1bmN0aW9uKExpbmVhclRpbWluZ0Z1bmN0aW9uOjpjcmVhdGUoKSk7CiAgICAg
ICAgICAgICBicmVhazsKQEAgLTUyNiw3ICs1MjYsNyBAQCB2b2lkIENTU1RvU3R5bGVNYXA6Om1h
cEFuaW1hdGlvblRyaWdnZXIoQW5pbWF0aW9uJiBhbmltYXRpb24sIGNvbnN0IENTU1ZhbHVlJiB2
YQogCiAgICAgaWYgKHZhbHVlLmlzUHJpbWl0aXZlVmFsdWUoKSkgewogICAgICAgICBhdXRvJiBw
cmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7Ci0gICAg
ICAgIGlmIChwcmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVBdXRvKQorICAg
ICAgICBpZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlQXV0bykKICAgICAg
ICAgICAgIGFuaW1hdGlvbi5zZXRUcmlnZ2VyKEF1dG9BbmltYXRpb25UcmlnZ2VyOjpjcmVhdGUo
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC02MDgsMjEgKzYwOCwyMSBAQCB2b2lkIENT
U1RvU3R5bGVNYXA6Om1hcE5pbmVQaWVjZUltYWdlU2xpY2UoQ1NTVmFsdWUmIHZhbHVlLCBOaW5l
UGllY2VJbWFnZSYgaW1hZwogICAgIExlbmd0aEJveCBib3g7CiAgICAgUXVhZCogc2xpY2VzID0g
Ym9yZGVySW1hZ2VTbGljZS5zbGljZXMoKTsKICAgICBpZiAoc2xpY2VzLT50b3AoKS0+aXNQZXJj
ZW50YWdlKCkpCi0gICAgICAgIGJveC50b3AoKSA9IExlbmd0aChzbGljZXMtPnRvcCgpLT5nZXRE
b3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKKyAgICAgICAgYm94LnRvcCgpID0gTGVuZ3RoKHNsaWNl
cy0+dG9wKCktPmRvdWJsZVZhbHVlKCksIFBlcmNlbnQpOwogICAgIGVsc2UKLSAgICAgICAgYm94
LnRvcCgpID0gTGVuZ3RoKHNsaWNlcy0+dG9wKCktPmdldEludFZhbHVlKENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfTlVNQkVSKSwgRml4ZWQpOworICAgICAgICBib3gudG9wKCkgPSBMZW5ndGgoc2xp
Y2VzLT50b3AoKS0+aW50VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpLCBGaXhl
ZCk7CiAgICAgaWYgKHNsaWNlcy0+Ym90dG9tKCktPmlzUGVyY2VudGFnZSgpKQotICAgICAgICBi
b3guYm90dG9tKCkgPSBMZW5ndGgoc2xpY2VzLT5ib3R0b20oKS0+Z2V0RG91YmxlVmFsdWUoKSwg
UGVyY2VudCk7CisgICAgICAgIGJveC5ib3R0b20oKSA9IExlbmd0aChzbGljZXMtPmJvdHRvbSgp
LT5kb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKICAgICBlbHNlCi0gICAgICAgIGJveC5ib3R0b20o
KSA9IExlbmd0aCgoaW50KXNsaWNlcy0+Ym90dG9tKCktPmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19OVU1CRVIpLCBGaXhlZCk7CisgICAgICAgIGJveC5ib3R0b20oKSA9IExl
bmd0aCgoaW50KXNsaWNlcy0+Ym90dG9tKCktPmZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19OVU1CRVIpLCBGaXhlZCk7CiAgICAgaWYgKHNsaWNlcy0+bGVmdCgpLT5pc1BlcmNlbnRh
Z2UoKSkKLSAgICAgICAgYm94LmxlZnQoKSA9IExlbmd0aChzbGljZXMtPmxlZnQoKS0+Z2V0RG91
YmxlVmFsdWUoKSwgUGVyY2VudCk7CisgICAgICAgIGJveC5sZWZ0KCkgPSBMZW5ndGgoc2xpY2Vz
LT5sZWZ0KCktPmRvdWJsZVZhbHVlKCksIFBlcmNlbnQpOwogICAgIGVsc2UKLSAgICAgICAgYm94
LmxlZnQoKSA9IExlbmd0aChzbGljZXMtPmxlZnQoKS0+Z2V0SW50VmFsdWUoQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19OVU1CRVIpLCBGaXhlZCk7CisgICAgICAgIGJveC5sZWZ0KCkgPSBMZW5ndGgo
c2xpY2VzLT5sZWZ0KCktPmludFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSwg
Rml4ZWQpOwogICAgIGlmIChzbGljZXMtPnJpZ2h0KCktPmlzUGVyY2VudGFnZSgpKQotICAgICAg
ICBib3gucmlnaHQoKSA9IExlbmd0aChzbGljZXMtPnJpZ2h0KCktPmdldERvdWJsZVZhbHVlKCks
IFBlcmNlbnQpOworICAgICAgICBib3gucmlnaHQoKSA9IExlbmd0aChzbGljZXMtPnJpZ2h0KCkt
PmRvdWJsZVZhbHVlKCksIFBlcmNlbnQpOwogICAgIGVsc2UKLSAgICAgICAgYm94LnJpZ2h0KCkg
PSBMZW5ndGgoc2xpY2VzLT5yaWdodCgpLT5nZXRJbnRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX05VTUJFUiksIEZpeGVkKTsKKyAgICAgICAgYm94LnJpZ2h0KCkgPSBMZW5ndGgoc2xpY2Vz
LT5yaWdodCgpLT5pbnRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUiksIEZpeGVk
KTsKICAgICBpbWFnZS5zZXRJbWFnZVNsaWNlcyhib3gpOwogCiAgICAgLy8gU2V0IG91ciBmaWxs
IG1vZGUuCkBAIC02NDIsMzMgKzY0MiwzMyBAQCBMZW5ndGhCb3ggQ1NTVG9TdHlsZU1hcDo6bWFw
TmluZVBpZWNlSW1hZ2VRdWFkKENTU1ZhbHVlJiB2YWx1ZSkKIAogICAgIC8vIFNldCB1cCBhIGxl
bmd0aCBib3ggdG8gcmVwcmVzZW50IG91ciBpbWFnZSBzbGljZXMuCiAgICAgTGVuZ3RoQm94IGJv
eDsgLy8gRGVmYXVsdHMgdG8gJ2F1dG8nIHNvIHdlIGRvbid0IGhhdmUgdG8gaGFuZGxlIHRoYXQg
ZXhwbGljaXRseSBiZWxvdy4KLSAgICBRdWFkKiBzbGljZXMgPSBib3JkZXJXaWR0aHMuZ2V0UXVh
ZFZhbHVlKCk7CisgICAgUXVhZCogc2xpY2VzID0gYm9yZGVyV2lkdGhzLnF1YWRWYWx1ZSgpOwog
ICAgIGlmIChzbGljZXMtPnRvcCgpLT5pc051bWJlcigpKQotICAgICAgICBib3gudG9wKCkgPSBM
ZW5ndGgoc2xpY2VzLT50b3AoKS0+Z2V0SW50VmFsdWUoKSwgUmVsYXRpdmUpOworICAgICAgICBi
b3gudG9wKCkgPSBMZW5ndGgoc2xpY2VzLT50b3AoKS0+aW50VmFsdWUoKSwgUmVsYXRpdmUpOwog
ICAgIGVsc2UgaWYgKHNsaWNlcy0+dG9wKCktPmlzUGVyY2VudGFnZSgpKQotICAgICAgICBib3gu
dG9wKCkgPSBMZW5ndGgoc2xpY2VzLT50b3AoKS0+Z2V0RG91YmxlVmFsdWUoQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19QRVJDRU5UQUdFKSwgUGVyY2VudCk7Ci0gICAgZWxzZSBpZiAoc2xpY2VzLT50
b3AoKS0+Z2V0VmFsdWVJRCgpICE9IENTU1ZhbHVlQXV0bykKKyAgICAgICAgYm94LnRvcCgpID0g
TGVuZ3RoKHNsaWNlcy0+dG9wKCktPmRvdWJsZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
UEVSQ0VOVEFHRSksIFBlcmNlbnQpOworICAgIGVsc2UgaWYgKHNsaWNlcy0+dG9wKCktPnZhbHVl
SUQoKSAhPSBDU1NWYWx1ZUF1dG8pCiAgICAgICAgIGJveC50b3AoKSA9IHNsaWNlcy0+dG9wKCkt
PmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihjb252ZXJzaW9uRGF0YSk7CiAKICAgICBpZiAoc2xpY2Vz
LT5yaWdodCgpLT5pc051bWJlcigpKQotICAgICAgICBib3gucmlnaHQoKSA9IExlbmd0aChzbGlj
ZXMtPnJpZ2h0KCktPmdldEludFZhbHVlKCksIFJlbGF0aXZlKTsKKyAgICAgICAgYm94LnJpZ2h0
KCkgPSBMZW5ndGgoc2xpY2VzLT5yaWdodCgpLT5pbnRWYWx1ZSgpLCBSZWxhdGl2ZSk7CiAgICAg
ZWxzZSBpZiAoc2xpY2VzLT5yaWdodCgpLT5pc1BlcmNlbnRhZ2UoKSkKLSAgICAgICAgYm94LnJp
Z2h0KCkgPSBMZW5ndGgoc2xpY2VzLT5yaWdodCgpLT5nZXREb3VibGVWYWx1ZShDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpLCBQZXJjZW50KTsKLSAgICBlbHNlIGlmIChzbGljZXMt
PnJpZ2h0KCktPmdldFZhbHVlSUQoKSAhPSBDU1NWYWx1ZUF1dG8pCisgICAgICAgIGJveC5yaWdo
dCgpID0gTGVuZ3RoKHNsaWNlcy0+cmlnaHQoKS0+ZG91YmxlVmFsdWUoQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19QRVJDRU5UQUdFKSwgUGVyY2VudCk7CisgICAgZWxzZSBpZiAoc2xpY2VzLT5yaWdo
dCgpLT52YWx1ZUlEKCkgIT0gQ1NTVmFsdWVBdXRvKQogICAgICAgICBib3gucmlnaHQoKSA9IHNs
aWNlcy0+cmlnaHQoKS0+Y29tcHV0ZUxlbmd0aDxMZW5ndGg+KGNvbnZlcnNpb25EYXRhKTsKIAog
ICAgIGlmIChzbGljZXMtPmJvdHRvbSgpLT5pc051bWJlcigpKQotICAgICAgICBib3guYm90dG9t
KCkgPSBMZW5ndGgoc2xpY2VzLT5ib3R0b20oKS0+Z2V0SW50VmFsdWUoKSwgUmVsYXRpdmUpOwor
ICAgICAgICBib3guYm90dG9tKCkgPSBMZW5ndGgoc2xpY2VzLT5ib3R0b20oKS0+aW50VmFsdWUo
KSwgUmVsYXRpdmUpOwogICAgIGVsc2UgaWYgKHNsaWNlcy0+Ym90dG9tKCktPmlzUGVyY2VudGFn
ZSgpKQotICAgICAgICBib3guYm90dG9tKCkgPSBMZW5ndGgoc2xpY2VzLT5ib3R0b20oKS0+Z2V0
RG91YmxlVmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKSwgUGVyY2VudCk7
Ci0gICAgZWxzZSBpZiAoc2xpY2VzLT5ib3R0b20oKS0+Z2V0VmFsdWVJRCgpICE9IENTU1ZhbHVl
QXV0bykKKyAgICAgICAgYm94LmJvdHRvbSgpID0gTGVuZ3RoKHNsaWNlcy0+Ym90dG9tKCktPmRv
dWJsZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSksIFBlcmNlbnQpOwor
ICAgIGVsc2UgaWYgKHNsaWNlcy0+Ym90dG9tKCktPnZhbHVlSUQoKSAhPSBDU1NWYWx1ZUF1dG8p
CiAgICAgICAgIGJveC5ib3R0b20oKSA9IHNsaWNlcy0+Ym90dG9tKCktPmNvbXB1dGVMZW5ndGg8
TGVuZ3RoPihjb252ZXJzaW9uRGF0YSk7CiAKICAgICBpZiAoc2xpY2VzLT5sZWZ0KCktPmlzTnVt
YmVyKCkpCi0gICAgICAgIGJveC5sZWZ0KCkgPSBMZW5ndGgoc2xpY2VzLT5sZWZ0KCktPmdldElu
dFZhbHVlKCksIFJlbGF0aXZlKTsKKyAgICAgICAgYm94LmxlZnQoKSA9IExlbmd0aChzbGljZXMt
PmxlZnQoKS0+aW50VmFsdWUoKSwgUmVsYXRpdmUpOwogICAgIGVsc2UgaWYgKHNsaWNlcy0+bGVm
dCgpLT5pc1BlcmNlbnRhZ2UoKSkKLSAgICAgICAgYm94LmxlZnQoKSA9IExlbmd0aChzbGljZXMt
PmxlZnQoKS0+Z2V0RG91YmxlVmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdF
KSwgUGVyY2VudCk7Ci0gICAgZWxzZSBpZiAoc2xpY2VzLT5sZWZ0KCktPmdldFZhbHVlSUQoKSAh
PSBDU1NWYWx1ZUF1dG8pCisgICAgICAgIGJveC5sZWZ0KCkgPSBMZW5ndGgoc2xpY2VzLT5sZWZ0
KCktPmRvdWJsZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSksIFBlcmNl
bnQpOworICAgIGVsc2UgaWYgKHNsaWNlcy0+bGVmdCgpLT52YWx1ZUlEKCkgIT0gQ1NTVmFsdWVB
dXRvKQogICAgICAgICBib3gubGVmdCgpID0gc2xpY2VzLT5sZWZ0KCktPmNvbXB1dGVMZW5ndGg8
TGVuZ3RoPihjb252ZXJzaW9uRGF0YSk7CiAKICAgICByZXR1cm4gYm94OwpAQCAtNjgwLDEyICs2
ODAsMTIgQEAgdm9pZCBDU1NUb1N0eWxlTWFwOjptYXBOaW5lUGllY2VJbWFnZVJlcGVhdChDU1NW
YWx1ZSYgdmFsdWUsIE5pbmVQaWVjZUltYWdlJiBpbWEKICAgICAgICAgcmV0dXJuOwogCiAgICAg
Q1NTUHJpbWl0aXZlVmFsdWUmIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWU+KHZhbHVlKTsKLSAgICBQYWlyKiBwYWlyID0gcHJpbWl0aXZlVmFsdWUuZ2V0UGFpclZh
bHVlKCk7CisgICAgUGFpciogcGFpciA9IHByaW1pdGl2ZVZhbHVlLnBhaXJWYWx1ZSgpOwogICAg
IGlmICghcGFpciB8fCAhcGFpci0+Zmlyc3QoKSB8fCAhcGFpci0+c2Vjb25kKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIENTU1ZhbHVlSUQgZmlyc3RJZGVudGlmaWVyID0gcGFpci0+Zmlyc3Qo
KS0+Z2V0VmFsdWVJRCgpOwotICAgIENTU1ZhbHVlSUQgc2Vjb25kSWRlbnRpZmllciA9IHBhaXIt
PnNlY29uZCgpLT5nZXRWYWx1ZUlEKCk7CisgICAgQ1NTVmFsdWVJRCBmaXJzdElkZW50aWZpZXIg
PSBwYWlyLT5maXJzdCgpLT52YWx1ZUlEKCk7CisgICAgQ1NTVmFsdWVJRCBzZWNvbmRJZGVudGlm
aWVyID0gcGFpci0+c2Vjb25kKCktPnZhbHVlSUQoKTsKIAogICAgIEVOaW5lUGllY2VJbWFnZVJ1
bGUgaG9yaXpvbnRhbFJ1bGU7CiAgICAgc3dpdGNoIChmaXJzdElkZW50aWZpZXIpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1ZhbHVlLmgKaW5kZXggZjk5ZDM3M2M5NTExNjllMTVkYWRiZTc3Y2JkMGZlNTZjM2Q4ZDFh
Zi4uZWZkOTg4MTliMTI3NGExOGY1YjdiZmE4MDkyNTFlYTNkNzJjZjJjZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1ZhbHVlLmgKQEAgLTIwLDcgKzIwLDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJF
eGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNsdWRlICJVUkxI
YXNoLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hT
ZXQuaD4KQEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgU3Ry
aW5nIGNzc1RleHQoKSBjb25zdDsKIAotICAgIHZvaWQgc2V0Q3NzVGV4dChjb25zdCBTdHJpbmcm
LCBFeGNlcHRpb25Db2RlJikgeyB9IC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuCisgICAgRXhj
ZXB0aW9uT3I8dm9pZD4gc2V0Q3NzVGV4dChjb25zdCBTdHJpbmcmKSB7IHJldHVybiB7IH07IH0g
Ly8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KIAogICAgIGJvb2wgaXNQcmltaXRpdmVWYWx1ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBlID09IFByaW1pdGl2ZUNsYXNzOyB9CiAgICAgYm9v
bCBpc1ZhbHVlTGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NUeXBlID49IFZhbHVlTGlzdENs
YXNzOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaWRsIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmlkbAppbmRleCA2MDliZmMwYzY2NTQ3MGQ5YTg1ZjBi
YTliNjlhYmM4MTYzYWMwY2MwLi44Y2YxNjU0ODJlMmZjOTdkMTNhMjg1NDFkOGIzYTAxMmUxNDgx
Y2M5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaWRsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5pZGwKQEAgLTE5LDggKzE5LDggQEAKICAqLwogCiBb
Ci0gICAgQ3VzdG9tVG9KU09iamVjdCwKICAgICBDdXN0b21Jc1JlYWNoYWJsZSwKKyAgICBDdXN0
b21Ub0pTT2JqZWN0LAogICAgIEV4cG9ydFRvV3JhcHBlZEZ1bmN0aW9uLAogICAgIEltcGxlbWVu
dGF0aW9uTGFja3NWVGFibGUsCiAgICAgSlNDdXN0b21GaW5hbGl6ZSwKQEAgLTMxLDcgKzMxLDcg
QEAKICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBDU1NfVkFMVUVfTElTVCA9IDI7CiAgICAgY29u
c3QgdW5zaWduZWQgc2hvcnQgQ1NTX0NVU1RPTSA9IDM7CiAKLSAgICBbU2V0dGVyTWF5VGhyb3dM
ZWdhY3lFeGNlcHRpb25dIGF0dHJpYnV0ZSBET01TdHJpbmc/IGNzc1RleHQ7CisgICAgW1NldHRl
ck1heVRocm93RXhjZXB0aW9uXSBhdHRyaWJ1dGUgRE9NU3RyaW5nPyBjc3NUZXh0OwogCiAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIHNob3J0IGNzc1ZhbHVlVHlwZTsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ291bnRlci5oIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NvdW50ZXIuaAppbmRleCAxYjIxMGJlZGU2ZTVjZjJmZmYxNzY4YTVjYWJkNzE2NzdhNjJmY2M4
Li43MTQ2YTcyYmQ0ZjE0ZTYyN2Q1ZTAzZDBhNjI0Y2IxMDBlZmJjMzc3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ291bnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Db3Vu
dGVyLmgKQEAgLTMyLDExICszMiwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IENvdW50ZXIoV1RGTW92ZShpZGVudGlmaWVyKSwgV1RGTW92ZShsaXN0U3R5bGUpLCBX
VEZNb3ZlKHNlcGFyYXRvcikpKTsKICAgICB9CiAKLSAgICBTdHJpbmcgaWRlbnRpZmllcigpIGNv
bnN0IHsgcmV0dXJuIG1faWRlbnRpZmllci0+Z2V0U3RyaW5nVmFsdWUoKTsgfQotICAgIFN0cmlu
ZyBsaXN0U3R5bGUoKSBjb25zdCB7IHJldHVybiBtX2xpc3RTdHlsZS0+Z2V0U3RyaW5nVmFsdWUo
KTsgfQotICAgIFN0cmluZyBzZXBhcmF0b3IoKSBjb25zdCB7IHJldHVybiBtX3NlcGFyYXRvci0+
Z2V0U3RyaW5nVmFsdWUoKTsgfQorICAgIFN0cmluZyBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1
cm4gbV9pZGVudGlmaWVyLT5zdHJpbmdWYWx1ZSgpOyB9CisgICAgU3RyaW5nIGxpc3RTdHlsZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbGlzdFN0eWxlLT5zdHJpbmdWYWx1ZSgpOyB9CisgICAgU3RyaW5n
IHNlcGFyYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fc2VwYXJhdG9yLT5zdHJpbmdWYWx1ZSgpOyB9
CiAKLSAgICBDU1NWYWx1ZUlEIGxpc3RTdHlsZUlkZW50KCkgY29uc3QgeyByZXR1cm4gbV9saXN0
U3R5bGUtPmdldFZhbHVlSUQoKTsgfQorICAgIENTU1ZhbHVlSUQgbGlzdFN0eWxlSWRlbnQoKSBj
b25zdCB7IHJldHVybiBtX2xpc3RTdHlsZS0+dmFsdWVJRCgpOyB9CiAKICAgICB2b2lkIHNldElk
ZW50aWZpZXIoUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiYmIGlkZW50aWZpZXIpIHsgbV9pZGVudGlm
aWVyID0gV1RGTW92ZShpZGVudGlmaWVyKTsgfQogICAgIHZvaWQgc2V0TGlzdFN0eWxlKFJlZjxD
U1NQcmltaXRpdmVWYWx1ZT4mJiBsaXN0U3R5bGUpIHsgbV9saXN0U3R5bGUgPSBXVEZNb3ZlKGxp
c3RTdHlsZSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwCmluZGV4IGRmMjA3MDI3NWQ2MDJmZTdj
YmJlOWU1Y2Y0M2FkMDg0MjMwOGExZTcuLmY5MTYzOWE4ZmQ4ZGNhZDhkNWMwY2NjMjJlM2Y5MWVj
OTIzZmNjYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcApAQCAtNDUsMjMgKzQ1LDIwIEBAIHN0
YXRpYyBib29sIHBvcHVsYXRlRm9udEZhY2VXaXRoQXJyYXlCdWZmZXIoQ1NTRm9udEZhY2UmIGZv
bnRGYWNlLCBSZWY8SlNDOjpBcnJhCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1SZWZQdHI8Rm9u
dEZhY2U+IEZvbnRGYWNlOjpjcmVhdGUoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBEb2N1bWVudCYg
ZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgZmFtaWx5LCBKU0M6OkpTVmFsdWUgc291cmNlLCBjb25z
dCBEZXNjcmlwdG9ycyYgZGVzY3JpcHRvcnMsIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9u
T3I8UmVmPEZvbnRGYWNlPj4gRm9udEZhY2U6OmNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUs
IERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBmYW1pbHksIEpTQzo6SlNWYWx1ZSBz
b3VyY2UsIGNvbnN0IERlc2NyaXB0b3JzJiBkZXNjcmlwdG9ycykKIHsKICAgICBhdXRvIHJlc3Vs
dCA9IGFkb3B0UmVmKCpuZXcgRm9udEZhY2UoZG9jdW1lbnQuZm9udFNlbGVjdG9yKCkpKTsKIAog
ICAgIGJvb2wgZGF0YVJlcXVpcmVzQXN5bmNocm9ub3VzTG9hZGluZyA9IHRydWU7CiAKLSAgICBl
YyA9IDA7Ci0gICAgcmVzdWx0LT5zZXRGYW1pbHkoZmFtaWx5LCBlYyk7Ci0gICAgaWYgKGVjKQot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBhdXRvIHNldEZhbWlseVJlc3VsdCA9IHJlc3Vs
dC0+c2V0RmFtaWx5KGZhbWlseSk7CisgICAgaWYgKHNldEZhbWlseVJlc3VsdC5oYXNFeGNlcHRp
b24oKSkKKyAgICAgICAgcmV0dXJuIHNldEZhbWlseVJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7
CiAKICAgICBpZiAoc291cmNlLmlzU3RyaW5nKCkpIHsKICAgICAgICAgYXV0byB2YWx1ZSA9IEZv
bnRGYWNlOjpwYXJzZVN0cmluZyhzb3VyY2UuZ2V0U3RyaW5nKCZzdGF0ZSksIENTU1Byb3BlcnR5
U3JjKTsKLSAgICAgICAgaWYgKCFpczxDU1NWYWx1ZUxpc3Q+KHZhbHVlLmdldCgpKSkgewotICAg
ICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgICAgIH0KKyAgICAgICAgaWYgKCFpczxDU1NWYWx1ZUxpc3Q+KHZhbHVlLmdldCgpKSkKKyAg
ICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTWU5UQVhfRVJSIH07CiAgICAgICAgIENTU0Zv
bnRGYWNlOjphcHBlbmRTb3VyY2VzKHJlc3VsdC0+YmFja2luZygpLCBkb3duY2FzdDxDU1NWYWx1
ZUxpc3Q+KCp2YWx1ZSksICZkb2N1bWVudCwgZmFsc2UpOwogICAgIH0gZWxzZSBpZiAoYXV0byBh
cnJheUJ1ZmZlclZpZXcgPSB0b0FycmF5QnVmZmVyVmlldyhzb3VyY2UpKQogICAgICAgICBkYXRh
UmVxdWlyZXNBc3luY2hyb25vdXNMb2FkaW5nID0gcG9wdWxhdGVGb250RmFjZVdpdGhBcnJheUJ1
ZmZlcihyZXN1bHQtPmJhY2tpbmcoKSwgYXJyYXlCdWZmZXJWaWV3LnJlbGVhc2VOb25OdWxsKCkp
OwpAQCAtNzEsMjQgKzY4LDI0IEBAIFJlZlB0cjxGb250RmFjZT4gRm9udEZhY2U6OmNyZWF0ZShK
U0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIERvY3VtZW50JiBkb2N1bWVudCwgY29uCiAgICAgfQogCiAg
ICAgLy8gVGhlc2UgdGVybmFyaWVzIG1hdGNoIHRoZSBkZWZhdWx0IHN0cmluZ3MgaW5zaWRlIHRo
ZSBGb250RmFjZURlc2NyaXB0b3JzIGRpY3Rpb25hcnkgaW5zaWRlIEZvbnRGYWNlLmlkbC4KLSAg
ICByZXN1bHQtPnNldFN0eWxlKGRlc2NyaXB0b3JzLnN0eWxlLmlzRW1wdHkoKSA/IEFTQ0lJTGl0
ZXJhbCgibm9ybWFsIikgOiBkZXNjcmlwdG9ycy5zdHlsZSwgZWMpOwotICAgIGlmIChlYykKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmVzdWx0LT5zZXRXZWlnaHQoZGVzY3JpcHRvcnMu
d2VpZ2h0LmlzRW1wdHkoKSA/IEFTQ0lJTGl0ZXJhbCgibm9ybWFsIikgOiBkZXNjcmlwdG9ycy53
ZWlnaHQsIGVjKTsKLSAgICBpZiAoZWMpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJl
c3VsdC0+c2V0U3RyZXRjaChkZXNjcmlwdG9ycy5zdHJldGNoLmlzRW1wdHkoKSA/IEFTQ0lJTGl0
ZXJhbCgibm9ybWFsIikgOiBkZXNjcmlwdG9ycy5zdHJldGNoLCBlYyk7Ci0gICAgaWYgKGVjKQot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXN1bHQtPnNldFVuaWNvZGVSYW5nZShkZXNj
cmlwdG9ycy51bmljb2RlUmFuZ2UuaXNFbXB0eSgpID8gQVNDSUlMaXRlcmFsKCJVKzAtMTBGRkZG
IikgOiBkZXNjcmlwdG9ycy51bmljb2RlUmFuZ2UsIGVjKTsKLSAgICBpZiAoZWMpCi0gICAgICAg
IHJldHVybiBudWxscHRyOwotICAgIHJlc3VsdC0+c2V0VmFyaWFudChkZXNjcmlwdG9ycy52YXJp
YW50LmlzRW1wdHkoKSA/IEFTQ0lJTGl0ZXJhbCgibm9ybWFsIikgOiBkZXNjcmlwdG9ycy52YXJp
YW50LCBlYyk7Ci0gICAgaWYgKGVjKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXN1
bHQtPnNldEZlYXR1cmVTZXR0aW5ncyhkZXNjcmlwdG9ycy5mZWF0dXJlU2V0dGluZ3MuaXNFbXB0
eSgpID8gQVNDSUlMaXRlcmFsKCJub3JtYWwiKSA6IGRlc2NyaXB0b3JzLmZlYXR1cmVTZXR0aW5n
cywgZWMpOwotICAgIGlmIChlYykKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgYXV0byBz
ZXRTdHlsZVJlc3VsdCA9IHJlc3VsdC0+c2V0U3R5bGUoZGVzY3JpcHRvcnMuc3R5bGUuaXNFbXB0
eSgpID8gQVNDSUlMaXRlcmFsKCJub3JtYWwiKSA6IGRlc2NyaXB0b3JzLnN0eWxlKTsKKyAgICBp
ZiAoc2V0U3R5bGVSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBzZXRTdHls
ZVJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CisgICAgYXV0byBzZXRXZWlnaHRSZXN1bHQgPSBy
ZXN1bHQtPnNldFdlaWdodChkZXNjcmlwdG9ycy53ZWlnaHQuaXNFbXB0eSgpID8gQVNDSUlMaXRl
cmFsKCJub3JtYWwiKSA6IGRlc2NyaXB0b3JzLndlaWdodCk7CisgICAgaWYgKHNldFdlaWdodFJl
c3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIHNldFdlaWdodFJlc3VsdC5yZWxl
YXNlRXhjZXB0aW9uKCk7CisgICAgYXV0byBzZXRTdHJldGNoUmVzdWx0ID0gcmVzdWx0LT5zZXRT
dHJldGNoKGRlc2NyaXB0b3JzLnN0cmV0Y2guaXNFbXB0eSgpID8gQVNDSUlMaXRlcmFsKCJub3Jt
YWwiKSA6IGRlc2NyaXB0b3JzLnN0cmV0Y2gpOworICAgIGlmIChzZXRTdHJldGNoUmVzdWx0Lmhh
c0V4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gc2V0U3RyZXRjaFJlc3VsdC5yZWxlYXNlRXhj
ZXB0aW9uKCk7CisgICAgYXV0byBzZXRVbmljb2RlUmFuZ2VSZXN1bHQgPSByZXN1bHQtPnNldFVu
aWNvZGVSYW5nZShkZXNjcmlwdG9ycy51bmljb2RlUmFuZ2UuaXNFbXB0eSgpID8gQVNDSUlMaXRl
cmFsKCJVKzAtMTBGRkZGIikgOiBkZXNjcmlwdG9ycy51bmljb2RlUmFuZ2UpOworICAgIGlmIChz
ZXRVbmljb2RlUmFuZ2VSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBzZXRV
bmljb2RlUmFuZ2VSZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOworICAgIGF1dG8gc2V0VmFyaWFu
dFJlc3VsdCA9IHJlc3VsdC0+c2V0VmFyaWFudChkZXNjcmlwdG9ycy52YXJpYW50LmlzRW1wdHko
KSA/IEFTQ0lJTGl0ZXJhbCgibm9ybWFsIikgOiBkZXNjcmlwdG9ycy52YXJpYW50KTsKKyAgICBp
ZiAoc2V0VmFyaWFudFJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIHNldFZh
cmlhbnRSZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOworICAgIGF1dG8gc2V0RmVhdHVyZVNldHRp
bmdzUmVzdWx0ID0gcmVzdWx0LT5zZXRGZWF0dXJlU2V0dGluZ3MoZGVzY3JpcHRvcnMuZmVhdHVy
ZVNldHRpbmdzLmlzRW1wdHkoKSA/IEFTQ0lJTGl0ZXJhbCgibm9ybWFsIikgOiBkZXNjcmlwdG9y
cy5mZWF0dXJlU2V0dGluZ3MpOworICAgIGlmIChzZXRGZWF0dXJlU2V0dGluZ3NSZXN1bHQuaGFz
RXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBzZXRGZWF0dXJlU2V0dGluZ3NSZXN1bHQucmVs
ZWFzZUV4Y2VwdGlvbigpOwogCiAgICAgaWYgKCFkYXRhUmVxdWlyZXNBc3luY2hyb25vdXNMb2Fk
aW5nKSB7CiAgICAgICAgIHJlc3VsdC0+YmFja2luZygpLmxvYWQoKTsKQEAgLTEzNSw4MCArMTMy
LDczIEBAIFJlZlB0cjxDU1NWYWx1ZT4gRm9udEZhY2U6OnBhcnNlU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgc3RyaW5nLCBDU1NQcm9wZXJ0eUlEIHByb3BlCiAgICAgcmV0dXJuIHN0eWxlLT5nZXRQcm9w
ZXJ0eUNTU1ZhbHVlKHByb3BlcnR5SUQpOwogfQogCi12b2lkIEZvbnRGYWNlOjpzZXRGYW1pbHko
Y29uc3QgU3RyaW5nJiBmYW1pbHksIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8dm9p
ZD4gRm9udEZhY2U6OnNldEZhbWlseShjb25zdCBTdHJpbmcmIGZhbWlseSkKIHsKLSAgICBpZiAo
ZmFtaWx5LmlzRW1wdHkoKSkgewotICAgICAgICBlYyA9IFNZTlRBWF9FUlI7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9CisgICAgaWYgKGZhbWlseS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBTWU5UQVhfRVJSIH07CiAKICAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKICAg
ICBpZiAoYXV0byB2YWx1ZSA9IHBhcnNlU3RyaW5nKGZhbWlseSwgQ1NTUHJvcGVydHlGb250RmFt
aWx5KSkKICAgICAgICAgc3VjY2VzcyA9IG1fYmFja2luZy0+c2V0RmFtaWxpZXMoKnZhbHVlKTsK
ICAgICBpZiAoIXN1Y2Nlc3MpCi0gICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IFNZTlRBWF9FUlIgfTsKKyAgICByZXR1cm4geyB9OwogfQogCi12b2lk
IEZvbnRGYWNlOjpzZXRTdHlsZShjb25zdCBTdHJpbmcmIHN0eWxlLCBFeGNlcHRpb25Db2RlJiBl
YykKK0V4Y2VwdGlvbk9yPHZvaWQ+IEZvbnRGYWNlOjpzZXRTdHlsZShjb25zdCBTdHJpbmcmIHN0
eWxlKQogewotICAgIGlmIChzdHlsZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgZWMgPSBTWU5UQVhf
RVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmIChzdHlsZS5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTWU5UQVhfRVJSIH07CiAKICAgICBib29sIHN1Y2Nl
c3MgPSBmYWxzZTsKICAgICBpZiAoYXV0byB2YWx1ZSA9IHBhcnNlU3RyaW5nKHN0eWxlLCBDU1NQ
cm9wZXJ0eUZvbnRTdHlsZSkpCiAgICAgICAgIHN1Y2Nlc3MgPSBtX2JhY2tpbmctPnNldFN0eWxl
KCp2YWx1ZSk7CiAgICAgaWYgKCFzdWNjZXNzKQotICAgICAgICBlYyA9IFNZTlRBWF9FUlI7Cisg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTWU5UQVhfRVJSIH07CisgICAgcmV0dXJuIHsgfTsK
IH0KIAotdm9pZCBGb250RmFjZTo6c2V0V2VpZ2h0KGNvbnN0IFN0cmluZyYgd2VpZ2h0LCBFeGNl
cHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPHZvaWQ+IEZvbnRGYWNlOjpzZXRXZWlnaHQoY29u
c3QgU3RyaW5nJiB3ZWlnaHQpCiB7Ci0gICAgaWYgKHdlaWdodC5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgZWMgPSBTWU5UQVhfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmICh3ZWln
aHQuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU1lOVEFYX0VSUiB9Owog
CiAgICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7CiAgICAgaWYgKGF1dG8gdmFsdWUgPSBwYXJzZVN0
cmluZyh3ZWlnaHQsIENTU1Byb3BlcnR5Rm9udFdlaWdodCkpCiAgICAgICAgIHN1Y2Nlc3MgPSBt
X2JhY2tpbmctPnNldFdlaWdodCgqdmFsdWUpOwogICAgIGlmICghc3VjY2VzcykKLSAgICAgICAg
ZWMgPSBTWU5UQVhfRVJSOworICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU1lOVEFYX0VSUiB9
OworICAgIHJldHVybiB7IH07CiB9CiAKLXZvaWQgRm9udEZhY2U6OnNldFN0cmV0Y2goY29uc3Qg
U3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpCitFeGNlcHRpb25Pcjx2b2lkPiBGb250RmFjZTo6c2V0
U3RyZXRjaChjb25zdCBTdHJpbmcmKQogewogICAgIC8vIFdlIGRvbid0IHN1cHBvcnQgZm9udC1z
dHJldGNoLiBTd2FsbG93IHRoZSBjYWxsLgorICAgIHJldHVybiB7IH07CiB9CiAKLXZvaWQgRm9u
dEZhY2U6OnNldFVuaWNvZGVSYW5nZShjb25zdCBTdHJpbmcmIHVuaWNvZGVSYW5nZSwgRXhjZXB0
aW9uQ29kZSYgZWMpCitFeGNlcHRpb25Pcjx2b2lkPiBGb250RmFjZTo6c2V0VW5pY29kZVJhbmdl
KGNvbnN0IFN0cmluZyYgdW5pY29kZVJhbmdlKQogewotICAgIGlmICh1bmljb2RlUmFuZ2UuaXNF
bXB0eSgpKSB7Ci0gICAgICAgIGVjID0gU1lOVEFYX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KKyAgICBpZiAodW5pY29kZVJhbmdlLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IFNZTlRBWF9FUlIgfTsKIAogICAgIGJvb2wgc3VjY2VzcyA9IGZhbHNlOwogICAgIGlm
IChhdXRvIHZhbHVlID0gcGFyc2VTdHJpbmcodW5pY29kZVJhbmdlLCBDU1NQcm9wZXJ0eVVuaWNv
ZGVSYW5nZSkpCiAgICAgICAgIHN1Y2Nlc3MgPSBtX2JhY2tpbmctPnNldFVuaWNvZGVSYW5nZSgq
dmFsdWUpOwogICAgIGlmICghc3VjY2VzcykKLSAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU1lOVEFYX0VSUiB9OworICAgIHJldHVybiB7IH07CiB9
CiAKLXZvaWQgRm9udEZhY2U6OnNldFZhcmlhbnQoY29uc3QgU3RyaW5nJiB2YXJpYW50LCBFeGNl
cHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPHZvaWQ+IEZvbnRGYWNlOjpzZXRWYXJpYW50KGNv
bnN0IFN0cmluZyYgdmFyaWFudCkKIHsKLSAgICBpZiAodmFyaWFudC5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgZWMgPSBTWU5UQVhfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmICh2
YXJpYW50LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNZTlRBWF9FUlIg
fTsKIAogICAgIGF1dG8gc3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsK
ICAgICBhdXRvIHJlc3VsdCA9IENTU1BhcnNlcjo6cGFyc2VWYWx1ZShzdHlsZSwgQ1NTUHJvcGVy
dHlGb250VmFyaWFudCwgdmFyaWFudCwgdHJ1ZSwgSFRNTFN0YW5kYXJkTW9kZSwgbnVsbHB0cik7
Ci0gICAgaWYgKHJlc3VsdCA9PSBDU1NQYXJzZXI6OlBhcnNlUmVzdWx0OjpFcnJvcikgewotICAg
ICAgICBlYyA9IFNZTlRBWF9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKHJl
c3VsdCA9PSBDU1NQYXJzZXI6OlBhcnNlUmVzdWx0OjpFcnJvcikKKyAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IFNZTlRBWF9FUlIgfTsKIAogICAgIC8vIEZJWE1FOiBXb3VsZCBiZSBtdWNoIGJl
dHRlciB0byBzdGFnZSB0aGUgbmV3IHNldHRpbmdzIGFuZCBzZXQgdGhlbSBhbGwgYXQgb25jZQog
ICAgIC8vIGluc3RlYWQgb2YgdGhpcyBkYW5jZSB3aGVyZSB3ZSBtYWtlIGEgYmFja3VwIGFuZCBy
ZXZlcnQgdG8gaXQgaWYgc29tZXRoaW5nIGZhaWxzLgpAQCAtMjQ5LDIzICsyMzksMjIgQEAgdm9p
ZCBGb250RmFjZTo6c2V0VmFyaWFudChjb25zdCBTdHJpbmcmIHZhcmlhbnQsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogCiAgICAgaWYgKCFzdWNjZXNzKSB7CiAgICAgICAgIG1fYmFja2luZy0+c2V0VmFy
aWFudFNldHRpbmdzKGJhY2t1cCk7Ci0gICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IFNZTlRBWF9FUlIgfTsKICAgICB9CisKKyAgICByZXR1cm4geyB9
OwogfQogCi12b2lkIEZvbnRGYWNlOjpzZXRGZWF0dXJlU2V0dGluZ3MoY29uc3QgU3RyaW5nJiBm
ZWF0dXJlU2V0dGluZ3MsIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8dm9pZD4gRm9u
dEZhY2U6OnNldEZlYXR1cmVTZXR0aW5ncyhjb25zdCBTdHJpbmcmIGZlYXR1cmVTZXR0aW5ncykK
IHsKLSAgICBpZiAoZmVhdHVyZVNldHRpbmdzLmlzRW1wdHkoKSkgewotICAgICAgICBlYyA9IFNZ
TlRBWF9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKGZlYXR1cmVTZXR0aW5n
cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTWU5UQVhfRVJSIH07CiAK
ICAgICBhdXRvIHZhbHVlID0gcGFyc2VTdHJpbmcoZmVhdHVyZVNldHRpbmdzLCBDU1NQcm9wZXJ0
eUZvbnRGZWF0dXJlU2V0dGluZ3MpOwotICAgIGlmICghdmFsdWUpIHsKLSAgICAgICAgZWMgPSBT
WU5UQVhfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmICghdmFsdWUpCisgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBTWU5UQVhfRVJSIH07CiAgICAgbV9iYWNraW5nLT5zZXRG
ZWF0dXJlU2V0dGluZ3MoKnZhbHVlKTsKKyAgICByZXR1cm4geyB9OwogfQogCiBTdHJpbmcgRm9u
dEZhY2U6OmZhbWlseSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9u
dEZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5oCmluZGV4IGVkMzBkZGJmNTU5
MTA0ODMwYmUwYTY1YmRhOGZhMzYyMWU4ZDQ2YWEuLmZhOGYzMTNkY2VkOGZiNWRkMjhlMmMyOTQ4
NTE1ZTQ2ZDdlYWNlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5oCkBAIC00MiwxNyArNDIsMTcgQEAg
cHVibGljOgogICAgICAgICBTdHJpbmcgdmFyaWFudDsKICAgICAgICAgU3RyaW5nIGZlYXR1cmVT
ZXR0aW5nczsKICAgICB9OwotICAgIHN0YXRpYyBSZWZQdHI8Rm9udEZhY2U+IGNyZWF0ZShKU0M6
OkV4ZWNTdGF0ZSYsIERvY3VtZW50JiwgY29uc3QgU3RyaW5nJiBmYW1pbHksIEpTQzo6SlNWYWx1
ZSBzb3VyY2UsIGNvbnN0IERlc2NyaXB0b3JzJiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHN0YXRp
YyBFeGNlcHRpb25PcjxSZWY8Rm9udEZhY2U+PiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUmLCBEb2N1
bWVudCYsIGNvbnN0IFN0cmluZyYgZmFtaWx5LCBKU0M6OkpTVmFsdWUgc291cmNlLCBjb25zdCBE
ZXNjcmlwdG9ycyYpOwogICAgIHN0YXRpYyBSZWY8Rm9udEZhY2U+IGNyZWF0ZShDU1NGb250RmFj
ZSYpOwogICAgIHZpcnR1YWwgfkZvbnRGYWNlKCk7CiAKLSAgICB2b2lkIHNldEZhbWlseShjb25z
dCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCBzZXRTdHlsZShjb25zdCBTdHJp
bmcmLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCBzZXRXZWlnaHQoY29uc3QgU3RyaW5nJiwg
RXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgc2V0U3RyZXRjaChjb25zdCBTdHJpbmcmLCBFeGNl
cHRpb25Db2RlJik7Ci0gICAgdm9pZCBzZXRVbmljb2RlUmFuZ2UoY29uc3QgU3RyaW5nJiwgRXhj
ZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgc2V0VmFyaWFudChjb25zdCBTdHJpbmcmLCBFeGNlcHRp
b25Db2RlJik7Ci0gICAgdm9pZCBzZXRGZWF0dXJlU2V0dGluZ3MoY29uc3QgU3RyaW5nJiwgRXhj
ZXB0aW9uQ29kZSYpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldEZhbWlseShjb25zdCBTdHJp
bmcmKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRTdHlsZShjb25zdCBTdHJpbmcmKTsKKyAg
ICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRXZWlnaHQoY29uc3QgU3RyaW5nJik7CisgICAgRXhjZXB0
aW9uT3I8dm9pZD4gc2V0U3RyZXRjaChjb25zdCBTdHJpbmcmKTsKKyAgICBFeGNlcHRpb25Pcjx2
b2lkPiBzZXRVbmljb2RlUmFuZ2UoY29uc3QgU3RyaW5nJik7CisgICAgRXhjZXB0aW9uT3I8dm9p
ZD4gc2V0VmFyaWFudChjb25zdCBTdHJpbmcmKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRG
ZWF0dXJlU2V0dGluZ3MoY29uc3QgU3RyaW5nJik7CiAKICAgICBTdHJpbmcgZmFtaWx5KCkgY29u
c3Q7CiAgICAgU3RyaW5nIHN0eWxlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvRm9udEZhY2UuaWRsIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmlkbAppbmRl
eCA3N2ZhMTQ3MmRkNDI3MGVhYzMxZjY4MDZiNjYzYzc4YTc1Zjc0ZTFmLi41Njk1YjVkMTY3ODI2
ZmNiYjNlMzQzMTMwMDAwNzAzZDYwMGI1M2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvRm9udEZhY2UuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5pZGwKQEAg
LTQxLDE2ICs0MSwxNiBAQCBkaWN0aW9uYXJ5IEZvbnRGYWNlRGVzY3JpcHRvcnMgewogCiBbCiAg
ICAgQ29uc3RydWN0b3JDYWxsV2l0aD1Eb2N1bWVudCZTY3JpcHRTdGF0ZSwKLSAgICBDb25zdHJ1
Y3Rvck1heVRocm93TGVnYWN5RXhjZXB0aW9uLAorICAgIENvbnN0cnVjdG9yTWF5VGhyb3dFeGNl
cHRpb24sCiAgICAgQ29uc3RydWN0b3IoRE9NU3RyaW5nIGZhbWlseSwgYW55IHNvdXJjZSwgb3B0
aW9uYWwgRm9udEZhY2VEZXNjcmlwdG9ycyBkZXNjcmlwdG9ycykKIF0gaW50ZXJmYWNlIEZvbnRG
YWNlIHsKLSAgICBbU2V0dGVyTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIGF0dHJpYnV0ZSBET01T
dHJpbmcgZmFtaWx5OwotICAgIFtTZXR0ZXJNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gYXR0cmli
dXRlIERPTVN0cmluZyBzdHlsZTsKLSAgICBbU2V0dGVyTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25d
IGF0dHJpYnV0ZSBET01TdHJpbmcgd2VpZ2h0OwotICAgIFtTZXR0ZXJNYXlUaHJvd0xlZ2FjeUV4
Y2VwdGlvbl0gYXR0cmlidXRlIERPTVN0cmluZyBzdHJldGNoOwotICAgIFtTZXR0ZXJNYXlUaHJv
d0xlZ2FjeUV4Y2VwdGlvbl0gYXR0cmlidXRlIERPTVN0cmluZyB1bmljb2RlUmFuZ2U7Ci0gICAg
W1NldHRlck1heVRocm93TGVnYWN5RXhjZXB0aW9uXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHZhcmlh
bnQ7Ci0gICAgW1NldHRlck1heVRocm93TGVnYWN5RXhjZXB0aW9uXSBhdHRyaWJ1dGUgRE9NU3Ry
aW5nIGZlYXR1cmVTZXR0aW5nczsKKyAgICBbU2V0dGVyTWF5VGhyb3dFeGNlcHRpb25dIGF0dHJp
YnV0ZSBET01TdHJpbmcgZmFtaWx5OworICAgIFtTZXR0ZXJNYXlUaHJvd0V4Y2VwdGlvbl0gYXR0
cmlidXRlIERPTVN0cmluZyBzdHlsZTsKKyAgICBbU2V0dGVyTWF5VGhyb3dFeGNlcHRpb25dIGF0
dHJpYnV0ZSBET01TdHJpbmcgd2VpZ2h0OworICAgIFtTZXR0ZXJNYXlUaHJvd0V4Y2VwdGlvbl0g
YXR0cmlidXRlIERPTVN0cmluZyBzdHJldGNoOworICAgIFtTZXR0ZXJNYXlUaHJvd0V4Y2VwdGlv
bl0gYXR0cmlidXRlIERPTVN0cmluZyB1bmljb2RlUmFuZ2U7CisgICAgW1NldHRlck1heVRocm93
RXhjZXB0aW9uXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHZhcmlhbnQ7CisgICAgW1NldHRlck1heVRo
cm93RXhjZXB0aW9uXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGZlYXR1cmVTZXR0aW5nczsKIAogICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBGb250RmFjZUxvYWRTdGF0dXMgc3RhdHVzOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0ZvbnRGYWNlU2V0LmNwcAppbmRleCAwZDU1ZGQ3YmRkMmM1MjM0OTA4YTdkN2MxNmZhYjAx
MGY4OWJmNDFmLi4xMzljNDU1YzJiZTM2YTNlOTFmODhjODFlY2QyNmMyOGIyZmM0YmZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5jcHAKQEAgLTEyNSwxMiArMTI1LDEyIEBAIHZvaWQgRm9u
dEZhY2VTZXQ6OmNsZWFyKCkKIAogdm9pZCBGb250RmFjZVNldDo6bG9hZChjb25zdCBTdHJpbmcm
IGZvbnQsIGNvbnN0IFN0cmluZyYgdGV4dCwgTG9hZFByb21pc2UmJiBwcm9taXNlKQogewotICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGF1dG8gbWF0Y2hpbmdGYWNlcyA9IG1fYmFja2lu
Zy0+bWF0Y2hpbmdGYWNlcyhmb250LCB0ZXh0LCBlYyk7Ci0gICAgaWYgKGVjKSB7Ci0gICAgICAg
IHByb21pc2UucmVqZWN0KGVjKTsKKyAgICBhdXRvIG1hdGNoaW5nRmFjZXNSZXN1bHQgPSBtX2Jh
Y2tpbmctPm1hdGNoaW5nRmFjZXMoZm9udCwgdGV4dCk7CisgICAgaWYgKG1hdGNoaW5nRmFjZXNS
ZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QobWF0Y2hpbmdG
YWNlc1Jlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQor
ICAgIGF1dG8gbWF0Y2hpbmdGYWNlcyA9IG1hdGNoaW5nRmFjZXNSZXN1bHQucmVsZWFzZVJldHVy
blZhbHVlKCk7CiAKICAgICBpZiAobWF0Y2hpbmdGYWNlcy5pc0VtcHR5KCkpIHsKICAgICAgICAg
cHJvbWlzZS5yZXNvbHZlKFZlY3RvcjxSZWZQdHI8Rm9udEZhY2U+PigpKTsKQEAgLTE2Miw5ICsx
NjIsOSBAQCB2b2lkIEZvbnRGYWNlU2V0Ojpsb2FkKGNvbnN0IFN0cmluZyYgZm9udCwgY29uc3Qg
U3RyaW5nJiB0ZXh0LCBMb2FkUHJvbWlzZSYmIHBybwogICAgICAgICBwZW5kaW5nUHJvbWlzZS0+
cHJvbWlzZS5yZXNvbHZlKHBlbmRpbmdQcm9taXNlLT5mYWNlcyk7CiB9CiAKLWJvb2wgRm9udEZh
Y2VTZXQ6OmNoZWNrKGNvbnN0IFN0cmluZyYgZmFtaWx5LCBjb25zdCBTdHJpbmcmIHRleHQsIEV4
Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8Ym9vbD4gRm9udEZhY2VTZXQ6OmNoZWNrKGNv
bnN0IFN0cmluZyYgZmFtaWx5LCBjb25zdCBTdHJpbmcmIHRleHQpCiB7Ci0gICAgcmV0dXJuIG1f
YmFja2luZy0+Y2hlY2soZmFtaWx5LCB0ZXh0LCBlYyk7CisgICAgcmV0dXJuIG1fYmFja2luZy0+
Y2hlY2soZmFtaWx5LCB0ZXh0KTsKIH0KIAogdm9pZCBGb250RmFjZVNldDo6cmVnaXN0ZXJSZWFk
eShSZWFkeVByb21pc2UmJiBwcm9taXNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0ZvbnRGYWNlU2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuaAppbmRleCBh
YzI3NDgwNGVkOThiY2QyYTNkNGIxOGZiNTA0OGM1Nzc1NTQ1NjBhLi5lMWE3Mjc0NGRjZWRhZDA1
ZTRmMWFjODYwZWYxZWY4MTIyMDkwYTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Rm9udEZhY2VTZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuaApAQCAt
MjMsOCArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIEZvbnRGYWNlU2V0
X2gKLSNkZWZpbmUgRm9udEZhY2VTZXRfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBY3Rp
dmVET01PYmplY3QuaCIKICNpbmNsdWRlICJDU1NGb250RmFjZVNldC5oIgpAQCAtNDksNyArNDgs
NyBAQCBwdWJsaWM6CiAKICAgICB0eXBlZGVmIERPTVByb21pc2U8VmVjdG9yPFJlZlB0cjxGb250
RmFjZT4+PiBMb2FkUHJvbWlzZTsKICAgICB2b2lkIGxvYWQoY29uc3QgU3RyaW5nJiBmb250LCBj
b25zdCBTdHJpbmcmIHRleHQsIExvYWRQcm9taXNlJiYpOwotICAgIGJvb2wgY2hlY2soY29uc3Qg
U3RyaW5nJiBmb250LCBjb25zdCBTdHJpbmcmIHRleHQsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBF
eGNlcHRpb25Pcjxib29sPiBjaGVjayhjb25zdCBTdHJpbmcmIGZvbnQsIGNvbnN0IFN0cmluZyYg
dGV4dCk7CiAKICAgICBlbnVtIGNsYXNzIExvYWRTdGF0dXMgeyBMb2FkaW5nLCBMb2FkZWQgfTsK
ICAgICBMb2FkU3RhdHVzIHN0YXR1cygpIGNvbnN0OwpAQCAtMTE1LDUgKzExNCwzIEBAIHByaXZh
dGU6CiB9OwogCiB9Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0Zv
bnRGYWNlU2V0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5pZGwKaW5kZXgg
Yjc2YTFhMTliOGJhMmMxOWFhYjEwNTEwYmUyNjg0ZjVjZDMyODBlZC4uN2FiMWUzY2U1MjczZDU3
ZjBhZTJjNGQxMjUxMDRlZDk2MDc0ZmEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0ZvbnRGYWNlU2V0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuaWRs
CkBAIC00OCw3ICs0OCw3IEBAIGVudW0gRm9udEZhY2VTZXRMb2FkU3RhdHVzIHsKICAgICBhdHRy
aWJ1dGUgRXZlbnRIYW5kbGVyIG9ubG9hZGluZ2Vycm9yOwogCiAgICAgUHJvbWlzZSBsb2FkKERP
TVN0cmluZyBmb250LCBvcHRpb25hbCBET01TdHJpbmcgdGV4dCA9ICIgIik7Ci0gICAgW01heVRo
cm93TGVnYWN5RXhjZXB0aW9uXSBib29sZWFuIGNoZWNrKERPTVN0cmluZyBmb250LCBvcHRpb25h
bCBET01TdHJpbmcgdGV4dCA9ICIgIik7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBib29sZWFu
IGNoZWNrKERPTVN0cmluZyBmb250LCBvcHRpb25hbCBET01TdHJpbmcgdGV4dCA9ICIgIik7CiAK
ICAgICBbQ3VzdG9tR2V0dGVyLCBDYWNoZWRBdHRyaWJ1dGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBQ
cm9taXNlIHJlYWR5OwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBGb250RmFjZVNldExvYWRTdGF0
dXMgc3RhdHVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRWYXJpYW50QnVp
bGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udFZhcmlhbnRCdWlsZGVyLmNwcAppbmRl
eCA5MmZiNjZmNDQ0YWM1Nzk5ZmE2NDZiYzc5NDRhZDM3OTBhNGMzZTI1Li41NDY0OGFlMTEzODY0
MDc5Y2IxNjM3NzVlMmE0Yzk4MzRiNDU0Mzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvRm9udFZhcmlhbnRCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udFZh
cmlhbnRCdWlsZGVyLmNwcApAQCAtNDIsNyArNDIsNyBAQCBGb250VmFyaWFudExpZ2F0dXJlc1Zh
bHVlcyBleHRyYWN0Rm9udFZhcmlhbnRMaWdhdHVyZXMoY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQog
CiAgICAgaWYgKGlzPENTU1ZhbHVlTGlzdD4odmFsdWUpKSB7CiAgICAgICAgIGZvciAoYXV0byYg
aXRlbSA6IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4odmFsdWUpKSB7Ci0gICAgICAgICAgICBzd2l0
Y2ggKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihpdGVtLmdldCgpKS5nZXRWYWx1ZUlEKCkp
IHsKKyAgICAgICAgICAgIHN3aXRjaCAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGl0ZW0u
Z2V0KCkpLnZhbHVlSUQoKSkgewogICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZU5vQ29tbW9uTGln
YXR1cmVzOgogICAgICAgICAgICAgICAgIGNvbW1vbiA9IEZvbnRWYXJpYW50TGlnYXR1cmVzOjpO
bzsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTczLDcgKzczLDcgQEAgRm9udFZhcmlhbnRM
aWdhdHVyZXNWYWx1ZXMgZXh0cmFjdEZvbnRWYXJpYW50TGlnYXR1cmVzKGNvbnN0IENTU1ZhbHVl
JiB2YWx1ZSkKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoaXM8Q1NT
UHJpbWl0aXZlVmFsdWU+KHZhbHVlKSkgewotICAgICAgICBzd2l0Y2ggKGRvd25jYXN0PENTU1By
aW1pdGl2ZVZhbHVlPih2YWx1ZSkuZ2V0VmFsdWVJRCgpKSB7CisgICAgICAgIHN3aXRjaCAoZG93
bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS52YWx1ZUlEKCkpIHsKICAgICAgICAgY2Fz
ZSBDU1NWYWx1ZU5vcm1hbDoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU1Zh
bHVlTm9uZToKQEAgLTEwMSw3ICsxMDEsNyBAQCBGb250VmFyaWFudE51bWVyaWNWYWx1ZXMgZXh0
cmFjdEZvbnRWYXJpYW50TnVtZXJpYyhjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiAKICAgICBpZiAo
aXM8Q1NTVmFsdWVMaXN0Pih2YWx1ZSkpIHsKICAgICAgICAgZm9yIChhdXRvJiBpdGVtIDogZG93
bmNhc3Q8Q1NTVmFsdWVMaXN0Pih2YWx1ZSkpIHsKLSAgICAgICAgICAgIHN3aXRjaCAoZG93bmNh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGl0ZW0uZ2V0KCkpLmdldFZhbHVlSUQoKSkgeworICAgICAg
ICAgICAgc3dpdGNoIChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oaXRlbS5nZXQoKSkudmFs
dWVJRCgpKSB7CiAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlTGluaW5nTnVtczoKICAgICAgICAg
ICAgICAgICBmaWd1cmUgPSBGb250VmFyaWFudE51bWVyaWNGaWd1cmU6OkxpbmluZ051bWJlcnM7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xMzIsNyArMTMyLDcgQEAgRm9udFZhcmlhbnRO
dW1lcmljVmFsdWVzIGV4dHJhY3RGb250VmFyaWFudE51bWVyaWMoY29uc3QgQ1NTVmFsdWUmIHZh
bHVlKQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChpczxDU1NQcmlt
aXRpdmVWYWx1ZT4odmFsdWUpKQotICAgICAgICBBU1NFUlQoZG93bmNhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWU+KHZhbHVlKS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb3JtYWwpOworICAgICAgICBB
U1NFUlQoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS52YWx1ZUlEKCkgPT0gQ1NT
VmFsdWVOb3JtYWwpOwogCiAgICAgcmV0dXJuIEZvbnRWYXJpYW50TnVtZXJpY1ZhbHVlcyhmaWd1
cmUsIHNwYWNpbmcsIGZyYWN0aW9uLCBvcmRpbmFsLCBzbGFzaGVkWmVybyk7CiB9CkBAIC0xNDUs
NyArMTQ1LDcgQEAgRm9udFZhcmlhbnRFYXN0QXNpYW5WYWx1ZXMgZXh0cmFjdEZvbnRWYXJpYW50
RWFzdEFzaWFuKGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIAogICAgIGlmIChpczxDU1NWYWx1ZUxp
c3Q+KHZhbHVlKSkgewogICAgICAgICBmb3IgKGF1dG8mIGl0ZW0gOiBkb3duY2FzdDxDU1NWYWx1
ZUxpc3Q+KHZhbHVlKSkgewotICAgICAgICAgICAgc3dpdGNoIChkb3duY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZT4oaXRlbS5nZXQoKSkuZ2V0VmFsdWVJRCgpKSB7CisgICAgICAgICAgICBzd2l0Y2gg
KGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihpdGVtLmdldCgpKS52YWx1ZUlEKCkpIHsKICAg
ICAgICAgICAgIGNhc2UgQ1NTVmFsdWVKaXM3ODoKICAgICAgICAgICAgICAgICB2YXJpYW50ID0g
Rm9udFZhcmlhbnRFYXN0QXNpYW5WYXJpYW50OjpKaXM3ODsKICAgICAgICAgICAgICAgICBicmVh
azsKQEAgLTE3OSw3ICsxNzksNyBAQCBGb250VmFyaWFudEVhc3RBc2lhblZhbHVlcyBleHRyYWN0
Rm9udFZhcmlhbnRFYXN0QXNpYW4oY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogICAgICAgICAgICAg
fQogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUp
KQotICAgICAgICBBU1NFUlQoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS5nZXRW
YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb3JtYWwpOworICAgICAgICBBU1NFUlQoZG93bmNhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWU+KHZhbHVlKS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb3JtYWwpOwogCiAg
ICAgcmV0dXJuIEZvbnRWYXJpYW50RWFzdEFzaWFuVmFsdWVzKHZhcmlhbnQsIHdpZHRoLCBydWJ5
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5jcHAKaW5kZXggMjlkODI2OTFlMjNjMWExY2YwNTc4
ZTY2YmVjODNjMTg5MTMzYjE1ZC4uZTg1Mzg4NzEwZmY0NWFmMjM1ODM4Y2VkMWFhNjk3NGIzNjlk
NGFhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5jcHAKQEAgLTIyMiwxNSArMjIyLDE0IEBAIE1l
ZGlhTGlzdDo6fk1lZGlhTGlzdCgpCiB7CiB9CiAKLXZvaWQgTWVkaWFMaXN0OjpzZXRNZWRpYVRl
eHQoY29uc3QgU3RyaW5nJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRpb25Pcjx2
b2lkPiBNZWRpYUxpc3Q6OnNldE1lZGlhVGV4dChjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAg
IENTU1N0eWxlU2hlZXQ6OlJ1bGVNdXRhdGlvblNjb3BlIG11dGF0aW9uU2NvcGUobV9wYXJlbnRS
dWxlKTsKLSAgICBpZiAoIW1fbWVkaWFRdWVyaWVzLT5wYXJzZSh2YWx1ZSkpIHsKLSAgICAgICAg
ZWMgPSBTWU5UQVhfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmICghbV9tZWRp
YVF1ZXJpZXMtPnBhcnNlKHZhbHVlKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNZTlRB
WF9FUlIgfTsKICAgICBpZiAobV9wYXJlbnRTdHlsZVNoZWV0KQogICAgICAgICBtX3BhcmVudFN0
eWxlU2hlZXQtPmRpZE11dGF0ZSgpOworICAgIHJldHVybiB7IH07CiB9CiAKIFN0cmluZyBNZWRp
YUxpc3Q6Oml0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0CkBAIC0yNDEsMzEgKzI0MCwzMCBAQCBT
dHJpbmcgTWVkaWFMaXN0OjppdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAogICAgIHJldHVybiBT
dHJpbmcoKTsKIH0KIAotdm9pZCBNZWRpYUxpc3Q6OmRlbGV0ZU1lZGl1bShjb25zdCBTdHJpbmcm
IG1lZGl1bSwgRXhjZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRpb25Pcjx2b2lkPiBNZWRpYUxpc3Q6
OmRlbGV0ZU1lZGl1bShjb25zdCBTdHJpbmcmIG1lZGl1bSkKIHsKICAgICBDU1NTdHlsZVNoZWV0
OjpSdWxlTXV0YXRpb25TY29wZSBtdXRhdGlvblNjb3BlKG1fcGFyZW50UnVsZSk7CiAKICAgICBi
b29sIHN1Y2Nlc3MgPSBtX21lZGlhUXVlcmllcy0+cmVtb3ZlKG1lZGl1bSk7Ci0gICAgaWYgKCFz
dWNjZXNzKSB7Ci0gICAgICAgIGVjID0gTk9UX0ZPVU5EX0VSUjsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KKyAgICBpZiAoIXN1Y2Nlc3MpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOT1Rf
Rk9VTkRfRVJSIH07CiAgICAgaWYgKG1fcGFyZW50U3R5bGVTaGVldCkKICAgICAgICAgbV9wYXJl
bnRTdHlsZVNoZWV0LT5kaWRNdXRhdGUoKTsKKyAgICByZXR1cm4geyB9OwogfQogCi12b2lkIE1l
ZGlhTGlzdDo6YXBwZW5kTWVkaXVtKGNvbnN0IFN0cmluZyYgbWVkaXVtLCBFeGNlcHRpb25Db2Rl
JiBlYykKK0V4Y2VwdGlvbk9yPHZvaWQ+IE1lZGlhTGlzdDo6YXBwZW5kTWVkaXVtKGNvbnN0IFN0
cmluZyYgbWVkaXVtKQogewogICAgIENTU1N0eWxlU2hlZXQ6OlJ1bGVNdXRhdGlvblNjb3BlIG11
dGF0aW9uU2NvcGUobV9wYXJlbnRSdWxlKTsKIAogICAgIGJvb2wgc3VjY2VzcyA9IG1fbWVkaWFR
dWVyaWVzLT5hZGQobWVkaXVtKTsKICAgICBpZiAoIXN1Y2Nlc3MpIHsKICAgICAgICAgLy8gRklY
TUU6IFNob3VsZCB0aGlzIHJlYWxseSBiZSBJTlZBTElEX0NIQVJBQ1RFUl9FUlI/Ci0gICAgICAg
IGVjID0gSU5WQUxJRF9DSEFSQUNURVJfRVJSOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBJTlZBTElEX0NIQVJBQ1RFUl9FUlIgfTsKICAgICB9CiAgICAgaWYg
KG1fcGFyZW50U3R5bGVTaGVldCkKICAgICAgICAgbV9wYXJlbnRTdHlsZVNoZWV0LT5kaWRNdXRh
dGUoKTsKKyAgICByZXR1cm4geyB9OwogfQogCiB2b2lkIE1lZGlhTGlzdDo6cmVhdHRhY2goTWVk
aWFRdWVyeVNldCogbWVkaWFRdWVyaWVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L01lZGlhTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5oCmluZGV4IGJmMDcx
ZmUyZjg1ZWQxYmU4NGNmMzIyODFjZjMyODE4ZTFkYmIzMTEuLjY3MmFhNGE5OTljMTcwMjdiMGZk
YjM0ZjAzZjBhNThkZWM2ZGJlZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRp
YUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFMaXN0LmgKQEAgLTIwLDEwICsy
MCwxMCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5j
bHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTMzLDggKzMzLDYgQEAgY2xhc3MgQ1NTU3R5bGVTaGVldDsKIGNsYXNzIERv
Y3VtZW50OwogY2xhc3MgTWVkaWFRdWVyeTsKIAotdXNpbmcgRXhjZXB0aW9uQ29kZSA9IGludDsK
LQogY2xhc3MgTWVkaWFRdWVyeVNldCBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhUXVl
cnlTZXQ+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPE1lZGlhUXVlcnlTZXQ+IGNyZWF0ZSgp
CkBAIC05NiwxMSArOTQsMTEgQEAgcHVibGljOgogCiAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29u
c3QgeyByZXR1cm4gbV9tZWRpYVF1ZXJpZXMtPnF1ZXJ5VmVjdG9yKCkuc2l6ZSgpOyB9CiAgICAg
V0VCQ09SRV9FWFBPUlQgU3RyaW5nIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0OwotICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgZGVsZXRlTWVkaXVtKGNvbnN0IFN0cmluZyYgb2xkTWVkaXVtLCBF
eGNlcHRpb25Db2RlJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmRNZWRpdW0oY29u
c3QgU3RyaW5nJiBuZXdNZWRpdW0sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBFeGNlcHRpb25Pcjx2b2lkPiBkZWxldGVNZWRpdW0oY29uc3QgU3RyaW5nJiBvbGRNZWRpdW0p
OworICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPHZvaWQ+IGFwcGVuZE1lZGl1bShjb25z
dCBTdHJpbmcmIG5ld01lZGl1bSk7CiAKICAgICBTdHJpbmcgbWVkaWFUZXh0KCkgY29uc3QgeyBy
ZXR1cm4gbV9tZWRpYVF1ZXJpZXMtPm1lZGlhVGV4dCgpOyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRNZWRpYVRleHQoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOworICAgIFdF
QkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldE1lZGlhVGV4dChjb25zdCBTdHJpbmcm
KTsKIAogICAgIENTU1J1bGUqIHBhcmVudFJ1bGUoKSBjb25zdCB7IHJldHVybiBtX3BhcmVudFJ1
bGU7IH0KICAgICBDU1NTdHlsZVNoZWV0KiBwYXJlbnRTdHlsZVNoZWV0KCkgY29uc3QgeyByZXR1
cm4gbV9wYXJlbnRTdHlsZVNoZWV0OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
TWVkaWFMaXN0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3QuaWRsCmluZGV4IGJh
ZjVjOTMzOGExZTIwMmQ0ZWQ2NjUyNmUyYWY5MTk4Nzg3MmEyYWMuLjZkNmQzYzQxZTFmZDMzMzg1
NWQxNzhjMjc1ZGI4OGZhYTVkZmQ5ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9N
ZWRpYUxpc3QuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3QuaWRsCkBAIC0y
OSwxMSArMjksMTEgQEAKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAogICAgIEpTQ3Vz
dG9tSGVhZGVyLAogXSBpbnRlcmZhY2UgTWVkaWFMaXN0IHsKLSAgICBbU2V0dGVyTWF5VGhyb3dM
ZWdhY3lFeGNlcHRpb24sIFRyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBhdHRyaWJ1dGUgRE9NU3Ry
aW5nIG1lZGlhVGV4dDsKKyAgICBbU2V0dGVyTWF5VGhyb3dFeGNlcHRpb24sIFRyZWF0TnVsbEFz
PUVtcHR5U3RyaW5nXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG1lZGlhVGV4dDsKICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7CiAKICAgICBnZXR0ZXIgRE9NU3RyaW5n
PyBpdGVtKHVuc2lnbmVkIGxvbmcgaW5kZXgpOwogCi0gICAgW01heVRocm93TGVnYWN5RXhjZXB0
aW9uXSB2b2lkIGRlbGV0ZU1lZGl1bShET01TdHJpbmcgb2xkTWVkaXVtKTsKLSAgICBbTWF5VGhy
b3dMZWdhY3lFeGNlcHRpb25dIHZvaWQgYXBwZW5kTWVkaXVtKERPTVN0cmluZyBuZXdNZWRpdW0p
OworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBkZWxldGVNZWRpdW0oRE9NU3RyaW5nIG9s
ZE1lZGl1bSk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIGFwcGVuZE1lZGl1bShET01T
dHJpbmcgbmV3TWVkaXVtKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVk
aWFRdWVyeUV2YWx1YXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1
YXRvci5jcHAKaW5kZXggNzViYjc0NmRjYzRiM2JmM2FhMThjZGRiYzRjOTIyZjliNTEwMDNmOC4u
MmMxY2QyMzg4Y2E2OTQyNDE5ZjUxYWY3YThiNjhlMDYyZWJmYjhlNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcApAQCAtMjA4LDcgKzIwOCw3IEBAIHN0YXRp
YyBPcHRpb25hbDxkb3VibGU+IGRvdWJsZVZhbHVlKENTU1ZhbHVlKiB2YWx1ZSkKIHsKICAgICBp
ZiAoIWlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkgfHwgIWRvd25jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlPigqdmFsdWUpLmlzTnVtYmVyKCkpCiAgICAgICAgIHJldHVybiBOdWxsb3B0OwotICAg
IHJldHVybiBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVlKS5nZXREb3VibGVWYWx1
ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7CisgICAgcmV0dXJuIGRvd25jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUpLmRvdWJsZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfTlVNQkVSKTsKIH0KIAogc3RhdGljIGJvb2wgemVyb0V2YWx1YXRlKENTU1ZhbHVlKiB2YWx1
ZSwgTWVkaWFGZWF0dXJlUHJlZml4IG9wKQpAQCAtMjQ1LDcgKzI0NSw3IEBAIHN0YXRpYyBib29s
IGNvbG9yR2FtdXRFdmFsdWF0ZShDU1NWYWx1ZSogdmFsdWUsIGNvbnN0IENTU1RvTGVuZ3RoQ29u
dmVyc2lvbkRhdGEmCiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAg
ICBzd2l0Y2ggKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUpLmdldFZhbHVlSUQo
KSkgeworICAgIHN3aXRjaCAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YWx1ZSkudmFs
dWVJRCgpKSB7CiAgICAgY2FzZSBDU1NWYWx1ZVNyZ2I6CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIGNhc2UgQ1NTVmFsdWVQMzoKQEAgLTI3MSw3ICsyNzEsNyBAQCBzdGF0aWMgYm9vbCBpbnZl
cnRlZENvbG9yc0V2YWx1YXRlKENTU1ZhbHVlKiB2YWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGhDb252
ZXJzaW9uRAogICAgIGJvb2wgaXNJbnZlcnRlZCA9IHNjcmVlbkhhc0ludmVydGVkQ29sb3JzKCk7
CiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuIGlzSW52ZXJ0ZWQ7Ci0gICAgcmV0dXJu
IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUpLmdldFZhbHVlSUQoKSA9PSAoaXNJ
bnZlcnRlZCA/IENTU1ZhbHVlSW52ZXJ0ZWQgOiBDU1NWYWx1ZU5vbmUpOworICAgIHJldHVybiBk
b3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVlKS52YWx1ZUlEKCkgPT0gKGlzSW52ZXJ0
ZWQgPyBDU1NWYWx1ZUludmVydGVkIDogQ1NTVmFsdWVOb25lKTsKIH0KIAogc3RhdGljIGJvb2wg
b3JpZW50YXRpb25FdmFsdWF0ZShDU1NWYWx1ZSogdmFsdWUsIGNvbnN0IENTU1RvTGVuZ3RoQ29u
dmVyc2lvbkRhdGEmLCBGcmFtZSYgZnJhbWUsIE1lZGlhRmVhdHVyZVByZWZpeCkKQEAgLTI4OCw3
ICsyODgsNyBAQCBzdGF0aWMgYm9vbCBvcmllbnRhdGlvbkV2YWx1YXRlKENTU1ZhbHVlKiB2YWx1
ZSwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YQogICAgICAgICByZXR1cm4gaGVpZ2h0
ID49IDAgJiYgd2lkdGggPj0gMDsKICAgICB9CiAKLSAgICBhdXRvIGtleXdvcmQgPSBkb3duY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVlKS5nZXRWYWx1ZUlEKCk7CisgICAgYXV0byBrZXl3
b3JkID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YWx1ZSkudmFsdWVJRCgpOwogICAg
IGlmICh3aWR0aCA+IGhlaWdodCkgLy8gU3F1YXJlIHZpZXdwb3J0IGlzIHBvcnRyYWl0LgogICAg
ICAgICByZXR1cm4ga2V5d29yZCA9PSBDU1NWYWx1ZUxhbmRzY2FwZTsKICAgICByZXR1cm4ga2V5
d29yZCA9PSBDU1NWYWx1ZVBvcnRyYWl0OwpAQCAtMzQ5LDcgKzM0OSw3IEBAIHN0YXRpYyBib29s
IGV2YWx1YXRlUmVzb2x1dGlvbihDU1NWYWx1ZSogdmFsdWUsIEZyYW1lJiBmcmFtZSwgTWVkaWFG
ZWF0dXJlUHJlZml4CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8mIHJlc29sdXRp
b24gPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVlKTsKLSAgICByZXR1cm4gY29t
cGFyZVZhbHVlKGRldmljZVNjYWxlRmFjdG9yLCByZXNvbHV0aW9uLmlzTnVtYmVyKCkgPyByZXNv
bHV0aW9uLmdldEZsb2F0VmFsdWUoKSA6IHJlc29sdXRpb24uZ2V0RmxvYXRWYWx1ZShDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX0RQUFgpLCBvcCk7CisgICAgcmV0dXJuIGNvbXBhcmVWYWx1ZShkZXZp
Y2VTY2FsZUZhY3RvciwgcmVzb2x1dGlvbi5pc051bWJlcigpID8gcmVzb2x1dGlvbi5mbG9hdFZh
bHVlKCkgOiByZXNvbHV0aW9uLmZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19EUFBY
KSwgb3ApOwogfQogCiBzdGF0aWMgYm9vbCBkZXZpY2VQaXhlbFJhdGlvRXZhbHVhdGUoQ1NTVmFs
dWUqIHZhbHVlLCBjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiwgRnJhbWUmIGZyYW1l
LCBNZWRpYUZlYXR1cmVQcmVmaXggb3ApCkBAIC0zODIsNyArMzgyLDcgQEAgc3RhdGljIGJvb2wg
Y29tcHV0ZUxlbmd0aChDU1NWYWx1ZSogdmFsdWUsIGJvb2wgc3RyaWN0LCBjb25zdCBDU1NUb0xl
bmd0aENvbnZlcnMKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlPigqdmFsdWUpOwogCiAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLmlzTnVtYmVyKCkp
IHsKLSAgICAgICAgcmVzdWx0ID0gcHJpbWl0aXZlVmFsdWUuZ2V0SW50VmFsdWUoKTsKKyAgICAg
ICAgcmVzdWx0ID0gcHJpbWl0aXZlVmFsdWUuaW50VmFsdWUoKTsKICAgICAgICAgcmV0dXJuICFz
dHJpY3QgfHwgIXJlc3VsdDsKICAgICB9CiAKQEAgLTU4Nyw3ICs1ODcsNyBAQCBzdGF0aWMgYm9v
bCB2aWV3TW9kZUV2YWx1YXRlKENTU1ZhbHVlKiB2YWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGhDb252
ZXJzaW9uRGF0YSYsCiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAg
ICBhdXRvIGtleXdvcmQgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVlKS5nZXRW
YWx1ZUlEKCk7CisgICAgYXV0byBrZXl3b3JkID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+
KCp2YWx1ZSkudmFsdWVJRCgpOwogCiAgICAgc3dpdGNoIChmcmFtZS5wYWdlKCktPnZpZXdNb2Rl
KCkpIHsKICAgICBjYXNlIFBhZ2U6OlZpZXdNb2RlV2luZG93ZWQ6CkBAIC02MjQsNyArNjI0LDcg
QEAgc3RhdGljIGJvb2wgaG92ZXJFdmFsdWF0ZShDU1NWYWx1ZSogdmFsdWUsIGNvbnN0IENTU1Rv
TGVuZ3RoQ29udmVyc2lvbkRhdGEmLCBGcmEKICNlbmRpZgogICAgIH0KIAotICAgIGF1dG8ga2V5
d29yZCA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUpLmdldFZhbHVlSUQoKTsK
KyAgICBhdXRvIGtleXdvcmQgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVlKS52
YWx1ZUlEKCk7CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICByZXR1cm4ga2V5d29yZCA9
PSBDU1NWYWx1ZU5vbmU7CiAjZWxzZQpAQCAtNjQyLDcgKzY0Miw3IEBAIHN0YXRpYyBib29sIHBv
aW50ZXJFdmFsdWF0ZShDU1NWYWx1ZSogdmFsdWUsIGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lv
bkRhdGEmLCBGCiAgICAgaWYgKCFpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKIAotICAgIGF1dG8ga2V5d29yZCA9IGRvd25jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlPigqdmFsdWUpLmdldFZhbHVlSUQoKTsKKyAgICBhdXRvIGtleXdvcmQgPSBkb3duY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVlKS52YWx1ZUlEKCk7CiAjaWYgRU5BQkxFKFRPVUNI
X0VWRU5UUykKICAgICByZXR1cm4ga2V5d29yZCA9PSBDU1NWYWx1ZUNvYXJzZTsKICNlbHNlCkBA
IC02NzEsNyArNjcxLDcgQEAgc3RhdGljIGJvb2wgcHJlZmVyc1JlZHVjZWRNb3Rpb25FdmFsdWF0
ZShDU1NWYWx1ZSogdmFsdWUsIGNvbnN0IENTU1RvTGVuZ3RoQ29udmUKICAgICBpZiAoIXZhbHVl
KQogICAgICAgICByZXR1cm4gdXNlclByZWZlcnNSZWR1Y2VkTW90aW9uOwogCi0gICAgcmV0dXJu
IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUpLmdldFZhbHVlSUQoKSA9PSAodXNl
clByZWZlcnNSZWR1Y2VkTW90aW9uID8gQ1NTVmFsdWVSZWR1Y2UgOiBDU1NWYWx1ZURlZmF1bHQp
OworICAgIHJldHVybiBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVlKS52YWx1ZUlE
KCkgPT0gKHVzZXJQcmVmZXJzUmVkdWNlZE1vdGlvbiA/IENTU1ZhbHVlUmVkdWNlIDogQ1NTVmFs
dWVEZWZhdWx0KTsKIH0KIAogLy8gVXNlIHRoaXMgZnVuY3Rpb24gaW5zdGVhZCBvZiBjYWxsaW5n
IGFkZCBkaXJlY3RseSB0byBhdm9pZCBpbmxpbmluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9NZWRpYVF1ZXJ5RXhwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5
RXhwLmNwcAppbmRleCA4MGYyZjc3YTAxMWI2ZTA1ZjQ4ODg3ZTlhYTY1OTBjODBjZTU0YjhmLi42
YmVkOTRhN2MxYTg1OTdlMGJhNGJjMzRmYmFlNmJiNzUzNTMwMDc2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV4cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L01lZGlhUXVlcnlFeHAuY3BwCkBAIC0xMjksNyArMTI5LDcgQEAgc3RhdGljIGlubGluZSBib29s
IGlzRmVhdHVyZVZhbGlkV2l0aElkZW50aWZpZXIoY29uc3QgQXRvbWljU3RyaW5nJiBtZWRpYUZl
YXR1cmUKIAogc3RhdGljIGlubGluZSBib29sIGlzRmVhdHVyZVZhbGlkV2l0aE5vbk5lZ2F0aXZl
TGVuZ3RoT3JOdW1iZXIoY29uc3QgQXRvbWljU3RyaW5nJiBtZWRpYUZlYXR1cmUsIGNvbnN0IENT
U1BhcnNlclZhbHVlJiB2YWx1ZSkKIHsKLSAgICBpZiAoIShDU1NQcmltaXRpdmVWYWx1ZTo6aXNM
ZW5ndGgodmFsdWUudW5pdCkgfHwgdmFsdWUudW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X05VTUJFUikgfHwgdmFsdWUuZlZhbHVlIDwgMCkKKyAgICBpZiAoIShDU1NQcmltaXRpdmVWYWx1
ZTo6aXNMZW5ndGgoc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcz4odmFs
dWUudW5pdCkpIHx8IHZhbHVlLnVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIp
IHx8IHZhbHVlLmZWYWx1ZSA8IDApCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVy
biBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OmhlaWdodApAQCAtMTQ4LDcgKzE0
OCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0ZlYXR1cmVWYWxpZFdpdGhOb25OZWdhdGl2ZUxl
bmd0aE9yTnVtYmVyKGNvbnN0IEF0b21pY1N0cmluCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0Zl
YXR1cmVWYWxpZFdpdGhEZW5zaXR5KGNvbnN0IEF0b21pY1N0cmluZyYgbWVkaWFGZWF0dXJlLCBj
b25zdCBDU1NQYXJzZXJWYWx1ZSYgdmFsdWUpCiB7Ci0gICAgaWYgKCFDU1NQcmltaXRpdmVWYWx1
ZTo6aXNSZXNvbHV0aW9uKHZhbHVlLnVuaXQpIHx8IHZhbHVlLmZWYWx1ZSA8PSAwKQorICAgIGlm
ICghQ1NTUHJpbWl0aXZlVmFsdWU6OmlzUmVzb2x1dGlvbihzdGF0aWNfY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZTo6VW5pdFR5cGVzPih2YWx1ZS51bml0KSkgfHwgdmFsdWUuZlZhbHVlIDw9IDApCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiBtZWRpYUZlYXR1cmUgPT0gTWVkaWFG
ZWF0dXJlTmFtZXM6OnJlc29sdXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Q
cm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1By
b3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggOTlmYzVkZDJmOGU3MjgwOTQ3
ZjY3OWY0MmZhYjBiNjM2OTZjZTAzOC4uZmQ1ZTFiNDc3ZTE3MjAwMjUzZGMwMTdkZGIzNTQxMThh
Y2UyYTA4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5
bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NT
U3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTE0OCwxNyArMTQ4LDE4IEBAIFN0cmluZyBQcm9wZXJ0
eVNldENTU1N0eWxlRGVjbGFyYXRpb246OmNzc1RleHQoKSBjb25zdAogICAgIHJldHVybiBtX3By
b3BlcnR5U2V0LT5hc1RleHQoKTsKIH0KIAotdm9pZCBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFy
YXRpb246OnNldENzc1RleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBFeGNlcHRpb25Db2RlJikKK0V4
Y2VwdGlvbk9yPHZvaWQ+IFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6c2V0Q3NzVGV4
dChjb25zdCBTdHJpbmcmIHRleHQpCiB7CiAgICAgU3R5bGVBdHRyaWJ1dGVNdXRhdGlvblNjb3Bl
IG11dGF0aW9uU2NvcGUodGhpcyk7CiAgICAgaWYgKCF3aWxsTXV0YXRlKCkpCi0gICAgICAgIHJl
dHVybjsKKyAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIGJvb2wgY2hhbmdlZCA9IG1fcHJvcGVy
dHlTZXQtPnBhcnNlRGVjbGFyYXRpb24odGV4dCwgY3NzUGFyc2VyQ29udGV4dCgpLCBjb250ZXh0
U3R5bGVTaGVldCgpKTsKIAogICAgIGRpZE11dGF0ZShjaGFuZ2VkID8gUHJvcGVydHlDaGFuZ2Vk
IDogTm9DaGFuZ2VzKTsKIAotICAgIG11dGF0aW9uU2NvcGUuZW5xdWV1ZU11dGF0aW9uUmVjb3Jk
KCk7ICAgIAorICAgIG11dGF0aW9uU2NvcGUuZW5xdWV1ZU11dGF0aW9uUmVjb3JkKCk7CisgICAg
cmV0dXJuIHsgfTsKIH0KIAogUmVmUHRyPENTU1ZhbHVlPiBQcm9wZXJ0eVNldENTU1N0eWxlRGVj
bGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUp
CkBAIC0yMTQsNyArMjE1LDcgQEAgYm9vbCBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246
OmlzUHJvcGVydHlJbXBsaWNpdChjb25zdCBTdHJpbmcmIHByb3BlcnR5TmEKICAgICByZXR1cm4g
bV9wcm9wZXJ0eVNldC0+aXNQcm9wZXJ0eUltcGxpY2l0KHByb3BlcnR5SUQpOwogfQogCi12b2lk
IFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6c2V0UHJvcGVydHkoY29uc3QgU3RyaW5n
JiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGNvbnN0IFN0cmluZyYgcHJpb3Jp
dHksIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8dm9pZD4gUHJvcGVydHlTZXRDU1NT
dHlsZURlY2xhcmF0aW9uOjpzZXRQcm9wZXJ0eShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwg
Y29uc3QgU3RyaW5nJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBwcmlvcml0eSkKIHsKICAgICBTdHls
ZUF0dHJpYnV0ZU11dGF0aW9uU2NvcGUgbXV0YXRpb25TY29wZSh0aGlzKTsKICAgICAKQEAgLTIy
MiwxNiArMjIzLDE0IEBAIHZvaWQgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpzZXRQ
cm9wZXJ0eShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgY29uCiAgICAgaWYgKGlzQ3VzdG9t
UHJvcGVydHlOYW1lKHByb3BlcnR5TmFtZSkpCiAgICAgICAgIHByb3BlcnR5SUQgPSBDU1NQcm9w
ZXJ0eUN1c3RvbTsKICAgICBpZiAoIXByb3BlcnR5SUQpCi0gICAgICAgIHJldHVybjsKKyAgICAg
ICAgcmV0dXJuIHsgfTsKIAogICAgIGlmICghd2lsbE11dGF0ZSgpKQotICAgICAgICByZXR1cm47
CisgICAgICAgIHJldHVybiB7IH07CiAKICAgICBib29sIGltcG9ydGFudCA9IGVxdWFsSWdub3Jp
bmdBU0NJSUNhc2UocHJpb3JpdHksICJpbXBvcnRhbnQiKTsKICAgICBpZiAoIWltcG9ydGFudCAm
JiAhcHJpb3JpdHkuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBlYyA9IDA7Cisg
ICAgICAgIHJldHVybiB7IH07CiAKICAgICBib29sIGNoYW5nZWQ7CiAgICAgaWYgKHByb3BlcnR5
SUQgPT0gQ1NTUHJvcGVydHlDdXN0b20pCkBAIC0yNDYsOSArMjQ1LDExIEBAIHZvaWQgUHJvcGVy
dHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpzZXRQcm9wZXJ0eShjb25zdCBTdHJpbmcmIHByb3Bl
cnR5TmFtZSwgY29uCiAgICAgICAgIC8vIHNlZSA8aHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzI5Nj4uCiAgICAgICAgIG11dGF0aW9uU2NvcGUuZW5xdWV1ZU11dGF0aW9u
UmVjb3JkKCk7CiAgICAgfQorCisgICAgcmV0dXJuIHsgfTsKIH0KIAotU3RyaW5nIFByb3BlcnR5
U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6cmVtb3ZlUHJvcGVydHkoY29uc3QgU3RyaW5nJiBwcm9w
ZXJ0eU5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8U3RyaW5nPiBQcm9wZXJ0
eVNldENTU1N0eWxlRGVjbGFyYXRpb246OnJlbW92ZVByb3BlcnR5KGNvbnN0IFN0cmluZyYgcHJv
cGVydHlOYW1lKQogewogICAgIFN0eWxlQXR0cmlidXRlTXV0YXRpb25TY29wZSBtdXRhdGlvblNj
b3BlKHRoaXMpOwogICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCA9IGNzc1Byb3BlcnR5SUQo
cHJvcGVydHlOYW1lKTsKQEAgLTI2MCw3ICsyNjEsNiBAQCBTdHJpbmcgUHJvcGVydHlTZXRDU1NT
dHlsZURlY2xhcmF0aW9uOjpyZW1vdmVQcm9wZXJ0eShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFt
ZQogICAgIGlmICghd2lsbE11dGF0ZSgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAg
ICBlYyA9IDA7CiAgICAgU3RyaW5nIHJlc3VsdDsKICAgICBib29sIGNoYW5nZWQgPSBwcm9wZXJ0
eUlEICE9IENTU1Byb3BlcnR5Q3VzdG9tID8gbV9wcm9wZXJ0eVNldC0+cmVtb3ZlUHJvcGVydHko
cHJvcGVydHlJRCwgJnJlc3VsdCkgOiBtX3Byb3BlcnR5U2V0LT5yZW1vdmVDdXN0b21Qcm9wZXJ0
eShwcm9wZXJ0eU5hbWUsICZyZXN1bHQpOwogCkBAIC0yNjgsMTYgKzI2OCwxMiBAQCBTdHJpbmcg
UHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpyZW1vdmVQcm9wZXJ0eShjb25zdCBTdHJp
bmcmIHByb3BlcnR5TmFtZQogCiAgICAgaWYgKGNoYW5nZWQpCiAgICAgICAgIG11dGF0aW9uU2Nv
cGUuZW5xdWV1ZU11dGF0aW9uUmVjb3JkKCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1
cm4gV1RGTW92ZShyZXN1bHQpOwogfQogCiBSZWZQdHI8Q1NTVmFsdWU+IFByb3BlcnR5U2V0Q1NT
U3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
SUQgcHJvcGVydHlJRCkKIHsKLSAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlID0gbV9wcm9wZXJ0
eVNldC0+Z2V0UHJvcGVydHlDU1NWYWx1ZShwcm9wZXJ0eUlEKTsKLSAgICBpZiAodmFsdWUpCi0g
ICAgICAgIHJldHVybiB2YWx1ZTsKLQotICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBt
X3Byb3BlcnR5U2V0LT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKHByb3BlcnR5SUQpOwogfQogCiBTdHJp
bmcgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eVZhbHVlSW50ZXJu
YWwoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEKQpAQCAtMjg5LDEzICsyODUsMTIgQEAgU3RyaW5n
IFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlWYWx1ZUludGVybmFs
KENTU1Byb3BlcnR5SUQgcHIKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLWJvb2wgUHJvcGVy
dHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpzZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5
SUQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8Ym9vbD4gUHJvcGVydHlTZXRDU1NTdHlsZURlY2xh
cmF0aW9uOjpzZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgY29u
c3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQpCiB7IAogICAgIFN0eWxlQXR0cmlidXRl
TXV0YXRpb25TY29wZSBtdXRhdGlvblNjb3BlKHRoaXMpOwogICAgIGlmICghd2lsbE11dGF0ZSgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBlYyA9IDA7CiAgICAgYm9vbCBjaGFuZ2Vk
ID0gbV9wcm9wZXJ0eVNldC0+c2V0UHJvcGVydHkocHJvcGVydHlJRCwgdmFsdWUsIGltcG9ydGFu
dCwgY3NzUGFyc2VyQ29udGV4dCgpLCBjb250ZXh0U3R5bGVTaGVldCgpKTsKIAogICAgIGRpZE11
dGF0ZShjaGFuZ2VkID8gUHJvcGVydHlDaGFuZ2VkIDogTm9DaGFuZ2VzKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uaAppbmRleCA4
NzVlOThkYzNlYTVkNzFiZjBjMmY2YTU3YTJlYjgxMzFjMWI1ZWNlLi41YWJkMDk3NGY1ZmJhN2Ix
NmZiYWUwNjJlZTAzODhiNDhjOGFhODBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
UHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5oCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVmIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlv
bl9oCi0jZGVmaW5lIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbl9oCisjcHJhZ21hIG9u
Y2UKIAogI2luY2x1ZGUgIkNTU1BhcnNlck1vZGUuaCIKICNpbmNsdWRlICJDU1NTdHlsZURlY2xh
cmF0aW9uLmgiCkBAIC00NCwxNCArNDMsMjMgQEAgY2xhc3MgU3R5bGVkRWxlbWVudDsKIGNsYXNz
IFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbiA6IHB1YmxpYyBDU1NTdHlsZURlY2xhcmF0
aW9uIHsKIHB1YmxpYzoKICAgICBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24oTXV0YWJs
ZVN0eWxlUHJvcGVydGllcyogcHJvcGVydHlTZXQpIDogbV9wcm9wZXJ0eVNldChwcm9wZXJ0eVNl
dCkgeyB9Ci0gICAgCisKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJQYXJlbnRFbGVtZW50KCkgeyBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorCiAgICAgU3R5bGVTaGVldENvbnRlbnRzKiBjb250ZXh0
U3R5bGVTaGVldCgpIGNvbnN0OwotICAgIAorCitwcm90ZWN0ZWQ6CisgICAgZW51bSBNdXRhdGlv
blR5cGUgeyBOb0NoYW5nZXMsIFByb3BlcnR5Q2hhbmdlZCB9OworCisgICAgdmlydHVhbCBDU1NQ
YXJzZXJDb250ZXh0IGNzc1BhcnNlckNvbnRleHQoKSBjb25zdDsKKworICAgIE11dGFibGVTdHls
ZVByb3BlcnRpZXMqIG1fcHJvcGVydHlTZXQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPEhhc2hNYXA8
Q1NTVmFsdWUqLCBSZWZQdHI8Q1NTVmFsdWU+Pj4gbV9jc3NvbUNTU1ZhbHVlQ2xvbmVzOworCitw
cml2YXRlOgogICAgIHZvaWQgcmVmKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkZXJlZigpIG92ZXJy
aWRlOwogCi1wcml2YXRlOgogICAgIENTU1J1bGUqIHBhcmVudFJ1bGUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBudWxscHRyOyB9CiAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgZmluYWw7
CiAgICAgU3RyaW5nIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0IGZpbmFsOwpAQCAtNjAsMzAg
KzY4LDIzIEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIGdldFByb3BlcnR5UHJpb3JpdHkoY29uc3Qg
U3RyaW5nJiBwcm9wZXJ0eU5hbWUpIGZpbmFsOwogICAgIFN0cmluZyBnZXRQcm9wZXJ0eVNob3J0
aGFuZChjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkgZmluYWw7CiAgICAgYm9vbCBpc1Byb3Bl
cnR5SW1wbGljaXQoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpIGZpbmFsOwotICAgIHZvaWQg
c2V0UHJvcGVydHkoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFN0cmluZyYgdmFs
dWUsIGNvbnN0IFN0cmluZyYgcHJpb3JpdHksIEV4Y2VwdGlvbkNvZGUmKSBmaW5hbDsKLSAgICBT
dHJpbmcgcmVtb3ZlUHJvcGVydHkoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIEV4Y2VwdGlv
bkNvZGUmKSBmaW5hbDsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRQcm9wZXJ0eShjb25zdCBT
dHJpbmcmIHByb3BlcnR5TmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBw
cmlvcml0eSkgZmluYWw7CisgICAgRXhjZXB0aW9uT3I8U3RyaW5nPiByZW1vdmVQcm9wZXJ0eShj
b25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkgZmluYWw7CiAgICAgU3RyaW5nIGNzc1RleHQoKSBj
b25zdCBmaW5hbDsKLSAgICB2b2lkIHNldENzc1RleHQoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9u
Q29kZSYpIGZpbmFsOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldENzc1RleHQoY29uc3QgU3Ry
aW5nJikgZmluYWw7CiAgICAgUmVmUHRyPENTU1ZhbHVlPiBnZXRQcm9wZXJ0eUNTU1ZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlJRCkgZmluYWw7CiAgICAgU3RyaW5nIGdldFByb3BlcnR5VmFsdWVJ
bnRlcm5hbChDU1NQcm9wZXJ0eUlEKSBmaW5hbDsKLSAgICBib29sIHNldFByb3BlcnR5SW50ZXJu
YWwoQ1NTUHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQsIEV4
Y2VwdGlvbkNvZGUmKSBmaW5hbDsKKyAgICBFeGNlcHRpb25Pcjxib29sPiBzZXRQcm9wZXJ0eUlu
dGVybmFsKENTU1Byb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wgaW1wb3J0YW50
KSBmaW5hbDsKICAgICAKICAgICBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gY29weVByb3Bl
cnRpZXMoKSBjb25zdCBmaW5hbDsKIAogICAgIENTU1ZhbHVlKiBjbG9uZUFuZENhY2hlRm9yQ1NT
T00oQ1NTVmFsdWUqKTsKICAgICAKLXByb3RlY3RlZDoKLSAgICBlbnVtIE11dGF0aW9uVHlwZSB7
IE5vQ2hhbmdlcywgUHJvcGVydHlDaGFuZ2VkIH07CiAgICAgdmlydHVhbCBib29sIHdpbGxNdXRh
dGUoKSBXQVJOX1VOVVNFRF9SRVRVUk4geyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9p
ZCBkaWRNdXRhdGUoTXV0YXRpb25UeXBlKSB7IH0KLSAgICB2aXJ0dWFsIENTU1BhcnNlckNvbnRl
eHQgY3NzUGFyc2VyQ29udGV4dCgpIGNvbnN0OwotCi0gICAgTXV0YWJsZVN0eWxlUHJvcGVydGll
cyogbV9wcm9wZXJ0eVNldDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SGFzaE1hcDxDU1NWYWx1ZSos
IFJlZlB0cjxDU1NWYWx1ZT4+PiBtX2Nzc29tQ1NTVmFsdWVDbG9uZXM7CiB9OwogCi1jbGFzcyBT
dHlsZVJ1bGVDU1NTdHlsZURlY2xhcmF0aW9uIGZpbmFsIDogcHVibGljIFByb3BlcnR5U2V0Q1NT
U3R5bGVEZWNsYXJhdGlvbgoteworY2xhc3MgU3R5bGVSdWxlQ1NTU3R5bGVEZWNsYXJhdGlvbiBm
aW5hbCA6IHB1YmxpYyBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24gewogcHVibGljOgog
ICAgIHN0YXRpYyBSZWY8U3R5bGVSdWxlQ1NTU3R5bGVEZWNsYXJhdGlvbj4gY3JlYXRlKE11dGFi
bGVTdHlsZVByb3BlcnRpZXMmIHByb3BlcnR5U2V0LCBDU1NSdWxlJiBwYXJlbnRSdWxlKQogICAg
IHsKQEAgLTkxLDcgKzkyLDcgQEAgcHVibGljOgogICAgIH0KICAgICB2aXJ0dWFsIH5TdHlsZVJ1
bGVDU1NTdHlsZURlY2xhcmF0aW9uKCk7CiAKLSAgICB2b2lkIGNsZWFyUGFyZW50UnVsZSgpIHsg
bV9wYXJlbnRSdWxlID0gMDsgfQorICAgIHZvaWQgY2xlYXJQYXJlbnRSdWxlKCkgeyBtX3BhcmVu
dFJ1bGUgPSBudWxscHRyOyB9CiAgICAgCiAgICAgdm9pZCByZWYoKSBmaW5hbDsKICAgICB2b2lk
IGRlcmVmKCkgZmluYWw7CkBAIC0xMTMsMTkgKzExNCwxOCBAQCBwcml2YXRlOgogICAgIENTU1J1
bGUqIG1fcGFyZW50UnVsZTsKIH07CiAKLWNsYXNzIElubGluZUNTU1N0eWxlRGVjbGFyYXRpb24g
ZmluYWwgOiBwdWJsaWMgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uCi17CitjbGFzcyBJ
bmxpbmVDU1NTdHlsZURlY2xhcmF0aW9uIGZpbmFsIDogcHVibGljIFByb3BlcnR5U2V0Q1NTU3R5
bGVEZWNsYXJhdGlvbiB7CiBwdWJsaWM6CiAgICAgSW5saW5lQ1NTU3R5bGVEZWNsYXJhdGlvbihN
dXRhYmxlU3R5bGVQcm9wZXJ0aWVzKiBwcm9wZXJ0eVNldCwgU3R5bGVkRWxlbWVudCogcGFyZW50
RWxlbWVudCkKICAgICAgICAgOiBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24ocHJvcGVy
dHlTZXQpCiAgICAgICAgICwgbV9wYXJlbnRFbGVtZW50KHBhcmVudEVsZW1lbnQpIAogICAgIHsK
ICAgICB9Ci0gICAgCisKIHByaXZhdGU6CiAgICAgQ1NTU3R5bGVTaGVldCogcGFyZW50U3R5bGVT
aGVldCgpIGNvbnN0IGZpbmFsOwogICAgIFN0eWxlZEVsZW1lbnQqIHBhcmVudEVsZW1lbnQoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX3BhcmVudEVsZW1lbnQ7IH0KLSAgICB2b2lkIGNsZWFyUGFy
ZW50RWxlbWVudCgpIGZpbmFsIHsgbV9wYXJlbnRFbGVtZW50ID0gMDsgfQorICAgIHZvaWQgY2xl
YXJQYXJlbnRFbGVtZW50KCkgZmluYWwgeyBtX3BhcmVudEVsZW1lbnQgPSBudWxscHRyOyB9CiAK
ICAgICB2b2lkIGRpZE11dGF0ZShNdXRhdGlvblR5cGUpIGZpbmFsOwogICAgIENTU1BhcnNlckNv
bnRleHQgY3NzUGFyc2VyQ29udGV4dCgpIGNvbnN0IGZpbmFsOwpAQCAtMTM0LDUgKzEzNCwzIEBA
IHByaXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oIGIvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCmluZGV4IDFlZjY1OTYyZWVmOTNi
NmM3YzdhM2ZhMmUwZTU4NTJmOTQyZmYyYzAuLjQ3ODYzMGI2NTJhOWU3MmUwZjJmMjlmNjcyNzhk
ZmE2NDNiMTJjMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJD
b252ZXJ0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVy
LmgKQEAgLTE4Nyw3ICsxODcsNyBAQCBpbmxpbmUgTGVuZ3RoIFN0eWxlQnVpbGRlckNvbnZlcnRl
cjo6Y29udmVydExlbmd0aChTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLAogICAgIH0KIAog
ICAgIGlmIChwcmltaXRpdmVWYWx1ZS5pc1BlcmNlbnRhZ2UoKSkKLSAgICAgICAgcmV0dXJuIExl
bmd0aChwcmltaXRpdmVWYWx1ZS5nZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKKyAgICAgICAg
cmV0dXJuIExlbmd0aChwcmltaXRpdmVWYWx1ZS5kb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKIAog
ICAgIGlmIChwcmltaXRpdmVWYWx1ZS5pc0NhbGN1bGF0ZWRQZXJjZW50YWdlV2l0aExlbmd0aCgp
KQogICAgICAgICByZXR1cm4gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLmNzc0NhbGNWYWx1ZSgpLT5j
cmVhdGVDYWxjdWxhdGlvblZhbHVlKGNvbnZlcnNpb25EYXRhKSk7CkBAIC0xOTgsNyArMTk4LDcg
QEAgaW5saW5lIExlbmd0aCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMZW5ndGgoU3R5
bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwKIAogaW5saW5lIExlbmd0aCBTdHlsZUJ1aWxkZXJD
b252ZXJ0ZXI6OmNvbnZlcnRMZW5ndGhPckF1dG8oU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZl
ciwgQ1NTVmFsdWUmIHZhbHVlKQogewotICAgIGlmIChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZT4odmFsdWUpLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZUF1dG8pCisgICAgaWYgKGRvd25jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkudmFsdWVJRCgpID09IENTU1ZhbHVlQXV0bykKICAg
ICAgICAgcmV0dXJuIExlbmd0aChBdXRvKTsKICAgICByZXR1cm4gY29udmVydExlbmd0aChzdHls
ZVJlc29sdmVyLCB2YWx1ZSk7CiB9CkBAIC0yMDYsNyArMjA2LDcgQEAgaW5saW5lIExlbmd0aCBT
dHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMZW5ndGhPckF1dG8oU3R5bGVSZXNvbHZlciYg
c3R5bGVSZXMKIGlubGluZSBMZW5ndGggU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TGVu
Z3RoU2l6aW5nKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkK
IHsKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
Pih2YWx1ZSk7Ci0gICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkpIHsKKyAg
ICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSkgewogICAgIGNhc2UgQ1NTVmFsdWVJ
bnZhbGlkOgogICAgICAgICByZXR1cm4gY29udmVydExlbmd0aChzdHlsZVJlc29sdmVyLCB2YWx1
ZSk7CiAgICAgY2FzZSBDU1NWYWx1ZUludHJpbnNpYzoKQEAgLTIzMSw3ICsyMzEsNyBAQCBpbmxp
bmUgTGVuZ3RoIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydExlbmd0aFNpemluZyhTdHls
ZVJlc29sdmVyJiBzdHlsZVJlcwogCiBpbmxpbmUgTGVuZ3RoIFN0eWxlQnVpbGRlckNvbnZlcnRl
cjo6Y29udmVydExlbmd0aE1heFNpemluZyhTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBD
U1NWYWx1ZSYgdmFsdWUpCiB7Ci0gICAgaWYgKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2
YWx1ZSkuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZSkKKyAgICBpZiAoZG93bmNhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWU+KHZhbHVlKS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKQogICAgICAg
ICByZXR1cm4gTGVuZ3RoKFVuZGVmaW5lZCk7CiAgICAgcmV0dXJuIGNvbnZlcnRMZW5ndGhTaXpp
bmcoc3R5bGVSZXNvbHZlciwgdmFsdWUpOwogfQpAQCAtMjQ2LDcgKzI0Niw3IEBAIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPgogaW5saW5lIFQgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TGlu
ZVdpZHRoKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKIHsK
ICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2
YWx1ZSk7Ci0gICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkpIHsKKyAgICBz
d2l0Y2ggKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSkgewogICAgIGNhc2UgQ1NTVmFsdWVUaGlu
OgogICAgICAgICByZXR1cm4gMTsKICAgICBjYXNlIENTU1ZhbHVlTWVkaXVtOgpAQCAtMjc2LDcg
KzI3Niw3IEBAIGlubGluZSBUIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydExpbmVXaWR0
aChTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBDCiBpbmxpbmUgZmxvYXQgU3R5bGVCdWls
ZGVyQ29udmVydGVyOjpjb252ZXJ0U3BhY2luZyhTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVy
LCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwotICAgIGlmIChwcmltaXRpdmVWYWx1ZS5nZXRW
YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb3JtYWwpCisgICAgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVl
SUQoKSA9PSBDU1NWYWx1ZU5vcm1hbCkKICAgICAgICAgcmV0dXJuIDAuZjsKIAogICAgIENTU1Rv
TGVuZ3RoQ29udmVyc2lvbkRhdGEgY29udmVyc2lvbkRhdGEgPSBzdHlsZVJlc29sdmVyLnVzZVNW
R1pvb21SdWxlc0Zvckxlbmd0aCgpID8KQEAgLTI4OCw3ICsyODgsNyBAQCBpbmxpbmUgZmxvYXQg
U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U3BhY2luZyhTdHlsZVJlc29sdmVyJiBzdHls
ZVJlc29sdmVyLAogaW5saW5lIExlbmd0aCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRU
b1JhZGl1c0xlbmd0aChDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW9uRGF0YSwg
Q1NTUHJpbWl0aXZlVmFsdWUmIHZhbHVlKQogewogICAgIGlmICh2YWx1ZS5pc1BlcmNlbnRhZ2Uo
KSkKLSAgICAgICAgcmV0dXJuIExlbmd0aCh2YWx1ZS5nZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50
KTsKKyAgICAgICAgcmV0dXJuIExlbmd0aCh2YWx1ZS5kb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsK
ICAgICBpZiAodmFsdWUuaXNDYWxjdWxhdGVkUGVyY2VudGFnZVdpdGhMZW5ndGgoKSkKICAgICAg
ICAgcmV0dXJuIExlbmd0aCh2YWx1ZS5jc3NDYWxjVmFsdWUoKS0+Y3JlYXRlQ2FsY3VsYXRpb25W
YWx1ZShjb252ZXJzaW9uRGF0YSkpOwogICAgIHJldHVybiB2YWx1ZS5jb21wdXRlTGVuZ3RoPExl
bmd0aD4oY29udmVyc2lvbkRhdGEpOwpAQCAtMjk3LDcgKzI5Nyw3IEBAIGlubGluZSBMZW5ndGgg
U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VG9SYWRpdXNMZW5ndGgoQ1NTVG9MZW5ndGhD
b252ZXJzaW9uCiBpbmxpbmUgTGVuZ3RoU2l6ZSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZl
cnRSYWRpdXMoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHZhbHVlKQog
ewogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+
KHZhbHVlKTsKLSAgICBQYWlyKiBwYWlyID0gcHJpbWl0aXZlVmFsdWUuZ2V0UGFpclZhbHVlKCk7
CisgICAgUGFpciogcGFpciA9IHByaW1pdGl2ZVZhbHVlLnBhaXJWYWx1ZSgpOwogICAgIGlmICgh
cGFpciB8fCAhcGFpci0+Zmlyc3QoKSB8fCAhcGFpci0+c2Vjb25kKCkpCiAgICAgICAgIHJldHVy
biBMZW5ndGhTaXplKExlbmd0aCgwLCBGaXhlZCksIExlbmd0aCgwLCBGaXhlZCkpOwogCkBAIC0z
MzMsMTEgKzMzMywxMSBAQCBpbmxpbmUgTGVuZ3RoIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29u
dmVydFBvc2l0aW9uQ29tcG9uZW50KFN0eWxlUmVzb2x2ZXImIHN0eQogICAgIGJvb2wgcmVsYXRp
dmVUb1RyYWlsaW5nRWRnZSA9IGZhbHNlOwogICAgIAogICAgIGlmICh2YWx1ZS5pc1BhaXIoKSkg
ewotICAgICAgICBhdXRvJiBmaXJzdCA9ICp2YWx1ZS5nZXRQYWlyVmFsdWUoKS0+Zmlyc3QoKTsK
LSAgICAgICAgaWYgKGZpcnN0LmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZVJpZ2h0IHx8IGZpcnN0
LmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZUJvdHRvbSkKKyAgICAgICAgYXV0byYgZmlyc3QgPSAq
dmFsdWUucGFpclZhbHVlKCktPmZpcnN0KCk7CisgICAgICAgIGlmIChmaXJzdC52YWx1ZUlEKCkg
PT0gQ1NTVmFsdWVSaWdodCB8fCBmaXJzdC52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVCb3R0b20pCiAg
ICAgICAgICAgICByZWxhdGl2ZVRvVHJhaWxpbmdFZGdlID0gdHJ1ZTsKIAotICAgICAgICBsZW5n
dGhWYWx1ZSA9IHZhbHVlLmdldFBhaXJWYWx1ZSgpLT5zZWNvbmQoKTsKKyAgICAgICAgbGVuZ3Ro
VmFsdWUgPSB2YWx1ZS5wYWlyVmFsdWUoKS0+c2Vjb25kKCk7CiAgICAgfQogCiAgICAgbGVuZ3Ro
ID0gY29udmVydExlbmd0aChzdHlsZVJlc29sdmVyLCAqbGVuZ3RoVmFsdWUpOwpAQCAtMzUxLDcg
KzM1MSw3IEBAIGlubGluZSBMZW5ndGggU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UG9z
aXRpb25Db21wb25lbnQoU3R5bGVSZXNvbHZlciYgc3R5CiBpbmxpbmUgTGVuZ3RoUG9pbnQgU3R5
bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0T2JqZWN0UG9zaXRpb24oU3R5bGVSZXNvbHZlciYg
c3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGF1dG8mIHByaW1pdGl2ZVZh
bHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKLSAgICBQYWlyKiBwYWly
ID0gcHJpbWl0aXZlVmFsdWUuZ2V0UGFpclZhbHVlKCk7CisgICAgUGFpciogcGFpciA9IHByaW1p
dGl2ZVZhbHVlLnBhaXJWYWx1ZSgpOwogICAgIGlmICghcGFpciB8fCAhcGFpci0+Zmlyc3QoKSB8
fCAhcGFpci0+c2Vjb25kKCkpCiAgICAgICAgIHJldHVybiBSZW5kZXJTdHlsZTo6aW5pdGlhbE9i
amVjdFBvc2l0aW9uKCk7CiAKQEAgLTM3NCwxMyArMzc0LDEzIEBAIGlubGluZSBUZXh0RGVjb3Jh
dGlvbiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUZXh0RGVjb3JhdGlvbihTdHlsZVJl
c29sdmVyCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIGlubGluZSBUIFN0eWxlQnVpbGRlckNvbnZl
cnRlcjo6Y29udmVydE51bWJlcihTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmIHZhbHVlKQogewot
ICAgIHJldHVybiBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLmdldFZhbHVlPFQ+
KENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKKyAgICByZXR1cm4gZG93bmNhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWU+KHZhbHVlKS52YWx1ZTxUPihDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05V
TUJFUik7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogaW5saW5lIFQgU3R5bGVCdWlsZGVy
Q29udmVydGVyOjpjb252ZXJ0TnVtYmVyT3JBdXRvKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2
ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKLSAgICBpZiAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWU+KHZhbHVlKS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVBdXRvKQorICAgIGlmIChkb3duY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUF1dG8pCiAg
ICAgICAgIHJldHVybiAtMTsKICAgICByZXR1cm4gY29udmVydE51bWJlcjxUPihzdHlsZVJlc29s
dmVyLCB2YWx1ZSk7CiB9CkBAIC0zODgsOSArMzg4LDkgQEAgaW5saW5lIFQgU3R5bGVCdWlsZGVy
Q29udmVydGVyOjpjb252ZXJ0TnVtYmVyT3JBdXRvKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2
ZXIKIGlubGluZSBzaG9ydCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRXZWJraXRIeXBo
ZW5hdGVMaW1pdExpbmVzKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAg
YXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUp
OwotICAgIGlmIChwcmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb0xpbWl0
KQorICAgIGlmIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb0xpbWl0KQog
ICAgICAgICByZXR1cm4gLTE7Ci0gICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlPHNo
b3J0PihDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7CisgICAgcmV0dXJuIHByaW1pdGl2
ZVZhbHVlLnZhbHVlPHNob3J0PihDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7CiB9CiAK
IHRlbXBsYXRlIDxDU1NQcm9wZXJ0eUlEIHByb3BlcnR5PgpAQCAtNDI1LDE5ICs0MjUsMTkgQEAg
aW5saW5lIFRyYW5zZm9ybU9wZXJhdGlvbnMgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0
VHJhbnNmb3JtKFN0eWxlUmVzb2x2ZXIKIAogaW5saW5lIFN0cmluZyBTdHlsZUJ1aWxkZXJDb252
ZXJ0ZXI6OmNvbnZlcnRTdHJpbmcoU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJiB2YWx1ZSkKIHsK
LSAgICByZXR1cm4gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS5nZXRTdHJpbmdW
YWx1ZSgpOworICAgIHJldHVybiBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLnN0
cmluZ1ZhbHVlKCk7CiB9CiAKIGlubGluZSBTdHJpbmcgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpj
b252ZXJ0U3RyaW5nT3JBdXRvKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVl
JiB2YWx1ZSkKIHsKLSAgICBpZiAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS5n
ZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVBdXRvKQorICAgIGlmIChkb3duY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZT4odmFsdWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUF1dG8pCiAgICAgICAgIHJldHVy
biBudWxsQXRvbTsKICAgICByZXR1cm4gY29udmVydFN0cmluZyhzdHlsZVJlc29sdmVyLCB2YWx1
ZSk7CiB9CiAKIGlubGluZSBTdHJpbmcgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U3Ry
aW5nT3JOb25lKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkK
IHsKLSAgICBpZiAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS5nZXRWYWx1ZUlE
KCkgPT0gQ1NTVmFsdWVOb25lKQorICAgIGlmIChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4o
dmFsdWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUpCiAgICAgICAgIHJldHVybiBudWxsQXRv
bTsKICAgICByZXR1cm4gY29udmVydFN0cmluZyhzdHlsZVJlc29sdmVyLCB2YWx1ZSk7CiB9CkBA
IC00NDYsNyArNDQ2LDcgQEAgaW5saW5lIFRleHRFbXBoYXNpc1Bvc2l0aW9uIFN0eWxlQnVpbGRl
ckNvbnZlcnRlcjo6dmFsdWVUb0VtcGhhc2lzUG9zaXRpb24oQ1NTUHIKIHsKICAgICBBU1NFUlQo
cHJpbWl0aXZlVmFsdWUuaXNWYWx1ZUlEKCkpOwogCi0gICAgc3dpdGNoIChwcmltaXRpdmVWYWx1
ZS5nZXRWYWx1ZUlEKCkpIHsKKyAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSkg
ewogICAgIGNhc2UgQ1NTVmFsdWVPdmVyOgogICAgICAgICByZXR1cm4gVGV4dEVtcGhhc2lzUG9z
aXRpb25PdmVyOwogICAgIGNhc2UgQ1NTVmFsdWVVbmRlcjoKQEAgLTQ3OSw3ICs0NzksNyBAQCBp
bmxpbmUgRVRleHRBbGlnbiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUZXh0QWxpZ24o
U3R5bGVSZXNvbHZlciYgc3R5bGVSZQogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKICAgICBBU1NFUlQocHJpbWl0aXZlVmFsdWUu
aXNWYWx1ZUlEKCkpOwogCi0gICAgaWYgKHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQoKSAhPSBD
U1NWYWx1ZVdlYmtpdE1hdGNoUGFyZW50KQorICAgIGlmIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlE
KCkgIT0gQ1NTVmFsdWVXZWJraXRNYXRjaFBhcmVudCkKICAgICAgICAgcmV0dXJuIHByaW1pdGl2
ZVZhbHVlOwogCiAgICAgYXV0byogcGFyZW50U3R5bGUgPSBzdHlsZVJlc29sdmVyLnBhcmVudFN0
eWxlKCk7CkBAIC00OTUsMTIgKzQ5NSwxMiBAQCBpbmxpbmUgUmVmUHRyPENsaXBQYXRoT3BlcmF0
aW9uPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRDbGlwUGF0aChTdHlsZVJlcwogICAg
IGlmIChpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKSB7CiAgICAgICAgIGF1dG8mIHByaW1p
dGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKICAgICAgICAg
aWYgKHByaW1pdGl2ZVZhbHVlLnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX1VSSSkgewotICAgICAgICAgICAgU3RyaW5nIGNzc1VSTFZhbHVlID0gcHJpbWl0aXZlVmFs
dWUuZ2V0U3RyaW5nVmFsdWUoKTsKKyAgICAgICAgICAgIFN0cmluZyBjc3NVUkxWYWx1ZSA9IHBy
aW1pdGl2ZVZhbHVlLnN0cmluZ1ZhbHVlKCk7CiAgICAgICAgICAgICBVUkwgdXJsID0gc3R5bGVS
ZXNvbHZlci5kb2N1bWVudCgpLmNvbXBsZXRlVVJMKGNzc1VSTFZhbHVlKTsKICAgICAgICAgICAg
IC8vIEZJWE1FOiBJdCBkb2Vzbid0IHdvcmsgd2l0aCBleHRlcm5hbCBTVkcgcmVmZXJlbmNlcyAo
c2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjYxMzMpCiAgICAg
ICAgICAgICByZXR1cm4gUmVmZXJlbmNlQ2xpcFBhdGhPcGVyYXRpb246OmNyZWF0ZShjc3NVUkxW
YWx1ZSwgdXJsLmZyYWdtZW50SWRlbnRpZmllcigpKTsKICAgICAgICAgfQotICAgICAgICBBU1NF
UlQocHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZSk7CisgICAgICAg
IEFTU0VSVChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKTsKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC01MTEsMTUgKzUxMSwxNSBAQCBpbmxpbmUg
UmVmUHRyPENsaXBQYXRoT3BlcmF0aW9uPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRD
bGlwUGF0aChTdHlsZVJlcwogICAgICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlPihjdXJyZW50VmFsdWUuZ2V0KCkpOwogICAgICAgICBpZiAocHJp
bWl0aXZlVmFsdWUuaXNTaGFwZSgpKSB7CiAgICAgICAgICAgICBBU1NFUlQoIW9wZXJhdGlvbik7
Ci0gICAgICAgICAgICBvcGVyYXRpb24gPSBTaGFwZUNsaXBQYXRoT3BlcmF0aW9uOjpjcmVhdGUo
YmFzaWNTaGFwZUZvclZhbHVlKHN0eWxlUmVzb2x2ZXIuc3RhdGUoKS5jc3NUb0xlbmd0aENvbnZl
cnNpb25EYXRhKCksICpwcmltaXRpdmVWYWx1ZS5nZXRTaGFwZVZhbHVlKCkpKTsKKyAgICAgICAg
ICAgIG9wZXJhdGlvbiA9IFNoYXBlQ2xpcFBhdGhPcGVyYXRpb246OmNyZWF0ZShiYXNpY1NoYXBl
Rm9yVmFsdWUoc3R5bGVSZXNvbHZlci5zdGF0ZSgpLmNzc1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEo
KSwgKnByaW1pdGl2ZVZhbHVlLnNoYXBlVmFsdWUoKSkpOwogICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgQVNTRVJUKHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZUNv
bnRlbnRCb3gKLSAgICAgICAgICAgICAgICAgICB8fCBwcmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlE
KCkgPT0gQ1NTVmFsdWVCb3JkZXJCb3gKLSAgICAgICAgICAgICAgICAgICB8fCBwcmltaXRpdmVW
YWx1ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVQYWRkaW5nQm94Ci0gICAgICAgICAgICAgICAg
ICAgfHwgcHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlTWFyZ2luQm94Ci0g
ICAgICAgICAgICAgICAgICAgfHwgcHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWVJRCgpID09IENTU1Zh
bHVlRmlsbAotICAgICAgICAgICAgICAgICAgIHx8IHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQo
KSA9PSBDU1NWYWx1ZVN0cm9rZQotICAgICAgICAgICAgICAgICAgIHx8IHByaW1pdGl2ZVZhbHVl
LmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZVZpZXdCb3gpOworICAgICAgICAgICAgQVNTRVJUKHBy
aW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUNvbnRlbnRCb3gKKyAgICAgICAgICAg
ICAgICB8fCBwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVCb3JkZXJCb3gKKyAg
ICAgICAgICAgICAgICB8fCBwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVQYWRk
aW5nQm94CisgICAgICAgICAgICAgICAgfHwgcHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENT
U1ZhbHVlTWFyZ2luQm94CisgICAgICAgICAgICAgICAgfHwgcHJpbWl0aXZlVmFsdWUudmFsdWVJ
RCgpID09IENTU1ZhbHVlRmlsbAorICAgICAgICAgICAgICAgIHx8IHByaW1pdGl2ZVZhbHVlLnZh
bHVlSUQoKSA9PSBDU1NWYWx1ZVN0cm9rZQorICAgICAgICAgICAgICAgIHx8IHByaW1pdGl2ZVZh
bHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZVZpZXdCb3gpOwogICAgICAgICAgICAgQVNTRVJUKHJl
ZmVyZW5jZUJveCA9PSBCb3hNaXNzaW5nKTsKICAgICAgICAgICAgIHJlZmVyZW5jZUJveCA9IHBy
aW1pdGl2ZVZhbHVlOwogICAgICAgICB9CkBAIC01MzksNyArNTM5LDcgQEAgaW5saW5lIEVSZXNp
emUgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UmVzaXplKFN0eWxlUmVzb2x2ZXImIHN0
eWxlUmVzb2x2ZXIKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlPih2YWx1ZSk7CiAKICAgICBFUmVzaXplIHJlc2l6ZSA9IFJFU0laRV9OT05FOwot
ICAgIGlmIChwcmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVBdXRvKSB7Cisg
ICAgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUF1dG8pIHsKICAgICAg
ICAgaWYgKFNldHRpbmdzKiBzZXR0aW5ncyA9IHN0eWxlUmVzb2x2ZXIuZG9jdW1lbnQoKS5zZXR0
aW5ncygpKQogICAgICAgICAgICAgcmVzaXplID0gc2V0dGluZ3MtPnRleHRBcmVhc0FyZVJlc2l6
YWJsZSgpID8gUkVTSVpFX0JPVEggOiBSRVNJWkVfTk9ORTsKICAgICB9IGVsc2UKQEAgLTU1MSwx
OCArNTUxLDE4IEBAIGlubGluZSBFUmVzaXplIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVy
dFJlc2l6ZShTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyCiBpbmxpbmUgaW50IFN0eWxlQnVp
bGRlckNvbnZlcnRlcjo6Y29udmVydE1hcnF1ZWVSZXBldGl0aW9uKFN0eWxlUmVzb2x2ZXImLCBD
U1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwotICAgIGlmIChwcmltaXRpdmVWYWx1ZS5nZXRWYWx1
ZUlEKCkgPT0gQ1NTVmFsdWVJbmZpbml0ZSkKKyAgICBpZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJ
RCgpID09IENTU1ZhbHVlSW5maW5pdGUpCiAgICAgICAgIHJldHVybiAtMTsgLy8gLTEgbWVhbnMg
cmVwZWF0IGZvcmV2ZXIuCiAKICAgICBBU1NFUlQocHJpbWl0aXZlVmFsdWUuaXNOdW1iZXIoKSk7
Ci0gICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlLmdldEludFZhbHVlKCk7CisgICAgcmV0dXJuIHBy
aW1pdGl2ZVZhbHVlLmludFZhbHVlKCk7CiB9CiAKIGlubGluZSBpbnQgU3R5bGVCdWlsZGVyQ29u
dmVydGVyOjpjb252ZXJ0TWFycXVlZVNwZWVkKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYgdmFs
dWUpCiB7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZT4odmFsdWUpOwogICAgIGludCBzcGVlZCA9IDg1OwotICAgIGlmIChDU1NWYWx1ZUlEIGlk
ZW50ID0gcHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWVJRCgpKSB7CisgICAgaWYgKENTU1ZhbHVlSUQg
aWRlbnQgPSBwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkpIHsKICAgICAgICAgc3dpdGNoIChpZGVu
dCkgewogICAgICAgICBjYXNlIENTU1ZhbHVlU2xvdzoKICAgICAgICAgICAgIHNwZWVkID0gNTAw
OyAvLyA1MDAgbXNlYy4KQEAgLTU4Miw3ICs1ODIsNyBAQCBpbmxpbmUgaW50IFN0eWxlQnVpbGRl
ckNvbnZlcnRlcjo6Y29udmVydE1hcnF1ZWVTcGVlZChTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUm
CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIEZvciBzY3JvbGxhbW91bnQgc3VwcG9ydC4KICAgICAg
ICAgQVNTRVJUKHByaW1pdGl2ZVZhbHVlLmlzTnVtYmVyKCkpOwotICAgICAgICBzcGVlZCA9IHBy
aW1pdGl2ZVZhbHVlLmdldEludFZhbHVlKCk7CisgICAgICAgIHNwZWVkID0gcHJpbWl0aXZlVmFs
dWUuaW50VmFsdWUoKTsKICAgICB9CiAgICAgcmV0dXJuIHNwZWVkOwogfQpAQCAtNTkwLDcgKzU5
MCw3IEBAIGlubGluZSBpbnQgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TWFycXVlZVNw
ZWVkKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYKIGlubGluZSBQYXNzUmVmUHRyPFF1b3Rlc0Rh
dGE+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFF1b3RlcyhTdHlsZVJlc29sdmVyJiwg
Q1NTVmFsdWUmIHZhbHVlKQogewogICAgIGlmIChpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUp
KSB7Ci0gICAgICAgIEFTU0VSVChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLmdl
dFZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUpOworICAgICAgICBBU1NFUlQoZG93bmNhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWU+KHZhbHVlKS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKTsKICAgICAg
ICAgcmV0dXJuIFF1b3Rlc0RhdGE6OmNyZWF0ZShWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3Ry
aW5nPj4oKSk7CiAgICAgfQogCkBAIC02MDMsOCArNjAzLDggQEAgaW5saW5lIFBhc3NSZWZQdHI8
UXVvdGVzRGF0YT4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UXVvdGVzKFN0eWxlUmVz
b2x2ZXIKICAgICAgICAgQ1NTVmFsdWUqIHNlY29uZCA9IGxpc3QuaXRlbShpICsgMSk7CiAgICAg
ICAgIGlmICghc2Vjb25kKQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIFN0cmluZyBzdGFy
dFF1b3RlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCpmaXJzdCkuZ2V0U3RyaW5nVmFs
dWUoKTsKLSAgICAgICAgU3RyaW5nIGVuZFF1b3RlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWU+KCpzZWNvbmQpLmdldFN0cmluZ1ZhbHVlKCk7CisgICAgICAgIFN0cmluZyBzdGFydFF1b3Rl
ID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCpmaXJzdCkuc3RyaW5nVmFsdWUoKTsKKyAg
ICAgICAgU3RyaW5nIGVuZFF1b3RlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCpzZWNv
bmQpLnN0cmluZ1ZhbHVlKCk7CiAgICAgICAgIHF1b3Rlcy5hcHBlbmQoc3RkOjptYWtlX3BhaXIo
c3RhcnRRdW90ZSwgZW5kUXVvdGUpKTsKICAgICB9CiAgICAgcmV0dXJuIFF1b3Rlc0RhdGE6OmNy
ZWF0ZShxdW90ZXMpOwpAQCAtNjI3LDcgKzYyNyw3IEBAIGlubGluZSBUZXh0VW5kZXJsaW5lUG9z
aXRpb24gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VGV4dFVuZGVybGluZVBvc2l0aW9u
CiBpbmxpbmUgUmVmUHRyPFN0eWxlUmVmbGVjdGlvbj4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpj
b252ZXJ0UmVmbGVjdGlvbihTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYg
dmFsdWUpCiB7CiAgICAgaWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpIHsKLSAgICAg
ICAgQVNTRVJUKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkuZ2V0VmFsdWVJRCgp
ID09IENTU1ZhbHVlTm9uZSk7CisgICAgICAgIEFTU0VSVChkb3duY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZT4odmFsdWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUpOwogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICB9CiAKQEAgLTY0OSwxNSArNjQ5LDE1IEBAIGlubGluZSBJbnRTaXplIFN0
eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEluaXRpYWxMZXR0ZXIoU3R5bGVSZXNvbHZlciYs
IENTU1ZhCiB7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZT4odmFsdWUpOwogCi0gICAgaWYgKHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQoKSA9
PSBDU1NWYWx1ZU5vcm1hbCkKKyAgICBpZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENT
U1ZhbHVlTm9ybWFsKQogICAgICAgICByZXR1cm4gSW50U2l6ZSgpOwogCi0gICAgUGFpciogcGFp
ciA9IHByaW1pdGl2ZVZhbHVlLmdldFBhaXJWYWx1ZSgpOworICAgIFBhaXIqIHBhaXIgPSBwcmlt
aXRpdmVWYWx1ZS5wYWlyVmFsdWUoKTsKICAgICBBU1NFUlQocGFpcik7CiAgICAgQVNTRVJUKHBh
aXItPmZpcnN0KCkpOwogICAgIEFTU0VSVChwYWlyLT5zZWNvbmQoKSk7CiAKLSAgICByZXR1cm4g
SW50U2l6ZShwYWlyLT5maXJzdCgpLT5nZXRJbnRWYWx1ZSgpLCBwYWlyLT5zZWNvbmQoKS0+Z2V0
SW50VmFsdWUoKSk7CisgICAgcmV0dXJuIEludFNpemUocGFpci0+Zmlyc3QoKS0+aW50VmFsdWUo
KSwgcGFpci0+c2Vjb25kKCktPmludFZhbHVlKCkpOwogfQogCiBpbmxpbmUgZmxvYXQgU3R5bGVC
dWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VGV4dFN0cm9rZVdpZHRoKFN0eWxlUmVzb2x2ZXImIHN0
eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKQEAgLTY2NSwxNCArNjY1LDE0IEBAIGlubGlu
ZSBmbG9hdCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUZXh0U3Ryb2tlV2lkdGgoU3R5
bGVSZXNvbHZlciYgc3R5bGVSCiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwogCiAgICAgZmxvYXQgd2lkdGggPSAwOwotICAgIHN3
aXRjaCAocHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWVJRCgpKSB7CisgICAgc3dpdGNoIChwcmltaXRp
dmVWYWx1ZS52YWx1ZUlEKCkpIHsKICAgICBjYXNlIENTU1ZhbHVlVGhpbjoKICAgICBjYXNlIENT
U1ZhbHVlTWVkaXVtOgogICAgIGNhc2UgQ1NTVmFsdWVUaGljazogewogICAgICAgICBkb3VibGUg
cmVzdWx0ID0gMS4wIC8gNDg7Ci0gICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlE
KCkgPT0gQ1NTVmFsdWVNZWRpdW0pCisgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlE
KCkgPT0gQ1NTVmFsdWVNZWRpdW0pCiAgICAgICAgICAgICByZXN1bHQgKj0gMzsKLSAgICAgICAg
ZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlVGhpY2spCisg
ICAgICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZVRoaWNr
KQogICAgICAgICAgICAgcmVzdWx0ICo9IDU7CiAgICAgICAgIFJlZjxDU1NQcmltaXRpdmVWYWx1
ZT4gZW1zVmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShyZXN1bHQsIENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfRU1TKSk7CiAgICAgICAgIHdpZHRoID0gY29udmVydENvbXB1dGVkTGVuZ3Ro
PGZsb2F0PihzdHlsZVJlc29sdmVyLCBlbXNWYWx1ZSk7CkBAIC02OTMsNyArNjkzLDcgQEAgaW5s
aW5lIGZsb2F0IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRleHRTdHJva2VXaWR0aChT
dHlsZVJlc29sdmVyJiBzdHlsZVIKIGlubGluZSBMaW5lQm94Q29udGFpbiBTdHlsZUJ1aWxkZXJD
b252ZXJ0ZXI6OmNvbnZlcnRMaW5lQm94Q29udGFpbihTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUm
IHZhbHVlKQogewogICAgIGlmIChpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKSB7Ci0gICAg
ICAgIEFTU0VSVChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLmdldFZhbHVlSUQo
KSA9PSBDU1NWYWx1ZU5vbmUpOworICAgICAgICBBU1NFUlQoZG93bmNhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWU+KHZhbHVlKS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKTsKICAgICAgICAgcmV0dXJu
IExpbmVCb3hDb250YWluTm9uZTsKICAgICB9CiAKQEAgLTcwNCw3ICs3MDQsNyBAQCBpbmxpbmUg
VGV4dERlY29yYXRpb25Ta2lwIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6dmFsdWVUb0RlY29yYXRp
b25Ta2lwKGNvbnN0IENTUwogewogICAgIEFTU0VSVChwcmltaXRpdmVWYWx1ZS5pc1ZhbHVlSUQo
KSk7CiAKLSAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQoKSkgeworICAgIHN3
aXRjaCAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpKSB7CiAgICAgY2FzZSBDU1NWYWx1ZUF1dG86
CiAgICAgICAgIHJldHVybiBUZXh0RGVjb3JhdGlvblNraXBBdXRvOwogICAgIGNhc2UgQ1NTVmFs
dWVOb25lOgpAQCAtNzQxLDcgKzc0MSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0ltYWdlU2hh
cGUoY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogaW5saW5lIFBhc3NSZWZQdHI8U2hhcGVWYWx1ZT4g
U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U2hhcGVWYWx1ZShTdHlsZVJlc29sdmVyJiBz
dHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgaWYgKGlzPENTU1ByaW1pdGl2
ZVZhbHVlPih2YWx1ZSkpIHsKLSAgICAgICAgQVNTRVJUKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlPih2YWx1ZSkuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZSk7CisgICAgICAgIEFTU0VS
VChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1
ZU5vbmUpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTc1MywxMSArNzUz
LDExIEBAIGlubGluZSBQYXNzUmVmUHRyPFNoYXBlVmFsdWU+IFN0eWxlQnVpbGRlckNvbnZlcnRl
cjo6Y29udmVydFNoYXBlVmFsdWUoU3R5bGVSZXNvCiAgICAgZm9yIChhdXRvJiBjdXJyZW50VmFs
dWUgOiBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KHZhbHVlKSkgewogICAgICAgICBDU1NQcmltaXRp
dmVWYWx1ZSYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oY3Vy
cmVudFZhbHVlLmdldCgpKTsKICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLmlzU2hhcGUoKSkK
LSAgICAgICAgICAgIHNoYXBlID0gYmFzaWNTaGFwZUZvclZhbHVlKHN0eWxlUmVzb2x2ZXIuc3Rh
dGUoKS5jc3NUb0xlbmd0aENvbnZlcnNpb25EYXRhKCksICpwcmltaXRpdmVWYWx1ZS5nZXRTaGFw
ZVZhbHVlKCkpOwotICAgICAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkg
PT0gQ1NTVmFsdWVDb250ZW50Qm94Ci0gICAgICAgICAgICB8fCBwcmltaXRpdmVWYWx1ZS5nZXRW
YWx1ZUlEKCkgPT0gQ1NTVmFsdWVCb3JkZXJCb3gKLSAgICAgICAgICAgIHx8IHByaW1pdGl2ZVZh
bHVlLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZVBhZGRpbmdCb3gKLSAgICAgICAgICAgIHx8IHBy
aW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZU1hcmdpbkJveCkKKyAgICAgICAg
ICAgIHNoYXBlID0gYmFzaWNTaGFwZUZvclZhbHVlKHN0eWxlUmVzb2x2ZXIuc3RhdGUoKS5jc3NU
b0xlbmd0aENvbnZlcnNpb25EYXRhKCksICpwcmltaXRpdmVWYWx1ZS5zaGFwZVZhbHVlKCkpOwor
ICAgICAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVDb250
ZW50Qm94CisgICAgICAgICAgICB8fCBwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFs
dWVCb3JkZXJCb3gKKyAgICAgICAgICAgIHx8IHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBD
U1NWYWx1ZVBhZGRpbmdCb3gKKyAgICAgICAgICAgIHx8IHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQo
KSA9PSBDU1NWYWx1ZU1hcmdpbkJveCkKICAgICAgICAgICAgIHJlZmVyZW5jZUJveCA9IHByaW1p
dGl2ZVZhbHVlOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwpAQCAtNzg3LDE0ICs3ODcsMTQgQEAgaW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxT
bmFwUG9pbnRzPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTY3JvbGxTbmEKICAgICBh
dXRvIHBvaW50cyA9IHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsU25hcFBvaW50cz4oKTsKIAogICAg
IGlmIChpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKSB7Ci0gICAgICAgIEFTU0VSVChkb3du
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZUVs
ZW1lbnRzKTsKKyAgICAgICAgQVNTRVJUKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1
ZSkudmFsdWVJRCgpID09IENTU1ZhbHVlRWxlbWVudHMpOwogICAgICAgICBwb2ludHMtPnVzZXNF
bGVtZW50cyA9IHRydWU7CiAgICAgICAgIHJldHVybiBwb2ludHM7CiAgICAgfQogCiAgICAgZm9y
IChhdXRvJiBjdXJyZW50VmFsdWUgOiBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KHZhbHVlKSkgewog
ICAgICAgICBhdXRvJiBpdGVtVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oY3Vy
cmVudFZhbHVlLmdldCgpKTsKLSAgICAgICAgaWYgKGF1dG8qIGxlbmd0aFJlcGVhdCA9IGl0ZW1W
YWx1ZS5nZXRMZW5ndGhSZXBlYXRWYWx1ZSgpKSB7CisgICAgICAgIGlmIChhdXRvKiBsZW5ndGhS
ZXBlYXQgPSBpdGVtVmFsdWUubGVuZ3RoUmVwZWF0VmFsdWUoKSkgewogICAgICAgICAgICAgaWYg
KGF1dG8qIGludGVydmFsID0gbGVuZ3RoUmVwZWF0LT5pbnRlcnZhbCgpKSB7CiAgICAgICAgICAg
ICAgICAgcG9pbnRzLT5yZXBlYXRPZmZzZXQgPSBwYXJzZVNuYXBDb29yZGluYXRlKHN0eWxlUmVz
b2x2ZXIsICppbnRlcnZhbCk7CiAgICAgICAgICAgICAgICAgcG9pbnRzLT5oYXNSZXBlYXQgPSB0
cnVlOwpAQCAtODI5LDE1ICs4MjksMTUgQEAgaW5saW5lIFZlY3RvcjxMZW5ndGhTaXplPiBTdHls
ZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTY3JvbGxTbmFwQ29vcmRpbmF0ZXMoU3QKICNpZiBF
TkFCTEUoQ1NTX0dSSURfTEFZT1VUKQogaW5saW5lIEdyaWRMZW5ndGggU3R5bGVCdWlsZGVyQ29u
dmVydGVyOjpjcmVhdGVHcmlkVHJhY2tCcmVhZHRoKENTU1ByaW1pdGl2ZVZhbHVlJiBwcmltaXRp
dmVWYWx1ZSwgU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlcikKIHsKLSAgICBpZiAocHJpbWl0
aXZlVmFsdWUuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlV2Via2l0TWluQ29udGVudCkKKyAgICBp
ZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlV2Via2l0TWluQ29udGVudCkK
ICAgICAgICAgcmV0dXJuIExlbmd0aChNaW5Db250ZW50KTsKIAotICAgIGlmIChwcmltaXRpdmVW
YWx1ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVXZWJraXRNYXhDb250ZW50KQorICAgIGlmIChw
cmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVXZWJraXRNYXhDb250ZW50KQogICAg
ICAgICByZXR1cm4gTGVuZ3RoKE1heENvbnRlbnQpOwogCiAgICAgLy8gRnJhY3Rpb25hbCB1bml0
LgogICAgIGlmIChwcmltaXRpdmVWYWx1ZS5pc0ZsZXgoKSkKLSAgICAgICAgcmV0dXJuIEdyaWRM
ZW5ndGgocHJpbWl0aXZlVmFsdWUuZ2V0RG91YmxlVmFsdWUoKSk7CisgICAgICAgIHJldHVybiBH
cmlkTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLmRvdWJsZVZhbHVlKCkpOwogCiAgICAgcmV0dXJuIHBy
aW1pdGl2ZVZhbHVlLmNvbnZlcnRUb0xlbmd0aDxGaXhlZEludGVnZXJDb252ZXJzaW9uIHwgUGVy
Y2VudENvbnZlcnNpb24gfCBDYWxjdWxhdGVkQ29udmVyc2lvbiB8IEF1dG9Db252ZXJzaW9uPihz
dHlsZVJlc29sdmVyLnN0YXRlKCkuY3NzVG9MZW5ndGhDb252ZXJzaW9uRGF0YSgpKTsKIH0KQEAg
LTg2NCw3ICs4NjQsNyBAQCBzdGF0aWMgdm9pZCBjcmVhdGVHcmlkTGluZU5hbWVzTGlzdChjb25z
dCBDU1NWYWx1ZSYgdmFsdWUsIHVuc2lnbmVkIGN1cnJlbnROYW1lZAogICAgIEFTU0VSVCh2YWx1
ZS5pc0dyaWRMaW5lTmFtZXNWYWx1ZSgpKTsKIAogICAgIGZvciAoYXV0byYgbmFtZWRHcmlkTGlu
ZVZhbHVlIDogZG93bmNhc3Q8Q1NTR3JpZExpbmVOYW1lc1ZhbHVlPih2YWx1ZSkpIHsKLSAgICAg
ICAgU3RyaW5nIG5hbWVkR3JpZExpbmUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4obmFt
ZWRHcmlkTGluZVZhbHVlLmdldCgpKS5nZXRTdHJpbmdWYWx1ZSgpOworICAgICAgICBTdHJpbmcg
bmFtZWRHcmlkTGluZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihuYW1lZEdyaWRMaW5l
VmFsdWUuZ2V0KCkpLnN0cmluZ1ZhbHVlKCk7CiAgICAgICAgIGF1dG8gcmVzdWx0ID0gbmFtZWRH
cmlkTGluZXMuYWRkKG5hbWVkR3JpZExpbmUsIFZlY3Rvcjx1bnNpZ25lZD4oKSk7CiAgICAgICAg
IHJlc3VsdC5pdGVyYXRvci0+dmFsdWUuYXBwZW5kKGN1cnJlbnROYW1lZEdyaWRMaW5lKTsKICAg
ICAgICAgYXV0byBvcmRlcmVkUmVzdWx0ID0gb3JkZXJlZE5hbWVkR3JpZExpbmVzLmFkZChjdXJy
ZW50TmFtZWRHcmlkTGluZSwgVmVjdG9yPFN0cmluZz4oKSk7CkBAIC04OTEsNyArODkxLDcgQEAg
aW5saW5lIGJvb2wgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjcmVhdGVHcmlkVHJhY2tMaXN0KENT
U1ZhbHVlJiB2YWx1ZSwgVHJhY2tzRGEKIHsKICAgICAvLyBIYW5kbGUgJ25vbmUnLgogICAgIGlm
IChpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKQotICAgICAgICByZXR1cm4gZG93bmNhc3Q8
Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lOwor
ICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS52YWx1ZUlE
KCkgPT0gQ1NTVmFsdWVOb25lOwogCiAgICAgaWYgKCFpczxDU1NWYWx1ZUxpc3Q+KHZhbHVlKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtOTM5LDExICs5MzksMTEgQEAgaW5saW5lIGJvb2wg
U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjcmVhdGVHcmlkUG9zaXRpb24oQ1NTVmFsdWUmIHZhbHVl
LCBHcmlkUG9zaXQKICAgICAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZT4odmFsdWUpOwogICAgICAgICAvLyBXZSB0cmFuc2xhdGUgPGlkZW50PiB0
byA8c3RyaW5nPiBkdXJpbmcgcGFyc2luZyBhcyBpdCBtYWtlcyBoYW5kbGluZyBpdCBzaW1wbGVy
LgogICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUuaXNTdHJpbmcoKSkgewotICAgICAgICAgICAg
cG9zaXRpb24uc2V0TmFtZWRHcmlkQXJlYShwcmltaXRpdmVWYWx1ZS5nZXRTdHJpbmdWYWx1ZSgp
KTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnNldE5hbWVkR3JpZEFyZWEocHJpbWl0aXZlVmFsdWUu
c3RyaW5nVmFsdWUoKSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCi0g
ICAgICAgIEFTU0VSVChwcmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVBdXRv
KTsKKyAgICAgICAgQVNTRVJUKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUF1
dG8pOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTk1Myw3ICs5NTMsNyBAQCBp
bmxpbmUgYm9vbCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNyZWF0ZUdyaWRQb3NpdGlvbihDU1NW
YWx1ZSYgdmFsdWUsIEdyaWRQb3NpdAogICAgIGF1dG8gaXQgPSB2YWx1ZXMuYmVnaW4oKTsKICAg
ICBDU1NQcmltaXRpdmVWYWx1ZSogY3VycmVudFZhbHVlID0gJmRvd25jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlPihpdC0+Z2V0KCkpOwogICAgIGJvb2wgaXNTcGFuUG9zaXRpb24gPSBmYWxzZTsKLSAg
ICBpZiAoY3VycmVudFZhbHVlLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVTcGFuKSB7CisgICAg
aWYgKGN1cnJlbnRWYWx1ZS0+dmFsdWVJRCgpID09IENTU1ZhbHVlU3BhbikgewogICAgICAgICBp
c1NwYW5Qb3NpdGlvbiA9IHRydWU7CiAgICAgICAgICsraXQ7CiAgICAgICAgIGN1cnJlbnRWYWx1
ZSA9IGl0ICE9IHZhbHVlcy5lbmQoKSA/ICZkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oaXQt
PmdldCgpKSA6IG51bGxwdHI7CkBAIC05NjEsMTQgKzk2MSwxNCBAQCBpbmxpbmUgYm9vbCBTdHls
ZUJ1aWxkZXJDb252ZXJ0ZXI6OmNyZWF0ZUdyaWRQb3NpdGlvbihDU1NWYWx1ZSYgdmFsdWUsIEdy
aWRQb3NpdAogCiAgICAgaW50IGdyaWRMaW5lTnVtYmVyID0gMDsKICAgICBpZiAoY3VycmVudFZh
bHVlICYmIGN1cnJlbnRWYWx1ZS0+aXNOdW1iZXIoKSkgewotICAgICAgICBncmlkTGluZU51bWJl
ciA9IGN1cnJlbnRWYWx1ZS0+Z2V0SW50VmFsdWUoKTsKKyAgICAgICAgZ3JpZExpbmVOdW1iZXIg
PSBjdXJyZW50VmFsdWUtPmludFZhbHVlKCk7CiAgICAgICAgICsraXQ7CiAgICAgICAgIGN1cnJl
bnRWYWx1ZSA9IGl0ICE9IHZhbHVlcy5lbmQoKSA/ICZkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZT4oaXQtPmdldCgpKSA6IG51bGxwdHI7CiAgICAgfQogCiAgICAgU3RyaW5nIGdyaWRMaW5lTmFt
ZTsKICAgICBpZiAoY3VycmVudFZhbHVlICYmIGN1cnJlbnRWYWx1ZS0+aXNTdHJpbmcoKSkgewot
ICAgICAgICBncmlkTGluZU5hbWUgPSBjdXJyZW50VmFsdWUtPmdldFN0cmluZ1ZhbHVlKCk7Cisg
ICAgICAgIGdyaWRMaW5lTmFtZSA9IGN1cnJlbnRWYWx1ZS0+c3RyaW5nVmFsdWUoKTsKICAgICAg
ICAgKytpdDsKICAgICB9CiAKQEAgLTEwMzUsMTUgKzEwMzUsMTUgQEAgaW5saW5lIEdyaWRBdXRv
RmxvdyBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRHcmlkQXV0b0Zsb3coU3R5bGVSZXNv
bHZlciYsIEMKICAgICBhdXRvKiBzZWNvbmQgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4o
bGlzdC5pdGVtKDEpKTsKIAogICAgIEdyaWRBdXRvRmxvdyBhdXRvRmxvdyA9IFJlbmRlclN0eWxl
Ojppbml0aWFsR3JpZEF1dG9GbG93KCk7Ci0gICAgc3dpdGNoIChmaXJzdC5nZXRWYWx1ZUlEKCkp
IHsKKyAgICBzd2l0Y2ggKGZpcnN0LnZhbHVlSUQoKSkgewogICAgIGNhc2UgQ1NTVmFsdWVSb3c6
Ci0gICAgICAgIGlmIChzZWNvbmQgJiYgc2Vjb25kLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVE
ZW5zZSkKKyAgICAgICAgaWYgKHNlY29uZCAmJiBzZWNvbmQtPnZhbHVlSUQoKSA9PSBDU1NWYWx1
ZURlbnNlKQogICAgICAgICAgICAgYXV0b0Zsb3cgPSAgQXV0b0Zsb3dSb3dEZW5zZTsKICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgYXV0b0Zsb3cgPSBBdXRvRmxvd1JvdzsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBDU1NWYWx1ZUNvbHVtbjoKLSAgICAgICAgaWYgKHNlY29uZCAmJiBzZWNv
bmQtPmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZURlbnNlKQorICAgICAgICBpZiAoc2Vjb25kICYm
IHNlY29uZC0+dmFsdWVJRCgpID09IENTU1ZhbHVlRGVuc2UpCiAgICAgICAgICAgICBhdXRvRmxv
dyA9IEF1dG9GbG93Q29sdW1uRGVuc2U7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGF1dG9G
bG93ID0gQXV0b0Zsb3dDb2x1bW47CkBAIC0xMDcwLDE0ICsxMDcwLDE0IEBAIGlubGluZSBPcHRp
b25hbDxMZW5ndGg+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFdvcmRTcGFjaW5nKFN0
eWxlUmVzb2x2ZXImCiB7CiAgICAgT3B0aW9uYWw8TGVuZ3RoPiB3b3JkU3BhY2luZzsKICAgICBh
dXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7
Ci0gICAgaWYgKHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vcm1hbCkK
KyAgICBpZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlTm9ybWFsKQogICAg
ICAgICB3b3JkU3BhY2luZyA9IFJlbmRlclN0eWxlOjppbml0aWFsV29yZFNwYWNpbmcoKTsKICAg
ICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS5pc0xlbmd0aCgpKQogICAgICAgICB3b3JkU3BhY2lu
ZyA9IHByaW1pdGl2ZVZhbHVlLmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihjc3N0b0xlbmd0aENvbnZl
cnNpb25EYXRhV2l0aFRleHRab29tRmFjdG9yKHN0eWxlUmVzb2x2ZXIpKTsKICAgICBlbHNlIGlm
IChwcmltaXRpdmVWYWx1ZS5pc1BlcmNlbnRhZ2UoKSkKLSAgICAgICAgd29yZFNwYWNpbmcgPSBM
ZW5ndGgoY2xhbXBUbzxmbG9hdD4ocHJpbWl0aXZlVmFsdWUuZ2V0RG91YmxlVmFsdWUoKSwgbWlu
VmFsdWVGb3JDc3NMZW5ndGgsIG1heFZhbHVlRm9yQ3NzTGVuZ3RoKSwgUGVyY2VudCk7CisgICAg
ICAgIHdvcmRTcGFjaW5nID0gTGVuZ3RoKGNsYW1wVG88ZmxvYXQ+KHByaW1pdGl2ZVZhbHVlLmRv
dWJsZVZhbHVlKCksIG1pblZhbHVlRm9yQ3NzTGVuZ3RoLCBtYXhWYWx1ZUZvckNzc0xlbmd0aCks
IFBlcmNlbnQpOwogICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLmlzTnVtYmVyKCkpCi0gICAg
ICAgIHdvcmRTcGFjaW5nID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLmdldERvdWJsZVZhbHVlKCks
IEZpeGVkKTsKKyAgICAgICAgd29yZFNwYWNpbmcgPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUuZG91
YmxlVmFsdWUoKSwgRml4ZWQpOwogCiAgICAgcmV0dXJuIHdvcmRTcGFjaW5nOwogfQpAQCAtMTA4
NSwxNCArMTA4NSwxNCBAQCBpbmxpbmUgT3B0aW9uYWw8TGVuZ3RoPiBTdHlsZUJ1aWxkZXJDb252
ZXJ0ZXI6OmNvbnZlcnRXb3JkU3BhY2luZyhTdHlsZVJlc29sdmVyJgogaW5saW5lIE9wdGlvbmFs
PGZsb2F0PiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRQZXJzcGVjdGl2ZShTdHlsZVJl
c29sdmVyJiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0byYgcHJp
bWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwotICAgIGlm
IChwcmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKQorICAgIGlmIChw
cmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKQogICAgICAgICByZXR1cm4g
MC5mOwogCiAgICAgZmxvYXQgcGVyc3BlY3RpdmUgPSAtMTsKICAgICBpZiAocHJpbWl0aXZlVmFs
dWUuaXNMZW5ndGgoKSkKICAgICAgICAgcGVyc3BlY3RpdmUgPSBwcmltaXRpdmVWYWx1ZS5jb21w
dXRlTGVuZ3RoPGZsb2F0PihzdHlsZVJlc29sdmVyLnN0YXRlKCkuY3NzVG9MZW5ndGhDb252ZXJz
aW9uRGF0YSgpKTsKICAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS5pc051bWJlcigpKQotICAg
ICAgICBwZXJzcGVjdGl2ZSA9IHByaW1pdGl2ZVZhbHVlLmdldERvdWJsZVZhbHVlKCkgKiBzdHls
ZVJlc29sdmVyLnN0YXRlKCkuY3NzVG9MZW5ndGhDb252ZXJzaW9uRGF0YSgpLnpvb20oKTsKKyAg
ICAgICAgcGVyc3BlY3RpdmUgPSBwcmltaXRpdmVWYWx1ZS5kb3VibGVWYWx1ZSgpICogc3R5bGVS
ZXNvbHZlci5zdGF0ZSgpLmNzc1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoKS56b29tKCk7CiAgICAg
ZWxzZQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIApAQCAtMTEwMyw3ICsxMTAzLDcg
QEAgaW5saW5lIE9wdGlvbmFsPExlbmd0aD4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0
TWFycXVlZUluY3JlbWVudChTdHlsZVJlc28KIHsKICAgICBPcHRpb25hbDxMZW5ndGg+IG1hcnF1
ZWVMZW5ndGg7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZT4odmFsdWUpOwotICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWVJRCgp
KSB7CisgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkpIHsKICAgICBjYXNlIENT
U1ZhbHVlU21hbGw6CiAgICAgICAgIG1hcnF1ZWVMZW5ndGggPSBMZW5ndGgoMSwgRml4ZWQpOyAv
LyAxcHguCiAgICAgICAgIGJyZWFrOwpAQCAtMTEzNiw3ICsxMTM2LDcgQEAgaW5saW5lIE9wdGlv
bmFsPEZpbHRlck9wZXJhdGlvbnM+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEZpbHRl
ck9wZXJhdGlvbnMKIGlubGluZSBGb250RmVhdHVyZVNldHRpbmdzIFN0eWxlQnVpbGRlckNvbnZl
cnRlcjo6Y29udmVydEZvbnRGZWF0dXJlU2V0dGluZ3MoU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVl
JiB2YWx1ZSkKIHsKICAgICBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSkgewotICAg
ICAgICBBU1NFUlQoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS5nZXRWYWx1ZUlE
KCkgPT0gQ1NTVmFsdWVOb3JtYWwpOworICAgICAgICBBU1NFUlQoZG93bmNhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWU+KHZhbHVlKS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb3JtYWwpOwogICAgICAgICBy
ZXR1cm4geyB9OwogICAgIH0KIApAQCAtMTE1Miw3ICsxMTUyLDcgQEAgaW5saW5lIEZvbnRGZWF0
dXJlU2V0dGluZ3MgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Rm9udEZlYXR1cmVTZXR0
aW5ncyhTdHkKIGlubGluZSBGb250VmFyaWF0aW9uU2V0dGluZ3MgU3R5bGVCdWlsZGVyQ29udmVy
dGVyOjpjb252ZXJ0Rm9udFZhcmlhdGlvblNldHRpbmdzKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1
ZSYgdmFsdWUpCiB7CiAgICAgaWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpIHsKLSAg
ICAgICAgQVNTRVJUKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkuZ2V0VmFsdWVJ
RCgpID09IENTU1ZhbHVlTm9ybWFsKTsKKyAgICAgICAgQVNTRVJUKGRvd25jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlPih2YWx1ZSkudmFsdWVJRCgpID09IENTU1ZhbHVlTm9ybWFsKTsKICAgICAgICAg
cmV0dXJuIHsgfTsKICAgICB9CiAKQEAgLTExNjgsNyArMTE2OCw3IEBAIGlubGluZSBGb250VmFy
aWF0aW9uU2V0dGluZ3MgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Rm9udFZhcmlhdGlv
blNldHRpbmdzCiAjaWYgUExBVEZPUk0oSU9TKQogaW5saW5lIGJvb2wgU3R5bGVCdWlsZGVyQ29u
dmVydGVyOjpjb252ZXJ0VG91Y2hDYWxsb3V0KFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYgdmFs
dWUpCiB7Ci0gICAgcmV0dXJuICFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShkb3duY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLmdldFN0cmluZ1ZhbHVlKCksICJub25lIik7Cisg
ICAgcmV0dXJuICFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShkb3duY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZT4odmFsdWUpLnN0cmluZ1ZhbHVlKCksICJub25lIik7CiB9CiAjZW5kaWYKIApA
QCAtMTE4Miw3ICsxMTgyLDcgQEAgaW5saW5lIENvbG9yIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6
Y29udmVydFRhcEhpZ2hsaWdodENvbG9yKFN0eWxlUmVzb2x2ZXImIHN0eWwKICNpZiBFTkFCTEUo
QUNDRUxFUkFURURfT1ZFUkZMT1dfU0NST0xMSU5HKQogaW5saW5lIGJvb2wgU3R5bGVCdWlsZGVy
Q29udmVydGVyOjpjb252ZXJ0T3ZlcmZsb3dTY3JvbGxpbmcoU3R5bGVSZXNvbHZlciYsIENTU1Zh
bHVlJiB2YWx1ZSkKIHsKLSAgICByZXR1cm4gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZh
bHVlKS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVUb3VjaDsKKyAgICByZXR1cm4gZG93bmNhc3Q8
Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVUb3VjaDsKIH0K
ICNlbmRpZgogCkBAIC0xMjA2LDcgKzEyMDYsNyBAQCBpbmxpbmUgVmVjdG9yPFNWR0xlbmd0aD4g
U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U1ZHTGVuZ3RoVmVjdG9yKFN0eWxlUmVzbwog
aW5saW5lIFZlY3RvcjxTVkdMZW5ndGg+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFN0
cm9rZURhc2hBcnJheShTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFs
dWUpCiB7CiAgICAgaWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpIHsKLSAgICAgICAg
QVNTRVJUKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkuZ2V0VmFsdWVJRCgpID09
IENTU1ZhbHVlTm9uZSk7CisgICAgICAgIEFTU0VSVChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZT4odmFsdWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUpOwogICAgICAgICByZXR1cm4gU1ZH
UmVuZGVyU3R5bGU6OmluaXRpYWxTdHJva2VEYXNoQXJyYXkoKTsKICAgICB9CiAKQEAgLTEyMTYs
MTIgKzEyMTYsMTIgQEAgaW5saW5lIFZlY3RvcjxTVkdMZW5ndGg+IFN0eWxlQnVpbGRlckNvbnZl
cnRlcjo6Y29udmVydFN0cm9rZURhc2hBcnJheShTdHlsZVJlc28KIGlubGluZSBQYWludE9yZGVy
IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFBhaW50T3JkZXIoU3R5bGVSZXNvbHZlciYs
IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVl
KSkgewotICAgICAgICBBU1NFUlQoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS5n
ZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb3JtYWwpOworICAgICAgICBBU1NFUlQoZG93bmNhc3Q8
Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb3JtYWwpOwog
ICAgICAgICByZXR1cm4gUGFpbnRPcmRlck5vcm1hbDsKICAgICB9CiAKICAgICBhdXRvJiBvcmRl
clR5cGVMaXN0ID0gZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pih2YWx1ZSk7Ci0gICAgc3dpdGNoIChk
b3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKm9yZGVyVHlwZUxpc3QuaXRlbVdpdGhvdXRCb3Vu
ZHNDaGVjaygwKSkuZ2V0VmFsdWVJRCgpKSB7CisgICAgc3dpdGNoIChkb3duY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZT4oKm9yZGVyVHlwZUxpc3QuaXRlbVdpdGhvdXRCb3VuZHNDaGVjaygwKSkudmFs
dWVJRCgpKSB7CiAgICAgY2FzZSBDU1NWYWx1ZUZpbGw6CiAgICAgICAgIHJldHVybiBvcmRlclR5
cGVMaXN0Lmxlbmd0aCgpID4gMSA/IFBhaW50T3JkZXJGaWxsTWFya2VycyA6IFBhaW50T3JkZXJG
aWxsOwogICAgIGNhc2UgQ1NTVmFsdWVTdHJva2U6CkBAIC0xMjM3LDcgKzEyMzcsNyBAQCBpbmxp
bmUgUGFpbnRPcmRlciBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRQYWludE9yZGVyKFN0
eWxlUmVzb2x2ZXImLCBDU1NWYQogaW5saW5lIGZsb2F0IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6
Y29udmVydE9wYWNpdHkoU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBh
dXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7
Ci0gICAgZmxvYXQgb3BhY2l0eSA9IHByaW1pdGl2ZVZhbHVlLmdldEZsb2F0VmFsdWUoKTsKKyAg
ICBmbG9hdCBvcGFjaXR5ID0gcHJpbWl0aXZlVmFsdWUuZmxvYXRWYWx1ZSgpOwogICAgIGlmIChw
cmltaXRpdmVWYWx1ZS5pc1BlcmNlbnRhZ2UoKSkKICAgICAgICAgb3BhY2l0eSAvPSAxMDAuMGY7
CiAgICAgcmV0dXJuIG9wYWNpdHk7CkBAIC0xMjQ4LDcgKzEyNDgsNyBAQCBpbmxpbmUgU3RyaW5n
IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFNWR1VSSVJlZmVyZW5jZShTdHlsZVJlc29s
dmVyJiBzdHlsZQogICAgIFN0cmluZyBzOwogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93
bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKICAgICBpZiAocHJpbWl0aXZlVmFsdWUu
aXNVUkkoKSkKLSAgICAgICAgcyA9IHByaW1pdGl2ZVZhbHVlLmdldFN0cmluZ1ZhbHVlKCk7Cisg
ICAgICAgIHMgPSBwcmltaXRpdmVWYWx1ZS5zdHJpbmdWYWx1ZSgpOwogCiAgICAgcmV0dXJuIFNW
R1VSSVJlZmVyZW5jZTo6ZnJhZ21lbnRJZGVudGlmaWVyRnJvbUlSSVN0cmluZyhzLCBzdHlsZVJl
c29sdmVyLmRvY3VtZW50KCkpOwogfQpAQCAtMTI2Myw4ICsxMjYzLDggQEAgaW5saW5lIFN0eWxl
U2VsZkFsaWdubWVudERhdGEgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U2VsZk9yRGVm
YXVsdEFsaWdubWUKIHsKICAgICBTdHlsZVNlbGZBbGlnbm1lbnREYXRhIGFsaWdubWVudERhdGEg
PSBSZW5kZXJTdHlsZTo6aW5pdGlhbFNlbGZBbGlnbm1lbnQoKTsKICAgICBhdXRvJiBwcmltaXRp
dmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7Ci0gICAgaWYgKFBh
aXIqIHBhaXJWYWx1ZSA9IHByaW1pdGl2ZVZhbHVlLmdldFBhaXJWYWx1ZSgpKSB7Ci0gICAgICAg
IGlmIChwYWlyVmFsdWUtPmZpcnN0KCktPmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZUxlZ2FjeSkg
eworICAgIGlmIChQYWlyKiBwYWlyVmFsdWUgPSBwcmltaXRpdmVWYWx1ZS5wYWlyVmFsdWUoKSkg
eworICAgICAgICBpZiAocGFpclZhbHVlLT5maXJzdCgpLT52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVM
ZWdhY3kpIHsKICAgICAgICAgICAgIGFsaWdubWVudERhdGEuc2V0UG9zaXRpb25UeXBlKExlZ2Fj
eVBvc2l0aW9uKTsKICAgICAgICAgICAgIGFsaWdubWVudERhdGEuc2V0UG9zaXRpb24oKnBhaXJW
YWx1ZS0+c2Vjb25kKCkpOwogICAgICAgICB9IGVsc2UgewpAQCAtMTI4MiwxNyArMTI4MiwxNyBA
QCBpbmxpbmUgU3R5bGVDb250ZW50QWxpZ25tZW50RGF0YSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6
OmNvbnZlcnRDb250ZW50QWxpZ25tZW50RAogI2lmIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQpCiAg
ICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuaXNDU1NHcmlk
TGF5b3V0RW5hYmxlZCgpKSB7CiAgICAgICAgIGF1dG8mIGNvbnRlbnRWYWx1ZSA9IGRvd25jYXN0
PENTU0NvbnRlbnREaXN0cmlidXRpb25WYWx1ZT4odmFsdWUpOwotICAgICAgICBpZiAoY29udGVu
dFZhbHVlLmRpc3RyaWJ1dGlvbigpLT5nZXRWYWx1ZUlEKCkgIT0gQ1NTVmFsdWVJbnZhbGlkKQor
ICAgICAgICBpZiAoY29udGVudFZhbHVlLmRpc3RyaWJ1dGlvbigpLT52YWx1ZUlEKCkgIT0gQ1NT
VmFsdWVJbnZhbGlkKQogICAgICAgICAgICAgYWxpZ25tZW50RGF0YS5zZXREaXN0cmlidXRpb24o
Y29udGVudFZhbHVlLmRpc3RyaWJ1dGlvbigpLmdldCgpKTsKLSAgICAgICAgaWYgKGNvbnRlbnRW
YWx1ZS5wb3NpdGlvbigpLT5nZXRWYWx1ZUlEKCkgIT0gQ1NTVmFsdWVJbnZhbGlkKQorICAgICAg
ICBpZiAoY29udGVudFZhbHVlLnBvc2l0aW9uKCktPnZhbHVlSUQoKSAhPSBDU1NWYWx1ZUludmFs
aWQpCiAgICAgICAgICAgICBhbGlnbm1lbnREYXRhLnNldFBvc2l0aW9uKGNvbnRlbnRWYWx1ZS5w
b3NpdGlvbigpLmdldCgpKTsKLSAgICAgICAgaWYgKGNvbnRlbnRWYWx1ZS5vdmVyZmxvdygpLT5n
ZXRWYWx1ZUlEKCkgIT0gQ1NTVmFsdWVJbnZhbGlkKQorICAgICAgICBpZiAoY29udGVudFZhbHVl
Lm92ZXJmbG93KCktPnZhbHVlSUQoKSAhPSBDU1NWYWx1ZUludmFsaWQpCiAgICAgICAgICAgICBh
bGlnbm1lbnREYXRhLnNldE92ZXJmbG93KGNvbnRlbnRWYWx1ZS5vdmVyZmxvdygpLmdldCgpKTsK
ICAgICAgICAgcmV0dXJuIGFsaWdubWVudERhdGE7CiAgICAgfQogI2VuZGlmCiAgICAgYXV0byYg
cHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwotICAg
IHN3aXRjaCAocHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWVJRCgpKSB7CisgICAgc3dpdGNoIChwcmlt
aXRpdmVWYWx1ZS52YWx1ZUlEKCkpIHsKICAgICBjYXNlIENTU1ZhbHVlU3RyZXRjaDoKICAgICBj
YXNlIENTU1ZhbHVlU3BhY2VCZXR3ZWVuOgogICAgIGNhc2UgQ1NTVmFsdWVTcGFjZUFyb3VuZDoK
QEAgLTEzMTEsNyArMTMxMSw3IEBAIGlubGluZSBTdHlsZUNvbnRlbnRBbGlnbm1lbnREYXRhIFN0
eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydENvbnRlbnRBbGlnbm1lbnRECiAKIGlubGluZSBF
R2x5cGhPcmllbnRhdGlvbiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRHbHlwaE9yaWVu
dGF0aW9uKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYgdmFsdWUpCiB7Ci0gICAgZmxvYXQgYW5n
bGUgPSBmYWJzZihmbW9kZihkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLmdldEZs
b2F0VmFsdWUoKSwgMzYwLjBmKSk7CisgICAgZmxvYXQgYW5nbGUgPSBmYWJzZihmbW9kZihkb3du
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLmZsb2F0VmFsdWUoKSwgMzYwLjBmKSk7CiAg
ICAgaWYgKGFuZ2xlIDw9IDQ1LjBmIHx8IGFuZ2xlID4gMzE1LjBmKQogICAgICAgICByZXR1cm4g
R09fMERFRzsKICAgICBpZiAoYW5nbGUgPiA0NS4wZiAmJiBhbmdsZSA8PSAxMzUuMGYpCkBAIC0x
MzIzLDcgKzEzMjMsNyBAQCBpbmxpbmUgRUdseXBoT3JpZW50YXRpb24gU3R5bGVCdWlsZGVyQ29u
dmVydGVyOjpjb252ZXJ0R2x5cGhPcmllbnRhdGlvbihTdHlsZVJlcwogCiBpbmxpbmUgRUdseXBo
T3JpZW50YXRpb24gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0R2x5cGhPcmllbnRhdGlv
bk9yQXV0byhTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCiB7
Ci0gICAgaWYgKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkuZ2V0VmFsdWVJRCgp
ID09IENTU1ZhbHVlQXV0bykKKyAgICBpZiAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZh
bHVlKS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVBdXRvKQogICAgICAgICByZXR1cm4gR09fQVVUTzsK
ICAgICByZXR1cm4gY29udmVydEdseXBoT3JpZW50YXRpb24oc3R5bGVSZXNvbHZlciwgdmFsdWUp
OwogfQpAQCAtMTMzMSw3ICsxMzMxLDcgQEAgaW5saW5lIEVHbHlwaE9yaWVudGF0aW9uIFN0eWxl
QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEdseXBoT3JpZW50YXRpb25PckF1dG8oU3QKIGlubGlu
ZSBPcHRpb25hbDxMZW5ndGg+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydExpbmVIZWln
aHQoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHZhbHVlLCBmbG9hdCBt
dWx0aXBsaWVyKQogewogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWU+KHZhbHVlKTsKLSAgICBpZiAocHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWVJRCgp
ID09IENTU1ZhbHVlTm9ybWFsKQorICAgIGlmIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0g
Q1NTVmFsdWVOb3JtYWwpCiAgICAgICAgIHJldHVybiBSZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVI
ZWlnaHQoKTsKIAogICAgIGlmIChwcmltaXRpdmVWYWx1ZS5pc0xlbmd0aCgpKSB7CkBAIC0xMzQy
LDExICsxMzQyLDExIEBAIGlubGluZSBPcHRpb25hbDxMZW5ndGg+IFN0eWxlQnVpbGRlckNvbnZl
cnRlcjo6Y29udmVydExpbmVIZWlnaHQoU3R5bGVSZXNvbHZlciYKICAgICB9CiAgICAgaWYgKHBy
aW1pdGl2ZVZhbHVlLmlzUGVyY2VudGFnZSgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBwZXJjZW50
YWdlIHNob3VsZCBub3QgYmUgcmVzdHJpY3RlZCB0byBhbiBpbnRlZ2VyIGhlcmUuCi0gICAgICAg
IHJldHVybiBMZW5ndGgoKHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+Y29tcHV0ZWRGb250U2l6ZSgp
ICogcHJpbWl0aXZlVmFsdWUuZ2V0SW50VmFsdWUoKSkgLyAxMDAsIEZpeGVkKTsKKyAgICAgICAg
cmV0dXJuIExlbmd0aCgoc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5jb21wdXRlZEZvbnRTaXplKCkg
KiBwcmltaXRpdmVWYWx1ZS5pbnRWYWx1ZSgpKSAvIDEwMCwgRml4ZWQpOwogICAgIH0KICAgICBp
ZiAocHJpbWl0aXZlVmFsdWUuaXNOdW1iZXIoKSkgewogICAgICAgICAvLyBGSVhNRTogbnVtYmVy
IGFuZCBwZXJjZW50YWdlIHZhbHVlcyBzaG91bGQgcHJvZHVjZSB0aGUgc2FtZSB0eXBlIG9mIExl
bmd0aCAoaWUuIEZpeGVkIG9yIFBlcmNlbnQpLgotICAgICAgICByZXR1cm4gTGVuZ3RoKHByaW1p
dGl2ZVZhbHVlLmdldERvdWJsZVZhbHVlKCkgKiBtdWx0aXBsaWVyICogMTAwLjAsIFBlcmNlbnQp
OworICAgICAgICByZXR1cm4gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLmRvdWJsZVZhbHVlKCkgKiBt
dWx0aXBsaWVyICogMTAwLjAsIFBlcmNlbnQpOwogICAgIH0KICAgICByZXR1cm4gTnVsbG9wdDsK
IH0KQEAgLTEzNTQsMTQgKzEzNTQsMTQgQEAgaW5saW5lIE9wdGlvbmFsPExlbmd0aD4gU3R5bGVC
dWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TGluZUhlaWdodChTdHlsZVJlc29sdmVyJgogRm9udFN5
bnRoZXNpcyBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRGb250U3ludGhlc2lzKFN0eWxl
UmVzb2x2ZXImLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgaWYgKGlzPENTU1ByaW1pdGl2ZVZh
bHVlPih2YWx1ZSkpIHsKLSAgICAgICAgQVNTRVJUKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
Pih2YWx1ZSkuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZSk7CisgICAgICAgIEFTU0VSVChk
b3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5v
bmUpOwogICAgICAgICByZXR1cm4gRm9udFN5bnRoZXNpc05vbmU7CiAgICAgfQogCiAgICAgRm9u
dFN5bnRoZXNpcyByZXN1bHQgPSBGb250U3ludGhlc2lzTm9uZTsKICAgICBBU1NFUlQoaXM8Q1NT
VmFsdWVMaXN0Pih2YWx1ZSkpOwogICAgIGZvciAoQ1NTVmFsdWUmIHYgOiBkb3duY2FzdDxDU1NW
YWx1ZUxpc3Q+KHZhbHVlKSkgewotICAgICAgICBzd2l0Y2ggKGRvd25jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlPih2KS5nZXRWYWx1ZUlEKCkpIHsKKyAgICAgICAgc3dpdGNoIChkb3duY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZT4odikudmFsdWVJRCgpKSB7CiAgICAgICAgIGNhc2UgQ1NTVmFsdWVXZWln
aHQ6CiAgICAgICAgICAgICByZXN1bHQgfD0gRm9udFN5bnRoZXNpc1dlaWdodDsKICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtMTM4MCw5ICsxMzgwLDkgQEAgRm9udFN5bnRoZXNpcyBTdHlsZUJ1aWxk
ZXJDb252ZXJ0ZXI6OmNvbnZlcnRGb250U3ludGhlc2lzKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWwK
IGlubGluZSBCcmVha0JldHdlZW4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UGFnZUJy
ZWFrQmV0d2VlbihTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGF1dG8m
IHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKLSAg
ICBpZiAocHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlQWx3YXlzKQorICAg
IGlmIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVBbHdheXMpCiAgICAgICAg
IHJldHVybiBQYWdlQnJlYWtCZXR3ZWVuOwotICAgIGlmIChwcmltaXRpdmVWYWx1ZS5nZXRWYWx1
ZUlEKCkgPT0gQ1NTVmFsdWVBdm9pZCkKKyAgICBpZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgp
ID09IENTU1ZhbHVlQXZvaWQpCiAgICAgICAgIHJldHVybiBBdm9pZFBhZ2VCcmVha0JldHdlZW47
CiAgICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlOwogfQpAQCAtMTM5MCw3ICsxMzkwLDcgQEAgaW5s
aW5lIEJyZWFrQmV0d2VlbiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRQYWdlQnJlYWtC
ZXR3ZWVuKFN0eWxlUmVzb2x2ZXIKIGlubGluZSBCcmVha0luc2lkZSBTdHlsZUJ1aWxkZXJDb252
ZXJ0ZXI6OmNvbnZlcnRQYWdlQnJlYWtJbnNpZGUoU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJiB2
YWx1ZSkKIHsKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlPih2YWx1ZSk7Ci0gICAgaWYgKHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQoKSA9PSBD
U1NWYWx1ZUF2b2lkKQorICAgIGlmIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFs
dWVBdm9pZCkKICAgICAgICAgcmV0dXJuIEF2b2lkUGFnZUJyZWFrSW5zaWRlOwogICAgIHJldHVy
biBwcmltaXRpdmVWYWx1ZTsKIH0KQEAgLTEzOTgsOSArMTM5OCw5IEBAIGlubGluZSBCcmVha0lu
c2lkZSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRQYWdlQnJlYWtJbnNpZGUoU3R5bGVS
ZXNvbHZlciYsCiBpbmxpbmUgQnJlYWtCZXR3ZWVuIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29u
dmVydENvbHVtbkJyZWFrQmV0d2VlbihTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmIHZhbHVlKQog
ewogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+
KHZhbHVlKTsKLSAgICBpZiAocHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVl
QWx3YXlzKQorICAgIGlmIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVBbHdh
eXMpCiAgICAgICAgIHJldHVybiBDb2x1bW5CcmVha0JldHdlZW47Ci0gICAgaWYgKHByaW1pdGl2
ZVZhbHVlLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZUF2b2lkKQorICAgIGlmIChwcmltaXRpdmVW
YWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVBdm9pZCkKICAgICAgICAgcmV0dXJuIEF2b2lkQ29s
dW1uQnJlYWtCZXR3ZWVuOwogICAgIHJldHVybiBwcmltaXRpdmVWYWx1ZTsKIH0KQEAgLTE0MDgs
NyArMTQwOCw3IEBAIGlubGluZSBCcmVha0JldHdlZW4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpj
b252ZXJ0Q29sdW1uQnJlYWtCZXR3ZWVuKFN0eWxlUmVzb2x2CiBpbmxpbmUgQnJlYWtJbnNpZGUg
U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Q29sdW1uQnJlYWtJbnNpZGUoU3R5bGVSZXNv
bHZlciYsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRv
d25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7Ci0gICAgaWYgKHByaW1pdGl2ZVZhbHVl
LmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZUF2b2lkKQorICAgIGlmIChwcmltaXRpdmVWYWx1ZS52
YWx1ZUlEKCkgPT0gQ1NTVmFsdWVBdm9pZCkKICAgICAgICAgcmV0dXJuIEF2b2lkQ29sdW1uQnJl
YWtJbnNpZGU7CiAgICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlOwogfQpAQCAtMTQxNyw5ICsxNDE3
LDkgQEAgaW5saW5lIEJyZWFrSW5zaWRlIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydENv
bHVtbkJyZWFrSW5zaWRlKFN0eWxlUmVzb2x2ZXIKIGlubGluZSBCcmVha0JldHdlZW4gU3R5bGVC
dWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UmVnaW9uQnJlYWtCZXR3ZWVuKFN0eWxlUmVzb2x2ZXIm
LCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwotICAgIGlmIChwcmltaXRpdmVWYWx1ZS5nZXRW
YWx1ZUlEKCkgPT0gQ1NTVmFsdWVBbHdheXMpCisgICAgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVl
SUQoKSA9PSBDU1NWYWx1ZUFsd2F5cykKICAgICAgICAgcmV0dXJuIFJlZ2lvbkJyZWFrQmV0d2Vl
bjsKLSAgICBpZiAocHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlQXZvaWQp
CisgICAgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUF2b2lkKQogICAg
ICAgICByZXR1cm4gQXZvaWRSZWdpb25CcmVha0JldHdlZW47CiAgICAgcmV0dXJuIHByaW1pdGl2
ZVZhbHVlOwogfQpAQCAtMTQyNyw3ICsxNDI3LDcgQEAgaW5saW5lIEJyZWFrQmV0d2VlbiBTdHls
ZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRSZWdpb25CcmVha0JldHdlZW4oU3R5bGVSZXNvbHYK
IGlubGluZSBCcmVha0luc2lkZSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRSZWdpb25C
cmVha0luc2lkZShTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGF1dG8m
IHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKLSAg
ICBpZiAocHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlQXZvaWQpCisgICAg
aWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUF2b2lkKQogICAgICAgICBy
ZXR1cm4gQXZvaWRSZWdpb25CcmVha0luc2lkZTsKICAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWU7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmgKaW5kZXggY2FhYmYzMjVj
NmM1ZWQ3YmE1MWQ3NWFkNWM4YzhjYjM5MzE5YjRjZC4uNjA5YWFkNTUyYjE2MGVhNzFkNzI5Zjdh
ZjEzZmFjMzFiYjBiMDg1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVp
bGRlckN1c3RvbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDdXN0b20u
aApAQCAtMjQsOCArMjQsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLSNpZm5kZWYgU3R5bGVCdWlsZGVyQ3VzdG9tX2gKLSNkZWZpbmUgU3R5bGVCdWlsZGVy
Q3VzdG9tX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ1NTQXNwZWN0UmF0aW9WYWx1ZS5o
IgogI2luY2x1ZGUgIkNTU0N1cnNvckltYWdlVmFsdWUuaCIKQEAgLTE5NCwyMyArMTkzLDIzIEBA
IGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVpvb20oU3R5bGVSZXNv
bHZlciYgc3R5bGVSZXNvbHZlciwgQ1NTCiB7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBk
b3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwogCi0gICAgaWYgKHByaW1pdGl2ZVZh
bHVlLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vcm1hbCkgeworICAgIGlmIChwcmltaXRpdmVW
YWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb3JtYWwpIHsKICAgICAgICAgcmVzZXRFZmZlY3Rp
dmVab29tKHN0eWxlUmVzb2x2ZXIpOwogICAgICAgICBzdHlsZVJlc29sdmVyLnNldFpvb20oUmVu
ZGVyU3R5bGU6OmluaXRpYWxab29tKCkpOwotICAgIH0gZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUu
Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlUmVzZXQpIHsKKyAgICB9IGVsc2UgaWYgKHByaW1pdGl2
ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZVJlc2V0KSB7CiAgICAgICAgIHN0eWxlUmVzb2x2
ZXIuc2V0RWZmZWN0aXZlWm9vbShSZW5kZXJTdHlsZTo6aW5pdGlhbFpvb20oKSk7CiAgICAgICAg
IHN0eWxlUmVzb2x2ZXIuc2V0Wm9vbShSZW5kZXJTdHlsZTo6aW5pdGlhbFpvb20oKSk7Ci0gICAg
fSBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVEb2N1bWVu
dCkgeworICAgIH0gZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVl
RG9jdW1lbnQpIHsKICAgICAgICAgZmxvYXQgZG9jWm9vbSA9IHN0eWxlUmVzb2x2ZXIucm9vdEVs
ZW1lbnRTdHlsZSgpID8gc3R5bGVSZXNvbHZlci5yb290RWxlbWVudFN0eWxlKCktPnpvb20oKSA6
IFJlbmRlclN0eWxlOjppbml0aWFsWm9vbSgpOwogICAgICAgICBzdHlsZVJlc29sdmVyLnNldEVm
ZmVjdGl2ZVpvb20oZG9jWm9vbSk7CiAgICAgICAgIHN0eWxlUmVzb2x2ZXIuc2V0Wm9vbShkb2Na
b29tKTsKICAgICB9IGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLmlzUGVyY2VudGFnZSgpKSB7CiAg
ICAgICAgIHJlc2V0RWZmZWN0aXZlWm9vbShzdHlsZVJlc29sdmVyKTsKLSAgICAgICAgaWYgKGZs
b2F0IHBlcmNlbnQgPSBwcmltaXRpdmVWYWx1ZS5nZXRGbG9hdFZhbHVlKCkpCisgICAgICAgIGlm
IChmbG9hdCBwZXJjZW50ID0gcHJpbWl0aXZlVmFsdWUuZmxvYXRWYWx1ZSgpKQogICAgICAgICAg
ICAgc3R5bGVSZXNvbHZlci5zZXRab29tKHBlcmNlbnQgLyAxMDAuMGYpOwogICAgIH0gZWxzZSBp
ZiAocHJpbWl0aXZlVmFsdWUuaXNOdW1iZXIoKSkgewogICAgICAgICByZXNldEVmZmVjdGl2ZVpv
b20oc3R5bGVSZXNvbHZlcik7Ci0gICAgICAgIGlmIChmbG9hdCBudW1iZXIgPSBwcmltaXRpdmVW
YWx1ZS5nZXRGbG9hdFZhbHVlKCkpCisgICAgICAgIGlmIChmbG9hdCBudW1iZXIgPSBwcmltaXRp
dmVWYWx1ZS5mbG9hdFZhbHVlKCkpCiAgICAgICAgICAgICBzdHlsZVJlc29sdmVyLnNldFpvb20o
bnVtYmVyKTsKICAgICB9CiB9CkBAIC0yNDYsNyArMjQ1LDcgQEAgYm9vbCBTdHlsZUJ1aWxkZXJD
dXN0b206OmdldFBhZ2VTaXplRnJvbU5hbWUoQ1NTUHJpbWl0aXZlVmFsdWUqIHBhZ2VTaXplTmFt
ZSwgQ1MKICAgICBpZiAoIXBhZ2VTaXplTmFtZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgc3dpdGNoIChwYWdlU2l6ZU5hbWUtPmdldFZhbHVlSUQoKSkgeworICAgIHN3aXRjaCAocGFn
ZVNpemVOYW1lLT52YWx1ZUlEKCkpIHsKICAgICBjYXNlIENTU1ZhbHVlQTU6CiAgICAgICAgIHdp
ZHRoID0gYTVXaWR0aDsKICAgICAgICAgaGVpZ2h0ID0gYTVIZWlnaHQ7CkBAIC0yODQsNyArMjgz
LDcgQEAgYm9vbCBTdHlsZUJ1aWxkZXJDdXN0b206OmdldFBhZ2VTaXplRnJvbU5hbWUoQ1NTUHJp
bWl0aXZlVmFsdWUqIHBhZ2VTaXplTmFtZSwgQ1MKICAgICB9CiAKICAgICBpZiAocGFnZU9yaWVu
dGF0aW9uKSB7Ci0gICAgICAgIHN3aXRjaCAocGFnZU9yaWVudGF0aW9uLT5nZXRWYWx1ZUlEKCkp
IHsKKyAgICAgICAgc3dpdGNoIChwYWdlT3JpZW50YXRpb24tPnZhbHVlSUQoKSkgewogICAgICAg
ICBjYXNlIENTU1ZhbHVlTGFuZHNjYXBlOgogICAgICAgICAgICAgc3RkOjpzd2FwKHdpZHRoLCBo
ZWlnaHQpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0zMDEsNyArMzAwLDcgQEAgYm9vbCBTdHls
ZUJ1aWxkZXJDdXN0b206OmdldFBhZ2VTaXplRnJvbU5hbWUoQ1NTUHJpbWl0aXZlVmFsdWUqIHBh
Z2VTaXplTmFtZSwgQ1MKIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1
ZVZlcnRpY2FsQWxpZ24oU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHZh
bHVlKQogewogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWU+KHZhbHVlKTsKLSAgICBpZiAocHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWVJRCgpKQorICAg
IGlmIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkpCiAgICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5
bGUoKS0+c2V0VmVydGljYWxBbGlnbihwcmltaXRpdmVWYWx1ZSk7CiAgICAgZWxzZQogICAgICAg
ICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldFZlcnRpY2FsQWxpZ25MZW5ndGgocHJpbWl0aXZl
VmFsdWUuY29udmVydFRvTGVuZ3RoPEZpeGVkSW50ZWdlckNvbnZlcnNpb24gfCBQZXJjZW50Q29u
dmVyc2lvbiB8IENhbGN1bGF0ZWRDb252ZXJzaW9uPihzdHlsZVJlc29sdmVyLnN0YXRlKCkuY3Nz
VG9MZW5ndGhDb252ZXJzaW9uRGF0YSgpKSk7CkBAIC0zMTYsMTIgKzMxNSwxMiBAQCBzdGF0aWMg
TGVuZ3RoIGNvbnZlcnRUb0ludExlbmd0aChjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0
aXZlVmFsdWUsIGNvbnN0CiBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFs
dWVXZWJraXREYXNoYm9hcmRSZWdpb24oU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgQ1NT
VmFsdWUmIHZhbHVlKQogewogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKLSAgICBpZiAocHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWVJ
RCgpID09IENTU1ZhbHVlTm9uZSkgeworICAgIGlmIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkg
PT0gQ1NTVmFsdWVOb25lKSB7CiAgICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0RGFz
aGJvYXJkUmVnaW9ucyhSZW5kZXJTdHlsZTo6bm9uZURhc2hib2FyZFJlZ2lvbnMoKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBEYXNoYm9hcmRSZWdpb24qIHJlZ2lvbiA9IHByaW1p
dGl2ZVZhbHVlLmdldERhc2hib2FyZFJlZ2lvblZhbHVlKCk7CisgICAgYXV0byogcmVnaW9uID0g
cHJpbWl0aXZlVmFsdWUuZGFzaGJvYXJkUmVnaW9uVmFsdWUoKTsKICAgICBpZiAoIXJlZ2lvbikK
ICAgICAgICAgcmV0dXJuOwogCkBAIC0zNzQsMTIgKzM3MywxMiBAQCBpbmxpbmUgdm9pZCBTdHls
ZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVJbWFnZVJlc29sdXRpb24oU3R5bGVSZXNvbHZlciYg
c3R5bGVSZQogICAgIGRvdWJsZSByZXNvbHV0aW9uID0gUmVuZGVyU3R5bGU6OmluaXRpYWxJbWFn
ZVJlc29sdXRpb24oKTsKICAgICBmb3IgKGF1dG8mIGl0ZW0gOiBkb3duY2FzdDxDU1NWYWx1ZUxp
c3Q+KHZhbHVlKSkgewogICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSYgcHJpbWl0aXZlVmFsdWUg
PSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oaXRlbS5nZXQoKSk7Ci0gICAgICAgIGlmIChw
cmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVGcm9tSW1hZ2UpCisgICAgICAg
IGlmIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVGcm9tSW1hZ2UpCiAgICAg
ICAgICAgICBzb3VyY2UgPSBJbWFnZVJlc29sdXRpb25Gcm9tSW1hZ2U7Ci0gICAgICAgIGVsc2Ug
aWYgKHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZVNuYXApCisgICAgICAg
IGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZVNuYXApCiAgICAg
ICAgICAgICBzbmFwID0gSW1hZ2VSZXNvbHV0aW9uU25hcFBpeGVsczsKICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgcmVzb2x1dGlvbiA9IHByaW1pdGl2ZVZhbHVlLmdldERvdWJsZVZhbHVlKENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfRFBQWCk7CisgICAgICAgICAgICByZXNvbHV0aW9uID0gcHJp
bWl0aXZlVmFsdWUuZG91YmxlVmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19EUFBYKTsKICAg
ICB9CiAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRJbWFnZVJlc29sdXRpb25Tb3VyY2Uo
c291cmNlKTsKICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldEltYWdlUmVzb2x1dGlvblNu
YXAoc25hcCk7CkBAIC00MzUsNyArNDM0LDcgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3Vz
dG9tOjphcHBseVZhbHVlU2l6ZShTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBDU1MKICAg
ICAgICAgICAgIHBhZ2VTaXplVHlwZSA9IFBBR0VfU0laRV9SRVNPTFZFRDsKICAgICAgICAgICAg
IHdpZHRoID0gaGVpZ2h0ID0gcHJpbWl0aXZlVmFsdWUuY29tcHV0ZUxlbmd0aDxMZW5ndGg+KHN0
eWxlUmVzb2x2ZXIuc3RhdGUoKS5jc3NUb0xlbmd0aENvbnZlcnNpb25EYXRhKCkuY29weVdpdGhB
ZGp1c3RlZFpvb20oMS4wZikpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgc3dpdGNo
IChwcmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkpIHsKKyAgICAgICAgICAgIHN3aXRjaCAocHJp
bWl0aXZlVmFsdWUudmFsdWVJRCgpKSB7CiAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUF1dG86CkBAIC00OTAsMTIg
KzQ4OSwxMiBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVUZXh0
SW5kZW50KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZQogI2VuZGlmCiAgICAgZm9yIChhdXRv
JiBpdGVtIDogZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pih2YWx1ZSkpIHsKICAgICAgICAgYXV0byYg
cHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oaXRlbS5nZXQoKSk7
Ci0gICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWVJRCgpKQorICAgICAgICBpZiAo
IXByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSkKICAgICAgICAgICAgIGxlbmd0aE9yUGVyY2VudGFn
ZVZhbHVlID0gcHJpbWl0aXZlVmFsdWUuY29udmVydFRvTGVuZ3RoPEZpeGVkSW50ZWdlckNvbnZl
cnNpb24gfCBQZXJjZW50Q29udmVyc2lvbiB8IENhbGN1bGF0ZWRDb252ZXJzaW9uPihzdHlsZVJl
c29sdmVyLnN0YXRlKCkuY3NzVG9MZW5ndGhDb252ZXJzaW9uRGF0YSgpKTsKICNpZiBFTkFCTEUo
Q1NTM19URVhUKQotICAgICAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkg
PT0gQ1NTVmFsdWVXZWJraXRFYWNoTGluZSkKKyAgICAgICAgZWxzZSBpZiAocHJpbWl0aXZlVmFs
dWUudmFsdWVJRCgpID09IENTU1ZhbHVlV2Via2l0RWFjaExpbmUpCiAgICAgICAgICAgICB0ZXh0
SW5kZW50TGluZVZhbHVlID0gVGV4dEluZGVudEVhY2hMaW5lOwotICAgICAgICBlbHNlIGlmIChw
cmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVXZWJraXRIYW5naW5nKQorICAg
ICAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVXZWJraXRI
YW5naW5nKQogICAgICAgICAgICAgdGV4dEluZGVudFR5cGVWYWx1ZSA9IFRleHRJbmRlbnRIYW5n
aW5nOwogI2VuZGlmCiAgICAgfQpAQCAtNjgwLDcgKzY3OSw3IEBAIGlubGluZSB2b2lkIFN0eWxl
QnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUNsaXAoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZl
ciwgQ1NTCiB7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZT4odmFsdWUpOwogCi0gICAgaWYgKFJlY3QqIHJlY3QgPSBwcmltaXRpdmVWYWx1ZS5n
ZXRSZWN0VmFsdWUoKSkgeworICAgIGlmIChSZWN0KiByZWN0ID0gcHJpbWl0aXZlVmFsdWUucmVj
dFZhbHVlKCkpIHsKICAgICAgICAgYXV0byBjb252ZXJzaW9uRGF0YSA9IHN0eWxlUmVzb2x2ZXIu
c3RhdGUoKS5jc3NUb0xlbmd0aENvbnZlcnNpb25EYXRhKCk7CiAgICAgICAgIExlbmd0aCB0b3Ag
PSByZWN0LT50b3AoKS0+Y29udmVydFRvTGVuZ3RoPEZpeGVkSW50ZWdlckNvbnZlcnNpb24gfCBQ
ZXJjZW50Q29udmVyc2lvbiB8IEF1dG9Db252ZXJzaW9uPihjb252ZXJzaW9uRGF0YSk7CiAgICAg
ICAgIExlbmd0aCByaWdodCA9IHJlY3QtPnJpZ2h0KCktPmNvbnZlcnRUb0xlbmd0aDxGaXhlZElu
dGVnZXJDb252ZXJzaW9uIHwgUGVyY2VudENvbnZlcnNpb24gfCBBdXRvQ29udmVyc2lvbj4oY29u
dmVyc2lvbkRhdGEpOwpAQCAtNjg5LDcgKzY4OCw3IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRl
ckN1c3RvbTo6YXBwbHlWYWx1ZUNsaXAoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgQ1NT
CiAgICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0Q2xpcCh0b3AsIHJpZ2h0LCBib3R0
b20sIGxlZnQpOwogICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldEhhc0NsaXAodHJ1
ZSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgQVNTRVJUKHByaW1pdGl2ZVZhbHVlLmdldFZhbHVl
SUQoKSA9PSBDU1NWYWx1ZUF1dG8pOworICAgICAgICBBU1NFUlQocHJpbWl0aXZlVmFsdWUudmFs
dWVJRCgpID09IENTU1ZhbHVlQXV0byk7CiAgICAgICAgIGFwcGx5SW5pdGlhbENsaXAoc3R5bGVS
ZXNvbHZlcik7CiAgICAgfQogfQpAQCAtNjk5LDEwICs2OTgsMTAgQEAgaW5saW5lIHZvaWQgU3R5
bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlV2Via2l0TG9jYWxlKFN0eWxlUmVzb2x2ZXImIHN0
eWxlUmVzb2wKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlPih2YWx1ZSk7CiAKICAgICBGb250Q2FzY2FkZURlc2NyaXB0aW9uIGZvbnREZXNjcmlw
dGlvbiA9IHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+Zm9udERlc2NyaXB0aW9uKCk7Ci0gICAgaWYg
KHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZUF1dG8pCisgICAgaWYgKHBy
aW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUF1dG8pCiAgICAgICAgIGZvbnREZXNj
cmlwdGlvbi5zZXRMb2NhbGUobnVsbEF0b20pOwogICAgIGVsc2UKLSAgICAgICAgZm9udERlc2Ny
aXB0aW9uLnNldExvY2FsZShwcmltaXRpdmVWYWx1ZS5nZXRTdHJpbmdWYWx1ZSgpKTsKKyAgICAg
ICAgZm9udERlc2NyaXB0aW9uLnNldExvY2FsZShwcmltaXRpdmVWYWx1ZS5zdHJpbmdWYWx1ZSgp
KTsKICAgICBzdHlsZVJlc29sdmVyLnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24p
OwogfQogCkBAIC03MjEsMTIgKzcyMCwxMiBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0
b206OmFwcGx5VmFsdWVXZWJraXRUZXh0T3JpZW50YXRpb24oU3R5bGVSZXNvbHZlciYgcwogaW5s
aW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlV2Via2l0VGV4dFNpemVBZGp1
c3QoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAg
IGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVl
KTsKLSAgICBpZiAocHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlQXV0bykK
KyAgICBpZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlQXV0bykKICAgICAg
ICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRUZXh0U2l6ZUFkanVzdChUZXh0U2l6ZUFkanVz
dG1lbnQoQXV0b1RleHRTaXplQWRqdXN0bWVudCkpOwotICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZh
bHVlLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUpCisgICAgZWxzZSBpZiAocHJpbWl0aXZl
VmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZSkKICAgICAgICAgc3R5bGVSZXNvbHZlci5z
dHlsZSgpLT5zZXRUZXh0U2l6ZUFkanVzdChUZXh0U2l6ZUFkanVzdG1lbnQoTm9UZXh0U2l6ZUFk
anVzdG1lbnQpKTsKICAgICBlbHNlCi0gICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0
VGV4dFNpemVBZGp1c3QoVGV4dFNpemVBZGp1c3RtZW50KHByaW1pdGl2ZVZhbHVlLmdldEZsb2F0
VmFsdWUoKSkpOworICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldFRleHRTaXplQWRq
dXN0KFRleHRTaXplQWRqdXN0bWVudChwcmltaXRpdmVWYWx1ZS5mbG9hdFZhbHVlKCkpKTsKIAog
ICAgIHN0eWxlUmVzb2x2ZXIuc3RhdGUoKS5zZXRGb250RGlydHkodHJ1ZSk7CiB9CkBAIC03MzUs
OSArNzM0LDkgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlV2Vi
a2l0VGV4dFNpemVBZGp1c3QoU3R5bGVSZXNvbHZlciYgc3QKIGlubGluZSB2b2lkIFN0eWxlQnVp
bGRlckN1c3RvbTo6YXBwbHlWYWx1ZVdlYmtpdFRleHRab29tKFN0eWxlUmVzb2x2ZXImIHN0eWxl
UmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9
IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7Ci0gICAgaWYgKHByaW1pdGl2ZVZh
bHVlLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vcm1hbCkKKyAgICBpZiAocHJpbWl0aXZlVmFs
dWUudmFsdWVJRCgpID09IENTU1ZhbHVlTm9ybWFsKQogICAgICAgICBzdHlsZVJlc29sdmVyLnN0
eWxlKCktPnNldFRleHRab29tKFRleHRab29tTm9ybWFsKTsKLSAgICBlbHNlIGlmIChwcmltaXRp
dmVWYWx1ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVSZXNldCkKKyAgICBlbHNlIGlmIChwcmlt
aXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVSZXNldCkKICAgICAgICAgc3R5bGVSZXNv
bHZlci5zdHlsZSgpLT5zZXRUZXh0Wm9vbShUZXh0Wm9vbVJlc2V0KTsKICAgICBzdHlsZVJlc29s
dmVyLnN0YXRlKCkuc2V0Rm9udERpcnR5KHRydWUpOwogfQpAQCAtNzQ2LDcgKzc0NSw3IEBAIHRl
bXBsYXRlIDxDU1NQcm9wZXJ0eUlEIGlkPgogaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9t
OjphcHBseVRleHRPckJveFNoYWRvd1ZhbHVlKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIs
IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVl
KSkgewotICAgICAgICBBU1NFUlQoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS5n
ZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKTsKKyAgICAgICAgQVNTRVJUKGRvd25jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkudmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZSk7CiAgICAg
ICAgIGlmIChpZCA9PSBDU1NQcm9wZXJ0eVRleHRTaGFkb3cpCiAgICAgICAgICAgICBzdHlsZVJl
c29sdmVyLnN0eWxlKCktPnNldFRleHRTaGFkb3cobnVsbHB0cik7CiAgICAgICAgIGVsc2UKQEAg
LTc2Miw3ICs3NjEsNyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VGV4
dE9yQm94U2hhZG93VmFsdWUoU3R5bGVSZXNvbHZlciYgc3R5bGVSZQogICAgICAgICBpbnQgeSA9
IHNoYWRvd1ZhbHVlLnktPmNvbXB1dGVMZW5ndGg8aW50Pihjb252ZXJzaW9uRGF0YSk7CiAgICAg
ICAgIGludCBibHVyID0gc2hhZG93VmFsdWUuYmx1ciA/IHNoYWRvd1ZhbHVlLmJsdXItPmNvbXB1
dGVMZW5ndGg8aW50Pihjb252ZXJzaW9uRGF0YSkgOiAwOwogICAgICAgICBpbnQgc3ByZWFkID0g
c2hhZG93VmFsdWUuc3ByZWFkID8gc2hhZG93VmFsdWUuc3ByZWFkLT5jb21wdXRlTGVuZ3RoPGlu
dD4oY29udmVyc2lvbkRhdGEpIDogMDsKLSAgICAgICAgU2hhZG93U3R5bGUgc2hhZG93U3R5bGUg
PSBzaGFkb3dWYWx1ZS5zdHlsZSAmJiBzaGFkb3dWYWx1ZS5zdHlsZS0+Z2V0VmFsdWVJRCgpID09
IENTU1ZhbHVlSW5zZXQgPyBJbnNldCA6IE5vcm1hbDsKKyAgICAgICAgU2hhZG93U3R5bGUgc2hh
ZG93U3R5bGUgPSBzaGFkb3dWYWx1ZS5zdHlsZSAmJiBzaGFkb3dWYWx1ZS5zdHlsZS0+dmFsdWVJ
RCgpID09IENTU1ZhbHVlSW5zZXQgPyBJbnNldCA6IE5vcm1hbDsKICAgICAgICAgQ29sb3IgY29s
b3I7CiAgICAgICAgIGlmIChzaGFkb3dWYWx1ZS5jb2xvcikKICAgICAgICAgICAgIGNvbG9yID0g
c3R5bGVSZXNvbHZlci5jb2xvckZyb21QcmltaXRpdmVWYWx1ZSgqc2hhZG93VmFsdWUuY29sb3Ip
OwpAQCAtODY5LDcgKzg2OCw3IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBw
bHlWYWx1ZUZvbnRGYW1pbHkoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlCiAgICAgICAgICAg
ICAvLyBJZiB0aGUgZmFtaWx5IG5hbWUgd2FzIHJlc29sdmVkIGJ5IHRoZSBDU1MgcGFyc2VyIGZy
b20gYSBzeXN0ZW0gZm9udCBJRCwgdGhlbiBpdCBpcyBnZW5lcmljLgogICAgICAgICAgICAgaXNH
ZW5lcmljRmFtaWx5ID0gZm9udEZhbWlseS5mcm9tU3lzdGVtRm9udElEOwogICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgc3dpdGNoIChjb250ZW50VmFsdWUuZ2V0VmFsdWVJRCgpKSB7Cisg
ICAgICAgICAgICBzd2l0Y2ggKGNvbnRlbnRWYWx1ZS52YWx1ZUlEKCkpIHsKICAgICAgICAgICAg
IGNhc2UgQ1NTVmFsdWVXZWJraXRCb2R5OgogICAgICAgICAgICAgICAgIGlmIChTZXR0aW5ncyog
c2V0dGluZ3MgPSBzdHlsZVJlc29sdmVyLmRvY3VtZW50KCkuc2V0dGluZ3MoKSkKICAgICAgICAg
ICAgICAgICAgICAgZmFtaWx5ID0gc2V0dGluZ3MtPnN0YW5kYXJkRm9udEZhbWlseSgpOwpAQCAt
OTQ4LDcgKzk0Nyw3IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1
ZUJhc2VsaW5lU2hpZnQoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvCiAgICAgU1ZHUmVuZGVyU3R5
bGUmIHN2Z1N0eWxlID0gc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5hY2Nlc3NTVkdTdHlsZSgpOwog
ICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZh
bHVlKTsKICAgICBpZiAocHJpbWl0aXZlVmFsdWUuaXNWYWx1ZUlEKCkpIHsKLSAgICAgICAgc3dp
dGNoIChwcmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkpIHsKKyAgICAgICAgc3dpdGNoIChwcmlt
aXRpdmVWYWx1ZS52YWx1ZUlEKCkpIHsKICAgICAgICAgY2FzZSBDU1NWYWx1ZUJhc2VsaW5lOgog
ICAgICAgICAgICAgc3ZnU3R5bGUuc2V0QmFzZWxpbmVTaGlmdChCU19CQVNFTElORSk7CiAgICAg
ICAgICAgICBicmVhazsKQEAgLTk4OCwxMiArOTg3LDEyIEBAIGlubGluZSB2b2lkIFN0eWxlQnVp
bGRlckN1c3RvbTo6YXBwbHlWYWx1ZVdlYmtpdEFzcGVjdFJhdGlvKFN0eWxlUmVzb2x2ZXImIHN0
eWxlCiAgICAgaWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpIHsKICAgICAgICAgYXV0
byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwog
Ci0gICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVGcm9t
RGltZW5zaW9ucykKKyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NW
YWx1ZUZyb21EaW1lbnNpb25zKQogICAgICAgICAgICAgcmV0dXJuIHN0eWxlUmVzb2x2ZXIuc3R5
bGUoKS0+c2V0QXNwZWN0UmF0aW9UeXBlKEFzcGVjdFJhdGlvRnJvbURpbWVuc2lvbnMpOwotICAg
ICAgICBpZiAocHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlRnJvbUludHJp
bnNpYykKKyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUZy
b21JbnRyaW5zaWMpCiAgICAgICAgICAgICByZXR1cm4gc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5z
ZXRBc3BlY3RSYXRpb1R5cGUoQXNwZWN0UmF0aW9Gcm9tSW50cmluc2ljKTsKIAotICAgICAgICBB
U1NFUlQocHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlQXV0byk7CisgICAg
ICAgIEFTU0VSVChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVBdXRvKTsKICAg
ICAgICAgcmV0dXJuIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0QXNwZWN0UmF0aW9UeXBlKEFz
cGVjdFJhdGlvQXV0byk7CiAgICAgfQogCkBAIC0xMDI1LDcgKzEwMjQsNyBAQCBpbmxpbmUgdm9p
ZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVXZWJraXRUZXh0RW1waGFzaXNTdHlsZShT
dHlsZVJlc29sdmVyJgogCiAgICAgICAgIGZvciAoYXV0byYgaXRlbSA6IGxpc3QpIHsKICAgICAg
ICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlJiB2YWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlPihpdGVtLmdldCgpKTsKLSAgICAgICAgICAgIGlmICh2YWx1ZS5nZXRWYWx1ZUlEKCkgPT0g
Q1NTVmFsdWVGaWxsZWQgfHwgdmFsdWUuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlT3BlbikKKyAg
ICAgICAgICAgIGlmICh2YWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVGaWxsZWQgfHwgdmFsdWUu
dmFsdWVJRCgpID09IENTU1ZhbHVlT3BlbikKICAgICAgICAgICAgICAgICBzdHlsZVJlc29sdmVy
LnN0eWxlKCktPnNldFRleHRFbXBoYXNpc0ZpbGwodmFsdWUpOwogICAgICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0VGV4dEVtcGhhc2lzTWFy
ayh2YWx1ZSk7CkBAIC0xMDM4LDEzICsxMDM3LDEzIEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRl
ckN1c3RvbTo6YXBwbHlWYWx1ZVdlYmtpdFRleHRFbXBoYXNpc1N0eWxlKFN0eWxlUmVzb2x2ZXIm
CiAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLmlzU3RyaW5nKCkpIHsKICAgICAgICAgc3R5bGVSZXNv
bHZlci5zdHlsZSgpLT5zZXRUZXh0RW1waGFzaXNGaWxsKFRleHRFbXBoYXNpc0ZpbGxGaWxsZWQp
OwogICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldFRleHRFbXBoYXNpc01hcmsoVGV4
dEVtcGhhc2lzTWFya0N1c3RvbSk7Ci0gICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0
VGV4dEVtcGhhc2lzQ3VzdG9tTWFyayhwcmltaXRpdmVWYWx1ZS5nZXRTdHJpbmdWYWx1ZSgpKTsK
KyAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRUZXh0RW1waGFzaXNDdXN0b21NYXJr
KHByaW1pdGl2ZVZhbHVlLnN0cmluZ1ZhbHVlKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CiAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRUZXh0RW1waGFzaXNDdXN0b21NYXJrKG51
bGxBdG9tKTsKIAotICAgIGlmIChwcmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFs
dWVGaWxsZWQgfHwgcHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlT3Blbikg
eworICAgIGlmIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVGaWxsZWQgfHwg
cHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlT3BlbikgewogICAgICAgICBzdHls
ZVJlc29sdmVyLnN0eWxlKCktPnNldFRleHRFbXBoYXNpc0ZpbGwocHJpbWl0aXZlVmFsdWUpOwog
ICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldFRleHRFbXBoYXNpc01hcmsoVGV4dEVt
cGhhc2lzTWFya0F1dG8pOwogICAgIH0gZWxzZSB7CkBAIC0xMDY5LDcgKzEwNjgsNyBAQCBpbmxp
bmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5SW5oZXJpdENvdW50ZXIoU3R5bGVSZXNv
bHZlciYgc3R5bGVSZXNvbHZlcgogdGVtcGxhdGUgPFN0eWxlQnVpbGRlckN1c3RvbTo6Q291bnRl
ckJlaGF2aW9yIGNvdW50ZXJCZWhhdmlvcj4KIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3Rv
bTo6YXBwbHlWYWx1ZUNvdW50ZXIoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgQ1NTVmFs
dWUmIHZhbHVlKQogewotICAgIGJvb2wgc2V0Q291bnRlckluY3JlbWVudFRvTm9uZSA9IGNvdW50
ZXJCZWhhdmlvciA9PSBJbmNyZW1lbnQgJiYgaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSAm
JiBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLmdldFZhbHVlSUQoKSA9PSBDU1NW
YWx1ZU5vbmU7CisgICAgYm9vbCBzZXRDb3VudGVySW5jcmVtZW50VG9Ob25lID0gY291bnRlckJl
aGF2aW9yID09IEluY3JlbWVudCAmJiBpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpICYmIGRv
d25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkudmFsdWVJRCgpID09IENTU1ZhbHVlTm9u
ZTsKIAogICAgIGlmICghaXM8Q1NTVmFsdWVMaXN0Pih2YWx1ZSkgJiYgIXNldENvdW50ZXJJbmNy
ZW1lbnRUb05vbmUpCiAgICAgICAgIHJldHVybjsKQEAgLTEwODYsMTIgKzEwODUsMTIgQEAgaW5s
aW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlQ291bnRlcihTdHlsZVJlc29s
dmVyJiBzdHlsZVJlc29sdmVyLAogICAgICAgICByZXR1cm47CiAKICAgICBmb3IgKGF1dG8mIGl0
ZW0gOiBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KHZhbHVlKSkgewotICAgICAgICBQYWlyKiBwYWly
ID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGl0ZW0uZ2V0KCkpLmdldFBhaXJWYWx1ZSgp
OworICAgICAgICBQYWlyKiBwYWlyID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGl0ZW0u
Z2V0KCkpLnBhaXJWYWx1ZSgpOwogICAgICAgICBpZiAoIXBhaXIgfHwgIXBhaXItPmZpcnN0KCkg
fHwgIXBhaXItPnNlY29uZCgpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgQXRv
bWljU3RyaW5nIGlkZW50aWZpZXIgPSBwYWlyLT5maXJzdCgpLT5nZXRTdHJpbmdWYWx1ZSgpOwot
ICAgICAgICBpbnQgdmFsdWUgPSBwYWlyLT5zZWNvbmQoKS0+Z2V0SW50VmFsdWUoKTsKKyAgICAg
ICAgQXRvbWljU3RyaW5nIGlkZW50aWZpZXIgPSBwYWlyLT5maXJzdCgpLT5zdHJpbmdWYWx1ZSgp
OworICAgICAgICBpbnQgdmFsdWUgPSBwYWlyLT5zZWNvbmQoKS0+aW50VmFsdWUoKTsKICAgICAg
ICAgQ291bnRlckRpcmVjdGl2ZXMmIGRpcmVjdGl2ZXMgPSBtYXAuYWRkKGlkZW50aWZpZXIsIENv
dW50ZXJEaXJlY3RpdmVzKCkpLml0ZXJhdG9yLT52YWx1ZTsKICAgICAgICAgaWYgKGNvdW50ZXJC
ZWhhdmlvciA9PSBSZXNldCkKICAgICAgICAgICAgIGRpcmVjdGl2ZXMuc2V0UmVzZXRWYWx1ZSh2
YWx1ZSk7CkBAIC0xMjE5LDcgKzEyMTgsNyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0
b206OmFwcGx5VmFsdWVXZWJraXRTdmdTaGFkb3coU3R5bGVSZXNvbHZlciYgc3R5bGVSZQogewog
ICAgIFNWR1JlbmRlclN0eWxlJiBzdmdTdHlsZSA9IHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+YWNj
ZXNzU1ZHU3R5bGUoKTsKICAgICBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSkgewot
ICAgICAgICBBU1NFUlQoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS5nZXRWYWx1
ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKTsKKyAgICAgICAgQVNTRVJUKGRvd25jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlPih2YWx1ZSkudmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZSk7CiAgICAgICAgIHN2
Z1N0eWxlLnNldFNoYWRvdyhudWxscHRyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEy
NTcsNyArMTI1Niw3IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1
ZUZvbnRXZWlnaHQoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlCiB7CiAgICAgYXV0byYgcHJp
bWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwogICAgIGF1
dG8gZm9udERlc2NyaXB0aW9uID0gc3R5bGVSZXNvbHZlci5mb250RGVzY3JpcHRpb24oKTsKLSAg
ICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQoKSkgeworICAgIHN3aXRjaCAocHJp
bWl0aXZlVmFsdWUudmFsdWVJRCgpKSB7CiAgICAgY2FzZSBDU1NWYWx1ZUludmFsaWQ6CiAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKQEAgLTEyOTAsNyArMTI4
OSw3IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0Q29sdW1u
R2FwKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2CiAKIGlubGluZSB2b2lkIFN0eWxlQnVpbGRl
ckN1c3RvbTo6YXBwbHlWYWx1ZUNvbHVtbkdhcChTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVy
LCBDU1NWYWx1ZSYgdmFsdWUpCiB7Ci0gICAgaWYgKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
Pih2YWx1ZSkuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlTm9ybWFsKQorICAgIGlmIChkb3duY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vcm1hbCkK
ICAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRIYXNOb3JtYWxDb2x1bW5HYXAoKTsK
ICAgICBlbHNlCiAgICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0Q29sdW1uR2FwKFN0
eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydENvbXB1dGVkTGVuZ3RoPGZsb2F0PihzdHlsZVJl
c29sdmVyLCB2YWx1ZSkpOwpAQCAtMTMzMyw3ICsxMzMyLDcgQEAgaW5saW5lIHZvaWQgU3R5bGVC
dWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlQ29udGVudChTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29s
dmVyLAogCiAgICAgICAgIGF1dG8mIGNvbnRlbnRWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlPihpdGVtLmdldCgpKTsKICAgICAgICAgaWYgKGNvbnRlbnRWYWx1ZS5pc1N0cmluZygp
KSB7Ci0gICAgICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldENvbnRlbnQoY29udGVu
dFZhbHVlLmdldFN0cmluZ1ZhbHVlKCkuaW1wbCgpLCBkaWRTZXQpOworICAgICAgICAgICAgc3R5
bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRDb250ZW50KGNvbnRlbnRWYWx1ZS5zdHJpbmdWYWx1ZSgp
LmltcGwoKSwgZGlkU2V0KTsKICAgICAgICAgICAgIGRpZFNldCA9IHRydWU7CiAgICAgICAgIH0g
ZWxzZSBpZiAoY29udGVudFZhbHVlLmlzQXR0cigpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTog
Q2FuIGEgbmFtZXNwYWNlIGJlIHNwZWNpZmllZCBmb3IgYW4gYXR0cihmb28pPwpAQCAtMTM0MSw3
ICsxMzQwLDcgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlQ29u
dGVudChTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLAogICAgICAgICAgICAgICAgIHN0eWxl
UmVzb2x2ZXIuc3R5bGUoKS0+c2V0SGFzQXR0ckNvbnRlbnQoKTsKICAgICAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgICAgICBjb25zdF9jYXN0PFJlbmRlclN0eWxlKj4oc3R5bGVSZXNvbHZlci5w
YXJlbnRTdHlsZSgpKS0+c2V0SGFzQXR0ckNvbnRlbnQoKTsKLSAgICAgICAgICAgIFF1YWxpZmll
ZE5hbWUgYXR0cihudWxsQXRvbSwgY29udGVudFZhbHVlLmdldFN0cmluZ1ZhbHVlKCkuaW1wbCgp
LCBudWxsQXRvbSk7CisgICAgICAgICAgICBRdWFsaWZpZWROYW1lIGF0dHIobnVsbEF0b20sIGNv
bnRlbnRWYWx1ZS5zdHJpbmdWYWx1ZSgpLmltcGwoKSwgbnVsbEF0b20pOwogICAgICAgICAgICAg
Y29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSA9IHN0eWxlUmVzb2x2ZXIuZWxlbWVudCgpLT5nZXRB
dHRyaWJ1dGUoYXR0cik7CiAgICAgICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldENv
bnRlbnQodmFsdWUuaXNOdWxsKCkgPyBlbXB0eUF0b20gOiB2YWx1ZS5pbXBsKCksIGRpZFNldCk7
CiAgICAgICAgICAgICBkaWRTZXQgPSB0cnVlOwpAQCAtMTM0OSw3ICsxMzQ4LDcgQEAgaW5saW5l
IHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlQ29udGVudChTdHlsZVJlc29sdmVy
JiBzdHlsZVJlc29sdmVyLAogICAgICAgICAgICAgc3R5bGVSZXNvbHZlci5ydWxlU2V0cygpLm11
dGFibGVGZWF0dXJlcygpLmF0dHJpYnV0ZUNhbm9uaWNhbExvY2FsTmFtZXNJblJ1bGVzLmFkZChh
dHRyLmxvY2FsTmFtZSgpLmltcGwoKSk7CiAgICAgICAgICAgICBzdHlsZVJlc29sdmVyLnJ1bGVT
ZXRzKCkubXV0YWJsZUZlYXR1cmVzKCkuYXR0cmlidXRlTG9jYWxOYW1lc0luUnVsZXMuYWRkKGF0
dHIubG9jYWxOYW1lKCkuaW1wbCgpKTsKICAgICAgICAgfSBlbHNlIGlmIChjb250ZW50VmFsdWUu
aXNDb3VudGVyKCkpIHsKLSAgICAgICAgICAgIENvdW50ZXIqIGNvdW50ZXJWYWx1ZSA9IGNvbnRl
bnRWYWx1ZS5nZXRDb3VudGVyVmFsdWUoKTsKKyAgICAgICAgICAgIGF1dG8qIGNvdW50ZXJWYWx1
ZSA9IGNvbnRlbnRWYWx1ZS5jb3VudGVyVmFsdWUoKTsKICAgICAgICAgICAgIEVMaXN0U3R5bGVU
eXBlIGxpc3RTdHlsZVR5cGUgPSBOb25lTGlzdFN0eWxlOwogICAgICAgICAgICAgQ1NTVmFsdWVJ
RCBsaXN0U3R5bGVJZGVudCA9IGNvdW50ZXJWYWx1ZS0+bGlzdFN0eWxlSWRlbnQoKTsKICAgICAg
ICAgICAgIGlmIChsaXN0U3R5bGVJZGVudCAhPSBDU1NWYWx1ZU5vbmUpCkBAIC0xMzU4LDcgKzEz
NTcsNyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVDb250ZW50
KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsCiAgICAgICAgICAgICBzdHlsZVJlc29sdmVy
LnN0eWxlKCktPnNldENvbnRlbnQoV1RGTW92ZShjb3VudGVyKSwgZGlkU2V0KTsKICAgICAgICAg
ICAgIGRpZFNldCA9IHRydWU7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBzd2l0Y2gg
KGNvbnRlbnRWYWx1ZS5nZXRWYWx1ZUlEKCkpIHsKKyAgICAgICAgICAgIHN3aXRjaCAoY29udGVu
dFZhbHVlLnZhbHVlSUQoKSkgewogICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZU9wZW5RdW90ZToK
ICAgICAgICAgICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldENvbnRlbnQoT1BFTl9R
VU9URSwgZGlkU2V0KTsKICAgICAgICAgICAgICAgICBkaWRTZXQgPSB0cnVlOwpAQCAtMTU1Myw3
ICsxNTUyLDcgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlRm9u
dFNpemUoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwKIAogICAgIGF1dG8mIHByaW1pdGl2
ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKICAgICBmbG9hdCBz
aXplOwotICAgIGlmIChDU1NWYWx1ZUlEIGlkZW50ID0gcHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWVJ
RCgpKSB7CisgICAgaWYgKENTU1ZhbHVlSUQgaWRlbnQgPSBwcmltaXRpdmVWYWx1ZS52YWx1ZUlE
KCkpIHsKICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldElzQWJzb2x1dGVTaXplKHBhcmVudElz
QWJzb2x1dGVTaXplICYmIChpZGVudCA9PSBDU1NWYWx1ZUxhcmdlciB8fCBpZGVudCA9PSBDU1NW
YWx1ZVNtYWxsZXIgfHwgaWRlbnQgPT0gQ1NTVmFsdWVXZWJraXRSdWJ5VGV4dCkpOwogCiAgICAg
ICAgIC8vIEtleXdvcmRzIGFyZSBiZWluZyB1c2VkLgpAQCAtMTU4Nyw3ICsxNTg2LDcgQEAgaW5s
aW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlRm9udFNpemUoU3R5bGVSZXNv
bHZlciYgc3R5bGVSZXNvbHZlciwKICAgICAgICAgICAgIHNpemUgPSBwcmltaXRpdmVWYWx1ZS5j
b21wdXRlTGVuZ3RoPGZsb2F0PihDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhKHN0eWxlUmVzb2x2
ZXIucGFyZW50U3R5bGUoKSwgc3R5bGVSZXNvbHZlci5yb290RWxlbWVudFN0eWxlKCksIHN0eWxl
UmVzb2x2ZXIuZG9jdW1lbnQoKS5yZW5kZXJWaWV3KCksIDEuMGYsIHRydWUpKTsKICAgICAgICAg
ICAgIHN0eWxlUmVzb2x2ZXIuc3RhdGUoKS5zZXRGb250U2l6ZUhhc1ZpZXdwb3J0VW5pdHMocHJp
bWl0aXZlVmFsdWUuaXNWaWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgoKSk7CiAgICAgICAgIH0gZWxz
ZSBpZiAocHJpbWl0aXZlVmFsdWUuaXNQZXJjZW50YWdlKCkpCi0gICAgICAgICAgICBzaXplID0g
KHByaW1pdGl2ZVZhbHVlLmdldEZsb2F0VmFsdWUoKSAqIHBhcmVudFNpemUpIC8gMTAwLjBmOwor
ICAgICAgICAgICAgc2l6ZSA9IChwcmltaXRpdmVWYWx1ZS5mbG9hdFZhbHVlKCkgKiBwYXJlbnRT
aXplKSAvIDEwMC4wZjsKICAgICAgICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUuaXNDYWxjdWxh
dGVkUGVyY2VudGFnZVdpdGhMZW5ndGgoKSkKICAgICAgICAgICAgIHNpemUgPSBwcmltaXRpdmVW
YWx1ZS5jc3NDYWxjVmFsdWUoKS0+Y3JlYXRlQ2FsY3VsYXRpb25WYWx1ZShzdHlsZVJlc29sdmVy
LnN0YXRlKCkuY3NzVG9MZW5ndGhDb252ZXJzaW9uRGF0YSgpLmNvcHlXaXRoQWRqdXN0ZWRab29t
KDEuMGYpKS0+ZXZhbHVhdGUocGFyZW50U2l6ZSk7CiAgICAgICAgIGVsc2UKQEAgLTE2MTksNyAr
MTYxOCw3IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0R3Jp
ZFRlbXBsYXRlQXJlYXMoU3R5bGVSZXNvbHZlciYgc3R5CiBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxk
ZXJDdXN0b206OmFwcGx5VmFsdWVHcmlkVGVtcGxhdGVBcmVhcyhTdHlsZVJlc29sdmVyJiBzdHls
ZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgaWYgKGlzPENTU1ByaW1pdGl2ZVZh
bHVlPih2YWx1ZSkpIHsKLSAgICAgICAgQVNTRVJUKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
Pih2YWx1ZSkuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZSk7CisgICAgICAgIEFTU0VSVChk
b3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5v
bmUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xNzA2LDcgKzE3MDUsNyBAQCB2b2lk
IFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUFsdChTdHlsZVJlc29sdmVyJiBzdHlsZVJl
c29sdmVyLCBDU1NWYWx1ZSYgdgogewogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKICAgICBpZiAocHJpbWl0aXZlVmFsdWUuaXNT
dHJpbmcoKSkKLSAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRDb250ZW50QWx0VGV4
dChwcmltaXRpdmVWYWx1ZS5nZXRTdHJpbmdWYWx1ZSgpKTsKKyAgICAgICAgc3R5bGVSZXNvbHZl
ci5zdHlsZSgpLT5zZXRDb250ZW50QWx0VGV4dChwcmltaXRpdmVWYWx1ZS5zdHJpbmdWYWx1ZSgp
KTsKICAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS5pc0F0dHIoKSkgewogICAgICAgICAvLyBG
SVhNRTogQ2FuIGEgbmFtZXNwYWNlIGJlIHNwZWNpZmllZCBmb3IgYW4gYXR0cihmb28pPwogICAg
ICAgICBpZiAoc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zdHlsZVR5cGUoKSA9PSBOT1BTRVVETykK
QEAgLTE3MTQsNyArMTcxMyw3IEBAIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVl
QWx0KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2CiAgICAgICAgIGVs
c2UKICAgICAgICAgICAgIGNvbnN0X2Nhc3Q8UmVuZGVyU3R5bGUqPihzdHlsZVJlc29sdmVyLnBh
cmVudFN0eWxlKCkpLT5zZXRVbmlxdWUoKTsKIAotICAgICAgICBRdWFsaWZpZWROYW1lIGF0dHIo
bnVsbEF0b20sIHByaW1pdGl2ZVZhbHVlLmdldFN0cmluZ1ZhbHVlKCksIG51bGxBdG9tKTsKKyAg
ICAgICAgUXVhbGlmaWVkTmFtZSBhdHRyKG51bGxBdG9tLCBwcmltaXRpdmVWYWx1ZS5zdHJpbmdW
YWx1ZSgpLCBudWxsQXRvbSk7CiAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSBz
dHlsZVJlc29sdmVyLmVsZW1lbnQoKS0+Z2V0QXR0cmlidXRlKGF0dHIpOwogICAgICAgICBzdHls
ZVJlc29sdmVyLnN0eWxlKCktPnNldENvbnRlbnRBbHRUZXh0KHZhbHVlLmlzTnVsbCgpID8gZW1w
dHlBdG9tIDogdmFsdWUpOwogCkBAIC0xNzI2LDYgKzE3MjUsNyBAQCB2b2lkIFN0eWxlQnVpbGRl
ckN1c3RvbTo6YXBwbHlWYWx1ZUFsdChTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBDU1NW
YWx1ZSYgdgogfQogCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKKwogaW5saW5lIHZvaWQg
U3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseUluaXRpYWxXZWJraXRTY3JvbGxTbmFwUG9pbnRzWChT
dHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyKQogewogICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUo
KS0+c2V0U2Nyb2xsU25hcFBvaW50c1gobnVsbHB0cik7CkBAIC0xNzQ1LDIzICsxNzQ1LDIzIEBA
IGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0V2Via2l0U2Nyb2xs
U25hcFBvaW50c1koU3R5bGVSZXNvbHZlCiB7CiAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5z
ZXRTY3JvbGxTbmFwUG9pbnRzWShzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPnNjcm9sbFNu
YXBQb2ludHNZKCkgPyBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9sbFNuYXBQb2ludHM+KCpzdHlsZVJl
c29sdmVyLnBhcmVudFN0eWxlKCktPnNjcm9sbFNuYXBQb2ludHNZKCkpIDogbnVsbHB0cik7CiB9
CisKICNlbmRpZgogCiBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVX
aWxsQ2hhbmdlKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkK
IHsKICAgICBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSkgewotICAgICAgICBBU1NF
UlQoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS5nZXRWYWx1ZUlEKCkgPT0gQ1NT
VmFsdWVBdXRvKTsKKyAgICAgICAgQVNTRVJUKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2
YWx1ZSkudmFsdWVJRCgpID09IENTU1ZhbHVlQXV0byk7CiAgICAgICAgIHN0eWxlUmVzb2x2ZXIu
c3R5bGUoKS0+c2V0V2lsbENoYW5nZShudWxscHRyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIFJlZjxXaWxsQ2hhbmdlRGF0YT4gd2lsbENoYW5nZSA9IFdpbGxDaGFuZ2VEYXRhOjpj
cmVhdGUoKTsKKyAgICBhdXRvIHdpbGxDaGFuZ2UgPSBXaWxsQ2hhbmdlRGF0YTo6Y3JlYXRlKCk7
CiAgICAgZm9yIChhdXRvJiBpdGVtIDogZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pih2YWx1ZSkpIHsK
ICAgICAgICAgaWYgKCFpczxDU1NQcmltaXRpdmVWYWx1ZT4oaXRlbS5nZXQoKSkpCiAgICAgICAg
ICAgICBjb250aW51ZTsKLQotICAgICAgICBjb25zdCBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRv
d25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihpdGVtLmdldCgpKTsKLSAgICAgICAgc3dpdGNoIChw
cmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkpIHsKKyAgICAgICAgYXV0byYgcHJpbWl0aXZlVmFs
dWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oaXRlbS5nZXQoKSk7CisgICAgICAgIHN3
aXRjaCAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpKSB7CiAgICAgICAgIGNhc2UgQ1NTVmFsdWVT
Y3JvbGxQb3NpdGlvbjoKICAgICAgICAgICAgIHdpbGxDaGFuZ2UtPmFkZEZlYXR1cmUoV2lsbENo
YW5nZURhdGE6OkZlYXR1cmU6OlNjcm9sbFBvc2l0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwpA
QCAtMTc3MCwxNCArMTc3MCwxMSBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFw
cGx5VmFsdWVXaWxsQ2hhbmdlKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZQogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBpZiAocHJpbWl0aXZlVmFs
dWUuaXNQcm9wZXJ0eUlEKCkpCi0gICAgICAgICAgICAgICAgd2lsbENoYW5nZS0+YWRkRmVhdHVy
ZShXaWxsQ2hhbmdlRGF0YTo6RmVhdHVyZTo6UHJvcGVydHksIHByaW1pdGl2ZVZhbHVlLmdldFBy
b3BlcnR5SUQoKSk7CisgICAgICAgICAgICAgICAgd2lsbENoYW5nZS0+YWRkRmVhdHVyZShXaWxs
Q2hhbmdlRGF0YTo6RmVhdHVyZTo6UHJvcGVydHksIHByaW1pdGl2ZVZhbHVlLnByb3BlcnR5SUQo
KSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KLQogICAgIHN0eWxlUmVz
b2x2ZXIuc3R5bGUoKS0+c2V0V2lsbENoYW5nZShXVEZNb3ZlKHdpbGxDaGFuZ2UpKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gU3R5bGVCdWlsZGVyQ3VzdG9tX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5jcHAKaW5kZXggNmRkNGM1YWEwYWRjMjFk
NzcxYjJlZGYzZjk3YmUxNThjMjk1ZDA3YS4uNjZiNTljYzIwZmU5MDFiNjg5MjU3ZDQ1ZjA5Mjhh
OTk5Njc4NWI5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGll
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5jcHAKQEAgLTQ0
MSw4ICs0NDEsOCBAQCBTdHJpbmcgU3R5bGVQcm9wZXJ0aWVzOjpnZXRMYXllcmVkU2hvcnRoYW5k
VmFsdWUoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgcwogICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCFpczxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVlKSB8fCAhaXM8Q1NTUHJpbWl0
aXZlVmFsdWU+KCp5VmFsdWUpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogCi0gICAgICAgICAgICAgICAgICAgICAgICBDU1NWYWx1ZUlEIHhJZCA9IGRvd25jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUpLmdldFZhbHVlSUQoKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIENTU1ZhbHVlSUQgeUlkID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp5VmFs
dWUpLmdldFZhbHVlSUQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIENTU1ZhbHVlSUQgeElk
ID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YWx1ZSkudmFsdWVJRCgpOworICAgICAg
ICAgICAgICAgICAgICAgICAgQ1NTVmFsdWVJRCB5SWQgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZT4oKnlWYWx1ZSkudmFsdWVJRCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHhJ
ZCAhPSB5SWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoeElkID09IENTU1Zh
bHVlUmVwZWF0ICYmIHlJZCA9PSBDU1NWYWx1ZU5vUmVwZWF0KSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVzZVJlcGVhdFhTaG9ydGhhbmQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IDg0OTlkOGY3ZDU0MWZiZWFlNGQ5MTdiNmU3YTI3NTkx
YTIzYzg2M2YuLjVkYTZiYjc2OTE4NzJjYmU5MDc0MTBjOWI4MzZjZGY0ODJkZWU0ZTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTIyNyw3ICsyMjcsNyBAQCB2b2lkIFN0
eWxlUmVzb2x2ZXI6Ok1hdGNoUmVzdWx0OjphZGRNYXRjaGVkUHJvcGVydGllcyhjb25zdCBTdHls
ZVByb3BlcnRpZXMmIHBybwogCiAgICAgICAgICAgICAgICAgLy8gVGhlIHZhbHVlIGN1cnJlbnRD
b2xvciBoYXMgaW1wbGljaXRlbHkgdGhlIHNhbWUgc2lkZSBlZmZlY3QuIEl0IGRlcGVuZHMgb24g
dGhlIHZhbHVlIG9mIGNvbG9yLAogICAgICAgICAgICAgICAgIC8vIHdoaWNoIGlzIGFuIGluaGVy
aXRlZCB2YWx1ZSwgbWFraW5nIHRoZSBub24taW5oZXJpdGVkIHByb3BlcnR5IGltcGxpY2l0bHkg
aW5oZXJpdGVkLgotICAgICAgICAgICAgICAgIGlmIChpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFs
dWUpICYmIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkuZ2V0VmFsdWVJRCgpID09
IENTU1ZhbHVlQ3VycmVudGNvbG9yKSB7CisgICAgICAgICAgICAgICAgaWYgKGlzPENTU1ByaW1p
dGl2ZVZhbHVlPih2YWx1ZSkgJiYgZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS52
YWx1ZUlEKCkgPT0gQ1NTVmFsdWVDdXJyZW50Y29sb3IpIHsKICAgICAgICAgICAgICAgICAgICAg
aXNDYWNoZWFibGUgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAgICAgfQpAQCAtMTgxNiw3ICsxODE2LDcgQEAgc3RhdGljIENvbG9yIGNvbG9yRm9yQ1NT
VmFsdWUoQ1NTVmFsdWVJRCBjc3NWYWx1ZUlkKQogCiBib29sIFN0eWxlUmVzb2x2ZXI6OmNvbG9y
RnJvbVByaW1pdGl2ZVZhbHVlSXNEZXJpdmVkRnJvbUVsZW1lbnQoY29uc3QgQ1NTUHJpbWl0aXZl
VmFsdWUmIHZhbHVlKQogewotICAgIGludCBpZGVudCA9IHZhbHVlLmdldFZhbHVlSUQoKTsKKyAg
ICBpbnQgaWRlbnQgPSB2YWx1ZS52YWx1ZUlEKCk7CiAgICAgc3dpdGNoIChpZGVudCkgewogICAg
IGNhc2UgQ1NTVmFsdWVXZWJraXRUZXh0OgogICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRMaW5rOgpA
QCAtMTgzNCw3ICsxODM0LDcgQEAgQ29sb3IgU3R5bGVSZXNvbHZlcjo6Y29sb3JGcm9tUHJpbWl0
aXZlVmFsdWUoY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmIHZhbHVlLCBib28KICAgICAgICAgcmV0
dXJuIHZhbHVlLmNvbG9yKCk7CiAKICAgICBjb25zdCBTdGF0ZSYgc3RhdGUgPSBtX3N0YXRlOwot
ICAgIENTU1ZhbHVlSUQgaWRlbnQgPSB2YWx1ZS5nZXRWYWx1ZUlEKCk7CisgICAgQ1NTVmFsdWVJ
RCBpZGVudCA9IHZhbHVlLnZhbHVlSUQoKTsKICAgICBzd2l0Y2ggKGlkZW50KSB7CiAgICAgY2Fz
ZSAwOgogICAgICAgICByZXR1cm4gQ29sb3IoKTsKQEAgLTE5MDUsNyArMTkwNSw3IEBAIGJvb2wg
U3R5bGVSZXNvbHZlcjo6Y3JlYXRlRmlsdGVyT3BlcmF0aW9ucyhjb25zdCBDU1NWYWx1ZSYgaW5W
YWx1ZSwgRmlsdGVyT3BlcmF0CiAgICAgCiAgICAgaWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPihp
blZhbHVlKSkgewogICAgICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1By
aW1pdGl2ZVZhbHVlPihpblZhbHVlKTsKLSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLmdldFZh
bHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUpCisgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS52YWx1
ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQog
ICAgIApAQCAtMTkyOSw3ICsxOTI5LDcgQEAgYm9vbCBTdHlsZVJlc29sdmVyOjpjcmVhdGVGaWx0
ZXJPcGVyYXRpb25zKGNvbnN0IENTU1ZhbHVlJiBpblZhbHVlLCBGaWx0ZXJPcGVyYXQKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUg
PSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oYXJndW1lbnQpOwotICAgICAgICAgICAgU3Ry
aW5nIGNzc1VybCA9IHByaW1pdGl2ZVZhbHVlLmdldFN0cmluZ1ZhbHVlKCk7CisgICAgICAgICAg
ICBTdHJpbmcgY3NzVXJsID0gcHJpbWl0aXZlVmFsdWUuc3RyaW5nVmFsdWUoKTsKICAgICAgICAg
ICAgIFVSTCB1cmwgPSBtX3N0YXRlLmRvY3VtZW50KCkuY29tcGxldGVVUkwoY3NzVXJsKTsKIAog
ICAgICAgICAgICAgUmVmUHRyPFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbj4gb3BlcmF0aW9uID0g
UmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUoY3NzVXJsLCB1cmwuZnJhZ21lbnRJZGVu
dGlmaWVyKCkpOwpAQCAtMTk2MCw3ICsxOTYwLDcgQEAgYm9vbCBTdHlsZVJlc29sdmVyOjpjcmVh
dGVGaWx0ZXJPcGVyYXRpb25zKGNvbnN0IENTU1ZhbHVlJiBpblZhbHVlLCBGaWx0ZXJPcGVyYXQK
ICAgICAgICAgY2FzZSBXZWJLaXRDU1NGaWx0ZXJWYWx1ZTo6U2F0dXJhdGVGaWx0ZXJPcGVyYXRp
b246IHsKICAgICAgICAgICAgIGRvdWJsZSBhbW91bnQgPSAxOwogICAgICAgICAgICAgaWYgKGZp
bHRlclZhbHVlLmxlbmd0aCgpID09IDEpIHsKLSAgICAgICAgICAgICAgICBhbW91bnQgPSBmaXJz
dFZhbHVlLT5nZXREb3VibGVWYWx1ZSgpOworICAgICAgICAgICAgICAgIGFtb3VudCA9IGZpcnN0
VmFsdWUtPmRvdWJsZVZhbHVlKCk7CiAgICAgICAgICAgICAgICAgaWYgKGZpcnN0VmFsdWUtPmlz
UGVyY2VudGFnZSgpKQogICAgICAgICAgICAgICAgICAgICBhbW91bnQgLz0gMTAwOwogICAgICAg
ICAgICAgfQpAQCAtMTk4Miw3ICsxOTgyLDcgQEAgYm9vbCBTdHlsZVJlc29sdmVyOjpjcmVhdGVG
aWx0ZXJPcGVyYXRpb25zKGNvbnN0IENTU1ZhbHVlJiBpblZhbHVlLCBGaWx0ZXJPcGVyYXQKICAg
ICAgICAgY2FzZSBXZWJLaXRDU1NGaWx0ZXJWYWx1ZTo6T3BhY2l0eUZpbHRlck9wZXJhdGlvbjog
ewogICAgICAgICAgICAgZG91YmxlIGFtb3VudCA9IChmaWx0ZXJWYWx1ZS5vcGVyYXRpb25UeXBl
KCkgPT0gV2ViS2l0Q1NTRmlsdGVyVmFsdWU6OkJyaWdodG5lc3NGaWx0ZXJPcGVyYXRpb24pID8g
MCA6IDE7CiAgICAgICAgICAgICBpZiAoZmlsdGVyVmFsdWUubGVuZ3RoKCkgPT0gMSkgewotICAg
ICAgICAgICAgICAgIGFtb3VudCA9IGZpcnN0VmFsdWUtPmdldERvdWJsZVZhbHVlKCk7CisgICAg
ICAgICAgICAgICAgYW1vdW50ID0gZmlyc3RWYWx1ZS0+ZG91YmxlVmFsdWUoKTsKICAgICAgICAg
ICAgICAgICBpZiAoZmlyc3RWYWx1ZS0+aXNQZXJjZW50YWdlKCkpCiAgICAgICAgICAgICAgICAg
ICAgIGFtb3VudCAvPSAxMDA7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvVHJhbnNmb3JtRnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9UcmFu
c2Zvcm1GdW5jdGlvbnMuY3BwCmluZGV4IDYxOTU4YmNmZjgwYTEzNmQ0YzQ5YzI4OTYzMzUxNjA2
ZDYzYjlkMmUuLmY2MjMyNWU1NTkxYWYwNjc1ZDA4NTdlYTlmZjg0ZWIxZTBkMDgwZGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9UcmFuc2Zvcm1GdW5jdGlvbnMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9UcmFuc2Zvcm1GdW5jdGlvbnMuY3BwCkBAIC0xMTUsMTMgKzExNSwx
MyBAQCBib29sIHRyYW5zZm9ybXNGb3JWYWx1ZShjb25zdCBDU1NWYWx1ZSYgdmFsdWUsIGNvbnN0
IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmCiAgICAgICAgICAgICBkb3VibGUgc3ggPSAxLjA7
CiAgICAgICAgICAgICBkb3VibGUgc3kgPSAxLjA7CiAgICAgICAgICAgICBpZiAodHJhbnNmb3Jt
VmFsdWUub3BlcmF0aW9uVHlwZSgpID09IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpTY2FsZVlU
cmFuc2Zvcm1PcGVyYXRpb24pCi0gICAgICAgICAgICAgICAgc3kgPSBmaXJzdFZhbHVlLmdldERv
dWJsZVZhbHVlKCk7CisgICAgICAgICAgICAgICAgc3kgPSBmaXJzdFZhbHVlLmRvdWJsZVZhbHVl
KCk7CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBzeCA9IGZpcnN0VmFsdWUu
Z2V0RG91YmxlVmFsdWUoKTsKKyAgICAgICAgICAgICAgICBzeCA9IGZpcnN0VmFsdWUuZG91Ymxl
VmFsdWUoKTsKICAgICAgICAgICAgICAgICBpZiAodHJhbnNmb3JtVmFsdWUub3BlcmF0aW9uVHlw
ZSgpICE9IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpTY2FsZVhUcmFuc2Zvcm1PcGVyYXRpb24p
IHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHRyYW5zZm9ybVZhbHVlLmxlbmd0aCgpID4gMSkg
ewogICAgICAgICAgICAgICAgICAgICAgICAgYXV0byYgc2Vjb25kVmFsdWUgPSBkb3duY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZT4oKnRyYW5zZm9ybVZhbHVlLml0ZW1XaXRob3V0Qm91bmRzQ2hlY2so
MSkpOwotICAgICAgICAgICAgICAgICAgICAgICAgc3kgPSBzZWNvbmRWYWx1ZS5nZXREb3VibGVW
YWx1ZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgc3kgPSBzZWNvbmRWYWx1ZS5kb3VibGVW
YWx1ZSgpOwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAg
ICAgIHN5ID0gc3g7CiAgICAgICAgICAgICAgICAgfQpAQCAtMTM1LDE5ICsxMzUsMTkgQEAgYm9v
bCB0cmFuc2Zvcm1zRm9yVmFsdWUoY29uc3QgQ1NTVmFsdWUmIHZhbHVlLCBjb25zdCBDU1NUb0xl
bmd0aENvbnZlcnNpb25EYXRhJgogICAgICAgICAgICAgZG91YmxlIHN5ID0gMS4wOwogICAgICAg
ICAgICAgZG91YmxlIHN6ID0gMS4wOwogICAgICAgICAgICAgaWYgKHRyYW5zZm9ybVZhbHVlLm9w
ZXJhdGlvblR5cGUoKSA9PSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6U2NhbGVaVHJhbnNmb3Jt
T3BlcmF0aW9uKQotICAgICAgICAgICAgICAgIHN6ID0gZmlyc3RWYWx1ZS5nZXREb3VibGVWYWx1
ZSgpOworICAgICAgICAgICAgICAgIHN6ID0gZmlyc3RWYWx1ZS5kb3VibGVWYWx1ZSgpOwogICAg
ICAgICAgICAgZWxzZSBpZiAodHJhbnNmb3JtVmFsdWUub3BlcmF0aW9uVHlwZSgpID09IFdlYktp
dENTU1RyYW5zZm9ybVZhbHVlOjpTY2FsZVlUcmFuc2Zvcm1PcGVyYXRpb24pCi0gICAgICAgICAg
ICAgICAgc3kgPSBmaXJzdFZhbHVlLmdldERvdWJsZVZhbHVlKCk7CisgICAgICAgICAgICAgICAg
c3kgPSBmaXJzdFZhbHVlLmRvdWJsZVZhbHVlKCk7CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAg
ICAgICAgICAgICBzeCA9IGZpcnN0VmFsdWUuZ2V0RG91YmxlVmFsdWUoKTsKKyAgICAgICAgICAg
ICAgICBzeCA9IGZpcnN0VmFsdWUuZG91YmxlVmFsdWUoKTsKICAgICAgICAgICAgICAgICBpZiAo
dHJhbnNmb3JtVmFsdWUub3BlcmF0aW9uVHlwZSgpICE9IFdlYktpdENTU1RyYW5zZm9ybVZhbHVl
OjpTY2FsZVhUcmFuc2Zvcm1PcGVyYXRpb24pIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHRy
YW5zZm9ybVZhbHVlLmxlbmd0aCgpID4gMikgewogICAgICAgICAgICAgICAgICAgICAgICAgYXV0
byYgdGhpcmRWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdHJhbnNmb3JtVmFs
dWUuaXRlbVdpdGhvdXRCb3VuZHNDaGVjaygyKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBz
eiA9IHRoaXJkVmFsdWUuZ2V0RG91YmxlVmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHN6ID0gdGhpcmRWYWx1ZS5kb3VibGVWYWx1ZSgpOwogICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1WYWx1ZS5sZW5ndGgoKSA+IDEpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgIGF1dG8mIHNlY29uZFZhbHVlID0gZG93bmNhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWU+KCp0cmFuc2Zvcm1WYWx1ZS5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDEpKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHN5ID0gc2Vjb25kVmFsdWUuZ2V0RG91YmxlVmFsdWUo
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN5ID0gc2Vjb25kVmFsdWUuZG91YmxlVmFsdWUo
KTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICBz
eSA9IHN4OwogICAgICAgICAgICAgICAgIH0KQEAgLTIzNSw5ICsyMzUsOSBAQCBib29sIHRyYW5z
Zm9ybXNGb3JWYWx1ZShjb25zdCBDU1NWYWx1ZSYgdmFsdWUsIGNvbnN0IENTU1RvTGVuZ3RoQ29u
dmVyc2lvbkRhdGEmCiAgICAgICAgICAgICBhdXRvJiBzZWNvbmRWYWx1ZSA9IGRvd25jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlPigqdHJhbnNmb3JtVmFsdWUuaXRlbVdpdGhvdXRCb3VuZHNDaGVjaygx
KSk7CiAgICAgICAgICAgICBhdXRvJiB0aGlyZFZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWU+KCp0cmFuc2Zvcm1WYWx1ZS5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDIpKTsKICAgICAg
ICAgICAgIGF1dG8mIGZvdXJ0aFZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp0
cmFuc2Zvcm1WYWx1ZS5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDMpKTsKLSAgICAgICAgICAgIGRv
dWJsZSB4ID0gZmlyc3RWYWx1ZS5nZXREb3VibGVWYWx1ZSgpOwotICAgICAgICAgICAgZG91Ymxl
IHkgPSBzZWNvbmRWYWx1ZS5nZXREb3VibGVWYWx1ZSgpOwotICAgICAgICAgICAgZG91YmxlIHog
PSB0aGlyZFZhbHVlLmdldERvdWJsZVZhbHVlKCk7CisgICAgICAgICAgICBkb3VibGUgeCA9IGZp
cnN0VmFsdWUuZG91YmxlVmFsdWUoKTsKKyAgICAgICAgICAgIGRvdWJsZSB5ID0gc2Vjb25kVmFs
dWUuZG91YmxlVmFsdWUoKTsKKyAgICAgICAgICAgIGRvdWJsZSB6ID0gdGhpcmRWYWx1ZS5kb3Vi
bGVWYWx1ZSgpOwogICAgICAgICAgICAgZG91YmxlIGFuZ2xlID0gZm91cnRoVmFsdWUuY29tcHV0
ZURlZ3JlZXMoKTsKICAgICAgICAgICAgIG9wZXJhdGlvbnMub3BlcmF0aW9ucygpLmFwcGVuZChS
b3RhdGVUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZSh4LCB5LCB6LCBhbmdsZSwgdHJhbnNmb3Jt
T3BlcmF0aW9uVHlwZSh0cmFuc2Zvcm1WYWx1ZS5vcGVyYXRpb25UeXBlKCkpKSk7CiAgICAgICAg
ICAgICBicmVhazsKQEAgLTI2NSwzNCArMjY1LDM0IEBAIGJvb2wgdHJhbnNmb3Jtc0ZvclZhbHVl
KGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYK
ICAgICAgICAgY2FzZSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6TWF0cml4VHJhbnNmb3JtT3Bl
cmF0aW9uOiB7CiAgICAgICAgICAgICBpZiAodHJhbnNmb3JtVmFsdWUubGVuZ3RoKCkgPCA2KQog
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZG91YmxlIGEgPSBmaXJzdFZhbHVl
LmdldERvdWJsZVZhbHVlKCk7Ci0gICAgICAgICAgICBkb3VibGUgYiA9IGRvd25jYXN0PENTU1By
aW1pdGl2ZVZhbHVlPigqdHJhbnNmb3JtVmFsdWUuaXRlbVdpdGhvdXRCb3VuZHNDaGVjaygxKSku
Z2V0RG91YmxlVmFsdWUoKTsKLSAgICAgICAgICAgIGRvdWJsZSBjID0gZG93bmNhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWU+KCp0cmFuc2Zvcm1WYWx1ZS5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDIpKS5n
ZXREb3VibGVWYWx1ZSgpOwotICAgICAgICAgICAgZG91YmxlIGQgPSBkb3duY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZT4oKnRyYW5zZm9ybVZhbHVlLml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMykpLmdl
dERvdWJsZVZhbHVlKCk7Ci0gICAgICAgICAgICBkb3VibGUgZSA9IGNvbnZlcnNpb25EYXRhLnpv
b20oKSAqIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdHJhbnNmb3JtVmFsdWUuaXRlbVdp
dGhvdXRCb3VuZHNDaGVjayg0KSkuZ2V0RG91YmxlVmFsdWUoKTsKLSAgICAgICAgICAgIGRvdWJs
ZSBmID0gY29udmVyc2lvbkRhdGEuem9vbSgpICogZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+
KCp0cmFuc2Zvcm1WYWx1ZS5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDUpKS5nZXREb3VibGVWYWx1
ZSgpOworICAgICAgICAgICAgZG91YmxlIGEgPSBmaXJzdFZhbHVlLmRvdWJsZVZhbHVlKCk7Cisg
ICAgICAgICAgICBkb3VibGUgYiA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdHJhbnNm
b3JtVmFsdWUuaXRlbVdpdGhvdXRCb3VuZHNDaGVjaygxKSkuZG91YmxlVmFsdWUoKTsKKyAgICAg
ICAgICAgIGRvdWJsZSBjID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp0cmFuc2Zvcm1W
YWx1ZS5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDIpKS5kb3VibGVWYWx1ZSgpOworICAgICAgICAg
ICAgZG91YmxlIGQgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnRyYW5zZm9ybVZhbHVl
Lml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMykpLmRvdWJsZVZhbHVlKCk7CisgICAgICAgICAgICBk
b3VibGUgZSA9IGNvbnZlcnNpb25EYXRhLnpvb20oKSAqIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlPigqdHJhbnNmb3JtVmFsdWUuaXRlbVdpdGhvdXRCb3VuZHNDaGVjayg0KSkuZG91YmxlVmFs
dWUoKTsKKyAgICAgICAgICAgIGRvdWJsZSBmID0gY29udmVyc2lvbkRhdGEuem9vbSgpICogZG93
bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp0cmFuc2Zvcm1WYWx1ZS5pdGVtV2l0aG91dEJvdW5k
c0NoZWNrKDUpKS5kb3VibGVWYWx1ZSgpOwogICAgICAgICAgICAgb3BlcmF0aW9ucy5vcGVyYXRp
b25zKCkuYXBwZW5kKE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKGEsIGIsIGMsIGQs
IGUsIGYpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgV2Vi
S2l0Q1NTVHJhbnNmb3JtVmFsdWU6Ok1hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uOiB7CiAgICAg
ICAgICAgICBpZiAodHJhbnNmb3JtVmFsdWUubGVuZ3RoKCkgPCAxNikKICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1hdHJpeChkb3duY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZT4oKnRyYW5zZm9ybVZhbHVlLml0ZW1XaXRob3V0Qm91bmRzQ2hl
Y2soMCkpLmdldERvdWJsZVZhbHVlKCksCi0gICAgICAgICAgICAgICAgZG93bmNhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWU+KCp0cmFuc2Zvcm1WYWx1ZS5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDEpKS5n
ZXREb3VibGVWYWx1ZSgpLAotICAgICAgICAgICAgICAgIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlPigqdHJhbnNmb3JtVmFsdWUuaXRlbVdpdGhvdXRCb3VuZHNDaGVjaygyKSkuZ2V0RG91Ymxl
VmFsdWUoKSwKLSAgICAgICAgICAgICAgICBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnRy
YW5zZm9ybVZhbHVlLml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMykpLmdldERvdWJsZVZhbHVlKCks
Ci0gICAgICAgICAgICAgICAgZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp0cmFuc2Zvcm1W
YWx1ZS5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDQpKS5nZXREb3VibGVWYWx1ZSgpLAotICAgICAg
ICAgICAgICAgIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdHJhbnNmb3JtVmFsdWUuaXRl
bVdpdGhvdXRCb3VuZHNDaGVjayg1KSkuZ2V0RG91YmxlVmFsdWUoKSwKLSAgICAgICAgICAgICAg
ICBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnRyYW5zZm9ybVZhbHVlLml0ZW1XaXRob3V0
Qm91bmRzQ2hlY2soNikpLmdldERvdWJsZVZhbHVlKCksCi0gICAgICAgICAgICAgICAgZG93bmNh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp0cmFuc2Zvcm1WYWx1ZS5pdGVtV2l0aG91dEJvdW5kc0No
ZWNrKDcpKS5nZXREb3VibGVWYWx1ZSgpLAotICAgICAgICAgICAgICAgIGRvd25jYXN0PENTU1By
aW1pdGl2ZVZhbHVlPigqdHJhbnNmb3JtVmFsdWUuaXRlbVdpdGhvdXRCb3VuZHNDaGVjayg4KSku
Z2V0RG91YmxlVmFsdWUoKSwKLSAgICAgICAgICAgICAgICBkb3duY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZT4oKnRyYW5zZm9ybVZhbHVlLml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soOSkpLmdldERvdWJs
ZVZhbHVlKCksCi0gICAgICAgICAgICAgICAgZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp0
cmFuc2Zvcm1WYWx1ZS5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDEwKSkuZ2V0RG91YmxlVmFsdWUo
KSwKLSAgICAgICAgICAgICAgICBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnRyYW5zZm9y
bVZhbHVlLml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMTEpKS5nZXREb3VibGVWYWx1ZSgpLAotICAg
ICAgICAgICAgICAgIGNvbnZlcnNpb25EYXRhLnpvb20oKSAqIGRvd25jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlPigqdHJhbnNmb3JtVmFsdWUuaXRlbVdpdGhvdXRCb3VuZHNDaGVjaygxMikpLmdldERv
dWJsZVZhbHVlKCksCi0gICAgICAgICAgICAgICAgY29udmVyc2lvbkRhdGEuem9vbSgpICogZG93
bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp0cmFuc2Zvcm1WYWx1ZS5pdGVtV2l0aG91dEJvdW5k
c0NoZWNrKDEzKSkuZ2V0RG91YmxlVmFsdWUoKSwKLSAgICAgICAgICAgICAgICBkb3duY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZT4oKnRyYW5zZm9ybVZhbHVlLml0ZW1XaXRob3V0Qm91bmRzQ2hlY2so
MTQpKS5nZXREb3VibGVWYWx1ZSgpLAotICAgICAgICAgICAgICAgIGRvd25jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlPigqdHJhbnNmb3JtVmFsdWUuaXRlbVdpdGhvdXRCb3VuZHNDaGVjaygxNSkpLmdl
dERvdWJsZVZhbHVlKCkpOworICAgICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbWF0cml4
KGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdHJhbnNmb3JtVmFsdWUuaXRlbVdpdGhvdXRC
b3VuZHNDaGVjaygwKSkuZG91YmxlVmFsdWUoKSwKKyAgICAgICAgICAgICAgICBkb3duY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZT4oKnRyYW5zZm9ybVZhbHVlLml0ZW1XaXRob3V0Qm91bmRzQ2hlY2so
MSkpLmRvdWJsZVZhbHVlKCksCisgICAgICAgICAgICAgICAgZG93bmNhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWU+KCp0cmFuc2Zvcm1WYWx1ZS5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDIpKS5kb3VibGVW
YWx1ZSgpLAorICAgICAgICAgICAgICAgIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdHJh
bnNmb3JtVmFsdWUuaXRlbVdpdGhvdXRCb3VuZHNDaGVjaygzKSkuZG91YmxlVmFsdWUoKSwKKyAg
ICAgICAgICAgICAgICBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnRyYW5zZm9ybVZhbHVl
Lml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soNCkpLmRvdWJsZVZhbHVlKCksCisgICAgICAgICAgICAg
ICAgZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp0cmFuc2Zvcm1WYWx1ZS5pdGVtV2l0aG91
dEJvdW5kc0NoZWNrKDUpKS5kb3VibGVWYWx1ZSgpLAorICAgICAgICAgICAgICAgIGRvd25jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlPigqdHJhbnNmb3JtVmFsdWUuaXRlbVdpdGhvdXRCb3VuZHNDaGVj
ayg2KSkuZG91YmxlVmFsdWUoKSwKKyAgICAgICAgICAgICAgICBkb3duY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZT4oKnRyYW5zZm9ybVZhbHVlLml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soNykpLmRvdWJs
ZVZhbHVlKCksCisgICAgICAgICAgICAgICAgZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp0
cmFuc2Zvcm1WYWx1ZS5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDgpKS5kb3VibGVWYWx1ZSgpLAor
ICAgICAgICAgICAgICAgIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdHJhbnNmb3JtVmFs
dWUuaXRlbVdpdGhvdXRCb3VuZHNDaGVjayg5KSkuZG91YmxlVmFsdWUoKSwKKyAgICAgICAgICAg
ICAgICBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnRyYW5zZm9ybVZhbHVlLml0ZW1XaXRo
b3V0Qm91bmRzQ2hlY2soMTApKS5kb3VibGVWYWx1ZSgpLAorICAgICAgICAgICAgICAgIGRvd25j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdHJhbnNmb3JtVmFsdWUuaXRlbVdpdGhvdXRCb3VuZHND
aGVjaygxMSkpLmRvdWJsZVZhbHVlKCksCisgICAgICAgICAgICAgICAgY29udmVyc2lvbkRhdGEu
em9vbSgpICogZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp0cmFuc2Zvcm1WYWx1ZS5pdGVt
V2l0aG91dEJvdW5kc0NoZWNrKDEyKSkuZG91YmxlVmFsdWUoKSwKKyAgICAgICAgICAgICAgICBj
b252ZXJzaW9uRGF0YS56b29tKCkgKiBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnRyYW5z
Zm9ybVZhbHVlLml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMTMpKS5kb3VibGVWYWx1ZSgpLAorICAg
ICAgICAgICAgICAgIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdHJhbnNmb3JtVmFsdWUu
aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygxNCkpLmRvdWJsZVZhbHVlKCksCisgICAgICAgICAgICAg
ICAgZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp0cmFuc2Zvcm1WYWx1ZS5pdGVtV2l0aG91
dEJvdW5kc0NoZWNrKDE1KSkuZG91YmxlVmFsdWUoKSk7CiAgICAgICAgICAgICBvcGVyYXRpb25z
Lm9wZXJhdGlvbnMoKS5hcHBlbmQoTWF0cml4M0RUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZSht
YXRyaXgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0zMDIsNyArMzAyLDcg
QEAgYm9vbCB0cmFuc2Zvcm1zRm9yVmFsdWUoY29uc3QgQ1NTVmFsdWUmIHZhbHVlLCBjb25zdCBD
U1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJgogICAgICAgICAgICAgICAgIHAgPSBjb252ZXJ0VG9G
bG9hdExlbmd0aCgmZmlyc3RWYWx1ZSwgY29udmVyc2lvbkRhdGEpOwogICAgICAgICAgICAgZWxz
ZSB7CiAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBhIHF1aXJrIHRoYXQgc2hvdWxkIGdvIGF3
YXkgd2hlbiAzZCB0cmFuc2Zvcm1zIGFyZSBmaW5hbGl6ZWQuCi0gICAgICAgICAgICAgICAgZG91
YmxlIHZhbCA9IGZpcnN0VmFsdWUuZ2V0RG91YmxlVmFsdWUoKTsKKyAgICAgICAgICAgICAgICBk
b3VibGUgdmFsID0gZmlyc3RWYWx1ZS5kb3VibGVWYWx1ZSgpOwogICAgICAgICAgICAgICAgIHAg
PSB2YWwgPj0gMCA/IExlbmd0aChjbGFtcFRvUG9zaXRpdmVJbnRlZ2VyKHZhbCksIEZpeGVkKSA6
IExlbmd0aChVbmRlZmluZWQpOwogICAgICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvVmlld3BvcnRTdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9WaWV3cG9ydFN0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IGRiYjZjYzRkZjQ0MDQxNWE0YmM0MGUw
YzllMGRhYTZjMTJhNTY5YmEuLmRjMzQyMTkyNGFmZDIzNTNiOWIzY2Y2NjYxMWUyNjI4Mzk0YmUx
NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9WaWV3cG9ydFN0eWxlUmVzb2x2ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9WaWV3cG9ydFN0eWxlUmVzb2x2ZXIuY3BwCkBA
IC0xMTQsMTMgKzExNCwxMyBAQCBmbG9hdCBWaWV3cG9ydFN0eWxlUmVzb2x2ZXI6OmdldFZpZXdw
b3J0QXJndW1lbnRWYWx1ZShDU1NQcm9wZXJ0eUlEIGlkKSBjb25zdAogICAgIENTU1ByaW1pdGl2
ZVZhbHVlJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFs
dWUpOwogCiAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLmlzTnVtYmVyKCkgfHwgcHJpbWl0aXZlVmFs
dWUuaXNQeCgpKQotICAgICAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWUuZ2V0RmxvYXRWYWx1ZSgp
OworICAgICAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWUuZmxvYXRWYWx1ZSgpOwogCiAgICAgaWYg
KHByaW1pdGl2ZVZhbHVlLmlzRm9udFJlbGF0aXZlTGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiBw
cmltaXRpdmVWYWx1ZS5nZXRGbG9hdFZhbHVlKCkgKiBtX2RvY3VtZW50LT5kb2N1bWVudEVsZW1l
bnQoKS0+cmVuZGVyU3R5bGUoKS0+Zm9udERlc2NyaXB0aW9uKCkuY29tcHV0ZWRTaXplKCk7Cisg
ICAgICAgIHJldHVybiBwcmltaXRpdmVWYWx1ZS5mbG9hdFZhbHVlKCkgKiBtX2RvY3VtZW50LT5k
b2N1bWVudEVsZW1lbnQoKS0+cmVuZGVyU3R5bGUoKS0+Zm9udERlc2NyaXB0aW9uKCkuY29tcHV0
ZWRTaXplKCk7CiAKICAgICBpZiAocHJpbWl0aXZlVmFsdWUuaXNQZXJjZW50YWdlKCkpIHsKLSAg
ICAgICAgZmxvYXQgcGVyY2VudFZhbHVlID0gcHJpbWl0aXZlVmFsdWUuZ2V0RmxvYXRWYWx1ZSgp
IC8gMTAwLjBmOworICAgICAgICBmbG9hdCBwZXJjZW50VmFsdWUgPSBwcmltaXRpdmVWYWx1ZS5m
bG9hdFZhbHVlKCkgLyAxMDAuMGY7CiAgICAgICAgIHN3aXRjaCAoaWQpIHsKICAgICAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eU1heEhlaWdodDoKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eU1pbkhlaWdo
dDoKQEAgLTE0MCw3ICsxNDAsNyBAQCBmbG9hdCBWaWV3cG9ydFN0eWxlUmVzb2x2ZXI6OmdldFZp
ZXdwb3J0QXJndW1lbnRWYWx1ZShDU1NQcm9wZXJ0eUlEIGlkKSBjb25zdAogICAgICAgICB9CiAg
ICAgfQogCi0gICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkpIHsKKyAgICBz
d2l0Y2ggKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSkgewogICAgIGNhc2UgQ1NTVmFsdWVBdXRv
OgogICAgICAgICByZXR1cm4gZGVmYXVsdFZhbHVlOwogICAgIGNhc2UgQ1NTVmFsdWVEZXZpY2VI
ZWlnaHQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NNYXRyaXguY3BwCmluZGV4IDFiY2E0ZmRl
MTQ0Y2I1ZjIyYjk5ZmFmMTk2MDYwNjBlOTFmOTY1ZjEuLmUzOGFhZmNlZTNiNmEwYzhlMDNlMzQx
MzZiYzQwNjRlYjA1MzY1MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRD
U1NNYXRyaXguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NNYXRyaXguY3Bw
CkBAIC0zNyw1NSArMzcsNTcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1XZWJLaXRDU1NN
YXRyaXg6OldlYktpdENTU01hdHJpeChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbSkKLSAg
ICA6IG1fbWF0cml4KG0pCitpbmxpbmUgV2ViS2l0Q1NTTWF0cml4OjpXZWJLaXRDU1NNYXRyaXgo
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCkKKyAgICA6IG1fbWF0cml4KG1hdHJp
eCkKIHsKIH0KIAotV2ViS2l0Q1NTTWF0cml4OjpXZWJLaXRDU1NNYXRyaXgoY29uc3QgU3RyaW5n
JiBzLCBFeGNlcHRpb25Db2RlJiBlYykKK1JlZjxXZWJLaXRDU1NNYXRyaXg+IFdlYktpdENTU01h
dHJpeDo6Y3JlYXRlKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgpCiB7Ci0gICAg
c2V0TWF0cml4VmFsdWUocywgZWMpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYktpdENT
U01hdHJpeChtYXRyaXgpKTsKK30KKworRXhjZXB0aW9uT3I8UmVmPFdlYktpdENTU01hdHJpeD4+
IFdlYktpdENTU01hdHJpeDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgc3RyaW5nKQoreworICAgIGF1
dG8gcmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBXZWJLaXRDU1NNYXRyaXgpOworICAgIGF1dG8gc2V0
TWF0cml4VmFsdWVSZXN1bHQgPSByZXN1bHQtPnNldE1hdHJpeFZhbHVlKHN0cmluZyk7CisgICAg
aWYgKHNldE1hdHJpeFZhbHVlUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4g
c2V0TWF0cml4VmFsdWVSZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOworICAgIHJldHVybiBXVEZN
b3ZlKHJlc3VsdCk7CiB9CiAKIFdlYktpdENTU01hdHJpeDo6fldlYktpdENTU01hdHJpeCgpCiB7
CiB9CiAKLXZvaWQgV2ViS2l0Q1NTTWF0cml4OjpzZXRNYXRyaXhWYWx1ZShjb25zdCBTdHJpbmcm
IHN0cmluZywgRXhjZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRpb25Pcjx2b2lkPiBXZWJLaXRDU1NN
YXRyaXg6OnNldE1hdHJpeFZhbHVlKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIGlmIChz
dHJpbmcuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB7IH07CiAK
ICAgICBhdXRvIHN0eWxlRGVjbGFyYXRpb24gPSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVh
dGUoKTsKLSAgICBpZiAoQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKHN0eWxlRGVjbGFyYXRpb24sIENT
U1Byb3BlcnR5VHJhbnNmb3JtLCBzdHJpbmcsIHRydWUsIEhUTUxTdGFuZGFyZE1vZGUsIG51bGxw
dHIpICE9IENTU1BhcnNlcjo6UGFyc2VSZXN1bHQ6OkVycm9yKSB7Ci0gICAgICAgIC8vIENvbnZl
cnQgdG8gVHJhbnNmb3JtT3BlcmF0aW9ucy4gVGhpcyBjYW4gZmFpbCBpZiBhIHByb3BlcnR5Ci0g
ICAgICAgIC8vIHJlcXVpcmVzIHN0eWxlIChpLmUuLCBwYXJhbSB1c2VzICdlbXMnIG9yICdleHMn
KQotICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlID0gc3R5bGVEZWNsYXJhdGlvbi0+Z2V0
UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eVRyYW5zZm9ybSk7Ci0KLSAgICAgICAgLy8gQ2hl
Y2sgZm9yIGEgIm5vbmUiIG9yIGVtcHR5IHRyYW5zZm9ybS4gSW4gdGhlc2UgY2FzZXMgd2UgY2Fu
IHVzZSB0aGUgZGVmYXVsdCBpZGVudGl0eSBtYXRyaXguCi0gICAgICAgIGlmICghdmFsdWUgfHwg
KGlzPENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUpICYmIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlPigqdmFsdWUpLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUpKQotICAgICAgICAgICAg
cmV0dXJuOwotCi0gICAgICAgIFRyYW5zZm9ybU9wZXJhdGlvbnMgb3BlcmF0aW9uczsKLSAgICAg
ICAgaWYgKCF0cmFuc2Zvcm1zRm9yVmFsdWUoKnZhbHVlLCBDU1NUb0xlbmd0aENvbnZlcnNpb25E
YXRhKCksIG9wZXJhdGlvbnMpKSB7Ci0gICAgICAgICAgICBlYyA9IFNZTlRBWF9FUlI7Ci0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBDb252ZXJ0IHRyYW5zZm9y
bSBvcGVyYXRpb25zIHRvIGEgVHJhbnNmb3JtYXRpb25NYXRyaXguIFRoaXMgY2FuIGZhaWwKLSAg
ICAgICAgLy8gaWYgYSBwYXJhbSBoYXMgYSBwZXJjZW50YWdlICgnJScpCi0gICAgICAgIFRyYW5z
Zm9ybWF0aW9uTWF0cml4IHQ7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBvcGVy
YXRpb25zLm9wZXJhdGlvbnMoKS5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgaWYgKG9wZXJh
dGlvbnMub3BlcmF0aW9ucygpW2ldLmdldCgpLT5hcHBseSh0LCBJbnRTaXplKDAsIDApKSkgewot
ICAgICAgICAgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKLSAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBzZXQgdGhlIG1hdHJpeAot
ICAgICAgICBtX21hdHJpeCA9IHQ7Ci0gICAgfSBlbHNlIC8vIFRoZXJlIGlzIHNvbWV0aGluZyB0
aGVyZSBidXQgcGFyc2luZyBmYWlsZWQuCi0gICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICBp
ZiAoQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKHN0eWxlRGVjbGFyYXRpb24sIENTU1Byb3BlcnR5VHJh
bnNmb3JtLCBzdHJpbmcsIHRydWUsIEhUTUxTdGFuZGFyZE1vZGUsIG51bGxwdHIpID09IENTU1Bh
cnNlcjo6UGFyc2VSZXN1bHQ6OkVycm9yKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU1lO
VEFYX0VSUiB9OworCisgICAgLy8gQ29udmVydCB0byBUcmFuc2Zvcm1PcGVyYXRpb25zLiBUaGlz
IGNhbiBmYWlsIGlmIGEgcHJvcGVydHkgcmVxdWlyZXMgc3R5bGUgKGkuZS4sIHBhcmFtIHVzZXMg
J2Vtcycgb3IgJ2V4cycpCisgICAgYXV0byB2YWx1ZSA9IHN0eWxlRGVjbGFyYXRpb24tPmdldFBy
b3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlUcmFuc2Zvcm0pOworCisgICAgLy8gQ2hlY2sgZm9y
IGEgIm5vbmUiIG9yIGVtcHR5IHRyYW5zZm9ybS4gSW4gdGhlc2UgY2FzZXMgd2UgY2FuIHVzZSB0
aGUgZGVmYXVsdCBpZGVudGl0eSBtYXRyaXguCisgICAgaWYgKCF2YWx1ZSB8fCAoaXM8Q1NTUHJp
bWl0aXZlVmFsdWU+KCp2YWx1ZSkgJiYgZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YWx1
ZSkudmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZSkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAg
ICBUcmFuc2Zvcm1PcGVyYXRpb25zIG9wZXJhdGlvbnM7CisgICAgaWYgKCF0cmFuc2Zvcm1zRm9y
VmFsdWUoKnZhbHVlLCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhKCksIG9wZXJhdGlvbnMpKQor
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU1lOVEFYX0VSUiB9OworCisgICAgLy8gQ29udmVy
dCB0cmFuc2Zvcm0gb3BlcmF0aW9ucyB0byBhIFRyYW5zZm9ybWF0aW9uTWF0cml4LiBUaGlzIGNh
biBmYWlsIGlmIGEgcGFyYW1ldGVyIGhhcyBhIHBlcmNlbnRhZ2UgKCclJykuCisgICAgVHJhbnNm
b3JtYXRpb25NYXRyaXggbWF0cml4OworICAgIGZvciAoYXV0byYgb3BlcmF0aW9uIDogb3BlcmF0
aW9ucy5vcGVyYXRpb25zKCkpIHsKKyAgICAgICAgaWYgKG9wZXJhdGlvbi0+YXBwbHkobWF0cml4
LCBJbnRTaXplKDAsIDApKSkKKyAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTWU5UQVhf
RVJSIH07CisgICAgfQorICAgIG1fbWF0cml4ID0gbWF0cml4OworICAgIHJldHVybiB7IH07CiB9
CiAKIC8vIFBlcmZvcm0gYSBjb25jYXRlbmF0aW9uIG9mIHRoZSBtYXRyaWNlcyAodGhpcyAqIHNl
Y29uZE1hdHJpeCkKQEAgLTk0LDIxICs5NiwyMCBAQCBSZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiBX
ZWJLaXRDU1NNYXRyaXg6Om11bHRpcGx5KFdlYktpdENTU01hdHJpeCogc2Vjb25kTWF0cml4KQog
ICAgIGlmICghc2Vjb25kTWF0cml4KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJl
ZlB0cjxXZWJLaXRDU1NNYXRyaXg+IG1hdHJpeCA9IFdlYktpdENTU01hdHJpeDo6Y3JlYXRlKG1f
bWF0cml4KTsKKyAgICBhdXRvIG1hdHJpeCA9IGNyZWF0ZShtX21hdHJpeCk7CiAgICAgbWF0cml4
LT5tX21hdHJpeC5tdWx0aXBseShzZWNvbmRNYXRyaXgtPm1fbWF0cml4KTsKLSAgICByZXR1cm4g
bWF0cml4OworICAgIHJldHVybiBXVEZNb3ZlKG1hdHJpeCk7CiB9CiAKLVJlZlB0cjxXZWJLaXRD
U1NNYXRyaXg+IFdlYktpdENTU01hdHJpeDo6aW52ZXJzZShFeGNlcHRpb25Db2RlJiBlYykgY29u
c3QKK0V4Y2VwdGlvbk9yPFJlZjxXZWJLaXRDU1NNYXRyaXg+PiBXZWJLaXRDU1NNYXRyaXg6Omlu
dmVyc2UoKSBjb25zdAogewotICAgIGlmIChhdXRvIGludmVyc2UgPSBtX21hdHJpeC5pbnZlcnNl
KCkpCi0gICAgICAgIHJldHVybiBXZWJLaXRDU1NNYXRyaXg6OmNyZWF0ZShpbnZlcnNlLnZhbHVl
KCkpOwotICAgIAotICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7Ci0gICAgcmV0dXJuIG51bGxw
dHI7CisgICAgYXV0byBpbnZlcnNlID0gbV9tYXRyaXguaW52ZXJzZSgpOworICAgIGlmICghaW52
ZXJzZSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5PVF9TVVBQT1JURURfRVJSIH07Cisg
ICAgcmV0dXJuIGNyZWF0ZShpbnZlcnNlLnZhbHVlKCkpOwogfQogCi1SZWZQdHI8V2ViS2l0Q1NT
TWF0cml4PiBXZWJLaXRDU1NNYXRyaXg6OnRyYW5zbGF0ZShkb3VibGUgeCwgZG91YmxlIHksIGRv
dWJsZSB6KSBjb25zdAorUmVmPFdlYktpdENTU01hdHJpeD4gV2ViS2l0Q1NTTWF0cml4Ojp0cmFu
c2xhdGUoZG91YmxlIHgsIGRvdWJsZSB5LCBkb3VibGUgeikgY29uc3QKIHsKICAgICBpZiAoc3Rk
Ojppc25hbih4KSkKICAgICAgICAgeCA9IDA7CkBAIC0xMTcsMTIgKzExOCwxMiBAQCBSZWZQdHI8
V2ViS2l0Q1NTTWF0cml4PiBXZWJLaXRDU1NNYXRyaXg6OnRyYW5zbGF0ZShkb3VibGUgeCwgZG91
YmxlIHksIGRvdWJsZSB6KQogICAgIGlmIChzdGQ6OmlzbmFuKHopKQogICAgICAgICB6ID0gMDsK
IAotICAgIFJlZlB0cjxXZWJLaXRDU1NNYXRyaXg+IG1hdHJpeCA9IFdlYktpdENTU01hdHJpeDo6
Y3JlYXRlKG1fbWF0cml4KTsKKyAgICBhdXRvIG1hdHJpeCA9IGNyZWF0ZShtX21hdHJpeCk7CiAg
ICAgbWF0cml4LT5tX21hdHJpeC50cmFuc2xhdGUzZCh4LCB5LCB6KTsKICAgICByZXR1cm4gbWF0
cml4OwogfQogCi1SZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiBXZWJLaXRDU1NNYXRyaXg6OnNjYWxl
KGRvdWJsZSBzY2FsZVgsIGRvdWJsZSBzY2FsZVksIGRvdWJsZSBzY2FsZVopIGNvbnN0CitSZWY8
V2ViS2l0Q1NTTWF0cml4PiBXZWJLaXRDU1NNYXRyaXg6OnNjYWxlKGRvdWJsZSBzY2FsZVgsIGRv
dWJsZSBzY2FsZVksIGRvdWJsZSBzY2FsZVopIGNvbnN0CiB7CiAgICAgaWYgKHN0ZDo6aXNuYW4o
c2NhbGVYKSkKICAgICAgICAgc2NhbGVYID0gMTsKQEAgLTEzMSwxMiArMTMyLDEyIEBAIFJlZlB0
cjxXZWJLaXRDU1NNYXRyaXg+IFdlYktpdENTU01hdHJpeDo6c2NhbGUoZG91YmxlIHNjYWxlWCwg
ZG91YmxlIHNjYWxlWSwgZG91CiAgICAgaWYgKHN0ZDo6aXNuYW4oc2NhbGVaKSkKICAgICAgICAg
c2NhbGVaID0gMTsKIAotICAgIFJlZlB0cjxXZWJLaXRDU1NNYXRyaXg+IG1hdHJpeCA9IFdlYktp
dENTU01hdHJpeDo6Y3JlYXRlKG1fbWF0cml4KTsKKyAgICBhdXRvIG1hdHJpeCA9IGNyZWF0ZSht
X21hdHJpeCk7CiAgICAgbWF0cml4LT5tX21hdHJpeC5zY2FsZTNkKHNjYWxlWCwgc2NhbGVZLCBz
Y2FsZVopOwogICAgIHJldHVybiBtYXRyaXg7CiB9CiAKLVJlZlB0cjxXZWJLaXRDU1NNYXRyaXg+
IFdlYktpdENTU01hdHJpeDo6cm90YXRlKGRvdWJsZSByb3RYLCBkb3VibGUgcm90WSwgZG91Ymxl
IHJvdFopIGNvbnN0CitSZWY8V2ViS2l0Q1NTTWF0cml4PiBXZWJLaXRDU1NNYXRyaXg6OnJvdGF0
ZShkb3VibGUgcm90WCwgZG91YmxlIHJvdFksIGRvdWJsZSByb3RaKSBjb25zdAogewogICAgIGlm
IChzdGQ6OmlzbmFuKHJvdFgpKQogICAgICAgICByb3RYID0gMDsKQEAgLTE1MiwxMiArMTUzLDEy
IEBAIFJlZlB0cjxXZWJLaXRDU1NNYXRyaXg+IFdlYktpdENTU01hdHJpeDo6cm90YXRlKGRvdWJs
ZSByb3RYLCBkb3VibGUgcm90WSwgZG91YmxlCiAgICAgaWYgKHN0ZDo6aXNuYW4ocm90WikpCiAg
ICAgICAgIHJvdFogPSAwOwogCi0gICAgUmVmUHRyPFdlYktpdENTU01hdHJpeD4gbWF0cml4ID0g
V2ViS2l0Q1NTTWF0cml4OjpjcmVhdGUobV9tYXRyaXgpOworICAgIGF1dG8gbWF0cml4ID0gY3Jl
YXRlKG1fbWF0cml4KTsKICAgICBtYXRyaXgtPm1fbWF0cml4LnJvdGF0ZTNkKHJvdFgsIHJvdFks
IHJvdFopOwogICAgIHJldHVybiBtYXRyaXg7CiB9CiAKLVJlZlB0cjxXZWJLaXRDU1NNYXRyaXg+
IFdlYktpdENTU01hdHJpeDo6cm90YXRlQXhpc0FuZ2xlKGRvdWJsZSB4LCBkb3VibGUgeSwgZG91
YmxlIHosIGRvdWJsZSBhbmdsZSkgY29uc3QKK1JlZjxXZWJLaXRDU1NNYXRyaXg+IFdlYktpdENT
U01hdHJpeDo6cm90YXRlQXhpc0FuZ2xlKGRvdWJsZSB4LCBkb3VibGUgeSwgZG91YmxlIHosIGRv
dWJsZSBhbmdsZSkgY29uc3QKIHsKICAgICBpZiAoc3RkOjppc25hbih4KSkKICAgICAgICAgeCA9
IDA7CkBAIC0xNzAsMjcgKzE3MSwyNyBAQCBSZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiBXZWJLaXRD
U1NNYXRyaXg6OnJvdGF0ZUF4aXNBbmdsZShkb3VibGUgeCwgZG91YmxlIHksIGRvdQogICAgIGlm
ICh4ID09IDAgJiYgeSA9PSAwICYmIHogPT0gMCkKICAgICAgICAgeiA9IDE7CiAKLSAgICBSZWZQ
dHI8V2ViS2l0Q1NTTWF0cml4PiBtYXRyaXggPSBXZWJLaXRDU1NNYXRyaXg6OmNyZWF0ZShtX21h
dHJpeCk7CisgICAgYXV0byBtYXRyaXggPSBjcmVhdGUobV9tYXRyaXgpOwogICAgIG1hdHJpeC0+
bV9tYXRyaXgucm90YXRlM2QoeCwgeSwgeiwgYW5nbGUpOwogICAgIHJldHVybiBtYXRyaXg7CiB9
CiAKLVJlZlB0cjxXZWJLaXRDU1NNYXRyaXg+IFdlYktpdENTU01hdHJpeDo6c2tld1goZG91Ymxl
IGFuZ2xlKSBjb25zdAorUmVmPFdlYktpdENTU01hdHJpeD4gV2ViS2l0Q1NTTWF0cml4Ojpza2V3
WChkb3VibGUgYW5nbGUpIGNvbnN0CiB7CiAgICAgaWYgKHN0ZDo6aXNuYW4oYW5nbGUpKQogICAg
ICAgICBhbmdsZSA9IDA7CiAKLSAgICBSZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiBtYXRyaXggPSBX
ZWJLaXRDU1NNYXRyaXg6OmNyZWF0ZShtX21hdHJpeCk7CisgICAgYXV0byBtYXRyaXggPSBjcmVh
dGUobV9tYXRyaXgpOwogICAgIG1hdHJpeC0+bV9tYXRyaXguc2tld1goYW5nbGUpOwogICAgIHJl
dHVybiBtYXRyaXg7CiB9CiAKLVJlZlB0cjxXZWJLaXRDU1NNYXRyaXg+IFdlYktpdENTU01hdHJp
eDo6c2tld1koZG91YmxlIGFuZ2xlKSBjb25zdAorUmVmPFdlYktpdENTU01hdHJpeD4gV2ViS2l0
Q1NTTWF0cml4Ojpza2V3WShkb3VibGUgYW5nbGUpIGNvbnN0CiB7CiAgICAgaWYgKHN0ZDo6aXNu
YW4oYW5nbGUpKQogICAgICAgICBhbmdsZSA9IDA7CiAKLSAgICBSZWZQdHI8V2ViS2l0Q1NTTWF0
cml4PiBtYXRyaXggPSBXZWJLaXRDU1NNYXRyaXg6OmNyZWF0ZShtX21hdHJpeCk7CisgICAgYXV0
byBtYXRyaXggPSBjcmVhdGUobV9tYXRyaXgpOwogICAgIG1hdHJpeC0+bV9tYXRyaXguc2tld1ko
YW5nbGUpOwogICAgIHJldHVybiBtYXRyaXg7CiB9CkBAIC0xOTksMTMgKzIwMCwxMiBAQCBTdHJp
bmcgV2ViS2l0Q1NTTWF0cml4Ojp0b1N0cmluZygpIGNvbnN0CiB7CiAgICAgLy8gRklYTUUgLSBO
ZWVkIHRvIGVuc3VyZSB2YWxpZCBDU1MgZmxvYXRpbmcgcG9pbnQgdmFsdWVzIChodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NzQpCiAgICAgaWYgKG1fbWF0cml4Lmlz
QWZmaW5lKCkpCi0gICAgICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgibWF0cml4KCVmLCAlZiwg
JWYsICVmLCAlZiwgJWYpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9tYXRy
aXguYSgpLCBtX21hdHJpeC5iKCksIG1fbWF0cml4LmMoKSwgbV9tYXRyaXguZCgpLCBtX21hdHJp
eC5lKCksIG1fbWF0cml4LmYoKSk7CisgICAgICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgibWF0
cml4KCVmLCAlZiwgJWYsICVmLCAlZiwgJWYpIiwgbV9tYXRyaXguYSgpLCBtX21hdHJpeC5iKCks
IG1fbWF0cml4LmMoKSwgbV9tYXRyaXguZCgpLCBtX21hdHJpeC5lKCksIG1fbWF0cml4LmYoKSk7
CiAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCJtYXRyaXgzZCglZiwgJWYsICVmLCAlZiwgJWYs
ICVmLCAlZiwgJWYsICVmLCAlZiwgJWYsICVmLCAlZiwgJWYsICVmLCAlZikiLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1fbWF0cml4Lm0xMSgpLCBtX21hdHJpeC5tMTIoKSwgbV9tYXRy
aXgubTEzKCksIG1fbWF0cml4Lm0xNCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1f
bWF0cml4Lm0yMSgpLCBtX21hdHJpeC5tMjIoKSwgbV9tYXRyaXgubTIzKCksIG1fbWF0cml4Lm0y
NCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbWF0cml4Lm0zMSgpLCBtX21hdHJp
eC5tMzIoKSwgbV9tYXRyaXgubTMzKCksIG1fbWF0cml4Lm0zNCgpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1fbWF0cml4Lm00MSgpLCBtX21hdHJpeC5tNDIoKSwgbV9tYXRyaXgubTQz
KCksIG1fbWF0cml4Lm00NCgpKTsKKyAgICAgICAgbV9tYXRyaXgubTExKCksIG1fbWF0cml4Lm0x
MigpLCBtX21hdHJpeC5tMTMoKSwgbV9tYXRyaXgubTE0KCksCisgICAgICAgIG1fbWF0cml4Lm0y
MSgpLCBtX21hdHJpeC5tMjIoKSwgbV9tYXRyaXgubTIzKCksIG1fbWF0cml4Lm0yNCgpLAorICAg
ICAgICBtX21hdHJpeC5tMzEoKSwgbV9tYXRyaXgubTMyKCksIG1fbWF0cml4Lm0zMygpLCBtX21h
dHJpeC5tMzQoKSwKKyAgICAgICAgbV9tYXRyaXgubTQxKCksIG1fbWF0cml4Lm00MigpLCBtX21h
dHJpeC5tNDMoKSwgbV9tYXRyaXgubTQ0KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmgKaW5kZXggODkyMWNlNDY2MDQyMDYxMWY3
MWFiMDVjNDY4MjFjODI5NjVhOTk2Yy4uODRjMDI3OWJmNTBlNzU1MjA4MzFlNDNiYjhhZjY4NmZi
MjZmYTIxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NNYXRyaXguaApAQCAtMjMsMjkgKzIz
LDE4IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV2ViS2l0Q1NTTWF0cml4X2gK
LSNkZWZpbmUgV2ViS2l0Q1NTTWF0cml4X2gKKyNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRXhj
ZXB0aW9uT3IuaCIKICNpbmNsdWRlICJTY3JpcHRXcmFwcGFibGUuaCIKICNpbmNsdWRlICJUcmFu
c2Zvcm1hdGlvbk1hdHJpeC5oIgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLXR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7Ci0KIGNsYXNzIFdl
YktpdENTU01hdHJpeCBmaW5hbCA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBSZWZD
b3VudGVkPFdlYktpdENTU01hdHJpeD4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViS2l0
Q1NTTWF0cml4PiBjcmVhdGUoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG0pCi0gICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJLaXRDU1NNYXRyaXgobSkpOwotICAgIH0K
LSAgICBzdGF0aWMgUmVmPFdlYktpdENTU01hdHJpeD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgcywg
RXhjZXB0aW9uQ29kZSYgZWMpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBX
ZWJLaXRDU1NNYXRyaXgocywgZWMpKTsKLSAgICB9CisgICAgc3RhdGljIFJlZjxXZWJLaXRDU1NN
YXRyaXg+IGNyZWF0ZShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpOworICAgIHN0YXRpYyBF
eGNlcHRpb25PcjxSZWY8V2ViS2l0Q1NTTWF0cml4Pj4gY3JlYXRlKGNvbnN0IFN0cmluZyYpOwog
CiAgICAgfldlYktpdENTU01hdHJpeCgpOwogCkBAIC05Nyw3ICs4Niw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldE00Myhkb3VibGUgZikgeyBtX21hdHJpeC5zZXRNNDMoZik7IH0KICAgICB2b2lk
IHNldE00NChkb3VibGUgZikgeyBtX21hdHJpeC5zZXRNNDQoZik7IH0KIAotICAgIHZvaWQgc2V0
TWF0cml4VmFsdWUoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOworICAgIEV4Y2VwdGlv
bk9yPHZvaWQ+IHNldE1hdHJpeFZhbHVlKGNvbnN0IFN0cmluZyYpOwogCiAgICAgLy8gVGhlIGZv
bGxvd2luZyBtYXRoIGZ1bmN0aW9uIHJldHVybiBhIG5ldyBtYXRyaXggd2l0aCB0aGUKICAgICAv
LyBzcGVjaWZpZWQgb3BlcmF0aW9uIGFwcGxpZWQuIFRoZSB0aGlzIHZhbHVlIGlzIG5vdCBtb2Rp
ZmllZC4KQEAgLTEwNiw1NyArOTUsNTUgQEAgcHVibGljOgogICAgIFJlZlB0cjxXZWJLaXRDU1NN
YXRyaXg+IG11bHRpcGx5KFdlYktpdENTU01hdHJpeCogc2Vjb25kTWF0cml4KSBjb25zdDsKIAog
ICAgIC8vIFJldHVybiB0aGUgaW52ZXJzZSBvZiB0aGlzIG1hdHJpeC4gVGhyb3cgYW4gZXhjZXB0
aW9uIGlmIHRoZSBtYXRyaXggaXMgbm90IGludmVydGlibGUKLSAgICBSZWZQdHI8V2ViS2l0Q1NT
TWF0cml4PiBpbnZlcnNlKEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKKyAgICBFeGNlcHRpb25PcjxS
ZWY8V2ViS2l0Q1NTTWF0cml4Pj4gaW52ZXJzZSgpIGNvbnN0OwogCiAgICAgLy8gUmV0dXJuIHRo
aXMgbWF0cml4IHRyYW5zbGF0ZWQgYnkgdGhlIHBhc3NlZCB2YWx1ZXMuCiAgICAgLy8gUGFzc2lu
ZyBhIE5hTiB3aWxsIHVzZSBhIHZhbHVlIG9mIDAuIFRoaXMgYWxsb3dzIHRoZSAzRCBmb3JtIHRv
IHVzZWQgZm9yIDJEIG9wZXJhdGlvbnMKICAgICAvLyBPcGVyYXRpb24gaXMgcGVyZm9ybWVkIGFz
IHRob3VnaCB0aGUgdGhpcyBtYXRyaXggaXMgbXVsdGlwbGllZCBieSBhIG1hdHJpeCB3aXRoCiAg
ICAgLy8gdGhlIHRyYW5zbGF0aW9uIHZhbHVlcyBvbiB0aGUgbGVmdCAocmVzdWx0ID0gdHJhbnNs
YXRpb24oeCx5LHopICogdGhpcykKLSAgICBSZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiB0cmFuc2xh
dGUoZG91YmxlIHgsIGRvdWJsZSB5LCBkb3VibGUgeikgY29uc3Q7CisgICAgUmVmPFdlYktpdENT
U01hdHJpeD4gdHJhbnNsYXRlKGRvdWJsZSB4LCBkb3VibGUgeSwgZG91YmxlIHopIGNvbnN0Owog
CiAgICAgLy8gUmV0dXJucyB0aGlzIG1hdHJpeCBzY2FsZWQgYnkgdGhlIHBhc3NlZCB2YWx1ZXMu
CiAgICAgLy8gUGFzc2luZyBzY2FsZVggb3Igc2NhbGVaIGFzIE5hTiB1c2VzIGEgdmFsdWUgb2Yg
MSwgYnV0IHBhc3Npbmcgc2NhbGVZIG9mIE5hTgogICAgIC8vIG1ha2VzIGl0IHRoZSBzYW1lIGFz
IHNjYWxlWC4gVGhpcyBhbGxvd3MgdGhlIDNEIGZvcm0gdG8gdXNlZCBmb3IgMkQgb3BlcmF0aW9u
cwogICAgIC8vIE9wZXJhdGlvbiBpcyBwZXJmb3JtZWQgYXMgdGhvdWdoIHRoZSB0aGlzIG1hdHJp
eCBpcyBtdWx0aXBsaWVkIGJ5IGEgbWF0cml4IHdpdGgKICAgICAvLyB0aGUgc2NhbGUgdmFsdWVz
IG9uIHRoZSBsZWZ0IChyZXN1bHQgPSBzY2FsZSh4LHkseikgKiB0aGlzKQotICAgIFJlZlB0cjxX
ZWJLaXRDU1NNYXRyaXg+IHNjYWxlKGRvdWJsZSBzY2FsZVgsIGRvdWJsZSBzY2FsZVksIGRvdWJs
ZSBzY2FsZVopIGNvbnN0OworICAgIFJlZjxXZWJLaXRDU1NNYXRyaXg+IHNjYWxlKGRvdWJsZSBz
Y2FsZVgsIGRvdWJsZSBzY2FsZVksIGRvdWJsZSBzY2FsZVopIGNvbnN0OwogCiAgICAgLy8gUmV0
dXJucyB0aGlzIG1hdHJpeCByb3RhdGVkIGJ5IHRoZSBwYXNzZWQgdmFsdWVzLgogICAgIC8vIElm
IHJvdFkgYW5kIHJvdFogYXJlIE5hTiwgcm90YXRlIGFib3V0IFogKHJvdFg9MCwgcm90YXRlWT0w
LCByb3RhdGVaPXJvdFgpLgogICAgIC8vIE90aGVyd2lzZSB1c2UgYSByb3RhdGlvbiB2YWx1ZSBv
ZiAwIGZvciBhbnkgcGFzc2VkIE5hTi4KICAgICAvLyBPcGVyYXRpb24gaXMgcGVyZm9ybWVkIGFz
IHRob3VnaCB0aGUgdGhpcyBtYXRyaXggaXMgbXVsdGlwbGllZCBieSBhIG1hdHJpeCB3aXRoCiAg
ICAgLy8gdGhlIHJvdGF0aW9uIHZhbHVlcyBvbiB0aGUgbGVmdCAocmVzdWx0ID0gcm90YXRpb24o
eCx5LHopICogdGhpcykKLSAgICBSZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiByb3RhdGUoZG91Ymxl
IHJvdFgsIGRvdWJsZSByb3RZLCBkb3VibGUgcm90WikgY29uc3Q7CisgICAgUmVmPFdlYktpdENT
U01hdHJpeD4gcm90YXRlKGRvdWJsZSByb3RYLCBkb3VibGUgcm90WSwgZG91YmxlIHJvdFopIGNv
bnN0OwogCiAgICAgLy8gUmV0dXJucyB0aGlzIG1hdHJpeCByb3RhdGVkIGFib3V0IHRoZSBwYXNz
ZWQgYXhpcyBieSB0aGUgcGFzc2VkIGFuZ2xlLgogICAgIC8vIFBhc3NpbmcgYSBOYU4gd2lsbCB1
c2UgYSB2YWx1ZSBvZiAwLiBJZiB0aGUgYXhpcyBpcyAoMCwwLDApIHVzZSBhIHZhbHVlCiAgICAg
Ly8gT3BlcmF0aW9uIGlzIHBlcmZvcm1lZCBhcyB0aG91Z2ggdGhlIHRoaXMgbWF0cml4IGlzIG11
bHRpcGxpZWQgYnkgYSBtYXRyaXggd2l0aAogICAgIC8vIHRoZSByb3RhdGlvbiB2YWx1ZXMgb24g
dGhlIGxlZnQgKHJlc3VsdCA9IHJvdGF0aW9uKHgseSx6LGFuZ2xlKSAqIHRoaXMpCi0gICAgUmVm
UHRyPFdlYktpdENTU01hdHJpeD4gcm90YXRlQXhpc0FuZ2xlKGRvdWJsZSB4LCBkb3VibGUgeSwg
ZG91YmxlIHosIGRvdWJsZSBhbmdsZSkgY29uc3Q7CisgICAgUmVmPFdlYktpdENTU01hdHJpeD4g
cm90YXRlQXhpc0FuZ2xlKGRvdWJsZSB4LCBkb3VibGUgeSwgZG91YmxlIHosIGRvdWJsZSBhbmds
ZSkgY29uc3Q7CiAKICAgICAvLyBSZXR1cm4gdGhpcyBtYXRyaXggc2tld2VkIGFsb25nIHRoZSBY
IGF4aXMgYnkgdGhlIHBhc3NlZCB2YWx1ZXMuCiAgICAgLy8gUGFzc2luZyBhIE5hTiB3aWxsIHVz
ZSBhIHZhbHVlIG9mIDAuCiAgICAgLy8gT3BlcmF0aW9uIGlzIHBlcmZvcm1lZCBhcyB0aG91Z2gg
dGhlIHRoaXMgbWF0cml4IGlzIG11bHRpcGxpZWQgYnkgYSBtYXRyaXggd2l0aAogICAgIC8vIHRo
ZSBza2V3IHZhbHVlcyBvbiB0aGUgbGVmdCAocmVzdWx0ID0gc2tld1goYW5nbGUpICogdGhpcykK
LSAgICBSZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiBza2V3WChkb3VibGUgYW5nbGUpIGNvbnN0Owor
ICAgIFJlZjxXZWJLaXRDU1NNYXRyaXg+IHNrZXdYKGRvdWJsZSBhbmdsZSkgY29uc3Q7CiAKICAg
ICAvLyBSZXR1cm4gdGhpcyBtYXRyaXggc2tld2VkIGFsb25nIHRoZSBZIGF4aXMgYnkgdGhlIHBh
c3NlZCB2YWx1ZXMuCiAgICAgLy8gUGFzc2luZyBhIE5hTiB3aWxsIHVzZSBhIHZhbHVlIG9mIDAu
CiAgICAgLy8gT3BlcmF0aW9uIGlzIHBlcmZvcm1lZCBhcyB0aG91Z2ggdGhlIHRoaXMgbWF0cml4
IGlzIG11bHRpcGxpZWQgYnkgYSBtYXRyaXggd2l0aAogICAgIC8vIHRoZSBza2V3IHZhbHVlcyBv
biB0aGUgbGVmdCAocmVzdWx0ID0gc2tld1koYW5nbGUpICogdGhpcykKLSAgICBSZWZQdHI8V2Vi
S2l0Q1NTTWF0cml4PiBza2V3WShkb3VibGUgYW5nbGUpIGNvbnN0OworICAgIFJlZjxXZWJLaXRD
U1NNYXRyaXg+IHNrZXdZKGRvdWJsZSBhbmdsZSkgY29uc3Q7CiAKICAgICBjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9tYXRyaXg7IH0KIAog
ICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0OwogCi1wcm90ZWN0ZWQ6Citwcml2YXRlOgorICAg
IFdlYktpdENTU01hdHJpeCgpID0gZGVmYXVsdDsKICAgICBXZWJLaXRDU1NNYXRyaXgoY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmKTsKLSAgICBXZWJLaXRDU1NNYXRyaXgoY29uc3QgU3RyaW5n
JiwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbV9tYXRyaXg7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBXZWJLaXRDU1NNYXRy
aXhfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmlkbAppbmRleCBiN2YxMmIyY2M2
M2Y0OTVkYzVjODdjZTJjOWUyYTBkNjUwNWZlN2YzLi5iOGQ1ZjMyNmE4NTNjYjMyNzI1MzE2OTli
NGExYWY3MWE3Y2M1ZjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NT
TWF0cml4LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmlkbApA
QCAtMjMsMTAgKzIzLDkgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLS8vIEludHJvZHVjZWQg
aW4gRE9NIExldmVsID86CiBbCiAgICAgQ29uc3RydWN0b3Iob3B0aW9uYWwgRE9NU3RyaW5nIGNz
c1ZhbHVlKSwKLSAgICBDb25zdHJ1Y3Rvck1heVRocm93TGVnYWN5RXhjZXB0aW9uLAorICAgIENv
bnN0cnVjdG9yTWF5VGhyb3dFeGNlcHRpb24sCiAgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJs
ZSwKIF0gaW50ZXJmYWNlIFdlYktpdENTU01hdHJpeCB7CiAKQEAgLTU3LDEzICs1NiwxMyBAQAog
ICAgIGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIG00NDsKIAogICAgIC8vIEZJWE1FOiBV
c2luZyAidW5kZWZpbmVkIiBhcyBkZWZhdWx0IHBhcmFtZXRlciB2YWx1ZSBpcyB3cm9uZy4KLSAg
ICBbTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHZvaWQgc2V0TWF0cml4VmFsdWUob3B0aW9uYWwg
RE9NU3RyaW5nIHN0cmluZyA9ICJ1bmRlZmluZWQiKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25d
IHZvaWQgc2V0TWF0cml4VmFsdWUob3B0aW9uYWwgRE9NU3RyaW5nIHN0cmluZyA9ICJ1bmRlZmlu
ZWQiKTsKICAgICAKICAgICAvLyBNdWx0aXBseSB0aGlzIG1hdHJpeCBieSBzZWNvbmRNYXRyaXgs
IG9uIHRoZSByaWdodCAocmVzdWx0ID0gdGhpcyAqIHNlY29uZE1hdHJpeCkKICAgICBbSW1tdXRh
YmxlXSBXZWJLaXRDU1NNYXRyaXggbXVsdGlwbHkob3B0aW9uYWwgV2ViS2l0Q1NTTWF0cml4PyBz
ZWNvbmRNYXRyaXggPSBudWxsKTsKICAgICAKICAgICAvLyBSZXR1cm4gdGhlIGludmVyc2Ugb2Yg
dGhpcyBtYXRyaXguIFRocm93IGFuIGV4Y2VwdGlvbiBpZiB0aGUgbWF0cml4IGlzIG5vdCBpbnZl
cnRpYmxlCi0gICAgW0ltbXV0YWJsZSwgTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIFdlYktpdENT
U01hdHJpeCBpbnZlcnNlKCk7CisgICAgW0ltbXV0YWJsZSwgTWF5VGhyb3dFeGNlcHRpb25dIFdl
YktpdENTU01hdHJpeCBpbnZlcnNlKCk7CiAgICAgCiAgICAgLy8gUmV0dXJuIHRoaXMgbWF0cml4
IHRyYW5zbGF0ZWQgYnkgdGhlIHBhc3NlZCB2YWx1ZXMuCiAgICAgLy8gUGFzc2luZyBhIE5hTiB3
aWxsIHVzZSBhIHZhbHVlIG9mIDAuIFRoaXMgYWxsb3dzIHRoZSAzRCBmb3JtIHRvIHVzZWQgZm9y
IDJEIG9wZXJhdGlvbnMKQEAgLTEwMyw0ICsxMDIsMyBAQAogCiAgICAgW05vdEVudW1lcmFibGVd
IERPTVN0cmluZyB0b1N0cmluZygpOwogfTsKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL21ha2Vwcm9wLnBsIGIvU291cmNlL1dlYkNvcmUvY3NzL21ha2Vwcm9wLnBsCmluZGV4IDll
OTZkOWJhYmIxMmE0MGZiODA5N2YwYTA2M2NiZjg4MTkyMzE3MzEuLjQyM2ZiYTZiNzA0MDAxZDUy
OGM0NmU3MmUzMDdlOWViZWY2NjQ2MDUgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9t
YWtlcHJvcC5wbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvbWFrZXByb3AucGwKQEAgLTUxOCw3
ICs1MTgsNyBAQCBzdWIgaGFuZGxlQ3VycmVudENvbG9yVmFsdWUgewogICBteSAkcHJpbWl0aXZl
VmFsdWUgPSBzaGlmdDsKICAgbXkgJGluZGVudCA9IHNoaWZ0OwogCi0gIG15ICRjb2RlID0gJGlu
ZGVudCAuICJpZiAoIiAuICRwcmltaXRpdmVWYWx1ZSAuICIuZ2V0VmFsdWVJRCgpID09IENTU1Zh
bHVlQ3VycmVudGNvbG9yKSB7XG4iOworICBteSAkY29kZSA9ICRpbmRlbnQgLiAiaWYgKCIgLiAk
cHJpbWl0aXZlVmFsdWUgLiAiLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUN1cnJlbnRjb2xvcikge1xu
IjsKICAgJGNvZGUgLj0gJGluZGVudCAuICIgICAgYXBwbHlJbmhlcml0IiAuICRuYW1lVG9JZHsk
bmFtZX0gLiAiKHN0eWxlUmVzb2x2ZXIpO1xuIjsKICAgJGNvZGUgLj0gJGluZGVudCAuICIgICAg
cmV0dXJuO1xuIjsKICAgJGNvZGUgLj0gJGluZGVudCAuICJ9XG4iOwpAQCAtNzk0LDcgKzc5NCw3
IEBAIHN1YiBnZW5lcmF0ZVZhbHVlU2V0dGVyIHsKICAgbXkgJHN0eWxlID0gInN0eWxlUmVzb2x2
ZXIuc3R5bGUoKSI7CiAgIG15ICRkaWRDYWxsU2V0VmFsdWUgPSAwOwogICBpZiAoZXhpc3RzICRw
cm9wZXJ0aWVzV2l0aFN0eWxlQnVpbGRlck9wdGlvbnN7JG5hbWV9eyJBdXRvRnVuY3Rpb25zIn0p
IHsKLSAgICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICBpZiAoZG93bmNhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWU+KHZhbHVlKS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVBdXRvKSB7XG4i
OworICAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAiICAgIGlmIChkb3duY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZT4odmFsdWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUF1dG8pIHtcbiI7CiAg
ICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgICAgICIuIGdldEF1dG9TZXR0ZXIo
JG5hbWUsICRzdHlsZSkgLiAiO1xuIjsKICAgICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4g
IiAgICAgICAgcmV0dXJuO1xuIjsKICAgICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAg
ICB9XG4iOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuY3BwCmluZGV4IDNlMDZm
ODUyMjczNDNmOWQ2OWI3OGEyNTcwODM5MTFjZTlmY2E4ZmEuLjI0MjZjYzMyYjdmOGRiNjc5NThj
ZDQxMjJkZGRlYjkyMWJlZjg2ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNl
ci5jcHAKQEAgLTQyNDUsNyArNDI0NSw3IEBAIHZvaWQgQ1NTUGFyc2VyOjpwYXJzZTRWYWx1ZXNG
aWxsUG9zaXRpb24oQ1NTUGFyc2VyVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIFJlZlB0cjxDCiB7CiAg
ICAgLy8gWyBsZWZ0IHwgcmlnaHQgXSBbIDxwZXJjZW50YWdlXSB8IDxsZW5ndGg+IF0gJiYgWyB0
b3AgfCBib3R0b20gXSBbIDxwZXJjZW50YWdlPiB8IDxsZW5ndGg+IF0KICAgICAvLyBJbiB0aGUg
Y2FzZSBvZiA0IHZhbHVlcyA8cG9zaXRpb24+IHJlcXVpcmVzIHRoZSBzZWNvbmQgdmFsdWUgdG8g
YmUgYSBsZW5ndGggb3IgYSBwZXJjZW50YWdlLgotICAgIGlmIChpc0ZpbGxQb3NpdGlvbktleXdv
cmQocGFyc2VkVmFsdWUyLT5nZXRWYWx1ZUlEKCkpKQorICAgIGlmIChpc0ZpbGxQb3NpdGlvbktl
eXdvcmQocGFyc2VkVmFsdWUyLT52YWx1ZUlEKCkpKQogICAgICAgICByZXR1cm47CiAKICAgICB1
bnNpZ25lZCBjdW11bGF0aXZlRmxhZ3MgPSAwOwpAQCAtNDI1NCw4ICs0MjU0LDggQEAgdm9pZCBD
U1NQYXJzZXI6OnBhcnNlNFZhbHVlc0ZpbGxQb3NpdGlvbihDU1NQYXJzZXJWYWx1ZUxpc3QmIHZh
bHVlTGlzdCwgUmVmUHRyPEMKICAgICBpZiAoIXZhbHVlMykKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgQ1NTVmFsdWVJRCBpZGVudDEgPSBwYXJzZWRWYWx1ZTEtPmdldFZhbHVlSUQoKTsKLSAgICBD
U1NWYWx1ZUlEIGlkZW50MyA9IHZhbHVlMy0+Z2V0VmFsdWVJRCgpOworICAgIENTU1ZhbHVlSUQg
aWRlbnQxID0gcGFyc2VkVmFsdWUxLT52YWx1ZUlEKCk7CisgICAgQ1NTVmFsdWVJRCBpZGVudDMg
PSB2YWx1ZTMtPnZhbHVlSUQoKTsKIAogICAgIGlmIChpZGVudDEgPT0gQ1NTVmFsdWVDZW50ZXIp
CiAgICAgICAgIHJldHVybjsKQEAgLTQyNzgsNyArNDI3OCw3IEBAIHZvaWQgQ1NTUGFyc2VyOjpw
YXJzZTRWYWx1ZXNGaWxsUG9zaXRpb24oQ1NTUGFyc2VyVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIFJl
ZlB0cjxDCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIDR0aCB2YWx1ZSBtdXN0IGJlIGEgbGVu
Z3RoIG9yIGEgcGVyY2VudGFnZS4KLSAgICBpZiAoaXNGaWxsUG9zaXRpb25LZXl3b3JkKHZhbHVl
NC0+Z2V0VmFsdWVJRCgpKSkKKyAgICBpZiAoaXNGaWxsUG9zaXRpb25LZXl3b3JkKHZhbHVlNC0+
dmFsdWVJRCgpKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgdmFsdWUxID0gY3JlYXRlUHJpbWl0
aXZlVmFsdWVQYWlyKFdURk1vdmUocGFyc2VkVmFsdWUxKSwgV1RGTW92ZShwYXJzZWRWYWx1ZTIp
KTsKQEAgLTQzMDMsOSArNDMwMyw5IEBAIHZvaWQgQ1NTUGFyc2VyOjpwYXJzZTNWYWx1ZXNGaWxs
UG9zaXRpb24oQ1NTUGFyc2VyVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIFJlZlB0cjxDCiAgICAgdmFs
dWVMaXN0Lm5leHQoKTsKIAogICAgIGJvb2wgc3dhcE5lZWRlZCA9IGZhbHNlOwotICAgIENTU1Zh
bHVlSUQgaWRlbnQxID0gcGFyc2VkVmFsdWUxLT5nZXRWYWx1ZUlEKCk7Ci0gICAgQ1NTVmFsdWVJ
RCBpZGVudDIgPSBwYXJzZWRWYWx1ZTItPmdldFZhbHVlSUQoKTsKLSAgICBDU1NWYWx1ZUlEIGlk
ZW50MyA9IHZhbHVlMy0+Z2V0VmFsdWVJRCgpOworICAgIENTU1ZhbHVlSUQgaWRlbnQxID0gcGFy
c2VkVmFsdWUxLT52YWx1ZUlEKCk7CisgICAgQ1NTVmFsdWVJRCBpZGVudDIgPSBwYXJzZWRWYWx1
ZTItPnZhbHVlSUQoKTsKKyAgICBDU1NWYWx1ZUlEIGlkZW50MyA9IHZhbHVlMy0+dmFsdWVJRCgp
OwogCiAgICAgQ1NTVmFsdWVJRCBmaXJzdFBvc2l0aW9uS2V5d29yZDsKICAgICBDU1NWYWx1ZUlE
IHNlY29uZFBvc2l0aW9uS2V5d29yZDsKQEAgLTQzNzUsOCArNDM3NSw4IEBAIHZvaWQgQ1NTUGFy
c2VyOjpwYXJzZTNWYWx1ZXNGaWxsUG9zaXRpb24oQ1NTUGFyc2VyVmFsdWVMaXN0JiB2YWx1ZUxp
c3QsIFJlZlB0cjxDCiAjaWZuZGVmIE5ERUJVRwogICAgIENTU1ByaW1pdGl2ZVZhbHVlJiBmaXJz
dCA9ICp2YWx1ZTE7CiAgICAgQ1NTUHJpbWl0aXZlVmFsdWUmIHNlY29uZCA9ICp2YWx1ZTI7Ci0g
ICAgaWRlbnQxID0gZmlyc3QuZ2V0UGFpclZhbHVlKCktPmZpcnN0KCktPmdldFZhbHVlSUQoKTsK
LSAgICBpZGVudDIgPSBzZWNvbmQuZ2V0UGFpclZhbHVlKCktPmZpcnN0KCktPmdldFZhbHVlSUQo
KTsKKyAgICBpZGVudDEgPSBmaXJzdC5wYWlyVmFsdWUoKS0+Zmlyc3QoKS0+dmFsdWVJRCgpOwor
ICAgIGlkZW50MiA9IHNlY29uZC5wYWlyVmFsdWUoKS0+Zmlyc3QoKS0+dmFsdWVJRCgpOwogICAg
IEFTU0VSVChpZGVudDEgPT0gQ1NTVmFsdWVMZWZ0IHx8IGlkZW50MSA9PSBDU1NWYWx1ZVJpZ2h0
KTsKICAgICBBU1NFUlQoaWRlbnQyID09IENTU1ZhbHVlQm90dG9tIHx8IGlkZW50MiA9PSBDU1NW
YWx1ZVRvcCk7CiAjZW5kaWYKQEAgLTQ0NDEsNyArNDQ0MSw3IEBAIHZvaWQgQ1NTUGFyc2VyOjpw
YXJzZUZpbGxQb3NpdGlvbihDU1NQYXJzZXJWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgUmVmUHRyPENT
U1ByaW1pCiAgICAgYXV0byBwYXJzZWRWYWx1ZTIgPSB2YWx1ZTIucmVsZWFzZU5vbk51bGwoKTsK
IAogICAgIC8vIFBlciBDU1MzIHN5bnRheCwgPHBvc2l0aW9uPiBjYW4ndCBoYXZlICdjZW50ZXIn
IGFzIGl0cyBzZWNvbmQga2V5d29yZCBhcyB3ZSBoYXZlIG1vcmUgYXJndW1lbnRzIHRvIGZvbGxv
dy4KLSAgICBpZiAocGFyc2VkVmFsdWUyLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVDZW50ZXIp
CisgICAgaWYgKHBhcnNlZFZhbHVlMi0+dmFsdWVJRCgpID09IENTU1ZhbHVlQ2VudGVyKQogICAg
ICAgICByZXR1cm47CiAKICAgICBpZiAobnVtYmVyT2ZWYWx1ZXMgPT0gMykKQEAgLTQ1MzIsNyAr
NDUzMiw3IEBAIHZvaWQgQ1NTUGFyc2VyOjpwYXJzZUZpbGxSZXBlYXQoUmVmUHRyPENTU1ZhbHVl
PiYgdmFsdWUxLCBSZWZQdHI8Q1NTVmFsdWU+JiB2YWx1CiAKICAgICAvLyBJZiBvbmx5IG9uZSB2
YWx1ZSB3YXMgc3BlY2lmaWVkLCB2YWx1ZTIgaXMgdGhlIHNhbWUgYXMgdmFsdWUxLgogICAgIG1f
aW1wbGljaXRTaG9ydGhhbmQgPSB0cnVlOwotICAgIHZhbHVlMiA9IENTU1ZhbHVlUG9vbDo6c2lu
Z2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
PigqdmFsdWUxKS5nZXRWYWx1ZUlEKCkpOworICAgIHZhbHVlMiA9IENTU1ZhbHVlUG9vbDo6c2lu
Z2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
PigqdmFsdWUxKS52YWx1ZUlEKCkpOwogfQogCiBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IENT
U1BhcnNlcjo6cGFyc2VGaWxsU2l6ZShDU1NQcm9wZXJ0eUlEIHByb3BJZCwgYm9vbCYgYWxsb3dD
b21tYSkKQEAgLTUyNzQsMTIgKzUyNzQsMTIgQEAgUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6
OnBhcnNlR3JpZFBvc2l0aW9uKCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBO
ZWdhdGl2ZSBudW1iZXJzIGFyZSBub3QgYWxsb3dlZCBmb3Igc3BhbiAoYnV0IGFyZSBmb3IgPGlu
dGVnZXI+KS4KLSAgICBpZiAoaGFzU2VlblNwYW5LZXl3b3JkICYmIG51bWVyaWNWYWx1ZSAmJiBu
dW1lcmljVmFsdWUtPmdldEludFZhbHVlKCkgPCAwKQorICAgIGlmIChoYXNTZWVuU3BhbktleXdv
cmQgJiYgbnVtZXJpY1ZhbHVlICYmIG51bWVyaWNWYWx1ZS0+aW50VmFsdWUoKSA8IDApCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gRm9yIHRoZSA8Y3VzdG9tLWlkZW50PiBjYXNl
LgogICAgIGlmIChncmlkTGluZU5hbWUgJiYgIW51bWVyaWNWYWx1ZSAmJiAhaGFzU2VlblNwYW5L
ZXl3b3JkKQotICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVW
YWx1ZShncmlkTGluZU5hbWUtPmdldFN0cmluZ1ZhbHVlKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfU1RSSU5HKTsKKyAgICAgICAgcmV0dXJuIENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3Jl
YXRlVmFsdWUoZ3JpZExpbmVOYW1lLT5zdHJpbmdWYWx1ZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX1NUUklORyk7CiAKICAgICBhdXRvIHZhbHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3Bh
Y2VTZXBhcmF0ZWQoKTsKICAgICBpZiAoaGFzU2VlblNwYW5LZXl3b3JkKQpAQCAtNTQzNyw3ICs1
NDM3LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlR3JpZFRlbXBsYXRlUm93c0FuZEFyZWFzQW5k
Q29sdW1ucyhib29sIGltcG9ydGFudCkKICAgICAgICAgaWYgKCF0ZW1wbGF0ZUNvbHVtbnMpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIC8vIFRoZSB0ZW1wbGF0ZS1jb2x1bW5z
IDx0cmFjay1saXN0PiBjYW4ndCBiZSAnbm9uZScuCi0gICAgICAgIGlmICh0ZW1wbGF0ZUNvbHVt
bnMtPmlzUHJpbWl0aXZlVmFsdWUoKSAmJiBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnRl
bXBsYXRlQ29sdW1ucykuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAgaWYg
KHRlbXBsYXRlQ29sdW1ucy0+aXNQcmltaXRpdmVWYWx1ZSgpICYmIGRvd25jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlPigqdGVtcGxhdGVDb2x1bW5zKS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtNTcwMSw3ICs1NzAxLDcgQEAg
Ym9vbCBDU1NQYXJzZXI6OnBhcnNlR3JpZExpbmVOYW1lcyhDU1NQYXJzZXJWYWx1ZUxpc3QmIGlu
cHV0TGlzdCwgQ1NTVmFsdWVMaXN0JgogCiBzdGF0aWMgYm9vbCBpc0dyaWRUcmFja0ZpeGVkU2l6
ZWQoY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmIHZhbHVlKQogewotICAgIENTU1ZhbHVlSUQgdmFs
dWVJRCA9IHZhbHVlLmdldFZhbHVlSUQoKTsKKyAgICBDU1NWYWx1ZUlEIHZhbHVlSUQgPSB2YWx1
ZS52YWx1ZUlEKCk7CiAgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVXZWJraXRNaW5Db250ZW50
IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVXZWJraXRNYXhDb250ZW50IHx8IHZhbHVlSUQgPT0gQ1NT
VmFsdWVBdXRvIHx8IHZhbHVlLmlzRmxleCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAg
LTkxNzgsMTAgKzkxNzgsMTAgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlUmFkaWFsR3JhZGllbnQo
Q1NTUGFyc2VyVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIFJlZlB0cjxDU1NWYWwKICAgICBpZiAoc2l6
ZVZhbHVlICYmIGhvcml6b250YWxTaXplKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgLy8g
Q2lyY2xlcyBtdXN0IGhhdmUgMCBvciAxIGxlbmd0aHMuCi0gICAgaWYgKHNoYXBlVmFsdWUgJiYg
c2hhcGVWYWx1ZS0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlQ2lyY2xlICYmIHZlcnRpY2FsU2l6
ZSkKKyAgICBpZiAoc2hhcGVWYWx1ZSAmJiBzaGFwZVZhbHVlLT52YWx1ZUlEKCkgPT0gQ1NTVmFs
dWVDaXJjbGUgJiYgdmVydGljYWxTaXplKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgLy8g
RWxsaXBzZXMgbXVzdCBoYXZlIDAgb3IgMiBsZW5ndGgvcGVyY2VudGFnZXMuCi0gICAgaWYgKHNo
YXBlVmFsdWUgJiYgc2hhcGVWYWx1ZS0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlRWxsaXBzZSAm
JiBob3Jpem9udGFsU2l6ZSAmJiAhdmVydGljYWxTaXplKQorICAgIGlmIChzaGFwZVZhbHVlICYm
IHNoYXBlVmFsdWUtPnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUVsbGlwc2UgJiYgaG9yaXpvbnRhbFNp
emUgJiYgIXZlcnRpY2FsU2l6ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIC8vIElmIHRo
ZXJlJ3Mgb25seSBvbmUgc2l6ZSwgaXQgbXVzdCBiZSBhIGxlbmd0aC4KICAgICBpZiAoIXZlcnRp
Y2FsU2l6ZSAmJiBob3Jpem9udGFsU2l6ZSAmJiBob3Jpem9udGFsU2l6ZS0+aXNQZXJjZW50YWdl
KCkpCkBAIC05OTU3LDcgKzk5NTcsNyBAQCBSZWZQdHI8V2ViS2l0Q1NTRmlsdGVyVmFsdWU+IENT
U1BhcnNlcjo6cGFyc2VCdWlsdGluRmlsdGVyQXJndW1lbnRzKENTU1BhcnNlclZhbAogICAgICAg
ICAgICAgaWYgKGZpbHRlclR5cGUgIT0gV2ViS2l0Q1NTRmlsdGVyVmFsdWU6OlNhdHVyYXRlRmls
dGVyT3BlcmF0aW9uCiAgICAgICAgICAgICAgICAgJiYgZmlsdGVyVHlwZSAhPSBXZWJLaXRDU1NG
aWx0ZXJWYWx1ZTo6Q29udHJhc3RGaWx0ZXJPcGVyYXRpb24pIHsKICAgICAgICAgICAgICAgICBk
b3VibGUgbWF4QWxsb3dlZCA9IHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCkgPT0gQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFID8gMTAwLjAgOiAxLjA7Ci0gICAgICAgICAg
ICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXREb3VibGVWYWx1ZSgpID4gbWF4QWxsb3dlZCkK
KyAgICAgICAgICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmRvdWJsZVZhbHVlKCkgPiBtYXhB
bGxvd2VkKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJWYWx1
ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJWYWx1ZXMuY3BwCmlu
ZGV4IGQzYTYxYjRmYzU2ZDEyYTBmZTQ3YzQzMDRkMTM1ZjRlYTA2NjdiODUuLjQ3N2I2ZjY4MTI2
YjE4MjViZTNhYjRlYjA2ZDQ4MDI1OTI5MzIwNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9wYXJzZXIvQ1NTUGFyc2VyVmFsdWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
cGFyc2VyL0NTU1BhcnNlclZhbHVlcy5jcHAKQEAgLTk0LDExICs5NCw4IEBAIFJlZlB0cjxDU1NW
YWx1ZT4gQ1NTUGFyc2VyVmFsdWU6OmNyZWF0ZUNTU1ZhbHVlKCkKICAgICBpZiAoaWQpCiAgICAg
ICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihpZCk7CiAgICAg
Ci0gICAgaWYgKHVuaXQgPT0gQ1NTUGFyc2VyVmFsdWU6Ok9wZXJhdG9yKSB7Ci0gICAgICAgIGF1
dG8gcHJpbWl0aXZlVmFsdWUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlUGFyc2VyT3BlcmF0
b3IoaVZhbHVlKTsKLSAgICAgICAgcHJpbWl0aXZlVmFsdWUtPnNldFByaW1pdGl2ZVR5cGUoQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19QQVJTRVJfT1BFUkFUT1IpOwotICAgICAgICByZXR1cm4gV1RG
TW92ZShwcmltaXRpdmVWYWx1ZSk7Ci0gICAgfQorICAgIGlmICh1bml0ID09IENTU1BhcnNlclZh
bHVlOjpPcGVyYXRvcikKKyAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVQ
YXJzZXJPcGVyYXRvcihpVmFsdWUpOwogICAgIGlmICh1bml0ID09IENTU1BhcnNlclZhbHVlOjpG
dW5jdGlvbikKICAgICAgICAgcmV0dXJuIENTU0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZShmdW5jdGlv
bik7CiAgICAgaWYgKHVuaXQgPT0gQ1NTUGFyc2VyVmFsdWU6OlZhcmlhYmxlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcAppbmRleCAyMDZiODY5
ZDI5OTNmNGJmZjRmNmE2MTQxMDIwMDI0ZjQyMTU5MTMzLi40NTg0NzI0YjA5NjE4MTFlNWE4YzIz
MTMwZDJiYzcwNTNhZThhZWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2Vy
L0NTU1Byb3BlcnR5UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NT
U1Byb3BlcnR5UGFyc2VyLmNwcApAQCAtODgzLDcgKzg4Myw3IEBAIHN0YXRpYyBDU1NWYWx1ZSog
Y29uc3VtZUNvdW50ZXIoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGludCBkZWZhdWx0VmFs
dWUpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgaW50IGkgPSBkZWZhdWx0
VmFsdWU7CiAgICAgICAgIGlmIChDU1NQcmltaXRpdmVWYWx1ZSogY291bnRlclZhbHVlID0gY29u
c3VtZUludGVnZXIocmFuZ2UpKQotICAgICAgICAgICAgaSA9IGNsYW1wVG88aW50Pihjb3VudGVy
VmFsdWUtPmdldERvdWJsZVZhbHVlKCkpOworICAgICAgICAgICAgaSA9IGNvdW50ZXJWYWx1ZS0+
aW50VmFsdWUoKSk7CiAgICAgICAgIGxpc3QtPmFwcGVuZCgqQ1NTVmFsdWVQYWlyOjpjcmVhdGUo
Y291bnRlck5hbWUsCiAgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKGksIENT
U1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6SW50ZWdlciksCiAgICAgICAgICAgICBDU1NWYWx1
ZVBhaXI6OkRyb3BJZGVudGljYWxWYWx1ZXMpKTsKQEAgLTkzNiw3ICs5MzYsNyBAQCBzdGF0aWMg
Q1NTVmFsdWUqIGNvbnN1bWVTbmFwSGVpZ2h0KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBD
U1NQYXJzZXJNb2RlIGNzcwogICAgIGxpc3QtPmFwcGVuZCgqdW5pdCk7CiAKICAgICBpZiAoQ1NT
UHJpbWl0aXZlVmFsdWUqIHBvc2l0aW9uID0gY29uc3VtZVBvc2l0aXZlSW50ZWdlcihyYW5nZSkp
IHsKLSAgICAgICAgaWYgKHBvc2l0aW9uLT5nZXRJbnRWYWx1ZSgpID4gMTAwKQorICAgICAgICBp
ZiAocG9zaXRpb24tPmludFZhbHVlKCkgPiAxMDApCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICAgICAgbGlzdC0+YXBwZW5kKCpwb3NpdGlvbik7CiAgICAgfQpAQCAtMTEzMSw3ICsx
MTMxLDcgQEAgc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lQ29sdW1uV2lkdGgoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgcmFuZ2UpCiAgICAgLy8gQWx3YXlzIHBhcnNlIGxlbmd0aHMgaW4gc3RyaWN0IG1v
ZGUgaGVyZSwgc2luY2UgaXQgd291bGQgYmUgYW1iaWd1b3VzIG90aGVyd2lzZSB3aGVuIHVzZWQg
aW4KICAgICAvLyB0aGUgJ2NvbHVtbnMnIHNob3J0aGFuZCBwcm9wZXJ0eS4KICAgICBDU1NQcmlt
aXRpdmVWYWx1ZSogY29sdW1uV2lkdGggPSBjb25zdW1lTGVuZ3RoKHJhbmdlLCBIVE1MU3RhbmRh
cmRNb2RlLCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOwotICAgIGlmICghY29sdW1uV2lkdGggfHwg
KCFjb2x1bW5XaWR0aC0+aXNDYWxjdWxhdGVkKCkgJiYgY29sdW1uV2lkdGgtPmdldERvdWJsZVZh
bHVlKCkgPT0gMCkpCisgICAgaWYgKCFjb2x1bW5XaWR0aCB8fCAoIWNvbHVtbldpZHRoLT5pc0Nh
bGN1bGF0ZWQoKSAmJiBjb2x1bW5XaWR0aC0+ZG91YmxlVmFsdWUoKSA9PSAwKSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIGNvbHVtbldpZHRoOwogfQpAQCAtMTE2OCw4ICsx
MTY4LDggQEAgc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lWm9vbShDU1NQYXJzZXJUb2tlblJhbmdl
JiByYW5nZSwgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYKICAgICB9CiAgICAgaWYgKHpvb20gJiYg
Y29udGV4dC51c2VDb3VudGVyKCkKICAgICAgICAgJiYgISh0b2tlbi5pZCgpID09IENTU1ZhbHVl
Tm9ybWFsCi0gICAgICAgICAgICB8fCAodG9rZW4udHlwZSgpID09IE51bWJlclRva2VuICYmIHpv
b20tPmdldERvdWJsZVZhbHVlKCkgPT0gMSkKLSAgICAgICAgICAgIHx8ICh0b2tlbi50eXBlKCkg
PT0gUGVyY2VudGFnZVRva2VuICYmIHpvb20tPmdldERvdWJsZVZhbHVlKCkgPT0gMTAwKSkpCisg
ICAgICAgICAgICB8fCAodG9rZW4udHlwZSgpID09IE51bWJlclRva2VuICYmIHpvb20tPmRvdWJs
ZVZhbHVlKCkgPT0gMSkKKyAgICAgICAgICAgIHx8ICh0b2tlbi50eXBlKCkgPT0gUGVyY2VudGFn
ZVRva2VuICYmIHpvb20tPmRvdWJsZVZhbHVlKCkgPT0gMTAwKSkpCiAgICAgICAgIGNvbnRleHQu
dXNlQ291bnRlcigpLT5jb3VudChVc2VDb3VudGVyOjpDU1Nab29tTm90RXF1YWxUb09uZSk7CiAg
ICAgcmV0dXJuIHpvb207CiB9CkBAIC0xMjQ5LDcgKzEyNDksNyBAQCBzdGF0aWMgQ1NTVmFsdWUq
IGNvbnN1bWVTdGVwcyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKICAgICByYW5nZSA9IHJhbmdlQ29weTsKLSAgICByZXR1cm4gQ1NTU3RlcHNU
aW1pbmdGdW5jdGlvblZhbHVlOjpjcmVhdGUoc3RlcHMtPmdldEludFZhbHVlKCksIHBvc2l0aW9u
KTsKKyAgICByZXR1cm4gQ1NTU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlOjpjcmVhdGUoc3RlcHMt
PmludFZhbHVlKCksIHBvc2l0aW9uKTsKIH0KIAogc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lQ3Vi
aWNCZXppZXIoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCkBAIC0xMzI4LDcgKzEzMjgsNyBA
QCBzdGF0aWMgYm9vbCBpc1ZhbGlkQW5pbWF0aW9uUHJvcGVydHlMaXN0KENTU1Byb3BlcnR5SUQg
cHJvcGVydHksIGNvbnN0IENTU1ZhbHVlTAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBmb3Ig
KGF1dG8mIHZhbHVlIDogdmFsdWVMaXN0KSB7CiAgICAgICAgIGlmICh2YWx1ZS0+aXNQcmltaXRp
dmVWYWx1ZSgpICYmIHRvQ1NTUHJpbWl0aXZlVmFsdWUoKnZhbHVlKS5pc1ZhbHVlSUQoKQotICAg
ICAgICAgICAgJiYgdG9DU1NQcmltaXRpdmVWYWx1ZSgqdmFsdWUpLmdldFZhbHVlSUQoKSA9PSBD
U1NWYWx1ZU5vbmUpCisgICAgICAgICAgICAmJiB0b0NTU1ByaW1pdGl2ZVZhbHVlKCp2YWx1ZSku
dmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAgICAgcmV0dXJuIHRydWU7CkBAIC0xNDI4LDcgKzE0MjgsNyBAQCBzdGF0aWMgQ1NTU2hh
ZG93VmFsdWUqIHBhcnNlU2luZ2xlU2hhZG93KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBD
U1NQYXJzZXJNbwogICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBzcHJlYWREaXN0YW5jZSA9IG51bGxw
dHI7CiAgICAgaWYgKGJsdXJSYWRpdXMpIHsKICAgICAgICAgLy8gQmx1ciByYWRpdXMgbXVzdCBi
ZSBub24tbmVnYXRpdmUuCi0gICAgICAgIGlmIChibHVyUmFkaXVzLT5nZXREb3VibGVWYWx1ZSgp
IDwgMCkKKyAgICAgICAgaWYgKGJsdXJSYWRpdXMtPmRvdWJsZVZhbHVlKCkgPCAwKQogICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIGlmIChhbGxvd1NwcmVhZCkKICAgICAgICAg
ICAgIHNwcmVhZERpc3RhbmNlID0gY29uc3VtZUxlbmd0aChyYW5nZSwgY3NzUGFyc2VyTW9kZSwg
VmFsdWVSYW5nZUFsbCk7CkBAIC0xNDk2LDcgKzE0OTYsNyBAQCBzdGF0aWMgQ1NTRnVuY3Rpb25W
YWx1ZSogY29uc3VtZUZpbHRlckZ1bmN0aW9uKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBj
b25zdAogICAgICAgICAgICAgaWYgKHBhcnNlZFZhbHVlICYmIGZpbHRlclR5cGUgIT0gQ1NTVmFs
dWVTYXR1cmF0ZSAmJiBmaWx0ZXJUeXBlICE9IENTU1ZhbHVlQ29udHJhc3QpIHsKICAgICAgICAg
ICAgICAgICBib29sIGlzUGVyY2VudGFnZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUocGFyc2VkVmFs
dWUpLT5pc1BlcmNlbnRhZ2UoKTsKICAgICAgICAgICAgICAgICBkb3VibGUgbWF4QWxsb3dlZCA9
IGlzUGVyY2VudGFnZSA/IDEwMC4wIDogMS4wOwotICAgICAgICAgICAgICAgIGlmICh0b0NTU1By
aW1pdGl2ZVZhbHVlKHBhcnNlZFZhbHVlKS0+Z2V0RG91YmxlVmFsdWUoKSA+IG1heEFsbG93ZWQp
IHsKKyAgICAgICAgICAgICAgICBpZiAodG9DU1NQcmltaXRpdmVWYWx1ZShwYXJzZWRWYWx1ZSkt
PmRvdWJsZVZhbHVlKCkgPiBtYXhBbGxvd2VkKSB7CiAgICAgICAgICAgICAgICAgICAgIHBhcnNl
ZFZhbHVlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZSgKICAgICAgICAgICAgICAgICAgICAg
ICAgIG1heEFsbG93ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICBpc1BlcmNlbnRhZ2UgPyBD
U1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OlBlcmNlbnRhZ2UgOiBDU1NQcmltaXRpdmVWYWx1
ZTo6VW5pdFR5cGU6Ok51bWJlcik7CkBAIC0yMTIxLDcgKzIxMjEsNyBAQCBzdGF0aWMgQ1NTUHJp
bWl0aXZlVmFsdWUqIGNvbnN1bWVQZXJzcGVjdGl2ZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5n
ZSwgQ1NTUGFycwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIHBhcnNlZFZh
bHVlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShwZXJzcGVjdGl2ZSwgQ1NTUHJpbWl0aXZl
VmFsdWU6OlVuaXRUeXBlOjpQaXhlbHMpOwogICAgIH0KLSAgICBpZiAocGFyc2VkVmFsdWUgJiYg
KHBhcnNlZFZhbHVlLT5pc0NhbGN1bGF0ZWQoKSB8fCBwYXJzZWRWYWx1ZS0+Z2V0RG91YmxlVmFs
dWUoKSA+IDApKQorICAgIGlmIChwYXJzZWRWYWx1ZSAmJiAocGFyc2VkVmFsdWUtPmlzQ2FsY3Vs
YXRlZCgpIHx8IHBhcnNlZFZhbHVlLT5kb3VibGVWYWx1ZSgpID4gMCkpCiAgICAgICAgIHJldHVy
biBwYXJzZWRWYWx1ZTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KQEAgLTIxNTIsNyArMjE1Miw3
IEBAIHN0YXRpYyBDU1NWYWx1ZSogY29uc3VtZVNjcm9sbFNuYXBQb2ludHMoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vCiAgICAgaWYgKHJhbmdlLnBlZWsoKS5mdW5jdGlv
bklkKCkgPT0gQ1NTVmFsdWVSZXBlYXQpIHsKICAgICAgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSBh
cmdzID0gY29uc3VtZUZ1bmN0aW9uKHJhbmdlKTsKICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUq
IHBhcnNlZFZhbHVlID0gY29uc3VtZUxlbmd0aE9yUGVyY2VudChhcmdzLCBjc3NQYXJzZXJNb2Rl
LCBWYWx1ZVJhbmdlTm9uTmVnYXRpdmUpOwotICAgICAgICBpZiAoYXJncy5hdEVuZCgpICYmIHBh
cnNlZFZhbHVlICYmIChwYXJzZWRWYWx1ZS0+aXNDYWxjdWxhdGVkKCkgfHwgcGFyc2VkVmFsdWUt
PmdldERvdWJsZVZhbHVlKCkgPiAwKSkgeworICAgICAgICBpZiAoYXJncy5hdEVuZCgpICYmIHBh
cnNlZFZhbHVlICYmIChwYXJzZWRWYWx1ZS0+aXNDYWxjdWxhdGVkKCkgfHwgcGFyc2VkVmFsdWUt
PmRvdWJsZVZhbHVlKCkgPiAwKSkgewogICAgICAgICAgICAgQ1NTRnVuY3Rpb25WYWx1ZSogcmVz
dWx0ID0gQ1NTRnVuY3Rpb25WYWx1ZTo6Y3JlYXRlKENTU1ZhbHVlUmVwZWF0KTsKICAgICAgICAg
ICAgIHJlc3VsdC0+YXBwZW5kKCpwYXJzZWRWYWx1ZSk7CiAgICAgICAgICAgICByZXR1cm4gcmVz
dWx0OwpAQCAtMjU5Miw3ICsyNTkyLDcgQEAgc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lSW1hZ2VP
cmllbnRhdGlvbihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKICAgICAgICAgcmV0dXJuIGNv
bnN1bWVJZGVudChyYW5nZSk7CiAgICAgaWYgKHJhbmdlLnBlZWsoKS50eXBlKCkgIT0gTnVtYmVy
VG9rZW4pIHsKICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGFuZ2xlID0gY29uc3VtZUFuZ2xl
KHJhbmdlKTsKLSAgICAgICAgaWYgKGFuZ2xlICYmIGFuZ2xlLT5nZXREb3VibGVWYWx1ZSgpID09
IDApCisgICAgICAgIGlmIChhbmdsZSAmJiBhbmdsZS0+ZG91YmxlVmFsdWUoKSA9PSAwKQogICAg
ICAgICAgICAgcmV0dXJuIGFuZ2xlOwogICAgIH0KICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI4
NDcsOSArMjg0Nyw5IEBAIHN0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUdyaWRMaW5lKENTU1BhcnNl
clRva2VuUmFuZ2UmIHJhbmdlKQogCiAgICAgaWYgKHNwYW5WYWx1ZSAmJiAhbnVtZXJpY1ZhbHVl
ICYmICFncmlkTGluZU5hbWUpCiAgICAgICAgIHJldHVybiBudWxscHRyOyAvLyAic3BhbiIga2V5
d29yZCBhbG9uZSBpcyBpbnZhbGlkLgotICAgIGlmIChzcGFuVmFsdWUgJiYgbnVtZXJpY1ZhbHVl
ICYmIG51bWVyaWNWYWx1ZS0+Z2V0SW50VmFsdWUoKSA8IDApCisgICAgaWYgKHNwYW5WYWx1ZSAm
JiBudW1lcmljVmFsdWUgJiYgbnVtZXJpY1ZhbHVlLT5pbnRWYWx1ZSgpIDwgMCkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7IC8vIE5lZ2F0aXZlIG51bWJlcnMgYXJlIG5vdCBhbGxvd2VkIGZvciBz
cGFuLgotICAgIGlmIChudW1lcmljVmFsdWUgJiYgbnVtZXJpY1ZhbHVlLT5nZXRJbnRWYWx1ZSgp
ID09IDApCisgICAgaWYgKG51bWVyaWNWYWx1ZSAmJiBudW1lcmljVmFsdWUtPmludFZhbHVlKCkg
PT0gMCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7IC8vIEFuIDxpbnRlZ2VyPiB2YWx1ZSBvZiB6
ZXJvIG1ha2VzIHRoZSBkZWNsYXJhdGlvbiBpbnZhbGlkLgogCiAgICAgQ1NTVmFsdWVMaXN0KiB2
YWx1ZXMgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CkBAIC0yODY1LDcg
KzI4NjUsNyBAQCBzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVHcmlkTGluZShDU1NQYXJzZXJUb2tl
blJhbmdlJiByYW5nZSkKIAogc3RhdGljIGJvb2wgaXNHcmlkVHJhY2tGaXhlZFNpemVkKGNvbnN0
IENTU1ByaW1pdGl2ZVZhbHVlJiBwcmltaXRpdmVWYWx1ZSkKIHsKLSAgICBDU1NWYWx1ZUlEIHZh
bHVlSUQgPSBwcmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCk7CisgICAgQ1NTVmFsdWVJRCB2YWx1
ZUlEID0gcHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpOwogICAgIGlmICh2YWx1ZUlEID09IENTU1Zh
bHVlTWluQ29udGVudCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTWF4Q29udGVudCB8fCB2YWx1ZUlE
ID09IENTU1ZhbHVlQXV0byB8fCBwcmltaXRpdmVWYWx1ZS5pc0ZsZXgoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCkBAIC0zMDUzLDcgKzMwNTMsNyBAQCBzdGF0aWMgYm9vbCBjb25zdW1lR3Jp
ZFRyYWNrUmVwZWF0RnVuY3Rpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNl
cgogICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcmVwZXRpdGlvbiA9IGNvbnN1bWVQb3NpdGl2
ZUludGVnZXIoYXJncyk7CiAgICAgICAgIGlmICghcmVwZXRpdGlvbikKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgcmVwZXRpdGlvbnMgPSBjbGFtcFRvPHNpemVfdD4ocmVwZXRp
dGlvbi0+Z2V0RG91YmxlVmFsdWUoKSwgMCwga0dyaWRNYXhUcmFja3MpOworICAgICAgICByZXBl
dGl0aW9ucyA9IGNsYW1wVG88c2l6ZV90PihyZXBldGl0aW9uLT5kb3VibGVWYWx1ZSgpLCAwLCBr
R3JpZE1heFRyYWNrcyk7CiAgICAgICAgIHJlcGVhdGVkVmFsdWVzID0gQ1NTVmFsdWVMaXN0Ojpj
cmVhdGVTcGFjZVNlcGFyYXRlZCgpOwogICAgIH0KICAgICBpZiAoIWNvbnN1bWVDb21tYUluY2x1
ZGluZ1doaXRlc3BhY2UoYXJncykpCkBAIC00MjQyLDcgKzQyNDIsNyBAQCBib29sIENTU1Byb3Bl
cnR5UGFyc2VyOjpjb25zdW1lTGVnYWN5QnJlYWtQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3Bl
cnR5LCBib29sCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIW1fcmFuZ2UuYXRFbmQo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIENTU1ZhbHVlSUQgdmFsdWUgPSBrZXl3b3Jk
LT5nZXRWYWx1ZUlEKCk7CisgICAgQ1NTVmFsdWVJRCB2YWx1ZSA9IGtleXdvcmQtPnZhbHVlSUQo
KTsKICAgICBzd2l0Y2ggKHByb3BlcnR5KSB7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZ2VCcmVh
a0FmdGVyOgogICAgIGNhc2UgQ1NTUHJvcGVydHlQYWdlQnJlYWtCZWZvcmU6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5jcHAK
aW5kZXggYmRkZjAxNmM3YzA5ZjRkOWM2ZmM3YTU5Mjk2YzE4OGQwMmNmM2M1MC4uNTc4NzdjZGY2
OTk2YmQ2YzdjODRkZjMzYzZjYWU0NWY3ZTE5NGFhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcApAQCAtMzc5LDcg
KzM3OSw3IEBAIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZVVybChDU1NQYXJzZXJU
b2tlblJhbmdlJiByYW5nZSkKIAogc3RhdGljIGludCBjbGFtcFJHQkNvbXBvbmVudChjb25zdCBD
U1NQcmltaXRpdmVWYWx1ZSYgdmFsdWUpCiB7Ci0gICAgZG91YmxlIHJlc3VsdCA9IHZhbHVlLmdl
dERvdWJsZVZhbHVlKCk7CisgICAgZG91YmxlIHJlc3VsdCA9IHZhbHVlLmRvdWJsZVZhbHVlKCk7
CiAgICAgLy8gRklYTUU6IE11bHRpcGx5IGJ5IDIuNTUgYW5kIHJvdW5kIGluc3RlYWQgb2YgZmxv
b3IuCiAgICAgaWYgKHZhbHVlLmlzUGVyY2VudGFnZSgpKQogICAgICAgICByZXN1bHQgKj0gMi41
NjsKQEAgLTQzMCwxNCArNDMwLDE0IEBAIHN0YXRpYyBib29sIHBhcnNlSFNMUGFyYW1ldGVycyhD
U1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgUkdCQTMyJiByZXN1bHQsIGJvb2wKICAgICBpZiAo
IWhzbFZhbHVlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgZG91YmxlIGNvbG9yQXJyYXlb
M107Ci0gICAgY29sb3JBcnJheVswXSA9ICgoKGhzbFZhbHVlLT5nZXRJbnRWYWx1ZSgpICUgMzYw
KSArIDM2MCkgJSAzNjApIC8gMzYwLjA7CisgICAgY29sb3JBcnJheVswXSA9ICgoKGhzbFZhbHVl
LT5pbnRWYWx1ZSgpICUgMzYwKSArIDM2MCkgJSAzNjApIC8gMzYwLjA7CiAgICAgZm9yIChpbnQg
aSA9IDE7IGkgPCAzOyBpKyspIHsKICAgICAgICAgaWYgKCFjb25zdW1lQ29tbWFJbmNsdWRpbmdX
aGl0ZXNwYWNlKGFyZ3MpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBoc2xW
YWx1ZSA9IGNvbnN1bWVQZXJjZW50KGFyZ3MsIFZhbHVlUmFuZ2VBbGwpOwogICAgICAgICBpZiAo
IWhzbFZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBkb3VibGUgZG91
YmxlVmFsdWUgPSBoc2xWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKTsKKyAgICAgICAgZG91YmxlIGRv
dWJsZVZhbHVlID0gaHNsVmFsdWUtPmRvdWJsZVZhbHVlKCk7CiAgICAgICAgIGNvbG9yQXJyYXlb
aV0gPSBjbGFtcFRvPGRvdWJsZT4oZG91YmxlVmFsdWUsIDAuMCwgMTAwLjApIC8gMTAwLjA7IC8v
IE5lZWRzIHRvIGJlIHZhbHVlIGJldHdlZW4gMCBhbmQgMS4wLgogICAgIH0KICAgICBkb3VibGUg
YWxwaGEgPSAxLjA7CkBAIC01MjEsMTIgKzUyMSwxMiBAQCBzdGF0aWMgUmVmUHRyPENTU1ByaW1p
dGl2ZVZhbHVlPiBjb25zdW1lUG9zaXRpb25Db21wb25lbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYg
cgogCiBzdGF0aWMgYm9vbCBpc0hvcml6b250YWxQb3NpdGlvbktleXdvcmRPbmx5KGNvbnN0IENT
U1ByaW1pdGl2ZVZhbHVlJiB2YWx1ZSkKIHsKLSAgICByZXR1cm4gdmFsdWUuaXNWYWx1ZUlEKCkg
JiYgKHZhbHVlLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZUxlZnQgfHwgdmFsdWUuZ2V0VmFsdWVJ
RCgpID09IENTU1ZhbHVlUmlnaHQpOworICAgIHJldHVybiB2YWx1ZS5pc1ZhbHVlSUQoKSAmJiAo
dmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlTGVmdCB8fCB2YWx1ZS52YWx1ZUlEKCkgPT0gQ1NT
VmFsdWVSaWdodCk7CiB9CiAKIHN0YXRpYyBib29sIGlzVmVydGljYWxQb3NpdGlvbktleXdvcmRP
bmx5KGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJiB2YWx1ZSkKIHsKLSAgICByZXR1cm4gdmFsdWUu
aXNWYWx1ZUlEKCkgJiYgKHZhbHVlLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZVRvcCB8fCB2YWx1
ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVCb3R0b20pOworICAgIHJldHVybiB2YWx1ZS5pc1Zh
bHVlSUQoKSAmJiAodmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlVG9wIHx8IHZhbHVlLnZhbHVl
SUQoKSA9PSBDU1NWYWx1ZUJvdHRvbSk7CiB9CiAKIHN0YXRpYyB2b2lkIHBvc2l0aW9uRnJvbU9u
ZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlJiB2YWx1ZSwgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiYgcmVzdWx0WCwgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiYgcmVzdWx0WSkKQEAgLTU2Nyw3
ICs1NjcsNyBAQCBzdGF0aWMgYm9vbCBwb3NpdGlvbkZyb21UaHJlZU9yRm91clZhbHVlcyhDU1NQ
cmltaXRpdmVWYWx1ZSoqIHZhbHVlcywgUmVmUHRyPENTUwogICAgICAgICBDU1NQcmltaXRpdmVW
YWx1ZSogY3VycmVudFZhbHVlID0gdmFsdWVzW2ldOwogICAgICAgICBpZiAoIWN1cnJlbnRWYWx1
ZS0+aXNWYWx1ZUlEKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIENTU1Zh
bHVlSUQgaWQgPSBjdXJyZW50VmFsdWUtPmdldFZhbHVlSUQoKTsKKyAgICAgICAgQ1NTVmFsdWVJ
RCBpZCA9IGN1cnJlbnRWYWx1ZS0+dmFsdWVJRCgpOwogCiAgICAgICAgIGlmIChpZCA9PSBDU1NW
YWx1ZUNlbnRlcikgewogICAgICAgICAgICAgaWYgKGNlbnRlcikKQEAgLTg4OSwxMCArODg5LDEw
IEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVSYWRpYWxHcmFkaWVudChDU1NQYXJz
ZXJUb2tlblJhbmdlJiBhcmdzLCBDU1NQYXJzCiAgICAgaWYgKHNpemVLZXl3b3JkICYmIGhvcml6
b250YWxTaXplKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAvLyBDaXJjbGVzIG11c3Qg
aGF2ZSAwIG9yIDEgbGVuZ3Rocy4KLSAgICBpZiAoc2hhcGUgJiYgc2hhcGUtPmdldFZhbHVlSUQo
KSA9PSBDU1NWYWx1ZUNpcmNsZSAmJiB2ZXJ0aWNhbFNpemUpCisgICAgaWYgKHNoYXBlICYmIHNo
YXBlLT52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVDaXJjbGUgJiYgdmVydGljYWxTaXplKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICAvLyBFbGxpcHNlcyBtdXN0IGhhdmUgMCBvciAyIGxlbmd0
aC9wZXJjZW50YWdlcy4KLSAgICBpZiAoc2hhcGUgJiYgc2hhcGUtPmdldFZhbHVlSUQoKSA9PSBD
U1NWYWx1ZUVsbGlwc2UgJiYgaG9yaXpvbnRhbFNpemUgJiYgIXZlcnRpY2FsU2l6ZSkKKyAgICBp
ZiAoc2hhcGUgJiYgc2hhcGUtPnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUVsbGlwc2UgJiYgaG9yaXpv
bnRhbFNpemUgJiYgIXZlcnRpY2FsU2l6ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
Ly8gSWYgdGhlcmUncyBvbmx5IG9uZSBzaXplLCBpdCBtdXN0IGJlIGEgbGVuZ3RoLgogICAgIGlm
ICghdmVydGljYWxTaXplICYmIGhvcml6b250YWxTaXplICYmIGhvcml6b250YWxTaXplLT5pc1Bl
cmNlbnRhZ2UoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCmluZGV4IDhkY2M5NzU0ODZhZWFhMDM1ZjNjZWM4
NmU4ZDE0MTZhYmQzMGMyMWYuLjk0MGU3ZmQ0Njc5YzUxMDU1Y2YzYTY1YTdmNTgwZTEzMmVjNGZi
ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1JhbmdlLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkNvbW1l
bnQuaCIKICNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIK
KyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRl
ICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJIVE1MQm9keUVsZW1lbnQuaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TZWxlY3RvclF1ZXJ5LmNwcAppbmRleCBkMjUxN2JhOTliYjYzYjY3NDUyYWEyYzFkN2RjNTY3
NGE2YzU3ZTEzLi41NTdkYmU1OTY2ZjkwYmM4Y2QyM2VjYjc0OTVjMTZmZTc3MDY3ZjkyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1NlbGVjdG9yUXVlcnkuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNs
dWRlICJDU1NQYXJzZXIuaCIKICNpbmNsdWRlICJFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgi
CisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2lu
Y2x1ZGUgIlNlbGVjdG9yQ2hlY2tlci5oIgogI2luY2x1ZGUgIlN0YXRpY05vZGVMaXN0LmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCmluZGV4IDcwMjFh
MDFlNTE4OWJlNzE4NTNlMjUyYjBjOTQ1M2NmYzhjNDlkNTUuLjI2NmNmNjk3M2EzMDNmZDFhZWRj
YWUwNGQyYjI4MjgxNDM1MjYwM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
QXBwbHlTdHlsZUNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlT
dHlsZUNvbW1hbmQuY3BwCkBAIC01OSw3ICs1OSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFt
ZXM7CiAKIHN0YXRpYyBpbnQgdG9JZGVudGlmaWVyKFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHZhbHVl
KQogewotICAgIHJldHVybiAodmFsdWUgJiYgdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgPyBz
dGF0aWNfcG9pbnRlcl9jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSktPmdldFZhbHVlSUQo
KSA6IDA7CisgICAgcmV0dXJuICh2YWx1ZSAmJiB2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSA/
IHN0YXRpY19wb2ludGVyX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS0+dmFsdWVJRCgp
IDogMDsKIH0KIAogc3RhdGljIFN0cmluZyYgc3R5bGVTcGFuQ2xhc3NTdHJpbmcoKQpAQCAtMTUx
Myw4ICsxNTEzLDggQEAgZmxvYXQgQXBwbHlTdHlsZUNvbW1hbmQ6OmNvbXB1dGVkRm9udFNpemUo
Tm9kZSogbm9kZSkKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgUmVm
UHRyPENTU1ZhbHVlPiB2YWx1ZSA9IENvbXB1dGVkU3R5bGVFeHRyYWN0b3Iobm9kZSkucHJvcGVy
dHlWYWx1ZShDU1NQcm9wZXJ0eUZvbnRTaXplKTsKLSAgICByZXR1cm4gZG93bmNhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWU+KCp2YWx1ZSkuZ2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X1BYKTsKKyAgICBhdXRvIHZhbHVlID0gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcihub2RlKS5wcm9w
ZXJ0eVZhbHVlKENTU1Byb3BlcnR5Rm9udFNpemUpOworICAgIHJldHVybiBkb3duY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZT4oKnZhbHVlKS5mbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
UFgpOwogfQogCiB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjpqb2luQ2hpbGRUZXh0Tm9kZXMoTm9k
ZSogbm9kZSwgY29uc3QgUG9zaXRpb24mIHN0YXJ0LCBjb25zdCBQb3NpdGlvbiYgZW5kKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCmluZGV4IDdlYWFiYjNkOTUzM2ZhZGMx
OWY5NjBmMDU5ZTNiNTViZWUwMzU2OTQuLjRjN2E5MDQ0NmZhYzRjZDRmYWRiMzYwNzc2ZTNiNTcz
M2RiMjE4NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKQEAgLTE0
NCwxMyArMTQ0LDEyIEBAIGludCBpZGVudGlmaWVyRm9yU3R5bGVQcm9wZXJ0eShUJiBzdHlsZSwg
Q1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEKQogICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWUgPSBl
eHRyYWN0UHJvcGVydHlWYWx1ZShzdHlsZSwgcHJvcGVydHlJRCk7CiAgICAgaWYgKCFpczxDU1NQ
cmltaXRpdmVWYWx1ZT4odmFsdWUuZ2V0KCkpKQogICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1
cm4gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YWx1ZSkuZ2V0VmFsdWVJRCgpOworICAg
IHJldHVybiBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVlKS52YWx1ZUlEKCk7CiB9
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFBhc3NSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydGll
cz4gZ2V0UHJvcGVydGllc05vdEluKFN0eWxlUHJvcGVydGllcyYgc3R5bGVXaXRoUmVkdW5kYW50
UHJvcGVydGllcywgVCYgYmFzZVN0eWxlKTsKIGVudW0gTGVnYWN5Rm9udFNpemVNb2RlIHsgQWx3
YXlzVXNlTGVnYWN5Rm9udFNpemUsIFVzZUxlZ2FjeUZvbnRTaXplT25seUlmUGl4ZWxWYWx1ZXNN
YXRjaCB9Owogc3RhdGljIGludCBsZWdhY3lGb250U2l6ZUZyb21DU1NWYWx1ZShEb2N1bWVudCos
IENTU1ByaW1pdGl2ZVZhbHVlKiwgYm9vbCBzaG91bGRVc2VGaXhlZEZvbnREZWZhdWx0U2l6ZSwg
TGVnYWN5Rm9udFNpemVNb2RlKTsKLXN0YXRpYyBib29sIGlzVHJhbnNwYXJlbnRDb2xvclZhbHVl
KENTU1ZhbHVlKik7CiBzdGF0aWMgYm9vbCBoYXNUcmFuc3BhcmVudEJhY2tncm91bmRDb2xvcihT
dHlsZVByb3BlcnRpZXMqKTsKIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGJhY2tncm91bmRDb2xv
ckluRWZmZWN0KE5vZGUqKTsKIApAQCAtMTk2LDcgKzE5NSw3IEBAIEhUTUxFbGVtZW50RXF1aXZh
bGVudDo6SFRNTEVsZW1lbnRFcXVpdmFsZW50KENTU1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlSUQg
cHJpbWl0CiBib29sIEhUTUxFbGVtZW50RXF1aXZhbGVudDo6dmFsdWVJc1ByZXNlbnRJblN0eWxl
KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEVkaXRpbmdTdHlsZSYgc3R5bGUpIGNvbnN0CiB7CiAg
ICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IHN0eWxlLm1fbXV0YWJsZVN0eWxlLT5nZXRQcm9w
ZXJ0eUNTU1ZhbHVlKG1fcHJvcGVydHlJRCk7Ci0gICAgcmV0dXJuIG1hdGNoZXMoZWxlbWVudCkg
JiYgaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlLmdldCgpKSAmJiBkb3duY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZT4oKnZhbHVlKS5nZXRWYWx1ZUlEKCkgPT0gbV9wcmltaXRpdmVWYWx1ZS0+Z2V0
VmFsdWVJRCgpOworICAgIHJldHVybiBtYXRjaGVzKGVsZW1lbnQpICYmIGlzPENTU1ByaW1pdGl2
ZVZhbHVlPih2YWx1ZS5nZXQoKSkgJiYgZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YWx1
ZSkudmFsdWVJRCgpID09IG1fcHJpbWl0aXZlVmFsdWUtPnZhbHVlSUQoKTsKIH0KIAogdm9pZCBI
VE1MRWxlbWVudEVxdWl2YWxlbnQ6OmFkZFRvU3R5bGUoRWxlbWVudCosIEVkaXRpbmdTdHlsZSog
c3R5bGUpIGNvbnN0CkBAIC01MTIsNyArNTExLDcgQEAgdm9pZCBFZGl0aW5nU3R5bGU6OmV4dHJh
Y3RGb250U2l6ZURlbHRhKCkKICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlLmlzUHgoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgbV9mb250U2l6ZURlbHRhID0gcHJpbWl0aXZlVmFsdWUuZ2V0Rmxv
YXRWYWx1ZSgpOworICAgIG1fZm9udFNpemVEZWx0YSA9IHByaW1pdGl2ZVZhbHVlLmZsb2F0VmFs
dWUoKTsKICAgICBtX211dGFibGVTdHlsZS0+cmVtb3ZlUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJr
aXRGb250U2l6ZURlbHRhKTsKIH0KIApAQCAtNTUzLDEzICs1NTIsMTMgQEAgYm9vbCBFZGl0aW5n
U3R5bGU6OnRleHREaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlvbiYgd3JpdGluZ0RpcmVjdGlvbikg
Y29uc3QKICAgICBpZiAoIWlzPENTU1ByaW1pdGl2ZVZhbHVlPih1bmljb2RlQmlkaS5nZXQoKSkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIENTU1ZhbHVlSUQgdW5pY29kZUJpZGlWYWx1
ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdW5pY29kZUJpZGkpLmdldFZhbHVlSUQo
KTsKKyAgICBDU1NWYWx1ZUlEIHVuaWNvZGVCaWRpVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZT4oKnVuaWNvZGVCaWRpKS52YWx1ZUlEKCk7CiAgICAgaWYgKHVuaWNvZGVCaWRpVmFs
dWUgPT0gQ1NTVmFsdWVFbWJlZCkgewogICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IGRpcmVjdGlv
biA9IG1fbXV0YWJsZVN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5RGlyZWN0
aW9uKTsKICAgICAgICAgaWYgKCFpczxDU1NQcmltaXRpdmVWYWx1ZT4oZGlyZWN0aW9uLmdldCgp
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICB3cml0aW5nRGlyZWN0aW9u
ID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCpkaXJlY3Rpb24pLmdldFZhbHVlSUQoKSA9
PSBDU1NWYWx1ZUx0ciA/IExlZnRUb1JpZ2h0V3JpdGluZ0RpcmVjdGlvbiA6IFJpZ2h0VG9MZWZ0
V3JpdGluZ0RpcmVjdGlvbjsKKyAgICAgICAgd3JpdGluZ0RpcmVjdGlvbiA9IGRvd25jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlPigqZGlyZWN0aW9uKS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVMdHIgPyBM
ZWZ0VG9SaWdodFdyaXRpbmdEaXJlY3Rpb24gOiBSaWdodFRvTGVmdFdyaXRpbmdEaXJlY3Rpb247
CiAKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMTA5OCw5ICsxMDk3LDkgQEAgdm9p
ZCBFZGl0aW5nU3R5bGU6OnByZXBhcmVUb0FwcGx5QXQoY29uc3QgUG9zaXRpb24mIHBvc2l0aW9u
LCBTaG91bGRQcmVzZXJ2ZVdyaXQKICAgICAgICAgbV9tdXRhYmxlU3R5bGUtPnJlbW92ZVByb3Bl
cnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsKIAogICAgIGlmIChpczxDU1NQcmltaXRp
dmVWYWx1ZT4odW5pY29kZUJpZGkuZ2V0KCkpKSB7Ci0gICAgICAgIG1fbXV0YWJsZVN0eWxlLT5z
ZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVVuaWNvZGVCaWRpLCBzdGF0aWNfY2FzdDxDU1NWYWx1ZUlE
Pihkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnVuaWNvZGVCaWRpKS5nZXRWYWx1ZUlEKCkp
KTsKKyAgICAgICAgbV9tdXRhYmxlU3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5VW5pY29k
ZUJpZGksIHN0YXRpY19jYXN0PENTU1ZhbHVlSUQ+KGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
PigqdW5pY29kZUJpZGkpLnZhbHVlSUQoKSkpOwogICAgICAgICBpZiAoaXM8Q1NTUHJpbWl0aXZl
VmFsdWU+KGRpcmVjdGlvbi5nZXQoKSkpCi0gICAgICAgICAgICBtX211dGFibGVTdHlsZS0+c2V0
UHJvcGVydHkoQ1NTUHJvcGVydHlEaXJlY3Rpb24sIHN0YXRpY19jYXN0PENTU1ZhbHVlSUQ+KGRv
d25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqZGlyZWN0aW9uKS5nZXRWYWx1ZUlEKCkpKTsKKyAg
ICAgICAgICAgIG1fbXV0YWJsZVN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eURpcmVjdGlv
biwgc3RhdGljX2Nhc3Q8Q1NTVmFsdWVJRD4oZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCpk
aXJlY3Rpb24pLnZhbHVlSUQoKSkpOwogICAgIH0KIH0KIApAQCAtMTQ4Myw3ICsxNDgyLDcgQEAg
V3JpdGluZ0RpcmVjdGlvbiBFZGl0aW5nU3R5bGU6OnRleHREaXJlY3Rpb25Gb3JTZWxlY3Rpb24o
Y29uc3QgVmlzaWJsZVNlbGVjdGlvbiYKICAgICAgICAgICAgIGlmICghaXM8Q1NTUHJpbWl0aXZl
VmFsdWU+KHVuaWNvZGVCaWRpLmdldCgpKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAot
ICAgICAgICAgICAgQ1NTVmFsdWVJRCB1bmljb2RlQmlkaVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWU+KCp1bmljb2RlQmlkaSkuZ2V0VmFsdWVJRCgpOworICAgICAgICAgICAgQ1NT
VmFsdWVJRCB1bmljb2RlQmlkaVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp1
bmljb2RlQmlkaSkudmFsdWVJRCgpOwogICAgICAgICAgICAgaWYgKHVuaWNvZGVCaWRpVmFsdWUg
PT0gQ1NTVmFsdWVFbWJlZCB8fCB1bmljb2RlQmlkaVZhbHVlID09IENTU1ZhbHVlQmlkaU92ZXJy
aWRlKQogICAgICAgICAgICAgICAgIHJldHVybiBOYXR1cmFsV3JpdGluZ0RpcmVjdGlvbjsKICAg
ICAgICAgfQpAQCAtMTUxMiw3ICsxNTExLDcgQEAgV3JpdGluZ0RpcmVjdGlvbiBFZGl0aW5nU3R5
bGU6OnRleHREaXJlY3Rpb25Gb3JTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYKICAg
ICAgICAgaWYgKCFpczxDU1NQcmltaXRpdmVWYWx1ZT4odW5pY29kZUJpZGkuZ2V0KCkpKQogICAg
ICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgQ1NTVmFsdWVJRCB1bmljb2RlQmlkaVZhbHVl
ID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp1bmljb2RlQmlkaSkuZ2V0VmFsdWVJRCgp
OworICAgICAgICBDU1NWYWx1ZUlEIHVuaWNvZGVCaWRpVmFsdWUgPSBkb3duY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZT4oKnVuaWNvZGVCaWRpKS52YWx1ZUlEKCk7CiAgICAgICAgIGlmICh1bmljb2Rl
QmlkaVZhbHVlID09IENTU1ZhbHVlTm9ybWFsKQogICAgICAgICAgICAgY29udGludWU7CiAKQEAg
LTE1MjQsNyArMTUyMyw3IEBAIFdyaXRpbmdEaXJlY3Rpb24gRWRpdGluZ1N0eWxlOjp0ZXh0RGly
ZWN0aW9uRm9yU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mCiAgICAgICAgIGlmICgh
aXM8Q1NTUHJpbWl0aXZlVmFsdWU+KGRpcmVjdGlvbi5nZXQoKSkpCiAgICAgICAgICAgICBjb250
aW51ZTsKIAotICAgICAgICBDU1NWYWx1ZUlEIGRpcmVjdGlvblZhbHVlID0gZG93bmNhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWU+KCpkaXJlY3Rpb24pLmdldFZhbHVlSUQoKTsKKyAgICAgICAgQ1NTVmFs
dWVJRCBkaXJlY3Rpb25WYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqZGlyZWN0
aW9uKS52YWx1ZUlEKCk7CiAgICAgICAgIGlmIChkaXJlY3Rpb25WYWx1ZSAhPSBDU1NWYWx1ZUx0
ciAmJiBkaXJlY3Rpb25WYWx1ZSAhPSBDU1NWYWx1ZVJ0bCkKICAgICAgICAgICAgIGNvbnRpbnVl
OwogCkBAIC0xNzQxLDcgKzE3NDAsNyBAQCBzdGF0aWMgYm9vbCBmb250V2VpZ2h0SXNCb2xkKENT
U1ZhbHVlJiBmb250V2VpZ2h0KQogCiAgICAgLy8gQmVjYXVzZSBiIHRhZyBjYW4gb25seSBib2xk
IHRleHQsIHRoZXJlIGFyZSBvbmx5IHR3byBzdGF0ZXMgaW4gcGxhaW4gaHRtbDogYm9sZCBhbmQg
bm90IGJvbGQuCiAgICAgLy8gQ29sbGFwc2UgYWxsIG90aGVyIHZhbHVlcyB0byBlaXRoZXIgb25l
IG9mIHRoZXNlIHR3byBzdGF0ZXMgZm9yIGVkaXRpbmcgcHVycG9zZXMuCi0gICAgc3dpdGNoIChk
b3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oZm9udFdlaWdodCkuZ2V0VmFsdWVJRCgpKSB7Cisg
ICAgc3dpdGNoIChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oZm9udFdlaWdodCkudmFsdWVJ
RCgpKSB7CiAgICAgICAgIGNhc2UgQ1NTVmFsdWUxMDA6CiAgICAgICAgIGNhc2UgQ1NTVmFsdWUy
MDA6CiAgICAgICAgIGNhc2UgQ1NTVmFsdWUzMDA6CkBAIC0xODE0LDcgKzE4MTMsNyBAQCBpbnQg
bGVnYWN5Rm9udFNpemVGcm9tQ1NTVmFsdWUoRG9jdW1lbnQqIGRvY3VtZW50LCBDU1NQcmltaXRp
dmVWYWx1ZSogdmFsdWUsIGJvbwogICAgIEFTU0VSVChkb2N1bWVudCk7IC8vIEZJWE1FOiBUaGlz
IG1ldGhvZCBzaG91bGQgdGFrZSBhIERvY3VtZW50JgogCiAgICAgaWYgKGlzQ1NTVmFsdWVMZW5n
dGgodmFsdWUpKSB7Ci0gICAgICAgIGludCBwaXhlbEZvbnRTaXplID0gdmFsdWUtPmdldEludFZh
bHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOworICAgICAgICBpbnQgcGl4ZWxGb250U2l6
ZSA9IHZhbHVlLT5pbnRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKICAgICAgICAg
aW50IGxlZ2FjeUZvbnRTaXplID0gU3R5bGU6OmxlZ2FjeUZvbnRTaXplRm9yUGl4ZWxTaXplKHBp
eGVsRm9udFNpemUsIHNob3VsZFVzZUZpeGVkRm9udERlZmF1bHRTaXplLCAqZG9jdW1lbnQpOwog
ICAgICAgICAvLyBVc2UgbGVnYWN5IGZvbnQgc2l6ZSBvbmx5IGlmIHBpeGVsIHZhbHVlIG1hdGNo
ZXMgZXhhY3RseSB0byB0aGF0IG9mIGxlZ2FjeSBmb250IHNpemUuCiAgICAgICAgIGludCBjc3NQ
cmltaXRpdmVFcXVpdmFsZW50ID0gbGVnYWN5Rm9udFNpemUgLSAxICsgQ1NTVmFsdWVYU21hbGw7
CkBAIC0xODI0LDM0ICsxODIzLDMzIEBAIGludCBsZWdhY3lGb250U2l6ZUZyb21DU1NWYWx1ZShE
b2N1bWVudCogZG9jdW1lbnQsIENTU1ByaW1pdGl2ZVZhbHVlKiB2YWx1ZSwgYm9vCiAgICAgICAg
IHJldHVybiAwOwogICAgIH0KIAotICAgIGlmIChDU1NWYWx1ZVhTbWFsbCA8PSB2YWx1ZS0+Z2V0
VmFsdWVJRCgpICYmIHZhbHVlLT5nZXRWYWx1ZUlEKCkgPD0gQ1NTVmFsdWVXZWJraXRYeHhMYXJn
ZSkKLSAgICAgICAgcmV0dXJuIHZhbHVlLT5nZXRWYWx1ZUlEKCkgLSBDU1NWYWx1ZVhTbWFsbCAr
IDE7CisgICAgaWYgKENTU1ZhbHVlWFNtYWxsIDw9IHZhbHVlLT52YWx1ZUlEKCkgJiYgdmFsdWUt
PnZhbHVlSUQoKSA8PSBDU1NWYWx1ZVdlYmtpdFh4eExhcmdlKQorICAgICAgICByZXR1cm4gdmFs
dWUtPnZhbHVlSUQoKSAtIENTU1ZhbHVlWFNtYWxsICsgMTsKIAogICAgIHJldHVybiAwOwogfQog
Ci1ib29sIGlzVHJhbnNwYXJlbnRDb2xvclZhbHVlKENTU1ZhbHVlKiBjc3NWYWx1ZSkKK3N0YXRp
YyBib29sIGlzVHJhbnNwYXJlbnRDb2xvclZhbHVlKENTU1ZhbHVlKiB2YWx1ZSkKIHsKLSAgICBp
ZiAoIWNzc1ZhbHVlKQorICAgIGlmICghdmFsdWUpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAg
IGlmICghaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KCpjc3NWYWx1ZSkpCisgICAgaWYgKCFpczxDU1NQ
cmltaXRpdmVWYWx1ZT4oKnZhbHVlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIENTU1By
aW1pdGl2ZVZhbHVlJiB2YWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqY3NzVmFs
dWUpOwotICAgIGlmICh2YWx1ZS5pc1JHQkNvbG9yKCkpCi0gICAgICAgIHJldHVybiB2YWx1ZS5j
b2xvcigpLmFscGhhKCkgPT0gMDsKLSAgICByZXR1cm4gdmFsdWUuZ2V0VmFsdWVJRCgpID09IENT
U1ZhbHVlVHJhbnNwYXJlbnQ7CisgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVlKTsKKyAgICBpZiAocHJpbWl0aXZlVmFsdWUuaXNSR0JD
b2xvcigpKQorICAgICAgICByZXR1cm4gIXByaW1pdGl2ZVZhbHVlLmNvbG9yKCkuYWxwaGEoKTsK
KyAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlVHJhbnNwYXJl
bnQ7CiB9CiAKIGJvb2wgaGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kQ29sb3IoU3R5bGVQcm9wZXJ0
aWVzKiBzdHlsZSkKIHsKLSAgICBSZWZQdHI8Q1NTVmFsdWU+IGNzc1ZhbHVlID0gc3R5bGUtPmdl
dFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpOwotICAgIHJldHVy
biBpc1RyYW5zcGFyZW50Q29sb3JWYWx1ZShjc3NWYWx1ZS5nZXQoKSk7CisgICAgcmV0dXJuIGlz
VHJhbnNwYXJlbnRDb2xvclZhbHVlKHN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3Bl
cnR5QmFja2dyb3VuZENvbG9yKS5nZXQoKSk7CiB9CiAKIFJlZlB0cjxDU1NWYWx1ZT4gYmFja2dy
b3VuZENvbG9ySW5FZmZlY3QoTm9kZSogbm9kZSkKIHsKICAgICBmb3IgKE5vZGUqIGFuY2VzdG9y
ID0gbm9kZTsgYW5jZXN0b3I7IGFuY2VzdG9yID0gYW5jZXN0b3ItPnBhcmVudE5vZGUoKSkgewot
ICAgICAgICBpZiAoUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IENvbXB1dGVkU3R5bGVFeHRyYWN0
b3IoYW5jZXN0b3IpLnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpKSB7
CisgICAgICAgIGlmIChhdXRvIHZhbHVlID0gQ29tcHV0ZWRTdHlsZUV4dHJhY3RvcihhbmNlc3Rv
cikucHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcikpIHsKICAgICAgICAg
ICAgIGlmICghaXNUcmFuc3BhcmVudENvbG9yVmFsdWUodmFsdWUuZ2V0KCkpKQogICAgICAgICAg
ICAgICAgIHJldHVybiB2YWx1ZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3Bw
CmluZGV4IDQ4OTM3ZTBhYmRlY2EwZmRlMzI5NTkxY2Q5NzU4YzhmODFmMDYyMmQuLjBlZmI0MzQ3
YjllYzk3NWIzNmY1MGRjNzk3NzI1OGYzNzMyZDQ0ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5jcHAKQEAgLTMyMDYsOSArMzIwNiw5IEBAIHZvaWQgRWRpdG9yOjphcHBseUVkaXRpbmdTdHls
ZVRvRWxlbWVudChFbGVtZW50KiBlbGVtZW50KSBjb25zdAogCiAgICAgLy8gTXV0YXRlIHVzaW5n
IHRoZSBDU1NPTSB3cmFwcGVyIHNvIHdlIGdldCB0aGUgc2FtZSBldmVudCBiZWhhdmlvciBhcyBh
IHNjcmlwdC4KICAgICBDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSA9IGRvd25jYXN0PFN0eWxl
ZEVsZW1lbnQ+KCplbGVtZW50KS5jc3NvbVN0eWxlKCk7Ci0gICAgc3R5bGUtPnNldFByb3BlcnR5
SW50ZXJuYWwoQ1NTUHJvcGVydHlXb3JkV3JhcCwgImJyZWFrLXdvcmQiLCBmYWxzZSwgSUdOT1JF
X0VYQ0VQVElPTik7Ci0gICAgc3R5bGUtPnNldFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlX
ZWJraXROYnNwTW9kZSwgInNwYWNlIiwgZmFsc2UsIElHTk9SRV9FWENFUFRJT04pOwotICAgIHN0
eWxlLT5zZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TGluZUJyZWFrLCAiYWZ0
ZXItd2hpdGUtc3BhY2UiLCBmYWxzZSwgSUdOT1JFX0VYQ0VQVElPTik7CisgICAgc3R5bGUtPnNl
dFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlXb3JkV3JhcCwgImJyZWFrLXdvcmQiLCBmYWxz
ZSk7CisgICAgc3R5bGUtPnNldFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXROYnNw
TW9kZSwgInNwYWNlIiwgZmFsc2UpOworICAgIHN0eWxlLT5zZXRQcm9wZXJ0eUludGVybmFsKENT
U1Byb3BlcnR5V2Via2l0TGluZUJyZWFrLCAiYWZ0ZXItd2hpdGUtc3BhY2UiLCBmYWxzZSk7CiB9
CiAKIGJvb2wgRWRpdG9yOjpmaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBGaW5kT3B0
aW9ucyBvcHRpb25zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVD
U1NQcm9wZXJ0eUNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVDU1NQ
cm9wZXJ0eUNvbW1hbmQuY3BwCmluZGV4IGE1NGUyYWY3ZTc2ZjQ0NTI4YWVjYTE2ZmYzMTQ3Yjk3
ZWFjZmI5YzEuLjM3NzA1NjViOWQ4ZDRlNGQzOTczZTE1MzQ3ZWYyODVkMzBjZTRmZGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlQ1NTUHJvcGVydHlDb21tYW5kLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92ZUNTU1Byb3BlcnR5Q29tbWFuZC5j
cHAKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJSZW1vdmVDU1NQcm9wZXJ0eUNvbW1hbmQu
aCIKIAogI2luY2x1ZGUgIkNTU1N0eWxlRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlICJFeGNlcHRp
b25Db2RlUGxhY2Vob2xkZXIuaCIKICNpbmNsdWRlICJTdHlsZVByb3BlcnRpZXMuaCIKICNpbmNs
dWRlICJTdHlsZWRFbGVtZW50LmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KQEAgLTU1
LDEyICs1NCwxMiBAQCB2b2lkIFJlbW92ZUNTU1Byb3BlcnR5Q29tbWFuZDo6ZG9BcHBseSgpCiAK
ICAgICAvLyBNdXRhdGUgdXNpbmcgdGhlIENTU09NIHdyYXBwZXIgc28gd2UgZ2V0IHRoZSBzYW1l
IGV2ZW50IGJlaGF2aW9yIGFzIGEgc2NyaXB0LgogICAgIC8vIFNldHRpbmcgdG8gbnVsbCBzdHJp
bmcgcmVtb3ZlcyB0aGUgcHJvcGVydHkuIFdlIGRvbid0IGhhdmUgaW50ZXJuYWwgdmVyc2lvbiBv
ZiByZW1vdmVQcm9wZXJ0eS4KLSAgICBtX2VsZW1lbnQtPmNzc29tU3R5bGUoKS0+c2V0UHJvcGVy
dHlJbnRlcm5hbChtX3Byb3BlcnR5LCBTdHJpbmcoKSwgZmFsc2UsIElHTk9SRV9FWENFUFRJT04p
OworICAgIG1fZWxlbWVudC0+Y3Nzb21TdHlsZSgpLT5zZXRQcm9wZXJ0eUludGVybmFsKG1fcHJv
cGVydHksIFN0cmluZygpLCBmYWxzZSk7CiB9CiAKIHZvaWQgUmVtb3ZlQ1NTUHJvcGVydHlDb21t
YW5kOjpkb1VuYXBwbHkoKQogewotICAgIG1fZWxlbWVudC0+Y3Nzb21TdHlsZSgpLT5zZXRQcm9w
ZXJ0eUludGVybmFsKG1fcHJvcGVydHksIG1fb2xkVmFsdWUsIG1faW1wb3J0YW50LCBJR05PUkVf
RVhDRVBUSU9OKTsKKyAgICBtX2VsZW1lbnQtPmNzc29tU3R5bGUoKS0+c2V0UHJvcGVydHlJbnRl
cm5hbChtX3Byb3BlcnR5LCBtX29sZFZhbHVlLCBtX2ltcG9ydGFudCk7CiB9CiAKICNpZm5kZWYg
TkRFQlVHCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rp
b25Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNv
bW1hbmQuY3BwCmluZGV4IGEyNzY2NGZjYjNkM2QxN2VhOTJmZTc5NGUyODZjYTZhOTA2MGQ1MmEu
LmNkNmY3MzM4YWRmNjUyNWFhMWRhMzNlNjhkZDZjMjg4ZGZiOTdhOTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCkBAIC01NjIs
OSArNTYyLDkgQEAgdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6cmVtb3ZlUmVkdW5kYW50
U3R5bGVzQW5kS2VlcFN0eWxlU3BhbklubGluZShJbnNlcnQKIAogICAgICAgICAgICAgLy8gTXV0
YXRlIHVzaW5nIHRoZSBDU1NPTSB3cmFwcGVyIHNvIHdlIGdldCB0aGUgc2FtZSBldmVudCBiZWhh
dmlvciBhcyBhIHNjcmlwdC4KICAgICAgICAgICAgIGlmIChpc0Jsb2NrKGVsZW1lbnQpKQotICAg
ICAgICAgICAgICAgIGVsZW1lbnQtPmNzc29tU3R5bGUoKS0+c2V0UHJvcGVydHlJbnRlcm5hbChD
U1NQcm9wZXJ0eURpc3BsYXksICJpbmxpbmUiLCBmYWxzZSwgSUdOT1JFX0VYQ0VQVElPTik7Cisg
ICAgICAgICAgICAgICAgZWxlbWVudC0+Y3Nzb21TdHlsZSgpLT5zZXRQcm9wZXJ0eUludGVybmFs
KENTU1Byb3BlcnR5RGlzcGxheSwgImlubGluZSIsIGZhbHNlKTsKICAgICAgICAgICAgIGlmIChl
bGVtZW50LT5yZW5kZXJlcigpICYmIGVsZW1lbnQtPnJlbmRlcmVyKCktPnN0eWxlKCkuaXNGbG9h
dGluZygpKQotICAgICAgICAgICAgICAgIGVsZW1lbnQtPmNzc29tU3R5bGUoKS0+c2V0UHJvcGVy
dHlJbnRlcm5hbChDU1NQcm9wZXJ0eUZsb2F0LCAibm9uZSIsIGZhbHNlLCBJR05PUkVfRVhDRVBU
SU9OKTsKKyAgICAgICAgICAgICAgICBlbGVtZW50LT5jc3NvbVN0eWxlKCktPnNldFByb3BlcnR5
SW50ZXJuYWwoQ1NTUHJvcGVydHlGbG9hdCwgIm5vbmUiLCBmYWxzZSk7CiAgICAgICAgIH0KICAg
ICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252
ZXJ0ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0K
aW5kZXggZTQyZmNlNmMwYjA1NjJhMDU4YzdhYWY2YmM1YWJmODZlYWRiODYyZC4uOTRmYzdlZDk5
NWNjNDBkODZmNGMwMjgyMzJmNDEzNDIwYmMwODhkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQpAQCAtNzg3LDIyICs3ODcsMjIgQEAgc3RhdGlj
IGlubGluZSBib29sIGZsb2F0VmFsdWVGcm9tUHJpbWl0aXZlVmFsdWUoQ1NTUHJpbWl0aXZlVmFs
dWUmIHByaW1pdGl2ZVZhbHUKICAgICAvLyBGSVhNRTogVXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpj
b21wdXRlVmFsdWUuCiAgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS5wcmltaXRpdmVUeXBlKCkp
IHsKICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFg6Ci0gICAgICAgIHJlc3VsdCA9
IHByaW1pdGl2ZVZhbHVlLmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7
CisgICAgICAgIHJlc3VsdCA9IHByaW1pdGl2ZVZhbHVlLmZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19QWCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGNhc2UgQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19QVDoKLSAgICAgICAgcmVzdWx0ID0gNCAqIHByaW1pdGl2ZVZhbHVlLmdl
dEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QVCkgLyAzOworICAgICAgICByZXN1
bHQgPSA0ICogcHJpbWl0aXZlVmFsdWUuZmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X1BUKSAvIDM7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19QQzoKLSAgICAgICAgcmVzdWx0ID0gMTYgKiBwcmltaXRpdmVWYWx1ZS5nZXRGbG9h
dFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEMpOworICAgICAgICByZXN1bHQgPSAxNiAq
IHByaW1pdGl2ZVZhbHVlLmZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QQyk7CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19DTToK
LSAgICAgICAgcmVzdWx0ID0gOTYgKiBwcmltaXRpdmVWYWx1ZS5nZXRGbG9hdFZhbHVlKENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfUEMpIC8gMi41NDsKKyAgICAgICAgcmVzdWx0ID0gOTYgKiBwcmlt
aXRpdmVWYWx1ZS5mbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEMpIC8gMi41NDsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX01N
OgotICAgICAgICByZXN1bHQgPSA5NiAqIHByaW1pdGl2ZVZhbHVlLmdldEZsb2F0VmFsdWUoQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19QQykgLyAyNS40OworICAgICAgICByZXN1bHQgPSA5NiAqIHBy
aW1pdGl2ZVZhbHVlLmZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QQykgLyAyNS40
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
SU46Ci0gICAgICAgIHJlc3VsdCA9IDk2ICogcHJpbWl0aXZlVmFsdWUuZ2V0RmxvYXRWYWx1ZShD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lOKTsKKyAgICAgICAgcmVzdWx0ID0gOTYgKiBwcmltaXRp
dmVWYWx1ZS5mbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSU4pOwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL21hcmt1cC5jcHAKaW5kZXggZTRjZTE1MGFhNjAwNzA4Njc1Y2FiNzZkNTY5OTlhOTA5
ZmUwZmNhNi4uMWViNzJmZDJiMzg5Yjg5N2VkMWRkMDgwNDljNmI5NzBjYTA2Y2U0ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvbWFya3VwLmNwcApAQCAtNDk5LDcgKzQ5OSw3IEBAIHN0YXRpYyBib29sIHBy
b3BlcnR5TWlzc2luZ09yRXF1YWxUb05vbmUoU3R5bGVQcm9wZXJ0aWVzKiBzdHlsZSwgQ1NTUHJv
cGVydHlJRCBwCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGlmICghaXM8Q1NTUHJpbWl0aXZl
VmFsdWU+KCp2YWx1ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gZG93bmNh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YWx1ZSkuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlTm9u
ZTsKKyAgICByZXR1cm4gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YWx1ZSkudmFsdWVJ
RCgpID09IENTU1ZhbHVlTm9uZTsKIH0KIAogc3RhdGljIGJvb2wgbmVlZEludGVyY2hhbmdlTmV3
bGluZUFmdGVyKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAppbmRleCA1YTQ0Yjg0YmI3MzRlNjEy
Mjc0NTk4YWY1OWFkZTk2NDQ4YzIzYTdhLi5kNDM2NjVjNGM2MDZhMDAwNjI4YWU4MDFlZmE0MmYx
YTdkYzk3NjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
U3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0
eWxlU2hlZXQuY3BwCkBAIC03MDgsOSArNzA4LDExIEBAIENTU1N0eWxlUnVsZSogSW5zcGVjdG9y
U3R5bGVTaGVldDo6YWRkUnVsZShjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBFeGNlcHRpb25Db2Rl
CiAgICAgU3RyaW5nQnVpbGRlciBzdHlsZVNoZWV0VGV4dDsKICAgICBzdHlsZVNoZWV0VGV4dC5h
cHBlbmQodGV4dCk7CiAKLSAgICBtX3BhZ2VTdHlsZVNoZWV0LT5hZGRSdWxlKHNlbGVjdG9yLCBl
bXB0eVN0cmluZygpLCBOdWxsb3B0LCBlYyk7Ci0gICAgaWYgKGVjKQorICAgIGF1dG8gYWRkUnVs
ZVJlc3VsdCA9IG1fcGFnZVN0eWxlU2hlZXQtPmFkZFJ1bGUoc2VsZWN0b3IsIGVtcHR5U3RyaW5n
KCksIE51bGxvcHQpOworICAgIGlmIChhZGRSdWxlUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7Cisg
ICAgICAgIGVjID0gYWRkUnVsZVJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkuY29kZSgpOwogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CiAgICAgQVNTRVJUKG1fcGFnZVN0eWxlU2hlZXQt
Pmxlbmd0aCgpKTsKICAgICB1bnNpZ25lZCBsYXN0UnVsZUluZGV4ID0gbV9wYWdlU3R5bGVTaGVl
dC0+bGVuZ3RoKCkgLSAxOwogICAgIENTU1J1bGUqIHJ1bGUgPSBtX3BhZ2VTdHlsZVNoZWV0LT5p
dGVtKGxhc3RSdWxlSW5kZXgpOwpAQCAtNzIwLDcgKzcyMiw3IEBAIENTU1N0eWxlUnVsZSogSW5z
cGVjdG9yU3R5bGVTaGVldDo6YWRkUnVsZShjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBFeGNlcHRp
b25Db2RlCiAgICAgaWYgKCFzdHlsZVJ1bGUpIHsKICAgICAgICAgLy8gV2hhdCB3ZSBqdXN0IGFk
ZGVkIGhhcyB0byBiZSBhIENTU1N0eWxlUnVsZSAtIHdlIGNhbm5vdCBoYW5kbGUgb3RoZXIgdHlw
ZXMgb2YgcnVsZXMgeWV0LgogICAgICAgICAvLyBJZiBpdCBpcyBub3QgYSBzdHlsZSBydWxlLCBw
cmV0ZW5kIHdlIG5ldmVyIHRvdWNoZWQgdGhlIHN0eWxlc2hlZXQuCi0gICAgICAgIG1fcGFnZVN0
eWxlU2hlZXQtPmRlbGV0ZVJ1bGUobGFzdFJ1bGVJbmRleCwgQVNTRVJUX05PX0VYQ0VQVElPTik7
CisgICAgICAgIG1fcGFnZVN0eWxlU2hlZXQtPmRlbGV0ZVJ1bGUobGFzdFJ1bGVJbmRleCk7CiAg
ICAgICAgIGVjID0gU1lOVEFYX0VSUjsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpA
QCAtNzU5LDExICs3NjEsMTMgQEAgYm9vbCBJbnNwZWN0b3JTdHlsZVNoZWV0OjpkZWxldGVSdWxl
KGNvbnN0IEluc3BlY3RvckNTU0lkJiBpZCwgRXhjZXB0aW9uQ29kZSYgZWMKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHN0eWxlU2hlZXQtPmRlbGV0ZVJ1bGUoaWQub3JkaW5h
bCgpLCBlYyk7CisgICAgYXV0byBkZWxldGVSdWxlUmVzdWx0ID0gc3R5bGVTaGVldC0+ZGVsZXRl
UnVsZShpZC5vcmRpbmFsKCkpOwogICAgIC8vIHxydWxlfCBNQVkgTk9UIGJlIGFkZHJlc3NlZCBh
ZnRlciB0aGlzIGxpbmUhCiAKLSAgICBpZiAoZWMpCisgICAgaWYgKGRlbGV0ZVJ1bGVSZXN1bHQu
aGFzRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgZWMgPSBkZWxldGVSdWxlUmVzdWx0LnJlbGVhc2VF
eGNlcHRpb24oKS5jb2RlKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAKICAgICBT
dHJpbmcgc2hlZXRUZXh0ID0gbV9wYXJzZWRTdHlsZVNoZWV0LT50ZXh0KCk7CiAgICAgc2hlZXRU
ZXh0LnJlbW92ZShzb3VyY2VEYXRhLT5ydWxlSGVhZGVyUmFuZ2Uuc3RhcnQsIHNvdXJjZURhdGEt
PnJ1bGVCb2R5UmFuZ2UuZW5kIC0gc291cmNlRGF0YS0+cnVsZUhlYWRlclJhbmdlLnN0YXJ0ICsg
MSk7CkBAIC0xMTUzLDExICsxMTU3LDE0IEBAIGJvb2wgSW5zcGVjdG9yU3R5bGVTaGVldDo6c2V0
U3R5bGVUZXh0KENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlLCBjb25zdCBTdHJpbmcmCiAgICAg
aWYgKGlkLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgc3R5bGUtPnNl
dENzc1RleHQodGV4dCwgZWMpOwotICAgIGlmICghZWMpCi0gICAgICAgIG1fcGFyc2VkU3R5bGVT
aGVldC0+c2V0VGV4dChwYXRjaGVkU3R5bGVTaGVldFRleHQpOworICAgIGF1dG8gc2V0Q3NzVGV4
dFJlc3VsdCA9IHN0eWxlLT5zZXRDc3NUZXh0KHRleHQpOworICAgIGlmIChzZXRDc3NUZXh0UmVz
dWx0Lmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgIGVjID0gc2V0Q3NzVGV4dFJlc3VsdC5yZWxl
YXNlRXhjZXB0aW9uKCkuY29kZSgpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogCi0g
ICAgcmV0dXJuICFlYzsKKyAgICBtX3BhcnNlZFN0eWxlU2hlZXQtPnNldFRleHQocGF0Y2hlZFN0
eWxlU2hlZXRUZXh0KTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBJbnNwZWN0b3JTdHls
ZVNoZWV0OjpzdHlsZVNoZWV0VGV4dFdpdGhDaGFuZ2VkU3R5bGUoQ1NTU3R5bGVEZWNsYXJhdGlv
biogc3R5bGUsIGNvbnN0IFN0cmluZyYgbmV3U3R5bGVUZXh0LCBTdHJpbmcqIHJlc3VsdCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGguY3BwIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0xlbmd0aC5jcHAKaW5kZXggYjk5Yjk2NmI2Zjg4Y2Y2MDA0ZjU5MTg5ODhjMjI4
NjI3YWMyZmVkZS4uN2I5ZjRiOTQ3YzUxZDdhZjhjNWQwYzU0MjhlNjdmYzNhODM2Yzk1MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0xlbmd0aC5jcHAKQEAgLTMyNyw3ICszMjcsNyBAQCBTVkdMZW5ndGggU1ZH
TGVuZ3RoOjpmcm9tQ1NTUHJpbWl0aXZlVmFsdWUoY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmIHZh
bHVlKQogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgU1ZHTGVuZ3RoIGxlbmd0aDsK
LSAgICBsZW5ndGgubmV3VmFsdWVTcGVjaWZpZWRVbml0cyhzdmdUeXBlLCB2YWx1ZS5nZXRGbG9h
dFZhbHVlKCksIGVjKTsKKyAgICBsZW5ndGgubmV3VmFsdWVTcGVjaWZpZWRVbml0cyhzdmdUeXBl
LCB2YWx1ZS5mbG9hdFZhbHVlKCksIGVjKTsKICAgICBpZiAoZWMpICAgIAogICAgICAgICByZXR1
cm4gU1ZHTGVuZ3RoKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9ET01D
U1NNZWRpYVJ1bGUubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9ET00vRE9NQ1NTTWVkaWFSdWxlLm1t
CmluZGV4IGIzOGQzYWMxOTI4YTU3MTg4ZDQ5OGU4N2ZhYmE4YzU5OTM2YzNmMmIuLjkwNTk2YTVh
ZWNjMzY3OGE2MWJiZjJlMzRlNzg1OWZmNWQ3ZGMyNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL0RPTS9ET01DU1NNZWRpYVJ1bGUubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvRE9N
L0RPTUNTU01lZGlhUnVsZS5tbQpAQCAtNTgsMTggKzU4LDEzIEBAIC0gKERPTUNTU1J1bGVMaXN0
ICopY3NzUnVsZXMKIC0gKHVuc2lnbmVkKWluc2VydFJ1bGU6KE5TU3RyaW5nICopcnVsZSBpbmRl
eDoodW5zaWduZWQpaW5kZXgKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUg
c3RhdGU7Ci0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgdW5zaWduZWQg
cmVzdWx0ID0gSU1QTC0+aW5zZXJ0UnVsZShydWxlLCBpbmRleCwgZWMpOwotICAgIHJhaXNlT25E
T01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gcmFpc2VPbkRPTUVy
cm9yKElNUEwtPmluc2VydFJ1bGUocnVsZSwgaW5kZXgpKTsKIH0KIAogLSAodm9pZClkZWxldGVS
dWxlOih1bnNpZ25lZClpbmRleAogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0
ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBJTVBMLT5k
ZWxldGVSdWxlKGluZGV4LCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKKyAgICByZXR1
cm4gcmFpc2VPbkRPTUVycm9yKElNUEwtPmRlbGV0ZVJ1bGUoaW5kZXgpKTsKIH0KIAogQGVuZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvRE9NL0RPTUNTU1ByaW1pdGl2ZVZhbHVlLm1t
IGIvU291cmNlL1dlYktpdC9tYWMvRE9NL0RPTUNTU1ByaW1pdGl2ZVZhbHVlLm1tCmluZGV4IDZi
M2M3ZWJiYzdlNWY0NGRiOGJhMzgyZGQzZjYyMDE3M2MzYWNiMDQuLjIyOTBmYmRmODNlM2JiYjMy
MjQ1YmQ1N2M1YTNiYWRmYmEwZTZkZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0RP
TS9ET01DU1NQcmltaXRpdmVWYWx1ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9ET00vRE9N
Q1NTUHJpbWl0aXZlVmFsdWUubW0KQEAgLTU0LDYyICs1NCw0MyBAQCAtICh1bnNpZ25lZCBzaG9y
dClwcmltaXRpdmVUeXBlCiAtICh2b2lkKXNldEZsb2F0VmFsdWU6KHVuc2lnbmVkIHNob3J0KXVu
aXRUeXBlIGZsb2F0VmFsdWU6KGZsb2F0KWZsb2F0VmFsdWUKIHsKICAgICBXZWJDb3JlOjpKU01h
aW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9
IDA7Ci0gICAgSU1QTC0+c2V0RmxvYXRWYWx1ZSh1bml0VHlwZSwgZmxvYXRWYWx1ZSwgZWMpOwot
ICAgIHJhaXNlT25ET01FcnJvcihlYyk7CisgICAgcmFpc2VPbkRPTUVycm9yKElNUEwtPnNldEZs
b2F0VmFsdWUodW5pdFR5cGUsIGZsb2F0VmFsdWUpKTsKIH0KIAogLSAoZmxvYXQpZ2V0RmxvYXRW
YWx1ZToodW5zaWduZWQgc2hvcnQpdW5pdFR5cGUKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJl
YWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0g
ICAgZmxvYXQgcmVzdWx0ID0gSU1QTC0+Z2V0RmxvYXRWYWx1ZSh1bml0VHlwZSwgZWMpOwotICAg
IHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gcmFp
c2VPbkRPTUVycm9yKElNUEwtPmdldEZsb2F0VmFsdWUodW5pdFR5cGUpKTsKIH0KIAogLSAodm9p
ZClzZXRTdHJpbmdWYWx1ZToodW5zaWduZWQgc2hvcnQpc3RyaW5nVHlwZSBzdHJpbmdWYWx1ZToo
TlNTdHJpbmcgKilzdHJpbmdWYWx1ZQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxT
dGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBJTVBM
LT5zZXRTdHJpbmdWYWx1ZShzdHJpbmdUeXBlLCBzdHJpbmdWYWx1ZSwgZWMpOwotICAgIHJhaXNl
T25ET01FcnJvcihlYyk7CisgICAgcmFpc2VPbkRPTUVycm9yKElNUEwtPnNldFN0cmluZ1ZhbHVl
KHN0cmluZ1R5cGUsIHN0cmluZ1ZhbHVlKSk7CiB9CiAKIC0gKE5TU3RyaW5nICopZ2V0U3RyaW5n
VmFsdWUKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAg
V2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgTlNTdHJpbmcgKnJlc3VsdCA9IElN
UEwtPmdldFN0cmluZ1ZhbHVlKGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJl
dHVybiByZXN1bHQ7CisgICAgcmV0dXJuIHJhaXNlT25ET01FcnJvcihJTVBMLT5nZXRTdHJpbmdW
YWx1ZSgpKTsKIH0KIAogLSAoRE9NQ291bnRlciAqKWdldENvdW50ZXJWYWx1ZQogewogICAgIFdl
YkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpFeGNlcHRp
b25Db2RlIGVjID0gMDsKLSAgICBET01Db3VudGVyICpyZXN1bHQgPSBraXQoV1RGOjpnZXRQdHIo
SU1QTC0+Z2V0Q291bnRlclZhbHVlKGVjKSkpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4ga2l0KHJhaXNlT25ET01FcnJvcihJTVBMLT5n
ZXRDb3VudGVyVmFsdWUoKSkpOwogfQogCiAtIChET01SZWN0ICopZ2V0UmVjdFZhbHVlCiB7CiAg
ICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OkV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIERPTVJlY3QgKnJlc3VsdCA9IGtpdChXVEY6OmdldFB0
cihJTVBMLT5nZXRSZWN0VmFsdWUoZWMpKSk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAg
ICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBraXQocmFpc2VPbkRPTUVycm9yKElNUEwtPmdl
dFJlY3RWYWx1ZSgpKSk7CiB9CiAKIC0gKERPTVJHQkNvbG9yICopZ2V0UkdCQ29sb3JWYWx1ZQog
ewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3Jl
OjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBET01SR0JDb2xvciAqcmVzdWx0ID0ga2l0KFdU
Rjo6Z2V0UHRyKElNUEwtPmdldFJHQkNvbG9yVmFsdWUoZWMpKSk7Ci0gICAgcmFpc2VPbkRPTUVy
cm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBraXQocmFpc2VPbkRPTUVy
cm9yKElNUEwtPmdldFJHQkNvbG9yVmFsdWUoKSkucHRyKCkpOwogfQogCiBAZW5kCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9ET00vRE9NQ1NTUnVsZS5tbSBiL1NvdXJjZS9XZWJLaXQv
bWFjL0RPTS9ET01DU1NSdWxlLm1tCmluZGV4IDMxYzZhOGZiMWZmZmEzYzQ4N2EzNzlmYzg0NGMy
YjgzZDc3ZTIwYWIuLjc2MGZiNWIxODg1ZThhMjcyODNjOWJiMmNhNzJiZmIyOTY3NmE1YjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9ET01DU1NSdWxlLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL0RPTS9ET01DU1NSdWxlLm1tCkBAIC02OCw5ICs2OCw3IEBAIC0gKE5TU3Ry
aW5nICopY3NzVGV4dAogLSAodm9pZClzZXRDc3NUZXh0OihOU1N0cmluZyAqKW5ld0Nzc1RleHQK
IHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29y
ZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgSU1QTC0+c2V0Q3NzVGV4dChuZXdDc3NUZXh0
LCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKKyAgICByYWlzZU9uRE9NRXJyb3IoSU1Q
TC0+c2V0Q3NzVGV4dChuZXdDc3NUZXh0KSk7CiB9CiAKIC0gKERPTUNTU1N0eWxlU2hlZXQgKilw
YXJlbnRTdHlsZVNoZWV0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9ET00vRE9NQ1NT
U3R5bGVEZWNsYXJhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9ET01DU1NTdHlsZURl
Y2xhcmF0aW9uLm1tCmluZGV4IDZiMWM3NzhlMTQ0MmE2MTUxM2Q1YmM0YjdlOTM4ZjBmNzMyMzQ5
NDkuLjM3YjNjNzMxNGQ3ZTM5MzQ2MzdlZmYyYmYyN2I2ZTQwNDhmYjQzMDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9ET01DU1NTdHlsZURlY2xhcmF0aW9uLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL0RPTS9ET01DU1NTdHlsZURlY2xhcmF0aW9uLm1tCkBAIC02NCw5ICs2
NCw3IEBAIC0gKE5TU3RyaW5nICopY3NzVGV4dAogLSAodm9pZClzZXRDc3NUZXh0OihOU1N0cmlu
ZyAqKW5ld0Nzc1RleHQKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3Rh
dGU7Ci0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgSU1QTC0+c2V0Q3Nz
VGV4dChuZXdDc3NUZXh0LCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKKyAgICByYWlz
ZU9uRE9NRXJyb3IoSU1QTC0+c2V0Q3NzVGV4dChuZXdDc3NUZXh0KSk7CiB9CiAKIC0gKHVuc2ln
bmVkKWxlbmd0aApAQCAtOTYsMTAgKzk0LDcgQEAgLSAoRE9NQ1NTVmFsdWUgKilnZXRQcm9wZXJ0
eUNTU1ZhbHVlOihOU1N0cmluZyAqKXByb3BlcnR5TmFtZQogLSAoTlNTdHJpbmcgKilyZW1vdmVQ
cm9wZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eU5hbWUKIHsKICAgICBXZWJDb3JlOjpKU01haW5U
aHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7
Ci0gICAgTlNTdHJpbmcgKnJlc3VsdCA9IElNUEwtPnJlbW92ZVByb3BlcnR5KHByb3BlcnR5TmFt
ZSwgZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICByZXR1cm4gcmFpc2VPbkRPTUVycm9yKElNUEwtPnJlbW92ZVByb3BlcnR5KHByb3BlcnR5TmFt
ZSkpOwogfQogCiAtIChOU1N0cmluZyAqKWdldFByb3BlcnR5UHJpb3JpdHk6KE5TU3RyaW5nICop
cHJvcGVydHlOYW1lCkBAIC0xMTEsOSArMTA2LDcgQEAgLSAoTlNTdHJpbmcgKilnZXRQcm9wZXJ0
eVByaW9yaXR5OihOU1N0cmluZyAqKXByb3BlcnR5TmFtZQogLSAodm9pZClzZXRQcm9wZXJ0eToo
TlNTdHJpbmcgKilwcm9wZXJ0eU5hbWUgdmFsdWU6KE5TU3RyaW5nICopdmFsdWUgcHJpb3JpdHk6
KE5TU3RyaW5nICopcHJpb3JpdHkKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3Rh
dGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgSU1QTC0+
c2V0UHJvcGVydHkocHJvcGVydHlOYW1lLCB2YWx1ZSwgcHJpb3JpdHksIGVjKTsKLSAgICByYWlz
ZU9uRE9NRXJyb3IoZWMpOworICAgIHJldHVybiByYWlzZU9uRE9NRXJyb3IoSU1QTC0+c2V0UHJv
cGVydHkocHJvcGVydHlOYW1lLCB2YWx1ZSwgcHJpb3JpdHkpKTsKIH0KIAogLSAoTlNTdHJpbmcg
KilpdGVtOih1bnNpZ25lZClpbmRleApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvRE9N
L0RPTUNTU1N0eWxlU2hlZXQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9ET00vRE9NQ1NTU3R5bGVT
aGVldC5tbQppbmRleCBhNzEwNDY5MjVlYTBkM2I2YWU3ODZmMDViMTc2MGUxMzI4MTI1Mzc1Li5k
MWExZjBmMWVmM2ZhZDg4OWYzODdmZTg2MTE3MzVjODJjZTYwODczIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9ET00vRE9NQ1NTU3R5bGVTaGVldC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9ET00vRE9NQ1NTU3R5bGVTaGVldC5tbQpAQCAtNjUsMzUgKzY1LDI1IEBAIC0gKERPTUNT
U1J1bGVMaXN0ICopcnVsZXMKIC0gKHVuc2lnbmVkKWluc2VydFJ1bGU6KE5TU3RyaW5nICopcnVs
ZSBpbmRleDoodW5zaWduZWQpaW5kZXgKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxs
U3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgdW5z
aWduZWQgcmVzdWx0ID0gSU1QTC0+aW5zZXJ0UnVsZShydWxlLCBpbmRleCwgZWMpOwotICAgIHJh
aXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gcmFpc2VP
bkRPTUVycm9yKElNUEwtPmluc2VydFJ1bGUocnVsZSwgaW5kZXgpKTsKIH0KIAogLSAodm9pZClk
ZWxldGVSdWxlOih1bnNpZ25lZClpbmRleAogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51
bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBJ
TVBMLT5kZWxldGVSdWxlKGluZGV4LCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKKyAg
ICByYWlzZU9uRE9NRXJyb3IoSU1QTC0+ZGVsZXRlUnVsZShpbmRleCkpOwogfQogCiAtIChpbnQp
YWRkUnVsZTooTlNTdHJpbmcgKilzZWxlY3RvciBzdHlsZTooTlNTdHJpbmcgKilzdHlsZSBpbmRl
eDoodW5zaWduZWQpaW5kZXgKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUg
c3RhdGU7Ci0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW50IHJlc3Vs
dCA9IElNUEwtPmFkZFJ1bGUoc2VsZWN0b3IsIHN0eWxlLCBpbmRleCwgZWMpOwotICAgIHJhaXNl
T25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gcmFpc2VPbkRP
TUVycm9yKElNUEwtPmFkZFJ1bGUoc2VsZWN0b3IsIHN0eWxlLCBpbmRleCkpOwogfQogCiAtICh2
b2lkKXJlbW92ZVJ1bGU6KHVuc2lnbmVkKWluZGV4CiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhy
ZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwot
ICAgIElNUEwtPnJlbW92ZVJ1bGUoaW5kZXgsIGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMp
OworICAgIHJhaXNlT25ET01FcnJvcihJTVBMLT5yZW1vdmVSdWxlKGluZGV4KSk7CiB9CiAKIEBl
bmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9ET01DU1NWYWx1ZS5tbSBiL1Nv
dXJjZS9XZWJLaXQvbWFjL0RPTS9ET01DU1NWYWx1ZS5tbQppbmRleCBlNWMwODkxOWZjNDcxY2Vj
NTFmYjY5ZDYxMDEzNThjYzczMjM2MjE5Li44ODFlZjI3ZDRmYThmNTNlMTNlYmY0MjgzYmU1OWM4
ZTNmOGM1ZmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9ET00vRE9NQ1NTVmFsdWUu
bW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvRE9NL0RPTUNTU1ZhbHVlLm1tCkBAIC01OSw5ICs1
OSw3IEBAIC0gKE5TU3RyaW5nICopY3NzVGV4dAogLSAodm9pZClzZXRDc3NUZXh0OihOU1N0cmlu
ZyAqKW5ld0Nzc1RleHQKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3Rh
dGU7Ci0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgSU1QTC0+c2V0Q3Nz
VGV4dChuZXdDc3NUZXh0LCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKKyAgICByYWlz
ZU9uRE9NRXJyb3IoSU1QTC0+c2V0Q3NzVGV4dChuZXdDc3NUZXh0KSk7CiB9CiAKIC0gKHVuc2ln
bmVkIHNob3J0KWNzc1ZhbHVlVHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvRE9N
L0RPTU1lZGlhTGlzdC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9ET01NZWRpYUxpc3QubW0K
aW5kZXggZDgxN2NiMmE5OGU1NDRiOTY3NzZhZTNmZmMyMzBiZTIyYmRjNDgyZC4uMDAzZGY2Zjdi
ODM4YTRiODFkMGE5MTY4YjM4Nzg5MTk3MzI3MWYyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvRE9NL0RPTU1lZGlhTGlzdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9ET00vRE9N
TWVkaWFMaXN0Lm1tCkBAIC02MSw5ICs2MSw3IEBAIC0gKE5TU3RyaW5nICopbWVkaWFUZXh0CiAt
ICh2b2lkKXNldE1lZGlhVGV4dDooTlNTdHJpbmcgKiluZXdNZWRpYVRleHQKIHsKICAgICBXZWJD
b3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6RXhjZXB0aW9u
Q29kZSBlYyA9IDA7Ci0gICAgSU1QTC0+c2V0TWVkaWFUZXh0KG5ld01lZGlhVGV4dCwgZWMpOwot
ICAgIHJhaXNlT25ET01FcnJvcihlYyk7CisgICAgcmFpc2VPbkRPTUVycm9yKElNUEwtPnNldE1l
ZGlhVGV4dChuZXdNZWRpYVRleHQpKTsKIH0KIAogLSAodW5zaWduZWQpbGVuZ3RoCkBAIC04MSwx
NyArNzksMTMgQEAgLSAoTlNTdHJpbmcgKilpdGVtOih1bnNpZ25lZClpbmRleAogLSAodm9pZClk
ZWxldGVNZWRpdW06KE5TU3RyaW5nICopb2xkTWVkaXVtCiB7CiAgICAgV2ViQ29yZTo6SlNNYWlu
VGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwotICAgIElNUEwtPmRlbGV0ZU1lZGl1bShvbGRNZWRpdW0sIGVjKTsKLSAgICByYWlzZU9uRE9N
RXJyb3IoZWMpOworICAgIHJhaXNlT25ET01FcnJvcihJTVBMLT5kZWxldGVNZWRpdW0ob2xkTWVk
aXVtKSk7CiB9CiAKIC0gKHZvaWQpYXBwZW5kTWVkaXVtOihOU1N0cmluZyAqKW5ld01lZGl1bQog
ewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3Jl
OjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBJTVBMLT5hcHBlbmRNZWRpdW0obmV3TWVkaXVt
LCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKKyAgICByYWlzZU9uRE9NRXJyb3IoSU1Q
TC0+YXBwZW5kTWVkaXVtKG5ld01lZGl1bSkpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9ET00vRXhjZXB0aW9uSGFuZGxlcnMuaCBiL1NvdXJjZS9XZWJLaXQvbWFj
L0RPTS9FeGNlcHRpb25IYW5kbGVycy5oCmluZGV4IDBjNzQ1MWZjMTljZWVhMGFmNjUyZjBiZjE3
ZTI2NDc3ZDM3ZWFjNjcuLjFiMGIxMTc0NTY3YjFlZTU5YTU2MjNhZDdiZTJjNDBiYWFjYTAyNWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9FeGNlcHRpb25IYW5kbGVycy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9FeGNlcHRpb25IYW5kbGVycy5oCkBAIC0yNSwxNyAr
MjUsMzEgQEAKIAogI3ByYWdtYSBvbmNlCiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLXVzaW5nIEV4
Y2VwdGlvbkNvZGUgPSBpbnQ7Ci19CisjaW5jbHVkZSA8V2ViQ29yZS9FeGNlcHRpb25Pci5oPgog
CiBOT19SRVRVUk4gdm9pZCByYWlzZURPTUV4Y2VwdGlvbihXZWJDb3JlOjpFeGNlcHRpb25Db2Rl
KTsKK05PX1JFVFVSTiB2b2lkIHJhaXNlRE9NRXhjZXB0aW9uKFdlYkNvcmU6OkV4Y2VwdGlvbiYm
KTsKIE5PX1JFVFVSTiB2b2lkIHJhaXNlVHlwZUVycm9yRXhjZXB0aW9uKCk7CiAKIHZvaWQgcmFp
c2VPbkRPTUVycm9yKFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUpOwordm9pZCByYWlzZU9uRE9NRXJy
b3IoV2ViQ29yZTo6RXhjZXB0aW9uT3I8dm9pZD4mJik7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBU
IHJhaXNlT25ET01FcnJvcihXZWJDb3JlOjpFeGNlcHRpb25PcjxUPiYmKTsKIAogaW5saW5lIHZv
aWQgcmFpc2VPbkRPTUVycm9yKFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgY29kZSkKIHsKICAgICBp
ZiAoY29kZSkKICAgICAgICAgcmFpc2VET01FeGNlcHRpb24oY29kZSk7CiB9CisKK2lubGluZSB2
b2lkIHJhaXNlT25ET01FcnJvcihXZWJDb3JlOjpFeGNlcHRpb25Pcjx2b2lkPiYmIHBvc3NpYmxl
RXhjZXB0aW9uKQoreworICAgIGlmIChwb3NzaWJsZUV4Y2VwdGlvbi5oYXNFeGNlcHRpb24oKSkK
KyAgICAgICAgcmFpc2VET01FeGNlcHRpb24ocG9zc2libGVFeGNlcHRpb24ucmVsZWFzZUV4Y2Vw
dGlvbigpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFQgcmFpc2VPbkRPTUVy
cm9yKFdlYkNvcmU6OkV4Y2VwdGlvbk9yPFQ+JiYgZXhjZXB0aW9uT3JSZXR1cm5WYWx1ZSkKK3sK
KyAgICBpZiAoZXhjZXB0aW9uT3JSZXR1cm5WYWx1ZS5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAg
cmFpc2VET01FeGNlcHRpb24oZXhjZXB0aW9uT3JSZXR1cm5WYWx1ZS5yZWxlYXNlRXhjZXB0aW9u
KCkpOworICAgIHJldHVybiBleGNlcHRpb25PclJldHVyblZhbHVlLnJlbGVhc2VSZXR1cm5WYWx1
ZSgpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvRE9NL0V4Y2VwdGlvbkhhbmRs
ZXJzLm1tIGIvU291cmNlL1dlYktpdC9tYWMvRE9NL0V4Y2VwdGlvbkhhbmRsZXJzLm1tCmluZGV4
IDI5N2ViZDkzNWY0NTkxNjA0ODU3ODk1YjJlNmY0M2RhNGUyYzlmYzUuLjllZGIxZDc0MWNjN2Ey
ZGM3ZjNmOTQxNzc2NjY2MGY5YzNlZTNhYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L0RPTS9FeGNlcHRpb25IYW5kbGVycy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9ET00vRXhj
ZXB0aW9uSGFuZGxlcnMubW0KQEAgLTc2LDMgKzc2LDggQEAgdm9pZCByYWlzZVR5cGVFcnJvckV4
Y2VwdGlvbigpCiB7CiAgICAgcmFpc2VET01FeGNlcHRpb24oV2ViQ29yZTo6VHlwZUVycm9yKTsK
IH0KKwordm9pZCByYWlzZURPTUV4Y2VwdGlvbihXZWJDb3JlOjpFeGNlcHRpb24mJiBleGNlcHRp
b24pCit7CisgICAgcmFpc2VET01FeGNlcHRpb24oZXhjZXB0aW9uLmNvZGUoKSk7Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9ET01DU1NDbGFzc2VzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvd2luL0RPTUNTU0NsYXNzZXMuY3BwCmluZGV4IGQ4YTUwMzkxMTUzYjBjYzhiZGYyOWZjMGM5
ZmQ1YWJkZTExMGE0ODYuLmZlYmI5MmVkODEzZDE4NWY1OTNiMTc5NGFjOTA0MmJlNTYxYjg1ZWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0RPTUNTU0NsYXNzZXMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvd2luL0RPTUNTU0NsYXNzZXMuY3BwCkBAIC05Miw5ICs5Miw3IEBAIEhSRVNV
TFQgRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Y3NzVGV4dChfX2RlcmVmX29wdF9vdXQgQlNUUiog
cmVzdWx0KQogSFJFU1VMVCBET01DU1NTdHlsZURlY2xhcmF0aW9uOjpzZXRDc3NUZXh0KF9Jbl8g
QlNUUiBjc3NUZXh0KQogewogICAgIFdURjo6U3RyaW5nIGNzc1RleHRTdHJpbmcoY3NzVGV4dCk7
Ci0gICAgLy8gRklYTUU6IDxyZGFyOi8vNTE0ODA0NT4gcmV0dXJuIERPTSBleGNlcHRpb24gaW5m
bwotICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWM7Ci0gICAgbV9zdHlsZS0+c2V0Q3NzVGV4
dChjc3NUZXh0U3RyaW5nLCBlYyk7CisgICAgbV9zdHlsZS0+c2V0Q3NzVGV4dChjc3NUZXh0U3Ry
aW5nKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtMTQ0LDkgKzE0Miw3IEBAIEhSRVNVTFQg
RE9NQ1NTU3R5bGVEZWNsYXJhdGlvbjo6c2V0UHJvcGVydHkoX0luXyBCU1RSIHByb3BlcnR5TmFt
ZSwgX0luXyBCU1RSIHZhCiAgICAgV1RGOjpTdHJpbmcgcHJvcGVydHlOYW1lU3RyaW5nKHByb3Bl
cnR5TmFtZSk7CiAgICAgV1RGOjpTdHJpbmcgdmFsdWVTdHJpbmcodmFsdWUpOwogICAgIFdURjo6
U3RyaW5nIHByaW9yaXR5U3RyaW5nKHByaW9yaXR5KTsKLSAgICAvLyBGSVhNRTogPHJkYXI6Ly81
MTQ4MDQ1PiByZXR1cm4gRE9NIGV4Y2VwdGlvbiBpbmZvCi0gICAgV2ViQ29yZTo6RXhjZXB0aW9u
Q29kZSBjb2RlOwotICAgIG1fc3R5bGUtPnNldFByb3BlcnR5KHByb3BlcnR5TmFtZVN0cmluZywg
dmFsdWVTdHJpbmcsIHByaW9yaXR5U3RyaW5nLCBjb2RlKTsKKyAgICBtX3N0eWxlLT5zZXRQcm9w
ZXJ0eShwcm9wZXJ0eU5hbWVTdHJpbmcsIHZhbHVlU3RyaW5nLCBwcmlvcml0eVN0cmluZyk7CiAg
ICAgcmV0dXJuIFNfT0s7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291749</attachid>
            <date>2016-10-16 10:04:01 -0700</date>
            <delta_ts>2016-10-16 10:17:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163494-20161016100030.patch</filename>
            <type>text/plain</type>
            <size>351494</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3MzkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjY0MzYzNTYxNTA3NDFj
NDdmYTAwMTliOThkZDlkYTI2MTI5NTJjYy4uOTNhNDc3ODdhMjUyNWRkNTlkZWQ2Y2RjNDYxYTVj
NGM0ZjQ0NjU3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxNyBAQAorMjAxNi0xMC0xNiAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBDU1MgY2xhc3NlcyBm
cm9tIEV4Y2VwdGlvbkNvZGUgdG8gRXhjZXB0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM0OTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmVkIHRoZSAiZ2V0IiBwcmVmaXggZnJvbSB0aGUg
bmFtZXMgb2YgbWFueSBDU1NQcmltaXRpdmVWYWx1ZQorICAgICAgICBmdW5jdGlvbnMgdG8gbWF0
Y2ggV2ViS2l0IGNvZGluZyBzdHlsZSBhbmQgdG8gZGlzYW1iaWd1YXRlIHRoZW0KKyAgICAgICAg
ZnJvbSB0aGUgcHVibGljIENTUyBET00gZnVuY3Rpb25zIHRoYXQgcmFpc2UgZXhjZXB0aW9ucy4K
KworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpwcm9wZXJ0eU5hbWVQcmVmaXgpOiBVc2UgZW51bSBjbGFzcy4K
KyAgICAgICAgKFdlYkNvcmU6OnBhcnNlSmF2YVNjcmlwdENTU1Byb3BlcnR5TmFtZSk6IFR3ZWFr
IHN0eWxlIGEgYml0LgorICAgICAgICAoV2ViQ29yZTo6c3R5bGVQcm9wZXJ0eUdldHRlcik6IFJl
ZmFjdG9yIHRvIHNpbXBsaWZ5IHN0cnVjdHVyZS4KKyAgICAgICAgKFdlYkNvcmU6OnN0eWxlUHJv
cGVydHlHZXR0ZXJQaXhlbE9yUG9zUHJlZml4KTogRGl0dG8uIEFsc28gdXNlIGZsb2F0VmFsdWUu
CisgICAgICAgIChXZWJDb3JlOjpKU0NTU1N0eWxlRGVjbGFyYXRpb246OnB1dERlbGVnYXRlKTog
VXNlIGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZSwKKyAgICAgICAgYW5kIHVzZSBwcm9wYWdhdGVFeGNl
cHRpb24gdG8gaGFuZGxlIEV4Y3BldGlvbk9yLgorICAgICAgICAoV2ViQ29yZTo6SlNDU1NTdHls
ZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKTogVHdlYWsgc3R5bGUgYSBiaXQuCisg
ICAgICAgIChXZWJDb3JlOjpKU0NTU1N0eWxlRGVjbGFyYXRpb246OmdldE93blByb3BlcnR5TmFt
ZXMpOiBVc2UgYSBsYW1iZGEgdG8KKyAgICAgICAgaW5pdGlhbGl6ZSBhIGdsb2JhbCBoZXJlLgor
CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmg6IEFkZGVkIHRvSlNTdHJpbmcg
dG8gc3VwcG9ydCBiaW5kaW5ncyBmb3IKKyAgICAgICAgZnVuY3Rpb25zIHJldHVybmluZyBFeGNl
cHRpb25PcjxTdHJpbmc+LgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9nb2JqZWN0LWdl
bmVyYXRlLWhlYWRlcnMucGw6IERlbGV0ZWQuCisKKyAgICAgICAgKiBjc3MvQmFzaWNTaGFwZUZ1
bmN0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VG9MZW5ndGhTaXplKTogVXNl
IHBhaXJWYWx1ZS4KKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRUb0NlbnRlckNvb3JkaW5hdGUp
OiBVc2UgdmFsdWVJRCBhbmQgcGFpclZhbHVlLgorICAgICAgICAoV2ViQ29yZTo6Y3NzVmFsdWVU
b0Jhc2ljU2hhcGVSYWRpdXMpOiBEaXR0by4KKyAgICAgICAgKiBjc3MvQ1NTQmFzaWNTaGFwZXMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXplUG9zaXRpb25PZmZzZXQpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkU2VyaWFsaXphYmxlUG9zaXRpb25PZmZzZXQpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0Jhc2ljU2hhcGVDaXJjbGU6OmNzc1RleHQpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0Jhc2ljU2hhcGVFbGxpcHNlOjpjc3NUZXh0KTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjp1cGRhdGVDb3JuZXJSYWRpdXNXaWR0aEFuZEhlaWdodCk6
IERpdHRvLgorICAgICAgICAqIGNzcy9DU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuaDogVXNlIHF1
YWRWYWx1ZS4KKyAgICAgICAgKiBjc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpkZXRlcm1pbmVDYXRlZ29yeSk6IFVzZSBmbG9hdFZhbHVlIGFuZCBkb3VibGVW
YWx1ZS4KKworICAgICAgICAqIGNzcy9DU1NDaGFyc2V0UnVsZS5oOiBVc2UgRXhjZXB0aW9uT3Iu
IEFsc28gbWFkZSBtb3JlIHRoaW5ncyBwcml2YXRlLgorICAgICAgICAqIGNzcy9DU1NDaGFyc2V0
UnVsZS5pZGw6IFVzZSBub24tbGVnYWN5IGV4Y2VwdGlvbnMuCisKKyAgICAgICAgKiBjc3MvQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NvbXB1
dGVkU3R5bGVEZWNsYXJhdGlvbjo6c2V0Q3NzVGV4dCk6IFVzZSBFeGNlcHRpb25Pci4KKyAgICAg
ICAgKFdlYkNvcmU6OkNvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5TWF0Y2hlcyk6IFVz
ZSB2YWx1ZUlELgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
OjpzZXRQcm9wZXJ0eSk6IFVzZSBFeGNlcHRpb25Pci4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6cmVtb3ZlUHJvcGVydHkpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6c2V0UHJvcGVydHlJbnRlcm5h
bCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Z2V0
QmFja2dyb3VuZFNob3J0aGFuZFZhbHVlKTogUmV0dXJuCisgICAgICAgIGEgUmVmIGluc3RlYWQg
b2YgYSBSZWZQdHIuCisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5o
OiBVcGRhdGVkIGZvciBhYm92ZSBjaGFuZ2VzLgorCisgICAgICAgICogY3NzL0NTU0Nyb3NzZmFk
ZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Nyb3NzZmFkZVZhbHVlOjpmaXhlZFNp
emUpOiBVc2UgZmxvYXRWYWx1ZS4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0Nyb3NzZmFkZVZhbHVl
OjppbWFnZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ3Jvc3NmYWRlVmFsdWU6OmJs
ZW5kKTogVXNlIGRvdWJsZVZhbHVlLgorCisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlOjpjYWxjdWxhdGVTdHlsZU1hc2spOiBVc2Ug
dmFsdWVJRC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlOjpjYWxjdWxhdGVXZWlnaHRN
YXNrKTogRGl0dG8uCisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNTU0ZvbnRGYWNlU2V0OjpmYW1pbHlOYW1lRnJvbVByaW1pdGl2ZSk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTZXQ6Om1hdGNoaW5nRmFjZXMpOiBVc2Ug
RXhjZXB0b2luT3IuCisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNldDo6Y2hlY2spOiBE
aXR0by4KKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTZXQuaDogVXBkYXRlZCBmb3IgYWJvdmUg
Y2hhbmdlcy4KKworICAgICAgICAqIGNzcy9DU1NHcmFkaWVudFZhbHVlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNvbXBhcmVTdG9wcyk6IFVzZSBkb3VibGVWYWx1ZS4KKyAgICAgICAgKFdlYkNv
cmU6OkNTU0dyYWRpZW50VmFsdWU6OmFkZFN0b3BzKTogVXNlIGZsb2F0VmFsdWUuCisgICAgICAg
IChXZWJDb3JlOjpwb3NpdGlvbkZyb21WYWx1ZSk6IFVzZSBmbG9hdFZhbHVlIGFuZCB2YWx1ZElE
LgorICAgICAgICAoV2ViQ29yZTo6Q1NTTGluZWFyR3JhZGllbnRWYWx1ZTo6Y3VzdG9tQ1NTVGV4
dCk6IFVzZSBkb3VibGVWYWx1ZSBhbmQgdmFsdWVJRC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0xp
bmVhckdyYWRpZW50VmFsdWU6OmNyZWF0ZUdyYWRpZW50KTogVXNlIGZsb2F0VmFsdWUgYW5kIHZh
bHVlSUQuCisgICAgICAgIChXZWJDb3JlOjpDU1NSYWRpYWxHcmFkaWVudFZhbHVlOjpjdXN0b21D
U1NUZXh0KTogVXNlIGRvdWJsZVZhbHVlIGFuZCB2YWx1ZUlELgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6cmVzb2x2ZVJhZGl1cyk6IFVzZSBmbG9hdFZhbHVlLgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6Y3JlYXRlR3JhZGllbnQp
OiBVc2UgdmFsdWVJRC4KKworICAgICAgICAqIGNzcy9DU1NHcm91cGluZ1J1bGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTR3JvdXBpbmdSdWxlOjppbnNlcnRSdWxlKTogVXNlIEV4Y2VwdGlv
bk9yLgorICAgICAgICAoV2ViQ29yZTo6Q1NTR3JvdXBpbmdSdWxlOjpkZWxldGVSdWxlKTogRGl0
dG8uCisgICAgICAgICogY3NzL0NTU0dyb3VwaW5nUnVsZS5oOiBVcGRhdGVkIGZvciBhYm92ZSBj
aGFuZ2VzLgorCisgICAgICAgICogY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6c3ViaW1hZ2VJc1BlbmRpbmcp
OiBVc2UgdmFsdWVJRC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0ltYWdlR2VuZXJhdG9yVmFsdWU6
OmNhY2hlZEltYWdlRm9yQ1NTVmFsdWUpOiBEaXR0by4KKworICAgICAgICAqIGNzcy9DU1NJbWFn
ZVNldFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ltYWdlU2V0VmFsdWU6OmZpbGxJ
bWFnZVNldCk6IFVzZSBmbG9hdFZhbHVlLgorCisgICAgICAgICogY3NzL0NTU01lZGlhUnVsZS5p
ZGw6IFVzZSBub24tbGVnYWN5IGV4Y2VwdGlvbnMuCisKKyAgICAgICAgKiBjc3MvQ1NTUHJpbWl0
aXZlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1
dGVEZWdyZWVzKTogVXNlIGRvdWJsZVZhbHVlLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0
aXZlVmFsdWU6OnNldEZsb2F0VmFsdWUpOiBVc2UgRXhjZXB0aW9uT3IuCisgICAgICAgIChXZWJD
b3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0RmxvYXRWYWx1ZSk6IFJlcGxhY2VkIGdldERvdWJs
ZVZhbHVlIHdpdGggdGhpcywKKyAgICAgICAgc2luY2UgZ2V0RG91YmxlVmFsdWUgaXMgdW51c2Vk
LCBtb3ZpbmcgdGhlIGNhbGwgdG8gY2xhbXBUbyBpbnRvIHRoaXMgZnVuY3Rpb24uCisgICAgICAg
IEFsc28gY2hhbmdlZCB0aGlzIHRvIHVzZSBFeGNlcHRpb25Pci4KKyAgICAgICAgKFdlYkNvcmU6
OkNTU1ByaW1pdGl2ZVZhbHVlOjpkb3VibGVWYWx1ZSk6IFJlbmFtZWQgZnJvbSBnZXREb3VibGVW
YWx1ZS4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpkb3VibGVWYWx1ZUlu
dGVybmFsKTogVXNlIE9wdGlvbmFsIGluc3RlYWQgb2YgYSBib29sCisgICAgICAgIGFuZCBhbiBv
dXQgYXJndW1lbnQgdG8gcmV0dXJuIHRoZSB2YWx1ZSBhbmQgY2hlY2sgZm9yIHR5cGUgZmFpbHVy
ZS4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpzZXRTdHJpbmdWYWx1ZSk6
IFVzZSBFeGNlcHRpb25Pci4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpn
ZXRTdHJpbmdWYWx1ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFs
dWU6OnN0cmluZ1ZhbHVlKTogUmVuYW1lZCBmcm9tIGdldFN0cmluZ1ZhbHVlLgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OmdldENvdW50ZXJWYWx1ZSk6IFVzZSBFeGNlcHRp
b25Pci4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpnZXRSZWN0VmFsdWUp
OiBVc2UgRXhjZXB0aW9uT3IuCisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6
Z2V0UXVhZFZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZh
bHVlOjpnZXRMZW5ndGhSZXBlYXRWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpD
U1NQcmltaXRpdmVWYWx1ZTo6Z2V0UkdCQ29sb3JWYWx1ZSk6IFVzZSBFeGNlcHRpb25Pci4KKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpnZXRQYWlyVmFsdWUpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OmZvcm1hdE51bWJlckZvckN1
c3RvbUNTU1RleHQpOiBVc2UgbmV3IG5hbWVzIGZvciBmdW5jdGlvbnMuCisgICAgICAgICogY3Nz
L0NTU1ByaW1pdGl2ZVZhbHVlLmg6IFJlb3JnYW5pemVkIHRoZSBjbGFzcywgbW92ZWQgbGFyZ2Ug
aW5saW5lIGZ1bmN0aW9uIGJvZGllcworICAgICAgICBvdXQgb2YgdGhlIGNsYXNzIGRlZmluaXRp
b24uIFVwZGF0ZWQgZm9yIHRoZSBhYm92ZSBjaGFuZ2VzLgorICAgICAgICAqIGNzcy9DU1NQcmlt
aXRpdmVWYWx1ZS5pZGw6IFVzZSBub24tbGVnYWN5IGV4Y2VwdGlvbnMuCisKKyAgICAgICAgKiBj
c3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oOiBVc2UgdmFsdWUgaW5zdGVhZCBvZiBnZXRW
YWx1ZSwgZXRjLgorCisgICAgICAgICogY3NzL0NTU1J1bGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUnVsZTo6c2V0Q3NzVGV4dCk6IFVzZSBFeGNlcHRpb25Pci4KKyAgICAgICAgKiBjc3Mv
Q1NTUnVsZS5oOiBVcGRhdGVkIGZvciBhYm92ZSBjaGFuZ2UuCisgICAgICAgICogY3NzL0NTU1J1
bGUuaWRsOiBVc2Ugbm9uLWxlZ2FjeSBleGNlcHRpb25zLgorCisgICAgICAgICogY3NzL0NTU1N0
eWxlRGVjbGFyYXRpb24uaDogVXNlIEV4Y2VwdGlvbk9yLgorICAgICAgICAqIGNzcy9DU1NTdHls
ZURlY2xhcmF0aW9uLmlkbDogVXNlIG5vbi1sZWdhY3kgZXhjZXB0aW9ucy4KKworICAgICAgICAq
IGNzcy9DU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2hlZXQ6
OmRlcHJlY2F0ZWRJbnNlcnRSdWxlKTogVXNlIEV4Y2VwdGlvbk9yLgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTU3R5bGVTaGVldDo6aW5zZXJ0UnVsZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
Q1NTU3R5bGVTaGVldDo6ZGVsZXRlUnVsZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q1NT
U3R5bGVTaGVldDo6YWRkUnVsZSk6IERpdHRvLgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNoZWV0
Lmg6IFVwZGF0ZWQgZm9yIHRoZSBhYm92ZSBjaGFuZ2VzLgorICAgICAgICAqIGNzcy9DU1NTdHls
ZVNoZWV0LmlkbDogVXNlIG5vbi1sZWdhY3kgZXhjZXB0aW9ucy4KKworICAgICAgICAqIGNzcy9D
U1NTdXBwb3J0c1J1bGUuaWRsOiBVc2Ugbm9uLWxlZ2FjeSBleGNlcHRpb25zLgorCisgICAgICAg
ICogY3NzL0NTU1RvU3R5bGVNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9TdHlsZU1h
cDo6bWFwRmlsbEF0dGFjaG1lbnQpOiBVc2UgdmFsdWVJRCBpbnN0ZWFkIG9mIGdldFZhbHVlSUQs
IGV0Yy4KKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRUb0xlbmd0aFNpemUpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1RvU3R5bGVNYXA6Om1hcEZpbGxTaXplKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpDU1NUb1N0eWxlTWFwOjptYXBGaWxsWFBvc2l0aW9uKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxlTWFwOjptYXBGaWxsWVBvc2l0aW9uKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxlTWFwOjptYXBGaWxsTWFza1NvdXJjZVR5cGUp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1RvU3R5bGVNYXA6Om1hcEFuaW1hdGlvbkRp
cmVjdGlvbik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9TdHlsZU1hcDo6bWFwQW5p
bWF0aW9uRmlsbE1vZGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1RvU3R5bGVNYXA6
Om1hcEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpD
U1NUb1N0eWxlTWFwOjptYXBBbmltYXRpb25OYW1lKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpDU1NUb1N0eWxlTWFwOjptYXBBbmltYXRpb25QbGF5U3RhdGUpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OkNTU1RvU3R5bGVNYXA6Om1hcEFuaW1hdGlvblByb3BlcnR5KTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxlTWFwOjptYXBBbmltYXRpb25UaW1pbmdGdW5jdGlv
bik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9u
VHJpZ2dlcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9TdHlsZU1hcDo6bWFwTmlu
ZVBpZWNlSW1hZ2VTbGljZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9TdHlsZU1h
cDo6bWFwTmluZVBpZWNlSW1hZ2VRdWFkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDU1NU
b1N0eWxlTWFwOjptYXBOaW5lUGllY2VJbWFnZVJlcGVhdCk6IERpdHRvLgorCisgICAgICAgICog
Y3NzL0NTU1ZhbHVlLmg6IFVzZSBFeGNlcHRpb25Pci4KKyAgICAgICAgKiBjc3MvQ1NTVmFsdWUu
aWRsOiBVc2Ugbm9uLWxlZ2FjeSBleGNlcHRpb25zLgorCisgICAgICAgICogY3NzL0NvdW50ZXIu
aDogVXNlIHN0cmluZ1ZhbHVlIGluc3RlYWQgb2YgZ2V0U3RyaW5nVmFsdWUsIGV0Yy4KKworICAg
ICAgICAqIGNzcy9Gb250RmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZTo6Y3Jl
YXRlKTogVXNlIEV4Y2VwdGlvbk9yLgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhY2U6OnNldEZh
bWlseSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhY2U6OnNldFN0eWxlKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZTo6c2V0V2VpZ2h0KTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpGb250RmFjZTo6c2V0U3RyZXRjaCk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udEZhY2U6OnNldFVuaWNvZGVSYW5nZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6Rm9udEZhY2U6OnNldFZhcmlhbnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRG
YWNlOjpzZXRGZWF0dXJlU2V0dGluZ3MpOiBEaXR0by4KKyAgICAgICAgKiBjc3MvRm9udEZhY2Uu
aDogVXBkYXRlZCBmb3IgYWJvdmUgY2hhbmdlcy4KKyAgICAgICAgKiBjc3MvRm9udEZhY2UuaWRs
OiBVc2Ugbm9uLWxlZ2FjeSBleGNlcHRpb25zLgorCisgICAgICAgICogY3NzL0ZvbnRGYWNlU2V0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlU2V0Ojpsb2FkKTogVXNlIEV4Y2VwdGlv
bk9yLgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhY2VTZXQ6OmNoZWNrKTogRGl0dG8uCisgICAg
ICAgICogY3NzL0ZvbnRGYWNlU2V0Lmg6IFVwZGF0ZWQgZm9yIGFib3ZlIGNoYW5nZXMuCisgICAg
ICAgICogY3NzL0ZvbnRGYWNlU2V0LmlkbDogVXNlIG5vbi1sZWdhY3kgZXhjZXB0aW9ucy4KKwor
ICAgICAgICAqIGNzcy9Gb250VmFyaWFudEJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
ZXh0cmFjdEZvbnRWYXJpYW50TGlnYXR1cmVzKTogVXNlIHZhbHVlSUQgaW5zdGVhZCBvZiBnZXRW
YWx1ZUlELCBldGMuCisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0Rm9udFZhcmlhbnROdW1lcmlj
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0Rm9udFZhcmlhbnRFYXN0QXNpYW4p
OiBEaXR0by4KKworICAgICAgICAqIGNzcy9NZWRpYUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFMaXN0OjpzZXRNZWRpYVRleHQpOiBVc2UgRXhjZXB0aW9uT3IuCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUxpc3Q6OmRlbGV0ZU1lZGl1bSk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFMaXN0OjphcHBlbmRNZWRpdW0pOiBEaXR0by4KKyAgICAgICAgKiBjc3MvTWVkaWFM
aXN0Lmg6IFVwZGF0ZWQgZm9yIGFib3ZlIGNoYW5nZXMuCisgICAgICAgICogY3NzL01lZGlhTGlz
dC5pZGw6IFVzZSBub24tbGVnYWN5IGV4Y2VwdGlvbnMuCisKKyAgICAgICAgKiBjc3MvTWVkaWFR
dWVyeUV2YWx1YXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkb3VibGVWYWx1ZSk6IFVzZSB2
YWx1ZUlEIGluc3RlYWQgb2YgZ2V0VmFsdWVJRCwgZXRjLgorICAgICAgICAoV2ViQ29yZTo6Y29s
b3JHYW11dEV2YWx1YXRlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjppbnZlcnRlZENvbG9y
c0V2YWx1YXRlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpvcmllbnRhdGlvbkV2YWx1YXRl
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpldmFsdWF0ZVJlc29sdXRpb24pOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVMZW5ndGgpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OnZpZXdNb2RlRXZhbHVhdGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmhvdmVyRXZh
bHVhdGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnBvaW50ZXJFdmFsdWF0ZSk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6cHJlZmVyc1JlZHVjZWRNb3Rpb25FdmFsdWF0ZSk6IERpdHRv
LgorCisgICAgICAgICogY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OnNldENzc1Rl
eHQpOiBVc2UgRXhjZXB0aW9uT3IuCisgICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eVNldENTU1N0
eWxlRGVjbGFyYXRpb246OnNldFByb3BlcnR5KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpQ
cm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OnJlbW92ZVByb3BlcnR5KTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OmdldFByb3Bl
cnR5Q1NTVmFsdWVJbnRlcm5hbCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UHJvcGVydHlT
ZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpzZXRQcm9wZXJ0eUludGVybmFsKTogRGl0dG8uCisgICAg
ICAgICogY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5oOiBVcGRhdGVkIGZvciBh
Ym92ZSBjaGFuZ2VzLgorICAgICAgICBBbHNvIG1hcmtlZCBhIGNvdXBsZSBhZGRpdGlvbmFsIGZ1
bmN0aW9ucyBwcml2YXRlLgorCisgICAgICAgICogY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5o
OiBVc2UgZG91YmxlVmFsdWUgaW5zdGVhZCBvZiBnZXREb3VibGVWYWx1ZSwgZXRjLgorICAgICAg
ICAqIGNzcy9TdHlsZUJ1aWxkZXJDdXN0b20uaDogRGl0dG8uCisgICAgICAgICogY3NzL1N0eWxl
UHJvcGVydGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVByb3BlcnRpZXM6OmdldExh
eWVyZWRTaG9ydGhhbmRWYWx1ZSk6IERpdHRvLgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6Ok1hdGNoUmVzdWx0OjphZGRN
YXRjaGVkUHJvcGVydGllcyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZl
cjo6Y29sb3JGcm9tUHJpbWl0aXZlVmFsdWVJc0Rlcml2ZWRGcm9tRWxlbWVudCk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6Y29sb3JGcm9tUHJpbWl0aXZlVmFsdWUp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmNyZWF0ZUZpbHRlck9w
ZXJhdGlvbnMpOiBEaXR0by4KKyAgICAgICAgKiBjc3MvVHJhbnNmb3JtRnVuY3Rpb25zLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnRyYW5zZm9ybXNGb3JWYWx1ZSk6IERpdHRvLgorICAgICAgICAq
IGNzcy9WaWV3cG9ydFN0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Vmlld3Bv
cnRTdHlsZVJlc29sdmVyOjpnZXRWaWV3cG9ydEFyZ3VtZW50VmFsdWUpOiBEaXR0by4KKworICAg
ICAgICAqIGNzcy9XZWJLaXRDU1NNYXRyaXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0
Q1NTTWF0cml4OjpXZWJLaXRDU1NNYXRyaXgpOiBUd2Vha2VkIGNvbnN0cnVjdG9ycyBhIGJpdCwK
KyAgICAgICAgZ2V0dGluZyByaWQgb2YgdGhlIG9uZSB0aGF0IHVzZXMgYW4gRXhjZXB0aW9uQ29k
ZS4KKyAgICAgICAgKFdlYkNvcmU6OldlYktpdENTU01hdHJpeDo6Y3JlYXRlKTogTW92ZWQgaW4g
aGVyZSwgYW5kIHVzZSBFeGNlcHRpb25Pci4KKyAgICAgICAgKFdlYkNvcmU6OldlYktpdENTU01h
dHJpeDo6c2V0TWF0cml4VmFsdWUpOiBVc2UgRXhjZXB0aW9uT3IuCisgICAgICAgIChXZWJDb3Jl
OjpXZWJLaXRDU1NNYXRyaXg6Om11bHRpcGx5KTogVHdlYWsgY29kaW5nIHN0eWxlIGEgYml0Lgor
ICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTTWF0cml4OjppbnZlcnNlKTogVXNlIEV4Y2VwdGlv
bk9yLgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTTWF0cml4Ojp0cmFuc2xhdGUpOiBSZXR1
cm4gYSBSZWYgaW5zdGVhZCBvZiBSZWZQdHIuCisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NN
YXRyaXg6OnNjYWxlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NNYXRyaXg6
OnJvdGF0ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTTWF0cml4Ojpyb3Rh
dGVBeGlzQW5nbGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OldlYktpdENTU01hdHJpeDo6
c2tld1gpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OldlYktpdENTU01hdHJpeDo6c2tld1kp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OldlYktpdENTU01hdHJpeDo6dG9TdHJpbmcpOiBU
d2Vha2VkIGZvcm1hdHRpbmcgYSBiaXQuCisgICAgICAgICogY3NzL1dlYktpdENTU01hdHJpeC5o
OiBVcGRhdGVkIGZvciBhYm92ZSBjaGFuZ2VzLgorICAgICAgICAqIGNzcy9XZWJLaXRDU1NNYXRy
aXguaWRsOiBVc2Ugbm9uLWxlZ2FjeSBleHRlbnNpb25zLgorCisgICAgICAgICogY3NzL21ha2Vw
cm9wLnBsOgorICAgICAgICAoaGFuZGxlQ3VycmVudENvbG9yVmFsdWUpOiBVc2UgdmFsdWVJRCBp
bnN0ZWFkIG9mIGdldFZhbHVlSUQuCisgICAgICAgIChnZW5lcmF0ZVZhbHVlU2V0dGVyKTogRGl0
dG8uCisKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDU1NQYXJzZXI6OnBhcnNlNFZhbHVlc0ZpbGxQb3NpdGlvbik6IFVzZSB2YWx1ZUlEIGlu
c3RlYWQgb2YgZ2V0VmFsdWVJRCwgZXRjLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpw
YXJzZTNWYWx1ZXNGaWxsUG9zaXRpb24pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1Bh
cnNlcjo6cGFyc2VGaWxsUG9zaXRpb24pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1Bh
cnNlcjo6cGFyc2VGaWxsUmVwZWF0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJz
ZXI6OnBhcnNlR3JpZFBvc2l0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJz
ZXI6OnBhcnNlR3JpZFRlbXBsYXRlUm93c0FuZEFyZWFzQW5kQ29sdW1ucyk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6aXNHcmlkVHJhY2tGaXhlZFNpemVkKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlUmFkaWFsR3JhZGllbnQpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VCdWlsdGluRmlsdGVyQXJndW1lbnRzKTogRGl0dG8u
CisKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNlclZhbHVlcy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQYXJzZXJWYWx1ZTo6Y3JlYXRlQ1NTVmFsdWUpOiBSZW1vdmVkIHRoZSB1bm5l
ZWRlZCBjYWxsIHRvCisgICAgICAgIHNldFByaW1pdGl2ZVR5cGUgaGVyZS4gVGhlIGNyZWF0ZVBh
cnNlck9wZXJhdG9yIHJldHVybnMgYW4gb2JqZWN0IHRoYXQKKyAgICAgICAgYWxyZWFkeSBoYXMg
dGhlIGNvcnJlY3QgcHJpbWl0aXZlIHR5cGUuCisKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1By
b3BlcnR5UGFyc2VyLmNwcDogVXBkYXRlZCBtb3N0IGNhc2VzIG9mIGNhbGxpbmcgdGhlIG9sZAor
ICAgICAgICBnZXRYWFhWYWx1ZSBmdW5jdGlvbnMsIGJ1dCBub3Qgc3VyZSBpZiBpdCdzIHJpZ2h0
IHNpbmNlIGl0IGlzIGNvbW1lbnRlZCBvdXQKKyAgICAgICAgY29kZSB0aGF0IEkgZGlkIG5vdCBj
b21waWxlLgorCisgICAgICAgICogY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjbGFtcFJH
QkNvbXBvbmVudCk6IFVzZSBpbnRWYWx1ZSBpbnN0ZWFkIG9mIGdldEludFZhbHVlLCBldGMuCisg
ICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OnBhcnNlSFNMUGFyYW1l
dGVycyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJz
Ojppc0hvcml6b250YWxQb3NpdGlvbktleXdvcmRPbmx5KTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OmlzVmVydGljYWxQb3NpdGlvbktleXdvcmRP
bmx5KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6
OnBvc2l0aW9uRnJvbVRocmVlT3JGb3VyVmFsdWVzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVSYWRpYWxHcmFkaWVudCk6IERpdHRv
LgorCisgICAgICAgICogZG9tL1JhbmdlLmNwcDogQWRkZWQgbm93LW5lZWRlZCBpbmNsdWRlIG9m
IEV4Y2VwdGlvbkNvZGUuaC4KKyAgICAgICAgKiBkb20vU2VsZWN0b3JRdWVyeS5jcHA6IERpdHRv
LgorCisgICAgICAgICogZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjp0b0lkZW50aWZpZXIpOiBVc2UgdmFsdWVJRCBpbnN0ZWFkIG9mIGdldFZhbHVlSUQs
IGV0Yy4KKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5bGVDb21tYW5kOjpjb21wdXRlZEZvbnRT
aXplKTogRGl0dG8uCisgICAgICAgICogZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6aWRlbnRpZmllckZvclN0eWxlUHJvcGVydHkpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxFbGVtZW50RXF1aXZhbGVudDo6dmFsdWVJc1ByZXNlbnRJblN0eWxlKTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OmV4dHJhY3RGb250U2l6ZURl
bHRhKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OnRleHREaXJlY3Rp
b24pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkVkaXRpbmdTdHlsZTo6cHJlcGFyZVRvQXBw
bHlBdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjp0ZXh0RGlyZWN0
aW9uRm9yU2VsZWN0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpmb250V2VpZ2h0SXNC
b2xkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpsZWdhY3lGb250U2l6ZUZyb21DU1NWYWx1
ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6aXNUcmFuc3BhcmVudENvbG9yVmFsdWUpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6Omhhc1RyYW5zcGFyZW50QmFja2dyb3VuZENvbG9yKTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpiYWNrZ3JvdW5kQ29sb3JJbkVmZmVjdCk6IERpdHRv
LgorCisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRp
dG9yOjphcHBseUVkaXRpbmdTdHlsZVRvRWxlbWVudCk6IFJlbW92ZWQgSUdOT1JFX0VYQ0VQVElP
TjsgdGhhdCBpcworICAgICAgICB3aGF0IHdlIGRvIGJ5IGRlZmF1bHQgZm9yIHRoaW5ncyByZXR1
cm5pbmcgRXhjZXB0aW9uT3IuCisgICAgICAgICogZWRpdGluZy9SZW1vdmVDU1NQcm9wZXJ0eUNv
bW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3ZlQ1NTUHJvcGVydHlDb21tYW5kOjpk
b0FwcGx5KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW1vdmVDU1NQcm9wZXJ0eUNvbW1h
bmQ6OmRvVW5hcHBseSk6IERpdHRvLgorICAgICAgICAqIGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlv
bkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6
OnJlbW92ZVJlZHVuZGFudFN0eWxlc0FuZEtlZXBTdHlsZVNwYW5JbmxpbmUpOiBEaXR0by4KKwor
ICAgICAgICAqIGVkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAgICAgKGZsb2F0
VmFsdWVGcm9tUHJpbWl0aXZlVmFsdWUpOiBVc2UgZmxvYXRWYWx1ZSBpbnN0ZWFkIG9mIGdldEZs
b2F0VmFsdWUsIGV0Yy4KKyAgICAgICAgKiBlZGl0aW5nL21hcmt1cC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpwcm9wZXJ0eU1pc3NpbmdPckVxdWFsVG9Ob25lKTogRGl0dG8uCisKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JTdHlsZVNoZWV0OjphZGRSdWxlKTogVXBkYXRlZCB0byBjYWxsIEV4Y2VwdGlvbk9y
LXJldHVybmluZyBmdW5jdGlvbnMuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNo
ZWV0OjpkZWxldGVSdWxlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHls
ZVNoZWV0OjpzZXRTdHlsZVRleHQpOiBEaXR0by4KKworICAgICAgICAqIHN2Zy9TVkdMZW5ndGgu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVuZ3RoOjpmcm9tQ1NTUHJpbWl0aXZlVmFsdWUp
OiBVc2UgZmxvYXRWYWx1ZSBpbnN0ZWFkIG9mIGdldEZsb2F0VmFsdWUuCisKIDIwMTYtMTAtMTYg
IENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIERv
Y3VtZW50IHJlcXVlc3Qgbm90IHVwZGF0ZWQgYWZ0ZXIgd2lsbFNlbmRSZXF1ZXN0IGlzIGNhbGxl
ZCBmb3IgYSByZWRpcmVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGJiZWM0MWU2NjRhNzMxNjJiNzY4
ZmU5NGJhZDZjYTM5MWYwMjdhYTUuLjgyMGMxZDExMzYwOTkwZmQyMzE4ZGExOGEwOTBmZTBlYjI2
MzVlOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NiBAQAorMjAxNi0xMC0xNiAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBDU1MgY2xhc3NlcyBm
cm9tIEV4Y2VwdGlvbkNvZGUgdG8gRXhjZXB0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM0OTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIERPTS9ET01DU1NNZWRpYVJ1bGUubW06CisgICAgICAg
ICgtW0RPTUNTU01lZGlhUnVsZSBpbnNlcnRSdWxlOmluZGV4Ol0pOiBVc2UgcmFpc2VPbkRPTUVy
cm9yCisgICAgICAgIHRoZSBuZXcgd2F5IHRvIGhhbmRsZSBFeGNlcHRpb25PciBpbnN0ZWFkIG9m
IEV4Y2VwdGlvbkNvZGUuCisgICAgICAgICgtW0RPTUNTU01lZGlhUnVsZSBkZWxldGVSdWxlOl0p
OiBEaXR0by4KKyAgICAgICAgKiBET00vRE9NQ1NTUHJpbWl0aXZlVmFsdWUubW06CisgICAgICAg
ICgtW0RPTUNTU1ByaW1pdGl2ZVZhbHVlIHNldEZsb2F0VmFsdWU6ZmxvYXRWYWx1ZTpdKTogRGl0
dG8uCisgICAgICAgICgtW0RPTUNTU1ByaW1pdGl2ZVZhbHVlIGdldEZsb2F0VmFsdWU6XSk6IERp
dHRvLgorICAgICAgICAoLVtET01DU1NQcmltaXRpdmVWYWx1ZSBzZXRTdHJpbmdWYWx1ZTpzdHJp
bmdWYWx1ZTpdKTogRGl0dG8uCisgICAgICAgICgtW0RPTUNTU1ByaW1pdGl2ZVZhbHVlIGdldFN0
cmluZ1ZhbHVlXSk6IERpdHRvLgorICAgICAgICAoLVtET01DU1NQcmltaXRpdmVWYWx1ZSBnZXRD
b3VudGVyVmFsdWVdKTogRGl0dG8uCisgICAgICAgICgtW0RPTUNTU1ByaW1pdGl2ZVZhbHVlIGdl
dFJlY3RWYWx1ZV0pOiBEaXR0by4KKyAgICAgICAgKC1bRE9NQ1NTUHJpbWl0aXZlVmFsdWUgZ2V0
UkdCQ29sb3JWYWx1ZV0pOiBEaXR0by4KKyAgICAgICAgKiBET00vRE9NQ1NTUnVsZS5tbToKKyAg
ICAgICAgKC1bRE9NQ1NTUnVsZSBzZXRDc3NUZXh0Ol0pOiBEaXR0by4KKyAgICAgICAgKiBET00v
RE9NQ1NTU3R5bGVEZWNsYXJhdGlvbi5tbToKKyAgICAgICAgKC1bRE9NQ1NTU3R5bGVEZWNsYXJh
dGlvbiBzZXRDc3NUZXh0Ol0pOiBEaXR0by4KKyAgICAgICAgKC1bRE9NQ1NTU3R5bGVEZWNsYXJh
dGlvbiByZW1vdmVQcm9wZXJ0eTpdKTogRGl0dG8uCisgICAgICAgICgtW0RPTUNTU1N0eWxlRGVj
bGFyYXRpb24gc2V0UHJvcGVydHk6dmFsdWU6cHJpb3JpdHk6XSk6IERpdHRvLgorICAgICAgICAq
IERPTS9ET01DU1NTdHlsZVNoZWV0Lm1tOgorICAgICAgICAoLVtET01DU1NTdHlsZVNoZWV0IGlu
c2VydFJ1bGU6aW5kZXg6XSk6IERpdHRvLgorICAgICAgICAoLVtET01DU1NTdHlsZVNoZWV0IGRl
bGV0ZVJ1bGU6XSk6IERpdHRvLgorICAgICAgICAoLVtET01DU1NTdHlsZVNoZWV0IGFkZFJ1bGU6
c3R5bGU6aW5kZXg6XSk6IERpdHRvLgorICAgICAgICAoLVtET01DU1NTdHlsZVNoZWV0IHJlbW92
ZVJ1bGU6XSk6IERpdHRvLgorICAgICAgICAqIERPTS9ET01DU1NWYWx1ZS5tbToKKyAgICAgICAg
KC1bRE9NQ1NTVmFsdWUgc2V0Q3NzVGV4dDpdKTogRGl0dG8uCisgICAgICAgICogRE9NL0RPTU1l
ZGlhTGlzdC5tbToKKyAgICAgICAgKC1bRE9NTWVkaWFMaXN0IHNldE1lZGlhVGV4dDpdKTogRGl0
dG8uCisgICAgICAgICgtW0RPTU1lZGlhTGlzdCBkZWxldGVNZWRpdW06XSk6IERpdHRvLgorICAg
ICAgICAoLVtET01NZWRpYUxpc3QgYXBwZW5kTWVkaXVtOl0pOiBEaXR0by4KKworICAgICAgICAq
IERPTS9FeGNlcHRpb25IYW5kbGVycy5oOiBBZGRlZCBhbiBvdmVybG9hZCBvZiByYWlzZURPTUV4
Y2VwdGlvbgorICAgICAgICB0aGF0IHdvcmtzIHdpdGggYSBXZWJDb3JlOjpFeGNlcHRpb24mJiBh
bmQgb3ZlcmxvYWRzIG9mCisgICAgICAgIHJhaXNlT25ET01FcnJvciB0aGF0IHdvcmsgd2l0aCBX
ZWJDb3JlOjpFeGNlcHRpb25PciYmLgorICAgICAgICAqIERPTS9FeGNlcHRpb25IYW5kbGVycy5t
bToKKyAgICAgICAgKHJhaXNlRE9NRXhjZXB0aW9uKTogSW1wbGVtZW50ZWQgdGhlIG5ldyB2ZXJz
aW9uLgorCiAyMDE2LTEwLTE1ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAg
ICAgICAgUkVHUkVTU0lPTiAocjE5MTY5OSk6IENvbnRleHR1YWwgbWVudSBpbiBNYWlsIGNvbXBv
c2UgdmlldyBkb2VzbuKAmXQgaW5jbHVkZSBhbnkgb2YgdGhlIHN0YW5kYXJkIHN1Ym1lbnVzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dp
bi9DaGFuZ2VMb2cKaW5kZXggZjFiMGJiNDhjOWYxZjRhZDY2ODMzYTNhMGExYjgwYzc1NzExNThj
ZC4uZjNhNTZlYTVlZGFiMDRhNjJlZDRhNDE3ZDc2M2NkNzY2MDU3YmU5OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE2LTEwLTE2ICBEYXJpbiBBZGxlciAgPGRhcmluQGFw
cGxlLmNvbT4KKworICAgICAgICBNb3ZlIENTUyBjbGFzc2VzIGZyb20gRXhjZXB0aW9uQ29kZSB0
byBFeGNlcHRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2MzQ5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogRE9NQ1NTQ2xhc3Nlcy5jcHA6CisgICAgICAgIChET01DU1NTdHlsZURlY2xhcmF0aW9u
OjpzZXRDc3NUZXh0KTogUmVtb3ZlIEV4Y2VwdGlvbkNvZGUgaGFuZGxpbmcuCisgICAgICAgIChE
T01DU1NTdHlsZURlY2xhcmF0aW9uOjpzZXRQcm9wZXJ0eSk6IERpdHRvLgorCiAyMDE2LTEwLTEy
ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgQ29weSBC
YWNrRm9yd2FyZExpc3QgZnJvbSBXZWJDb3JlIHRvIFdlYktpdC93aW4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBk
MjBkMjU4MmQyYjQ3NDdkYzI2MWZmMzdhZDIzZjdmNzQxMzVhODVjLi5mNTc2MTUxZDhhMDdjMTEw
M2VhMTk3ZDI5ODYyOGM3MmU0ODY3NDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIw
MTYtMTAtMTYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUg
Q1NTIGNsYXNzZXMgZnJvbSBFeGNlcHRpb25Db2RlIHRvIEV4Y2VwdGlvbgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDk0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUNTU1J1bGUuY3BwOgorICAgICAgICAod2Via2l0
X2RvbV9jc3NfcnVsZV9zZXRfY3NzX3RleHQpOiBVcGRhdGVkIGZvciBFeGNlcHRpb25Pci4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUNT
U1N0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAod2Via2l0X2RvbV9jc3Nfc3R5bGVfZGVj
bGFyYXRpb25fcmVtb3ZlX3Byb3BlcnR5KTogRGl0dG8uCisgICAgICAgICh3ZWJraXRfZG9tX2Nz
c19zdHlsZV9kZWNsYXJhdGlvbl9zZXRfcHJvcGVydHkpOiBEaXR0by4KKyAgICAgICAgKHdlYmtp
dF9kb21fY3NzX3N0eWxlX2RlY2xhcmF0aW9uX3NldF9jc3NfdGV4dCk6IERpdHRvLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NQ1NTU3R5
bGVTaGVldC5jcHA6CisgICAgICAgICh3ZWJraXRfZG9tX2Nzc19zdHlsZV9zaGVldF9pbnNlcnRf
cnVsZSk6IERpdHRvLgorICAgICAgICAod2Via2l0X2RvbV9jc3Nfc3R5bGVfc2hlZXRfZGVsZXRl
X3J1bGUpOiBEaXR0by4KKyAgICAgICAgKHdlYmtpdF9kb21fY3NzX3N0eWxlX3NoZWV0X2FkZF9y
dWxlKTogRGl0dG8uCisgICAgICAgICh3ZWJraXRfZG9tX2Nzc19zdHlsZV9zaGVldF9yZW1vdmVf
cnVsZSk6IERpdHRvLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0
ay9ET00vV2ViS2l0RE9NQ1NTVmFsdWUuY3BwOgorICAgICAgICAod2Via2l0X2RvbV9jc3NfdmFs
dWVfc2V0X2Nzc190ZXh0KTogRGl0dG8uCisKIDIwMTYtMTAtMTYgIENhcmxvcyBHYXJjaWEgQ2Ft
cG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIERlZmF1bHQgV2ViS2l0
V2Vic2l0ZURhdGFNYW5hZ2VyIGlzIGFsd2F5cyBsZWFrZWQgaW4gV2ViS2l0V2ViQ29udGV4dApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0
aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNs
YXJhdGlvbkN1c3RvbS5jcHAKaW5kZXggNGI3ZTMyYjQxM2FlODBjMmQwYTA1OTgxMjcwYTY5ZmQ1
YjQxZjRkOS4uMzVlNGEyMjc1YTY5NGYxOGY1NWY5NzljMDFiMzE5YzcxOWY3NDMxZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3Vz
dG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFy
YXRpb25DdXN0b20uY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
Ny0yMDA5LCAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwNy0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDcsNyArNDcsNiBAQAogI2luY2x1ZGUg
PHd0Zi9BU0NJSUNUeXBlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KLSNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIApAQCAtNTUsNiArNTQsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQqIHJvb3QoQ1NTU3R5bGVEZWNsYXJhdGlvbiog
c3R5bGUpCiB7CisgICAgQVNTRVJUKHN0eWxlKTsKICAgICBpZiAoYXV0byogcGFyZW50UnVsZSA9
IHN0eWxlLT5wYXJlbnRSdWxlKCkpCiAgICAgICAgIHJldHVybiByb290KHBhcmVudFJ1bGUpOwog
ICAgIGlmIChhdXRvKiBzdHlsZVNoZWV0ID0gc3R5bGUtPnBhcmVudFN0eWxlU2hlZXQoKSkKQEAg
LTY5LDI1ICs2OSwxMSBAQCB2b2lkIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6dmlzaXRBZGRpdGlv
bmFsQ2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdmlzaXRvci5hZGRPcGFxdWVS
b290KHJvb3QoJndyYXBwZWQoKSkpOwogfQogCi1jbGFzcyBDU1NQcm9wZXJ0eUluZm8gewotcHVi
bGljOgotICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRDsKLSAgICBib29sIGhhZFBpeGVsT3JQ
b3NQcmVmaXg7Ci19OwotCi1lbnVtIFByb3BlcnR5TmFtZVByZWZpeCB7Ci0gICAgUHJvcGVydHlO
YW1lUHJlZml4Tm9uZSwKLSAgICBQcm9wZXJ0eU5hbWVQcmVmaXhDU1MsCi0gICAgUHJvcGVydHlO
YW1lUHJlZml4UGl4ZWwsCi0gICAgUHJvcGVydHlOYW1lUHJlZml4UG9zLAorZW51bSBjbGFzcyBQ
cm9wZXJ0eU5hbWVQcmVmaXggeworICAgIE5vbmUsIEVwdWIsIENTUywgUGl4ZWwsIFBvcywgV2Vi
S2l0LAogI2lmIEVOQUJMRShMRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykKLSAgICBQcm9wZXJ0
eU5hbWVQcmVmaXhBcHBsZSwKKyAgICBBcHBsZSwgS0hUTUwsCiAjZW5kaWYKLSAgICBQcm9wZXJ0
eU5hbWVQcmVmaXhFcHViLAotI2lmIEVOQUJMRShMRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykK
LSAgICBQcm9wZXJ0eU5hbWVQcmVmaXhLSFRNTCwKLSNlbmRpZgotICAgIFByb3BlcnR5TmFtZVBy
ZWZpeFdlYktpdAogfTsKIAogdGVtcGxhdGU8c2l6ZV90IHByZWZpeENTdHJpbmdMZW5ndGg+CkBA
IC0xMDcsNyArOTMsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgbWF0Y2hlc0NTU1Byb3BlcnR5TmFt
ZVByZWZpeChjb25zdCBTdHJpbmdJbXBsJiBwcm9wZXJ0eU5hbWUsCiAKICAgICAvLyBUaGUgcHJl
Zml4IHdpdGhpbiB0aGUgcHJvcGVydHkgbmFtZSBtdXN0IGJlIGZvbGxvd2VkIGJ5IGEgY2FwaXRh
bCBsZXR0ZXIuCiAgICAgLy8gT3RoZXIgY2hhcmFjdGVycyBpbiB0aGUgcHJlZml4IHdpdGhpbiB0
aGUgcHJvcGVydHkgbmFtZSBtdXN0IGJlIGxvd2VyY2FzZS4KLSAgICBpZiAocHJvcGVydHlOYW1l
Lmxlbmd0aCgpIDwgKHByZWZpeExlbmd0aCArIDEpKQorICAgIGlmIChwcm9wZXJ0eU5hbWUubGVu
Z3RoKCkgPCBwcmVmaXhMZW5ndGggKyAxKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBm
b3IgKHNpemVfdCBpID0gb2Zmc2V0OyBpIDwgcHJlZml4TGVuZ3RoOyArK2kpIHsKQEAgLTExNywx
MCArMTAzLDExIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBtYXRjaGVzQ1NTUHJvcGVydHlOYW1lUHJl
Zml4KGNvbnN0IFN0cmluZ0ltcGwmIHByb3BlcnR5TmFtZSwKIAogICAgIGlmICghaXNBU0NJSVVw
cGVyKHByb3BlcnR5TmFtZVtwcmVmaXhMZW5ndGhdKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwor
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBQcm9wZXJ0eU5hbWVQcmVmaXggZ2V0Q1NT
UHJvcGVydHlOYW1lUHJlZml4KGNvbnN0IFN0cmluZ0ltcGwmIHByb3BlcnR5TmFtZSkKK3N0YXRp
YyBQcm9wZXJ0eU5hbWVQcmVmaXggcHJvcGVydHlOYW1lUHJlZml4KGNvbnN0IFN0cmluZ0ltcGwm
IHByb3BlcnR5TmFtZSkKIHsKICAgICBBU1NFUlQocHJvcGVydHlOYW1lLmxlbmd0aCgpKTsKIApA
QCAtMTMwLDM3ICsxMTcsMzcgQEAgc3RhdGljIFByb3BlcnR5TmFtZVByZWZpeCBnZXRDU1NQcm9w
ZXJ0eU5hbWVQcmVmaXgoY29uc3QgU3RyaW5nSW1wbCYgcHJvcGVydHlOYW0KICNpZiBFTkFCTEUo
TEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMpCiAgICAgY2FzZSAnYSc6CiAgICAgICAgIGlmIChS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmxlZ2FjeUNTU1ZlbmRvclBy
ZWZpeGVzRW5hYmxlZCgpICYmIG1hdGNoZXNDU1NQcm9wZXJ0eU5hbWVQcmVmaXgocHJvcGVydHlO
YW1lLCAiYXBwbGUiKSkKLSAgICAgICAgICAgIHJldHVybiBQcm9wZXJ0eU5hbWVQcmVmaXhBcHBs
ZTsKKyAgICAgICAgICAgIHJldHVybiBQcm9wZXJ0eU5hbWVQcmVmaXg6OkFwcGxlOwogICAgICAg
ICBicmVhazsKICNlbmRpZgogICAgIGNhc2UgJ2MnOgogICAgICAgICBpZiAobWF0Y2hlc0NTU1By
b3BlcnR5TmFtZVByZWZpeChwcm9wZXJ0eU5hbWUsICJjc3MiKSkKLSAgICAgICAgICAgIHJldHVy
biBQcm9wZXJ0eU5hbWVQcmVmaXhDU1M7CisgICAgICAgICAgICByZXR1cm4gUHJvcGVydHlOYW1l
UHJlZml4OjpDU1M7CiAgICAgICAgIGJyZWFrOwogI2lmIEVOQUJMRShMRUdBQ1lfQ1NTX1ZFTkRP
Ul9QUkVGSVhFUykKICAgICBjYXNlICdrJzoKICAgICAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkubGVnYWN5Q1NTVmVuZG9yUHJlZml4ZXNFbmFibGVkKCkg
JiYgbWF0Y2hlc0NTU1Byb3BlcnR5TmFtZVByZWZpeChwcm9wZXJ0eU5hbWUsICJraHRtbCIpKQot
ICAgICAgICAgICAgcmV0dXJuIFByb3BlcnR5TmFtZVByZWZpeEtIVE1MOworICAgICAgICAgICAg
cmV0dXJuIFByb3BlcnR5TmFtZVByZWZpeDo6S0hUTUw7CiAgICAgICAgIGJyZWFrOwogI2VuZGlm
CiAgICAgY2FzZSAnZSc6CiAgICAgICAgIGlmIChtYXRjaGVzQ1NTUHJvcGVydHlOYW1lUHJlZml4
KHByb3BlcnR5TmFtZSwgImVwdWIiKSkKLSAgICAgICAgICAgIHJldHVybiBQcm9wZXJ0eU5hbWVQ
cmVmaXhFcHViOworICAgICAgICAgICAgcmV0dXJuIFByb3BlcnR5TmFtZVByZWZpeDo6RXB1YjsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSAncCc6CiAgICAgICAgIGlmIChtYXRjaGVzQ1NTUHJv
cGVydHlOYW1lUHJlZml4KHByb3BlcnR5TmFtZSwgInBvcyIpKQotICAgICAgICAgICAgcmV0dXJu
IFByb3BlcnR5TmFtZVByZWZpeFBvczsKKyAgICAgICAgICAgIHJldHVybiBQcm9wZXJ0eU5hbWVQ
cmVmaXg6OlBvczsKICAgICAgICAgaWYgKG1hdGNoZXNDU1NQcm9wZXJ0eU5hbWVQcmVmaXgocHJv
cGVydHlOYW1lLCAicGl4ZWwiKSkKLSAgICAgICAgICAgIHJldHVybiBQcm9wZXJ0eU5hbWVQcmVm
aXhQaXhlbDsKKyAgICAgICAgICAgIHJldHVybiBQcm9wZXJ0eU5hbWVQcmVmaXg6OlBpeGVsOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlICd3JzoKICAgICAgICAgaWYgKG1hdGNoZXNDU1NQcm9w
ZXJ0eU5hbWVQcmVmaXgocHJvcGVydHlOYW1lLCAid2Via2l0IikpCi0gICAgICAgICAgICByZXR1
cm4gUHJvcGVydHlOYW1lUHJlZml4V2ViS2l0OworICAgICAgICAgICAgcmV0dXJuIFByb3BlcnR5
TmFtZVByZWZpeDo6V2ViS2l0OwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAg
ICBicmVhazsKICAgICB9Ci0gICAgcmV0dXJuIFByb3BlcnR5TmFtZVByZWZpeE5vbmU7CisgICAg
cmV0dXJuIFByb3BlcnR5TmFtZVByZWZpeDo6Tm9uZTsKIH0KIAogc3RhdGljIGlubGluZSB2b2lk
IHdyaXRlV2ViS2l0UHJlZml4KGNoYXIqJiBidWZmZXIpCkBAIC0xODUsNyArMTcyLDEyIEBAIHN0
YXRpYyBpbmxpbmUgdm9pZCB3cml0ZUVwdWJQcmVmaXgoY2hhciomIGJ1ZmZlcikKICAgICAqYnVm
ZmVyKysgPSAnLSc7CiB9CiAKLXN0YXRpYyBDU1NQcm9wZXJ0eUluZm8gY3NzUHJvcGVydHlJREZv
ckpTQ1NTUHJvcGVydHlOYW1lKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitzdHJ1Y3QgQ1NT
UHJvcGVydHlJbmZvIHsKKyAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQ7CisgICAgYm9vbCBo
YWRQaXhlbE9yUG9zUHJlZml4OworfTsKKworc3RhdGljIENTU1Byb3BlcnR5SW5mbyBwYXJzZUph
dmFTY3JpcHRDU1NQcm9wZXJ0eU5hbWUoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKICAg
ICBDU1NQcm9wZXJ0eUluZm8gcHJvcGVydHlJbmZvID0ge0NTU1Byb3BlcnR5SW52YWxpZCwgZmFs
c2V9OwogICAgIGJvb2wgaGFkUGl4ZWxPclBvc1ByZWZpeCA9IGZhbHNlOwpAQCAtMTk4LDcgKzE5
MCw3IEBAIHN0YXRpYyBDU1NQcm9wZXJ0eUluZm8gY3NzUHJvcGVydHlJREZvckpTQ1NTUHJvcGVy
dHlOYW1lKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hCiAgICAgICAgIHJldHVybiBwcm9wZXJ0eUlu
Zm87CiAKICAgICBTdHJpbmcgc3RyaW5nRm9yQ2FjaGUgPSBTdHJpbmcocHJvcGVydHlOYW1lU3Ry
aW5nKTsKLSAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBDU1NQcm9wZXJ0eUluZm8+IENTU1By
b3BlcnR5SW5mb01hcDsKKyAgICB1c2luZyBDU1NQcm9wZXJ0eUluZm9NYXAgPSBIYXNoTWFwPFN0
cmluZywgQ1NTUHJvcGVydHlJbmZvPjsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q1NTUHJv
cGVydHlJbmZvTWFwPiBwcm9wZXJ0eUluZm9DYWNoZTsKICAgICBwcm9wZXJ0eUluZm8gPSBwcm9w
ZXJ0eUluZm9DYWNoZS5nZXQoKS5nZXQoc3RyaW5nRm9yQ2FjaGUpOwogICAgIGlmIChwcm9wZXJ0
eUluZm8ucHJvcGVydHlJRCkKQEAgLTIxMywzNSArMjA1LDM1IEBAIHN0YXRpYyBDU1NQcm9wZXJ0
eUluZm8gY3NzUHJvcGVydHlJREZvckpTQ1NTUHJvcGVydHlOYW1lKFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hCiAgICAgLy8gUHJlZml4ZXMgQ1NTLCBQaXhlbCwgUG9zIGFyZSBpZ25vcmVkLgogICAg
IC8vIFByZWZpeGVzIEFwcGxlLCBLSFRNTCBhbmQgV2Via2l0IGFyZSB0cmFuc3Bvc2VkIHRvICIt
d2Via2l0LSIuCiAgICAgLy8gVGhlIHByZWZpeCAiRXB1YiIgYmVjb21lcyAiLWVwdWItIi4KLSAg
ICBzd2l0Y2ggKGdldENTU1Byb3BlcnR5TmFtZVByZWZpeCgqcHJvcGVydHlOYW1lU3RyaW5nKSkg
ewotICAgIGNhc2UgUHJvcGVydHlOYW1lUHJlZml4Tm9uZToKKyAgICBzd2l0Y2ggKHByb3BlcnR5
TmFtZVByZWZpeCgqcHJvcGVydHlOYW1lU3RyaW5nKSkgeworICAgIGNhc2UgUHJvcGVydHlOYW1l
UHJlZml4OjpOb25lOgogICAgICAgICBpZiAoaXNBU0NJSVVwcGVyKCgqcHJvcGVydHlOYW1lU3Ry
aW5nKVswXSkpCiAgICAgICAgICAgICByZXR1cm4gcHJvcGVydHlJbmZvOwogICAgICAgICBicmVh
azsKLSAgICBjYXNlIFByb3BlcnR5TmFtZVByZWZpeENTUzoKKyAgICBjYXNlIFByb3BlcnR5TmFt
ZVByZWZpeDo6Q1NTOgogICAgICAgICBpICs9IDM7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
UHJvcGVydHlOYW1lUHJlZml4UGl4ZWw6CisgICAgY2FzZSBQcm9wZXJ0eU5hbWVQcmVmaXg6OlBp
eGVsOgogICAgICAgICBpICs9IDU7CiAgICAgICAgIGhhZFBpeGVsT3JQb3NQcmVmaXggPSB0cnVl
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFByb3BlcnR5TmFtZVByZWZpeFBvczoKKyAgICBj
YXNlIFByb3BlcnR5TmFtZVByZWZpeDo6UG9zOgogICAgICAgICBpICs9IDM7CiAgICAgICAgIGhh
ZFBpeGVsT3JQb3NQcmVmaXggPSB0cnVlOwogICAgICAgICBicmVhazsKICNpZiBFTkFCTEUoTEVH
QUNZX0NTU19WRU5ET1JfUFJFRklYRVMpCi0gICAgY2FzZSBQcm9wZXJ0eU5hbWVQcmVmaXhBcHBs
ZToKLSAgICBjYXNlIFByb3BlcnR5TmFtZVByZWZpeEtIVE1MOgorICAgIGNhc2UgUHJvcGVydHlO
YW1lUHJlZml4OjpBcHBsZToKKyAgICBjYXNlIFByb3BlcnR5TmFtZVByZWZpeDo6S0hUTUw6CiAg
ICAgICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmxl
Z2FjeUNTU1ZlbmRvclByZWZpeGVzRW5hYmxlZCgpKTsKICAgICAgICAgd3JpdGVXZWJLaXRQcmVm
aXgoYnVmZmVyUHRyKTsKICAgICAgICAgaSArPSA1OwogICAgICAgICBicmVhazsKICNlbmRpZgot
ICAgIGNhc2UgUHJvcGVydHlOYW1lUHJlZml4RXB1YjoKKyAgICBjYXNlIFByb3BlcnR5TmFtZVBy
ZWZpeDo6RXB1YjoKICAgICAgICAgd3JpdGVFcHViUHJlZml4KGJ1ZmZlclB0cik7CiAgICAgICAg
IGkgKz0gNDsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQcm9wZXJ0eU5hbWVQcmVmaXhXZWJL
aXQ6CisgICAgY2FzZSBQcm9wZXJ0eU5hbWVQcmVmaXg6OldlYktpdDoKICAgICAgICAgd3JpdGVX
ZWJLaXRQcmVmaXgoYnVmZmVyUHRyKTsKICAgICAgICAgaSArPSA2OwogICAgICAgICBicmVhazsK
QEAgLTI1OCw3ICsyNTAsNyBAQCBzdGF0aWMgQ1NTUHJvcGVydHlJbmZvIGNzc1Byb3BlcnR5SURG
b3JKU0NTU1Byb3BlcnR5TmFtZShQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYQogCiAgICAgZm9yICg7
IGkgPCBsZW5ndGg7ICsraSkgewogICAgICAgICBVQ2hhciBjID0gKCpwcm9wZXJ0eU5hbWVTdHJp
bmcpW2ldOwotICAgICAgICBpZiAoIWMgfHwgYyA+PSAweDdGKQorICAgICAgICBpZiAoIWMgfHwg
IWlzQVNDSUkoYykpCiAgICAgICAgICAgICByZXR1cm4gcHJvcGVydHlJbmZvOyAvLyBpbGxlZ2Fs
IGNoYXJhY3RlcgogICAgICAgICBpZiAoaXNBU0NJSVVwcGVyKGMpKSB7CiAgICAgICAgICAgICBz
aXplX3QgYnVmZmVyU2l6ZUxlZnQgPSBzdHJpbmdFbmQgLSBidWZmZXJQdHI7CkBAIC0yNjYsNyAr
MjU4LDcgQEAgc3RhdGljIENTU1Byb3BlcnR5SW5mbyBjc3NQcm9wZXJ0eUlERm9ySlNDU1NQcm9w
ZXJ0eU5hbWUoUHJvcGVydHlOYW1lIHByb3BlcnR5TmEKICAgICAgICAgICAgIGlmIChwcm9wZXJ0
eVNpemVMZWZ0ID4gYnVmZmVyU2l6ZUxlZnQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHByb3Bl
cnR5SW5mbzsKICAgICAgICAgICAgICpidWZmZXJQdHIrKyA9ICctJzsKLSAgICAgICAgICAgICpi
dWZmZXJQdHIrKyA9IHRvQVNDSUlMb3dlcihjKTsKKyAgICAgICAgICAgICpidWZmZXJQdHIrKyA9
IHRvQVNDSUlMb3dlclVuY2hlY2tlZChjKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAq
YnVmZmVyUHRyKysgPSBjOwogICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElP
TihidWZmZXJQdHIgPCBidWZmZXJFbmQpOwpAQCAtMjc5LDkgKzI3MSw4IEBAIHN0YXRpYyBDU1NQ
cm9wZXJ0eUluZm8gY3NzUHJvcGVydHlJREZvckpTQ1NTUHJvcGVydHlOYW1lKFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hCiAgICAgY3NzUHJvcGVydHlOYW1lSU9TQWxpYXNpbmcoYnVmZmVyLCBuYW1l
LCBvdXRwdXRMZW5ndGgpOwogI2VuZGlmCiAKLSAgICBjb25zdCBQcm9wZXJ0eSogaGFzaFRhYmxl
RW50cnkgPSBmaW5kUHJvcGVydHkobmFtZSwgb3V0cHV0TGVuZ3RoKTsKLSAgICBpbnQgcHJvcGVy
dHlJRCA9IGhhc2hUYWJsZUVudHJ5ID8gaGFzaFRhYmxlRW50cnktPmlkIDogMDsKLSAgICBpZiAo
cHJvcGVydHlJRCkgeworICAgIGF1dG8qIGhhc2hUYWJsZUVudHJ5ID0gZmluZFByb3BlcnR5KG5h
bWUsIG91dHB1dExlbmd0aCk7CisgICAgaWYgKGF1dG8gcHJvcGVydHlJRCA9IGhhc2hUYWJsZUVu
dHJ5ID8gaGFzaFRhYmxlRW50cnktPmlkIDogMCkgewogICAgICAgICBwcm9wZXJ0eUluZm8uaGFk
UGl4ZWxPclBvc1ByZWZpeCA9IGhhZFBpeGVsT3JQb3NQcmVmaXg7CiAgICAgICAgIHByb3BlcnR5
SW5mby5wcm9wZXJ0eUlEID0gc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4ocHJvcGVydHlJRCk7
CiAgICAgICAgIHByb3BlcnR5SW5mb0NhY2hlLmdldCgpLmFkZChzdHJpbmdGb3JDYWNoZSwgcHJv
cGVydHlJbmZvKTsKQEAgLTI4OSw3NiArMjgwLDcxIEBAIHN0YXRpYyBDU1NQcm9wZXJ0eUluZm8g
Y3NzUHJvcGVydHlJREZvckpTQ1NTUHJvcGVydHlOYW1lKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
CiAgICAgcmV0dXJuIHByb3BlcnR5SW5mbzsKIH0KIAotc3RhdGljIGlubGluZSBKU1ZhbHVlIGdl
dFByb3BlcnR5VmFsdWVGYWxsYmFjayhFeGVjU3RhdGUqIGV4ZWMsIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiogdGhpc09iaiwgdW5zaWduZWQgaW5kZXgpCitzdGF0aWMgaW5saW5lIEpTVmFsdWUgc3R5
bGVQcm9wZXJ0eUdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU0NTU1N0eWxlRGVjbGFyYXRpb24m
IHRoaXNPYmplY3QsIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgY29uc3QgUmVmUHRyPENTU1Zh
bHVlPiYgdmFsdWUpCiB7Ci0gICAgLy8gSWYgdGhlIHByb3BlcnR5IGlzIGEgc2hvcnRoYW5kIHBy
b3BlcnR5IChzdWNoIGFzICJwYWRkaW5nIiksCi0gICAgLy8gaXQgY2FuIG9ubHkgYmUgYWNjZXNz
ZWQgdXNpbmcgZ2V0UHJvcGVydHlWYWx1ZS4KLSAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUo
ZXhlYywgdGhpc09iai0+d3JhcHBlZCgpLmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChzdGF0aWNf
Y2FzdDxDU1NQcm9wZXJ0eUlEPihpbmRleCkpKTsKKyAgICBpZiAodmFsdWUpCisgICAgICAgIHJl
dHVybiBqc1N0cmluZ09yTnVsbCgmc3RhdGUsIHZhbHVlLT5jc3NUZXh0KCkpOworICAgIC8vIElm
IHRoZSBwcm9wZXJ0eSBpcyBhIHNob3J0aGFuZCBwcm9wZXJ0eSAoc3VjaCBhcyAicGFkZGluZyIp
LCBpdCBjYW4gb25seSBiZSBhY2Nlc3NlZCB1c2luZyBnZXRQcm9wZXJ0eVZhbHVlLgorICAgIHJl
dHVybiBqc1N0cmluZ1dpdGhDYWNoZSgmc3RhdGUsIHRoaXNPYmplY3Qud3JhcHBlZCgpLmdldFBy
b3BlcnR5VmFsdWVJbnRlcm5hbChwcm9wZXJ0eUlEKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBjc3NQcm9wZXJ0eUdldHRlclBpeGVsT3JQb3NQcmVmaXgoRXhlY1N0YXRlKiBleGVjLCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24qIHRoaXNPYmosIHVuc2lnbmVkIHByb3BlcnR5SUQpCitzdGF0
aWMgaW5saW5lIEpTVmFsdWUgc3R5bGVQcm9wZXJ0eUdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBK
U0NTU1N0eWxlRGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJ
RCkKIHsKLSAgICAvLyBTZXQgdXAgcGl4ZWxPclBvcyBib29sZWFuIHRvIGhhbmRsZSB0aGUgZmFj
dCB0aGF0Ci0gICAgLy8gcGl4ZWxUb3AgcmV0dXJucyAiQ1NTIFRvcCIgYXMgbnVtYmVyIHZhbHVl
IGluIHVuaXQgcGl4ZWxzCi0gICAgLy8gcG9zVG9wIHJldHVybnMgIkNTUyB0b3AiIGFzIG51bWJl
ciB2YWx1ZSBpbiB1bml0IHBpeGVscyBfaWZfIGl0cyBhCi0gICAgLy8gcG9zaXRpb25lZCBlbGVt
ZW50LiBpZiBpdCBpcyBub3QgYSBwb3NpdGlvbmVkIGVsZW1lbnQsIHJldHVybiAwCi0gICAgLy8g
ZnJvbSBNU0lFIGRvY3VtZW50YXRpb24gRklYTUU6IElNUExFTUVOVCBUSEFUIChEaXJrKQotICAg
IFJlZlB0cjxDU1NWYWx1ZT4gdiA9IHRoaXNPYmotPndyYXBwZWQoKS5nZXRQcm9wZXJ0eUNTU1Zh
bHVlSW50ZXJuYWwoc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4ocHJvcGVydHlJRCkpOwotICAg
IGlmICh2KSB7Ci0gICAgICAgIGlmICh2LT5pc1ByaW1pdGl2ZVZhbHVlKCkpCi0gICAgICAgICAg
ICByZXR1cm4ganNOdW1iZXIoc3RhdGljX3BvaW50ZXJfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4o
diktPmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCkpOwotICAgICAgICBy
ZXR1cm4ganNTdHJpbmdPck51bGwoZXhlYywgdi0+Y3NzVGV4dCgpKTsKLSAgICB9Ci0KLSAgICBy
ZXR1cm4gZ2V0UHJvcGVydHlWYWx1ZUZhbGxiYWNrKGV4ZWMsIHRoaXNPYmosIHByb3BlcnR5SUQp
OworICAgIHJldHVybiBzdHlsZVByb3BlcnR5R2V0dGVyKHN0YXRlLCB0aGlzT2JqZWN0LCBwcm9w
ZXJ0eUlELCB0aGlzT2JqZWN0LndyYXBwZWQoKS5nZXRQcm9wZXJ0eUNTU1ZhbHVlSW50ZXJuYWwo
cHJvcGVydHlJRCkpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTVmFsdWUgY3NzUHJvcGVydHlHZXR0
ZXIoRXhlY1N0YXRlKiBleGVjLCBKU0NTU1N0eWxlRGVjbGFyYXRpb24qIHRoaXNPYmosIHVuc2ln
bmVkIHByb3BlcnR5SUQpCitzdGF0aWMgaW5saW5lIEpTVmFsdWUgc3R5bGVQcm9wZXJ0eUdldHRl
clBpeGVsT3JQb3NQcmVmaXgoRXhlY1N0YXRlJiBzdGF0ZSwgSlNDU1NTdHlsZURlY2xhcmF0aW9u
JiB0aGlzT2JqZWN0LCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQpCiB7Ci0gICAgUmVmUHRyPENT
U1ZhbHVlPiB2ID0gdGhpc09iai0+d3JhcHBlZCgpLmdldFByb3BlcnR5Q1NTVmFsdWVJbnRlcm5h
bChzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihwcm9wZXJ0eUlEKSk7Ci0gICAgaWYgKHYpCi0g
ICAgICAgIHJldHVybiBqc1N0cmluZ09yTnVsbChleGVjLCB2LT5jc3NUZXh0KCkpOworICAgIC8v
IENhbGwgdGhpcyB2ZXJzaW9uIG9mIHRoZSBnZXR0ZXIgc28gdGhhdCwgZS5nLiwgcGl4ZWxUb3Ag
cmV0dXJucyB0b3AgYXMgYSBudW1iZXIKKyAgICAvLyBpbiBwaXhlbCB1bml0cyBhbmQgcG9zVG9w
IHNob3VsZCBkb2VzIHRoZSBzYW1lIF9pZl8gdGhpcyBpcyBhIHBvc2l0aW9uZWQgZWxlbWVudC4K
KyAgICAvLyBGSVhNRTogSWYgbm90IGEgcG9zaXRpb25lZCBlbGVtZW50LCBNU0lFIGRvY3VtZW50
YXRpb24gc2F5cyBwb3NUb3Agc2hvdWxkIHJldHVybiAwOyB0aGlzIHJ1bGUgaXMgbm90IGltcGxl
bWVudGVkLgorICAgIGF1dG8gdmFsdWUgPSB0aGlzT2JqZWN0LndyYXBwZWQoKS5nZXRQcm9wZXJ0
eUNTU1ZhbHVlSW50ZXJuYWwocHJvcGVydHlJRCk7CisgICAgaWYgKGlzPENTU1ByaW1pdGl2ZVZh
bHVlPih2YWx1ZS5nZXQoKSkpCisgICAgICAgIHJldHVybiBqc051bWJlcihkb3duY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZT4oKnZhbHVlKS5mbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
UFgpKTsKKyAgICByZXR1cm4gc3R5bGVQcm9wZXJ0eUdldHRlcihzdGF0ZSwgdGhpc09iamVjdCwg
cHJvcGVydHlJRCwgdmFsdWUpOworfQogCi0gICAgcmV0dXJuIGdldFByb3BlcnR5VmFsdWVGYWxs
YmFjayhleGVjLCB0aGlzT2JqLCBwcm9wZXJ0eUlEKTsKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBz
dHlsZVByb3BlcnR5R2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTQ1NTU3R5bGVEZWNsYXJhdGlv
biYgdGhpc09iamVjdCwgY29uc3QgQ1NTUHJvcGVydHlJbmZvJiBwcm9wZXJ0eUluZm8pCit7Cisg
ICAgaWYgKHByb3BlcnR5SW5mby5oYWRQaXhlbE9yUG9zUHJlZml4KQorICAgICAgICByZXR1cm4g
c3R5bGVQcm9wZXJ0eUdldHRlclBpeGVsT3JQb3NQcmVmaXgoc3RhdGUsIHRoaXNPYmplY3QsIHBy
b3BlcnR5SW5mby5wcm9wZXJ0eUlEKTsKKyAgICByZXR1cm4gc3R5bGVQcm9wZXJ0eUdldHRlcihz
dGF0ZSwgdGhpc09iamVjdCwgcHJvcGVydHlJbmZvLnByb3BlcnR5SUQpOwogfQogCi1ib29sIEpT
Q1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90RGVsZWdhdGUoRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlJZGVudGlmaWVyLCBQcm9wZXJ0eVNsb3QmIHNs
b3QpCitib29sIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90RGVsZWdh
dGUoRXhlY1N0YXRlKiBzdGF0ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90JiBzbG90KQogewotICAgIENTU1Byb3BlcnR5SW5mbyBwcm9wZXJ0eUluZm8gPSBjc3NQcm9w
ZXJ0eUlERm9ySlNDU1NQcm9wZXJ0eU5hbWUocHJvcGVydHlJZGVudGlmaWVyKTsKKyAgICBhdXRv
IHByb3BlcnR5SW5mbyA9IHBhcnNlSmF2YVNjcmlwdENTU1Byb3BlcnR5TmFtZShwcm9wZXJ0eU5h
bWUpOwogICAgIGlmICghcHJvcGVydHlJbmZvLnByb3BlcnR5SUQpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIGlmIChwcm9wZXJ0eUluZm8uaGFkUGl4ZWxPclBvc1ByZWZpeCkKLSAgICAg
ICAgc2xvdC5zZXRWYWx1ZSh0aGlzLCBEb250RGVsZXRlLCBjc3NQcm9wZXJ0eUdldHRlclBpeGVs
T3JQb3NQcmVmaXgoZXhlYywgdGhpcywgcHJvcGVydHlJbmZvLnByb3BlcnR5SUQpKTsKLSAgICBl
bHNlCi0gICAgICAgIHNsb3Quc2V0VmFsdWUodGhpcywgRG9udERlbGV0ZSwgY3NzUHJvcGVydHlH
ZXR0ZXIoZXhlYywgdGhpcywgcHJvcGVydHlJbmZvLnByb3BlcnR5SUQpKTsKKyAgICBzbG90LnNl
dFZhbHVlKHRoaXMsIERvbnREZWxldGUsIHN0eWxlUHJvcGVydHlHZXR0ZXIoKnN0YXRlLCAqdGhp
cywgcHJvcGVydHlJbmZvKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSlNDU1NTdHls
ZURlY2xhcmF0aW9uOjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYsIGJvb2wmIHB1dFJl
c3VsdCkKK2Jvb2wgSlNDU1NTdHlsZURlY2xhcmF0aW9uOjpwdXREZWxlZ2F0ZShFeGVjU3RhdGUq
IHN0YXRlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmLCBib29sJiBwdXRSZXN1bHQpCiB7Ci0gICAgQ1NTUHJvcGVydHlJbmZvIHByb3Bl
cnR5SW5mbyA9IGNzc1Byb3BlcnR5SURGb3JKU0NTU1Byb3BlcnR5TmFtZShwcm9wZXJ0eU5hbWUp
OworICAgIGF1dG8gcHJvcGVydHlJbmZvID0gcGFyc2VKYXZhU2NyaXB0Q1NTUHJvcGVydHlOYW1l
KHByb3BlcnR5TmFtZSk7CiAgICAgaWYgKCFwcm9wZXJ0eUluZm8ucHJvcGVydHlJRCkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgU3RyaW5nIHByb3BWYWx1ZSA9IHZhbHVlVG9TdHJpbmdU
cmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKGV4ZWMsIHZhbHVlKTsKKyAgICBhdXRvIHByb3BlcnR5
VmFsdWUgPSB2YWx1ZVRvU3RyaW5nVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyhzdGF0ZSwgdmFs
dWUpOwogICAgIGlmIChwcm9wZXJ0eUluZm8uaGFkUGl4ZWxPclBvc1ByZWZpeCkKLSAgICAgICAg
cHJvcFZhbHVlLmFwcGVuZCgicHgiKTsKKyAgICAgICAgcHJvcGVydHlWYWx1ZS5hcHBlbmQoInB4
Iik7CiAKICAgICBib29sIGltcG9ydGFudCA9IGZhbHNlOwogICAgIGlmIChTZXR0aW5nczo6c2hv
dWxkUmVzcGVjdFByaW9yaXR5SW5DU1NBdHRyaWJ1dGVTZXR0ZXJzKCkpIHsKLSAgICAgICAgc2l6
ZV90IGltcG9ydGFudEluZGV4ID0gcHJvcFZhbHVlLmZpbmQoIiFpbXBvcnRhbnQiLCAwLCBmYWxz
ZSk7Ci0gICAgICAgIGlmIChpbXBvcnRhbnRJbmRleCAhPSBub3RGb3VuZCkgeworICAgICAgICBh
dXRvIGltcG9ydGFudEluZGV4ID0gcHJvcGVydHlWYWx1ZS5maW5kSWdub3JpbmdBU0NJSUNhc2Uo
IiFpbXBvcnRhbnQiKTsKKyAgICAgICAgaWYgKGltcG9ydGFudEluZGV4ICYmIGltcG9ydGFudElu
ZGV4ICE9IG5vdEZvdW5kKSB7CiAgICAgICAgICAgICBpbXBvcnRhbnQgPSB0cnVlOwotICAgICAg
ICAgICAgcHJvcFZhbHVlID0gcHJvcFZhbHVlLmxlZnQoaW1wb3J0YW50SW5kZXggLSAxKTsKKyAg
ICAgICAgICAgIHByb3BlcnR5VmFsdWUgPSBwcm9wZXJ0eVZhbHVlLmxlZnQoaW1wb3J0YW50SW5k
ZXggLSAxKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwot
ICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCA9IHN0YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+
KHByb3BlcnR5SW5mby5wcm9wZXJ0eUlEKTsKLSAgICBwdXRSZXN1bHQgPSB3cmFwcGVkKCkuc2V0
UHJvcGVydHlJbnRlcm5hbChwcm9wZXJ0eUlELCBwcm9wVmFsdWUsIGltcG9ydGFudCwgZWMpOwot
ICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7Ci0KKyAgICBhdXRvIHNldFByb3BlcnR5SW50
ZXJuYWxSZXN1bHQgPSB3cmFwcGVkKCkuc2V0UHJvcGVydHlJbnRlcm5hbChwcm9wZXJ0eUluZm8u
cHJvcGVydHlJRCwgcHJvcGVydHlWYWx1ZSwgaW1wb3J0YW50KTsKKyAgICBpZiAoc2V0UHJvcGVy
dHlJbnRlcm5hbFJlc3VsdC5oYXNFeGNlcHRpb24oKSkgeworICAgICAgICBwcm9wYWdhdGVFeGNl
cHRpb24oKnN0YXRlLCBzZXRQcm9wZXJ0eUludGVybmFsUmVzdWx0LnJlbGVhc2VFeGNlcHRpb24o
KSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcHV0UmVzdWx0ID0gc2V0UHJv
cGVydHlJbnRlcm5hbFJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIApAQCAtMzcwLDQyICszNTYsMzcgQEAgSlNWYWx1ZSBKU0NTU1N0eWxlRGVjbGFyYXRp
b246OmdldFByb3BlcnR5Q1NTVmFsdWUoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICBpZiAoVU5MSUtF
TFkoc3RhdGUuYXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd0V4Y2Vw
dGlvbigmc3RhdGUsIHNjb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcigmc3RhdGUp
KTsKIAotICAgIFN0cmluZyBwcm9wZXJ0eU5hbWUgPSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgw
KS50b1dURlN0cmluZygmc3RhdGUpOworICAgIGF1dG8gcHJvcGVydHlOYW1lID0gc3RhdGUudW5j
aGVja2VkQXJndW1lbnQoMCkudG9XVEZTdHJpbmcoJnN0YXRlKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwogCi0gICAgUmVmUHRyPENTU1ZhbHVlPiBjc3NWYWx1
ZSA9IHdyYXBwZWQoKS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKHByb3BlcnR5TmFtZSk7Ci0gICAgaWYg
KCFjc3NWYWx1ZSkKKyAgICBhdXRvIHZhbHVlID0gd3JhcHBlZCgpLmdldFByb3BlcnR5Q1NTVmFs
dWUocHJvcGVydHlOYW1lKTsKKyAgICBpZiAoIXZhbHVlKQogICAgICAgICByZXR1cm4ganNOdWxs
KCk7CiAKLSAgICBnbG9iYWxPYmplY3QoKS0+d29ybGQoKS5tX2Nzc1ZhbHVlUm9vdHMuYWRkKGNz
c1ZhbHVlLmdldCgpLCByb290KCZ3cmFwcGVkKCkpKTsgLy8gQmFsYW5jZWQgYnkgSlNDU1NWYWx1
ZU93bmVyOjpmaW5hbGl6ZSgpLgotICAgIHJldHVybiB0b0pTKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0
KCksICpjc3NWYWx1ZSk7CisgICAgZ2xvYmFsT2JqZWN0KCktPndvcmxkKCkubV9jc3NWYWx1ZVJv
b3RzLmFkZCh2YWx1ZS5nZXQoKSwgcm9vdCgmd3JhcHBlZCgpKSk7IC8vIEJhbGFuY2VkIGJ5IEpT
Q1NTVmFsdWVPd25lcjo6ZmluYWxpemUoKS4KKyAgICByZXR1cm4gdG9KUygmc3RhdGUsIGdsb2Jh
bE9iamVjdCgpLCAqdmFsdWUpOwogfQogCi12b2lkIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0
T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKK3ZvaWQg
SlNDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmpl
Y3QsIEV4ZWNTdGF0ZSogc3RhdGUsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBF
bnVtZXJhdGlvbk1vZGUgbW9kZSkKIHsKLSAgICBKU0NTU1N0eWxlRGVjbGFyYXRpb24qIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8SlNDU1NTdHlsZURlY2xhcmF0aW9uKj4ob2JqZWN0KTsKLSAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7Ci0KLSAgICB1bnNpZ25l
ZCBsZW5ndGggPSB0aGlzT2JqZWN0LT53cmFwcGVkKCkubGVuZ3RoKCk7Ci0gICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQotICAgICAgICBwcm9wZXJ0eU5hbWVzLmFkZChJ
ZGVudGlmaWVyOjpmcm9tKGV4ZWMsIGkpKTsKLQotICAgIHN0YXRpYyBJZGVudGlmaWVyKiBwcm9w
ZXJ0eUlkZW50aWZpZXJzID0gMDsKLSAgICBpZiAoIXByb3BlcnR5SWRlbnRpZmllcnMpIHsKLSAg
ICAgICAgVmVjdG9yPFN0cmluZywgbnVtQ1NTUHJvcGVydGllcz4ganNQcm9wZXJ0eU5hbWVzOwot
ICAgICAgICBmb3IgKGludCBpZCA9IGZpcnN0Q1NTUHJvcGVydHk7IGlkIDwgZmlyc3RDU1NQcm9w
ZXJ0eSArIG51bUNTU1Byb3BlcnRpZXM7ICsraWQpCi0gICAgICAgICAgICBqc1Byb3BlcnR5TmFt
ZXMuYXBwZW5kKGdldEpTUHJvcGVydHlOYW1lKHN0YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+KGlk
KSkpOwotICAgICAgICBzdGQ6OnNvcnQoanNQcm9wZXJ0eU5hbWVzLmJlZ2luKCksIGpzUHJvcGVy
dHlOYW1lcy5lbmQoKSwgV1RGOjpjb2RlUG9pbnRDb21wYXJlTGVzc1RoYW4pOwotCi0gICAgICAg
IHByb3BlcnR5SWRlbnRpZmllcnMgPSBuZXcgSWRlbnRpZmllcltudW1DU1NQcm9wZXJ0aWVzXTsK
KyAgICBzdGF0aWMgY29uc3QgSWRlbnRpZmllciogY29uc3QgY3NzUHJvcGVydHlOYW1lcyA9IFtz
dGF0ZV0geworICAgICAgICBTdHJpbmcgbmFtZXNbbnVtQ1NTUHJvcGVydGllc107CiAgICAgICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgbnVtQ1NTUHJvcGVydGllczsgKytpKQotICAgICAgICAgICAg
cHJvcGVydHlJZGVudGlmaWVyc1tpXSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywganNQ
cm9wZXJ0eU5hbWVzW2ldKTsKLSAgICB9CisgICAgICAgICAgICBuYW1lc1tpXSA9IGdldEpTUHJv
cGVydHlOYW1lKHN0YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+KGZpcnN0Q1NTUHJvcGVydHkgKyBp
KSk7CisgICAgICAgIHN0ZDo6c29ydCgmbmFtZXNbMF0sICZuYW1lc1tudW1DU1NQcm9wZXJ0aWVz
XSwgV1RGOjpjb2RlUG9pbnRDb21wYXJlTGVzc1RoYW4pOworICAgICAgICBhdXRvKiBpZGVudGlm
aWVycyA9IG5ldyBJZGVudGlmaWVyW251bUNTU1Byb3BlcnRpZXNdOworICAgICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IG51bUNTU1Byb3BlcnRpZXM7ICsraSkKKyAgICAgICAgICAgIGlkZW50aWZp
ZXJzW2ldID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhzdGF0ZSwgbmFtZXNbaV0pOworICAgICAg
ICByZXR1cm4gaWRlbnRpZmllcnM7CisgICAgfSgpOwogCisgICAgdW5zaWduZWQgbGVuZ3RoID0g
anNDYXN0PEpTQ1NTU3R5bGVEZWNsYXJhdGlvbio+KG9iamVjdCktPndyYXBwZWQoKS5sZW5ndGgo
KTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCisgICAgICAgIHBy
b3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb20oc3RhdGUsIGkpKTsKICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IG51bUNTU1Byb3BlcnRpZXM7ICsraSkKLSAgICAgICAgcHJvcGVydHlOYW1l
cy5hZGQocHJvcGVydHlJZGVudGlmaWVyc1tpXSk7CisgICAgICAgIHByb3BlcnR5TmFtZXMuYWRk
KGNzc1Byb3BlcnR5TmFtZXNbaV0pOwogCi0gICAgQmFzZTo6Z2V0T3duUHJvcGVydHlOYW1lcyh0
aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKKyAgICBCYXNlOjpnZXRPd25Q
cm9wZXJ0eU5hbWVzKG9iamVjdCwgc3RhdGUsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUJpbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmlu
ZGluZy5oCmluZGV4IDgzZDMwNjFkZjZhNmYxY2E3NWVmODdlMGI3ZmM3YWIxNGMxMTQxZTUuLmZl
M2NhNTY0ZWFmM2NkY2M3ODg0MWI5ODlkZWQ0MmM5YTZjMjFkYzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCkBAIC05NjUsNCArOTY1LDEzIEBAIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+IGlubGluZSBKU0M6OkpTVmFsdWUgdG9KU051bWJlcihKU0M6OkV4ZWNTdGF0
ZSYgc3RhdGUsIEpTQzo6CiAgICAgcmV0dXJuIEpTQzo6anNOdW1iZXIodmFsdWUucmVsZWFzZVJl
dHVyblZhbHVlKCkpOwogfQogCitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlNTdHJpbmcoSlNDOjpF
eGVjU3RhdGUmIHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUsIEV4Y2VwdGlvbk9y
PFN0cmluZz4mJiB2YWx1ZSkKK3sKKyAgICBpZiAoVU5MSUtFTFkodmFsdWUuaGFzRXhjZXB0aW9u
KCkpKSB7CisgICAgICAgIHByb3BhZ2F0ZUV4Y2VwdGlvbihzdGF0ZSwgdGhyb3dTY29wZSwgdmFs
dWUucmVsZWFzZUV4Y2VwdGlvbigpKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisgICAg
cmV0dXJuIEpTQzo6anNTdHJpbmdXaXRoQ2FjaGUoJnN0YXRlLCB2YWx1ZS5yZWxlYXNlUmV0dXJu
VmFsdWUoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvZ29iamVjdC1nZW5lcmF0ZS1oZWFkZXJzLnBsIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9nb2JqZWN0LWdlbmVyYXRlLWhlYWRlcnMu
cGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlmMmM2OWFjZjA1MzBiYWMxOTk4MGEz
NWZmMWZmMGQwZDBlZWFiZDYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9nb2JqZWN0LWdlbmVyYXRl
LWhlYWRlcnMucGwKKysrIC9kZXYvbnVsbApAQCAtMSwxMzEgKzAsMCBAQAotIyEvdXNyL2Jpbi9w
ZXJsIC13Ci0jCi0jIENvcHlyaWdodCAoQykgMjAwOSBBZGFtIERpbmdsZSA8YWRhbUB5b3JiYS5v
cmc+Ci0jIENvcHlyaWdodCAoQykgMjAxNSBJZ2FsaWEgUy5MLgotIwotIyBUaGlzIGZpbGUgaXMg
cGFydCBvZiBXZWJLaXQKLSMgCi0jIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSMgTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0jIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSMgCi0j
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAotIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgotIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotIyBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSMgCi0jIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSMgYWludCB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bwotIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAotIyBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSMgCi0K
LW15ICRjbGFzc2xpc3QgPSA8U1RESU4+OwotY2hvbXAoJGNsYXNzbGlzdCk7Ci1teSBAY2xhc3Nl
cyA9IHNwbGl0IC8gLywgJGNsYXNzbGlzdDsKLUBjbGFzc2VzID0gc29ydCBAY2xhc3NlczsKLQot
cHJpbnQgPDxFT0Y7Ci0vKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291
cmNlIHByb2plY3QuCi0gICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdvYmplY3Qt
Z2VuZXJhdGUtaGVhZGVycy5wbC4gIERPIE5PVCBNT0RJRlkhCi0gICAKLSAgIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
Ci0gICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKLSAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
LSAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0g
ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCi0gICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotRU9GCi0KLW15ICRvdXRUeXBlID0gJEFS
R1ZbMF07Ci1teSAkaGVhZGVyOwotaWYgKCRvdXRUeXBlIGVxICJkZWZpbmVzIikgewotICAgICRo
ZWFkZXIgPSAid2Via2l0ZG9tZGVmaW5lc19oIjsKLX0gZWxzaWYgKCRvdXRUeXBlIGVxICJkZWZp
bmVzLXVuc3RhYmxlIikgewotICAgICRoZWFkZXIgPSAid2Via2l0ZG9tZGVmaW5lc191bnN0YWJs
ZV9oIjsKLX0gZWxzaWYgKCRvdXRUeXBlIGVxICJnZG9tIikgewotICAgICRoZWFkZXIgPSAid2Vi
a2l0ZG9tX2giOwotfSBlbHNpZiAoJG91dFR5cGUgZXEgImF1dG9jbGVhbnVwcyIpIHsKLSAgICAk
aGVhZGVyID0gIndlYmtpdGRvbWF1dG9jbGVhbnVwc19oIjsKLX0gZWxzZSB7Ci0gICAgZGllICJ1
bmtub3duIG91dHB1dCB0eXBlIjsKLX0KLQotcHJpbnQgIiNpZm5kZWYgJHtoZWFkZXJ9XG4iOwot
cHJpbnQgIiNkZWZpbmUgJHtoZWFkZXJ9XG4iOwotcHJpbnQgIlxuIjsKLQotaWYgKCRvdXRUeXBl
IGVxICJkZWZpbmVzIikgewotICAgIHByaW50ICIjaW5jbHVkZSA8Z2xpYi5oPlxuXG4iOwotICAg
IHByaW50ICIjaWZkZWYgR19PU19XSU4zMlxuIjsKLSAgICBwcmludCAiICAgICNpZmRlZiBCVUlM
RElOR19XRUJLSVRcbiI7Ci0gICAgcHJpbnQgIiAgICAgICAgI2RlZmluZSBXRUJLSVRfQVBJIF9f
ZGVjbHNwZWMoZGxsZXhwb3J0KVxuIjsKLSAgICBwcmludCAiICAgICNlbHNlXG4iOwotICAgIHBy
aW50ICIgICAgICAgICNkZWZpbmUgV0VCS0lUX0FQSSBfX2RlY2xzcGVjKGRsbGltcG9ydClcbiI7
Ci0gICAgcHJpbnQgIiAgICAjZW5kaWZcbiI7Ci0gICAgcHJpbnQgIiNlbHNlXG4iOwotICAgIHBy
aW50ICIgICAgI2RlZmluZSBXRUJLSVRfQVBJIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoXCJk
ZWZhdWx0XCIpKSlcbiI7Ci0gICAgcHJpbnQgIiNlbmRpZlxuXG4iOwotICAgIHByaW50ICIjZGVm
aW5lIFdFQktJVF9ERVBSRUNBVEVEIFdFQktJVF9BUEkgR19ERVBSRUNBVEVEXG4iOwotICAgIHBy
aW50ICIjZGVmaW5lIFdFQktJVF9ERVBSRUNBVEVEX0ZPUihmKSBXRUJLSVRfQVBJIEdfREVQUkVD
QVRFRF9GT1IoZilcbiI7Ci0gICAgcHJpbnQgIlxuIjsKLSAgICBwcmludCAiI2lmbmRlZiBXRUJL
SVRfQVBJXG4iOwotICAgIHByaW50ICIgICAgI2RlZmluZSBXRUJLSVRfQVBJXG4iOwotICAgIHBy
aW50ICIjZW5kaWZcbiI7Ci0KLSAgICBmb3JlYWNoIG15ICRjbGFzcyAoQGNsYXNzZXMpIHsKLSAg
ICAgICAgaWYgKCRjbGFzcyBlcSAiRXZlbnRUYXJnZXQiIHx8ICRjbGFzcyBlcSAiTm9kZUZpbHRl
ciIgfHwgJGNsYXNzIGVxICJYUGF0aE5TUmVzb2x2ZXIiKSB7Ci0gICAgICAgICAgICBwcmludCAi
dHlwZWRlZiBzdHJ1Y3QgX1dlYktpdERPTSR7Y2xhc3N9IFdlYktpdERPTSR7Y2xhc3N9O1xuIjsK
LSAgICAgICAgICAgIHByaW50ICJ0eXBlZGVmIHN0cnVjdCBfV2ViS2l0RE9NJHtjbGFzc31JZmFj
ZSBXZWJLaXRET00ke2NsYXNzfUlmYWNlO1xuIjsKLSAgICAgICAgICAgIHByaW50ICJcbiI7Ci0g
ICAgICAgIH0gZWxzaWYgKCRjbGFzcyBuZSAiRGVwcmVjYXRlZCIgJiYgJGNsYXNzIG5lICJDdXN0
b20iKSB7Ci0gICAgICAgICAgICBwcmludCAidHlwZWRlZiBzdHJ1Y3QgX1dlYktpdERPTSR7Y2xh
c3N9IFdlYktpdERPTSR7Y2xhc3N9O1xuIjsKLSAgICAgICAgICAgIHByaW50ICJ0eXBlZGVmIHN0
cnVjdCBfV2ViS2l0RE9NJHtjbGFzc31DbGFzcyBXZWJLaXRET00ke2NsYXNzfUNsYXNzO1xuIjsK
LSAgICAgICAgICAgIHByaW50ICJcbiI7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcHJpbnQgIiNp
bmNsdWRlIDx3ZWJraXRkb20vd2Via2l0ZG9tYXV0b2NsZWFudXBzLmg+XG4iOwotfSBlbHNpZiAo
JG91dFR5cGUgZXEgImRlZmluZXMtdW5zdGFibGUiKSB7Ci0gICAgcHJpbnQgIiNpbmNsdWRlIDx3
ZWJraXRkb20vd2Via2l0ZG9tZGVmaW5lcy5oPlxuXG4iOwotICAgIHByaW50ICIjaWZkZWYgV0VC
S0lUX0RPTV9VU0VfVU5TVEFCTEVfQVBJXG5cbiI7Ci0KLSAgICBmb3JlYWNoIG15ICRjbGFzcyAo
QGNsYXNzZXMpIHsKLSAgICAgICAgcHJpbnQgInR5cGVkZWYgc3RydWN0IF9XZWJLaXRET00ke2Ns
YXNzfSBXZWJLaXRET00ke2NsYXNzfTtcbiI7Ci0gICAgICAgIHByaW50ICJ0eXBlZGVmIHN0cnVj
dCBfV2ViS2l0RE9NJHtjbGFzc31DbGFzcyBXZWJLaXRET00ke2NsYXNzfUNsYXNzO1xuIjsKLSAg
ICAgICAgcHJpbnQgIlxuIjsKLSAgICB9Ci0KLSAgICBwcmludCAiI2luY2x1ZGUgPHdlYmtpdGRv
bS93ZWJraXRkb21hdXRvY2xlYW51cHMtdW5zdGFibGUuaD5cblxuIjsKLSAgICBwcmludCAiI2Vu
ZGlmIC8qIFdFQktJVF9ET01fVVNFX1VOU1RBQkxFX0FQSSAqL1xuXG4iOwotfSBlbHNpZiAoJG91
dFR5cGUgZXEgImdkb20iKSB7Ci0gICAgcHJpbnQgIiNkZWZpbmUgX19XRUJLSVRET01fSF9JTlNJ
REVfX1xuXG4iOwotICAgIGZvcmVhY2ggbXkgJGNsYXNzIChAY2xhc3NlcykgewotICAgICAgICBw
cmludCAiI2luY2x1ZGUgPHdlYmtpdGRvbS9XZWJLaXRET00ke2NsYXNzfS5oPlxuIjsKLSAgICB9
Ci0gICAgcHJpbnQgIlxuI3VuZGVmIF9fV0VCS0lURE9NX0hfSU5TSURFX19cbiI7Ci19IGVsc2lm
ICgkb3V0VHlwZSBlcSAiYXV0b2NsZWFudXBzIikgewotICAgIHByaW50ICIjaW5jbHVkZSA8Z2xp
Yi1vYmplY3QuaD5cblxuIjsKLSAgICBwcmludCAiI2lmZGVmIEdfREVGSU5FX0FVVE9QVFJfQ0xF
QU5VUF9GVU5DXG4iOwotICAgIHByaW50ICIjaWZuZGVmIF9fR0lfU0NBTk5FUl9fXG5cbiI7Ci0g
ICAgZm9yZWFjaCBteSAkY2xhc3MgKEBjbGFzc2VzKSB7Ci0gICAgICAgIGlmICgkY2xhc3MgbmUg
IkRlcHJlY2F0ZWQiICYmICRjbGFzcyBuZSAiQ3VzdG9tIikgewotICAgICAgICAgICAgcHJpbnQg
IkdfREVGSU5FX0FVVE9QVFJfQ0xFQU5VUF9GVU5DIChXZWJLaXRET00ke2NsYXNzfSwgZ19vYmpl
Y3RfdW5yZWYpXG4iOwotICAgICAgICB9Ci0gICAgfQotICAgIHByaW50ICJcbiNlbmRpZlxuIjsK
LSAgICBwcmludCAiI2VuZGlmXG4iOwotfQotCi1wcmludCAiXG4iOwotcHJpbnQgIiNlbmRpZlxu
IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9CYXNpY1NoYXBlRnVuY3Rpb25zLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9CYXNpY1NoYXBlRnVuY3Rpb25zLmNwcAppbmRleCA0YzQ3
ZTEzMTE2ZGViZDE0ODAzNzgxODFhNmNlNDcxZjUzZWFiYjE2Li4wODg2NGZhMWE2OGU0MWFjN2Vk
Y2RmZGU3ZGI0YWFkMGIxZjQwZTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQmFz
aWNTaGFwZUZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0Jhc2ljU2hhcGVG
dW5jdGlvbnMuY3BwCkBAIC0xNDYsNyArMTQ2LDcgQEAgc3RhdGljIExlbmd0aFNpemUgY29udmVy
dFRvTGVuZ3RoU2l6ZShjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW8K
ICAgICBpZiAoIXZhbHVlKQogICAgICAgICByZXR1cm4gTGVuZ3RoU2l6ZShMZW5ndGgoMCwgRml4
ZWQpLCBMZW5ndGgoMCwgRml4ZWQpKTsKIAotICAgIFBhaXIqIHBhaXIgPSB2YWx1ZS0+Z2V0UGFp
clZhbHVlKCk7CisgICAgUGFpciogcGFpciA9IHZhbHVlLT5wYWlyVmFsdWUoKTsKICAgICByZXR1
cm4gTGVuZ3RoU2l6ZShjb252ZXJ0VG9MZW5ndGgoY29udmVyc2lvbkRhdGEsIHBhaXItPmZpcnN0
KCkpLCBjb252ZXJ0VG9MZW5ndGgoY29udmVyc2lvbkRhdGEsIHBhaXItPnNlY29uZCgpKSk7CiB9
CiAKQEAgLTE1OSw5ICsxNTksOSBAQCBzdGF0aWMgQmFzaWNTaGFwZUNlbnRlckNvb3JkaW5hdGUg
Y29udmVydFRvQ2VudGVyQ29vcmRpbmF0ZShjb25zdCBDU1NUb0xlbmd0aENvbgogICAgIGlmICgh
dmFsdWUpCiAgICAgICAgIGtleXdvcmQgPSBDU1NWYWx1ZUNlbnRlcjsKICAgICBlbHNlIGlmICh2
YWx1ZS0+aXNWYWx1ZUlEKCkpCi0gICAgICAgIGtleXdvcmQgPSB2YWx1ZS0+Z2V0VmFsdWVJRCgp
OwotICAgIGVsc2UgaWYgKFBhaXIqIHBhaXIgPSB2YWx1ZS0+Z2V0UGFpclZhbHVlKCkpIHsKLSAg
ICAgICAga2V5d29yZCA9IHBhaXItPmZpcnN0KCktPmdldFZhbHVlSUQoKTsKKyAgICAgICAga2V5
d29yZCA9IHZhbHVlLT52YWx1ZUlEKCk7CisgICAgZWxzZSBpZiAoUGFpciogcGFpciA9IHZhbHVl
LT5wYWlyVmFsdWUoKSkgeworICAgICAgICBrZXl3b3JkID0gcGFpci0+Zmlyc3QoKS0+dmFsdWVJ
RCgpOwogICAgICAgICBvZmZzZXQgPSBjb252ZXJ0VG9MZW5ndGgoY29udmVyc2lvbkRhdGEsIHBh
aXItPnNlY29uZCgpKTsKICAgICB9IGVsc2UKICAgICAgICAgb2Zmc2V0ID0gY29udmVydFRvTGVu
Z3RoKGNvbnZlcnNpb25EYXRhLCB2YWx1ZSk7CkBAIC0xOTQsNyArMTk0LDcgQEAgc3RhdGljIEJh
c2ljU2hhcGVSYWRpdXMgY3NzVmFsdWVUb0Jhc2ljU2hhcGVSYWRpdXMoY29uc3QgQ1NTVG9MZW5n
dGhDb252ZXJzaW9uRGEKICAgICAgICAgcmV0dXJuIEJhc2ljU2hhcGVSYWRpdXMoQmFzaWNTaGFw
ZVJhZGl1czo6Q2xvc2VzdFNpZGUpOwogCiAgICAgaWYgKHJhZGl1cy0+aXNWYWx1ZUlEKCkpIHsK
LSAgICAgICAgc3dpdGNoIChyYWRpdXMtPmdldFZhbHVlSUQoKSkgeworICAgICAgICBzd2l0Y2gg
KHJhZGl1cy0+dmFsdWVJRCgpKSB7CiAgICAgICAgIGNhc2UgQ1NTVmFsdWVDbG9zZXN0U2lkZToK
ICAgICAgICAgICAgIHJldHVybiBCYXNpY1NoYXBlUmFkaXVzKEJhc2ljU2hhcGVSYWRpdXM6OkNs
b3Nlc3RTaWRlKTsKICAgICAgICAgY2FzZSBDU1NWYWx1ZUZhcnRoZXN0U2lkZToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTQmFzaWNTaGFwZXMuY3BwCmluZGV4IDdlOWNlNzJlZTkxZGRhYjdlY2UwZTk0YmJi
NDg3YTIzMGI2NjhkNTkuLmU0MTI1OTViOGY2Njk1NGNmMjA0ZjRjNmI3YjQyMmYxYWU0MDI1Mzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmNwcApAQCAtNDUsOCArNDUsOCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBTdHJpbmcgc2VyaWFsaXplUG9zaXRpb25PZmZz
ZXQoY29uc3QgUGFpciYgb2Zmc2V0LCBjb25zdCBQYWlyJiBvdGhlcikKIHsKLSAgICBpZiAoKG9m
ZnNldC5maXJzdCgpLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVMZWZ0ICYmIG90aGVyLmZpcnN0
KCktPmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZVRvcCkKLSAgICAgICAgfHwgKG9mZnNldC5maXJz
dCgpLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVUb3AgJiYgb3RoZXIuZmlyc3QoKS0+Z2V0VmFs
dWVJRCgpID09IENTU1ZhbHVlTGVmdCkpCisgICAgaWYgKChvZmZzZXQuZmlyc3QoKS0+dmFsdWVJ
RCgpID09IENTU1ZhbHVlTGVmdCAmJiBvdGhlci5maXJzdCgpLT52YWx1ZUlEKCkgPT0gQ1NTVmFs
dWVUb3ApCisgICAgICAgIHx8IChvZmZzZXQuZmlyc3QoKS0+dmFsdWVJRCgpID09IENTU1ZhbHVl
VG9wICYmIG90aGVyLmZpcnN0KCktPnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUxlZnQpKQogICAgICAg
ICByZXR1cm4gb2Zmc2V0LnNlY29uZCgpLT5jc3NUZXh0KCk7CiAgICAgcmV0dXJuIG9mZnNldC5j
c3NUZXh0KCk7CiB9CkBAIC01OSw5ICs1OSw5IEBAIHN0YXRpYyBSZWY8Q1NTUHJpbWl0aXZlVmFs
dWU+IGJ1aWxkU2VyaWFsaXphYmxlUG9zaXRpb25PZmZzZXQoQ1NTUHJpbWl0aXZlVmFsdWUqCiAg
ICAgaWYgKCFvZmZzZXQpCiAgICAgICAgIHNpZGUgPSBDU1NWYWx1ZUNlbnRlcjsKICAgICBlbHNl
IGlmIChvZmZzZXQtPmlzVmFsdWVJRCgpKQotICAgICAgICBzaWRlID0gb2Zmc2V0LT5nZXRWYWx1
ZUlEKCk7Ci0gICAgZWxzZSBpZiAoUGFpciogcGFpciA9IG9mZnNldC0+Z2V0UGFpclZhbHVlKCkp
IHsKLSAgICAgICAgc2lkZSA9IHBhaXItPmZpcnN0KCktPmdldFZhbHVlSUQoKTsKKyAgICAgICAg
c2lkZSA9IG9mZnNldC0+dmFsdWVJRCgpOworICAgIGVsc2UgaWYgKFBhaXIqIHBhaXIgPSBvZmZz
ZXQtPnBhaXJWYWx1ZSgpKSB7CisgICAgICAgIHNpZGUgPSBwYWlyLT5maXJzdCgpLT52YWx1ZUlE
KCk7CiAgICAgICAgIGFtb3VudCA9IHBhaXItPnNlY29uZCgpOwogICAgIH0gZWxzZQogICAgICAg
ICBhbW91bnQgPSBvZmZzZXQ7CkBAIC03Myw4ICs3Myw4IEBAIHN0YXRpYyBSZWY8Q1NTUHJpbWl0
aXZlVmFsdWU+IGJ1aWxkU2VyaWFsaXphYmxlUG9zaXRpb25PZmZzZXQoQ1NTUHJpbWl0aXZlVmFs
dWUqCiAgICAgfSBlbHNlIGlmICgoc2lkZSA9PSBDU1NWYWx1ZVJpZ2h0IHx8IHNpZGUgPT0gQ1NT
VmFsdWVCb3R0b20pCiAgICAgICAgICYmIGFtb3VudC0+aXNQZXJjZW50YWdlKCkpIHsKICAgICAg
ICAgc2lkZSA9IGRlZmF1bHRTaWRlOwotICAgICAgICBhbW91bnQgPSBjc3NWYWx1ZVBvb2wuY3Jl
YXRlVmFsdWUoTGVuZ3RoKDEwMCAtIGFtb3VudC0+Z2V0RmxvYXRWYWx1ZSgpLCBQZXJjZW50KSk7
Ci0gICAgfSBlbHNlIGlmIChhbW91bnQtPmlzTGVuZ3RoKCkgJiYgIWFtb3VudC0+Z2V0RmxvYXRW
YWx1ZSgpKSB7CisgICAgICAgIGFtb3VudCA9IGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShMZW5n
dGgoMTAwIC0gYW1vdW50LT5mbG9hdFZhbHVlKCksIFBlcmNlbnQpKTsKKyAgICB9IGVsc2UgaWYg
KGFtb3VudC0+aXNMZW5ndGgoKSAmJiAhYW1vdW50LT5mbG9hdFZhbHVlKCkpIHsKICAgICAgICAg
aWYgKHNpZGUgPT0gQ1NTVmFsdWVSaWdodCB8fCBzaWRlID09IENTU1ZhbHVlQm90dG9tKQogICAg
ICAgICAgICAgYW1vdW50ID0gY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKExlbmd0aCgxMDAsIFBl
cmNlbnQpKTsKICAgICAgICAgZWxzZQpAQCAtMTE0LDEyICsxMTQsMTIgQEAgU3RyaW5nIENTU0Jh
c2ljU2hhcGVDaXJjbGU6OmNzc1RleHQoKSBjb25zdAogICAgIFJlZjxDU1NQcmltaXRpdmVWYWx1
ZT4gbm9ybWFsaXplZENZID0gYnVpbGRTZXJpYWxpemFibGVQb3NpdGlvbk9mZnNldChtX2NlbnRl
clkuZ2V0KCksIENTU1ZhbHVlVG9wKTsKIAogICAgIFN0cmluZyByYWRpdXM7Ci0gICAgaWYgKG1f
cmFkaXVzICYmIG1fcmFkaXVzLT5nZXRWYWx1ZUlEKCkgIT0gQ1NTVmFsdWVDbG9zZXN0U2lkZSkK
KyAgICBpZiAobV9yYWRpdXMgJiYgbV9yYWRpdXMtPnZhbHVlSUQoKSAhPSBDU1NWYWx1ZUNsb3Nl
c3RTaWRlKQogICAgICAgICByYWRpdXMgPSBtX3JhZGl1cy0+Y3NzVGV4dCgpOwogCiAgICAgcmV0
dXJuIGJ1aWxkQ2lyY2xlU3RyaW5nKHJhZGl1cywKLSAgICAgICAgc2VyaWFsaXplUG9zaXRpb25P
ZmZzZXQoKm5vcm1hbGl6ZWRDWC0+Z2V0UGFpclZhbHVlKCksICpub3JtYWxpemVkQ1ktPmdldFBh
aXJWYWx1ZSgpKSwKLSAgICAgICAgc2VyaWFsaXplUG9zaXRpb25PZmZzZXQoKm5vcm1hbGl6ZWRD
WS0+Z2V0UGFpclZhbHVlKCksICpub3JtYWxpemVkQ1gtPmdldFBhaXJWYWx1ZSgpKSk7CisgICAg
ICAgIHNlcmlhbGl6ZVBvc2l0aW9uT2Zmc2V0KCpub3JtYWxpemVkQ1gtPnBhaXJWYWx1ZSgpLCAq
bm9ybWFsaXplZENZLT5wYWlyVmFsdWUoKSksCisgICAgICAgIHNlcmlhbGl6ZVBvc2l0aW9uT2Zm
c2V0KCpub3JtYWxpemVkQ1ktPnBhaXJWYWx1ZSgpLCAqbm9ybWFsaXplZENYLT5wYWlyVmFsdWUo
KSkpOwogfQogCiBib29sIENTU0Jhc2ljU2hhcGVDaXJjbGU6OmVxdWFscyhjb25zdCBDU1NCYXNp
Y1NoYXBlJiBzaGFwZSkgY29uc3QKQEAgLTE3MywxMSArMTczLDExIEBAIFN0cmluZyBDU1NCYXNp
Y1NoYXBlRWxsaXBzZTo6Y3NzVGV4dCgpIGNvbnN0CiAgICAgU3RyaW5nIHJhZGl1c1g7CiAgICAg
U3RyaW5nIHJhZGl1c1k7CiAgICAgaWYgKG1fcmFkaXVzWCkgewotICAgICAgICBib29sIHNob3Vs
ZFNlcmlhbGl6ZVJhZGl1c1hWYWx1ZSA9IG1fcmFkaXVzWC0+Z2V0VmFsdWVJRCgpICE9IENTU1Zh
bHVlQ2xvc2VzdFNpZGU7CisgICAgICAgIGJvb2wgc2hvdWxkU2VyaWFsaXplUmFkaXVzWFZhbHVl
ID0gbV9yYWRpdXNYLT52YWx1ZUlEKCkgIT0gQ1NTVmFsdWVDbG9zZXN0U2lkZTsKICAgICAgICAg
Ym9vbCBzaG91bGRTZXJpYWxpemVSYWRpdXNZVmFsdWUgPSBmYWxzZTsKIAogICAgICAgICBpZiAo
bV9yYWRpdXNZKSB7Ci0gICAgICAgICAgICBzaG91bGRTZXJpYWxpemVSYWRpdXNZVmFsdWUgPSBt
X3JhZGl1c1ktPmdldFZhbHVlSUQoKSAhPSBDU1NWYWx1ZUNsb3Nlc3RTaWRlOworICAgICAgICAg
ICAgc2hvdWxkU2VyaWFsaXplUmFkaXVzWVZhbHVlID0gbV9yYWRpdXNZLT52YWx1ZUlEKCkgIT0g
Q1NTVmFsdWVDbG9zZXN0U2lkZTsKICAgICAgICAgICAgIGlmIChzaG91bGRTZXJpYWxpemVSYWRp
dXNZVmFsdWUpCiAgICAgICAgICAgICAgICAgcmFkaXVzWSA9IG1fcmFkaXVzWS0+Y3NzVGV4dCgp
OwogICAgICAgICB9CkBAIC0xODUsOCArMTg1LDggQEAgU3RyaW5nIENTU0Jhc2ljU2hhcGVFbGxp
cHNlOjpjc3NUZXh0KCkgY29uc3QKICAgICAgICAgICAgIHJhZGl1c1ggPSBtX3JhZGl1c1gtPmNz
c1RleHQoKTsKICAgICB9CiAgICAgcmV0dXJuIGJ1aWxkRWxsaXBzZVN0cmluZyhyYWRpdXNYLCBy
YWRpdXNZLAotICAgICAgICBzZXJpYWxpemVQb3NpdGlvbk9mZnNldCgqbm9ybWFsaXplZENYLT5n
ZXRQYWlyVmFsdWUoKSwgKm5vcm1hbGl6ZWRDWS0+Z2V0UGFpclZhbHVlKCkpLAotICAgICAgICBz
ZXJpYWxpemVQb3NpdGlvbk9mZnNldCgqbm9ybWFsaXplZENZLT5nZXRQYWlyVmFsdWUoKSwgKm5v
cm1hbGl6ZWRDWC0+Z2V0UGFpclZhbHVlKCkpKTsKKyAgICAgICAgc2VyaWFsaXplUG9zaXRpb25P
ZmZzZXQoKm5vcm1hbGl6ZWRDWC0+cGFpclZhbHVlKCksICpub3JtYWxpemVkQ1ktPnBhaXJWYWx1
ZSgpKSwKKyAgICAgICAgc2VyaWFsaXplUG9zaXRpb25PZmZzZXQoKm5vcm1hbGl6ZWRDWS0+cGFp
clZhbHVlKCksICpub3JtYWxpemVkQ1gtPnBhaXJWYWx1ZSgpKSk7CiB9CiAKIGJvb2wgQ1NTQmFz
aWNTaGFwZUVsbGlwc2U6OmVxdWFscyhjb25zdCBDU1NCYXNpY1NoYXBlJiBzaGFwZSkgY29uc3QK
QEAgLTM4Myw3ICszODMsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgdXBkYXRlQ29ybmVyUmFkaXVz
V2lkdGhBbmRIZWlnaHQoQ1NTUHJpbWl0aXZlVmFsdWUqIGNvcm5lciwgUwogICAgIGlmICghY29y
bmVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBQYWlyKiByYWRpdXMgPSBjb3JuZXItPmdldFBh
aXJWYWx1ZSgpOworICAgIFBhaXIqIHJhZGl1cyA9IGNvcm5lci0+cGFpclZhbHVlKCk7CiAgICAg
d2lkdGggPSByYWRpdXMtPmZpcnN0KCkgPyByYWRpdXMtPmZpcnN0KCktPmNzc1RleHQoKSA6IFN0
cmluZygiMCIpOwogICAgIGlmIChyYWRpdXMtPnNlY29uZCgpKQogICAgICAgICBoZWlnaHQgPSBy
YWRpdXMtPnNlY29uZCgpLT5jc3NUZXh0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQm9y
ZGVySW1hZ2VTbGljZVZhbHVlLmgKaW5kZXggMDg3MmJkZTRiNjUyYzMzYWM0ZTRmODA5ODdiNzhi
NmY1YWQ0M2U1OS4uMjQwMmYyYzc4Y2NhZWUzYzU2ZWYwOGViNGM1NDI0NmM3ZGEzNGU1ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuaApAQCAtNDEs
NyArNDEsNyBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgY3VzdG9tQ1NTVGV4dCgpIGNvbnN0Owog
Ci0gICAgUXVhZCogc2xpY2VzKCkgY29uc3QgeyByZXR1cm4gbV9zbGljZXMgPyBtX3NsaWNlcy0+
Z2V0UXVhZFZhbHVlKCkgOiBudWxscHRyOyB9CisgICAgUXVhZCogc2xpY2VzKCkgY29uc3QgeyBy
ZXR1cm4gbV9zbGljZXMgPyBtX3NsaWNlcy0+cXVhZFZhbHVlKCkgOiBudWxscHRyOyB9CiAKICAg
ICBib29sIGVxdWFscyhjb25zdCBDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUmKSBjb25zdDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwCmluZGV4IDJmMzIxNjcz
YWE0NWE4MDVjYWFkYWU2MjAwMjRjMDFmMTY4NGFjMDUuLjU0ZTM0YjU4ZjAxZWY5M2NlYzZhNjRk
ODI3NTVjOWY5NDY2ZjI2MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxj
dWxhdGlvblZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25W
YWx1ZS5jcHAKQEAgLTIxNyw3ICsyMTcsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGJvb2wg
aXNaZXJvKCkgY29uc3QgZmluYWwKICAgICB7Ci0gICAgICAgIHJldHVybiAhbV92YWx1ZS0+Z2V0
RG91YmxlVmFsdWUoKTsKKyAgICAgICAgcmV0dXJuICFtX3ZhbHVlLT5kb3VibGVWYWx1ZSgpOwog
ICAgIH0KIAogICAgIFN0cmluZyBjdXN0b21DU1NUZXh0KCkgY29uc3QgZmluYWwKQEAgLTIyOSw3
ICsyMjksNyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgc3dpdGNoIChjYXRlZ29yeSgpKSB7
CiAgICAgICAgIGNhc2UgQ2FsY051bWJlcjoKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPENhbGNFeHByZXNzaW9uTnVtYmVyPihtX3ZhbHVlLT5nZXRGbG9hdFZhbHVlKCkpOwor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25OdW1iZXI+
KG1fdmFsdWUtPmZsb2F0VmFsdWUoKSk7CiAgICAgICAgIGNhc2UgQ2FsY0xlbmd0aDoKICAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENhbGNFeHByZXNzaW9uTGVuZ3RoPihMZW5n
dGgobV92YWx1ZS0+Y29tcHV0ZUxlbmd0aDxmbG9hdD4oY29udmVyc2lvbkRhdGEpLCBXZWJDb3Jl
OjpGaXhlZCkpOwogICAgICAgICBjYXNlIENhbGNQZXJjZW50OgpAQCAtMjUyLDcgKzI1Miw3IEBA
IHByaXZhdGU6CiAgICAgZG91YmxlIGRvdWJsZVZhbHVlKCkgY29uc3QgZmluYWwKICAgICB7CiAg
ICAgICAgIGlmIChoYXNEb3VibGVWYWx1ZShwcmltaXRpdmVUeXBlKCkpKQotICAgICAgICAgICAg
cmV0dXJuIG1fdmFsdWUtPmdldERvdWJsZVZhbHVlKCk7CisgICAgICAgICAgICByZXR1cm4gbV92
YWx1ZS0+ZG91YmxlVmFsdWUoKTsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
ICAgIHJldHVybiAwOwogICAgIH0KQEAgLTI2NCw3ICsyNjQsNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgcmV0dXJuIG1fdmFsdWUtPmNvbXB1dGVMZW5ndGg8ZG91YmxlPihjb252ZXJzaW9uRGF0
YSk7CiAgICAgICAgIGNhc2UgQ2FsY1BlcmNlbnQ6CiAgICAgICAgIGNhc2UgQ2FsY051bWJlcjoK
LSAgICAgICAgICAgIHJldHVybiBtX3ZhbHVlLT5nZXREb3VibGVWYWx1ZSgpOworICAgICAgICAg
ICAgcmV0dXJuIG1fdmFsdWUtPmRvdWJsZVZhbHVlKCk7CiAgICAgICAgIGNhc2UgQ2FsY1BlcmNl
bnRMZW5ndGg6CiAgICAgICAgIGNhc2UgQ2FsY1BlcmNlbnROdW1iZXI6CiAgICAgICAgIGNhc2Ug
Q2FsY0FuZ2xlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NoYXJzZXRSdWxl
LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2hhcnNldFJ1bGUuaAppbmRleCA1YjY4MDE5ZmI1
OTVlM2FiNzgyZDkzZjk3NmQ3OWYwZjI4MDhiN2RlLi43YTQxNDBjZGU4N2EzMjBjN2FmOTQzMmFh
MWNkMjVkOTVmMjcxMjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2hhcnNl
dFJ1bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2hhcnNldFJ1bGUuaApAQCAtMTks
OCArMTksNyBAQAogICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCiAgKi8KIAotI2lmbmRl
ZiBDU1NDaGFyc2V0UnVsZV9oCi0jZGVmaW5lIENTU0NoYXJzZXRSdWxlX2gKKyNwcmFnbWEgb25j
ZQogCiAjaW5jbHVkZSAiQ1NTUnVsZS5oIgogCkBAIC0zMywyMiArMzIsMTcgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NDaGFyc2V0UnVsZShwYXJlbnQsIGVuY29k
aW5nKSk7CiAgICAgfQogCi0gICAgdmlydHVhbCB+Q1NTQ2hhcnNldFJ1bGUoKSB7IH0KLQotICAg
IFN0cmluZyBjc3NUZXh0KCkgY29uc3QgZmluYWw7Ci0gICAgdm9pZCByZWF0dGFjaChTdHlsZVJ1
bGVCYXNlJikgZmluYWwgeyB9Ci0KICAgICBjb25zdCBTdHJpbmcmIGVuY29kaW5nKCkgY29uc3Qg
eyByZXR1cm4gbV9lbmNvZGluZzsgfQotICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5n
JiBlbmNvZGluZywgRXhjZXB0aW9uQ29kZSYpIHsgbV9lbmNvZGluZyA9IGVuY29kaW5nOyB9Cisg
ICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJiBlbmNvZGluZykg
eyBtX2VuY29kaW5nID0gZW5jb2Rpbmc7IHJldHVybiB7IH07IH0KIAogcHJpdmF0ZToKLSAgICBD
U1NSdWxlOjpUeXBlIHR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBDSEFSU0VUX1JVTEU7IH0K
LQogICAgIENTU0NoYXJzZXRSdWxlKENTU1N0eWxlU2hlZXQqIHBhcmVudCwgY29uc3QgU3RyaW5n
JiBlbmNvZGluZyk7CiAKKyAgICBDU1NSdWxlOjpUeXBlIHR5cGUoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBDSEFSU0VUX1JVTEU7IH0KKyAgICBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0IGZpbmFsOwor
ICAgIHZvaWQgcmVhdHRhY2goU3R5bGVSdWxlQmFzZSYpIGZpbmFsIHsgfQorCiAgICAgU3RyaW5n
IG1fZW5jb2Rpbmc7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBD
U1NDaGFyc2V0UnVsZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2hhcnNl
dFJ1bGUuaWRsIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NoYXJzZXRSdWxlLmlkbAppbmRleCBm
OTk1ODE3YTFmNGI3YjI1NzBlZDA4YjQ4N2NkZTE5ZTk3MjZjMmQ2Li5kZTQxNDBiY2RhZDRjNjJj
Njg3YjM2ZjNmODRhMzI2MTk3NTE1ZDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTQ2hhcnNldFJ1bGUuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDaGFyc2V0UnVs
ZS5pZGwKQEAgLTE4LDggKzE4LDYgQEAKICAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgog
ICovCiAKLS8vIEludHJvZHVjZWQgaW4gRE9NIExldmVsIDI6CiBpbnRlcmZhY2UgQ1NTQ2hhcnNl
dFJ1bGUgOiBDU1NSdWxlIHsKLSAgICBbU2V0dGVyTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIGF0
dHJpYnV0ZSBET01TdHJpbmc/IGVuY29kaW5nOworICAgIFtTZXR0ZXJNYXlUaHJvd0V4Y2VwdGlv
bl0gYXR0cmlidXRlIERPTVN0cmluZz8gZW5jb2Rpbmc7CiB9OwotCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IDY4NTkxMzFj
ZmZkMjNjNTY4MzNmMjk4M2Q4ZDYyM2VhY2M5N2UzZTAuLjY4MDEzNTJkNmUwZTY1MDRlY2ZhYWJl
YTM0ZDAxODdkODRjOGU5MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC0xNjM2LDkgKzE2MzYsOSBAQCBTdHJpbmcgQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpjc3NUZXh0KCkgY29uc3QKICAgICByZXR1cm4gcmVz
dWx0LnRvU3RyaW5nKCk7CiB9CiAKLXZvaWQgQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpz
ZXRDc3NUZXh0KGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8
dm9pZD4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpzZXRDc3NUZXh0KGNvbnN0IFN0cmlu
ZyYpCiB7Ci0gICAgZWMgPSBOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlI7CisgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IE5PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUiB9OwogfQogCiBSZWZQdHI8
Q1NTUHJpbWl0aXZlVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmdldEZvbnRTaXplQ1NT
VmFsdWVQcmVmZXJyaW5nS2V5d29yZCgpIGNvbnN0CkBAIC00MDAxLDcgKzQwMDEsNyBAQCBib29s
IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5TWF0Y2hlcyhDU1NQcm9wZXJ0eUlEIHBy
b3BlcnR5SUQsIGNvbnN0IENTUwogICAgICAgICBpZiAoYXV0byogc3R5bGUgPSBtX25vZGUtPmNv
bXB1dGVkU3R5bGUobV9wc2V1ZG9FbGVtZW50U3BlY2lmaWVyKSkgewogICAgICAgICAgICAgaWYg
KENTU1ZhbHVlSUQgc2l6ZUlkZW50aWZpZXIgPSBzdHlsZS0+Zm9udERlc2NyaXB0aW9uKCkua2V5
d29yZFNpemVBc0lkZW50aWZpZXIoKSkgewogICAgICAgICAgICAgICAgIGF1dG8mIHByaW1pdGl2
ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YWx1ZSk7Ci0gICAgICAgICAg
ICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLmlzVmFsdWVJRCgpICYmIHByaW1pdGl2ZVZhbHVlLmdl
dFZhbHVlSUQoKSA9PSBzaXplSWRlbnRpZmllcikKKyAgICAgICAgICAgICAgICBpZiAocHJpbWl0
aXZlVmFsdWUuaXNWYWx1ZUlEKCkgJiYgcHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IHNpemVJ
ZGVudGlmaWVyKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQpAQCAtNDExOSwxNSArNDExOSwxNCBAQCBib29sIENTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbjo6aXNQcm9wZXJ0eUltcGxpY2l0KGNvbnN0IFN0cmluZyYpCiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi12b2lkIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6c2V0UHJv
cGVydHkoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgRXhjZXB0
aW9uQ29kZSYgZWMpCitFeGNlcHRpb25Pcjx2b2lkPiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b246OnNldFByb3BlcnR5KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYpCiB7Ci0gICAgZWMgPSBOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlI7CisgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IE5PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUiB9OwogfQogCi1TdHJpbmcg
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpyZW1vdmVQcm9wZXJ0eShjb25zdCBTdHJpbmcm
LCBFeGNlcHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPFN0cmluZz4gQ1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uOjpyZW1vdmVQcm9wZXJ0eShjb25zdCBTdHJpbmcmKQogewotICAgIGVjID0g
Tk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSOwotICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSIH07CiB9CiAgICAg
CiBSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVy
dHlDU1NWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkKQEAgLTQxNDAsMjEg
KzQxMzksMTcgQEAgU3RyaW5nIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVy
dHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5SUQgcHJvcGUKICAgICByZXR1cm4gZ2V0UHJvcGVy
dHlWYWx1ZShwcm9wZXJ0eUlEKTsKIH0KIAotYm9vbCBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b246OnNldFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiwgYm9v
bCwgRXhjZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRpb25Pcjxib29sPiBDU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb246OnNldFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlJRCwgY29uc3QgU3Ry
aW5nJiwgYm9vbCkKIHsKLSAgICBlYyA9IE5PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUjsKLSAg
ICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5PX01PRElGSUNBVElPTl9B
TExPV0VEX0VSUiB9OwogfQogCi1SZWZQdHI8Q1NTVmFsdWVMaXN0PiBDb21wdXRlZFN0eWxlRXh0
cmFjdG9yOjpnZXRCYWNrZ3JvdW5kU2hvcnRoYW5kVmFsdWUoKSBjb25zdAorUmVmPENTU1ZhbHVl
TGlzdD4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Z2V0QmFja2dyb3VuZFNob3J0aGFuZFZhbHVl
KCkgY29uc3QKIHsKLSAgICBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0aWVzQmVm
b3JlU2xhc2hTZXBlcmF0b3JbNV0gPSB7IENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCBDU1NQ
cm9wZXJ0eUJhY2tncm91bmRJbWFnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5QmFja2dyb3Vu
ZFJlcGVhdCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQXR0YWNobWVudCwgIAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb24gfTsKLSAgICBzdGF0aWMgY29uc3QgQ1NTUHJv
cGVydHlJRCBwcm9wZXJ0aWVzQWZ0ZXJTbGFzaFNlcGVyYXRvclszXSA9IHsgQ1NTUHJvcGVydHlC
YWNrZ3JvdW5kU2l6ZSwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kT3JpZ2luLCAKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kQ2xpcCB9OworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0
eUlEIHByb3BlcnRpZXNCZWZvcmVTbGFzaFNlcGVyYXRvcls1XSA9IHsgQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kQ29sb3IsIENTU1Byb3BlcnR5QmFja2dyb3VuZEltYWdlLCBDU1NQcm9wZXJ0eUJhY2tn
cm91bmRSZXBlYXQsIENTU1Byb3BlcnR5QmFja2dyb3VuZEF0dGFjaG1lbnQsIENTU1Byb3BlcnR5
QmFja2dyb3VuZFBvc2l0aW9uIH07CisgICAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgcHJv
cGVydGllc0FmdGVyU2xhc2hTZXBlcmF0b3JbM10gPSB7IENTU1Byb3BlcnR5QmFja2dyb3VuZFNp
emUsIENTU1Byb3BlcnR5QmFja2dyb3VuZE9yaWdpbiwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ2xp
cCB9OwogCi0gICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3Jl
YXRlU2xhc2hTZXBhcmF0ZWQoKTsKKyAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0
ZVNsYXNoU2VwYXJhdGVkKCk7CiAgICAgbGlzdC0+YXBwZW5kKCpnZXRDU1NQcm9wZXJ0eVZhbHVl
c0ZvclNob3J0aGFuZFByb3BlcnRpZXMoU3R5bGVQcm9wZXJ0eVNob3J0aGFuZChDU1NQcm9wZXJ0
eUJhY2tncm91bmQsIHByb3BlcnRpZXNCZWZvcmVTbGFzaFNlcGVyYXRvcikpKTsKICAgICBsaXN0
LT5hcHBlbmQoKmdldENTU1Byb3BlcnR5VmFsdWVzRm9yU2hvcnRoYW5kUHJvcGVydGllcyhTdHls
ZVByb3BlcnR5U2hvcnRoYW5kKENTU1Byb3BlcnR5QmFja2dyb3VuZCwgcHJvcGVydGllc0FmdGVy
U2xhc2hTZXBlcmF0b3IpKSk7CiAgICAgcmV0dXJuIGxpc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgKaW5kZXggYTg5MTcwNWI4NWI1NzYy
YmU0NWQ4ZmY4ODVhMzZlNmNhYzQzODgxMC4uNTU0MjJlZTcxNWY1NmNiNzdiMjQ5OWM3YjY1YTZi
YTBhMzJiNGMzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb24uaApAQCAtMTgsOCArMTgsNyBAQAogICogMDIxMTAtMTMwMSAgVVNBCiAgKi8K
IAotI2lmbmRlZiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb25faAotI2RlZmluZSBDU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb25faAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDU1NTdHls
ZURlY2xhcmF0aW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGVDb25zdGFudHMuaCIKQEAgLTc4
LDcgKzc3LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGdldENTU1By
b3BlcnR5VmFsdWVzRm9yU2hvcnRoYW5kUHJvcGVydGllcyhjb25zdCBTdHlsZVByb3BlcnR5U2hv
cnRoYW5kJikgY29uc3Q7CiAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gZ2V0Q1NTUHJvcGVydHlW
YWx1ZXNGb3JTaWRlc1Nob3J0aGFuZChjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJikgY29u
c3Q7Ci0gICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gZ2V0QmFja2dyb3VuZFNob3J0aGFuZFZhbHVl
KCkgY29uc3Q7CisgICAgUmVmPENTU1ZhbHVlTGlzdD4gZ2V0QmFja2dyb3VuZFNob3J0aGFuZFZh
bHVlKCkgY29uc3Q7CiAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gZ2V0Q1NTUHJvcGVydHlWYWx1
ZXNGb3JHcmlkU2hvcnRoYW5kKGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmKSBjb25zdDsK
IAogICAgIFJlZlB0cjxOb2RlPiBtX25vZGU7CkBAIC0xMTEsMTMgKzExMCwxMyBAQCBwcml2YXRl
OgogICAgIFN0cmluZyBnZXRQcm9wZXJ0eVByaW9yaXR5KGNvbnN0IFN0cmluZyYgcHJvcGVydHlO
YW1lKSBmaW5hbDsKICAgICBTdHJpbmcgZ2V0UHJvcGVydHlTaG9ydGhhbmQoY29uc3QgU3RyaW5n
JiBwcm9wZXJ0eU5hbWUpIGZpbmFsOwogICAgIGJvb2wgaXNQcm9wZXJ0eUltcGxpY2l0KGNvbnN0
IFN0cmluZyYgcHJvcGVydHlOYW1lKSBmaW5hbDsKLSAgICB2b2lkIHNldFByb3BlcnR5KGNvbnN0
IFN0cmluZyYgcHJvcGVydHlOYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBjb25zdCBTdHJpbmcm
IHByaW9yaXR5LCBFeGNlcHRpb25Db2RlJikgZmluYWw7Ci0gICAgU3RyaW5nIHJlbW92ZVByb3Bl
cnR5KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBFeGNlcHRpb25Db2RlJikgZmluYWw7Cisg
ICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0UHJvcGVydHkoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5h
bWUsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGNvbnN0IFN0cmluZyYgcHJpb3JpdHkpIGZpbmFsOwor
ICAgIEV4Y2VwdGlvbk9yPFN0cmluZz4gcmVtb3ZlUHJvcGVydHkoY29uc3QgU3RyaW5nJiBwcm9w
ZXJ0eU5hbWUpIGZpbmFsOwogICAgIFN0cmluZyBjc3NUZXh0KCkgY29uc3QgZmluYWw7Ci0gICAg
dm9pZCBzZXRDc3NUZXh0KGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKSBmaW5hbDsKKyAg
ICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRDc3NUZXh0KGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAg
IFJlZlB0cjxDU1NWYWx1ZT4gZ2V0UHJvcGVydHlDU1NWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5
SUQpIGZpbmFsOwogICAgIFN0cmluZyBnZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVy
dHlJRCkgZmluYWw7Ci0gICAgYm9vbCBzZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5SUQs
IGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wgaW1wb3J0YW50LCBFeGNlcHRpb25Db2RlJikgZmlu
YWw7CisgICAgRXhjZXB0aW9uT3I8Ym9vbD4gc2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0
eUlELCBjb25zdCBTdHJpbmcmIHZhbHVlLCBib29sIGltcG9ydGFudCkgZmluYWw7CiAgICAgUmVm
PE11dGFibGVTdHlsZVByb3BlcnRpZXM+IGNvcHlQcm9wZXJ0aWVzKCkgY29uc3QgZmluYWw7CiAK
ICAgICBSZWZQdHI8Q1NTVmFsdWU+IGdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlJRCwg
RVVwZGF0ZUxheW91dCA9IFVwZGF0ZUxheW91dCkgY29uc3Q7CkBAIC0xMjksNSArMTI4LDMgQEAg
cHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIENTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTQ3Jvc3NmYWRlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZh
bHVlLmNwcAppbmRleCAwY2Y3OWJjYzZiMWM4NDQ4NTZkYWIxZThiYzA3N2M5MTQyYjU0ZjVmLi4z
MTQ3M2QyMzM0MTU2ODFhNmY2MzIxNGFhOTM1YzNjNzdmMzVlMzk3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHAKQEAgLTg0LDcgKzg0LDcgQEAgU3RyaW5nIENTU0Ny
b3NzZmFkZVZhbHVlOjpjdXN0b21DU1NUZXh0KCkgY29uc3QKIAogRmxvYXRTaXplIENTU0Nyb3Nz
ZmFkZVZhbHVlOjpmaXhlZFNpemUoY29uc3QgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIpCiB7Ci0g
ICAgZmxvYXQgcGVyY2VudGFnZSA9IG1fcGVyY2VudGFnZVZhbHVlLT5nZXRGbG9hdFZhbHVlKCk7
CisgICAgZmxvYXQgcGVyY2VudGFnZSA9IG1fcGVyY2VudGFnZVZhbHVlLT5mbG9hdFZhbHVlKCk7
CiAgICAgZmxvYXQgaW52ZXJzZVBlcmNlbnRhZ2UgPSAxIC0gcGVyY2VudGFnZTsKIAogICAgIC8v
IEZJWE1FOiBTa2lwIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGNoZWNrIHdoZW4gY3Jvc3MgZmFk
ZSBpcyBhcHBsaWVkIHRvIGFuIGVsZW1lbnQgaW4gYSB1c2VyIGFnZW50IHNoYWRvdyB0cmVlLgpA
QCAtMTY4LDcgKzE2OCw3IEBAIFJlZlB0cjxJbWFnZT4gQ1NTQ3Jvc3NmYWRlVmFsdWU6OmltYWdl
KFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBjb25zdCBGbG9hdFNpemUmCiAgICAgaWYgKCFmcm9t
SW1hZ2UgfHwgIXRvSW1hZ2UpCiAgICAgICAgIHJldHVybiBJbWFnZTo6bnVsbEltYWdlKCk7CiAK
LSAgICBtX2dlbmVyYXRlZEltYWdlID0gQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmNyZWF0ZSgq
ZnJvbUltYWdlLCAqdG9JbWFnZSwgbV9wZXJjZW50YWdlVmFsdWUtPmdldEZsb2F0VmFsdWUoKSwg
Zml4ZWRTaXplKHJlbmRlcmVyKSwgc2l6ZSk7CisgICAgbV9nZW5lcmF0ZWRJbWFnZSA9IENyb3Nz
ZmFkZUdlbmVyYXRlZEltYWdlOjpjcmVhdGUoKmZyb21JbWFnZSwgKnRvSW1hZ2UsIG1fcGVyY2Vu
dGFnZVZhbHVlLT5mbG9hdFZhbHVlKCksIGZpeGVkU2l6ZShyZW5kZXJlciksIHNpemUpOwogCiAg
ICAgcmV0dXJuIG1fZ2VuZXJhdGVkSW1hZ2U7CiB9CkBAIC0yMDIsMTAgKzIwMiwxMCBAQCBSZWZQ
dHI8Q1NTQ3Jvc3NmYWRlVmFsdWU+IENTU0Nyb3NzZmFkZVZhbHVlOjpibGVuZChjb25zdCBDU1ND
cm9zc2ZhZGVWYWx1ZSYgZnJvbQogICAgIGF1dG8gZnJvbUltYWdlVmFsdWUgPSBDU1NJbWFnZVZh
bHVlOjpjcmVhdGUoKm1fY2FjaGVkRnJvbUltYWdlKTsKICAgICBhdXRvIHRvSW1hZ2VWYWx1ZSA9
IENTU0ltYWdlVmFsdWU6OmNyZWF0ZSgqbV9jYWNoZWRUb0ltYWdlKTsKIAotICAgIGRvdWJsZSBm
cm9tUGVyY2VudGFnZSA9IGZyb20ubV9wZXJjZW50YWdlVmFsdWUtPmdldERvdWJsZVZhbHVlKCk7
CisgICAgZG91YmxlIGZyb21QZXJjZW50YWdlID0gZnJvbS5tX3BlcmNlbnRhZ2VWYWx1ZS0+ZG91
YmxlVmFsdWUoKTsKICAgICBpZiAoZnJvbS5tX3BlcmNlbnRhZ2VWYWx1ZS0+aXNQZXJjZW50YWdl
KCkpCiAgICAgICAgIGZyb21QZXJjZW50YWdlIC89IDEwMC4wOwotICAgIGRvdWJsZSB0b1BlcmNl
bnRhZ2UgPSBtX3BlcmNlbnRhZ2VWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKTsKKyAgICBkb3VibGUg
dG9QZXJjZW50YWdlID0gbV9wZXJjZW50YWdlVmFsdWUtPmRvdWJsZVZhbHVlKCk7CiAgICAgaWYg
KG1fcGVyY2VudGFnZVZhbHVlLT5pc1BlcmNlbnRhZ2UoKSkKICAgICAgICAgdG9QZXJjZW50YWdl
IC89IDEwMC4wOwogICAgIGF1dG8gcGVyY2VudGFnZVZhbHVlID0gQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZShibGVuZEZ1bmMoZnJvbVBlcmNlbnRhZ2UsIHRvUGVyY2VudGFnZSwgcHJvZ3Jlc3Mp
LCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTRm9udEZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNl
LmNwcAppbmRleCA1MTgyYWY3YjI3YTEzN2Y0NDY2MzBkN2E0NjhkNDA4M2MxZTgwMThmLi5hNzU0
MDFiZjUyYjhhNDU0MTJiNzE5YjQ5NGQyZmU1OWNkYTJjZGExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NG
b250RmFjZS5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCBPcHRpb25hbDxGb250VHJhaXRzTWFzaz4g
Q1NTRm9udEZhY2U6OmNhbGN1bGF0ZVN0eWxlTWFzayhDU1NWYWx1ZSYgc3R5bGUpCiAgICAgaWYg
KCFpczxDU1NQcmltaXRpdmVWYWx1ZT4oc3R5bGUpKQogICAgICAgICByZXR1cm4gTnVsbG9wdDsK
IAotICAgIHN3aXRjaCAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHN0eWxlKS5nZXRWYWx1
ZUlEKCkpIHsKKyAgICBzd2l0Y2ggKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihzdHlsZSku
dmFsdWVJRCgpKSB7CiAgICAgY2FzZSBDU1NWYWx1ZU5vcm1hbDoKICAgICAgICAgcmV0dXJuIEZv
bnRTdHlsZU5vcm1hbE1hc2s7CiAgICAgY2FzZSBDU1NWYWx1ZUl0YWxpYzoKQEAgLTE2NCw3ICsx
NjQsNyBAQCBPcHRpb25hbDxGb250VHJhaXRzTWFzaz4gQ1NTRm9udEZhY2U6OmNhbGN1bGF0ZVdl
aWdodE1hc2soQ1NTVmFsdWUmIHdlaWdodCkKICAgICBpZiAoIWlzPENTU1ByaW1pdGl2ZVZhbHVl
Pih3ZWlnaHQpKQogICAgICAgICByZXR1cm4gTnVsbG9wdDsKIAotICAgIHN3aXRjaCAoZG93bmNh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHdlaWdodCkuZ2V0VmFsdWVJRCgpKSB7CisgICAgc3dpdGNo
IChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4od2VpZ2h0KS52YWx1ZUlEKCkpIHsKICAgICBj
YXNlIENTU1ZhbHVlQm9sZDoKICAgICBjYXNlIENTU1ZhbHVlQm9sZGVyOgogICAgIGNhc2UgQ1NT
VmFsdWU3MDA6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTZXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcAppbmRleCA5ZTlkMTc3
Mjg4ZmFhYzRiOTY4MjY2MTM1NWQ2ZDU0YjgzNzQwZGMwLi41MjJhYzg2YTk0ZTliYmJiM2I4ZDNl
MjExNWNmNjY5MDBmNzM1MzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9u
dEZhY2VTZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNldC5jcHAK
QEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJDU1NTZWdtZW50ZWRGb250RmFjZS5oIgogI2lu
Y2x1ZGUgIkNTU1ZhbHVlTGlzdC5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlUG9vbC5oIgorI2luY2x1
ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJGb250Q2FjaGUuaCIKICNpbmNsdWRlICJT
dHlsZVByb3BlcnRpZXMuaCIKIApAQCAtMTI4LDcgKzEyOSw3IEBAIFN0cmluZyBDU1NGb250RmFj
ZVNldDo6ZmFtaWx5TmFtZUZyb21QcmltaXRpdmUoY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmIHZh
bHVlKQogCiAgICAgLy8gV2UgbmVlZCB0byB1c2UgdGhlIHJhdyB0ZXh0IGZvciBhbGwgdGhlIGdl
bmVyaWMgZmFtaWx5IHR5cGVzLCBzaW5jZSBAZm9udC1mYWNlIGlzIGEgd2F5IG9mIGFjdHVhbGx5
CiAgICAgLy8gZGVmaW5pbmcgd2hhdCBmb250IHRvIHVzZSBmb3IgdGhvc2UgdHlwZXMuCi0gICAg
c3dpdGNoICh2YWx1ZS5nZXRWYWx1ZUlEKCkpIHsKKyAgICBzd2l0Y2ggKHZhbHVlLnZhbHVlSUQo
KSkgewogICAgIGNhc2UgQ1NTVmFsdWVTZXJpZjoKICAgICAgICAgcmV0dXJuIHNlcmlmRmFtaWx5
OwogICAgIGNhc2UgQ1NTVmFsdWVTYW5zU2VyaWY6CkBAIC0yNDcsNyArMjQ4LDcgQEAgdm9pZCBD
U1NGb250RmFjZVNldDo6cmVtb3ZlKGNvbnN0IENTU0ZvbnRGYWNlJiBmYWNlKQogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogfQogCi1DU1NGb250RmFjZSogQ1NTRm9udEZhY2VTZXQ6Omxvb2t1
cEJ5Q1NTQ29ubmVjdGlvbihTdHlsZVJ1bGVGb250RmFjZSYgdGFyZ2V0KQorQ1NTRm9udEZhY2Uq
IENTU0ZvbnRGYWNlU2V0Ojpsb29rVXBCeUNTU0Nvbm5lY3Rpb24oU3R5bGVSdWxlRm9udEZhY2Um
IHRhcmdldCkKIHsKICAgICByZXR1cm4gbV9jb25zdGl0dWVudENTU0Nvbm5lY3Rpb25zLmdldCgm
dGFyZ2V0KTsKIH0KQEAgLTMyNCwzNSArMzI1LDI4IEBAIHN0YXRpYyBIYXNoU2V0PFVDaGFyMzI+
IGNvZGVQb2ludHNGcm9tU3RyaW5nKFN0cmluZ1ZpZXcgc3RyaW5nVmlldykKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCi1WZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxDU1NGb250RmFjZT4+
IENTU0ZvbnRGYWNlU2V0OjptYXRjaGluZ0ZhY2VzKGNvbnN0IFN0cmluZyYgZm9udCwgY29uc3Qg
U3RyaW5nJiBzdHJpbmcsIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8VmVjdG9yPHN0
ZDo6cmVmZXJlbmNlX3dyYXBwZXI8Q1NTRm9udEZhY2U+Pj4gQ1NTRm9udEZhY2VTZXQ6Om1hdGNo
aW5nRmFjZXMoY29uc3QgU3RyaW5nJiBmb250LCBjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKLSAg
ICBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxDU1NGb250RmFjZT4+IHJlc3VsdDsKICAg
ICBhdXRvIHN0eWxlID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CiAgICAgYXV0
byBwYXJzZVJlc3VsdCA9IENTU1BhcnNlcjo6cGFyc2VWYWx1ZShzdHlsZSwgQ1NTUHJvcGVydHlG
b250LCBmb250LCB0cnVlLCBIVE1MU3RhbmRhcmRNb2RlLCBudWxscHRyKTsKLSAgICBpZiAocGFy
c2VSZXN1bHQgPT0gQ1NTUGFyc2VyOjpQYXJzZVJlc3VsdDo6RXJyb3IpIHsKLSAgICAgICAgZWMg
PSBTWU5UQVhfRVJSOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KKyAgICBpZiAocGFy
c2VSZXN1bHQgPT0gQ1NTUGFyc2VyOjpQYXJzZVJlc3VsdDo6RXJyb3IpCisgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBTWU5UQVhfRVJSIH07CiAKICAgICBGb250VHJhaXRzTWFzayBmb250VHJh
aXRzTWFzazsKICAgICBpZiAoYXV0byBtYXNrT3B0aW9uYWwgPSBjb21wdXRlRm9udFRyYWl0c01h
c2soc3R5bGUuZ2V0KCkpKQogICAgICAgICBmb250VHJhaXRzTWFzayA9IG1hc2tPcHRpb25hbC52
YWx1ZSgpOwotICAgIGVsc2UgewotICAgICAgICBlYyA9IFNZTlRBWF9FUlI7Ci0gICAgICAgIHJl
dHVybiByZXN1bHQ7Ci0gICAgfQorICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IFNZTlRBWF9FUlIgfTsKIAotICAgIFJlZlB0cjxDU1NWYWx1ZT4gZmFtaWx5ID0gc3R5bGUtPmdl
dFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlGb250RmFtaWx5KTsKLSAgICBpZiAoIWlzPENT
U1ZhbHVlTGlzdD4oZmFtaWx5LmdldCgpKSkgewotICAgICAgICBlYyA9IFNZTlRBWF9FUlI7Ci0g
ICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQorICAgIGF1dG8gZmFtaWx5ID0gc3R5bGUtPmdl
dFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlGb250RmFtaWx5KTsKKyAgICBpZiAoIWlzPENT
U1ZhbHVlTGlzdD4oZmFtaWx5LmdldCgpKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNZ
TlRBWF9FUlIgfTsKICAgICBDU1NWYWx1ZUxpc3QmIGZhbWlseUxpc3QgPSBkb3duY2FzdDxDU1NW
YWx1ZUxpc3Q+KCpmYW1pbHkpOwogCiAgICAgSGFzaFNldDxBdG9taWNTdHJpbmc+IHVuaXF1ZUZh
bWlsaWVzOwogICAgIFZlY3RvcjxBdG9taWNTdHJpbmc+IGZhbWlseU9yZGVyOwogICAgIGZvciAo
YXV0byYgZmFtaWx5IDogZmFtaWx5TGlzdCkgewotICAgICAgICBjb25zdCBDU1NQcmltaXRpdmVW
YWx1ZSYgcHJpbWl0aXZlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGZhbWlseS5nZXQo
KSk7CisgICAgICAgIGF1dG8mIHByaW1pdGl2ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
PihmYW1pbHkuZ2V0KCkpOwogICAgICAgICBpZiAoIXByaW1pdGl2ZS5pc0ZvbnRGYW1pbHkoKSkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAodW5pcXVlRmFtaWxpZXMuYWRkKHBy
aW1pdGl2ZS5mb250RmFtaWx5KCkuZmFtaWx5TmFtZSkuaXNOZXdFbnRyeSkKQEAgLTM2Myw3ICsz
NTcsNyBAQCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxDU1NGb250RmFjZT4+IENTU0Zv
bnRGYWNlU2V0OjptYXRjaGluZ0ZhY2VzKGNvbnN0CiAgICAgZm9yIChhdXRvIGNvZGVQb2ludCA6
IGNvZGVQb2ludHNGcm9tU3RyaW5nKHN0cmluZykpIHsKICAgICAgICAgYm9vbCBmb3VuZCA9IGZh
bHNlOwogICAgICAgICBmb3IgKGF1dG8mIGZhbWlseSA6IGZhbWlseU9yZGVyKSB7Ci0gICAgICAg
ICAgICBDU1NTZWdtZW50ZWRGb250RmFjZSogZmFjZXMgPSBnZXRGb250RmFjZShmb250VHJhaXRz
TWFzaywgZmFtaWx5KTsKKyAgICAgICAgICAgIGF1dG8qIGZhY2VzID0gZm9udEZhY2UoZm9udFRy
YWl0c01hc2ssIGZhbWlseSk7CiAgICAgICAgICAgICBpZiAoIWZhY2VzKQogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgZm9yIChhdXRvJiBjb25zdGl0dWVudEZhY2UgOiBm
YWNlcy0+Y29uc3RpdHVlbnRGYWNlcygpKSB7CkBAIC0zNzgsMTkgKzM3MiwyMCBAQCBWZWN0b3I8
c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxDU1NGb250RmFjZT4+IENTU0ZvbnRGYWNlU2V0OjptYXRj
aGluZ0ZhY2VzKGNvbnN0CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBWZWN0b3I8c3RkOjpyZWZl
cmVuY2Vfd3JhcHBlcjxDU1NGb250RmFjZT4+IHJlc3VsdDsKKyAgICByZXN1bHQucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShyZXN1bHRDb25zdGl0dWVudHMuc2l6ZSgpKTsKICAgICBmb3IgKGF1dG8q
IGNvbnN0aXR1ZW50IDogcmVzdWx0Q29uc3RpdHVlbnRzKQotICAgICAgICByZXN1bHQuYXBwZW5k
KCpjb25zdGl0dWVudCk7Ci0KLSAgICByZXR1cm4gcmVzdWx0OworICAgICAgICByZXN1bHQudW5j
aGVja2VkQXBwZW5kKCpjb25zdGl0dWVudCk7CisgICAgcmV0dXJuIFdURk1vdmUocmVzdWx0KTsK
IH0KIAotYm9vbCBDU1NGb250RmFjZVNldDo6Y2hlY2soY29uc3QgU3RyaW5nJiBmb250LCBjb25z
dCBTdHJpbmcmIHRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8Ym9vbD4gQ1NT
Rm9udEZhY2VTZXQ6OmNoZWNrKGNvbnN0IFN0cmluZyYgZm9udCwgY29uc3QgU3RyaW5nJiB0ZXh0
KQogewotICAgIGF1dG8gbWF0Y2hpbmdGYWNlcyA9IHRoaXMtPm1hdGNoaW5nRmFjZXMoZm9udCwg
dGV4dCwgZWMpOwotICAgIGlmIChlYykKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGF1dG8g
bWF0Y2hpbmdGYWNlcyA9IHRoaXMtPm1hdGNoaW5nRmFjZXMoZm9udCwgdGV4dCk7CisgICAgaWYg
KG1hdGNoaW5nRmFjZXMuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBtYXRjaGluZ0Zh
Y2VzLnJlbGVhc2VFeGNlcHRpb24oKTsKIAotICAgIGZvciAoYXV0byYgZmFjZSA6IG1hdGNoaW5n
RmFjZXMpIHsKKyAgICBmb3IgKGF1dG8mIGZhY2UgOiBtYXRjaGluZ0ZhY2VzLnJlbGVhc2VSZXR1
cm5WYWx1ZSgpKSB7CiAgICAgICAgIGlmIChmYWNlLmdldCgpLnN0YXR1cygpID09IENTU0ZvbnRG
YWNlOjpTdGF0dXM6OlBlbmRpbmcpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpA
QCAtNDU2LDcgKzQ1MSw3IEBAIHN0YXRpYyBib29sIGZvbnRGYWNlQ29tcGFyYXRvcihGb250VHJh
aXRzTWFzayBkZXNpcmVkVHJhaXRzTWFza0ZvckNvbXBhcmlzb24sIGNvCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi1DU1NTZWdtZW50ZWRGb250RmFjZSogQ1NTRm9udEZhY2VTZXQ6OmdldEZvbnRG
YWNlKEZvbnRUcmFpdHNNYXNrIHRyYWl0c01hc2ssIGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5
KQorQ1NTU2VnbWVudGVkRm9udEZhY2UqIENTU0ZvbnRGYWNlU2V0Ojpmb250RmFjZShGb250VHJh
aXRzTWFzayB0cmFpdHNNYXNrLCBjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSkKIHsKICAgICBh
dXRvIGl0ZXJhdG9yID0gbV9mYWNlc0xvb2t1cFRhYmxlLmZpbmQoZmFtaWx5KTsKICAgICBpZiAo
aXRlcmF0b3IgPT0gbV9mYWNlc0xvb2t1cFRhYmxlLmVuZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9u
dEZhY2VTZXQuaAppbmRleCBjZGY4OGJhNGQ2NmYzN2QzNGNiOTBhMzc4ZjExZjk4NjYyMWEzOTcx
Li43OTEzNDAyZmQ2MjhmYjg0MTM3YjQxZjM0YTI1NDljMDAwNjU1YzFhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRm9udEZhY2VTZXQuaApAQCAtMjMsOCArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCi0jaWZuZGVmIENTU0ZvbnRGYWNlU2V0X2gKLSNkZWZpbmUgQ1NTRm9udEZhY2VTZXRfaAor
I3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDU1NGb250RmFjZS5oIgogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CkBAIC02NCwyMyArNjMsMjAgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXIoKTsK
ICAgICBDU1NGb250RmFjZSYgb3BlcmF0b3JbXShzaXplX3QgaSk7CiAKLSAgICBDU1NGb250RmFj
ZSogbG9va3VwQnlDU1NDb25uZWN0aW9uKFN0eWxlUnVsZUZvbnRGYWNlJik7CisgICAgQ1NTRm9u
dEZhY2UqIGxvb2tVcEJ5Q1NTQ29ubmVjdGlvbihTdHlsZVJ1bGVGb250RmFjZSYpOwogCi0gICAg
Ym9vbCBjaGVjayhjb25zdCBTdHJpbmcmIGZvbnQsIGNvbnN0IFN0cmluZyYgdGV4dCwgRXhjZXB0
aW9uQ29kZSYpOworICAgIEV4Y2VwdGlvbk9yPGJvb2w+IGNoZWNrKGNvbnN0IFN0cmluZyYgZm9u
dCwgY29uc3QgU3RyaW5nJiB0ZXh0KTsKIAotICAgIENTU1NlZ21lbnRlZEZvbnRGYWNlKiBnZXRG
b250RmFjZShGb250VHJhaXRzTWFzaywgY29uc3QgQXRvbWljU3RyaW5nJiBmYW1pbHkpOworICAg
IENTU1NlZ21lbnRlZEZvbnRGYWNlKiBmb250RmFjZShGb250VHJhaXRzTWFzaywgY29uc3QgQXRv
bWljU3RyaW5nJiBmYW1pbHkpOwogCi0gICAgZW51bSBjbGFzcyBTdGF0dXMgewotICAgICAgICBM
b2FkaW5nLAotICAgICAgICBMb2FkZWQKLSAgICB9OworICAgIGVudW0gY2xhc3MgU3RhdHVzIHsg
TG9hZGluZywgTG9hZGVkIH07CiAgICAgU3RhdHVzIHN0YXR1cygpIGNvbnN0IHsgcmV0dXJuIG1f
c3RhdHVzOyB9CiAKLSAgICBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxDU1NGb250RmFj
ZT4+IG1hdGNoaW5nRmFjZXMoY29uc3QgU3RyaW5nJiBmb250LCBjb25zdCBTdHJpbmcmIHRleHQs
IEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBFeGNlcHRpb25PcjxWZWN0b3I8c3RkOjpyZWZlcmVuY2Vf
d3JhcHBlcjxDU1NGb250RmFjZT4+PiBtYXRjaGluZ0ZhY2VzKGNvbnN0IFN0cmluZyYgZm9udCwg
Y29uc3QgU3RyaW5nJiB0ZXh0KTsKIAogICAgIC8vIENTU0ZvbnRGYWNlOjpDbGllbnQgbmVlZHMg
dG8gYmUgYWJsZSB0byBiZSBoZWxkIGluIGEgUmVmUHRyLgotICAgIHZvaWQgcmVmKCkgb3ZlcnJp
ZGUgeyBSZWZDb3VudGVkPENTU0ZvbnRGYWNlU2V0Pjo6cmVmKCk7IH0KLSAgICB2b2lkIGRlcmVm
KCkgb3ZlcnJpZGUgeyBSZWZDb3VudGVkPENTU0ZvbnRGYWNlU2V0Pjo6ZGVyZWYoKTsgfQorICAg
IHZvaWQgcmVmKCkgZmluYWwgeyBSZWZDb3VudGVkOjpyZWYoKTsgfQorICAgIHZvaWQgZGVyZWYo
KSBmaW5hbCB7IFJlZkNvdW50ZWQ6OmRlcmVmKCk7IH0KIAogcHJpdmF0ZToKICAgICBDU1NGb250
RmFjZVNldCgpOwpAQCAtOTEsOCArODcsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgaW5jcmVtZW50
QWN0aXZlQ291bnQoKTsKICAgICB2b2lkIGRlY3JlbWVudEFjdGl2ZUNvdW50KCk7CiAKLSAgICB2
b2lkIGZvbnRTdGF0ZUNoYW5nZWQoQ1NTRm9udEZhY2UmLCBDU1NGb250RmFjZTo6U3RhdHVzIG9s
ZFN0YXRlLCBDU1NGb250RmFjZTo6U3RhdHVzIG5ld1N0YXRlKSBvdmVycmlkZTsKLSAgICB2b2lk
IGZvbnRQcm9wZXJ0eUNoYW5nZWQoQ1NTRm9udEZhY2UmLCBDU1NWYWx1ZUxpc3QqIG9sZEZhbWls
aWVzID0gbnVsbHB0cikgb3ZlcnJpZGU7CisgICAgdm9pZCBmb250U3RhdGVDaGFuZ2VkKENTU0Zv
bnRGYWNlJiwgQ1NTRm9udEZhY2U6OlN0YXR1cyBvbGRTdGF0ZSwgQ1NTRm9udEZhY2U6OlN0YXR1
cyBuZXdTdGF0ZSkgZmluYWw7CisgICAgdm9pZCBmb250UHJvcGVydHlDaGFuZ2VkKENTU0ZvbnRG
YWNlJiwgQ1NTVmFsdWVMaXN0KiBvbGRGYW1pbGllcyA9IG51bGxwdHIpIGZpbmFsOwogCiAgICAg
dm9pZCBlbnN1cmVMb2NhbEZvbnRGYWNlc0ZvckZhbWlseVJlZ2lzdGVyZWQoY29uc3QgU3RyaW5n
Jik7CiAKQEAgLTExMSw1ICsxMDcsMyBAQCBwcml2YXRlOgogfTsKIAogfQotCi0jZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKaW5kZXggNWVlMDg3MjBiNmI5MDFiNmNl
NTNmYTFiYTUxNTdmODQyMjFiNTIxZi4uYjRlYzQ0ZDdkYTc4Mzk4NjM5ZTdhMzQyM2RlZjJhOTky
NjZmMTlkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKQEAgLTIwNSw3
ICsyMDUsNyBAQCB2b2lkIENTU0ZvbnRTZWxlY3Rvcjo6YWRkRm9udEZhY2VSdWxlKFN0eWxlUnVs
ZUZvbnRGYWNlJiBmb250RmFjZVJ1bGUsIGJvb2wgaXNJbgogICAgIGlmIChmb250RmFjZS0+YWxs
U291cmNlc0ZhaWxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoUmVmUHRyPENTU0Zv
bnRGYWNlPiBleGlzdGluZ0ZhY2UgPSBtX2Nzc0ZvbnRGYWNlU2V0LT5sb29rdXBCeUNTU0Nvbm5l
Y3Rpb24oZm9udEZhY2VSdWxlKSkgeworICAgIGlmIChSZWZQdHI8Q1NTRm9udEZhY2U+IGV4aXN0
aW5nRmFjZSA9IG1fY3NzRm9udEZhY2VTZXQtPmxvb2tVcEJ5Q1NTQ29ubmVjdGlvbihmb250RmFj
ZVJ1bGUpKSB7CiAgICAgICAgIG1fY3NzRm9udEZhY2VTZXQtPnJlbW92ZSgqZXhpc3RpbmdGYWNl
KTsKICAgICAgICAgaWYgKGF1dG8qIGV4aXN0aW5nV3JhcHBlciA9IGV4aXN0aW5nRmFjZS0+ZXhp
c3RpbmdXcmFwcGVyKCkpCiAgICAgICAgICAgICBleGlzdGluZ1dyYXBwZXItPmFkb3B0KGZvbnRG
YWNlLmdldCgpKTsKQEAgLTI4Niw3ICsyODYsNyBAQCBGb250UmFuZ2VzIENTU0ZvbnRTZWxlY3Rv
cjo6Zm9udFJhbmdlc0ZvckZhbWlseShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcgog
ICAgIGJvb2wgcmVzb2x2ZUdlbmVyaWNGYW1pbHlGaXJzdCA9IGZhbWlseU5hbWUgPT0gc3RhbmRh
cmRGYW1pbHk7CiAKICAgICBBdG9taWNTdHJpbmcgZmFtaWx5Rm9yTG9va3VwID0gcmVzb2x2ZUdl
bmVyaWNGYW1pbHlGaXJzdCA/IHJlc29sdmVHZW5lcmljRmFtaWx5KG1fZG9jdW1lbnQsIGZvbnRE
ZXNjcmlwdGlvbiwgZmFtaWx5TmFtZSkgOiBmYW1pbHlOYW1lOwotICAgIENTU1NlZ21lbnRlZEZv
bnRGYWNlKiBmYWNlID0gbV9jc3NGb250RmFjZVNldC0+Z2V0Rm9udEZhY2UoZm9udERlc2NyaXB0
aW9uLnRyYWl0c01hc2soKSwgZmFtaWx5Rm9yTG9va3VwKTsKKyAgICBhdXRvKiBmYWNlID0gbV9j
c3NGb250RmFjZVNldC0+Zm9udEZhY2UoZm9udERlc2NyaXB0aW9uLnRyYWl0c01hc2soKSwgZmFt
aWx5Rm9yTG9va3VwKTsKICAgICBpZiAoIWZhY2UpIHsKICAgICAgICAgaWYgKCFyZXNvbHZlR2Vu
ZXJpY0ZhbWlseUZpcnN0KQogICAgICAgICAgICAgZmFtaWx5Rm9yTG9va3VwID0gcmVzb2x2ZUdl
bmVyaWNGYW1pbHkobV9kb2N1bWVudCwgZm9udERlc2NyaXB0aW9uLCBmYW1pbHlOYW1lKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNwcAppbmRleCA1Y2FhMjQxMzVjMjczNmZl
ZWZiYWIwOWEyNGQ3NzUwZWNiYTBlZmI3Li41OTUxY2FiZjRmYTU3MzNiMzg3ODY4YWZhNTBmMGM4
ZGRkMTE5MDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwCkBAIC03
NSw4ICs3NSw4IEBAIFJlZlB0cjxJbWFnZT4gQ1NTR3JhZGllbnRWYWx1ZTo6aW1hZ2UoUmVuZGVy
RWxlbWVudCogcmVuZGVyZXIsIGNvbnN0IEZsb2F0U2l6ZSYKIC8vIFNob3VsZCBvbmx5IGV2ZXIg
YmUgY2FsbGVkIGZvciBkZXByZWNhdGVkIGdyYWRpZW50cy4KIHN0YXRpYyBpbmxpbmUgYm9vbCBj
b21wYXJlU3RvcHMoY29uc3QgQ1NTR3JhZGllbnRDb2xvclN0b3AmIGEsIGNvbnN0IENTU0dyYWRp
ZW50Q29sb3JTdG9wJiBiKQogewotICAgIGRvdWJsZSBhVmFsID0gYS5tX3Bvc2l0aW9uLT5nZXRE
b3VibGVWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7Ci0gICAgZG91YmxlIGJW
YWwgPSBiLm1fcG9zaXRpb24tPmdldERvdWJsZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
TlVNQkVSKTsKKyAgICBkb3VibGUgYVZhbCA9IGEubV9wb3NpdGlvbi0+ZG91YmxlVmFsdWUoQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOworICAgIGRvdWJsZSBiVmFsID0gYi5tX3Bvc2l0
aW9uLT5kb3VibGVWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7CiAKICAgICBy
ZXR1cm4gYVZhbCA8IGJWYWw7CiB9CkBAIC0xNjAsOSArMTYwLDkgQEAgdm9pZCBDU1NHcmFkaWVu
dFZhbHVlOjphZGRTdG9wcyhHcmFkaWVudCYgZ3JhZGllbnQsIGNvbnN0IENTU1RvTGVuZ3RoQ29u
dmVyc2lvbkQKIAogICAgICAgICAgICAgZmxvYXQgb2Zmc2V0OwogICAgICAgICAgICAgaWYgKHN0
b3AubV9wb3NpdGlvbi0+aXNQZXJjZW50YWdlKCkpCi0gICAgICAgICAgICAgICAgb2Zmc2V0ID0g
c3RvcC5tX3Bvc2l0aW9uLT5nZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVS
Q0VOVEFHRSkgLyAxMDA7CisgICAgICAgICAgICAgICAgb2Zmc2V0ID0gc3RvcC5tX3Bvc2l0aW9u
LT5mbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSkgLyAxMDA7CiAg
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgb2Zmc2V0ID0gc3RvcC5tX3Bvc2l0aW9u
LT5nZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKKyAgICAgICAg
ICAgICAgICBvZmZzZXQgPSBzdG9wLm1fcG9zaXRpb24tPmZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19OVU1CRVIpOwogCiAgICAgICAgICAgICBncmFkaWVudC5hZGRDb2xvclN0b3Ao
b2Zmc2V0LCBzdG9wLm1fcmVzb2x2ZWRDb2xvcik7CiAgICAgICAgIH0KQEAgLTE5NSw3ICsxOTUs
NyBAQCB2b2lkIENTU0dyYWRpZW50VmFsdWU6OmFkZFN0b3BzKEdyYWRpZW50JiBncmFkaWVudCwg
Y29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRAogICAgICAgICBpZiAoc3RvcC5tX3Bvc2l0aW9u
KSB7CiAgICAgICAgICAgICBjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYgcG9zaXRpb25WYWx1ZSA9
ICpzdG9wLm1fcG9zaXRpb247CiAgICAgICAgICAgICBpZiAocG9zaXRpb25WYWx1ZS5pc1BlcmNl
bnRhZ2UoKSkKLSAgICAgICAgICAgICAgICBzdG9wc1tpXS5vZmZzZXQgPSBwb3NpdGlvblZhbHVl
LmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKSAvIDEwMDsK
KyAgICAgICAgICAgICAgICBzdG9wc1tpXS5vZmZzZXQgPSBwb3NpdGlvblZhbHVlLmZsb2F0VmFs
dWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKSAvIDEwMDsKICAgICAgICAgICAg
IGVsc2UgaWYgKHBvc2l0aW9uVmFsdWUuaXNMZW5ndGgoKSB8fCBwb3NpdGlvblZhbHVlLmlzVmll
d3BvcnRQZXJjZW50YWdlTGVuZ3RoKCkgfHwgcG9zaXRpb25WYWx1ZS5pc0NhbGN1bGF0ZWRQZXJj
ZW50YWdlV2l0aExlbmd0aCgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFjb21wdXRlZEdyYWRp
ZW50TGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgIEZsb2F0U2l6ZSBncmFkaWVudFNpemUo
Z3JhZGllbnRTdGFydCAtIGdyYWRpZW50RW5kKTsKQEAgLTQ5NywxOCArNDk3LDE4IEBAIHZvaWQg
Q1NTR3JhZGllbnRWYWx1ZTo6YWRkU3RvcHMoR3JhZGllbnQmIGdyYWRpZW50LCBjb25zdCBDU1NU
b0xlbmd0aENvbnZlcnNpb25ECiBzdGF0aWMgZmxvYXQgcG9zaXRpb25Gcm9tVmFsdWUoQ1NTUHJp
bWl0aXZlVmFsdWUmIHZhbHVlLCBjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiBjb252
ZXJzaW9uRGF0YSwgY29uc3QgRmxvYXRTaXplJiBzaXplLCBib29sIGlzSG9yaXpvbnRhbCkKIHsK
ICAgICBpZiAodmFsdWUuaXNOdW1iZXIoKSkKLSAgICAgICAgcmV0dXJuIHZhbHVlLmdldEZsb2F0
VmFsdWUoKSAqIGNvbnZlcnNpb25EYXRhLnpvb20oKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlLmZs
b2F0VmFsdWUoKSAqIGNvbnZlcnNpb25EYXRhLnpvb20oKTsKIAogICAgIGludCBlZGdlRGlzdGFu
Y2UgPSBpc0hvcml6b250YWwgPyBzaXplLndpZHRoKCkgOiBzaXplLmhlaWdodCgpOwogICAgIGlm
ICh2YWx1ZS5pc1BlcmNlbnRhZ2UoKSkKLSAgICAgICAgcmV0dXJuIHZhbHVlLmdldEZsb2F0VmFs
dWUoKSAvIDEwMC5mICogZWRnZURpc3RhbmNlOworICAgICAgICByZXR1cm4gdmFsdWUuZmxvYXRW
YWx1ZSgpIC8gMTAwLmYgKiBlZGdlRGlzdGFuY2U7CiAKICAgICBpZiAodmFsdWUuaXNDYWxjdWxh
dGVkUGVyY2VudGFnZVdpdGhMZW5ndGgoKSkgewogICAgICAgICBSZWY8Q2FsY3VsYXRpb25WYWx1
ZT4gY2FsY3VsYXRpb25WYWx1ZSB7IHZhbHVlLmNzc0NhbGNWYWx1ZSgpLT5jcmVhdGVDYWxjdWxh
dGlvblZhbHVlKGNvbnZlcnNpb25EYXRhKSB9OwogICAgICAgICByZXR1cm4gY2FsY3VsYXRpb25W
YWx1ZS0+ZXZhbHVhdGUoZWRnZURpc3RhbmNlKTsKICAgICB9CiAKLSAgICBzd2l0Y2ggKHZhbHVl
LmdldFZhbHVlSUQoKSkgeworICAgIHN3aXRjaCAodmFsdWUudmFsdWVJRCgpKSB7CiAgICAgY2Fz
ZSBDU1NWYWx1ZVRvcDoKICAgICAgICAgQVNTRVJUKCFpc0hvcml6b250YWwpOwogICAgICAgICBy
ZXR1cm4gMDsKQEAgLTU4MSwyMCArNTgxLDIwIEBAIFN0cmluZyBDU1NMaW5lYXJHcmFkaWVudFZh
bHVlOjpjdXN0b21DU1NUZXh0KCkgY29uc3QKICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICcpOwog
ICAgICAgICByZXN1bHQuYXBwZW5kKG1fc2Vjb25kWS0+Y3NzVGV4dCgpKTsKIAotICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9zdG9wcy5zaXplKCk7IGkrKykgewotICAgICAgICAg
ICAgY29uc3QgQ1NTR3JhZGllbnRDb2xvclN0b3AmIHN0b3AgPSBtX3N0b3BzW2ldOworICAgICAg
ICBmb3IgKGF1dG8mIHN0b3AgOiBtX3N0b3BzKSB7CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5k
TGl0ZXJhbCgiLCAiKTsKLSAgICAgICAgICAgIGlmIChzdG9wLm1fcG9zaXRpb24tPmdldERvdWJs
ZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSA9PSAwKSB7CisgICAgICAgICAg
ICBhdXRvIHBvc2l0aW9uID0gc3RvcC5tX3Bvc2l0aW9uLT5kb3VibGVWYWx1ZShDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX05VTUJFUik7CisgICAgICAgICAgICBpZiAoIXBvc2l0aW9uKSB7CiAgICAg
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoImZyb20oIik7CiAgICAgICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZChzdG9wLm1fY29sb3ItPmNzc1RleHQoKSk7CiAgICAgICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgnKScpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChzdG9wLm1fcG9z
aXRpb24tPmdldERvdWJsZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSA9PSAx
KSB7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHBvc2l0aW9uID09IDEpIHsKICAgICAgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgidG8oIik7CiAgICAgICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZChzdG9wLm1fY29sb3ItPmNzc1RleHQoKSk7CiAgICAgICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZCgnKScpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICByZXN1
bHQuYXBwZW5kTGl0ZXJhbCgiY29sb3Itc3RvcCgiKTsKLSAgICAgICAgICAgICAgICByZXN1bHQu
YXBwZW5kTnVtYmVyKHN0b3AubV9wb3NpdGlvbi0+Z2V0RG91YmxlVmFsdWUoQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19OVU1CRVIpKTsKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kTnVtYmVy
KHBvc2l0aW9uKTsKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiLCAiKTsK
ICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHN0b3AubV9jb2xvci0+Y3NzVGV4dCgpKTsK
ICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcpJyk7CkBAIC02NDIsNyArNjQyLDcgQEAg
U3RyaW5nIENTU0xpbmVhckdyYWRpZW50VmFsdWU6OmN1c3RvbUNTU1RleHQoKSBjb25zdAogICAg
ICAgICBpZiAobV9hbmdsZSAmJiBtX2FuZ2xlLT5jb21wdXRlRGVncmVlcygpICE9IDE4MCkgewog
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChtX2FuZ2xlLT5jc3NUZXh0KCkpOwogICAgICAgICAg
ICAgd3JvdGVTb21ldGhpbmcgPSB0cnVlOwotICAgICAgICB9IGVsc2UgaWYgKChtX2ZpcnN0WCB8
fCBtX2ZpcnN0WSkgJiYgISghbV9maXJzdFggJiYgbV9maXJzdFkgJiYgbV9maXJzdFktPmdldFZh
bHVlSUQoKSA9PSBDU1NWYWx1ZUJvdHRvbSkpIHsKKyAgICAgICAgfSBlbHNlIGlmICgobV9maXJz
dFggfHwgbV9maXJzdFkpICYmICEoIW1fZmlyc3RYICYmIG1fZmlyc3RZICYmIG1fZmlyc3RZLT52
YWx1ZUlEKCkgPT0gQ1NTVmFsdWVCb3R0b20pKSB7CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5k
TGl0ZXJhbCgidG8gIik7CiAgICAgICAgICAgICBpZiAobV9maXJzdFggJiYgbV9maXJzdFkpIHsK
ICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKG1fZmlyc3RYLT5jc3NUZXh0KCkpOwpAQCAt
NzU0LDcgKzc1NCw3IEBAIFJlZjxHcmFkaWVudD4gQ1NTTGluZWFyR3JhZGllbnRWYWx1ZTo6Y3Jl
YXRlR3JhZGllbnQoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvCiAgICAgRmxvYXRQb2ludCBm
aXJzdFBvaW50OwogICAgIEZsb2F0UG9pbnQgc2Vjb25kUG9pbnQ7CiAgICAgaWYgKG1fYW5nbGUp
IHsKLSAgICAgICAgZmxvYXQgYW5nbGUgPSBtX2FuZ2xlLT5nZXRGbG9hdFZhbHVlKENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfREVHKTsKKyAgICAgICAgZmxvYXQgYW5nbGUgPSBtX2FuZ2xlLT5mbG9h
dFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfREVHKTsKICAgICAgICAgZW5kUG9pbnRzRnJv
bUFuZ2xlKGFuZ2xlLCBzaXplLCBmaXJzdFBvaW50LCBzZWNvbmRQb2ludCwgbV9ncmFkaWVudFR5
cGUpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHN3aXRjaCAobV9ncmFkaWVudFR5cGUpIHsKQEAg
LTc4MSw5ICs3ODEsOSBAQCBSZWY8R3JhZGllbnQ+IENTU0xpbmVhckdyYWRpZW50VmFsdWU6OmNy
ZWF0ZUdyYWRpZW50KFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjbwogICAgICAgICAgICAgICAg
IC8vICJNYWdpYyIgY29ybmVycywgc28gdGhlIDUwJSBsaW5lIHRvdWNoZXMgdHdvIGNvcm5lcnMu
CiAgICAgICAgICAgICAgICAgZmxvYXQgcmlzZSA9IHNpemUud2lkdGgoKTsKICAgICAgICAgICAg
ICAgICBmbG9hdCBydW4gPSBzaXplLmhlaWdodCgpOwotICAgICAgICAgICAgICAgIGlmIChtX2Zp
cnN0WCAmJiBtX2ZpcnN0WC0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlTGVmdCkKKyAgICAgICAg
ICAgICAgICBpZiAobV9maXJzdFggJiYgbV9maXJzdFgtPnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUxl
ZnQpCiAgICAgICAgICAgICAgICAgICAgIHJ1biAqPSAtMTsKLSAgICAgICAgICAgICAgICBpZiAo
bV9maXJzdFkgJiYgbV9maXJzdFktPmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZUJvdHRvbSkKKyAg
ICAgICAgICAgICAgICBpZiAobV9maXJzdFkgJiYgbV9maXJzdFktPnZhbHVlSUQoKSA9PSBDU1NW
YWx1ZUJvdHRvbSkKICAgICAgICAgICAgICAgICAgICAgcmlzZSAqPSAtMTsKICAgICAgICAgICAg
ICAgICAvLyBDb21wdXRlIGFuZ2xlLCBhbmQgZmxpcCBpdCBiYWNrIHRvICJiZWFyaW5nIGFuZ2xl
IiBkZWdyZWVzLgogICAgICAgICAgICAgICAgIGZsb2F0IGFuZ2xlID0gOTAgLSByYWQyZGVnKGF0
YW4yKHJpc2UsIHJ1bikpOwpAQCAtODYyLDIwICs4NjIsMjAgQEAgU3RyaW5nIENTU1JhZGlhbEdy
YWRpZW50VmFsdWU6OmN1c3RvbUNTU1RleHQoKSBjb25zdAogICAgICAgICByZXN1bHQuYXBwZW5k
KG1fc2Vjb25kUmFkaXVzLT5jc3NUZXh0KCkpOwogCiAgICAgICAgIC8vIEZJWE1FOiBzaGFyZT8K
LSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc3RvcHMuc2l6ZSgpOyBpKyspIHsK
LSAgICAgICAgICAgIGNvbnN0IENTU0dyYWRpZW50Q29sb3JTdG9wJiBzdG9wID0gbV9zdG9wc1tp
XTsKKyAgICAgICAgZm9yIChhdXRvJiBzdG9wIDogbV9zdG9wcykgewogICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZExpdGVyYWwoIiwgIik7Ci0gICAgICAgICAgICBpZiAoc3RvcC5tX3Bvc2l0aW9u
LT5nZXREb3VibGVWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikgPT0gMCkgewor
ICAgICAgICAgICAgYXV0byBwb3NpdGlvbiA9IHN0b3AubV9wb3NpdGlvbi0+ZG91YmxlVmFsdWUo
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOworICAgICAgICAgICAgaWYgKCFwb3NpdGlv
bikgewogICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJmcm9tKCIpOwogICAg
ICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoc3RvcC5tX2NvbG9yLT5jc3NUZXh0KCkpOwogICAg
ICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyknKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAo
c3RvcC5tX3Bvc2l0aW9uLT5nZXREb3VibGVWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05V
TUJFUikgPT0gMSkgeworICAgICAgICAgICAgfSBlbHNlIGlmIChwb3NpdGlvbiA9PSAxKSB7CiAg
ICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoInRvKCIpOwogICAgICAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoc3RvcC5tX2NvbG9yLT5jc3NUZXh0KCkpOwogICAgICAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoJyknKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoImNvbG9yLXN0b3AoIik7Ci0gICAgICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZE51bWJlcihzdG9wLm1fcG9zaXRpb24tPmdldERvdWJsZVZhbHVlKENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSk7CisgICAgICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZE51bWJlcihwb3NpdGlvbik7CiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVy
YWwoIiwgIik7CiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChzdG9wLm1fY29sb3ItPmNz
c1RleHQoKSk7CiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnKScpOwpAQCAtOTM3LDEy
ICs5MzcsMTIgQEAgU3RyaW5nIENTU1JhZGlhbEdyYWRpZW50VmFsdWU6OmN1c3RvbUNTU1RleHQo
KSBjb25zdAogCiAgICAgICAgIC8vIFRoZSBvbmx5IGFtYmlndW91cyBjYXNlIHRoYXQgbmVlZHMg
YW4gZXhwbGljaXQgc2hhcGUgdG8gYmUgcHJvdmlkZWQKICAgICAgICAgLy8gaXMgd2hlbiBhIHNp
emluZyBrZXl3b3JkIGlzIHVzZWQgKG9yIGFsbCBzaXppbmcgaXMgb21pdHRlZCkuCi0gICAgICAg
IGlmIChtX3NoYXBlICYmIG1fc2hhcGUtPmdldFZhbHVlSUQoKSAhPSBDU1NWYWx1ZUVsbGlwc2Ug
JiYgKG1fc2l6aW5nQmVoYXZpb3IgfHwgKCFtX3NpemluZ0JlaGF2aW9yICYmICFtX2VuZEhvcml6
b250YWxTaXplKSkpIHsKKyAgICAgICAgaWYgKG1fc2hhcGUgJiYgbV9zaGFwZS0+dmFsdWVJRCgp
ICE9IENTU1ZhbHVlRWxsaXBzZSAmJiAobV9zaXppbmdCZWhhdmlvciB8fCAoIW1fc2l6aW5nQmVo
YXZpb3IgJiYgIW1fZW5kSG9yaXpvbnRhbFNpemUpKSkgewogICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZExpdGVyYWwoImNpcmNsZSIpOwogICAgICAgICAgICAgd3JvdGVTb21ldGhpbmcgPSB0cnVl
OwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKG1fc2l6aW5nQmVoYXZpb3IgJiYgbV9zaXppbmdC
ZWhhdmlvci0+Z2V0VmFsdWVJRCgpICE9IENTU1ZhbHVlRmFydGhlc3RDb3JuZXIpIHsKKyAgICAg
ICAgaWYgKG1fc2l6aW5nQmVoYXZpb3IgJiYgbV9zaXppbmdCZWhhdmlvci0+dmFsdWVJRCgpICE9
IENTU1ZhbHVlRmFydGhlc3RDb3JuZXIpIHsKICAgICAgICAgICAgIGlmICh3cm90ZVNvbWV0aGlu
ZykKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgJyk7CiAgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKG1fc2l6aW5nQmVoYXZpb3ItPmNzc1RleHQoKSk7CkBAIC05OTksOSArOTk5LDkg
QEAgZmxvYXQgQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6cmVzb2x2ZVJhZGl1cyhDU1NQcmltaXRp
dmVWYWx1ZSYgcmFkaXVzLCBjb25zdCBDU1MKIHsKICAgICBmbG9hdCByZXN1bHQgPSAwOwogICAg
IGlmIChyYWRpdXMuaXNOdW1iZXIoKSkgLy8gQ2FuIHRoZSByYWRpdXMgYmUgYSBwZXJjZW50YWdl
PwotICAgICAgICByZXN1bHQgPSByYWRpdXMuZ2V0RmxvYXRWYWx1ZSgpICogY29udmVyc2lvbkRh
dGEuem9vbSgpOworICAgICAgICByZXN1bHQgPSByYWRpdXMuZmxvYXRWYWx1ZSgpICogY29udmVy
c2lvbkRhdGEuem9vbSgpOwogICAgIGVsc2UgaWYgKHdpZHRoT3JIZWlnaHQgJiYgcmFkaXVzLmlz
UGVyY2VudGFnZSgpKQotICAgICAgICByZXN1bHQgPSAqd2lkdGhPckhlaWdodCAqIHJhZGl1cy5n
ZXRGbG9hdFZhbHVlKCkgLyAxMDA7CisgICAgICAgIHJlc3VsdCA9ICp3aWR0aE9ySGVpZ2h0ICog
cmFkaXVzLmZsb2F0VmFsdWUoKSAvIDEwMDsKICAgICBlbHNlCiAgICAgICAgIHJlc3VsdCA9IHJh
ZGl1cy5jb21wdXRlTGVuZ3RoPGZsb2F0Pihjb252ZXJzaW9uRGF0YSk7CiAKQEAgLTExMjIsMTQg
KzExMjIsMTQgQEAgUmVmPEdyYWRpZW50PiBDU1NSYWRpYWxHcmFkaWVudFZhbHVlOjpjcmVhdGVH
cmFkaWVudChSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY28KICAgICB9IGVsc2UgewogICAgICAg
ICBlbnVtIEdyYWRpZW50U2hhcGUgeyBDaXJjbGUsIEVsbGlwc2UgfTsKICAgICAgICAgR3JhZGll
bnRTaGFwZSBzaGFwZSA9IEVsbGlwc2U7Ci0gICAgICAgIGlmICgobV9zaGFwZSAmJiBtX3NoYXBl
LT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVDaXJjbGUpCisgICAgICAgIGlmICgobV9zaGFwZSAm
JiBtX3NoYXBlLT52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVDaXJjbGUpCiAgICAgICAgICAgICB8fCAo
IW1fc2hhcGUgJiYgIW1fc2l6aW5nQmVoYXZpb3IgJiYgbV9lbmRIb3Jpem9udGFsU2l6ZSAmJiAh
bV9lbmRWZXJ0aWNhbFNpemUpKQogICAgICAgICAgICAgc2hhcGUgPSBDaXJjbGU7CiAKICAgICAg
ICAgZW51bSBHcmFkaWVudEZpbGwgeyBDbG9zZXN0U2lkZSwgQ2xvc2VzdENvcm5lciwgRmFydGhl
c3RTaWRlLCBGYXJ0aGVzdENvcm5lciB9OwogICAgICAgICBHcmFkaWVudEZpbGwgZmlsbCA9IEZh
cnRoZXN0Q29ybmVyOwogCi0gICAgICAgIHN3aXRjaCAobV9zaXppbmdCZWhhdmlvciA/IG1fc2l6
aW5nQmVoYXZpb3ItPmdldFZhbHVlSUQoKSA6IDApIHsKKyAgICAgICAgc3dpdGNoIChtX3Npemlu
Z0JlaGF2aW9yID8gbV9zaXppbmdCZWhhdmlvci0+dmFsdWVJRCgpIDogMCkgewogICAgICAgICBj
YXNlIENTU1ZhbHVlQ29udGFpbjoKICAgICAgICAgY2FzZSBDU1NWYWx1ZUNsb3Nlc3RTaWRlOgog
ICAgICAgICAgICAgZmlsbCA9IENsb3Nlc3RTaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0dyb3VwaW5nUnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JvdXBp
bmdSdWxlLmNwcAppbmRleCA1YTZkNWYwMjliY2UxMjg2N2I5NGM0Mzg5NmY5ZGI5MDQyZWQxMzli
Li5iNGZmNjA3NDM5MmJkMGU0YTk5N2VhZmVhZTBhYjQ1OTE3MDUxODYzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JvdXBpbmdSdWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTR3JvdXBpbmdSdWxlLmNwcApAQCAtNTcsMTQgKzU3LDEzIEBAIENTU0dyb3VwaW5n
UnVsZTo6fkNTU0dyb3VwaW5nUnVsZSgpCiAgICAgfQogfQogCi11bnNpZ25lZCBDU1NHcm91cGlu
Z1J1bGU6Omluc2VydFJ1bGUoY29uc3QgU3RyaW5nJiBydWxlU3RyaW5nLCB1bnNpZ25lZCBpbmRl
eCwgRXhjZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRpb25Pcjx1bnNpZ25lZD4gQ1NTR3JvdXBpbmdS
dWxlOjppbnNlcnRSdWxlKGNvbnN0IFN0cmluZyYgcnVsZVN0cmluZywgdW5zaWduZWQgaW5kZXgp
CiB7CiAgICAgQVNTRVJUKG1fY2hpbGRSdWxlQ1NTT01XcmFwcGVycy5zaXplKCkgPT0gbV9ncm91
cFJ1bGUtPmNoaWxkUnVsZXMoKS5zaXplKCkpOwogCiAgICAgaWYgKGluZGV4ID4gbV9ncm91cFJ1
bGUtPmNoaWxkUnVsZXMoKS5zaXplKCkpIHsKICAgICAgICAgLy8gSU5ERVhfU0laRV9FUlI6IFJh
aXNlZCBpZiB0aGUgc3BlY2lmaWVkIGluZGV4IGlzIG5vdCBhIHZhbGlkIGluc2VydGlvbiBwb2lu
dC4KLSAgICAgICAgZWMgPSBJTkRFWF9TSVpFX0VSUjsKLSAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBJTkRFWF9TSVpFX0VSUiB9OwogICAgIH0KIAogICAgIENT
U1BhcnNlciBwYXJzZXIocGFyc2VyQ29udGV4dCgpKTsKQEAgLTcyLDggKzcxLDcgQEAgdW5zaWdu
ZWQgQ1NTR3JvdXBpbmdSdWxlOjppbnNlcnRSdWxlKGNvbnN0IFN0cmluZyYgcnVsZVN0cmluZywg
dW5zaWduZWQgaW5kZXgsIEUKICAgICBSZWZQdHI8U3R5bGVSdWxlQmFzZT4gbmV3UnVsZSA9IHBh
cnNlci5wYXJzZVJ1bGUoc3R5bGVTaGVldCA/ICZzdHlsZVNoZWV0LT5jb250ZW50cygpIDogbnVs
bHB0ciwgcnVsZVN0cmluZyk7CiAgICAgaWYgKCFuZXdSdWxlKSB7CiAgICAgICAgIC8vIFNZTlRB
WF9FUlI6IFJhaXNlZCBpZiB0aGUgc3BlY2lmaWVkIHJ1bGUgaGFzIGEgc3ludGF4IGVycm9yIGFu
ZCBpcyB1bnBhcnNhYmxlLgotICAgICAgICBlYyA9IFNZTlRBWF9FUlI7Ci0gICAgICAgIHJldHVy
biAwOworICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU1lOVEFYX0VSUiB9OwogICAgIH0KIAog
ICAgIGlmIChuZXdSdWxlLT5pc0ltcG9ydFJ1bGUoKSkgewpAQCAtODQsOCArODIsNyBAQCB1bnNp
Z25lZCBDU1NHcm91cGluZ1J1bGU6Omluc2VydFJ1bGUoY29uc3QgU3RyaW5nJiBydWxlU3RyaW5n
LCB1bnNpZ25lZCBpbmRleCwgRQogICAgICAgICAvLyBISUVSQVJDSFlfUkVRVUVTVF9FUlI6IFJh
aXNlZCBpZiB0aGUgcnVsZSBjYW5ub3QgYmUgaW5zZXJ0ZWQgYXQgdGhlIHNwZWNpZmllZAogICAg
ICAgICAvLyBpbmRleCwgZS5nLiwgaWYgYW4gQGltcG9ydCBydWxlIGlzIGluc2VydGVkIGFmdGVy
IGEgc3RhbmRhcmQgcnVsZSBzZXQgb3Igb3RoZXIKICAgICAgICAgLy8gYXQtcnVsZS4KLSAgICAg
ICAgZWMgPSBISUVSQVJDSFlfUkVRVUVTVF9FUlI7Ci0gICAgICAgIHJldHVybiAwOworICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgSElFUkFSQ0hZX1JFUVVFU1RfRVJSIH07CiAgICAgfQogICAg
IENTU1N0eWxlU2hlZXQ6OlJ1bGVNdXRhdGlvblNjb3BlIG11dGF0aW9uU2NvcGUodGhpcyk7CiAK
QEAgLTk1LDE1ICs5MiwxNCBAQCB1bnNpZ25lZCBDU1NHcm91cGluZ1J1bGU6Omluc2VydFJ1bGUo
Y29uc3QgU3RyaW5nJiBydWxlU3RyaW5nLCB1bnNpZ25lZCBpbmRleCwgRQogICAgIHJldHVybiBp
bmRleDsKIH0KIAotdm9pZCBDU1NHcm91cGluZ1J1bGU6OmRlbGV0ZVJ1bGUodW5zaWduZWQgaW5k
ZXgsIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8dm9pZD4gQ1NTR3JvdXBpbmdSdWxl
OjpkZWxldGVSdWxlKHVuc2lnbmVkIGluZGV4KQogewogICAgIEFTU0VSVChtX2NoaWxkUnVsZUNT
U09NV3JhcHBlcnMuc2l6ZSgpID09IG1fZ3JvdXBSdWxlLT5jaGlsZFJ1bGVzKCkuc2l6ZSgpKTsK
IAogICAgIGlmIChpbmRleCA+PSBtX2dyb3VwUnVsZS0+Y2hpbGRSdWxlcygpLnNpemUoKSkgewog
ICAgICAgICAvLyBJTkRFWF9TSVpFX0VSUjogUmFpc2VkIGlmIHRoZSBzcGVjaWZpZWQgaW5kZXgg
ZG9lcyBub3QgY29ycmVzcG9uZCB0byBhCiAgICAgICAgIC8vIHJ1bGUgaW4gdGhlIG1lZGlhIHJ1
bGUgbGlzdC4KLSAgICAgICAgZWMgPSBJTkRFWF9TSVpFX0VSUjsKLSAgICAgICAgcmV0dXJuOwor
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSU5ERVhfU0laRV9FUlIgfTsKICAgICB9CiAKICAg
ICBDU1NTdHlsZVNoZWV0OjpSdWxlTXV0YXRpb25TY29wZSBtdXRhdGlvblNjb3BlKHRoaXMpOwpA
QCAtMTEzLDYgKzEwOSw4IEBAIHZvaWQgQ1NTR3JvdXBpbmdSdWxlOjpkZWxldGVSdWxlKHVuc2ln
bmVkIGluZGV4LCBFeGNlcHRpb25Db2RlJiBlYykKICAgICBpZiAobV9jaGlsZFJ1bGVDU1NPTVdy
YXBwZXJzW2luZGV4XSkKICAgICAgICAgbV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJzW2luZGV4XS0+
c2V0UGFyZW50UnVsZSgwKTsKICAgICBtX2NoaWxkUnVsZUNTU09NV3JhcHBlcnMucmVtb3ZlKGlu
ZGV4KTsKKworICAgIHJldHVybiB7IH07CiB9CiAKIHZvaWQgQ1NTR3JvdXBpbmdSdWxlOjphcHBl
bmRDc3NUZXh0Rm9ySXRlbXMoU3RyaW5nQnVpbGRlciYgcmVzdWx0KSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyb3VwaW5nUnVsZS5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0dyb3VwaW5nUnVsZS5oCmluZGV4IDRmZjE2MDA0NWI3NzY5MTFkZGVkZDJlMjU0MTYy
YjU1NWE5YzRlMWQuLmY1NGEzOTcxOTRlNWY5NzQ2NWUyYTVlMTg2ZDg1MmJmNDA5ZDUyMzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcm91cGluZ1J1bGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTR3JvdXBpbmdSdWxlLmgKQEAgLTIzLDI0ICsyMywyMiBAQAogI3By
YWdtYSBvbmNlCiAKICNpbmNsdWRlICJDU1NSdWxlLmgiCi0jaW5jbHVkZSAiU3R5bGVSdWxlLmgi
CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBDU1NSdWxlTGlzdDsKK2NsYXNzIFN0eWxlUnVsZUdyb3VwOwog
CiBjbGFzcyBDU1NHcm91cGluZ1J1bGUgOiBwdWJsaWMgQ1NTUnVsZSB7CiBwdWJsaWM6CiAgICAg
dmlydHVhbCB+Q1NTR3JvdXBpbmdSdWxlKCk7CiAKLSAgICB2b2lkIHJlYXR0YWNoKFN0eWxlUnVs
ZUJhc2UmKSBvdmVycmlkZTsKLQogICAgIFdFQkNPUkVfRVhQT1JUIENTU1J1bGVMaXN0JiBjc3NS
dWxlcygpIGNvbnN0OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdW5zaWduZWQgaW5zZXJ0UnVsZShj
b25zdCBTdHJpbmcmIHJ1bGUsIHVuc2lnbmVkIGluZGV4LCBFeGNlcHRpb25Db2RlJik7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBkZWxldGVSdWxlKHVuc2lnbmVkIGluZGV4LCBFeGNlcHRpb25D
b2RlJik7CisgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8dW5zaWduZWQ+IGluc2VydFJ1
bGUoY29uc3QgU3RyaW5nJiBydWxlLCB1bnNpZ25lZCBpbmRleCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgRXhjZXB0aW9uT3I8dm9pZD4gZGVsZXRlUnVsZSh1bnNpZ25lZCBpbmRleCk7CiAgICAgICAg
IAogICAgIC8vIEZvciBDU1NSdWxlTGlzdAogICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0OwpA
QCAtNDksOSArNDcsMTMgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIENTU0dyb3VwaW5nUnVs
ZShTdHlsZVJ1bGVHcm91cCYgZ3JvdXBSdWxlLCBDU1NTdHlsZVNoZWV0KiBwYXJlbnQpOwogICAg
IAorICAgIHZvaWQgcmVhdHRhY2goU3R5bGVSdWxlQmFzZSYpIG92ZXJyaWRlOworCiAgICAgdm9p
ZCBhcHBlbmRDc3NUZXh0Rm9ySXRlbXMoU3RyaW5nQnVpbGRlciYpIGNvbnN0OwogCiAgICAgUmVm
PFN0eWxlUnVsZUdyb3VwPiBtX2dyb3VwUnVsZTsKKworcHJpdmF0ZToKICAgICBtdXRhYmxlIFZl
Y3RvcjxSZWZQdHI8Q1NTUnVsZT4+IG1fY2hpbGRSdWxlQ1NTT01XcmFwcGVyczsKICAgICBtdXRh
YmxlIHN0ZDo6dW5pcXVlX3B0cjxDU1NSdWxlTGlzdD4gbV9ydWxlTGlzdENTU09NV3JhcHBlcjsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAKaW5k
ZXggZTNiNmQzMjZhMmIyMDY5YmQ4NzAyOGFjMzBiM2I2YjRkMjg3ZGY1My4uYTc1MjgzYTJiMjdj
M2RlZDhkOTQzMTJkZTA0YTQxNThlZWNjMmY5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcApAQCAtMjQwLDcgKzI0MCw3IEBAIGJvb2wgQ1NTSW1h
Z2VHZW5lcmF0b3JWYWx1ZTo6c3ViaW1hZ2VJc1BlbmRpbmcoY29uc3QgQ1NTVmFsdWUmIHZhbHVl
KQogICAgIGlmIChpczxDU1NJbWFnZUdlbmVyYXRvclZhbHVlPih2YWx1ZSkpCiAgICAgICAgIHJl
dHVybiBkb3duY2FzdDxDU1NJbWFnZUdlbmVyYXRvclZhbHVlPih2YWx1ZSkuaXNQZW5kaW5nKCk7
CiAKLSAgICBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSAmJiBkb3duY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZT4odmFsdWUpLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUpCisgICAg
aWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkgJiYgZG93bmNhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWU+KHZhbHVlKS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTI2MSw3ICsyNjEsNyBAQCBD
YWNoZWRJbWFnZSogQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6Y2FjaGVkSW1hZ2VGb3JDU1NWYWx1
ZShDU1NWYWx1ZSYgdmFsdWUsIENhYwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAK
LSAgICBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSAmJiBkb3duY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZT4odmFsdWUpLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUpCisgICAgaWYg
KGlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkgJiYgZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWU+KHZhbHVlKS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0lt
YWdlU2V0VmFsdWUuY3BwCmluZGV4IDVhOWMyMjIzZDRmMWM0MmZmY2FhY2RjZTJlMzFkZDc0NjNi
ODFlZjUuLjVlMTFiMmM3YmQ0OGNkZTk1NWI3ZWExOTNiMGNjOGMyOTI5ZmRkMWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVNldFZhbHVlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgdm9pZCBD
U1NJbWFnZVNldFZhbHVlOjpmaWxsSW1hZ2VTZXQoKQogICAgICAgICArK2k7CiAgICAgICAgIEFT
U0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGkgPCBsZW5ndGgpOwogICAgICAgICBDU1NW
YWx1ZSogc2NhbGVGYWN0b3JWYWx1ZSA9IGl0ZW0oaSk7Ci0gICAgICAgIGZsb2F0IHNjYWxlRmFj
dG9yID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCpzY2FsZUZhY3RvclZhbHVlKS5nZXRG
bG9hdFZhbHVlKCk7CisgICAgICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gZG93bmNhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWU+KCpzY2FsZUZhY3RvclZhbHVlKS5mbG9hdFZhbHVlKCk7CiAKICAgICAgICAg
SW1hZ2VXaXRoU2NhbGUgaW1hZ2U7CiAgICAgICAgIGltYWdlLmltYWdlVVJMID0gaW1hZ2VVUkw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTWVkaWFSdWxlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTTWVkaWFSdWxlLmgKaW5kZXggZmIxYmM0ZTlhNGYyZjY2NTYxM2I4ZDk4
ZjJkYmQxOGMxOTk3Njg1Yy4uMjE2MGZhY2E5ZTRhNjgzMzUwMTc2MzYzMGNiODM4MjU5MmY4NGQ2
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU01lZGlhUnVsZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NNZWRpYVJ1bGUuaApAQCAtMjcsNiArMjcsNyBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZWRpYUxpc3Q7CitjbGFzcyBNZWRpYVF1ZXJ5U2V0Owog
Y2xhc3MgU3R5bGVSdWxlTWVkaWE7CiAKIGNsYXNzIENTU01lZGlhUnVsZSBmaW5hbCA6IHB1Ymxp
YyBDU1NHcm91cGluZ1J1bGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU01l
ZGlhUnVsZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTWVkaWFSdWxlLmlkbAppbmRleCA0
ZWRhODk3OWQ1MTFlZjljMDk5MGQ5ZWQ0Njc1N2I0MjkwZmY4OGU1Li5jZjIxNTU1MTFiMDlmNGYz
YzRiMDdjNTVmMWUwMDg4OWFmYWIxMmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTTWVkaWFSdWxlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTWVkaWFSdWxlLmlk
bApAQCAtMjIsNiArMjIsNiBAQCBpbnRlcmZhY2UgQ1NTTWVkaWFSdWxlIDogQ1NTUnVsZSB7CiAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIE1lZGlhTGlzdCBtZWRpYTsKICAgICByZWFkb25seSBhdHRy
aWJ1dGUgQ1NTUnVsZUxpc3QgY3NzUnVsZXM7CiAKLSAgICBbTWF5VGhyb3dMZWdhY3lFeGNlcHRp
b25dIHVuc2lnbmVkIGxvbmcgaW5zZXJ0UnVsZShvcHRpb25hbCBET01TdHJpbmcgcnVsZSA9ICJ1
bmRlZmluZWQiLCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIGluZGV4ID0gMCk7Ci0gICAgW01heVRo
cm93TGVnYWN5RXhjZXB0aW9uXSB2b2lkIGRlbGV0ZVJ1bGUob3B0aW9uYWwgdW5zaWduZWQgbG9u
ZyBpbmRleCA9IDApOworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5zaWduZWQgbG9uZyBpbnNl
cnRSdWxlKG9wdGlvbmFsIERPTVN0cmluZyBydWxlID0gInVuZGVmaW5lZCIsIG9wdGlvbmFsIHVu
c2lnbmVkIGxvbmcgaW5kZXggPSAwKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgZGVs
ZXRlUnVsZShvcHRpb25hbCB1bnNpZ25lZCBsb25nIGluZGV4ID0gMCk7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKaW5kZXggOTg3NzEzYzkxYWY5NWRhZTg1OTc4
ZGFhMjA0NTAzMWVmYThjNjg1ZS4uZjRiMzJkNDc0N2QyZTBkYTg5ZTkwZWFkYTA3YTVjMTJiNmY4
MmExNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCkBAIC02Mjks
MTMgKzYyOSwxMyBAQCBkb3VibGUgQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVEZWdyZWVzKCkg
Y29uc3QKIHsKICAgICBzd2l0Y2ggKHByaW1pdGl2ZVR5cGUoKSkgewogICAgIGNhc2UgQ1NTX0RF
RzoKLSAgICAgICAgcmV0dXJuIGdldERvdWJsZVZhbHVlKCk7CisgICAgICAgIHJldHVybiBkb3Vi
bGVWYWx1ZSgpOwogICAgIGNhc2UgQ1NTX1JBRDoKLSAgICAgICAgcmV0dXJuIHJhZDJkZWcoZ2V0
RG91YmxlVmFsdWUoKSk7CisgICAgICAgIHJldHVybiByYWQyZGVnKGRvdWJsZVZhbHVlKCkpOwog
ICAgIGNhc2UgQ1NTX0dSQUQ6Ci0gICAgICAgIHJldHVybiBncmFkMmRlZyhnZXREb3VibGVWYWx1
ZSgpKTsKKyAgICAgICAgcmV0dXJuIGdyYWQyZGVnKGRvdWJsZVZhbHVlKCkpOwogICAgIGNhc2Ug
Q1NTX1RVUk46Ci0gICAgICAgIHJldHVybiB0dXJuMmRlZyhnZXREb3VibGVWYWx1ZSgpKTsKKyAg
ICAgICAgcmV0dXJuIHR1cm4yZGVnKGRvdWJsZVZhbHVlKCkpOwogICAgIGRlZmF1bHQ6CiAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gMDsKQEAgLTY4MywxMCAr
NjgzLDEwIEBAIGRvdWJsZSBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aERvdWJsZShj
b25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiBjCiAgICAgICAgIC8vIFRoZSBtdWx0aXBs
aWVyIGFuZCBmYWN0b3IgaXMgYXBwbGllZCB0byBlYWNoIHZhbHVlIGluIHRoZSBjYWxjIGV4cHJl
c3Npb24gaW5kaXZpZHVhbGx5CiAgICAgICAgIHJldHVybiBtX3ZhbHVlLmNhbGMtPmNvbXB1dGVM
ZW5ndGhQeChjb252ZXJzaW9uRGF0YSk7CiAKLSAgICByZXR1cm4gY29tcHV0ZU5vbkNhbGNMZW5n
dGhEb3VibGUoY29udmVyc2lvbkRhdGEsIHByaW1pdGl2ZVR5cGUoKSwgbV92YWx1ZS5udW0pOwor
ICAgIHJldHVybiBjb21wdXRlTm9uQ2FsY0xlbmd0aERvdWJsZShjb252ZXJzaW9uRGF0YSwgc3Rh
dGljX2Nhc3Q8VW5pdFR5cGVzPihwcmltaXRpdmVUeXBlKCkpLCBtX3ZhbHVlLm51bSk7CiB9CiAK
LWRvdWJsZSBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZU5vbkNhbGNMZW5ndGhEb3VibGUoY29u
c3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEsIHVuc2lnbmVkIHNo
b3J0IHByaW1pdGl2ZVR5cGUsIGRvdWJsZSB2YWx1ZSkKK2RvdWJsZSBDU1NQcmltaXRpdmVWYWx1
ZTo6Y29tcHV0ZU5vbkNhbGNMZW5ndGhEb3VibGUoY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9u
RGF0YSYgY29udmVyc2lvbkRhdGEsIFVuaXRUeXBlcyBwcmltaXRpdmVUeXBlLCBkb3VibGUgdmFs
dWUpCiB7CiAgICAgZG91YmxlIGZhY3RvcjsKIApAQCAtNzY2LDE1ICs3NjYsMTUgQEAgZG91Ymxl
IENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTm9uQ2FsY0xlbmd0aERvdWJsZShjb25zdCBDU1NU
b0xlbmd0aENvbnZlcnNpb24KICAgICByZXR1cm4gcmVzdWx0ICogY29udmVyc2lvbkRhdGEuem9v
bSgpOwogfQogCi12b2lkIENTU1ByaW1pdGl2ZVZhbHVlOjpzZXRGbG9hdFZhbHVlKHVuc2lnbmVk
IHNob3J0LCBkb3VibGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8dm9pZD4gQ1NT
UHJpbWl0aXZlVmFsdWU6OnNldEZsb2F0VmFsdWUodW5zaWduZWQgc2hvcnQsIGRvdWJsZSkKIHsK
ICAgICAvLyBLZWVwaW5nIHZhbHVlcyBpbW11dGFibGUgbWFrZXMgb3B0aW1pemF0aW9ucyBlYXNp
ZXIgYW5kIGFsbG93cyBzaGFyaW5nIG9mIHRoZSBwcmltaXRpdmUgdmFsdWUgb2JqZWN0cy4KICAg
ICAvLyBObyBvdGhlciBlbmdpbmUgc3VwcG9ydHMgbXV0YXRpbmcgc3R5bGUgdGhyb3VnaCB0aGlz
IEFQSS4gQ29tcHV0ZWQgc3R5bGUgaXMgYWx3YXlzIHJlYWQtb25seSBhbnl3YXkuCiAgICAgLy8g
U3VwcG9ydGluZyBzZXR0ZXIgd291bGQgcmVxdWlyZSBtYWtpbmcgcHJpbWl0aXZlIHZhbHVlIGNv
cHktb24td3JpdGUgYW5kIHRha2luZyBjYXJlIG9mIHN0eWxlIGludmFsaWRhdGlvbi4KLSAgICBl
YyA9IE5PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUjsKKyAgICByZXR1cm4gRXhjZXB0aW9uIHsg
Tk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSIH07CiB9CiAKLWRvdWJsZSBDU1NQcmltaXRpdmVW
YWx1ZTo6Y29udmVyc2lvblRvQ2Fub25pY2FsVW5pdHNTY2FsZUZhY3Rvcih1bnNpZ25lZCBzaG9y
dCB1bml0VHlwZSkKK2RvdWJsZSBDU1NQcmltaXRpdmVWYWx1ZTo6Y29udmVyc2lvblRvQ2Fub25p
Y2FsVW5pdHNTY2FsZUZhY3RvcihVbml0VHlwZXMgdW5pdFR5cGUpCiB7CiAgICAgZG91YmxlIGZh
Y3RvciA9IDEuMDsKICAgICAvLyBGSVhNRTogdGhlIHN3aXRjaCBjYW4gYmUgcmVwbGFjZWQgYnkg
YW4gYXJyYXkgb2Ygc2NhbGUgZmFjdG9ycy4KQEAgLTgyNiwyNyArODI2LDIwIEBAIGRvdWJsZSBD
U1NQcmltaXRpdmVWYWx1ZTo6Y29udmVyc2lvblRvQ2Fub25pY2FsVW5pdHNTY2FsZUZhY3Rvcih1
bnNpZ25lZCBzaG9ydCB1CiAgICAgcmV0dXJuIGZhY3RvcjsKIH0KIAotZG91YmxlIENTU1ByaW1p
dGl2ZVZhbHVlOjpnZXREb3VibGVWYWx1ZSh1bnNpZ25lZCBzaG9ydCB1bml0VHlwZSwgRXhjZXB0
aW9uQ29kZSYgZWMpIGNvbnN0CitFeGNlcHRpb25PcjxmbG9hdD4gQ1NTUHJpbWl0aXZlVmFsdWU6
OmdldEZsb2F0VmFsdWUodW5zaWduZWQgc2hvcnQgdW5pdFR5cGUpIGNvbnN0CiB7Ci0gICAgZG91
YmxlIHJlc3VsdCA9IDA7Ci0gICAgYm9vbCBzdWNjZXNzID0gZ2V0RG91YmxlVmFsdWVJbnRlcm5h
bChzdGF0aWNfY2FzdDxVbml0VHlwZXM+KHVuaXRUeXBlKSwgJnJlc3VsdCk7Ci0gICAgaWYgKCFz
dWNjZXNzKSB7Ci0gICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwotICAgICAgICByZXR1
cm4gMC4wOwotICAgIH0KLQotICAgIGVjID0gMDsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIGF1
dG8gcmVzdWx0ID0gZG91YmxlVmFsdWVJbnRlcm5hbChzdGF0aWNfY2FzdDxVbml0VHlwZXM+KHVu
aXRUeXBlKSk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJ
TlZBTElEX0FDQ0VTU19FUlIgfTsKKyAgICByZXR1cm4gY2xhbXBUbzxmbG9hdD4ocmVzdWx0LnZh
bHVlKCkpOwogfQogCi1kb3VibGUgQ1NTUHJpbWl0aXZlVmFsdWU6OmdldERvdWJsZVZhbHVlKHVu
c2lnbmVkIHNob3J0IHVuaXRUeXBlKSBjb25zdAorZG91YmxlIENTU1ByaW1pdGl2ZVZhbHVlOjpk
b3VibGVWYWx1ZShVbml0VHlwZXMgdW5pdFR5cGUpIGNvbnN0CiB7Ci0gICAgZG91YmxlIHJlc3Vs
dCA9IDA7Ci0gICAgZ2V0RG91YmxlVmFsdWVJbnRlcm5hbChzdGF0aWNfY2FzdDxVbml0VHlwZXM+
KHVuaXRUeXBlKSwgJnJlc3VsdCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gZG91
YmxlVmFsdWVJbnRlcm5hbCh1bml0VHlwZSkudmFsdWVPcigwKTsKIH0KIAotZG91YmxlIENTU1By
aW1pdGl2ZVZhbHVlOjpnZXREb3VibGVWYWx1ZSgpIGNvbnN0Citkb3VibGUgQ1NTUHJpbWl0aXZl
VmFsdWU6OmRvdWJsZVZhbHVlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9wcmltaXRpdmVVbml0
VHlwZSAhPSBDU1NfQ0FMQyA/IG1fdmFsdWUubnVtIDogbV92YWx1ZS5jYWxjLT5kb3VibGVWYWx1
ZSgpOwogfQpAQCAtODc4LDE2ICs4NzEsMTQgQEAgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBl
cyBDU1NQcmltaXRpdmVWYWx1ZTo6Y2Fub25pY2FsVW5pdFR5cGVGb3JDYXRlZ29yeShVbmkKICAg
ICB9CiB9CiAKLWJvb2wgQ1NTUHJpbWl0aXZlVmFsdWU6OmdldERvdWJsZVZhbHVlSW50ZXJuYWwo
VW5pdFR5cGVzIHJlcXVlc3RlZFVuaXRUeXBlLCBkb3VibGUqIHJlc3VsdCkgY29uc3QKK09wdGlv
bmFsPGRvdWJsZT4gQ1NTUHJpbWl0aXZlVmFsdWU6OmRvdWJsZVZhbHVlSW50ZXJuYWwoVW5pdFR5
cGVzIHJlcXVlc3RlZFVuaXRUeXBlKSBjb25zdAogewogICAgIGlmICghaXNWYWxpZENTU1VuaXRU
eXBlRm9yRG91YmxlQ29udmVyc2lvbihzdGF0aWNfY2FzdDxVbml0VHlwZXM+KG1fcHJpbWl0aXZl
VW5pdFR5cGUpKSB8fCAhaXNWYWxpZENTU1VuaXRUeXBlRm9yRG91YmxlQ29udmVyc2lvbihyZXF1
ZXN0ZWRVbml0VHlwZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIE51
bGxvcHQ7CiAKICAgICBVbml0VHlwZXMgc291cmNlVW5pdFR5cGUgPSBzdGF0aWNfY2FzdDxVbml0
VHlwZXM+KHByaW1pdGl2ZVR5cGUoKSk7Ci0gICAgaWYgKHJlcXVlc3RlZFVuaXRUeXBlID09IHNv
dXJjZVVuaXRUeXBlIHx8IHJlcXVlc3RlZFVuaXRUeXBlID09IENTU19ESU1FTlNJT04pIHsKLSAg
ICAgICAgKnJlc3VsdCA9IGdldERvdWJsZVZhbHVlKCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwot
ICAgIH0KKyAgICBpZiAocmVxdWVzdGVkVW5pdFR5cGUgPT0gc291cmNlVW5pdFR5cGUgfHwgcmVx
dWVzdGVkVW5pdFR5cGUgPT0gQ1NTX0RJTUVOU0lPTikKKyAgICAgICAgcmV0dXJuIGRvdWJsZVZh
bHVlKCk7CiAKICAgICBVbml0Q2F0ZWdvcnkgc291cmNlQ2F0ZWdvcnkgPSB1bml0Q2F0ZWdvcnko
c291cmNlVW5pdFR5cGUpOwogICAgIEFTU0VSVChzb3VyY2VDYXRlZ29yeSAhPSBVT3RoZXIpOwpA
QCAtODk4LDIzICs4ODksMjMgQEAgYm9vbCBDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0RG91YmxlVmFs
dWVJbnRlcm5hbChVbml0VHlwZXMgcmVxdWVzdGVkVW5pdFR5cGUsIGRvdWIKIAogICAgIC8vIENh
bm5vdCBjb252ZXJ0IGJldHdlZW4gdW5yZWxhdGVkIHVuaXQgY2F0ZWdvcmllcyBpZiBvbmUgb2Yg
dGhlbSBpcyBub3QgVU51bWJlci4KICAgICBpZiAoc291cmNlQ2F0ZWdvcnkgIT0gdGFyZ2V0Q2F0
ZWdvcnkgJiYgc291cmNlQ2F0ZWdvcnkgIT0gVU51bWJlciAmJiB0YXJnZXRDYXRlZ29yeSAhPSBV
TnVtYmVyKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBOdWxsb3B0Owog
CiAgICAgaWYgKHRhcmdldENhdGVnb3J5ID09IFVOdW1iZXIpIHsKICAgICAgICAgLy8gV2UgaW50
ZXJwcmV0IGNvbnZlcnNpb24gdG8gQ1NTX05VTUJFUiBhcyBjb252ZXJzaW9uIHRvIGEgY2Fub25p
Y2FsIHVuaXQgaW4gdGhpcyB2YWx1ZSdzIGNhdGVnb3J5LgogICAgICAgICB0YXJnZXRVbml0VHlw
ZSA9IGNhbm9uaWNhbFVuaXRUeXBlRm9yQ2F0ZWdvcnkoc291cmNlQ2F0ZWdvcnkpOwogICAgICAg
ICBpZiAodGFyZ2V0VW5pdFR5cGUgPT0gQ1NTX1VOS05PV04pCi0gICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKICAgICB9CiAKICAgICBpZiAoc291
cmNlVW5pdFR5cGUgPT0gQ1NTX05VTUJFUikgewogICAgICAgICAvLyBXZSBpbnRlcnByZXQgY29u
dmVyc2lvbiBmcm9tIENTU19OVU1CRVIgaW4gdGhlIHNhbWUgd2F5IGFzIENTU1BhcnNlcjo6dmFs
aWRVbml0KCkgd2hpbGUgdXNpbmcgbm9uLXN0cmljdCBtb2RlLgogICAgICAgICBzb3VyY2VVbml0
VHlwZSA9IGNhbm9uaWNhbFVuaXRUeXBlRm9yQ2F0ZWdvcnkodGFyZ2V0Q2F0ZWdvcnkpOwogICAg
ICAgICBpZiAoc291cmNlVW5pdFR5cGUgPT0gQ1NTX1VOS05PV04pCi0gICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKICAgICB9CiAKLSAgICBkb3Vi
bGUgY29udmVydGVkVmFsdWUgPSBnZXREb3VibGVWYWx1ZSgpOworICAgIGRvdWJsZSBjb252ZXJ0
ZWRWYWx1ZSA9IGRvdWJsZVZhbHVlKCk7CiAKICAgICAvLyBGaXJzdCBjb252ZXJ0IHRoZSB2YWx1
ZSBmcm9tIG1fcHJpbWl0aXZlVW5pdFR5cGUgdG8gY2Fub25pY2FsIHR5cGUuCiAgICAgZG91Ymxl
IGZhY3RvciA9IGNvbnZlcnNpb25Ub0Nhbm9uaWNhbFVuaXRzU2NhbGVGYWN0b3Ioc291cmNlVW5p
dFR5cGUpOwpAQCAtOTI0LDQxICs5MTUsMzYgQEAgYm9vbCBDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0
RG91YmxlVmFsdWVJbnRlcm5hbChVbml0VHlwZXMgcmVxdWVzdGVkVW5pdFR5cGUsIGRvdWIKICAg
ICBmYWN0b3IgPSBjb252ZXJzaW9uVG9DYW5vbmljYWxVbml0c1NjYWxlRmFjdG9yKHRhcmdldFVu
aXRUeXBlKTsKICAgICBjb252ZXJ0ZWRWYWx1ZSAvPSBmYWN0b3I7CiAKLSAgICAqcmVzdWx0ID0g
Y29udmVydGVkVmFsdWU7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGNvbnZlcnRlZFZh
bHVlOwogfQogCi12b2lkIENTU1ByaW1pdGl2ZVZhbHVlOjpzZXRTdHJpbmdWYWx1ZSh1bnNpZ25l
ZCBzaG9ydCwgY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRpb25Pcjx2
b2lkPiBDU1NQcmltaXRpdmVWYWx1ZTo6c2V0U3RyaW5nVmFsdWUodW5zaWduZWQgc2hvcnQsIGNv
bnN0IFN0cmluZyYpCiB7CiAgICAgLy8gS2VlcGluZyB2YWx1ZXMgaW1tdXRhYmxlIG1ha2VzIG9w
dGltaXphdGlvbnMgZWFzaWVyIGFuZCBhbGxvd3Mgc2hhcmluZyBvZiB0aGUgcHJpbWl0aXZlIHZh
bHVlIG9iamVjdHMuCiAgICAgLy8gTm8gb3RoZXIgZW5naW5lIHN1cHBvcnRzIG11dGF0aW5nIHN0
eWxlIHRocm91Z2ggdGhpcyBBUEkuIENvbXB1dGVkIHN0eWxlIGlzIGFsd2F5cyByZWFkLW9ubHkg
YW55d2F5LgogICAgIC8vIFN1cHBvcnRpbmcgc2V0dGVyIHdvdWxkIHJlcXVpcmUgbWFraW5nIHBy
aW1pdGl2ZSB2YWx1ZSBjb3B5LW9uLXdyaXRlIGFuZCB0YWtpbmcgY2FyZSBvZiBzdHlsZSBpbnZh
bGlkYXRpb24uCi0gICAgZWMgPSBOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlI7CisgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IE5PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUiB9OwogfQogCi1TdHJp
bmcgQ1NTUHJpbWl0aXZlVmFsdWU6OmdldFN0cmluZ1ZhbHVlKEV4Y2VwdGlvbkNvZGUmIGVjKSBj
b25zdAorRXhjZXB0aW9uT3I8U3RyaW5nPiBDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0U3RyaW5nVmFs
dWUoKSBjb25zdAogewotICAgIGVjID0gMDsKICAgICBzd2l0Y2ggKG1fcHJpbWl0aXZlVW5pdFR5
cGUpIHsKICAgICBjYXNlIENTU19TVFJJTkc6CiAgICAgY2FzZSBDU1NfQVRUUjoKICAgICBjYXNl
IENTU19VUkk6CiAgICAgICAgIHJldHVybiBtX3ZhbHVlLnN0cmluZzsKICAgICBjYXNlIENTU19G
T05UX0ZBTUlMWToKLSAgICAgICAgcmV0dXJuIG1fdmFsdWUuZm9udEZhbWlseS0+ZmFtaWx5TmFt
ZTsKKyAgICAgICAgcmV0dXJuIFN0cmluZyB7IG1fdmFsdWUuZm9udEZhbWlseS0+ZmFtaWx5TmFt
ZSB9OwogICAgIGNhc2UgQ1NTX1ZBTFVFX0lEOgotICAgICAgICByZXR1cm4gdmFsdWVOYW1lKG1f
dmFsdWUudmFsdWVJRCk7CisgICAgICAgIHJldHVybiBTdHJpbmcgeyB2YWx1ZU5hbWUobV92YWx1
ZS52YWx1ZUlEKSB9OwogICAgIGNhc2UgQ1NTX1BST1BFUlRZX0lEOgotICAgICAgICByZXR1cm4g
cHJvcGVydHlOYW1lKG1fdmFsdWUucHJvcGVydHlJRCk7CisgICAgICAgIHJldHVybiBTdHJpbmcg
eyBwcm9wZXJ0eU5hbWUobV92YWx1ZS5wcm9wZXJ0eUlEKSB9OwogICAgIGRlZmF1bHQ6Ci0gICAg
ICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwotICAgICAgICBicmVhazsKKyAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IElOVkFMSURfQUNDRVNTX0VSUiB9OwogICAgIH0KLQotICAgIHJldHVy
biBTdHJpbmcoKTsKIH0KIAotU3RyaW5nIENTU1ByaW1pdGl2ZVZhbHVlOjpnZXRTdHJpbmdWYWx1
ZSgpIGNvbnN0CitTdHJpbmcgQ1NTUHJpbWl0aXZlVmFsdWU6OnN0cmluZ1ZhbHVlKCkgY29uc3QK
IHsKICAgICBzd2l0Y2ggKG1fcHJpbWl0aXZlVW5pdFR5cGUpIHsKICAgICBjYXNlIENTU19TVFJJ
Tkc6CkBAIC05NzIsODAgKzk1OCwzMyBAQCBTdHJpbmcgQ1NTUHJpbWl0aXZlVmFsdWU6OmdldFN0
cmluZ1ZhbHVlKCkgY29uc3QKICAgICBjYXNlIENTU19QUk9QRVJUWV9JRDoKICAgICAgICAgcmV0
dXJuIHByb3BlcnR5TmFtZShtX3ZhbHVlLnByb3BlcnR5SUQpOwogICAgIGRlZmF1bHQ6Ci0gICAg
ICAgIGJyZWFrOworICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgfQotCi0gICAgcmV0dXJu
IFN0cmluZygpOwogfQogCi1Db3VudGVyKiBDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0Q291bnRlclZh
bHVlKEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAorRXhjZXB0aW9uT3I8Q291bnRlcio+IENTU1By
aW1pdGl2ZVZhbHVlOjpnZXRDb3VudGVyVmFsdWUoKSBjb25zdAogewotICAgIGVjID0gMDsKLSAg
ICBpZiAobV9wcmltaXRpdmVVbml0VHlwZSAhPSBDU1NfQ09VTlRFUikgewotICAgICAgICBlYyA9
IElOVkFMSURfQUNDRVNTX0VSUjsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCisgICAgaWYg
KG1fcHJpbWl0aXZlVW5pdFR5cGUgIT0gQ1NTX0NPVU5URVIpCisgICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBJTlZBTElEX0FDQ0VTU19FUlIgfTsKICAgICByZXR1cm4gbV92YWx1ZS5jb3VudGVy
OwogfQogCi1SZWN0KiBDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0UmVjdFZhbHVlKEV4Y2VwdGlvbkNv
ZGUmIGVjKSBjb25zdAorRXhjZXB0aW9uT3I8UmVjdCo+IENTU1ByaW1pdGl2ZVZhbHVlOjpnZXRS
ZWN0VmFsdWUoKSBjb25zdAogewotICAgIGVjID0gMDsKLSAgICBpZiAobV9wcmltaXRpdmVVbml0
VHlwZSAhPSBDU1NfUkVDVCkgewotICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKLSAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCisgICAgaWYgKG1fcHJpbWl0aXZlVW5pdFR5cGUgIT0g
Q1NTX1JFQ1QpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJTlZBTElEX0FDQ0VTU19FUlIg
fTsKICAgICByZXR1cm4gbV92YWx1ZS5yZWN0OwogfQogCi1RdWFkKiBDU1NQcmltaXRpdmVWYWx1
ZTo6Z2V0UXVhZFZhbHVlKEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAotewotICAgIGVjID0gMDsK
LSAgICBpZiAobV9wcmltaXRpdmVVbml0VHlwZSAhPSBDU1NfUVVBRCkgewotICAgICAgICBlYyA9
IElOVkFMSURfQUNDRVNTX0VSUjsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgcmV0
dXJuIG1fdmFsdWUucXVhZDsKLX0KLQotI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCi1MZW5n
dGhSZXBlYXQqIENTU1ByaW1pdGl2ZVZhbHVlOjpnZXRMZW5ndGhSZXBlYXRWYWx1ZShFeGNlcHRp
b25Db2RlJiBlYykgY29uc3QKLXsKLSAgICBlYyA9IDA7Ci0gICAgaWYgKG1fcHJpbWl0aXZlVW5p
dFR5cGUgIT0gQ1NTX0xFTkdUSF9SRVBFQVQpIHsKLSAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VT
U19FUlI7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIHJldHVybiBtX3ZhbHVlLmxl
bmd0aFJlcGVhdDsKLX0KLSNlbmRpZgotCi1SZWZQdHI8UkdCQ29sb3I+IENTU1ByaW1pdGl2ZVZh
bHVlOjpnZXRSR0JDb2xvclZhbHVlKEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAorRXhjZXB0aW9u
T3I8UmVmPFJHQkNvbG9yPj4gQ1NTUHJpbWl0aXZlVmFsdWU6OmdldFJHQkNvbG9yVmFsdWUoKSBj
b25zdAogewotICAgIGlmIChtX3ByaW1pdGl2ZVVuaXRUeXBlICE9IENTU19SR0JDT0xPUikgewot
ICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgfQorICAgIGlmIChtX3ByaW1pdGl2ZVVuaXRUeXBlICE9IENTU19SR0JDT0xPUikKKyAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElOVkFMSURfQUNDRVNTX0VSUiB9OwogCi0gICAgLy8g
RklNWEU6IFRoaXMgc2hvdWxkIG5vdCByZXR1cm4gYSBuZXcgb2JqZWN0IGZvciBlYWNoIGludm9j
YXRpb24uCisgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIG5vdCByZXR1cm4gYSBuZXcgb2JqZWN0
IGZvciBlYWNoIGludm9jYXRpb24uCiAgICAgcmV0dXJuIFJHQkNvbG9yOjpjcmVhdGUobV92YWx1
ZS5jb2xvci0+cmdiKCkpOwogfQogCi1QYWlyKiBDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0UGFpclZh
bHVlKEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAotewotICAgIGVjID0gMDsKLSAgICBpZiAobV9w
cmltaXRpdmVVbml0VHlwZSAhPSBDU1NfUEFJUikgewotICAgICAgICBlYyA9IElOVkFMSURfQUND
RVNTX0VSUjsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgcmV0dXJuIG1fdmFsdWUu
cGFpcjsKLX0KLQogTkVWRVJfSU5MSU5FIFJlZjxTdHJpbmdJbXBsPiBDU1NQcmltaXRpdmVWYWx1
ZTo6Zm9ybWF0TnVtYmVyVmFsdWUoY29uc3QgY2hhciogc3VmZml4LCB1bnNpZ25lZCBzdWZmaXhM
ZW5ndGgpIGNvbnN0CiB7CiAgICAgRGVjaW1hbE51bWJlciBkZWNpbWFsKG1fdmFsdWUubnVtKTsK
QEAgLTExNzIsMTIgKzExMTEsMTIgQEAgQUxXQVlTX0lOTElORSBTdHJpbmcgQ1NTUHJpbWl0aXZl
VmFsdWU6OmZvcm1hdE51bWJlckZvckN1c3RvbUNTU1RleHQoKSBjb25zdAogICAgICAgICByZXR1
cm4gcmVzdWx0LnRvU3RyaW5nKCk7CiAgICAgfQogICAgIGNhc2UgQ1NTX1JFQ1Q6Ci0gICAgICAg
IHJldHVybiBnZXRSZWN0VmFsdWUoKS0+Y3NzVGV4dCgpOworICAgICAgICByZXR1cm4gcmVjdFZh
bHVlKCktPmNzc1RleHQoKTsKICAgICBjYXNlIENTU19RVUFEOgotICAgICAgICByZXR1cm4gZ2V0
UXVhZFZhbHVlKCktPmNzc1RleHQoKTsKKyAgICAgICAgcmV0dXJuIHF1YWRWYWx1ZSgpLT5jc3NU
ZXh0KCk7CiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKICAgICBjYXNlIENTU19MRU5HVEhf
UkVQRUFUOgotICAgICAgICByZXR1cm4gZ2V0TGVuZ3RoUmVwZWF0VmFsdWUoKS0+Y3NzVGV4dCgp
OworICAgICAgICByZXR1cm4gbGVuZ3RoUmVwZWF0VmFsdWUoKS0+Y3NzVGV4dCgpOwogI2VuZGlm
CiAgICAgY2FzZSBDU1NfUEFSU0VSX0hFWENPTE9SOiB7CiAgICAgICAgIFJHQkEzMiByZ2I7CkBA
IC0xMTg3LDExICsxMTI2LDExIEBAIEFMV0FZU19JTkxJTkUgU3RyaW5nIENTU1ByaW1pdGl2ZVZh
bHVlOjpmb3JtYXROdW1iZXJGb3JDdXN0b21DU1NUZXh0KCkgY29uc3QKICAgICBjYXNlIENTU19S
R0JDT0xPUjoKICAgICAgICAgcmV0dXJuIGNvbG9yKCkuY3NzVGV4dCgpOwogICAgIGNhc2UgQ1NT
X1BBSVI6Ci0gICAgICAgIHJldHVybiBnZXRQYWlyVmFsdWUoKS0+Y3NzVGV4dCgpOworICAgICAg
ICByZXR1cm4gcGFpclZhbHVlKCktPmNzc1RleHQoKTsKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NV
UFBPUlQpCiAgICAgY2FzZSBDU1NfREFTSEJPQVJEX1JFR0lPTjogewogICAgICAgICBTdHJpbmdC
dWlsZGVyIHJlc3VsdDsKLSAgICAgICAgZm9yIChEYXNoYm9hcmRSZWdpb24qIHJlZ2lvbiA9IGdl
dERhc2hib2FyZFJlZ2lvblZhbHVlKCk7IHJlZ2lvbjsgcmVnaW9uID0gcmVnaW9uLT5tX25leHQu
Z2V0KCkpIHsKKyAgICAgICAgZm9yIChEYXNoYm9hcmRSZWdpb24qIHJlZ2lvbiA9IGRhc2hib2Fy
ZFJlZ2lvblZhbHVlKCk7IHJlZ2lvbjsgcmVnaW9uID0gcmVnaW9uLT5tX25leHQuZ2V0KCkpIHsK
ICAgICAgICAgICAgIGlmICghcmVzdWx0LmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKCcgJyk7CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiZGFzaGJv
YXJkLXJlZ2lvbigiKTsKQEAgLTEyMDIsMTMgKzExNDEsMTMgQEAgQUxXQVlTX0lOTElORSBTdHJp
bmcgQ1NTUHJpbWl0aXZlVmFsdWU6OmZvcm1hdE51bWJlckZvckN1c3RvbUNTU1RleHQoKSBjb25z
dAogICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCIgcmVjdGFuZ2xlIik7CiAg
ICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBpZiAo
cmVnaW9uLT50b3AoKS0+bV9wcmltaXRpdmVVbml0VHlwZSA9PSBDU1NfVkFMVUVfSUQgJiYgcmVn
aW9uLT50b3AoKS0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlSW52YWxpZCkgeworICAgICAgICAg
ICAgaWYgKHJlZ2lvbi0+dG9wKCktPm1fcHJpbWl0aXZlVW5pdFR5cGUgPT0gQ1NTX1ZBTFVFX0lE
ICYmIHJlZ2lvbi0+dG9wKCktPnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUludmFsaWQpIHsKICAgICAg
ICAgICAgICAgICBBU1NFUlQocmVnaW9uLT5yaWdodCgpLT5tX3ByaW1pdGl2ZVVuaXRUeXBlID09
IENTU19WQUxVRV9JRCk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHJlZ2lvbi0+Ym90dG9tKCkt
Pm1fcHJpbWl0aXZlVW5pdFR5cGUgPT0gQ1NTX1ZBTFVFX0lEKTsKICAgICAgICAgICAgICAgICBB
U1NFUlQocmVnaW9uLT5sZWZ0KCktPm1fcHJpbWl0aXZlVW5pdFR5cGUgPT0gQ1NTX1ZBTFVFX0lE
KTsKLSAgICAgICAgICAgICAgICBBU1NFUlQocmVnaW9uLT5yaWdodCgpLT5nZXRWYWx1ZUlEKCkg
PT0gQ1NTVmFsdWVJbnZhbGlkKTsKLSAgICAgICAgICAgICAgICBBU1NFUlQocmVnaW9uLT5ib3R0
b20oKS0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlSW52YWxpZCk7Ci0gICAgICAgICAgICAgICAg
QVNTRVJUKHJlZ2lvbi0+bGVmdCgpLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVJbnZhbGlkKTsK
KyAgICAgICAgICAgICAgICBBU1NFUlQocmVnaW9uLT5yaWdodCgpLT52YWx1ZUlEKCkgPT0gQ1NT
VmFsdWVJbnZhbGlkKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQocmVnaW9uLT5ib3R0b20oKS0+
dmFsdWVJRCgpID09IENTU1ZhbHVlSW52YWxpZCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKHJl
Z2lvbi0+bGVmdCgpLT52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVJbnZhbGlkKTsKICAgICAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICcpOwogICAgICAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmQocmVnaW9uLT50b3AoKS0+Y3NzVGV4dCgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgKaW5kZXggYTlhNjc3ODFlZTBmNDQxZDRjNWM3ODM2
MWQ2ZGYyYTQ5N2FmOGU0Zi4uMTMyZDlhYjc4ZDkxYWNiNzZmYjlmMDliZTI2ZWQxZjczYTVmMzdl
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgKQEAgLTMzLDIzICszMywy
MCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENTU0Jhc2ljU2hhcGU7CiBjbGFz
cyBDU1NDYWxjVmFsdWU7CiBjbGFzcyBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhOwogY2xhc3Mg
Q291bnRlcjsKIGNsYXNzIERhc2hib2FyZFJlZ2lvbjsKK2NsYXNzIExlbmd0aFJlcGVhdDsKIGNs
YXNzIFBhaXI7CiBjbGFzcyBRdWFkOwogY2xhc3MgUkdCQ29sb3I7CiBjbGFzcyBSZWN0OwogY2xh
c3MgUmVuZGVyU3R5bGU7Ci1jbGFzcyBDU1NCYXNpY1NoYXBlOwotc3RydWN0IENTU1BhcnNlclZh
bHVlOwotCi0jaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKLWNsYXNzIExlbmd0aFJlcGVhdDsK
LSNlbmRpZgogCiBzdHJ1Y3QgQ1NTRm9udEZhbWlseTsKK3N0cnVjdCBDU1NQYXJzZXJWYWx1ZTsK
IHN0cnVjdCBMZW5ndGg7CiBzdHJ1Y3QgTGVuZ3RoU2l6ZTsKIApAQCAtMTc4LDM5ICsxNzUsMjIg
QEAgcHVibGljOgogI2VuZGlmCiAgICAgICAgIFVPdGhlcgogICAgIH07Ci0gICAgc3RhdGljIFVu
aXRDYXRlZ29yeSB1bml0Q2F0ZWdvcnkoQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcyk7Ci0K
LSAgICBib29sIGlzQW5nbGUoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fcHJpbWl0
aXZlVW5pdFR5cGUgPT0gQ1NTX0RFRwotICAgICAgICAgICAgICAgfHwgbV9wcmltaXRpdmVVbml0
VHlwZSA9PSBDU1NfUkFECi0gICAgICAgICAgICAgICB8fCBtX3ByaW1pdGl2ZVVuaXRUeXBlID09
IENTU19HUkFECi0gICAgICAgICAgICAgICB8fCBtX3ByaW1pdGl2ZVVuaXRUeXBlID09IENTU19U
VVJOOwotICAgIH0KKyAgICBzdGF0aWMgVW5pdENhdGVnb3J5IHVuaXRDYXRlZ29yeShVbml0VHlw
ZXMpOworCisgICAgYm9vbCBpc0FuZ2xlKCkgY29uc3Q7CiAgICAgYm9vbCBpc0F0dHIoKSBjb25z
dCB7IHJldHVybiBtX3ByaW1pdGl2ZVVuaXRUeXBlID09IENTU19BVFRSOyB9CiAgICAgYm9vbCBp
c0NvdW50ZXIoKSBjb25zdCB7IHJldHVybiBtX3ByaW1pdGl2ZVVuaXRUeXBlID09IENTU19DT1VO
VEVSOyB9CiAgICAgYm9vbCBpc0ZvbnRJbmRlcGVuZGVudExlbmd0aCgpIGNvbnN0IHsgcmV0dXJu
IG1fcHJpbWl0aXZlVW5pdFR5cGUgPj0gQ1NTX1BYICYmIG1fcHJpbWl0aXZlVW5pdFR5cGUgPD0g
Q1NTX1BDOyB9Ci0gICAgc3RhdGljIGJvb2wgaXNGb250UmVsYXRpdmVMZW5ndGgodW5zaWduZWQg
cHJpbWl0aXZlVW5pdFR5cGUpCi0gICAgewotICAgICAgICByZXR1cm4gcHJpbWl0aXZlVW5pdFR5
cGUgPT0gQ1NTX0VNUwotICAgICAgICAgICAgfHwgcHJpbWl0aXZlVW5pdFR5cGUgPT0gQ1NTX0VY
UwotICAgICAgICAgICAgfHwgcHJpbWl0aXZlVW5pdFR5cGUgPT0gQ1NTX1JFTVMKLSAgICAgICAg
ICAgIHx8IHByaW1pdGl2ZVVuaXRUeXBlID09IENTU19DSFMKLSAgICAgICAgICAgIHx8IHByaW1p
dGl2ZVVuaXRUeXBlID09IENTU19RVUlSS1lfRU1TOwotICAgIH0KLSAgICBib29sIGlzRm9udFJl
bGF0aXZlTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gaXNGb250UmVsYXRpdmVMZW5ndGgobV9wcmlt
aXRpdmVVbml0VHlwZSk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc0ZvbnRSZWxhdGl2ZUxlbmd0aChV
bml0VHlwZXMpOworICAgIGJvb2wgaXNGb250UmVsYXRpdmVMZW5ndGgoKSBjb25zdCB7IHJldHVy
biBpc0ZvbnRSZWxhdGl2ZUxlbmd0aChzdGF0aWNfY2FzdDxVbml0VHlwZXM+KG1fcHJpbWl0aXZl
VW5pdFR5cGUpKTsgfQogICAgIAogICAgIGJvb2wgaXNRdWlya3lFbXMoKSBjb25zdCB7IHJldHVy
biBwcmltaXRpdmVUeXBlKCkgPT0gVW5pdFR5cGVzOjpDU1NfUVVJUktZX0VNUzsgfQogCi0gICAg
c3RhdGljIGJvb2wgaXNWaWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgodW5zaWduZWQgc2hvcnQgdHlw
ZSkgeyByZXR1cm4gdHlwZSA+PSBDU1NfVlcgJiYgdHlwZSA8PSBDU1NfVk1BWDsgfQotICAgIGJv
b2wgaXNWaWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgoKSBjb25zdCB7IHJldHVybiBpc1ZpZXdwb3J0
UGVyY2VudGFnZUxlbmd0aChtX3ByaW1pdGl2ZVVuaXRUeXBlKTsgfQorICAgIHN0YXRpYyBib29s
IGlzVmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKFVuaXRUeXBlcyB0eXBlKSB7IHJldHVybiB0eXBl
ID49IENTU19WVyAmJiB0eXBlIDw9IENTU19WTUFYOyB9CisgICAgYm9vbCBpc1ZpZXdwb3J0UGVy
Y2VudGFnZUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIGlzVmlld3BvcnRQZXJjZW50YWdlTGVuZ3Ro
KHN0YXRpY19jYXN0PFVuaXRUeXBlcz4obV9wcmltaXRpdmVVbml0VHlwZSkpOyB9CiAKLSAgICBz
dGF0aWMgYm9vbCBpc0xlbmd0aCh1bnNpZ25lZCBzaG9ydCB0eXBlKQotICAgIHsKLSAgICAgICAg
cmV0dXJuICh0eXBlID49IENTU19FTVMgJiYgdHlwZSA8PSBDU1NfUEMpIHx8IHR5cGUgPT0gQ1NT
X1JFTVMgfHwgdHlwZSA9PSBDU1NfQ0hTIHx8IGlzVmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKHR5
cGUpIHx8IHR5cGUgPT0gQ1NTX1FVSVJLWV9FTVM7Ci0gICAgfQotCi0gICAgYm9vbCBpc0xlbmd0
aCgpIGNvbnN0IHsgcmV0dXJuIGlzTGVuZ3RoKHByaW1pdGl2ZVR5cGUoKSk7IH0KKyAgICBzdGF0
aWMgYm9vbCBpc0xlbmd0aChVbml0VHlwZXMpOworICAgIGJvb2wgaXNMZW5ndGgoKSBjb25zdCB7
IHJldHVybiBpc0xlbmd0aChzdGF0aWNfY2FzdDxVbml0VHlwZXM+KHByaW1pdGl2ZVR5cGUoKSkp
OyB9CiAgICAgYm9vbCBpc051bWJlcigpIGNvbnN0IHsgcmV0dXJuIHByaW1pdGl2ZVR5cGUoKSA9
PSBDU1NfTlVNQkVSOyB9CiAgICAgYm9vbCBpc1BlcmNlbnRhZ2UoKSBjb25zdCB7IHJldHVybiBw
cmltaXRpdmVUeXBlKCkgPT0gQ1NTX1BFUkNFTlRBR0U7IH0KICAgICBib29sIGlzUHgoKSBjb25z
dCB7IHJldHVybiBwcmltaXRpdmVUeXBlKCkgPT0gQ1NTX1BYOyB9CkBAIC0yMzMsMTIgKzIxMyw4
IEBAIHB1YmxpYzoKICAgICBib29sIGlzRG90c1BlclBpeGVsKCkgY29uc3QgeyByZXR1cm4gcHJp
bWl0aXZlVHlwZSgpID09IENTU19EUFBYOyB9CiAgICAgYm9vbCBpc0RvdHNQZXJDZW50aW1ldGVy
KCkgY29uc3QgeyByZXR1cm4gcHJpbWl0aXZlVHlwZSgpID09IENTU19EUENNOyB9CiAKLSAgICBz
dGF0aWMgYm9vbCBpc1Jlc29sdXRpb24odW5zaWduZWQgc2hvcnQgdHlwZSkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiB0eXBlID49IENTU19EUFBYICYmIHR5cGUgPD0gQ1NTX0RQQ007Ci0gICAgfQot
Ci0gICAgYm9vbCBpc1Jlc29sdXRpb24oKSBjb25zdCB7IHJldHVybiBpc1Jlc29sdXRpb24ocHJp
bWl0aXZlVHlwZSgpKTsgfQorICAgIHN0YXRpYyBib29sIGlzUmVzb2x1dGlvbihVbml0VHlwZXMp
OworICAgIGJvb2wgaXNSZXNvbHV0aW9uKCkgY29uc3QgeyByZXR1cm4gaXNSZXNvbHV0aW9uKHN0
YXRpY19jYXN0PFVuaXRUeXBlcz4ocHJpbWl0aXZlVHlwZSgpKSk7IH0KICAgICBib29sIGlzVmll
d3BvcnRQZXJjZW50YWdlV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3ByaW1pdGl2ZVVuaXRUeXBl
ID09IENTU19WVzsgfQogICAgIGJvb2wgaXNWaWV3cG9ydFBlcmNlbnRhZ2VIZWlnaHQoKSBjb25z
dCB7IHJldHVybiBtX3ByaW1pdGl2ZVVuaXRUeXBlID09IENTU19WSDsgfQogICAgIGJvb2wgaXNW
aWV3cG9ydFBlcmNlbnRhZ2VNYXgoKSBjb25zdCB7IHJldHVybiBtX3ByaW1pdGl2ZVVuaXRUeXBl
ID09IENTU19WTUFYOyB9CkBAIC0yNTgsMTIwICsyMzQsNzQgQEAgcHVibGljOgogICAgIHN0YXRp
YyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGNyZWF0ZShjb25zdCBMZW5ndGgmIHZhbHVlLCBjb25z
dCBSZW5kZXJTdHlsZSYgc3R5bGUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTUHJpbWl0aXZl
VmFsdWUodmFsdWUsIHN0eWxlKSk7IH0KICAgICBzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVl
PiBjcmVhdGUoY29uc3QgTGVuZ3RoU2l6ZSYgdmFsdWUsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHls
ZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSwgc3R5bGUp
KTsgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIFJlZjxDU1NQcmltaXRpdmVW
YWx1ZT4gY3JlYXRlKFQmJiB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN0ZDo6Zm9yd2FyZDxUPih2YWx1ZSkpKTsKLSAgICB9Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gY3Jl
YXRlKFQmJik7CiAKICAgICAvLyBUaGlzIHZhbHVlIGlzIHVzZWQgdG8gaGFuZGxlIHF1aXJreSBt
YXJnaW5zIGluIHJlZmxvdyByb290cyAoYm9keSwgdGQsIGFuZCB0aCkgbGlrZSBXaW5JRS4KICAg
ICAvLyBUaGUgYmFzaWMgaWRlYSBpcyB0aGF0IGEgc3R5bGVzaGVldCBjYW4gdXNlIHRoZSB2YWx1
ZSBfX3FlbSAoZm9yIHF1aXJreSBlbSkgaW5zdGVhZCBvZiBlbS4KICAgICAvLyBXaGVuIHRoZSBx
dWlya3kgdmFsdWUgaXMgdXNlZCwgaWYgeW91J3JlIGluIHF1aXJrcyBtb2RlLCB0aGUgbWFyZ2lu
IHdpbGwgY29sbGFwc2UgYXdheQogICAgIC8vIGluc2lkZSBhIHRhYmxlIGNlbGwuCi0gICAgc3Rh
dGljIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRlQWxsb3dpbmdNYXJnaW5RdWlyayhkb3Vi
bGUgdmFsdWUsIFVuaXRUeXBlcyB0eXBlKQotICAgIHsKLSAgICAgICAgQ1NTUHJpbWl0aXZlVmFs
dWUqIHF1aXJrVmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUsIHR5cGUpOwotICAg
ICAgICBxdWlya1ZhbHVlLT5tX2lzUXVpcmtWYWx1ZSA9IHRydWU7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZigqcXVpcmtWYWx1ZSk7Ci0gICAgfQorICAgIHN0YXRpYyBSZWY8Q1NTUHJpbWl0aXZl
VmFsdWU+IGNyZWF0ZUFsbG93aW5nTWFyZ2luUXVpcmsoZG91YmxlIHZhbHVlLCBVbml0VHlwZXMp
OwogCiAgICAgfkNTU1ByaW1pdGl2ZVZhbHVlKCk7CiAKICAgICB2b2lkIGNsZWFudXAoKTsKIAog
ICAgIFdFQkNPUkVfRVhQT1JUIHVuc2lnbmVkIHNob3J0IHByaW1pdGl2ZVR5cGUoKSBjb25zdDsK
KyAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25Pcjx2b2lkPiBzZXRGbG9hdFZhbHVlKHVuc2ln
bmVkIHNob3J0IHVuaXRUeXBlLCBkb3VibGUgZmxvYXRWYWx1ZSk7CisgICAgV0VCQ09SRV9FWFBP
UlQgRXhjZXB0aW9uT3I8ZmxvYXQ+IGdldEZsb2F0VmFsdWUodW5zaWduZWQgc2hvcnQgdW5pdFR5
cGUpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFN0cmlu
Z1ZhbHVlKHVuc2lnbmVkIHNob3J0IHN0cmluZ1R5cGUsIGNvbnN0IFN0cmluZyYgc3RyaW5nVmFs
dWUpOworICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPFN0cmluZz4gZ2V0U3RyaW5nVmFs
dWUoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25PcjxDb3VudGVyKj4gZ2V0
Q291bnRlclZhbHVlKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8UmVj
dCo+IGdldFJlY3RWYWx1ZSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9y
PFJlZjxSR0JDb2xvcj4+IGdldFJHQkNvbG9yVmFsdWUoKSBjb25zdDsKIAogICAgIGRvdWJsZSBj
b21wdXRlRGVncmVlcygpIGNvbnN0OwogICAgIAogICAgIGJvb2wgYnVpbGRQYXJzZXJWYWx1ZShD
U1NQYXJzZXJWYWx1ZSopIGNvbnN0OwogICAgIAogICAgIGVudW0gVGltZVVuaXQgeyBTZWNvbmRz
LCBNaWxsaXNlY29uZHMgfTsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgVGltZVVuaXQgdGlt
ZVVuaXQ+IFQgY29tcHV0ZVRpbWUoKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKHRpbWVVbml0
ID09IFNlY29uZHMgJiYgcHJpbWl0aXZlVHlwZSgpID09IENTU19TKQotICAgICAgICAgICAgcmV0
dXJuIGdldFZhbHVlPFQ+KCk7Ci0gICAgICAgIGlmICh0aW1lVW5pdCA9PSBTZWNvbmRzICYmIHBy
aW1pdGl2ZVR5cGUoKSA9PSBDU1NfTVMpCi0gICAgICAgICAgICByZXR1cm4gZ2V0VmFsdWU8VD4o
KSAvIDEwMDA7Ci0gICAgICAgIGlmICh0aW1lVW5pdCA9PSBNaWxsaXNlY29uZHMgJiYgcHJpbWl0
aXZlVHlwZSgpID09IENTU19NUykKLSAgICAgICAgICAgIHJldHVybiBnZXRWYWx1ZTxUPigpOwot
ICAgICAgICBpZiAodGltZVVuaXQgPT0gTWlsbGlzZWNvbmRzICYmIHByaW1pdGl2ZVR5cGUoKSA9
PSBDU1NfUykKLSAgICAgICAgICAgIHJldHVybiBnZXRWYWx1ZTxUPigpICogMTAwMDsKLSAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAg
IC8qCi0gICAgICogY29tcHV0ZXMgYSBsZW5ndGggaW4gcGl4ZWxzIG91dCBvZiB0aGUgZ2l2ZW4g
Q1NTVmFsdWUuIE5lZWQgdGhlIFJlbmRlclN0eWxlIHRvIGdldAotICAgICAqIHRoZSBmb250aW5m
byBpbiBjYXNlIHZhbCBpcyBkZWZpbmVkIGluIGVtIG9yIGV4LgotICAgICAqCi0gICAgICogVGhl
IG1ldHJpY3MgaGF2ZSB0byBiZSBhIGJpdCBkaWZmZXJlbnQgZm9yIHNjcmVlbiBhbmQgcHJpbnRl
ciBvdXRwdXQuCi0gICAgICogRm9yIHNjcmVlbiBvdXRwdXQgd2UgYXNzdW1lIDEgaW5jaCA9PSA3
MiBweCwgZm9yIHByaW50ZXIgd2UgYXNzdW1lIDMwMCBkcGkKLSAgICAgKgotICAgICAqIHRoaXMg
aXMgc2NyZWVuL3ByaW50ZXIgZGVwZW5kZW50LCBzbyB3ZSBwcm9iYWJseSBuZWVkIGEgY29uZmln
IG9wdGlvbiBmb3IgdGhpcywKLSAgICAgKiBhbmQgc29tZSB0b29sIHRvIGNhbGlicmF0ZS4KLSAg
ICAgKi8KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIGNvbXB1dGVMZW5ndGgoY29uc3QgQ1NT
VG9MZW5ndGhDb252ZXJzaW9uRGF0YSYpIGNvbnN0OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IFRpbWVVbml0IHRpbWVVbml0PiBUIGNvbXB1dGVUaW1lKCkgY29uc3Q7CiAKLSAgICAvLyBDb252
ZXJ0cyB0byBhIExlbmd0aCwgbWFwcGluZyB2YXJpb3VzIHVuaXQgdHlwZXMgYXBwcm9wcmlhdGVs
eS4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIGNvbXB1dGVMZW5ndGgoY29uc3QgQ1NTVG9M
ZW5ndGhDb252ZXJzaW9uRGF0YSYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGludD4gTGVuZ3RoIGNv
bnZlcnRUb0xlbmd0aChjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJikgY29uc3Q7CiAK
ICAgICBib29sIGNvbnZlcnRpbmdUb0xlbmd0aFJlcXVpcmVzTm9uTnVsbFN0eWxlKGludCBsZW5n
dGhDb252ZXJzaW9uKSBjb25zdDsKIAotICAgIC8vIHVzZSB3aXRoIGNhcmUhISEKLSAgICB2b2lk
IHNldFByaW1pdGl2ZVR5cGUodW5zaWduZWQgc2hvcnQgdHlwZSkgeyBtX3ByaW1pdGl2ZVVuaXRU
eXBlID0gdHlwZTsgfQotCi0gICAgV0VCQ09SRV9FWFBPUlQgZG91YmxlIGdldERvdWJsZVZhbHVl
KHVuc2lnbmVkIHNob3J0IHVuaXRUeXBlLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7Ci0gICAgZG91
YmxlIGdldERvdWJsZVZhbHVlKHVuc2lnbmVkIHNob3J0IHVuaXRUeXBlKSBjb25zdDsKLSAgICBk
b3VibGUgZ2V0RG91YmxlVmFsdWUoKSBjb25zdDsKLQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0RmxvYXRWYWx1ZSh1bnNpZ25lZCBzaG9ydCB1bml0VHlwZSwgZG91YmxlIGZsb2F0VmFsdWUs
IEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBmbG9hdCBnZXRGbG9hdFZhbHVlKHVuc2lnbmVkIHNob3J0
IHVuaXRUeXBlLCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QgeyByZXR1cm4gZ2V0VmFsdWU8Zmxv
YXQ+KHVuaXRUeXBlLCBlYyk7IH0KLSAgICBmbG9hdCBnZXRGbG9hdFZhbHVlKHVuc2lnbmVkIHNo
b3J0IHVuaXRUeXBlKSBjb25zdCB7IHJldHVybiBnZXRWYWx1ZTxmbG9hdD4odW5pdFR5cGUpOyB9
Ci0gICAgZmxvYXQgZ2V0RmxvYXRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIGdldFZhbHVlPGZsb2F0
PigpOyB9CisgICAgZG91YmxlIGRvdWJsZVZhbHVlKFVuaXRUeXBlcykgY29uc3Q7CisgICAgZG91
YmxlIGRvdWJsZVZhbHVlKCkgY29uc3Q7CiAKLSAgICBpbnQgZ2V0SW50VmFsdWUodW5zaWduZWQg
c2hvcnQgdW5pdFR5cGUsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdCB7IHJldHVybiBnZXRWYWx1
ZTxpbnQ+KHVuaXRUeXBlLCBlYyk7IH0KLSAgICBpbnQgZ2V0SW50VmFsdWUodW5zaWduZWQgc2hv
cnQgdW5pdFR5cGUpIGNvbnN0IHsgcmV0dXJuIGdldFZhbHVlPGludD4odW5pdFR5cGUpOyB9Ci0g
ICAgaW50IGdldEludFZhbHVlKCkgY29uc3QgeyByZXR1cm4gZ2V0VmFsdWU8aW50PigpOyB9Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFQgdmFsdWUoVW5pdFR5cGVzIHR5cGUpIGNv
bnN0IHsgcmV0dXJuIGNsYW1wVG88VD4oZG91YmxlVmFsdWUodHlwZSkpOyB9CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4gaW5saW5lIFQgdmFsdWUoKSBjb25zdCB7IHJldHVybiBjbGFtcFRvPFQ+
KGRvdWJsZVZhbHVlKCkpOyB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgVCBn
ZXRWYWx1ZSh1bnNpZ25lZCBzaG9ydCB1bml0VHlwZSwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0
IHsgcmV0dXJuIGNsYW1wVG88VD4oZ2V0RG91YmxlVmFsdWUodW5pdFR5cGUsIGVjKSk7IH0KLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgVCBnZXRWYWx1ZSh1bnNpZ25lZCBzaG9ydCB1
bml0VHlwZSkgY29uc3QgeyByZXR1cm4gY2xhbXBUbzxUPihnZXREb3VibGVWYWx1ZSh1bml0VHlw
ZSkpOyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFQgZ2V0VmFsdWUoKSBjb25z
dCB7IHJldHVybiBjbGFtcFRvPFQ+KGdldERvdWJsZVZhbHVlKCkpOyB9CisgICAgZmxvYXQgZmxv
YXRWYWx1ZShVbml0VHlwZXMgdHlwZSkgY29uc3QgeyByZXR1cm4gdmFsdWU8ZmxvYXQ+KHR5cGUp
OyB9CisgICAgZmxvYXQgZmxvYXRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIHZhbHVlPGZsb2F0Pigp
OyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFN0cmluZ1ZhbHVlKHVuc2lnbmVkIHNo
b3J0IHN0cmluZ1R5cGUsIGNvbnN0IFN0cmluZyYgc3RyaW5nVmFsdWUsIEV4Y2VwdGlvbkNvZGUm
KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgZ2V0U3RyaW5nVmFsdWUoRXhjZXB0aW9uQ29k
ZSYpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBnZXRTdHJpbmdWYWx1ZSgpIGNv
bnN0OworICAgIGludCBpbnRWYWx1ZShVbml0VHlwZXMgdHlwZSkgY29uc3QgeyByZXR1cm4gdmFs
dWU8aW50Pih0eXBlKTsgfQorICAgIGludCBpbnRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIHZhbHVl
PGludD4oKTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgQ291bnRlciogZ2V0Q291bnRlclZhbHVl
KEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKLSAgICBDb3VudGVyKiBnZXRDb3VudGVyVmFsdWUoKSBj
b25zdCB7IHJldHVybiBtX3ByaW1pdGl2ZVVuaXRUeXBlICE9IENTU19DT1VOVEVSID8gbnVsbHB0
ciA6IG1fdmFsdWUuY291bnRlcjsgfQorICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdHJpbmdW
YWx1ZSgpIGNvbnN0OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgUmVjdCogZ2V0UmVjdFZhbHVlKEV4
Y2VwdGlvbkNvZGUmKSBjb25zdDsKLSAgICBSZWN0KiBnZXRSZWN0VmFsdWUoKSBjb25zdCB7IHJl
dHVybiBtX3ByaW1pdGl2ZVVuaXRUeXBlICE9IENTU19SRUNUID8gbnVsbHB0ciA6IG1fdmFsdWUu
cmVjdDsgfQotCi0gICAgUXVhZCogZ2V0UXVhZFZhbHVlKEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsK
LSAgICBRdWFkKiBnZXRRdWFkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ByaW1pdGl2ZVVuaXRU
eXBlICE9IENTU19RVUFEID8gbnVsbHB0ciA6IG1fdmFsdWUucXVhZDsgfQorICAgIENvdW50ZXIq
IGNvdW50ZXJWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpbWl0aXZlVW5pdFR5cGUgIT0gQ1NT
X0NPVU5URVIgPyAwIDogbV92YWx1ZS5jb3VudGVyOyB9CisgICAgUmVjdCogcmVjdFZhbHVlKCkg
Y29uc3QgeyByZXR1cm4gbV9wcmltaXRpdmVVbml0VHlwZSAhPSBDU1NfUkVDVCA/IDAgOiBtX3Zh
bHVlLnJlY3Q7IH0KKyAgICBRdWFkKiBxdWFkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ByaW1p
dGl2ZVVuaXRUeXBlICE9IENTU19RVUFEID8gMCA6IG1fdmFsdWUucXVhZDsgfQogCiAjaWYgRU5B
QkxFKENTU19TQ1JPTExfU05BUCkKLSAgICBMZW5ndGhSZXBlYXQqIGdldExlbmd0aFJlcGVhdFZh
bHVlKEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKLSAgICBMZW5ndGhSZXBlYXQqIGdldExlbmd0aFJl
cGVhdFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9wcmltaXRpdmVVbml0VHlwZSAhPSBDU1NfTEVO
R1RIX1JFUEVBVCA/IG51bGxwdHIgOiBtX3ZhbHVlLmxlbmd0aFJlcGVhdDsgfQorICAgIExlbmd0
aFJlcGVhdCogbGVuZ3RoUmVwZWF0VmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ByaW1pdGl2ZVVu
aXRUeXBlICE9IENTU19MRU5HVEhfUkVQRUFUID8gMCA6IG1fdmFsdWUubGVuZ3RoUmVwZWF0OyB9
CiAjZW5kaWYKIAotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxSR0JDb2xvcj4gZ2V0UkdCQ29s
b3JWYWx1ZShFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAgICAgY29uc3QgQ29sb3ImIGNvbG9yKCkg
Y29uc3QgeyBBU1NFUlQobV9wcmltaXRpdmVVbml0VHlwZSA9PSBDU1NfUkdCQ09MT1IpOyByZXR1
cm4gKm1fdmFsdWUuY29sb3I7IH0KLQotICAgIFBhaXIqIGdldFBhaXJWYWx1ZShFeGNlcHRpb25D
b2RlJikgY29uc3Q7Ci0gICAgUGFpciogZ2V0UGFpclZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9w
cmltaXRpdmVVbml0VHlwZSAhPSBDU1NfUEFJUiA/IG51bGxwdHIgOiBtX3ZhbHVlLnBhaXI7IH0K
KyAgICBQYWlyKiBwYWlyVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ByaW1pdGl2ZVVuaXRUeXBl
ICE9IENTU19QQUlSID8gbnVsbHB0ciA6IG1fdmFsdWUucGFpcjsgfQogCiAjaWYgRU5BQkxFKERB
U0hCT0FSRF9TVVBQT1JUKQotICAgIERhc2hib2FyZFJlZ2lvbiogZ2V0RGFzaGJvYXJkUmVnaW9u
VmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ByaW1pdGl2ZVVuaXRUeXBlICE9IENTU19EQVNIQk9B
UkRfUkVHSU9OID8gbnVsbHB0ciA6IG1fdmFsdWUucmVnaW9uOyB9CisgICAgRGFzaGJvYXJkUmVn
aW9uKiBkYXNoYm9hcmRSZWdpb25WYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpbWl0aXZlVW5p
dFR5cGUgIT0gQ1NTX0RBU0hCT0FSRF9SRUdJT04gPyBudWxscHRyIDogbV92YWx1ZS5yZWdpb247
IH0KICNlbmRpZgogCi0gICAgQ1NTQmFzaWNTaGFwZSogZ2V0U2hhcGVWYWx1ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcHJpbWl0aXZlVW5pdFR5cGUgIT0gQ1NTX1NIQVBFID8gbnVsbHB0ciA6IG1fdmFs
dWUuc2hhcGU7IH0KLQorICAgIENTU0Jhc2ljU2hhcGUqIHNoYXBlVmFsdWUoKSBjb25zdCB7IHJl
dHVybiBtX3ByaW1pdGl2ZVVuaXRUeXBlICE9IENTU19TSEFQRSA/IG51bGxwdHIgOiBtX3ZhbHVl
LnNoYXBlOyB9CiAgICAgY29uc3QgQ1NTRm9udEZhbWlseSYgZm9udEZhbWlseSgpIGNvbnN0IHsg
QVNTRVJUKG1fcHJpbWl0aXZlVW5pdFR5cGUgPT0gQ1NTX0ZPTlRfRkFNSUxZKTsgcmV0dXJuICpt
X3ZhbHVlLmZvbnRGYW1pbHk7IH0KLQogICAgIENTU0NhbGNWYWx1ZSogY3NzQ2FsY1ZhbHVlKCkg
Y29uc3QgeyByZXR1cm4gbV9wcmltaXRpdmVVbml0VHlwZSAhPSBDU1NfQ0FMQyA/IG51bGxwdHIg
OiBtX3ZhbHVlLmNhbGM7IH0KIAotICAgIENTU1Byb3BlcnR5SUQgZ2V0UHJvcGVydHlJRCgpIGNv
bnN0IHsgcmV0dXJuIG1fcHJpbWl0aXZlVW5pdFR5cGUgPT0gQ1NTX1BST1BFUlRZX0lEID8gbV92
YWx1ZS5wcm9wZXJ0eUlEIDogQ1NTUHJvcGVydHlJbnZhbGlkOyB9Ci0gICAgQ1NTVmFsdWVJRCBn
ZXRWYWx1ZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wcmltaXRpdmVVbml0VHlwZSA9PSBDU1NfVkFM
VUVfSUQgPyBtX3ZhbHVlLnZhbHVlSUQgOiBDU1NWYWx1ZUludmFsaWQ7IH0KKyAgICBDU1NQcm9w
ZXJ0eUlEIHByb3BlcnR5SUQoKSBjb25zdCB7IHJldHVybiBtX3ByaW1pdGl2ZVVuaXRUeXBlID09
IENTU19QUk9QRVJUWV9JRCA/IG1fdmFsdWUucHJvcGVydHlJRCA6IENTU1Byb3BlcnR5SW52YWxp
ZDsgfQorICAgIENTU1ZhbHVlSUQgdmFsdWVJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpbWl0aXZl
VW5pdFR5cGUgPT0gQ1NTX1ZBTFVFX0lEID8gbV92YWx1ZS52YWx1ZUlEIDogQ1NTVmFsdWVJbnZh
bGlkOyB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgb3BlcmF0b3IgVCgpIGNv
bnN0OyAvLyBEZWZpbmVkIGluIENTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaAogCkBAIC0zODYs
OSArMzE2LDkgQEAgcHVibGljOgogICAgIGJvb2wgZXF1YWxzKGNvbnN0IENTU1ByaW1pdGl2ZVZh
bHVlJikgY29uc3Q7CiAKICAgICBzdGF0aWMgVW5pdFR5cGVzIGNhbm9uaWNhbFVuaXRUeXBlRm9y
Q2F0ZWdvcnkoVW5pdENhdGVnb3J5KTsKLSAgICBzdGF0aWMgZG91YmxlIGNvbnZlcnNpb25Ub0Nh
bm9uaWNhbFVuaXRzU2NhbGVGYWN0b3IodW5zaWduZWQgc2hvcnQgdW5pdFR5cGUpOworICAgIHN0
YXRpYyBkb3VibGUgY29udmVyc2lvblRvQ2Fub25pY2FsVW5pdHNTY2FsZUZhY3RvcihVbml0VHlw
ZXMpOwogCi0gICAgc3RhdGljIGRvdWJsZSBjb21wdXRlTm9uQ2FsY0xlbmd0aERvdWJsZShjb25z
dCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiwgdW5zaWduZWQgc2hvcnQgcHJpbWl0aXZlVHlw
ZSwgZG91YmxlIHZhbHVlKTsKKyAgICBzdGF0aWMgZG91YmxlIGNvbXB1dGVOb25DYWxjTGVuZ3Ro
RG91YmxlKGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmLCBVbml0VHlwZXMsIGRvdWJs
ZSB2YWx1ZSk7CiAKICNpZiBDT01QSUxFUihNU1ZDKQogICAgIC8vIEZJWE1FOiBUaGlzIHNob3Vs
ZCBiZSBwcml2YXRlLCBidXQgZm9yIHNvbWUgcmVhc29uIE1TVkMgdGhlbiBmYWlscyB0byBpbnZv
a2UgaXQgZnJvbSBMYXp5TmV2ZXJEZXN0cm95ZWQ6OmNvbnN0cnVjdC4KQEAgLTQxMSwxOCArMzQx
LDggQEAgcHJpdmF0ZToKICAgICBDU1NQcmltaXRpdmVWYWx1ZShkb3VibGUsIFVuaXRUeXBlcyk7
CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBDU1NQcmltaXRpdmVWYWx1ZShUKTsgLy8gRGVm
aW5lZCBpbiBDU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgKLQotICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+IENTU1ByaW1pdGl2ZVZhbHVlKFJlZlB0cjxUPiYmIHZhbHVlKQotICAgICAgICA6IENT
U1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQotICAgIHsKLSAgICAgICAgaW5pdChXVEZNb3ZlKHZhbHVl
KSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gQ1NTUHJpbWl0aXZlVmFsdWUo
UmVmPFQ+JiYgdmFsdWUpCi0gICAgICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCi0gICAg
ewotICAgICAgICBpbml0KFdURk1vdmUodmFsdWUpKTsKLSAgICB9CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gQ1NTUHJpbWl0aXZlVmFsdWUoUmVmUHRyPFQ+JiYpOworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+IENTU1ByaW1pdGl2ZVZhbHVlKFJlZjxUPiYmKTsKIAogICAgIHN0YXRpYyB2b2lk
IGNyZWF0ZShpbnQpOyAvLyBjb21waWxlLXRpbWUgZ3VhcmQKICAgICBzdGF0aWMgdm9pZCBjcmVh
dGUodW5zaWduZWQpOyAvLyBjb21waWxlLXRpbWUgZ3VhcmQKQEAgLTQ0MiwxMyArMzYyLDEyIEBA
IHByaXZhdGU6CiAjZW5kaWYKICAgICB2b2lkIGluaXQoUmVmPENTU0Jhc2ljU2hhcGU+JiYpOwog
ICAgIHZvaWQgaW5pdChSZWZQdHI8Q1NTQ2FsY1ZhbHVlPiYmKTsKLSAgICBib29sIGdldERvdWJs
ZVZhbHVlSW50ZXJuYWwoVW5pdFR5cGVzIHRhcmdldFVuaXRUeXBlLCBkb3VibGUqIHJlc3VsdCkg
Y29uc3Q7CisgICAgT3B0aW9uYWw8ZG91YmxlPiBkb3VibGVWYWx1ZUludGVybmFsKFVuaXRUeXBl
cyB0YXJnZXRVbml0VHlwZSkgY29uc3Q7CiAKICAgICBkb3VibGUgY29tcHV0ZUxlbmd0aERvdWJs
ZShjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJikgY29uc3Q7CiAKICAgICBBTFdBWVNf
SU5MSU5FIFN0cmluZyBmb3JtYXROdW1iZXJGb3JDdXN0b21DU1NUZXh0KCkgY29uc3Q7Ci0gICAg
dGVtcGxhdGUgPHVuc2lnbmVkIGNoYXJhY3RlckNvdW50PgotICAgIEFMV0FZU19JTkxJTkUgUmVm
PFN0cmluZ0ltcGw+IGZvcm1hdE51bWJlclZhbHVlKGNvbnN0IGNoYXIgKCZjaGFyYWN0ZXJzKVtj
aGFyYWN0ZXJDb3VudF0pIGNvbnN0OworICAgIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlckNv
dW50PiBBTFdBWVNfSU5MSU5FIFJlZjxTdHJpbmdJbXBsPiBmb3JtYXROdW1iZXJWYWx1ZShjb25z
dCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVyQ291bnRdKSBjb25zdDsKICAgICBORVZFUl9J
TkxJTkUgUmVmPFN0cmluZ0ltcGw+IGZvcm1hdE51bWJlclZhbHVlKGNvbnN0IGNoYXIqIHN1ZmZp
eCwgdW5zaWduZWQgc3VmZml4TGVuZ3RoKSBjb25zdDsKIAogICAgIHVuaW9uIHsKQEAgLTQ3Miw2
ICszOTEsNzUgQEAgcHJpdmF0ZToKICAgICB9IG1fdmFsdWU7CiB9OwogCitpbmxpbmUgYm9vbCBD
U1NQcmltaXRpdmVWYWx1ZTo6aXNBbmdsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpbWl0
aXZlVW5pdFR5cGUgPT0gQ1NTX0RFRworICAgICAgICB8fCBtX3ByaW1pdGl2ZVVuaXRUeXBlID09
IENTU19SQUQKKyAgICAgICAgfHwgbV9wcmltaXRpdmVVbml0VHlwZSA9PSBDU1NfR1JBRAorICAg
ICAgICB8fCBtX3ByaW1pdGl2ZVVuaXRUeXBlID09IENTU19UVVJOOworfQorCitpbmxpbmUgYm9v
bCBDU1NQcmltaXRpdmVWYWx1ZTo6aXNGb250UmVsYXRpdmVMZW5ndGgoVW5pdFR5cGVzIHR5cGUp
Cit7CisgICAgcmV0dXJuIHR5cGUgPT0gQ1NTX0VNUworICAgICAgICB8fCB0eXBlID09IENTU19F
WFMKKyAgICAgICAgfHwgdHlwZSA9PSBDU1NfUkVNUworICAgICAgICB8fCB0eXBlID09IENTU19D
SFMKKyAgICAgICAgfHwgdHlwZSA9PSBDU1NfUVVJUktZX0VNUzsKK30KKworaW5saW5lIGJvb2wg
Q1NTUHJpbWl0aXZlVmFsdWU6OmlzTGVuZ3RoKFVuaXRUeXBlcyB0eXBlKQoreworICAgIHJldHVy
biAodHlwZSA+PSBDU1NfRU1TICYmIHR5cGUgPD0gQ1NTX1BDKQorICAgICAgICB8fCB0eXBlID09
IENTU19SRU1TCisgICAgICAgIHx8IHR5cGUgPT0gQ1NTX0NIUworICAgICAgICB8fCBpc1ZpZXdw
b3J0UGVyY2VudGFnZUxlbmd0aCh0eXBlKQorICAgICAgICB8fCB0eXBlID09IENTU19RVUlSS1lf
RU1TOworfQorCitpbmxpbmUgYm9vbCBDU1NQcmltaXRpdmVWYWx1ZTo6aXNSZXNvbHV0aW9uKFVu
aXRUeXBlcyB0eXBlKQoreworICAgIHJldHVybiB0eXBlID49IENTU19EUFBYICYmIHR5cGUgPD0g
Q1NTX0RQQ007Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBSZWY8Q1NTUHJpbWl0
aXZlVmFsdWU+IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoVCYmIHZhbHVlKQoreworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHN0ZDo6Zm9yd2FyZDxUPih2YWx1
ZSkpKTsKK30KKworaW5saW5lIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gQ1NTUHJpbWl0aXZlVmFs
dWU6OmNyZWF0ZUFsbG93aW5nTWFyZ2luUXVpcmsoZG91YmxlIHZhbHVlLCBVbml0VHlwZXMgdHlw
ZSkKK3sKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0UmVmKCpuZXcgQ1NTUHJpbWl0aXZlVmFsdWUo
dmFsdWUsIHR5cGUpKTsKKyAgICByZXN1bHQtPm1faXNRdWlya1ZhbHVlID0gdHJ1ZTsKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBDU1NQcmltaXRpdmVWYWx1
ZTo6VGltZVVuaXQgdGltZVVuaXQ+IGlubGluZSBUIENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRl
VGltZSgpIGNvbnN0Cit7CisgICAgaWYgKHRpbWVVbml0ID09IFNlY29uZHMgJiYgcHJpbWl0aXZl
VHlwZSgpID09IENTU19TKQorICAgICAgICByZXR1cm4gdmFsdWU8VD4oKTsKKyAgICBpZiAodGlt
ZVVuaXQgPT0gU2Vjb25kcyAmJiBwcmltaXRpdmVUeXBlKCkgPT0gQ1NTX01TKQorICAgICAgICBy
ZXR1cm4gdmFsdWU8VD4oKSAvIDEwMDA7CisgICAgaWYgKHRpbWVVbml0ID09IE1pbGxpc2Vjb25k
cyAmJiBwcmltaXRpdmVUeXBlKCkgPT0gQ1NTX01TKQorICAgICAgICByZXR1cm4gdmFsdWU8VD4o
KTsKKyAgICBpZiAodGltZVVuaXQgPT0gTWlsbGlzZWNvbmRzICYmIHByaW1pdGl2ZVR5cGUoKSA9
PSBDU1NfUykKKyAgICAgICAgcmV0dXJuIHZhbHVlPFQ+KCkgKiAxMDAwOworICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAwOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBp
bmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKFJlZlB0cjxUPiYmIHZh
bHVlKQorICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCit7CisgICAgaW5pdChXVEZNb3Zl
KHZhbHVlKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoUmVmPFQ+JiYgdmFsdWUpCisgICAgOiBDU1NWYWx1ZShQ
cmltaXRpdmVDbGFzcykKK3sKKyAgICBpbml0KFdURk1vdmUodmFsdWUpKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0NTU19WQUxVRShDU1NQ
cmltaXRpdmVWYWx1ZSwgaXNQcmltaXRpdmVWYWx1ZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
cmltaXRpdmVWYWx1ZS5pZGwKaW5kZXggMjM0YjAwZmM1NDk5YTEyYWZmM2VkMjA1YmZiYzlhNDQw
NGJlYjI4My4uMjQ4MmM2MjA2NGQ2ODUzNTAyZGJmM2JkNDY1ZGQ5YzJlMDk2N2Q5ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaWRsCkBAIC0yMCw3ICsyMCw2IEBACiBb
CiAgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKIF0gaW50ZXJmYWNlIENTU1ByaW1pdGl2
ZVZhbHVlIDogQ1NTVmFsdWUgewotCiAgICAgLy8gVW5pdFR5cGVzCiAgICAgY29uc3QgdW5zaWdu
ZWQgc2hvcnQgQ1NTX1VOS05PV04gPSAwOwogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IENTU19O
VU1CRVIgPSAxOwpAQCAtNTUsMTMgKzU0LDEzIEBACiAgICAgCiAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIHVuc2lnbmVkIHNob3J0IHByaW1pdGl2ZVR5cGU7CiAKLSAgICBbTWF5VGhyb3dMZWdhY3lF
eGNlcHRpb25dIHZvaWQgc2V0RmxvYXRWYWx1ZShvcHRpb25hbCB1bnNpZ25lZCBzaG9ydCB1bml0
VHlwZSA9IDAsIG9wdGlvbmFsIHVucmVzdHJpY3RlZCBmbG9hdCBmbG9hdFZhbHVlID0gTmFOKTsK
LSAgICBbTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHVucmVzdHJpY3RlZCBmbG9hdCBnZXRGbG9h
dFZhbHVlKG9wdGlvbmFsIHVuc2lnbmVkIHNob3J0IHVuaXRUeXBlID0gMCk7CisgICAgW01heVRo
cm93RXhjZXB0aW9uXSB2b2lkIHNldEZsb2F0VmFsdWUob3B0aW9uYWwgdW5zaWduZWQgc2hvcnQg
dW5pdFR5cGUgPSAwLCBvcHRpb25hbCB1bnJlc3RyaWN0ZWQgZmxvYXQgZmxvYXRWYWx1ZSA9IE5h
Tik7CisgICAgW01heVRocm93RXhjZXB0aW9uXSB1bnJlc3RyaWN0ZWQgZmxvYXQgZ2V0RmxvYXRW
YWx1ZShvcHRpb25hbCB1bnNpZ25lZCBzaG9ydCB1bml0VHlwZSA9IDApOworCisgICAgW01heVRo
cm93RXhjZXB0aW9uXSB2b2lkIHNldFN0cmluZ1ZhbHVlKG9wdGlvbmFsIHVuc2lnbmVkIHNob3J0
IHN0cmluZ1R5cGUgPSAwLCBvcHRpb25hbCBET01TdHJpbmcgc3RyaW5nVmFsdWUpOworICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIGdldFN0cmluZ1ZhbHVlKCk7CiAKLSAgICAvLyBG
SVhNRTogVXNpbmcgInVuZGVmaW5lZCIgYXMgZGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWUgaXMgd3Jv
bmcuCi0gICAgW01heVRocm93TGVnYWN5RXhjZXB0aW9uXSB2b2lkIHNldFN0cmluZ1ZhbHVlKG9w
dGlvbmFsIHVuc2lnbmVkIHNob3J0IHN0cmluZ1R5cGUgPSAwLCBvcHRpb25hbCBET01TdHJpbmcg
c3RyaW5nVmFsdWUgPSAidW5kZWZpbmVkIik7Ci0gICAgW01heVRocm93TGVnYWN5RXhjZXB0aW9u
XSBET01TdHJpbmcgZ2V0U3RyaW5nVmFsdWUoKTsKLSAgICBbTWF5VGhyb3dMZWdhY3lFeGNlcHRp
b25dIENvdW50ZXIgZ2V0Q291bnRlclZhbHVlKCk7Ci0gICAgW01heVRocm93TGVnYWN5RXhjZXB0
aW9uXSBSZWN0IGdldFJlY3RWYWx1ZSgpOwotICAgIFtNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0g
UkdCQ29sb3IgZ2V0UkdCQ29sb3JWYWx1ZSgpOworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gQ291
bnRlciBnZXRDb3VudGVyVmFsdWUoKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFJlY3QgZ2V0
UmVjdFZhbHVlKCk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBSR0JDb2xvciBnZXRSR0JDb2xv
clZhbHVlKCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2
ZVZhbHVlTWFwcGluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1h
cHBpbmdzLmgKaW5kZXggMmViZjMyMmMzYjU4Njk3Y2RhYzNlZTk2Zjc5YTE1NDJjZjA1Yzc0NS4u
MmQ1ZThjZTZmNDhkODU4Y2NhZTIyMDE1NzFhMTMxMzFjNWU2ZmM2OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCkBAIC0yNyw4ICsyNyw3IEBA
CiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5nc19o
Ci0jZGVmaW5lIENTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3NfaAorI3ByYWdtYSBvbmNlCiAKICNp
bmNsdWRlICJDU1NDYWxjdWxhdGlvblZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTRm9udEZhbWlseS5o
IgpAQCAtODIsNyArODEsNyBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTUHJpbWl0aXZlVmFsdWUodW5zaWduZWQgc2hvcnQgaSkKIHRlbXBsYXRlPD4gaW5saW5lIENT
U1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciB1bnNpZ25lZCBzaG9ydCgpIGNvbnN0CiB7CiAgICAg
aWYgKHByaW1pdGl2ZVR5cGUoKSA9PSBDU1NfTlVNQkVSKQotICAgICAgICByZXR1cm4gZ2V0VmFs
dWU8dW5zaWduZWQgc2hvcnQ+KCk7CisgICAgICAgIHJldHVybiB2YWx1ZTx1bnNpZ25lZCBzaG9y
dD4oKTsKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiAwOwpAQCAtOTEs
NyArOTAsNyBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3Ig
dW5zaWduZWQgc2hvcnQoKSBjb25zdAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFs
dWU6Om9wZXJhdG9yIGludCgpIGNvbnN0CiB7CiAgICAgaWYgKHByaW1pdGl2ZVR5cGUoKSA9PSBD
U1NfTlVNQkVSKQotICAgICAgICByZXR1cm4gZ2V0VmFsdWU8aW50PigpOworICAgICAgICByZXR1
cm4gdmFsdWU8aW50PigpOwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJu
IDA7CkBAIC0xMDAsNyArOTksNyBAQCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1
ZTo6b3BlcmF0b3IgaW50KCkgY29uc3QKIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZh
bHVlOjpvcGVyYXRvciB1bnNpZ25lZCgpIGNvbnN0CiB7CiAgICAgaWYgKHByaW1pdGl2ZVR5cGUo
KSA9PSBDU1NfTlVNQkVSKQotICAgICAgICByZXR1cm4gZ2V0VmFsdWU8dW5zaWduZWQ+KCk7Cisg
ICAgICAgIHJldHVybiB2YWx1ZTx1bnNpZ25lZD4oKTsKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgIHJldHVybiAwOwpAQCAtMTE3LDcgKzExNiw3IEBAIHRlbXBsYXRlPD4gaW5saW5l
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShmbG9hdCBpKQogdGVtcGxhdGU8
PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIGZsb2F0KCkgY29uc3QKIHsKICAg
ICBpZiAocHJpbWl0aXZlVHlwZSgpID09IENTU19OVU1CRVIpCi0gICAgICAgIHJldHVybiBnZXRW
YWx1ZTxmbG9hdD4oKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlPGZsb2F0PigpOwogCiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIDAuMGY7CkBAIC0xMzMsMTAgKzEzMiwxMCBA
QCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUo
TGluZUNsYW1wVmFsdWUgaSkKIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpv
cGVyYXRvciBMaW5lQ2xhbXBWYWx1ZSgpIGNvbnN0CiB7CiAgICAgaWYgKHByaW1pdGl2ZVR5cGUo
KSA9PSBDU1NfTlVNQkVSKQotICAgICAgICByZXR1cm4gTGluZUNsYW1wVmFsdWUoZ2V0VmFsdWU8
aW50PigpLCBMaW5lQ2xhbXBMaW5lQ291bnQpOworICAgICAgICByZXR1cm4gTGluZUNsYW1wVmFs
dWUodmFsdWU8aW50PigpLCBMaW5lQ2xhbXBMaW5lQ291bnQpOwogCiAgICAgaWYgKHByaW1pdGl2
ZVR5cGUoKSA9PSBDU1NfUEVSQ0VOVEFHRSkKLSAgICAgICAgcmV0dXJuIExpbmVDbGFtcFZhbHVl
KGdldFZhbHVlPGludD4oKSwgTGluZUNsYW1wUGVyY2VudGFnZSk7CisgICAgICAgIHJldHVybiBM
aW5lQ2xhbXBWYWx1ZSh2YWx1ZTxpbnQ+KCksIExpbmVDbGFtcFBlcmNlbnRhZ2UpOwogCiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIExpbmVDbGFtcFZhbHVlKCk7CkBAIC00
NjE0LDggKzQ2MTMsOCBAQCB0ZW1wbGF0ZTxpbnQgc3VwcG9ydGVkPiBMZW5ndGggQ1NTUHJpbWl0
aXZlVmFsdWU6OmNvbnZlcnRUb0xlbmd0aChjb25zdCBDU1NUb0xlbgogICAgIGlmICgoc3VwcG9y
dGVkICYgRml4ZWRGbG9hdENvbnZlcnNpb24pICYmIGlzTGVuZ3RoKCkpCiAgICAgICAgIHJldHVy
biBMZW5ndGgoY29tcHV0ZUxlbmd0aDxkb3VibGU+KGNvbnZlcnNpb25EYXRhKSwgRml4ZWQpOwog
ICAgIGlmICgoc3VwcG9ydGVkICYgUGVyY2VudENvbnZlcnNpb24pICYmIGlzUGVyY2VudGFnZSgp
KQotICAgICAgICByZXR1cm4gTGVuZ3RoKGdldERvdWJsZVZhbHVlKCksIFBlcmNlbnQpOwotICAg
IGlmICgoc3VwcG9ydGVkICYgQXV0b0NvbnZlcnNpb24pICYmIGdldFZhbHVlSUQoKSA9PSBDU1NW
YWx1ZUF1dG8pCisgICAgICAgIHJldHVybiBMZW5ndGgoZG91YmxlVmFsdWUoKSwgUGVyY2VudCk7
CisgICAgaWYgKChzdXBwb3J0ZWQgJiBBdXRvQ29udmVyc2lvbikgJiYgdmFsdWVJRCgpID09IENT
U1ZhbHVlQXV0bykKICAgICAgICAgcmV0dXJuIExlbmd0aChBdXRvKTsKICAgICBpZiAoKHN1cHBv
cnRlZCAmIENhbGN1bGF0ZWRDb252ZXJzaW9uKSAmJiBpc0NhbGN1bGF0ZWQoKSkKICAgICAgICAg
cmV0dXJuIExlbmd0aChjc3NDYWxjVmFsdWUoKS0+Y3JlYXRlQ2FsY3VsYXRpb25WYWx1ZShjb252
ZXJzaW9uRGF0YSkpOwpAQCAtNTA0NSw3ICs1MDQ0LDcgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKEltYWdlT3JpZW50YXRpb25FbnVtIGUp
CiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgSW1hZ2VPcmll
bnRhdGlvbkVudW0oKSBjb25zdAogewogICAgIEFTU0VSVChpc0FuZ2xlKCkpOwotICAgIGRvdWJs
ZSBxdWFydGVycyA9IDQgKiBnZXREb3VibGVWYWx1ZShDU1NfVFVSTik7CisgICAgZG91YmxlIHF1
YXJ0ZXJzID0gNCAqIGRvdWJsZVZhbHVlKENTU19UVVJOKTsKICAgICBpbnQgb3JpZW50YXRpb24g
PSAzICYgc3RhdGljX2Nhc3Q8aW50PihxdWFydGVycyA8IDAgPyBmbG9vcihxdWFydGVycykgOiBj
ZWlsKHF1YXJ0ZXJzKSk7CiAgICAgc3dpdGNoIChvcmllbnRhdGlvbikgewogICAgIGNhc2UgMDoK
QEAgLTUwOTksNyArNTA5OCw3IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NQcmltaXRpdmVWYWx1ZShDU1NCb3hUeXBlIGNzc0JveCkKIAogdGVtcGxhdGU8PiBpbmxp
bmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIENTU0JveFR5cGUoKSBjb25zdAogewotICAg
IHN3aXRjaCAoZ2V0VmFsdWVJRCgpKSB7CisgICAgc3dpdGNoICh2YWx1ZUlEKCkpIHsKICAgICBj
YXNlIENTU1ZhbHVlTWFyZ2luQm94OgogICAgICAgICByZXR1cm4gTWFyZ2luQm94OwogICAgIGNh
c2UgQ1NTVmFsdWVCb3JkZXJCb3g6CkBAIC01Njg2LDYgKzU2ODUsNSBAQCB0ZW1wbGF0ZTw+IGlu
bGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgRm9udFZhcmlhbnRBbHRlcm5hdGVzKCkg
Y29uc3QKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gRm9udFZhcmlhbnRB
bHRlcm5hdGVzOjpOb3JtYWw7CiB9Ci19CiAKLSNlbmRpZgorfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1J1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1J1bGUuY3Bw
CmluZGV4IGYwMWNmZmFmZDkwNzk1ZTY2NDUyZjJmYTJiMDVjMWUzMzUzMzFkMDAuLmU1MjYwYTQy
YTA1Zjk1NzAwYzdhZmM0Mjc3ZjMxZmRkNDhlMmNjM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NSdWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUnVsZS5jcHAK
QEAgLTQ1LDkgKzQ1LDkgQEAgQ09NUElMRV9BU1NFUlQoU3R5bGVSdWxlQmFzZTo6UmVnaW9uID09
IHN0YXRpY19jYXN0PFN0eWxlUnVsZUJhc2U6OlR5cGU+KENTU1J1bGUKIENPTVBJTEVfQVNTRVJU
KFN0eWxlUnVsZUJhc2U6OlZpZXdwb3J0ID09IHN0YXRpY19jYXN0PFN0eWxlUnVsZUJhc2U6OlR5
cGU+KENTU1J1bGU6OldFQktJVF9WSUVXUE9SVF9SVUxFKSwgZW51bXNfc2hvdWxkX21hdGNoKTsK
ICNlbmRpZgogCi12b2lkIENTU1J1bGU6OnNldENzc1RleHQoY29uc3QgU3RyaW5nJiAvKmNzc1Rl
eHQqLywgRXhjZXB0aW9uQ29kZSYgLyplYyovKQorRXhjZXB0aW9uT3I8dm9pZD4gQ1NTUnVsZTo6
c2V0Q3NzVGV4dChjb25zdCBTdHJpbmcmKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
cmV0dXJuIHsgfTsKIH0KIAogY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgQ1NTUnVsZTo6cGFyc2Vy
Q29udGV4dCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUnVsZS5o
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1J1bGUuaAppbmRleCAzOTQ2M2U2MzU1MjYwZTdjM2M1
M2YxMTZhYTVlNTlmZDJiMGY1MGMwLi44NjcyNGJhZDI5NmZhZTk1OGEzZjFiZGQ1ZmY5MGE5NDZi
YWFjN2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUnVsZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NSdWxlLmgKQEAgLTIyLDE2ICsyMiwxNSBAQAogCiAjcHJhZ21h
IG9uY2UKIAotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSAiRXhjZXB0aW9u
T3IuaCIKICNpbmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1NTU3R5bGVTaGVldDsK
IGNsYXNzIFN0eWxlUnVsZUJhc2U7CisKIHN0cnVjdCBDU1NQYXJzZXJDb250ZXh0OwotdHlwZWRl
ZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAogY2xhc3MgQ1NTUnVsZSA6IHB1YmxpYyBSZWZDb3VudGVk
PENTU1J1bGU+IHsKIHB1YmxpYzoKQEAgLTg5LDcgKzg4LDcgQEAgcHVibGljOgogCiAgICAgQ1NT
UnVsZSogcGFyZW50UnVsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyZW50SXNSdWxlID8gbV9wYXJl
bnRSdWxlIDogMDsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDc3NUZXh0KGNvbnN0
IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25P
cjx2b2lkPiBzZXRDc3NUZXh0KGNvbnN0IFN0cmluZyYpOwogCiBwcm90ZWN0ZWQ6CiAgICAgQ1NT
UnVsZShDU1NTdHlsZVNoZWV0KiBwYXJlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUnVsZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUnVsZS5pZGwKaW5kZXggNTgy
ZWFmOTU2ZjNkM2JmMjBmMzM4YmM0YTZmMDg5OWNlYmVmMzZjMy4uMTI2OGYxMTcyZGY1NmFlOGNl
ZWM1MGIxZDliMTYxZjc3MTFlY2JmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1J1bGUuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSdWxlLmlkbApAQCAtMzYsMTkg
KzM2LDE2IEBACiAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgS0VZRlJBTUVTX1JVTEUgPSA3Owog
ICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IEtFWUZSQU1FX1JVTEUgPSA4OwogICAgIGNvbnN0IHVu
c2lnbmVkIHNob3J0IFNVUFBPUlRTX1JVTEUgPSAxMjsKLSNpZiBkZWZpbmVkKEVOQUJMRV9DU1Nf
REVWSUNFX0FEQVBUQVRJT04pICYmIEVOQUJMRV9DU1NfREVWSUNFX0FEQVBUQVRJT04KLSAgICBj
b25zdCB1bnNpZ25lZCBzaG9ydCBXRUJLSVRfVklFV1BPUlRfUlVMRSA9IDE1OwotI2VuZGlmCi0j
aWYgZGVmaW5lZChFTkFCTEVfQ1NTX1JFR0lPTlMpICYmIEVOQUJMRV9DU1NfUkVHSU9OUwotICAg
IGNvbnN0IHVuc2lnbmVkIHNob3J0IFdFQktJVF9SRUdJT05fUlVMRSA9IDE2OwotI2VuZGlmCisg
ICAgW0NvbmRpdGlvbmFsPUNTU19ERVZJQ0VfQURBUFRBVElPTl0gY29uc3QgdW5zaWduZWQgc2hv
cnQgV0VCS0lUX1ZJRVdQT1JUX1JVTEUgPSAxNTsKKyAgICBbQ29uZGl0aW9uYWw9Q1NTX1JFR0lP
TlNdIGNvbnN0IHVuc2lnbmVkIHNob3J0IFdFQktJVF9SRUdJT05fUlVMRSA9IDE2OwogCi0gICAg
Y29uc3QgdW5zaWduZWQgc2hvcnQgV0VCS0lUX0tFWUZSQU1FU19SVUxFID0gNzsgLy8gQXZvaWQg
YnJlYWtpbmcgZXhpc3RpbmcgY29udGVudC4KKyAgICAvLyBMZWdhY3kgc3lub255bXMgZm9yIHRo
ZSBhYm92ZSwga2VwdCB0byBhdm9pZCBicmVha2luZyBleGlzdGluZyBjb250ZW50LgorICAgIGNv
bnN0IHVuc2lnbmVkIHNob3J0IFdFQktJVF9LRVlGUkFNRVNfUlVMRSA9IDc7CiAgICAgY29uc3Qg
dW5zaWduZWQgc2hvcnQgV0VCS0lUX0tFWUZSQU1FX1JVTEUgPSA4OwogCiAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIHVuc2lnbmVkIHNob3J0IHR5cGU7CiAKLSAgICBbU2V0dGVyTWF5VGhyb3dMZWdh
Y3lFeGNlcHRpb25dIGF0dHJpYnV0ZSBET01TdHJpbmc/IGNzc1RleHQ7CisgICAgW1NldHRlck1h
eVRocm93RXhjZXB0aW9uXSBhdHRyaWJ1dGUgRE9NU3RyaW5nPyBjc3NUZXh0OwogCiAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIENTU1N0eWxlU2hlZXQ/IHBhcmVudFN0eWxlU2hlZXQ7CiAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIENTU1J1bGU/IHBhcmVudFJ1bGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1N0eWxlRGVjbGFyYXRpb24uaAppbmRleCA0OGZmZjJhYThhZDdiMmY2MjMzNzI3ZGYzNGRiOWE3
Y2JhMGJlMjM5Li41ZTQzMjFiMjhlYzY1ZDhmZjI4MWU5MzZjYTUxMTg5MDQ2NmY4MzAyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmgKQEAgLTE4LDEwICsxOCwxMCBA
QAogICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCiAgKi8KIAotI2lmbmRlZiBDU1NTdHls
ZURlY2xhcmF0aW9uX2gKLSNkZWZpbmUgQ1NTU3R5bGVEZWNsYXJhdGlvbl9oCisjcHJhZ21hIG9u
Y2UKIAogI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25P
ci5oIgogI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CiAKQEAgLTM1LDggKzM1LDYgQEAgY2xhc3MgTXV0YWJsZVN0eWxlUHJvcGVydGllczsKIGNs
YXNzIFN0eWxlUHJvcGVydGllczsKIGNsYXNzIFN0eWxlZEVsZW1lbnQ7CiAKLXR5cGVkZWYgaW50
IEV4Y2VwdGlvbkNvZGU7Ci0KIGNsYXNzIENTU1N0eWxlRGVjbGFyYXRpb24gOiBwdWJsaWMgU2Ny
aXB0V3JhcHBhYmxlIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDU1NTdHlsZURlY2xhcmF0
aW9uKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBAIC00OCw3ICs0Niw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0eWxlZEVsZW1lbnQqIHBhcmVudEVsZW1lbnQoKSBjb25z
dCB7IHJldHVybiBudWxscHRyOyB9CiAgICAgdmlydHVhbCBDU1NSdWxlKiBwYXJlbnRSdWxlKCkg
Y29uc3QgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIGNzc1RleHQoKSBjb25zdCA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIHNldENzc1RleHQoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpID0g
MDsKKyAgICB2aXJ0dWFsIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldENzc1RleHQoY29uc3QgU3RyaW5n
JikgPSAwOwogICAgIHZpcnR1YWwgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgU3RyaW5nIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFs
IFJlZlB0cjxDU1NWYWx1ZT4gZ2V0UHJvcGVydHlDU1NWYWx1ZShjb25zdCBTdHJpbmcmIHByb3Bl
cnR5TmFtZSkgPSAwOwpAQCAtNTYsMjQgKzU0LDIyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0
cmluZyBnZXRQcm9wZXJ0eVByaW9yaXR5KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKSA9IDA7
CiAgICAgdmlydHVhbCBTdHJpbmcgZ2V0UHJvcGVydHlTaG9ydGhhbmQoY29uc3QgU3RyaW5nJiBw
cm9wZXJ0eU5hbWUpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNQcm9wZXJ0eUltcGxpY2l0KGNv
bnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldFByb3Bl
cnR5KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBjb25z
dCBTdHJpbmcmIHByaW9yaXR5LCBFeGNlcHRpb25Db2RlJikgPSAwOwotICAgIHZpcnR1YWwgU3Ry
aW5nIHJlbW92ZVByb3BlcnR5KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBFeGNlcHRpb25D
b2RlJikgPSAwOworICAgIHZpcnR1YWwgRXhjZXB0aW9uT3I8dm9pZD4gc2V0UHJvcGVydHkoY29u
c3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGNvbnN0IFN0cmlu
ZyYgcHJpb3JpdHkpID0gMDsKKyAgICB2aXJ0dWFsIEV4Y2VwdGlvbk9yPFN0cmluZz4gcmVtb3Zl
UHJvcGVydHkoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpID0gMDsKIAogICAgIC8vIENTU1By
b3BlcnR5SUQgdmVyc2lvbnMgb2YgdGhlIENTU09NIGZ1bmN0aW9ucyB0byBzdXBwb3J0IGJpbmRp
bmdzIGFuZCBlZGl0aW5nLgogICAgIC8vIFVzZSB0aGUgbm9uLXZpcnR1YWwgbWV0aG9kcyBpbiB0
aGUgY29uY3JldGUgc3ViY2xhc3NlcyB3aGVuIHBvc3NpYmxlLgogICAgIC8vIFRoZSBDU1NWYWx1
ZSByZXR1cm5lZCBieSB0aGlzIGZ1bmN0aW9uIHNob3VsZCBub3QgYmUgZXhwb3NlZCB0byB0aGUg
d2ViIGFzIGl0IG1heSBiZSB1c2VkIGJ5IG11bHRpcGxlIGRvY3VtZW50cyBhdCB0aGUgc2FtZSB0
aW1lLgogICAgIHZpcnR1YWwgUmVmUHRyPENTU1ZhbHVlPiBnZXRQcm9wZXJ0eUNTU1ZhbHVlSW50
ZXJuYWwoQ1NTUHJvcGVydHlJRCkgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIGdldFByb3BlcnR5
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUlEKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHNldFBy
b3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBp
bXBvcnRhbnQsIEV4Y2VwdGlvbkNvZGUmKSA9IDA7CisgICAgdmlydHVhbCBFeGNlcHRpb25Pcjxi
b29sPiBzZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgdmFs
dWUsIGJvb2wgaW1wb3J0YW50KSA9IDA7CiAKICAgICB2aXJ0dWFsIFJlZjxNdXRhYmxlU3R5bGVQ
cm9wZXJ0aWVzPiBjb3B5UHJvcGVydGllcygpIGNvbnN0ID0gMDsKIAotICAgIHZpcnR1YWwgQ1NT
U3R5bGVTaGVldCogcGFyZW50U3R5bGVTaGVldCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyAgICB2
aXJ0dWFsIENTU1N0eWxlU2hlZXQqIHBhcmVudFN0eWxlU2hlZXQoKSBjb25zdCB7IHJldHVybiBu
dWxscHRyOyB9CiAKIHByb3RlY3RlZDoKICAgICBDU1NTdHlsZURlY2xhcmF0aW9uKCkgeyB9CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBDU1NTdHlsZURlY2xhcmF0
aW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9u
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmlkbAppbmRleCA0
Nzg5M2EyNTY4MmI5NGM1NzI5NzFjZjhlZTcxZWJkYjgxMjE2YjllLi4yYzg1YTRjMGQ4YWE1Njll
YzBlNGQ1MmE1ODExYzZlZTMzZTI0MjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTU3R5bGVEZWNsYXJhdGlvbi5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxl
RGVjbGFyYXRpb24uaWRsCkBAIC0yOCwxNSArMjgsMTUgQEAKICAgICBKU0N1c3RvbU1hcmtGdW5j
dGlvbiwKICAgICBTa2lwVlRhYmxlVmFsaWRhdGlvbiwKIF0gaW50ZXJmYWNlIENTU1N0eWxlRGVj
bGFyYXRpb24gewotICAgIFtTZXR0ZXJNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gYXR0cmlidXRl
IERPTVN0cmluZyBjc3NUZXh0OworICAgIFtTZXR0ZXJNYXlUaHJvd0V4Y2VwdGlvbl0gYXR0cmli
dXRlIERPTVN0cmluZyBjc3NUZXh0OwogCiAgICAgRE9NU3RyaW5nIGdldFByb3BlcnR5VmFsdWUo
RE9NU3RyaW5nIHByb3BlcnR5TmFtZSk7CiAgICAgW0N1c3RvbV0gQ1NTVmFsdWU/IGdldFByb3Bl
cnR5Q1NTVmFsdWUoRE9NU3RyaW5nIHByb3BlcnR5TmFtZSk7CiAKLSAgICBbTWF5VGhyb3dMZWdh
Y3lFeGNlcHRpb25dIERPTVN0cmluZyByZW1vdmVQcm9wZXJ0eShET01TdHJpbmcgcHJvcGVydHlO
YW1lKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIERPTVN0cmluZyByZW1vdmVQcm9wZXJ0eShE
T01TdHJpbmcgcHJvcGVydHlOYW1lKTsKICAgICBET01TdHJpbmc/IGdldFByb3BlcnR5UHJpb3Jp
dHkoRE9NU3RyaW5nIHByb3BlcnR5TmFtZSk7CiAKLSAgICBbTWF5VGhyb3dMZWdhY3lFeGNlcHRp
b25dIHZvaWQgc2V0UHJvcGVydHkoRE9NU3RyaW5nIHByb3BlcnR5TmFtZSwgW1RyZWF0TnVsbEFz
PUVtcHR5U3RyaW5nXSBET01TdHJpbmcgdmFsdWUsIFtUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10g
b3B0aW9uYWwgRE9NU3RyaW5nIHByaW9yaXR5ID0gIiIpOworICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gdm9pZCBzZXRQcm9wZXJ0eShET01TdHJpbmcgcHJvcGVydHlOYW1lLCBbVHJlYXROdWxsQXM9
RW1wdHlTdHJpbmddIERPTVN0cmluZyB2YWx1ZSwgW1RyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBv
cHRpb25hbCBET01TdHJpbmcgcHJpb3JpdHkgPSAiIik7CiAKICAgICByZWFkb25seSBhdHRyaWJ1
dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7CiAgICAgZ2V0dGVyIERPTVN0cmluZyBpdGVtKHVuc2ln
bmVkIGxvbmcgaW5kZXgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxl
U2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCmluZGV4IGFm
OGUyNDVmOTlkNzQ0MmU0YWYyODIxZjk3M2I4NmMyMzRiNGNjZjEuLjVmOTFhYTFmZGZhYWE2MjM2
NTQ3OGYxN2RkZTk2MzZiNjJkM2JjNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5j
cHAKQEAgLTI4NCw1MyArMjg0LDQzIEBAIFJlZlB0cjxDU1NSdWxlTGlzdD4gQ1NTU3R5bGVTaGVl
dDo6cnVsZXMoKQogICAgIHJldHVybiBub25DaGFyc2V0UnVsZXM7CiB9CiAKLXVuc2lnbmVkIENT
U1N0eWxlU2hlZXQ6OmRlcHJlY2F0ZWRJbnNlcnRSdWxlKGNvbnN0IFN0cmluZyYgcnVsZVN0cmlu
ZywgRXhjZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRpb25Pcjx1bnNpZ25lZD4gQ1NTU3R5bGVTaGVl
dDo6ZGVwcmVjYXRlZEluc2VydFJ1bGUoY29uc3QgU3RyaW5nJiBydWxlU3RyaW5nKQogewogICAg
IGlmIChhdXRvKiBkb2N1bWVudCA9IG93bmVyRG9jdW1lbnQoKSkKICAgICAgICAgZG9jdW1lbnQt
PmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6Oldhcm5p
bmcsIEFTQ0lJTGl0ZXJhbCgiQ2FsbGluZyBDU1NTdHlsZVNoZWV0Lmluc2VydFJ1bGUoKSB3aXRo
IG9uZSBhcmd1bWVudCBpcyBkZXByZWNhdGVkLiBQbGVhc2UgcGFzcyB0aGUgaW5kZXggYXJndW1l
bnQgYXMgd2VsbDogaW5zZXJ0UnVsZSh4LCAwKS4iKSk7CiAKLSAgICByZXR1cm4gaW5zZXJ0UnVs
ZShydWxlU3RyaW5nLCAwLCBlYyk7CisgICAgcmV0dXJuIGluc2VydFJ1bGUocnVsZVN0cmluZywg
MCk7CiB9CiAKLXVuc2lnbmVkIENTU1N0eWxlU2hlZXQ6Omluc2VydFJ1bGUoY29uc3QgU3RyaW5n
JiBydWxlU3RyaW5nLCB1bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRp
b25Pcjx1bnNpZ25lZD4gQ1NTU3R5bGVTaGVldDo6aW5zZXJ0UnVsZShjb25zdCBTdHJpbmcmIHJ1
bGVTdHJpbmcsIHVuc2lnbmVkIGluZGV4KQogewogICAgIEFTU0VSVChtX2NoaWxkUnVsZUNTU09N
V3JhcHBlcnMuaXNFbXB0eSgpIHx8IG1fY2hpbGRSdWxlQ1NTT01XcmFwcGVycy5zaXplKCkgPT0g
bV9jb250ZW50cy0+cnVsZUNvdW50KCkpOwogCi0gICAgZWMgPSAwOwotICAgIGlmIChpbmRleCA+
IGxlbmd0aCgpKSB7Ci0gICAgICAgIGVjID0gSU5ERVhfU0laRV9FUlI7Ci0gICAgICAgIHJldHVy
biAwOwotICAgIH0KKyAgICBpZiAoaW5kZXggPiBsZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IElOREVYX1NJWkVfRVJSIH07CiAgICAgQ1NTUGFyc2VyIHAobV9jb250ZW50cy5n
ZXQoKS5wYXJzZXJDb250ZXh0KCkpOwogICAgIFJlZlB0cjxTdHlsZVJ1bGVCYXNlPiBydWxlID0g
cC5wYXJzZVJ1bGUobV9jb250ZW50cy5wdHIoKSwgcnVsZVN0cmluZyk7CiAKLSAgICBpZiAoIXJ1
bGUpIHsKLSAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9
CisgICAgaWYgKCFydWxlKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU1lOVEFYX0VSUiB9
OwogCiAgICAgUnVsZU11dGF0aW9uU2NvcGUgbXV0YXRpb25TY29wZSh0aGlzLCBSdWxlSW5zZXJ0
aW9uLCBpczxTdHlsZVJ1bGVLZXlmcmFtZXM+KCpydWxlKSA/IGRvd25jYXN0PFN0eWxlUnVsZUtl
eWZyYW1lcz4ocnVsZS5nZXQoKSkgOiBudWxscHRyKTsKIAogICAgIGJvb2wgc3VjY2VzcyA9IG1f
Y29udGVudHMuZ2V0KCkud3JhcHBlckluc2VydFJ1bGUocnVsZS5yZWxlYXNlTm9uTnVsbCgpLCBp
bmRleCk7Ci0gICAgaWYgKCFzdWNjZXNzKSB7Ci0gICAgICAgIGVjID0gSElFUkFSQ0hZX1JFUVVF
U1RfRVJSOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9ICAgICAgICAKKyAgICBpZiAoIXN1Y2Nl
c3MpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBISUVSQVJDSFlfUkVRVUVTVF9FUlIgfTsK
ICAgICBpZiAoIW1fY2hpbGRSdWxlQ1NTT01XcmFwcGVycy5pc0VtcHR5KCkpCiAgICAgICAgIG1f
Y2hpbGRSdWxlQ1NTT01XcmFwcGVycy5pbnNlcnQoaW5kZXgsIFJlZlB0cjxDU1NSdWxlPigpKTsK
IAogICAgIHJldHVybiBpbmRleDsKIH0KIAotdm9pZCBDU1NTdHlsZVNoZWV0OjpkZWxldGVSdWxl
KHVuc2lnbmVkIGluZGV4LCBFeGNlcHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPHZvaWQ+IENT
U1N0eWxlU2hlZXQ6OmRlbGV0ZVJ1bGUodW5zaWduZWQgaW5kZXgpCiB7CiAgICAgQVNTRVJUKG1f
Y2hpbGRSdWxlQ1NTT01XcmFwcGVycy5pc0VtcHR5KCkgfHwgbV9jaGlsZFJ1bGVDU1NPTVdyYXBw
ZXJzLnNpemUoKSA9PSBtX2NvbnRlbnRzLT5ydWxlQ291bnQoKSk7CiAKLSAgICBlYyA9IDA7Ci0g
ICAgaWYgKGluZGV4ID49IGxlbmd0aCgpKSB7Ci0gICAgICAgIGVjID0gSU5ERVhfU0laRV9FUlI7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKGluZGV4ID49IGxlbmd0aCgpKQorICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSU5ERVhfU0laRV9FUlIgfTsKICAgICBSdWxlTXV0YXRp
b25TY29wZSBtdXRhdGlvblNjb3BlKHRoaXMpOwogCiAgICAgbV9jb250ZW50cy0+d3JhcHBlckRl
bGV0ZVJ1bGUoaW5kZXgpOwpAQCAtMzQwLDkgKzMzMCwxMSBAQCB2b2lkIENTU1N0eWxlU2hlZXQ6
OmRlbGV0ZVJ1bGUodW5zaWduZWQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICAg
ICAgbV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJzW2luZGV4XS0+c2V0UGFyZW50U3R5bGVTaGVldChu
dWxscHRyKTsKICAgICAgICAgbV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJzLnJlbW92ZShpbmRleCk7
CiAgICAgfQorCisgICAgcmV0dXJuIHsgfTsKIH0KIAotaW50IENTU1N0eWxlU2hlZXQ6OmFkZFJ1
bGUoY29uc3QgU3RyaW5nJiBzZWxlY3RvciwgY29uc3QgU3RyaW5nJiBzdHlsZSwgT3B0aW9uYWw8
dW5zaWduZWQ+IGluZGV4LCBFeGNlcHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPGludD4gQ1NT
U3R5bGVTaGVldDo6YWRkUnVsZShjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBjb25zdCBTdHJpbmcm
IHN0eWxlLCBPcHRpb25hbDx1bnNpZ25lZD4gaW5kZXgpCiB7CiAgICAgU3RyaW5nQnVpbGRlciB0
ZXh0OwogICAgIHRleHQuYXBwZW5kKHNlbGVjdG9yKTsKQEAgLTM1MSw3ICszNDMsOSBAQCBpbnQg
Q1NTU3R5bGVTaGVldDo6YWRkUnVsZShjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBjb25zdCBTdHJp
bmcmIHN0eWxlLCBPcHRpb25hbAogICAgIGlmICghc3R5bGUuaXNFbXB0eSgpKQogICAgICAgICB0
ZXh0LmFwcGVuZCgnICcpOwogICAgIHRleHQuYXBwZW5kKCd9Jyk7Ci0gICAgaW5zZXJ0UnVsZSh0
ZXh0LnRvU3RyaW5nKCksIGluZGV4LnZhbHVlT3IobGVuZ3RoKCkpLCBlYyk7CisgICAgYXV0byBp
bnNlcnRSdWxlUmVzdWx0ID0gaW5zZXJ0UnVsZSh0ZXh0LnRvU3RyaW5nKCksIGluZGV4LnZhbHVl
T3IobGVuZ3RoKCkpKTsKKyAgICBpZiAoaW5zZXJ0UnVsZVJlc3VsdC5oYXNFeGNlcHRpb24oKSkK
KyAgICAgICAgcmV0dXJuIGluc2VydFJ1bGVSZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOwogICAg
IAogICAgIC8vIEFzIHBlciBNaWNyb3NvZnQgZG9jdW1lbnRhdGlvbiwgYWx3YXlzIHJldHVybiAt
MS4KICAgICByZXR1cm4gLTE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5
bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaAppbmRleCBjMWFl
MWJlNzRhMzFmODU5NWM2MzRiMmZjMGFlYmY3NTdjMzZlOTUwLi43NDRhOWMyNDNjZDY0MjQyMzli
ZmE0NjcwMWU5Zjk2YzEzYjVhZTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmgKQEAg
LTIxLDYgKzIxLDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ1NTUGFyc2VyTW9kZS5o
IgorI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAiU3R5bGVTaGVldC5oIgogI2lu
Y2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtNDksOCArNTAsNiBA
QCBuYW1lc3BhY2UgU3R5bGUgewogY2xhc3MgU2NvcGU7CiB9CiAKLXR5cGVkZWYgaW50IEV4Y2Vw
dGlvbkNvZGU7Ci0KIGNsYXNzIENTU1N0eWxlU2hlZXQgZmluYWwgOiBwdWJsaWMgU3R5bGVTaGVl
dCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxDU1NTdHlsZVNoZWV0PiBjcmVhdGUoUmVmPFN0
eWxlU2hlZXRDb250ZW50cz4mJiwgQ1NTSW1wb3J0UnVsZSogb3duZXJSdWxlID0gMCk7CkBAIC02
OCwxNCArNjcsMTMgQEAgcHVibGljOgogICAgIHZvaWQgc2V0RGlzYWJsZWQoYm9vbCkgZmluYWw7
CiAgICAgCiAgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPENTU1J1bGVMaXN0PiBjc3NSdWxlcygp
OwotICAgIFdFQkNPUkVfRVhQT1JUIHVuc2lnbmVkIGluc2VydFJ1bGUoY29uc3QgU3RyaW5nJiBy
dWxlLCB1bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHVuc2lnbmVkIGRlcHJl
Y2F0ZWRJbnNlcnRSdWxlKGNvbnN0IFN0cmluZyYgcnVsZSwgRXhjZXB0aW9uQ29kZSYpOwotICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgZGVsZXRlUnVsZSh1bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9u
Q29kZSYpOworICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPHVuc2lnbmVkPiBpbnNlcnRS
dWxlKGNvbnN0IFN0cmluZyYgcnVsZSwgdW5zaWduZWQgaW5kZXgpOworICAgIEV4Y2VwdGlvbk9y
PHVuc2lnbmVkPiBkZXByZWNhdGVkSW5zZXJ0UnVsZShjb25zdCBTdHJpbmcmIHJ1bGUpOworICAg
IFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPHZvaWQ+IGRlbGV0ZVJ1bGUodW5zaWduZWQgaW5k
ZXgpOwogICAgIAotICAgIC8vIElFIEV4dGVuc2lvbnMKICAgICBXRUJDT1JFX0VYUE9SVCBSZWZQ
dHI8Q1NTUnVsZUxpc3Q+IHJ1bGVzKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgaW50IGFkZFJ1bGUo
Y29uc3QgU3RyaW5nJiBzZWxlY3RvciwgY29uc3QgU3RyaW5nJiBzdHlsZSwgT3B0aW9uYWw8dW5z
aWduZWQ+IGluZGV4LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCByZW1vdmVSdWxlKHVuc2ln
bmVkIGluZGV4LCBFeGNlcHRpb25Db2RlJiBlYykgeyBkZWxldGVSdWxlKGluZGV4LCBlYyk7IH0K
KyAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25PcjxpbnQ+IGFkZFJ1bGUoY29uc3QgU3RyaW5n
JiBzZWxlY3RvciwgY29uc3QgU3RyaW5nJiBzdHlsZSwgT3B0aW9uYWw8dW5zaWduZWQ+IGluZGV4
KTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiByZW1vdmVSdWxlKHVuc2lnbmVkIGluZGV4KSB7IHJl
dHVybiBkZWxldGVSdWxlKGluZGV4KTsgfQogICAgIAogICAgIC8vIEZvciBDU1NSdWxlTGlzdC4K
ICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTdHlsZVNoZWV0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0
LmlkbAppbmRleCA5NTM4Zjg1Njg0MzE5ZjI2M2Q4MDM2ODhhZjQzNTlmNjVmOWVmNzY2Li4wY2Vi
NDE1YjdlNzUzNjg4NDFiYjkzMDg2M2E1NzY4NjI5NzQ2NjY1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1N0eWxlU2hlZXQuaWRsCkBAIC0yMiwxNCArMjIsMTQgQEAgaW50ZXJmYWNlIENTU1N0eWxlU2hl
ZXQgOiBTdHlsZVNoZWV0IHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgQ1NTUnVsZSBvd25lclJ1
bGU7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIENTU1J1bGVMaXN0IGNzc1J1bGVzOwogCi0gICAg
W01heVRocm93TGVnYWN5RXhjZXB0aW9uXSB1bnNpZ25lZCBsb25nIGluc2VydFJ1bGUoRE9NU3Ry
aW5nIHJ1bGUsIHVuc2lnbmVkIGxvbmcgaW5kZXgpOwotICAgIFtNYXlUaHJvd0xlZ2FjeUV4Y2Vw
dGlvbiwgSW1wbGVtZW50ZWRBcz1kZXByZWNhdGVkSW5zZXJ0UnVsZV0gdW5zaWduZWQgbG9uZyBp
bnNlcnRSdWxlKERPTVN0cmluZyBydWxlKTsgLy8gRGVwcmVjYXRlZC4KKyAgICBbTWF5VGhyb3dF
eGNlcHRpb25dIHVuc2lnbmVkIGxvbmcgaW5zZXJ0UnVsZShET01TdHJpbmcgcnVsZSwgdW5zaWdu
ZWQgbG9uZyBpbmRleCk7CisgICAgW01heVRocm93RXhjZXB0aW9uLCBJbXBsZW1lbnRlZEFzPWRl
cHJlY2F0ZWRJbnNlcnRSdWxlXSB1bnNpZ25lZCBsb25nIGluc2VydFJ1bGUoRE9NU3RyaW5nIHJ1
bGUpOyAvLyBEZXByZWNhdGVkLgogCi0gICAgW01heVRocm93TGVnYWN5RXhjZXB0aW9uXSB2b2lk
IGRlbGV0ZVJ1bGUodW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgW01heVRocm93RXhjZXB0aW9u
XSB2b2lkIGRlbGV0ZVJ1bGUodW5zaWduZWQgbG9uZyBpbmRleCk7CiAKICAgICByZWFkb25seSBh
dHRyaWJ1dGUgQ1NTUnVsZUxpc3QgcnVsZXM7CiAKLSAgICAvLyBGSVhNRTogVGhvc2Ugb3BlcmF0
aW9ucyBhcmUgV2ViS2l0LXNwZWNpZmljLgotICAgIFtNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0g
bG9uZyBhZGRSdWxlKG9wdGlvbmFsIERPTVN0cmluZyBzZWxlY3RvciA9ICJ1bmRlZmluZWQiLCBv
cHRpb25hbCBET01TdHJpbmcgc3R5bGUgPSAidW5kZWZpbmVkIiwgb3B0aW9uYWwgdW5zaWduZWQg
bG9uZyBpbmRleCk7Ci0gICAgW01heVRocm93TGVnYWN5RXhjZXB0aW9uXSB2b2lkIHJlbW92ZVJ1
bGUob3B0aW9uYWwgdW5zaWduZWQgbG9uZyBpbmRleCA9IDApOworICAgIC8vIFRoZSBmb2xsb3dp
bmcgdHdvIG9wZXJhdGlvbnMgYXJlIFdlYktpdC1zcGVjaWZpYy4KKyAgICBbTWF5VGhyb3dFeGNl
cHRpb25dIGxvbmcgYWRkUnVsZShvcHRpb25hbCBET01TdHJpbmcgc2VsZWN0b3IgPSAidW5kZWZp
bmVkIiwgb3B0aW9uYWwgRE9NU3RyaW5nIHN0eWxlID0gInVuZGVmaW5lZCIsIG9wdGlvbmFsIHVu
c2lnbmVkIGxvbmcgaW5kZXgpOworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCByZW1vdmVS
dWxlKG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgaW5kZXggPSAwKTsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3VwcG9ydHNSdWxlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NTdXBwb3J0c1J1bGUuaWRsCmluZGV4IGFkMzY0ZjYzNGEwMmU2OWI2ZjkxZjFkNWY1OTI0
NzhkZjAxMTkyYzguLmY5NjUwMGIxOTJiMTI3NDljYzU0ODNmOWYxODEyNDhmYjk0ZmJjN2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdXBwb3J0c1J1bGUuaWRsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTdXBwb3J0c1J1bGUuaWRsCkBAIC0zMCw3ICszMCw2IEBAIGlu
dGVyZmFjZSBDU1NTdXBwb3J0c1J1bGUgOiBDU1NSdWxlIHsKICAgICByZWFkb25seSBhdHRyaWJ1
dGUgQ1NTUnVsZUxpc3QgY3NzUnVsZXM7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmlu
ZyBjb25kaXRpb25UZXh0OwogCi0gICAgW01heVRocm93TGVnYWN5RXhjZXB0aW9uXSB1bnNpZ25l
ZCBsb25nIGluc2VydFJ1bGUoRE9NU3RyaW5nIHJ1bGUsIHVuc2lnbmVkIGxvbmcgaW5kZXgpOwot
ICAgIFtNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gdm9pZCBkZWxldGVSdWxlKHVuc2lnbmVkIGxv
bmcgaW5kZXgpOworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5zaWduZWQgbG9uZyBpbnNlcnRS
dWxlKERPTVN0cmluZyBydWxlLCB1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICBbTWF5VGhyb3dF
eGNlcHRpb25dIHZvaWQgZGVsZXRlUnVsZSh1bnNpZ25lZCBsb25nIGluZGV4KTsKIH07Ci0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUb1N0eWxlTWFwLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NUb1N0eWxlTWFwLmNwcAppbmRleCA5YmQyZmQ2YmUyZWMyM2IzN2Q4NjAx
NDdiZTc0NDQwNDI4MTA3YWM0Li44Y2Y1YzdlOGNlNzVhNjBlNWZlZTBjZTQ1YTUyYmI0Y2I1MTAz
YzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVG9TdHlsZU1hcC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RvU3R5bGVNYXAuY3BwCkBAIC04MSw3ICs4MSw3IEBA
IHZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFwRmlsbEF0dGFjaG1lbnQoQ1NTUHJvcGVydHlJRCBwcm9w
ZXJ0eUlELCBGaWxsTGF5ZXImIGxheWVyCiAgICAgaWYgKCFpczxDU1NQcmltaXRpdmVWYWx1ZT4o
dmFsdWUpKQogICAgICAgICByZXR1cm47CiAKLSAgICBzd2l0Y2ggKGRvd25jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlPih2YWx1ZSkuZ2V0VmFsdWVJRCgpKSB7CisgICAgc3dpdGNoIChkb3duY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLnZhbHVlSUQoKSkgewogICAgIGNhc2UgQ1NTVmFsdWVG
aXhlZDoKICAgICAgICAgbGF5ZXIuc2V0QXR0YWNobWVudChGaXhlZEJhY2tncm91bmRBdHRhY2ht
ZW50KTsKICAgICAgICAgYnJlYWs7CkBAIC0xODYsNyArMTg2LDcgQEAgdm9pZCBDU1NUb1N0eWxl
TWFwOjptYXBGaWxsUmVwZWF0WShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIEZpbGxMYXllciYg
bGF5ZXIsIGMKIAogc3RhdGljIGlubGluZSBib29sIGNvbnZlcnRUb0xlbmd0aFNpemUoY29uc3Qg
Q1NTUHJpbWl0aXZlVmFsdWUmIHByaW1pdGl2ZVZhbHVlLCBDU1NUb0xlbmd0aENvbnZlcnNpb25E
YXRhIGNvbnZlcnNpb25EYXRhLCBMZW5ndGhTaXplJiBzaXplKQogewotICAgIGlmIChhdXRvKiBw
YWlyID0gcHJpbWl0aXZlVmFsdWUuZ2V0UGFpclZhbHVlKCkpIHsKKyAgICBpZiAoYXV0byogcGFp
ciA9IHByaW1pdGl2ZVZhbHVlLnBhaXJWYWx1ZSgpKSB7CiAgICAgICAgIHNpemUuc2V0V2lkdGgo
cGFpci0+Zmlyc3QoKS0+Y29udmVydFRvTGVuZ3RoPEFueUNvbnZlcnNpb24+KGNvbnZlcnNpb25E
YXRhKSk7CiAgICAgICAgIHNpemUuc2V0SGVpZ2h0KHBhaXItPnNlY29uZCgpLT5jb252ZXJ0VG9M
ZW5ndGg8QW55Q29udmVyc2lvbj4oY29udmVyc2lvbkRhdGEpKTsKICAgICB9IGVsc2UKQEAgLTIw
Nyw3ICsyMDcsNyBAQCB2b2lkIENTU1RvU3R5bGVNYXA6Om1hcEZpbGxTaXplKENTU1Byb3BlcnR5
SUQgcHJvcGVydHlJRCwgRmlsbExheWVyJiBsYXllciwgY29ucwogCiAgICAgYXV0byYgcHJpbWl0
aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwogICAgIEZpbGxT
aXplIGZpbGxTaXplOwotICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWVJRCgpKSB7
CisgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkpIHsKICAgICBjYXNlIENTU1Zh
bHVlQ29udGFpbjoKICAgICAgICAgZmlsbFNpemUudHlwZSA9IENvbnRhaW47CiAgICAgICAgIGJy
ZWFrOwpAQCAtMjM0LDcgKzIzNCw3IEBAIHZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFwRmlsbFhQb3Np
dGlvbihDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIEZpbGxMYXllciYgbGF5ZXIsCiAgICAgICAg
IHJldHVybjsKIAogICAgIGF1dG8qIHByaW1pdGl2ZVZhbHVlID0gJmRvd25jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlPih2YWx1ZSk7Ci0gICAgUGFpciogcGFpciA9IHByaW1pdGl2ZVZhbHVlLT5nZXRQ
YWlyVmFsdWUoKTsKKyAgICBQYWlyKiBwYWlyID0gcHJpbWl0aXZlVmFsdWUtPnBhaXJWYWx1ZSgp
OwogICAgIGlmIChwYWlyKSB7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQocHJvcGVydHlJRCwgcHJv
cGVydHlJRCA9PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblggfHwgcHJvcGVydHlJRCA9
PSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblgpOwogICAgICAgICBwcmltaXRpdmVWYWx1
ZSA9IHBhaXItPnNlY29uZCgpOwpAQCAtMjQ0LDcgKzI0NCw3IEBAIHZvaWQgQ1NTVG9TdHlsZU1h
cDo6bWFwRmlsbFhQb3NpdGlvbihDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIEZpbGxMYXllciYg
bGF5ZXIsCiAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc0xlbmd0aCgpKQogICAgICAgICBsZW5n
dGggPSBwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aDxMZW5ndGg+KG1fcmVzb2x2ZXItPnN0
YXRlKCkuY3NzVG9MZW5ndGhDb252ZXJzaW9uRGF0YSgpKTsKICAgICBlbHNlIGlmIChwcmltaXRp
dmVWYWx1ZS0+aXNQZXJjZW50YWdlKCkpCi0gICAgICAgIGxlbmd0aCA9IExlbmd0aChwcmltaXRp
dmVWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7CisgICAgICAgIGxlbmd0aCA9IExl
bmd0aChwcmltaXRpdmVWYWx1ZS0+ZG91YmxlVmFsdWUoKSwgUGVyY2VudCk7CiAgICAgZWxzZSBp
ZiAocHJpbWl0aXZlVmFsdWUtPmlzQ2FsY3VsYXRlZFBlcmNlbnRhZ2VXaXRoTGVuZ3RoKCkpCiAg
ICAgICAgIGxlbmd0aCA9IExlbmd0aChwcmltaXRpdmVWYWx1ZS0+Y3NzQ2FsY1ZhbHVlKCktPmNy
ZWF0ZUNhbGN1bGF0aW9uVmFsdWUobV9yZXNvbHZlci0+c3RhdGUoKS5jc3NUb0xlbmd0aENvbnZl
cnNpb25EYXRhKCkpKTsKICAgICBlbHNlCkBAIC0yNjYsNyArMjY2LDcgQEAgdm9pZCBDU1NUb1N0
eWxlTWFwOjptYXBGaWxsWVBvc2l0aW9uKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgRmlsbExh
eWVyJiBsYXllciwKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byogcHJpbWl0aXZlVmFsdWUg
PSAmZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKLSAgICBQYWlyKiBwYWlyID0g
cHJpbWl0aXZlVmFsdWUtPmdldFBhaXJWYWx1ZSgpOworICAgIFBhaXIqIHBhaXIgPSBwcmltaXRp
dmVWYWx1ZS0+cGFpclZhbHVlKCk7CiAgICAgaWYgKHBhaXIpIHsKICAgICAgICAgQVNTRVJUX1VO
VVNFRChwcm9wZXJ0eUlELCBwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0
aW9uWSB8fCBwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWSk7CiAg
ICAgICAgIHByaW1pdGl2ZVZhbHVlID0gcGFpci0+c2Vjb25kKCk7CkBAIC0yNzYsNyArMjc2LDcg
QEAgdm9pZCBDU1NUb1N0eWxlTWFwOjptYXBGaWxsWVBvc2l0aW9uKENTU1Byb3BlcnR5SUQgcHJv
cGVydHlJRCwgRmlsbExheWVyJiBsYXllciwKICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmlzTGVu
Z3RoKCkpCiAgICAgICAgIGxlbmd0aCA9IHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoPExl
bmd0aD4obV9yZXNvbHZlci0+c3RhdGUoKS5jc3NUb0xlbmd0aENvbnZlcnNpb25EYXRhKCkpOwog
ICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc1BlcmNlbnRhZ2UoKSkKLSAgICAgICAgbGVu
Z3RoID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5nZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsK
KyAgICAgICAgbGVuZ3RoID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5kb3VibGVWYWx1ZSgpLCBQ
ZXJjZW50KTsKICAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS0+aXNDYWxjdWxhdGVkUGVyY2Vu
dGFnZVdpdGhMZW5ndGgoKSkKICAgICAgICAgbGVuZ3RoID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVl
LT5jc3NDYWxjVmFsdWUoKS0+Y3JlYXRlQ2FsY3VsYXRpb25WYWx1ZShtX3Jlc29sdmVyLT5zdGF0
ZSgpLmNzc1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoKSkpOwogICAgIGVsc2UKQEAgLTI5OCw3ICsy
OTgsNyBAQCB2b2lkIENTU1RvU3R5bGVNYXA6Om1hcEZpbGxNYXNrU291cmNlVHlwZShDU1NQcm9w
ZXJ0eUlEIHByb3BlcnR5SUQsIEZpbGxMYXllciYgbAogICAgIGlmICghaXM8Q1NTUHJpbWl0aXZl
VmFsdWU+KHZhbHVlKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc3dpdGNoIChkb3duY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLmdldFZhbHVlSUQoKSkgeworICAgIHN3aXRjaCAoZG93
bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS52YWx1ZUlEKCkpIHsKICAgICBjYXNlIENT
U1ZhbHVlQWxwaGE6CiAgICAgICAgIHR5cGUgPSBFTWFza1NvdXJjZVR5cGU6Ok1hc2tBbHBoYTsK
ICAgICAgICAgYnJlYWs7CkBAIC0zMzcsNyArMzM3LDcgQEAgdm9pZCBDU1NUb1N0eWxlTWFwOjpt
YXBBbmltYXRpb25EaXJlY3Rpb24oQW5pbWF0aW9uJiBsYXllciwgY29uc3QgQ1NTVmFsdWUmIHZh
bHUKICAgICBpZiAoIWlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIHN3aXRjaCAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS5nZXRW
YWx1ZUlEKCkpIHsKKyAgICBzd2l0Y2ggKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1
ZSkudmFsdWVJRCgpKSB7CiAgICAgY2FzZSBDU1NWYWx1ZU5vcm1hbDoKICAgICAgICAgbGF5ZXIu
c2V0RGlyZWN0aW9uKEFuaW1hdGlvbjo6QW5pbWF0aW9uRGlyZWN0aW9uTm9ybWFsKTsKICAgICAg
ICAgYnJlYWs7CkBAIC0zNzgsNyArMzc4LDcgQEAgdm9pZCBDU1NUb1N0eWxlTWFwOjptYXBBbmlt
YXRpb25GaWxsTW9kZShBbmltYXRpb24mIGxheWVyLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUKICAg
ICBpZiAoIWlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIHN3aXRjaCAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS5nZXRWYWx1ZUlE
KCkpIHsKKyAgICBzd2l0Y2ggKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkudmFs
dWVJRCgpKSB7CiAgICAgY2FzZSBDU1NWYWx1ZU5vbmU6CiAgICAgICAgIGxheWVyLnNldEZpbGxN
b2RlKEFuaW1hdGlvbkZpbGxNb2RlTm9uZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNDA3LDEwICs0
MDcsMTAgQEAgdm9pZCBDU1NUb1N0eWxlTWFwOjptYXBBbmltYXRpb25JdGVyYXRpb25Db3VudChB
bmltYXRpb24mIGFuaW1hdGlvbiwgY29uc3QgQ1NTVmEKICAgICAgICAgcmV0dXJuOwogCiAgICAg
YXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUp
OwotICAgIGlmIChwcmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVJbmZpbml0
ZSkKKyAgICBpZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlSW5maW5pdGUp
CiAgICAgICAgIGFuaW1hdGlvbi5zZXRJdGVyYXRpb25Db3VudChBbmltYXRpb246Okl0ZXJhdGlv
bkNvdW50SW5maW5pdGUpOwogICAgIGVsc2UKLSAgICAgICAgYW5pbWF0aW9uLnNldEl0ZXJhdGlv
bkNvdW50KHByaW1pdGl2ZVZhbHVlLmdldEZsb2F0VmFsdWUoKSk7CisgICAgICAgIGFuaW1hdGlv
bi5zZXRJdGVyYXRpb25Db3VudChwcmltaXRpdmVWYWx1ZS5mbG9hdFZhbHVlKCkpOwogfQogCiB2
b2lkIENTU1RvU3R5bGVNYXA6Om1hcEFuaW1hdGlvbk5hbWUoQW5pbWF0aW9uJiBsYXllciwgY29u
c3QgQ1NTVmFsdWUmIHZhbHVlKQpAQCAtNDI0LDEwICs0MjQsMTAgQEAgdm9pZCBDU1NUb1N0eWxl
TWFwOjptYXBBbmltYXRpb25OYW1lKEFuaW1hdGlvbiYgbGF5ZXIsIGNvbnN0IENTU1ZhbHVlJiB2
YWx1ZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3du
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwotICAgIGlmIChwcmltaXRpdmVWYWx1ZS5n
ZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKQorICAgIGlmIChwcmltaXRpdmVWYWx1ZS52YWx1
ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKQogICAgICAgICBsYXllci5zZXRJc05vbmVBbmltYXRpb24o
dHJ1ZSk7CiAgICAgZWxzZQotICAgICAgICBsYXllci5zZXROYW1lKHByaW1pdGl2ZVZhbHVlLmdl
dFN0cmluZ1ZhbHVlKCkpOworICAgICAgICBsYXllci5zZXROYW1lKHByaW1pdGl2ZVZhbHVlLnN0
cmluZ1ZhbHVlKCkpOwogfQogCiB2b2lkIENTU1RvU3R5bGVNYXA6Om1hcEFuaW1hdGlvblBsYXlT
dGF0ZShBbmltYXRpb24mIGxheWVyLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCkBAIC00NDAsNyAr
NDQwLDcgQEAgdm9pZCBDU1NUb1N0eWxlTWFwOjptYXBBbmltYXRpb25QbGF5U3RhdGUoQW5pbWF0
aW9uJiBsYXllciwgY29uc3QgQ1NTVmFsdWUmIHZhbHUKICAgICBpZiAoIWlzPENTU1ByaW1pdGl2
ZVZhbHVlPih2YWx1ZSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEVBbmltUGxheVN0YXRlIHBs
YXlTdGF0ZSA9IChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLmdldFZhbHVlSUQo
KSA9PSBDU1NWYWx1ZVBhdXNlZCkgPyBBbmltUGxheVN0YXRlUGF1c2VkIDogQW5pbVBsYXlTdGF0
ZVBsYXlpbmc7CisgICAgRUFuaW1QbGF5U3RhdGUgcGxheVN0YXRlID0gKGRvd25jYXN0PENTU1By
aW1pdGl2ZVZhbHVlPih2YWx1ZSkudmFsdWVJRCgpID09IENTU1ZhbHVlUGF1c2VkKSA/IEFuaW1Q
bGF5U3RhdGVQYXVzZWQgOiBBbmltUGxheVN0YXRlUGxheWluZzsKICAgICBsYXllci5zZXRQbGF5
U3RhdGUocGxheVN0YXRlKTsKIH0KIApAQCAtNDU2LDE1ICs0NTYsMTUgQEAgdm9pZCBDU1NUb1N0
eWxlTWFwOjptYXBBbmltYXRpb25Qcm9wZXJ0eShBbmltYXRpb24mIGFuaW1hdGlvbiwgY29uc3Qg
Q1NTVmFsdWUmIHYKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUg
PSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwotICAgIGlmIChwcmltaXRpdmVW
YWx1ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVBbGwpIHsKKyAgICBpZiAocHJpbWl0aXZlVmFs
dWUudmFsdWVJRCgpID09IENTU1ZhbHVlQWxsKSB7CiAgICAgICAgIGFuaW1hdGlvbi5zZXRBbmlt
YXRpb25Nb2RlKEFuaW1hdGlvbjo6QW5pbWF0ZUFsbCk7CiAgICAgICAgIGFuaW1hdGlvbi5zZXRQ
cm9wZXJ0eShDU1NQcm9wZXJ0eUludmFsaWQpOwotICAgIH0gZWxzZSBpZiAocHJpbWl0aXZlVmFs
dWUuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZSkgeworICAgIH0gZWxzZSBpZiAocHJpbWl0
aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZSkgewogICAgICAgICBhbmltYXRpb24u
c2V0QW5pbWF0aW9uTW9kZShBbmltYXRpb246OkFuaW1hdGVOb25lKTsKICAgICAgICAgYW5pbWF0
aW9uLnNldFByb3BlcnR5KENTU1Byb3BlcnR5SW52YWxpZCk7CiAgICAgfSBlbHNlIHsKICAgICAg
ICAgYW5pbWF0aW9uLnNldEFuaW1hdGlvbk1vZGUoQW5pbWF0aW9uOjpBbmltYXRlU2luZ2xlUHJv
cGVydHkpOwotICAgICAgICBhbmltYXRpb24uc2V0UHJvcGVydHkocHJpbWl0aXZlVmFsdWUuZ2V0
UHJvcGVydHlJRCgpKTsKKyAgICAgICAgYW5pbWF0aW9uLnNldFByb3BlcnR5KHByaW1pdGl2ZVZh
bHVlLnByb3BlcnR5SUQoKSk7CiAgICAgfQogfQogCkBAIC00NzYsNyArNDc2LDcgQEAgdm9pZCBD
U1NUb1N0eWxlTWFwOjptYXBBbmltYXRpb25UaW1pbmdGdW5jdGlvbihBbmltYXRpb24mIGFuaW1h
dGlvbiwgY29uc3QgQ1NTVmEKICAgICB9CiAKICAgICBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+
KHZhbHVlKSkgewotICAgICAgICBzd2l0Y2ggKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2
YWx1ZSkuZ2V0VmFsdWVJRCgpKSB7CisgICAgICAgIHN3aXRjaCAoZG93bmNhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWU+KHZhbHVlKS52YWx1ZUlEKCkpIHsKICAgICAgICAgY2FzZSBDU1NWYWx1ZUxpbmVh
cjoKICAgICAgICAgICAgIGFuaW1hdGlvbi5zZXRUaW1pbmdGdW5jdGlvbihMaW5lYXJUaW1pbmdG
dW5jdGlvbjo6Y3JlYXRlKCkpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC01MjYsNyArNTI2LDcg
QEAgdm9pZCBDU1NUb1N0eWxlTWFwOjptYXBBbmltYXRpb25UcmlnZ2VyKEFuaW1hdGlvbiYgYW5p
bWF0aW9uLCBjb25zdCBDU1NWYWx1ZSYgdmEKIAogICAgIGlmICh2YWx1ZS5pc1ByaW1pdGl2ZVZh
bHVlKCkpIHsKICAgICAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZT4odmFsdWUpOwotICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWVJ
RCgpID09IENTU1ZhbHVlQXV0bykKKyAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQo
KSA9PSBDU1NWYWx1ZUF1dG8pCiAgICAgICAgICAgICBhbmltYXRpb24uc2V0VHJpZ2dlcihBdXRv
QW5pbWF0aW9uVHJpZ2dlcjo6Y3JlYXRlKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAt
NjA4LDIxICs2MDgsMjEgQEAgdm9pZCBDU1NUb1N0eWxlTWFwOjptYXBOaW5lUGllY2VJbWFnZVNs
aWNlKENTU1ZhbHVlJiB2YWx1ZSwgTmluZVBpZWNlSW1hZ2UmIGltYWcKICAgICBMZW5ndGhCb3gg
Ym94OwogICAgIFF1YWQqIHNsaWNlcyA9IGJvcmRlckltYWdlU2xpY2Uuc2xpY2VzKCk7CiAgICAg
aWYgKHNsaWNlcy0+dG9wKCktPmlzUGVyY2VudGFnZSgpKQotICAgICAgICBib3gudG9wKCkgPSBM
ZW5ndGgoc2xpY2VzLT50b3AoKS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7CisgICAgICAg
IGJveC50b3AoKSA9IExlbmd0aChzbGljZXMtPnRvcCgpLT5kb3VibGVWYWx1ZSgpLCBQZXJjZW50
KTsKICAgICBlbHNlCi0gICAgICAgIGJveC50b3AoKSA9IExlbmd0aChzbGljZXMtPnRvcCgpLT5n
ZXRJbnRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUiksIEZpeGVkKTsKKyAgICAg
ICAgYm94LnRvcCgpID0gTGVuZ3RoKHNsaWNlcy0+dG9wKCktPmludFZhbHVlKENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfTlVNQkVSKSwgRml4ZWQpOwogICAgIGlmIChzbGljZXMtPmJvdHRvbSgpLT5p
c1BlcmNlbnRhZ2UoKSkKLSAgICAgICAgYm94LmJvdHRvbSgpID0gTGVuZ3RoKHNsaWNlcy0+Ym90
dG9tKCktPmdldERvdWJsZVZhbHVlKCksIFBlcmNlbnQpOworICAgICAgICBib3guYm90dG9tKCkg
PSBMZW5ndGgoc2xpY2VzLT5ib3R0b20oKS0+ZG91YmxlVmFsdWUoKSwgUGVyY2VudCk7CiAgICAg
ZWxzZQotICAgICAgICBib3guYm90dG9tKCkgPSBMZW5ndGgoKGludClzbGljZXMtPmJvdHRvbSgp
LT5nZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSwgRml4ZWQpOwor
ICAgICAgICBib3guYm90dG9tKCkgPSBMZW5ndGgoKGludClzbGljZXMtPmJvdHRvbSgpLT5mbG9h
dFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSwgRml4ZWQpOwogICAgIGlmIChz
bGljZXMtPmxlZnQoKS0+aXNQZXJjZW50YWdlKCkpCi0gICAgICAgIGJveC5sZWZ0KCkgPSBMZW5n
dGgoc2xpY2VzLT5sZWZ0KCktPmdldERvdWJsZVZhbHVlKCksIFBlcmNlbnQpOworICAgICAgICBi
b3gubGVmdCgpID0gTGVuZ3RoKHNsaWNlcy0+bGVmdCgpLT5kb3VibGVWYWx1ZSgpLCBQZXJjZW50
KTsKICAgICBlbHNlCi0gICAgICAgIGJveC5sZWZ0KCkgPSBMZW5ndGgoc2xpY2VzLT5sZWZ0KCkt
PmdldEludFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSwgRml4ZWQpOworICAg
ICAgICBib3gubGVmdCgpID0gTGVuZ3RoKHNsaWNlcy0+bGVmdCgpLT5pbnRWYWx1ZShDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX05VTUJFUiksIEZpeGVkKTsKICAgICBpZiAoc2xpY2VzLT5yaWdodCgp
LT5pc1BlcmNlbnRhZ2UoKSkKLSAgICAgICAgYm94LnJpZ2h0KCkgPSBMZW5ndGgoc2xpY2VzLT5y
aWdodCgpLT5nZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKKyAgICAgICAgYm94LnJpZ2h0KCkg
PSBMZW5ndGgoc2xpY2VzLT5yaWdodCgpLT5kb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKICAgICBl
bHNlCi0gICAgICAgIGJveC5yaWdodCgpID0gTGVuZ3RoKHNsaWNlcy0+cmlnaHQoKS0+Z2V0SW50
VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpLCBGaXhlZCk7CisgICAgICAgIGJv
eC5yaWdodCgpID0gTGVuZ3RoKHNsaWNlcy0+cmlnaHQoKS0+aW50VmFsdWUoQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19OVU1CRVIpLCBGaXhlZCk7CiAgICAgaW1hZ2Uuc2V0SW1hZ2VTbGljZXMoYm94
KTsKIAogICAgIC8vIFNldCBvdXIgZmlsbCBtb2RlLgpAQCAtNjQyLDMzICs2NDIsMzMgQEAgTGVu
Z3RoQm94IENTU1RvU3R5bGVNYXA6Om1hcE5pbmVQaWVjZUltYWdlUXVhZChDU1NWYWx1ZSYgdmFs
dWUpCiAKICAgICAvLyBTZXQgdXAgYSBsZW5ndGggYm94IHRvIHJlcHJlc2VudCBvdXIgaW1hZ2Ug
c2xpY2VzLgogICAgIExlbmd0aEJveCBib3g7IC8vIERlZmF1bHRzIHRvICdhdXRvJyBzbyB3ZSBk
b24ndCBoYXZlIHRvIGhhbmRsZSB0aGF0IGV4cGxpY2l0bHkgYmVsb3cuCi0gICAgUXVhZCogc2xp
Y2VzID0gYm9yZGVyV2lkdGhzLmdldFF1YWRWYWx1ZSgpOworICAgIFF1YWQqIHNsaWNlcyA9IGJv
cmRlcldpZHRocy5xdWFkVmFsdWUoKTsKICAgICBpZiAoc2xpY2VzLT50b3AoKS0+aXNOdW1iZXIo
KSkKLSAgICAgICAgYm94LnRvcCgpID0gTGVuZ3RoKHNsaWNlcy0+dG9wKCktPmdldEludFZhbHVl
KCksIFJlbGF0aXZlKTsKKyAgICAgICAgYm94LnRvcCgpID0gTGVuZ3RoKHNsaWNlcy0+dG9wKCkt
PmludFZhbHVlKCksIFJlbGF0aXZlKTsKICAgICBlbHNlIGlmIChzbGljZXMtPnRvcCgpLT5pc1Bl
cmNlbnRhZ2UoKSkKLSAgICAgICAgYm94LnRvcCgpID0gTGVuZ3RoKHNsaWNlcy0+dG9wKCktPmdl
dERvdWJsZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSksIFBlcmNlbnQp
OwotICAgIGVsc2UgaWYgKHNsaWNlcy0+dG9wKCktPmdldFZhbHVlSUQoKSAhPSBDU1NWYWx1ZUF1
dG8pCisgICAgICAgIGJveC50b3AoKSA9IExlbmd0aChzbGljZXMtPnRvcCgpLT5kb3VibGVWYWx1
ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpLCBQZXJjZW50KTsKKyAgICBlbHNl
IGlmIChzbGljZXMtPnRvcCgpLT52YWx1ZUlEKCkgIT0gQ1NTVmFsdWVBdXRvKQogICAgICAgICBi
b3gudG9wKCkgPSBzbGljZXMtPnRvcCgpLT5jb21wdXRlTGVuZ3RoPExlbmd0aD4oY29udmVyc2lv
bkRhdGEpOwogCiAgICAgaWYgKHNsaWNlcy0+cmlnaHQoKS0+aXNOdW1iZXIoKSkKLSAgICAgICAg
Ym94LnJpZ2h0KCkgPSBMZW5ndGgoc2xpY2VzLT5yaWdodCgpLT5nZXRJbnRWYWx1ZSgpLCBSZWxh
dGl2ZSk7CisgICAgICAgIGJveC5yaWdodCgpID0gTGVuZ3RoKHNsaWNlcy0+cmlnaHQoKS0+aW50
VmFsdWUoKSwgUmVsYXRpdmUpOwogICAgIGVsc2UgaWYgKHNsaWNlcy0+cmlnaHQoKS0+aXNQZXJj
ZW50YWdlKCkpCi0gICAgICAgIGJveC5yaWdodCgpID0gTGVuZ3RoKHNsaWNlcy0+cmlnaHQoKS0+
Z2V0RG91YmxlVmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKSwgUGVyY2Vu
dCk7Ci0gICAgZWxzZSBpZiAoc2xpY2VzLT5yaWdodCgpLT5nZXRWYWx1ZUlEKCkgIT0gQ1NTVmFs
dWVBdXRvKQorICAgICAgICBib3gucmlnaHQoKSA9IExlbmd0aChzbGljZXMtPnJpZ2h0KCktPmRv
dWJsZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSksIFBlcmNlbnQpOwor
ICAgIGVsc2UgaWYgKHNsaWNlcy0+cmlnaHQoKS0+dmFsdWVJRCgpICE9IENTU1ZhbHVlQXV0bykK
ICAgICAgICAgYm94LnJpZ2h0KCkgPSBzbGljZXMtPnJpZ2h0KCktPmNvbXB1dGVMZW5ndGg8TGVu
Z3RoPihjb252ZXJzaW9uRGF0YSk7CiAKICAgICBpZiAoc2xpY2VzLT5ib3R0b20oKS0+aXNOdW1i
ZXIoKSkKLSAgICAgICAgYm94LmJvdHRvbSgpID0gTGVuZ3RoKHNsaWNlcy0+Ym90dG9tKCktPmdl
dEludFZhbHVlKCksIFJlbGF0aXZlKTsKKyAgICAgICAgYm94LmJvdHRvbSgpID0gTGVuZ3RoKHNs
aWNlcy0+Ym90dG9tKCktPmludFZhbHVlKCksIFJlbGF0aXZlKTsKICAgICBlbHNlIGlmIChzbGlj
ZXMtPmJvdHRvbSgpLT5pc1BlcmNlbnRhZ2UoKSkKLSAgICAgICAgYm94LmJvdHRvbSgpID0gTGVu
Z3RoKHNsaWNlcy0+Ym90dG9tKCktPmdldERvdWJsZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfUEVSQ0VOVEFHRSksIFBlcmNlbnQpOwotICAgIGVsc2UgaWYgKHNsaWNlcy0+Ym90dG9tKCkt
PmdldFZhbHVlSUQoKSAhPSBDU1NWYWx1ZUF1dG8pCisgICAgICAgIGJveC5ib3R0b20oKSA9IExl
bmd0aChzbGljZXMtPmJvdHRvbSgpLT5kb3VibGVWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X1BFUkNFTlRBR0UpLCBQZXJjZW50KTsKKyAgICBlbHNlIGlmIChzbGljZXMtPmJvdHRvbSgpLT52
YWx1ZUlEKCkgIT0gQ1NTVmFsdWVBdXRvKQogICAgICAgICBib3guYm90dG9tKCkgPSBzbGljZXMt
PmJvdHRvbSgpLT5jb21wdXRlTGVuZ3RoPExlbmd0aD4oY29udmVyc2lvbkRhdGEpOwogCiAgICAg
aWYgKHNsaWNlcy0+bGVmdCgpLT5pc051bWJlcigpKQotICAgICAgICBib3gubGVmdCgpID0gTGVu
Z3RoKHNsaWNlcy0+bGVmdCgpLT5nZXRJbnRWYWx1ZSgpLCBSZWxhdGl2ZSk7CisgICAgICAgIGJv
eC5sZWZ0KCkgPSBMZW5ndGgoc2xpY2VzLT5sZWZ0KCktPmludFZhbHVlKCksIFJlbGF0aXZlKTsK
ICAgICBlbHNlIGlmIChzbGljZXMtPmxlZnQoKS0+aXNQZXJjZW50YWdlKCkpCi0gICAgICAgIGJv
eC5sZWZ0KCkgPSBMZW5ndGgoc2xpY2VzLT5sZWZ0KCktPmdldERvdWJsZVZhbHVlKENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSksIFBlcmNlbnQpOwotICAgIGVsc2UgaWYgKHNsaWNl
cy0+bGVmdCgpLT5nZXRWYWx1ZUlEKCkgIT0gQ1NTVmFsdWVBdXRvKQorICAgICAgICBib3gubGVm
dCgpID0gTGVuZ3RoKHNsaWNlcy0+bGVmdCgpLT5kb3VibGVWYWx1ZShDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX1BFUkNFTlRBR0UpLCBQZXJjZW50KTsKKyAgICBlbHNlIGlmIChzbGljZXMtPmxlZnQo
KS0+dmFsdWVJRCgpICE9IENTU1ZhbHVlQXV0bykKICAgICAgICAgYm94LmxlZnQoKSA9IHNsaWNl
cy0+bGVmdCgpLT5jb21wdXRlTGVuZ3RoPExlbmd0aD4oY29udmVyc2lvbkRhdGEpOwogCiAgICAg
cmV0dXJuIGJveDsKQEAgLTY4MCwxMiArNjgwLDEyIEBAIHZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFw
TmluZVBpZWNlSW1hZ2VSZXBlYXQoQ1NTVmFsdWUmIHZhbHVlLCBOaW5lUGllY2VJbWFnZSYgaW1h
CiAgICAgICAgIHJldHVybjsKIAogICAgIENTU1ByaW1pdGl2ZVZhbHVlJiBwcmltaXRpdmVWYWx1
ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7Ci0gICAgUGFpciogcGFpciA9
IHByaW1pdGl2ZVZhbHVlLmdldFBhaXJWYWx1ZSgpOworICAgIFBhaXIqIHBhaXIgPSBwcmltaXRp
dmVWYWx1ZS5wYWlyVmFsdWUoKTsKICAgICBpZiAoIXBhaXIgfHwgIXBhaXItPmZpcnN0KCkgfHwg
IXBhaXItPnNlY29uZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBDU1NWYWx1ZUlEIGZpcnN0
SWRlbnRpZmllciA9IHBhaXItPmZpcnN0KCktPmdldFZhbHVlSUQoKTsKLSAgICBDU1NWYWx1ZUlE
IHNlY29uZElkZW50aWZpZXIgPSBwYWlyLT5zZWNvbmQoKS0+Z2V0VmFsdWVJRCgpOworICAgIENT
U1ZhbHVlSUQgZmlyc3RJZGVudGlmaWVyID0gcGFpci0+Zmlyc3QoKS0+dmFsdWVJRCgpOworICAg
IENTU1ZhbHVlSUQgc2Vjb25kSWRlbnRpZmllciA9IHBhaXItPnNlY29uZCgpLT52YWx1ZUlEKCk7
CiAKICAgICBFTmluZVBpZWNlSW1hZ2VSdWxlIGhvcml6b250YWxSdWxlOwogICAgIHN3aXRjaCAo
Zmlyc3RJZGVudGlmaWVyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFs
dWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oCmluZGV4IGY5OWQzNzNjOTUxMTY5
ZTE1ZGFkYmU3N2NiZDBmZTU2YzNkOGQxYWYuLmVmZDk4ODE5YjEyNzRhMThmNWI3YmZhODA5MjUx
ZWEzZDcyY2YyY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oCkBAIC0yMCw3ICsyMCw3IEBACiAKICNw
cmFnbWEgb25jZQogCi0jaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIkV4Y2Vw
dGlvbk9yLmgiCiAjaW5jbHVkZSAiVVJMSGFzaC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoK
IAogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBjc3NUZXh0KCkgY29uc3Q7CiAKLSAgICB2b2lk
IHNldENzc1RleHQoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpIHsgfSAvLyBGSVhNRTog
Tm90IGltcGxlbWVudGVkLgorICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldENzc1RleHQoY29uc3Qg
U3RyaW5nJikgeyByZXR1cm4geyB9OyB9IC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuCiAKICAg
ICBib29sIGlzUHJpbWl0aXZlVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzVHlwZSA9PSBQ
cmltaXRpdmVDbGFzczsgfQogICAgIGJvb2wgaXNWYWx1ZUxpc3QoKSBjb25zdCB7IHJldHVybiBt
X2NsYXNzVHlwZSA+PSBWYWx1ZUxpc3RDbGFzczsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1ZhbHVlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5pZGwKaW5k
ZXggNjA5YmZjMGM2NjU0NzBkOWE4NWYwYmE5YjY5YWJjODE2M2FjMGNjMC4uOGNmMTY1NDgyZTJm
Yzk3ZDEzYTI4NTQxZDhiM2EwMTJlMTQ4MWNjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ZhbHVlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaWRsCkBA
IC0xOSw4ICsxOSw4IEBACiAgKi8KIAogWwotICAgIEN1c3RvbVRvSlNPYmplY3QsCiAgICAgQ3Vz
dG9tSXNSZWFjaGFibGUsCisgICAgQ3VzdG9tVG9KU09iamVjdCwKICAgICBFeHBvcnRUb1dyYXBw
ZWRGdW5jdGlvbiwKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAogICAgIEpTQ3VzdG9t
RmluYWxpemUsCkBAIC0zMSw3ICszMSw3IEBACiAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgQ1NT
X1ZBTFVFX0xJU1QgPSAyOwogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IENTU19DVVNUT00gPSAz
OwogCi0gICAgW1NldHRlck1heVRocm93TGVnYWN5RXhjZXB0aW9uXSBhdHRyaWJ1dGUgRE9NU3Ry
aW5nPyBjc3NUZXh0OworICAgIFtTZXR0ZXJNYXlUaHJvd0V4Y2VwdGlvbl0gYXR0cmlidXRlIERP
TVN0cmluZz8gY3NzVGV4dDsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9y
dCBjc3NWYWx1ZVR5cGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NvdW50
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Db3VudGVyLmgKaW5kZXggMWIyMTBiZWRlNmU1Y2Yy
ZmZmMTc2OGE1Y2FiZDcxNjc3YTYyZmNjOC4uNzE0NmE3MmJkNGYxNGU2MjdkNWUwM2QwYTYyNGNi
MTAwZWZiYzM3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NvdW50ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ291bnRlci5oCkBAIC0zMiwxMSArMzIsMTEgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb3VudGVyKFdURk1vdmUoaWRlbnRpZmll
ciksIFdURk1vdmUobGlzdFN0eWxlKSwgV1RGTW92ZShzZXBhcmF0b3IpKSk7CiAgICAgfQogCi0g
ICAgU3RyaW5nIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXItPmdldFN0
cmluZ1ZhbHVlKCk7IH0KLSAgICBTdHJpbmcgbGlzdFN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9s
aXN0U3R5bGUtPmdldFN0cmluZ1ZhbHVlKCk7IH0KLSAgICBTdHJpbmcgc2VwYXJhdG9yKCkgY29u
c3QgeyByZXR1cm4gbV9zZXBhcmF0b3ItPmdldFN0cmluZ1ZhbHVlKCk7IH0KKyAgICBTdHJpbmcg
aWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllci0+c3RyaW5nVmFsdWUoKTsg
fQorICAgIFN0cmluZyBsaXN0U3R5bGUoKSBjb25zdCB7IHJldHVybiBtX2xpc3RTdHlsZS0+c3Ry
aW5nVmFsdWUoKTsgfQorICAgIFN0cmluZyBzZXBhcmF0b3IoKSBjb25zdCB7IHJldHVybiBtX3Nl
cGFyYXRvci0+c3RyaW5nVmFsdWUoKTsgfQogCi0gICAgQ1NTVmFsdWVJRCBsaXN0U3R5bGVJZGVu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fbGlzdFN0eWxlLT5nZXRWYWx1ZUlEKCk7IH0KKyAgICBDU1NW
YWx1ZUlEIGxpc3RTdHlsZUlkZW50KCkgY29uc3QgeyByZXR1cm4gbV9saXN0U3R5bGUtPnZhbHVl
SUQoKTsgfQogCiAgICAgdm9pZCBzZXRJZGVudGlmaWVyKFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4m
JiBpZGVudGlmaWVyKSB7IG1faWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcik7IH0KICAg
ICB2b2lkIHNldExpc3RTdHlsZShSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+JiYgbGlzdFN0eWxlKSB7
IG1fbGlzdFN0eWxlID0gV1RGTW92ZShsaXN0U3R5bGUpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNw
cAppbmRleCBkZjIwNzAyNzVkNjAyZmU3Y2JiZTllNWNmNDNhZDA4NDIzMDhhMWU3Li5mOTE2Mzlh
OGZkOGRjYWQ4ZDVjMGNjYzIyZTNmOTFlYzkyM2ZjY2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvRm9udEZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5j
cHAKQEAgLTQ1LDIzICs0NSwyMCBAQCBzdGF0aWMgYm9vbCBwb3B1bGF0ZUZvbnRGYWNlV2l0aEFy
cmF5QnVmZmVyKENTU0ZvbnRGYWNlJiBmb250RmFjZSwgUmVmPEpTQzo6QXJyYQogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotUmVmUHRyPEZvbnRGYWNlPiBGb250RmFjZTo6Y3JlYXRlKEpTQzo6RXhl
Y1N0YXRlJiBzdGF0ZSwgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGZhbWlseSwg
SlNDOjpKU1ZhbHVlIHNvdXJjZSwgY29uc3QgRGVzY3JpcHRvcnMmIGRlc2NyaXB0b3JzLCBFeGNl
cHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPFJlZjxGb250RmFjZT4+IEZvbnRGYWNlOjpjcmVh
dGUoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmlu
ZyYgZmFtaWx5LCBKU0M6OkpTVmFsdWUgc291cmNlLCBjb25zdCBEZXNjcmlwdG9ycyYgZGVzY3Jp
cHRvcnMpCiB7CiAgICAgYXV0byByZXN1bHQgPSBhZG9wdFJlZigqbmV3IEZvbnRGYWNlKGRvY3Vt
ZW50LmZvbnRTZWxlY3RvcigpKSk7CiAKICAgICBib29sIGRhdGFSZXF1aXJlc0FzeW5jaHJvbm91
c0xvYWRpbmcgPSB0cnVlOwogCi0gICAgZWMgPSAwOwotICAgIHJlc3VsdC0+c2V0RmFtaWx5KGZh
bWlseSwgZWMpOwotICAgIGlmIChlYykKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgYXV0
byBzZXRGYW1pbHlSZXN1bHQgPSByZXN1bHQtPnNldEZhbWlseShmYW1pbHkpOworICAgIGlmIChz
ZXRGYW1pbHlSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBzZXRGYW1pbHlS
ZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOwogCiAgICAgaWYgKHNvdXJjZS5pc1N0cmluZygpKSB7
CiAgICAgICAgIGF1dG8gdmFsdWUgPSBGb250RmFjZTo6cGFyc2VTdHJpbmcoc291cmNlLmdldFN0
cmluZygmc3RhdGUpLCBDU1NQcm9wZXJ0eVNyYyk7Ci0gICAgICAgIGlmICghaXM8Q1NTVmFsdWVM
aXN0Pih2YWx1ZS5nZXQoKSkpIHsKLSAgICAgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKLSAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICB9CisgICAgICAgIGlmICghaXM8Q1NTVmFs
dWVMaXN0Pih2YWx1ZS5nZXQoKSkpCisgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU1lO
VEFYX0VSUiB9OwogICAgICAgICBDU1NGb250RmFjZTo6YXBwZW5kU291cmNlcyhyZXN1bHQtPmJh
Y2tpbmcoKSwgZG93bmNhc3Q8Q1NTVmFsdWVMaXN0PigqdmFsdWUpLCAmZG9jdW1lbnQsIGZhbHNl
KTsKICAgICB9IGVsc2UgaWYgKGF1dG8gYXJyYXlCdWZmZXJWaWV3ID0gdG9BcnJheUJ1ZmZlclZp
ZXcoc291cmNlKSkKICAgICAgICAgZGF0YVJlcXVpcmVzQXN5bmNocm9ub3VzTG9hZGluZyA9IHBv
cHVsYXRlRm9udEZhY2VXaXRoQXJyYXlCdWZmZXIocmVzdWx0LT5iYWNraW5nKCksIGFycmF5QnVm
ZmVyVmlldy5yZWxlYXNlTm9uTnVsbCgpKTsKQEAgLTcxLDI0ICs2OCwyNCBAQCBSZWZQdHI8Rm9u
dEZhY2U+IEZvbnRGYWNlOjpjcmVhdGUoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBEb2N1bWVudCYg
ZG9jdW1lbnQsIGNvbgogICAgIH0KIAogICAgIC8vIFRoZXNlIHRlcm5hcmllcyBtYXRjaCB0aGUg
ZGVmYXVsdCBzdHJpbmdzIGluc2lkZSB0aGUgRm9udEZhY2VEZXNjcmlwdG9ycyBkaWN0aW9uYXJ5
IGluc2lkZSBGb250RmFjZS5pZGwuCi0gICAgcmVzdWx0LT5zZXRTdHlsZShkZXNjcmlwdG9ycy5z
dHlsZS5pc0VtcHR5KCkgPyBBU0NJSUxpdGVyYWwoIm5vcm1hbCIpIDogZGVzY3JpcHRvcnMuc3R5
bGUsIGVjKTsKLSAgICBpZiAoZWMpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJlc3Vs
dC0+c2V0V2VpZ2h0KGRlc2NyaXB0b3JzLndlaWdodC5pc0VtcHR5KCkgPyBBU0NJSUxpdGVyYWwo
Im5vcm1hbCIpIDogZGVzY3JpcHRvcnMud2VpZ2h0LCBlYyk7Ci0gICAgaWYgKGVjKQotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXN1bHQtPnNldFN0cmV0Y2goZGVzY3JpcHRvcnMuc3Ry
ZXRjaC5pc0VtcHR5KCkgPyBBU0NJSUxpdGVyYWwoIm5vcm1hbCIpIDogZGVzY3JpcHRvcnMuc3Ry
ZXRjaCwgZWMpOwotICAgIGlmIChlYykKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmVz
dWx0LT5zZXRVbmljb2RlUmFuZ2UoZGVzY3JpcHRvcnMudW5pY29kZVJhbmdlLmlzRW1wdHkoKSA/
IEFTQ0lJTGl0ZXJhbCgiVSswLTEwRkZGRiIpIDogZGVzY3JpcHRvcnMudW5pY29kZVJhbmdlLCBl
Yyk7Ci0gICAgaWYgKGVjKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXN1bHQtPnNl
dFZhcmlhbnQoZGVzY3JpcHRvcnMudmFyaWFudC5pc0VtcHR5KCkgPyBBU0NJSUxpdGVyYWwoIm5v
cm1hbCIpIDogZGVzY3JpcHRvcnMudmFyaWFudCwgZWMpOwotICAgIGlmIChlYykKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgcmVzdWx0LT5zZXRGZWF0dXJlU2V0dGluZ3MoZGVzY3JpcHRv
cnMuZmVhdHVyZVNldHRpbmdzLmlzRW1wdHkoKSA/IEFTQ0lJTGl0ZXJhbCgibm9ybWFsIikgOiBk
ZXNjcmlwdG9ycy5mZWF0dXJlU2V0dGluZ3MsIGVjKTsKLSAgICBpZiAoZWMpCi0gICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIGF1dG8gc2V0U3R5bGVSZXN1bHQgPSByZXN1bHQtPnNldFN0eWxl
KGRlc2NyaXB0b3JzLnN0eWxlLmlzRW1wdHkoKSA/IEFTQ0lJTGl0ZXJhbCgibm9ybWFsIikgOiBk
ZXNjcmlwdG9ycy5zdHlsZSk7CisgICAgaWYgKHNldFN0eWxlUmVzdWx0Lmhhc0V4Y2VwdGlvbigp
KQorICAgICAgICByZXR1cm4gc2V0U3R5bGVSZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOworICAg
IGF1dG8gc2V0V2VpZ2h0UmVzdWx0ID0gcmVzdWx0LT5zZXRXZWlnaHQoZGVzY3JpcHRvcnMud2Vp
Z2h0LmlzRW1wdHkoKSA/IEFTQ0lJTGl0ZXJhbCgibm9ybWFsIikgOiBkZXNjcmlwdG9ycy53ZWln
aHQpOworICAgIGlmIChzZXRXZWlnaHRSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJl
dHVybiBzZXRXZWlnaHRSZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOworICAgIGF1dG8gc2V0U3Ry
ZXRjaFJlc3VsdCA9IHJlc3VsdC0+c2V0U3RyZXRjaChkZXNjcmlwdG9ycy5zdHJldGNoLmlzRW1w
dHkoKSA/IEFTQ0lJTGl0ZXJhbCgibm9ybWFsIikgOiBkZXNjcmlwdG9ycy5zdHJldGNoKTsKKyAg
ICBpZiAoc2V0U3RyZXRjaFJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIHNl
dFN0cmV0Y2hSZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOworICAgIGF1dG8gc2V0VW5pY29kZVJh
bmdlUmVzdWx0ID0gcmVzdWx0LT5zZXRVbmljb2RlUmFuZ2UoZGVzY3JpcHRvcnMudW5pY29kZVJh
bmdlLmlzRW1wdHkoKSA/IEFTQ0lJTGl0ZXJhbCgiVSswLTEwRkZGRiIpIDogZGVzY3JpcHRvcnMu
dW5pY29kZVJhbmdlKTsKKyAgICBpZiAoc2V0VW5pY29kZVJhbmdlUmVzdWx0Lmhhc0V4Y2VwdGlv
bigpKQorICAgICAgICByZXR1cm4gc2V0VW5pY29kZVJhbmdlUmVzdWx0LnJlbGVhc2VFeGNlcHRp
b24oKTsKKyAgICBhdXRvIHNldFZhcmlhbnRSZXN1bHQgPSByZXN1bHQtPnNldFZhcmlhbnQoZGVz
Y3JpcHRvcnMudmFyaWFudC5pc0VtcHR5KCkgPyBBU0NJSUxpdGVyYWwoIm5vcm1hbCIpIDogZGVz
Y3JpcHRvcnMudmFyaWFudCk7CisgICAgaWYgKHNldFZhcmlhbnRSZXN1bHQuaGFzRXhjZXB0aW9u
KCkpCisgICAgICAgIHJldHVybiBzZXRWYXJpYW50UmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsK
KyAgICBhdXRvIHNldEZlYXR1cmVTZXR0aW5nc1Jlc3VsdCA9IHJlc3VsdC0+c2V0RmVhdHVyZVNl
dHRpbmdzKGRlc2NyaXB0b3JzLmZlYXR1cmVTZXR0aW5ncy5pc0VtcHR5KCkgPyBBU0NJSUxpdGVy
YWwoIm5vcm1hbCIpIDogZGVzY3JpcHRvcnMuZmVhdHVyZVNldHRpbmdzKTsKKyAgICBpZiAoc2V0
RmVhdHVyZVNldHRpbmdzUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gc2V0
RmVhdHVyZVNldHRpbmdzUmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKIAogICAgIGlmICghZGF0
YVJlcXVpcmVzQXN5bmNocm9ub3VzTG9hZGluZykgewogICAgICAgICByZXN1bHQtPmJhY2tpbmco
KS5sb2FkKCk7CkBAIC0xMzUsODAgKzEzMiw3MyBAQCBSZWZQdHI8Q1NTVmFsdWU+IEZvbnRGYWNl
OjpwYXJzZVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZywgQ1NTUHJvcGVydHlJRCBwcm9wZQog
ICAgIHJldHVybiBzdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShwcm9wZXJ0eUlEKTsKIH0KIAot
dm9pZCBGb250RmFjZTo6c2V0RmFtaWx5KGNvbnN0IFN0cmluZyYgZmFtaWx5LCBFeGNlcHRpb25D
b2RlJiBlYykKK0V4Y2VwdGlvbk9yPHZvaWQ+IEZvbnRGYWNlOjpzZXRGYW1pbHkoY29uc3QgU3Ry
aW5nJiBmYW1pbHkpCiB7Ci0gICAgaWYgKGZhbWlseS5pc0VtcHR5KCkpIHsKLSAgICAgICAgZWMg
PSBTWU5UQVhfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmIChmYW1pbHkuaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU1lOVEFYX0VSUiB9OwogCiAgICAg
Ym9vbCBzdWNjZXNzID0gZmFsc2U7CiAgICAgaWYgKGF1dG8gdmFsdWUgPSBwYXJzZVN0cmluZyhm
YW1pbHksIENTU1Byb3BlcnR5Rm9udEZhbWlseSkpCiAgICAgICAgIHN1Y2Nlc3MgPSBtX2JhY2tp
bmctPnNldEZhbWlsaWVzKCp2YWx1ZSk7CiAgICAgaWYgKCFzdWNjZXNzKQotICAgICAgICBlYyA9
IFNZTlRBWF9FUlI7CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTWU5UQVhfRVJSIH07Cisg
ICAgcmV0dXJuIHsgfTsKIH0KIAotdm9pZCBGb250RmFjZTo6c2V0U3R5bGUoY29uc3QgU3RyaW5n
JiBzdHlsZSwgRXhjZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRpb25Pcjx2b2lkPiBGb250RmFjZTo6
c2V0U3R5bGUoY29uc3QgU3RyaW5nJiBzdHlsZSkKIHsKLSAgICBpZiAoc3R5bGUuaXNFbXB0eSgp
KSB7Ci0gICAgICAgIGVjID0gU1lOVEFYX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAg
ICBpZiAoc3R5bGUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU1lOVEFY
X0VSUiB9OwogCiAgICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7CiAgICAgaWYgKGF1dG8gdmFsdWUg
PSBwYXJzZVN0cmluZyhzdHlsZSwgQ1NTUHJvcGVydHlGb250U3R5bGUpKQogICAgICAgICBzdWNj
ZXNzID0gbV9iYWNraW5nLT5zZXRTdHlsZSgqdmFsdWUpOwogICAgIGlmICghc3VjY2VzcykKLSAg
ICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU1lOVEFY
X0VSUiB9OworICAgIHJldHVybiB7IH07CiB9CiAKLXZvaWQgRm9udEZhY2U6OnNldFdlaWdodChj
b25zdCBTdHJpbmcmIHdlaWdodCwgRXhjZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRpb25Pcjx2b2lk
PiBGb250RmFjZTo6c2V0V2VpZ2h0KGNvbnN0IFN0cmluZyYgd2VpZ2h0KQogewotICAgIGlmICh3
ZWlnaHQuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGVjID0gU1lOVEFYX0VSUjsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KKyAgICBpZiAod2VpZ2h0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IFNZTlRBWF9FUlIgfTsKIAogICAgIGJvb2wgc3VjY2VzcyA9IGZhbHNlOwogICAg
IGlmIChhdXRvIHZhbHVlID0gcGFyc2VTdHJpbmcod2VpZ2h0LCBDU1NQcm9wZXJ0eUZvbnRXZWln
aHQpKQogICAgICAgICBzdWNjZXNzID0gbV9iYWNraW5nLT5zZXRXZWlnaHQoKnZhbHVlKTsKICAg
ICBpZiAoIXN1Y2Nlc3MpCi0gICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IFNZTlRBWF9FUlIgfTsKKyAgICByZXR1cm4geyB9OwogfQogCi12b2lkIEZv
bnRGYWNlOjpzZXRTdHJldGNoKGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKQorRXhjZXB0
aW9uT3I8dm9pZD4gRm9udEZhY2U6OnNldFN0cmV0Y2goY29uc3QgU3RyaW5nJikKIHsKICAgICAv
LyBXZSBkb24ndCBzdXBwb3J0IGZvbnQtc3RyZXRjaC4gU3dhbGxvdyB0aGUgY2FsbC4KKyAgICBy
ZXR1cm4geyB9OwogfQogCi12b2lkIEZvbnRGYWNlOjpzZXRVbmljb2RlUmFuZ2UoY29uc3QgU3Ry
aW5nJiB1bmljb2RlUmFuZ2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8dm9pZD4g
Rm9udEZhY2U6OnNldFVuaWNvZGVSYW5nZShjb25zdCBTdHJpbmcmIHVuaWNvZGVSYW5nZSkKIHsK
LSAgICBpZiAodW5pY29kZVJhbmdlLmlzRW1wdHkoKSkgewotICAgICAgICBlYyA9IFNZTlRBWF9F
UlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKHVuaWNvZGVSYW5nZS5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTWU5UQVhfRVJSIH07CiAKICAgICBib29s
IHN1Y2Nlc3MgPSBmYWxzZTsKICAgICBpZiAoYXV0byB2YWx1ZSA9IHBhcnNlU3RyaW5nKHVuaWNv
ZGVSYW5nZSwgQ1NTUHJvcGVydHlVbmljb2RlUmFuZ2UpKQogICAgICAgICBzdWNjZXNzID0gbV9i
YWNraW5nLT5zZXRVbmljb2RlUmFuZ2UoKnZhbHVlKTsKICAgICBpZiAoIXN1Y2Nlc3MpCi0gICAg
ICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNZTlRBWF9F
UlIgfTsKKyAgICByZXR1cm4geyB9OwogfQogCi12b2lkIEZvbnRGYWNlOjpzZXRWYXJpYW50KGNv
bnN0IFN0cmluZyYgdmFyaWFudCwgRXhjZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRpb25Pcjx2b2lk
PiBGb250RmFjZTo6c2V0VmFyaWFudChjb25zdCBTdHJpbmcmIHZhcmlhbnQpCiB7Ci0gICAgaWYg
KHZhcmlhbnQuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGVjID0gU1lOVEFYX0VSUjsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KKyAgICBpZiAodmFyaWFudC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBTWU5UQVhfRVJSIH07CiAKICAgICBhdXRvIHN0eWxlID0gTXV0YWJsZVN0
eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CiAgICAgYXV0byByZXN1bHQgPSBDU1NQYXJzZXI6OnBh
cnNlVmFsdWUoc3R5bGUsIENTU1Byb3BlcnR5Rm9udFZhcmlhbnQsIHZhcmlhbnQsIHRydWUsIEhU
TUxTdGFuZGFyZE1vZGUsIG51bGxwdHIpOwotICAgIGlmIChyZXN1bHQgPT0gQ1NTUGFyc2VyOjpQ
YXJzZVJlc3VsdDo6RXJyb3IpIHsKLSAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQorICAgIGlmIChyZXN1bHQgPT0gQ1NTUGFyc2VyOjpQYXJzZVJlc3VsdDo6
RXJyb3IpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTWU5UQVhfRVJSIH07CiAKICAgICAv
LyBGSVhNRTogV291bGQgYmUgbXVjaCBiZXR0ZXIgdG8gc3RhZ2UgdGhlIG5ldyBzZXR0aW5ncyBh
bmQgc2V0IHRoZW0gYWxsIGF0IG9uY2UKICAgICAvLyBpbnN0ZWFkIG9mIHRoaXMgZGFuY2Ugd2hl
cmUgd2UgbWFrZSBhIGJhY2t1cCBhbmQgcmV2ZXJ0IHRvIGl0IGlmIHNvbWV0aGluZyBmYWlscy4K
QEAgLTI0OSwyMyArMjM5LDIyIEBAIHZvaWQgRm9udEZhY2U6OnNldFZhcmlhbnQoY29uc3QgU3Ry
aW5nJiB2YXJpYW50LCBFeGNlcHRpb25Db2RlJiBlYykKIAogICAgIGlmICghc3VjY2Vzcykgewog
ICAgICAgICBtX2JhY2tpbmctPnNldFZhcmlhbnRTZXR0aW5ncyhiYWNrdXApOwotICAgICAgICBl
YyA9IFNZTlRBWF9FUlI7CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTWU5UQVhfRVJSIH07
CiAgICAgfQorCisgICAgcmV0dXJuIHsgfTsKIH0KIAotdm9pZCBGb250RmFjZTo6c2V0RmVhdHVy
ZVNldHRpbmdzKGNvbnN0IFN0cmluZyYgZmVhdHVyZVNldHRpbmdzLCBFeGNlcHRpb25Db2RlJiBl
YykKK0V4Y2VwdGlvbk9yPHZvaWQ+IEZvbnRGYWNlOjpzZXRGZWF0dXJlU2V0dGluZ3MoY29uc3Qg
U3RyaW5nJiBmZWF0dXJlU2V0dGluZ3MpCiB7Ci0gICAgaWYgKGZlYXR1cmVTZXR0aW5ncy5pc0Vt
cHR5KCkpIHsKLSAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAg
fQorICAgIGlmIChmZWF0dXJlU2V0dGluZ3MuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgU1lOVEFYX0VSUiB9OwogCiAgICAgYXV0byB2YWx1ZSA9IHBhcnNlU3RyaW5nKGZl
YXR1cmVTZXR0aW5ncywgQ1NTUHJvcGVydHlGb250RmVhdHVyZVNldHRpbmdzKTsKLSAgICBpZiAo
IXZhbHVlKSB7Ci0gICAgICAgIGVjID0gU1lOVEFYX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KKyAgICBpZiAoIXZhbHVlKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU1lOVEFYX0VS
UiB9OwogICAgIG1fYmFja2luZy0+c2V0RmVhdHVyZVNldHRpbmdzKCp2YWx1ZSk7CisgICAgcmV0
dXJuIHsgfTsKIH0KIAogU3RyaW5nIEZvbnRGYWNlOjpmYW1pbHkoKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9u
dEZhY2UuaAppbmRleCBlZDMwZGRiZjU1OTEwNDgzMGJlMGE2NWJkYThmYTM2MjFlOGQ0NmFhLi5m
YThmMzEzZGNlZDhmYjVkZDI4ZTJjMjk0ODUxNWU0NmQ3ZWFjZTA2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZh
Y2UuaApAQCAtNDIsMTcgKzQyLDE3IEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5nIHZhcmlhbnQ7
CiAgICAgICAgIFN0cmluZyBmZWF0dXJlU2V0dGluZ3M7CiAgICAgfTsKLSAgICBzdGF0aWMgUmVm
UHRyPEZvbnRGYWNlPiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUmLCBEb2N1bWVudCYsIGNvbnN0IFN0
cmluZyYgZmFtaWx5LCBKU0M6OkpTVmFsdWUgc291cmNlLCBjb25zdCBEZXNjcmlwdG9ycyYsIEV4
Y2VwdGlvbkNvZGUmKTsKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPEZvbnRGYWNlPj4gY3Jl
YXRlKEpTQzo6RXhlY1N0YXRlJiwgRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmIGZhbWlseSwgSlND
OjpKU1ZhbHVlIHNvdXJjZSwgY29uc3QgRGVzY3JpcHRvcnMmKTsKICAgICBzdGF0aWMgUmVmPEZv
bnRGYWNlPiBjcmVhdGUoQ1NTRm9udEZhY2UmKTsKICAgICB2aXJ0dWFsIH5Gb250RmFjZSgpOwog
Ci0gICAgdm9pZCBzZXRGYW1pbHkoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwotICAg
IHZvaWQgc2V0U3R5bGUoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQg
c2V0V2VpZ2h0KGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHNldFN0
cmV0Y2goY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgc2V0VW5pY29k
ZVJhbmdlKGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHNldFZhcmlh
bnQoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgc2V0RmVhdHVyZVNl
dHRpbmdzKGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBFeGNlcHRpb25Pcjx2
b2lkPiBzZXRGYW1pbHkoY29uc3QgU3RyaW5nJik7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0
U3R5bGUoY29uc3QgU3RyaW5nJik7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0V2VpZ2h0KGNv
bnN0IFN0cmluZyYpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFN0cmV0Y2goY29uc3QgU3Ry
aW5nJik7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0VW5pY29kZVJhbmdlKGNvbnN0IFN0cmlu
ZyYpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFZhcmlhbnQoY29uc3QgU3RyaW5nJik7Cisg
ICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0RmVhdHVyZVNldHRpbmdzKGNvbnN0IFN0cmluZyYpOwog
CiAgICAgU3RyaW5nIGZhbWlseSgpIGNvbnN0OwogICAgIFN0cmluZyBzdHlsZSgpIGNvbnN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmlkbCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9Gb250RmFjZS5pZGwKaW5kZXggNzdmYTE0NzJkZDQyNzBlYWMzMWY2ODA2YjY2M2M3
OGE3NWY3NGUxZi4uNTY5NWI1ZDE2NzgyNmZjYmIzZTM0MzEzMDAwMDcwM2Q2MDBiNTNiNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmlkbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvRm9udEZhY2UuaWRsCkBAIC00MSwxNiArNDEsMTYgQEAgZGljdGlvbmFyeSBGb250
RmFjZURlc2NyaXB0b3JzIHsKIAogWwogICAgIENvbnN0cnVjdG9yQ2FsbFdpdGg9RG9jdW1lbnQm
U2NyaXB0U3RhdGUsCi0gICAgQ29uc3RydWN0b3JNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbiwKKyAg
ICBDb25zdHJ1Y3Rvck1heVRocm93RXhjZXB0aW9uLAogICAgIENvbnN0cnVjdG9yKERPTVN0cmlu
ZyBmYW1pbHksIGFueSBzb3VyY2UsIG9wdGlvbmFsIEZvbnRGYWNlRGVzY3JpcHRvcnMgZGVzY3Jp
cHRvcnMpCiBdIGludGVyZmFjZSBGb250RmFjZSB7Ci0gICAgW1NldHRlck1heVRocm93TGVnYWN5
RXhjZXB0aW9uXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGZhbWlseTsKLSAgICBbU2V0dGVyTWF5VGhy
b3dMZWdhY3lFeGNlcHRpb25dIGF0dHJpYnV0ZSBET01TdHJpbmcgc3R5bGU7Ci0gICAgW1NldHRl
ck1heVRocm93TGVnYWN5RXhjZXB0aW9uXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHdlaWdodDsKLSAg
ICBbU2V0dGVyTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIGF0dHJpYnV0ZSBET01TdHJpbmcgc3Ry
ZXRjaDsKLSAgICBbU2V0dGVyTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIGF0dHJpYnV0ZSBET01T
dHJpbmcgdW5pY29kZVJhbmdlOwotICAgIFtTZXR0ZXJNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0g
YXR0cmlidXRlIERPTVN0cmluZyB2YXJpYW50OwotICAgIFtTZXR0ZXJNYXlUaHJvd0xlZ2FjeUV4
Y2VwdGlvbl0gYXR0cmlidXRlIERPTVN0cmluZyBmZWF0dXJlU2V0dGluZ3M7CisgICAgW1NldHRl
ck1heVRocm93RXhjZXB0aW9uXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGZhbWlseTsKKyAgICBbU2V0
dGVyTWF5VGhyb3dFeGNlcHRpb25dIGF0dHJpYnV0ZSBET01TdHJpbmcgc3R5bGU7CisgICAgW1Nl
dHRlck1heVRocm93RXhjZXB0aW9uXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHdlaWdodDsKKyAgICBb
U2V0dGVyTWF5VGhyb3dFeGNlcHRpb25dIGF0dHJpYnV0ZSBET01TdHJpbmcgc3RyZXRjaDsKKyAg
ICBbU2V0dGVyTWF5VGhyb3dFeGNlcHRpb25dIGF0dHJpYnV0ZSBET01TdHJpbmcgdW5pY29kZVJh
bmdlOworICAgIFtTZXR0ZXJNYXlUaHJvd0V4Y2VwdGlvbl0gYXR0cmlidXRlIERPTVN0cmluZyB2
YXJpYW50OworICAgIFtTZXR0ZXJNYXlUaHJvd0V4Y2VwdGlvbl0gYXR0cmlidXRlIERPTVN0cmlu
ZyBmZWF0dXJlU2V0dGluZ3M7CiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRm9udEZhY2VMb2Fk
U3RhdHVzIHN0YXR1czsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNl
U2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5jcHAKaW5kZXggMGQ1NWRk
N2JkZDJjNTIzNDkwOGE3ZDdjMTZmYWIwMTBmODliZjQxZi4uMTM5YzQ1NWMyYmUzNmEzZTkxZjg4
YzgxZWNkMjZjMjhiMmZjNGJmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRG
YWNlU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuY3BwCkBAIC0x
MjUsMTIgKzEyNSwxMiBAQCB2b2lkIEZvbnRGYWNlU2V0OjpjbGVhcigpCiAKIHZvaWQgRm9udEZh
Y2VTZXQ6OmxvYWQoY29uc3QgU3RyaW5nJiBmb250LCBjb25zdCBTdHJpbmcmIHRleHQsIExvYWRQ
cm9taXNlJiYgcHJvbWlzZSkKIHsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBhdXRv
IG1hdGNoaW5nRmFjZXMgPSBtX2JhY2tpbmctPm1hdGNoaW5nRmFjZXMoZm9udCwgdGV4dCwgZWMp
OwotICAgIGlmIChlYykgewotICAgICAgICBwcm9taXNlLnJlamVjdChlYyk7CisgICAgYXV0byBt
YXRjaGluZ0ZhY2VzUmVzdWx0ID0gbV9iYWNraW5nLT5tYXRjaGluZ0ZhY2VzKGZvbnQsIHRleHQp
OworICAgIGlmIChtYXRjaGluZ0ZhY2VzUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAg
IHByb21pc2UucmVqZWN0KG1hdGNoaW5nRmFjZXNSZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBhdXRvIG1hdGNoaW5nRmFjZXMgPSBtYXRjaGlu
Z0ZhY2VzUmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwogCiAgICAgaWYgKG1hdGNoaW5nRmFj
ZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgIHByb21pc2UucmVzb2x2ZShWZWN0b3I8UmVmUHRyPEZv
bnRGYWNlPj4oKSk7CkBAIC0xNjIsOSArMTYyLDkgQEAgdm9pZCBGb250RmFjZVNldDo6bG9hZChj
b25zdCBTdHJpbmcmIGZvbnQsIGNvbnN0IFN0cmluZyYgdGV4dCwgTG9hZFByb21pc2UmJiBwcm8K
ICAgICAgICAgcGVuZGluZ1Byb21pc2UtPnByb21pc2UucmVzb2x2ZShwZW5kaW5nUHJvbWlzZS0+
ZmFjZXMpOwogfQogCi1ib29sIEZvbnRGYWNlU2V0OjpjaGVjayhjb25zdCBTdHJpbmcmIGZhbWls
eSwgY29uc3QgU3RyaW5nJiB0ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPGJv
b2w+IEZvbnRGYWNlU2V0OjpjaGVjayhjb25zdCBTdHJpbmcmIGZhbWlseSwgY29uc3QgU3RyaW5n
JiB0ZXh0KQogewotICAgIHJldHVybiBtX2JhY2tpbmctPmNoZWNrKGZhbWlseSwgdGV4dCwgZWMp
OworICAgIHJldHVybiBtX2JhY2tpbmctPmNoZWNrKGZhbWlseSwgdGV4dCk7CiB9CiAKIHZvaWQg
Rm9udEZhY2VTZXQ6OnJlZ2lzdGVyUmVhZHkoUmVhZHlQcm9taXNlJiYgcHJvbWlzZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0ZvbnRGYWNlU2V0LmgKaW5kZXggYWMyNzQ4MDRlZDk4YmNkMmEzZDRiMThmYjUwNDhjNTc3
NTU0NTYwYS4uZTFhNzI3NDRkY2VkYWQwNWU0ZjFhYzg2MGVmMWVmODEyMjA5MGE5OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0ZvbnRGYWNlU2V0LmgKQEAgLTIzLDggKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KIAotI2lmbmRlZiBGb250RmFjZVNldF9oCi0jZGVmaW5lIEZvbnRGYWNlU2V0X2gKKyNwcmFn
bWEgb25jZQogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiQ1NTRm9u
dEZhY2VTZXQuaCIKQEAgLTQ5LDcgKzQ4LDcgQEAgcHVibGljOgogCiAgICAgdHlwZWRlZiBET01Q
cm9taXNlPFZlY3RvcjxSZWZQdHI8Rm9udEZhY2U+Pj4gTG9hZFByb21pc2U7CiAgICAgdm9pZCBs
b2FkKGNvbnN0IFN0cmluZyYgZm9udCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBMb2FkUHJvbWlzZSYm
KTsKLSAgICBib29sIGNoZWNrKGNvbnN0IFN0cmluZyYgZm9udCwgY29uc3QgU3RyaW5nJiB0ZXh0
LCBFeGNlcHRpb25Db2RlJik7CisgICAgRXhjZXB0aW9uT3I8Ym9vbD4gY2hlY2soY29uc3QgU3Ry
aW5nJiBmb250LCBjb25zdCBTdHJpbmcmIHRleHQpOwogCiAgICAgZW51bSBjbGFzcyBMb2FkU3Rh
dHVzIHsgTG9hZGluZywgTG9hZGVkIH07CiAgICAgTG9hZFN0YXR1cyBzdGF0dXMoKSBjb25zdDsK
QEAgLTExNSw1ICsxMTQsMyBAQCBwcml2YXRlOgogfTsKIAogfQotCi0jZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvRm9udEZhY2VTZXQuaWRsCmluZGV4IGI3NmExYTE5YjhiYTJjMTlhYWIxMDUxMGJlMjY4NGY1
Y2QzMjgwZWQuLjdhYjFlM2NlNTI3M2Q1N2YwYWUyYzRkMTI1MTA0ZWQ5NjA3NGZhMzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5pZGwKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0ZvbnRGYWNlU2V0LmlkbApAQCAtNDgsNyArNDgsNyBAQCBlbnVtIEZvbnRGYWNl
U2V0TG9hZFN0YXR1cyB7CiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbmxvYWRpbmdlcnJv
cjsKIAogICAgIFByb21pc2UgbG9hZChET01TdHJpbmcgZm9udCwgb3B0aW9uYWwgRE9NU3RyaW5n
IHRleHQgPSAiICIpOwotICAgIFtNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gYm9vbGVhbiBjaGVj
ayhET01TdHJpbmcgZm9udCwgb3B0aW9uYWwgRE9NU3RyaW5nIHRleHQgPSAiICIpOworICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gYm9vbGVhbiBjaGVjayhET01TdHJpbmcgZm9udCwgb3B0aW9uYWwg
RE9NU3RyaW5nIHRleHQgPSAiICIpOwogCiAgICAgW0N1c3RvbUdldHRlciwgQ2FjaGVkQXR0cmli
dXRlXSByZWFkb25seSBhdHRyaWJ1dGUgUHJvbWlzZSByZWFkeTsKICAgICByZWFkb25seSBhdHRy
aWJ1dGUgRm9udEZhY2VTZXRMb2FkU3RhdHVzIHN0YXR1czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9Gb250VmFyaWFudEJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0Zv
bnRWYXJpYW50QnVpbGRlci5jcHAKaW5kZXggOTJmYjY2ZjQ0NGFjNTc5OWZhNjQ2YmM3OTQ0YWQz
NzkwYTRjM2UyNS4uNTQ2NDhhZTExMzg2NDA3OWNiMTYzNzc1ZTJhNGM5ODM0YjQ1NDM3NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRWYXJpYW50QnVpbGRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0ZvbnRWYXJpYW50QnVpbGRlci5jcHAKQEAgLTQyLDcgKzQyLDcg
QEAgRm9udFZhcmlhbnRMaWdhdHVyZXNWYWx1ZXMgZXh0cmFjdEZvbnRWYXJpYW50TGlnYXR1cmVz
KGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIAogICAgIGlmIChpczxDU1NWYWx1ZUxpc3Q+KHZhbHVl
KSkgewogICAgICAgICBmb3IgKGF1dG8mIGl0ZW0gOiBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KHZh
bHVlKSkgewotICAgICAgICAgICAgc3dpdGNoIChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4o
aXRlbS5nZXQoKSkuZ2V0VmFsdWVJRCgpKSB7CisgICAgICAgICAgICBzd2l0Y2ggKGRvd25jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlPihpdGVtLmdldCgpKS52YWx1ZUlEKCkpIHsKICAgICAgICAgICAg
IGNhc2UgQ1NTVmFsdWVOb0NvbW1vbkxpZ2F0dXJlczoKICAgICAgICAgICAgICAgICBjb21tb24g
PSBGb250VmFyaWFudExpZ2F0dXJlczo6Tm87CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC03
Myw3ICs3Myw3IEBAIEZvbnRWYXJpYW50TGlnYXR1cmVzVmFsdWVzIGV4dHJhY3RGb250VmFyaWFu
dExpZ2F0dXJlcyhjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICB9IGVsc2UgaWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpIHsKLSAgICAg
ICAgc3dpdGNoIChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLmdldFZhbHVlSUQo
KSkgeworICAgICAgICBzd2l0Y2ggKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSku
dmFsdWVJRCgpKSB7CiAgICAgICAgIGNhc2UgQ1NTVmFsdWVOb3JtYWw6CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBDU1NWYWx1ZU5vbmU6CkBAIC0xMDEsNyArMTAxLDcgQEAgRm9u
dFZhcmlhbnROdW1lcmljVmFsdWVzIGV4dHJhY3RGb250VmFyaWFudE51bWVyaWMoY29uc3QgQ1NT
VmFsdWUmIHZhbHVlKQogCiAgICAgaWYgKGlzPENTU1ZhbHVlTGlzdD4odmFsdWUpKSB7CiAgICAg
ICAgIGZvciAoYXV0byYgaXRlbSA6IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4odmFsdWUpKSB7Ci0g
ICAgICAgICAgICBzd2l0Y2ggKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihpdGVtLmdldCgp
KS5nZXRWYWx1ZUlEKCkpIHsKKyAgICAgICAgICAgIHN3aXRjaCAoZG93bmNhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWU+KGl0ZW0uZ2V0KCkpLnZhbHVlSUQoKSkgewogICAgICAgICAgICAgY2FzZSBDU1NW
YWx1ZUxpbmluZ051bXM6CiAgICAgICAgICAgICAgICAgZmlndXJlID0gRm9udFZhcmlhbnROdW1l
cmljRmlndXJlOjpMaW5pbmdOdW1iZXJzOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTMy
LDcgKzEzMiw3IEBAIEZvbnRWYXJpYW50TnVtZXJpY1ZhbHVlcyBleHRyYWN0Rm9udFZhcmlhbnRO
dW1lcmljKGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKICAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgIH0gZWxzZSBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSkKLSAgICAgICAgQVNT
RVJUKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkuZ2V0VmFsdWVJRCgpID09IENT
U1ZhbHVlTm9ybWFsKTsKKyAgICAgICAgQVNTRVJUKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
Pih2YWx1ZSkudmFsdWVJRCgpID09IENTU1ZhbHVlTm9ybWFsKTsKIAogICAgIHJldHVybiBGb250
VmFyaWFudE51bWVyaWNWYWx1ZXMoZmlndXJlLCBzcGFjaW5nLCBmcmFjdGlvbiwgb3JkaW5hbCwg
c2xhc2hlZFplcm8pOwogfQpAQCAtMTQ1LDcgKzE0NSw3IEBAIEZvbnRWYXJpYW50RWFzdEFzaWFu
VmFsdWVzIGV4dHJhY3RGb250VmFyaWFudEVhc3RBc2lhbihjb25zdCBDU1NWYWx1ZSYgdmFsdWUp
CiAKICAgICBpZiAoaXM8Q1NTVmFsdWVMaXN0Pih2YWx1ZSkpIHsKICAgICAgICAgZm9yIChhdXRv
JiBpdGVtIDogZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pih2YWx1ZSkpIHsKLSAgICAgICAgICAgIHN3
aXRjaCAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGl0ZW0uZ2V0KCkpLmdldFZhbHVlSUQo
KSkgeworICAgICAgICAgICAgc3dpdGNoIChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oaXRl
bS5nZXQoKSkudmFsdWVJRCgpKSB7CiAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlSmlzNzg6CiAg
ICAgICAgICAgICAgICAgdmFyaWFudCA9IEZvbnRWYXJpYW50RWFzdEFzaWFuVmFyaWFudDo6Smlz
Nzg7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xNzksNyArMTc5LDcgQEAgRm9udFZhcmlh
bnRFYXN0QXNpYW5WYWx1ZXMgZXh0cmFjdEZvbnRWYXJpYW50RWFzdEFzaWFuKGNvbnN0IENTU1Zh
bHVlJiB2YWx1ZSkKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoaXM8
Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSkKLSAgICAgICAgQVNTRVJUKGRvd25jYXN0PENTU1By
aW1pdGl2ZVZhbHVlPih2YWx1ZSkuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlTm9ybWFsKTsKKyAg
ICAgICAgQVNTRVJUKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkudmFsdWVJRCgp
ID09IENTU1ZhbHVlTm9ybWFsKTsKIAogICAgIHJldHVybiBGb250VmFyaWFudEVhc3RBc2lhblZh
bHVlcyh2YXJpYW50LCB3aWR0aCwgcnVieSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvTWVkaWFMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3QuY3BwCmlu
ZGV4IDI5ZDgyNjkxZTIzYzFhMWNmMDU3OGU2NmJlYzgzYzE4OTEzM2IxNWQuLmU4NTM4ODcxMGZm
NDVhZjIzNTgzOGNlZDFhYTY5NzRiMzY5ZDRhYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9NZWRpYUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3QuY3Bw
CkBAIC0yMjIsMTUgKzIyMiwxNCBAQCBNZWRpYUxpc3Q6On5NZWRpYUxpc3QoKQogewogfQogCi12
b2lkIE1lZGlhTGlzdDo6c2V0TWVkaWFUZXh0KGNvbnN0IFN0cmluZyYgdmFsdWUsIEV4Y2VwdGlv
bkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8dm9pZD4gTWVkaWFMaXN0OjpzZXRNZWRpYVRleHQoY29u
c3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBDU1NTdHlsZVNoZWV0OjpSdWxlTXV0YXRpb25TY29w
ZSBtdXRhdGlvblNjb3BlKG1fcGFyZW50UnVsZSk7Ci0gICAgaWYgKCFtX21lZGlhUXVlcmllcy0+
cGFyc2UodmFsdWUpKSB7Ci0gICAgICAgIGVjID0gU1lOVEFYX0VSUjsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KKyAgICBpZiAoIW1fbWVkaWFRdWVyaWVzLT5wYXJzZSh2YWx1ZSkpCisgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBTWU5UQVhfRVJSIH07CiAgICAgaWYgKG1fcGFyZW50U3R5bGVT
aGVldCkKICAgICAgICAgbV9wYXJlbnRTdHlsZVNoZWV0LT5kaWRNdXRhdGUoKTsKKyAgICByZXR1
cm4geyB9OwogfQogCiBTdHJpbmcgTWVkaWFMaXN0OjppdGVtKHVuc2lnbmVkIGluZGV4KSBjb25z
dApAQCAtMjQxLDMxICsyNDAsMzAgQEAgU3RyaW5nIE1lZGlhTGlzdDo6aXRlbSh1bnNpZ25lZCBp
bmRleCkgY29uc3QKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLXZvaWQgTWVkaWFMaXN0Ojpk
ZWxldGVNZWRpdW0oY29uc3QgU3RyaW5nJiBtZWRpdW0sIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhj
ZXB0aW9uT3I8dm9pZD4gTWVkaWFMaXN0OjpkZWxldGVNZWRpdW0oY29uc3QgU3RyaW5nJiBtZWRp
dW0pCiB7CiAgICAgQ1NTU3R5bGVTaGVldDo6UnVsZU11dGF0aW9uU2NvcGUgbXV0YXRpb25TY29w
ZShtX3BhcmVudFJ1bGUpOwogCiAgICAgYm9vbCBzdWNjZXNzID0gbV9tZWRpYVF1ZXJpZXMtPnJl
bW92ZShtZWRpdW0pOwotICAgIGlmICghc3VjY2VzcykgewotICAgICAgICBlYyA9IE5PVF9GT1VO
RF9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKCFzdWNjZXNzKQorICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgTk9UX0ZPVU5EX0VSUiB9OwogICAgIGlmIChtX3BhcmVudFN0
eWxlU2hlZXQpCiAgICAgICAgIG1fcGFyZW50U3R5bGVTaGVldC0+ZGlkTXV0YXRlKCk7CisgICAg
cmV0dXJuIHsgfTsKIH0KIAotdm9pZCBNZWRpYUxpc3Q6OmFwcGVuZE1lZGl1bShjb25zdCBTdHJp
bmcmIG1lZGl1bSwgRXhjZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRpb25Pcjx2b2lkPiBNZWRpYUxp
c3Q6OmFwcGVuZE1lZGl1bShjb25zdCBTdHJpbmcmIG1lZGl1bSkKIHsKICAgICBDU1NTdHlsZVNo
ZWV0OjpSdWxlTXV0YXRpb25TY29wZSBtdXRhdGlvblNjb3BlKG1fcGFyZW50UnVsZSk7CiAKICAg
ICBib29sIHN1Y2Nlc3MgPSBtX21lZGlhUXVlcmllcy0+YWRkKG1lZGl1bSk7CiAgICAgaWYgKCFz
dWNjZXNzKSB7CiAgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgdGhpcyByZWFsbHkgYmUgSU5WQUxJ
RF9DSEFSQUNURVJfRVJSPwotICAgICAgICBlYyA9IElOVkFMSURfQ0hBUkFDVEVSX0VSUjsKLSAg
ICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSU5WQUxJRF9DSEFSQUNU
RVJfRVJSIH07CiAgICAgfQogICAgIGlmIChtX3BhcmVudFN0eWxlU2hlZXQpCiAgICAgICAgIG1f
cGFyZW50U3R5bGVTaGVldC0+ZGlkTXV0YXRlKCk7CisgICAgcmV0dXJuIHsgfTsKIH0KIAogdm9p
ZCBNZWRpYUxpc3Q6OnJlYXR0YWNoKE1lZGlhUXVlcnlTZXQqIG1lZGlhUXVlcmllcykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9NZWRpYUxpc3QuaAppbmRleCBiZjA3MWZlMmY4NWVkMWJlODRjZjMyMjgxY2YzMjgxOGUxZGJi
MzExLi42NzJhYTRhOTk5YzE3MDI3YjBmZGIzNGYwM2YwYTU4ZGVjNmRiZWY4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L01lZGlhTGlzdC5oCkBAIC0yMCwxMCArMjAsMTAgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNs
dWRlICJFeGNlcHRpb25Pci5oIgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zMyw4ICszMyw2IEBAIGNsYXNz
IENTU1N0eWxlU2hlZXQ7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIE1lZGlhUXVlcnk7CiAKLXVz
aW5nIEV4Y2VwdGlvbkNvZGUgPSBpbnQ7Ci0KIGNsYXNzIE1lZGlhUXVlcnlTZXQgZmluYWwgOiBw
dWJsaWMgUmVmQ291bnRlZDxNZWRpYVF1ZXJ5U2V0PiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJl
ZjxNZWRpYVF1ZXJ5U2V0PiBjcmVhdGUoKQpAQCAtOTYsMTEgKzk0LDExIEBAIHB1YmxpYzoKIAog
ICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFRdWVyaWVzLT5xdWVy
eVZlY3RvcigpLnNpemUoKTsgfQogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBpdGVtKHVuc2ln
bmVkIGluZGV4KSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZU1lZGl1bShj
b25zdCBTdHJpbmcmIG9sZE1lZGl1bSwgRXhjZXB0aW9uQ29kZSYpOwotICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgYXBwZW5kTWVkaXVtKGNvbnN0IFN0cmluZyYgbmV3TWVkaXVtLCBFeGNlcHRpb25D
b2RlJik7CisgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8dm9pZD4gZGVsZXRlTWVkaXVt
KGNvbnN0IFN0cmluZyYgb2xkTWVkaXVtKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25P
cjx2b2lkPiBhcHBlbmRNZWRpdW0oY29uc3QgU3RyaW5nJiBuZXdNZWRpdW0pOwogCiAgICAgU3Ry
aW5nIG1lZGlhVGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFRdWVyaWVzLT5tZWRpYVRleHQo
KTsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TWVkaWFUZXh0KGNvbnN0IFN0cmluZyYs
IEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25Pcjx2b2lkPiBz
ZXRNZWRpYVRleHQoY29uc3QgU3RyaW5nJik7CiAKICAgICBDU1NSdWxlKiBwYXJlbnRSdWxlKCkg
Y29uc3QgeyByZXR1cm4gbV9wYXJlbnRSdWxlOyB9CiAgICAgQ1NTU3R5bGVTaGVldCogcGFyZW50
U3R5bGVTaGVldCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyZW50U3R5bGVTaGVldDsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvTWVkaWFMaXN0LmlkbAppbmRleCBiYWY1YzkzMzhhMWUyMDJkNGVkNjY1MjZlMmFmOTE5ODc4
NzJhMmFjLi42ZDZkM2M0MWUxZmQzMzM4NTVkMTc4YzI3NWRiODhmYWE1ZGZkOWU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFMaXN0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvTWVkaWFMaXN0LmlkbApAQCAtMjksMTEgKzI5LDExIEBACiAgICAgSW1wbGVtZW50YXRp
b25MYWNrc1ZUYWJsZSwKICAgICBKU0N1c3RvbUhlYWRlciwKIF0gaW50ZXJmYWNlIE1lZGlhTGlz
dCB7Ci0gICAgW1NldHRlck1heVRocm93TGVnYWN5RXhjZXB0aW9uLCBUcmVhdE51bGxBcz1FbXB0
eVN0cmluZ10gYXR0cmlidXRlIERPTVN0cmluZyBtZWRpYVRleHQ7CisgICAgW1NldHRlck1heVRo
cm93RXhjZXB0aW9uLCBUcmVhdE51bGxBcz1FbXB0eVN0cmluZ10gYXR0cmlidXRlIERPTVN0cmlu
ZyBtZWRpYVRleHQ7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3Ro
OwogCiAgICAgZ2V0dGVyIERPTVN0cmluZz8gaXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KTsKIAot
ICAgIFtNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gdm9pZCBkZWxldGVNZWRpdW0oRE9NU3RyaW5n
IG9sZE1lZGl1bSk7Ci0gICAgW01heVRocm93TGVnYWN5RXhjZXB0aW9uXSB2b2lkIGFwcGVuZE1l
ZGl1bShET01TdHJpbmcgbmV3TWVkaXVtKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQg
ZGVsZXRlTWVkaXVtKERPTVN0cmluZyBvbGRNZWRpdW0pOworICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gdm9pZCBhcHBlbmRNZWRpdW0oRE9NU3RyaW5nIG5ld01lZGl1bSk7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCmluZGV4IDc1YmI3NDZkY2M0YjNiZjNh
YTE4Y2RkYmM0YzkyMmY5YjUxMDAzZjguLjJjMWNkMjM4OGNhNjk0MjQxOWY1MWFmN2E4YjY4ZTA2
MmViZmI4ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXZhbHVh
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHAK
QEAgLTIwOCw3ICsyMDgsNyBAQCBzdGF0aWMgT3B0aW9uYWw8ZG91YmxlPiBkb3VibGVWYWx1ZShD
U1NWYWx1ZSogdmFsdWUpCiB7CiAgICAgaWYgKCFpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUp
IHx8ICFkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVlKS5pc051bWJlcigpKQogICAg
ICAgICByZXR1cm4gTnVsbG9wdDsKLSAgICByZXR1cm4gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWU+KCp2YWx1ZSkuZ2V0RG91YmxlVmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIp
OworICAgIHJldHVybiBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVlKS5kb3VibGVW
YWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7CiB9CiAKIHN0YXRpYyBib29sIHpl
cm9FdmFsdWF0ZShDU1NWYWx1ZSogdmFsdWUsIE1lZGlhRmVhdHVyZVByZWZpeCBvcCkKQEAgLTI0
NSw3ICsyNDUsNyBAQCBzdGF0aWMgYm9vbCBjb2xvckdhbXV0RXZhbHVhdGUoQ1NTVmFsdWUqIHZh
bHVlLCBjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJgogICAgIGlmICghdmFsdWUpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgc3dpdGNoIChkb3duY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZT4oKnZhbHVlKS5nZXRWYWx1ZUlEKCkpIHsKKyAgICBzd2l0Y2ggKGRvd25jYXN0PENTU1By
aW1pdGl2ZVZhbHVlPigqdmFsdWUpLnZhbHVlSUQoKSkgewogICAgIGNhc2UgQ1NTVmFsdWVTcmdi
OgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBjYXNlIENTU1ZhbHVlUDM6CkBAIC0yNzEsNyAr
MjcxLDcgQEAgc3RhdGljIGJvb2wgaW52ZXJ0ZWRDb2xvcnNFdmFsdWF0ZShDU1NWYWx1ZSogdmFs
dWUsIGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkQKICAgICBib29sIGlzSW52ZXJ0ZWQgPSBz
Y3JlZW5IYXNJbnZlcnRlZENvbG9ycygpOwogICAgIGlmICghdmFsdWUpCiAgICAgICAgIHJldHVy
biBpc0ludmVydGVkOwotICAgIHJldHVybiBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnZh
bHVlKS5nZXRWYWx1ZUlEKCkgPT0gKGlzSW52ZXJ0ZWQgPyBDU1NWYWx1ZUludmVydGVkIDogQ1NT
VmFsdWVOb25lKTsKKyAgICByZXR1cm4gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YWx1
ZSkudmFsdWVJRCgpID09IChpc0ludmVydGVkID8gQ1NTVmFsdWVJbnZlcnRlZCA6IENTU1ZhbHVl
Tm9uZSk7CiB9CiAKIHN0YXRpYyBib29sIG9yaWVudGF0aW9uRXZhbHVhdGUoQ1NTVmFsdWUqIHZh
bHVlLCBjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiwgRnJhbWUmIGZyYW1lLCBNZWRp
YUZlYXR1cmVQcmVmaXgpCkBAIC0yODgsNyArMjg4LDcgQEAgc3RhdGljIGJvb2wgb3JpZW50YXRp
b25FdmFsdWF0ZShDU1NWYWx1ZSogdmFsdWUsIGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRh
dGEKICAgICAgICAgcmV0dXJuIGhlaWdodCA+PSAwICYmIHdpZHRoID49IDA7CiAgICAgfQogCi0g
ICAgYXV0byBrZXl3b3JkID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YWx1ZSkuZ2V0
VmFsdWVJRCgpOworICAgIGF1dG8ga2V5d29yZCA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
PigqdmFsdWUpLnZhbHVlSUQoKTsKICAgICBpZiAod2lkdGggPiBoZWlnaHQpIC8vIFNxdWFyZSB2
aWV3cG9ydCBpcyBwb3J0cmFpdC4KICAgICAgICAgcmV0dXJuIGtleXdvcmQgPT0gQ1NTVmFsdWVM
YW5kc2NhcGU7CiAgICAgcmV0dXJuIGtleXdvcmQgPT0gQ1NTVmFsdWVQb3J0cmFpdDsKQEAgLTM0
OSw3ICszNDksNyBAQCBzdGF0aWMgYm9vbCBldmFsdWF0ZVJlc29sdXRpb24oQ1NTVmFsdWUqIHZh
bHVlLCBGcmFtZSYgZnJhbWUsIE1lZGlhRmVhdHVyZVByZWZpeAogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICBhdXRvJiByZXNvbHV0aW9uID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+
KCp2YWx1ZSk7Ci0gICAgcmV0dXJuIGNvbXBhcmVWYWx1ZShkZXZpY2VTY2FsZUZhY3RvciwgcmVz
b2x1dGlvbi5pc051bWJlcigpID8gcmVzb2x1dGlvbi5nZXRGbG9hdFZhbHVlKCkgOiByZXNvbHV0
aW9uLmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19EUFBYKSwgb3ApOworICAg
IHJldHVybiBjb21wYXJlVmFsdWUoZGV2aWNlU2NhbGVGYWN0b3IsIHJlc29sdXRpb24uaXNOdW1i
ZXIoKSA/IHJlc29sdXRpb24uZmxvYXRWYWx1ZSgpIDogcmVzb2x1dGlvbi5mbG9hdFZhbHVlKENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfRFBQWCksIG9wKTsKIH0KIAogc3RhdGljIGJvb2wgZGV2aWNl
UGl4ZWxSYXRpb0V2YWx1YXRlKENTU1ZhbHVlKiB2YWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGhDb252
ZXJzaW9uRGF0YSYsIEZyYW1lJiBmcmFtZSwgTWVkaWFGZWF0dXJlUHJlZml4IG9wKQpAQCAtMzgy
LDcgKzM4Miw3IEBAIHN0YXRpYyBib29sIGNvbXB1dGVMZW5ndGgoQ1NTVmFsdWUqIHZhbHVlLCBi
b29sIHN0cmljdCwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzCiAgICAgYXV0byYgcHJpbWl0aXZl
VmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVlKTsKIAogICAgIGlmIChw
cmltaXRpdmVWYWx1ZS5pc051bWJlcigpKSB7Ci0gICAgICAgIHJlc3VsdCA9IHByaW1pdGl2ZVZh
bHVlLmdldEludFZhbHVlKCk7CisgICAgICAgIHJlc3VsdCA9IHByaW1pdGl2ZVZhbHVlLmludFZh
bHVlKCk7CiAgICAgICAgIHJldHVybiAhc3RyaWN0IHx8ICFyZXN1bHQ7CiAgICAgfQogCkBAIC01
ODcsNyArNTg3LDcgQEAgc3RhdGljIGJvb2wgdmlld01vZGVFdmFsdWF0ZShDU1NWYWx1ZSogdmFs
dWUsIGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmLAogICAgIGlmICghdmFsdWUpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgYXV0byBrZXl3b3JkID0gZG93bmNhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWU+KCp2YWx1ZSkuZ2V0VmFsdWVJRCgpOworICAgIGF1dG8ga2V5d29yZCA9IGRv
d25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUpLnZhbHVlSUQoKTsKIAogICAgIHN3aXRj
aCAoZnJhbWUucGFnZSgpLT52aWV3TW9kZSgpKSB7CiAgICAgY2FzZSBQYWdlOjpWaWV3TW9kZVdp
bmRvd2VkOgpAQCAtNjI0LDcgKzYyNCw3IEBAIHN0YXRpYyBib29sIGhvdmVyRXZhbHVhdGUoQ1NT
VmFsdWUqIHZhbHVlLCBjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiwgRnJhCiAjZW5k
aWYKICAgICB9CiAKLSAgICBhdXRvIGtleXdvcmQgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZT4oKnZhbHVlKS5nZXRWYWx1ZUlEKCk7CisgICAgYXV0byBrZXl3b3JkID0gZG93bmNhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWU+KCp2YWx1ZSkudmFsdWVJRCgpOwogI2lmIEVOQUJMRShUT1VDSF9FVkVO
VFMpCiAgICAgcmV0dXJuIGtleXdvcmQgPT0gQ1NTVmFsdWVOb25lOwogI2Vsc2UKQEAgLTY0Miw3
ICs2NDIsNyBAQCBzdGF0aWMgYm9vbCBwb2ludGVyRXZhbHVhdGUoQ1NTVmFsdWUqIHZhbHVlLCBj
b25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiwgRgogICAgIGlmICghaXM8Q1NTUHJpbWl0
aXZlVmFsdWU+KHZhbHVlKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBhdXRvIGtleXdv
cmQgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVlKS5nZXRWYWx1ZUlEKCk7Cisg
ICAgYXV0byBrZXl3b3JkID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YWx1ZSkudmFs
dWVJRCgpOwogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgcmV0dXJuIGtleXdvcmQgPT0g
Q1NTVmFsdWVDb2Fyc2U7CiAjZWxzZQpAQCAtNjcxLDcgKzY3MSw3IEBAIHN0YXRpYyBib29sIHBy
ZWZlcnNSZWR1Y2VkTW90aW9uRXZhbHVhdGUoQ1NTVmFsdWUqIHZhbHVlLCBjb25zdCBDU1NUb0xl
bmd0aENvbnZlCiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuIHVzZXJQcmVmZXJzUmVk
dWNlZE1vdGlvbjsKIAotICAgIHJldHVybiBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnZh
bHVlKS5nZXRWYWx1ZUlEKCkgPT0gKHVzZXJQcmVmZXJzUmVkdWNlZE1vdGlvbiA/IENTU1ZhbHVl
UmVkdWNlIDogQ1NTVmFsdWVEZWZhdWx0KTsKKyAgICByZXR1cm4gZG93bmNhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWU+KCp2YWx1ZSkudmFsdWVJRCgpID09ICh1c2VyUHJlZmVyc1JlZHVjZWRNb3Rpb24g
PyBDU1NWYWx1ZVJlZHVjZSA6IENTU1ZhbHVlRGVmYXVsdCk7CiB9CiAKIC8vIFVzZSB0aGlzIGZ1
bmN0aW9uIGluc3RlYWQgb2YgY2FsbGluZyBhZGQgZGlyZWN0bHkgdG8gYXZvaWQgaW5saW5pbmcu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV4cC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV4cC5jcHAKaW5kZXggODBmMmY3N2EwMTFiNmUwNWY0
ODg4N2U5YWE2NTkwYzgwY2U1NGI4Zi4uNmJlZDk0YTdjMWE4NTk3ZTBiYTRiYzM0ZmJhZTZiYjc1
MzUzMDA3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFeHAuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXhwLmNwcApAQCAtMTI5LDcgKzEy
OSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0ZlYXR1cmVWYWxpZFdpdGhJZGVudGlmaWVyKGNv
bnN0IEF0b21pY1N0cmluZyYgbWVkaWFGZWF0dXJlCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0Zl
YXR1cmVWYWxpZFdpdGhOb25OZWdhdGl2ZUxlbmd0aE9yTnVtYmVyKGNvbnN0IEF0b21pY1N0cmlu
ZyYgbWVkaWFGZWF0dXJlLCBjb25zdCBDU1NQYXJzZXJWYWx1ZSYgdmFsdWUpCiB7Ci0gICAgaWYg
KCEoQ1NTUHJpbWl0aXZlVmFsdWU6OmlzTGVuZ3RoKHZhbHVlLnVuaXQpIHx8IHZhbHVlLnVuaXQg
PT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpIHx8IHZhbHVlLmZWYWx1ZSA8IDApCisg
ICAgaWYgKCEoQ1NTUHJpbWl0aXZlVmFsdWU6OmlzTGVuZ3RoKHN0YXRpY19jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlOjpVbml0VHlwZXM+KHZhbHVlLnVuaXQpKSB8fCB2YWx1ZS51bml0ID09IENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSB8fCB2YWx1ZS5mVmFsdWUgPCAwKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5h
bWVzOjpoZWlnaHQKQEAgLTE0OCw3ICsxNDgsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNGZWF0
dXJlVmFsaWRXaXRoTm9uTmVnYXRpdmVMZW5ndGhPck51bWJlcihjb25zdCBBdG9taWNTdHJpbgog
CiBzdGF0aWMgaW5saW5lIGJvb2wgaXNGZWF0dXJlVmFsaWRXaXRoRGVuc2l0eShjb25zdCBBdG9t
aWNTdHJpbmcmIG1lZGlhRmVhdHVyZSwgY29uc3QgQ1NTUGFyc2VyVmFsdWUmIHZhbHVlKQogewot
ICAgIGlmICghQ1NTUHJpbWl0aXZlVmFsdWU6OmlzUmVzb2x1dGlvbih2YWx1ZS51bml0KSB8fCB2
YWx1ZS5mVmFsdWUgPD0gMCkKKyAgICBpZiAoIUNTU1ByaW1pdGl2ZVZhbHVlOjppc1Jlc29sdXRp
b24oc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcz4odmFsdWUudW5pdCkp
IHx8IHZhbHVlLmZWYWx1ZSA8PSAwKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1
cm4gbWVkaWFGZWF0dXJlID09IE1lZGlhRmVhdHVyZU5hbWVzOjpyZXNvbHV0aW9uCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3Bw
CmluZGV4IDk5ZmM1ZGQyZjhlNzI4MDk0N2Y2NzlmNDJmYWIwYjYzNjk2Y2UwMzguLmZkNWUxYjQ3
N2UxNzIwMDI1M2RjMDE3ZGRiMzU0MTE4YWNlMmEwOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC0xNDgsMTcg
KzE0OCwxOCBAQCBTdHJpbmcgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpjc3NUZXh0
KCkgY29uc3QKICAgICByZXR1cm4gbV9wcm9wZXJ0eVNldC0+YXNUZXh0KCk7CiB9CiAKLXZvaWQg
UHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpzZXRDc3NUZXh0KGNvbnN0IFN0cmluZyYg
dGV4dCwgRXhjZXB0aW9uQ29kZSYpCitFeGNlcHRpb25Pcjx2b2lkPiBQcm9wZXJ0eVNldENTU1N0
eWxlRGVjbGFyYXRpb246OnNldENzc1RleHQoY29uc3QgU3RyaW5nJiB0ZXh0KQogewogICAgIFN0
eWxlQXR0cmlidXRlTXV0YXRpb25TY29wZSBtdXRhdGlvblNjb3BlKHRoaXMpOwogICAgIGlmICgh
d2lsbE11dGF0ZSgpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB7IH07CiAKICAg
ICBib29sIGNoYW5nZWQgPSBtX3Byb3BlcnR5U2V0LT5wYXJzZURlY2xhcmF0aW9uKHRleHQsIGNz
c1BhcnNlckNvbnRleHQoKSwgY29udGV4dFN0eWxlU2hlZXQoKSk7CiAKICAgICBkaWRNdXRhdGUo
Y2hhbmdlZCA/IFByb3BlcnR5Q2hhbmdlZCA6IE5vQ2hhbmdlcyk7CiAKLSAgICBtdXRhdGlvblNj
b3BlLmVucXVldWVNdXRhdGlvblJlY29yZCgpOyAgICAKKyAgICBtdXRhdGlvblNjb3BlLmVucXVl
dWVNdXRhdGlvblJlY29yZCgpOworICAgIHJldHVybiB7IH07CiB9CiAKIFJlZlB0cjxDU1NWYWx1
ZT4gUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKGNv
bnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKQpAQCAtMjE0LDcgKzIxNSw3IEBAIGJvb2wgUHJvcGVy
dHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjppc1Byb3BlcnR5SW1wbGljaXQoY29uc3QgU3RyaW5n
JiBwcm9wZXJ0eU5hCiAgICAgcmV0dXJuIG1fcHJvcGVydHlTZXQtPmlzUHJvcGVydHlJbXBsaWNp
dChwcm9wZXJ0eUlEKTsKIH0KIAotdm9pZCBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246
OnNldFByb3BlcnR5KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBjb25zdCBTdHJpbmcmIHZh
bHVlLCBjb25zdCBTdHJpbmcmIHByaW9yaXR5LCBFeGNlcHRpb25Db2RlJiBlYykKK0V4Y2VwdGlv
bk9yPHZvaWQ+IFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6c2V0UHJvcGVydHkoY29u
c3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGNvbnN0IFN0cmlu
ZyYgcHJpb3JpdHkpCiB7CiAgICAgU3R5bGVBdHRyaWJ1dGVNdXRhdGlvblNjb3BlIG11dGF0aW9u
U2NvcGUodGhpcyk7CiAgICAgCkBAIC0yMjIsMTYgKzIyMywxNCBAQCB2b2lkIFByb3BlcnR5U2V0
Q1NTU3R5bGVEZWNsYXJhdGlvbjo6c2V0UHJvcGVydHkoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5h
bWUsIGNvbgogICAgIGlmIChpc0N1c3RvbVByb3BlcnR5TmFtZShwcm9wZXJ0eU5hbWUpKQogICAg
ICAgICBwcm9wZXJ0eUlEID0gQ1NTUHJvcGVydHlDdXN0b207CiAgICAgaWYgKCFwcm9wZXJ0eUlE
KQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB7IH07CiAKICAgICBpZiAoIXdpbGxN
dXRhdGUoKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4geyB9OwogCiAgICAgYm9v
bCBpbXBvcnRhbnQgPSBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHByaW9yaXR5LCAiaW1wb3J0YW50
Iik7CiAgICAgaWYgKCFpbXBvcnRhbnQgJiYgIXByaW9yaXR5LmlzRW1wdHkoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgZWMgPSAwOworICAgICAgICByZXR1cm4geyB9OwogCiAgICAgYm9vbCBj
aGFuZ2VkOwogICAgIGlmIChwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5Q3VzdG9tKQpAQCAtMjQ2
LDkgKzI0NSwxMSBAQCB2b2lkIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6c2V0UHJv
cGVydHkoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIGNvbgogICAgICAgICAvLyBzZWUgPGh0
dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyOTY+LgogICAgICAgICBtdXRh
dGlvblNjb3BlLmVucXVldWVNdXRhdGlvblJlY29yZCgpOwogICAgIH0KKworICAgIHJldHVybiB7
IH07CiB9CiAKLVN0cmluZyBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OnJlbW92ZVBy
b3BlcnR5KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKK0V4
Y2VwdGlvbk9yPFN0cmluZz4gUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpyZW1vdmVQ
cm9wZXJ0eShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkKIHsKICAgICBTdHlsZUF0dHJpYnV0
ZU11dGF0aW9uU2NvcGUgbXV0YXRpb25TY29wZSh0aGlzKTsKICAgICBDU1NQcm9wZXJ0eUlEIHBy
b3BlcnR5SUQgPSBjc3NQcm9wZXJ0eUlEKHByb3BlcnR5TmFtZSk7CkBAIC0yNjAsNyArMjYxLDYg
QEAgU3RyaW5nIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6cmVtb3ZlUHJvcGVydHko
Y29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUKICAgICBpZiAoIXdpbGxNdXRhdGUoKSkKICAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgZWMgPSAwOwogICAgIFN0cmluZyByZXN1bHQ7CiAg
ICAgYm9vbCBjaGFuZ2VkID0gcHJvcGVydHlJRCAhPSBDU1NQcm9wZXJ0eUN1c3RvbSA/IG1fcHJv
cGVydHlTZXQtPnJlbW92ZVByb3BlcnR5KHByb3BlcnR5SUQsICZyZXN1bHQpIDogbV9wcm9wZXJ0
eVNldC0+cmVtb3ZlQ3VzdG9tUHJvcGVydHkocHJvcGVydHlOYW1lLCAmcmVzdWx0KTsKIApAQCAt
MjY4LDE2ICsyNjgsMTIgQEAgU3RyaW5nIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6
cmVtb3ZlUHJvcGVydHkoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUKIAogICAgIGlmIChjaGFu
Z2VkKQogICAgICAgICBtdXRhdGlvblNjb3BlLmVucXVldWVNdXRhdGlvblJlY29yZCgpOwotICAg
IHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIFdURk1vdmUocmVzdWx0KTsKIH0KIAogUmVmUHRy
PENTU1ZhbHVlPiBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NT
VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQpCiB7Ci0gICAgUmVmUHRyPENT
U1ZhbHVlPiB2YWx1ZSA9IG1fcHJvcGVydHlTZXQtPmdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVy
dHlJRCk7Ci0gICAgaWYgKHZhbHVlKQotICAgICAgICByZXR1cm4gdmFsdWU7Ci0KLSAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gbV9wcm9wZXJ0eVNldC0+Z2V0UHJvcGVydHlDU1NWYWx1
ZShwcm9wZXJ0eUlEKTsKIH0KIAogU3RyaW5nIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlv
bjo6Z2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkKQEAg
LTI4OSwxMyArMjg1LDEyIEBAIFN0cmluZyBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246
OmdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUlEIHByCiAgICAgcmV0dXJuIFN0
cmluZygpOwogfQogCi1ib29sIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6c2V0UHJv
cGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgdmFs
dWUsIGJvb2wgaW1wb3J0YW50LCBFeGNlcHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPGJvb2w+
IFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6c2V0UHJvcGVydHlJbnRlcm5hbChDU1NQ
cm9wZXJ0eUlEIHByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wgaW1wb3J0YW50
KQogeyAKICAgICBTdHlsZUF0dHJpYnV0ZU11dGF0aW9uU2NvcGUgbXV0YXRpb25TY29wZSh0aGlz
KTsKICAgICBpZiAoIXdpbGxNdXRhdGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
ZWMgPSAwOwogICAgIGJvb2wgY2hhbmdlZCA9IG1fcHJvcGVydHlTZXQtPnNldFByb3BlcnR5KHBy
b3BlcnR5SUQsIHZhbHVlLCBpbXBvcnRhbnQsIGNzc1BhcnNlckNvbnRleHQoKSwgY29udGV4dFN0
eWxlU2hlZXQoKSk7CiAKICAgICBkaWRNdXRhdGUoY2hhbmdlZCA/IFByb3BlcnR5Q2hhbmdlZCA6
IE5vQ2hhbmdlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRD
U1NTdHlsZURlY2xhcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NT
dHlsZURlY2xhcmF0aW9uLmgKaW5kZXggODc1ZTk4ZGMzZWE1ZDcxYmYwYzJmNmE1N2EyZWI4MTMx
YzFiNWVjZS4uNWFiZDA5NzRmNWZiYTdiMTZmYmFlMDYyZWUwMzg4YjQ4YzhhYTgwYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24u
aApAQCAtMjMsOCArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRlZiBQcm9w
ZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb25faAotI2RlZmluZSBQcm9wZXJ0eVNldENTU1N0eWxl
RGVjbGFyYXRpb25faAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDU1NQYXJzZXJNb2RlLmgi
CiAjaW5jbHVkZSAiQ1NTU3R5bGVEZWNsYXJhdGlvbi5oIgpAQCAtNDQsMTQgKzQzLDIzIEBAIGNs
YXNzIFN0eWxlZEVsZW1lbnQ7CiBjbGFzcyBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24g
OiBwdWJsaWMgQ1NTU3R5bGVEZWNsYXJhdGlvbiB7CiBwdWJsaWM6CiAgICAgUHJvcGVydHlTZXRD
U1NTdHlsZURlY2xhcmF0aW9uKE11dGFibGVTdHlsZVByb3BlcnRpZXMqIHByb3BlcnR5U2V0KSA6
IG1fcHJvcGVydHlTZXQocHJvcGVydHlTZXQpIHsgfQotICAgIAorCiAgICAgdmlydHVhbCB2b2lk
IGNsZWFyUGFyZW50RWxlbWVudCgpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKwogICAgIFN0
eWxlU2hlZXRDb250ZW50cyogY29udGV4dFN0eWxlU2hlZXQoKSBjb25zdDsKLSAgICAKKworcHJv
dGVjdGVkOgorICAgIGVudW0gTXV0YXRpb25UeXBlIHsgTm9DaGFuZ2VzLCBQcm9wZXJ0eUNoYW5n
ZWQgfTsKKworICAgIHZpcnR1YWwgQ1NTUGFyc2VyQ29udGV4dCBjc3NQYXJzZXJDb250ZXh0KCkg
Y29uc3Q7CisKKyAgICBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzKiBtX3Byb3BlcnR5U2V0OworICAg
IHN0ZDo6dW5pcXVlX3B0cjxIYXNoTWFwPENTU1ZhbHVlKiwgUmVmUHRyPENTU1ZhbHVlPj4+IG1f
Y3Nzb21DU1NWYWx1ZUNsb25lczsKKworcHJpdmF0ZToKICAgICB2b2lkIHJlZigpIG92ZXJyaWRl
OwogICAgIHZvaWQgZGVyZWYoKSBvdmVycmlkZTsKIAotcHJpdmF0ZToKICAgICBDU1NSdWxlKiBw
YXJlbnRSdWxlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIHVuc2ln
bmVkIGxlbmd0aCgpIGNvbnN0IGZpbmFsOwogICAgIFN0cmluZyBpdGVtKHVuc2lnbmVkIGluZGV4
KSBjb25zdCBmaW5hbDsKQEAgLTYwLDMwICs2OCwyMyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBn
ZXRQcm9wZXJ0eVByaW9yaXR5KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKSBmaW5hbDsKICAg
ICBTdHJpbmcgZ2V0UHJvcGVydHlTaG9ydGhhbmQoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUp
IGZpbmFsOwogICAgIGJvb2wgaXNQcm9wZXJ0eUltcGxpY2l0KGNvbnN0IFN0cmluZyYgcHJvcGVy
dHlOYW1lKSBmaW5hbDsKLSAgICB2b2lkIHNldFByb3BlcnR5KGNvbnN0IFN0cmluZyYgcHJvcGVy
dHlOYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBjb25zdCBTdHJpbmcmIHByaW9yaXR5LCBFeGNl
cHRpb25Db2RlJikgZmluYWw7Ci0gICAgU3RyaW5nIHJlbW92ZVByb3BlcnR5KGNvbnN0IFN0cmlu
ZyYgcHJvcGVydHlOYW1lLCBFeGNlcHRpb25Db2RlJikgZmluYWw7CisgICAgRXhjZXB0aW9uT3I8
dm9pZD4gc2V0UHJvcGVydHkoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFN0cmlu
ZyYgdmFsdWUsIGNvbnN0IFN0cmluZyYgcHJpb3JpdHkpIGZpbmFsOworICAgIEV4Y2VwdGlvbk9y
PFN0cmluZz4gcmVtb3ZlUHJvcGVydHkoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpIGZpbmFs
OwogICAgIFN0cmluZyBjc3NUZXh0KCkgY29uc3QgZmluYWw7Ci0gICAgdm9pZCBzZXRDc3NUZXh0
KGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKSBmaW5hbDsKKyAgICBFeGNlcHRpb25Pcjx2
b2lkPiBzZXRDc3NUZXh0KGNvbnN0IFN0cmluZyYpIGZpbmFsOwogICAgIFJlZlB0cjxDU1NWYWx1
ZT4gZ2V0UHJvcGVydHlDU1NWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5SUQpIGZpbmFsOwogICAg
IFN0cmluZyBnZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlJRCkgZmluYWw7Ci0g
ICAgYm9vbCBzZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYg
dmFsdWUsIGJvb2wgaW1wb3J0YW50LCBFeGNlcHRpb25Db2RlJikgZmluYWw7CisgICAgRXhjZXB0
aW9uT3I8Ym9vbD4gc2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eUlELCBjb25zdCBTdHJp
bmcmIHZhbHVlLCBib29sIGltcG9ydGFudCkgZmluYWw7CiAgICAgCiAgICAgUmVmPE11dGFibGVT
dHlsZVByb3BlcnRpZXM+IGNvcHlQcm9wZXJ0aWVzKCkgY29uc3QgZmluYWw7CiAKICAgICBDU1NW
YWx1ZSogY2xvbmVBbmRDYWNoZUZvckNTU09NKENTU1ZhbHVlKik7CiAgICAgCi1wcm90ZWN0ZWQ6
Ci0gICAgZW51bSBNdXRhdGlvblR5cGUgeyBOb0NoYW5nZXMsIFByb3BlcnR5Q2hhbmdlZCB9Owog
ICAgIHZpcnR1YWwgYm9vbCB3aWxsTXV0YXRlKCkgV0FSTl9VTlVTRURfUkVUVVJOIHsgcmV0dXJu
IHRydWU7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkTXV0YXRlKE11dGF0aW9uVHlwZSkgeyB9Ci0g
ICAgdmlydHVhbCBDU1NQYXJzZXJDb250ZXh0IGNzc1BhcnNlckNvbnRleHQoKSBjb25zdDsKLQot
ICAgIE11dGFibGVTdHlsZVByb3BlcnRpZXMqIG1fcHJvcGVydHlTZXQ7Ci0gICAgc3RkOjp1bmlx
dWVfcHRyPEhhc2hNYXA8Q1NTVmFsdWUqLCBSZWZQdHI8Q1NTVmFsdWU+Pj4gbV9jc3NvbUNTU1Zh
bHVlQ2xvbmVzOwogfTsKIAotY2xhc3MgU3R5bGVSdWxlQ1NTU3R5bGVEZWNsYXJhdGlvbiBmaW5h
bCA6IHB1YmxpYyBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24KLXsKK2NsYXNzIFN0eWxl
UnVsZUNTU1N0eWxlRGVjbGFyYXRpb24gZmluYWwgOiBwdWJsaWMgUHJvcGVydHlTZXRDU1NTdHls
ZURlY2xhcmF0aW9uIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFN0eWxlUnVsZUNTU1N0eWxl
RGVjbGFyYXRpb24+IGNyZWF0ZShNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJiBwcm9wZXJ0eVNldCwg
Q1NTUnVsZSYgcGFyZW50UnVsZSkKICAgICB7CkBAIC05MSw3ICs5Miw3IEBAIHB1YmxpYzoKICAg
ICB9CiAgICAgdmlydHVhbCB+U3R5bGVSdWxlQ1NTU3R5bGVEZWNsYXJhdGlvbigpOwogCi0gICAg
dm9pZCBjbGVhclBhcmVudFJ1bGUoKSB7IG1fcGFyZW50UnVsZSA9IDA7IH0KKyAgICB2b2lkIGNs
ZWFyUGFyZW50UnVsZSgpIHsgbV9wYXJlbnRSdWxlID0gbnVsbHB0cjsgfQogICAgIAogICAgIHZv
aWQgcmVmKCkgZmluYWw7CiAgICAgdm9pZCBkZXJlZigpIGZpbmFsOwpAQCAtMTEzLDE5ICsxMTQs
MTggQEAgcHJpdmF0ZToKICAgICBDU1NSdWxlKiBtX3BhcmVudFJ1bGU7CiB9OwogCi1jbGFzcyBJ
bmxpbmVDU1NTdHlsZURlY2xhcmF0aW9uIGZpbmFsIDogcHVibGljIFByb3BlcnR5U2V0Q1NTU3R5
bGVEZWNsYXJhdGlvbgoteworY2xhc3MgSW5saW5lQ1NTU3R5bGVEZWNsYXJhdGlvbiBmaW5hbCA6
IHB1YmxpYyBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24gewogcHVibGljOgogICAgIElu
bGluZUNTU1N0eWxlRGVjbGFyYXRpb24oTXV0YWJsZVN0eWxlUHJvcGVydGllcyogcHJvcGVydHlT
ZXQsIFN0eWxlZEVsZW1lbnQqIHBhcmVudEVsZW1lbnQpCiAgICAgICAgIDogUHJvcGVydHlTZXRD
U1NTdHlsZURlY2xhcmF0aW9uKHByb3BlcnR5U2V0KQogICAgICAgICAsIG1fcGFyZW50RWxlbWVu
dChwYXJlbnRFbGVtZW50KSAKICAgICB7CiAgICAgfQotICAgIAorCiBwcml2YXRlOgogICAgIENT
U1N0eWxlU2hlZXQqIHBhcmVudFN0eWxlU2hlZXQoKSBjb25zdCBmaW5hbDsKICAgICBTdHlsZWRF
bGVtZW50KiBwYXJlbnRFbGVtZW50KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wYXJlbnRFbGVt
ZW50OyB9Ci0gICAgdm9pZCBjbGVhclBhcmVudEVsZW1lbnQoKSBmaW5hbCB7IG1fcGFyZW50RWxl
bWVudCA9IDA7IH0KKyAgICB2b2lkIGNsZWFyUGFyZW50RWxlbWVudCgpIGZpbmFsIHsgbV9wYXJl
bnRFbGVtZW50ID0gbnVsbHB0cjsgfQogCiAgICAgdm9pZCBkaWRNdXRhdGUoTXV0YXRpb25UeXBl
KSBmaW5hbDsKICAgICBDU1NQYXJzZXJDb250ZXh0IGNzc1BhcnNlckNvbnRleHQoKSBjb25zdCBm
aW5hbDsKQEAgLTEzNCw1ICsxMzQsMyBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1
aWxkZXJDb252ZXJ0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0
ZXIuaAppbmRleCAxZWY2NTk2MmVlZjkzYjZjN2M3YTNmYTJlMGU1ODUyZjk0MmZmMmMwLi40Nzg2
MzBiNjUyYTllNzJlMGYyZjI5ZjY3Mjc4ZGZhNjQzYjEyYzJiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCkBAIC0xODcsNyArMTg3LDcgQEAgaW5saW5lIExl
bmd0aCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMZW5ndGgoU3R5bGVSZXNvbHZlciYg
c3R5bGVSZXNvbHZlciwKICAgICB9CiAKICAgICBpZiAocHJpbWl0aXZlVmFsdWUuaXNQZXJjZW50
YWdlKCkpCi0gICAgICAgIHJldHVybiBMZW5ndGgocHJpbWl0aXZlVmFsdWUuZ2V0RG91YmxlVmFs
dWUoKSwgUGVyY2VudCk7CisgICAgICAgIHJldHVybiBMZW5ndGgocHJpbWl0aXZlVmFsdWUuZG91
YmxlVmFsdWUoKSwgUGVyY2VudCk7CiAKICAgICBpZiAocHJpbWl0aXZlVmFsdWUuaXNDYWxjdWxh
dGVkUGVyY2VudGFnZVdpdGhMZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIExlbmd0aChwcmltaXRp
dmVWYWx1ZS5jc3NDYWxjVmFsdWUoKS0+Y3JlYXRlQ2FsY3VsYXRpb25WYWx1ZShjb252ZXJzaW9u
RGF0YSkpOwpAQCAtMTk4LDcgKzE5OCw3IEBAIGlubGluZSBMZW5ndGggU3R5bGVCdWlsZGVyQ29u
dmVydGVyOjpjb252ZXJ0TGVuZ3RoKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsCiAKIGlu
bGluZSBMZW5ndGggU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TGVuZ3RoT3JBdXRvKFN0
eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKLSAgICBpZiAo
ZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFs
dWVBdXRvKQorICAgIGlmIChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLnZhbHVl
SUQoKSA9PSBDU1NWYWx1ZUF1dG8pCiAgICAgICAgIHJldHVybiBMZW5ndGgoQXV0byk7CiAgICAg
cmV0dXJuIGNvbnZlcnRMZW5ndGgoc3R5bGVSZXNvbHZlciwgdmFsdWUpOwogfQpAQCAtMjA2LDcg
KzIwNiw3IEBAIGlubGluZSBMZW5ndGggU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TGVu
Z3RoT3JBdXRvKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzCiBpbmxpbmUgTGVuZ3RoIFN0eWxlQnVp
bGRlckNvbnZlcnRlcjo6Y29udmVydExlbmd0aFNpemluZyhTdHlsZVJlc29sdmVyJiBzdHlsZVJl
c29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBk
b3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwotICAgIHN3aXRjaCAocHJpbWl0aXZl
VmFsdWUuZ2V0VmFsdWVJRCgpKSB7CisgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlE
KCkpIHsKICAgICBjYXNlIENTU1ZhbHVlSW52YWxpZDoKICAgICAgICAgcmV0dXJuIGNvbnZlcnRM
ZW5ndGgoc3R5bGVSZXNvbHZlciwgdmFsdWUpOwogICAgIGNhc2UgQ1NTVmFsdWVJbnRyaW5zaWM6
CkBAIC0yMzEsNyArMjMxLDcgQEAgaW5saW5lIExlbmd0aCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6
OmNvbnZlcnRMZW5ndGhTaXppbmcoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXMKIAogaW5saW5lIExl
bmd0aCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMZW5ndGhNYXhTaXppbmcoU3R5bGVS
ZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHZhbHVlKQogewotICAgIGlmIChkb3du
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5v
bmUpCisgICAgaWYgKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkudmFsdWVJRCgp
ID09IENTU1ZhbHVlTm9uZSkKICAgICAgICAgcmV0dXJuIExlbmd0aChVbmRlZmluZWQpOwogICAg
IHJldHVybiBjb252ZXJ0TGVuZ3RoU2l6aW5nKHN0eWxlUmVzb2x2ZXIsIHZhbHVlKTsKIH0KQEAg
LTI0Niw3ICsyNDYsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIGlubGluZSBUIFN0eWxlQnVp
bGRlckNvbnZlcnRlcjo6Y29udmVydExpbmVXaWR0aChTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29s
dmVyLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3du
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwotICAgIHN3aXRjaCAocHJpbWl0aXZlVmFs
dWUuZ2V0VmFsdWVJRCgpKSB7CisgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkp
IHsKICAgICBjYXNlIENTU1ZhbHVlVGhpbjoKICAgICAgICAgcmV0dXJuIDE7CiAgICAgY2FzZSBD
U1NWYWx1ZU1lZGl1bToKQEAgLTI3Niw3ICsyNzYsNyBAQCBpbmxpbmUgVCBTdHlsZUJ1aWxkZXJD
b252ZXJ0ZXI6OmNvbnZlcnRMaW5lV2lkdGgoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwg
QwogaW5saW5lIGZsb2F0IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFNwYWNpbmcoU3R5
bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGF1dG8m
IHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKLSAg
ICBpZiAocHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlTm9ybWFsKQorICAg
IGlmIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb3JtYWwpCiAgICAgICAg
IHJldHVybiAwLmY7CiAKICAgICBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhIGNvbnZlcnNpb25E
YXRhID0gc3R5bGVSZXNvbHZlci51c2VTVkdab29tUnVsZXNGb3JMZW5ndGgoKSA/CkBAIC0yODgs
NyArMjg4LDcgQEAgaW5saW5lIGZsb2F0IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFNw
YWNpbmcoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwKIGlubGluZSBMZW5ndGggU3R5bGVC
dWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VG9SYWRpdXNMZW5ndGgoQ1NTVG9MZW5ndGhDb252ZXJz
aW9uRGF0YSYgY29udmVyc2lvbkRhdGEsIENTU1ByaW1pdGl2ZVZhbHVlJiB2YWx1ZSkKIHsKICAg
ICBpZiAodmFsdWUuaXNQZXJjZW50YWdlKCkpCi0gICAgICAgIHJldHVybiBMZW5ndGgodmFsdWUu
Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7CisgICAgICAgIHJldHVybiBMZW5ndGgodmFsdWUu
ZG91YmxlVmFsdWUoKSwgUGVyY2VudCk7CiAgICAgaWYgKHZhbHVlLmlzQ2FsY3VsYXRlZFBlcmNl
bnRhZ2VXaXRoTGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBMZW5ndGgodmFsdWUuY3NzQ2FsY1Zh
bHVlKCktPmNyZWF0ZUNhbGN1bGF0aW9uVmFsdWUoY29udmVyc2lvbkRhdGEpKTsKICAgICByZXR1
cm4gdmFsdWUuY29tcHV0ZUxlbmd0aDxMZW5ndGg+KGNvbnZlcnNpb25EYXRhKTsKQEAgLTI5Nyw3
ICsyOTcsNyBAQCBpbmxpbmUgTGVuZ3RoIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRv
UmFkaXVzTGVuZ3RoKENTU1RvTGVuZ3RoQ29udmVyc2lvbgogaW5saW5lIExlbmd0aFNpemUgU3R5
bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UmFkaXVzKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVz
b2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRv
d25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7Ci0gICAgUGFpciogcGFpciA9IHByaW1p
dGl2ZVZhbHVlLmdldFBhaXJWYWx1ZSgpOworICAgIFBhaXIqIHBhaXIgPSBwcmltaXRpdmVWYWx1
ZS5wYWlyVmFsdWUoKTsKICAgICBpZiAoIXBhaXIgfHwgIXBhaXItPmZpcnN0KCkgfHwgIXBhaXIt
PnNlY29uZCgpKQogICAgICAgICByZXR1cm4gTGVuZ3RoU2l6ZShMZW5ndGgoMCwgRml4ZWQpLCBM
ZW5ndGgoMCwgRml4ZWQpKTsKIApAQCAtMzMzLDExICszMzMsMTEgQEAgaW5saW5lIExlbmd0aCBT
dHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRQb3NpdGlvbkNvbXBvbmVudChTdHlsZVJlc29s
dmVyJiBzdHkKICAgICBib29sIHJlbGF0aXZlVG9UcmFpbGluZ0VkZ2UgPSBmYWxzZTsKICAgICAK
ICAgICBpZiAodmFsdWUuaXNQYWlyKCkpIHsKLSAgICAgICAgYXV0byYgZmlyc3QgPSAqdmFsdWUu
Z2V0UGFpclZhbHVlKCktPmZpcnN0KCk7Ci0gICAgICAgIGlmIChmaXJzdC5nZXRWYWx1ZUlEKCkg
PT0gQ1NTVmFsdWVSaWdodCB8fCBmaXJzdC5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVCb3R0b20p
CisgICAgICAgIGF1dG8mIGZpcnN0ID0gKnZhbHVlLnBhaXJWYWx1ZSgpLT5maXJzdCgpOworICAg
ICAgICBpZiAoZmlyc3QudmFsdWVJRCgpID09IENTU1ZhbHVlUmlnaHQgfHwgZmlyc3QudmFsdWVJ
RCgpID09IENTU1ZhbHVlQm90dG9tKQogICAgICAgICAgICAgcmVsYXRpdmVUb1RyYWlsaW5nRWRn
ZSA9IHRydWU7CiAKLSAgICAgICAgbGVuZ3RoVmFsdWUgPSB2YWx1ZS5nZXRQYWlyVmFsdWUoKS0+
c2Vjb25kKCk7CisgICAgICAgIGxlbmd0aFZhbHVlID0gdmFsdWUucGFpclZhbHVlKCktPnNlY29u
ZCgpOwogICAgIH0KIAogICAgIGxlbmd0aCA9IGNvbnZlcnRMZW5ndGgoc3R5bGVSZXNvbHZlciwg
Kmxlbmd0aFZhbHVlKTsKQEAgLTM1MSw3ICszNTEsNyBAQCBpbmxpbmUgTGVuZ3RoIFN0eWxlQnVp
bGRlckNvbnZlcnRlcjo6Y29udmVydFBvc2l0aW9uQ29tcG9uZW50KFN0eWxlUmVzb2x2ZXImIHN0
eQogaW5saW5lIExlbmd0aFBvaW50IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydE9iamVj
dFBvc2l0aW9uKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkK
IHsKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
Pih2YWx1ZSk7Ci0gICAgUGFpciogcGFpciA9IHByaW1pdGl2ZVZhbHVlLmdldFBhaXJWYWx1ZSgp
OworICAgIFBhaXIqIHBhaXIgPSBwcmltaXRpdmVWYWx1ZS5wYWlyVmFsdWUoKTsKICAgICBpZiAo
IXBhaXIgfHwgIXBhaXItPmZpcnN0KCkgfHwgIXBhaXItPnNlY29uZCgpKQogICAgICAgICByZXR1
cm4gUmVuZGVyU3R5bGU6OmluaXRpYWxPYmplY3RQb3NpdGlvbigpOwogCkBAIC0zNzQsMTMgKzM3
NCwxMyBAQCBpbmxpbmUgVGV4dERlY29yYXRpb24gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252
ZXJ0VGV4dERlY29yYXRpb24oU3R5bGVSZXNvbHZlcgogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBp
bmxpbmUgVCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnROdW1iZXIoU3R5bGVSZXNvbHZl
ciYsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKLSAgICByZXR1cm4gZG93bmNhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWU+KHZhbHVlKS5nZXRWYWx1ZTxUPihDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7
CisgICAgcmV0dXJuIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkudmFsdWU8VD4o
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KIGlubGluZSBUIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydE51bWJlck9yQXV0byhT
dHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCiB7Ci0gICAgaWYg
KGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkuZ2V0VmFsdWVJRCgpID09IENTU1Zh
bHVlQXV0bykKKyAgICBpZiAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS52YWx1
ZUlEKCkgPT0gQ1NTVmFsdWVBdXRvKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgcmV0dXJuIGNv
bnZlcnROdW1iZXI8VD4oc3R5bGVSZXNvbHZlciwgdmFsdWUpOwogfQpAQCAtMzg4LDkgKzM4OCw5
IEBAIGlubGluZSBUIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydE51bWJlck9yQXV0byhT
dHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyCiBpbmxpbmUgc2hvcnQgU3R5bGVCdWlsZGVyQ29u
dmVydGVyOjpjb252ZXJ0V2Via2l0SHlwaGVuYXRlTGltaXRMaW5lcyhTdHlsZVJlc29sdmVyJiwg
Q1NTVmFsdWUmIHZhbHVlKQogewogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8
Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKLSAgICBpZiAocHJpbWl0aXZlVmFsdWUuZ2V0VmFs
dWVJRCgpID09IENTU1ZhbHVlTm9MaW1pdCkKKyAgICBpZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJ
RCgpID09IENTU1ZhbHVlTm9MaW1pdCkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIHJldHVybiBw
cmltaXRpdmVWYWx1ZS5nZXRWYWx1ZTxzaG9ydD4oQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1C
RVIpOworICAgIHJldHVybiBwcmltaXRpdmVWYWx1ZS52YWx1ZTxzaG9ydD4oQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19OVU1CRVIpOwogfQogCiB0ZW1wbGF0ZSA8Q1NTUHJvcGVydHlJRCBwcm9wZXJ0
eT4KQEAgLTQyNSwxOSArNDI1LDE5IEBAIGlubGluZSBUcmFuc2Zvcm1PcGVyYXRpb25zIFN0eWxl
QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRyYW5zZm9ybShTdHlsZVJlc29sdmVyCiAKIGlubGlu
ZSBTdHJpbmcgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U3RyaW5nKFN0eWxlUmVzb2x2
ZXImLCBDU1NWYWx1ZSYgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIGRvd25jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlPih2YWx1ZSkuZ2V0U3RyaW5nVmFsdWUoKTsKKyAgICByZXR1cm4gZG93bmNhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWU+KHZhbHVlKS5zdHJpbmdWYWx1ZSgpOwogfQogCiBpbmxpbmUgU3RyaW5n
IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFN0cmluZ09yQXV0byhTdHlsZVJlc29sdmVy
JiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCiB7Ci0gICAgaWYgKGRvd25jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlQXV0bykKKyAg
ICBpZiAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS52YWx1ZUlEKCkgPT0gQ1NT
VmFsdWVBdXRvKQogICAgICAgICByZXR1cm4gbnVsbEF0b207CiAgICAgcmV0dXJuIGNvbnZlcnRT
dHJpbmcoc3R5bGVSZXNvbHZlciwgdmFsdWUpOwogfQogCiBpbmxpbmUgU3RyaW5nIFN0eWxlQnVp
bGRlckNvbnZlcnRlcjo6Y29udmVydFN0cmluZ09yTm9uZShTdHlsZVJlc29sdmVyJiBzdHlsZVJl
c29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCiB7Ci0gICAgaWYgKGRvd25jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlPih2YWx1ZSkuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZSkKKyAgICBpZiAoZG93
bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25l
KQogICAgICAgICByZXR1cm4gbnVsbEF0b207CiAgICAgcmV0dXJuIGNvbnZlcnRTdHJpbmcoc3R5
bGVSZXNvbHZlciwgdmFsdWUpOwogfQpAQCAtNDQ2LDcgKzQ0Niw3IEBAIGlubGluZSBUZXh0RW1w
aGFzaXNQb3NpdGlvbiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OnZhbHVlVG9FbXBoYXNpc1Bvc2l0
aW9uKENTU1ByCiB7CiAgICAgQVNTRVJUKHByaW1pdGl2ZVZhbHVlLmlzVmFsdWVJRCgpKTsKIAot
ICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWVJRCgpKSB7CisgICAgc3dpdGNoIChw
cmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkpIHsKICAgICBjYXNlIENTU1ZhbHVlT3ZlcjoKICAgICAg
ICAgcmV0dXJuIFRleHRFbXBoYXNpc1Bvc2l0aW9uT3ZlcjsKICAgICBjYXNlIENTU1ZhbHVlVW5k
ZXI6CkBAIC00NzksNyArNDc5LDcgQEAgaW5saW5lIEVUZXh0QWxpZ24gU3R5bGVCdWlsZGVyQ29u
dmVydGVyOjpjb252ZXJ0VGV4dEFsaWduKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmUKICAgICBhdXRv
JiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CiAg
ICAgQVNTRVJUKHByaW1pdGl2ZVZhbHVlLmlzVmFsdWVJRCgpKTsKIAotICAgIGlmIChwcmltaXRp
dmVWYWx1ZS5nZXRWYWx1ZUlEKCkgIT0gQ1NTVmFsdWVXZWJraXRNYXRjaFBhcmVudCkKKyAgICBp
ZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpICE9IENTU1ZhbHVlV2Via2l0TWF0Y2hQYXJlbnQp
CiAgICAgICAgIHJldHVybiBwcmltaXRpdmVWYWx1ZTsKIAogICAgIGF1dG8qIHBhcmVudFN0eWxl
ID0gc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpOwpAQCAtNDk1LDEyICs0OTUsMTIgQEAgaW5s
aW5lIFJlZlB0cjxDbGlwUGF0aE9wZXJhdGlvbj4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252
ZXJ0Q2xpcFBhdGgoU3R5bGVSZXMKICAgICBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVl
KSkgewogICAgICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlPih2YWx1ZSk7CiAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS5wcmltaXRpdmVUeXBl
KCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19VUkkpIHsKLSAgICAgICAgICAgIFN0cmluZyBj
c3NVUkxWYWx1ZSA9IHByaW1pdGl2ZVZhbHVlLmdldFN0cmluZ1ZhbHVlKCk7CisgICAgICAgICAg
ICBTdHJpbmcgY3NzVVJMVmFsdWUgPSBwcmltaXRpdmVWYWx1ZS5zdHJpbmdWYWx1ZSgpOwogICAg
ICAgICAgICAgVVJMIHVybCA9IHN0eWxlUmVzb2x2ZXIuZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChj
c3NVUkxWYWx1ZSk7CiAgICAgICAgICAgICAvLyBGSVhNRTogSXQgZG9lc24ndCB3b3JrIHdpdGgg
ZXh0ZXJuYWwgU1ZHIHJlZmVyZW5jZXMgKHNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTI2MTMzKQogICAgICAgICAgICAgcmV0dXJuIFJlZmVyZW5jZUNsaXBQYXRo
T3BlcmF0aW9uOjpjcmVhdGUoY3NzVVJMVmFsdWUsIHVybC5mcmFnbWVudElkZW50aWZpZXIoKSk7
CiAgICAgICAgIH0KLSAgICAgICAgQVNTRVJUKHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQoKSA9
PSBDU1NWYWx1ZU5vbmUpOworICAgICAgICBBU1NFUlQocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgp
ID09IENTU1ZhbHVlTm9uZSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAt
NTExLDE1ICs1MTEsMTUgQEAgaW5saW5lIFJlZlB0cjxDbGlwUGF0aE9wZXJhdGlvbj4gU3R5bGVC
dWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Q2xpcFBhdGgoU3R5bGVSZXMKICAgICAgICAgYXV0byYg
cHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oY3VycmVudFZhbHVl
LmdldCgpKTsKICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLmlzU2hhcGUoKSkgewogICAgICAg
ICAgICAgQVNTRVJUKCFvcGVyYXRpb24pOwotICAgICAgICAgICAgb3BlcmF0aW9uID0gU2hhcGVD
bGlwUGF0aE9wZXJhdGlvbjo6Y3JlYXRlKGJhc2ljU2hhcGVGb3JWYWx1ZShzdHlsZVJlc29sdmVy
LnN0YXRlKCkuY3NzVG9MZW5ndGhDb252ZXJzaW9uRGF0YSgpLCAqcHJpbWl0aXZlVmFsdWUuZ2V0
U2hhcGVWYWx1ZSgpKSk7CisgICAgICAgICAgICBvcGVyYXRpb24gPSBTaGFwZUNsaXBQYXRoT3Bl
cmF0aW9uOjpjcmVhdGUoYmFzaWNTaGFwZUZvclZhbHVlKHN0eWxlUmVzb2x2ZXIuc3RhdGUoKS5j
c3NUb0xlbmd0aENvbnZlcnNpb25EYXRhKCksICpwcmltaXRpdmVWYWx1ZS5zaGFwZVZhbHVlKCkp
KTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIEFTU0VSVChwcmltaXRpdmVWYWx1ZS5n
ZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVDb250ZW50Qm94Ci0gICAgICAgICAgICAgICAgICAgfHwg
cHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlQm9yZGVyQm94Ci0gICAgICAg
ICAgICAgICAgICAgfHwgcHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlUGFk
ZGluZ0JveAotICAgICAgICAgICAgICAgICAgIHx8IHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQo
KSA9PSBDU1NWYWx1ZU1hcmdpbkJveAotICAgICAgICAgICAgICAgICAgIHx8IHByaW1pdGl2ZVZh
bHVlLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZUZpbGwKLSAgICAgICAgICAgICAgICAgICB8fCBw
cmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVTdHJva2UKLSAgICAgICAgICAg
ICAgICAgICB8fCBwcmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVWaWV3Qm94
KTsKKyAgICAgICAgICAgIEFTU0VSVChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFs
dWVDb250ZW50Qm94CisgICAgICAgICAgICAgICAgfHwgcHJpbWl0aXZlVmFsdWUudmFsdWVJRCgp
ID09IENTU1ZhbHVlQm9yZGVyQm94CisgICAgICAgICAgICAgICAgfHwgcHJpbWl0aXZlVmFsdWUu
dmFsdWVJRCgpID09IENTU1ZhbHVlUGFkZGluZ0JveAorICAgICAgICAgICAgICAgIHx8IHByaW1p
dGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU1hcmdpbkJveAorICAgICAgICAgICAgICAg
IHx8IHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUZpbGwKKyAgICAgICAgICAg
ICAgICB8fCBwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVTdHJva2UKKyAgICAg
ICAgICAgICAgICB8fCBwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVWaWV3Qm94
KTsKICAgICAgICAgICAgIEFTU0VSVChyZWZlcmVuY2VCb3ggPT0gQm94TWlzc2luZyk7CiAgICAg
ICAgICAgICByZWZlcmVuY2VCb3ggPSBwcmltaXRpdmVWYWx1ZTsKICAgICAgICAgfQpAQCAtNTM5
LDcgKzUzOSw3IEBAIGlubGluZSBFUmVzaXplIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVy
dFJlc2l6ZShTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyCiAgICAgYXV0byYgcHJpbWl0aXZl
VmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwogCiAgICAgRVJlc2l6
ZSByZXNpemUgPSBSRVNJWkVfTk9ORTsKLSAgICBpZiAocHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWVJ
RCgpID09IENTU1ZhbHVlQXV0bykgeworICAgIGlmIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkg
PT0gQ1NTVmFsdWVBdXRvKSB7CiAgICAgICAgIGlmIChTZXR0aW5ncyogc2V0dGluZ3MgPSBzdHls
ZVJlc29sdmVyLmRvY3VtZW50KCkuc2V0dGluZ3MoKSkKICAgICAgICAgICAgIHJlc2l6ZSA9IHNl
dHRpbmdzLT50ZXh0QXJlYXNBcmVSZXNpemFibGUoKSA/IFJFU0laRV9CT1RIIDogUkVTSVpFX05P
TkU7CiAgICAgfSBlbHNlCkBAIC01NTEsMTggKzU1MSwxOCBAQCBpbmxpbmUgRVJlc2l6ZSBTdHls
ZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRSZXNpemUoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNv
bHZlcgogaW5saW5lIGludCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRNYXJxdWVlUmVw
ZXRpdGlvbihTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGF1dG8mIHBy
aW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKLSAgICBp
ZiAocHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlSW5maW5pdGUpCisgICAg
aWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUluZmluaXRlKQogICAgICAg
ICByZXR1cm4gLTE7IC8vIC0xIG1lYW5zIHJlcGVhdCBmb3JldmVyLgogCiAgICAgQVNTRVJUKHBy
aW1pdGl2ZVZhbHVlLmlzTnVtYmVyKCkpOwotICAgIHJldHVybiBwcmltaXRpdmVWYWx1ZS5nZXRJ
bnRWYWx1ZSgpOworICAgIHJldHVybiBwcmltaXRpdmVWYWx1ZS5pbnRWYWx1ZSgpOwogfQogCiBp
bmxpbmUgaW50IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydE1hcnF1ZWVTcGVlZChTdHls
ZVJlc29sdmVyJiwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVl
ID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKICAgICBpbnQgc3BlZWQgPSA4
NTsKLSAgICBpZiAoQ1NTVmFsdWVJRCBpZGVudCA9IHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQo
KSkgeworICAgIGlmIChDU1NWYWx1ZUlEIGlkZW50ID0gcHJpbWl0aXZlVmFsdWUudmFsdWVJRCgp
KSB7CiAgICAgICAgIHN3aXRjaCAoaWRlbnQpIHsKICAgICAgICAgY2FzZSBDU1NWYWx1ZVNsb3c6
CiAgICAgICAgICAgICBzcGVlZCA9IDUwMDsgLy8gNTAwIG1zZWMuCkBAIC01ODIsNyArNTgyLDcg
QEAgaW5saW5lIGludCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRNYXJxdWVlU3BlZWQo
U3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJgogICAgIGVsc2UgewogICAgICAgICAvLyBGb3Igc2Ny
b2xsYW1vdW50IHN1cHBvcnQuCiAgICAgICAgIEFTU0VSVChwcmltaXRpdmVWYWx1ZS5pc051bWJl
cigpKTsKLSAgICAgICAgc3BlZWQgPSBwcmltaXRpdmVWYWx1ZS5nZXRJbnRWYWx1ZSgpOworICAg
ICAgICBzcGVlZCA9IHByaW1pdGl2ZVZhbHVlLmludFZhbHVlKCk7CiAgICAgfQogICAgIHJldHVy
biBzcGVlZDsKIH0KQEAgLTU5MCw3ICs1OTAsNyBAQCBpbmxpbmUgaW50IFN0eWxlQnVpbGRlckNv
bnZlcnRlcjo6Y29udmVydE1hcnF1ZWVTcGVlZChTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmCiBp
bmxpbmUgUGFzc1JlZlB0cjxRdW90ZXNEYXRhPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZl
cnRRdW90ZXMoU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBpZiAoaXM8
Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSkgewotICAgICAgICBBU1NFUlQoZG93bmNhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWU+KHZhbHVlKS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKTsKKyAg
ICAgICAgQVNTRVJUKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkudmFsdWVJRCgp
ID09IENTU1ZhbHVlTm9uZSk7CiAgICAgICAgIHJldHVybiBRdW90ZXNEYXRhOjpjcmVhdGUoVmVj
dG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+KCkpOwogICAgIH0KIApAQCAtNjAzLDggKzYw
Myw4IEBAIGlubGluZSBQYXNzUmVmUHRyPFF1b3Rlc0RhdGE+IFN0eWxlQnVpbGRlckNvbnZlcnRl
cjo6Y29udmVydFF1b3RlcyhTdHlsZVJlc29sdmVyCiAgICAgICAgIENTU1ZhbHVlKiBzZWNvbmQg
PSBsaXN0Lml0ZW0oaSArIDEpOwogICAgICAgICBpZiAoIXNlY29uZCkKICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBTdHJpbmcgc3RhcnRRdW90ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlPigqZmlyc3QpLmdldFN0cmluZ1ZhbHVlKCk7Ci0gICAgICAgIFN0cmluZyBlbmRRdW90ZSA9
IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqc2Vjb25kKS5nZXRTdHJpbmdWYWx1ZSgpOwor
ICAgICAgICBTdHJpbmcgc3RhcnRRdW90ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigq
Zmlyc3QpLnN0cmluZ1ZhbHVlKCk7CisgICAgICAgIFN0cmluZyBlbmRRdW90ZSA9IGRvd25jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlPigqc2Vjb25kKS5zdHJpbmdWYWx1ZSgpOwogICAgICAgICBxdW90
ZXMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKHN0YXJ0UXVvdGUsIGVuZFF1b3RlKSk7CiAgICAgfQog
ICAgIHJldHVybiBRdW90ZXNEYXRhOjpjcmVhdGUocXVvdGVzKTsKQEAgLTYyNyw3ICs2MjcsNyBA
QCBpbmxpbmUgVGV4dFVuZGVybGluZVBvc2l0aW9uIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29u
dmVydFRleHRVbmRlcmxpbmVQb3NpdGlvbgogaW5saW5lIFJlZlB0cjxTdHlsZVJlZmxlY3Rpb24+
IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFJlZmxlY3Rpb24oU3R5bGVSZXNvbHZlciYg
c3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGlmIChpczxDU1NQcmltaXRp
dmVWYWx1ZT4odmFsdWUpKSB7Ci0gICAgICAgIEFTU0VSVChkb3duY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZT4odmFsdWUpLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUpOworICAgICAgICBBU1NF
UlQoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS52YWx1ZUlEKCkgPT0gQ1NTVmFs
dWVOb25lKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC02NDksMTUgKzY0
OSwxNSBAQCBpbmxpbmUgSW50U2l6ZSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRJbml0
aWFsTGV0dGVyKFN0eWxlUmVzb2x2ZXImLCBDU1NWYQogewogICAgIGF1dG8mIHByaW1pdGl2ZVZh
bHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKIAotICAgIGlmIChwcmlt
aXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb3JtYWwpCisgICAgaWYgKHByaW1p
dGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vcm1hbCkKICAgICAgICAgcmV0dXJuIElu
dFNpemUoKTsKIAotICAgIFBhaXIqIHBhaXIgPSBwcmltaXRpdmVWYWx1ZS5nZXRQYWlyVmFsdWUo
KTsKKyAgICBQYWlyKiBwYWlyID0gcHJpbWl0aXZlVmFsdWUucGFpclZhbHVlKCk7CiAgICAgQVNT
RVJUKHBhaXIpOwogICAgIEFTU0VSVChwYWlyLT5maXJzdCgpKTsKICAgICBBU1NFUlQocGFpci0+
c2Vjb25kKCkpOwogCi0gICAgcmV0dXJuIEludFNpemUocGFpci0+Zmlyc3QoKS0+Z2V0SW50VmFs
dWUoKSwgcGFpci0+c2Vjb25kKCktPmdldEludFZhbHVlKCkpOworICAgIHJldHVybiBJbnRTaXpl
KHBhaXItPmZpcnN0KCktPmludFZhbHVlKCksIHBhaXItPnNlY29uZCgpLT5pbnRWYWx1ZSgpKTsK
IH0KIAogaW5saW5lIGZsb2F0IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRleHRTdHJv
a2VXaWR0aChTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCkBA
IC02NjUsMTQgKzY2NSwxNCBAQCBpbmxpbmUgZmxvYXQgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpj
b252ZXJ0VGV4dFN0cm9rZVdpZHRoKFN0eWxlUmVzb2x2ZXImIHN0eWxlUgogICAgIGF1dG8mIHBy
aW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKIAogICAg
IGZsb2F0IHdpZHRoID0gMDsKLSAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQo
KSkgeworICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpKSB7CiAgICAgY2FzZSBD
U1NWYWx1ZVRoaW46CiAgICAgY2FzZSBDU1NWYWx1ZU1lZGl1bToKICAgICBjYXNlIENTU1ZhbHVl
VGhpY2s6IHsKICAgICAgICAgZG91YmxlIHJlc3VsdCA9IDEuMCAvIDQ4OwotICAgICAgICBpZiAo
cHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlTWVkaXVtKQorICAgICAgICBp
ZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlTWVkaXVtKQogICAgICAgICAg
ICAgcmVzdWx0ICo9IDM7Ci0gICAgICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLmdldFZhbHVl
SUQoKSA9PSBDU1NWYWx1ZVRoaWNrKQorICAgICAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS52
YWx1ZUlEKCkgPT0gQ1NTVmFsdWVUaGljaykKICAgICAgICAgICAgIHJlc3VsdCAqPSA1OwogICAg
ICAgICBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IGVtc1ZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpj
cmVhdGUocmVzdWx0LCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VNUykpOwogICAgICAgICB3aWR0
aCA9IGNvbnZlcnRDb21wdXRlZExlbmd0aDxmbG9hdD4oc3R5bGVSZXNvbHZlciwgZW1zVmFsdWUp
OwpAQCAtNjkzLDcgKzY5Myw3IEBAIGlubGluZSBmbG9hdCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6
OmNvbnZlcnRUZXh0U3Ryb2tlV2lkdGgoU3R5bGVSZXNvbHZlciYgc3R5bGVSCiBpbmxpbmUgTGlu
ZUJveENvbnRhaW4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TGluZUJveENvbnRhaW4o
U3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBpZiAoaXM8Q1NTUHJpbWl0
aXZlVmFsdWU+KHZhbHVlKSkgewotICAgICAgICBBU1NFUlQoZG93bmNhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWU+KHZhbHVlKS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKTsKKyAgICAgICAgQVNT
RVJUKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkudmFsdWVJRCgpID09IENTU1Zh
bHVlTm9uZSk7CiAgICAgICAgIHJldHVybiBMaW5lQm94Q29udGFpbk5vbmU7CiAgICAgfQogCkBA
IC03MDQsNyArNzA0LDcgQEAgaW5saW5lIFRleHREZWNvcmF0aW9uU2tpcCBTdHlsZUJ1aWxkZXJD
b252ZXJ0ZXI6OnZhbHVlVG9EZWNvcmF0aW9uU2tpcChjb25zdCBDU1MKIHsKICAgICBBU1NFUlQo
cHJpbWl0aXZlVmFsdWUuaXNWYWx1ZUlEKCkpOwogCi0gICAgc3dpdGNoIChwcmltaXRpdmVWYWx1
ZS5nZXRWYWx1ZUlEKCkpIHsKKyAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSkg
ewogICAgIGNhc2UgQ1NTVmFsdWVBdXRvOgogICAgICAgICByZXR1cm4gVGV4dERlY29yYXRpb25T
a2lwQXV0bzsKICAgICBjYXNlIENTU1ZhbHVlTm9uZToKQEAgLTc0MSw3ICs3NDEsNyBAQCBzdGF0
aWMgaW5saW5lIGJvb2wgaXNJbWFnZVNoYXBlKGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIGlubGlu
ZSBQYXNzUmVmUHRyPFNoYXBlVmFsdWU+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFNo
YXBlVmFsdWUoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHZhbHVlKQog
ewogICAgIGlmIChpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKSB7Ci0gICAgICAgIEFTU0VS
VChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLmdldFZhbHVlSUQoKSA9PSBDU1NW
YWx1ZU5vbmUpOworICAgICAgICBBU1NFUlQoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZh
bHVlKS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQogCkBAIC03NTMsMTEgKzc1MywxMSBAQCBpbmxpbmUgUGFzc1JlZlB0cjxTaGFwZVZh
bHVlPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTaGFwZVZhbHVlKFN0eWxlUmVzbwog
ICAgIGZvciAoYXV0byYgY3VycmVudFZhbHVlIDogZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pih2YWx1
ZSkpIHsKICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUmIHByaW1pdGl2ZVZhbHVlID0gZG93bmNh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGN1cnJlbnRWYWx1ZS5nZXQoKSk7CiAgICAgICAgIGlmIChw
cmltaXRpdmVWYWx1ZS5pc1NoYXBlKCkpCi0gICAgICAgICAgICBzaGFwZSA9IGJhc2ljU2hhcGVG
b3JWYWx1ZShzdHlsZVJlc29sdmVyLnN0YXRlKCkuY3NzVG9MZW5ndGhDb252ZXJzaW9uRGF0YSgp
LCAqcHJpbWl0aXZlVmFsdWUuZ2V0U2hhcGVWYWx1ZSgpKTsKLSAgICAgICAgZWxzZSBpZiAocHJp
bWl0aXZlVmFsdWUuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlQ29udGVudEJveAotICAgICAgICAg
ICAgfHwgcHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlQm9yZGVyQm94Ci0g
ICAgICAgICAgICB8fCBwcmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVQYWRk
aW5nQm94Ci0gICAgICAgICAgICB8fCBwcmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NT
VmFsdWVNYXJnaW5Cb3gpCisgICAgICAgICAgICBzaGFwZSA9IGJhc2ljU2hhcGVGb3JWYWx1ZShz
dHlsZVJlc29sdmVyLnN0YXRlKCkuY3NzVG9MZW5ndGhDb252ZXJzaW9uRGF0YSgpLCAqcHJpbWl0
aXZlVmFsdWUuc2hhcGVWYWx1ZSgpKTsKKyAgICAgICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUu
dmFsdWVJRCgpID09IENTU1ZhbHVlQ29udGVudEJveAorICAgICAgICAgICAgfHwgcHJpbWl0aXZl
VmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlQm9yZGVyQm94CisgICAgICAgICAgICB8fCBwcmlt
aXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVQYWRkaW5nQm94CisgICAgICAgICAgICB8
fCBwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVNYXJnaW5Cb3gpCiAgICAgICAg
ICAgICByZWZlcmVuY2VCb3ggPSBwcmltaXRpdmVWYWx1ZTsKICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTc4NywxNCArNzg3LDE0IEBAIGlubGlu
ZSBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsU25hcFBvaW50cz4gU3R5bGVCdWlsZGVyQ29udmVydGVy
Ojpjb252ZXJ0U2Nyb2xsU25hCiAgICAgYXV0byBwb2ludHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNj
cm9sbFNuYXBQb2ludHM+KCk7CiAKICAgICBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVl
KSkgewotICAgICAgICBBU1NFUlQoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS5n
ZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVFbGVtZW50cyk7CisgICAgICAgIEFTU0VSVChkb3duY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUVsZW1lbnRz
KTsKICAgICAgICAgcG9pbnRzLT51c2VzRWxlbWVudHMgPSB0cnVlOwogICAgICAgICByZXR1cm4g
cG9pbnRzOwogICAgIH0KIAogICAgIGZvciAoYXV0byYgY3VycmVudFZhbHVlIDogZG93bmNhc3Q8
Q1NTVmFsdWVMaXN0Pih2YWx1ZSkpIHsKICAgICAgICAgYXV0byYgaXRlbVZhbHVlID0gZG93bmNh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGN1cnJlbnRWYWx1ZS5nZXQoKSk7Ci0gICAgICAgIGlmIChh
dXRvKiBsZW5ndGhSZXBlYXQgPSBpdGVtVmFsdWUuZ2V0TGVuZ3RoUmVwZWF0VmFsdWUoKSkgewor
ICAgICAgICBpZiAoYXV0byogbGVuZ3RoUmVwZWF0ID0gaXRlbVZhbHVlLmxlbmd0aFJlcGVhdFZh
bHVlKCkpIHsKICAgICAgICAgICAgIGlmIChhdXRvKiBpbnRlcnZhbCA9IGxlbmd0aFJlcGVhdC0+
aW50ZXJ2YWwoKSkgewogICAgICAgICAgICAgICAgIHBvaW50cy0+cmVwZWF0T2Zmc2V0ID0gcGFy
c2VTbmFwQ29vcmRpbmF0ZShzdHlsZVJlc29sdmVyLCAqaW50ZXJ2YWwpOwogICAgICAgICAgICAg
ICAgIHBvaW50cy0+aGFzUmVwZWF0ID0gdHJ1ZTsKQEAgLTgyOSwxNSArODI5LDE1IEBAIGlubGlu
ZSBWZWN0b3I8TGVuZ3RoU2l6ZT4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U2Nyb2xs
U25hcENvb3JkaW5hdGVzKFN0CiAjaWYgRU5BQkxFKENTU19HUklEX0xBWU9VVCkKIGlubGluZSBH
cmlkTGVuZ3RoIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y3JlYXRlR3JpZFRyYWNrQnJlYWR0aChD
U1NQcmltaXRpdmVWYWx1ZSYgcHJpbWl0aXZlVmFsdWUsIFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVz
b2x2ZXIpCiB7Ci0gICAgaWYgKHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1
ZVdlYmtpdE1pbkNvbnRlbnQpCisgICAgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBD
U1NWYWx1ZVdlYmtpdE1pbkNvbnRlbnQpCiAgICAgICAgIHJldHVybiBMZW5ndGgoTWluQ29udGVu
dCk7CiAKLSAgICBpZiAocHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlV2Vi
a2l0TWF4Q29udGVudCkKKyAgICBpZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1Zh
bHVlV2Via2l0TWF4Q29udGVudCkKICAgICAgICAgcmV0dXJuIExlbmd0aChNYXhDb250ZW50KTsK
IAogICAgIC8vIEZyYWN0aW9uYWwgdW5pdC4KICAgICBpZiAocHJpbWl0aXZlVmFsdWUuaXNGbGV4
KCkpCi0gICAgICAgIHJldHVybiBHcmlkTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLmdldERvdWJsZVZh
bHVlKCkpOworICAgICAgICByZXR1cm4gR3JpZExlbmd0aChwcmltaXRpdmVWYWx1ZS5kb3VibGVW
YWx1ZSgpKTsKIAogICAgIHJldHVybiBwcmltaXRpdmVWYWx1ZS5jb252ZXJ0VG9MZW5ndGg8Rml4
ZWRJbnRlZ2VyQ29udmVyc2lvbiB8IFBlcmNlbnRDb252ZXJzaW9uIHwgQ2FsY3VsYXRlZENvbnZl
cnNpb24gfCBBdXRvQ29udmVyc2lvbj4oc3R5bGVSZXNvbHZlci5zdGF0ZSgpLmNzc1RvTGVuZ3Ro
Q29udmVyc2lvbkRhdGEoKSk7CiB9CkBAIC04NjQsNyArODY0LDcgQEAgc3RhdGljIHZvaWQgY3Jl
YXRlR3JpZExpbmVOYW1lc0xpc3QoY29uc3QgQ1NTVmFsdWUmIHZhbHVlLCB1bnNpZ25lZCBjdXJy
ZW50TmFtZWQKICAgICBBU1NFUlQodmFsdWUuaXNHcmlkTGluZU5hbWVzVmFsdWUoKSk7CiAKICAg
ICBmb3IgKGF1dG8mIG5hbWVkR3JpZExpbmVWYWx1ZSA6IGRvd25jYXN0PENTU0dyaWRMaW5lTmFt
ZXNWYWx1ZT4odmFsdWUpKSB7Ci0gICAgICAgIFN0cmluZyBuYW1lZEdyaWRMaW5lID0gZG93bmNh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KG5hbWVkR3JpZExpbmVWYWx1ZS5nZXQoKSkuZ2V0U3RyaW5n
VmFsdWUoKTsKKyAgICAgICAgU3RyaW5nIG5hbWVkR3JpZExpbmUgPSBkb3duY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZT4obmFtZWRHcmlkTGluZVZhbHVlLmdldCgpKS5zdHJpbmdWYWx1ZSgpOwogICAg
ICAgICBhdXRvIHJlc3VsdCA9IG5hbWVkR3JpZExpbmVzLmFkZChuYW1lZEdyaWRMaW5lLCBWZWN0
b3I8dW5zaWduZWQ+KCkpOwogICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmFwcGVuZChj
dXJyZW50TmFtZWRHcmlkTGluZSk7CiAgICAgICAgIGF1dG8gb3JkZXJlZFJlc3VsdCA9IG9yZGVy
ZWROYW1lZEdyaWRMaW5lcy5hZGQoY3VycmVudE5hbWVkR3JpZExpbmUsIFZlY3RvcjxTdHJpbmc+
KCkpOwpAQCAtODkxLDcgKzg5MSw3IEBAIGlubGluZSBib29sIFN0eWxlQnVpbGRlckNvbnZlcnRl
cjo6Y3JlYXRlR3JpZFRyYWNrTGlzdChDU1NWYWx1ZSYgdmFsdWUsIFRyYWNrc0RhCiB7CiAgICAg
Ly8gSGFuZGxlICdub25lJy4KICAgICBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSkK
LSAgICAgICAgcmV0dXJuIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkuZ2V0VmFs
dWVJRCgpID09IENTU1ZhbHVlTm9uZTsKKyAgICAgICAgcmV0dXJuIGRvd25jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlPih2YWx1ZSkudmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZTsKIAogICAgIGlmICgh
aXM8Q1NTVmFsdWVMaXN0Pih2YWx1ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTkzOSwx
MSArOTM5LDExIEBAIGlubGluZSBib29sIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y3JlYXRlR3Jp
ZFBvc2l0aW9uKENTU1ZhbHVlJiB2YWx1ZSwgR3JpZFBvc2l0CiAgICAgICAgIGF1dG8mIHByaW1p
dGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKICAgICAgICAg
Ly8gV2UgdHJhbnNsYXRlIDxpZGVudD4gdG8gPHN0cmluZz4gZHVyaW5nIHBhcnNpbmcgYXMgaXQg
bWFrZXMgaGFuZGxpbmcgaXQgc2ltcGxlci4KICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLmlz
U3RyaW5nKCkpIHsKLSAgICAgICAgICAgIHBvc2l0aW9uLnNldE5hbWVkR3JpZEFyZWEocHJpbWl0
aXZlVmFsdWUuZ2V0U3RyaW5nVmFsdWUoKSk7CisgICAgICAgICAgICBwb3NpdGlvbi5zZXROYW1l
ZEdyaWRBcmVhKHByaW1pdGl2ZVZhbHVlLnN0cmluZ1ZhbHVlKCkpOwogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgIH0KIAotICAgICAgICBBU1NFUlQocHJpbWl0aXZlVmFsdWUuZ2V0
VmFsdWVJRCgpID09IENTU1ZhbHVlQXV0byk7CisgICAgICAgIEFTU0VSVChwcmltaXRpdmVWYWx1
ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVBdXRvKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogCkBAIC05NTMsNyArOTUzLDcgQEAgaW5saW5lIGJvb2wgU3R5bGVCdWlsZGVyQ29udmVydGVy
OjpjcmVhdGVHcmlkUG9zaXRpb24oQ1NTVmFsdWUmIHZhbHVlLCBHcmlkUG9zaXQKICAgICBhdXRv
IGl0ID0gdmFsdWVzLmJlZ2luKCk7CiAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGN1cnJlbnRWYWx1
ZSA9ICZkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oaXQtPmdldCgpKTsKICAgICBib29sIGlz
U3BhblBvc2l0aW9uID0gZmFsc2U7Ci0gICAgaWYgKGN1cnJlbnRWYWx1ZS0+Z2V0VmFsdWVJRCgp
ID09IENTU1ZhbHVlU3BhbikgeworICAgIGlmIChjdXJyZW50VmFsdWUtPnZhbHVlSUQoKSA9PSBD
U1NWYWx1ZVNwYW4pIHsKICAgICAgICAgaXNTcGFuUG9zaXRpb24gPSB0cnVlOwogICAgICAgICAr
K2l0OwogICAgICAgICBjdXJyZW50VmFsdWUgPSBpdCAhPSB2YWx1ZXMuZW5kKCkgPyAmZG93bmNh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGl0LT5nZXQoKSkgOiBudWxscHRyOwpAQCAtOTYxLDE0ICs5
NjEsMTQgQEAgaW5saW5lIGJvb2wgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjcmVhdGVHcmlkUG9z
aXRpb24oQ1NTVmFsdWUmIHZhbHVlLCBHcmlkUG9zaXQKIAogICAgIGludCBncmlkTGluZU51bWJl
ciA9IDA7CiAgICAgaWYgKGN1cnJlbnRWYWx1ZSAmJiBjdXJyZW50VmFsdWUtPmlzTnVtYmVyKCkp
IHsKLSAgICAgICAgZ3JpZExpbmVOdW1iZXIgPSBjdXJyZW50VmFsdWUtPmdldEludFZhbHVlKCk7
CisgICAgICAgIGdyaWRMaW5lTnVtYmVyID0gY3VycmVudFZhbHVlLT5pbnRWYWx1ZSgpOwogICAg
ICAgICArK2l0OwogICAgICAgICBjdXJyZW50VmFsdWUgPSBpdCAhPSB2YWx1ZXMuZW5kKCkgPyAm
ZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGl0LT5nZXQoKSkgOiBudWxscHRyOwogICAgIH0K
IAogICAgIFN0cmluZyBncmlkTGluZU5hbWU7CiAgICAgaWYgKGN1cnJlbnRWYWx1ZSAmJiBjdXJy
ZW50VmFsdWUtPmlzU3RyaW5nKCkpIHsKLSAgICAgICAgZ3JpZExpbmVOYW1lID0gY3VycmVudFZh
bHVlLT5nZXRTdHJpbmdWYWx1ZSgpOworICAgICAgICBncmlkTGluZU5hbWUgPSBjdXJyZW50VmFs
dWUtPnN0cmluZ1ZhbHVlKCk7CiAgICAgICAgICsraXQ7CiAgICAgfQogCkBAIC0xMDM1LDE1ICsx
MDM1LDE1IEBAIGlubGluZSBHcmlkQXV0b0Zsb3cgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252
ZXJ0R3JpZEF1dG9GbG93KFN0eWxlUmVzb2x2ZXImLCBDCiAgICAgYXV0byogc2Vjb25kID0gZG93
bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGxpc3QuaXRlbSgxKSk7CiAKICAgICBHcmlkQXV0b0Zs
b3cgYXV0b0Zsb3cgPSBSZW5kZXJTdHlsZTo6aW5pdGlhbEdyaWRBdXRvRmxvdygpOwotICAgIHN3
aXRjaCAoZmlyc3QuZ2V0VmFsdWVJRCgpKSB7CisgICAgc3dpdGNoIChmaXJzdC52YWx1ZUlEKCkp
IHsKICAgICBjYXNlIENTU1ZhbHVlUm93OgotICAgICAgICBpZiAoc2Vjb25kICYmIHNlY29uZC0+
Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlRGVuc2UpCisgICAgICAgIGlmIChzZWNvbmQgJiYgc2Vj
b25kLT52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVEZW5zZSkKICAgICAgICAgICAgIGF1dG9GbG93ID0g
IEF1dG9GbG93Um93RGVuc2U7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGF1dG9GbG93ID0g
QXV0b0Zsb3dSb3c7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTVmFsdWVDb2x1bW46Ci0g
ICAgICAgIGlmIChzZWNvbmQgJiYgc2Vjb25kLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVEZW5z
ZSkKKyAgICAgICAgaWYgKHNlY29uZCAmJiBzZWNvbmQtPnZhbHVlSUQoKSA9PSBDU1NWYWx1ZURl
bnNlKQogICAgICAgICAgICAgYXV0b0Zsb3cgPSBBdXRvRmxvd0NvbHVtbkRlbnNlOwogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBhdXRvRmxvdyA9IEF1dG9GbG93Q29sdW1uOwpAQCAtMTA3MCwx
NCArMTA3MCwxNCBAQCBpbmxpbmUgT3B0aW9uYWw8TGVuZ3RoPiBTdHlsZUJ1aWxkZXJDb252ZXJ0
ZXI6OmNvbnZlcnRXb3JkU3BhY2luZyhTdHlsZVJlc29sdmVyJgogewogICAgIE9wdGlvbmFsPExl
bmd0aD4gd29yZFNwYWNpbmc7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwotICAgIGlmIChwcmltaXRpdmVWYWx1ZS5nZXRWYWx1
ZUlEKCkgPT0gQ1NTVmFsdWVOb3JtYWwpCisgICAgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQo
KSA9PSBDU1NWYWx1ZU5vcm1hbCkKICAgICAgICAgd29yZFNwYWNpbmcgPSBSZW5kZXJTdHlsZTo6
aW5pdGlhbFdvcmRTcGFjaW5nKCk7CiAgICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUuaXNMZW5n
dGgoKSkKICAgICAgICAgd29yZFNwYWNpbmcgPSBwcmltaXRpdmVWYWx1ZS5jb21wdXRlTGVuZ3Ro
PExlbmd0aD4oY3NzdG9MZW5ndGhDb252ZXJzaW9uRGF0YVdpdGhUZXh0Wm9vbUZhY3RvcihzdHls
ZVJlc29sdmVyKSk7CiAgICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUuaXNQZXJjZW50YWdlKCkp
Ci0gICAgICAgIHdvcmRTcGFjaW5nID0gTGVuZ3RoKGNsYW1wVG88ZmxvYXQ+KHByaW1pdGl2ZVZh
bHVlLmdldERvdWJsZVZhbHVlKCksIG1pblZhbHVlRm9yQ3NzTGVuZ3RoLCBtYXhWYWx1ZUZvckNz
c0xlbmd0aCksIFBlcmNlbnQpOworICAgICAgICB3b3JkU3BhY2luZyA9IExlbmd0aChjbGFtcFRv
PGZsb2F0PihwcmltaXRpdmVWYWx1ZS5kb3VibGVWYWx1ZSgpLCBtaW5WYWx1ZUZvckNzc0xlbmd0
aCwgbWF4VmFsdWVGb3JDc3NMZW5ndGgpLCBQZXJjZW50KTsKICAgICBlbHNlIGlmIChwcmltaXRp
dmVWYWx1ZS5pc051bWJlcigpKQotICAgICAgICB3b3JkU3BhY2luZyA9IExlbmd0aChwcmltaXRp
dmVWYWx1ZS5nZXREb3VibGVWYWx1ZSgpLCBGaXhlZCk7CisgICAgICAgIHdvcmRTcGFjaW5nID0g
TGVuZ3RoKHByaW1pdGl2ZVZhbHVlLmRvdWJsZVZhbHVlKCksIEZpeGVkKTsKIAogICAgIHJldHVy
biB3b3JkU3BhY2luZzsKIH0KQEAgLTEwODUsMTQgKzEwODUsMTQgQEAgaW5saW5lIE9wdGlvbmFs
PExlbmd0aD4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0V29yZFNwYWNpbmcoU3R5bGVS
ZXNvbHZlciYKIGlubGluZSBPcHRpb25hbDxmbG9hdD4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpj
b252ZXJ0UGVyc3BlY3RpdmUoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUm
IHZhbHVlKQogewogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWU+KHZhbHVlKTsKLSAgICBpZiAocHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWVJRCgpID09
IENTU1ZhbHVlTm9uZSkKKyAgICBpZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1Zh
bHVlTm9uZSkKICAgICAgICAgcmV0dXJuIDAuZjsKIAogICAgIGZsb2F0IHBlcnNwZWN0aXZlID0g
LTE7CiAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLmlzTGVuZ3RoKCkpCiAgICAgICAgIHBlcnNwZWN0
aXZlID0gcHJpbWl0aXZlVmFsdWUuY29tcHV0ZUxlbmd0aDxmbG9hdD4oc3R5bGVSZXNvbHZlci5z
dGF0ZSgpLmNzc1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoKSk7CiAgICAgZWxzZSBpZiAocHJpbWl0
aXZlVmFsdWUuaXNOdW1iZXIoKSkKLSAgICAgICAgcGVyc3BlY3RpdmUgPSBwcmltaXRpdmVWYWx1
ZS5nZXREb3VibGVWYWx1ZSgpICogc3R5bGVSZXNvbHZlci5zdGF0ZSgpLmNzc1RvTGVuZ3RoQ29u
dmVyc2lvbkRhdGEoKS56b29tKCk7CisgICAgICAgIHBlcnNwZWN0aXZlID0gcHJpbWl0aXZlVmFs
dWUuZG91YmxlVmFsdWUoKSAqIHN0eWxlUmVzb2x2ZXIuc3RhdGUoKS5jc3NUb0xlbmd0aENvbnZl
cnNpb25EYXRhKCkuem9vbSgpOwogICAgIGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAKQEAgLTExMDMsNyArMTEwMyw3IEBAIGlubGluZSBPcHRpb25hbDxMZW5ndGg+IFN0eWxl
QnVpbGRlckNvbnZlcnRlcjo6Y29udmVydE1hcnF1ZWVJbmNyZW1lbnQoU3R5bGVSZXNvCiB7CiAg
ICAgT3B0aW9uYWw8TGVuZ3RoPiBtYXJxdWVlTGVuZ3RoOwogICAgIGF1dG8mIHByaW1pdGl2ZVZh
bHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKLSAgICBzd2l0Y2ggKHBy
aW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQoKSkgeworICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUu
dmFsdWVJRCgpKSB7CiAgICAgY2FzZSBDU1NWYWx1ZVNtYWxsOgogICAgICAgICBtYXJxdWVlTGVu
Z3RoID0gTGVuZ3RoKDEsIEZpeGVkKTsgLy8gMXB4LgogICAgICAgICBicmVhazsKQEAgLTExMzYs
NyArMTEzNiw3IEBAIGlubGluZSBPcHRpb25hbDxGaWx0ZXJPcGVyYXRpb25zPiBTdHlsZUJ1aWxk
ZXJDb252ZXJ0ZXI6OmNvbnZlcnRGaWx0ZXJPcGVyYXRpb25zCiBpbmxpbmUgRm9udEZlYXR1cmVT
ZXR0aW5ncyBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRGb250RmVhdHVyZVNldHRpbmdz
KFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgaWYgKGlzPENTU1ByaW1p
dGl2ZVZhbHVlPih2YWx1ZSkpIHsKLSAgICAgICAgQVNTRVJUKGRvd25jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlPih2YWx1ZSkuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlTm9ybWFsKTsKKyAgICAgICAg
QVNTRVJUKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkudmFsdWVJRCgpID09IENT
U1ZhbHVlTm9ybWFsKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKQEAgLTExNTIsNyAr
MTE1Miw3IEBAIGlubGluZSBGb250RmVhdHVyZVNldHRpbmdzIFN0eWxlQnVpbGRlckNvbnZlcnRl
cjo6Y29udmVydEZvbnRGZWF0dXJlU2V0dGluZ3MoU3R5CiBpbmxpbmUgRm9udFZhcmlhdGlvblNl
dHRpbmdzIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEZvbnRWYXJpYXRpb25TZXR0aW5n
cyhTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGlmIChpczxDU1NQcmlt
aXRpdmVWYWx1ZT4odmFsdWUpKSB7Ci0gICAgICAgIEFTU0VSVChkb3duY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZT4odmFsdWUpLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vcm1hbCk7CisgICAgICAg
IEFTU0VSVChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLnZhbHVlSUQoKSA9PSBD
U1NWYWx1ZU5vcm1hbCk7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCkBAIC0xMTY4LDcg
KzExNjgsNyBAQCBpbmxpbmUgRm9udFZhcmlhdGlvblNldHRpbmdzIFN0eWxlQnVpbGRlckNvbnZl
cnRlcjo6Y29udmVydEZvbnRWYXJpYXRpb25TZXR0aW5ncwogI2lmIFBMQVRGT1JNKElPUykKIGlu
bGluZSBib29sIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRvdWNoQ2FsbG91dChTdHls
ZVJlc29sdmVyJiwgQ1NTVmFsdWUmIHZhbHVlKQogewotICAgIHJldHVybiAhZXF1YWxMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2UoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS5nZXRT
dHJpbmdWYWx1ZSgpLCAibm9uZSIpOworICAgIHJldHVybiAhZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS5zdHJpbmdWYWx1ZSgp
LCAibm9uZSIpOwogfQogI2VuZGlmCiAKQEAgLTExODIsNyArMTE4Miw3IEBAIGlubGluZSBDb2xv
ciBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUYXBIaWdobGlnaHRDb2xvcihTdHlsZVJl
c29sdmVyJiBzdHlsCiAjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORykK
IGlubGluZSBib29sIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydE92ZXJmbG93U2Nyb2xs
aW5nKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIGRvd25j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlVG91
Y2g7CisgICAgcmV0dXJuIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkudmFsdWVJ
RCgpID09IENTU1ZhbHVlVG91Y2g7CiB9CiAjZW5kaWYKIApAQCAtMTIwNiw3ICsxMjA2LDcgQEAg
aW5saW5lIFZlY3RvcjxTVkdMZW5ndGg+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFNW
R0xlbmd0aFZlY3RvcihTdHlsZVJlc28KIGlubGluZSBWZWN0b3I8U1ZHTGVuZ3RoPiBTdHlsZUJ1
aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTdHJva2VEYXNoQXJyYXkoU3R5bGVSZXNvbHZlciYgc3R5
bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGlmIChpczxDU1NQcmltaXRpdmVW
YWx1ZT4odmFsdWUpKSB7Ci0gICAgICAgIEFTU0VSVChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZT4odmFsdWUpLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUpOworICAgICAgICBBU1NFUlQo
ZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVO
b25lKTsKICAgICAgICAgcmV0dXJuIFNWR1JlbmRlclN0eWxlOjppbml0aWFsU3Ryb2tlRGFzaEFy
cmF5KCk7CiAgICAgfQogCkBAIC0xMjE2LDEyICsxMjE2LDEyIEBAIGlubGluZSBWZWN0b3I8U1ZH
TGVuZ3RoPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTdHJva2VEYXNoQXJyYXkoU3R5
bGVSZXNvCiBpbmxpbmUgUGFpbnRPcmRlciBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRQ
YWludE9yZGVyKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgaWYgKGlz
PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpIHsKLSAgICAgICAgQVNTRVJUKGRvd25jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlTm9ybWFsKTsK
KyAgICAgICAgQVNTRVJUKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkudmFsdWVJ
RCgpID09IENTU1ZhbHVlTm9ybWFsKTsKICAgICAgICAgcmV0dXJuIFBhaW50T3JkZXJOb3JtYWw7
CiAgICAgfQogCiAgICAgYXV0byYgb3JkZXJUeXBlTGlzdCA9IGRvd25jYXN0PENTU1ZhbHVlTGlz
dD4odmFsdWUpOwotICAgIHN3aXRjaCAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCpvcmRl
clR5cGVMaXN0Lml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMCkpLmdldFZhbHVlSUQoKSkgeworICAg
IHN3aXRjaCAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCpvcmRlclR5cGVMaXN0Lml0ZW1X
aXRob3V0Qm91bmRzQ2hlY2soMCkpLnZhbHVlSUQoKSkgewogICAgIGNhc2UgQ1NTVmFsdWVGaWxs
OgogICAgICAgICByZXR1cm4gb3JkZXJUeXBlTGlzdC5sZW5ndGgoKSA+IDEgPyBQYWludE9yZGVy
RmlsbE1hcmtlcnMgOiBQYWludE9yZGVyRmlsbDsKICAgICBjYXNlIENTU1ZhbHVlU3Ryb2tlOgpA
QCAtMTIzNyw3ICsxMjM3LDcgQEAgaW5saW5lIFBhaW50T3JkZXIgU3R5bGVCdWlsZGVyQ29udmVy
dGVyOjpjb252ZXJ0UGFpbnRPcmRlcihTdHlsZVJlc29sdmVyJiwgQ1NTVmEKIGlubGluZSBmbG9h
dCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRPcGFjaXR5KFN0eWxlUmVzb2x2ZXImLCBD
U1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwotICAgIGZsb2F0IG9wYWNpdHkgPSBwcmltaXRpdmVW
YWx1ZS5nZXRGbG9hdFZhbHVlKCk7CisgICAgZmxvYXQgb3BhY2l0eSA9IHByaW1pdGl2ZVZhbHVl
LmZsb2F0VmFsdWUoKTsKICAgICBpZiAocHJpbWl0aXZlVmFsdWUuaXNQZXJjZW50YWdlKCkpCiAg
ICAgICAgIG9wYWNpdHkgLz0gMTAwLjBmOwogICAgIHJldHVybiBvcGFjaXR5OwpAQCAtMTI0OCw3
ICsxMjQ4LDcgQEAgaW5saW5lIFN0cmluZyBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRT
VkdVUklSZWZlcmVuY2UoU3R5bGVSZXNvbHZlciYgc3R5bGUKICAgICBTdHJpbmcgczsKICAgICBh
dXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7
CiAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLmlzVVJJKCkpCi0gICAgICAgIHMgPSBwcmltaXRpdmVW
YWx1ZS5nZXRTdHJpbmdWYWx1ZSgpOworICAgICAgICBzID0gcHJpbWl0aXZlVmFsdWUuc3RyaW5n
VmFsdWUoKTsKIAogICAgIHJldHVybiBTVkdVUklSZWZlcmVuY2U6OmZyYWdtZW50SWRlbnRpZmll
ckZyb21JUklTdHJpbmcocywgc3R5bGVSZXNvbHZlci5kb2N1bWVudCgpKTsKIH0KQEAgLTEyNjMs
OCArMTI2Myw4IEBAIGlubGluZSBTdHlsZVNlbGZBbGlnbm1lbnREYXRhIFN0eWxlQnVpbGRlckNv
bnZlcnRlcjo6Y29udmVydFNlbGZPckRlZmF1bHRBbGlnbm1lCiB7CiAgICAgU3R5bGVTZWxmQWxp
Z25tZW50RGF0YSBhbGlnbm1lbnREYXRhID0gUmVuZGVyU3R5bGU6OmluaXRpYWxTZWxmQWxpZ25t
ZW50KCk7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZT4odmFsdWUpOwotICAgIGlmIChQYWlyKiBwYWlyVmFsdWUgPSBwcmltaXRpdmVWYWx1ZS5n
ZXRQYWlyVmFsdWUoKSkgewotICAgICAgICBpZiAocGFpclZhbHVlLT5maXJzdCgpLT5nZXRWYWx1
ZUlEKCkgPT0gQ1NTVmFsdWVMZWdhY3kpIHsKKyAgICBpZiAoUGFpciogcGFpclZhbHVlID0gcHJp
bWl0aXZlVmFsdWUucGFpclZhbHVlKCkpIHsKKyAgICAgICAgaWYgKHBhaXJWYWx1ZS0+Zmlyc3Qo
KS0+dmFsdWVJRCgpID09IENTU1ZhbHVlTGVnYWN5KSB7CiAgICAgICAgICAgICBhbGlnbm1lbnRE
YXRhLnNldFBvc2l0aW9uVHlwZShMZWdhY3lQb3NpdGlvbik7CiAgICAgICAgICAgICBhbGlnbm1l
bnREYXRhLnNldFBvc2l0aW9uKCpwYWlyVmFsdWUtPnNlY29uZCgpKTsKICAgICAgICAgfSBlbHNl
IHsKQEAgLTEyODIsMTcgKzEyODIsMTcgQEAgaW5saW5lIFN0eWxlQ29udGVudEFsaWdubWVudERh
dGEgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Q29udGVudEFsaWdubWVudEQKICNpZiBF
TkFCTEUoQ1NTX0dSSURfTEFZT1VUKQogICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpz
aGFyZWRGZWF0dXJlcygpLmlzQ1NTR3JpZExheW91dEVuYWJsZWQoKSkgewogICAgICAgICBhdXRv
JiBjb250ZW50VmFsdWUgPSBkb3duY2FzdDxDU1NDb250ZW50RGlzdHJpYnV0aW9uVmFsdWU+KHZh
bHVlKTsKLSAgICAgICAgaWYgKGNvbnRlbnRWYWx1ZS5kaXN0cmlidXRpb24oKS0+Z2V0VmFsdWVJ
RCgpICE9IENTU1ZhbHVlSW52YWxpZCkKKyAgICAgICAgaWYgKGNvbnRlbnRWYWx1ZS5kaXN0cmli
dXRpb24oKS0+dmFsdWVJRCgpICE9IENTU1ZhbHVlSW52YWxpZCkKICAgICAgICAgICAgIGFsaWdu
bWVudERhdGEuc2V0RGlzdHJpYnV0aW9uKGNvbnRlbnRWYWx1ZS5kaXN0cmlidXRpb24oKS5nZXQo
KSk7Ci0gICAgICAgIGlmIChjb250ZW50VmFsdWUucG9zaXRpb24oKS0+Z2V0VmFsdWVJRCgpICE9
IENTU1ZhbHVlSW52YWxpZCkKKyAgICAgICAgaWYgKGNvbnRlbnRWYWx1ZS5wb3NpdGlvbigpLT52
YWx1ZUlEKCkgIT0gQ1NTVmFsdWVJbnZhbGlkKQogICAgICAgICAgICAgYWxpZ25tZW50RGF0YS5z
ZXRQb3NpdGlvbihjb250ZW50VmFsdWUucG9zaXRpb24oKS5nZXQoKSk7Ci0gICAgICAgIGlmIChj
b250ZW50VmFsdWUub3ZlcmZsb3coKS0+Z2V0VmFsdWVJRCgpICE9IENTU1ZhbHVlSW52YWxpZCkK
KyAgICAgICAgaWYgKGNvbnRlbnRWYWx1ZS5vdmVyZmxvdygpLT52YWx1ZUlEKCkgIT0gQ1NTVmFs
dWVJbnZhbGlkKQogICAgICAgICAgICAgYWxpZ25tZW50RGF0YS5zZXRPdmVyZmxvdyhjb250ZW50
VmFsdWUub3ZlcmZsb3coKS5nZXQoKSk7CiAgICAgICAgIHJldHVybiBhbGlnbm1lbnREYXRhOwog
ICAgIH0KICNlbmRpZgogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWU+KHZhbHVlKTsKLSAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLmdldFZhbHVl
SUQoKSkgeworICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpKSB7CiAgICAgY2Fz
ZSBDU1NWYWx1ZVN0cmV0Y2g6CiAgICAgY2FzZSBDU1NWYWx1ZVNwYWNlQmV0d2VlbjoKICAgICBj
YXNlIENTU1ZhbHVlU3BhY2VBcm91bmQ6CkBAIC0xMzExLDcgKzEzMTEsNyBAQCBpbmxpbmUgU3R5
bGVDb250ZW50QWxpZ25tZW50RGF0YSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRDb250
ZW50QWxpZ25tZW50RAogCiBpbmxpbmUgRUdseXBoT3JpZW50YXRpb24gU3R5bGVCdWlsZGVyQ29u
dmVydGVyOjpjb252ZXJ0R2x5cGhPcmllbnRhdGlvbihTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUm
IHZhbHVlKQogewotICAgIGZsb2F0IGFuZ2xlID0gZmFic2YoZm1vZGYoZG93bmNhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWU+KHZhbHVlKS5nZXRGbG9hdFZhbHVlKCksIDM2MC4wZikpOworICAgIGZsb2F0
IGFuZ2xlID0gZmFic2YoZm1vZGYoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS5m
bG9hdFZhbHVlKCksIDM2MC4wZikpOwogICAgIGlmIChhbmdsZSA8PSA0NS4wZiB8fCBhbmdsZSA+
IDMxNS4wZikKICAgICAgICAgcmV0dXJuIEdPXzBERUc7CiAgICAgaWYgKGFuZ2xlID4gNDUuMGYg
JiYgYW5nbGUgPD0gMTM1LjBmKQpAQCAtMTMyMyw3ICsxMzIzLDcgQEAgaW5saW5lIEVHbHlwaE9y
aWVudGF0aW9uIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEdseXBoT3JpZW50YXRpb24o
U3R5bGVSZXMKIAogaW5saW5lIEVHbHlwaE9yaWVudGF0aW9uIFN0eWxlQnVpbGRlckNvbnZlcnRl
cjo6Y29udmVydEdseXBoT3JpZW50YXRpb25PckF1dG8oU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNv
bHZlciwgQ1NTVmFsdWUmIHZhbHVlKQogewotICAgIGlmIChkb3duY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZT4odmFsdWUpLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZUF1dG8pCisgICAgaWYgKGRvd25j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkudmFsdWVJRCgpID09IENTU1ZhbHVlQXV0bykK
ICAgICAgICAgcmV0dXJuIEdPX0FVVE87CiAgICAgcmV0dXJuIGNvbnZlcnRHbHlwaE9yaWVudGF0
aW9uKHN0eWxlUmVzb2x2ZXIsIHZhbHVlKTsKIH0KQEAgLTEzMzEsNyArMTMzMSw3IEBAIGlubGlu
ZSBFR2x5cGhPcmllbnRhdGlvbiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRHbHlwaE9y
aWVudGF0aW9uT3JBdXRvKFN0CiBpbmxpbmUgT3B0aW9uYWw8TGVuZ3RoPiBTdHlsZUJ1aWxkZXJD
b252ZXJ0ZXI6OmNvbnZlcnRMaW5lSGVpZ2h0KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIs
IENTU1ZhbHVlJiB2YWx1ZSwgZmxvYXQgbXVsdGlwbGllcikKIHsKICAgICBhdXRvJiBwcmltaXRp
dmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7Ci0gICAgaWYgKHBy
aW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vcm1hbCkKKyAgICBpZiAocHJp
bWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlTm9ybWFsKQogICAgICAgICByZXR1cm4g
UmVuZGVyU3R5bGU6OmluaXRpYWxMaW5lSGVpZ2h0KCk7CiAKICAgICBpZiAocHJpbWl0aXZlVmFs
dWUuaXNMZW5ndGgoKSkgewpAQCAtMTM0MiwxMSArMTM0MiwxMSBAQCBpbmxpbmUgT3B0aW9uYWw8
TGVuZ3RoPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMaW5lSGVpZ2h0KFN0eWxlUmVz
b2x2ZXImCiAgICAgfQogICAgIGlmIChwcmltaXRpdmVWYWx1ZS5pc1BlcmNlbnRhZ2UoKSkgewog
ICAgICAgICAvLyBGSVhNRTogcGVyY2VudGFnZSBzaG91bGQgbm90IGJlIHJlc3RyaWN0ZWQgdG8g
YW4gaW50ZWdlciBoZXJlLgotICAgICAgICByZXR1cm4gTGVuZ3RoKChzdHlsZVJlc29sdmVyLnN0
eWxlKCktPmNvbXB1dGVkRm9udFNpemUoKSAqIHByaW1pdGl2ZVZhbHVlLmdldEludFZhbHVlKCkp
IC8gMTAwLCBGaXhlZCk7CisgICAgICAgIHJldHVybiBMZW5ndGgoKHN0eWxlUmVzb2x2ZXIuc3R5
bGUoKS0+Y29tcHV0ZWRGb250U2l6ZSgpICogcHJpbWl0aXZlVmFsdWUuaW50VmFsdWUoKSkgLyAx
MDAsIEZpeGVkKTsKICAgICB9CiAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLmlzTnVtYmVyKCkpIHsK
ICAgICAgICAgLy8gRklYTUU6IG51bWJlciBhbmQgcGVyY2VudGFnZSB2YWx1ZXMgc2hvdWxkIHBy
b2R1Y2UgdGhlIHNhbWUgdHlwZSBvZiBMZW5ndGggKGllLiBGaXhlZCBvciBQZXJjZW50KS4KLSAg
ICAgICAgcmV0dXJuIExlbmd0aChwcmltaXRpdmVWYWx1ZS5nZXREb3VibGVWYWx1ZSgpICogbXVs
dGlwbGllciAqIDEwMC4wLCBQZXJjZW50KTsKKyAgICAgICAgcmV0dXJuIExlbmd0aChwcmltaXRp
dmVWYWx1ZS5kb3VibGVWYWx1ZSgpICogbXVsdGlwbGllciAqIDEwMC4wLCBQZXJjZW50KTsKICAg
ICB9CiAgICAgcmV0dXJuIE51bGxvcHQ7CiB9CkBAIC0xMzU0LDE0ICsxMzU0LDE0IEBAIGlubGlu
ZSBPcHRpb25hbDxMZW5ndGg+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydExpbmVIZWln
aHQoU3R5bGVSZXNvbHZlciYKIEZvbnRTeW50aGVzaXMgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpj
b252ZXJ0Rm9udFN5bnRoZXNpcyhTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmIHZhbHVlKQogewog
ICAgIGlmIChpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKSB7Ci0gICAgICAgIEFTU0VSVChk
b3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1
ZU5vbmUpOworICAgICAgICBBU1NFUlQoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVl
KS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKTsKICAgICAgICAgcmV0dXJuIEZvbnRTeW50aGVz
aXNOb25lOwogICAgIH0KIAogICAgIEZvbnRTeW50aGVzaXMgcmVzdWx0ID0gRm9udFN5bnRoZXNp
c05vbmU7CiAgICAgQVNTRVJUKGlzPENTU1ZhbHVlTGlzdD4odmFsdWUpKTsKICAgICBmb3IgKENT
U1ZhbHVlJiB2IDogZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pih2YWx1ZSkpIHsKLSAgICAgICAgc3dp
dGNoIChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odikuZ2V0VmFsdWVJRCgpKSB7CisgICAg
ICAgIHN3aXRjaCAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHYpLnZhbHVlSUQoKSkgewog
ICAgICAgICBjYXNlIENTU1ZhbHVlV2VpZ2h0OgogICAgICAgICAgICAgcmVzdWx0IHw9IEZvbnRT
eW50aGVzaXNXZWlnaHQ7CiAgICAgICAgICAgICBicmVhazsKQEAgLTEzODAsOSArMTM4MCw5IEBA
IEZvbnRTeW50aGVzaXMgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Rm9udFN5bnRoZXNp
cyhTdHlsZVJlc29sdmVyJiwgQ1NTVmFsCiBpbmxpbmUgQnJlYWtCZXR3ZWVuIFN0eWxlQnVpbGRl
ckNvbnZlcnRlcjo6Y29udmVydFBhZ2VCcmVha0JldHdlZW4oU3R5bGVSZXNvbHZlciYsIENTU1Zh
bHVlJiB2YWx1ZSkKIHsKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1By
aW1pdGl2ZVZhbHVlPih2YWx1ZSk7Ci0gICAgaWYgKHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQo
KSA9PSBDU1NWYWx1ZUFsd2F5cykKKyAgICBpZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09
IENTU1ZhbHVlQWx3YXlzKQogICAgICAgICByZXR1cm4gUGFnZUJyZWFrQmV0d2VlbjsKLSAgICBp
ZiAocHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlQXZvaWQpCisgICAgaWYg
KHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUF2b2lkKQogICAgICAgICByZXR1
cm4gQXZvaWRQYWdlQnJlYWtCZXR3ZWVuOwogICAgIHJldHVybiBwcmltaXRpdmVWYWx1ZTsKIH0K
QEAgLTEzOTAsNyArMTM5MCw3IEBAIGlubGluZSBCcmVha0JldHdlZW4gU3R5bGVCdWlsZGVyQ29u
dmVydGVyOjpjb252ZXJ0UGFnZUJyZWFrQmV0d2VlbihTdHlsZVJlc29sdmVyCiBpbmxpbmUgQnJl
YWtJbnNpZGUgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UGFnZUJyZWFrSW5zaWRlKFN0
eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFs
dWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwotICAgIGlmIChwcmltaXRp
dmVWYWx1ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVBdm9pZCkKKyAgICBpZiAocHJpbWl0aXZl
VmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlQXZvaWQpCiAgICAgICAgIHJldHVybiBBdm9pZFBh
Z2VCcmVha0luc2lkZTsKICAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWU7CiB9CkBAIC0xMzk4LDkg
KzEzOTgsOSBAQCBpbmxpbmUgQnJlYWtJbnNpZGUgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252
ZXJ0UGFnZUJyZWFrSW5zaWRlKFN0eWxlUmVzb2x2ZXImLAogaW5saW5lIEJyZWFrQmV0d2VlbiBT
dHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRDb2x1bW5CcmVha0JldHdlZW4oU3R5bGVSZXNv
bHZlciYsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRv
d25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7Ci0gICAgaWYgKHByaW1pdGl2ZVZhbHVl
LmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZUFsd2F5cykKKyAgICBpZiAocHJpbWl0aXZlVmFsdWUu
dmFsdWVJRCgpID09IENTU1ZhbHVlQWx3YXlzKQogICAgICAgICByZXR1cm4gQ29sdW1uQnJlYWtC
ZXR3ZWVuOwotICAgIGlmIChwcmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVB
dm9pZCkKKyAgICBpZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlQXZvaWQp
CiAgICAgICAgIHJldHVybiBBdm9pZENvbHVtbkJyZWFrQmV0d2VlbjsKICAgICByZXR1cm4gcHJp
bWl0aXZlVmFsdWU7CiB9CkBAIC0xNDA4LDcgKzE0MDgsNyBAQCBpbmxpbmUgQnJlYWtCZXR3ZWVu
IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydENvbHVtbkJyZWFrQmV0d2VlbihTdHlsZVJl
c29sdgogaW5saW5lIEJyZWFrSW5zaWRlIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydENv
bHVtbkJyZWFrSW5zaWRlKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAg
YXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUp
OwotICAgIGlmIChwcmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVBdm9pZCkK
KyAgICBpZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlQXZvaWQpCiAgICAg
ICAgIHJldHVybiBBdm9pZENvbHVtbkJyZWFrSW5zaWRlOwogICAgIHJldHVybiBwcmltaXRpdmVW
YWx1ZTsKIH0KQEAgLTE0MTcsOSArMTQxNyw5IEBAIGlubGluZSBCcmVha0luc2lkZSBTdHlsZUJ1
aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRDb2x1bW5CcmVha0luc2lkZShTdHlsZVJlc29sdmVyCiBp
bmxpbmUgQnJlYWtCZXR3ZWVuIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFJlZ2lvbkJy
ZWFrQmV0d2VlbihTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGF1dG8m
IHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKLSAg
ICBpZiAocHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlQWx3YXlzKQorICAg
IGlmIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVBbHdheXMpCiAgICAgICAg
IHJldHVybiBSZWdpb25CcmVha0JldHdlZW47Ci0gICAgaWYgKHByaW1pdGl2ZVZhbHVlLmdldFZh
bHVlSUQoKSA9PSBDU1NWYWx1ZUF2b2lkKQorICAgIGlmIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlE
KCkgPT0gQ1NTVmFsdWVBdm9pZCkKICAgICAgICAgcmV0dXJuIEF2b2lkUmVnaW9uQnJlYWtCZXR3
ZWVuOwogICAgIHJldHVybiBwcmltaXRpdmVWYWx1ZTsKIH0KQEAgLTE0MjcsNyArMTQyNyw3IEBA
IGlubGluZSBCcmVha0JldHdlZW4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UmVnaW9u
QnJlYWtCZXR3ZWVuKFN0eWxlUmVzb2x2CiBpbmxpbmUgQnJlYWtJbnNpZGUgU3R5bGVCdWlsZGVy
Q29udmVydGVyOjpjb252ZXJ0UmVnaW9uQnJlYWtJbnNpZGUoU3R5bGVSZXNvbHZlciYsIENTU1Zh
bHVlJiB2YWx1ZSkKIHsKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1By
aW1pdGl2ZVZhbHVlPih2YWx1ZSk7Ci0gICAgaWYgKHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQo
KSA9PSBDU1NWYWx1ZUF2b2lkKQorICAgIGlmIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0g
Q1NTVmFsdWVBdm9pZCkKICAgICAgICAgcmV0dXJuIEF2b2lkUmVnaW9uQnJlYWtJbnNpZGU7CiAg
ICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRl
ckN1c3RvbS5oCmluZGV4IGNhYWJmMzI1YzZjNWVkN2JhNTFkNzVhZDVjOGM4Y2IzOTMxOWI0Y2Qu
LjYwOWFhZDU1MmIxNjBlYTcxZDcyOWY3YWYxM2ZhYzMxYmIwYjA4NWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDdXN0b20uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmgKQEAgLTI0LDggKzI0LDcgQEAKICAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFN0eWxlQnVpbGRlckN1c3Rv
bV9oCi0jZGVmaW5lIFN0eWxlQnVpbGRlckN1c3RvbV9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1
ZGUgIkNTU0FzcGVjdFJhdGlvVmFsdWUuaCIKICNpbmNsdWRlICJDU1NDdXJzb3JJbWFnZVZhbHVl
LmgiCkBAIC0xOTQsMjMgKzE5MywyMyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206
OmFwcGx5VmFsdWVab29tKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTUwogewogICAg
IGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVl
KTsKIAotICAgIGlmIChwcmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb3Jt
YWwpIHsKKyAgICBpZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlTm9ybWFs
KSB7CiAgICAgICAgIHJlc2V0RWZmZWN0aXZlWm9vbShzdHlsZVJlc29sdmVyKTsKICAgICAgICAg
c3R5bGVSZXNvbHZlci5zZXRab29tKFJlbmRlclN0eWxlOjppbml0aWFsWm9vbSgpKTsKLSAgICB9
IGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZVJlc2V0KSB7
CisgICAgfSBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVSZXNl
dCkgewogICAgICAgICBzdHlsZVJlc29sdmVyLnNldEVmZmVjdGl2ZVpvb20oUmVuZGVyU3R5bGU6
OmluaXRpYWxab29tKCkpOwogICAgICAgICBzdHlsZVJlc29sdmVyLnNldFpvb20oUmVuZGVyU3R5
bGU6OmluaXRpYWxab29tKCkpOwotICAgIH0gZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUuZ2V0VmFs
dWVJRCgpID09IENTU1ZhbHVlRG9jdW1lbnQpIHsKKyAgICB9IGVsc2UgaWYgKHByaW1pdGl2ZVZh
bHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZURvY3VtZW50KSB7CiAgICAgICAgIGZsb2F0IGRvY1pv
b20gPSBzdHlsZVJlc29sdmVyLnJvb3RFbGVtZW50U3R5bGUoKSA/IHN0eWxlUmVzb2x2ZXIucm9v
dEVsZW1lbnRTdHlsZSgpLT56b29tKCkgOiBSZW5kZXJTdHlsZTo6aW5pdGlhbFpvb20oKTsKICAg
ICAgICAgc3R5bGVSZXNvbHZlci5zZXRFZmZlY3RpdmVab29tKGRvY1pvb20pOwogICAgICAgICBz
dHlsZVJlc29sdmVyLnNldFpvb20oZG9jWm9vbSk7CiAgICAgfSBlbHNlIGlmIChwcmltaXRpdmVW
YWx1ZS5pc1BlcmNlbnRhZ2UoKSkgewogICAgICAgICByZXNldEVmZmVjdGl2ZVpvb20oc3R5bGVS
ZXNvbHZlcik7Ci0gICAgICAgIGlmIChmbG9hdCBwZXJjZW50ID0gcHJpbWl0aXZlVmFsdWUuZ2V0
RmxvYXRWYWx1ZSgpKQorICAgICAgICBpZiAoZmxvYXQgcGVyY2VudCA9IHByaW1pdGl2ZVZhbHVl
LmZsb2F0VmFsdWUoKSkKICAgICAgICAgICAgIHN0eWxlUmVzb2x2ZXIuc2V0Wm9vbShwZXJjZW50
IC8gMTAwLjBmKTsKICAgICB9IGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLmlzTnVtYmVyKCkpIHsK
ICAgICAgICAgcmVzZXRFZmZlY3RpdmVab29tKHN0eWxlUmVzb2x2ZXIpOwotICAgICAgICBpZiAo
ZmxvYXQgbnVtYmVyID0gcHJpbWl0aXZlVmFsdWUuZ2V0RmxvYXRWYWx1ZSgpKQorICAgICAgICBp
ZiAoZmxvYXQgbnVtYmVyID0gcHJpbWl0aXZlVmFsdWUuZmxvYXRWYWx1ZSgpKQogICAgICAgICAg
ICAgc3R5bGVSZXNvbHZlci5zZXRab29tKG51bWJlcik7CiAgICAgfQogfQpAQCAtMjQ2LDcgKzI0
NSw3IEBAIGJvb2wgU3R5bGVCdWlsZGVyQ3VzdG9tOjpnZXRQYWdlU2l6ZUZyb21OYW1lKENTU1By
aW1pdGl2ZVZhbHVlKiBwYWdlU2l6ZU5hbWUsIENTCiAgICAgaWYgKCFwYWdlU2l6ZU5hbWUpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHN3aXRjaCAocGFnZVNpemVOYW1lLT5nZXRWYWx1
ZUlEKCkpIHsKKyAgICBzd2l0Y2ggKHBhZ2VTaXplTmFtZS0+dmFsdWVJRCgpKSB7CiAgICAgY2Fz
ZSBDU1NWYWx1ZUE1OgogICAgICAgICB3aWR0aCA9IGE1V2lkdGg7CiAgICAgICAgIGhlaWdodCA9
IGE1SGVpZ2h0OwpAQCAtMjg0LDcgKzI4Myw3IEBAIGJvb2wgU3R5bGVCdWlsZGVyQ3VzdG9tOjpn
ZXRQYWdlU2l6ZUZyb21OYW1lKENTU1ByaW1pdGl2ZVZhbHVlKiBwYWdlU2l6ZU5hbWUsIENTCiAg
ICAgfQogCiAgICAgaWYgKHBhZ2VPcmllbnRhdGlvbikgewotICAgICAgICBzd2l0Y2ggKHBhZ2VP
cmllbnRhdGlvbi0+Z2V0VmFsdWVJRCgpKSB7CisgICAgICAgIHN3aXRjaCAocGFnZU9yaWVudGF0
aW9uLT52YWx1ZUlEKCkpIHsKICAgICAgICAgY2FzZSBDU1NWYWx1ZUxhbmRzY2FwZToKICAgICAg
ICAgICAgIHN0ZDo6c3dhcCh3aWR0aCwgaGVpZ2h0KTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAt
MzAxLDcgKzMwMCw3IEBAIGJvb2wgU3R5bGVCdWlsZGVyQ3VzdG9tOjpnZXRQYWdlU2l6ZUZyb21O
YW1lKENTU1ByaW1pdGl2ZVZhbHVlKiBwYWdlU2l6ZU5hbWUsIENTCiBpbmxpbmUgdm9pZCBTdHls
ZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVWZXJ0aWNhbEFsaWduKFN0eWxlUmVzb2x2ZXImIHN0
eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1
ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7Ci0gICAgaWYgKHByaW1pdGl2
ZVZhbHVlLmdldFZhbHVlSUQoKSkKKyAgICBpZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpKQog
ICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldFZlcnRpY2FsQWxpZ24ocHJpbWl0aXZl
VmFsdWUpOwogICAgIGVsc2UKICAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRWZXJ0
aWNhbEFsaWduTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLmNvbnZlcnRUb0xlbmd0aDxGaXhlZEludGVn
ZXJDb252ZXJzaW9uIHwgUGVyY2VudENvbnZlcnNpb24gfCBDYWxjdWxhdGVkQ29udmVyc2lvbj4o
c3R5bGVSZXNvbHZlci5zdGF0ZSgpLmNzc1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoKSkpOwpAQCAt
MzE2LDEyICszMTUsMTIgQEAgc3RhdGljIExlbmd0aCBjb252ZXJ0VG9JbnRMZW5ndGgoY29uc3Qg
Q1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlLCBjb25zdAogaW5saW5lIHZvaWQgU3R5
bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlV2Via2l0RGFzaGJvYXJkUmVnaW9uKFN0eWxlUmVz
b2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBhdXRvJiBwcmlt
aXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7Ci0gICAgaWYg
KHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUpIHsKKyAgICBpZiAo
cHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZSkgewogICAgICAgICBzdHls
ZVJlc29sdmVyLnN0eWxlKCktPnNldERhc2hib2FyZFJlZ2lvbnMoUmVuZGVyU3R5bGU6Om5vbmVE
YXNoYm9hcmRSZWdpb25zKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgRGFzaGJv
YXJkUmVnaW9uKiByZWdpb24gPSBwcmltaXRpdmVWYWx1ZS5nZXREYXNoYm9hcmRSZWdpb25WYWx1
ZSgpOworICAgIGF1dG8qIHJlZ2lvbiA9IHByaW1pdGl2ZVZhbHVlLmRhc2hib2FyZFJlZ2lvblZh
bHVlKCk7CiAgICAgaWYgKCFyZWdpb24pCiAgICAgICAgIHJldHVybjsKIApAQCAtMzc0LDEyICsz
NzMsMTIgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlSW1hZ2VS
ZXNvbHV0aW9uKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmUKICAgICBkb3VibGUgcmVzb2x1dGlvbiA9
IFJlbmRlclN0eWxlOjppbml0aWFsSW1hZ2VSZXNvbHV0aW9uKCk7CiAgICAgZm9yIChhdXRvJiBp
dGVtIDogZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pih2YWx1ZSkpIHsKICAgICAgICAgQ1NTUHJpbWl0
aXZlVmFsdWUmIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGl0
ZW0uZ2V0KCkpOwotICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWVJRCgpID09IENT
U1ZhbHVlRnJvbUltYWdlKQorICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09
IENTU1ZhbHVlRnJvbUltYWdlKQogICAgICAgICAgICAgc291cmNlID0gSW1hZ2VSZXNvbHV0aW9u
RnJvbUltYWdlOwotICAgICAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkg
PT0gQ1NTVmFsdWVTbmFwKQorICAgICAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlE
KCkgPT0gQ1NTVmFsdWVTbmFwKQogICAgICAgICAgICAgc25hcCA9IEltYWdlUmVzb2x1dGlvblNu
YXBQaXhlbHM7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlc29sdXRpb24gPSBwcmltaXRp
dmVWYWx1ZS5nZXREb3VibGVWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RQUFgpOworICAg
ICAgICAgICAgcmVzb2x1dGlvbiA9IHByaW1pdGl2ZVZhbHVlLmRvdWJsZVZhbHVlKENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfRFBQWCk7CiAgICAgfQogICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+
c2V0SW1hZ2VSZXNvbHV0aW9uU291cmNlKHNvdXJjZSk7CiAgICAgc3R5bGVSZXNvbHZlci5zdHls
ZSgpLT5zZXRJbWFnZVJlc29sdXRpb25TbmFwKHNuYXApOwpAQCAtNDM1LDcgKzQzNCw3IEBAIGlu
bGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVNpemUoU3R5bGVSZXNvbHZl
ciYgc3R5bGVSZXNvbHZlciwgQ1NTCiAgICAgICAgICAgICBwYWdlU2l6ZVR5cGUgPSBQQUdFX1NJ
WkVfUkVTT0xWRUQ7CiAgICAgICAgICAgICB3aWR0aCA9IGhlaWdodCA9IHByaW1pdGl2ZVZhbHVl
LmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihzdHlsZVJlc29sdmVyLnN0YXRlKCkuY3NzVG9MZW5ndGhD
b252ZXJzaW9uRGF0YSgpLmNvcHlXaXRoQWRqdXN0ZWRab29tKDEuMGYpKTsKICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWVJRCgpKSB7
CisgICAgICAgICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSkgewogICAgICAg
ICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGNhc2Ug
Q1NTVmFsdWVBdXRvOgpAQCAtNDkwLDEyICs0ODksMTIgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWls
ZGVyQ3VzdG9tOjphcHBseVZhbHVlVGV4dEluZGVudChTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29s
dmUKICNlbmRpZgogICAgIGZvciAoYXV0byYgaXRlbSA6IGRvd25jYXN0PENTU1ZhbHVlTGlzdD4o
dmFsdWUpKSB7CiAgICAgICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWU+KGl0ZW0uZ2V0KCkpOwotICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlLmdl
dFZhbHVlSUQoKSkKKyAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkpCiAgICAg
ICAgICAgICBsZW5ndGhPclBlcmNlbnRhZ2VWYWx1ZSA9IHByaW1pdGl2ZVZhbHVlLmNvbnZlcnRU
b0xlbmd0aDxGaXhlZEludGVnZXJDb252ZXJzaW9uIHwgUGVyY2VudENvbnZlcnNpb24gfCBDYWxj
dWxhdGVkQ29udmVyc2lvbj4oc3R5bGVSZXNvbHZlci5zdGF0ZSgpLmNzc1RvTGVuZ3RoQ29udmVy
c2lvbkRhdGEoKSk7CiAjaWYgRU5BQkxFKENTUzNfVEVYVCkKLSAgICAgICAgZWxzZSBpZiAocHJp
bWl0aXZlVmFsdWUuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlV2Via2l0RWFjaExpbmUpCisgICAg
ICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZVdlYmtpdEVh
Y2hMaW5lKQogICAgICAgICAgICAgdGV4dEluZGVudExpbmVWYWx1ZSA9IFRleHRJbmRlbnRFYWNo
TGluZTsKLSAgICAgICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWVJRCgpID09IENT
U1ZhbHVlV2Via2l0SGFuZ2luZykKKyAgICAgICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUudmFs
dWVJRCgpID09IENTU1ZhbHVlV2Via2l0SGFuZ2luZykKICAgICAgICAgICAgIHRleHRJbmRlbnRU
eXBlVmFsdWUgPSBUZXh0SW5kZW50SGFuZ2luZzsKICNlbmRpZgogICAgIH0KQEAgLTY4MCw3ICs2
NzksNyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVDbGlwKFN0
eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTUwogewogICAgIGF1dG8mIHByaW1pdGl2ZVZh
bHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKIAotICAgIGlmIChSZWN0
KiByZWN0ID0gcHJpbWl0aXZlVmFsdWUuZ2V0UmVjdFZhbHVlKCkpIHsKKyAgICBpZiAoUmVjdCog
cmVjdCA9IHByaW1pdGl2ZVZhbHVlLnJlY3RWYWx1ZSgpKSB7CiAgICAgICAgIGF1dG8gY29udmVy
c2lvbkRhdGEgPSBzdHlsZVJlc29sdmVyLnN0YXRlKCkuY3NzVG9MZW5ndGhDb252ZXJzaW9uRGF0
YSgpOwogICAgICAgICBMZW5ndGggdG9wID0gcmVjdC0+dG9wKCktPmNvbnZlcnRUb0xlbmd0aDxG
aXhlZEludGVnZXJDb252ZXJzaW9uIHwgUGVyY2VudENvbnZlcnNpb24gfCBBdXRvQ29udmVyc2lv
bj4oY29udmVyc2lvbkRhdGEpOwogICAgICAgICBMZW5ndGggcmlnaHQgPSByZWN0LT5yaWdodCgp
LT5jb252ZXJ0VG9MZW5ndGg8Rml4ZWRJbnRlZ2VyQ29udmVyc2lvbiB8IFBlcmNlbnRDb252ZXJz
aW9uIHwgQXV0b0NvbnZlcnNpb24+KGNvbnZlcnNpb25EYXRhKTsKQEAgLTY4OSw3ICs2ODgsNyBA
QCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVDbGlwKFN0eWxlUmVz
b2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTUwogICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCkt
PnNldENsaXAodG9wLCByaWdodCwgYm90dG9tLCBsZWZ0KTsKICAgICAgICAgc3R5bGVSZXNvbHZl
ci5zdHlsZSgpLT5zZXRIYXNDbGlwKHRydWUpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIEFTU0VS
VChwcmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVBdXRvKTsKKyAgICAgICAg
QVNTRVJUKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUF1dG8pOwogICAgICAg
ICBhcHBseUluaXRpYWxDbGlwKHN0eWxlUmVzb2x2ZXIpOwogICAgIH0KIH0KQEAgLTY5OSwxMCAr
Njk4LDEwIEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVdlYmtp
dExvY2FsZShTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sCiAgICAgYXV0byYgcHJpbWl0aXZlVmFs
dWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwogCiAgICAgRm9udENhc2Nh
ZGVEZXNjcmlwdGlvbiBmb250RGVzY3JpcHRpb24gPSBzdHlsZVJlc29sdmVyLnN0eWxlKCktPmZv
bnREZXNjcmlwdGlvbigpOwotICAgIGlmIChwcmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkgPT0g
Q1NTVmFsdWVBdXRvKQorICAgIGlmIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFs
dWVBdXRvKQogICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0TG9jYWxlKG51bGxBdG9tKTsKICAg
ICBlbHNlCi0gICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRMb2NhbGUocHJpbWl0aXZlVmFsdWUu
Z2V0U3RyaW5nVmFsdWUoKSk7CisgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRMb2NhbGUocHJp
bWl0aXZlVmFsdWUuc3RyaW5nVmFsdWUoKSk7CiAgICAgc3R5bGVSZXNvbHZlci5zZXRGb250RGVz
Y3JpcHRpb24oZm9udERlc2NyaXB0aW9uKTsKIH0KIApAQCAtNzIxLDEyICs3MjAsMTIgQEAgaW5s
aW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlV2Via2l0VGV4dE9yaWVudGF0
aW9uKFN0eWxlUmVzb2x2ZXImIHMKIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBw
bHlWYWx1ZVdlYmtpdFRleHRTaXplQWRqdXN0KFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIs
IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7Ci0gICAgaWYgKHByaW1pdGl2ZVZhbHVlLmdldFZh
bHVlSUQoKSA9PSBDU1NWYWx1ZUF1dG8pCisgICAgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQo
KSA9PSBDU1NWYWx1ZUF1dG8pCiAgICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0VGV4
dFNpemVBZGp1c3QoVGV4dFNpemVBZGp1c3RtZW50KEF1dG9UZXh0U2l6ZUFkanVzdG1lbnQpKTsK
LSAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25l
KQorICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUp
CiAgICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0VGV4dFNpemVBZGp1c3QoVGV4dFNp
emVBZGp1c3RtZW50KE5vVGV4dFNpemVBZGp1c3RtZW50KSk7CiAgICAgZWxzZQotICAgICAgICBz
dHlsZVJlc29sdmVyLnN0eWxlKCktPnNldFRleHRTaXplQWRqdXN0KFRleHRTaXplQWRqdXN0bWVu
dChwcmltaXRpdmVWYWx1ZS5nZXRGbG9hdFZhbHVlKCkpKTsKKyAgICAgICAgc3R5bGVSZXNvbHZl
ci5zdHlsZSgpLT5zZXRUZXh0U2l6ZUFkanVzdChUZXh0U2l6ZUFkanVzdG1lbnQocHJpbWl0aXZl
VmFsdWUuZmxvYXRWYWx1ZSgpKSk7CiAKICAgICBzdHlsZVJlc29sdmVyLnN0YXRlKCkuc2V0Rm9u
dERpcnR5KHRydWUpOwogfQpAQCAtNzM1LDkgKzczNCw5IEBAIGlubGluZSB2b2lkIFN0eWxlQnVp
bGRlckN1c3RvbTo6YXBwbHlWYWx1ZVdlYmtpdFRleHRTaXplQWRqdXN0KFN0eWxlUmVzb2x2ZXIm
IHN0CiBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVXZWJraXRUZXh0
Wm9vbShTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAg
ICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFs
dWUpOwotICAgIGlmIChwcmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb3Jt
YWwpCisgICAgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vcm1hbCkK
ICAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRUZXh0Wm9vbShUZXh0Wm9vbU5vcm1h
bCk7Ci0gICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVl
UmVzZXQpCisgICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVl
UmVzZXQpCiAgICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0VGV4dFpvb20oVGV4dFpv
b21SZXNldCk7CiAgICAgc3R5bGVSZXNvbHZlci5zdGF0ZSgpLnNldEZvbnREaXJ0eSh0cnVlKTsK
IH0KQEAgLTc0Niw3ICs3NDUsNyBAQCB0ZW1wbGF0ZSA8Q1NTUHJvcGVydHlJRCBpZD4KIGlubGlu
ZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlUZXh0T3JCb3hTaGFkb3dWYWx1ZShTdHls
ZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgaWYgKGlz
PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpIHsKLSAgICAgICAgQVNTRVJUKGRvd25jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZSk7Cisg
ICAgICAgIEFTU0VSVChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLnZhbHVlSUQo
KSA9PSBDU1NWYWx1ZU5vbmUpOwogICAgICAgICBpZiAoaWQgPT0gQ1NTUHJvcGVydHlUZXh0U2hh
ZG93KQogICAgICAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRUZXh0U2hhZG93KG51
bGxwdHIpOwogICAgICAgICBlbHNlCkBAIC03NjIsNyArNzYxLDcgQEAgaW5saW5lIHZvaWQgU3R5
bGVCdWlsZGVyQ3VzdG9tOjphcHBseVRleHRPckJveFNoYWRvd1ZhbHVlKFN0eWxlUmVzb2x2ZXIm
IHN0eWxlUmUKICAgICAgICAgaW50IHkgPSBzaGFkb3dWYWx1ZS55LT5jb21wdXRlTGVuZ3RoPGlu
dD4oY29udmVyc2lvbkRhdGEpOwogICAgICAgICBpbnQgYmx1ciA9IHNoYWRvd1ZhbHVlLmJsdXIg
PyBzaGFkb3dWYWx1ZS5ibHVyLT5jb21wdXRlTGVuZ3RoPGludD4oY29udmVyc2lvbkRhdGEpIDog
MDsKICAgICAgICAgaW50IHNwcmVhZCA9IHNoYWRvd1ZhbHVlLnNwcmVhZCA/IHNoYWRvd1ZhbHVl
LnNwcmVhZC0+Y29tcHV0ZUxlbmd0aDxpbnQ+KGNvbnZlcnNpb25EYXRhKSA6IDA7Ci0gICAgICAg
IFNoYWRvd1N0eWxlIHNoYWRvd1N0eWxlID0gc2hhZG93VmFsdWUuc3R5bGUgJiYgc2hhZG93VmFs
dWUuc3R5bGUtPmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZUluc2V0ID8gSW5zZXQgOiBOb3JtYWw7
CisgICAgICAgIFNoYWRvd1N0eWxlIHNoYWRvd1N0eWxlID0gc2hhZG93VmFsdWUuc3R5bGUgJiYg
c2hhZG93VmFsdWUuc3R5bGUtPnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUluc2V0ID8gSW5zZXQgOiBO
b3JtYWw7CiAgICAgICAgIENvbG9yIGNvbG9yOwogICAgICAgICBpZiAoc2hhZG93VmFsdWUuY29s
b3IpCiAgICAgICAgICAgICBjb2xvciA9IHN0eWxlUmVzb2x2ZXIuY29sb3JGcm9tUHJpbWl0aXZl
VmFsdWUoKnNoYWRvd1ZhbHVlLmNvbG9yKTsKQEAgLTg2OSw3ICs4NjgsNyBAQCBpbmxpbmUgdm9p
ZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVGb250RmFtaWx5KFN0eWxlUmVzb2x2ZXIm
IHN0eWxlUmVzb2x2ZQogICAgICAgICAgICAgLy8gSWYgdGhlIGZhbWlseSBuYW1lIHdhcyByZXNv
bHZlZCBieSB0aGUgQ1NTIHBhcnNlciBmcm9tIGEgc3lzdGVtIGZvbnQgSUQsIHRoZW4gaXQgaXMg
Z2VuZXJpYy4KICAgICAgICAgICAgIGlzR2VuZXJpY0ZhbWlseSA9IGZvbnRGYW1pbHkuZnJvbVN5
c3RlbUZvbnRJRDsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHN3aXRjaCAoY29udGVu
dFZhbHVlLmdldFZhbHVlSUQoKSkgeworICAgICAgICAgICAgc3dpdGNoIChjb250ZW50VmFsdWUu
dmFsdWVJRCgpKSB7CiAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlV2Via2l0Qm9keToKICAgICAg
ICAgICAgICAgICBpZiAoU2V0dGluZ3MqIHNldHRpbmdzID0gc3R5bGVSZXNvbHZlci5kb2N1bWVu
dCgpLnNldHRpbmdzKCkpCiAgICAgICAgICAgICAgICAgICAgIGZhbWlseSA9IHNldHRpbmdzLT5z
dGFuZGFyZEZvbnRGYW1pbHkoKTsKQEAgLTk0OCw3ICs5NDcsNyBAQCBpbmxpbmUgdm9pZCBTdHls
ZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVCYXNlbGluZVNoaWZ0KFN0eWxlUmVzb2x2ZXImIHN0
eWxlUmVzbwogICAgIFNWR1JlbmRlclN0eWxlJiBzdmdTdHlsZSA9IHN0eWxlUmVzb2x2ZXIuc3R5
bGUoKS0+YWNjZXNzU1ZHU3R5bGUoKTsKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CiAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLmlz
VmFsdWVJRCgpKSB7Ci0gICAgICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWVJRCgp
KSB7CisgICAgICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpKSB7CiAgICAgICAg
IGNhc2UgQ1NTVmFsdWVCYXNlbGluZToKICAgICAgICAgICAgIHN2Z1N0eWxlLnNldEJhc2VsaW5l
U2hpZnQoQlNfQkFTRUxJTkUpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC05ODgsMTIgKzk4Nywx
MiBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVXZWJraXRBc3Bl
Y3RSYXRpbyhTdHlsZVJlc29sdmVyJiBzdHlsZQogICAgIGlmIChpczxDU1NQcmltaXRpdmVWYWx1
ZT4odmFsdWUpKSB7CiAgICAgICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKIAotICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUuZ2V0
VmFsdWVJRCgpID09IENTU1ZhbHVlRnJvbURpbWVuc2lvbnMpCisgICAgICAgIGlmIChwcmltaXRp
dmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVGcm9tRGltZW5zaW9ucykKICAgICAgICAgICAg
IHJldHVybiBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldEFzcGVjdFJhdGlvVHlwZShBc3BlY3RS
YXRpb0Zyb21EaW1lbnNpb25zKTsKLSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLmdldFZhbHVl
SUQoKSA9PSBDU1NWYWx1ZUZyb21JbnRyaW5zaWMpCisgICAgICAgIGlmIChwcmltaXRpdmVWYWx1
ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVGcm9tSW50cmluc2ljKQogICAgICAgICAgICAgcmV0dXJu
IHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0QXNwZWN0UmF0aW9UeXBlKEFzcGVjdFJhdGlvRnJv
bUludHJpbnNpYyk7CiAKLSAgICAgICAgQVNTRVJUKHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQo
KSA9PSBDU1NWYWx1ZUF1dG8pOworICAgICAgICBBU1NFUlQocHJpbWl0aXZlVmFsdWUudmFsdWVJ
RCgpID09IENTU1ZhbHVlQXV0byk7CiAgICAgICAgIHJldHVybiBzdHlsZVJlc29sdmVyLnN0eWxl
KCktPnNldEFzcGVjdFJhdGlvVHlwZShBc3BlY3RSYXRpb0F1dG8pOwogICAgIH0KIApAQCAtMTAy
NSw3ICsxMDI0LDcgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVl
V2Via2l0VGV4dEVtcGhhc2lzU3R5bGUoU3R5bGVSZXNvbHZlciYKIAogICAgICAgICBmb3IgKGF1
dG8mIGl0ZW0gOiBsaXN0KSB7CiAgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSYgdmFsdWUg
PSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oaXRlbS5nZXQoKSk7Ci0gICAgICAgICAgICBp
ZiAodmFsdWUuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlRmlsbGVkIHx8IHZhbHVlLmdldFZhbHVl
SUQoKSA9PSBDU1NWYWx1ZU9wZW4pCisgICAgICAgICAgICBpZiAodmFsdWUudmFsdWVJRCgpID09
IENTU1ZhbHVlRmlsbGVkIHx8IHZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU9wZW4pCiAgICAg
ICAgICAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRUZXh0RW1waGFzaXNGaWxsKHZh
bHVlKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBzdHlsZVJlc29sdmVyLnN0
eWxlKCktPnNldFRleHRFbXBoYXNpc01hcmsodmFsdWUpOwpAQCAtMTAzOCwxMyArMTAzNywxMyBA
QCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVXZWJraXRUZXh0RW1w
aGFzaXNTdHlsZShTdHlsZVJlc29sdmVyJgogICAgIGlmIChwcmltaXRpdmVWYWx1ZS5pc1N0cmlu
ZygpKSB7CiAgICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0VGV4dEVtcGhhc2lzRmls
bChUZXh0RW1waGFzaXNGaWxsRmlsbGVkKTsKICAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgp
LT5zZXRUZXh0RW1waGFzaXNNYXJrKFRleHRFbXBoYXNpc01hcmtDdXN0b20pOwotICAgICAgICBz
dHlsZVJlc29sdmVyLnN0eWxlKCktPnNldFRleHRFbXBoYXNpc0N1c3RvbU1hcmsocHJpbWl0aXZl
VmFsdWUuZ2V0U3RyaW5nVmFsdWUoKSk7CisgICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+
c2V0VGV4dEVtcGhhc2lzQ3VzdG9tTWFyayhwcmltaXRpdmVWYWx1ZS5zdHJpbmdWYWx1ZSgpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0
VGV4dEVtcGhhc2lzQ3VzdG9tTWFyayhudWxsQXRvbSk7CiAKLSAgICBpZiAocHJpbWl0aXZlVmFs
dWUuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlRmlsbGVkIHx8IHByaW1pdGl2ZVZhbHVlLmdldFZh
bHVlSUQoKSA9PSBDU1NWYWx1ZU9wZW4pIHsKKyAgICBpZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJ
RCgpID09IENTU1ZhbHVlRmlsbGVkIHx8IHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NW
YWx1ZU9wZW4pIHsKICAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRUZXh0RW1waGFz
aXNGaWxsKHByaW1pdGl2ZVZhbHVlKTsKICAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5z
ZXRUZXh0RW1waGFzaXNNYXJrKFRleHRFbXBoYXNpc01hcmtBdXRvKTsKICAgICB9IGVsc2UgewpA
QCAtMTA2OSw3ICsxMDY4LDcgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBs
eUluaGVyaXRDb3VudGVyKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIKIHRlbXBsYXRlIDxT
dHlsZUJ1aWxkZXJDdXN0b206OkNvdW50ZXJCZWhhdmlvciBjb3VudGVyQmVoYXZpb3I+CiBpbmxp
bmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVDb3VudGVyKFN0eWxlUmVzb2x2
ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKLSAgICBib29sIHNldENvdW50
ZXJJbmNyZW1lbnRUb05vbmUgPSBjb3VudGVyQmVoYXZpb3IgPT0gSW5jcmVtZW50ICYmIGlzPENT
U1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkgJiYgZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZh
bHVlKS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lOworICAgIGJvb2wgc2V0Q291bnRlcklu
Y3JlbWVudFRvTm9uZSA9IGNvdW50ZXJCZWhhdmlvciA9PSBJbmNyZW1lbnQgJiYgaXM8Q1NTUHJp
bWl0aXZlVmFsdWU+KHZhbHVlKSAmJiBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUp
LnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmU7CiAKICAgICBpZiAoIWlzPENTU1ZhbHVlTGlzdD4o
dmFsdWUpICYmICFzZXRDb3VudGVySW5jcmVtZW50VG9Ob25lKQogICAgICAgICByZXR1cm47CkBA
IC0xMDg2LDEyICsxMDg1LDEyIEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBw
bHlWYWx1ZUNvdW50ZXIoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwKICAgICAgICAgcmV0
dXJuOwogCiAgICAgZm9yIChhdXRvJiBpdGVtIDogZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pih2YWx1
ZSkpIHsKLSAgICAgICAgUGFpciogcGFpciA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihp
dGVtLmdldCgpKS5nZXRQYWlyVmFsdWUoKTsKKyAgICAgICAgUGFpciogcGFpciA9IGRvd25jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlPihpdGVtLmdldCgpKS5wYWlyVmFsdWUoKTsKICAgICAgICAgaWYg
KCFwYWlyIHx8ICFwYWlyLT5maXJzdCgpIHx8ICFwYWlyLT5zZWNvbmQoKSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwogCi0gICAgICAgIEF0b21pY1N0cmluZyBpZGVudGlmaWVyID0gcGFpci0+Zmly
c3QoKS0+Z2V0U3RyaW5nVmFsdWUoKTsKLSAgICAgICAgaW50IHZhbHVlID0gcGFpci0+c2Vjb25k
KCktPmdldEludFZhbHVlKCk7CisgICAgICAgIEF0b21pY1N0cmluZyBpZGVudGlmaWVyID0gcGFp
ci0+Zmlyc3QoKS0+c3RyaW5nVmFsdWUoKTsKKyAgICAgICAgaW50IHZhbHVlID0gcGFpci0+c2Vj
b25kKCktPmludFZhbHVlKCk7CiAgICAgICAgIENvdW50ZXJEaXJlY3RpdmVzJiBkaXJlY3RpdmVz
ID0gbWFwLmFkZChpZGVudGlmaWVyLCBDb3VudGVyRGlyZWN0aXZlcygpKS5pdGVyYXRvci0+dmFs
dWU7CiAgICAgICAgIGlmIChjb3VudGVyQmVoYXZpb3IgPT0gUmVzZXQpCiAgICAgICAgICAgICBk
aXJlY3RpdmVzLnNldFJlc2V0VmFsdWUodmFsdWUpOwpAQCAtMTIxOSw3ICsxMjE4LDcgQEAgaW5s
aW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlV2Via2l0U3ZnU2hhZG93KFN0
eWxlUmVzb2x2ZXImIHN0eWxlUmUKIHsKICAgICBTVkdSZW5kZXJTdHlsZSYgc3ZnU3R5bGUgPSBz
dHlsZVJlc29sdmVyLnN0eWxlKCktPmFjY2Vzc1NWR1N0eWxlKCk7CiAgICAgaWYgKGlzPENTU1By
aW1pdGl2ZVZhbHVlPih2YWx1ZSkpIHsKLSAgICAgICAgQVNTRVJUKGRvd25jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlPih2YWx1ZSkuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZSk7CisgICAgICAg
IEFTU0VSVChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLnZhbHVlSUQoKSA9PSBD
U1NWYWx1ZU5vbmUpOwogICAgICAgICBzdmdTdHlsZS5zZXRTaGFkb3cobnVsbHB0cik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CkBAIC0xMjU3LDcgKzEyNTYsNyBAQCBpbmxpbmUgdm9pZCBTdHls
ZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVGb250V2VpZ2h0KFN0eWxlUmVzb2x2ZXImIHN0eWxl
UmVzb2x2ZQogewogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWU+KHZhbHVlKTsKICAgICBhdXRvIGZvbnREZXNjcmlwdGlvbiA9IHN0eWxlUmVzb2x2
ZXIuZm9udERlc2NyaXB0aW9uKCk7Ci0gICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS5nZXRWYWx1
ZUlEKCkpIHsKKyAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSkgewogICAgIGNh
c2UgQ1NTVmFsdWVJbnZhbGlkOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAg
ICAgYnJlYWs7CkBAIC0xMjkwLDcgKzEyODksNyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJD
dXN0b206OmFwcGx5SW5oZXJpdENvbHVtbkdhcChTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdgog
CiBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVDb2x1bW5HYXAoU3R5
bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHZhbHVlKQogewotICAgIGlmIChk
b3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1
ZU5vcm1hbCkKKyAgICBpZiAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS52YWx1
ZUlEKCkgPT0gQ1NTVmFsdWVOb3JtYWwpCiAgICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+
c2V0SGFzTm9ybWFsQ29sdW1uR2FwKCk7CiAgICAgZWxzZQogICAgICAgICBzdHlsZVJlc29sdmVy
LnN0eWxlKCktPnNldENvbHVtbkdhcChTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRDb21w
dXRlZExlbmd0aDxmbG9hdD4oc3R5bGVSZXNvbHZlciwgdmFsdWUpKTsKQEAgLTEzMzMsNyArMTMz
Miw3IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUNvbnRlbnQo
U3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwKIAogICAgICAgICBhdXRvJiBjb250ZW50VmFs
dWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oaXRlbS5nZXQoKSk7CiAgICAgICAgIGlm
IChjb250ZW50VmFsdWUuaXNTdHJpbmcoKSkgewotICAgICAgICAgICAgc3R5bGVSZXNvbHZlci5z
dHlsZSgpLT5zZXRDb250ZW50KGNvbnRlbnRWYWx1ZS5nZXRTdHJpbmdWYWx1ZSgpLmltcGwoKSwg
ZGlkU2V0KTsKKyAgICAgICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0Q29udGVudChj
b250ZW50VmFsdWUuc3RyaW5nVmFsdWUoKS5pbXBsKCksIGRpZFNldCk7CiAgICAgICAgICAgICBk
aWRTZXQgPSB0cnVlOwogICAgICAgICB9IGVsc2UgaWYgKGNvbnRlbnRWYWx1ZS5pc0F0dHIoKSkg
ewogICAgICAgICAgICAgLy8gRklYTUU6IENhbiBhIG5hbWVzcGFjZSBiZSBzcGVjaWZpZWQgZm9y
IGFuIGF0dHIoZm9vKT8KQEAgLTEzNDEsNyArMTM0MCw3IEBAIGlubGluZSB2b2lkIFN0eWxlQnVp
bGRlckN1c3RvbTo6YXBwbHlWYWx1ZUNvbnRlbnQoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZl
ciwKICAgICAgICAgICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldEhhc0F0dHJDb250
ZW50KCk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgY29uc3RfY2FzdDxSZW5k
ZXJTdHlsZSo+KHN0eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKSktPnNldEhhc0F0dHJDb250ZW50
KCk7Ci0gICAgICAgICAgICBRdWFsaWZpZWROYW1lIGF0dHIobnVsbEF0b20sIGNvbnRlbnRWYWx1
ZS5nZXRTdHJpbmdWYWx1ZSgpLmltcGwoKSwgbnVsbEF0b20pOworICAgICAgICAgICAgUXVhbGlm
aWVkTmFtZSBhdHRyKG51bGxBdG9tLCBjb250ZW50VmFsdWUuc3RyaW5nVmFsdWUoKS5pbXBsKCks
IG51bGxBdG9tKTsKICAgICAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSBzdHls
ZVJlc29sdmVyLmVsZW1lbnQoKS0+Z2V0QXR0cmlidXRlKGF0dHIpOwogICAgICAgICAgICAgc3R5
bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRDb250ZW50KHZhbHVlLmlzTnVsbCgpID8gZW1wdHlBdG9t
IDogdmFsdWUuaW1wbCgpLCBkaWRTZXQpOwogICAgICAgICAgICAgZGlkU2V0ID0gdHJ1ZTsKQEAg
LTEzNDksNyArMTM0OCw3IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlW
YWx1ZUNvbnRlbnQoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwKICAgICAgICAgICAgIHN0
eWxlUmVzb2x2ZXIucnVsZVNldHMoKS5tdXRhYmxlRmVhdHVyZXMoKS5hdHRyaWJ1dGVDYW5vbmlj
YWxMb2NhbE5hbWVzSW5SdWxlcy5hZGQoYXR0ci5sb2NhbE5hbWUoKS5pbXBsKCkpOwogICAgICAg
ICAgICAgc3R5bGVSZXNvbHZlci5ydWxlU2V0cygpLm11dGFibGVGZWF0dXJlcygpLmF0dHJpYnV0
ZUxvY2FsTmFtZXNJblJ1bGVzLmFkZChhdHRyLmxvY2FsTmFtZSgpLmltcGwoKSk7CiAgICAgICAg
IH0gZWxzZSBpZiAoY29udGVudFZhbHVlLmlzQ291bnRlcigpKSB7Ci0gICAgICAgICAgICBDb3Vu
dGVyKiBjb3VudGVyVmFsdWUgPSBjb250ZW50VmFsdWUuZ2V0Q291bnRlclZhbHVlKCk7CisgICAg
ICAgICAgICBhdXRvKiBjb3VudGVyVmFsdWUgPSBjb250ZW50VmFsdWUuY291bnRlclZhbHVlKCk7
CiAgICAgICAgICAgICBFTGlzdFN0eWxlVHlwZSBsaXN0U3R5bGVUeXBlID0gTm9uZUxpc3RTdHls
ZTsKICAgICAgICAgICAgIENTU1ZhbHVlSUQgbGlzdFN0eWxlSWRlbnQgPSBjb3VudGVyVmFsdWUt
Pmxpc3RTdHlsZUlkZW50KCk7CiAgICAgICAgICAgICBpZiAobGlzdFN0eWxlSWRlbnQgIT0gQ1NT
VmFsdWVOb25lKQpAQCAtMTM1OCw3ICsxMzU3LDcgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVy
Q3VzdG9tOjphcHBseVZhbHVlQ29udGVudChTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLAog
ICAgICAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRDb250ZW50KFdURk1vdmUoY291
bnRlciksIGRpZFNldCk7CiAgICAgICAgICAgICBkaWRTZXQgPSB0cnVlOwogICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgc3dpdGNoIChjb250ZW50VmFsdWUuZ2V0VmFsdWVJRCgpKSB7Cisg
ICAgICAgICAgICBzd2l0Y2ggKGNvbnRlbnRWYWx1ZS52YWx1ZUlEKCkpIHsKICAgICAgICAgICAg
IGNhc2UgQ1NTVmFsdWVPcGVuUXVvdGU6CiAgICAgICAgICAgICAgICAgc3R5bGVSZXNvbHZlci5z
dHlsZSgpLT5zZXRDb250ZW50KE9QRU5fUVVPVEUsIGRpZFNldCk7CiAgICAgICAgICAgICAgICAg
ZGlkU2V0ID0gdHJ1ZTsKQEAgLTE1NTMsNyArMTU1Miw3IEBAIGlubGluZSB2b2lkIFN0eWxlQnVp
bGRlckN1c3RvbTo6YXBwbHlWYWx1ZUZvbnRTaXplKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2
ZXIsCiAKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlPih2YWx1ZSk7CiAgICAgZmxvYXQgc2l6ZTsKLSAgICBpZiAoQ1NTVmFsdWVJRCBpZGVudCA9
IHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQoKSkgeworICAgIGlmIChDU1NWYWx1ZUlEIGlkZW50
ID0gcHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpKSB7CiAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5z
ZXRJc0Fic29sdXRlU2l6ZShwYXJlbnRJc0Fic29sdXRlU2l6ZSAmJiAoaWRlbnQgPT0gQ1NTVmFs
dWVMYXJnZXIgfHwgaWRlbnQgPT0gQ1NTVmFsdWVTbWFsbGVyIHx8IGlkZW50ID09IENTU1ZhbHVl
V2Via2l0UnVieVRleHQpKTsKIAogICAgICAgICAvLyBLZXl3b3JkcyBhcmUgYmVpbmcgdXNlZC4K
QEAgLTE1ODcsNyArMTU4Niw3IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBw
bHlWYWx1ZUZvbnRTaXplKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsCiAgICAgICAgICAg
ICBzaXplID0gcHJpbWl0aXZlVmFsdWUuY29tcHV0ZUxlbmd0aDxmbG9hdD4oQ1NTVG9MZW5ndGhD
b252ZXJzaW9uRGF0YShzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCksIHN0eWxlUmVzb2x2ZXIu
cm9vdEVsZW1lbnRTdHlsZSgpLCBzdHlsZVJlc29sdmVyLmRvY3VtZW50KCkucmVuZGVyVmlldygp
LCAxLjBmLCB0cnVlKSk7CiAgICAgICAgICAgICBzdHlsZVJlc29sdmVyLnN0YXRlKCkuc2V0Rm9u
dFNpemVIYXNWaWV3cG9ydFVuaXRzKHByaW1pdGl2ZVZhbHVlLmlzVmlld3BvcnRQZXJjZW50YWdl
TGVuZ3RoKCkpOwogICAgICAgICB9IGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLmlzUGVyY2VudGFn
ZSgpKQotICAgICAgICAgICAgc2l6ZSA9IChwcmltaXRpdmVWYWx1ZS5nZXRGbG9hdFZhbHVlKCkg
KiBwYXJlbnRTaXplKSAvIDEwMC4wZjsKKyAgICAgICAgICAgIHNpemUgPSAocHJpbWl0aXZlVmFs
dWUuZmxvYXRWYWx1ZSgpICogcGFyZW50U2l6ZSkgLyAxMDAuMGY7CiAgICAgICAgIGVsc2UgaWYg
KHByaW1pdGl2ZVZhbHVlLmlzQ2FsY3VsYXRlZFBlcmNlbnRhZ2VXaXRoTGVuZ3RoKCkpCiAgICAg
ICAgICAgICBzaXplID0gcHJpbWl0aXZlVmFsdWUuY3NzQ2FsY1ZhbHVlKCktPmNyZWF0ZUNhbGN1
bGF0aW9uVmFsdWUoc3R5bGVSZXNvbHZlci5zdGF0ZSgpLmNzc1RvTGVuZ3RoQ29udmVyc2lvbkRh
dGEoKS5jb3B5V2l0aEFkanVzdGVkWm9vbSgxLjBmKSktPmV2YWx1YXRlKHBhcmVudFNpemUpOwog
ICAgICAgICBlbHNlCkBAIC0xNjE5LDcgKzE2MTgsNyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxk
ZXJDdXN0b206OmFwcGx5SW5oZXJpdEdyaWRUZW1wbGF0ZUFyZWFzKFN0eWxlUmVzb2x2ZXImIHN0
eQogaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlR3JpZFRlbXBsYXRl
QXJlYXMoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHZhbHVlKQogewog
ICAgIGlmIChpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKSB7Ci0gICAgICAgIEFTU0VSVChk
b3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1
ZU5vbmUpOworICAgICAgICBBU1NFUlQoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVl
KS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtMTcwNiw3ICsxNzA1LDcgQEAgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVB
bHQoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHYKIHsKICAgICBhdXRv
JiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CiAg
ICAgaWYgKHByaW1pdGl2ZVZhbHVlLmlzU3RyaW5nKCkpCi0gICAgICAgIHN0eWxlUmVzb2x2ZXIu
c3R5bGUoKS0+c2V0Q29udGVudEFsdFRleHQocHJpbWl0aXZlVmFsdWUuZ2V0U3RyaW5nVmFsdWUo
KSk7CisgICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0Q29udGVudEFsdFRleHQocHJp
bWl0aXZlVmFsdWUuc3RyaW5nVmFsdWUoKSk7CiAgICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUu
aXNBdHRyKCkpIHsKICAgICAgICAgLy8gRklYTUU6IENhbiBhIG5hbWVzcGFjZSBiZSBzcGVjaWZp
ZWQgZm9yIGFuIGF0dHIoZm9vKT8KICAgICAgICAgaWYgKHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+
c3R5bGVUeXBlKCkgPT0gTk9QU0VVRE8pCkBAIC0xNzE0LDcgKzE3MTMsNyBAQCB2b2lkIFN0eWxl
QnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUFsdChTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVy
LCBDU1NWYWx1ZSYgdgogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb25zdF9jYXN0PFJlbmRl
clN0eWxlKj4oc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpKS0+c2V0VW5pcXVlKCk7CiAKLSAg
ICAgICAgUXVhbGlmaWVkTmFtZSBhdHRyKG51bGxBdG9tLCBwcmltaXRpdmVWYWx1ZS5nZXRTdHJp
bmdWYWx1ZSgpLCBudWxsQXRvbSk7CisgICAgICAgIFF1YWxpZmllZE5hbWUgYXR0cihudWxsQXRv
bSwgcHJpbWl0aXZlVmFsdWUuc3RyaW5nVmFsdWUoKSwgbnVsbEF0b20pOwogICAgICAgICBjb25z
dCBBdG9taWNTdHJpbmcmIHZhbHVlID0gc3R5bGVSZXNvbHZlci5lbGVtZW50KCktPmdldEF0dHJp
YnV0ZShhdHRyKTsKICAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRDb250ZW50QWx0
VGV4dCh2YWx1ZS5pc051bGwoKSA/IGVtcHR5QXRvbSA6IHZhbHVlKTsKIApAQCAtMTcyNiw2ICsx
NzI1LDcgQEAgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVBbHQoU3R5bGVSZXNv
bHZlciYgc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHYKIH0KIAogI2lmIEVOQUJMRShDU1NfU0NS
T0xMX1NOQVApCisKIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbml0aWFs
V2Via2l0U2Nyb2xsU25hcFBvaW50c1goU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlcikKIHsK
ICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldFNjcm9sbFNuYXBQb2ludHNYKG51bGxwdHIp
OwpAQCAtMTc0NSwyMyArMTc0NSwyMyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206
OmFwcGx5SW5oZXJpdFdlYmtpdFNjcm9sbFNuYXBQb2ludHNZKFN0eWxlUmVzb2x2ZQogewogICAg
IHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0U2Nyb2xsU25hcFBvaW50c1koc3R5bGVSZXNvbHZl
ci5wYXJlbnRTdHlsZSgpLT5zY3JvbGxTbmFwUG9pbnRzWSgpID8gc3RkOjptYWtlX3VuaXF1ZTxT
Y3JvbGxTbmFwUG9pbnRzPigqc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpLT5zY3JvbGxTbmFw
UG9pbnRzWSgpKSA6IG51bGxwdHIpOwogfQorCiAjZW5kaWYKIAogaW5saW5lIHZvaWQgU3R5bGVC
dWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlV2lsbENoYW5nZShTdHlsZVJlc29sdmVyJiBzdHlsZVJl
c29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgaWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVl
Pih2YWx1ZSkpIHsKLSAgICAgICAgQVNTRVJUKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2
YWx1ZSkuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlQXV0byk7CisgICAgICAgIEFTU0VSVChkb3du
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUF1dG8p
OwogICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldFdpbGxDaGFuZ2UobnVsbHB0cik7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZWY8V2lsbENoYW5nZURhdGE+IHdpbGxD
aGFuZ2UgPSBXaWxsQ2hhbmdlRGF0YTo6Y3JlYXRlKCk7CisgICAgYXV0byB3aWxsQ2hhbmdlID0g
V2lsbENoYW5nZURhdGE6OmNyZWF0ZSgpOwogICAgIGZvciAoYXV0byYgaXRlbSA6IGRvd25jYXN0
PENTU1ZhbHVlTGlzdD4odmFsdWUpKSB7CiAgICAgICAgIGlmICghaXM8Q1NTUHJpbWl0aXZlVmFs
dWU+KGl0ZW0uZ2V0KCkpKQogICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgY29uc3Qg
YXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oaXRlbS5n
ZXQoKSk7Ci0gICAgICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWVJRCgpKSB7Cisg
ICAgICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+
KGl0ZW0uZ2V0KCkpOworICAgICAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSkg
ewogICAgICAgICBjYXNlIENTU1ZhbHVlU2Nyb2xsUG9zaXRpb246CiAgICAgICAgICAgICB3aWxs
Q2hhbmdlLT5hZGRGZWF0dXJlKFdpbGxDaGFuZ2VEYXRhOjpGZWF0dXJlOjpTY3JvbGxQb3NpdGlv
bik7CiAgICAgICAgICAgICBicmVhazsKQEAgLTE3NzAsMTQgKzE3NzAsMTEgQEAgaW5saW5lIHZv
aWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlV2lsbENoYW5nZShTdHlsZVJlc29sdmVy
JiBzdHlsZVJlc29sdmUKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAg
ICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLmlzUHJvcGVydHlJRCgpKQotICAgICAgICAgICAg
ICAgIHdpbGxDaGFuZ2UtPmFkZEZlYXR1cmUoV2lsbENoYW5nZURhdGE6OkZlYXR1cmU6OlByb3Bl
cnR5LCBwcmltaXRpdmVWYWx1ZS5nZXRQcm9wZXJ0eUlEKCkpOworICAgICAgICAgICAgICAgIHdp
bGxDaGFuZ2UtPmFkZEZlYXR1cmUoV2lsbENoYW5nZURhdGE6OkZlYXR1cmU6OlByb3BlcnR5LCBw
cmltaXRpdmVWYWx1ZS5wcm9wZXJ0eUlEKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICB9Ci0KICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldFdpbGxDaGFuZ2UoV1RG
TW92ZSh3aWxsQ2hhbmdlKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
IC8vIFN0eWxlQnVpbGRlckN1c3RvbV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVQcm9wZXJ0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMu
Y3BwCmluZGV4IDZkZDRjNWFhMGFkYzIxZDc3MWIyZWRmM2Y5N2JlMTU4YzI5NWQwN2EuLjY2YjU5
Y2MyMGZlOTAxYjY4OTI1N2Q0NWYwOTI4YTk5OTY3ODViOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVByb3BlcnRpZXMuY3BwCkBAIC00NDEsOCArNDQxLDggQEAgU3RyaW5nIFN0eWxlUHJvcGVy
dGllczo6Z2V0TGF5ZXJlZFNob3J0aGFuZFZhbHVlKGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhh
bmQmIHMKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXM8Q1NTUHJpbWl0aXZlVmFsdWU+
KCp2YWx1ZSkgfHwgIWlzPENTU1ByaW1pdGl2ZVZhbHVlPigqeVZhbHVlKSkKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgICAgICAgICAgICAgQ1NT
VmFsdWVJRCB4SWQgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVlKS5nZXRWYWx1
ZUlEKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBDU1NWYWx1ZUlEIHlJZCA9IGRvd25jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlPigqeVZhbHVlKS5nZXRWYWx1ZUlEKCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBDU1NWYWx1ZUlEIHhJZCA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigq
dmFsdWUpLnZhbHVlSUQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIENTU1ZhbHVlSUQgeUlk
ID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp5VmFsdWUpLnZhbHVlSUQoKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICh4SWQgIT0geUlkKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKHhJZCA9PSBDU1NWYWx1ZVJlcGVhdCAmJiB5SWQgPT0gQ1NTVmFsdWVOb1Jl
cGVhdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VSZXBlYXRYU2hvcnRo
YW5kID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCA4NDk5ZDhm
N2Q1NDFmYmVhZTRkOTE3YjZlN2EyNzU5MWEyM2M4NjNmLi41ZGE2YmI3NjkxODcyY2JlOTA3NDEw
YzliODM2Y2RmNDgyZGVlNGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVS
ZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBA
IC0yMjcsNyArMjI3LDcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjpNYXRjaFJlc3VsdDo6YWRkTWF0
Y2hlZFByb3BlcnRpZXMoY29uc3QgU3R5bGVQcm9wZXJ0aWVzJiBwcm8KIAogICAgICAgICAgICAg
ICAgIC8vIFRoZSB2YWx1ZSBjdXJyZW50Q29sb3IgaGFzIGltcGxpY2l0ZWx5IHRoZSBzYW1lIHNp
ZGUgZWZmZWN0LiBJdCBkZXBlbmRzIG9uIHRoZSB2YWx1ZSBvZiBjb2xvciwKICAgICAgICAgICAg
ICAgICAvLyB3aGljaCBpcyBhbiBpbmhlcml0ZWQgdmFsdWUsIG1ha2luZyB0aGUgbm9uLWluaGVy
aXRlZCBwcm9wZXJ0eSBpbXBsaWNpdGx5IGluaGVyaXRlZC4KLSAgICAgICAgICAgICAgICBpZiAo
aXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSAmJiBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZT4odmFsdWUpLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZUN1cnJlbnRjb2xvcikgeworICAgICAg
ICAgICAgICAgIGlmIChpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpICYmIGRvd25jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkudmFsdWVJRCgpID09IENTU1ZhbHVlQ3VycmVudGNvbG9y
KSB7CiAgICAgICAgICAgICAgICAgICAgIGlzQ2FjaGVhYmxlID0gZmFsc2U7CiAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KQEAgLTE4MTYsNyArMTgxNiw3IEBA
IHN0YXRpYyBDb2xvciBjb2xvckZvckNTU1ZhbHVlKENTU1ZhbHVlSUQgY3NzVmFsdWVJZCkKIAog
Ym9vbCBTdHlsZVJlc29sdmVyOjpjb2xvckZyb21QcmltaXRpdmVWYWx1ZUlzRGVyaXZlZEZyb21F
bGVtZW50KGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJiB2YWx1ZSkKIHsKLSAgICBpbnQgaWRlbnQg
PSB2YWx1ZS5nZXRWYWx1ZUlEKCk7CisgICAgaW50IGlkZW50ID0gdmFsdWUudmFsdWVJRCgpOwog
ICAgIHN3aXRjaCAoaWRlbnQpIHsKICAgICBjYXNlIENTU1ZhbHVlV2Via2l0VGV4dDoKICAgICBj
YXNlIENTU1ZhbHVlV2Via2l0TGluazoKQEAgLTE4MzQsNyArMTgzNCw3IEBAIENvbG9yIFN0eWxl
UmVzb2x2ZXI6OmNvbG9yRnJvbVByaW1pdGl2ZVZhbHVlKGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVl
JiB2YWx1ZSwgYm9vCiAgICAgICAgIHJldHVybiB2YWx1ZS5jb2xvcigpOwogCiAgICAgY29uc3Qg
U3RhdGUmIHN0YXRlID0gbV9zdGF0ZTsKLSAgICBDU1NWYWx1ZUlEIGlkZW50ID0gdmFsdWUuZ2V0
VmFsdWVJRCgpOworICAgIENTU1ZhbHVlSUQgaWRlbnQgPSB2YWx1ZS52YWx1ZUlEKCk7CiAgICAg
c3dpdGNoIChpZGVudCkgewogICAgIGNhc2UgMDoKICAgICAgICAgcmV0dXJuIENvbG9yKCk7CkBA
IC0xOTA1LDcgKzE5MDUsNyBAQCBib29sIFN0eWxlUmVzb2x2ZXI6OmNyZWF0ZUZpbHRlck9wZXJh
dGlvbnMoY29uc3QgQ1NTVmFsdWUmIGluVmFsdWUsIEZpbHRlck9wZXJhdAogICAgIAogICAgIGlm
IChpczxDU1NQcmltaXRpdmVWYWx1ZT4oaW5WYWx1ZSkpIHsKICAgICAgICAgYXV0byYgcHJpbWl0
aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oaW5WYWx1ZSk7Ci0gICAgICAg
IGlmIChwcmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKQorICAgICAg
ICBpZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZSkKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAKQEAgLTE5MjksNyArMTkyOSw3IEBAIGJvb2wg
U3R5bGVSZXNvbHZlcjo6Y3JlYXRlRmlsdGVyT3BlcmF0aW9ucyhjb25zdCBDU1NWYWx1ZSYgaW5W
YWx1ZSwgRmlsdGVyT3BlcmF0CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAg
ICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGFy
Z3VtZW50KTsKLSAgICAgICAgICAgIFN0cmluZyBjc3NVcmwgPSBwcmltaXRpdmVWYWx1ZS5nZXRT
dHJpbmdWYWx1ZSgpOworICAgICAgICAgICAgU3RyaW5nIGNzc1VybCA9IHByaW1pdGl2ZVZhbHVl
LnN0cmluZ1ZhbHVlKCk7CiAgICAgICAgICAgICBVUkwgdXJsID0gbV9zdGF0ZS5kb2N1bWVudCgp
LmNvbXBsZXRlVVJMKGNzc1VybCk7CiAKICAgICAgICAgICAgIFJlZlB0cjxSZWZlcmVuY2VGaWx0
ZXJPcGVyYXRpb24+IG9wZXJhdGlvbiA9IFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbjo6Y3JlYXRl
KGNzc1VybCwgdXJsLmZyYWdtZW50SWRlbnRpZmllcigpKTsKQEAgLTE5NjAsNyArMTk2MCw3IEBA
IGJvb2wgU3R5bGVSZXNvbHZlcjo6Y3JlYXRlRmlsdGVyT3BlcmF0aW9ucyhjb25zdCBDU1NWYWx1
ZSYgaW5WYWx1ZSwgRmlsdGVyT3BlcmF0CiAgICAgICAgIGNhc2UgV2ViS2l0Q1NTRmlsdGVyVmFs
dWU6OlNhdHVyYXRlRmlsdGVyT3BlcmF0aW9uOiB7CiAgICAgICAgICAgICBkb3VibGUgYW1vdW50
ID0gMTsKICAgICAgICAgICAgIGlmIChmaWx0ZXJWYWx1ZS5sZW5ndGgoKSA9PSAxKSB7Ci0gICAg
ICAgICAgICAgICAgYW1vdW50ID0gZmlyc3RWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKTsKKyAgICAg
ICAgICAgICAgICBhbW91bnQgPSBmaXJzdFZhbHVlLT5kb3VibGVWYWx1ZSgpOwogICAgICAgICAg
ICAgICAgIGlmIChmaXJzdFZhbHVlLT5pc1BlcmNlbnRhZ2UoKSkKICAgICAgICAgICAgICAgICAg
ICAgYW1vdW50IC89IDEwMDsKICAgICAgICAgICAgIH0KQEAgLTE5ODIsNyArMTk4Miw3IEBAIGJv
b2wgU3R5bGVSZXNvbHZlcjo6Y3JlYXRlRmlsdGVyT3BlcmF0aW9ucyhjb25zdCBDU1NWYWx1ZSYg
aW5WYWx1ZSwgRmlsdGVyT3BlcmF0CiAgICAgICAgIGNhc2UgV2ViS2l0Q1NTRmlsdGVyVmFsdWU6
Ok9wYWNpdHlGaWx0ZXJPcGVyYXRpb246IHsKICAgICAgICAgICAgIGRvdWJsZSBhbW91bnQgPSAo
ZmlsdGVyVmFsdWUub3BlcmF0aW9uVHlwZSgpID09IFdlYktpdENTU0ZpbHRlclZhbHVlOjpCcmln
aHRuZXNzRmlsdGVyT3BlcmF0aW9uKSA/IDAgOiAxOwogICAgICAgICAgICAgaWYgKGZpbHRlclZh
bHVlLmxlbmd0aCgpID09IDEpIHsKLSAgICAgICAgICAgICAgICBhbW91bnQgPSBmaXJzdFZhbHVl
LT5nZXREb3VibGVWYWx1ZSgpOworICAgICAgICAgICAgICAgIGFtb3VudCA9IGZpcnN0VmFsdWUt
PmRvdWJsZVZhbHVlKCk7CiAgICAgICAgICAgICAgICAgaWYgKGZpcnN0VmFsdWUtPmlzUGVyY2Vu
dGFnZSgpKQogICAgICAgICAgICAgICAgICAgICBhbW91bnQgLz0gMTAwOwogICAgICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1RyYW5zZm9ybUZ1bmN0aW9ucy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvVHJhbnNmb3JtRnVuY3Rpb25zLmNwcAppbmRleCA2MTk1OGJj
ZmY4MGExMzZkNGM0OWMyODk2MzM1MTYwNmQ2M2I5ZDJlLi5mNjIzMjVlNTU5MWFmMDY3NWQwODU3
ZWE5ZmY4NGViMWUwZDA4MGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvVHJhbnNm
b3JtRnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvVHJhbnNmb3JtRnVuY3Rp
b25zLmNwcApAQCAtMTE1LDEzICsxMTUsMTMgQEAgYm9vbCB0cmFuc2Zvcm1zRm9yVmFsdWUoY29u
c3QgQ1NTVmFsdWUmIHZhbHVlLCBjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJgogICAg
ICAgICAgICAgZG91YmxlIHN4ID0gMS4wOwogICAgICAgICAgICAgZG91YmxlIHN5ID0gMS4wOwog
ICAgICAgICAgICAgaWYgKHRyYW5zZm9ybVZhbHVlLm9wZXJhdGlvblR5cGUoKSA9PSBXZWJLaXRD
U1NUcmFuc2Zvcm1WYWx1ZTo6U2NhbGVZVHJhbnNmb3JtT3BlcmF0aW9uKQotICAgICAgICAgICAg
ICAgIHN5ID0gZmlyc3RWYWx1ZS5nZXREb3VibGVWYWx1ZSgpOworICAgICAgICAgICAgICAgIHN5
ID0gZmlyc3RWYWx1ZS5kb3VibGVWYWx1ZSgpOwogICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgc3ggPSBmaXJzdFZhbHVlLmdldERvdWJsZVZhbHVlKCk7CisgICAgICAgICAgICAg
ICAgc3ggPSBmaXJzdFZhbHVlLmRvdWJsZVZhbHVlKCk7CiAgICAgICAgICAgICAgICAgaWYgKHRy
YW5zZm9ybVZhbHVlLm9wZXJhdGlvblR5cGUoKSAhPSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6
U2NhbGVYVHJhbnNmb3JtT3BlcmF0aW9uKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICh0cmFu
c2Zvcm1WYWx1ZS5sZW5ndGgoKSA+IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8m
IHNlY29uZFZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp0cmFuc2Zvcm1WYWx1
ZS5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDEpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN5
ID0gc2Vjb25kVmFsdWUuZ2V0RG91YmxlVmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHN5ID0gc2Vjb25kVmFsdWUuZG91YmxlVmFsdWUoKTsKICAgICAgICAgICAgICAgICAgICAgfSBl
bHNlCiAgICAgICAgICAgICAgICAgICAgICAgICBzeSA9IHN4OwogICAgICAgICAgICAgICAgIH0K
QEAgLTEzNSwxOSArMTM1LDE5IEBAIGJvb2wgdHJhbnNmb3Jtc0ZvclZhbHVlKGNvbnN0IENTU1Zh
bHVlJiB2YWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYKICAgICAgICAgICAg
IGRvdWJsZSBzeSA9IDEuMDsKICAgICAgICAgICAgIGRvdWJsZSBzeiA9IDEuMDsKICAgICAgICAg
ICAgIGlmICh0cmFuc2Zvcm1WYWx1ZS5vcGVyYXRpb25UeXBlKCkgPT0gV2ViS2l0Q1NTVHJhbnNm
b3JtVmFsdWU6OlNjYWxlWlRyYW5zZm9ybU9wZXJhdGlvbikKLSAgICAgICAgICAgICAgICBzeiA9
IGZpcnN0VmFsdWUuZ2V0RG91YmxlVmFsdWUoKTsKKyAgICAgICAgICAgICAgICBzeiA9IGZpcnN0
VmFsdWUuZG91YmxlVmFsdWUoKTsKICAgICAgICAgICAgIGVsc2UgaWYgKHRyYW5zZm9ybVZhbHVl
Lm9wZXJhdGlvblR5cGUoKSA9PSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6U2NhbGVZVHJhbnNm
b3JtT3BlcmF0aW9uKQotICAgICAgICAgICAgICAgIHN5ID0gZmlyc3RWYWx1ZS5nZXREb3VibGVW
YWx1ZSgpOworICAgICAgICAgICAgICAgIHN5ID0gZmlyc3RWYWx1ZS5kb3VibGVWYWx1ZSgpOwog
ICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgc3ggPSBmaXJzdFZhbHVlLmdldERv
dWJsZVZhbHVlKCk7CisgICAgICAgICAgICAgICAgc3ggPSBmaXJzdFZhbHVlLmRvdWJsZVZhbHVl
KCk7CiAgICAgICAgICAgICAgICAgaWYgKHRyYW5zZm9ybVZhbHVlLm9wZXJhdGlvblR5cGUoKSAh
PSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6U2NhbGVYVHJhbnNmb3JtT3BlcmF0aW9uKSB7CiAg
ICAgICAgICAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1WYWx1ZS5sZW5ndGgoKSA+IDIpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgIGF1dG8mIHRoaXJkVmFsdWUgPSBkb3duY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZT4oKnRyYW5zZm9ybVZhbHVlLml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMikpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgc3ogPSB0aGlyZFZhbHVlLmdldERvdWJsZVZhbHVlKCk7
CisgICAgICAgICAgICAgICAgICAgICAgICBzeiA9IHRoaXJkVmFsdWUuZG91YmxlVmFsdWUoKTsK
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBpZiAodHJhbnNmb3Jt
VmFsdWUubGVuZ3RoKCkgPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvJiBzZWNv
bmRWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdHJhbnNmb3JtVmFsdWUuaXRl
bVdpdGhvdXRCb3VuZHNDaGVjaygxKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzeSA9IHNl
Y29uZFZhbHVlLmdldERvdWJsZVZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBzeSA9
IHNlY29uZFZhbHVlLmRvdWJsZVZhbHVlKCk7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZQog
ICAgICAgICAgICAgICAgICAgICAgICAgc3kgPSBzeDsKICAgICAgICAgICAgICAgICB9CkBAIC0y
MzUsOSArMjM1LDkgQEAgYm9vbCB0cmFuc2Zvcm1zRm9yVmFsdWUoY29uc3QgQ1NTVmFsdWUmIHZh
bHVlLCBjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJgogICAgICAgICAgICAgYXV0byYg
c2Vjb25kVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnRyYW5zZm9ybVZhbHVl
Lml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMSkpOwogICAgICAgICAgICAgYXV0byYgdGhpcmRWYWx1
ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdHJhbnNmb3JtVmFsdWUuaXRlbVdpdGhv
dXRCb3VuZHNDaGVjaygyKSk7CiAgICAgICAgICAgICBhdXRvJiBmb3VydGhWYWx1ZSA9IGRvd25j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdHJhbnNmb3JtVmFsdWUuaXRlbVdpdGhvdXRCb3VuZHND
aGVjaygzKSk7Ci0gICAgICAgICAgICBkb3VibGUgeCA9IGZpcnN0VmFsdWUuZ2V0RG91YmxlVmFs
dWUoKTsKLSAgICAgICAgICAgIGRvdWJsZSB5ID0gc2Vjb25kVmFsdWUuZ2V0RG91YmxlVmFsdWUo
KTsKLSAgICAgICAgICAgIGRvdWJsZSB6ID0gdGhpcmRWYWx1ZS5nZXREb3VibGVWYWx1ZSgpOwor
ICAgICAgICAgICAgZG91YmxlIHggPSBmaXJzdFZhbHVlLmRvdWJsZVZhbHVlKCk7CisgICAgICAg
ICAgICBkb3VibGUgeSA9IHNlY29uZFZhbHVlLmRvdWJsZVZhbHVlKCk7CisgICAgICAgICAgICBk
b3VibGUgeiA9IHRoaXJkVmFsdWUuZG91YmxlVmFsdWUoKTsKICAgICAgICAgICAgIGRvdWJsZSBh
bmdsZSA9IGZvdXJ0aFZhbHVlLmNvbXB1dGVEZWdyZWVzKCk7CiAgICAgICAgICAgICBvcGVyYXRp
b25zLm9wZXJhdGlvbnMoKS5hcHBlbmQoUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUo
eCwgeSwgeiwgYW5nbGUsIHRyYW5zZm9ybU9wZXJhdGlvblR5cGUodHJhbnNmb3JtVmFsdWUub3Bl
cmF0aW9uVHlwZSgpKSkpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0yNjUsMzQgKzI2NSwzNCBA
QCBib29sIHRyYW5zZm9ybXNGb3JWYWx1ZShjb25zdCBDU1NWYWx1ZSYgdmFsdWUsIGNvbnN0IENT
U1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmCiAgICAgICAgIGNhc2UgV2ViS2l0Q1NTVHJhbnNmb3Jt
VmFsdWU6Ok1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbjogewogICAgICAgICAgICAgaWYgKHRyYW5z
Zm9ybVZhbHVlLmxlbmd0aCgpIDwgNikKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgIGRvdWJsZSBhID0gZmlyc3RWYWx1ZS5nZXREb3VibGVWYWx1ZSgpOwotICAgICAgICAgICAg
ZG91YmxlIGIgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnRyYW5zZm9ybVZhbHVlLml0
ZW1XaXRob3V0Qm91bmRzQ2hlY2soMSkpLmdldERvdWJsZVZhbHVlKCk7Ci0gICAgICAgICAgICBk
b3VibGUgYyA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdHJhbnNmb3JtVmFsdWUuaXRl
bVdpdGhvdXRCb3VuZHNDaGVjaygyKSkuZ2V0RG91YmxlVmFsdWUoKTsKLSAgICAgICAgICAgIGRv
dWJsZSBkID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp0cmFuc2Zvcm1WYWx1ZS5pdGVt
V2l0aG91dEJvdW5kc0NoZWNrKDMpKS5nZXREb3VibGVWYWx1ZSgpOwotICAgICAgICAgICAgZG91
YmxlIGUgPSBjb252ZXJzaW9uRGF0YS56b29tKCkgKiBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZT4oKnRyYW5zZm9ybVZhbHVlLml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soNCkpLmdldERvdWJsZVZh
bHVlKCk7Ci0gICAgICAgICAgICBkb3VibGUgZiA9IGNvbnZlcnNpb25EYXRhLnpvb20oKSAqIGRv
d25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdHJhbnNmb3JtVmFsdWUuaXRlbVdpdGhvdXRCb3Vu
ZHNDaGVjayg1KSkuZ2V0RG91YmxlVmFsdWUoKTsKKyAgICAgICAgICAgIGRvdWJsZSBhID0gZmly
c3RWYWx1ZS5kb3VibGVWYWx1ZSgpOworICAgICAgICAgICAgZG91YmxlIGIgPSBkb3duY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZT4oKnRyYW5zZm9ybVZhbHVlLml0ZW1XaXRob3V0Qm91bmRzQ2hlY2so
MSkpLmRvdWJsZVZhbHVlKCk7CisgICAgICAgICAgICBkb3VibGUgYyA9IGRvd25jYXN0PENTU1By
aW1pdGl2ZVZhbHVlPigqdHJhbnNmb3JtVmFsdWUuaXRlbVdpdGhvdXRCb3VuZHNDaGVjaygyKSku
ZG91YmxlVmFsdWUoKTsKKyAgICAgICAgICAgIGRvdWJsZSBkID0gZG93bmNhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWU+KCp0cmFuc2Zvcm1WYWx1ZS5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDMpKS5kb3Vi
bGVWYWx1ZSgpOworICAgICAgICAgICAgZG91YmxlIGUgPSBjb252ZXJzaW9uRGF0YS56b29tKCkg
KiBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnRyYW5zZm9ybVZhbHVlLml0ZW1XaXRob3V0
Qm91bmRzQ2hlY2soNCkpLmRvdWJsZVZhbHVlKCk7CisgICAgICAgICAgICBkb3VibGUgZiA9IGNv
bnZlcnNpb25EYXRhLnpvb20oKSAqIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdHJhbnNm
b3JtVmFsdWUuaXRlbVdpdGhvdXRCb3VuZHNDaGVjayg1KSkuZG91YmxlVmFsdWUoKTsKICAgICAg
ICAgICAgIG9wZXJhdGlvbnMub3BlcmF0aW9ucygpLmFwcGVuZChNYXRyaXhUcmFuc2Zvcm1PcGVy
YXRpb246OmNyZWF0ZShhLCBiLCBjLCBkLCBlLCBmKSk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpNYXRyaXgzRFRy
YW5zZm9ybU9wZXJhdGlvbjogewogICAgICAgICAgICAgaWYgKHRyYW5zZm9ybVZhbHVlLmxlbmd0
aCgpIDwgMTYpCiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBtYXRyaXgoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp0cmFuc2Zvcm1W
YWx1ZS5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDApKS5nZXREb3VibGVWYWx1ZSgpLAotICAgICAg
ICAgICAgICAgIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdHJhbnNmb3JtVmFsdWUuaXRl
bVdpdGhvdXRCb3VuZHNDaGVjaygxKSkuZ2V0RG91YmxlVmFsdWUoKSwKLSAgICAgICAgICAgICAg
ICBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnRyYW5zZm9ybVZhbHVlLml0ZW1XaXRob3V0
Qm91bmRzQ2hlY2soMikpLmdldERvdWJsZVZhbHVlKCksCi0gICAgICAgICAgICAgICAgZG93bmNh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp0cmFuc2Zvcm1WYWx1ZS5pdGVtV2l0aG91dEJvdW5kc0No
ZWNrKDMpKS5nZXREb3VibGVWYWx1ZSgpLAotICAgICAgICAgICAgICAgIGRvd25jYXN0PENTU1By
aW1pdGl2ZVZhbHVlPigqdHJhbnNmb3JtVmFsdWUuaXRlbVdpdGhvdXRCb3VuZHNDaGVjayg0KSku
Z2V0RG91YmxlVmFsdWUoKSwKLSAgICAgICAgICAgICAgICBkb3duY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZT4oKnRyYW5zZm9ybVZhbHVlLml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soNSkpLmdldERvdWJs
ZVZhbHVlKCksCi0gICAgICAgICAgICAgICAgZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp0
cmFuc2Zvcm1WYWx1ZS5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDYpKS5nZXREb3VibGVWYWx1ZSgp
LAotICAgICAgICAgICAgICAgIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdHJhbnNmb3Jt
VmFsdWUuaXRlbVdpdGhvdXRCb3VuZHNDaGVjayg3KSkuZ2V0RG91YmxlVmFsdWUoKSwKLSAgICAg
ICAgICAgICAgICBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnRyYW5zZm9ybVZhbHVlLml0
ZW1XaXRob3V0Qm91bmRzQ2hlY2soOCkpLmdldERvdWJsZVZhbHVlKCksCi0gICAgICAgICAgICAg
ICAgZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp0cmFuc2Zvcm1WYWx1ZS5pdGVtV2l0aG91
dEJvdW5kc0NoZWNrKDkpKS5nZXREb3VibGVWYWx1ZSgpLAotICAgICAgICAgICAgICAgIGRvd25j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdHJhbnNmb3JtVmFsdWUuaXRlbVdpdGhvdXRCb3VuZHND
aGVjaygxMCkpLmdldERvdWJsZVZhbHVlKCksCi0gICAgICAgICAgICAgICAgZG93bmNhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWU+KCp0cmFuc2Zvcm1WYWx1ZS5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDEx
KSkuZ2V0RG91YmxlVmFsdWUoKSwKLSAgICAgICAgICAgICAgICBjb252ZXJzaW9uRGF0YS56b29t
KCkgKiBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnRyYW5zZm9ybVZhbHVlLml0ZW1XaXRo
b3V0Qm91bmRzQ2hlY2soMTIpKS5nZXREb3VibGVWYWx1ZSgpLAotICAgICAgICAgICAgICAgIGNv
bnZlcnNpb25EYXRhLnpvb20oKSAqIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdHJhbnNm
b3JtVmFsdWUuaXRlbVdpdGhvdXRCb3VuZHNDaGVjaygxMykpLmdldERvdWJsZVZhbHVlKCksCi0g
ICAgICAgICAgICAgICAgZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp0cmFuc2Zvcm1WYWx1
ZS5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDE0KSkuZ2V0RG91YmxlVmFsdWUoKSwKLSAgICAgICAg
ICAgICAgICBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnRyYW5zZm9ybVZhbHVlLml0ZW1X
aXRob3V0Qm91bmRzQ2hlY2soMTUpKS5nZXREb3VibGVWYWx1ZSgpKTsKKyAgICAgICAgICAgIFRy
YW5zZm9ybWF0aW9uTWF0cml4IG1hdHJpeChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnRy
YW5zZm9ybVZhbHVlLml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMCkpLmRvdWJsZVZhbHVlKCksCisg
ICAgICAgICAgICAgICAgZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp0cmFuc2Zvcm1WYWx1
ZS5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDEpKS5kb3VibGVWYWx1ZSgpLAorICAgICAgICAgICAg
ICAgIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdHJhbnNmb3JtVmFsdWUuaXRlbVdpdGhv
dXRCb3VuZHNDaGVjaygyKSkuZG91YmxlVmFsdWUoKSwKKyAgICAgICAgICAgICAgICBkb3duY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZT4oKnRyYW5zZm9ybVZhbHVlLml0ZW1XaXRob3V0Qm91bmRzQ2hl
Y2soMykpLmRvdWJsZVZhbHVlKCksCisgICAgICAgICAgICAgICAgZG93bmNhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWU+KCp0cmFuc2Zvcm1WYWx1ZS5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDQpKS5kb3Vi
bGVWYWx1ZSgpLAorICAgICAgICAgICAgICAgIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigq
dHJhbnNmb3JtVmFsdWUuaXRlbVdpdGhvdXRCb3VuZHNDaGVjayg1KSkuZG91YmxlVmFsdWUoKSwK
KyAgICAgICAgICAgICAgICBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnRyYW5zZm9ybVZh
bHVlLml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soNikpLmRvdWJsZVZhbHVlKCksCisgICAgICAgICAg
ICAgICAgZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp0cmFuc2Zvcm1WYWx1ZS5pdGVtV2l0
aG91dEJvdW5kc0NoZWNrKDcpKS5kb3VibGVWYWx1ZSgpLAorICAgICAgICAgICAgICAgIGRvd25j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdHJhbnNmb3JtVmFsdWUuaXRlbVdpdGhvdXRCb3VuZHND
aGVjayg4KSkuZG91YmxlVmFsdWUoKSwKKyAgICAgICAgICAgICAgICBkb3duY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZT4oKnRyYW5zZm9ybVZhbHVlLml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soOSkpLmRv
dWJsZVZhbHVlKCksCisgICAgICAgICAgICAgICAgZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+
KCp0cmFuc2Zvcm1WYWx1ZS5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDEwKSkuZG91YmxlVmFsdWUo
KSwKKyAgICAgICAgICAgICAgICBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnRyYW5zZm9y
bVZhbHVlLml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMTEpKS5kb3VibGVWYWx1ZSgpLAorICAgICAg
ICAgICAgICAgIGNvbnZlcnNpb25EYXRhLnpvb20oKSAqIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlPigqdHJhbnNmb3JtVmFsdWUuaXRlbVdpdGhvdXRCb3VuZHNDaGVjaygxMikpLmRvdWJsZVZh
bHVlKCksCisgICAgICAgICAgICAgICAgY29udmVyc2lvbkRhdGEuem9vbSgpICogZG93bmNhc3Q8
Q1NTUHJpbWl0aXZlVmFsdWU+KCp0cmFuc2Zvcm1WYWx1ZS5pdGVtV2l0aG91dEJvdW5kc0NoZWNr
KDEzKSkuZG91YmxlVmFsdWUoKSwKKyAgICAgICAgICAgICAgICBkb3duY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZT4oKnRyYW5zZm9ybVZhbHVlLml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMTQpKS5kb3Vi
bGVWYWx1ZSgpLAorICAgICAgICAgICAgICAgIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigq
dHJhbnNmb3JtVmFsdWUuaXRlbVdpdGhvdXRCb3VuZHNDaGVjaygxNSkpLmRvdWJsZVZhbHVlKCkp
OwogICAgICAgICAgICAgb3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuYXBwZW5kKE1hdHJpeDNEVHJh
bnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUobWF0cml4KSk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQpAQCAtMzAyLDcgKzMwMiw3IEBAIGJvb2wgdHJhbnNmb3Jtc0ZvclZhbHVlKGNvbnN0
IENTU1ZhbHVlJiB2YWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYKICAgICAg
ICAgICAgICAgICBwID0gY29udmVydFRvRmxvYXRMZW5ndGgoJmZpcnN0VmFsdWUsIGNvbnZlcnNp
b25EYXRhKTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMg
YSBxdWlyayB0aGF0IHNob3VsZCBnbyBhd2F5IHdoZW4gM2QgdHJhbnNmb3JtcyBhcmUgZmluYWxp
emVkLgotICAgICAgICAgICAgICAgIGRvdWJsZSB2YWwgPSBmaXJzdFZhbHVlLmdldERvdWJsZVZh
bHVlKCk7CisgICAgICAgICAgICAgICAgZG91YmxlIHZhbCA9IGZpcnN0VmFsdWUuZG91YmxlVmFs
dWUoKTsKICAgICAgICAgICAgICAgICBwID0gdmFsID49IDAgPyBMZW5ndGgoY2xhbXBUb1Bvc2l0
aXZlSW50ZWdlcih2YWwpLCBGaXhlZCkgOiBMZW5ndGgoVW5kZWZpbmVkKTsKICAgICAgICAgICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1ZpZXdwb3J0U3R5bGVSZXNvbHZl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvVmlld3BvcnRTdHlsZVJlc29sdmVyLmNwcAppbmRl
eCBkYmI2Y2M0ZGY0NDA0MTVhNGJjNDBlMGM5ZTBkYWE2YzEyYTU2OWJhLi5kYzM0MjE5MjRhZmQy
MzUzYjliM2NmNjY2MTFlMjYyODM5NGJlMTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvVmlld3BvcnRTdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvVmll
d3BvcnRTdHlsZVJlc29sdmVyLmNwcApAQCAtMTE0LDEzICsxMTQsMTMgQEAgZmxvYXQgVmlld3Bv
cnRTdHlsZVJlc29sdmVyOjpnZXRWaWV3cG9ydEFyZ3VtZW50VmFsdWUoQ1NTUHJvcGVydHlJRCBp
ZCkgY29uc3QKICAgICBDU1NQcmltaXRpdmVWYWx1ZSYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVlKTsKIAogICAgIGlmIChwcmltaXRpdmVWYWx1ZS5p
c051bWJlcigpIHx8IHByaW1pdGl2ZVZhbHVlLmlzUHgoKSkKLSAgICAgICAgcmV0dXJuIHByaW1p
dGl2ZVZhbHVlLmdldEZsb2F0VmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVl
LmZsb2F0VmFsdWUoKTsKIAogICAgIGlmIChwcmltaXRpdmVWYWx1ZS5pc0ZvbnRSZWxhdGl2ZUxl
bmd0aCgpKQotICAgICAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWUuZ2V0RmxvYXRWYWx1ZSgpICog
bV9kb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCktPnJlbmRlclN0eWxlKCktPmZvbnREZXNjcmlw
dGlvbigpLmNvbXB1dGVkU2l6ZSgpOworICAgICAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWUuZmxv
YXRWYWx1ZSgpICogbV9kb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCktPnJlbmRlclN0eWxlKCkt
PmZvbnREZXNjcmlwdGlvbigpLmNvbXB1dGVkU2l6ZSgpOwogCiAgICAgaWYgKHByaW1pdGl2ZVZh
bHVlLmlzUGVyY2VudGFnZSgpKSB7Ci0gICAgICAgIGZsb2F0IHBlcmNlbnRWYWx1ZSA9IHByaW1p
dGl2ZVZhbHVlLmdldEZsb2F0VmFsdWUoKSAvIDEwMC4wZjsKKyAgICAgICAgZmxvYXQgcGVyY2Vu
dFZhbHVlID0gcHJpbWl0aXZlVmFsdWUuZmxvYXRWYWx1ZSgpIC8gMTAwLjBmOwogICAgICAgICBz
d2l0Y2ggKGlkKSB7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlNYXhIZWlnaHQ6CiAgICAgICAg
IGNhc2UgQ1NTUHJvcGVydHlNaW5IZWlnaHQ6CkBAIC0xNDAsNyArMTQwLDcgQEAgZmxvYXQgVmll
d3BvcnRTdHlsZVJlc29sdmVyOjpnZXRWaWV3cG9ydEFyZ3VtZW50VmFsdWUoQ1NTUHJvcGVydHlJ
RCBpZCkgY29uc3QKICAgICAgICAgfQogICAgIH0KIAotICAgIHN3aXRjaCAocHJpbWl0aXZlVmFs
dWUuZ2V0VmFsdWVJRCgpKSB7CisgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkp
IHsKICAgICBjYXNlIENTU1ZhbHVlQXV0bzoKICAgICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTsK
ICAgICBjYXNlIENTU1ZhbHVlRGV2aWNlSGVpZ2h0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL1dlYktpdENTU01hdHJpeC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NT
TWF0cml4LmNwcAppbmRleCAxYmNhNGZkZTE0NGNiNWYyMmI5OWZhZjE5NjA2MDYwZTkxZjk2NWYx
Li5lMzhhYWZjZWUzYjZhMGM4ZTAzZTM0MTM2YmM0MDY0ZWIwNTM2NTFjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmNwcApAQCAtMzcsNTUgKzM3LDU3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotV2ViS2l0Q1NTTWF0cml4OjpXZWJLaXRDU1NNYXRyaXgoY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmIG0pCi0gICAgOiBtX21hdHJpeChtKQoraW5saW5lIFdlYktpdENT
U01hdHJpeDo6V2ViS2l0Q1NTTWF0cml4KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRy
aXgpCisgICAgOiBtX21hdHJpeChtYXRyaXgpCiB7CiB9CiAKLVdlYktpdENTU01hdHJpeDo6V2Vi
S2l0Q1NTTWF0cml4KGNvbnN0IFN0cmluZyYgcywgRXhjZXB0aW9uQ29kZSYgZWMpCitSZWY8V2Vi
S2l0Q1NTTWF0cml4PiBXZWJLaXRDU1NNYXRyaXg6OmNyZWF0ZShjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgbWF0cml4KQogewotICAgIHNldE1hdHJpeFZhbHVlKHMsIGVjKTsKKyAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBXZWJLaXRDU1NNYXRyaXgobWF0cml4KSk7Cit9CisKK0V4Y2VwdGlv
bk9yPFJlZjxXZWJLaXRDU1NNYXRyaXg+PiBXZWJLaXRDU1NNYXRyaXg6OmNyZWF0ZShjb25zdCBT
dHJpbmcmIHN0cmluZykKK3sKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0UmVmKCpuZXcgV2ViS2l0
Q1NTTWF0cml4KTsKKyAgICBhdXRvIHNldE1hdHJpeFZhbHVlUmVzdWx0ID0gcmVzdWx0LT5zZXRN
YXRyaXhWYWx1ZShzdHJpbmcpOworICAgIGlmIChzZXRNYXRyaXhWYWx1ZVJlc3VsdC5oYXNFeGNl
cHRpb24oKSkKKyAgICAgICAgcmV0dXJuIHNldE1hdHJpeFZhbHVlUmVzdWx0LnJlbGVhc2VFeGNl
cHRpb24oKTsKKyAgICByZXR1cm4gV1RGTW92ZShyZXN1bHQpOwogfQogCiBXZWJLaXRDU1NNYXRy
aXg6On5XZWJLaXRDU1NNYXRyaXgoKQogewogfQogCi12b2lkIFdlYktpdENTU01hdHJpeDo6c2V0
TWF0cml4VmFsdWUoY29uc3QgU3RyaW5nJiBzdHJpbmcsIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhj
ZXB0aW9uT3I8dm9pZD4gV2ViS2l0Q1NTTWF0cml4OjpzZXRNYXRyaXhWYWx1ZShjb25zdCBTdHJp
bmcmIHN0cmluZykKIHsKICAgICBpZiAoc3RyaW5nLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
OworICAgICAgICByZXR1cm4geyB9OwogCiAgICAgYXV0byBzdHlsZURlY2xhcmF0aW9uID0gTXV0
YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7Ci0gICAgaWYgKENTU1BhcnNlcjo6cGFyc2VW
YWx1ZShzdHlsZURlY2xhcmF0aW9uLCBDU1NQcm9wZXJ0eVRyYW5zZm9ybSwgc3RyaW5nLCB0cnVl
LCBIVE1MU3RhbmRhcmRNb2RlLCBudWxscHRyKSAhPSBDU1NQYXJzZXI6OlBhcnNlUmVzdWx0OjpF
cnJvcikgewotICAgICAgICAvLyBDb252ZXJ0IHRvIFRyYW5zZm9ybU9wZXJhdGlvbnMuIFRoaXMg
Y2FuIGZhaWwgaWYgYSBwcm9wZXJ0eQotICAgICAgICAvLyByZXF1aXJlcyBzdHlsZSAoaS5lLiwg
cGFyYW0gdXNlcyAnZW1zJyBvciAnZXhzJykKLSAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1
ZSA9IHN0eWxlRGVjbGFyYXRpb24tPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlUcmFu
c2Zvcm0pOwotCi0gICAgICAgIC8vIENoZWNrIGZvciBhICJub25lIiBvciBlbXB0eSB0cmFuc2Zv
cm0uIEluIHRoZXNlIGNhc2VzIHdlIGNhbiB1c2UgdGhlIGRlZmF1bHQgaWRlbnRpdHkgbWF0cml4
LgotICAgICAgICBpZiAoIXZhbHVlIHx8IChpczxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVlKSAm
JiBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVlKS5nZXRWYWx1ZUlEKCkgPT0gQ1NT
VmFsdWVOb25lKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBUcmFuc2Zvcm1PcGVy
YXRpb25zIG9wZXJhdGlvbnM7Ci0gICAgICAgIGlmICghdHJhbnNmb3Jtc0ZvclZhbHVlKCp2YWx1
ZSwgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSgpLCBvcGVyYXRpb25zKSkgewotICAgICAgICAg
ICAgZWMgPSBTWU5UQVhfRVJSOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAg
ICAgICAgLy8gQ29udmVydCB0cmFuc2Zvcm0gb3BlcmF0aW9ucyB0byBhIFRyYW5zZm9ybWF0aW9u
TWF0cml4LiBUaGlzIGNhbiBmYWlsCi0gICAgICAgIC8vIGlmIGEgcGFyYW0gaGFzIGEgcGVyY2Vu
dGFnZSAoJyUnKQotICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0OwotICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgb3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuc2l6ZSgpOyArK2kp
IHsKLSAgICAgICAgICAgIGlmIChvcGVyYXRpb25zLm9wZXJhdGlvbnMoKVtpXS5nZXQoKS0+YXBw
bHkodCwgSW50U2l6ZSgwLCAwKSkpIHsKLSAgICAgICAgICAgICAgICBlYyA9IFNZTlRBWF9FUlI7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAg
ICAgICAgLy8gc2V0IHRoZSBtYXRyaXgKLSAgICAgICAgbV9tYXRyaXggPSB0OwotICAgIH0gZWxz
ZSAvLyBUaGVyZSBpcyBzb21ldGhpbmcgdGhlcmUgYnV0IHBhcnNpbmcgZmFpbGVkLgotICAgICAg
ICBlYyA9IFNZTlRBWF9FUlI7CisgICAgaWYgKENTU1BhcnNlcjo6cGFyc2VWYWx1ZShzdHlsZURl
Y2xhcmF0aW9uLCBDU1NQcm9wZXJ0eVRyYW5zZm9ybSwgc3RyaW5nLCB0cnVlLCBIVE1MU3RhbmRh
cmRNb2RlLCBudWxscHRyKSA9PSBDU1NQYXJzZXI6OlBhcnNlUmVzdWx0OjpFcnJvcikKKyAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNZTlRBWF9FUlIgfTsKKworICAgIC8vIENvbnZlcnQgdG8g
VHJhbnNmb3JtT3BlcmF0aW9ucy4gVGhpcyBjYW4gZmFpbCBpZiBhIHByb3BlcnR5IHJlcXVpcmVz
IHN0eWxlIChpLmUuLCBwYXJhbSB1c2VzICdlbXMnIG9yICdleHMnKQorICAgIGF1dG8gdmFsdWUg
PSBzdHlsZURlY2xhcmF0aW9uLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5VHJhbnNm
b3JtKTsKKworICAgIC8vIENoZWNrIGZvciBhICJub25lIiBvciBlbXB0eSB0cmFuc2Zvcm0uIElu
IHRoZXNlIGNhc2VzIHdlIGNhbiB1c2UgdGhlIGRlZmF1bHQgaWRlbnRpdHkgbWF0cml4LgorICAg
IGlmICghdmFsdWUgfHwgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUpICYmIGRvd25jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUpKQor
ICAgICAgICByZXR1cm4geyB9OworCisgICAgVHJhbnNmb3JtT3BlcmF0aW9ucyBvcGVyYXRpb25z
OworICAgIGlmICghdHJhbnNmb3Jtc0ZvclZhbHVlKCp2YWx1ZSwgQ1NTVG9MZW5ndGhDb252ZXJz
aW9uRGF0YSgpLCBvcGVyYXRpb25zKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNZTlRB
WF9FUlIgfTsKKworICAgIC8vIENvbnZlcnQgdHJhbnNmb3JtIG9wZXJhdGlvbnMgdG8gYSBUcmFu
c2Zvcm1hdGlvbk1hdHJpeC4gVGhpcyBjYW4gZmFpbCBpZiBhIHBhcmFtZXRlciBoYXMgYSBwZXJj
ZW50YWdlICgnJScpLgorICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1hdHJpeDsKKyAgICBmb3Ig
KGF1dG8mIG9wZXJhdGlvbiA6IG9wZXJhdGlvbnMub3BlcmF0aW9ucygpKSB7CisgICAgICAgIGlm
IChvcGVyYXRpb24tPmFwcGx5KG1hdHJpeCwgSW50U2l6ZSgwLCAwKSkpCisgICAgICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgU1lOVEFYX0VSUiB9OworICAgIH0KKyAgICBtX21hdHJpeCA9IG1h
dHJpeDsKKyAgICByZXR1cm4geyB9OwogfQogCiAvLyBQZXJmb3JtIGEgY29uY2F0ZW5hdGlvbiBv
ZiB0aGUgbWF0cmljZXMgKHRoaXMgKiBzZWNvbmRNYXRyaXgpCkBAIC05NCwyMSArOTYsMjAgQEAg
UmVmUHRyPFdlYktpdENTU01hdHJpeD4gV2ViS2l0Q1NTTWF0cml4OjptdWx0aXBseShXZWJLaXRD
U1NNYXRyaXgqIHNlY29uZE1hdHJpeCkKICAgICBpZiAoIXNlY29uZE1hdHJpeCkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiBtYXRyaXggPSBX
ZWJLaXRDU1NNYXRyaXg6OmNyZWF0ZShtX21hdHJpeCk7CisgICAgYXV0byBtYXRyaXggPSBjcmVh
dGUobV9tYXRyaXgpOwogICAgIG1hdHJpeC0+bV9tYXRyaXgubXVsdGlwbHkoc2Vjb25kTWF0cml4
LT5tX21hdHJpeCk7Ci0gICAgcmV0dXJuIG1hdHJpeDsKKyAgICByZXR1cm4gV1RGTW92ZShtYXRy
aXgpOwogfQogCi1SZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiBXZWJLaXRDU1NNYXRyaXg6OmludmVy
c2UoRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CitFeGNlcHRpb25PcjxSZWY8V2ViS2l0Q1NTTWF0
cml4Pj4gV2ViS2l0Q1NTTWF0cml4OjppbnZlcnNlKCkgY29uc3QKIHsKLSAgICBpZiAoYXV0byBp
bnZlcnNlID0gbV9tYXRyaXguaW52ZXJzZSgpKQotICAgICAgICByZXR1cm4gV2ViS2l0Q1NTTWF0
cml4OjpjcmVhdGUoaW52ZXJzZS52YWx1ZSgpKTsKLSAgICAKLSAgICBlYyA9IE5PVF9TVVBQT1JU
RURfRVJSOwotICAgIHJldHVybiBudWxscHRyOworICAgIGF1dG8gaW52ZXJzZSA9IG1fbWF0cml4
LmludmVyc2UoKTsKKyAgICBpZiAoIWludmVyc2UpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBOT1RfU1VQUE9SVEVEX0VSUiB9OworICAgIHJldHVybiBjcmVhdGUoaW52ZXJzZS52YWx1ZSgp
KTsKIH0KIAotUmVmUHRyPFdlYktpdENTU01hdHJpeD4gV2ViS2l0Q1NTTWF0cml4Ojp0cmFuc2xh
dGUoZG91YmxlIHgsIGRvdWJsZSB5LCBkb3VibGUgeikgY29uc3QKK1JlZjxXZWJLaXRDU1NNYXRy
aXg+IFdlYktpdENTU01hdHJpeDo6dHJhbnNsYXRlKGRvdWJsZSB4LCBkb3VibGUgeSwgZG91Ymxl
IHopIGNvbnN0CiB7CiAgICAgaWYgKHN0ZDo6aXNuYW4oeCkpCiAgICAgICAgIHggPSAwOwpAQCAt
MTE3LDEyICsxMTgsMTIgQEAgUmVmUHRyPFdlYktpdENTU01hdHJpeD4gV2ViS2l0Q1NTTWF0cml4
Ojp0cmFuc2xhdGUoZG91YmxlIHgsIGRvdWJsZSB5LCBkb3VibGUgeikKICAgICBpZiAoc3RkOjpp
c25hbih6KSkKICAgICAgICAgeiA9IDA7CiAKLSAgICBSZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiBt
YXRyaXggPSBXZWJLaXRDU1NNYXRyaXg6OmNyZWF0ZShtX21hdHJpeCk7CisgICAgYXV0byBtYXRy
aXggPSBjcmVhdGUobV9tYXRyaXgpOwogICAgIG1hdHJpeC0+bV9tYXRyaXgudHJhbnNsYXRlM2Qo
eCwgeSwgeik7CiAgICAgcmV0dXJuIG1hdHJpeDsKIH0KIAotUmVmUHRyPFdlYktpdENTU01hdHJp
eD4gV2ViS2l0Q1NTTWF0cml4OjpzY2FsZShkb3VibGUgc2NhbGVYLCBkb3VibGUgc2NhbGVZLCBk
b3VibGUgc2NhbGVaKSBjb25zdAorUmVmPFdlYktpdENTU01hdHJpeD4gV2ViS2l0Q1NTTWF0cml4
OjpzY2FsZShkb3VibGUgc2NhbGVYLCBkb3VibGUgc2NhbGVZLCBkb3VibGUgc2NhbGVaKSBjb25z
dAogewogICAgIGlmIChzdGQ6OmlzbmFuKHNjYWxlWCkpCiAgICAgICAgIHNjYWxlWCA9IDE7CkBA
IC0xMzEsMTIgKzEzMiwxMiBAQCBSZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiBXZWJLaXRDU1NNYXRy
aXg6OnNjYWxlKGRvdWJsZSBzY2FsZVgsIGRvdWJsZSBzY2FsZVksIGRvdQogICAgIGlmIChzdGQ6
OmlzbmFuKHNjYWxlWikpCiAgICAgICAgIHNjYWxlWiA9IDE7CiAKLSAgICBSZWZQdHI8V2ViS2l0
Q1NTTWF0cml4PiBtYXRyaXggPSBXZWJLaXRDU1NNYXRyaXg6OmNyZWF0ZShtX21hdHJpeCk7Cisg
ICAgYXV0byBtYXRyaXggPSBjcmVhdGUobV9tYXRyaXgpOwogICAgIG1hdHJpeC0+bV9tYXRyaXgu
c2NhbGUzZChzY2FsZVgsIHNjYWxlWSwgc2NhbGVaKTsKICAgICByZXR1cm4gbWF0cml4OwogfQog
Ci1SZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiBXZWJLaXRDU1NNYXRyaXg6OnJvdGF0ZShkb3VibGUg
cm90WCwgZG91YmxlIHJvdFksIGRvdWJsZSByb3RaKSBjb25zdAorUmVmPFdlYktpdENTU01hdHJp
eD4gV2ViS2l0Q1NTTWF0cml4Ojpyb3RhdGUoZG91YmxlIHJvdFgsIGRvdWJsZSByb3RZLCBkb3Vi
bGUgcm90WikgY29uc3QKIHsKICAgICBpZiAoc3RkOjppc25hbihyb3RYKSkKICAgICAgICAgcm90
WCA9IDA7CkBAIC0xNTIsMTIgKzE1MywxMiBAQCBSZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiBXZWJL
aXRDU1NNYXRyaXg6OnJvdGF0ZShkb3VibGUgcm90WCwgZG91YmxlIHJvdFksIGRvdWJsZQogICAg
IGlmIChzdGQ6OmlzbmFuKHJvdFopKQogICAgICAgICByb3RaID0gMDsKIAotICAgIFJlZlB0cjxX
ZWJLaXRDU1NNYXRyaXg+IG1hdHJpeCA9IFdlYktpdENTU01hdHJpeDo6Y3JlYXRlKG1fbWF0cml4
KTsKKyAgICBhdXRvIG1hdHJpeCA9IGNyZWF0ZShtX21hdHJpeCk7CiAgICAgbWF0cml4LT5tX21h
dHJpeC5yb3RhdGUzZChyb3RYLCByb3RZLCByb3RaKTsKICAgICByZXR1cm4gbWF0cml4OwogfQog
Ci1SZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiBXZWJLaXRDU1NNYXRyaXg6OnJvdGF0ZUF4aXNBbmds
ZShkb3VibGUgeCwgZG91YmxlIHksIGRvdWJsZSB6LCBkb3VibGUgYW5nbGUpIGNvbnN0CitSZWY8
V2ViS2l0Q1NTTWF0cml4PiBXZWJLaXRDU1NNYXRyaXg6OnJvdGF0ZUF4aXNBbmdsZShkb3VibGUg
eCwgZG91YmxlIHksIGRvdWJsZSB6LCBkb3VibGUgYW5nbGUpIGNvbnN0CiB7CiAgICAgaWYgKHN0
ZDo6aXNuYW4oeCkpCiAgICAgICAgIHggPSAwOwpAQCAtMTcwLDI3ICsxNzEsMjcgQEAgUmVmUHRy
PFdlYktpdENTU01hdHJpeD4gV2ViS2l0Q1NTTWF0cml4Ojpyb3RhdGVBeGlzQW5nbGUoZG91Ymxl
IHgsIGRvdWJsZSB5LCBkb3UKICAgICBpZiAoeCA9PSAwICYmIHkgPT0gMCAmJiB6ID09IDApCiAg
ICAgICAgIHogPSAxOwogCi0gICAgUmVmUHRyPFdlYktpdENTU01hdHJpeD4gbWF0cml4ID0gV2Vi
S2l0Q1NTTWF0cml4OjpjcmVhdGUobV9tYXRyaXgpOworICAgIGF1dG8gbWF0cml4ID0gY3JlYXRl
KG1fbWF0cml4KTsKICAgICBtYXRyaXgtPm1fbWF0cml4LnJvdGF0ZTNkKHgsIHksIHosIGFuZ2xl
KTsKICAgICByZXR1cm4gbWF0cml4OwogfQogCi1SZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiBXZWJL
aXRDU1NNYXRyaXg6OnNrZXdYKGRvdWJsZSBhbmdsZSkgY29uc3QKK1JlZjxXZWJLaXRDU1NNYXRy
aXg+IFdlYktpdENTU01hdHJpeDo6c2tld1goZG91YmxlIGFuZ2xlKSBjb25zdAogewogICAgIGlm
IChzdGQ6OmlzbmFuKGFuZ2xlKSkKICAgICAgICAgYW5nbGUgPSAwOwogCi0gICAgUmVmUHRyPFdl
YktpdENTU01hdHJpeD4gbWF0cml4ID0gV2ViS2l0Q1NTTWF0cml4OjpjcmVhdGUobV9tYXRyaXgp
OworICAgIGF1dG8gbWF0cml4ID0gY3JlYXRlKG1fbWF0cml4KTsKICAgICBtYXRyaXgtPm1fbWF0
cml4LnNrZXdYKGFuZ2xlKTsKICAgICByZXR1cm4gbWF0cml4OwogfQogCi1SZWZQdHI8V2ViS2l0
Q1NTTWF0cml4PiBXZWJLaXRDU1NNYXRyaXg6OnNrZXdZKGRvdWJsZSBhbmdsZSkgY29uc3QKK1Jl
ZjxXZWJLaXRDU1NNYXRyaXg+IFdlYktpdENTU01hdHJpeDo6c2tld1koZG91YmxlIGFuZ2xlKSBj
b25zdAogewogICAgIGlmIChzdGQ6OmlzbmFuKGFuZ2xlKSkKICAgICAgICAgYW5nbGUgPSAwOwog
Ci0gICAgUmVmUHRyPFdlYktpdENTU01hdHJpeD4gbWF0cml4ID0gV2ViS2l0Q1NTTWF0cml4Ojpj
cmVhdGUobV9tYXRyaXgpOworICAgIGF1dG8gbWF0cml4ID0gY3JlYXRlKG1fbWF0cml4KTsKICAg
ICBtYXRyaXgtPm1fbWF0cml4LnNrZXdZKGFuZ2xlKTsKICAgICByZXR1cm4gbWF0cml4OwogfQpA
QCAtMTk5LDEzICsyMDAsMTIgQEAgU3RyaW5nIFdlYktpdENTU01hdHJpeDo6dG9TdHJpbmcoKSBj
b25zdAogewogICAgIC8vIEZJWE1FIC0gTmVlZCB0byBlbnN1cmUgdmFsaWQgQ1NTIGZsb2F0aW5n
IHBvaW50IHZhbHVlcyAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
Njc0KQogICAgIGlmIChtX21hdHJpeC5pc0FmZmluZSgpKQotICAgICAgICByZXR1cm4gU3RyaW5n
Ojpmb3JtYXQoIm1hdHJpeCglZiwgJWYsICVmLCAlZiwgJWYsICVmKSIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1fbWF0cml4LmEoKSwgbV9tYXRyaXguYigpLCBtX21hdHJpeC5j
KCksIG1fbWF0cml4LmQoKSwgbV9tYXRyaXguZSgpLCBtX21hdHJpeC5mKCkpOworICAgICAgICBy
ZXR1cm4gU3RyaW5nOjpmb3JtYXQoIm1hdHJpeCglZiwgJWYsICVmLCAlZiwgJWYsICVmKSIsIG1f
bWF0cml4LmEoKSwgbV9tYXRyaXguYigpLCBtX21hdHJpeC5jKCksIG1fbWF0cml4LmQoKSwgbV9t
YXRyaXguZSgpLCBtX21hdHJpeC5mKCkpOwogICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgibWF0
cml4M2QoJWYsICVmLCAlZiwgJWYsICVmLCAlZiwgJWYsICVmLCAlZiwgJWYsICVmLCAlZiwgJWYs
ICVmLCAlZiwgJWYpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX21hdHJpeC5tMTEo
KSwgbV9tYXRyaXgubTEyKCksIG1fbWF0cml4Lm0xMygpLCBtX21hdHJpeC5tMTQoKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtX21hdHJpeC5tMjEoKSwgbV9tYXRyaXgubTIyKCksIG1f
bWF0cml4Lm0yMygpLCBtX21hdHJpeC5tMjQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtX21hdHJpeC5tMzEoKSwgbV9tYXRyaXgubTMyKCksIG1fbWF0cml4Lm0zMygpLCBtX21hdHJp
eC5tMzQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX21hdHJpeC5tNDEoKSwgbV9t
YXRyaXgubTQyKCksIG1fbWF0cml4Lm00MygpLCBtX21hdHJpeC5tNDQoKSk7CisgICAgICAgIG1f
bWF0cml4Lm0xMSgpLCBtX21hdHJpeC5tMTIoKSwgbV9tYXRyaXgubTEzKCksIG1fbWF0cml4Lm0x
NCgpLAorICAgICAgICBtX21hdHJpeC5tMjEoKSwgbV9tYXRyaXgubTIyKCksIG1fbWF0cml4Lm0y
MygpLCBtX21hdHJpeC5tMjQoKSwKKyAgICAgICAgbV9tYXRyaXgubTMxKCksIG1fbWF0cml4Lm0z
MigpLCBtX21hdHJpeC5tMzMoKSwgbV9tYXRyaXgubTM0KCksCisgICAgICAgIG1fbWF0cml4Lm00
MSgpLCBtX21hdHJpeC5tNDIoKSwgbV9tYXRyaXgubTQzKCksIG1fbWF0cml4Lm00NCgpKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L1dlYktpdENTU01hdHJpeC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5o
CmluZGV4IDg5MjFjZTQ2NjA0MjA2MTFmNzFhYjA1YzQ2ODIxYzgyOTY1YTk5NmMuLjg0YzAyNzli
ZjUwZTc1NTIwODMxZTQzYmI4YWY2ODZmYjI2ZmEyMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9XZWJLaXRDU1NNYXRyaXguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0
Q1NTTWF0cml4LmgKQEAgLTIzLDI5ICsyMywxOCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0j
aWZuZGVmIFdlYktpdENTU01hdHJpeF9oCi0jZGVmaW5lIFdlYktpdENTU01hdHJpeF9oCisjcHJh
Z21hIG9uY2UKIAorI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAiU2NyaXB0V3Jh
cHBhYmxlLmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKLSNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi10eXBlZGVmIGludCBF
eGNlcHRpb25Db2RlOwotCiBjbGFzcyBXZWJLaXRDU1NNYXRyaXggZmluYWwgOiBwdWJsaWMgU2Ny
aXB0V3JhcHBhYmxlLCBwdWJsaWMgUmVmQ291bnRlZDxXZWJLaXRDU1NNYXRyaXg+IHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPFdlYktpdENTU01hdHJpeD4gY3JlYXRlKGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiBtKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2Vi
S2l0Q1NTTWF0cml4KG0pKTsKLSAgICB9Ci0gICAgc3RhdGljIFJlZjxXZWJLaXRDU1NNYXRyaXg+
IGNyZWF0ZShjb25zdCBTdHJpbmcmIHMsIEV4Y2VwdGlvbkNvZGUmIGVjKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViS2l0Q1NTTWF0cml4KHMsIGVjKSk7Ci0gICAgfQor
ICAgIHN0YXRpYyBSZWY8V2ViS2l0Q1NTTWF0cml4PiBjcmVhdGUoY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmKTsKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPFdlYktpdENTU01hdHJpeD4+
IGNyZWF0ZShjb25zdCBTdHJpbmcmKTsKIAogICAgIH5XZWJLaXRDU1NNYXRyaXgoKTsKIApAQCAt
OTcsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRNNDMoZG91YmxlIGYpIHsgbV9tYXRy
aXguc2V0TTQzKGYpOyB9CiAgICAgdm9pZCBzZXRNNDQoZG91YmxlIGYpIHsgbV9tYXRyaXguc2V0
TTQ0KGYpOyB9CiAKLSAgICB2b2lkIHNldE1hdHJpeFZhbHVlKGNvbnN0IFN0cmluZyYsIEV4Y2Vw
dGlvbkNvZGUmKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRNYXRyaXhWYWx1ZShjb25zdCBT
dHJpbmcmKTsKIAogICAgIC8vIFRoZSBmb2xsb3dpbmcgbWF0aCBmdW5jdGlvbiByZXR1cm4gYSBu
ZXcgbWF0cml4IHdpdGggdGhlCiAgICAgLy8gc3BlY2lmaWVkIG9wZXJhdGlvbiBhcHBsaWVkLiBU
aGUgdGhpcyB2YWx1ZSBpcyBub3QgbW9kaWZpZWQuCkBAIC0xMDYsNTcgKzk1LDU1IEBAIHB1Ymxp
YzoKICAgICBSZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiBtdWx0aXBseShXZWJLaXRDU1NNYXRyaXgq
IHNlY29uZE1hdHJpeCkgY29uc3Q7CiAKICAgICAvLyBSZXR1cm4gdGhlIGludmVyc2Ugb2YgdGhp
cyBtYXRyaXguIFRocm93IGFuIGV4Y2VwdGlvbiBpZiB0aGUgbWF0cml4IGlzIG5vdCBpbnZlcnRp
YmxlCi0gICAgUmVmUHRyPFdlYktpdENTU01hdHJpeD4gaW52ZXJzZShFeGNlcHRpb25Db2RlJikg
Y29uc3Q7CisgICAgRXhjZXB0aW9uT3I8UmVmPFdlYktpdENTU01hdHJpeD4+IGludmVyc2UoKSBj
b25zdDsKIAogICAgIC8vIFJldHVybiB0aGlzIG1hdHJpeCB0cmFuc2xhdGVkIGJ5IHRoZSBwYXNz
ZWQgdmFsdWVzLgogICAgIC8vIFBhc3NpbmcgYSBOYU4gd2lsbCB1c2UgYSB2YWx1ZSBvZiAwLiBU
aGlzIGFsbG93cyB0aGUgM0QgZm9ybSB0byB1c2VkIGZvciAyRCBvcGVyYXRpb25zCiAgICAgLy8g
T3BlcmF0aW9uIGlzIHBlcmZvcm1lZCBhcyB0aG91Z2ggdGhlIHRoaXMgbWF0cml4IGlzIG11bHRp
cGxpZWQgYnkgYSBtYXRyaXggd2l0aAogICAgIC8vIHRoZSB0cmFuc2xhdGlvbiB2YWx1ZXMgb24g
dGhlIGxlZnQgKHJlc3VsdCA9IHRyYW5zbGF0aW9uKHgseSx6KSAqIHRoaXMpCi0gICAgUmVmUHRy
PFdlYktpdENTU01hdHJpeD4gdHJhbnNsYXRlKGRvdWJsZSB4LCBkb3VibGUgeSwgZG91YmxlIHop
IGNvbnN0OworICAgIFJlZjxXZWJLaXRDU1NNYXRyaXg+IHRyYW5zbGF0ZShkb3VibGUgeCwgZG91
YmxlIHksIGRvdWJsZSB6KSBjb25zdDsKIAogICAgIC8vIFJldHVybnMgdGhpcyBtYXRyaXggc2Nh
bGVkIGJ5IHRoZSBwYXNzZWQgdmFsdWVzLgogICAgIC8vIFBhc3Npbmcgc2NhbGVYIG9yIHNjYWxl
WiBhcyBOYU4gdXNlcyBhIHZhbHVlIG9mIDEsIGJ1dCBwYXNzaW5nIHNjYWxlWSBvZiBOYU4KICAg
ICAvLyBtYWtlcyBpdCB0aGUgc2FtZSBhcyBzY2FsZVguIFRoaXMgYWxsb3dzIHRoZSAzRCBmb3Jt
IHRvIHVzZWQgZm9yIDJEIG9wZXJhdGlvbnMKICAgICAvLyBPcGVyYXRpb24gaXMgcGVyZm9ybWVk
IGFzIHRob3VnaCB0aGUgdGhpcyBtYXRyaXggaXMgbXVsdGlwbGllZCBieSBhIG1hdHJpeCB3aXRo
CiAgICAgLy8gdGhlIHNjYWxlIHZhbHVlcyBvbiB0aGUgbGVmdCAocmVzdWx0ID0gc2NhbGUoeCx5
LHopICogdGhpcykKLSAgICBSZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiBzY2FsZShkb3VibGUgc2Nh
bGVYLCBkb3VibGUgc2NhbGVZLCBkb3VibGUgc2NhbGVaKSBjb25zdDsKKyAgICBSZWY8V2ViS2l0
Q1NTTWF0cml4PiBzY2FsZShkb3VibGUgc2NhbGVYLCBkb3VibGUgc2NhbGVZLCBkb3VibGUgc2Nh
bGVaKSBjb25zdDsKIAogICAgIC8vIFJldHVybnMgdGhpcyBtYXRyaXggcm90YXRlZCBieSB0aGUg
cGFzc2VkIHZhbHVlcy4KICAgICAvLyBJZiByb3RZIGFuZCByb3RaIGFyZSBOYU4sIHJvdGF0ZSBh
Ym91dCBaIChyb3RYPTAsIHJvdGF0ZVk9MCwgcm90YXRlWj1yb3RYKS4KICAgICAvLyBPdGhlcndp
c2UgdXNlIGEgcm90YXRpb24gdmFsdWUgb2YgMCBmb3IgYW55IHBhc3NlZCBOYU4uCiAgICAgLy8g
T3BlcmF0aW9uIGlzIHBlcmZvcm1lZCBhcyB0aG91Z2ggdGhlIHRoaXMgbWF0cml4IGlzIG11bHRp
cGxpZWQgYnkgYSBtYXRyaXggd2l0aAogICAgIC8vIHRoZSByb3RhdGlvbiB2YWx1ZXMgb24gdGhl
IGxlZnQgKHJlc3VsdCA9IHJvdGF0aW9uKHgseSx6KSAqIHRoaXMpCi0gICAgUmVmUHRyPFdlYktp
dENTU01hdHJpeD4gcm90YXRlKGRvdWJsZSByb3RYLCBkb3VibGUgcm90WSwgZG91YmxlIHJvdFop
IGNvbnN0OworICAgIFJlZjxXZWJLaXRDU1NNYXRyaXg+IHJvdGF0ZShkb3VibGUgcm90WCwgZG91
YmxlIHJvdFksIGRvdWJsZSByb3RaKSBjb25zdDsKIAogICAgIC8vIFJldHVybnMgdGhpcyBtYXRy
aXggcm90YXRlZCBhYm91dCB0aGUgcGFzc2VkIGF4aXMgYnkgdGhlIHBhc3NlZCBhbmdsZS4KICAg
ICAvLyBQYXNzaW5nIGEgTmFOIHdpbGwgdXNlIGEgdmFsdWUgb2YgMC4gSWYgdGhlIGF4aXMgaXMg
KDAsMCwwKSB1c2UgYSB2YWx1ZQogICAgIC8vIE9wZXJhdGlvbiBpcyBwZXJmb3JtZWQgYXMgdGhv
dWdoIHRoZSB0aGlzIG1hdHJpeCBpcyBtdWx0aXBsaWVkIGJ5IGEgbWF0cml4IHdpdGgKICAgICAv
LyB0aGUgcm90YXRpb24gdmFsdWVzIG9uIHRoZSBsZWZ0IChyZXN1bHQgPSByb3RhdGlvbih4LHks
eixhbmdsZSkgKiB0aGlzKQotICAgIFJlZlB0cjxXZWJLaXRDU1NNYXRyaXg+IHJvdGF0ZUF4aXNB
bmdsZShkb3VibGUgeCwgZG91YmxlIHksIGRvdWJsZSB6LCBkb3VibGUgYW5nbGUpIGNvbnN0Owor
ICAgIFJlZjxXZWJLaXRDU1NNYXRyaXg+IHJvdGF0ZUF4aXNBbmdsZShkb3VibGUgeCwgZG91Ymxl
IHksIGRvdWJsZSB6LCBkb3VibGUgYW5nbGUpIGNvbnN0OwogCiAgICAgLy8gUmV0dXJuIHRoaXMg
bWF0cml4IHNrZXdlZCBhbG9uZyB0aGUgWCBheGlzIGJ5IHRoZSBwYXNzZWQgdmFsdWVzLgogICAg
IC8vIFBhc3NpbmcgYSBOYU4gd2lsbCB1c2UgYSB2YWx1ZSBvZiAwLgogICAgIC8vIE9wZXJhdGlv
biBpcyBwZXJmb3JtZWQgYXMgdGhvdWdoIHRoZSB0aGlzIG1hdHJpeCBpcyBtdWx0aXBsaWVkIGJ5
IGEgbWF0cml4IHdpdGgKICAgICAvLyB0aGUgc2tldyB2YWx1ZXMgb24gdGhlIGxlZnQgKHJlc3Vs
dCA9IHNrZXdYKGFuZ2xlKSAqIHRoaXMpCi0gICAgUmVmUHRyPFdlYktpdENTU01hdHJpeD4gc2tl
d1goZG91YmxlIGFuZ2xlKSBjb25zdDsKKyAgICBSZWY8V2ViS2l0Q1NTTWF0cml4PiBza2V3WChk
b3VibGUgYW5nbGUpIGNvbnN0OwogCiAgICAgLy8gUmV0dXJuIHRoaXMgbWF0cml4IHNrZXdlZCBh
bG9uZyB0aGUgWSBheGlzIGJ5IHRoZSBwYXNzZWQgdmFsdWVzLgogICAgIC8vIFBhc3NpbmcgYSBO
YU4gd2lsbCB1c2UgYSB2YWx1ZSBvZiAwLgogICAgIC8vIE9wZXJhdGlvbiBpcyBwZXJmb3JtZWQg
YXMgdGhvdWdoIHRoZSB0aGlzIG1hdHJpeCBpcyBtdWx0aXBsaWVkIGJ5IGEgbWF0cml4IHdpdGgK
ICAgICAvLyB0aGUgc2tldyB2YWx1ZXMgb24gdGhlIGxlZnQgKHJlc3VsdCA9IHNrZXdZKGFuZ2xl
KSAqIHRoaXMpCi0gICAgUmVmUHRyPFdlYktpdENTU01hdHJpeD4gc2tld1koZG91YmxlIGFuZ2xl
KSBjb25zdDsKKyAgICBSZWY8V2ViS2l0Q1NTTWF0cml4PiBza2V3WShkb3VibGUgYW5nbGUpIGNv
bnN0OwogCiAgICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSgpIGNvbnN0
IHsgcmV0dXJuIG1fbWF0cml4OyB9CiAKICAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsKIAot
cHJvdGVjdGVkOgorcHJpdmF0ZToKKyAgICBXZWJLaXRDU1NNYXRyaXgoKSA9IGRlZmF1bHQ7CiAg
ICAgV2ViS2l0Q1NTTWF0cml4KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jik7Ci0gICAgV2Vi
S2l0Q1NTTWF0cml4KGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIFRyYW5z
Zm9ybWF0aW9uTWF0cml4IG1fbWF0cml4OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYgLy8gV2ViS2l0Q1NTTWF0cml4X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9XZWJLaXRDU1NNYXRyaXguaWRsIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU01h
dHJpeC5pZGwKaW5kZXggYjdmMTJiMmNjNjNmNDk1ZGM1Yzg3Y2UyYzllMmEwZDY1MDVmZTdmMy4u
YjhkNWYzMjZhODUzY2IzMjcyNTMxNjk5YjRhMWFmNzFhN2NjNWY1ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1dlYktpdENTU01hdHJpeC5pZGwKQEAgLTIzLDEwICsyMyw5IEBACiAgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKICAqLwogCi0vLyBJbnRyb2R1Y2VkIGluIERPTSBMZXZlbCA/OgogWwogICAgIENvbnN0cnVj
dG9yKG9wdGlvbmFsIERPTVN0cmluZyBjc3NWYWx1ZSksCi0gICAgQ29uc3RydWN0b3JNYXlUaHJv
d0xlZ2FjeUV4Y2VwdGlvbiwKKyAgICBDb25zdHJ1Y3Rvck1heVRocm93RXhjZXB0aW9uLAogICAg
IEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCiBdIGludGVyZmFjZSBXZWJLaXRDU1NNYXRyaXgg
ewogCkBAIC01NywxMyArNTYsMTMgQEAKICAgICBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJs
ZSBtNDQ7CiAKICAgICAvLyBGSVhNRTogVXNpbmcgInVuZGVmaW5lZCIgYXMgZGVmYXVsdCBwYXJh
bWV0ZXIgdmFsdWUgaXMgd3JvbmcuCi0gICAgW01heVRocm93TGVnYWN5RXhjZXB0aW9uXSB2b2lk
IHNldE1hdHJpeFZhbHVlKG9wdGlvbmFsIERPTVN0cmluZyBzdHJpbmcgPSAidW5kZWZpbmVkIik7
CisgICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHNldE1hdHJpeFZhbHVlKG9wdGlvbmFsIERP
TVN0cmluZyBzdHJpbmcgPSAidW5kZWZpbmVkIik7CiAgICAgCiAgICAgLy8gTXVsdGlwbHkgdGhp
cyBtYXRyaXggYnkgc2Vjb25kTWF0cml4LCBvbiB0aGUgcmlnaHQgKHJlc3VsdCA9IHRoaXMgKiBz
ZWNvbmRNYXRyaXgpCiAgICAgW0ltbXV0YWJsZV0gV2ViS2l0Q1NTTWF0cml4IG11bHRpcGx5KG9w
dGlvbmFsIFdlYktpdENTU01hdHJpeD8gc2Vjb25kTWF0cml4ID0gbnVsbCk7CiAgICAgCiAgICAg
Ly8gUmV0dXJuIHRoZSBpbnZlcnNlIG9mIHRoaXMgbWF0cml4LiBUaHJvdyBhbiBleGNlcHRpb24g
aWYgdGhlIG1hdHJpeCBpcyBub3QgaW52ZXJ0aWJsZQotICAgIFtJbW11dGFibGUsIE1heVRocm93
TGVnYWN5RXhjZXB0aW9uXSBXZWJLaXRDU1NNYXRyaXggaW52ZXJzZSgpOworICAgIFtJbW11dGFi
bGUsIE1heVRocm93RXhjZXB0aW9uXSBXZWJLaXRDU1NNYXRyaXggaW52ZXJzZSgpOwogICAgIAog
ICAgIC8vIFJldHVybiB0aGlzIG1hdHJpeCB0cmFuc2xhdGVkIGJ5IHRoZSBwYXNzZWQgdmFsdWVz
LgogICAgIC8vIFBhc3NpbmcgYSBOYU4gd2lsbCB1c2UgYSB2YWx1ZSBvZiAwLiBUaGlzIGFsbG93
cyB0aGUgM0QgZm9ybSB0byB1c2VkIGZvciAyRCBvcGVyYXRpb25zCkBAIC0xMDMsNCArMTAyLDMg
QEAKIAogICAgIFtOb3RFbnVtZXJhYmxlXSBET01TdHJpbmcgdG9TdHJpbmcoKTsKIH07Ci0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9tYWtlcHJvcC5wbCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9tYWtlcHJvcC5wbAppbmRleCA5ZTk2ZDliYWJiMTJhNDBmYjgwOTdmMGEwNjNjYmY4ODE5
MjMxNzMxLi40MjNmYmE2YjcwNDAwMWQ1MjhjNDZlNzJlMzA3ZTllYmVmNjY0NjA1IDEwMDc1NQot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvbWFrZXByb3AucGwKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL21ha2Vwcm9wLnBsCkBAIC01MTgsNyArNTE4LDcgQEAgc3ViIGhhbmRsZUN1cnJlbnRDb2xv
clZhbHVlIHsKICAgbXkgJHByaW1pdGl2ZVZhbHVlID0gc2hpZnQ7CiAgIG15ICRpbmRlbnQgPSBz
aGlmdDsKIAotICBteSAkY29kZSA9ICRpbmRlbnQgLiAiaWYgKCIgLiAkcHJpbWl0aXZlVmFsdWUg
LiAiLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZUN1cnJlbnRjb2xvcikge1xuIjsKKyAgbXkgJGNv
ZGUgPSAkaW5kZW50IC4gImlmICgiIC4gJHByaW1pdGl2ZVZhbHVlIC4gIi52YWx1ZUlEKCkgPT0g
Q1NTVmFsdWVDdXJyZW50Y29sb3IpIHtcbiI7CiAgICRjb2RlIC49ICRpbmRlbnQgLiAiICAgIGFw
cGx5SW5oZXJpdCIgLiAkbmFtZVRvSWR7JG5hbWV9IC4gIihzdHlsZVJlc29sdmVyKTtcbiI7CiAg
ICRjb2RlIC49ICRpbmRlbnQgLiAiICAgIHJldHVybjtcbiI7CiAgICRjb2RlIC49ICRpbmRlbnQg
LiAifVxuIjsKQEAgLTc5NCw3ICs3OTQsNyBAQCBzdWIgZ2VuZXJhdGVWYWx1ZVNldHRlciB7CiAg
IG15ICRzdHlsZSA9ICJzdHlsZVJlc29sdmVyLnN0eWxlKCkiOwogICBteSAkZGlkQ2FsbFNldFZh
bHVlID0gMDsKICAgaWYgKGV4aXN0cyAkcHJvcGVydGllc1dpdGhTdHlsZUJ1aWxkZXJPcHRpb25z
eyRuYW1lfXsiQXV0b0Z1bmN0aW9ucyJ9KSB7Ci0gICAgJHNldHRlckNvbnRlbnQgLj0gJGluZGVu
dCAuICIgICAgaWYgKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkuZ2V0VmFsdWVJ
RCgpID09IENTU1ZhbHVlQXV0bykge1xuIjsKKyAgICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50
IC4gIiAgICBpZiAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS52YWx1ZUlEKCkg
PT0gQ1NTVmFsdWVBdXRvKSB7XG4iOwogICAgICRzZXR0ZXJDb250ZW50IC49ICRpbmRlbnQgLiAi
ICAgICAgICAiLiBnZXRBdXRvU2V0dGVyKCRuYW1lLCAkc3R5bGUpIC4gIjtcbiI7CiAgICAgJHNl
dHRlckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgICAgIHJldHVybjtcbiI7CiAgICAgJHNldHRl
ckNvbnRlbnQgLj0gJGluZGVudCAuICIgICAgfVxuIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIv
Q1NTUGFyc2VyLmNwcAppbmRleCAzZTA2Zjg1MjI3MzQzZjlkNjliNzhhMjU3MDgzOTExY2U5ZmNh
OGZhLi4yNDI2Y2MzMmI3ZjhkYjY3OTU4Y2Q0MTIyZGRkZWI5MjFiZWY4NmYzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuY3BwCkBAIC00MjQ1LDcgKzQyNDUsNyBAQCB2b2lk
IENTU1BhcnNlcjo6cGFyc2U0VmFsdWVzRmlsbFBvc2l0aW9uKENTU1BhcnNlclZhbHVlTGlzdCYg
dmFsdWVMaXN0LCBSZWZQdHI8QwogewogICAgIC8vIFsgbGVmdCB8IHJpZ2h0IF0gWyA8cGVyY2Vu
dGFnZV0gfCA8bGVuZ3RoPiBdICYmIFsgdG9wIHwgYm90dG9tIF0gWyA8cGVyY2VudGFnZT4gfCA8
bGVuZ3RoPiBdCiAgICAgLy8gSW4gdGhlIGNhc2Ugb2YgNCB2YWx1ZXMgPHBvc2l0aW9uPiByZXF1
aXJlcyB0aGUgc2Vjb25kIHZhbHVlIHRvIGJlIGEgbGVuZ3RoIG9yIGEgcGVyY2VudGFnZS4KLSAg
ICBpZiAoaXNGaWxsUG9zaXRpb25LZXl3b3JkKHBhcnNlZFZhbHVlMi0+Z2V0VmFsdWVJRCgpKSkK
KyAgICBpZiAoaXNGaWxsUG9zaXRpb25LZXl3b3JkKHBhcnNlZFZhbHVlMi0+dmFsdWVJRCgpKSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgdW5zaWduZWQgY3VtdWxhdGl2ZUZsYWdzID0gMDsKQEAg
LTQyNTQsOCArNDI1NCw4IEBAIHZvaWQgQ1NTUGFyc2VyOjpwYXJzZTRWYWx1ZXNGaWxsUG9zaXRp
b24oQ1NTUGFyc2VyVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIFJlZlB0cjxDCiAgICAgaWYgKCF2YWx1
ZTMpCiAgICAgICAgIHJldHVybjsKIAotICAgIENTU1ZhbHVlSUQgaWRlbnQxID0gcGFyc2VkVmFs
dWUxLT5nZXRWYWx1ZUlEKCk7Ci0gICAgQ1NTVmFsdWVJRCBpZGVudDMgPSB2YWx1ZTMtPmdldFZh
bHVlSUQoKTsKKyAgICBDU1NWYWx1ZUlEIGlkZW50MSA9IHBhcnNlZFZhbHVlMS0+dmFsdWVJRCgp
OworICAgIENTU1ZhbHVlSUQgaWRlbnQzID0gdmFsdWUzLT52YWx1ZUlEKCk7CiAKICAgICBpZiAo
aWRlbnQxID09IENTU1ZhbHVlQ2VudGVyKQogICAgICAgICByZXR1cm47CkBAIC00Mjc4LDcgKzQy
NzgsNyBAQCB2b2lkIENTU1BhcnNlcjo6cGFyc2U0VmFsdWVzRmlsbFBvc2l0aW9uKENTU1BhcnNl
clZhbHVlTGlzdCYgdmFsdWVMaXN0LCBSZWZQdHI8QwogICAgICAgICByZXR1cm47CiAKICAgICAv
LyA0dGggdmFsdWUgbXVzdCBiZSBhIGxlbmd0aCBvciBhIHBlcmNlbnRhZ2UuCi0gICAgaWYgKGlz
RmlsbFBvc2l0aW9uS2V5d29yZCh2YWx1ZTQtPmdldFZhbHVlSUQoKSkpCisgICAgaWYgKGlzRmls
bFBvc2l0aW9uS2V5d29yZCh2YWx1ZTQtPnZhbHVlSUQoKSkpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIHZhbHVlMSA9IGNyZWF0ZVByaW1pdGl2ZVZhbHVlUGFpcihXVEZNb3ZlKHBhcnNlZFZhbHVl
MSksIFdURk1vdmUocGFyc2VkVmFsdWUyKSk7CkBAIC00MzAzLDkgKzQzMDMsOSBAQCB2b2lkIENT
U1BhcnNlcjo6cGFyc2UzVmFsdWVzRmlsbFBvc2l0aW9uKENTU1BhcnNlclZhbHVlTGlzdCYgdmFs
dWVMaXN0LCBSZWZQdHI8QwogICAgIHZhbHVlTGlzdC5uZXh0KCk7CiAKICAgICBib29sIHN3YXBO
ZWVkZWQgPSBmYWxzZTsKLSAgICBDU1NWYWx1ZUlEIGlkZW50MSA9IHBhcnNlZFZhbHVlMS0+Z2V0
VmFsdWVJRCgpOwotICAgIENTU1ZhbHVlSUQgaWRlbnQyID0gcGFyc2VkVmFsdWUyLT5nZXRWYWx1
ZUlEKCk7Ci0gICAgQ1NTVmFsdWVJRCBpZGVudDMgPSB2YWx1ZTMtPmdldFZhbHVlSUQoKTsKKyAg
ICBDU1NWYWx1ZUlEIGlkZW50MSA9IHBhcnNlZFZhbHVlMS0+dmFsdWVJRCgpOworICAgIENTU1Zh
bHVlSUQgaWRlbnQyID0gcGFyc2VkVmFsdWUyLT52YWx1ZUlEKCk7CisgICAgQ1NTVmFsdWVJRCBp
ZGVudDMgPSB2YWx1ZTMtPnZhbHVlSUQoKTsKIAogICAgIENTU1ZhbHVlSUQgZmlyc3RQb3NpdGlv
bktleXdvcmQ7CiAgICAgQ1NTVmFsdWVJRCBzZWNvbmRQb3NpdGlvbktleXdvcmQ7CkBAIC00Mzc1
LDggKzQzNzUsOCBAQCB2b2lkIENTU1BhcnNlcjo6cGFyc2UzVmFsdWVzRmlsbFBvc2l0aW9uKENT
U1BhcnNlclZhbHVlTGlzdCYgdmFsdWVMaXN0LCBSZWZQdHI8QwogI2lmbmRlZiBOREVCVUcKICAg
ICBDU1NQcmltaXRpdmVWYWx1ZSYgZmlyc3QgPSAqdmFsdWUxOwogICAgIENTU1ByaW1pdGl2ZVZh
bHVlJiBzZWNvbmQgPSAqdmFsdWUyOwotICAgIGlkZW50MSA9IGZpcnN0LmdldFBhaXJWYWx1ZSgp
LT5maXJzdCgpLT5nZXRWYWx1ZUlEKCk7Ci0gICAgaWRlbnQyID0gc2Vjb25kLmdldFBhaXJWYWx1
ZSgpLT5maXJzdCgpLT5nZXRWYWx1ZUlEKCk7CisgICAgaWRlbnQxID0gZmlyc3QucGFpclZhbHVl
KCktPmZpcnN0KCktPnZhbHVlSUQoKTsKKyAgICBpZGVudDIgPSBzZWNvbmQucGFpclZhbHVlKCkt
PmZpcnN0KCktPnZhbHVlSUQoKTsKICAgICBBU1NFUlQoaWRlbnQxID09IENTU1ZhbHVlTGVmdCB8
fCBpZGVudDEgPT0gQ1NTVmFsdWVSaWdodCk7CiAgICAgQVNTRVJUKGlkZW50MiA9PSBDU1NWYWx1
ZUJvdHRvbSB8fCBpZGVudDIgPT0gQ1NTVmFsdWVUb3ApOwogI2VuZGlmCkBAIC00NDQxLDcgKzQ0
NDEsNyBAQCB2b2lkIENTU1BhcnNlcjo6cGFyc2VGaWxsUG9zaXRpb24oQ1NTUGFyc2VyVmFsdWVM
aXN0JiB2YWx1ZUxpc3QsIFJlZlB0cjxDU1NQcmltaQogICAgIGF1dG8gcGFyc2VkVmFsdWUyID0g
dmFsdWUyLnJlbGVhc2VOb25OdWxsKCk7CiAKICAgICAvLyBQZXIgQ1NTMyBzeW50YXgsIDxwb3Np
dGlvbj4gY2FuJ3QgaGF2ZSAnY2VudGVyJyBhcyBpdHMgc2Vjb25kIGtleXdvcmQgYXMgd2UgaGF2
ZSBtb3JlIGFyZ3VtZW50cyB0byBmb2xsb3cuCi0gICAgaWYgKHBhcnNlZFZhbHVlMi0+Z2V0VmFs
dWVJRCgpID09IENTU1ZhbHVlQ2VudGVyKQorICAgIGlmIChwYXJzZWRWYWx1ZTItPnZhbHVlSUQo
KSA9PSBDU1NWYWx1ZUNlbnRlcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG51bWJlck9m
VmFsdWVzID09IDMpCkBAIC00NTMyLDcgKzQ1MzIsNyBAQCB2b2lkIENTU1BhcnNlcjo6cGFyc2VG
aWxsUmVwZWF0KFJlZlB0cjxDU1NWYWx1ZT4mIHZhbHVlMSwgUmVmUHRyPENTU1ZhbHVlPiYgdmFs
dQogCiAgICAgLy8gSWYgb25seSBvbmUgdmFsdWUgd2FzIHNwZWNpZmllZCwgdmFsdWUyIGlzIHRo
ZSBzYW1lIGFzIHZhbHVlMS4KICAgICBtX2ltcGxpY2l0U2hvcnRoYW5kID0gdHJ1ZTsKLSAgICB2
YWx1ZTIgPSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShk
b3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVlMSkuZ2V0VmFsdWVJRCgpKTsKKyAgICB2
YWx1ZTIgPSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShk
b3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVlMSkudmFsdWVJRCgpKTsKIH0KIAogUmVm
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlRmlsbFNpemUoQ1NTUHJvcGVy
dHlJRCBwcm9wSWQsIGJvb2wmIGFsbG93Q29tbWEpCkBAIC01Mjc0LDEyICs1Mjc0LDEyIEBAIFJl
ZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUdyaWRQb3NpdGlvbigpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCiAgICAgLy8gTmVnYXRpdmUgbnVtYmVycyBhcmUgbm90IGFsbG93ZWQg
Zm9yIHNwYW4gKGJ1dCBhcmUgZm9yIDxpbnRlZ2VyPikuCi0gICAgaWYgKGhhc1NlZW5TcGFuS2V5
d29yZCAmJiBudW1lcmljVmFsdWUgJiYgbnVtZXJpY1ZhbHVlLT5nZXRJbnRWYWx1ZSgpIDwgMCkK
KyAgICBpZiAoaGFzU2VlblNwYW5LZXl3b3JkICYmIG51bWVyaWNWYWx1ZSAmJiBudW1lcmljVmFs
dWUtPmludFZhbHVlKCkgPCAwKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIEZv
ciB0aGUgPGN1c3RvbS1pZGVudD4gY2FzZS4KICAgICBpZiAoZ3JpZExpbmVOYW1lICYmICFudW1l
cmljVmFsdWUgJiYgIWhhc1NlZW5TcGFuS2V5d29yZCkKLSAgICAgICAgcmV0dXJuIENTU1ZhbHVl
UG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlVmFsdWUoZ3JpZExpbmVOYW1lLT5nZXRTdHJpbmdWYWx1
ZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORyk7CisgICAgICAgIHJldHVybiBDU1NW
YWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZVZhbHVlKGdyaWRMaW5lTmFtZS0+c3RyaW5nVmFs
dWUoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcpOwogCiAgICAgYXV0byB2YWx1ZXMg
PSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CiAgICAgaWYgKGhhc1NlZW5T
cGFuS2V5d29yZCkKQEAgLTU0MzcsNyArNTQzNyw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUdy
aWRUZW1wbGF0ZVJvd3NBbmRBcmVhc0FuZENvbHVtbnMoYm9vbCBpbXBvcnRhbnQpCiAgICAgICAg
IGlmICghdGVtcGxhdGVDb2x1bW5zKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICAvLyBUaGUgdGVtcGxhdGUtY29sdW1ucyA8dHJhY2stbGlzdD4gY2FuJ3QgYmUgJ25vbmUnLgot
ICAgICAgICBpZiAodGVtcGxhdGVDb2x1bW5zLT5pc1ByaW1pdGl2ZVZhbHVlKCkgJiYgZG93bmNh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp0ZW1wbGF0ZUNvbHVtbnMpLmdldFZhbHVlSUQoKSA9PSBD
U1NWYWx1ZU5vbmUpCisgICAgICAgIGlmICh0ZW1wbGF0ZUNvbHVtbnMtPmlzUHJpbWl0aXZlVmFs
dWUoKSAmJiBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnRlbXBsYXRlQ29sdW1ucykudmFs
dWVJRCgpID09IENTU1ZhbHVlTm9uZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAKQEAgLTU3MDEsNyArNTcwMSw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUdyaWRMaW5lTmFt
ZXMoQ1NTUGFyc2VyVmFsdWVMaXN0JiBpbnB1dExpc3QsIENTU1ZhbHVlTGlzdCYKIAogc3RhdGlj
IGJvb2wgaXNHcmlkVHJhY2tGaXhlZFNpemVkKGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJiB2YWx1
ZSkKIHsKLSAgICBDU1NWYWx1ZUlEIHZhbHVlSUQgPSB2YWx1ZS5nZXRWYWx1ZUlEKCk7CisgICAg
Q1NTVmFsdWVJRCB2YWx1ZUlEID0gdmFsdWUudmFsdWVJRCgpOwogICAgIGlmICh2YWx1ZUlEID09
IENTU1ZhbHVlV2Via2l0TWluQ29udGVudCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlV2Via2l0TWF4
Q29udGVudCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZS5pc0ZsZXgoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC05MTc4LDEwICs5MTc4LDEwIEBAIGJvb2wgQ1NTUGFy
c2VyOjpwYXJzZVJhZGlhbEdyYWRpZW50KENTU1BhcnNlclZhbHVlTGlzdCYgdmFsdWVMaXN0LCBS
ZWZQdHI8Q1NTVmFsCiAgICAgaWYgKHNpemVWYWx1ZSAmJiBob3Jpem9udGFsU2l6ZSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIC8vIENpcmNsZXMgbXVzdCBoYXZlIDAgb3IgMSBsZW5ndGhz
LgotICAgIGlmIChzaGFwZVZhbHVlICYmIHNoYXBlVmFsdWUtPmdldFZhbHVlSUQoKSA9PSBDU1NW
YWx1ZUNpcmNsZSAmJiB2ZXJ0aWNhbFNpemUpCisgICAgaWYgKHNoYXBlVmFsdWUgJiYgc2hhcGVW
YWx1ZS0+dmFsdWVJRCgpID09IENTU1ZhbHVlQ2lyY2xlICYmIHZlcnRpY2FsU2l6ZSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIC8vIEVsbGlwc2VzIG11c3QgaGF2ZSAwIG9yIDIgbGVuZ3Ro
L3BlcmNlbnRhZ2VzLgotICAgIGlmIChzaGFwZVZhbHVlICYmIHNoYXBlVmFsdWUtPmdldFZhbHVl
SUQoKSA9PSBDU1NWYWx1ZUVsbGlwc2UgJiYgaG9yaXpvbnRhbFNpemUgJiYgIXZlcnRpY2FsU2l6
ZSkKKyAgICBpZiAoc2hhcGVWYWx1ZSAmJiBzaGFwZVZhbHVlLT52YWx1ZUlEKCkgPT0gQ1NTVmFs
dWVFbGxpcHNlICYmIGhvcml6b250YWxTaXplICYmICF2ZXJ0aWNhbFNpemUpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAvLyBJZiB0aGVyZSdzIG9ubHkgb25lIHNpemUsIGl0IG11c3QgYmUg
YSBsZW5ndGguCiAgICAgaWYgKCF2ZXJ0aWNhbFNpemUgJiYgaG9yaXpvbnRhbFNpemUgJiYgaG9y
aXpvbnRhbFNpemUtPmlzUGVyY2VudGFnZSgpKQpAQCAtOTk1Nyw3ICs5OTU3LDcgQEAgUmVmUHRy
PFdlYktpdENTU0ZpbHRlclZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlQnVpbHRpbkZpbHRlckFyZ3Vt
ZW50cyhDU1NQYXJzZXJWYWwKICAgICAgICAgICAgIGlmIChmaWx0ZXJUeXBlICE9IFdlYktpdENT
U0ZpbHRlclZhbHVlOjpTYXR1cmF0ZUZpbHRlck9wZXJhdGlvbgogICAgICAgICAgICAgICAgICYm
IGZpbHRlclR5cGUgIT0gV2ViS2l0Q1NTRmlsdGVyVmFsdWU6OkNvbnRyYXN0RmlsdGVyT3BlcmF0
aW9uKSB7CiAgICAgICAgICAgICAgICAgZG91YmxlIG1heEFsbG93ZWQgPSBwcmltaXRpdmVWYWx1
ZS0+cHJpbWl0aXZlVHlwZSgpID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSA/
IDEwMC4wIDogMS4wOwotICAgICAgICAgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+Z2V0RG91
YmxlVmFsdWUoKSA+IG1heEFsbG93ZWQpCisgICAgICAgICAgICAgICAgaWYgKHByaW1pdGl2ZVZh
bHVlLT5kb3VibGVWYWx1ZSgpID4gbWF4QWxsb3dlZCkKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9wYXJzZXIvQ1NTUGFyc2VyVmFsdWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTUGFyc2VyVmFsdWVzLmNwcAppbmRleCBkM2E2MWI0ZmM1NmQxMmEwZmU0N2M0MzA0ZDEz
NWY0ZWEwNjY3Yjg1Li40NzdiNmY2ODEyNmIxODI1YmUzYWI0ZWIwNmQ0ODAyNTkyOTMyMDc5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclZhbHVlcy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJWYWx1ZXMuY3BwCkBAIC05
NCwxMSArOTQsOCBAQCBSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlclZhbHVlOjpjcmVhdGVDU1NW
YWx1ZSgpCiAgICAgaWYgKGlkKQogICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNy
ZWF0ZUlkZW50aWZpZXIoaWQpOwogICAgIAotICAgIGlmICh1bml0ID09IENTU1BhcnNlclZhbHVl
OjpPcGVyYXRvcikgewotICAgICAgICBhdXRvIHByaW1pdGl2ZVZhbHVlID0gQ1NTUHJpbWl0aXZl
VmFsdWU6OmNyZWF0ZVBhcnNlck9wZXJhdG9yKGlWYWx1ZSk7Ci0gICAgICAgIHByaW1pdGl2ZVZh
bHVlLT5zZXRQcmltaXRpdmVUeXBlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEFSU0VSX09QRVJB
VE9SKTsKLSAgICAgICAgcmV0dXJuIFdURk1vdmUocHJpbWl0aXZlVmFsdWUpOwotICAgIH0KKyAg
ICBpZiAodW5pdCA9PSBDU1NQYXJzZXJWYWx1ZTo6T3BlcmF0b3IpCisgICAgICAgIHJldHVybiBD
U1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlUGFyc2VyT3BlcmF0b3IoaVZhbHVlKTsKICAgICBpZiAo
dW5pdCA9PSBDU1NQYXJzZXJWYWx1ZTo6RnVuY3Rpb24pCiAgICAgICAgIHJldHVybiBDU1NGdW5j
dGlvblZhbHVlOjpjcmVhdGUoZnVuY3Rpb24pOwogICAgIGlmICh1bml0ID09IENTU1BhcnNlclZh
bHVlOjpWYXJpYWJsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NT
UHJvcGVydHlQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0
eVBhcnNlci5jcHAKaW5kZXggMjA2Yjg2OWQyOTkzZjRiZmY0ZjZhNjE0MTAyMDAyNGY0MjE1OTEz
My4uNDU4NDcyNGIwOTYxODExZTVhOGMyMzEzMGQyYmM3MDUzYWU4YWVlMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKQEAgLTg4Myw3ICs4
ODMsNyBAQCBzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVDb3VudGVyKENTU1BhcnNlclRva2VuUmFu
Z2UmIHJhbmdlLCBpbnQgZGVmYXVsdFZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgICAgIGludCBpID0gZGVmYXVsdFZhbHVlOwogICAgICAgICBpZiAoQ1NTUHJpbWl0aXZl
VmFsdWUqIGNvdW50ZXJWYWx1ZSA9IGNvbnN1bWVJbnRlZ2VyKHJhbmdlKSkKLSAgICAgICAgICAg
IGkgPSBjbGFtcFRvPGludD4oY291bnRlclZhbHVlLT5nZXREb3VibGVWYWx1ZSgpKTsKKyAgICAg
ICAgICAgIGkgPSBjb3VudGVyVmFsdWUtPmludFZhbHVlKCkpOwogICAgICAgICBsaXN0LT5hcHBl
bmQoKkNTU1ZhbHVlUGFpcjo6Y3JlYXRlKGNvdW50ZXJOYW1lLAogICAgICAgICAgICAgQ1NTUHJp
bWl0aXZlVmFsdWU6OmNyZWF0ZShpLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6OkludGVn
ZXIpLAogICAgICAgICAgICAgQ1NTVmFsdWVQYWlyOjpEcm9wSWRlbnRpY2FsVmFsdWVzKSk7CkBA
IC05MzYsNyArOTM2LDcgQEAgc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lU25hcEhlaWdodChDU1NQ
YXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3MKICAgICBsaXN0LT5hcHBl
bmQoKnVuaXQpOwogCiAgICAgaWYgKENTU1ByaW1pdGl2ZVZhbHVlKiBwb3NpdGlvbiA9IGNvbnN1
bWVQb3NpdGl2ZUludGVnZXIocmFuZ2UpKSB7Ci0gICAgICAgIGlmIChwb3NpdGlvbi0+Z2V0SW50
VmFsdWUoKSA+IDEwMCkKKyAgICAgICAgaWYgKHBvc2l0aW9uLT5pbnRWYWx1ZSgpID4gMTAwKQog
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIGxpc3QtPmFwcGVuZCgqcG9zaXRp
b24pOwogICAgIH0KQEAgLTExMzEsNyArMTEzMSw3IEBAIHN0YXRpYyBDU1NWYWx1ZSogY29uc3Vt
ZUNvbHVtbldpZHRoKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQogICAgIC8vIEFsd2F5cyBw
YXJzZSBsZW5ndGhzIGluIHN0cmljdCBtb2RlIGhlcmUsIHNpbmNlIGl0IHdvdWxkIGJlIGFtYmln
dW91cyBvdGhlcndpc2Ugd2hlbiB1c2VkIGluCiAgICAgLy8gdGhlICdjb2x1bW5zJyBzaG9ydGhh
bmQgcHJvcGVydHkuCiAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbHVtbldpZHRoID0gY29uc3Vt
ZUxlbmd0aChyYW5nZSwgSFRNTFN0YW5kYXJkTW9kZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsK
LSAgICBpZiAoIWNvbHVtbldpZHRoIHx8ICghY29sdW1uV2lkdGgtPmlzQ2FsY3VsYXRlZCgpICYm
IGNvbHVtbldpZHRoLT5nZXREb3VibGVWYWx1ZSgpID09IDApKQorICAgIGlmICghY29sdW1uV2lk
dGggfHwgKCFjb2x1bW5XaWR0aC0+aXNDYWxjdWxhdGVkKCkgJiYgY29sdW1uV2lkdGgtPmRvdWJs
ZVZhbHVlKCkgPT0gMCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBjb2x1
bW5XaWR0aDsKIH0KQEAgLTExNjgsOCArMTE2OCw4IEBAIHN0YXRpYyBDU1NWYWx1ZSogY29uc3Vt
ZVpvb20oQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGNvbnN0IENTU1BhcnNlckNvbnRleHQm
CiAgICAgfQogICAgIGlmICh6b29tICYmIGNvbnRleHQudXNlQ291bnRlcigpCiAgICAgICAgICYm
ICEodG9rZW4uaWQoKSA9PSBDU1NWYWx1ZU5vcm1hbAotICAgICAgICAgICAgfHwgKHRva2VuLnR5
cGUoKSA9PSBOdW1iZXJUb2tlbiAmJiB6b29tLT5nZXREb3VibGVWYWx1ZSgpID09IDEpCi0gICAg
ICAgICAgICB8fCAodG9rZW4udHlwZSgpID09IFBlcmNlbnRhZ2VUb2tlbiAmJiB6b29tLT5nZXRE
b3VibGVWYWx1ZSgpID09IDEwMCkpKQorICAgICAgICAgICAgfHwgKHRva2VuLnR5cGUoKSA9PSBO
dW1iZXJUb2tlbiAmJiB6b29tLT5kb3VibGVWYWx1ZSgpID09IDEpCisgICAgICAgICAgICB8fCAo
dG9rZW4udHlwZSgpID09IFBlcmNlbnRhZ2VUb2tlbiAmJiB6b29tLT5kb3VibGVWYWx1ZSgpID09
IDEwMCkpKQogICAgICAgICBjb250ZXh0LnVzZUNvdW50ZXIoKS0+Y291bnQoVXNlQ291bnRlcjo6
Q1NTWm9vbU5vdEVxdWFsVG9PbmUpOwogICAgIHJldHVybiB6b29tOwogfQpAQCAtMTI0OSw3ICsx
MjQ5LDcgQEAgc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lU3RlcHMoQ1NTUGFyc2VyVG9rZW5SYW5n
ZSYgcmFuZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgcmFuZ2UgPSByYW5nZUNv
cHk7Ci0gICAgcmV0dXJuIENTU1N0ZXBzVGltaW5nRnVuY3Rpb25WYWx1ZTo6Y3JlYXRlKHN0ZXBz
LT5nZXRJbnRWYWx1ZSgpLCBwb3NpdGlvbik7CisgICAgcmV0dXJuIENTU1N0ZXBzVGltaW5nRnVu
Y3Rpb25WYWx1ZTo6Y3JlYXRlKHN0ZXBzLT5pbnRWYWx1ZSgpLCBwb3NpdGlvbik7CiB9CiAKIHN0
YXRpYyBDU1NWYWx1ZSogY29uc3VtZUN1YmljQmV6aWVyKENTU1BhcnNlclRva2VuUmFuZ2UmIHJh
bmdlKQpAQCAtMTMyOCw3ICsxMzI4LDcgQEAgc3RhdGljIGJvb2wgaXNWYWxpZEFuaW1hdGlvblBy
b3BlcnR5TGlzdChDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBjb25zdCBDU1NWYWx1ZUwKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgZm9yIChhdXRvJiB2YWx1ZSA6IHZhbHVlTGlzdCkgewogICAg
ICAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSAmJiB0b0NTU1ByaW1pdGl2ZVZhbHVl
KCp2YWx1ZSkuaXNWYWx1ZUlEKCkKLSAgICAgICAgICAgICYmIHRvQ1NTUHJpbWl0aXZlVmFsdWUo
KnZhbHVlKS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKQorICAgICAgICAgICAgJiYgdG9D
U1NQcmltaXRpdmVWYWx1ZSgqdmFsdWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHJldHVybiB0cnVlOwpAQCAtMTQyOCw3
ICsxNDI4LDcgQEAgc3RhdGljIENTU1NoYWRvd1ZhbHVlKiBwYXJzZVNpbmdsZVNoYWRvdyhDU1NQ
YXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW8KICAgICBDU1NQcmltaXRpdmVWYWx1
ZSogc3ByZWFkRGlzdGFuY2UgPSBudWxscHRyOwogICAgIGlmIChibHVyUmFkaXVzKSB7CiAgICAg
ICAgIC8vIEJsdXIgcmFkaXVzIG11c3QgYmUgbm9uLW5lZ2F0aXZlLgotICAgICAgICBpZiAoYmx1
clJhZGl1cy0+Z2V0RG91YmxlVmFsdWUoKSA8IDApCisgICAgICAgIGlmIChibHVyUmFkaXVzLT5k
b3VibGVWYWx1ZSgpIDwgMCkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICBp
ZiAoYWxsb3dTcHJlYWQpCiAgICAgICAgICAgICBzcHJlYWREaXN0YW5jZSA9IGNvbnN1bWVMZW5n
dGgocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VBbGwpOwpAQCAtMTQ5Niw3ICsxNDk2
LDcgQEAgc3RhdGljIENTU0Z1bmN0aW9uVmFsdWUqIGNvbnN1bWVGaWx0ZXJGdW5jdGlvbihDU1NQ
YXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QKICAgICAgICAgICAgIGlmIChwYXJzZWRWYWx1
ZSAmJiBmaWx0ZXJUeXBlICE9IENTU1ZhbHVlU2F0dXJhdGUgJiYgZmlsdGVyVHlwZSAhPSBDU1NW
YWx1ZUNvbnRyYXN0KSB7CiAgICAgICAgICAgICAgICAgYm9vbCBpc1BlcmNlbnRhZ2UgPSB0b0NT
U1ByaW1pdGl2ZVZhbHVlKHBhcnNlZFZhbHVlKS0+aXNQZXJjZW50YWdlKCk7CiAgICAgICAgICAg
ICAgICAgZG91YmxlIG1heEFsbG93ZWQgPSBpc1BlcmNlbnRhZ2UgPyAxMDAuMCA6IDEuMDsKLSAg
ICAgICAgICAgICAgICBpZiAodG9DU1NQcmltaXRpdmVWYWx1ZShwYXJzZWRWYWx1ZSktPmdldERv
dWJsZVZhbHVlKCkgPiBtYXhBbGxvd2VkKSB7CisgICAgICAgICAgICAgICAgaWYgKHRvQ1NTUHJp
bWl0aXZlVmFsdWUocGFyc2VkVmFsdWUpLT5kb3VibGVWYWx1ZSgpID4gbWF4QWxsb3dlZCkgewog
ICAgICAgICAgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVh
dGUoCiAgICAgICAgICAgICAgICAgICAgICAgICBtYXhBbGxvd2VkLAogICAgICAgICAgICAgICAg
ICAgICAgICAgaXNQZXJjZW50YWdlID8gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpQZXJj
ZW50YWdlIDogQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpOdW1iZXIpOwpAQCAtMjEyMSw3
ICsyMTIxLDcgQEAgc3RhdGljIENTU1ByaW1pdGl2ZVZhbHVlKiBjb25zdW1lUGVyc3BlY3RpdmUo
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnMKICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgICAgICBwYXJzZWRWYWx1ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUo
cGVyc3BlY3RpdmUsIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZTo6UGl4ZWxzKTsKICAgICB9
Ci0gICAgaWYgKHBhcnNlZFZhbHVlICYmIChwYXJzZWRWYWx1ZS0+aXNDYWxjdWxhdGVkKCkgfHwg
cGFyc2VkVmFsdWUtPmdldERvdWJsZVZhbHVlKCkgPiAwKSkKKyAgICBpZiAocGFyc2VkVmFsdWUg
JiYgKHBhcnNlZFZhbHVlLT5pc0NhbGN1bGF0ZWQoKSB8fCBwYXJzZWRWYWx1ZS0+ZG91YmxlVmFs
dWUoKSA+IDApKQogICAgICAgICByZXR1cm4gcGFyc2VkVmFsdWU7CiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CkBAIC0yMTUyLDcgKzIxNTIsNyBAQCBzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVTY3Jv
bGxTbmFwUG9pbnRzKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNbwogICAg
IGlmIChyYW5nZS5wZWVrKCkuZnVuY3Rpb25JZCgpID09IENTU1ZhbHVlUmVwZWF0KSB7CiAgICAg
ICAgIENTU1BhcnNlclRva2VuUmFuZ2UgYXJncyA9IGNvbnN1bWVGdW5jdGlvbihyYW5nZSk7CiAg
ICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwYXJzZWRWYWx1ZSA9IGNvbnN1bWVMZW5ndGhPclBl
cmNlbnQoYXJncywgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZU5vbk5lZ2F0aXZlKTsKLSAgICAg
ICAgaWYgKGFyZ3MuYXRFbmQoKSAmJiBwYXJzZWRWYWx1ZSAmJiAocGFyc2VkVmFsdWUtPmlzQ2Fs
Y3VsYXRlZCgpIHx8IHBhcnNlZFZhbHVlLT5nZXREb3VibGVWYWx1ZSgpID4gMCkpIHsKKyAgICAg
ICAgaWYgKGFyZ3MuYXRFbmQoKSAmJiBwYXJzZWRWYWx1ZSAmJiAocGFyc2VkVmFsdWUtPmlzQ2Fs
Y3VsYXRlZCgpIHx8IHBhcnNlZFZhbHVlLT5kb3VibGVWYWx1ZSgpID4gMCkpIHsKICAgICAgICAg
ICAgIENTU0Z1bmN0aW9uVmFsdWUqIHJlc3VsdCA9IENTU0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZShD
U1NWYWx1ZVJlcGVhdCk7CiAgICAgICAgICAgICByZXN1bHQtPmFwcGVuZCgqcGFyc2VkVmFsdWUp
OwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTI1OTIsNyArMjU5Miw3IEBAIHN0YXRp
YyBDU1NWYWx1ZSogY29uc3VtZUltYWdlT3JpZW50YXRpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSYg
cmFuZ2UpCiAgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQocmFuZ2UpOwogICAgIGlmIChyYW5n
ZS5wZWVrKCkudHlwZSgpICE9IE51bWJlclRva2VuKSB7CiAgICAgICAgIENTU1ByaW1pdGl2ZVZh
bHVlKiBhbmdsZSA9IGNvbnN1bWVBbmdsZShyYW5nZSk7Ci0gICAgICAgIGlmIChhbmdsZSAmJiBh
bmdsZS0+Z2V0RG91YmxlVmFsdWUoKSA9PSAwKQorICAgICAgICBpZiAoYW5nbGUgJiYgYW5nbGUt
PmRvdWJsZVZhbHVlKCkgPT0gMCkKICAgICAgICAgICAgIHJldHVybiBhbmdsZTsKICAgICB9CiAg
ICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yODQ3LDkgKzI4NDcsOSBAQCBzdGF0aWMgQ1NTVmFsdWUq
IGNvbnN1bWVHcmlkTGluZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKIAogICAgIGlmIChz
cGFuVmFsdWUgJiYgIW51bWVyaWNWYWx1ZSAmJiAhZ3JpZExpbmVOYW1lKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsgLy8gInNwYW4iIGtleXdvcmQgYWxvbmUgaXMgaW52YWxpZC4KLSAgICBpZiAo
c3BhblZhbHVlICYmIG51bWVyaWNWYWx1ZSAmJiBudW1lcmljVmFsdWUtPmdldEludFZhbHVlKCkg
PCAwKQorICAgIGlmIChzcGFuVmFsdWUgJiYgbnVtZXJpY1ZhbHVlICYmIG51bWVyaWNWYWx1ZS0+
aW50VmFsdWUoKSA8IDApCiAgICAgICAgIHJldHVybiBudWxscHRyOyAvLyBOZWdhdGl2ZSBudW1i
ZXJzIGFyZSBub3QgYWxsb3dlZCBmb3Igc3Bhbi4KLSAgICBpZiAobnVtZXJpY1ZhbHVlICYmIG51
bWVyaWNWYWx1ZS0+Z2V0SW50VmFsdWUoKSA9PSAwKQorICAgIGlmIChudW1lcmljVmFsdWUgJiYg
bnVtZXJpY1ZhbHVlLT5pbnRWYWx1ZSgpID09IDApCiAgICAgICAgIHJldHVybiBudWxscHRyOyAv
LyBBbiA8aW50ZWdlcj4gdmFsdWUgb2YgemVybyBtYWtlcyB0aGUgZGVjbGFyYXRpb24gaW52YWxp
ZC4KIAogICAgIENTU1ZhbHVlTGlzdCogdmFsdWVzID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFj
ZVNlcGFyYXRlZCgpOwpAQCAtMjg2NSw3ICsyODY1LDcgQEAgc3RhdGljIENTU1ZhbHVlKiBjb25z
dW1lR3JpZExpbmUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCiAKIHN0YXRpYyBib29sIGlz
R3JpZFRyYWNrRml4ZWRTaXplZChjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYgcHJpbWl0aXZlVmFs
dWUpCiB7Ci0gICAgQ1NTVmFsdWVJRCB2YWx1ZUlEID0gcHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWVJ
RCgpOworICAgIENTU1ZhbHVlSUQgdmFsdWVJRCA9IHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKTsK
ICAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZU1pbkNvbnRlbnQgfHwgdmFsdWVJRCA9PSBDU1NW
YWx1ZU1heENvbnRlbnQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgcHJpbWl0aXZlVmFs
dWUuaXNGbGV4KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMzA1Myw3ICszMDUzLDcg
QEAgc3RhdGljIGJvb2wgY29uc3VtZUdyaWRUcmFja1JlcGVhdEZ1bmN0aW9uKENTU1BhcnNlclRv
a2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXIKICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHJl
cGV0aXRpb24gPSBjb25zdW1lUG9zaXRpdmVJbnRlZ2VyKGFyZ3MpOwogICAgICAgICBpZiAoIXJl
cGV0aXRpb24pCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJlcGV0aXRpb25z
ID0gY2xhbXBUbzxzaXplX3Q+KHJlcGV0aXRpb24tPmdldERvdWJsZVZhbHVlKCksIDAsIGtHcmlk
TWF4VHJhY2tzKTsKKyAgICAgICAgcmVwZXRpdGlvbnMgPSBjbGFtcFRvPHNpemVfdD4ocmVwZXRp
dGlvbi0+ZG91YmxlVmFsdWUoKSwgMCwga0dyaWRNYXhUcmFja3MpOwogICAgICAgICByZXBlYXRl
ZFZhbHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAgICB9CiAg
ICAgaWYgKCFjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKQpAQCAtNDI0Miw3
ICs0MjQyLDcgQEAgYm9vbCBDU1NQcm9wZXJ0eVBhcnNlcjo6Y29uc3VtZUxlZ2FjeUJyZWFrUHJv
cGVydHkoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgYm9vbAogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgaWYgKCFtX3JhbmdlLmF0RW5kKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBD
U1NWYWx1ZUlEIHZhbHVlID0ga2V5d29yZC0+Z2V0VmFsdWVJRCgpOworICAgIENTU1ZhbHVlSUQg
dmFsdWUgPSBrZXl3b3JkLT52YWx1ZUlEKCk7CiAgICAgc3dpdGNoIChwcm9wZXJ0eSkgewogICAg
IGNhc2UgQ1NTUHJvcGVydHlQYWdlQnJlYWtBZnRlcjoKICAgICBjYXNlIENTU1Byb3BlcnR5UGFn
ZUJyZWFrQmVmb3JlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQ
cm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQ
cm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwCmluZGV4IGJkZGYwMTZjN2MwOWY0ZDljNmZjN2E1OTI5
NmMxODhkMDJjZjNjNTAuLjU3ODc3Y2RmNjk5NmJkNmM3Yzg0ZGYzM2M2Y2FlNDVmN2UxOTRhYWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJI
ZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFy
c2VySGVscGVycy5jcHAKQEAgLTM3OSw3ICszNzksNyBAQCBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFs
dWU+IGNvbnN1bWVVcmwoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCiAKIHN0YXRpYyBpbnQg
Y2xhbXBSR0JDb21wb25lbnQoY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmIHZhbHVlKQogewotICAg
IGRvdWJsZSByZXN1bHQgPSB2YWx1ZS5nZXREb3VibGVWYWx1ZSgpOworICAgIGRvdWJsZSByZXN1
bHQgPSB2YWx1ZS5kb3VibGVWYWx1ZSgpOwogICAgIC8vIEZJWE1FOiBNdWx0aXBseSBieSAyLjU1
IGFuZCByb3VuZCBpbnN0ZWFkIG9mIGZsb29yLgogICAgIGlmICh2YWx1ZS5pc1BlcmNlbnRhZ2Uo
KSkKICAgICAgICAgcmVzdWx0ICo9IDIuNTY7CkBAIC00MzAsMTQgKzQzMCwxNCBAQCBzdGF0aWMg
Ym9vbCBwYXJzZUhTTFBhcmFtZXRlcnMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIFJHQkEz
MiYgcmVzdWx0LCBib29sCiAgICAgaWYgKCFoc2xWYWx1ZSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIGRvdWJsZSBjb2xvckFycmF5WzNdOwotICAgIGNvbG9yQXJyYXlbMF0gPSAoKChoc2xW
YWx1ZS0+Z2V0SW50VmFsdWUoKSAlIDM2MCkgKyAzNjApICUgMzYwKSAvIDM2MC4wOworICAgIGNv
bG9yQXJyYXlbMF0gPSAoKChoc2xWYWx1ZS0+aW50VmFsdWUoKSAlIDM2MCkgKyAzNjApICUgMzYw
KSAvIDM2MC4wOwogICAgIGZvciAoaW50IGkgPSAxOyBpIDwgMzsgaSsrKSB7CiAgICAgICAgIGlm
ICghY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdzKSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgaHNsVmFsdWUgPSBjb25zdW1lUGVyY2VudChhcmdzLCBWYWx1
ZVJhbmdlQWxsKTsKICAgICAgICAgaWYgKCFoc2xWYWx1ZSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgZG91YmxlIGRvdWJsZVZhbHVlID0gaHNsVmFsdWUtPmdldERvdWJsZVZh
bHVlKCk7CisgICAgICAgIGRvdWJsZSBkb3VibGVWYWx1ZSA9IGhzbFZhbHVlLT5kb3VibGVWYWx1
ZSgpOwogICAgICAgICBjb2xvckFycmF5W2ldID0gY2xhbXBUbzxkb3VibGU+KGRvdWJsZVZhbHVl
LCAwLjAsIDEwMC4wKSAvIDEwMC4wOyAvLyBOZWVkcyB0byBiZSB2YWx1ZSBiZXR3ZWVuIDAgYW5k
IDEuMC4KICAgICB9CiAgICAgZG91YmxlIGFscGhhID0gMS4wOwpAQCAtNTIxLDEyICs1MjEsMTIg
QEAgc3RhdGljIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZVBvc2l0aW9uQ29tcG9u
ZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIHIKIAogc3RhdGljIGJvb2wgaXNIb3Jpem9udGFsUG9z
aXRpb25LZXl3b3JkT25seShjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYgdmFsdWUpCiB7Ci0gICAg
cmV0dXJuIHZhbHVlLmlzVmFsdWVJRCgpICYmICh2YWx1ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFs
dWVMZWZ0IHx8IHZhbHVlLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZVJpZ2h0KTsKKyAgICByZXR1
cm4gdmFsdWUuaXNWYWx1ZUlEKCkgJiYgKHZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUxlZnQg
fHwgdmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlUmlnaHQpOwogfQogCiBzdGF0aWMgYm9vbCBp
c1ZlcnRpY2FsUG9zaXRpb25LZXl3b3JkT25seShjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYgdmFs
dWUpCiB7Ci0gICAgcmV0dXJuIHZhbHVlLmlzVmFsdWVJRCgpICYmICh2YWx1ZS5nZXRWYWx1ZUlE
KCkgPT0gQ1NTVmFsdWVUb3AgfHwgdmFsdWUuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlQm90dG9t
KTsKKyAgICByZXR1cm4gdmFsdWUuaXNWYWx1ZUlEKCkgJiYgKHZhbHVlLnZhbHVlSUQoKSA9PSBD
U1NWYWx1ZVRvcCB8fCB2YWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVCb3R0b20pOwogfQogCiBz
dGF0aWMgdm9pZCBwb3NpdGlvbkZyb21PbmVWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZSYgdmFsdWUs
IFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4mIHJlc3VsdFgsIFJlZlB0cjxDU1NQcmltaXRpdmVW
YWx1ZT4mIHJlc3VsdFkpCkBAIC01NjcsNyArNTY3LDcgQEAgc3RhdGljIGJvb2wgcG9zaXRpb25G
cm9tVGhyZWVPckZvdXJWYWx1ZXMoQ1NTUHJpbWl0aXZlVmFsdWUqKiB2YWx1ZXMsIFJlZlB0cjxD
U1MKICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGN1cnJlbnRWYWx1ZSA9IHZhbHVlc1tpXTsK
ICAgICAgICAgaWYgKCFjdXJyZW50VmFsdWUtPmlzVmFsdWVJRCgpKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICBDU1NWYWx1ZUlEIGlkID0gY3VycmVudFZhbHVlLT5nZXRWYWx1
ZUlEKCk7CisgICAgICAgIENTU1ZhbHVlSUQgaWQgPSBjdXJyZW50VmFsdWUtPnZhbHVlSUQoKTsK
IAogICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVDZW50ZXIpIHsKICAgICAgICAgICAgIGlmIChj
ZW50ZXIpCkBAIC04ODksMTAgKzg4OSwxMCBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25z
dW1lUmFkaWFsR3JhZGllbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgQ1NTUGFycwogICAg
IGlmIChzaXplS2V5d29yZCAmJiBob3Jpem9udGFsU2l6ZSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgLy8gQ2lyY2xlcyBtdXN0IGhhdmUgMCBvciAxIGxlbmd0aHMuCi0gICAgaWYgKHNo
YXBlICYmIHNoYXBlLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVDaXJjbGUgJiYgdmVydGljYWxT
aXplKQorICAgIGlmIChzaGFwZSAmJiBzaGFwZS0+dmFsdWVJRCgpID09IENTU1ZhbHVlQ2lyY2xl
ICYmIHZlcnRpY2FsU2l6ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgLy8gRWxsaXBz
ZXMgbXVzdCBoYXZlIDAgb3IgMiBsZW5ndGgvcGVyY2VudGFnZXMuCi0gICAgaWYgKHNoYXBlICYm
IHNoYXBlLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVFbGxpcHNlICYmIGhvcml6b250YWxTaXpl
ICYmICF2ZXJ0aWNhbFNpemUpCisgICAgaWYgKHNoYXBlICYmIHNoYXBlLT52YWx1ZUlEKCkgPT0g
Q1NTVmFsdWVFbGxpcHNlICYmIGhvcml6b250YWxTaXplICYmICF2ZXJ0aWNhbFNpemUpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIC8vIElmIHRoZXJlJ3Mgb25seSBvbmUgc2l6ZSwgaXQg
bXVzdCBiZSBhIGxlbmd0aC4KICAgICBpZiAoIXZlcnRpY2FsU2l6ZSAmJiBob3Jpem9udGFsU2l6
ZSAmJiBob3Jpem9udGFsU2l6ZS0+aXNQZXJjZW50YWdlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vUmFuZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcAppbmRl
eCA4ZGNjOTc1NDg2YWVhYTAzNWYzY2VjODZlOGQxNDE2YWJkMzBjMjFmLi45NDBlN2ZkNDY3OWM1
MTA1NWNmM2E2NWE3ZjU4MGUxMzJlYzRmYmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vUmFuZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKQEAgLTMwLDYg
KzMwLDcgQEAKICNpbmNsdWRlICJDb21tZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVu
dC5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2lu
Y2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiSFRNTEJv
ZHlFbGVtZW50LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVy
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5jcHAKaW5kZXggZDI1MTdi
YTk5YmI2M2I2NzQ1MmFhMmMxZDdkYzU2NzRhNmM1N2UxMy4uNTU3ZGJlNTk2NmY5MGJjOGNkMjNl
Y2I3NDk1YzE2ZmU3NzA2N2Y5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVj
dG9yUXVlcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmNwcApA
QCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCiAjaW5jbHVkZSAiRWxl
bWVudERlc2NlbmRhbnRJdGVyYXRvci5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNp
bmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJTZWxlY3RvckNoZWNrZXIuaCIKICNpbmNs
dWRlICJTdGF0aWNOb2RlTGlzdC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9BcHBseVN0eWxlQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5
bGVDb21tYW5kLmNwcAppbmRleCA3MDIxYTAxZTUxODliZTcxODUzZTI1MmIwYzk0NTNjZmM4YzQ5
ZDU1Li4yNjZjZjY5NzNhMzAzZmQxYWVkY2FlMDRkMmIyODI4MTQzNTI2MDNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcApAQCAtNTksNyArNTksNyBA
QCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBzdGF0aWMgaW50IHRvSWRlbnRpZmllcihQ
YXNzUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSkKIHsKLSAgICByZXR1cm4gKHZhbHVlICYmIHZhbHVl
LT5pc1ByaW1pdGl2ZVZhbHVlKCkpID8gc3RhdGljX3BvaW50ZXJfY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZT4odmFsdWUpLT5nZXRWYWx1ZUlEKCkgOiAwOworICAgIHJldHVybiAodmFsdWUgJiYgdmFs
dWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgPyBzdGF0aWNfcG9pbnRlcl9jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlPih2YWx1ZSktPnZhbHVlSUQoKSA6IDA7CiB9CiAKIHN0YXRpYyBTdHJpbmcmIHN0eWxl
U3BhbkNsYXNzU3RyaW5nKCkKQEAgLTE1MTMsOCArMTUxMyw4IEBAIGZsb2F0IEFwcGx5U3R5bGVD
b21tYW5kOjpjb21wdXRlZEZvbnRTaXplKE5vZGUqIG5vZGUpCiAgICAgaWYgKCFub2RlKQogICAg
ICAgICByZXR1cm4gMDsKIAotICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWUgPSBDb21wdXRlZFN0
eWxlRXh0cmFjdG9yKG5vZGUpLnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlGb250U2l6ZSk7Ci0g
ICAgcmV0dXJuIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUpLmdldEZsb2F0VmFs
dWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7CisgICAgYXV0byB2YWx1ZSA9IENvbXB1dGVk
U3R5bGVFeHRyYWN0b3Iobm9kZSkucHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUZvbnRTaXplKTsK
KyAgICByZXR1cm4gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YWx1ZSkuZmxvYXRWYWx1
ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKIH0KIAogdm9pZCBBcHBseVN0eWxlQ29tbWFu
ZDo6am9pbkNoaWxkVGV4dE5vZGVzKE5vZGUqIG5vZGUsIGNvbnN0IFBvc2l0aW9uJiBzdGFydCwg
Y29uc3QgUG9zaXRpb24mIGVuZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdGluZ1N0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNw
cAppbmRleCA3ZWFhYmIzZDk1MzNmYWRjMTlmOTYwZjA1OWUzYjU1YmVlMDM1Njk0Li40YzdhOTA0
NDZmYWM0Y2Q0ZmFkYjM2MDc3NmUzYjU3MzNkYjIxODQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0aW5nU3R5bGUuY3BwCkBAIC0xNDQsMTMgKzE0NCwxMiBAQCBpbnQgaWRlbnRpZmllckZv
clN0eWxlUHJvcGVydHkoVCYgc3R5bGUsIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkKICAgICBS
ZWZQdHI8Q1NTVmFsdWU+IHZhbHVlID0gZXh0cmFjdFByb3BlcnR5VmFsdWUoc3R5bGUsIHByb3Bl
cnR5SUQpOwogICAgIGlmICghaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlLmdldCgpKSkKICAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigq
dmFsdWUpLmdldFZhbHVlSUQoKTsKKyAgICByZXR1cm4gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWU+KCp2YWx1ZSkudmFsdWVJRCgpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBQYXNzUmVm
UHRyPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IGdldFByb3BlcnRpZXNOb3RJbihTdHlsZVByb3Bl
cnRpZXMmIHN0eWxlV2l0aFJlZHVuZGFudFByb3BlcnRpZXMsIFQmIGJhc2VTdHlsZSk7CiBlbnVt
IExlZ2FjeUZvbnRTaXplTW9kZSB7IEFsd2F5c1VzZUxlZ2FjeUZvbnRTaXplLCBVc2VMZWdhY3lG
b250U2l6ZU9ubHlJZlBpeGVsVmFsdWVzTWF0Y2ggfTsKIHN0YXRpYyBpbnQgbGVnYWN5Rm9udFNp
emVGcm9tQ1NTVmFsdWUoRG9jdW1lbnQqLCBDU1NQcmltaXRpdmVWYWx1ZSosIGJvb2wgc2hvdWxk
VXNlRml4ZWRGb250RGVmYXVsdFNpemUsIExlZ2FjeUZvbnRTaXplTW9kZSk7Ci1zdGF0aWMgYm9v
bCBpc1RyYW5zcGFyZW50Q29sb3JWYWx1ZShDU1NWYWx1ZSopOwogc3RhdGljIGJvb2wgaGFzVHJh
bnNwYXJlbnRCYWNrZ3JvdW5kQ29sb3IoU3R5bGVQcm9wZXJ0aWVzKik7CiBzdGF0aWMgUmVmUHRy
PENTU1ZhbHVlPiBiYWNrZ3JvdW5kQ29sb3JJbkVmZmVjdChOb2RlKik7CiAKQEAgLTE5Niw3ICsx
OTUsNyBAQCBIVE1MRWxlbWVudEVxdWl2YWxlbnQ6OkhUTUxFbGVtZW50RXF1aXZhbGVudChDU1NQ
cm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZUlEIHByaW1pdAogYm9vbCBIVE1MRWxlbWVudEVxdWl2YWxl
bnQ6OnZhbHVlSXNQcmVzZW50SW5TdHlsZShFbGVtZW50JiBlbGVtZW50LCBjb25zdCBFZGl0aW5n
U3R5bGUmIHN0eWxlKSBjb25zdAogewogICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWUgPSBzdHls
ZS5tX211dGFibGVTdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShtX3Byb3BlcnR5SUQpOwotICAg
IHJldHVybiBtYXRjaGVzKGVsZW1lbnQpICYmIGlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZS5n
ZXQoKSkgJiYgZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YWx1ZSkuZ2V0VmFsdWVJRCgp
ID09IG1fcHJpbWl0aXZlVmFsdWUtPmdldFZhbHVlSUQoKTsKKyAgICByZXR1cm4gbWF0Y2hlcyhl
bGVtZW50KSAmJiBpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUuZ2V0KCkpICYmIGRvd25jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUpLnZhbHVlSUQoKSA9PSBtX3ByaW1pdGl2ZVZhbHVl
LT52YWx1ZUlEKCk7CiB9CiAKIHZvaWQgSFRNTEVsZW1lbnRFcXVpdmFsZW50OjphZGRUb1N0eWxl
KEVsZW1lbnQqLCBFZGl0aW5nU3R5bGUqIHN0eWxlKSBjb25zdApAQCAtNTEyLDcgKzUxMSw3IEBA
IHZvaWQgRWRpdGluZ1N0eWxlOjpleHRyYWN0Rm9udFNpemVEZWx0YSgpCiAgICAgaWYgKCFwcmlt
aXRpdmVWYWx1ZS5pc1B4KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZm9udFNpemVEZWx0
YSA9IHByaW1pdGl2ZVZhbHVlLmdldEZsb2F0VmFsdWUoKTsKKyAgICBtX2ZvbnRTaXplRGVsdGEg
PSBwcmltaXRpdmVWYWx1ZS5mbG9hdFZhbHVlKCk7CiAgICAgbV9tdXRhYmxlU3R5bGUtPnJlbW92
ZVByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0Rm9udFNpemVEZWx0YSk7CiB9CiAKQEAgLTU1Mywx
MyArNTUyLDEzIEBAIGJvb2wgRWRpdGluZ1N0eWxlOjp0ZXh0RGlyZWN0aW9uKFdyaXRpbmdEaXJl
Y3Rpb24mIHdyaXRpbmdEaXJlY3Rpb24pIGNvbnN0CiAgICAgaWYgKCFpczxDU1NQcmltaXRpdmVW
YWx1ZT4odW5pY29kZUJpZGkuZ2V0KCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBD
U1NWYWx1ZUlEIHVuaWNvZGVCaWRpVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4o
KnVuaWNvZGVCaWRpKS5nZXRWYWx1ZUlEKCk7CisgICAgQ1NTVmFsdWVJRCB1bmljb2RlQmlkaVZh
bHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp1bmljb2RlQmlkaSkudmFsdWVJRCgp
OwogICAgIGlmICh1bmljb2RlQmlkaVZhbHVlID09IENTU1ZhbHVlRW1iZWQpIHsKICAgICAgICAg
UmVmUHRyPENTU1ZhbHVlPiBkaXJlY3Rpb24gPSBtX211dGFibGVTdHlsZS0+Z2V0UHJvcGVydHlD
U1NWYWx1ZShDU1NQcm9wZXJ0eURpcmVjdGlvbik7CiAgICAgICAgIGlmICghaXM8Q1NTUHJpbWl0
aXZlVmFsdWU+KGRpcmVjdGlvbi5nZXQoKSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICAgICAgd3JpdGluZ0RpcmVjdGlvbiA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigq
ZGlyZWN0aW9uKS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVMdHIgPyBMZWZ0VG9SaWdodFdyaXRp
bmdEaXJlY3Rpb24gOiBSaWdodFRvTGVmdFdyaXRpbmdEaXJlY3Rpb247CisgICAgICAgIHdyaXRp
bmdEaXJlY3Rpb24gPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKmRpcmVjdGlvbikudmFs
dWVJRCgpID09IENTU1ZhbHVlTHRyID8gTGVmdFRvUmlnaHRXcml0aW5nRGlyZWN0aW9uIDogUmln
aHRUb0xlZnRXcml0aW5nRGlyZWN0aW9uOwogCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
QEAgLTEwOTgsOSArMTA5Nyw5IEBAIHZvaWQgRWRpdGluZ1N0eWxlOjpwcmVwYXJlVG9BcHBseUF0
KGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbiwgU2hvdWxkUHJlc2VydmVXcml0CiAgICAgICAgIG1f
bXV0YWJsZVN0eWxlLT5yZW1vdmVQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7
CiAKICAgICBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHVuaWNvZGVCaWRpLmdldCgpKSkgewot
ICAgICAgICBtX211dGFibGVTdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlVbmljb2RlQmlk
aSwgc3RhdGljX2Nhc3Q8Q1NTVmFsdWVJRD4oZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp1
bmljb2RlQmlkaSkuZ2V0VmFsdWVJRCgpKSk7CisgICAgICAgIG1fbXV0YWJsZVN0eWxlLT5zZXRQ
cm9wZXJ0eShDU1NQcm9wZXJ0eVVuaWNvZGVCaWRpLCBzdGF0aWNfY2FzdDxDU1NWYWx1ZUlEPihk
b3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnVuaWNvZGVCaWRpKS52YWx1ZUlEKCkpKTsKICAg
ICAgICAgaWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPihkaXJlY3Rpb24uZ2V0KCkpKQotICAgICAg
ICAgICAgbV9tdXRhYmxlU3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5RGlyZWN0aW9uLCBz
dGF0aWNfY2FzdDxDU1NWYWx1ZUlEPihkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKmRpcmVj
dGlvbikuZ2V0VmFsdWVJRCgpKSk7CisgICAgICAgICAgICBtX211dGFibGVTdHlsZS0+c2V0UHJv
cGVydHkoQ1NTUHJvcGVydHlEaXJlY3Rpb24sIHN0YXRpY19jYXN0PENTU1ZhbHVlSUQ+KGRvd25j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqZGlyZWN0aW9uKS52YWx1ZUlEKCkpKTsKICAgICB9CiB9
CiAKQEAgLTE0ODMsNyArMTQ4Miw3IEBAIFdyaXRpbmdEaXJlY3Rpb24gRWRpdGluZ1N0eWxlOjp0
ZXh0RGlyZWN0aW9uRm9yU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mCiAgICAgICAg
ICAgICBpZiAoIWlzPENTU1ByaW1pdGl2ZVZhbHVlPih1bmljb2RlQmlkaS5nZXQoKSkpCiAgICAg
ICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIENTU1ZhbHVlSUQgdW5pY29kZUJp
ZGlWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdW5pY29kZUJpZGkpLmdldFZh
bHVlSUQoKTsKKyAgICAgICAgICAgIENTU1ZhbHVlSUQgdW5pY29kZUJpZGlWYWx1ZSA9IGRvd25j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdW5pY29kZUJpZGkpLnZhbHVlSUQoKTsKICAgICAgICAg
ICAgIGlmICh1bmljb2RlQmlkaVZhbHVlID09IENTU1ZhbHVlRW1iZWQgfHwgdW5pY29kZUJpZGlW
YWx1ZSA9PSBDU1NWYWx1ZUJpZGlPdmVycmlkZSkKICAgICAgICAgICAgICAgICByZXR1cm4gTmF0
dXJhbFdyaXRpbmdEaXJlY3Rpb247CiAgICAgICAgIH0KQEAgLTE1MTIsNyArMTUxMSw3IEBAIFdy
aXRpbmdEaXJlY3Rpb24gRWRpdGluZ1N0eWxlOjp0ZXh0RGlyZWN0aW9uRm9yU2VsZWN0aW9uKGNv
bnN0IFZpc2libGVTZWxlY3Rpb24mCiAgICAgICAgIGlmICghaXM8Q1NTUHJpbWl0aXZlVmFsdWU+
KHVuaWNvZGVCaWRpLmdldCgpKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIENT
U1ZhbHVlSUQgdW5pY29kZUJpZGlWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigq
dW5pY29kZUJpZGkpLmdldFZhbHVlSUQoKTsKKyAgICAgICAgQ1NTVmFsdWVJRCB1bmljb2RlQmlk
aVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp1bmljb2RlQmlkaSkudmFsdWVJ
RCgpOwogICAgICAgICBpZiAodW5pY29kZUJpZGlWYWx1ZSA9PSBDU1NWYWx1ZU5vcm1hbCkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogCkBAIC0xNTI0LDcgKzE1MjMsNyBAQCBXcml0aW5nRGlyZWN0
aW9uIEVkaXRpbmdTdHlsZTo6dGV4dERpcmVjdGlvbkZvclNlbGVjdGlvbihjb25zdCBWaXNpYmxl
U2VsZWN0aW9uJgogICAgICAgICBpZiAoIWlzPENTU1ByaW1pdGl2ZVZhbHVlPihkaXJlY3Rpb24u
Z2V0KCkpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgQ1NTVmFsdWVJRCBkaXJl
Y3Rpb25WYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqZGlyZWN0aW9uKS5nZXRW
YWx1ZUlEKCk7CisgICAgICAgIENTU1ZhbHVlSUQgZGlyZWN0aW9uVmFsdWUgPSBkb3duY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZT4oKmRpcmVjdGlvbikudmFsdWVJRCgpOwogICAgICAgICBpZiAoZGly
ZWN0aW9uVmFsdWUgIT0gQ1NTVmFsdWVMdHIgJiYgZGlyZWN0aW9uVmFsdWUgIT0gQ1NTVmFsdWVS
dGwpCiAgICAgICAgICAgICBjb250aW51ZTsKIApAQCAtMTc0MSw3ICsxNzQwLDcgQEAgc3RhdGlj
IGJvb2wgZm9udFdlaWdodElzQm9sZChDU1NWYWx1ZSYgZm9udFdlaWdodCkKIAogICAgIC8vIEJl
Y2F1c2UgYiB0YWcgY2FuIG9ubHkgYm9sZCB0ZXh0LCB0aGVyZSBhcmUgb25seSB0d28gc3RhdGVz
IGluIHBsYWluIGh0bWw6IGJvbGQgYW5kIG5vdCBib2xkLgogICAgIC8vIENvbGxhcHNlIGFsbCBv
dGhlciB2YWx1ZXMgdG8gZWl0aGVyIG9uZSBvZiB0aGVzZSB0d28gc3RhdGVzIGZvciBlZGl0aW5n
IHB1cnBvc2VzLgotICAgIHN3aXRjaCAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGZvbnRX
ZWlnaHQpLmdldFZhbHVlSUQoKSkgeworICAgIHN3aXRjaCAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWU+KGZvbnRXZWlnaHQpLnZhbHVlSUQoKSkgewogICAgICAgICBjYXNlIENTU1ZhbHVlMTAw
OgogICAgICAgICBjYXNlIENTU1ZhbHVlMjAwOgogICAgICAgICBjYXNlIENTU1ZhbHVlMzAwOgpA
QCAtMTgxNCw3ICsxODEzLDcgQEAgaW50IGxlZ2FjeUZvbnRTaXplRnJvbUNTU1ZhbHVlKERvY3Vt
ZW50KiBkb2N1bWVudCwgQ1NTUHJpbWl0aXZlVmFsdWUqIHZhbHVlLCBib28KICAgICBBU1NFUlQo
ZG9jdW1lbnQpOyAvLyBGSVhNRTogVGhpcyBtZXRob2Qgc2hvdWxkIHRha2UgYSBEb2N1bWVudCYK
IAogICAgIGlmIChpc0NTU1ZhbHVlTGVuZ3RoKHZhbHVlKSkgewotICAgICAgICBpbnQgcGl4ZWxG
b250U2l6ZSA9IHZhbHVlLT5nZXRJbnRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsK
KyAgICAgICAgaW50IHBpeGVsRm9udFNpemUgPSB2YWx1ZS0+aW50VmFsdWUoQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19QWCk7CiAgICAgICAgIGludCBsZWdhY3lGb250U2l6ZSA9IFN0eWxlOjpsZWdh
Y3lGb250U2l6ZUZvclBpeGVsU2l6ZShwaXhlbEZvbnRTaXplLCBzaG91bGRVc2VGaXhlZEZvbnRE
ZWZhdWx0U2l6ZSwgKmRvY3VtZW50KTsKICAgICAgICAgLy8gVXNlIGxlZ2FjeSBmb250IHNpemUg
b25seSBpZiBwaXhlbCB2YWx1ZSBtYXRjaGVzIGV4YWN0bHkgdG8gdGhhdCBvZiBsZWdhY3kgZm9u
dCBzaXplLgogICAgICAgICBpbnQgY3NzUHJpbWl0aXZlRXF1aXZhbGVudCA9IGxlZ2FjeUZvbnRT
aXplIC0gMSArIENTU1ZhbHVlWFNtYWxsOwpAQCAtMTgyNCwzNCArMTgyMywzMyBAQCBpbnQgbGVn
YWN5Rm9udFNpemVGcm9tQ1NTVmFsdWUoRG9jdW1lbnQqIGRvY3VtZW50LCBDU1NQcmltaXRpdmVW
YWx1ZSogdmFsdWUsIGJvbwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBpZiAoQ1NT
VmFsdWVYU21hbGwgPD0gdmFsdWUtPmdldFZhbHVlSUQoKSAmJiB2YWx1ZS0+Z2V0VmFsdWVJRCgp
IDw9IENTU1ZhbHVlV2Via2l0WHh4TGFyZ2UpCi0gICAgICAgIHJldHVybiB2YWx1ZS0+Z2V0VmFs
dWVJRCgpIC0gQ1NTVmFsdWVYU21hbGwgKyAxOworICAgIGlmIChDU1NWYWx1ZVhTbWFsbCA8PSB2
YWx1ZS0+dmFsdWVJRCgpICYmIHZhbHVlLT52YWx1ZUlEKCkgPD0gQ1NTVmFsdWVXZWJraXRYeHhM
YXJnZSkKKyAgICAgICAgcmV0dXJuIHZhbHVlLT52YWx1ZUlEKCkgLSBDU1NWYWx1ZVhTbWFsbCAr
IDE7CiAKICAgICByZXR1cm4gMDsKIH0KIAotYm9vbCBpc1RyYW5zcGFyZW50Q29sb3JWYWx1ZShD
U1NWYWx1ZSogY3NzVmFsdWUpCitzdGF0aWMgYm9vbCBpc1RyYW5zcGFyZW50Q29sb3JWYWx1ZShD
U1NWYWx1ZSogdmFsdWUpCiB7Ci0gICAgaWYgKCFjc3NWYWx1ZSkKKyAgICBpZiAoIXZhbHVlKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAoIWlzPENTU1ByaW1pdGl2ZVZhbHVlPigqY3Nz
VmFsdWUpKQorICAgIGlmICghaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YWx1ZSkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBDU1NQcmltaXRpdmVWYWx1ZSYgdmFsdWUgPSBkb3duY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZT4oKmNzc1ZhbHVlKTsKLSAgICBpZiAodmFsdWUuaXNSR0JDb2xvcigp
KQotICAgICAgICByZXR1cm4gdmFsdWUuY29sb3IoKS5hbHBoYSgpID09IDA7Ci0gICAgcmV0dXJu
IHZhbHVlLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZVRyYW5zcGFyZW50OworICAgIGF1dG8mIHBy
aW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YWx1ZSk7CisgICAg
aWYgKHByaW1pdGl2ZVZhbHVlLmlzUkdCQ29sb3IoKSkKKyAgICAgICAgcmV0dXJuICFwcmltaXRp
dmVWYWx1ZS5jb2xvcigpLmFscGhhKCk7CisgICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlLnZhbHVl
SUQoKSA9PSBDU1NWYWx1ZVRyYW5zcGFyZW50OwogfQogCiBib29sIGhhc1RyYW5zcGFyZW50QmFj
a2dyb3VuZENvbG9yKFN0eWxlUHJvcGVydGllcyogc3R5bGUpCiB7Ci0gICAgUmVmUHRyPENTU1Zh
bHVlPiBjc3NWYWx1ZSA9IHN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5QmFj
a2dyb3VuZENvbG9yKTsKLSAgICByZXR1cm4gaXNUcmFuc3BhcmVudENvbG9yVmFsdWUoY3NzVmFs
dWUuZ2V0KCkpOworICAgIHJldHVybiBpc1RyYW5zcGFyZW50Q29sb3JWYWx1ZShzdHlsZS0+Z2V0
UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcikuZ2V0KCkpOwogfQog
CiBSZWZQdHI8Q1NTVmFsdWU+IGJhY2tncm91bmRDb2xvckluRWZmZWN0KE5vZGUqIG5vZGUpCiB7
CiAgICAgZm9yIChOb2RlKiBhbmNlc3RvciA9IG5vZGU7IGFuY2VzdG9yOyBhbmNlc3RvciA9IGFu
Y2VzdG9yLT5wYXJlbnROb2RlKCkpIHsKLSAgICAgICAgaWYgKFJlZlB0cjxDU1NWYWx1ZT4gdmFs
dWUgPSBDb21wdXRlZFN0eWxlRXh0cmFjdG9yKGFuY2VzdG9yKS5wcm9wZXJ0eVZhbHVlKENTU1By
b3BlcnR5QmFja2dyb3VuZENvbG9yKSkgeworICAgICAgICBpZiAoYXV0byB2YWx1ZSA9IENvbXB1
dGVkU3R5bGVFeHRyYWN0b3IoYW5jZXN0b3IpLnByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kQ29sb3IpKSB7CiAgICAgICAgICAgICBpZiAoIWlzVHJhbnNwYXJlbnRDb2xvclZhbHVl
KHZhbHVlLmdldCgpKSkKICAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCA0ODkzN2UwYWJkZWNhMGZkZTMyOTU5MWNk
OTc1OGM4ZjgxZjA2MjJkLi4wZWZiNDM0N2I5ZWM5NzViMzZmNTBkYzc5NzcyNThmMzczMmQ0NGYx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0zMjA2LDkgKzMyMDYsOSBAQCB2b2lk
IEVkaXRvcjo6YXBwbHlFZGl0aW5nU3R5bGVUb0VsZW1lbnQoRWxlbWVudCogZWxlbWVudCkgY29u
c3QKIAogICAgIC8vIE11dGF0ZSB1c2luZyB0aGUgQ1NTT00gd3JhcHBlciBzbyB3ZSBnZXQgdGhl
IHNhbWUgZXZlbnQgYmVoYXZpb3IgYXMgYSBzY3JpcHQuCiAgICAgQ1NTU3R5bGVEZWNsYXJhdGlv
biogc3R5bGUgPSBkb3duY2FzdDxTdHlsZWRFbGVtZW50PigqZWxlbWVudCkuY3Nzb21TdHlsZSgp
OwotICAgIHN0eWxlLT5zZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5V29yZFdyYXAsICJi
cmVhay13b3JkIiwgZmFsc2UsIElHTk9SRV9FWENFUFRJT04pOwotICAgIHN0eWxlLT5zZXRQcm9w
ZXJ0eUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TmJzcE1vZGUsICJzcGFjZSIsIGZhbHNlLCBJ
R05PUkVfRVhDRVBUSU9OKTsKLSAgICBzdHlsZS0+c2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9w
ZXJ0eVdlYmtpdExpbmVCcmVhaywgImFmdGVyLXdoaXRlLXNwYWNlIiwgZmFsc2UsIElHTk9SRV9F
WENFUFRJT04pOworICAgIHN0eWxlLT5zZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5V29y
ZFdyYXAsICJicmVhay13b3JkIiwgZmFsc2UpOworICAgIHN0eWxlLT5zZXRQcm9wZXJ0eUludGVy
bmFsKENTU1Byb3BlcnR5V2Via2l0TmJzcE1vZGUsICJzcGFjZSIsIGZhbHNlKTsKKyAgICBzdHls
ZS0+c2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eVdlYmtpdExpbmVCcmVhaywgImFmdGVy
LXdoaXRlLXNwYWNlIiwgZmFsc2UpOwogfQogCiBib29sIEVkaXRvcjo6ZmluZFN0cmluZyhjb25z
dCBTdHJpbmcmIHRhcmdldCwgRmluZE9wdGlvbnMgb3B0aW9ucykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlQ1NTUHJvcGVydHlDb21tYW5kLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvUmVtb3ZlQ1NTUHJvcGVydHlDb21tYW5kLmNwcAppbmRleCBhNTRlMmFm
N2U3NmY0NDUyOGFlY2ExNmZmMzE0N2I5N2VhY2ZiOWMxLi4zNzcwNTY1YjlkOGQ0ZTRkMzk3M2Ux
NTM0N2VmMjg1ZDMwY2U0ZmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Jl
bW92ZUNTU1Byb3BlcnR5Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9S
ZW1vdmVDU1NQcm9wZXJ0eUNvbW1hbmQuY3BwCkBAIC0yNyw3ICsyNyw2IEBACiAjaW5jbHVkZSAi
UmVtb3ZlQ1NTUHJvcGVydHlDb21tYW5kLmgiCiAKICNpbmNsdWRlICJDU1NTdHlsZURlY2xhcmF0
aW9uLmgiCi0jaW5jbHVkZSAiRXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyLmgiCiAjaW5jbHVkZSAi
U3R5bGVQcm9wZXJ0aWVzLmgiCiAjaW5jbHVkZSAiU3R5bGVkRWxlbWVudC5oIgogI2luY2x1ZGUg
PHd0Zi9Bc3NlcnRpb25zLmg+CkBAIC01NSwxMiArNTQsMTIgQEAgdm9pZCBSZW1vdmVDU1NQcm9w
ZXJ0eUNvbW1hbmQ6OmRvQXBwbHkoKQogCiAgICAgLy8gTXV0YXRlIHVzaW5nIHRoZSBDU1NPTSB3
cmFwcGVyIHNvIHdlIGdldCB0aGUgc2FtZSBldmVudCBiZWhhdmlvciBhcyBhIHNjcmlwdC4KICAg
ICAvLyBTZXR0aW5nIHRvIG51bGwgc3RyaW5nIHJlbW92ZXMgdGhlIHByb3BlcnR5LiBXZSBkb24n
dCBoYXZlIGludGVybmFsIHZlcnNpb24gb2YgcmVtb3ZlUHJvcGVydHkuCi0gICAgbV9lbGVtZW50
LT5jc3NvbVN0eWxlKCktPnNldFByb3BlcnR5SW50ZXJuYWwobV9wcm9wZXJ0eSwgU3RyaW5nKCks
IGZhbHNlLCBJR05PUkVfRVhDRVBUSU9OKTsKKyAgICBtX2VsZW1lbnQtPmNzc29tU3R5bGUoKS0+
c2V0UHJvcGVydHlJbnRlcm5hbChtX3Byb3BlcnR5LCBTdHJpbmcoKSwgZmFsc2UpOwogfQogCiB2
b2lkIFJlbW92ZUNTU1Byb3BlcnR5Q29tbWFuZDo6ZG9VbmFwcGx5KCkKIHsKLSAgICBtX2VsZW1l
bnQtPmNzc29tU3R5bGUoKS0+c2V0UHJvcGVydHlJbnRlcm5hbChtX3Byb3BlcnR5LCBtX29sZFZh
bHVlLCBtX2ltcG9ydGFudCwgSUdOT1JFX0VYQ0VQVElPTik7CisgICAgbV9lbGVtZW50LT5jc3Nv
bVN0eWxlKCktPnNldFByb3BlcnR5SW50ZXJuYWwobV9wcm9wZXJ0eSwgbV9vbGRWYWx1ZSwgbV9p
bXBvcnRhbnQpOwogfQogCiAjaWZuZGVmIE5ERUJVRwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAppbmRleCBhMjc2NjRmY2IzZDNkMTdl
YTkyZmU3OTRlMjg2Y2E2YTkwNjBkNTJhLi5jZDZmNzMzOGFkZjY1MjVhYTFkYTMzZTY4ZGQ2YzI4
OGRmYjk3YTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxl
Y3Rpb25Db21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxl
Y3Rpb25Db21tYW5kLmNwcApAQCAtNTYyLDkgKzU2Miw5IEBAIHZvaWQgUmVwbGFjZVNlbGVjdGlv
bkNvbW1hbmQ6OnJlbW92ZVJlZHVuZGFudFN0eWxlc0FuZEtlZXBTdHlsZVNwYW5JbmxpbmUoSW5z
ZXJ0CiAKICAgICAgICAgICAgIC8vIE11dGF0ZSB1c2luZyB0aGUgQ1NTT00gd3JhcHBlciBzbyB3
ZSBnZXQgdGhlIHNhbWUgZXZlbnQgYmVoYXZpb3IgYXMgYSBzY3JpcHQuCiAgICAgICAgICAgICBp
ZiAoaXNCbG9jayhlbGVtZW50KSkKLSAgICAgICAgICAgICAgICBlbGVtZW50LT5jc3NvbVN0eWxl
KCktPnNldFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlEaXNwbGF5LCAiaW5saW5lIiwgZmFs
c2UsIElHTk9SRV9FWENFUFRJT04pOworICAgICAgICAgICAgICAgIGVsZW1lbnQtPmNzc29tU3R5
bGUoKS0+c2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eURpc3BsYXksICJpbmxpbmUiLCBm
YWxzZSk7CiAgICAgICAgICAgICBpZiAoZWxlbWVudC0+cmVuZGVyZXIoKSAmJiBlbGVtZW50LT5y
ZW5kZXJlcigpLT5zdHlsZSgpLmlzRmxvYXRpbmcoKSkKLSAgICAgICAgICAgICAgICBlbGVtZW50
LT5jc3NvbVN0eWxlKCktPnNldFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlGbG9hdCwgIm5v
bmUiLCBmYWxzZSwgSUdOT1JFX0VYQ0VQVElPTik7CisgICAgICAgICAgICAgICAgZWxlbWVudC0+
Y3Nzb21TdHlsZSgpLT5zZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5RmxvYXQsICJub25l
IiwgZmFsc2UpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9jb2NvYS9IVE1MQ29udmVydGVyLm1tCmluZGV4IGU0MmZjZTZjMGIwNTYyYTA1OGM3YWFmNmJj
NWFiZjg2ZWFkYjg2MmQuLjk0ZmM3ZWQ5OTVjYzQwZDg2ZjRjMDI4MjMyZjQxMzQyMGJjMDg4ZGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KQEAg
LTc4NywyMiArNzg3LDIyIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBmbG9hdFZhbHVlRnJvbVByaW1p
dGl2ZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlJiBwcmltaXRpdmVWYWx1CiAgICAgLy8gRklYTUU6
IFVzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZVZhbHVlLgogICAgIHN3aXRjaCAocHJpbWl0
aXZlVmFsdWUucHJpbWl0aXZlVHlwZSgpKSB7CiAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX1BYOgotICAgICAgICByZXN1bHQgPSBwcmltaXRpdmVWYWx1ZS5nZXRGbG9hdFZhbHVlKENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOworICAgICAgICByZXN1bHQgPSBwcmltaXRpdmVWYWx1
ZS5mbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOwogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFQ6Ci0gICAgICAgIHJlc3Vs
dCA9IDQgKiBwcmltaXRpdmVWYWx1ZS5nZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfUFQpIC8gMzsKKyAgICAgICAgcmVzdWx0ID0gNCAqIHByaW1pdGl2ZVZhbHVlLmZsb2F0VmFs
dWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QVCkgLyAzOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEM6Ci0gICAgICAgIHJlc3VsdCA9IDE2
ICogcHJpbWl0aXZlVmFsdWUuZ2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BD
KTsKKyAgICAgICAgcmVzdWx0ID0gMTYgKiBwcmltaXRpdmVWYWx1ZS5mbG9hdFZhbHVlKENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfUEMpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBjYXNlIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfQ006Ci0gICAgICAgIHJlc3VsdCA9IDk2ICogcHJpbWl0aXZl
VmFsdWUuZ2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BDKSAvIDIuNTQ7Cisg
ICAgICAgIHJlc3VsdCA9IDk2ICogcHJpbWl0aXZlVmFsdWUuZmxvYXRWYWx1ZShDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX1BDKSAvIDIuNTQ7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGNhc2Ug
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19NTToKLSAgICAgICAgcmVzdWx0ID0gOTYgKiBwcmltaXRp
dmVWYWx1ZS5nZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEMpIC8gMjUuNDsK
KyAgICAgICAgcmVzdWx0ID0gOTYgKiBwcmltaXRpdmVWYWx1ZS5mbG9hdFZhbHVlKENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfUEMpIC8gMjUuNDsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgY2Fz
ZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lOOgotICAgICAgICByZXN1bHQgPSA5NiAqIHByaW1p
dGl2ZVZhbHVlLmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JTik7CisgICAg
ICAgIHJlc3VsdCA9IDk2ICogcHJpbWl0aXZlVmFsdWUuZmxvYXRWYWx1ZShDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX0lOKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgZGVmYXVsdDoKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJr
dXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCmluZGV4IGU0Y2UxNTBh
YTYwMDcwODY3NWNhYjc2ZDU2OTk5YTkwOWZlMGZjYTYuLjFlYjcyZmQyYjM4OWI4OTdlZDFkZDA4
MDQ5YzZiOTcwY2EwNmNlNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFy
a3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKQEAgLTQ5OSw3
ICs0OTksNyBAQCBzdGF0aWMgYm9vbCBwcm9wZXJ0eU1pc3NpbmdPckVxdWFsVG9Ob25lKFN0eWxl
UHJvcGVydGllcyogc3R5bGUsIENTU1Byb3BlcnR5SUQgcAogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICBpZiAoIWlzPENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgcmV0dXJuIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUpLmdl
dFZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmU7CisgICAgcmV0dXJuIGRvd25jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlPigqdmFsdWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmU7CiB9CiAKIHN0YXRp
YyBib29sIG5lZWRJbnRlcmNoYW5nZU5ld2xpbmVBZnRlcihjb25zdCBWaXNpYmxlUG9zaXRpb24m
IHYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVT
aGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5j
cHAKaW5kZXggNWE0NGI4NGJiNzM0ZTYxMjI3NDU5OGFmNTlhZGU5NjQ0OGMyM2E3YS4uZDQzNjY1
YzRjNjA2YTAwMDYyOGFlODAxZWZhNDJmMWE3ZGM5NzYwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcApAQCAtNzA4LDkgKzcwOCwxMSBA
QCBDU1NTdHlsZVJ1bGUqIEluc3BlY3RvclN0eWxlU2hlZXQ6OmFkZFJ1bGUoY29uc3QgU3RyaW5n
JiBzZWxlY3RvciwgRXhjZXB0aW9uQ29kZQogICAgIFN0cmluZ0J1aWxkZXIgc3R5bGVTaGVldFRl
eHQ7CiAgICAgc3R5bGVTaGVldFRleHQuYXBwZW5kKHRleHQpOwogCi0gICAgbV9wYWdlU3R5bGVT
aGVldC0+YWRkUnVsZShzZWxlY3RvciwgZW1wdHlTdHJpbmcoKSwgTnVsbG9wdCwgZWMpOwotICAg
IGlmIChlYykKKyAgICBhdXRvIGFkZFJ1bGVSZXN1bHQgPSBtX3BhZ2VTdHlsZVNoZWV0LT5hZGRS
dWxlKHNlbGVjdG9yLCBlbXB0eVN0cmluZygpLCBOdWxsb3B0KTsKKyAgICBpZiAoYWRkUnVsZVJl
c3VsdC5oYXNFeGNlcHRpb24oKSkgeworICAgICAgICBlYyA9IGFkZFJ1bGVSZXN1bHQucmVsZWFz
ZUV4Y2VwdGlvbigpLmNvZGUoKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQogICAg
IEFTU0VSVChtX3BhZ2VTdHlsZVNoZWV0LT5sZW5ndGgoKSk7CiAgICAgdW5zaWduZWQgbGFzdFJ1
bGVJbmRleCA9IG1fcGFnZVN0eWxlU2hlZXQtPmxlbmd0aCgpIC0gMTsKICAgICBDU1NSdWxlKiBy
dWxlID0gbV9wYWdlU3R5bGVTaGVldC0+aXRlbShsYXN0UnVsZUluZGV4KTsKQEAgLTcyMCw3ICs3
MjIsNyBAQCBDU1NTdHlsZVJ1bGUqIEluc3BlY3RvclN0eWxlU2hlZXQ6OmFkZFJ1bGUoY29uc3Qg
U3RyaW5nJiBzZWxlY3RvciwgRXhjZXB0aW9uQ29kZQogICAgIGlmICghc3R5bGVSdWxlKSB7CiAg
ICAgICAgIC8vIFdoYXQgd2UganVzdCBhZGRlZCBoYXMgdG8gYmUgYSBDU1NTdHlsZVJ1bGUgLSB3
ZSBjYW5ub3QgaGFuZGxlIG90aGVyIHR5cGVzIG9mIHJ1bGVzIHlldC4KICAgICAgICAgLy8gSWYg
aXQgaXMgbm90IGEgc3R5bGUgcnVsZSwgcHJldGVuZCB3ZSBuZXZlciB0b3VjaGVkIHRoZSBzdHls
ZXNoZWV0LgotICAgICAgICBtX3BhZ2VTdHlsZVNoZWV0LT5kZWxldGVSdWxlKGxhc3RSdWxlSW5k
ZXgsIEFTU0VSVF9OT19FWENFUFRJT04pOworICAgICAgICBtX3BhZ2VTdHlsZVNoZWV0LT5kZWxl
dGVSdWxlKGxhc3RSdWxlSW5kZXgpOwogICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KQEAgLTc1OSwxMSArNzYxLDEzIEBAIGJvb2wgSW5zcGVj
dG9yU3R5bGVTaGVldDo6ZGVsZXRlUnVsZShjb25zdCBJbnNwZWN0b3JDU1NJZCYgaWQsIEV4Y2Vw
dGlvbkNvZGUmIGVjCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBzdHlsZVNo
ZWV0LT5kZWxldGVSdWxlKGlkLm9yZGluYWwoKSwgZWMpOworICAgIGF1dG8gZGVsZXRlUnVsZVJl
c3VsdCA9IHN0eWxlU2hlZXQtPmRlbGV0ZVJ1bGUoaWQub3JkaW5hbCgpKTsKICAgICAvLyB8cnVs
ZXwgTUFZIE5PVCBiZSBhZGRyZXNzZWQgYWZ0ZXIgdGhpcyBsaW5lIQogCi0gICAgaWYgKGVjKQor
ICAgIGlmIChkZWxldGVSdWxlUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgIGVjID0g
ZGVsZXRlUnVsZVJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkuY29kZSgpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQogCiAgICAgU3RyaW5nIHNoZWV0VGV4dCA9IG1fcGFyc2VkU3R5bGVT
aGVldC0+dGV4dCgpOwogICAgIHNoZWV0VGV4dC5yZW1vdmUoc291cmNlRGF0YS0+cnVsZUhlYWRl
clJhbmdlLnN0YXJ0LCBzb3VyY2VEYXRhLT5ydWxlQm9keVJhbmdlLmVuZCAtIHNvdXJjZURhdGEt
PnJ1bGVIZWFkZXJSYW5nZS5zdGFydCArIDEpOwpAQCAtMTE1MywxMSArMTE1NywxNCBAQCBib29s
IEluc3BlY3RvclN0eWxlU2hlZXQ6OnNldFN0eWxlVGV4dChDU1NTdHlsZURlY2xhcmF0aW9uKiBz
dHlsZSwgY29uc3QgU3RyaW5nJgogICAgIGlmIChpZC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIHN0eWxlLT5zZXRDc3NUZXh0KHRleHQsIGVjKTsKLSAgICBpZiAoIWVj
KQotICAgICAgICBtX3BhcnNlZFN0eWxlU2hlZXQtPnNldFRleHQocGF0Y2hlZFN0eWxlU2hlZXRU
ZXh0KTsKKyAgICBhdXRvIHNldENzc1RleHRSZXN1bHQgPSBzdHlsZS0+c2V0Q3NzVGV4dCh0ZXh0
KTsKKyAgICBpZiAoc2V0Q3NzVGV4dFJlc3VsdC5oYXNFeGNlcHRpb24oKSkgeworICAgICAgICBl
YyA9IHNldENzc1RleHRSZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpLmNvZGUoKTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KIAotICAgIHJldHVybiAhZWM7CisgICAgbV9wYXJzZWRTdHls
ZVNoZWV0LT5zZXRUZXh0KHBhdGNoZWRTdHlsZVNoZWV0VGV4dCk7CisgICAgcmV0dXJuIHRydWU7
CiB9CiAKIGJvb2wgSW5zcGVjdG9yU3R5bGVTaGVldDo6c3R5bGVTaGVldFRleHRXaXRoQ2hhbmdl
ZFN0eWxlKENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlLCBjb25zdCBTdHJpbmcmIG5ld1N0eWxl
VGV4dCwgU3RyaW5nKiByZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
TGVuZ3RoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGguY3BwCmluZGV4IGI5OWI5
NjZiNmY4OGNmNjAwNGY1OTE4OTg4YzIyODYyN2FjMmZlZGUuLjdiOWY0Yjk0N2M1MWQ3YWY4YzVk
MGM1NDI4ZTY3ZmMzYTgzNmM5NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdM
ZW5ndGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGguY3BwCkBAIC0zMjcs
NyArMzI3LDcgQEAgU1ZHTGVuZ3RoIFNWR0xlbmd0aDo6ZnJvbUNTU1ByaW1pdGl2ZVZhbHVlKGNv
bnN0IENTU1ByaW1pdGl2ZVZhbHVlJiB2YWx1ZSkKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwogICAgIFNWR0xlbmd0aCBsZW5ndGg7Ci0gICAgbGVuZ3RoLm5ld1ZhbHVlU3BlY2lmaWVkVW5p
dHMoc3ZnVHlwZSwgdmFsdWUuZ2V0RmxvYXRWYWx1ZSgpLCBlYyk7CisgICAgbGVuZ3RoLm5ld1Zh
bHVlU3BlY2lmaWVkVW5pdHMoc3ZnVHlwZSwgdmFsdWUuZmxvYXRWYWx1ZSgpLCBlYyk7CiAgICAg
aWYgKGVjKSAgICAKICAgICAgICAgcmV0dXJuIFNWR0xlbmd0aCgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9ET00vRE9NQ1NTTWVkaWFSdWxlLm1tIGIvU291cmNlL1dlYktpdC9t
YWMvRE9NL0RPTUNTU01lZGlhUnVsZS5tbQppbmRleCBiMzhkM2FjMTkyOGE1NzE4OGQ0OThlODdm
YWJhOGM1OTkzNmMzZjJiLi45MDU5NmE1YWVjYzM2NzhhNjFiYmYyZTM0ZTc4NTlmZjVkN2RjMjRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9ET00vRE9NQ1NTTWVkaWFSdWxlLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9ET01DU1NNZWRpYVJ1bGUubW0KQEAgLTU4LDE4ICs1
OCwxMyBAQCAtIChET01DU1NSdWxlTGlzdCAqKWNzc1J1bGVzCiAtICh1bnNpZ25lZClpbnNlcnRS
dWxlOihOU1N0cmluZyAqKXJ1bGUgaW5kZXg6KHVuc2lnbmVkKWluZGV4CiB7CiAgICAgV2ViQ29y
ZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwotICAgIHVuc2lnbmVkIHJlc3VsdCA9IElNUEwtPmluc2VydFJ1bGUocnVsZSwg
aW5kZXgsIGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiByZXN1bHQ7
CisgICAgcmV0dXJuIHJhaXNlT25ET01FcnJvcihJTVBMLT5pbnNlcnRSdWxlKHJ1bGUsIGluZGV4
KSk7CiB9CiAKIC0gKHZvaWQpZGVsZXRlUnVsZToodW5zaWduZWQpaW5kZXgKIHsKICAgICBXZWJD
b3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6RXhjZXB0aW9u
Q29kZSBlYyA9IDA7Ci0gICAgSU1QTC0+ZGVsZXRlUnVsZShpbmRleCwgZWMpOwotICAgIHJhaXNl
T25ET01FcnJvcihlYyk7CisgICAgcmV0dXJuIHJhaXNlT25ET01FcnJvcihJTVBMLT5kZWxldGVS
dWxlKGluZGV4KSk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0RP
TS9ET01DU1NQcmltaXRpdmVWYWx1ZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9ET01DU1NQ
cmltaXRpdmVWYWx1ZS5tbQppbmRleCA2YjNjN2ViYmM3ZTVmNDRkYjhiYTM4MmRkM2Y2MjAxNzNj
M2FjYjA0Li4yMjkwZmJkZjgzZTNiYmIzMjI0NWJkNTdjNWEzYmFkZmJhMGU2ZGQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9ET00vRE9NQ1NTUHJpbWl0aXZlVmFsdWUubW0KKysrIGIv
U291cmNlL1dlYktpdC9tYWMvRE9NL0RPTUNTU1ByaW1pdGl2ZVZhbHVlLm1tCkBAIC01NCw2MiAr
NTQsNDMgQEAgLSAodW5zaWduZWQgc2hvcnQpcHJpbWl0aXZlVHlwZQogLSAodm9pZClzZXRGbG9h
dFZhbHVlOih1bnNpZ25lZCBzaG9ydCl1bml0VHlwZSBmbG9hdFZhbHVlOihmbG9hdClmbG9hdFZh
bHVlCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdl
YkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIElNUEwtPnNldEZsb2F0VmFsdWUodW5p
dFR5cGUsIGZsb2F0VmFsdWUsIGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOworICAgIHJh
aXNlT25ET01FcnJvcihJTVBMLT5zZXRGbG9hdFZhbHVlKHVuaXRUeXBlLCBmbG9hdFZhbHVlKSk7
CiB9CiAKIC0gKGZsb2F0KWdldEZsb2F0VmFsdWU6KHVuc2lnbmVkIHNob3J0KXVuaXRUeXBlCiB7
CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6
OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGZsb2F0IHJlc3VsdCA9IElNUEwtPmdldEZsb2F0
VmFsdWUodW5pdFR5cGUsIGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVy
biByZXN1bHQ7CisgICAgcmV0dXJuIHJhaXNlT25ET01FcnJvcihJTVBMLT5nZXRGbG9hdFZhbHVl
KHVuaXRUeXBlKSk7CiB9CiAKIC0gKHZvaWQpc2V0U3RyaW5nVmFsdWU6KHVuc2lnbmVkIHNob3J0
KXN0cmluZ1R5cGUgc3RyaW5nVmFsdWU6KE5TU3RyaW5nICopc3RyaW5nVmFsdWUKIHsKICAgICBX
ZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6RXhjZXB0
aW9uQ29kZSBlYyA9IDA7Ci0gICAgSU1QTC0+c2V0U3RyaW5nVmFsdWUoc3RyaW5nVHlwZSwgc3Ry
aW5nVmFsdWUsIGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOworICAgIHJhaXNlT25ET01F
cnJvcihJTVBMLT5zZXRTdHJpbmdWYWx1ZShzdHJpbmdUeXBlLCBzdHJpbmdWYWx1ZSkpOwogfQog
CiAtIChOU1N0cmluZyAqKWdldFN0cmluZ1ZhbHVlCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhy
ZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwot
ICAgIE5TU3RyaW5nICpyZXN1bHQgPSBJTVBMLT5nZXRTdHJpbmdWYWx1ZShlYyk7Ci0gICAgcmFp
c2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiByYWlzZU9u
RE9NRXJyb3IoSU1QTC0+Z2V0U3RyaW5nVmFsdWUoKSk7CiB9CiAKIC0gKERPTUNvdW50ZXIgKiln
ZXRDb3VudGVyVmFsdWUKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3Rh
dGU7Ci0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgRE9NQ291bnRlciAq
cmVzdWx0ID0ga2l0KFdURjo6Z2V0UHRyKElNUEwtPmdldENvdW50ZXJWYWx1ZShlYykpKTsKLSAg
ICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIGtp
dChyYWlzZU9uRE9NRXJyb3IoSU1QTC0+Z2V0Q291bnRlclZhbHVlKCkpKTsKIH0KIAogLSAoRE9N
UmVjdCAqKWdldFJlY3RWYWx1ZQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0
ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBET01SZWN0
ICpyZXN1bHQgPSBraXQoV1RGOjpnZXRQdHIoSU1QTC0+Z2V0UmVjdFZhbHVlKGVjKSkpOwotICAg
IHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4ga2l0
KHJhaXNlT25ET01FcnJvcihJTVBMLT5nZXRSZWN0VmFsdWUoKSkpOwogfQogCiAtIChET01SR0JD
b2xvciAqKWdldFJHQkNvbG9yVmFsdWUKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxs
U3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgRE9N
UkdCQ29sb3IgKnJlc3VsdCA9IGtpdChXVEY6OmdldFB0cihJTVBMLT5nZXRSR0JDb2xvclZhbHVl
KGVjKSkpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICByZXR1cm4ga2l0KHJhaXNlT25ET01FcnJvcihJTVBMLT5nZXRSR0JDb2xvclZhbHVlKCkpLnB0
cigpKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvRE9NL0RPTUNT
U1J1bGUubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9ET00vRE9NQ1NTUnVsZS5tbQppbmRleCAzMWM2
YThmYjFmZmZhM2M0ODdhMzc5ZmM4NDRjMmI4M2Q3N2UyMGFiLi43NjBmYjViMTg4NWU4YTI3Mjgz
YzliYjJjYTcyYmZiMjk2NzZhNWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9ET00v
RE9NQ1NTUnVsZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9ET00vRE9NQ1NTUnVsZS5tbQpA
QCAtNjgsOSArNjgsNyBAQCAtIChOU1N0cmluZyAqKWNzc1RleHQKIC0gKHZvaWQpc2V0Q3NzVGV4
dDooTlNTdHJpbmcgKiluZXdDc3NUZXh0CiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVs
bFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIElN
UEwtPnNldENzc1RleHQobmV3Q3NzVGV4dCwgZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7
CisgICAgcmFpc2VPbkRPTUVycm9yKElNUEwtPnNldENzc1RleHQobmV3Q3NzVGV4dCkpOwogfQog
CiAtIChET01DU1NTdHlsZVNoZWV0ICopcGFyZW50U3R5bGVTaGVldApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9tYWMvRE9NL0RPTUNTU1N0eWxlRGVjbGFyYXRpb24ubW0gYi9Tb3VyY2UvV2Vi
S2l0L21hYy9ET00vRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbi5tbQppbmRleCA2YjFjNzc4ZTE0NDJh
NjE1MTNkNWJjNGI3ZTkzOGYwZjczMjM0OTQ5Li4zN2IzYzczMTRkN2UzOTM0NjM3ZWZmMmJmMjdi
NmU0MDQ4ZmI0MzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9ET00vRE9NQ1NTU3R5
bGVEZWNsYXJhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9ET00vRE9NQ1NTU3R5bGVE
ZWNsYXJhdGlvbi5tbQpAQCAtNjQsOSArNjQsNyBAQCAtIChOU1N0cmluZyAqKWNzc1RleHQKIC0g
KHZvaWQpc2V0Q3NzVGV4dDooTlNTdHJpbmcgKiluZXdDc3NUZXh0CiB7CiAgICAgV2ViQ29yZTo6
SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwotICAgIElNUEwtPnNldENzc1RleHQobmV3Q3NzVGV4dCwgZWMpOwotICAgIHJhaXNl
T25ET01FcnJvcihlYyk7CisgICAgcmFpc2VPbkRPTUVycm9yKElNUEwtPnNldENzc1RleHQobmV3
Q3NzVGV4dCkpOwogfQogCiAtICh1bnNpZ25lZClsZW5ndGgKQEAgLTk2LDEwICs5NCw3IEBAIC0g
KERPTUNTU1ZhbHVlICopZ2V0UHJvcGVydHlDU1NWYWx1ZTooTlNTdHJpbmcgKilwcm9wZXJ0eU5h
bWUKIC0gKE5TU3RyaW5nICopcmVtb3ZlUHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVydHlOYW1l
CiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNv
cmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIE5TU3RyaW5nICpyZXN1bHQgPSBJTVBMLT5y
ZW1vdmVQcm9wZXJ0eShwcm9wZXJ0eU5hbWUsIGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMp
OwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIHJhaXNlT25ET01FcnJvcihJTVBMLT5y
ZW1vdmVQcm9wZXJ0eShwcm9wZXJ0eU5hbWUpKTsKIH0KIAogLSAoTlNTdHJpbmcgKilnZXRQcm9w
ZXJ0eVByaW9yaXR5OihOU1N0cmluZyAqKXByb3BlcnR5TmFtZQpAQCAtMTExLDkgKzEwNiw3IEBA
IC0gKE5TU3RyaW5nICopZ2V0UHJvcGVydHlQcmlvcml0eTooTlNTdHJpbmcgKilwcm9wZXJ0eU5h
bWUKIC0gKHZvaWQpc2V0UHJvcGVydHk6KE5TU3RyaW5nICopcHJvcGVydHlOYW1lIHZhbHVlOihO
U1N0cmluZyAqKXZhbHVlIHByaW9yaXR5OihOU1N0cmluZyAqKXByaW9yaXR5CiB7CiAgICAgV2Vi
Q29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OkV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwotICAgIElNUEwtPnNldFByb3BlcnR5KHByb3BlcnR5TmFtZSwgdmFsdWUs
IHByaW9yaXR5LCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKKyAgICByZXR1cm4gcmFp
c2VPbkRPTUVycm9yKElNUEwtPnNldFByb3BlcnR5KHByb3BlcnR5TmFtZSwgdmFsdWUsIHByaW9y
aXR5KSk7CiB9CiAKIC0gKE5TU3RyaW5nICopaXRlbToodW5zaWduZWQpaW5kZXgKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9ET01DU1NTdHlsZVNoZWV0Lm1tIGIvU291cmNlL1dl
YktpdC9tYWMvRE9NL0RPTUNTU1N0eWxlU2hlZXQubW0KaW5kZXggYTcxMDQ2OTI1ZWEwZDNiNmFl
Nzg2ZjA1YjE3NjBlMTMyODEyNTM3NS4uZDFhMWYwZjFlZjNmYWQ4ODlmMzg3ZmU4NjExNzM1Yzgy
Y2U2MDg3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvRE9NL0RPTUNTU1N0eWxlU2hl
ZXQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvRE9NL0RPTUNTU1N0eWxlU2hlZXQubW0KQEAg
LTY1LDM1ICs2NSwyNSBAQCAtIChET01DU1NSdWxlTGlzdCAqKXJ1bGVzCiAtICh1bnNpZ25lZClp
bnNlcnRSdWxlOihOU1N0cmluZyAqKXJ1bGUgaW5kZXg6KHVuc2lnbmVkKWluZGV4CiB7CiAgICAg
V2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OkV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwotICAgIHVuc2lnbmVkIHJlc3VsdCA9IElNUEwtPmluc2VydFJ1bGUo
cnVsZSwgaW5kZXgsIGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgcmV0dXJuIHJhaXNlT25ET01FcnJvcihJTVBMLT5pbnNlcnRSdWxlKHJ1bGUs
IGluZGV4KSk7CiB9CiAKIC0gKHZvaWQpZGVsZXRlUnVsZToodW5zaWduZWQpaW5kZXgKIHsKICAg
ICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6RXhj
ZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgSU1QTC0+ZGVsZXRlUnVsZShpbmRleCwgZWMpOwotICAg
IHJhaXNlT25ET01FcnJvcihlYyk7CisgICAgcmFpc2VPbkRPTUVycm9yKElNUEwtPmRlbGV0ZVJ1
bGUoaW5kZXgpKTsKIH0KIAogLSAoaW50KWFkZFJ1bGU6KE5TU3RyaW5nICopc2VsZWN0b3Igc3R5
bGU6KE5TU3RyaW5nICopc3R5bGUgaW5kZXg6KHVuc2lnbmVkKWluZGV4CiB7CiAgICAgV2ViQ29y
ZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwotICAgIGludCByZXN1bHQgPSBJTVBMLT5hZGRSdWxlKHNlbGVjdG9yLCBzdHls
ZSwgaW5kZXgsIGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiByZXN1
bHQ7CisgICAgcmV0dXJuIHJhaXNlT25ET01FcnJvcihJTVBMLT5hZGRSdWxlKHNlbGVjdG9yLCBz
dHlsZSwgaW5kZXgpKTsKIH0KIAogLSAodm9pZClyZW1vdmVSdWxlOih1bnNpZ25lZClpbmRleAog
ewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3Jl
OjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBJTVBMLT5yZW1vdmVSdWxlKGluZGV4LCBlYyk7
Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKKyAgICByYWlzZU9uRE9NRXJyb3IoSU1QTC0+cmVt
b3ZlUnVsZShpbmRleCkpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9ET00vRE9NQ1NTVmFsdWUubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9ET00vRE9NQ1NTVmFsdWUu
bW0KaW5kZXggZTVjMDg5MTlmYzQ3MWNlYzUxZmI2OWQ2MTAxMzU4Y2M3MzIzNjIxOS4uODgxZWYy
N2Q0ZmE4ZjUzZTEzZWJmNDI4M2JlNTljOGUzZjhjNWZmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvRE9NL0RPTUNTU1ZhbHVlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9E
T01DU1NWYWx1ZS5tbQpAQCAtNTksOSArNTksNyBAQCAtIChOU1N0cmluZyAqKWNzc1RleHQKIC0g
KHZvaWQpc2V0Q3NzVGV4dDooTlNTdHJpbmcgKiluZXdDc3NUZXh0CiB7CiAgICAgV2ViQ29yZTo6
SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwotICAgIElNUEwtPnNldENzc1RleHQobmV3Q3NzVGV4dCwgZWMpOwotICAgIHJhaXNl
T25ET01FcnJvcihlYyk7CisgICAgcmFpc2VPbkRPTUVycm9yKElNUEwtPnNldENzc1RleHQobmV3
Q3NzVGV4dCkpOwogfQogCiAtICh1bnNpZ25lZCBzaG9ydCljc3NWYWx1ZVR5cGUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9ET01NZWRpYUxpc3QubW0gYi9Tb3VyY2UvV2ViS2l0
L21hYy9ET00vRE9NTWVkaWFMaXN0Lm1tCmluZGV4IGQ4MTdjYjJhOThlNTQ0Yjk2Nzc2YWUzZmZj
MjMwYmUyMmJkYzQ4MmQuLjAwM2RmNmY3YjgzOGE0YjgxZDBhOTE2OGIzODc4OTE5NzMyNzFmMjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9ET01NZWRpYUxpc3QubW0KKysrIGIv
U291cmNlL1dlYktpdC9tYWMvRE9NL0RPTU1lZGlhTGlzdC5tbQpAQCAtNjEsOSArNjEsNyBAQCAt
IChOU1N0cmluZyAqKW1lZGlhVGV4dAogLSAodm9pZClzZXRNZWRpYVRleHQ6KE5TU3RyaW5nICop
bmV3TWVkaWFUZXh0CiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRl
OwotICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIElNUEwtPnNldE1lZGlh
VGV4dChuZXdNZWRpYVRleHQsIGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOworICAgIHJh
aXNlT25ET01FcnJvcihJTVBMLT5zZXRNZWRpYVRleHQobmV3TWVkaWFUZXh0KSk7CiB9CiAKIC0g
KHVuc2lnbmVkKWxlbmd0aApAQCAtODEsMTcgKzc5LDEzIEBAIC0gKE5TU3RyaW5nICopaXRlbToo
dW5zaWduZWQpaW5kZXgKIC0gKHZvaWQpZGVsZXRlTWVkaXVtOihOU1N0cmluZyAqKW9sZE1lZGl1
bQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJD
b3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBJTVBMLT5kZWxldGVNZWRpdW0ob2xkTWVk
aXVtLCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKKyAgICByYWlzZU9uRE9NRXJyb3Io
SU1QTC0+ZGVsZXRlTWVkaXVtKG9sZE1lZGl1bSkpOwogfQogCiAtICh2b2lkKWFwcGVuZE1lZGl1
bTooTlNTdHJpbmcgKiluZXdNZWRpdW0KIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxs
U3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgSU1Q
TC0+YXBwZW5kTWVkaXVtKG5ld01lZGl1bSwgZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7
CisgICAgcmFpc2VPbkRPTUVycm9yKElNUEwtPmFwcGVuZE1lZGl1bShuZXdNZWRpdW0pKTsKIH0K
IAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvRE9NL0V4Y2VwdGlvbkhhbmRs
ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9ET00vRXhjZXB0aW9uSGFuZGxlcnMuaAppbmRleCAw
Yzc0NTFmYzE5Y2VlYTBhZjY1MmYwYmYxN2UyNjQ3N2QzN2VhYzY3Li4xYjBiMTE3NDU2N2IxZWU1
OWE1NjIzYWQ3YmUyYzQwYmFhY2EwMjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9E
T00vRXhjZXB0aW9uSGFuZGxlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9ET00vRXhjZXB0
aW9uSGFuZGxlcnMuaApAQCAtMjUsMTcgKzI1LDMxIEBACiAKICNwcmFnbWEgb25jZQogCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci11c2luZyBFeGNlcHRpb25Db2RlID0gaW50OwotfQorI2luY2x1ZGUg
PFdlYkNvcmUvRXhjZXB0aW9uT3IuaD4KIAogTk9fUkVUVVJOIHZvaWQgcmFpc2VET01FeGNlcHRp
b24oV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSk7CitOT19SRVRVUk4gdm9pZCByYWlzZURPTUV4Y2Vw
dGlvbihXZWJDb3JlOjpFeGNlcHRpb24mJik7CiBOT19SRVRVUk4gdm9pZCByYWlzZVR5cGVFcnJv
ckV4Y2VwdGlvbigpOwogCiB2b2lkIHJhaXNlT25ET01FcnJvcihXZWJDb3JlOjpFeGNlcHRpb25D
b2RlKTsKK3ZvaWQgcmFpc2VPbkRPTUVycm9yKFdlYkNvcmU6OkV4Y2VwdGlvbk9yPHZvaWQ+JiYp
OwordGVtcGxhdGU8dHlwZW5hbWUgVD4gVCByYWlzZU9uRE9NRXJyb3IoV2ViQ29yZTo6RXhjZXB0
aW9uT3I8VD4mJik7CiAKIGlubGluZSB2b2lkIHJhaXNlT25ET01FcnJvcihXZWJDb3JlOjpFeGNl
cHRpb25Db2RlIGNvZGUpCiB7CiAgICAgaWYgKGNvZGUpCiAgICAgICAgIHJhaXNlRE9NRXhjZXB0
aW9uKGNvZGUpOwogfQorCitpbmxpbmUgdm9pZCByYWlzZU9uRE9NRXJyb3IoV2ViQ29yZTo6RXhj
ZXB0aW9uT3I8dm9pZD4mJiBwb3NzaWJsZUV4Y2VwdGlvbikKK3sKKyAgICBpZiAocG9zc2libGVF
eGNlcHRpb24uaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJhaXNlRE9NRXhjZXB0aW9uKHBvc3Np
YmxlRXhjZXB0aW9uLnJlbGVhc2VFeGNlcHRpb24oKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1l
IFQ+IGlubGluZSBUIHJhaXNlT25ET01FcnJvcihXZWJDb3JlOjpFeGNlcHRpb25PcjxUPiYmIGV4
Y2VwdGlvbk9yUmV0dXJuVmFsdWUpCit7CisgICAgaWYgKGV4Y2VwdGlvbk9yUmV0dXJuVmFsdWUu
aGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJhaXNlRE9NRXhjZXB0aW9uKGV4Y2VwdGlvbk9yUmV0
dXJuVmFsdWUucmVsZWFzZUV4Y2VwdGlvbigpKTsKKyAgICByZXR1cm4gZXhjZXB0aW9uT3JSZXR1
cm5WYWx1ZS5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvbWFjL0RPTS9FeGNlcHRpb25IYW5kbGVycy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9F
eGNlcHRpb25IYW5kbGVycy5tbQppbmRleCAyOTdlYmQ5MzVmNDU5MTYwNDg1Nzg5NWIyZTZmNDNk
YTRlMmM5ZmM1Li45ZWRiMWQ3NDFjYzdhMmRjN2YzZjk0MTc3NjY2NjBmOWMzZWUzYWFlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9ET00vRXhjZXB0aW9uSGFuZGxlcnMubW0KKysrIGIv
U291cmNlL1dlYktpdC9tYWMvRE9NL0V4Y2VwdGlvbkhhbmRsZXJzLm1tCkBAIC03NiwzICs3Niw4
IEBAIHZvaWQgcmFpc2VUeXBlRXJyb3JFeGNlcHRpb24oKQogewogICAgIHJhaXNlRE9NRXhjZXB0
aW9uKFdlYkNvcmU6OlR5cGVFcnJvcik7CiB9CisKK3ZvaWQgcmFpc2VET01FeGNlcHRpb24oV2Vi
Q29yZTo6RXhjZXB0aW9uJiYgZXhjZXB0aW9uKQoreworICAgIHJhaXNlRE9NRXhjZXB0aW9uKGV4
Y2VwdGlvbi5jb2RlKCkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vRE9NQ1NT
Q2xhc3Nlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9ET01DU1NDbGFzc2VzLmNwcAppbmRleCBk
OGE1MDM5MTE1M2IwY2M4YmRmMjlmYzBjOWZkNWFiZGUxMTBhNDg2Li5mZWJiOTJlZDgxM2QxODVm
NTkzYjE3OTRhYzkwNDJiZTU2MWI4NWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9E
T01DU1NDbGFzc2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9ET01DU1NDbGFzc2VzLmNw
cApAQCAtOTIsOSArOTIsNyBAQCBIUkVTVUxUIERPTUNTU1N0eWxlRGVjbGFyYXRpb246OmNzc1Rl
eHQoX19kZXJlZl9vcHRfb3V0IEJTVFIqIHJlc3VsdCkKIEhSRVNVTFQgRE9NQ1NTU3R5bGVEZWNs
YXJhdGlvbjo6c2V0Q3NzVGV4dChfSW5fIEJTVFIgY3NzVGV4dCkKIHsKICAgICBXVEY6OlN0cmlu
ZyBjc3NUZXh0U3RyaW5nKGNzc1RleHQpOwotICAgIC8vIEZJWE1FOiA8cmRhcjovLzUxNDgwNDU+
IHJldHVybiBET00gZXhjZXB0aW9uIGluZm8KLSAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVj
OwotICAgIG1fc3R5bGUtPnNldENzc1RleHQoY3NzVGV4dFN0cmluZywgZWMpOworICAgIG1fc3R5
bGUtPnNldENzc1RleHQoY3NzVGV4dFN0cmluZyk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAg
LTE0NCw5ICsxNDIsNyBAQCBIUkVTVUxUIERPTUNTU1N0eWxlRGVjbGFyYXRpb246OnNldFByb3Bl
cnR5KF9Jbl8gQlNUUiBwcm9wZXJ0eU5hbWUsIF9Jbl8gQlNUUiB2YQogICAgIFdURjo6U3RyaW5n
IHByb3BlcnR5TmFtZVN0cmluZyhwcm9wZXJ0eU5hbWUpOwogICAgIFdURjo6U3RyaW5nIHZhbHVl
U3RyaW5nKHZhbHVlKTsKICAgICBXVEY6OlN0cmluZyBwcmlvcml0eVN0cmluZyhwcmlvcml0eSk7
Ci0gICAgLy8gRklYTUU6IDxyZGFyOi8vNTE0ODA0NT4gcmV0dXJuIERPTSBleGNlcHRpb24gaW5m
bwotICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgY29kZTsKLSAgICBtX3N0eWxlLT5zZXRQcm9w
ZXJ0eShwcm9wZXJ0eU5hbWVTdHJpbmcsIHZhbHVlU3RyaW5nLCBwcmlvcml0eVN0cmluZywgY29k
ZSk7CisgICAgbV9zdHlsZS0+c2V0UHJvcGVydHkocHJvcGVydHlOYW1lU3RyaW5nLCB2YWx1ZVN0
cmluZywgcHJpb3JpdHlTdHJpbmcpOwogICAgIHJldHVybiBTX09LOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dl
YktpdERPTUNTU1J1bGUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01DU1NSdWxlLmNwcAppbmRleCAyMmIwNTQyZWY0NTI3
M2RlMTY4ZWI3NjA2MjAyYjE4YjA3YTRmNDU0Li5lMzMxOGJkNDNmMDkzNzE0ZTI1ODAyZjgwMzQ0
M2U3NDUzMzJlOTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUNTU1J1bGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NQ1NT
UnVsZS5jcHAKQEAgLTEsNiArMSw1IEBACiAvKgogICogIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRo
ZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAqICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2Vu
ZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQogICoKICAqICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKQEAgLTIxNywxMCArMjE2LDkgQEAgdm9pZCB3ZWJraXRfZG9tX2Nzc19ydWxl
X3NldF9jc3NfdGV4dChXZWJLaXRET01DU1NSdWxlKiBzZWxmLCBjb25zdCBnY2hhciogdmFsdWUK
ICAgICBnX3JldHVybl9pZl9mYWlsKCFlcnJvciB8fCAhKmVycm9yKTsKICAgICBXZWJDb3JlOjpD
U1NSdWxlKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIFdURjo6U3RyaW5nIGNvbnZl
cnRlZFZhbHVlID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KHZhbHVlKTsKLSAgICBXZWJDb3JlOjpF
eGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBpdGVtLT5zZXRDc3NUZXh0KGNvbnZlcnRlZFZhbHVl
LCBlYyk7Ci0gICAgaWYgKGVjKSB7Ci0gICAgICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGVEZXNj
cmlwdGlvbiBlY2Rlc2MoZWMpOworICAgIGF1dG8gcmVzdWx0ID0gaXRlbS0+c2V0Q3NzVGV4dChj
b252ZXJ0ZWRWYWx1ZSk7CisgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgeworICAgICAg
ICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24gZWNkZXNjKHJlc3VsdC5yZWxlYXNl
RXhjZXB0aW9uKCkuY29kZSgpKTsKICAgICAgICAgZ19zZXRfZXJyb3JfbGl0ZXJhbChlcnJvciwg
Z19xdWFya19mcm9tX3N0cmluZygiV0VCS0lUX0RPTSIpLCBlY2Rlc2MuY29kZSwgZWNkZXNjLm5h
bWUpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NQ1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dl
YktpdERPTUNTU1N0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IGUyYmYyNjQzYzQ0ZDM5MzEwNGU4
NWZjYWUzODY1ZWNkYThmYjY3YTYuLmQ0ODQ0ZTY1OWZlMzA4ODA3ZjBmMzI4ZDExODhlMjM5ZGNm
MTdkZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NQ1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRE
T01DU1NTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtMSw2ICsxLDUgQEAKIC8qCiAgKiAgVGhpcyBm
aWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICogIFRoaXMg
ZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBN
T0RJRlkhCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMTk2LDkgKzE5NSwxMCBAQCBnY2hhciog
d2Via2l0X2RvbV9jc3Nfc3R5bGVfZGVjbGFyYXRpb25fcmVtb3ZlX3Byb3BlcnR5KFdlYktpdERP
TUNTU1N0eWxlRGVjbGFyYQogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKCFlcnJvciB8fCAhKmVy
cm9yLCAwKTsKICAgICBXZWJDb3JlOjpDU1NTdHlsZURlY2xhcmF0aW9uKiBpdGVtID0gV2ViS2l0
Ojpjb3JlKHNlbGYpOwogICAgIFdURjo6U3RyaW5nIGNvbnZlcnRlZFByb3BlcnR5TmFtZSA9IFdU
Rjo6U3RyaW5nOjpmcm9tVVRGOChwcm9wZXJ0eU5hbWUpOwotICAgIFdlYkNvcmU6OkV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwotICAgIGdjaGFyKiByZXN1bHQgPSBjb252ZXJ0VG9VVEY4U3RyaW5nKGl0
ZW0tPnJlbW92ZVByb3BlcnR5KGNvbnZlcnRlZFByb3BlcnR5TmFtZSwgZWMpKTsKLSAgICByZXR1
cm4gcmVzdWx0OworICAgIGF1dG8gcmVzdWx0ID0gaXRlbS0+cmVtb3ZlUHJvcGVydHkoY29udmVy
dGVkUHJvcGVydHlOYW1lKTsKKyAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gY29udmVydFRvVVRGOFN0cmluZyhyZXN1bHQu
cmVsZWFzZVJldHVyblZhbHVlKCkpOwogfQogCiBnY2hhciogd2Via2l0X2RvbV9jc3Nfc3R5bGVf
ZGVjbGFyYXRpb25fZ2V0X3Byb3BlcnR5X3ByaW9yaXR5KFdlYktpdERPTUNTU1N0eWxlRGVjbGFy
YXRpb24qIHNlbGYsIGNvbnN0IGdjaGFyKiBwcm9wZXJ0eU5hbWUpCkBAIC0yMjQsMTAgKzIyNCw5
IEBAIHZvaWQgd2Via2l0X2RvbV9jc3Nfc3R5bGVfZGVjbGFyYXRpb25fc2V0X3Byb3BlcnR5KFdl
YktpdERPTUNTU1N0eWxlRGVjbGFyYXRpb24qCiAgICAgV1RGOjpTdHJpbmcgY29udmVydGVkUHJv
cGVydHlOYW1lID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KHByb3BlcnR5TmFtZSk7CiAgICAgV1RG
OjpTdHJpbmcgY29udmVydGVkVmFsdWUgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgodmFsdWUpOwog
ICAgIFdURjo6U3RyaW5nIGNvbnZlcnRlZFByaW9yaXR5ID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4
KHByaW9yaXR5KTsKLSAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBpdGVt
LT5zZXRQcm9wZXJ0eShjb252ZXJ0ZWRQcm9wZXJ0eU5hbWUsIGNvbnZlcnRlZFZhbHVlLCBjb252
ZXJ0ZWRQcmlvcml0eSwgZWMpOwotICAgIGlmIChlYykgewotICAgICAgICBXZWJDb3JlOjpFeGNl
cHRpb25Db2RlRGVzY3JpcHRpb24gZWNkZXNjKGVjKTsKKyAgICBhdXRvIHJlc3VsdCA9IGl0ZW0t
PnNldFByb3BlcnR5KGNvbnZlcnRlZFByb3BlcnR5TmFtZSwgY29udmVydGVkVmFsdWUsIGNvbnZl
cnRlZFByaW9yaXR5KTsKKyAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAg
IFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiBlY2Rlc2MocmVzdWx0LnJlbGVhc2VF
eGNlcHRpb24oKS5jb2RlKCkpOwogICAgICAgICBnX3NldF9lcnJvcl9saXRlcmFsKGVycm9yLCBn
X3F1YXJrX2Zyb21fc3RyaW5nKCJXRUJLSVRfRE9NIiksIGVjZGVzYy5jb2RlLCBlY2Rlc2MubmFt
ZSk7CiAgICAgfQogfQpAQCAtMjgwLDEwICsyNzksOSBAQCB2b2lkIHdlYmtpdF9kb21fY3NzX3N0
eWxlX2RlY2xhcmF0aW9uX3NldF9jc3NfdGV4dChXZWJLaXRET01DU1NTdHlsZURlY2xhcmF0aW9u
KgogICAgIGdfcmV0dXJuX2lmX2ZhaWwoIWVycm9yIHx8ICEqZXJyb3IpOwogICAgIFdlYkNvcmU6
OkNTU1N0eWxlRGVjbGFyYXRpb24qIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgV1RG
OjpTdHJpbmcgY29udmVydGVkVmFsdWUgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgodmFsdWUpOwot
ICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGl0ZW0tPnNldENzc1RleHQo
Y29udmVydGVkVmFsdWUsIGVjKTsKLSAgICBpZiAoZWMpIHsKLSAgICAgICAgV2ViQ29yZTo6RXhj
ZXB0aW9uQ29kZURlc2NyaXB0aW9uIGVjZGVzYyhlYyk7CisgICAgYXV0byByZXN1bHQgPSBpdGVt
LT5zZXRDc3NUZXh0KGNvbnZlcnRlZFZhbHVlKTsKKyAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlv
bigpKSB7CisgICAgICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiBlY2Rlc2Mo
cmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5jb2RlKCkpOwogICAgICAgICBnX3NldF9lcnJvcl9s
aXRlcmFsKGVycm9yLCBnX3F1YXJrX2Zyb21fc3RyaW5nKCJXRUJLSVRfRE9NIiksIGVjZGVzYy5j
b2RlLCBlY2Rlc2MubmFtZSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01DU1NTdHlsZVNo
ZWV0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0
ay9ET00vV2ViS2l0RE9NQ1NTU3R5bGVTaGVldC5jcHAKaW5kZXggMzU3YWMxNzUwOWNiMzk1ODQ5
NTFjYzJhMGJkNmQ2YTMzZGViOTM4NC4uZDE3YmFlODkzOGYzYjJjYThkNWY5NTU1NjU1Nzc0MjZj
ZjY1MTAxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01DU1NTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUNT
U1N0eWxlU2hlZXQuY3BwCkBAIC0xLDYgKzEsNSBAQAogLyoKICAqICBUaGlzIGZpbGUgaXMgcGFy
dCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCi0gKiAgVGhpcyBmaWxlIGhhcyBi
ZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKICAq
CiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCkBAIC0xMzUsMTMgKzEzNCwxMyBAQCBndWxvbmcgd2Via2l0X2Rv
bV9jc3Nfc3R5bGVfc2hlZXRfaW5zZXJ0X3J1bGUoV2ViS2l0RE9NQ1NTU3R5bGVTaGVldCogc2Vs
ZiwgY29ucwogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKCFlcnJvciB8fCAhKmVycm9yLCAwKTsK
ICAgICBXZWJDb3JlOjpDU1NTdHlsZVNoZWV0KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwog
ICAgIFdURjo6U3RyaW5nIGNvbnZlcnRlZFJ1bGUgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgocnVs
ZSk7Ci0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgZ3Vsb25nIHJlc3Vs
dCA9IGl0ZW0tPmluc2VydFJ1bGUoY29udmVydGVkUnVsZSwgaW5kZXgsIGVjKTsKLSAgICBpZiAo
ZWMpIHsKLSAgICAgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uIGVjZGVzYyhl
Yyk7CisgICAgYXV0byByZXN1bHQgPSBpdGVtLT5pbnNlcnRSdWxlKGNvbnZlcnRlZFJ1bGUsIGlu
ZGV4KTsKKyAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgIFdlYkNvcmU6
OkV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiBlY2Rlc2MocmVzdWx0LnJlbGVhc2VFeGNlcHRpb24o
KS5jb2RlKCkpOwogICAgICAgICBnX3NldF9lcnJvcl9saXRlcmFsKGVycm9yLCBnX3F1YXJrX2Zy
b21fc3RyaW5nKCJXRUJLSVRfRE9NIiksIGVjZGVzYy5jb2RlLCBlY2Rlc2MubmFtZSk7CisgICAg
ICAgIHJldHVybiAwOwogICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiByZXN1
bHQucmVsZWFzZVJldHVyblZhbHVlKCk7CiB9CiAKIHZvaWQgd2Via2l0X2RvbV9jc3Nfc3R5bGVf
c2hlZXRfZGVsZXRlX3J1bGUoV2ViS2l0RE9NQ1NTU3R5bGVTaGVldCogc2VsZiwgZ3Vsb25nIGlu
ZGV4LCBHRXJyb3IqKiBlcnJvcikKQEAgLTE1MCwxMCArMTQ5LDkgQEAgdm9pZCB3ZWJraXRfZG9t
X2Nzc19zdHlsZV9zaGVldF9kZWxldGVfcnVsZShXZWJLaXRET01DU1NTdHlsZVNoZWV0KiBzZWxm
LCBndWxvbmcKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfQ1NTX1NUWUxFX1NI
RUVUKHNlbGYpKTsKICAgICBnX3JldHVybl9pZl9mYWlsKCFlcnJvciB8fCAhKmVycm9yKTsKICAg
ICBXZWJDb3JlOjpDU1NTdHlsZVNoZWV0KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAg
IFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGl0ZW0tPmRlbGV0ZVJ1bGUoaW5k
ZXgsIGVjKTsKLSAgICBpZiAoZWMpIHsKLSAgICAgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZURl
c2NyaXB0aW9uIGVjZGVzYyhlYyk7CisgICAgYXV0byByZXN1bHQgPSBpdGVtLT5kZWxldGVSdWxl
KGluZGV4KTsKKyAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgIFdlYkNv
cmU6OkV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiBlY2Rlc2MocmVzdWx0LnJlbGVhc2VFeGNlcHRp
b24oKS5jb2RlKCkpOwogICAgICAgICBnX3NldF9lcnJvcl9saXRlcmFsKGVycm9yLCBnX3F1YXJr
X2Zyb21fc3RyaW5nKCJXRUJLSVRfRE9NIiksIGVjZGVzYy5jb2RlLCBlY2Rlc2MubmFtZSk7CiAg
ICAgfQogfQpAQCAtMTY4LDEzICsxNjYsMTMgQEAgZ2xvbmcgd2Via2l0X2RvbV9jc3Nfc3R5bGVf
c2hlZXRfYWRkX3J1bGUoV2ViS2l0RE9NQ1NTU3R5bGVTaGVldCogc2VsZiwgY29uc3QgZ2MKICAg
ICBXZWJDb3JlOjpDU1NTdHlsZVNoZWV0KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAg
IFdURjo6U3RyaW5nIGNvbnZlcnRlZFNlbGVjdG9yID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KHNl
bGVjdG9yKTsKICAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRTdHlsZSA9IFdURjo6U3RyaW5nOjpm
cm9tVVRGOChzdHlsZSk7Ci0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAg
Z2xvbmcgcmVzdWx0ID0gaXRlbS0+YWRkUnVsZShjb252ZXJ0ZWRTZWxlY3RvciwgY29udmVydGVk
U3R5bGUsIGluZGV4LCBlYyk7Ci0gICAgaWYgKGVjKSB7Ci0gICAgICAgIFdlYkNvcmU6OkV4Y2Vw
dGlvbkNvZGVEZXNjcmlwdGlvbiBlY2Rlc2MoZWMpOworICAgIGF1dG8gcmVzdWx0ID0gaXRlbS0+
YWRkUnVsZShjb252ZXJ0ZWRTZWxlY3RvciwgY29udmVydGVkU3R5bGUsIGluZGV4KTsKKyAgICBp
ZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNv
ZGVEZXNjcmlwdGlvbiBlY2Rlc2MocmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5jb2RlKCkpOwog
ICAgICAgICBnX3NldF9lcnJvcl9saXRlcmFsKGVycm9yLCBnX3F1YXJrX2Zyb21fc3RyaW5nKCJX
RUJLSVRfRE9NIiksIGVjZGVzYy5jb2RlLCBlY2Rlc2MubmFtZSk7CisgICAgICAgIHJldHVybiAt
MTsKICAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VS
ZXR1cm5WYWx1ZSgpOwogfQogCiB2b2lkIHdlYmtpdF9kb21fY3NzX3N0eWxlX3NoZWV0X3JlbW92
ZV9ydWxlKFdlYktpdERPTUNTU1N0eWxlU2hlZXQqIHNlbGYsIGd1bG9uZyBpbmRleCwgR0Vycm9y
KiogZXJyb3IpCkBAIC0xODMsMTAgKzE4MSw5IEBAIHZvaWQgd2Via2l0X2RvbV9jc3Nfc3R5bGVf
c2hlZXRfcmVtb3ZlX3J1bGUoV2ViS2l0RE9NQ1NTU3R5bGVTaGVldCogc2VsZiwgZ3Vsb25nCiAg
ICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX0NTU19TVFlMRV9TSEVFVChzZWxmKSk7
CiAgICAgZ19yZXR1cm5faWZfZmFpbCghZXJyb3IgfHwgISplcnJvcik7CiAgICAgV2ViQ29yZTo6
Q1NTU3R5bGVTaGVldCogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKLSAgICBXZWJDb3JlOjpF
eGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBpdGVtLT5yZW1vdmVSdWxlKGluZGV4LCBlYyk7Ci0g
ICAgaWYgKGVjKSB7Ci0gICAgICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiBl
Y2Rlc2MoZWMpOworICAgIGF1dG8gcmVzdWx0ID0gaXRlbS0+cmVtb3ZlUnVsZShpbmRleCwgZWMp
OworICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgV2ViQ29yZTo6RXhj
ZXB0aW9uQ29kZURlc2NyaXB0aW9uIGVjZGVzYyhyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpLmNv
ZGUoKSk7CiAgICAgICAgIGdfc2V0X2Vycm9yX2xpdGVyYWwoZXJyb3IsIGdfcXVhcmtfZnJvbV9z
dHJpbmcoIldFQktJVF9ET00iKSwgZWNkZXNjLmNvZGUsIGVjZGVzYy5uYW1lKTsKICAgICB9CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9ndGsvRE9NL1dlYktpdERPTUNTU1ZhbHVlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NQ1NTVmFsdWUuY3BwCmluZGV4
IGIwOTY1MzYwZGQ0ZThiMGE4NGVmYTkzNzNhMzBmZTQwZGJjYzgwZjQuLjc0N2M0ZDdjYjU1Mzlk
MjkyYzdkMzczMzJjYjY1MzVmM2Y2NGVjOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NQ1NTVmFsdWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9E
T00vV2ViS2l0RE9NQ1NTVmFsdWUuY3BwCkBAIC0xLDYgKzEsNSBAQAogLyoKICAqICBUaGlzIGZp
bGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCi0gKiAgVGhpcyBm
aWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1P
RElGWSEKICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0xNzksMTAgKzE3OCw5IEBAIHZvaWQgd2Vi
a2l0X2RvbV9jc3NfdmFsdWVfc2V0X2Nzc190ZXh0KFdlYktpdERPTUNTU1ZhbHVlKiBzZWxmLCBj
b25zdCBnY2hhciogdmFsCiAgICAgZ19yZXR1cm5faWZfZmFpbCghZXJyb3IgfHwgISplcnJvcik7
CiAgICAgV2ViQ29yZTo6Q1NTVmFsdWUqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAg
V1RGOjpTdHJpbmcgY29udmVydGVkVmFsdWUgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgodmFsdWUp
OwotICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGl0ZW0tPnNldENzc1Rl
eHQoY29udmVydGVkVmFsdWUsIGVjKTsKLSAgICBpZiAoZWMpIHsKLSAgICAgICAgV2ViQ29yZTo6
RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uIGVjZGVzYyhlYyk7CisgICAgYXV0byByZXN1bHQgPSBp
dGVtLT5zZXRDc3NUZXh0KGNvbnZlcnRlZFZhbHVlKTsKKyAgICBpZiAocmVzdWx0Lmhhc0V4Y2Vw
dGlvbigpKSB7CisgICAgICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiBlY2Rl
c2MocmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5jb2RlKCkpOwogICAgICAgICBnX3NldF9lcnJv
cl9saXRlcmFsKGVycm9yLCBnX3F1YXJrX2Zyb21fc3RyaW5nKCJXRUJLSVRfRE9NIiksIGVjZGVz
Yy5jb2RlLCBlY2Rlc2MubmFtZSk7CiAgICAgfQogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291750</attachid>
            <date>2016-10-16 10:17:32 -0700</date>
            <delta_ts>2016-10-16 11:52:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163494-20161016101400.patch</filename>
            <type>text/plain</type>
            <size>354553</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3MzkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjY0MzYzNTYxNTA3NDFj
NDdmYTAwMTliOThkZDlkYTI2MTI5NTJjYy4uOTNhNDc3ODdhMjUyNWRkNTlkZWQ2Y2RjNDYxYTVj
NGM0ZjQ0NjU3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxNyBAQAorMjAxNi0xMC0xNiAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBDU1MgY2xhc3NlcyBm
cm9tIEV4Y2VwdGlvbkNvZGUgdG8gRXhjZXB0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM0OTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmVkIHRoZSAiZ2V0IiBwcmVmaXggZnJvbSB0aGUg
bmFtZXMgb2YgbWFueSBDU1NQcmltaXRpdmVWYWx1ZQorICAgICAgICBmdW5jdGlvbnMgdG8gbWF0
Y2ggV2ViS2l0IGNvZGluZyBzdHlsZSBhbmQgdG8gZGlzYW1iaWd1YXRlIHRoZW0KKyAgICAgICAg
ZnJvbSB0aGUgcHVibGljIENTUyBET00gZnVuY3Rpb25zIHRoYXQgcmFpc2UgZXhjZXB0aW9ucy4K
KworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpwcm9wZXJ0eU5hbWVQcmVmaXgpOiBVc2UgZW51bSBjbGFzcy4K
KyAgICAgICAgKFdlYkNvcmU6OnBhcnNlSmF2YVNjcmlwdENTU1Byb3BlcnR5TmFtZSk6IFR3ZWFr
IHN0eWxlIGEgYml0LgorICAgICAgICAoV2ViQ29yZTo6c3R5bGVQcm9wZXJ0eUdldHRlcik6IFJl
ZmFjdG9yIHRvIHNpbXBsaWZ5IHN0cnVjdHVyZS4KKyAgICAgICAgKFdlYkNvcmU6OnN0eWxlUHJv
cGVydHlHZXR0ZXJQaXhlbE9yUG9zUHJlZml4KTogRGl0dG8uIEFsc28gdXNlIGZsb2F0VmFsdWUu
CisgICAgICAgIChXZWJDb3JlOjpKU0NTU1N0eWxlRGVjbGFyYXRpb246OnB1dERlbGVnYXRlKTog
VXNlIGZpbmRJZ25vcmluZ0FTQ0lJQ2FzZSwKKyAgICAgICAgYW5kIHVzZSBwcm9wYWdhdGVFeGNl
cHRpb24gdG8gaGFuZGxlIEV4Y3BldGlvbk9yLgorICAgICAgICAoV2ViQ29yZTo6SlNDU1NTdHls
ZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKTogVHdlYWsgc3R5bGUgYSBiaXQuCisg
ICAgICAgIChXZWJDb3JlOjpKU0NTU1N0eWxlRGVjbGFyYXRpb246OmdldE93blByb3BlcnR5TmFt
ZXMpOiBVc2UgYSBsYW1iZGEgdG8KKyAgICAgICAgaW5pdGlhbGl6ZSBhIGdsb2JhbCBoZXJlLgor
CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmg6IEFkZGVkIHRvSlNTdHJpbmcg
dG8gc3VwcG9ydCBiaW5kaW5ncyBmb3IKKyAgICAgICAgZnVuY3Rpb25zIHJldHVybmluZyBFeGNl
cHRpb25PcjxTdHJpbmc+LgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9nb2JqZWN0LWdl
bmVyYXRlLWhlYWRlcnMucGw6IERlbGV0ZWQuCisKKyAgICAgICAgKiBjc3MvQmFzaWNTaGFwZUZ1
bmN0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VG9MZW5ndGhTaXplKTogVXNl
IHBhaXJWYWx1ZS4KKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRUb0NlbnRlckNvb3JkaW5hdGUp
OiBVc2UgdmFsdWVJRCBhbmQgcGFpclZhbHVlLgorICAgICAgICAoV2ViQ29yZTo6Y3NzVmFsdWVU
b0Jhc2ljU2hhcGVSYWRpdXMpOiBEaXR0by4KKyAgICAgICAgKiBjc3MvQ1NTQmFzaWNTaGFwZXMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6c2VyaWFsaXplUG9zaXRpb25PZmZzZXQpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkU2VyaWFsaXphYmxlUG9zaXRpb25PZmZzZXQpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0Jhc2ljU2hhcGVDaXJjbGU6OmNzc1RleHQpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0Jhc2ljU2hhcGVFbGxpcHNlOjpjc3NUZXh0KTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjp1cGRhdGVDb3JuZXJSYWRpdXNXaWR0aEFuZEhlaWdodCk6
IERpdHRvLgorICAgICAgICAqIGNzcy9DU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuaDogVXNlIHF1
YWRWYWx1ZS4KKyAgICAgICAgKiBjc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpkZXRlcm1pbmVDYXRlZ29yeSk6IFVzZSBmbG9hdFZhbHVlIGFuZCBkb3VibGVW
YWx1ZS4KKworICAgICAgICAqIGNzcy9DU1NDaGFyc2V0UnVsZS5oOiBVc2UgRXhjZXB0aW9uT3Iu
IEFsc28gbWFkZSBtb3JlIHRoaW5ncyBwcml2YXRlLgorICAgICAgICAqIGNzcy9DU1NDaGFyc2V0
UnVsZS5pZGw6IFVzZSBub24tbGVnYWN5IGV4Y2VwdGlvbnMuCisKKyAgICAgICAgKiBjc3MvQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NvbXB1
dGVkU3R5bGVEZWNsYXJhdGlvbjo6c2V0Q3NzVGV4dCk6IFVzZSBFeGNlcHRpb25Pci4KKyAgICAg
ICAgKFdlYkNvcmU6OkNvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnByb3BlcnR5TWF0Y2hlcyk6IFVz
ZSB2YWx1ZUlELgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
OjpzZXRQcm9wZXJ0eSk6IFVzZSBFeGNlcHRpb25Pci4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6cmVtb3ZlUHJvcGVydHkpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6c2V0UHJvcGVydHlJbnRlcm5h
bCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Z2V0
QmFja2dyb3VuZFNob3J0aGFuZFZhbHVlKTogUmV0dXJuCisgICAgICAgIGEgUmVmIGluc3RlYWQg
b2YgYSBSZWZQdHIuCisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5o
OiBVcGRhdGVkIGZvciBhYm92ZSBjaGFuZ2VzLgorCisgICAgICAgICogY3NzL0NTU0Nyb3NzZmFk
ZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Nyb3NzZmFkZVZhbHVlOjpmaXhlZFNp
emUpOiBVc2UgZmxvYXRWYWx1ZS4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0Nyb3NzZmFkZVZhbHVl
OjppbWFnZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ3Jvc3NmYWRlVmFsdWU6OmJs
ZW5kKTogVXNlIGRvdWJsZVZhbHVlLgorCisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlOjpjYWxjdWxhdGVTdHlsZU1hc2spOiBVc2Ug
dmFsdWVJRC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlOjpjYWxjdWxhdGVXZWlnaHRN
YXNrKTogRGl0dG8uCisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU2V0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNTU0ZvbnRGYWNlU2V0OjpmYW1pbHlOYW1lRnJvbVByaW1pdGl2ZSk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTZXQ6Om1hdGNoaW5nRmFjZXMpOiBVc2Ug
RXhjZXB0b2luT3IuCisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZVNldDo6Y2hlY2spOiBE
aXR0by4KKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTZXQuaDogVXBkYXRlZCBmb3IgYWJvdmUg
Y2hhbmdlcy4KKworICAgICAgICAqIGNzcy9DU1NHcmFkaWVudFZhbHVlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNvbXBhcmVTdG9wcyk6IFVzZSBkb3VibGVWYWx1ZS4KKyAgICAgICAgKFdlYkNv
cmU6OkNTU0dyYWRpZW50VmFsdWU6OmFkZFN0b3BzKTogVXNlIGZsb2F0VmFsdWUuCisgICAgICAg
IChXZWJDb3JlOjpwb3NpdGlvbkZyb21WYWx1ZSk6IFVzZSBmbG9hdFZhbHVlIGFuZCB2YWx1ZElE
LgorICAgICAgICAoV2ViQ29yZTo6Q1NTTGluZWFyR3JhZGllbnRWYWx1ZTo6Y3VzdG9tQ1NTVGV4
dCk6IFVzZSBkb3VibGVWYWx1ZSBhbmQgdmFsdWVJRC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0xp
bmVhckdyYWRpZW50VmFsdWU6OmNyZWF0ZUdyYWRpZW50KTogVXNlIGZsb2F0VmFsdWUgYW5kIHZh
bHVlSUQuCisgICAgICAgIChXZWJDb3JlOjpDU1NSYWRpYWxHcmFkaWVudFZhbHVlOjpjdXN0b21D
U1NUZXh0KTogVXNlIGRvdWJsZVZhbHVlIGFuZCB2YWx1ZUlELgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6cmVzb2x2ZVJhZGl1cyk6IFVzZSBmbG9hdFZhbHVlLgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6Y3JlYXRlR3JhZGllbnQp
OiBVc2UgdmFsdWVJRC4KKworICAgICAgICAqIGNzcy9DU1NHcm91cGluZ1J1bGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTR3JvdXBpbmdSdWxlOjppbnNlcnRSdWxlKTogVXNlIEV4Y2VwdGlv
bk9yLgorICAgICAgICAoV2ViQ29yZTo6Q1NTR3JvdXBpbmdSdWxlOjpkZWxldGVSdWxlKTogRGl0
dG8uCisgICAgICAgICogY3NzL0NTU0dyb3VwaW5nUnVsZS5oOiBVcGRhdGVkIGZvciBhYm92ZSBj
aGFuZ2VzLgorCisgICAgICAgICogY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6c3ViaW1hZ2VJc1BlbmRpbmcp
OiBVc2UgdmFsdWVJRC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU0ltYWdlR2VuZXJhdG9yVmFsdWU6
OmNhY2hlZEltYWdlRm9yQ1NTVmFsdWUpOiBEaXR0by4KKworICAgICAgICAqIGNzcy9DU1NJbWFn
ZVNldFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ltYWdlU2V0VmFsdWU6OmZpbGxJ
bWFnZVNldCk6IFVzZSBmbG9hdFZhbHVlLgorCisgICAgICAgICogY3NzL0NTU01lZGlhUnVsZS5p
ZGw6IFVzZSBub24tbGVnYWN5IGV4Y2VwdGlvbnMuCisKKyAgICAgICAgKiBjc3MvQ1NTUHJpbWl0
aXZlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1
dGVEZWdyZWVzKTogVXNlIGRvdWJsZVZhbHVlLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0
aXZlVmFsdWU6OnNldEZsb2F0VmFsdWUpOiBVc2UgRXhjZXB0aW9uT3IuCisgICAgICAgIChXZWJD
b3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0RmxvYXRWYWx1ZSk6IFJlcGxhY2VkIGdldERvdWJs
ZVZhbHVlIHdpdGggdGhpcywKKyAgICAgICAgc2luY2UgZ2V0RG91YmxlVmFsdWUgaXMgdW51c2Vk
LCBtb3ZpbmcgdGhlIGNhbGwgdG8gY2xhbXBUbyBpbnRvIHRoaXMgZnVuY3Rpb24uCisgICAgICAg
IEFsc28gY2hhbmdlZCB0aGlzIHRvIHVzZSBFeGNlcHRpb25Pci4KKyAgICAgICAgKFdlYkNvcmU6
OkNTU1ByaW1pdGl2ZVZhbHVlOjpkb3VibGVWYWx1ZSk6IFJlbmFtZWQgZnJvbSBnZXREb3VibGVW
YWx1ZS4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpkb3VibGVWYWx1ZUlu
dGVybmFsKTogVXNlIE9wdGlvbmFsIGluc3RlYWQgb2YgYSBib29sCisgICAgICAgIGFuZCBhbiBv
dXQgYXJndW1lbnQgdG8gcmV0dXJuIHRoZSB2YWx1ZSBhbmQgY2hlY2sgZm9yIHR5cGUgZmFpbHVy
ZS4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpzZXRTdHJpbmdWYWx1ZSk6
IFVzZSBFeGNlcHRpb25Pci4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpn
ZXRTdHJpbmdWYWx1ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFs
dWU6OnN0cmluZ1ZhbHVlKTogUmVuYW1lZCBmcm9tIGdldFN0cmluZ1ZhbHVlLgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OmdldENvdW50ZXJWYWx1ZSk6IFVzZSBFeGNlcHRp
b25Pci4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpnZXRSZWN0VmFsdWUp
OiBVc2UgRXhjZXB0aW9uT3IuCisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6
Z2V0UXVhZFZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZh
bHVlOjpnZXRMZW5ndGhSZXBlYXRWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpD
U1NQcmltaXRpdmVWYWx1ZTo6Z2V0UkdCQ29sb3JWYWx1ZSk6IFVzZSBFeGNlcHRpb25Pci4KKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpnZXRQYWlyVmFsdWUpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OmZvcm1hdE51bWJlckZvckN1
c3RvbUNTU1RleHQpOiBVc2UgbmV3IG5hbWVzIGZvciBmdW5jdGlvbnMuCisgICAgICAgICogY3Nz
L0NTU1ByaW1pdGl2ZVZhbHVlLmg6IFJlb3JnYW5pemVkIHRoZSBjbGFzcywgbW92ZWQgbGFyZ2Ug
aW5saW5lIGZ1bmN0aW9uIGJvZGllcworICAgICAgICBvdXQgb2YgdGhlIGNsYXNzIGRlZmluaXRp
b24uIFVwZGF0ZWQgZm9yIHRoZSBhYm92ZSBjaGFuZ2VzLgorICAgICAgICAqIGNzcy9DU1NQcmlt
aXRpdmVWYWx1ZS5pZGw6IFVzZSBub24tbGVnYWN5IGV4Y2VwdGlvbnMuCisKKyAgICAgICAgKiBj
c3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oOiBVc2UgdmFsdWUgaW5zdGVhZCBvZiBnZXRW
YWx1ZSwgZXRjLgorCisgICAgICAgICogY3NzL0NTU1J1bGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUnVsZTo6c2V0Q3NzVGV4dCk6IFVzZSBFeGNlcHRpb25Pci4KKyAgICAgICAgKiBjc3Mv
Q1NTUnVsZS5oOiBVcGRhdGVkIGZvciBhYm92ZSBjaGFuZ2UuCisgICAgICAgICogY3NzL0NTU1J1
bGUuaWRsOiBVc2Ugbm9uLWxlZ2FjeSBleGNlcHRpb25zLgorCisgICAgICAgICogY3NzL0NTU1N0
eWxlRGVjbGFyYXRpb24uaDogVXNlIEV4Y2VwdGlvbk9yLgorICAgICAgICAqIGNzcy9DU1NTdHls
ZURlY2xhcmF0aW9uLmlkbDogVXNlIG5vbi1sZWdhY3kgZXhjZXB0aW9ucy4KKworICAgICAgICAq
IGNzcy9DU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2hlZXQ6
OmRlcHJlY2F0ZWRJbnNlcnRSdWxlKTogVXNlIEV4Y2VwdGlvbk9yLgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTU3R5bGVTaGVldDo6aW5zZXJ0UnVsZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
Q1NTU3R5bGVTaGVldDo6ZGVsZXRlUnVsZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q1NT
U3R5bGVTaGVldDo6YWRkUnVsZSk6IERpdHRvLgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNoZWV0
Lmg6IFVwZGF0ZWQgZm9yIHRoZSBhYm92ZSBjaGFuZ2VzLgorICAgICAgICAqIGNzcy9DU1NTdHls
ZVNoZWV0LmlkbDogVXNlIG5vbi1sZWdhY3kgZXhjZXB0aW9ucy4KKworICAgICAgICAqIGNzcy9D
U1NTdXBwb3J0c1J1bGUuaWRsOiBVc2Ugbm9uLWxlZ2FjeSBleGNlcHRpb25zLgorCisgICAgICAg
ICogY3NzL0NTU1RvU3R5bGVNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9TdHlsZU1h
cDo6bWFwRmlsbEF0dGFjaG1lbnQpOiBVc2UgdmFsdWVJRCBpbnN0ZWFkIG9mIGdldFZhbHVlSUQs
IGV0Yy4KKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRUb0xlbmd0aFNpemUpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1RvU3R5bGVNYXA6Om1hcEZpbGxTaXplKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpDU1NUb1N0eWxlTWFwOjptYXBGaWxsWFBvc2l0aW9uKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxlTWFwOjptYXBGaWxsWVBvc2l0aW9uKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxlTWFwOjptYXBGaWxsTWFza1NvdXJjZVR5cGUp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1RvU3R5bGVNYXA6Om1hcEFuaW1hdGlvbkRp
cmVjdGlvbik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9TdHlsZU1hcDo6bWFwQW5p
bWF0aW9uRmlsbE1vZGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1RvU3R5bGVNYXA6
Om1hcEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpD
U1NUb1N0eWxlTWFwOjptYXBBbmltYXRpb25OYW1lKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpDU1NUb1N0eWxlTWFwOjptYXBBbmltYXRpb25QbGF5U3RhdGUpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OkNTU1RvU3R5bGVNYXA6Om1hcEFuaW1hdGlvblByb3BlcnR5KTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpDU1NUb1N0eWxlTWFwOjptYXBBbmltYXRpb25UaW1pbmdGdW5jdGlv
bik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9u
VHJpZ2dlcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9TdHlsZU1hcDo6bWFwTmlu
ZVBpZWNlSW1hZ2VTbGljZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q1NTVG9TdHlsZU1h
cDo6bWFwTmluZVBpZWNlSW1hZ2VRdWFkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDU1NU
b1N0eWxlTWFwOjptYXBOaW5lUGllY2VJbWFnZVJlcGVhdCk6IERpdHRvLgorCisgICAgICAgICog
Y3NzL0NTU1ZhbHVlLmg6IFVzZSBFeGNlcHRpb25Pci4KKyAgICAgICAgKiBjc3MvQ1NTVmFsdWUu
aWRsOiBVc2Ugbm9uLWxlZ2FjeSBleGNlcHRpb25zLgorCisgICAgICAgICogY3NzL0NvdW50ZXIu
aDogVXNlIHN0cmluZ1ZhbHVlIGluc3RlYWQgb2YgZ2V0U3RyaW5nVmFsdWUsIGV0Yy4KKworICAg
ICAgICAqIGNzcy9Gb250RmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZTo6Y3Jl
YXRlKTogVXNlIEV4Y2VwdGlvbk9yLgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhY2U6OnNldEZh
bWlseSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhY2U6OnNldFN0eWxlKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZTo6c2V0V2VpZ2h0KTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpGb250RmFjZTo6c2V0U3RyZXRjaCk6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udEZhY2U6OnNldFVuaWNvZGVSYW5nZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6Rm9udEZhY2U6OnNldFZhcmlhbnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZvbnRG
YWNlOjpzZXRGZWF0dXJlU2V0dGluZ3MpOiBEaXR0by4KKyAgICAgICAgKiBjc3MvRm9udEZhY2Uu
aDogVXBkYXRlZCBmb3IgYWJvdmUgY2hhbmdlcy4KKyAgICAgICAgKiBjc3MvRm9udEZhY2UuaWRs
OiBVc2Ugbm9uLWxlZ2FjeSBleGNlcHRpb25zLgorCisgICAgICAgICogY3NzL0ZvbnRGYWNlU2V0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlU2V0Ojpsb2FkKTogVXNlIEV4Y2VwdGlv
bk9yLgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhY2VTZXQ6OmNoZWNrKTogRGl0dG8uCisgICAg
ICAgICogY3NzL0ZvbnRGYWNlU2V0Lmg6IFVwZGF0ZWQgZm9yIGFib3ZlIGNoYW5nZXMuCisgICAg
ICAgICogY3NzL0ZvbnRGYWNlU2V0LmlkbDogVXNlIG5vbi1sZWdhY3kgZXhjZXB0aW9ucy4KKwor
ICAgICAgICAqIGNzcy9Gb250VmFyaWFudEJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
ZXh0cmFjdEZvbnRWYXJpYW50TGlnYXR1cmVzKTogVXNlIHZhbHVlSUQgaW5zdGVhZCBvZiBnZXRW
YWx1ZUlELCBldGMuCisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0Rm9udFZhcmlhbnROdW1lcmlj
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0Rm9udFZhcmlhbnRFYXN0QXNpYW4p
OiBEaXR0by4KKworICAgICAgICAqIGNzcy9NZWRpYUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFMaXN0OjpzZXRNZWRpYVRleHQpOiBVc2UgRXhjZXB0aW9uT3IuCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUxpc3Q6OmRlbGV0ZU1lZGl1bSk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFMaXN0OjphcHBlbmRNZWRpdW0pOiBEaXR0by4KKyAgICAgICAgKiBjc3MvTWVkaWFM
aXN0Lmg6IFVwZGF0ZWQgZm9yIGFib3ZlIGNoYW5nZXMuCisgICAgICAgICogY3NzL01lZGlhTGlz
dC5pZGw6IFVzZSBub24tbGVnYWN5IGV4Y2VwdGlvbnMuCisKKyAgICAgICAgKiBjc3MvTWVkaWFR
dWVyeUV2YWx1YXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkb3VibGVWYWx1ZSk6IFVzZSB2
YWx1ZUlEIGluc3RlYWQgb2YgZ2V0VmFsdWVJRCwgZXRjLgorICAgICAgICAoV2ViQ29yZTo6Y29s
b3JHYW11dEV2YWx1YXRlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjppbnZlcnRlZENvbG9y
c0V2YWx1YXRlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpvcmllbnRhdGlvbkV2YWx1YXRl
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpldmFsdWF0ZVJlc29sdXRpb24pOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVMZW5ndGgpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OnZpZXdNb2RlRXZhbHVhdGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmhvdmVyRXZh
bHVhdGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnBvaW50ZXJFdmFsdWF0ZSk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6cHJlZmVyc1JlZHVjZWRNb3Rpb25FdmFsdWF0ZSk6IERpdHRv
LgorCisgICAgICAgICogY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OnNldENzc1Rl
eHQpOiBVc2UgRXhjZXB0aW9uT3IuCisgICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eVNldENTU1N0
eWxlRGVjbGFyYXRpb246OnNldFByb3BlcnR5KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpQ
cm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OnJlbW92ZVByb3BlcnR5KTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OmdldFByb3Bl
cnR5Q1NTVmFsdWVJbnRlcm5hbCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UHJvcGVydHlT
ZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpzZXRQcm9wZXJ0eUludGVybmFsKTogRGl0dG8uCisgICAg
ICAgICogY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5oOiBVcGRhdGVkIGZvciBh
Ym92ZSBjaGFuZ2VzLgorICAgICAgICBBbHNvIG1hcmtlZCBhIGNvdXBsZSBhZGRpdGlvbmFsIGZ1
bmN0aW9ucyBwcml2YXRlLgorCisgICAgICAgICogY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5o
OiBVc2UgZG91YmxlVmFsdWUgaW5zdGVhZCBvZiBnZXREb3VibGVWYWx1ZSwgZXRjLgorICAgICAg
ICAqIGNzcy9TdHlsZUJ1aWxkZXJDdXN0b20uaDogRGl0dG8uCisgICAgICAgICogY3NzL1N0eWxl
UHJvcGVydGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVByb3BlcnRpZXM6OmdldExh
eWVyZWRTaG9ydGhhbmRWYWx1ZSk6IERpdHRvLgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6Ok1hdGNoUmVzdWx0OjphZGRN
YXRjaGVkUHJvcGVydGllcyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZl
cjo6Y29sb3JGcm9tUHJpbWl0aXZlVmFsdWVJc0Rlcml2ZWRGcm9tRWxlbWVudCk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6Y29sb3JGcm9tUHJpbWl0aXZlVmFsdWUp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmNyZWF0ZUZpbHRlck9w
ZXJhdGlvbnMpOiBEaXR0by4KKyAgICAgICAgKiBjc3MvVHJhbnNmb3JtRnVuY3Rpb25zLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnRyYW5zZm9ybXNGb3JWYWx1ZSk6IERpdHRvLgorICAgICAgICAq
IGNzcy9WaWV3cG9ydFN0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Vmlld3Bv
cnRTdHlsZVJlc29sdmVyOjpnZXRWaWV3cG9ydEFyZ3VtZW50VmFsdWUpOiBEaXR0by4KKworICAg
ICAgICAqIGNzcy9XZWJLaXRDU1NNYXRyaXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0
Q1NTTWF0cml4OjpXZWJLaXRDU1NNYXRyaXgpOiBUd2Vha2VkIGNvbnN0cnVjdG9ycyBhIGJpdCwK
KyAgICAgICAgZ2V0dGluZyByaWQgb2YgdGhlIG9uZSB0aGF0IHVzZXMgYW4gRXhjZXB0aW9uQ29k
ZS4KKyAgICAgICAgKFdlYkNvcmU6OldlYktpdENTU01hdHJpeDo6Y3JlYXRlKTogTW92ZWQgaW4g
aGVyZSwgYW5kIHVzZSBFeGNlcHRpb25Pci4KKyAgICAgICAgKFdlYkNvcmU6OldlYktpdENTU01h
dHJpeDo6c2V0TWF0cml4VmFsdWUpOiBVc2UgRXhjZXB0aW9uT3IuCisgICAgICAgIChXZWJDb3Jl
OjpXZWJLaXRDU1NNYXRyaXg6Om11bHRpcGx5KTogVHdlYWsgY29kaW5nIHN0eWxlIGEgYml0Lgor
ICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTTWF0cml4OjppbnZlcnNlKTogVXNlIEV4Y2VwdGlv
bk9yLgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTTWF0cml4Ojp0cmFuc2xhdGUpOiBSZXR1
cm4gYSBSZWYgaW5zdGVhZCBvZiBSZWZQdHIuCisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NN
YXRyaXg6OnNjYWxlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NNYXRyaXg6
OnJvdGF0ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTTWF0cml4Ojpyb3Rh
dGVBeGlzQW5nbGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OldlYktpdENTU01hdHJpeDo6
c2tld1gpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OldlYktpdENTU01hdHJpeDo6c2tld1kp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OldlYktpdENTU01hdHJpeDo6dG9TdHJpbmcpOiBU
d2Vha2VkIGZvcm1hdHRpbmcgYSBiaXQuCisgICAgICAgICogY3NzL1dlYktpdENTU01hdHJpeC5o
OiBVcGRhdGVkIGZvciBhYm92ZSBjaGFuZ2VzLgorICAgICAgICAqIGNzcy9XZWJLaXRDU1NNYXRy
aXguaWRsOiBVc2Ugbm9uLWxlZ2FjeSBleHRlbnNpb25zLgorCisgICAgICAgICogY3NzL21ha2Vw
cm9wLnBsOgorICAgICAgICAoaGFuZGxlQ3VycmVudENvbG9yVmFsdWUpOiBVc2UgdmFsdWVJRCBp
bnN0ZWFkIG9mIGdldFZhbHVlSUQuCisgICAgICAgIChnZW5lcmF0ZVZhbHVlU2V0dGVyKTogRGl0
dG8uCisKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDU1NQYXJzZXI6OnBhcnNlNFZhbHVlc0ZpbGxQb3NpdGlvbik6IFVzZSB2YWx1ZUlEIGlu
c3RlYWQgb2YgZ2V0VmFsdWVJRCwgZXRjLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpw
YXJzZTNWYWx1ZXNGaWxsUG9zaXRpb24pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1Bh
cnNlcjo6cGFyc2VGaWxsUG9zaXRpb24pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1Bh
cnNlcjo6cGFyc2VGaWxsUmVwZWF0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJz
ZXI6OnBhcnNlR3JpZFBvc2l0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJz
ZXI6OnBhcnNlR3JpZFRlbXBsYXRlUm93c0FuZEFyZWFzQW5kQ29sdW1ucyk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6aXNHcmlkVHJhY2tGaXhlZFNpemVkKTogRGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlUmFkaWFsR3JhZGllbnQpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VCdWlsdGluRmlsdGVyQXJndW1lbnRzKTogRGl0dG8u
CisKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNlclZhbHVlcy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQYXJzZXJWYWx1ZTo6Y3JlYXRlQ1NTVmFsdWUpOiBSZW1vdmVkIHRoZSB1bm5l
ZWRlZCBjYWxsIHRvCisgICAgICAgIHNldFByaW1pdGl2ZVR5cGUgaGVyZS4gVGhlIGNyZWF0ZVBh
cnNlck9wZXJhdG9yIHJldHVybnMgYW4gb2JqZWN0IHRoYXQKKyAgICAgICAgYWxyZWFkeSBoYXMg
dGhlIGNvcnJlY3QgcHJpbWl0aXZlIHR5cGUuCisKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1By
b3BlcnR5UGFyc2VyLmNwcDogVXBkYXRlZCBtb3N0IGNhc2VzIG9mIGNhbGxpbmcgdGhlIG9sZAor
ICAgICAgICBnZXRYWFhWYWx1ZSBmdW5jdGlvbnMsIGJ1dCBub3Qgc3VyZSBpZiBpdCdzIHJpZ2h0
IHNpbmNlIGl0IGlzIGNvbW1lbnRlZCBvdXQKKyAgICAgICAgY29kZSB0aGF0IEkgZGlkIG5vdCBj
b21waWxlLgorCisgICAgICAgICogY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjbGFtcFJH
QkNvbXBvbmVudCk6IFVzZSBpbnRWYWx1ZSBpbnN0ZWFkIG9mIGdldEludFZhbHVlLCBldGMuCisg
ICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OnBhcnNlSFNMUGFyYW1l
dGVycyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJz
Ojppc0hvcml6b250YWxQb3NpdGlvbktleXdvcmRPbmx5KTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OmlzVmVydGljYWxQb3NpdGlvbktleXdvcmRP
bmx5KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6
OnBvc2l0aW9uRnJvbVRocmVlT3JGb3VyVmFsdWVzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVSYWRpYWxHcmFkaWVudCk6IERpdHRv
LgorCisgICAgICAgICogZG9tL1JhbmdlLmNwcDogQWRkZWQgbm93LW5lZWRlZCBpbmNsdWRlIG9m
IEV4Y2VwdGlvbkNvZGUuaC4KKyAgICAgICAgKiBkb20vU2VsZWN0b3JRdWVyeS5jcHA6IERpdHRv
LgorCisgICAgICAgICogZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjp0b0lkZW50aWZpZXIpOiBVc2UgdmFsdWVJRCBpbnN0ZWFkIG9mIGdldFZhbHVlSUQs
IGV0Yy4KKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5bGVDb21tYW5kOjpjb21wdXRlZEZvbnRT
aXplKTogRGl0dG8uCisgICAgICAgICogZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6aWRlbnRpZmllckZvclN0eWxlUHJvcGVydHkpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxFbGVtZW50RXF1aXZhbGVudDo6dmFsdWVJc1ByZXNlbnRJblN0eWxlKTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OmV4dHJhY3RGb250U2l6ZURl
bHRhKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OnRleHREaXJlY3Rp
b24pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkVkaXRpbmdTdHlsZTo6cHJlcGFyZVRvQXBw
bHlBdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjp0ZXh0RGlyZWN0
aW9uRm9yU2VsZWN0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpmb250V2VpZ2h0SXNC
b2xkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpsZWdhY3lGb250U2l6ZUZyb21DU1NWYWx1
ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6aXNUcmFuc3BhcmVudENvbG9yVmFsdWUpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6Omhhc1RyYW5zcGFyZW50QmFja2dyb3VuZENvbG9yKTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpiYWNrZ3JvdW5kQ29sb3JJbkVmZmVjdCk6IERpdHRv
LgorCisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRp
dG9yOjphcHBseUVkaXRpbmdTdHlsZVRvRWxlbWVudCk6IFJlbW92ZWQgSUdOT1JFX0VYQ0VQVElP
TjsgdGhhdCBpcworICAgICAgICB3aGF0IHdlIGRvIGJ5IGRlZmF1bHQgZm9yIHRoaW5ncyByZXR1
cm5pbmcgRXhjZXB0aW9uT3IuCisgICAgICAgICogZWRpdGluZy9SZW1vdmVDU1NQcm9wZXJ0eUNv
bW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVtb3ZlQ1NTUHJvcGVydHlDb21tYW5kOjpk
b0FwcGx5KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW1vdmVDU1NQcm9wZXJ0eUNvbW1h
bmQ6OmRvVW5hcHBseSk6IERpdHRvLgorICAgICAgICAqIGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlv
bkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6
OnJlbW92ZVJlZHVuZGFudFN0eWxlc0FuZEtlZXBTdHlsZVNwYW5JbmxpbmUpOiBEaXR0by4KKwor
ICAgICAgICAqIGVkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbToKKyAgICAgICAgKGZsb2F0
VmFsdWVGcm9tUHJpbWl0aXZlVmFsdWUpOiBVc2UgZmxvYXRWYWx1ZSBpbnN0ZWFkIG9mIGdldEZs
b2F0VmFsdWUsIGV0Yy4KKyAgICAgICAgKiBlZGl0aW5nL21hcmt1cC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpwcm9wZXJ0eU1pc3NpbmdPckVxdWFsVG9Ob25lKTogRGl0dG8uCisKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JTdHlsZVNoZWV0OjphZGRSdWxlKTogVXBkYXRlZCB0byBjYWxsIEV4Y2VwdGlvbk9y
LXJldHVybmluZyBmdW5jdGlvbnMuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNo
ZWV0OjpkZWxldGVSdWxlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHls
ZVNoZWV0OjpzZXRTdHlsZVRleHQpOiBEaXR0by4KKworICAgICAgICAqIHN2Zy9TVkdMZW5ndGgu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVuZ3RoOjpmcm9tQ1NTUHJpbWl0aXZlVmFsdWUp
OiBVc2UgZmxvYXRWYWx1ZSBpbnN0ZWFkIG9mIGdldEZsb2F0VmFsdWUuCisKIDIwMTYtMTAtMTYg
IENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIERv
Y3VtZW50IHJlcXVlc3Qgbm90IHVwZGF0ZWQgYWZ0ZXIgd2lsbFNlbmRSZXF1ZXN0IGlzIGNhbGxl
ZCBmb3IgYSByZWRpcmVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGJiZWM0MWU2NjRhNzMxNjJiNzY4
ZmU5NGJhZDZjYTM5MWYwMjdhYTUuLjgyMGMxZDExMzYwOTkwZmQyMzE4ZGExOGEwOTBmZTBlYjI2
MzVlOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NiBAQAorMjAxNi0xMC0xNiAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBDU1MgY2xhc3NlcyBm
cm9tIEV4Y2VwdGlvbkNvZGUgdG8gRXhjZXB0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM0OTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIERPTS9ET01DU1NNZWRpYVJ1bGUubW06CisgICAgICAg
ICgtW0RPTUNTU01lZGlhUnVsZSBpbnNlcnRSdWxlOmluZGV4Ol0pOiBVc2UgcmFpc2VPbkRPTUVy
cm9yCisgICAgICAgIHRoZSBuZXcgd2F5IHRvIGhhbmRsZSBFeGNlcHRpb25PciBpbnN0ZWFkIG9m
IEV4Y2VwdGlvbkNvZGUuCisgICAgICAgICgtW0RPTUNTU01lZGlhUnVsZSBkZWxldGVSdWxlOl0p
OiBEaXR0by4KKyAgICAgICAgKiBET00vRE9NQ1NTUHJpbWl0aXZlVmFsdWUubW06CisgICAgICAg
ICgtW0RPTUNTU1ByaW1pdGl2ZVZhbHVlIHNldEZsb2F0VmFsdWU6ZmxvYXRWYWx1ZTpdKTogRGl0
dG8uCisgICAgICAgICgtW0RPTUNTU1ByaW1pdGl2ZVZhbHVlIGdldEZsb2F0VmFsdWU6XSk6IERp
dHRvLgorICAgICAgICAoLVtET01DU1NQcmltaXRpdmVWYWx1ZSBzZXRTdHJpbmdWYWx1ZTpzdHJp
bmdWYWx1ZTpdKTogRGl0dG8uCisgICAgICAgICgtW0RPTUNTU1ByaW1pdGl2ZVZhbHVlIGdldFN0
cmluZ1ZhbHVlXSk6IERpdHRvLgorICAgICAgICAoLVtET01DU1NQcmltaXRpdmVWYWx1ZSBnZXRD
b3VudGVyVmFsdWVdKTogRGl0dG8uCisgICAgICAgICgtW0RPTUNTU1ByaW1pdGl2ZVZhbHVlIGdl
dFJlY3RWYWx1ZV0pOiBEaXR0by4KKyAgICAgICAgKC1bRE9NQ1NTUHJpbWl0aXZlVmFsdWUgZ2V0
UkdCQ29sb3JWYWx1ZV0pOiBEaXR0by4KKyAgICAgICAgKiBET00vRE9NQ1NTUnVsZS5tbToKKyAg
ICAgICAgKC1bRE9NQ1NTUnVsZSBzZXRDc3NUZXh0Ol0pOiBEaXR0by4KKyAgICAgICAgKiBET00v
RE9NQ1NTU3R5bGVEZWNsYXJhdGlvbi5tbToKKyAgICAgICAgKC1bRE9NQ1NTU3R5bGVEZWNsYXJh
dGlvbiBzZXRDc3NUZXh0Ol0pOiBEaXR0by4KKyAgICAgICAgKC1bRE9NQ1NTU3R5bGVEZWNsYXJh
dGlvbiByZW1vdmVQcm9wZXJ0eTpdKTogRGl0dG8uCisgICAgICAgICgtW0RPTUNTU1N0eWxlRGVj
bGFyYXRpb24gc2V0UHJvcGVydHk6dmFsdWU6cHJpb3JpdHk6XSk6IERpdHRvLgorICAgICAgICAq
IERPTS9ET01DU1NTdHlsZVNoZWV0Lm1tOgorICAgICAgICAoLVtET01DU1NTdHlsZVNoZWV0IGlu
c2VydFJ1bGU6aW5kZXg6XSk6IERpdHRvLgorICAgICAgICAoLVtET01DU1NTdHlsZVNoZWV0IGRl
bGV0ZVJ1bGU6XSk6IERpdHRvLgorICAgICAgICAoLVtET01DU1NTdHlsZVNoZWV0IGFkZFJ1bGU6
c3R5bGU6aW5kZXg6XSk6IERpdHRvLgorICAgICAgICAoLVtET01DU1NTdHlsZVNoZWV0IHJlbW92
ZVJ1bGU6XSk6IERpdHRvLgorICAgICAgICAqIERPTS9ET01DU1NWYWx1ZS5tbToKKyAgICAgICAg
KC1bRE9NQ1NTVmFsdWUgc2V0Q3NzVGV4dDpdKTogRGl0dG8uCisgICAgICAgICogRE9NL0RPTU1l
ZGlhTGlzdC5tbToKKyAgICAgICAgKC1bRE9NTWVkaWFMaXN0IHNldE1lZGlhVGV4dDpdKTogRGl0
dG8uCisgICAgICAgICgtW0RPTU1lZGlhTGlzdCBkZWxldGVNZWRpdW06XSk6IERpdHRvLgorICAg
ICAgICAoLVtET01NZWRpYUxpc3QgYXBwZW5kTWVkaXVtOl0pOiBEaXR0by4KKworICAgICAgICAq
IERPTS9FeGNlcHRpb25IYW5kbGVycy5oOiBBZGRlZCBhbiBvdmVybG9hZCBvZiByYWlzZURPTUV4
Y2VwdGlvbgorICAgICAgICB0aGF0IHdvcmtzIHdpdGggYSBXZWJDb3JlOjpFeGNlcHRpb24mJiBh
bmQgb3ZlcmxvYWRzIG9mCisgICAgICAgIHJhaXNlT25ET01FcnJvciB0aGF0IHdvcmsgd2l0aCBX
ZWJDb3JlOjpFeGNlcHRpb25PciYmLgorICAgICAgICAqIERPTS9FeGNlcHRpb25IYW5kbGVycy5t
bToKKyAgICAgICAgKHJhaXNlRE9NRXhjZXB0aW9uKTogSW1wbGVtZW50ZWQgdGhlIG5ldyB2ZXJz
aW9uLgorCiAyMDE2LTEwLTE1ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAg
ICAgICAgUkVHUkVTU0lPTiAocjE5MTY5OSk6IENvbnRleHR1YWwgbWVudSBpbiBNYWlsIGNvbXBv
c2UgdmlldyBkb2VzbuKAmXQgaW5jbHVkZSBhbnkgb2YgdGhlIHN0YW5kYXJkIHN1Ym1lbnVzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dp
bi9DaGFuZ2VMb2cKaW5kZXggZjFiMGJiNDhjOWYxZjRhZDY2ODMzYTNhMGExYjgwYzc1NzExNThj
ZC4uZjNhNTZlYTVlZGFiMDRhNjJlZDRhNDE3ZDc2M2NkNzY2MDU3YmU5OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE2LTEwLTE2ICBEYXJpbiBBZGxlciAgPGRhcmluQGFw
cGxlLmNvbT4KKworICAgICAgICBNb3ZlIENTUyBjbGFzc2VzIGZyb20gRXhjZXB0aW9uQ29kZSB0
byBFeGNlcHRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2MzQ5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogRE9NQ1NTQ2xhc3Nlcy5jcHA6CisgICAgICAgIChET01DU1NTdHlsZURlY2xhcmF0aW9u
OjpzZXRDc3NUZXh0KTogUmVtb3ZlIEV4Y2VwdGlvbkNvZGUgaGFuZGxpbmcuCisgICAgICAgIChE
T01DU1NTdHlsZURlY2xhcmF0aW9uOjpzZXRQcm9wZXJ0eSk6IERpdHRvLgorCiAyMDE2LTEwLTEy
ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgQ29weSBC
YWNrRm9yd2FyZExpc3QgZnJvbSBXZWJDb3JlIHRvIFdlYktpdC93aW4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBk
MjBkMjU4MmQyYjQ3NDdkYzI2MWZmMzdhZDIzZjdmNzQxMzVhODVjLi5iZmVlYmIwZDJiMWNkNzAz
MDE5M2Q4Y2Q3ZGRjZWRiN2RjNTdjMjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIw
MTYtMTAtMTYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUg
Q1NTIGNsYXNzZXMgZnJvbSBFeGNlcHRpb25Db2RlIHRvIEV4Y2VwdGlvbgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDk0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUNTU1J1bGUuY3BwOgorICAgICAgICAod2Via2l0
X2RvbV9jc3NfcnVsZV9zZXRfY3NzX3RleHQpOiBVcGRhdGVkIGZvciBFeGNlcHRpb25Pci4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUNT
U1N0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAod2Via2l0X2RvbV9jc3Nfc3R5bGVfZGVj
bGFyYXRpb25fcmVtb3ZlX3Byb3BlcnR5KTogRGl0dG8uCisgICAgICAgICh3ZWJraXRfZG9tX2Nz
c19zdHlsZV9kZWNsYXJhdGlvbl9zZXRfcHJvcGVydHkpOiBEaXR0by4KKyAgICAgICAgKHdlYmtp
dF9kb21fY3NzX3N0eWxlX2RlY2xhcmF0aW9uX3NldF9jc3NfdGV4dCk6IERpdHRvLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NQ1NTU3R5
bGVTaGVldC5jcHA6CisgICAgICAgICh3ZWJraXRfZG9tX2Nzc19zdHlsZV9zaGVldF9pbnNlcnRf
cnVsZSk6IERpdHRvLgorICAgICAgICAod2Via2l0X2RvbV9jc3Nfc3R5bGVfc2hlZXRfZGVsZXRl
X3J1bGUpOiBEaXR0by4KKyAgICAgICAgKHdlYmtpdF9kb21fY3NzX3N0eWxlX3NoZWV0X2FkZF9y
dWxlKTogRGl0dG8uCisgICAgICAgICh3ZWJraXRfZG9tX2Nzc19zdHlsZV9zaGVldF9yZW1vdmVf
cnVsZSk6IERpdHRvLgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0
ay9ET00vV2ViS2l0RE9NQ1NTVmFsdWUuY3BwOgorICAgICAgICAod2Via2l0X2RvbV9jc3NfdmFs
dWVfc2V0X2Nzc190ZXh0KTogRGl0dG8uCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01NZWRpYUxpc3QuY3BwOgorICAgICAgICAod2Via2l0
X2RvbV9tZWRpYV9saXN0X2RlbGV0ZV9tZWRpdW0pOiBEaXR0by4KKyAgICAgICAgKHdlYmtpdF9k
b21fbWVkaWFfbGlzdF9hcHBlbmRfbWVkaXVtKTogRGl0dG8uCisgICAgICAgICh3ZWJraXRfZG9t
X21lZGlhX2xpc3Rfc2V0X21lZGlhX3RleHQpOiBEaXR0by4KKwogMjAxNi0xMC0xNiAgQ2FybG9z
IEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gRGVm
YXVsdCBXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIgaXMgYWx3YXlzIGxlYWtlZCBpbiBXZWJLaXRX
ZWJDb250ZXh0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0
eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlND
U1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcAppbmRleCA0YjdlMzJiNDEzYWU4MGMyZDBhMDU5
ODEyNzBhNjlmZDViNDFmNGQ5Li4zNWU0YTIyNzVhNjk0ZjE4ZjU1Zjk3OWMwMWIzMTljNzE5Zjc0
MzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVj
bGFyYXRpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NT
U3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDA3LTIwMDksIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Nyw3ICs0Nyw2IEBA
CiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNT
dHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgotI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCkBAIC01
NSw2ICs1NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCogcm9vdChDU1NTdHlsZURl
Y2xhcmF0aW9uKiBzdHlsZSkKIHsKKyAgICBBU1NFUlQoc3R5bGUpOwogICAgIGlmIChhdXRvKiBw
YXJlbnRSdWxlID0gc3R5bGUtPnBhcmVudFJ1bGUoKSkKICAgICAgICAgcmV0dXJuIHJvb3QocGFy
ZW50UnVsZSk7CiAgICAgaWYgKGF1dG8qIHN0eWxlU2hlZXQgPSBzdHlsZS0+cGFyZW50U3R5bGVT
aGVldCgpKQpAQCAtNjksMjUgKzY5LDExIEBAIHZvaWQgSlNDU1NTdHlsZURlY2xhcmF0aW9uOjp2
aXNpdEFkZGl0aW9uYWxDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2aXNpdG9y
LmFkZE9wYXF1ZVJvb3Qocm9vdCgmd3JhcHBlZCgpKSk7CiB9CiAKLWNsYXNzIENTU1Byb3BlcnR5
SW5mbyB7Ci1wdWJsaWM6Ci0gICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEOwotICAgIGJvb2wg
aGFkUGl4ZWxPclBvc1ByZWZpeDsKLX07Ci0KLWVudW0gUHJvcGVydHlOYW1lUHJlZml4IHsKLSAg
ICBQcm9wZXJ0eU5hbWVQcmVmaXhOb25lLAotICAgIFByb3BlcnR5TmFtZVByZWZpeENTUywKLSAg
ICBQcm9wZXJ0eU5hbWVQcmVmaXhQaXhlbCwKLSAgICBQcm9wZXJ0eU5hbWVQcmVmaXhQb3MsCitl
bnVtIGNsYXNzIFByb3BlcnR5TmFtZVByZWZpeCB7CisgICAgTm9uZSwgRXB1YiwgQ1NTLCBQaXhl
bCwgUG9zLCBXZWJLaXQsCiAjaWYgRU5BQkxFKExFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKQot
ICAgIFByb3BlcnR5TmFtZVByZWZpeEFwcGxlLAorICAgIEFwcGxlLCBLSFRNTCwKICNlbmRpZgot
ICAgIFByb3BlcnR5TmFtZVByZWZpeEVwdWIsCi0jaWYgRU5BQkxFKExFR0FDWV9DU1NfVkVORE9S
X1BSRUZJWEVTKQotICAgIFByb3BlcnR5TmFtZVByZWZpeEtIVE1MLAotI2VuZGlmCi0gICAgUHJv
cGVydHlOYW1lUHJlZml4V2ViS2l0CiB9OwogCiB0ZW1wbGF0ZTxzaXplX3QgcHJlZml4Q1N0cmlu
Z0xlbmd0aD4KQEAgLTEwNyw3ICs5Myw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBtYXRjaGVzQ1NT
UHJvcGVydHlOYW1lUHJlZml4KGNvbnN0IFN0cmluZ0ltcGwmIHByb3BlcnR5TmFtZSwKIAogICAg
IC8vIFRoZSBwcmVmaXggd2l0aGluIHRoZSBwcm9wZXJ0eSBuYW1lIG11c3QgYmUgZm9sbG93ZWQg
YnkgYSBjYXBpdGFsIGxldHRlci4KICAgICAvLyBPdGhlciBjaGFyYWN0ZXJzIGluIHRoZSBwcmVm
aXggd2l0aGluIHRoZSBwcm9wZXJ0eSBuYW1lIG11c3QgYmUgbG93ZXJjYXNlLgotICAgIGlmIChw
cm9wZXJ0eU5hbWUubGVuZ3RoKCkgPCAocHJlZml4TGVuZ3RoICsgMSkpCisgICAgaWYgKHByb3Bl
cnR5TmFtZS5sZW5ndGgoKSA8IHByZWZpeExlbmd0aCArIDEpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSBvZmZzZXQ7IGkgPCBwcmVmaXhMZW5ndGg7ICsraSkg
ewpAQCAtMTE3LDEwICsxMDMsMTEgQEAgc3RhdGljIGlubGluZSBib29sIG1hdGNoZXNDU1NQcm9w
ZXJ0eU5hbWVQcmVmaXgoY29uc3QgU3RyaW5nSW1wbCYgcHJvcGVydHlOYW1lLAogCiAgICAgaWYg
KCFpc0FTQ0lJVXBwZXIocHJvcGVydHlOYW1lW3ByZWZpeExlbmd0aF0pKQogICAgICAgICByZXR1
cm4gZmFsc2U7CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIFByb3BlcnR5TmFtZVBy
ZWZpeCBnZXRDU1NQcm9wZXJ0eU5hbWVQcmVmaXgoY29uc3QgU3RyaW5nSW1wbCYgcHJvcGVydHlO
YW1lKQorc3RhdGljIFByb3BlcnR5TmFtZVByZWZpeCBwcm9wZXJ0eU5hbWVQcmVmaXgoY29uc3Qg
U3RyaW5nSW1wbCYgcHJvcGVydHlOYW1lKQogewogICAgIEFTU0VSVChwcm9wZXJ0eU5hbWUubGVu
Z3RoKCkpOwogCkBAIC0xMzAsMzcgKzExNywzNyBAQCBzdGF0aWMgUHJvcGVydHlOYW1lUHJlZml4
IGdldENTU1Byb3BlcnR5TmFtZVByZWZpeChjb25zdCBTdHJpbmdJbXBsJiBwcm9wZXJ0eU5hbQog
I2lmIEVOQUJMRShMRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykKICAgICBjYXNlICdhJzoKICAg
ICAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkubGVnYWN5
Q1NTVmVuZG9yUHJlZml4ZXNFbmFibGVkKCkgJiYgbWF0Y2hlc0NTU1Byb3BlcnR5TmFtZVByZWZp
eChwcm9wZXJ0eU5hbWUsICJhcHBsZSIpKQotICAgICAgICAgICAgcmV0dXJuIFByb3BlcnR5TmFt
ZVByZWZpeEFwcGxlOworICAgICAgICAgICAgcmV0dXJuIFByb3BlcnR5TmFtZVByZWZpeDo6QXBw
bGU7CiAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAgICAgY2FzZSAnYyc6CiAgICAgICAgIGlmICht
YXRjaGVzQ1NTUHJvcGVydHlOYW1lUHJlZml4KHByb3BlcnR5TmFtZSwgImNzcyIpKQotICAgICAg
ICAgICAgcmV0dXJuIFByb3BlcnR5TmFtZVByZWZpeENTUzsKKyAgICAgICAgICAgIHJldHVybiBQ
cm9wZXJ0eU5hbWVQcmVmaXg6OkNTUzsKICAgICAgICAgYnJlYWs7CiAjaWYgRU5BQkxFKExFR0FD
WV9DU1NfVkVORE9SX1BSRUZJWEVTKQogICAgIGNhc2UgJ2snOgogICAgICAgICBpZiAoUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5sZWdhY3lDU1NWZW5kb3JQcmVmaXhl
c0VuYWJsZWQoKSAmJiBtYXRjaGVzQ1NTUHJvcGVydHlOYW1lUHJlZml4KHByb3BlcnR5TmFtZSwg
ImtodG1sIikpCi0gICAgICAgICAgICByZXR1cm4gUHJvcGVydHlOYW1lUHJlZml4S0hUTUw7Cisg
ICAgICAgICAgICByZXR1cm4gUHJvcGVydHlOYW1lUHJlZml4OjpLSFRNTDsKICAgICAgICAgYnJl
YWs7CiAjZW5kaWYKICAgICBjYXNlICdlJzoKICAgICAgICAgaWYgKG1hdGNoZXNDU1NQcm9wZXJ0
eU5hbWVQcmVmaXgocHJvcGVydHlOYW1lLCAiZXB1YiIpKQotICAgICAgICAgICAgcmV0dXJuIFBy
b3BlcnR5TmFtZVByZWZpeEVwdWI7CisgICAgICAgICAgICByZXR1cm4gUHJvcGVydHlOYW1lUHJl
Zml4OjpFcHViOwogICAgICAgICBicmVhazsKICAgICBjYXNlICdwJzoKICAgICAgICAgaWYgKG1h
dGNoZXNDU1NQcm9wZXJ0eU5hbWVQcmVmaXgocHJvcGVydHlOYW1lLCAicG9zIikpCi0gICAgICAg
ICAgICByZXR1cm4gUHJvcGVydHlOYW1lUHJlZml4UG9zOworICAgICAgICAgICAgcmV0dXJuIFBy
b3BlcnR5TmFtZVByZWZpeDo6UG9zOwogICAgICAgICBpZiAobWF0Y2hlc0NTU1Byb3BlcnR5TmFt
ZVByZWZpeChwcm9wZXJ0eU5hbWUsICJwaXhlbCIpKQotICAgICAgICAgICAgcmV0dXJuIFByb3Bl
cnR5TmFtZVByZWZpeFBpeGVsOworICAgICAgICAgICAgcmV0dXJuIFByb3BlcnR5TmFtZVByZWZp
eDo6UGl4ZWw7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgJ3cnOgogICAgICAgICBpZiAobWF0
Y2hlc0NTU1Byb3BlcnR5TmFtZVByZWZpeChwcm9wZXJ0eU5hbWUsICJ3ZWJraXQiKSkKLSAgICAg
ICAgICAgIHJldHVybiBQcm9wZXJ0eU5hbWVQcmVmaXhXZWJLaXQ7CisgICAgICAgICAgICByZXR1
cm4gUHJvcGVydHlOYW1lUHJlZml4OjpXZWJLaXQ7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1
bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICByZXR1cm4gUHJvcGVydHlOYW1lUHJlZml4
Tm9uZTsKKyAgICByZXR1cm4gUHJvcGVydHlOYW1lUHJlZml4OjpOb25lOwogfQogCiBzdGF0aWMg
aW5saW5lIHZvaWQgd3JpdGVXZWJLaXRQcmVmaXgoY2hhciomIGJ1ZmZlcikKQEAgLTE4NSw3ICsx
NzIsMTIgQEAgc3RhdGljIGlubGluZSB2b2lkIHdyaXRlRXB1YlByZWZpeChjaGFyKiYgYnVmZmVy
KQogICAgICpidWZmZXIrKyA9ICctJzsKIH0KIAotc3RhdGljIENTU1Byb3BlcnR5SW5mbyBjc3NQ
cm9wZXJ0eUlERm9ySlNDU1NQcm9wZXJ0eU5hbWUoUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkK
K3N0cnVjdCBDU1NQcm9wZXJ0eUluZm8geworICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRDsK
KyAgICBib29sIGhhZFBpeGVsT3JQb3NQcmVmaXg7Cit9OworCitzdGF0aWMgQ1NTUHJvcGVydHlJ
bmZvIHBhcnNlSmF2YVNjcmlwdENTU1Byb3BlcnR5TmFtZShQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lKQogewogICAgIENTU1Byb3BlcnR5SW5mbyBwcm9wZXJ0eUluZm8gPSB7Q1NTUHJvcGVydHlJ
bnZhbGlkLCBmYWxzZX07CiAgICAgYm9vbCBoYWRQaXhlbE9yUG9zUHJlZml4ID0gZmFsc2U7CkBA
IC0xOTgsNyArMTkwLDcgQEAgc3RhdGljIENTU1Byb3BlcnR5SW5mbyBjc3NQcm9wZXJ0eUlERm9y
SlNDU1NQcm9wZXJ0eU5hbWUoUHJvcGVydHlOYW1lIHByb3BlcnR5TmEKICAgICAgICAgcmV0dXJu
IHByb3BlcnR5SW5mbzsKIAogICAgIFN0cmluZyBzdHJpbmdGb3JDYWNoZSA9IFN0cmluZyhwcm9w
ZXJ0eU5hbWVTdHJpbmcpOwotICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIENTU1Byb3BlcnR5
SW5mbz4gQ1NTUHJvcGVydHlJbmZvTWFwOworICAgIHVzaW5nIENTU1Byb3BlcnR5SW5mb01hcCA9
IEhhc2hNYXA8U3RyaW5nLCBDU1NQcm9wZXJ0eUluZm8+OwogICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxDU1NQcm9wZXJ0eUluZm9NYXA+IHByb3BlcnR5SW5mb0NhY2hlOwogICAgIHByb3BlcnR5
SW5mbyA9IHByb3BlcnR5SW5mb0NhY2hlLmdldCgpLmdldChzdHJpbmdGb3JDYWNoZSk7CiAgICAg
aWYgKHByb3BlcnR5SW5mby5wcm9wZXJ0eUlEKQpAQCAtMjEzLDM1ICsyMDUsMzUgQEAgc3RhdGlj
IENTU1Byb3BlcnR5SW5mbyBjc3NQcm9wZXJ0eUlERm9ySlNDU1NQcm9wZXJ0eU5hbWUoUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmEKICAgICAvLyBQcmVmaXhlcyBDU1MsIFBpeGVsLCBQb3MgYXJlIGln
bm9yZWQuCiAgICAgLy8gUHJlZml4ZXMgQXBwbGUsIEtIVE1MIGFuZCBXZWJraXQgYXJlIHRyYW5z
cG9zZWQgdG8gIi13ZWJraXQtIi4KICAgICAvLyBUaGUgcHJlZml4ICJFcHViIiBiZWNvbWVzICIt
ZXB1Yi0iLgotICAgIHN3aXRjaCAoZ2V0Q1NTUHJvcGVydHlOYW1lUHJlZml4KCpwcm9wZXJ0eU5h
bWVTdHJpbmcpKSB7Ci0gICAgY2FzZSBQcm9wZXJ0eU5hbWVQcmVmaXhOb25lOgorICAgIHN3aXRj
aCAocHJvcGVydHlOYW1lUHJlZml4KCpwcm9wZXJ0eU5hbWVTdHJpbmcpKSB7CisgICAgY2FzZSBQ
cm9wZXJ0eU5hbWVQcmVmaXg6Ok5vbmU6CiAgICAgICAgIGlmIChpc0FTQ0lJVXBwZXIoKCpwcm9w
ZXJ0eU5hbWVTdHJpbmcpWzBdKSkKICAgICAgICAgICAgIHJldHVybiBwcm9wZXJ0eUluZm87CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgUHJvcGVydHlOYW1lUHJlZml4Q1NTOgorICAgIGNhc2Ug
UHJvcGVydHlOYW1lUHJlZml4OjpDU1M6CiAgICAgICAgIGkgKz0gMzsKICAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBQcm9wZXJ0eU5hbWVQcmVmaXhQaXhlbDoKKyAgICBjYXNlIFByb3BlcnR5TmFt
ZVByZWZpeDo6UGl4ZWw6CiAgICAgICAgIGkgKz0gNTsKICAgICAgICAgaGFkUGl4ZWxPclBvc1By
ZWZpeCA9IHRydWU7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUHJvcGVydHlOYW1lUHJlZml4
UG9zOgorICAgIGNhc2UgUHJvcGVydHlOYW1lUHJlZml4OjpQb3M6CiAgICAgICAgIGkgKz0gMzsK
ICAgICAgICAgaGFkUGl4ZWxPclBvc1ByZWZpeCA9IHRydWU7CiAgICAgICAgIGJyZWFrOwogI2lm
IEVOQUJMRShMRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykKLSAgICBjYXNlIFByb3BlcnR5TmFt
ZVByZWZpeEFwcGxlOgotICAgIGNhc2UgUHJvcGVydHlOYW1lUHJlZml4S0hUTUw6CisgICAgY2Fz
ZSBQcm9wZXJ0eU5hbWVQcmVmaXg6OkFwcGxlOgorICAgIGNhc2UgUHJvcGVydHlOYW1lUHJlZml4
OjpLSFRNTDoKICAgICAgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZl
YXR1cmVzKCkubGVnYWN5Q1NTVmVuZG9yUHJlZml4ZXNFbmFibGVkKCkpOwogICAgICAgICB3cml0
ZVdlYktpdFByZWZpeChidWZmZXJQdHIpOwogICAgICAgICBpICs9IDU7CiAgICAgICAgIGJyZWFr
OwogI2VuZGlmCi0gICAgY2FzZSBQcm9wZXJ0eU5hbWVQcmVmaXhFcHViOgorICAgIGNhc2UgUHJv
cGVydHlOYW1lUHJlZml4OjpFcHViOgogICAgICAgICB3cml0ZUVwdWJQcmVmaXgoYnVmZmVyUHRy
KTsKICAgICAgICAgaSArPSA0OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFByb3BlcnR5TmFt
ZVByZWZpeFdlYktpdDoKKyAgICBjYXNlIFByb3BlcnR5TmFtZVByZWZpeDo6V2ViS2l0OgogICAg
ICAgICB3cml0ZVdlYktpdFByZWZpeChidWZmZXJQdHIpOwogICAgICAgICBpICs9IDY7CiAgICAg
ICAgIGJyZWFrOwpAQCAtMjU4LDcgKzI1MCw3IEBAIHN0YXRpYyBDU1NQcm9wZXJ0eUluZm8gY3Nz
UHJvcGVydHlJREZvckpTQ1NTUHJvcGVydHlOYW1lKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hCiAK
ICAgICBmb3IgKDsgaSA8IGxlbmd0aDsgKytpKSB7CiAgICAgICAgIFVDaGFyIGMgPSAoKnByb3Bl
cnR5TmFtZVN0cmluZylbaV07Ci0gICAgICAgIGlmICghYyB8fCBjID49IDB4N0YpCisgICAgICAg
IGlmICghYyB8fCAhaXNBU0NJSShjKSkKICAgICAgICAgICAgIHJldHVybiBwcm9wZXJ0eUluZm87
IC8vIGlsbGVnYWwgY2hhcmFjdGVyCiAgICAgICAgIGlmIChpc0FTQ0lJVXBwZXIoYykpIHsKICAg
ICAgICAgICAgIHNpemVfdCBidWZmZXJTaXplTGVmdCA9IHN0cmluZ0VuZCAtIGJ1ZmZlclB0cjsK
QEAgLTI2Niw3ICsyNTgsNyBAQCBzdGF0aWMgQ1NTUHJvcGVydHlJbmZvIGNzc1Byb3BlcnR5SURG
b3JKU0NTU1Byb3BlcnR5TmFtZShQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYQogICAgICAgICAgICAg
aWYgKHByb3BlcnR5U2l6ZUxlZnQgPiBidWZmZXJTaXplTGVmdCkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gcHJvcGVydHlJbmZvOwogICAgICAgICAgICAgKmJ1ZmZlclB0cisrID0gJy0nOwotICAg
ICAgICAgICAgKmJ1ZmZlclB0cisrID0gdG9BU0NJSUxvd2VyKGMpOworICAgICAgICAgICAgKmJ1
ZmZlclB0cisrID0gdG9BU0NJSUxvd2VyVW5jaGVja2VkKGMpOwogICAgICAgICB9IGVsc2UKICAg
ICAgICAgICAgICpidWZmZXJQdHIrKyA9IGM7CiAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZ
X0lNUExJQ0FUSU9OKGJ1ZmZlclB0ciA8IGJ1ZmZlckVuZCk7CkBAIC0yNzksOSArMjcxLDggQEAg
c3RhdGljIENTU1Byb3BlcnR5SW5mbyBjc3NQcm9wZXJ0eUlERm9ySlNDU1NQcm9wZXJ0eU5hbWUo
UHJvcGVydHlOYW1lIHByb3BlcnR5TmEKICAgICBjc3NQcm9wZXJ0eU5hbWVJT1NBbGlhc2luZyhi
dWZmZXIsIG5hbWUsIG91dHB1dExlbmd0aCk7CiAjZW5kaWYKIAotICAgIGNvbnN0IFByb3BlcnR5
KiBoYXNoVGFibGVFbnRyeSA9IGZpbmRQcm9wZXJ0eShuYW1lLCBvdXRwdXRMZW5ndGgpOwotICAg
IGludCBwcm9wZXJ0eUlEID0gaGFzaFRhYmxlRW50cnkgPyBoYXNoVGFibGVFbnRyeS0+aWQgOiAw
OwotICAgIGlmIChwcm9wZXJ0eUlEKSB7CisgICAgYXV0byogaGFzaFRhYmxlRW50cnkgPSBmaW5k
UHJvcGVydHkobmFtZSwgb3V0cHV0TGVuZ3RoKTsKKyAgICBpZiAoYXV0byBwcm9wZXJ0eUlEID0g
aGFzaFRhYmxlRW50cnkgPyBoYXNoVGFibGVFbnRyeS0+aWQgOiAwKSB7CiAgICAgICAgIHByb3Bl
cnR5SW5mby5oYWRQaXhlbE9yUG9zUHJlZml4ID0gaGFkUGl4ZWxPclBvc1ByZWZpeDsKICAgICAg
ICAgcHJvcGVydHlJbmZvLnByb3BlcnR5SUQgPSBzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihw
cm9wZXJ0eUlEKTsKICAgICAgICAgcHJvcGVydHlJbmZvQ2FjaGUuZ2V0KCkuYWRkKHN0cmluZ0Zv
ckNhY2hlLCBwcm9wZXJ0eUluZm8pOwpAQCAtMjg5LDc2ICsyODAsNzEgQEAgc3RhdGljIENTU1By
b3BlcnR5SW5mbyBjc3NQcm9wZXJ0eUlERm9ySlNDU1NQcm9wZXJ0eU5hbWUoUHJvcGVydHlOYW1l
IHByb3BlcnR5TmEKICAgICByZXR1cm4gcHJvcGVydHlJbmZvOwogfQogCi1zdGF0aWMgaW5saW5l
IEpTVmFsdWUgZ2V0UHJvcGVydHlWYWx1ZUZhbGxiYWNrKEV4ZWNTdGF0ZSogZXhlYywgSlNDU1NT
dHlsZURlY2xhcmF0aW9uKiB0aGlzT2JqLCB1bnNpZ25lZCBpbmRleCkKK3N0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBzdHlsZVByb3BlcnR5R2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTQ1NTU3R5bGVE
ZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBjb25zdCBS
ZWZQdHI8Q1NTVmFsdWU+JiB2YWx1ZSkKIHsKLSAgICAvLyBJZiB0aGUgcHJvcGVydHkgaXMgYSBz
aG9ydGhhbmQgcHJvcGVydHkgKHN1Y2ggYXMgInBhZGRpbmciKSwKLSAgICAvLyBpdCBjYW4gb25s
eSBiZSBhY2Nlc3NlZCB1c2luZyBnZXRQcm9wZXJ0eVZhbHVlLgotICAgIHJldHVybiBqc1N0cmlu
Z1dpdGhDYWNoZShleGVjLCB0aGlzT2JqLT53cmFwcGVkKCkuZ2V0UHJvcGVydHlWYWx1ZUludGVy
bmFsKHN0YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+KGluZGV4KSkpOworICAgIGlmICh2YWx1ZSkK
KyAgICAgICAgcmV0dXJuIGpzU3RyaW5nT3JOdWxsKCZzdGF0ZSwgdmFsdWUtPmNzc1RleHQoKSk7
CisgICAgLy8gSWYgdGhlIHByb3BlcnR5IGlzIGEgc2hvcnRoYW5kIHByb3BlcnR5IChzdWNoIGFz
ICJwYWRkaW5nIiksIGl0IGNhbiBvbmx5IGJlIGFjY2Vzc2VkIHVzaW5nIGdldFByb3BlcnR5VmFs
dWUuCisgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKCZzdGF0ZSwgdGhpc09iamVjdC53cmFw
cGVkKCkuZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKHByb3BlcnR5SUQpKTsKIH0KIAotc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGNzc1Byb3BlcnR5R2V0dGVyUGl4ZWxPclBvc1ByZWZpeChFeGVjU3Rh
dGUqIGV4ZWMsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiogdGhpc09iaiwgdW5zaWduZWQgcHJvcGVy
dHlJRCkKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBzdHlsZVByb3BlcnR5R2V0dGVyKEV4ZWNTdGF0
ZSYgc3RhdGUsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiYgdGhpc09iamVjdCwgQ1NTUHJvcGVydHlJ
RCBwcm9wZXJ0eUlEKQogewotICAgIC8vIFNldCB1cCBwaXhlbE9yUG9zIGJvb2xlYW4gdG8gaGFu
ZGxlIHRoZSBmYWN0IHRoYXQKLSAgICAvLyBwaXhlbFRvcCByZXR1cm5zICJDU1MgVG9wIiBhcyBu
dW1iZXIgdmFsdWUgaW4gdW5pdCBwaXhlbHMKLSAgICAvLyBwb3NUb3AgcmV0dXJucyAiQ1NTIHRv
cCIgYXMgbnVtYmVyIHZhbHVlIGluIHVuaXQgcGl4ZWxzIF9pZl8gaXRzIGEKLSAgICAvLyBwb3Np
dGlvbmVkIGVsZW1lbnQuIGlmIGl0IGlzIG5vdCBhIHBvc2l0aW9uZWQgZWxlbWVudCwgcmV0dXJu
IDAKLSAgICAvLyBmcm9tIE1TSUUgZG9jdW1lbnRhdGlvbiBGSVhNRTogSU1QTEVNRU5UIFRIQVQg
KERpcmspCi0gICAgUmVmUHRyPENTU1ZhbHVlPiB2ID0gdGhpc09iai0+d3JhcHBlZCgpLmdldFBy
b3BlcnR5Q1NTVmFsdWVJbnRlcm5hbChzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihwcm9wZXJ0
eUlEKSk7Ci0gICAgaWYgKHYpIHsKLSAgICAgICAgaWYgKHYtPmlzUHJpbWl0aXZlVmFsdWUoKSkK
LSAgICAgICAgICAgIHJldHVybiBqc051bWJlcihzdGF0aWNfcG9pbnRlcl9jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlPih2KS0+Z2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKSk7
Ci0gICAgICAgIHJldHVybiBqc1N0cmluZ09yTnVsbChleGVjLCB2LT5jc3NUZXh0KCkpOwotICAg
IH0KLQotICAgIHJldHVybiBnZXRQcm9wZXJ0eVZhbHVlRmFsbGJhY2soZXhlYywgdGhpc09iaiwg
cHJvcGVydHlJRCk7CisgICAgcmV0dXJuIHN0eWxlUHJvcGVydHlHZXR0ZXIoc3RhdGUsIHRoaXNP
YmplY3QsIHByb3BlcnR5SUQsIHRoaXNPYmplY3Qud3JhcHBlZCgpLmdldFByb3BlcnR5Q1NTVmFs
dWVJbnRlcm5hbChwcm9wZXJ0eUlEKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBjc3NQ
cm9wZXJ0eUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbiogdGhp
c09iaiwgdW5zaWduZWQgcHJvcGVydHlJRCkKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBzdHlsZVBy
b3BlcnR5R2V0dGVyUGl4ZWxPclBvc1ByZWZpeChFeGVjU3RhdGUmIHN0YXRlLCBKU0NTU1N0eWxl
RGVjbGFyYXRpb24mIHRoaXNPYmplY3QsIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkKIHsKLSAg
ICBSZWZQdHI8Q1NTVmFsdWU+IHYgPSB0aGlzT2JqLT53cmFwcGVkKCkuZ2V0UHJvcGVydHlDU1NW
YWx1ZUludGVybmFsKHN0YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+KHByb3BlcnR5SUQpKTsKLSAg
ICBpZiAodikKLSAgICAgICAgcmV0dXJuIGpzU3RyaW5nT3JOdWxsKGV4ZWMsIHYtPmNzc1RleHQo
KSk7CisgICAgLy8gQ2FsbCB0aGlzIHZlcnNpb24gb2YgdGhlIGdldHRlciBzbyB0aGF0LCBlLmcu
LCBwaXhlbFRvcCByZXR1cm5zIHRvcCBhcyBhIG51bWJlcgorICAgIC8vIGluIHBpeGVsIHVuaXRz
IGFuZCBwb3NUb3Agc2hvdWxkIGRvZXMgdGhlIHNhbWUgX2lmXyB0aGlzIGlzIGEgcG9zaXRpb25l
ZCBlbGVtZW50LgorICAgIC8vIEZJWE1FOiBJZiBub3QgYSBwb3NpdGlvbmVkIGVsZW1lbnQsIE1T
SUUgZG9jdW1lbnRhdGlvbiBzYXlzIHBvc1RvcCBzaG91bGQgcmV0dXJuIDA7IHRoaXMgcnVsZSBp
cyBub3QgaW1wbGVtZW50ZWQuCisgICAgYXV0byB2YWx1ZSA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
LmdldFByb3BlcnR5Q1NTVmFsdWVJbnRlcm5hbChwcm9wZXJ0eUlEKTsKKyAgICBpZiAoaXM8Q1NT
UHJpbWl0aXZlVmFsdWU+KHZhbHVlLmdldCgpKSkKKyAgICAgICAgcmV0dXJuIGpzTnVtYmVyKGRv
d25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUpLmZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19QWCkpOworICAgIHJldHVybiBzdHlsZVByb3BlcnR5R2V0dGVyKHN0YXRlLCB0
aGlzT2JqZWN0LCBwcm9wZXJ0eUlELCB2YWx1ZSk7Cit9CiAKLSAgICByZXR1cm4gZ2V0UHJvcGVy
dHlWYWx1ZUZhbGxiYWNrKGV4ZWMsIHRoaXNPYmosIHByb3BlcnR5SUQpOworc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIHN0eWxlUHJvcGVydHlHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNDU1NTdHls
ZURlY2xhcmF0aW9uJiB0aGlzT2JqZWN0LCBjb25zdCBDU1NQcm9wZXJ0eUluZm8mIHByb3BlcnR5
SW5mbykKK3sKKyAgICBpZiAocHJvcGVydHlJbmZvLmhhZFBpeGVsT3JQb3NQcmVmaXgpCisgICAg
ICAgIHJldHVybiBzdHlsZVByb3BlcnR5R2V0dGVyUGl4ZWxPclBvc1ByZWZpeChzdGF0ZSwgdGhp
c09iamVjdCwgcHJvcGVydHlJbmZvLnByb3BlcnR5SUQpOworICAgIHJldHVybiBzdHlsZVByb3Bl
cnR5R2V0dGVyKHN0YXRlLCB0aGlzT2JqZWN0LCBwcm9wZXJ0eUluZm8ucHJvcGVydHlJRCk7CiB9
CiAKLWJvb2wgSlNDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3REZWxlZ2F0
ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eUlkZW50aWZpZXIsIFByb3Bl
cnR5U2xvdCYgc2xvdCkKK2Jvb2wgSlNDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRPd25Qcm9wZXJ0
eVNsb3REZWxlZ2F0ZShFeGVjU3RhdGUqIHN0YXRlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7Ci0gICAgQ1NTUHJvcGVydHlJbmZvIHByb3BlcnR5SW5m
byA9IGNzc1Byb3BlcnR5SURGb3JKU0NTU1Byb3BlcnR5TmFtZShwcm9wZXJ0eUlkZW50aWZpZXIp
OworICAgIGF1dG8gcHJvcGVydHlJbmZvID0gcGFyc2VKYXZhU2NyaXB0Q1NTUHJvcGVydHlOYW1l
KHByb3BlcnR5TmFtZSk7CiAgICAgaWYgKCFwcm9wZXJ0eUluZm8ucHJvcGVydHlJRCkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKHByb3BlcnR5SW5mby5oYWRQaXhlbE9yUG9zUHJl
Zml4KQotICAgICAgICBzbG90LnNldFZhbHVlKHRoaXMsIERvbnREZWxldGUsIGNzc1Byb3BlcnR5
R2V0dGVyUGl4ZWxPclBvc1ByZWZpeChleGVjLCB0aGlzLCBwcm9wZXJ0eUluZm8ucHJvcGVydHlJ
RCkpOwotICAgIGVsc2UKLSAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzLCBEb250RGVsZXRlLCBj
c3NQcm9wZXJ0eUdldHRlcihleGVjLCB0aGlzLCBwcm9wZXJ0eUluZm8ucHJvcGVydHlJRCkpOwor
ICAgIHNsb3Quc2V0VmFsdWUodGhpcywgRG9udERlbGV0ZSwgc3R5bGVQcm9wZXJ0eUdldHRlcigq
c3RhdGUsICp0aGlzLCBwcm9wZXJ0eUluZm8pKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBKU0NTU1N0eWxlRGVjbGFyYXRpb246OnB1dERlbGVnYXRlKEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90Jiwg
Ym9vbCYgcHV0UmVzdWx0KQorYm9vbCBKU0NTU1N0eWxlRGVjbGFyYXRpb246OnB1dERlbGVnYXRl
KEV4ZWNTdGF0ZSogc3RhdGUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFs
dWUsIFB1dFByb3BlcnR5U2xvdCYsIGJvb2wmIHB1dFJlc3VsdCkKIHsKLSAgICBDU1NQcm9wZXJ0
eUluZm8gcHJvcGVydHlJbmZvID0gY3NzUHJvcGVydHlJREZvckpTQ1NTUHJvcGVydHlOYW1lKHBy
b3BlcnR5TmFtZSk7CisgICAgYXV0byBwcm9wZXJ0eUluZm8gPSBwYXJzZUphdmFTY3JpcHRDU1NQ
cm9wZXJ0eU5hbWUocHJvcGVydHlOYW1lKTsKICAgICBpZiAoIXByb3BlcnR5SW5mby5wcm9wZXJ0
eUlEKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBTdHJpbmcgcHJvcFZhbHVlID0gdmFs
dWVUb1N0cmluZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoZXhlYywgdmFsdWUpOworICAgIGF1
dG8gcHJvcGVydHlWYWx1ZSA9IHZhbHVlVG9TdHJpbmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5n
KHN0YXRlLCB2YWx1ZSk7CiAgICAgaWYgKHByb3BlcnR5SW5mby5oYWRQaXhlbE9yUG9zUHJlZml4
KQotICAgICAgICBwcm9wVmFsdWUuYXBwZW5kKCJweCIpOworICAgICAgICBwcm9wZXJ0eVZhbHVl
LmFwcGVuZCgicHgiKTsKIAogICAgIGJvb2wgaW1wb3J0YW50ID0gZmFsc2U7CiAgICAgaWYgKFNl
dHRpbmdzOjpzaG91bGRSZXNwZWN0UHJpb3JpdHlJbkNTU0F0dHJpYnV0ZVNldHRlcnMoKSkgewot
ICAgICAgICBzaXplX3QgaW1wb3J0YW50SW5kZXggPSBwcm9wVmFsdWUuZmluZCgiIWltcG9ydGFu
dCIsIDAsIGZhbHNlKTsKLSAgICAgICAgaWYgKGltcG9ydGFudEluZGV4ICE9IG5vdEZvdW5kKSB7
CisgICAgICAgIGF1dG8gaW1wb3J0YW50SW5kZXggPSBwcm9wZXJ0eVZhbHVlLmZpbmRJZ25vcmlu
Z0FTQ0lJQ2FzZSgiIWltcG9ydGFudCIpOworICAgICAgICBpZiAoaW1wb3J0YW50SW5kZXggJiYg
aW1wb3J0YW50SW5kZXggIT0gbm90Rm91bmQpIHsKICAgICAgICAgICAgIGltcG9ydGFudCA9IHRy
dWU7Ci0gICAgICAgICAgICBwcm9wVmFsdWUgPSBwcm9wVmFsdWUubGVmdChpbXBvcnRhbnRJbmRl
eCAtIDEpOworICAgICAgICAgICAgcHJvcGVydHlWYWx1ZSA9IHByb3BlcnR5VmFsdWUubGVmdChp
bXBvcnRhbnRJbmRleCAtIDEpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7Ci0gICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEID0gc3RhdGljX2Nhc3Q8Q1NT
UHJvcGVydHlJRD4ocHJvcGVydHlJbmZvLnByb3BlcnR5SUQpOwotICAgIHB1dFJlc3VsdCA9IHdy
YXBwZWQoKS5zZXRQcm9wZXJ0eUludGVybmFsKHByb3BlcnR5SUQsIHByb3BWYWx1ZSwgaW1wb3J0
YW50LCBlYyk7Ci0gICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKLQorICAgIGF1dG8gc2V0
UHJvcGVydHlJbnRlcm5hbFJlc3VsdCA9IHdyYXBwZWQoKS5zZXRQcm9wZXJ0eUludGVybmFsKHBy
b3BlcnR5SW5mby5wcm9wZXJ0eUlELCBwcm9wZXJ0eVZhbHVlLCBpbXBvcnRhbnQpOworICAgIGlm
IChzZXRQcm9wZXJ0eUludGVybmFsUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgIHBy
b3BhZ2F0ZUV4Y2VwdGlvbigqc3RhdGUsIHNldFByb3BlcnR5SW50ZXJuYWxSZXN1bHQucmVsZWFz
ZUV4Y2VwdGlvbigpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBwdXRSZXN1
bHQgPSBzZXRQcm9wZXJ0eUludGVybmFsUmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwogICAg
IHJldHVybiB0cnVlOwogfQogCkBAIC0zNzAsNDIgKzM1NiwzNyBAQCBKU1ZhbHVlIEpTQ1NTU3R5
bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShFeGVjU3RhdGUmIHN0YXRlKQogICAg
IGlmIChVTkxJS0VMWShzdGF0ZS5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJu
IHRocm93RXhjZXB0aW9uKCZzdGF0ZSwgc2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKCZzdGF0ZSkpOwogCi0gICAgU3RyaW5nIHByb3BlcnR5TmFtZSA9IHN0YXRlLnVuY2hlY2tl
ZEFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKCZzdGF0ZSk7CisgICAgYXV0byBwcm9wZXJ0eU5hbWUg
PSBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKS50b1dURlN0cmluZygmc3RhdGUpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7CiAKLSAgICBSZWZQdHI8Q1NTVmFs
dWU+IGNzc1ZhbHVlID0gd3JhcHBlZCgpLmdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydHlOYW1l
KTsKLSAgICBpZiAoIWNzc1ZhbHVlKQorICAgIGF1dG8gdmFsdWUgPSB3cmFwcGVkKCkuZ2V0UHJv
cGVydHlDU1NWYWx1ZShwcm9wZXJ0eU5hbWUpOworICAgIGlmICghdmFsdWUpCiAgICAgICAgIHJl
dHVybiBqc051bGwoKTsKIAotICAgIGdsb2JhbE9iamVjdCgpLT53b3JsZCgpLm1fY3NzVmFsdWVS
b290cy5hZGQoY3NzVmFsdWUuZ2V0KCksIHJvb3QoJndyYXBwZWQoKSkpOyAvLyBCYWxhbmNlZCBi
eSBKU0NTU1ZhbHVlT3duZXI6OmZpbmFsaXplKCkuCi0gICAgcmV0dXJuIHRvSlMoJnN0YXRlLCBn
bG9iYWxPYmplY3QoKSwgKmNzc1ZhbHVlKTsKKyAgICBnbG9iYWxPYmplY3QoKS0+d29ybGQoKS5t
X2Nzc1ZhbHVlUm9vdHMuYWRkKHZhbHVlLmdldCgpLCByb290KCZ3cmFwcGVkKCkpKTsgLy8gQmFs
YW5jZWQgYnkgSlNDU1NWYWx1ZU93bmVyOjpmaW5hbGl6ZSgpLgorICAgIHJldHVybiB0b0pTKCZz
dGF0ZSwgZ2xvYmFsT2JqZWN0KCksICp2YWx1ZSk7CiB9CiAKLXZvaWQgSlNDU1NTdHlsZURlY2xh
cmF0aW9uOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBt
b2RlKQordm9pZCBKU0NTU1N0eWxlRGVjbGFyYXRpb246OmdldE93blByb3BlcnR5TmFtZXMoSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBzdGF0ZSwgUHJvcGVydHlOYW1lQXJyYXkmIHByb3Bl
cnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQogewotICAgIEpTQ1NTU3R5bGVEZWNsYXJh
dGlvbiogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0NTU1N0eWxlRGVjbGFyYXRpb24qPihvYmplY3Qp
OwotICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKLQot
ICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRoaXNPYmplY3QtPndyYXBwZWQoKS5sZW5ndGgoKTsKLSAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCi0gICAgICAgIHByb3BlcnR5
TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb20oZXhlYywgaSkpOwotCi0gICAgc3RhdGljIElkZW50
aWZpZXIqIHByb3BlcnR5SWRlbnRpZmllcnMgPSAwOwotICAgIGlmICghcHJvcGVydHlJZGVudGlm
aWVycykgewotICAgICAgICBWZWN0b3I8U3RyaW5nLCBudW1DU1NQcm9wZXJ0aWVzPiBqc1Byb3Bl
cnR5TmFtZXM7Ci0gICAgICAgIGZvciAoaW50IGlkID0gZmlyc3RDU1NQcm9wZXJ0eTsgaWQgPCBm
aXJzdENTU1Byb3BlcnR5ICsgbnVtQ1NTUHJvcGVydGllczsgKytpZCkKLSAgICAgICAgICAgIGpz
UHJvcGVydHlOYW1lcy5hcHBlbmQoZ2V0SlNQcm9wZXJ0eU5hbWUoc3RhdGljX2Nhc3Q8Q1NTUHJv
cGVydHlJRD4oaWQpKSk7Ci0gICAgICAgIHN0ZDo6c29ydChqc1Byb3BlcnR5TmFtZXMuYmVnaW4o
KSwganNQcm9wZXJ0eU5hbWVzLmVuZCgpLCBXVEY6OmNvZGVQb2ludENvbXBhcmVMZXNzVGhhbik7
Ci0KLSAgICAgICAgcHJvcGVydHlJZGVudGlmaWVycyA9IG5ldyBJZGVudGlmaWVyW251bUNTU1By
b3BlcnRpZXNdOworICAgIHN0YXRpYyBjb25zdCBJZGVudGlmaWVyKiBjb25zdCBjc3NQcm9wZXJ0
eU5hbWVzID0gW3N0YXRlXSB7CisgICAgICAgIFN0cmluZyBuYW1lc1tudW1DU1NQcm9wZXJ0aWVz
XTsKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1DU1NQcm9wZXJ0aWVzOyArK2kpCi0g
ICAgICAgICAgICBwcm9wZXJ0eUlkZW50aWZpZXJzW2ldID0gSWRlbnRpZmllcjo6ZnJvbVN0cmlu
ZyhleGVjLCBqc1Byb3BlcnR5TmFtZXNbaV0pOwotICAgIH0KKyAgICAgICAgICAgIG5hbWVzW2ld
ID0gZ2V0SlNQcm9wZXJ0eU5hbWUoc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4oZmlyc3RDU1NQ
cm9wZXJ0eSArIGkpKTsKKyAgICAgICAgc3RkOjpzb3J0KCZuYW1lc1swXSwgJm5hbWVzW251bUNT
U1Byb3BlcnRpZXNdLCBXVEY6OmNvZGVQb2ludENvbXBhcmVMZXNzVGhhbik7CisgICAgICAgIGF1
dG8qIGlkZW50aWZpZXJzID0gbmV3IElkZW50aWZpZXJbbnVtQ1NTUHJvcGVydGllc107CisgICAg
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtQ1NTUHJvcGVydGllczsgKytpKQorICAgICAgICAg
ICAgaWRlbnRpZmllcnNbaV0gPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHN0YXRlLCBuYW1lc1tp
XSk7CisgICAgICAgIHJldHVybiBpZGVudGlmaWVyczsKKyAgICB9KCk7CiAKKyAgICB1bnNpZ25l
ZCBsZW5ndGggPSBqc0Nhc3Q8SlNDU1NTdHlsZURlY2xhcmF0aW9uKj4ob2JqZWN0KS0+d3JhcHBl
ZCgpLmxlbmd0aCgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkK
KyAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoSWRlbnRpZmllcjo6ZnJvbShzdGF0ZSwgaSkpOwog
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtQ1NTUHJvcGVydGllczsgKytpKQotICAgICAgICBw
cm9wZXJ0eU5hbWVzLmFkZChwcm9wZXJ0eUlkZW50aWZpZXJzW2ldKTsKKyAgICAgICAgcHJvcGVy
dHlOYW1lcy5hZGQoY3NzUHJvcGVydHlOYW1lc1tpXSk7CiAKLSAgICBCYXNlOjpnZXRPd25Qcm9w
ZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOworICAgIEJh
c2U6OmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBzdGF0ZSwgcHJvcGVydHlOYW1lcywgbW9k
ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01CaW5kaW5nLmgKaW5kZXggODNkMzA2MWRmNmE2ZjFjYTc1ZWY4N2UwYjdmYzdhYjE0
YzExNDFlNS4uZmUzY2E1NjRlYWYzY2RjYzc4ODQxYjk4OWRlZDQyYzlhNmMyMWRjMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKQEAgLTk2NSw0ICs5NjUsMTMg
QEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTTnVtYmVyKEpT
Qzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjoKICAgICByZXR1cm4gSlNDOjpqc051bWJlcih2YWx1
ZS5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7CiB9CiAKK2lubGluZSBKU0M6OkpTVmFsdWUgdG9KU1N0
cmluZyhKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSwg
RXhjZXB0aW9uT3I8U3RyaW5nPiYmIHZhbHVlKQoreworICAgIGlmIChVTkxJS0VMWSh2YWx1ZS5o
YXNFeGNlcHRpb24oKSkpIHsKKyAgICAgICAgcHJvcGFnYXRlRXhjZXB0aW9uKHN0YXRlLCB0aHJv
d1Njb3BlLCB2YWx1ZS5yZWxlYXNlRXhjZXB0aW9uKCkpOworICAgICAgICByZXR1cm4geyB9Owor
ICAgIH0KKyAgICByZXR1cm4gSlNDOjpqc1N0cmluZ1dpdGhDYWNoZSgmc3RhdGUsIHZhbHVlLnJl
bGVhc2VSZXR1cm5WYWx1ZSgpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9nb2JqZWN0LWdlbmVyYXRlLWhl
YWRlcnMucGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL2dvYmplY3QtZ2VuZXJh
dGUtaGVhZGVycy5wbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWYyYzY5YWNmMDUz
MGJhYzE5OTgwYTM1ZmYxZmYwZDBkMGVlYWJkNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL2dvYmpl
Y3QtZ2VuZXJhdGUtaGVhZGVycy5wbAorKysgL2Rldi9udWxsCkBAIC0xLDEzMSArMCwwIEBACi0j
IS91c3IvYmluL3BlcmwgLXcKLSMKLSMgQ29weXJpZ2h0IChDKSAyMDA5IEFkYW0gRGluZ2xlIDxh
ZGFtQHlvcmJhLm9yZz4KLSMgQ29weXJpZ2h0IChDKSAyMDE1IElnYWxpYSBTLkwuCi0jCi0jIFRo
aXMgZmlsZSBpcyBwYXJ0IG9mIFdlYktpdAotIyAKLSMgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotIyBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotIyBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSMgdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgotIyAKLSMgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCi0jIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0jIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0jIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotIyAKLSMgWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQotIyBhaW50IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCi0jIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0jIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgotIyAKLQotbXkgJGNsYXNzbGlzdCA9IDxTVERJTj47Ci1jaG9tcCgkY2xhc3NsaXN0KTsK
LW15IEBjbGFzc2VzID0gc3BsaXQgLyAvLCAkY2xhc3NsaXN0OwotQGNsYXNzZXMgPSBzb3J0IEBj
bGFzc2VzOwotCi1wcmludCA8PEVPRjsKLS8qIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJL
aXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQg
YnkgZ29iamVjdC1nZW5lcmF0ZS1oZWFkZXJzLnBsLiAgRE8gTk9UIE1PRElGWSEKLSAgIAotICAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgotICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKLSAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgotICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0g
ICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQotICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCi0KLSAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAotICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0qLwotCi1FT0YKLQotbXkgJG91
dFR5cGUgPSAkQVJHVlswXTsKLW15ICRoZWFkZXI7Ci1pZiAoJG91dFR5cGUgZXEgImRlZmluZXMi
KSB7Ci0gICAgJGhlYWRlciA9ICJ3ZWJraXRkb21kZWZpbmVzX2giOwotfSBlbHNpZiAoJG91dFR5
cGUgZXEgImRlZmluZXMtdW5zdGFibGUiKSB7Ci0gICAgJGhlYWRlciA9ICJ3ZWJraXRkb21kZWZp
bmVzX3Vuc3RhYmxlX2giOwotfSBlbHNpZiAoJG91dFR5cGUgZXEgImdkb20iKSB7Ci0gICAgJGhl
YWRlciA9ICJ3ZWJraXRkb21faCI7Ci19IGVsc2lmICgkb3V0VHlwZSBlcSAiYXV0b2NsZWFudXBz
IikgewotICAgICRoZWFkZXIgPSAid2Via2l0ZG9tYXV0b2NsZWFudXBzX2giOwotfSBlbHNlIHsK
LSAgICBkaWUgInVua25vd24gb3V0cHV0IHR5cGUiOwotfQotCi1wcmludCAiI2lmbmRlZiAke2hl
YWRlcn1cbiI7Ci1wcmludCAiI2RlZmluZSAke2hlYWRlcn1cbiI7Ci1wcmludCAiXG4iOwotCi1p
ZiAoJG91dFR5cGUgZXEgImRlZmluZXMiKSB7Ci0gICAgcHJpbnQgIiNpbmNsdWRlIDxnbGliLmg+
XG5cbiI7Ci0gICAgcHJpbnQgIiNpZmRlZiBHX09TX1dJTjMyXG4iOwotICAgIHByaW50ICIgICAg
I2lmZGVmIEJVSUxESU5HX1dFQktJVFxuIjsKLSAgICBwcmludCAiICAgICAgICAjZGVmaW5lIFdF
QktJVF9BUEkgX19kZWNsc3BlYyhkbGxleHBvcnQpXG4iOwotICAgIHByaW50ICIgICAgI2Vsc2Vc
biI7Ci0gICAgcHJpbnQgIiAgICAgICAgI2RlZmluZSBXRUJLSVRfQVBJIF9fZGVjbHNwZWMoZGxs
aW1wb3J0KVxuIjsKLSAgICBwcmludCAiICAgICNlbmRpZlxuIjsKLSAgICBwcmludCAiI2Vsc2Vc
biI7Ci0gICAgcHJpbnQgIiAgICAjZGVmaW5lIFdFQktJVF9BUEkgX19hdHRyaWJ1dGVfXygodmlz
aWJpbGl0eShcImRlZmF1bHRcIikpKVxuIjsKLSAgICBwcmludCAiI2VuZGlmXG5cbiI7Ci0gICAg
cHJpbnQgIiNkZWZpbmUgV0VCS0lUX0RFUFJFQ0FURUQgV0VCS0lUX0FQSSBHX0RFUFJFQ0FURURc
biI7Ci0gICAgcHJpbnQgIiNkZWZpbmUgV0VCS0lUX0RFUFJFQ0FURURfRk9SKGYpIFdFQktJVF9B
UEkgR19ERVBSRUNBVEVEX0ZPUihmKVxuIjsKLSAgICBwcmludCAiXG4iOwotICAgIHByaW50ICIj
aWZuZGVmIFdFQktJVF9BUElcbiI7Ci0gICAgcHJpbnQgIiAgICAjZGVmaW5lIFdFQktJVF9BUElc
biI7Ci0gICAgcHJpbnQgIiNlbmRpZlxuIjsKLQotICAgIGZvcmVhY2ggbXkgJGNsYXNzIChAY2xh
c3NlcykgewotICAgICAgICBpZiAoJGNsYXNzIGVxICJFdmVudFRhcmdldCIgfHwgJGNsYXNzIGVx
ICJOb2RlRmlsdGVyIiB8fCAkY2xhc3MgZXEgIlhQYXRoTlNSZXNvbHZlciIpIHsKLSAgICAgICAg
ICAgIHByaW50ICJ0eXBlZGVmIHN0cnVjdCBfV2ViS2l0RE9NJHtjbGFzc30gV2ViS2l0RE9NJHtj
bGFzc307XG4iOwotICAgICAgICAgICAgcHJpbnQgInR5cGVkZWYgc3RydWN0IF9XZWJLaXRET00k
e2NsYXNzfUlmYWNlIFdlYktpdERPTSR7Y2xhc3N9SWZhY2U7XG4iOwotICAgICAgICAgICAgcHJp
bnQgIlxuIjsKLSAgICAgICAgfSBlbHNpZiAoJGNsYXNzIG5lICJEZXByZWNhdGVkIiAmJiAkY2xh
c3MgbmUgIkN1c3RvbSIpIHsKLSAgICAgICAgICAgIHByaW50ICJ0eXBlZGVmIHN0cnVjdCBfV2Vi
S2l0RE9NJHtjbGFzc30gV2ViS2l0RE9NJHtjbGFzc307XG4iOwotICAgICAgICAgICAgcHJpbnQg
InR5cGVkZWYgc3RydWN0IF9XZWJLaXRET00ke2NsYXNzfUNsYXNzIFdlYktpdERPTSR7Y2xhc3N9
Q2xhc3M7XG4iOwotICAgICAgICAgICAgcHJpbnQgIlxuIjsKLSAgICAgICAgfQotICAgIH0KLSAg
ICBwcmludCAiI2luY2x1ZGUgPHdlYmtpdGRvbS93ZWJraXRkb21hdXRvY2xlYW51cHMuaD5cbiI7
Ci19IGVsc2lmICgkb3V0VHlwZSBlcSAiZGVmaW5lcy11bnN0YWJsZSIpIHsKLSAgICBwcmludCAi
I2luY2x1ZGUgPHdlYmtpdGRvbS93ZWJraXRkb21kZWZpbmVzLmg+XG5cbiI7Ci0gICAgcHJpbnQg
IiNpZmRlZiBXRUJLSVRfRE9NX1VTRV9VTlNUQUJMRV9BUElcblxuIjsKLQotICAgIGZvcmVhY2gg
bXkgJGNsYXNzIChAY2xhc3NlcykgewotICAgICAgICBwcmludCAidHlwZWRlZiBzdHJ1Y3QgX1dl
YktpdERPTSR7Y2xhc3N9IFdlYktpdERPTSR7Y2xhc3N9O1xuIjsKLSAgICAgICAgcHJpbnQgInR5
cGVkZWYgc3RydWN0IF9XZWJLaXRET00ke2NsYXNzfUNsYXNzIFdlYktpdERPTSR7Y2xhc3N9Q2xh
c3M7XG4iOwotICAgICAgICBwcmludCAiXG4iOwotICAgIH0KLQotICAgIHByaW50ICIjaW5jbHVk
ZSA8d2Via2l0ZG9tL3dlYmtpdGRvbWF1dG9jbGVhbnVwcy11bnN0YWJsZS5oPlxuXG4iOwotICAg
IHByaW50ICIjZW5kaWYgLyogV0VCS0lUX0RPTV9VU0VfVU5TVEFCTEVfQVBJICovXG5cbiI7Ci19
IGVsc2lmICgkb3V0VHlwZSBlcSAiZ2RvbSIpIHsKLSAgICBwcmludCAiI2RlZmluZSBfX1dFQktJ
VERPTV9IX0lOU0lERV9fXG5cbiI7Ci0gICAgZm9yZWFjaCBteSAkY2xhc3MgKEBjbGFzc2VzKSB7
Ci0gICAgICAgIHByaW50ICIjaW5jbHVkZSA8d2Via2l0ZG9tL1dlYktpdERPTSR7Y2xhc3N9Lmg+
XG4iOwotICAgIH0KLSAgICBwcmludCAiXG4jdW5kZWYgX19XRUJLSVRET01fSF9JTlNJREVfX1xu
IjsKLX0gZWxzaWYgKCRvdXRUeXBlIGVxICJhdXRvY2xlYW51cHMiKSB7Ci0gICAgcHJpbnQgIiNp
bmNsdWRlIDxnbGliLW9iamVjdC5oPlxuXG4iOwotICAgIHByaW50ICIjaWZkZWYgR19ERUZJTkVf
QVVUT1BUUl9DTEVBTlVQX0ZVTkNcbiI7Ci0gICAgcHJpbnQgIiNpZm5kZWYgX19HSV9TQ0FOTkVS
X19cblxuIjsKLSAgICBmb3JlYWNoIG15ICRjbGFzcyAoQGNsYXNzZXMpIHsKLSAgICAgICAgaWYg
KCRjbGFzcyBuZSAiRGVwcmVjYXRlZCIgJiYgJGNsYXNzIG5lICJDdXN0b20iKSB7Ci0gICAgICAg
ICAgICBwcmludCAiR19ERUZJTkVfQVVUT1BUUl9DTEVBTlVQX0ZVTkMgKFdlYktpdERPTSR7Y2xh
c3N9LCBnX29iamVjdF91bnJlZilcbiI7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcHJpbnQgIlxu
I2VuZGlmXG4iOwotICAgIHByaW50ICIjZW5kaWZcbiI7Ci19Ci0KLXByaW50ICJcbiI7Ci1wcmlu
dCAiI2VuZGlmXG4iOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0Jhc2ljU2hhcGVG
dW5jdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0Jhc2ljU2hhcGVGdW5jdGlvbnMuY3Bw
CmluZGV4IDRjNDdlMTMxMTZkZWJkMTQ4MDM3ODE4MWE2Y2U0NzFmNTNlYWJiMTYuLjA4ODY0ZmEx
YTY4ZTQxYWM3ZWRjZGZkZTdkYjRhYWQwYjFmNDBlMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9CYXNpY1NoYXBlRnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
QmFzaWNTaGFwZUZ1bmN0aW9ucy5jcHAKQEAgLTE0Niw3ICsxNDYsNyBAQCBzdGF0aWMgTGVuZ3Ro
U2l6ZSBjb252ZXJ0VG9MZW5ndGhTaXplKGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEm
IGNvbnZlcnNpbwogICAgIGlmICghdmFsdWUpCiAgICAgICAgIHJldHVybiBMZW5ndGhTaXplKExl
bmd0aCgwLCBGaXhlZCksIExlbmd0aCgwLCBGaXhlZCkpOwogCi0gICAgUGFpciogcGFpciA9IHZh
bHVlLT5nZXRQYWlyVmFsdWUoKTsKKyAgICBQYWlyKiBwYWlyID0gdmFsdWUtPnBhaXJWYWx1ZSgp
OwogICAgIHJldHVybiBMZW5ndGhTaXplKGNvbnZlcnRUb0xlbmd0aChjb252ZXJzaW9uRGF0YSwg
cGFpci0+Zmlyc3QoKSksIGNvbnZlcnRUb0xlbmd0aChjb252ZXJzaW9uRGF0YSwgcGFpci0+c2Vj
b25kKCkpKTsKIH0KIApAQCAtMTU5LDkgKzE1OSw5IEBAIHN0YXRpYyBCYXNpY1NoYXBlQ2VudGVy
Q29vcmRpbmF0ZSBjb252ZXJ0VG9DZW50ZXJDb29yZGluYXRlKGNvbnN0IENTU1RvTGVuZ3RoQ29u
CiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAga2V5d29yZCA9IENTU1ZhbHVlQ2VudGVyOwogICAg
IGVsc2UgaWYgKHZhbHVlLT5pc1ZhbHVlSUQoKSkKLSAgICAgICAga2V5d29yZCA9IHZhbHVlLT5n
ZXRWYWx1ZUlEKCk7Ci0gICAgZWxzZSBpZiAoUGFpciogcGFpciA9IHZhbHVlLT5nZXRQYWlyVmFs
dWUoKSkgewotICAgICAgICBrZXl3b3JkID0gcGFpci0+Zmlyc3QoKS0+Z2V0VmFsdWVJRCgpOwor
ICAgICAgICBrZXl3b3JkID0gdmFsdWUtPnZhbHVlSUQoKTsKKyAgICBlbHNlIGlmIChQYWlyKiBw
YWlyID0gdmFsdWUtPnBhaXJWYWx1ZSgpKSB7CisgICAgICAgIGtleXdvcmQgPSBwYWlyLT5maXJz
dCgpLT52YWx1ZUlEKCk7CiAgICAgICAgIG9mZnNldCA9IGNvbnZlcnRUb0xlbmd0aChjb252ZXJz
aW9uRGF0YSwgcGFpci0+c2Vjb25kKCkpOwogICAgIH0gZWxzZQogICAgICAgICBvZmZzZXQgPSBj
b252ZXJ0VG9MZW5ndGgoY29udmVyc2lvbkRhdGEsIHZhbHVlKTsKQEAgLTE5NCw3ICsxOTQsNyBA
QCBzdGF0aWMgQmFzaWNTaGFwZVJhZGl1cyBjc3NWYWx1ZVRvQmFzaWNTaGFwZVJhZGl1cyhjb25z
dCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYQogICAgICAgICByZXR1cm4gQmFzaWNTaGFwZVJhZGl1
cyhCYXNpY1NoYXBlUmFkaXVzOjpDbG9zZXN0U2lkZSk7CiAKICAgICBpZiAocmFkaXVzLT5pc1Zh
bHVlSUQoKSkgewotICAgICAgICBzd2l0Y2ggKHJhZGl1cy0+Z2V0VmFsdWVJRCgpKSB7CisgICAg
ICAgIHN3aXRjaCAocmFkaXVzLT52YWx1ZUlEKCkpIHsKICAgICAgICAgY2FzZSBDU1NWYWx1ZUNs
b3Nlc3RTaWRlOgogICAgICAgICAgICAgcmV0dXJuIEJhc2ljU2hhcGVSYWRpdXMoQmFzaWNTaGFw
ZVJhZGl1czo6Q2xvc2VzdFNpZGUpOwogICAgICAgICBjYXNlIENTU1ZhbHVlRmFydGhlc3RTaWRl
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5jcHAKaW5kZXggN2U5Y2U3MmVlOTFkZGFi
N2VjZTBlOTRiYmI0ODdhMjMwYjY2OGQ1OS4uZTQxMjU5NWI4ZjY2OTU0Y2YyMDRmNGM2YjdiNDIy
ZjFhZTQwMjUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jhc2ljU2hhcGVz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuY3BwCkBAIC00NSw4
ICs0NSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIFN0cmluZyBzZXJpYWxpemVQ
b3NpdGlvbk9mZnNldChjb25zdCBQYWlyJiBvZmZzZXQsIGNvbnN0IFBhaXImIG90aGVyKQogewot
ICAgIGlmICgob2Zmc2V0LmZpcnN0KCktPmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZUxlZnQgJiYg
b3RoZXIuZmlyc3QoKS0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlVG9wKQotICAgICAgICB8fCAo
b2Zmc2V0LmZpcnN0KCktPmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZVRvcCAmJiBvdGhlci5maXJz
dCgpLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVMZWZ0KSkKKyAgICBpZiAoKG9mZnNldC5maXJz
dCgpLT52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVMZWZ0ICYmIG90aGVyLmZpcnN0KCktPnZhbHVlSUQo
KSA9PSBDU1NWYWx1ZVRvcCkKKyAgICAgICAgfHwgKG9mZnNldC5maXJzdCgpLT52YWx1ZUlEKCkg
PT0gQ1NTVmFsdWVUb3AgJiYgb3RoZXIuZmlyc3QoKS0+dmFsdWVJRCgpID09IENTU1ZhbHVlTGVm
dCkpCiAgICAgICAgIHJldHVybiBvZmZzZXQuc2Vjb25kKCktPmNzc1RleHQoKTsKICAgICByZXR1
cm4gb2Zmc2V0LmNzc1RleHQoKTsKIH0KQEAgLTU5LDkgKzU5LDkgQEAgc3RhdGljIFJlZjxDU1NQ
cmltaXRpdmVWYWx1ZT4gYnVpbGRTZXJpYWxpemFibGVQb3NpdGlvbk9mZnNldChDU1NQcmltaXRp
dmVWYWx1ZSoKICAgICBpZiAoIW9mZnNldCkKICAgICAgICAgc2lkZSA9IENTU1ZhbHVlQ2VudGVy
OwogICAgIGVsc2UgaWYgKG9mZnNldC0+aXNWYWx1ZUlEKCkpCi0gICAgICAgIHNpZGUgPSBvZmZz
ZXQtPmdldFZhbHVlSUQoKTsKLSAgICBlbHNlIGlmIChQYWlyKiBwYWlyID0gb2Zmc2V0LT5nZXRQ
YWlyVmFsdWUoKSkgewotICAgICAgICBzaWRlID0gcGFpci0+Zmlyc3QoKS0+Z2V0VmFsdWVJRCgp
OworICAgICAgICBzaWRlID0gb2Zmc2V0LT52YWx1ZUlEKCk7CisgICAgZWxzZSBpZiAoUGFpciog
cGFpciA9IG9mZnNldC0+cGFpclZhbHVlKCkpIHsKKyAgICAgICAgc2lkZSA9IHBhaXItPmZpcnN0
KCktPnZhbHVlSUQoKTsKICAgICAgICAgYW1vdW50ID0gcGFpci0+c2Vjb25kKCk7CiAgICAgfSBl
bHNlCiAgICAgICAgIGFtb3VudCA9IG9mZnNldDsKQEAgLTczLDggKzczLDggQEAgc3RhdGljIFJl
ZjxDU1NQcmltaXRpdmVWYWx1ZT4gYnVpbGRTZXJpYWxpemFibGVQb3NpdGlvbk9mZnNldChDU1NQ
cmltaXRpdmVWYWx1ZSoKICAgICB9IGVsc2UgaWYgKChzaWRlID09IENTU1ZhbHVlUmlnaHQgfHwg
c2lkZSA9PSBDU1NWYWx1ZUJvdHRvbSkKICAgICAgICAgJiYgYW1vdW50LT5pc1BlcmNlbnRhZ2Uo
KSkgewogICAgICAgICBzaWRlID0gZGVmYXVsdFNpZGU7Ci0gICAgICAgIGFtb3VudCA9IGNzc1Zh
bHVlUG9vbC5jcmVhdGVWYWx1ZShMZW5ndGgoMTAwIC0gYW1vdW50LT5nZXRGbG9hdFZhbHVlKCks
IFBlcmNlbnQpKTsKLSAgICB9IGVsc2UgaWYgKGFtb3VudC0+aXNMZW5ndGgoKSAmJiAhYW1vdW50
LT5nZXRGbG9hdFZhbHVlKCkpIHsKKyAgICAgICAgYW1vdW50ID0gY3NzVmFsdWVQb29sLmNyZWF0
ZVZhbHVlKExlbmd0aCgxMDAgLSBhbW91bnQtPmZsb2F0VmFsdWUoKSwgUGVyY2VudCkpOworICAg
IH0gZWxzZSBpZiAoYW1vdW50LT5pc0xlbmd0aCgpICYmICFhbW91bnQtPmZsb2F0VmFsdWUoKSkg
ewogICAgICAgICBpZiAoc2lkZSA9PSBDU1NWYWx1ZVJpZ2h0IHx8IHNpZGUgPT0gQ1NTVmFsdWVC
b3R0b20pCiAgICAgICAgICAgICBhbW91bnQgPSBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoTGVu
Z3RoKDEwMCwgUGVyY2VudCkpOwogICAgICAgICBlbHNlCkBAIC0xMTQsMTIgKzExNCwxMiBAQCBT
dHJpbmcgQ1NTQmFzaWNTaGFwZUNpcmNsZTo6Y3NzVGV4dCgpIGNvbnN0CiAgICAgUmVmPENTU1By
aW1pdGl2ZVZhbHVlPiBub3JtYWxpemVkQ1kgPSBidWlsZFNlcmlhbGl6YWJsZVBvc2l0aW9uT2Zm
c2V0KG1fY2VudGVyWS5nZXQoKSwgQ1NTVmFsdWVUb3ApOwogCiAgICAgU3RyaW5nIHJhZGl1czsK
LSAgICBpZiAobV9yYWRpdXMgJiYgbV9yYWRpdXMtPmdldFZhbHVlSUQoKSAhPSBDU1NWYWx1ZUNs
b3Nlc3RTaWRlKQorICAgIGlmIChtX3JhZGl1cyAmJiBtX3JhZGl1cy0+dmFsdWVJRCgpICE9IENT
U1ZhbHVlQ2xvc2VzdFNpZGUpCiAgICAgICAgIHJhZGl1cyA9IG1fcmFkaXVzLT5jc3NUZXh0KCk7
CiAKICAgICByZXR1cm4gYnVpbGRDaXJjbGVTdHJpbmcocmFkaXVzLAotICAgICAgICBzZXJpYWxp
emVQb3NpdGlvbk9mZnNldCgqbm9ybWFsaXplZENYLT5nZXRQYWlyVmFsdWUoKSwgKm5vcm1hbGl6
ZWRDWS0+Z2V0UGFpclZhbHVlKCkpLAotICAgICAgICBzZXJpYWxpemVQb3NpdGlvbk9mZnNldCgq
bm9ybWFsaXplZENZLT5nZXRQYWlyVmFsdWUoKSwgKm5vcm1hbGl6ZWRDWC0+Z2V0UGFpclZhbHVl
KCkpKTsKKyAgICAgICAgc2VyaWFsaXplUG9zaXRpb25PZmZzZXQoKm5vcm1hbGl6ZWRDWC0+cGFp
clZhbHVlKCksICpub3JtYWxpemVkQ1ktPnBhaXJWYWx1ZSgpKSwKKyAgICAgICAgc2VyaWFsaXpl
UG9zaXRpb25PZmZzZXQoKm5vcm1hbGl6ZWRDWS0+cGFpclZhbHVlKCksICpub3JtYWxpemVkQ1gt
PnBhaXJWYWx1ZSgpKSk7CiB9CiAKIGJvb2wgQ1NTQmFzaWNTaGFwZUNpcmNsZTo6ZXF1YWxzKGNv
bnN0IENTU0Jhc2ljU2hhcGUmIHNoYXBlKSBjb25zdApAQCAtMTczLDExICsxNzMsMTEgQEAgU3Ry
aW5nIENTU0Jhc2ljU2hhcGVFbGxpcHNlOjpjc3NUZXh0KCkgY29uc3QKICAgICBTdHJpbmcgcmFk
aXVzWDsKICAgICBTdHJpbmcgcmFkaXVzWTsKICAgICBpZiAobV9yYWRpdXNYKSB7Ci0gICAgICAg
IGJvb2wgc2hvdWxkU2VyaWFsaXplUmFkaXVzWFZhbHVlID0gbV9yYWRpdXNYLT5nZXRWYWx1ZUlE
KCkgIT0gQ1NTVmFsdWVDbG9zZXN0U2lkZTsKKyAgICAgICAgYm9vbCBzaG91bGRTZXJpYWxpemVS
YWRpdXNYVmFsdWUgPSBtX3JhZGl1c1gtPnZhbHVlSUQoKSAhPSBDU1NWYWx1ZUNsb3Nlc3RTaWRl
OwogICAgICAgICBib29sIHNob3VsZFNlcmlhbGl6ZVJhZGl1c1lWYWx1ZSA9IGZhbHNlOwogCiAg
ICAgICAgIGlmIChtX3JhZGl1c1kpIHsKLSAgICAgICAgICAgIHNob3VsZFNlcmlhbGl6ZVJhZGl1
c1lWYWx1ZSA9IG1fcmFkaXVzWS0+Z2V0VmFsdWVJRCgpICE9IENTU1ZhbHVlQ2xvc2VzdFNpZGU7
CisgICAgICAgICAgICBzaG91bGRTZXJpYWxpemVSYWRpdXNZVmFsdWUgPSBtX3JhZGl1c1ktPnZh
bHVlSUQoKSAhPSBDU1NWYWx1ZUNsb3Nlc3RTaWRlOwogICAgICAgICAgICAgaWYgKHNob3VsZFNl
cmlhbGl6ZVJhZGl1c1lWYWx1ZSkKICAgICAgICAgICAgICAgICByYWRpdXNZID0gbV9yYWRpdXNZ
LT5jc3NUZXh0KCk7CiAgICAgICAgIH0KQEAgLTE4NSw4ICsxODUsOCBAQCBTdHJpbmcgQ1NTQmFz
aWNTaGFwZUVsbGlwc2U6OmNzc1RleHQoKSBjb25zdAogICAgICAgICAgICAgcmFkaXVzWCA9IG1f
cmFkaXVzWC0+Y3NzVGV4dCgpOwogICAgIH0KICAgICByZXR1cm4gYnVpbGRFbGxpcHNlU3RyaW5n
KHJhZGl1c1gsIHJhZGl1c1ksCi0gICAgICAgIHNlcmlhbGl6ZVBvc2l0aW9uT2Zmc2V0KCpub3Jt
YWxpemVkQ1gtPmdldFBhaXJWYWx1ZSgpLCAqbm9ybWFsaXplZENZLT5nZXRQYWlyVmFsdWUoKSks
Ci0gICAgICAgIHNlcmlhbGl6ZVBvc2l0aW9uT2Zmc2V0KCpub3JtYWxpemVkQ1ktPmdldFBhaXJW
YWx1ZSgpLCAqbm9ybWFsaXplZENYLT5nZXRQYWlyVmFsdWUoKSkpOworICAgICAgICBzZXJpYWxp
emVQb3NpdGlvbk9mZnNldCgqbm9ybWFsaXplZENYLT5wYWlyVmFsdWUoKSwgKm5vcm1hbGl6ZWRD
WS0+cGFpclZhbHVlKCkpLAorICAgICAgICBzZXJpYWxpemVQb3NpdGlvbk9mZnNldCgqbm9ybWFs
aXplZENZLT5wYWlyVmFsdWUoKSwgKm5vcm1hbGl6ZWRDWC0+cGFpclZhbHVlKCkpKTsKIH0KIAog
Ym9vbCBDU1NCYXNpY1NoYXBlRWxsaXBzZTo6ZXF1YWxzKGNvbnN0IENTU0Jhc2ljU2hhcGUmIHNo
YXBlKSBjb25zdApAQCAtMzgzLDcgKzM4Myw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCB1cGRhdGVD
b3JuZXJSYWRpdXNXaWR0aEFuZEhlaWdodChDU1NQcmltaXRpdmVWYWx1ZSogY29ybmVyLCBTCiAg
ICAgaWYgKCFjb3JuZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIFBhaXIqIHJhZGl1cyA9IGNv
cm5lci0+Z2V0UGFpclZhbHVlKCk7CisgICAgUGFpciogcmFkaXVzID0gY29ybmVyLT5wYWlyVmFs
dWUoKTsKICAgICB3aWR0aCA9IHJhZGl1cy0+Zmlyc3QoKSA/IHJhZGl1cy0+Zmlyc3QoKS0+Y3Nz
VGV4dCgpIDogU3RyaW5nKCIwIik7CiAgICAgaWYgKHJhZGl1cy0+c2Vjb25kKCkpCiAgICAgICAg
IGhlaWdodCA9IHJhZGl1cy0+c2Vjb25kKCktPmNzc1RleHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuaAppbmRleCAwODcyYmRlNGI2NTJjMzNhYzRl
NGY4MDk4N2I3OGI2ZjVhZDQzZTU5Li4yNDAyZjJjNzhjY2FlZTNjNTZlZjA4ZWI0YzU0MjQ2Yzdk
YTM0ZTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1hZ2VTbGlj
ZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0JvcmRlckltYWdlU2xpY2VWYWx1
ZS5oCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBjdXN0b21DU1NUZXh0
KCkgY29uc3Q7CiAKLSAgICBRdWFkKiBzbGljZXMoKSBjb25zdCB7IHJldHVybiBtX3NsaWNlcyA/
IG1fc2xpY2VzLT5nZXRRdWFkVmFsdWUoKSA6IG51bGxwdHI7IH0KKyAgICBRdWFkKiBzbGljZXMo
KSBjb25zdCB7IHJldHVybiBtX3NsaWNlcyA/IG1fc2xpY2VzLT5xdWFkVmFsdWUoKSA6IG51bGxw
dHI7IH0KIAogICAgIGJvb2wgZXF1YWxzKGNvbnN0IENTU0JvcmRlckltYWdlU2xpY2VWYWx1ZSYp
IGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25W
YWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAKaW5k
ZXggMmYzMjE2NzNhYTQ1YTgwNWNhYWRhZTYyMDAyNGMwMWYxNjg0YWMwNS4uNTRlMzRiNThmMDFl
ZjkzY2VjNmE2NGQ4Mjc1NWM5Zjk0NjZmMjYyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1ND
YWxjdWxhdGlvblZhbHVlLmNwcApAQCAtMjE3LDcgKzIxNyw3IEBAIHB1YmxpYzoKIHByaXZhdGU6
CiAgICAgYm9vbCBpc1plcm8oKSBjb25zdCBmaW5hbAogICAgIHsKLSAgICAgICAgcmV0dXJuICFt
X3ZhbHVlLT5nZXREb3VibGVWYWx1ZSgpOworICAgICAgICByZXR1cm4gIW1fdmFsdWUtPmRvdWJs
ZVZhbHVlKCk7CiAgICAgfQogCiAgICAgU3RyaW5nIGN1c3RvbUNTU1RleHQoKSBjb25zdCBmaW5h
bApAQCAtMjI5LDcgKzIyOSw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBzd2l0Y2ggKGNh
dGVnb3J5KCkpIHsKICAgICAgICAgY2FzZSBDYWxjTnVtYmVyOgotICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25OdW1iZXI+KG1fdmFsdWUtPmdldEZsb2F0
VmFsdWUoKSk7CisgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxjRXhwcmVz
c2lvbk51bWJlcj4obV92YWx1ZS0+ZmxvYXRWYWx1ZSgpKTsKICAgICAgICAgY2FzZSBDYWxjTGVu
Z3RoOgogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q2FsY0V4cHJlc3Npb25M
ZW5ndGg+KExlbmd0aChtX3ZhbHVlLT5jb21wdXRlTGVuZ3RoPGZsb2F0Pihjb252ZXJzaW9uRGF0
YSksIFdlYkNvcmU6OkZpeGVkKSk7CiAgICAgICAgIGNhc2UgQ2FsY1BlcmNlbnQ6CkBAIC0yNTIs
NyArMjUyLDcgQEAgcHJpdmF0ZToKICAgICBkb3VibGUgZG91YmxlVmFsdWUoKSBjb25zdCBmaW5h
bAogICAgIHsKICAgICAgICAgaWYgKGhhc0RvdWJsZVZhbHVlKHByaW1pdGl2ZVR5cGUoKSkpCi0g
ICAgICAgICAgICByZXR1cm4gbV92YWx1ZS0+Z2V0RG91YmxlVmFsdWUoKTsKKyAgICAgICAgICAg
IHJldHVybiBtX3ZhbHVlLT5kb3VibGVWYWx1ZSgpOwogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQpAQCAtMjY0LDcgKzI2NCw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICByZXR1cm4gbV92YWx1ZS0+Y29tcHV0ZUxlbmd0aDxkb3VibGU+KGNv
bnZlcnNpb25EYXRhKTsKICAgICAgICAgY2FzZSBDYWxjUGVyY2VudDoKICAgICAgICAgY2FzZSBD
YWxjTnVtYmVyOgotICAgICAgICAgICAgcmV0dXJuIG1fdmFsdWUtPmdldERvdWJsZVZhbHVlKCk7
CisgICAgICAgICAgICByZXR1cm4gbV92YWx1ZS0+ZG91YmxlVmFsdWUoKTsKICAgICAgICAgY2Fz
ZSBDYWxjUGVyY2VudExlbmd0aDoKICAgICAgICAgY2FzZSBDYWxjUGVyY2VudE51bWJlcjoKICAg
ICAgICAgY2FzZSBDYWxjQW5nbGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Q2hhcnNldFJ1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDaGFyc2V0UnVsZS5oCmluZGV4
IDViNjgwMTlmYjU5NWUzYWI3ODJkOTNmOTc2ZDc5ZjBmMjgwOGI3ZGUuLjdhNDE0MGNkZTg3YTMy
MGM3YWY5NDMyYWExY2QyNWQ5NWYyNzEyOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NDaGFyc2V0UnVsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDaGFyc2V0UnVs
ZS5oCkBAIC0xOSw4ICsxOSw3IEBACiAgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KICAq
LwogCi0jaWZuZGVmIENTU0NoYXJzZXRSdWxlX2gKLSNkZWZpbmUgQ1NTQ2hhcnNldFJ1bGVfaAor
I3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDU1NSdWxlLmgiCiAKQEAgLTMzLDIyICszMiwxNyBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU0NoYXJzZXRSdWxlKHBh
cmVudCwgZW5jb2RpbmcpKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIH5DU1NDaGFyc2V0UnVsZSgp
IHsgfQotCi0gICAgU3RyaW5nIGNzc1RleHQoKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIHJlYXR0
YWNoKFN0eWxlUnVsZUJhc2UmKSBmaW5hbCB7IH0KLQogICAgIGNvbnN0IFN0cmluZyYgZW5jb2Rp
bmcoKSBjb25zdCB7IHJldHVybiBtX2VuY29kaW5nOyB9Ci0gICAgdm9pZCBzZXRFbmNvZGluZyhj
b25zdCBTdHJpbmcmIGVuY29kaW5nLCBFeGNlcHRpb25Db2RlJikgeyBtX2VuY29kaW5nID0gZW5j
b2Rpbmc7IH0KKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcm
IGVuY29kaW5nKSB7IG1fZW5jb2RpbmcgPSBlbmNvZGluZzsgcmV0dXJuIHsgfTsgfQogCiBwcml2
YXRlOgotICAgIENTU1J1bGU6OlR5cGUgdHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIENIQVJT
RVRfUlVMRTsgfQotCiAgICAgQ1NTQ2hhcnNldFJ1bGUoQ1NTU3R5bGVTaGVldCogcGFyZW50LCBj
b25zdCBTdHJpbmcmIGVuY29kaW5nKTsKIAorICAgIENTU1J1bGU6OlR5cGUgdHlwZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIENIQVJTRVRfUlVMRTsgfQorICAgIFN0cmluZyBjc3NUZXh0KCkgY29u
c3QgZmluYWw7CisgICAgdm9pZCByZWF0dGFjaChTdHlsZVJ1bGVCYXNlJikgZmluYWwgeyB9CisK
ICAgICBTdHJpbmcgbV9lbmNvZGluZzsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmIC8vIENTU0NoYXJzZXRSdWxlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NDaGFyc2V0UnVsZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2hhcnNldFJ1bGUu
aWRsCmluZGV4IGY5OTU4MTdhMWY0YjdiMjU3MGVkMDhiNDg3Y2RlMTllOTcyNmMyZDYuLmRlNDE0
MGJjZGFkNGM2MmM2ODdiMzZmM2Y4NGEzMjYxOTc1MTVkMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NDaGFyc2V0UnVsZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0NoYXJzZXRSdWxlLmlkbApAQCAtMTgsOCArMTgsNiBAQAogICogQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCiAgKi8KIAotLy8gSW50cm9kdWNlZCBpbiBET00gTGV2ZWwgMjoKIGludGVyZmFj
ZSBDU1NDaGFyc2V0UnVsZSA6IENTU1J1bGUgewotICAgIFtTZXR0ZXJNYXlUaHJvd0xlZ2FjeUV4
Y2VwdGlvbl0gYXR0cmlidXRlIERPTVN0cmluZz8gZW5jb2Rpbmc7CisgICAgW1NldHRlck1heVRo
cm93RXhjZXB0aW9uXSBhdHRyaWJ1dGUgRE9NU3RyaW5nPyBlbmNvZGluZzsKIH07Ci0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5k
ZXggNjg1OTEzMWNmZmQyM2M1NjgzM2YyOTgzZDhkNjIzZWFjYzk3ZTNlMC4uNjgwMTM1MmQ2ZTBl
NjUwNGVjZmFhYmVhMzRkMDE4N2Q4NGM4ZTkxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTE2MzYsOSArMTYzNiw5IEBA
IFN0cmluZyBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmNzc1RleHQoKSBjb25zdAogICAg
IHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKIH0KIAotdm9pZCBDU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb246OnNldENzc1RleHQoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYgZWMpCitF
eGNlcHRpb25Pcjx2b2lkPiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OnNldENzc1RleHQo
Y29uc3QgU3RyaW5nJikKIHsKLSAgICBlYyA9IE5PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUjsK
KyAgICByZXR1cm4gRXhjZXB0aW9uIHsgTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSIH07CiB9
CiAKIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Z2V0
Rm9udFNpemVDU1NWYWx1ZVByZWZlcnJpbmdLZXl3b3JkKCkgY29uc3QKQEAgLTQwMDEsNyArNDAw
MSw3IEBAIGJvb2wgQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlNYXRjaGVzKENTU1By
b3BlcnR5SUQgcHJvcGVydHlJRCwgY29uc3QgQ1NTCiAgICAgICAgIGlmIChhdXRvKiBzdHlsZSA9
IG1fbm9kZS0+Y29tcHV0ZWRTdHlsZShtX3BzZXVkb0VsZW1lbnRTcGVjaWZpZXIpKSB7CiAgICAg
ICAgICAgICBpZiAoQ1NTVmFsdWVJRCBzaXplSWRlbnRpZmllciA9IHN0eWxlLT5mb250RGVzY3Jp
cHRpb24oKS5rZXl3b3JkU2l6ZUFzSWRlbnRpZmllcigpKSB7CiAgICAgICAgICAgICAgICAgYXV0
byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVlKTsK
LSAgICAgICAgICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUuaXNWYWx1ZUlEKCkgJiYgcHJpbWl0
aXZlVmFsdWUuZ2V0VmFsdWVJRCgpID09IHNpemVJZGVudGlmaWVyKQorICAgICAgICAgICAgICAg
IGlmIChwcmltaXRpdmVWYWx1ZS5pc1ZhbHVlSUQoKSAmJiBwcmltaXRpdmVWYWx1ZS52YWx1ZUlE
KCkgPT0gc2l6ZUlkZW50aWZpZXIpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC00MTE5LDE1ICs0MTE5LDE0IEBAIGJvb2wgQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjppc1Byb3BlcnR5SW1wbGljaXQoY29uc3QgU3RyaW5n
JikKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uOjpzZXRQcm9wZXJ0eShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmLCBFeGNlcHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPHZvaWQ+IENTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbjo6c2V0UHJvcGVydHkoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJikKIHsKLSAgICBlYyA9IE5PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUjsK
KyAgICByZXR1cm4gRXhjZXB0aW9uIHsgTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSIH07CiB9
CiAKLVN0cmluZyBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OnJlbW92ZVByb3BlcnR5KGNv
bnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8U3RyaW5nPiBDU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb246OnJlbW92ZVByb3BlcnR5KGNvbnN0IFN0cmluZyYpCiB7
Ci0gICAgZWMgPSBOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlI7Ci0gICAgcmV0dXJuIFN0cmlu
ZygpOworICAgIHJldHVybiBFeGNlcHRpb24geyBOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlIg
fTsKIH0KICAgICAKIFJlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
OjpnZXRQcm9wZXJ0eUNTU1ZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEKQpA
QCAtNDE0MCwyMSArNDEzOSwxNyBAQCBTdHJpbmcgQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
OjpnZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlJRCBwcm9wZQogICAgIHJldHVy
biBnZXRQcm9wZXJ0eVZhbHVlKHByb3BlcnR5SUQpOwogfQogCi1ib29sIENTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbjo6c2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eUlELCBjb25zdCBT
dHJpbmcmLCBib29sLCBFeGNlcHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPGJvb2w+IENTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6c2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eUlE
LCBjb25zdCBTdHJpbmcmLCBib29sKQogewotICAgIGVjID0gTk9fTU9ESUZJQ0FUSU9OX0FMTE9X
RURfRVJSOwotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gRXhjZXB0aW9uIHsgTk9fTU9E
SUZJQ0FUSU9OX0FMTE9XRURfRVJSIH07CiB9CiAKLVJlZlB0cjxDU1NWYWx1ZUxpc3Q+IENvbXB1
dGVkU3R5bGVFeHRyYWN0b3I6OmdldEJhY2tncm91bmRTaG9ydGhhbmRWYWx1ZSgpIGNvbnN0CitS
ZWY8Q1NTVmFsdWVMaXN0PiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpnZXRCYWNrZ3JvdW5kU2hv
cnRoYW5kVmFsdWUoKSBjb25zdAogewotICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0eUlEIHBy
b3BlcnRpZXNCZWZvcmVTbGFzaFNlcGVyYXRvcls1XSA9IHsgQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
Q29sb3IsIENTU1Byb3BlcnR5QmFja2dyb3VuZEltYWdlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kUmVwZWF0LCBDU1NQcm9wZXJ0eUJhY2tncm91bmRBdHRhY2htZW50LCAgCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvbiB9OwotICAgIHN0YXRpYyBj
b25zdCBDU1NQcm9wZXJ0eUlEIHByb3BlcnRpZXNBZnRlclNsYXNoU2VwZXJhdG9yWzNdID0geyBD
U1NQcm9wZXJ0eUJhY2tncm91bmRTaXplLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRPcmlnaW4sIAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRDbGlwIH07CisgICAgc3RhdGljIGNvbnN0
IENTU1Byb3BlcnR5SUQgcHJvcGVydGllc0JlZm9yZVNsYXNoU2VwZXJhdG9yWzVdID0geyBDU1NQ
cm9wZXJ0eUJhY2tncm91bmRDb2xvciwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2UsIENTU1By
b3BlcnR5QmFja2dyb3VuZFJlcGVhdCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQXR0YWNobWVudCwg
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb24gfTsKKyAgICBzdGF0aWMgY29uc3QgQ1NTUHJv
cGVydHlJRCBwcm9wZXJ0aWVzQWZ0ZXJTbGFzaFNlcGVyYXRvclszXSA9IHsgQ1NTUHJvcGVydHlC
YWNrZ3JvdW5kU2l6ZSwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kT3JpZ2luLCBDU1NQcm9wZXJ0eUJh
Y2tncm91bmRDbGlwIH07CiAKLSAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFs
dWVMaXN0OjpjcmVhdGVTbGFzaFNlcGFyYXRlZCgpOworICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVl
TGlzdDo6Y3JlYXRlU2xhc2hTZXBhcmF0ZWQoKTsKICAgICBsaXN0LT5hcHBlbmQoKmdldENTU1By
b3BlcnR5VmFsdWVzRm9yU2hvcnRoYW5kUHJvcGVydGllcyhTdHlsZVByb3BlcnR5U2hvcnRoYW5k
KENTU1Byb3BlcnR5QmFja2dyb3VuZCwgcHJvcGVydGllc0JlZm9yZVNsYXNoU2VwZXJhdG9yKSkp
OwogICAgIGxpc3QtPmFwcGVuZCgqZ2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaG9ydGhhbmRQcm9w
ZXJ0aWVzKFN0eWxlUHJvcGVydHlTaG9ydGhhbmQoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kLCBwcm9w
ZXJ0aWVzQWZ0ZXJTbGFzaFNlcGVyYXRvcikpKTsKICAgICByZXR1cm4gbGlzdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaAppbmRleCBhODkx
NzA1Yjg1YjU3NjJiZTQ1ZDhmZjg4NWEzNmU2Y2FjNDM4ODEwLi41NTQyMmVlNzE1ZjU2Y2I3N2Iy
NDk5YzdiNjVhNmJhMGEzMmI0YzNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oCkBAIC0xOCw4ICsxOCw3IEBACiAgKiAwMjExMC0xMzAx
ICBVU0EKICAqLwogCi0jaWZuZGVmIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbl9oCi0jZGVm
aW5lIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbl9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1
ZGUgIkNTU1N0eWxlRGVjbGFyYXRpb24uaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZUNvbnN0YW50
cy5oIgpAQCAtNzgsNyArNzcsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPENTU1ZhbHVlTGlz
dD4gZ2V0Q1NTUHJvcGVydHlWYWx1ZXNGb3JTaG9ydGhhbmRQcm9wZXJ0aWVzKGNvbnN0IFN0eWxl
UHJvcGVydHlTaG9ydGhhbmQmKSBjb25zdDsKICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBnZXRD
U1NQcm9wZXJ0eVZhbHVlc0ZvclNpZGVzU2hvcnRoYW5kKGNvbnN0IFN0eWxlUHJvcGVydHlTaG9y
dGhhbmQmKSBjb25zdDsKLSAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBnZXRCYWNrZ3JvdW5kU2hv
cnRoYW5kVmFsdWUoKSBjb25zdDsKKyAgICBSZWY8Q1NTVmFsdWVMaXN0PiBnZXRCYWNrZ3JvdW5k
U2hvcnRoYW5kVmFsdWUoKSBjb25zdDsKICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBnZXRDU1NQ
cm9wZXJ0eVZhbHVlc0ZvckdyaWRTaG9ydGhhbmQoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFu
ZCYpIGNvbnN0OwogCiAgICAgUmVmUHRyPE5vZGU+IG1fbm9kZTsKQEAgLTExMSwxMyArMTEwLDEz
IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIGdldFByb3BlcnR5UHJpb3JpdHkoY29uc3QgU3RyaW5n
JiBwcm9wZXJ0eU5hbWUpIGZpbmFsOwogICAgIFN0cmluZyBnZXRQcm9wZXJ0eVNob3J0aGFuZChj
b25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkgZmluYWw7CiAgICAgYm9vbCBpc1Byb3BlcnR5SW1w
bGljaXQoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpIGZpbmFsOwotICAgIHZvaWQgc2V0UHJv
cGVydHkoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGNv
bnN0IFN0cmluZyYgcHJpb3JpdHksIEV4Y2VwdGlvbkNvZGUmKSBmaW5hbDsKLSAgICBTdHJpbmcg
cmVtb3ZlUHJvcGVydHkoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIEV4Y2VwdGlvbkNvZGUm
KSBmaW5hbDsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRQcm9wZXJ0eShjb25zdCBTdHJpbmcm
IHByb3BlcnR5TmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBwcmlvcml0
eSkgZmluYWw7CisgICAgRXhjZXB0aW9uT3I8U3RyaW5nPiByZW1vdmVQcm9wZXJ0eShjb25zdCBT
dHJpbmcmIHByb3BlcnR5TmFtZSkgZmluYWw7CiAgICAgU3RyaW5nIGNzc1RleHQoKSBjb25zdCBm
aW5hbDsKLSAgICB2b2lkIHNldENzc1RleHQoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYp
IGZpbmFsOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldENzc1RleHQoY29uc3QgU3RyaW5nJikg
ZmluYWw7CiAgICAgUmVmUHRyPENTU1ZhbHVlPiBnZXRQcm9wZXJ0eUNTU1ZhbHVlSW50ZXJuYWwo
Q1NTUHJvcGVydHlJRCkgZmluYWw7CiAgICAgU3RyaW5nIGdldFByb3BlcnR5VmFsdWVJbnRlcm5h
bChDU1NQcm9wZXJ0eUlEKSBmaW5hbDsKLSAgICBib29sIHNldFByb3BlcnR5SW50ZXJuYWwoQ1NT
UHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQsIEV4Y2VwdGlv
bkNvZGUmKSBmaW5hbDsKKyAgICBFeGNlcHRpb25Pcjxib29sPiBzZXRQcm9wZXJ0eUludGVybmFs
KENTU1Byb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wgaW1wb3J0YW50KSBmaW5h
bDsKICAgICBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gY29weVByb3BlcnRpZXMoKSBjb25z
dCBmaW5hbDsKIAogICAgIFJlZlB0cjxDU1NWYWx1ZT4gZ2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQ
cm9wZXJ0eUlELCBFVXBkYXRlTGF5b3V0ID0gVXBkYXRlTGF5b3V0KSBjb25zdDsKQEAgLTEyOSw1
ICsxMjgsMyBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYgLy8gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Q3Jvc3NmYWRlVmFsdWUuY3BwCmluZGV4IDBjZjc5YmNjNmIxYzg0NDg1NmRhYjFlOGJjMDc3Yzkx
NDJiNTRmNWYuLjMxNDczZDIzMzQxNTY4MWE2ZjYzMjE0YWE5MzVjM2M3N2YzNWUzOTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmNwcApAQCAtODQsNyArODQsNyBAQCBT
dHJpbmcgQ1NTQ3Jvc3NmYWRlVmFsdWU6OmN1c3RvbUNTU1RleHQoKSBjb25zdAogCiBGbG9hdFNp
emUgQ1NTQ3Jvc3NmYWRlVmFsdWU6OmZpeGVkU2l6ZShjb25zdCBSZW5kZXJFbGVtZW50KiByZW5k
ZXJlcikKIHsKLSAgICBmbG9hdCBwZXJjZW50YWdlID0gbV9wZXJjZW50YWdlVmFsdWUtPmdldEZs
b2F0VmFsdWUoKTsKKyAgICBmbG9hdCBwZXJjZW50YWdlID0gbV9wZXJjZW50YWdlVmFsdWUtPmZs
b2F0VmFsdWUoKTsKICAgICBmbG9hdCBpbnZlcnNlUGVyY2VudGFnZSA9IDEgLSBwZXJjZW50YWdl
OwogCiAgICAgLy8gRklYTUU6IFNraXAgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgY2hlY2sgd2hl
biBjcm9zcyBmYWRlIGlzIGFwcGxpZWQgdG8gYW4gZWxlbWVudCBpbiBhIHVzZXIgYWdlbnQgc2hh
ZG93IHRyZWUuCkBAIC0xNjgsNyArMTY4LDcgQEAgUmVmUHRyPEltYWdlPiBDU1NDcm9zc2ZhZGVW
YWx1ZTo6aW1hZ2UoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIGNvbnN0IEZsb2F0U2l6ZSYKICAg
ICBpZiAoIWZyb21JbWFnZSB8fCAhdG9JbWFnZSkKICAgICAgICAgcmV0dXJuIEltYWdlOjpudWxs
SW1hZ2UoKTsKIAotICAgIG1fZ2VuZXJhdGVkSW1hZ2UgPSBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFn
ZTo6Y3JlYXRlKCpmcm9tSW1hZ2UsICp0b0ltYWdlLCBtX3BlcmNlbnRhZ2VWYWx1ZS0+Z2V0Rmxv
YXRWYWx1ZSgpLCBmaXhlZFNpemUocmVuZGVyZXIpLCBzaXplKTsKKyAgICBtX2dlbmVyYXRlZElt
YWdlID0gQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmNyZWF0ZSgqZnJvbUltYWdlLCAqdG9JbWFn
ZSwgbV9wZXJjZW50YWdlVmFsdWUtPmZsb2F0VmFsdWUoKSwgZml4ZWRTaXplKHJlbmRlcmVyKSwg
c2l6ZSk7CiAKICAgICByZXR1cm4gbV9nZW5lcmF0ZWRJbWFnZTsKIH0KQEAgLTIwMiwxMCArMjAy
LDEwIEBAIFJlZlB0cjxDU1NDcm9zc2ZhZGVWYWx1ZT4gQ1NTQ3Jvc3NmYWRlVmFsdWU6OmJsZW5k
KGNvbnN0IENTU0Nyb3NzZmFkZVZhbHVlJiBmcm9tCiAgICAgYXV0byBmcm9tSW1hZ2VWYWx1ZSA9
IENTU0ltYWdlVmFsdWU6OmNyZWF0ZSgqbV9jYWNoZWRGcm9tSW1hZ2UpOwogICAgIGF1dG8gdG9J
bWFnZVZhbHVlID0gQ1NTSW1hZ2VWYWx1ZTo6Y3JlYXRlKCptX2NhY2hlZFRvSW1hZ2UpOwogCi0g
ICAgZG91YmxlIGZyb21QZXJjZW50YWdlID0gZnJvbS5tX3BlcmNlbnRhZ2VWYWx1ZS0+Z2V0RG91
YmxlVmFsdWUoKTsKKyAgICBkb3VibGUgZnJvbVBlcmNlbnRhZ2UgPSBmcm9tLm1fcGVyY2VudGFn
ZVZhbHVlLT5kb3VibGVWYWx1ZSgpOwogICAgIGlmIChmcm9tLm1fcGVyY2VudGFnZVZhbHVlLT5p
c1BlcmNlbnRhZ2UoKSkKICAgICAgICAgZnJvbVBlcmNlbnRhZ2UgLz0gMTAwLjA7Ci0gICAgZG91
YmxlIHRvUGVyY2VudGFnZSA9IG1fcGVyY2VudGFnZVZhbHVlLT5nZXREb3VibGVWYWx1ZSgpOwor
ICAgIGRvdWJsZSB0b1BlcmNlbnRhZ2UgPSBtX3BlcmNlbnRhZ2VWYWx1ZS0+ZG91YmxlVmFsdWUo
KTsKICAgICBpZiAobV9wZXJjZW50YWdlVmFsdWUtPmlzUGVyY2VudGFnZSgpKQogICAgICAgICB0
b1BlcmNlbnRhZ2UgLz0gMTAwLjA7CiAgICAgYXV0byBwZXJjZW50YWdlVmFsdWUgPSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Y3JlYXRlKGJsZW5kRnVuYyhmcm9tUGVyY2VudGFnZSwgdG9QZXJjZW50YWdl
LCBwcm9ncmVzcyksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRm9udEZhY2UuY3BwCmluZGV4IDUxODJhZjdiMjdhMTM3ZjQ0NjYzMGQ3YTQ2OGQ0MDgzYzFl
ODAxOGYuLmE3NTQwMWJmNTJiOGE0NTQxMmI3MTliNDk0ZDJmZTU5Y2RhMmNkYTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ZvbnRGYWNlLmNwcApAQCAtMTI5LDcgKzEyOSw3IEBAIE9wdGlvbmFsPEZvbnRU
cmFpdHNNYXNrPiBDU1NGb250RmFjZTo6Y2FsY3VsYXRlU3R5bGVNYXNrKENTU1ZhbHVlJiBzdHls
ZSkKICAgICBpZiAoIWlzPENTU1ByaW1pdGl2ZVZhbHVlPihzdHlsZSkpCiAgICAgICAgIHJldHVy
biBOdWxsb3B0OwogCi0gICAgc3dpdGNoIChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oc3R5
bGUpLmdldFZhbHVlSUQoKSkgeworICAgIHN3aXRjaCAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWU+KHN0eWxlKS52YWx1ZUlEKCkpIHsKICAgICBjYXNlIENTU1ZhbHVlTm9ybWFsOgogICAgICAg
ICByZXR1cm4gRm9udFN0eWxlTm9ybWFsTWFzazsKICAgICBjYXNlIENTU1ZhbHVlSXRhbGljOgpA
QCAtMTY0LDcgKzE2NCw3IEBAIE9wdGlvbmFsPEZvbnRUcmFpdHNNYXNrPiBDU1NGb250RmFjZTo6
Y2FsY3VsYXRlV2VpZ2h0TWFzayhDU1NWYWx1ZSYgd2VpZ2h0KQogICAgIGlmICghaXM8Q1NTUHJp
bWl0aXZlVmFsdWU+KHdlaWdodCkpCiAgICAgICAgIHJldHVybiBOdWxsb3B0OwogCi0gICAgc3dp
dGNoIChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4od2VpZ2h0KS5nZXRWYWx1ZUlEKCkpIHsK
KyAgICBzd2l0Y2ggKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih3ZWlnaHQpLnZhbHVlSUQo
KSkgewogICAgIGNhc2UgQ1NTVmFsdWVCb2xkOgogICAgIGNhc2UgQ1NTVmFsdWVCb2xkZXI6CiAg
ICAgY2FzZSBDU1NWYWx1ZTcwMDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NG
b250RmFjZVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTZXQuY3BwCmlu
ZGV4IDllOWQxNzcyODhmYWFjNGI5NjgyNjYxMzU1ZDZkNTRiODM3NDBkYzAuLjUyMmFjODZhOTRl
OWJiYmIzYjhkM2UyMTE1Y2Y2NjkwMGY3MzUzMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGb250RmFjZVNldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRG
YWNlU2V0LmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkNTU1NlZ21lbnRlZEZvbnRG
YWNlLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVMaXN0LmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVQb29s
LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkZvbnRDYWNoZS5oIgog
I2luY2x1ZGUgIlN0eWxlUHJvcGVydGllcy5oIgogCkBAIC0xMjgsNyArMTI5LDcgQEAgU3RyaW5n
IENTU0ZvbnRGYWNlU2V0OjpmYW1pbHlOYW1lRnJvbVByaW1pdGl2ZShjb25zdCBDU1NQcmltaXRp
dmVWYWx1ZSYgdmFsdWUpCiAKICAgICAvLyBXZSBuZWVkIHRvIHVzZSB0aGUgcmF3IHRleHQgZm9y
IGFsbCB0aGUgZ2VuZXJpYyBmYW1pbHkgdHlwZXMsIHNpbmNlIEBmb250LWZhY2UgaXMgYSB3YXkg
b2YgYWN0dWFsbHkKICAgICAvLyBkZWZpbmluZyB3aGF0IGZvbnQgdG8gdXNlIGZvciB0aG9zZSB0
eXBlcy4KLSAgICBzd2l0Y2ggKHZhbHVlLmdldFZhbHVlSUQoKSkgeworICAgIHN3aXRjaCAodmFs
dWUudmFsdWVJRCgpKSB7CiAgICAgY2FzZSBDU1NWYWx1ZVNlcmlmOgogICAgICAgICByZXR1cm4g
c2VyaWZGYW1pbHk7CiAgICAgY2FzZSBDU1NWYWx1ZVNhbnNTZXJpZjoKQEAgLTI0Nyw3ICsyNDgs
NyBAQCB2b2lkIENTU0ZvbnRGYWNlU2V0OjpyZW1vdmUoY29uc3QgQ1NTRm9udEZhY2UmIGZhY2Up
CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLUNTU0ZvbnRGYWNlKiBDU1NGb250RmFj
ZVNldDo6bG9va3VwQnlDU1NDb25uZWN0aW9uKFN0eWxlUnVsZUZvbnRGYWNlJiB0YXJnZXQpCitD
U1NGb250RmFjZSogQ1NTRm9udEZhY2VTZXQ6Omxvb2tVcEJ5Q1NTQ29ubmVjdGlvbihTdHlsZVJ1
bGVGb250RmFjZSYgdGFyZ2V0KQogewogICAgIHJldHVybiBtX2NvbnN0aXR1ZW50Q1NTQ29ubmVj
dGlvbnMuZ2V0KCZ0YXJnZXQpOwogfQpAQCAtMzI0LDM1ICszMjUsMjggQEAgc3RhdGljIEhhc2hT
ZXQ8VUNoYXIzMj4gY29kZVBvaW50c0Zyb21TdHJpbmcoU3RyaW5nVmlldyBzdHJpbmdWaWV3KQog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPENT
U0ZvbnRGYWNlPj4gQ1NTRm9udEZhY2VTZXQ6Om1hdGNoaW5nRmFjZXMoY29uc3QgU3RyaW5nJiBm
b250LCBjb25zdCBTdHJpbmcmIHN0cmluZywgRXhjZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRpb25P
cjxWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxDU1NGb250RmFjZT4+PiBDU1NGb250RmFj
ZVNldDo6bWF0Y2hpbmdGYWNlcyhjb25zdCBTdHJpbmcmIGZvbnQsIGNvbnN0IFN0cmluZyYgc3Ry
aW5nKQogewotICAgIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPENTU0ZvbnRGYWNlPj4g
cmVzdWx0OwogICAgIGF1dG8gc3R5bGUgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUo
KTsKICAgICBhdXRvIHBhcnNlUmVzdWx0ID0gQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKHN0eWxlLCBD
U1NQcm9wZXJ0eUZvbnQsIGZvbnQsIHRydWUsIEhUTUxTdGFuZGFyZE1vZGUsIG51bGxwdHIpOwot
ICAgIGlmIChwYXJzZVJlc3VsdCA9PSBDU1NQYXJzZXI6OlBhcnNlUmVzdWx0OjpFcnJvcikgewot
ICAgICAgICBlYyA9IFNZTlRBWF9FUlI7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQor
ICAgIGlmIChwYXJzZVJlc3VsdCA9PSBDU1NQYXJzZXI6OlBhcnNlUmVzdWx0OjpFcnJvcikKKyAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNZTlRBWF9FUlIgfTsKIAogICAgIEZvbnRUcmFpdHNN
YXNrIGZvbnRUcmFpdHNNYXNrOwogICAgIGlmIChhdXRvIG1hc2tPcHRpb25hbCA9IGNvbXB1dGVG
b250VHJhaXRzTWFzayhzdHlsZS5nZXQoKSkpCiAgICAgICAgIGZvbnRUcmFpdHNNYXNrID0gbWFz
a09wdGlvbmFsLnZhbHVlKCk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGVjID0gU1lOVEFYX0VSUjsK
LSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9CisgICAgZWxzZQorICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgU1lOVEFYX0VSUiB9OwogCi0gICAgUmVmUHRyPENTU1ZhbHVlPiBmYW1pbHkg
PSBzdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUZvbnRGYW1pbHkpOwotICAg
IGlmICghaXM8Q1NTVmFsdWVMaXN0PihmYW1pbHkuZ2V0KCkpKSB7Ci0gICAgICAgIGVjID0gU1lO
VEFYX0VSUjsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9CisgICAgYXV0byBmYW1pbHkg
PSBzdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUZvbnRGYW1pbHkpOworICAg
IGlmICghaXM8Q1NTVmFsdWVMaXN0PihmYW1pbHkuZ2V0KCkpKQorICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgU1lOVEFYX0VSUiB9OwogICAgIENTU1ZhbHVlTGlzdCYgZmFtaWx5TGlzdCA9IGRv
d25jYXN0PENTU1ZhbHVlTGlzdD4oKmZhbWlseSk7CiAKICAgICBIYXNoU2V0PEF0b21pY1N0cmlu
Zz4gdW5pcXVlRmFtaWxpZXM7CiAgICAgVmVjdG9yPEF0b21pY1N0cmluZz4gZmFtaWx5T3JkZXI7
CiAgICAgZm9yIChhdXRvJiBmYW1pbHkgOiBmYW1pbHlMaXN0KSB7Ci0gICAgICAgIGNvbnN0IENT
U1ByaW1pdGl2ZVZhbHVlJiBwcmltaXRpdmUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4o
ZmFtaWx5LmdldCgpKTsKKyAgICAgICAgYXV0byYgcHJpbWl0aXZlID0gZG93bmNhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWU+KGZhbWlseS5nZXQoKSk7CiAgICAgICAgIGlmICghcHJpbWl0aXZlLmlzRm9u
dEZhbWlseSgpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmICh1bmlxdWVGYW1p
bGllcy5hZGQocHJpbWl0aXZlLmZvbnRGYW1pbHkoKS5mYW1pbHlOYW1lKS5pc05ld0VudHJ5KQpA
QCAtMzYzLDcgKzM1Nyw3IEBAIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPENTU0ZvbnRG
YWNlPj4gQ1NTRm9udEZhY2VTZXQ6Om1hdGNoaW5nRmFjZXMoY29uc3QKICAgICBmb3IgKGF1dG8g
Y29kZVBvaW50IDogY29kZVBvaW50c0Zyb21TdHJpbmcoc3RyaW5nKSkgewogICAgICAgICBib29s
IGZvdW5kID0gZmFsc2U7CiAgICAgICAgIGZvciAoYXV0byYgZmFtaWx5IDogZmFtaWx5T3JkZXIp
IHsKLSAgICAgICAgICAgIENTU1NlZ21lbnRlZEZvbnRGYWNlKiBmYWNlcyA9IGdldEZvbnRGYWNl
KGZvbnRUcmFpdHNNYXNrLCBmYW1pbHkpOworICAgICAgICAgICAgYXV0byogZmFjZXMgPSBmb250
RmFjZShmb250VHJhaXRzTWFzaywgZmFtaWx5KTsKICAgICAgICAgICAgIGlmICghZmFjZXMpCiAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIGNvbnN0aXR1
ZW50RmFjZSA6IGZhY2VzLT5jb25zdGl0dWVudEZhY2VzKCkpIHsKQEAgLTM3OCwxOSArMzcyLDIw
IEBAIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPENTU0ZvbnRGYWNlPj4gQ1NTRm9udEZh
Y2VTZXQ6Om1hdGNoaW5nRmFjZXMoY29uc3QKICAgICAgICAgfQogICAgIH0KIAorICAgIFZlY3Rv
cjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPENTU0ZvbnRGYWNlPj4gcmVzdWx0OworICAgIHJlc3Vs
dC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHJlc3VsdENvbnN0aXR1ZW50cy5zaXplKCkpOwogICAg
IGZvciAoYXV0byogY29uc3RpdHVlbnQgOiByZXN1bHRDb25zdGl0dWVudHMpCi0gICAgICAgIHJl
c3VsdC5hcHBlbmQoKmNvbnN0aXR1ZW50KTsKLQotICAgIHJldHVybiByZXN1bHQ7CisgICAgICAg
IHJlc3VsdC51bmNoZWNrZWRBcHBlbmQoKmNvbnN0aXR1ZW50KTsKKyAgICByZXR1cm4gV1RGTW92
ZShyZXN1bHQpOwogfQogCi1ib29sIENTU0ZvbnRGYWNlU2V0OjpjaGVjayhjb25zdCBTdHJpbmcm
IGZvbnQsIGNvbnN0IFN0cmluZyYgdGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRpb25P
cjxib29sPiBDU1NGb250RmFjZVNldDo6Y2hlY2soY29uc3QgU3RyaW5nJiBmb250LCBjb25zdCBT
dHJpbmcmIHRleHQpCiB7Ci0gICAgYXV0byBtYXRjaGluZ0ZhY2VzID0gdGhpcy0+bWF0Y2hpbmdG
YWNlcyhmb250LCB0ZXh0LCBlYyk7Ci0gICAgaWYgKGVjKQotICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgYXV0byBtYXRjaGluZ0ZhY2VzID0gdGhpcy0+bWF0Y2hpbmdGYWNlcyhmb250LCB0ZXh0
KTsKKyAgICBpZiAobWF0Y2hpbmdGYWNlcy5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJu
IG1hdGNoaW5nRmFjZXMucmVsZWFzZUV4Y2VwdGlvbigpOwogCi0gICAgZm9yIChhdXRvJiBmYWNl
IDogbWF0Y2hpbmdGYWNlcykgeworICAgIGZvciAoYXV0byYgZmFjZSA6IG1hdGNoaW5nRmFjZXMu
cmVsZWFzZVJldHVyblZhbHVlKCkpIHsKICAgICAgICAgaWYgKGZhY2UuZ2V0KCkuc3RhdHVzKCkg
PT0gQ1NTRm9udEZhY2U6OlN0YXR1czo6UGVuZGluZykKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CkBAIC00NTYsNyArNDUxLDcgQEAgc3RhdGljIGJvb2wgZm9udEZhY2VDb21wYXJh
dG9yKEZvbnRUcmFpdHNNYXNrIGRlc2lyZWRUcmFpdHNNYXNrRm9yQ29tcGFyaXNvbiwgY28KICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLUNTU1NlZ21lbnRlZEZvbnRGYWNlKiBDU1NGb250RmFjZVNl
dDo6Z2V0Rm9udEZhY2UoRm9udFRyYWl0c01hc2sgdHJhaXRzTWFzaywgY29uc3QgQXRvbWljU3Ry
aW5nJiBmYW1pbHkpCitDU1NTZWdtZW50ZWRGb250RmFjZSogQ1NTRm9udEZhY2VTZXQ6OmZvbnRG
YWNlKEZvbnRUcmFpdHNNYXNrIHRyYWl0c01hc2ssIGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5
KQogewogICAgIGF1dG8gaXRlcmF0b3IgPSBtX2ZhY2VzTG9va3VwVGFibGUuZmluZChmYW1pbHkp
OwogICAgIGlmIChpdGVyYXRvciA9PSBtX2ZhY2VzTG9va3VwVGFibGUuZW5kKCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTZXQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGb250RmFjZVNldC5oCmluZGV4IGNkZjg4YmE0ZDY2ZjM3ZDM0Y2I5MGEzNzhmMTFm
OTg2NjIxYTM5NzEuLjc5MTM0MDJmZDYyOGZiODQxMzdiNDFmMzRhMjU0OWMwMDA2NTVjMWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNldC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNldC5oCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKLSNpZm5kZWYgQ1NTRm9udEZhY2VTZXRfaAotI2RlZmluZSBDU1NGb250
RmFjZVNldF9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNTU0ZvbnRGYWNlLmgiCiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTY0LDIzICs2MywyMCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBjbGVhcigpOwogICAgIENTU0ZvbnRGYWNlJiBvcGVyYXRvcltdKHNpemVfdCBpKTsKIAotICAg
IENTU0ZvbnRGYWNlKiBsb29rdXBCeUNTU0Nvbm5lY3Rpb24oU3R5bGVSdWxlRm9udEZhY2UmKTsK
KyAgICBDU1NGb250RmFjZSogbG9va1VwQnlDU1NDb25uZWN0aW9uKFN0eWxlUnVsZUZvbnRGYWNl
Jik7CiAKLSAgICBib29sIGNoZWNrKGNvbnN0IFN0cmluZyYgZm9udCwgY29uc3QgU3RyaW5nJiB0
ZXh0LCBFeGNlcHRpb25Db2RlJik7CisgICAgRXhjZXB0aW9uT3I8Ym9vbD4gY2hlY2soY29uc3Qg
U3RyaW5nJiBmb250LCBjb25zdCBTdHJpbmcmIHRleHQpOwogCi0gICAgQ1NTU2VnbWVudGVkRm9u
dEZhY2UqIGdldEZvbnRGYWNlKEZvbnRUcmFpdHNNYXNrLCBjb25zdCBBdG9taWNTdHJpbmcmIGZh
bWlseSk7CisgICAgQ1NTU2VnbWVudGVkRm9udEZhY2UqIGZvbnRGYWNlKEZvbnRUcmFpdHNNYXNr
LCBjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSk7CiAKLSAgICBlbnVtIGNsYXNzIFN0YXR1cyB7
Ci0gICAgICAgIExvYWRpbmcsCi0gICAgICAgIExvYWRlZAotICAgIH07CisgICAgZW51bSBjbGFz
cyBTdGF0dXMgeyBMb2FkaW5nLCBMb2FkZWQgfTsKICAgICBTdGF0dXMgc3RhdHVzKCkgY29uc3Qg
eyByZXR1cm4gbV9zdGF0dXM7IH0KIAotICAgIFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVy
PENTU0ZvbnRGYWNlPj4gbWF0Y2hpbmdGYWNlcyhjb25zdCBTdHJpbmcmIGZvbnQsIGNvbnN0IFN0
cmluZyYgdGV4dCwgRXhjZXB0aW9uQ29kZSYpOworICAgIEV4Y2VwdGlvbk9yPFZlY3RvcjxzdGQ6
OnJlZmVyZW5jZV93cmFwcGVyPENTU0ZvbnRGYWNlPj4+IG1hdGNoaW5nRmFjZXMoY29uc3QgU3Ry
aW5nJiBmb250LCBjb25zdCBTdHJpbmcmIHRleHQpOwogCiAgICAgLy8gQ1NTRm9udEZhY2U6OkNs
aWVudCBuZWVkcyB0byBiZSBhYmxlIHRvIGJlIGhlbGQgaW4gYSBSZWZQdHIuCi0gICAgdm9pZCBy
ZWYoKSBvdmVycmlkZSB7IFJlZkNvdW50ZWQ8Q1NTRm9udEZhY2VTZXQ+OjpyZWYoKTsgfQotICAg
IHZvaWQgZGVyZWYoKSBvdmVycmlkZSB7IFJlZkNvdW50ZWQ8Q1NTRm9udEZhY2VTZXQ+OjpkZXJl
ZigpOyB9CisgICAgdm9pZCByZWYoKSBmaW5hbCB7IFJlZkNvdW50ZWQ6OnJlZigpOyB9CisgICAg
dm9pZCBkZXJlZigpIGZpbmFsIHsgUmVmQ291bnRlZDo6ZGVyZWYoKTsgfQogCiBwcml2YXRlOgog
ICAgIENTU0ZvbnRGYWNlU2V0KCk7CkBAIC05MSw4ICs4Nyw4IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBpbmNyZW1lbnRBY3RpdmVDb3VudCgpOwogICAgIHZvaWQgZGVjcmVtZW50QWN0aXZlQ291bnQo
KTsKIAotICAgIHZvaWQgZm9udFN0YXRlQ2hhbmdlZChDU1NGb250RmFjZSYsIENTU0ZvbnRGYWNl
OjpTdGF0dXMgb2xkU3RhdGUsIENTU0ZvbnRGYWNlOjpTdGF0dXMgbmV3U3RhdGUpIG92ZXJyaWRl
OwotICAgIHZvaWQgZm9udFByb3BlcnR5Q2hhbmdlZChDU1NGb250RmFjZSYsIENTU1ZhbHVlTGlz
dCogb2xkRmFtaWxpZXMgPSBudWxscHRyKSBvdmVycmlkZTsKKyAgICB2b2lkIGZvbnRTdGF0ZUNo
YW5nZWQoQ1NTRm9udEZhY2UmLCBDU1NGb250RmFjZTo6U3RhdHVzIG9sZFN0YXRlLCBDU1NGb250
RmFjZTo6U3RhdHVzIG5ld1N0YXRlKSBmaW5hbDsKKyAgICB2b2lkIGZvbnRQcm9wZXJ0eUNoYW5n
ZWQoQ1NTRm9udEZhY2UmLCBDU1NWYWx1ZUxpc3QqIG9sZEZhbWlsaWVzID0gbnVsbHB0cikgZmlu
YWw7CiAKICAgICB2b2lkIGVuc3VyZUxvY2FsRm9udEZhY2VzRm9yRmFtaWx5UmVnaXN0ZXJlZChj
b25zdCBTdHJpbmcmKTsKIApAQCAtMTExLDUgKzEwNywzIEBAIHByaXZhdGU6CiB9OwogCiB9Ci0K
LSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcAppbmRleCA1ZWUwODcy
MGI2YjkwMWI2Y2U1M2ZhMWJhNTE1N2Y4NDIyMWI1MjFmLi5iNGVjNDRkN2RhNzgzOTg2MzllN2Ez
NDIzZGVmMmE5OTI2NmYxOWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9u
dFNlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNw
cApAQCAtMjA1LDcgKzIwNSw3IEBAIHZvaWQgQ1NTRm9udFNlbGVjdG9yOjphZGRGb250RmFjZVJ1
bGUoU3R5bGVSdWxlRm9udEZhY2UmIGZvbnRGYWNlUnVsZSwgYm9vbCBpc0luCiAgICAgaWYgKGZv
bnRGYWNlLT5hbGxTb3VyY2VzRmFpbGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChS
ZWZQdHI8Q1NTRm9udEZhY2U+IGV4aXN0aW5nRmFjZSA9IG1fY3NzRm9udEZhY2VTZXQtPmxvb2t1
cEJ5Q1NTQ29ubmVjdGlvbihmb250RmFjZVJ1bGUpKSB7CisgICAgaWYgKFJlZlB0cjxDU1NGb250
RmFjZT4gZXhpc3RpbmdGYWNlID0gbV9jc3NGb250RmFjZVNldC0+bG9va1VwQnlDU1NDb25uZWN0
aW9uKGZvbnRGYWNlUnVsZSkpIHsKICAgICAgICAgbV9jc3NGb250RmFjZVNldC0+cmVtb3ZlKCpl
eGlzdGluZ0ZhY2UpOwogICAgICAgICBpZiAoYXV0byogZXhpc3RpbmdXcmFwcGVyID0gZXhpc3Rp
bmdGYWNlLT5leGlzdGluZ1dyYXBwZXIoKSkKICAgICAgICAgICAgIGV4aXN0aW5nV3JhcHBlci0+
YWRvcHQoZm9udEZhY2UuZ2V0KCkpOwpAQCAtMjg2LDcgKzI4Niw3IEBAIEZvbnRSYW5nZXMgQ1NT
Rm9udFNlbGVjdG9yOjpmb250UmFuZ2VzRm9yRmFtaWx5KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYg
Zm9udERlc2NyCiAgICAgYm9vbCByZXNvbHZlR2VuZXJpY0ZhbWlseUZpcnN0ID0gZmFtaWx5TmFt
ZSA9PSBzdGFuZGFyZEZhbWlseTsKIAogICAgIEF0b21pY1N0cmluZyBmYW1pbHlGb3JMb29rdXAg
PSByZXNvbHZlR2VuZXJpY0ZhbWlseUZpcnN0ID8gcmVzb2x2ZUdlbmVyaWNGYW1pbHkobV9kb2N1
bWVudCwgZm9udERlc2NyaXB0aW9uLCBmYW1pbHlOYW1lKSA6IGZhbWlseU5hbWU7Ci0gICAgQ1NT
U2VnbWVudGVkRm9udEZhY2UqIGZhY2UgPSBtX2Nzc0ZvbnRGYWNlU2V0LT5nZXRGb250RmFjZShm
b250RGVzY3JpcHRpb24udHJhaXRzTWFzaygpLCBmYW1pbHlGb3JMb29rdXApOworICAgIGF1dG8q
IGZhY2UgPSBtX2Nzc0ZvbnRGYWNlU2V0LT5mb250RmFjZShmb250RGVzY3JpcHRpb24udHJhaXRz
TWFzaygpLCBmYW1pbHlGb3JMb29rdXApOwogICAgIGlmICghZmFjZSkgewogICAgICAgICBpZiAo
IXJlc29sdmVHZW5lcmljRmFtaWx5Rmlyc3QpCiAgICAgICAgICAgICBmYW1pbHlGb3JMb29rdXAg
PSByZXNvbHZlR2VuZXJpY0ZhbWlseShtX2RvY3VtZW50LCBmb250RGVzY3JpcHRpb24sIGZhbWls
eU5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwCmluZGV4IDVjYWEy
NDEzNWMyNzM2ZmVlZmJhYjA5YTI0ZDc3NTBlY2JhMGVmYjcuLjU5NTFjYWJmNGZhNTczM2IzODc4
NjhhZmE1MGYwYzhkZGQxMTkwM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NH
cmFkaWVudFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1
ZS5jcHAKQEAgLTc1LDggKzc1LDggQEAgUmVmUHRyPEltYWdlPiBDU1NHcmFkaWVudFZhbHVlOjpp
bWFnZShSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgY29uc3QgRmxvYXRTaXplJgogLy8gU2hvdWxk
IG9ubHkgZXZlciBiZSBjYWxsZWQgZm9yIGRlcHJlY2F0ZWQgZ3JhZGllbnRzLgogc3RhdGljIGlu
bGluZSBib29sIGNvbXBhcmVTdG9wcyhjb25zdCBDU1NHcmFkaWVudENvbG9yU3RvcCYgYSwgY29u
c3QgQ1NTR3JhZGllbnRDb2xvclN0b3AmIGIpCiB7Ci0gICAgZG91YmxlIGFWYWwgPSBhLm1fcG9z
aXRpb24tPmdldERvdWJsZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKLSAg
ICBkb3VibGUgYlZhbCA9IGIubV9wb3NpdGlvbi0+Z2V0RG91YmxlVmFsdWUoQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19OVU1CRVIpOworICAgIGRvdWJsZSBhVmFsID0gYS5tX3Bvc2l0aW9uLT5kb3Vi
bGVWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7CisgICAgZG91YmxlIGJWYWwg
PSBiLm1fcG9zaXRpb24tPmRvdWJsZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVS
KTsKIAogICAgIHJldHVybiBhVmFsIDwgYlZhbDsKIH0KQEAgLTE2MCw5ICsxNjAsOSBAQCB2b2lk
IENTU0dyYWRpZW50VmFsdWU6OmFkZFN0b3BzKEdyYWRpZW50JiBncmFkaWVudCwgY29uc3QgQ1NT
VG9MZW5ndGhDb252ZXJzaW9uRAogCiAgICAgICAgICAgICBmbG9hdCBvZmZzZXQ7CiAgICAgICAg
ICAgICBpZiAoc3RvcC5tX3Bvc2l0aW9uLT5pc1BlcmNlbnRhZ2UoKSkKLSAgICAgICAgICAgICAg
ICBvZmZzZXQgPSBzdG9wLm1fcG9zaXRpb24tPmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19QRVJDRU5UQUdFKSAvIDEwMDsKKyAgICAgICAgICAgICAgICBvZmZzZXQgPSBzdG9w
Lm1fcG9zaXRpb24tPmZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdF
KSAvIDEwMDsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBvZmZzZXQgPSBzdG9w
Lm1fcG9zaXRpb24tPmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIp
OworICAgICAgICAgICAgICAgIG9mZnNldCA9IHN0b3AubV9wb3NpdGlvbi0+ZmxvYXRWYWx1ZShD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7CiAKICAgICAgICAgICAgIGdyYWRpZW50LmFk
ZENvbG9yU3RvcChvZmZzZXQsIHN0b3AubV9yZXNvbHZlZENvbG9yKTsKICAgICAgICAgfQpAQCAt
MTk1LDcgKzE5NSw3IEBAIHZvaWQgQ1NTR3JhZGllbnRWYWx1ZTo6YWRkU3RvcHMoR3JhZGllbnQm
IGdyYWRpZW50LCBjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25ECiAgICAgICAgIGlmIChzdG9w
Lm1fcG9zaXRpb24pIHsKICAgICAgICAgICAgIGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJiBwb3Np
dGlvblZhbHVlID0gKnN0b3AubV9wb3NpdGlvbjsKICAgICAgICAgICAgIGlmIChwb3NpdGlvblZh
bHVlLmlzUGVyY2VudGFnZSgpKQotICAgICAgICAgICAgICAgIHN0b3BzW2ldLm9mZnNldCA9IHBv
c2l0aW9uVmFsdWUuZ2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRB
R0UpIC8gMTAwOworICAgICAgICAgICAgICAgIHN0b3BzW2ldLm9mZnNldCA9IHBvc2l0aW9uVmFs
dWUuZmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpIC8gMTAwOwog
ICAgICAgICAgICAgZWxzZSBpZiAocG9zaXRpb25WYWx1ZS5pc0xlbmd0aCgpIHx8IHBvc2l0aW9u
VmFsdWUuaXNWaWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgoKSB8fCBwb3NpdGlvblZhbHVlLmlzQ2Fs
Y3VsYXRlZFBlcmNlbnRhZ2VXaXRoTGVuZ3RoKCkpIHsKICAgICAgICAgICAgICAgICBpZiAoIWNv
bXB1dGVkR3JhZGllbnRMZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAgRmxvYXRTaXplIGdy
YWRpZW50U2l6ZShncmFkaWVudFN0YXJ0IC0gZ3JhZGllbnRFbmQpOwpAQCAtNDk3LDE4ICs0OTcs
MTggQEAgdm9pZCBDU1NHcmFkaWVudFZhbHVlOjphZGRTdG9wcyhHcmFkaWVudCYgZ3JhZGllbnQs
IGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkQKIHN0YXRpYyBmbG9hdCBwb3NpdGlvbkZyb21W
YWx1ZShDU1NQcmltaXRpdmVWYWx1ZSYgdmFsdWUsIGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lv
bkRhdGEmIGNvbnZlcnNpb25EYXRhLCBjb25zdCBGbG9hdFNpemUmIHNpemUsIGJvb2wgaXNIb3Jp
em9udGFsKQogewogICAgIGlmICh2YWx1ZS5pc051bWJlcigpKQotICAgICAgICByZXR1cm4gdmFs
dWUuZ2V0RmxvYXRWYWx1ZSgpICogY29udmVyc2lvbkRhdGEuem9vbSgpOworICAgICAgICByZXR1
cm4gdmFsdWUuZmxvYXRWYWx1ZSgpICogY29udmVyc2lvbkRhdGEuem9vbSgpOwogCiAgICAgaW50
IGVkZ2VEaXN0YW5jZSA9IGlzSG9yaXpvbnRhbCA/IHNpemUud2lkdGgoKSA6IHNpemUuaGVpZ2h0
KCk7CiAgICAgaWYgKHZhbHVlLmlzUGVyY2VudGFnZSgpKQotICAgICAgICByZXR1cm4gdmFsdWUu
Z2V0RmxvYXRWYWx1ZSgpIC8gMTAwLmYgKiBlZGdlRGlzdGFuY2U7CisgICAgICAgIHJldHVybiB2
YWx1ZS5mbG9hdFZhbHVlKCkgLyAxMDAuZiAqIGVkZ2VEaXN0YW5jZTsKIAogICAgIGlmICh2YWx1
ZS5pc0NhbGN1bGF0ZWRQZXJjZW50YWdlV2l0aExlbmd0aCgpKSB7CiAgICAgICAgIFJlZjxDYWxj
dWxhdGlvblZhbHVlPiBjYWxjdWxhdGlvblZhbHVlIHsgdmFsdWUuY3NzQ2FsY1ZhbHVlKCktPmNy
ZWF0ZUNhbGN1bGF0aW9uVmFsdWUoY29udmVyc2lvbkRhdGEpIH07CiAgICAgICAgIHJldHVybiBj
YWxjdWxhdGlvblZhbHVlLT5ldmFsdWF0ZShlZGdlRGlzdGFuY2UpOwogICAgIH0KIAotICAgIHN3
aXRjaCAodmFsdWUuZ2V0VmFsdWVJRCgpKSB7CisgICAgc3dpdGNoICh2YWx1ZS52YWx1ZUlEKCkp
IHsKICAgICBjYXNlIENTU1ZhbHVlVG9wOgogICAgICAgICBBU1NFUlQoIWlzSG9yaXpvbnRhbCk7
CiAgICAgICAgIHJldHVybiAwOwpAQCAtNTgxLDIwICs1ODEsMjAgQEAgU3RyaW5nIENTU0xpbmVh
ckdyYWRpZW50VmFsdWU6OmN1c3RvbUNTU1RleHQoKSBjb25zdAogICAgICAgICByZXN1bHQuYXBw
ZW5kKCcgJyk7CiAgICAgICAgIHJlc3VsdC5hcHBlbmQobV9zZWNvbmRZLT5jc3NUZXh0KCkpOwog
Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3N0b3BzLnNpemUoKTsgaSsrKSB7
Ci0gICAgICAgICAgICBjb25zdCBDU1NHcmFkaWVudENvbG9yU3RvcCYgc3RvcCA9IG1fc3RvcHNb
aV07CisgICAgICAgIGZvciAoYXV0byYgc3RvcCA6IG1fc3RvcHMpIHsKICAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmRMaXRlcmFsKCIsICIpOwotICAgICAgICAgICAgaWYgKHN0b3AubV9wb3NpdGlv
bi0+Z2V0RG91YmxlVmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpID09IDApIHsK
KyAgICAgICAgICAgIGF1dG8gcG9zaXRpb24gPSBzdG9wLm1fcG9zaXRpb24tPmRvdWJsZVZhbHVl
KENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKKyAgICAgICAgICAgIGlmICghcG9zaXRp
b24pIHsKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiZnJvbSgiKTsKICAg
ICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHN0b3AubV9jb2xvci0+Y3NzVGV4dCgpKTsKICAg
ICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcpJyk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYg
KHN0b3AubV9wb3NpdGlvbi0+Z2V0RG91YmxlVmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19O
VU1CRVIpID09IDEpIHsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAocG9zaXRpb24gPT0gMSkgewog
ICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJ0bygiKTsKICAgICAgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKHN0b3AubV9jb2xvci0+Y3NzVGV4dCgpKTsKICAgICAgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKCcpJyk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmRMaXRlcmFsKCJjb2xvci1zdG9wKCIpOwotICAgICAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmROdW1iZXIoc3RvcC5tX3Bvc2l0aW9uLT5nZXREb3VibGVWYWx1ZShD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikpOworICAgICAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmROdW1iZXIocG9zaXRpb24pOwogICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRl
cmFsKCIsICIpOwogICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoc3RvcC5tX2NvbG9yLT5j
c3NUZXh0KCkpOwogICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyknKTsKQEAgLTY0Miw3
ICs2NDIsNyBAQCBTdHJpbmcgQ1NTTGluZWFyR3JhZGllbnRWYWx1ZTo6Y3VzdG9tQ1NTVGV4dCgp
IGNvbnN0CiAgICAgICAgIGlmIChtX2FuZ2xlICYmIG1fYW5nbGUtPmNvbXB1dGVEZWdyZWVzKCkg
IT0gMTgwKSB7CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKG1fYW5nbGUtPmNzc1RleHQoKSk7
CiAgICAgICAgICAgICB3cm90ZVNvbWV0aGluZyA9IHRydWU7Ci0gICAgICAgIH0gZWxzZSBpZiAo
KG1fZmlyc3RYIHx8IG1fZmlyc3RZKSAmJiAhKCFtX2ZpcnN0WCAmJiBtX2ZpcnN0WSAmJiBtX2Zp
cnN0WS0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlQm90dG9tKSkgeworICAgICAgICB9IGVsc2Ug
aWYgKChtX2ZpcnN0WCB8fCBtX2ZpcnN0WSkgJiYgISghbV9maXJzdFggJiYgbV9maXJzdFkgJiYg
bV9maXJzdFktPnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUJvdHRvbSkpIHsKICAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmRMaXRlcmFsKCJ0byAiKTsKICAgICAgICAgICAgIGlmIChtX2ZpcnN0WCAmJiBt
X2ZpcnN0WSkgewogICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQobV9maXJzdFgtPmNzc1Rl
eHQoKSk7CkBAIC03NTQsNyArNzU0LDcgQEAgUmVmPEdyYWRpZW50PiBDU1NMaW5lYXJHcmFkaWVu
dFZhbHVlOjpjcmVhdGVHcmFkaWVudChSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY28KICAgICBG
bG9hdFBvaW50IGZpcnN0UG9pbnQ7CiAgICAgRmxvYXRQb2ludCBzZWNvbmRQb2ludDsKICAgICBp
ZiAobV9hbmdsZSkgewotICAgICAgICBmbG9hdCBhbmdsZSA9IG1fYW5nbGUtPmdldEZsb2F0VmFs
dWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19ERUcpOworICAgICAgICBmbG9hdCBhbmdsZSA9IG1f
YW5nbGUtPmZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19ERUcpOwogICAgICAgICBl
bmRQb2ludHNGcm9tQW5nbGUoYW5nbGUsIHNpemUsIGZpcnN0UG9pbnQsIHNlY29uZFBvaW50LCBt
X2dyYWRpZW50VHlwZSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgc3dpdGNoIChtX2dyYWRpZW50
VHlwZSkgewpAQCAtNzgxLDkgKzc4MSw5IEBAIFJlZjxHcmFkaWVudD4gQ1NTTGluZWFyR3JhZGll
bnRWYWx1ZTo6Y3JlYXRlR3JhZGllbnQoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvCiAgICAg
ICAgICAgICAgICAgLy8gIk1hZ2ljIiBjb3JuZXJzLCBzbyB0aGUgNTAlIGxpbmUgdG91Y2hlcyB0
d28gY29ybmVycy4KICAgICAgICAgICAgICAgICBmbG9hdCByaXNlID0gc2l6ZS53aWR0aCgpOwog
ICAgICAgICAgICAgICAgIGZsb2F0IHJ1biA9IHNpemUuaGVpZ2h0KCk7Ci0gICAgICAgICAgICAg
ICAgaWYgKG1fZmlyc3RYICYmIG1fZmlyc3RYLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVMZWZ0
KQorICAgICAgICAgICAgICAgIGlmIChtX2ZpcnN0WCAmJiBtX2ZpcnN0WC0+dmFsdWVJRCgpID09
IENTU1ZhbHVlTGVmdCkKICAgICAgICAgICAgICAgICAgICAgcnVuICo9IC0xOwotICAgICAgICAg
ICAgICAgIGlmIChtX2ZpcnN0WSAmJiBtX2ZpcnN0WS0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVl
Qm90dG9tKQorICAgICAgICAgICAgICAgIGlmIChtX2ZpcnN0WSAmJiBtX2ZpcnN0WS0+dmFsdWVJ
RCgpID09IENTU1ZhbHVlQm90dG9tKQogICAgICAgICAgICAgICAgICAgICByaXNlICo9IC0xOwog
ICAgICAgICAgICAgICAgIC8vIENvbXB1dGUgYW5nbGUsIGFuZCBmbGlwIGl0IGJhY2sgdG8gImJl
YXJpbmcgYW5nbGUiIGRlZ3JlZXMuCiAgICAgICAgICAgICAgICAgZmxvYXQgYW5nbGUgPSA5MCAt
IHJhZDJkZWcoYXRhbjIocmlzZSwgcnVuKSk7CkBAIC04NjIsMjAgKzg2MiwyMCBAQCBTdHJpbmcg
Q1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6Y3VzdG9tQ1NTVGV4dCgpIGNvbnN0CiAgICAgICAgIHJl
c3VsdC5hcHBlbmQobV9zZWNvbmRSYWRpdXMtPmNzc1RleHQoKSk7CiAKICAgICAgICAgLy8gRklY
TUU6IHNoYXJlPwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9zdG9wcy5zaXpl
KCk7IGkrKykgewotICAgICAgICAgICAgY29uc3QgQ1NTR3JhZGllbnRDb2xvclN0b3AmIHN0b3Ag
PSBtX3N0b3BzW2ldOworICAgICAgICBmb3IgKGF1dG8mIHN0b3AgOiBtX3N0b3BzKSB7CiAgICAg
ICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiLCAiKTsKLSAgICAgICAgICAgIGlmIChzdG9w
Lm1fcG9zaXRpb24tPmdldERvdWJsZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVS
KSA9PSAwKSB7CisgICAgICAgICAgICBhdXRvIHBvc2l0aW9uID0gc3RvcC5tX3Bvc2l0aW9uLT5k
b3VibGVWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7CisgICAgICAgICAgICBp
ZiAoIXBvc2l0aW9uKSB7CiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoImZy
b20oIik7CiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChzdG9wLm1fY29sb3ItPmNzc1Rl
eHQoKSk7CiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnKScpOwotICAgICAgICAgICAg
fSBlbHNlIGlmIChzdG9wLm1fcG9zaXRpb24tPmdldERvdWJsZVZhbHVlKENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfTlVNQkVSKSA9PSAxKSB7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHBvc2l0aW9u
ID09IDEpIHsKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgidG8oIik7CiAg
ICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChzdG9wLm1fY29sb3ItPmNzc1RleHQoKSk7CiAg
ICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnKScpOwogICAgICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiY29sb3Itc3RvcCgiKTsKLSAg
ICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kTnVtYmVyKHN0b3AubV9wb3NpdGlvbi0+Z2V0RG91
YmxlVmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpKTsKKyAgICAgICAgICAgICAg
ICByZXN1bHQuYXBwZW5kTnVtYmVyKHBvc2l0aW9uKTsKICAgICAgICAgICAgICAgICByZXN1bHQu
YXBwZW5kTGl0ZXJhbCgiLCAiKTsKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHN0b3Au
bV9jb2xvci0+Y3NzVGV4dCgpKTsKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcpJyk7
CkBAIC05MzcsMTIgKzkzNywxMiBAQCBTdHJpbmcgQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6Y3Vz
dG9tQ1NTVGV4dCgpIGNvbnN0CiAKICAgICAgICAgLy8gVGhlIG9ubHkgYW1iaWd1b3VzIGNhc2Ug
dGhhdCBuZWVkcyBhbiBleHBsaWNpdCBzaGFwZSB0byBiZSBwcm92aWRlZAogICAgICAgICAvLyBp
cyB3aGVuIGEgc2l6aW5nIGtleXdvcmQgaXMgdXNlZCAob3IgYWxsIHNpemluZyBpcyBvbWl0dGVk
KS4KLSAgICAgICAgaWYgKG1fc2hhcGUgJiYgbV9zaGFwZS0+Z2V0VmFsdWVJRCgpICE9IENTU1Zh
bHVlRWxsaXBzZSAmJiAobV9zaXppbmdCZWhhdmlvciB8fCAoIW1fc2l6aW5nQmVoYXZpb3IgJiYg
IW1fZW5kSG9yaXpvbnRhbFNpemUpKSkgeworICAgICAgICBpZiAobV9zaGFwZSAmJiBtX3NoYXBl
LT52YWx1ZUlEKCkgIT0gQ1NTVmFsdWVFbGxpcHNlICYmIChtX3NpemluZ0JlaGF2aW9yIHx8ICgh
bV9zaXppbmdCZWhhdmlvciAmJiAhbV9lbmRIb3Jpem9udGFsU2l6ZSkpKSB7CiAgICAgICAgICAg
ICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiY2lyY2xlIik7CiAgICAgICAgICAgICB3cm90ZVNvbWV0
aGluZyA9IHRydWU7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAobV9zaXppbmdCZWhhdmlvciAm
JiBtX3NpemluZ0JlaGF2aW9yLT5nZXRWYWx1ZUlEKCkgIT0gQ1NTVmFsdWVGYXJ0aGVzdENvcm5l
cikgeworICAgICAgICBpZiAobV9zaXppbmdCZWhhdmlvciAmJiBtX3NpemluZ0JlaGF2aW9yLT52
YWx1ZUlEKCkgIT0gQ1NTVmFsdWVGYXJ0aGVzdENvcm5lcikgewogICAgICAgICAgICAgaWYgKHdy
b3RlU29tZXRoaW5nKQogICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAnKTsKICAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmQobV9zaXppbmdCZWhhdmlvci0+Y3NzVGV4dCgpKTsKQEAgLTk5
OSw5ICs5OTksOSBAQCBmbG9hdCBDU1NSYWRpYWxHcmFkaWVudFZhbHVlOjpyZXNvbHZlUmFkaXVz
KENTU1ByaW1pdGl2ZVZhbHVlJiByYWRpdXMsIGNvbnN0IENTUwogewogICAgIGZsb2F0IHJlc3Vs
dCA9IDA7CiAgICAgaWYgKHJhZGl1cy5pc051bWJlcigpKSAvLyBDYW4gdGhlIHJhZGl1cyBiZSBh
IHBlcmNlbnRhZ2U/Ci0gICAgICAgIHJlc3VsdCA9IHJhZGl1cy5nZXRGbG9hdFZhbHVlKCkgKiBj
b252ZXJzaW9uRGF0YS56b29tKCk7CisgICAgICAgIHJlc3VsdCA9IHJhZGl1cy5mbG9hdFZhbHVl
KCkgKiBjb252ZXJzaW9uRGF0YS56b29tKCk7CiAgICAgZWxzZSBpZiAod2lkdGhPckhlaWdodCAm
JiByYWRpdXMuaXNQZXJjZW50YWdlKCkpCi0gICAgICAgIHJlc3VsdCA9ICp3aWR0aE9ySGVpZ2h0
ICogcmFkaXVzLmdldEZsb2F0VmFsdWUoKSAvIDEwMDsKKyAgICAgICAgcmVzdWx0ID0gKndpZHRo
T3JIZWlnaHQgKiByYWRpdXMuZmxvYXRWYWx1ZSgpIC8gMTAwOwogICAgIGVsc2UKICAgICAgICAg
cmVzdWx0ID0gcmFkaXVzLmNvbXB1dGVMZW5ndGg8ZmxvYXQ+KGNvbnZlcnNpb25EYXRhKTsKIApA
QCAtMTEyMiwxNCArMTEyMiwxNCBAQCBSZWY8R3JhZGllbnQ+IENTU1JhZGlhbEdyYWRpZW50VmFs
dWU6OmNyZWF0ZUdyYWRpZW50KFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjbwogICAgIH0gZWxz
ZSB7CiAgICAgICAgIGVudW0gR3JhZGllbnRTaGFwZSB7IENpcmNsZSwgRWxsaXBzZSB9OwogICAg
ICAgICBHcmFkaWVudFNoYXBlIHNoYXBlID0gRWxsaXBzZTsKLSAgICAgICAgaWYgKChtX3NoYXBl
ICYmIG1fc2hhcGUtPmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZUNpcmNsZSkKKyAgICAgICAgaWYg
KChtX3NoYXBlICYmIG1fc2hhcGUtPnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUNpcmNsZSkKICAgICAg
ICAgICAgIHx8ICghbV9zaGFwZSAmJiAhbV9zaXppbmdCZWhhdmlvciAmJiBtX2VuZEhvcml6b250
YWxTaXplICYmICFtX2VuZFZlcnRpY2FsU2l6ZSkpCiAgICAgICAgICAgICBzaGFwZSA9IENpcmNs
ZTsKIAogICAgICAgICBlbnVtIEdyYWRpZW50RmlsbCB7IENsb3Nlc3RTaWRlLCBDbG9zZXN0Q29y
bmVyLCBGYXJ0aGVzdFNpZGUsIEZhcnRoZXN0Q29ybmVyIH07CiAgICAgICAgIEdyYWRpZW50Rmls
bCBmaWxsID0gRmFydGhlc3RDb3JuZXI7CiAKLSAgICAgICAgc3dpdGNoIChtX3NpemluZ0JlaGF2
aW9yID8gbV9zaXppbmdCZWhhdmlvci0+Z2V0VmFsdWVJRCgpIDogMCkgeworICAgICAgICBzd2l0
Y2ggKG1fc2l6aW5nQmVoYXZpb3IgPyBtX3NpemluZ0JlaGF2aW9yLT52YWx1ZUlEKCkgOiAwKSB7
CiAgICAgICAgIGNhc2UgQ1NTVmFsdWVDb250YWluOgogICAgICAgICBjYXNlIENTU1ZhbHVlQ2xv
c2VzdFNpZGU6CiAgICAgICAgICAgICBmaWxsID0gQ2xvc2VzdFNpZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JvdXBpbmdSdWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NHcm91cGluZ1J1bGUuY3BwCmluZGV4IDVhNmQ1ZjAyOWJjZTEyODY3Yjk0YzQzODk2Zjlk
YjkwNDJlZDEzOWIuLmI0ZmY2MDc0MzkyYmQwZTRhOTk3ZWFmZWFlMGFiNDU5MTcwNTE4NjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcm91cGluZ1J1bGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NHcm91cGluZ1J1bGUuY3BwCkBAIC01NywxNCArNTcsMTMgQEAg
Q1NTR3JvdXBpbmdSdWxlOjp+Q1NTR3JvdXBpbmdSdWxlKCkKICAgICB9CiB9CiAKLXVuc2lnbmVk
IENTU0dyb3VwaW5nUnVsZTo6aW5zZXJ0UnVsZShjb25zdCBTdHJpbmcmIHJ1bGVTdHJpbmcsIHVu
c2lnbmVkIGluZGV4LCBFeGNlcHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPHVuc2lnbmVkPiBD
U1NHcm91cGluZ1J1bGU6Omluc2VydFJ1bGUoY29uc3QgU3RyaW5nJiBydWxlU3RyaW5nLCB1bnNp
Z25lZCBpbmRleCkKIHsKICAgICBBU1NFUlQobV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJzLnNpemUo
KSA9PSBtX2dyb3VwUnVsZS0+Y2hpbGRSdWxlcygpLnNpemUoKSk7CiAKICAgICBpZiAoaW5kZXgg
PiBtX2dyb3VwUnVsZS0+Y2hpbGRSdWxlcygpLnNpemUoKSkgewogICAgICAgICAvLyBJTkRFWF9T
SVpFX0VSUjogUmFpc2VkIGlmIHRoZSBzcGVjaWZpZWQgaW5kZXggaXMgbm90IGEgdmFsaWQgaW5z
ZXJ0aW9uIHBvaW50LgotICAgICAgICBlYyA9IElOREVYX1NJWkVfRVJSOwotICAgICAgICByZXR1
cm4gMDsKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElOREVYX1NJWkVfRVJSIH07CiAgICAg
fQogCiAgICAgQ1NTUGFyc2VyIHBhcnNlcihwYXJzZXJDb250ZXh0KCkpOwpAQCAtNzIsOCArNzEs
NyBAQCB1bnNpZ25lZCBDU1NHcm91cGluZ1J1bGU6Omluc2VydFJ1bGUoY29uc3QgU3RyaW5nJiBy
dWxlU3RyaW5nLCB1bnNpZ25lZCBpbmRleCwgRQogICAgIFJlZlB0cjxTdHlsZVJ1bGVCYXNlPiBu
ZXdSdWxlID0gcGFyc2VyLnBhcnNlUnVsZShzdHlsZVNoZWV0ID8gJnN0eWxlU2hlZXQtPmNvbnRl
bnRzKCkgOiBudWxscHRyLCBydWxlU3RyaW5nKTsKICAgICBpZiAoIW5ld1J1bGUpIHsKICAgICAg
ICAgLy8gU1lOVEFYX0VSUjogUmFpc2VkIGlmIHRoZSBzcGVjaWZpZWQgcnVsZSBoYXMgYSBzeW50
YXggZXJyb3IgYW5kIGlzIHVucGFyc2FibGUuCi0gICAgICAgIGVjID0gU1lOVEFYX0VSUjsKLSAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTWU5UQVhfRVJSIH07
CiAgICAgfQogCiAgICAgaWYgKG5ld1J1bGUtPmlzSW1wb3J0UnVsZSgpKSB7CkBAIC04NCw4ICs4
Miw3IEBAIHVuc2lnbmVkIENTU0dyb3VwaW5nUnVsZTo6aW5zZXJ0UnVsZShjb25zdCBTdHJpbmcm
IHJ1bGVTdHJpbmcsIHVuc2lnbmVkIGluZGV4LCBFCiAgICAgICAgIC8vIEhJRVJBUkNIWV9SRVFV
RVNUX0VSUjogUmFpc2VkIGlmIHRoZSBydWxlIGNhbm5vdCBiZSBpbnNlcnRlZCBhdCB0aGUgc3Bl
Y2lmaWVkCiAgICAgICAgIC8vIGluZGV4LCBlLmcuLCBpZiBhbiBAaW1wb3J0IHJ1bGUgaXMgaW5z
ZXJ0ZWQgYWZ0ZXIgYSBzdGFuZGFyZCBydWxlIHNldCBvciBvdGhlcgogICAgICAgICAvLyBhdC1y
dWxlLgotICAgICAgICBlYyA9IEhJRVJBUkNIWV9SRVFVRVNUX0VSUjsKLSAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBISUVSQVJDSFlfUkVRVUVTVF9FUlIgfTsK
ICAgICB9CiAgICAgQ1NTU3R5bGVTaGVldDo6UnVsZU11dGF0aW9uU2NvcGUgbXV0YXRpb25TY29w
ZSh0aGlzKTsKIApAQCAtOTUsMTUgKzkyLDE0IEBAIHVuc2lnbmVkIENTU0dyb3VwaW5nUnVsZTo6
aW5zZXJ0UnVsZShjb25zdCBTdHJpbmcmIHJ1bGVTdHJpbmcsIHVuc2lnbmVkIGluZGV4LCBFCiAg
ICAgcmV0dXJuIGluZGV4OwogfQogCi12b2lkIENTU0dyb3VwaW5nUnVsZTo6ZGVsZXRlUnVsZSh1
bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRpb25Pcjx2b2lkPiBDU1NH
cm91cGluZ1J1bGU6OmRlbGV0ZVJ1bGUodW5zaWduZWQgaW5kZXgpCiB7CiAgICAgQVNTRVJUKG1f
Y2hpbGRSdWxlQ1NTT01XcmFwcGVycy5zaXplKCkgPT0gbV9ncm91cFJ1bGUtPmNoaWxkUnVsZXMo
KS5zaXplKCkpOwogCiAgICAgaWYgKGluZGV4ID49IG1fZ3JvdXBSdWxlLT5jaGlsZFJ1bGVzKCku
c2l6ZSgpKSB7CiAgICAgICAgIC8vIElOREVYX1NJWkVfRVJSOiBSYWlzZWQgaWYgdGhlIHNwZWNp
ZmllZCBpbmRleCBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGEKICAgICAgICAgLy8gcnVsZSBpbiB0
aGUgbWVkaWEgcnVsZSBsaXN0LgotICAgICAgICBlYyA9IElOREVYX1NJWkVfRVJSOwotICAgICAg
ICByZXR1cm47CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJTkRFWF9TSVpFX0VSUiB9Owog
ICAgIH0KIAogICAgIENTU1N0eWxlU2hlZXQ6OlJ1bGVNdXRhdGlvblNjb3BlIG11dGF0aW9uU2Nv
cGUodGhpcyk7CkBAIC0xMTMsNiArMTA5LDggQEAgdm9pZCBDU1NHcm91cGluZ1J1bGU6OmRlbGV0
ZVJ1bGUodW5zaWduZWQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIGlmIChtX2NoaWxk
UnVsZUNTU09NV3JhcHBlcnNbaW5kZXhdKQogICAgICAgICBtX2NoaWxkUnVsZUNTU09NV3JhcHBl
cnNbaW5kZXhdLT5zZXRQYXJlbnRSdWxlKDApOwogICAgIG1fY2hpbGRSdWxlQ1NTT01XcmFwcGVy
cy5yZW1vdmUoaW5kZXgpOworCisgICAgcmV0dXJuIHsgfTsKIH0KIAogdm9pZCBDU1NHcm91cGlu
Z1J1bGU6OmFwcGVuZENzc1RleHRGb3JJdGVtcyhTdHJpbmdCdWlsZGVyJiByZXN1bHQpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JvdXBpbmdSdWxlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTR3JvdXBpbmdSdWxlLmgKaW5kZXggNGZmMTYwMDQ1Yjc3NjkxMWRk
ZWRkMmUyNTQxNjJiNTU1YTljNGUxZC4uZjU0YTM5NzE5NGU1Zjk3NDY1ZTJhNWUxODZkODUyYmY0
MDlkNTIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyb3VwaW5nUnVsZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcm91cGluZ1J1bGUuaApAQCAtMjMsMjQgKzIz
LDIyIEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNTU1J1bGUuaCIKLSNpbmNsdWRlICJT
dHlsZVJ1bGUuaCIKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENTU1J1bGVMaXN0OworY2xhc3MgU3R5bGVS
dWxlR3JvdXA7CiAKIGNsYXNzIENTU0dyb3VwaW5nUnVsZSA6IHB1YmxpYyBDU1NSdWxlIHsKIHB1
YmxpYzoKICAgICB2aXJ0dWFsIH5DU1NHcm91cGluZ1J1bGUoKTsKIAotICAgIHZvaWQgcmVhdHRh
Y2goU3R5bGVSdWxlQmFzZSYpIG92ZXJyaWRlOwotCiAgICAgV0VCQ09SRV9FWFBPUlQgQ1NTUnVs
ZUxpc3QmIGNzc1J1bGVzKCkgY29uc3Q7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB1bnNpZ25lZCBp
bnNlcnRSdWxlKGNvbnN0IFN0cmluZyYgcnVsZSwgdW5zaWduZWQgaW5kZXgsIEV4Y2VwdGlvbkNv
ZGUmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZVJ1bGUodW5zaWduZWQgaW5kZXgs
IEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25Pcjx1bnNpZ25l
ZD4gaW5zZXJ0UnVsZShjb25zdCBTdHJpbmcmIHJ1bGUsIHVuc2lnbmVkIGluZGV4KTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBFeGNlcHRpb25Pcjx2b2lkPiBkZWxldGVSdWxlKHVuc2lnbmVkIGluZGV4
KTsKICAgICAgICAgCiAgICAgLy8gRm9yIENTU1J1bGVMaXN0CiAgICAgdW5zaWduZWQgbGVuZ3Ro
KCkgY29uc3Q7CkBAIC00OSw5ICs0NywxMyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgQ1NT
R3JvdXBpbmdSdWxlKFN0eWxlUnVsZUdyb3VwJiBncm91cFJ1bGUsIENTU1N0eWxlU2hlZXQqIHBh
cmVudCk7CiAgICAgCisgICAgdm9pZCByZWF0dGFjaChTdHlsZVJ1bGVCYXNlJikgb3ZlcnJpZGU7
CisKICAgICB2b2lkIGFwcGVuZENzc1RleHRGb3JJdGVtcyhTdHJpbmdCdWlsZGVyJikgY29uc3Q7
CiAKICAgICBSZWY8U3R5bGVSdWxlR3JvdXA+IG1fZ3JvdXBSdWxlOworCitwcml2YXRlOgogICAg
IG11dGFibGUgVmVjdG9yPFJlZlB0cjxDU1NSdWxlPj4gbV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJz
OwogICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPENTU1J1bGVMaXN0PiBtX3J1bGVMaXN0Q1NT
T01XcmFwcGVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdl
bmVyYXRvclZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZh
bHVlLmNwcAppbmRleCBlM2I2ZDMyNmEyYjIwNjliZDg3MDI4YWMzMGIzYjZiNGQyODdkZjUzLi5h
NzUyODNhMmIyN2MzZGVkOGQ5NDMxMmRlMDRhNDE1OGVlY2MyZjkzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwCkBAIC0yNDAsNyArMjQwLDcgQEAg
Ym9vbCBDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpzdWJpbWFnZUlzUGVuZGluZyhjb25zdCBDU1NW
YWx1ZSYgdmFsdWUpCiAgICAgaWYgKGlzPENTU0ltYWdlR2VuZXJhdG9yVmFsdWU+KHZhbHVlKSkK
ICAgICAgICAgcmV0dXJuIGRvd25jYXN0PENTU0ltYWdlR2VuZXJhdG9yVmFsdWU+KHZhbHVlKS5p
c1BlbmRpbmcoKTsKIAotICAgIGlmIChpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpICYmIGRv
d25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVl
Tm9uZSkKKyAgICBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSAmJiBkb3duY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjYxLDcg
KzI2MSw3IEBAIENhY2hlZEltYWdlKiBDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpjYWNoZWRJbWFn
ZUZvckNTU1ZhbHVlKENTU1ZhbHVlJiB2YWx1ZSwgQ2FjCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KIAotICAgIGlmIChpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpICYmIGRvd25j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlTm9u
ZSkKKyAgICBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSAmJiBkb3duY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZT4odmFsdWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5jcHAKaW5kZXggNWE5YzIyMjNkNGYxYzQyZmZjYWFjZGNl
MmUzMWRkNzQ2M2I4MWVmNS4uNWUxMWIyYzdiZDQ4Y2RlOTU1YjdlYTE5M2IwY2M4YzI5MjlmZGQx
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVNldFZhbHVlLmNwcApAQCAtNTksNyArNTks
NyBAQCB2b2lkIENTU0ltYWdlU2V0VmFsdWU6OmZpbGxJbWFnZVNldCgpCiAgICAgICAgICsraTsK
ICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaSA8IGxlbmd0aCk7CiAg
ICAgICAgIENTU1ZhbHVlKiBzY2FsZUZhY3RvclZhbHVlID0gaXRlbShpKTsKLSAgICAgICAgZmxv
YXQgc2NhbGVGYWN0b3IgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnNjYWxlRmFjdG9y
VmFsdWUpLmdldEZsb2F0VmFsdWUoKTsKKyAgICAgICAgZmxvYXQgc2NhbGVGYWN0b3IgPSBkb3du
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnNjYWxlRmFjdG9yVmFsdWUpLmZsb2F0VmFsdWUoKTsK
IAogICAgICAgICBJbWFnZVdpdGhTY2FsZSBpbWFnZTsKICAgICAgICAgaW1hZ2UuaW1hZ2VVUkwg
PSBpbWFnZVVSTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNZWRpYVJ1bGUu
aCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNZWRpYVJ1bGUuaAppbmRleCBmYjFiYzRlOWE0ZjJm
NjY1NjEzYjhkOThmMmRiZDE4YzE5OTc2ODVjLi4yMTYwZmFjYTllNGE2ODMzNTAxNzYzNjMwY2I4
MzgyNTkyZjg0ZDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTWVkaWFSdWxl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU01lZGlhUnVsZS5oCkBAIC0yNyw2ICsyNyw3
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lZGlhTGlzdDsKK2NsYXNzIE1lZGlh
UXVlcnlTZXQ7CiBjbGFzcyBTdHlsZVJ1bGVNZWRpYTsKIAogY2xhc3MgQ1NTTWVkaWFSdWxlIGZp
bmFsIDogcHVibGljIENTU0dyb3VwaW5nUnVsZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTTWVkaWFSdWxlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NNZWRpYVJ1bGUu
aWRsCmluZGV4IDRlZGE4OTc5ZDUxMWVmOWMwOTkwZDllZDQ2NzU3YjQyOTBmZjg4ZTUuLmNmMjE1
NTUxMWIwOWY0ZjNjNGIwN2M1NWYxZTAwODg5YWZhYjEyZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NNZWRpYVJ1bGUuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NN
ZWRpYVJ1bGUuaWRsCkBAIC0yMiw2ICsyMiw2IEBAIGludGVyZmFjZSBDU1NNZWRpYVJ1bGUgOiBD
U1NSdWxlIHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgTWVkaWFMaXN0IG1lZGlhOwogICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBDU1NSdWxlTGlzdCBjc3NSdWxlczsKIAotICAgIFtNYXlUaHJvd0xl
Z2FjeUV4Y2VwdGlvbl0gdW5zaWduZWQgbG9uZyBpbnNlcnRSdWxlKG9wdGlvbmFsIERPTVN0cmlu
ZyBydWxlID0gInVuZGVmaW5lZCIsIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgaW5kZXggPSAwKTsK
LSAgICBbTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHZvaWQgZGVsZXRlUnVsZShvcHRpb25hbCB1
bnNpZ25lZCBsb25nIGluZGV4ID0gMCk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSB1bnNpZ25l
ZCBsb25nIGluc2VydFJ1bGUob3B0aW9uYWwgRE9NU3RyaW5nIHJ1bGUgPSAidW5kZWZpbmVkIiwg
b3B0aW9uYWwgdW5zaWduZWQgbG9uZyBpbmRleCA9IDApOworICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gdm9pZCBkZWxldGVSdWxlKG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgaW5kZXggPSAwKTsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAppbmRleCA5ODc3MTNjOTFh
Zjk1ZGFlODU5NzhkYWEyMDQ1MDMxZWZhOGM2ODVlLi5mNGIzMmQ0NzQ3ZDJlMGRhODllOTBlYWRh
MDdhNWMxMmI2ZjgyYTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0
aXZlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5j
cHAKQEAgLTYyOSwxMyArNjI5LDEzIEBAIGRvdWJsZSBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0
ZURlZ3JlZXMoKSBjb25zdAogewogICAgIHN3aXRjaCAocHJpbWl0aXZlVHlwZSgpKSB7CiAgICAg
Y2FzZSBDU1NfREVHOgotICAgICAgICByZXR1cm4gZ2V0RG91YmxlVmFsdWUoKTsKKyAgICAgICAg
cmV0dXJuIGRvdWJsZVZhbHVlKCk7CiAgICAgY2FzZSBDU1NfUkFEOgotICAgICAgICByZXR1cm4g
cmFkMmRlZyhnZXREb3VibGVWYWx1ZSgpKTsKKyAgICAgICAgcmV0dXJuIHJhZDJkZWcoZG91Ymxl
VmFsdWUoKSk7CiAgICAgY2FzZSBDU1NfR1JBRDoKLSAgICAgICAgcmV0dXJuIGdyYWQyZGVnKGdl
dERvdWJsZVZhbHVlKCkpOworICAgICAgICByZXR1cm4gZ3JhZDJkZWcoZG91YmxlVmFsdWUoKSk7
CiAgICAgY2FzZSBDU1NfVFVSTjoKLSAgICAgICAgcmV0dXJuIHR1cm4yZGVnKGdldERvdWJsZVZh
bHVlKCkpOworICAgICAgICByZXR1cm4gdHVybjJkZWcoZG91YmxlVmFsdWUoKSk7CiAgICAgZGVm
YXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiAwOwpA
QCAtNjgzLDEwICs2ODMsMTAgQEAgZG91YmxlIENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTGVu
Z3RoRG91YmxlKGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmIGMKICAgICAgICAgLy8g
VGhlIG11bHRpcGxpZXIgYW5kIGZhY3RvciBpcyBhcHBsaWVkIHRvIGVhY2ggdmFsdWUgaW4gdGhl
IGNhbGMgZXhwcmVzc2lvbiBpbmRpdmlkdWFsbHkKICAgICAgICAgcmV0dXJuIG1fdmFsdWUuY2Fs
Yy0+Y29tcHV0ZUxlbmd0aFB4KGNvbnZlcnNpb25EYXRhKTsKIAotICAgIHJldHVybiBjb21wdXRl
Tm9uQ2FsY0xlbmd0aERvdWJsZShjb252ZXJzaW9uRGF0YSwgcHJpbWl0aXZlVHlwZSgpLCBtX3Zh
bHVlLm51bSk7CisgICAgcmV0dXJuIGNvbXB1dGVOb25DYWxjTGVuZ3RoRG91YmxlKGNvbnZlcnNp
b25EYXRhLCBzdGF0aWNfY2FzdDxVbml0VHlwZXM+KHByaW1pdGl2ZVR5cGUoKSksIG1fdmFsdWUu
bnVtKTsKIH0KIAotZG91YmxlIENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTm9uQ2FsY0xlbmd0
aERvdWJsZShjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW9uRGF0YSwg
dW5zaWduZWQgc2hvcnQgcHJpbWl0aXZlVHlwZSwgZG91YmxlIHZhbHVlKQorZG91YmxlIENTU1By
aW1pdGl2ZVZhbHVlOjpjb21wdXRlTm9uQ2FsY0xlbmd0aERvdWJsZShjb25zdCBDU1NUb0xlbmd0
aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW9uRGF0YSwgVW5pdFR5cGVzIHByaW1pdGl2ZVR5cGUs
IGRvdWJsZSB2YWx1ZSkKIHsKICAgICBkb3VibGUgZmFjdG9yOwogCkBAIC03NjYsMTUgKzc2Niwx
NSBAQCBkb3VibGUgQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVOb25DYWxjTGVuZ3RoRG91Ymxl
KGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbgogICAgIHJldHVybiByZXN1bHQgKiBjb252ZXJz
aW9uRGF0YS56b29tKCk7CiB9CiAKLXZvaWQgQ1NTUHJpbWl0aXZlVmFsdWU6OnNldEZsb2F0VmFs
dWUodW5zaWduZWQgc2hvcnQsIGRvdWJsZSwgRXhjZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRpb25P
cjx2b2lkPiBDU1NQcmltaXRpdmVWYWx1ZTo6c2V0RmxvYXRWYWx1ZSh1bnNpZ25lZCBzaG9ydCwg
ZG91YmxlKQogewogICAgIC8vIEtlZXBpbmcgdmFsdWVzIGltbXV0YWJsZSBtYWtlcyBvcHRpbWl6
YXRpb25zIGVhc2llciBhbmQgYWxsb3dzIHNoYXJpbmcgb2YgdGhlIHByaW1pdGl2ZSB2YWx1ZSBv
YmplY3RzLgogICAgIC8vIE5vIG90aGVyIGVuZ2luZSBzdXBwb3J0cyBtdXRhdGluZyBzdHlsZSB0
aHJvdWdoIHRoaXMgQVBJLiBDb21wdXRlZCBzdHlsZSBpcyBhbHdheXMgcmVhZC1vbmx5IGFueXdh
eS4KICAgICAvLyBTdXBwb3J0aW5nIHNldHRlciB3b3VsZCByZXF1aXJlIG1ha2luZyBwcmltaXRp
dmUgdmFsdWUgY29weS1vbi13cml0ZSBhbmQgdGFraW5nIGNhcmUgb2Ygc3R5bGUgaW52YWxpZGF0
aW9uLgotICAgIGVjID0gTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSOworICAgIHJldHVybiBF
eGNlcHRpb24geyBOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlIgfTsKIH0KIAotZG91YmxlIENT
U1ByaW1pdGl2ZVZhbHVlOjpjb252ZXJzaW9uVG9DYW5vbmljYWxVbml0c1NjYWxlRmFjdG9yKHVu
c2lnbmVkIHNob3J0IHVuaXRUeXBlKQorZG91YmxlIENTU1ByaW1pdGl2ZVZhbHVlOjpjb252ZXJz
aW9uVG9DYW5vbmljYWxVbml0c1NjYWxlRmFjdG9yKFVuaXRUeXBlcyB1bml0VHlwZSkKIHsKICAg
ICBkb3VibGUgZmFjdG9yID0gMS4wOwogICAgIC8vIEZJWE1FOiB0aGUgc3dpdGNoIGNhbiBiZSBy
ZXBsYWNlZCBieSBhbiBhcnJheSBvZiBzY2FsZSBmYWN0b3JzLgpAQCAtODI2LDI3ICs4MjYsMjAg
QEAgZG91YmxlIENTU1ByaW1pdGl2ZVZhbHVlOjpjb252ZXJzaW9uVG9DYW5vbmljYWxVbml0c1Nj
YWxlRmFjdG9yKHVuc2lnbmVkIHNob3J0IHUKICAgICByZXR1cm4gZmFjdG9yOwogfQogCi1kb3Vi
bGUgQ1NTUHJpbWl0aXZlVmFsdWU6OmdldERvdWJsZVZhbHVlKHVuc2lnbmVkIHNob3J0IHVuaXRU
eXBlLCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKK0V4Y2VwdGlvbk9yPGZsb2F0PiBDU1NQcmlt
aXRpdmVWYWx1ZTo6Z2V0RmxvYXRWYWx1ZSh1bnNpZ25lZCBzaG9ydCB1bml0VHlwZSkgY29uc3QK
IHsKLSAgICBkb3VibGUgcmVzdWx0ID0gMDsKLSAgICBib29sIHN1Y2Nlc3MgPSBnZXREb3VibGVW
YWx1ZUludGVybmFsKHN0YXRpY19jYXN0PFVuaXRUeXBlcz4odW5pdFR5cGUpLCAmcmVzdWx0KTsK
LSAgICBpZiAoIXN1Y2Nlc3MpIHsKLSAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7Ci0g
ICAgICAgIHJldHVybiAwLjA7Ci0gICAgfQotCi0gICAgZWMgPSAwOwotICAgIHJldHVybiByZXN1
bHQ7CisgICAgYXV0byByZXN1bHQgPSBkb3VibGVWYWx1ZUludGVybmFsKHN0YXRpY19jYXN0PFVu
aXRUeXBlcz4odW5pdFR5cGUpKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IElOVkFMSURfQUNDRVNTX0VSUiB9OworICAgIHJldHVybiBjbGFtcFRvPGZsb2F0
PihyZXN1bHQudmFsdWUoKSk7CiB9CiAKLWRvdWJsZSBDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0RG91
YmxlVmFsdWUodW5zaWduZWQgc2hvcnQgdW5pdFR5cGUpIGNvbnN0Citkb3VibGUgQ1NTUHJpbWl0
aXZlVmFsdWU6OmRvdWJsZVZhbHVlKFVuaXRUeXBlcyB1bml0VHlwZSkgY29uc3QKIHsKLSAgICBk
b3VibGUgcmVzdWx0ID0gMDsKLSAgICBnZXREb3VibGVWYWx1ZUludGVybmFsKHN0YXRpY19jYXN0
PFVuaXRUeXBlcz4odW5pdFR5cGUpLCAmcmVzdWx0KTsKLSAgICByZXR1cm4gcmVzdWx0OworICAg
IHJldHVybiBkb3VibGVWYWx1ZUludGVybmFsKHVuaXRUeXBlKS52YWx1ZU9yKDApOwogfQogCi1k
b3VibGUgQ1NTUHJpbWl0aXZlVmFsdWU6OmdldERvdWJsZVZhbHVlKCkgY29uc3QKK2RvdWJsZSBD
U1NQcmltaXRpdmVWYWx1ZTo6ZG91YmxlVmFsdWUoKSBjb25zdAogewogICAgIHJldHVybiBtX3By
aW1pdGl2ZVVuaXRUeXBlICE9IENTU19DQUxDID8gbV92YWx1ZS5udW0gOiBtX3ZhbHVlLmNhbGMt
PmRvdWJsZVZhbHVlKCk7CiB9CkBAIC04NzgsMTYgKzg3MSwxNCBAQCBDU1NQcmltaXRpdmVWYWx1
ZTo6VW5pdFR5cGVzIENTU1ByaW1pdGl2ZVZhbHVlOjpjYW5vbmljYWxVbml0VHlwZUZvckNhdGVn
b3J5KFVuaQogICAgIH0KIH0KIAotYm9vbCBDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0RG91YmxlVmFs
dWVJbnRlcm5hbChVbml0VHlwZXMgcmVxdWVzdGVkVW5pdFR5cGUsIGRvdWJsZSogcmVzdWx0KSBj
b25zdAorT3B0aW9uYWw8ZG91YmxlPiBDU1NQcmltaXRpdmVWYWx1ZTo6ZG91YmxlVmFsdWVJbnRl
cm5hbChVbml0VHlwZXMgcmVxdWVzdGVkVW5pdFR5cGUpIGNvbnN0CiB7CiAgICAgaWYgKCFpc1Zh
bGlkQ1NTVW5pdFR5cGVGb3JEb3VibGVDb252ZXJzaW9uKHN0YXRpY19jYXN0PFVuaXRUeXBlcz4o
bV9wcmltaXRpdmVVbml0VHlwZSkpIHx8ICFpc1ZhbGlkQ1NTVW5pdFR5cGVGb3JEb3VibGVDb252
ZXJzaW9uKHJlcXVlc3RlZFVuaXRUeXBlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICByZXR1cm4gTnVsbG9wdDsKIAogICAgIFVuaXRUeXBlcyBzb3VyY2VVbml0VHlwZSA9IHN0YXRp
Y19jYXN0PFVuaXRUeXBlcz4ocHJpbWl0aXZlVHlwZSgpKTsKLSAgICBpZiAocmVxdWVzdGVkVW5p
dFR5cGUgPT0gc291cmNlVW5pdFR5cGUgfHwgcmVxdWVzdGVkVW5pdFR5cGUgPT0gQ1NTX0RJTUVO
U0lPTikgewotICAgICAgICAqcmVzdWx0ID0gZ2V0RG91YmxlVmFsdWUoKTsKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgfQorICAgIGlmIChyZXF1ZXN0ZWRVbml0VHlwZSA9PSBzb3VyY2VVbml0
VHlwZSB8fCByZXF1ZXN0ZWRVbml0VHlwZSA9PSBDU1NfRElNRU5TSU9OKQorICAgICAgICByZXR1
cm4gZG91YmxlVmFsdWUoKTsKIAogICAgIFVuaXRDYXRlZ29yeSBzb3VyY2VDYXRlZ29yeSA9IHVu
aXRDYXRlZ29yeShzb3VyY2VVbml0VHlwZSk7CiAgICAgQVNTRVJUKHNvdXJjZUNhdGVnb3J5ICE9
IFVPdGhlcik7CkBAIC04OTgsMjMgKzg4OSwyMyBAQCBib29sIENTU1ByaW1pdGl2ZVZhbHVlOjpn
ZXREb3VibGVWYWx1ZUludGVybmFsKFVuaXRUeXBlcyByZXF1ZXN0ZWRVbml0VHlwZSwgZG91Ygog
CiAgICAgLy8gQ2Fubm90IGNvbnZlcnQgYmV0d2VlbiB1bnJlbGF0ZWQgdW5pdCBjYXRlZ29yaWVz
IGlmIG9uZSBvZiB0aGVtIGlzIG5vdCBVTnVtYmVyLgogICAgIGlmIChzb3VyY2VDYXRlZ29yeSAh
PSB0YXJnZXRDYXRlZ29yeSAmJiBzb3VyY2VDYXRlZ29yeSAhPSBVTnVtYmVyICYmIHRhcmdldENh
dGVnb3J5ICE9IFVOdW1iZXIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJu
IE51bGxvcHQ7CiAKICAgICBpZiAodGFyZ2V0Q2F0ZWdvcnkgPT0gVU51bWJlcikgewogICAgICAg
ICAvLyBXZSBpbnRlcnByZXQgY29udmVyc2lvbiB0byBDU1NfTlVNQkVSIGFzIGNvbnZlcnNpb24g
dG8gYSBjYW5vbmljYWwgdW5pdCBpbiB0aGlzIHZhbHVlJ3MgY2F0ZWdvcnkuCiAgICAgICAgIHRh
cmdldFVuaXRUeXBlID0gY2Fub25pY2FsVW5pdFR5cGVGb3JDYXRlZ29yeShzb3VyY2VDYXRlZ29y
eSk7CiAgICAgICAgIGlmICh0YXJnZXRVbml0VHlwZSA9PSBDU1NfVU5LTk9XTikKLSAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OwogICAgIH0KIAog
ICAgIGlmIChzb3VyY2VVbml0VHlwZSA9PSBDU1NfTlVNQkVSKSB7CiAgICAgICAgIC8vIFdlIGlu
dGVycHJldCBjb252ZXJzaW9uIGZyb20gQ1NTX05VTUJFUiBpbiB0aGUgc2FtZSB3YXkgYXMgQ1NT
UGFyc2VyOjp2YWxpZFVuaXQoKSB3aGlsZSB1c2luZyBub24tc3RyaWN0IG1vZGUuCiAgICAgICAg
IHNvdXJjZVVuaXRUeXBlID0gY2Fub25pY2FsVW5pdFR5cGVGb3JDYXRlZ29yeSh0YXJnZXRDYXRl
Z29yeSk7CiAgICAgICAgIGlmIChzb3VyY2VVbml0VHlwZSA9PSBDU1NfVU5LTk9XTikKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OwogICAgIH0K
IAotICAgIGRvdWJsZSBjb252ZXJ0ZWRWYWx1ZSA9IGdldERvdWJsZVZhbHVlKCk7CisgICAgZG91
YmxlIGNvbnZlcnRlZFZhbHVlID0gZG91YmxlVmFsdWUoKTsKIAogICAgIC8vIEZpcnN0IGNvbnZl
cnQgdGhlIHZhbHVlIGZyb20gbV9wcmltaXRpdmVVbml0VHlwZSB0byBjYW5vbmljYWwgdHlwZS4K
ICAgICBkb3VibGUgZmFjdG9yID0gY29udmVyc2lvblRvQ2Fub25pY2FsVW5pdHNTY2FsZUZhY3Rv
cihzb3VyY2VVbml0VHlwZSk7CkBAIC05MjQsNDEgKzkxNSwzNiBAQCBib29sIENTU1ByaW1pdGl2
ZVZhbHVlOjpnZXREb3VibGVWYWx1ZUludGVybmFsKFVuaXRUeXBlcyByZXF1ZXN0ZWRVbml0VHlw
ZSwgZG91YgogICAgIGZhY3RvciA9IGNvbnZlcnNpb25Ub0Nhbm9uaWNhbFVuaXRzU2NhbGVGYWN0
b3IodGFyZ2V0VW5pdFR5cGUpOwogICAgIGNvbnZlcnRlZFZhbHVlIC89IGZhY3RvcjsKIAotICAg
ICpyZXN1bHQgPSBjb252ZXJ0ZWRWYWx1ZTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4g
Y29udmVydGVkVmFsdWU7CiB9CiAKLXZvaWQgQ1NTUHJpbWl0aXZlVmFsdWU6OnNldFN0cmluZ1Zh
bHVlKHVuc2lnbmVkIHNob3J0LCBjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJiBlYykKK0V4
Y2VwdGlvbk9yPHZvaWQ+IENTU1ByaW1pdGl2ZVZhbHVlOjpzZXRTdHJpbmdWYWx1ZSh1bnNpZ25l
ZCBzaG9ydCwgY29uc3QgU3RyaW5nJikKIHsKICAgICAvLyBLZWVwaW5nIHZhbHVlcyBpbW11dGFi
bGUgbWFrZXMgb3B0aW1pemF0aW9ucyBlYXNpZXIgYW5kIGFsbG93cyBzaGFyaW5nIG9mIHRoZSBw
cmltaXRpdmUgdmFsdWUgb2JqZWN0cy4KICAgICAvLyBObyBvdGhlciBlbmdpbmUgc3VwcG9ydHMg
bXV0YXRpbmcgc3R5bGUgdGhyb3VnaCB0aGlzIEFQSS4gQ29tcHV0ZWQgc3R5bGUgaXMgYWx3YXlz
IHJlYWQtb25seSBhbnl3YXkuCiAgICAgLy8gU3VwcG9ydGluZyBzZXR0ZXIgd291bGQgcmVxdWly
ZSBtYWtpbmcgcHJpbWl0aXZlIHZhbHVlIGNvcHktb24td3JpdGUgYW5kIHRha2luZyBjYXJlIG9m
IHN0eWxlIGludmFsaWRhdGlvbi4KLSAgICBlYyA9IE5PX01PRElGSUNBVElPTl9BTExPV0VEX0VS
UjsKKyAgICByZXR1cm4gRXhjZXB0aW9uIHsgTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSIH07
CiB9CiAKLVN0cmluZyBDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0U3RyaW5nVmFsdWUoRXhjZXB0aW9u
Q29kZSYgZWMpIGNvbnN0CitFeGNlcHRpb25PcjxTdHJpbmc+IENTU1ByaW1pdGl2ZVZhbHVlOjpn
ZXRTdHJpbmdWYWx1ZSgpIGNvbnN0CiB7Ci0gICAgZWMgPSAwOwogICAgIHN3aXRjaCAobV9wcmlt
aXRpdmVVbml0VHlwZSkgewogICAgIGNhc2UgQ1NTX1NUUklORzoKICAgICBjYXNlIENTU19BVFRS
OgogICAgIGNhc2UgQ1NTX1VSSToKICAgICAgICAgcmV0dXJuIG1fdmFsdWUuc3RyaW5nOwogICAg
IGNhc2UgQ1NTX0ZPTlRfRkFNSUxZOgotICAgICAgICByZXR1cm4gbV92YWx1ZS5mb250RmFtaWx5
LT5mYW1pbHlOYW1lOworICAgICAgICByZXR1cm4gU3RyaW5nIHsgbV92YWx1ZS5mb250RmFtaWx5
LT5mYW1pbHlOYW1lIH07CiAgICAgY2FzZSBDU1NfVkFMVUVfSUQ6Ci0gICAgICAgIHJldHVybiB2
YWx1ZU5hbWUobV92YWx1ZS52YWx1ZUlEKTsKKyAgICAgICAgcmV0dXJuIFN0cmluZyB7IHZhbHVl
TmFtZShtX3ZhbHVlLnZhbHVlSUQpIH07CiAgICAgY2FzZSBDU1NfUFJPUEVSVFlfSUQ6Ci0gICAg
ICAgIHJldHVybiBwcm9wZXJ0eU5hbWUobV92YWx1ZS5wcm9wZXJ0eUlEKTsKKyAgICAgICAgcmV0
dXJuIFN0cmluZyB7IHByb3BlcnR5TmFtZShtX3ZhbHVlLnByb3BlcnR5SUQpIH07CiAgICAgZGVm
YXVsdDoKLSAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7Ci0gICAgICAgIGJyZWFrOwor
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSU5WQUxJRF9BQ0NFU1NfRVJSIH07CiAgICAgfQot
Ci0gICAgcmV0dXJuIFN0cmluZygpOwogfQogCi1TdHJpbmcgQ1NTUHJpbWl0aXZlVmFsdWU6Omdl
dFN0cmluZ1ZhbHVlKCkgY29uc3QKK1N0cmluZyBDU1NQcmltaXRpdmVWYWx1ZTo6c3RyaW5nVmFs
dWUoKSBjb25zdAogewogICAgIHN3aXRjaCAobV9wcmltaXRpdmVVbml0VHlwZSkgewogICAgIGNh
c2UgQ1NTX1NUUklORzoKQEAgLTk3Miw4MCArOTU4LDMzIEBAIFN0cmluZyBDU1NQcmltaXRpdmVW
YWx1ZTo6Z2V0U3RyaW5nVmFsdWUoKSBjb25zdAogICAgIGNhc2UgQ1NTX1BST1BFUlRZX0lEOgog
ICAgICAgICByZXR1cm4gcHJvcGVydHlOYW1lKG1fdmFsdWUucHJvcGVydHlJRCk7CiAgICAgZGVm
YXVsdDoKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICB9Ci0K
LSAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLUNvdW50ZXIqIENTU1ByaW1pdGl2ZVZhbHVlOjpn
ZXRDb3VudGVyVmFsdWUoRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CitFeGNlcHRpb25PcjxDb3Vu
dGVyKj4gQ1NTUHJpbWl0aXZlVmFsdWU6OmdldENvdW50ZXJWYWx1ZSgpIGNvbnN0CiB7Ci0gICAg
ZWMgPSAwOwotICAgIGlmIChtX3ByaW1pdGl2ZVVuaXRUeXBlICE9IENTU19DT1VOVEVSKSB7Ci0g
ICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9
Ci0KKyAgICBpZiAobV9wcmltaXRpdmVVbml0VHlwZSAhPSBDU1NfQ09VTlRFUikKKyAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IElOVkFMSURfQUNDRVNTX0VSUiB9OwogICAgIHJldHVybiBtX3Zh
bHVlLmNvdW50ZXI7CiB9CiAKLVJlY3QqIENTU1ByaW1pdGl2ZVZhbHVlOjpnZXRSZWN0VmFsdWUo
RXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CitFeGNlcHRpb25PcjxSZWN0Kj4gQ1NTUHJpbWl0aXZl
VmFsdWU6OmdldFJlY3RWYWx1ZSgpIGNvbnN0CiB7Ci0gICAgZWMgPSAwOwotICAgIGlmIChtX3By
aW1pdGl2ZVVuaXRUeXBlICE9IENTU19SRUNUKSB7Ci0gICAgICAgIGVjID0gSU5WQUxJRF9BQ0NF
U1NfRVJSOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KKyAgICBpZiAobV9wcmltaXRpdmVV
bml0VHlwZSAhPSBDU1NfUkVDVCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElOVkFMSURf
QUNDRVNTX0VSUiB9OwogICAgIHJldHVybiBtX3ZhbHVlLnJlY3Q7CiB9CiAKLVF1YWQqIENTU1By
aW1pdGl2ZVZhbHVlOjpnZXRRdWFkVmFsdWUoRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0Ci17Ci0g
ICAgZWMgPSAwOwotICAgIGlmIChtX3ByaW1pdGl2ZVVuaXRUeXBlICE9IENTU19RVUFEKSB7Ci0g
ICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9
Ci0KLSAgICByZXR1cm4gbV92YWx1ZS5xdWFkOwotfQotCi0jaWYgRU5BQkxFKENTU19TQ1JPTExf
U05BUCkKLUxlbmd0aFJlcGVhdCogQ1NTUHJpbWl0aXZlVmFsdWU6OmdldExlbmd0aFJlcGVhdFZh
bHVlKEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAotewotICAgIGVjID0gMDsKLSAgICBpZiAobV9w
cmltaXRpdmVVbml0VHlwZSAhPSBDU1NfTEVOR1RIX1JFUEVBVCkgewotICAgICAgICBlYyA9IElO
VkFMSURfQUNDRVNTX0VSUjsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgcmV0dXJu
IG1fdmFsdWUubGVuZ3RoUmVwZWF0OwotfQotI2VuZGlmCi0KLVJlZlB0cjxSR0JDb2xvcj4gQ1NT
UHJpbWl0aXZlVmFsdWU6OmdldFJHQkNvbG9yVmFsdWUoRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0
CitFeGNlcHRpb25PcjxSZWY8UkdCQ29sb3I+PiBDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0UkdCQ29s
b3JWYWx1ZSgpIGNvbnN0CiB7Ci0gICAgaWYgKG1fcHJpbWl0aXZlVW5pdFR5cGUgIT0gQ1NTX1JH
QkNPTE9SKSB7Ci0gICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICB9CisgICAgaWYgKG1fcHJpbWl0aXZlVW5pdFR5cGUgIT0gQ1NTX1JH
QkNPTE9SKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSU5WQUxJRF9BQ0NFU1NfRVJSIH07
CiAKLSAgICAvLyBGSU1YRTogVGhpcyBzaG91bGQgbm90IHJldHVybiBhIG5ldyBvYmplY3QgZm9y
IGVhY2ggaW52b2NhdGlvbi4KKyAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgbm90IHJldHVybiBh
IG5ldyBvYmplY3QgZm9yIGVhY2ggaW52b2NhdGlvbi4KICAgICByZXR1cm4gUkdCQ29sb3I6OmNy
ZWF0ZShtX3ZhbHVlLmNvbG9yLT5yZ2IoKSk7CiB9CiAKLVBhaXIqIENTU1ByaW1pdGl2ZVZhbHVl
OjpnZXRQYWlyVmFsdWUoRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0Ci17Ci0gICAgZWMgPSAwOwot
ICAgIGlmIChtX3ByaW1pdGl2ZVVuaXRUeXBlICE9IENTU19QQUlSKSB7Ci0gICAgICAgIGVjID0g
SU5WQUxJRF9BQ0NFU1NfRVJSOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICByZXR1
cm4gbV92YWx1ZS5wYWlyOwotfQotCiBORVZFUl9JTkxJTkUgUmVmPFN0cmluZ0ltcGw+IENTU1By
aW1pdGl2ZVZhbHVlOjpmb3JtYXROdW1iZXJWYWx1ZShjb25zdCBjaGFyKiBzdWZmaXgsIHVuc2ln
bmVkIHN1ZmZpeExlbmd0aCkgY29uc3QKIHsKICAgICBEZWNpbWFsTnVtYmVyIGRlY2ltYWwobV92
YWx1ZS5udW0pOwpAQCAtMTE3MiwxMiArMTExMSwxMiBAQCBBTFdBWVNfSU5MSU5FIFN0cmluZyBD
U1NQcmltaXRpdmVWYWx1ZTo6Zm9ybWF0TnVtYmVyRm9yQ3VzdG9tQ1NTVGV4dCgpIGNvbnN0CiAg
ICAgICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKICAgICB9CiAgICAgY2FzZSBDU1NfUkVD
VDoKLSAgICAgICAgcmV0dXJuIGdldFJlY3RWYWx1ZSgpLT5jc3NUZXh0KCk7CisgICAgICAgIHJl
dHVybiByZWN0VmFsdWUoKS0+Y3NzVGV4dCgpOwogICAgIGNhc2UgQ1NTX1FVQUQ6Ci0gICAgICAg
IHJldHVybiBnZXRRdWFkVmFsdWUoKS0+Y3NzVGV4dCgpOworICAgICAgICByZXR1cm4gcXVhZFZh
bHVlKCktPmNzc1RleHQoKTsKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgIGNhc2Ug
Q1NTX0xFTkdUSF9SRVBFQVQ6Ci0gICAgICAgIHJldHVybiBnZXRMZW5ndGhSZXBlYXRWYWx1ZSgp
LT5jc3NUZXh0KCk7CisgICAgICAgIHJldHVybiBsZW5ndGhSZXBlYXRWYWx1ZSgpLT5jc3NUZXh0
KCk7CiAjZW5kaWYKICAgICBjYXNlIENTU19QQVJTRVJfSEVYQ09MT1I6IHsKICAgICAgICAgUkdC
QTMyIHJnYjsKQEAgLTExODcsMTEgKzExMjYsMTEgQEAgQUxXQVlTX0lOTElORSBTdHJpbmcgQ1NT
UHJpbWl0aXZlVmFsdWU6OmZvcm1hdE51bWJlckZvckN1c3RvbUNTU1RleHQoKSBjb25zdAogICAg
IGNhc2UgQ1NTX1JHQkNPTE9SOgogICAgICAgICByZXR1cm4gY29sb3IoKS5jc3NUZXh0KCk7CiAg
ICAgY2FzZSBDU1NfUEFJUjoKLSAgICAgICAgcmV0dXJuIGdldFBhaXJWYWx1ZSgpLT5jc3NUZXh0
KCk7CisgICAgICAgIHJldHVybiBwYWlyVmFsdWUoKS0+Y3NzVGV4dCgpOwogI2lmIEVOQUJMRShE
QVNIQk9BUkRfU1VQUE9SVCkKICAgICBjYXNlIENTU19EQVNIQk9BUkRfUkVHSU9OOiB7CiAgICAg
ICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OwotICAgICAgICBmb3IgKERhc2hib2FyZFJlZ2lvbiog
cmVnaW9uID0gZ2V0RGFzaGJvYXJkUmVnaW9uVmFsdWUoKTsgcmVnaW9uOyByZWdpb24gPSByZWdp
b24tPm1fbmV4dC5nZXQoKSkgeworICAgICAgICBmb3IgKERhc2hib2FyZFJlZ2lvbiogcmVnaW9u
ID0gZGFzaGJvYXJkUmVnaW9uVmFsdWUoKTsgcmVnaW9uOyByZWdpb24gPSByZWdpb24tPm1fbmV4
dC5nZXQoKSkgewogICAgICAgICAgICAgaWYgKCFyZXN1bHQuaXNFbXB0eSgpKQogICAgICAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoJyAnKTsKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmRMaXRl
cmFsKCJkYXNoYm9hcmQtcmVnaW9uKCIpOwpAQCAtMTIwMiwxMyArMTE0MSwxMyBAQCBBTFdBWVNf
SU5MSU5FIFN0cmluZyBDU1NQcmltaXRpdmVWYWx1ZTo6Zm9ybWF0TnVtYmVyRm9yQ3VzdG9tQ1NT
VGV4dCgpIGNvbnN0CiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZExpdGVyYWwoIiByZWN0
YW5nbGUiKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIGlmIChyZWdpb24tPnRvcCgpLT5tX3ByaW1pdGl2ZVVuaXRUeXBlID09IENTU19WQUxV
RV9JRCAmJiByZWdpb24tPnRvcCgpLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVJbnZhbGlkKSB7
CisgICAgICAgICAgICBpZiAocmVnaW9uLT50b3AoKS0+bV9wcmltaXRpdmVVbml0VHlwZSA9PSBD
U1NfVkFMVUVfSUQgJiYgcmVnaW9uLT50b3AoKS0+dmFsdWVJRCgpID09IENTU1ZhbHVlSW52YWxp
ZCkgewogICAgICAgICAgICAgICAgIEFTU0VSVChyZWdpb24tPnJpZ2h0KCktPm1fcHJpbWl0aXZl
VW5pdFR5cGUgPT0gQ1NTX1ZBTFVFX0lEKTsKICAgICAgICAgICAgICAgICBBU1NFUlQocmVnaW9u
LT5ib3R0b20oKS0+bV9wcmltaXRpdmVVbml0VHlwZSA9PSBDU1NfVkFMVUVfSUQpOwogICAgICAg
ICAgICAgICAgIEFTU0VSVChyZWdpb24tPmxlZnQoKS0+bV9wcmltaXRpdmVVbml0VHlwZSA9PSBD
U1NfVkFMVUVfSUQpOwotICAgICAgICAgICAgICAgIEFTU0VSVChyZWdpb24tPnJpZ2h0KCktPmdl
dFZhbHVlSUQoKSA9PSBDU1NWYWx1ZUludmFsaWQpOwotICAgICAgICAgICAgICAgIEFTU0VSVChy
ZWdpb24tPmJvdHRvbSgpLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVJbnZhbGlkKTsKLSAgICAg
ICAgICAgICAgICBBU1NFUlQocmVnaW9uLT5sZWZ0KCktPmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1
ZUludmFsaWQpOworICAgICAgICAgICAgICAgIEFTU0VSVChyZWdpb24tPnJpZ2h0KCktPnZhbHVl
SUQoKSA9PSBDU1NWYWx1ZUludmFsaWQpOworICAgICAgICAgICAgICAgIEFTU0VSVChyZWdpb24t
PmJvdHRvbSgpLT52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVJbnZhbGlkKTsKKyAgICAgICAgICAgICAg
ICBBU1NFUlQocmVnaW9uLT5sZWZ0KCktPnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUludmFsaWQpOwog
ICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgJyk7
CiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChyZWdpb24tPnRvcCgpLT5jc3NUZXh0KCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmggYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaAppbmRleCBhOWE2Nzc4MWVlMGY0
NDFkNGM1Yzc4MzYxZDZkZjJhNDk3YWY4ZTRmLi4xMzJkOWFiNzhkOTFhY2I3NmZiOWYwOWJlMjZl
ZDFmNzNhNWYzN2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZl
VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaApAQCAt
MzMsMjMgKzMzLDIwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ1NTQmFzaWNT
aGFwZTsKIGNsYXNzIENTU0NhbGNWYWx1ZTsKIGNsYXNzIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRh
dGE7CiBjbGFzcyBDb3VudGVyOwogY2xhc3MgRGFzaGJvYXJkUmVnaW9uOworY2xhc3MgTGVuZ3Ro
UmVwZWF0OwogY2xhc3MgUGFpcjsKIGNsYXNzIFF1YWQ7CiBjbGFzcyBSR0JDb2xvcjsKIGNsYXNz
IFJlY3Q7CiBjbGFzcyBSZW5kZXJTdHlsZTsKLWNsYXNzIENTU0Jhc2ljU2hhcGU7Ci1zdHJ1Y3Qg
Q1NTUGFyc2VyVmFsdWU7Ci0KLSNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotY2xhc3MgTGVu
Z3RoUmVwZWF0OwotI2VuZGlmCiAKIHN0cnVjdCBDU1NGb250RmFtaWx5Oworc3RydWN0IENTU1Bh
cnNlclZhbHVlOwogc3RydWN0IExlbmd0aDsKIHN0cnVjdCBMZW5ndGhTaXplOwogCkBAIC0xNzgs
MzkgKzE3NSwyMiBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICAgICAgVU90aGVyCiAgICAgfTsKLSAg
ICBzdGF0aWMgVW5pdENhdGVnb3J5IHVuaXRDYXRlZ29yeShDU1NQcmltaXRpdmVWYWx1ZTo6VW5p
dFR5cGVzKTsKLQotICAgIGJvb2wgaXNBbmdsZSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1
cm4gbV9wcmltaXRpdmVVbml0VHlwZSA9PSBDU1NfREVHCi0gICAgICAgICAgICAgICB8fCBtX3By
aW1pdGl2ZVVuaXRUeXBlID09IENTU19SQUQKLSAgICAgICAgICAgICAgIHx8IG1fcHJpbWl0aXZl
VW5pdFR5cGUgPT0gQ1NTX0dSQUQKLSAgICAgICAgICAgICAgIHx8IG1fcHJpbWl0aXZlVW5pdFR5
cGUgPT0gQ1NTX1RVUk47Ci0gICAgfQorICAgIHN0YXRpYyBVbml0Q2F0ZWdvcnkgdW5pdENhdGVn
b3J5KFVuaXRUeXBlcyk7CisKKyAgICBib29sIGlzQW5nbGUoKSBjb25zdDsKICAgICBib29sIGlz
QXR0cigpIGNvbnN0IHsgcmV0dXJuIG1fcHJpbWl0aXZlVW5pdFR5cGUgPT0gQ1NTX0FUVFI7IH0K
ICAgICBib29sIGlzQ291bnRlcigpIGNvbnN0IHsgcmV0dXJuIG1fcHJpbWl0aXZlVW5pdFR5cGUg
PT0gQ1NTX0NPVU5URVI7IH0KICAgICBib29sIGlzRm9udEluZGVwZW5kZW50TGVuZ3RoKCkgY29u
c3QgeyByZXR1cm4gbV9wcmltaXRpdmVVbml0VHlwZSA+PSBDU1NfUFggJiYgbV9wcmltaXRpdmVV
bml0VHlwZSA8PSBDU1NfUEM7IH0KLSAgICBzdGF0aWMgYm9vbCBpc0ZvbnRSZWxhdGl2ZUxlbmd0
aCh1bnNpZ25lZCBwcmltaXRpdmVVbml0VHlwZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBwcmlt
aXRpdmVVbml0VHlwZSA9PSBDU1NfRU1TCi0gICAgICAgICAgICB8fCBwcmltaXRpdmVVbml0VHlw
ZSA9PSBDU1NfRVhTCi0gICAgICAgICAgICB8fCBwcmltaXRpdmVVbml0VHlwZSA9PSBDU1NfUkVN
UwotICAgICAgICAgICAgfHwgcHJpbWl0aXZlVW5pdFR5cGUgPT0gQ1NTX0NIUwotICAgICAgICAg
ICAgfHwgcHJpbWl0aXZlVW5pdFR5cGUgPT0gQ1NTX1FVSVJLWV9FTVM7Ci0gICAgfQotICAgIGJv
b2wgaXNGb250UmVsYXRpdmVMZW5ndGgoKSBjb25zdCB7IHJldHVybiBpc0ZvbnRSZWxhdGl2ZUxl
bmd0aChtX3ByaW1pdGl2ZVVuaXRUeXBlKTsgfQorICAgIHN0YXRpYyBib29sIGlzRm9udFJlbGF0
aXZlTGVuZ3RoKFVuaXRUeXBlcyk7CisgICAgYm9vbCBpc0ZvbnRSZWxhdGl2ZUxlbmd0aCgpIGNv
bnN0IHsgcmV0dXJuIGlzRm9udFJlbGF0aXZlTGVuZ3RoKHN0YXRpY19jYXN0PFVuaXRUeXBlcz4o
bV9wcmltaXRpdmVVbml0VHlwZSkpOyB9CiAgICAgCiAgICAgYm9vbCBpc1F1aXJreUVtcygpIGNv
bnN0IHsgcmV0dXJuIHByaW1pdGl2ZVR5cGUoKSA9PSBVbml0VHlwZXM6OkNTU19RVUlSS1lfRU1T
OyB9CiAKLSAgICBzdGF0aWMgYm9vbCBpc1ZpZXdwb3J0UGVyY2VudGFnZUxlbmd0aCh1bnNpZ25l
ZCBzaG9ydCB0eXBlKSB7IHJldHVybiB0eXBlID49IENTU19WVyAmJiB0eXBlIDw9IENTU19WTUFY
OyB9Ci0gICAgYm9vbCBpc1ZpZXdwb3J0UGVyY2VudGFnZUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJu
IGlzVmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKG1fcHJpbWl0aXZlVW5pdFR5cGUpOyB9CisgICAg
c3RhdGljIGJvb2wgaXNWaWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgoVW5pdFR5cGVzIHR5cGUpIHsg
cmV0dXJuIHR5cGUgPj0gQ1NTX1ZXICYmIHR5cGUgPD0gQ1NTX1ZNQVg7IH0KKyAgICBib29sIGlz
Vmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gaXNWaWV3cG9ydFBlcmNl
bnRhZ2VMZW5ndGgoc3RhdGljX2Nhc3Q8VW5pdFR5cGVzPihtX3ByaW1pdGl2ZVVuaXRUeXBlKSk7
IH0KIAotICAgIHN0YXRpYyBib29sIGlzTGVuZ3RoKHVuc2lnbmVkIHNob3J0IHR5cGUpCi0gICAg
ewotICAgICAgICByZXR1cm4gKHR5cGUgPj0gQ1NTX0VNUyAmJiB0eXBlIDw9IENTU19QQykgfHwg
dHlwZSA9PSBDU1NfUkVNUyB8fCB0eXBlID09IENTU19DSFMgfHwgaXNWaWV3cG9ydFBlcmNlbnRh
Z2VMZW5ndGgodHlwZSkgfHwgdHlwZSA9PSBDU1NfUVVJUktZX0VNUzsKLSAgICB9Ci0KLSAgICBi
b29sIGlzTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gaXNMZW5ndGgocHJpbWl0aXZlVHlwZSgpKTsg
fQorICAgIHN0YXRpYyBib29sIGlzTGVuZ3RoKFVuaXRUeXBlcyk7CisgICAgYm9vbCBpc0xlbmd0
aCgpIGNvbnN0IHsgcmV0dXJuIGlzTGVuZ3RoKHN0YXRpY19jYXN0PFVuaXRUeXBlcz4ocHJpbWl0
aXZlVHlwZSgpKSk7IH0KICAgICBib29sIGlzTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gcHJpbWl0
aXZlVHlwZSgpID09IENTU19OVU1CRVI7IH0KICAgICBib29sIGlzUGVyY2VudGFnZSgpIGNvbnN0
IHsgcmV0dXJuIHByaW1pdGl2ZVR5cGUoKSA9PSBDU1NfUEVSQ0VOVEFHRTsgfQogICAgIGJvb2wg
aXNQeCgpIGNvbnN0IHsgcmV0dXJuIHByaW1pdGl2ZVR5cGUoKSA9PSBDU1NfUFg7IH0KQEAgLTIz
MywxMiArMjEzLDggQEAgcHVibGljOgogICAgIGJvb2wgaXNEb3RzUGVyUGl4ZWwoKSBjb25zdCB7
IHJldHVybiBwcmltaXRpdmVUeXBlKCkgPT0gQ1NTX0RQUFg7IH0KICAgICBib29sIGlzRG90c1Bl
ckNlbnRpbWV0ZXIoKSBjb25zdCB7IHJldHVybiBwcmltaXRpdmVUeXBlKCkgPT0gQ1NTX0RQQ007
IH0KIAotICAgIHN0YXRpYyBib29sIGlzUmVzb2x1dGlvbih1bnNpZ25lZCBzaG9ydCB0eXBlKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIHR5cGUgPj0gQ1NTX0RQUFggJiYgdHlwZSA8PSBDU1NfRFBD
TTsKLSAgICB9Ci0KLSAgICBib29sIGlzUmVzb2x1dGlvbigpIGNvbnN0IHsgcmV0dXJuIGlzUmVz
b2x1dGlvbihwcmltaXRpdmVUeXBlKCkpOyB9CisgICAgc3RhdGljIGJvb2wgaXNSZXNvbHV0aW9u
KFVuaXRUeXBlcyk7CisgICAgYm9vbCBpc1Jlc29sdXRpb24oKSBjb25zdCB7IHJldHVybiBpc1Jl
c29sdXRpb24oc3RhdGljX2Nhc3Q8VW5pdFR5cGVzPihwcmltaXRpdmVUeXBlKCkpKTsgfQogICAg
IGJvb2wgaXNWaWV3cG9ydFBlcmNlbnRhZ2VXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpbWl0
aXZlVW5pdFR5cGUgPT0gQ1NTX1ZXOyB9CiAgICAgYm9vbCBpc1ZpZXdwb3J0UGVyY2VudGFnZUhl
aWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpbWl0aXZlVW5pdFR5cGUgPT0gQ1NTX1ZIOyB9CiAg
ICAgYm9vbCBpc1ZpZXdwb3J0UGVyY2VudGFnZU1heCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpbWl0
aXZlVW5pdFR5cGUgPT0gQ1NTX1ZNQVg7IH0KQEAgLTI1OCwxMjAgKzIzNCw3NCBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRlKGNvbnN0IExlbmd0aCYg
dmFsdWUsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBD
U1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSwgc3R5bGUpKTsgfQogICAgIHN0YXRpYyBSZWY8Q1NTUHJp
bWl0aXZlVmFsdWU+IGNyZWF0ZShjb25zdCBMZW5ndGhTaXplJiB2YWx1ZSwgY29uc3QgUmVuZGVy
U3R5bGUmIHN0eWxlKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHZh
bHVlLCBzdHlsZSkpOyB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgUmVmPENT
U1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGUoVCYmIHZhbHVlKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3RkOjpmb3J3YXJkPFQ+KHZhbHVlKSkp
OwotICAgIH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgUmVmPENTU1ByaW1pdGl2
ZVZhbHVlPiBjcmVhdGUoVCYmKTsKIAogICAgIC8vIFRoaXMgdmFsdWUgaXMgdXNlZCB0byBoYW5k
bGUgcXVpcmt5IG1hcmdpbnMgaW4gcmVmbG93IHJvb3RzIChib2R5LCB0ZCwgYW5kIHRoKSBsaWtl
IFdpbklFLgogICAgIC8vIFRoZSBiYXNpYyBpZGVhIGlzIHRoYXQgYSBzdHlsZXNoZWV0IGNhbiB1
c2UgdGhlIHZhbHVlIF9fcWVtIChmb3IgcXVpcmt5IGVtKSBpbnN0ZWFkIG9mIGVtLgogICAgIC8v
IFdoZW4gdGhlIHF1aXJreSB2YWx1ZSBpcyB1c2VkLCBpZiB5b3UncmUgaW4gcXVpcmtzIG1vZGUs
IHRoZSBtYXJnaW4gd2lsbCBjb2xsYXBzZSBhd2F5CiAgICAgLy8gaW5zaWRlIGEgdGFibGUgY2Vs
bC4KLSAgICBzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBjcmVhdGVBbGxvd2luZ01hcmdp
blF1aXJrKGRvdWJsZSB2YWx1ZSwgVW5pdFR5cGVzIHR5cGUpCi0gICAgewotICAgICAgICBDU1NQ
cmltaXRpdmVWYWx1ZSogcXVpcmtWYWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZSh2YWx1ZSwg
dHlwZSk7Ci0gICAgICAgIHF1aXJrVmFsdWUtPm1faXNRdWlya1ZhbHVlID0gdHJ1ZTsKLSAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpxdWlya1ZhbHVlKTsKLSAgICB9CisgICAgc3RhdGljIFJlZjxD
U1NQcmltaXRpdmVWYWx1ZT4gY3JlYXRlQWxsb3dpbmdNYXJnaW5RdWlyayhkb3VibGUgdmFsdWUs
IFVuaXRUeXBlcyk7CiAKICAgICB+Q1NTUHJpbWl0aXZlVmFsdWUoKTsKIAogICAgIHZvaWQgY2xl
YW51cCgpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdW5zaWduZWQgc2hvcnQgcHJpbWl0aXZlVHlw
ZSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldEZsb2F0
VmFsdWUodW5zaWduZWQgc2hvcnQgdW5pdFR5cGUsIGRvdWJsZSBmbG9hdFZhbHVlKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBFeGNlcHRpb25PcjxmbG9hdD4gZ2V0RmxvYXRWYWx1ZSh1bnNpZ25lZCBz
aG9ydCB1bml0VHlwZSkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8dm9p
ZD4gc2V0U3RyaW5nVmFsdWUodW5zaWduZWQgc2hvcnQgc3RyaW5nVHlwZSwgY29uc3QgU3RyaW5n
JiBzdHJpbmdWYWx1ZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8U3RyaW5nPiBn
ZXRTdHJpbmdWYWx1ZSgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPENv
dW50ZXIqPiBnZXRDb3VudGVyVmFsdWUoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBFeGNl
cHRpb25PcjxSZWN0Kj4gZ2V0UmVjdFZhbHVlKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
RXhjZXB0aW9uT3I8UmVmPFJHQkNvbG9yPj4gZ2V0UkdCQ29sb3JWYWx1ZSgpIGNvbnN0OwogCiAg
ICAgZG91YmxlIGNvbXB1dGVEZWdyZWVzKCkgY29uc3Q7CiAgICAgCiAgICAgYm9vbCBidWlsZFBh
cnNlclZhbHVlKENTU1BhcnNlclZhbHVlKikgY29uc3Q7CiAgICAgCiAgICAgZW51bSBUaW1lVW5p
dCB7IFNlY29uZHMsIE1pbGxpc2Vjb25kcyB9OwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCBU
aW1lVW5pdCB0aW1lVW5pdD4gVCBjb21wdXRlVGltZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBp
ZiAodGltZVVuaXQgPT0gU2Vjb25kcyAmJiBwcmltaXRpdmVUeXBlKCkgPT0gQ1NTX1MpCi0gICAg
ICAgICAgICByZXR1cm4gZ2V0VmFsdWU8VD4oKTsKLSAgICAgICAgaWYgKHRpbWVVbml0ID09IFNl
Y29uZHMgJiYgcHJpbWl0aXZlVHlwZSgpID09IENTU19NUykKLSAgICAgICAgICAgIHJldHVybiBn
ZXRWYWx1ZTxUPigpIC8gMTAwMDsKLSAgICAgICAgaWYgKHRpbWVVbml0ID09IE1pbGxpc2Vjb25k
cyAmJiBwcmltaXRpdmVUeXBlKCkgPT0gQ1NTX01TKQotICAgICAgICAgICAgcmV0dXJuIGdldFZh
bHVlPFQ+KCk7Ci0gICAgICAgIGlmICh0aW1lVW5pdCA9PSBNaWxsaXNlY29uZHMgJiYgcHJpbWl0
aXZlVHlwZSgpID09IENTU19TKQotICAgICAgICAgICAgcmV0dXJuIGdldFZhbHVlPFQ+KCkgKiAx
MDAwOwotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0g
ICAgfQotCi0gICAgLyoKLSAgICAgKiBjb21wdXRlcyBhIGxlbmd0aCBpbiBwaXhlbHMgb3V0IG9m
IHRoZSBnaXZlbiBDU1NWYWx1ZS4gTmVlZCB0aGUgUmVuZGVyU3R5bGUgdG8gZ2V0Ci0gICAgICog
dGhlIGZvbnRpbmZvIGluIGNhc2UgdmFsIGlzIGRlZmluZWQgaW4gZW0gb3IgZXguCi0gICAgICoK
LSAgICAgKiBUaGUgbWV0cmljcyBoYXZlIHRvIGJlIGEgYml0IGRpZmZlcmVudCBmb3Igc2NyZWVu
IGFuZCBwcmludGVyIG91dHB1dC4KLSAgICAgKiBGb3Igc2NyZWVuIG91dHB1dCB3ZSBhc3N1bWUg
MSBpbmNoID09IDcyIHB4LCBmb3IgcHJpbnRlciB3ZSBhc3N1bWUgMzAwIGRwaQotICAgICAqCi0g
ICAgICogdGhpcyBpcyBzY3JlZW4vcHJpbnRlciBkZXBlbmRlbnQsIHNvIHdlIHByb2JhYmx5IG5l
ZWQgYSBjb25maWcgb3B0aW9uIGZvciB0aGlzLAotICAgICAqIGFuZCBzb21lIHRvb2wgdG8gY2Fs
aWJyYXRlLgotICAgICAqLwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQgY29tcHV0ZUxlbmd0
aChjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJikgY29uc3Q7CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVCwgVGltZVVuaXQgdGltZVVuaXQ+IFQgY29tcHV0ZVRpbWUoKSBjb25zdDsKIAot
ICAgIC8vIENvbnZlcnRzIHRvIGEgTGVuZ3RoLCBtYXBwaW5nIHZhcmlvdXMgdW5pdCB0eXBlcyBh
cHByb3ByaWF0ZWx5LgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQgY29tcHV0ZUxlbmd0aChj
b25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8aW50
PiBMZW5ndGggY29udmVydFRvTGVuZ3RoKGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEm
KSBjb25zdDsKIAogICAgIGJvb2wgY29udmVydGluZ1RvTGVuZ3RoUmVxdWlyZXNOb25OdWxsU3R5
bGUoaW50IGxlbmd0aENvbnZlcnNpb24pIGNvbnN0OwogCi0gICAgLy8gdXNlIHdpdGggY2FyZSEh
IQotICAgIHZvaWQgc2V0UHJpbWl0aXZlVHlwZSh1bnNpZ25lZCBzaG9ydCB0eXBlKSB7IG1fcHJp
bWl0aXZlVW5pdFR5cGUgPSB0eXBlOyB9Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCBkb3VibGUgZ2V0
RG91YmxlVmFsdWUodW5zaWduZWQgc2hvcnQgdW5pdFR5cGUsIEV4Y2VwdGlvbkNvZGUmKSBjb25z
dDsKLSAgICBkb3VibGUgZ2V0RG91YmxlVmFsdWUodW5zaWduZWQgc2hvcnQgdW5pdFR5cGUpIGNv
bnN0OwotICAgIGRvdWJsZSBnZXREb3VibGVWYWx1ZSgpIGNvbnN0OwotCi0gICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXRGbG9hdFZhbHVlKHVuc2lnbmVkIHNob3J0IHVuaXRUeXBlLCBkb3VibGUg
ZmxvYXRWYWx1ZSwgRXhjZXB0aW9uQ29kZSYpOwotICAgIGZsb2F0IGdldEZsb2F0VmFsdWUodW5z
aWduZWQgc2hvcnQgdW5pdFR5cGUsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdCB7IHJldHVybiBn
ZXRWYWx1ZTxmbG9hdD4odW5pdFR5cGUsIGVjKTsgfQotICAgIGZsb2F0IGdldEZsb2F0VmFsdWUo
dW5zaWduZWQgc2hvcnQgdW5pdFR5cGUpIGNvbnN0IHsgcmV0dXJuIGdldFZhbHVlPGZsb2F0Pih1
bml0VHlwZSk7IH0KLSAgICBmbG9hdCBnZXRGbG9hdFZhbHVlKCkgY29uc3QgeyByZXR1cm4gZ2V0
VmFsdWU8ZmxvYXQ+KCk7IH0KKyAgICBkb3VibGUgZG91YmxlVmFsdWUoVW5pdFR5cGVzKSBjb25z
dDsKKyAgICBkb3VibGUgZG91YmxlVmFsdWUoKSBjb25zdDsKIAotICAgIGludCBnZXRJbnRWYWx1
ZSh1bnNpZ25lZCBzaG9ydCB1bml0VHlwZSwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0IHsgcmV0
dXJuIGdldFZhbHVlPGludD4odW5pdFR5cGUsIGVjKTsgfQotICAgIGludCBnZXRJbnRWYWx1ZSh1
bnNpZ25lZCBzaG9ydCB1bml0VHlwZSkgY29uc3QgeyByZXR1cm4gZ2V0VmFsdWU8aW50Pih1bml0
VHlwZSk7IH0KLSAgICBpbnQgZ2V0SW50VmFsdWUoKSBjb25zdCB7IHJldHVybiBnZXRWYWx1ZTxp
bnQ+KCk7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgVCB2YWx1ZShVbml0VHlw
ZXMgdHlwZSkgY29uc3QgeyByZXR1cm4gY2xhbXBUbzxUPihkb3VibGVWYWx1ZSh0eXBlKSk7IH0K
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgVCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJu
IGNsYW1wVG88VD4oZG91YmxlVmFsdWUoKSk7IH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IGlubGluZSBUIGdldFZhbHVlKHVuc2lnbmVkIHNob3J0IHVuaXRUeXBlLCBFeGNlcHRpb25Db2Rl
JiBlYykgY29uc3QgeyByZXR1cm4gY2xhbXBUbzxUPihnZXREb3VibGVWYWx1ZSh1bml0VHlwZSwg
ZWMpKTsgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBUIGdldFZhbHVlKHVuc2ln
bmVkIHNob3J0IHVuaXRUeXBlKSBjb25zdCB7IHJldHVybiBjbGFtcFRvPFQ+KGdldERvdWJsZVZh
bHVlKHVuaXRUeXBlKSk7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgVCBnZXRW
YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIGNsYW1wVG88VD4oZ2V0RG91YmxlVmFsdWUoKSk7IH0KKyAg
ICBmbG9hdCBmbG9hdFZhbHVlKFVuaXRUeXBlcyB0eXBlKSBjb25zdCB7IHJldHVybiB2YWx1ZTxm
bG9hdD4odHlwZSk7IH0KKyAgICBmbG9hdCBmbG9hdFZhbHVlKCkgY29uc3QgeyByZXR1cm4gdmFs
dWU8ZmxvYXQ+KCk7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U3RyaW5nVmFsdWUo
dW5zaWduZWQgc2hvcnQgc3RyaW5nVHlwZSwgY29uc3QgU3RyaW5nJiBzdHJpbmdWYWx1ZSwgRXhj
ZXB0aW9uQ29kZSYpOwotICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBnZXRTdHJpbmdWYWx1ZShF
eGNlcHRpb25Db2RlJikgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGdldFN0cmlu
Z1ZhbHVlKCkgY29uc3Q7CisgICAgaW50IGludFZhbHVlKFVuaXRUeXBlcyB0eXBlKSBjb25zdCB7
IHJldHVybiB2YWx1ZTxpbnQ+KHR5cGUpOyB9CisgICAgaW50IGludFZhbHVlKCkgY29uc3QgeyBy
ZXR1cm4gdmFsdWU8aW50PigpOyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBDb3VudGVyKiBnZXRD
b3VudGVyVmFsdWUoRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwotICAgIENvdW50ZXIqIGdldENvdW50
ZXJWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpbWl0aXZlVW5pdFR5cGUgIT0gQ1NTX0NPVU5U
RVIgPyBudWxscHRyIDogbV92YWx1ZS5jb3VudGVyOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgU3Ry
aW5nIHN0cmluZ1ZhbHVlKCkgY29uc3Q7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWN0KiBnZXRS
ZWN0VmFsdWUoRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwotICAgIFJlY3QqIGdldFJlY3RWYWx1ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fcHJpbWl0aXZlVW5pdFR5cGUgIT0gQ1NTX1JFQ1QgPyBudWxscHRy
IDogbV92YWx1ZS5yZWN0OyB9Ci0KLSAgICBRdWFkKiBnZXRRdWFkVmFsdWUoRXhjZXB0aW9uQ29k
ZSYpIGNvbnN0OwotICAgIFF1YWQqIGdldFF1YWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJp
bWl0aXZlVW5pdFR5cGUgIT0gQ1NTX1FVQUQgPyBudWxscHRyIDogbV92YWx1ZS5xdWFkOyB9Cisg
ICAgQ291bnRlciogY291bnRlclZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9wcmltaXRpdmVVbml0
VHlwZSAhPSBDU1NfQ09VTlRFUiA/IDAgOiBtX3ZhbHVlLmNvdW50ZXI7IH0KKyAgICBSZWN0KiBy
ZWN0VmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ByaW1pdGl2ZVVuaXRUeXBlICE9IENTU19SRUNU
ID8gMCA6IG1fdmFsdWUucmVjdDsgfQorICAgIFF1YWQqIHF1YWRWYWx1ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fcHJpbWl0aXZlVW5pdFR5cGUgIT0gQ1NTX1FVQUQgPyAwIDogbV92YWx1ZS5xdWFkOyB9
CiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQotICAgIExlbmd0aFJlcGVhdCogZ2V0TGVu
Z3RoUmVwZWF0VmFsdWUoRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwotICAgIExlbmd0aFJlcGVhdCog
Z2V0TGVuZ3RoUmVwZWF0VmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ByaW1pdGl2ZVVuaXRUeXBl
ICE9IENTU19MRU5HVEhfUkVQRUFUID8gbnVsbHB0ciA6IG1fdmFsdWUubGVuZ3RoUmVwZWF0OyB9
CisgICAgTGVuZ3RoUmVwZWF0KiBsZW5ndGhSZXBlYXRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cHJpbWl0aXZlVW5pdFR5cGUgIT0gQ1NTX0xFTkdUSF9SRVBFQVQgPyAwIDogbV92YWx1ZS5sZW5n
dGhSZXBlYXQ7IH0KICNlbmRpZgogCi0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFJHQkNvbG9y
PiBnZXRSR0JDb2xvclZhbHVlKEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKICAgICBjb25zdCBDb2xv
ciYgY29sb3IoKSBjb25zdCB7IEFTU0VSVChtX3ByaW1pdGl2ZVVuaXRUeXBlID09IENTU19SR0JD
T0xPUik7IHJldHVybiAqbV92YWx1ZS5jb2xvcjsgfQotCi0gICAgUGFpciogZ2V0UGFpclZhbHVl
KEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKLSAgICBQYWlyKiBnZXRQYWlyVmFsdWUoKSBjb25zdCB7
IHJldHVybiBtX3ByaW1pdGl2ZVVuaXRUeXBlICE9IENTU19QQUlSID8gbnVsbHB0ciA6IG1fdmFs
dWUucGFpcjsgfQorICAgIFBhaXIqIHBhaXJWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpbWl0
aXZlVW5pdFR5cGUgIT0gQ1NTX1BBSVIgPyBudWxscHRyIDogbV92YWx1ZS5wYWlyOyB9CiAKICNp
ZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCi0gICAgRGFzaGJvYXJkUmVnaW9uKiBnZXREYXNo
Ym9hcmRSZWdpb25WYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpbWl0aXZlVW5pdFR5cGUgIT0g
Q1NTX0RBU0hCT0FSRF9SRUdJT04gPyBudWxscHRyIDogbV92YWx1ZS5yZWdpb247IH0KKyAgICBE
YXNoYm9hcmRSZWdpb24qIGRhc2hib2FyZFJlZ2lvblZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9w
cmltaXRpdmVVbml0VHlwZSAhPSBDU1NfREFTSEJPQVJEX1JFR0lPTiA/IG51bGxwdHIgOiBtX3Zh
bHVlLnJlZ2lvbjsgfQogI2VuZGlmCiAKLSAgICBDU1NCYXNpY1NoYXBlKiBnZXRTaGFwZVZhbHVl
KCkgY29uc3QgeyByZXR1cm4gbV9wcmltaXRpdmVVbml0VHlwZSAhPSBDU1NfU0hBUEUgPyBudWxs
cHRyIDogbV92YWx1ZS5zaGFwZTsgfQotCisgICAgQ1NTQmFzaWNTaGFwZSogc2hhcGVWYWx1ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fcHJpbWl0aXZlVW5pdFR5cGUgIT0gQ1NTX1NIQVBFID8gbnVsbHB0
ciA6IG1fdmFsdWUuc2hhcGU7IH0KICAgICBjb25zdCBDU1NGb250RmFtaWx5JiBmb250RmFtaWx5
KCkgY29uc3QgeyBBU1NFUlQobV9wcmltaXRpdmVVbml0VHlwZSA9PSBDU1NfRk9OVF9GQU1JTFkp
OyByZXR1cm4gKm1fdmFsdWUuZm9udEZhbWlseTsgfQotCiAgICAgQ1NTQ2FsY1ZhbHVlKiBjc3ND
YWxjVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ByaW1pdGl2ZVVuaXRUeXBlICE9IENTU19DQUxD
ID8gbnVsbHB0ciA6IG1fdmFsdWUuY2FsYzsgfQogCi0gICAgQ1NTUHJvcGVydHlJRCBnZXRQcm9w
ZXJ0eUlEKCkgY29uc3QgeyByZXR1cm4gbV9wcmltaXRpdmVVbml0VHlwZSA9PSBDU1NfUFJPUEVS
VFlfSUQgPyBtX3ZhbHVlLnByb3BlcnR5SUQgOiBDU1NQcm9wZXJ0eUludmFsaWQ7IH0KLSAgICBD
U1NWYWx1ZUlEIGdldFZhbHVlSUQoKSBjb25zdCB7IHJldHVybiBtX3ByaW1pdGl2ZVVuaXRUeXBl
ID09IENTU19WQUxVRV9JRCA/IG1fdmFsdWUudmFsdWVJRCA6IENTU1ZhbHVlSW52YWxpZDsgfQor
ICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpbWl0aXZl
VW5pdFR5cGUgPT0gQ1NTX1BST1BFUlRZX0lEID8gbV92YWx1ZS5wcm9wZXJ0eUlEIDogQ1NTUHJv
cGVydHlJbnZhbGlkOyB9CisgICAgQ1NTVmFsdWVJRCB2YWx1ZUlEKCkgY29uc3QgeyByZXR1cm4g
bV9wcmltaXRpdmVVbml0VHlwZSA9PSBDU1NfVkFMVUVfSUQgPyBtX3ZhbHVlLnZhbHVlSUQgOiBD
U1NWYWx1ZUludmFsaWQ7IH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBvcGVy
YXRvciBUKCkgY29uc3Q7IC8vIERlZmluZWQgaW4gQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5o
CiAKQEAgLTM4Niw5ICszMTYsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NT
UHJpbWl0aXZlVmFsdWUmKSBjb25zdDsKIAogICAgIHN0YXRpYyBVbml0VHlwZXMgY2Fub25pY2Fs
VW5pdFR5cGVGb3JDYXRlZ29yeShVbml0Q2F0ZWdvcnkpOwotICAgIHN0YXRpYyBkb3VibGUgY29u
dmVyc2lvblRvQ2Fub25pY2FsVW5pdHNTY2FsZUZhY3Rvcih1bnNpZ25lZCBzaG9ydCB1bml0VHlw
ZSk7CisgICAgc3RhdGljIGRvdWJsZSBjb252ZXJzaW9uVG9DYW5vbmljYWxVbml0c1NjYWxlRmFj
dG9yKFVuaXRUeXBlcyk7CiAKLSAgICBzdGF0aWMgZG91YmxlIGNvbXB1dGVOb25DYWxjTGVuZ3Ro
RG91YmxlKGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmLCB1bnNpZ25lZCBzaG9ydCBw
cmltaXRpdmVUeXBlLCBkb3VibGUgdmFsdWUpOworICAgIHN0YXRpYyBkb3VibGUgY29tcHV0ZU5v
bkNhbGNMZW5ndGhEb3VibGUoY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYsIFVuaXRU
eXBlcywgZG91YmxlIHZhbHVlKTsKIAogI2lmIENPTVBJTEVSKE1TVkMpCiAgICAgLy8gRklYTUU6
IFRoaXMgc2hvdWxkIGJlIHByaXZhdGUsIGJ1dCBmb3Igc29tZSByZWFzb24gTVNWQyB0aGVuIGZh
aWxzIHRvIGludm9rZSBpdCBmcm9tIExhenlOZXZlckRlc3Ryb3llZDo6Y29uc3RydWN0LgpAQCAt
NDExLDE4ICszNDEsOCBAQCBwcml2YXRlOgogICAgIENTU1ByaW1pdGl2ZVZhbHVlKGRvdWJsZSwg
VW5pdFR5cGVzKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IENTU1ByaW1pdGl2ZVZhbHVl
KFQpOyAvLyBEZWZpbmVkIGluIENTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaAotCi0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4gQ1NTUHJpbWl0aXZlVmFsdWUoUmVmUHRyPFQ+JiYgdmFsdWUpCi0g
ICAgICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3MpCi0gICAgewotICAgICAgICBpbml0KFdU
Rk1vdmUodmFsdWUpKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBDU1NQcmlt
aXRpdmVWYWx1ZShSZWY8VD4mJiB2YWx1ZSkKLSAgICAgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVD
bGFzcykKLSAgICB7Ci0gICAgICAgIGluaXQoV1RGTW92ZSh2YWx1ZSkpOwotICAgIH0KKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBDU1NQcmltaXRpdmVWYWx1ZShSZWZQdHI8VD4mJik7CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4gQ1NTUHJpbWl0aXZlVmFsdWUoUmVmPFQ+JiYpOwogCiAgICAg
c3RhdGljIHZvaWQgY3JlYXRlKGludCk7IC8vIGNvbXBpbGUtdGltZSBndWFyZAogICAgIHN0YXRp
YyB2b2lkIGNyZWF0ZSh1bnNpZ25lZCk7IC8vIGNvbXBpbGUtdGltZSBndWFyZApAQCAtNDQyLDEz
ICszNjIsMTIgQEAgcHJpdmF0ZToKICNlbmRpZgogICAgIHZvaWQgaW5pdChSZWY8Q1NTQmFzaWNT
aGFwZT4mJik7CiAgICAgdm9pZCBpbml0KFJlZlB0cjxDU1NDYWxjVmFsdWU+JiYpOwotICAgIGJv
b2wgZ2V0RG91YmxlVmFsdWVJbnRlcm5hbChVbml0VHlwZXMgdGFyZ2V0VW5pdFR5cGUsIGRvdWJs
ZSogcmVzdWx0KSBjb25zdDsKKyAgICBPcHRpb25hbDxkb3VibGU+IGRvdWJsZVZhbHVlSW50ZXJu
YWwoVW5pdFR5cGVzIHRhcmdldFVuaXRUeXBlKSBjb25zdDsKIAogICAgIGRvdWJsZSBjb21wdXRl
TGVuZ3RoRG91YmxlKGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmKSBjb25zdDsKIAog
ICAgIEFMV0FZU19JTkxJTkUgU3RyaW5nIGZvcm1hdE51bWJlckZvckN1c3RvbUNTU1RleHQoKSBj
b25zdDsKLSAgICB0ZW1wbGF0ZSA8dW5zaWduZWQgY2hhcmFjdGVyQ291bnQ+Ci0gICAgQUxXQVlT
X0lOTElORSBSZWY8U3RyaW5nSW1wbD4gZm9ybWF0TnVtYmVyVmFsdWUoY29uc3QgY2hhciAoJmNo
YXJhY3RlcnMpW2NoYXJhY3RlckNvdW50XSkgY29uc3Q7CisgICAgdGVtcGxhdGU8dW5zaWduZWQg
Y2hhcmFjdGVyQ291bnQ+IEFMV0FZU19JTkxJTkUgUmVmPFN0cmluZ0ltcGw+IGZvcm1hdE51bWJl
clZhbHVlKGNvbnN0IGNoYXIgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJDb3VudF0pIGNvbnN0Owog
ICAgIE5FVkVSX0lOTElORSBSZWY8U3RyaW5nSW1wbD4gZm9ybWF0TnVtYmVyVmFsdWUoY29uc3Qg
Y2hhciogc3VmZml4LCB1bnNpZ25lZCBzdWZmaXhMZW5ndGgpIGNvbnN0OwogCiAgICAgdW5pb24g
ewpAQCAtNDcyLDYgKzM5MSw3NSBAQCBwcml2YXRlOgogICAgIH0gbV92YWx1ZTsKIH07CiAKK2lu
bGluZSBib29sIENTU1ByaW1pdGl2ZVZhbHVlOjppc0FuZ2xlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9wcmltaXRpdmVVbml0VHlwZSA9PSBDU1NfREVHCisgICAgICAgIHx8IG1fcHJpbWl0aXZl
VW5pdFR5cGUgPT0gQ1NTX1JBRAorICAgICAgICB8fCBtX3ByaW1pdGl2ZVVuaXRUeXBlID09IENT
U19HUkFECisgICAgICAgIHx8IG1fcHJpbWl0aXZlVW5pdFR5cGUgPT0gQ1NTX1RVUk47Cit9CisK
K2lubGluZSBib29sIENTU1ByaW1pdGl2ZVZhbHVlOjppc0ZvbnRSZWxhdGl2ZUxlbmd0aChVbml0
VHlwZXMgdHlwZSkKK3sKKyAgICByZXR1cm4gdHlwZSA9PSBDU1NfRU1TCisgICAgICAgIHx8IHR5
cGUgPT0gQ1NTX0VYUworICAgICAgICB8fCB0eXBlID09IENTU19SRU1TCisgICAgICAgIHx8IHR5
cGUgPT0gQ1NTX0NIUworICAgICAgICB8fCB0eXBlID09IENTU19RVUlSS1lfRU1TOworfQorCitp
bmxpbmUgYm9vbCBDU1NQcmltaXRpdmVWYWx1ZTo6aXNMZW5ndGgoVW5pdFR5cGVzIHR5cGUpCit7
CisgICAgcmV0dXJuICh0eXBlID49IENTU19FTVMgJiYgdHlwZSA8PSBDU1NfUEMpCisgICAgICAg
IHx8IHR5cGUgPT0gQ1NTX1JFTVMKKyAgICAgICAgfHwgdHlwZSA9PSBDU1NfQ0hTCisgICAgICAg
IHx8IGlzVmlld3BvcnRQZXJjZW50YWdlTGVuZ3RoKHR5cGUpCisgICAgICAgIHx8IHR5cGUgPT0g
Q1NTX1FVSVJLWV9FTVM7Cit9CisKK2lubGluZSBib29sIENTU1ByaW1pdGl2ZVZhbHVlOjppc1Jl
c29sdXRpb24oVW5pdFR5cGVzIHR5cGUpCit7CisgICAgcmV0dXJuIHR5cGUgPj0gQ1NTX0RQUFgg
JiYgdHlwZSA8PSBDU1NfRFBDTTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFJl
ZjxDU1NQcmltaXRpdmVWYWx1ZT4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShUJiYgdmFsdWUp
Cit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3RkOjpmb3J3
YXJkPFQ+KHZhbHVlKSkpOworfQorCitpbmxpbmUgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NQ
cmltaXRpdmVWYWx1ZTo6Y3JlYXRlQWxsb3dpbmdNYXJnaW5RdWlyayhkb3VibGUgdmFsdWUsIFVu
aXRUeXBlcyB0eXBlKQoreworICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBDU1NQcmlt
aXRpdmVWYWx1ZSh2YWx1ZSwgdHlwZSkpOworICAgIHJlc3VsdC0+bV9pc1F1aXJrVmFsdWUgPSB0
cnVlOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIENTU1By
aW1pdGl2ZVZhbHVlOjpUaW1lVW5pdCB0aW1lVW5pdD4gaW5saW5lIFQgQ1NTUHJpbWl0aXZlVmFs
dWU6OmNvbXB1dGVUaW1lKCkgY29uc3QKK3sKKyAgICBpZiAodGltZVVuaXQgPT0gU2Vjb25kcyAm
JiBwcmltaXRpdmVUeXBlKCkgPT0gQ1NTX1MpCisgICAgICAgIHJldHVybiB2YWx1ZTxUPigpOwor
ICAgIGlmICh0aW1lVW5pdCA9PSBTZWNvbmRzICYmIHByaW1pdGl2ZVR5cGUoKSA9PSBDU1NfTVMp
CisgICAgICAgIHJldHVybiB2YWx1ZTxUPigpIC8gMTAwMDsKKyAgICBpZiAodGltZVVuaXQgPT0g
TWlsbGlzZWNvbmRzICYmIHByaW1pdGl2ZVR5cGUoKSA9PSBDU1NfTVMpCisgICAgICAgIHJldHVy
biB2YWx1ZTxUPigpOworICAgIGlmICh0aW1lVW5pdCA9PSBNaWxsaXNlY29uZHMgJiYgcHJpbWl0
aXZlVHlwZSgpID09IENTU19TKQorICAgICAgICByZXR1cm4gdmFsdWU8VD4oKSAqIDEwMDA7Cisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3RlbXBsYXRlPHR5
cGVuYW1lIFQ+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoUmVm
UHRyPFQ+JiYgdmFsdWUpCisgICAgOiBDU1NWYWx1ZShQcmltaXRpdmVDbGFzcykKK3sKKyAgICBp
bml0KFdURk1vdmUodmFsdWUpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZShSZWY8VD4mJiB2YWx1ZSkKKyAgICA6
IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNzKQoreworICAgIGluaXQoV1RGTW92ZSh2YWx1ZSkpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQ1NT
X1ZBTFVFKENTU1ByaW1pdGl2ZVZhbHVlLCBpc1ByaW1pdGl2ZVZhbHVlKCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaWRsIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmlkbAppbmRleCAyMzRiMDBmYzU0OTlhMTJhZmYzZWQy
MDViZmJjOWE0NDA0YmViMjgzLi4yNDgyYzYyMDY0ZDY4NTM1MDJkYmYzYmQ0NjVkZDljMmUwOTY3
ZDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaWRs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5pZGwKQEAgLTIwLDcg
KzIwLDYgQEAKIFsKICAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAogXSBpbnRlcmZhY2Ug
Q1NTUHJpbWl0aXZlVmFsdWUgOiBDU1NWYWx1ZSB7Ci0KICAgICAvLyBVbml0VHlwZXMKICAgICBj
b25zdCB1bnNpZ25lZCBzaG9ydCBDU1NfVU5LTk9XTiA9IDA7CiAgICAgY29uc3QgdW5zaWduZWQg
c2hvcnQgQ1NTX05VTUJFUiA9IDE7CkBAIC01NSwxMyArNTQsMTMgQEAKICAgICAKICAgICByZWFk
b25seSBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQgcHJpbWl0aXZlVHlwZTsKIAotICAgIFtNYXlU
aHJvd0xlZ2FjeUV4Y2VwdGlvbl0gdm9pZCBzZXRGbG9hdFZhbHVlKG9wdGlvbmFsIHVuc2lnbmVk
IHNob3J0IHVuaXRUeXBlID0gMCwgb3B0aW9uYWwgdW5yZXN0cmljdGVkIGZsb2F0IGZsb2F0VmFs
dWUgPSBOYU4pOwotICAgIFtNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gdW5yZXN0cmljdGVkIGZs
b2F0IGdldEZsb2F0VmFsdWUob3B0aW9uYWwgdW5zaWduZWQgc2hvcnQgdW5pdFR5cGUgPSAwKTsK
KyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0RmxvYXRWYWx1ZShvcHRpb25hbCB1bnNp
Z25lZCBzaG9ydCB1bml0VHlwZSA9IDAsIG9wdGlvbmFsIHVucmVzdHJpY3RlZCBmbG9hdCBmbG9h
dFZhbHVlID0gTmFOKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHVucmVzdHJpY3RlZCBmbG9h
dCBnZXRGbG9hdFZhbHVlKG9wdGlvbmFsIHVuc2lnbmVkIHNob3J0IHVuaXRUeXBlID0gMCk7CisK
KyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0U3RyaW5nVmFsdWUob3B0aW9uYWwgdW5z
aWduZWQgc2hvcnQgc3RyaW5nVHlwZSA9IDAsIG9wdGlvbmFsIERPTVN0cmluZyBzdHJpbmdWYWx1
ZSk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBET01TdHJpbmcgZ2V0U3RyaW5nVmFsdWUoKTsK
IAotICAgIC8vIEZJWE1FOiBVc2luZyAidW5kZWZpbmVkIiBhcyBkZWZhdWx0IHBhcmFtZXRlciB2
YWx1ZSBpcyB3cm9uZy4KLSAgICBbTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHZvaWQgc2V0U3Ry
aW5nVmFsdWUob3B0aW9uYWwgdW5zaWduZWQgc2hvcnQgc3RyaW5nVHlwZSA9IDAsIG9wdGlvbmFs
IERPTVN0cmluZyBzdHJpbmdWYWx1ZSA9ICJ1bmRlZmluZWQiKTsKLSAgICBbTWF5VGhyb3dMZWdh
Y3lFeGNlcHRpb25dIERPTVN0cmluZyBnZXRTdHJpbmdWYWx1ZSgpOwotICAgIFtNYXlUaHJvd0xl
Z2FjeUV4Y2VwdGlvbl0gQ291bnRlciBnZXRDb3VudGVyVmFsdWUoKTsKLSAgICBbTWF5VGhyb3dM
ZWdhY3lFeGNlcHRpb25dIFJlY3QgZ2V0UmVjdFZhbHVlKCk7Ci0gICAgW01heVRocm93TGVnYWN5
RXhjZXB0aW9uXSBSR0JDb2xvciBnZXRSR0JDb2xvclZhbHVlKCk7CisgICAgW01heVRocm93RXhj
ZXB0aW9uXSBDb3VudGVyIGdldENvdW50ZXJWYWx1ZSgpOworICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gUmVjdCBnZXRSZWN0VmFsdWUoKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFJHQkNvbG9y
IGdldFJHQkNvbG9yVmFsdWUoKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1p
dGl2ZVZhbHVlTWFwcGluZ3MuaAppbmRleCAyZWJmMzIyYzNiNTg2OTdjZGFjM2VlOTZmNzlhMTU0
MmNmMDVjNzQ1Li4yZDVlOGNlNmY0OGQ4NThjY2FlMjIwMTU3MWExMzEzMWM1ZTZmYzY5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgKQEAgLTI3
LDggKzI3LDcgQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBDU1NQcmltaXRpdmVWYWx1
ZU1hcHBpbmdzX2gKLSNkZWZpbmUgQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5nc19oCisjcHJhZ21h
IG9uY2UKIAogI2luY2x1ZGUgIkNTU0NhbGN1bGF0aW9uVmFsdWUuaCIKICNpbmNsdWRlICJDU1NG
b250RmFtaWx5LmgiCkBAIC04Miw3ICs4MSw3IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZSh1bnNpZ25lZCBzaG9ydCBpKQogdGVtcGxhdGU8
PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIHVuc2lnbmVkIHNob3J0KCkgY29u
c3QKIHsKICAgICBpZiAocHJpbWl0aXZlVHlwZSgpID09IENTU19OVU1CRVIpCi0gICAgICAgIHJl
dHVybiBnZXRWYWx1ZTx1bnNpZ25lZCBzaG9ydD4oKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlPHVu
c2lnbmVkIHNob3J0PigpOwogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJu
IDA7CkBAIC05MSw3ICs5MCw3IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVl
OjpvcGVyYXRvciB1bnNpZ25lZCBzaG9ydCgpIGNvbnN0CiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQ
cmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgaW50KCkgY29uc3QKIHsKICAgICBpZiAocHJpbWl0aXZl
VHlwZSgpID09IENTU19OVU1CRVIpCi0gICAgICAgIHJldHVybiBnZXRWYWx1ZTxpbnQ+KCk7Cisg
ICAgICAgIHJldHVybiB2YWx1ZTxpbnQ+KCk7CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICByZXR1cm4gMDsKQEAgLTEwMCw3ICs5OSw3IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1By
aW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBpbnQoKSBjb25zdAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NT
UHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIHVuc2lnbmVkKCkgY29uc3QKIHsKICAgICBpZiAocHJp
bWl0aXZlVHlwZSgpID09IENTU19OVU1CRVIpCi0gICAgICAgIHJldHVybiBnZXRWYWx1ZTx1bnNp
Z25lZD4oKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlPHVuc2lnbmVkPigpOwogCiAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIDA7CkBAIC0xMTcsNyArMTE2LDcgQEAgdGVtcGxh
dGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKGZsb2F0IGkp
CiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgZmxvYXQoKSBj
b25zdAogewogICAgIGlmIChwcmltaXRpdmVUeXBlKCkgPT0gQ1NTX05VTUJFUikKLSAgICAgICAg
cmV0dXJuIGdldFZhbHVlPGZsb2F0PigpOworICAgICAgICByZXR1cm4gdmFsdWU8ZmxvYXQ+KCk7
CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gMC4wZjsKQEAgLTEzMywx
MCArMTMyLDEwIEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmlt
aXRpdmVWYWx1ZShMaW5lQ2xhbXBWYWx1ZSBpKQogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0
aXZlVmFsdWU6Om9wZXJhdG9yIExpbmVDbGFtcFZhbHVlKCkgY29uc3QKIHsKICAgICBpZiAocHJp
bWl0aXZlVHlwZSgpID09IENTU19OVU1CRVIpCi0gICAgICAgIHJldHVybiBMaW5lQ2xhbXBWYWx1
ZShnZXRWYWx1ZTxpbnQ+KCksIExpbmVDbGFtcExpbmVDb3VudCk7CisgICAgICAgIHJldHVybiBM
aW5lQ2xhbXBWYWx1ZSh2YWx1ZTxpbnQ+KCksIExpbmVDbGFtcExpbmVDb3VudCk7CiAKICAgICBp
ZiAocHJpbWl0aXZlVHlwZSgpID09IENTU19QRVJDRU5UQUdFKQotICAgICAgICByZXR1cm4gTGlu
ZUNsYW1wVmFsdWUoZ2V0VmFsdWU8aW50PigpLCBMaW5lQ2xhbXBQZXJjZW50YWdlKTsKKyAgICAg
ICAgcmV0dXJuIExpbmVDbGFtcFZhbHVlKHZhbHVlPGludD4oKSwgTGluZUNsYW1wUGVyY2VudGFn
ZSk7CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gTGluZUNsYW1wVmFs
dWUoKTsKQEAgLTQ2MTQsOCArNDYxMyw4IEBAIHRlbXBsYXRlPGludCBzdXBwb3J0ZWQ+IExlbmd0
aCBDU1NQcmltaXRpdmVWYWx1ZTo6Y29udmVydFRvTGVuZ3RoKGNvbnN0IENTU1RvTGVuCiAgICAg
aWYgKChzdXBwb3J0ZWQgJiBGaXhlZEZsb2F0Q29udmVyc2lvbikgJiYgaXNMZW5ndGgoKSkKICAg
ICAgICAgcmV0dXJuIExlbmd0aChjb21wdXRlTGVuZ3RoPGRvdWJsZT4oY29udmVyc2lvbkRhdGEp
LCBGaXhlZCk7CiAgICAgaWYgKChzdXBwb3J0ZWQgJiBQZXJjZW50Q29udmVyc2lvbikgJiYgaXNQ
ZXJjZW50YWdlKCkpCi0gICAgICAgIHJldHVybiBMZW5ndGgoZ2V0RG91YmxlVmFsdWUoKSwgUGVy
Y2VudCk7Ci0gICAgaWYgKChzdXBwb3J0ZWQgJiBBdXRvQ29udmVyc2lvbikgJiYgZ2V0VmFsdWVJ
RCgpID09IENTU1ZhbHVlQXV0bykKKyAgICAgICAgcmV0dXJuIExlbmd0aChkb3VibGVWYWx1ZSgp
LCBQZXJjZW50KTsKKyAgICBpZiAoKHN1cHBvcnRlZCAmIEF1dG9Db252ZXJzaW9uKSAmJiB2YWx1
ZUlEKCkgPT0gQ1NTVmFsdWVBdXRvKQogICAgICAgICByZXR1cm4gTGVuZ3RoKEF1dG8pOwogICAg
IGlmICgoc3VwcG9ydGVkICYgQ2FsY3VsYXRlZENvbnZlcnNpb24pICYmIGlzQ2FsY3VsYXRlZCgp
KQogICAgICAgICByZXR1cm4gTGVuZ3RoKGNzc0NhbGNWYWx1ZSgpLT5jcmVhdGVDYWxjdWxhdGlv
blZhbHVlKGNvbnZlcnNpb25EYXRhKSk7CkBAIC01MDQ1LDcgKzUwNDQsNyBAQCB0ZW1wbGF0ZTw+
IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoSW1hZ2VPcmllbnRh
dGlvbkVudW0gZSkKIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRv
ciBJbWFnZU9yaWVudGF0aW9uRW51bSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzQW5nbGUoKSk7
Ci0gICAgZG91YmxlIHF1YXJ0ZXJzID0gNCAqIGdldERvdWJsZVZhbHVlKENTU19UVVJOKTsKKyAg
ICBkb3VibGUgcXVhcnRlcnMgPSA0ICogZG91YmxlVmFsdWUoQ1NTX1RVUk4pOwogICAgIGludCBv
cmllbnRhdGlvbiA9IDMgJiBzdGF0aWNfY2FzdDxpbnQ+KHF1YXJ0ZXJzIDwgMCA/IGZsb29yKHF1
YXJ0ZXJzKSA6IGNlaWwocXVhcnRlcnMpKTsKICAgICBzd2l0Y2ggKG9yaWVudGF0aW9uKSB7CiAg
ICAgY2FzZSAwOgpAQCAtNTA5OSw3ICs1MDk4LDcgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKENTU0JveFR5cGUgY3NzQm94KQogCiB0ZW1w
bGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgQ1NTQm94VHlwZSgpIGNv
bnN0CiB7Ci0gICAgc3dpdGNoIChnZXRWYWx1ZUlEKCkpIHsKKyAgICBzd2l0Y2ggKHZhbHVlSUQo
KSkgewogICAgIGNhc2UgQ1NTVmFsdWVNYXJnaW5Cb3g6CiAgICAgICAgIHJldHVybiBNYXJnaW5C
b3g7CiAgICAgY2FzZSBDU1NWYWx1ZUJvcmRlckJveDoKQEAgLTU2ODYsNiArNTY4NSw1IEBAIHRl
bXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBGb250VmFyaWFudEFs
dGVybmF0ZXMoKSBjb25zdAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBG
b250VmFyaWFudEFsdGVybmF0ZXM6Ok5vcm1hbDsKIH0KLX0KIAotI2VuZGlmCit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUnVsZS5jcHAKaW5kZXggZjAxY2ZmYWZkOTA3OTVlNjY0NTJmMmZhMmIwNWMxZTMzNTMzMWQw
MC4uZTUyNjBhNDJhMDVmOTU3MDBjN2FmYzQyNzdmMzFmZGQ0OGUyY2MzZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1J1bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NSdWxlLmNwcApAQCAtNDUsOSArNDUsOSBAQCBDT01QSUxFX0FTU0VSVChTdHlsZVJ1bGVCYXNl
OjpSZWdpb24gPT0gc3RhdGljX2Nhc3Q8U3R5bGVSdWxlQmFzZTo6VHlwZT4oQ1NTUnVsZQogQ09N
UElMRV9BU1NFUlQoU3R5bGVSdWxlQmFzZTo6Vmlld3BvcnQgPT0gc3RhdGljX2Nhc3Q8U3R5bGVS
dWxlQmFzZTo6VHlwZT4oQ1NTUnVsZTo6V0VCS0lUX1ZJRVdQT1JUX1JVTEUpLCBlbnVtc19zaG91
bGRfbWF0Y2gpOwogI2VuZGlmCiAKLXZvaWQgQ1NTUnVsZTo6c2V0Q3NzVGV4dChjb25zdCBTdHJp
bmcmIC8qY3NzVGV4dCovLCBFeGNlcHRpb25Db2RlJiAvKmVjKi8pCitFeGNlcHRpb25Pcjx2b2lk
PiBDU1NSdWxlOjpzZXRDc3NUZXh0KGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICByZXR1cm4geyB9OwogfQogCiBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBDU1NS
dWxlOjpwYXJzZXJDb250ZXh0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NSdWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUnVsZS5oCmluZGV4IDM5NDYzZTYz
NTUyNjBlN2MzYzUzZjExNmFhNWU1OWZkMmIwZjUwYzAuLjg2NzI0YmFkMjk2ZmFlOTU4YTNmMWJk
ZDVmZjkwYTk0NmJhYWM3ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSdWxl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1J1bGUuaApAQCAtMjIsMTYgKzIyLDE1IEBA
CiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRl
ICJFeGNlcHRpb25Pci5oIgogI2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KLSNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDU1NT
dHlsZVNoZWV0OwogY2xhc3MgU3R5bGVSdWxlQmFzZTsKKwogc3RydWN0IENTU1BhcnNlckNvbnRl
eHQ7Ci10eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwogCiBjbGFzcyBDU1NSdWxlIDogcHVibGlj
IFJlZkNvdW50ZWQ8Q1NTUnVsZT4gewogcHVibGljOgpAQCAtODksNyArODgsNyBAQCBwdWJsaWM6
CiAKICAgICBDU1NSdWxlKiBwYXJlbnRSdWxlKCkgY29uc3QgeyByZXR1cm4gbV9wYXJlbnRJc1J1
bGUgPyBtX3BhcmVudFJ1bGUgOiAwOyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENz
c1RleHQoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOworICAgIFdFQkNPUkVfRVhQT1JU
IEV4Y2VwdGlvbk9yPHZvaWQ+IHNldENzc1RleHQoY29uc3QgU3RyaW5nJik7CiAKIHByb3RlY3Rl
ZDoKICAgICBDU1NSdWxlKENTU1N0eWxlU2hlZXQqIHBhcmVudCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NSdWxlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSdWxlLmlk
bAppbmRleCA1ODJlYWY5NTZmM2QzYmYyMGYzMzhiYzRhNmYwODk5Y2ViZWYzNmMzLi4xMjY4ZjEx
NzJkZjU2YWU4Y2VlYzUwYjFkOWIxNjFmNzcxMWVjYmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUnVsZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1J1bGUuaWRs
CkBAIC0zNiwxOSArMzYsMTYgQEAKICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBLRVlGUkFNRVNf
UlVMRSA9IDc7CiAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgS0VZRlJBTUVfUlVMRSA9IDg7CiAg
ICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1VQUE9SVFNfUlVMRSA9IDEyOwotI2lmIGRlZmluZWQo
RU5BQkxFX0NTU19ERVZJQ0VfQURBUFRBVElPTikgJiYgRU5BQkxFX0NTU19ERVZJQ0VfQURBUFRB
VElPTgotICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFdFQktJVF9WSUVXUE9SVF9SVUxFID0gMTU7
Ci0jZW5kaWYKLSNpZiBkZWZpbmVkKEVOQUJMRV9DU1NfUkVHSU9OUykgJiYgRU5BQkxFX0NTU19S
RUdJT05TCi0gICAgY29uc3QgdW5zaWduZWQgc2hvcnQgV0VCS0lUX1JFR0lPTl9SVUxFID0gMTY7
Ci0jZW5kaWYKKyAgICBbQ29uZGl0aW9uYWw9Q1NTX0RFVklDRV9BREFQVEFUSU9OXSBjb25zdCB1
bnNpZ25lZCBzaG9ydCBXRUJLSVRfVklFV1BPUlRfUlVMRSA9IDE1OworICAgIFtDb25kaXRpb25h
bD1DU1NfUkVHSU9OU10gY29uc3QgdW5zaWduZWQgc2hvcnQgV0VCS0lUX1JFR0lPTl9SVUxFID0g
MTY7CiAKLSAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBXRUJLSVRfS0VZRlJBTUVTX1JVTEUgPSA3
OyAvLyBBdm9pZCBicmVha2luZyBleGlzdGluZyBjb250ZW50LgorICAgIC8vIExlZ2FjeSBzeW5v
bnltcyBmb3IgdGhlIGFib3ZlLCBrZXB0IHRvIGF2b2lkIGJyZWFraW5nIGV4aXN0aW5nIGNvbnRl
bnQuCisgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgV0VCS0lUX0tFWUZSQU1FU19SVUxFID0gNzsK
ICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBXRUJLSVRfS0VZRlJBTUVfUlVMRSA9IDg7CiAKICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQgdHlwZTsKIAotICAgIFtTZXR0ZXJN
YXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gYXR0cmlidXRlIERPTVN0cmluZz8gY3NzVGV4dDsKKyAg
ICBbU2V0dGVyTWF5VGhyb3dFeGNlcHRpb25dIGF0dHJpYnV0ZSBET01TdHJpbmc/IGNzc1RleHQ7
CiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgQ1NTU3R5bGVTaGVldD8gcGFyZW50U3R5bGVTaGVl
dDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgQ1NTUnVsZT8gcGFyZW50UnVsZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5oCmluZGV4IDQ4ZmZmMmFhOGFkN2IyZjYyMzM3
MjdkZjM0ZGI5YTdjYmEwYmUyMzkuLjVlNDMyMWIyOGVjNjVkOGZmMjgxZTkzNmNhNTExODkwNDY2
ZjgzMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uaApAQCAtMTgs
MTAgKzE4LDEwIEBACiAgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KICAqLwogCi0jaWZu
ZGVmIENTU1N0eWxlRGVjbGFyYXRpb25faAotI2RlZmluZSBDU1NTdHlsZURlY2xhcmF0aW9uX2gK
KyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgorI2luY2x1ZGUg
IkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KIApAQCAtMzUsOCArMzUsNiBAQCBjbGFzcyBNdXRhYmxlU3R5bGVQcm9w
ZXJ0aWVzOwogY2xhc3MgU3R5bGVQcm9wZXJ0aWVzOwogY2xhc3MgU3R5bGVkRWxlbWVudDsKIAot
dHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKLQogY2xhc3MgQ1NTU3R5bGVEZWNsYXJhdGlvbiA6
IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENTU1N0
eWxlRGVjbGFyYXRpb24pOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTQ4
LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3R5bGVkRWxlbWVudCogcGFyZW50RWxl
bWVudCgpIGNvbnN0IHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICB2aXJ0dWFsIENTU1J1bGUqIHBh
cmVudFJ1bGUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q3NzVGV4dChjb25zdCBTdHJpbmcmLCBFeGNlcHRp
b25Db2RlJikgPSAwOworICAgIHZpcnR1YWwgRXhjZXB0aW9uT3I8dm9pZD4gc2V0Q3NzVGV4dChj
b25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCA9
IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgaXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QgPSAwOwog
ICAgIHZpcnR1YWwgUmVmUHRyPENTU1ZhbHVlPiBnZXRQcm9wZXJ0eUNTU1ZhbHVlKGNvbnN0IFN0
cmluZyYgcHJvcGVydHlOYW1lKSA9IDA7CkBAIC01NiwyNCArNTQsMjIgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgU3RyaW5nIGdldFByb3BlcnR5UHJpb3JpdHkoY29uc3QgU3RyaW5nJiBwcm9wZXJ0
eU5hbWUpID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyBnZXRQcm9wZXJ0eVNob3J0aGFuZChjb25z
dCBTdHJpbmcmIHByb3BlcnR5TmFtZSkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc1Byb3BlcnR5
SW1wbGljaXQoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgc2V0UHJvcGVydHkoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFN0cmluZyYg
dmFsdWUsIGNvbnN0IFN0cmluZyYgcHJpb3JpdHksIEV4Y2VwdGlvbkNvZGUmKSA9IDA7Ci0gICAg
dmlydHVhbCBTdHJpbmcgcmVtb3ZlUHJvcGVydHkoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUs
IEV4Y2VwdGlvbkNvZGUmKSA9IDA7CisgICAgdmlydHVhbCBFeGNlcHRpb25Pcjx2b2lkPiBzZXRQ
cm9wZXJ0eShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwg
Y29uc3QgU3RyaW5nJiBwcmlvcml0eSkgPSAwOworICAgIHZpcnR1YWwgRXhjZXB0aW9uT3I8U3Ry
aW5nPiByZW1vdmVQcm9wZXJ0eShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkgPSAwOwogCiAg
ICAgLy8gQ1NTUHJvcGVydHlJRCB2ZXJzaW9ucyBvZiB0aGUgQ1NTT00gZnVuY3Rpb25zIHRvIHN1
cHBvcnQgYmluZGluZ3MgYW5kIGVkaXRpbmcuCiAgICAgLy8gVXNlIHRoZSBub24tdmlydHVhbCBt
ZXRob2RzIGluIHRoZSBjb25jcmV0ZSBzdWJjbGFzc2VzIHdoZW4gcG9zc2libGUuCiAgICAgLy8g
VGhlIENTU1ZhbHVlIHJldHVybmVkIGJ5IHRoaXMgZnVuY3Rpb24gc2hvdWxkIG5vdCBiZSBleHBv
c2VkIHRvIHRoZSB3ZWIgYXMgaXQgbWF5IGJlIHVzZWQgYnkgbXVsdGlwbGUgZG9jdW1lbnRzIGF0
IHRoZSBzYW1lIHRpbWUuCiAgICAgdmlydHVhbCBSZWZQdHI8Q1NTVmFsdWU+IGdldFByb3BlcnR5
Q1NTVmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUlEKSA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcg
Z2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5SUQpID0gMDsKLSAgICB2aXJ0dWFs
IGJvb2wgc2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIHZh
bHVlLCBib29sIGltcG9ydGFudCwgRXhjZXB0aW9uQ29kZSYpID0gMDsKKyAgICB2aXJ0dWFsIEV4
Y2VwdGlvbk9yPGJvb2w+IHNldFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlJRCwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQpID0gMDsKIAogICAgIHZpcnR1YWwgUmVmPE11
dGFibGVTdHlsZVByb3BlcnRpZXM+IGNvcHlQcm9wZXJ0aWVzKCkgY29uc3QgPSAwOwogCi0gICAg
dmlydHVhbCBDU1NTdHlsZVNoZWV0KiBwYXJlbnRTdHlsZVNoZWV0KCkgY29uc3QgeyByZXR1cm4g
MDsgfQorICAgIHZpcnR1YWwgQ1NTU3R5bGVTaGVldCogcGFyZW50U3R5bGVTaGVldCgpIGNvbnN0
IHsgcmV0dXJuIG51bGxwdHI7IH0KIAogcHJvdGVjdGVkOgogICAgIENTU1N0eWxlRGVjbGFyYXRp
b24oKSB7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIENTU1N0
eWxlRGVjbGFyYXRpb25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxl
RGVjbGFyYXRpb24uaWRsIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24u
aWRsCmluZGV4IDQ3ODkzYTI1NjgyYjk0YzU3Mjk3MWNmOGVlNzFlYmRiODEyMTZiOWUuLjJjODVh
NGMwZDhhYTU2OWVjMGU0ZDUyYTU4MTFjNmVlMzNlMjQyMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5pZGwKQEAgLTI4LDE1ICsyOCwxNSBAQAogICAgIEpTQ3Vz
dG9tTWFya0Z1bmN0aW9uLAogICAgIFNraXBWVGFibGVWYWxpZGF0aW9uLAogXSBpbnRlcmZhY2Ug
Q1NTU3R5bGVEZWNsYXJhdGlvbiB7Ci0gICAgW1NldHRlck1heVRocm93TGVnYWN5RXhjZXB0aW9u
XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGNzc1RleHQ7CisgICAgW1NldHRlck1heVRocm93RXhjZXB0
aW9uXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGNzc1RleHQ7CiAKICAgICBET01TdHJpbmcgZ2V0UHJv
cGVydHlWYWx1ZShET01TdHJpbmcgcHJvcGVydHlOYW1lKTsKICAgICBbQ3VzdG9tXSBDU1NWYWx1
ZT8gZ2V0UHJvcGVydHlDU1NWYWx1ZShET01TdHJpbmcgcHJvcGVydHlOYW1lKTsKIAotICAgIFtN
YXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gRE9NU3RyaW5nIHJlbW92ZVByb3BlcnR5KERPTVN0cmlu
ZyBwcm9wZXJ0eU5hbWUpOworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIHJlbW92
ZVByb3BlcnR5KERPTVN0cmluZyBwcm9wZXJ0eU5hbWUpOwogICAgIERPTVN0cmluZz8gZ2V0UHJv
cGVydHlQcmlvcml0eShET01TdHJpbmcgcHJvcGVydHlOYW1lKTsKIAotICAgIFtNYXlUaHJvd0xl
Z2FjeUV4Y2VwdGlvbl0gdm9pZCBzZXRQcm9wZXJ0eShET01TdHJpbmcgcHJvcGVydHlOYW1lLCBb
VHJlYXROdWxsQXM9RW1wdHlTdHJpbmddIERPTVN0cmluZyB2YWx1ZSwgW1RyZWF0TnVsbEFzPUVt
cHR5U3RyaW5nXSBvcHRpb25hbCBET01TdHJpbmcgcHJpb3JpdHkgPSAiIik7CisgICAgW01heVRo
cm93RXhjZXB0aW9uXSB2b2lkIHNldFByb3BlcnR5KERPTVN0cmluZyBwcm9wZXJ0eU5hbWUsIFtU
cmVhdE51bGxBcz1FbXB0eVN0cmluZ10gRE9NU3RyaW5nIHZhbHVlLCBbVHJlYXROdWxsQXM9RW1w
dHlTdHJpbmddIG9wdGlvbmFsIERPTVN0cmluZyBwcmlvcml0eSA9ICIiKTsKIAogICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKICAgICBnZXR0ZXIgRE9NU3RyaW5n
IGl0ZW0odW5zaWduZWQgbG9uZyBpbmRleCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5j
cHAKaW5kZXggYWY4ZTI0NWY5OWQ3NDQyZTRhZjI4MjFmOTczYjg2YzIzNGI0Y2NmMS4uNWY5MWFh
MWZkZmFhYTYyMzY1NDc4ZjE3ZGRlOTYzNmI2MmQzYmM1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NT
dHlsZVNoZWV0LmNwcApAQCAtMjg0LDUzICsyODQsNDMgQEAgUmVmUHRyPENTU1J1bGVMaXN0PiBD
U1NTdHlsZVNoZWV0OjpydWxlcygpCiAgICAgcmV0dXJuIG5vbkNoYXJzZXRSdWxlczsKIH0KIAot
dW5zaWduZWQgQ1NTU3R5bGVTaGVldDo6ZGVwcmVjYXRlZEluc2VydFJ1bGUoY29uc3QgU3RyaW5n
JiBydWxlU3RyaW5nLCBFeGNlcHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPHVuc2lnbmVkPiBD
U1NTdHlsZVNoZWV0OjpkZXByZWNhdGVkSW5zZXJ0UnVsZShjb25zdCBTdHJpbmcmIHJ1bGVTdHJp
bmcpCiB7CiAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gb3duZXJEb2N1bWVudCgpKQogICAgICAg
ICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VM
ZXZlbDo6V2FybmluZywgQVNDSUlMaXRlcmFsKCJDYWxsaW5nIENTU1N0eWxlU2hlZXQuaW5zZXJ0
UnVsZSgpIHdpdGggb25lIGFyZ3VtZW50IGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSBwYXNzIHRoZSBp
bmRleCBhcmd1bWVudCBhcyB3ZWxsOiBpbnNlcnRSdWxlKHgsIDApLiIpKTsKIAotICAgIHJldHVy
biBpbnNlcnRSdWxlKHJ1bGVTdHJpbmcsIDAsIGVjKTsKKyAgICByZXR1cm4gaW5zZXJ0UnVsZShy
dWxlU3RyaW5nLCAwKTsKIH0KIAotdW5zaWduZWQgQ1NTU3R5bGVTaGVldDo6aW5zZXJ0UnVsZShj
b25zdCBTdHJpbmcmIHJ1bGVTdHJpbmcsIHVuc2lnbmVkIGluZGV4LCBFeGNlcHRpb25Db2RlJiBl
YykKK0V4Y2VwdGlvbk9yPHVuc2lnbmVkPiBDU1NTdHlsZVNoZWV0OjppbnNlcnRSdWxlKGNvbnN0
IFN0cmluZyYgcnVsZVN0cmluZywgdW5zaWduZWQgaW5kZXgpCiB7CiAgICAgQVNTRVJUKG1fY2hp
bGRSdWxlQ1NTT01XcmFwcGVycy5pc0VtcHR5KCkgfHwgbV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJz
LnNpemUoKSA9PSBtX2NvbnRlbnRzLT5ydWxlQ291bnQoKSk7CiAKLSAgICBlYyA9IDA7Ci0gICAg
aWYgKGluZGV4ID4gbGVuZ3RoKCkpIHsKLSAgICAgICAgZWMgPSBJTkRFWF9TSVpFX0VSUjsKLSAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgfQorICAgIGlmIChpbmRleCA+IGxlbmd0aCgpKQorICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgSU5ERVhfU0laRV9FUlIgfTsKICAgICBDU1NQYXJzZXIgcCht
X2NvbnRlbnRzLmdldCgpLnBhcnNlckNvbnRleHQoKSk7CiAgICAgUmVmUHRyPFN0eWxlUnVsZUJh
c2U+IHJ1bGUgPSBwLnBhcnNlUnVsZShtX2NvbnRlbnRzLnB0cigpLCBydWxlU3RyaW5nKTsKIAot
ICAgIGlmICghcnVsZSkgewotICAgICAgICBlYyA9IFNZTlRBWF9FUlI7Ci0gICAgICAgIHJldHVy
biAwOwotICAgIH0KKyAgICBpZiAoIXJ1bGUpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBT
WU5UQVhfRVJSIH07CiAKICAgICBSdWxlTXV0YXRpb25TY29wZSBtdXRhdGlvblNjb3BlKHRoaXMs
IFJ1bGVJbnNlcnRpb24sIGlzPFN0eWxlUnVsZUtleWZyYW1lcz4oKnJ1bGUpID8gZG93bmNhc3Q8
U3R5bGVSdWxlS2V5ZnJhbWVzPihydWxlLmdldCgpKSA6IG51bGxwdHIpOwogCiAgICAgYm9vbCBz
dWNjZXNzID0gbV9jb250ZW50cy5nZXQoKS53cmFwcGVySW5zZXJ0UnVsZShydWxlLnJlbGVhc2VO
b25OdWxsKCksIGluZGV4KTsKLSAgICBpZiAoIXN1Y2Nlc3MpIHsKLSAgICAgICAgZWMgPSBISUVS
QVJDSFlfUkVRVUVTVF9FUlI7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0gICAgICAgIAorICAg
IGlmICghc3VjY2VzcykKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEhJRVJBUkNIWV9SRVFV
RVNUX0VSUiB9OwogICAgIGlmICghbV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJzLmlzRW1wdHkoKSkK
ICAgICAgICAgbV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJzLmluc2VydChpbmRleCwgUmVmUHRyPENT
U1J1bGU+KCkpOwogCiAgICAgcmV0dXJuIGluZGV4OwogfQogCi12b2lkIENTU1N0eWxlU2hlZXQ6
OmRlbGV0ZVJ1bGUodW5zaWduZWQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9u
T3I8dm9pZD4gQ1NTU3R5bGVTaGVldDo6ZGVsZXRlUnVsZSh1bnNpZ25lZCBpbmRleCkKIHsKICAg
ICBBU1NFUlQobV9jaGlsZFJ1bGVDU1NPTVdyYXBwZXJzLmlzRW1wdHkoKSB8fCBtX2NoaWxkUnVs
ZUNTU09NV3JhcHBlcnMuc2l6ZSgpID09IG1fY29udGVudHMtPnJ1bGVDb3VudCgpKTsKIAotICAg
IGVjID0gMDsKLSAgICBpZiAoaW5kZXggPj0gbGVuZ3RoKCkpIHsKLSAgICAgICAgZWMgPSBJTkRF
WF9TSVpFX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoaW5kZXggPj0gbGVu
Z3RoKCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJTkRFWF9TSVpFX0VSUiB9OwogICAg
IFJ1bGVNdXRhdGlvblNjb3BlIG11dGF0aW9uU2NvcGUodGhpcyk7CiAKICAgICBtX2NvbnRlbnRz
LT53cmFwcGVyRGVsZXRlUnVsZShpbmRleCk7CkBAIC0zNDAsOSArMzMwLDExIEBAIHZvaWQgQ1NT
U3R5bGVTaGVldDo6ZGVsZXRlUnVsZSh1bnNpZ25lZCBpbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMp
CiAgICAgICAgICAgICBtX2NoaWxkUnVsZUNTU09NV3JhcHBlcnNbaW5kZXhdLT5zZXRQYXJlbnRT
dHlsZVNoZWV0KG51bGxwdHIpOwogICAgICAgICBtX2NoaWxkUnVsZUNTU09NV3JhcHBlcnMucmVt
b3ZlKGluZGV4KTsKICAgICB9CisKKyAgICByZXR1cm4geyB9OwogfQogCi1pbnQgQ1NTU3R5bGVT
aGVldDo6YWRkUnVsZShjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBjb25zdCBTdHJpbmcmIHN0eWxl
LCBPcHRpb25hbDx1bnNpZ25lZD4gaW5kZXgsIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9u
T3I8aW50PiBDU1NTdHlsZVNoZWV0OjphZGRSdWxlKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IsIGNv
bnN0IFN0cmluZyYgc3R5bGUsIE9wdGlvbmFsPHVuc2lnbmVkPiBpbmRleCkKIHsKICAgICBTdHJp
bmdCdWlsZGVyIHRleHQ7CiAgICAgdGV4dC5hcHBlbmQoc2VsZWN0b3IpOwpAQCAtMzUxLDcgKzM0
Myw5IEBAIGludCBDU1NTdHlsZVNoZWV0OjphZGRSdWxlKGNvbnN0IFN0cmluZyYgc2VsZWN0b3Is
IGNvbnN0IFN0cmluZyYgc3R5bGUsIE9wdGlvbmFsCiAgICAgaWYgKCFzdHlsZS5pc0VtcHR5KCkp
CiAgICAgICAgIHRleHQuYXBwZW5kKCcgJyk7CiAgICAgdGV4dC5hcHBlbmQoJ30nKTsKLSAgICBp
bnNlcnRSdWxlKHRleHQudG9TdHJpbmcoKSwgaW5kZXgudmFsdWVPcihsZW5ndGgoKSksIGVjKTsK
KyAgICBhdXRvIGluc2VydFJ1bGVSZXN1bHQgPSBpbnNlcnRSdWxlKHRleHQudG9TdHJpbmcoKSwg
aW5kZXgudmFsdWVPcihsZW5ndGgoKSkpOworICAgIGlmIChpbnNlcnRSdWxlUmVzdWx0Lmhhc0V4
Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gaW5zZXJ0UnVsZVJlc3VsdC5yZWxlYXNlRXhjZXB0
aW9uKCk7CiAgICAgCiAgICAgLy8gQXMgcGVyIE1pY3Jvc29mdCBkb2N1bWVudGF0aW9uLCBhbHdh
eXMgcmV0dXJuIC0xLgogICAgIHJldHVybiAtMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5o
CmluZGV4IGMxYWUxYmU3NGEzMWY4NTk1YzYzNGIyZmMwYWViZjc1N2MzNmU5NTAuLjc0NGE5YzI0
M2NkNjQyNDIzOWJmYTQ2NzAxZTlmOTZjMTNiNWFlMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxl
U2hlZXQuaApAQCAtMjEsNiArMjEsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDU1NQ
YXJzZXJNb2RlLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNsdWRlICJTdHlsZVNo
ZWV0LmgiCiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC00
OSw4ICs1MCw2IEBAIG5hbWVzcGFjZSBTdHlsZSB7CiBjbGFzcyBTY29wZTsKIH0KIAotdHlwZWRl
ZiBpbnQgRXhjZXB0aW9uQ29kZTsKLQogY2xhc3MgQ1NTU3R5bGVTaGVldCBmaW5hbCA6IHB1Ymxp
YyBTdHlsZVNoZWV0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPENTU1N0eWxlU2hlZXQ+IGNy
ZWF0ZShSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmLCBDU1NJbXBvcnRSdWxlKiBvd25lclJ1bGUg
PSAwKTsKQEAgLTY4LDE0ICs2NywxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXREaXNhYmxlZChi
b29sKSBmaW5hbDsKICAgICAKICAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8Q1NTUnVsZUxpc3Q+
IGNzc1J1bGVzKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdW5zaWduZWQgaW5zZXJ0UnVsZShjb25z
dCBTdHJpbmcmIHJ1bGUsIHVuc2lnbmVkIGluZGV4LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdW5z
aWduZWQgZGVwcmVjYXRlZEluc2VydFJ1bGUoY29uc3QgU3RyaW5nJiBydWxlLCBFeGNlcHRpb25D
b2RlJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkZWxldGVSdWxlKHVuc2lnbmVkIGluZGV4
LCBFeGNlcHRpb25Db2RlJik7CisgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8dW5zaWdu
ZWQ+IGluc2VydFJ1bGUoY29uc3QgU3RyaW5nJiBydWxlLCB1bnNpZ25lZCBpbmRleCk7CisgICAg
RXhjZXB0aW9uT3I8dW5zaWduZWQ+IGRlcHJlY2F0ZWRJbnNlcnRSdWxlKGNvbnN0IFN0cmluZyYg
cnVsZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8dm9pZD4gZGVsZXRlUnVsZSh1
bnNpZ25lZCBpbmRleCk7CiAgICAgCi0gICAgLy8gSUUgRXh0ZW5zaW9ucwogICAgIFdFQkNPUkVf
RVhQT1JUIFJlZlB0cjxDU1NSdWxlTGlzdD4gcnVsZXMoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBp
bnQgYWRkUnVsZShjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBjb25zdCBTdHJpbmcmIHN0eWxlLCBP
cHRpb25hbDx1bnNpZ25lZD4gaW5kZXgsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHJlbW92
ZVJ1bGUodW5zaWduZWQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmIGVjKSB7IGRlbGV0ZVJ1bGUoaW5k
ZXgsIGVjKTsgfQorICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlvbk9yPGludD4gYWRkUnVsZShj
b25zdCBTdHJpbmcmIHNlbGVjdG9yLCBjb25zdCBTdHJpbmcmIHN0eWxlLCBPcHRpb25hbDx1bnNp
Z25lZD4gaW5kZXgpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHJlbW92ZVJ1bGUodW5zaWduZWQg
aW5kZXgpIHsgcmV0dXJuIGRlbGV0ZVJ1bGUoaW5kZXgpOyB9CiAgICAgCiAgICAgLy8gRm9yIENT
U1J1bGVMaXN0LgogICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaWRsIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1N0eWxlU2hlZXQuaWRsCmluZGV4IDk1MzhmODU2ODQzMTlmMjYzZDgwMzY4OGFmNDM1OWY2NWY5
ZWY3NjYuLjBjZWI0MTViN2U3NTM2ODg0MWJiOTMwODYzYTU3Njg2Mjk3NDY2NjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmlkbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVTaGVldC5pZGwKQEAgLTIyLDE0ICsyMiwxNCBAQCBpbnRlcmZhY2Ug
Q1NTU3R5bGVTaGVldCA6IFN0eWxlU2hlZXQgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBDU1NS
dWxlIG93bmVyUnVsZTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgQ1NTUnVsZUxpc3QgY3NzUnVs
ZXM7CiAKLSAgICBbTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHVuc2lnbmVkIGxvbmcgaW5zZXJ0
UnVsZShET01TdHJpbmcgcnVsZSwgdW5zaWduZWQgbG9uZyBpbmRleCk7Ci0gICAgW01heVRocm93
TGVnYWN5RXhjZXB0aW9uLCBJbXBsZW1lbnRlZEFzPWRlcHJlY2F0ZWRJbnNlcnRSdWxlXSB1bnNp
Z25lZCBsb25nIGluc2VydFJ1bGUoRE9NU3RyaW5nIHJ1bGUpOyAvLyBEZXByZWNhdGVkLgorICAg
IFtNYXlUaHJvd0V4Y2VwdGlvbl0gdW5zaWduZWQgbG9uZyBpbnNlcnRSdWxlKERPTVN0cmluZyBy
dWxlLCB1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb24sIEltcGxl
bWVudGVkQXM9ZGVwcmVjYXRlZEluc2VydFJ1bGVdIHVuc2lnbmVkIGxvbmcgaW5zZXJ0UnVsZShE
T01TdHJpbmcgcnVsZSk7IC8vIERlcHJlY2F0ZWQuCiAKLSAgICBbTWF5VGhyb3dMZWdhY3lFeGNl
cHRpb25dIHZvaWQgZGVsZXRlUnVsZSh1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICBbTWF5VGhy
b3dFeGNlcHRpb25dIHZvaWQgZGVsZXRlUnVsZSh1bnNpZ25lZCBsb25nIGluZGV4KTsKIAogICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBDU1NSdWxlTGlzdCBydWxlczsKIAotICAgIC8vIEZJWE1FOiBU
aG9zZSBvcGVyYXRpb25zIGFyZSBXZWJLaXQtc3BlY2lmaWMuCi0gICAgW01heVRocm93TGVnYWN5
RXhjZXB0aW9uXSBsb25nIGFkZFJ1bGUob3B0aW9uYWwgRE9NU3RyaW5nIHNlbGVjdG9yID0gInVu
ZGVmaW5lZCIsIG9wdGlvbmFsIERPTVN0cmluZyBzdHlsZSA9ICJ1bmRlZmluZWQiLCBvcHRpb25h
bCB1bnNpZ25lZCBsb25nIGluZGV4KTsKLSAgICBbTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHZv
aWQgcmVtb3ZlUnVsZShvcHRpb25hbCB1bnNpZ25lZCBsb25nIGluZGV4ID0gMCk7CisgICAgLy8g
VGhlIGZvbGxvd2luZyB0d28gb3BlcmF0aW9ucyBhcmUgV2ViS2l0LXNwZWNpZmljLgorICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gbG9uZyBhZGRSdWxlKG9wdGlvbmFsIERPTVN0cmluZyBzZWxlY3Rv
ciA9ICJ1bmRlZmluZWQiLCBvcHRpb25hbCBET01TdHJpbmcgc3R5bGUgPSAidW5kZWZpbmVkIiwg
b3B0aW9uYWwgdW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSB2
b2lkIHJlbW92ZVJ1bGUob3B0aW9uYWwgdW5zaWduZWQgbG9uZyBpbmRleCA9IDApOwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdXBwb3J0c1J1bGUuaWRsIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1N1cHBvcnRzUnVsZS5pZGwKaW5kZXggYWQzNjRmNjM0YTAyZTY5YjZm
OTFmMWQ1ZjU5MjQ3OGRmMDExOTJjOC4uZjk2NTAwYjE5MmIxMjc0OWNjNTQ4M2Y5ZjE4MTI0OGZi
OTRmYmM3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N1cHBvcnRzUnVsZS5p
ZGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N1cHBvcnRzUnVsZS5pZGwKQEAgLTMwLDcg
KzMwLDYgQEAgaW50ZXJmYWNlIENTU1N1cHBvcnRzUnVsZSA6IENTU1J1bGUgewogICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBDU1NSdWxlTGlzdCBjc3NSdWxlczsKICAgICByZWFkb25seSBhdHRyaWJ1
dGUgRE9NU3RyaW5nIGNvbmRpdGlvblRleHQ7CiAKLSAgICBbTWF5VGhyb3dMZWdhY3lFeGNlcHRp
b25dIHVuc2lnbmVkIGxvbmcgaW5zZXJ0UnVsZShET01TdHJpbmcgcnVsZSwgdW5zaWduZWQgbG9u
ZyBpbmRleCk7Ci0gICAgW01heVRocm93TGVnYWN5RXhjZXB0aW9uXSB2b2lkIGRlbGV0ZVJ1bGUo
dW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSB1bnNpZ25lZCBs
b25nIGluc2VydFJ1bGUoRE9NU3RyaW5nIHJ1bGUsIHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAg
IFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBkZWxldGVSdWxlKHVuc2lnbmVkIGxvbmcgaW5kZXgp
OwogfTsKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RvU3R5bGVNYXAuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RvU3R5bGVNYXAuY3BwCmluZGV4IDliZDJmZDZiZTJl
YzIzYjM3ZDg2MDE0N2JlNzQ0NDA0MjgxMDdhYzQuLjhjZjVjN2U4Y2U3NWE2MGU1ZmVlMGNlNDVh
NTJiYjRjYjUxMDNjMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUb1N0eWxl
TWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVG9TdHlsZU1hcC5jcHAKQEAgLTgx
LDcgKzgxLDcgQEAgdm9pZCBDU1NUb1N0eWxlTWFwOjptYXBGaWxsQXR0YWNobWVudChDU1NQcm9w
ZXJ0eUlEIHByb3BlcnR5SUQsIEZpbGxMYXllciYgbGF5ZXIKICAgICBpZiAoIWlzPENTU1ByaW1p
dGl2ZVZhbHVlPih2YWx1ZSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHN3aXRjaCAoZG93bmNh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS5nZXRWYWx1ZUlEKCkpIHsKKyAgICBzd2l0Y2gg
KGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkudmFsdWVJRCgpKSB7CiAgICAgY2Fz
ZSBDU1NWYWx1ZUZpeGVkOgogICAgICAgICBsYXllci5zZXRBdHRhY2htZW50KEZpeGVkQmFja2dy
b3VuZEF0dGFjaG1lbnQpOwogICAgICAgICBicmVhazsKQEAgLTE4Niw3ICsxODYsNyBAQCB2b2lk
IENTU1RvU3R5bGVNYXA6Om1hcEZpbGxSZXBlYXRZKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwg
RmlsbExheWVyJiBsYXllciwgYwogCiBzdGF0aWMgaW5saW5lIGJvb2wgY29udmVydFRvTGVuZ3Ro
U2l6ZShjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYgcHJpbWl0aXZlVmFsdWUsIENTU1RvTGVuZ3Ro
Q29udmVyc2lvbkRhdGEgY29udmVyc2lvbkRhdGEsIExlbmd0aFNpemUmIHNpemUpCiB7Ci0gICAg
aWYgKGF1dG8qIHBhaXIgPSBwcmltaXRpdmVWYWx1ZS5nZXRQYWlyVmFsdWUoKSkgeworICAgIGlm
IChhdXRvKiBwYWlyID0gcHJpbWl0aXZlVmFsdWUucGFpclZhbHVlKCkpIHsKICAgICAgICAgc2l6
ZS5zZXRXaWR0aChwYWlyLT5maXJzdCgpLT5jb252ZXJ0VG9MZW5ndGg8QW55Q29udmVyc2lvbj4o
Y29udmVyc2lvbkRhdGEpKTsKICAgICAgICAgc2l6ZS5zZXRIZWlnaHQocGFpci0+c2Vjb25kKCkt
PmNvbnZlcnRUb0xlbmd0aDxBbnlDb252ZXJzaW9uPihjb252ZXJzaW9uRGF0YSkpOwogICAgIH0g
ZWxzZQpAQCAtMjA3LDcgKzIwNyw3IEBAIHZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFwRmlsbFNpemUo
Q1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBGaWxsTGF5ZXImIGxheWVyLCBjb25zCiAKICAgICBh
dXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7
CiAgICAgRmlsbFNpemUgZmlsbFNpemU7Ci0gICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS5nZXRW
YWx1ZUlEKCkpIHsKKyAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSkgewogICAg
IGNhc2UgQ1NTVmFsdWVDb250YWluOgogICAgICAgICBmaWxsU2l6ZS50eXBlID0gQ29udGFpbjsK
ICAgICAgICAgYnJlYWs7CkBAIC0yMzQsNyArMjM0LDcgQEAgdm9pZCBDU1NUb1N0eWxlTWFwOjpt
YXBGaWxsWFBvc2l0aW9uKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgRmlsbExheWVyJiBsYXll
ciwKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byogcHJpbWl0aXZlVmFsdWUgPSAmZG93bmNh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKLSAgICBQYWlyKiBwYWlyID0gcHJpbWl0aXZl
VmFsdWUtPmdldFBhaXJWYWx1ZSgpOworICAgIFBhaXIqIHBhaXIgPSBwcmltaXRpdmVWYWx1ZS0+
cGFpclZhbHVlKCk7CiAgICAgaWYgKHBhaXIpIHsKICAgICAgICAgQVNTRVJUX1VOVVNFRChwcm9w
ZXJ0eUlELCBwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWCB8fCBw
cm9wZXJ0eUlEID09IENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWCk7CiAgICAgICAgIHBy
aW1pdGl2ZVZhbHVlID0gcGFpci0+c2Vjb25kKCk7CkBAIC0yNDQsNyArMjQ0LDcgQEAgdm9pZCBD
U1NUb1N0eWxlTWFwOjptYXBGaWxsWFBvc2l0aW9uKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwg
RmlsbExheWVyJiBsYXllciwKICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmlzTGVuZ3RoKCkpCiAg
ICAgICAgIGxlbmd0aCA9IHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoPExlbmd0aD4obV9y
ZXNvbHZlci0+c3RhdGUoKS5jc3NUb0xlbmd0aENvbnZlcnNpb25EYXRhKCkpOwogICAgIGVsc2Ug
aWYgKHByaW1pdGl2ZVZhbHVlLT5pc1BlcmNlbnRhZ2UoKSkKLSAgICAgICAgbGVuZ3RoID0gTGVu
Z3RoKHByaW1pdGl2ZVZhbHVlLT5nZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKKyAgICAgICAg
bGVuZ3RoID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5kb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsK
ICAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS0+aXNDYWxjdWxhdGVkUGVyY2VudGFnZVdpdGhM
ZW5ndGgoKSkKICAgICAgICAgbGVuZ3RoID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5jc3NDYWxj
VmFsdWUoKS0+Y3JlYXRlQ2FsY3VsYXRpb25WYWx1ZShtX3Jlc29sdmVyLT5zdGF0ZSgpLmNzc1Rv
TGVuZ3RoQ29udmVyc2lvbkRhdGEoKSkpOwogICAgIGVsc2UKQEAgLTI2Niw3ICsyNjYsNyBAQCB2
b2lkIENTU1RvU3R5bGVNYXA6Om1hcEZpbGxZUG9zaXRpb24oQ1NTUHJvcGVydHlJRCBwcm9wZXJ0
eUlELCBGaWxsTGF5ZXImIGxheWVyLAogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvKiBwcmlt
aXRpdmVWYWx1ZSA9ICZkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwotICAgIFBh
aXIqIHBhaXIgPSBwcmltaXRpdmVWYWx1ZS0+Z2V0UGFpclZhbHVlKCk7CisgICAgUGFpciogcGFp
ciA9IHByaW1pdGl2ZVZhbHVlLT5wYWlyVmFsdWUoKTsKICAgICBpZiAocGFpcikgewogICAgICAg
ICBBU1NFUlRfVU5VU0VEKHByb3BlcnR5SUQsIHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kUG9zaXRpb25ZIHx8IHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9z
aXRpb25ZKTsKICAgICAgICAgcHJpbWl0aXZlVmFsdWUgPSBwYWlyLT5zZWNvbmQoKTsKQEAgLTI3
Niw3ICsyNzYsNyBAQCB2b2lkIENTU1RvU3R5bGVNYXA6Om1hcEZpbGxZUG9zaXRpb24oQ1NTUHJv
cGVydHlJRCBwcm9wZXJ0eUlELCBGaWxsTGF5ZXImIGxheWVyLAogICAgIGlmIChwcmltaXRpdmVW
YWx1ZS0+aXNMZW5ndGgoKSkKICAgICAgICAgbGVuZ3RoID0gcHJpbWl0aXZlVmFsdWUtPmNvbXB1
dGVMZW5ndGg8TGVuZ3RoPihtX3Jlc29sdmVyLT5zdGF0ZSgpLmNzc1RvTGVuZ3RoQ29udmVyc2lv
bkRhdGEoKSk7CiAgICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPmlzUGVyY2VudGFnZSgpKQot
ICAgICAgICBsZW5ndGggPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmdldERvdWJsZVZhbHVlKCks
IFBlcmNlbnQpOworICAgICAgICBsZW5ndGggPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmRvdWJs
ZVZhbHVlKCksIFBlcmNlbnQpOwogICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc0NhbGN1
bGF0ZWRQZXJjZW50YWdlV2l0aExlbmd0aCgpKQogICAgICAgICBsZW5ndGggPSBMZW5ndGgocHJp
bWl0aXZlVmFsdWUtPmNzc0NhbGNWYWx1ZSgpLT5jcmVhdGVDYWxjdWxhdGlvblZhbHVlKG1fcmVz
b2x2ZXItPnN0YXRlKCkuY3NzVG9MZW5ndGhDb252ZXJzaW9uRGF0YSgpKSk7CiAgICAgZWxzZQpA
QCAtMjk4LDcgKzI5OCw3IEBAIHZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFwRmlsbE1hc2tTb3VyY2VU
eXBlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgRmlsbExheWVyJiBsCiAgICAgaWYgKCFpczxD
U1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKQogICAgICAgICByZXR1cm47CiAKLSAgICBzd2l0Y2gg
KGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkuZ2V0VmFsdWVJRCgpKSB7CisgICAg
c3dpdGNoIChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLnZhbHVlSUQoKSkgewog
ICAgIGNhc2UgQ1NTVmFsdWVBbHBoYToKICAgICAgICAgdHlwZSA9IEVNYXNrU291cmNlVHlwZTo6
TWFza0FscGhhOwogICAgICAgICBicmVhazsKQEAgLTMzNyw3ICszMzcsNyBAQCB2b2lkIENTU1Rv
U3R5bGVNYXA6Om1hcEFuaW1hdGlvbkRpcmVjdGlvbihBbmltYXRpb24mIGxheWVyLCBjb25zdCBD
U1NWYWx1ZSYgdmFsdQogICAgIGlmICghaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgc3dpdGNoIChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4o
dmFsdWUpLmdldFZhbHVlSUQoKSkgeworICAgIHN3aXRjaCAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWU+KHZhbHVlKS52YWx1ZUlEKCkpIHsKICAgICBjYXNlIENTU1ZhbHVlTm9ybWFsOgogICAg
ICAgICBsYXllci5zZXREaXJlY3Rpb24oQW5pbWF0aW9uOjpBbmltYXRpb25EaXJlY3Rpb25Ob3Jt
YWwpOwogICAgICAgICBicmVhazsKQEAgLTM3OCw3ICszNzgsNyBAQCB2b2lkIENTU1RvU3R5bGVN
YXA6Om1hcEFuaW1hdGlvbkZpbGxNb2RlKEFuaW1hdGlvbiYgbGF5ZXIsIGNvbnN0IENTU1ZhbHVl
JiB2YWx1ZQogICAgIGlmICghaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgc3dpdGNoIChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUp
LmdldFZhbHVlSUQoKSkgeworICAgIHN3aXRjaCAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+
KHZhbHVlKS52YWx1ZUlEKCkpIHsKICAgICBjYXNlIENTU1ZhbHVlTm9uZToKICAgICAgICAgbGF5
ZXIuc2V0RmlsbE1vZGUoQW5pbWF0aW9uRmlsbE1vZGVOb25lKTsKICAgICAgICAgYnJlYWs7CkBA
IC00MDcsMTAgKzQwNywxMCBAQCB2b2lkIENTU1RvU3R5bGVNYXA6Om1hcEFuaW1hdGlvbkl0ZXJh
dGlvbkNvdW50KEFuaW1hdGlvbiYgYW5pbWF0aW9uLCBjb25zdCBDU1NWYQogICAgICAgICByZXR1
cm47CiAKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlPih2YWx1ZSk7Ci0gICAgaWYgKHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQoKSA9PSBDU1NW
YWx1ZUluZmluaXRlKQorICAgIGlmIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFs
dWVJbmZpbml0ZSkKICAgICAgICAgYW5pbWF0aW9uLnNldEl0ZXJhdGlvbkNvdW50KEFuaW1hdGlv
bjo6SXRlcmF0aW9uQ291bnRJbmZpbml0ZSk7CiAgICAgZWxzZQotICAgICAgICBhbmltYXRpb24u
c2V0SXRlcmF0aW9uQ291bnQocHJpbWl0aXZlVmFsdWUuZ2V0RmxvYXRWYWx1ZSgpKTsKKyAgICAg
ICAgYW5pbWF0aW9uLnNldEl0ZXJhdGlvbkNvdW50KHByaW1pdGl2ZVZhbHVlLmZsb2F0VmFsdWUo
KSk7CiB9CiAKIHZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFwQW5pbWF0aW9uTmFtZShBbmltYXRpb24m
IGxheWVyLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCkBAIC00MjQsMTAgKzQyNCwxMCBAQCB2b2lk
IENTU1RvU3R5bGVNYXA6Om1hcEFuaW1hdGlvbk5hbWUoQW5pbWF0aW9uJiBsYXllciwgY29uc3Qg
Q1NTVmFsdWUmIHZhbHVlKQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvJiBwcmltaXRpdmVW
YWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7Ci0gICAgaWYgKHByaW1p
dGl2ZVZhbHVlLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUpCisgICAgaWYgKHByaW1pdGl2
ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUpCiAgICAgICAgIGxheWVyLnNldElzTm9u
ZUFuaW1hdGlvbih0cnVlKTsKICAgICBlbHNlCi0gICAgICAgIGxheWVyLnNldE5hbWUocHJpbWl0
aXZlVmFsdWUuZ2V0U3RyaW5nVmFsdWUoKSk7CisgICAgICAgIGxheWVyLnNldE5hbWUocHJpbWl0
aXZlVmFsdWUuc3RyaW5nVmFsdWUoKSk7CiB9CiAKIHZvaWQgQ1NTVG9TdHlsZU1hcDo6bWFwQW5p
bWF0aW9uUGxheVN0YXRlKEFuaW1hdGlvbiYgbGF5ZXIsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkK
QEAgLTQ0MCw3ICs0NDAsNyBAQCB2b2lkIENTU1RvU3R5bGVNYXA6Om1hcEFuaW1hdGlvblBsYXlT
dGF0ZShBbmltYXRpb24mIGxheWVyLCBjb25zdCBDU1NWYWx1ZSYgdmFsdQogICAgIGlmICghaXM8
Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRUFuaW1Q
bGF5U3RhdGUgcGxheVN0YXRlID0gKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSku
Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlUGF1c2VkKSA/IEFuaW1QbGF5U3RhdGVQYXVzZWQgOiBB
bmltUGxheVN0YXRlUGxheWluZzsKKyAgICBFQW5pbVBsYXlTdGF0ZSBwbGF5U3RhdGUgPSAoZG93
bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVQYXVz
ZWQpID8gQW5pbVBsYXlTdGF0ZVBhdXNlZCA6IEFuaW1QbGF5U3RhdGVQbGF5aW5nOwogICAgIGxh
eWVyLnNldFBsYXlTdGF0ZShwbGF5U3RhdGUpOwogfQogCkBAIC00NTYsMTUgKzQ1NiwxNSBAQCB2
b2lkIENTU1RvU3R5bGVNYXA6Om1hcEFuaW1hdGlvblByb3BlcnR5KEFuaW1hdGlvbiYgYW5pbWF0
aW9uLCBjb25zdCBDU1NWYWx1ZSYgdgogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvJiBwcmlt
aXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7Ci0gICAgaWYg
KHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZUFsbCkgeworICAgIGlmIChw
cmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVBbGwpIHsKICAgICAgICAgYW5pbWF0
aW9uLnNldEFuaW1hdGlvbk1vZGUoQW5pbWF0aW9uOjpBbmltYXRlQWxsKTsKICAgICAgICAgYW5p
bWF0aW9uLnNldFByb3BlcnR5KENTU1Byb3BlcnR5SW52YWxpZCk7Ci0gICAgfSBlbHNlIGlmIChw
cmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKSB7CisgICAgfSBlbHNl
IGlmIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKSB7CiAgICAgICAg
IGFuaW1hdGlvbi5zZXRBbmltYXRpb25Nb2RlKEFuaW1hdGlvbjo6QW5pbWF0ZU5vbmUpOwogICAg
ICAgICBhbmltYXRpb24uc2V0UHJvcGVydHkoQ1NTUHJvcGVydHlJbnZhbGlkKTsKICAgICB9IGVs
c2UgewogICAgICAgICBhbmltYXRpb24uc2V0QW5pbWF0aW9uTW9kZShBbmltYXRpb246OkFuaW1h
dGVTaW5nbGVQcm9wZXJ0eSk7Ci0gICAgICAgIGFuaW1hdGlvbi5zZXRQcm9wZXJ0eShwcmltaXRp
dmVWYWx1ZS5nZXRQcm9wZXJ0eUlEKCkpOworICAgICAgICBhbmltYXRpb24uc2V0UHJvcGVydHko
cHJpbWl0aXZlVmFsdWUucHJvcGVydHlJRCgpKTsKICAgICB9CiB9CiAKQEAgLTQ3Niw3ICs0NzYs
NyBAQCB2b2lkIENTU1RvU3R5bGVNYXA6Om1hcEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uKEFuaW1h
dGlvbiYgYW5pbWF0aW9uLCBjb25zdCBDU1NWYQogICAgIH0KIAogICAgIGlmIChpczxDU1NQcmlt
aXRpdmVWYWx1ZT4odmFsdWUpKSB7Ci0gICAgICAgIHN3aXRjaCAoZG93bmNhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWU+KHZhbHVlKS5nZXRWYWx1ZUlEKCkpIHsKKyAgICAgICAgc3dpdGNoIChkb3duY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLnZhbHVlSUQoKSkgewogICAgICAgICBjYXNlIENT
U1ZhbHVlTGluZWFyOgogICAgICAgICAgICAgYW5pbWF0aW9uLnNldFRpbWluZ0Z1bmN0aW9uKExp
bmVhclRpbWluZ0Z1bmN0aW9uOjpjcmVhdGUoKSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTUy
Niw3ICs1MjYsNyBAQCB2b2lkIENTU1RvU3R5bGVNYXA6Om1hcEFuaW1hdGlvblRyaWdnZXIoQW5p
bWF0aW9uJiBhbmltYXRpb24sIGNvbnN0IENTU1ZhbHVlJiB2YQogCiAgICAgaWYgKHZhbHVlLmlz
UHJpbWl0aXZlVmFsdWUoKSkgewogICAgICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7Ci0gICAgICAgIGlmIChwcmltaXRpdmVWYWx1
ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVBdXRvKQorICAgICAgICBpZiAocHJpbWl0aXZlVmFs
dWUudmFsdWVJRCgpID09IENTU1ZhbHVlQXV0bykKICAgICAgICAgICAgIGFuaW1hdGlvbi5zZXRU
cmlnZ2VyKEF1dG9BbmltYXRpb25UcmlnZ2VyOjpjcmVhdGUoKSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC02MDgsMjEgKzYwOCwyMSBAQCB2b2lkIENTU1RvU3R5bGVNYXA6Om1hcE5pbmVQ
aWVjZUltYWdlU2xpY2UoQ1NTVmFsdWUmIHZhbHVlLCBOaW5lUGllY2VJbWFnZSYgaW1hZwogICAg
IExlbmd0aEJveCBib3g7CiAgICAgUXVhZCogc2xpY2VzID0gYm9yZGVySW1hZ2VTbGljZS5zbGlj
ZXMoKTsKICAgICBpZiAoc2xpY2VzLT50b3AoKS0+aXNQZXJjZW50YWdlKCkpCi0gICAgICAgIGJv
eC50b3AoKSA9IExlbmd0aChzbGljZXMtPnRvcCgpLT5nZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50
KTsKKyAgICAgICAgYm94LnRvcCgpID0gTGVuZ3RoKHNsaWNlcy0+dG9wKCktPmRvdWJsZVZhbHVl
KCksIFBlcmNlbnQpOwogICAgIGVsc2UKLSAgICAgICAgYm94LnRvcCgpID0gTGVuZ3RoKHNsaWNl
cy0+dG9wKCktPmdldEludFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSwgRml4
ZWQpOworICAgICAgICBib3gudG9wKCkgPSBMZW5ndGgoc2xpY2VzLT50b3AoKS0+aW50VmFsdWUo
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpLCBGaXhlZCk7CiAgICAgaWYgKHNsaWNlcy0+
Ym90dG9tKCktPmlzUGVyY2VudGFnZSgpKQotICAgICAgICBib3guYm90dG9tKCkgPSBMZW5ndGgo
c2xpY2VzLT5ib3R0b20oKS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7CisgICAgICAgIGJv
eC5ib3R0b20oKSA9IExlbmd0aChzbGljZXMtPmJvdHRvbSgpLT5kb3VibGVWYWx1ZSgpLCBQZXJj
ZW50KTsKICAgICBlbHNlCi0gICAgICAgIGJveC5ib3R0b20oKSA9IExlbmd0aCgoaW50KXNsaWNl
cy0+Ym90dG9tKCktPmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIp
LCBGaXhlZCk7CisgICAgICAgIGJveC5ib3R0b20oKSA9IExlbmd0aCgoaW50KXNsaWNlcy0+Ym90
dG9tKCktPmZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpLCBGaXhlZCk7
CiAgICAgaWYgKHNsaWNlcy0+bGVmdCgpLT5pc1BlcmNlbnRhZ2UoKSkKLSAgICAgICAgYm94Lmxl
ZnQoKSA9IExlbmd0aChzbGljZXMtPmxlZnQoKS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7
CisgICAgICAgIGJveC5sZWZ0KCkgPSBMZW5ndGgoc2xpY2VzLT5sZWZ0KCktPmRvdWJsZVZhbHVl
KCksIFBlcmNlbnQpOwogICAgIGVsc2UKLSAgICAgICAgYm94LmxlZnQoKSA9IExlbmd0aChzbGlj
ZXMtPmxlZnQoKS0+Z2V0SW50VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpLCBG
aXhlZCk7CisgICAgICAgIGJveC5sZWZ0KCkgPSBMZW5ndGgoc2xpY2VzLT5sZWZ0KCktPmludFZh
bHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSwgRml4ZWQpOwogICAgIGlmIChzbGlj
ZXMtPnJpZ2h0KCktPmlzUGVyY2VudGFnZSgpKQotICAgICAgICBib3gucmlnaHQoKSA9IExlbmd0
aChzbGljZXMtPnJpZ2h0KCktPmdldERvdWJsZVZhbHVlKCksIFBlcmNlbnQpOworICAgICAgICBi
b3gucmlnaHQoKSA9IExlbmd0aChzbGljZXMtPnJpZ2h0KCktPmRvdWJsZVZhbHVlKCksIFBlcmNl
bnQpOwogICAgIGVsc2UKLSAgICAgICAgYm94LnJpZ2h0KCkgPSBMZW5ndGgoc2xpY2VzLT5yaWdo
dCgpLT5nZXRJbnRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUiksIEZpeGVkKTsK
KyAgICAgICAgYm94LnJpZ2h0KCkgPSBMZW5ndGgoc2xpY2VzLT5yaWdodCgpLT5pbnRWYWx1ZShD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUiksIEZpeGVkKTsKICAgICBpbWFnZS5zZXRJbWFn
ZVNsaWNlcyhib3gpOwogCiAgICAgLy8gU2V0IG91ciBmaWxsIG1vZGUuCkBAIC02NDIsMzMgKzY0
MiwzMyBAQCBMZW5ndGhCb3ggQ1NTVG9TdHlsZU1hcDo6bWFwTmluZVBpZWNlSW1hZ2VRdWFkKENT
U1ZhbHVlJiB2YWx1ZSkKIAogICAgIC8vIFNldCB1cCBhIGxlbmd0aCBib3ggdG8gcmVwcmVzZW50
IG91ciBpbWFnZSBzbGljZXMuCiAgICAgTGVuZ3RoQm94IGJveDsgLy8gRGVmYXVsdHMgdG8gJ2F1
dG8nIHNvIHdlIGRvbid0IGhhdmUgdG8gaGFuZGxlIHRoYXQgZXhwbGljaXRseSBiZWxvdy4KLSAg
ICBRdWFkKiBzbGljZXMgPSBib3JkZXJXaWR0aHMuZ2V0UXVhZFZhbHVlKCk7CisgICAgUXVhZCog
c2xpY2VzID0gYm9yZGVyV2lkdGhzLnF1YWRWYWx1ZSgpOwogICAgIGlmIChzbGljZXMtPnRvcCgp
LT5pc051bWJlcigpKQotICAgICAgICBib3gudG9wKCkgPSBMZW5ndGgoc2xpY2VzLT50b3AoKS0+
Z2V0SW50VmFsdWUoKSwgUmVsYXRpdmUpOworICAgICAgICBib3gudG9wKCkgPSBMZW5ndGgoc2xp
Y2VzLT50b3AoKS0+aW50VmFsdWUoKSwgUmVsYXRpdmUpOwogICAgIGVsc2UgaWYgKHNsaWNlcy0+
dG9wKCktPmlzUGVyY2VudGFnZSgpKQotICAgICAgICBib3gudG9wKCkgPSBMZW5ndGgoc2xpY2Vz
LT50b3AoKS0+Z2V0RG91YmxlVmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdF
KSwgUGVyY2VudCk7Ci0gICAgZWxzZSBpZiAoc2xpY2VzLT50b3AoKS0+Z2V0VmFsdWVJRCgpICE9
IENTU1ZhbHVlQXV0bykKKyAgICAgICAgYm94LnRvcCgpID0gTGVuZ3RoKHNsaWNlcy0+dG9wKCkt
PmRvdWJsZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSksIFBlcmNlbnQp
OworICAgIGVsc2UgaWYgKHNsaWNlcy0+dG9wKCktPnZhbHVlSUQoKSAhPSBDU1NWYWx1ZUF1dG8p
CiAgICAgICAgIGJveC50b3AoKSA9IHNsaWNlcy0+dG9wKCktPmNvbXB1dGVMZW5ndGg8TGVuZ3Ro
Pihjb252ZXJzaW9uRGF0YSk7CiAKICAgICBpZiAoc2xpY2VzLT5yaWdodCgpLT5pc051bWJlcigp
KQotICAgICAgICBib3gucmlnaHQoKSA9IExlbmd0aChzbGljZXMtPnJpZ2h0KCktPmdldEludFZh
bHVlKCksIFJlbGF0aXZlKTsKKyAgICAgICAgYm94LnJpZ2h0KCkgPSBMZW5ndGgoc2xpY2VzLT5y
aWdodCgpLT5pbnRWYWx1ZSgpLCBSZWxhdGl2ZSk7CiAgICAgZWxzZSBpZiAoc2xpY2VzLT5yaWdo
dCgpLT5pc1BlcmNlbnRhZ2UoKSkKLSAgICAgICAgYm94LnJpZ2h0KCkgPSBMZW5ndGgoc2xpY2Vz
LT5yaWdodCgpLT5nZXREb3VibGVWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRB
R0UpLCBQZXJjZW50KTsKLSAgICBlbHNlIGlmIChzbGljZXMtPnJpZ2h0KCktPmdldFZhbHVlSUQo
KSAhPSBDU1NWYWx1ZUF1dG8pCisgICAgICAgIGJveC5yaWdodCgpID0gTGVuZ3RoKHNsaWNlcy0+
cmlnaHQoKS0+ZG91YmxlVmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKSwg
UGVyY2VudCk7CisgICAgZWxzZSBpZiAoc2xpY2VzLT5yaWdodCgpLT52YWx1ZUlEKCkgIT0gQ1NT
VmFsdWVBdXRvKQogICAgICAgICBib3gucmlnaHQoKSA9IHNsaWNlcy0+cmlnaHQoKS0+Y29tcHV0
ZUxlbmd0aDxMZW5ndGg+KGNvbnZlcnNpb25EYXRhKTsKIAogICAgIGlmIChzbGljZXMtPmJvdHRv
bSgpLT5pc051bWJlcigpKQotICAgICAgICBib3guYm90dG9tKCkgPSBMZW5ndGgoc2xpY2VzLT5i
b3R0b20oKS0+Z2V0SW50VmFsdWUoKSwgUmVsYXRpdmUpOworICAgICAgICBib3guYm90dG9tKCkg
PSBMZW5ndGgoc2xpY2VzLT5ib3R0b20oKS0+aW50VmFsdWUoKSwgUmVsYXRpdmUpOwogICAgIGVs
c2UgaWYgKHNsaWNlcy0+Ym90dG9tKCktPmlzUGVyY2VudGFnZSgpKQotICAgICAgICBib3guYm90
dG9tKCkgPSBMZW5ndGgoc2xpY2VzLT5ib3R0b20oKS0+Z2V0RG91YmxlVmFsdWUoQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKSwgUGVyY2VudCk7Ci0gICAgZWxzZSBpZiAoc2xpY2Vz
LT5ib3R0b20oKS0+Z2V0VmFsdWVJRCgpICE9IENTU1ZhbHVlQXV0bykKKyAgICAgICAgYm94LmJv
dHRvbSgpID0gTGVuZ3RoKHNsaWNlcy0+Ym90dG9tKCktPmRvdWJsZVZhbHVlKENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSksIFBlcmNlbnQpOworICAgIGVsc2UgaWYgKHNsaWNlcy0+
Ym90dG9tKCktPnZhbHVlSUQoKSAhPSBDU1NWYWx1ZUF1dG8pCiAgICAgICAgIGJveC5ib3R0b20o
KSA9IHNsaWNlcy0+Ym90dG9tKCktPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihjb252ZXJzaW9uRGF0
YSk7CiAKICAgICBpZiAoc2xpY2VzLT5sZWZ0KCktPmlzTnVtYmVyKCkpCi0gICAgICAgIGJveC5s
ZWZ0KCkgPSBMZW5ndGgoc2xpY2VzLT5sZWZ0KCktPmdldEludFZhbHVlKCksIFJlbGF0aXZlKTsK
KyAgICAgICAgYm94LmxlZnQoKSA9IExlbmd0aChzbGljZXMtPmxlZnQoKS0+aW50VmFsdWUoKSwg
UmVsYXRpdmUpOwogICAgIGVsc2UgaWYgKHNsaWNlcy0+bGVmdCgpLT5pc1BlcmNlbnRhZ2UoKSkK
LSAgICAgICAgYm94LmxlZnQoKSA9IExlbmd0aChzbGljZXMtPmxlZnQoKS0+Z2V0RG91YmxlVmFs
dWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKSwgUGVyY2VudCk7Ci0gICAgZWxz
ZSBpZiAoc2xpY2VzLT5sZWZ0KCktPmdldFZhbHVlSUQoKSAhPSBDU1NWYWx1ZUF1dG8pCisgICAg
ICAgIGJveC5sZWZ0KCkgPSBMZW5ndGgoc2xpY2VzLT5sZWZ0KCktPmRvdWJsZVZhbHVlKENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSksIFBlcmNlbnQpOworICAgIGVsc2UgaWYgKHNs
aWNlcy0+bGVmdCgpLT52YWx1ZUlEKCkgIT0gQ1NTVmFsdWVBdXRvKQogICAgICAgICBib3gubGVm
dCgpID0gc2xpY2VzLT5sZWZ0KCktPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihjb252ZXJzaW9uRGF0
YSk7CiAKICAgICByZXR1cm4gYm94OwpAQCAtNjgwLDEyICs2ODAsMTIgQEAgdm9pZCBDU1NUb1N0
eWxlTWFwOjptYXBOaW5lUGllY2VJbWFnZVJlcGVhdChDU1NWYWx1ZSYgdmFsdWUsIE5pbmVQaWVj
ZUltYWdlJiBpbWEKICAgICAgICAgcmV0dXJuOwogCiAgICAgQ1NTUHJpbWl0aXZlVmFsdWUmIHBy
aW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKLSAgICBQ
YWlyKiBwYWlyID0gcHJpbWl0aXZlVmFsdWUuZ2V0UGFpclZhbHVlKCk7CisgICAgUGFpciogcGFp
ciA9IHByaW1pdGl2ZVZhbHVlLnBhaXJWYWx1ZSgpOwogICAgIGlmICghcGFpciB8fCAhcGFpci0+
Zmlyc3QoKSB8fCAhcGFpci0+c2Vjb25kKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIENTU1Zh
bHVlSUQgZmlyc3RJZGVudGlmaWVyID0gcGFpci0+Zmlyc3QoKS0+Z2V0VmFsdWVJRCgpOwotICAg
IENTU1ZhbHVlSUQgc2Vjb25kSWRlbnRpZmllciA9IHBhaXItPnNlY29uZCgpLT5nZXRWYWx1ZUlE
KCk7CisgICAgQ1NTVmFsdWVJRCBmaXJzdElkZW50aWZpZXIgPSBwYWlyLT5maXJzdCgpLT52YWx1
ZUlEKCk7CisgICAgQ1NTVmFsdWVJRCBzZWNvbmRJZGVudGlmaWVyID0gcGFpci0+c2Vjb25kKCkt
PnZhbHVlSUQoKTsKIAogICAgIEVOaW5lUGllY2VJbWFnZVJ1bGUgaG9yaXpvbnRhbFJ1bGU7CiAg
ICAgc3dpdGNoIChmaXJzdElkZW50aWZpZXIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmgKaW5kZXggZjk5
ZDM3M2M5NTExNjllMTVkYWRiZTc3Y2JkMGZlNTZjM2Q4ZDFhZi4uZWZkOTg4MTliMTI3NGExOGY1
YjdiZmE4MDkyNTFlYTNkNzJjZjJjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1ZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmgKQEAgLTIwLDcgKzIw
LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5j
bHVkZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNsdWRlICJVUkxIYXNoLmgiCiAjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KQEAgLTY0LDcgKzY0LDcg
QEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGNzc1RleHQoKSBjb25zdDsK
IAotICAgIHZvaWQgc2V0Q3NzVGV4dChjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJikgeyB9
IC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuCisgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0Q3Nz
VGV4dChjb25zdCBTdHJpbmcmKSB7IHJldHVybiB7IH07IH0gLy8gRklYTUU6IE5vdCBpbXBsZW1l
bnRlZC4KIAogICAgIGJvb2wgaXNQcmltaXRpdmVWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xh
c3NUeXBlID09IFByaW1pdGl2ZUNsYXNzOyB9CiAgICAgYm9vbCBpc1ZhbHVlTGlzdCgpIGNvbnN0
IHsgcmV0dXJuIG1fY2xhc3NUeXBlID49IFZhbHVlTGlzdENsYXNzOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaWRsIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Zh
bHVlLmlkbAppbmRleCA2MDliZmMwYzY2NTQ3MGQ5YTg1ZjBiYTliNjlhYmM4MTYzYWMwY2MwLi44
Y2YxNjU0ODJlMmZjOTdkMTNhMjg1NDFkOGIzYTAxMmUxNDgxY2M5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NW
YWx1ZS5pZGwKQEAgLTE5LDggKzE5LDggQEAKICAqLwogCiBbCi0gICAgQ3VzdG9tVG9KU09iamVj
dCwKICAgICBDdXN0b21Jc1JlYWNoYWJsZSwKKyAgICBDdXN0b21Ub0pTT2JqZWN0LAogICAgIEV4
cG9ydFRvV3JhcHBlZEZ1bmN0aW9uLAogICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCiAg
ICAgSlNDdXN0b21GaW5hbGl6ZSwKQEAgLTMxLDcgKzMxLDcgQEAKICAgICBjb25zdCB1bnNpZ25l
ZCBzaG9ydCBDU1NfVkFMVUVfTElTVCA9IDI7CiAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgQ1NT
X0NVU1RPTSA9IDM7CiAKLSAgICBbU2V0dGVyTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIGF0dHJp
YnV0ZSBET01TdHJpbmc/IGNzc1RleHQ7CisgICAgW1NldHRlck1heVRocm93RXhjZXB0aW9uXSBh
dHRyaWJ1dGUgRE9NU3RyaW5nPyBjc3NUZXh0OwogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVu
c2lnbmVkIHNob3J0IGNzc1ZhbHVlVHlwZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ291bnRlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NvdW50ZXIuaAppbmRleCAxYjIx
MGJlZGU2ZTVjZjJmZmYxNzY4YTVjYWJkNzE2NzdhNjJmY2M4Li43MTQ2YTcyYmQ0ZjE0ZTYyN2Q1
ZTAzZDBhNjI0Y2IxMDBlZmJjMzc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ291
bnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Db3VudGVyLmgKQEAgLTMyLDExICszMiwx
MSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENvdW50ZXIoV1RGTW92
ZShpZGVudGlmaWVyKSwgV1RGTW92ZShsaXN0U3R5bGUpLCBXVEZNb3ZlKHNlcGFyYXRvcikpKTsK
ICAgICB9CiAKLSAgICBTdHJpbmcgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRp
Zmllci0+Z2V0U3RyaW5nVmFsdWUoKTsgfQotICAgIFN0cmluZyBsaXN0U3R5bGUoKSBjb25zdCB7
IHJldHVybiBtX2xpc3RTdHlsZS0+Z2V0U3RyaW5nVmFsdWUoKTsgfQotICAgIFN0cmluZyBzZXBh
cmF0b3IoKSBjb25zdCB7IHJldHVybiBtX3NlcGFyYXRvci0+Z2V0U3RyaW5nVmFsdWUoKTsgfQor
ICAgIFN0cmluZyBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyLT5zdHJp
bmdWYWx1ZSgpOyB9CisgICAgU3RyaW5nIGxpc3RTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGlz
dFN0eWxlLT5zdHJpbmdWYWx1ZSgpOyB9CisgICAgU3RyaW5nIHNlcGFyYXRvcigpIGNvbnN0IHsg
cmV0dXJuIG1fc2VwYXJhdG9yLT5zdHJpbmdWYWx1ZSgpOyB9CiAKLSAgICBDU1NWYWx1ZUlEIGxp
c3RTdHlsZUlkZW50KCkgY29uc3QgeyByZXR1cm4gbV9saXN0U3R5bGUtPmdldFZhbHVlSUQoKTsg
fQorICAgIENTU1ZhbHVlSUQgbGlzdFN0eWxlSWRlbnQoKSBjb25zdCB7IHJldHVybiBtX2xpc3RT
dHlsZS0+dmFsdWVJRCgpOyB9CiAKICAgICB2b2lkIHNldElkZW50aWZpZXIoUmVmPENTU1ByaW1p
dGl2ZVZhbHVlPiYmIGlkZW50aWZpZXIpIHsgbV9pZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlm
aWVyKTsgfQogICAgIHZvaWQgc2V0TGlzdFN0eWxlKFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4mJiBs
aXN0U3R5bGUpIHsgbV9saXN0U3R5bGUgPSBXVEZNb3ZlKGxpc3RTdHlsZSk7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Rm9udEZhY2UuY3BwCmluZGV4IGRmMjA3MDI3NWQ2MDJmZTdjYmJlOWU1Y2Y0M2FkMDg0MjMwOGEx
ZTcuLmY5MTYzOWE4ZmQ4ZGNhZDhkNWMwY2NjMjJlM2Y5MWVjOTIzZmNjYzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0ZvbnRGYWNlLmNwcApAQCAtNDUsMjMgKzQ1LDIwIEBAIHN0YXRpYyBib29sIHBvcHVsYXRlRm9u
dEZhY2VXaXRoQXJyYXlCdWZmZXIoQ1NTRm9udEZhY2UmIGZvbnRGYWNlLCBSZWY8SlNDOjpBcnJh
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1SZWZQdHI8Rm9udEZhY2U+IEZvbnRGYWNlOjpjcmVh
dGUoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmlu
ZyYgZmFtaWx5LCBKU0M6OkpTVmFsdWUgc291cmNlLCBjb25zdCBEZXNjcmlwdG9ycyYgZGVzY3Jp
cHRvcnMsIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8UmVmPEZvbnRGYWNlPj4gRm9u
dEZhY2U6OmNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIERvY3VtZW50JiBkb2N1bWVudCwg
Y29uc3QgU3RyaW5nJiBmYW1pbHksIEpTQzo6SlNWYWx1ZSBzb3VyY2UsIGNvbnN0IERlc2NyaXB0
b3JzJiBkZXNjcmlwdG9ycykKIHsKICAgICBhdXRvIHJlc3VsdCA9IGFkb3B0UmVmKCpuZXcgRm9u
dEZhY2UoZG9jdW1lbnQuZm9udFNlbGVjdG9yKCkpKTsKIAogICAgIGJvb2wgZGF0YVJlcXVpcmVz
QXN5bmNocm9ub3VzTG9hZGluZyA9IHRydWU7CiAKLSAgICBlYyA9IDA7Ci0gICAgcmVzdWx0LT5z
ZXRGYW1pbHkoZmFtaWx5LCBlYyk7Ci0gICAgaWYgKGVjKQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICBhdXRvIHNldEZhbWlseVJlc3VsdCA9IHJlc3VsdC0+c2V0RmFtaWx5KGZhbWlseSk7
CisgICAgaWYgKHNldEZhbWlseVJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJu
IHNldEZhbWlseVJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CiAKICAgICBpZiAoc291cmNlLmlz
U3RyaW5nKCkpIHsKICAgICAgICAgYXV0byB2YWx1ZSA9IEZvbnRGYWNlOjpwYXJzZVN0cmluZyhz
b3VyY2UuZ2V0U3RyaW5nKCZzdGF0ZSksIENTU1Byb3BlcnR5U3JjKTsKLSAgICAgICAgaWYgKCFp
czxDU1NWYWx1ZUxpc3Q+KHZhbHVlLmdldCgpKSkgewotICAgICAgICAgICAgZWMgPSBTWU5UQVhf
RVJSOwotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIH0KKyAgICAgICAgaWYg
KCFpczxDU1NWYWx1ZUxpc3Q+KHZhbHVlLmdldCgpKSkKKyAgICAgICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBTWU5UQVhfRVJSIH07CiAgICAgICAgIENTU0ZvbnRGYWNlOjphcHBlbmRTb3VyY2Vz
KHJlc3VsdC0+YmFja2luZygpLCBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KCp2YWx1ZSksICZkb2N1
bWVudCwgZmFsc2UpOwogICAgIH0gZWxzZSBpZiAoYXV0byBhcnJheUJ1ZmZlclZpZXcgPSB0b0Fy
cmF5QnVmZmVyVmlldyhzb3VyY2UpKQogICAgICAgICBkYXRhUmVxdWlyZXNBc3luY2hyb25vdXNM
b2FkaW5nID0gcG9wdWxhdGVGb250RmFjZVdpdGhBcnJheUJ1ZmZlcihyZXN1bHQtPmJhY2tpbmco
KSwgYXJyYXlCdWZmZXJWaWV3LnJlbGVhc2VOb25OdWxsKCkpOwpAQCAtNzEsMjQgKzY4LDI0IEBA
IFJlZlB0cjxGb250RmFjZT4gRm9udEZhY2U6OmNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUs
IERvY3VtZW50JiBkb2N1bWVudCwgY29uCiAgICAgfQogCiAgICAgLy8gVGhlc2UgdGVybmFyaWVz
IG1hdGNoIHRoZSBkZWZhdWx0IHN0cmluZ3MgaW5zaWRlIHRoZSBGb250RmFjZURlc2NyaXB0b3Jz
IGRpY3Rpb25hcnkgaW5zaWRlIEZvbnRGYWNlLmlkbC4KLSAgICByZXN1bHQtPnNldFN0eWxlKGRl
c2NyaXB0b3JzLnN0eWxlLmlzRW1wdHkoKSA/IEFTQ0lJTGl0ZXJhbCgibm9ybWFsIikgOiBkZXNj
cmlwdG9ycy5zdHlsZSwgZWMpOwotICAgIGlmIChlYykKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgcmVzdWx0LT5zZXRXZWlnaHQoZGVzY3JpcHRvcnMud2VpZ2h0LmlzRW1wdHkoKSA/IEFT
Q0lJTGl0ZXJhbCgibm9ybWFsIikgOiBkZXNjcmlwdG9ycy53ZWlnaHQsIGVjKTsKLSAgICBpZiAo
ZWMpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJlc3VsdC0+c2V0U3RyZXRjaChkZXNj
cmlwdG9ycy5zdHJldGNoLmlzRW1wdHkoKSA/IEFTQ0lJTGl0ZXJhbCgibm9ybWFsIikgOiBkZXNj
cmlwdG9ycy5zdHJldGNoLCBlYyk7Ci0gICAgaWYgKGVjKQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICByZXN1bHQtPnNldFVuaWNvZGVSYW5nZShkZXNjcmlwdG9ycy51bmljb2RlUmFuZ2Uu
aXNFbXB0eSgpID8gQVNDSUlMaXRlcmFsKCJVKzAtMTBGRkZGIikgOiBkZXNjcmlwdG9ycy51bmlj
b2RlUmFuZ2UsIGVjKTsKLSAgICBpZiAoZWMpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAg
IHJlc3VsdC0+c2V0VmFyaWFudChkZXNjcmlwdG9ycy52YXJpYW50LmlzRW1wdHkoKSA/IEFTQ0lJ
TGl0ZXJhbCgibm9ybWFsIikgOiBkZXNjcmlwdG9ycy52YXJpYW50LCBlYyk7Ci0gICAgaWYgKGVj
KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXN1bHQtPnNldEZlYXR1cmVTZXR0aW5n
cyhkZXNjcmlwdG9ycy5mZWF0dXJlU2V0dGluZ3MuaXNFbXB0eSgpID8gQVNDSUlMaXRlcmFsKCJu
b3JtYWwiKSA6IGRlc2NyaXB0b3JzLmZlYXR1cmVTZXR0aW5ncywgZWMpOwotICAgIGlmIChlYykK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgYXV0byBzZXRTdHlsZVJlc3VsdCA9IHJlc3Vs
dC0+c2V0U3R5bGUoZGVzY3JpcHRvcnMuc3R5bGUuaXNFbXB0eSgpID8gQVNDSUlMaXRlcmFsKCJu
b3JtYWwiKSA6IGRlc2NyaXB0b3JzLnN0eWxlKTsKKyAgICBpZiAoc2V0U3R5bGVSZXN1bHQuaGFz
RXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBzZXRTdHlsZVJlc3VsdC5yZWxlYXNlRXhjZXB0
aW9uKCk7CisgICAgYXV0byBzZXRXZWlnaHRSZXN1bHQgPSByZXN1bHQtPnNldFdlaWdodChkZXNj
cmlwdG9ycy53ZWlnaHQuaXNFbXB0eSgpID8gQVNDSUlMaXRlcmFsKCJub3JtYWwiKSA6IGRlc2Ny
aXB0b3JzLndlaWdodCk7CisgICAgaWYgKHNldFdlaWdodFJlc3VsdC5oYXNFeGNlcHRpb24oKSkK
KyAgICAgICAgcmV0dXJuIHNldFdlaWdodFJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CisgICAg
YXV0byBzZXRTdHJldGNoUmVzdWx0ID0gcmVzdWx0LT5zZXRTdHJldGNoKGRlc2NyaXB0b3JzLnN0
cmV0Y2guaXNFbXB0eSgpID8gQVNDSUlMaXRlcmFsKCJub3JtYWwiKSA6IGRlc2NyaXB0b3JzLnN0
cmV0Y2gpOworICAgIGlmIChzZXRTdHJldGNoUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAg
ICByZXR1cm4gc2V0U3RyZXRjaFJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CisgICAgYXV0byBz
ZXRVbmljb2RlUmFuZ2VSZXN1bHQgPSByZXN1bHQtPnNldFVuaWNvZGVSYW5nZShkZXNjcmlwdG9y
cy51bmljb2RlUmFuZ2UuaXNFbXB0eSgpID8gQVNDSUlMaXRlcmFsKCJVKzAtMTBGRkZGIikgOiBk
ZXNjcmlwdG9ycy51bmljb2RlUmFuZ2UpOworICAgIGlmIChzZXRVbmljb2RlUmFuZ2VSZXN1bHQu
aGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBzZXRVbmljb2RlUmFuZ2VSZXN1bHQucmVs
ZWFzZUV4Y2VwdGlvbigpOworICAgIGF1dG8gc2V0VmFyaWFudFJlc3VsdCA9IHJlc3VsdC0+c2V0
VmFyaWFudChkZXNjcmlwdG9ycy52YXJpYW50LmlzRW1wdHkoKSA/IEFTQ0lJTGl0ZXJhbCgibm9y
bWFsIikgOiBkZXNjcmlwdG9ycy52YXJpYW50KTsKKyAgICBpZiAoc2V0VmFyaWFudFJlc3VsdC5o
YXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIHNldFZhcmlhbnRSZXN1bHQucmVsZWFzZUV4
Y2VwdGlvbigpOworICAgIGF1dG8gc2V0RmVhdHVyZVNldHRpbmdzUmVzdWx0ID0gcmVzdWx0LT5z
ZXRGZWF0dXJlU2V0dGluZ3MoZGVzY3JpcHRvcnMuZmVhdHVyZVNldHRpbmdzLmlzRW1wdHkoKSA/
IEFTQ0lJTGl0ZXJhbCgibm9ybWFsIikgOiBkZXNjcmlwdG9ycy5mZWF0dXJlU2V0dGluZ3MpOwor
ICAgIGlmIChzZXRGZWF0dXJlU2V0dGluZ3NSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAg
IHJldHVybiBzZXRGZWF0dXJlU2V0dGluZ3NSZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOwogCiAg
ICAgaWYgKCFkYXRhUmVxdWlyZXNBc3luY2hyb25vdXNMb2FkaW5nKSB7CiAgICAgICAgIHJlc3Vs
dC0+YmFja2luZygpLmxvYWQoKTsKQEAgLTEzNSw4MCArMTMyLDczIEBAIFJlZlB0cjxDU1NWYWx1
ZT4gRm9udEZhY2U6OnBhcnNlU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBDU1NQcm9wZXJ0
eUlEIHByb3BlCiAgICAgcmV0dXJuIHN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKHByb3BlcnR5
SUQpOwogfQogCi12b2lkIEZvbnRGYWNlOjpzZXRGYW1pbHkoY29uc3QgU3RyaW5nJiBmYW1pbHks
IEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8dm9pZD4gRm9udEZhY2U6OnNldEZhbWls
eShjb25zdCBTdHJpbmcmIGZhbWlseSkKIHsKLSAgICBpZiAoZmFtaWx5LmlzRW1wdHkoKSkgewot
ICAgICAgICBlYyA9IFNZTlRBWF9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYg
KGZhbWlseS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTWU5UQVhfRVJS
IH07CiAKICAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKICAgICBpZiAoYXV0byB2YWx1ZSA9IHBh
cnNlU3RyaW5nKGZhbWlseSwgQ1NTUHJvcGVydHlGb250RmFtaWx5KSkKICAgICAgICAgc3VjY2Vz
cyA9IG1fYmFja2luZy0+c2V0RmFtaWxpZXMoKnZhbHVlKTsKICAgICBpZiAoIXN1Y2Nlc3MpCi0g
ICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNZTlRB
WF9FUlIgfTsKKyAgICByZXR1cm4geyB9OwogfQogCi12b2lkIEZvbnRGYWNlOjpzZXRTdHlsZShj
b25zdCBTdHJpbmcmIHN0eWxlLCBFeGNlcHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPHZvaWQ+
IEZvbnRGYWNlOjpzZXRTdHlsZShjb25zdCBTdHJpbmcmIHN0eWxlKQogewotICAgIGlmIChzdHls
ZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwotICAgICAgICByZXR1cm47
Ci0gICAgfQorICAgIGlmIChzdHlsZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBTWU5UQVhfRVJSIH07CiAKICAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKICAgICBpZiAo
YXV0byB2YWx1ZSA9IHBhcnNlU3RyaW5nKHN0eWxlLCBDU1NQcm9wZXJ0eUZvbnRTdHlsZSkpCiAg
ICAgICAgIHN1Y2Nlc3MgPSBtX2JhY2tpbmctPnNldFN0eWxlKCp2YWx1ZSk7CiAgICAgaWYgKCFz
dWNjZXNzKQotICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBTWU5UQVhfRVJSIH07CisgICAgcmV0dXJuIHsgfTsKIH0KIAotdm9pZCBGb250RmFjZTo6
c2V0V2VpZ2h0KGNvbnN0IFN0cmluZyYgd2VpZ2h0LCBFeGNlcHRpb25Db2RlJiBlYykKK0V4Y2Vw
dGlvbk9yPHZvaWQ+IEZvbnRGYWNlOjpzZXRXZWlnaHQoY29uc3QgU3RyaW5nJiB3ZWlnaHQpCiB7
Ci0gICAgaWYgKHdlaWdodC5pc0VtcHR5KCkpIHsKLSAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmICh3ZWlnaHQuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgU1lOVEFYX0VSUiB9OwogCiAgICAgYm9vbCBzdWNjZXNzID0g
ZmFsc2U7CiAgICAgaWYgKGF1dG8gdmFsdWUgPSBwYXJzZVN0cmluZyh3ZWlnaHQsIENTU1Byb3Bl
cnR5Rm9udFdlaWdodCkpCiAgICAgICAgIHN1Y2Nlc3MgPSBtX2JhY2tpbmctPnNldFdlaWdodCgq
dmFsdWUpOwogICAgIGlmICghc3VjY2VzcykKLSAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU1lOVEFYX0VSUiB9OworICAgIHJldHVybiB7IH07CiB9
CiAKLXZvaWQgRm9udEZhY2U6OnNldFN0cmV0Y2goY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29k
ZSYpCitFeGNlcHRpb25Pcjx2b2lkPiBGb250RmFjZTo6c2V0U3RyZXRjaChjb25zdCBTdHJpbmcm
KQogewogICAgIC8vIFdlIGRvbid0IHN1cHBvcnQgZm9udC1zdHJldGNoLiBTd2FsbG93IHRoZSBj
YWxsLgorICAgIHJldHVybiB7IH07CiB9CiAKLXZvaWQgRm9udEZhY2U6OnNldFVuaWNvZGVSYW5n
ZShjb25zdCBTdHJpbmcmIHVuaWNvZGVSYW5nZSwgRXhjZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRp
b25Pcjx2b2lkPiBGb250RmFjZTo6c2V0VW5pY29kZVJhbmdlKGNvbnN0IFN0cmluZyYgdW5pY29k
ZVJhbmdlKQogewotICAgIGlmICh1bmljb2RlUmFuZ2UuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGVj
ID0gU1lOVEFYX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAodW5pY29kZVJh
bmdlLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNZTlRBWF9FUlIgfTsK
IAogICAgIGJvb2wgc3VjY2VzcyA9IGZhbHNlOwogICAgIGlmIChhdXRvIHZhbHVlID0gcGFyc2VT
dHJpbmcodW5pY29kZVJhbmdlLCBDU1NQcm9wZXJ0eVVuaWNvZGVSYW5nZSkpCiAgICAgICAgIHN1
Y2Nlc3MgPSBtX2JhY2tpbmctPnNldFVuaWNvZGVSYW5nZSgqdmFsdWUpOwogICAgIGlmICghc3Vj
Y2VzcykKLSAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgU1lOVEFYX0VSUiB9OworICAgIHJldHVybiB7IH07CiB9CiAKLXZvaWQgRm9udEZhY2U6OnNl
dFZhcmlhbnQoY29uc3QgU3RyaW5nJiB2YXJpYW50LCBFeGNlcHRpb25Db2RlJiBlYykKK0V4Y2Vw
dGlvbk9yPHZvaWQ+IEZvbnRGYWNlOjpzZXRWYXJpYW50KGNvbnN0IFN0cmluZyYgdmFyaWFudCkK
IHsKLSAgICBpZiAodmFyaWFudC5pc0VtcHR5KCkpIHsKLSAgICAgICAgZWMgPSBTWU5UQVhfRVJS
OwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmICh2YXJpYW50LmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNZTlRBWF9FUlIgfTsKIAogICAgIGF1dG8gc3R5bGUg
PSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKICAgICBhdXRvIHJlc3VsdCA9IENT
U1BhcnNlcjo6cGFyc2VWYWx1ZShzdHlsZSwgQ1NTUHJvcGVydHlGb250VmFyaWFudCwgdmFyaWFu
dCwgdHJ1ZSwgSFRNTFN0YW5kYXJkTW9kZSwgbnVsbHB0cik7Ci0gICAgaWYgKHJlc3VsdCA9PSBD
U1NQYXJzZXI6OlBhcnNlUmVzdWx0OjpFcnJvcikgewotICAgICAgICBlYyA9IFNZTlRBWF9FUlI7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKHJlc3VsdCA9PSBDU1NQYXJzZXI6OlBh
cnNlUmVzdWx0OjpFcnJvcikKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNZTlRBWF9FUlIg
fTsKIAogICAgIC8vIEZJWE1FOiBXb3VsZCBiZSBtdWNoIGJldHRlciB0byBzdGFnZSB0aGUgbmV3
IHNldHRpbmdzIGFuZCBzZXQgdGhlbSBhbGwgYXQgb25jZQogICAgIC8vIGluc3RlYWQgb2YgdGhp
cyBkYW5jZSB3aGVyZSB3ZSBtYWtlIGEgYmFja3VwIGFuZCByZXZlcnQgdG8gaXQgaWYgc29tZXRo
aW5nIGZhaWxzLgpAQCAtMjQ5LDIzICsyMzksMjIgQEAgdm9pZCBGb250RmFjZTo6c2V0VmFyaWFu
dChjb25zdCBTdHJpbmcmIHZhcmlhbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogCiAgICAgaWYgKCFz
dWNjZXNzKSB7CiAgICAgICAgIG1fYmFja2luZy0+c2V0VmFyaWFudFNldHRpbmdzKGJhY2t1cCk7
Ci0gICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNZ
TlRBWF9FUlIgfTsKICAgICB9CisKKyAgICByZXR1cm4geyB9OwogfQogCi12b2lkIEZvbnRGYWNl
OjpzZXRGZWF0dXJlU2V0dGluZ3MoY29uc3QgU3RyaW5nJiBmZWF0dXJlU2V0dGluZ3MsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8dm9pZD4gRm9udEZhY2U6OnNldEZlYXR1cmVTZXR0
aW5ncyhjb25zdCBTdHJpbmcmIGZlYXR1cmVTZXR0aW5ncykKIHsKLSAgICBpZiAoZmVhdHVyZVNl
dHRpbmdzLmlzRW1wdHkoKSkgewotICAgICAgICBlYyA9IFNZTlRBWF9FUlI7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9CisgICAgaWYgKGZlYXR1cmVTZXR0aW5ncy5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBTWU5UQVhfRVJSIH07CiAKICAgICBhdXRvIHZhbHVlID0gcGFy
c2VTdHJpbmcoZmVhdHVyZVNldHRpbmdzLCBDU1NQcm9wZXJ0eUZvbnRGZWF0dXJlU2V0dGluZ3Mp
OwotICAgIGlmICghdmFsdWUpIHsKLSAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQorICAgIGlmICghdmFsdWUpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBTWU5UQVhfRVJSIH07CiAgICAgbV9iYWNraW5nLT5zZXRGZWF0dXJlU2V0dGluZ3MoKnZhbHVl
KTsKKyAgICByZXR1cm4geyB9OwogfQogCiBTdHJpbmcgRm9udEZhY2U6OmZhbWlseSgpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuaCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9Gb250RmFjZS5oCmluZGV4IGVkMzBkZGJmNTU5MTA0ODMwYmUwYTY1YmRhOGZhMzYy
MWU4ZDQ2YWEuLmZhOGYzMTNkY2VkOGZiNWRkMjhlMmMyOTQ4NTE1ZTQ2ZDdlYWNlMDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9Gb250RmFjZS5oCkBAIC00MiwxNyArNDIsMTcgQEAgcHVibGljOgogICAgICAgICBTdHJp
bmcgdmFyaWFudDsKICAgICAgICAgU3RyaW5nIGZlYXR1cmVTZXR0aW5nczsKICAgICB9OwotICAg
IHN0YXRpYyBSZWZQdHI8Rm9udEZhY2U+IGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSYsIERvY3VtZW50
JiwgY29uc3QgU3RyaW5nJiBmYW1pbHksIEpTQzo6SlNWYWx1ZSBzb3VyY2UsIGNvbnN0IERlc2Ny
aXB0b3JzJiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8Rm9u
dEZhY2U+PiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUmLCBEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYg
ZmFtaWx5LCBKU0M6OkpTVmFsdWUgc291cmNlLCBjb25zdCBEZXNjcmlwdG9ycyYpOwogICAgIHN0
YXRpYyBSZWY8Rm9udEZhY2U+IGNyZWF0ZShDU1NGb250RmFjZSYpOwogICAgIHZpcnR1YWwgfkZv
bnRGYWNlKCk7CiAKLSAgICB2b2lkIHNldEZhbWlseShjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25D
b2RlJik7Ci0gICAgdm9pZCBzZXRTdHlsZShjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7
Ci0gICAgdm9pZCBzZXRXZWlnaHQoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwotICAg
IHZvaWQgc2V0U3RyZXRjaChjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9p
ZCBzZXRVbmljb2RlUmFuZ2UoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZv
aWQgc2V0VmFyaWFudChjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCBz
ZXRGZWF0dXJlU2V0dGluZ3MoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOworICAgIEV4
Y2VwdGlvbk9yPHZvaWQ+IHNldEZhbWlseShjb25zdCBTdHJpbmcmKTsKKyAgICBFeGNlcHRpb25P
cjx2b2lkPiBzZXRTdHlsZShjb25zdCBTdHJpbmcmKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBz
ZXRXZWlnaHQoY29uc3QgU3RyaW5nJik7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0U3RyZXRj
aChjb25zdCBTdHJpbmcmKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRVbmljb2RlUmFuZ2Uo
Y29uc3QgU3RyaW5nJik7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0VmFyaWFudChjb25zdCBT
dHJpbmcmKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRGZWF0dXJlU2V0dGluZ3MoY29uc3Qg
U3RyaW5nJik7CiAKICAgICBTdHJpbmcgZmFtaWx5KCkgY29uc3Q7CiAgICAgU3RyaW5nIHN0eWxl
KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuaWRsIGIv
U291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmlkbAppbmRleCA3N2ZhMTQ3MmRkNDI3MGVhYzMx
ZjY4MDZiNjYzYzc4YTc1Zjc0ZTFmLi41Njk1YjVkMTY3ODI2ZmNiYjNlMzQzMTMwMDAwNzAzZDYw
MGI1M2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5pZGwKQEAgLTQxLDE2ICs0MSwxNiBAQCBkaWN0
aW9uYXJ5IEZvbnRGYWNlRGVzY3JpcHRvcnMgewogCiBbCiAgICAgQ29uc3RydWN0b3JDYWxsV2l0
aD1Eb2N1bWVudCZTY3JpcHRTdGF0ZSwKLSAgICBDb25zdHJ1Y3Rvck1heVRocm93TGVnYWN5RXhj
ZXB0aW9uLAorICAgIENvbnN0cnVjdG9yTWF5VGhyb3dFeGNlcHRpb24sCiAgICAgQ29uc3RydWN0
b3IoRE9NU3RyaW5nIGZhbWlseSwgYW55IHNvdXJjZSwgb3B0aW9uYWwgRm9udEZhY2VEZXNjcmlw
dG9ycyBkZXNjcmlwdG9ycykKIF0gaW50ZXJmYWNlIEZvbnRGYWNlIHsKLSAgICBbU2V0dGVyTWF5
VGhyb3dMZWdhY3lFeGNlcHRpb25dIGF0dHJpYnV0ZSBET01TdHJpbmcgZmFtaWx5OwotICAgIFtT
ZXR0ZXJNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gYXR0cmlidXRlIERPTVN0cmluZyBzdHlsZTsK
LSAgICBbU2V0dGVyTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIGF0dHJpYnV0ZSBET01TdHJpbmcg
d2VpZ2h0OwotICAgIFtTZXR0ZXJNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gYXR0cmlidXRlIERP
TVN0cmluZyBzdHJldGNoOwotICAgIFtTZXR0ZXJNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gYXR0
cmlidXRlIERPTVN0cmluZyB1bmljb2RlUmFuZ2U7Ci0gICAgW1NldHRlck1heVRocm93TGVnYWN5
RXhjZXB0aW9uXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHZhcmlhbnQ7Ci0gICAgW1NldHRlck1heVRo
cm93TGVnYWN5RXhjZXB0aW9uXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGZlYXR1cmVTZXR0aW5nczsK
KyAgICBbU2V0dGVyTWF5VGhyb3dFeGNlcHRpb25dIGF0dHJpYnV0ZSBET01TdHJpbmcgZmFtaWx5
OworICAgIFtTZXR0ZXJNYXlUaHJvd0V4Y2VwdGlvbl0gYXR0cmlidXRlIERPTVN0cmluZyBzdHls
ZTsKKyAgICBbU2V0dGVyTWF5VGhyb3dFeGNlcHRpb25dIGF0dHJpYnV0ZSBET01TdHJpbmcgd2Vp
Z2h0OworICAgIFtTZXR0ZXJNYXlUaHJvd0V4Y2VwdGlvbl0gYXR0cmlidXRlIERPTVN0cmluZyBz
dHJldGNoOworICAgIFtTZXR0ZXJNYXlUaHJvd0V4Y2VwdGlvbl0gYXR0cmlidXRlIERPTVN0cmlu
ZyB1bmljb2RlUmFuZ2U7CisgICAgW1NldHRlck1heVRocm93RXhjZXB0aW9uXSBhdHRyaWJ1dGUg
RE9NU3RyaW5nIHZhcmlhbnQ7CisgICAgW1NldHRlck1heVRocm93RXhjZXB0aW9uXSBhdHRyaWJ1
dGUgRE9NU3RyaW5nIGZlYXR1cmVTZXR0aW5nczsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBG
b250RmFjZUxvYWRTdGF0dXMgc3RhdHVzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvRm9udEZhY2VTZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0LmNwcApp
bmRleCAwZDU1ZGQ3YmRkMmM1MjM0OTA4YTdkN2MxNmZhYjAxMGY4OWJmNDFmLi4xMzljNDU1YzJi
ZTM2YTNlOTFmODhjODFlY2QyNmMyOGIyZmM0YmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvRm9udEZhY2VTZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNl
dC5jcHAKQEAgLTEyNSwxMiArMTI1LDEyIEBAIHZvaWQgRm9udEZhY2VTZXQ6OmNsZWFyKCkKIAog
dm9pZCBGb250RmFjZVNldDo6bG9hZChjb25zdCBTdHJpbmcmIGZvbnQsIGNvbnN0IFN0cmluZyYg
dGV4dCwgTG9hZFByb21pc2UmJiBwcm9taXNlKQogewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwotICAgIGF1dG8gbWF0Y2hpbmdGYWNlcyA9IG1fYmFja2luZy0+bWF0Y2hpbmdGYWNlcyhmb250
LCB0ZXh0LCBlYyk7Ci0gICAgaWYgKGVjKSB7Ci0gICAgICAgIHByb21pc2UucmVqZWN0KGVjKTsK
KyAgICBhdXRvIG1hdGNoaW5nRmFjZXNSZXN1bHQgPSBtX2JhY2tpbmctPm1hdGNoaW5nRmFjZXMo
Zm9udCwgdGV4dCk7CisgICAgaWYgKG1hdGNoaW5nRmFjZXNSZXN1bHQuaGFzRXhjZXB0aW9uKCkp
IHsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QobWF0Y2hpbmdGYWNlc1Jlc3VsdC5yZWxlYXNlRXhj
ZXB0aW9uKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIGF1dG8gbWF0Y2hpbmdGYWNl
cyA9IG1hdGNoaW5nRmFjZXNSZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCk7CiAKICAgICBpZiAo
bWF0Y2hpbmdGYWNlcy5pc0VtcHR5KCkpIHsKICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKFZlY3Rv
cjxSZWZQdHI8Rm9udEZhY2U+PigpKTsKQEAgLTE2Miw5ICsxNjIsOSBAQCB2b2lkIEZvbnRGYWNl
U2V0Ojpsb2FkKGNvbnN0IFN0cmluZyYgZm9udCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBMb2FkUHJv
bWlzZSYmIHBybwogICAgICAgICBwZW5kaW5nUHJvbWlzZS0+cHJvbWlzZS5yZXNvbHZlKHBlbmRp
bmdQcm9taXNlLT5mYWNlcyk7CiB9CiAKLWJvb2wgRm9udEZhY2VTZXQ6OmNoZWNrKGNvbnN0IFN0
cmluZyYgZmFtaWx5LCBjb25zdCBTdHJpbmcmIHRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhj
ZXB0aW9uT3I8Ym9vbD4gRm9udEZhY2VTZXQ6OmNoZWNrKGNvbnN0IFN0cmluZyYgZmFtaWx5LCBj
b25zdCBTdHJpbmcmIHRleHQpCiB7Ci0gICAgcmV0dXJuIG1fYmFja2luZy0+Y2hlY2soZmFtaWx5
LCB0ZXh0LCBlYyk7CisgICAgcmV0dXJuIG1fYmFja2luZy0+Y2hlY2soZmFtaWx5LCB0ZXh0KTsK
IH0KIAogdm9pZCBGb250RmFjZVNldDo6cmVnaXN0ZXJSZWFkeShSZWFkeVByb21pc2UmJiBwcm9t
aXNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuaAppbmRleCBhYzI3NDgwNGVkOThiY2QyYTNkNGIx
OGZiNTA0OGM1Nzc1NTQ1NjBhLi5lMWE3Mjc0NGRjZWRhZDA1ZTRmMWFjODYwZWYxZWY4MTIyMDkw
YTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuaApAQCAtMjMsOCArMjMsNyBAQAogICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCi0jaWZuZGVmIEZvbnRGYWNlU2V0X2gKLSNkZWZpbmUgRm9udEZhY2VT
ZXRfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNs
dWRlICJDU1NGb250RmFjZVNldC5oIgpAQCAtNDksNyArNDgsNyBAQCBwdWJsaWM6CiAKICAgICB0
eXBlZGVmIERPTVByb21pc2U8VmVjdG9yPFJlZlB0cjxGb250RmFjZT4+PiBMb2FkUHJvbWlzZTsK
ICAgICB2b2lkIGxvYWQoY29uc3QgU3RyaW5nJiBmb250LCBjb25zdCBTdHJpbmcmIHRleHQsIExv
YWRQcm9taXNlJiYpOwotICAgIGJvb2wgY2hlY2soY29uc3QgU3RyaW5nJiBmb250LCBjb25zdCBT
dHJpbmcmIHRleHQsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBFeGNlcHRpb25Pcjxib29sPiBjaGVj
ayhjb25zdCBTdHJpbmcmIGZvbnQsIGNvbnN0IFN0cmluZyYgdGV4dCk7CiAKICAgICBlbnVtIGNs
YXNzIExvYWRTdGF0dXMgeyBMb2FkaW5nLCBMb2FkZWQgfTsKICAgICBMb2FkU3RhdHVzIHN0YXR1
cygpIGNvbnN0OwpAQCAtMTE1LDUgKzExNCwzIEBAIHByaXZhdGU6CiB9OwogCiB9Ci0KLSNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0LmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5pZGwKaW5kZXggYjc2YTFhMTliOGJhMmMxOWFhYjEw
NTEwYmUyNjg0ZjVjZDMyODBlZC4uN2FiMWUzY2U1MjczZDU3ZjBhZTJjNGQxMjUxMDRlZDk2MDc0
ZmEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0LmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuaWRsCkBAIC00OCw3ICs0OCw3IEBAIGVu
dW0gRm9udEZhY2VTZXRMb2FkU3RhdHVzIHsKICAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9u
bG9hZGluZ2Vycm9yOwogCiAgICAgUHJvbWlzZSBsb2FkKERPTVN0cmluZyBmb250LCBvcHRpb25h
bCBET01TdHJpbmcgdGV4dCA9ICIgIik7Ci0gICAgW01heVRocm93TGVnYWN5RXhjZXB0aW9uXSBi
b29sZWFuIGNoZWNrKERPTVN0cmluZyBmb250LCBvcHRpb25hbCBET01TdHJpbmcgdGV4dCA9ICIg
Iik7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBib29sZWFuIGNoZWNrKERPTVN0cmluZyBmb250
LCBvcHRpb25hbCBET01TdHJpbmcgdGV4dCA9ICIgIik7CiAKICAgICBbQ3VzdG9tR2V0dGVyLCBD
YWNoZWRBdHRyaWJ1dGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBQcm9taXNlIHJlYWR5OwogICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBGb250RmFjZVNldExvYWRTdGF0dXMgc3RhdHVzOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRWYXJpYW50QnVpbGRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvRm9udFZhcmlhbnRCdWlsZGVyLmNwcAppbmRleCA5MmZiNjZmNDQ0YWM1Nzk5ZmE2
NDZiYzc5NDRhZDM3OTBhNGMzZTI1Li41NDY0OGFlMTEzODY0MDc5Y2IxNjM3NzVlMmE0Yzk4MzRi
NDU0Mzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udFZhcmlhbnRCdWlsZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udFZhcmlhbnRCdWlsZGVyLmNwcApAQCAt
NDIsNyArNDIsNyBAQCBGb250VmFyaWFudExpZ2F0dXJlc1ZhbHVlcyBleHRyYWN0Rm9udFZhcmlh
bnRMaWdhdHVyZXMoY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogCiAgICAgaWYgKGlzPENTU1ZhbHVl
TGlzdD4odmFsdWUpKSB7CiAgICAgICAgIGZvciAoYXV0byYgaXRlbSA6IGRvd25jYXN0PENTU1Zh
bHVlTGlzdD4odmFsdWUpKSB7Ci0gICAgICAgICAgICBzd2l0Y2ggKGRvd25jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlPihpdGVtLmdldCgpKS5nZXRWYWx1ZUlEKCkpIHsKKyAgICAgICAgICAgIHN3aXRj
aCAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGl0ZW0uZ2V0KCkpLnZhbHVlSUQoKSkgewog
ICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZU5vQ29tbW9uTGlnYXR1cmVzOgogICAgICAgICAgICAg
ICAgIGNvbW1vbiA9IEZvbnRWYXJpYW50TGlnYXR1cmVzOjpObzsKICAgICAgICAgICAgICAgICBi
cmVhazsKQEAgLTczLDcgKzczLDcgQEAgRm9udFZhcmlhbnRMaWdhdHVyZXNWYWx1ZXMgZXh0cmFj
dEZvbnRWYXJpYW50TGlnYXR1cmVzKGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVl
KSkgewotICAgICAgICBzd2l0Y2ggKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSku
Z2V0VmFsdWVJRCgpKSB7CisgICAgICAgIHN3aXRjaCAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWU+KHZhbHVlKS52YWx1ZUlEKCkpIHsKICAgICAgICAgY2FzZSBDU1NWYWx1ZU5vcm1hbDoKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU1ZhbHVlTm9uZToKQEAgLTEwMSw3ICsx
MDEsNyBAQCBGb250VmFyaWFudE51bWVyaWNWYWx1ZXMgZXh0cmFjdEZvbnRWYXJpYW50TnVtZXJp
Yyhjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCiAKICAgICBpZiAoaXM8Q1NTVmFsdWVMaXN0Pih2YWx1
ZSkpIHsKICAgICAgICAgZm9yIChhdXRvJiBpdGVtIDogZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pih2
YWx1ZSkpIHsKLSAgICAgICAgICAgIHN3aXRjaCAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+
KGl0ZW0uZ2V0KCkpLmdldFZhbHVlSUQoKSkgeworICAgICAgICAgICAgc3dpdGNoIChkb3duY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZT4oaXRlbS5nZXQoKSkudmFsdWVJRCgpKSB7CiAgICAgICAgICAg
ICBjYXNlIENTU1ZhbHVlTGluaW5nTnVtczoKICAgICAgICAgICAgICAgICBmaWd1cmUgPSBGb250
VmFyaWFudE51bWVyaWNGaWd1cmU6OkxpbmluZ051bWJlcnM7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CkBAIC0xMzIsNyArMTMyLDcgQEAgRm9udFZhcmlhbnROdW1lcmljVmFsdWVzIGV4dHJhY3RG
b250VmFyaWFudE51bWVyaWMoY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKQot
ICAgICAgICBBU1NFUlQoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS5nZXRWYWx1
ZUlEKCkgPT0gQ1NTVmFsdWVOb3JtYWwpOworICAgICAgICBBU1NFUlQoZG93bmNhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWU+KHZhbHVlKS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb3JtYWwpOwogCiAgICAg
cmV0dXJuIEZvbnRWYXJpYW50TnVtZXJpY1ZhbHVlcyhmaWd1cmUsIHNwYWNpbmcsIGZyYWN0aW9u
LCBvcmRpbmFsLCBzbGFzaGVkWmVybyk7CiB9CkBAIC0xNDUsNyArMTQ1LDcgQEAgRm9udFZhcmlh
bnRFYXN0QXNpYW5WYWx1ZXMgZXh0cmFjdEZvbnRWYXJpYW50RWFzdEFzaWFuKGNvbnN0IENTU1Zh
bHVlJiB2YWx1ZSkKIAogICAgIGlmIChpczxDU1NWYWx1ZUxpc3Q+KHZhbHVlKSkgewogICAgICAg
ICBmb3IgKGF1dG8mIGl0ZW0gOiBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KHZhbHVlKSkgewotICAg
ICAgICAgICAgc3dpdGNoIChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oaXRlbS5nZXQoKSku
Z2V0VmFsdWVJRCgpKSB7CisgICAgICAgICAgICBzd2l0Y2ggKGRvd25jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlPihpdGVtLmdldCgpKS52YWx1ZUlEKCkpIHsKICAgICAgICAgICAgIGNhc2UgQ1NTVmFs
dWVKaXM3ODoKICAgICAgICAgICAgICAgICB2YXJpYW50ID0gRm9udFZhcmlhbnRFYXN0QXNpYW5W
YXJpYW50OjpKaXM3ODsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTE3OSw3ICsxNzksNyBA
QCBGb250VmFyaWFudEVhc3RBc2lhblZhbHVlcyBleHRyYWN0Rm9udFZhcmlhbnRFYXN0QXNpYW4o
Y29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfSBl
bHNlIGlmIChpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKQotICAgICAgICBBU1NFUlQoZG93
bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVO
b3JtYWwpOworICAgICAgICBBU1NFUlQoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVl
KS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb3JtYWwpOwogCiAgICAgcmV0dXJuIEZvbnRWYXJpYW50
RWFzdEFzaWFuVmFsdWVzKHZhcmlhbnQsIHdpZHRoLCBydWJ5KTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlh
TGlzdC5jcHAKaW5kZXggMjlkODI2OTFlMjNjMWExY2YwNTc4ZTY2YmVjODNjMTg5MTMzYjE1ZC4u
ZTg1Mzg4NzEwZmY0NWFmMjM1ODM4Y2VkMWFhNjk3NGIzNjlkNGFhNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL01l
ZGlhTGlzdC5jcHAKQEAgLTIyMiwxNSArMjIyLDE0IEBAIE1lZGlhTGlzdDo6fk1lZGlhTGlzdCgp
CiB7CiB9CiAKLXZvaWQgTWVkaWFMaXN0OjpzZXRNZWRpYVRleHQoY29uc3QgU3RyaW5nJiB2YWx1
ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRpb25Pcjx2b2lkPiBNZWRpYUxpc3Q6OnNldE1l
ZGlhVGV4dChjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIENTU1N0eWxlU2hlZXQ6OlJ1bGVN
dXRhdGlvblNjb3BlIG11dGF0aW9uU2NvcGUobV9wYXJlbnRSdWxlKTsKLSAgICBpZiAoIW1fbWVk
aWFRdWVyaWVzLT5wYXJzZSh2YWx1ZSkpIHsKLSAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmICghbV9tZWRpYVF1ZXJpZXMtPnBhcnNlKHZhbHVl
KSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNZTlRBWF9FUlIgfTsKICAgICBpZiAobV9w
YXJlbnRTdHlsZVNoZWV0KQogICAgICAgICBtX3BhcmVudFN0eWxlU2hlZXQtPmRpZE11dGF0ZSgp
OworICAgIHJldHVybiB7IH07CiB9CiAKIFN0cmluZyBNZWRpYUxpc3Q6Oml0ZW0odW5zaWduZWQg
aW5kZXgpIGNvbnN0CkBAIC0yNDEsMzEgKzI0MCwzMCBAQCBTdHJpbmcgTWVkaWFMaXN0OjppdGVt
KHVuc2lnbmVkIGluZGV4KSBjb25zdAogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAotdm9pZCBN
ZWRpYUxpc3Q6OmRlbGV0ZU1lZGl1bShjb25zdCBTdHJpbmcmIG1lZGl1bSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCitFeGNlcHRpb25Pcjx2b2lkPiBNZWRpYUxpc3Q6OmRlbGV0ZU1lZGl1bShjb25zdCBT
dHJpbmcmIG1lZGl1bSkKIHsKICAgICBDU1NTdHlsZVNoZWV0OjpSdWxlTXV0YXRpb25TY29wZSBt
dXRhdGlvblNjb3BlKG1fcGFyZW50UnVsZSk7CiAKICAgICBib29sIHN1Y2Nlc3MgPSBtX21lZGlh
UXVlcmllcy0+cmVtb3ZlKG1lZGl1bSk7Ci0gICAgaWYgKCFzdWNjZXNzKSB7Ci0gICAgICAgIGVj
ID0gTk9UX0ZPVU5EX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoIXN1Y2Nl
c3MpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOT1RfRk9VTkRfRVJSIH07CiAgICAgaWYg
KG1fcGFyZW50U3R5bGVTaGVldCkKICAgICAgICAgbV9wYXJlbnRTdHlsZVNoZWV0LT5kaWRNdXRh
dGUoKTsKKyAgICByZXR1cm4geyB9OwogfQogCi12b2lkIE1lZGlhTGlzdDo6YXBwZW5kTWVkaXVt
KGNvbnN0IFN0cmluZyYgbWVkaXVtLCBFeGNlcHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPHZv
aWQ+IE1lZGlhTGlzdDo6YXBwZW5kTWVkaXVtKGNvbnN0IFN0cmluZyYgbWVkaXVtKQogewogICAg
IENTU1N0eWxlU2hlZXQ6OlJ1bGVNdXRhdGlvblNjb3BlIG11dGF0aW9uU2NvcGUobV9wYXJlbnRS
dWxlKTsKIAogICAgIGJvb2wgc3VjY2VzcyA9IG1fbWVkaWFRdWVyaWVzLT5hZGQobWVkaXVtKTsK
ICAgICBpZiAoIXN1Y2Nlc3MpIHsKICAgICAgICAgLy8gRklYTUU6IFNob3VsZCB0aGlzIHJlYWxs
eSBiZSBJTlZBTElEX0NIQVJBQ1RFUl9FUlI/Ci0gICAgICAgIGVjID0gSU5WQUxJRF9DSEFSQUNU
RVJfRVJSOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJTlZB
TElEX0NIQVJBQ1RFUl9FUlIgfTsKICAgICB9CiAgICAgaWYgKG1fcGFyZW50U3R5bGVTaGVldCkK
ICAgICAgICAgbV9wYXJlbnRTdHlsZVNoZWV0LT5kaWRNdXRhdGUoKTsKKyAgICByZXR1cm4geyB9
OwogfQogCiB2b2lkIE1lZGlhTGlzdDo6cmVhdHRhY2goTWVkaWFRdWVyeVNldCogbWVkaWFRdWVy
aWVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5oIGIvU291cmNl
L1dlYkNvcmUvY3NzL01lZGlhTGlzdC5oCmluZGV4IGJmMDcxZmUyZjg1ZWQxYmU4NGNmMzIyODFj
ZjMyODE4ZTFkYmIzMTEuLjY3MmFhNGE5OTljMTcwMjdiMGZkYjM0ZjAzZjBhNThkZWM2ZGJlZjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvTWVkaWFMaXN0LmgKQEAgLTIwLDEwICsyMCwxMCBAQAogCiAjcHJhZ21hIG9u
Y2UKIAorI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTMzLDggKzMz
LDYgQEAgY2xhc3MgQ1NTU3R5bGVTaGVldDsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgTWVkaWFR
dWVyeTsKIAotdXNpbmcgRXhjZXB0aW9uQ29kZSA9IGludDsKLQogY2xhc3MgTWVkaWFRdWVyeVNl
dCBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhUXVlcnlTZXQ+IHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUmVmPE1lZGlhUXVlcnlTZXQ+IGNyZWF0ZSgpCkBAIC05NiwxMSArOTQsMTEgQEAg
cHVibGljOgogCiAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYVF1
ZXJpZXMtPnF1ZXJ5VmVjdG9yKCkuc2l6ZSgpOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5n
IGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGVs
ZXRlTWVkaXVtKGNvbnN0IFN0cmluZyYgb2xkTWVkaXVtLCBFeGNlcHRpb25Db2RlJik7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBlbmRNZWRpdW0oY29uc3QgU3RyaW5nJiBuZXdNZWRpdW0s
IEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBFeGNlcHRpb25Pcjx2b2lkPiBk
ZWxldGVNZWRpdW0oY29uc3QgU3RyaW5nJiBvbGRNZWRpdW0pOworICAgIFdFQkNPUkVfRVhQT1JU
IEV4Y2VwdGlvbk9yPHZvaWQ+IGFwcGVuZE1lZGl1bShjb25zdCBTdHJpbmcmIG5ld01lZGl1bSk7
CiAKICAgICBTdHJpbmcgbWVkaWFUZXh0KCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYVF1ZXJpZXMt
Pm1lZGlhVGV4dCgpOyB9Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNZWRpYVRleHQoY29u
c3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOworICAgIFdFQkNPUkVfRVhQT1JUIEV4Y2VwdGlv
bk9yPHZvaWQ+IHNldE1lZGlhVGV4dChjb25zdCBTdHJpbmcmKTsKIAogICAgIENTU1J1bGUqIHBh
cmVudFJ1bGUoKSBjb25zdCB7IHJldHVybiBtX3BhcmVudFJ1bGU7IH0KICAgICBDU1NTdHlsZVNo
ZWV0KiBwYXJlbnRTdHlsZVNoZWV0KCkgY29uc3QgeyByZXR1cm4gbV9wYXJlbnRTdHlsZVNoZWV0
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFMaXN0LmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3QuaWRsCmluZGV4IGJhZjVjOTMzOGExZTIwMmQ0ZWQ2NjUy
NmUyYWY5MTk4Nzg3MmEyYWMuLjZkNmQzYzQxZTFmZDMzMzg1NWQxNzhjMjc1ZGI4OGZhYTVkZmQ5
ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3QuaWRsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3QuaWRsCkBAIC0yOSwxMSArMjksMTEgQEAKICAgICBJ
bXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAogICAgIEpTQ3VzdG9tSGVhZGVyLAogXSBpbnRlcmZh
Y2UgTWVkaWFMaXN0IHsKLSAgICBbU2V0dGVyTWF5VGhyb3dMZWdhY3lFeGNlcHRpb24sIFRyZWF0
TnVsbEFzPUVtcHR5U3RyaW5nXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG1lZGlhVGV4dDsKKyAgICBb
U2V0dGVyTWF5VGhyb3dFeGNlcHRpb24sIFRyZWF0TnVsbEFzPUVtcHR5U3RyaW5nXSBhdHRyaWJ1
dGUgRE9NU3RyaW5nIG1lZGlhVGV4dDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQg
bG9uZyBsZW5ndGg7CiAKICAgICBnZXR0ZXIgRE9NU3RyaW5nPyBpdGVtKHVuc2lnbmVkIGxvbmcg
aW5kZXgpOwogCi0gICAgW01heVRocm93TGVnYWN5RXhjZXB0aW9uXSB2b2lkIGRlbGV0ZU1lZGl1
bShET01TdHJpbmcgb2xkTWVkaXVtKTsKLSAgICBbTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHZv
aWQgYXBwZW5kTWVkaXVtKERPTVN0cmluZyBuZXdNZWRpdW0pOworICAgIFtNYXlUaHJvd0V4Y2Vw
dGlvbl0gdm9pZCBkZWxldGVNZWRpdW0oRE9NU3RyaW5nIG9sZE1lZGl1bSk7CisgICAgW01heVRo
cm93RXhjZXB0aW9uXSB2b2lkIGFwcGVuZE1lZGl1bShET01TdHJpbmcgbmV3TWVkaXVtKTsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHAKaW5kZXggNzViYjc0
NmRjYzRiM2JmM2FhMThjZGRiYzRjOTIyZjliNTEwMDNmOC4uMmMxY2QyMzg4Y2E2OTQyNDE5ZjUx
YWY3YThiNjhlMDYyZWJmYjhlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlh
UXVlcnlFdmFsdWF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXZh
bHVhdG9yLmNwcApAQCAtMjA4LDcgKzIwOCw3IEBAIHN0YXRpYyBPcHRpb25hbDxkb3VibGU+IGRv
dWJsZVZhbHVlKENTU1ZhbHVlKiB2YWx1ZSkKIHsKICAgICBpZiAoIWlzPENTU1ByaW1pdGl2ZVZh
bHVlPih2YWx1ZSkgfHwgIWRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUpLmlzTnVt
YmVyKCkpCiAgICAgICAgIHJldHVybiBOdWxsb3B0OwotICAgIHJldHVybiBkb3duY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZT4oKnZhbHVlKS5nZXREb3VibGVWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX05VTUJFUik7CisgICAgcmV0dXJuIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFs
dWUpLmRvdWJsZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKIH0KIAogc3Rh
dGljIGJvb2wgemVyb0V2YWx1YXRlKENTU1ZhbHVlKiB2YWx1ZSwgTWVkaWFGZWF0dXJlUHJlZml4
IG9wKQpAQCAtMjQ1LDcgKzI0NSw3IEBAIHN0YXRpYyBib29sIGNvbG9yR2FtdXRFdmFsdWF0ZShD
U1NWYWx1ZSogdmFsdWUsIGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmCiAgICAgaWYg
KCF2YWx1ZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBzd2l0Y2ggKGRvd25jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUpLmdldFZhbHVlSUQoKSkgeworICAgIHN3aXRjaCAoZG93
bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YWx1ZSkudmFsdWVJRCgpKSB7CiAgICAgY2FzZSBD
U1NWYWx1ZVNyZ2I6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGNhc2UgQ1NTVmFsdWVQMzoK
QEAgLTI3MSw3ICsyNzEsNyBAQCBzdGF0aWMgYm9vbCBpbnZlcnRlZENvbG9yc0V2YWx1YXRlKENT
U1ZhbHVlKiB2YWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRAogICAgIGJvb2wgaXNJ
bnZlcnRlZCA9IHNjcmVlbkhhc0ludmVydGVkQ29sb3JzKCk7CiAgICAgaWYgKCF2YWx1ZSkKICAg
ICAgICAgcmV0dXJuIGlzSW52ZXJ0ZWQ7Ci0gICAgcmV0dXJuIGRvd25jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlPigqdmFsdWUpLmdldFZhbHVlSUQoKSA9PSAoaXNJbnZlcnRlZCA/IENTU1ZhbHVlSW52
ZXJ0ZWQgOiBDU1NWYWx1ZU5vbmUpOworICAgIHJldHVybiBkb3duY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZT4oKnZhbHVlKS52YWx1ZUlEKCkgPT0gKGlzSW52ZXJ0ZWQgPyBDU1NWYWx1ZUludmVydGVk
IDogQ1NTVmFsdWVOb25lKTsKIH0KIAogc3RhdGljIGJvb2wgb3JpZW50YXRpb25FdmFsdWF0ZShD
U1NWYWx1ZSogdmFsdWUsIGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmLCBGcmFtZSYg
ZnJhbWUsIE1lZGlhRmVhdHVyZVByZWZpeCkKQEAgLTI4OCw3ICsyODgsNyBAQCBzdGF0aWMgYm9v
bCBvcmllbnRhdGlvbkV2YWx1YXRlKENTU1ZhbHVlKiB2YWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGhD
b252ZXJzaW9uRGF0YQogICAgICAgICByZXR1cm4gaGVpZ2h0ID49IDAgJiYgd2lkdGggPj0gMDsK
ICAgICB9CiAKLSAgICBhdXRvIGtleXdvcmQgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4o
KnZhbHVlKS5nZXRWYWx1ZUlEKCk7CisgICAgYXV0byBrZXl3b3JkID0gZG93bmNhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWU+KCp2YWx1ZSkudmFsdWVJRCgpOwogICAgIGlmICh3aWR0aCA+IGhlaWdodCkg
Ly8gU3F1YXJlIHZpZXdwb3J0IGlzIHBvcnRyYWl0LgogICAgICAgICByZXR1cm4ga2V5d29yZCA9
PSBDU1NWYWx1ZUxhbmRzY2FwZTsKICAgICByZXR1cm4ga2V5d29yZCA9PSBDU1NWYWx1ZVBvcnRy
YWl0OwpAQCAtMzQ5LDcgKzM0OSw3IEBAIHN0YXRpYyBib29sIGV2YWx1YXRlUmVzb2x1dGlvbihD
U1NWYWx1ZSogdmFsdWUsIEZyYW1lJiBmcmFtZSwgTWVkaWFGZWF0dXJlUHJlZml4CiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8mIHJlc29sdXRpb24gPSBkb3duY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZT4oKnZhbHVlKTsKLSAgICByZXR1cm4gY29tcGFyZVZhbHVlKGRldmljZVNjYWxl
RmFjdG9yLCByZXNvbHV0aW9uLmlzTnVtYmVyKCkgPyByZXNvbHV0aW9uLmdldEZsb2F0VmFsdWUo
KSA6IHJlc29sdXRpb24uZ2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RQUFgp
LCBvcCk7CisgICAgcmV0dXJuIGNvbXBhcmVWYWx1ZShkZXZpY2VTY2FsZUZhY3RvciwgcmVzb2x1
dGlvbi5pc051bWJlcigpID8gcmVzb2x1dGlvbi5mbG9hdFZhbHVlKCkgOiByZXNvbHV0aW9uLmZs
b2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19EUFBYKSwgb3ApOwogfQogCiBzdGF0aWMg
Ym9vbCBkZXZpY2VQaXhlbFJhdGlvRXZhbHVhdGUoQ1NTVmFsdWUqIHZhbHVlLCBjb25zdCBDU1NU
b0xlbmd0aENvbnZlcnNpb25EYXRhJiwgRnJhbWUmIGZyYW1lLCBNZWRpYUZlYXR1cmVQcmVmaXgg
b3ApCkBAIC0zODIsNyArMzgyLDcgQEAgc3RhdGljIGJvb2wgY29tcHV0ZUxlbmd0aChDU1NWYWx1
ZSogdmFsdWUsIGJvb2wgc3RyaWN0LCBjb25zdCBDU1NUb0xlbmd0aENvbnZlcnMKICAgICBhdXRv
JiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUpOwog
CiAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLmlzTnVtYmVyKCkpIHsKLSAgICAgICAgcmVzdWx0ID0g
cHJpbWl0aXZlVmFsdWUuZ2V0SW50VmFsdWUoKTsKKyAgICAgICAgcmVzdWx0ID0gcHJpbWl0aXZl
VmFsdWUuaW50VmFsdWUoKTsKICAgICAgICAgcmV0dXJuICFzdHJpY3QgfHwgIXJlc3VsdDsKICAg
ICB9CiAKQEAgLTU4Nyw3ICs1ODcsNyBAQCBzdGF0aWMgYm9vbCB2aWV3TW9kZUV2YWx1YXRlKENT
U1ZhbHVlKiB2YWx1ZSwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYsCiAgICAgaWYg
KCF2YWx1ZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBhdXRvIGtleXdvcmQgPSBkb3du
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVlKS5nZXRWYWx1ZUlEKCk7CisgICAgYXV0byBr
ZXl3b3JkID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YWx1ZSkudmFsdWVJRCgpOwog
CiAgICAgc3dpdGNoIChmcmFtZS5wYWdlKCktPnZpZXdNb2RlKCkpIHsKICAgICBjYXNlIFBhZ2U6
OlZpZXdNb2RlV2luZG93ZWQ6CkBAIC02MjQsNyArNjI0LDcgQEAgc3RhdGljIGJvb2wgaG92ZXJF
dmFsdWF0ZShDU1NWYWx1ZSogdmFsdWUsIGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEm
LCBGcmEKICNlbmRpZgogICAgIH0KIAotICAgIGF1dG8ga2V5d29yZCA9IGRvd25jYXN0PENTU1By
aW1pdGl2ZVZhbHVlPigqdmFsdWUpLmdldFZhbHVlSUQoKTsKKyAgICBhdXRvIGtleXdvcmQgPSBk
b3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVlKS52YWx1ZUlEKCk7CiAjaWYgRU5BQkxF
KFRPVUNIX0VWRU5UUykKICAgICByZXR1cm4ga2V5d29yZCA9PSBDU1NWYWx1ZU5vbmU7CiAjZWxz
ZQpAQCAtNjQyLDcgKzY0Miw3IEBAIHN0YXRpYyBib29sIHBvaW50ZXJFdmFsdWF0ZShDU1NWYWx1
ZSogdmFsdWUsIGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmLCBGCiAgICAgaWYgKCFp
czxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAg
IGF1dG8ga2V5d29yZCA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUpLmdldFZh
bHVlSUQoKTsKKyAgICBhdXRvIGtleXdvcmQgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4o
KnZhbHVlKS52YWx1ZUlEKCk7CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICByZXR1cm4g
a2V5d29yZCA9PSBDU1NWYWx1ZUNvYXJzZTsKICNlbHNlCkBAIC02NzEsNyArNjcxLDcgQEAgc3Rh
dGljIGJvb2wgcHJlZmVyc1JlZHVjZWRNb3Rpb25FdmFsdWF0ZShDU1NWYWx1ZSogdmFsdWUsIGNv
bnN0IENTU1RvTGVuZ3RoQ29udmUKICAgICBpZiAoIXZhbHVlKQogICAgICAgICByZXR1cm4gdXNl
clByZWZlcnNSZWR1Y2VkTW90aW9uOwogCi0gICAgcmV0dXJuIGRvd25jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlPigqdmFsdWUpLmdldFZhbHVlSUQoKSA9PSAodXNlclByZWZlcnNSZWR1Y2VkTW90aW9u
ID8gQ1NTVmFsdWVSZWR1Y2UgOiBDU1NWYWx1ZURlZmF1bHQpOworICAgIHJldHVybiBkb3duY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVlKS52YWx1ZUlEKCkgPT0gKHVzZXJQcmVmZXJzUmVk
dWNlZE1vdGlvbiA/IENTU1ZhbHVlUmVkdWNlIDogQ1NTVmFsdWVEZWZhdWx0KTsKIH0KIAogLy8g
VXNlIHRoaXMgZnVuY3Rpb24gaW5zdGVhZCBvZiBjYWxsaW5nIGFkZCBkaXJlY3RseSB0byBhdm9p
ZCBpbmxpbmluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXhw
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXhwLmNwcAppbmRleCA4MGYyZjc3
YTAxMWI2ZTA1ZjQ4ODg3ZTlhYTY1OTBjODBjZTU0YjhmLi42YmVkOTRhN2MxYTg1OTdlMGJhNGJj
MzRmYmFlNmJiNzUzNTMwMDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFR
dWVyeUV4cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFeHAuY3BwCkBA
IC0xMjksNyArMTI5LDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzRmVhdHVyZVZhbGlkV2l0aElk
ZW50aWZpZXIoY29uc3QgQXRvbWljU3RyaW5nJiBtZWRpYUZlYXR1cmUKIAogc3RhdGljIGlubGlu
ZSBib29sIGlzRmVhdHVyZVZhbGlkV2l0aE5vbk5lZ2F0aXZlTGVuZ3RoT3JOdW1iZXIoY29uc3Qg
QXRvbWljU3RyaW5nJiBtZWRpYUZlYXR1cmUsIGNvbnN0IENTU1BhcnNlclZhbHVlJiB2YWx1ZSkK
IHsKLSAgICBpZiAoIShDU1NQcmltaXRpdmVWYWx1ZTo6aXNMZW5ndGgodmFsdWUudW5pdCkgfHwg
dmFsdWUudW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikgfHwgdmFsdWUuZlZh
bHVlIDwgMCkKKyAgICBpZiAoIShDU1NQcmltaXRpdmVWYWx1ZTo6aXNMZW5ndGgoc3RhdGljX2Nh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcz4odmFsdWUudW5pdCkpIHx8IHZhbHVlLnVu
aXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpIHx8IHZhbHVlLmZWYWx1ZSA8IDAp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiBtZWRpYUZlYXR1cmUgPT0gTWVk
aWFGZWF0dXJlTmFtZXM6OmhlaWdodApAQCAtMTQ4LDcgKzE0OCw3IEBAIHN0YXRpYyBpbmxpbmUg
Ym9vbCBpc0ZlYXR1cmVWYWxpZFdpdGhOb25OZWdhdGl2ZUxlbmd0aE9yTnVtYmVyKGNvbnN0IEF0
b21pY1N0cmluCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0ZlYXR1cmVWYWxpZFdpdGhEZW5zaXR5
KGNvbnN0IEF0b21pY1N0cmluZyYgbWVkaWFGZWF0dXJlLCBjb25zdCBDU1NQYXJzZXJWYWx1ZSYg
dmFsdWUpCiB7Ci0gICAgaWYgKCFDU1NQcmltaXRpdmVWYWx1ZTo6aXNSZXNvbHV0aW9uKHZhbHVl
LnVuaXQpIHx8IHZhbHVlLmZWYWx1ZSA8PSAwKQorICAgIGlmICghQ1NTUHJpbWl0aXZlVmFsdWU6
OmlzUmVzb2x1dGlvbihzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzPih2
YWx1ZS51bml0KSkgfHwgdmFsdWUuZlZhbHVlIDw9IDApCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIHJldHVybiBtZWRpYUZlYXR1cmUgPT0gTWVkaWFGZWF0dXJlTmFtZXM6OnJlc29sdXRp
b24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVj
bGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNs
YXJhdGlvbi5jcHAKaW5kZXggOTlmYzVkZDJmOGU3MjgwOTQ3ZjY3OWY0MmZhYjBiNjM2OTZjZTAz
OC4uZmQ1ZTFiNDc3ZTE3MjAwMjUzZGMwMTdkZGIzNTQxMThhY2UyYTA4ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAK
QEAgLTE0OCwxNyArMTQ4LDE4IEBAIFN0cmluZyBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRp
b246OmNzc1RleHQoKSBjb25zdAogICAgIHJldHVybiBtX3Byb3BlcnR5U2V0LT5hc1RleHQoKTsK
IH0KIAotdm9pZCBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OnNldENzc1RleHQoY29u
c3QgU3RyaW5nJiB0ZXh0LCBFeGNlcHRpb25Db2RlJikKK0V4Y2VwdGlvbk9yPHZvaWQ+IFByb3Bl
cnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6c2V0Q3NzVGV4dChjb25zdCBTdHJpbmcmIHRleHQp
CiB7CiAgICAgU3R5bGVBdHRyaWJ1dGVNdXRhdGlvblNjb3BlIG11dGF0aW9uU2NvcGUodGhpcyk7
CiAgICAgaWYgKCF3aWxsTXV0YXRlKCkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJu
IHsgfTsKIAogICAgIGJvb2wgY2hhbmdlZCA9IG1fcHJvcGVydHlTZXQtPnBhcnNlRGVjbGFyYXRp
b24odGV4dCwgY3NzUGFyc2VyQ29udGV4dCgpLCBjb250ZXh0U3R5bGVTaGVldCgpKTsKIAogICAg
IGRpZE11dGF0ZShjaGFuZ2VkID8gUHJvcGVydHlDaGFuZ2VkIDogTm9DaGFuZ2VzKTsKIAotICAg
IG11dGF0aW9uU2NvcGUuZW5xdWV1ZU11dGF0aW9uUmVjb3JkKCk7ICAgIAorICAgIG11dGF0aW9u
U2NvcGUuZW5xdWV1ZU11dGF0aW9uUmVjb3JkKCk7CisgICAgcmV0dXJuIHsgfTsKIH0KIAogUmVm
UHRyPENTU1ZhbHVlPiBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5
Q1NTVmFsdWUoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpCkBAIC0yMTQsNyArMjE1LDcgQEAg
Ym9vbCBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OmlzUHJvcGVydHlJbXBsaWNpdChj
b25zdCBTdHJpbmcmIHByb3BlcnR5TmEKICAgICByZXR1cm4gbV9wcm9wZXJ0eVNldC0+aXNQcm9w
ZXJ0eUltcGxpY2l0KHByb3BlcnR5SUQpOwogfQogCi12b2lkIFByb3BlcnR5U2V0Q1NTU3R5bGVE
ZWNsYXJhdGlvbjo6c2V0UHJvcGVydHkoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIGNvbnN0
IFN0cmluZyYgdmFsdWUsIGNvbnN0IFN0cmluZyYgcHJpb3JpdHksIEV4Y2VwdGlvbkNvZGUmIGVj
KQorRXhjZXB0aW9uT3I8dm9pZD4gUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpzZXRQ
cm9wZXJ0eShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwg
Y29uc3QgU3RyaW5nJiBwcmlvcml0eSkKIHsKICAgICBTdHlsZUF0dHJpYnV0ZU11dGF0aW9uU2Nv
cGUgbXV0YXRpb25TY29wZSh0aGlzKTsKICAgICAKQEAgLTIyMiwxNiArMjIzLDE0IEBAIHZvaWQg
UHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpzZXRQcm9wZXJ0eShjb25zdCBTdHJpbmcm
IHByb3BlcnR5TmFtZSwgY29uCiAgICAgaWYgKGlzQ3VzdG9tUHJvcGVydHlOYW1lKHByb3BlcnR5
TmFtZSkpCiAgICAgICAgIHByb3BlcnR5SUQgPSBDU1NQcm9wZXJ0eUN1c3RvbTsKICAgICBpZiAo
IXByb3BlcnR5SUQpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHsgfTsKIAogICAg
IGlmICghd2lsbE11dGF0ZSgpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB7IH07
CiAKICAgICBib29sIGltcG9ydGFudCA9IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UocHJpb3JpdHks
ICJpbXBvcnRhbnQiKTsKICAgICBpZiAoIWltcG9ydGFudCAmJiAhcHJpb3JpdHkuaXNFbXB0eSgp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBlYyA9IDA7CisgICAgICAgIHJldHVybiB7IH07CiAK
ICAgICBib29sIGNoYW5nZWQ7CiAgICAgaWYgKHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlDdXN0
b20pCkBAIC0yNDYsOSArMjQ1LDExIEBAIHZvaWQgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0
aW9uOjpzZXRQcm9wZXJ0eShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgY29uCiAgICAgICAg
IC8vIHNlZSA8aHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI5Nj4uCiAg
ICAgICAgIG11dGF0aW9uU2NvcGUuZW5xdWV1ZU11dGF0aW9uUmVjb3JkKCk7CiAgICAgfQorCisg
ICAgcmV0dXJuIHsgfTsKIH0KIAotU3RyaW5nIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlv
bjo6cmVtb3ZlUHJvcGVydHkoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQorRXhjZXB0aW9uT3I8U3RyaW5nPiBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRp
b246OnJlbW92ZVByb3BlcnR5KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKQogewogICAgIFN0
eWxlQXR0cmlidXRlTXV0YXRpb25TY29wZSBtdXRhdGlvblNjb3BlKHRoaXMpOwogICAgIENTU1By
b3BlcnR5SUQgcHJvcGVydHlJRCA9IGNzc1Byb3BlcnR5SUQocHJvcGVydHlOYW1lKTsKQEAgLTI2
MCw3ICsyNjEsNiBAQCBTdHJpbmcgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpyZW1v
dmVQcm9wZXJ0eShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZQogICAgIGlmICghd2lsbE11dGF0
ZSgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBlYyA9IDA7CiAgICAgU3RyaW5n
IHJlc3VsdDsKICAgICBib29sIGNoYW5nZWQgPSBwcm9wZXJ0eUlEICE9IENTU1Byb3BlcnR5Q3Vz
dG9tID8gbV9wcm9wZXJ0eVNldC0+cmVtb3ZlUHJvcGVydHkocHJvcGVydHlJRCwgJnJlc3VsdCkg
OiBtX3Byb3BlcnR5U2V0LT5yZW1vdmVDdXN0b21Qcm9wZXJ0eShwcm9wZXJ0eU5hbWUsICZyZXN1
bHQpOwogCkBAIC0yNjgsMTYgKzI2OCwxMiBAQCBTdHJpbmcgUHJvcGVydHlTZXRDU1NTdHlsZURl
Y2xhcmF0aW9uOjpyZW1vdmVQcm9wZXJ0eShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZQogCiAg
ICAgaWYgKGNoYW5nZWQpCiAgICAgICAgIG11dGF0aW9uU2NvcGUuZW5xdWV1ZU11dGF0aW9uUmVj
b3JkKCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gV1RGTW92ZShyZXN1bHQpOwog
fQogCiBSZWZQdHI8Q1NTVmFsdWU+IFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0
UHJvcGVydHlDU1NWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkKIHsKLSAg
ICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlID0gbV9wcm9wZXJ0eVNldC0+Z2V0UHJvcGVydHlDU1NW
YWx1ZShwcm9wZXJ0eUlEKTsKLSAgICBpZiAodmFsdWUpCi0gICAgICAgIHJldHVybiB2YWx1ZTsK
LQotICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBtX3Byb3BlcnR5U2V0LT5nZXRQcm9w
ZXJ0eUNTU1ZhbHVlKHByb3BlcnR5SUQpOwogfQogCiBTdHJpbmcgUHJvcGVydHlTZXRDU1NTdHls
ZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlJRCBwcm9w
ZXJ0eUlEKQpAQCAtMjg5LDEzICsyODUsMTIgQEAgU3RyaW5nIFByb3BlcnR5U2V0Q1NTU3R5bGVE
ZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5SUQgcHIKICAg
ICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLWJvb2wgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0
aW9uOjpzZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0
aW9uT3I8Ym9vbD4gUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpzZXRQcm9wZXJ0eUlu
dGVybmFsKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9v
bCBpbXBvcnRhbnQpCiB7IAogICAgIFN0eWxlQXR0cmlidXRlTXV0YXRpb25TY29wZSBtdXRhdGlv
blNjb3BlKHRoaXMpOwogICAgIGlmICghd2lsbE11dGF0ZSgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBlYyA9IDA7CiAgICAgYm9vbCBjaGFuZ2VkID0gbV9wcm9wZXJ0eVNldC0+c2V0
UHJvcGVydHkocHJvcGVydHlJRCwgdmFsdWUsIGltcG9ydGFudCwgY3NzUGFyc2VyQ29udGV4dCgp
LCBjb250ZXh0U3R5bGVTaGVldCgpKTsKIAogICAgIGRpZE11dGF0ZShjaGFuZ2VkID8gUHJvcGVy
dHlDaGFuZ2VkIDogTm9DaGFuZ2VzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Q
cm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9w
ZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uaAppbmRleCA4NzVlOThkYzNlYTVkNzFiZjBjMmY2
YTU3YTJlYjgxMzFjMWI1ZWNlLi41YWJkMDk3NGY1ZmJhN2IxNmZiYWUwNjJlZTAzODhiNDhjOGFh
ODBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURl
Y2xhcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVE
ZWNsYXJhdGlvbi5oCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0j
aWZuZGVmIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbl9oCi0jZGVmaW5lIFByb3BlcnR5
U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbl9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNTU1Bh
cnNlck1vZGUuaCIKICNpbmNsdWRlICJDU1NTdHlsZURlY2xhcmF0aW9uLmgiCkBAIC00NCwxNCAr
NDMsMjMgQEAgY2xhc3MgU3R5bGVkRWxlbWVudDsKIGNsYXNzIFByb3BlcnR5U2V0Q1NTU3R5bGVE
ZWNsYXJhdGlvbiA6IHB1YmxpYyBDU1NTdHlsZURlY2xhcmF0aW9uIHsKIHB1YmxpYzoKICAgICBQ
cm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24oTXV0YWJsZVN0eWxlUHJvcGVydGllcyogcHJv
cGVydHlTZXQpIDogbV9wcm9wZXJ0eVNldChwcm9wZXJ0eVNldCkgeyB9Ci0gICAgCisKICAgICB2
aXJ0dWFsIHZvaWQgY2xlYXJQYXJlbnRFbGVtZW50KCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsg
fQorCiAgICAgU3R5bGVTaGVldENvbnRlbnRzKiBjb250ZXh0U3R5bGVTaGVldCgpIGNvbnN0Owot
ICAgIAorCitwcm90ZWN0ZWQ6CisgICAgZW51bSBNdXRhdGlvblR5cGUgeyBOb0NoYW5nZXMsIFBy
b3BlcnR5Q2hhbmdlZCB9OworCisgICAgdmlydHVhbCBDU1NQYXJzZXJDb250ZXh0IGNzc1BhcnNl
ckNvbnRleHQoKSBjb25zdDsKKworICAgIE11dGFibGVTdHlsZVByb3BlcnRpZXMqIG1fcHJvcGVy
dHlTZXQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPEhhc2hNYXA8Q1NTVmFsdWUqLCBSZWZQdHI8Q1NT
VmFsdWU+Pj4gbV9jc3NvbUNTU1ZhbHVlQ2xvbmVzOworCitwcml2YXRlOgogICAgIHZvaWQgcmVm
KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkZXJlZigpIG92ZXJyaWRlOwogCi1wcml2YXRlOgogICAg
IENTU1J1bGUqIHBhcmVudFJ1bGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9
CiAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgZmluYWw7CiAgICAgU3RyaW5nIGl0ZW0odW5z
aWduZWQgaW5kZXgpIGNvbnN0IGZpbmFsOwpAQCAtNjAsMzAgKzY4LDIzIEBAIHByaXZhdGU6CiAg
ICAgU3RyaW5nIGdldFByb3BlcnR5UHJpb3JpdHkoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUp
IGZpbmFsOwogICAgIFN0cmluZyBnZXRQcm9wZXJ0eVNob3J0aGFuZChjb25zdCBTdHJpbmcmIHBy
b3BlcnR5TmFtZSkgZmluYWw7CiAgICAgYm9vbCBpc1Byb3BlcnR5SW1wbGljaXQoY29uc3QgU3Ry
aW5nJiBwcm9wZXJ0eU5hbWUpIGZpbmFsOwotICAgIHZvaWQgc2V0UHJvcGVydHkoY29uc3QgU3Ry
aW5nJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGNvbnN0IFN0cmluZyYgcHJp
b3JpdHksIEV4Y2VwdGlvbkNvZGUmKSBmaW5hbDsKLSAgICBTdHJpbmcgcmVtb3ZlUHJvcGVydHko
Y29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIEV4Y2VwdGlvbkNvZGUmKSBmaW5hbDsKKyAgICBF
eGNlcHRpb25Pcjx2b2lkPiBzZXRQcm9wZXJ0eShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwg
Y29uc3QgU3RyaW5nJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBwcmlvcml0eSkgZmluYWw7CisgICAg
RXhjZXB0aW9uT3I8U3RyaW5nPiByZW1vdmVQcm9wZXJ0eShjb25zdCBTdHJpbmcmIHByb3BlcnR5
TmFtZSkgZmluYWw7CiAgICAgU3RyaW5nIGNzc1RleHQoKSBjb25zdCBmaW5hbDsKLSAgICB2b2lk
IHNldENzc1RleHQoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpIGZpbmFsOworICAgIEV4
Y2VwdGlvbk9yPHZvaWQ+IHNldENzc1RleHQoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgUmVm
UHRyPENTU1ZhbHVlPiBnZXRQcm9wZXJ0eUNTU1ZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlJRCkg
ZmluYWw7CiAgICAgU3RyaW5nIGdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9wZXJ0eUlE
KSBmaW5hbDsKLSAgICBib29sIHNldFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlJRCwgY29u
c3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQsIEV4Y2VwdGlvbkNvZGUmKSBmaW5hbDsK
KyAgICBFeGNlcHRpb25Pcjxib29sPiBzZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5SUQs
IGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wgaW1wb3J0YW50KSBmaW5hbDsKICAgICAKICAgICBS
ZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gY29weVByb3BlcnRpZXMoKSBjb25zdCBmaW5hbDsK
IAogICAgIENTU1ZhbHVlKiBjbG9uZUFuZENhY2hlRm9yQ1NTT00oQ1NTVmFsdWUqKTsKICAgICAK
LXByb3RlY3RlZDoKLSAgICBlbnVtIE11dGF0aW9uVHlwZSB7IE5vQ2hhbmdlcywgUHJvcGVydHlD
aGFuZ2VkIH07CiAgICAgdmlydHVhbCBib29sIHdpbGxNdXRhdGUoKSBXQVJOX1VOVVNFRF9SRVRV
Uk4geyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRNdXRhdGUoTXV0YXRpb25U
eXBlKSB7IH0KLSAgICB2aXJ0dWFsIENTU1BhcnNlckNvbnRleHQgY3NzUGFyc2VyQ29udGV4dCgp
IGNvbnN0OwotCi0gICAgTXV0YWJsZVN0eWxlUHJvcGVydGllcyogbV9wcm9wZXJ0eVNldDsKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SGFzaE1hcDxDU1NWYWx1ZSosIFJlZlB0cjxDU1NWYWx1ZT4+PiBt
X2Nzc29tQ1NTVmFsdWVDbG9uZXM7CiB9OwogCi1jbGFzcyBTdHlsZVJ1bGVDU1NTdHlsZURlY2xh
cmF0aW9uIGZpbmFsIDogcHVibGljIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbgotewor
Y2xhc3MgU3R5bGVSdWxlQ1NTU3R5bGVEZWNsYXJhdGlvbiBmaW5hbCA6IHB1YmxpYyBQcm9wZXJ0
eVNldENTU1N0eWxlRGVjbGFyYXRpb24gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8U3R5bGVS
dWxlQ1NTU3R5bGVEZWNsYXJhdGlvbj4gY3JlYXRlKE11dGFibGVTdHlsZVByb3BlcnRpZXMmIHBy
b3BlcnR5U2V0LCBDU1NSdWxlJiBwYXJlbnRSdWxlKQogICAgIHsKQEAgLTkxLDcgKzkyLDcgQEAg
cHVibGljOgogICAgIH0KICAgICB2aXJ0dWFsIH5TdHlsZVJ1bGVDU1NTdHlsZURlY2xhcmF0aW9u
KCk7CiAKLSAgICB2b2lkIGNsZWFyUGFyZW50UnVsZSgpIHsgbV9wYXJlbnRSdWxlID0gMDsgfQor
ICAgIHZvaWQgY2xlYXJQYXJlbnRSdWxlKCkgeyBtX3BhcmVudFJ1bGUgPSBudWxscHRyOyB9CiAg
ICAgCiAgICAgdm9pZCByZWYoKSBmaW5hbDsKICAgICB2b2lkIGRlcmVmKCkgZmluYWw7CkBAIC0x
MTMsMTkgKzExNCwxOCBAQCBwcml2YXRlOgogICAgIENTU1J1bGUqIG1fcGFyZW50UnVsZTsKIH07
CiAKLWNsYXNzIElubGluZUNTU1N0eWxlRGVjbGFyYXRpb24gZmluYWwgOiBwdWJsaWMgUHJvcGVy
dHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uCi17CitjbGFzcyBJbmxpbmVDU1NTdHlsZURlY2xhcmF0
aW9uIGZpbmFsIDogcHVibGljIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbiB7CiBwdWJs
aWM6CiAgICAgSW5saW5lQ1NTU3R5bGVEZWNsYXJhdGlvbihNdXRhYmxlU3R5bGVQcm9wZXJ0aWVz
KiBwcm9wZXJ0eVNldCwgU3R5bGVkRWxlbWVudCogcGFyZW50RWxlbWVudCkKICAgICAgICAgOiBQ
cm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24ocHJvcGVydHlTZXQpCiAgICAgICAgICwgbV9w
YXJlbnRFbGVtZW50KHBhcmVudEVsZW1lbnQpIAogICAgIHsKICAgICB9Ci0gICAgCisKIHByaXZh
dGU6CiAgICAgQ1NTU3R5bGVTaGVldCogcGFyZW50U3R5bGVTaGVldCgpIGNvbnN0IGZpbmFsOwog
ICAgIFN0eWxlZEVsZW1lbnQqIHBhcmVudEVsZW1lbnQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X3BhcmVudEVsZW1lbnQ7IH0KLSAgICB2b2lkIGNsZWFyUGFyZW50RWxlbWVudCgpIGZpbmFsIHsg
bV9wYXJlbnRFbGVtZW50ID0gMDsgfQorICAgIHZvaWQgY2xlYXJQYXJlbnRFbGVtZW50KCkgZmlu
YWwgeyBtX3BhcmVudEVsZW1lbnQgPSBudWxscHRyOyB9CiAKICAgICB2b2lkIGRpZE11dGF0ZShN
dXRhdGlvblR5cGUpIGZpbmFsOwogICAgIENTU1BhcnNlckNvbnRleHQgY3NzUGFyc2VyQ29udGV4
dCgpIGNvbnN0IGZpbmFsOwpAQCAtMTM0LDUgKzEzNCwzIEBAIHByaXZhdGU6CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVp
bGRlckNvbnZlcnRlci5oCmluZGV4IDFlZjY1OTYyZWVmOTNiNmM3YzdhM2ZhMmUwZTU4NTJmOTQy
ZmYyYzAuLjQ3ODYzMGI2NTJhOWU3MmUwZjJmMjlmNjcyNzhkZmE2NDNiMTJjMmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKQEAgLTE4Nyw3ICsxODcsNyBA
QCBpbmxpbmUgTGVuZ3RoIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydExlbmd0aChTdHls
ZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLAogICAgIH0KIAogICAgIGlmIChwcmltaXRpdmVWYWx1
ZS5pc1BlcmNlbnRhZ2UoKSkKLSAgICAgICAgcmV0dXJuIExlbmd0aChwcmltaXRpdmVWYWx1ZS5n
ZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKKyAgICAgICAgcmV0dXJuIExlbmd0aChwcmltaXRp
dmVWYWx1ZS5kb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKIAogICAgIGlmIChwcmltaXRpdmVWYWx1
ZS5pc0NhbGN1bGF0ZWRQZXJjZW50YWdlV2l0aExlbmd0aCgpKQogICAgICAgICByZXR1cm4gTGVu
Z3RoKHByaW1pdGl2ZVZhbHVlLmNzc0NhbGNWYWx1ZSgpLT5jcmVhdGVDYWxjdWxhdGlvblZhbHVl
KGNvbnZlcnNpb25EYXRhKSk7CkBAIC0xOTgsNyArMTk4LDcgQEAgaW5saW5lIExlbmd0aCBTdHls
ZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMZW5ndGgoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNv
bHZlciwKIAogaW5saW5lIExlbmd0aCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMZW5n
dGhPckF1dG8oU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHZhbHVlKQog
ewotICAgIGlmIChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLmdldFZhbHVlSUQo
KSA9PSBDU1NWYWx1ZUF1dG8pCisgICAgaWYgKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2
YWx1ZSkudmFsdWVJRCgpID09IENTU1ZhbHVlQXV0bykKICAgICAgICAgcmV0dXJuIExlbmd0aChB
dXRvKTsKICAgICByZXR1cm4gY29udmVydExlbmd0aChzdHlsZVJlc29sdmVyLCB2YWx1ZSk7CiB9
CkBAIC0yMDYsNyArMjA2LDcgQEAgaW5saW5lIExlbmd0aCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6
OmNvbnZlcnRMZW5ndGhPckF1dG8oU3R5bGVSZXNvbHZlciYgc3R5bGVSZXMKIGlubGluZSBMZW5n
dGggU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TGVuZ3RoU2l6aW5nKFN0eWxlUmVzb2x2
ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBhdXRvJiBwcmltaXRp
dmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7Ci0gICAgc3dpdGNo
IChwcmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkpIHsKKyAgICBzd2l0Y2ggKHByaW1pdGl2ZVZh
bHVlLnZhbHVlSUQoKSkgewogICAgIGNhc2UgQ1NTVmFsdWVJbnZhbGlkOgogICAgICAgICByZXR1
cm4gY29udmVydExlbmd0aChzdHlsZVJlc29sdmVyLCB2YWx1ZSk7CiAgICAgY2FzZSBDU1NWYWx1
ZUludHJpbnNpYzoKQEAgLTIzMSw3ICsyMzEsNyBAQCBpbmxpbmUgTGVuZ3RoIFN0eWxlQnVpbGRl
ckNvbnZlcnRlcjo6Y29udmVydExlbmd0aFNpemluZyhTdHlsZVJlc29sdmVyJiBzdHlsZVJlcwog
CiBpbmxpbmUgTGVuZ3RoIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydExlbmd0aE1heFNp
emluZyhTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCiB7Ci0g
ICAgaWYgKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkuZ2V0VmFsdWVJRCgpID09
IENTU1ZhbHVlTm9uZSkKKyAgICBpZiAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVl
KS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKQogICAgICAgICByZXR1cm4gTGVuZ3RoKFVuZGVm
aW5lZCk7CiAgICAgcmV0dXJuIGNvbnZlcnRMZW5ndGhTaXppbmcoc3R5bGVSZXNvbHZlciwgdmFs
dWUpOwogfQpAQCAtMjQ2LDcgKzI0Niw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogaW5saW5l
IFQgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TGluZVdpZHRoKFN0eWxlUmVzb2x2ZXIm
IHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBhdXRvJiBwcmltaXRpdmVW
YWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7Ci0gICAgc3dpdGNoIChw
cmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkpIHsKKyAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVl
LnZhbHVlSUQoKSkgewogICAgIGNhc2UgQ1NTVmFsdWVUaGluOgogICAgICAgICByZXR1cm4gMTsK
ICAgICBjYXNlIENTU1ZhbHVlTWVkaXVtOgpAQCAtMjc2LDcgKzI3Niw3IEBAIGlubGluZSBUIFN0
eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydExpbmVXaWR0aChTdHlsZVJlc29sdmVyJiBzdHls
ZVJlc29sdmVyLCBDCiBpbmxpbmUgZmxvYXQgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0
U3BhY2luZyhTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCiB7
CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4o
dmFsdWUpOwotICAgIGlmIChwcmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVO
b3JtYWwpCisgICAgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vcm1h
bCkKICAgICAgICAgcmV0dXJuIDAuZjsKIAogICAgIENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEg
Y29udmVyc2lvbkRhdGEgPSBzdHlsZVJlc29sdmVyLnVzZVNWR1pvb21SdWxlc0Zvckxlbmd0aCgp
ID8KQEAgLTI4OCw3ICsyODgsNyBAQCBpbmxpbmUgZmxvYXQgU3R5bGVCdWlsZGVyQ29udmVydGVy
Ojpjb252ZXJ0U3BhY2luZyhTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLAogaW5saW5lIExl
bmd0aCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUb1JhZGl1c0xlbmd0aChDU1NUb0xl
bmd0aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW9uRGF0YSwgQ1NTUHJpbWl0aXZlVmFsdWUmIHZh
bHVlKQogewogICAgIGlmICh2YWx1ZS5pc1BlcmNlbnRhZ2UoKSkKLSAgICAgICAgcmV0dXJuIExl
bmd0aCh2YWx1ZS5nZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKKyAgICAgICAgcmV0dXJuIExl
bmd0aCh2YWx1ZS5kb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKICAgICBpZiAodmFsdWUuaXNDYWxj
dWxhdGVkUGVyY2VudGFnZVdpdGhMZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIExlbmd0aCh2YWx1
ZS5jc3NDYWxjVmFsdWUoKS0+Y3JlYXRlQ2FsY3VsYXRpb25WYWx1ZShjb252ZXJzaW9uRGF0YSkp
OwogICAgIHJldHVybiB2YWx1ZS5jb21wdXRlTGVuZ3RoPExlbmd0aD4oY29udmVyc2lvbkRhdGEp
OwpAQCAtMjk3LDcgKzI5Nyw3IEBAIGlubGluZSBMZW5ndGggU3R5bGVCdWlsZGVyQ29udmVydGVy
Ojpjb252ZXJ0VG9SYWRpdXNMZW5ndGgoQ1NTVG9MZW5ndGhDb252ZXJzaW9uCiBpbmxpbmUgTGVu
Z3RoU2l6ZSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRSYWRpdXMoU3R5bGVSZXNvbHZl
ciYgc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGF1dG8mIHByaW1pdGl2
ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKLSAgICBQYWlyKiBw
YWlyID0gcHJpbWl0aXZlVmFsdWUuZ2V0UGFpclZhbHVlKCk7CisgICAgUGFpciogcGFpciA9IHBy
aW1pdGl2ZVZhbHVlLnBhaXJWYWx1ZSgpOwogICAgIGlmICghcGFpciB8fCAhcGFpci0+Zmlyc3Qo
KSB8fCAhcGFpci0+c2Vjb25kKCkpCiAgICAgICAgIHJldHVybiBMZW5ndGhTaXplKExlbmd0aCgw
LCBGaXhlZCksIExlbmd0aCgwLCBGaXhlZCkpOwogCkBAIC0zMzMsMTEgKzMzMywxMSBAQCBpbmxp
bmUgTGVuZ3RoIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFBvc2l0aW9uQ29tcG9uZW50
KFN0eWxlUmVzb2x2ZXImIHN0eQogICAgIGJvb2wgcmVsYXRpdmVUb1RyYWlsaW5nRWRnZSA9IGZh
bHNlOwogICAgIAogICAgIGlmICh2YWx1ZS5pc1BhaXIoKSkgewotICAgICAgICBhdXRvJiBmaXJz
dCA9ICp2YWx1ZS5nZXRQYWlyVmFsdWUoKS0+Zmlyc3QoKTsKLSAgICAgICAgaWYgKGZpcnN0Lmdl
dFZhbHVlSUQoKSA9PSBDU1NWYWx1ZVJpZ2h0IHx8IGZpcnN0LmdldFZhbHVlSUQoKSA9PSBDU1NW
YWx1ZUJvdHRvbSkKKyAgICAgICAgYXV0byYgZmlyc3QgPSAqdmFsdWUucGFpclZhbHVlKCktPmZp
cnN0KCk7CisgICAgICAgIGlmIChmaXJzdC52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVSaWdodCB8fCBm
aXJzdC52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVCb3R0b20pCiAgICAgICAgICAgICByZWxhdGl2ZVRv
VHJhaWxpbmdFZGdlID0gdHJ1ZTsKIAotICAgICAgICBsZW5ndGhWYWx1ZSA9IHZhbHVlLmdldFBh
aXJWYWx1ZSgpLT5zZWNvbmQoKTsKKyAgICAgICAgbGVuZ3RoVmFsdWUgPSB2YWx1ZS5wYWlyVmFs
dWUoKS0+c2Vjb25kKCk7CiAgICAgfQogCiAgICAgbGVuZ3RoID0gY29udmVydExlbmd0aChzdHls
ZVJlc29sdmVyLCAqbGVuZ3RoVmFsdWUpOwpAQCAtMzUxLDcgKzM1MSw3IEBAIGlubGluZSBMZW5n
dGggU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UG9zaXRpb25Db21wb25lbnQoU3R5bGVS
ZXNvbHZlciYgc3R5CiBpbmxpbmUgTGVuZ3RoUG9pbnQgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpj
b252ZXJ0T2JqZWN0UG9zaXRpb24oU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgQ1NTVmFs
dWUmIHZhbHVlKQogewogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWU+KHZhbHVlKTsKLSAgICBQYWlyKiBwYWlyID0gcHJpbWl0aXZlVmFsdWUuZ2V0
UGFpclZhbHVlKCk7CisgICAgUGFpciogcGFpciA9IHByaW1pdGl2ZVZhbHVlLnBhaXJWYWx1ZSgp
OwogICAgIGlmICghcGFpciB8fCAhcGFpci0+Zmlyc3QoKSB8fCAhcGFpci0+c2Vjb25kKCkpCiAg
ICAgICAgIHJldHVybiBSZW5kZXJTdHlsZTo6aW5pdGlhbE9iamVjdFBvc2l0aW9uKCk7CiAKQEAg
LTM3NCwxMyArMzc0LDEzIEBAIGlubGluZSBUZXh0RGVjb3JhdGlvbiBTdHlsZUJ1aWxkZXJDb252
ZXJ0ZXI6OmNvbnZlcnRUZXh0RGVjb3JhdGlvbihTdHlsZVJlc29sdmVyCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KIGlubGluZSBUIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydE51bWJlcihT
dHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmIHZhbHVlKQogewotICAgIHJldHVybiBkb3duY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLmdldFZhbHVlPFQ+KENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfTlVNQkVSKTsKKyAgICByZXR1cm4gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVl
KS52YWx1ZTxUPihDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7CiB9CiAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPgogaW5saW5lIFQgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TnVt
YmVyT3JBdXRvKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkK
IHsKLSAgICBpZiAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS5nZXRWYWx1ZUlE
KCkgPT0gQ1NTVmFsdWVBdXRvKQorICAgIGlmIChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4o
dmFsdWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUF1dG8pCiAgICAgICAgIHJldHVybiAtMTsKICAg
ICByZXR1cm4gY29udmVydE51bWJlcjxUPihzdHlsZVJlc29sdmVyLCB2YWx1ZSk7CiB9CkBAIC0z
ODgsOSArMzg4LDkgQEAgaW5saW5lIFQgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TnVt
YmVyT3JBdXRvKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIKIGlubGluZSBzaG9ydCBTdHls
ZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRXZWJraXRIeXBoZW5hdGVMaW1pdExpbmVzKFN0eWxl
UmVzb2x2ZXImLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUg
PSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwotICAgIGlmIChwcmltaXRpdmVW
YWx1ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb0xpbWl0KQorICAgIGlmIChwcmltaXRpdmVW
YWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb0xpbWl0KQogICAgICAgICByZXR1cm4gLTE7Ci0g
ICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlPHNob3J0PihDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX05VTUJFUik7CisgICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlLnZhbHVlPHNob3J0PihD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7CiB9CiAKIHRlbXBsYXRlIDxDU1NQcm9wZXJ0
eUlEIHByb3BlcnR5PgpAQCAtNDI1LDE5ICs0MjUsMTkgQEAgaW5saW5lIFRyYW5zZm9ybU9wZXJh
dGlvbnMgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VHJhbnNmb3JtKFN0eWxlUmVzb2x2
ZXIKIAogaW5saW5lIFN0cmluZyBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRTdHJpbmco
U3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKLSAgICByZXR1cm4gZG93bmNhc3Q8
Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS5nZXRTdHJpbmdWYWx1ZSgpOworICAgIHJldHVybiBk
b3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLnN0cmluZ1ZhbHVlKCk7CiB9CiAKIGlu
bGluZSBTdHJpbmcgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U3RyaW5nT3JBdXRvKFN0
eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKLSAgICBpZiAo
ZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFs
dWVBdXRvKQorICAgIGlmIChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLnZhbHVl
SUQoKSA9PSBDU1NWYWx1ZUF1dG8pCiAgICAgICAgIHJldHVybiBudWxsQXRvbTsKICAgICByZXR1
cm4gY29udmVydFN0cmluZyhzdHlsZVJlc29sdmVyLCB2YWx1ZSk7CiB9CiAKIGlubGluZSBTdHJp
bmcgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U3RyaW5nT3JOb25lKFN0eWxlUmVzb2x2
ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKLSAgICBpZiAoZG93bmNhc3Q8
Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKQor
ICAgIGlmIChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLnZhbHVlSUQoKSA9PSBD
U1NWYWx1ZU5vbmUpCiAgICAgICAgIHJldHVybiBudWxsQXRvbTsKICAgICByZXR1cm4gY29udmVy
dFN0cmluZyhzdHlsZVJlc29sdmVyLCB2YWx1ZSk7CiB9CkBAIC00NDYsNyArNDQ2LDcgQEAgaW5s
aW5lIFRleHRFbXBoYXNpc1Bvc2l0aW9uIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6dmFsdWVUb0Vt
cGhhc2lzUG9zaXRpb24oQ1NTUHIKIHsKICAgICBBU1NFUlQocHJpbWl0aXZlVmFsdWUuaXNWYWx1
ZUlEKCkpOwogCi0gICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkpIHsKKyAg
ICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSkgewogICAgIGNhc2UgQ1NTVmFsdWVP
dmVyOgogICAgICAgICByZXR1cm4gVGV4dEVtcGhhc2lzUG9zaXRpb25PdmVyOwogICAgIGNhc2Ug
Q1NTVmFsdWVVbmRlcjoKQEAgLTQ3OSw3ICs0NzksNyBAQCBpbmxpbmUgRVRleHRBbGlnbiBTdHls
ZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUZXh0QWxpZ24oU3R5bGVSZXNvbHZlciYgc3R5bGVS
ZQogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+
KHZhbHVlKTsKICAgICBBU1NFUlQocHJpbWl0aXZlVmFsdWUuaXNWYWx1ZUlEKCkpOwogCi0gICAg
aWYgKHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQoKSAhPSBDU1NWYWx1ZVdlYmtpdE1hdGNoUGFy
ZW50KQorICAgIGlmIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgIT0gQ1NTVmFsdWVXZWJraXRN
YXRjaFBhcmVudCkKICAgICAgICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlOwogCiAgICAgYXV0byog
cGFyZW50U3R5bGUgPSBzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCk7CkBAIC00OTUsMTIgKzQ5
NSwxMiBAQCBpbmxpbmUgUmVmUHRyPENsaXBQYXRoT3BlcmF0aW9uPiBTdHlsZUJ1aWxkZXJDb252
ZXJ0ZXI6OmNvbnZlcnRDbGlwUGF0aChTdHlsZVJlcwogICAgIGlmIChpczxDU1NQcmltaXRpdmVW
YWx1ZT4odmFsdWUpKSB7CiAgICAgICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8
Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLnBy
aW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VSSSkgewotICAgICAgICAg
ICAgU3RyaW5nIGNzc1VSTFZhbHVlID0gcHJpbWl0aXZlVmFsdWUuZ2V0U3RyaW5nVmFsdWUoKTsK
KyAgICAgICAgICAgIFN0cmluZyBjc3NVUkxWYWx1ZSA9IHByaW1pdGl2ZVZhbHVlLnN0cmluZ1Zh
bHVlKCk7CiAgICAgICAgICAgICBVUkwgdXJsID0gc3R5bGVSZXNvbHZlci5kb2N1bWVudCgpLmNv
bXBsZXRlVVJMKGNzc1VSTFZhbHVlKTsKICAgICAgICAgICAgIC8vIEZJWE1FOiBJdCBkb2Vzbid0
IHdvcmsgd2l0aCBleHRlcm5hbCBTVkcgcmVmZXJlbmNlcyAoc2VlIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjYxMzMpCiAgICAgICAgICAgICByZXR1cm4gUmVmZXJl
bmNlQ2xpcFBhdGhPcGVyYXRpb246OmNyZWF0ZShjc3NVUkxWYWx1ZSwgdXJsLmZyYWdtZW50SWRl
bnRpZmllcigpKTsKICAgICAgICAgfQotICAgICAgICBBU1NFUlQocHJpbWl0aXZlVmFsdWUuZ2V0
VmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZSk7CisgICAgICAgIEFTU0VSVChwcmltaXRpdmVWYWx1
ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQogCkBAIC01MTEsMTUgKzUxMSwxNSBAQCBpbmxpbmUgUmVmUHRyPENsaXBQYXRoT3BlcmF0
aW9uPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRDbGlwUGF0aChTdHlsZVJlcwogICAg
ICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihj
dXJyZW50VmFsdWUuZ2V0KCkpOwogICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUuaXNTaGFwZSgp
KSB7CiAgICAgICAgICAgICBBU1NFUlQoIW9wZXJhdGlvbik7Ci0gICAgICAgICAgICBvcGVyYXRp
b24gPSBTaGFwZUNsaXBQYXRoT3BlcmF0aW9uOjpjcmVhdGUoYmFzaWNTaGFwZUZvclZhbHVlKHN0
eWxlUmVzb2x2ZXIuc3RhdGUoKS5jc3NUb0xlbmd0aENvbnZlcnNpb25EYXRhKCksICpwcmltaXRp
dmVWYWx1ZS5nZXRTaGFwZVZhbHVlKCkpKTsKKyAgICAgICAgICAgIG9wZXJhdGlvbiA9IFNoYXBl
Q2xpcFBhdGhPcGVyYXRpb246OmNyZWF0ZShiYXNpY1NoYXBlRm9yVmFsdWUoc3R5bGVSZXNvbHZl
ci5zdGF0ZSgpLmNzc1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoKSwgKnByaW1pdGl2ZVZhbHVlLnNo
YXBlVmFsdWUoKSkpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgQVNTRVJUKHByaW1p
dGl2ZVZhbHVlLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZUNvbnRlbnRCb3gKLSAgICAgICAgICAg
ICAgICAgICB8fCBwcmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVCb3JkZXJC
b3gKLSAgICAgICAgICAgICAgICAgICB8fCBwcmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkgPT0g
Q1NTVmFsdWVQYWRkaW5nQm94Ci0gICAgICAgICAgICAgICAgICAgfHwgcHJpbWl0aXZlVmFsdWUu
Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlTWFyZ2luQm94Ci0gICAgICAgICAgICAgICAgICAgfHwg
cHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlRmlsbAotICAgICAgICAgICAg
ICAgICAgIHx8IHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZVN0cm9rZQot
ICAgICAgICAgICAgICAgICAgIHx8IHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQoKSA9PSBDU1NW
YWx1ZVZpZXdCb3gpOworICAgICAgICAgICAgQVNTRVJUKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQo
KSA9PSBDU1NWYWx1ZUNvbnRlbnRCb3gKKyAgICAgICAgICAgICAgICB8fCBwcmltaXRpdmVWYWx1
ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVCb3JkZXJCb3gKKyAgICAgICAgICAgICAgICB8fCBwcmlt
aXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVQYWRkaW5nQm94CisgICAgICAgICAgICAg
ICAgfHwgcHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlTWFyZ2luQm94CisgICAg
ICAgICAgICAgICAgfHwgcHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlRmlsbAor
ICAgICAgICAgICAgICAgIHx8IHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZVN0
cm9rZQorICAgICAgICAgICAgICAgIHx8IHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NW
YWx1ZVZpZXdCb3gpOwogICAgICAgICAgICAgQVNTRVJUKHJlZmVyZW5jZUJveCA9PSBCb3hNaXNz
aW5nKTsKICAgICAgICAgICAgIHJlZmVyZW5jZUJveCA9IHByaW1pdGl2ZVZhbHVlOwogICAgICAg
ICB9CkBAIC01MzksNyArNTM5LDcgQEAgaW5saW5lIEVSZXNpemUgU3R5bGVCdWlsZGVyQ29udmVy
dGVyOjpjb252ZXJ0UmVzaXplKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIKICAgICBhdXRv
JiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CiAK
ICAgICBFUmVzaXplIHJlc2l6ZSA9IFJFU0laRV9OT05FOwotICAgIGlmIChwcmltaXRpdmVWYWx1
ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVBdXRvKSB7CisgICAgaWYgKHByaW1pdGl2ZVZhbHVl
LnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUF1dG8pIHsKICAgICAgICAgaWYgKFNldHRpbmdzKiBzZXR0
aW5ncyA9IHN0eWxlUmVzb2x2ZXIuZG9jdW1lbnQoKS5zZXR0aW5ncygpKQogICAgICAgICAgICAg
cmVzaXplID0gc2V0dGluZ3MtPnRleHRBcmVhc0FyZVJlc2l6YWJsZSgpID8gUkVTSVpFX0JPVEgg
OiBSRVNJWkVfTk9ORTsKICAgICB9IGVsc2UKQEAgLTU1MSwxOCArNTUxLDE4IEBAIGlubGluZSBF
UmVzaXplIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFJlc2l6ZShTdHlsZVJlc29sdmVy
JiBzdHlsZVJlc29sdmVyCiBpbmxpbmUgaW50IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVy
dE1hcnF1ZWVSZXBldGl0aW9uKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAg
ICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFs
dWUpOwotICAgIGlmIChwcmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVJbmZp
bml0ZSkKKyAgICBpZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlSW5maW5p
dGUpCiAgICAgICAgIHJldHVybiAtMTsgLy8gLTEgbWVhbnMgcmVwZWF0IGZvcmV2ZXIuCiAKICAg
ICBBU1NFUlQocHJpbWl0aXZlVmFsdWUuaXNOdW1iZXIoKSk7Ci0gICAgcmV0dXJuIHByaW1pdGl2
ZVZhbHVlLmdldEludFZhbHVlKCk7CisgICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlLmludFZhbHVl
KCk7CiB9CiAKIGlubGluZSBpbnQgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TWFycXVl
ZVNwZWVkKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0byYgcHJp
bWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwogICAgIGlu
dCBzcGVlZCA9IDg1OwotICAgIGlmIChDU1NWYWx1ZUlEIGlkZW50ID0gcHJpbWl0aXZlVmFsdWUu
Z2V0VmFsdWVJRCgpKSB7CisgICAgaWYgKENTU1ZhbHVlSUQgaWRlbnQgPSBwcmltaXRpdmVWYWx1
ZS52YWx1ZUlEKCkpIHsKICAgICAgICAgc3dpdGNoIChpZGVudCkgewogICAgICAgICBjYXNlIENT
U1ZhbHVlU2xvdzoKICAgICAgICAgICAgIHNwZWVkID0gNTAwOyAvLyA1MDAgbXNlYy4KQEAgLTU4
Miw3ICs1ODIsNyBAQCBpbmxpbmUgaW50IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydE1h
cnF1ZWVTcGVlZChTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmCiAgICAgZWxzZSB7CiAgICAgICAg
IC8vIEZvciBzY3JvbGxhbW91bnQgc3VwcG9ydC4KICAgICAgICAgQVNTRVJUKHByaW1pdGl2ZVZh
bHVlLmlzTnVtYmVyKCkpOwotICAgICAgICBzcGVlZCA9IHByaW1pdGl2ZVZhbHVlLmdldEludFZh
bHVlKCk7CisgICAgICAgIHNwZWVkID0gcHJpbWl0aXZlVmFsdWUuaW50VmFsdWUoKTsKICAgICB9
CiAgICAgcmV0dXJuIHNwZWVkOwogfQpAQCAtNTkwLDcgKzU5MCw3IEBAIGlubGluZSBpbnQgU3R5
bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TWFycXVlZVNwZWVkKFN0eWxlUmVzb2x2ZXImLCBD
U1NWYWx1ZSYKIGlubGluZSBQYXNzUmVmUHRyPFF1b3Rlc0RhdGE+IFN0eWxlQnVpbGRlckNvbnZl
cnRlcjo6Y29udmVydFF1b3RlcyhTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmIHZhbHVlKQogewog
ICAgIGlmIChpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKSB7Ci0gICAgICAgIEFTU0VSVChk
b3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1
ZU5vbmUpOworICAgICAgICBBU1NFUlQoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVl
KS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKTsKICAgICAgICAgcmV0dXJuIFF1b3Rlc0RhdGE6
OmNyZWF0ZShWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4oKSk7CiAgICAgfQogCkBA
IC02MDMsOCArNjAzLDggQEAgaW5saW5lIFBhc3NSZWZQdHI8UXVvdGVzRGF0YT4gU3R5bGVCdWls
ZGVyQ29udmVydGVyOjpjb252ZXJ0UXVvdGVzKFN0eWxlUmVzb2x2ZXIKICAgICAgICAgQ1NTVmFs
dWUqIHNlY29uZCA9IGxpc3QuaXRlbShpICsgMSk7CiAgICAgICAgIGlmICghc2Vjb25kKQogICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIFN0cmluZyBzdGFydFF1b3RlID0gZG93bmNhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWU+KCpmaXJzdCkuZ2V0U3RyaW5nVmFsdWUoKTsKLSAgICAgICAgU3RyaW5n
IGVuZFF1b3RlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCpzZWNvbmQpLmdldFN0cmlu
Z1ZhbHVlKCk7CisgICAgICAgIFN0cmluZyBzdGFydFF1b3RlID0gZG93bmNhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWU+KCpmaXJzdCkuc3RyaW5nVmFsdWUoKTsKKyAgICAgICAgU3RyaW5nIGVuZFF1b3Rl
ID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCpzZWNvbmQpLnN0cmluZ1ZhbHVlKCk7CiAg
ICAgICAgIHF1b3Rlcy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoc3RhcnRRdW90ZSwgZW5kUXVvdGUp
KTsKICAgICB9CiAgICAgcmV0dXJuIFF1b3Rlc0RhdGE6OmNyZWF0ZShxdW90ZXMpOwpAQCAtNjI3
LDcgKzYyNyw3IEBAIGlubGluZSBUZXh0VW5kZXJsaW5lUG9zaXRpb24gU3R5bGVCdWlsZGVyQ29u
dmVydGVyOjpjb252ZXJ0VGV4dFVuZGVybGluZVBvc2l0aW9uCiBpbmxpbmUgUmVmUHRyPFN0eWxl
UmVmbGVjdGlvbj4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UmVmbGVjdGlvbihTdHls
ZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgaWYgKGlz
PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpIHsKLSAgICAgICAgQVNTRVJUKGRvd25jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZSk7Cisg
ICAgICAgIEFTU0VSVChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLnZhbHVlSUQo
KSA9PSBDU1NWYWx1ZU5vbmUpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAg
LTY0OSwxNSArNjQ5LDE1IEBAIGlubGluZSBJbnRTaXplIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6
Y29udmVydEluaXRpYWxMZXR0ZXIoU3R5bGVSZXNvbHZlciYsIENTU1ZhCiB7CiAgICAgYXV0byYg
cHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwogCi0g
ICAgaWYgKHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vcm1hbCkKKyAg
ICBpZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlTm9ybWFsKQogICAgICAg
ICByZXR1cm4gSW50U2l6ZSgpOwogCi0gICAgUGFpciogcGFpciA9IHByaW1pdGl2ZVZhbHVlLmdl
dFBhaXJWYWx1ZSgpOworICAgIFBhaXIqIHBhaXIgPSBwcmltaXRpdmVWYWx1ZS5wYWlyVmFsdWUo
KTsKICAgICBBU1NFUlQocGFpcik7CiAgICAgQVNTRVJUKHBhaXItPmZpcnN0KCkpOwogICAgIEFT
U0VSVChwYWlyLT5zZWNvbmQoKSk7CiAKLSAgICByZXR1cm4gSW50U2l6ZShwYWlyLT5maXJzdCgp
LT5nZXRJbnRWYWx1ZSgpLCBwYWlyLT5zZWNvbmQoKS0+Z2V0SW50VmFsdWUoKSk7CisgICAgcmV0
dXJuIEludFNpemUocGFpci0+Zmlyc3QoKS0+aW50VmFsdWUoKSwgcGFpci0+c2Vjb25kKCktPmlu
dFZhbHVlKCkpOwogfQogCiBpbmxpbmUgZmxvYXQgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252
ZXJ0VGV4dFN0cm9rZVdpZHRoKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVl
JiB2YWx1ZSkKQEAgLTY2NSwxNCArNjY1LDE0IEBAIGlubGluZSBmbG9hdCBTdHlsZUJ1aWxkZXJD
b252ZXJ0ZXI6OmNvbnZlcnRUZXh0U3Ryb2tlV2lkdGgoU3R5bGVSZXNvbHZlciYgc3R5bGVSCiAg
ICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFs
dWUpOwogCiAgICAgZmxvYXQgd2lkdGggPSAwOwotICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUu
Z2V0VmFsdWVJRCgpKSB7CisgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkpIHsK
ICAgICBjYXNlIENTU1ZhbHVlVGhpbjoKICAgICBjYXNlIENTU1ZhbHVlTWVkaXVtOgogICAgIGNh
c2UgQ1NTVmFsdWVUaGljazogewogICAgICAgICBkb3VibGUgcmVzdWx0ID0gMS4wIC8gNDg7Ci0g
ICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVNZWRpdW0p
CisgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVNZWRpdW0p
CiAgICAgICAgICAgICByZXN1bHQgKj0gMzsKLSAgICAgICAgZWxzZSBpZiAocHJpbWl0aXZlVmFs
dWUuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlVGhpY2spCisgICAgICAgIGVsc2UgaWYgKHByaW1p
dGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZVRoaWNrKQogICAgICAgICAgICAgcmVzdWx0
ICo9IDU7CiAgICAgICAgIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gZW1zVmFsdWUoQ1NTUHJpbWl0
aXZlVmFsdWU6OmNyZWF0ZShyZXN1bHQsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRU1TKSk7CiAg
ICAgICAgIHdpZHRoID0gY29udmVydENvbXB1dGVkTGVuZ3RoPGZsb2F0PihzdHlsZVJlc29sdmVy
LCBlbXNWYWx1ZSk7CkBAIC02OTMsNyArNjkzLDcgQEAgaW5saW5lIGZsb2F0IFN0eWxlQnVpbGRl
ckNvbnZlcnRlcjo6Y29udmVydFRleHRTdHJva2VXaWR0aChTdHlsZVJlc29sdmVyJiBzdHlsZVIK
IGlubGluZSBMaW5lQm94Q29udGFpbiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRMaW5l
Qm94Q29udGFpbihTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGlmIChp
czxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKSB7Ci0gICAgICAgIEFTU0VSVChkb3duY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUpOwor
ICAgICAgICBBU1NFUlQoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS52YWx1ZUlE
KCkgPT0gQ1NTVmFsdWVOb25lKTsKICAgICAgICAgcmV0dXJuIExpbmVCb3hDb250YWluTm9uZTsK
ICAgICB9CiAKQEAgLTcwNCw3ICs3MDQsNyBAQCBpbmxpbmUgVGV4dERlY29yYXRpb25Ta2lwIFN0
eWxlQnVpbGRlckNvbnZlcnRlcjo6dmFsdWVUb0RlY29yYXRpb25Ta2lwKGNvbnN0IENTUwogewog
ICAgIEFTU0VSVChwcmltaXRpdmVWYWx1ZS5pc1ZhbHVlSUQoKSk7CiAKLSAgICBzd2l0Y2ggKHBy
aW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQoKSkgeworICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUu
dmFsdWVJRCgpKSB7CiAgICAgY2FzZSBDU1NWYWx1ZUF1dG86CiAgICAgICAgIHJldHVybiBUZXh0
RGVjb3JhdGlvblNraXBBdXRvOwogICAgIGNhc2UgQ1NTVmFsdWVOb25lOgpAQCAtNzQxLDcgKzc0
MSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0ltYWdlU2hhcGUoY29uc3QgQ1NTVmFsdWUmIHZh
bHVlKQogaW5saW5lIFBhc3NSZWZQdHI8U2hhcGVWYWx1ZT4gU3R5bGVCdWlsZGVyQ29udmVydGVy
Ojpjb252ZXJ0U2hhcGVWYWx1ZShTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1
ZSYgdmFsdWUpCiB7CiAgICAgaWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpIHsKLSAg
ICAgICAgQVNTRVJUKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkuZ2V0VmFsdWVJ
RCgpID09IENTU1ZhbHVlTm9uZSk7CisgICAgICAgIEFTU0VSVChkb3duY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZT4odmFsdWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUpOwogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTc1MywxMSArNzUzLDExIEBAIGlubGluZSBQYXNzUmVm
UHRyPFNoYXBlVmFsdWU+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFNoYXBlVmFsdWUo
U3R5bGVSZXNvCiAgICAgZm9yIChhdXRvJiBjdXJyZW50VmFsdWUgOiBkb3duY2FzdDxDU1NWYWx1
ZUxpc3Q+KHZhbHVlKSkgewogICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSYgcHJpbWl0aXZlVmFs
dWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oY3VycmVudFZhbHVlLmdldCgpKTsKICAg
ICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLmlzU2hhcGUoKSkKLSAgICAgICAgICAgIHNoYXBlID0g
YmFzaWNTaGFwZUZvclZhbHVlKHN0eWxlUmVzb2x2ZXIuc3RhdGUoKS5jc3NUb0xlbmd0aENvbnZl
cnNpb25EYXRhKCksICpwcmltaXRpdmVWYWx1ZS5nZXRTaGFwZVZhbHVlKCkpOwotICAgICAgICBl
bHNlIGlmIChwcmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVDb250ZW50Qm94
Ci0gICAgICAgICAgICB8fCBwcmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVC
b3JkZXJCb3gKLSAgICAgICAgICAgIHx8IHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQoKSA9PSBD
U1NWYWx1ZVBhZGRpbmdCb3gKLSAgICAgICAgICAgIHx8IHByaW1pdGl2ZVZhbHVlLmdldFZhbHVl
SUQoKSA9PSBDU1NWYWx1ZU1hcmdpbkJveCkKKyAgICAgICAgICAgIHNoYXBlID0gYmFzaWNTaGFw
ZUZvclZhbHVlKHN0eWxlUmVzb2x2ZXIuc3RhdGUoKS5jc3NUb0xlbmd0aENvbnZlcnNpb25EYXRh
KCksICpwcmltaXRpdmVWYWx1ZS5zaGFwZVZhbHVlKCkpOworICAgICAgICBlbHNlIGlmIChwcmlt
aXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVDb250ZW50Qm94CisgICAgICAgICAgICB8
fCBwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVCb3JkZXJCb3gKKyAgICAgICAg
ICAgIHx8IHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZVBhZGRpbmdCb3gKKyAg
ICAgICAgICAgIHx8IHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU1hcmdpbkJv
eCkKICAgICAgICAgICAgIHJlZmVyZW5jZUJveCA9IHByaW1pdGl2ZVZhbHVlOwogICAgICAgICBl
bHNlIHsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtNzg3LDE0ICs3ODcs
MTQgQEAgaW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxTbmFwUG9pbnRzPiBTdHlsZUJ1aWxk
ZXJDb252ZXJ0ZXI6OmNvbnZlcnRTY3JvbGxTbmEKICAgICBhdXRvIHBvaW50cyA9IHN0ZDo6bWFr
ZV91bmlxdWU8U2Nyb2xsU25hcFBvaW50cz4oKTsKIAogICAgIGlmIChpczxDU1NQcmltaXRpdmVW
YWx1ZT4odmFsdWUpKSB7Ci0gICAgICAgIEFTU0VSVChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZT4odmFsdWUpLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZUVsZW1lbnRzKTsKKyAgICAgICAgQVNT
RVJUKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkudmFsdWVJRCgpID09IENTU1Zh
bHVlRWxlbWVudHMpOwogICAgICAgICBwb2ludHMtPnVzZXNFbGVtZW50cyA9IHRydWU7CiAgICAg
ICAgIHJldHVybiBwb2ludHM7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiBjdXJyZW50VmFsdWUg
OiBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KHZhbHVlKSkgewogICAgICAgICBhdXRvJiBpdGVtVmFs
dWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oY3VycmVudFZhbHVlLmdldCgpKTsKLSAg
ICAgICAgaWYgKGF1dG8qIGxlbmd0aFJlcGVhdCA9IGl0ZW1WYWx1ZS5nZXRMZW5ndGhSZXBlYXRW
YWx1ZSgpKSB7CisgICAgICAgIGlmIChhdXRvKiBsZW5ndGhSZXBlYXQgPSBpdGVtVmFsdWUubGVu
Z3RoUmVwZWF0VmFsdWUoKSkgewogICAgICAgICAgICAgaWYgKGF1dG8qIGludGVydmFsID0gbGVu
Z3RoUmVwZWF0LT5pbnRlcnZhbCgpKSB7CiAgICAgICAgICAgICAgICAgcG9pbnRzLT5yZXBlYXRP
ZmZzZXQgPSBwYXJzZVNuYXBDb29yZGluYXRlKHN0eWxlUmVzb2x2ZXIsICppbnRlcnZhbCk7CiAg
ICAgICAgICAgICAgICAgcG9pbnRzLT5oYXNSZXBlYXQgPSB0cnVlOwpAQCAtODI5LDE1ICs4Mjks
MTUgQEAgaW5saW5lIFZlY3RvcjxMZW5ndGhTaXplPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNv
bnZlcnRTY3JvbGxTbmFwQ29vcmRpbmF0ZXMoU3QKICNpZiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VU
KQogaW5saW5lIEdyaWRMZW5ndGggU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjcmVhdGVHcmlkVHJh
Y2tCcmVhZHRoKENTU1ByaW1pdGl2ZVZhbHVlJiBwcmltaXRpdmVWYWx1ZSwgU3R5bGVSZXNvbHZl
ciYgc3R5bGVSZXNvbHZlcikKIHsKLSAgICBpZiAocHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWVJRCgp
ID09IENTU1ZhbHVlV2Via2l0TWluQ29udGVudCkKKyAgICBpZiAocHJpbWl0aXZlVmFsdWUudmFs
dWVJRCgpID09IENTU1ZhbHVlV2Via2l0TWluQ29udGVudCkKICAgICAgICAgcmV0dXJuIExlbmd0
aChNaW5Db250ZW50KTsKIAotICAgIGlmIChwcmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkgPT0g
Q1NTVmFsdWVXZWJraXRNYXhDb250ZW50KQorICAgIGlmIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlE
KCkgPT0gQ1NTVmFsdWVXZWJraXRNYXhDb250ZW50KQogICAgICAgICByZXR1cm4gTGVuZ3RoKE1h
eENvbnRlbnQpOwogCiAgICAgLy8gRnJhY3Rpb25hbCB1bml0LgogICAgIGlmIChwcmltaXRpdmVW
YWx1ZS5pc0ZsZXgoKSkKLSAgICAgICAgcmV0dXJuIEdyaWRMZW5ndGgocHJpbWl0aXZlVmFsdWUu
Z2V0RG91YmxlVmFsdWUoKSk7CisgICAgICAgIHJldHVybiBHcmlkTGVuZ3RoKHByaW1pdGl2ZVZh
bHVlLmRvdWJsZVZhbHVlKCkpOwogCiAgICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlLmNvbnZlcnRU
b0xlbmd0aDxGaXhlZEludGVnZXJDb252ZXJzaW9uIHwgUGVyY2VudENvbnZlcnNpb24gfCBDYWxj
dWxhdGVkQ29udmVyc2lvbiB8IEF1dG9Db252ZXJzaW9uPihzdHlsZVJlc29sdmVyLnN0YXRlKCku
Y3NzVG9MZW5ndGhDb252ZXJzaW9uRGF0YSgpKTsKIH0KQEAgLTg2NCw3ICs4NjQsNyBAQCBzdGF0
aWMgdm9pZCBjcmVhdGVHcmlkTGluZU5hbWVzTGlzdChjb25zdCBDU1NWYWx1ZSYgdmFsdWUsIHVu
c2lnbmVkIGN1cnJlbnROYW1lZAogICAgIEFTU0VSVCh2YWx1ZS5pc0dyaWRMaW5lTmFtZXNWYWx1
ZSgpKTsKIAogICAgIGZvciAoYXV0byYgbmFtZWRHcmlkTGluZVZhbHVlIDogZG93bmNhc3Q8Q1NT
R3JpZExpbmVOYW1lc1ZhbHVlPih2YWx1ZSkpIHsKLSAgICAgICAgU3RyaW5nIG5hbWVkR3JpZExp
bmUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4obmFtZWRHcmlkTGluZVZhbHVlLmdldCgp
KS5nZXRTdHJpbmdWYWx1ZSgpOworICAgICAgICBTdHJpbmcgbmFtZWRHcmlkTGluZSA9IGRvd25j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlPihuYW1lZEdyaWRMaW5lVmFsdWUuZ2V0KCkpLnN0cmluZ1Zh
bHVlKCk7CiAgICAgICAgIGF1dG8gcmVzdWx0ID0gbmFtZWRHcmlkTGluZXMuYWRkKG5hbWVkR3Jp
ZExpbmUsIFZlY3Rvcjx1bnNpZ25lZD4oKSk7CiAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFs
dWUuYXBwZW5kKGN1cnJlbnROYW1lZEdyaWRMaW5lKTsKICAgICAgICAgYXV0byBvcmRlcmVkUmVz
dWx0ID0gb3JkZXJlZE5hbWVkR3JpZExpbmVzLmFkZChjdXJyZW50TmFtZWRHcmlkTGluZSwgVmVj
dG9yPFN0cmluZz4oKSk7CkBAIC04OTEsNyArODkxLDcgQEAgaW5saW5lIGJvb2wgU3R5bGVCdWls
ZGVyQ29udmVydGVyOjpjcmVhdGVHcmlkVHJhY2tMaXN0KENTU1ZhbHVlJiB2YWx1ZSwgVHJhY2tz
RGEKIHsKICAgICAvLyBIYW5kbGUgJ25vbmUnLgogICAgIGlmIChpczxDU1NQcmltaXRpdmVWYWx1
ZT4odmFsdWUpKQotICAgICAgICByZXR1cm4gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZh
bHVlKS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lOworICAgICAgICByZXR1cm4gZG93bmNh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lOwog
CiAgICAgaWYgKCFpczxDU1NWYWx1ZUxpc3Q+KHZhbHVlKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtOTM5LDExICs5MzksMTEgQEAgaW5saW5lIGJvb2wgU3R5bGVCdWlsZGVyQ29udmVydGVy
OjpjcmVhdGVHcmlkUG9zaXRpb24oQ1NTVmFsdWUmIHZhbHVlLCBHcmlkUG9zaXQKICAgICAgICAg
YXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUp
OwogICAgICAgICAvLyBXZSB0cmFuc2xhdGUgPGlkZW50PiB0byA8c3RyaW5nPiBkdXJpbmcgcGFy
c2luZyBhcyBpdCBtYWtlcyBoYW5kbGluZyBpdCBzaW1wbGVyLgogICAgICAgICBpZiAocHJpbWl0
aXZlVmFsdWUuaXNTdHJpbmcoKSkgewotICAgICAgICAgICAgcG9zaXRpb24uc2V0TmFtZWRHcmlk
QXJlYShwcmltaXRpdmVWYWx1ZS5nZXRTdHJpbmdWYWx1ZSgpKTsKKyAgICAgICAgICAgIHBvc2l0
aW9uLnNldE5hbWVkR3JpZEFyZWEocHJpbWl0aXZlVmFsdWUuc3RyaW5nVmFsdWUoKSk7CiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCi0gICAgICAgIEFTU0VSVChwcmltaXRp
dmVWYWx1ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVBdXRvKTsKKyAgICAgICAgQVNTRVJUKHBy
aW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUF1dG8pOwogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CiAKQEAgLTk1Myw3ICs5NTMsNyBAQCBpbmxpbmUgYm9vbCBTdHlsZUJ1aWxk
ZXJDb252ZXJ0ZXI6OmNyZWF0ZUdyaWRQb3NpdGlvbihDU1NWYWx1ZSYgdmFsdWUsIEdyaWRQb3Np
dAogICAgIGF1dG8gaXQgPSB2YWx1ZXMuYmVnaW4oKTsKICAgICBDU1NQcmltaXRpdmVWYWx1ZSog
Y3VycmVudFZhbHVlID0gJmRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihpdC0+Z2V0KCkpOwog
ICAgIGJvb2wgaXNTcGFuUG9zaXRpb24gPSBmYWxzZTsKLSAgICBpZiAoY3VycmVudFZhbHVlLT5n
ZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVTcGFuKSB7CisgICAgaWYgKGN1cnJlbnRWYWx1ZS0+dmFs
dWVJRCgpID09IENTU1ZhbHVlU3BhbikgewogICAgICAgICBpc1NwYW5Qb3NpdGlvbiA9IHRydWU7
CiAgICAgICAgICsraXQ7CiAgICAgICAgIGN1cnJlbnRWYWx1ZSA9IGl0ICE9IHZhbHVlcy5lbmQo
KSA/ICZkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oaXQtPmdldCgpKSA6IG51bGxwdHI7CkBA
IC05NjEsMTQgKzk2MSwxNCBAQCBpbmxpbmUgYm9vbCBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNy
ZWF0ZUdyaWRQb3NpdGlvbihDU1NWYWx1ZSYgdmFsdWUsIEdyaWRQb3NpdAogCiAgICAgaW50IGdy
aWRMaW5lTnVtYmVyID0gMDsKICAgICBpZiAoY3VycmVudFZhbHVlICYmIGN1cnJlbnRWYWx1ZS0+
aXNOdW1iZXIoKSkgewotICAgICAgICBncmlkTGluZU51bWJlciA9IGN1cnJlbnRWYWx1ZS0+Z2V0
SW50VmFsdWUoKTsKKyAgICAgICAgZ3JpZExpbmVOdW1iZXIgPSBjdXJyZW50VmFsdWUtPmludFZh
bHVlKCk7CiAgICAgICAgICsraXQ7CiAgICAgICAgIGN1cnJlbnRWYWx1ZSA9IGl0ICE9IHZhbHVl
cy5lbmQoKSA/ICZkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oaXQtPmdldCgpKSA6IG51bGxw
dHI7CiAgICAgfQogCiAgICAgU3RyaW5nIGdyaWRMaW5lTmFtZTsKICAgICBpZiAoY3VycmVudFZh
bHVlICYmIGN1cnJlbnRWYWx1ZS0+aXNTdHJpbmcoKSkgewotICAgICAgICBncmlkTGluZU5hbWUg
PSBjdXJyZW50VmFsdWUtPmdldFN0cmluZ1ZhbHVlKCk7CisgICAgICAgIGdyaWRMaW5lTmFtZSA9
IGN1cnJlbnRWYWx1ZS0+c3RyaW5nVmFsdWUoKTsKICAgICAgICAgKytpdDsKICAgICB9CiAKQEAg
LTEwMzUsMTUgKzEwMzUsMTUgQEAgaW5saW5lIEdyaWRBdXRvRmxvdyBTdHlsZUJ1aWxkZXJDb252
ZXJ0ZXI6OmNvbnZlcnRHcmlkQXV0b0Zsb3coU3R5bGVSZXNvbHZlciYsIEMKICAgICBhdXRvKiBz
ZWNvbmQgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4obGlzdC5pdGVtKDEpKTsKIAogICAg
IEdyaWRBdXRvRmxvdyBhdXRvRmxvdyA9IFJlbmRlclN0eWxlOjppbml0aWFsR3JpZEF1dG9GbG93
KCk7Ci0gICAgc3dpdGNoIChmaXJzdC5nZXRWYWx1ZUlEKCkpIHsKKyAgICBzd2l0Y2ggKGZpcnN0
LnZhbHVlSUQoKSkgewogICAgIGNhc2UgQ1NTVmFsdWVSb3c6Ci0gICAgICAgIGlmIChzZWNvbmQg
JiYgc2Vjb25kLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVEZW5zZSkKKyAgICAgICAgaWYgKHNl
Y29uZCAmJiBzZWNvbmQtPnZhbHVlSUQoKSA9PSBDU1NWYWx1ZURlbnNlKQogICAgICAgICAgICAg
YXV0b0Zsb3cgPSAgQXV0b0Zsb3dSb3dEZW5zZTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
YXV0b0Zsb3cgPSBBdXRvRmxvd1JvdzsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NWYWx1
ZUNvbHVtbjoKLSAgICAgICAgaWYgKHNlY29uZCAmJiBzZWNvbmQtPmdldFZhbHVlSUQoKSA9PSBD
U1NWYWx1ZURlbnNlKQorICAgICAgICBpZiAoc2Vjb25kICYmIHNlY29uZC0+dmFsdWVJRCgpID09
IENTU1ZhbHVlRGVuc2UpCiAgICAgICAgICAgICBhdXRvRmxvdyA9IEF1dG9GbG93Q29sdW1uRGVu
c2U7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGF1dG9GbG93ID0gQXV0b0Zsb3dDb2x1bW47
CkBAIC0xMDcwLDE0ICsxMDcwLDE0IEBAIGlubGluZSBPcHRpb25hbDxMZW5ndGg+IFN0eWxlQnVp
bGRlckNvbnZlcnRlcjo6Y29udmVydFdvcmRTcGFjaW5nKFN0eWxlUmVzb2x2ZXImCiB7CiAgICAg
T3B0aW9uYWw8TGVuZ3RoPiB3b3JkU3BhY2luZzsKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9
IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7Ci0gICAgaWYgKHByaW1pdGl2ZVZh
bHVlLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vcm1hbCkKKyAgICBpZiAocHJpbWl0aXZlVmFs
dWUudmFsdWVJRCgpID09IENTU1ZhbHVlTm9ybWFsKQogICAgICAgICB3b3JkU3BhY2luZyA9IFJl
bmRlclN0eWxlOjppbml0aWFsV29yZFNwYWNpbmcoKTsKICAgICBlbHNlIGlmIChwcmltaXRpdmVW
YWx1ZS5pc0xlbmd0aCgpKQogICAgICAgICB3b3JkU3BhY2luZyA9IHByaW1pdGl2ZVZhbHVlLmNv
bXB1dGVMZW5ndGg8TGVuZ3RoPihjc3N0b0xlbmd0aENvbnZlcnNpb25EYXRhV2l0aFRleHRab29t
RmFjdG9yKHN0eWxlUmVzb2x2ZXIpKTsKICAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS5pc1Bl
cmNlbnRhZ2UoKSkKLSAgICAgICAgd29yZFNwYWNpbmcgPSBMZW5ndGgoY2xhbXBUbzxmbG9hdD4o
cHJpbWl0aXZlVmFsdWUuZ2V0RG91YmxlVmFsdWUoKSwgbWluVmFsdWVGb3JDc3NMZW5ndGgsIG1h
eFZhbHVlRm9yQ3NzTGVuZ3RoKSwgUGVyY2VudCk7CisgICAgICAgIHdvcmRTcGFjaW5nID0gTGVu
Z3RoKGNsYW1wVG88ZmxvYXQ+KHByaW1pdGl2ZVZhbHVlLmRvdWJsZVZhbHVlKCksIG1pblZhbHVl
Rm9yQ3NzTGVuZ3RoLCBtYXhWYWx1ZUZvckNzc0xlbmd0aCksIFBlcmNlbnQpOwogICAgIGVsc2Ug
aWYgKHByaW1pdGl2ZVZhbHVlLmlzTnVtYmVyKCkpCi0gICAgICAgIHdvcmRTcGFjaW5nID0gTGVu
Z3RoKHByaW1pdGl2ZVZhbHVlLmdldERvdWJsZVZhbHVlKCksIEZpeGVkKTsKKyAgICAgICAgd29y
ZFNwYWNpbmcgPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUuZG91YmxlVmFsdWUoKSwgRml4ZWQpOwog
CiAgICAgcmV0dXJuIHdvcmRTcGFjaW5nOwogfQpAQCAtMTA4NSwxNCArMTA4NSwxNCBAQCBpbmxp
bmUgT3B0aW9uYWw8TGVuZ3RoPiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRXb3JkU3Bh
Y2luZyhTdHlsZVJlc29sdmVyJgogaW5saW5lIE9wdGlvbmFsPGZsb2F0PiBTdHlsZUJ1aWxkZXJD
b252ZXJ0ZXI6OmNvbnZlcnRQZXJzcGVjdGl2ZShTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVy
LCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwotICAgIGlmIChwcmltaXRpdmVWYWx1ZS5nZXRW
YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKQorICAgIGlmIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlE
KCkgPT0gQ1NTVmFsdWVOb25lKQogICAgICAgICByZXR1cm4gMC5mOwogCiAgICAgZmxvYXQgcGVy
c3BlY3RpdmUgPSAtMTsKICAgICBpZiAocHJpbWl0aXZlVmFsdWUuaXNMZW5ndGgoKSkKICAgICAg
ICAgcGVyc3BlY3RpdmUgPSBwcmltaXRpdmVWYWx1ZS5jb21wdXRlTGVuZ3RoPGZsb2F0PihzdHls
ZVJlc29sdmVyLnN0YXRlKCkuY3NzVG9MZW5ndGhDb252ZXJzaW9uRGF0YSgpKTsKICAgICBlbHNl
IGlmIChwcmltaXRpdmVWYWx1ZS5pc051bWJlcigpKQotICAgICAgICBwZXJzcGVjdGl2ZSA9IHBy
aW1pdGl2ZVZhbHVlLmdldERvdWJsZVZhbHVlKCkgKiBzdHlsZVJlc29sdmVyLnN0YXRlKCkuY3Nz
VG9MZW5ndGhDb252ZXJzaW9uRGF0YSgpLnpvb20oKTsKKyAgICAgICAgcGVyc3BlY3RpdmUgPSBw
cmltaXRpdmVWYWx1ZS5kb3VibGVWYWx1ZSgpICogc3R5bGVSZXNvbHZlci5zdGF0ZSgpLmNzc1Rv
TGVuZ3RoQ29udmVyc2lvbkRhdGEoKS56b29tKCk7CiAgICAgZWxzZQogICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKIApAQCAtMTEwMyw3ICsxMTAzLDcgQEAgaW5saW5lIE9wdGlvbmFsPExl
bmd0aD4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0TWFycXVlZUluY3JlbWVudChTdHls
ZVJlc28KIHsKICAgICBPcHRpb25hbDxMZW5ndGg+IG1hcnF1ZWVMZW5ndGg7CiAgICAgYXV0byYg
cHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwotICAg
IHN3aXRjaCAocHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWVJRCgpKSB7CisgICAgc3dpdGNoIChwcmlt
aXRpdmVWYWx1ZS52YWx1ZUlEKCkpIHsKICAgICBjYXNlIENTU1ZhbHVlU21hbGw6CiAgICAgICAg
IG1hcnF1ZWVMZW5ndGggPSBMZW5ndGgoMSwgRml4ZWQpOyAvLyAxcHguCiAgICAgICAgIGJyZWFr
OwpAQCAtMTEzNiw3ICsxMTM2LDcgQEAgaW5saW5lIE9wdGlvbmFsPEZpbHRlck9wZXJhdGlvbnM+
IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEZpbHRlck9wZXJhdGlvbnMKIGlubGluZSBG
b250RmVhdHVyZVNldHRpbmdzIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydEZvbnRGZWF0
dXJlU2V0dGluZ3MoU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBpZiAo
aXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSkgewotICAgICAgICBBU1NFUlQoZG93bmNhc3Q8
Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb3JtYWwp
OworICAgICAgICBBU1NFUlQoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS52YWx1
ZUlEKCkgPT0gQ1NTVmFsdWVOb3JtYWwpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIApA
QCAtMTE1Miw3ICsxMTUyLDcgQEAgaW5saW5lIEZvbnRGZWF0dXJlU2V0dGluZ3MgU3R5bGVCdWls
ZGVyQ29udmVydGVyOjpjb252ZXJ0Rm9udEZlYXR1cmVTZXR0aW5ncyhTdHkKIGlubGluZSBGb250
VmFyaWF0aW9uU2V0dGluZ3MgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Rm9udFZhcmlh
dGlvblNldHRpbmdzKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgaWYg
KGlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpIHsKLSAgICAgICAgQVNTRVJUKGRvd25jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlTm9ybWFs
KTsKKyAgICAgICAgQVNTRVJUKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkudmFs
dWVJRCgpID09IENTU1ZhbHVlTm9ybWFsKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAK
QEAgLTExNjgsNyArMTE2OCw3IEBAIGlubGluZSBGb250VmFyaWF0aW9uU2V0dGluZ3MgU3R5bGVC
dWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Rm9udFZhcmlhdGlvblNldHRpbmdzCiAjaWYgUExBVEZP
Uk0oSU9TKQogaW5saW5lIGJvb2wgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VG91Y2hD
YWxsb3V0KFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYgdmFsdWUpCiB7Ci0gICAgcmV0dXJuICFl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4o
dmFsdWUpLmdldFN0cmluZ1ZhbHVlKCksICJub25lIik7CisgICAgcmV0dXJuICFlcXVhbExldHRl
cnNJZ25vcmluZ0FTQ0lJQ2FzZShkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLnN0
cmluZ1ZhbHVlKCksICJub25lIik7CiB9CiAjZW5kaWYKIApAQCAtMTE4Miw3ICsxMTgyLDcgQEAg
aW5saW5lIENvbG9yIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRhcEhpZ2hsaWdodENv
bG9yKFN0eWxlUmVzb2x2ZXImIHN0eWwKICNpZiBFTkFCTEUoQUNDRUxFUkFURURfT1ZFUkZMT1df
U0NST0xMSU5HKQogaW5saW5lIGJvb2wgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0T3Zl
cmZsb3dTY3JvbGxpbmcoU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKLSAgICBy
ZXR1cm4gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS5nZXRWYWx1ZUlEKCkgPT0g
Q1NTVmFsdWVUb3VjaDsKKyAgICByZXR1cm4gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZh
bHVlKS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVUb3VjaDsKIH0KICNlbmRpZgogCkBAIC0xMjA2LDcg
KzEyMDYsNyBAQCBpbmxpbmUgVmVjdG9yPFNWR0xlbmd0aD4gU3R5bGVCdWlsZGVyQ29udmVydGVy
Ojpjb252ZXJ0U1ZHTGVuZ3RoVmVjdG9yKFN0eWxlUmVzbwogaW5saW5lIFZlY3RvcjxTVkdMZW5n
dGg+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFN0cm9rZURhc2hBcnJheShTdHlsZVJl
c29sdmVyJiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCiB7CiAgICAgaWYgKGlzPENT
U1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpIHsKLSAgICAgICAgQVNTRVJUKGRvd25jYXN0PENTU1By
aW1pdGl2ZVZhbHVlPih2YWx1ZSkuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZSk7CisgICAg
ICAgIEFTU0VSVChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLnZhbHVlSUQoKSA9
PSBDU1NWYWx1ZU5vbmUpOwogICAgICAgICByZXR1cm4gU1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxT
dHJva2VEYXNoQXJyYXkoKTsKICAgICB9CiAKQEAgLTEyMTYsMTIgKzEyMTYsMTIgQEAgaW5saW5l
IFZlY3RvcjxTVkdMZW5ndGg+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFN0cm9rZURh
c2hBcnJheShTdHlsZVJlc28KIGlubGluZSBQYWludE9yZGVyIFN0eWxlQnVpbGRlckNvbnZlcnRl
cjo6Y29udmVydFBhaW50T3JkZXIoU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJiB2YWx1ZSkKIHsK
ICAgICBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSkgewotICAgICAgICBBU1NFUlQo
ZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFs
dWVOb3JtYWwpOworICAgICAgICBBU1NFUlQoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZh
bHVlKS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb3JtYWwpOwogICAgICAgICByZXR1cm4gUGFpbnRP
cmRlck5vcm1hbDsKICAgICB9CiAKICAgICBhdXRvJiBvcmRlclR5cGVMaXN0ID0gZG93bmNhc3Q8
Q1NTVmFsdWVMaXN0Pih2YWx1ZSk7Ci0gICAgc3dpdGNoIChkb3duY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZT4oKm9yZGVyVHlwZUxpc3QuaXRlbVdpdGhvdXRCb3VuZHNDaGVjaygwKSkuZ2V0VmFsdWVJ
RCgpKSB7CisgICAgc3dpdGNoIChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKm9yZGVyVHlw
ZUxpc3QuaXRlbVdpdGhvdXRCb3VuZHNDaGVjaygwKSkudmFsdWVJRCgpKSB7CiAgICAgY2FzZSBD
U1NWYWx1ZUZpbGw6CiAgICAgICAgIHJldHVybiBvcmRlclR5cGVMaXN0Lmxlbmd0aCgpID4gMSA/
IFBhaW50T3JkZXJGaWxsTWFya2VycyA6IFBhaW50T3JkZXJGaWxsOwogICAgIGNhc2UgQ1NTVmFs
dWVTdHJva2U6CkBAIC0xMjM3LDcgKzEyMzcsNyBAQCBpbmxpbmUgUGFpbnRPcmRlciBTdHlsZUJ1
aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRQYWludE9yZGVyKFN0eWxlUmVzb2x2ZXImLCBDU1NWYQog
aW5saW5lIGZsb2F0IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydE9wYWNpdHkoU3R5bGVS
ZXNvbHZlciYsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9
IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7Ci0gICAgZmxvYXQgb3BhY2l0eSA9
IHByaW1pdGl2ZVZhbHVlLmdldEZsb2F0VmFsdWUoKTsKKyAgICBmbG9hdCBvcGFjaXR5ID0gcHJp
bWl0aXZlVmFsdWUuZmxvYXRWYWx1ZSgpOwogICAgIGlmIChwcmltaXRpdmVWYWx1ZS5pc1BlcmNl
bnRhZ2UoKSkKICAgICAgICAgb3BhY2l0eSAvPSAxMDAuMGY7CiAgICAgcmV0dXJuIG9wYWNpdHk7
CkBAIC0xMjQ4LDcgKzEyNDgsNyBAQCBpbmxpbmUgU3RyaW5nIFN0eWxlQnVpbGRlckNvbnZlcnRl
cjo6Y29udmVydFNWR1VSSVJlZmVyZW5jZShTdHlsZVJlc29sdmVyJiBzdHlsZQogICAgIFN0cmlu
ZyBzOwogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWU+KHZhbHVlKTsKICAgICBpZiAocHJpbWl0aXZlVmFsdWUuaXNVUkkoKSkKLSAgICAgICAgcyA9
IHByaW1pdGl2ZVZhbHVlLmdldFN0cmluZ1ZhbHVlKCk7CisgICAgICAgIHMgPSBwcmltaXRpdmVW
YWx1ZS5zdHJpbmdWYWx1ZSgpOwogCiAgICAgcmV0dXJuIFNWR1VSSVJlZmVyZW5jZTo6ZnJhZ21l
bnRJZGVudGlmaWVyRnJvbUlSSVN0cmluZyhzLCBzdHlsZVJlc29sdmVyLmRvY3VtZW50KCkpOwog
fQpAQCAtMTI2Myw4ICsxMjYzLDggQEAgaW5saW5lIFN0eWxlU2VsZkFsaWdubWVudERhdGEgU3R5
bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0U2VsZk9yRGVmYXVsdEFsaWdubWUKIHsKICAgICBT
dHlsZVNlbGZBbGlnbm1lbnREYXRhIGFsaWdubWVudERhdGEgPSBSZW5kZXJTdHlsZTo6aW5pdGlh
bFNlbGZBbGlnbm1lbnQoKTsKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7Ci0gICAgaWYgKFBhaXIqIHBhaXJWYWx1ZSA9IHByaW1p
dGl2ZVZhbHVlLmdldFBhaXJWYWx1ZSgpKSB7Ci0gICAgICAgIGlmIChwYWlyVmFsdWUtPmZpcnN0
KCktPmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZUxlZ2FjeSkgeworICAgIGlmIChQYWlyKiBwYWly
VmFsdWUgPSBwcmltaXRpdmVWYWx1ZS5wYWlyVmFsdWUoKSkgeworICAgICAgICBpZiAocGFpclZh
bHVlLT5maXJzdCgpLT52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVMZWdhY3kpIHsKICAgICAgICAgICAg
IGFsaWdubWVudERhdGEuc2V0UG9zaXRpb25UeXBlKExlZ2FjeVBvc2l0aW9uKTsKICAgICAgICAg
ICAgIGFsaWdubWVudERhdGEuc2V0UG9zaXRpb24oKnBhaXJWYWx1ZS0+c2Vjb25kKCkpOwogICAg
ICAgICB9IGVsc2UgewpAQCAtMTI4MiwxNyArMTI4MiwxNyBAQCBpbmxpbmUgU3R5bGVDb250ZW50
QWxpZ25tZW50RGF0YSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRDb250ZW50QWxpZ25t
ZW50RAogI2lmIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQpCiAgICAgaWYgKFJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuaXNDU1NHcmlkTGF5b3V0RW5hYmxlZCgpKSB7CiAg
ICAgICAgIGF1dG8mIGNvbnRlbnRWYWx1ZSA9IGRvd25jYXN0PENTU0NvbnRlbnREaXN0cmlidXRp
b25WYWx1ZT4odmFsdWUpOwotICAgICAgICBpZiAoY29udGVudFZhbHVlLmRpc3RyaWJ1dGlvbigp
LT5nZXRWYWx1ZUlEKCkgIT0gQ1NTVmFsdWVJbnZhbGlkKQorICAgICAgICBpZiAoY29udGVudFZh
bHVlLmRpc3RyaWJ1dGlvbigpLT52YWx1ZUlEKCkgIT0gQ1NTVmFsdWVJbnZhbGlkKQogICAgICAg
ICAgICAgYWxpZ25tZW50RGF0YS5zZXREaXN0cmlidXRpb24oY29udGVudFZhbHVlLmRpc3RyaWJ1
dGlvbigpLmdldCgpKTsKLSAgICAgICAgaWYgKGNvbnRlbnRWYWx1ZS5wb3NpdGlvbigpLT5nZXRW
YWx1ZUlEKCkgIT0gQ1NTVmFsdWVJbnZhbGlkKQorICAgICAgICBpZiAoY29udGVudFZhbHVlLnBv
c2l0aW9uKCktPnZhbHVlSUQoKSAhPSBDU1NWYWx1ZUludmFsaWQpCiAgICAgICAgICAgICBhbGln
bm1lbnREYXRhLnNldFBvc2l0aW9uKGNvbnRlbnRWYWx1ZS5wb3NpdGlvbigpLmdldCgpKTsKLSAg
ICAgICAgaWYgKGNvbnRlbnRWYWx1ZS5vdmVyZmxvdygpLT5nZXRWYWx1ZUlEKCkgIT0gQ1NTVmFs
dWVJbnZhbGlkKQorICAgICAgICBpZiAoY29udGVudFZhbHVlLm92ZXJmbG93KCktPnZhbHVlSUQo
KSAhPSBDU1NWYWx1ZUludmFsaWQpCiAgICAgICAgICAgICBhbGlnbm1lbnREYXRhLnNldE92ZXJm
bG93KGNvbnRlbnRWYWx1ZS5vdmVyZmxvdygpLmdldCgpKTsKICAgICAgICAgcmV0dXJuIGFsaWdu
bWVudERhdGE7CiAgICAgfQogI2VuZGlmCiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3du
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwotICAgIHN3aXRjaCAocHJpbWl0aXZlVmFs
dWUuZ2V0VmFsdWVJRCgpKSB7CisgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkp
IHsKICAgICBjYXNlIENTU1ZhbHVlU3RyZXRjaDoKICAgICBjYXNlIENTU1ZhbHVlU3BhY2VCZXR3
ZWVuOgogICAgIGNhc2UgQ1NTVmFsdWVTcGFjZUFyb3VuZDoKQEAgLTEzMTEsNyArMTMxMSw3IEBA
IGlubGluZSBTdHlsZUNvbnRlbnRBbGlnbm1lbnREYXRhIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6
Y29udmVydENvbnRlbnRBbGlnbm1lbnRECiAKIGlubGluZSBFR2x5cGhPcmllbnRhdGlvbiBTdHls
ZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRHbHlwaE9yaWVudGF0aW9uKFN0eWxlUmVzb2x2ZXIm
LCBDU1NWYWx1ZSYgdmFsdWUpCiB7Ci0gICAgZmxvYXQgYW5nbGUgPSBmYWJzZihmbW9kZihkb3du
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpLmdldEZsb2F0VmFsdWUoKSwgMzYwLjBmKSk7
CisgICAgZmxvYXQgYW5nbGUgPSBmYWJzZihmbW9kZihkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZT4odmFsdWUpLmZsb2F0VmFsdWUoKSwgMzYwLjBmKSk7CiAgICAgaWYgKGFuZ2xlIDw9IDQ1LjBm
IHx8IGFuZ2xlID4gMzE1LjBmKQogICAgICAgICByZXR1cm4gR09fMERFRzsKICAgICBpZiAoYW5n
bGUgPiA0NS4wZiAmJiBhbmdsZSA8PSAxMzUuMGYpCkBAIC0xMzIzLDcgKzEzMjMsNyBAQCBpbmxp
bmUgRUdseXBoT3JpZW50YXRpb24gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0R2x5cGhP
cmllbnRhdGlvbihTdHlsZVJlcwogCiBpbmxpbmUgRUdseXBoT3JpZW50YXRpb24gU3R5bGVCdWls
ZGVyQ29udmVydGVyOjpjb252ZXJ0R2x5cGhPcmllbnRhdGlvbk9yQXV0byhTdHlsZVJlc29sdmVy
JiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCiB7Ci0gICAgaWYgKGRvd25jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlQXV0bykKKyAg
ICBpZiAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS52YWx1ZUlEKCkgPT0gQ1NT
VmFsdWVBdXRvKQogICAgICAgICByZXR1cm4gR09fQVVUTzsKICAgICByZXR1cm4gY29udmVydEds
eXBoT3JpZW50YXRpb24oc3R5bGVSZXNvbHZlciwgdmFsdWUpOwogfQpAQCAtMTMzMSw3ICsxMzMx
LDcgQEAgaW5saW5lIEVHbHlwaE9yaWVudGF0aW9uIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29u
dmVydEdseXBoT3JpZW50YXRpb25PckF1dG8oU3QKIGlubGluZSBPcHRpb25hbDxMZW5ndGg+IFN0
eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydExpbmVIZWlnaHQoU3R5bGVSZXNvbHZlciYgc3R5
bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHZhbHVlLCBmbG9hdCBtdWx0aXBsaWVyKQogewogICAgIGF1
dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsK
LSAgICBpZiAocHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlTm9ybWFsKQor
ICAgIGlmIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb3JtYWwpCiAgICAg
ICAgIHJldHVybiBSZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVIZWlnaHQoKTsKIAogICAgIGlmIChw
cmltaXRpdmVWYWx1ZS5pc0xlbmd0aCgpKSB7CkBAIC0xMzQyLDExICsxMzQyLDExIEBAIGlubGlu
ZSBPcHRpb25hbDxMZW5ndGg+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydExpbmVIZWln
aHQoU3R5bGVSZXNvbHZlciYKICAgICB9CiAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLmlzUGVyY2Vu
dGFnZSgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBwZXJjZW50YWdlIHNob3VsZCBub3QgYmUgcmVz
dHJpY3RlZCB0byBhbiBpbnRlZ2VyIGhlcmUuCi0gICAgICAgIHJldHVybiBMZW5ndGgoKHN0eWxl
UmVzb2x2ZXIuc3R5bGUoKS0+Y29tcHV0ZWRGb250U2l6ZSgpICogcHJpbWl0aXZlVmFsdWUuZ2V0
SW50VmFsdWUoKSkgLyAxMDAsIEZpeGVkKTsKKyAgICAgICAgcmV0dXJuIExlbmd0aCgoc3R5bGVS
ZXNvbHZlci5zdHlsZSgpLT5jb21wdXRlZEZvbnRTaXplKCkgKiBwcmltaXRpdmVWYWx1ZS5pbnRW
YWx1ZSgpKSAvIDEwMCwgRml4ZWQpOwogICAgIH0KICAgICBpZiAocHJpbWl0aXZlVmFsdWUuaXNO
dW1iZXIoKSkgewogICAgICAgICAvLyBGSVhNRTogbnVtYmVyIGFuZCBwZXJjZW50YWdlIHZhbHVl
cyBzaG91bGQgcHJvZHVjZSB0aGUgc2FtZSB0eXBlIG9mIExlbmd0aCAoaWUuIEZpeGVkIG9yIFBl
cmNlbnQpLgotICAgICAgICByZXR1cm4gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLmdldERvdWJsZVZh
bHVlKCkgKiBtdWx0aXBsaWVyICogMTAwLjAsIFBlcmNlbnQpOworICAgICAgICByZXR1cm4gTGVu
Z3RoKHByaW1pdGl2ZVZhbHVlLmRvdWJsZVZhbHVlKCkgKiBtdWx0aXBsaWVyICogMTAwLjAsIFBl
cmNlbnQpOwogICAgIH0KICAgICByZXR1cm4gTnVsbG9wdDsKIH0KQEAgLTEzNTQsMTQgKzEzNTQs
MTQgQEAgaW5saW5lIE9wdGlvbmFsPExlbmd0aD4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252
ZXJ0TGluZUhlaWdodChTdHlsZVJlc29sdmVyJgogRm9udFN5bnRoZXNpcyBTdHlsZUJ1aWxkZXJD
b252ZXJ0ZXI6OmNvbnZlcnRGb250U3ludGhlc2lzKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYg
dmFsdWUpCiB7CiAgICAgaWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpIHsKLSAgICAg
ICAgQVNTRVJUKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkuZ2V0VmFsdWVJRCgp
ID09IENTU1ZhbHVlTm9uZSk7CisgICAgICAgIEFTU0VSVChkb3duY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZT4odmFsdWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUpOwogICAgICAgICByZXR1cm4g
Rm9udFN5bnRoZXNpc05vbmU7CiAgICAgfQogCiAgICAgRm9udFN5bnRoZXNpcyByZXN1bHQgPSBG
b250U3ludGhlc2lzTm9uZTsKICAgICBBU1NFUlQoaXM8Q1NTVmFsdWVMaXN0Pih2YWx1ZSkpOwog
ICAgIGZvciAoQ1NTVmFsdWUmIHYgOiBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KHZhbHVlKSkgewot
ICAgICAgICBzd2l0Y2ggKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2KS5nZXRWYWx1ZUlE
KCkpIHsKKyAgICAgICAgc3dpdGNoIChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odikudmFs
dWVJRCgpKSB7CiAgICAgICAgIGNhc2UgQ1NTVmFsdWVXZWlnaHQ6CiAgICAgICAgICAgICByZXN1
bHQgfD0gRm9udFN5bnRoZXNpc1dlaWdodDsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTM4MCw5
ICsxMzgwLDkgQEAgRm9udFN5bnRoZXNpcyBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRG
b250U3ludGhlc2lzKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWwKIGlubGluZSBCcmVha0JldHdlZW4g
U3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0UGFnZUJyZWFrQmV0d2VlbihTdHlsZVJlc29s
dmVyJiwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93
bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKLSAgICBpZiAocHJpbWl0aXZlVmFsdWUu
Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlQWx3YXlzKQorICAgIGlmIChwcmltaXRpdmVWYWx1ZS52
YWx1ZUlEKCkgPT0gQ1NTVmFsdWVBbHdheXMpCiAgICAgICAgIHJldHVybiBQYWdlQnJlYWtCZXR3
ZWVuOwotICAgIGlmIChwcmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVBdm9p
ZCkKKyAgICBpZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlQXZvaWQpCiAg
ICAgICAgIHJldHVybiBBdm9pZFBhZ2VCcmVha0JldHdlZW47CiAgICAgcmV0dXJuIHByaW1pdGl2
ZVZhbHVlOwogfQpAQCAtMTM5MCw3ICsxMzkwLDcgQEAgaW5saW5lIEJyZWFrQmV0d2VlbiBTdHls
ZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRQYWdlQnJlYWtCZXR3ZWVuKFN0eWxlUmVzb2x2ZXIK
IGlubGluZSBCcmVha0luc2lkZSBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRQYWdlQnJl
YWtJbnNpZGUoU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBhdXRvJiBw
cmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7Ci0gICAg
aWYgKHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZUF2b2lkKQorICAgIGlm
IChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVBdm9pZCkKICAgICAgICAgcmV0
dXJuIEF2b2lkUGFnZUJyZWFrSW5zaWRlOwogICAgIHJldHVybiBwcmltaXRpdmVWYWx1ZTsKIH0K
QEAgLTEzOTgsOSArMTM5OCw5IEBAIGlubGluZSBCcmVha0luc2lkZSBTdHlsZUJ1aWxkZXJDb252
ZXJ0ZXI6OmNvbnZlcnRQYWdlQnJlYWtJbnNpZGUoU3R5bGVSZXNvbHZlciYsCiBpbmxpbmUgQnJl
YWtCZXR3ZWVuIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydENvbHVtbkJyZWFrQmV0d2Vl
bihTdHlsZVJlc29sdmVyJiwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGF1dG8mIHByaW1pdGl2
ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKLSAgICBpZiAocHJp
bWl0aXZlVmFsdWUuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlQWx3YXlzKQorICAgIGlmIChwcmlt
aXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVBbHdheXMpCiAgICAgICAgIHJldHVybiBD
b2x1bW5CcmVha0JldHdlZW47Ci0gICAgaWYgKHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQoKSA9
PSBDU1NWYWx1ZUF2b2lkKQorICAgIGlmIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NT
VmFsdWVBdm9pZCkKICAgICAgICAgcmV0dXJuIEF2b2lkQ29sdW1uQnJlYWtCZXR3ZWVuOwogICAg
IHJldHVybiBwcmltaXRpdmVWYWx1ZTsKIH0KQEAgLTE0MDgsNyArMTQwOCw3IEBAIGlubGluZSBC
cmVha0JldHdlZW4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Q29sdW1uQnJlYWtCZXR3
ZWVuKFN0eWxlUmVzb2x2CiBpbmxpbmUgQnJlYWtJbnNpZGUgU3R5bGVCdWlsZGVyQ29udmVydGVy
Ojpjb252ZXJ0Q29sdW1uQnJlYWtJbnNpZGUoU3R5bGVSZXNvbHZlciYsIENTU1ZhbHVlJiB2YWx1
ZSkKIHsKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlPih2YWx1ZSk7Ci0gICAgaWYgKHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQoKSA9PSBDU1NW
YWx1ZUF2b2lkKQorICAgIGlmIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVB
dm9pZCkKICAgICAgICAgcmV0dXJuIEF2b2lkQ29sdW1uQnJlYWtJbnNpZGU7CiAgICAgcmV0dXJu
IHByaW1pdGl2ZVZhbHVlOwogfQpAQCAtMTQxNyw5ICsxNDE3LDkgQEAgaW5saW5lIEJyZWFrSW5z
aWRlIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydENvbHVtbkJyZWFrSW5zaWRlKFN0eWxl
UmVzb2x2ZXIKIGlubGluZSBCcmVha0JldHdlZW4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252
ZXJ0UmVnaW9uQnJlYWtCZXR3ZWVuKFN0eWxlUmVzb2x2ZXImLCBDU1NWYWx1ZSYgdmFsdWUpCiB7
CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4o
dmFsdWUpOwotICAgIGlmIChwcmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVB
bHdheXMpCisgICAgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUFsd2F5
cykKICAgICAgICAgcmV0dXJuIFJlZ2lvbkJyZWFrQmV0d2VlbjsKLSAgICBpZiAocHJpbWl0aXZl
VmFsdWUuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlQXZvaWQpCisgICAgaWYgKHByaW1pdGl2ZVZh
bHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUF2b2lkKQogICAgICAgICByZXR1cm4gQXZvaWRSZWdp
b25CcmVha0JldHdlZW47CiAgICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlOwogfQpAQCAtMTQyNyw3
ICsxNDI3LDcgQEAgaW5saW5lIEJyZWFrQmV0d2VlbiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNv
bnZlcnRSZWdpb25CcmVha0JldHdlZW4oU3R5bGVSZXNvbHYKIGlubGluZSBCcmVha0luc2lkZSBT
dHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRSZWdpb25CcmVha0luc2lkZShTdHlsZVJlc29s
dmVyJiwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93
bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKLSAgICBpZiAocHJpbWl0aXZlVmFsdWUu
Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlQXZvaWQpCisgICAgaWYgKHByaW1pdGl2ZVZhbHVlLnZh
bHVlSUQoKSA9PSBDU1NWYWx1ZUF2b2lkKQogICAgICAgICByZXR1cm4gQXZvaWRSZWdpb25CcmVh
a0luc2lkZTsKICAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWU7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVCdWlsZGVyQ3VzdG9tLmgKaW5kZXggY2FhYmYzMjVjNmM1ZWQ3YmE1MWQ3NWFkNWM4Yzhj
YjM5MzE5YjRjZC4uNjA5YWFkNTUyYjE2MGVhNzFkNzI5ZjdhZjEzZmFjMzFiYjBiMDg1ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckN1c3RvbS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDdXN0b20uaApAQCAtMjQsOCArMjQsNyBAQAog
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgU3R5bGVC
dWlsZGVyQ3VzdG9tX2gKLSNkZWZpbmUgU3R5bGVCdWlsZGVyQ3VzdG9tX2gKKyNwcmFnbWEgb25j
ZQogCiAjaW5jbHVkZSAiQ1NTQXNwZWN0UmF0aW9WYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0N1cnNv
ckltYWdlVmFsdWUuaCIKQEAgLTE5NCwyMyArMTkzLDIzIEBAIGlubGluZSB2b2lkIFN0eWxlQnVp
bGRlckN1c3RvbTo6YXBwbHlWYWx1ZVpvb20oU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwg
Q1NTCiB7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZT4odmFsdWUpOwogCi0gICAgaWYgKHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQoKSA9PSBD
U1NWYWx1ZU5vcm1hbCkgeworICAgIGlmIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NT
VmFsdWVOb3JtYWwpIHsKICAgICAgICAgcmVzZXRFZmZlY3RpdmVab29tKHN0eWxlUmVzb2x2ZXIp
OwogICAgICAgICBzdHlsZVJlc29sdmVyLnNldFpvb20oUmVuZGVyU3R5bGU6OmluaXRpYWxab29t
KCkpOwotICAgIH0gZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWVJRCgpID09IENTU1Zh
bHVlUmVzZXQpIHsKKyAgICB9IGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBD
U1NWYWx1ZVJlc2V0KSB7CiAgICAgICAgIHN0eWxlUmVzb2x2ZXIuc2V0RWZmZWN0aXZlWm9vbShS
ZW5kZXJTdHlsZTo6aW5pdGlhbFpvb20oKSk7CiAgICAgICAgIHN0eWxlUmVzb2x2ZXIuc2V0Wm9v
bShSZW5kZXJTdHlsZTo6aW5pdGlhbFpvb20oKSk7Ci0gICAgfSBlbHNlIGlmIChwcmltaXRpdmVW
YWx1ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVEb2N1bWVudCkgeworICAgIH0gZWxzZSBpZiAo
cHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlRG9jdW1lbnQpIHsKICAgICAgICAg
ZmxvYXQgZG9jWm9vbSA9IHN0eWxlUmVzb2x2ZXIucm9vdEVsZW1lbnRTdHlsZSgpID8gc3R5bGVS
ZXNvbHZlci5yb290RWxlbWVudFN0eWxlKCktPnpvb20oKSA6IFJlbmRlclN0eWxlOjppbml0aWFs
Wm9vbSgpOwogICAgICAgICBzdHlsZVJlc29sdmVyLnNldEVmZmVjdGl2ZVpvb20oZG9jWm9vbSk7
CiAgICAgICAgIHN0eWxlUmVzb2x2ZXIuc2V0Wm9vbShkb2Nab29tKTsKICAgICB9IGVsc2UgaWYg
KHByaW1pdGl2ZVZhbHVlLmlzUGVyY2VudGFnZSgpKSB7CiAgICAgICAgIHJlc2V0RWZmZWN0aXZl
Wm9vbShzdHlsZVJlc29sdmVyKTsKLSAgICAgICAgaWYgKGZsb2F0IHBlcmNlbnQgPSBwcmltaXRp
dmVWYWx1ZS5nZXRGbG9hdFZhbHVlKCkpCisgICAgICAgIGlmIChmbG9hdCBwZXJjZW50ID0gcHJp
bWl0aXZlVmFsdWUuZmxvYXRWYWx1ZSgpKQogICAgICAgICAgICAgc3R5bGVSZXNvbHZlci5zZXRa
b29tKHBlcmNlbnQgLyAxMDAuMGYpOwogICAgIH0gZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUuaXNO
dW1iZXIoKSkgewogICAgICAgICByZXNldEVmZmVjdGl2ZVpvb20oc3R5bGVSZXNvbHZlcik7Ci0g
ICAgICAgIGlmIChmbG9hdCBudW1iZXIgPSBwcmltaXRpdmVWYWx1ZS5nZXRGbG9hdFZhbHVlKCkp
CisgICAgICAgIGlmIChmbG9hdCBudW1iZXIgPSBwcmltaXRpdmVWYWx1ZS5mbG9hdFZhbHVlKCkp
CiAgICAgICAgICAgICBzdHlsZVJlc29sdmVyLnNldFpvb20obnVtYmVyKTsKICAgICB9CiB9CkBA
IC0yNDYsNyArMjQ1LDcgQEAgYm9vbCBTdHlsZUJ1aWxkZXJDdXN0b206OmdldFBhZ2VTaXplRnJv
bU5hbWUoQ1NTUHJpbWl0aXZlVmFsdWUqIHBhZ2VTaXplTmFtZSwgQ1MKICAgICBpZiAoIXBhZ2VT
aXplTmFtZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgc3dpdGNoIChwYWdlU2l6ZU5h
bWUtPmdldFZhbHVlSUQoKSkgeworICAgIHN3aXRjaCAocGFnZVNpemVOYW1lLT52YWx1ZUlEKCkp
IHsKICAgICBjYXNlIENTU1ZhbHVlQTU6CiAgICAgICAgIHdpZHRoID0gYTVXaWR0aDsKICAgICAg
ICAgaGVpZ2h0ID0gYTVIZWlnaHQ7CkBAIC0yODQsNyArMjgzLDcgQEAgYm9vbCBTdHlsZUJ1aWxk
ZXJDdXN0b206OmdldFBhZ2VTaXplRnJvbU5hbWUoQ1NTUHJpbWl0aXZlVmFsdWUqIHBhZ2VTaXpl
TmFtZSwgQ1MKICAgICB9CiAKICAgICBpZiAocGFnZU9yaWVudGF0aW9uKSB7Ci0gICAgICAgIHN3
aXRjaCAocGFnZU9yaWVudGF0aW9uLT5nZXRWYWx1ZUlEKCkpIHsKKyAgICAgICAgc3dpdGNoIChw
YWdlT3JpZW50YXRpb24tPnZhbHVlSUQoKSkgewogICAgICAgICBjYXNlIENTU1ZhbHVlTGFuZHNj
YXBlOgogICAgICAgICAgICAgc3RkOjpzd2FwKHdpZHRoLCBoZWlnaHQpOwogICAgICAgICAgICAg
YnJlYWs7CkBAIC0zMDEsNyArMzAwLDcgQEAgYm9vbCBTdHlsZUJ1aWxkZXJDdXN0b206OmdldFBh
Z2VTaXplRnJvbU5hbWUoQ1NTUHJpbWl0aXZlVmFsdWUqIHBhZ2VTaXplTmFtZSwgQ1MKIGlubGlu
ZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVZlcnRpY2FsQWxpZ24oU3R5bGVS
ZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGF1dG8mIHBy
aW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKLSAgICBp
ZiAocHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWVJRCgpKQorICAgIGlmIChwcmltaXRpdmVWYWx1ZS52
YWx1ZUlEKCkpCiAgICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0VmVydGljYWxBbGln
bihwcmltaXRpdmVWYWx1ZSk7CiAgICAgZWxzZQogICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxl
KCktPnNldFZlcnRpY2FsQWxpZ25MZW5ndGgocHJpbWl0aXZlVmFsdWUuY29udmVydFRvTGVuZ3Ro
PEZpeGVkSW50ZWdlckNvbnZlcnNpb24gfCBQZXJjZW50Q29udmVyc2lvbiB8IENhbGN1bGF0ZWRD
b252ZXJzaW9uPihzdHlsZVJlc29sdmVyLnN0YXRlKCkuY3NzVG9MZW5ndGhDb252ZXJzaW9uRGF0
YSgpKSk7CkBAIC0zMTYsMTIgKzMxNSwxMiBAQCBzdGF0aWMgTGVuZ3RoIGNvbnZlcnRUb0ludExl
bmd0aChjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUsIGNvbnN0CiBpbmxp
bmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVXZWJraXREYXNoYm9hcmRSZWdp
b24oU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAg
IGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVl
KTsKLSAgICBpZiAocHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZSkg
eworICAgIGlmIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKSB7CiAg
ICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0RGFzaGJvYXJkUmVnaW9ucyhSZW5kZXJT
dHlsZTo6bm9uZURhc2hib2FyZFJlZ2lvbnMoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBEYXNoYm9hcmRSZWdpb24qIHJlZ2lvbiA9IHByaW1pdGl2ZVZhbHVlLmdldERhc2hib2Fy
ZFJlZ2lvblZhbHVlKCk7CisgICAgYXV0byogcmVnaW9uID0gcHJpbWl0aXZlVmFsdWUuZGFzaGJv
YXJkUmVnaW9uVmFsdWUoKTsKICAgICBpZiAoIXJlZ2lvbikKICAgICAgICAgcmV0dXJuOwogCkBA
IC0zNzQsMTIgKzM3MywxMiBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5
VmFsdWVJbWFnZVJlc29sdXRpb24oU3R5bGVSZXNvbHZlciYgc3R5bGVSZQogICAgIGRvdWJsZSBy
ZXNvbHV0aW9uID0gUmVuZGVyU3R5bGU6OmluaXRpYWxJbWFnZVJlc29sdXRpb24oKTsKICAgICBm
b3IgKGF1dG8mIGl0ZW0gOiBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KHZhbHVlKSkgewogICAgICAg
ICBDU1NQcmltaXRpdmVWYWx1ZSYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZT4oaXRlbS5nZXQoKSk7Ci0gICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS5nZXRWYWx1
ZUlEKCkgPT0gQ1NTVmFsdWVGcm9tSW1hZ2UpCisgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS52
YWx1ZUlEKCkgPT0gQ1NTVmFsdWVGcm9tSW1hZ2UpCiAgICAgICAgICAgICBzb3VyY2UgPSBJbWFn
ZVJlc29sdXRpb25Gcm9tSW1hZ2U7Ci0gICAgICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLmdl
dFZhbHVlSUQoKSA9PSBDU1NWYWx1ZVNuYXApCisgICAgICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZh
bHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZVNuYXApCiAgICAgICAgICAgICBzbmFwID0gSW1hZ2VS
ZXNvbHV0aW9uU25hcFBpeGVsczsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVzb2x1dGlv
biA9IHByaW1pdGl2ZVZhbHVlLmdldERvdWJsZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
RFBQWCk7CisgICAgICAgICAgICByZXNvbHV0aW9uID0gcHJpbWl0aXZlVmFsdWUuZG91YmxlVmFs
dWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19EUFBYKTsKICAgICB9CiAgICAgc3R5bGVSZXNvbHZl
ci5zdHlsZSgpLT5zZXRJbWFnZVJlc29sdXRpb25Tb3VyY2Uoc291cmNlKTsKICAgICBzdHlsZVJl
c29sdmVyLnN0eWxlKCktPnNldEltYWdlUmVzb2x1dGlvblNuYXAoc25hcCk7CkBAIC00MzUsNyAr
NDM0LDcgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlU2l6ZShT
dHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBDU1MKICAgICAgICAgICAgIHBhZ2VTaXplVHlw
ZSA9IFBBR0VfU0laRV9SRVNPTFZFRDsKICAgICAgICAgICAgIHdpZHRoID0gaGVpZ2h0ID0gcHJp
bWl0aXZlVmFsdWUuY29tcHV0ZUxlbmd0aDxMZW5ndGg+KHN0eWxlUmVzb2x2ZXIuc3RhdGUoKS5j
c3NUb0xlbmd0aENvbnZlcnNpb25EYXRhKCkuY29weVdpdGhBZGp1c3RlZFpvb20oMS4wZikpOwog
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS5nZXRW
YWx1ZUlEKCkpIHsKKyAgICAgICAgICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgp
KSB7CiAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAgICAgY2FzZSBDU1NWYWx1ZUF1dG86CkBAIC00OTAsMTIgKzQ4OSwxMiBAQCBpbmxpbmUgdm9p
ZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVUZXh0SW5kZW50KFN0eWxlUmVzb2x2ZXIm
IHN0eWxlUmVzb2x2ZQogI2VuZGlmCiAgICAgZm9yIChhdXRvJiBpdGVtIDogZG93bmNhc3Q8Q1NT
VmFsdWVMaXN0Pih2YWx1ZSkpIHsKICAgICAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3du
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oaXRlbS5nZXQoKSk7Ci0gICAgICAgIGlmICghcHJpbWl0
aXZlVmFsdWUuZ2V0VmFsdWVJRCgpKQorICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlLnZhbHVl
SUQoKSkKICAgICAgICAgICAgIGxlbmd0aE9yUGVyY2VudGFnZVZhbHVlID0gcHJpbWl0aXZlVmFs
dWUuY29udmVydFRvTGVuZ3RoPEZpeGVkSW50ZWdlckNvbnZlcnNpb24gfCBQZXJjZW50Q29udmVy
c2lvbiB8IENhbGN1bGF0ZWRDb252ZXJzaW9uPihzdHlsZVJlc29sdmVyLnN0YXRlKCkuY3NzVG9M
ZW5ndGhDb252ZXJzaW9uRGF0YSgpKTsKICNpZiBFTkFCTEUoQ1NTM19URVhUKQotICAgICAgICBl
bHNlIGlmIChwcmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVXZWJraXRFYWNo
TGluZSkKKyAgICAgICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1Zh
bHVlV2Via2l0RWFjaExpbmUpCiAgICAgICAgICAgICB0ZXh0SW5kZW50TGluZVZhbHVlID0gVGV4
dEluZGVudEVhY2hMaW5lOwotICAgICAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS5nZXRWYWx1
ZUlEKCkgPT0gQ1NTVmFsdWVXZWJraXRIYW5naW5nKQorICAgICAgICBlbHNlIGlmIChwcmltaXRp
dmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVXZWJraXRIYW5naW5nKQogICAgICAgICAgICAg
dGV4dEluZGVudFR5cGVWYWx1ZSA9IFRleHRJbmRlbnRIYW5naW5nOwogI2VuZGlmCiAgICAgfQpA
QCAtNjgwLDcgKzY3OSw3IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlW
YWx1ZUNsaXAoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgQ1NTCiB7CiAgICAgYXV0byYg
cHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwogCi0g
ICAgaWYgKFJlY3QqIHJlY3QgPSBwcmltaXRpdmVWYWx1ZS5nZXRSZWN0VmFsdWUoKSkgeworICAg
IGlmIChSZWN0KiByZWN0ID0gcHJpbWl0aXZlVmFsdWUucmVjdFZhbHVlKCkpIHsKICAgICAgICAg
YXV0byBjb252ZXJzaW9uRGF0YSA9IHN0eWxlUmVzb2x2ZXIuc3RhdGUoKS5jc3NUb0xlbmd0aENv
bnZlcnNpb25EYXRhKCk7CiAgICAgICAgIExlbmd0aCB0b3AgPSByZWN0LT50b3AoKS0+Y29udmVy
dFRvTGVuZ3RoPEZpeGVkSW50ZWdlckNvbnZlcnNpb24gfCBQZXJjZW50Q29udmVyc2lvbiB8IEF1
dG9Db252ZXJzaW9uPihjb252ZXJzaW9uRGF0YSk7CiAgICAgICAgIExlbmd0aCByaWdodCA9IHJl
Y3QtPnJpZ2h0KCktPmNvbnZlcnRUb0xlbmd0aDxGaXhlZEludGVnZXJDb252ZXJzaW9uIHwgUGVy
Y2VudENvbnZlcnNpb24gfCBBdXRvQ29udmVyc2lvbj4oY29udmVyc2lvbkRhdGEpOwpAQCAtNjg5
LDcgKzY4OCw3IEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUNs
aXAoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgQ1NTCiAgICAgICAgIHN0eWxlUmVzb2x2
ZXIuc3R5bGUoKS0+c2V0Q2xpcCh0b3AsIHJpZ2h0LCBib3R0b20sIGxlZnQpOwogICAgICAgICBz
dHlsZVJlc29sdmVyLnN0eWxlKCktPnNldEhhc0NsaXAodHJ1ZSk7CiAgICAgfSBlbHNlIHsKLSAg
ICAgICAgQVNTRVJUKHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZUF1dG8p
OworICAgICAgICBBU1NFUlQocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlQXV0
byk7CiAgICAgICAgIGFwcGx5SW5pdGlhbENsaXAoc3R5bGVSZXNvbHZlcik7CiAgICAgfQogfQpA
QCAtNjk5LDEwICs2OTgsMTAgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBs
eVZhbHVlV2Via2l0TG9jYWxlKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2wKICAgICBhdXRvJiBw
cmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CiAKICAg
ICBGb250Q2FzY2FkZURlc2NyaXB0aW9uIGZvbnREZXNjcmlwdGlvbiA9IHN0eWxlUmVzb2x2ZXIu
c3R5bGUoKS0+Zm9udERlc2NyaXB0aW9uKCk7Ci0gICAgaWYgKHByaW1pdGl2ZVZhbHVlLmdldFZh
bHVlSUQoKSA9PSBDU1NWYWx1ZUF1dG8pCisgICAgaWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQo
KSA9PSBDU1NWYWx1ZUF1dG8pCiAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRMb2NhbGUobnVs
bEF0b20pOwogICAgIGVsc2UKLSAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldExvY2FsZShwcmlt
aXRpdmVWYWx1ZS5nZXRTdHJpbmdWYWx1ZSgpKTsKKyAgICAgICAgZm9udERlc2NyaXB0aW9uLnNl
dExvY2FsZShwcmltaXRpdmVWYWx1ZS5zdHJpbmdWYWx1ZSgpKTsKICAgICBzdHlsZVJlc29sdmVy
LnNldEZvbnREZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pOwogfQogCkBAIC03MjEsMTIgKzcy
MCwxMiBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVXZWJraXRU
ZXh0T3JpZW50YXRpb24oU3R5bGVSZXNvbHZlciYgcwogaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVy
Q3VzdG9tOjphcHBseVZhbHVlV2Via2l0VGV4dFNpemVBZGp1c3QoU3R5bGVSZXNvbHZlciYgc3R5
bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVl
ID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKLSAgICBpZiAocHJpbWl0aXZl
VmFsdWUuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlQXV0bykKKyAgICBpZiAocHJpbWl0aXZlVmFs
dWUudmFsdWVJRCgpID09IENTU1ZhbHVlQXV0bykKICAgICAgICAgc3R5bGVSZXNvbHZlci5zdHls
ZSgpLT5zZXRUZXh0U2l6ZUFkanVzdChUZXh0U2l6ZUFkanVzdG1lbnQoQXV0b1RleHRTaXplQWRq
dXN0bWVudCkpOwotICAgIGVsc2UgaWYgKHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQoKSA9PSBD
U1NWYWx1ZU5vbmUpCisgICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENT
U1ZhbHVlTm9uZSkKICAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRUZXh0U2l6ZUFk
anVzdChUZXh0U2l6ZUFkanVzdG1lbnQoTm9UZXh0U2l6ZUFkanVzdG1lbnQpKTsKICAgICBlbHNl
Ci0gICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0VGV4dFNpemVBZGp1c3QoVGV4dFNp
emVBZGp1c3RtZW50KHByaW1pdGl2ZVZhbHVlLmdldEZsb2F0VmFsdWUoKSkpOworICAgICAgICBz
dHlsZVJlc29sdmVyLnN0eWxlKCktPnNldFRleHRTaXplQWRqdXN0KFRleHRTaXplQWRqdXN0bWVu
dChwcmltaXRpdmVWYWx1ZS5mbG9hdFZhbHVlKCkpKTsKIAogICAgIHN0eWxlUmVzb2x2ZXIuc3Rh
dGUoKS5zZXRGb250RGlydHkodHJ1ZSk7CiB9CkBAIC03MzUsOSArNzM0LDkgQEAgaW5saW5lIHZv
aWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlV2Via2l0VGV4dFNpemVBZGp1c3QoU3R5
bGVSZXNvbHZlciYgc3QKIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1
ZVdlYmtpdFRleHRab29tKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2
YWx1ZSkKIHsKICAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlPih2YWx1ZSk7Ci0gICAgaWYgKHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQoKSA9PSBD
U1NWYWx1ZU5vcm1hbCkKKyAgICBpZiAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1Zh
bHVlTm9ybWFsKQogICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldFRleHRab29tKFRl
eHRab29tTm9ybWFsKTsKLSAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkg
PT0gQ1NTVmFsdWVSZXNldCkKKyAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkg
PT0gQ1NTVmFsdWVSZXNldCkKICAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRUZXh0
Wm9vbShUZXh0Wm9vbVJlc2V0KTsKICAgICBzdHlsZVJlc29sdmVyLnN0YXRlKCkuc2V0Rm9udERp
cnR5KHRydWUpOwogfQpAQCAtNzQ2LDcgKzc0NSw3IEBAIHRlbXBsYXRlIDxDU1NQcm9wZXJ0eUlE
IGlkPgogaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVRleHRPckJveFNoYWRv
d1ZhbHVlKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKIHsK
ICAgICBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSkgewotICAgICAgICBBU1NFUlQo
ZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFs
dWVOb25lKTsKKyAgICAgICAgQVNTRVJUKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1
ZSkudmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZSk7CiAgICAgICAgIGlmIChpZCA9PSBDU1NQcm9w
ZXJ0eVRleHRTaGFkb3cpCiAgICAgICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldFRl
eHRTaGFkb3cobnVsbHB0cik7CiAgICAgICAgIGVsc2UKQEAgLTc2Miw3ICs3NjEsNyBAQCBpbmxp
bmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VGV4dE9yQm94U2hhZG93VmFsdWUoU3R5
bGVSZXNvbHZlciYgc3R5bGVSZQogICAgICAgICBpbnQgeSA9IHNoYWRvd1ZhbHVlLnktPmNvbXB1
dGVMZW5ndGg8aW50Pihjb252ZXJzaW9uRGF0YSk7CiAgICAgICAgIGludCBibHVyID0gc2hhZG93
VmFsdWUuYmx1ciA/IHNoYWRvd1ZhbHVlLmJsdXItPmNvbXB1dGVMZW5ndGg8aW50Pihjb252ZXJz
aW9uRGF0YSkgOiAwOwogICAgICAgICBpbnQgc3ByZWFkID0gc2hhZG93VmFsdWUuc3ByZWFkID8g
c2hhZG93VmFsdWUuc3ByZWFkLT5jb21wdXRlTGVuZ3RoPGludD4oY29udmVyc2lvbkRhdGEpIDog
MDsKLSAgICAgICAgU2hhZG93U3R5bGUgc2hhZG93U3R5bGUgPSBzaGFkb3dWYWx1ZS5zdHlsZSAm
JiBzaGFkb3dWYWx1ZS5zdHlsZS0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlSW5zZXQgPyBJbnNl
dCA6IE5vcm1hbDsKKyAgICAgICAgU2hhZG93U3R5bGUgc2hhZG93U3R5bGUgPSBzaGFkb3dWYWx1
ZS5zdHlsZSAmJiBzaGFkb3dWYWx1ZS5zdHlsZS0+dmFsdWVJRCgpID09IENTU1ZhbHVlSW5zZXQg
PyBJbnNldCA6IE5vcm1hbDsKICAgICAgICAgQ29sb3IgY29sb3I7CiAgICAgICAgIGlmIChzaGFk
b3dWYWx1ZS5jb2xvcikKICAgICAgICAgICAgIGNvbG9yID0gc3R5bGVSZXNvbHZlci5jb2xvckZy
b21QcmltaXRpdmVWYWx1ZSgqc2hhZG93VmFsdWUuY29sb3IpOwpAQCAtODY5LDcgKzg2OCw3IEBA
IGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUZvbnRGYW1pbHkoU3R5
bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlCiAgICAgICAgICAgICAvLyBJZiB0aGUgZmFtaWx5IG5h
bWUgd2FzIHJlc29sdmVkIGJ5IHRoZSBDU1MgcGFyc2VyIGZyb20gYSBzeXN0ZW0gZm9udCBJRCwg
dGhlbiBpdCBpcyBnZW5lcmljLgogICAgICAgICAgICAgaXNHZW5lcmljRmFtaWx5ID0gZm9udEZh
bWlseS5mcm9tU3lzdGVtRm9udElEOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgc3dp
dGNoIChjb250ZW50VmFsdWUuZ2V0VmFsdWVJRCgpKSB7CisgICAgICAgICAgICBzd2l0Y2ggKGNv
bnRlbnRWYWx1ZS52YWx1ZUlEKCkpIHsKICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRC
b2R5OgogICAgICAgICAgICAgICAgIGlmIChTZXR0aW5ncyogc2V0dGluZ3MgPSBzdHlsZVJlc29s
dmVyLmRvY3VtZW50KCkuc2V0dGluZ3MoKSkKICAgICAgICAgICAgICAgICAgICAgZmFtaWx5ID0g
c2V0dGluZ3MtPnN0YW5kYXJkRm9udEZhbWlseSgpOwpAQCAtOTQ4LDcgKzk0Nyw3IEBAIGlubGlu
ZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUJhc2VsaW5lU2hpZnQoU3R5bGVS
ZXNvbHZlciYgc3R5bGVSZXNvCiAgICAgU1ZHUmVuZGVyU3R5bGUmIHN2Z1N0eWxlID0gc3R5bGVS
ZXNvbHZlci5zdHlsZSgpLT5hY2Nlc3NTVkdTdHlsZSgpOwogICAgIGF1dG8mIHByaW1pdGl2ZVZh
bHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKICAgICBpZiAocHJpbWl0
aXZlVmFsdWUuaXNWYWx1ZUlEKCkpIHsKLSAgICAgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS5n
ZXRWYWx1ZUlEKCkpIHsKKyAgICAgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkp
IHsKICAgICAgICAgY2FzZSBDU1NWYWx1ZUJhc2VsaW5lOgogICAgICAgICAgICAgc3ZnU3R5bGUu
c2V0QmFzZWxpbmVTaGlmdChCU19CQVNFTElORSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTk4
OCwxMiArOTg3LDEyIEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1
ZVdlYmtpdEFzcGVjdFJhdGlvKFN0eWxlUmVzb2x2ZXImIHN0eWxlCiAgICAgaWYgKGlzPENTU1By
aW1pdGl2ZVZhbHVlPih2YWx1ZSkpIHsKICAgICAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBk
b3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwogCi0gICAgICAgIGlmIChwcmltaXRp
dmVWYWx1ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVGcm9tRGltZW5zaW9ucykKKyAgICAgICAg
aWYgKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUZyb21EaW1lbnNpb25zKQog
ICAgICAgICAgICAgcmV0dXJuIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0QXNwZWN0UmF0aW9U
eXBlKEFzcGVjdFJhdGlvRnJvbURpbWVuc2lvbnMpOwotICAgICAgICBpZiAocHJpbWl0aXZlVmFs
dWUuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlRnJvbUludHJpbnNpYykKKyAgICAgICAgaWYgKHBy
aW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUZyb21JbnRyaW5zaWMpCiAgICAgICAg
ICAgICByZXR1cm4gc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRBc3BlY3RSYXRpb1R5cGUoQXNw
ZWN0UmF0aW9Gcm9tSW50cmluc2ljKTsKIAotICAgICAgICBBU1NFUlQocHJpbWl0aXZlVmFsdWUu
Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlQXV0byk7CisgICAgICAgIEFTU0VSVChwcmltaXRpdmVW
YWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVBdXRvKTsKICAgICAgICAgcmV0dXJuIHN0eWxlUmVz
b2x2ZXIuc3R5bGUoKS0+c2V0QXNwZWN0UmF0aW9UeXBlKEFzcGVjdFJhdGlvQXV0byk7CiAgICAg
fQogCkBAIC0xMDI1LDcgKzEwMjQsNyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206
OmFwcGx5VmFsdWVXZWJraXRUZXh0RW1waGFzaXNTdHlsZShTdHlsZVJlc29sdmVyJgogCiAgICAg
ICAgIGZvciAoYXV0byYgaXRlbSA6IGxpc3QpIHsKICAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZh
bHVlJiB2YWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihpdGVtLmdldCgpKTsKLSAg
ICAgICAgICAgIGlmICh2YWx1ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVGaWxsZWQgfHwgdmFs
dWUuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlT3BlbikKKyAgICAgICAgICAgIGlmICh2YWx1ZS52
YWx1ZUlEKCkgPT0gQ1NTVmFsdWVGaWxsZWQgfHwgdmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVl
T3BlbikKICAgICAgICAgICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldFRleHRFbXBo
YXNpc0ZpbGwodmFsdWUpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHN0eWxl
UmVzb2x2ZXIuc3R5bGUoKS0+c2V0VGV4dEVtcGhhc2lzTWFyayh2YWx1ZSk7CkBAIC0xMDM4LDEz
ICsxMDM3LDEzIEBAIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZVdl
YmtpdFRleHRFbXBoYXNpc1N0eWxlKFN0eWxlUmVzb2x2ZXImCiAgICAgaWYgKHByaW1pdGl2ZVZh
bHVlLmlzU3RyaW5nKCkpIHsKICAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRUZXh0
RW1waGFzaXNGaWxsKFRleHRFbXBoYXNpc0ZpbGxGaWxsZWQpOwogICAgICAgICBzdHlsZVJlc29s
dmVyLnN0eWxlKCktPnNldFRleHRFbXBoYXNpc01hcmsoVGV4dEVtcGhhc2lzTWFya0N1c3RvbSk7
Ci0gICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0VGV4dEVtcGhhc2lzQ3VzdG9tTWFy
ayhwcmltaXRpdmVWYWx1ZS5nZXRTdHJpbmdWYWx1ZSgpKTsKKyAgICAgICAgc3R5bGVSZXNvbHZl
ci5zdHlsZSgpLT5zZXRUZXh0RW1waGFzaXNDdXN0b21NYXJrKHByaW1pdGl2ZVZhbHVlLnN0cmlu
Z1ZhbHVlKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgc3R5bGVSZXNvbHZlci5z
dHlsZSgpLT5zZXRUZXh0RW1waGFzaXNDdXN0b21NYXJrKG51bGxBdG9tKTsKIAotICAgIGlmIChw
cmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVGaWxsZWQgfHwgcHJpbWl0aXZl
VmFsdWUuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlT3BlbikgeworICAgIGlmIChwcmltaXRpdmVW
YWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVGaWxsZWQgfHwgcHJpbWl0aXZlVmFsdWUudmFsdWVJ
RCgpID09IENTU1ZhbHVlT3BlbikgewogICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNl
dFRleHRFbXBoYXNpc0ZpbGwocHJpbWl0aXZlVmFsdWUpOwogICAgICAgICBzdHlsZVJlc29sdmVy
LnN0eWxlKCktPnNldFRleHRFbXBoYXNpc01hcmsoVGV4dEVtcGhhc2lzTWFya0F1dG8pOwogICAg
IH0gZWxzZSB7CkBAIC0xMDY5LDcgKzEwNjgsNyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJD
dXN0b206OmFwcGx5SW5oZXJpdENvdW50ZXIoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlcgog
dGVtcGxhdGUgPFN0eWxlQnVpbGRlckN1c3RvbTo6Q291bnRlckJlaGF2aW9yIGNvdW50ZXJCZWhh
dmlvcj4KIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUNvdW50ZXIo
U3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgQ1NTVmFsdWUmIHZhbHVlKQogewotICAgIGJv
b2wgc2V0Q291bnRlckluY3JlbWVudFRvTm9uZSA9IGNvdW50ZXJCZWhhdmlvciA9PSBJbmNyZW1l
bnQgJiYgaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSAmJiBkb3duY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZT4odmFsdWUpLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmU7CisgICAgYm9vbCBz
ZXRDb3VudGVySW5jcmVtZW50VG9Ob25lID0gY291bnRlckJlaGF2aW9yID09IEluY3JlbWVudCAm
JiBpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpICYmIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlPih2YWx1ZSkudmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZTsKIAogICAgIGlmICghaXM8Q1NT
VmFsdWVMaXN0Pih2YWx1ZSkgJiYgIXNldENvdW50ZXJJbmNyZW1lbnRUb05vbmUpCiAgICAgICAg
IHJldHVybjsKQEAgLTEwODYsMTIgKzEwODUsMTIgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVy
Q3VzdG9tOjphcHBseVZhbHVlQ291bnRlcihTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLAog
ICAgICAgICByZXR1cm47CiAKICAgICBmb3IgKGF1dG8mIGl0ZW0gOiBkb3duY2FzdDxDU1NWYWx1
ZUxpc3Q+KHZhbHVlKSkgewotICAgICAgICBQYWlyKiBwYWlyID0gZG93bmNhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWU+KGl0ZW0uZ2V0KCkpLmdldFBhaXJWYWx1ZSgpOworICAgICAgICBQYWlyKiBwYWly
ID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KGl0ZW0uZ2V0KCkpLnBhaXJWYWx1ZSgpOwog
ICAgICAgICBpZiAoIXBhaXIgfHwgIXBhaXItPmZpcnN0KCkgfHwgIXBhaXItPnNlY29uZCgpKQog
ICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgQXRvbWljU3RyaW5nIGlkZW50aWZpZXIg
PSBwYWlyLT5maXJzdCgpLT5nZXRTdHJpbmdWYWx1ZSgpOwotICAgICAgICBpbnQgdmFsdWUgPSBw
YWlyLT5zZWNvbmQoKS0+Z2V0SW50VmFsdWUoKTsKKyAgICAgICAgQXRvbWljU3RyaW5nIGlkZW50
aWZpZXIgPSBwYWlyLT5maXJzdCgpLT5zdHJpbmdWYWx1ZSgpOworICAgICAgICBpbnQgdmFsdWUg
PSBwYWlyLT5zZWNvbmQoKS0+aW50VmFsdWUoKTsKICAgICAgICAgQ291bnRlckRpcmVjdGl2ZXMm
IGRpcmVjdGl2ZXMgPSBtYXAuYWRkKGlkZW50aWZpZXIsIENvdW50ZXJEaXJlY3RpdmVzKCkpLml0
ZXJhdG9yLT52YWx1ZTsKICAgICAgICAgaWYgKGNvdW50ZXJCZWhhdmlvciA9PSBSZXNldCkKICAg
ICAgICAgICAgIGRpcmVjdGl2ZXMuc2V0UmVzZXRWYWx1ZSh2YWx1ZSk7CkBAIC0xMjE5LDcgKzEy
MTgsNyBAQCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVXZWJraXRT
dmdTaGFkb3coU3R5bGVSZXNvbHZlciYgc3R5bGVSZQogewogICAgIFNWR1JlbmRlclN0eWxlJiBz
dmdTdHlsZSA9IHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+YWNjZXNzU1ZHU3R5bGUoKTsKICAgICBp
ZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSkgewotICAgICAgICBBU1NFUlQoZG93bmNh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25l
KTsKKyAgICAgICAgQVNTRVJUKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkudmFs
dWVJRCgpID09IENTU1ZhbHVlTm9uZSk7CiAgICAgICAgIHN2Z1N0eWxlLnNldFNoYWRvdyhudWxs
cHRyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEyNTcsNyArMTI1Niw3IEBAIGlubGlu
ZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUZvbnRXZWlnaHQoU3R5bGVSZXNv
bHZlciYgc3R5bGVSZXNvbHZlCiB7CiAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOwogICAgIGF1dG8gZm9udERlc2NyaXB0aW9uID0g
c3R5bGVSZXNvbHZlci5mb250RGVzY3JpcHRpb24oKTsKLSAgICBzd2l0Y2ggKHByaW1pdGl2ZVZh
bHVlLmdldFZhbHVlSUQoKSkgeworICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgp
KSB7CiAgICAgY2FzZSBDU1NWYWx1ZUludmFsaWQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICBicmVhazsKQEAgLTEyOTAsNyArMTI4OSw3IEBAIGlubGluZSB2b2lkIFN0
eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0Q29sdW1uR2FwKFN0eWxlUmVzb2x2ZXImIHN0
eWxlUmVzb2x2CiAKIGlubGluZSB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUNv
bHVtbkdhcChTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdmFsdWUpCiB7
Ci0gICAgaWYgKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkuZ2V0VmFsdWVJRCgp
ID09IENTU1ZhbHVlTm9ybWFsKQorICAgIGlmIChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4o
dmFsdWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vcm1hbCkKICAgICAgICAgc3R5bGVSZXNvbHZl
ci5zdHlsZSgpLT5zZXRIYXNOb3JtYWxDb2x1bW5HYXAoKTsKICAgICBlbHNlCiAgICAgICAgIHN0
eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0Q29sdW1uR2FwKFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6
Y29udmVydENvbXB1dGVkTGVuZ3RoPGZsb2F0PihzdHlsZVJlc29sdmVyLCB2YWx1ZSkpOwpAQCAt
MTMzMyw3ICsxMzMyLDcgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZh
bHVlQ29udGVudChTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLAogCiAgICAgICAgIGF1dG8m
IGNvbnRlbnRWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihpdGVtLmdldCgpKTsK
ICAgICAgICAgaWYgKGNvbnRlbnRWYWx1ZS5pc1N0cmluZygpKSB7Ci0gICAgICAgICAgICBzdHls
ZVJlc29sdmVyLnN0eWxlKCktPnNldENvbnRlbnQoY29udGVudFZhbHVlLmdldFN0cmluZ1ZhbHVl
KCkuaW1wbCgpLCBkaWRTZXQpOworICAgICAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5z
ZXRDb250ZW50KGNvbnRlbnRWYWx1ZS5zdHJpbmdWYWx1ZSgpLmltcGwoKSwgZGlkU2V0KTsKICAg
ICAgICAgICAgIGRpZFNldCA9IHRydWU7CiAgICAgICAgIH0gZWxzZSBpZiAoY29udGVudFZhbHVl
LmlzQXR0cigpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogQ2FuIGEgbmFtZXNwYWNlIGJlIHNw
ZWNpZmllZCBmb3IgYW4gYXR0cihmb28pPwpAQCAtMTM0MSw3ICsxMzQwLDcgQEAgaW5saW5lIHZv
aWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlQ29udGVudChTdHlsZVJlc29sdmVyJiBz
dHlsZVJlc29sdmVyLAogICAgICAgICAgICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0
SGFzQXR0ckNvbnRlbnQoKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBjb25z
dF9jYXN0PFJlbmRlclN0eWxlKj4oc3R5bGVSZXNvbHZlci5wYXJlbnRTdHlsZSgpKS0+c2V0SGFz
QXR0ckNvbnRlbnQoKTsKLSAgICAgICAgICAgIFF1YWxpZmllZE5hbWUgYXR0cihudWxsQXRvbSwg
Y29udGVudFZhbHVlLmdldFN0cmluZ1ZhbHVlKCkuaW1wbCgpLCBudWxsQXRvbSk7CisgICAgICAg
ICAgICBRdWFsaWZpZWROYW1lIGF0dHIobnVsbEF0b20sIGNvbnRlbnRWYWx1ZS5zdHJpbmdWYWx1
ZSgpLmltcGwoKSwgbnVsbEF0b20pOwogICAgICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB2
YWx1ZSA9IHN0eWxlUmVzb2x2ZXIuZWxlbWVudCgpLT5nZXRBdHRyaWJ1dGUoYXR0cik7CiAgICAg
ICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldENvbnRlbnQodmFsdWUuaXNOdWxsKCkg
PyBlbXB0eUF0b20gOiB2YWx1ZS5pbXBsKCksIGRpZFNldCk7CiAgICAgICAgICAgICBkaWRTZXQg
PSB0cnVlOwpAQCAtMTM0OSw3ICsxMzQ4LDcgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3Vz
dG9tOjphcHBseVZhbHVlQ29udGVudChTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLAogICAg
ICAgICAgICAgc3R5bGVSZXNvbHZlci5ydWxlU2V0cygpLm11dGFibGVGZWF0dXJlcygpLmF0dHJp
YnV0ZUNhbm9uaWNhbExvY2FsTmFtZXNJblJ1bGVzLmFkZChhdHRyLmxvY2FsTmFtZSgpLmltcGwo
KSk7CiAgICAgICAgICAgICBzdHlsZVJlc29sdmVyLnJ1bGVTZXRzKCkubXV0YWJsZUZlYXR1cmVz
KCkuYXR0cmlidXRlTG9jYWxOYW1lc0luUnVsZXMuYWRkKGF0dHIubG9jYWxOYW1lKCkuaW1wbCgp
KTsKICAgICAgICAgfSBlbHNlIGlmIChjb250ZW50VmFsdWUuaXNDb3VudGVyKCkpIHsKLSAgICAg
ICAgICAgIENvdW50ZXIqIGNvdW50ZXJWYWx1ZSA9IGNvbnRlbnRWYWx1ZS5nZXRDb3VudGVyVmFs
dWUoKTsKKyAgICAgICAgICAgIGF1dG8qIGNvdW50ZXJWYWx1ZSA9IGNvbnRlbnRWYWx1ZS5jb3Vu
dGVyVmFsdWUoKTsKICAgICAgICAgICAgIEVMaXN0U3R5bGVUeXBlIGxpc3RTdHlsZVR5cGUgPSBO
b25lTGlzdFN0eWxlOwogICAgICAgICAgICAgQ1NTVmFsdWVJRCBsaXN0U3R5bGVJZGVudCA9IGNv
dW50ZXJWYWx1ZS0+bGlzdFN0eWxlSWRlbnQoKTsKICAgICAgICAgICAgIGlmIChsaXN0U3R5bGVJ
ZGVudCAhPSBDU1NWYWx1ZU5vbmUpCkBAIC0xMzU4LDcgKzEzNTcsNyBAQCBpbmxpbmUgdm9pZCBT
dHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVDb250ZW50KFN0eWxlUmVzb2x2ZXImIHN0eWxl
UmVzb2x2ZXIsCiAgICAgICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNldENvbnRlbnQo
V1RGTW92ZShjb3VudGVyKSwgZGlkU2V0KTsKICAgICAgICAgICAgIGRpZFNldCA9IHRydWU7CiAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBzd2l0Y2ggKGNvbnRlbnRWYWx1ZS5nZXRWYWx1
ZUlEKCkpIHsKKyAgICAgICAgICAgIHN3aXRjaCAoY29udGVudFZhbHVlLnZhbHVlSUQoKSkgewog
ICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZU9wZW5RdW90ZToKICAgICAgICAgICAgICAgICBzdHls
ZVJlc29sdmVyLnN0eWxlKCktPnNldENvbnRlbnQoT1BFTl9RVU9URSwgZGlkU2V0KTsKICAgICAg
ICAgICAgICAgICBkaWRTZXQgPSB0cnVlOwpAQCAtMTU1Myw3ICsxNTUyLDcgQEAgaW5saW5lIHZv
aWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlRm9udFNpemUoU3R5bGVSZXNvbHZlciYg
c3R5bGVSZXNvbHZlciwKIAogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKICAgICBmbG9hdCBzaXplOwotICAgIGlmIChDU1NWYWx1
ZUlEIGlkZW50ID0gcHJpbWl0aXZlVmFsdWUuZ2V0VmFsdWVJRCgpKSB7CisgICAgaWYgKENTU1Zh
bHVlSUQgaWRlbnQgPSBwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkpIHsKICAgICAgICAgZm9udERl
c2NyaXB0aW9uLnNldElzQWJzb2x1dGVTaXplKHBhcmVudElzQWJzb2x1dGVTaXplICYmIChpZGVu
dCA9PSBDU1NWYWx1ZUxhcmdlciB8fCBpZGVudCA9PSBDU1NWYWx1ZVNtYWxsZXIgfHwgaWRlbnQg
PT0gQ1NTVmFsdWVXZWJraXRSdWJ5VGV4dCkpOwogCiAgICAgICAgIC8vIEtleXdvcmRzIGFyZSBi
ZWluZyB1c2VkLgpAQCAtMTU4Nyw3ICsxNTg2LDcgQEAgaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVy
Q3VzdG9tOjphcHBseVZhbHVlRm9udFNpemUoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwK
ICAgICAgICAgICAgIHNpemUgPSBwcmltaXRpdmVWYWx1ZS5jb21wdXRlTGVuZ3RoPGZsb2F0PihD
U1NUb0xlbmd0aENvbnZlcnNpb25EYXRhKHN0eWxlUmVzb2x2ZXIucGFyZW50U3R5bGUoKSwgc3R5
bGVSZXNvbHZlci5yb290RWxlbWVudFN0eWxlKCksIHN0eWxlUmVzb2x2ZXIuZG9jdW1lbnQoKS5y
ZW5kZXJWaWV3KCksIDEuMGYsIHRydWUpKTsKICAgICAgICAgICAgIHN0eWxlUmVzb2x2ZXIuc3Rh
dGUoKS5zZXRGb250U2l6ZUhhc1ZpZXdwb3J0VW5pdHMocHJpbWl0aXZlVmFsdWUuaXNWaWV3cG9y
dFBlcmNlbnRhZ2VMZW5ndGgoKSk7CiAgICAgICAgIH0gZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUu
aXNQZXJjZW50YWdlKCkpCi0gICAgICAgICAgICBzaXplID0gKHByaW1pdGl2ZVZhbHVlLmdldEZs
b2F0VmFsdWUoKSAqIHBhcmVudFNpemUpIC8gMTAwLjBmOworICAgICAgICAgICAgc2l6ZSA9IChw
cmltaXRpdmVWYWx1ZS5mbG9hdFZhbHVlKCkgKiBwYXJlbnRTaXplKSAvIDEwMC4wZjsKICAgICAg
ICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUuaXNDYWxjdWxhdGVkUGVyY2VudGFnZVdpdGhMZW5n
dGgoKSkKICAgICAgICAgICAgIHNpemUgPSBwcmltaXRpdmVWYWx1ZS5jc3NDYWxjVmFsdWUoKS0+
Y3JlYXRlQ2FsY3VsYXRpb25WYWx1ZShzdHlsZVJlc29sdmVyLnN0YXRlKCkuY3NzVG9MZW5ndGhD
b252ZXJzaW9uRGF0YSgpLmNvcHlXaXRoQWRqdXN0ZWRab29tKDEuMGYpKS0+ZXZhbHVhdGUocGFy
ZW50U2l6ZSk7CiAgICAgICAgIGVsc2UKQEAgLTE2MTksNyArMTYxOCw3IEBAIGlubGluZSB2b2lk
IFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlJbmhlcml0R3JpZFRlbXBsYXRlQXJlYXMoU3R5bGVS
ZXNvbHZlciYgc3R5CiBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVH
cmlkVGVtcGxhdGVBcmVhcyhTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYg
dmFsdWUpCiB7CiAgICAgaWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpIHsKLSAgICAg
ICAgQVNTRVJUKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkuZ2V0VmFsdWVJRCgp
ID09IENTU1ZhbHVlTm9uZSk7CisgICAgICAgIEFTU0VSVChkb3duY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZT4odmFsdWUpLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC0xNzA2LDcgKzE3MDUsNyBAQCB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6
YXBwbHlWYWx1ZUFsdChTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdgog
ewogICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+
KHZhbHVlKTsKICAgICBpZiAocHJpbWl0aXZlVmFsdWUuaXNTdHJpbmcoKSkKLSAgICAgICAgc3R5
bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRDb250ZW50QWx0VGV4dChwcmltaXRpdmVWYWx1ZS5nZXRT
dHJpbmdWYWx1ZSgpKTsKKyAgICAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRDb250ZW50
QWx0VGV4dChwcmltaXRpdmVWYWx1ZS5zdHJpbmdWYWx1ZSgpKTsKICAgICBlbHNlIGlmIChwcmlt
aXRpdmVWYWx1ZS5pc0F0dHIoKSkgewogICAgICAgICAvLyBGSVhNRTogQ2FuIGEgbmFtZXNwYWNl
IGJlIHNwZWNpZmllZCBmb3IgYW4gYXR0cihmb28pPwogICAgICAgICBpZiAoc3R5bGVSZXNvbHZl
ci5zdHlsZSgpLT5zdHlsZVR5cGUoKSA9PSBOT1BTRVVETykKQEAgLTE3MTQsNyArMTcxMyw3IEBA
IHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjphcHBseVZhbHVlQWx0KFN0eWxlUmVzb2x2ZXImIHN0
eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbnN0
X2Nhc3Q8UmVuZGVyU3R5bGUqPihzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCkpLT5zZXRVbmlx
dWUoKTsKIAotICAgICAgICBRdWFsaWZpZWROYW1lIGF0dHIobnVsbEF0b20sIHByaW1pdGl2ZVZh
bHVlLmdldFN0cmluZ1ZhbHVlKCksIG51bGxBdG9tKTsKKyAgICAgICAgUXVhbGlmaWVkTmFtZSBh
dHRyKG51bGxBdG9tLCBwcmltaXRpdmVWYWx1ZS5zdHJpbmdWYWx1ZSgpLCBudWxsQXRvbSk7CiAg
ICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSBzdHlsZVJlc29sdmVyLmVsZW1lbnQo
KS0+Z2V0QXR0cmlidXRlKGF0dHIpOwogICAgICAgICBzdHlsZVJlc29sdmVyLnN0eWxlKCktPnNl
dENvbnRlbnRBbHRUZXh0KHZhbHVlLmlzTnVsbCgpID8gZW1wdHlBdG9tIDogdmFsdWUpOwogCkBA
IC0xNzI2LDYgKzE3MjUsNyBAQCB2b2lkIFN0eWxlQnVpbGRlckN1c3RvbTo6YXBwbHlWYWx1ZUFs
dChTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBDU1NWYWx1ZSYgdgogfQogCiAjaWYgRU5B
QkxFKENTU19TQ1JPTExfU05BUCkKKwogaW5saW5lIHZvaWQgU3R5bGVCdWlsZGVyQ3VzdG9tOjph
cHBseUluaXRpYWxXZWJraXRTY3JvbGxTbmFwUG9pbnRzWChTdHlsZVJlc29sdmVyJiBzdHlsZVJl
c29sdmVyKQogewogICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0U2Nyb2xsU25hcFBvaW50
c1gobnVsbHB0cik7CkBAIC0xNzQ1LDIzICsxNzQ1LDIzIEBAIGlubGluZSB2b2lkIFN0eWxlQnVp
bGRlckN1c3RvbTo6YXBwbHlJbmhlcml0V2Via2l0U2Nyb2xsU25hcFBvaW50c1koU3R5bGVSZXNv
bHZlCiB7CiAgICAgc3R5bGVSZXNvbHZlci5zdHlsZSgpLT5zZXRTY3JvbGxTbmFwUG9pbnRzWShz
dHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCktPnNjcm9sbFNuYXBQb2ludHNZKCkgPyBzdGQ6Om1h
a2VfdW5pcXVlPFNjcm9sbFNuYXBQb2ludHM+KCpzdHlsZVJlc29sdmVyLnBhcmVudFN0eWxlKCkt
PnNjcm9sbFNuYXBQb2ludHNZKCkpIDogbnVsbHB0cik7CiB9CisKICNlbmRpZgogCiBpbmxpbmUg
dm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVXaWxsQ2hhbmdlKFN0eWxlUmVzb2x2
ZXImIHN0eWxlUmVzb2x2ZXIsIENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBpZiAoaXM8Q1NTUHJp
bWl0aXZlVmFsdWU+KHZhbHVlKSkgewotICAgICAgICBBU1NFUlQoZG93bmNhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWU+KHZhbHVlKS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVBdXRvKTsKKyAgICAgICAg
QVNTRVJUKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkudmFsdWVJRCgpID09IENT
U1ZhbHVlQXV0byk7CiAgICAgICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0V2lsbENoYW5n
ZShudWxscHRyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJlZjxXaWxsQ2hhbmdl
RGF0YT4gd2lsbENoYW5nZSA9IFdpbGxDaGFuZ2VEYXRhOjpjcmVhdGUoKTsKKyAgICBhdXRvIHdp
bGxDaGFuZ2UgPSBXaWxsQ2hhbmdlRGF0YTo6Y3JlYXRlKCk7CiAgICAgZm9yIChhdXRvJiBpdGVt
IDogZG93bmNhc3Q8Q1NTVmFsdWVMaXN0Pih2YWx1ZSkpIHsKICAgICAgICAgaWYgKCFpczxDU1NQ
cmltaXRpdmVWYWx1ZT4oaXRlbS5nZXQoKSkpCiAgICAgICAgICAgICBjb250aW51ZTsKLQotICAg
ICAgICBjb25zdCBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlPihpdGVtLmdldCgpKTsKLSAgICAgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS5nZXRWYWx1
ZUlEKCkpIHsKKyAgICAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZT4oaXRlbS5nZXQoKSk7CisgICAgICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUu
dmFsdWVJRCgpKSB7CiAgICAgICAgIGNhc2UgQ1NTVmFsdWVTY3JvbGxQb3NpdGlvbjoKICAgICAg
ICAgICAgIHdpbGxDaGFuZ2UtPmFkZEZlYXR1cmUoV2lsbENoYW5nZURhdGE6OkZlYXR1cmU6OlNj
cm9sbFBvc2l0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTc3MCwxNCArMTc3MCwxMSBA
QCBpbmxpbmUgdm9pZCBTdHlsZUJ1aWxkZXJDdXN0b206OmFwcGx5VmFsdWVXaWxsQ2hhbmdlKFN0
eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRl
ZmF1bHQ6CiAgICAgICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUuaXNQcm9wZXJ0eUlEKCkpCi0g
ICAgICAgICAgICAgICAgd2lsbENoYW5nZS0+YWRkRmVhdHVyZShXaWxsQ2hhbmdlRGF0YTo6RmVh
dHVyZTo6UHJvcGVydHksIHByaW1pdGl2ZVZhbHVlLmdldFByb3BlcnR5SUQoKSk7CisgICAgICAg
ICAgICAgICAgd2lsbENoYW5nZS0+YWRkRmVhdHVyZShXaWxsQ2hhbmdlRGF0YTo6RmVhdHVyZTo6
UHJvcGVydHksIHByaW1pdGl2ZVZhbHVlLnByb3BlcnR5SUQoKSk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgIH0KLQogICAgIHN0eWxlUmVzb2x2ZXIuc3R5bGUoKS0+c2V0V2ls
bENoYW5nZShXVEZNb3ZlKHdpbGxDaGFuZ2UpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYgLy8gU3R5bGVCdWlsZGVyQ3VzdG9tX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
UHJvcGVydGllcy5jcHAKaW5kZXggNmRkNGM1YWEwYWRjMjFkNzcxYjJlZGYzZjk3YmUxNThjMjk1
ZDA3YS4uNjZiNTljYzIwZmU5MDFiNjg5MjU3ZDQ1ZjA5MjhhOTk5Njc4NWI5YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5jcHAKQEAgLTQ0MSw4ICs0NDEsOCBAQCBTdHJpbmcg
U3R5bGVQcm9wZXJ0aWVzOjpnZXRMYXllcmVkU2hvcnRoYW5kVmFsdWUoY29uc3QgU3R5bGVQcm9w
ZXJ0eVNob3J0aGFuZCYgcwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpczxDU1NQcmlt
aXRpdmVWYWx1ZT4oKnZhbHVlKSB8fCAhaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KCp5VmFsdWUpKQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICAgICAg
ICAgICAgICBDU1NWYWx1ZUlEIHhJZCA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFs
dWUpLmdldFZhbHVlSUQoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIENTU1ZhbHVlSUQgeUlk
ID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp5VmFsdWUpLmdldFZhbHVlSUQoKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIENTU1ZhbHVlSUQgeElkID0gZG93bmNhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWU+KCp2YWx1ZSkudmFsdWVJRCgpOworICAgICAgICAgICAgICAgICAgICAgICAgQ1NT
VmFsdWVJRCB5SWQgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnlWYWx1ZSkudmFsdWVJ
RCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHhJZCAhPSB5SWQpIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoeElkID09IENTU1ZhbHVlUmVwZWF0ICYmIHlJZCA9PSBD
U1NWYWx1ZU5vUmVwZWF0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZVJl
cGVhdFhTaG9ydGhhbmQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmlu
ZGV4IDg0OTlkOGY3ZDU0MWZiZWFlNGQ5MTdiNmU3YTI3NTkxYTIzYzg2M2YuLjVkYTZiYjc2OTE4
NzJjYmU5MDc0MTBjOWI4MzZjZGY0ODJkZWU0ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNv
bHZlci5jcHAKQEAgLTIyNyw3ICsyMjcsNyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6Ok1hdGNoUmVz
dWx0OjphZGRNYXRjaGVkUHJvcGVydGllcyhjb25zdCBTdHlsZVByb3BlcnRpZXMmIHBybwogCiAg
ICAgICAgICAgICAgICAgLy8gVGhlIHZhbHVlIGN1cnJlbnRDb2xvciBoYXMgaW1wbGljaXRlbHkg
dGhlIHNhbWUgc2lkZSBlZmZlY3QuIEl0IGRlcGVuZHMgb24gdGhlIHZhbHVlIG9mIGNvbG9yLAog
ICAgICAgICAgICAgICAgIC8vIHdoaWNoIGlzIGFuIGluaGVyaXRlZCB2YWx1ZSwgbWFraW5nIHRo
ZSBub24taW5oZXJpdGVkIHByb3BlcnR5IGltcGxpY2l0bHkgaW5oZXJpdGVkLgotICAgICAgICAg
ICAgICAgIGlmIChpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpICYmIGRvd25jYXN0PENTU1By
aW1pdGl2ZVZhbHVlPih2YWx1ZSkuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlQ3VycmVudGNvbG9y
KSB7CisgICAgICAgICAgICAgICAgaWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkgJiYg
ZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVD
dXJyZW50Y29sb3IpIHsKICAgICAgICAgICAgICAgICAgICAgaXNDYWNoZWFibGUgPSBmYWxzZTsK
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQpAQCAtMTgxNiw3
ICsxODE2LDcgQEAgc3RhdGljIENvbG9yIGNvbG9yRm9yQ1NTVmFsdWUoQ1NTVmFsdWVJRCBjc3NW
YWx1ZUlkKQogCiBib29sIFN0eWxlUmVzb2x2ZXI6OmNvbG9yRnJvbVByaW1pdGl2ZVZhbHVlSXNE
ZXJpdmVkRnJvbUVsZW1lbnQoY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmIHZhbHVlKQogewotICAg
IGludCBpZGVudCA9IHZhbHVlLmdldFZhbHVlSUQoKTsKKyAgICBpbnQgaWRlbnQgPSB2YWx1ZS52
YWx1ZUlEKCk7CiAgICAgc3dpdGNoIChpZGVudCkgewogICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRU
ZXh0OgogICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRMaW5rOgpAQCAtMTgzNCw3ICsxODM0LDcgQEAg
Q29sb3IgU3R5bGVSZXNvbHZlcjo6Y29sb3JGcm9tUHJpbWl0aXZlVmFsdWUoY29uc3QgQ1NTUHJp
bWl0aXZlVmFsdWUmIHZhbHVlLCBib28KICAgICAgICAgcmV0dXJuIHZhbHVlLmNvbG9yKCk7CiAK
ICAgICBjb25zdCBTdGF0ZSYgc3RhdGUgPSBtX3N0YXRlOwotICAgIENTU1ZhbHVlSUQgaWRlbnQg
PSB2YWx1ZS5nZXRWYWx1ZUlEKCk7CisgICAgQ1NTVmFsdWVJRCBpZGVudCA9IHZhbHVlLnZhbHVl
SUQoKTsKICAgICBzd2l0Y2ggKGlkZW50KSB7CiAgICAgY2FzZSAwOgogICAgICAgICByZXR1cm4g
Q29sb3IoKTsKQEAgLTE5MDUsNyArMTkwNSw3IEBAIGJvb2wgU3R5bGVSZXNvbHZlcjo6Y3JlYXRl
RmlsdGVyT3BlcmF0aW9ucyhjb25zdCBDU1NWYWx1ZSYgaW5WYWx1ZSwgRmlsdGVyT3BlcmF0CiAg
ICAgCiAgICAgaWYgKGlzPENTU1ByaW1pdGl2ZVZhbHVlPihpblZhbHVlKSkgewogICAgICAgICBh
dXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihpblZhbHVl
KTsKLSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5v
bmUpCisgICAgICAgIGlmIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25l
KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIApAQCAtMTkyOSw3ICsxOTI5
LDcgQEAgYm9vbCBTdHlsZVJlc29sdmVyOjpjcmVhdGVGaWx0ZXJPcGVyYXRpb25zKGNvbnN0IENT
U1ZhbHVlJiBpblZhbHVlLCBGaWx0ZXJPcGVyYXQKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
IAogICAgICAgICAgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZT4oYXJndW1lbnQpOwotICAgICAgICAgICAgU3RyaW5nIGNzc1VybCA9IHByaW1pdGl2
ZVZhbHVlLmdldFN0cmluZ1ZhbHVlKCk7CisgICAgICAgICAgICBTdHJpbmcgY3NzVXJsID0gcHJp
bWl0aXZlVmFsdWUuc3RyaW5nVmFsdWUoKTsKICAgICAgICAgICAgIFVSTCB1cmwgPSBtX3N0YXRl
LmRvY3VtZW50KCkuY29tcGxldGVVUkwoY3NzVXJsKTsKIAogICAgICAgICAgICAgUmVmUHRyPFJl
ZmVyZW5jZUZpbHRlck9wZXJhdGlvbj4gb3BlcmF0aW9uID0gUmVmZXJlbmNlRmlsdGVyT3BlcmF0
aW9uOjpjcmVhdGUoY3NzVXJsLCB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkpOwpAQCAtMTk2MCw3
ICsxOTYwLDcgQEAgYm9vbCBTdHlsZVJlc29sdmVyOjpjcmVhdGVGaWx0ZXJPcGVyYXRpb25zKGNv
bnN0IENTU1ZhbHVlJiBpblZhbHVlLCBGaWx0ZXJPcGVyYXQKICAgICAgICAgY2FzZSBXZWJLaXRD
U1NGaWx0ZXJWYWx1ZTo6U2F0dXJhdGVGaWx0ZXJPcGVyYXRpb246IHsKICAgICAgICAgICAgIGRv
dWJsZSBhbW91bnQgPSAxOwogICAgICAgICAgICAgaWYgKGZpbHRlclZhbHVlLmxlbmd0aCgpID09
IDEpIHsKLSAgICAgICAgICAgICAgICBhbW91bnQgPSBmaXJzdFZhbHVlLT5nZXREb3VibGVWYWx1
ZSgpOworICAgICAgICAgICAgICAgIGFtb3VudCA9IGZpcnN0VmFsdWUtPmRvdWJsZVZhbHVlKCk7
CiAgICAgICAgICAgICAgICAgaWYgKGZpcnN0VmFsdWUtPmlzUGVyY2VudGFnZSgpKQogICAgICAg
ICAgICAgICAgICAgICBhbW91bnQgLz0gMTAwOwogICAgICAgICAgICAgfQpAQCAtMTk4Miw3ICsx
OTgyLDcgQEAgYm9vbCBTdHlsZVJlc29sdmVyOjpjcmVhdGVGaWx0ZXJPcGVyYXRpb25zKGNvbnN0
IENTU1ZhbHVlJiBpblZhbHVlLCBGaWx0ZXJPcGVyYXQKICAgICAgICAgY2FzZSBXZWJLaXRDU1NG
aWx0ZXJWYWx1ZTo6T3BhY2l0eUZpbHRlck9wZXJhdGlvbjogewogICAgICAgICAgICAgZG91Ymxl
IGFtb3VudCA9IChmaWx0ZXJWYWx1ZS5vcGVyYXRpb25UeXBlKCkgPT0gV2ViS2l0Q1NTRmlsdGVy
VmFsdWU6OkJyaWdodG5lc3NGaWx0ZXJPcGVyYXRpb24pID8gMCA6IDE7CiAgICAgICAgICAgICBp
ZiAoZmlsdGVyVmFsdWUubGVuZ3RoKCkgPT0gMSkgewotICAgICAgICAgICAgICAgIGFtb3VudCA9
IGZpcnN0VmFsdWUtPmdldERvdWJsZVZhbHVlKCk7CisgICAgICAgICAgICAgICAgYW1vdW50ID0g
Zmlyc3RWYWx1ZS0+ZG91YmxlVmFsdWUoKTsKICAgICAgICAgICAgICAgICBpZiAoZmlyc3RWYWx1
ZS0+aXNQZXJjZW50YWdlKCkpCiAgICAgICAgICAgICAgICAgICAgIGFtb3VudCAvPSAxMDA7CiAg
ICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvVHJhbnNmb3JtRnVu
Y3Rpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9UcmFuc2Zvcm1GdW5jdGlvbnMuY3BwCmlu
ZGV4IDYxOTU4YmNmZjgwYTEzNmQ0YzQ5YzI4OTYzMzUxNjA2ZDYzYjlkMmUuLmY2MjMyNWU1NTkx
YWYwNjc1ZDA4NTdlYTlmZjg0ZWIxZTBkMDgwZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9UcmFuc2Zvcm1GdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9UcmFu
c2Zvcm1GdW5jdGlvbnMuY3BwCkBAIC0xMTUsMTMgKzExNSwxMyBAQCBib29sIHRyYW5zZm9ybXNG
b3JWYWx1ZShjb25zdCBDU1NWYWx1ZSYgdmFsdWUsIGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lv
bkRhdGEmCiAgICAgICAgICAgICBkb3VibGUgc3ggPSAxLjA7CiAgICAgICAgICAgICBkb3VibGUg
c3kgPSAxLjA7CiAgICAgICAgICAgICBpZiAodHJhbnNmb3JtVmFsdWUub3BlcmF0aW9uVHlwZSgp
ID09IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpTY2FsZVlUcmFuc2Zvcm1PcGVyYXRpb24pCi0g
ICAgICAgICAgICAgICAgc3kgPSBmaXJzdFZhbHVlLmdldERvdWJsZVZhbHVlKCk7CisgICAgICAg
ICAgICAgICAgc3kgPSBmaXJzdFZhbHVlLmRvdWJsZVZhbHVlKCk7CiAgICAgICAgICAgICBlbHNl
IHsKLSAgICAgICAgICAgICAgICBzeCA9IGZpcnN0VmFsdWUuZ2V0RG91YmxlVmFsdWUoKTsKKyAg
ICAgICAgICAgICAgICBzeCA9IGZpcnN0VmFsdWUuZG91YmxlVmFsdWUoKTsKICAgICAgICAgICAg
ICAgICBpZiAodHJhbnNmb3JtVmFsdWUub3BlcmF0aW9uVHlwZSgpICE9IFdlYktpdENTU1RyYW5z
Zm9ybVZhbHVlOjpTY2FsZVhUcmFuc2Zvcm1PcGVyYXRpb24pIHsKICAgICAgICAgICAgICAgICAg
ICAgaWYgKHRyYW5zZm9ybVZhbHVlLmxlbmd0aCgpID4gMSkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgYXV0byYgc2Vjb25kVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnRy
YW5zZm9ybVZhbHVlLml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMSkpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgc3kgPSBzZWNvbmRWYWx1ZS5nZXREb3VibGVWYWx1ZSgpOworICAgICAgICAgICAg
ICAgICAgICAgICAgc3kgPSBzZWNvbmRWYWx1ZS5kb3VibGVWYWx1ZSgpOwogICAgICAgICAgICAg
ICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgIHN5ID0gc3g7CiAgICAgICAg
ICAgICAgICAgfQpAQCAtMTM1LDE5ICsxMzUsMTkgQEAgYm9vbCB0cmFuc2Zvcm1zRm9yVmFsdWUo
Y29uc3QgQ1NTVmFsdWUmIHZhbHVlLCBjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJgog
ICAgICAgICAgICAgZG91YmxlIHN5ID0gMS4wOwogICAgICAgICAgICAgZG91YmxlIHN6ID0gMS4w
OwogICAgICAgICAgICAgaWYgKHRyYW5zZm9ybVZhbHVlLm9wZXJhdGlvblR5cGUoKSA9PSBXZWJL
aXRDU1NUcmFuc2Zvcm1WYWx1ZTo6U2NhbGVaVHJhbnNmb3JtT3BlcmF0aW9uKQotICAgICAgICAg
ICAgICAgIHN6ID0gZmlyc3RWYWx1ZS5nZXREb3VibGVWYWx1ZSgpOworICAgICAgICAgICAgICAg
IHN6ID0gZmlyc3RWYWx1ZS5kb3VibGVWYWx1ZSgpOwogICAgICAgICAgICAgZWxzZSBpZiAodHJh
bnNmb3JtVmFsdWUub3BlcmF0aW9uVHlwZSgpID09IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpT
Y2FsZVlUcmFuc2Zvcm1PcGVyYXRpb24pCi0gICAgICAgICAgICAgICAgc3kgPSBmaXJzdFZhbHVl
LmdldERvdWJsZVZhbHVlKCk7CisgICAgICAgICAgICAgICAgc3kgPSBmaXJzdFZhbHVlLmRvdWJs
ZVZhbHVlKCk7CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBzeCA9IGZpcnN0
VmFsdWUuZ2V0RG91YmxlVmFsdWUoKTsKKyAgICAgICAgICAgICAgICBzeCA9IGZpcnN0VmFsdWUu
ZG91YmxlVmFsdWUoKTsKICAgICAgICAgICAgICAgICBpZiAodHJhbnNmb3JtVmFsdWUub3BlcmF0
aW9uVHlwZSgpICE9IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpTY2FsZVhUcmFuc2Zvcm1PcGVy
YXRpb24pIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHRyYW5zZm9ybVZhbHVlLmxlbmd0aCgp
ID4gMikgewogICAgICAgICAgICAgICAgICAgICAgICAgYXV0byYgdGhpcmRWYWx1ZSA9IGRvd25j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdHJhbnNmb3JtVmFsdWUuaXRlbVdpdGhvdXRCb3VuZHND
aGVjaygyKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzeiA9IHRoaXJkVmFsdWUuZ2V0RG91
YmxlVmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN6ID0gdGhpcmRWYWx1ZS5kb3Vi
bGVWYWx1ZSgpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGlm
ICh0cmFuc2Zvcm1WYWx1ZS5sZW5ndGgoKSA+IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
IGF1dG8mIHNlY29uZFZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp0cmFuc2Zv
cm1WYWx1ZS5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDEpKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHN5ID0gc2Vjb25kVmFsdWUuZ2V0RG91YmxlVmFsdWUoKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHN5ID0gc2Vjb25kVmFsdWUuZG91YmxlVmFsdWUoKTsKICAgICAgICAgICAgICAgICAg
ICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICBzeSA9IHN4OwogICAgICAgICAgICAg
ICAgIH0KQEAgLTIzNSw5ICsyMzUsOSBAQCBib29sIHRyYW5zZm9ybXNGb3JWYWx1ZShjb25zdCBD
U1NWYWx1ZSYgdmFsdWUsIGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmCiAgICAgICAg
ICAgICBhdXRvJiBzZWNvbmRWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdHJh
bnNmb3JtVmFsdWUuaXRlbVdpdGhvdXRCb3VuZHNDaGVjaygxKSk7CiAgICAgICAgICAgICBhdXRv
JiB0aGlyZFZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp0cmFuc2Zvcm1WYWx1
ZS5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDIpKTsKICAgICAgICAgICAgIGF1dG8mIGZvdXJ0aFZh
bHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp0cmFuc2Zvcm1WYWx1ZS5pdGVtV2l0
aG91dEJvdW5kc0NoZWNrKDMpKTsKLSAgICAgICAgICAgIGRvdWJsZSB4ID0gZmlyc3RWYWx1ZS5n
ZXREb3VibGVWYWx1ZSgpOwotICAgICAgICAgICAgZG91YmxlIHkgPSBzZWNvbmRWYWx1ZS5nZXRE
b3VibGVWYWx1ZSgpOwotICAgICAgICAgICAgZG91YmxlIHogPSB0aGlyZFZhbHVlLmdldERvdWJs
ZVZhbHVlKCk7CisgICAgICAgICAgICBkb3VibGUgeCA9IGZpcnN0VmFsdWUuZG91YmxlVmFsdWUo
KTsKKyAgICAgICAgICAgIGRvdWJsZSB5ID0gc2Vjb25kVmFsdWUuZG91YmxlVmFsdWUoKTsKKyAg
ICAgICAgICAgIGRvdWJsZSB6ID0gdGhpcmRWYWx1ZS5kb3VibGVWYWx1ZSgpOwogICAgICAgICAg
ICAgZG91YmxlIGFuZ2xlID0gZm91cnRoVmFsdWUuY29tcHV0ZURlZ3JlZXMoKTsKICAgICAgICAg
ICAgIG9wZXJhdGlvbnMub3BlcmF0aW9ucygpLmFwcGVuZChSb3RhdGVUcmFuc2Zvcm1PcGVyYXRp
b246OmNyZWF0ZSh4LCB5LCB6LCBhbmdsZSwgdHJhbnNmb3JtT3BlcmF0aW9uVHlwZSh0cmFuc2Zv
cm1WYWx1ZS5vcGVyYXRpb25UeXBlKCkpKSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTI2NSwz
NCArMjY1LDM0IEBAIGJvb2wgdHJhbnNmb3Jtc0ZvclZhbHVlKGNvbnN0IENTU1ZhbHVlJiB2YWx1
ZSwgY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYKICAgICAgICAgY2FzZSBXZWJLaXRD
U1NUcmFuc2Zvcm1WYWx1ZTo6TWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uOiB7CiAgICAgICAgICAg
ICBpZiAodHJhbnNmb3JtVmFsdWUubGVuZ3RoKCkgPCA2KQogICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgZG91YmxlIGEgPSBmaXJzdFZhbHVlLmdldERvdWJsZVZhbHVlKCk7Ci0g
ICAgICAgICAgICBkb3VibGUgYiA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdHJhbnNm
b3JtVmFsdWUuaXRlbVdpdGhvdXRCb3VuZHNDaGVjaygxKSkuZ2V0RG91YmxlVmFsdWUoKTsKLSAg
ICAgICAgICAgIGRvdWJsZSBjID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp0cmFuc2Zv
cm1WYWx1ZS5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDIpKS5nZXREb3VibGVWYWx1ZSgpOwotICAg
ICAgICAgICAgZG91YmxlIGQgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnRyYW5zZm9y
bVZhbHVlLml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMykpLmdldERvdWJsZVZhbHVlKCk7Ci0gICAg
ICAgICAgICBkb3VibGUgZSA9IGNvbnZlcnNpb25EYXRhLnpvb20oKSAqIGRvd25jYXN0PENTU1By
aW1pdGl2ZVZhbHVlPigqdHJhbnNmb3JtVmFsdWUuaXRlbVdpdGhvdXRCb3VuZHNDaGVjayg0KSku
Z2V0RG91YmxlVmFsdWUoKTsKLSAgICAgICAgICAgIGRvdWJsZSBmID0gY29udmVyc2lvbkRhdGEu
em9vbSgpICogZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp0cmFuc2Zvcm1WYWx1ZS5pdGVt
V2l0aG91dEJvdW5kc0NoZWNrKDUpKS5nZXREb3VibGVWYWx1ZSgpOworICAgICAgICAgICAgZG91
YmxlIGEgPSBmaXJzdFZhbHVlLmRvdWJsZVZhbHVlKCk7CisgICAgICAgICAgICBkb3VibGUgYiA9
IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdHJhbnNmb3JtVmFsdWUuaXRlbVdpdGhvdXRC
b3VuZHNDaGVjaygxKSkuZG91YmxlVmFsdWUoKTsKKyAgICAgICAgICAgIGRvdWJsZSBjID0gZG93
bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp0cmFuc2Zvcm1WYWx1ZS5pdGVtV2l0aG91dEJvdW5k
c0NoZWNrKDIpKS5kb3VibGVWYWx1ZSgpOworICAgICAgICAgICAgZG91YmxlIGQgPSBkb3duY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZT4oKnRyYW5zZm9ybVZhbHVlLml0ZW1XaXRob3V0Qm91bmRzQ2hl
Y2soMykpLmRvdWJsZVZhbHVlKCk7CisgICAgICAgICAgICBkb3VibGUgZSA9IGNvbnZlcnNpb25E
YXRhLnpvb20oKSAqIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdHJhbnNmb3JtVmFsdWUu
aXRlbVdpdGhvdXRCb3VuZHNDaGVjayg0KSkuZG91YmxlVmFsdWUoKTsKKyAgICAgICAgICAgIGRv
dWJsZSBmID0gY29udmVyc2lvbkRhdGEuem9vbSgpICogZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWU+KCp0cmFuc2Zvcm1WYWx1ZS5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDUpKS5kb3VibGVWYWx1
ZSgpOwogICAgICAgICAgICAgb3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuYXBwZW5kKE1hdHJpeFRy
YW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKGEsIGIsIGMsIGQsIGUsIGYpKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6
Ok1hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uOiB7CiAgICAgICAgICAgICBpZiAodHJhbnNmb3Jt
VmFsdWUubGVuZ3RoKCkgPCAxNikKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IFRyYW5zZm9ybWF0aW9uTWF0cml4IG1hdHJpeChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4o
KnRyYW5zZm9ybVZhbHVlLml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMCkpLmdldERvdWJsZVZhbHVl
KCksCi0gICAgICAgICAgICAgICAgZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp0cmFuc2Zv
cm1WYWx1ZS5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDEpKS5nZXREb3VibGVWYWx1ZSgpLAotICAg
ICAgICAgICAgICAgIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdHJhbnNmb3JtVmFsdWUu
aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygyKSkuZ2V0RG91YmxlVmFsdWUoKSwKLSAgICAgICAgICAg
ICAgICBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnRyYW5zZm9ybVZhbHVlLml0ZW1XaXRo
b3V0Qm91bmRzQ2hlY2soMykpLmdldERvdWJsZVZhbHVlKCksCi0gICAgICAgICAgICAgICAgZG93
bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp0cmFuc2Zvcm1WYWx1ZS5pdGVtV2l0aG91dEJvdW5k
c0NoZWNrKDQpKS5nZXREb3VibGVWYWx1ZSgpLAotICAgICAgICAgICAgICAgIGRvd25jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlPigqdHJhbnNmb3JtVmFsdWUuaXRlbVdpdGhvdXRCb3VuZHNDaGVjayg1
KSkuZ2V0RG91YmxlVmFsdWUoKSwKLSAgICAgICAgICAgICAgICBkb3duY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZT4oKnRyYW5zZm9ybVZhbHVlLml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soNikpLmdldERv
dWJsZVZhbHVlKCksCi0gICAgICAgICAgICAgICAgZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+
KCp0cmFuc2Zvcm1WYWx1ZS5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDcpKS5nZXREb3VibGVWYWx1
ZSgpLAotICAgICAgICAgICAgICAgIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdHJhbnNm
b3JtVmFsdWUuaXRlbVdpdGhvdXRCb3VuZHNDaGVjayg4KSkuZ2V0RG91YmxlVmFsdWUoKSwKLSAg
ICAgICAgICAgICAgICBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnRyYW5zZm9ybVZhbHVl
Lml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soOSkpLmdldERvdWJsZVZhbHVlKCksCi0gICAgICAgICAg
ICAgICAgZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp0cmFuc2Zvcm1WYWx1ZS5pdGVtV2l0
aG91dEJvdW5kc0NoZWNrKDEwKSkuZ2V0RG91YmxlVmFsdWUoKSwKLSAgICAgICAgICAgICAgICBk
b3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnRyYW5zZm9ybVZhbHVlLml0ZW1XaXRob3V0Qm91
bmRzQ2hlY2soMTEpKS5nZXREb3VibGVWYWx1ZSgpLAotICAgICAgICAgICAgICAgIGNvbnZlcnNp
b25EYXRhLnpvb20oKSAqIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdHJhbnNmb3JtVmFs
dWUuaXRlbVdpdGhvdXRCb3VuZHNDaGVjaygxMikpLmdldERvdWJsZVZhbHVlKCksCi0gICAgICAg
ICAgICAgICAgY29udmVyc2lvbkRhdGEuem9vbSgpICogZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWU+KCp0cmFuc2Zvcm1WYWx1ZS5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDEzKSkuZ2V0RG91Ymxl
VmFsdWUoKSwKLSAgICAgICAgICAgICAgICBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnRy
YW5zZm9ybVZhbHVlLml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMTQpKS5nZXREb3VibGVWYWx1ZSgp
LAotICAgICAgICAgICAgICAgIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdHJhbnNmb3Jt
VmFsdWUuaXRlbVdpdGhvdXRCb3VuZHNDaGVjaygxNSkpLmdldERvdWJsZVZhbHVlKCkpOworICAg
ICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbWF0cml4KGRvd25jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlPigqdHJhbnNmb3JtVmFsdWUuaXRlbVdpdGhvdXRCb3VuZHNDaGVjaygwKSkuZG91Ymxl
VmFsdWUoKSwKKyAgICAgICAgICAgICAgICBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnRy
YW5zZm9ybVZhbHVlLml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMSkpLmRvdWJsZVZhbHVlKCksCisg
ICAgICAgICAgICAgICAgZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp0cmFuc2Zvcm1WYWx1
ZS5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDIpKS5kb3VibGVWYWx1ZSgpLAorICAgICAgICAgICAg
ICAgIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdHJhbnNmb3JtVmFsdWUuaXRlbVdpdGhv
dXRCb3VuZHNDaGVjaygzKSkuZG91YmxlVmFsdWUoKSwKKyAgICAgICAgICAgICAgICBkb3duY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZT4oKnRyYW5zZm9ybVZhbHVlLml0ZW1XaXRob3V0Qm91bmRzQ2hl
Y2soNCkpLmRvdWJsZVZhbHVlKCksCisgICAgICAgICAgICAgICAgZG93bmNhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWU+KCp0cmFuc2Zvcm1WYWx1ZS5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDUpKS5kb3Vi
bGVWYWx1ZSgpLAorICAgICAgICAgICAgICAgIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigq
dHJhbnNmb3JtVmFsdWUuaXRlbVdpdGhvdXRCb3VuZHNDaGVjayg2KSkuZG91YmxlVmFsdWUoKSwK
KyAgICAgICAgICAgICAgICBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnRyYW5zZm9ybVZh
bHVlLml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soNykpLmRvdWJsZVZhbHVlKCksCisgICAgICAgICAg
ICAgICAgZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp0cmFuc2Zvcm1WYWx1ZS5pdGVtV2l0
aG91dEJvdW5kc0NoZWNrKDgpKS5kb3VibGVWYWx1ZSgpLAorICAgICAgICAgICAgICAgIGRvd25j
YXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdHJhbnNmb3JtVmFsdWUuaXRlbVdpdGhvdXRCb3VuZHND
aGVjayg5KSkuZG91YmxlVmFsdWUoKSwKKyAgICAgICAgICAgICAgICBkb3duY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZT4oKnRyYW5zZm9ybVZhbHVlLml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMTApKS5k
b3VibGVWYWx1ZSgpLAorICAgICAgICAgICAgICAgIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
PigqdHJhbnNmb3JtVmFsdWUuaXRlbVdpdGhvdXRCb3VuZHNDaGVjaygxMSkpLmRvdWJsZVZhbHVl
KCksCisgICAgICAgICAgICAgICAgY29udmVyc2lvbkRhdGEuem9vbSgpICogZG93bmNhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWU+KCp0cmFuc2Zvcm1WYWx1ZS5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDEy
KSkuZG91YmxlVmFsdWUoKSwKKyAgICAgICAgICAgICAgICBjb252ZXJzaW9uRGF0YS56b29tKCkg
KiBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnRyYW5zZm9ybVZhbHVlLml0ZW1XaXRob3V0
Qm91bmRzQ2hlY2soMTMpKS5kb3VibGVWYWx1ZSgpLAorICAgICAgICAgICAgICAgIGRvd25jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlPigqdHJhbnNmb3JtVmFsdWUuaXRlbVdpdGhvdXRCb3VuZHNDaGVj
aygxNCkpLmRvdWJsZVZhbHVlKCksCisgICAgICAgICAgICAgICAgZG93bmNhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWU+KCp0cmFuc2Zvcm1WYWx1ZS5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDE1KSkuZG91
YmxlVmFsdWUoKSk7CiAgICAgICAgICAgICBvcGVyYXRpb25zLm9wZXJhdGlvbnMoKS5hcHBlbmQo
TWF0cml4M0RUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZShtYXRyaXgpKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CkBAIC0zMDIsNyArMzAyLDcgQEAgYm9vbCB0cmFuc2Zvcm1zRm9y
VmFsdWUoY29uc3QgQ1NTVmFsdWUmIHZhbHVlLCBjb25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25E
YXRhJgogICAgICAgICAgICAgICAgIHAgPSBjb252ZXJ0VG9GbG9hdExlbmd0aCgmZmlyc3RWYWx1
ZSwgY29udmVyc2lvbkRhdGEpOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAg
Ly8gVGhpcyBpcyBhIHF1aXJrIHRoYXQgc2hvdWxkIGdvIGF3YXkgd2hlbiAzZCB0cmFuc2Zvcm1z
IGFyZSBmaW5hbGl6ZWQuCi0gICAgICAgICAgICAgICAgZG91YmxlIHZhbCA9IGZpcnN0VmFsdWUu
Z2V0RG91YmxlVmFsdWUoKTsKKyAgICAgICAgICAgICAgICBkb3VibGUgdmFsID0gZmlyc3RWYWx1
ZS5kb3VibGVWYWx1ZSgpOwogICAgICAgICAgICAgICAgIHAgPSB2YWwgPj0gMCA/IExlbmd0aChj
bGFtcFRvUG9zaXRpdmVJbnRlZ2VyKHZhbCksIEZpeGVkKSA6IExlbmd0aChVbmRlZmluZWQpOwog
ICAgICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvVmlld3BvcnRT
dHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9WaWV3cG9ydFN0eWxlUmVzb2x2
ZXIuY3BwCmluZGV4IGRiYjZjYzRkZjQ0MDQxNWE0YmM0MGUwYzllMGRhYTZjMTJhNTY5YmEuLmRj
MzQyMTkyNGFmZDIzNTNiOWIzY2Y2NjYxMWUyNjI4Mzk0YmUxNzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9WaWV3cG9ydFN0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9WaWV3cG9ydFN0eWxlUmVzb2x2ZXIuY3BwCkBAIC0xMTQsMTMgKzExNCwxMyBAQCBm
bG9hdCBWaWV3cG9ydFN0eWxlUmVzb2x2ZXI6OmdldFZpZXdwb3J0QXJndW1lbnRWYWx1ZShDU1NQ
cm9wZXJ0eUlEIGlkKSBjb25zdAogICAgIENTU1ByaW1pdGl2ZVZhbHVlJiBwcmltaXRpdmVWYWx1
ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUpOwogCiAgICAgaWYgKHByaW1p
dGl2ZVZhbHVlLmlzTnVtYmVyKCkgfHwgcHJpbWl0aXZlVmFsdWUuaXNQeCgpKQotICAgICAgICBy
ZXR1cm4gcHJpbWl0aXZlVmFsdWUuZ2V0RmxvYXRWYWx1ZSgpOworICAgICAgICByZXR1cm4gcHJp
bWl0aXZlVmFsdWUuZmxvYXRWYWx1ZSgpOwogCiAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLmlzRm9u
dFJlbGF0aXZlTGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiBwcmltaXRpdmVWYWx1ZS5nZXRGbG9h
dFZhbHVlKCkgKiBtX2RvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKS0+cmVuZGVyU3R5bGUoKS0+
Zm9udERlc2NyaXB0aW9uKCkuY29tcHV0ZWRTaXplKCk7CisgICAgICAgIHJldHVybiBwcmltaXRp
dmVWYWx1ZS5mbG9hdFZhbHVlKCkgKiBtX2RvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKS0+cmVu
ZGVyU3R5bGUoKS0+Zm9udERlc2NyaXB0aW9uKCkuY29tcHV0ZWRTaXplKCk7CiAKICAgICBpZiAo
cHJpbWl0aXZlVmFsdWUuaXNQZXJjZW50YWdlKCkpIHsKLSAgICAgICAgZmxvYXQgcGVyY2VudFZh
bHVlID0gcHJpbWl0aXZlVmFsdWUuZ2V0RmxvYXRWYWx1ZSgpIC8gMTAwLjBmOworICAgICAgICBm
bG9hdCBwZXJjZW50VmFsdWUgPSBwcmltaXRpdmVWYWx1ZS5mbG9hdFZhbHVlKCkgLyAxMDAuMGY7
CiAgICAgICAgIHN3aXRjaCAoaWQpIHsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eU1heEhlaWdo
dDoKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eU1pbkhlaWdodDoKQEAgLTE0MCw3ICsxNDAsNyBA
QCBmbG9hdCBWaWV3cG9ydFN0eWxlUmVzb2x2ZXI6OmdldFZpZXdwb3J0QXJndW1lbnRWYWx1ZShD
U1NQcm9wZXJ0eUlEIGlkKSBjb25zdAogICAgICAgICB9CiAgICAgfQogCi0gICAgc3dpdGNoIChw
cmltaXRpdmVWYWx1ZS5nZXRWYWx1ZUlEKCkpIHsKKyAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVl
LnZhbHVlSUQoKSkgewogICAgIGNhc2UgQ1NTVmFsdWVBdXRvOgogICAgICAgICByZXR1cm4gZGVm
YXVsdFZhbHVlOwogICAgIGNhc2UgQ1NTVmFsdWVEZXZpY2VIZWlnaHQ6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9XZWJLaXRDU1NNYXRyaXguY3BwCmluZGV4IDFiY2E0ZmRlMTQ0Y2I1ZjIyYjk5ZmFmMTk2MDYw
NjBlOTFmOTY1ZjEuLmUzOGFhZmNlZTNiNmEwYzhlMDNlMzQxMzZiYzQwNjRlYjA1MzY1MWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NNYXRyaXguY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NNYXRyaXguY3BwCkBAIC0zNyw1NSArMzcsNTcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1XZWJLaXRDU1NNYXRyaXg6OldlYktpdENTU01hdHJp
eChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbSkKLSAgICA6IG1fbWF0cml4KG0pCitpbmxp
bmUgV2ViS2l0Q1NTTWF0cml4OjpXZWJLaXRDU1NNYXRyaXgoY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmIG1hdHJpeCkKKyAgICA6IG1fbWF0cml4KG1hdHJpeCkKIHsKIH0KIAotV2ViS2l0Q1NT
TWF0cml4OjpXZWJLaXRDU1NNYXRyaXgoY29uc3QgU3RyaW5nJiBzLCBFeGNlcHRpb25Db2RlJiBl
YykKK1JlZjxXZWJLaXRDU1NNYXRyaXg+IFdlYktpdENTU01hdHJpeDo6Y3JlYXRlKGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgpCiB7Ci0gICAgc2V0TWF0cml4VmFsdWUocywgZWMp
OworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYktpdENTU01hdHJpeChtYXRyaXgpKTsKK30K
KworRXhjZXB0aW9uT3I8UmVmPFdlYktpdENTU01hdHJpeD4+IFdlYktpdENTU01hdHJpeDo6Y3Jl
YXRlKGNvbnN0IFN0cmluZyYgc3RyaW5nKQoreworICAgIGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYo
Km5ldyBXZWJLaXRDU1NNYXRyaXgpOworICAgIGF1dG8gc2V0TWF0cml4VmFsdWVSZXN1bHQgPSBy
ZXN1bHQtPnNldE1hdHJpeFZhbHVlKHN0cmluZyk7CisgICAgaWYgKHNldE1hdHJpeFZhbHVlUmVz
dWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gc2V0TWF0cml4VmFsdWVSZXN1bHQu
cmVsZWFzZUV4Y2VwdGlvbigpOworICAgIHJldHVybiBXVEZNb3ZlKHJlc3VsdCk7CiB9CiAKIFdl
YktpdENTU01hdHJpeDo6fldlYktpdENTU01hdHJpeCgpCiB7CiB9CiAKLXZvaWQgV2ViS2l0Q1NT
TWF0cml4OjpzZXRNYXRyaXhWYWx1ZShjb25zdCBTdHJpbmcmIHN0cmluZywgRXhjZXB0aW9uQ29k
ZSYgZWMpCitFeGNlcHRpb25Pcjx2b2lkPiBXZWJLaXRDU1NNYXRyaXg6OnNldE1hdHJpeFZhbHVl
KGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIGlmIChzdHJpbmcuaXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB7IH07CiAKICAgICBhdXRvIHN0eWxlRGVjbGFy
YXRpb24gPSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKLSAgICBpZiAoQ1NTUGFy
c2VyOjpwYXJzZVZhbHVlKHN0eWxlRGVjbGFyYXRpb24sIENTU1Byb3BlcnR5VHJhbnNmb3JtLCBz
dHJpbmcsIHRydWUsIEhUTUxTdGFuZGFyZE1vZGUsIG51bGxwdHIpICE9IENTU1BhcnNlcjo6UGFy
c2VSZXN1bHQ6OkVycm9yKSB7Ci0gICAgICAgIC8vIENvbnZlcnQgdG8gVHJhbnNmb3JtT3BlcmF0
aW9ucy4gVGhpcyBjYW4gZmFpbCBpZiBhIHByb3BlcnR5Ci0gICAgICAgIC8vIHJlcXVpcmVzIHN0
eWxlIChpLmUuLCBwYXJhbSB1c2VzICdlbXMnIG9yICdleHMnKQotICAgICAgICBSZWZQdHI8Q1NT
VmFsdWU+IHZhbHVlID0gc3R5bGVEZWNsYXJhdGlvbi0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQ
cm9wZXJ0eVRyYW5zZm9ybSk7Ci0KLSAgICAgICAgLy8gQ2hlY2sgZm9yIGEgIm5vbmUiIG9yIGVt
cHR5IHRyYW5zZm9ybS4gSW4gdGhlc2UgY2FzZXMgd2UgY2FuIHVzZSB0aGUgZGVmYXVsdCBpZGVu
dGl0eSBtYXRyaXguCi0gICAgICAgIGlmICghdmFsdWUgfHwgKGlzPENTU1ByaW1pdGl2ZVZhbHVl
PigqdmFsdWUpICYmIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUpLmdldFZhbHVl
SUQoKSA9PSBDU1NWYWx1ZU5vbmUpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIFRy
YW5zZm9ybU9wZXJhdGlvbnMgb3BlcmF0aW9uczsKLSAgICAgICAgaWYgKCF0cmFuc2Zvcm1zRm9y
VmFsdWUoKnZhbHVlLCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhKCksIG9wZXJhdGlvbnMpKSB7
Ci0gICAgICAgICAgICBlYyA9IFNZTlRBWF9FUlI7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KLQotICAgICAgICAvLyBDb252ZXJ0IHRyYW5zZm9ybSBvcGVyYXRpb25zIHRvIGEgVHJh
bnNmb3JtYXRpb25NYXRyaXguIFRoaXMgY2FuIGZhaWwKLSAgICAgICAgLy8gaWYgYSBwYXJhbSBo
YXMgYSBwZXJjZW50YWdlICgnJScpCi0gICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHQ7Ci0g
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBvcGVyYXRpb25zLm9wZXJhdGlvbnMoKS5z
aXplKCk7ICsraSkgewotICAgICAgICAgICAgaWYgKG9wZXJhdGlvbnMub3BlcmF0aW9ucygpW2ld
LmdldCgpLT5hcHBseSh0LCBJbnRTaXplKDAsIDApKSkgewotICAgICAgICAgICAgICAgIGVjID0g
U1lOVEFYX0VSUjsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLQotICAgICAgICAvLyBzZXQgdGhlIG1hdHJpeAotICAgICAgICBtX21hdHJpeCA9IHQ7
Ci0gICAgfSBlbHNlIC8vIFRoZXJlIGlzIHNvbWV0aGluZyB0aGVyZSBidXQgcGFyc2luZyBmYWls
ZWQuCi0gICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICBpZiAoQ1NTUGFyc2VyOjpwYXJzZVZh
bHVlKHN0eWxlRGVjbGFyYXRpb24sIENTU1Byb3BlcnR5VHJhbnNmb3JtLCBzdHJpbmcsIHRydWUs
IEhUTUxTdGFuZGFyZE1vZGUsIG51bGxwdHIpID09IENTU1BhcnNlcjo6UGFyc2VSZXN1bHQ6OkVy
cm9yKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU1lOVEFYX0VSUiB9OworCisgICAgLy8g
Q29udmVydCB0byBUcmFuc2Zvcm1PcGVyYXRpb25zLiBUaGlzIGNhbiBmYWlsIGlmIGEgcHJvcGVy
dHkgcmVxdWlyZXMgc3R5bGUgKGkuZS4sIHBhcmFtIHVzZXMgJ2Vtcycgb3IgJ2V4cycpCisgICAg
YXV0byB2YWx1ZSA9IHN0eWxlRGVjbGFyYXRpb24tPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJv
cGVydHlUcmFuc2Zvcm0pOworCisgICAgLy8gQ2hlY2sgZm9yIGEgIm5vbmUiIG9yIGVtcHR5IHRy
YW5zZm9ybS4gSW4gdGhlc2UgY2FzZXMgd2UgY2FuIHVzZSB0aGUgZGVmYXVsdCBpZGVudGl0eSBt
YXRyaXguCisgICAgaWYgKCF2YWx1ZSB8fCAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YWx1ZSkg
JiYgZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YWx1ZSkudmFsdWVJRCgpID09IENTU1Zh
bHVlTm9uZSkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBUcmFuc2Zvcm1PcGVyYXRpb25z
IG9wZXJhdGlvbnM7CisgICAgaWYgKCF0cmFuc2Zvcm1zRm9yVmFsdWUoKnZhbHVlLCBDU1NUb0xl
bmd0aENvbnZlcnNpb25EYXRhKCksIG9wZXJhdGlvbnMpKQorICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgU1lOVEFYX0VSUiB9OworCisgICAgLy8gQ29udmVydCB0cmFuc2Zvcm0gb3BlcmF0aW9u
cyB0byBhIFRyYW5zZm9ybWF0aW9uTWF0cml4LiBUaGlzIGNhbiBmYWlsIGlmIGEgcGFyYW1ldGVy
IGhhcyBhIHBlcmNlbnRhZ2UgKCclJykuCisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbWF0cml4
OworICAgIGZvciAoYXV0byYgb3BlcmF0aW9uIDogb3BlcmF0aW9ucy5vcGVyYXRpb25zKCkpIHsK
KyAgICAgICAgaWYgKG9wZXJhdGlvbi0+YXBwbHkobWF0cml4LCBJbnRTaXplKDAsIDApKSkKKyAg
ICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTWU5UQVhfRVJSIH07CisgICAgfQorICAgIG1f
bWF0cml4ID0gbWF0cml4OworICAgIHJldHVybiB7IH07CiB9CiAKIC8vIFBlcmZvcm0gYSBjb25j
YXRlbmF0aW9uIG9mIHRoZSBtYXRyaWNlcyAodGhpcyAqIHNlY29uZE1hdHJpeCkKQEAgLTk0LDIx
ICs5NiwyMCBAQCBSZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiBXZWJLaXRDU1NNYXRyaXg6Om11bHRp
cGx5KFdlYktpdENTU01hdHJpeCogc2Vjb25kTWF0cml4KQogICAgIGlmICghc2Vjb25kTWF0cml4
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZlB0cjxXZWJLaXRDU1NNYXRyaXg+
IG1hdHJpeCA9IFdlYktpdENTU01hdHJpeDo6Y3JlYXRlKG1fbWF0cml4KTsKKyAgICBhdXRvIG1h
dHJpeCA9IGNyZWF0ZShtX21hdHJpeCk7CiAgICAgbWF0cml4LT5tX21hdHJpeC5tdWx0aXBseShz
ZWNvbmRNYXRyaXgtPm1fbWF0cml4KTsKLSAgICByZXR1cm4gbWF0cml4OworICAgIHJldHVybiBX
VEZNb3ZlKG1hdHJpeCk7CiB9CiAKLVJlZlB0cjxXZWJLaXRDU1NNYXRyaXg+IFdlYktpdENTU01h
dHJpeDo6aW52ZXJzZShFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKK0V4Y2VwdGlvbk9yPFJlZjxX
ZWJLaXRDU1NNYXRyaXg+PiBXZWJLaXRDU1NNYXRyaXg6OmludmVyc2UoKSBjb25zdAogewotICAg
IGlmIChhdXRvIGludmVyc2UgPSBtX21hdHJpeC5pbnZlcnNlKCkpCi0gICAgICAgIHJldHVybiBX
ZWJLaXRDU1NNYXRyaXg6OmNyZWF0ZShpbnZlcnNlLnZhbHVlKCkpOwotICAgIAotICAgIGVjID0g
Tk9UX1NVUFBPUlRFRF9FUlI7Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgYXV0byBpbnZlcnNl
ID0gbV9tYXRyaXguaW52ZXJzZSgpOworICAgIGlmICghaW52ZXJzZSkKKyAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IE5PVF9TVVBQT1JURURfRVJSIH07CisgICAgcmV0dXJuIGNyZWF0ZShpbnZl
cnNlLnZhbHVlKCkpOwogfQogCi1SZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiBXZWJLaXRDU1NNYXRy
aXg6OnRyYW5zbGF0ZShkb3VibGUgeCwgZG91YmxlIHksIGRvdWJsZSB6KSBjb25zdAorUmVmPFdl
YktpdENTU01hdHJpeD4gV2ViS2l0Q1NTTWF0cml4Ojp0cmFuc2xhdGUoZG91YmxlIHgsIGRvdWJs
ZSB5LCBkb3VibGUgeikgY29uc3QKIHsKICAgICBpZiAoc3RkOjppc25hbih4KSkKICAgICAgICAg
eCA9IDA7CkBAIC0xMTcsMTIgKzExOCwxMiBAQCBSZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiBXZWJL
aXRDU1NNYXRyaXg6OnRyYW5zbGF0ZShkb3VibGUgeCwgZG91YmxlIHksIGRvdWJsZSB6KQogICAg
IGlmIChzdGQ6OmlzbmFuKHopKQogICAgICAgICB6ID0gMDsKIAotICAgIFJlZlB0cjxXZWJLaXRD
U1NNYXRyaXg+IG1hdHJpeCA9IFdlYktpdENTU01hdHJpeDo6Y3JlYXRlKG1fbWF0cml4KTsKKyAg
ICBhdXRvIG1hdHJpeCA9IGNyZWF0ZShtX21hdHJpeCk7CiAgICAgbWF0cml4LT5tX21hdHJpeC50
cmFuc2xhdGUzZCh4LCB5LCB6KTsKICAgICByZXR1cm4gbWF0cml4OwogfQogCi1SZWZQdHI8V2Vi
S2l0Q1NTTWF0cml4PiBXZWJLaXRDU1NNYXRyaXg6OnNjYWxlKGRvdWJsZSBzY2FsZVgsIGRvdWJs
ZSBzY2FsZVksIGRvdWJsZSBzY2FsZVopIGNvbnN0CitSZWY8V2ViS2l0Q1NTTWF0cml4PiBXZWJL
aXRDU1NNYXRyaXg6OnNjYWxlKGRvdWJsZSBzY2FsZVgsIGRvdWJsZSBzY2FsZVksIGRvdWJsZSBz
Y2FsZVopIGNvbnN0CiB7CiAgICAgaWYgKHN0ZDo6aXNuYW4oc2NhbGVYKSkKICAgICAgICAgc2Nh
bGVYID0gMTsKQEAgLTEzMSwxMiArMTMyLDEyIEBAIFJlZlB0cjxXZWJLaXRDU1NNYXRyaXg+IFdl
YktpdENTU01hdHJpeDo6c2NhbGUoZG91YmxlIHNjYWxlWCwgZG91YmxlIHNjYWxlWSwgZG91CiAg
ICAgaWYgKHN0ZDo6aXNuYW4oc2NhbGVaKSkKICAgICAgICAgc2NhbGVaID0gMTsKIAotICAgIFJl
ZlB0cjxXZWJLaXRDU1NNYXRyaXg+IG1hdHJpeCA9IFdlYktpdENTU01hdHJpeDo6Y3JlYXRlKG1f
bWF0cml4KTsKKyAgICBhdXRvIG1hdHJpeCA9IGNyZWF0ZShtX21hdHJpeCk7CiAgICAgbWF0cml4
LT5tX21hdHJpeC5zY2FsZTNkKHNjYWxlWCwgc2NhbGVZLCBzY2FsZVopOwogICAgIHJldHVybiBt
YXRyaXg7CiB9CiAKLVJlZlB0cjxXZWJLaXRDU1NNYXRyaXg+IFdlYktpdENTU01hdHJpeDo6cm90
YXRlKGRvdWJsZSByb3RYLCBkb3VibGUgcm90WSwgZG91YmxlIHJvdFopIGNvbnN0CitSZWY8V2Vi
S2l0Q1NTTWF0cml4PiBXZWJLaXRDU1NNYXRyaXg6OnJvdGF0ZShkb3VibGUgcm90WCwgZG91Ymxl
IHJvdFksIGRvdWJsZSByb3RaKSBjb25zdAogewogICAgIGlmIChzdGQ6OmlzbmFuKHJvdFgpKQog
ICAgICAgICByb3RYID0gMDsKQEAgLTE1MiwxMiArMTUzLDEyIEBAIFJlZlB0cjxXZWJLaXRDU1NN
YXRyaXg+IFdlYktpdENTU01hdHJpeDo6cm90YXRlKGRvdWJsZSByb3RYLCBkb3VibGUgcm90WSwg
ZG91YmxlCiAgICAgaWYgKHN0ZDo6aXNuYW4ocm90WikpCiAgICAgICAgIHJvdFogPSAwOwogCi0g
ICAgUmVmUHRyPFdlYktpdENTU01hdHJpeD4gbWF0cml4ID0gV2ViS2l0Q1NTTWF0cml4OjpjcmVh
dGUobV9tYXRyaXgpOworICAgIGF1dG8gbWF0cml4ID0gY3JlYXRlKG1fbWF0cml4KTsKICAgICBt
YXRyaXgtPm1fbWF0cml4LnJvdGF0ZTNkKHJvdFgsIHJvdFksIHJvdFopOwogICAgIHJldHVybiBt
YXRyaXg7CiB9CiAKLVJlZlB0cjxXZWJLaXRDU1NNYXRyaXg+IFdlYktpdENTU01hdHJpeDo6cm90
YXRlQXhpc0FuZ2xlKGRvdWJsZSB4LCBkb3VibGUgeSwgZG91YmxlIHosIGRvdWJsZSBhbmdsZSkg
Y29uc3QKK1JlZjxXZWJLaXRDU1NNYXRyaXg+IFdlYktpdENTU01hdHJpeDo6cm90YXRlQXhpc0Fu
Z2xlKGRvdWJsZSB4LCBkb3VibGUgeSwgZG91YmxlIHosIGRvdWJsZSBhbmdsZSkgY29uc3QKIHsK
ICAgICBpZiAoc3RkOjppc25hbih4KSkKICAgICAgICAgeCA9IDA7CkBAIC0xNzAsMjcgKzE3MSwy
NyBAQCBSZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiBXZWJLaXRDU1NNYXRyaXg6OnJvdGF0ZUF4aXNB
bmdsZShkb3VibGUgeCwgZG91YmxlIHksIGRvdQogICAgIGlmICh4ID09IDAgJiYgeSA9PSAwICYm
IHogPT0gMCkKICAgICAgICAgeiA9IDE7CiAKLSAgICBSZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiBt
YXRyaXggPSBXZWJLaXRDU1NNYXRyaXg6OmNyZWF0ZShtX21hdHJpeCk7CisgICAgYXV0byBtYXRy
aXggPSBjcmVhdGUobV9tYXRyaXgpOwogICAgIG1hdHJpeC0+bV9tYXRyaXgucm90YXRlM2QoeCwg
eSwgeiwgYW5nbGUpOwogICAgIHJldHVybiBtYXRyaXg7CiB9CiAKLVJlZlB0cjxXZWJLaXRDU1NN
YXRyaXg+IFdlYktpdENTU01hdHJpeDo6c2tld1goZG91YmxlIGFuZ2xlKSBjb25zdAorUmVmPFdl
YktpdENTU01hdHJpeD4gV2ViS2l0Q1NTTWF0cml4Ojpza2V3WChkb3VibGUgYW5nbGUpIGNvbnN0
CiB7CiAgICAgaWYgKHN0ZDo6aXNuYW4oYW5nbGUpKQogICAgICAgICBhbmdsZSA9IDA7CiAKLSAg
ICBSZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiBtYXRyaXggPSBXZWJLaXRDU1NNYXRyaXg6OmNyZWF0
ZShtX21hdHJpeCk7CisgICAgYXV0byBtYXRyaXggPSBjcmVhdGUobV9tYXRyaXgpOwogICAgIG1h
dHJpeC0+bV9tYXRyaXguc2tld1goYW5nbGUpOwogICAgIHJldHVybiBtYXRyaXg7CiB9CiAKLVJl
ZlB0cjxXZWJLaXRDU1NNYXRyaXg+IFdlYktpdENTU01hdHJpeDo6c2tld1koZG91YmxlIGFuZ2xl
KSBjb25zdAorUmVmPFdlYktpdENTU01hdHJpeD4gV2ViS2l0Q1NTTWF0cml4Ojpza2V3WShkb3Vi
bGUgYW5nbGUpIGNvbnN0CiB7CiAgICAgaWYgKHN0ZDo6aXNuYW4oYW5nbGUpKQogICAgICAgICBh
bmdsZSA9IDA7CiAKLSAgICBSZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiBtYXRyaXggPSBXZWJLaXRD
U1NNYXRyaXg6OmNyZWF0ZShtX21hdHJpeCk7CisgICAgYXV0byBtYXRyaXggPSBjcmVhdGUobV9t
YXRyaXgpOwogICAgIG1hdHJpeC0+bV9tYXRyaXguc2tld1koYW5nbGUpOwogICAgIHJldHVybiBt
YXRyaXg7CiB9CkBAIC0xOTksMTMgKzIwMCwxMiBAQCBTdHJpbmcgV2ViS2l0Q1NTTWF0cml4Ojp0
b1N0cmluZygpIGNvbnN0CiB7CiAgICAgLy8gRklYTUUgLSBOZWVkIHRvIGVuc3VyZSB2YWxpZCBD
U1MgZmxvYXRpbmcgcG9pbnQgdmFsdWVzIChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA2NzQpCiAgICAgaWYgKG1fbWF0cml4LmlzQWZmaW5lKCkpCi0gICAgICAgIHJl
dHVybiBTdHJpbmc6OmZvcm1hdCgibWF0cml4KCVmLCAlZiwgJWYsICVmLCAlZiwgJWYpIiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9tYXRyaXguYSgpLCBtX21hdHJpeC5iKCks
IG1fbWF0cml4LmMoKSwgbV9tYXRyaXguZCgpLCBtX21hdHJpeC5lKCksIG1fbWF0cml4LmYoKSk7
CisgICAgICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgibWF0cml4KCVmLCAlZiwgJWYsICVmLCAl
ZiwgJWYpIiwgbV9tYXRyaXguYSgpLCBtX21hdHJpeC5iKCksIG1fbWF0cml4LmMoKSwgbV9tYXRy
aXguZCgpLCBtX21hdHJpeC5lKCksIG1fbWF0cml4LmYoKSk7CiAgICAgcmV0dXJuIFN0cmluZzo6
Zm9ybWF0KCJtYXRyaXgzZCglZiwgJWYsICVmLCAlZiwgJWYsICVmLCAlZiwgJWYsICVmLCAlZiwg
JWYsICVmLCAlZiwgJWYsICVmLCAlZikiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1f
bWF0cml4Lm0xMSgpLCBtX21hdHJpeC5tMTIoKSwgbV9tYXRyaXgubTEzKCksIG1fbWF0cml4Lm0x
NCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbWF0cml4Lm0yMSgpLCBtX21hdHJp
eC5tMjIoKSwgbV9tYXRyaXgubTIzKCksIG1fbWF0cml4Lm0yNCgpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1fbWF0cml4Lm0zMSgpLCBtX21hdHJpeC5tMzIoKSwgbV9tYXRyaXgubTMz
KCksIG1fbWF0cml4Lm0zNCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbWF0cml4
Lm00MSgpLCBtX21hdHJpeC5tNDIoKSwgbV9tYXRyaXgubTQzKCksIG1fbWF0cml4Lm00NCgpKTsK
KyAgICAgICAgbV9tYXRyaXgubTExKCksIG1fbWF0cml4Lm0xMigpLCBtX21hdHJpeC5tMTMoKSwg
bV9tYXRyaXgubTE0KCksCisgICAgICAgIG1fbWF0cml4Lm0yMSgpLCBtX21hdHJpeC5tMjIoKSwg
bV9tYXRyaXgubTIzKCksIG1fbWF0cml4Lm0yNCgpLAorICAgICAgICBtX21hdHJpeC5tMzEoKSwg
bV9tYXRyaXgubTMyKCksIG1fbWF0cml4Lm0zMygpLCBtX21hdHJpeC5tMzQoKSwKKyAgICAgICAg
bV9tYXRyaXgubTQxKCksIG1fbWF0cml4Lm00MigpLCBtX21hdHJpeC5tNDMoKSwgbV9tYXRyaXgu
bTQ0KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0
Q1NTTWF0cml4LmgKaW5kZXggODkyMWNlNDY2MDQyMDYxMWY3MWFiMDVjNDY4MjFjODI5NjVhOTk2
Yy4uODRjMDI3OWJmNTBlNzU1MjA4MzFlNDNiYjhhZjY4NmZiMjZmYTIxZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9XZWJLaXRDU1NNYXRyaXguaApAQCAtMjMsMjkgKzIzLDE4IEBACiAgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKLSNpZm5kZWYgV2ViS2l0Q1NTTWF0cml4X2gKLSNkZWZpbmUgV2ViS2l0Q1NTTWF0
cml4X2gKKyNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNsdWRl
ICJTY3JpcHRXcmFwcGFibGUuaCIKICNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgot
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXR5
cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7Ci0KIGNsYXNzIFdlYktpdENTU01hdHJpeCBmaW5hbCA6
IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBSZWZDb3VudGVkPFdlYktpdENTU01hdHJp
eD4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViS2l0Q1NTTWF0cml4PiBjcmVhdGUoY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG0pCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBXZWJLaXRDU1NNYXRyaXgobSkpOwotICAgIH0KLSAgICBzdGF0aWMgUmVmPFdlYktp
dENTU01hdHJpeD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgcywgRXhjZXB0aW9uQ29kZSYgZWMpCi0g
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJLaXRDU1NNYXRyaXgocywgZWMp
KTsKLSAgICB9CisgICAgc3RhdGljIFJlZjxXZWJLaXRDU1NNYXRyaXg+IGNyZWF0ZShjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYpOworICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8V2ViS2l0
Q1NTTWF0cml4Pj4gY3JlYXRlKGNvbnN0IFN0cmluZyYpOwogCiAgICAgfldlYktpdENTU01hdHJp
eCgpOwogCkBAIC05Nyw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE00Myhkb3VibGUg
ZikgeyBtX21hdHJpeC5zZXRNNDMoZik7IH0KICAgICB2b2lkIHNldE00NChkb3VibGUgZikgeyBt
X21hdHJpeC5zZXRNNDQoZik7IH0KIAotICAgIHZvaWQgc2V0TWF0cml4VmFsdWUoY29uc3QgU3Ry
aW5nJiwgRXhjZXB0aW9uQ29kZSYpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldE1hdHJpeFZh
bHVlKGNvbnN0IFN0cmluZyYpOwogCiAgICAgLy8gVGhlIGZvbGxvd2luZyBtYXRoIGZ1bmN0aW9u
IHJldHVybiBhIG5ldyBtYXRyaXggd2l0aCB0aGUKICAgICAvLyBzcGVjaWZpZWQgb3BlcmF0aW9u
IGFwcGxpZWQuIFRoZSB0aGlzIHZhbHVlIGlzIG5vdCBtb2RpZmllZC4KQEAgLTEwNiw1NyArOTUs
NTUgQEAgcHVibGljOgogICAgIFJlZlB0cjxXZWJLaXRDU1NNYXRyaXg+IG11bHRpcGx5KFdlYktp
dENTU01hdHJpeCogc2Vjb25kTWF0cml4KSBjb25zdDsKIAogICAgIC8vIFJldHVybiB0aGUgaW52
ZXJzZSBvZiB0aGlzIG1hdHJpeC4gVGhyb3cgYW4gZXhjZXB0aW9uIGlmIHRoZSBtYXRyaXggaXMg
bm90IGludmVydGlibGUKLSAgICBSZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiBpbnZlcnNlKEV4Y2Vw
dGlvbkNvZGUmKSBjb25zdDsKKyAgICBFeGNlcHRpb25PcjxSZWY8V2ViS2l0Q1NTTWF0cml4Pj4g
aW52ZXJzZSgpIGNvbnN0OwogCiAgICAgLy8gUmV0dXJuIHRoaXMgbWF0cml4IHRyYW5zbGF0ZWQg
YnkgdGhlIHBhc3NlZCB2YWx1ZXMuCiAgICAgLy8gUGFzc2luZyBhIE5hTiB3aWxsIHVzZSBhIHZh
bHVlIG9mIDAuIFRoaXMgYWxsb3dzIHRoZSAzRCBmb3JtIHRvIHVzZWQgZm9yIDJEIG9wZXJhdGlv
bnMKICAgICAvLyBPcGVyYXRpb24gaXMgcGVyZm9ybWVkIGFzIHRob3VnaCB0aGUgdGhpcyBtYXRy
aXggaXMgbXVsdGlwbGllZCBieSBhIG1hdHJpeCB3aXRoCiAgICAgLy8gdGhlIHRyYW5zbGF0aW9u
IHZhbHVlcyBvbiB0aGUgbGVmdCAocmVzdWx0ID0gdHJhbnNsYXRpb24oeCx5LHopICogdGhpcykK
LSAgICBSZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiB0cmFuc2xhdGUoZG91YmxlIHgsIGRvdWJsZSB5
LCBkb3VibGUgeikgY29uc3Q7CisgICAgUmVmPFdlYktpdENTU01hdHJpeD4gdHJhbnNsYXRlKGRv
dWJsZSB4LCBkb3VibGUgeSwgZG91YmxlIHopIGNvbnN0OwogCiAgICAgLy8gUmV0dXJucyB0aGlz
IG1hdHJpeCBzY2FsZWQgYnkgdGhlIHBhc3NlZCB2YWx1ZXMuCiAgICAgLy8gUGFzc2luZyBzY2Fs
ZVggb3Igc2NhbGVaIGFzIE5hTiB1c2VzIGEgdmFsdWUgb2YgMSwgYnV0IHBhc3Npbmcgc2NhbGVZ
IG9mIE5hTgogICAgIC8vIG1ha2VzIGl0IHRoZSBzYW1lIGFzIHNjYWxlWC4gVGhpcyBhbGxvd3Mg
dGhlIDNEIGZvcm0gdG8gdXNlZCBmb3IgMkQgb3BlcmF0aW9ucwogICAgIC8vIE9wZXJhdGlvbiBp
cyBwZXJmb3JtZWQgYXMgdGhvdWdoIHRoZSB0aGlzIG1hdHJpeCBpcyBtdWx0aXBsaWVkIGJ5IGEg
bWF0cml4IHdpdGgKICAgICAvLyB0aGUgc2NhbGUgdmFsdWVzIG9uIHRoZSBsZWZ0IChyZXN1bHQg
PSBzY2FsZSh4LHkseikgKiB0aGlzKQotICAgIFJlZlB0cjxXZWJLaXRDU1NNYXRyaXg+IHNjYWxl
KGRvdWJsZSBzY2FsZVgsIGRvdWJsZSBzY2FsZVksIGRvdWJsZSBzY2FsZVopIGNvbnN0OworICAg
IFJlZjxXZWJLaXRDU1NNYXRyaXg+IHNjYWxlKGRvdWJsZSBzY2FsZVgsIGRvdWJsZSBzY2FsZVks
IGRvdWJsZSBzY2FsZVopIGNvbnN0OwogCiAgICAgLy8gUmV0dXJucyB0aGlzIG1hdHJpeCByb3Rh
dGVkIGJ5IHRoZSBwYXNzZWQgdmFsdWVzLgogICAgIC8vIElmIHJvdFkgYW5kIHJvdFogYXJlIE5h
Tiwgcm90YXRlIGFib3V0IFogKHJvdFg9MCwgcm90YXRlWT0wLCByb3RhdGVaPXJvdFgpLgogICAg
IC8vIE90aGVyd2lzZSB1c2UgYSByb3RhdGlvbiB2YWx1ZSBvZiAwIGZvciBhbnkgcGFzc2VkIE5h
Ti4KICAgICAvLyBPcGVyYXRpb24gaXMgcGVyZm9ybWVkIGFzIHRob3VnaCB0aGUgdGhpcyBtYXRy
aXggaXMgbXVsdGlwbGllZCBieSBhIG1hdHJpeCB3aXRoCiAgICAgLy8gdGhlIHJvdGF0aW9uIHZh
bHVlcyBvbiB0aGUgbGVmdCAocmVzdWx0ID0gcm90YXRpb24oeCx5LHopICogdGhpcykKLSAgICBS
ZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiByb3RhdGUoZG91YmxlIHJvdFgsIGRvdWJsZSByb3RZLCBk
b3VibGUgcm90WikgY29uc3Q7CisgICAgUmVmPFdlYktpdENTU01hdHJpeD4gcm90YXRlKGRvdWJs
ZSByb3RYLCBkb3VibGUgcm90WSwgZG91YmxlIHJvdFopIGNvbnN0OwogCiAgICAgLy8gUmV0dXJu
cyB0aGlzIG1hdHJpeCByb3RhdGVkIGFib3V0IHRoZSBwYXNzZWQgYXhpcyBieSB0aGUgcGFzc2Vk
IGFuZ2xlLgogICAgIC8vIFBhc3NpbmcgYSBOYU4gd2lsbCB1c2UgYSB2YWx1ZSBvZiAwLiBJZiB0
aGUgYXhpcyBpcyAoMCwwLDApIHVzZSBhIHZhbHVlCiAgICAgLy8gT3BlcmF0aW9uIGlzIHBlcmZv
cm1lZCBhcyB0aG91Z2ggdGhlIHRoaXMgbWF0cml4IGlzIG11bHRpcGxpZWQgYnkgYSBtYXRyaXgg
d2l0aAogICAgIC8vIHRoZSByb3RhdGlvbiB2YWx1ZXMgb24gdGhlIGxlZnQgKHJlc3VsdCA9IHJv
dGF0aW9uKHgseSx6LGFuZ2xlKSAqIHRoaXMpCi0gICAgUmVmUHRyPFdlYktpdENTU01hdHJpeD4g
cm90YXRlQXhpc0FuZ2xlKGRvdWJsZSB4LCBkb3VibGUgeSwgZG91YmxlIHosIGRvdWJsZSBhbmds
ZSkgY29uc3Q7CisgICAgUmVmPFdlYktpdENTU01hdHJpeD4gcm90YXRlQXhpc0FuZ2xlKGRvdWJs
ZSB4LCBkb3VibGUgeSwgZG91YmxlIHosIGRvdWJsZSBhbmdsZSkgY29uc3Q7CiAKICAgICAvLyBS
ZXR1cm4gdGhpcyBtYXRyaXggc2tld2VkIGFsb25nIHRoZSBYIGF4aXMgYnkgdGhlIHBhc3NlZCB2
YWx1ZXMuCiAgICAgLy8gUGFzc2luZyBhIE5hTiB3aWxsIHVzZSBhIHZhbHVlIG9mIDAuCiAgICAg
Ly8gT3BlcmF0aW9uIGlzIHBlcmZvcm1lZCBhcyB0aG91Z2ggdGhlIHRoaXMgbWF0cml4IGlzIG11
bHRpcGxpZWQgYnkgYSBtYXRyaXggd2l0aAogICAgIC8vIHRoZSBza2V3IHZhbHVlcyBvbiB0aGUg
bGVmdCAocmVzdWx0ID0gc2tld1goYW5nbGUpICogdGhpcykKLSAgICBSZWZQdHI8V2ViS2l0Q1NT
TWF0cml4PiBza2V3WChkb3VibGUgYW5nbGUpIGNvbnN0OworICAgIFJlZjxXZWJLaXRDU1NNYXRy
aXg+IHNrZXdYKGRvdWJsZSBhbmdsZSkgY29uc3Q7CiAKICAgICAvLyBSZXR1cm4gdGhpcyBtYXRy
aXggc2tld2VkIGFsb25nIHRoZSBZIGF4aXMgYnkgdGhlIHBhc3NlZCB2YWx1ZXMuCiAgICAgLy8g
UGFzc2luZyBhIE5hTiB3aWxsIHVzZSBhIHZhbHVlIG9mIDAuCiAgICAgLy8gT3BlcmF0aW9uIGlz
IHBlcmZvcm1lZCBhcyB0aG91Z2ggdGhlIHRoaXMgbWF0cml4IGlzIG11bHRpcGxpZWQgYnkgYSBt
YXRyaXggd2l0aAogICAgIC8vIHRoZSBza2V3IHZhbHVlcyBvbiB0aGUgbGVmdCAocmVzdWx0ID0g
c2tld1koYW5nbGUpICogdGhpcykKLSAgICBSZWZQdHI8V2ViS2l0Q1NTTWF0cml4PiBza2V3WShk
b3VibGUgYW5nbGUpIGNvbnN0OworICAgIFJlZjxXZWJLaXRDU1NNYXRyaXg+IHNrZXdZKGRvdWJs
ZSBhbmdsZSkgY29uc3Q7CiAKICAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNm
b3JtKCkgY29uc3QgeyByZXR1cm4gbV9tYXRyaXg7IH0KIAogICAgIFN0cmluZyB0b1N0cmluZygp
IGNvbnN0OwogCi1wcm90ZWN0ZWQ6Citwcml2YXRlOgorICAgIFdlYktpdENTU01hdHJpeCgpID0g
ZGVmYXVsdDsKICAgICBXZWJLaXRDU1NNYXRyaXgoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
KTsKLSAgICBXZWJLaXRDU1NNYXRyaXgoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwog
CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbV9tYXRyaXg7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBXZWJLaXRDU1NNYXRyaXhfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
V2ViS2l0Q1NTTWF0cml4LmlkbAppbmRleCBiN2YxMmIyY2M2M2Y0OTVkYzVjODdjZTJjOWUyYTBk
NjUwNWZlN2YzLi5iOGQ1ZjMyNmE4NTNjYjMyNzI1MzE2OTliNGExYWY3MWE3Y2M1ZjVkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmlkbApAQCAtMjMsMTAgKzIzLDkgQEAKICAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAogICovCiAKLS8vIEludHJvZHVjZWQgaW4gRE9NIExldmVsID86CiBbCiAg
ICAgQ29uc3RydWN0b3Iob3B0aW9uYWwgRE9NU3RyaW5nIGNzc1ZhbHVlKSwKLSAgICBDb25zdHJ1
Y3Rvck1heVRocm93TGVnYWN5RXhjZXB0aW9uLAorICAgIENvbnN0cnVjdG9yTWF5VGhyb3dFeGNl
cHRpb24sCiAgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKIF0gaW50ZXJmYWNlIFdlYktp
dENTU01hdHJpeCB7CiAKQEAgLTU3LDEzICs1NiwxMyBAQAogICAgIGF0dHJpYnV0ZSB1bnJlc3Ry
aWN0ZWQgZG91YmxlIG00NDsKIAogICAgIC8vIEZJWE1FOiBVc2luZyAidW5kZWZpbmVkIiBhcyBk
ZWZhdWx0IHBhcmFtZXRlciB2YWx1ZSBpcyB3cm9uZy4KLSAgICBbTWF5VGhyb3dMZWdhY3lFeGNl
cHRpb25dIHZvaWQgc2V0TWF0cml4VmFsdWUob3B0aW9uYWwgRE9NU3RyaW5nIHN0cmluZyA9ICJ1
bmRlZmluZWQiKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0TWF0cml4VmFsdWUo
b3B0aW9uYWwgRE9NU3RyaW5nIHN0cmluZyA9ICJ1bmRlZmluZWQiKTsKICAgICAKICAgICAvLyBN
dWx0aXBseSB0aGlzIG1hdHJpeCBieSBzZWNvbmRNYXRyaXgsIG9uIHRoZSByaWdodCAocmVzdWx0
ID0gdGhpcyAqIHNlY29uZE1hdHJpeCkKICAgICBbSW1tdXRhYmxlXSBXZWJLaXRDU1NNYXRyaXgg
bXVsdGlwbHkob3B0aW9uYWwgV2ViS2l0Q1NTTWF0cml4PyBzZWNvbmRNYXRyaXggPSBudWxsKTsK
ICAgICAKICAgICAvLyBSZXR1cm4gdGhlIGludmVyc2Ugb2YgdGhpcyBtYXRyaXguIFRocm93IGFu
IGV4Y2VwdGlvbiBpZiB0aGUgbWF0cml4IGlzIG5vdCBpbnZlcnRpYmxlCi0gICAgW0ltbXV0YWJs
ZSwgTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIFdlYktpdENTU01hdHJpeCBpbnZlcnNlKCk7Cisg
ICAgW0ltbXV0YWJsZSwgTWF5VGhyb3dFeGNlcHRpb25dIFdlYktpdENTU01hdHJpeCBpbnZlcnNl
KCk7CiAgICAgCiAgICAgLy8gUmV0dXJuIHRoaXMgbWF0cml4IHRyYW5zbGF0ZWQgYnkgdGhlIHBh
c3NlZCB2YWx1ZXMuCiAgICAgLy8gUGFzc2luZyBhIE5hTiB3aWxsIHVzZSBhIHZhbHVlIG9mIDAu
IFRoaXMgYWxsb3dzIHRoZSAzRCBmb3JtIHRvIHVzZWQgZm9yIDJEIG9wZXJhdGlvbnMKQEAgLTEw
Myw0ICsxMDIsMyBAQAogCiAgICAgW05vdEVudW1lcmFibGVdIERPTVN0cmluZyB0b1N0cmluZygp
OwogfTsKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL21ha2Vwcm9wLnBsIGIvU291
cmNlL1dlYkNvcmUvY3NzL21ha2Vwcm9wLnBsCmluZGV4IDllOTZkOWJhYmIxMmE0MGZiODA5N2Yw
YTA2M2NiZjg4MTkyMzE3MzEuLjQyM2ZiYTZiNzA0MDAxZDUyOGM0NmU3MmUzMDdlOWViZWY2NjQ2
MDUgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9tYWtlcHJvcC5wbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvbWFrZXByb3AucGwKQEAgLTUxOCw3ICs1MTgsNyBAQCBzdWIgaGFuZGxl
Q3VycmVudENvbG9yVmFsdWUgewogICBteSAkcHJpbWl0aXZlVmFsdWUgPSBzaGlmdDsKICAgbXkg
JGluZGVudCA9IHNoaWZ0OwogCi0gIG15ICRjb2RlID0gJGluZGVudCAuICJpZiAoIiAuICRwcmlt
aXRpdmVWYWx1ZSAuICIuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlQ3VycmVudGNvbG9yKSB7XG4i
OworICBteSAkY29kZSA9ICRpbmRlbnQgLiAiaWYgKCIgLiAkcHJpbWl0aXZlVmFsdWUgLiAiLnZh
bHVlSUQoKSA9PSBDU1NWYWx1ZUN1cnJlbnRjb2xvcikge1xuIjsKICAgJGNvZGUgLj0gJGluZGVu
dCAuICIgICAgYXBwbHlJbmhlcml0IiAuICRuYW1lVG9JZHskbmFtZX0gLiAiKHN0eWxlUmVzb2x2
ZXIpO1xuIjsKICAgJGNvZGUgLj0gJGluZGVudCAuICIgICAgcmV0dXJuO1xuIjsKICAgJGNvZGUg
Lj0gJGluZGVudCAuICJ9XG4iOwpAQCAtNzk0LDcgKzc5NCw3IEBAIHN1YiBnZW5lcmF0ZVZhbHVl
U2V0dGVyIHsKICAgbXkgJHN0eWxlID0gInN0eWxlUmVzb2x2ZXIuc3R5bGUoKSI7CiAgIG15ICRk
aWRDYWxsU2V0VmFsdWUgPSAwOwogICBpZiAoZXhpc3RzICRwcm9wZXJ0aWVzV2l0aFN0eWxlQnVp
bGRlck9wdGlvbnN7JG5hbWV9eyJBdXRvRnVuY3Rpb25zIn0pIHsKLSAgICAkc2V0dGVyQ29udGVu
dCAuPSAkaW5kZW50IC4gIiAgICBpZiAoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVl
KS5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVBdXRvKSB7XG4iOworICAgICRzZXR0ZXJDb250ZW50
IC49ICRpbmRlbnQgLiAiICAgIGlmIChkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUp
LnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUF1dG8pIHtcbiI7CiAgICAgJHNldHRlckNvbnRlbnQgLj0g
JGluZGVudCAuICIgICAgICAgICIuIGdldEF1dG9TZXR0ZXIoJG5hbWUsICRzdHlsZSkgLiAiO1xu
IjsKICAgICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICAgICAgcmV0dXJuO1xuIjsK
ICAgICAkc2V0dGVyQ29udGVudCAuPSAkaW5kZW50IC4gIiAgICB9XG4iOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL3BhcnNlci9DU1NQYXJzZXIuY3BwCmluZGV4IDNlMDZmODUyMjczNDNmOWQ2OWI3OGEyNTcw
ODM5MTFjZTlmY2E4ZmEuLjI0MjZjYzMyYjdmOGRiNjc5NThjZDQxMjJkZGRlYjkyMWJlZjg2ZjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlci5jcHAKQEAgLTQyNDUsNyArNDI0
NSw3IEBAIHZvaWQgQ1NTUGFyc2VyOjpwYXJzZTRWYWx1ZXNGaWxsUG9zaXRpb24oQ1NTUGFyc2Vy
VmFsdWVMaXN0JiB2YWx1ZUxpc3QsIFJlZlB0cjxDCiB7CiAgICAgLy8gWyBsZWZ0IHwgcmlnaHQg
XSBbIDxwZXJjZW50YWdlXSB8IDxsZW5ndGg+IF0gJiYgWyB0b3AgfCBib3R0b20gXSBbIDxwZXJj
ZW50YWdlPiB8IDxsZW5ndGg+IF0KICAgICAvLyBJbiB0aGUgY2FzZSBvZiA0IHZhbHVlcyA8cG9z
aXRpb24+IHJlcXVpcmVzIHRoZSBzZWNvbmQgdmFsdWUgdG8gYmUgYSBsZW5ndGggb3IgYSBwZXJj
ZW50YWdlLgotICAgIGlmIChpc0ZpbGxQb3NpdGlvbktleXdvcmQocGFyc2VkVmFsdWUyLT5nZXRW
YWx1ZUlEKCkpKQorICAgIGlmIChpc0ZpbGxQb3NpdGlvbktleXdvcmQocGFyc2VkVmFsdWUyLT52
YWx1ZUlEKCkpKQogICAgICAgICByZXR1cm47CiAKICAgICB1bnNpZ25lZCBjdW11bGF0aXZlRmxh
Z3MgPSAwOwpAQCAtNDI1NCw4ICs0MjU0LDggQEAgdm9pZCBDU1NQYXJzZXI6OnBhcnNlNFZhbHVl
c0ZpbGxQb3NpdGlvbihDU1NQYXJzZXJWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgUmVmUHRyPEMKICAg
ICBpZiAoIXZhbHVlMykKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ1NTVmFsdWVJRCBpZGVudDEg
PSBwYXJzZWRWYWx1ZTEtPmdldFZhbHVlSUQoKTsKLSAgICBDU1NWYWx1ZUlEIGlkZW50MyA9IHZh
bHVlMy0+Z2V0VmFsdWVJRCgpOworICAgIENTU1ZhbHVlSUQgaWRlbnQxID0gcGFyc2VkVmFsdWUx
LT52YWx1ZUlEKCk7CisgICAgQ1NTVmFsdWVJRCBpZGVudDMgPSB2YWx1ZTMtPnZhbHVlSUQoKTsK
IAogICAgIGlmIChpZGVudDEgPT0gQ1NTVmFsdWVDZW50ZXIpCiAgICAgICAgIHJldHVybjsKQEAg
LTQyNzgsNyArNDI3OCw3IEBAIHZvaWQgQ1NTUGFyc2VyOjpwYXJzZTRWYWx1ZXNGaWxsUG9zaXRp
b24oQ1NTUGFyc2VyVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIFJlZlB0cjxDCiAgICAgICAgIHJldHVy
bjsKIAogICAgIC8vIDR0aCB2YWx1ZSBtdXN0IGJlIGEgbGVuZ3RoIG9yIGEgcGVyY2VudGFnZS4K
LSAgICBpZiAoaXNGaWxsUG9zaXRpb25LZXl3b3JkKHZhbHVlNC0+Z2V0VmFsdWVJRCgpKSkKKyAg
ICBpZiAoaXNGaWxsUG9zaXRpb25LZXl3b3JkKHZhbHVlNC0+dmFsdWVJRCgpKSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgdmFsdWUxID0gY3JlYXRlUHJpbWl0aXZlVmFsdWVQYWlyKFdURk1vdmUo
cGFyc2VkVmFsdWUxKSwgV1RGTW92ZShwYXJzZWRWYWx1ZTIpKTsKQEAgLTQzMDMsOSArNDMwMyw5
IEBAIHZvaWQgQ1NTUGFyc2VyOjpwYXJzZTNWYWx1ZXNGaWxsUG9zaXRpb24oQ1NTUGFyc2VyVmFs
dWVMaXN0JiB2YWx1ZUxpc3QsIFJlZlB0cjxDCiAgICAgdmFsdWVMaXN0Lm5leHQoKTsKIAogICAg
IGJvb2wgc3dhcE5lZWRlZCA9IGZhbHNlOwotICAgIENTU1ZhbHVlSUQgaWRlbnQxID0gcGFyc2Vk
VmFsdWUxLT5nZXRWYWx1ZUlEKCk7Ci0gICAgQ1NTVmFsdWVJRCBpZGVudDIgPSBwYXJzZWRWYWx1
ZTItPmdldFZhbHVlSUQoKTsKLSAgICBDU1NWYWx1ZUlEIGlkZW50MyA9IHZhbHVlMy0+Z2V0VmFs
dWVJRCgpOworICAgIENTU1ZhbHVlSUQgaWRlbnQxID0gcGFyc2VkVmFsdWUxLT52YWx1ZUlEKCk7
CisgICAgQ1NTVmFsdWVJRCBpZGVudDIgPSBwYXJzZWRWYWx1ZTItPnZhbHVlSUQoKTsKKyAgICBD
U1NWYWx1ZUlEIGlkZW50MyA9IHZhbHVlMy0+dmFsdWVJRCgpOwogCiAgICAgQ1NTVmFsdWVJRCBm
aXJzdFBvc2l0aW9uS2V5d29yZDsKICAgICBDU1NWYWx1ZUlEIHNlY29uZFBvc2l0aW9uS2V5d29y
ZDsKQEAgLTQzNzUsOCArNDM3NSw4IEBAIHZvaWQgQ1NTUGFyc2VyOjpwYXJzZTNWYWx1ZXNGaWxs
UG9zaXRpb24oQ1NTUGFyc2VyVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIFJlZlB0cjxDCiAjaWZuZGVm
IE5ERUJVRwogICAgIENTU1ByaW1pdGl2ZVZhbHVlJiBmaXJzdCA9ICp2YWx1ZTE7CiAgICAgQ1NT
UHJpbWl0aXZlVmFsdWUmIHNlY29uZCA9ICp2YWx1ZTI7Ci0gICAgaWRlbnQxID0gZmlyc3QuZ2V0
UGFpclZhbHVlKCktPmZpcnN0KCktPmdldFZhbHVlSUQoKTsKLSAgICBpZGVudDIgPSBzZWNvbmQu
Z2V0UGFpclZhbHVlKCktPmZpcnN0KCktPmdldFZhbHVlSUQoKTsKKyAgICBpZGVudDEgPSBmaXJz
dC5wYWlyVmFsdWUoKS0+Zmlyc3QoKS0+dmFsdWVJRCgpOworICAgIGlkZW50MiA9IHNlY29uZC5w
YWlyVmFsdWUoKS0+Zmlyc3QoKS0+dmFsdWVJRCgpOwogICAgIEFTU0VSVChpZGVudDEgPT0gQ1NT
VmFsdWVMZWZ0IHx8IGlkZW50MSA9PSBDU1NWYWx1ZVJpZ2h0KTsKICAgICBBU1NFUlQoaWRlbnQy
ID09IENTU1ZhbHVlQm90dG9tIHx8IGlkZW50MiA9PSBDU1NWYWx1ZVRvcCk7CiAjZW5kaWYKQEAg
LTQ0NDEsNyArNDQ0MSw3IEBAIHZvaWQgQ1NTUGFyc2VyOjpwYXJzZUZpbGxQb3NpdGlvbihDU1NQ
YXJzZXJWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgUmVmUHRyPENTU1ByaW1pCiAgICAgYXV0byBwYXJz
ZWRWYWx1ZTIgPSB2YWx1ZTIucmVsZWFzZU5vbk51bGwoKTsKIAogICAgIC8vIFBlciBDU1MzIHN5
bnRheCwgPHBvc2l0aW9uPiBjYW4ndCBoYXZlICdjZW50ZXInIGFzIGl0cyBzZWNvbmQga2V5d29y
ZCBhcyB3ZSBoYXZlIG1vcmUgYXJndW1lbnRzIHRvIGZvbGxvdy4KLSAgICBpZiAocGFyc2VkVmFs
dWUyLT5nZXRWYWx1ZUlEKCkgPT0gQ1NTVmFsdWVDZW50ZXIpCisgICAgaWYgKHBhcnNlZFZhbHVl
Mi0+dmFsdWVJRCgpID09IENTU1ZhbHVlQ2VudGVyKQogICAgICAgICByZXR1cm47CiAKICAgICBp
ZiAobnVtYmVyT2ZWYWx1ZXMgPT0gMykKQEAgLTQ1MzIsNyArNDUzMiw3IEBAIHZvaWQgQ1NTUGFy
c2VyOjpwYXJzZUZpbGxSZXBlYXQoUmVmUHRyPENTU1ZhbHVlPiYgdmFsdWUxLCBSZWZQdHI8Q1NT
VmFsdWU+JiB2YWx1CiAKICAgICAvLyBJZiBvbmx5IG9uZSB2YWx1ZSB3YXMgc3BlY2lmaWVkLCB2
YWx1ZTIgaXMgdGhlIHNhbWUgYXMgdmFsdWUxLgogICAgIG1faW1wbGljaXRTaG9ydGhhbmQgPSB0
cnVlOwotICAgIHZhbHVlMiA9IENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRp
ZmllclZhbHVlKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUxKS5nZXRWYWx1ZUlE
KCkpOworICAgIHZhbHVlMiA9IENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRp
ZmllclZhbHVlKGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdmFsdWUxKS52YWx1ZUlEKCkp
OwogfQogCiBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VGaWxsU2l6
ZShDU1NQcm9wZXJ0eUlEIHByb3BJZCwgYm9vbCYgYWxsb3dDb21tYSkKQEAgLTUyNzQsMTIgKzUy
NzQsMTIgQEAgUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlR3JpZFBvc2l0aW9uKCkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBOZWdhdGl2ZSBudW1iZXJzIGFyZSBu
b3QgYWxsb3dlZCBmb3Igc3BhbiAoYnV0IGFyZSBmb3IgPGludGVnZXI+KS4KLSAgICBpZiAoaGFz
U2VlblNwYW5LZXl3b3JkICYmIG51bWVyaWNWYWx1ZSAmJiBudW1lcmljVmFsdWUtPmdldEludFZh
bHVlKCkgPCAwKQorICAgIGlmIChoYXNTZWVuU3BhbktleXdvcmQgJiYgbnVtZXJpY1ZhbHVlICYm
IG51bWVyaWNWYWx1ZS0+aW50VmFsdWUoKSA8IDApCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgLy8gRm9yIHRoZSA8Y3VzdG9tLWlkZW50PiBjYXNlLgogICAgIGlmIChncmlkTGluZU5h
bWUgJiYgIW51bWVyaWNWYWx1ZSAmJiAhaGFzU2VlblNwYW5LZXl3b3JkKQotICAgICAgICByZXR1
cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZShncmlkTGluZU5hbWUtPmdl
dFN0cmluZ1ZhbHVlKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HKTsKKyAgICAgICAg
cmV0dXJuIENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlVmFsdWUoZ3JpZExpbmVOYW1l
LT5zdHJpbmdWYWx1ZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORyk7CiAKICAgICBh
dXRvIHZhbHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAgICBp
ZiAoaGFzU2VlblNwYW5LZXl3b3JkKQpAQCAtNTQzNyw3ICs1NDM3LDcgQEAgYm9vbCBDU1NQYXJz
ZXI6OnBhcnNlR3JpZFRlbXBsYXRlUm93c0FuZEFyZWFzQW5kQ29sdW1ucyhib29sIGltcG9ydGFu
dCkKICAgICAgICAgaWYgKCF0ZW1wbGF0ZUNvbHVtbnMpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIC8vIFRoZSB0ZW1wbGF0ZS1jb2x1bW5zIDx0cmFjay1saXN0PiBjYW4ndCBi
ZSAnbm9uZScuCi0gICAgICAgIGlmICh0ZW1wbGF0ZUNvbHVtbnMtPmlzUHJpbWl0aXZlVmFsdWUo
KSAmJiBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnRlbXBsYXRlQ29sdW1ucykuZ2V0VmFs
dWVJRCgpID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAgaWYgKHRlbXBsYXRlQ29sdW1ucy0+aXNQ
cmltaXRpdmVWYWx1ZSgpICYmIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdGVtcGxhdGVD
b2x1bW5zKS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVOb25lKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KIApAQCAtNTcwMSw3ICs1NzAxLDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNl
R3JpZExpbmVOYW1lcyhDU1NQYXJzZXJWYWx1ZUxpc3QmIGlucHV0TGlzdCwgQ1NTVmFsdWVMaXN0
JgogCiBzdGF0aWMgYm9vbCBpc0dyaWRUcmFja0ZpeGVkU2l6ZWQoY29uc3QgQ1NTUHJpbWl0aXZl
VmFsdWUmIHZhbHVlKQogewotICAgIENTU1ZhbHVlSUQgdmFsdWVJRCA9IHZhbHVlLmdldFZhbHVl
SUQoKTsKKyAgICBDU1NWYWx1ZUlEIHZhbHVlSUQgPSB2YWx1ZS52YWx1ZUlEKCk7CiAgICAgaWYg
KHZhbHVlSUQgPT0gQ1NTVmFsdWVXZWJraXRNaW5Db250ZW50IHx8IHZhbHVlSUQgPT0gQ1NTVmFs
dWVXZWJraXRNYXhDb250ZW50IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVlLmlz
RmxleCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTkxNzgsMTAgKzkxNzgsMTAgQEAg
Ym9vbCBDU1NQYXJzZXI6OnBhcnNlUmFkaWFsR3JhZGllbnQoQ1NTUGFyc2VyVmFsdWVMaXN0JiB2
YWx1ZUxpc3QsIFJlZlB0cjxDU1NWYWwKICAgICBpZiAoc2l6ZVZhbHVlICYmIGhvcml6b250YWxT
aXplKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgLy8gQ2lyY2xlcyBtdXN0IGhhdmUgMCBv
ciAxIGxlbmd0aHMuCi0gICAgaWYgKHNoYXBlVmFsdWUgJiYgc2hhcGVWYWx1ZS0+Z2V0VmFsdWVJ
RCgpID09IENTU1ZhbHVlQ2lyY2xlICYmIHZlcnRpY2FsU2l6ZSkKKyAgICBpZiAoc2hhcGVWYWx1
ZSAmJiBzaGFwZVZhbHVlLT52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVDaXJjbGUgJiYgdmVydGljYWxT
aXplKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgLy8gRWxsaXBzZXMgbXVzdCBoYXZlIDAg
b3IgMiBsZW5ndGgvcGVyY2VudGFnZXMuCi0gICAgaWYgKHNoYXBlVmFsdWUgJiYgc2hhcGVWYWx1
ZS0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlRWxsaXBzZSAmJiBob3Jpem9udGFsU2l6ZSAmJiAh
dmVydGljYWxTaXplKQorICAgIGlmIChzaGFwZVZhbHVlICYmIHNoYXBlVmFsdWUtPnZhbHVlSUQo
KSA9PSBDU1NWYWx1ZUVsbGlwc2UgJiYgaG9yaXpvbnRhbFNpemUgJiYgIXZlcnRpY2FsU2l6ZSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIC8vIElmIHRoZXJlJ3Mgb25seSBvbmUgc2l6ZSwg
aXQgbXVzdCBiZSBhIGxlbmd0aC4KICAgICBpZiAoIXZlcnRpY2FsU2l6ZSAmJiBob3Jpem9udGFs
U2l6ZSAmJiBob3Jpem9udGFsU2l6ZS0+aXNQZXJjZW50YWdlKCkpCkBAIC05OTU3LDcgKzk5NTcs
NyBAQCBSZWZQdHI8V2ViS2l0Q1NTRmlsdGVyVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VCdWlsdGlu
RmlsdGVyQXJndW1lbnRzKENTU1BhcnNlclZhbAogICAgICAgICAgICAgaWYgKGZpbHRlclR5cGUg
IT0gV2ViS2l0Q1NTRmlsdGVyVmFsdWU6OlNhdHVyYXRlRmlsdGVyT3BlcmF0aW9uCiAgICAgICAg
ICAgICAgICAgJiYgZmlsdGVyVHlwZSAhPSBXZWJLaXRDU1NGaWx0ZXJWYWx1ZTo6Q29udHJhc3RG
aWx0ZXJPcGVyYXRpb24pIHsKICAgICAgICAgICAgICAgICBkb3VibGUgbWF4QWxsb3dlZCA9IHBy
aW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19Q
RVJDRU5UQUdFID8gMTAwLjAgOiAxLjA7Ci0gICAgICAgICAgICAgICAgaWYgKHByaW1pdGl2ZVZh
bHVlLT5nZXREb3VibGVWYWx1ZSgpID4gbWF4QWxsb3dlZCkKKyAgICAgICAgICAgICAgICBpZiAo
cHJpbWl0aXZlVmFsdWUtPmRvdWJsZVZhbHVlKCkgPiBtYXhBbGxvd2VkKQogICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJWYWx1ZXMuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL3BhcnNlci9DU1NQYXJzZXJWYWx1ZXMuY3BwCmluZGV4IGQzYTYxYjRmYzU2ZDEyYTBm
ZTQ3YzQzMDRkMTM1ZjRlYTA2NjdiODUuLjQ3N2I2ZjY4MTI2YjE4MjViZTNhYjRlYjA2ZDQ4MDI1
OTI5MzIwNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2Vy
VmFsdWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlclZhbHVl
cy5jcHAKQEAgLTk0LDExICs5NCw4IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyVmFsdWU6
OmNyZWF0ZUNTU1ZhbHVlKCkKICAgICBpZiAoaWQpCiAgICAgICAgIHJldHVybiBDU1NQcmltaXRp
dmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihpZCk7CiAgICAgCi0gICAgaWYgKHVuaXQgPT0gQ1NT
UGFyc2VyVmFsdWU6Ok9wZXJhdG9yKSB7Ci0gICAgICAgIGF1dG8gcHJpbWl0aXZlVmFsdWUgPSBD
U1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlUGFyc2VyT3BlcmF0b3IoaVZhbHVlKTsKLSAgICAgICAg
cHJpbWl0aXZlVmFsdWUtPnNldFByaW1pdGl2ZVR5cGUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19Q
QVJTRVJfT1BFUkFUT1IpOwotICAgICAgICByZXR1cm4gV1RGTW92ZShwcmltaXRpdmVWYWx1ZSk7
Ci0gICAgfQorICAgIGlmICh1bml0ID09IENTU1BhcnNlclZhbHVlOjpPcGVyYXRvcikKKyAgICAg
ICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGVQYXJzZXJPcGVyYXRvcihpVmFsdWUp
OwogICAgIGlmICh1bml0ID09IENTU1BhcnNlclZhbHVlOjpGdW5jdGlvbikKICAgICAgICAgcmV0
dXJuIENTU0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZShmdW5jdGlvbik7CiAgICAgaWYgKHVuaXQgPT0g
Q1NTUGFyc2VyVmFsdWU6OlZhcmlhYmxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2Vy
L0NTU1Byb3BlcnR5UGFyc2VyLmNwcAppbmRleCAyMDZiODY5ZDI5OTNmNGJmZjRmNmE2MTQxMDIw
MDI0ZjQyMTU5MTMzLi40NTg0NzI0YjA5NjE4MTFlNWE4YzIzMTMwZDJiYzcwNTNhZThhZWUxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcApA
QCAtODgzLDcgKzg4Myw3IEBAIHN0YXRpYyBDU1NWYWx1ZSogY29uc3VtZUNvdW50ZXIoQ1NTUGFy
c2VyVG9rZW5SYW5nZSYgcmFuZ2UsIGludCBkZWZhdWx0VmFsdWUpCiAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICAgICAgaW50IGkgPSBkZWZhdWx0VmFsdWU7CiAgICAgICAgIGlmIChD
U1NQcmltaXRpdmVWYWx1ZSogY291bnRlclZhbHVlID0gY29uc3VtZUludGVnZXIocmFuZ2UpKQot
ICAgICAgICAgICAgaSA9IGNsYW1wVG88aW50Pihjb3VudGVyVmFsdWUtPmdldERvdWJsZVZhbHVl
KCkpOworICAgICAgICAgICAgaSA9IGNvdW50ZXJWYWx1ZS0+aW50VmFsdWUoKSk7CiAgICAgICAg
IGxpc3QtPmFwcGVuZCgqQ1NTVmFsdWVQYWlyOjpjcmVhdGUoY291bnRlck5hbWUsCiAgICAgICAg
ICAgICBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKGksIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0
VHlwZTo6SW50ZWdlciksCiAgICAgICAgICAgICBDU1NWYWx1ZVBhaXI6OkRyb3BJZGVudGljYWxW
YWx1ZXMpKTsKQEAgLTkzNiw3ICs5MzYsNyBAQCBzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVTbmFw
SGVpZ2h0KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzcwogICAg
IGxpc3QtPmFwcGVuZCgqdW5pdCk7CiAKICAgICBpZiAoQ1NTUHJpbWl0aXZlVmFsdWUqIHBvc2l0
aW9uID0gY29uc3VtZVBvc2l0aXZlSW50ZWdlcihyYW5nZSkpIHsKLSAgICAgICAgaWYgKHBvc2l0
aW9uLT5nZXRJbnRWYWx1ZSgpID4gMTAwKQorICAgICAgICBpZiAocG9zaXRpb24tPmludFZhbHVl
KCkgPiAxMDApCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgbGlzdC0+YXBw
ZW5kKCpwb3NpdGlvbik7CiAgICAgfQpAQCAtMTEzMSw3ICsxMTMxLDcgQEAgc3RhdGljIENTU1Zh
bHVlKiBjb25zdW1lQ29sdW1uV2lkdGgoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UpCiAgICAg
Ly8gQWx3YXlzIHBhcnNlIGxlbmd0aHMgaW4gc3RyaWN0IG1vZGUgaGVyZSwgc2luY2UgaXQgd291
bGQgYmUgYW1iaWd1b3VzIG90aGVyd2lzZSB3aGVuIHVzZWQgaW4KICAgICAvLyB0aGUgJ2NvbHVt
bnMnIHNob3J0aGFuZCBwcm9wZXJ0eS4KICAgICBDU1NQcmltaXRpdmVWYWx1ZSogY29sdW1uV2lk
dGggPSBjb25zdW1lTGVuZ3RoKHJhbmdlLCBIVE1MU3RhbmRhcmRNb2RlLCBWYWx1ZVJhbmdlTm9u
TmVnYXRpdmUpOwotICAgIGlmICghY29sdW1uV2lkdGggfHwgKCFjb2x1bW5XaWR0aC0+aXNDYWxj
dWxhdGVkKCkgJiYgY29sdW1uV2lkdGgtPmdldERvdWJsZVZhbHVlKCkgPT0gMCkpCisgICAgaWYg
KCFjb2x1bW5XaWR0aCB8fCAoIWNvbHVtbldpZHRoLT5pc0NhbGN1bGF0ZWQoKSAmJiBjb2x1bW5X
aWR0aC0+ZG91YmxlVmFsdWUoKSA9PSAwKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
cmV0dXJuIGNvbHVtbldpZHRoOwogfQpAQCAtMTE2OCw4ICsxMTY4LDggQEAgc3RhdGljIENTU1Zh
bHVlKiBjb25zdW1lWm9vbShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgY29uc3QgQ1NTUGFy
c2VyQ29udGV4dCYKICAgICB9CiAgICAgaWYgKHpvb20gJiYgY29udGV4dC51c2VDb3VudGVyKCkK
ICAgICAgICAgJiYgISh0b2tlbi5pZCgpID09IENTU1ZhbHVlTm9ybWFsCi0gICAgICAgICAgICB8
fCAodG9rZW4udHlwZSgpID09IE51bWJlclRva2VuICYmIHpvb20tPmdldERvdWJsZVZhbHVlKCkg
PT0gMSkKLSAgICAgICAgICAgIHx8ICh0b2tlbi50eXBlKCkgPT0gUGVyY2VudGFnZVRva2VuICYm
IHpvb20tPmdldERvdWJsZVZhbHVlKCkgPT0gMTAwKSkpCisgICAgICAgICAgICB8fCAodG9rZW4u
dHlwZSgpID09IE51bWJlclRva2VuICYmIHpvb20tPmRvdWJsZVZhbHVlKCkgPT0gMSkKKyAgICAg
ICAgICAgIHx8ICh0b2tlbi50eXBlKCkgPT0gUGVyY2VudGFnZVRva2VuICYmIHpvb20tPmRvdWJs
ZVZhbHVlKCkgPT0gMTAwKSkpCiAgICAgICAgIGNvbnRleHQudXNlQ291bnRlcigpLT5jb3VudChV
c2VDb3VudGVyOjpDU1Nab29tTm90RXF1YWxUb09uZSk7CiAgICAgcmV0dXJuIHpvb207CiB9CkBA
IC0xMjQ5LDcgKzEyNDksNyBAQCBzdGF0aWMgQ1NTVmFsdWUqIGNvbnN1bWVTdGVwcyhDU1NQYXJz
ZXJUb2tlblJhbmdlJiByYW5nZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICByYW5n
ZSA9IHJhbmdlQ29weTsKLSAgICByZXR1cm4gQ1NTU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlOjpj
cmVhdGUoc3RlcHMtPmdldEludFZhbHVlKCksIHBvc2l0aW9uKTsKKyAgICByZXR1cm4gQ1NTU3Rl
cHNUaW1pbmdGdW5jdGlvblZhbHVlOjpjcmVhdGUoc3RlcHMtPmludFZhbHVlKCksIHBvc2l0aW9u
KTsKIH0KIAogc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lQ3ViaWNCZXppZXIoQ1NTUGFyc2VyVG9r
ZW5SYW5nZSYgcmFuZ2UpCkBAIC0xMzI4LDcgKzEzMjgsNyBAQCBzdGF0aWMgYm9vbCBpc1ZhbGlk
QW5pbWF0aW9uUHJvcGVydHlMaXN0KENTU1Byb3BlcnR5SUQgcHJvcGVydHksIGNvbnN0IENTU1Zh
bHVlTAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBmb3IgKGF1dG8mIHZhbHVlIDogdmFsdWVM
aXN0KSB7CiAgICAgICAgIGlmICh2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpICYmIHRvQ1NTUHJp
bWl0aXZlVmFsdWUoKnZhbHVlKS5pc1ZhbHVlSUQoKQotICAgICAgICAgICAgJiYgdG9DU1NQcmlt
aXRpdmVWYWx1ZSgqdmFsdWUpLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZU5vbmUpCisgICAgICAg
ICAgICAmJiB0b0NTU1ByaW1pdGl2ZVZhbHVlKCp2YWx1ZSkudmFsdWVJRCgpID09IENTU1ZhbHVl
Tm9uZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7
CkBAIC0xNDI4LDcgKzE0MjgsNyBAQCBzdGF0aWMgQ1NTU2hhZG93VmFsdWUqIHBhcnNlU2luZ2xl
U2hhZG93KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNbwogICAgIENTU1By
aW1pdGl2ZVZhbHVlKiBzcHJlYWREaXN0YW5jZSA9IG51bGxwdHI7CiAgICAgaWYgKGJsdXJSYWRp
dXMpIHsKICAgICAgICAgLy8gQmx1ciByYWRpdXMgbXVzdCBiZSBub24tbmVnYXRpdmUuCi0gICAg
ICAgIGlmIChibHVyUmFkaXVzLT5nZXREb3VibGVWYWx1ZSgpIDwgMCkKKyAgICAgICAgaWYgKGJs
dXJSYWRpdXMtPmRvdWJsZVZhbHVlKCkgPCAwKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgICAgIGlmIChhbGxvd1NwcmVhZCkKICAgICAgICAgICAgIHNwcmVhZERpc3RhbmNlID0g
Y29uc3VtZUxlbmd0aChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFsbCk7CkBAIC0x
NDk2LDcgKzE0OTYsNyBAQCBzdGF0aWMgQ1NTRnVuY3Rpb25WYWx1ZSogY29uc3VtZUZpbHRlckZ1
bmN0aW9uKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBjb25zdAogICAgICAgICAgICAgaWYg
KHBhcnNlZFZhbHVlICYmIGZpbHRlclR5cGUgIT0gQ1NTVmFsdWVTYXR1cmF0ZSAmJiBmaWx0ZXJU
eXBlICE9IENTU1ZhbHVlQ29udHJhc3QpIHsKICAgICAgICAgICAgICAgICBib29sIGlzUGVyY2Vu
dGFnZSA9IHRvQ1NTUHJpbWl0aXZlVmFsdWUocGFyc2VkVmFsdWUpLT5pc1BlcmNlbnRhZ2UoKTsK
ICAgICAgICAgICAgICAgICBkb3VibGUgbWF4QWxsb3dlZCA9IGlzUGVyY2VudGFnZSA/IDEwMC4w
IDogMS4wOwotICAgICAgICAgICAgICAgIGlmICh0b0NTU1ByaW1pdGl2ZVZhbHVlKHBhcnNlZFZh
bHVlKS0+Z2V0RG91YmxlVmFsdWUoKSA+IG1heEFsbG93ZWQpIHsKKyAgICAgICAgICAgICAgICBp
ZiAodG9DU1NQcmltaXRpdmVWYWx1ZShwYXJzZWRWYWx1ZSktPmRvdWJsZVZhbHVlKCkgPiBtYXhB
bGxvd2VkKSB7CiAgICAgICAgICAgICAgICAgICAgIHBhcnNlZFZhbHVlID0gQ1NTUHJpbWl0aXZl
VmFsdWU6OmNyZWF0ZSgKICAgICAgICAgICAgICAgICAgICAgICAgIG1heEFsbG93ZWQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICBpc1BlcmNlbnRhZ2UgPyBDU1NQcmltaXRpdmVWYWx1ZTo6VW5p
dFR5cGU6OlBlcmNlbnRhZ2UgOiBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGU6Ok51bWJlcik7
CkBAIC0yMTIxLDcgKzIxMjEsNyBAQCBzdGF0aWMgQ1NTUHJpbWl0aXZlVmFsdWUqIGNvbnN1bWVQ
ZXJzcGVjdGl2ZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFycwogICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIHBhcnNlZFZhbHVlID0gQ1NTUHJpbWl0aXZlVmFs
dWU6OmNyZWF0ZShwZXJzcGVjdGl2ZSwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlOjpQaXhl
bHMpOwogICAgIH0KLSAgICBpZiAocGFyc2VkVmFsdWUgJiYgKHBhcnNlZFZhbHVlLT5pc0NhbGN1
bGF0ZWQoKSB8fCBwYXJzZWRWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKSA+IDApKQorICAgIGlmIChw
YXJzZWRWYWx1ZSAmJiAocGFyc2VkVmFsdWUtPmlzQ2FsY3VsYXRlZCgpIHx8IHBhcnNlZFZhbHVl
LT5kb3VibGVWYWx1ZSgpID4gMCkpCiAgICAgICAgIHJldHVybiBwYXJzZWRWYWx1ZTsKICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KQEAgLTIxNTIsNyArMjE1Miw3IEBAIHN0YXRpYyBDU1NWYWx1ZSog
Y29uc3VtZVNjcm9sbFNuYXBQb2ludHMoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1Bh
cnNlck1vCiAgICAgaWYgKHJhbmdlLnBlZWsoKS5mdW5jdGlvbklkKCkgPT0gQ1NTVmFsdWVSZXBl
YXQpIHsKICAgICAgICAgQ1NTUGFyc2VyVG9rZW5SYW5nZSBhcmdzID0gY29uc3VtZUZ1bmN0aW9u
KHJhbmdlKTsKICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHBhcnNlZFZhbHVlID0gY29uc3Vt
ZUxlbmd0aE9yUGVyY2VudChhcmdzLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlTm9uTmVnYXRp
dmUpOwotICAgICAgICBpZiAoYXJncy5hdEVuZCgpICYmIHBhcnNlZFZhbHVlICYmIChwYXJzZWRW
YWx1ZS0+aXNDYWxjdWxhdGVkKCkgfHwgcGFyc2VkVmFsdWUtPmdldERvdWJsZVZhbHVlKCkgPiAw
KSkgeworICAgICAgICBpZiAoYXJncy5hdEVuZCgpICYmIHBhcnNlZFZhbHVlICYmIChwYXJzZWRW
YWx1ZS0+aXNDYWxjdWxhdGVkKCkgfHwgcGFyc2VkVmFsdWUtPmRvdWJsZVZhbHVlKCkgPiAwKSkg
ewogICAgICAgICAgICAgQ1NTRnVuY3Rpb25WYWx1ZSogcmVzdWx0ID0gQ1NTRnVuY3Rpb25WYWx1
ZTo6Y3JlYXRlKENTU1ZhbHVlUmVwZWF0KTsKICAgICAgICAgICAgIHJlc3VsdC0+YXBwZW5kKCpw
YXJzZWRWYWx1ZSk7CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMjU5Miw3ICsyNTky
LDcgQEAgc3RhdGljIENTU1ZhbHVlKiBjb25zdW1lSW1hZ2VPcmllbnRhdGlvbihDU1NQYXJzZXJU
b2tlblJhbmdlJiByYW5nZSkKICAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudChyYW5nZSk7CiAg
ICAgaWYgKHJhbmdlLnBlZWsoKS50eXBlKCkgIT0gTnVtYmVyVG9rZW4pIHsKICAgICAgICAgQ1NT
UHJpbWl0aXZlVmFsdWUqIGFuZ2xlID0gY29uc3VtZUFuZ2xlKHJhbmdlKTsKLSAgICAgICAgaWYg
KGFuZ2xlICYmIGFuZ2xlLT5nZXREb3VibGVWYWx1ZSgpID09IDApCisgICAgICAgIGlmIChhbmds
ZSAmJiBhbmdsZS0+ZG91YmxlVmFsdWUoKSA9PSAwKQogICAgICAgICAgICAgcmV0dXJuIGFuZ2xl
OwogICAgIH0KICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTI4NDcsOSArMjg0Nyw5IEBAIHN0YXRp
YyBDU1NWYWx1ZSogY29uc3VtZUdyaWRMaW5lKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlKQog
CiAgICAgaWYgKHNwYW5WYWx1ZSAmJiAhbnVtZXJpY1ZhbHVlICYmICFncmlkTGluZU5hbWUpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOyAvLyAic3BhbiIga2V5d29yZCBhbG9uZSBpcyBpbnZhbGlk
LgotICAgIGlmIChzcGFuVmFsdWUgJiYgbnVtZXJpY1ZhbHVlICYmIG51bWVyaWNWYWx1ZS0+Z2V0
SW50VmFsdWUoKSA8IDApCisgICAgaWYgKHNwYW5WYWx1ZSAmJiBudW1lcmljVmFsdWUgJiYgbnVt
ZXJpY1ZhbHVlLT5pbnRWYWx1ZSgpIDwgMCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7IC8vIE5l
Z2F0aXZlIG51bWJlcnMgYXJlIG5vdCBhbGxvd2VkIGZvciBzcGFuLgotICAgIGlmIChudW1lcmlj
VmFsdWUgJiYgbnVtZXJpY1ZhbHVlLT5nZXRJbnRWYWx1ZSgpID09IDApCisgICAgaWYgKG51bWVy
aWNWYWx1ZSAmJiBudW1lcmljVmFsdWUtPmludFZhbHVlKCkgPT0gMCkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7IC8vIEFuIDxpbnRlZ2VyPiB2YWx1ZSBvZiB6ZXJvIG1ha2VzIHRoZSBkZWNsYXJh
dGlvbiBpbnZhbGlkLgogCiAgICAgQ1NTVmFsdWVMaXN0KiB2YWx1ZXMgPSBDU1NWYWx1ZUxpc3Q6
OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CkBAIC0yODY1LDcgKzI4NjUsNyBAQCBzdGF0aWMgQ1NT
VmFsdWUqIGNvbnN1bWVHcmlkTGluZShDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKIAogc3Rh
dGljIGJvb2wgaXNHcmlkVHJhY2tGaXhlZFNpemVkKGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJiBw
cmltaXRpdmVWYWx1ZSkKIHsKLSAgICBDU1NWYWx1ZUlEIHZhbHVlSUQgPSBwcmltaXRpdmVWYWx1
ZS5nZXRWYWx1ZUlEKCk7CisgICAgQ1NTVmFsdWVJRCB2YWx1ZUlEID0gcHJpbWl0aXZlVmFsdWUu
dmFsdWVJRCgpOwogICAgIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlTWluQ29udGVudCB8fCB2YWx1
ZUlEID09IENTU1ZhbHVlTWF4Q29udGVudCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCBw
cmltaXRpdmVWYWx1ZS5pc0ZsZXgoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0zMDUz
LDcgKzMwNTMsNyBAQCBzdGF0aWMgYm9vbCBjb25zdW1lR3JpZFRyYWNrUmVwZWF0RnVuY3Rpb24o
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlcgogICAgICAgICBDU1NQcmltaXRp
dmVWYWx1ZSogcmVwZXRpdGlvbiA9IGNvbnN1bWVQb3NpdGl2ZUludGVnZXIoYXJncyk7CiAgICAg
ICAgIGlmICghcmVwZXRpdGlvbikKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
cmVwZXRpdGlvbnMgPSBjbGFtcFRvPHNpemVfdD4ocmVwZXRpdGlvbi0+Z2V0RG91YmxlVmFsdWUo
KSwgMCwga0dyaWRNYXhUcmFja3MpOworICAgICAgICByZXBldGl0aW9ucyA9IGNsYW1wVG88c2l6
ZV90PihyZXBldGl0aW9uLT5kb3VibGVWYWx1ZSgpLCAwLCBrR3JpZE1heFRyYWNrcyk7CiAgICAg
ICAgIHJlcGVhdGVkVmFsdWVzID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgp
OwogICAgIH0KICAgICBpZiAoIWNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJncykp
CkBAIC00MjQyLDcgKzQyNDIsNyBAQCBib29sIENTU1Byb3BlcnR5UGFyc2VyOjpjb25zdW1lTGVn
YWN5QnJlYWtQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBib29sCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBpZiAoIW1fcmFuZ2UuYXRFbmQoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIENTU1ZhbHVlSUQgdmFsdWUgPSBrZXl3b3JkLT5nZXRWYWx1ZUlEKCk7CisgICAg
Q1NTVmFsdWVJRCB2YWx1ZSA9IGtleXdvcmQtPnZhbHVlSUQoKTsKICAgICBzd2l0Y2ggKHByb3Bl
cnR5KSB7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZ2VCcmVha0FmdGVyOgogICAgIGNhc2UgQ1NT
UHJvcGVydHlQYWdlQnJlYWtCZWZvcmU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
cGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
cGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5jcHAKaW5kZXggYmRkZjAxNmM3YzA5ZjRk
OWM2ZmM3YTU5Mjk2YzE4OGQwMmNmM2M1MC4uNTc4NzdjZGY2OTk2YmQ2YzdjODRkZjMzYzZjYWU0
NWY3ZTE5NGFhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9w
ZXJ0eVBhcnNlckhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NT
UHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcApAQCAtMzc5LDcgKzM3OSw3IEBAIFJlZlB0cjxDU1NQ
cmltaXRpdmVWYWx1ZT4gY29uc3VtZVVybChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSkKIAog
c3RhdGljIGludCBjbGFtcFJHQkNvbXBvbmVudChjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYgdmFs
dWUpCiB7Ci0gICAgZG91YmxlIHJlc3VsdCA9IHZhbHVlLmdldERvdWJsZVZhbHVlKCk7CisgICAg
ZG91YmxlIHJlc3VsdCA9IHZhbHVlLmRvdWJsZVZhbHVlKCk7CiAgICAgLy8gRklYTUU6IE11bHRp
cGx5IGJ5IDIuNTUgYW5kIHJvdW5kIGluc3RlYWQgb2YgZmxvb3IuCiAgICAgaWYgKHZhbHVlLmlz
UGVyY2VudGFnZSgpKQogICAgICAgICByZXN1bHQgKj0gMi41NjsKQEAgLTQzMCwxNCArNDMwLDE0
IEBAIHN0YXRpYyBib29sIHBhcnNlSFNMUGFyYW1ldGVycyhDU1NQYXJzZXJUb2tlblJhbmdlJiBy
YW5nZSwgUkdCQTMyJiByZXN1bHQsIGJvb2wKICAgICBpZiAoIWhzbFZhbHVlKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgZG91YmxlIGNvbG9yQXJyYXlbM107Ci0gICAgY29sb3JBcnJheVsw
XSA9ICgoKGhzbFZhbHVlLT5nZXRJbnRWYWx1ZSgpICUgMzYwKSArIDM2MCkgJSAzNjApIC8gMzYw
LjA7CisgICAgY29sb3JBcnJheVswXSA9ICgoKGhzbFZhbHVlLT5pbnRWYWx1ZSgpICUgMzYwKSAr
IDM2MCkgJSAzNjApIC8gMzYwLjA7CiAgICAgZm9yIChpbnQgaSA9IDE7IGkgPCAzOyBpKyspIHsK
ICAgICAgICAgaWYgKCFjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNwYWNlKGFyZ3MpKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBoc2xWYWx1ZSA9IGNvbnN1bWVQZXJjZW50
KGFyZ3MsIFZhbHVlUmFuZ2VBbGwpOwogICAgICAgICBpZiAoIWhzbFZhbHVlKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBkb3VibGUgZG91YmxlVmFsdWUgPSBoc2xWYWx1ZS0+
Z2V0RG91YmxlVmFsdWUoKTsKKyAgICAgICAgZG91YmxlIGRvdWJsZVZhbHVlID0gaHNsVmFsdWUt
PmRvdWJsZVZhbHVlKCk7CiAgICAgICAgIGNvbG9yQXJyYXlbaV0gPSBjbGFtcFRvPGRvdWJsZT4o
ZG91YmxlVmFsdWUsIDAuMCwgMTAwLjApIC8gMTAwLjA7IC8vIE5lZWRzIHRvIGJlIHZhbHVlIGJl
dHdlZW4gMCBhbmQgMS4wLgogICAgIH0KICAgICBkb3VibGUgYWxwaGEgPSAxLjA7CkBAIC01MjEs
MTIgKzUyMSwxMiBAQCBzdGF0aWMgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lUG9z
aXRpb25Db21wb25lbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcgogCiBzdGF0aWMgYm9vbCBpc0hv
cml6b250YWxQb3NpdGlvbktleXdvcmRPbmx5KGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJiB2YWx1
ZSkKIHsKLSAgICByZXR1cm4gdmFsdWUuaXNWYWx1ZUlEKCkgJiYgKHZhbHVlLmdldFZhbHVlSUQo
KSA9PSBDU1NWYWx1ZUxlZnQgfHwgdmFsdWUuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlUmlnaHQp
OworICAgIHJldHVybiB2YWx1ZS5pc1ZhbHVlSUQoKSAmJiAodmFsdWUudmFsdWVJRCgpID09IENT
U1ZhbHVlTGVmdCB8fCB2YWx1ZS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVSaWdodCk7CiB9CiAKIHN0
YXRpYyBib29sIGlzVmVydGljYWxQb3NpdGlvbktleXdvcmRPbmx5KGNvbnN0IENTU1ByaW1pdGl2
ZVZhbHVlJiB2YWx1ZSkKIHsKLSAgICByZXR1cm4gdmFsdWUuaXNWYWx1ZUlEKCkgJiYgKHZhbHVl
LmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZVRvcCB8fCB2YWx1ZS5nZXRWYWx1ZUlEKCkgPT0gQ1NT
VmFsdWVCb3R0b20pOworICAgIHJldHVybiB2YWx1ZS5pc1ZhbHVlSUQoKSAmJiAodmFsdWUudmFs
dWVJRCgpID09IENTU1ZhbHVlVG9wIHx8IHZhbHVlLnZhbHVlSUQoKSA9PSBDU1NWYWx1ZUJvdHRv
bSk7CiB9CiAKIHN0YXRpYyB2b2lkIHBvc2l0aW9uRnJvbU9uZVZhbHVlKENTU1ByaW1pdGl2ZVZh
bHVlJiB2YWx1ZSwgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiYgcmVzdWx0WCwgUmVmUHRyPENT
U1ByaW1pdGl2ZVZhbHVlPiYgcmVzdWx0WSkKQEAgLTU2Nyw3ICs1NjcsNyBAQCBzdGF0aWMgYm9v
bCBwb3NpdGlvbkZyb21UaHJlZU9yRm91clZhbHVlcyhDU1NQcmltaXRpdmVWYWx1ZSoqIHZhbHVl
cywgUmVmUHRyPENTUwogICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogY3VycmVudFZhbHVlID0g
dmFsdWVzW2ldOwogICAgICAgICBpZiAoIWN1cnJlbnRWYWx1ZS0+aXNWYWx1ZUlEKCkpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIENTU1ZhbHVlSUQgaWQgPSBjdXJyZW50VmFs
dWUtPmdldFZhbHVlSUQoKTsKKyAgICAgICAgQ1NTVmFsdWVJRCBpZCA9IGN1cnJlbnRWYWx1ZS0+
dmFsdWVJRCgpOwogCiAgICAgICAgIGlmIChpZCA9PSBDU1NWYWx1ZUNlbnRlcikgewogICAgICAg
ICAgICAgaWYgKGNlbnRlcikKQEAgLTg4OSwxMCArODg5LDEwIEBAIHN0YXRpYyBSZWZQdHI8Q1NT
VmFsdWU+IGNvbnN1bWVSYWRpYWxHcmFkaWVudChDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBD
U1NQYXJzCiAgICAgaWYgKHNpemVLZXl3b3JkICYmIGhvcml6b250YWxTaXplKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICAvLyBDaXJjbGVzIG11c3QgaGF2ZSAwIG9yIDEgbGVuZ3Rocy4K
LSAgICBpZiAoc2hhcGUgJiYgc2hhcGUtPmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZUNpcmNsZSAm
JiB2ZXJ0aWNhbFNpemUpCisgICAgaWYgKHNoYXBlICYmIHNoYXBlLT52YWx1ZUlEKCkgPT0gQ1NT
VmFsdWVDaXJjbGUgJiYgdmVydGljYWxTaXplKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICAvLyBFbGxpcHNlcyBtdXN0IGhhdmUgMCBvciAyIGxlbmd0aC9wZXJjZW50YWdlcy4KLSAgICBp
ZiAoc2hhcGUgJiYgc2hhcGUtPmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZUVsbGlwc2UgJiYgaG9y
aXpvbnRhbFNpemUgJiYgIXZlcnRpY2FsU2l6ZSkKKyAgICBpZiAoc2hhcGUgJiYgc2hhcGUtPnZh
bHVlSUQoKSA9PSBDU1NWYWx1ZUVsbGlwc2UgJiYgaG9yaXpvbnRhbFNpemUgJiYgIXZlcnRpY2Fs
U2l6ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgLy8gSWYgdGhlcmUncyBvbmx5IG9u
ZSBzaXplLCBpdCBtdXN0IGJlIGEgbGVuZ3RoLgogICAgIGlmICghdmVydGljYWxTaXplICYmIGhv
cml6b250YWxTaXplICYmIGhvcml6b250YWxTaXplLT5pc1BlcmNlbnRhZ2UoKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUmFu
Z2UuY3BwCmluZGV4IDhkY2M5NzU0ODZhZWFhMDM1ZjNjZWM4NmU4ZDE0MTZhYmQzMGMyMWYuLjk0
MGU3ZmQ0Njc5YzUxMDU1Y2YzYTY1YTdmNTgwZTEzMmVjNGZiZjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNw
cApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkNvbW1lbnQuaCIKICNpbmNsdWRlICJEb2N1
bWVudEZyYWdtZW50LmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25D
b2RlLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNs
dWRlICJIVE1MQm9keUVsZW1lbnQuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9T
ZWxlY3RvclF1ZXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmNwcApp
bmRleCBkMjUxN2JhOTliYjYzYjY3NDUyYWEyYzFkN2RjNTY3NGE2YzU3ZTEzLi41NTdkYmU1OTY2
ZjkwYmM4Y2QyM2VjYjc0OTVjMTZmZTc3MDY3ZjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2VsZWN0b3JRdWVyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9y
UXVlcnkuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJDU1NQYXJzZXIuaCIKICNp
bmNsdWRlICJFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9u
Q29kZS5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIlNlbGVjdG9yQ2hlY2tl
ci5oIgogI2luY2x1ZGUgIlN0YXRpY05vZGVMaXN0LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCmluZGV4IDcwMjFhMDFlNTE4OWJlNzE4NTNlMjUyYjBj
OTQ1M2NmYzhjNDlkNTUuLjI2NmNmNjk3M2EzMDNmZDFhZWRjYWUwNGQyYjI4MjgxNDM1MjYwM2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCkBAIC01
OSw3ICs1OSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIHN0YXRpYyBpbnQgdG9J
ZGVudGlmaWVyKFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlKQogewotICAgIHJldHVybiAodmFs
dWUgJiYgdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkgPyBzdGF0aWNfcG9pbnRlcl9jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSktPmdldFZhbHVlSUQoKSA6IDA7CisgICAgcmV0dXJuICh2
YWx1ZSAmJiB2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSA/IHN0YXRpY19wb2ludGVyX2Nhc3Q8
Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKS0+dmFsdWVJRCgpIDogMDsKIH0KIAogc3RhdGljIFN0
cmluZyYgc3R5bGVTcGFuQ2xhc3NTdHJpbmcoKQpAQCAtMTUxMyw4ICsxNTEzLDggQEAgZmxvYXQg
QXBwbHlTdHlsZUNvbW1hbmQ6OmNvbXB1dGVkRm9udFNpemUoTm9kZSogbm9kZSkKICAgICBpZiAo
IW5vZGUpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9
IENvbXB1dGVkU3R5bGVFeHRyYWN0b3Iobm9kZSkucHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUZv
bnRTaXplKTsKLSAgICByZXR1cm4gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YWx1ZSku
Z2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKKyAgICBhdXRvIHZhbHVl
ID0gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcihub2RlKS5wcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5
Rm9udFNpemUpOworICAgIHJldHVybiBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVl
KS5mbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOwogfQogCiB2b2lkIEFwcGx5
U3R5bGVDb21tYW5kOjpqb2luQ2hpbGRUZXh0Tm9kZXMoTm9kZSogbm9kZSwgY29uc3QgUG9zaXRp
b24mIHN0YXJ0LCBjb25zdCBQb3NpdGlvbiYgZW5kKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
aW5nU3R5bGUuY3BwCmluZGV4IDdlYWFiYjNkOTUzM2ZhZGMxOWY5NjBmMDU5ZTNiNTViZWUwMzU2
OTQuLjRjN2E5MDQ0NmZhYzRjZDRmYWRiMzYwNzc2ZTNiNTczM2RiMjE4NDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKQEAgLTE0NCwxMyArMTQ0LDEyIEBAIGludCBp
ZGVudGlmaWVyRm9yU3R5bGVQcm9wZXJ0eShUJiBzdHlsZSwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0
eUlEKQogICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWUgPSBleHRyYWN0UHJvcGVydHlWYWx1ZShz
dHlsZSwgcHJvcGVydHlJRCk7CiAgICAgaWYgKCFpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUu
Z2V0KCkpKQogICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gZG93bmNhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWU+KCp2YWx1ZSkuZ2V0VmFsdWVJRCgpOworICAgIHJldHVybiBkb3duY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZT4oKnZhbHVlKS52YWx1ZUlEKCk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+IFBhc3NSZWZQdHI8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gZ2V0UHJvcGVydGllc05vdElu
KFN0eWxlUHJvcGVydGllcyYgc3R5bGVXaXRoUmVkdW5kYW50UHJvcGVydGllcywgVCYgYmFzZVN0
eWxlKTsKIGVudW0gTGVnYWN5Rm9udFNpemVNb2RlIHsgQWx3YXlzVXNlTGVnYWN5Rm9udFNpemUs
IFVzZUxlZ2FjeUZvbnRTaXplT25seUlmUGl4ZWxWYWx1ZXNNYXRjaCB9Owogc3RhdGljIGludCBs
ZWdhY3lGb250U2l6ZUZyb21DU1NWYWx1ZShEb2N1bWVudCosIENTU1ByaW1pdGl2ZVZhbHVlKiwg
Ym9vbCBzaG91bGRVc2VGaXhlZEZvbnREZWZhdWx0U2l6ZSwgTGVnYWN5Rm9udFNpemVNb2RlKTsK
LXN0YXRpYyBib29sIGlzVHJhbnNwYXJlbnRDb2xvclZhbHVlKENTU1ZhbHVlKik7CiBzdGF0aWMg
Ym9vbCBoYXNUcmFuc3BhcmVudEJhY2tncm91bmRDb2xvcihTdHlsZVByb3BlcnRpZXMqKTsKIHN0
YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGJhY2tncm91bmRDb2xvckluRWZmZWN0KE5vZGUqKTsKIApA
QCAtMTk2LDcgKzE5NSw3IEBAIEhUTUxFbGVtZW50RXF1aXZhbGVudDo6SFRNTEVsZW1lbnRFcXVp
dmFsZW50KENTU1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlSUQgcHJpbWl0CiBib29sIEhUTUxFbGVt
ZW50RXF1aXZhbGVudDo6dmFsdWVJc1ByZXNlbnRJblN0eWxlKEVsZW1lbnQmIGVsZW1lbnQsIGNv
bnN0IEVkaXRpbmdTdHlsZSYgc3R5bGUpIGNvbnN0CiB7CiAgICAgUmVmUHRyPENTU1ZhbHVlPiB2
YWx1ZSA9IHN0eWxlLm1fbXV0YWJsZVN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKG1fcHJvcGVy
dHlJRCk7Ci0gICAgcmV0dXJuIG1hdGNoZXMoZWxlbWVudCkgJiYgaXM8Q1NTUHJpbWl0aXZlVmFs
dWU+KHZhbHVlLmdldCgpKSAmJiBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVlKS5n
ZXRWYWx1ZUlEKCkgPT0gbV9wcmltaXRpdmVWYWx1ZS0+Z2V0VmFsdWVJRCgpOworICAgIHJldHVy
biBtYXRjaGVzKGVsZW1lbnQpICYmIGlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZS5nZXQoKSkg
JiYgZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YWx1ZSkudmFsdWVJRCgpID09IG1fcHJp
bWl0aXZlVmFsdWUtPnZhbHVlSUQoKTsKIH0KIAogdm9pZCBIVE1MRWxlbWVudEVxdWl2YWxlbnQ6
OmFkZFRvU3R5bGUoRWxlbWVudCosIEVkaXRpbmdTdHlsZSogc3R5bGUpIGNvbnN0CkBAIC01MTIs
NyArNTExLDcgQEAgdm9pZCBFZGl0aW5nU3R5bGU6OmV4dHJhY3RGb250U2l6ZURlbHRhKCkKICAg
ICBpZiAoIXByaW1pdGl2ZVZhbHVlLmlzUHgoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9m
b250U2l6ZURlbHRhID0gcHJpbWl0aXZlVmFsdWUuZ2V0RmxvYXRWYWx1ZSgpOworICAgIG1fZm9u
dFNpemVEZWx0YSA9IHByaW1pdGl2ZVZhbHVlLmZsb2F0VmFsdWUoKTsKICAgICBtX211dGFibGVT
dHlsZS0+cmVtb3ZlUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRGb250U2l6ZURlbHRhKTsKIH0K
IApAQCAtNTUzLDEzICs1NTIsMTMgQEAgYm9vbCBFZGl0aW5nU3R5bGU6OnRleHREaXJlY3Rpb24o
V3JpdGluZ0RpcmVjdGlvbiYgd3JpdGluZ0RpcmVjdGlvbikgY29uc3QKICAgICBpZiAoIWlzPENT
U1ByaW1pdGl2ZVZhbHVlPih1bmljb2RlQmlkaS5nZXQoKSkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIENTU1ZhbHVlSUQgdW5pY29kZUJpZGlWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlPigqdW5pY29kZUJpZGkpLmdldFZhbHVlSUQoKTsKKyAgICBDU1NWYWx1ZUlEIHVu
aWNvZGVCaWRpVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnVuaWNvZGVCaWRp
KS52YWx1ZUlEKCk7CiAgICAgaWYgKHVuaWNvZGVCaWRpVmFsdWUgPT0gQ1NTVmFsdWVFbWJlZCkg
ewogICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IGRpcmVjdGlvbiA9IG1fbXV0YWJsZVN0eWxlLT5n
ZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5RGlyZWN0aW9uKTsKICAgICAgICAgaWYgKCFp
czxDU1NQcmltaXRpdmVWYWx1ZT4oZGlyZWN0aW9uLmdldCgpKSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgICAgICB3cml0aW5nRGlyZWN0aW9uID0gZG93bmNhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWU+KCpkaXJlY3Rpb24pLmdldFZhbHVlSUQoKSA9PSBDU1NWYWx1ZUx0ciA/IExlZnRU
b1JpZ2h0V3JpdGluZ0RpcmVjdGlvbiA6IFJpZ2h0VG9MZWZ0V3JpdGluZ0RpcmVjdGlvbjsKKyAg
ICAgICAgd3JpdGluZ0RpcmVjdGlvbiA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqZGly
ZWN0aW9uKS52YWx1ZUlEKCkgPT0gQ1NTVmFsdWVMdHIgPyBMZWZ0VG9SaWdodFdyaXRpbmdEaXJl
Y3Rpb24gOiBSaWdodFRvTGVmdFdyaXRpbmdEaXJlY3Rpb247CiAKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQpAQCAtMTA5OCw5ICsxMDk3LDkgQEAgdm9pZCBFZGl0aW5nU3R5bGU6OnByZXBh
cmVUb0FwcGx5QXQoY29uc3QgUG9zaXRpb24mIHBvc2l0aW9uLCBTaG91bGRQcmVzZXJ2ZVdyaXQK
ICAgICAgICAgbV9tdXRhYmxlU3R5bGUtPnJlbW92ZVByb3BlcnR5KENTU1Byb3BlcnR5QmFja2dy
b3VuZENvbG9yKTsKIAogICAgIGlmIChpczxDU1NQcmltaXRpdmVWYWx1ZT4odW5pY29kZUJpZGku
Z2V0KCkpKSB7Ci0gICAgICAgIG1fbXV0YWJsZVN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0
eVVuaWNvZGVCaWRpLCBzdGF0aWNfY2FzdDxDU1NWYWx1ZUlEPihkb3duY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZT4oKnVuaWNvZGVCaWRpKS5nZXRWYWx1ZUlEKCkpKTsKKyAgICAgICAgbV9tdXRhYmxl
U3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5VW5pY29kZUJpZGksIHN0YXRpY19jYXN0PENT
U1ZhbHVlSUQ+KGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqdW5pY29kZUJpZGkpLnZhbHVl
SUQoKSkpOwogICAgICAgICBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KGRpcmVjdGlvbi5nZXQo
KSkpCi0gICAgICAgICAgICBtX211dGFibGVTdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlE
aXJlY3Rpb24sIHN0YXRpY19jYXN0PENTU1ZhbHVlSUQ+KGRvd25jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlPigqZGlyZWN0aW9uKS5nZXRWYWx1ZUlEKCkpKTsKKyAgICAgICAgICAgIG1fbXV0YWJsZVN0
eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eURpcmVjdGlvbiwgc3RhdGljX2Nhc3Q8Q1NTVmFs
dWVJRD4oZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCpkaXJlY3Rpb24pLnZhbHVlSUQoKSkp
OwogICAgIH0KIH0KIApAQCAtMTQ4Myw3ICsxNDgyLDcgQEAgV3JpdGluZ0RpcmVjdGlvbiBFZGl0
aW5nU3R5bGU6OnRleHREaXJlY3Rpb25Gb3JTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlv
biYKICAgICAgICAgICAgIGlmICghaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHVuaWNvZGVCaWRpLmdl
dCgpKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgQ1NTVmFsdWVJ
RCB1bmljb2RlQmlkaVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp1bmljb2Rl
QmlkaSkuZ2V0VmFsdWVJRCgpOworICAgICAgICAgICAgQ1NTVmFsdWVJRCB1bmljb2RlQmlkaVZh
bHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp1bmljb2RlQmlkaSkudmFsdWVJRCgp
OwogICAgICAgICAgICAgaWYgKHVuaWNvZGVCaWRpVmFsdWUgPT0gQ1NTVmFsdWVFbWJlZCB8fCB1
bmljb2RlQmlkaVZhbHVlID09IENTU1ZhbHVlQmlkaU92ZXJyaWRlKQogICAgICAgICAgICAgICAg
IHJldHVybiBOYXR1cmFsV3JpdGluZ0RpcmVjdGlvbjsKICAgICAgICAgfQpAQCAtMTUxMiw3ICsx
NTExLDcgQEAgV3JpdGluZ0RpcmVjdGlvbiBFZGl0aW5nU3R5bGU6OnRleHREaXJlY3Rpb25Gb3JT
ZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYKICAgICAgICAgaWYgKCFpczxDU1NQcmlt
aXRpdmVWYWx1ZT4odW5pY29kZUJpZGkuZ2V0KCkpKQogICAgICAgICAgICAgY29udGludWU7CiAK
LSAgICAgICAgQ1NTVmFsdWVJRCB1bmljb2RlQmlkaVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWU+KCp1bmljb2RlQmlkaSkuZ2V0VmFsdWVJRCgpOworICAgICAgICBDU1NWYWx1ZUlE
IHVuaWNvZGVCaWRpVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnVuaWNvZGVC
aWRpKS52YWx1ZUlEKCk7CiAgICAgICAgIGlmICh1bmljb2RlQmlkaVZhbHVlID09IENTU1ZhbHVl
Tm9ybWFsKQogICAgICAgICAgICAgY29udGludWU7CiAKQEAgLTE1MjQsNyArMTUyMyw3IEBAIFdy
aXRpbmdEaXJlY3Rpb24gRWRpdGluZ1N0eWxlOjp0ZXh0RGlyZWN0aW9uRm9yU2VsZWN0aW9uKGNv
bnN0IFZpc2libGVTZWxlY3Rpb24mCiAgICAgICAgIGlmICghaXM8Q1NTUHJpbWl0aXZlVmFsdWU+
KGRpcmVjdGlvbi5nZXQoKSkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBDU1NW
YWx1ZUlEIGRpcmVjdGlvblZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCpkaXJl
Y3Rpb24pLmdldFZhbHVlSUQoKTsKKyAgICAgICAgQ1NTVmFsdWVJRCBkaXJlY3Rpb25WYWx1ZSA9
IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqZGlyZWN0aW9uKS52YWx1ZUlEKCk7CiAgICAg
ICAgIGlmIChkaXJlY3Rpb25WYWx1ZSAhPSBDU1NWYWx1ZUx0ciAmJiBkaXJlY3Rpb25WYWx1ZSAh
PSBDU1NWYWx1ZVJ0bCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCkBAIC0xNzQxLDcgKzE3NDAs
NyBAQCBzdGF0aWMgYm9vbCBmb250V2VpZ2h0SXNCb2xkKENTU1ZhbHVlJiBmb250V2VpZ2h0KQog
CiAgICAgLy8gQmVjYXVzZSBiIHRhZyBjYW4gb25seSBib2xkIHRleHQsIHRoZXJlIGFyZSBvbmx5
IHR3byBzdGF0ZXMgaW4gcGxhaW4gaHRtbDogYm9sZCBhbmQgbm90IGJvbGQuCiAgICAgLy8gQ29s
bGFwc2UgYWxsIG90aGVyIHZhbHVlcyB0byBlaXRoZXIgb25lIG9mIHRoZXNlIHR3byBzdGF0ZXMg
Zm9yIGVkaXRpbmcgcHVycG9zZXMuCi0gICAgc3dpdGNoIChkb3duY2FzdDxDU1NQcmltaXRpdmVW
YWx1ZT4oZm9udFdlaWdodCkuZ2V0VmFsdWVJRCgpKSB7CisgICAgc3dpdGNoIChkb3duY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZT4oZm9udFdlaWdodCkudmFsdWVJRCgpKSB7CiAgICAgICAgIGNhc2Ug
Q1NTVmFsdWUxMDA6CiAgICAgICAgIGNhc2UgQ1NTVmFsdWUyMDA6CiAgICAgICAgIGNhc2UgQ1NT
VmFsdWUzMDA6CkBAIC0xODE0LDcgKzE4MTMsNyBAQCBpbnQgbGVnYWN5Rm9udFNpemVGcm9tQ1NT
VmFsdWUoRG9jdW1lbnQqIGRvY3VtZW50LCBDU1NQcmltaXRpdmVWYWx1ZSogdmFsdWUsIGJvbwog
ICAgIEFTU0VSVChkb2N1bWVudCk7IC8vIEZJWE1FOiBUaGlzIG1ldGhvZCBzaG91bGQgdGFrZSBh
IERvY3VtZW50JgogCiAgICAgaWYgKGlzQ1NTVmFsdWVMZW5ndGgodmFsdWUpKSB7Ci0gICAgICAg
IGludCBwaXhlbEZvbnRTaXplID0gdmFsdWUtPmdldEludFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfUFgpOworICAgICAgICBpbnQgcGl4ZWxGb250U2l6ZSA9IHZhbHVlLT5pbnRWYWx1ZShD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKICAgICAgICAgaW50IGxlZ2FjeUZvbnRTaXplID0g
U3R5bGU6OmxlZ2FjeUZvbnRTaXplRm9yUGl4ZWxTaXplKHBpeGVsRm9udFNpemUsIHNob3VsZFVz
ZUZpeGVkRm9udERlZmF1bHRTaXplLCAqZG9jdW1lbnQpOwogICAgICAgICAvLyBVc2UgbGVnYWN5
IGZvbnQgc2l6ZSBvbmx5IGlmIHBpeGVsIHZhbHVlIG1hdGNoZXMgZXhhY3RseSB0byB0aGF0IG9m
IGxlZ2FjeSBmb250IHNpemUuCiAgICAgICAgIGludCBjc3NQcmltaXRpdmVFcXVpdmFsZW50ID0g
bGVnYWN5Rm9udFNpemUgLSAxICsgQ1NTVmFsdWVYU21hbGw7CkBAIC0xODI0LDM0ICsxODIzLDMz
IEBAIGludCBsZWdhY3lGb250U2l6ZUZyb21DU1NWYWx1ZShEb2N1bWVudCogZG9jdW1lbnQsIENT
U1ByaW1pdGl2ZVZhbHVlKiB2YWx1ZSwgYm9vCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAot
ICAgIGlmIChDU1NWYWx1ZVhTbWFsbCA8PSB2YWx1ZS0+Z2V0VmFsdWVJRCgpICYmIHZhbHVlLT5n
ZXRWYWx1ZUlEKCkgPD0gQ1NTVmFsdWVXZWJraXRYeHhMYXJnZSkKLSAgICAgICAgcmV0dXJuIHZh
bHVlLT5nZXRWYWx1ZUlEKCkgLSBDU1NWYWx1ZVhTbWFsbCArIDE7CisgICAgaWYgKENTU1ZhbHVl
WFNtYWxsIDw9IHZhbHVlLT52YWx1ZUlEKCkgJiYgdmFsdWUtPnZhbHVlSUQoKSA8PSBDU1NWYWx1
ZVdlYmtpdFh4eExhcmdlKQorICAgICAgICByZXR1cm4gdmFsdWUtPnZhbHVlSUQoKSAtIENTU1Zh
bHVlWFNtYWxsICsgMTsKIAogICAgIHJldHVybiAwOwogfQogCi1ib29sIGlzVHJhbnNwYXJlbnRD
b2xvclZhbHVlKENTU1ZhbHVlKiBjc3NWYWx1ZSkKK3N0YXRpYyBib29sIGlzVHJhbnNwYXJlbnRD
b2xvclZhbHVlKENTU1ZhbHVlKiB2YWx1ZSkKIHsKLSAgICBpZiAoIWNzc1ZhbHVlKQorICAgIGlm
ICghdmFsdWUpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmICghaXM8Q1NTUHJpbWl0aXZl
VmFsdWU+KCpjc3NWYWx1ZSkpCisgICAgaWYgKCFpczxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVl
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIENTU1ByaW1pdGl2ZVZhbHVlJiB2YWx1ZSA9
IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPigqY3NzVmFsdWUpOwotICAgIGlmICh2YWx1ZS5p
c1JHQkNvbG9yKCkpCi0gICAgICAgIHJldHVybiB2YWx1ZS5jb2xvcigpLmFscGhhKCkgPT0gMDsK
LSAgICByZXR1cm4gdmFsdWUuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlVHJhbnNwYXJlbnQ7Cisg
ICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oKnZh
bHVlKTsKKyAgICBpZiAocHJpbWl0aXZlVmFsdWUuaXNSR0JDb2xvcigpKQorICAgICAgICByZXR1
cm4gIXByaW1pdGl2ZVZhbHVlLmNvbG9yKCkuYWxwaGEoKTsKKyAgICByZXR1cm4gcHJpbWl0aXZl
VmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlVHJhbnNwYXJlbnQ7CiB9CiAKIGJvb2wgaGFzVHJh
bnNwYXJlbnRCYWNrZ3JvdW5kQ29sb3IoU3R5bGVQcm9wZXJ0aWVzKiBzdHlsZSkKIHsKLSAgICBS
ZWZQdHI8Q1NTVmFsdWU+IGNzc1ZhbHVlID0gc3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpOwotICAgIHJldHVybiBpc1RyYW5zcGFyZW50Q29sb3JW
YWx1ZShjc3NWYWx1ZS5nZXQoKSk7CisgICAgcmV0dXJuIGlzVHJhbnNwYXJlbnRDb2xvclZhbHVl
KHN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKS5n
ZXQoKSk7CiB9CiAKIFJlZlB0cjxDU1NWYWx1ZT4gYmFja2dyb3VuZENvbG9ySW5FZmZlY3QoTm9k
ZSogbm9kZSkKIHsKICAgICBmb3IgKE5vZGUqIGFuY2VzdG9yID0gbm9kZTsgYW5jZXN0b3I7IGFu
Y2VzdG9yID0gYW5jZXN0b3ItPnBhcmVudE5vZGUoKSkgewotICAgICAgICBpZiAoUmVmUHRyPENT
U1ZhbHVlPiB2YWx1ZSA9IENvbXB1dGVkU3R5bGVFeHRyYWN0b3IoYW5jZXN0b3IpLnByb3BlcnR5
VmFsdWUoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpKSB7CisgICAgICAgIGlmIChhdXRvIHZh
bHVlID0gQ29tcHV0ZWRTdHlsZUV4dHJhY3RvcihhbmNlc3RvcikucHJvcGVydHlWYWx1ZShDU1NQ
cm9wZXJ0eUJhY2tncm91bmRDb2xvcikpIHsKICAgICAgICAgICAgIGlmICghaXNUcmFuc3BhcmVu
dENvbG9yVmFsdWUodmFsdWUuZ2V0KCkpKQogICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTsK
ICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDQ4OTM3ZTBhYmRlY2Ew
ZmRlMzI5NTkxY2Q5NzU4YzhmODFmMDYyMmQuLjBlZmI0MzQ3YjllYzk3NWIzNmY1MGRjNzk3NzI1
OGYzNzMyZDQ0ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTMyMDYsOSArMzIw
Niw5IEBAIHZvaWQgRWRpdG9yOjphcHBseUVkaXRpbmdTdHlsZVRvRWxlbWVudChFbGVtZW50KiBl
bGVtZW50KSBjb25zdAogCiAgICAgLy8gTXV0YXRlIHVzaW5nIHRoZSBDU1NPTSB3cmFwcGVyIHNv
IHdlIGdldCB0aGUgc2FtZSBldmVudCBiZWhhdmlvciBhcyBhIHNjcmlwdC4KICAgICBDU1NTdHls
ZURlY2xhcmF0aW9uKiBzdHlsZSA9IGRvd25jYXN0PFN0eWxlZEVsZW1lbnQ+KCplbGVtZW50KS5j
c3NvbVN0eWxlKCk7Ci0gICAgc3R5bGUtPnNldFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlX
b3JkV3JhcCwgImJyZWFrLXdvcmQiLCBmYWxzZSwgSUdOT1JFX0VYQ0VQVElPTik7Ci0gICAgc3R5
bGUtPnNldFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXROYnNwTW9kZSwgInNwYWNl
IiwgZmFsc2UsIElHTk9SRV9FWENFUFRJT04pOwotICAgIHN0eWxlLT5zZXRQcm9wZXJ0eUludGVy
bmFsKENTU1Byb3BlcnR5V2Via2l0TGluZUJyZWFrLCAiYWZ0ZXItd2hpdGUtc3BhY2UiLCBmYWxz
ZSwgSUdOT1JFX0VYQ0VQVElPTik7CisgICAgc3R5bGUtPnNldFByb3BlcnR5SW50ZXJuYWwoQ1NT
UHJvcGVydHlXb3JkV3JhcCwgImJyZWFrLXdvcmQiLCBmYWxzZSk7CisgICAgc3R5bGUtPnNldFBy
b3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlXZWJraXROYnNwTW9kZSwgInNwYWNlIiwgZmFsc2Up
OworICAgIHN0eWxlLT5zZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5V2Via2l0TGluZUJy
ZWFrLCAiYWZ0ZXItd2hpdGUtc3BhY2UiLCBmYWxzZSk7CiB9CiAKIGJvb2wgRWRpdG9yOjpmaW5k
U3RyaW5nKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBGaW5kT3B0aW9ucyBvcHRpb25zKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVDU1NQcm9wZXJ0eUNvbW1hbmQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVDU1NQcm9wZXJ0eUNvbW1hbmQuY3BwCmlu
ZGV4IGE1NGUyYWY3ZTc2ZjQ0NTI4YWVjYTE2ZmYzMTQ3Yjk3ZWFjZmI5YzEuLjM3NzA1NjViOWQ4
ZDRlNGQzOTczZTE1MzQ3ZWYyODVkMzBjZTRmZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvUmVtb3ZlQ1NTUHJvcGVydHlDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1JlbW92ZUNTU1Byb3BlcnR5Q29tbWFuZC5jcHAKQEAgLTI3LDcgKzI3LDYgQEAK
ICNpbmNsdWRlICJSZW1vdmVDU1NQcm9wZXJ0eUNvbW1hbmQuaCIKIAogI2luY2x1ZGUgIkNTU1N0
eWxlRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlICJFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCIK
ICNpbmNsdWRlICJTdHlsZVByb3BlcnRpZXMuaCIKICNpbmNsdWRlICJTdHlsZWRFbGVtZW50Lmgi
CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KQEAgLTU1LDEyICs1NCwxMiBAQCB2b2lkIFJl
bW92ZUNTU1Byb3BlcnR5Q29tbWFuZDo6ZG9BcHBseSgpCiAKICAgICAvLyBNdXRhdGUgdXNpbmcg
dGhlIENTU09NIHdyYXBwZXIgc28gd2UgZ2V0IHRoZSBzYW1lIGV2ZW50IGJlaGF2aW9yIGFzIGEg
c2NyaXB0LgogICAgIC8vIFNldHRpbmcgdG8gbnVsbCBzdHJpbmcgcmVtb3ZlcyB0aGUgcHJvcGVy
dHkuIFdlIGRvbid0IGhhdmUgaW50ZXJuYWwgdmVyc2lvbiBvZiByZW1vdmVQcm9wZXJ0eS4KLSAg
ICBtX2VsZW1lbnQtPmNzc29tU3R5bGUoKS0+c2V0UHJvcGVydHlJbnRlcm5hbChtX3Byb3BlcnR5
LCBTdHJpbmcoKSwgZmFsc2UsIElHTk9SRV9FWENFUFRJT04pOworICAgIG1fZWxlbWVudC0+Y3Nz
b21TdHlsZSgpLT5zZXRQcm9wZXJ0eUludGVybmFsKG1fcHJvcGVydHksIFN0cmluZygpLCBmYWxz
ZSk7CiB9CiAKIHZvaWQgUmVtb3ZlQ1NTUHJvcGVydHlDb21tYW5kOjpkb1VuYXBwbHkoKQogewot
ICAgIG1fZWxlbWVudC0+Y3Nzb21TdHlsZSgpLT5zZXRQcm9wZXJ0eUludGVybmFsKG1fcHJvcGVy
dHksIG1fb2xkVmFsdWUsIG1faW1wb3J0YW50LCBJR05PUkVfRVhDRVBUSU9OKTsKKyAgICBtX2Vs
ZW1lbnQtPmNzc29tU3R5bGUoKS0+c2V0UHJvcGVydHlJbnRlcm5hbChtX3Byb3BlcnR5LCBtX29s
ZFZhbHVlLCBtX2ltcG9ydGFudCk7CiB9CiAKICNpZm5kZWYgTkRFQlVHCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IGEyNzY2
NGZjYjNkM2QxN2VhOTJmZTc5NGUyODZjYTZhOTA2MGQ1MmEuLmNkNmY3MzM4YWRmNjUyNWFhMWRh
MzNlNjhkZDZjMjg4ZGZiOTdhOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCkBAIC01NjIsOSArNTYyLDkgQEAgdm9pZCBSZXBs
YWNlU2VsZWN0aW9uQ29tbWFuZDo6cmVtb3ZlUmVkdW5kYW50U3R5bGVzQW5kS2VlcFN0eWxlU3Bh
bklubGluZShJbnNlcnQKIAogICAgICAgICAgICAgLy8gTXV0YXRlIHVzaW5nIHRoZSBDU1NPTSB3
cmFwcGVyIHNvIHdlIGdldCB0aGUgc2FtZSBldmVudCBiZWhhdmlvciBhcyBhIHNjcmlwdC4KICAg
ICAgICAgICAgIGlmIChpc0Jsb2NrKGVsZW1lbnQpKQotICAgICAgICAgICAgICAgIGVsZW1lbnQt
PmNzc29tU3R5bGUoKS0+c2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0eURpc3BsYXksICJp
bmxpbmUiLCBmYWxzZSwgSUdOT1JFX0VYQ0VQVElPTik7CisgICAgICAgICAgICAgICAgZWxlbWVu
dC0+Y3Nzb21TdHlsZSgpLT5zZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5RGlzcGxheSwg
ImlubGluZSIsIGZhbHNlKTsKICAgICAgICAgICAgIGlmIChlbGVtZW50LT5yZW5kZXJlcigpICYm
IGVsZW1lbnQtPnJlbmRlcmVyKCktPnN0eWxlKCkuaXNGbG9hdGluZygpKQotICAgICAgICAgICAg
ICAgIGVsZW1lbnQtPmNzc29tU3R5bGUoKS0+c2V0UHJvcGVydHlJbnRlcm5hbChDU1NQcm9wZXJ0
eUZsb2F0LCAibm9uZSIsIGZhbHNlLCBJR05PUkVfRVhDRVBUSU9OKTsKKyAgICAgICAgICAgICAg
ICBlbGVtZW50LT5jc3NvbVN0eWxlKCktPnNldFByb3BlcnR5SW50ZXJuYWwoQ1NTUHJvcGVydHlG
bG9hdCwgIm5vbmUiLCBmYWxzZSk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIubW0KaW5kZXggZTQyZmNlNmMwYjA1NjJh
MDU4YzdhYWY2YmM1YWJmODZlYWRiODYyZC4uOTRmYzdlZDk5NWNjNDBkODZmNGMwMjgyMzJmNDEz
NDIwYmMwODhkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9IVE1M
Q29udmVydGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZl
cnRlci5tbQpAQCAtNzg3LDIyICs3ODcsMjIgQEAgc3RhdGljIGlubGluZSBib29sIGZsb2F0VmFs
dWVGcm9tUHJpbWl0aXZlVmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUmIHByaW1pdGl2ZVZhbHUKICAg
ICAvLyBGSVhNRTogVXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlVmFsdWUuCiAgICAgc3dp
dGNoIChwcmltaXRpdmVWYWx1ZS5wcmltaXRpdmVUeXBlKCkpIHsKICAgICBjYXNlIENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfUFg6Ci0gICAgICAgIHJlc3VsdCA9IHByaW1pdGl2ZVZhbHVlLmdldEZs
b2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7CisgICAgICAgIHJlc3VsdCA9IHBy
aW1pdGl2ZVZhbHVlLmZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7CiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QVDoKLSAg
ICAgICAgcmVzdWx0ID0gNCAqIHByaW1pdGl2ZVZhbHVlLmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19QVCkgLyAzOworICAgICAgICByZXN1bHQgPSA0ICogcHJpbWl0aXZlVmFs
dWUuZmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BUKSAvIDM7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QQzoKLSAgICAgICAg
cmVzdWx0ID0gMTYgKiBwcmltaXRpdmVWYWx1ZS5nZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfUEMpOworICAgICAgICByZXN1bHQgPSAxNiAqIHByaW1pdGl2ZVZhbHVlLmZsb2F0
VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QQyk7CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19DTToKLSAgICAgICAgcmVzdWx0ID0gOTYg
KiBwcmltaXRpdmVWYWx1ZS5nZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEMp
IC8gMi41NDsKKyAgICAgICAgcmVzdWx0ID0gOTYgKiBwcmltaXRpdmVWYWx1ZS5mbG9hdFZhbHVl
KENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEMpIC8gMi41NDsKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX01NOgotICAgICAgICByZXN1bHQgPSA5
NiAqIHByaW1pdGl2ZVZhbHVlLmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19Q
QykgLyAyNS40OworICAgICAgICByZXN1bHQgPSA5NiAqIHByaW1pdGl2ZVZhbHVlLmZsb2F0VmFs
dWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QQykgLyAyNS40OwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSU46Ci0gICAgICAgIHJlc3VsdCA9
IDk2ICogcHJpbWl0aXZlVmFsdWUuZ2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X0lOKTsKKyAgICAgICAgcmVzdWx0ID0gOTYgKiBwcmltaXRpdmVWYWx1ZS5mbG9hdFZhbHVlKENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfSU4pOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBkZWZh
dWx0OgogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKaW5k
ZXggZTRjZTE1MGFhNjAwNzA4Njc1Y2FiNzZkNTY5OTlhOTA5ZmUwZmNhNi4uMWViNzJmZDJiMzg5
Yjg5N2VkMWRkMDgwNDljNmI5NzBjYTA2Y2U0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNw
cApAQCAtNDk5LDcgKzQ5OSw3IEBAIHN0YXRpYyBib29sIHByb3BlcnR5TWlzc2luZ09yRXF1YWxU
b05vbmUoU3R5bGVQcm9wZXJ0aWVzKiBzdHlsZSwgQ1NTUHJvcGVydHlJRCBwCiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIGlmICghaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YWx1ZSkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+
KCp2YWx1ZSkuZ2V0VmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZTsKKyAgICByZXR1cm4gZG93bmNh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YWx1ZSkudmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZTsK
IH0KIAogc3RhdGljIGJvb2wgbmVlZEludGVyY2hhbmdlTmV3bGluZUFmdGVyKGNvbnN0IFZpc2li
bGVQb3NpdGlvbiYgdikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JT
dHlsZVNoZWV0LmNwcAppbmRleCA1YTQ0Yjg0YmI3MzRlNjEyMjc0NTk4YWY1OWFkZTk2NDQ4YzIz
YTdhLi5kNDM2NjVjNGM2MDZhMDAwNjI4YWU4MDFlZmE0MmYxYTdkYzk3NjA4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCkBAIC03MDgs
OSArNzA4LDExIEBAIENTU1N0eWxlUnVsZSogSW5zcGVjdG9yU3R5bGVTaGVldDo6YWRkUnVsZShj
b25zdCBTdHJpbmcmIHNlbGVjdG9yLCBFeGNlcHRpb25Db2RlCiAgICAgU3RyaW5nQnVpbGRlciBz
dHlsZVNoZWV0VGV4dDsKICAgICBzdHlsZVNoZWV0VGV4dC5hcHBlbmQodGV4dCk7CiAKLSAgICBt
X3BhZ2VTdHlsZVNoZWV0LT5hZGRSdWxlKHNlbGVjdG9yLCBlbXB0eVN0cmluZygpLCBOdWxsb3B0
LCBlYyk7Ci0gICAgaWYgKGVjKQorICAgIGF1dG8gYWRkUnVsZVJlc3VsdCA9IG1fcGFnZVN0eWxl
U2hlZXQtPmFkZFJ1bGUoc2VsZWN0b3IsIGVtcHR5U3RyaW5nKCksIE51bGxvcHQpOworICAgIGlm
IChhZGRSdWxlUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgIGVjID0gYWRkUnVsZVJl
c3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkuY29kZSgpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICB9CiAgICAgQVNTRVJUKG1fcGFnZVN0eWxlU2hlZXQtPmxlbmd0aCgpKTsKICAgICB1bnNp
Z25lZCBsYXN0UnVsZUluZGV4ID0gbV9wYWdlU3R5bGVTaGVldC0+bGVuZ3RoKCkgLSAxOwogICAg
IENTU1J1bGUqIHJ1bGUgPSBtX3BhZ2VTdHlsZVNoZWV0LT5pdGVtKGxhc3RSdWxlSW5kZXgpOwpA
QCAtNzIwLDcgKzcyMiw3IEBAIENTU1N0eWxlUnVsZSogSW5zcGVjdG9yU3R5bGVTaGVldDo6YWRk
UnVsZShjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBFeGNlcHRpb25Db2RlCiAgICAgaWYgKCFzdHls
ZVJ1bGUpIHsKICAgICAgICAgLy8gV2hhdCB3ZSBqdXN0IGFkZGVkIGhhcyB0byBiZSBhIENTU1N0
eWxlUnVsZSAtIHdlIGNhbm5vdCBoYW5kbGUgb3RoZXIgdHlwZXMgb2YgcnVsZXMgeWV0LgogICAg
ICAgICAvLyBJZiBpdCBpcyBub3QgYSBzdHlsZSBydWxlLCBwcmV0ZW5kIHdlIG5ldmVyIHRvdWNo
ZWQgdGhlIHN0eWxlc2hlZXQuCi0gICAgICAgIG1fcGFnZVN0eWxlU2hlZXQtPmRlbGV0ZVJ1bGUo
bGFzdFJ1bGVJbmRleCwgQVNTRVJUX05PX0VYQ0VQVElPTik7CisgICAgICAgIG1fcGFnZVN0eWxl
U2hlZXQtPmRlbGV0ZVJ1bGUobGFzdFJ1bGVJbmRleCk7CiAgICAgICAgIGVjID0gU1lOVEFYX0VS
UjsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpAQCAtNzU5LDExICs3NjEsMTMgQEAg
Ym9vbCBJbnNwZWN0b3JTdHlsZVNoZWV0OjpkZWxldGVSdWxlKGNvbnN0IEluc3BlY3RvckNTU0lk
JiBpZCwgRXhjZXB0aW9uQ29kZSYgZWMKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAot
ICAgIHN0eWxlU2hlZXQtPmRlbGV0ZVJ1bGUoaWQub3JkaW5hbCgpLCBlYyk7CisgICAgYXV0byBk
ZWxldGVSdWxlUmVzdWx0ID0gc3R5bGVTaGVldC0+ZGVsZXRlUnVsZShpZC5vcmRpbmFsKCkpOwog
ICAgIC8vIHxydWxlfCBNQVkgTk9UIGJlIGFkZHJlc3NlZCBhZnRlciB0aGlzIGxpbmUhCiAKLSAg
ICBpZiAoZWMpCisgICAgaWYgKGRlbGV0ZVJ1bGVSZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKKyAg
ICAgICAgZWMgPSBkZWxldGVSdWxlUmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5jb2RlKCk7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAKICAgICBTdHJpbmcgc2hlZXRUZXh0ID0gbV9w
YXJzZWRTdHlsZVNoZWV0LT50ZXh0KCk7CiAgICAgc2hlZXRUZXh0LnJlbW92ZShzb3VyY2VEYXRh
LT5ydWxlSGVhZGVyUmFuZ2Uuc3RhcnQsIHNvdXJjZURhdGEtPnJ1bGVCb2R5UmFuZ2UuZW5kIC0g
c291cmNlRGF0YS0+cnVsZUhlYWRlclJhbmdlLnN0YXJ0ICsgMSk7CkBAIC0xMTUzLDExICsxMTU3
LDE0IEBAIGJvb2wgSW5zcGVjdG9yU3R5bGVTaGVldDo6c2V0U3R5bGVUZXh0KENTU1N0eWxlRGVj
bGFyYXRpb24qIHN0eWxlLCBjb25zdCBTdHJpbmcmCiAgICAgaWYgKGlkLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgc3R5bGUtPnNldENzc1RleHQodGV4dCwgZWMpOwot
ICAgIGlmICghZWMpCi0gICAgICAgIG1fcGFyc2VkU3R5bGVTaGVldC0+c2V0VGV4dChwYXRjaGVk
U3R5bGVTaGVldFRleHQpOworICAgIGF1dG8gc2V0Q3NzVGV4dFJlc3VsdCA9IHN0eWxlLT5zZXRD
c3NUZXh0KHRleHQpOworICAgIGlmIChzZXRDc3NUZXh0UmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7
CisgICAgICAgIGVjID0gc2V0Q3NzVGV4dFJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkuY29kZSgp
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogCi0gICAgcmV0dXJuICFlYzsKKyAgICBt
X3BhcnNlZFN0eWxlU2hlZXQtPnNldFRleHQocGF0Y2hlZFN0eWxlU2hlZXRUZXh0KTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBJbnNwZWN0b3JTdHlsZVNoZWV0OjpzdHlsZVNoZWV0VGV4
dFdpdGhDaGFuZ2VkU3R5bGUoQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUsIGNvbnN0IFN0cmlu
ZyYgbmV3U3R5bGVUZXh0LCBTdHJpbmcqIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdMZW5ndGguY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aC5jcHAK
aW5kZXggYjk5Yjk2NmI2Zjg4Y2Y2MDA0ZjU5MTg5ODhjMjI4NjI3YWMyZmVkZS4uN2I5ZjRiOTQ3
YzUxZDdhZjhjNWQwYzU0MjhlNjdmYzNhODM2Yzk1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0xlbmd0aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aC5j
cHAKQEAgLTMyNyw3ICszMjcsNyBAQCBTVkdMZW5ndGggU1ZHTGVuZ3RoOjpmcm9tQ1NTUHJpbWl0
aXZlVmFsdWUoY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmIHZhbHVlKQogCiAgICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7CiAgICAgU1ZHTGVuZ3RoIGxlbmd0aDsKLSAgICBsZW5ndGgubmV3VmFsdWVT
cGVjaWZpZWRVbml0cyhzdmdUeXBlLCB2YWx1ZS5nZXRGbG9hdFZhbHVlKCksIGVjKTsKKyAgICBs
ZW5ndGgubmV3VmFsdWVTcGVjaWZpZWRVbml0cyhzdmdUeXBlLCB2YWx1ZS5mbG9hdFZhbHVlKCks
IGVjKTsKICAgICBpZiAoZWMpICAgIAogICAgICAgICByZXR1cm4gU1ZHTGVuZ3RoKCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9ET01DU1NNZWRpYVJ1bGUubW0gYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9ET00vRE9NQ1NTTWVkaWFSdWxlLm1tCmluZGV4IGIzOGQzYWMxOTI4YTU3
MTg4ZDQ5OGU4N2ZhYmE4YzU5OTM2YzNmMmIuLjkwNTk2YTVhZWNjMzY3OGE2MWJiZjJlMzRlNzg1
OWZmNWQ3ZGMyNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9ET01DU1NNZWRp
YVJ1bGUubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvRE9NL0RPTUNTU01lZGlhUnVsZS5tbQpA
QCAtNTgsMTggKzU4LDEzIEBAIC0gKERPTUNTU1J1bGVMaXN0ICopY3NzUnVsZXMKIC0gKHVuc2ln
bmVkKWluc2VydFJ1bGU6KE5TU3RyaW5nICopcnVsZSBpbmRleDoodW5zaWduZWQpaW5kZXgKIHsK
ICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6
RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgdW5zaWduZWQgcmVzdWx0ID0gSU1QTC0+aW5zZXJ0
UnVsZShydWxlLCBpbmRleCwgZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gcmFpc2VPbkRPTUVycm9yKElNUEwtPmluc2VydFJ1bGUo
cnVsZSwgaW5kZXgpKTsKIH0KIAogLSAodm9pZClkZWxldGVSdWxlOih1bnNpZ25lZClpbmRleAog
ewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3Jl
OjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBJTVBMLT5kZWxldGVSdWxlKGluZGV4LCBlYyk7
Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKKyAgICByZXR1cm4gcmFpc2VPbkRPTUVycm9yKElN
UEwtPmRlbGV0ZVJ1bGUoaW5kZXgpKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9tYWMvRE9NL0RPTUNTU1ByaW1pdGl2ZVZhbHVlLm1tIGIvU291cmNlL1dlYktpdC9tYWMv
RE9NL0RPTUNTU1ByaW1pdGl2ZVZhbHVlLm1tCmluZGV4IDZiM2M3ZWJiYzdlNWY0NGRiOGJhMzgy
ZGQzZjYyMDE3M2MzYWNiMDQuLjIyOTBmYmRmODNlM2JiYjMyMjQ1YmQ1N2M1YTNiYWRmYmEwZTZk
ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9ET01DU1NQcmltaXRpdmVWYWx1
ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9ET00vRE9NQ1NTUHJpbWl0aXZlVmFsdWUubW0K
QEAgLTU0LDYyICs1NCw0MyBAQCAtICh1bnNpZ25lZCBzaG9ydClwcmltaXRpdmVUeXBlCiAtICh2
b2lkKXNldEZsb2F0VmFsdWU6KHVuc2lnbmVkIHNob3J0KXVuaXRUeXBlIGZsb2F0VmFsdWU6KGZs
b2F0KWZsb2F0VmFsdWUKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3Rh
dGU7Ci0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgSU1QTC0+c2V0Rmxv
YXRWYWx1ZSh1bml0VHlwZSwgZmxvYXRWYWx1ZSwgZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihl
Yyk7CisgICAgcmFpc2VPbkRPTUVycm9yKElNUEwtPnNldEZsb2F0VmFsdWUodW5pdFR5cGUsIGZs
b2F0VmFsdWUpKTsKIH0KIAogLSAoZmxvYXQpZ2V0RmxvYXRWYWx1ZToodW5zaWduZWQgc2hvcnQp
dW5pdFR5cGUKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0g
ICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgZmxvYXQgcmVzdWx0ID0gSU1Q
TC0+Z2V0RmxvYXRWYWx1ZSh1bml0VHlwZSwgZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gcmFpc2VPbkRPTUVycm9yKElNUEwtPmdl
dEZsb2F0VmFsdWUodW5pdFR5cGUpKTsKIH0KIAogLSAodm9pZClzZXRTdHJpbmdWYWx1ZToodW5z
aWduZWQgc2hvcnQpc3RyaW5nVHlwZSBzdHJpbmdWYWx1ZTooTlNTdHJpbmcgKilzdHJpbmdWYWx1
ZQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJD
b3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBJTVBMLT5zZXRTdHJpbmdWYWx1ZShzdHJp
bmdUeXBlLCBzdHJpbmdWYWx1ZSwgZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7CisgICAg
cmFpc2VPbkRPTUVycm9yKElNUEwtPnNldFN0cmluZ1ZhbHVlKHN0cmluZ1R5cGUsIHN0cmluZ1Zh
bHVlKSk7CiB9CiAKIC0gKE5TU3RyaW5nICopZ2V0U3RyaW5nVmFsdWUKIHsKICAgICBXZWJDb3Jl
OjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29k
ZSBlYyA9IDA7Ci0gICAgTlNTdHJpbmcgKnJlc3VsdCA9IElNUEwtPmdldFN0cmluZ1ZhbHVlKGVj
KTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0
dXJuIHJhaXNlT25ET01FcnJvcihJTVBMLT5nZXRTdHJpbmdWYWx1ZSgpKTsKIH0KIAogLSAoRE9N
Q291bnRlciAqKWdldENvdW50ZXJWYWx1ZQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51
bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBE
T01Db3VudGVyICpyZXN1bHQgPSBraXQoV1RGOjpnZXRQdHIoSU1QTC0+Z2V0Q291bnRlclZhbHVl
KGVjKSkpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICByZXR1cm4ga2l0KHJhaXNlT25ET01FcnJvcihJTVBMLT5nZXRDb3VudGVyVmFsdWUoKSkpOwog
fQogCiAtIChET01SZWN0ICopZ2V0UmVjdFZhbHVlCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhy
ZWFkTnVsbFN0YXRlIHN0YXRlOwotICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwot
ICAgIERPTVJlY3QgKnJlc3VsdCA9IGtpdChXVEY6OmdldFB0cihJTVBMLT5nZXRSZWN0VmFsdWUo
ZWMpKSk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAg
IHJldHVybiBraXQocmFpc2VPbkRPTUVycm9yKElNUEwtPmdldFJlY3RWYWx1ZSgpKSk7CiB9CiAK
IC0gKERPTVJHQkNvbG9yICopZ2V0UkdCQ29sb3JWYWx1ZQogewogICAgIFdlYkNvcmU6OkpTTWFp
blRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0g
MDsKLSAgICBET01SR0JDb2xvciAqcmVzdWx0ID0ga2l0KFdURjo6Z2V0UHRyKElNUEwtPmdldFJH
QkNvbG9yVmFsdWUoZWMpKSk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKLSAgICByZXR1cm4g
cmVzdWx0OworICAgIHJldHVybiBraXQocmFpc2VPbkRPTUVycm9yKElNUEwtPmdldFJHQkNvbG9y
VmFsdWUoKSkucHRyKCkpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9ET00vRE9NQ1NTUnVsZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9ET01DU1NSdWxlLm1t
CmluZGV4IDMxYzZhOGZiMWZmZmEzYzQ4N2EzNzlmYzg0NGMyYjgzZDc3ZTIwYWIuLjc2MGZiNWIx
ODg1ZThhMjcyODNjOWJiMmNhNzJiZmIyOTY3NmE1YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL0RPTS9ET01DU1NSdWxlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9ET01D
U1NSdWxlLm1tCkBAIC02OCw5ICs2OCw3IEBAIC0gKE5TU3RyaW5nICopY3NzVGV4dAogLSAodm9p
ZClzZXRDc3NUZXh0OihOU1N0cmluZyAqKW5ld0Nzc1RleHQKIHsKICAgICBXZWJDb3JlOjpKU01h
aW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9
IDA7Ci0gICAgSU1QTC0+c2V0Q3NzVGV4dChuZXdDc3NUZXh0LCBlYyk7Ci0gICAgcmFpc2VPbkRP
TUVycm9yKGVjKTsKKyAgICByYWlzZU9uRE9NRXJyb3IoSU1QTC0+c2V0Q3NzVGV4dChuZXdDc3NU
ZXh0KSk7CiB9CiAKIC0gKERPTUNTU1N0eWxlU2hlZXQgKilwYXJlbnRTdHlsZVNoZWV0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9ET00vRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbi5tbSBi
L1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9ET01DU1NTdHlsZURlY2xhcmF0aW9uLm1tCmluZGV4IDZi
MWM3NzhlMTQ0MmE2MTUxM2Q1YmM0YjdlOTM4ZjBmNzMyMzQ5NDkuLjM3YjNjNzMxNGQ3ZTM5MzQ2
MzdlZmYyYmYyN2I2ZTQwNDhmYjQzMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0RP
TS9ET01DU1NTdHlsZURlY2xhcmF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9E
T01DU1NTdHlsZURlY2xhcmF0aW9uLm1tCkBAIC02NCw5ICs2NCw3IEBAIC0gKE5TU3RyaW5nICop
Y3NzVGV4dAogLSAodm9pZClzZXRDc3NUZXh0OihOU1N0cmluZyAqKW5ld0Nzc1RleHQKIHsKICAg
ICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6RXhj
ZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgSU1QTC0+c2V0Q3NzVGV4dChuZXdDc3NUZXh0LCBlYyk7
Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKKyAgICByYWlzZU9uRE9NRXJyb3IoSU1QTC0+c2V0
Q3NzVGV4dChuZXdDc3NUZXh0KSk7CiB9CiAKIC0gKHVuc2lnbmVkKWxlbmd0aApAQCAtOTYsMTAg
Kzk0LDcgQEAgLSAoRE9NQ1NTVmFsdWUgKilnZXRQcm9wZXJ0eUNTU1ZhbHVlOihOU1N0cmluZyAq
KXByb3BlcnR5TmFtZQogLSAoTlNTdHJpbmcgKilyZW1vdmVQcm9wZXJ0eTooTlNTdHJpbmcgKilw
cm9wZXJ0eU5hbWUKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7
Ci0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgTlNTdHJpbmcgKnJlc3Vs
dCA9IElNUEwtPnJlbW92ZVByb3BlcnR5KHByb3BlcnR5TmFtZSwgZWMpOwotICAgIHJhaXNlT25E
T01FcnJvcihlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gcmFpc2VPbkRPTUVy
cm9yKElNUEwtPnJlbW92ZVByb3BlcnR5KHByb3BlcnR5TmFtZSkpOwogfQogCiAtIChOU1N0cmlu
ZyAqKWdldFByb3BlcnR5UHJpb3JpdHk6KE5TU3RyaW5nICopcHJvcGVydHlOYW1lCkBAIC0xMTEs
OSArMTA2LDcgQEAgLSAoTlNTdHJpbmcgKilnZXRQcm9wZXJ0eVByaW9yaXR5OihOU1N0cmluZyAq
KXByb3BlcnR5TmFtZQogLSAodm9pZClzZXRQcm9wZXJ0eTooTlNTdHJpbmcgKilwcm9wZXJ0eU5h
bWUgdmFsdWU6KE5TU3RyaW5nICopdmFsdWUgcHJpb3JpdHk6KE5TU3RyaW5nICopcHJpb3JpdHkK
IHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29y
ZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgSU1QTC0+c2V0UHJvcGVydHkocHJvcGVydHlO
YW1lLCB2YWx1ZSwgcHJpb3JpdHksIGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOworICAg
IHJldHVybiByYWlzZU9uRE9NRXJyb3IoSU1QTC0+c2V0UHJvcGVydHkocHJvcGVydHlOYW1lLCB2
YWx1ZSwgcHJpb3JpdHkpKTsKIH0KIAogLSAoTlNTdHJpbmcgKilpdGVtOih1bnNpZ25lZClpbmRl
eApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvRE9NL0RPTUNTU1N0eWxlU2hlZXQubW0g
Yi9Tb3VyY2UvV2ViS2l0L21hYy9ET00vRE9NQ1NTU3R5bGVTaGVldC5tbQppbmRleCBhNzEwNDY5
MjVlYTBkM2I2YWU3ODZmMDViMTc2MGUxMzI4MTI1Mzc1Li5kMWExZjBmMWVmM2ZhZDg4OWYzODdm
ZTg2MTE3MzVjODJjZTYwODczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9ET00vRE9N
Q1NTU3R5bGVTaGVldC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9ET00vRE9NQ1NTU3R5bGVT
aGVldC5tbQpAQCAtNjUsMzUgKzY1LDI1IEBAIC0gKERPTUNTU1J1bGVMaXN0ICopcnVsZXMKIC0g
KHVuc2lnbmVkKWluc2VydFJ1bGU6KE5TU3RyaW5nICopcnVsZSBpbmRleDoodW5zaWduZWQpaW5k
ZXgKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2Vi
Q29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgdW5zaWduZWQgcmVzdWx0ID0gSU1QTC0+
aW5zZXJ0UnVsZShydWxlLCBpbmRleCwgZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gcmFpc2VPbkRPTUVycm9yKElNUEwtPmluc2Vy
dFJ1bGUocnVsZSwgaW5kZXgpKTsKIH0KIAogLSAodm9pZClkZWxldGVSdWxlOih1bnNpZ25lZClp
bmRleAogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBX
ZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBJTVBMLT5kZWxldGVSdWxlKGluZGV4
LCBlYyk7Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKKyAgICByYWlzZU9uRE9NRXJyb3IoSU1Q
TC0+ZGVsZXRlUnVsZShpbmRleCkpOwogfQogCiAtIChpbnQpYWRkUnVsZTooTlNTdHJpbmcgKilz
ZWxlY3RvciBzdHlsZTooTlNTdHJpbmcgKilzdHlsZSBpbmRleDoodW5zaWduZWQpaW5kZXgKIHsK
ICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6
RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaW50IHJlc3VsdCA9IElNUEwtPmFkZFJ1bGUoc2Vs
ZWN0b3IsIHN0eWxlLCBpbmRleCwgZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihlYyk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gcmFpc2VPbkRPTUVycm9yKElNUEwtPmFkZFJ1bGUo
c2VsZWN0b3IsIHN0eWxlLCBpbmRleCkpOwogfQogCiAtICh2b2lkKXJlbW92ZVJ1bGU6KHVuc2ln
bmVkKWluZGV4CiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwot
ICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIElNUEwtPnJlbW92ZVJ1bGUo
aW5kZXgsIGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOworICAgIHJhaXNlT25ET01FcnJv
cihJTVBMLT5yZW1vdmVSdWxlKGluZGV4KSk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvbWFjL0RPTS9ET01DU1NWYWx1ZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9E
T01DU1NWYWx1ZS5tbQppbmRleCBlNWMwODkxOWZjNDcxY2VjNTFmYjY5ZDYxMDEzNThjYzczMjM2
MjE5Li44ODFlZjI3ZDRmYThmNTNlMTNlYmY0MjgzYmU1OWM4ZTNmOGM1ZmYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L21hYy9ET00vRE9NQ1NTVmFsdWUubW0KKysrIGIvU291cmNlL1dlYktp
dC9tYWMvRE9NL0RPTUNTU1ZhbHVlLm1tCkBAIC01OSw5ICs1OSw3IEBAIC0gKE5TU3RyaW5nICop
Y3NzVGV4dAogLSAodm9pZClzZXRDc3NUZXh0OihOU1N0cmluZyAqKW5ld0Nzc1RleHQKIHsKICAg
ICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6RXhj
ZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgSU1QTC0+c2V0Q3NzVGV4dChuZXdDc3NUZXh0LCBlYyk7
Ci0gICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKKyAgICByYWlzZU9uRE9NRXJyb3IoSU1QTC0+c2V0
Q3NzVGV4dChuZXdDc3NUZXh0KSk7CiB9CiAKIC0gKHVuc2lnbmVkIHNob3J0KWNzc1ZhbHVlVHlw
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvRE9NL0RPTU1lZGlhTGlzdC5tbSBiL1Nv
dXJjZS9XZWJLaXQvbWFjL0RPTS9ET01NZWRpYUxpc3QubW0KaW5kZXggZDgxN2NiMmE5OGU1NDRi
OTY3NzZhZTNmZmMyMzBiZTIyYmRjNDgyZC4uMDAzZGY2ZjdiODM4YTRiODFkMGE5MTY4YjM4Nzg5
MTk3MzI3MWYyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvRE9NL0RPTU1lZGlhTGlz
dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9ET00vRE9NTWVkaWFMaXN0Lm1tCkBAIC02MSw5
ICs2MSw3IEBAIC0gKE5TU3RyaW5nICopbWVkaWFUZXh0CiAtICh2b2lkKXNldE1lZGlhVGV4dDoo
TlNTdHJpbmcgKiluZXdNZWRpYVRleHQKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxs
U3RhdGUgc3RhdGU7Ci0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgSU1Q
TC0+c2V0TWVkaWFUZXh0KG5ld01lZGlhVGV4dCwgZWMpOwotICAgIHJhaXNlT25ET01FcnJvcihl
Yyk7CisgICAgcmFpc2VPbkRPTUVycm9yKElNUEwtPnNldE1lZGlhVGV4dChuZXdNZWRpYVRleHQp
KTsKIH0KIAogLSAodW5zaWduZWQpbGVuZ3RoCkBAIC04MSwxNyArNzksMTMgQEAgLSAoTlNTdHJp
bmcgKilpdGVtOih1bnNpZ25lZClpbmRleAogLSAodm9pZClkZWxldGVNZWRpdW06KE5TU3RyaW5n
ICopb2xkTWVkaXVtCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRl
OwotICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIElNUEwtPmRlbGV0ZU1l
ZGl1bShvbGRNZWRpdW0sIGVjKTsKLSAgICByYWlzZU9uRE9NRXJyb3IoZWMpOworICAgIHJhaXNl
T25ET01FcnJvcihJTVBMLT5kZWxldGVNZWRpdW0ob2xkTWVkaXVtKSk7CiB9CiAKIC0gKHZvaWQp
YXBwZW5kTWVkaXVtOihOU1N0cmluZyAqKW5ld01lZGl1bQogewogICAgIFdlYkNvcmU6OkpTTWFp
blRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0g
MDsKLSAgICBJTVBMLT5hcHBlbmRNZWRpdW0obmV3TWVkaXVtLCBlYyk7Ci0gICAgcmFpc2VPbkRP
TUVycm9yKGVjKTsKKyAgICByYWlzZU9uRE9NRXJyb3IoSU1QTC0+YXBwZW5kTWVkaXVtKG5ld01l
ZGl1bSkpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9ET00vRXhj
ZXB0aW9uSGFuZGxlcnMuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9FeGNlcHRpb25IYW5kbGVy
cy5oCmluZGV4IDBjNzQ1MWZjMTljZWVhMGFmNjUyZjBiZjE3ZTI2NDc3ZDM3ZWFjNjcuLjFiMGIx
MTc0NTY3YjFlZTU5YTU2MjNhZDdiZTJjNDBiYWFjYTAyNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvbWFjL0RPTS9FeGNlcHRpb25IYW5kbGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFj
L0RPTS9FeGNlcHRpb25IYW5kbGVycy5oCkBAIC0yNSwxNyArMjUsMzEgQEAKIAogI3ByYWdtYSBv
bmNlCiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLXVzaW5nIEV4Y2VwdGlvbkNvZGUgPSBpbnQ7Ci19
CisjaW5jbHVkZSA8V2ViQ29yZS9FeGNlcHRpb25Pci5oPgogCiBOT19SRVRVUk4gdm9pZCByYWlz
ZURPTUV4Y2VwdGlvbihXZWJDb3JlOjpFeGNlcHRpb25Db2RlKTsKK05PX1JFVFVSTiB2b2lkIHJh
aXNlRE9NRXhjZXB0aW9uKFdlYkNvcmU6OkV4Y2VwdGlvbiYmKTsKIE5PX1JFVFVSTiB2b2lkIHJh
aXNlVHlwZUVycm9yRXhjZXB0aW9uKCk7CiAKIHZvaWQgcmFpc2VPbkRPTUVycm9yKFdlYkNvcmU6
OkV4Y2VwdGlvbkNvZGUpOwordm9pZCByYWlzZU9uRE9NRXJyb3IoV2ViQ29yZTo6RXhjZXB0aW9u
T3I8dm9pZD4mJik7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIHJhaXNlT25ET01FcnJvcihXZWJD
b3JlOjpFeGNlcHRpb25PcjxUPiYmKTsKIAogaW5saW5lIHZvaWQgcmFpc2VPbkRPTUVycm9yKFdl
YkNvcmU6OkV4Y2VwdGlvbkNvZGUgY29kZSkKIHsKICAgICBpZiAoY29kZSkKICAgICAgICAgcmFp
c2VET01FeGNlcHRpb24oY29kZSk7CiB9CisKK2lubGluZSB2b2lkIHJhaXNlT25ET01FcnJvcihX
ZWJDb3JlOjpFeGNlcHRpb25Pcjx2b2lkPiYmIHBvc3NpYmxlRXhjZXB0aW9uKQoreworICAgIGlm
IChwb3NzaWJsZUV4Y2VwdGlvbi5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmFpc2VET01FeGNl
cHRpb24ocG9zc2libGVFeGNlcHRpb24ucmVsZWFzZUV4Y2VwdGlvbigpKTsKK30KKwordGVtcGxh
dGU8dHlwZW5hbWUgVD4gaW5saW5lIFQgcmFpc2VPbkRPTUVycm9yKFdlYkNvcmU6OkV4Y2VwdGlv
bk9yPFQ+JiYgZXhjZXB0aW9uT3JSZXR1cm5WYWx1ZSkKK3sKKyAgICBpZiAoZXhjZXB0aW9uT3JS
ZXR1cm5WYWx1ZS5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmFpc2VET01FeGNlcHRpb24oZXhj
ZXB0aW9uT3JSZXR1cm5WYWx1ZS5yZWxlYXNlRXhjZXB0aW9uKCkpOworICAgIHJldHVybiBleGNl
cHRpb25PclJldHVyblZhbHVlLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9tYWMvRE9NL0V4Y2VwdGlvbkhhbmRsZXJzLm1tIGIvU291cmNlL1dlYktp
dC9tYWMvRE9NL0V4Y2VwdGlvbkhhbmRsZXJzLm1tCmluZGV4IDI5N2ViZDkzNWY0NTkxNjA0ODU3
ODk1YjJlNmY0M2RhNGUyYzlmYzUuLjllZGIxZDc0MWNjN2EyZGM3ZjNmOTQxNzc2NjY2MGY5YzNl
ZTNhYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0RPTS9FeGNlcHRpb25IYW5kbGVy
cy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9ET00vRXhjZXB0aW9uSGFuZGxlcnMubW0KQEAg
LTc2LDMgKzc2LDggQEAgdm9pZCByYWlzZVR5cGVFcnJvckV4Y2VwdGlvbigpCiB7CiAgICAgcmFp
c2VET01FeGNlcHRpb24oV2ViQ29yZTo6VHlwZUVycm9yKTsKIH0KKwordm9pZCByYWlzZURPTUV4
Y2VwdGlvbihXZWJDb3JlOjpFeGNlcHRpb24mJiBleGNlcHRpb24pCit7CisgICAgcmFpc2VET01F
eGNlcHRpb24oZXhjZXB0aW9uLmNvZGUoKSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L3dpbi9ET01DU1NDbGFzc2VzLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL0RPTUNTU0NsYXNzZXMu
Y3BwCmluZGV4IGQ4YTUwMzkxMTUzYjBjYzhiZGYyOWZjMGM5ZmQ1YWJkZTExMGE0ODYuLmZlYmI5
MmVkODEzZDE4NWY1OTNiMTc5NGFjOTA0MmJlNTYxYjg1ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvd2luL0RPTUNTU0NsYXNzZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0RPTUNT
U0NsYXNzZXMuY3BwCkBAIC05Miw5ICs5Miw3IEBAIEhSRVNVTFQgRE9NQ1NTU3R5bGVEZWNsYXJh
dGlvbjo6Y3NzVGV4dChfX2RlcmVmX29wdF9vdXQgQlNUUiogcmVzdWx0KQogSFJFU1VMVCBET01D
U1NTdHlsZURlY2xhcmF0aW9uOjpzZXRDc3NUZXh0KF9Jbl8gQlNUUiBjc3NUZXh0KQogewogICAg
IFdURjo6U3RyaW5nIGNzc1RleHRTdHJpbmcoY3NzVGV4dCk7Ci0gICAgLy8gRklYTUU6IDxyZGFy
Oi8vNTE0ODA0NT4gcmV0dXJuIERPTSBleGNlcHRpb24gaW5mbwotICAgIFdlYkNvcmU6OkV4Y2Vw
dGlvbkNvZGUgZWM7Ci0gICAgbV9zdHlsZS0+c2V0Q3NzVGV4dChjc3NUZXh0U3RyaW5nLCBlYyk7
CisgICAgbV9zdHlsZS0+c2V0Q3NzVGV4dChjc3NUZXh0U3RyaW5nKTsKICAgICByZXR1cm4gU19P
SzsKIH0KIApAQCAtMTQ0LDkgKzE0Miw3IEBAIEhSRVNVTFQgRE9NQ1NTU3R5bGVEZWNsYXJhdGlv
bjo6c2V0UHJvcGVydHkoX0luXyBCU1RSIHByb3BlcnR5TmFtZSwgX0luXyBCU1RSIHZhCiAgICAg
V1RGOjpTdHJpbmcgcHJvcGVydHlOYW1lU3RyaW5nKHByb3BlcnR5TmFtZSk7CiAgICAgV1RGOjpT
dHJpbmcgdmFsdWVTdHJpbmcodmFsdWUpOwogICAgIFdURjo6U3RyaW5nIHByaW9yaXR5U3RyaW5n
KHByaW9yaXR5KTsKLSAgICAvLyBGSVhNRTogPHJkYXI6Ly81MTQ4MDQ1PiByZXR1cm4gRE9NIGV4
Y2VwdGlvbiBpbmZvCi0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBjb2RlOwotICAgIG1fc3R5
bGUtPnNldFByb3BlcnR5KHByb3BlcnR5TmFtZVN0cmluZywgdmFsdWVTdHJpbmcsIHByaW9yaXR5
U3RyaW5nLCBjb2RlKTsKKyAgICBtX3N0eWxlLT5zZXRQcm9wZXJ0eShwcm9wZXJ0eU5hbWVTdHJp
bmcsIHZhbHVlU3RyaW5nLCBwcmlvcml0eVN0cmluZyk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2d0ay9ET00vV2ViS2l0RE9NQ1NTUnVsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUNTU1J1bGUuY3BwCmluZGV4IDIy
YjA1NDJlZjQ1MjczZGUxNjhlYjc2MDYyMDJiMThiMDdhNGY0NTQuLmUzMzE4YmQ0M2YwOTM3MTRl
MjU4MDJmODAzNDQzZTc0NTMzMmU5MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NQ1NTUnVsZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9X
ZWJLaXRET01DU1NSdWxlLmNwcApAQCAtMSw2ICsxLDUgQEAKIC8qCiAgKiAgVGhpcyBmaWxlIGlz
IHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICogIFRoaXMgZmlsZSBo
YXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkh
CiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjE3LDEwICsyMTYsOSBAQCB2b2lkIHdlYmtpdF9k
b21fY3NzX3J1bGVfc2V0X2Nzc190ZXh0KFdlYktpdERPTUNTU1J1bGUqIHNlbGYsIGNvbnN0IGdj
aGFyKiB2YWx1ZQogICAgIGdfcmV0dXJuX2lmX2ZhaWwoIWVycm9yIHx8ICEqZXJyb3IpOwogICAg
IFdlYkNvcmU6OkNTU1J1bGUqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgV1RGOjpT
dHJpbmcgY29udmVydGVkVmFsdWUgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgodmFsdWUpOwotICAg
IFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGl0ZW0tPnNldENzc1RleHQoY29u
dmVydGVkVmFsdWUsIGVjKTsKLSAgICBpZiAoZWMpIHsKLSAgICAgICAgV2ViQ29yZTo6RXhjZXB0
aW9uQ29kZURlc2NyaXB0aW9uIGVjZGVzYyhlYyk7CisgICAgYXV0byByZXN1bHQgPSBpdGVtLT5z
ZXRDc3NUZXh0KGNvbnZlcnRlZFZhbHVlKTsKKyAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigp
KSB7CisgICAgICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiBlY2Rlc2MocmVz
dWx0LnJlbGVhc2VFeGNlcHRpb24oKS5jb2RlKCkpOwogICAgICAgICBnX3NldF9lcnJvcl9saXRl
cmFsKGVycm9yLCBnX3F1YXJrX2Zyb21fc3RyaW5nKCJXRUJLSVRfRE9NIiksIGVjZGVzYy5jb2Rl
LCBlY2Rlc2MubmFtZSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01DU1NTdHlsZURlY2xh
cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2d0ay9ET00vV2ViS2l0RE9NQ1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggZTJiZjI2NDNj
NDRkMzkzMTA0ZTg1ZmNhZTM4NjVlY2RhOGZiNjdhNi4uZDQ4NDRlNjU5ZmUzMDg4MDdmMGYzMjhk
MTE4OGUyMzlkY2YxN2RmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01DU1NTdHlsZURlY2xhcmF0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsv
RE9NL1dlYktpdERPTUNTU1N0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC0xLDYgKzEsNSBAQAogLyoK
ICAqICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3Qu
Ci0gKiAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5w
bC4gRE8gTk9UIE1PRElGWSEKICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0xOTYsOSArMTk1LDEw
IEBAIGdjaGFyKiB3ZWJraXRfZG9tX2Nzc19zdHlsZV9kZWNsYXJhdGlvbl9yZW1vdmVfcHJvcGVy
dHkoV2ViS2l0RE9NQ1NTU3R5bGVEZWNsYXJhCiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoIWVy
cm9yIHx8ICEqZXJyb3IsIDApOwogICAgIFdlYkNvcmU6OkNTU1N0eWxlRGVjbGFyYXRpb24qIGl0
ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgV1RGOjpTdHJpbmcgY29udmVydGVkUHJvcGVy
dHlOYW1lID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KHByb3BlcnR5TmFtZSk7Ci0gICAgV2ViQ29y
ZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgZ2NoYXIqIHJlc3VsdCA9IGNvbnZlcnRUb1VU
RjhTdHJpbmcoaXRlbS0+cmVtb3ZlUHJvcGVydHkoY29udmVydGVkUHJvcGVydHlOYW1lLCBlYykp
OwotICAgIHJldHVybiByZXN1bHQ7CisgICAgYXV0byByZXN1bHQgPSBpdGVtLT5yZW1vdmVQcm9w
ZXJ0eShjb252ZXJ0ZWRQcm9wZXJ0eU5hbWUpOworICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9u
KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBjb252ZXJ0VG9VVEY4U3Ry
aW5nKHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7CiB9CiAKIGdjaGFyKiB3ZWJraXRfZG9t
X2Nzc19zdHlsZV9kZWNsYXJhdGlvbl9nZXRfcHJvcGVydHlfcHJpb3JpdHkoV2ViS2l0RE9NQ1NT
U3R5bGVEZWNsYXJhdGlvbiogc2VsZiwgY29uc3QgZ2NoYXIqIHByb3BlcnR5TmFtZSkKQEAgLTIy
NCwxMCArMjI0LDkgQEAgdm9pZCB3ZWJraXRfZG9tX2Nzc19zdHlsZV9kZWNsYXJhdGlvbl9zZXRf
cHJvcGVydHkoV2ViS2l0RE9NQ1NTU3R5bGVEZWNsYXJhdGlvbioKICAgICBXVEY6OlN0cmluZyBj
b252ZXJ0ZWRQcm9wZXJ0eU5hbWUgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgocHJvcGVydHlOYW1l
KTsKICAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRWYWx1ZSA9IFdURjo6U3RyaW5nOjpmcm9tVVRG
OCh2YWx1ZSk7CiAgICAgV1RGOjpTdHJpbmcgY29udmVydGVkUHJpb3JpdHkgPSBXVEY6OlN0cmlu
Zzo6ZnJvbVVURjgocHJpb3JpdHkpOwotICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwotICAgIGl0ZW0tPnNldFByb3BlcnR5KGNvbnZlcnRlZFByb3BlcnR5TmFtZSwgY29udmVydGVk
VmFsdWUsIGNvbnZlcnRlZFByaW9yaXR5LCBlYyk7Ci0gICAgaWYgKGVjKSB7Ci0gICAgICAgIFdl
YkNvcmU6OkV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiBlY2Rlc2MoZWMpOworICAgIGF1dG8gcmVz
dWx0ID0gaXRlbS0+c2V0UHJvcGVydHkoY29udmVydGVkUHJvcGVydHlOYW1lLCBjb252ZXJ0ZWRW
YWx1ZSwgY29udmVydGVkUHJpb3JpdHkpOworICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkp
IHsKKyAgICAgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uIGVjZGVzYyhyZXN1
bHQucmVsZWFzZUV4Y2VwdGlvbigpLmNvZGUoKSk7CiAgICAgICAgIGdfc2V0X2Vycm9yX2xpdGVy
YWwoZXJyb3IsIGdfcXVhcmtfZnJvbV9zdHJpbmcoIldFQktJVF9ET00iKSwgZWNkZXNjLmNvZGUs
IGVjZGVzYy5uYW1lKTsKICAgICB9CiB9CkBAIC0yODAsMTAgKzI3OSw5IEBAIHZvaWQgd2Via2l0
X2RvbV9jc3Nfc3R5bGVfZGVjbGFyYXRpb25fc2V0X2Nzc190ZXh0KFdlYktpdERPTUNTU1N0eWxl
RGVjbGFyYXRpb24qCiAgICAgZ19yZXR1cm5faWZfZmFpbCghZXJyb3IgfHwgISplcnJvcik7CiAg
ICAgV2ViQ29yZTo6Q1NTU3R5bGVEZWNsYXJhdGlvbiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxm
KTsKICAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRWYWx1ZSA9IFdURjo6U3RyaW5nOjpmcm9tVVRG
OCh2YWx1ZSk7Ci0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaXRlbS0+
c2V0Q3NzVGV4dChjb252ZXJ0ZWRWYWx1ZSwgZWMpOwotICAgIGlmIChlYykgewotICAgICAgICBX
ZWJDb3JlOjpFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24gZWNkZXNjKGVjKTsKKyAgICBhdXRvIHJl
c3VsdCA9IGl0ZW0tPnNldENzc1RleHQoY29udmVydGVkVmFsdWUpOworICAgIGlmIChyZXN1bHQu
aGFzRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZURlc2NyaXB0
aW9uIGVjZGVzYyhyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpLmNvZGUoKSk7CiAgICAgICAgIGdf
c2V0X2Vycm9yX2xpdGVyYWwoZXJyb3IsIGdfcXVhcmtfZnJvbV9zdHJpbmcoIldFQktJVF9ET00i
KSwgZWNkZXNjLmNvZGUsIGVjZGVzYy5uYW1lKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERP
TUNTU1N0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01DU1NTdHlsZVNoZWV0LmNwcAppbmRleCAzNTdhYzE3
NTA5Y2IzOTU4NDk1MWNjMmEwYmQ2ZDZhMzNkZWI5Mzg0Li43Y2Y1N2NlMzgwY2I1M2FjNzE0N2Q5
NDkxYTgwNDRmNWNkY2UxOTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUNTU1N0eWxlU2hlZXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00v
V2ViS2l0RE9NQ1NTU3R5bGVTaGVldC5jcHAKQEAgLTEsNiArMSw1IEBACiAvKgogICogIFRoaXMg
ZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KLSAqICBUaGlz
IGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1Qg
TU9ESUZZIQogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTEzNSwxMyArMTM0LDEzIEBAIGd1bG9u
ZyB3ZWJraXRfZG9tX2Nzc19zdHlsZV9zaGVldF9pbnNlcnRfcnVsZShXZWJLaXRET01DU1NTdHls
ZVNoZWV0KiBzZWxmLCBjb25zCiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoIWVycm9yIHx8ICEq
ZXJyb3IsIDApOwogICAgIFdlYkNvcmU6OkNTU1N0eWxlU2hlZXQqIGl0ZW0gPSBXZWJLaXQ6OmNv
cmUoc2VsZik7CiAgICAgV1RGOjpTdHJpbmcgY29udmVydGVkUnVsZSA9IFdURjo6U3RyaW5nOjpm
cm9tVVRGOChydWxlKTsKLSAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBn
dWxvbmcgcmVzdWx0ID0gaXRlbS0+aW5zZXJ0UnVsZShjb252ZXJ0ZWRSdWxlLCBpbmRleCwgZWMp
OwotICAgIGlmIChlYykgewotICAgICAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlRGVzY3JpcHRp
b24gZWNkZXNjKGVjKTsKKyAgICBhdXRvIHJlc3VsdCA9IGl0ZW0tPmluc2VydFJ1bGUoY29udmVy
dGVkUnVsZSwgaW5kZXgpOworICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAg
ICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uIGVjZGVzYyhyZXN1bHQucmVsZWFz
ZUV4Y2VwdGlvbigpLmNvZGUoKSk7CiAgICAgICAgIGdfc2V0X2Vycm9yX2xpdGVyYWwoZXJyb3Is
IGdfcXVhcmtfZnJvbV9zdHJpbmcoIldFQktJVF9ET00iKSwgZWNkZXNjLmNvZGUsIGVjZGVzYy5u
YW1lKTsKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIHJldHVybiByZXN1bHQ7CisgICAg
cmV0dXJuIHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKIH0KIAogdm9pZCB3ZWJraXRfZG9t
X2Nzc19zdHlsZV9zaGVldF9kZWxldGVfcnVsZShXZWJLaXRET01DU1NTdHlsZVNoZWV0KiBzZWxm
LCBndWxvbmcgaW5kZXgsIEdFcnJvcioqIGVycm9yKQpAQCAtMTUwLDEwICsxNDksOSBAQCB2b2lk
IHdlYmtpdF9kb21fY3NzX3N0eWxlX3NoZWV0X2RlbGV0ZV9ydWxlKFdlYktpdERPTUNTU1N0eWxl
U2hlZXQqIHNlbGYsIGd1bG9uZwogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19D
U1NfU1RZTEVfU0hFRVQoc2VsZikpOwogICAgIGdfcmV0dXJuX2lmX2ZhaWwoIWVycm9yIHx8ICEq
ZXJyb3IpOwogICAgIFdlYkNvcmU6OkNTU1N0eWxlU2hlZXQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUo
c2VsZik7Ci0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaXRlbS0+ZGVs
ZXRlUnVsZShpbmRleCwgZWMpOwotICAgIGlmIChlYykgewotICAgICAgICBXZWJDb3JlOjpFeGNl
cHRpb25Db2RlRGVzY3JpcHRpb24gZWNkZXNjKGVjKTsKKyAgICBhdXRvIHJlc3VsdCA9IGl0ZW0t
PmRlbGV0ZVJ1bGUoaW5kZXgpOworICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKKyAg
ICAgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uIGVjZGVzYyhyZXN1bHQucmVs
ZWFzZUV4Y2VwdGlvbigpLmNvZGUoKSk7CiAgICAgICAgIGdfc2V0X2Vycm9yX2xpdGVyYWwoZXJy
b3IsIGdfcXVhcmtfZnJvbV9zdHJpbmcoIldFQktJVF9ET00iKSwgZWNkZXNjLmNvZGUsIGVjZGVz
Yy5uYW1lKTsKICAgICB9CiB9CkBAIC0xNjgsMTMgKzE2NiwxMyBAQCBnbG9uZyB3ZWJraXRfZG9t
X2Nzc19zdHlsZV9zaGVldF9hZGRfcnVsZShXZWJLaXRET01DU1NTdHlsZVNoZWV0KiBzZWxmLCBj
b25zdCBnYwogICAgIFdlYkNvcmU6OkNTU1N0eWxlU2hlZXQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUo
c2VsZik7CiAgICAgV1RGOjpTdHJpbmcgY29udmVydGVkU2VsZWN0b3IgPSBXVEY6OlN0cmluZzo6
ZnJvbVVURjgoc2VsZWN0b3IpOwogICAgIFdURjo6U3RyaW5nIGNvbnZlcnRlZFN0eWxlID0gV1RG
OjpTdHJpbmc6OmZyb21VVEY4KHN0eWxlKTsKLSAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVj
ID0gMDsKLSAgICBnbG9uZyByZXN1bHQgPSBpdGVtLT5hZGRSdWxlKGNvbnZlcnRlZFNlbGVjdG9y
LCBjb252ZXJ0ZWRTdHlsZSwgaW5kZXgsIGVjKTsKLSAgICBpZiAoZWMpIHsKLSAgICAgICAgV2Vi
Q29yZTo6RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uIGVjZGVzYyhlYyk7CisgICAgYXV0byByZXN1
bHQgPSBpdGVtLT5hZGRSdWxlKGNvbnZlcnRlZFNlbGVjdG9yLCBjb252ZXJ0ZWRTdHlsZSwgaW5k
ZXgpOworICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgV2ViQ29yZTo6
RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uIGVjZGVzYyhyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigp
LmNvZGUoKSk7CiAgICAgICAgIGdfc2V0X2Vycm9yX2xpdGVyYWwoZXJyb3IsIGdfcXVhcmtfZnJv
bV9zdHJpbmcoIldFQktJVF9ET00iKSwgZWNkZXNjLmNvZGUsIGVjZGVzYy5uYW1lKTsKKyAgICAg
ICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiByZXN1
bHQucmVsZWFzZVJldHVyblZhbHVlKCk7CiB9CiAKIHZvaWQgd2Via2l0X2RvbV9jc3Nfc3R5bGVf
c2hlZXRfcmVtb3ZlX3J1bGUoV2ViS2l0RE9NQ1NTU3R5bGVTaGVldCogc2VsZiwgZ3Vsb25nIGlu
ZGV4LCBHRXJyb3IqKiBlcnJvcikKQEAgLTE4MywxMCArMTgxLDkgQEAgdm9pZCB3ZWJraXRfZG9t
X2Nzc19zdHlsZV9zaGVldF9yZW1vdmVfcnVsZShXZWJLaXRET01DU1NTdHlsZVNoZWV0KiBzZWxm
LCBndWxvbmcKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfQ1NTX1NUWUxFX1NI
RUVUKHNlbGYpKTsKICAgICBnX3JldHVybl9pZl9mYWlsKCFlcnJvciB8fCAhKmVycm9yKTsKICAg
ICBXZWJDb3JlOjpDU1NTdHlsZVNoZWV0KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwotICAg
IFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGl0ZW0tPnJlbW92ZVJ1bGUoaW5k
ZXgsIGVjKTsKLSAgICBpZiAoZWMpIHsKLSAgICAgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZURl
c2NyaXB0aW9uIGVjZGVzYyhlYyk7CisgICAgYXV0byByZXN1bHQgPSBpdGVtLT5yZW1vdmVSdWxl
KGluZGV4KTsKKyAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgIFdlYkNv
cmU6OkV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiBlY2Rlc2MocmVzdWx0LnJlbGVhc2VFeGNlcHRp
b24oKS5jb2RlKCkpOwogICAgICAgICBnX3NldF9lcnJvcl9saXRlcmFsKGVycm9yLCBnX3F1YXJr
X2Zyb21fc3RyaW5nKCJXRUJLSVRfRE9NIiksIGVjZGVzYy5jb2RlLCBlY2Rlc2MubmFtZSk7CiAg
ICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01DU1NWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUNTU1ZhbHVlLmNw
cAppbmRleCBiMDk2NTM2MGRkNGU4YjBhODRlZmE5MzczYTMwZmU0MGRiY2M4MGY0Li43NDdjNGQ3
Y2I1NTM5ZDI5MmM3ZDM3MzMyY2I2NTM1ZjNmNjRlYzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTUNTU1Zh
bHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9ndGsvRE9NL1dlYktpdERPTUNTU1ZhbHVlLmNwcApAQCAtMSw2ICsxLDUgQEAKIC8qCiAgKiAg
VGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgotICog
IFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERP
IE5PVCBNT0RJRlkhCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMTc5LDEwICsxNzgsOSBAQCB2
b2lkIHdlYmtpdF9kb21fY3NzX3ZhbHVlX3NldF9jc3NfdGV4dChXZWJLaXRET01DU1NWYWx1ZSog
c2VsZiwgY29uc3QgZ2NoYXIqIHZhbAogICAgIGdfcmV0dXJuX2lmX2ZhaWwoIWVycm9yIHx8ICEq
ZXJyb3IpOwogICAgIFdlYkNvcmU6OkNTU1ZhbHVlKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYp
OwogICAgIFdURjo6U3RyaW5nIGNvbnZlcnRlZFZhbHVlID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4
KHZhbHVlKTsKLSAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBpdGVtLT5z
ZXRDc3NUZXh0KGNvbnZlcnRlZFZhbHVlLCBlYyk7Ci0gICAgaWYgKGVjKSB7Ci0gICAgICAgIFdl
YkNvcmU6OkV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiBlY2Rlc2MoZWMpOworICAgIGF1dG8gcmVz
dWx0ID0gaXRlbS0+c2V0Q3NzVGV4dChjb252ZXJ0ZWRWYWx1ZSk7CisgICAgaWYgKHJlc3VsdC5o
YXNFeGNlcHRpb24oKSkgeworICAgICAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlRGVzY3JpcHRp
b24gZWNkZXNjKHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkuY29kZSgpKTsKICAgICAgICAgZ19z
ZXRfZXJyb3JfbGl0ZXJhbChlcnJvciwgZ19xdWFya19mcm9tX3N0cmluZygiV0VCS0lUX0RPTSIp
LCBlY2Rlc2MuY29kZSwgZWNkZXNjLm5hbWUpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9N
TWVkaWFMaXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2d0ay9ET00vV2ViS2l0RE9NTWVkaWFMaXN0LmNwcAppbmRleCA4Mzg5Njc0NmNlZjUwODZh
MWI5ZDRkMDJmOGZkMzE2OGY3ODRiOWE3Li5hZDU3M2I2YjVhNmIxYjFjM2VjZmVlZWE0MWU0MWY0
ODc1Y2E0ZTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTU1lZGlhTGlzdC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01NZWRp
YUxpc3QuY3BwCkBAIC0xLDYgKzEsNSBAQAogLyoKICAqICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0
aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCi0gKiAgVGhpcyBmaWxlIGhhcyBiZWVuIGdl
bmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKICAqCiAgKiAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCkBAIC0xNzksMTAgKzE3OCw5IEBAIHZvaWQgd2Via2l0X2RvbV9tZWRpYV9s
aXN0X2RlbGV0ZV9tZWRpdW0oV2ViS2l0RE9NTWVkaWFMaXN0KiBzZWxmLCBjb25zdCBnY2hhcioK
ICAgICBnX3JldHVybl9pZl9mYWlsKCFlcnJvciB8fCAhKmVycm9yKTsKICAgICBXZWJDb3JlOjpN
ZWRpYUxpc3QqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgV1RGOjpTdHJpbmcgY29u
dmVydGVkT2xkTWVkaXVtID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KG9sZE1lZGl1bSk7Ci0gICAg
V2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaXRlbS0+ZGVsZXRlTWVkaXVtKGNv
bnZlcnRlZE9sZE1lZGl1bSwgZWMpOwotICAgIGlmIChlYykgewotICAgICAgICBXZWJDb3JlOjpF
eGNlcHRpb25Db2RlRGVzY3JpcHRpb24gZWNkZXNjKGVjKTsKKyAgICBhdXRvIHJlc3VsdCA9IGl0
ZW0tPmRlbGV0ZU1lZGl1bShjb252ZXJ0ZWRPbGRNZWRpdW0pOworICAgIGlmIChyZXN1bHQuaGFz
RXhjZXB0aW9uKCkpIHsKKyAgICAgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9u
IGVjZGVzYyhyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpLmNvZGUoKSk7CiAgICAgICAgIGdfc2V0
X2Vycm9yX2xpdGVyYWwoZXJyb3IsIGdfcXVhcmtfZnJvbV9zdHJpbmcoIldFQktJVF9ET00iKSwg
ZWNkZXNjLmNvZGUsIGVjZGVzYy5uYW1lKTsKICAgICB9CiB9CkBAIC0xOTUsMTAgKzE5Myw5IEBA
IHZvaWQgd2Via2l0X2RvbV9tZWRpYV9saXN0X2FwcGVuZF9tZWRpdW0oV2ViS2l0RE9NTWVkaWFM
aXN0KiBzZWxmLCBjb25zdCBnY2hhcioKICAgICBnX3JldHVybl9pZl9mYWlsKCFlcnJvciB8fCAh
KmVycm9yKTsKICAgICBXZWJDb3JlOjpNZWRpYUxpc3QqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2Vs
Zik7CiAgICAgV1RGOjpTdHJpbmcgY29udmVydGVkTmV3TWVkaXVtID0gV1RGOjpTdHJpbmc6OmZy
b21VVEY4KG5ld01lZGl1bSk7Ci0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0g
ICAgaXRlbS0+YXBwZW5kTWVkaXVtKGNvbnZlcnRlZE5ld01lZGl1bSwgZWMpOwotICAgIGlmIChl
YykgewotICAgICAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24gZWNkZXNjKGVj
KTsKKyAgICBhdXRvIHJlc3VsdCA9IGl0ZW0tPmFwcGVuZE1lZGl1bShjb252ZXJ0ZWROZXdNZWRp
dW0pOworICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgV2ViQ29yZTo6
RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uIGVjZGVzYyhyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigp
LmNvZGUoKSk7CiAgICAgICAgIGdfc2V0X2Vycm9yX2xpdGVyYWwoZXJyb3IsIGdfcXVhcmtfZnJv
bV9zdHJpbmcoIldFQktJVF9ET00iKSwgZWNkZXNjLmNvZGUsIGVjZGVzYy5uYW1lKTsKICAgICB9
CiB9CkBAIC0yMjAsMTAgKzIxNyw5IEBAIHZvaWQgd2Via2l0X2RvbV9tZWRpYV9saXN0X3NldF9t
ZWRpYV90ZXh0KFdlYktpdERPTU1lZGlhTGlzdCogc2VsZiwgY29uc3QgZ2NoYXIqCiAgICAgZ19y
ZXR1cm5faWZfZmFpbCghZXJyb3IgfHwgISplcnJvcik7CiAgICAgV2ViQ29yZTo6TWVkaWFMaXN0
KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIFdURjo6U3RyaW5nIGNvbnZlcnRlZFZh
bHVlID0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KHZhbHVlKTsKLSAgICBXZWJDb3JlOjpFeGNlcHRp
b25Db2RlIGVjID0gMDsKLSAgICBpdGVtLT5zZXRNZWRpYVRleHQoY29udmVydGVkVmFsdWUsIGVj
KTsKLSAgICBpZiAoZWMpIHsKLSAgICAgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZURlc2NyaXB0
aW9uIGVjZGVzYyhlYyk7CisgICAgYXV0byByZXN1bHQgPSBpdGVtLT5zZXRNZWRpYVRleHQoY29u
dmVydGVkVmFsdWUpOworICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAgICAg
V2ViQ29yZTo6RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uIGVjZGVzYyhyZXN1bHQucmVsZWFzZUV4
Y2VwdGlvbigpLmNvZGUoKSk7CiAgICAgICAgIGdfc2V0X2Vycm9yX2xpdGVyYWwoZXJyb3IsIGdf
cXVhcmtfZnJvbV9zdHJpbmcoIldFQktJVF9ET00iKSwgZWNkZXNjLmNvZGUsIGVjZGVzYy5uYW1l
KTsKICAgICB9CiB9Cg==
</data>
<flag name="review"
          id="314854"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>