<?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>229631</bug_id>
          
          <creation_ts>2021-08-27 15:06:18 -0700</creation_ts>
          <short_desc>[LFC][IFC] Move content builder functionality to a dedicated class</short_desc>
          <delta_ts>2021-08-28 06:16:22 -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>bfulgham</cc>
    
    <cc>koivisto</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1788194</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2021-08-27 15:06:18 -0700</bug_when>
    <thetext>introduce InlineDisplayContentBuilder</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788201</commentid>
    <comment_count>1</comment_count>
      <attachid>436680</attachid>
    <who name="alan">zalan</who>
    <bug_when>2021-08-27 15:22:29 -0700</bug_when>
    <thetext>Created attachment 436680
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788263</commentid>
    <comment_count>2</comment_count>
      <attachid>436700</attachid>
    <who name="alan">zalan</who>
    <bug_when>2021-08-27 19:29:01 -0700</bug_when>
    <thetext>Created attachment 436700
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788270</commentid>
    <comment_count>3</comment_count>
      <attachid>436701</attachid>
    <who name="alan">zalan</who>
    <bug_when>2021-08-27 21:18:20 -0700</bug_when>
    <thetext>Created attachment 436701
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788299</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-08-28 06:15:57 -0700</bug_when>
    <thetext>Committed r281734 (241076@main): &lt;https://commits.webkit.org/241076@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 436701.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788300</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-08-28 06:16:22 -0700</bug_when>
    <thetext>&lt;rdar://problem/82474309&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436680</attachid>
            <date>2021-08-27 15:22:29 -0700</date>
            <delta_ts>2021-08-27 19:28:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229631-20210827152228.patch</filename>
            <type>text/plain</type>
            <size>41788</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNjk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmMwODYyMDEzODE2NjQ3
