<?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>216232</bug_id>
          
          <creation_ts>2020-09-06 15:12:00 -0700</creation_ts>
          <short_desc>[LFC][IFC] Rename Display::LineBox to Display::Line</short_desc>
          <delta_ts>2020-09-06 16:43:16 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>annulen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>changseok</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1686231</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2020-09-06 15:12:00 -0700</bug_when>
    <thetext>so that we don&apos;t confuse it with Layout::LineBox (which is the spec line box)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686233</commentid>
    <comment_count>1</comment_count>
      <attachid>408138</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-09-06 15:14:39 -0700</bug_when>
    <thetext>Created attachment 408138
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686241</commentid>
    <comment_count>2</comment_count>
      <attachid>408143</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-09-06 15:33:49 -0700</bug_when>
    <thetext>Created attachment 408143
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686244</commentid>
    <comment_count>3</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2020-09-06 15:41:08 -0700</bug_when>
    <thetext>Thanks Sam!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686258</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-09-06 16:42:29 -0700</bug_when>
    <thetext>Committed r266685: &lt;https://trac.webkit.org/changeset/266685&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 408143.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686259</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-09-06 16:43:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/68436952&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408138</attachid>
            <date>2020-09-06 15:14:39 -0700</date>
            <delta_ts>2020-09-06 15:33:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216232-20200906151438.patch</filename>
            <type>text/plain</type>
            <size>35851</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2NjgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDMyMDgxMjRhM2JkZmM0
MjBmN2VhMGRjNTEyOTdjNGEwZWM0NDFiNy4uNDE1YjZkYTk5ZTkwMThhNDZhY2QyMmFlMDBmOWYx
MWNkZTY0YWFkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDIwLTA5LTA2ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSUZDXSBSZW5hbWUg
RGlzcGxheTo6TGluZUJveCB0byBEaXNwbGF5OjpMaW5lCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTYyMzIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEaXNwbGF5OjpMaW5lQm94IHJlcHJlc2VudCBhIGxp
bmUgYW5kIG5vdCB0byBiZSBjb25mdXNlZCB3aXRoIExheW91dDo6TGluZUJveCB3aGljaCByZXBy
ZXNlbnRzIGEgY29sbGVjdGlvbiBvZiBpbmxpbmUgYm94ZXMuCisKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogbGF5b3V0L0Zvcm1hdHRpbmdD
b250ZXh0R2VvbWV0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5n
Q29udGV4dDo6R2VvbWV0cnk6OmNvbnRlbnRIZWlnaHRGb3JGb3JtYXR0aW5nQ29udGV4dFJvb3Qg
Y29uc3QpOgorICAgICAgICAqIGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5n
Q29udGV4dEdlb21ldHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3Jt
YXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd05vblJlcGxhY2VkSGVpZ2h0QW5kTWFyZ2lu
KToKKyAgICAgICAgKiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrTWFyZ2luQ29sbGFwc2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpN
YXJnaW5Db2xsYXBzZTo6bWFyZ2luc0NvbGxhcHNlVGhyb3VnaCBjb25zdCk6CisgICAgICAgICog
bGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlJbmxpbmVDb250ZW50Lmg6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5OjpJbmxpbmVDb250ZW50OjpsaW5lRm9yUnVuIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXk6OklubGluZUNvbnRlbnQ6OmxpbmVCb3hGb3JSdW4gY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIGxheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5TGluZS5oOiBSZW5h
bWVkIGZyb20gU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlMaW5lQm94
LmguCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMaW5lOjpyZWN0IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXk6OkxpbmU6OnNjcm9sbGFibGVPdmVyZmxvdyBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMaW5lOjppbmtPdmVyZmxvdyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMaW5lOjpsZWZ0IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXk6OkxpbmU6OnJpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXk6OkxpbmU6OnRvcCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMaW5lOjpi
b3R0b20gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6TGluZTo6d2lkdGggY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6TGluZTo6aGVpZ2h0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkxpbmU6OmJhc2VsaW5lIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXk6OkxpbmU6OkxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eTo6TGluZTo6bW92ZVZlcnRpY2FsbHkpOgorICAgICAgICAqIGxheW91dC9kaXNwbGF5dHJlZS9E
aXNwbGF5UGFpbnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpwYWludElubGlu
ZUNvbnRlbnQpOgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1h
dHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0
dGluZ0NvbnRleHQ6OmxpbmVMYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxp
bmVGb3JtYXR0aW5nQ29udGV4dDo6Y3JlYXRlRGlzcGxheUJveGVzRm9yTGluZUNvbnRlbnQpOgor
ICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0
UXVpcmtzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQ6OlF1aXJrczo6bGluZURlc2NlbnROZWVkc0NvbGxhcHNpbmcgY29uc3QpOgorICAgICAg
ICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdTdGF0ZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nU3RhdGU6OnNocmlua0Rpc3Bs
YXlJbmxpbmVDb250ZW50KToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9Jbmxp
bmVMaW5lQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6Y29uc3Ry
dWN0SW5saW5lQm94ZXMpOgorICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRl
Z3JhdGlvbkxpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRp
b246OkxpbmVMYXlvdXQ6OmNvbnRlbnRMb2dpY2FsSGVpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lTGF5b3V0OjpsaW5lQ291bnQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxpbmVMYXlvdXQ6OmZpcnN0TGlu
ZUJhc2VsaW5lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpM
aW5lTGF5b3V0OjpsYXN0TGluZUJhc2VsaW5lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dEludGVncmF0aW9uOjpMaW5lTGF5b3V0Ojpjb2xsZWN0T3ZlcmZsb3cpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxpbmVMYXlvdXQ6OnBhaW50KToKKyAgICAgICAg
KiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6Om91dHB1dElubGluZVJ1bnMpOgorICAgICAgICAqIGxheW91dC90YWJsZWZv
cm1hdHRpbmcvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OlRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OnNldFVzZWRHZW9tZXRyeUZvckNlbGxzKToK
KyAgICAgICAgKiBsYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlRm9ybWF0dGluZ0NvbnRleHRH
ZW9tZXRyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlRhYmxlRm9ybWF0dGluZ0Nv
bnRleHQ6Okdlb21ldHJ5Ojp1c2VkQmFzZWxpbmVGb3JDZWxsKToKKyAgICAgICAgKiByZW5kZXJp
bmcvbGluZS9MaW5lTGF5b3V0VHJhdmVyc2FsRGlzcGxheVJ1blBhdGguaDoKKyAgICAgICAgKFdl
YkNvcmU6OkxpbmVMYXlvdXRUcmF2ZXJzYWw6OkRpc3BsYXlSdW5QYXRoOjpiYXNlbGluZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0VHJhdmVyc2FsOjpEaXNwbGF5UnVuUGF0
aDo6bGluZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0VHJhdmVyc2FsOjpE
aXNwbGF5UnVuUGF0aDo6bGluZUJveCBjb25zdCk6IERlbGV0ZWQuCisKIDIwMjAtMDktMDYgIFph
bGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJRkNdIExpbmVC
b3ggc2hvdWxkIGNvbnRhaW4gYWxsIGlubGluZSBib3hlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDY5ZTA4MjI5OWRmZmU2ZGE4
NWM5ODY5NmM3ODU2ZjA1MjY4YmQ4NDEuLmQ0N2UzYTYwM2ViNTM1MWY2MGY1NWEwZmUzZjEwYTUy
ZDA5NzQ3MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTIwODIsNyArMjA4Miw3IEBACiAJCTZGQTQ0NTRFODk4RjJGQzE2OEJD
MzhDMSAvKiBKU0JlZm9yZVVubG9hZEV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyOUUwNEEyN0JFRDJGODFGOThFOTAyMkIgLyogSlNCZWZvcmVV
bmxvYWRFdmVudC5oICovOyB9OwogCQk2RkIxMUI1QzIxNzgzRkQwMDBFMkE1NzQgLyogVGV4dFV0
aWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZGQjEx
QjU5MjE3ODNGQ0YwMEUyQTU3NCAvKiBUZXh0VXRpbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTZGQjI0MDA1MjNERkYxMjgwMDc5NjQ1OCAvKiBJ
bmxpbmVMaW5lQm94LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA2RkIyNDAwMzIzREZGMTI3MDA3OTY0NTggLyogSW5saW5lTGluZUJveC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTZGQjQ3RTYzMjI3NzQy
NUEwMEM3QkNCMCAvKiBEaXNwbGF5TGluZUJveC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNkZCNDdFNjEyMjc3NDI1QTAwQzdCQ0IwIC8qIERpc3BsYXlM
aW5lQm94LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJNkZCNDdFNjMyMjc3NDI1QTAwQzdCQ0IwIC8qIERpc3BsYXlMaW5lLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RkI0N0U2MTIyNzc0MjVBMDBDN0JD
QjAgLyogRGlzcGxheUxpbmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk2RkI1RTIxNDIyMUYyNDUzMDAzOTg5Q0YgLyogQ29udGVudENoYW5nZU9i
c2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2
RkI1RTIxMjIyMUYyNDQ3MDAzOTg5Q0YgLyogQ29udGVudENoYW5nZU9ic2VydmVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNkZDRTFBMUEyMjYx
OEFCRDAwNEYwMzQzIC8qIERpc3BsYXlSdW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDZGQ0UxQTE4MjI2MThBQjMwMDRGMDM0MyAvKiBEaXNwbGF5UnVu
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNkZE
OUNENTQyMjdFMjFDODAwRTUzOTU3IC8qIERpc3BsYXlSZWN0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RkQ5Q0Q1MjIyN0UyMUM4MDBFNTM5NTcgLyog
RGlzcGxheVJlY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtOTYxNiw3ICs5NjE2LDcgQEAKIAkJNkZCMTFCNUIyMTc4M0ZDRjAwRTJBNTc0IC8q
IFRleHRVdGlsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRV
dGlsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkZCMjJFMzAyMzAwOTdFMzAw
QzIwODY2IC8qIFRhYmxlR3JpZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUYWJsZUdyaWQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkZCMjQwMDMyM0RGRjEyNzAwNzk2NDU4IC8qIElubGlu
ZUxpbmVCb3guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5saW5lTGluZUJv
eC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk2RkI0N0U2MTIyNzc0MjVBMDBDN0JD
QjAgLyogRGlzcGxheUxpbmVCb3guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RGlzcGxheUxpbmVCb3guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkZCNDdFNjEy
Mjc3NDI1QTAwQzdCQ0IwIC8qIERpc3BsYXlMaW5lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IERpc3BsYXlMaW5lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZG
QjVFMjEyMjIxRjI0NDcwMDM5ODlDRiAvKiBDb250ZW50Q2hhbmdlT2JzZXJ2ZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ29udGVudENoYW5nZU9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTZGQkI4NjA1MjBCNDY0QjYwMERBRDkzOCAvKiBGb3JtYXR0aW5nQ29udGV4dEdlb21l
dHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RkM1M0FFQjI0QUY3QThFMDA2MDU5RkUg
LyogVGFibGVGb3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBU
YWJsZUZvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTE3NDgxLDcgKzE3NDgxLDcgQEAKIAkJCQlFNEZCNEIzNTIzOUJFQjEwMDAzQzMzNkEg
LyogRGlzcGxheUlubGluZUNvbnRlbnQuY3BwICovLAogCQkJCUU0NTFDNjMzMjM5NDA1OEUwMDk5
MzE5MCAvKiBEaXNwbGF5SW5saW5lQ29udGVudC5oICovLAogCQkJCTExMkZCMzUwMjM5QzIzQzQw
MDg3MDU0QSAvKiBEaXNwbGF5SW5saW5lUmVjdC5oICovLAotCQkJCTZGQjQ3RTYxMjI3NzQyNUEw
MEM3QkNCMCAvKiBEaXNwbGF5TGluZUJveC5oICovLAorCQkJCTZGQjQ3RTYxMjI3NzQyNUEwMEM3
QkNCMCAvKiBEaXNwbGF5TGluZS5oICovLAogCQkJCTZGNzc4Njg1MjM0OTFBQzYwMDREOTYzNiAv
KiBEaXNwbGF5UGFpbnRlci5jcHAgKi8sCiAJCQkJNkY3Nzg2ODcyMzQ5MUFENzAwNEQ5NjM2IC8q
IERpc3BsYXlQYWludGVyLmggKi8sCiAJCQkJNkZEOUNENTIyMjdFMjFDODAwRTUzOTU3IC8qIERp
c3BsYXlSZWN0LmggKi8sCkBAIC0zMDk1MSw3ICszMDk1MSw3IEBACiAJCQkJMTE5OUZBNUIyMDhF
M0M3RjAwMjM1OENDIC8qIERpc3BsYXlCb3guaCBpbiBIZWFkZXJzICovLAogCQkJCUU0NTFDNjM0
MjM5NDA1OEYwMDk5MzE5MCAvKiBEaXNwbGF5SW5saW5lQ29udGVudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMTEyRkIzNTIyMzlDMjNDNDAwODcwNTRBIC8qIERpc3BsYXlJbmxpbmVSZWN0LmggaW4g
SGVhZGVycyAqLywKLQkJCQk2RkI0N0U2MzIyNzc0MjVBMDBDN0JDQjAgLyogRGlzcGxheUxpbmVC
b3guaCBpbiBIZWFkZXJzICovLAorCQkJCTZGQjQ3RTYzMjI3NzQyNUEwMEM3QkNCMCAvKiBEaXNw
bGF5TGluZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFNUZCRDMxQzNERDUxRTAwMDdBMkNBIC8q
IERpc3BsYXlMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1NUFEMDk0MDI0MDg5NjQwMDBERTRE
MkYgLyogRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTVB
RDA5M0UyNDA4OTYzNTAwREU0RDJGIC8qIERpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaCBpbiBIZWFk
ZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250
ZXh0R2VvbWV0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0
R2VvbWV0cnkuY3BwCmluZGV4IGM4YjlhMWI4MDFkZjUzMzgxZmI4OWFlYWQ2OWRjZTUxNGZjY2Q3
NWUuLjA1Y2U5NmU4MTY3OGMxZTgxNjBhZjI0NmIzNzczNTVmMjUxNTk1NWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKQEAg
LTE5MywxMSArMTkzLDExIEBAIExheW91dFVuaXQgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5
Ojpjb250ZW50SGVpZ2h0Rm9yRm9ybWF0dGluZ0NvbnRleHRSb290KGNvCiAgICAgYXV0byBib3R0
b20gPSBib3JkZXJBbmRQYWRkaW5nVG9wOwogICAgIGF1dG8mIGZvcm1hdHRpbmdSb290Q29udGFp
bmVyID0gZG93bmNhc3Q8Q29udGFpbmVyQm94PihsYXlvdXRCb3gpOwogICAgIGlmIChmb3JtYXR0
aW5nUm9vdENvbnRhaW5lci5lc3RhYmxpc2hlc0lubGluZUZvcm1hdHRpbmdDb250ZXh0KCkpIHsK
LSAgICAgICAgYXV0byYgbGluZUJveGVzID0gbGF5b3V0U3RhdGUuZXN0YWJsaXNoZWRJbmxpbmVG
b3JtYXR0aW5nU3RhdGUoZm9ybWF0dGluZ1Jvb3RDb250YWluZXIpLmRpc3BsYXlJbmxpbmVDb250
ZW50KCktPmxpbmVCb3hlczsKKyAgICAgICAgYXV0byYgbGluZXMgPSBsYXlvdXRTdGF0ZS5lc3Rh
Ymxpc2hlZElubGluZUZvcm1hdHRpbmdTdGF0ZShmb3JtYXR0aW5nUm9vdENvbnRhaW5lcikuZGlz
cGxheUlubGluZUNvbnRlbnQoKS0+bGluZXM7CiAgICAgICAgIC8vIEV2ZW4gZW1wdHkgY29udGFp
bmVycyBnZW5lcmF0ZSBvbmUgbGluZS4gCi0gICAgICAgIEFTU0VSVCghbGluZUJveGVzLmlzRW1w
dHkoKSk7Ci0gICAgICAgIHRvcCA9IGxpbmVCb3hlcy5maXJzdCgpLnRvcCgpOwotICAgICAgICBi
b3R0b20gPSBsaW5lQm94ZXMubGFzdCgpLmJvdHRvbSgpOworICAgICAgICBBU1NFUlQoIWxpbmVz
LmlzRW1wdHkoKSk7CisgICAgICAgIHRvcCA9IGxpbmVzLmZpcnN0KCkudG9wKCk7CisgICAgICAg
IGJvdHRvbSA9IGxpbmVzLmxhc3QoKS5ib3R0b20oKTsKICAgICB9IGVsc2UgaWYgKGZvcm1hdHRp
bmdSb290Q29udGFpbmVyLmVzdGFibGlzaGVzQmxvY2tGb3JtYXR0aW5nQ29udGV4dCgpIHx8IGZv
cm1hdHRpbmdSb290Q29udGFpbmVyLmVzdGFibGlzaGVzVGFibGVGb3JtYXR0aW5nQ29udGV4dCgp
IHx8IGZvcm1hdHRpbmdSb290Q29udGFpbmVyLmlzRG9jdW1lbnRCb3goKSkgewogICAgICAgICBp
ZiAoZm9ybWF0dGluZ1Jvb3RDb250YWluZXIuaGFzSW5GbG93Q2hpbGQoKSkgewogICAgICAgICAg
ICAgYXV0byYgZmlyc3RCb3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250ZXh0Lmdlb21ldHJ5Rm9y
Qm94KCpmb3JtYXR0aW5nUm9vdENvbnRhaW5lci5maXJzdEluRmxvd0NoaWxkKCksIEVzY2FwZVJl
YXNvbjo6TmVlZHNHZW9tZXRyeUZyb21Fc3RhYmxpc2hlZEZvcm1hdHRpbmdDb250ZXh0KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3Jt
YXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zv
cm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAppbmRleCA5ZmE2ZjZm
YjU1MjMyMTNhNjQxMmRiZTUxMDljNTMyY2FkMzM2MmYwLi5iYjcwZmJiMjk3NThhMTk3YTViZDk0
NTk4Y2EzMDlkM2QwNzNmMWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxv
Y2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0
R2VvbWV0cnkuY3BwCkBAIC03NywxMCArNzcsMTAgQEAgQ29udGVudEhlaWdodEFuZE1hcmdpbiBC
bG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93Tm9uUmVwbGFjZWRIZWlnaHQK
ICAgICAgICAgLy8gMS4gdGhlIGJvdHRvbSBlZGdlIG9mIHRoZSBsYXN0IGxpbmUgYm94LCBpZiB0
aGUgYm94IGVzdGFibGlzaGVzIGEgaW5saW5lIGZvcm1hdHRpbmcgY29udGV4dCB3aXRoIG9uZSBv
ciBtb3JlIGxpbmVzCiAgICAgICAgIGF1dG8mIGxheW91dENvbnRhaW5lciA9IGRvd25jYXN0PENv
bnRhaW5lckJveD4obGF5b3V0Qm94KTsKICAgICAgICAgaWYgKGxheW91dENvbnRhaW5lci5lc3Rh
Ymxpc2hlc0lubGluZUZvcm1hdHRpbmdDb250ZXh0KCkpIHsKLSAgICAgICAgICAgIGF1dG8mIGxp
bmVCb3hlcyA9IGxheW91dFN0YXRlKCkuZXN0YWJsaXNoZWRJbmxpbmVGb3JtYXR0aW5nU3RhdGUo
bGF5b3V0Q29udGFpbmVyKS5kaXNwbGF5SW5saW5lQ29udGVudCgpLT5saW5lQm94ZXM7CisgICAg
ICAgICAgICBhdXRvJiBsaW5lcyA9IGxheW91dFN0YXRlKCkuZXN0YWJsaXNoZWRJbmxpbmVGb3Jt
YXR0aW5nU3RhdGUobGF5b3V0Q29udGFpbmVyKS5kaXNwbGF5SW5saW5lQ29udGVudCgpLT5saW5l
czsKICAgICAgICAgICAgIC8vIEV2ZW4gZW1wdHkgY29udGFpbmVycyBnZW5lcmF0ZSBvbmUgbGlu
ZS4gCi0gICAgICAgICAgICBBU1NFUlQoIWxpbmVCb3hlcy5pc0VtcHR5KCkpOwotICAgICAgICAg
ICAgcmV0dXJuIHsgdG9MYXlvdXRVbml0KGxpbmVCb3hlcy5sYXN0KCkuYm90dG9tKCkpIC0gYm9y
ZGVyQW5kUGFkZGluZ1RvcCwgbm9uQ29sbGFwc2VkTWFyZ2luIH07CisgICAgICAgICAgICBBU1NF
UlQoIWxpbmVzLmlzRW1wdHkoKSk7CisgICAgICAgICAgICByZXR1cm4geyB0b0xheW91dFVuaXQo
bGluZXMubGFzdCgpLmJvdHRvbSgpKSAtIGJvcmRlckFuZFBhZGRpbmdUb3AsIG5vbkNvbGxhcHNl
ZE1hcmdpbiB9OwogICAgICAgICB9CiAKICAgICAgICAgLy8gMi4gdGhlIGJvdHRvbSBlZGdlIG9m
IHRoZSBib3R0b20gKHBvc3NpYmx5IGNvbGxhcHNlZCkgbWFyZ2luIG9mIGl0cyBsYXN0IGluLWZs
b3cgY2hpbGQsIGlmIHRoZSBjaGlsZCdzIGJvdHRvbSBtYXJnaW4uLi4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tNYXJnaW5Db2xsYXBzZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrTWFyZ2luQ29s
bGFwc2UuY3BwCmluZGV4IDFjYzhmZWVjNWI3NWMxN2IyZDA5ZTRlM2Y2NmNmMjBiYzI2MTlhNzMu
LjVmZmU0YTI1YzBhMGJjOTcxZmZjOTM0MmMxMzg0NzQ2NzZiNzA4ZGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tNYXJnaW5Db2xsYXBzZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja01hcmdp
bkNvbGxhcHNlLmNwcApAQCAtNDA3LDcgKzQwNyw3IEBAIGJvb2wgQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dDo6TWFyZ2luQ29sbGFwc2U6Om1hcmdpbnNDb2xsYXBzZVRocm91Z2goY29uc3QgQm94JiBs
CiAKICAgICAgICAgICAgIGF1dG8gaXNDb25zaWRlcmVkRW1wdHkgPSBbJl0gewogICAgICAgICAg
ICAgICAgIGF1dG8mIGZvcm1hdHRpbmdTdGF0ZSA9IGxheW91dFN0YXRlLmVzdGFibGlzaGVkSW5s
aW5lRm9ybWF0dGluZ1N0YXRlKGNvbnRhaW5lckJveCk7Ci0gICAgICAgICAgICAgICAgaWYgKGF1
dG8qIGlubGluZUNvbnRlbnQgPSBmb3JtYXR0aW5nU3RhdGUuZGlzcGxheUlubGluZUNvbnRlbnQo
KTsgaW5saW5lQ29udGVudCAmJiAhaW5saW5lQ29udGVudC0+bGluZUJveGVzLmlzRW1wdHkoKSkK
KyAgICAgICAgICAgICAgICBpZiAoYXV0byogaW5saW5lQ29udGVudCA9IGZvcm1hdHRpbmdTdGF0
ZS5kaXNwbGF5SW5saW5lQ29udGVudCgpOyBpbmxpbmVDb250ZW50ICYmICFpbmxpbmVDb250ZW50
LT5saW5lcy5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgICAgICAgICAvLyBBbnkgZmxvYXQgYm94IGluIHRoaXMgZm9ybWF0dGluZyBjb250ZXh0
IHByZXZlbnRzIGNvbGxhcHNpbmcgdGhyb3VnaC4KICAgICAgICAgICAgICAgICBhdXRvJiBmbG9h
dHMgPSBmb3JtYXR0aW5nU3RhdGUuZmxvYXRpbmdTdGF0ZSgpLmZsb2F0cygpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlJbmxpbmVDb250ZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUlubGluZUNvbnRl
bnQuaAppbmRleCA3MDM0NDM4MzlmMzJhMDQ2NzIyMGE5OTZmYjUxMmRjNWRiOTdiNWZjLi40Mzdh
MjM4OWVlNTUwZWExZTljYjdiMTIxNmJkYzE2ZDc1ODYzODk4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUlubGluZUNvbnRlbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUlubGluZUNvbnRlbnQuaApA
QCAtMjcsNyArMjcsNyBAQAogCiAjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQp
CiAKLSNpbmNsdWRlICJEaXNwbGF5TGluZUJveC5oIgorI2luY2x1ZGUgIkRpc3BsYXlMaW5lLmgi
CiAjaW5jbHVkZSAiRGlzcGxheVJ1bi5oIgogI2luY2x1ZGUgPHd0Zi9JdGVyYXRvclJhbmdlLmg+
CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtMzksMTIgKzM5LDEyIEBAIHN0cnVjdCBJbmxp
bmVDb250ZW50IDogcHVibGljIFJlZkNvdW50ZWQ8SW5saW5lQ29udGVudD4gewogICAgIH5Jbmxp
bmVDb250ZW50KCk7CiAKICAgICB1c2luZyBSdW5zID0gVmVjdG9yPFJ1biwgND47Ci0gICAgdXNp
bmcgTGluZUJveGVzID0gVmVjdG9yPExpbmVCb3gsIDQ+OworICAgIHVzaW5nIExpbmVzID0gVmVj
dG9yPExpbmUsIDQ+OwogCiAgICAgUnVucyBydW5zOwotICAgIExpbmVCb3hlcyBsaW5lQm94ZXM7
CisgICAgTGluZXMgbGluZXM7CiAKLSAgICBjb25zdCBMaW5lQm94JiBsaW5lQm94Rm9yUnVuKGNv
bnN0IFJ1biYgcnVuKSBjb25zdCB7IHJldHVybiBsaW5lQm94ZXNbcnVuLmxpbmVJbmRleCgpXTsg
fQorICAgIGNvbnN0IExpbmUmIGxpbmVGb3JSdW4oY29uc3QgUnVuJiBydW4pIGNvbnN0IHsgcmV0
dXJuIGxpbmVzW3J1bi5saW5lSW5kZXgoKV07IH0KICAgICBXVEY6Okl0ZXJhdG9yUmFuZ2U8Y29u
c3QgUnVuKj4gcnVuc0ZvclJlY3QoY29uc3QgTGF5b3V0UmVjdCYpIGNvbnN0OwogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlMaW5lLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUxpbmUuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42MWMwYjY2N2YxMWE1ZTIzODZjNTQ0ZDczZGY1YTQ3MmEwYmFkZjRiCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlMaW5lLmgK
QEAgLTAsMCArMSw4MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxF
KExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCisKKyNpbmNsdWRlICJEaXNwbGF5SW5saW5lUmVj
dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgRGlzcGxheSB7CisKK2NsYXNz
IExpbmUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIExpbmUo
Y29uc3QgSW5saW5lUmVjdCYsIGNvbnN0IElubGluZVJlY3QmIHNjcm9sbGFibGVPdmVyZmxvdywg
Y29uc3QgSW5saW5lUmVjdCYgaW5rT3ZlcmZsb3csIElubGluZUxheW91dFVuaXQgYmFzZWxpbmUp
OworCisgICAgY29uc3QgSW5saW5lUmVjdCYgcmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsg
fQorICAgIGNvbnN0IElubGluZVJlY3QmIHNjcm9sbGFibGVPdmVyZmxvdygpIGNvbnN0IHsgcmV0
dXJuIG1fc2Nyb2xsYWJsZU92ZXJmbG93OyB9CisgICAgY29uc3QgSW5saW5lUmVjdCYgaW5rT3Zl
cmZsb3coKSBjb25zdCB7IHJldHVybiBtX2lua092ZXJmbG93OyB9CisKKyAgICBJbmxpbmVMYXlv
dXRVbml0IGxlZnQoKSBjb25zdCB7IHJldHVybiBtX3JlY3QubGVmdCgpOyB9CisgICAgSW5saW5l
TGF5b3V0VW5pdCByaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdC5yaWdodCgpOyB9CisgICAg
SW5saW5lTGF5b3V0VW5pdCB0b3AoKSBjb25zdCB7IHJldHVybiBtX3JlY3QudG9wKCk7IH0KKyAg
ICBJbmxpbmVMYXlvdXRVbml0IGJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdC5ib3R0b20o
KTsgfQorCisgICAgSW5saW5lTGF5b3V0VW5pdCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVj
dC53aWR0aCgpOyB9CisgICAgSW5saW5lTGF5b3V0VW5pdCBoZWlnaHQoKSBjb25zdCB7IHJldHVy
biBtX3JlY3QuaGVpZ2h0KCk7IH0KKworICAgIHZvaWQgbW92ZVZlcnRpY2FsbHkoSW5saW5lTGF5
b3V0VW5pdCk7CisKKyAgICBJbmxpbmVMYXlvdXRVbml0IGJhc2VsaW5lKCkgY29uc3QgeyByZXR1
cm4gbV9iYXNlbGluZTsgfQorCitwcml2YXRlOgorICAgIElubGluZVJlY3QgbV9yZWN0OworICAg
IElubGluZVJlY3QgbV9zY3JvbGxhYmxlT3ZlcmZsb3c7CisgICAgSW5saW5lUmVjdCBtX2lua092
ZXJmbG93OworICAgIElubGluZUxheW91dFVuaXQgbV9iYXNlbGluZSB7IDAgfTsKK307CisKK2lu
bGluZSBMaW5lOjpMaW5lKGNvbnN0IElubGluZVJlY3QmIHJlY3QsIGNvbnN0IElubGluZVJlY3Qm
IHNjcm9sbGFibGVPdmVyZmxvdywgY29uc3QgSW5saW5lUmVjdCYgaW5rT3ZlcmZsb3csIElubGlu
ZUxheW91dFVuaXQgYmFzZWxpbmUpCisgICAgOiBtX3JlY3QocmVjdCkKKyAgICAsIG1fc2Nyb2xs
YWJsZU92ZXJmbG93KHNjcm9sbGFibGVPdmVyZmxvdykKKyAgICAsIG1faW5rT3ZlcmZsb3coaW5r
T3ZlcmZsb3cpCisgICAgLCBtX2Jhc2VsaW5lKGJhc2VsaW5lKQoreworfQorCitpbmxpbmUgdm9p
ZCBMaW5lOjptb3ZlVmVydGljYWxseShJbmxpbmVMYXlvdXRVbml0IG9mZnNldCkKK3sKKyAgICBt
X3JlY3QubW92ZVZlcnRpY2FsbHkob2Zmc2V0KTsKKyAgICBtX2lua092ZXJmbG93Lm1vdmVWZXJ0
aWNhbGx5KG9mZnNldCk7Cit9CisKK30KK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUxpbmVCb3guaCBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5TGluZUJveC5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBjYTdmMzk1OGRlYTkxYzI2MjFmZGI4Y2VmYzVjZWEzMTRiNmM2OWJkLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5TGluZUJveC5oCisrKyAvZGV2L251bGwKQEAg
LTEsODAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKExB
WU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCi0KLSNpbmNsdWRlICJEaXNwbGF5SW5saW5lUmVjdC5o
IgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1uYW1lc3BhY2UgRGlzcGxheSB7Ci0KLWNsYXNzIExp
bmVCb3ggewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIExpbmVC
b3goY29uc3QgSW5saW5lUmVjdCYsIGNvbnN0IElubGluZVJlY3QmIHNjcm9sbGFibGVPdmVyZmxv
dywgY29uc3QgSW5saW5lUmVjdCYgaW5rT3ZlcmZsb3csIElubGluZUxheW91dFVuaXQgYmFzZWxp
bmUpOwotCi0gICAgY29uc3QgSW5saW5lUmVjdCYgcmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVj
dDsgfQotICAgIGNvbnN0IElubGluZVJlY3QmIHNjcm9sbGFibGVPdmVyZmxvdygpIGNvbnN0IHsg
cmV0dXJuIG1fc2Nyb2xsYWJsZU92ZXJmbG93OyB9Ci0gICAgY29uc3QgSW5saW5lUmVjdCYgaW5r
T3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBtX2lua092ZXJmbG93OyB9Ci0KLSAgICBJbmxpbmVM
YXlvdXRVbml0IGxlZnQoKSBjb25zdCB7IHJldHVybiBtX3JlY3QubGVmdCgpOyB9Ci0gICAgSW5s
aW5lTGF5b3V0VW5pdCByaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdC5yaWdodCgpOyB9Ci0g
ICAgSW5saW5lTGF5b3V0VW5pdCB0b3AoKSBjb25zdCB7IHJldHVybiBtX3JlY3QudG9wKCk7IH0K
LSAgICBJbmxpbmVMYXlvdXRVbml0IGJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdC5ib3R0
b20oKTsgfQotCi0gICAgSW5saW5lTGF5b3V0VW5pdCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1f
cmVjdC53aWR0aCgpOyB9Ci0gICAgSW5saW5lTGF5b3V0VW5pdCBoZWlnaHQoKSBjb25zdCB7IHJl
dHVybiBtX3JlY3QuaGVpZ2h0KCk7IH0KLQotICAgIHZvaWQgbW92ZVZlcnRpY2FsbHkoSW5saW5l
TGF5b3V0VW5pdCk7Ci0KLSAgICBJbmxpbmVMYXlvdXRVbml0IGJhc2VsaW5lKCkgY29uc3QgeyBy
ZXR1cm4gbV9iYXNlbGluZTsgfQotCi1wcml2YXRlOgotICAgIElubGluZVJlY3QgbV9yZWN0Owot
ICAgIElubGluZVJlY3QgbV9zY3JvbGxhYmxlT3ZlcmZsb3c7Ci0gICAgSW5saW5lUmVjdCBtX2lu
a092ZXJmbG93OwotICAgIElubGluZUxheW91dFVuaXQgbV9iYXNlbGluZSB7IDAgfTsKLX07Ci0K
LWlubGluZSBMaW5lQm94OjpMaW5lQm94KGNvbnN0IElubGluZVJlY3QmIHJlY3QsIGNvbnN0IElu
bGluZVJlY3QmIHNjcm9sbGFibGVPdmVyZmxvdywgY29uc3QgSW5saW5lUmVjdCYgaW5rT3ZlcmZs
b3csIElubGluZUxheW91dFVuaXQgYmFzZWxpbmUpCi0gICAgOiBtX3JlY3QocmVjdCkKLSAgICAs
IG1fc2Nyb2xsYWJsZU92ZXJmbG93KHNjcm9sbGFibGVPdmVyZmxvdykKLSAgICAsIG1faW5rT3Zl
cmZsb3coaW5rT3ZlcmZsb3cpCi0gICAgLCBtX2Jhc2VsaW5lKGJhc2VsaW5lKQotewotfQotCi1p
bmxpbmUgdm9pZCBMaW5lQm94Ojptb3ZlVmVydGljYWxseShJbmxpbmVMYXlvdXRVbml0IG9mZnNl
dCkKLXsKLSAgICBtX3JlY3QubW92ZVZlcnRpY2FsbHkob2Zmc2V0KTsKLSAgICBtX2lua092ZXJm
bG93Lm1vdmVWZXJ0aWNhbGx5KG9mZnNldCk7Ci19Ci0KLX0KLX0KLQotI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheVBhaW50ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlQYWludGVyLmNwcApp
bmRleCAyMDgzNTBiMDg1MTc0MzNjNDRmNmViYjk5Y2M3MzcwYWRhYjFjMjkzLi4wZDUxZDNhNzhm
N2I0Zjk0NmEyYzM5MTNiNjMxZjM1ZGM4NTY0YWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheVBhaW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5UGFpbnRlci5jcHAKQEAgLTEyOCwxMCArMTI4
LDEwIEBAIHN0YXRpYyB2b2lkIHBhaW50SW5saW5lQ29udGVudChHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIExheW91dFBvaW50IGFic29sdXRlT2ZmCiAKICAgICAgICAgICAgIGF1dG8gYWJzb2x1
dGVMZWZ0ID0gYWJzb2x1dGVPZmZzZXQueCgpICsgcnVuLmxlZnQoKTsKICAgICAgICAgICAgIC8v
IEZJWE1FOiBBZGQgbm9uLWJhc2VsaW5lIGFsaWduIHBhaW50aW5nCi0gICAgICAgICAgICBhdXRv
JiBsaW5lQm94ID0gZGlzcGxheUlubGluZUNvbnRlbnQtPmxpbmVCb3hGb3JSdW4ocnVuKTsKKyAg
ICAgICAgICAgIGF1dG8mIGxpbmUgPSBkaXNwbGF5SW5saW5lQ29udGVudC0+bGluZUZvclJ1bihy
dW4pOwogICAgICAgICAgICAgYXV0byBiYXNlbGluZSA9IGFic29sdXRlT2Zmc2V0LnkoKSArIHJ1
bi50b3AoKSArIHN0eWxlLmZvbnRNZXRyaWNzKCkuYXNjZW50KCk7CiAgICAgICAgICAgICBhdXRv
IGV4cGFuc2lvbiA9IHJ1bi5leHBhbnNpb24oKTsKLSAgICAgICAgICAgIGF1dG8gdGV4dFJ1biA9
IFRleHRSdW4geyB0ZXh0Q29udGVudC0+Y29udGVudCgpLCBydW4ubGVmdCgpIC0gbGluZUJveC5s
ZWZ0KCksIGV4cGFuc2lvbi5ob3Jpem9udGFsRXhwYW5zaW9uLCBleHBhbnNpb24uYmVoYXZpb3Ig
fTsKKyAgICAgICAgICAgIGF1dG8gdGV4dFJ1biA9IFRleHRSdW4geyB0ZXh0Q29udGVudC0+Y29u
dGVudCgpLCBydW4ubGVmdCgpIC0gbGluZS5sZWZ0KCksIGV4cGFuc2lvbi5ob3Jpem9udGFsRXhw
YW5zaW9uLCBleHBhbnNpb24uYmVoYXZpb3IgfTsKICAgICAgICAgICAgIHRleHRSdW4uc2V0VGFi
U2l6ZSghc3R5bGUuY29sbGFwc2VXaGl0ZVNwYWNlKCksIHN0eWxlLnRhYlNpemUoKSk7CiAgICAg
ICAgICAgICBjb250ZXh0LmRyYXdUZXh0KHN0eWxlLmZvbnRDYXNjYWRlKCksIHRleHRSdW4sIHsg
YWJzb2x1dGVMZWZ0LCBiYXNlbGluZSB9KTsKICAgICAgICAgfSBlbHNlIGlmIChhdXRvKiBjYWNo
ZWRJbWFnZSA9IHJ1bi5pbWFnZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5j
cHAKaW5kZXggNTI4NDc3NWY0YjBiZDI5MGE1NzU3NzE4ZjdjMDFlZTk4NzUxMjJlYi4uZTY5YTQ0
NGI0OTMyMmM0NDZmNzdmYjk2N2I2N2VkMmNhZGRjZTNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1h
dHRpbmdDb250ZXh0LmNwcApAQCAtMTQxLDcgKzE0MSw3IEBAIHZvaWQgSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQ6OmxpbmVMYXlvdXQoSW5saW5lSXRlbXMmIGlubGluZUl0ZW1zLCBMaW5lQnVpbGRl
cjo6CiAgICAgfTsKICAgICBPcHRpb25hbDxQcmV2aW91c0xpbmU+IHByZXZpb3VzTGluZTsKICAg
ICBhdXRvIGZsb2F0aW5nQ29udGV4dCA9IEZsb2F0aW5nQ29udGV4dCB7IHJvb3QoKSwgKnRoaXMs
IGZvcm1hdHRpbmdTdGF0ZSgpLmZsb2F0aW5nU3RhdGUoKSB9OwotICAgIGF1dG8gaXNGaXJzdExp
bmUgPSAhZm9ybWF0dGluZ1N0YXRlKCkuZGlzcGxheUlubGluZUNvbnRlbnQoKSB8fCBmb3JtYXR0
aW5nU3RhdGUoKS5kaXNwbGF5SW5saW5lQ29udGVudCgpLT5saW5lQm94ZXMuaXNFbXB0eSgpOwor
ICAgIGF1dG8gaXNGaXJzdExpbmUgPSAhZm9ybWF0dGluZ1N0YXRlKCkuZGlzcGxheUlubGluZUNv
bnRlbnQoKSB8fCBmb3JtYXR0aW5nU3RhdGUoKS5kaXNwbGF5SW5saW5lQ29udGVudCgpLT5saW5l
cy5pc0VtcHR5KCk7CiAKICAgICBhdXRvIGxpbmVCdWlsZGVyID0gTGluZUJ1aWxkZXIgeyAqdGhp
cywgZmxvYXRpbmdDb250ZXh0LCByb290KCksIGlubGluZUl0ZW1zIH07CiAgICAgd2hpbGUgKCFu
ZWVkc0xheW91dFJhbmdlLmlzRW1wdHkoKSkgewpAQCAtNDYxLDcgKzQ2MSw3IEBAIERpc3BsYXk6
OklubGluZVJlY3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNyZWF0ZURpc3BsYXlCb3hlc0Zv
ckxpbmVDb250ZW50KGNvCiAgICAgfSBlbHNlCiAgICAgICAgIGluaXRpYWxDb250YWluZ0Jsb2Nr
U2l6ZSA9IGdlb21ldHJ5Rm9yQm94KHJvb3QoKS5pbml0aWFsQ29udGFpbmluZ0Jsb2NrKCksIEVz
Y2FwZVJlYXNvbjo6U3Ryb2tlT3ZlcmZsb3dOZWVkc1ZpZXdwb3J0R2VvbWV0cnkpLmNvbnRlbnRC
b3goKS5zaXplKCk7CiAgICAgYXV0byYgaW5saW5lQ29udGVudCA9IGZvcm1hdHRpbmdTdGF0ZS5l
bnN1cmVEaXNwbGF5SW5saW5lQ29udGVudCgpOwotICAgIGF1dG8gbGluZUluZGV4ID0gaW5saW5l
Q29udGVudC5saW5lQm94ZXMuc2l6ZSgpOworICAgIGF1dG8gbGluZUluZGV4ID0gaW5saW5lQ29u
dGVudC5saW5lcy5zaXplKCk7CiAgICAgYXV0byBsaW5lSW5rT3ZlcmZsb3cgPSBzY3JvbGxhYmxl
T3ZlcmZsb3c7CiAgICAgLy8gQ29tcHV0ZSBmaW5hbCBib3ggZ2VvbWV0cnkuCiAgICAgZm9yIChh
dXRvJiBsaW5lUnVuIDogbGluZUNvbnRlbnQucnVucykgewpAQCAtNTIwLDggKzUyMCw3IEBAIERp
c3BsYXk6OklubGluZVJlY3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNyZWF0ZURpc3BsYXlC
b3hlc0ZvckxpbmVDb250ZW50KGNvCiAgICAgICAgICAgICAvLyBQYWludGluZyBjb2RlIChzcGVj
aWZpY2FsbHkgVGV4dFJ1bidzIHhQb3MpIG5lZWRzIHRoZSBhbGlnbmVkIG9mZnNldCB0byBiZSBh
YmxlIHRvIGNvbXB1dGUgdGFiIHBvc2l0aW9ucy4KICAgICAgICAgICAgIGxpbmVMb2dpY2FsUmVj
dC5tb3ZlSG9yaXpvbnRhbGx5KCpob3Jpem9udGFsQWxpZ25tZW50T2Zmc2V0KTsKICAgICAgICAg
fQotICAgICAgICAvLyBGSVhNRTogRGlzcGxheTo6TGluZUJveCBzaG91bGQgcmVhbGx5IGJlIG5h
bWVkIERpc3BsYXk6OkxpbmUKLSAgICAgICAgaW5saW5lQ29udGVudC5saW5lQm94ZXMuYXBwZW5k
KHsgbGluZUxvZ2ljYWxSZWN0LCBzY3JvbGxhYmxlT3ZlcmZsb3csIGxpbmVJbmtPdmVyZmxvdywg
bGluZUJveFZlcnRpY2FsT2Zmc2V0ICsgbGluZUJveC5hbGlnbm1lbnRCYXNlbGluZSgpIH0pOwor
ICAgICAgICBpbmxpbmVDb250ZW50LmxpbmVzLmFwcGVuZCh7IGxpbmVMb2dpY2FsUmVjdCwgc2Ny
b2xsYWJsZU92ZXJmbG93LCBsaW5lSW5rT3ZlcmZsb3csIGxpbmVCb3hWZXJ0aWNhbE9mZnNldCAr
IGxpbmVCb3guYWxpZ25tZW50QmFzZWxpbmUoKSB9KTsKICAgICB9OwogICAgIGNvbnN0cnVjdERp
c3BsYXlMaW5lKCk7CiAgICAgcmV0dXJuIGxpbmVMb2dpY2FsUmVjdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250
ZXh0UXVpcmtzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lu
bGluZUZvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNwcAppbmRleCA5ZmNjYWViYjlmYWY1NjYzOGM4
OGVjOWExZjBjZGFmNTlmNzJiNjA3Li5kMmFjZTQ1NDIwMGQ4ZjY2YmFlYWQxMGJiYTdlZmY2YzZl
ZWRlODQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGlu
Zy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHRRdWlya3MuY3Bw
CkBAIC01OSw4ICs1OSw4IEBAIGJvb2wgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJrczo6
bGluZURlc2NlbnROZWVkc0NvbGxhcHNpbmcoY29uc3QgTGluZTo6UnVuCiAgICAgICAgIGlmIChy
dW4uaXNCb3goKSkgewogICAgICAgICAgICAgaWYgKGxheW91dEJveC5pc0lubGluZUJsb2NrQm94
KCkgJiYgbGF5b3V0Qm94LmVzdGFibGlzaGVzSW5saW5lRm9ybWF0dGluZ0NvbnRleHQoKSkgewog
ICAgICAgICAgICAgICAgIGF1dG8mIGZvcm1hdHRpbmdTdGF0ZSA9IGxheW91dFN0YXRlLmVzdGFi
bGlzaGVkSW5saW5lRm9ybWF0dGluZ1N0YXRlKGRvd25jYXN0PENvbnRhaW5lckJveD4obGF5b3V0
Qm94KSk7Ci0gICAgICAgICAgICAgICAgYXV0byBsYXN0TGluZUJveCA9IGZvcm1hdHRpbmdTdGF0
ZS5kaXNwbGF5SW5saW5lQ29udGVudCgpLT5saW5lQm94ZXMubGFzdCgpOwotICAgICAgICAgICAg
ICAgIGlmIChsYXN0TGluZUJveC5oZWlnaHQoKSA+IGxhc3RMaW5lQm94LmJhc2VsaW5lKCkpCisg
ICAgICAgICAgICAgICAgYXV0byBsYXN0TGluZSA9IGZvcm1hdHRpbmdTdGF0ZS5kaXNwbGF5SW5s
aW5lQ29udGVudCgpLT5saW5lcy5sYXN0KCk7CisgICAgICAgICAgICAgICAgaWYgKGxhc3RMaW5l
LmhlaWdodCgpID4gbGFzdExpbmUuYmFzZWxpbmUoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0
aW5nU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGlu
ZUZvcm1hdHRpbmdTdGF0ZS5oCmluZGV4IDY4NzlkNDEyM2MwNTdmYTY2ZDA5YWFhMjZiNmZhMGZj
NmVmOWU1MGQuLjJkOTdkMDBmNDk2ZjkwYzA3MDNiNjRmNjJhYzdlMzlkZjA3OWQxOTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1h
dHRpbmdTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5n
L0lubGluZUZvcm1hdHRpbmdTdGF0ZS5oCkBAIC03Myw3ICs3Myw3IEBAIGlubGluZSB2b2lkIElu
bGluZUZvcm1hdHRpbmdTdGF0ZTo6c2hyaW5rRGlzcGxheUlubGluZUNvbnRlbnQoKQogICAgIGlm
ICghbV9kaXNwbGF5SW5saW5lQ29udGVudCkKICAgICAgICAgcmV0dXJuOwogICAgIG1fZGlzcGxh
eUlubGluZUNvbnRlbnQtPnJ1bnMuc2hyaW5rVG9GaXQoKTsKLSAgICBtX2Rpc3BsYXlJbmxpbmVD
b250ZW50LT5saW5lQm94ZXMuc2hyaW5rVG9GaXQoKTsKKyAgICBtX2Rpc3BsYXlJbmxpbmVDb250
ZW50LT5saW5lcy5zaHJpbmtUb0ZpdCgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQm94LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCb3guY3BwCmluZGV4IDFm
MWEyMTliNTM5MmViMWU3ODlmOGI1OGY1NGMzMjM4YWI4ZDY4NWUuLjA1ZTQ0MTIwOTcwNGFkNzZh
Y2QzODI0MTJmNTk3ZTY4Nzg2ZWVhNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCb3guY3BwCkBAIC0xNjgsOCArMTY4
LDggQEAgdm9pZCBMaW5lQm94Ojpjb25zdHJ1Y3RJbmxpbmVCb3hlcyhjb25zdCBMaW5lOjpSdW5M
aXN0JiBydW5zKQogICAgICAgICAgICAgaWYgKGxheW91dEJveC5pc0lubGluZUJsb2NrQm94KCkg
JiYgbGF5b3V0Qm94LmVzdGFibGlzaGVzSW5saW5lRm9ybWF0dGluZ0NvbnRleHQoKSkgewogICAg
ICAgICAgICAgICAgIGF1dG8mIGZvcm1hdHRpbmdTdGF0ZSA9IGxheW91dFN0YXRlKCkuZXN0YWJs
aXNoZWRJbmxpbmVGb3JtYXR0aW5nU3RhdGUoZG93bmNhc3Q8Q29udGFpbmVyQm94PihsYXlvdXRC
b3gpKTsKICAgICAgICAgICAgICAgICAvLyBTcGVjIG1ha2VzIHVzIGdlbmVyYXRlIGF0IGxlYXN0
IG9uZSBsaW5lIC1ldmVuIGlmIGl0IGlzIGVtcHR5LgotICAgICAgICAgICAgICAgIGF1dG8mIGxh
c3RMaW5lQm94ID0gZm9ybWF0dGluZ1N0YXRlLmRpc3BsYXlJbmxpbmVDb250ZW50KCktPmxpbmVC
b3hlcy5sYXN0KCk7Ci0gICAgICAgICAgICAgICAgYXV0byBpbmxpbmVCbG9ja0Jhc2VsaW5lID0g
bGFzdExpbmVCb3gudG9wKCkgKyBsYXN0TGluZUJveC5iYXNlbGluZSgpOworICAgICAgICAgICAg
ICAgIGF1dG8mIGxhc3RMaW5lID0gZm9ybWF0dGluZ1N0YXRlLmRpc3BsYXlJbmxpbmVDb250ZW50
KCktPmxpbmVzLmxhc3QoKTsKKyAgICAgICAgICAgICAgICBhdXRvIGlubGluZUJsb2NrQmFzZWxp
bmUgPSBsYXN0TGluZS50b3AoKSArIGxhc3RMaW5lLmJhc2VsaW5lKCk7CiAgICAgICAgICAgICAg
ICAgLy8gVGhlIGlubGluZS1ibG9jaydzIGJhc2VsaW5lIG9mZnNldCBpcyByZWxhdGl2ZSB0byBp
dHMgY29udGVudCBib3guIExldCdzIGNvbnZlcnQgaXQgcmVsYXRpdmUgdG8gdGhlIG1hcmdpbiBi
b3guCiAgICAgICAgICAgICAgICAgLy8gICAgICAgICAgIF9fX19fX19fX19fX19fXyA8LSBtYXJn
aW4gYm94CiAgICAgICAgICAgICAgICAgLy8gICAgICAgICAgfApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25M
aW5lTGF5b3V0LmNwcAppbmRleCAxZDE1ZDVkNjFkZWVjNmEzYWIxN2Y4MTI0Y2MyNmM4MDU5OTgw
MGVjLi5kZjUwMjY3ODA1OTE0ZjJjMzI3ODFlYmJkZjljNDYzZWZlNDAzZTkyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5l
TGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0
SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcApAQCAtMTU2LDggKzE1Niw4IEBAIHZvaWQgTGluZUxh
eW91dDo6cHJlcGFyZUZsb2F0aW5nU3RhdGUoKQogCiBMYXlvdXRVbml0IExpbmVMYXlvdXQ6OmNv
bnRlbnRMb2dpY2FsSGVpZ2h0KCkgY29uc3QKIHsKLSAgICBhdXRvJiBsaW5lQm94ZXMgPSBkaXNw
bGF5SW5saW5lQ29udGVudCgpLT5saW5lQm94ZXM7Ci0gICAgcmV0dXJuIExheW91dFVuaXQgeyBs
aW5lQm94ZXMubGFzdCgpLmJvdHRvbSgpIC0gbGluZUJveGVzLmZpcnN0KCkudG9wKCkgfTsKKyAg
ICBhdXRvJiBsaW5lcyA9IGRpc3BsYXlJbmxpbmVDb250ZW50KCktPmxpbmVzOworICAgIHJldHVy
biBMYXlvdXRVbml0IHsgbGluZXMubGFzdCgpLmJvdHRvbSgpIC0gbGluZXMuZmlyc3QoKS50b3Ao
KSB9OwogfQogCiBzaXplX3QgTGluZUxheW91dDo6bGluZUNvdW50KCkgY29uc3QKQEAgLTE2Nyw3
ICsxNjcsNyBAQCBzaXplX3QgTGluZUxheW91dDo6bGluZUNvdW50KCkgY29uc3QKICAgICAgICAg
cmV0dXJuIDA7CiAgICAgaWYgKGlubGluZUNvbnRlbnQtPnJ1bnMuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm4gMDsKLSAgICByZXR1cm4gaW5saW5lQ29udGVudC0+bGluZUJveGVzLnNpemUoKTsK
KyAgICByZXR1cm4gaW5saW5lQ29udGVudC0+bGluZXMuc2l6ZSgpOwogfQogCiBMYXlvdXRVbml0
IExpbmVMYXlvdXQ6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKQEAgLTE3OCw4ICsxNzgsOCBA
QCBMYXlvdXRVbml0IExpbmVMYXlvdXQ6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKICAgICAg
ICAgcmV0dXJuIDBfbHU7CiAgICAgfQogCi0gICAgYXV0byYgZmlyc3RMaW5lQm94ID0gaW5saW5l
Q29udGVudC0+bGluZUJveGVzLmZpcnN0KCk7Ci0gICAgcmV0dXJuIExheW91dDo6dG9MYXlvdXRV
bml0KGZpcnN0TGluZUJveC50b3AoKSArIGZpcnN0TGluZUJveC5iYXNlbGluZSgpKTsKKyAgICBh
dXRvJiBmaXJzdExpbmUgPSBpbmxpbmVDb250ZW50LT5saW5lcy5maXJzdCgpOworICAgIHJldHVy
biBMYXlvdXQ6OnRvTGF5b3V0VW5pdChmaXJzdExpbmUudG9wKCkgKyBmaXJzdExpbmUuYmFzZWxp
bmUoKSk7CiB9CiAKIExheW91dFVuaXQgTGluZUxheW91dDo6bGFzdExpbmVCYXNlbGluZSgpIGNv
bnN0CkBAIC0xOTAsOCArMTkwLDggQEAgTGF5b3V0VW5pdCBMaW5lTGF5b3V0OjpsYXN0TGluZUJh
c2VsaW5lKCkgY29uc3QKICAgICAgICAgcmV0dXJuIDBfbHU7CiAgICAgfQogCi0gICAgYXV0byYg
bGFzdExpbmVCb3ggPSBpbmxpbmVDb250ZW50LT5saW5lQm94ZXMubGFzdCgpOwotICAgIHJldHVy
biBMYXlvdXQ6OnRvTGF5b3V0VW5pdChsYXN0TGluZUJveC50b3AoKSArIGxhc3RMaW5lQm94LmJh
c2VsaW5lKCkpOworICAgIGF1dG8mIGxhc3RMaW5lID0gaW5saW5lQ29udGVudC0+bGluZXMubGFz
dCgpOworICAgIHJldHVybiBMYXlvdXQ6OnRvTGF5b3V0VW5pdChsYXN0TGluZS50b3AoKSArIGxh
c3RMaW5lLmJhc2VsaW5lKCkpOwogfQogCiB2b2lkIExpbmVMYXlvdXQ6OmNvbGxlY3RPdmVyZmxv
dyhSZW5kZXJCbG9ja0Zsb3cmIGZsb3cpCkBAIC0xOTksOSArMTk5LDkgQEAgdm9pZCBMaW5lTGF5
b3V0Ojpjb2xsZWN0T3ZlcmZsb3coUmVuZGVyQmxvY2tGbG93JiBmbG93KQogICAgIEFTU0VSVCgm
ZmxvdyA9PSAmbV9mbG93KTsKICAgICBBU1NFUlQoIWZsb3cuaGFzT3ZlcmZsb3dDbGlwKCkpOwog
Ci0gICAgZm9yIChhdXRvJiBsaW5lQm94IDogZGlzcGxheUlubGluZUNvbnRlbnQoKS0+bGluZUJv
eGVzKSB7Ci0gICAgICAgIGZsb3cuYWRkTGF5b3V0T3ZlcmZsb3coTGF5b3V0Ojp0b0xheW91dFJl
Y3QobGluZUJveC5zY3JvbGxhYmxlT3ZlcmZsb3coKSkpOwotICAgICAgICBmbG93LmFkZFZpc3Vh
bE92ZXJmbG93KExheW91dDo6dG9MYXlvdXRSZWN0KGxpbmVCb3guaW5rT3ZlcmZsb3coKSkpOwor
ICAgIGZvciAoYXV0byYgbGluZSA6IGRpc3BsYXlJbmxpbmVDb250ZW50KCktPmxpbmVzKSB7Cisg
ICAgICAgIGZsb3cuYWRkTGF5b3V0T3ZlcmZsb3coTGF5b3V0Ojp0b0xheW91dFJlY3QobGluZS5z
Y3JvbGxhYmxlT3ZlcmZsb3coKSkpOworICAgICAgICBmbG93LmFkZFZpc3VhbE92ZXJmbG93KExh
eW91dDo6dG9MYXlvdXRSZWN0KGxpbmUuaW5rT3ZlcmZsb3coKSkpOwogICAgIH0KIH0KIApAQCAt
Mjk5LDE0ICsyOTksMTQgQEAgdm9pZCBMaW5lTGF5b3V0OjpwYWludChQYWludEluZm8mIHBhaW50
SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvJiBsaW5lQm94ID0gaW5saW5lQ29udGVudC5s
aW5lQm94Rm9yUnVuKHJ1bik7Ci0gICAgICAgIGF1dG8gYmFzZWxpbmUgPSBwYWludE9mZnNldC55
KCkgKyBsaW5lQm94LnRvcCgpICsgbGluZUJveC5iYXNlbGluZSgpOworICAgICAgICBhdXRvJiBs
aW5lID0gaW5saW5lQ29udGVudC5saW5lRm9yUnVuKHJ1bik7CisgICAgICAgIGF1dG8gYmFzZWxp
bmUgPSBwYWludE9mZnNldC55KCkgKyBsaW5lLnRvcCgpICsgbGluZS5iYXNlbGluZSgpOwogICAg
ICAgICBhdXRvIGV4cGFuc2lvbiA9IHJ1bi5leHBhbnNpb24oKTsKIAogICAgICAgICBTdHJpbmcg
dGV4dFdpdGhIeXBoZW47CiAgICAgICAgIGlmICh0ZXh0Q29udGVudC5uZWVkc0h5cGhlbigpKQog
ICAgICAgICAgICAgdGV4dFdpdGhIeXBoZW4gPSBtYWtlU3RyaW5nKHRleHRDb250ZW50LmNvbnRl
bnQoKSwgc3R5bGUuaHlwaGVuU3RyaW5nKCkpOwotICAgICAgICBUZXh0UnVuIHRleHRSdW4geyAh
dGV4dFdpdGhIeXBoZW4uaXNFbXB0eSgpID8gdGV4dFdpdGhIeXBoZW4gOiB0ZXh0Q29udGVudC5j
b250ZW50KCksIHJ1bi5sZWZ0KCkgLSBsaW5lQm94LmxlZnQoKSwgZXhwYW5zaW9uLmhvcml6b250
YWxFeHBhbnNpb24sIGV4cGFuc2lvbi5iZWhhdmlvciB9OworICAgICAgICBUZXh0UnVuIHRleHRS
dW4geyAhdGV4dFdpdGhIeXBoZW4uaXNFbXB0eSgpID8gdGV4dFdpdGhIeXBoZW4gOiB0ZXh0Q29u
dGVudC5jb250ZW50KCksIHJ1bi5sZWZ0KCkgLSBsaW5lLmxlZnQoKSwgZXhwYW5zaW9uLmhvcml6
b250YWxFeHBhbnNpb24sIGV4cGFuc2lvbi5iZWhhdmlvciB9OwogICAgICAgICB0ZXh0UnVuLnNl
dFRhYlNpemUoIXN0eWxlLmNvbGxhcHNlV2hpdGVTcGFjZSgpLCBzdHlsZS50YWJTaXplKCkpOwog
ICAgICAgICBGbG9hdFBvaW50IHRleHRPcmlnaW4geyByZWN0LngoKSArIHBhaW50T2Zmc2V0Lngo
KSwgcm91bmRUb0RldmljZVBpeGVsKGJhc2VsaW5lLCBkZXZpY2VTY2FsZUZhY3RvcikgfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1
aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1
aWxkZXIuY3BwCmluZGV4IDk1YTMwYmUzYjYzMWE3OWNlMzk2YTRkNWE5NjZhMjg5NzA3NTg0ZDgu
LjI2YzEyZjkyMTA2NjJmNjFiNGZkNjMzNTg3YmRmM2NmOWRkMTRlYjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAK
QEAgLTM5MCw3ICszOTAsNyBAQCBzdGF0aWMgdm9pZCBvdXRwdXRJbmxpbmVSdW5zKFRleHRTdHJl
YW0mIHN0cmVhbSwgY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLAogICAgICAgICByZXR1
cm47CiAKICAgICBhdXRvJiBkaXNwbGF5UnVucyA9IGRpc3BsYXlJbmxpbmVDb250ZW50LT5ydW5z
OwotICAgIGF1dG8mIGxpbmVCb3hlcyA9IGRpc3BsYXlJbmxpbmVDb250ZW50LT5saW5lQm94ZXM7
CisgICAgYXV0byYgbGluZXMgPSBkaXNwbGF5SW5saW5lQ29udGVudC0+bGluZXM7CiAKICAgICB1
bnNpZ25lZCBwcmludGVkQ2hhcmFjdGVycyA9IDA7CiAgICAgd2hpbGUgKCsrcHJpbnRlZENoYXJh
Y3RlcnMgPD0gZGVwdGggKiAyKQpAQCAtMzk4LDggKzM5OCw4IEBAIHN0YXRpYyB2b2lkIG91dHB1
dElubGluZVJ1bnMoVGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0
U3RhdGUsCiAgICAgc3RyZWFtIDw8ICIgICI7CiAKICAgICBzdHJlYW0gPDwgImxpbmVzIGFyZSAt
PiAiOwotICAgIGZvciAoYXV0byYgbGluZUJveCA6IGxpbmVCb3hlcykKLSAgICAgICAgc3RyZWFt
IDw8ICJbIiA8PCBsaW5lQm94LmxlZnQoKSA8PCAiLCIgPDwgbGluZUJveC50b3AoKSA8PCAiICIg
PDwgbGluZUJveC53aWR0aCgpIDw8ICJ4IiA8PCBsaW5lQm94LmhlaWdodCgpIDw8ICJdICI7Cisg
ICAgZm9yIChhdXRvJiBsaW5lIDogbGluZXMpCisgICAgICAgIHN0cmVhbSA8PCAiWyIgPDwgbGlu
ZS5sZWZ0KCkgPDwgIiwiIDw8IGxpbmUudG9wKCkgPDwgIiAiIDw8IGxpbmUud2lkdGgoKSA8PCAi
eCIgPDwgbGluZS5oZWlnaHQoKSA8PCAiXSAiOwogICAgIHN0cmVhbS5uZXh0TGluZSgpOwogCiAg
ICAgZm9yIChhdXRvJiBkaXNwbGF5UnVuIDogZGlzcGxheVJ1bnMpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVGb3JtYXR0aW5nQ29udGV4
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlRm9ybWF0
dGluZ0NvbnRleHQuY3BwCmluZGV4IGUzMGFiYTYyMDJlYjNhNjRiNjZlNGJkMzg2NTE0YzRkNzhl
ZWIyNTkuLjZiMDIyZjRhY2MyODI0OGZkYjA3MjdlMmQyYzhiMTFmZTUyNDAxM2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVGb3JtYXR0aW5n
Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L3RhYmxlZm9ybWF0dGluZy9U
YWJsZUZvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtMTMyLDggKzEzMiw4IEBAIHZvaWQgVGFibGVG
b3JtYXR0aW5nQ29udGV4dDo6c2V0VXNlZEdlb21ldHJ5Rm9yQ2VsbHMoTGF5b3V0VW5pdCBhdmFp
bGFibGVIb3Jpem9uCiAgICAgICAgICAgICAgICAgICAgIGF1dG8mIGRpc3BsYXlDb250ZW50ID0g
bGF5b3V0U3RhdGUoKS5lc3RhYmxpc2hlZElubGluZUZvcm1hdHRpbmdTdGF0ZShjZWxsQm94KS5l
bnN1cmVEaXNwbGF5SW5saW5lQ29udGVudCgpOwogICAgICAgICAgICAgICAgICAgICBmb3IgKGF1
dG8mIHJ1biA6IGRpc3BsYXlDb250ZW50LnJ1bnMpCiAgICAgICAgICAgICAgICAgICAgICAgICBy
dW4ubW92ZVZlcnRpY2FsbHkoaW50cmluc2ljUGFkZGluZ1RvcCk7Ci0gICAgICAgICAgICAgICAg
ICAgIGZvciAoYXV0byYgbGluZUJveCA6IGRpc3BsYXlDb250ZW50LmxpbmVCb3hlcykKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGxpbmVCb3gubW92ZVZlcnRpY2FsbHkoaW50cmluc2ljUGFkZGlu
Z1RvcCk7CisgICAgICAgICAgICAgICAgICAgIGZvciAoYXV0byYgbGluZSA6IGRpc3BsYXlDb250
ZW50LmxpbmVzKQorICAgICAgICAgICAgICAgICAgICAgICAgbGluZS5tb3ZlVmVydGljYWxseShp
bnRyaW5zaWNQYWRkaW5nVG9wKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Owog
ICAgICAgICAgICAgYWRqdXN0Q2VsbENvbnRlbnRXaXRoSW5zdHJpbnNpY1BhZGRpbmdCZWZvcmUo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFi
bGVGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC90
YWJsZWZvcm1hdHRpbmcvVGFibGVGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcAppbmRleCAw
ZDJhNjZjMWVkNmJiYzc2ZTU4ZGViYTY5OWZkOTkxMDlhZjkyZmY0Li45NzhjNzA0ZGJlZjI4MGVm
N2IwOGIzZDc1MTcxY2QzYjQ3MjI5N2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUZvcm1hdHRpbmdD
b250ZXh0R2VvbWV0cnkuY3BwCkBAIC0xNDYsMTIgKzE0NiwxMiBAQCBJbmxpbmVMYXlvdXRVbml0
IFRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojp1c2VkQmFzZWxpbmVGb3JDZWxsKGNv
bnN0IENvbgogICAgIC8vIG9yIHRoZSBmaXJzdCBpbi1mbG93IHRhYmxlLXJvdyBpbiB0aGUgY2Vs
bCwgd2hpY2hldmVyIGNvbWVzIGZpcnN0LgogICAgIC8vIElmIHRoZXJlIGlzIG5vIHN1Y2ggbGlu
ZSBib3gsIHRoZSBiYXNlbGluZSBpcyB0aGUgYm90dG9tIG9mIGNvbnRlbnQgZWRnZSBvZiB0aGUg
Y2VsbCBib3guCiAgICAgaWYgKGNlbGxCb3guZXN0YWJsaXNoZXNJbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dCgpKQotICAgICAgICByZXR1cm4gbGF5b3V0U3RhdGUoKS5lc3RhYmxpc2hlZElubGluZUZv
cm1hdHRpbmdTdGF0ZShjZWxsQm94KS5kaXNwbGF5SW5saW5lQ29udGVudCgpLT5saW5lQm94ZXNb
MF0uYmFzZWxpbmUoKTsKKyAgICAgICAgcmV0dXJuIGxheW91dFN0YXRlKCkuZXN0YWJsaXNoZWRJ
bmxpbmVGb3JtYXR0aW5nU3RhdGUoY2VsbEJveCkuZGlzcGxheUlubGluZUNvbnRlbnQoKS0+bGlu
ZXNbMF0uYmFzZWxpbmUoKTsKICAgICBmb3IgKGF1dG8mIGNlbGxEZXNjZW5kYW50IDogZGVzY2Vu
ZGFudHNPZlR5cGU8Q29udGFpbmVyQm94PihjZWxsQm94KSkgewogICAgICAgICBpZiAoY2VsbERl
c2NlbmRhbnQuZXN0YWJsaXNoZXNJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCgpKSB7CiAgICAgICAg
ICAgICBhdXRvKiBkaXNwbGF5SW5saW5lQ29udGVudCA9IGxheW91dFN0YXRlKCkuZXN0YWJsaXNo
ZWRJbmxpbmVGb3JtYXR0aW5nU3RhdGUoY2VsbERlc2NlbmRhbnQpLmRpc3BsYXlJbmxpbmVDb250
ZW50KCk7CiAgICAgICAgICAgICBpZiAoIWRpc3BsYXlJbmxpbmVDb250ZW50LT5ydW5zLmlzRW1w
dHkoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZGlzcGxheUlubGluZUNvbnRlbnQtPmxpbmVC
b3hlc1swXS5iYXNlbGluZSgpOworICAgICAgICAgICAgICAgIHJldHVybiBkaXNwbGF5SW5saW5l
Q29udGVudC0+bGluZXNbMF0uYmFzZWxpbmUoKTsKICAgICAgICAgfQogICAgICAgICBpZiAoY2Vs
bERlc2NlbmRhbnQuZXN0YWJsaXNoZXNUYWJsZUZvcm1hdHRpbmdDb250ZXh0KCkpCiAgICAgICAg
ICAgICByZXR1cm4gbGF5b3V0U3RhdGUoKS5lc3RhYmxpc2hlZFRhYmxlRm9ybWF0dGluZ1N0YXRl
KGNlbGxEZXNjZW5kYW50KS50YWJsZUdyaWQoKS5yb3dzKCkubGlzdCgpWzBdLmJhc2VsaW5lKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lTGF5b3V0VHJh
dmVyc2FsRGlzcGxheVJ1blBhdGguaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xp
bmVMYXlvdXRUcmF2ZXJzYWxEaXNwbGF5UnVuUGF0aC5oCmluZGV4IDk1YjI3NDI4MGYyM2Q2Y2Vk
ZjZmY2M2NjU4NGI0YjAzYTI5YjQ4ZjQuLjFhZjEyMTQ1NDk1NDQ0ZmUzZmMxY2ZlOTYyZjFjNmVk
ZTk2YWJjYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVM
YXlvdXRUcmF2ZXJzYWxEaXNwbGF5UnVuUGF0aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9saW5lL0xpbmVMYXlvdXRUcmF2ZXJzYWxEaXNwbGF5UnVuUGF0aC5oCkBAIC01Miw3ICs1
Miw3IEBAIHB1YmxpYzoKIAogICAgIEZsb2F0UmVjdCByZWN0KCkgY29uc3Q7CiAKLSAgICBmbG9h
dCBiYXNlbGluZSgpIGNvbnN0IHsgcmV0dXJuIGxpbmVCb3goKS5iYXNlbGluZSgpOyB9CisgICAg
ZmxvYXQgYmFzZWxpbmUoKSBjb25zdCB7IHJldHVybiBsaW5lKCkuYmFzZWxpbmUoKTsgfQogCiAg
ICAgYm9vbCBpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQog
ICAgIGJvb2wgaXNIb3Jpem9udGFsKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtOTgsNyAr
OTgsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGNvbnN0IERpc3BsYXk6OklubGluZUNvbnRl
bnQ6OlJ1bnMmIHJ1bnMoKSBjb25zdCB7IHJldHVybiBtX2lubGluZUNvbnRlbnQtPnJ1bnM7IH0K
ICAgICBjb25zdCBEaXNwbGF5OjpSdW4mIHJ1bigpIGNvbnN0IHsgcmV0dXJuIHJ1bnMoKVttX3J1
bkluZGV4XTsgfQotICAgIGNvbnN0IERpc3BsYXk6OkxpbmVCb3gmIGxpbmVCb3goKSBjb25zdCB7
IHJldHVybiBtX2lubGluZUNvbnRlbnQtPmxpbmVCb3hGb3JSdW4ocnVuKCkpOyB9CisgICAgY29u
c3QgRGlzcGxheTo6TGluZSYgbGluZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lQ29udGVudC0+
bGluZUZvclJ1bihydW4oKSk7IH0KIAogICAgIFJlZlB0cjxjb25zdCBEaXNwbGF5OjpJbmxpbmVD
b250ZW50PiBtX2lubGluZUNvbnRlbnQ7CiAgICAgc2l6ZV90IG1fZW5kSW5kZXggeyAwIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408143</attachid>
            <date>2020-09-06 15:33:49 -0700</date>
            <delta_ts>2020-09-06 16:42:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216232-20200906153348.patch</filename>
            <type>text/plain</type>
            <size>36432</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2NjgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDMyMDgxMjRhM2JkZmM0