NTIwMjg5ZTcxYTJiMDgyN2UzMmMxMjc3YS4uMDliNjNlNDQ1MTQ3ZjgxYmQyNDg0NjRiMzVlMDdj
YjgwOGVjNGIxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDIxLTA4LTI3ICBBbGFu
IEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbTEZDXVtJRkNdIE1vdmUgY29u
dGVudCBidWlsZGVyIGZ1bmN0aW9uYWxpdHkgdG8gYSBkZWRpY2F0ZWQgY2xhc3MKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTYzMQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIExldCdzIHVzZSBhIGRlZGlj
YXRlZCBjbGFzcyBmb3IgY29uc3RydWN0aW5nIHRoZSBmaW5hbCBsaW5lIHJ1bnMuIFRoaXMgaXMg
YWxzbyBnb2luZyB0byBiZSB1c2VkCisgICAgICAgIGZvciBjb21wdXRpbmcgb3ZlcmZsb3cgYW5k
IG90aGVyICJkaXNwbGF5IiB0eXBlIG9mIHZhbHVlIG9uY2UgaXQncyBtZXJnZWQgd2l0aCBMYXlv
dXRJbnRlZ3JhdGlvbjo6SW5saW5lQ29udGVudEJ1aWxkZXIuCisKKyAgICAgICAgKiBTb3VyY2Vz
LnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogbGF5b3V0L0xheW91dFVuaXRzLmg6CisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9pbmxpbmUvSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6SW5s
aW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5s
aW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyOjpidWlsZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OklubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6Y3JlYXRlUnVuc0FuZFVwZGF0ZUdlb21l
dHJ5Rm9yTGluZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVEaXNw
bGF5Q29udGVudEJ1aWxkZXI6OmNyZWF0ZVJ1bnNBbmRVcGRhdGVHZW9tZXRyeUZvckxpbmVTcGFu
bmluZ0lubGluZUJveGVzKToKKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lu
bGluZS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveEJ1aWxk
ZXIuaC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRGlzcGxheUNvbnRlbnRCdWls
ZGVyOjpyb290IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRGlzcGxh
eUNvbnRlbnRCdWlsZGVyOjpmb3JtYXR0aW5nU3RhdGUgY29uc3QpOgorICAgICAgICAqIGxheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxpbmVM
YXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4
dDo6Y29tcHV0ZUdlb21ldHJ5Rm9yTGluZUNvbnRlbnQpOgorICAgICAgICAqIGxheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0Lmg6CisgICAgICAg
ICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGV2ZWxCb3guaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lTGV2ZWxCb3g6OmlzSW5saW5lQm94IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lTGV2ZWxCb3g6OmlzTGluZVNwYW5u
aW5nSW5saW5lQm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lTGV2
ZWxCb3g6OmNyZWF0ZUlubGluZUJveCk6CisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5l
OjpSdW46OnR5cGUgY29uc3QpOgorICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL0lubGluZUxpbmVCb3hCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6TGluZUJveEJ1aWxkZXI6OmNvbnN0cnVjdEFuZEFsaWduSW5saW5lTGV2ZWxCb3hlcyk6Cisg
ICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveEJ1
aWxkZXIuaDoKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25J
bmxpbmVDb250ZW50QnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3Jh
dGlvbjo6bGluZU92ZXJmbG93V2lkdGgpOgorICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9M
YXlvdXRJbnRlZ3JhdGlvblJ1bi5oOgorCiAyMDIxLTA4LTI3ICBBbGFuIEJ1anRhcyAgPHphbGFu
QGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJRkNdIE1vdmUgTGluZUJveEJ1aWxkZXIgdG8g
aXRzIG93biBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGY0MGQ0OGJlMDYxN2Y5ZjI0ZDMxN2IxZDM1
M2QwYTc0OGY2M2ZlY2UuLjdlNWMxNmI5Yjk4MzBhYmYxMWMyNmQ5NGE2YWMwZTU1MDNhYWZjM2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0CkBAIC0xNDUyLDYgKzE0NTIsNyBAQCBsYXlvdXQvZmxvYXRzL0Zsb2F0
QXZvaWRlci5jcHAKIGxheW91dC9mbG9hdHMvRmxvYXRpbmdDb250ZXh0LmNwcAogbGF5b3V0L2Zs
b2F0cy9GbG9hdGluZ1N0YXRlLmNwcAogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
SW5saW5lQ29udGVudEJyZWFrZXIuY3BwCitsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGlu
ZS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuY3BwCiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKIGxheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdHZW9tZXRyeS5jcHAKIGxheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdRdWlya3MuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTZm
YTAzYzZhZTEyY2I3MWJhNTdkMmNlNmJjNWFjNGE4MzllYmRhZi4uYmRlY2IxZDVhMDViOGVmNDFi
ZTkwOGIxODE0MDEyZjVkNjg5MTk5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzk5LDYgKzM5OSw3IEBACiAJCTExMzEwQ0Y2
MjBCQTRBNTYwMDY1QThEMCAvKiBMYXlvdXRDaGlsZEl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxMTEwMEZDOTIwOTI3Q0JDMDA4MUFBNkMg
LyogTGF5b3V0Q2hpbGRJdGVyYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTExMzQwOURBMjAzRTAzODAwMEM2NjkxNSAvKiBSZW5kZXJUcmVl
QnVpbGRlckNvbnRpbnVhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMTEzNDA5RDgyMDNFMDM4MDAwQzY2OTE1IC8qIFJlbmRlclRyZWVCdWlsZGVy
Q29udGludWF0aW9uLmggKi87IH07CiAJCTExM0QwQjUyMUY5RkREMkIwMEY2MTFCQiAvKiBGcmFt
ZVZpZXdMYXlvdXRDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxMTNEMEI1MDFGOUZERDJCMDBGNjExQkIgLyogRnJhbWVWaWV3TGF5b3V0Q29u
dGV4dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTExNTEzRDAzMjZEOTgxRTgwMDREM0ZBQSAvKiBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDExNTEzRDAy
MjZEOTgxRTcwMDREM0ZBQSAvKiBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxMTVDRkE2QTIwOEFG
N0QwMDAxRTY5OTEgLyogRm9ybWF0dGluZ0NvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDExNUNGQTY4MjA4QUY3RDAwMDFFNjk5MSAvKiBGb3Jt
YXR0aW5nQ29udGV4dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTExNUNGQTZFMjA4QUZBQjcwMDFFNjk5MSAvKiBCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxMTVD
RkE2QzIwOEFGQUI2MDAxRTY5OTEgLyogQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTExNUNGQTc2MjA4QUZF
MzAwMDFFNjk5MSAvKiBGb3JtYXR0aW5nU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDExNUNGQTc0MjA4QUZFMzAwMDFFNjk5MSAvKiBGb3JtYXR0
aW5nU3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtNjQxMyw2ICs2NDE0LDggQEAKIAkJMTEzNDA5RDgyMDNFMDM4MDAwQzY2OTE1IC8qIFJl
bmRlclRyZWVCdWlsZGVyQ29udGludWF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlclRyZWVC
dWlsZGVyQ29udGludWF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTExM0Qw
QjRGMUY5RkREMkIwMEY2MTFCQiAvKiBGcmFtZVZpZXdMYXlvdXRDb250ZXh0LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEZyYW1lVmlld0xheW91dENvbnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxMTNEMEI1MDFGOUZERDJCMDBGNjExQkIgLyogRnJhbWVWaWV3TGF5b3V0
Q29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGcmFtZVZpZXdMYXlvdXRDb250ZXh0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTExNTEzRDAwMjZEOTgxREQwMDREM0ZBQSAvKiBJbmxp
bmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5saW5lRGlz
cGxheUNvbnRlbnRCdWlsZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTE1
MTNEMDIyNkQ5ODFFNzAwNEQzRkFBIC8qIElubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxk
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTE1Q0E4MzAyMzMyOEIxRTAwRkQz
QjA4IC8qIExheW91dFVuaXRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExheW91dFVuaXRzLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTE1Q0ZBNjgyMDhBRjdEMDAwMUU2OTkx
IC8qIEZvcm1hdHRpbmdDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvcm1hdHRpbmdDb250ZXh0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTExNUNGQTY5MjA4QUY3RDAwMDFFNjk5
MSAvKiBGb3JtYXR0aW5nQ29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb3JtYXR0aW5n
Q29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODAzMyw2ICsxODAz
Niw4IEBACiAJCQkJNkZFN0REREQyMEVDNkU4QjAwOEI1QjRFIC8qIHRleHQgKi8sCiAJCQkJNkZF
MTk4MTMyMTc4Mzk3QjAwNDQ2RjA4IC8qIElubGluZUNvbnRlbnRCcmVha2VyLmNwcCAqLywKIAkJ
CQk2RkUxOTgxNTIxNzgzOTdDMDA0NDZGMDggLyogSW5saW5lQ29udGVudEJyZWFrZXIuaCAqLywK
KwkJCQkxMTUxM0QwMDI2RDk4MUREMDA0RDNGQUEgLyogSW5saW5lRGlzcGxheUNvbnRlbnRCdWls
ZGVyLmNwcCAqLywKKwkJCQkxMTUxM0QwMjI2RDk4MUU3MDA0RDNGQUEgLyogSW5saW5lRGlzcGxh
eUNvbnRlbnRCdWlsZGVyLmggKi8sCiAJCQkJNkY3Q0EzQzkyMDhDMkIyRTAwMkYyOUFCIC8qIElu
bGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcCAqLywKIAkJCQk2RjdDQTNDODIwOEMyQjJFMDAyRjI5
QUIgLyogSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaCAqLywKIAkJCQk2RjM1RUZBRjIxODdDQkQ1
MDA0NEUwRjQgLyogSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5LmNwcCAqLywKQEAgLTMyNDM0LDYg
KzMyNDM5LDcgQEAKIAkJCQlDRDA2M0Y4MzFFMjNGQTg5MDA4MTJCRTMgLyogSW5pdERhdGFSZWdp
c3RyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMwNTkyNjQxRTI3QTNBRDAwRDU3Qzk4IC8qIElu
bGluZUNsYXNzaWNTY3JpcHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTZGRTE5ODE3MjE3ODM5N0Mw
MDQ0NkYwOCAvKiBJbmxpbmVDb250ZW50QnJlYWtlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMTE1
MTNEMDMyNkQ5ODFFODAwNEQzRkFBIC8qIElubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNkY3Q0EzQ0EyMDhDMkIyRTAwMkYyOUFCIC8qIElubGluZUZvcm1h
dHRpbmdDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQk0N0M0RDU3RDI2NTA4QkNCMDBDN0FC
MUYgLyogSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQk2RkU2
MzZFODI2NDc5NjI5MDBGMDk1MUUgLyogSW5saW5lRm9ybWF0dGluZ1F1aXJrcy5oIGluIEhlYWRl
cnMgKi8sCkBAIC0zMjQ0Myw2ICszMjQ0OSw3IEBACiAJCQkJNkZBQUU3MTMyNkEyODE0QjAwRTA3
NTAyIC8qIElubGluZUxldmVsQm94LmggaW4gSGVhZGVycyAqLywKIAkJCQk2RjBDRDY5NTIyOUVE
MzI3MDBDNTk5NEUgLyogSW5saW5lTGluZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkZCMjQwMDUy
M0RGRjEyODAwNzk2NDU4IC8qIElubGluZUxpbmVCb3guaCBpbiBIZWFkZXJzICovLAorCQkJCTEx
QzMyMjdEMjZEOTU4Q0UwMDMyOEY0RCAvKiBJbmxpbmVMaW5lQm94QnVpbGRlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNkY2RUU3NDMyNkQ0NEVFMzAwMzc0Q0RBIC8qIElubGluZUxpbmVCb3hWZXJ0
aWNhbEFsaWduZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTZGMjZFQjQ4MjM0MDA0QTUwMDY5MDZF
MiAvKiBJbmxpbmVMaW5lQnVpbGRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkY5MTQyMTEyNTE1
MjEzODAwNEU0RkVBIC8qIElubGluZUxpbmVHZW9tZXRyeS5oIGluIEhlYWRlcnMgKi8sCkBAIC0z
MzMwOSw3ICszMzMxNiw2IEBACiAJCQkJMDc4NDYzNDMxNDVCMTUxQTAwQTU4REYxIC8qIEpTVHJh
Y2tFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE3QjQ5MjExNkE5QjhGRjAwMUM4ODM5IC8q
IEpTVHJhbnNpdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTc1MEQ1RDBBOTBERUUx
MDAwRkYyMTUgLyogSlNUcmVlV2Fsa2VyLmggaW4gSGVhZGVycyAqLywKLQkJCQkxMUMzMjI3RDI2
RDk1OENFMDAzMjhGNEQgLyogSW5saW5lTGluZUJveEJ1aWxkZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE4NjYyOUNGMDlEQTJCNDcwMDk2MzNBNSAvKiBKU1VJRXZlbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTQ2NTMwN0QwMURCNkVFNDgwMEU0MTM3QyAvKiBKU1VJRXZlbnRJbml0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk3QzczRkIxMjE5MUVGNkY0MDA3REUwNjEgLyogSlNVc2VyTWVzc2FnZUhh
bmRsZXIuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L0xheW91dFVuaXRzLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0VW5pdHMuaAppbmRl
eCA0ODVlNGQ1M2MwNTk0MDRkYTdhNGEyNjVlOTllYjdjMTc0OTFjODVmLi44YmE5Y2Q3YWM1YmJm
YzViZTNkMzEwYzRjMjk5NTQzOGRhZDczZmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvTGF5b3V0VW5pdHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0VW5p
dHMuaApAQCAtMzYsNiArMzYsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK25hbWVzcGFj
ZSBMYXlvdXQgeworCiAjZGVmaW5lIFVTRV9GTE9BVF9BU19JTkxJTkVfTEFZT1VUX1VOSVQgMQog
CiAjaWYgVVNFX0ZMT0FUX0FTX0lOTElORV9MQVlPVVRfVU5JVApAQCAtNTAsOCArNTIsNiBAQCB1
c2luZyBJbmxpbmVMYXlvdXRTaXplID0gTGF5b3V0U2l6ZTsKIHVzaW5nIElubGluZUxheW91dFJl
Y3QgPSBMYXlvdXRSZWN0OwogI2VuZGlmCiAKLW5hbWVzcGFjZSBMYXlvdXQgewotCiBzdHJ1Y3Qg
UG9zaXRpb24gewogICAgIG9wZXJhdG9yIExheW91dFVuaXQoKSBjb25zdCB7IHJldHVybiB2YWx1
ZTsgfQogICAgIExheW91dFVuaXQgdmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
SW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZDgxNGVlOGYzMDZj
NGVmZGU5NjY4Y2M1MjczNzliNWU3ZGQ4MjAxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRGlzcGxheUNvbnRl
bnRCdWlsZGVyLmNwcApAQCAtMCwwICsxLDE0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuaCIKKworI2lm
IEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQorCisjaW5jbHVkZSAiTGF5b3V0Qm94
R2VvbWV0cnkuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIExheW91dCB7CisK
KworSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyOjpJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxk
ZXIoY29uc3QgQ29udGFpbmVyQm94JiBmb3JtYXR0aW5nQ29udGV4dFJvb3QsIElubGluZUZvcm1h
dHRpbmdTdGF0ZSYgZm9ybWF0dGluZ1N0YXRlKQorICAgIDogbV9mb3JtYXR0aW5nQ29udGV4dFJv
b3QoZm9ybWF0dGluZ0NvbnRleHRSb290KQorICAgICwgbV9mb3JtYXR0aW5nU3RhdGUoZm9ybWF0
dGluZ1N0YXRlKQoreworCit9CisKK3ZvaWQgSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyOjpi
dWlsZChjb25zdCBMaW5lQnVpbGRlcjo6TGluZUNvbnRlbnQmIGxpbmVDb250ZW50LCBjb25zdCBM
aW5lQm94JiBsaW5lQm94LCBjb25zdCBJbmxpbmVMYXlvdXRQb2ludCYgbGluZUJveExvZ2ljYWxU
b3BMZWZ0LCBjb25zdCBzaXplX3QgbGluZUluZGV4KQoreworICAgIGF1dG8mIGZvcm1hdHRpbmdT
dGF0ZSA9IHRoaXMtPmZvcm1hdHRpbmdTdGF0ZSgpOworICAgIC8vIEV2ZXJ5IGxpbmUgc3RhcnRz
IHdpdGggYSByb290IHJ1biwgZXZlbiB0aGUgZW1wdHkgb25lcy4KKyAgICBmb3JtYXR0aW5nU3Rh
dGUuYWRkTGluZVJ1bih7IGxpbmVJbmRleCwgTGluZVJ1bjo6VHlwZTo6Um9vdElubGluZUJveCwg
cm9vdCgpLCBsaW5lQm94LmxvZ2ljYWxSZWN0Rm9yUm9vdElubGluZUJveCgpLCB7IH0sIHsgfSwg
IGxpbmVCb3gucm9vdElubGluZUJveCgpLmhhc0NvbnRlbnQoKX0pOworCisgICAgLy8gU3Bhbm5p
bmcgaW5saW5lIGJveGVzIHN0YXJ0IGF0IHRoZSB2ZXJ5IGJlZ2lubmluZyBvZiB0aGUgbGluZS4K
KyAgICBhdXRvIGxpbmVTcGFubmluZ0lubGluZUJveEluZGV4ID0gZm9ybWF0dGluZ1N0YXRlLmxp
bmVSdW5zKCkuc2l6ZSgpOworICAgIGNyZWF0ZVJ1bnNBbmRVcGRhdGVHZW9tZXRyeUZvckxpbmVD
b250ZW50KGxpbmVDb250ZW50LCBsaW5lQm94LCBsaW5lQm94TG9naWNhbFRvcExlZnQsIGxpbmVJ
bmRleCk7CisgICAgY3JlYXRlUnVuc0FuZFVwZGF0ZUdlb21ldHJ5Rm9yTGluZVNwYW5uaW5nSW5s
aW5lQm94ZXMobGluZUJveCwgbGluZUJveExvZ2ljYWxUb3BMZWZ0LCBsaW5lSW5kZXgsIGxpbmVT
cGFubmluZ0lubGluZUJveEluZGV4KTsKK30KKwordm9pZCBJbmxpbmVEaXNwbGF5Q29udGVudEJ1
aWxkZXI6OmNyZWF0ZVJ1bnNBbmRVcGRhdGVHZW9tZXRyeUZvckxpbmVDb250ZW50KGNvbnN0IExp
bmVCdWlsZGVyOjpMaW5lQ29udGVudCYgbGluZUNvbnRlbnQsIGNvbnN0IExpbmVCb3gmIGxpbmVC
b3gsIGNvbnN0IElubGluZUxheW91dFBvaW50JiBsaW5lQm94TG9naWNhbFRvcExlZnQsIGNvbnN0
IHNpemVfdCBsaW5lSW5kZXgpCit7CisgICAgYXV0byYgZm9ybWF0dGluZ1N0YXRlID0gdGhpcy0+
Zm9ybWF0dGluZ1N0YXRlKCk7CisgICAgLy8gQ3JlYXRlIHRoZSBpbmxpbmUgcnVucyBvbiB0aGUg
Y3VycmVudCBsaW5lLiBUaGlzIGlzIG1vc3RseSB0ZXh0IGFuZCBhdG9taWMgaW5saW5lIHJ1bnMu
CisgICAgZm9yIChhdXRvJiBsaW5lUnVuIDogbGluZUNvbnRlbnQucnVucykgeworICAgICAgICBh
dXRvJiBsYXlvdXRCb3ggPSBsaW5lUnVuLmxheW91dEJveCgpOworICAgICAgICBzd2l0Y2ggKGxp
bmVSdW4udHlwZSgpKSB7CisgICAgICAgIGNhc2UgSW5saW5lSXRlbTo6VHlwZTo6VGV4dDoKKyAg
ICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRMaW5lUnVuKHsgbGluZUluZGV4LCBMaW5lUnVu
OjpUeXBlOjpUZXh0LCBsYXlvdXRCb3gsIGxpbmVCb3gubG9naWNhbFJlY3RGb3JUZXh0UnVuKGxp
bmVSdW4pLCBsaW5lUnVuLmV4cGFuc2lvbigpLCBsaW5lUnVuLnRleHRDb250ZW50KCkgfSk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBJbmxpbmVJdGVtOjpUeXBlOjpTb2Z0TGlu
ZUJyZWFrOgorICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZExpbmVSdW4oeyBsaW5lSW5k
ZXgsIExpbmVSdW46OlR5cGU6OlNvZnRMaW5lQnJlYWssIGxheW91dEJveCwgbGluZUJveC5sb2dp
Y2FsUmVjdEZvclRleHRSdW4obGluZVJ1biksIGxpbmVSdW4uZXhwYW5zaW9uKCksIGxpbmVSdW4u
dGV4dENvbnRlbnQoKSB9KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIElubGlu
ZUl0ZW06OlR5cGU6OkhhcmRMaW5lQnJlYWs6IHsKKyAgICAgICAgICAgIC8vIE9ubHkgaGFyZCBs
aW5lYnJlYWtzIGhhdmUgYXNzb2NpYXRlZCBsYXlvdXQgYm94ZXMuCisgICAgICAgICAgICBhdXRv
IGxpbmVCcmVha0JveFJlY3QgPSBsaW5lQm94LmxvZ2ljYWxSZWN0Rm9yTGluZUJyZWFrQm94KGxh
eW91dEJveCk7CisgICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkTGluZVJ1bih7IGxpbmVJ
bmRleCwgTGluZVJ1bjo6VHlwZTo6TGluZUJyZWFrQm94LCBsYXlvdXRCb3gsIGxpbmVCcmVha0Jv
eFJlY3QsIGxpbmVSdW4uZXhwYW5zaW9uKCksIHsgfSB9KTsKKworICAgICAgICAgICAgYXV0byYg
Ym94R2VvbWV0cnkgPSBmb3JtYXR0aW5nU3RhdGUuYm94R2VvbWV0cnkobGF5b3V0Qm94KTsKKyAg
ICAgICAgICAgIGxpbmVCcmVha0JveFJlY3QubW92ZUJ5KGxpbmVCb3hMb2dpY2FsVG9wTGVmdCk7
CisgICAgICAgICAgICBib3hHZW9tZXRyeS5zZXRMb2dpY2FsVG9wTGVmdCh0b0xheW91dFBvaW50
KGxpbmVCcmVha0JveFJlY3QudG9wTGVmdCgpKSk7CisgICAgICAgICAgICBib3hHZW9tZXRyeS5z
ZXRDb250ZW50Qm94SGVpZ2h0KHRvTGF5b3V0VW5pdChsaW5lQnJlYWtCb3hSZWN0LmhlaWdodCgp
KSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIElubGluZUl0
ZW06OlR5cGU6OkJveDogeworICAgICAgICAgICAgQVNTRVJUKGxheW91dEJveC5pc0F0b21pY0lu
bGluZUxldmVsQm94KCkpOworICAgICAgICAgICAgYXV0byYgYm94R2VvbWV0cnkgPSBmb3JtYXR0
aW5nU3RhdGUuYm94R2VvbWV0cnkobGF5b3V0Qm94KTsKKyAgICAgICAgICAgIGF1dG8gbG9naWNh
bEJvcmRlckJveCA9IGxpbmVCb3gubG9naWNhbEJvcmRlckJveEZvckF0b21pY0lubGluZUxldmVs
Qm94KGxheW91dEJveCwgYm94R2VvbWV0cnkpOworICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRl
LmFkZExpbmVSdW4oeyBsaW5lSW5kZXgsIExpbmVSdW46OlR5cGU6OkF0b21pY0lubGluZUxldmVs
Qm94LCBsYXlvdXRCb3gsIGxvZ2ljYWxCb3JkZXJCb3gsIGxpbmVSdW4uZXhwYW5zaW9uKCksIHsg
fSB9KTsKKworICAgICAgICAgICAgYXV0byBib3JkZXJCb3hMb2dpY2FsVG9wTGVmdCA9IGxvZ2lj
YWxCb3JkZXJCb3gudG9wTGVmdCgpOworICAgICAgICAgICAgLy8gTm90ZSB0aGF0IGlubGluZSBi
b3hlcyBhcmUgcmVsYXRpdmUgdG8gdGhlIGxpbmUgYW5kIHRoZWlyIHRvcCBwb3NpdGlvbiBjYW4g
YmUgbmVnYXRpdmUuCisgICAgICAgICAgICBib3JkZXJCb3hMb2dpY2FsVG9wTGVmdC5tb3ZlQnko
bGluZUJveExvZ2ljYWxUb3BMZWZ0KTsKKyAgICAgICAgICAgIC8vIEF0b21pYyBpbmxpbmUgYm94
ZXMgYXJlIGFsbCBzZXQuIFRoZWlyIG1hcmdpbi9ib3JkZXIvY29udGVudCBib3ggZ2VvbWV0cmll
cyBhcmUgYWxyZWFkeSBjb21wdXRlZC4gV2UganVzdCBoYXZlIHRvIHBvc2l0aW9uIHRoZW0gaGVy
ZS4KKyAgICAgICAgICAgIGJveEdlb21ldHJ5LnNldExvZ2ljYWxUb3BMZWZ0KHRvTGF5b3V0UG9p
bnQoYm9yZGVyQm94TG9naWNhbFRvcExlZnQpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgICAgIGNhc2UgSW5saW5lSXRlbTo6VHlwZTo6SW5saW5lQm94U3RhcnQ6IHsKKyAg
ICAgICAgICAgIC8vIFRoaXMgaW5saW5lIGJveCBzaG93ZWQgdXAgZmlyc3Qgb24gdGhpcyBsaW5l
LgorICAgICAgICAgICAgYXV0byYgYm94R2VvbWV0cnkgPSBmb3JtYXR0aW5nU3RhdGUuYm94R2Vv
bWV0cnkobGF5b3V0Qm94KTsKKyAgICAgICAgICAgIGF1dG8gaW5saW5lQm94Qm9yZGVyQm94ID0g
bGluZUJveC5sb2dpY2FsQm9yZGVyQm94Rm9ySW5saW5lQm94KGxheW91dEJveCwgYm94R2VvbWV0
cnkpOworICAgICAgICAgICAgaWYgKGxpbmVCb3guaGFzQ29udGVudCgpKSB7CisgICAgICAgICAg
ICAgICAgLy8gRklYTUU6IEl0J3MgZXhwZWN0ZWQgdG8gbm90IGhhdmUgYW55IHJ1bnMgb24gZW1w
dHkgbGluZXMuIFdlIHNob3VsZCByZWNvbnNpZGVyIHRoaXMuCisgICAgICAgICAgICAgICAgZm9y
bWF0dGluZ1N0YXRlLmFkZExpbmVSdW4oeyBsaW5lSW5kZXgsIExpbmVSdW46OlR5cGU6Ok5vblJv
b3RJbmxpbmVCb3gsIGxheW91dEJveCwgaW5saW5lQm94Qm9yZGVyQm94LCB7IH0sIHsgfSwgbGlu
ZUJveC5pbmxpbmVMZXZlbEJveEZvckxheW91dEJveChsYXlvdXRCb3gpLmhhc0NvbnRlbnQoKSB9
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYXV0byBpbmxpbmVCb3hTaXplID0gTGF5
b3V0U2l6ZSB7IExheW91dFVuaXQ6OmZyb21GbG9hdENlaWwoaW5saW5lQm94Qm9yZGVyQm94Lndp
ZHRoKCkpLCBMYXlvdXRVbml0Ojpmcm9tRmxvYXRDZWlsKGlubGluZUJveEJvcmRlckJveC5oZWln
aHQoKSkgfTsKKyAgICAgICAgICAgIGF1dG8gbG9naWNhbFJlY3QgPSBSZWN0IHsgTGF5b3V0UG9p
bnQgeyBpbmxpbmVCb3hCb3JkZXJCb3gudG9wTGVmdCgpIH0sIGlubGluZUJveFNpemUgfTsKKyAg
ICAgICAgICAgIGxvZ2ljYWxSZWN0Lm1vdmVCeShMYXlvdXRQb2ludCB7IGxpbmVCb3hMb2dpY2Fs
VG9wTGVmdCB9KTsKKyAgICAgICAgICAgIGJveEdlb21ldHJ5LnNldExvZ2ljYWxUb3BMZWZ0KGxv
Z2ljYWxSZWN0LnRvcExlZnQoKSk7CisgICAgICAgICAgICBhdXRvIGNvbnRlbnRCb3hIZWlnaHQg
PSBsb2dpY2FsUmVjdC5oZWlnaHQoKSAtIChib3hHZW9tZXRyeS52ZXJ0aWNhbEJvcmRlcigpICsg
Ym94R2VvbWV0cnkudmVydGljYWxQYWRkaW5nKCkudmFsdWVfb3IoMF9sdSkpOworICAgICAgICAg
ICAgYm94R2VvbWV0cnkuc2V0Q29udGVudEJveEhlaWdodChjb250ZW50Qm94SGVpZ2h0KTsKKyAg
ICAgICAgICAgIGF1dG8gY29udGVudEJveFdpZHRoID0gbG9naWNhbFJlY3Qud2lkdGgoKSAtIChi
b3hHZW9tZXRyeS5ob3Jpem9udGFsQm9yZGVyKCkgKyBib3hHZW9tZXRyeS5ob3Jpem9udGFsUGFk
ZGluZygpLnZhbHVlX29yKDBfbHUpKTsKKyAgICAgICAgICAgIGJveEdlb21ldHJ5LnNldENvbnRl
bnRCb3hXaWR0aChjb250ZW50Qm94V2lkdGgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVChsaW5lUnVuLmlzSW5saW5l
Qm94RW5kKCkgfHwgbGluZVJ1bi5pc1dvcmRCcmVha09wcG9ydHVuaXR5KCkpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgSW5saW5lRGlzcGxheUNvbnRl
bnRCdWlsZGVyOjpjcmVhdGVSdW5zQW5kVXBkYXRlR2VvbWV0cnlGb3JMaW5lU3Bhbm5pbmdJbmxp
bmVCb3hlcyhjb25zdCBMaW5lQm94JiBsaW5lQm94LCBjb25zdCBJbmxpbmVMYXlvdXRQb2ludCYg
bGluZUJveExvZ2ljYWxUb3BMZWZ0LCBjb25zdCBzaXplX3QgbGluZUluZGV4LCBzaXplX3QgbGlu
ZVNwYW5uaW5nSW5saW5lQm94SW5kZXgpCit7CisgICAgYXV0byYgZm9ybWF0dGluZ1N0YXRlID0g
dGhpcy0+Zm9ybWF0dGluZ1N0YXRlKCk7CisKKyAgICBmb3IgKGF1dG8mIGlubGluZUxldmVsQm94
IDogbGluZUJveC5ub25Sb290SW5saW5lTGV2ZWxCb3hlcygpKSB7CisgICAgICAgIGlmICghaW5s
aW5lTGV2ZWxCb3guaXNMaW5lU3Bhbm5pbmdJbmxpbmVCb3goKSkKKyAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICBhdXRvJiBsYXlvdXRCb3ggPSBpbmxpbmVMZXZlbEJveC5sYXlvdXRCb3go
KTsKKyAgICAgICAgYXV0byYgYm94R2VvbWV0cnkgPSBmb3JtYXR0aW5nU3RhdGUuYm94R2VvbWV0
cnkobGF5b3V0Qm94KTsKKyAgICAgICAgLy8gSW5saW5lIGJveGVzIG1heSBvciBtYXkgbm90IGJl
IHdyYXBwZWQgYW5kIGhhdmUgcnVucyBvbiBtdWx0aXBsZSBsaW5lcyAoZS5nLiA8c3Bhbj5maXJz
dCBsaW5lPGJyPnNlY29uZCBsaW5lPGJyPnRoaXJkIGxpbmU8L3NwYW4+KQorICAgICAgICBhdXRv
IGlubGluZUJveEJvcmRlckJveCA9IGxpbmVCb3gubG9naWNhbEJvcmRlckJveEZvcklubGluZUJv
eChsYXlvdXRCb3gsIGJveEdlb21ldHJ5KTsKKworICAgICAgICBmb3JtYXR0aW5nU3RhdGUubGlu
ZVJ1bnMoKS5pbnNlcnQobGluZVNwYW5uaW5nSW5saW5lQm94SW5kZXgrKywgeyBsaW5lSW5kZXgs
IExpbmVSdW46OlR5cGU6Ok5vblJvb3RJbmxpbmVCb3gsIGxheW91dEJveCwgaW5saW5lQm94Qm9y
ZGVyQm94LCB7IH0sIHsgfSwgaW5saW5lTGV2ZWxCb3guaGFzQ29udGVudCgpLCB0cnVlIH0pOwor
CisgICAgICAgIGF1dG8gaW5saW5lQm94U2l6ZSA9IExheW91dFNpemUgeyBMYXlvdXRVbml0Ojpm
cm9tRmxvYXRDZWlsKGlubGluZUJveEJvcmRlckJveC53aWR0aCgpKSwgTGF5b3V0VW5pdDo6ZnJv
bUZsb2F0Q2VpbChpbmxpbmVCb3hCb3JkZXJCb3guaGVpZ2h0KCkpIH07CisgICAgICAgIGF1dG8g
bG9naWNhbFJlY3QgPSBSZWN0IHsgTGF5b3V0UG9pbnQgeyBpbmxpbmVCb3hCb3JkZXJCb3gudG9w
TGVmdCgpIH0sIGlubGluZUJveFNpemUgfTsKKyAgICAgICAgbG9naWNhbFJlY3QubW92ZUJ5KExh
eW91dFBvaW50IHsgbGluZUJveExvZ2ljYWxUb3BMZWZ0IH0pOworICAgICAgICAvLyBNaWRkbGUg
b3IgZW5kIG9mIHRoZSBpbmxpbmUgYm94LiBMZXQncyBzdHJldGNoIHRoZSBib3ggYXMgbmVlZGVk
LgorICAgICAgICBhdXRvIGVuY2xvc2luZ0JvcmRlckJveFJlY3QgPSBCb3hHZW9tZXRyeTo6Ym9y
ZGVyQm94UmVjdChib3hHZW9tZXRyeSk7CisgICAgICAgIGVuY2xvc2luZ0JvcmRlckJveFJlY3Qu
ZXhwYW5kVG9Db250YWluKGxvZ2ljYWxSZWN0KTsKKyAgICAgICAgYm94R2VvbWV0cnkuc2V0TG9n
aWNhbExlZnQoZW5jbG9zaW5nQm9yZGVyQm94UmVjdC5sZWZ0KCkpOworCisgICAgICAgIGJveEdl
b21ldHJ5LnNldENvbnRlbnRCb3hIZWlnaHQoZW5jbG9zaW5nQm9yZGVyQm94UmVjdC5oZWlnaHQo
KSAtIChib3hHZW9tZXRyeS52ZXJ0aWNhbEJvcmRlcigpICsgYm94R2VvbWV0cnkudmVydGljYWxQ
YWRkaW5nKCkudmFsdWVfb3IoMF9sdSkpKTsKKyAgICAgICAgYm94R2VvbWV0cnkuc2V0Q29udGVu
dEJveFdpZHRoKGVuY2xvc2luZ0JvcmRlckJveFJlY3Qud2lkdGgoKSAtIChib3hHZW9tZXRyeS5o
b3Jpem9udGFsQm9yZGVyKCkgKyBib3hHZW9tZXRyeS5ob3Jpem9udGFsUGFkZGluZygpLnZhbHVl
X29yKDBfbHUpKSk7CisgICAgfQorfQorCit9Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRGlzcGxh
eUNvbnRlbnRCdWlsZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2lubGluZS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMGQ1
ZTFjMjkxNjM3MTUwYTM2YWViZWY5MTc5MjExZTNmYmE4MDBhCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRGlz
cGxheUNvbnRlbnRCdWlsZGVyLmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCisKKyNpbmNs
dWRlICJJbmxpbmVMaW5lQnVpbGRlci5oIgorI2luY2x1ZGUgIkxheW91dFVuaXRzLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBMYXlvdXQgeworCitjbGFzcyBDb250YWluZXJC
b3g7CitjbGFzcyBJbmxpbmVGb3JtYXR0aW5nU3RhdGU7CitjbGFzcyBMaW5lQm94OworCitjbGFz
cyBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIgeworcHVibGljOgorICAgIElubGluZURpc3Bs
YXlDb250ZW50QnVpbGRlcihjb25zdCBDb250YWluZXJCb3gmIGZvcm1hdHRpbmdDb250ZXh0Um9v
dCwgSW5saW5lRm9ybWF0dGluZ1N0YXRlJik7CisKKyAgICB2b2lkIGJ1aWxkKGNvbnN0IExpbmVC
dWlsZGVyOjpMaW5lQ29udGVudCYsIGNvbnN0IExpbmVCb3gmLCBjb25zdCBJbmxpbmVMYXlvdXRQ
b2ludCYgbGluZUJveExvZ2ljYWxUb3BMZWZ0LCBjb25zdCBzaXplX3QgbGluZUluZGV4KTsKKwor
cHJpdmF0ZToKKyAgICB2b2lkIGNyZWF0ZVJ1bnNBbmRVcGRhdGVHZW9tZXRyeUZvckxpbmVDb250
ZW50KGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lQ29udGVudCYsIGNvbnN0IExpbmVCb3gmLCBjb25z
dCBJbmxpbmVMYXlvdXRQb2ludCYgbGluZUJveExvZ2ljYWxUb3BMZWZ0LCBjb25zdCBzaXplX3Qg
bGluZUluZGV4KTsKKyAgICB2b2lkIGNyZWF0ZVJ1bnNBbmRVcGRhdGVHZW9tZXRyeUZvckxpbmVT
cGFubmluZ0lubGluZUJveGVzKGNvbnN0IExpbmVCb3gmLCBjb25zdCBJbmxpbmVMYXlvdXRQb2lu
dCYgbGluZUJveExvZ2ljYWxUb3BMZWZ0LCBjb25zdCBzaXplX3QgbGluZUluZGV4LCBzaXplX3Qg
bGluZVNwYW5uaW5nSW5saW5lQm94SW5kZXgpOworCisgICAgY29uc3QgQ29udGFpbmVyQm94JiBy
b290KCkgY29uc3QgeyByZXR1cm4gbV9mb3JtYXR0aW5nQ29udGV4dFJvb3Q7IH0KKyAgICBJbmxp
bmVGb3JtYXR0aW5nU3RhdGUmIGZvcm1hdHRpbmdTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9y
bWF0dGluZ1N0YXRlOyB9IAorCisgICAgY29uc3QgQ29udGFpbmVyQm94JiBtX2Zvcm1hdHRpbmdD
b250ZXh0Um9vdDsKKyAgICBJbmxpbmVGb3JtYXR0aW5nU3RhdGUmIG1fZm9ybWF0dGluZ1N0YXRl
OworfTsKKworfQorfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZv
cm1hdHRpbmdDb250ZXh0LmNwcAppbmRleCAzMDMyMmM3ZGM4OWE0ODlkMzUzYjRjYzAzMTQ3OGFi
ODU0YjM3MTEwLi45YWFhYTRkN2RiYmI1ZTg2MTJiNGQwODcxOWY1Mjk2MDAwNzI3MWNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9J
bmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC0z
MCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJGbG9hdGluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJG
b250Q2FzY2FkZS5oIgorI2luY2x1ZGUgIklubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5oIgog
I2luY2x1ZGUgIklubGluZUZvcm1hdHRpbmdTdGF0ZS5oIgogI2luY2x1ZGUgIklubGluZUxpbmVC
b3guaCIKICNpbmNsdWRlICJJbmxpbmVMaW5lQm94QnVpbGRlci5oIgpAQCAtMjA1LDcgKzIwNiw3
IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxpbmVMYXlvdXQoSW5saW5lSXRlbXMm
IGlubGluZUl0ZW1zLCBMaW5lQnVpbGRlcjo6CiAgICAgICAgIH0oKTsKICAgICAgICAgYXV0byBp
bml0aWFsTGluZUNvbnN0cmFpbnRzID0gSW5saW5lUmVjdCB7IGxpbmVMb2dpY2FsVG9wLCBjb25z
dHJhaW50cy5ob3Jpem9udGFsKCkubG9naWNhbExlZnQsIGNvbnN0cmFpbnRzLmhvcml6b250YWwo
KS5sb2dpY2FsV2lkdGgsIGluaXRpYWxMaW5lSGVpZ2h0IH07CiAgICAgICAgIGF1dG8gbGluZUNv
bnRlbnQgPSBsaW5lQnVpbGRlci5sYXlvdXRJbmxpbmVDb250ZW50KG5lZWRzTGF5b3V0UmFuZ2Us
IHBhcnRpYWxMZWFkaW5nQ29udGVudExlbmd0aCwgbGVhZGluZ0xvZ2ljYWxXaWR0aCwgaW5pdGlh
bExpbmVDb25zdHJhaW50cywgaXNGaXJzdExpbmUpOwotICAgICAgICBhdXRvIGxpbmVMb2dpY2Fs
UmVjdCA9IGNvbXB1dGVHZW9tZXRyeUZvckxpbmVDb250ZW50KGxpbmVDb250ZW50LCBjb25zdHJh
aW50cy5ob3Jpem9udGFsKCkpOworICAgICAgICBhdXRvIGxpbmVMb2dpY2FsUmVjdCA9IGNvbXB1
dGVHZW9tZXRyeUZvckxpbmVDb250ZW50KGxpbmVDb250ZW50KTsKIAogICAgICAgICBhdXRvIGxp
bmVDb250ZW50UmFuZ2UgPSBsaW5lQ29udGVudC5pbmxpbmVJdGVtUmFuZ2U7CiAgICAgICAgIGlm
ICghbGluZUNvbnRlbnRSYW5nZS5pc0VtcHR5KCkpIHsKQEAgLTU2NywxMzkgKzU2OCwxOCBAQCB2
b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb2xsZWN0Q29udGVudElmTmVlZGVkKCkKICAg
ICB9CiB9CiAKLUlubGluZVJlY3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVHZW9t
ZXRyeUZvckxpbmVDb250ZW50KGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lQ29udGVudCYgbGluZUNv
bnRlbnQsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYgaG9yaXpvbnRhbENvbnN0cmFpbnRz
KQorSW5saW5lUmVjdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUdlb21ldHJ5Rm9y
TGluZUNvbnRlbnQoY29uc3QgTGluZUJ1aWxkZXI6OkxpbmVDb250ZW50JiBsaW5lQ29udGVudCkK
IHsKICAgICBhdXRvJiBmb3JtYXR0aW5nU3RhdGUgPSB0aGlzLT5mb3JtYXR0aW5nU3RhdGUoKTsK
LSAgICBhdXRvJiBmb3JtYXR0aW5nR2VvbWV0cnkgPSB0aGlzLT5mb3JtYXR0aW5nR2VvbWV0cnko
KTsKLSAgICBhdXRvIGxpbmVJbmRleCA9IGZvcm1hdHRpbmdTdGF0ZS5saW5lcygpLnNpemUoKTsK
KyAgICBhdXRvIGN1cnJlbnRMaW5lSW5kZXggPSBmb3JtYXR0aW5nU3RhdGUubGluZXMoKS5zaXpl
KCk7CiAKICAgICBhdXRvIGxpbmVCb3hBbmRHZW9tZXRyeSA9IExpbmVCb3hCdWlsZGVyKCp0aGlz
KS5idWlsZChsaW5lQ29udGVudCk7CiAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZExpbmVCb3goV1RG
TW92ZShsaW5lQm94QW5kR2VvbWV0cnkubGluZUJveCkpOwogICAgIGZvcm1hdHRpbmdTdGF0ZS5h
ZGRMaW5lKGxpbmVCb3hBbmRHZW9tZXRyeS5saW5lR2VvbWV0cnkpOwogCi0gICAgY29uc3QgYXV0
byYgbGluZUJveCA9IGZvcm1hdHRpbmdTdGF0ZS5saW5lQm94ZXMoKS5sYXN0KCk7CiAgICAgYXV0
byBsaW5lQm94TG9naWNhbFJlY3QgPSBsaW5lQm94QW5kR2VvbWV0cnkubGluZUdlb21ldHJ5Lmxp
bmVCb3hMb2dpY2FsUmVjdCgpOwogCi0gICAgLy8gRXZlcnkgbGluZSBzdGFydHMgd2l0aCBhIHJv
b3QgcnVuLCBldmVuIHRoZSBlbXB0eSBvbmVzLgotICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRMaW5l
UnVuKHsgbGluZUluZGV4LCBMaW5lUnVuOjpUeXBlOjpSb290SW5saW5lQm94LCByb290KCksIGxp
bmVCb3gubG9naWNhbFJlY3RGb3JSb290SW5saW5lQm94KCksIHsgfSwgeyB9LCAgbGluZUJveC5y
b290SW5saW5lQm94KCkuaGFzQ29udGVudCgpfSk7Ci0KLSAgICBpZiAoIWxpbmVCb3guaGFzQ29u
dGVudCgpKSB7Ci0gICAgICAgIC8vIEZhc3QgcGF0aCBmb3IgbGluZXMgd2l0aCBubyBjb250ZW50
IGUuZy4gPGRpdj48c3Bhbj48L3NwYW4+PHNwYW4+PC9zcGFuPjwvZGl2PiBvciA8c3Bhbj48ZGl2
PjwvZGl2Pjwvc3Bhbj4gd2hlcmUgd2UgY29uc3RydWN0IGVtcHR5IHByZSBhbmQgcG9zdCBibG9j
a3MuCi0gICAgICAgIEFTU0VSVCghbGluZUJveC5yb290SW5saW5lQm94KCkuaGFzQ29udGVudCgp
ICYmICFsaW5lQm94TG9naWNhbFJlY3QuaGVpZ2h0KCkpOwotICAgICAgICBhdXRvIHVwZGF0ZUlu
bGluZUJveGVzR2VvbWV0cnlJZkFwcGxpY2FibGUgPSBbJl0gewotICAgICAgICAgICAgaWYgKCFs
aW5lQm94Lmhhc0lubGluZUJveCgpKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgIFZlY3Rvcjxjb25zdCBCb3gqPiBsYXlvdXRCb3hMaXN0OwotICAgICAgICAgICAgLy8gQ29s
bGVjdCB0aGUgZW1wdHkgaW5saW5lIGJveGVzIHRoYXQgc2hvd2VkIHVwIGZpcnN0IG9uIHRoaXMg
bGluZS4KLSAgICAgICAgICAgIC8vIE5vdGUgdGhhdCBhbiBpbmxpbmUgYm94IGVuZCBvbiBhbiBl
bXB0eSBsaW5lIGRvZXMgbm90IG1ha2UgdGhlIGlubGluZSBib3ggdGFsbGVyLgotICAgICAgICAg
ICAgLy8gKGUuZy4gPGRpdj50ZXh0PHNwYW4+PGJyPjwvc3Bhbj48L2Rpdj4pIDwtIHRoZSA8c3Bh
bj4gaW5saW5lIGJveCBpcyBhcyB0YWxsIGFzIHRoZSBsaW5lIGV2ZW4gdGhvdWdoIHRoZSA8L3Nw
YW4+IGlzIGFmdGVyIGEgPGJyPiBzbyB0ZWNobmljYWxseSBpcyBvbiB0aGUgZm9sbG93aW5nIChl
bXB0eSlsaW5lLgotICAgICAgICAgICAgZm9yIChhdXRvJiBsaW5lUnVuIDogbGluZUNvbnRlbnQu
cnVucykgewotICAgICAgICAgICAgICAgIGlmIChsaW5lUnVuLmlzSW5saW5lQm94U3RhcnQoKSkK
LSAgICAgICAgICAgICAgICAgICAgbGF5b3V0Qm94TGlzdC5hcHBlbmQoJmxpbmVSdW4ubGF5b3V0
Qm94KCkpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZm9yIChhdXRvKiBsYXlvdXRCb3gg
OiBsYXlvdXRCb3hMaXN0KSB7Ci0gICAgICAgICAgICAgICAgYXV0byYgYm94R2VvbWV0cnkgPSBm
b3JtYXR0aW5nU3RhdGUuYm94R2VvbWV0cnkoKmxheW91dEJveCk7Ci0gICAgICAgICAgICAgICAg
YXV0byBpbmxpbmVCb3hMb2dpY2FsSGVpZ2h0ID0gTGF5b3V0VW5pdDo6ZnJvbUZsb2F0Q2VpbChs
aW5lQm94LmxvZ2ljYWxCb3JkZXJCb3hGb3JJbmxpbmVCb3goKmxheW91dEJveCwgYm94R2VvbWV0
cnkpLmhlaWdodCgpKTsKLSAgICAgICAgICAgICAgICBib3hHZW9tZXRyeS5zZXRDb250ZW50Qm94
SGVpZ2h0KGlubGluZUJveExvZ2ljYWxIZWlnaHQpOwotICAgICAgICAgICAgICAgIGJveEdlb21l
dHJ5LnNldENvbnRlbnRCb3hXaWR0aCh7IH0pOwotICAgICAgICAgICAgICAgIGJveEdlb21ldHJ5
LnNldExvZ2ljYWxUb3BMZWZ0KHRvTGF5b3V0UG9pbnQobGluZUJveExvZ2ljYWxSZWN0LnRvcExl
ZnQoKSkpOwotICAgICAgICAgICAgfQotICAgICAgICB9OwotICAgICAgICB1cGRhdGVJbmxpbmVC
b3hlc0dlb21ldHJ5SWZBcHBsaWNhYmxlKCk7Ci0gICAgICAgIHJldHVybiBsaW5lQm94TG9naWNh
bFJlY3Q7Ci0gICAgfQotCi0gICAgLy8gU3Bhbm5pbmcgaW5saW5lIGJveGVzIHN0YXJ0IGF0IHRo
ZSB2ZXJ5IGJlZ2lubmluZyBvZiB0aGUgbGluZS4KLSAgICBhdXRvIGxpbmVTcGFubmluZ0lubGlu
ZUJveEluZGV4ID0gZm9ybWF0dGluZ1N0YXRlLmxpbmVSdW5zKCkuc2l6ZSgpOwotICAgIEhhc2hT
ZXQ8Y29uc3QgQm94Kj4gaW5saW5lQm94U3RhcnRTZXQ7Ci0gICAgYXV0byBjb25zdHJ1Y3RMaW5l
UnVuc0FuZFVwZGF0ZUJveEdlb21ldHJ5ID0gWyZdIHsKLSAgICAgICAgLy8gQ3JlYXRlIHRoZSBp
bmxpbmUgcnVucyBvbiB0aGUgY3VycmVudCBsaW5lLiBUaGlzIGlzIG1vc3RseSB0ZXh0IGFuZCBh
dG9taWMgaW5saW5lIHJ1bnMuCi0gICAgICAgIGZvciAoYXV0byYgbGluZVJ1biA6IGxpbmVDb250
ZW50LnJ1bnMpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbm90IG5lZWQgdG8g
Y29uc3RydWN0IGEgbGluZSBydW4gZm9yIDxicj4uCi0gICAgICAgICAgICBhdXRvJiBsYXlvdXRC
b3ggPSBsaW5lUnVuLmxheW91dEJveCgpOwotICAgICAgICAgICAgaWYgKGxpbmVSdW4uaXNUZXh0
KCkpIHsKLSAgICAgICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkTGluZVJ1bih7IGxpbmVJ
bmRleCwgTGluZVJ1bjo6VHlwZTo6VGV4dCwgbGF5b3V0Qm94LCBsaW5lQm94LmxvZ2ljYWxSZWN0
Rm9yVGV4dFJ1bihsaW5lUnVuKSwgbGluZVJ1bi5leHBhbnNpb24oKSwgbGluZVJ1bi50ZXh0Q29u
dGVudCgpIH0pOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgaWYgKGxpbmVSdW4uaXNMaW5lQnJlYWsoKSkgewotICAgICAgICAgICAgICAgIGlm
IChsYXlvdXRCb3guaXNMaW5lQnJlYWtCb3goKSkgewotICAgICAgICAgICAgICAgICAgICAvLyBP
bmx5IGhhcmQgbGluZWJyZWFrcyBoYXZlIGFzc29jaWF0ZWQgbGF5b3V0IGJveGVzLgotICAgICAg
ICAgICAgICAgICAgICBhdXRvIGxpbmVCcmVha0JveFJlY3QgPSBsaW5lQm94LmxvZ2ljYWxSZWN0
Rm9yTGluZUJyZWFrQm94KGxheW91dEJveCk7Ci0gICAgICAgICAgICAgICAgICAgIGZvcm1hdHRp
bmdTdGF0ZS5hZGRMaW5lUnVuKHsgbGluZUluZGV4LCBMaW5lUnVuOjpUeXBlOjpMaW5lQnJlYWtC
b3gsIGxheW91dEJveCwgbGluZUJyZWFrQm94UmVjdCwgbGluZVJ1bi5leHBhbnNpb24oKSwgeyB9
IH0pOwotCi0gICAgICAgICAgICAgICAgICAgIGF1dG8mIGJveEdlb21ldHJ5ID0gZm9ybWF0dGlu
Z1N0YXRlLmJveEdlb21ldHJ5KGxheW91dEJveCk7Ci0gICAgICAgICAgICAgICAgICAgIGxpbmVC
cmVha0JveFJlY3QubW92ZUJ5KGxpbmVCb3hMb2dpY2FsUmVjdC50b3BMZWZ0KCkpOwotICAgICAg
ICAgICAgICAgICAgICBib3hHZW9tZXRyeS5zZXRMb2dpY2FsVG9wTGVmdCh0b0xheW91dFBvaW50
KGxpbmVCcmVha0JveFJlY3QudG9wTGVmdCgpKSk7Ci0gICAgICAgICAgICAgICAgICAgIGJveEdl
b21ldHJ5LnNldENvbnRlbnRCb3hIZWlnaHQodG9MYXlvdXRVbml0KGxpbmVCcmVha0JveFJlY3Qu
aGVpZ2h0KCkpKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgCi0gICAgICAgICAgICAgICAgICAg
IGZvcm1hdHRpbmdTdGF0ZS5hZGRMaW5lUnVuKHsgbGluZUluZGV4LCBMaW5lUnVuOjpUeXBlOjpT
b2Z0TGluZUJyZWFrLCBsYXlvdXRCb3gsIGxpbmVCb3gubG9naWNhbFJlY3RGb3JUZXh0UnVuKGxp
bmVSdW4pLCBsaW5lUnVuLmV4cGFuc2lvbigpLCBsaW5lUnVuLnRleHRDb250ZW50KCkgfSk7Ci0g
ICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAo
bGluZVJ1bi5pc0JveCgpKSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKGxheW91dEJveC5pc0F0
b21pY0lubGluZUxldmVsQm94KCkpOwotICAgICAgICAgICAgICAgIGF1dG8mIGJveEdlb21ldHJ5
ID0gZm9ybWF0dGluZ1N0YXRlLmJveEdlb21ldHJ5KGxheW91dEJveCk7Ci0gICAgICAgICAgICAg
ICAgYXV0byBsb2dpY2FsQm9yZGVyQm94ID0gbGluZUJveC5sb2dpY2FsQm9yZGVyQm94Rm9yQXRv
bWljSW5saW5lTGV2ZWxCb3gobGF5b3V0Qm94LCBib3hHZW9tZXRyeSk7Ci0gICAgICAgICAgICAg
ICAgZm9ybWF0dGluZ1N0YXRlLmFkZExpbmVSdW4oeyBsaW5lSW5kZXgsIExpbmVSdW46OlR5cGU6
OkF0b21pY0lubGluZUxldmVsQm94LCBsYXlvdXRCb3gsIGxvZ2ljYWxCb3JkZXJCb3gsIGxpbmVS
dW4uZXhwYW5zaW9uKCksIHsgfSB9KTsKLQotICAgICAgICAgICAgICAgIGF1dG8gYm9yZGVyQm94
TG9naWNhbFRvcExlZnQgPSBsb2dpY2FsQm9yZGVyQm94LnRvcExlZnQoKTsKLSAgICAgICAgICAg
ICAgICAvLyBOb3RlIHRoYXQgaW5saW5lIGJveGVzIGFyZSByZWxhdGl2ZSB0byB0aGUgbGluZSBh
bmQgdGhlaXIgdG9wIHBvc2l0aW9uIGNhbiBiZSBuZWdhdGl2ZS4KLSAgICAgICAgICAgICAgICBi
b3JkZXJCb3hMb2dpY2FsVG9wTGVmdC5tb3ZlQnkobGluZUJveExvZ2ljYWxSZWN0LnRvcExlZnQo
KSk7Ci0gICAgICAgICAgICAgICAgaWYgKGxheW91dEJveC5pc0luRmxvd1Bvc2l0aW9uZWQoKSkK
LSAgICAgICAgICAgICAgICAgICAgYm9yZGVyQm94TG9naWNhbFRvcExlZnQgKz0gZm9ybWF0dGlu
Z0dlb21ldHJ5LmluRmxvd1Bvc2l0aW9uZWRQb3NpdGlvbk9mZnNldChsYXlvdXRCb3gsIGhvcml6
b250YWxDb25zdHJhaW50cyk7Ci0gICAgICAgICAgICAgICAgLy8gQXRvbWljIGlubGluZSBib3hl
cyBhcmUgYWxsIHNldC4gVGhlaXIgbWFyZ2luL2JvcmRlci9jb250ZW50IGJveCBnZW9tZXRyaWVz
IGFyZSBhbHJlYWR5IGNvbXB1dGVkLiBXZSBqdXN0IGhhdmUgdG8gcG9zaXRpb24gdGhlbSBoZXJl
LgotICAgICAgICAgICAgICAgIGJveEdlb21ldHJ5LnNldExvZ2ljYWxUb3BMZWZ0KHRvTGF5b3V0
UG9pbnQoYm9yZGVyQm94TG9naWNhbFRvcExlZnQpKTsKLSAgICAgICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChsaW5lUnVuLmlzSW5saW5lQm94U3Rh
cnQoKSkgewotICAgICAgICAgICAgICAgIGF1dG8mIGJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ1N0
YXRlLmJveEdlb21ldHJ5KGxheW91dEJveCk7Ci0gICAgICAgICAgICAgICAgYXV0byBpbmxpbmVC
b3hMb2dpY2FsUmVjdCA9IGxpbmVCb3gubG9naWNhbEJvcmRlckJveEZvcklubGluZUJveChsYXlv
dXRCb3gsIGJveEdlb21ldHJ5KTsKLSAgICAgICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRk
TGluZVJ1bih7IGxpbmVJbmRleCwgTGluZVJ1bjo6VHlwZTo6Tm9uUm9vdElubGluZUJveCwgbGF5
b3V0Qm94LCBpbmxpbmVCb3hMb2dpY2FsUmVjdCwgbGluZVJ1bi5leHBhbnNpb24oKSwgeyB9LCBs
aW5lQm94LmlubGluZUxldmVsQm94Rm9yTGF5b3V0Qm94KGxheW91dEJveCkuaGFzQ29udGVudCgp
IH0pOwotICAgICAgICAgICAgICAgIGlubGluZUJveFN0YXJ0U2V0LmFkZCgmbGF5b3V0Qm94KTsK
LSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIEFT
U0VSVChsaW5lUnVuLmlzSW5saW5lQm94RW5kKCkgfHwgbGluZVJ1bi5pc1dvcmRCcmVha09wcG9y
dHVuaXR5KCkpOwotICAgICAgICB9Ci0gICAgfTsKLSAgICBjb25zdHJ1Y3RMaW5lUnVuc0FuZFVw
ZGF0ZUJveEdlb21ldHJ5KCk7Ci0KLSAgICBhdXRvIHVwZGF0ZUJveEdlb21ldHJ5Rm9ySW5saW5l
Qm94ZXMgPSBbJl0gewotICAgICAgICAvLyBGSVhNRTogV2UgbWF5IHdhbnQgdG8ga2VlcCBhcm91
bmQgYW4gaW5saW5lIGJveCBvbmx5IHNldC4KLSAgICAgICAgaWYgKCFsaW5lQm94Lmhhc0lubGlu
ZUJveCgpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAvLyBHcmFiIHRoZSBpbmxpbmUg
Ym94ZXMgKGV2ZW4gdGhvc2UgdGhhdCBkb24ndCBoYXZlIGFzc29jaWF0ZWQgbGF5b3V0IGJveGVz
IG9uIHRoZSBjdXJyZW50IGxpbmUgZHVlIHRvIGxpbmUgd3JhcHBpbmcpCi0gICAgICAgIC8vIGFu
ZCB1cGRhdGUgdGhlaXIgZ2VvbWV0cmllcy4KLSAgICAgICAgZm9yIChhdXRvJiBpbmxpbmVMZXZl
bEJveCA6IGxpbmVCb3gubm9uUm9vdElubGluZUxldmVsQm94ZXMoKSkgewotICAgICAgICAgICAg
aWYgKCFpbmxpbmVMZXZlbEJveC5pc0lubGluZUJveCgpKQotICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICAgICAgYXV0byYgbGF5b3V0Qm94ID0gaW5saW5lTGV2ZWxCb3gubGF5b3V0
Qm94KCk7Ci0gICAgICAgICAgICBhdXRvJiBib3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdTdGF0ZS5i
b3hHZW9tZXRyeShsYXlvdXRCb3gpOwotICAgICAgICAgICAgLy8gSW5saW5lIGJveGVzIG1heSBv
ciBtYXkgbm90IGJlIHdyYXBwZWQgYW5kIGhhdmUgcnVucyBvbiBtdWx0aXBsZSBsaW5lcyAoZS5n
LiA8c3Bhbj5maXJzdCBsaW5lPGJyPnNlY29uZCBsaW5lPGJyPnRoaXJkIGxpbmU8L3NwYW4+KQot
ICAgICAgICAgICAgYXV0byBpbmxpbmVCb3hCb3JkZXJCb3ggPSBsaW5lQm94LmxvZ2ljYWxCb3Jk
ZXJCb3hGb3JJbmxpbmVCb3gobGF5b3V0Qm94LCBib3hHZW9tZXRyeSk7Ci0gICAgICAgICAgICBh
dXRvIGlubGluZUJveFNpemUgPSBMYXlvdXRTaXplIHsgTGF5b3V0VW5pdDo6ZnJvbUZsb2F0Q2Vp
bChpbmxpbmVCb3hCb3JkZXJCb3gud2lkdGgoKSksIExheW91dFVuaXQ6OmZyb21GbG9hdENlaWwo
aW5saW5lQm94Qm9yZGVyQm94LmhlaWdodCgpKSB9OwotICAgICAgICAgICAgYXV0byBsb2dpY2Fs
UmVjdCA9IFJlY3QgeyBMYXlvdXRQb2ludCB7IGlubGluZUJveEJvcmRlckJveC50b3BMZWZ0KCkg
fSwgaW5saW5lQm94U2l6ZSB9OwotICAgICAgICAgICAgbG9naWNhbFJlY3QubW92ZUJ5KExheW91
dFBvaW50IHsgbGluZUJveExvZ2ljYWxSZWN0LnRvcExlZnQoKSB9KTsKLSAgICAgICAgICAgIGlm
IChpbmxpbmVCb3hTdGFydFNldC5jb250YWlucygmbGF5b3V0Qm94KSkgewotICAgICAgICAgICAg
ICAgIC8vIFRoaXMgaW5saW5lIGJveCBzaG93ZWQgdXAgZmlyc3Qgb24gdGhpcyBsaW5lLgotICAg
ICAgICAgICAgICAgIGJveEdlb21ldHJ5LnNldExvZ2ljYWxUb3BMZWZ0KGxvZ2ljYWxSZWN0LnRv
cExlZnQoKSk7Ci0gICAgICAgICAgICAgICAgYXV0byBjb250ZW50Qm94SGVpZ2h0ID0gbG9naWNh
bFJlY3QuaGVpZ2h0KCkgLSAoYm94R2VvbWV0cnkudmVydGljYWxCb3JkZXIoKSArIGJveEdlb21l
dHJ5LnZlcnRpY2FsUGFkZGluZygpLnZhbHVlX29yKDBfbHUpKTsKLSAgICAgICAgICAgICAgICBi
b3hHZW9tZXRyeS5zZXRDb250ZW50Qm94SGVpZ2h0KGNvbnRlbnRCb3hIZWlnaHQpOwotICAgICAg
ICAgICAgICAgIGF1dG8gY29udGVudEJveFdpZHRoID0gbG9naWNhbFJlY3Qud2lkdGgoKSAtIChi
b3hHZW9tZXRyeS5ob3Jpem9udGFsQm9yZGVyKCkgKyBib3hHZW9tZXRyeS5ob3Jpem9udGFsUGFk
ZGluZygpLnZhbHVlX29yKDBfbHUpKTsKLSAgICAgICAgICAgICAgICBib3hHZW9tZXRyeS5zZXRD
b250ZW50Qm94V2lkdGgoY29udGVudEJveFdpZHRoKTsKLSAgICAgICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8vIE1pZGRsZSBvciBlbmQgb2YgdGhlIGlu
bGluZSBib3guIExldCdzIHN0cmV0Y2ggdGhlIGJveCBhcyBuZWVkZWQuCi0gICAgICAgICAgICBm
b3JtYXR0aW5nU3RhdGUubGluZVJ1bnMoKS5pbnNlcnQobGluZVNwYW5uaW5nSW5saW5lQm94SW5k
ZXgrKywgeyBsaW5lSW5kZXgsIExpbmVSdW46OlR5cGU6Ok5vblJvb3RJbmxpbmVCb3gsIGxheW91
dEJveCwgaW5saW5lQm94Qm9yZGVyQm94LCB7IH0sIHsgfSwgaW5saW5lTGV2ZWxCb3guaGFzQ29u
dGVudCgpLCB0cnVlIH0pOwotCi0gICAgICAgICAgICBhdXRvIGVuY2xvc2luZ0JvcmRlckJveFJl
Y3QgPSBCb3hHZW9tZXRyeTo6Ym9yZGVyQm94UmVjdChib3hHZW9tZXRyeSk7Ci0gICAgICAgICAg
ICBlbmNsb3NpbmdCb3JkZXJCb3hSZWN0LmV4cGFuZFRvQ29udGFpbihsb2dpY2FsUmVjdCk7Ci0g
ICAgICAgICAgICBib3hHZW9tZXRyeS5zZXRMb2dpY2FsTGVmdChlbmNsb3NpbmdCb3JkZXJCb3hS
ZWN0LmxlZnQoKSk7Ci0KLSAgICAgICAgICAgIGJveEdlb21ldHJ5LnNldENvbnRlbnRCb3hIZWln
aHQoZW5jbG9zaW5nQm9yZGVyQm94UmVjdC5oZWlnaHQoKSAtIChib3hHZW9tZXRyeS52ZXJ0aWNh
bEJvcmRlcigpICsgYm94R2VvbWV0cnkudmVydGljYWxQYWRkaW5nKCkudmFsdWVfb3IoMF9sdSkp
KTsKLSAgICAgICAgICAgIGJveEdlb21ldHJ5LnNldENvbnRlbnRCb3hXaWR0aChlbmNsb3NpbmdC
b3JkZXJCb3hSZWN0LndpZHRoKCkgLSAoYm94R2VvbWV0cnkuaG9yaXpvbnRhbEJvcmRlcigpICsg
Ym94R2VvbWV0cnkuaG9yaXpvbnRhbFBhZGRpbmcoKS52YWx1ZV9vcigwX2x1KSkpOwotICAgICAg
ICB9Ci0gICAgfTsKLSAgICB1cGRhdGVCb3hHZW9tZXRyeUZvcklubGluZUJveGVzKCk7Ci0gICAg
CisgICAgSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyKHJvb3QoKSwgZm9ybWF0dGluZ1N0YXRl
KS5idWlsZChsaW5lQ29udGVudCwgZm9ybWF0dGluZ1N0YXRlLmxpbmVCb3hlcygpLmxhc3QoKSwg
bGluZUJveExvZ2ljYWxSZWN0LnRvcExlZnQoKSwgY3VycmVudExpbmVJbmRleCk7CiAgICAgcmV0
dXJuIGxpbmVCb3hMb2dpY2FsUmVjdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQu
aCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGlu
ZUZvcm1hdHRpbmdDb250ZXh0LmgKaW5kZXggOTU1YjQ1OWRmZGIzMmRjNzVlMTIwZGJhY2NjMzFh
OTQwMTI2MGZjNi4uYjI3MGMxODEyZGM2NGE1MjM5ZDRmZmEzZDA1OWQ1ODQ5MGRiYjMwMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oCkBAIC03Miw3
ICs3Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21wdXRlV2lkdGhBbmRNYXJnaW4oY29uc3Qg
Qm94JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJik7CiAKICAgICB2b2lkIGNvbGxlY3RD
b250ZW50SWZOZWVkZWQoKTsKLSAgICBJbmxpbmVSZWN0IGNvbXB1dGVHZW9tZXRyeUZvckxpbmVD
b250ZW50KGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lQ29udGVudCYsIGNvbnN0IEhvcml6b250YWxD
b25zdHJhaW50cyYpOworICAgIElubGluZVJlY3QgY29tcHV0ZUdlb21ldHJ5Rm9yTGluZUNvbnRl
bnQoY29uc3QgTGluZUJ1aWxkZXI6OkxpbmVDb250ZW50Jik7CiAgICAgdm9pZCBpbnZhbGlkYXRl
Rm9ybWF0dGluZ1N0YXRlKGNvbnN0IEludmFsaWRhdGlvblN0YXRlJik7CiAKICAgICBjb25zdCBJ
bmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkgbV9pbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9J
bmxpbmVMZXZlbEJveC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9pbmxpbmUvSW5saW5lTGV2ZWxCb3guaAppbmRleCA4ODZjYTFmOGVlYzQ3NDRkMzRhOThlY2E1
N2MwMDgwYjAxM2M4ODlhLi4yYTI5NTY0MDg3YWEyYjBjM2Q1ZTA5N2E4ZTQxMmEwMjJkOWYzY2Vk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lu
bGluZS9JbmxpbmVMZXZlbEJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxldmVsQm94LmgKQEAgLTQxLDcgKzQxLDggQEAgY2xh
c3MgTGluZUJveFZlcnRpY2FsQWxpZ25lcjsKIAogY2xhc3MgSW5saW5lTGV2ZWxCb3ggewogcHVi
bGljOgotICAgIHN0YXRpYyBJbmxpbmVMZXZlbEJveCBjcmVhdGVJbmxpbmVCb3goY29uc3QgQm94
JiwgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCwgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2Fs
V2lkdGgpOworICAgIGVudW0gY2xhc3MgTGluZVNwYW5uaW5nSW5saW5lQm94IHsgWWVzLCBObyB9
OworICAgIHN0YXRpYyBJbmxpbmVMZXZlbEJveCBjcmVhdGVJbmxpbmVCb3goY29uc3QgQm94Jiwg
SW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCwgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsV2lk
dGgsIExpbmVTcGFubmluZ0lubGluZUJveCA9IExpbmVTcGFubmluZ0lubGluZUJveDo6Tm8pOwog
ICAgIHN0YXRpYyBJbmxpbmVMZXZlbEJveCBjcmVhdGVBdG9taWNJbmxpbmVMZXZlbEJveChjb25z
dCBCb3gmLCBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0LCBJbmxpbmVMYXlvdXRTaXplKTsK
ICAgICBzdGF0aWMgSW5saW5lTGV2ZWxCb3ggY3JlYXRlTGluZUJyZWFrQm94KGNvbnN0IEJveCYs
IElubGluZUxheW91dFVuaXQgbG9naWNhbExlZnQpOwogICAgIHN0YXRpYyBJbmxpbmVMZXZlbEJv
eCBjcmVhdGVHZW5lcmljSW5saW5lTGV2ZWxCb3goY29uc3QgQm94JiwgSW5saW5lTGF5b3V0VW5p
dCBsb2dpY2FsTGVmdCk7CkBAIC02NSwxNCArNjYsMTYgQEAgcHVibGljOgogICAgIGNvbnN0IEJv
eCYgbGF5b3V0Qm94KCkgY29uc3QgeyByZXR1cm4gKm1fbGF5b3V0Qm94OyB9CiAgICAgY29uc3Qg
UmVuZGVyU3R5bGUmIHN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9sYXlvdXRCb3gtPnN0eWxlKCk7
IH0KIAotICAgIGJvb2wgaXNJbmxpbmVCb3goKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gVHlw
ZTo6SW5saW5lQm94IHx8IG1fdHlwZSA9PSBUeXBlOjpSb290SW5saW5lQm94OyB9CisgICAgYm9v
bCBpc0lubGluZUJveCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBUeXBlOjpJbmxpbmVCb3gg
fHwgaXNSb290SW5saW5lQm94KCkgfHwgaXNMaW5lU3Bhbm5pbmdJbmxpbmVCb3goKTsgfQogICAg
IGJvb2wgaXNSb290SW5saW5lQm94KCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IFR5cGU6OlJv
b3RJbmxpbmVCb3g7IH0KKyAgICBib29sIGlzTGluZVNwYW5uaW5nSW5saW5lQm94KCkgY29uc3Qg
eyByZXR1cm4gbV90eXBlID09IFR5cGU6OkxpbmVTcGFubmluZ0lubGluZUJveDsgfQogICAgIGJv
b2wgaXNBdG9taWNJbmxpbmVMZXZlbEJveCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBUeXBl
OjpBdG9taWNJbmxpbmVMZXZlbEJveDsgfQogICAgIGJvb2wgaXNMaW5lQnJlYWtCb3goKSBjb25z
dCB7IHJldHVybiBtX3R5cGUgPT0gVHlwZTo6TGluZUJyZWFrQm94OyB9CiAgICAgYm9vbCBoYXNM
aW5lQm94UmVsYXRpdmVBbGlnbm1lbnQoKSBjb25zdDsKIAogICAgIGVudW0gY2xhc3MgVHlwZSA6
IHVpbnQ4X3QgewogICAgICAgICBJbmxpbmVCb3ggICAgICAgICAgICAgPSAxIDw8IDAsCisgICAg
ICAgIExpbmVTcGFubmluZ0lubGluZUJveCA9IDEgPDwgMSwKICAgICAgICAgUm9vdElubGluZUJv
eCAgICAgICAgID0gMSA8PCAxLAogICAgICAgICBBdG9taWNJbmxpbmVMZXZlbEJveCAgPSAxIDw8
IDIsCiAgICAgICAgIExpbmVCcmVha0JveCAgICAgICAgICA9IDEgPDwgMywKQEAgLTEzOCw5ICsx
NDEsOSBAQCBpbmxpbmUgSW5saW5lTGV2ZWxCb3ggSW5saW5lTGV2ZWxCb3g6OmNyZWF0ZUF0b21p
Y0lubGluZUxldmVsQm94KGNvbnN0IEJveCYgbGF5bwogICAgIHJldHVybiBJbmxpbmVMZXZlbEJv
eCB7IGxheW91dEJveCwgbG9naWNhbExlZnQsIGxvZ2ljYWxTaXplLCBUeXBlOjpBdG9taWNJbmxp
bmVMZXZlbEJveCB9OwogfQogCi1pbmxpbmUgSW5saW5lTGV2ZWxCb3ggSW5saW5lTGV2ZWxCb3g6
OmNyZWF0ZUlubGluZUJveChjb25zdCBCb3gmIGxheW91dEJveCwgSW5saW5lTGF5b3V0VW5pdCBs
b2dpY2FsTGVmdCwgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgpCitpbmxpbmUgSW5saW5l
TGV2ZWxCb3ggSW5saW5lTGV2ZWxCb3g6OmNyZWF0ZUlubGluZUJveChjb25zdCBCb3gmIGxheW91
dEJveCwgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCwgSW5saW5lTGF5b3V0VW5pdCBsb2dp
Y2FsV2lkdGgsIExpbmVTcGFubmluZ0lubGluZUJveCBpc0xpbmVTcGFubmluZykKIHsKLSAgICBy
ZXR1cm4gSW5saW5lTGV2ZWxCb3ggeyBsYXlvdXRCb3gsIGxvZ2ljYWxMZWZ0LCBJbmxpbmVMYXlv
dXRTaXplIHsgbG9naWNhbFdpZHRoLCB7IH0gfSwgVHlwZTo6SW5saW5lQm94IH07CisgICAgcmV0
dXJuIElubGluZUxldmVsQm94IHsgbGF5b3V0Qm94LCBsb2dpY2FsTGVmdCwgSW5saW5lTGF5b3V0
U2l6ZSB7IGxvZ2ljYWxXaWR0aCwgeyB9IH0sIGlzTGluZVNwYW5uaW5nID09IExpbmVTcGFubmlu
Z0lubGluZUJveDo6WWVzID8gVHlwZTo6TGluZVNwYW5uaW5nSW5saW5lQm94IDogVHlwZTo6SW5s
aW5lQm94IH07CiB9CiAKIGlubGluZSBJbmxpbmVMZXZlbEJveCBJbmxpbmVMZXZlbEJveDo6Y3Jl
YXRlTGluZUJyZWFrQm94KGNvbnN0IEJveCYgbGF5b3V0Qm94LCBJbmxpbmVMYXlvdXRVbml0IGxv
Z2ljYWxMZWZ0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5oCmluZGV4IGM1Y2JhYmYxNjliMWU0Yjdi
MzM0MmNhNDA2OTA2NjY0OTVhYjhiM2EuLjM2YWU3N2ZiMTA0OTQ4YzdjZTEzYzNkYWZlYTEzZmIy
ZjkzYWFjZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL0lubGluZUxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lLmgKQEAgLTY4LDYgKzY4LDcgQEAgcHVi
bGljOgogICAgICAgICBib29sIGlzV29yZEJyZWFrT3Bwb3J0dW5pdHkoKSBjb25zdCB7IHJldHVy
biBtX3R5cGUgPT0gSW5saW5lSXRlbTo6VHlwZTo6V29yZEJyZWFrT3Bwb3J0dW5pdHk7IH0KICAg
ICAgICAgYm9vbCBpc0lubGluZUJveFN0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IElu
bGluZUl0ZW06OlR5cGU6OklubGluZUJveFN0YXJ0OyB9CiAgICAgICAgIGJvb2wgaXNJbmxpbmVC
b3hFbmQoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gSW5saW5lSXRlbTo6VHlwZTo6SW5saW5l
Qm94RW5kOyB9CisgICAgICAgIGF1dG8gdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQog
CiAgICAgICAgIGNvbnN0IEJveCYgbGF5b3V0Qm94KCkgY29uc3QgeyByZXR1cm4gKm1fbGF5b3V0
Qm94OyB9CiAgICAgICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbGF5b3V0Qm94LT5zdHlsZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94QnVpbGRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5l
Qm94QnVpbGRlci5jcHAKaW5kZXggOGE4ODFhNmM0NjZjOGI1Njk3MGM0ODBjMDQ4M2FhNzc2YTA0
ZjlhMy4uNmNjNTJjMTFkM2Y0OTQ2MzEzNDFkYTVkOGEzMjZjOGYyZGY0YmM2YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5l
TGluZUJveEJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hCdWlsZGVyLmNwcApAQCAtMjYsNyArMjYsMTAg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJbmxpbmVMaW5lQm94QnVpbGRlci5o
IgogCisjaW5jbHVkZSAiSW5saW5lTGluZUJveFZlcnRpY2FsQWxpZ25lci5oIgogI2luY2x1ZGUg
IklubGluZUxpbmVCdWlsZGVyLmgiCisjaW5jbHVkZSAiTGF5b3V0Qm94R2VvbWV0cnkuaCIKKyNp
bmNsdWRlICJMYXlvdXRSZXBsYWNlZEJveC5oIgogCiAjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRU
SU5HX0NPTlRFWFQpCiAKQEAgLTE5MSw3ICsxOTQsNyBAQCBJbmxpbmVMYXlvdXRVbml0IExpbmVC
b3hCdWlsZGVyOjpjb25zdHJ1Y3RBbmRBbGlnbklubGluZUxldmVsQm94ZXMoTGluZUJveCYgbGlu
ZQogICAgICAgICBjYW5Vc2VTaW1wbGlmaWVkQWxpZ25tZW50ID0gTGluZUJveFZlcnRpY2FsQWxp
Z25lcjo6Y2FuVXNlU2ltcGxpZmllZEFsaWdubWVudEZvcklubGluZUxldmVsQm94KHJvb3RJbmxp
bmVCb3gsIGlubGluZUxldmVsQm94LCBib3hHZW9tZXRyeSk7CiAgICAgfTsKIAotICAgIGF1dG8g
Y3JlYXRlV3JhcHBlZElubGluZUJveGVzID0gWyZdIHsKKyAgICBhdXRvIGNyZWF0ZUxpbmVTcGFu
bmluZ0lubGluZUJveGVzID0gWyZdIHsKICAgICAgICAgaWYgKHJ1bnMuaXNFbXB0eSgpKQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAvLyBBbiBpbmxpbmUgYm94IG1heSBub3QgbmVjZXNz
YXJpbHkgc3RhcnQgb24gdGhlIGN1cnJlbnQgbGluZToKQEAgLTIyMCwxMyArMjIzLDEzIEBAIElu
bGluZUxheW91dFVuaXQgTGluZUJveEJ1aWxkZXI6OmNvbnN0cnVjdEFuZEFsaWduSW5saW5lTGV2
ZWxCb3hlcyhMaW5lQm94JiBsaW5lCiAgICAgICAgIH0KICAgICAgICAgLy8gQ29uc3RydWN0IHRo
ZSBtaXNzaW5nIExpbmVCb3g6OklubGluZUJveGVzIHN0YXJ0aW5nIHdpdGggdGhlIHRvcG1vc3Qg
bGF5b3V0IGJveC4KICAgICAgICAgZm9yIChhdXRvKiBsYXlvdXRCb3ggOiBXVEY6Om1ha2VSZXZl
cnNlZFJhbmdlKGxheW91dEJveGVzV2l0aG91dElubGluZUJveGVzKSkgewotICAgICAgICAgICAg
YXV0byBpbmxpbmVCb3ggPSBJbmxpbmVMZXZlbEJveDo6Y3JlYXRlSW5saW5lQm94KCpsYXlvdXRC
b3gsIHJvb3RJbmxpbmVCb3gubG9naWNhbExlZnQoKSwgcm9vdElubGluZUJveC5sb2dpY2FsV2lk
dGgoKSk7CisgICAgICAgICAgICBhdXRvIGlubGluZUJveCA9IElubGluZUxldmVsQm94OjpjcmVh
dGVJbmxpbmVCb3goKmxheW91dEJveCwgcm9vdElubGluZUJveC5sb2dpY2FsTGVmdCgpLCByb290
SW5saW5lQm94LmxvZ2ljYWxXaWR0aCgpLCBJbmxpbmVMZXZlbEJveDo6TGluZVNwYW5uaW5nSW5s
aW5lQm94OjpZZXMpOwogICAgICAgICAgICAgc2V0VmVydGljYWxHZW9tZXRyeUZvcklubGluZUJv
eChpbmxpbmVCb3gpOwogICAgICAgICAgICAgdXBkYXRlQ2FuVXNlU2ltcGxpZmllZEFsaWdubWVu
dChpbmxpbmVCb3gpOwogICAgICAgICAgICAgbGluZUJveC5hZGRJbmxpbmVMZXZlbEJveChXVEZN
b3ZlKGlubGluZUJveCkpOwogICAgICAgICB9CiAgICAgfTsKLSAgICBjcmVhdGVXcmFwcGVkSW5s
aW5lQm94ZXMoKTsKKyAgICBjcmVhdGVMaW5lU3Bhbm5pbmdJbmxpbmVCb3hlcygpOwogCiAgICAg
YXV0byBsaW5lSGFzQ29udGVudCA9IGZhbHNlOwogICAgIGZvciAoYXV0byYgcnVuIDogcnVucykg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvSW5saW5lTGluZUJveEJ1aWxkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hCdWlsZGVyLmgKaW5kZXggZWY2ODU3
ZDhmMzhhNTE3MGIzMjYwZWI1NWZiYzkxNzU5NjQ0MzRhZS4uYTAzOGU0ZDZiMGQyYzRmOWUzYjNl
NzI3NzEwNmE3M2YxZTZiZmQwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveEJ1aWxkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94
QnVpbGRlci5oCkBAIC0yNyw3ICsyNyw5IEBACiAKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJ
TkdfQ09OVEVYVCkKIAorI2luY2x1ZGUgIklubGluZUZvcm1hdHRpbmdDb250ZXh0LmgiCiAjaW5j
bHVkZSAiSW5saW5lTGluZUJveC5oIgorI2luY2x1ZGUgIklubGluZUxpbmVCdWlsZGVyLmgiCiAj
aW5jbHVkZSAiSW5saW5lTGluZUdlb21ldHJ5LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTM1LDcgKzM3LDYgQEAgbmFtZXNwYWNlIExheW91dCB7CiAKIGNsYXNzIEJveDsKIGNsYXNzIENv
bnRhaW5lckJveDsKLWNsYXNzIElubGluZUZvcm1hdHRpbmdDb250ZXh0OwogY2xhc3MgTGF5b3V0
U3RhdGU7CiAKIGNsYXNzIExpbmVCb3hCdWlsZGVyIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbklubGluZUNvbnRlbnRCdWls
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3Jh
dGlvbklubGluZUNvbnRlbnRCdWlsZGVyLmNwcAppbmRleCBlZTViNzQyM2QyMDkzZDBkMzNjMTMx
NmFkY2RhZDExNWNmYTg2ZTdiLi41ZTE4OGMxNzJkODU2NDJjZjA1MTIxNDkzNDA1MGQ3ZDljMTRm
YTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0
SW50ZWdyYXRpb25JbmxpbmVDb250ZW50QnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uSW5saW5lQ29udGVudEJ1aWxkZXIu
Y3BwCkBAIC01NSw3ICs1NSw3IEBAIGlubGluZSBMYXlvdXQ6OkxpbmVHZW9tZXRyeTo6RW5jbG9z
aW5nVG9wQW5kQm90dG9tIG9wZXJhdG9yKyhjb25zdCBMYXlvdXQ6OkxpbmVHCiAgICAgcmV0dXJu
IHsgZW5jbG9zaW5nVG9wQW5kQm90dG9tLnRvcCArIG9mZnNldCwgZW5jbG9zaW5nVG9wQW5kQm90
dG9tLmJvdHRvbSArIG9mZnNldCB9OwogfQogCi1pbmxpbmUgc3RhdGljIGZsb2F0IGxpbmVPdmVy
Zmxvd1dpZHRoKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgZmxvdywgSW5saW5lTGF5b3V0VW5pdCBs
aW5lQm94TG9naWNhbFdpZHRoLCBJbmxpbmVMYXlvdXRVbml0IGxpbmVDb250ZW50TG9naWNhbFdp
ZHRoKQoraW5saW5lIHN0YXRpYyBmbG9hdCBsaW5lT3ZlcmZsb3dXaWR0aChjb25zdCBSZW5kZXJC
bG9ja0Zsb3cmIGZsb3csIExheW91dDo6SW5saW5lTGF5b3V0VW5pdCBsaW5lQm94TG9naWNhbFdp
ZHRoLCBMYXlvdXQ6OklubGluZUxheW91dFVuaXQgbGluZUNvbnRlbnRMb2dpY2FsV2lkdGgpCiB7
CiAgICAgLy8gRklYTUU6IEl0J3MgdGhlIGNvcHkgb2YgdGhlIGxldHMtYWRqdXN0LW92ZXJmbG93
LWZvci10aGUtY2FyZXQgYmVoYXZpb3IgZnJvbSBMZWdhY3lMaW5lTGF5b3V0OjphZGRPdmVyZmxv
d0Zyb21JbmxpbmVDaGlsZHJlbi4KICAgICBhdXRvIGVuZFBhZGRpbmcgPSBmbG93Lmhhc05vblZp
c2libGVPdmVyZmxvdygpID8gZmxvdy5wYWRkaW5nRW5kKCkgOiAwX2x1OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW4u
aAppbmRleCAxODkwODg3ZWIyYzAyNTBkMzg5YjY2Nzk1ZGMyZjc3YmEzMTJmNWY0Li42ODA4ZTQy
ZDY3Y2Q0NTIwZGMxYWIxNzNhNTZiZDg0N2U5ZWViYjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW4uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW4uaApAQCAt
NzMsNyArNzMsNyBAQCBzdHJ1Y3QgUnVuIHsKIAogICAgIHN0cnVjdCBFeHBhbnNpb24gewogICAg
ICAgICBFeHBhbnNpb25CZWhhdmlvciBiZWhhdmlvciB7IERlZmF1bHRFeHBhbnNpb24gfTsKLSAg
ICAgICAgSW5saW5lTGF5b3V0VW5pdCBob3Jpem9udGFsRXhwYW5zaW9uIHsgMCB9OworICAgICAg
ICBMYXlvdXQ6OklubGluZUxheW91dFVuaXQgaG9yaXpvbnRhbEV4cGFuc2lvbiB7IDAgfTsKICAg
ICB9OwogICAgIEV4cGFuc2lvbiBleHBhbnNpb24oKSBjb25zdCB7IHJldHVybiBtX2V4cGFuc2lv
bjsgfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436700</attachid>
            <date>2021-08-27 19:29:01 -0700</date>
            <delta_ts>2021-08-27 21:18:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229631-20210827192900.patch</filename>
            <type>text/plain</type>
            <size>43839</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNzI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTgwMTU2NTA4NWU3NDZi