MjBmN2VhMGRjNTEyOTdjNGEwZWM0NDFiNy4uNDE1YjZkYTk5ZTkwMThhNDZhY2QyMmFlMDBmOWYx
MWNkZTY0YWFkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDIwLTA5LTA2ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSUZDXSBSZW5hbWUg
RGlzcGxheTo6TGluZUJveCB0byBEaXNwbGF5OjpMaW5lCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTYyMzIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEaXNwbGF5OjpMaW5lQm94IHJlcHJlc2VudCBhIGxp
bmUgYW5kIG5vdCB0byBiZSBjb25mdXNlZCB3aXRoIExheW91dDo6TGluZUJveCB3aGljaCByZXBy
ZXNlbnRzIGEgY29sbGVjdGlvbiBvZiBpbmxpbmUgYm94ZXMuCisKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogbGF5b3V0L0Zvcm1hdHRpbmdD
b250ZXh0R2VvbWV0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5n
Q29udGV4dDo6R2VvbWV0cnk6OmNvbnRlbnRIZWlnaHRGb3JGb3JtYXR0aW5nQ29udGV4dFJvb3Qg
Y29uc3QpOgorICAgICAgICAqIGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5n
Q29udGV4dEdlb21ldHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3Jt
YXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd05vblJlcGxhY2VkSGVpZ2h0QW5kTWFyZ2lu
KToKKyAgICAgICAgKiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrTWFyZ2luQ29sbGFwc2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpN
YXJnaW5Db2xsYXBzZTo6bWFyZ2luc0NvbGxhcHNlVGhyb3VnaCBjb25zdCk6CisgICAgICAgICog
bGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlJbmxpbmVDb250ZW50Lmg6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5OjpJbmxpbmVDb250ZW50OjpsaW5lRm9yUnVuIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXk6OklubGluZUNvbnRlbnQ6OmxpbmVCb3hGb3JSdW4gY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIGxheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5TGluZS5oOiBSZW5h
bWVkIGZyb20gU291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlMaW5lQm94
LmguCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMaW5lOjpyZWN0IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXk6OkxpbmU6OnNjcm9sbGFibGVPdmVyZmxvdyBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMaW5lOjppbmtPdmVyZmxvdyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMaW5lOjpsZWZ0IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXk6OkxpbmU6OnJpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXk6OkxpbmU6OnRvcCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpMaW5lOjpi
b3R0b20gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6TGluZTo6d2lkdGggY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6TGluZTo6aGVpZ2h0IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkxpbmU6OmJhc2VsaW5lIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXk6OkxpbmU6OkxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eTo6TGluZTo6bW92ZVZlcnRpY2FsbHkpOgorICAgICAgICAqIGxheW91dC9kaXNwbGF5dHJlZS9E
aXNwbGF5UGFpbnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpwYWludElubGlu
ZUNvbnRlbnQpOgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1h
dHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0
dGluZ0NvbnRleHQ6OmxpbmVMYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxp
bmVGb3JtYXR0aW5nQ29udGV4dDo6Y3JlYXRlRGlzcGxheUJveGVzRm9yTGluZUNvbnRlbnQpOgor
ICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0
UXVpcmtzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQ6OlF1aXJrczo6bGluZURlc2NlbnROZWVkc0NvbGxhcHNpbmcgY29uc3QpOgorICAgICAg
ICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdTdGF0ZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nU3RhdGU6OnNocmlua0Rpc3Bs
YXlJbmxpbmVDb250ZW50KToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9Jbmxp
bmVMaW5lQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6Y29uc3Ry
dWN0SW5saW5lQm94ZXMpOgorICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRl
Z3JhdGlvbkxpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRp
b246OkxpbmVMYXlvdXQ6OmNvbnRlbnRMb2dpY2FsSGVpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lTGF5b3V0OjpsaW5lQ291bnQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxpbmVMYXlvdXQ6OmZpcnN0TGlu
ZUJhc2VsaW5lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpM
aW5lTGF5b3V0OjpsYXN0TGluZUJhc2VsaW5lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dEludGVncmF0aW9uOjpMaW5lTGF5b3V0Ojpjb2xsZWN0T3ZlcmZsb3cpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxpbmVMYXlvdXQ6OnBhaW50KToKKyAgICAgICAg
KiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6Om91dHB1dElubGluZVJ1bnMpOgorICAgICAgICAqIGxheW91dC90YWJsZWZv
cm1hdHRpbmcvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OlRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OnNldFVzZWRHZW9tZXRyeUZvckNlbGxzKToK
KyAgICAgICAgKiBsYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlRm9ybWF0dGluZ0NvbnRleHRH
ZW9tZXRyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlRhYmxlRm9ybWF0dGluZ0Nv
bnRleHQ6Okdlb21ldHJ5Ojp1c2VkQmFzZWxpbmVGb3JDZWxsKToKKyAgICAgICAgKiByZW5kZXJp
bmcvbGluZS9MaW5lTGF5b3V0VHJhdmVyc2FsRGlzcGxheVJ1blBhdGguaDoKKyAgICAgICAgKFdl
YkNvcmU6OkxpbmVMYXlvdXRUcmF2ZXJzYWw6OkRpc3BsYXlSdW5QYXRoOjpiYXNlbGluZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0VHJhdmVyc2FsOjpEaXNwbGF5UnVuUGF0
aDo6bGluZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMaW5lTGF5b3V0VHJhdmVyc2FsOjpE
aXNwbGF5UnVuUGF0aDo6bGluZUJveCBjb25zdCk6IERlbGV0ZWQuCisKIDIwMjAtMDktMDYgIFph
bGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJRkNdIExpbmVC
b3ggc2hvdWxkIGNvbnRhaW4gYWxsIGlubGluZSBib3hlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXgg
MjBjODZhZjNmOTRlMjFjMjZkZmE5NzdiNTNhMGJlMDk5NjA5MzNkOC4uZDM4NDQ3MWU2MDM3ZDlk
ZjAwYzZkODYzMDRjMmI4MTExYjc0NWE4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVh
ZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC02OTYsNyAr
Njk2LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIGxheW91
dC9kaXNwbGF5dHJlZS9EaXNwbGF5Qm94LmgKICAgICBsYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxh
eUlubGluZUNvbnRlbnQuaAogICAgIGxheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5SW5saW5lUmVj
dC5oCi0gICAgbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlMaW5lQm94LmgKKyAgICBsYXlvdXQv
ZGlzcGxheXRyZWUvRGlzcGxheUxpbmUuaAogICAgIGxheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5
UmVjdC5oCiAgICAgbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlSdW4uaAogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjllMDgy
Mjk5ZGZmZTZkYTg1Yzk4Njk2Yzc4NTZmMDUyNjhiZDg0MS4uZDQ3ZTNhNjAzZWI1MzUxZjYwZjU1
YTBmZTNmMTBhNTJkMDk3NDcwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjA4Miw3ICsyMDgyLDcgQEAKIAkJNkZBNDQ1NEU4
OThGMkZDMTY4QkMzOEMxIC8qIEpTQmVmb3JlVW5sb2FkRXZlbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5RTA0QTI3QkVEMkY4MUY5OEU5MDIyQiAv
KiBKU0JlZm9yZVVubG9hZEV2ZW50LmggKi87IH07CiAJCTZGQjExQjVDMjE3ODNGRDAwMEUyQTU3
NCAvKiBUZXh0VXRpbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNkZCMTFCNTkyMTc4M0ZDRjAwRTJBNTc0IC8qIFRleHRVdGlsLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNkZCMjQwMDUyM0RGRjEyODAw
Nzk2NDU4IC8qIElubGluZUxpbmVCb3guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDZGQjI0MDAzMjNERkYxMjcwMDc5NjQ1OCAvKiBJbmxpbmVMaW5lQm94
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNkZC
NDdFNjMyMjc3NDI1QTAwQzdCQ0IwIC8qIERpc3BsYXlMaW5lQm94LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RkI0N0U2MTIyNzc0MjVBMDBDN0JDQjAg
LyogRGlzcGxheUxpbmVCb3guaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQk2RkI0N0U2MzIyNzc0MjVBMDBDN0JDQjAgLyogRGlzcGxheUxpbmUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZGQjQ3RTYxMjI3
NzQyNUEwMEM3QkNCMCAvKiBEaXNwbGF5TGluZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTZGQjVFMjE0MjIxRjI0NTMwMDM5ODlDRiAvKiBDb250
ZW50Q2hhbmdlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDZGQjVFMjEyMjIxRjI0NDcwMDM5ODlDRiAvKiBDb250ZW50Q2hhbmdlT2JzZXJ2
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2
RkNFMUExQTIyNjE4QUJEMDA0RjAzNDMgLyogRGlzcGxheVJ1bi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkZDRTFBMTgyMjYxOEFCMzAwNEYwMzQzIC8q
IERpc3BsYXlSdW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk2RkQ5Q0Q1NDIyN0UyMUM4MDBFNTM5NTcgLyogRGlzcGxheVJlY3QuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZGRDlDRDUyMjI3RTIxQzgw
MEU1Mzk1NyAvKiBEaXNwbGF5UmVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC05NjE2LDcgKzk2MTYsNyBAQAogCQk2RkIxMUI1QjIxNzgzRkNG
MDBFMkE1NzQgLyogVGV4dFV0aWwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gVGV4dFV0aWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RkIyMkUz
MDIzMDA5N0UzMDBDMjA4NjYgLyogVGFibGVHcmlkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRhYmxlR3Jp
ZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RkIyNDAwMzIzREZGMTI3MDA3OTY0
NTggLyogSW5saW5lTGluZUJveC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJ
bmxpbmVMaW5lQm94Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTZGQjQ3RTYxMjI3
NzQyNUEwMEM3QkNCMCAvKiBEaXNwbGF5TGluZUJveC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBEaXNwbGF5TGluZUJveC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk2RkI0N0U2MTIyNzc0MjVBMDBDN0JDQjAgLyogRGlzcGxheUxpbmUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxheUxpbmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNkZCNUUyMTIyMjFGMjQ0NzAwMzk4OUNGIC8qIENvbnRlbnRDaGFuZ2VPYnNlcnZl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDb250ZW50Q2hhbmdlT2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNkZCQjg2MDUyMEI0NjRCNjAwREFEOTM4IC8qIEZvcm1hdHRpbmdD
b250ZXh0R2VvbWV0cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9ybWF0dGluZ0NvbnRleHRH
ZW9tZXRyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZGQzUzQUVCMjRBRjdB
OEUwMDYwNTlGRSAvKiBUYWJsZUZvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFRhYmxlRm9ybWF0dGluZ0NvbnRleHRRdWlya3MuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTc0ODEsNyArMTc0ODEsNyBAQAogCQkJCUU0RkI0QjM1MjM5QkVC
MTAwMDNDMzM2QSAvKiBEaXNwbGF5SW5saW5lQ29udGVudC5jcHAgKi8sCiAJCQkJRTQ1MUM2MzMy
Mzk0MDU4RTAwOTkzMTkwIC8qIERpc3BsYXlJbmxpbmVDb250ZW50LmggKi8sCiAJCQkJMTEyRkIz
NTAyMzlDMjNDNDAwODcwNTRBIC8qIERpc3BsYXlJbmxpbmVSZWN0LmggKi8sCi0JCQkJNkZCNDdF
NjEyMjc3NDI1QTAwQzdCQ0IwIC8qIERpc3BsYXlMaW5lQm94LmggKi8sCisJCQkJNkZCNDdFNjEy
Mjc3NDI1QTAwQzdCQ0IwIC8qIERpc3BsYXlMaW5lLmggKi8sCiAJCQkJNkY3Nzg2ODUyMzQ5MUFD
NjAwNEQ5NjM2IC8qIERpc3BsYXlQYWludGVyLmNwcCAqLywKIAkJCQk2Rjc3ODY4NzIzNDkxQUQ3
MDA0RDk2MzYgLyogRGlzcGxheVBhaW50ZXIuaCAqLywKIAkJCQk2RkQ5Q0Q1MjIyN0UyMUM4MDBF
NTM5NTcgLyogRGlzcGxheVJlY3QuaCAqLywKQEAgLTMwOTUxLDcgKzMwOTUxLDcgQEAKIAkJCQkx
MTk5RkE1QjIwOEUzQzdGMDAyMzU4Q0MgLyogRGlzcGxheUJveC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRTQ1MUM2MzQyMzk0MDU4RjAwOTkzMTkwIC8qIERpc3BsYXlJbmxpbmVDb250ZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQkxMTJGQjM1MjIzOUMyM0M0MDA4NzA1NEEgLyogRGlzcGxheUlubGlu
ZVJlY3QuaCBpbiBIZWFkZXJzICovLAotCQkJCTZGQjQ3RTYzMjI3NzQyNUEwMEM3QkNCMCAvKiBE
aXNwbGF5TGluZUJveC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkZCNDdFNjMyMjc3NDI1QTAwQzdC
Q0IwIC8qIERpc3BsYXlMaW5lLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkU1RkJEMzFDM0RENTFF
MDAwN0EyQ0EgLyogRGlzcGxheUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTU1QUQwOTQwMjQw
ODk2NDAwMERFNEQyRiAvKiBEaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0LmggaW4gSGVhZGVycyAq
LywKIAkJCQk1NUFEMDkzRTI0MDg5NjM1MDBERTREMkYgLyogRGlzcGxheUxpc3RJbWFnZUJ1ZmZl
ci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9y
bWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0
dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKaW5kZXggYzhiOWExYjgwMWRmNTMzODFmYjg5YWVhZDY5
ZGNlNTE0ZmNjZDc1ZS4uMDVjZTk2ZTgxNjc4YzFlODE2MGFmMjQ2YjM3NzM1NWYyNTE1OTU1YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0
cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21l
dHJ5LmNwcApAQCAtMTkzLDExICsxOTMsMTEgQEAgTGF5b3V0VW5pdCBGb3JtYXR0aW5nQ29udGV4
dDo6R2VvbWV0cnk6OmNvbnRlbnRIZWlnaHRGb3JGb3JtYXR0aW5nQ29udGV4dFJvb3QoY28KICAg
ICBhdXRvIGJvdHRvbSA9IGJvcmRlckFuZFBhZGRpbmdUb3A7CiAgICAgYXV0byYgZm9ybWF0dGlu
Z1Jvb3RDb250YWluZXIgPSBkb3duY2FzdDxDb250YWluZXJCb3g+KGxheW91dEJveCk7CiAgICAg
aWYgKGZvcm1hdHRpbmdSb290Q29udGFpbmVyLmVzdGFibGlzaGVzSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQoKSkgewotICAgICAgICBhdXRvJiBsaW5lQm94ZXMgPSBsYXlvdXRTdGF0ZS5lc3RhYmxp
c2hlZElubGluZUZvcm1hdHRpbmdTdGF0ZShmb3JtYXR0aW5nUm9vdENvbnRhaW5lcikuZGlzcGxh
eUlubGluZUNvbnRlbnQoKS0+bGluZUJveGVzOworICAgICAgICBhdXRvJiBsaW5lcyA9IGxheW91
dFN0YXRlLmVzdGFibGlzaGVkSW5saW5lRm9ybWF0dGluZ1N0YXRlKGZvcm1hdHRpbmdSb290Q29u
dGFpbmVyKS5kaXNwbGF5SW5saW5lQ29udGVudCgpLT5saW5lczsKICAgICAgICAgLy8gRXZlbiBl
bXB0eSBjb250YWluZXJzIGdlbmVyYXRlIG9uZSBsaW5lLiAKLSAgICAgICAgQVNTRVJUKCFsaW5l
Qm94ZXMuaXNFbXB0eSgpKTsKLSAgICAgICAgdG9wID0gbGluZUJveGVzLmZpcnN0KCkudG9wKCk7
Ci0gICAgICAgIGJvdHRvbSA9IGxpbmVCb3hlcy5sYXN0KCkuYm90dG9tKCk7CisgICAgICAgIEFT
U0VSVCghbGluZXMuaXNFbXB0eSgpKTsKKyAgICAgICAgdG9wID0gbGluZXMuZmlyc3QoKS50b3Ao
KTsKKyAgICAgICAgYm90dG9tID0gbGluZXMubGFzdCgpLmJvdHRvbSgpOwogICAgIH0gZWxzZSBp
ZiAoZm9ybWF0dGluZ1Jvb3RDb250YWluZXIuZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0KCkgfHwgZm9ybWF0dGluZ1Jvb3RDb250YWluZXIuZXN0YWJsaXNoZXNUYWJsZUZvcm1hdHRp
bmdDb250ZXh0KCkgfHwgZm9ybWF0dGluZ1Jvb3RDb250YWluZXIuaXNEb2N1bWVudEJveCgpKSB7
CiAgICAgICAgIGlmIChmb3JtYXR0aW5nUm9vdENvbnRhaW5lci5oYXNJbkZsb3dDaGlsZCgpKSB7
CiAgICAgICAgICAgICBhdXRvJiBmaXJzdEJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ0NvbnRleHQu
Z2VvbWV0cnlGb3JCb3goKmZvcm1hdHRpbmdSb290Q29udGFpbmVyLmZpcnN0SW5GbG93Q2hpbGQo
KSwgRXNjYXBlUmVhc29uOjpOZWVkc0dlb21ldHJ5RnJvbUVzdGFibGlzaGVkRm9ybWF0dGluZ0Nv
bnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGlu
Zy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCmlu
ZGV4IDlmYTZmNmZiNTUyMzIxM2E2NDEyZGJlNTEwOWM1MzJjYWQzMzYyZjAuLmJiNzBmYmIyOTc1
OGExOTdhNWJkOTQ1OThjYTMwOWQzZDA3M2YxY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0
dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKQEAgLTc3LDEwICs3NywxMCBAQCBDb250ZW50SGVpZ2h0
QW5kTWFyZ2luIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dOb25SZXBs
YWNlZEhlaWdodAogICAgICAgICAvLyAxLiB0aGUgYm90dG9tIGVkZ2Ugb2YgdGhlIGxhc3QgbGlu
ZSBib3gsIGlmIHRoZSBib3ggZXN0YWJsaXNoZXMgYSBpbmxpbmUgZm9ybWF0dGluZyBjb250ZXh0
IHdpdGggb25lIG9yIG1vcmUgbGluZXMKICAgICAgICAgYXV0byYgbGF5b3V0Q29udGFpbmVyID0g
ZG93bmNhc3Q8Q29udGFpbmVyQm94PihsYXlvdXRCb3gpOwogICAgICAgICBpZiAobGF5b3V0Q29u
dGFpbmVyLmVzdGFibGlzaGVzSW5saW5lRm9ybWF0dGluZ0NvbnRleHQoKSkgewotICAgICAgICAg
ICAgYXV0byYgbGluZUJveGVzID0gbGF5b3V0U3RhdGUoKS5lc3RhYmxpc2hlZElubGluZUZvcm1h
dHRpbmdTdGF0ZShsYXlvdXRDb250YWluZXIpLmRpc3BsYXlJbmxpbmVDb250ZW50KCktPmxpbmVC
b3hlczsKKyAgICAgICAgICAgIGF1dG8mIGxpbmVzID0gbGF5b3V0U3RhdGUoKS5lc3RhYmxpc2hl
ZElubGluZUZvcm1hdHRpbmdTdGF0ZShsYXlvdXRDb250YWluZXIpLmRpc3BsYXlJbmxpbmVDb250
ZW50KCktPmxpbmVzOwogICAgICAgICAgICAgLy8gRXZlbiBlbXB0eSBjb250YWluZXJzIGdlbmVy
YXRlIG9uZSBsaW5lLiAKLSAgICAgICAgICAgIEFTU0VSVCghbGluZUJveGVzLmlzRW1wdHkoKSk7
Ci0gICAgICAgICAgICByZXR1cm4geyB0b0xheW91dFVuaXQobGluZUJveGVzLmxhc3QoKS5ib3R0
b20oKSkgLSBib3JkZXJBbmRQYWRkaW5nVG9wLCBub25Db2xsYXBzZWRNYXJnaW4gfTsKKyAgICAg
ICAgICAgIEFTU0VSVCghbGluZXMuaXNFbXB0eSgpKTsKKyAgICAgICAgICAgIHJldHVybiB7IHRv
TGF5b3V0VW5pdChsaW5lcy5sYXN0KCkuYm90dG9tKCkpIC0gYm9yZGVyQW5kUGFkZGluZ1RvcCwg
bm9uQ29sbGFwc2VkTWFyZ2luIH07CiAgICAgICAgIH0KIAogICAgICAgICAvLyAyLiB0aGUgYm90
dG9tIGVkZ2Ugb2YgdGhlIGJvdHRvbSAocG9zc2libHkgY29sbGFwc2VkKSBtYXJnaW4gb2YgaXRz
IGxhc3QgaW4tZmxvdyBjaGlsZCwgaWYgdGhlIGNoaWxkJ3MgYm90dG9tIG1hcmdpbi4uLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja01hcmdp
bkNvbGxhcHNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxv
Y2tNYXJnaW5Db2xsYXBzZS5jcHAKaW5kZXggMWNjOGZlZWM1Yjc1YzE3YjJkMDllNGUzZjY2Y2Yy
MGJjMjYxOWE3My4uNWZmZTRhMjVjMGEwYmM5NzFmZmM5MzQyYzEzODQ3NDY3NmI3MDhkYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja01hcmdp
bkNvbGxhcHNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5n
L0Jsb2NrTWFyZ2luQ29sbGFwc2UuY3BwCkBAIC00MDcsNyArNDA3LDcgQEAgYm9vbCBCbG9ja0Zv
cm1hdHRpbmdDb250ZXh0OjpNYXJnaW5Db2xsYXBzZTo6bWFyZ2luc0NvbGxhcHNlVGhyb3VnaChj
b25zdCBCb3gmIGwKIAogICAgICAgICAgICAgYXV0byBpc0NvbnNpZGVyZWRFbXB0eSA9IFsmXSB7
CiAgICAgICAgICAgICAgICAgYXV0byYgZm9ybWF0dGluZ1N0YXRlID0gbGF5b3V0U3RhdGUuZXN0
YWJsaXNoZWRJbmxpbmVGb3JtYXR0aW5nU3RhdGUoY29udGFpbmVyQm94KTsKLSAgICAgICAgICAg
ICAgICBpZiAoYXV0byogaW5saW5lQ29udGVudCA9IGZvcm1hdHRpbmdTdGF0ZS5kaXNwbGF5SW5s
aW5lQ29udGVudCgpOyBpbmxpbmVDb250ZW50ICYmICFpbmxpbmVDb250ZW50LT5saW5lQm94ZXMu
aXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIGlmIChhdXRvKiBpbmxpbmVDb250ZW50ID0gZm9y
bWF0dGluZ1N0YXRlLmRpc3BsYXlJbmxpbmVDb250ZW50KCk7IGlubGluZUNvbnRlbnQgJiYgIWlu
bGluZUNvbnRlbnQtPmxpbmVzLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICAgICAgICAgIC8vIEFueSBmbG9hdCBib3ggaW4gdGhpcyBmb3JtYXR0
aW5nIGNvbnRleHQgcHJldmVudHMgY29sbGFwc2luZyB0aHJvdWdoLgogICAgICAgICAgICAgICAg
IGF1dG8mIGZsb2F0cyA9IGZvcm1hdHRpbmdTdGF0ZS5mbG9hdGluZ1N0YXRlKCkuZmxvYXRzKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheUlu
bGluZUNvbnRlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5
SW5saW5lQ29udGVudC5oCmluZGV4IDcwMzQ0MzgzOWYzMmEwNDY3MjIwYTk5NmZiNTEyZGM1ZGI5
N2I1ZmMuLjQzN2EyMzg5ZWU1NTBlYTFlOWNiN2IxMjE2YmRjMTZkNzU4NjM4OTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5SW5saW5lQ29udGVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5SW5saW5l
Q29udGVudC5oCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJ
TkdfQ09OVEVYVCkKIAotI2luY2x1ZGUgIkRpc3BsYXlMaW5lQm94LmgiCisjaW5jbHVkZSAiRGlz
cGxheUxpbmUuaCIKICNpbmNsdWRlICJEaXNwbGF5UnVuLmgiCiAjaW5jbHVkZSA8d3RmL0l0ZXJh
dG9yUmFuZ2UuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0zOSwxMiArMzksMTIgQEAg
c3RydWN0IElubGluZUNvbnRlbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxJbmxpbmVDb250ZW50PiB7
CiAgICAgfklubGluZUNvbnRlbnQoKTsKIAogICAgIHVzaW5nIFJ1bnMgPSBWZWN0b3I8UnVuLCA0
PjsKLSAgICB1c2luZyBMaW5lQm94ZXMgPSBWZWN0b3I8TGluZUJveCwgND47CisgICAgdXNpbmcg
TGluZXMgPSBWZWN0b3I8TGluZSwgND47CiAKICAgICBSdW5zIHJ1bnM7Ci0gICAgTGluZUJveGVz
IGxpbmVCb3hlczsKKyAgICBMaW5lcyBsaW5lczsKIAotICAgIGNvbnN0IExpbmVCb3gmIGxpbmVC
b3hGb3JSdW4oY29uc3QgUnVuJiBydW4pIGNvbnN0IHsgcmV0dXJuIGxpbmVCb3hlc1tydW4ubGlu
ZUluZGV4KCldOyB9CisgICAgY29uc3QgTGluZSYgbGluZUZvclJ1bihjb25zdCBSdW4mIHJ1bikg
Y29uc3QgeyByZXR1cm4gbGluZXNbcnVuLmxpbmVJbmRleCgpXTsgfQogICAgIFdURjo6SXRlcmF0
b3JSYW5nZTxjb25zdCBSdW4qPiBydW5zRm9yUmVjdChjb25zdCBMYXlvdXRSZWN0JikgY29uc3Q7
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlz
cGxheUxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5TGlu
ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjYxYzBiNjY3ZjExYTVlMjM4NmM1NDRkNzNkZjVhNDcyYTBiYWRmNGIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlz
cGxheUxpbmUuaApAQCAtMCwwICsxLDgwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKKworI2luY2x1ZGUgIkRpc3Bs
YXlJbmxpbmVSZWN0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBEaXNwbGF5
IHsKKworY2xhc3MgTGluZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6
CisgICAgTGluZShjb25zdCBJbmxpbmVSZWN0JiwgY29uc3QgSW5saW5lUmVjdCYgc2Nyb2xsYWJs
ZU92ZXJmbG93LCBjb25zdCBJbmxpbmVSZWN0JiBpbmtPdmVyZmxvdywgSW5saW5lTGF5b3V0VW5p
dCBiYXNlbGluZSk7CisKKyAgICBjb25zdCBJbmxpbmVSZWN0JiByZWN0KCkgY29uc3QgeyByZXR1
cm4gbV9yZWN0OyB9CisgICAgY29uc3QgSW5saW5lUmVjdCYgc2Nyb2xsYWJsZU92ZXJmbG93KCkg
Y29uc3QgeyByZXR1cm4gbV9zY3JvbGxhYmxlT3ZlcmZsb3c7IH0KKyAgICBjb25zdCBJbmxpbmVS
ZWN0JiBpbmtPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIG1faW5rT3ZlcmZsb3c7IH0KKworICAg
IElubGluZUxheW91dFVuaXQgbGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdC5sZWZ0KCk7IH0K
KyAgICBJbmxpbmVMYXlvdXRVbml0IHJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9yZWN0LnJpZ2h0
KCk7IH0KKyAgICBJbmxpbmVMYXlvdXRVbml0IHRvcCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdC50
b3AoKTsgfQorICAgIElubGluZUxheW91dFVuaXQgYm90dG9tKCkgY29uc3QgeyByZXR1cm4gbV9y
ZWN0LmJvdHRvbSgpOyB9CisKKyAgICBJbmxpbmVMYXlvdXRVbml0IHdpZHRoKCkgY29uc3QgeyBy
ZXR1cm4gbV9yZWN0LndpZHRoKCk7IH0KKyAgICBJbmxpbmVMYXlvdXRVbml0IGhlaWdodCgpIGNv
bnN0IHsgcmV0dXJuIG1fcmVjdC5oZWlnaHQoKTsgfQorCisgICAgdm9pZCBtb3ZlVmVydGljYWxs
eShJbmxpbmVMYXlvdXRVbml0KTsKKworICAgIElubGluZUxheW91dFVuaXQgYmFzZWxpbmUoKSBj
b25zdCB7IHJldHVybiBtX2Jhc2VsaW5lOyB9CisKK3ByaXZhdGU6CisgICAgSW5saW5lUmVjdCBt
X3JlY3Q7CisgICAgSW5saW5lUmVjdCBtX3Njcm9sbGFibGVPdmVyZmxvdzsKKyAgICBJbmxpbmVS
ZWN0IG1faW5rT3ZlcmZsb3c7CisgICAgSW5saW5lTGF5b3V0VW5pdCBtX2Jhc2VsaW5lIHsgMCB9
OworfTsKKworaW5saW5lIExpbmU6OkxpbmUoY29uc3QgSW5saW5lUmVjdCYgcmVjdCwgY29uc3Qg
SW5saW5lUmVjdCYgc2Nyb2xsYWJsZU92ZXJmbG93LCBjb25zdCBJbmxpbmVSZWN0JiBpbmtPdmVy
ZmxvdywgSW5saW5lTGF5b3V0VW5pdCBiYXNlbGluZSkKKyAgICA6IG1fcmVjdChyZWN0KQorICAg
ICwgbV9zY3JvbGxhYmxlT3ZlcmZsb3coc2Nyb2xsYWJsZU92ZXJmbG93KQorICAgICwgbV9pbmtP
dmVyZmxvdyhpbmtPdmVyZmxvdykKKyAgICAsIG1fYmFzZWxpbmUoYmFzZWxpbmUpCit7Cit9CisK
K2lubGluZSB2b2lkIExpbmU6Om1vdmVWZXJ0aWNhbGx5KElubGluZUxheW91dFVuaXQgb2Zmc2V0
KQoreworICAgIG1fcmVjdC5tb3ZlVmVydGljYWxseShvZmZzZXQpOworICAgIG1faW5rT3ZlcmZs
b3cubW92ZVZlcnRpY2FsbHkob2Zmc2V0KTsKK30KKworfQorfQorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5TGluZUJveC5oIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlMaW5lQm94LmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhN2YzOTU4ZGVhOTFjMjYyMWZkYjhjZWZjNWNlYTMx
NGI2YzY5YmQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlMaW5lQm94LmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw4MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNp
ZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKLQotI2luY2x1ZGUgIkRpc3BsYXlJ
bmxpbmVSZWN0LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLW5hbWVzcGFjZSBEaXNwbGF5IHsK
LQotY2xhc3MgTGluZUJveCB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6
Ci0gICAgTGluZUJveChjb25zdCBJbmxpbmVSZWN0JiwgY29uc3QgSW5saW5lUmVjdCYgc2Nyb2xs
YWJsZU92ZXJmbG93LCBjb25zdCBJbmxpbmVSZWN0JiBpbmtPdmVyZmxvdywgSW5saW5lTGF5b3V0
VW5pdCBiYXNlbGluZSk7Ci0KLSAgICBjb25zdCBJbmxpbmVSZWN0JiByZWN0KCkgY29uc3QgeyBy
ZXR1cm4gbV9yZWN0OyB9Ci0gICAgY29uc3QgSW5saW5lUmVjdCYgc2Nyb2xsYWJsZU92ZXJmbG93
KCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxhYmxlT3ZlcmZsb3c7IH0KLSAgICBjb25zdCBJbmxp
bmVSZWN0JiBpbmtPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIG1faW5rT3ZlcmZsb3c7IH0KLQot
ICAgIElubGluZUxheW91dFVuaXQgbGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdC5sZWZ0KCk7
IH0KLSAgICBJbmxpbmVMYXlvdXRVbml0IHJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9yZWN0LnJp
Z2h0KCk7IH0KLSAgICBJbmxpbmVMYXlvdXRVbml0IHRvcCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVj
dC50b3AoKTsgfQotICAgIElubGluZUxheW91dFVuaXQgYm90dG9tKCkgY29uc3QgeyByZXR1cm4g
bV9yZWN0LmJvdHRvbSgpOyB9Ci0KLSAgICBJbmxpbmVMYXlvdXRVbml0IHdpZHRoKCkgY29uc3Qg
eyByZXR1cm4gbV9yZWN0LndpZHRoKCk7IH0KLSAgICBJbmxpbmVMYXlvdXRVbml0IGhlaWdodCgp
IGNvbnN0IHsgcmV0dXJuIG1fcmVjdC5oZWlnaHQoKTsgfQotCi0gICAgdm9pZCBtb3ZlVmVydGlj
YWxseShJbmxpbmVMYXlvdXRVbml0KTsKLQotICAgIElubGluZUxheW91dFVuaXQgYmFzZWxpbmUo
KSBjb25zdCB7IHJldHVybiBtX2Jhc2VsaW5lOyB9Ci0KLXByaXZhdGU6Ci0gICAgSW5saW5lUmVj
dCBtX3JlY3Q7Ci0gICAgSW5saW5lUmVjdCBtX3Njcm9sbGFibGVPdmVyZmxvdzsKLSAgICBJbmxp
bmVSZWN0IG1faW5rT3ZlcmZsb3c7Ci0gICAgSW5saW5lTGF5b3V0VW5pdCBtX2Jhc2VsaW5lIHsg
MCB9OwotfTsKLQotaW5saW5lIExpbmVCb3g6OkxpbmVCb3goY29uc3QgSW5saW5lUmVjdCYgcmVj
dCwgY29uc3QgSW5saW5lUmVjdCYgc2Nyb2xsYWJsZU92ZXJmbG93LCBjb25zdCBJbmxpbmVSZWN0
JiBpbmtPdmVyZmxvdywgSW5saW5lTGF5b3V0VW5pdCBiYXNlbGluZSkKLSAgICA6IG1fcmVjdChy
ZWN0KQotICAgICwgbV9zY3JvbGxhYmxlT3ZlcmZsb3coc2Nyb2xsYWJsZU92ZXJmbG93KQotICAg
ICwgbV9pbmtPdmVyZmxvdyhpbmtPdmVyZmxvdykKLSAgICAsIG1fYmFzZWxpbmUoYmFzZWxpbmUp
Ci17Ci19Ci0KLWlubGluZSB2b2lkIExpbmVCb3g6Om1vdmVWZXJ0aWNhbGx5KElubGluZUxheW91
dFVuaXQgb2Zmc2V0KQotewotICAgIG1fcmVjdC5tb3ZlVmVydGljYWxseShvZmZzZXQpOwotICAg
IG1faW5rT3ZlcmZsb3cubW92ZVZlcnRpY2FsbHkob2Zmc2V0KTsKLX0KLQotfQotfQotCi0jZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5
UGFpbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZGlzcGxheXRyZWUvRGlzcGxheVBh
aW50ZXIuY3BwCmluZGV4IDIwODM1MGIwODUxNzQzM2M0NGY2ZWJiOTljYzczNzBhZGFiMWMyOTMu
LjBkNTFkM2E3OGY3YjRmOTQ2YTJjMzkxM2I2MzFmMzVkYzg1NjRhYTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9kaXNwbGF5dHJlZS9EaXNwbGF5UGFpbnRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Rpc3BsYXl0cmVlL0Rpc3BsYXlQYWludGVyLmNwcApAQCAt
MTI4LDEwICsxMjgsMTAgQEAgc3RhdGljIHZvaWQgcGFpbnRJbmxpbmVDb250ZW50KEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgTGF5b3V0UG9pbnQgYWJzb2x1dGVPZmYKIAogICAgICAgICAgICAg
YXV0byBhYnNvbHV0ZUxlZnQgPSBhYnNvbHV0ZU9mZnNldC54KCkgKyBydW4ubGVmdCgpOwogICAg
ICAgICAgICAgLy8gRklYTUU6IEFkZCBub24tYmFzZWxpbmUgYWxpZ24gcGFpbnRpbmcKLSAgICAg
ICAgICAgIGF1dG8mIGxpbmVCb3ggPSBkaXNwbGF5SW5saW5lQ29udGVudC0+bGluZUJveEZvclJ1
bihydW4pOworICAgICAgICAgICAgYXV0byYgbGluZSA9IGRpc3BsYXlJbmxpbmVDb250ZW50LT5s
aW5lRm9yUnVuKHJ1bik7CiAgICAgICAgICAgICBhdXRvIGJhc2VsaW5lID0gYWJzb2x1dGVPZmZz
ZXQueSgpICsgcnVuLnRvcCgpICsgc3R5bGUuZm9udE1ldHJpY3MoKS5hc2NlbnQoKTsKICAgICAg
ICAgICAgIGF1dG8gZXhwYW5zaW9uID0gcnVuLmV4cGFuc2lvbigpOwotICAgICAgICAgICAgYXV0
byB0ZXh0UnVuID0gVGV4dFJ1biB7IHRleHRDb250ZW50LT5jb250ZW50KCksIHJ1bi5sZWZ0KCkg
LSBsaW5lQm94LmxlZnQoKSwgZXhwYW5zaW9uLmhvcml6b250YWxFeHBhbnNpb24sIGV4cGFuc2lv
bi5iZWhhdmlvciB9OworICAgICAgICAgICAgYXV0byB0ZXh0UnVuID0gVGV4dFJ1biB7IHRleHRD
b250ZW50LT5jb250ZW50KCksIHJ1bi5sZWZ0KCkgLSBsaW5lLmxlZnQoKSwgZXhwYW5zaW9uLmhv
cml6b250YWxFeHBhbnNpb24sIGV4cGFuc2lvbi5iZWhhdmlvciB9OwogICAgICAgICAgICAgdGV4
dFJ1bi5zZXRUYWJTaXplKCFzdHlsZS5jb2xsYXBzZVdoaXRlU3BhY2UoKSwgc3R5bGUudGFiU2l6
ZSgpKTsKICAgICAgICAgICAgIGNvbnRleHQuZHJhd1RleHQoc3R5bGUuZm9udENhc2NhZGUoKSwg
dGV4dFJ1biwgeyBhYnNvbHV0ZUxlZnQsIGJhc2VsaW5lIH0pOwogICAgICAgICB9IGVsc2UgaWYg
KGF1dG8qIGNhY2hlZEltYWdlID0gcnVuLmltYWdlKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRp
bmdDb250ZXh0LmNwcAppbmRleCA1Mjg0Nzc1ZjRiMGJkMjkwYTU3NTc3MThmN2MwMWVlOTg3NTEy
MmViLi5lNjlhNDQ0YjQ5MzIyYzQ0NmY3N2ZiOTY3YjY3ZWQyY2FkZGNlM2Q0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5n
Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBJbmxp
bmVGb3JtYXR0aW5nQ29udGV4dDo6bGluZUxheW91dChJbmxpbmVJdGVtcyYgaW5saW5lSXRlbXMs
IExpbmVCdWlsZGVyOjoKICAgICB9OwogICAgIE9wdGlvbmFsPFByZXZpb3VzTGluZT4gcHJldmlv
dXNMaW5lOwogICAgIGF1dG8gZmxvYXRpbmdDb250ZXh0ID0gRmxvYXRpbmdDb250ZXh0IHsgcm9v
dCgpLCAqdGhpcywgZm9ybWF0dGluZ1N0YXRlKCkuZmxvYXRpbmdTdGF0ZSgpIH07Ci0gICAgYXV0
byBpc0ZpcnN0TGluZSA9ICFmb3JtYXR0aW5nU3RhdGUoKS5kaXNwbGF5SW5saW5lQ29udGVudCgp
IHx8IGZvcm1hdHRpbmdTdGF0ZSgpLmRpc3BsYXlJbmxpbmVDb250ZW50KCktPmxpbmVCb3hlcy5p
c0VtcHR5KCk7CisgICAgYXV0byBpc0ZpcnN0TGluZSA9ICFmb3JtYXR0aW5nU3RhdGUoKS5kaXNw
bGF5SW5saW5lQ29udGVudCgpIHx8IGZvcm1hdHRpbmdTdGF0ZSgpLmRpc3BsYXlJbmxpbmVDb250
ZW50KCktPmxpbmVzLmlzRW1wdHkoKTsKIAogICAgIGF1dG8gbGluZUJ1aWxkZXIgPSBMaW5lQnVp
bGRlciB7ICp0aGlzLCBmbG9hdGluZ0NvbnRleHQsIHJvb3QoKSwgaW5saW5lSXRlbXMgfTsKICAg
ICB3aGlsZSAoIW5lZWRzTGF5b3V0UmFuZ2UuaXNFbXB0eSgpKSB7CkBAIC00NjEsNyArNDYxLDcg
QEAgRGlzcGxheTo6SW5saW5lUmVjdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y3JlYXRlRGlz
cGxheUJveGVzRm9yTGluZUNvbnRlbnQoY28KICAgICB9IGVsc2UKICAgICAgICAgaW5pdGlhbENv
bnRhaW5nQmxvY2tTaXplID0gZ2VvbWV0cnlGb3JCb3gocm9vdCgpLmluaXRpYWxDb250YWluaW5n
QmxvY2soKSwgRXNjYXBlUmVhc29uOjpTdHJva2VPdmVyZmxvd05lZWRzVmlld3BvcnRHZW9tZXRy
eSkuY29udGVudEJveCgpLnNpemUoKTsKICAgICBhdXRvJiBpbmxpbmVDb250ZW50ID0gZm9ybWF0
dGluZ1N0YXRlLmVuc3VyZURpc3BsYXlJbmxpbmVDb250ZW50KCk7Ci0gICAgYXV0byBsaW5lSW5k
ZXggPSBpbmxpbmVDb250ZW50LmxpbmVCb3hlcy5zaXplKCk7CisgICAgYXV0byBsaW5lSW5kZXgg
PSBpbmxpbmVDb250ZW50LmxpbmVzLnNpemUoKTsKICAgICBhdXRvIGxpbmVJbmtPdmVyZmxvdyA9
IHNjcm9sbGFibGVPdmVyZmxvdzsKICAgICAvLyBDb21wdXRlIGZpbmFsIGJveCBnZW9tZXRyeS4K
ICAgICBmb3IgKGF1dG8mIGxpbmVSdW4gOiBsaW5lQ29udGVudC5ydW5zKSB7CkBAIC01MjAsOCAr
NTIwLDcgQEAgRGlzcGxheTo6SW5saW5lUmVjdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y3Jl
YXRlRGlzcGxheUJveGVzRm9yTGluZUNvbnRlbnQoY28KICAgICAgICAgICAgIC8vIFBhaW50aW5n
IGNvZGUgKHNwZWNpZmljYWxseSBUZXh0UnVuJ3MgeFBvcykgbmVlZHMgdGhlIGFsaWduZWQgb2Zm
c2V0IHRvIGJlIGFibGUgdG8gY29tcHV0ZSB0YWIgcG9zaXRpb25zLgogICAgICAgICAgICAgbGlu
ZUxvZ2ljYWxSZWN0Lm1vdmVIb3Jpem9udGFsbHkoKmhvcml6b250YWxBbGlnbm1lbnRPZmZzZXQp
OwogICAgICAgICB9Ci0gICAgICAgIC8vIEZJWE1FOiBEaXNwbGF5OjpMaW5lQm94IHNob3VsZCBy
ZWFsbHkgYmUgbmFtZWQgRGlzcGxheTo6TGluZQotICAgICAgICBpbmxpbmVDb250ZW50LmxpbmVC
b3hlcy5hcHBlbmQoeyBsaW5lTG9naWNhbFJlY3QsIHNjcm9sbGFibGVPdmVyZmxvdywgbGluZUlu
a092ZXJmbG93LCBsaW5lQm94VmVydGljYWxPZmZzZXQgKyBsaW5lQm94LmFsaWdubWVudEJhc2Vs
aW5lKCkgfSk7CisgICAgICAgIGlubGluZUNvbnRlbnQubGluZXMuYXBwZW5kKHsgbGluZUxvZ2lj
YWxSZWN0LCBzY3JvbGxhYmxlT3ZlcmZsb3csIGxpbmVJbmtPdmVyZmxvdywgbGluZUJveFZlcnRp
Y2FsT2Zmc2V0ICsgbGluZUJveC5hbGlnbm1lbnRCYXNlbGluZSgpIH0pOwogICAgIH07CiAgICAg
Y29uc3RydWN0RGlzcGxheUxpbmUoKTsKICAgICByZXR1cm4gbGluZUxvZ2ljYWxSZWN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9y
bWF0dGluZ0NvbnRleHRRdWlya3MuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZv
cm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHRRdWlya3MuY3BwCmluZGV4IDlmY2NhZWJi
OWZhZjU2NjM4Yzg4ZWM5YTFmMGNkYWY1OWY3MmI2MDcuLmQyYWNlNDU0MjAwZDhmNjZiYWVhZDEw
YmJhN2VmZjZjNmVlZGU4NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxp
bmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4
dFF1aXJrcy5jcHAKQEAgLTU5LDggKzU5LDggQEAgYm9vbCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4
dDo6UXVpcmtzOjpsaW5lRGVzY2VudE5lZWRzQ29sbGFwc2luZyhjb25zdCBMaW5lOjpSdW4KICAg
ICAgICAgaWYgKHJ1bi5pc0JveCgpKSB7CiAgICAgICAgICAgICBpZiAobGF5b3V0Qm94LmlzSW5s
aW5lQmxvY2tCb3goKSAmJiBsYXlvdXRCb3guZXN0YWJsaXNoZXNJbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dCgpKSB7CiAgICAgICAgICAgICAgICAgYXV0byYgZm9ybWF0dGluZ1N0YXRlID0gbGF5b3V0
U3RhdGUuZXN0YWJsaXNoZWRJbmxpbmVGb3JtYXR0aW5nU3RhdGUoZG93bmNhc3Q8Q29udGFpbmVy
Qm94PihsYXlvdXRCb3gpKTsKLSAgICAgICAgICAgICAgICBhdXRvIGxhc3RMaW5lQm94ID0gZm9y
bWF0dGluZ1N0YXRlLmRpc3BsYXlJbmxpbmVDb250ZW50KCktPmxpbmVCb3hlcy5sYXN0KCk7Ci0g
ICAgICAgICAgICAgICAgaWYgKGxhc3RMaW5lQm94LmhlaWdodCgpID4gbGFzdExpbmVCb3guYmFz
ZWxpbmUoKSkKKyAgICAgICAgICAgICAgICBhdXRvIGxhc3RMaW5lID0gZm9ybWF0dGluZ1N0YXRl
LmRpc3BsYXlJbmxpbmVDb250ZW50KCktPmxpbmVzLmxhc3QoKTsKKyAgICAgICAgICAgICAgICBp
ZiAobGFzdExpbmUuaGVpZ2h0KCkgPiBsYXN0TGluZS5iYXNlbGluZSgpKQogICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjb250aW51
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lu
bGluZUZvcm1hdHRpbmdTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1h
dHRpbmcvSW5saW5lRm9ybWF0dGluZ1N0YXRlLmgKaW5kZXggNjg3OWQ0MTIzYzA1N2ZhNjZkMDlh
YWEyNmI2ZmEwZmM2ZWY5ZTUwZC4uMmQ5N2QwMGY0OTZmOTBjMDcwM2I2NGY2MmFjN2UzOWRmMDc5
ZDE5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
SW5saW5lRm9ybWF0dGluZ1N0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGlu
ZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ1N0YXRlLmgKQEAgLTczLDcgKzczLDcgQEAgaW5s
aW5lIHZvaWQgSW5saW5lRm9ybWF0dGluZ1N0YXRlOjpzaHJpbmtEaXNwbGF5SW5saW5lQ29udGVu
dCgpCiAgICAgaWYgKCFtX2Rpc3BsYXlJbmxpbmVDb250ZW50KQogICAgICAgICByZXR1cm47CiAg
ICAgbV9kaXNwbGF5SW5saW5lQ29udGVudC0+cnVucy5zaHJpbmtUb0ZpdCgpOwotICAgIG1fZGlz
cGxheUlubGluZUNvbnRlbnQtPmxpbmVCb3hlcy5zaHJpbmtUb0ZpdCgpOworICAgIG1fZGlzcGxh
eUlubGluZUNvbnRlbnQtPmxpbmVzLnNocmlua1RvRml0KCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCb3guY3Bw
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJveC5j
cHAKaW5kZXggMWYxYTIxOWI1MzkyZWIxZTc4OWY4YjU4ZjU0YzMyMzhhYjhkNjg1ZS4uMDVlNDQx
MjA5NzA0YWQ3NmFjZDM4MjQxMmY1OTdlNjg3ODZlZWE3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJveC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJveC5jcHAKQEAg
LTE2OCw4ICsxNjgsOCBAQCB2b2lkIExpbmVCb3g6OmNvbnN0cnVjdElubGluZUJveGVzKGNvbnN0
IExpbmU6OlJ1bkxpc3QmIHJ1bnMpCiAgICAgICAgICAgICBpZiAobGF5b3V0Qm94LmlzSW5saW5l
QmxvY2tCb3goKSAmJiBsYXlvdXRCb3guZXN0YWJsaXNoZXNJbmxpbmVGb3JtYXR0aW5nQ29udGV4
dCgpKSB7CiAgICAgICAgICAgICAgICAgYXV0byYgZm9ybWF0dGluZ1N0YXRlID0gbGF5b3V0U3Rh
dGUoKS5lc3RhYmxpc2hlZElubGluZUZvcm1hdHRpbmdTdGF0ZShkb3duY2FzdDxDb250YWluZXJC
b3g+KGxheW91dEJveCkpOwogICAgICAgICAgICAgICAgIC8vIFNwZWMgbWFrZXMgdXMgZ2VuZXJh
dGUgYXQgbGVhc3Qgb25lIGxpbmUgLWV2ZW4gaWYgaXQgaXMgZW1wdHkuCi0gICAgICAgICAgICAg
ICAgYXV0byYgbGFzdExpbmVCb3ggPSBmb3JtYXR0aW5nU3RhdGUuZGlzcGxheUlubGluZUNvbnRl
bnQoKS0+bGluZUJveGVzLmxhc3QoKTsKLSAgICAgICAgICAgICAgICBhdXRvIGlubGluZUJsb2Nr
QmFzZWxpbmUgPSBsYXN0TGluZUJveC50b3AoKSArIGxhc3RMaW5lQm94LmJhc2VsaW5lKCk7Cisg
ICAgICAgICAgICAgICAgYXV0byYgbGFzdExpbmUgPSBmb3JtYXR0aW5nU3RhdGUuZGlzcGxheUlu
bGluZUNvbnRlbnQoKS0+bGluZXMubGFzdCgpOworICAgICAgICAgICAgICAgIGF1dG8gaW5saW5l
QmxvY2tCYXNlbGluZSA9IGxhc3RMaW5lLnRvcCgpICsgbGFzdExpbmUuYmFzZWxpbmUoKTsKICAg
ICAgICAgICAgICAgICAvLyBUaGUgaW5saW5lLWJsb2NrJ3MgYmFzZWxpbmUgb2Zmc2V0IGlzIHJl
bGF0aXZlIHRvIGl0cyBjb250ZW50IGJveC4gTGV0J3MgY29udmVydCBpdCByZWxhdGl2ZSB0byB0
aGUgbWFyZ2luIGJveC4KICAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgX19fX19fX19fX19f
X19fIDwtIG1hcmdpbiBib3gKICAgICAgICAgICAgICAgICAvLyAgICAgICAgICB8CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25M
aW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJ
bnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwCmluZGV4IDFkMTVkNWQ2MWRlZWM2YTNhYjE3ZjgxMjRj
YzI2YzgwNTk5ODAwZWMuLmRmNTAyNjc4MDU5MTRmMmMzMjc4MWViYmRmOWM0NjNlZmU0MDNlOTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRl
Z3JhdGlvbkxpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3Jh
dGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwCkBAIC0xNTYsOCArMTU2LDggQEAg
dm9pZCBMaW5lTGF5b3V0OjpwcmVwYXJlRmxvYXRpbmdTdGF0ZSgpCiAKIExheW91dFVuaXQgTGlu
ZUxheW91dDo6Y29udGVudExvZ2ljYWxIZWlnaHQoKSBjb25zdAogewotICAgIGF1dG8mIGxpbmVC
b3hlcyA9IGRpc3BsYXlJbmxpbmVDb250ZW50KCktPmxpbmVCb3hlczsKLSAgICByZXR1cm4gTGF5
b3V0VW5pdCB7IGxpbmVCb3hlcy5sYXN0KCkuYm90dG9tKCkgLSBsaW5lQm94ZXMuZmlyc3QoKS50
b3AoKSB9OworICAgIGF1dG8mIGxpbmVzID0gZGlzcGxheUlubGluZUNvbnRlbnQoKS0+bGluZXM7
CisgICAgcmV0dXJuIExheW91dFVuaXQgeyBsaW5lcy5sYXN0KCkuYm90dG9tKCkgLSBsaW5lcy5m
aXJzdCgpLnRvcCgpIH07CiB9CiAKIHNpemVfdCBMaW5lTGF5b3V0OjpsaW5lQ291bnQoKSBjb25z
dApAQCAtMTY3LDcgKzE2Nyw3IEBAIHNpemVfdCBMaW5lTGF5b3V0OjpsaW5lQ291bnQoKSBjb25z
dAogICAgICAgICByZXR1cm4gMDsKICAgICBpZiAoaW5saW5lQ29udGVudC0+cnVucy5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBpbmxpbmVDb250ZW50LT5saW5lQm94
ZXMuc2l6ZSgpOworICAgIHJldHVybiBpbmxpbmVDb250ZW50LT5saW5lcy5zaXplKCk7CiB9CiAK
IExheW91dFVuaXQgTGluZUxheW91dDo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdApAQCAtMTc4
LDggKzE3OCw4IEBAIExheW91dFVuaXQgTGluZUxheW91dDo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBj
b25zdAogICAgICAgICByZXR1cm4gMF9sdTsKICAgICB9CiAKLSAgICBhdXRvJiBmaXJzdExpbmVC
b3ggPSBpbmxpbmVDb250ZW50LT5saW5lQm94ZXMuZmlyc3QoKTsKLSAgICByZXR1cm4gTGF5b3V0
Ojp0b0xheW91dFVuaXQoZmlyc3RMaW5lQm94LnRvcCgpICsgZmlyc3RMaW5lQm94LmJhc2VsaW5l
KCkpOworICAgIGF1dG8mIGZpcnN0TGluZSA9IGlubGluZUNvbnRlbnQtPmxpbmVzLmZpcnN0KCk7
CisgICAgcmV0dXJuIExheW91dDo6dG9MYXlvdXRVbml0KGZpcnN0TGluZS50b3AoKSArIGZpcnN0
TGluZS5iYXNlbGluZSgpKTsKIH0KIAogTGF5b3V0VW5pdCBMaW5lTGF5b3V0OjpsYXN0TGluZUJh
c2VsaW5lKCkgY29uc3QKQEAgLTE5MCw4ICsxOTAsOCBAQCBMYXlvdXRVbml0IExpbmVMYXlvdXQ6
Omxhc3RMaW5lQmFzZWxpbmUoKSBjb25zdAogICAgICAgICByZXR1cm4gMF9sdTsKICAgICB9CiAK
LSAgICBhdXRvJiBsYXN0TGluZUJveCA9IGlubGluZUNvbnRlbnQtPmxpbmVCb3hlcy5sYXN0KCk7
Ci0gICAgcmV0dXJuIExheW91dDo6dG9MYXlvdXRVbml0KGxhc3RMaW5lQm94LnRvcCgpICsgbGFz
dExpbmVCb3guYmFzZWxpbmUoKSk7CisgICAgYXV0byYgbGFzdExpbmUgPSBpbmxpbmVDb250ZW50
LT5saW5lcy5sYXN0KCk7CisgICAgcmV0dXJuIExheW91dDo6dG9MYXlvdXRVbml0KGxhc3RMaW5l
LnRvcCgpICsgbGFzdExpbmUuYmFzZWxpbmUoKSk7CiB9CiAKIHZvaWQgTGluZUxheW91dDo6Y29s
bGVjdE92ZXJmbG93KFJlbmRlckJsb2NrRmxvdyYgZmxvdykKQEAgLTE5OSw5ICsxOTksOSBAQCB2
b2lkIExpbmVMYXlvdXQ6OmNvbGxlY3RPdmVyZmxvdyhSZW5kZXJCbG9ja0Zsb3cmIGZsb3cpCiAg
ICAgQVNTRVJUKCZmbG93ID09ICZtX2Zsb3cpOwogICAgIEFTU0VSVCghZmxvdy5oYXNPdmVyZmxv
d0NsaXAoKSk7CiAKLSAgICBmb3IgKGF1dG8mIGxpbmVCb3ggOiBkaXNwbGF5SW5saW5lQ29udGVu
dCgpLT5saW5lQm94ZXMpIHsKLSAgICAgICAgZmxvdy5hZGRMYXlvdXRPdmVyZmxvdyhMYXlvdXQ6
OnRvTGF5b3V0UmVjdChsaW5lQm94LnNjcm9sbGFibGVPdmVyZmxvdygpKSk7Ci0gICAgICAgIGZs
b3cuYWRkVmlzdWFsT3ZlcmZsb3coTGF5b3V0Ojp0b0xheW91dFJlY3QobGluZUJveC5pbmtPdmVy
ZmxvdygpKSk7CisgICAgZm9yIChhdXRvJiBsaW5lIDogZGlzcGxheUlubGluZUNvbnRlbnQoKS0+
bGluZXMpIHsKKyAgICAgICAgZmxvdy5hZGRMYXlvdXRPdmVyZmxvdyhMYXlvdXQ6OnRvTGF5b3V0
UmVjdChsaW5lLnNjcm9sbGFibGVPdmVyZmxvdygpKSk7CisgICAgICAgIGZsb3cuYWRkVmlzdWFs
T3ZlcmZsb3coTGF5b3V0Ojp0b0xheW91dFJlY3QobGluZS5pbmtPdmVyZmxvdygpKSk7CiAgICAg
fQogfQogCkBAIC0yOTksMTQgKzI5OSwxNCBAQCB2b2lkIExpbmVMYXlvdXQ6OnBhaW50KFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgfQogCi0gICAgICAgIGF1dG8mIGxpbmVCb3ggPSBpbmxp
bmVDb250ZW50LmxpbmVCb3hGb3JSdW4ocnVuKTsKLSAgICAgICAgYXV0byBiYXNlbGluZSA9IHBh
aW50T2Zmc2V0LnkoKSArIGxpbmVCb3gudG9wKCkgKyBsaW5lQm94LmJhc2VsaW5lKCk7CisgICAg
ICAgIGF1dG8mIGxpbmUgPSBpbmxpbmVDb250ZW50LmxpbmVGb3JSdW4ocnVuKTsKKyAgICAgICAg
YXV0byBiYXNlbGluZSA9IHBhaW50T2Zmc2V0LnkoKSArIGxpbmUudG9wKCkgKyBsaW5lLmJhc2Vs
aW5lKCk7CiAgICAgICAgIGF1dG8gZXhwYW5zaW9uID0gcnVuLmV4cGFuc2lvbigpOwogCiAgICAg
ICAgIFN0cmluZyB0ZXh0V2l0aEh5cGhlbjsKICAgICAgICAgaWYgKHRleHRDb250ZW50Lm5lZWRz
SHlwaGVuKCkpCiAgICAgICAgICAgICB0ZXh0V2l0aEh5cGhlbiA9IG1ha2VTdHJpbmcodGV4dENv
bnRlbnQuY29udGVudCgpLCBzdHlsZS5oeXBoZW5TdHJpbmcoKSk7Ci0gICAgICAgIFRleHRSdW4g
dGV4dFJ1biB7ICF0ZXh0V2l0aEh5cGhlbi5pc0VtcHR5KCkgPyB0ZXh0V2l0aEh5cGhlbiA6IHRl
eHRDb250ZW50LmNvbnRlbnQoKSwgcnVuLmxlZnQoKSAtIGxpbmVCb3gubGVmdCgpLCBleHBhbnNp
b24uaG9yaXpvbnRhbEV4cGFuc2lvbiwgZXhwYW5zaW9uLmJlaGF2aW9yIH07CisgICAgICAgIFRl
eHRSdW4gdGV4dFJ1biB7ICF0ZXh0V2l0aEh5cGhlbi5pc0VtcHR5KCkgPyB0ZXh0V2l0aEh5cGhl
biA6IHRleHRDb250ZW50LmNvbnRlbnQoKSwgcnVuLmxlZnQoKSAtIGxpbmUubGVmdCgpLCBleHBh
bnNpb24uaG9yaXpvbnRhbEV4cGFuc2lvbiwgZXhwYW5zaW9uLmJlaGF2aW9yIH07CiAgICAgICAg
IHRleHRSdW4uc2V0VGFiU2l6ZSghc3R5bGUuY29sbGFwc2VXaGl0ZVNwYWNlKCksIHN0eWxlLnRh
YlNpemUoKSk7CiAgICAgICAgIEZsb2F0UG9pbnQgdGV4dE9yaWdpbiB7IHJlY3QueCgpICsgcGFp
bnRPZmZzZXQueCgpLCByb3VuZFRvRGV2aWNlUGl4ZWwoYmFzZWxpbmUsIGRldmljZVNjYWxlRmFj
dG9yKSB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9M
YXlvdXRUcmVlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9M
YXlvdXRUcmVlQnVpbGRlci5jcHAKaW5kZXggOTVhMzBiZTNiNjMxYTc5Y2UzOTZhNGQ1YTk2NmEy
ODk3MDc1ODRkOC4uMjZjMTJmOTIxMDY2MmY2MWI0ZmQ2MzM1ODdiZGYzY2Y5ZGQxNGViNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVC
dWlsZGVyLmNwcApAQCAtMzkwLDcgKzM5MCw3IEBAIHN0YXRpYyB2b2lkIG91dHB1dElubGluZVJ1
bnMoVGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGF1dG8mIGRpc3BsYXlSdW5zID0gZGlzcGxheUlubGluZUNv
bnRlbnQtPnJ1bnM7Ci0gICAgYXV0byYgbGluZUJveGVzID0gZGlzcGxheUlubGluZUNvbnRlbnQt
PmxpbmVCb3hlczsKKyAgICBhdXRvJiBsaW5lcyA9IGRpc3BsYXlJbmxpbmVDb250ZW50LT5saW5l
czsKIAogICAgIHVuc2lnbmVkIHByaW50ZWRDaGFyYWN0ZXJzID0gMDsKICAgICB3aGlsZSAoKytw
cmludGVkQ2hhcmFjdGVycyA8PSBkZXB0aCAqIDIpCkBAIC0zOTgsOCArMzk4LDggQEAgc3RhdGlj
IHZvaWQgb3V0cHV0SW5saW5lUnVucyhUZXh0U3RyZWFtJiBzdHJlYW0sIGNvbnN0IExheW91dFN0
YXRlJiBsYXlvdXRTdGF0ZSwKICAgICBzdHJlYW0gPDwgIiAgIjsKIAogICAgIHN0cmVhbSA8PCAi
bGluZXMgYXJlIC0+ICI7Ci0gICAgZm9yIChhdXRvJiBsaW5lQm94IDogbGluZUJveGVzKQotICAg
ICAgICBzdHJlYW0gPDwgIlsiIDw8IGxpbmVCb3gubGVmdCgpIDw8ICIsIiA8PCBsaW5lQm94LnRv
cCgpIDw8ICIgIiA8PCBsaW5lQm94LndpZHRoKCkgPDwgIngiIDw8IGxpbmVCb3guaGVpZ2h0KCkg
PDwgIl0gIjsKKyAgICBmb3IgKGF1dG8mIGxpbmUgOiBsaW5lcykKKyAgICAgICAgc3RyZWFtIDw8
ICJbIiA8PCBsaW5lLmxlZnQoKSA8PCAiLCIgPDwgbGluZS50b3AoKSA8PCAiICIgPDwgbGluZS53
aWR0aCgpIDw8ICJ4IiA8PCBsaW5lLmhlaWdodCgpIDw8ICJdICI7CiAgICAgc3RyZWFtLm5leHRM
aW5lKCk7CiAKICAgICBmb3IgKGF1dG8mIGRpc3BsYXlSdW4gOiBkaXNwbGF5UnVucykgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUZvcm1h
dHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcv
VGFibGVGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggZTMwYWJhNjIwMmViM2E2NGI2NmU0YmQz
ODY1MTRjNGQ3OGVlYjI1OS4uNmIwMjJmNGFjYzI4MjQ4ZmRiMDcyN2UyZDJjOGIxMWZlNTI0MDEz
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJs
ZUZvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvdGFibGVm
b3JtYXR0aW5nL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC0xMzIsOCArMTMyLDggQEAg
dm9pZCBUYWJsZUZvcm1hdHRpbmdDb250ZXh0OjpzZXRVc2VkR2VvbWV0cnlGb3JDZWxscyhMYXlv
dXRVbml0IGF2YWlsYWJsZUhvcml6b24KICAgICAgICAgICAgICAgICAgICAgYXV0byYgZGlzcGxh
eUNvbnRlbnQgPSBsYXlvdXRTdGF0ZSgpLmVzdGFibGlzaGVkSW5saW5lRm9ybWF0dGluZ1N0YXRl
KGNlbGxCb3gpLmVuc3VyZURpc3BsYXlJbmxpbmVDb250ZW50KCk7CiAgICAgICAgICAgICAgICAg
ICAgIGZvciAoYXV0byYgcnVuIDogZGlzcGxheUNvbnRlbnQucnVucykKICAgICAgICAgICAgICAg
ICAgICAgICAgIHJ1bi5tb3ZlVmVydGljYWxseShpbnRyaW5zaWNQYWRkaW5nVG9wKTsKLSAgICAg
ICAgICAgICAgICAgICAgZm9yIChhdXRvJiBsaW5lQm94IDogZGlzcGxheUNvbnRlbnQubGluZUJv
eGVzKQotICAgICAgICAgICAgICAgICAgICAgICAgbGluZUJveC5tb3ZlVmVydGljYWxseShpbnRy
aW5zaWNQYWRkaW5nVG9wKTsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChhdXRvJiBsaW5lIDog
ZGlzcGxheUNvbnRlbnQubGluZXMpCisgICAgICAgICAgICAgICAgICAgICAgICBsaW5lLm1vdmVW
ZXJ0aWNhbGx5KGludHJpbnNpY1BhZGRpbmdUb3ApOwogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIH07CiAgICAgICAgICAgICBhZGp1c3RDZWxsQ29udGVudFdpdGhJbnN0cmluc2ljUGFk
ZGluZ0JlZm9yZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L3RhYmxlZm9y
bWF0dGluZy9UYWJsZUZvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUZvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnku
Y3BwCmluZGV4IDBkMmE2NmMxZWQ2YmJjNzZlNThkZWJhNjk5ZmQ5OTEwOWFmOTJmZjQuLjk3OGM3
MDRkYmVmMjgwZWY3YjA4YjNkNzUxNzFjZDNiNDcyMjk3ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVGb3JtYXR0aW5nQ29udGV4dEdlb21l
dHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxl
Rm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKQEAgLTE0NiwxMiArMTQ2LDEyIEBAIElubGlu
ZUxheW91dFVuaXQgVGFibGVGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OnVzZWRCYXNlbGlu
ZUZvckNlbGwoY29uc3QgQ29uCiAgICAgLy8gb3IgdGhlIGZpcnN0IGluLWZsb3cgdGFibGUtcm93
IGluIHRoZSBjZWxsLCB3aGljaGV2ZXIgY29tZXMgZmlyc3QuCiAgICAgLy8gSWYgdGhlcmUgaXMg
bm8gc3VjaCBsaW5lIGJveCwgdGhlIGJhc2VsaW5lIGlzIHRoZSBib3R0b20gb2YgY29udGVudCBl
ZGdlIG9mIHRoZSBjZWxsIGJveC4KICAgICBpZiAoY2VsbEJveC5lc3RhYmxpc2hlc0lubGluZUZv
cm1hdHRpbmdDb250ZXh0KCkpCi0gICAgICAgIHJldHVybiBsYXlvdXRTdGF0ZSgpLmVzdGFibGlz
aGVkSW5saW5lRm9ybWF0dGluZ1N0YXRlKGNlbGxCb3gpLmRpc3BsYXlJbmxpbmVDb250ZW50KCkt
PmxpbmVCb3hlc1swXS5iYXNlbGluZSgpOworICAgICAgICByZXR1cm4gbGF5b3V0U3RhdGUoKS5l
c3RhYmxpc2hlZElubGluZUZvcm1hdHRpbmdTdGF0ZShjZWxsQm94KS5kaXNwbGF5SW5saW5lQ29u
dGVudCgpLT5saW5lc1swXS5iYXNlbGluZSgpOwogICAgIGZvciAoYXV0byYgY2VsbERlc2NlbmRh
bnQgOiBkZXNjZW5kYW50c09mVHlwZTxDb250YWluZXJCb3g+KGNlbGxCb3gpKSB7CiAgICAgICAg
IGlmIChjZWxsRGVzY2VuZGFudC5lc3RhYmxpc2hlc0lubGluZUZvcm1hdHRpbmdDb250ZXh0KCkp
IHsKICAgICAgICAgICAgIGF1dG8qIGRpc3BsYXlJbmxpbmVDb250ZW50ID0gbGF5b3V0U3RhdGUo
KS5lc3RhYmxpc2hlZElubGluZUZvcm1hdHRpbmdTdGF0ZShjZWxsRGVzY2VuZGFudCkuZGlzcGxh
eUlubGluZUNvbnRlbnQoKTsKICAgICAgICAgICAgIGlmICghZGlzcGxheUlubGluZUNvbnRlbnQt
PnJ1bnMuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIHJldHVybiBkaXNwbGF5SW5saW5lQ29u
dGVudC0+bGluZUJveGVzWzBdLmJhc2VsaW5lKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGRp
c3BsYXlJbmxpbmVDb250ZW50LT5saW5lc1swXS5iYXNlbGluZSgpOwogICAgICAgICB9CiAgICAg
ICAgIGlmIChjZWxsRGVzY2VuZGFudC5lc3RhYmxpc2hlc1RhYmxlRm9ybWF0dGluZ0NvbnRleHQo
KSkKICAgICAgICAgICAgIHJldHVybiBsYXlvdXRTdGF0ZSgpLmVzdGFibGlzaGVkVGFibGVGb3Jt
YXR0aW5nU3RhdGUoY2VsbERlc2NlbmRhbnQpLnRhYmxlR3JpZCgpLnJvd3MoKS5saXN0KClbMF0u
YmFzZWxpbmUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xp
bmVMYXlvdXRUcmF2ZXJzYWxEaXNwbGF5UnVuUGF0aC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL2xpbmUvTGluZUxheW91dFRyYXZlcnNhbERpc3BsYXlSdW5QYXRoLmgKaW5kZXggOTViMjc0
MjgwZjIzZDZjZWRmNmZjYzY2NTg0YjRiMDNhMjliNDhmNC4uMWFmMTIxNDU0OTU0NDRmZTNmYzFj
ZmU5NjJmMWM2ZWRlOTZhYmNjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L2xpbmUvTGluZUxheW91dFRyYXZlcnNhbERpc3BsYXlSdW5QYXRoLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZUxheW91dFRyYXZlcnNhbERpc3BsYXlSdW5QYXRoLmgK
QEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogCiAgICAgRmxvYXRSZWN0IHJlY3QoKSBjb25zdDsK
IAotICAgIGZsb2F0IGJhc2VsaW5lKCkgY29uc3QgeyByZXR1cm4gbGluZUJveCgpLmJhc2VsaW5l
KCk7IH0KKyAgICBmbG9hdCBiYXNlbGluZSgpIGNvbnN0IHsgcmV0dXJuIGxpbmUoKS5iYXNlbGlu
ZSgpOyB9CiAKICAgICBib29sIGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSBjb25zdCB7IHJldHVy
biB0cnVlOyB9CiAgICAgYm9vbCBpc0hvcml6b250YWwoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9
CkBAIC05OCw3ICs5OCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgY29uc3QgRGlzcGxheTo6
SW5saW5lQ29udGVudDo6UnVucyYgcnVucygpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lQ29udGVu
dC0+cnVuczsgfQogICAgIGNvbnN0IERpc3BsYXk6OlJ1biYgcnVuKCkgY29uc3QgeyByZXR1cm4g
cnVucygpW21fcnVuSW5kZXhdOyB9Ci0gICAgY29uc3QgRGlzcGxheTo6TGluZUJveCYgbGluZUJv
eCgpIGNvbnN0IHsgcmV0dXJuIG1faW5saW5lQ29udGVudC0+bGluZUJveEZvclJ1bihydW4oKSk7
IH0KKyAgICBjb25zdCBEaXNwbGF5OjpMaW5lJiBsaW5lKCkgY29uc3QgeyByZXR1cm4gbV9pbmxp
bmVDb250ZW50LT5saW5lRm9yUnVuKHJ1bigpKTsgfQogCiAgICAgUmVmUHRyPGNvbnN0IERpc3Bs
YXk6OklubGluZUNvbnRlbnQ+IG1faW5saW5lQ29udGVudDsKICAgICBzaXplX3QgbV9lbmRJbmRl
eCB7IDAgfTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>