MDAzOWE5OGJjYjhkODE3NGIzYjBlYmE5Zi4uZjkyNjE2MGRmYWE2ZjA2NzZkY2E5MWE2YTBiOWY5
M2ZkZWEzMTdkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDIxLTA4LTI3ICBBbGFu
IEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbTEZDXVtJRkNdIE1vdmUgY29u
dGVudCBidWlsZGVyIGZ1bmN0aW9uYWxpdHkgdG8gYSBkZWRpY2F0ZWQgY2xhc3MKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTYzMQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIExldCdzIHVzZSBhIGRlZGlj
YXRlZCBjbGFzcyBmb3IgY29uc3RydWN0aW5nIHRoZSBmaW5hbCBsaW5lIHJ1bnMuIFRoaXMgaXMg
YWxzbyBnb2luZyB0byBiZSB1c2VkCisgICAgICAgIGZvciBjb21wdXRpbmcgb3ZlcmZsb3cgYW5k
IG90aGVyICJkaXNwbGF5IiB0eXBlIG9mIHZhbHVlIG9uY2UgaXQncyBtZXJnZWQgd2l0aCBMYXlv
dXRJbnRlZ3JhdGlvbjo6SW5saW5lQ29udGVudEJ1aWxkZXIuCisKKyAgICAgICAgKiBTb3VyY2Vz
LnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogbGF5b3V0L0xheW91dFVuaXRzLmg6CisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9pbmxpbmUvSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6SW5s
aW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5s
aW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyOjpidWlsZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OklubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6Y3JlYXRlUnVuc0FuZFVwZGF0ZUdlb21l
dHJ5Rm9yTGluZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVEaXNw
bGF5Q29udGVudEJ1aWxkZXI6OmNyZWF0ZVJ1bnNBbmRVcGRhdGVHZW9tZXRyeUZvckxpbmVTcGFu
bmluZ0lubGluZUJveGVzKToKKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lu
bGluZS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveEJ1aWxk
ZXIuaC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRGlzcGxheUNvbnRlbnRCdWls
ZGVyOjpyb290IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRGlzcGxh
eUNvbnRlbnRCdWlsZGVyOjpmb3JtYXR0aW5nU3RhdGUgY29uc3QpOgorICAgICAgICAqIGxheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxpbmVM
YXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4
dDo6Y29tcHV0ZUdlb21ldHJ5Rm9yTGluZUNvbnRlbnQpOgorICAgICAgICAqIGxheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0Lmg6CisgICAgICAg
ICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGV2ZWxCb3guaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lTGV2ZWxCb3g6OmlzSW5saW5lQm94IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lTGV2ZWxCb3g6OmlzTGluZVNwYW5u
aW5nSW5saW5lQm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lTGV2
ZWxCb3g6OmNyZWF0ZUlubGluZUJveCk6CisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5l
OjpSdW46OnR5cGUgY29uc3QpOgorICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL0lubGluZUxpbmVCb3hCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6TGluZUJveEJ1aWxkZXI6OmNvbnN0cnVjdEFuZEFsaWduSW5saW5lTGV2ZWxCb3hlcyk6Cisg
ICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveEJ1
aWxkZXIuaDoKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25J
bmxpbmVDb250ZW50QnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3Jh
dGlvbjo6bGluZU92ZXJmbG93V2lkdGgpOgorICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9M
YXlvdXRJbnRlZ3JhdGlvblJ1bi5oOgorCiAyMDIxLTA4LTI3ICBTaW1vbiBGcmFzZXIgIDxzaW1v
bi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIERlZmluZSBFTkFCTEVfQ09OVEVOVF9DSEFO
R0VfT0JTRVJWRVIgZm9yIElPU19GQU1JTFkgYW5kIHVzZSBpdCB0byB3cmFwIGNvbnRlbnQgb2Jz
ZXJ2YXRpb24gY29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBmNDBkNDhiZTA2MTdmOWYyNGQzMTdiMWQz
NTNkMGE3NDhmNjNmZWNlLi43ZTVjMTZiOWI5ODMwYWJmMTFjMjZkOTRhNmFjMGU1NTAzYWFmYzNm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dApAQCAtMTQ1Miw2ICsxNDUyLDcgQEAgbGF5b3V0L2Zsb2F0cy9GbG9h
dEF2b2lkZXIuY3BwCiBsYXlvdXQvZmxvYXRzL0Zsb2F0aW5nQ29udGV4dC5jcHAKIGxheW91dC9m
bG9hdHMvRmxvYXRpbmdTdGF0ZS5jcHAKIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L0lubGluZUNvbnRlbnRCcmVha2VyLmNwcAorbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmNwcAogbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCiBsYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuY3BwCiBsYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nUXVpcmtzLmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDE2
ZmEwM2M2YWUxMmNiNzFiYTU3ZDJjZTZiYzVhYzRhODM5ZWJkYWYuLmJkZWNiMWQ1YTA1YjhlZjQx
YmU5MDhiMTgxNDAxMmY1ZDY4OTE5OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM5OSw2ICszOTksNyBAQAogCQkxMTMxMENG
NjIwQkE0QTU2MDA2NUE4RDAgLyogTGF5b3V0Q2hpbGRJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTExMDBGQzkyMDkyN0NCQzAwODFBQTZD
IC8qIExheW91dENoaWxkSXRlcmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkxMTM0MDlEQTIwM0UwMzgwMDBDNjY5MTUgLyogUmVuZGVyVHJl
ZUJ1aWxkZXJDb250aW51YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDExMzQwOUQ4MjAzRTAzODAwMEM2NjkxNSAvKiBSZW5kZXJUcmVlQnVpbGRl
ckNvbnRpbnVhdGlvbi5oICovOyB9OwogCQkxMTNEMEI1MjFGOUZERDJCMDBGNjExQkIgLyogRnJh
bWVWaWV3TGF5b3V0Q29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMTEzRDBCNTAxRjlGREQyQjAwRjYxMUJCIC8qIEZyYW1lVmlld0xheW91dENv
bnRleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQkxMTUxM0QwMzI2RDk4MUU4MDA0RDNGQUEgLyogSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxMTUxM0Qw
MjI2RDk4MUU3MDA0RDNGQUEgLyogSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTE1Q0ZBNkEyMDhB
RjdEMDAwMUU2OTkxIC8qIEZvcm1hdHRpbmdDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxMTVDRkE2ODIwOEFGN0QwMDAxRTY5OTEgLyogRm9y
bWF0dGluZ0NvbnRleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkxMTVDRkE2RTIwOEFGQUI3MDAxRTY5OTEgLyogQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTE1
Q0ZBNkMyMDhBRkFCNjAwMUU2OTkxIC8qIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxMTVDRkE3NjIwOEFG
RTMwMDAxRTY5OTEgLyogRm9ybWF0dGluZ1N0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxMTVDRkE3NDIwOEFGRTMwMDAxRTY5OTEgLyogRm9ybWF0
dGluZ1N0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKQEAgLTY0MTMsNiArNjQxNCw4IEBACiAJCTExMzQwOUQ4MjAzRTAzODAwMEM2NjkxNSAvKiBS
ZW5kZXJUcmVlQnVpbGRlckNvbnRpbnVhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJUcmVl
QnVpbGRlckNvbnRpbnVhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxMTNE
MEI0RjFGOUZERDJCMDBGNjExQkIgLyogRnJhbWVWaWV3TGF5b3V0Q29udGV4dC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBGcmFtZVZpZXdMYXlvdXRDb250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMTEzRDBCNTAxRjlGREQyQjAwRjYxMUJCIC8qIEZyYW1lVmlld0xheW91
dENvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnJhbWVWaWV3TGF5b3V0Q29udGV4dC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxMTUxM0QwMDI2RDk4MUREMDA0RDNGQUEgLyogSW5s
aW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElubGluZURp
c3BsYXlDb250ZW50QnVpbGRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTEx
NTEzRDAyMjZEOTgxRTcwMDREM0ZBQSAvKiBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5saW5lRGlzcGxheUNvbnRlbnRCdWls
ZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTExNUNBODMwMjMzMjhCMUUwMEZE
M0IwOCAvKiBMYXlvdXRVbml0cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMYXlvdXRVbml0cy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTExNUNGQTY4MjA4QUY3RDAwMDFFNjk5
MSAvKiBGb3JtYXR0aW5nQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb3JtYXR0aW5nQ29udGV4
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxMTVDRkE2OTIwOEFGN0QwMDAxRTY5
OTEgLyogRm9ybWF0dGluZ0NvbnRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9ybWF0dGlu
Z0NvbnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTgwMzMsNiArMTgw
MzYsOCBAQAogCQkJCTZGRTdEREREMjBFQzZFOEIwMDhCNUI0RSAvKiB0ZXh0ICovLAogCQkJCTZG
RTE5ODEzMjE3ODM5N0IwMDQ0NkYwOCAvKiBJbmxpbmVDb250ZW50QnJlYWtlci5jcHAgKi8sCiAJ
CQkJNkZFMTk4MTUyMTc4Mzk3QzAwNDQ2RjA4IC8qIElubGluZUNvbnRlbnRCcmVha2VyLmggKi8s
CisJCQkJMTE1MTNEMDAyNkQ5ODFERDAwNEQzRkFBIC8qIElubGluZURpc3BsYXlDb250ZW50QnVp
bGRlci5jcHAgKi8sCisJCQkJMTE1MTNEMDIyNkQ5ODFFNzAwNEQzRkFBIC8qIElubGluZURpc3Bs
YXlDb250ZW50QnVpbGRlci5oICovLAogCQkJCTZGN0NBM0M5MjA4QzJCMkUwMDJGMjlBQiAvKiBJ
bmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAgKi8sCiAJCQkJNkY3Q0EzQzgyMDhDMkIyRTAwMkYy
OUFCIC8qIElubGluZUZvcm1hdHRpbmdDb250ZXh0LmggKi8sCiAJCQkJNkYzNUVGQUYyMTg3Q0JE
NTAwNDRFMEY0IC8qIElubGluZUZvcm1hdHRpbmdHZW9tZXRyeS5jcHAgKi8sCkBAIC0zMjQzNCw2
ICszMjQzOSw3IEBACiAJCQkJQ0QwNjNGODMxRTIzRkE4OTAwODEyQkUzIC8qIEluaXREYXRhUmVn
aXN0cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzMDU5MjY0MUUyN0EzQUQwMEQ1N0M5OCAvKiBJ
bmxpbmVDbGFzc2ljU2NyaXB0LmggaW4gSGVhZGVycyAqLywKIAkJCQk2RkUxOTgxNzIxNzgzOTdD
MDA0NDZGMDggLyogSW5saW5lQ29udGVudEJyZWFrZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTEx
NTEzRDAzMjZEOTgxRTgwMDREM0ZBQSAvKiBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTZGN0NBM0NBMjA4QzJCMkUwMDJGMjlBQiAvKiBJbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDdDNEQ1N0QyNjUwOEJDQjAwQzdB
QjFGIC8qIElubGluZUZvcm1hdHRpbmdHZW9tZXRyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkZF
NjM2RTgyNjQ3OTYyOTAwRjA5NTFFIC8qIElubGluZUZvcm1hdHRpbmdRdWlya3MuaCBpbiBIZWFk
ZXJzICovLApAQCAtMzI0NDMsNiArMzI0NDksNyBAQAogCQkJCTZGQUFFNzEzMjZBMjgxNEIwMEUw
NzUwMiAvKiBJbmxpbmVMZXZlbEJveC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkYwQ0Q2OTUyMjlF
RDMyNzAwQzU5OTRFIC8qIElubGluZUxpbmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTZGQjI0MDA1
MjNERkYxMjgwMDc5NjQ1OCAvKiBJbmxpbmVMaW5lQm94LmggaW4gSGVhZGVycyAqLywKKwkJCQkx
MUMzMjI3RDI2RDk1OENFMDAzMjhGNEQgLyogSW5saW5lTGluZUJveEJ1aWxkZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTZGNkVFNzQzMjZENDRFRTMwMDM3NENEQSAvKiBJbmxpbmVMaW5lQm94VmVy
dGljYWxBbGlnbmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk2RjI2RUI0ODIzNDAwNEE1MDA2OTA2
RTIgLyogSW5saW5lTGluZUJ1aWxkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTZGOTE0MjExMjUx
NTIxMzgwMDRFNEZFQSAvKiBJbmxpbmVMaW5lR2VvbWV0cnkuaCBpbiBIZWFkZXJzICovLApAQCAt
MzMzMDksNyArMzMzMTYsNiBAQAogCQkJCTA3ODQ2MzQzMTQ1QjE1MUEwMEE1OERGMSAvKiBKU1Ry
YWNrRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxN0I0OTIxMTZBOUI4RkYwMDFDODgzOSAv
KiBKU1RyYW5zaXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE3NTBENUQwQTkwREVF
MTAwMEZGMjE1IC8qIEpTVHJlZVdhbGtlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMTFDMzIyN0Qy
NkQ5NThDRTAwMzI4RjREIC8qIElubGluZUxpbmVCb3hCdWlsZGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBODY2MjlDRjA5REEyQjQ3MDA5NjMzQTUgLyogSlNVSUV2ZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQk0NjUzMDdEMDFEQjZFRTQ4MDBFNDEzN0MgLyogSlNVSUV2ZW50SW5pdC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJN0M3M0ZCMTIxOTFFRjZGNDAwN0RFMDYxIC8qIEpTVXNlck1lc3NhZ2VI
YW5kbGVyLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9MYXlvdXRVbml0cy5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFVuaXRzLmgKaW5k
ZXggNDg1ZTRkNTNjMDU5NDA0ZGE3YTRhMjY1ZTk5ZWI3YzE3NDkxYzg1Zi4uOGJhOWNkN2FjNWJi
ZmM1YmUzZDMxMGM0YzI5OTU0MzhkYWQ3M2ZhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L0xheW91dFVuaXRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFVu
aXRzLmgKQEAgLTM2LDYgKzM2LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCituYW1lc3Bh
Y2UgTGF5b3V0IHsKKwogI2RlZmluZSBVU0VfRkxPQVRfQVNfSU5MSU5FX0xBWU9VVF9VTklUIDEK
IAogI2lmIFVTRV9GTE9BVF9BU19JTkxJTkVfTEFZT1VUX1VOSVQKQEAgLTUwLDggKzUyLDYgQEAg
dXNpbmcgSW5saW5lTGF5b3V0U2l6ZSA9IExheW91dFNpemU7CiB1c2luZyBJbmxpbmVMYXlvdXRS
ZWN0ID0gTGF5b3V0UmVjdDsKICNlbmRpZgogCi1uYW1lc3BhY2UgTGF5b3V0IHsKLQogc3RydWN0
IFBvc2l0aW9uIHsKICAgICBvcGVyYXRvciBMYXlvdXRVbml0KCkgY29uc3QgeyByZXR1cm4gdmFs
dWU7IH0KICAgICBMYXlvdXRVbml0IHZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRGlzcGxheUNvbnRlbnRCdWls
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjc0NDY5MTYyMTlk
YWM5NDI3Mzg1NjZhNWY2ODNhZDNkMzM2ZDk3NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZURpc3BsYXlDb250
ZW50QnVpbGRlci5jcHAKQEAgLTAsMCArMSwxNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmgiCisKKyNp
ZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKKworI2luY2x1ZGUgIkxheW91dEJv
eEdlb21ldHJ5LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBMYXlvdXQgewor
CisKK0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6SW5saW5lRGlzcGxheUNvbnRlbnRCdWls
ZGVyKGNvbnN0IENvbnRhaW5lckJveCYgZm9ybWF0dGluZ0NvbnRleHRSb290LCBJbmxpbmVGb3Jt
YXR0aW5nU3RhdGUmIGZvcm1hdHRpbmdTdGF0ZSkKKyAgICA6IG1fZm9ybWF0dGluZ0NvbnRleHRS
b290KGZvcm1hdHRpbmdDb250ZXh0Um9vdCkKKyAgICAsIG1fZm9ybWF0dGluZ1N0YXRlKGZvcm1h
dHRpbmdTdGF0ZSkKK3sKKworfQorCit2b2lkIElubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6
YnVpbGQoY29uc3QgTGluZUJ1aWxkZXI6OkxpbmVDb250ZW50JiBsaW5lQ29udGVudCwgY29uc3Qg
TGluZUJveCYgbGluZUJveCwgY29uc3QgSW5saW5lTGF5b3V0UG9pbnQmIGxpbmVCb3hMb2dpY2Fs
VG9wTGVmdCwgY29uc3Qgc2l6ZV90IGxpbmVJbmRleCkKK3sKKyAgICBhdXRvJiBmb3JtYXR0aW5n
U3RhdGUgPSB0aGlzLT5mb3JtYXR0aW5nU3RhdGUoKTsKKyAgICAvLyBFdmVyeSBsaW5lIHN0YXJ0
cyB3aXRoIGEgcm9vdCBydW4sIGV2ZW4gdGhlIGVtcHR5IG9uZXMuCisgICAgZm9ybWF0dGluZ1N0
YXRlLmFkZExpbmVSdW4oeyBsaW5lSW5kZXgsIExpbmVSdW46OlR5cGU6OlJvb3RJbmxpbmVCb3gs
IHJvb3QoKSwgbGluZUJveC5sb2dpY2FsUmVjdEZvclJvb3RJbmxpbmVCb3goKSwgeyB9LCB7IH0s
ICBsaW5lQm94LnJvb3RJbmxpbmVCb3goKS5oYXNDb250ZW50KCl9KTsKKworICAgIC8vIFNwYW5u
aW5nIGlubGluZSBib3hlcyBzdGFydCBhdCB0aGUgdmVyeSBiZWdpbm5pbmcgb2YgdGhlIGxpbmUu
CisgICAgYXV0byBsaW5lU3Bhbm5pbmdJbmxpbmVCb3hJbmRleCA9IGZvcm1hdHRpbmdTdGF0ZS5s
aW5lUnVucygpLnNpemUoKTsKKyAgICBjcmVhdGVSdW5zQW5kVXBkYXRlR2VvbWV0cnlGb3JMaW5l
Q29udGVudChsaW5lQ29udGVudCwgbGluZUJveCwgbGluZUJveExvZ2ljYWxUb3BMZWZ0LCBsaW5l
SW5kZXgpOworICAgIGNyZWF0ZVJ1bnNBbmRVcGRhdGVHZW9tZXRyeUZvckxpbmVTcGFubmluZ0lu
bGluZUJveGVzKGxpbmVCb3gsIGxpbmVCb3hMb2dpY2FsVG9wTGVmdCwgbGluZUluZGV4LCBsaW5l
U3Bhbm5pbmdJbmxpbmVCb3hJbmRleCk7Cit9CisKK3ZvaWQgSW5saW5lRGlzcGxheUNvbnRlbnRC
dWlsZGVyOjpjcmVhdGVSdW5zQW5kVXBkYXRlR2VvbWV0cnlGb3JMaW5lQ29udGVudChjb25zdCBM
aW5lQnVpbGRlcjo6TGluZUNvbnRlbnQmIGxpbmVDb250ZW50LCBjb25zdCBMaW5lQm94JiBsaW5l
Qm94LCBjb25zdCBJbmxpbmVMYXlvdXRQb2ludCYgbGluZUJveExvZ2ljYWxUb3BMZWZ0LCBjb25z
dCBzaXplX3QgbGluZUluZGV4KQoreworICAgIGF1dG8mIGZvcm1hdHRpbmdTdGF0ZSA9IHRoaXMt
PmZvcm1hdHRpbmdTdGF0ZSgpOworICAgIC8vIENyZWF0ZSB0aGUgaW5saW5lIHJ1bnMgb24gdGhl
IGN1cnJlbnQgbGluZS4gVGhpcyBpcyBtb3N0bHkgdGV4dCBhbmQgYXRvbWljIGlubGluZSBydW5z
LgorICAgIGZvciAoYXV0byYgbGluZVJ1biA6IGxpbmVDb250ZW50LnJ1bnMpIHsKKyAgICAgICAg
YXV0byYgbGF5b3V0Qm94ID0gbGluZVJ1bi5sYXlvdXRCb3goKTsKKyAgICAgICAgc3dpdGNoIChs
aW5lUnVuLnR5cGUoKSkgeworICAgICAgICBjYXNlIElubGluZUl0ZW06OlR5cGU6OlRleHQ6Cisg
ICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkTGluZVJ1bih7IGxpbmVJbmRleCwgTGluZVJ1
bjo6VHlwZTo6VGV4dCwgbGF5b3V0Qm94LCBsaW5lQm94LmxvZ2ljYWxSZWN0Rm9yVGV4dFJ1bihs
aW5lUnVuKSwgbGluZVJ1bi5leHBhbnNpb24oKSwgbGluZVJ1bi50ZXh0Q29udGVudCgpIH0pOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSW5saW5lSXRlbTo6VHlwZTo6U29mdExp
bmVCcmVhazoKKyAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRMaW5lUnVuKHsgbGluZUlu
ZGV4LCBMaW5lUnVuOjpUeXBlOjpTb2Z0TGluZUJyZWFrLCBsYXlvdXRCb3gsIGxpbmVCb3gubG9n
aWNhbFJlY3RGb3JUZXh0UnVuKGxpbmVSdW4pLCBsaW5lUnVuLmV4cGFuc2lvbigpLCBsaW5lUnVu
LnRleHRDb250ZW50KCkgfSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBJbmxp
bmVJdGVtOjpUeXBlOjpIYXJkTGluZUJyZWFrOiB7CisgICAgICAgICAgICAvLyBPbmx5IGhhcmQg
bGluZWJyZWFrcyBoYXZlIGFzc29jaWF0ZWQgbGF5b3V0IGJveGVzLgorICAgICAgICAgICAgYXV0
byBsaW5lQnJlYWtCb3hSZWN0ID0gbGluZUJveC5sb2dpY2FsUmVjdEZvckxpbmVCcmVha0JveChs
YXlvdXRCb3gpOworICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZExpbmVSdW4oeyBsaW5l
SW5kZXgsIExpbmVSdW46OlR5cGU6OkxpbmVCcmVha0JveCwgbGF5b3V0Qm94LCBsaW5lQnJlYWtC
b3hSZWN0LCBsaW5lUnVuLmV4cGFuc2lvbigpLCB7IH0gfSk7CisKKyAgICAgICAgICAgIGF1dG8m
IGJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ1N0YXRlLmJveEdlb21ldHJ5KGxheW91dEJveCk7Cisg
ICAgICAgICAgICBsaW5lQnJlYWtCb3hSZWN0Lm1vdmVCeShsaW5lQm94TG9naWNhbFRvcExlZnQp
OworICAgICAgICAgICAgYm94R2VvbWV0cnkuc2V0TG9naWNhbFRvcExlZnQodG9MYXlvdXRQb2lu
dChsaW5lQnJlYWtCb3hSZWN0LnRvcExlZnQoKSkpOworICAgICAgICAgICAgYm94R2VvbWV0cnku
c2V0Q29udGVudEJveEhlaWdodCh0b0xheW91dFVuaXQobGluZUJyZWFrQm94UmVjdC5oZWlnaHQo
KSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBJbmxpbmVJ
dGVtOjpUeXBlOjpCb3g6IHsKKyAgICAgICAgICAgIEFTU0VSVChsYXlvdXRCb3guaXNBdG9taWNJ
bmxpbmVMZXZlbEJveCgpKTsKKyAgICAgICAgICAgIGF1dG8mIGJveEdlb21ldHJ5ID0gZm9ybWF0
dGluZ1N0YXRlLmJveEdlb21ldHJ5KGxheW91dEJveCk7CisgICAgICAgICAgICBhdXRvIGxvZ2lj
YWxCb3JkZXJCb3ggPSBsaW5lQm94LmxvZ2ljYWxCb3JkZXJCb3hGb3JBdG9taWNJbmxpbmVMZXZl
bEJveChsYXlvdXRCb3gsIGJveEdlb21ldHJ5KTsKKyAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0
ZS5hZGRMaW5lUnVuKHsgbGluZUluZGV4LCBMaW5lUnVuOjpUeXBlOjpBdG9taWNJbmxpbmVMZXZl
bEJveCwgbGF5b3V0Qm94LCBsb2dpY2FsQm9yZGVyQm94LCBsaW5lUnVuLmV4cGFuc2lvbigpLCB7
IH0gfSk7CisKKyAgICAgICAgICAgIGF1dG8gYm9yZGVyQm94TG9naWNhbFRvcExlZnQgPSBsb2dp
Y2FsQm9yZGVyQm94LnRvcExlZnQoKTsKKyAgICAgICAgICAgIC8vIE5vdGUgdGhhdCBpbmxpbmUg
Ym94ZXMgYXJlIHJlbGF0aXZlIHRvIHRoZSBsaW5lIGFuZCB0aGVpciB0b3AgcG9zaXRpb24gY2Fu
IGJlIG5lZ2F0aXZlLgorICAgICAgICAgICAgYm9yZGVyQm94TG9naWNhbFRvcExlZnQubW92ZUJ5
KGxpbmVCb3hMb2dpY2FsVG9wTGVmdCk7CisgICAgICAgICAgICAvLyBBdG9taWMgaW5saW5lIGJv
eGVzIGFyZSBhbGwgc2V0LiBUaGVpciBtYXJnaW4vYm9yZGVyL2NvbnRlbnQgYm94IGdlb21ldHJp
ZXMgYXJlIGFscmVhZHkgY29tcHV0ZWQuIFdlIGp1c3QgaGF2ZSB0byBwb3NpdGlvbiB0aGVtIGhl
cmUuCisgICAgICAgICAgICBib3hHZW9tZXRyeS5zZXRMb2dpY2FsVG9wTGVmdCh0b0xheW91dFBv
aW50KGJvcmRlckJveExvZ2ljYWxUb3BMZWZ0KSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorICAgICAgICBjYXNlIElubGluZUl0ZW06OlR5cGU6OklubGluZUJveFN0YXJ0OiB7Cisg
ICAgICAgICAgICAvLyBUaGlzIGlubGluZSBib3ggc2hvd2VkIHVwIGZpcnN0IG9uIHRoaXMgbGlu
ZS4KKyAgICAgICAgICAgIGF1dG8mIGJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ1N0YXRlLmJveEdl
b21ldHJ5KGxheW91dEJveCk7CisgICAgICAgICAgICBhdXRvIGlubGluZUJveEJvcmRlckJveCA9
IGxpbmVCb3gubG9naWNhbEJvcmRlckJveEZvcklubGluZUJveChsYXlvdXRCb3gsIGJveEdlb21l
dHJ5KTsKKyAgICAgICAgICAgIGlmIChsaW5lQm94Lmhhc0NvbnRlbnQoKSkgeworICAgICAgICAg
ICAgICAgIC8vIEZJWE1FOiBJdCdzIGV4cGVjdGVkIHRvIG5vdCBoYXZlIGFueSBydW5zIG9uIGVt
cHR5IGxpbmVzLiBXZSBzaG91bGQgcmVjb25zaWRlciB0aGlzLgorICAgICAgICAgICAgICAgIGZv
cm1hdHRpbmdTdGF0ZS5hZGRMaW5lUnVuKHsgbGluZUluZGV4LCBMaW5lUnVuOjpUeXBlOjpOb25S
b290SW5saW5lQm94LCBsYXlvdXRCb3gsIGlubGluZUJveEJvcmRlckJveCwgeyB9LCB7IH0sIGxp
bmVCb3guaW5saW5lTGV2ZWxCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94KS5oYXNDb250ZW50KCkg
fSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGF1dG8gaW5saW5lQm94U2l6ZSA9IExh
eW91dFNpemUgeyBMYXlvdXRVbml0Ojpmcm9tRmxvYXRDZWlsKGlubGluZUJveEJvcmRlckJveC53
aWR0aCgpKSwgTGF5b3V0VW5pdDo6ZnJvbUZsb2F0Q2VpbChpbmxpbmVCb3hCb3JkZXJCb3guaGVp
Z2h0KCkpIH07CisgICAgICAgICAgICBhdXRvIGxvZ2ljYWxSZWN0ID0gUmVjdCB7IExheW91dFBv
aW50IHsgaW5saW5lQm94Qm9yZGVyQm94LnRvcExlZnQoKSB9LCBpbmxpbmVCb3hTaXplIH07Cisg
ICAgICAgICAgICBsb2dpY2FsUmVjdC5tb3ZlQnkoTGF5b3V0UG9pbnQgeyBsaW5lQm94TG9naWNh
bFRvcExlZnQgfSk7CisgICAgICAgICAgICBib3hHZW9tZXRyeS5zZXRMb2dpY2FsVG9wTGVmdChs
b2dpY2FsUmVjdC50b3BMZWZ0KCkpOworICAgICAgICAgICAgYXV0byBjb250ZW50Qm94SGVpZ2h0
ID0gbG9naWNhbFJlY3QuaGVpZ2h0KCkgLSAoYm94R2VvbWV0cnkudmVydGljYWxCb3JkZXIoKSAr
IGJveEdlb21ldHJ5LnZlcnRpY2FsUGFkZGluZygpLnZhbHVlX29yKDBfbHUpKTsKKyAgICAgICAg
ICAgIGJveEdlb21ldHJ5LnNldENvbnRlbnRCb3hIZWlnaHQoY29udGVudEJveEhlaWdodCk7Cisg
ICAgICAgICAgICBhdXRvIGNvbnRlbnRCb3hXaWR0aCA9IGxvZ2ljYWxSZWN0LndpZHRoKCkgLSAo
Ym94R2VvbWV0cnkuaG9yaXpvbnRhbEJvcmRlcigpICsgYm94R2VvbWV0cnkuaG9yaXpvbnRhbFBh
ZGRpbmcoKS52YWx1ZV9vcigwX2x1KSk7CisgICAgICAgICAgICBib3hHZW9tZXRyeS5zZXRDb250
ZW50Qm94V2lkdGgoY29udGVudEJveFdpZHRoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlQobGluZVJ1bi5pc0lubGlu
ZUJveEVuZCgpIHx8IGxpbmVSdW4uaXNXb3JkQnJlYWtPcHBvcnR1bml0eSgpKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIElubGluZURpc3BsYXlDb250
ZW50QnVpbGRlcjo6Y3JlYXRlUnVuc0FuZFVwZGF0ZUdlb21ldHJ5Rm9yTGluZVNwYW5uaW5nSW5s
aW5lQm94ZXMoY29uc3QgTGluZUJveCYgbGluZUJveCwgY29uc3QgSW5saW5lTGF5b3V0UG9pbnQm
IGxpbmVCb3hMb2dpY2FsVG9wTGVmdCwgY29uc3Qgc2l6ZV90IGxpbmVJbmRleCwgc2l6ZV90IGxp
bmVTcGFubmluZ0lubGluZUJveEluZGV4KQoreworICAgIGlmICghbGluZUJveC5oYXNDb250ZW50
KCkpIHsKKyAgICAgICAgLy8gV2hlbiBhIHNwYW5uaW5nIGlubGluZSBib3ggKGUuZy4gPGRpdj50
ZXh0PHNwYW4+PGJyPjwvc3Bhbj48L2Rpdj4pIGxhbmRzIG9uIGFuIGVtcHR5IGxpbmUKKyAgICAg
ICAgLy8gKGVtcHR5IGhlcmUgbWVhbnMgbm8gY29udGVudCBhdCBhbGwgaW5jbHVkaW5nIGxpbmUg
YnJlYWtzLCBub3QganVzdCB2aXN1YWxseSBlbXB0eSkgdGhlbiB3ZQorICAgICAgICAvLyBkb24n
dCBleHRlbmQgdGhlIHNwYW5uaW5nIGxpbmUgYm94IG92ZXIgdG8gdGhpcyBsaW5lIC1hbHNvIHRo
ZXJlIGlzIG5vIG5leHQgbGluZSBpbiBjYXNlcyBsaWtlIHRoaXMuCisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBhdXRvJiBmb3JtYXR0aW5nU3RhdGUgPSB0aGlzLT5mb3JtYXR0aW5nU3Rh
dGUoKTsKKyAgICBmb3IgKGF1dG8mIGlubGluZUxldmVsQm94IDogbGluZUJveC5ub25Sb290SW5s
aW5lTGV2ZWxCb3hlcygpKSB7CisgICAgICAgIGlmICghaW5saW5lTGV2ZWxCb3guaXNMaW5lU3Bh
bm5pbmdJbmxpbmVCb3goKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBhdXRvJiBs
YXlvdXRCb3ggPSBpbmxpbmVMZXZlbEJveC5sYXlvdXRCb3goKTsKKyAgICAgICAgYXV0byYgYm94
R2VvbWV0cnkgPSBmb3JtYXR0aW5nU3RhdGUuYm94R2VvbWV0cnkobGF5b3V0Qm94KTsKKyAgICAg
ICAgLy8gSW5saW5lIGJveGVzIG1heSBvciBtYXkgbm90IGJlIHdyYXBwZWQgYW5kIGhhdmUgcnVu
cyBvbiBtdWx0aXBsZSBsaW5lcyAoZS5nLiA8c3Bhbj5maXJzdCBsaW5lPGJyPnNlY29uZCBsaW5l
PGJyPnRoaXJkIGxpbmU8L3NwYW4+KQorICAgICAgICBhdXRvIGlubGluZUJveEJvcmRlckJveCA9
IGxpbmVCb3gubG9naWNhbEJvcmRlckJveEZvcklubGluZUJveChsYXlvdXRCb3gsIGJveEdlb21l
dHJ5KTsKKworICAgICAgICBmb3JtYXR0aW5nU3RhdGUubGluZVJ1bnMoKS5pbnNlcnQobGluZVNw
YW5uaW5nSW5saW5lQm94SW5kZXgrKywgeyBsaW5lSW5kZXgsIExpbmVSdW46OlR5cGU6Ok5vblJv
b3RJbmxpbmVCb3gsIGxheW91dEJveCwgaW5saW5lQm94Qm9yZGVyQm94LCB7IH0sIHsgfSwgaW5s
aW5lTGV2ZWxCb3guaGFzQ29udGVudCgpLCB0cnVlIH0pOworCisgICAgICAgIGF1dG8gaW5saW5l
Qm94U2l6ZSA9IExheW91dFNpemUgeyBMYXlvdXRVbml0Ojpmcm9tRmxvYXRDZWlsKGlubGluZUJv
eEJvcmRlckJveC53aWR0aCgpKSwgTGF5b3V0VW5pdDo6ZnJvbUZsb2F0Q2VpbChpbmxpbmVCb3hC
b3JkZXJCb3guaGVpZ2h0KCkpIH07CisgICAgICAgIGF1dG8gbG9naWNhbFJlY3QgPSBSZWN0IHsg
TGF5b3V0UG9pbnQgeyBpbmxpbmVCb3hCb3JkZXJCb3gudG9wTGVmdCgpIH0sIGlubGluZUJveFNp
emUgfTsKKyAgICAgICAgbG9naWNhbFJlY3QubW92ZUJ5KExheW91dFBvaW50IHsgbGluZUJveExv
Z2ljYWxUb3BMZWZ0IH0pOworICAgICAgICAvLyBNaWRkbGUgb3IgZW5kIG9mIHRoZSBpbmxpbmUg
Ym94LiBMZXQncyBzdHJldGNoIHRoZSBib3ggYXMgbmVlZGVkLgorICAgICAgICBhdXRvIGVuY2xv
c2luZ0JvcmRlckJveFJlY3QgPSBCb3hHZW9tZXRyeTo6Ym9yZGVyQm94UmVjdChib3hHZW9tZXRy
eSk7CisgICAgICAgIGVuY2xvc2luZ0JvcmRlckJveFJlY3QuZXhwYW5kVG9Db250YWluKGxvZ2lj
YWxSZWN0KTsKKyAgICAgICAgYm94R2VvbWV0cnkuc2V0TG9naWNhbExlZnQoZW5jbG9zaW5nQm9y
ZGVyQm94UmVjdC5sZWZ0KCkpOworCisgICAgICAgIGJveEdlb21ldHJ5LnNldENvbnRlbnRCb3hI
ZWlnaHQoZW5jbG9zaW5nQm9yZGVyQm94UmVjdC5oZWlnaHQoKSAtIChib3hHZW9tZXRyeS52ZXJ0
aWNhbEJvcmRlcigpICsgYm94R2VvbWV0cnkudmVydGljYWxQYWRkaW5nKCkudmFsdWVfb3IoMF9s
dSkpKTsKKyAgICAgICAgYm94R2VvbWV0cnkuc2V0Q29udGVudEJveFdpZHRoKGVuY2xvc2luZ0Jv
cmRlckJveFJlY3Qud2lkdGgoKSAtIChib3hHZW9tZXRyeS5ob3Jpem9udGFsQm9yZGVyKCkgKyBi
b3hHZW9tZXRyeS5ob3Jpem9udGFsUGFkZGluZygpLnZhbHVlX29yKDBfbHUpKSk7CisgICAgfQor
fQorCit9Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVEaXNw
bGF5Q29udGVudEJ1aWxkZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMGQ1ZTFjMjkxNjM3MTUwYTM2YWViZWY5
MTc5MjExZTNmYmE4MDBhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmgK
QEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxF
KExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCisKKyNpbmNsdWRlICJJbmxpbmVMaW5lQnVpbGRl
ci5oIgorI2luY2x1ZGUgIkxheW91dFVuaXRzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25h
bWVzcGFjZSBMYXlvdXQgeworCitjbGFzcyBDb250YWluZXJCb3g7CitjbGFzcyBJbmxpbmVGb3Jt
YXR0aW5nU3RhdGU7CitjbGFzcyBMaW5lQm94OworCitjbGFzcyBJbmxpbmVEaXNwbGF5Q29udGVu
dEJ1aWxkZXIgeworcHVibGljOgorICAgIElubGluZURpc3BsYXlDb250ZW50QnVpbGRlcihjb25z
dCBDb250YWluZXJCb3gmIGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgSW5saW5lRm9ybWF0dGluZ1N0
YXRlJik7CisKKyAgICB2b2lkIGJ1aWxkKGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lQ29udGVudCYs
IGNvbnN0IExpbmVCb3gmLCBjb25zdCBJbmxpbmVMYXlvdXRQb2ludCYgbGluZUJveExvZ2ljYWxU
b3BMZWZ0LCBjb25zdCBzaXplX3QgbGluZUluZGV4KTsKKworcHJpdmF0ZToKKyAgICB2b2lkIGNy
ZWF0ZVJ1bnNBbmRVcGRhdGVHZW9tZXRyeUZvckxpbmVDb250ZW50KGNvbnN0IExpbmVCdWlsZGVy
OjpMaW5lQ29udGVudCYsIGNvbnN0IExpbmVCb3gmLCBjb25zdCBJbmxpbmVMYXlvdXRQb2ludCYg
bGluZUJveExvZ2ljYWxUb3BMZWZ0LCBjb25zdCBzaXplX3QgbGluZUluZGV4KTsKKyAgICB2b2lk
IGNyZWF0ZVJ1bnNBbmRVcGRhdGVHZW9tZXRyeUZvckxpbmVTcGFubmluZ0lubGluZUJveGVzKGNv
bnN0IExpbmVCb3gmLCBjb25zdCBJbmxpbmVMYXlvdXRQb2ludCYgbGluZUJveExvZ2ljYWxUb3BM
ZWZ0LCBjb25zdCBzaXplX3QgbGluZUluZGV4LCBzaXplX3QgbGluZVNwYW5uaW5nSW5saW5lQm94
SW5kZXgpOworCisgICAgY29uc3QgQ29udGFpbmVyQm94JiByb290KCkgY29uc3QgeyByZXR1cm4g
bV9mb3JtYXR0aW5nQ29udGV4dFJvb3Q7IH0KKyAgICBJbmxpbmVGb3JtYXR0aW5nU3RhdGUmIGZv
cm1hdHRpbmdTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9ybWF0dGluZ1N0YXRlOyB9IAorCisg
ICAgY29uc3QgQ29udGFpbmVyQm94JiBtX2Zvcm1hdHRpbmdDb250ZXh0Um9vdDsKKyAgICBJbmxp
bmVGb3JtYXR0aW5nU3RhdGUmIG1fZm9ybWF0dGluZ1N0YXRlOworfTsKKworfQorfQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcApp
bmRleCAzMDMyMmM3ZGM4OWE0ODlkMzUzYjRjYzAzMTQ3OGFiODU0YjM3MTEwLi45YWFhYTRkN2Ri
YmI1ZTg2MTJiNGQwODcxOWY1Mjk2MDAwNzI3MWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNs
dWRlICJGbG9hdGluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJGb250Q2FzY2FkZS5oIgorI2luY2x1
ZGUgIklubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5oIgogI2luY2x1ZGUgIklubGluZUZvcm1h
dHRpbmdTdGF0ZS5oIgogI2luY2x1ZGUgIklubGluZUxpbmVCb3guaCIKICNpbmNsdWRlICJJbmxp
bmVMaW5lQm94QnVpbGRlci5oIgpAQCAtMjA1LDcgKzIwNiw3IEBAIHZvaWQgSW5saW5lRm9ybWF0
dGluZ0NvbnRleHQ6OmxpbmVMYXlvdXQoSW5saW5lSXRlbXMmIGlubGluZUl0ZW1zLCBMaW5lQnVp
bGRlcjo6CiAgICAgICAgIH0oKTsKICAgICAgICAgYXV0byBpbml0aWFsTGluZUNvbnN0cmFpbnRz
ID0gSW5saW5lUmVjdCB7IGxpbmVMb2dpY2FsVG9wLCBjb25zdHJhaW50cy5ob3Jpem9udGFsKCku
bG9naWNhbExlZnQsIGNvbnN0cmFpbnRzLmhvcml6b250YWwoKS5sb2dpY2FsV2lkdGgsIGluaXRp
YWxMaW5lSGVpZ2h0IH07CiAgICAgICAgIGF1dG8gbGluZUNvbnRlbnQgPSBsaW5lQnVpbGRlci5s
YXlvdXRJbmxpbmVDb250ZW50KG5lZWRzTGF5b3V0UmFuZ2UsIHBhcnRpYWxMZWFkaW5nQ29udGVu
dExlbmd0aCwgbGVhZGluZ0xvZ2ljYWxXaWR0aCwgaW5pdGlhbExpbmVDb25zdHJhaW50cywgaXNG
aXJzdExpbmUpOwotICAgICAgICBhdXRvIGxpbmVMb2dpY2FsUmVjdCA9IGNvbXB1dGVHZW9tZXRy
eUZvckxpbmVDb250ZW50KGxpbmVDb250ZW50LCBjb25zdHJhaW50cy5ob3Jpem9udGFsKCkpOwor
ICAgICAgICBhdXRvIGxpbmVMb2dpY2FsUmVjdCA9IGNvbXB1dGVHZW9tZXRyeUZvckxpbmVDb250
ZW50KGxpbmVDb250ZW50KTsKIAogICAgICAgICBhdXRvIGxpbmVDb250ZW50UmFuZ2UgPSBsaW5l
Q29udGVudC5pbmxpbmVJdGVtUmFuZ2U7CiAgICAgICAgIGlmICghbGluZUNvbnRlbnRSYW5nZS5p
c0VtcHR5KCkpIHsKQEAgLTU2NywxMzkgKzU2OCwxOCBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdD
b250ZXh0Ojpjb2xsZWN0Q29udGVudElmTmVlZGVkKCkKICAgICB9CiB9CiAKLUlubGluZVJlY3Qg
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVHZW9tZXRyeUZvckxpbmVDb250ZW50KGNv
bnN0IExpbmVCdWlsZGVyOjpMaW5lQ29udGVudCYgbGluZUNvbnRlbnQsIGNvbnN0IEhvcml6b250
YWxDb25zdHJhaW50cyYgaG9yaXpvbnRhbENvbnN0cmFpbnRzKQorSW5saW5lUmVjdCBJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUdlb21ldHJ5Rm9yTGluZUNvbnRlbnQoY29uc3QgTGlu
ZUJ1aWxkZXI6OkxpbmVDb250ZW50JiBsaW5lQ29udGVudCkKIHsKICAgICBhdXRvJiBmb3JtYXR0
aW5nU3RhdGUgPSB0aGlzLT5mb3JtYXR0aW5nU3RhdGUoKTsKLSAgICBhdXRvJiBmb3JtYXR0aW5n
R2VvbWV0cnkgPSB0aGlzLT5mb3JtYXR0aW5nR2VvbWV0cnkoKTsKLSAgICBhdXRvIGxpbmVJbmRl
eCA9IGZvcm1hdHRpbmdTdGF0ZS5saW5lcygpLnNpemUoKTsKKyAgICBhdXRvIGN1cnJlbnRMaW5l
SW5kZXggPSBmb3JtYXR0aW5nU3RhdGUubGluZXMoKS5zaXplKCk7CiAKICAgICBhdXRvIGxpbmVC
b3hBbmRHZW9tZXRyeSA9IExpbmVCb3hCdWlsZGVyKCp0aGlzKS5idWlsZChsaW5lQ29udGVudCk7
CiAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZExpbmVCb3goV1RGTW92ZShsaW5lQm94QW5kR2VvbWV0
cnkubGluZUJveCkpOwogICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRMaW5lKGxpbmVCb3hBbmRHZW9t
ZXRyeS5saW5lR2VvbWV0cnkpOwogCi0gICAgY29uc3QgYXV0byYgbGluZUJveCA9IGZvcm1hdHRp
bmdTdGF0ZS5saW5lQm94ZXMoKS5sYXN0KCk7CiAgICAgYXV0byBsaW5lQm94TG9naWNhbFJlY3Qg
PSBsaW5lQm94QW5kR2VvbWV0cnkubGluZUdlb21ldHJ5LmxpbmVCb3hMb2dpY2FsUmVjdCgpOwog
Ci0gICAgLy8gRXZlcnkgbGluZSBzdGFydHMgd2l0aCBhIHJvb3QgcnVuLCBldmVuIHRoZSBlbXB0
eSBvbmVzLgotICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRMaW5lUnVuKHsgbGluZUluZGV4LCBMaW5l
UnVuOjpUeXBlOjpSb290SW5saW5lQm94LCByb290KCksIGxpbmVCb3gubG9naWNhbFJlY3RGb3JS
b290SW5saW5lQm94KCksIHsgfSwgeyB9LCAgbGluZUJveC5yb290SW5saW5lQm94KCkuaGFzQ29u
dGVudCgpfSk7Ci0KLSAgICBpZiAoIWxpbmVCb3guaGFzQ29udGVudCgpKSB7Ci0gICAgICAgIC8v
IEZhc3QgcGF0aCBmb3IgbGluZXMgd2l0aCBubyBjb250ZW50IGUuZy4gPGRpdj48c3Bhbj48L3Nw
YW4+PHNwYW4+PC9zcGFuPjwvZGl2PiBvciA8c3Bhbj48ZGl2PjwvZGl2Pjwvc3Bhbj4gd2hlcmUg
d2UgY29uc3RydWN0IGVtcHR5IHByZSBhbmQgcG9zdCBibG9ja3MuCi0gICAgICAgIEFTU0VSVCgh
bGluZUJveC5yb290SW5saW5lQm94KCkuaGFzQ29udGVudCgpICYmICFsaW5lQm94TG9naWNhbFJl
Y3QuaGVpZ2h0KCkpOwotICAgICAgICBhdXRvIHVwZGF0ZUlubGluZUJveGVzR2VvbWV0cnlJZkFw
cGxpY2FibGUgPSBbJl0gewotICAgICAgICAgICAgaWYgKCFsaW5lQm94Lmhhc0lubGluZUJveCgp
KQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIFZlY3Rvcjxjb25zdCBCb3gq
PiBsYXlvdXRCb3hMaXN0OwotICAgICAgICAgICAgLy8gQ29sbGVjdCB0aGUgZW1wdHkgaW5saW5l
IGJveGVzIHRoYXQgc2hvd2VkIHVwIGZpcnN0IG9uIHRoaXMgbGluZS4KLSAgICAgICAgICAgIC8v
IE5vdGUgdGhhdCBhbiBpbmxpbmUgYm94IGVuZCBvbiBhbiBlbXB0eSBsaW5lIGRvZXMgbm90IG1h
a2UgdGhlIGlubGluZSBib3ggdGFsbGVyLgotICAgICAgICAgICAgLy8gKGUuZy4gPGRpdj50ZXh0
PHNwYW4+PGJyPjwvc3Bhbj48L2Rpdj4pIDwtIHRoZSA8c3Bhbj4gaW5saW5lIGJveCBpcyBhcyB0
YWxsIGFzIHRoZSBsaW5lIGV2ZW4gdGhvdWdoIHRoZSA8L3NwYW4+IGlzIGFmdGVyIGEgPGJyPiBz
byB0ZWNobmljYWxseSBpcyBvbiB0aGUgZm9sbG93aW5nIChlbXB0eSlsaW5lLgotICAgICAgICAg
ICAgZm9yIChhdXRvJiBsaW5lUnVuIDogbGluZUNvbnRlbnQucnVucykgewotICAgICAgICAgICAg
ICAgIGlmIChsaW5lUnVuLmlzSW5saW5lQm94U3RhcnQoKSkKLSAgICAgICAgICAgICAgICAgICAg
bGF5b3V0Qm94TGlzdC5hcHBlbmQoJmxpbmVSdW4ubGF5b3V0Qm94KCkpOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgZm9yIChhdXRvKiBsYXlvdXRCb3ggOiBsYXlvdXRCb3hMaXN0KSB7Ci0g
ICAgICAgICAgICAgICAgYXV0byYgYm94R2VvbWV0cnkgPSBmb3JtYXR0aW5nU3RhdGUuYm94R2Vv
bWV0cnkoKmxheW91dEJveCk7Ci0gICAgICAgICAgICAgICAgYXV0byBpbmxpbmVCb3hMb2dpY2Fs
SGVpZ2h0ID0gTGF5b3V0VW5pdDo6ZnJvbUZsb2F0Q2VpbChsaW5lQm94LmxvZ2ljYWxCb3JkZXJC
b3hGb3JJbmxpbmVCb3goKmxheW91dEJveCwgYm94R2VvbWV0cnkpLmhlaWdodCgpKTsKLSAgICAg
ICAgICAgICAgICBib3hHZW9tZXRyeS5zZXRDb250ZW50Qm94SGVpZ2h0KGlubGluZUJveExvZ2lj
YWxIZWlnaHQpOwotICAgICAgICAgICAgICAgIGJveEdlb21ldHJ5LnNldENvbnRlbnRCb3hXaWR0
aCh7IH0pOwotICAgICAgICAgICAgICAgIGJveEdlb21ldHJ5LnNldExvZ2ljYWxUb3BMZWZ0KHRv
TGF5b3V0UG9pbnQobGluZUJveExvZ2ljYWxSZWN0LnRvcExlZnQoKSkpOwotICAgICAgICAgICAg
fQotICAgICAgICB9OwotICAgICAgICB1cGRhdGVJbmxpbmVCb3hlc0dlb21ldHJ5SWZBcHBsaWNh
YmxlKCk7Ci0gICAgICAgIHJldHVybiBsaW5lQm94TG9naWNhbFJlY3Q7Ci0gICAgfQotCi0gICAg
Ly8gU3Bhbm5pbmcgaW5saW5lIGJveGVzIHN0YXJ0IGF0IHRoZSB2ZXJ5IGJlZ2lubmluZyBvZiB0
aGUgbGluZS4KLSAgICBhdXRvIGxpbmVTcGFubmluZ0lubGluZUJveEluZGV4ID0gZm9ybWF0dGlu
Z1N0YXRlLmxpbmVSdW5zKCkuc2l6ZSgpOwotICAgIEhhc2hTZXQ8Y29uc3QgQm94Kj4gaW5saW5l
Qm94U3RhcnRTZXQ7Ci0gICAgYXV0byBjb25zdHJ1Y3RMaW5lUnVuc0FuZFVwZGF0ZUJveEdlb21l
dHJ5ID0gWyZdIHsKLSAgICAgICAgLy8gQ3JlYXRlIHRoZSBpbmxpbmUgcnVucyBvbiB0aGUgY3Vy
cmVudCBsaW5lLiBUaGlzIGlzIG1vc3RseSB0ZXh0IGFuZCBhdG9taWMgaW5saW5lIHJ1bnMuCi0g
ICAgICAgIGZvciAoYXV0byYgbGluZVJ1biA6IGxpbmVDb250ZW50LnJ1bnMpIHsKLSAgICAgICAg
ICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbm90IG5lZWQgdG8gY29uc3RydWN0IGEgbGluZSBydW4g
Zm9yIDxicj4uCi0gICAgICAgICAgICBhdXRvJiBsYXlvdXRCb3ggPSBsaW5lUnVuLmxheW91dEJv
eCgpOwotICAgICAgICAgICAgaWYgKGxpbmVSdW4uaXNUZXh0KCkpIHsKLSAgICAgICAgICAgICAg
ICBmb3JtYXR0aW5nU3RhdGUuYWRkTGluZVJ1bih7IGxpbmVJbmRleCwgTGluZVJ1bjo6VHlwZTo6
VGV4dCwgbGF5b3V0Qm94LCBsaW5lQm94LmxvZ2ljYWxSZWN0Rm9yVGV4dFJ1bihsaW5lUnVuKSwg
bGluZVJ1bi5leHBhbnNpb24oKSwgbGluZVJ1bi50ZXh0Q29udGVudCgpIH0pOwotICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGxpbmVSdW4u
aXNMaW5lQnJlYWsoKSkgewotICAgICAgICAgICAgICAgIGlmIChsYXlvdXRCb3guaXNMaW5lQnJl
YWtCb3goKSkgewotICAgICAgICAgICAgICAgICAgICAvLyBPbmx5IGhhcmQgbGluZWJyZWFrcyBo
YXZlIGFzc29jaWF0ZWQgbGF5b3V0IGJveGVzLgotICAgICAgICAgICAgICAgICAgICBhdXRvIGxp
bmVCcmVha0JveFJlY3QgPSBsaW5lQm94LmxvZ2ljYWxSZWN0Rm9yTGluZUJyZWFrQm94KGxheW91
dEJveCk7Ci0gICAgICAgICAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRMaW5lUnVuKHsg
bGluZUluZGV4LCBMaW5lUnVuOjpUeXBlOjpMaW5lQnJlYWtCb3gsIGxheW91dEJveCwgbGluZUJy
ZWFrQm94UmVjdCwgbGluZVJ1bi5leHBhbnNpb24oKSwgeyB9IH0pOwotCi0gICAgICAgICAgICAg
ICAgICAgIGF1dG8mIGJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ1N0YXRlLmJveEdlb21ldHJ5KGxh
eW91dEJveCk7Ci0gICAgICAgICAgICAgICAgICAgIGxpbmVCcmVha0JveFJlY3QubW92ZUJ5KGxp
bmVCb3hMb2dpY2FsUmVjdC50b3BMZWZ0KCkpOwotICAgICAgICAgICAgICAgICAgICBib3hHZW9t
ZXRyeS5zZXRMb2dpY2FsVG9wTGVmdCh0b0xheW91dFBvaW50KGxpbmVCcmVha0JveFJlY3QudG9w
TGVmdCgpKSk7Ci0gICAgICAgICAgICAgICAgICAgIGJveEdlb21ldHJ5LnNldENvbnRlbnRCb3hI
ZWlnaHQodG9MYXlvdXRVbml0KGxpbmVCcmVha0JveFJlY3QuaGVpZ2h0KCkpKTsKLSAgICAgICAg
ICAgICAgICB9IGVsc2UgCi0gICAgICAgICAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRM
aW5lUnVuKHsgbGluZUluZGV4LCBMaW5lUnVuOjpUeXBlOjpTb2Z0TGluZUJyZWFrLCBsYXlvdXRC
b3gsIGxpbmVCb3gubG9naWNhbFJlY3RGb3JUZXh0UnVuKGxpbmVSdW4pLCBsaW5lUnVuLmV4cGFu
c2lvbigpLCBsaW5lUnVuLnRleHRDb250ZW50KCkgfSk7Ci0gICAgICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAobGluZVJ1bi5pc0JveCgpKSB7Ci0g
ICAgICAgICAgICAgICAgQVNTRVJUKGxheW91dEJveC5pc0F0b21pY0lubGluZUxldmVsQm94KCkp
OwotICAgICAgICAgICAgICAgIGF1dG8mIGJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ1N0YXRlLmJv
eEdlb21ldHJ5KGxheW91dEJveCk7Ci0gICAgICAgICAgICAgICAgYXV0byBsb2dpY2FsQm9yZGVy
Qm94ID0gbGluZUJveC5sb2dpY2FsQm9yZGVyQm94Rm9yQXRvbWljSW5saW5lTGV2ZWxCb3gobGF5
b3V0Qm94LCBib3hHZW9tZXRyeSk7Ci0gICAgICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFk
ZExpbmVSdW4oeyBsaW5lSW5kZXgsIExpbmVSdW46OlR5cGU6OkF0b21pY0lubGluZUxldmVsQm94
LCBsYXlvdXRCb3gsIGxvZ2ljYWxCb3JkZXJCb3gsIGxpbmVSdW4uZXhwYW5zaW9uKCksIHsgfSB9
KTsKLQotICAgICAgICAgICAgICAgIGF1dG8gYm9yZGVyQm94TG9naWNhbFRvcExlZnQgPSBsb2dp
Y2FsQm9yZGVyQm94LnRvcExlZnQoKTsKLSAgICAgICAgICAgICAgICAvLyBOb3RlIHRoYXQgaW5s
aW5lIGJveGVzIGFyZSByZWxhdGl2ZSB0byB0aGUgbGluZSBhbmQgdGhlaXIgdG9wIHBvc2l0aW9u
IGNhbiBiZSBuZWdhdGl2ZS4KLSAgICAgICAgICAgICAgICBib3JkZXJCb3hMb2dpY2FsVG9wTGVm
dC5tb3ZlQnkobGluZUJveExvZ2ljYWxSZWN0LnRvcExlZnQoKSk7Ci0gICAgICAgICAgICAgICAg
aWYgKGxheW91dEJveC5pc0luRmxvd1Bvc2l0aW9uZWQoKSkKLSAgICAgICAgICAgICAgICAgICAg
Ym9yZGVyQm94TG9naWNhbFRvcExlZnQgKz0gZm9ybWF0dGluZ0dlb21ldHJ5LmluRmxvd1Bvc2l0
aW9uZWRQb3NpdGlvbk9mZnNldChsYXlvdXRCb3gsIGhvcml6b250YWxDb25zdHJhaW50cyk7Ci0g
ICAgICAgICAgICAgICAgLy8gQXRvbWljIGlubGluZSBib3hlcyBhcmUgYWxsIHNldC4gVGhlaXIg
bWFyZ2luL2JvcmRlci9jb250ZW50IGJveCBnZW9tZXRyaWVzIGFyZSBhbHJlYWR5IGNvbXB1dGVk
LiBXZSBqdXN0IGhhdmUgdG8gcG9zaXRpb24gdGhlbSBoZXJlLgotICAgICAgICAgICAgICAgIGJv
eEdlb21ldHJ5LnNldExvZ2ljYWxUb3BMZWZ0KHRvTGF5b3V0UG9pbnQoYm9yZGVyQm94TG9naWNh
bFRvcExlZnQpKTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGlmIChsaW5lUnVuLmlzSW5saW5lQm94U3RhcnQoKSkgewotICAgICAgICAgICAg
ICAgIGF1dG8mIGJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ1N0YXRlLmJveEdlb21ldHJ5KGxheW91
dEJveCk7Ci0gICAgICAgICAgICAgICAgYXV0byBpbmxpbmVCb3hMb2dpY2FsUmVjdCA9IGxpbmVC
b3gubG9naWNhbEJvcmRlckJveEZvcklubGluZUJveChsYXlvdXRCb3gsIGJveEdlb21ldHJ5KTsK
LSAgICAgICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkTGluZVJ1bih7IGxpbmVJbmRleCwg
TGluZVJ1bjo6VHlwZTo6Tm9uUm9vdElubGluZUJveCwgbGF5b3V0Qm94LCBpbmxpbmVCb3hMb2dp
Y2FsUmVjdCwgbGluZVJ1bi5leHBhbnNpb24oKSwgeyB9LCBsaW5lQm94LmlubGluZUxldmVsQm94
Rm9yTGF5b3V0Qm94KGxheW91dEJveCkuaGFzQ29udGVudCgpIH0pOwotICAgICAgICAgICAgICAg
IGlubGluZUJveFN0YXJ0U2V0LmFkZCgmbGF5b3V0Qm94KTsKLSAgICAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIEFTU0VSVChsaW5lUnVuLmlzSW5saW5l
Qm94RW5kKCkgfHwgbGluZVJ1bi5pc1dvcmRCcmVha09wcG9ydHVuaXR5KCkpOwotICAgICAgICB9
Ci0gICAgfTsKLSAgICBjb25zdHJ1Y3RMaW5lUnVuc0FuZFVwZGF0ZUJveEdlb21ldHJ5KCk7Ci0K
LSAgICBhdXRvIHVwZGF0ZUJveEdlb21ldHJ5Rm9ySW5saW5lQm94ZXMgPSBbJl0gewotICAgICAg
ICAvLyBGSVhNRTogV2UgbWF5IHdhbnQgdG8ga2VlcCBhcm91bmQgYW4gaW5saW5lIGJveCBvbmx5
IHNldC4KLSAgICAgICAgaWYgKCFsaW5lQm94Lmhhc0lubGluZUJveCgpKQotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAvLyBHcmFiIHRoZSBpbmxpbmUgYm94ZXMgKGV2ZW4gdGhvc2UgdGhh
dCBkb24ndCBoYXZlIGFzc29jaWF0ZWQgbGF5b3V0IGJveGVzIG9uIHRoZSBjdXJyZW50IGxpbmUg
ZHVlIHRvIGxpbmUgd3JhcHBpbmcpCi0gICAgICAgIC8vIGFuZCB1cGRhdGUgdGhlaXIgZ2VvbWV0
cmllcy4KLSAgICAgICAgZm9yIChhdXRvJiBpbmxpbmVMZXZlbEJveCA6IGxpbmVCb3gubm9uUm9v
dElubGluZUxldmVsQm94ZXMoKSkgewotICAgICAgICAgICAgaWYgKCFpbmxpbmVMZXZlbEJveC5p
c0lubGluZUJveCgpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgYXV0
byYgbGF5b3V0Qm94ID0gaW5saW5lTGV2ZWxCb3gubGF5b3V0Qm94KCk7Ci0gICAgICAgICAgICBh
dXRvJiBib3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdTdGF0ZS5ib3hHZW9tZXRyeShsYXlvdXRCb3gp
OwotICAgICAgICAgICAgLy8gSW5saW5lIGJveGVzIG1heSBvciBtYXkgbm90IGJlIHdyYXBwZWQg
YW5kIGhhdmUgcnVucyBvbiBtdWx0aXBsZSBsaW5lcyAoZS5nLiA8c3Bhbj5maXJzdCBsaW5lPGJy
PnNlY29uZCBsaW5lPGJyPnRoaXJkIGxpbmU8L3NwYW4+KQotICAgICAgICAgICAgYXV0byBpbmxp
bmVCb3hCb3JkZXJCb3ggPSBsaW5lQm94LmxvZ2ljYWxCb3JkZXJCb3hGb3JJbmxpbmVCb3gobGF5
b3V0Qm94LCBib3hHZW9tZXRyeSk7Ci0gICAgICAgICAgICBhdXRvIGlubGluZUJveFNpemUgPSBM
YXlvdXRTaXplIHsgTGF5b3V0VW5pdDo6ZnJvbUZsb2F0Q2VpbChpbmxpbmVCb3hCb3JkZXJCb3gu
d2lkdGgoKSksIExheW91dFVuaXQ6OmZyb21GbG9hdENlaWwoaW5saW5lQm94Qm9yZGVyQm94Lmhl
aWdodCgpKSB9OwotICAgICAgICAgICAgYXV0byBsb2dpY2FsUmVjdCA9IFJlY3QgeyBMYXlvdXRQ
b2ludCB7IGlubGluZUJveEJvcmRlckJveC50b3BMZWZ0KCkgfSwgaW5saW5lQm94U2l6ZSB9Owot
ICAgICAgICAgICAgbG9naWNhbFJlY3QubW92ZUJ5KExheW91dFBvaW50IHsgbGluZUJveExvZ2lj
YWxSZWN0LnRvcExlZnQoKSB9KTsKLSAgICAgICAgICAgIGlmIChpbmxpbmVCb3hTdGFydFNldC5j
b250YWlucygmbGF5b3V0Qm94KSkgewotICAgICAgICAgICAgICAgIC8vIFRoaXMgaW5saW5lIGJv
eCBzaG93ZWQgdXAgZmlyc3Qgb24gdGhpcyBsaW5lLgotICAgICAgICAgICAgICAgIGJveEdlb21l
dHJ5LnNldExvZ2ljYWxUb3BMZWZ0KGxvZ2ljYWxSZWN0LnRvcExlZnQoKSk7Ci0gICAgICAgICAg
ICAgICAgYXV0byBjb250ZW50Qm94SGVpZ2h0ID0gbG9naWNhbFJlY3QuaGVpZ2h0KCkgLSAoYm94
R2VvbWV0cnkudmVydGljYWxCb3JkZXIoKSArIGJveEdlb21ldHJ5LnZlcnRpY2FsUGFkZGluZygp
LnZhbHVlX29yKDBfbHUpKTsKLSAgICAgICAgICAgICAgICBib3hHZW9tZXRyeS5zZXRDb250ZW50
Qm94SGVpZ2h0KGNvbnRlbnRCb3hIZWlnaHQpOwotICAgICAgICAgICAgICAgIGF1dG8gY29udGVu
dEJveFdpZHRoID0gbG9naWNhbFJlY3Qud2lkdGgoKSAtIChib3hHZW9tZXRyeS5ob3Jpem9udGFs
Qm9yZGVyKCkgKyBib3hHZW9tZXRyeS5ob3Jpem9udGFsUGFkZGluZygpLnZhbHVlX29yKDBfbHUp
KTsKLSAgICAgICAgICAgICAgICBib3hHZW9tZXRyeS5zZXRDb250ZW50Qm94V2lkdGgoY29udGVu
dEJveFdpZHRoKTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIC8vIE1pZGRsZSBvciBlbmQgb2YgdGhlIGlubGluZSBib3guIExldCdzIHN0cmV0
Y2ggdGhlIGJveCBhcyBuZWVkZWQuCi0gICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUubGluZVJ1
bnMoKS5pbnNlcnQobGluZVNwYW5uaW5nSW5saW5lQm94SW5kZXgrKywgeyBsaW5lSW5kZXgsIExp
bmVSdW46OlR5cGU6Ok5vblJvb3RJbmxpbmVCb3gsIGxheW91dEJveCwgaW5saW5lQm94Qm9yZGVy
Qm94LCB7IH0sIHsgfSwgaW5saW5lTGV2ZWxCb3guaGFzQ29udGVudCgpLCB0cnVlIH0pOwotCi0g
ICAgICAgICAgICBhdXRvIGVuY2xvc2luZ0JvcmRlckJveFJlY3QgPSBCb3hHZW9tZXRyeTo6Ym9y
ZGVyQm94UmVjdChib3hHZW9tZXRyeSk7Ci0gICAgICAgICAgICBlbmNsb3NpbmdCb3JkZXJCb3hS
ZWN0LmV4cGFuZFRvQ29udGFpbihsb2dpY2FsUmVjdCk7Ci0gICAgICAgICAgICBib3hHZW9tZXRy
eS5zZXRMb2dpY2FsTGVmdChlbmNsb3NpbmdCb3JkZXJCb3hSZWN0LmxlZnQoKSk7Ci0KLSAgICAg
ICAgICAgIGJveEdlb21ldHJ5LnNldENvbnRlbnRCb3hIZWlnaHQoZW5jbG9zaW5nQm9yZGVyQm94
UmVjdC5oZWlnaHQoKSAtIChib3hHZW9tZXRyeS52ZXJ0aWNhbEJvcmRlcigpICsgYm94R2VvbWV0
cnkudmVydGljYWxQYWRkaW5nKCkudmFsdWVfb3IoMF9sdSkpKTsKLSAgICAgICAgICAgIGJveEdl
b21ldHJ5LnNldENvbnRlbnRCb3hXaWR0aChlbmNsb3NpbmdCb3JkZXJCb3hSZWN0LndpZHRoKCkg
LSAoYm94R2VvbWV0cnkuaG9yaXpvbnRhbEJvcmRlcigpICsgYm94R2VvbWV0cnkuaG9yaXpvbnRh
bFBhZGRpbmcoKS52YWx1ZV9vcigwX2x1KSkpOwotICAgICAgICB9Ci0gICAgfTsKLSAgICB1cGRh
dGVCb3hHZW9tZXRyeUZvcklubGluZUJveGVzKCk7Ci0gICAgCisgICAgSW5saW5lRGlzcGxheUNv
bnRlbnRCdWlsZGVyKHJvb3QoKSwgZm9ybWF0dGluZ1N0YXRlKS5idWlsZChsaW5lQ29udGVudCwg
Zm9ybWF0dGluZ1N0YXRlLmxpbmVCb3hlcygpLmxhc3QoKSwgbGluZUJveExvZ2ljYWxSZWN0LnRv
cExlZnQoKSwgY3VycmVudExpbmVJbmRleCk7CiAgICAgcmV0dXJuIGxpbmVCb3hMb2dpY2FsUmVj
dDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmgK
aW5kZXggOTU1YjQ1OWRmZGIzMmRjNzVlMTIwZGJhY2NjMzFhOTQwMTI2MGZjNi4uYjI3MGMxODEy
ZGM2NGE1MjM5ZDRmZmEzZDA1OWQ1ODQ5MGRiYjMwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRl
eHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGlu
ZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oCkBAIC03Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBjb21wdXRlV2lkdGhBbmRNYXJnaW4oY29uc3QgQm94JiwgY29uc3QgSG9yaXpvbnRh
bENvbnN0cmFpbnRzJik7CiAKICAgICB2b2lkIGNvbGxlY3RDb250ZW50SWZOZWVkZWQoKTsKLSAg
ICBJbmxpbmVSZWN0IGNvbXB1dGVHZW9tZXRyeUZvckxpbmVDb250ZW50KGNvbnN0IExpbmVCdWls
ZGVyOjpMaW5lQ29udGVudCYsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYpOworICAgIElu
bGluZVJlY3QgY29tcHV0ZUdlb21ldHJ5Rm9yTGluZUNvbnRlbnQoY29uc3QgTGluZUJ1aWxkZXI6
OkxpbmVDb250ZW50Jik7CiAgICAgdm9pZCBpbnZhbGlkYXRlRm9ybWF0dGluZ1N0YXRlKGNvbnN0
IEludmFsaWRhdGlvblN0YXRlJik7CiAKICAgICBjb25zdCBJbmxpbmVGb3JtYXR0aW5nR2VvbWV0
cnkgbV9pbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMZXZlbEJveC5oIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGV2ZWxC
b3guaAppbmRleCA4ODZjYTFmOGVlYzQ3NDRkMzRhOThlY2E1N2MwMDgwYjAxM2M4ODlhLi4yYTI5
NTY0MDg3YWEyYjBjM2Q1ZTA5N2E4ZTQxMmEwMjJkOWYzY2VkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMZXZlbEJveC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lu
bGluZUxldmVsQm94LmgKQEAgLTQxLDcgKzQxLDggQEAgY2xhc3MgTGluZUJveFZlcnRpY2FsQWxp
Z25lcjsKIAogY2xhc3MgSW5saW5lTGV2ZWxCb3ggewogcHVibGljOgotICAgIHN0YXRpYyBJbmxp
bmVMZXZlbEJveCBjcmVhdGVJbmxpbmVCb3goY29uc3QgQm94JiwgSW5saW5lTGF5b3V0VW5pdCBs
b2dpY2FsTGVmdCwgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgpOworICAgIGVudW0gY2xh
c3MgTGluZVNwYW5uaW5nSW5saW5lQm94IHsgWWVzLCBObyB9OworICAgIHN0YXRpYyBJbmxpbmVM
ZXZlbEJveCBjcmVhdGVJbmxpbmVCb3goY29uc3QgQm94JiwgSW5saW5lTGF5b3V0VW5pdCBsb2dp
Y2FsTGVmdCwgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgsIExpbmVTcGFubmluZ0lubGlu
ZUJveCA9IExpbmVTcGFubmluZ0lubGluZUJveDo6Tm8pOwogICAgIHN0YXRpYyBJbmxpbmVMZXZl
bEJveCBjcmVhdGVBdG9taWNJbmxpbmVMZXZlbEJveChjb25zdCBCb3gmLCBJbmxpbmVMYXlvdXRV
bml0IGxvZ2ljYWxMZWZ0LCBJbmxpbmVMYXlvdXRTaXplKTsKICAgICBzdGF0aWMgSW5saW5lTGV2
ZWxCb3ggY3JlYXRlTGluZUJyZWFrQm94KGNvbnN0IEJveCYsIElubGluZUxheW91dFVuaXQgbG9n
aWNhbExlZnQpOwogICAgIHN0YXRpYyBJbmxpbmVMZXZlbEJveCBjcmVhdGVHZW5lcmljSW5saW5l
TGV2ZWxCb3goY29uc3QgQm94JiwgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCk7CkBAIC02
NSwxNCArNjYsMTYgQEAgcHVibGljOgogICAgIGNvbnN0IEJveCYgbGF5b3V0Qm94KCkgY29uc3Qg
eyByZXR1cm4gKm1fbGF5b3V0Qm94OyB9CiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKCkg
Y29uc3QgeyByZXR1cm4gbV9sYXlvdXRCb3gtPnN0eWxlKCk7IH0KIAotICAgIGJvb2wgaXNJbmxp
bmVCb3goKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gVHlwZTo6SW5saW5lQm94IHx8IG1fdHlw
ZSA9PSBUeXBlOjpSb290SW5saW5lQm94OyB9CisgICAgYm9vbCBpc0lubGluZUJveCgpIGNvbnN0
IHsgcmV0dXJuIG1fdHlwZSA9PSBUeXBlOjpJbmxpbmVCb3ggfHwgaXNSb290SW5saW5lQm94KCkg
fHwgaXNMaW5lU3Bhbm5pbmdJbmxpbmVCb3goKTsgfQogICAgIGJvb2wgaXNSb290SW5saW5lQm94
KCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IFR5cGU6OlJvb3RJbmxpbmVCb3g7IH0KKyAgICBi
b29sIGlzTGluZVNwYW5uaW5nSW5saW5lQm94KCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IFR5
cGU6OkxpbmVTcGFubmluZ0lubGluZUJveDsgfQogICAgIGJvb2wgaXNBdG9taWNJbmxpbmVMZXZl
bEJveCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBUeXBlOjpBdG9taWNJbmxpbmVMZXZlbEJv
eDsgfQogICAgIGJvb2wgaXNMaW5lQnJlYWtCb3goKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0g
VHlwZTo6TGluZUJyZWFrQm94OyB9CiAgICAgYm9vbCBoYXNMaW5lQm94UmVsYXRpdmVBbGlnbm1l
bnQoKSBjb25zdDsKIAogICAgIGVudW0gY2xhc3MgVHlwZSA6IHVpbnQ4X3QgewogICAgICAgICBJ
bmxpbmVCb3ggICAgICAgICAgICAgPSAxIDw8IDAsCisgICAgICAgIExpbmVTcGFubmluZ0lubGlu
ZUJveCA9IDEgPDwgMSwKICAgICAgICAgUm9vdElubGluZUJveCAgICAgICAgID0gMSA8PCAxLAog
ICAgICAgICBBdG9taWNJbmxpbmVMZXZlbEJveCAgPSAxIDw8IDIsCiAgICAgICAgIExpbmVCcmVh
a0JveCAgICAgICAgICA9IDEgPDwgMywKQEAgLTEzOCw5ICsxNDEsOSBAQCBpbmxpbmUgSW5saW5l
TGV2ZWxCb3ggSW5saW5lTGV2ZWxCb3g6OmNyZWF0ZUF0b21pY0lubGluZUxldmVsQm94KGNvbnN0
IEJveCYgbGF5bwogICAgIHJldHVybiBJbmxpbmVMZXZlbEJveCB7IGxheW91dEJveCwgbG9naWNh
bExlZnQsIGxvZ2ljYWxTaXplLCBUeXBlOjpBdG9taWNJbmxpbmVMZXZlbEJveCB9OwogfQogCi1p
bmxpbmUgSW5saW5lTGV2ZWxCb3ggSW5saW5lTGV2ZWxCb3g6OmNyZWF0ZUlubGluZUJveChjb25z
dCBCb3gmIGxheW91dEJveCwgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCwgSW5saW5lTGF5
b3V0VW5pdCBsb2dpY2FsV2lkdGgpCitpbmxpbmUgSW5saW5lTGV2ZWxCb3ggSW5saW5lTGV2ZWxC
b3g6OmNyZWF0ZUlubGluZUJveChjb25zdCBCb3gmIGxheW91dEJveCwgSW5saW5lTGF5b3V0VW5p
dCBsb2dpY2FsTGVmdCwgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgsIExpbmVTcGFubmlu
Z0lubGluZUJveCBpc0xpbmVTcGFubmluZykKIHsKLSAgICByZXR1cm4gSW5saW5lTGV2ZWxCb3gg
eyBsYXlvdXRCb3gsIGxvZ2ljYWxMZWZ0LCBJbmxpbmVMYXlvdXRTaXplIHsgbG9naWNhbFdpZHRo
LCB7IH0gfSwgVHlwZTo6SW5saW5lQm94IH07CisgICAgcmV0dXJuIElubGluZUxldmVsQm94IHsg
bGF5b3V0Qm94LCBsb2dpY2FsTGVmdCwgSW5saW5lTGF5b3V0U2l6ZSB7IGxvZ2ljYWxXaWR0aCwg
eyB9IH0sIGlzTGluZVNwYW5uaW5nID09IExpbmVTcGFubmluZ0lubGluZUJveDo6WWVzID8gVHlw
ZTo6TGluZVNwYW5uaW5nSW5saW5lQm94IDogVHlwZTo6SW5saW5lQm94IH07CiB9CiAKIGlubGlu
ZSBJbmxpbmVMZXZlbEJveCBJbmxpbmVMZXZlbEJveDo6Y3JlYXRlTGluZUJyZWFrQm94KGNvbnN0
IEJveCYgbGF5b3V0Qm94LCBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5l
TGluZS5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
SW5saW5lTGluZS5oCmluZGV4IGM1Y2JhYmYxNjliMWU0YjdiMzM0MmNhNDA2OTA2NjY0OTVhYjhi
M2EuLjM2YWU3N2ZiMTA0OTQ4YzdjZTEzYzNkYWZlYTEzZmIyZjkzYWFjZjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxp
bmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGlu
ZS9JbmxpbmVMaW5lLmgKQEAgLTY4LDYgKzY4LDcgQEAgcHVibGljOgogICAgICAgICBib29sIGlz
V29yZEJyZWFrT3Bwb3J0dW5pdHkoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gSW5saW5lSXRl
bTo6VHlwZTo6V29yZEJyZWFrT3Bwb3J0dW5pdHk7IH0KICAgICAgICAgYm9vbCBpc0lubGluZUJv
eFN0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IElubGluZUl0ZW06OlR5cGU6OklubGlu
ZUJveFN0YXJ0OyB9CiAgICAgICAgIGJvb2wgaXNJbmxpbmVCb3hFbmQoKSBjb25zdCB7IHJldHVy
biBtX3R5cGUgPT0gSW5saW5lSXRlbTo6VHlwZTo6SW5saW5lQm94RW5kOyB9CisgICAgICAgIGF1
dG8gdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogCiAgICAgICAgIGNvbnN0IEJveCYg
bGF5b3V0Qm94KCkgY29uc3QgeyByZXR1cm4gKm1fbGF5b3V0Qm94OyB9CiAgICAgICAgIGNvbnN0
IFJlbmRlclN0eWxlJiBzdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5b3V0Qm94LT5zdHlsZSgp
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9JbmxpbmVMaW5lQm94QnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94QnVpbGRlci5jcHAKaW5kZXgg
OGE4ODFhNmM0NjZjOGI1Njk3MGM0ODBjMDQ4M2FhNzc2YTA0ZjlhMy4uNmNjNTJjMTFkM2Y0OTQ2
MzEzNDFkYTVkOGEzMjZjOGYyZGY0YmM2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveEJ1aWxkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGlu
ZUxpbmVCb3hCdWlsZGVyLmNwcApAQCAtMjYsNyArMjYsMTAgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJJbmxpbmVMaW5lQm94QnVpbGRlci5oIgogCisjaW5jbHVkZSAiSW5saW5l
TGluZUJveFZlcnRpY2FsQWxpZ25lci5oIgogI2luY2x1ZGUgIklubGluZUxpbmVCdWlsZGVyLmgi
CisjaW5jbHVkZSAiTGF5b3V0Qm94R2VvbWV0cnkuaCIKKyNpbmNsdWRlICJMYXlvdXRSZXBsYWNl
ZEJveC5oIgogCiAjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCiAKQEAgLTE5
MSw3ICsxOTQsNyBAQCBJbmxpbmVMYXlvdXRVbml0IExpbmVCb3hCdWlsZGVyOjpjb25zdHJ1Y3RB
bmRBbGlnbklubGluZUxldmVsQm94ZXMoTGluZUJveCYgbGluZQogICAgICAgICBjYW5Vc2VTaW1w
bGlmaWVkQWxpZ25tZW50ID0gTGluZUJveFZlcnRpY2FsQWxpZ25lcjo6Y2FuVXNlU2ltcGxpZmll
ZEFsaWdubWVudEZvcklubGluZUxldmVsQm94KHJvb3RJbmxpbmVCb3gsIGlubGluZUxldmVsQm94
LCBib3hHZW9tZXRyeSk7CiAgICAgfTsKIAotICAgIGF1dG8gY3JlYXRlV3JhcHBlZElubGluZUJv
eGVzID0gWyZdIHsKKyAgICBhdXRvIGNyZWF0ZUxpbmVTcGFubmluZ0lubGluZUJveGVzID0gWyZd
IHsKICAgICAgICAgaWYgKHJ1bnMuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAvLyBBbiBpbmxpbmUgYm94IG1heSBub3QgbmVjZXNzYXJpbHkgc3RhcnQgb24gdGhlIGN1
cnJlbnQgbGluZToKQEAgLTIyMCwxMyArMjIzLDEzIEBAIElubGluZUxheW91dFVuaXQgTGluZUJv
eEJ1aWxkZXI6OmNvbnN0cnVjdEFuZEFsaWduSW5saW5lTGV2ZWxCb3hlcyhMaW5lQm94JiBsaW5l
CiAgICAgICAgIH0KICAgICAgICAgLy8gQ29uc3RydWN0IHRoZSBtaXNzaW5nIExpbmVCb3g6Oklu
bGluZUJveGVzIHN0YXJ0aW5nIHdpdGggdGhlIHRvcG1vc3QgbGF5b3V0IGJveC4KICAgICAgICAg
Zm9yIChhdXRvKiBsYXlvdXRCb3ggOiBXVEY6Om1ha2VSZXZlcnNlZFJhbmdlKGxheW91dEJveGVz
V2l0aG91dElubGluZUJveGVzKSkgewotICAgICAgICAgICAgYXV0byBpbmxpbmVCb3ggPSBJbmxp
bmVMZXZlbEJveDo6Y3JlYXRlSW5saW5lQm94KCpsYXlvdXRCb3gsIHJvb3RJbmxpbmVCb3gubG9n
aWNhbExlZnQoKSwgcm9vdElubGluZUJveC5sb2dpY2FsV2lkdGgoKSk7CisgICAgICAgICAgICBh
dXRvIGlubGluZUJveCA9IElubGluZUxldmVsQm94OjpjcmVhdGVJbmxpbmVCb3goKmxheW91dEJv
eCwgcm9vdElubGluZUJveC5sb2dpY2FsTGVmdCgpLCByb290SW5saW5lQm94LmxvZ2ljYWxXaWR0
aCgpLCBJbmxpbmVMZXZlbEJveDo6TGluZVNwYW5uaW5nSW5saW5lQm94OjpZZXMpOwogICAgICAg
ICAgICAgc2V0VmVydGljYWxHZW9tZXRyeUZvcklubGluZUJveChpbmxpbmVCb3gpOwogICAgICAg
ICAgICAgdXBkYXRlQ2FuVXNlU2ltcGxpZmllZEFsaWdubWVudChpbmxpbmVCb3gpOwogICAgICAg
ICAgICAgbGluZUJveC5hZGRJbmxpbmVMZXZlbEJveChXVEZNb3ZlKGlubGluZUJveCkpOwogICAg
ICAgICB9CiAgICAgfTsKLSAgICBjcmVhdGVXcmFwcGVkSW5saW5lQm94ZXMoKTsKKyAgICBjcmVh
dGVMaW5lU3Bhbm5pbmdJbmxpbmVCb3hlcygpOwogCiAgICAgYXV0byBsaW5lSGFzQ29udGVudCA9
IGZhbHNlOwogICAgIGZvciAoYXV0byYgcnVuIDogcnVucykgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveEJ1
aWxkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L0lubGluZUxpbmVCb3hCdWlsZGVyLmgKaW5kZXggZWY2ODU3ZDhmMzhhNTE3MGIzMjYwZWI1NWZi
YzkxNzU5NjQ0MzRhZS4uYTAzOGU0ZDZiMGQyYzRmOWUzYjNlNzI3NzEwNmE3M2YxZTZiZmQwNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvSW5saW5lTGluZUJveEJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94QnVpbGRlci5oCkBAIC0yNyw3ICsy
Nyw5IEBACiAKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKIAorI2luY2x1
ZGUgIklubGluZUZvcm1hdHRpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiSW5saW5lTGluZUJveC5o
IgorI2luY2x1ZGUgIklubGluZUxpbmVCdWlsZGVyLmgiCiAjaW5jbHVkZSAiSW5saW5lTGluZUdl
b21ldHJ5LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM1LDcgKzM3LDYgQEAgbmFtZXNw
YWNlIExheW91dCB7CiAKIGNsYXNzIEJveDsKIGNsYXNzIENvbnRhaW5lckJveDsKLWNsYXNzIElu
bGluZUZvcm1hdHRpbmdDb250ZXh0OwogY2xhc3MgTGF5b3V0U3RhdGU7CiAKIGNsYXNzIExpbmVC
b3hCdWlsZGVyIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlv
bi9MYXlvdXRJbnRlZ3JhdGlvbklubGluZUNvbnRlbnRCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbklubGluZUNvbnRlbnRCdWls
ZGVyLmNwcAppbmRleCBlZTViNzQyM2QyMDkzZDBkMzNjMTMxNmFkY2RhZDExNWNmYTg2ZTdiLi41
ZTE4OGMxNzJkODU2NDJjZjA1MTIxNDkzNDA1MGQ3ZDljMTRmYTlhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25JbmxpbmVDb250
ZW50QnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xh
eW91dEludGVncmF0aW9uSW5saW5lQ29udGVudEJ1aWxkZXIuY3BwCkBAIC01NSw3ICs1NSw3IEBA
IGlubGluZSBMYXlvdXQ6OkxpbmVHZW9tZXRyeTo6RW5jbG9zaW5nVG9wQW5kQm90dG9tIG9wZXJh
dG9yKyhjb25zdCBMYXlvdXQ6OkxpbmVHCiAgICAgcmV0dXJuIHsgZW5jbG9zaW5nVG9wQW5kQm90
dG9tLnRvcCArIG9mZnNldCwgZW5jbG9zaW5nVG9wQW5kQm90dG9tLmJvdHRvbSArIG9mZnNldCB9
OwogfQogCi1pbmxpbmUgc3RhdGljIGZsb2F0IGxpbmVPdmVyZmxvd1dpZHRoKGNvbnN0IFJlbmRl
ckJsb2NrRmxvdyYgZmxvdywgSW5saW5lTGF5b3V0VW5pdCBsaW5lQm94TG9naWNhbFdpZHRoLCBJ
bmxpbmVMYXlvdXRVbml0IGxpbmVDb250ZW50TG9naWNhbFdpZHRoKQoraW5saW5lIHN0YXRpYyBm
bG9hdCBsaW5lT3ZlcmZsb3dXaWR0aChjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGZsb3csIExheW91
dDo6SW5saW5lTGF5b3V0VW5pdCBsaW5lQm94TG9naWNhbFdpZHRoLCBMYXlvdXQ6OklubGluZUxh
eW91dFVuaXQgbGluZUNvbnRlbnRMb2dpY2FsV2lkdGgpCiB7CiAgICAgLy8gRklYTUU6IEl0J3Mg
dGhlIGNvcHkgb2YgdGhlIGxldHMtYWRqdXN0LW92ZXJmbG93LWZvci10aGUtY2FyZXQgYmVoYXZp
b3IgZnJvbSBMZWdhY3lMaW5lTGF5b3V0OjphZGRPdmVyZmxvd0Zyb21JbmxpbmVDaGlsZHJlbi4K
ICAgICBhdXRvIGVuZFBhZGRpbmcgPSBmbG93Lmhhc05vblZpc2libGVPdmVyZmxvdygpID8gZmxv
dy5wYWRkaW5nRW5kKCkgOiAwX2x1OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW4uaAppbmRleCAxODkwODg3ZWIyYzAy
NTBkMzg5YjY2Nzk1ZGMyZjc3YmEzMTJmNWY0Li42ODA4ZTQyZDY3Y2Q0NTIwZGMxYWIxNzNhNTZi
ZDg0N2U5ZWViYjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRp
b24vTGF5b3V0SW50ZWdyYXRpb25SdW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50
ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW4uaApAQCAtNzMsNyArNzMsNyBAQCBzdHJ1Y3Qg
UnVuIHsKIAogICAgIHN0cnVjdCBFeHBhbnNpb24gewogICAgICAgICBFeHBhbnNpb25CZWhhdmlv
ciBiZWhhdmlvciB7IERlZmF1bHRFeHBhbnNpb24gfTsKLSAgICAgICAgSW5saW5lTGF5b3V0VW5p
dCBob3Jpem9udGFsRXhwYW5zaW9uIHsgMCB9OworICAgICAgICBMYXlvdXQ6OklubGluZUxheW91
dFVuaXQgaG9yaXpvbnRhbEV4cGFuc2lvbiB7IDAgfTsKICAgICB9OwogICAgIEV4cGFuc2lvbiBl
eHBhbnNpb24oKSBjb25zdCB7IHJldHVybiBtX2V4cGFuc2lvbjsgfQogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMmU0OGE0
ZjRhYThlYTRkZWUwNTgxMDQ5YzJiM2ZhYWE5NTc5YWE0MC4uYmNjZTQ4MmFjYzY1NmMzZWMwM2Iy
MDg4N2E3YTg0Y2U3NjJiZmJjZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIxLTA4LTI3ICBB
bGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbTEZDXVtJRkNdIE1vdmUg
Y29udGVudCBidWlsZGVyIGZ1bmN0aW9uYWxpdHkgdG8gYSBkZWRpY2F0ZWQgY2xhc3MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTYzMQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdEV4cGVjdGF0
aW9uczoKKwogMjAyMS0wOC0yNyAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNv
bT4KIAogICAgICAgICBbIENhdGFsaW5hIEVXUyBdIG1lZGlhL3RyYWNrL3RyYWNrLWRpc2FibGVk
LWFkZGN1ZS5odG1sIGlzIGZsYWt5IGNyYXNoaW5nCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9U
ZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA3ZjAz
ODcyNTk3NDlhNDczZGI4MjkyNWNhMTYxMmRiNGI4Mjg5ZTU3Li4yMDFjNzcxZjc3ZTY5ZjQ2OGVj
NDk3NWYzMTI3MjVjYzhmNjlmZmY0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0
YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTUwMjMsNiArNTAy
MywxMCBAQCBmYXN0L2xheW91dGZvcm1hdHRpbmdjb250ZXh0L2Fic29sdXRlLXBvc2l0aW9uZWQt
Ym94LXdpdGgtaW5saW5lLXNpYmxpbmcuaHRtbCBbCiBbIERlYnVnIF0gZmFzdC9sYXlvdXRmb3Jt
YXR0aW5nY29udGV4dC90YWJsZS1maXhlZC13aWR0aC13aXRoLW1heC1kaXN0cmlidXRpb24uaHRt
bCBbIFNraXAgXQogWyBEZWJ1ZyBdIGZhc3QvbGF5b3V0Zm9ybWF0dGluZ2NvbnRleHQvdGFibGUt
c3BhY2UtZGlzdHJpYnV0aW9uLXNpbXBsZS1taXNtYXRjaGluZy5odG1sIFsgU2tpcCBdCiAKKyMg
TWlzc2luZyBpbi1mbG93IHBvc2l0aW9uaW5nCitbIERlYnVnIF0gZmFzdC9sYXlvdXRmb3JtYXR0
aW5nY29udGV4dC9yZXBsYWNlZC1ib3gtd2l0aC1tYXJnaW4tb24tYmFzZWxpbmUuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgXQorWyBEZWJ1ZyBdIGZhc3QvbGF5b3V0Zm9ybWF0dGluZ2NvbnRleHQv
dGFibGUtY2VsbC12ZXJ0aWNhbC1hbGlnbm1lbnQtc2ltcGxlLmh0bWwgWyBJbWFnZU9ubHlGYWls
dXJlIF0KKwogIyBUaGlzIHdlYnN0b3JhZ2UgdGVzdCBoYXMgY3Jhc2hlZCBzaW5jZSBpdCB3YXMg
aW1wb3J0ZWQuCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnN0b3JhZ2Uvc3Rv
cmFnZV9zZXNzaW9uX3NldGl0ZW1fcXVvdGFleGNlZWRlZGVyci53aW5kb3cuaHRtbCBbIFNraXAg
XQogIyBUaGlzIHdlYnN0b3JhZ2UgdGVzdCBoYXMgdGltZWQgb3V0IHNpbmNlIGl0IHdhcyBpbXBv
cnRlZC4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436701</attachid>
            <date>2021-08-27 21:18:20 -0700</date>
            <delta_ts>2021-08-28 06:15:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229631-20210827211820.patch</filename>
            <type>text/plain</type>
            <size>43840</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNzI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTgwMTU2NTA4NWU3NDZi
MDAzOWE5OGJjYjhkODE3NGIzYjBlYmE5Zi4uZjkyNjE2MGRmYWE2ZjA2NzZkY2E5MWE2YTBiOWY5
M2ZkZWEzMTdkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDIxLTA4LTI3ICBBbGFu
IEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbTEZDXVtJRkNdIE1vdmUgY29u
dGVudCBidWlsZGVyIGZ1bmN0aW9uYWxpdHkgdG8gYSBkZWRpY2F0ZWQgY2xhc3MKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTYzMQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIExldCdzIHVzZSBhIGRlZGlj
YXRlZCBjbGFzcyBmb3IgY29uc3RydWN0aW5nIHRoZSBmaW5hbCBsaW5lIHJ1bnMuIFRoaXMgaXMg
YWxzbyBnb2luZyB0byBiZSB1c2VkCisgICAgICAgIGZvciBjb21wdXRpbmcgb3ZlcmZsb3cgYW5k
IG90aGVyICJkaXNwbGF5IiB0eXBlIG9mIHZhbHVlIG9uY2UgaXQncyBtZXJnZWQgd2l0aCBMYXlv
dXRJbnRlZ3JhdGlvbjo6SW5saW5lQ29udGVudEJ1aWxkZXIuCisKKyAgICAgICAgKiBTb3VyY2Vz
LnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogbGF5b3V0L0xheW91dFVuaXRzLmg6CisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9pbmxpbmUvSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6SW5s
aW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5s
aW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyOjpidWlsZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OklubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6Y3JlYXRlUnVuc0FuZFVwZGF0ZUdlb21l
dHJ5Rm9yTGluZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVEaXNw
bGF5Q29udGVudEJ1aWxkZXI6OmNyZWF0ZVJ1bnNBbmRVcGRhdGVHZW9tZXRyeUZvckxpbmVTcGFu
bmluZ0lubGluZUJveGVzKToKKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lu
bGluZS9JbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveEJ1aWxk
ZXIuaC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRGlzcGxheUNvbnRlbnRCdWls
ZGVyOjpyb290IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRGlzcGxh
eUNvbnRlbnRCdWlsZGVyOjpmb3JtYXR0aW5nU3RhdGUgY29uc3QpOgorICAgICAgICAqIGxheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxpbmVM
YXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4
dDo6Y29tcHV0ZUdlb21ldHJ5Rm9yTGluZUNvbnRlbnQpOgorICAgICAgICAqIGxheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0Lmg6CisgICAgICAg
ICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGV2ZWxCb3guaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lTGV2ZWxCb3g6OmlzSW5saW5lQm94IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lTGV2ZWxCb3g6OmlzTGluZVNwYW5u
aW5nSW5saW5lQm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lTGV2
ZWxCb3g6OmNyZWF0ZUlubGluZUJveCk6CisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9pbmxpbmUvSW5saW5lTGluZS5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5l
OjpSdW46OnR5cGUgY29uc3QpOgorICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL0lubGluZUxpbmVCb3hCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6TGluZUJveEJ1aWxkZXI6OmNvbnN0cnVjdEFuZEFsaWduSW5saW5lTGV2ZWxCb3hlcyk6Cisg
ICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveEJ1
aWxkZXIuaDoKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25J
bmxpbmVDb250ZW50QnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3Jh
dGlvbjo6bGluZU92ZXJmbG93V2lkdGgpOgorICAgICAgICAqIGxheW91dC9pbnRlZ3JhdGlvbi9M
YXlvdXRJbnRlZ3JhdGlvblJ1bi5oOgorCiAyMDIxLTA4LTI3ICBTaW1vbiBGcmFzZXIgIDxzaW1v
bi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIERlZmluZSBFTkFCTEVfQ09OVEVOVF9DSEFO
R0VfT0JTRVJWRVIgZm9yIElPU19GQU1JTFkgYW5kIHVzZSBpdCB0byB3cmFwIGNvbnRlbnQgb2Jz
ZXJ2YXRpb24gY29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBmNDBkNDhiZTA2MTdmOWYyNGQzMTdiMWQz
NTNkMGE3NDhmNjNmZWNlLi43ZTVjMTZiOWI5ODMwYWJmMTFjMjZkOTRhNmFjMGU1NTAzYWFmYzNm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dApAQCAtMTQ1Miw2ICsxNDUyLDcgQEAgbGF5b3V0L2Zsb2F0cy9GbG9h
dEF2b2lkZXIuY3BwCiBsYXlvdXQvZmxvYXRzL0Zsb2F0aW5nQ29udGV4dC5jcHAKIGxheW91dC9m
bG9hdHMvRmxvYXRpbmdTdGF0ZS5jcHAKIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L0lubGluZUNvbnRlbnRCcmVha2VyLmNwcAorbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmNwcAogbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCiBsYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuY3BwCiBsYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nUXVpcmtzLmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDE2
ZmEwM2M2YWUxMmNiNzFiYTU3ZDJjZTZiYzVhYzRhODM5ZWJkYWYuLmJkZWNiMWQ1YTA1YjhlZjQx
YmU5MDhiMTgxNDAxMmY1ZDY4OTE5OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM5OSw2ICszOTksNyBAQAogCQkxMTMxMENG
NjIwQkE0QTU2MDA2NUE4RDAgLyogTGF5b3V0Q2hpbGRJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTExMDBGQzkyMDkyN0NCQzAwODFBQTZD
IC8qIExheW91dENoaWxkSXRlcmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkxMTM0MDlEQTIwM0UwMzgwMDBDNjY5MTUgLyogUmVuZGVyVHJl
ZUJ1aWxkZXJDb250aW51YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDExMzQwOUQ4MjAzRTAzODAwMEM2NjkxNSAvKiBSZW5kZXJUcmVlQnVpbGRl
ckNvbnRpbnVhdGlvbi5oICovOyB9OwogCQkxMTNEMEI1MjFGOUZERDJCMDBGNjExQkIgLyogRnJh
bWVWaWV3TGF5b3V0Q29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMTEzRDBCNTAxRjlGREQyQjAwRjYxMUJCIC8qIEZyYW1lVmlld0xheW91dENv
bnRleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQkxMTUxM0QwMzI2RDk4MUU4MDA0RDNGQUEgLyogSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxMTUxM0Qw
MjI2RDk4MUU3MDA0RDNGQUEgLyogSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTE1Q0ZBNkEyMDhB
RjdEMDAwMUU2OTkxIC8qIEZvcm1hdHRpbmdDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxMTVDRkE2ODIwOEFGN0QwMDAxRTY5OTEgLyogRm9y
bWF0dGluZ0NvbnRleHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkxMTVDRkE2RTIwOEFGQUI3MDAxRTY5OTEgLyogQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTE1
Q0ZBNkMyMDhBRkFCNjAwMUU2OTkxIC8qIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxMTVDRkE3NjIwOEFG
RTMwMDAxRTY5OTEgLyogRm9ybWF0dGluZ1N0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxMTVDRkE3NDIwOEFGRTMwMDAxRTY5OTEgLyogRm9ybWF0
dGluZ1N0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKQEAgLTY0MTMsNiArNjQxNCw4IEBACiAJCTExMzQwOUQ4MjAzRTAzODAwMEM2NjkxNSAvKiBS
ZW5kZXJUcmVlQnVpbGRlckNvbnRpbnVhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJUcmVl
QnVpbGRlckNvbnRpbnVhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxMTNE
MEI0RjFGOUZERDJCMDBGNjExQkIgLyogRnJhbWVWaWV3TGF5b3V0Q29udGV4dC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBGcmFtZVZpZXdMYXlvdXRDb250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMTEzRDBCNTAxRjlGREQyQjAwRjYxMUJCIC8qIEZyYW1lVmlld0xheW91
dENvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnJhbWVWaWV3TGF5b3V0Q29udGV4dC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxMTUxM0QwMDI2RDk4MUREMDA0RDNGQUEgLyogSW5s
aW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElubGluZURp
c3BsYXlDb250ZW50QnVpbGRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTEx
NTEzRDAyMjZEOTgxRTcwMDREM0ZBQSAvKiBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5saW5lRGlzcGxheUNvbnRlbnRCdWls
ZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTExNUNBODMwMjMzMjhCMUUwMEZE
M0IwOCAvKiBMYXlvdXRVbml0cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMYXlvdXRVbml0cy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTExNUNGQTY4MjA4QUY3RDAwMDFFNjk5
MSAvKiBGb3JtYXR0aW5nQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb3JtYXR0aW5nQ29udGV4
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxMTVDRkE2OTIwOEFGN0QwMDAxRTY5
OTEgLyogRm9ybWF0dGluZ0NvbnRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9ybWF0dGlu
Z0NvbnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTgwMzMsNiArMTgw
MzYsOCBAQAogCQkJCTZGRTdEREREMjBFQzZFOEIwMDhCNUI0RSAvKiB0ZXh0ICovLAogCQkJCTZG
RTE5ODEzMjE3ODM5N0IwMDQ0NkYwOCAvKiBJbmxpbmVDb250ZW50QnJlYWtlci5jcHAgKi8sCiAJ
CQkJNkZFMTk4MTUyMTc4Mzk3QzAwNDQ2RjA4IC8qIElubGluZUNvbnRlbnRCcmVha2VyLmggKi8s
CisJCQkJMTE1MTNEMDAyNkQ5ODFERDAwNEQzRkFBIC8qIElubGluZURpc3BsYXlDb250ZW50QnVp
bGRlci5jcHAgKi8sCisJCQkJMTE1MTNEMDIyNkQ5ODFFNzAwNEQzRkFBIC8qIElubGluZURpc3Bs
YXlDb250ZW50QnVpbGRlci5oICovLAogCQkJCTZGN0NBM0M5MjA4QzJCMkUwMDJGMjlBQiAvKiBJ
bmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAgKi8sCiAJCQkJNkY3Q0EzQzgyMDhDMkIyRTAwMkYy
OUFCIC8qIElubGluZUZvcm1hdHRpbmdDb250ZXh0LmggKi8sCiAJCQkJNkYzNUVGQUYyMTg3Q0JE
NTAwNDRFMEY0IC8qIElubGluZUZvcm1hdHRpbmdHZW9tZXRyeS5jcHAgKi8sCkBAIC0zMjQzNCw2
ICszMjQzOSw3IEBACiAJCQkJQ0QwNjNGODMxRTIzRkE4OTAwODEyQkUzIC8qIEluaXREYXRhUmVn
aXN0cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzMDU5MjY0MUUyN0EzQUQwMEQ1N0M5OCAvKiBJ
bmxpbmVDbGFzc2ljU2NyaXB0LmggaW4gSGVhZGVycyAqLywKIAkJCQk2RkUxOTgxNzIxNzgzOTdD
MDA0NDZGMDggLyogSW5saW5lQ29udGVudEJyZWFrZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTEx
NTEzRDAzMjZEOTgxRTgwMDREM0ZBQSAvKiBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTZGN0NBM0NBMjA4QzJCMkUwMDJGMjlBQiAvKiBJbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDdDNEQ1N0QyNjUwOEJDQjAwQzdB
QjFGIC8qIElubGluZUZvcm1hdHRpbmdHZW9tZXRyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkZF
NjM2RTgyNjQ3OTYyOTAwRjA5NTFFIC8qIElubGluZUZvcm1hdHRpbmdRdWlya3MuaCBpbiBIZWFk
ZXJzICovLApAQCAtMzI0NDMsNiArMzI0NDksNyBAQAogCQkJCTZGQUFFNzEzMjZBMjgxNEIwMEUw
NzUwMiAvKiBJbmxpbmVMZXZlbEJveC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkYwQ0Q2OTUyMjlF
RDMyNzAwQzU5OTRFIC8qIElubGluZUxpbmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTZGQjI0MDA1
MjNERkYxMjgwMDc5NjQ1OCAvKiBJbmxpbmVMaW5lQm94LmggaW4gSGVhZGVycyAqLywKKwkJCQkx
MUMzMjI3RDI2RDk1OENFMDAzMjhGNEQgLyogSW5saW5lTGluZUJveEJ1aWxkZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTZGNkVFNzQzMjZENDRFRTMwMDM3NENEQSAvKiBJbmxpbmVMaW5lQm94VmVy
dGljYWxBbGlnbmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk2RjI2RUI0ODIzNDAwNEE1MDA2OTA2
RTIgLyogSW5saW5lTGluZUJ1aWxkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTZGOTE0MjExMjUx
NTIxMzgwMDRFNEZFQSAvKiBJbmxpbmVMaW5lR2VvbWV0cnkuaCBpbiBIZWFkZXJzICovLApAQCAt
MzMzMDksNyArMzMzMTYsNiBAQAogCQkJCTA3ODQ2MzQzMTQ1QjE1MUEwMEE1OERGMSAvKiBKU1Ry
YWNrRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxN0I0OTIxMTZBOUI4RkYwMDFDODgzOSAv
KiBKU1RyYW5zaXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE3NTBENUQwQTkwREVF
MTAwMEZGMjE1IC8qIEpTVHJlZVdhbGtlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMTFDMzIyN0Qy
NkQ5NThDRTAwMzI4RjREIC8qIElubGluZUxpbmVCb3hCdWlsZGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBODY2MjlDRjA5REEyQjQ3MDA5NjMzQTUgLyogSlNVSUV2ZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQk0NjUzMDdEMDFEQjZFRTQ4MDBFNDEzN0MgLyogSlNVSUV2ZW50SW5pdC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJN0M3M0ZCMTIxOTFFRjZGNDAwN0RFMDYxIC8qIEpTVXNlck1lc3NhZ2VI
YW5kbGVyLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9MYXlvdXRVbml0cy5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFVuaXRzLmgKaW5k
ZXggNDg1ZTRkNTNjMDU5NDA0ZGE3YTRhMjY1ZTk5ZWI3YzE3NDkxYzg1Zi4uOGJhOWNkN2FjNWJi
ZmM1YmUzZDMxMGM0YzI5OTU0MzhkYWQ3M2ZhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L0xheW91dFVuaXRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFVu
aXRzLmgKQEAgLTM2LDYgKzM2LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCituYW1lc3Bh
Y2UgTGF5b3V0IHsKKwogI2RlZmluZSBVU0VfRkxPQVRfQVNfSU5MSU5FX0xBWU9VVF9VTklUIDEK
IAogI2lmIFVTRV9GTE9BVF9BU19JTkxJTkVfTEFZT1VUX1VOSVQKQEAgLTUwLDggKzUyLDYgQEAg
dXNpbmcgSW5saW5lTGF5b3V0U2l6ZSA9IExheW91dFNpemU7CiB1c2luZyBJbmxpbmVMYXlvdXRS
ZWN0ID0gTGF5b3V0UmVjdDsKICNlbmRpZgogCi1uYW1lc3BhY2UgTGF5b3V0IHsKLQogc3RydWN0
IFBvc2l0aW9uIHsKICAgICBvcGVyYXRvciBMYXlvdXRVbml0KCkgY29uc3QgeyByZXR1cm4gdmFs
dWU7IH0KICAgICBMYXlvdXRVbml0IHZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRGlzcGxheUNvbnRlbnRCdWls
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjc0NDY5MTYyMTlk
YWM5NDI3Mzg1NjZhNWY2ODNhZDNkMzM2ZDk3NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZURpc3BsYXlDb250
ZW50QnVpbGRlci5jcHAKQEAgLTAsMCArMSwxNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmgiCisKKyNp
ZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKKworI2luY2x1ZGUgIkxheW91dEJv
eEdlb21ldHJ5LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBMYXlvdXQgewor
CisKK0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6SW5saW5lRGlzcGxheUNvbnRlbnRCdWls
ZGVyKGNvbnN0IENvbnRhaW5lckJveCYgZm9ybWF0dGluZ0NvbnRleHRSb290LCBJbmxpbmVGb3Jt
YXR0aW5nU3RhdGUmIGZvcm1hdHRpbmdTdGF0ZSkKKyAgICA6IG1fZm9ybWF0dGluZ0NvbnRleHRS
b290KGZvcm1hdHRpbmdDb250ZXh0Um9vdCkKKyAgICAsIG1fZm9ybWF0dGluZ1N0YXRlKGZvcm1h
dHRpbmdTdGF0ZSkKK3sKKworfQorCit2b2lkIElubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6
YnVpbGQoY29uc3QgTGluZUJ1aWxkZXI6OkxpbmVDb250ZW50JiBsaW5lQ29udGVudCwgY29uc3Qg
TGluZUJveCYgbGluZUJveCwgY29uc3QgSW5saW5lTGF5b3V0UG9pbnQmIGxpbmVCb3hMb2dpY2Fs
VG9wTGVmdCwgY29uc3Qgc2l6ZV90IGxpbmVJbmRleCkKK3sKKyAgICBhdXRvJiBmb3JtYXR0aW5n
U3RhdGUgPSB0aGlzLT5mb3JtYXR0aW5nU3RhdGUoKTsKKyAgICAvLyBFdmVyeSBsaW5lIHN0YXJ0
cyB3aXRoIGEgcm9vdCBydW4sIGV2ZW4gdGhlIGVtcHR5IG9uZXMuCisgICAgZm9ybWF0dGluZ1N0
YXRlLmFkZExpbmVSdW4oeyBsaW5lSW5kZXgsIExpbmVSdW46OlR5cGU6OlJvb3RJbmxpbmVCb3gs
IHJvb3QoKSwgbGluZUJveC5sb2dpY2FsUmVjdEZvclJvb3RJbmxpbmVCb3goKSwgeyB9LCB7IH0s
ICBsaW5lQm94LnJvb3RJbmxpbmVCb3goKS5oYXNDb250ZW50KCl9KTsKKworICAgIC8vIFNwYW5u
aW5nIGlubGluZSBib3hlcyBzdGFydCBhdCB0aGUgdmVyeSBiZWdpbm5pbmcgb2YgdGhlIGxpbmUu
CisgICAgYXV0byBsaW5lU3Bhbm5pbmdJbmxpbmVCb3hJbmRleCA9IGZvcm1hdHRpbmdTdGF0ZS5s
aW5lUnVucygpLnNpemUoKTsKKyAgICBjcmVhdGVSdW5zQW5kVXBkYXRlR2VvbWV0cnlGb3JMaW5l
Q29udGVudChsaW5lQ29udGVudCwgbGluZUJveCwgbGluZUJveExvZ2ljYWxUb3BMZWZ0LCBsaW5l
SW5kZXgpOworICAgIGNyZWF0ZVJ1bnNBbmRVcGRhdGVHZW9tZXRyeUZvckxpbmVTcGFubmluZ0lu
bGluZUJveGVzKGxpbmVCb3gsIGxpbmVCb3hMb2dpY2FsVG9wTGVmdCwgbGluZUluZGV4LCBsaW5l
U3Bhbm5pbmdJbmxpbmVCb3hJbmRleCk7Cit9CisKK3ZvaWQgSW5saW5lRGlzcGxheUNvbnRlbnRC
dWlsZGVyOjpjcmVhdGVSdW5zQW5kVXBkYXRlR2VvbWV0cnlGb3JMaW5lQ29udGVudChjb25zdCBM
aW5lQnVpbGRlcjo6TGluZUNvbnRlbnQmIGxpbmVDb250ZW50LCBjb25zdCBMaW5lQm94JiBsaW5l
Qm94LCBjb25zdCBJbmxpbmVMYXlvdXRQb2ludCYgbGluZUJveExvZ2ljYWxUb3BMZWZ0LCBjb25z
dCBzaXplX3QgbGluZUluZGV4KQoreworICAgIGF1dG8mIGZvcm1hdHRpbmdTdGF0ZSA9IHRoaXMt
PmZvcm1hdHRpbmdTdGF0ZSgpOworICAgIC8vIENyZWF0ZSB0aGUgaW5saW5lIHJ1bnMgb24gdGhl
IGN1cnJlbnQgbGluZS4gVGhpcyBpcyBtb3N0bHkgdGV4dCBhbmQgYXRvbWljIGlubGluZSBydW5z
LgorICAgIGZvciAoYXV0byYgbGluZVJ1biA6IGxpbmVDb250ZW50LnJ1bnMpIHsKKyAgICAgICAg
YXV0byYgbGF5b3V0Qm94ID0gbGluZVJ1bi5sYXlvdXRCb3goKTsKKyAgICAgICAgc3dpdGNoIChs
aW5lUnVuLnR5cGUoKSkgeworICAgICAgICBjYXNlIElubGluZUl0ZW06OlR5cGU6OlRleHQ6Cisg
ICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkTGluZVJ1bih7IGxpbmVJbmRleCwgTGluZVJ1
bjo6VHlwZTo6VGV4dCwgbGF5b3V0Qm94LCBsaW5lQm94LmxvZ2ljYWxSZWN0Rm9yVGV4dFJ1bihs
aW5lUnVuKSwgbGluZVJ1bi5leHBhbnNpb24oKSwgbGluZVJ1bi50ZXh0Q29udGVudCgpIH0pOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSW5saW5lSXRlbTo6VHlwZTo6U29mdExp
bmVCcmVhazoKKyAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRMaW5lUnVuKHsgbGluZUlu
ZGV4LCBMaW5lUnVuOjpUeXBlOjpTb2Z0TGluZUJyZWFrLCBsYXlvdXRCb3gsIGxpbmVCb3gubG9n
aWNhbFJlY3RGb3JUZXh0UnVuKGxpbmVSdW4pLCBsaW5lUnVuLmV4cGFuc2lvbigpLCBsaW5lUnVu
LnRleHRDb250ZW50KCkgfSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBJbmxp
bmVJdGVtOjpUeXBlOjpIYXJkTGluZUJyZWFrOiB7CisgICAgICAgICAgICAvLyBPbmx5IGhhcmQg
bGluZWJyZWFrcyBoYXZlIGFzc29jaWF0ZWQgbGF5b3V0IGJveGVzLgorICAgICAgICAgICAgYXV0
byBsaW5lQnJlYWtCb3hSZWN0ID0gbGluZUJveC5sb2dpY2FsUmVjdEZvckxpbmVCcmVha0JveChs
YXlvdXRCb3gpOworICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZExpbmVSdW4oeyBsaW5l
SW5kZXgsIExpbmVSdW46OlR5cGU6OkxpbmVCcmVha0JveCwgbGF5b3V0Qm94LCBsaW5lQnJlYWtC
b3hSZWN0LCBsaW5lUnVuLmV4cGFuc2lvbigpLCB7IH0gfSk7CisKKyAgICAgICAgICAgIGF1dG8m
IGJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ1N0YXRlLmJveEdlb21ldHJ5KGxheW91dEJveCk7Cisg
ICAgICAgICAgICBsaW5lQnJlYWtCb3hSZWN0Lm1vdmVCeShsaW5lQm94TG9naWNhbFRvcExlZnQp
OworICAgICAgICAgICAgYm94R2VvbWV0cnkuc2V0TG9naWNhbFRvcExlZnQodG9MYXlvdXRQb2lu
dChsaW5lQnJlYWtCb3hSZWN0LnRvcExlZnQoKSkpOworICAgICAgICAgICAgYm94R2VvbWV0cnku
c2V0Q29udGVudEJveEhlaWdodCh0b0xheW91dFVuaXQobGluZUJyZWFrQm94UmVjdC5oZWlnaHQo
KSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBJbmxpbmVJ
dGVtOjpUeXBlOjpCb3g6IHsKKyAgICAgICAgICAgIEFTU0VSVChsYXlvdXRCb3guaXNBdG9taWNJ
bmxpbmVMZXZlbEJveCgpKTsKKyAgICAgICAgICAgIGF1dG8mIGJveEdlb21ldHJ5ID0gZm9ybWF0
dGluZ1N0YXRlLmJveEdlb21ldHJ5KGxheW91dEJveCk7CisgICAgICAgICAgICBhdXRvIGxvZ2lj
YWxCb3JkZXJCb3ggPSBsaW5lQm94LmxvZ2ljYWxCb3JkZXJCb3hGb3JBdG9taWNJbmxpbmVMZXZl
bEJveChsYXlvdXRCb3gsIGJveEdlb21ldHJ5KTsKKyAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0
ZS5hZGRMaW5lUnVuKHsgbGluZUluZGV4LCBMaW5lUnVuOjpUeXBlOjpBdG9taWNJbmxpbmVMZXZl
bEJveCwgbGF5b3V0Qm94LCBsb2dpY2FsQm9yZGVyQm94LCBsaW5lUnVuLmV4cGFuc2lvbigpLCB7
IH0gfSk7CisKKyAgICAgICAgICAgIGF1dG8gYm9yZGVyQm94TG9naWNhbFRvcExlZnQgPSBsb2dp
Y2FsQm9yZGVyQm94LnRvcExlZnQoKTsKKyAgICAgICAgICAgIC8vIE5vdGUgdGhhdCBpbmxpbmUg
Ym94ZXMgYXJlIHJlbGF0aXZlIHRvIHRoZSBsaW5lIGFuZCB0aGVpciB0b3AgcG9zaXRpb24gY2Fu
IGJlIG5lZ2F0aXZlLgorICAgICAgICAgICAgYm9yZGVyQm94TG9naWNhbFRvcExlZnQubW92ZUJ5
KGxpbmVCb3hMb2dpY2FsVG9wTGVmdCk7CisgICAgICAgICAgICAvLyBBdG9taWMgaW5saW5lIGJv
eGVzIGFyZSBhbGwgc2V0LiBUaGVpciBtYXJnaW4vYm9yZGVyL2NvbnRlbnQgYm94IGdlb21ldHJp
ZXMgYXJlIGFscmVhZHkgY29tcHV0ZWQuIFdlIGp1c3QgaGF2ZSB0byBwb3NpdGlvbiB0aGVtIGhl
cmUuCisgICAgICAgICAgICBib3hHZW9tZXRyeS5zZXRMb2dpY2FsVG9wTGVmdCh0b0xheW91dFBv
aW50KGJvcmRlckJveExvZ2ljYWxUb3BMZWZ0KSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorICAgICAgICBjYXNlIElubGluZUl0ZW06OlR5cGU6OklubGluZUJveFN0YXJ0OiB7Cisg
ICAgICAgICAgICAvLyBUaGlzIGlubGluZSBib3ggc2hvd2VkIHVwIGZpcnN0IG9uIHRoaXMgbGlu
ZS4KKyAgICAgICAgICAgIGF1dG8mIGJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ1N0YXRlLmJveEdl
b21ldHJ5KGxheW91dEJveCk7CisgICAgICAgICAgICBhdXRvIGlubGluZUJveEJvcmRlckJveCA9
IGxpbmVCb3gubG9naWNhbEJvcmRlckJveEZvcklubGluZUJveChsYXlvdXRCb3gsIGJveEdlb21l
dHJ5KTsKKyAgICAgICAgICAgIGlmIChsaW5lQm94Lmhhc0NvbnRlbnQoKSkgeworICAgICAgICAg
ICAgICAgIC8vIEZJWE1FOiBJdCdzIGV4cGVjdGVkIHRvIG5vdCBoYXZlIGFueSBydW5zIG9uIGVt
cHR5IGxpbmVzLiBXZSBzaG91bGQgcmVjb25zaWRlciB0aGlzLgorICAgICAgICAgICAgICAgIGZv
cm1hdHRpbmdTdGF0ZS5hZGRMaW5lUnVuKHsgbGluZUluZGV4LCBMaW5lUnVuOjpUeXBlOjpOb25S
b290SW5saW5lQm94LCBsYXlvdXRCb3gsIGlubGluZUJveEJvcmRlckJveCwgeyB9LCB7IH0sIGxp
bmVCb3guaW5saW5lTGV2ZWxCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94KS5oYXNDb250ZW50KCkg
fSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGF1dG8gaW5saW5lQm94U2l6ZSA9IExh
eW91dFNpemUgeyBMYXlvdXRVbml0Ojpmcm9tRmxvYXRDZWlsKGlubGluZUJveEJvcmRlckJveC53
aWR0aCgpKSwgTGF5b3V0VW5pdDo6ZnJvbUZsb2F0Q2VpbChpbmxpbmVCb3hCb3JkZXJCb3guaGVp
Z2h0KCkpIH07CisgICAgICAgICAgICBhdXRvIGxvZ2ljYWxSZWN0ID0gUmVjdCB7IExheW91dFBv
aW50IHsgaW5saW5lQm94Qm9yZGVyQm94LnRvcExlZnQoKSB9LCBpbmxpbmVCb3hTaXplIH07Cisg
ICAgICAgICAgICBsb2dpY2FsUmVjdC5tb3ZlQnkoTGF5b3V0UG9pbnQgeyBsaW5lQm94TG9naWNh
bFRvcExlZnQgfSk7CisgICAgICAgICAgICBib3hHZW9tZXRyeS5zZXRMb2dpY2FsVG9wTGVmdChs
b2dpY2FsUmVjdC50b3BMZWZ0KCkpOworICAgICAgICAgICAgYXV0byBjb250ZW50Qm94SGVpZ2h0
ID0gbG9naWNhbFJlY3QuaGVpZ2h0KCkgLSAoYm94R2VvbWV0cnkudmVydGljYWxCb3JkZXIoKSAr
IGJveEdlb21ldHJ5LnZlcnRpY2FsUGFkZGluZygpLnZhbHVlX29yKDBfbHUpKTsKKyAgICAgICAg
ICAgIGJveEdlb21ldHJ5LnNldENvbnRlbnRCb3hIZWlnaHQoY29udGVudEJveEhlaWdodCk7Cisg
ICAgICAgICAgICBhdXRvIGNvbnRlbnRCb3hXaWR0aCA9IGxvZ2ljYWxSZWN0LndpZHRoKCkgLSAo
Ym94R2VvbWV0cnkuaG9yaXpvbnRhbEJvcmRlcigpICsgYm94R2VvbWV0cnkuaG9yaXpvbnRhbFBh
ZGRpbmcoKS52YWx1ZV9vcigwX2x1KSk7CisgICAgICAgICAgICBib3hHZW9tZXRyeS5zZXRDb250
ZW50Qm94V2lkdGgoY29udGVudEJveFdpZHRoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlQobGluZVJ1bi5pc0lubGlu
ZUJveEVuZCgpIHx8IGxpbmVSdW4uaXNXb3JkQnJlYWtPcHBvcnR1bml0eSgpKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIElubGluZURpc3BsYXlDb250
ZW50QnVpbGRlcjo6Y3JlYXRlUnVuc0FuZFVwZGF0ZUdlb21ldHJ5Rm9yTGluZVNwYW5uaW5nSW5s
aW5lQm94ZXMoY29uc3QgTGluZUJveCYgbGluZUJveCwgY29uc3QgSW5saW5lTGF5b3V0UG9pbnQm
IGxpbmVCb3hMb2dpY2FsVG9wTGVmdCwgY29uc3Qgc2l6ZV90IGxpbmVJbmRleCwgc2l6ZV90IGxp
bmVTcGFubmluZ0lubGluZUJveEluZGV4KQoreworICAgIGlmICghbGluZUJveC5oYXNDb250ZW50
KCkpIHsKKyAgICAgICAgLy8gV2hlbiBhIHNwYW5uaW5nIGlubGluZSBib3ggKGUuZy4gPGRpdj50
ZXh0PHNwYW4+PGJyPjwvc3Bhbj48L2Rpdj4pIGxhbmRzIG9uIGFuIGVtcHR5IGxpbmUKKyAgICAg
ICAgLy8gKGVtcHR5IGhlcmUgbWVhbnMgbm8gY29udGVudCBhdCBhbGwgaW5jbHVkaW5nIGxpbmUg
YnJlYWtzLCBub3QganVzdCB2aXN1YWxseSBlbXB0eSkgdGhlbiB3ZQorICAgICAgICAvLyBkb24n
dCBleHRlbmQgdGhlIHNwYW5uaW5nIGxpbmUgYm94IG92ZXIgdG8gdGhpcyBsaW5lIC1hbHNvIHRo
ZXJlIGlzIG5vIG5leHQgbGluZSBpbiBjYXNlcyBsaWtlIHRoaXMuCisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBhdXRvJiBmb3JtYXR0aW5nU3RhdGUgPSB0aGlzLT5mb3JtYXR0aW5nU3Rh
dGUoKTsKKyAgICBmb3IgKGF1dG8mIGlubGluZUxldmVsQm94IDogbGluZUJveC5ub25Sb290SW5s
aW5lTGV2ZWxCb3hlcygpKSB7CisgICAgICAgIGlmICghaW5saW5lTGV2ZWxCb3guaXNMaW5lU3Bh
bm5pbmdJbmxpbmVCb3goKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBhdXRvJiBs
YXlvdXRCb3ggPSBpbmxpbmVMZXZlbEJveC5sYXlvdXRCb3goKTsKKyAgICAgICAgYXV0byYgYm94
R2VvbWV0cnkgPSBmb3JtYXR0aW5nU3RhdGUuYm94R2VvbWV0cnkobGF5b3V0Qm94KTsKKyAgICAg
ICAgLy8gSW5saW5lIGJveGVzIG1heSBvciBtYXkgbm90IGJlIHdyYXBwZWQgYW5kIGhhdmUgcnVu
cyBvbiBtdWx0aXBsZSBsaW5lcyAoZS5nLiA8c3Bhbj5maXJzdCBsaW5lPGJyPnNlY29uZCBsaW5l
PGJyPnRoaXJkIGxpbmU8L3NwYW4+KQorICAgICAgICBhdXRvIGlubGluZUJveEJvcmRlckJveCA9
IGxpbmVCb3gubG9naWNhbEJvcmRlckJveEZvcklubGluZUJveChsYXlvdXRCb3gsIGJveEdlb21l
dHJ5KTsKKworICAgICAgICBmb3JtYXR0aW5nU3RhdGUubGluZVJ1bnMoKS5pbnNlcnQobGluZVNw
YW5uaW5nSW5saW5lQm94SW5kZXgrKywgeyBsaW5lSW5kZXgsIExpbmVSdW46OlR5cGU6Ok5vblJv
b3RJbmxpbmVCb3gsIGxheW91dEJveCwgaW5saW5lQm94Qm9yZGVyQm94LCB7IH0sIHsgfSwgaW5s
aW5lTGV2ZWxCb3guaGFzQ29udGVudCgpLCB0cnVlIH0pOworCisgICAgICAgIGF1dG8gaW5saW5l
Qm94U2l6ZSA9IExheW91dFNpemUgeyBMYXlvdXRVbml0Ojpmcm9tRmxvYXRDZWlsKGlubGluZUJv
eEJvcmRlckJveC53aWR0aCgpKSwgTGF5b3V0VW5pdDo6ZnJvbUZsb2F0Q2VpbChpbmxpbmVCb3hC
b3JkZXJCb3guaGVpZ2h0KCkpIH07CisgICAgICAgIGF1dG8gbG9naWNhbFJlY3QgPSBSZWN0IHsg
TGF5b3V0UG9pbnQgeyBpbmxpbmVCb3hCb3JkZXJCb3gudG9wTGVmdCgpIH0sIGlubGluZUJveFNp
emUgfTsKKyAgICAgICAgbG9naWNhbFJlY3QubW92ZUJ5KExheW91dFBvaW50IHsgbGluZUJveExv
Z2ljYWxUb3BMZWZ0IH0pOworICAgICAgICAvLyBNaWRkbGUgb3IgZW5kIG9mIHRoZSBpbmxpbmUg
Ym94LiBMZXQncyBzdHJldGNoIHRoZSBib3ggYXMgbmVlZGVkLgorICAgICAgICBhdXRvIGVuY2xv
c2luZ0JvcmRlckJveFJlY3QgPSBCb3hHZW9tZXRyeTo6Ym9yZGVyQm94UmVjdChib3hHZW9tZXRy
eSk7CisgICAgICAgIGVuY2xvc2luZ0JvcmRlckJveFJlY3QuZXhwYW5kVG9Db250YWluKGxvZ2lj
YWxSZWN0KTsKKyAgICAgICAgYm94R2VvbWV0cnkuc2V0TG9naWNhbExlZnQoZW5jbG9zaW5nQm9y
ZGVyQm94UmVjdC5sZWZ0KCkpOworCisgICAgICAgIGJveEdlb21ldHJ5LnNldENvbnRlbnRCb3hI
ZWlnaHQoZW5jbG9zaW5nQm9yZGVyQm94UmVjdC5oZWlnaHQoKSAtIChib3hHZW9tZXRyeS52ZXJ0
aWNhbEJvcmRlcigpICsgYm94R2VvbWV0cnkudmVydGljYWxQYWRkaW5nKCkudmFsdWVfb3IoMF9s
dSkpKTsKKyAgICAgICAgYm94R2VvbWV0cnkuc2V0Q29udGVudEJveFdpZHRoKGVuY2xvc2luZ0Jv
cmRlckJveFJlY3Qud2lkdGgoKSAtIChib3hHZW9tZXRyeS5ob3Jpem9udGFsQm9yZGVyKCkgKyBi
b3hHZW9tZXRyeS5ob3Jpem9udGFsUGFkZGluZygpLnZhbHVlX29yKDBfbHUpKSk7CisgICAgfQor
fQorCit9Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVEaXNw
bGF5Q29udGVudEJ1aWxkZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMGQ1ZTFjMjkxNjM3MTUwYTM2YWViZWY5
MTc5MjExZTNmYmE4MDBhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmgK
QEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxF
KExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCisKKyNpbmNsdWRlICJJbmxpbmVMaW5lQnVpbGRl
ci5oIgorI2luY2x1ZGUgIkxheW91dFVuaXRzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25h
bWVzcGFjZSBMYXlvdXQgeworCitjbGFzcyBDb250YWluZXJCb3g7CitjbGFzcyBJbmxpbmVGb3Jt
YXR0aW5nU3RhdGU7CitjbGFzcyBMaW5lQm94OworCitjbGFzcyBJbmxpbmVEaXNwbGF5Q29udGVu
dEJ1aWxkZXIgeworcHVibGljOgorICAgIElubGluZURpc3BsYXlDb250ZW50QnVpbGRlcihjb25z
dCBDb250YWluZXJCb3gmIGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgSW5saW5lRm9ybWF0dGluZ1N0
YXRlJik7CisKKyAgICB2b2lkIGJ1aWxkKGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lQ29udGVudCYs
IGNvbnN0IExpbmVCb3gmLCBjb25zdCBJbmxpbmVMYXlvdXRQb2ludCYgbGluZUJveExvZ2ljYWxU
b3BMZWZ0LCBjb25zdCBzaXplX3QgbGluZUluZGV4KTsKKworcHJpdmF0ZToKKyAgICB2b2lkIGNy
ZWF0ZVJ1bnNBbmRVcGRhdGVHZW9tZXRyeUZvckxpbmVDb250ZW50KGNvbnN0IExpbmVCdWlsZGVy
OjpMaW5lQ29udGVudCYsIGNvbnN0IExpbmVCb3gmLCBjb25zdCBJbmxpbmVMYXlvdXRQb2ludCYg
bGluZUJveExvZ2ljYWxUb3BMZWZ0LCBjb25zdCBzaXplX3QgbGluZUluZGV4KTsKKyAgICB2b2lk
IGNyZWF0ZVJ1bnNBbmRVcGRhdGVHZW9tZXRyeUZvckxpbmVTcGFubmluZ0lubGluZUJveGVzKGNv
bnN0IExpbmVCb3gmLCBjb25zdCBJbmxpbmVMYXlvdXRQb2ludCYgbGluZUJveExvZ2ljYWxUb3BM
ZWZ0LCBjb25zdCBzaXplX3QgbGluZUluZGV4LCBzaXplX3QgbGluZVNwYW5uaW5nSW5saW5lQm94
SW5kZXgpOworCisgICAgY29uc3QgQ29udGFpbmVyQm94JiByb290KCkgY29uc3QgeyByZXR1cm4g
bV9mb3JtYXR0aW5nQ29udGV4dFJvb3Q7IH0KKyAgICBJbmxpbmVGb3JtYXR0aW5nU3RhdGUmIGZv
cm1hdHRpbmdTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9ybWF0dGluZ1N0YXRlOyB9IAorCisg
ICAgY29uc3QgQ29udGFpbmVyQm94JiBtX2Zvcm1hdHRpbmdDb250ZXh0Um9vdDsKKyAgICBJbmxp
bmVGb3JtYXR0aW5nU3RhdGUmIG1fZm9ybWF0dGluZ1N0YXRlOworfTsKKworfQorfQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMv
aW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcApp
bmRleCAzMDMyMmM3ZGM4OWE0ODlkMzUzYjRjYzAzMTQ3OGFiODU0YjM3MTEwLi45YWFhYTRkN2Ri
YmI1ZTg2MTJiNGQwODcxOWY1Mjk2MDAwNzI3MWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNs
dWRlICJGbG9hdGluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJGb250Q2FzY2FkZS5oIgorI2luY2x1
ZGUgIklubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5oIgogI2luY2x1ZGUgIklubGluZUZvcm1h
dHRpbmdTdGF0ZS5oIgogI2luY2x1ZGUgIklubGluZUxpbmVCb3guaCIKICNpbmNsdWRlICJJbmxp
bmVMaW5lQm94QnVpbGRlci5oIgpAQCAtMjA1LDcgKzIwNiw3IEBAIHZvaWQgSW5saW5lRm9ybWF0
dGluZ0NvbnRleHQ6OmxpbmVMYXlvdXQoSW5saW5lSXRlbXMmIGlubGluZUl0ZW1zLCBMaW5lQnVp
bGRlcjo6CiAgICAgICAgIH0oKTsKICAgICAgICAgYXV0byBpbml0aWFsTGluZUNvbnN0cmFpbnRz
ID0gSW5saW5lUmVjdCB7IGxpbmVMb2dpY2FsVG9wLCBjb25zdHJhaW50cy5ob3Jpem9udGFsKCku
bG9naWNhbExlZnQsIGNvbnN0cmFpbnRzLmhvcml6b250YWwoKS5sb2dpY2FsV2lkdGgsIGluaXRp
YWxMaW5lSGVpZ2h0IH07CiAgICAgICAgIGF1dG8gbGluZUNvbnRlbnQgPSBsaW5lQnVpbGRlci5s
YXlvdXRJbmxpbmVDb250ZW50KG5lZWRzTGF5b3V0UmFuZ2UsIHBhcnRpYWxMZWFkaW5nQ29udGVu
dExlbmd0aCwgbGVhZGluZ0xvZ2ljYWxXaWR0aCwgaW5pdGlhbExpbmVDb25zdHJhaW50cywgaXNG
aXJzdExpbmUpOwotICAgICAgICBhdXRvIGxpbmVMb2dpY2FsUmVjdCA9IGNvbXB1dGVHZW9tZXRy
eUZvckxpbmVDb250ZW50KGxpbmVDb250ZW50LCBjb25zdHJhaW50cy5ob3Jpem9udGFsKCkpOwor
ICAgICAgICBhdXRvIGxpbmVMb2dpY2FsUmVjdCA9IGNvbXB1dGVHZW9tZXRyeUZvckxpbmVDb250
ZW50KGxpbmVDb250ZW50KTsKIAogICAgICAgICBhdXRvIGxpbmVDb250ZW50UmFuZ2UgPSBsaW5l
Q29udGVudC5pbmxpbmVJdGVtUmFuZ2U7CiAgICAgICAgIGlmICghbGluZUNvbnRlbnRSYW5nZS5p
c0VtcHR5KCkpIHsKQEAgLTU2NywxMzkgKzU2OCwxOCBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdD
b250ZXh0Ojpjb2xsZWN0Q29udGVudElmTmVlZGVkKCkKICAgICB9CiB9CiAKLUlubGluZVJlY3Qg
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVHZW9tZXRyeUZvckxpbmVDb250ZW50KGNv
bnN0IExpbmVCdWlsZGVyOjpMaW5lQ29udGVudCYgbGluZUNvbnRlbnQsIGNvbnN0IEhvcml6b250
YWxDb25zdHJhaW50cyYgaG9yaXpvbnRhbENvbnN0cmFpbnRzKQorSW5saW5lUmVjdCBJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUdlb21ldHJ5Rm9yTGluZUNvbnRlbnQoY29uc3QgTGlu
ZUJ1aWxkZXI6OkxpbmVDb250ZW50JiBsaW5lQ29udGVudCkKIHsKICAgICBhdXRvJiBmb3JtYXR0
aW5nU3RhdGUgPSB0aGlzLT5mb3JtYXR0aW5nU3RhdGUoKTsKLSAgICBhdXRvJiBmb3JtYXR0aW5n
R2VvbWV0cnkgPSB0aGlzLT5mb3JtYXR0aW5nR2VvbWV0cnkoKTsKLSAgICBhdXRvIGxpbmVJbmRl
eCA9IGZvcm1hdHRpbmdTdGF0ZS5saW5lcygpLnNpemUoKTsKKyAgICBhdXRvIGN1cnJlbnRMaW5l
SW5kZXggPSBmb3JtYXR0aW5nU3RhdGUubGluZXMoKS5zaXplKCk7CiAKICAgICBhdXRvIGxpbmVC
b3hBbmRHZW9tZXRyeSA9IExpbmVCb3hCdWlsZGVyKCp0aGlzKS5idWlsZChsaW5lQ29udGVudCk7
CiAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZExpbmVCb3goV1RGTW92ZShsaW5lQm94QW5kR2VvbWV0
cnkubGluZUJveCkpOwogICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRMaW5lKGxpbmVCb3hBbmRHZW9t
ZXRyeS5saW5lR2VvbWV0cnkpOwogCi0gICAgY29uc3QgYXV0byYgbGluZUJveCA9IGZvcm1hdHRp
bmdTdGF0ZS5saW5lQm94ZXMoKS5sYXN0KCk7CiAgICAgYXV0byBsaW5lQm94TG9naWNhbFJlY3Qg
PSBsaW5lQm94QW5kR2VvbWV0cnkubGluZUdlb21ldHJ5LmxpbmVCb3hMb2dpY2FsUmVjdCgpOwog
Ci0gICAgLy8gRXZlcnkgbGluZSBzdGFydHMgd2l0aCBhIHJvb3QgcnVuLCBldmVuIHRoZSBlbXB0
eSBvbmVzLgotICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRMaW5lUnVuKHsgbGluZUluZGV4LCBMaW5l
UnVuOjpUeXBlOjpSb290SW5saW5lQm94LCByb290KCksIGxpbmVCb3gubG9naWNhbFJlY3RGb3JS
b290SW5saW5lQm94KCksIHsgfSwgeyB9LCAgbGluZUJveC5yb290SW5saW5lQm94KCkuaGFzQ29u
dGVudCgpfSk7Ci0KLSAgICBpZiAoIWxpbmVCb3guaGFzQ29udGVudCgpKSB7Ci0gICAgICAgIC8v
IEZhc3QgcGF0aCBmb3IgbGluZXMgd2l0aCBubyBjb250ZW50IGUuZy4gPGRpdj48c3Bhbj48L3Nw
YW4+PHNwYW4+PC9zcGFuPjwvZGl2PiBvciA8c3Bhbj48ZGl2PjwvZGl2Pjwvc3Bhbj4gd2hlcmUg
d2UgY29uc3RydWN0IGVtcHR5IHByZSBhbmQgcG9zdCBibG9ja3MuCi0gICAgICAgIEFTU0VSVCgh
bGluZUJveC5yb290SW5saW5lQm94KCkuaGFzQ29udGVudCgpICYmICFsaW5lQm94TG9naWNhbFJl
Y3QuaGVpZ2h0KCkpOwotICAgICAgICBhdXRvIHVwZGF0ZUlubGluZUJveGVzR2VvbWV0cnlJZkFw
cGxpY2FibGUgPSBbJl0gewotICAgICAgICAgICAgaWYgKCFsaW5lQm94Lmhhc0lubGluZUJveCgp
KQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIFZlY3Rvcjxjb25zdCBCb3gq
PiBsYXlvdXRCb3hMaXN0OwotICAgICAgICAgICAgLy8gQ29sbGVjdCB0aGUgZW1wdHkgaW5saW5l
IGJveGVzIHRoYXQgc2hvd2VkIHVwIGZpcnN0IG9uIHRoaXMgbGluZS4KLSAgICAgICAgICAgIC8v
IE5vdGUgdGhhdCBhbiBpbmxpbmUgYm94IGVuZCBvbiBhbiBlbXB0eSBsaW5lIGRvZXMgbm90IG1h
a2UgdGhlIGlubGluZSBib3ggdGFsbGVyLgotICAgICAgICAgICAgLy8gKGUuZy4gPGRpdj50ZXh0
PHNwYW4+PGJyPjwvc3Bhbj48L2Rpdj4pIDwtIHRoZSA8c3Bhbj4gaW5saW5lIGJveCBpcyBhcyB0
YWxsIGFzIHRoZSBsaW5lIGV2ZW4gdGhvdWdoIHRoZSA8L3NwYW4+IGlzIGFmdGVyIGEgPGJyPiBz
byB0ZWNobmljYWxseSBpcyBvbiB0aGUgZm9sbG93aW5nIChlbXB0eSlsaW5lLgotICAgICAgICAg
ICAgZm9yIChhdXRvJiBsaW5lUnVuIDogbGluZUNvbnRlbnQucnVucykgewotICAgICAgICAgICAg
ICAgIGlmIChsaW5lUnVuLmlzSW5saW5lQm94U3RhcnQoKSkKLSAgICAgICAgICAgICAgICAgICAg
bGF5b3V0Qm94TGlzdC5hcHBlbmQoJmxpbmVSdW4ubGF5b3V0Qm94KCkpOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgZm9yIChhdXRvKiBsYXlvdXRCb3ggOiBsYXlvdXRCb3hMaXN0KSB7Ci0g
ICAgICAgICAgICAgICAgYXV0byYgYm94R2VvbWV0cnkgPSBmb3JtYXR0aW5nU3RhdGUuYm94R2Vv
bWV0cnkoKmxheW91dEJveCk7Ci0gICAgICAgICAgICAgICAgYXV0byBpbmxpbmVCb3hMb2dpY2Fs
SGVpZ2h0ID0gTGF5b3V0VW5pdDo6ZnJvbUZsb2F0Q2VpbChsaW5lQm94LmxvZ2ljYWxCb3JkZXJC
b3hGb3JJbmxpbmVCb3goKmxheW91dEJveCwgYm94R2VvbWV0cnkpLmhlaWdodCgpKTsKLSAgICAg
ICAgICAgICAgICBib3hHZW9tZXRyeS5zZXRDb250ZW50Qm94SGVpZ2h0KGlubGluZUJveExvZ2lj
YWxIZWlnaHQpOwotICAgICAgICAgICAgICAgIGJveEdlb21ldHJ5LnNldENvbnRlbnRCb3hXaWR0
aCh7IH0pOwotICAgICAgICAgICAgICAgIGJveEdlb21ldHJ5LnNldExvZ2ljYWxUb3BMZWZ0KHRv
TGF5b3V0UG9pbnQobGluZUJveExvZ2ljYWxSZWN0LnRvcExlZnQoKSkpOwotICAgICAgICAgICAg
fQotICAgICAgICB9OwotICAgICAgICB1cGRhdGVJbmxpbmVCb3hlc0dlb21ldHJ5SWZBcHBsaWNh
YmxlKCk7Ci0gICAgICAgIHJldHVybiBsaW5lQm94TG9naWNhbFJlY3Q7Ci0gICAgfQotCi0gICAg
Ly8gU3Bhbm5pbmcgaW5saW5lIGJveGVzIHN0YXJ0IGF0IHRoZSB2ZXJ5IGJlZ2lubmluZyBvZiB0
aGUgbGluZS4KLSAgICBhdXRvIGxpbmVTcGFubmluZ0lubGluZUJveEluZGV4ID0gZm9ybWF0dGlu
Z1N0YXRlLmxpbmVSdW5zKCkuc2l6ZSgpOwotICAgIEhhc2hTZXQ8Y29uc3QgQm94Kj4gaW5saW5l
Qm94U3RhcnRTZXQ7Ci0gICAgYXV0byBjb25zdHJ1Y3RMaW5lUnVuc0FuZFVwZGF0ZUJveEdlb21l
dHJ5ID0gWyZdIHsKLSAgICAgICAgLy8gQ3JlYXRlIHRoZSBpbmxpbmUgcnVucyBvbiB0aGUgY3Vy
cmVudCBsaW5lLiBUaGlzIGlzIG1vc3RseSB0ZXh0IGFuZCBhdG9taWMgaW5saW5lIHJ1bnMuCi0g
ICAgICAgIGZvciAoYXV0byYgbGluZVJ1biA6IGxpbmVDb250ZW50LnJ1bnMpIHsKLSAgICAgICAg
ICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbm90IG5lZWQgdG8gY29uc3RydWN0IGEgbGluZSBydW4g
Zm9yIDxicj4uCi0gICAgICAgICAgICBhdXRvJiBsYXlvdXRCb3ggPSBsaW5lUnVuLmxheW91dEJv
eCgpOwotICAgICAgICAgICAgaWYgKGxpbmVSdW4uaXNUZXh0KCkpIHsKLSAgICAgICAgICAgICAg
ICBmb3JtYXR0aW5nU3RhdGUuYWRkTGluZVJ1bih7IGxpbmVJbmRleCwgTGluZVJ1bjo6VHlwZTo6
VGV4dCwgbGF5b3V0Qm94LCBsaW5lQm94LmxvZ2ljYWxSZWN0Rm9yVGV4dFJ1bihsaW5lUnVuKSwg
bGluZVJ1bi5leHBhbnNpb24oKSwgbGluZVJ1bi50ZXh0Q29udGVudCgpIH0pOwotICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGxpbmVSdW4u
aXNMaW5lQnJlYWsoKSkgewotICAgICAgICAgICAgICAgIGlmIChsYXlvdXRCb3guaXNMaW5lQnJl
YWtCb3goKSkgewotICAgICAgICAgICAgICAgICAgICAvLyBPbmx5IGhhcmQgbGluZWJyZWFrcyBo
YXZlIGFzc29jaWF0ZWQgbGF5b3V0IGJveGVzLgotICAgICAgICAgICAgICAgICAgICBhdXRvIGxp
bmVCcmVha0JveFJlY3QgPSBsaW5lQm94LmxvZ2ljYWxSZWN0Rm9yTGluZUJyZWFrQm94KGxheW91
dEJveCk7Ci0gICAgICAgICAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRMaW5lUnVuKHsg
bGluZUluZGV4LCBMaW5lUnVuOjpUeXBlOjpMaW5lQnJlYWtCb3gsIGxheW91dEJveCwgbGluZUJy
ZWFrQm94UmVjdCwgbGluZVJ1bi5leHBhbnNpb24oKSwgeyB9IH0pOwotCi0gICAgICAgICAgICAg
ICAgICAgIGF1dG8mIGJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ1N0YXRlLmJveEdlb21ldHJ5KGxh
eW91dEJveCk7Ci0gICAgICAgICAgICAgICAgICAgIGxpbmVCcmVha0JveFJlY3QubW92ZUJ5KGxp
bmVCb3hMb2dpY2FsUmVjdC50b3BMZWZ0KCkpOwotICAgICAgICAgICAgICAgICAgICBib3hHZW9t
ZXRyeS5zZXRMb2dpY2FsVG9wTGVmdCh0b0xheW91dFBvaW50KGxpbmVCcmVha0JveFJlY3QudG9w
TGVmdCgpKSk7Ci0gICAgICAgICAgICAgICAgICAgIGJveEdlb21ldHJ5LnNldENvbnRlbnRCb3hI
ZWlnaHQodG9MYXlvdXRVbml0KGxpbmVCcmVha0JveFJlY3QuaGVpZ2h0KCkpKTsKLSAgICAgICAg
ICAgICAgICB9IGVsc2UgCi0gICAgICAgICAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRM
aW5lUnVuKHsgbGluZUluZGV4LCBMaW5lUnVuOjpUeXBlOjpTb2Z0TGluZUJyZWFrLCBsYXlvdXRC
b3gsIGxpbmVCb3gubG9naWNhbFJlY3RGb3JUZXh0UnVuKGxpbmVSdW4pLCBsaW5lUnVuLmV4cGFu
c2lvbigpLCBsaW5lUnVuLnRleHRDb250ZW50KCkgfSk7Ci0gICAgICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAobGluZVJ1bi5pc0JveCgpKSB7Ci0g
ICAgICAgICAgICAgICAgQVNTRVJUKGxheW91dEJveC5pc0F0b21pY0lubGluZUxldmVsQm94KCkp
OwotICAgICAgICAgICAgICAgIGF1dG8mIGJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ1N0YXRlLmJv
eEdlb21ldHJ5KGxheW91dEJveCk7Ci0gICAgICAgICAgICAgICAgYXV0byBsb2dpY2FsQm9yZGVy
Qm94ID0gbGluZUJveC5sb2dpY2FsQm9yZGVyQm94Rm9yQXRvbWljSW5saW5lTGV2ZWxCb3gobGF5
b3V0Qm94LCBib3hHZW9tZXRyeSk7Ci0gICAgICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFk
ZExpbmVSdW4oeyBsaW5lSW5kZXgsIExpbmVSdW46OlR5cGU6OkF0b21pY0lubGluZUxldmVsQm94
LCBsYXlvdXRCb3gsIGxvZ2ljYWxCb3JkZXJCb3gsIGxpbmVSdW4uZXhwYW5zaW9uKCksIHsgfSB9
KTsKLQotICAgICAgICAgICAgICAgIGF1dG8gYm9yZGVyQm94TG9naWNhbFRvcExlZnQgPSBsb2dp
Y2FsQm9yZGVyQm94LnRvcExlZnQoKTsKLSAgICAgICAgICAgICAgICAvLyBOb3RlIHRoYXQgaW5s
aW5lIGJveGVzIGFyZSByZWxhdGl2ZSB0byB0aGUgbGluZSBhbmQgdGhlaXIgdG9wIHBvc2l0aW9u
IGNhbiBiZSBuZWdhdGl2ZS4KLSAgICAgICAgICAgICAgICBib3JkZXJCb3hMb2dpY2FsVG9wTGVm
dC5tb3ZlQnkobGluZUJveExvZ2ljYWxSZWN0LnRvcExlZnQoKSk7Ci0gICAgICAgICAgICAgICAg
aWYgKGxheW91dEJveC5pc0luRmxvd1Bvc2l0aW9uZWQoKSkKLSAgICAgICAgICAgICAgICAgICAg
Ym9yZGVyQm94TG9naWNhbFRvcExlZnQgKz0gZm9ybWF0dGluZ0dlb21ldHJ5LmluRmxvd1Bvc2l0
aW9uZWRQb3NpdGlvbk9mZnNldChsYXlvdXRCb3gsIGhvcml6b250YWxDb25zdHJhaW50cyk7Ci0g
ICAgICAgICAgICAgICAgLy8gQXRvbWljIGlubGluZSBib3hlcyBhcmUgYWxsIHNldC4gVGhlaXIg
bWFyZ2luL2JvcmRlci9jb250ZW50IGJveCBnZW9tZXRyaWVzIGFyZSBhbHJlYWR5IGNvbXB1dGVk
LiBXZSBqdXN0IGhhdmUgdG8gcG9zaXRpb24gdGhlbSBoZXJlLgotICAgICAgICAgICAgICAgIGJv
eEdlb21ldHJ5LnNldExvZ2ljYWxUb3BMZWZ0KHRvTGF5b3V0UG9pbnQoYm9yZGVyQm94TG9naWNh
bFRvcExlZnQpKTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGlmIChsaW5lUnVuLmlzSW5saW5lQm94U3RhcnQoKSkgewotICAgICAgICAgICAg
ICAgIGF1dG8mIGJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ1N0YXRlLmJveEdlb21ldHJ5KGxheW91
dEJveCk7Ci0gICAgICAgICAgICAgICAgYXV0byBpbmxpbmVCb3hMb2dpY2FsUmVjdCA9IGxpbmVC
b3gubG9naWNhbEJvcmRlckJveEZvcklubGluZUJveChsYXlvdXRCb3gsIGJveEdlb21ldHJ5KTsK
LSAgICAgICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkTGluZVJ1bih7IGxpbmVJbmRleCwg
TGluZVJ1bjo6VHlwZTo6Tm9uUm9vdElubGluZUJveCwgbGF5b3V0Qm94LCBpbmxpbmVCb3hMb2dp
Y2FsUmVjdCwgbGluZVJ1bi5leHBhbnNpb24oKSwgeyB9LCBsaW5lQm94LmlubGluZUxldmVsQm94
Rm9yTGF5b3V0Qm94KGxheW91dEJveCkuaGFzQ29udGVudCgpIH0pOwotICAgICAgICAgICAgICAg
IGlubGluZUJveFN0YXJ0U2V0LmFkZCgmbGF5b3V0Qm94KTsKLSAgICAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIEFTU0VSVChsaW5lUnVuLmlzSW5saW5l
Qm94RW5kKCkgfHwgbGluZVJ1bi5pc1dvcmRCcmVha09wcG9ydHVuaXR5KCkpOwotICAgICAgICB9
Ci0gICAgfTsKLSAgICBjb25zdHJ1Y3RMaW5lUnVuc0FuZFVwZGF0ZUJveEdlb21ldHJ5KCk7Ci0K
LSAgICBhdXRvIHVwZGF0ZUJveEdlb21ldHJ5Rm9ySW5saW5lQm94ZXMgPSBbJl0gewotICAgICAg
ICAvLyBGSVhNRTogV2UgbWF5IHdhbnQgdG8ga2VlcCBhcm91bmQgYW4gaW5saW5lIGJveCBvbmx5
IHNldC4KLSAgICAgICAgaWYgKCFsaW5lQm94Lmhhc0lubGluZUJveCgpKQotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAvLyBHcmFiIHRoZSBpbmxpbmUgYm94ZXMgKGV2ZW4gdGhvc2UgdGhh
dCBkb24ndCBoYXZlIGFzc29jaWF0ZWQgbGF5b3V0IGJveGVzIG9uIHRoZSBjdXJyZW50IGxpbmUg
ZHVlIHRvIGxpbmUgd3JhcHBpbmcpCi0gICAgICAgIC8vIGFuZCB1cGRhdGUgdGhlaXIgZ2VvbWV0
cmllcy4KLSAgICAgICAgZm9yIChhdXRvJiBpbmxpbmVMZXZlbEJveCA6IGxpbmVCb3gubm9uUm9v
dElubGluZUxldmVsQm94ZXMoKSkgewotICAgICAgICAgICAgaWYgKCFpbmxpbmVMZXZlbEJveC5p
c0lubGluZUJveCgpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgYXV0
byYgbGF5b3V0Qm94ID0gaW5saW5lTGV2ZWxCb3gubGF5b3V0Qm94KCk7Ci0gICAgICAgICAgICBh
dXRvJiBib3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdTdGF0ZS5ib3hHZW9tZXRyeShsYXlvdXRCb3gp
OwotICAgICAgICAgICAgLy8gSW5saW5lIGJveGVzIG1heSBvciBtYXkgbm90IGJlIHdyYXBwZWQg
YW5kIGhhdmUgcnVucyBvbiBtdWx0aXBsZSBsaW5lcyAoZS5nLiA8c3Bhbj5maXJzdCBsaW5lPGJy
PnNlY29uZCBsaW5lPGJyPnRoaXJkIGxpbmU8L3NwYW4+KQotICAgICAgICAgICAgYXV0byBpbmxp
bmVCb3hCb3JkZXJCb3ggPSBsaW5lQm94LmxvZ2ljYWxCb3JkZXJCb3hGb3JJbmxpbmVCb3gobGF5
b3V0Qm94LCBib3hHZW9tZXRyeSk7Ci0gICAgICAgICAgICBhdXRvIGlubGluZUJveFNpemUgPSBM
YXlvdXRTaXplIHsgTGF5b3V0VW5pdDo6ZnJvbUZsb2F0Q2VpbChpbmxpbmVCb3hCb3JkZXJCb3gu
d2lkdGgoKSksIExheW91dFVuaXQ6OmZyb21GbG9hdENlaWwoaW5saW5lQm94Qm9yZGVyQm94Lmhl
aWdodCgpKSB9OwotICAgICAgICAgICAgYXV0byBsb2dpY2FsUmVjdCA9IFJlY3QgeyBMYXlvdXRQ
b2ludCB7IGlubGluZUJveEJvcmRlckJveC50b3BMZWZ0KCkgfSwgaW5saW5lQm94U2l6ZSB9Owot
ICAgICAgICAgICAgbG9naWNhbFJlY3QubW92ZUJ5KExheW91dFBvaW50IHsgbGluZUJveExvZ2lj
YWxSZWN0LnRvcExlZnQoKSB9KTsKLSAgICAgICAgICAgIGlmIChpbmxpbmVCb3hTdGFydFNldC5j
b250YWlucygmbGF5b3V0Qm94KSkgewotICAgICAgICAgICAgICAgIC8vIFRoaXMgaW5saW5lIGJv
eCBzaG93ZWQgdXAgZmlyc3Qgb24gdGhpcyBsaW5lLgotICAgICAgICAgICAgICAgIGJveEdlb21l
dHJ5LnNldExvZ2ljYWxUb3BMZWZ0KGxvZ2ljYWxSZWN0LnRvcExlZnQoKSk7Ci0gICAgICAgICAg
ICAgICAgYXV0byBjb250ZW50Qm94SGVpZ2h0ID0gbG9naWNhbFJlY3QuaGVpZ2h0KCkgLSAoYm94
R2VvbWV0cnkudmVydGljYWxCb3JkZXIoKSArIGJveEdlb21ldHJ5LnZlcnRpY2FsUGFkZGluZygp
LnZhbHVlX29yKDBfbHUpKTsKLSAgICAgICAgICAgICAgICBib3hHZW9tZXRyeS5zZXRDb250ZW50
Qm94SGVpZ2h0KGNvbnRlbnRCb3hIZWlnaHQpOwotICAgICAgICAgICAgICAgIGF1dG8gY29udGVu
dEJveFdpZHRoID0gbG9naWNhbFJlY3Qud2lkdGgoKSAtIChib3hHZW9tZXRyeS5ob3Jpem9udGFs
Qm9yZGVyKCkgKyBib3hHZW9tZXRyeS5ob3Jpem9udGFsUGFkZGluZygpLnZhbHVlX29yKDBfbHUp
KTsKLSAgICAgICAgICAgICAgICBib3hHZW9tZXRyeS5zZXRDb250ZW50Qm94V2lkdGgoY29udGVu
dEJveFdpZHRoKTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIC8vIE1pZGRsZSBvciBlbmQgb2YgdGhlIGlubGluZSBib3guIExldCdzIHN0cmV0
Y2ggdGhlIGJveCBhcyBuZWVkZWQuCi0gICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUubGluZVJ1
bnMoKS5pbnNlcnQobGluZVNwYW5uaW5nSW5saW5lQm94SW5kZXgrKywgeyBsaW5lSW5kZXgsIExp
bmVSdW46OlR5cGU6Ok5vblJvb3RJbmxpbmVCb3gsIGxheW91dEJveCwgaW5saW5lQm94Qm9yZGVy
Qm94LCB7IH0sIHsgfSwgaW5saW5lTGV2ZWxCb3guaGFzQ29udGVudCgpLCB0cnVlIH0pOwotCi0g
ICAgICAgICAgICBhdXRvIGVuY2xvc2luZ0JvcmRlckJveFJlY3QgPSBCb3hHZW9tZXRyeTo6Ym9y
ZGVyQm94UmVjdChib3hHZW9tZXRyeSk7Ci0gICAgICAgICAgICBlbmNsb3NpbmdCb3JkZXJCb3hS
ZWN0LmV4cGFuZFRvQ29udGFpbihsb2dpY2FsUmVjdCk7Ci0gICAgICAgICAgICBib3hHZW9tZXRy
eS5zZXRMb2dpY2FsTGVmdChlbmNsb3NpbmdCb3JkZXJCb3hSZWN0LmxlZnQoKSk7Ci0KLSAgICAg
ICAgICAgIGJveEdlb21ldHJ5LnNldENvbnRlbnRCb3hIZWlnaHQoZW5jbG9zaW5nQm9yZGVyQm94
UmVjdC5oZWlnaHQoKSAtIChib3hHZW9tZXRyeS52ZXJ0aWNhbEJvcmRlcigpICsgYm94R2VvbWV0
cnkudmVydGljYWxQYWRkaW5nKCkudmFsdWVfb3IoMF9sdSkpKTsKLSAgICAgICAgICAgIGJveEdl
b21ldHJ5LnNldENvbnRlbnRCb3hXaWR0aChlbmNsb3NpbmdCb3JkZXJCb3hSZWN0LndpZHRoKCkg
LSAoYm94R2VvbWV0cnkuaG9yaXpvbnRhbEJvcmRlcigpICsgYm94R2VvbWV0cnkuaG9yaXpvbnRh
bFBhZGRpbmcoKS52YWx1ZV9vcigwX2x1KSkpOwotICAgICAgICB9Ci0gICAgfTsKLSAgICB1cGRh
dGVCb3hHZW9tZXRyeUZvcklubGluZUJveGVzKCk7Ci0gICAgCisgICAgSW5saW5lRGlzcGxheUNv
bnRlbnRCdWlsZGVyKHJvb3QoKSwgZm9ybWF0dGluZ1N0YXRlKS5idWlsZChsaW5lQ29udGVudCwg
Zm9ybWF0dGluZ1N0YXRlLmxpbmVCb3hlcygpLmxhc3QoKSwgbGluZUJveExvZ2ljYWxSZWN0LnRv
cExlZnQoKSwgY3VycmVudExpbmVJbmRleCk7CiAgICAgcmV0dXJuIGxpbmVCb3hMb2dpY2FsUmVj
dDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmgK
aW5kZXggOTU1YjQ1OWRmZGIzMmRjNzVlMTIwZGJhY2NjMzFhOTQwMTI2MGZjNi4uYjI3MGMxODEy
ZGM2NGE1MjM5ZDRmZmEzZDA1OWQ1ODQ5MGRiYjMwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRl
eHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGlu
ZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oCkBAIC03Miw3ICs3Miw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBjb21wdXRlV2lkdGhBbmRNYXJnaW4oY29uc3QgQm94JiwgY29uc3QgSG9yaXpvbnRh
bENvbnN0cmFpbnRzJik7CiAKICAgICB2b2lkIGNvbGxlY3RDb250ZW50SWZOZWVkZWQoKTsKLSAg
ICBJbmxpbmVSZWN0IGNvbXB1dGVHZW9tZXRyeUZvckxpbmVDb250ZW50KGNvbnN0IExpbmVCdWls
ZGVyOjpMaW5lQ29udGVudCYsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYpOworICAgIElu
bGluZVJlY3QgY29tcHV0ZUdlb21ldHJ5Rm9yTGluZUNvbnRlbnQoY29uc3QgTGluZUJ1aWxkZXI6
OkxpbmVDb250ZW50Jik7CiAgICAgdm9pZCBpbnZhbGlkYXRlRm9ybWF0dGluZ1N0YXRlKGNvbnN0
IEludmFsaWRhdGlvblN0YXRlJik7CiAKICAgICBjb25zdCBJbmxpbmVGb3JtYXR0aW5nR2VvbWV0
cnkgbV9pbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMZXZlbEJveC5oIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGV2ZWxC
b3guaAppbmRleCA4ODZjYTFmOGVlYzQ3NDRkMzRhOThlY2E1N2MwMDgwYjAxM2M4ODlhLi4yYTI5
NTY0MDg3YWEyYjBjM2Q1ZTA5N2E4ZTQxMmEwMjJkOWYzY2VkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMZXZlbEJveC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lu
bGluZUxldmVsQm94LmgKQEAgLTQxLDcgKzQxLDggQEAgY2xhc3MgTGluZUJveFZlcnRpY2FsQWxp
Z25lcjsKIAogY2xhc3MgSW5saW5lTGV2ZWxCb3ggewogcHVibGljOgotICAgIHN0YXRpYyBJbmxp
bmVMZXZlbEJveCBjcmVhdGVJbmxpbmVCb3goY29uc3QgQm94JiwgSW5saW5lTGF5b3V0VW5pdCBs
b2dpY2FsTGVmdCwgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgpOworICAgIGVudW0gY2xh
c3MgTGluZVNwYW5uaW5nSW5saW5lQm94IHsgWWVzLCBObyB9OworICAgIHN0YXRpYyBJbmxpbmVM
ZXZlbEJveCBjcmVhdGVJbmxpbmVCb3goY29uc3QgQm94JiwgSW5saW5lTGF5b3V0VW5pdCBsb2dp
Y2FsTGVmdCwgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgsIExpbmVTcGFubmluZ0lubGlu
ZUJveCA9IExpbmVTcGFubmluZ0lubGluZUJveDo6Tm8pOwogICAgIHN0YXRpYyBJbmxpbmVMZXZl
bEJveCBjcmVhdGVBdG9taWNJbmxpbmVMZXZlbEJveChjb25zdCBCb3gmLCBJbmxpbmVMYXlvdXRV
bml0IGxvZ2ljYWxMZWZ0LCBJbmxpbmVMYXlvdXRTaXplKTsKICAgICBzdGF0aWMgSW5saW5lTGV2
ZWxCb3ggY3JlYXRlTGluZUJyZWFrQm94KGNvbnN0IEJveCYsIElubGluZUxheW91dFVuaXQgbG9n
aWNhbExlZnQpOwogICAgIHN0YXRpYyBJbmxpbmVMZXZlbEJveCBjcmVhdGVHZW5lcmljSW5saW5l
TGV2ZWxCb3goY29uc3QgQm94JiwgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCk7CkBAIC02
NSwxNCArNjYsMTYgQEAgcHVibGljOgogICAgIGNvbnN0IEJveCYgbGF5b3V0Qm94KCkgY29uc3Qg
eyByZXR1cm4gKm1fbGF5b3V0Qm94OyB9CiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKCkg
Y29uc3QgeyByZXR1cm4gbV9sYXlvdXRCb3gtPnN0eWxlKCk7IH0KIAotICAgIGJvb2wgaXNJbmxp
bmVCb3goKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gVHlwZTo6SW5saW5lQm94IHx8IG1fdHlw
ZSA9PSBUeXBlOjpSb290SW5saW5lQm94OyB9CisgICAgYm9vbCBpc0lubGluZUJveCgpIGNvbnN0
IHsgcmV0dXJuIG1fdHlwZSA9PSBUeXBlOjpJbmxpbmVCb3ggfHwgaXNSb290SW5saW5lQm94KCkg
fHwgaXNMaW5lU3Bhbm5pbmdJbmxpbmVCb3goKTsgfQogICAgIGJvb2wgaXNSb290SW5saW5lQm94
KCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IFR5cGU6OlJvb3RJbmxpbmVCb3g7IH0KKyAgICBi
b29sIGlzTGluZVNwYW5uaW5nSW5saW5lQm94KCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IFR5
cGU6OkxpbmVTcGFubmluZ0lubGluZUJveDsgfQogICAgIGJvb2wgaXNBdG9taWNJbmxpbmVMZXZl
bEJveCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBUeXBlOjpBdG9taWNJbmxpbmVMZXZlbEJv
eDsgfQogICAgIGJvb2wgaXNMaW5lQnJlYWtCb3goKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0g
VHlwZTo6TGluZUJyZWFrQm94OyB9CiAgICAgYm9vbCBoYXNMaW5lQm94UmVsYXRpdmVBbGlnbm1l
bnQoKSBjb25zdDsKIAogICAgIGVudW0gY2xhc3MgVHlwZSA6IHVpbnQ4X3QgewogICAgICAgICBJ
bmxpbmVCb3ggICAgICAgICAgICAgPSAxIDw8IDAsCisgICAgICAgIExpbmVTcGFubmluZ0lubGlu
ZUJveCA9IDEgPDwgMSwKICAgICAgICAgUm9vdElubGluZUJveCAgICAgICAgID0gMSA8PCAxLAog
ICAgICAgICBBdG9taWNJbmxpbmVMZXZlbEJveCAgPSAxIDw8IDIsCiAgICAgICAgIExpbmVCcmVh
a0JveCAgICAgICAgICA9IDEgPDwgMywKQEAgLTEzOCw5ICsxNDEsOSBAQCBpbmxpbmUgSW5saW5l
TGV2ZWxCb3ggSW5saW5lTGV2ZWxCb3g6OmNyZWF0ZUF0b21pY0lubGluZUxldmVsQm94KGNvbnN0
IEJveCYgbGF5bwogICAgIHJldHVybiBJbmxpbmVMZXZlbEJveCB7IGxheW91dEJveCwgbG9naWNh
bExlZnQsIGxvZ2ljYWxTaXplLCBUeXBlOjpBdG9taWNJbmxpbmVMZXZlbEJveCB9OwogfQogCi1p
bmxpbmUgSW5saW5lTGV2ZWxCb3ggSW5saW5lTGV2ZWxCb3g6OmNyZWF0ZUlubGluZUJveChjb25z
dCBCb3gmIGxheW91dEJveCwgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCwgSW5saW5lTGF5
b3V0VW5pdCBsb2dpY2FsV2lkdGgpCitpbmxpbmUgSW5saW5lTGV2ZWxCb3ggSW5saW5lTGV2ZWxC
b3g6OmNyZWF0ZUlubGluZUJveChjb25zdCBCb3gmIGxheW91dEJveCwgSW5saW5lTGF5b3V0VW5p
dCBsb2dpY2FsTGVmdCwgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgsIExpbmVTcGFubmlu
Z0lubGluZUJveCBpc0xpbmVTcGFubmluZykKIHsKLSAgICByZXR1cm4gSW5saW5lTGV2ZWxCb3gg
eyBsYXlvdXRCb3gsIGxvZ2ljYWxMZWZ0LCBJbmxpbmVMYXlvdXRTaXplIHsgbG9naWNhbFdpZHRo
LCB7IH0gfSwgVHlwZTo6SW5saW5lQm94IH07CisgICAgcmV0dXJuIElubGluZUxldmVsQm94IHsg
bGF5b3V0Qm94LCBsb2dpY2FsTGVmdCwgSW5saW5lTGF5b3V0U2l6ZSB7IGxvZ2ljYWxXaWR0aCwg
eyB9IH0sIGlzTGluZVNwYW5uaW5nID09IExpbmVTcGFubmluZ0lubGluZUJveDo6WWVzID8gVHlw
ZTo6TGluZVNwYW5uaW5nSW5saW5lQm94IDogVHlwZTo6SW5saW5lQm94IH07CiB9CiAKIGlubGlu
ZSBJbmxpbmVMZXZlbEJveCBJbmxpbmVMZXZlbEJveDo6Y3JlYXRlTGluZUJyZWFrQm94KGNvbnN0
IEJveCYgbGF5b3V0Qm94LCBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5l
TGluZS5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
SW5saW5lTGluZS5oCmluZGV4IGM1Y2JhYmYxNjliMWU0YjdiMzM0MmNhNDA2OTA2NjY0OTVhYjhi
M2EuLjM2YWU3N2ZiMTA0OTQ4YzdjZTEzYzNkYWZlYTEzZmIyZjkzYWFjZjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxp
bmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGlu
ZS9JbmxpbmVMaW5lLmgKQEAgLTY4LDYgKzY4LDcgQEAgcHVibGljOgogICAgICAgICBib29sIGlz
V29yZEJyZWFrT3Bwb3J0dW5pdHkoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gSW5saW5lSXRl
bTo6VHlwZTo6V29yZEJyZWFrT3Bwb3J0dW5pdHk7IH0KICAgICAgICAgYm9vbCBpc0lubGluZUJv
eFN0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IElubGluZUl0ZW06OlR5cGU6OklubGlu
ZUJveFN0YXJ0OyB9CiAgICAgICAgIGJvb2wgaXNJbmxpbmVCb3hFbmQoKSBjb25zdCB7IHJldHVy
biBtX3R5cGUgPT0gSW5saW5lSXRlbTo6VHlwZTo6SW5saW5lQm94RW5kOyB9CisgICAgICAgIGF1
dG8gdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogCiAgICAgICAgIGNvbnN0IEJveCYg
bGF5b3V0Qm94KCkgY29uc3QgeyByZXR1cm4gKm1fbGF5b3V0Qm94OyB9CiAgICAgICAgIGNvbnN0
IFJlbmRlclN0eWxlJiBzdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5b3V0Qm94LT5zdHlsZSgp
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9JbmxpbmVMaW5lQm94QnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94QnVpbGRlci5jcHAKaW5kZXgg
OGE4ODFhNmM0NjZjOGI1Njk3MGM0ODBjMDQ4M2FhNzc2YTA0ZjlhMy4uNmNjNTJjMTFkM2Y0OTQ2
MzEzNDFkYTVkOGEzMjZjOGYyZGY0YmM2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveEJ1aWxkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGlu
ZUxpbmVCb3hCdWlsZGVyLmNwcApAQCAtMjYsNyArMjYsMTAgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJJbmxpbmVMaW5lQm94QnVpbGRlci5oIgogCisjaW5jbHVkZSAiSW5saW5l
TGluZUJveFZlcnRpY2FsQWxpZ25lci5oIgogI2luY2x1ZGUgIklubGluZUxpbmVCdWlsZGVyLmgi
CisjaW5jbHVkZSAiTGF5b3V0Qm94R2VvbWV0cnkuaCIKKyNpbmNsdWRlICJMYXlvdXRSZXBsYWNl
ZEJveC5oIgogCiAjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCiAKQEAgLTE5
MSw3ICsxOTQsNyBAQCBJbmxpbmVMYXlvdXRVbml0IExpbmVCb3hCdWlsZGVyOjpjb25zdHJ1Y3RB
bmRBbGlnbklubGluZUxldmVsQm94ZXMoTGluZUJveCYgbGluZQogICAgICAgICBjYW5Vc2VTaW1w
bGlmaWVkQWxpZ25tZW50ID0gTGluZUJveFZlcnRpY2FsQWxpZ25lcjo6Y2FuVXNlU2ltcGxpZmll
ZEFsaWdubWVudEZvcklubGluZUxldmVsQm94KHJvb3RJbmxpbmVCb3gsIGlubGluZUxldmVsQm94
LCBib3hHZW9tZXRyeSk7CiAgICAgfTsKIAotICAgIGF1dG8gY3JlYXRlV3JhcHBlZElubGluZUJv
eGVzID0gWyZdIHsKKyAgICBhdXRvIGNyZWF0ZUxpbmVTcGFubmluZ0lubGluZUJveGVzID0gWyZd
IHsKICAgICAgICAgaWYgKHJ1bnMuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAvLyBBbiBpbmxpbmUgYm94IG1heSBub3QgbmVjZXNzYXJpbHkgc3RhcnQgb24gdGhlIGN1
cnJlbnQgbGluZToKQEAgLTIyMCwxMyArMjIzLDEzIEBAIElubGluZUxheW91dFVuaXQgTGluZUJv
eEJ1aWxkZXI6OmNvbnN0cnVjdEFuZEFsaWduSW5saW5lTGV2ZWxCb3hlcyhMaW5lQm94JiBsaW5l
CiAgICAgICAgIH0KICAgICAgICAgLy8gQ29uc3RydWN0IHRoZSBtaXNzaW5nIExpbmVCb3g6Oklu
bGluZUJveGVzIHN0YXJ0aW5nIHdpdGggdGhlIHRvcG1vc3QgbGF5b3V0IGJveC4KICAgICAgICAg
Zm9yIChhdXRvKiBsYXlvdXRCb3ggOiBXVEY6Om1ha2VSZXZlcnNlZFJhbmdlKGxheW91dEJveGVz
V2l0aG91dElubGluZUJveGVzKSkgewotICAgICAgICAgICAgYXV0byBpbmxpbmVCb3ggPSBJbmxp
bmVMZXZlbEJveDo6Y3JlYXRlSW5saW5lQm94KCpsYXlvdXRCb3gsIHJvb3RJbmxpbmVCb3gubG9n
aWNhbExlZnQoKSwgcm9vdElubGluZUJveC5sb2dpY2FsV2lkdGgoKSk7CisgICAgICAgICAgICBh
dXRvIGlubGluZUJveCA9IElubGluZUxldmVsQm94OjpjcmVhdGVJbmxpbmVCb3goKmxheW91dEJv
eCwgcm9vdElubGluZUJveC5sb2dpY2FsTGVmdCgpLCByb290SW5saW5lQm94LmxvZ2ljYWxXaWR0
aCgpLCBJbmxpbmVMZXZlbEJveDo6TGluZVNwYW5uaW5nSW5saW5lQm94OjpZZXMpOwogICAgICAg
ICAgICAgc2V0VmVydGljYWxHZW9tZXRyeUZvcklubGluZUJveChpbmxpbmVCb3gpOwogICAgICAg
ICAgICAgdXBkYXRlQ2FuVXNlU2ltcGxpZmllZEFsaWdubWVudChpbmxpbmVCb3gpOwogICAgICAg
ICAgICAgbGluZUJveC5hZGRJbmxpbmVMZXZlbEJveChXVEZNb3ZlKGlubGluZUJveCkpOwogICAg
ICAgICB9CiAgICAgfTsKLSAgICBjcmVhdGVXcmFwcGVkSW5saW5lQm94ZXMoKTsKKyAgICBjcmVh
dGVMaW5lU3Bhbm5pbmdJbmxpbmVCb3hlcygpOwogCiAgICAgYXV0byBsaW5lSGFzQ29udGVudCA9
IGZhbHNlOwogICAgIGZvciAoYXV0byYgcnVuIDogcnVucykgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveEJ1
aWxkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L0lubGluZUxpbmVCb3hCdWlsZGVyLmgKaW5kZXggZWY2ODU3ZDhmMzhhNTE3MGIzMjYwZWI1NWZi
YzkxNzU5NjQ0MzRhZS4uYTAzOGU0ZDZiMGQyYzRmOWUzYjNlNzI3NzEwNmE3M2YxZTZiZmQwNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvSW5saW5lTGluZUJveEJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94QnVpbGRlci5oCkBAIC0yNyw3ICsy
Nyw5IEBACiAKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKIAorI2luY2x1
ZGUgIklubGluZUZvcm1hdHRpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiSW5saW5lTGluZUJveC5o
IgorI2luY2x1ZGUgIklubGluZUxpbmVCdWlsZGVyLmgiCiAjaW5jbHVkZSAiSW5saW5lTGluZUdl
b21ldHJ5LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM1LDcgKzM3LDYgQEAgbmFtZXNw
YWNlIExheW91dCB7CiAKIGNsYXNzIEJveDsKIGNsYXNzIENvbnRhaW5lckJveDsKLWNsYXNzIElu
bGluZUZvcm1hdHRpbmdDb250ZXh0OwogY2xhc3MgTGF5b3V0U3RhdGU7CiAKIGNsYXNzIExpbmVC
b3hCdWlsZGVyIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlv
bi9MYXlvdXRJbnRlZ3JhdGlvbklubGluZUNvbnRlbnRCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbklubGluZUNvbnRlbnRCdWls
ZGVyLmNwcAppbmRleCBlZTViNzQyM2QyMDkzZDBkMzNjMTMxNmFkY2RhZDExNWNmYTg2ZTdiLi41
ZTE4OGMxNzJkODU2NDJjZjA1MTIxNDkzNDA1MGQ3ZDljMTRmYTlhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25JbmxpbmVDb250
ZW50QnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xh
eW91dEludGVncmF0aW9uSW5saW5lQ29udGVudEJ1aWxkZXIuY3BwCkBAIC01NSw3ICs1NSw3IEBA
IGlubGluZSBMYXlvdXQ6OkxpbmVHZW9tZXRyeTo6RW5jbG9zaW5nVG9wQW5kQm90dG9tIG9wZXJh
dG9yKyhjb25zdCBMYXlvdXQ6OkxpbmVHCiAgICAgcmV0dXJuIHsgZW5jbG9zaW5nVG9wQW5kQm90
dG9tLnRvcCArIG9mZnNldCwgZW5jbG9zaW5nVG9wQW5kQm90dG9tLmJvdHRvbSArIG9mZnNldCB9
OwogfQogCi1pbmxpbmUgc3RhdGljIGZsb2F0IGxpbmVPdmVyZmxvd1dpZHRoKGNvbnN0IFJlbmRl
ckJsb2NrRmxvdyYgZmxvdywgSW5saW5lTGF5b3V0VW5pdCBsaW5lQm94TG9naWNhbFdpZHRoLCBJ
bmxpbmVMYXlvdXRVbml0IGxpbmVDb250ZW50TG9naWNhbFdpZHRoKQoraW5saW5lIHN0YXRpYyBm
bG9hdCBsaW5lT3ZlcmZsb3dXaWR0aChjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGZsb3csIExheW91
dDo6SW5saW5lTGF5b3V0VW5pdCBsaW5lQm94TG9naWNhbFdpZHRoLCBMYXlvdXQ6OklubGluZUxh
eW91dFVuaXQgbGluZUNvbnRlbnRMb2dpY2FsV2lkdGgpCiB7CiAgICAgLy8gRklYTUU6IEl0J3Mg
dGhlIGNvcHkgb2YgdGhlIGxldHMtYWRqdXN0LW92ZXJmbG93LWZvci10aGUtY2FyZXQgYmVoYXZp
b3IgZnJvbSBMZWdhY3lMaW5lTGF5b3V0OjphZGRPdmVyZmxvd0Zyb21JbmxpbmVDaGlsZHJlbi4K
ICAgICBhdXRvIGVuZFBhZGRpbmcgPSBmbG93Lmhhc05vblZpc2libGVPdmVyZmxvdygpID8gZmxv
dy5wYWRkaW5nRW5kKCkgOiAwX2x1OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW4uaAppbmRleCAxODkwODg3ZWIyYzAy
NTBkMzg5YjY2Nzk1ZGMyZjc3YmEzMTJmNWY0Li42ODA4ZTQyZDY3Y2Q0NTIwZGMxYWIxNzNhNTZi
ZDg0N2U5ZWViYjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRp
b24vTGF5b3V0SW50ZWdyYXRpb25SdW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50
ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW4uaApAQCAtNzMsNyArNzMsNyBAQCBzdHJ1Y3Qg
UnVuIHsKIAogICAgIHN0cnVjdCBFeHBhbnNpb24gewogICAgICAgICBFeHBhbnNpb25CZWhhdmlv
ciBiZWhhdmlvciB7IERlZmF1bHRFeHBhbnNpb24gfTsKLSAgICAgICAgSW5saW5lTGF5b3V0VW5p
dCBob3Jpem9udGFsRXhwYW5zaW9uIHsgMCB9OworICAgICAgICBMYXlvdXQ6OklubGluZUxheW91
dFVuaXQgaG9yaXpvbnRhbEV4cGFuc2lvbiB7IDAgfTsKICAgICB9OwogICAgIEV4cGFuc2lvbiBl
eHBhbnNpb24oKSBjb25zdCB7IHJldHVybiBtX2V4cGFuc2lvbjsgfQogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMmU0OGE0
ZjRhYThlYTRkZWUwNTgxMDQ5YzJiM2ZhYWE5NTc5YWE0MC4uYmNjZTQ4MmFjYzY1NmMzZWMwM2Iy
MDg4N2E3YTg0Y2U3NjJiZmJjZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIxLTA4LTI3ICBB
bGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbTEZDXVtJRkNdIE1vdmUg
Y29udGVudCBidWlsZGVyIGZ1bmN0aW9uYWxpdHkgdG8gYSBkZWRpY2F0ZWQgY2xhc3MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTYzMQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdEV4cGVjdGF0
aW9uczoKKwogMjAyMS0wOC0yNyAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNv
bT4KIAogICAgICAgICBbIENhdGFsaW5hIEVXUyBdIG1lZGlhL3RyYWNrL3RyYWNrLWRpc2FibGVk
LWFkZGN1ZS5odG1sIGlzIGZsYWt5IGNyYXNoaW5nCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9U
ZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA3ZjAz
ODcyNTk3NDlhNDczZGI4MjkyNWNhMTYxMmRiNGI4Mjg5ZTU3Li5hZTU2ZGU0YzUwYWI1MjA3ZDIz
MDYxYjkyOGMyZWYzZDkwNDMxYjI0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0
YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTUwMjMsNiArNTAy
MywxMCBAQCBmYXN0L2xheW91dGZvcm1hdHRpbmdjb250ZXh0L2Fic29sdXRlLXBvc2l0aW9uZWQt
Ym94LXdpdGgtaW5saW5lLXNpYmxpbmcuaHRtbCBbCiBbIERlYnVnIF0gZmFzdC9sYXlvdXRmb3Jt
YXR0aW5nY29udGV4dC90YWJsZS1maXhlZC13aWR0aC13aXRoLW1heC1kaXN0cmlidXRpb24uaHRt
bCBbIFNraXAgXQogWyBEZWJ1ZyBdIGZhc3QvbGF5b3V0Zm9ybWF0dGluZ2NvbnRleHQvdGFibGUt
c3BhY2UtZGlzdHJpYnV0aW9uLXNpbXBsZS1taXNtYXRjaGluZy5odG1sIFsgU2tpcCBdCiAKKyMg
TWlzc2luZyBwYWludGluZyBzdXBwb3J0IGZvciBpbi1mbG93IHBvc2l0aW9uaW5nCitmYXN0L2xh
eW91dGZvcm1hdHRpbmdjb250ZXh0L3JlcGxhY2VkLWJveC13aXRoLW1hcmdpbi1vbi1iYXNlbGlu
ZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCitmYXN0L2xheW91dGZvcm1hdHRpbmdjb250ZXh0
L3RhYmxlLWNlbGwtdmVydGljYWwtYWxpZ25tZW50LXNpbXBsZS5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCisKICMgVGhpcyB3ZWJzdG9yYWdlIHRlc3QgaGFzIGNyYXNoZWQgc2luY2UgaXQgd2Fz
IGltcG9ydGVkLgogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJzdG9yYWdlL3N0
b3JhZ2Vfc2Vzc2lvbl9zZXRpdGVtX3F1b3RhZXhjZWVkZWRlcnIud2luZG93Lmh0bWwgWyBTa2lw
IF0KICMgVGhpcyB3ZWJzdG9yYWdlIHRlc3QgaGFzIHRpbWVkIG91dCBzaW5jZSBpdCB3YXMgaW1w
b3J0ZWQuCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>