<?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>220728</bug_id>
          
          <creation_ts>2021-01-19 02:49:32 -0800</creation_ts>
          <short_desc>Implement visibility based resource load scheduling for low priority resources</short_desc>
          <delta_ts>2021-01-27 04:39:37 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Page Loading</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>
          
          <blocked>220726</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>annulen</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1720499</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-01-19 02:49:32 -0800</bug_when>
    <thetext>With HTTP/2 image loads can saturate the connection and cause the loading of more important resources to be delayed (https://blog.cloudflare.com/better-http-2-prioritization-for-a-faster-web/ for a pretty good analysis). We should do some scheduling in the network process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722037</commentid>
    <comment_count>1</comment_count>
      <attachid>418281</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-01-25 05:47:00 -0800</bug_when>
    <thetext>Created attachment 418281
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722437</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-01-26 02:50:14 -0800</bug_when>
    <thetext>&lt;rdar://problem/73610046&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722500</commentid>
    <comment_count>3</comment_count>
      <attachid>418415</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-01-26 07:02:11 -0800</bug_when>
    <thetext>Created attachment 418415
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722544</commentid>
    <comment_count>4</comment_count>
      <attachid>418429</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-01-26 09:17:35 -0800</bug_when>
    <thetext>Created attachment 418429
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722709</commentid>
    <comment_count>5</comment_count>
      <attachid>418429</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-01-26 13:46:02 -0800</bug_when>
    <thetext>Comment on attachment 418429
patch

r=me

I didn&apos;t check the EWS issues; might be something to fix before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722896</commentid>
    <comment_count>6</comment_count>
      <attachid>418522</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-01-27 03:26:48 -0800</bug_when>
    <thetext>Created attachment 418522
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1722910</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-01-27 04:39:33 -0800</bug_when>
    <thetext>Committed r271946: &lt;https://trac.webkit.org/changeset/271946&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 418522.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418281</attachid>
            <date>2021-01-25 05:47:00 -0800</date>
            <delta_ts>2021-01-26 07:02:11 -0800</delta_ts>
            <desc>patch</desc>
            <filename>load-scheduler-7.patch</filename>
            <type>text/plain</type>
            <size>52622</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggOWZlYTc0OTdlOWMyLi4xODI1YzE0NjA1N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIw
MjEtMDEtMjUgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgorCisgICAgICAgIElt
cGxlbWVudCB2aXNpYmlsaXR5IGJhc2VkIHJlc291cmNlIGxvYWQgc2NoZWR1bGluZyBmb3IgbG93
IHByaW9yaXR5IHJlc291cmNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjIwNzI4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBTY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwu
eWFtbDoKKworICAgICAgICBBZGQgYW4gaW50ZXJuYWwgc2V0dGluZywgZGVmYXVsdCB0byBvZmYg
Zm9yIG5vdy4KKwogMjAyMS0wMS0xOSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgogCiAgICAgICAgIFtXVEZdIFN0cmluZ0ltcGw6OnJlbW92ZUNoYXJhY3RlcnMgc2hvdWxkIGJl
IGlubGluZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQ
cmVmZXJlbmNlc0ludGVybmFsLnlhbWwgYi9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMv
V2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55YW1sCmluZGV4IGI0YjY0ZTFhNWI2NS4uOTZhMDZmNjg1
ZDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVy
ZW5jZXNJbnRlcm5hbC55YW1sCisrKyBiL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9X
ZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwKQEAgLTU5OSw2ICs1OTksMTggQEAgUHJlZml4ZWRX
ZWJBdWRpb0VuYWJsZWQ6CiAgICAgV2ViQ29yZToKICAgICAgIGRlZmF1bHQ6IGZhbHNlCiAKK1Jl
c291cmNlTG9hZFNjaGVkdWxpbmdFbmFibGVkOgorICB0eXBlOiBib29sCisgIGh1bWFuUmVhZGFi
bGVOYW1lOiAiUmVzb3VyY2UgTG9hZCBTY2hlZHVsaW5nIgorICBodW1hblJlYWRhYmxlRGVzY3Jp
cHRpb246ICJOZXR3b3JrIHByb2Nlc3Mgc2lkZSBwcmlvcml0eSBhbmQgdmlzaWJpbGl0eSBiYXNl
ZCByZXNvdXJjZSBsb2FkIHNjaGVkdWxpbmciCisgIGRlZmF1bHRWYWx1ZToKKyAgICBXZWJLaXRM
ZWdhY3k6CisgICAgICBkZWZhdWx0OiBmYWxzZQorICAgIFdlYktpdDoKKyAgICAgIGRlZmF1bHQ6
IGZhbHNlCisgICAgV2ViQ29yZToKKyAgICAgIGRlZmF1bHQ6IGZhbHNlCisKICMgRklYTUU6IFRo
aXMgaXMgbm90IHJlbGV2ZW50IGZvciBXZWJLaXRMZWdhY3ksIHNvIHNob3VsZCBiZSBleGNsdWRl
ZCBmcm9tIFdlYktpdExlZ2FjeSBlbnRpcmVseS4KIFJlc3RyaWN0ZWRIVFRQUmVzcG9uc2VBY2Nl
c3M6CiAgIHR5cGU6IGJvb2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjMDI3MGZhNzA3MjAuLmViNTRhZmUwOWM5
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDIxLTAxLTI1ICBBbnR0aSBLb2l2aXN0
byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgdmlzaWJpbGl0eSBiYXNl
ZCByZXNvdXJjZSBsb2FkIHNjaGVkdWxpbmcgZm9yIGxvdyBwcmlvcml0eSByZXNvdXJjZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDcyOAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRyYWNrIGxvYWQg
c2NoZWR1bGluZyBtb2RlIGR1cmluZyBvbiBwZXIgcGFnZSBiYXNpcy4KKyAgICAgICAgQWRkIHN1
cHBvcnQgZm9yIHByaW9yaXRpemluZyByZXNvdXJjZXMgYmFzZWQgb24gdGhlaXIgdmlzaWJpbGl0
eS4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGxvYWRlci9Mb2FkZXJTdHJhdGVneS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMb2FkZXJTdHJhdGVneTo6c2V0UmVzb3VyY2VMb2FkU2NoZWR1
bGluZ01vZGUpOgorICAgICAgICAoV2ViQ29yZTo6TG9hZGVyU3RyYXRlZ3k6OnByaW9yaXRpemVS
ZXNvdXJjZUxvYWRzKToKKyAgICAgICAgKiBsb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaDoKKyAgICAg
ICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6ZGlkU3RhcnRQcm92
aXNpb25hbExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6ZGlkRmluaXNoTG9hZCk6CisK
KyAgICAgICAgU2hlZHVsZWQgbW9kZXMgaXMgaXMgZGlzYWJsZWQgYXQgbGF0ZXN0IHdoZW4gdGhl
IGxvYWQgY29tcGxldGVzLgorCisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpkb0FmdGVyVXBkYXRl
UmVuZGVyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnByaW9yaXRpemVWaXNpYmxlUmVz
b3VyY2VzKToKKworICAgICAgICBBZnRlciByZW5kZXJpbmcgdXBkYXRlLCBpZiBpbiBzY2hlZHVs
ZWQgbW9kZSwgY2hlY2sgdGhlIHZpc2liaWxpdHkgc3RhdHVzIG9mIGltYWdlcyByZXNvdXJjZXMu
CisgICAgICAgIFByaW9yaXRpemUgbG9hZHMgZm9yIHZpc2libGUgcmVzb3VyY2VzLgorICAgICAg
ICBNb3ZlIG91dCBvZiB0aGUgc2hjZWR1bGVkIG1vZGUgaWYgdGhlIGRvY3VtZW50IGlzIGZ1bGx5
IHBhcnNlZCBhbmQgYWxsIHZpc2liaWxlIGxvYWRzIGFyZSBjb21wbGV0ZWQuCisKKyAgICAgICAg
KFdlYkNvcmU6OlBhZ2U6OnNldExvYWRTY2hlZHVsaW5nTW9kZSk6CisgICAgICAgICogcGFnZS9Q
YWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpsb2FkU2NoZWR1bGluZ01vZGUgY29uc3Qp
OgorCiAyMDIxLTAxLTIwICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAg
ICAgICBJbXBsZW1lbnQgZWZmaWNpZW50IHdheSB0byBjb2xsZWN0IGltYWdlcyB0aGF0IGFyZSBs
aWtlbHkgdmlzaWJsZSBpbiB0aGUgdmlld3BvcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IGFkZTVj
NjkwMjQyOS4uNDJiN2ExZmIxMzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJz
LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTc3Miw2ICs3NzIs
NyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgbG9hZGVyL0lt
YWdlTG9hZGVyLmgKICAgICBsb2FkZXIvTGlua0xvYWRlci5oCiAgICAgbG9hZGVyL0xpbmtMb2Fk
ZXJDbGllbnQuaAorICAgIGxvYWRlci9Mb2FkU2NoZWR1bGluZ01vZGUuaAogICAgIGxvYWRlci9M
b2FkVGltaW5nLmgKICAgICBsb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaAogICAgIGxvYWRlci9NZWRp
YVJlc291cmNlTG9hZGVyLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCAxOTM1MDRkYzQzYjYuLmRkNGJkMTlmOWE4NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MzAyLDYgKzMwMiw3IEBACiAJCTBGNDk2NkFCMURCNDBDNDMwMEEyNzRCQiAvKiBKU0RPTVBvaW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ5NjZB
NTFEQjQwQzQzMDBBMjc0QkIgLyogSlNET01Qb2ludC5oICovOyB9OwogCQkwRjQ5NjZBRDFEQjQw
QzQzMDBBMjc0QkIgLyogSlNET01Qb2ludEluaXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDk2NkE3MURCNDBDNDMwMEEyNzRCQiAvKiBKU0RPTVBv
aW50SW5pdC5oICovOyB9OwogCQkwRjQ5NjZBRjFEQjQwQzQzMDBBMjc0QkIgLyogSlNET01Qb2lu
dFJlYWRPbmx5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjQ5NjZBOTFEQjQwQzQzMDBBMjc0QkIgLyogSlNET01Qb2ludFJlYWRPbmx5LmggKi87IH07
CisJCTBGNTNGQjg0MjEzQjdBNjQwMEM0MEQzNCAvKiBSZW5kZXJMYXllclNjcm9sbGFibGVBcmVh
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjUzRkI4
NDIxM0I3ODY0MDBDNDBEMzQgLyogUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNTREQ0U2MTg4MTA1
MUQwMDNFRURCQiAvKiBUZXh0QXV0b1NpemluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1NERDRTQxODgxMDUxRDAwM0VFREJCIC8qIFRleHRBdXRv
U2l6aW5nLmggKi87IH07CiAJCTBGNTRERDA4MTg4MUQ1RjUwMDNFRURCQiAvKiBUb3VjaC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1NEREMDUxODgx
RDVGNTAwM0VFREJCIC8qIFRvdWNoLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMEY1NEREMDkxODgxRDVGNTAwM0VFREJCIC8qIFRvdWNoRXZlbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNTRERDA2
MTg4MUQ1RjUwMDNFRURCQiAvKiBUb3VjaEV2ZW50LmggKi87IH07CkBAIC00MDg1LDcgKzQwODYs
NiBAQAogCQlCQ0VBNDg3NjA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVySW1hZ2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUE0ODM3MDk3RDkzMDIw
MDk0QzlFNCAvKiBSZW5kZXJJbWFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUJDRUE0ODc4MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJJbmxp
bmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUE0
ODM5MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJJbmxpbmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0VBNDg3QTA5N0Q5MzAyMDA5NEM5RTQg
LyogUmVuZGVyTGF5ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDRUE0ODNCMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJMYXllci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTBGNTNGQjg0MjEzQjdB
NjQwMEM0MEQzNCAvKiBSZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjUzRkI4NDIxM0I3ODY0MDBDNDBEMzQg
LyogUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDRUE0ODgwMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5k
ZXJPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDRUE0ODQxMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJPYmplY3QuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0VBNDg4NzA5N0Q5MzAyMDA5
NEM5RTQgLyogUmVuZGVyVGhlbWVNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDRUE0ODQ4MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJUaGVtZU1h
Yy5oICovOyB9OwogCQlCQ0VBNDg4QTA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyVGhlbWUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUE0ODRCMDk3
RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJUaGVtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC01MTM4LDYgKzUxMzgsNyBAQAogCQlFNDdDMzkzMjFG
RTZFMTA1MDBCQkJDNkIgLyogUmVuZGVyVHJlZUJ1aWxkZXJMaXN0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDdDMzkyODFGRTZFMEREMDBCQkJDNkIg
LyogUmVuZGVyVHJlZUJ1aWxkZXJMaXN0LmggKi87IH07CiAJCUU0N0MzOTMzMUZFNkUxMDgwMEJC
QkM2QiAvKiBSZW5kZXJUcmVlQnVpbGRlck11bHRpQ29sdW1uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDdDMzkyNzFGRTZFMERDMDBCQkJDNkIgLyog
UmVuZGVyVHJlZUJ1aWxkZXJNdWx0aUNvbHVtbi5oICovOyB9OwogCQlFNDdFMjc2NTE2MDM2RUQy
MDBFRTJBRkIgLyogRXh0ZW5zaW9uU3R5bGVTaGVldHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0N0UyNzY0MTYwMzZFRDIwMEVFMkFGQiAvKiBFeHRl
bnNpb25TdHlsZVNoZWV0cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCUU0N0ZDOEEzMjVCODRENzIwMDU0OTVGQyAvKiBMb2FkU2NoZWR1bGluZ01v
ZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0N0ZD
OEExMjVCODRENzEwMDU0OTVGQyAvKiBMb2FkU2NoZWR1bGluZ01vZGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNDgxMzdCOTFEQjNCNTI2MDA1
QzU5QkYgLyogU3R5bGVWYWxpZGl0eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTQ4MTM3QjgxREIzQjUyNjAwNUM1OUJGIC8qIFN0eWxlVmFsaWRpdHku
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNDg2
M0NGRTIzODQyRTlFMDA5NzIxNTggLyogUnVsZURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0ODYzQ0ZEMjM4NDJFOUUwMDk3MjE1OCAvKiBSdWxl
RGF0YS5oICovOyB9OwogCQlFNDk0NkVBRjE1NkU2NEREMDBEMzI5N0YgLyogU3R5bGVSdWxlSW1w
b3J0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDk0
NkVBRDE1NkU2NEREMDBEMzI5N0YgLyogU3R5bGVSdWxlSW1wb3J0LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE2MzE1LDYgKzE2MzE2LDcgQEAK
IAkJRTQ3QzM5MkMxRkU2RTBERjAwQkJCQzZCIC8qIFJlbmRlclRyZWVVcGRhdGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlclRyZWVVcGRhdGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0N0UyNzY0MTYwMzZFRDIwMEVFMkFGQiAvKiBFeHRlbnNp
b25TdHlsZVNoZWV0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeHRlbnNp
b25TdHlsZVNoZWV0cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDdFMjc2NzE2
MDM2RURDMDBFRTJBRkIgLyogRXh0ZW5zaW9uU3R5bGVTaGVldHMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXh0ZW5zaW9uU3R5bGVTaGVldHMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlFNDdGQzhBMTI1Qjg0RDcxMDA1NDk1RkMgLyogTG9hZFNj
aGVkdWxpbmdNb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvYWRTY2hl
ZHVsaW5nTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDgxMzdCODFEQjNC
NTI2MDA1QzU5QkYgLyogU3R5bGVWYWxpZGl0eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTdHlsZVZhbGlkaXR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0
ODYzQ0ZBMjM4NDJFODcwMDk3MjE1OCAvKiBSdWxlRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSdWxlRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUU0ODYzQ0ZEMjM4NDJFOUUwMDk3MjE1OCAvKiBSdWxlRGF0YS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSdWxlRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMjczNjcsNiArMjczNjksNyBAQAogCQkJCTUxRTY4MjBGMTYzODczMDIwMDNCQkYz
QyAvKiBMb2FkZXJTdHJhdGVneS5oICovLAogCQkJCTg2MUMyRUEzMTNGQjRGREQwMDA2MkFCQiAv
KiBMb2FkVGltaW5nLmNwcCAqLywKIAkJCQk4QTEyRTM1QzExRkEzMzI4MDAyNTgzNkEgLyogTG9h
ZFRpbWluZy5oICovLAorCQkJCUU0N0ZDOEExMjVCODRENzEwMDU0OTVGQyAvKiBMb2FkU2NoZWR1
bGluZ01vZGUuaCAqLywKIAkJCQlDRUVGQ0Q3NzE5REIzMUY3MDAzODc2RDcgLyogTWVkaWFSZXNv
dXJjZUxvYWRlci5jcHAgKi8sCiAJCQkJQ0VFRkNENzgxOURCMzFGNzAwMzg3NkQ3IC8qIE1lZGlh
UmVzb3VyY2VMb2FkZXIuaCAqLywKIAkJCQk1MkYxMDg2MjE2MkI2RDgyMDA5QUM4MUUgLyogTWl4
ZWRDb250ZW50Q2hlY2tlci5jcHAgKi8sCkBAIC0zNDkwMSw2ICszNDkwNCw3IEBACiAJCQkJNzFB
NTdERjIxNTRCRTI1QzAwMDlEMTIwIC8qIFNWR1BhdGhVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCUIyMjI3QTg4MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQYXR0ZXJuRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJN0NFNThENEExREQ2NEE1QjAwMTI4NTUyIC8qIFNWR1BvaW50Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQlFNDdGQzhBMzI1Qjg0RDcyMDA1NDk1RkMgLyogTG9hZFNjaGVk
dWxpbmdNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0E4QzBEMDBCRjIyMDA3MUI3ODIg
LyogU1ZHUG9pbnRMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0E4RjBEMDBCRjIyMDA3
MUI3ODIgLyogU1ZHUG9seUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QTkxMEQw
MEJGMjIwMDcxQjc4MiAvKiBTVkdQb2x5Z29uRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZFNjaGVkdWxpbmdNb2RlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTG9hZFNjaGVkdWxpbmdNb2RlLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwLi43MGJlODBjZDhkMzgKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZFNjaGVkdWxpbmdNb2RlLmgKQEAgLTAsMCArMSw0NyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIGNsYXNzIExvYWRTY2hlZHVsaW5nTW9k
ZSA6IHVpbnQ4X3QgeworICAgIERpcmVjdCwgLy8gQWxsIGxvYWRzIGFyZSBpc3N1ZWQgZGlyZWN0
bHkgdG8gbmV0d29yayBsYXllci4KKyAgICBQcmlvcml0aXplZCAvLyBMb3cgcHJpb3JpdHkgbG9h
ZHMgbWF5IGdldCBkZWxheWVkIGluIGZhdm9yIG9mIGhpZ2hlciBwcmlvcml0eSBvbmVzLgorfTsK
KworfQorCituYW1lc3BhY2UgV1RGIHsKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2Vi
Q29yZTo6TG9hZFNjaGVkdWxpbmdNb2RlPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVl
czwKKyAgICAgICAgV2ViQ29yZTo6TG9hZFNjaGVkdWxpbmdNb2RlLAorICAgICAgICBXZWJDb3Jl
OjpMb2FkU2NoZWR1bGluZ01vZGU6OkRpcmVjdCwKKyAgICAgICAgV2ViQ29yZTo6TG9hZFNjaGVk
dWxpbmdNb2RlOjpQcmlvcml0aXplZAorICAgID47Cit9OworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0ZWd5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Mb2FkZXJTdHJhdGVneS5jcHAKaW5kZXggOGM2MzYxZjY3YzM5Li44YjU1ODFkYjRmMjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVneS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0ZWd5LmNwcApAQCAtMzIsNiArMzIsMTUg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBMb2FkZXJTdHJhdGVneTo6fkxvYWRlclN0cmF0ZWd5
KCkgPSBkZWZhdWx0OwogCisKK3ZvaWQgTG9hZGVyU3RyYXRlZ3k6OnNldFJlc291cmNlTG9hZFNj
aGVkdWxpbmdNb2RlKFBhZ2UmLCBMb2FkU2NoZWR1bGluZ01vZGUpCit7Cit9CisKK3ZvaWQgTG9h
ZGVyU3RyYXRlZ3k6OnByaW9yaXRpemVSZXNvdXJjZUxvYWRzKGNvbnN0IFZlY3RvcjxTdWJyZXNv
dXJjZUxvYWRlcio+JikKK3sKK30KKwogUmVzb3VyY2VSZXNwb25zZSBMb2FkZXJTdHJhdGVneTo6
cmVzcG9uc2VGcm9tUmVzb3VyY2VMb2FkSWRlbnRpZmllcih1aW50NjRfdCAvKiByZXNvdXJjZUxv
YWRJZGVudGlmaWVyICovKQogewogICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9M
b2FkZXJTdHJhdGVneS5oCmluZGV4IDYwOTdkMjY1MDc2Ni4uMWE0MjJkNzVlZjUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdt
YSBvbmNlCiAKICNpbmNsdWRlICJGZXRjaE9wdGlvbnMuaCIKKyNpbmNsdWRlICJMb2FkU2NoZWR1
bGluZ01vZGUuaCIKICNpbmNsdWRlICJQYWdlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlc291
cmNlTG9hZFByaW9yaXR5LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgiCkBA
IC02OSw2ICs3MCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc3VzcGVuZFBlbmRpbmdS
ZXF1ZXN0cygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lUGVuZGluZ1JlcXVlc3RzKCkg
PSAwOwogCisgICAgdmlydHVhbCB2b2lkIHNldFJlc291cmNlTG9hZFNjaGVkdWxpbmdNb2RlKFBh
Z2UmLCBMb2FkU2NoZWR1bGluZ01vZGUpOworICAgIHZpcnR1YWwgdm9pZCBwcmlvcml0aXplUmVz
b3VyY2VMb2Fkcyhjb25zdCBWZWN0b3I8U3VicmVzb3VyY2VMb2FkZXIqPiYpOworCiAgICAgdmly
dHVhbCBib29sIHVzZVBpbmdMb2FkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHVzaW5n
IFBpbmdMb2FkQ29tcGxldGlvbkhhbmRsZXIgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgUmVz
b3VyY2VFcnJvciYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKT47CiAgICAgdmlydHVhbCB2b2lk
IHN0YXJ0UGluZ0xvYWQoRnJhbWUmLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBIVFRQSGVhZGVy
TWFwJiBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBjb25zdCBGZXRjaE9wdGlvbnMmLCBDb250ZW50
U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uLCBQaW5nTG9hZENvbXBsZXRpb25IYW5kbGVyJiYgPSB7
IH0pID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IGNlOTE2ZjhmMjA5MS4uYjk3ZWFmM2Y3MDQw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJCYWNrRm9y
d2FyZENsaWVudC5oIgogI2luY2x1ZGUgIkJhY2tGb3J3YXJkQ29udHJvbGxlci5oIgogI2luY2x1
ZGUgIkNhY2hlU3RvcmFnZVByb3ZpZGVyLmgiCisjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKICNp
bmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIkNocm9tZS5oIgogI2lu
Y2x1ZGUgIkNocm9tZUNsaWVudC5oIgpAQCAtMTIzMiw2ICsxMjMzLDkgQEAgdm9pZCBQYWdlOjpk
aWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpCiB7CiAgICAgaWYgKG1fcGVyZm9ybWFuY2VNb25pdG9y
KQogICAgICAgICBtX3BlcmZvcm1hbmNlTW9uaXRvci0+ZGlkU3RhcnRQcm92aXNpb25hbExvYWQo
KTsKKworICAgIGlmIChtX3NldHRpbmdzLT5yZXNvdXJjZUxvYWRTY2hlZHVsaW5nRW5hYmxlZCgp
KQorICAgICAgICBzZXRMb2FkU2NoZWR1bGluZ01vZGUoTG9hZFNjaGVkdWxpbmdNb2RlOjpQcmlv
cml0aXplZCk7CiB9CiAKIHZvaWQgUGFnZTo6ZGlkQ29tbWl0TG9hZCgpCkBAIC0xMjQ5LDYgKzEy
NTMsOCBAQCB2b2lkIFBhZ2U6OmRpZEZpbmlzaExvYWQoKQogCiAgICAgaWYgKG1fcGVyZm9ybWFu
Y2VNb25pdG9yKQogICAgICAgICBtX3BlcmZvcm1hbmNlTW9uaXRvci0+ZGlkRmluaXNoTG9hZCgp
OworCisgICAgc2V0TG9hZFNjaGVkdWxpbmdNb2RlKExvYWRTY2hlZHVsaW5nTW9kZTo6RGlyZWN0
KTsKIH0KIAogYm9vbCBQYWdlOjppc09ubHlOb25VdGlsaXR5UGFnZSgpIGNvbnN0CkBAIC0xNjA3
LDYgKzE2MTMsOCBAQCB2b2lkIFBhZ2U6OmRvQWZ0ZXJVcGRhdGVSZW5kZXJpbmcoKQogICAgIH0p
OwogI2VuZGlmCiAKKyAgICBwcmlvcml0aXplVmlzaWJsZVJlc291cmNlcygpOworCiAgICAgbV9y
ZW5kZXJpbmdVcGRhdGVSZW1haW5pbmdTdGVwcy5sYXN0KCkucmVtb3ZlKFJlbmRlcmluZ1VwZGF0
ZVN0ZXA6OkV2ZW50UmVnaW9uVXBkYXRlKTsKIAogI2lmIEVOQUJMRShJT1NfVE9VQ0hfRVZFTlRT
KQpAQCAtMTY3Niw2ICsxNjg0LDQ0IEBAIHZvaWQgUGFnZTo6cmVuZGVyaW5nVXBkYXRlQ29tcGxl
dGVkKCkKICAgICB9CiB9CiAKK3ZvaWQgUGFnZTo6cHJpb3JpdGl6ZVZpc2libGVSZXNvdXJjZXMo
KQoreworICAgIGlmIChsb2FkU2NoZWR1bGluZ01vZGUoKSA9PSBMb2FkU2NoZWR1bGluZ01vZGU6
OkRpcmVjdCkKKyAgICAgICAgcmV0dXJuOworICAgIGlmICghbWFpbkZyYW1lKCkuZG9jdW1lbnQo
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgVmVjdG9yPENhY2hlZFJlc291cmNlKj4gdG9Qcmlv
cml0aXplOworCisgICAgZm9yRWFjaERvY3VtZW50KFsmXSAoRG9jdW1lbnQmIGRvY3VtZW50KSB7
CisgICAgICAgIHRvUHJpb3JpdGl6ZS5hcHBlbmRWZWN0b3IoZG9jdW1lbnQuY2FjaGVkUmVzb3Vy
Y2VMb2FkZXIoKS52aXNpYmxlUmVzb3VyY2VzVG9Qcmlvcml0aXplKCkpOworICAgIH0pOworCisg
ICAgaWYgKHRvUHJpb3JpdGl6ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKCFtYWluRnJhbWUo
KS5kb2N1bWVudCgpLT5wYXJzaW5nKCkpIHsKKyAgICAgICAgICAgIC8vIEFsbCB2aXNpYmxlIHJl
c291cmNlcyBoYXZlIGJlZW4gbG9hZGVkIGFuZCB3ZSBhcmUgZG9uZSB3aXRoIHBhcnNpbmcuIFN0
b3Agc2NoZWR1bGluZy4KKyAgICAgICAgICAgIHNldExvYWRTY2hlZHVsaW5nTW9kZShMb2FkU2No
ZWR1bGluZ01vZGU6OkRpcmVjdCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGF1dG8gcmVzb3VyY2VMb2FkZXJzID0gdG9Qcmlvcml0aXplLm1hcChbXShhdXRvKiBy
ZXNvdXJjZSkgeworICAgICAgICByZXR1cm4gcmVzb3VyY2UtPmxvYWRlcigpOworICAgIH0pOwor
CisgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPnByaW9yaXRpemVS
ZXNvdXJjZUxvYWRzKHJlc291cmNlTG9hZGVycyk7Cit9CisKK3ZvaWQgUGFnZTo6c2V0TG9hZFNj
aGVkdWxpbmdNb2RlKExvYWRTY2hlZHVsaW5nTW9kZSBtb2RlKQoreworICAgIGlmIChtX2xvYWRT
Y2hlZHVsaW5nTW9kZSA9PSBtb2RlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2xvYWRTY2hl
ZHVsaW5nTW9kZSA9IG1vZGU7CisKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3Ry
YXRlZ3koKS0+c2V0UmVzb3VyY2VMb2FkU2NoZWR1bGluZ01vZGUoKnRoaXMsIG1fbG9hZFNjaGVk
dWxpbmdNb2RlKTsKK30KKwogdm9pZCBQYWdlOjpzdXNwZW5kU2NyaXB0ZWRBbmltYXRpb25zKCkK
IHsKICAgICBtX3NjcmlwdGVkQW5pbWF0aW9uc1N1c3BlbmRlZCA9IHRydWU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5o
CmluZGV4IDFiYjQzMTY1NmRlMi4uNDUwNjk2ODYxNDI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtMjks
NiArMjksNyBAQAogI2luY2x1ZGUgIkxheW91dE1pbGVzdG9uZS5oIgogI2luY2x1ZGUgIkxheW91
dFJlY3QuaCIKICNpbmNsdWRlICJMZW5ndGhCb3guaCIKKyNpbmNsdWRlICJMb2FkU2NoZWR1bGlu
Z01vZGUuaCIKICNpbmNsdWRlICJNZWRpYVByb2R1Y2VyLmgiCiAjaW5jbHVkZSAiUGFnaW5hdGlv
bi5oIgogI2luY2x1ZGUgIlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIuaCIK
QEAgLTgzMSw2ICs4MzIsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCB0ZXh0SW50ZXJhY3Rpb25FbmFi
bGVkKCkgeyByZXR1cm4gbV90ZXh0SW50ZXJhY3Rpb25FbmFibGVkOyB9CiAgICAgdm9pZCBzZXRU
ZXh0SW50ZXJhY3Rpb25FbmFibGVkKGJvb2wgdmFsdWUpIHsgbV90ZXh0SW50ZXJhY3Rpb25FbmFi
bGVkID0gdmFsdWU7IH0KIAorICAgIExvYWRTY2hlZHVsaW5nTW9kZSBsb2FkU2NoZWR1bGluZ01v
ZGUoKSBjb25zdCB7IHJldHVybiBtX2xvYWRTY2hlZHVsaW5nTW9kZTsgfQorICAgIHZvaWQgc2V0
TG9hZFNjaGVkdWxpbmdNb2RlKExvYWRTY2hlZHVsaW5nTW9kZSk7CisKIHByaXZhdGU6CiAgICAg
c3RydWN0IE5hdmlnYXRpb24gewogICAgICAgICBSZWdpc3RyYWJsZURvbWFpbiBkb21haW47CkBA
IC04NzAsNiArODc0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlbmRlcmluZ1VwZGF0ZUNvbXBs
ZXRlZCgpOwogICAgIHZvaWQgY29tcHV0ZVVuZnVsZmlsbGVkUmVuZGVyaW5nU3RlcHMoT3B0aW9u
U2V0PFJlbmRlcmluZ1VwZGF0ZVN0ZXA+KTsKICAgICB2b2lkIHNjaGVkdWxlUmVuZGVyaW5nVXBk
YXRlSW50ZXJuYWwoKTsKKyAgICB2b2lkIHByaW9yaXRpemVWaXNpYmxlUmVzb3VyY2VzKCk7CiAK
ICAgICBSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXImIHJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcigp
OwogCkBAIC0xMTMyLDYgKzExMzcsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9sb2Fkc0Zyb21O
ZXR3b3JrIHsgdHJ1ZSB9OwogICAgIGJvb2wgbV9jYW5Vc2VDcmVkZW50aWFsU3RvcmFnZSB7IHRy
dWUgfTsKICAgICBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyBtX3Nob3VsZFJl
bGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHsgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2ll
QmxvY2tpbmc6Ok5vIH07CisgICAgTG9hZFNjaGVkdWxpbmdNb2RlIG1fbG9hZFNjaGVkdWxpbmdN
b2RlIHsgTG9hZFNjaGVkdWxpbmdNb2RlOjpEaXJlY3QgfTsKICAgICBib29sIG1faGFzQmVlbk5v
dGlmaWVkVG9JbmplY3RVc2VyU2NyaXB0cyB7IGZhbHNlIH07CiAKICAgICBNb25vdG9uaWNUaW1l
IG1fbGFzdFJlbmRlcmluZ1VwZGF0ZVRpbWVzdGFtcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMzM3OTYwZTQxZWQy
Li5lY2MwMDQ5Y2YyZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzAgQEAKKzIwMjEtMDEtMjUgIEFu
dHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCB2aXNp
YmlsaXR5IGJhc2VkIHJlc291cmNlIGxvYWQgc2NoZWR1bGluZyBmb3IgbG93IHByaW9yaXR5IHJl
c291cmNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjIwNzI4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIGEgc2ltcGxlIG5ldHdvcmsgcHJvY2VzcyBzaWRlIHJlc291cmNlIGxvYWQgc2NoZWR1bGVy
LiBXaGVuIGFjdGl2ZSBpdCBsaW1pdHMgdGhlIG51bWJlciBvZiBsb3cgcHJpb3JpdHkgcmVzb3Vy
Y2UgbG9hZHMKKyAgICAgICAgKG1vc3RseSBpbWFnZXMpIHRoYXQgYXJlIHBhc3NlZCB0byBuZXR3
b3JrIGxheWVyLiBUaGUgY3VycmVudCBsaW1pdCBpcyA2IHBlciBob3N0LCByZWR1Y2VkIGJ5IGFu
eSBvbmdvaW5nIGhpZ2hlciBwcmlvcml0eQorICAgICAgICBsb2Fkcy4gVGhpcyByZWR1Y2VzIGlt
cGFjdCBvZiBsb3cgcHJpb3JpdHkgbG9hZHMgdG8gaGlnaGVyIHByaW9yaXR5IG9uZXMsIGVzcGNp
YWxseSBvbiBIVFRQLzIuCisKKyAgICAgICAgVGhlIHNjaGVkdWxlciBhbHNvIHN1cHBvcnRzIHJl
cHJpb3JpdGl6aW5nIGxvYWRzLiBUaGlzIGlzIHVzZWQgdG8gbGV0IGltYWdlcyBjdXJyZW50bHkg
aW4gdGhlIHZpZXdwb3J0IHRvIHNraXAgdGhlIHF1ZXVlCisgICAgICAgIGFuZCBzdGFydCB0aGVp
ciBsb2FkcyBmYXN0ZXIuCisKKyAgICAgICAgVGhlIGZlYXR1cmUgaXMgbm90IGVuYWJsZWQgaW4g
dGhpcyBwYXRjaC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpjYW5jZWwpOgorICAgICAgICAoV2Vi
S2l0OjpEb3dubG9hZDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9h
ZDo6ZGlkRmluaXNoKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OmRpZEZhaWwpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNsZWFyUGFn
ZVNwZWNpZmljRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpyZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0UmVzb3VyY2VMb2FkU2NoZWR1bGluZ01v
ZGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cHJp
b3JpdGl6ZVJlc291cmNlTG9hZHMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6Y2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlz
dGljcyk6IERlbGV0ZWQuCisKKyAgICAgICAgUmVuYW1lIHRvIGNsZWFyUGFnZVNwZWNpZmljRGF0
YSBhbmQgbW92ZSBvdXQgb2YgI2lmLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpz
dGFydCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpzdGFydFdpdGhTY2hlZHVsaW5n
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6On5OZXR3b3JrTG9hZCk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpkaWRDb21wbGV0ZVdpdGhFcnJvcik6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrTG9hZFNjaGVkdWxlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
TG9hZFNjaGVkdWxlcjo6SG9zdENvbnRleHQ6OnNjaGVkdWxlKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0xvYWRTY2hlZHVsZXI6Okhvc3RDb250ZXh0Ojp1bnNjaGVkdWxlKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0xvYWRTY2hlZHVsZXI6Okhvc3RDb250ZXh0Ojpwcmlvcml0aXplKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWRTY2hlZHVsZXI6Okhvc3RDb250ZXh0OjpzdGFy
dCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkU2NoZWR1bGVyOjpIb3N0Q29udGV4dDo6
fkhvc3RDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWRTY2hlZHVsZXI6OnNj
aGVkdWxlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWRTY2hlZHVsZXI6OnVuc2NoZWR1
bGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZFNjaGVkdWxlcjo6c2V0UmVzb3VyY2VM
b2FkU2NoZWR1bGluZ01vZGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZFNjaGVkdWxl
cjo6cHJpb3JpdGl6ZUxvYWRzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWRTY2hlZHVs
ZXI6OmNsZWFyUGFnZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZFNjaGVkdWxl
cjo6Y29udGV4dEZvckxvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2Fk
U2NoZWR1bGVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJh
dGVneS5jcHAuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdv
cmtMb2FkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpuZXR3b3JrTG9hZFNjaGVkdWxlcik6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6U3BlY3VsYXRpdmVMb2Fk
KToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3Ry
YXRlZ3kuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6c2V0UmVzb3Vy
Y2VMb2FkU2NoZWR1bGluZ01vZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVn
eTo6cHJpb3JpdGl6ZVJlc291cmNlTG9hZHMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29y
ay9XZWJMb2FkZXJTdHJhdGVneS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y2xvc2UpOgorCiAyMDIxLTAxLTIw
ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBPbiBwYWdlIGNs
b3NlLCBtYWtlIHN1cmUgdG8gbm90aWZ5IG9mIGNhcHR1cmUgc3RhdGUgaW1tZWRpYXRlbHkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNw
cAppbmRleCA2NTFmZjI1NGY5MDUuLjhmOTIxNGFlZGJmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcApAQCAtNDQsNyArNDQs
NyBAQAogI2luY2x1ZGUgIk5ldHdvcmtEYXRhVGFza0NvY29hLmgiCiAjZW5kaWYKIAotI2RlZmlu
ZSBSRUxFQVNFX0xPR19JRl9BTExPV0VEKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihpc0Fsd2F5
c09uTG9nZ2luZ0FsbG93ZWQoKSwgTmV0d29yaywgIiVwIC0gRG93bmxvYWQ6OiIgZm10LCB0aGlz
LCAjI19fVkFfQVJHU19fKQorI2RlZmluZSBET1dOTE9BRF9SRUxFQVNFX0xPR19JRl9BTExPV0VE
KGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgTmV0
d29yaywgIiVwIC0gRG93bmxvYWQ6OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtOTgsNyArOTgsNyBA
QCB2b2lkIERvd25sb2FkOjpjYW5jZWwoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmKT4mJiBjb21wbAogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXN1
bWVEYXRhKTsKICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCBtX2lnbm9yZURpZEZhaWxDYWxsYmFj
ayA9PSBJZ25vcmVEaWRGYWlsQ2FsbGJhY2s6Ok5vKQogICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRDYW5jZWw6IChpZCA9ICUiIFBSSXU2NCAi
KSIsIGRvd25sb2FkSUQoKS50b1VJbnQ2NCgpKTsKKyAgICAgICAgRE9XTkxPQURfUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRCgiZGlkQ2FuY2VsOiAoaWQgPSAlIiBQUkl1NjQgIikiLCBkb3dubG9hZElE
KCkudG9VSW50NjQoKSk7CiAgICAgICAgIGlmIChhdXRvIGV4dGVuc2lvbiA9IHN0ZDo6ZXhjaGFu
Z2UobV9zYW5kYm94RXh0ZW5zaW9uLCBudWxscHRyKSkKICAgICAgICAgICAgIGV4dGVuc2lvbi0+
cmV2b2tlKCk7CiAgICAgICAgIG1fZG93bmxvYWRNYW5hZ2VyLmRvd25sb2FkRmluaXNoZWQoKnRo
aXMpOwpAQCAtMTMwLDcgKzEzMCw3IEBAIHZvaWQgRG93bmxvYWQ6OmRpZENyZWF0ZURlc3RpbmF0
aW9uKGNvbnN0IFN0cmluZyYgcGF0aCkKIHZvaWQgRG93bmxvYWQ6OmRpZFJlY2VpdmVEYXRhKHVp
bnQ2NF90IGJ5dGVzV3JpdHRlbiwgdWludDY0X3QgdG90YWxCeXRlc1dyaXR0ZW4sIHVpbnQ2NF90
IHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUpCiB7CiAgICAgaWYgKCFtX2hhc1JlY2VpdmVkRGF0
YSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlRGF0YTogU3Rh
cnRlZCByZWNlaXZpbmcgZGF0YSAoaWQgPSAlIiBQUkl1NjQgIikiLCBkb3dubG9hZElEKCkudG9V
SW50NjQoKSk7CisgICAgICAgIERPV05MT0FEX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJl
Y2VpdmVEYXRhOiBTdGFydGVkIHJlY2VpdmluZyBkYXRhIChpZCA9ICUiIFBSSXU2NCAiKSIsIGRv
d25sb2FkSUQoKS50b1VJbnQ2NCgpKTsKICAgICAgICAgbV9oYXNSZWNlaXZlZERhdGEgPSB0cnVl
OwogICAgIH0KICAgICAKQEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lkIERvd25sb2FkOjpkaWRSZWNl
aXZlRGF0YSh1aW50NjRfdCBieXRlc1dyaXR0ZW4sIHVpbnQ2NF90IHRvdGFsQnl0ZXNXcml0dGVu
LAogCiB2b2lkIERvd25sb2FkOjpkaWRGaW5pc2goKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoImRpZEZpbmlzaDogKGlkID0gJSIgUFJJdTY0ICIpIiwgZG93bmxvYWRJRCgpLnRvVUlu
dDY0KCkpOworICAgIERPV05MT0FEX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZEZpbmlzaDog
KGlkID0gJSIgUFJJdTY0ICIpIiwgZG93bmxvYWRJRCgpLnRvVUludDY0KCkpOwogCiAgICAgc2Vu
ZChNZXNzYWdlczo6RG93bmxvYWRQcm94eTo6RGlkRmluaXNoKCkpOwogCkBAIC0xNTgsNyArMTU4
LDcgQEAgdm9pZCBEb3dubG9hZDo6ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwg
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXMKICAgICBpZiAobV9pZ25vcmVEaWRGYWlsQ2Fs
bGJhY2sgPT0gSWdub3JlRGlkRmFpbENhbGxiYWNrOjpZZXMpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZEZhaWw6IChpZCA9ICUiIFBSSXU2NCAiLCBp
c1RpbWVvdXQgPSAlZCwgaXNDYW5jZWxsYXRpb24gPSAlZCwgZXJyQ29kZSA9ICVkKSIsCisgICAg
RE9XTkxPQURfUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkRmFpbDogKGlkID0gJSIgUFJJdTY0
ICIsIGlzVGltZW91dCA9ICVkLCBpc0NhbmNlbGxhdGlvbiA9ICVkLCBlcnJDb2RlID0gJWQpIiwK
ICAgICAgICAgZG93bmxvYWRJRCgpLnRvVUludDY0KCksIGVycm9yLmlzVGltZW91dCgpLCBlcnJv
ci5pc0NhbmNlbGxhdGlvbigpLCBlcnJvci5lcnJvckNvZGUoKSk7CiAKICAgICBzZW5kKE1lc3Nh
Z2VzOjpEb3dubG9hZFByb3h5OjpEaWRGYWlsKGVycm9yLCByZXN1bWVEYXRhKSk7CkBAIC0yMDIs
NCArMjAyLDQgQEAgdm9pZCBEb3dubG9hZDo6cGxhdGZvcm1EZXN0cm95RG93bmxvYWQoKQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI3VuZGVmIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQKKyN1
bmRlZiBET1dOTE9BRF9SRUxFQVNFX0xPR19JRl9BTExPV0VECmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwCmluZGV4IDZmYzNiMmQ4OTVhNy4uODRjOTEzYWQxYzBhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcApAQCAtMzIsNiArMzIsOCBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNp
bmNsdWRlICJOZXR3b3JrQ2FjaGUuaCIKICNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzc01lc3NhZ2VzLmgiCisjaW5jbHVkZSAiTmV0d29ya0xvYWQuaCIKKyNpbmNsdWRlICJO
ZXR3b3JrTG9hZFNjaGVkdWxlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtNRE5TUmVnaXN0ZXJNZXNz
YWdlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMuaCIKQEAgLTg1MywxNyArODU1LDIyIEBAIHZvaWQgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0
cmljc0VuYWJsZWQoYm9vCiAgICAgICAgIGxvYWRlci0+ZGlzYWJsZUV4dHJhTmV0d29ya0xvYWRN
ZXRyaWNzQ2FwdHVyZSgpOwogfQogCi0jaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElD
UykKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbW92ZVN0b3JhZ2VBY2Nl
c3NGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlE
KQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2xlYXJQYWdlU3BlY2lmaWNE
YXRhKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5l
dHdvcmtTZXNzaW9uKCkpCisgICAgICAgIHNlc3Npb24tPm5ldHdvcmtMb2FkU2NoZWR1bGVyKCku
Y2xlYXJQYWdlRGF0YShwYWdlSUQpOworCisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElT
VElDUykKICAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBuZXR3b3JrUHJvY2VzcygpLnN0
b3JhZ2VTZXNzaW9uKG1fc2Vzc2lvbklEKSkKLSAgICAgICAgc3RvcmFnZVNlc3Npb24tPnJlbW92
ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShmcmFtZUlELCBwYWdlSUQpOworICAgICAgICBzdG9yYWdl
U2Vzc2lvbi0+Y2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhw
YWdlSUQpOworI2VuZGlmCiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmNsZWFyUGFnZVNwZWNpZmljRGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoUGFnZUlkZW50
aWZpZXIgcGFnZUlEKQorI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCit2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJh
bWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAg
ICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBuZXR3b3JrUHJvY2VzcygpLnN0b3JhZ2VTZXNz
aW9uKG1fc2Vzc2lvbklEKSkKLSAgICAgICAgc3RvcmFnZVNlc3Npb24tPmNsZWFyUGFnZVNwZWNp
ZmljRGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MocGFnZUlEKTsKKyAgICAgICAgc3RvcmFn
ZVNlc3Npb24tPnJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShmcmFtZUlELCBwYWdlSUQpOwog
fQogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpsb2dVc2VySW50ZXJhY3Rp
b24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbikKQEAgLTExNzAsNiArMTE3NywzMyBA
QCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRDT1JTRGlzYWJsaW5nUGF0
dGVybnMoV2ViQ29yZTo6UGFnZUlkZW50aQogICAgIG5ldHdvcmtQcm9jZXNzKCkuc2V0Q09SU0Rp
c2FibGluZ1BhdHRlcm5zKHBhZ2VJZGVudGlmaWVyLCBXVEZNb3ZlKHBhdHRlcm5zKSk7CiB9CiAK
K3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldFJlc291cmNlTG9hZFNjaGVk
dWxpbmdNb2RlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJZGVudGlmaWVyLCBXZWJDb3Jl
OjpMb2FkU2NoZWR1bGluZ01vZGUgbW9kZSkKK3sKKyAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29y
a1Nlc3Npb24oKTsKKyAgICBpZiAoIXNlc3Npb24pCisgICAgICAgIHJldHVybjsKKworICAgIHNl
c3Npb24tPm5ldHdvcmtMb2FkU2NoZWR1bGVyKCkuc2V0UmVzb3VyY2VMb2FkU2NoZWR1bGluZ01v
ZGUocGFnZUlkZW50aWZpZXIsIG1vZGUpOworfQorCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpwcmlvcml0aXplUmVzb3VyY2VMb2FkcyhWZWN0b3I8UmVzb3VyY2VMb2FkSWRl
bnRpZmllcj4gbG9hZElkZW50aWZpZXJzKQoreworICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3Jr
U2Vzc2lvbigpOworICAgIGlmICghc2Vzc2lvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgVmVj
dG9yPE5ldHdvcmtMb2FkKj4gbG9hZHM7CisgICAgZm9yIChhdXRvIGlkZW50aWZpZXIgOiBsb2Fk
SWRlbnRpZmllcnMpIHsKKyAgICAgICAgYXV0byogbG9hZGVyID0gbV9uZXR3b3JrUmVzb3VyY2VM
b2FkZXJzLmdldChpZGVudGlmaWVyKTsKKyAgICAgICAgaWYgKCFsb2FkZXIgfHwgIWxvYWRlci0+
bmV0d29ya0xvYWQoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBsb2Fkcy5hcHBl
bmQobG9hZGVyLT5uZXR3b3JrTG9hZCgpKTsKKyAgICB9CisKKyAgICBzZXNzaW9uLT5uZXR3b3Jr
TG9hZFNjaGVkdWxlcigpLnByaW9yaXRpemVMb2Fkcyhsb2Fkcyk7Cit9CisKKwogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CiAKICN1bmRlZiBORVRXT1JLX1BST0NFU1NfTUVTU0FHRV9DSEVDS19DT01Q
TEVUSU9OCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggZDg2Mzc3ZGExYTRkLi41YTRiMmI4
OTM3ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTQwLDYgKzQwLDggQEAKICNpbmNs
dWRlICJXZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0NvbnNvbGVUeXBlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVJZGVudGlmaWVyLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9MYXlvdXRNaWxlc3RvbmUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0xv
YWRTY2hlZHVsaW5nTW9kZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVzc2FnZVBvcnRDaGFubmVs
UHJvdmlkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01lc3NhZ2VQb3J0SWRlbnRpZmllci5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya0xvYWRJbmZvcm1hdGlvbi5oPgpAQCAtNDgsNiArNTAs
NyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUHJvY2Vzc0lkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XZWJTb2NrZXRJ
ZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBQQUwgewpAQCAtMjY2LDkgKzI2OSwxMCBAQCBwcml2
YXRlOgogCiAgICAgQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbiYgY2FjaGVTdG9yYWdlQ29u
bmVjdGlvbigpOwogCisgICAgdm9pZCBjbGVhclBhZ2VTcGVjaWZpY0RhdGEoV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIpOworCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAg
ICB2b2lkIHJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKLSAgICB2b2lkIGNsZWFyUGFnZVNwZWNpZmlj
RGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwog
CiAgICAgdm9pZCBsb2dVc2VySW50ZXJhY3Rpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mKTsK
ICAgICB2b2lkIHJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3RvcjxXZWJDb3JlOjpS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpA
QCAtMzI1LDYgKzMyOSw5IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGhhc1VwbG9hZFN0YXRlQ2hh
bmdlZChib29sKTsKIAorICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkU2NoZWR1bGluZ01vZGUoV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OkxvYWRTY2hlZHVsaW5nTW9kZSk7CisgICAg
dm9pZCBwcmlvcml0aXplUmVzb3VyY2VMb2FkcyhWZWN0b3I8UmVzb3VyY2VMb2FkSWRlbnRpZmll
cj4pOworCiAjaWYgRU5BQkxFKEFQUExFX1BBWV9SRU1PVEVfVUkpCiAgICAgV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHkmIHBheW1lbnRDb29yZGluYXRvcigpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCAxYmJmYTkwY2Y0NDMuLmZmOGQ0YTE3OWYx
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC02Miw5
ICs2MiwxMCBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdh
Y3lSZWNlaXZlciB7CiAgICAgQ3JlYXRlU29ja2V0U3RyZWFtKFVSTCB1cmwsIFN0cmluZyBjYWNo
ZVBhcnRpdGlvbiwgV2ViQ29yZTo6V2ViU29ja2V0SWRlbnRpZmllciBpZGVudGlmaWVyKQogICAg
IENyZWF0ZVNvY2tldENoYW5uZWwoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFN0
cmluZyBwcm90b2NvbCwgV2ViQ29yZTo6V2ViU29ja2V0SWRlbnRpZmllciBpZGVudGlmaWVyKQog
CisgICAgQ2xlYXJQYWdlU3BlY2lmaWNEYXRhKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCk7CisKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIFJlbW92ZVN0
b3JhZ2VBY2Nlc3NGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKTsKLSAgICBDbGVhclBhZ2VTcGVjaWZpY0RhdGFG
b3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCk7
CiAgICAgTG9nVXNlckludGVyYWN0aW9uKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFp
bikKICAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChWZWN0b3I8V2ViQ29yZTo6UmVz
b3VyY2VMb2FkU3RhdGlzdGljcz4gc3RhdGlzdGljcykgLT4gKCkgQXN5bmMKICAgICBIYXNTdG9y
YWdlQWNjZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkZyYW1lRG9tYWluLCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbiwgV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkgLT4gKGJvb2wg
aGFzU3RvcmFnZUFjY2VzcykgQXN5bmMKQEAgLTEwMSw0ICsxMDIsNiBAQCBtZXNzYWdlcyAtPiBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAjaWYgUExBVEZP
Uk0oTUFDKQogICAgIFVwZGF0ZUFjdGl2ZVBhZ2VzKFN0cmluZyBuYW1lLCBWZWN0b3I8U3RyaW5n
PiBhY3RpdmVQYWdlc09yaWdpbnMsIGF1ZGl0X3Rva2VuX3QgYXVkaXRUb2tlbikKICNlbmRpZgor
ICAgIFNldFJlc291cmNlTG9hZFNjaGVkdWxpbmdNb2RlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
IHdlYlBhZ2VJRCwgZW51bTp1aW50OF90IFdlYkNvcmU6OkxvYWRTY2hlZHVsaW5nTW9kZSBtb2Rl
KQorICAgIFByaW9yaXRpemVSZXNvdXJjZUxvYWRzKFZlY3Rvcjx1aW50NjRfdD4gbG9hZElkZW50
aWZpZXJzKQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrTG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNw
cAppbmRleCAyZTZjZWY5NTA1ZGIuLmI4NGYwODRlY2ExMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRl
ICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLmgiCiAjaW5jbHVkZSAiQXV0aGVu
dGljYXRpb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiTmV0d29ya0RhdGFUYXNrQmxvYi5oIgorI2lu
Y2x1ZGUgIk5ldHdvcmtMb2FkU2NoZWR1bGVyLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3Mu
aCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJO
ZXR3b3JrU2Vzc2lvbi5oIgpAQCAtMzYsNiArMzcsOCBAQAogI2luY2x1ZGUgIldlYkVycm9ycy5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9TaGFyZWRCdWZmZXIuaD4KKyNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KKyNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKQEAgLTYwLDkgKzYzLDE5IEBAIHZvaWQgTmV0d29ya0xvYWQ6OnN0YXJ0
KCkKICAgICAgICAgbV90YXNrLT5yZXN1bWUoKTsKIH0KIAordm9pZCBOZXR3b3JrTG9hZDo6c3Rh
cnRXaXRoU2NoZWR1bGluZygpCit7CisgICAgaWYgKCFtX3Rhc2sgfHwgIW1fdGFzay0+bmV0d29y
a1Nlc3Npb24oKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fc2NoZWR1bGVyID0gbWFrZVdlYWtQ
dHIobV90YXNrLT5uZXR3b3JrU2Vzc2lvbigpLT5uZXR3b3JrTG9hZFNjaGVkdWxlcigpKTsKKyAg
ICBtX3NjaGVkdWxlci0+c2NoZWR1bGUoKnRoaXMpOworfQorCiBOZXR3b3JrTG9hZDo6fk5ldHdv
cmtMb2FkKCkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIGlmIChtX3Nj
aGVkdWxlcikKKyAgICAgICAgbV9zY2hlZHVsZXItPnVuc2NoZWR1bGUoKnRoaXMpOwogICAgIGlm
IChtX3JlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIpCiAgICAgICAgIG1fcmVkaXJlY3RDb21wbGV0
aW9uSGFuZGxlcih7IH0pOwogICAgIGlmIChtX3Rhc2spCkBAIC0yMjUsNiArMjM4LDExIEBAIHZv
aWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
KQogCiB2b2lkIE5ldHdvcmtMb2FkOjpkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBSZXNvdXJj
ZUVycm9yJiBlcnJvciwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3Jr
TG9hZE1ldHJpY3MpCiB7CisgICAgaWYgKG1fc2NoZWR1bGVyKSB7CisgICAgICAgIG1fc2NoZWR1
bGVyLT51bnNjaGVkdWxlKCp0aGlzKTsKKyAgICAgICAgbV9zY2hlZHVsZXIgPSBudWxscHRyOwor
ICAgIH0KKwogICAgIGlmIChlcnJvci5pc051bGwoKSkKICAgICAgICAgbV9jbGllbnQuZ2V0KCku
ZGlkRmluaXNoTG9hZGluZyhuZXR3b3JrTG9hZE1ldHJpY3MpOwogICAgIGVsc2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAppbmRleCA1OWUxN2U1YjlhNTYuLjY5
NTU5OTc4MWJkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrTG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQu
aApAQCAtMzksNiArMzksNyBAQCBjbGFzcyBCbG9iUmVnaXN0cnlJbXBsOwogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAorY2xhc3MgTmV0d29ya0xvYWRTY2hlZHVsZXI7CiBjbGFzcyBOZXR3b3JrUHJv
Y2VzczsKIAogY2xhc3MgTmV0d29ya0xvYWQgZmluYWwgOiBwcml2YXRlIE5ldHdvcmtEYXRhVGFz
a0NsaWVudCB7CkBAIC00OCw2ICs0OSw3IEBAIHB1YmxpYzoKICAgICB+TmV0d29ya0xvYWQoKTsK
IAogICAgIHZvaWQgc3RhcnQoKTsKKyAgICB2b2lkIHN0YXJ0V2l0aFNjaGVkdWxpbmcoKTsKICAg
ICB2b2lkIGNhbmNlbCgpOwogCiAgICAgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50
aWFscygpIGNvbnN0OwpAQCAtNTYsNiArNTgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVS
ZXF1ZXN0QWZ0ZXJSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBjb25zdDsK
IAogICAgIGNvbnN0IE5ldHdvcmtMb2FkUGFyYW1ldGVycyYgcGFyYW1ldGVycygpIGNvbnN0IHsg
cmV0dXJuIG1fcGFyYW1ldGVyczsgfQorICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1
cm4gcGFyYW1ldGVycygpLnJlcXVlc3QudXJsKCk7IH0KIAogICAgIHZvaWQgY29udGludWVXaWxs
U2VuZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOwogCkBAIC05MCw2ICs5Myw3
IEBAIHByaXZhdGU6CiAgICAgY29uc3QgTmV0d29ya0xvYWRQYXJhbWV0ZXJzIG1fcGFyYW1ldGVy
czsKICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
KT4gbV9yZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyOwogICAgIFJlZlB0cjxOZXR3b3JrRGF0YVRh
c2s+IG1fdGFzazsKKyAgICBXZWFrUHRyPE5ldHdvcmtMb2FkU2NoZWR1bGVyPiBtX3NjaGVkdWxl
cjsKIAogICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBtX2N1cnJlbnRSZXF1ZXN0OyAvLyBV
cGRhdGVkIG9uIHJlZGlyZWN0cy4KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtMb2FkU2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0xvYWRTY2hlZHVsZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMC4uNzcwNDIzOWY0MjM1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZFNjaGVkdWxlci5jcHAKQEAgLTAsMCAr
MSwxNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTmV0
d29ya0xvYWRTY2hlZHVsZXIuaCIKKworI2luY2x1ZGUgIk5ldHdvcmtMb2FkLmgiCisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitzdGF0aWMgY29uc3RleHByIHNpemVfdCBtYXhpbXVtQWN0aXZlQ291
bnRGb3JMb3dQcmlvcml0eSA9IDY7CisKK2NsYXNzIE5ldHdvcmtMb2FkU2NoZWR1bGVyOjpIb3N0
Q29udGV4dCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgSG9z
dENvbnRleHQoKSA9IGRlZmF1bHQ7CisgICAgfkhvc3RDb250ZXh0KCk7CisKKyAgICB2b2lkIHNj
aGVkdWxlKE5ldHdvcmtMb2FkJik7CisgICAgdm9pZCB1bnNjaGVkdWxlKE5ldHdvcmtMb2FkJik7
CisgICAgdm9pZCBwcmlvcml0aXplKE5ldHdvcmtMb2FkJik7CisKKyAgICB2b2lkIGZpbmlzaFBh
Z2UoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOworCitwcml2YXRlOgorICAgIHZvaWQgc3RhcnQo
TmV0d29ya0xvYWQmKTsKKworICAgIEhhc2hTZXQ8TmV0d29ya0xvYWQqPiBtX2FjdGl2ZUxvYWRz
OworICAgIExpc3RIYXNoU2V0PE5ldHdvcmtMb2FkKj4gbV9wZW5kaW5nTG9hZHM7Cit9OworCit2
b2lkIE5ldHdvcmtMb2FkU2NoZWR1bGVyOjpIb3N0Q29udGV4dDo6c2NoZWR1bGUoTmV0d29ya0xv
YWQmIGxvYWQpCit7CisgICAgYXV0byBzdGFydEltbWVkaWF0ZWx5ID0gWyZdIHsKKyAgICAgICAg
YXV0byBwcmlvcml0eSA9IGxvYWQucGFyYW1ldGVycygpLnJlcXVlc3QucHJpb3JpdHkoKTsKKyAg
ICAgICAgaWYgKHByaW9yaXR5ID4gUmVzb3VyY2VMb2FkUHJpb3JpdHk6OkxvdykKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworCisgICAgICAgIGlmIChtX2FjdGl2ZUxvYWRzLnNpemUoKSA8IG1h
eGltdW1BY3RpdmVDb3VudEZvckxvd1ByaW9yaXR5KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0oKTsKKworICAgIGlmIChzdGFydEltbWVk
aWF0ZWx5KSB7CisgICAgICAgIHN0YXJ0KGxvYWQpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgbV9wZW5kaW5nTG9hZHMuYWRkKCZsb2FkKTsKK30KKwordm9pZCBOZXR3b3JrTG9hZFNj
aGVkdWxlcjo6SG9zdENvbnRleHQ6OnVuc2NoZWR1bGUoTmV0d29ya0xvYWQmIGxvYWQpCit7Cisg
ICAgbV9hY3RpdmVMb2Fkcy5yZW1vdmUoJmxvYWQpOworICAgIG1fcGVuZGluZ0xvYWRzLnJlbW92
ZSgmbG9hZCk7CisKKyAgICBpZiAobV9wZW5kaW5nTG9hZHMuaXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm47CisgICAgaWYgKG1fYWN0aXZlTG9hZHMuc2l6ZSgpID49IG1heGltdW1BY3RpdmVDb3Vu
dEZvckxvd1ByaW9yaXR5KQorICAgICAgICByZXR1cm47CisKKyAgICBzdGFydCgqbV9wZW5kaW5n
TG9hZHMudGFrZUZpcnN0KCkpOworfQorCit2b2lkIE5ldHdvcmtMb2FkU2NoZWR1bGVyOjpIb3N0
Q29udGV4dDo6cHJpb3JpdGl6ZShOZXR3b3JrTG9hZCYgbG9hZCkKK3sKKyAgICBpZiAoIW1fcGVu
ZGluZ0xvYWRzLnJlbW92ZSgmbG9hZCkpCisgICAgICAgIHJldHVybjsKKworICAgIHN0YXJ0KGxv
YWQpOworfQorCit2b2lkIE5ldHdvcmtMb2FkU2NoZWR1bGVyOjpIb3N0Q29udGV4dDo6c3RhcnQo
TmV0d29ya0xvYWQmIGxvYWQpCit7CisgICAgbV9hY3RpdmVMb2Fkcy5hZGQoJmxvYWQpOworCisg
ICAgbG9hZC5zdGFydCgpOworfQorCitOZXR3b3JrTG9hZFNjaGVkdWxlcjo6SG9zdENvbnRleHQ6
On5Ib3N0Q29udGV4dCgpCit7CisgICAgZm9yIChhdXRvKiBsb2FkIDogbV9wZW5kaW5nTG9hZHMp
CisgICAgICAgIHN0YXJ0KCpsb2FkKTsKK30KKworTmV0d29ya0xvYWRTY2hlZHVsZXI6Ok5ldHdv
cmtMb2FkU2NoZWR1bGVyKCkgPSBkZWZhdWx0OworTmV0d29ya0xvYWRTY2hlZHVsZXI6On5OZXR3
b3JrTG9hZFNjaGVkdWxlcigpID0gZGVmYXVsdDsKKwordm9pZCBOZXR3b3JrTG9hZFNjaGVkdWxl
cjo6c2NoZWR1bGUoTmV0d29ya0xvYWQmIGxvYWQpCit7CisgICAgYXV0byogY29udGV4dCA9IGNv
bnRleHRGb3JMb2FkKGxvYWQpOworCisgICAgaWYgKCFjb250ZXh0KSB7CisgICAgICAgIGxvYWQu
c3RhcnQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNvbnRleHQtPnNjaGVkdWxl
KGxvYWQpOworfQorCit2b2lkIE5ldHdvcmtMb2FkU2NoZWR1bGVyOjp1bnNjaGVkdWxlKE5ldHdv
cmtMb2FkJiBsb2FkKQoreworICAgIGF1dG8qIGNvbnRleHQgPSBjb250ZXh0Rm9yTG9hZChsb2Fk
KTsKKworICAgIGlmICghY29udGV4dCkgeworICAgICAgICBsb2FkLnN0YXJ0KCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBjb250ZXh0LT51bnNjaGVkdWxlKGxvYWQpOworfQorCit2
b2lkIE5ldHdvcmtMb2FkU2NoZWR1bGVyOjpzZXRSZXNvdXJjZUxvYWRTY2hlZHVsaW5nTW9kZShX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6TG9hZFNjaGVk
dWxpbmdNb2RlIG1vZGUpCit7CisgICAgc3dpdGNoIChtb2RlKSB7CisgICAgY2FzZSBXZWJDb3Jl
OjpMb2FkU2NoZWR1bGluZ01vZGU6OlByaW9yaXRpemVkOgorICAgICAgICBtX3BhZ2VDb250ZXh0
cy5lbnN1cmUocGFnZUlkZW50aWZpZXIsIFsmXSB7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxQYWdlQ29udGV4dD4oKTsKKyAgICAgICAgfSk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgV2ViQ29yZTo6TG9hZFNjaGVkdWxpbmdNb2RlOjpEaXJlY3Q6CisgICAgICAgIG1fcGFnZUNv
bnRleHRzLnJlbW92ZShwYWdlSWRlbnRpZmllcik7CisgICAgICAgIGJyZWFrOworICAgIH0KK30K
Kwordm9pZCBOZXR3b3JrTG9hZFNjaGVkdWxlcjo6cHJpb3JpdGl6ZUxvYWRzKGNvbnN0IFZlY3Rv
cjxOZXR3b3JrTG9hZCo+JiBsb2FkcykKK3sKKyAgICBmb3IgKGF1dG8qIGxvYWQgOiBsb2Fkcykg
eworICAgICAgICBpZiAoYXV0byogY29udGV4dCA9IGNvbnRleHRGb3JMb2FkKCpsb2FkKSkKKyAg
ICAgICAgICAgIGNvbnRleHQtPnByaW9yaXRpemUoKmxvYWQpOworICAgIH0KK30KKwordm9pZCBO
ZXR3b3JrTG9hZFNjaGVkdWxlcjo6Y2xlYXJQYWdlRGF0YShXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciBwYWdlSWRlbnRpZmllcikKK3sKKyAgICBtX3BhZ2VDb250ZXh0cy5yZW1vdmUocGFnZUlkZW50
aWZpZXIpOworfQorCithdXRvIE5ldHdvcmtMb2FkU2NoZWR1bGVyOjpjb250ZXh0Rm9yTG9hZChj
b25zdCBOZXR3b3JrTG9hZCYgbG9hZCkgLT4gSG9zdENvbnRleHQqCit7CisgICAgaWYgKCFsb2Fk
LnVybCgpLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICBhdXRvKiBwYWdlQ29udGV4dCA9IG1fcGFnZUNvbnRleHRzLmdldChsb2FkLnBhcmFt
ZXRlcnMoKS53ZWJQYWdlSUQpOworICAgIGlmICghcGFnZUNvbnRleHQpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgYXV0byBob3N0ID0gbG9hZC51cmwoKS5ob3N0KCkudG9TdHJpbmco
KTsKKyAgICByZXR1cm4gcGFnZUNvbnRleHQtPmVuc3VyZShob3N0LCBbJl0geworICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxIb3N0Q29udGV4dD4oKTsKKyAgICB9KS5pdGVyYXRvci0+dmFsdWUu
Z2V0KCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0xvYWRTY2hlZHVsZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0xvYWRTY2hlZHVsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAuLjI5OWM4MWFjMzI4OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0xvYWRTY2hlZHVsZXIuaApAQCAtMCwwICsxLDU4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxXZWJDb3JlL0xvYWRTY2hlZHVsaW5nTW9k
ZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitjbGFzcyBOZXR3b3JrTG9hZDsKKworY2xhc3MgTmV0d29ya0xvYWRTY2hlZHVsZXIgOiBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8TmV0d29ya0xvYWRTY2hlZHVsZXI+IHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBOZXR3b3JrTG9hZFNjaGVkdWxlcigpOwor
ICAgIH5OZXR3b3JrTG9hZFNjaGVkdWxlcigpOworCisgICAgdm9pZCBzY2hlZHVsZShOZXR3b3Jr
TG9hZCYpOworICAgIHZvaWQgdW5zY2hlZHVsZShOZXR3b3JrTG9hZCYpOworCisgICAgdm9pZCBz
ZXRSZXNvdXJjZUxvYWRTY2hlZHVsaW5nTW9kZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2Vi
Q29yZTo6TG9hZFNjaGVkdWxpbmdNb2RlKTsKKyAgICB2b2lkIHByaW9yaXRpemVMb2Fkcyhjb25z
dCBWZWN0b3I8TmV0d29ya0xvYWQqPiYpOworICAgIHZvaWQgY2xlYXJQYWdlRGF0YShXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllcik7CisKK3ByaXZhdGU6CisgICAgY2xhc3MgSG9zdENvbnRleHQ7Cisg
ICAgSG9zdENvbnRleHQqIGNvbnRleHRGb3JMb2FkKGNvbnN0IE5ldHdvcmtMb2FkJik7CisKKyAg
ICB1c2luZyBQYWdlQ29udGV4dCA9IEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8SG9z
dENvbnRleHQ+PjsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBzdGQ6OnVu
aXF1ZV9wdHI8UGFnZUNvbnRleHQ+PiBtX3BhZ2VDb250ZXh0czsKK307CisKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cAppbmRleCAyOTA1ZDUxZTE3YTEuLmNmNzkzYTY5NWUxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAtMzM2
LDcgKzMzNiw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtMb2Fk
KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZpcnN0TG9hCiAgICAgcGFyYW1ldGVycy5yZXF1
ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KTsKICAgICBwYXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4gPSBtX3BhcmFtZXRlcnMuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsK
ICAgICBtX25ldHdvcmtMb2FkID0gbWFrZVVuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsICZuZXR3
b3JrU2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCksIFdURk1vdmUocGFyYW1ldGVycyksICpuZXR3b3Jr
U2Vzc2lvbik7Ci0gICAgbV9uZXR3b3JrTG9hZC0+c3RhcnQoKTsKKyAgICBtX25ldHdvcmtMb2Fk
LT5zdGFydFdpdGhTY2hlZHVsaW5nKCk7CiAKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJz
dGFydE5ldHdvcmtMb2FkOiBHb2luZyB0byB0aGUgbmV0d29yayAoZGVzY3JpcHRpb249JSIgUFVC
TElDX0xPR19TVFJJTkcgIikiLCBtX25ldHdvcmtMb2FkLT5kZXNjcmlwdGlvbigpLnV0ZjgoKS5k
YXRhKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNz
aW9uLmNwcAppbmRleCA3NTljMWMyMzcyYWUuLjY2NzVmNjAwNDZlNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKQEAgLTI3LDYgKzI3LDcg
QEAKICNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbi5oIgogCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgor
I2luY2x1ZGUgIk5ldHdvcmtMb2FkU2NoZWR1bGVyLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nl
c3MuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oIgpAQCAtMzgyLDQgKzM4MywxMSBAQCB2
b2lkIE5ldHdvcmtTZXNzaW9uOjp1bnJlZ2lzdGVyTmV0d29ya0RhdGFUYXNrKE5ldHdvcmtEYXRh
VGFzayYgdGFzaykKICAgICBtX2RhdGFUYXNrU2V0LnJlbW92ZSh0YXNrKTsKIH0KIAorTmV0d29y
a0xvYWRTY2hlZHVsZXImIE5ldHdvcmtTZXNzaW9uOjpuZXR3b3JrTG9hZFNjaGVkdWxlcigpCit7
CisgICAgaWYgKCFtX25ldHdvcmtMb2FkU2NoZWR1bGVyKQorICAgICAgICBtX25ldHdvcmtMb2Fk
U2NoZWR1bGVyID0gbWFrZVVuaXF1ZTxOZXR3b3JrTG9hZFNjaGVkdWxlcj4oKTsKKyAgICByZXR1
cm4gKm1fbmV0d29ya0xvYWRTY2hlZHVsZXI7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCmluZGV4IGFj
ODk4NjU4OGUyZC4uMWE4ZjU4Y2YyYjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCkBAIC01Myw2ICs1Myw3IEBAIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiBjbGFzcyBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI7CiBjbGFzcyBOZXR3b3Jr
RGF0YVRhc2s7CitjbGFzcyBOZXR3b3JrTG9hZFNjaGVkdWxlcjsKIGNsYXNzIE5ldHdvcmtQcm9j
ZXNzOwogY2xhc3MgTmV0d29ya1Jlc291cmNlTG9hZGVyOwogY2xhc3MgTmV0d29ya1NvY2tldENo
YW5uZWw7CkBAIC0xNTAsNiArMTUxLDggQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlU29mdFVw
ZGF0ZUxvYWRlcihTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlciogbG9hZGVyKSB7IG1fc29m
dFVwZGF0ZUxvYWRlcnMucmVtb3ZlKGxvYWRlcik7IH0KICNlbmRpZgogCisgICAgTmV0d29ya0xv
YWRTY2hlZHVsZXImIG5ldHdvcmtMb2FkU2NoZWR1bGVyKCk7CisKIHByb3RlY3RlZDoKICAgICBO
ZXR3b3JrU2Vzc2lvbihOZXR3b3JrUHJvY2VzcyYsIGNvbnN0IE5ldHdvcmtTZXNzaW9uQ3JlYXRp
b25QYXJhbWV0ZXJzJik7CiAKQEAgLTE4Niw2ICsxODksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9v
bCBtX2lzSW52YWxpZGF0ZWQgeyBmYWxzZSB9OwogI2VuZGlmCiAgICAgUmVmUHRyPE5ldHdvcmtD
YWNoZTo6Q2FjaGU+IG1fY2FjaGU7CisgICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtMb2FkU2No
ZWR1bGVyPiBtX25ldHdvcmtMb2FkU2NoZWR1bGVyOwogICAgIFdlYkNvcmU6OkJsb2JSZWdpc3Ry
eUltcGwgbV9ibG9iUmVnaXN0cnk7CiAgICAgdW5zaWduZWQgbV90ZXN0U3BlZWRNdWx0aXBsaWVy
IHsgMSB9OwogICAgIGJvb2wgbV9hbGxvd3NTZXJ2ZXJQcmVjb25uZWN0IHsgdHJ1ZSB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVT
cGVjdWxhdGl2ZUxvYWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCmluZGV4IDRjMTA3MzUwZmE0My4uNGI5OGQ1
YzE0YzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCkBAIC02OSw3ICs2
OSw3IEBAIFNwZWN1bGF0aXZlTG9hZDo6U3BlY3VsYXRpdmVMb2FkKENhY2hlJiBjYWNoZSwgY29u
c3QgR2xvYmFsRnJhbWVJRCYgZ2xvYmFsRnJhbWVJCiAgICAgcGFyYW1ldGVycy5yZXF1ZXN0ID0g
bV9vcmlnaW5hbFJlcXVlc3Q7CiAgICAgcGFyYW1ldGVycy5pc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluID0gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsKICAgICBtX25ldHdvcmtMb2Fk
ID0gbWFrZVVuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsIG51bGxwdHIsIFdURk1vdmUocGFyYW1l
dGVycyksICpuZXR3b3JrU2Vzc2lvbik7Ci0gICAgbV9uZXR3b3JrTG9hZC0+c3RhcnQoKTsKKyAg
ICBtX25ldHdvcmtMb2FkLT5zdGFydFdpdGhTY2hlZHVsaW5nKCk7CiB9CiAKIFNwZWN1bGF0aXZl
TG9hZDo6flNwZWN1bGF0aXZlTG9hZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCA3N2FjMTZkZjg5MWYuLjdm
NDA4YmM0NjEwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9T
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC02NSw2ICs2NSw3IEBAIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrSFRUUFNVcGdy
YWRlQ2hlY2tlci5jcHAKIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAogTmV0d29ya1By
b2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcAorTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRT
Y2hlZHVsZXIuY3BwCiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3NQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmYTAzZGM4NTE0MDAuLjg0
MjM3ZGM0YjY1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0xOTQ1LDYgKzE5NDUsNyBAQAogCQlFNDQzNkVDQzFBMEQwNDBCMDBFQUQy
MDQgLyogTmV0d29ya0NhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFNDQzNkVCRjFBMENGREIyMDBFQUQyMDQgLyogTmV0d29ya0NhY2hlLmggKi87
IH07CiAJCUU0NDM2RUNFMUEwRDA0MEIwMEVBRDIwNCAvKiBOZXR3b3JrQ2FjaGVLZXkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NDM2RUMxMUEwQ0ZE
QjIwMEVBRDIwNCAvKiBOZXR3b3JrQ2FjaGVLZXkuaCAqLzsgfTsKIAkJRTQ0MzZFQ0YxQTBEMDQw
QjAwRUFEMjA0IC8qIE5ldHdvcmtDYWNoZVN0b3JhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NDM2RUMyMUEwQ0ZEQjIwMEVBRDIwNCAvKiBOZXR3
b3JrQ2FjaGVTdG9yYWdlLmggKi87IH07CisJCUU0N0ZDOEEwMjVCODMzMUMwMDU0OTVGQyAvKiBO
ZXR3b3JrTG9hZFNjaGVkdWxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTQ3RkM4OUYyNUI4MzMxQzAwNTQ5NUZDIC8qIE5ldHdvcmtMb2FkU2NoZWR1
bGVyLmggKi87IH07CiAJCUU0ODlEMjhDMUEwQTJEQjgwMDc4QzA2QSAvKiBOZXR3b3JrQ2FjaGVD
b2RlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0
ODlEMjg1MUEwQTJEQjgwMDc4QzA2QSAvKiBOZXR3b3JrQ2FjaGVDb2RlcnMuaCAqLzsgfTsKIAkJ
RTQ5RDQwRDcxQUQzRkIxNzAwNjZCN0I5IC8qIE5ldHdvcmtDYWNoZUJsb2JTdG9yYWdlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDlENDBENjFBRDNG
QjE3MDA2NkI3QjkgLyogTmV0d29ya0NhY2hlQmxvYlN0b3JhZ2UuaCAqLzsgfTsKIAkJRTRENTRE
MDQyMUYxRDcyRDAwN0UzQzM2IC8qIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1v
dGVJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0
MEMxRjkzMjFGMEI5NkUwMDUzMDcxOCAvKiBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2Rl
UmVtb3RlSU9TLmggKi87IH07CkBAIC01NzQ0LDYgKzU3NDUsOCBAQAogCQlFNDQzNkVDMzFBMENG
REIyMDBFQUQyMDQgLyogTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTQ2OTdDQ0MxQjI1RUI4RjAwMUIwQTZDIC8qIE5ldHdvcmtDYWNo
ZUZpbGVTeXN0ZW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0
d29ya0NhY2hlRmlsZVN5c3RlbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0
N0QxRTk2MUIwNjJCNjYwMDI2NzZBOCAvKiBOZXR3b3JrQ2FjaGVEYXRhLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtDYWNoZURhdGEuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlFNDdGQzg5RDI1QjgzMzEzMDA1NDk1RkMgLyogTmV0d29y
a0xvYWRTY2hlZHVsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TmV0d29ya0xvYWRTY2hlZHVsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlF
NDdGQzg5RjI1QjgzMzFDMDA1NDk1RkMgLyogTmV0d29ya0xvYWRTY2hlZHVsZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya0xvYWRTY2hlZHVsZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ4OUQyODQxQTBBMkRCODAwNzhDMDZBIC8qIE5ldHdv
cmtDYWNoZUNvZGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBO
ZXR3b3JrQ2FjaGVDb2RlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDg5
RDI4NTFBMEEyREI4MDA3OEMwNkEgLyogTmV0d29ya0NhY2hlQ29kZXJzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtDYWNoZUNvZGVycy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFNDlENDBENjFBRDNGQjE3MDA2NkI3QjkgLyogTmV0d29ya0NhY2hl
QmxvYlN0b3JhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya0Nh
Y2hlQmxvYlN0b3JhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTgzMjgsNiAr
ODMzMSw4IEBACiAJCQkJNDEwM0ZCQTEyMDYxQkRCNzAwQzJFQUY4IC8qIE5ldHdvcmtMb2FkQ2hl
Y2tlci5oICovLAogCQkJCTgzRDQ1NEQ2MUJFOUQzQzQwMDZDOTNCRCAvKiBOZXR3b3JrTG9hZENs
aWVudC5oICovLAogCQkJCTgzOTE0OTYzMUJFQTgzODUwMEQyRDk1MyAvKiBOZXR3b3JrTG9hZFBh
cmFtZXRlcnMuaCAqLywKKwkJCQlFNDdGQzg5RDI1QjgzMzEzMDA1NDk1RkMgLyogTmV0d29ya0xv
YWRTY2hlZHVsZXIuY3BwICovLAorCQkJCUU0N0ZDODlGMjVCODMzMUMwMDU0OTVGQyAvKiBOZXR3
b3JrTG9hZFNjaGVkdWxlci5oICovLAogCQkJCTUxMENDN0RGMTYxMzhFMjkwMEQwM0VEMyAvKiBO
ZXR3b3JrUHJvY2Vzcy5jcHAgKi8sCiAJCQkJNTEwQ0M3RTAxNjEzOEUyOTAwRDAzRUQzIC8qIE5l
dHdvcmtQcm9jZXNzLmggKi8sCiAJCQkJNTFBOEE2MTcxNjI3RjVCQjAwMEQ5MEU5IC8qIE5ldHdv
cmtQcm9jZXNzLm1lc3NhZ2VzLmluICovLApAQCAtMTIwOTEsNiArMTIwOTYsNyBAQAogCQkJCTkz
QTg4QjMzMUJDNkU5Q0QwMEFCQTVDMiAvKiBXZWJIaXRUZXN0UmVzdWx0RGF0YS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRjQ0REZFQjIxRTlFNzUyRjAwMzhEMTk2IC8qIFdlYkljb25VdGlsaXRpZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTkzMjYxMTYxMjE0MDU0RjQwMDA4MDZFNyAvKiBXZWJJREJD
b25uZWN0aW9uVG9DbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUU0N0ZDOEEwMjVCODMzMUMw
MDU0OTVGQyAvKiBOZXR3b3JrTG9hZFNjaGVkdWxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE0
MTI5OTQxQzY0MjhCQjAwNTlFNzE0IC8qIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTEwNTIzNzQxQzczRDM4QjAwNzk5M0NCIC8qIFdlYklEQkNvbm5lY3Rp
b25Ub1NlcnZlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzNFODM1NTIzQTA3QzA2
MDBERUYyODkgLyogV2ViSURCU2VydmVyLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAppbmRl
eCA2OWRlYTc0OTNlMjYuLjdjNTc2OGE1YjhmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcApAQCAtODUxLDYgKzg1
MSwyMiBAQCBib29sIFdlYkxvYWRlclN0cmF0ZWd5OjpoYXZlUGVyZm9ybWVkU2VjdXJpdHlDaGVj
a3MoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcAogICAgIHJldHVybiBmYWxzZTsKIH0KIAor
dm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c2V0UmVzb3VyY2VMb2FkU2NoZWR1bGluZ01vZGUoV2Vi
Q29yZTo6UGFnZSYgcGFnZSwgV2ViQ29yZTo6TG9hZFNjaGVkdWxpbmdNb2RlIG1vZGUpCit7Cisg
ICAgYXV0byYgY29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKTsKKyAgICBjb25uZWN0aW9uLnNlbmQo
TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTZXRSZXNvdXJjZUxvYWRT
Y2hlZHVsaW5nTW9kZShXZWJQYWdlOjpmcm9tQ29yZVBhZ2UocGFnZSkuaWRlbnRpZmllcigpLCBt
b2RlKSwgMCk7Cit9CisKK3ZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnByaW9yaXRpemVSZXNvdXJj
ZUxvYWRzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcio+JiByZXNvdXJj
ZXMpCit7CisgICAgYXV0byBpZGVudGlmaWVycyA9IHJlc291cmNlcy5tYXAoW10oYXV0byogbG9h
ZGVyKSAtPiBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHsKKyAgICAgICAgcmV0dXJuIGxvYWRlci0+
aWRlbnRpZmllcigpOworICAgIH0pOworCisgICAgYXV0byYgY29ubmVjdGlvbiA9IFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rp
b24oKTsKKyAgICBjb25uZWN0aW9uLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpQcmlvcml0aXplUmVzb3VyY2VMb2FkcyhpZGVudGlmaWVycyksIDApOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI3VuZGVmIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0
cmF0ZWd5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJh
dGVneS5oCmluZGV4IDlkOTg4NDE4M2VjOS4uMDRkZjQ4ZmVkMzZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgKQEAgLTEx
NCw2ICsxMTQsOSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBpc1Jlc291cmNlTG9hZEZpbmlzaGVk
KFdlYkNvcmU6OkNhY2hlZFJlc291cmNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JikgZmluYWw7CiAKKyAgICB2b2lkIHNldFJlc291cmNlTG9hZFNjaGVkdWxpbmdNb2RlKFdlYkNv
cmU6OlBhZ2UmLCBXZWJDb3JlOjpMb2FkU2NoZWR1bGluZ01vZGUpIGZpbmFsOworICAgIHZvaWQg
cHJpb3JpdGl6ZVJlc291cmNlTG9hZHMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlN1YnJlc291cmNl
TG9hZGVyKj4mKSBmaW5hbDsKKwogICAgIFZlY3Rvcjx1aW50NjRfdD4gb25nb2luZ0xvYWRzKCkg
Y29uc3QgZmluYWwKICAgICB7CiAgICAgICAgIHJldHVybiBXVEY6Om1hcChtX3dlYlJlc291cmNl
TG9hZGVycywgW10oYXV0byYmIGtleVZhbHVlKSAtPiB1aW50NjRfdCB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGY4OTBiOGNiNmE0YS4uNzNl
Y2ZmNmQxMjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcApAQCAtMTQwOSw5ICsxNDA5LDcgQEAgdm9pZCBXZWJQYWdlOjpjbG9zZSgpCiAKICAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJjbG9zZToiKTsKIAotI2lmIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5z
dXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDbGVhclBhZ2VTcGVjaWZpY0RhdGFGb3JS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzKG1faWRlbnRpZmllciksIDApOwotI2VuZGlmCisgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29u
bmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpD
bGVhclBhZ2VTcGVjaWZpY0RhdGEobV9pZGVudGlmaWVyKSwgMCk7CiAKICAgICBtX2lzQ2xvc2Vk
ID0gdHJ1ZTsKIAo=
</data>
<flag name="commit-queue"
          id="436222"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418415</attachid>
            <date>2021-01-26 07:02:11 -0800</date>
            <delta_ts>2021-01-26 09:17:35 -0800</delta_ts>
            <desc>patch</desc>
            <filename>load-scheduler-8.patch</filename>
            <type>text/plain</type>
            <size>52622</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggOWZlYTc0OTdlOWMyLi4xODI1YzE0NjA1N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIw
MjEtMDEtMjUgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgorCisgICAgICAgIElt
cGxlbWVudCB2aXNpYmlsaXR5IGJhc2VkIHJlc291cmNlIGxvYWQgc2NoZWR1bGluZyBmb3IgbG93
IHByaW9yaXR5IHJlc291cmNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjIwNzI4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBTY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwu
eWFtbDoKKworICAgICAgICBBZGQgYW4gaW50ZXJuYWwgc2V0dGluZywgZGVmYXVsdCB0byBvZmYg
Zm9yIG5vdy4KKwogMjAyMS0wMS0xOSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgogCiAgICAgICAgIFtXVEZdIFN0cmluZ0ltcGw6OnJlbW92ZUNoYXJhY3RlcnMgc2hvdWxkIGJl
IGlubGluZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQ
cmVmZXJlbmNlc0ludGVybmFsLnlhbWwgYi9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMv
V2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55YW1sCmluZGV4IGI0YjY0ZTFhNWI2NS4uOTZhMDZmNjg1
ZDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVy
ZW5jZXNJbnRlcm5hbC55YW1sCisrKyBiL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9X
ZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwKQEAgLTU5OSw2ICs1OTksMTggQEAgUHJlZml4ZWRX
ZWJBdWRpb0VuYWJsZWQ6CiAgICAgV2ViQ29yZToKICAgICAgIGRlZmF1bHQ6IGZhbHNlCiAKK1Jl
c291cmNlTG9hZFNjaGVkdWxpbmdFbmFibGVkOgorICB0eXBlOiBib29sCisgIGh1bWFuUmVhZGFi
bGVOYW1lOiAiUmVzb3VyY2UgTG9hZCBTY2hlZHVsaW5nIgorICBodW1hblJlYWRhYmxlRGVzY3Jp
cHRpb246ICJOZXR3b3JrIHByb2Nlc3Mgc2lkZSBwcmlvcml0eSBhbmQgdmlzaWJpbGl0eSBiYXNl
ZCByZXNvdXJjZSBsb2FkIHNjaGVkdWxpbmciCisgIGRlZmF1bHRWYWx1ZToKKyAgICBXZWJLaXRM
ZWdhY3k6CisgICAgICBkZWZhdWx0OiBmYWxzZQorICAgIFdlYktpdDoKKyAgICAgIGRlZmF1bHQ6
IGZhbHNlCisgICAgV2ViQ29yZToKKyAgICAgIGRlZmF1bHQ6IGZhbHNlCisKICMgRklYTUU6IFRo
aXMgaXMgbm90IHJlbGV2ZW50IGZvciBXZWJLaXRMZWdhY3ksIHNvIHNob3VsZCBiZSBleGNsdWRl
ZCBmcm9tIFdlYktpdExlZ2FjeSBlbnRpcmVseS4KIFJlc3RyaWN0ZWRIVFRQUmVzcG9uc2VBY2Nl
c3M6CiAgIHR5cGU6IGJvb2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjMDI3MGZhNzA3MjAuLmViNTRhZmUwOWM5
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDIxLTAxLTI1ICBBbnR0aSBLb2l2aXN0
byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgdmlzaWJpbGl0eSBiYXNl
ZCByZXNvdXJjZSBsb2FkIHNjaGVkdWxpbmcgZm9yIGxvdyBwcmlvcml0eSByZXNvdXJjZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDcyOAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRyYWNrIGxvYWQg
c2NoZWR1bGluZyBtb2RlIGR1cmluZyBvbiBwZXIgcGFnZSBiYXNpcy4KKyAgICAgICAgQWRkIHN1
cHBvcnQgZm9yIHByaW9yaXRpemluZyByZXNvdXJjZXMgYmFzZWQgb24gdGhlaXIgdmlzaWJpbGl0
eS4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGxvYWRlci9Mb2FkZXJTdHJhdGVneS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpMb2FkZXJTdHJhdGVneTo6c2V0UmVzb3VyY2VMb2FkU2NoZWR1
bGluZ01vZGUpOgorICAgICAgICAoV2ViQ29yZTo6TG9hZGVyU3RyYXRlZ3k6OnByaW9yaXRpemVS
ZXNvdXJjZUxvYWRzKToKKyAgICAgICAgKiBsb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaDoKKyAgICAg
ICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6ZGlkU3RhcnRQcm92
aXNpb25hbExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6ZGlkRmluaXNoTG9hZCk6CisK
KyAgICAgICAgU2hlZHVsZWQgbW9kZXMgaXMgaXMgZGlzYWJsZWQgYXQgbGF0ZXN0IHdoZW4gdGhl
IGxvYWQgY29tcGxldGVzLgorCisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpkb0FmdGVyVXBkYXRl
UmVuZGVyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnByaW9yaXRpemVWaXNpYmxlUmVz
b3VyY2VzKToKKworICAgICAgICBBZnRlciByZW5kZXJpbmcgdXBkYXRlLCBpZiBpbiBzY2hlZHVs
ZWQgbW9kZSwgY2hlY2sgdGhlIHZpc2liaWxpdHkgc3RhdHVzIG9mIGltYWdlcyByZXNvdXJjZXMu
CisgICAgICAgIFByaW9yaXRpemUgbG9hZHMgZm9yIHZpc2libGUgcmVzb3VyY2VzLgorICAgICAg
ICBNb3ZlIG91dCBvZiB0aGUgc2hjZWR1bGVkIG1vZGUgaWYgdGhlIGRvY3VtZW50IGlzIGZ1bGx5
IHBhcnNlZCBhbmQgYWxsIHZpc2liaWxlIGxvYWRzIGFyZSBjb21wbGV0ZWQuCisKKyAgICAgICAg
KFdlYkNvcmU6OlBhZ2U6OnNldExvYWRTY2hlZHVsaW5nTW9kZSk6CisgICAgICAgICogcGFnZS9Q
YWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpsb2FkU2NoZWR1bGluZ01vZGUgY29uc3Qp
OgorCiAyMDIxLTAxLTIwICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAg
ICAgICBJbXBsZW1lbnQgZWZmaWNpZW50IHdheSB0byBjb2xsZWN0IGltYWdlcyB0aGF0IGFyZSBs
aWtlbHkgdmlzaWJsZSBpbiB0aGUgdmlld3BvcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IGFkZTVj
NjkwMjQyOS4uNDJiN2ExZmIxMzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJz
LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTc3Miw2ICs3NzIs
NyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgbG9hZGVyL0lt
YWdlTG9hZGVyLmgKICAgICBsb2FkZXIvTGlua0xvYWRlci5oCiAgICAgbG9hZGVyL0xpbmtMb2Fk
ZXJDbGllbnQuaAorICAgIGxvYWRlci9Mb2FkU2NoZWR1bGluZ01vZGUuaAogICAgIGxvYWRlci9M
b2FkVGltaW5nLmgKICAgICBsb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaAogICAgIGxvYWRlci9NZWRp
YVJlc291cmNlTG9hZGVyLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCAxOTM1MDRkYzQzYjYuLmRkNGJkMTlmOWE4NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MzAyLDYgKzMwMiw3IEBACiAJCTBGNDk2NkFCMURCNDBDNDMwMEEyNzRCQiAvKiBKU0RPTVBvaW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ5NjZB
NTFEQjQwQzQzMDBBMjc0QkIgLyogSlNET01Qb2ludC5oICovOyB9OwogCQkwRjQ5NjZBRDFEQjQw
QzQzMDBBMjc0QkIgLyogSlNET01Qb2ludEluaXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDk2NkE3MURCNDBDNDMwMEEyNzRCQiAvKiBKU0RPTVBv
aW50SW5pdC5oICovOyB9OwogCQkwRjQ5NjZBRjFEQjQwQzQzMDBBMjc0QkIgLyogSlNET01Qb2lu
dFJlYWRPbmx5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjQ5NjZBOTFEQjQwQzQzMDBBMjc0QkIgLyogSlNET01Qb2ludFJlYWRPbmx5LmggKi87IH07
CisJCTBGNTNGQjg0MjEzQjdBNjQwMEM0MEQzNCAvKiBSZW5kZXJMYXllclNjcm9sbGFibGVBcmVh
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjUzRkI4
NDIxM0I3ODY0MDBDNDBEMzQgLyogUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNTREQ0U2MTg4MTA1
MUQwMDNFRURCQiAvKiBUZXh0QXV0b1NpemluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1NERDRTQxODgxMDUxRDAwM0VFREJCIC8qIFRleHRBdXRv
U2l6aW5nLmggKi87IH07CiAJCTBGNTRERDA4MTg4MUQ1RjUwMDNFRURCQiAvKiBUb3VjaC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1NEREMDUxODgx
RDVGNTAwM0VFREJCIC8qIFRvdWNoLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMEY1NEREMDkxODgxRDVGNTAwM0VFREJCIC8qIFRvdWNoRXZlbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNTRERDA2
MTg4MUQ1RjUwMDNFRURCQiAvKiBUb3VjaEV2ZW50LmggKi87IH07CkBAIC00MDg1LDcgKzQwODYs
NiBAQAogCQlCQ0VBNDg3NjA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVySW1hZ2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUE0ODM3MDk3RDkzMDIw
MDk0QzlFNCAvKiBSZW5kZXJJbWFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUJDRUE0ODc4MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJJbmxp
bmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUE0
ODM5MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJJbmxpbmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0VBNDg3QTA5N0Q5MzAyMDA5NEM5RTQg
LyogUmVuZGVyTGF5ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDRUE0ODNCMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJMYXllci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTBGNTNGQjg0MjEzQjdB
NjQwMEM0MEQzNCAvKiBSZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjUzRkI4NDIxM0I3ODY0MDBDNDBEMzQg
LyogUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDRUE0ODgwMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5k
ZXJPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDRUE0ODQxMDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJPYmplY3QuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0VBNDg4NzA5N0Q5MzAyMDA5
NEM5RTQgLyogUmVuZGVyVGhlbWVNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDRUE0ODQ4MDk3RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJUaGVtZU1h
Yy5oICovOyB9OwogCQlCQ0VBNDg4QTA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyVGhlbWUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRUE0ODRCMDk3
RDkzMDIwMDk0QzlFNCAvKiBSZW5kZXJUaGVtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC01MTM4LDYgKzUxMzgsNyBAQAogCQlFNDdDMzkzMjFG
RTZFMTA1MDBCQkJDNkIgLyogUmVuZGVyVHJlZUJ1aWxkZXJMaXN0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDdDMzkyODFGRTZFMEREMDBCQkJDNkIg
LyogUmVuZGVyVHJlZUJ1aWxkZXJMaXN0LmggKi87IH07CiAJCUU0N0MzOTMzMUZFNkUxMDgwMEJC
QkM2QiAvKiBSZW5kZXJUcmVlQnVpbGRlck11bHRpQ29sdW1uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDdDMzkyNzFGRTZFMERDMDBCQkJDNkIgLyog
UmVuZGVyVHJlZUJ1aWxkZXJNdWx0aUNvbHVtbi5oICovOyB9OwogCQlFNDdFMjc2NTE2MDM2RUQy
MDBFRTJBRkIgLyogRXh0ZW5zaW9uU3R5bGVTaGVldHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0N0UyNzY0MTYwMzZFRDIwMEVFMkFGQiAvKiBFeHRl
bnNpb25TdHlsZVNoZWV0cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCUU0N0ZDOEEzMjVCODRENzIwMDU0OTVGQyAvKiBMb2FkU2NoZWR1bGluZ01v
ZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0N0ZD
OEExMjVCODRENzEwMDU0OTVGQyAvKiBMb2FkU2NoZWR1bGluZ01vZGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNDgxMzdCOTFEQjNCNTI2MDA1
QzU5QkYgLyogU3R5bGVWYWxpZGl0eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTQ4MTM3QjgxREIzQjUyNjAwNUM1OUJGIC8qIFN0eWxlVmFsaWRpdHku
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNDg2
M0NGRTIzODQyRTlFMDA5NzIxNTggLyogUnVsZURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0ODYzQ0ZEMjM4NDJFOUUwMDk3MjE1OCAvKiBSdWxl
RGF0YS5oICovOyB9OwogCQlFNDk0NkVBRjE1NkU2NEREMDBEMzI5N0YgLyogU3R5bGVSdWxlSW1w
b3J0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDk0
NkVBRDE1NkU2NEREMDBEMzI5N0YgLyogU3R5bGVSdWxlSW1wb3J0LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE2MzE1LDYgKzE2MzE2LDcgQEAK
IAkJRTQ3QzM5MkMxRkU2RTBERjAwQkJCQzZCIC8qIFJlbmRlclRyZWVVcGRhdGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlclRyZWVVcGRhdGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0N0UyNzY0MTYwMzZFRDIwMEVFMkFGQiAvKiBFeHRlbnNp
b25TdHlsZVNoZWV0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeHRlbnNp
b25TdHlsZVNoZWV0cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDdFMjc2NzE2
MDM2RURDMDBFRTJBRkIgLyogRXh0ZW5zaW9uU3R5bGVTaGVldHMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXh0ZW5zaW9uU3R5bGVTaGVldHMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlFNDdGQzhBMTI1Qjg0RDcxMDA1NDk1RkMgLyogTG9hZFNj
aGVkdWxpbmdNb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvYWRTY2hl
ZHVsaW5nTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDgxMzdCODFEQjNC
NTI2MDA1QzU5QkYgLyogU3R5bGVWYWxpZGl0eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTdHlsZVZhbGlkaXR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0
ODYzQ0ZBMjM4NDJFODcwMDk3MjE1OCAvKiBSdWxlRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSdWxlRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUU0ODYzQ0ZEMjM4NDJFOUUwMDk3MjE1OCAvKiBSdWxlRGF0YS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSdWxlRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMjczNjcsNiArMjczNjksNyBAQAogCQkJCTUxRTY4MjBGMTYzODczMDIwMDNCQkYz
QyAvKiBMb2FkZXJTdHJhdGVneS5oICovLAogCQkJCTg2MUMyRUEzMTNGQjRGREQwMDA2MkFCQiAv
KiBMb2FkVGltaW5nLmNwcCAqLywKIAkJCQk4QTEyRTM1QzExRkEzMzI4MDAyNTgzNkEgLyogTG9h
ZFRpbWluZy5oICovLAorCQkJCUU0N0ZDOEExMjVCODRENzEwMDU0OTVGQyAvKiBMb2FkU2NoZWR1
bGluZ01vZGUuaCAqLywKIAkJCQlDRUVGQ0Q3NzE5REIzMUY3MDAzODc2RDcgLyogTWVkaWFSZXNv
dXJjZUxvYWRlci5jcHAgKi8sCiAJCQkJQ0VFRkNENzgxOURCMzFGNzAwMzg3NkQ3IC8qIE1lZGlh
UmVzb3VyY2VMb2FkZXIuaCAqLywKIAkJCQk1MkYxMDg2MjE2MkI2RDgyMDA5QUM4MUUgLyogTWl4
ZWRDb250ZW50Q2hlY2tlci5jcHAgKi8sCkBAIC0zNDkwMSw2ICszNDkwNCw3IEBACiAJCQkJNzFB
NTdERjIxNTRCRTI1QzAwMDlEMTIwIC8qIFNWR1BhdGhVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCUIyMjI3QTg4MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQYXR0ZXJuRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJN0NFNThENEExREQ2NEE1QjAwMTI4NTUyIC8qIFNWR1BvaW50Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQlFNDdGQzhBMzI1Qjg0RDcyMDA1NDk1RkMgLyogTG9hZFNjaGVk
dWxpbmdNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0E4QzBEMDBCRjIyMDA3MUI3ODIg
LyogU1ZHUG9pbnRMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0E4RjBEMDBCRjIyMDA3
MUI3ODIgLyogU1ZHUG9seUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QTkxMEQw
MEJGMjIwMDcxQjc4MiAvKiBTVkdQb2x5Z29uRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZFNjaGVkdWxpbmdNb2RlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTG9hZFNjaGVkdWxpbmdNb2RlLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwLi43MGJlODBjZDhkMzgKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZFNjaGVkdWxpbmdNb2RlLmgKQEAgLTAsMCArMSw0NyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0VudW1UcmFpdHMu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIGNsYXNzIExvYWRTY2hlZHVsaW5nTW9k
ZSA6IHVpbnQ4X3QgeworICAgIERpcmVjdCwgLy8gQWxsIGxvYWRzIGFyZSBpc3N1ZWQgZGlyZWN0
bHkgdG8gbmV0d29yayBsYXllci4KKyAgICBQcmlvcml0aXplZCAvLyBMb3cgcHJpb3JpdHkgbG9h
ZHMgbWF5IGdldCBkZWxheWVkIGluIGZhdm9yIG9mIGhpZ2hlciBwcmlvcml0eSBvbmVzLgorfTsK
KworfQorCituYW1lc3BhY2UgV1RGIHsKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2Vi
Q29yZTo6TG9hZFNjaGVkdWxpbmdNb2RlPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVl
czwKKyAgICAgICAgV2ViQ29yZTo6TG9hZFNjaGVkdWxpbmdNb2RlLAorICAgICAgICBXZWJDb3Jl
OjpMb2FkU2NoZWR1bGluZ01vZGU6OkRpcmVjdCwKKyAgICAgICAgV2ViQ29yZTo6TG9hZFNjaGVk
dWxpbmdNb2RlOjpQcmlvcml0aXplZAorICAgID47Cit9OworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0ZWd5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Mb2FkZXJTdHJhdGVneS5jcHAKaW5kZXggOGM2MzYxZjY3YzM5Li44YjU1ODFkYjRmMjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVneS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0ZWd5LmNwcApAQCAtMzIsNiArMzIsMTUg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBMb2FkZXJTdHJhdGVneTo6fkxvYWRlclN0cmF0ZWd5
KCkgPSBkZWZhdWx0OwogCisKK3ZvaWQgTG9hZGVyU3RyYXRlZ3k6OnNldFJlc291cmNlTG9hZFNj
aGVkdWxpbmdNb2RlKFBhZ2UmLCBMb2FkU2NoZWR1bGluZ01vZGUpCit7Cit9CisKK3ZvaWQgTG9h
ZGVyU3RyYXRlZ3k6OnByaW9yaXRpemVSZXNvdXJjZUxvYWRzKGNvbnN0IFZlY3RvcjxTdWJyZXNv
dXJjZUxvYWRlcio+JikKK3sKK30KKwogUmVzb3VyY2VSZXNwb25zZSBMb2FkZXJTdHJhdGVneTo6
cmVzcG9uc2VGcm9tUmVzb3VyY2VMb2FkSWRlbnRpZmllcih1aW50NjRfdCAvKiByZXNvdXJjZUxv
YWRJZGVudGlmaWVyICovKQogewogICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9M
b2FkZXJTdHJhdGVneS5oCmluZGV4IDYwOTdkMjY1MDc2Ni4uMWE0MjJkNzVlZjUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdt
YSBvbmNlCiAKICNpbmNsdWRlICJGZXRjaE9wdGlvbnMuaCIKKyNpbmNsdWRlICJMb2FkU2NoZWR1
bGluZ01vZGUuaCIKICNpbmNsdWRlICJQYWdlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlc291
cmNlTG9hZFByaW9yaXR5LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgiCkBA
IC02OSw2ICs3MCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc3VzcGVuZFBlbmRpbmdS
ZXF1ZXN0cygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lUGVuZGluZ1JlcXVlc3RzKCkg
PSAwOwogCisgICAgdmlydHVhbCB2b2lkIHNldFJlc291cmNlTG9hZFNjaGVkdWxpbmdNb2RlKFBh
Z2UmLCBMb2FkU2NoZWR1bGluZ01vZGUpOworICAgIHZpcnR1YWwgdm9pZCBwcmlvcml0aXplUmVz
b3VyY2VMb2Fkcyhjb25zdCBWZWN0b3I8U3VicmVzb3VyY2VMb2FkZXIqPiYpOworCiAgICAgdmly
dHVhbCBib29sIHVzZVBpbmdMb2FkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHVzaW5n
IFBpbmdMb2FkQ29tcGxldGlvbkhhbmRsZXIgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgUmVz
b3VyY2VFcnJvciYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKT47CiAgICAgdmlydHVhbCB2b2lk
IHN0YXJ0UGluZ0xvYWQoRnJhbWUmLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBIVFRQSGVhZGVy
TWFwJiBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBjb25zdCBGZXRjaE9wdGlvbnMmLCBDb250ZW50
U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uLCBQaW5nTG9hZENvbXBsZXRpb25IYW5kbGVyJiYgPSB7
IH0pID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IGNlOTE2ZjhmMjA5MS4uYjk3ZWFmM2Y3MDQw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJCYWNrRm9y
d2FyZENsaWVudC5oIgogI2luY2x1ZGUgIkJhY2tGb3J3YXJkQ29udHJvbGxlci5oIgogI2luY2x1
ZGUgIkNhY2hlU3RvcmFnZVByb3ZpZGVyLmgiCisjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKICNp
bmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIkNocm9tZS5oIgogI2lu
Y2x1ZGUgIkNocm9tZUNsaWVudC5oIgpAQCAtMTIzMiw2ICsxMjMzLDkgQEAgdm9pZCBQYWdlOjpk
aWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpCiB7CiAgICAgaWYgKG1fcGVyZm9ybWFuY2VNb25pdG9y
KQogICAgICAgICBtX3BlcmZvcm1hbmNlTW9uaXRvci0+ZGlkU3RhcnRQcm92aXNpb25hbExvYWQo
KTsKKworICAgIGlmIChtX3NldHRpbmdzLT5yZXNvdXJjZUxvYWRTY2hlZHVsaW5nRW5hYmxlZCgp
KQorICAgICAgICBzZXRMb2FkU2NoZWR1bGluZ01vZGUoTG9hZFNjaGVkdWxpbmdNb2RlOjpQcmlv
cml0aXplZCk7CiB9CiAKIHZvaWQgUGFnZTo6ZGlkQ29tbWl0TG9hZCgpCkBAIC0xMjQ5LDYgKzEy
NTMsOCBAQCB2b2lkIFBhZ2U6OmRpZEZpbmlzaExvYWQoKQogCiAgICAgaWYgKG1fcGVyZm9ybWFu
Y2VNb25pdG9yKQogICAgICAgICBtX3BlcmZvcm1hbmNlTW9uaXRvci0+ZGlkRmluaXNoTG9hZCgp
OworCisgICAgc2V0TG9hZFNjaGVkdWxpbmdNb2RlKExvYWRTY2hlZHVsaW5nTW9kZTo6RGlyZWN0
KTsKIH0KIAogYm9vbCBQYWdlOjppc09ubHlOb25VdGlsaXR5UGFnZSgpIGNvbnN0CkBAIC0xNjA3
LDYgKzE2MTMsOCBAQCB2b2lkIFBhZ2U6OmRvQWZ0ZXJVcGRhdGVSZW5kZXJpbmcoKQogICAgIH0p
OwogI2VuZGlmCiAKKyAgICBwcmlvcml0aXplVmlzaWJsZVJlc291cmNlcygpOworCiAgICAgbV9y
ZW5kZXJpbmdVcGRhdGVSZW1haW5pbmdTdGVwcy5sYXN0KCkucmVtb3ZlKFJlbmRlcmluZ1VwZGF0
ZVN0ZXA6OkV2ZW50UmVnaW9uVXBkYXRlKTsKIAogI2lmIEVOQUJMRShJT1NfVE9VQ0hfRVZFTlRT
KQpAQCAtMTY3Niw2ICsxNjg0LDQ0IEBAIHZvaWQgUGFnZTo6cmVuZGVyaW5nVXBkYXRlQ29tcGxl
dGVkKCkKICAgICB9CiB9CiAKK3ZvaWQgUGFnZTo6cHJpb3JpdGl6ZVZpc2libGVSZXNvdXJjZXMo
KQoreworICAgIGlmIChsb2FkU2NoZWR1bGluZ01vZGUoKSA9PSBMb2FkU2NoZWR1bGluZ01vZGU6
OkRpcmVjdCkKKyAgICAgICAgcmV0dXJuOworICAgIGlmICghbWFpbkZyYW1lKCkuZG9jdW1lbnQo
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgVmVjdG9yPENhY2hlZFJlc291cmNlKj4gdG9Qcmlv
cml0aXplOworCisgICAgZm9yRWFjaERvY3VtZW50KFsmXSAoRG9jdW1lbnQmIGRvY3VtZW50KSB7
CisgICAgICAgIHRvUHJpb3JpdGl6ZS5hcHBlbmRWZWN0b3IoZG9jdW1lbnQuY2FjaGVkUmVzb3Vy
Y2VMb2FkZXIoKS52aXNpYmxlUmVzb3VyY2VzVG9Qcmlvcml0aXplKCkpOworICAgIH0pOworCisg
ICAgaWYgKHRvUHJpb3JpdGl6ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKCFtYWluRnJhbWUo
KS5kb2N1bWVudCgpLT5wYXJzaW5nKCkpIHsKKyAgICAgICAgICAgIC8vIEFsbCB2aXNpYmxlIHJl
c291cmNlcyBoYXZlIGJlZW4gbG9hZGVkIGFuZCB3ZSBhcmUgZG9uZSB3aXRoIHBhcnNpbmcuIFN0
b3Agc2NoZWR1bGluZy4KKyAgICAgICAgICAgIHNldExvYWRTY2hlZHVsaW5nTW9kZShMb2FkU2No
ZWR1bGluZ01vZGU6OkRpcmVjdCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGF1dG8gcmVzb3VyY2VMb2FkZXJzID0gdG9Qcmlvcml0aXplLm1hcChbXShhdXRvKiBy
ZXNvdXJjZSkgeworICAgICAgICByZXR1cm4gcmVzb3VyY2UtPmxvYWRlcigpOworICAgIH0pOwor
CisgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPnByaW9yaXRpemVS
ZXNvdXJjZUxvYWRzKHJlc291cmNlTG9hZGVycyk7Cit9CisKK3ZvaWQgUGFnZTo6c2V0TG9hZFNj
aGVkdWxpbmdNb2RlKExvYWRTY2hlZHVsaW5nTW9kZSBtb2RlKQoreworICAgIGlmIChtX2xvYWRT
Y2hlZHVsaW5nTW9kZSA9PSBtb2RlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2xvYWRTY2hl
ZHVsaW5nTW9kZSA9IG1vZGU7CisKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3Ry
YXRlZ3koKS0+c2V0UmVzb3VyY2VMb2FkU2NoZWR1bGluZ01vZGUoKnRoaXMsIG1fbG9hZFNjaGVk
dWxpbmdNb2RlKTsKK30KKwogdm9pZCBQYWdlOjpzdXNwZW5kU2NyaXB0ZWRBbmltYXRpb25zKCkK
IHsKICAgICBtX3NjcmlwdGVkQW5pbWF0aW9uc1N1c3BlbmRlZCA9IHRydWU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5o
CmluZGV4IDFiYjQzMTY1NmRlMi4uNDUwNjk2ODYxNDI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtMjks
NiArMjksNyBAQAogI2luY2x1ZGUgIkxheW91dE1pbGVzdG9uZS5oIgogI2luY2x1ZGUgIkxheW91
dFJlY3QuaCIKICNpbmNsdWRlICJMZW5ndGhCb3guaCIKKyNpbmNsdWRlICJMb2FkU2NoZWR1bGlu
Z01vZGUuaCIKICNpbmNsdWRlICJNZWRpYVByb2R1Y2VyLmgiCiAjaW5jbHVkZSAiUGFnaW5hdGlv
bi5oIgogI2luY2x1ZGUgIlBsYXliYWNrVGFyZ2V0Q2xpZW50Q29udGV4dElkZW50aWZpZXIuaCIK
QEAgLTgzMSw2ICs4MzIsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCB0ZXh0SW50ZXJhY3Rpb25FbmFi
bGVkKCkgeyByZXR1cm4gbV90ZXh0SW50ZXJhY3Rpb25FbmFibGVkOyB9CiAgICAgdm9pZCBzZXRU
ZXh0SW50ZXJhY3Rpb25FbmFibGVkKGJvb2wgdmFsdWUpIHsgbV90ZXh0SW50ZXJhY3Rpb25FbmFi
bGVkID0gdmFsdWU7IH0KIAorICAgIExvYWRTY2hlZHVsaW5nTW9kZSBsb2FkU2NoZWR1bGluZ01v
ZGUoKSBjb25zdCB7IHJldHVybiBtX2xvYWRTY2hlZHVsaW5nTW9kZTsgfQorICAgIHZvaWQgc2V0
TG9hZFNjaGVkdWxpbmdNb2RlKExvYWRTY2hlZHVsaW5nTW9kZSk7CisKIHByaXZhdGU6CiAgICAg
c3RydWN0IE5hdmlnYXRpb24gewogICAgICAgICBSZWdpc3RyYWJsZURvbWFpbiBkb21haW47CkBA
IC04NzAsNiArODc0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlbmRlcmluZ1VwZGF0ZUNvbXBs
ZXRlZCgpOwogICAgIHZvaWQgY29tcHV0ZVVuZnVsZmlsbGVkUmVuZGVyaW5nU3RlcHMoT3B0aW9u
U2V0PFJlbmRlcmluZ1VwZGF0ZVN0ZXA+KTsKICAgICB2b2lkIHNjaGVkdWxlUmVuZGVyaW5nVXBk
YXRlSW50ZXJuYWwoKTsKKyAgICB2b2lkIHByaW9yaXRpemVWaXNpYmxlUmVzb3VyY2VzKCk7CiAK
ICAgICBSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXImIHJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcigp
OwogCkBAIC0xMTMyLDYgKzExMzcsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9sb2Fkc0Zyb21O
ZXR3b3JrIHsgdHJ1ZSB9OwogICAgIGJvb2wgbV9jYW5Vc2VDcmVkZW50aWFsU3RvcmFnZSB7IHRy
dWUgfTsKICAgICBTaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyBtX3Nob3VsZFJl
bGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nIHsgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2ll
QmxvY2tpbmc6Ok5vIH07CisgICAgTG9hZFNjaGVkdWxpbmdNb2RlIG1fbG9hZFNjaGVkdWxpbmdN
b2RlIHsgTG9hZFNjaGVkdWxpbmdNb2RlOjpEaXJlY3QgfTsKICAgICBib29sIG1faGFzQmVlbk5v
dGlmaWVkVG9JbmplY3RVc2VyU2NyaXB0cyB7IGZhbHNlIH07CiAKICAgICBNb25vdG9uaWNUaW1l
IG1fbGFzdFJlbmRlcmluZ1VwZGF0ZVRpbWVzdGFtcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMzM3OTYwZTQxZWQy
Li5lY2MwMDQ5Y2YyZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzAgQEAKKzIwMjEtMDEtMjUgIEFu
dHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCB2aXNp
YmlsaXR5IGJhc2VkIHJlc291cmNlIGxvYWQgc2NoZWR1bGluZyBmb3IgbG93IHByaW9yaXR5IHJl
c291cmNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjIwNzI4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIGEgc2ltcGxlIG5ldHdvcmsgcHJvY2VzcyBzaWRlIHJlc291cmNlIGxvYWQgc2NoZWR1bGVy
LiBXaGVuIGFjdGl2ZSBpdCBsaW1pdHMgdGhlIG51bWJlciBvZiBsb3cgcHJpb3JpdHkgcmVzb3Vy
Y2UgbG9hZHMKKyAgICAgICAgKG1vc3RseSBpbWFnZXMpIHRoYXQgYXJlIHBhc3NlZCB0byBuZXR3
b3JrIGxheWVyLiBUaGUgY3VycmVudCBsaW1pdCBpcyA2IHBlciBob3N0LCByZWR1Y2VkIGJ5IGFu
eSBvbmdvaW5nIGhpZ2hlciBwcmlvcml0eQorICAgICAgICBsb2Fkcy4gVGhpcyByZWR1Y2VzIGlt
cGFjdCBvZiBsb3cgcHJpb3JpdHkgbG9hZHMgdG8gaGlnaGVyIHByaW9yaXR5IG9uZXMsIGVzcGNp
YWxseSBvbiBIVFRQLzIuCisKKyAgICAgICAgVGhlIHNjaGVkdWxlciBhbHNvIHN1cHBvcnRzIHJl
cHJpb3JpdGl6aW5nIGxvYWRzLiBUaGlzIGlzIHVzZWQgdG8gbGV0IGltYWdlcyBjdXJyZW50bHkg
aW4gdGhlIHZpZXdwb3J0IHRvIHNraXAgdGhlIHF1ZXVlCisgICAgICAgIGFuZCBzdGFydCB0aGVp
ciBsb2FkcyBmYXN0ZXIuCisKKyAgICAgICAgVGhlIGZlYXR1cmUgaXMgbm90IGVuYWJsZWQgaW4g
dGhpcyBwYXRjaC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpjYW5jZWwpOgorICAgICAgICAoV2Vi
S2l0OjpEb3dubG9hZDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9h
ZDo6ZGlkRmluaXNoKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OmRpZEZhaWwpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNsZWFyUGFn
ZVNwZWNpZmljRGF0YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpyZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0UmVzb3VyY2VMb2FkU2NoZWR1bGluZ01v
ZGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cHJp
b3JpdGl6ZVJlc291cmNlTG9hZHMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6Y2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlz
dGljcyk6IERlbGV0ZWQuCisKKyAgICAgICAgUmVuYW1lIHRvIGNsZWFyUGFnZVNwZWNpZmljRGF0
YSBhbmQgbW92ZSBvdXQgb2YgI2lmLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpz
dGFydCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpzdGFydFdpdGhTY2hlZHVsaW5n
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6On5OZXR3b3JrTG9hZCk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpkaWRDb21wbGV0ZVdpdGhFcnJvcik6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrTG9hZFNjaGVkdWxlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
TG9hZFNjaGVkdWxlcjo6SG9zdENvbnRleHQ6OnNjaGVkdWxlKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0xvYWRTY2hlZHVsZXI6Okhvc3RDb250ZXh0Ojp1bnNjaGVkdWxlKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0xvYWRTY2hlZHVsZXI6Okhvc3RDb250ZXh0Ojpwcmlvcml0aXplKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWRTY2hlZHVsZXI6Okhvc3RDb250ZXh0OjpzdGFy
dCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkU2NoZWR1bGVyOjpIb3N0Q29udGV4dDo6
fkhvc3RDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWRTY2hlZHVsZXI6OnNj
aGVkdWxlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWRTY2hlZHVsZXI6OnVuc2NoZWR1
bGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZFNjaGVkdWxlcjo6c2V0UmVzb3VyY2VM
b2FkU2NoZWR1bGluZ01vZGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZFNjaGVkdWxl
cjo6cHJpb3JpdGl6ZUxvYWRzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWRTY2hlZHVs
ZXI6OmNsZWFyUGFnZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZFNjaGVkdWxl
cjo6Y29udGV4dEZvckxvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2Fk
U2NoZWR1bGVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJh
dGVneS5jcHAuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdv
cmtMb2FkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpuZXR3b3JrTG9hZFNjaGVkdWxlcik6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZDo6U3BlY3VsYXRpdmVMb2Fk
KToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3Ry
YXRlZ3kuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6c2V0UmVzb3Vy
Y2VMb2FkU2NoZWR1bGluZ01vZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVn
eTo6cHJpb3JpdGl6ZVJlc291cmNlTG9hZHMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29y
ay9XZWJMb2FkZXJTdHJhdGVneS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y2xvc2UpOgorCiAyMDIxLTAxLTIw
ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBPbiBwYWdlIGNs
b3NlLCBtYWtlIHN1cmUgdG8gbm90aWZ5IG9mIGNhcHR1cmUgc3RhdGUgaW1tZWRpYXRlbHkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNw
cAppbmRleCA2NTFmZjI1NGY5MDUuLjhmOTIxNGFlZGJmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcApAQCAtNDQsNyArNDQs
NyBAQAogI2luY2x1ZGUgIk5ldHdvcmtEYXRhVGFza0NvY29hLmgiCiAjZW5kaWYKIAotI2RlZmlu
ZSBSRUxFQVNFX0xPR19JRl9BTExPV0VEKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihpc0Fsd2F5
c09uTG9nZ2luZ0FsbG93ZWQoKSwgTmV0d29yaywgIiVwIC0gRG93bmxvYWQ6OiIgZm10LCB0aGlz
LCAjI19fVkFfQVJHU19fKQorI2RlZmluZSBET1dOTE9BRF9SRUxFQVNFX0xPR19JRl9BTExPV0VE
KGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgTmV0
d29yaywgIiVwIC0gRG93bmxvYWQ6OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtOTgsNyArOTgsNyBA
QCB2b2lkIERvd25sb2FkOjpjYW5jZWwoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmKT4mJiBjb21wbAogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXN1
bWVEYXRhKTsKICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCBtX2lnbm9yZURpZEZhaWxDYWxsYmFj
ayA9PSBJZ25vcmVEaWRGYWlsQ2FsbGJhY2s6Ok5vKQogICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRDYW5jZWw6IChpZCA9ICUiIFBSSXU2NCAi
KSIsIGRvd25sb2FkSUQoKS50b1VJbnQ2NCgpKTsKKyAgICAgICAgRE9XTkxPQURfUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRCgiZGlkQ2FuY2VsOiAoaWQgPSAlIiBQUkl1NjQgIikiLCBkb3dubG9hZElE
KCkudG9VSW50NjQoKSk7CiAgICAgICAgIGlmIChhdXRvIGV4dGVuc2lvbiA9IHN0ZDo6ZXhjaGFu
Z2UobV9zYW5kYm94RXh0ZW5zaW9uLCBudWxscHRyKSkKICAgICAgICAgICAgIGV4dGVuc2lvbi0+
cmV2b2tlKCk7CiAgICAgICAgIG1fZG93bmxvYWRNYW5hZ2VyLmRvd25sb2FkRmluaXNoZWQoKnRo
aXMpOwpAQCAtMTMwLDcgKzEzMCw3IEBAIHZvaWQgRG93bmxvYWQ6OmRpZENyZWF0ZURlc3RpbmF0
aW9uKGNvbnN0IFN0cmluZyYgcGF0aCkKIHZvaWQgRG93bmxvYWQ6OmRpZFJlY2VpdmVEYXRhKHVp
bnQ2NF90IGJ5dGVzV3JpdHRlbiwgdWludDY0X3QgdG90YWxCeXRlc1dyaXR0ZW4sIHVpbnQ2NF90
IHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUpCiB7CiAgICAgaWYgKCFtX2hhc1JlY2VpdmVkRGF0
YSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlRGF0YTogU3Rh
cnRlZCByZWNlaXZpbmcgZGF0YSAoaWQgPSAlIiBQUkl1NjQgIikiLCBkb3dubG9hZElEKCkudG9V
SW50NjQoKSk7CisgICAgICAgIERPV05MT0FEX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJl
Y2VpdmVEYXRhOiBTdGFydGVkIHJlY2VpdmluZyBkYXRhIChpZCA9ICUiIFBSSXU2NCAiKSIsIGRv
d25sb2FkSUQoKS50b1VJbnQ2NCgpKTsKICAgICAgICAgbV9oYXNSZWNlaXZlZERhdGEgPSB0cnVl
OwogICAgIH0KICAgICAKQEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lkIERvd25sb2FkOjpkaWRSZWNl
aXZlRGF0YSh1aW50NjRfdCBieXRlc1dyaXR0ZW4sIHVpbnQ2NF90IHRvdGFsQnl0ZXNXcml0dGVu
LAogCiB2b2lkIERvd25sb2FkOjpkaWRGaW5pc2goKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoImRpZEZpbmlzaDogKGlkID0gJSIgUFJJdTY0ICIpIiwgZG93bmxvYWRJRCgpLnRvVUlu
dDY0KCkpOworICAgIERPV05MT0FEX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZEZpbmlzaDog
KGlkID0gJSIgUFJJdTY0ICIpIiwgZG93bmxvYWRJRCgpLnRvVUludDY0KCkpOwogCiAgICAgc2Vu
ZChNZXNzYWdlczo6RG93bmxvYWRQcm94eTo6RGlkRmluaXNoKCkpOwogCkBAIC0xNTgsNyArMTU4
LDcgQEAgdm9pZCBEb3dubG9hZDo6ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwg
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXMKICAgICBpZiAobV9pZ25vcmVEaWRGYWlsQ2Fs
bGJhY2sgPT0gSWdub3JlRGlkRmFpbENhbGxiYWNrOjpZZXMpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZEZhaWw6IChpZCA9ICUiIFBSSXU2NCAiLCBp
c1RpbWVvdXQgPSAlZCwgaXNDYW5jZWxsYXRpb24gPSAlZCwgZXJyQ29kZSA9ICVkKSIsCisgICAg
RE9XTkxPQURfUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkRmFpbDogKGlkID0gJSIgUFJJdTY0
ICIsIGlzVGltZW91dCA9ICVkLCBpc0NhbmNlbGxhdGlvbiA9ICVkLCBlcnJDb2RlID0gJWQpIiwK
ICAgICAgICAgZG93bmxvYWRJRCgpLnRvVUludDY0KCksIGVycm9yLmlzVGltZW91dCgpLCBlcnJv
ci5pc0NhbmNlbGxhdGlvbigpLCBlcnJvci5lcnJvckNvZGUoKSk7CiAKICAgICBzZW5kKE1lc3Nh
Z2VzOjpEb3dubG9hZFByb3h5OjpEaWRGYWlsKGVycm9yLCByZXN1bWVEYXRhKSk7CkBAIC0yMDIs
NCArMjAyLDQgQEAgdm9pZCBEb3dubG9hZDo6cGxhdGZvcm1EZXN0cm95RG93bmxvYWQoKQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotI3VuZGVmIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQKKyN1
bmRlZiBET1dOTE9BRF9SRUxFQVNFX0xPR19JRl9BTExPV0VECmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwCmluZGV4IDZmYzNiMmQ4OTVhNy4uODRjOTEzYWQxYzBhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcApAQCAtMzIsNiArMzIsOCBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNp
bmNsdWRlICJOZXR3b3JrQ2FjaGUuaCIKICNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzc01lc3NhZ2VzLmgiCisjaW5jbHVkZSAiTmV0d29ya0xvYWQuaCIKKyNpbmNsdWRlICJO
ZXR3b3JrTG9hZFNjaGVkdWxlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtNRE5TUmVnaXN0ZXJNZXNz
YWdlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMuaCIKQEAgLTg1MywxNyArODU1LDIyIEBAIHZvaWQgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0
cmljc0VuYWJsZWQoYm9vCiAgICAgICAgIGxvYWRlci0+ZGlzYWJsZUV4dHJhTmV0d29ya0xvYWRN
ZXRyaWNzQ2FwdHVyZSgpOwogfQogCi0jaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElD
UykKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbW92ZVN0b3JhZ2VBY2Nl
c3NGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlE
KQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2xlYXJQYWdlU3BlY2lmaWNE
YXRhKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5l
dHdvcmtTZXNzaW9uKCkpCisgICAgICAgIHNlc3Npb24tPm5ldHdvcmtMb2FkU2NoZWR1bGVyKCku
Y2xlYXJQYWdlRGF0YShwYWdlSUQpOworCisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElT
VElDUykKICAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBuZXR3b3JrUHJvY2VzcygpLnN0
b3JhZ2VTZXNzaW9uKG1fc2Vzc2lvbklEKSkKLSAgICAgICAgc3RvcmFnZVNlc3Npb24tPnJlbW92
ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShmcmFtZUlELCBwYWdlSUQpOworICAgICAgICBzdG9yYWdl
U2Vzc2lvbi0+Y2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhw
YWdlSUQpOworI2VuZGlmCiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OmNsZWFyUGFnZVNwZWNpZmljRGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoUGFnZUlkZW50
aWZpZXIgcGFnZUlEKQorI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCit2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJh
bWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAg
ICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBuZXR3b3JrUHJvY2VzcygpLnN0b3JhZ2VTZXNz
aW9uKG1fc2Vzc2lvbklEKSkKLSAgICAgICAgc3RvcmFnZVNlc3Npb24tPmNsZWFyUGFnZVNwZWNp
ZmljRGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MocGFnZUlEKTsKKyAgICAgICAgc3RvcmFn
ZVNlc3Npb24tPnJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShmcmFtZUlELCBwYWdlSUQpOwog
fQogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpsb2dVc2VySW50ZXJhY3Rp
b24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbikKQEAgLTExNzAsNiArMTE3NywzMyBA
QCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRDT1JTRGlzYWJsaW5nUGF0
dGVybnMoV2ViQ29yZTo6UGFnZUlkZW50aQogICAgIG5ldHdvcmtQcm9jZXNzKCkuc2V0Q09SU0Rp
c2FibGluZ1BhdHRlcm5zKHBhZ2VJZGVudGlmaWVyLCBXVEZNb3ZlKHBhdHRlcm5zKSk7CiB9CiAK
K3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldFJlc291cmNlTG9hZFNjaGVk
dWxpbmdNb2RlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJZGVudGlmaWVyLCBXZWJDb3Jl
OjpMb2FkU2NoZWR1bGluZ01vZGUgbW9kZSkKK3sKKyAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29y
a1Nlc3Npb24oKTsKKyAgICBpZiAoIXNlc3Npb24pCisgICAgICAgIHJldHVybjsKKworICAgIHNl
c3Npb24tPm5ldHdvcmtMb2FkU2NoZWR1bGVyKCkuc2V0UmVzb3VyY2VMb2FkU2NoZWR1bGluZ01v
ZGUocGFnZUlkZW50aWZpZXIsIG1vZGUpOworfQorCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpwcmlvcml0aXplUmVzb3VyY2VMb2FkcyhWZWN0b3I8UmVzb3VyY2VMb2FkSWRl
bnRpZmllcj4gbG9hZElkZW50aWZpZXJzKQoreworICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3Jr
U2Vzc2lvbigpOworICAgIGlmICghc2Vzc2lvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgVmVj
dG9yPE5ldHdvcmtMb2FkKj4gbG9hZHM7CisgICAgZm9yIChhdXRvIGlkZW50aWZpZXIgOiBsb2Fk
SWRlbnRpZmllcnMpIHsKKyAgICAgICAgYXV0byogbG9hZGVyID0gbV9uZXR3b3JrUmVzb3VyY2VM
b2FkZXJzLmdldChpZGVudGlmaWVyKTsKKyAgICAgICAgaWYgKCFsb2FkZXIgfHwgIWxvYWRlci0+
bmV0d29ya0xvYWQoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBsb2Fkcy5hcHBl
bmQobG9hZGVyLT5uZXR3b3JrTG9hZCgpKTsKKyAgICB9CisKKyAgICBzZXNzaW9uLT5uZXR3b3Jr
TG9hZFNjaGVkdWxlcigpLnByaW9yaXRpemVMb2Fkcyhsb2Fkcyk7Cit9CisKKwogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CiAKICN1bmRlZiBORVRXT1JLX1BST0NFU1NfTUVTU0FHRV9DSEVDS19DT01Q
TEVUSU9OCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggZDg2Mzc3ZGExYTRkLi41YTRiMmI4
OTM3ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTQwLDYgKzQwLDggQEAKICNpbmNs
dWRlICJXZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0NvbnNvbGVUeXBlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVJZGVudGlmaWVyLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9MYXlvdXRNaWxlc3RvbmUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0xv
YWRTY2hlZHVsaW5nTW9kZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVzc2FnZVBvcnRDaGFubmVs
UHJvdmlkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01lc3NhZ2VQb3J0SWRlbnRpZmllci5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya0xvYWRJbmZvcm1hdGlvbi5oPgpAQCAtNDgsNiArNTAs
NyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUHJvY2Vzc0lkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XZWJTb2NrZXRJ
ZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBQQUwgewpAQCAtMjY2LDkgKzI2OSwxMCBAQCBwcml2
YXRlOgogCiAgICAgQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbiYgY2FjaGVTdG9yYWdlQ29u
bmVjdGlvbigpOwogCisgICAgdm9pZCBjbGVhclBhZ2VTcGVjaWZpY0RhdGEoV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIpOworCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAg
ICB2b2lkIHJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKLSAgICB2b2lkIGNsZWFyUGFnZVNwZWNpZmlj
RGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwog
CiAgICAgdm9pZCBsb2dVc2VySW50ZXJhY3Rpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mKTsK
ICAgICB2b2lkIHJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3RvcjxXZWJDb3JlOjpS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpA
QCAtMzI1LDYgKzMyOSw5IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGhhc1VwbG9hZFN0YXRlQ2hh
bmdlZChib29sKTsKIAorICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkU2NoZWR1bGluZ01vZGUoV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OkxvYWRTY2hlZHVsaW5nTW9kZSk7CisgICAg
dm9pZCBwcmlvcml0aXplUmVzb3VyY2VMb2FkcyhWZWN0b3I8UmVzb3VyY2VMb2FkSWRlbnRpZmll
cj4pOworCiAjaWYgRU5BQkxFKEFQUExFX1BBWV9SRU1PVEVfVUkpCiAgICAgV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHkmIHBheW1lbnRDb29yZGluYXRvcigpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCAxYmJmYTkwY2Y0NDMuLmZmOGQ0YTE3OWYx
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC02Miw5
ICs2MiwxMCBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdh
Y3lSZWNlaXZlciB7CiAgICAgQ3JlYXRlU29ja2V0U3RyZWFtKFVSTCB1cmwsIFN0cmluZyBjYWNo
ZVBhcnRpdGlvbiwgV2ViQ29yZTo6V2ViU29ja2V0SWRlbnRpZmllciBpZGVudGlmaWVyKQogICAg
IENyZWF0ZVNvY2tldENoYW5uZWwoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFN0
cmluZyBwcm90b2NvbCwgV2ViQ29yZTo6V2ViU29ja2V0SWRlbnRpZmllciBpZGVudGlmaWVyKQog
CisgICAgQ2xlYXJQYWdlU3BlY2lmaWNEYXRhKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCk7CisKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIFJlbW92ZVN0
b3JhZ2VBY2Nlc3NGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKTsKLSAgICBDbGVhclBhZ2VTcGVjaWZpY0RhdGFG
b3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCk7
CiAgICAgTG9nVXNlckludGVyYWN0aW9uKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFp
bikKICAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChWZWN0b3I8V2ViQ29yZTo6UmVz
b3VyY2VMb2FkU3RhdGlzdGljcz4gc3RhdGlzdGljcykgLT4gKCkgQXN5bmMKICAgICBIYXNTdG9y
YWdlQWNjZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkZyYW1lRG9tYWluLCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbiwgV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkgLT4gKGJvb2wg
aGFzU3RvcmFnZUFjY2VzcykgQXN5bmMKQEAgLTEwMSw0ICsxMDIsNiBAQCBtZXNzYWdlcyAtPiBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAjaWYgUExBVEZP
Uk0oTUFDKQogICAgIFVwZGF0ZUFjdGl2ZVBhZ2VzKFN0cmluZyBuYW1lLCBWZWN0b3I8U3RyaW5n
PiBhY3RpdmVQYWdlc09yaWdpbnMsIGF1ZGl0X3Rva2VuX3QgYXVkaXRUb2tlbikKICNlbmRpZgor
ICAgIFNldFJlc291cmNlTG9hZFNjaGVkdWxpbmdNb2RlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
IHdlYlBhZ2VJRCwgZW51bTp1aW50OF90IFdlYkNvcmU6OkxvYWRTY2hlZHVsaW5nTW9kZSBtb2Rl
KQorICAgIFByaW9yaXRpemVSZXNvdXJjZUxvYWRzKFZlY3Rvcjx1aW50NjRfdD4gbG9hZElkZW50
aWZpZXJzKQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrTG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNw
cAppbmRleCAyZTZjZWY5NTA1ZGIuLmI4NGYwODRlY2ExMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRl
ICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLmgiCiAjaW5jbHVkZSAiQXV0aGVu
dGljYXRpb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiTmV0d29ya0RhdGFUYXNrQmxvYi5oIgorI2lu
Y2x1ZGUgIk5ldHdvcmtMb2FkU2NoZWR1bGVyLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3Mu
aCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJO
ZXR3b3JrU2Vzc2lvbi5oIgpAQCAtMzYsNiArMzcsOCBAQAogI2luY2x1ZGUgIldlYkVycm9ycy5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9TaGFyZWRCdWZmZXIuaD4KKyNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KKyNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKQEAgLTYwLDkgKzYzLDE5IEBAIHZvaWQgTmV0d29ya0xvYWQ6OnN0YXJ0
KCkKICAgICAgICAgbV90YXNrLT5yZXN1bWUoKTsKIH0KIAordm9pZCBOZXR3b3JrTG9hZDo6c3Rh
cnRXaXRoU2NoZWR1bGluZygpCit7CisgICAgaWYgKCFtX3Rhc2sgfHwgIW1fdGFzay0+bmV0d29y
a1Nlc3Npb24oKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fc2NoZWR1bGVyID0gbWFrZVdlYWtQ
dHIobV90YXNrLT5uZXR3b3JrU2Vzc2lvbigpLT5uZXR3b3JrTG9hZFNjaGVkdWxlcigpKTsKKyAg
ICBtX3NjaGVkdWxlci0+c2NoZWR1bGUoKnRoaXMpOworfQorCiBOZXR3b3JrTG9hZDo6fk5ldHdv
cmtMb2FkKCkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIGlmIChtX3Nj
aGVkdWxlcikKKyAgICAgICAgbV9zY2hlZHVsZXItPnVuc2NoZWR1bGUoKnRoaXMpOwogICAgIGlm
IChtX3JlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIpCiAgICAgICAgIG1fcmVkaXJlY3RDb21wbGV0
aW9uSGFuZGxlcih7IH0pOwogICAgIGlmIChtX3Rhc2spCkBAIC0yMjUsNiArMjM4LDExIEBAIHZv
aWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
KQogCiB2b2lkIE5ldHdvcmtMb2FkOjpkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBSZXNvdXJj
ZUVycm9yJiBlcnJvciwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3Jr
TG9hZE1ldHJpY3MpCiB7CisgICAgaWYgKG1fc2NoZWR1bGVyKSB7CisgICAgICAgIG1fc2NoZWR1
bGVyLT51bnNjaGVkdWxlKCp0aGlzKTsKKyAgICAgICAgbV9zY2hlZHVsZXIgPSBudWxscHRyOwor
ICAgIH0KKwogICAgIGlmIChlcnJvci5pc051bGwoKSkKICAgICAgICAgbV9jbGllbnQuZ2V0KCku
ZGlkRmluaXNoTG9hZGluZyhuZXR3b3JrTG9hZE1ldHJpY3MpOwogICAgIGVsc2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAppbmRleCA1OWUxN2U1YjlhNTYuLjY5
NTU5OTc4MWJkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrTG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQu
aApAQCAtMzksNiArMzksNyBAQCBjbGFzcyBCbG9iUmVnaXN0cnlJbXBsOwogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAorY2xhc3MgTmV0d29ya0xvYWRTY2hlZHVsZXI7CiBjbGFzcyBOZXR3b3JrUHJv
Y2VzczsKIAogY2xhc3MgTmV0d29ya0xvYWQgZmluYWwgOiBwcml2YXRlIE5ldHdvcmtEYXRhVGFz
a0NsaWVudCB7CkBAIC00OCw2ICs0OSw3IEBAIHB1YmxpYzoKICAgICB+TmV0d29ya0xvYWQoKTsK
IAogICAgIHZvaWQgc3RhcnQoKTsKKyAgICB2b2lkIHN0YXJ0V2l0aFNjaGVkdWxpbmcoKTsKICAg
ICB2b2lkIGNhbmNlbCgpOwogCiAgICAgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50
aWFscygpIGNvbnN0OwpAQCAtNTYsNiArNTgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVS
ZXF1ZXN0QWZ0ZXJSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBjb25zdDsK
IAogICAgIGNvbnN0IE5ldHdvcmtMb2FkUGFyYW1ldGVycyYgcGFyYW1ldGVycygpIGNvbnN0IHsg
cmV0dXJuIG1fcGFyYW1ldGVyczsgfQorICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1
cm4gcGFyYW1ldGVycygpLnJlcXVlc3QudXJsKCk7IH0KIAogICAgIHZvaWQgY29udGludWVXaWxs
U2VuZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOwogCkBAIC05MCw2ICs5Myw3
IEBAIHByaXZhdGU6CiAgICAgY29uc3QgTmV0d29ya0xvYWRQYXJhbWV0ZXJzIG1fcGFyYW1ldGVy
czsKICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
KT4gbV9yZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyOwogICAgIFJlZlB0cjxOZXR3b3JrRGF0YVRh
c2s+IG1fdGFzazsKKyAgICBXZWFrUHRyPE5ldHdvcmtMb2FkU2NoZWR1bGVyPiBtX3NjaGVkdWxl
cjsKIAogICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBtX2N1cnJlbnRSZXF1ZXN0OyAvLyBV
cGRhdGVkIG9uIHJlZGlyZWN0cy4KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtMb2FkU2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0xvYWRTY2hlZHVsZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMC4uNzcwNDIzOWY0MjM1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZFNjaGVkdWxlci5jcHAKQEAgLTAsMCAr
MSwxNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTmV0
d29ya0xvYWRTY2hlZHVsZXIuaCIKKworI2luY2x1ZGUgIk5ldHdvcmtMb2FkLmgiCisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitzdGF0aWMgY29uc3RleHByIHNpemVfdCBtYXhpbXVtQWN0aXZlQ291
bnRGb3JMb3dQcmlvcml0eSA9IDY7CisKK2NsYXNzIE5ldHdvcmtMb2FkU2NoZWR1bGVyOjpIb3N0
Q29udGV4dCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgSG9z
dENvbnRleHQoKSA9IGRlZmF1bHQ7CisgICAgfkhvc3RDb250ZXh0KCk7CisKKyAgICB2b2lkIHNj
aGVkdWxlKE5ldHdvcmtMb2FkJik7CisgICAgdm9pZCB1bnNjaGVkdWxlKE5ldHdvcmtMb2FkJik7
CisgICAgdm9pZCBwcmlvcml0aXplKE5ldHdvcmtMb2FkJik7CisKKyAgICB2b2lkIGZpbmlzaFBh
Z2UoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOworCitwcml2YXRlOgorICAgIHZvaWQgc3RhcnQo
TmV0d29ya0xvYWQmKTsKKworICAgIEhhc2hTZXQ8TmV0d29ya0xvYWQqPiBtX2FjdGl2ZUxvYWRz
OworICAgIExpc3RIYXNoU2V0PE5ldHdvcmtMb2FkKj4gbV9wZW5kaW5nTG9hZHM7Cit9OworCit2
b2lkIE5ldHdvcmtMb2FkU2NoZWR1bGVyOjpIb3N0Q29udGV4dDo6c2NoZWR1bGUoTmV0d29ya0xv
YWQmIGxvYWQpCit7CisgICAgYXV0byBzdGFydEltbWVkaWF0ZWx5ID0gWyZdIHsKKyAgICAgICAg
YXV0byBwcmlvcml0eSA9IGxvYWQucGFyYW1ldGVycygpLnJlcXVlc3QucHJpb3JpdHkoKTsKKyAg
ICAgICAgaWYgKHByaW9yaXR5ID4gUmVzb3VyY2VMb2FkUHJpb3JpdHk6OkxvdykKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworCisgICAgICAgIGlmIChtX2FjdGl2ZUxvYWRzLnNpemUoKSA8IG1h
eGltdW1BY3RpdmVDb3VudEZvckxvd1ByaW9yaXR5KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0oKTsKKworICAgIGlmIChzdGFydEltbWVk
aWF0ZWx5KSB7CisgICAgICAgIHN0YXJ0KGxvYWQpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgbV9wZW5kaW5nTG9hZHMuYWRkKCZsb2FkKTsKK30KKwordm9pZCBOZXR3b3JrTG9hZFNj
aGVkdWxlcjo6SG9zdENvbnRleHQ6OnVuc2NoZWR1bGUoTmV0d29ya0xvYWQmIGxvYWQpCit7Cisg
ICAgbV9hY3RpdmVMb2Fkcy5yZW1vdmUoJmxvYWQpOworICAgIG1fcGVuZGluZ0xvYWRzLnJlbW92
ZSgmbG9hZCk7CisKKyAgICBpZiAobV9wZW5kaW5nTG9hZHMuaXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm47CisgICAgaWYgKG1fYWN0aXZlTG9hZHMuc2l6ZSgpID49IG1heGltdW1BY3RpdmVDb3Vu
dEZvckxvd1ByaW9yaXR5KQorICAgICAgICByZXR1cm47CisKKyAgICBzdGFydCgqbV9wZW5kaW5n
TG9hZHMudGFrZUZpcnN0KCkpOworfQorCit2b2lkIE5ldHdvcmtMb2FkU2NoZWR1bGVyOjpIb3N0
Q29udGV4dDo6cHJpb3JpdGl6ZShOZXR3b3JrTG9hZCYgbG9hZCkKK3sKKyAgICBpZiAoIW1fcGVu
ZGluZ0xvYWRzLnJlbW92ZSgmbG9hZCkpCisgICAgICAgIHJldHVybjsKKworICAgIHN0YXJ0KGxv
YWQpOworfQorCit2b2lkIE5ldHdvcmtMb2FkU2NoZWR1bGVyOjpIb3N0Q29udGV4dDo6c3RhcnQo
TmV0d29ya0xvYWQmIGxvYWQpCit7CisgICAgbV9hY3RpdmVMb2Fkcy5hZGQoJmxvYWQpOworCisg
ICAgbG9hZC5zdGFydCgpOworfQorCitOZXR3b3JrTG9hZFNjaGVkdWxlcjo6SG9zdENvbnRleHQ6
On5Ib3N0Q29udGV4dCgpCit7CisgICAgZm9yIChhdXRvKiBsb2FkIDogbV9wZW5kaW5nTG9hZHMp
CisgICAgICAgIHN0YXJ0KCpsb2FkKTsKK30KKworTmV0d29ya0xvYWRTY2hlZHVsZXI6Ok5ldHdv
cmtMb2FkU2NoZWR1bGVyKCkgPSBkZWZhdWx0OworTmV0d29ya0xvYWRTY2hlZHVsZXI6On5OZXR3
b3JrTG9hZFNjaGVkdWxlcigpID0gZGVmYXVsdDsKKwordm9pZCBOZXR3b3JrTG9hZFNjaGVkdWxl
cjo6c2NoZWR1bGUoTmV0d29ya0xvYWQmIGxvYWQpCit7CisgICAgYXV0byogY29udGV4dCA9IGNv
bnRleHRGb3JMb2FkKGxvYWQpOworCisgICAgaWYgKCFjb250ZXh0KSB7CisgICAgICAgIGxvYWQu
c3RhcnQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNvbnRleHQtPnNjaGVkdWxl
KGxvYWQpOworfQorCit2b2lkIE5ldHdvcmtMb2FkU2NoZWR1bGVyOjp1bnNjaGVkdWxlKE5ldHdv
cmtMb2FkJiBsb2FkKQoreworICAgIGF1dG8qIGNvbnRleHQgPSBjb250ZXh0Rm9yTG9hZChsb2Fk
KTsKKworICAgIGlmICghY29udGV4dCkgeworICAgICAgICBsb2FkLnN0YXJ0KCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBjb250ZXh0LT51bnNjaGVkdWxlKGxvYWQpOworfQorCit2
b2lkIE5ldHdvcmtMb2FkU2NoZWR1bGVyOjpzZXRSZXNvdXJjZUxvYWRTY2hlZHVsaW5nTW9kZShX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6TG9hZFNjaGVk
dWxpbmdNb2RlIG1vZGUpCit7CisgICAgc3dpdGNoIChtb2RlKSB7CisgICAgY2FzZSBXZWJDb3Jl
OjpMb2FkU2NoZWR1bGluZ01vZGU6OlByaW9yaXRpemVkOgorICAgICAgICBtX3BhZ2VDb250ZXh0
cy5lbnN1cmUocGFnZUlkZW50aWZpZXIsIFsmXSB7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxQYWdlQ29udGV4dD4oKTsKKyAgICAgICAgfSk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgV2ViQ29yZTo6TG9hZFNjaGVkdWxpbmdNb2RlOjpEaXJlY3Q6CisgICAgICAgIG1fcGFnZUNv
bnRleHRzLnJlbW92ZShwYWdlSWRlbnRpZmllcik7CisgICAgICAgIGJyZWFrOworICAgIH0KK30K
Kwordm9pZCBOZXR3b3JrTG9hZFNjaGVkdWxlcjo6cHJpb3JpdGl6ZUxvYWRzKGNvbnN0IFZlY3Rv
cjxOZXR3b3JrTG9hZCo+JiBsb2FkcykKK3sKKyAgICBmb3IgKGF1dG8qIGxvYWQgOiBsb2Fkcykg
eworICAgICAgICBpZiAoYXV0byogY29udGV4dCA9IGNvbnRleHRGb3JMb2FkKCpsb2FkKSkKKyAg
ICAgICAgICAgIGNvbnRleHQtPnByaW9yaXRpemUoKmxvYWQpOworICAgIH0KK30KKwordm9pZCBO
ZXR3b3JrTG9hZFNjaGVkdWxlcjo6Y2xlYXJQYWdlRGF0YShXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciBwYWdlSWRlbnRpZmllcikKK3sKKyAgICBtX3BhZ2VDb250ZXh0cy5yZW1vdmUocGFnZUlkZW50
aWZpZXIpOworfQorCithdXRvIE5ldHdvcmtMb2FkU2NoZWR1bGVyOjpjb250ZXh0Rm9yTG9hZChj
b25zdCBOZXR3b3JrTG9hZCYgbG9hZCkgLT4gSG9zdENvbnRleHQqCit7CisgICAgaWYgKCFsb2Fk
LnVybCgpLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICBhdXRvKiBwYWdlQ29udGV4dCA9IG1fcGFnZUNvbnRleHRzLmdldChsb2FkLnBhcmFt
ZXRlcnMoKS53ZWJQYWdlSUQpOworICAgIGlmICghcGFnZUNvbnRleHQpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgYXV0byBob3N0ID0gbG9hZC51cmwoKS5ob3N0KCkudG9TdHJpbmco
KTsKKyAgICByZXR1cm4gcGFnZUNvbnRleHQtPmVuc3VyZShob3N0LCBbJl0geworICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxIb3N0Q29udGV4dD4oKTsKKyAgICB9KS5pdGVyYXRvci0+dmFsdWUu
Z2V0KCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0xvYWRTY2hlZHVsZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0xvYWRTY2hlZHVsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAuLjI5OWM4MWFjMzI4OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0xvYWRTY2hlZHVsZXIuaApAQCAtMCwwICsxLDU4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxXZWJDb3JlL0xvYWRTY2hlZHVsaW5nTW9k
ZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitjbGFzcyBOZXR3b3JrTG9hZDsKKworY2xhc3MgTmV0d29ya0xvYWRTY2hlZHVsZXIgOiBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8TmV0d29ya0xvYWRTY2hlZHVsZXI+IHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBOZXR3b3JrTG9hZFNjaGVkdWxlcigpOwor
ICAgIH5OZXR3b3JrTG9hZFNjaGVkdWxlcigpOworCisgICAgdm9pZCBzY2hlZHVsZShOZXR3b3Jr
TG9hZCYpOworICAgIHZvaWQgdW5zY2hlZHVsZShOZXR3b3JrTG9hZCYpOworCisgICAgdm9pZCBz
ZXRSZXNvdXJjZUxvYWRTY2hlZHVsaW5nTW9kZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2Vi
Q29yZTo6TG9hZFNjaGVkdWxpbmdNb2RlKTsKKyAgICB2b2lkIHByaW9yaXRpemVMb2Fkcyhjb25z
dCBWZWN0b3I8TmV0d29ya0xvYWQqPiYpOworICAgIHZvaWQgY2xlYXJQYWdlRGF0YShXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllcik7CisKK3ByaXZhdGU6CisgICAgY2xhc3MgSG9zdENvbnRleHQ7Cisg
ICAgSG9zdENvbnRleHQqIGNvbnRleHRGb3JMb2FkKGNvbnN0IE5ldHdvcmtMb2FkJik7CisKKyAg
ICB1c2luZyBQYWdlQ29udGV4dCA9IEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8SG9z
dENvbnRleHQ+PjsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBzdGQ6OnVu
aXF1ZV9wdHI8UGFnZUNvbnRleHQ+PiBtX3BhZ2VDb250ZXh0czsKK307CisKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cAppbmRleCAyOTA1ZDUxZTE3YTEuLmNmNzkzYTY5NWUxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAtMzM2
LDcgKzMzNiw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtMb2Fk
KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZpcnN0TG9hCiAgICAgcGFyYW1ldGVycy5yZXF1
ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KTsKICAgICBwYXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4gPSBtX3BhcmFtZXRlcnMuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsK
ICAgICBtX25ldHdvcmtMb2FkID0gbWFrZVVuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsICZuZXR3
b3JrU2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCksIFdURk1vdmUocGFyYW1ldGVycyksICpuZXR3b3Jr
U2Vzc2lvbik7Ci0gICAgbV9uZXR3b3JrTG9hZC0+c3RhcnQoKTsKKyAgICBtX25ldHdvcmtMb2Fk
LT5zdGFydFdpdGhTY2hlZHVsaW5nKCk7CiAKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJz
dGFydE5ldHdvcmtMb2FkOiBHb2luZyB0byB0aGUgbmV0d29yayAoZGVzY3JpcHRpb249JSIgUFVC
TElDX0xPR19TVFJJTkcgIikiLCBtX25ldHdvcmtMb2FkLT5kZXNjcmlwdGlvbigpLnV0ZjgoKS5k
YXRhKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNz
aW9uLmNwcAppbmRleCA3NTljMWMyMzcyYWUuLjY2NzVmNjAwNDZlNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKQEAgLTI3LDYgKzI3LDcg
QEAKICNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbi5oIgogCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgor
I2luY2x1ZGUgIk5ldHdvcmtMb2FkU2NoZWR1bGVyLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nl
c3MuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oIgpAQCAtMzgyLDQgKzM4MywxMSBAQCB2
b2lkIE5ldHdvcmtTZXNzaW9uOjp1bnJlZ2lzdGVyTmV0d29ya0RhdGFUYXNrKE5ldHdvcmtEYXRh
VGFzayYgdGFzaykKICAgICBtX2RhdGFUYXNrU2V0LnJlbW92ZSh0YXNrKTsKIH0KIAorTmV0d29y
a0xvYWRTY2hlZHVsZXImIE5ldHdvcmtTZXNzaW9uOjpuZXR3b3JrTG9hZFNjaGVkdWxlcigpCit7
CisgICAgaWYgKCFtX25ldHdvcmtMb2FkU2NoZWR1bGVyKQorICAgICAgICBtX25ldHdvcmtMb2Fk
U2NoZWR1bGVyID0gbWFrZVVuaXF1ZTxOZXR3b3JrTG9hZFNjaGVkdWxlcj4oKTsKKyAgICByZXR1
cm4gKm1fbmV0d29ya0xvYWRTY2hlZHVsZXI7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCmluZGV4IGFj
ODk4NjU4OGUyZC4uMWE4ZjU4Y2YyYjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCkBAIC01Myw2ICs1Myw3IEBAIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiBjbGFzcyBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI7CiBjbGFzcyBOZXR3b3Jr
RGF0YVRhc2s7CitjbGFzcyBOZXR3b3JrTG9hZFNjaGVkdWxlcjsKIGNsYXNzIE5ldHdvcmtQcm9j
ZXNzOwogY2xhc3MgTmV0d29ya1Jlc291cmNlTG9hZGVyOwogY2xhc3MgTmV0d29ya1NvY2tldENo
YW5uZWw7CkBAIC0xNTAsNiArMTUxLDggQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlU29mdFVw
ZGF0ZUxvYWRlcihTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlciogbG9hZGVyKSB7IG1fc29m
dFVwZGF0ZUxvYWRlcnMucmVtb3ZlKGxvYWRlcik7IH0KICNlbmRpZgogCisgICAgTmV0d29ya0xv
YWRTY2hlZHVsZXImIG5ldHdvcmtMb2FkU2NoZWR1bGVyKCk7CisKIHByb3RlY3RlZDoKICAgICBO
ZXR3b3JrU2Vzc2lvbihOZXR3b3JrUHJvY2VzcyYsIGNvbnN0IE5ldHdvcmtTZXNzaW9uQ3JlYXRp
b25QYXJhbWV0ZXJzJik7CiAKQEAgLTE4Niw2ICsxODksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9v
bCBtX2lzSW52YWxpZGF0ZWQgeyBmYWxzZSB9OwogI2VuZGlmCiAgICAgUmVmUHRyPE5ldHdvcmtD
YWNoZTo6Q2FjaGU+IG1fY2FjaGU7CisgICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtMb2FkU2No
ZWR1bGVyPiBtX25ldHdvcmtMb2FkU2NoZWR1bGVyOwogICAgIFdlYkNvcmU6OkJsb2JSZWdpc3Ry
eUltcGwgbV9ibG9iUmVnaXN0cnk7CiAgICAgdW5zaWduZWQgbV90ZXN0U3BlZWRNdWx0aXBsaWVy
IHsgMSB9OwogICAgIGJvb2wgbV9hbGxvd3NTZXJ2ZXJQcmVjb25uZWN0IHsgdHJ1ZSB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVT
cGVjdWxhdGl2ZUxvYWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCmluZGV4IDRjMTA3MzUwZmE0My4uNGI5OGQ1
YzE0YzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCkBAIC02OSw3ICs2
OSw3IEBAIFNwZWN1bGF0aXZlTG9hZDo6U3BlY3VsYXRpdmVMb2FkKENhY2hlJiBjYWNoZSwgY29u
c3QgR2xvYmFsRnJhbWVJRCYgZ2xvYmFsRnJhbWVJCiAgICAgcGFyYW1ldGVycy5yZXF1ZXN0ID0g
bV9vcmlnaW5hbFJlcXVlc3Q7CiAgICAgcGFyYW1ldGVycy5pc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluID0gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsKICAgICBtX25ldHdvcmtMb2Fk
ID0gbWFrZVVuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsIG51bGxwdHIsIFdURk1vdmUocGFyYW1l
dGVycyksICpuZXR3b3JrU2Vzc2lvbik7Ci0gICAgbV9uZXR3b3JrTG9hZC0+c3RhcnQoKTsKKyAg
ICBtX25ldHdvcmtMb2FkLT5zdGFydFdpdGhTY2hlZHVsaW5nKCk7CiB9CiAKIFNwZWN1bGF0aXZl
TG9hZDo6flNwZWN1bGF0aXZlTG9hZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCA3N2FjMTZkZjg5MWYuLjdm
NDA4YmM0NjEwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9T
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC02NSw2ICs2NSw3IEBAIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrSFRUUFNVcGdy
YWRlQ2hlY2tlci5jcHAKIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAogTmV0d29ya1By
b2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcAorTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRT
Y2hlZHVsZXIuY3BwCiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3NQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmYTAzZGM4NTE0MDAuLjg0
MjM3ZGM0YjY1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0xOTQ1LDYgKzE5NDUsNyBAQAogCQlFNDQzNkVDQzFBMEQwNDBCMDBFQUQy
MDQgLyogTmV0d29ya0NhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFNDQzNkVCRjFBMENGREIyMDBFQUQyMDQgLyogTmV0d29ya0NhY2hlLmggKi87
IH07CiAJCUU0NDM2RUNFMUEwRDA0MEIwMEVBRDIwNCAvKiBOZXR3b3JrQ2FjaGVLZXkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NDM2RUMxMUEwQ0ZE
QjIwMEVBRDIwNCAvKiBOZXR3b3JrQ2FjaGVLZXkuaCAqLzsgfTsKIAkJRTQ0MzZFQ0YxQTBEMDQw
QjAwRUFEMjA0IC8qIE5ldHdvcmtDYWNoZVN0b3JhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NDM2RUMyMUEwQ0ZEQjIwMEVBRDIwNCAvKiBOZXR3
b3JrQ2FjaGVTdG9yYWdlLmggKi87IH07CisJCUU0N0ZDOEEwMjVCODMzMUMwMDU0OTVGQyAvKiBO
ZXR3b3JrTG9hZFNjaGVkdWxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTQ3RkM4OUYyNUI4MzMxQzAwNTQ5NUZDIC8qIE5ldHdvcmtMb2FkU2NoZWR1
bGVyLmggKi87IH07CiAJCUU0ODlEMjhDMUEwQTJEQjgwMDc4QzA2QSAvKiBOZXR3b3JrQ2FjaGVD
b2RlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0
ODlEMjg1MUEwQTJEQjgwMDc4QzA2QSAvKiBOZXR3b3JrQ2FjaGVDb2RlcnMuaCAqLzsgfTsKIAkJ
RTQ5RDQwRDcxQUQzRkIxNzAwNjZCN0I5IC8qIE5ldHdvcmtDYWNoZUJsb2JTdG9yYWdlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDlENDBENjFBRDNG
QjE3MDA2NkI3QjkgLyogTmV0d29ya0NhY2hlQmxvYlN0b3JhZ2UuaCAqLzsgfTsKIAkJRTRENTRE
MDQyMUYxRDcyRDAwN0UzQzM2IC8qIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1v
dGVJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0
MEMxRjkzMjFGMEI5NkUwMDUzMDcxOCAvKiBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2Rl
UmVtb3RlSU9TLmggKi87IH07CkBAIC01NzQ0LDYgKzU3NDUsOCBAQAogCQlFNDQzNkVDMzFBMENG
REIyMDBFQUQyMDQgLyogTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTQ2OTdDQ0MxQjI1RUI4RjAwMUIwQTZDIC8qIE5ldHdvcmtDYWNo
ZUZpbGVTeXN0ZW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0
d29ya0NhY2hlRmlsZVN5c3RlbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0
N0QxRTk2MUIwNjJCNjYwMDI2NzZBOCAvKiBOZXR3b3JrQ2FjaGVEYXRhLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtDYWNoZURhdGEuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlFNDdGQzg5RDI1QjgzMzEzMDA1NDk1RkMgLyogTmV0d29y
a0xvYWRTY2hlZHVsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TmV0d29ya0xvYWRTY2hlZHVsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlF
NDdGQzg5RjI1QjgzMzFDMDA1NDk1RkMgLyogTmV0d29ya0xvYWRTY2hlZHVsZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya0xvYWRTY2hlZHVsZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ4OUQyODQxQTBBMkRCODAwNzhDMDZBIC8qIE5ldHdv
cmtDYWNoZUNvZGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBO
ZXR3b3JrQ2FjaGVDb2RlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDg5
RDI4NTFBMEEyREI4MDA3OEMwNkEgLyogTmV0d29ya0NhY2hlQ29kZXJzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtDYWNoZUNvZGVycy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFNDlENDBENjFBRDNGQjE3MDA2NkI3QjkgLyogTmV0d29ya0NhY2hl
QmxvYlN0b3JhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya0Nh
Y2hlQmxvYlN0b3JhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTgzMjgsNiAr
ODMzMSw4IEBACiAJCQkJNDEwM0ZCQTEyMDYxQkRCNzAwQzJFQUY4IC8qIE5ldHdvcmtMb2FkQ2hl
Y2tlci5oICovLAogCQkJCTgzRDQ1NEQ2MUJFOUQzQzQwMDZDOTNCRCAvKiBOZXR3b3JrTG9hZENs
aWVudC5oICovLAogCQkJCTgzOTE0OTYzMUJFQTgzODUwMEQyRDk1MyAvKiBOZXR3b3JrTG9hZFBh
cmFtZXRlcnMuaCAqLywKKwkJCQlFNDdGQzg5RDI1QjgzMzEzMDA1NDk1RkMgLyogTmV0d29ya0xv
YWRTY2hlZHVsZXIuY3BwICovLAorCQkJCUU0N0ZDODlGMjVCODMzMUMwMDU0OTVGQyAvKiBOZXR3
b3JrTG9hZFNjaGVkdWxlci5oICovLAogCQkJCTUxMENDN0RGMTYxMzhFMjkwMEQwM0VEMyAvKiBO
ZXR3b3JrUHJvY2Vzcy5jcHAgKi8sCiAJCQkJNTEwQ0M3RTAxNjEzOEUyOTAwRDAzRUQzIC8qIE5l
dHdvcmtQcm9jZXNzLmggKi8sCiAJCQkJNTFBOEE2MTcxNjI3RjVCQjAwMEQ5MEU5IC8qIE5ldHdv
cmtQcm9jZXNzLm1lc3NhZ2VzLmluICovLApAQCAtMTIwOTEsNiArMTIwOTYsNyBAQAogCQkJCTkz
QTg4QjMzMUJDNkU5Q0QwMEFCQTVDMiAvKiBXZWJIaXRUZXN0UmVzdWx0RGF0YS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRjQ0REZFQjIxRTlFNzUyRjAwMzhEMTk2IC8qIFdlYkljb25VdGlsaXRpZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTkzMjYxMTYxMjE0MDU0RjQwMDA4MDZFNyAvKiBXZWJJREJD
b25uZWN0aW9uVG9DbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUU0N0ZDOEEwMjVCODMzMUMw
MDU0OTVGQyAvKiBOZXR3b3JrTG9hZFNjaGVkdWxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE0
MTI5OTQxQzY0MjhCQjAwNTlFNzE0IC8qIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTEwNTIzNzQxQzczRDM4QjAwNzk5M0NCIC8qIFdlYklEQkNvbm5lY3Rp
b25Ub1NlcnZlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzNFODM1NTIzQTA3QzA2
MDBERUYyODkgLyogV2ViSURCU2VydmVyLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAppbmRl
eCA2OWRlYTc0OTNlMjYuLjdjNTc2OGE1YjhmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcApAQCAtODUxLDYgKzg1
MSwyMiBAQCBib29sIFdlYkxvYWRlclN0cmF0ZWd5OjpoYXZlUGVyZm9ybWVkU2VjdXJpdHlDaGVj
a3MoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcAogICAgIHJldHVybiBmYWxzZTsKIH0KIAor
dm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c2V0UmVzb3VyY2VMb2FkU2NoZWR1bGluZ01vZGUoV2Vi
Q29yZTo6UGFnZSYgcGFnZSwgV2ViQ29yZTo6TG9hZFNjaGVkdWxpbmdNb2RlIG1vZGUpCit7Cisg
ICAgYXV0byYgY29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKTsKKyAgICBjb25uZWN0aW9uLnNlbmQo
TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTZXRSZXNvdXJjZUxvYWRT
Y2hlZHVsaW5nTW9kZShXZWJQYWdlOjpmcm9tQ29yZVBhZ2UocGFnZSkuaWRlbnRpZmllcigpLCBt
b2RlKSwgMCk7Cit9CisKK3ZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnByaW9yaXRpemVSZXNvdXJj
ZUxvYWRzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcio+JiByZXNvdXJj
ZXMpCit7CisgICAgYXV0byBpZGVudGlmaWVycyA9IHJlc291cmNlcy5tYXAoW10oYXV0byogbG9h
ZGVyKSAtPiBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHsKKyAgICAgICAgcmV0dXJuIGxvYWRlci0+
aWRlbnRpZmllcigpOworICAgIH0pOworCisgICAgYXV0byYgY29ubmVjdGlvbiA9IFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rp
b24oKTsKKyAgICBjb25uZWN0aW9uLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpQcmlvcml0aXplUmVzb3VyY2VMb2FkcyhpZGVudGlmaWVycyksIDApOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI3VuZGVmIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0
cmF0ZWd5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJh
dGVneS5oCmluZGV4IDlkOTg4NDE4M2VjOS4uMDRkZjQ4ZmVkMzZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgKQEAgLTEx
NCw2ICsxMTQsOSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBpc1Jlc291cmNlTG9hZEZpbmlzaGVk
KFdlYkNvcmU6OkNhY2hlZFJlc291cmNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JikgZmluYWw7CiAKKyAgICB2b2lkIHNldFJlc291cmNlTG9hZFNjaGVkdWxpbmdNb2RlKFdlYkNv
cmU6OlBhZ2UmLCBXZWJDb3JlOjpMb2FkU2NoZWR1bGluZ01vZGUpIGZpbmFsOworICAgIHZvaWQg
cHJpb3JpdGl6ZVJlc291cmNlTG9hZHMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlN1YnJlc291cmNl
TG9hZGVyKj4mKSBmaW5hbDsKKwogICAgIFZlY3Rvcjx1aW50NjRfdD4gb25nb2luZ0xvYWRzKCkg
Y29uc3QgZmluYWwKICAgICB7CiAgICAgICAgIHJldHVybiBXVEY6Om1hcChtX3dlYlJlc291cmNl
TG9hZGVycywgW10oYXV0byYmIGtleVZhbHVlKSAtPiB1aW50NjRfdCB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGY4OTBiOGNiNmE0YS4uNzNl
Y2ZmNmQxMjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcApAQCAtMTQwOSw5ICsxNDA5LDcgQEAgdm9pZCBXZWJQYWdlOjpjbG9zZSgpCiAKICAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJjbG9zZToiKTsKIAotI2lmIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5z
dXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDbGVhclBhZ2VTcGVjaWZpY0RhdGFGb3JS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzKG1faWRlbnRpZmllciksIDApOwotI2VuZGlmCisgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29u
bmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpD
bGVhclBhZ2VTcGVjaWZpY0RhdGEobV9pZGVudGlmaWVyKSwgMCk7CiAKICAgICBtX2lzQ2xvc2Vk
ID0gdHJ1ZTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418429</attachid>
            <date>2021-01-26 09:17:35 -0800</date>
            <delta_ts>2021-01-27 03:26:48 -0800</delta_ts>
            <desc>patch</desc>
            <filename>load-scheduler-9.patch</filename>
            <type>text/plain</type>
            <size>50141</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggNDkyOGU1NGU1MTg4Li4zY2EwZDc0NTMzYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIw
MjEtMDEtMjUgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgorCisgICAgICAgIElt
cGxlbWVudCB2aXNpYmlsaXR5IGJhc2VkIHJlc291cmNlIGxvYWQgc2NoZWR1bGluZyBmb3IgbG93
IHByaW9yaXR5IHJlc291cmNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjIwNzI4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBTY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwu
eWFtbDoKKworICAgICAgICBBZGQgYW4gaW50ZXJuYWwgc2V0dGluZywgZGVmYXVsdCB0byBvZmYg
Zm9yIG5vdy4KKwogMjAyMS0wMS0yNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgog
CiAgICAgICAgIFN1cHBvcnQgQWJvcnRTaWduYWwgaW4gYWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMg
dG8gdW5zdWJzY3JpYmUgZnJvbSBldmVudHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvU2NyaXB0
cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwgYi9Tb3VyY2UvV1RGL1Nj
cmlwdHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55YW1sCmluZGV4IGI0YjY0
ZTFhNWI2NS4uOTZhMDZmNjg1ZDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJl
ZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55YW1sCisrKyBiL1NvdXJjZS9XVEYvU2Ny
aXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwKQEAgLTU5OSw2ICs1
OTksMTggQEAgUHJlZml4ZWRXZWJBdWRpb0VuYWJsZWQ6CiAgICAgV2ViQ29yZToKICAgICAgIGRl
ZmF1bHQ6IGZhbHNlCiAKK1Jlc291cmNlTG9hZFNjaGVkdWxpbmdFbmFibGVkOgorICB0eXBlOiBi
b29sCisgIGh1bWFuUmVhZGFibGVOYW1lOiAiUmVzb3VyY2UgTG9hZCBTY2hlZHVsaW5nIgorICBo
dW1hblJlYWRhYmxlRGVzY3JpcHRpb246ICJOZXR3b3JrIHByb2Nlc3Mgc2lkZSBwcmlvcml0eSBh
bmQgdmlzaWJpbGl0eSBiYXNlZCByZXNvdXJjZSBsb2FkIHNjaGVkdWxpbmciCisgIGRlZmF1bHRW
YWx1ZToKKyAgICBXZWJLaXRMZWdhY3k6CisgICAgICBkZWZhdWx0OiBmYWxzZQorICAgIFdlYktp
dDoKKyAgICAgIGRlZmF1bHQ6IGZhbHNlCisgICAgV2ViQ29yZToKKyAgICAgIGRlZmF1bHQ6IGZh
bHNlCisKICMgRklYTUU6IFRoaXMgaXMgbm90IHJlbGV2ZW50IGZvciBXZWJLaXRMZWdhY3ksIHNv
IHNob3VsZCBiZSBleGNsdWRlZCBmcm9tIFdlYktpdExlZ2FjeSBlbnRpcmVseS4KIFJlc3RyaWN0
ZWRIVFRQUmVzcG9uc2VBY2Nlc3M6CiAgIHR5cGU6IGJvb2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzZjEzNmNh
YzQ4OGYuLmE4ZjNkZmRiOWU4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDIxLTAx
LTI1ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1l
bnQgdmlzaWJpbGl0eSBiYXNlZCByZXNvdXJjZSBsb2FkIHNjaGVkdWxpbmcgZm9yIGxvdyBwcmlv
cml0eSByZXNvdXJjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyMDcyOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRyYWNrIGxvYWQgc2NoZWR1bGluZyBtb2RlIGR1cmluZyBvbiBwZXIgcGFnZSBiYXNp
cy4KKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHByaW9yaXRpemluZyByZXNvdXJjZXMgYmFzZWQg
b24gdGhlaXIgdmlzaWJpbGl0eS4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGxvYWRlci9M
b2FkZXJTdHJhdGVneS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2FkZXJTdHJhdGVneTo6c2V0
UmVzb3VyY2VMb2FkU2NoZWR1bGluZ01vZGUpOgorICAgICAgICAoV2ViQ29yZTo6TG9hZGVyU3Ry
YXRlZ3k6OnByaW9yaXRpemVSZXNvdXJjZUxvYWRzKToKKyAgICAgICAgKiBsb2FkZXIvTG9hZGVy
U3RyYXRlZ3kuaDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UGFnZTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6
ZGlkRmluaXNoTG9hZCk6CisKKyAgICAgICAgU2hlZHVsZWQgbW9kZXMgaXMgaXMgZGlzYWJsZWQg
YXQgbGF0ZXN0IHdoZW4gdGhlIGxvYWQgY29tcGxldGVzLgorCisgICAgICAgIChXZWJDb3JlOjpQ
YWdlOjpkb0FmdGVyVXBkYXRlUmVuZGVyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnBy
aW9yaXRpemVWaXNpYmxlUmVzb3VyY2VzKToKKworICAgICAgICBBZnRlciByZW5kZXJpbmcgdXBk
YXRlLCBpZiBpbiBzY2hlZHVsZWQgbW9kZSwgY2hlY2sgdGhlIHZpc2liaWxpdHkgc3RhdHVzIG9m
IGltYWdlcyByZXNvdXJjZXMuCisgICAgICAgIFByaW9yaXRpemUgbG9hZHMgZm9yIHZpc2libGUg
cmVzb3VyY2VzLgorICAgICAgICBNb3ZlIG91dCBvZiB0aGUgc2hjZWR1bGVkIG1vZGUgaWYgdGhl
IGRvY3VtZW50IGlzIGZ1bGx5IHBhcnNlZCBhbmQgYWxsIHZpc2liaWxlIGxvYWRzIGFyZSBjb21w
bGV0ZWQuCisKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldExvYWRTY2hlZHVsaW5nTW9kZSk6
CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpsb2FkU2No
ZWR1bGluZ01vZGUgY29uc3QpOgorCiAyMDIxLTAxLTI2ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBh
cHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSUZDXSBJbmNvcnJlY3QgaW5saW5lIGJveCB3aWR0
aCB3aXRoIGhvcml6b250YWwgYWxpZ25tZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9I
ZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCBlZDA2NmMx
MWNhYzIuLmE1ODA2MDllNmQwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC03NzUsNiArNzc1LDcg
QEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIGxvYWRlci9JbWFn
ZUxvYWRlci5oCiAgICAgbG9hZGVyL0xpbmtMb2FkZXIuaAogICAgIGxvYWRlci9MaW5rTG9hZGVy
Q2xpZW50LmgKKyAgICBsb2FkZXIvTG9hZFNjaGVkdWxpbmdNb2RlLmgKICAgICBsb2FkZXIvTG9h
ZFRpbWluZy5oCiAgICAgbG9hZGVyL0xvYWRlclN0cmF0ZWd5LmgKICAgICBsb2FkZXIvTWVkaWFS
ZXNvdXJjZUxvYWRlci5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggZGJlZDc0NjYzZjFmLi5iYjAxY2ExNzUyMTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTUx
NDYsNiArNTE0Niw3IEBACiAJCUU0N0MzOTMyMUZFNkUxMDUwMEJCQkM2QiAvKiBSZW5kZXJUcmVl
QnVpbGRlckxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEU0N0MzOTI4MUZFNkUwREQwMEJCQkM2QiAvKiBSZW5kZXJUcmVlQnVpbGRlckxpc3QuaCAq
LzsgfTsKIAkJRTQ3QzM5MzMxRkU2RTEwODAwQkJCQzZCIC8qIFJlbmRlclRyZWVCdWlsZGVyTXVs
dGlDb2x1bW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEU0N0MzOTI3MUZFNkUwREMwMEJCQkM2QiAvKiBSZW5kZXJUcmVlQnVpbGRlck11bHRpQ29sdW1u
LmggKi87IH07CiAJCUU0N0UyNzY1MTYwMzZFRDIwMEVFMkFGQiAvKiBFeHRlbnNpb25TdHlsZVNo
ZWV0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ3
RTI3NjQxNjAzNkVEMjAwRUUyQUZCIC8qIEV4dGVuc2lvblN0eWxlU2hlZXRzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTQ3RkM4QTMyNUI4NEQ3
MjAwNTQ5NUZDIC8qIExvYWRTY2hlZHVsaW5nTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ3RkM4QTEyNUI4NEQ3MTAwNTQ5NUZDIC8qIExvYWRT
Y2hlZHVsaW5nTW9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUU0ODEzN0I5MURCM0I1MjYwMDVDNTlCRiAvKiBTdHlsZVZhbGlkaXR5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDgxMzdCODFEQjNC
NTI2MDA1QzU5QkYgLyogU3R5bGVWYWxpZGl0eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0ODYzQ0ZFMjM4NDJFOUUwMDk3MjE1OCAvKiBSdWxl
RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ4
NjNDRkQyMzg0MkU5RTAwOTcyMTU4IC8qIFJ1bGVEYXRhLmggKi87IH07CiAJCUU0OTQ2RUFGMTU2
RTY0REQwMEQzMjk3RiAvKiBTdHlsZVJ1bGVJbXBvcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0OTQ2RUFEMTU2RTY0REQwMEQzMjk3RiAvKiBTdHls
ZVJ1bGVJbXBvcnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtMTYzMzcsNiArMTYzMzgsNyBAQAogCQlFNDdDMzkyQzFGRTZFMERGMDBCQkJDNkIg
LyogUmVuZGVyVHJlZVVwZGF0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVuZGVyVHJlZVVwZGF0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ3RTI3
NjQxNjAzNkVEMjAwRUUyQUZCIC8qIEV4dGVuc2lvblN0eWxlU2hlZXRzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4dGVuc2lvblN0eWxlU2hlZXRzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUU0N0UyNzY3MTYwMzZFREMwMEVFMkFGQiAvKiBFeHRlbnNpb25T
dHlsZVNoZWV0cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeHRl
bnNpb25TdHlsZVNoZWV0cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUU0N0ZD
OEExMjVCODRENzEwMDU0OTVGQyAvKiBMb2FkU2NoZWR1bGluZ01vZGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTG9hZFNjaGVkdWxpbmdNb2RlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUU0ODEzN0I4MURCM0I1MjYwMDVDNTlCRiAvKiBTdHlsZVZhbGlkaXR5
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0eWxlVmFsaWRpdHkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ4NjNDRkEyMzg0MkU4NzAwOTcyMTU4IC8qIFJ1
bGVEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJ1bGVEYXRh
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ4NjNDRkQyMzg0MkU5RTAwOTcy
MTU4IC8qIFJ1bGVEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJ1bGVE
YXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNzM5OCw2ICsyNzQwMCw3IEBA
CiAJCQkJNTFFNjgyMEYxNjM4NzMwMjAwM0JCRjNDIC8qIExvYWRlclN0cmF0ZWd5LmggKi8sCiAJ
CQkJODYxQzJFQTMxM0ZCNEZERDAwMDYyQUJCIC8qIExvYWRUaW1pbmcuY3BwICovLAogCQkJCThB
MTJFMzVDMTFGQTMzMjgwMDI1ODM2QSAvKiBMb2FkVGltaW5nLmggKi8sCisJCQkJRTQ3RkM4QTEy
NUI4NEQ3MTAwNTQ5NUZDIC8qIExvYWRTY2hlZHVsaW5nTW9kZS5oICovLAogCQkJCUNFRUZDRDc3
MTlEQjMxRjcwMDM4NzZENyAvKiBNZWRpYVJlc291cmNlTG9hZGVyLmNwcCAqLywKIAkJCQlDRUVG
Q0Q3ODE5REIzMUY3MDAzODc2RDcgLyogTWVkaWFSZXNvdXJjZUxvYWRlci5oICovLAogCQkJCTUy
RjEwODYyMTYyQjZEODIwMDlBQzgxRSAvKiBNaXhlZENvbnRlbnRDaGVja2VyLmNwcCAqLywKQEAg
LTM0OTQ0LDYgKzM0OTQ3LDcgQEAKIAkJCQk3MUE1N0RGMjE1NEJFMjVDMDAwOUQxMjAgLyogU1ZH
UGF0aFV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBODgwRDAwQkYyMjAwNzFC
NzgyIC8qIFNWR1BhdHRlcm5FbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0U1OEQ0QTFE
RDY0QTVCMDAxMjg1NTIgLyogU1ZHUG9pbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUU0N0ZDOEEz
MjVCODRENzIwMDU0OTVGQyAvKiBMb2FkU2NoZWR1bGluZ01vZGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCUIyMjI3QThDMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQb2ludExpc3QuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUIyMjI3QThGMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQb2x5RWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBOTEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BvbHlnb25F
bGVtZW50LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Mb2FkU2NoZWR1bGluZ01vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkU2NoZWR1
bGluZ01vZGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjcwYmU4
MGNkOGQzOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkU2No
ZWR1bGluZ01vZGUuaApAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2VudW0gY2xhc3MgTG9hZFNjaGVkdWxpbmdNb2RlIDogdWludDhfdCB7CisgICAgRGlyZWN0LCAv
LyBBbGwgbG9hZHMgYXJlIGlzc3VlZCBkaXJlY3RseSB0byBuZXR3b3JrIGxheWVyLgorICAgIFBy
aW9yaXRpemVkIC8vIExvdyBwcmlvcml0eSBsb2FkcyBtYXkgZ2V0IGRlbGF5ZWQgaW4gZmF2b3Ig
b2YgaGlnaGVyIHByaW9yaXR5IG9uZXMuCit9OworCit9CisKK25hbWVzcGFjZSBXVEYgewordGVt
cGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpMb2FkU2NoZWR1bGluZ01vZGU+IHsK
KyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpMb2FkU2No
ZWR1bGluZ01vZGUsCisgICAgICAgIFdlYkNvcmU6OkxvYWRTY2hlZHVsaW5nTW9kZTo6RGlyZWN0
LAorICAgICAgICBXZWJDb3JlOjpMb2FkU2NoZWR1bGluZ01vZGU6OlByaW9yaXRpemVkCisgICAg
PjsKK307Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRl
Z3kuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0ZWd5LmNwcAppbmRleCA4
YzYzNjFmNjdjMzkuLjhiNTU4MWRiNGYyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0xvYWRlclN0cmF0ZWd5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVy
U3RyYXRlZ3kuY3BwCkBAIC0zMiw2ICszMiwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIExv
YWRlclN0cmF0ZWd5Ojp+TG9hZGVyU3RyYXRlZ3koKSA9IGRlZmF1bHQ7CiAKKwordm9pZCBMb2Fk
ZXJTdHJhdGVneTo6c2V0UmVzb3VyY2VMb2FkU2NoZWR1bGluZ01vZGUoUGFnZSYsIExvYWRTY2hl
ZHVsaW5nTW9kZSkKK3sKK30KKwordm9pZCBMb2FkZXJTdHJhdGVneTo6cHJpb3JpdGl6ZVJlc291
cmNlTG9hZHMoY29uc3QgVmVjdG9yPFN1YnJlc291cmNlTG9hZGVyKj4mKQoreworfQorCiBSZXNv
dXJjZVJlc3BvbnNlIExvYWRlclN0cmF0ZWd5OjpyZXNwb25zZUZyb21SZXNvdXJjZUxvYWRJZGVu
dGlmaWVyKHVpbnQ2NF90IC8qIHJlc291cmNlTG9hZElkZW50aWZpZXIgKi8pCiB7CiAgICAgcmV0
dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVn
eS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0ZWd5LmgKaW5kZXggNjA5N2Qy
NjUwNzY2Li4xYTQyMmQ3NWVmNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9M
b2FkZXJTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVn
eS5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkZldGNoT3B0
aW9ucy5oIgorI2luY2x1ZGUgIkxvYWRTY2hlZHVsaW5nTW9kZS5oIgogI2luY2x1ZGUgIlBhZ2VJ
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkUHJpb3JpdHkuaCIKICNpbmNsdWRl
ICJSZXNvdXJjZUxvYWRlck9wdGlvbnMuaCIKQEAgLTY5LDYgKzcwLDkgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBzdXNwZW5kUGVuZGluZ1JlcXVlc3RzKCkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCByZXN1bWVQZW5kaW5nUmVxdWVzdHMoKSA9IDA7CiAKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
UmVzb3VyY2VMb2FkU2NoZWR1bGluZ01vZGUoUGFnZSYsIExvYWRTY2hlZHVsaW5nTW9kZSk7Cisg
ICAgdmlydHVhbCB2b2lkIHByaW9yaXRpemVSZXNvdXJjZUxvYWRzKGNvbnN0IFZlY3RvcjxTdWJy
ZXNvdXJjZUxvYWRlcio+Jik7CisKICAgICB2aXJ0dWFsIGJvb2wgdXNlUGluZ0xvYWQoKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9CiAgICAgdXNpbmcgUGluZ0xvYWRDb21wbGV0aW9uSGFuZGxlciA9
IFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBSZXNvdXJjZUVycm9yJiwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYpPjsKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRQaW5nTG9hZChGcmFtZSYsIFJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMs
IGNvbnN0IEZldGNoT3B0aW9ucyYsIENvbnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb24sIFBp
bmdMb2FkQ29tcGxldGlvbkhhbmRsZXImJiA9IHsgfSkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5k
ZXggNmZjNGViZjA4ZTk1Li43NDRmMzA3MDUxZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMjks
NiArMjksNyBAQAogI2luY2x1ZGUgIkJhY2tGb3J3YXJkQ2xpZW50LmgiCiAjaW5jbHVkZSAiQmFj
a0ZvcndhcmRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiQ2FjaGVTdG9yYWdlUHJvdmlkZXIuaCIK
KyNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVy
LmgiCiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCkBAIC0x
MjMyLDYgKzEyMzMsOSBAQCB2b2lkIFBhZ2U6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCkKIHsK
ICAgICBpZiAobV9wZXJmb3JtYW5jZU1vbml0b3IpCiAgICAgICAgIG1fcGVyZm9ybWFuY2VNb25p
dG9yLT5kaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOworCisgICAgaWYgKG1fc2V0dGluZ3MtPnJl
c291cmNlTG9hZFNjaGVkdWxpbmdFbmFibGVkKCkpCisgICAgICAgIHNldExvYWRTY2hlZHVsaW5n
TW9kZShMb2FkU2NoZWR1bGluZ01vZGU6OlByaW9yaXRpemVkKTsKIH0KIAogdm9pZCBQYWdlOjpk
aWRDb21taXRMb2FkKCkKQEAgLTEyNDksNiArMTI1Myw4IEBAIHZvaWQgUGFnZTo6ZGlkRmluaXNo
TG9hZCgpCiAKICAgICBpZiAobV9wZXJmb3JtYW5jZU1vbml0b3IpCiAgICAgICAgIG1fcGVyZm9y
bWFuY2VNb25pdG9yLT5kaWRGaW5pc2hMb2FkKCk7CisKKyAgICBzZXRMb2FkU2NoZWR1bGluZ01v
ZGUoTG9hZFNjaGVkdWxpbmdNb2RlOjpEaXJlY3QpOwogfQogCiBib29sIFBhZ2U6OmlzT25seU5v
blV0aWxpdHlQYWdlKCkgY29uc3QKQEAgLTE2MDcsNiArMTYxMyw4IEBAIHZvaWQgUGFnZTo6ZG9B
ZnRlclVwZGF0ZVJlbmRlcmluZygpCiAgICAgfSk7CiAjZW5kaWYKIAorICAgIHByaW9yaXRpemVW
aXNpYmxlUmVzb3VyY2VzKCk7CisKICAgICBtX3JlbmRlcmluZ1VwZGF0ZVJlbWFpbmluZ1N0ZXBz
Lmxhc3QoKS5yZW1vdmUoUmVuZGVyaW5nVXBkYXRlU3RlcDo6RXZlbnRSZWdpb25VcGRhdGUpOwog
CiAjaWYgRU5BQkxFKElPU19UT1VDSF9FVkVOVFMpCkBAIC0xNjc2LDYgKzE2ODQsNDQgQEAgdm9p
ZCBQYWdlOjpyZW5kZXJpbmdVcGRhdGVDb21wbGV0ZWQoKQogICAgIH0KIH0KIAordm9pZCBQYWdl
Ojpwcmlvcml0aXplVmlzaWJsZVJlc291cmNlcygpCit7CisgICAgaWYgKGxvYWRTY2hlZHVsaW5n
TW9kZSgpID09IExvYWRTY2hlZHVsaW5nTW9kZTo6RGlyZWN0KQorICAgICAgICByZXR1cm47Cisg
ICAgaWYgKCFtYWluRnJhbWUoKS5kb2N1bWVudCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBW
ZWN0b3I8Q2FjaGVkUmVzb3VyY2UqPiB0b1ByaW9yaXRpemU7CisKKyAgICBmb3JFYWNoRG9jdW1l
bnQoWyZdIChEb2N1bWVudCYgZG9jdW1lbnQpIHsKKyAgICAgICAgdG9Qcmlvcml0aXplLmFwcGVu
ZFZlY3Rvcihkb2N1bWVudC5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnZpc2libGVSZXNvdXJjZXNU
b1ByaW9yaXRpemUoKSk7CisgICAgfSk7CisKKyAgICBpZiAodG9Qcmlvcml0aXplLmlzRW1wdHko
KSkgeworICAgICAgICBpZiAoIW1haW5GcmFtZSgpLmRvY3VtZW50KCktPnBhcnNpbmcoKSkgewor
ICAgICAgICAgICAgLy8gQWxsIHZpc2libGUgcmVzb3VyY2VzIGhhdmUgYmVlbiBsb2FkZWQgYW5k
IHdlIGFyZSBkb25lIHdpdGggcGFyc2luZy4gU3RvcCBzY2hlZHVsaW5nLgorICAgICAgICAgICAg
c2V0TG9hZFNjaGVkdWxpbmdNb2RlKExvYWRTY2hlZHVsaW5nTW9kZTo6RGlyZWN0KTsKKyAgICAg
ICAgfQorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byByZXNvdXJjZUxvYWRlcnMg
PSB0b1ByaW9yaXRpemUubWFwKFtdKGF1dG8qIHJlc291cmNlKSB7CisgICAgICAgIHJldHVybiBy
ZXNvdXJjZS0+bG9hZGVyKCk7CisgICAgfSk7CisKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+
bG9hZGVyU3RyYXRlZ3koKS0+cHJpb3JpdGl6ZVJlc291cmNlTG9hZHMocmVzb3VyY2VMb2FkZXJz
KTsKK30KKwordm9pZCBQYWdlOjpzZXRMb2FkU2NoZWR1bGluZ01vZGUoTG9hZFNjaGVkdWxpbmdN
b2RlIG1vZGUpCit7CisgICAgaWYgKG1fbG9hZFNjaGVkdWxpbmdNb2RlID09IG1vZGUpCisgICAg
ICAgIHJldHVybjsKKworICAgIG1fbG9hZFNjaGVkdWxpbmdNb2RlID0gbW9kZTsKKworICAgIHBs
YXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5zZXRSZXNvdXJjZUxvYWRTY2hl
ZHVsaW5nTW9kZSgqdGhpcywgbV9sb2FkU2NoZWR1bGluZ01vZGUpOworfQorCiB2b2lkIFBhZ2U6
OnN1c3BlbmRTY3JpcHRlZEFuaW1hdGlvbnMoKQogewogICAgIG1fc2NyaXB0ZWRBbmltYXRpb25z
U3VzcGVuZGVkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggNmVhNWE5NTc2NGY3Li4xYjA4MWQ3
MDI4NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiTGF5b3V0
TWlsZXN0b25lLmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVjdC5oIgogI2luY2x1ZGUgIkxlbmd0aEJv
eC5oIgorI2luY2x1ZGUgIkxvYWRTY2hlZHVsaW5nTW9kZS5oIgogI2luY2x1ZGUgIk1lZGlhUHJv
ZHVjZXIuaCIKICNpbmNsdWRlICJNZWRpYVNlc3Npb25Hcm91cElkZW50aWZpZXIuaCIKICNpbmNs
dWRlICJQYWdpbmF0aW9uLmgiCkBAIC04MzMsNiArODM0LDkgQEAgcHVibGljOgogICAgIGJvb2wg
dGV4dEludGVyYWN0aW9uRW5hYmxlZCgpIHsgcmV0dXJuIG1fdGV4dEludGVyYWN0aW9uRW5hYmxl
ZDsgfQogICAgIHZvaWQgc2V0VGV4dEludGVyYWN0aW9uRW5hYmxlZChib29sIHZhbHVlKSB7IG1f
dGV4dEludGVyYWN0aW9uRW5hYmxlZCA9IHZhbHVlOyB9CiAKKyAgICBMb2FkU2NoZWR1bGluZ01v
ZGUgbG9hZFNjaGVkdWxpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9sb2FkU2NoZWR1bGluZ01v
ZGU7IH0KKyAgICB2b2lkIHNldExvYWRTY2hlZHVsaW5nTW9kZShMb2FkU2NoZWR1bGluZ01vZGUp
OworCiBwcml2YXRlOgogICAgIHN0cnVjdCBOYXZpZ2F0aW9uIHsKICAgICAgICAgUmVnaXN0cmFi
bGVEb21haW4gZG9tYWluOwpAQCAtODcyLDYgKzg3Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBy
ZW5kZXJpbmdVcGRhdGVDb21wbGV0ZWQoKTsKICAgICB2b2lkIGNvbXB1dGVVbmZ1bGZpbGxlZFJl
bmRlcmluZ1N0ZXBzKE9wdGlvblNldDxSZW5kZXJpbmdVcGRhdGVTdGVwPik7CiAgICAgdm9pZCBz
Y2hlZHVsZVJlbmRlcmluZ1VwZGF0ZUludGVybmFsKCk7CisgICAgdm9pZCBwcmlvcml0aXplVmlz
aWJsZVJlc291cmNlcygpOwogCiAgICAgUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyJiByZW5kZXJp
bmdVcGRhdGVTY2hlZHVsZXIoKTsKIApAQCAtMTEzNCw2ICsxMTM5LDcgQEAgcHJpdmF0ZToKICAg
ICBib29sIG1fbG9hZHNGcm9tTmV0d29yayB7IHRydWUgfTsKICAgICBib29sIG1fY2FuVXNlQ3Jl
ZGVudGlhbFN0b3JhZ2UgeyB0cnVlIH07CiAgICAgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2ll
QmxvY2tpbmcgbV9zaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyB7IFNob3VsZFJl
bGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nOjpObyB9OworICAgIExvYWRTY2hlZHVsaW5nTW9k
ZSBtX2xvYWRTY2hlZHVsaW5nTW9kZSB7IExvYWRTY2hlZHVsaW5nTW9kZTo6RGlyZWN0IH07CiAg
ICAgYm9vbCBtX2hhc0JlZW5Ob3RpZmllZFRvSW5qZWN0VXNlclNjcmlwdHMgeyBmYWxzZSB9Owog
CiAgICAgTW9ub3RvbmljVGltZSBtX2xhc3RSZW5kZXJpbmdVcGRhdGVUaW1lc3RhbXA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IGJhZDFkNmFkZDBhYS4uZDk3M2NlYTIzMGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDcw
IEBACisyMDIxLTAxLTI1ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAg
ICAgICBJbXBsZW1lbnQgdmlzaWJpbGl0eSBiYXNlZCByZXNvdXJjZSBsb2FkIHNjaGVkdWxpbmcg
Zm9yIGxvdyBwcmlvcml0eSByZXNvdXJjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyMDcyOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBhIHNpbXBsZSBuZXR3b3JrIHByb2Nlc3Mgc2lkZSByZXNv
dXJjZSBsb2FkIHNjaGVkdWxlci4gV2hlbiBhY3RpdmUgaXQgbGltaXRzIHRoZSBudW1iZXIgb2Yg
bG93IHByaW9yaXR5IHJlc291cmNlIGxvYWRzCisgICAgICAgIChtb3N0bHkgaW1hZ2VzKSB0aGF0
IGFyZSBwYXNzZWQgdG8gbmV0d29yayBsYXllci4gVGhlIGN1cnJlbnQgbGltaXQgaXMgNiBwZXIg
aG9zdCwgcmVkdWNlZCBieSBhbnkgb25nb2luZyBoaWdoZXIgcHJpb3JpdHkKKyAgICAgICAgbG9h
ZHMuIFRoaXMgcmVkdWNlcyBpbXBhY3Qgb2YgbG93IHByaW9yaXR5IGxvYWRzIHRvIGhpZ2hlciBw
cmlvcml0eSBvbmVzLCBlc3BjaWFsbHkgb24gSFRUUC8yLgorCisgICAgICAgIFRoZSBzY2hlZHVs
ZXIgYWxzbyBzdXBwb3J0cyByZXByaW9yaXRpemluZyBsb2Fkcy4gVGhpcyBpcyB1c2VkIHRvIGxl
dCBpbWFnZXMgY3VycmVudGx5IGluIHRoZSB2aWV3cG9ydCB0byBza2lwIHRoZSBxdWV1ZQorICAg
ICAgICBhbmQgc3RhcnQgdGhlaXIgbG9hZHMgZmFzdGVyLgorCisgICAgICAgIFRoZSBmZWF0dXJl
IGlzIG5vdCBlbmFibGVkIGluIHRoaXMgcGF0Y2guCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvRG93bmxvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZDo6Y2Fu
Y2VsKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAg
ICAgKFdlYktpdDo6RG93bmxvYWQ6OmRpZEZpbmlzaCk6CisgICAgICAgIChXZWJLaXQ6OkRvd25s
b2FkOjpkaWRGYWlsKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpjbGVhclBhZ2VTcGVjaWZpY0RhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldFJlc291
cmNlTG9hZFNjaGVkdWxpbmdNb2RlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnByaW9yaXRpemVSZXNvdXJjZUxvYWRzKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNsZWFyUGFnZVNwZWNpZmljRGF0YUZv
clJlc291cmNlTG9hZFN0YXRpc3RpY3MpOiBEZWxldGVkLgorCisgICAgICAgIFJlbmFtZSB0byBj
bGVhclBhZ2VTcGVjaWZpY0RhdGEgYW5kIG1vdmUgb3V0IG9mICNpZi4KKworICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrTG9hZDo6c3RhcnQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6
c3RhcnRXaXRoU2NoZWR1bGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjp+TmV0
d29ya0xvYWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6ZGlkQ29tcGxldGVXaXRo
RXJyb3IpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRTY2hlZHVsZXIuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0xvYWRTY2hlZHVsZXI6Okhvc3RDb250ZXh0OjpzY2hlZHVsZSk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkU2NoZWR1bGVyOjpIb3N0Q29udGV4dDo6dW5z
Y2hlZHVsZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkU2NoZWR1bGVyOjpIb3N0Q29u
dGV4dDo6cHJpb3JpdGl6ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkU2NoZWR1bGVy
OjpIb3N0Q29udGV4dDo6c3RhcnQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZFNjaGVk
dWxlcjo6SG9zdENvbnRleHQ6On5Ib3N0Q29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2Fk
U2NoZWR1bGVyOjp1bnNjaGVkdWxlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWRTY2hl
ZHVsZXI6OnNldFJlc291cmNlTG9hZFNjaGVkdWxpbmdNb2RlKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0xvYWRTY2hlZHVsZXI6OnByaW9yaXRpemVMb2Fkcyk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtMb2FkU2NoZWR1bGVyOjpjbGVhclBhZ2VEYXRhKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0xvYWRTY2hlZHVsZXI6OmNvbnRleHRGb3JMb2FkKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrTG9hZFNjaGVkdWxlci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuY3BwLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9hZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Nlc3Npb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6bmV0d29y
a0xvYWRTY2hlZHVsZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9u
Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRp
dmVMb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxv
YWQ6OlNwZWN1bGF0aXZlTG9hZCk6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICog
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVy
U3RyYXRlZ3k6OnNldFJlc291cmNlTG9hZFNjaGVkdWxpbmdNb2RlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViTG9hZGVyU3RyYXRlZ3k6OnByaW9yaXRpemVSZXNvdXJjZUxvYWRzKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNs
b3NlKToKKwogMjAyMS0wMS0yNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQsIHNpbGVuY2UgZGVwcmVjYXRpb24gd2FybmluZyBmb3Igb3VyIG93
biBBUEkgdG8gYWRkcmVzcyBidWlsZCBpc3N1ZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHAKaW5kZXggNjUxZmYyNTRmOTA1Li44
ZjkyMTRhZWRiZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZC5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAKICNpbmNsdWRlICJOZXR3b3Jr
RGF0YVRhc2tDb2NvYS5oIgogI2VuZGlmCiAKLSNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5l
dHdvcmssICIlcCAtIERvd25sb2FkOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKKyNkZWZp
bmUgRE9XTkxPQURfUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9MT0df
SUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdvcmssICIlcCAtIERvd25sb2FkOjoi
IGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKQEAgLTk4LDcgKzk4LDcgQEAgdm9pZCBEb3dubG9hZDo6Y2FuY2Vs
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+JiYgY29t
cGwKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmVzdW1lRGF0YSk7CiAgICAgICAgIGlmICgh
d2Vha1RoaXMgfHwgbV9pZ25vcmVEaWRGYWlsQ2FsbGJhY2sgPT0gSWdub3JlRGlkRmFpbENhbGxi
YWNrOjpObykKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRCgiZGlkQ2FuY2VsOiAoaWQgPSAlIiBQUkl1NjQgIikiLCBkb3dubG9hZElEKCkudG9VSW50
NjQoKSk7CisgICAgICAgIERPV05MT0FEX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZENhbmNl
bDogKGlkID0gJSIgUFJJdTY0ICIpIiwgZG93bmxvYWRJRCgpLnRvVUludDY0KCkpOwogICAgICAg
ICBpZiAoYXV0byBleHRlbnNpb24gPSBzdGQ6OmV4Y2hhbmdlKG1fc2FuZGJveEV4dGVuc2lvbiwg
bnVsbHB0cikpCiAgICAgICAgICAgICBleHRlbnNpb24tPnJldm9rZSgpOwogICAgICAgICBtX2Rv
d25sb2FkTWFuYWdlci5kb3dubG9hZEZpbmlzaGVkKCp0aGlzKTsKQEAgLTEzMCw3ICsxMzAsNyBA
QCB2b2lkIERvd25sb2FkOjpkaWRDcmVhdGVEZXN0aW5hdGlvbihjb25zdCBTdHJpbmcmIHBhdGgp
CiB2b2lkIERvd25sb2FkOjpkaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBieXRlc1dyaXR0ZW4sIHVp
bnQ2NF90IHRvdGFsQnl0ZXNXcml0dGVuLCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dy
aXRlKQogewogICAgIGlmICghbV9oYXNSZWNlaXZlZERhdGEpIHsKLSAgICAgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZURhdGE6IFN0YXJ0ZWQgcmVjZWl2aW5nIGRhdGEgKGlk
ID0gJSIgUFJJdTY0ICIpIiwgZG93bmxvYWRJRCgpLnRvVUludDY0KCkpOworICAgICAgICBET1dO
TE9BRF9SRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlRGF0YTogU3RhcnRlZCByZWNl
aXZpbmcgZGF0YSAoaWQgPSAlIiBQUkl1NjQgIikiLCBkb3dubG9hZElEKCkudG9VSW50NjQoKSk7
CiAgICAgICAgIG1faGFzUmVjZWl2ZWREYXRhID0gdHJ1ZTsKICAgICB9CiAgICAgCkBAIC0xNDEs
NyArMTQxLDcgQEAgdm9pZCBEb3dubG9hZDo6ZGlkUmVjZWl2ZURhdGEodWludDY0X3QgYnl0ZXNX
cml0dGVuLCB1aW50NjRfdCB0b3RhbEJ5dGVzV3JpdHRlbiwKIAogdm9pZCBEb3dubG9hZDo6ZGlk
RmluaXNoKCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRGaW5pc2g6IChpZCA9
ICUiIFBSSXU2NCAiKSIsIGRvd25sb2FkSUQoKS50b1VJbnQ2NCgpKTsKKyAgICBET1dOTE9BRF9S
RUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRGaW5pc2g6IChpZCA9ICUiIFBSSXU2NCAiKSIsIGRv
d25sb2FkSUQoKS50b1VJbnQ2NCgpKTsKIAogICAgIHNlbmQoTWVzc2FnZXM6OkRvd25sb2FkUHJv
eHk6OkRpZEZpbmlzaCgpKTsKIApAQCAtMTU4LDcgKzE1OCw3IEBAIHZvaWQgRG93bmxvYWQ6OmRp
ZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYgcmVzCiAgICAgaWYgKG1faWdub3JlRGlkRmFpbENhbGxiYWNrID09IElnbm9yZURpZEZhaWxD
YWxsYmFjazo6WWVzKQogICAgICAgICByZXR1cm47CiAKLSAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKCJkaWRGYWlsOiAoaWQgPSAlIiBQUkl1NjQgIiwgaXNUaW1lb3V0ID0gJWQsIGlzQ2FuY2Vs
bGF0aW9uID0gJWQsIGVyckNvZGUgPSAlZCkiLAorICAgIERPV05MT0FEX1JFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoImRpZEZhaWw6IChpZCA9ICUiIFBSSXU2NCAiLCBpc1RpbWVvdXQgPSAlZCwgaXND
YW5jZWxsYXRpb24gPSAlZCwgZXJyQ29kZSA9ICVkKSIsCiAgICAgICAgIGRvd25sb2FkSUQoKS50
b1VJbnQ2NCgpLCBlcnJvci5pc1RpbWVvdXQoKSwgZXJyb3IuaXNDYW5jZWxsYXRpb24oKSwgZXJy
b3IuZXJyb3JDb2RlKCkpOwogCiAgICAgc2VuZChNZXNzYWdlczo6RG93bmxvYWRQcm94eTo6RGlk
RmFpbChlcnJvciwgcmVzdW1lRGF0YSkpOwpAQCAtMjAyLDQgKzIwMiw0IEBAIHZvaWQgRG93bmxv
YWQ6OnBsYXRmb3JtRGVzdHJveURvd25sb2FkKCkKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAK
LSN1bmRlZiBSRUxFQVNFX0xPR19JRl9BTExPV0VECisjdW5kZWYgRE9XTkxPQURfUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCA2ZmMzYjJkODk1
YTcuLjg0YzkxM2FkMWMwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTMyLDYg
KzMyLDggQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya0NhY2hlLmgi
CiAjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgorI2lu
Y2x1ZGUgIk5ldHdvcmtMb2FkLmgiCisjaW5jbHVkZSAiTmV0d29ya0xvYWRTY2hlZHVsZXIuaCIK
ICNpbmNsdWRlICJOZXR3b3JrTUROU1JlZ2lzdGVyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJOZXR3
b3JrUHJvY2Vzcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2Vz
LmgiCkBAIC04NTMsMTcgKzg1NSwyMiBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpzZXRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3NFbmFibGVkKGJvbwogICAgICAg
ICBsb2FkZXItPmRpc2FibGVFeHRyYU5ldHdvcmtMb2FkTWV0cmljc0NhcHR1cmUoKTsKIH0KIAot
I2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi12b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpyZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUoRnJhbWVJZGVudGlm
aWVyIGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmNsZWFyUGFnZVNwZWNpZmljRGF0YShQYWdlSWRlbnRpZmllciBwYWdl
SUQpCiB7CisgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpKQorICAgICAg
ICBzZXNzaW9uLT5uZXR3b3JrTG9hZFNjaGVkdWxlcigpLmNsZWFyUGFnZURhdGEocGFnZUlEKTsK
KworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgaWYgKGF1dG8qIHN0
b3JhZ2VTZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5zdG9yYWdlU2Vzc2lvbihtX3Nlc3Npb25J
RCkpCi0gICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5yZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUo
ZnJhbWVJRCwgcGFnZUlEKTsKKyAgICAgICAgc3RvcmFnZVNlc3Npb24tPmNsZWFyUGFnZVNwZWNp
ZmljRGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MocGFnZUlEKTsKKyNlbmRpZgogfQogCi12
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjbGVhclBhZ2VTcGVjaWZpY0RhdGFG
b3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKKyNpZiBFTkFC
TEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6cmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFt
ZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNz
aW9uID0gbmV0d29ya1Byb2Nlc3MoKS5zdG9yYWdlU2Vzc2lvbihtX3Nlc3Npb25JRCkpCi0gICAg
ICAgIHN0b3JhZ2VTZXNzaW9uLT5jbGVhclBhZ2VTcGVjaWZpY0RhdGFGb3JSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzKHBhZ2VJRCk7CisgICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5yZW1vdmVTdG9yYWdl
QWNjZXNzRm9yRnJhbWUoZnJhbWVJRCwgcGFnZUlEKTsKIH0KIAogdm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6bG9nVXNlckludGVyYWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiBkb21haW4pCkBAIC0xMTcwLDYgKzExNzcsMzMgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6c2V0Q09SU0Rpc2FibGluZ1BhdHRlcm5zKFdlYkNvcmU6OlBhZ2VJZGVu
dGkKICAgICBuZXR3b3JrUHJvY2VzcygpLnNldENPUlNEaXNhYmxpbmdQYXR0ZXJucyhwYWdlSWRl
bnRpZmllciwgV1RGTW92ZShwYXR0ZXJucykpOwogfQogCit2b2lkIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpzZXRSZXNvdXJjZUxvYWRTY2hlZHVsaW5nTW9kZShXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciBwYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6TG9hZFNjaGVkdWxpbmdNb2RlIG1v
ZGUpCit7CisgICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKCk7CisgICAgaWYgKCFz
ZXNzaW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBzZXNzaW9uLT5uZXR3b3JrTG9hZFNjaGVk
dWxlcigpLnNldFJlc291cmNlTG9hZFNjaGVkdWxpbmdNb2RlKHBhZ2VJZGVudGlmaWVyLCBtb2Rl
KTsKK30KKwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cHJpb3JpdGl6ZVJl
c291cmNlTG9hZHMoVmVjdG9yPFJlc291cmNlTG9hZElkZW50aWZpZXI+IGxvYWRJZGVudGlmaWVy
cykKK3sKKyAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oKTsKKyAgICBpZiAoIXNl
c3Npb24pCisgICAgICAgIHJldHVybjsKKworICAgIFZlY3RvcjxOZXR3b3JrTG9hZCo+IGxvYWRz
OworICAgIGZvciAoYXV0byBpZGVudGlmaWVyIDogbG9hZElkZW50aWZpZXJzKSB7CisgICAgICAg
IGF1dG8qIGxvYWRlciA9IG1fbmV0d29ya1Jlc291cmNlTG9hZGVycy5nZXQoaWRlbnRpZmllcik7
CisgICAgICAgIGlmICghbG9hZGVyIHx8ICFsb2FkZXItPm5ldHdvcmtMb2FkKCkpCisgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgbG9hZHMuYXBwZW5kKGxvYWRlci0+bmV0d29ya0xvYWQo
KSk7CisgICAgfQorCisgICAgc2Vzc2lvbi0+bmV0d29ya0xvYWRTY2hlZHVsZXIoKS5wcmlvcml0
aXplTG9hZHMobG9hZHMpOworfQorCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjdW5kZWYg
TkVUV09SS19QUk9DRVNTX01FU1NBR0VfQ0hFQ0tfQ09NUExFVElPTgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5oCmluZGV4IGQ4NjM3N2RhMWE0ZC4uNWE0YjJiODkzN2QyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oCkBAIC00MCw2ICs0MCw4IEBACiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXIuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db25zb2xlVHlwZXMuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0ZyYW1lSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTGF5b3V0
TWlsZXN0b25lLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Mb2FkU2NoZWR1bGluZ01vZGUuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9NZXNzYWdlUG9ydElkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05ldHdv
cmtMb2FkSW5mb3JtYXRpb24uaD4KQEAgLTQ4LDYgKzUwLDcgQEAKICNpbmNsdWRlIDxXZWJDb3Jl
L1Byb2Nlc3NJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFp
bi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvV2ViU29ja2V0SWRlbnRpZmllci5oPgorI2luY2x1ZGUg
PHd0Zi9PcHRpb25TZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3Bh
Y2UgUEFMIHsKQEAgLTI2Niw5ICsyNjksMTAgQEAgcHJpdmF0ZToKIAogICAgIENhY2hlU3RvcmFn
ZUVuZ2luZUNvbm5lY3Rpb24mIGNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKTsKIAorICAgIHZvaWQg
Y2xlYXJQYWdlU3BlY2lmaWNEYXRhKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKKwogI2lmIEVO
QUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgdm9pZCByZW1vdmVTdG9yYWdlQWNj
ZXNzRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRp
Zmllcik7Ci0gICAgdm9pZCBjbGVhclBhZ2VTcGVjaWZpY0RhdGFGb3JSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKIAogICAgIHZvaWQgbG9nVXNlckludGVy
YWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik7CiAgICAgdm9pZCByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzVXBkYXRlZChWZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4m
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKQEAgLTMyNSw2ICszMjksOSBAQCBwcml2
YXRlOgogCiAgICAgdm9pZCBoYXNVcGxvYWRTdGF0ZUNoYW5nZWQoYm9vbCk7CiAKKyAgICB2b2lk
IHNldFJlc291cmNlTG9hZFNjaGVkdWxpbmdNb2RlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBX
ZWJDb3JlOjpMb2FkU2NoZWR1bGluZ01vZGUpOworICAgIHZvaWQgcHJpb3JpdGl6ZVJlc291cmNl
TG9hZHMoVmVjdG9yPFJlc291cmNlTG9hZElkZW50aWZpZXI+KTsKKwogI2lmIEVOQUJMRShBUFBM
RV9QQVlfUkVNT1RFX1VJKQogICAgIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiBwYXltZW50
Q29vcmRpbmF0b3IoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMu
aW4KaW5kZXggMWJiZmE5MGNmNDQzLi5mZjhkNGExNzlmMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtNjIsOSArNjIsMTAgQEAgbWVzc2FnZXMgLT4g
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIENyZWF0
ZVNvY2tldFN0cmVhbShVUkwgdXJsLCBTdHJpbmcgY2FjaGVQYXJ0aXRpb24sIFdlYkNvcmU6Oldl
YlNvY2tldElkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICBDcmVhdGVTb2NrZXRDaGFubmVsKFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBTdHJpbmcgcHJvdG9jb2wsIFdlYkNvcmU6
OldlYlNvY2tldElkZW50aWZpZXIgaWRlbnRpZmllcikKIAorICAgIENsZWFyUGFnZVNwZWNpZmlj
RGF0YShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQpOworCiAjaWYgRU5BQkxFKFJFU09V
UkNFX0xPQURfU1RBVElTVElDUykKICAgICBSZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUoV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCk7Ci0gICAgQ2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyhXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQpOwogICAgIExvZ1VzZXJJbnRlcmFjdGlv
bihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4pCiAgICAgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1VwZGF0ZWQoVmVjdG9yPFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M+IHN0
YXRpc3RpY3MpIC0+ICgpIEFzeW5jCiAgICAgSGFzU3RvcmFnZUFjY2VzcyhXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiBzdWJGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4g
dG9wRnJhbWVEb21haW4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciBwYWdlSUQpIC0+IChib29sIGhhc1N0b3JhZ2VBY2Nlc3MpIEFzeW5j
CkBAIC0xMDEsNCArMTAyLDYgQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogI2lmIFBMQVRGT1JNKE1BQykKICAgICBVcGRhdGVBY3Rp
dmVQYWdlcyhTdHJpbmcgbmFtZSwgVmVjdG9yPFN0cmluZz4gYWN0aXZlUGFnZXNPcmlnaW5zLCBh
dWRpdF90b2tlbl90IGF1ZGl0VG9rZW4pCiAjZW5kaWYKKyAgICBTZXRSZXNvdXJjZUxvYWRTY2hl
ZHVsaW5nTW9kZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIGVudW06dWludDhf
dCBXZWJDb3JlOjpMb2FkU2NoZWR1bGluZ01vZGUgbW9kZSkKKyAgICBQcmlvcml0aXplUmVzb3Vy
Y2VMb2FkcyhWZWN0b3I8dWludDY0X3Q+IGxvYWRJZGVudGlmaWVycykKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKaW5kZXggMmU2Y2VmOTUwNWRiLi5i
ODRmMDg0ZWNhMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0xvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xv
YWQuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VEaXNwb3NpdGlvbi5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uTWFuYWdlci5oIgogI2lu
Y2x1ZGUgIk5ldHdvcmtEYXRhVGFza0Jsb2IuaCIKKyNpbmNsdWRlICJOZXR3b3JrTG9hZFNjaGVk
dWxlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1By
b2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Nlc3Npb24uaCIKQEAgLTM2
LDYgKzM3LDggQEAKICNpbmNsdWRlICJXZWJFcnJvcnMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1Jl
c291cmNlUmVxdWVzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CisjaW5j
bHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CiAjaW5jbHVkZSA8d3RmL1NlY29uZHMuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC02MCw5
ICs2MywxOSBAQCB2b2lkIE5ldHdvcmtMb2FkOjpzdGFydCgpCiAgICAgICAgIG1fdGFzay0+cmVz
dW1lKCk7CiB9CiAKK3ZvaWQgTmV0d29ya0xvYWQ6OnN0YXJ0V2l0aFNjaGVkdWxpbmcoKQorewor
ICAgIGlmICghbV90YXNrIHx8ICFtX3Rhc2stPm5ldHdvcmtTZXNzaW9uKCkpCisgICAgICAgIHJl
dHVybjsKKyAgICBtX3NjaGVkdWxlciA9IG1ha2VXZWFrUHRyKG1fdGFzay0+bmV0d29ya1Nlc3Np
b24oKS0+bmV0d29ya0xvYWRTY2hlZHVsZXIoKSk7CisgICAgbV9zY2hlZHVsZXItPnNjaGVkdWxl
KCp0aGlzKTsKK30KKwogTmV0d29ya0xvYWQ6On5OZXR3b3JrTG9hZCgpCiB7CiAgICAgQVNTRVJU
KFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBpZiAobV9zY2hlZHVsZXIpCisgICAgICAgIG1fc2No
ZWR1bGVyLT51bnNjaGVkdWxlKCp0aGlzKTsKICAgICBpZiAobV9yZWRpcmVjdENvbXBsZXRpb25I
YW5kbGVyKQogICAgICAgICBtX3JlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIoeyB9KTsKICAgICBp
ZiAobV90YXNrKQpAQCAtMjI1LDYgKzIzOCwxMSBAQCB2b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNl
aXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIAogdm9pZCBOZXR3b3JrTG9hZDo6
ZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIGNvbnN0IFdl
YkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQogeworICAgIGlm
IChtX3NjaGVkdWxlcikgeworICAgICAgICBtX3NjaGVkdWxlci0+dW5zY2hlZHVsZSgqdGhpcyk7
CisgICAgICAgIG1fc2NoZWR1bGVyID0gbnVsbHB0cjsKKyAgICB9CisKICAgICBpZiAoZXJyb3Iu
aXNOdWxsKCkpCiAgICAgICAgIG1fY2xpZW50LmdldCgpLmRpZEZpbmlzaExvYWRpbmcobmV0d29y
a0xvYWRNZXRyaWNzKTsKICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtMb2FkLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtMb2FkLmgKaW5kZXggNTllMTdlNWI5YTU2Li42OTU1OTk3ODFiZGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgKQEAgLTM5LDYgKzM5LDcgQEAgY2xh
c3MgQmxvYlJlZ2lzdHJ5SW1wbDsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIE5ldHdv
cmtMb2FkU2NoZWR1bGVyOwogY2xhc3MgTmV0d29ya1Byb2Nlc3M7CiAKIGNsYXNzIE5ldHdvcmtM
b2FkIGZpbmFsIDogcHJpdmF0ZSBOZXR3b3JrRGF0YVRhc2tDbGllbnQgewpAQCAtNDgsNiArNDks
NyBAQCBwdWJsaWM6CiAgICAgfk5ldHdvcmtMb2FkKCk7CiAKICAgICB2b2lkIHN0YXJ0KCk7Cisg
ICAgdm9pZCBzdGFydFdpdGhTY2hlZHVsaW5nKCk7CiAgICAgdm9pZCBjYW5jZWwoKTsKIAogICAg
IGJvb2wgaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMoKSBjb25zdDsKQEAgLTU2LDYg
KzU4LDcgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlUmVxdWVzdEFmdGVyUmVkaXJlY3Rpb24o
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgY29uc3Q7CiAKICAgICBjb25zdCBOZXR3b3JrTG9h
ZFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnM7IH0K
KyAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIHBhcmFtZXRlcnMoKS5yZXF1ZXN0
LnVybCgpOyB9CiAKICAgICB2b2lkIGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmKTsKIApAQCAtOTAsNiArOTMsNyBAQCBwcml2YXRlOgogICAgIGNvbnN0
IE5ldHdvcmtMb2FkUGFyYW1ldGVycyBtX3BhcmFtZXRlcnM7CiAgICAgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+IG1fcmVkaXJlY3RDb21wbGV0aW9u
SGFuZGxlcjsKICAgICBSZWZQdHI8TmV0d29ya0RhdGFUYXNrPiBtX3Rhc2s7CisgICAgV2Vha1B0
cjxOZXR3b3JrTG9hZFNjaGVkdWxlcj4gbV9zY2hlZHVsZXI7CiAKICAgICBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QgbV9jdXJyZW50UmVxdWVzdDsgLy8gVXBkYXRlZCBvbiByZWRpcmVjdHMuCiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZFNj
aGVkdWxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkU2No
ZWR1bGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjk1MWVk
ZWViNWVlMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0xvYWRTY2hlZHVsZXIuY3BwCkBAIC0wLDAgKzEsMTcyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtMb2FkU2NoZWR1bGVyLmgiCisK
KyNpbmNsdWRlICJOZXR3b3JrTG9hZC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGlj
IGNvbnN0ZXhwciBzaXplX3QgbWF4aW11bUFjdGl2ZUNvdW50Rm9yTG93UHJpb3JpdHkgPSA2Owor
CitjbGFzcyBOZXR3b3JrTG9hZFNjaGVkdWxlcjo6SG9zdENvbnRleHQgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIEhvc3RDb250ZXh0KCkgPSBkZWZhdWx0Owor
ICAgIH5Ib3N0Q29udGV4dCgpOworCisgICAgdm9pZCBzY2hlZHVsZShOZXR3b3JrTG9hZCYpOwor
ICAgIHZvaWQgdW5zY2hlZHVsZShOZXR3b3JrTG9hZCYpOworICAgIHZvaWQgcHJpb3JpdGl6ZShO
ZXR3b3JrTG9hZCYpOworCisgICAgdm9pZCBmaW5pc2hQYWdlKFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyKTsKKworcHJpdmF0ZToKKyAgICB2b2lkIHN0YXJ0KE5ldHdvcmtMb2FkJik7CisKKyAgICBI
YXNoU2V0PE5ldHdvcmtMb2FkKj4gbV9hY3RpdmVMb2FkczsKKyAgICBMaXN0SGFzaFNldDxOZXR3
b3JrTG9hZCo+IG1fcGVuZGluZ0xvYWRzOworfTsKKwordm9pZCBOZXR3b3JrTG9hZFNjaGVkdWxl
cjo6SG9zdENvbnRleHQ6OnNjaGVkdWxlKE5ldHdvcmtMb2FkJiBsb2FkKQoreworICAgIGF1dG8g
c3RhcnRJbW1lZGlhdGVseSA9IFsmXSB7CisgICAgICAgIGF1dG8gcHJpb3JpdHkgPSBsb2FkLnBh
cmFtZXRlcnMoKS5yZXF1ZXN0LnByaW9yaXR5KCk7CisgICAgICAgIGlmIChwcmlvcml0eSA+IFJl
c291cmNlTG9hZFByaW9yaXR5OjpMb3cpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAg
ICAgICBpZiAobV9hY3RpdmVMb2Fkcy5zaXplKCkgPCBtYXhpbXVtQWN0aXZlQ291bnRGb3JMb3dQ
cmlvcml0eSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9KCk7CisKKyAgICBpZiAoc3RhcnRJbW1lZGlhdGVseSkgeworICAgICAgICBzdGFy
dChsb2FkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fcGVuZGluZ0xvYWRzLmFk
ZCgmbG9hZCk7Cit9CisKK3ZvaWQgTmV0d29ya0xvYWRTY2hlZHVsZXI6Okhvc3RDb250ZXh0Ojp1
bnNjaGVkdWxlKE5ldHdvcmtMb2FkJiBsb2FkKQoreworICAgIG1fYWN0aXZlTG9hZHMucmVtb3Zl
KCZsb2FkKTsKKyAgICBtX3BlbmRpbmdMb2Fkcy5yZW1vdmUoJmxvYWQpOworCisgICAgaWYgKG1f
cGVuZGluZ0xvYWRzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChtX2FjdGl2
ZUxvYWRzLnNpemUoKSA+PSBtYXhpbXVtQWN0aXZlQ291bnRGb3JMb3dQcmlvcml0eSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgc3RhcnQoKm1fcGVuZGluZ0xvYWRzLnRha2VGaXJzdCgpKTsKK30K
Kwordm9pZCBOZXR3b3JrTG9hZFNjaGVkdWxlcjo6SG9zdENvbnRleHQ6OnByaW9yaXRpemUoTmV0
d29ya0xvYWQmIGxvYWQpCit7CisgICAgaWYgKCFtX3BlbmRpbmdMb2Fkcy5yZW1vdmUoJmxvYWQp
KQorICAgICAgICByZXR1cm47CisKKyAgICBzdGFydChsb2FkKTsKK30KKwordm9pZCBOZXR3b3Jr
TG9hZFNjaGVkdWxlcjo6SG9zdENvbnRleHQ6OnN0YXJ0KE5ldHdvcmtMb2FkJiBsb2FkKQorewor
ICAgIG1fYWN0aXZlTG9hZHMuYWRkKCZsb2FkKTsKKworICAgIGxvYWQuc3RhcnQoKTsKK30KKwor
TmV0d29ya0xvYWRTY2hlZHVsZXI6Okhvc3RDb250ZXh0Ojp+SG9zdENvbnRleHQoKQoreworICAg
IGZvciAoYXV0byogbG9hZCA6IG1fcGVuZGluZ0xvYWRzKQorICAgICAgICBzdGFydCgqbG9hZCk7
Cit9CisKK05ldHdvcmtMb2FkU2NoZWR1bGVyOjpOZXR3b3JrTG9hZFNjaGVkdWxlcigpID0gZGVm
YXVsdDsKK05ldHdvcmtMb2FkU2NoZWR1bGVyOjp+TmV0d29ya0xvYWRTY2hlZHVsZXIoKSA9IGRl
ZmF1bHQ7CisKK3ZvaWQgTmV0d29ya0xvYWRTY2hlZHVsZXI6OnNjaGVkdWxlKE5ldHdvcmtMb2Fk
JiBsb2FkKQoreworICAgIGF1dG8qIGNvbnRleHQgPSBjb250ZXh0Rm9yTG9hZChsb2FkKTsKKwor
ICAgIGlmICghY29udGV4dCkgeworICAgICAgICBsb2FkLnN0YXJ0KCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBjb250ZXh0LT5zY2hlZHVsZShsb2FkKTsKK30KKwordm9pZCBOZXR3
b3JrTG9hZFNjaGVkdWxlcjo6dW5zY2hlZHVsZShOZXR3b3JrTG9hZCYgbG9hZCkKK3sKKyAgICBp
ZiAoYXV0byogY29udGV4dCA9IGNvbnRleHRGb3JMb2FkKGxvYWQpKQorICAgICAgICBjb250ZXh0
LT51bnNjaGVkdWxlKGxvYWQpOworfQorCit2b2lkIE5ldHdvcmtMb2FkU2NoZWR1bGVyOjpzZXRS
ZXNvdXJjZUxvYWRTY2hlZHVsaW5nTW9kZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSWRl
bnRpZmllciwgV2ViQ29yZTo6TG9hZFNjaGVkdWxpbmdNb2RlIG1vZGUpCit7CisgICAgc3dpdGNo
IChtb2RlKSB7CisgICAgY2FzZSBXZWJDb3JlOjpMb2FkU2NoZWR1bGluZ01vZGU6OlByaW9yaXRp
emVkOgorICAgICAgICBtX3BhZ2VDb250ZXh0cy5lbnN1cmUocGFnZUlkZW50aWZpZXIsIFsmXSB7
CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYWdlQ29udGV4dD4oKTsKKyAgICAgICAg
fSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2ViQ29yZTo6TG9hZFNjaGVkdWxpbmdNb2Rl
OjpEaXJlY3Q6CisgICAgICAgIG1fcGFnZUNvbnRleHRzLnJlbW92ZShwYWdlSWRlbnRpZmllcik7
CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKwordm9pZCBOZXR3b3JrTG9hZFNjaGVkdWxlcjo6
cHJpb3JpdGl6ZUxvYWRzKGNvbnN0IFZlY3RvcjxOZXR3b3JrTG9hZCo+JiBsb2FkcykKK3sKKyAg
ICBmb3IgKGF1dG8qIGxvYWQgOiBsb2FkcykgeworICAgICAgICBpZiAoYXV0byogY29udGV4dCA9
IGNvbnRleHRGb3JMb2FkKCpsb2FkKSkKKyAgICAgICAgICAgIGNvbnRleHQtPnByaW9yaXRpemUo
KmxvYWQpOworICAgIH0KK30KKwordm9pZCBOZXR3b3JrTG9hZFNjaGVkdWxlcjo6Y2xlYXJQYWdl
RGF0YShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSWRlbnRpZmllcikKK3sKKyAgICBtX3Bh
Z2VDb250ZXh0cy5yZW1vdmUocGFnZUlkZW50aWZpZXIpOworfQorCithdXRvIE5ldHdvcmtMb2Fk
U2NoZWR1bGVyOjpjb250ZXh0Rm9yTG9hZChjb25zdCBOZXR3b3JrTG9hZCYgbG9hZCkgLT4gSG9z
dENvbnRleHQqCit7CisgICAgaWYgKCFsb2FkLnVybCgpLnByb3RvY29sSXNJbkhUVFBGYW1pbHko
KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvKiBwYWdlQ29udGV4dCA9IG1f
cGFnZUNvbnRleHRzLmdldChsb2FkLnBhcmFtZXRlcnMoKS53ZWJQYWdlSUQpOworICAgIGlmICgh
cGFnZUNvbnRleHQpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byBob3N0ID0g
bG9hZC51cmwoKS5ob3N0KCkudG9TdHJpbmcoKTsKKyAgICByZXR1cm4gcGFnZUNvbnRleHQtPmVu
c3VyZShob3N0LCBbJl0geworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxIb3N0Q29udGV4dD4o
KTsKKyAgICB9KS5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRTY2hlZHVsZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRTY2hlZHVsZXIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjI5OWM4MWFjMzI4OQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRTY2hlZHVsZXIu
aApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
IDxXZWJDb3JlL0xvYWRTY2hlZHVsaW5nTW9kZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlk
ZW50aWZpZXIuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFr
UHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBOZXR3b3JrTG9hZDsKKworY2xh
c3MgTmV0d29ya0xvYWRTY2hlZHVsZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TmV0d29ya0xv
YWRTY2hlZHVsZXI+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAg
ICBOZXR3b3JrTG9hZFNjaGVkdWxlcigpOworICAgIH5OZXR3b3JrTG9hZFNjaGVkdWxlcigpOwor
CisgICAgdm9pZCBzY2hlZHVsZShOZXR3b3JrTG9hZCYpOworICAgIHZvaWQgdW5zY2hlZHVsZShO
ZXR3b3JrTG9hZCYpOworCisgICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTY2hlZHVsaW5nTW9kZShX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6TG9hZFNjaGVkdWxpbmdNb2RlKTsKKyAg
ICB2b2lkIHByaW9yaXRpemVMb2Fkcyhjb25zdCBWZWN0b3I8TmV0d29ya0xvYWQqPiYpOworICAg
IHZvaWQgY2xlYXJQYWdlRGF0YShXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CisKK3ByaXZhdGU6
CisgICAgY2xhc3MgSG9zdENvbnRleHQ7CisgICAgSG9zdENvbnRleHQqIGNvbnRleHRGb3JMb2Fk
KGNvbnN0IE5ldHdvcmtMb2FkJik7CisKKyAgICB1c2luZyBQYWdlQ29udGV4dCA9IEhhc2hNYXA8
U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8SG9zdENvbnRleHQ+PjsKKyAgICBIYXNoTWFwPFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UGFnZUNvbnRleHQ+PiBtX3BhZ2VD
b250ZXh0czsKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCAyOTA1ZDUxZTE3YTEuLmNmNzkzYTY5
NWUxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmNwcApAQCAtMzM2LDcgKzMzNiw3IEBAIHZvaWQgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZp
cnN0TG9hCiAgICAgcGFyYW1ldGVycy5yZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KTsKICAgICBw
YXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gPSBtX3BhcmFtZXRlcnMuaXNO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsKICAgICBtX25ldHdvcmtMb2FkID0gbWFrZVVuaXF1
ZTxOZXR3b3JrTG9hZD4oKnRoaXMsICZuZXR3b3JrU2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCksIFdU
Rk1vdmUocGFyYW1ldGVycyksICpuZXR3b3JrU2Vzc2lvbik7Ci0gICAgbV9uZXR3b3JrTG9hZC0+
c3RhcnQoKTsKKyAgICBtX25ldHdvcmtMb2FkLT5zdGFydFdpdGhTY2hlZHVsaW5nKCk7CiAKICAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydE5ldHdvcmtMb2FkOiBHb2luZyB0byB0aGUg
bmV0d29yayAoZGVzY3JpcHRpb249JSIgUFVCTElDX0xPR19TVFJJTkcgIikiLCBtX25ldHdvcmtM
b2FkLT5kZXNjcmlwdGlvbigpLnV0ZjgoKS5kYXRhKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAppbmRleCA3NTljMWMyMzcyYWUuLjY2
NzVmNjAwNDZlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U2Vzc2lvbi5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbi5o
IgogCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtMb2FkU2NoZWR1bGVy
LmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vz
c1Byb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVy
cy5oIgpAQCAtMzgyLDQgKzM4MywxMSBAQCB2b2lkIE5ldHdvcmtTZXNzaW9uOjp1bnJlZ2lzdGVy
TmV0d29ya0RhdGFUYXNrKE5ldHdvcmtEYXRhVGFzayYgdGFzaykKICAgICBtX2RhdGFUYXNrU2V0
LnJlbW92ZSh0YXNrKTsKIH0KIAorTmV0d29ya0xvYWRTY2hlZHVsZXImIE5ldHdvcmtTZXNzaW9u
OjpuZXR3b3JrTG9hZFNjaGVkdWxlcigpCit7CisgICAgaWYgKCFtX25ldHdvcmtMb2FkU2NoZWR1
bGVyKQorICAgICAgICBtX25ldHdvcmtMb2FkU2NoZWR1bGVyID0gbWFrZVVuaXF1ZTxOZXR3b3Jr
TG9hZFNjaGVkdWxlcj4oKTsKKyAgICByZXR1cm4gKm1fbmV0d29ya0xvYWRTY2hlZHVsZXI7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU2Vzc2lvbi5oCmluZGV4IGFjODk4NjU4OGUyZC4uMWE4ZjU4Y2YyYjFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCkBAIC01Myw2
ICs1Myw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudE1hbmFnZXI7CiBjbGFzcyBOZXR3b3JrRGF0YVRhc2s7CitjbGFzcyBOZXR3b3JrTG9hZFNj
aGVkdWxlcjsKIGNsYXNzIE5ldHdvcmtQcm9jZXNzOwogY2xhc3MgTmV0d29ya1Jlc291cmNlTG9h
ZGVyOwogY2xhc3MgTmV0d29ya1NvY2tldENoYW5uZWw7CkBAIC0xNTAsNiArMTUxLDggQEAgcHVi
bGljOgogICAgIHZvaWQgcmVtb3ZlU29mdFVwZGF0ZUxvYWRlcihTZXJ2aWNlV29ya2VyU29mdFVw
ZGF0ZUxvYWRlciogbG9hZGVyKSB7IG1fc29mdFVwZGF0ZUxvYWRlcnMucmVtb3ZlKGxvYWRlcik7
IH0KICNlbmRpZgogCisgICAgTmV0d29ya0xvYWRTY2hlZHVsZXImIG5ldHdvcmtMb2FkU2NoZWR1
bGVyKCk7CisKIHByb3RlY3RlZDoKICAgICBOZXR3b3JrU2Vzc2lvbihOZXR3b3JrUHJvY2VzcyYs
IGNvbnN0IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAKQEAgLTE4Niw2ICsx
ODksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBtX2lzSW52YWxpZGF0ZWQgeyBmYWxzZSB9Owog
I2VuZGlmCiAgICAgUmVmUHRyPE5ldHdvcmtDYWNoZTo6Q2FjaGU+IG1fY2FjaGU7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPE5ldHdvcmtMb2FkU2NoZWR1bGVyPiBtX25ldHdvcmtMb2FkU2NoZWR1bGVy
OwogICAgIFdlYkNvcmU6OkJsb2JSZWdpc3RyeUltcGwgbV9ibG9iUmVnaXN0cnk7CiAgICAgdW5z
aWduZWQgbV90ZXN0U3BlZWRNdWx0aXBsaWVyIHsgMSB9OwogICAgIGJvb2wgbV9hbGxvd3NTZXJ2
ZXJQcmVjb25uZWN0IHsgdHJ1ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3Bw
CmluZGV4IDRjMTA3MzUwZmE0My4uNGI5OGQ1YzE0YzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVj
dWxhdGl2ZUxvYWQuY3BwCkBAIC02OSw3ICs2OSw3IEBAIFNwZWN1bGF0aXZlTG9hZDo6U3BlY3Vs
YXRpdmVMb2FkKENhY2hlJiBjYWNoZSwgY29uc3QgR2xvYmFsRnJhbWVJRCYgZ2xvYmFsRnJhbWVJ
CiAgICAgcGFyYW1ldGVycy5yZXF1ZXN0ID0gbV9vcmlnaW5hbFJlcXVlc3Q7CiAgICAgcGFyYW1l
dGVycy5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluID0gaXNOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbjsKICAgICBtX25ldHdvcmtMb2FkID0gbWFrZVVuaXF1ZTxOZXR3b3JrTG9hZD4oKnRo
aXMsIG51bGxwdHIsIFdURk1vdmUocGFyYW1ldGVycyksICpuZXR3b3JrU2Vzc2lvbik7Ci0gICAg
bV9uZXR3b3JrTG9hZC0+c3RhcnQoKTsKKyAgICBtX25ldHdvcmtMb2FkLT5zdGFydFdpdGhTY2hl
ZHVsaW5nKCk7CiB9CiAKIFNwZWN1bGF0aXZlTG9hZDo6flNwZWN1bGF0aXZlTG9hZCgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2Vz
LnR4dAppbmRleCA3N2FjMTZkZjg5MWYuLjdmNDA4YmM0NjEwYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC02
NSw2ICs2NSw3IEBAIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5jcHAKIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtMb2FkLmNwcAogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcAor
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRTY2hlZHVsZXIuY3BwCiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAKIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzLmNwcAogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NQbGF0Zm9ybVN0cmF0
ZWdpZXMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCBmYTAzZGM4NTE0MDAuLjg0MjM3ZGM0YjY1NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xOTQ1LDYgKzE5NDUsNyBA
QAogCQlFNDQzNkVDQzFBMEQwNDBCMDBFQUQyMDQgLyogTmV0d29ya0NhY2hlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDQzNkVCRjFBMENGREIyMDBF
QUQyMDQgLyogTmV0d29ya0NhY2hlLmggKi87IH07CiAJCUU0NDM2RUNFMUEwRDA0MEIwMEVBRDIw
NCAvKiBOZXR3b3JrQ2FjaGVLZXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEU0NDM2RUMxMUEwQ0ZEQjIwMEVBRDIwNCAvKiBOZXR3b3JrQ2FjaGVLZXku
aCAqLzsgfTsKIAkJRTQ0MzZFQ0YxQTBEMDQwQjAwRUFEMjA0IC8qIE5ldHdvcmtDYWNoZVN0b3Jh
Z2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NDM2
RUMyMUEwQ0ZEQjIwMEVBRDIwNCAvKiBOZXR3b3JrQ2FjaGVTdG9yYWdlLmggKi87IH07CisJCUU0
N0ZDOEEwMjVCODMzMUMwMDU0OTVGQyAvKiBOZXR3b3JrTG9hZFNjaGVkdWxlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ3RkM4OUYyNUI4MzMxQzAw
NTQ5NUZDIC8qIE5ldHdvcmtMb2FkU2NoZWR1bGVyLmggKi87IH07CiAJCUU0ODlEMjhDMUEwQTJE
QjgwMDc4QzA2QSAvKiBOZXR3b3JrQ2FjaGVDb2RlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0ODlEMjg1MUEwQTJEQjgwMDc4QzA2QSAvKiBOZXR3
b3JrQ2FjaGVDb2RlcnMuaCAqLzsgfTsKIAkJRTQ5RDQwRDcxQUQzRkIxNzAwNjZCN0I5IC8qIE5l
dHdvcmtDYWNoZUJsb2JTdG9yYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFNDlENDBENjFBRDNGQjE3MDA2NkI3QjkgLyogTmV0d29ya0NhY2hlQmxv
YlN0b3JhZ2UuaCAqLzsgfTsKIAkJRTRENTREMDQyMUYxRDcyRDAwN0UzQzM2IC8qIFNjcm9sbGlu
Z1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0MEMxRjkzMjFGMEI5NkUwMDUzMDcxOCAvKiBTY3Jv
bGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlSU9TLmggKi87IH07CkBAIC01NzQ0LDYg
KzU3NDUsOCBAQAogCQlFNDQzNkVDMzFBMENGREIyMDBFQUQyMDQgLyogTmV0d29ya0NhY2hlU3Rv
cmFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3JrQ2Fj
aGVTdG9yYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ2OTdDQ0MxQjI1
RUI4RjAwMUIwQTZDIC8qIE5ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29ya0NhY2hlRmlsZVN5c3RlbS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0N0QxRTk2MUIwNjJCNjYwMDI2NzZBOCAvKiBOZXR3
b3JrQ2FjaGVEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5l
dHdvcmtDYWNoZURhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNDdGQzg5
RDI1QjgzMzEzMDA1NDk1RkMgLyogTmV0d29ya0xvYWRTY2hlZHVsZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29ya0xvYWRTY2hlZHVsZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNDdGQzg5RjI1QjgzMzFDMDA1NDk1RkMgLyogTmV0
d29ya0xvYWRTY2hlZHVsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0
d29ya0xvYWRTY2hlZHVsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ4OUQy
ODQxQTBBMkRCODAwNzhDMDZBIC8qIE5ldHdvcmtDYWNoZUNvZGVycy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3JrQ2FjaGVDb2RlcnMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFNDg5RDI4NTFBMEEyREI4MDA3OEMwNkEgLyogTmV0d29y
a0NhY2hlQ29kZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtD
YWNoZUNvZGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDlENDBENjFBRDNG
QjE3MDA2NkI3QjkgLyogTmV0d29ya0NhY2hlQmxvYlN0b3JhZ2UuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya0NhY2hlQmxvYlN0b3JhZ2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTgzMjgsNiArODMzMSw4IEBACiAJCQkJNDEwM0ZCQTEyMDYxQkRC
NzAwQzJFQUY4IC8qIE5ldHdvcmtMb2FkQ2hlY2tlci5oICovLAogCQkJCTgzRDQ1NEQ2MUJFOUQz
QzQwMDZDOTNCRCAvKiBOZXR3b3JrTG9hZENsaWVudC5oICovLAogCQkJCTgzOTE0OTYzMUJFQTgz
ODUwMEQyRDk1MyAvKiBOZXR3b3JrTG9hZFBhcmFtZXRlcnMuaCAqLywKKwkJCQlFNDdGQzg5RDI1
QjgzMzEzMDA1NDk1RkMgLyogTmV0d29ya0xvYWRTY2hlZHVsZXIuY3BwICovLAorCQkJCUU0N0ZD
ODlGMjVCODMzMUMwMDU0OTVGQyAvKiBOZXR3b3JrTG9hZFNjaGVkdWxlci5oICovLAogCQkJCTUx
MENDN0RGMTYxMzhFMjkwMEQwM0VEMyAvKiBOZXR3b3JrUHJvY2Vzcy5jcHAgKi8sCiAJCQkJNTEw
Q0M3RTAxNjEzOEUyOTAwRDAzRUQzIC8qIE5ldHdvcmtQcm9jZXNzLmggKi8sCiAJCQkJNTFBOEE2
MTcxNjI3RjVCQjAwMEQ5MEU5IC8qIE5ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluICovLApAQCAt
MTIwOTEsNiArMTIwOTYsNyBAQAogCQkJCTkzQTg4QjMzMUJDNkU5Q0QwMEFCQTVDMiAvKiBXZWJI
aXRUZXN0UmVzdWx0RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjQ0REZFQjIxRTlFNzUyRjAw
MzhEMTk2IC8qIFdlYkljb25VdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMjYxMTYx
MjE0MDU0RjQwMDA4MDZFNyAvKiBXZWJJREJDb25uZWN0aW9uVG9DbGllbnQuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUU0N0ZDOEEwMjVCODMzMUMwMDU0OTVGQyAvKiBOZXR3b3JrTG9hZFNjaGVkdWxl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE0MTI5OTQxQzY0MjhCQjAwNTlFNzE0IC8qIFdlYklE
QkNvbm5lY3Rpb25Ub1NlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEwNTIzNzQxQzczRDM4
QjAwNzk5M0NCIC8qIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlck1lc3NhZ2VzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5MzNFODM1NTIzQTA3QzA2MDBERUYyODkgLyogV2ViSURCU2VydmVyLmggaW4g
SGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYkxvYWRlclN0cmF0ZWd5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYkxvYWRlclN0cmF0ZWd5LmNwcAppbmRleCA2OWRlYTc0OTNlMjYuLjdjNTc2OGE1YjhmMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3Ry
YXRlZ3kuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRl
clN0cmF0ZWd5LmNwcApAQCAtODUxLDYgKzg1MSwyMiBAQCBib29sIFdlYkxvYWRlclN0cmF0ZWd5
OjpoYXZlUGVyZm9ybWVkU2VjdXJpdHlDaGVja3MoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cAogICAgIHJldHVybiBmYWxzZTsKIH0KIAordm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c2V0UmVz
b3VyY2VMb2FkU2NoZWR1bGluZ01vZGUoV2ViQ29yZTo6UGFnZSYgcGFnZSwgV2ViQ29yZTo6TG9h
ZFNjaGVkdWxpbmdNb2RlIG1vZGUpCit7CisgICAgYXV0byYgY29ubmVjdGlvbiA9IFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rp
b24oKTsKKyAgICBjb25uZWN0aW9uLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpTZXRSZXNvdXJjZUxvYWRTY2hlZHVsaW5nTW9kZShXZWJQYWdlOjpmcm9tQ29y
ZVBhZ2UocGFnZSkuaWRlbnRpZmllcigpLCBtb2RlKSwgMCk7Cit9CisKK3ZvaWQgV2ViTG9hZGVy
U3RyYXRlZ3k6OnByaW9yaXRpemVSZXNvdXJjZUxvYWRzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpT
dWJyZXNvdXJjZUxvYWRlcio+JiByZXNvdXJjZXMpCit7CisgICAgYXV0byBpZGVudGlmaWVycyA9
IHJlc291cmNlcy5tYXAoW10oYXV0byogbG9hZGVyKSAtPiBSZXNvdXJjZUxvYWRJZGVudGlmaWVy
IHsKKyAgICAgICAgcmV0dXJuIGxvYWRlci0+aWRlbnRpZmllcigpOworICAgIH0pOworCisgICAg
YXV0byYgY29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKTsKKyAgICBjb25uZWN0aW9uLnNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQcmlvcml0aXplUmVzb3VyY2VM
b2FkcyhpZGVudGlmaWVycyksIDApOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI3Vu
ZGVmIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oCmluZGV4IDlkOTg4NDE4M2VjOS4uMDRk
ZjQ4ZmVkMzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJMb2FkZXJTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYkxvYWRlclN0cmF0ZWd5LmgKQEAgLTExNCw2ICsxMTQsOSBAQCBwcml2YXRlOgogCiAgICAg
dm9pZCBpc1Jlc291cmNlTG9hZEZpbmlzaGVkKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7CiAKKyAgICB2b2lkIHNldFJlc291
cmNlTG9hZFNjaGVkdWxpbmdNb2RlKFdlYkNvcmU6OlBhZ2UmLCBXZWJDb3JlOjpMb2FkU2NoZWR1
bGluZ01vZGUpIGZpbmFsOworICAgIHZvaWQgcHJpb3JpdGl6ZVJlc291cmNlTG9hZHMoY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyKj4mKSBmaW5hbDsKKwogICAgIFZlY3Rv
cjx1aW50NjRfdD4gb25nb2luZ0xvYWRzKCkgY29uc3QgZmluYWwKICAgICB7CiAgICAgICAgIHJl
dHVybiBXVEY6Om1hcChtX3dlYlJlc291cmNlTG9hZGVycywgW10oYXV0byYmIGtleVZhbHVlKSAt
PiB1aW50NjRfdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCmluZGV4IDllNTA5MTA0NDc1OS4uZDBmYTBjMjIxZmI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTQwOSw5ICsxNDA5LDcgQEAgdm9p
ZCBXZWJQYWdlOjpjbG9zZSgpCiAKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcs
ICJjbG9zZToiKTsKIAotI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCku
Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpDbGVhclBhZ2VTcGVjaWZpY0RhdGFGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKG1faWRlbnRp
ZmllciksIDApOwotI2VuZGlmCisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDbGVhclBhZ2VTcGVjaWZpY0RhdGEobV9pZGVudGlm
aWVyKSwgMCk7CiAKICAgICBtX2lzQ2xvc2VkID0gdHJ1ZTsKIAo=
</data>
<flag name="review"
          id="436394"
          type_id="1"
          status="+"
          setter="ggaren"
    />
    <flag name="commit-queue"
          id="436405"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418522</attachid>
            <date>2021-01-27 03:26:48 -0800</date>
            <delta_ts>2021-01-27 04:39:35 -0800</delta_ts>
            <desc>patch</desc>
            <filename>load-scheduler-10.patch</filename>
            <type>text/plain</type>
            <size>50666</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggNDkyOGU1NGU1MTg4Li4wMTJlNzI0YmQ1YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIw
MjEtMDEtMjUgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgorCisgICAgICAgIElt
cGxlbWVudCB2aXNpYmlsaXR5IGJhc2VkIHJlc291cmNlIGxvYWQgc2NoZWR1bGluZyBmb3IgbG93
IHByaW9yaXR5IHJlc291cmNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjIwNzI4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmYgR2FyZW4uCisK
KyAgICAgICAgKiBTY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZlcmVuY2VzSW50ZXJuYWwueWFt
bDoKKworICAgICAgICBBZGQgYW4gaW50ZXJuYWwgc2V0dGluZywgZGVmYXVsdCB0byBvZmYgZm9y
IG5vdy4KKwogMjAyMS0wMS0yNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAg
ICAgICAgIFN1cHBvcnQgQWJvcnRTaWduYWwgaW4gYWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMgdG8g
dW5zdWJzY3JpYmUgZnJvbSBldmVudHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvU2NyaXB0cy9Q
cmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwgYi9Tb3VyY2UvV1RGL1Njcmlw
dHMvUHJlZmVyZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55YW1sCmluZGV4IGI0YjY0ZTFh
NWI2NS4uOTZhMDZmNjg1ZDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1NjcmlwdHMvUHJlZmVy
ZW5jZXMvV2ViUHJlZmVyZW5jZXNJbnRlcm5hbC55YW1sCisrKyBiL1NvdXJjZS9XVEYvU2NyaXB0
cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0ludGVybmFsLnlhbWwKQEAgLTU5OSw2ICs1OTks
MTggQEAgUHJlZml4ZWRXZWJBdWRpb0VuYWJsZWQ6CiAgICAgV2ViQ29yZToKICAgICAgIGRlZmF1
bHQ6IGZhbHNlCiAKK1Jlc291cmNlTG9hZFNjaGVkdWxpbmdFbmFibGVkOgorICB0eXBlOiBib29s
CisgIGh1bWFuUmVhZGFibGVOYW1lOiAiUmVzb3VyY2UgTG9hZCBTY2hlZHVsaW5nIgorICBodW1h
blJlYWRhYmxlRGVzY3JpcHRpb246ICJOZXR3b3JrIHByb2Nlc3Mgc2lkZSBwcmlvcml0eSBhbmQg
dmlzaWJpbGl0eSBiYXNlZCByZXNvdXJjZSBsb2FkIHNjaGVkdWxpbmciCisgIGRlZmF1bHRWYWx1
ZToKKyAgICBXZWJLaXRMZWdhY3k6CisgICAgICBkZWZhdWx0OiBmYWxzZQorICAgIFdlYktpdDoK
KyAgICAgIGRlZmF1bHQ6IGZhbHNlCisgICAgV2ViQ29yZToKKyAgICAgIGRlZmF1bHQ6IGZhbHNl
CisKICMgRklYTUU6IFRoaXMgaXMgbm90IHJlbGV2ZW50IGZvciBXZWJLaXRMZWdhY3ksIHNvIHNo
b3VsZCBiZSBleGNsdWRlZCBmcm9tIFdlYktpdExlZ2FjeSBlbnRpcmVseS4KIFJlc3RyaWN0ZWRI
VFRQUmVzcG9uc2VBY2Nlc3M6CiAgIHR5cGU6IGJvb2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzZjEzNmNhYzQ4
OGYuLmI0ZTViZWM3MzlkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDIxLTAxLTI1
ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQg
dmlzaWJpbGl0eSBiYXNlZCByZXNvdXJjZSBsb2FkIHNjaGVkdWxpbmcgZm9yIGxvdyBwcmlvcml0
eSByZXNvdXJjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyMDcyOAorCisgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmIEdhcmVuLgorCisgICAgICAg
IFRyYWNrIGxvYWQgc2NoZWR1bGluZyBtb2RlIGR1cmluZyBvbiBwZXIgcGFnZSBiYXNpcy4KKyAg
ICAgICAgQWRkIHN1cHBvcnQgZm9yIHByaW9yaXRpemluZyByZXNvdXJjZXMgYmFzZWQgb24gdGhl
aXIgdmlzaWJpbGl0eS4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGxvYWRlci9Mb2FkZXJT
dHJhdGVneS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2FkZXJTdHJhdGVneTo6c2V0UmVzb3Vy
Y2VMb2FkU2NoZWR1bGluZ01vZGUpOgorICAgICAgICAoV2ViQ29yZTo6TG9hZGVyU3RyYXRlZ3k6
OnByaW9yaXRpemVSZXNvdXJjZUxvYWRzKToKKyAgICAgICAgKiBsb2FkZXIvTG9hZGVyU3RyYXRl
Z3kuaDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6
ZGlkU3RhcnRQcm92aXNpb25hbExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6ZGlkRmlu
aXNoTG9hZCk6CisKKyAgICAgICAgU2hlZHVsZWQgbW9kZXMgaXMgaXMgZGlzYWJsZWQgYXQgbGF0
ZXN0IHdoZW4gdGhlIGxvYWQgY29tcGxldGVzLgorCisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpk
b0FmdGVyVXBkYXRlUmVuZGVyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnByaW9yaXRp
emVWaXNpYmxlUmVzb3VyY2VzKToKKworICAgICAgICBBZnRlciByZW5kZXJpbmcgdXBkYXRlLCBp
ZiBpbiBzY2hlZHVsZWQgbW9kZSwgY2hlY2sgdGhlIHZpc2liaWxpdHkgc3RhdHVzIG9mIGltYWdl
cyByZXNvdXJjZXMuCisgICAgICAgIFByaW9yaXRpemUgbG9hZHMgZm9yIHZpc2libGUgcmVzb3Vy
Y2VzLgorICAgICAgICBNb3ZlIG91dCBvZiB0aGUgc2hjZWR1bGVkIG1vZGUgaWYgdGhlIGRvY3Vt
ZW50IGlzIGZ1bGx5IHBhcnNlZCBhbmQgYWxsIHZpc2liaWxlIGxvYWRzIGFyZSBjb21wbGV0ZWQu
CisKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldExvYWRTY2hlZHVsaW5nTW9kZSk6CisgICAg
ICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpsb2FkU2NoZWR1bGlu
Z01vZGUgY29uc3QpOgorCiAyMDIxLTAxLTI2ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5j
b20+CiAKICAgICAgICAgW0xGQ11bSUZDXSBJbmNvcnJlY3QgaW5saW5lIGJveCB3aWR0aCB3aXRo
IGhvcml6b250YWwgYWxpZ25tZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJz
LmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCBlZDA2NmMxMWNhYzIu
LmE1ODA2MDllNmQwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC03NzUsNiArNzc1LDcgQEAgc2V0
KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIGxvYWRlci9JbWFnZUxvYWRl
ci5oCiAgICAgbG9hZGVyL0xpbmtMb2FkZXIuaAogICAgIGxvYWRlci9MaW5rTG9hZGVyQ2xpZW50
LmgKKyAgICBsb2FkZXIvTG9hZFNjaGVkdWxpbmdNb2RlLmgKICAgICBsb2FkZXIvTG9hZFRpbWlu
Zy5oCiAgICAgbG9hZGVyL0xvYWRlclN0cmF0ZWd5LmgKICAgICBsb2FkZXIvTWVkaWFSZXNvdXJj
ZUxvYWRlci5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggZGJlZDc0NjYzZjFmLi5iYjAxY2ExNzUyMTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTUxNDYsNiAr
NTE0Niw3IEBACiAJCUU0N0MzOTMyMUZFNkUxMDUwMEJCQkM2QiAvKiBSZW5kZXJUcmVlQnVpbGRl
ckxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0
N0MzOTI4MUZFNkUwREQwMEJCQkM2QiAvKiBSZW5kZXJUcmVlQnVpbGRlckxpc3QuaCAqLzsgfTsK
IAkJRTQ3QzM5MzMxRkU2RTEwODAwQkJCQzZCIC8qIFJlbmRlclRyZWVCdWlsZGVyTXVsdGlDb2x1
bW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0N0Mz
OTI3MUZFNkUwREMwMEJCQkM2QiAvKiBSZW5kZXJUcmVlQnVpbGRlck11bHRpQ29sdW1uLmggKi87
IH07CiAJCUU0N0UyNzY1MTYwMzZFRDIwMEVFMkFGQiAvKiBFeHRlbnNpb25TdHlsZVNoZWV0cy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ3RTI3NjQx
NjAzNkVEMjAwRUUyQUZCIC8qIEV4dGVuc2lvblN0eWxlU2hlZXRzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTQ3RkM4QTMyNUI4NEQ3MjAwNTQ5
NUZDIC8qIExvYWRTY2hlZHVsaW5nTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTQ3RkM4QTEyNUI4NEQ3MTAwNTQ5NUZDIC8qIExvYWRTY2hlZHVs
aW5nTW9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUU0ODEzN0I5MURCM0I1MjYwMDVDNTlCRiAvKiBTdHlsZVZhbGlkaXR5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDgxMzdCODFEQjNCNTI2MDA1
QzU5QkYgLyogU3R5bGVWYWxpZGl0eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUU0ODYzQ0ZFMjM4NDJFOUUwMDk3MjE1OCAvKiBSdWxlRGF0YS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ4NjNDRkQy
Mzg0MkU5RTAwOTcyMTU4IC8qIFJ1bGVEYXRhLmggKi87IH07CiAJCUU0OTQ2RUFGMTU2RTY0REQw
MEQzMjk3RiAvKiBTdHlsZVJ1bGVJbXBvcnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEU0OTQ2RUFEMTU2RTY0REQwMEQzMjk3RiAvKiBTdHlsZVJ1bGVJ
bXBvcnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpA
QCAtMTYzMzcsNiArMTYzMzgsNyBAQAogCQlFNDdDMzkyQzFGRTZFMERGMDBCQkJDNkIgLyogUmVu
ZGVyVHJlZVVwZGF0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVy
VHJlZVVwZGF0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ3RTI3NjQxNjAz
NkVEMjAwRUUyQUZCIC8qIEV4dGVuc2lvblN0eWxlU2hlZXRzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEV4dGVuc2lvblN0eWxlU2hlZXRzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUU0N0UyNzY3MTYwMzZFREMwMEVFMkFGQiAvKiBFeHRlbnNpb25TdHlsZVNo
ZWV0cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeHRlbnNpb25T
dHlsZVNoZWV0cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUU0N0ZDOEExMjVC
ODRENzEwMDU0OTVGQyAvKiBMb2FkU2NoZWR1bGluZ01vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTG9hZFNjaGVkdWxpbmdNb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUU0ODEzN0I4MURCM0I1MjYwMDVDNTlCRiAvKiBTdHlsZVZhbGlkaXR5LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0eWxlVmFsaWRpdHkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ4NjNDRkEyMzg0MkU4NzAwOTcyMTU4IC8qIFJ1bGVEYXRh
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJ1bGVEYXRhLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ4NjNDRkQyMzg0MkU5RTAwOTcyMTU4IC8q
IFJ1bGVEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJ1bGVEYXRhLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNzM5OCw2ICsyNzQwMCw3IEBACiAJCQkJ
NTFFNjgyMEYxNjM4NzMwMjAwM0JCRjNDIC8qIExvYWRlclN0cmF0ZWd5LmggKi8sCiAJCQkJODYx
QzJFQTMxM0ZCNEZERDAwMDYyQUJCIC8qIExvYWRUaW1pbmcuY3BwICovLAogCQkJCThBMTJFMzVD
MTFGQTMzMjgwMDI1ODM2QSAvKiBMb2FkVGltaW5nLmggKi8sCisJCQkJRTQ3RkM4QTEyNUI4NEQ3
MTAwNTQ5NUZDIC8qIExvYWRTY2hlZHVsaW5nTW9kZS5oICovLAogCQkJCUNFRUZDRDc3MTlEQjMx
RjcwMDM4NzZENyAvKiBNZWRpYVJlc291cmNlTG9hZGVyLmNwcCAqLywKIAkJCQlDRUVGQ0Q3ODE5
REIzMUY3MDAzODc2RDcgLyogTWVkaWFSZXNvdXJjZUxvYWRlci5oICovLAogCQkJCTUyRjEwODYy
MTYyQjZEODIwMDlBQzgxRSAvKiBNaXhlZENvbnRlbnRDaGVja2VyLmNwcCAqLywKQEAgLTM0OTQ0
LDYgKzM0OTQ3LDcgQEAKIAkJCQk3MUE1N0RGMjE1NEJFMjVDMDAwOUQxMjAgLyogU1ZHUGF0aFV0
aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBODgwRDAwQkYyMjAwNzFCNzgyIC8q
IFNWR1BhdHRlcm5FbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0U1OEQ0QTFERDY0QTVC
MDAxMjg1NTIgLyogU1ZHUG9pbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUU0N0ZDOEEzMjVCODRE
NzIwMDU0OTVGQyAvKiBMb2FkU2NoZWR1bGluZ01vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUIy
MjI3QThDMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQb2ludExpc3QuaCBpbiBIZWFkZXJzICovLAog
CQkJCUIyMjI3QThGMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQb2x5RWxlbWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQjIyMjdBOTEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BvbHlnb25FbGVtZW50
LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2Fk
U2NoZWR1bGluZ01vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkU2NoZWR1bGluZ01v
ZGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjcwYmU4MGNkOGQz
OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkU2NoZWR1bGlu
Z01vZGUuaApAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0g
Y2xhc3MgTG9hZFNjaGVkdWxpbmdNb2RlIDogdWludDhfdCB7CisgICAgRGlyZWN0LCAvLyBBbGwg
bG9hZHMgYXJlIGlzc3VlZCBkaXJlY3RseSB0byBuZXR3b3JrIGxheWVyLgorICAgIFByaW9yaXRp
emVkIC8vIExvdyBwcmlvcml0eSBsb2FkcyBtYXkgZ2V0IGRlbGF5ZWQgaW4gZmF2b3Igb2YgaGln
aGVyIHByaW9yaXR5IG9uZXMuCit9OworCit9CisKK25hbWVzcGFjZSBXVEYgewordGVtcGxhdGU8
PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpMb2FkU2NoZWR1bGluZ01vZGU+IHsKKyAgICB1
c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpMb2FkU2NoZWR1bGlu
Z01vZGUsCisgICAgICAgIFdlYkNvcmU6OkxvYWRTY2hlZHVsaW5nTW9kZTo6RGlyZWN0LAorICAg
ICAgICBXZWJDb3JlOjpMb2FkU2NoZWR1bGluZ01vZGU6OlByaW9yaXRpemVkCisgICAgPjsKK307
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0ZWd5LmNwcAppbmRleCA4YzYzNjFm
NjdjMzkuLjhiNTU4MWRiNGYyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xv
YWRlclN0cmF0ZWd5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRl
Z3kuY3BwCkBAIC0zMiw2ICszMiwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIExvYWRlclN0
cmF0ZWd5Ojp+TG9hZGVyU3RyYXRlZ3koKSA9IGRlZmF1bHQ7CiAKKwordm9pZCBMb2FkZXJTdHJh
dGVneTo6c2V0UmVzb3VyY2VMb2FkU2NoZWR1bGluZ01vZGUoUGFnZSYsIExvYWRTY2hlZHVsaW5n
TW9kZSkKK3sKK30KKwordm9pZCBMb2FkZXJTdHJhdGVneTo6cHJpb3JpdGl6ZVJlc291cmNlTG9h
ZHMoY29uc3QgVmVjdG9yPFN1YnJlc291cmNlTG9hZGVyKj4mKQoreworfQorCiBSZXNvdXJjZVJl
c3BvbnNlIExvYWRlclN0cmF0ZWd5OjpyZXNwb25zZUZyb21SZXNvdXJjZUxvYWRJZGVudGlmaWVy
KHVpbnQ2NF90IC8qIHJlc291cmNlTG9hZElkZW50aWZpZXIgKi8pCiB7CiAgICAgcmV0dXJuIHsg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVneS5oIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0ZWd5LmgKaW5kZXggNjA5N2QyNjUwNzY2
Li4xYTQyMmQ3NWVmNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJT
dHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVneS5oCkBA
IC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkZldGNoT3B0aW9ucy5o
IgorI2luY2x1ZGUgIkxvYWRTY2hlZHVsaW5nTW9kZS5oIgogI2luY2x1ZGUgIlBhZ2VJZGVudGlm
aWVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkUHJpb3JpdHkuaCIKICNpbmNsdWRlICJSZXNv
dXJjZUxvYWRlck9wdGlvbnMuaCIKQEAgLTY5LDYgKzcwLDkgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBzdXNwZW5kUGVuZGluZ1JlcXVlc3RzKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBy
ZXN1bWVQZW5kaW5nUmVxdWVzdHMoKSA9IDA7CiAKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UmVzb3Vy
Y2VMb2FkU2NoZWR1bGluZ01vZGUoUGFnZSYsIExvYWRTY2hlZHVsaW5nTW9kZSk7CisgICAgdmly
dHVhbCB2b2lkIHByaW9yaXRpemVSZXNvdXJjZUxvYWRzKGNvbnN0IFZlY3RvcjxTdWJyZXNvdXJj
ZUxvYWRlcio+Jik7CisKICAgICB2aXJ0dWFsIGJvb2wgdXNlUGluZ0xvYWQoKSBjb25zdCB7IHJl
dHVybiB0cnVlOyB9CiAgICAgdXNpbmcgUGluZ0xvYWRDb21wbGV0aW9uSGFuZGxlciA9IFdURjo6
RnVuY3Rpb248dm9pZChjb25zdCBSZXNvdXJjZUVycm9yJiwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYpPjsKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRQaW5nTG9hZChGcmFtZSYsIFJlc291cmNlUmVx
dWVzdCYsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIGNvbnN0
IEZldGNoT3B0aW9ucyYsIENvbnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb24sIFBpbmdMb2Fk
Q29tcGxldGlvbkhhbmRsZXImJiA9IHsgfSkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggNmZj
NGViZjA4ZTk1Li43NDRmMzA3MDUxZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMjksNiArMjks
NyBAQAogI2luY2x1ZGUgIkJhY2tGb3J3YXJkQ2xpZW50LmgiCiAjaW5jbHVkZSAiQmFja0Zvcndh
cmRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiQ2FjaGVTdG9yYWdlUHJvdmlkZXIuaCIKKyNpbmNs
dWRlICJDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCiAj
aW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCkBAIC0xMjMyLDYg
KzEyMzMsOSBAQCB2b2lkIFBhZ2U6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCkKIHsKICAgICBp
ZiAobV9wZXJmb3JtYW5jZU1vbml0b3IpCiAgICAgICAgIG1fcGVyZm9ybWFuY2VNb25pdG9yLT5k
aWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOworCisgICAgaWYgKG1fc2V0dGluZ3MtPnJlc291cmNl
TG9hZFNjaGVkdWxpbmdFbmFibGVkKCkpCisgICAgICAgIHNldExvYWRTY2hlZHVsaW5nTW9kZShM
b2FkU2NoZWR1bGluZ01vZGU6OlByaW9yaXRpemVkKTsKIH0KIAogdm9pZCBQYWdlOjpkaWRDb21t
aXRMb2FkKCkKQEAgLTEyNDksNiArMTI1Myw4IEBAIHZvaWQgUGFnZTo6ZGlkRmluaXNoTG9hZCgp
CiAKICAgICBpZiAobV9wZXJmb3JtYW5jZU1vbml0b3IpCiAgICAgICAgIG1fcGVyZm9ybWFuY2VN
b25pdG9yLT5kaWRGaW5pc2hMb2FkKCk7CisKKyAgICBzZXRMb2FkU2NoZWR1bGluZ01vZGUoTG9h
ZFNjaGVkdWxpbmdNb2RlOjpEaXJlY3QpOwogfQogCiBib29sIFBhZ2U6OmlzT25seU5vblV0aWxp
dHlQYWdlKCkgY29uc3QKQEAgLTE2MDcsNiArMTYxMyw4IEBAIHZvaWQgUGFnZTo6ZG9BZnRlclVw
ZGF0ZVJlbmRlcmluZygpCiAgICAgfSk7CiAjZW5kaWYKIAorICAgIHByaW9yaXRpemVWaXNpYmxl
UmVzb3VyY2VzKCk7CisKICAgICBtX3JlbmRlcmluZ1VwZGF0ZVJlbWFpbmluZ1N0ZXBzLmxhc3Qo
KS5yZW1vdmUoUmVuZGVyaW5nVXBkYXRlU3RlcDo6RXZlbnRSZWdpb25VcGRhdGUpOwogCiAjaWYg
RU5BQkxFKElPU19UT1VDSF9FVkVOVFMpCkBAIC0xNjc2LDYgKzE2ODQsNDQgQEAgdm9pZCBQYWdl
OjpyZW5kZXJpbmdVcGRhdGVDb21wbGV0ZWQoKQogICAgIH0KIH0KIAordm9pZCBQYWdlOjpwcmlv
cml0aXplVmlzaWJsZVJlc291cmNlcygpCit7CisgICAgaWYgKGxvYWRTY2hlZHVsaW5nTW9kZSgp
ID09IExvYWRTY2hlZHVsaW5nTW9kZTo6RGlyZWN0KQorICAgICAgICByZXR1cm47CisgICAgaWYg
KCFtYWluRnJhbWUoKS5kb2N1bWVudCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBWZWN0b3I8
Q2FjaGVkUmVzb3VyY2UqPiB0b1ByaW9yaXRpemU7CisKKyAgICBmb3JFYWNoRG9jdW1lbnQoWyZd
IChEb2N1bWVudCYgZG9jdW1lbnQpIHsKKyAgICAgICAgdG9Qcmlvcml0aXplLmFwcGVuZFZlY3Rv
cihkb2N1bWVudC5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnZpc2libGVSZXNvdXJjZXNUb1ByaW9y
aXRpemUoKSk7CisgICAgfSk7CisKKyAgICBpZiAodG9Qcmlvcml0aXplLmlzRW1wdHkoKSkgewor
ICAgICAgICBpZiAoIW1haW5GcmFtZSgpLmRvY3VtZW50KCktPnBhcnNpbmcoKSkgeworICAgICAg
ICAgICAgLy8gQWxsIHZpc2libGUgcmVzb3VyY2VzIGhhdmUgYmVlbiBsb2FkZWQgYW5kIHdlIGFy
ZSBkb25lIHdpdGggcGFyc2luZy4gU3RvcCBzY2hlZHVsaW5nLgorICAgICAgICAgICAgc2V0TG9h
ZFNjaGVkdWxpbmdNb2RlKExvYWRTY2hlZHVsaW5nTW9kZTo6RGlyZWN0KTsKKyAgICAgICAgfQor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byByZXNvdXJjZUxvYWRlcnMgPSB0b1By
aW9yaXRpemUubWFwKFtdKGF1dG8qIHJlc291cmNlKSB7CisgICAgICAgIHJldHVybiByZXNvdXJj
ZS0+bG9hZGVyKCk7CisgICAgfSk7CisKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVy
U3RyYXRlZ3koKS0+cHJpb3JpdGl6ZVJlc291cmNlTG9hZHMocmVzb3VyY2VMb2FkZXJzKTsKK30K
Kwordm9pZCBQYWdlOjpzZXRMb2FkU2NoZWR1bGluZ01vZGUoTG9hZFNjaGVkdWxpbmdNb2RlIG1v
ZGUpCit7CisgICAgaWYgKG1fbG9hZFNjaGVkdWxpbmdNb2RlID09IG1vZGUpCisgICAgICAgIHJl
dHVybjsKKworICAgIG1fbG9hZFNjaGVkdWxpbmdNb2RlID0gbW9kZTsKKworICAgIHBsYXRmb3Jt
U3RyYXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5zZXRSZXNvdXJjZUxvYWRTY2hlZHVsaW5n
TW9kZSgqdGhpcywgbV9sb2FkU2NoZWR1bGluZ01vZGUpOworfQorCiB2b2lkIFBhZ2U6OnN1c3Bl
bmRTY3JpcHRlZEFuaW1hdGlvbnMoKQogewogICAgIG1fc2NyaXB0ZWRBbmltYXRpb25zU3VzcGVu
ZGVkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggNmVhNWE5NTc2NGY3Li4xYjA4MWQ3MDI4NGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiTGF5b3V0TWlsZXN0
b25lLmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVjdC5oIgogI2luY2x1ZGUgIkxlbmd0aEJveC5oIgor
I2luY2x1ZGUgIkxvYWRTY2hlZHVsaW5nTW9kZS5oIgogI2luY2x1ZGUgIk1lZGlhUHJvZHVjZXIu
aCIKICNpbmNsdWRlICJNZWRpYVNlc3Npb25Hcm91cElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJQ
YWdpbmF0aW9uLmgiCkBAIC04MzMsNiArODM0LDkgQEAgcHVibGljOgogICAgIGJvb2wgdGV4dElu
dGVyYWN0aW9uRW5hYmxlZCgpIHsgcmV0dXJuIG1fdGV4dEludGVyYWN0aW9uRW5hYmxlZDsgfQog
ICAgIHZvaWQgc2V0VGV4dEludGVyYWN0aW9uRW5hYmxlZChib29sIHZhbHVlKSB7IG1fdGV4dElu
dGVyYWN0aW9uRW5hYmxlZCA9IHZhbHVlOyB9CiAKKyAgICBMb2FkU2NoZWR1bGluZ01vZGUgbG9h
ZFNjaGVkdWxpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9sb2FkU2NoZWR1bGluZ01vZGU7IH0K
KyAgICB2b2lkIHNldExvYWRTY2hlZHVsaW5nTW9kZShMb2FkU2NoZWR1bGluZ01vZGUpOworCiBw
cml2YXRlOgogICAgIHN0cnVjdCBOYXZpZ2F0aW9uIHsKICAgICAgICAgUmVnaXN0cmFibGVEb21h
aW4gZG9tYWluOwpAQCAtODcyLDYgKzg3Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZW5kZXJp
bmdVcGRhdGVDb21wbGV0ZWQoKTsKICAgICB2b2lkIGNvbXB1dGVVbmZ1bGZpbGxlZFJlbmRlcmlu
Z1N0ZXBzKE9wdGlvblNldDxSZW5kZXJpbmdVcGRhdGVTdGVwPik7CiAgICAgdm9pZCBzY2hlZHVs
ZVJlbmRlcmluZ1VwZGF0ZUludGVybmFsKCk7CisgICAgdm9pZCBwcmlvcml0aXplVmlzaWJsZVJl
c291cmNlcygpOwogCiAgICAgUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyJiByZW5kZXJpbmdVcGRh
dGVTY2hlZHVsZXIoKTsKIApAQCAtMTEzNCw2ICsxMTM5LDcgQEAgcHJpdmF0ZToKICAgICBib29s
IG1fbG9hZHNGcm9tTmV0d29yayB7IHRydWUgfTsKICAgICBib29sIG1fY2FuVXNlQ3JlZGVudGlh
bFN0b3JhZ2UgeyB0cnVlIH07CiAgICAgU2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llQmxvY2tp
bmcgbV9zaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyB7IFNob3VsZFJlbGF4VGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nOjpObyB9OworICAgIExvYWRTY2hlZHVsaW5nTW9kZSBtX2xv
YWRTY2hlZHVsaW5nTW9kZSB7IExvYWRTY2hlZHVsaW5nTW9kZTo6RGlyZWN0IH07CiAgICAgYm9v
bCBtX2hhc0JlZW5Ob3RpZmllZFRvSW5qZWN0VXNlclNjcmlwdHMgeyBmYWxzZSB9OwogCiAgICAg
TW9ub3RvbmljVGltZSBtX2xhc3RSZW5kZXJpbmdVcGRhdGVUaW1lc3RhbXA7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4
IGJhZDFkNmFkZDBhYS4uOWQ1OTQ0ZGZjMzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisy
MDIxLTAxLTI1ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBJ
bXBsZW1lbnQgdmlzaWJpbGl0eSBiYXNlZCByZXNvdXJjZSBsb2FkIHNjaGVkdWxpbmcgZm9yIGxv
dyBwcmlvcml0eSByZXNvdXJjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyMDcyOAorCisgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmIEdhcmVuLgor
CisgICAgICAgIEFkZCBhIHNpbXBsZSBuZXR3b3JrIHByb2Nlc3Mgc2lkZSByZXNvdXJjZSBsb2Fk
IHNjaGVkdWxlci4gV2hlbiBhY3RpdmUgaXQgbGltaXRzIHRoZSBudW1iZXIgb2YgbG93IHByaW9y
aXR5IHJlc291cmNlIGxvYWRzCisgICAgICAgIChtb3N0bHkgaW1hZ2VzKSB0aGF0IGFyZSBwYXNz
ZWQgdG8gbmV0d29yayBsYXllci4gVGhlIGN1cnJlbnQgbGltaXQgaXMgNiBwZXIgaG9zdCwgcmVk
dWNlZCBieSBhbnkgb25nb2luZyBoaWdoZXIgcHJpb3JpdHkKKyAgICAgICAgbG9hZHMuIFRoaXMg
cmVkdWNlcyBpbXBhY3Qgb2YgbG93IHByaW9yaXR5IGxvYWRzIHRvIGhpZ2hlciBwcmlvcml0eSBv
bmVzLCBlc3BjaWFsbHkgb24gSFRUUC8yLgorCisgICAgICAgIFRoZSBzY2hlZHVsZXIgYWxzbyBz
dXBwb3J0cyByZXByaW9yaXRpemluZyBsb2Fkcy4gVGhpcyBpcyB1c2VkIHRvIGxldCBpbWFnZXMg
Y3VycmVudGx5IGluIHRoZSB2aWV3cG9ydCB0byBza2lwIHRoZSBxdWV1ZQorICAgICAgICBhbmQg
c3RhcnQgdGhlaXIgbG9hZHMgZmFzdGVyLgorCisgICAgICAgIFRoZSBmZWF0dXJlIGlzIG5vdCBl
bmFibGVkIGluIHRoaXMgcGF0Y2guCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9h
ZHMvRG93bmxvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZDo6Y2FuY2VsKToKKyAg
ICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktp
dDo6RG93bmxvYWQ6OmRpZEZpbmlzaCk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpkaWRG
YWlsKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpjbGVhclBhZ2VTcGVjaWZpY0RhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6cmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldFJlc291cmNlTG9hZFNj
aGVkdWxpbmdNb2RlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OnByaW9yaXRpemVSZXNvdXJjZUxvYWRzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNsZWFyUGFnZVNwZWNpZmljRGF0YUZvclJlc291cmNl
TG9hZFN0YXRpc3RpY3MpOiBEZWxldGVkLgorCisgICAgICAgIFJlbmFtZSB0byBjbGVhclBhZ2VT
cGVjaWZpY0RhdGEgYW5kIG1vdmUgb3V0IG9mICNpZi4KKworICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrTG9hZDo6c3RhcnQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6c3RhcnRXaXRo
U2NoZWR1bGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjp+TmV0d29ya0xvYWQp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6ZGlkQ29tcGxldGVXaXRoRXJyb3IpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0xvYWRTY2hlZHVsZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0xvYWRTY2hlZHVsZXI6Okhvc3RDb250ZXh0OjpzY2hlZHVsZSk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtMb2FkU2NoZWR1bGVyOjpIb3N0Q29udGV4dDo6dW5zY2hlZHVsZSk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkU2NoZWR1bGVyOjpIb3N0Q29udGV4dDo6cHJp
b3JpdGl6ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkU2NoZWR1bGVyOjpIb3N0Q29u
dGV4dDo6c3RhcnQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZFNjaGVkdWxlcjo6SG9z
dENvbnRleHQ6On5Ib3N0Q29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkU2No
ZWR1bGVyOjpzY2hlZHVsZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkU2NoZWR1bGVy
Ojp1bnNjaGVkdWxlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWRTY2hlZHVsZXI6OnNl
dFJlc291cmNlTG9hZFNjaGVkdWxpbmdNb2RlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xv
YWRTY2hlZHVsZXI6OnByaW9yaXRpemVMb2Fkcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtM
b2FkU2NoZWR1bGVyOjpjbGVhclBhZ2VEYXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xv
YWRTY2hlZHVsZXI6OmNvbnRleHRGb3JMb2FkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrTG9hZFNjaGVkdWxlci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TG9hZGVyU3RyYXRlZ3kuY3BwLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
c3RhcnROZXR3b3JrTG9hZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Np
b24uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6bmV0d29ya0xvYWRTY2hl
ZHVsZXIpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OlNwZWN1
bGF0aXZlTG9hZCk6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YkxvYWRlclN0cmF0ZWd5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6
OnNldFJlc291cmNlTG9hZFNjaGVkdWxpbmdNb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2ViTG9h
ZGVyU3RyYXRlZ3k6OnByaW9yaXRpemVSZXNvdXJjZUxvYWRzKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNsb3NlKToKKwog
MjAyMS0wMS0yNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQsIHNpbGVuY2UgZGVwcmVjYXRpb24gd2FybmluZyBmb3Igb3VyIG93biBBUEkgdG8g
YWRkcmVzcyBidWlsZCBpc3N1ZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHAKaW5kZXggNjUxZmYyNTRmOTA1Li44ZjkyMTRhZWRi
ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9E
b3dubG9hZC5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAKICNpbmNsdWRlICJOZXR3b3JrRGF0YVRhc2tD
b2NvYS5oIgogI2VuZGlmCiAKLSNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChmbXQsIC4u
LikgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdvcmssICIl
cCAtIERvd25sb2FkOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKKyNkZWZpbmUgRE9XTkxP
QURfUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYoaXNBbHdh
eXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdvcmssICIlcCAtIERvd25sb2FkOjoiIGZtdCwgdGhp
cywgIyNfX1ZBX0FSR1NfXykKIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKQEAgLTk4LDcgKzk4LDcgQEAgdm9pZCBEb3dubG9hZDo6Y2FuY2VsKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+JiYgY29tcGwKICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIocmVzdW1lRGF0YSk7CiAgICAgICAgIGlmICghd2Vha1RoaXMg
fHwgbV9pZ25vcmVEaWRGYWlsQ2FsbGJhY2sgPT0gSWdub3JlRGlkRmFpbENhbGxiYWNrOjpObykK
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlk
Q2FuY2VsOiAoaWQgPSAlIiBQUkl1NjQgIikiLCBkb3dubG9hZElEKCkudG9VSW50NjQoKSk7Cisg
ICAgICAgIERPV05MT0FEX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZENhbmNlbDogKGlkID0g
JSIgUFJJdTY0ICIpIiwgZG93bmxvYWRJRCgpLnRvVUludDY0KCkpOwogICAgICAgICBpZiAoYXV0
byBleHRlbnNpb24gPSBzdGQ6OmV4Y2hhbmdlKG1fc2FuZGJveEV4dGVuc2lvbiwgbnVsbHB0cikp
CiAgICAgICAgICAgICBleHRlbnNpb24tPnJldm9rZSgpOwogICAgICAgICBtX2Rvd25sb2FkTWFu
YWdlci5kb3dubG9hZEZpbmlzaGVkKCp0aGlzKTsKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIERv
d25sb2FkOjpkaWRDcmVhdGVEZXN0aW5hdGlvbihjb25zdCBTdHJpbmcmIHBhdGgpCiB2b2lkIERv
d25sb2FkOjpkaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBieXRlc1dyaXR0ZW4sIHVpbnQ2NF90IHRv
dGFsQnl0ZXNXcml0dGVuLCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKQogewog
ICAgIGlmICghbV9oYXNSZWNlaXZlZERhdGEpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRCgiZGlkUmVjZWl2ZURhdGE6IFN0YXJ0ZWQgcmVjZWl2aW5nIGRhdGEgKGlkID0gJSIgUFJJ
dTY0ICIpIiwgZG93bmxvYWRJRCgpLnRvVUludDY0KCkpOworICAgICAgICBET1dOTE9BRF9SRUxF
QVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlRGF0YTogU3RhcnRlZCByZWNlaXZpbmcgZGF0
YSAoaWQgPSAlIiBQUkl1NjQgIikiLCBkb3dubG9hZElEKCkudG9VSW50NjQoKSk7CiAgICAgICAg
IG1faGFzUmVjZWl2ZWREYXRhID0gdHJ1ZTsKICAgICB9CiAgICAgCkBAIC0xNDEsNyArMTQxLDcg
QEAgdm9pZCBEb3dubG9hZDo6ZGlkUmVjZWl2ZURhdGEodWludDY0X3QgYnl0ZXNXcml0dGVuLCB1
aW50NjRfdCB0b3RhbEJ5dGVzV3JpdHRlbiwKIAogdm9pZCBEb3dubG9hZDo6ZGlkRmluaXNoKCkK
IHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRGaW5pc2g6IChpZCA9ICUiIFBSSXU2
NCAiKSIsIGRvd25sb2FkSUQoKS50b1VJbnQ2NCgpKTsKKyAgICBET1dOTE9BRF9SRUxFQVNFX0xP
R19JRl9BTExPV0VEKCJkaWRGaW5pc2g6IChpZCA9ICUiIFBSSXU2NCAiKSIsIGRvd25sb2FkSUQo
KS50b1VJbnQ2NCgpKTsKIAogICAgIHNlbmQoTWVzc2FnZXM6OkRvd25sb2FkUHJveHk6OkRpZEZp
bmlzaCgpKTsKIApAQCAtMTU4LDcgKzE1OCw3IEBAIHZvaWQgRG93bmxvYWQ6OmRpZEZhaWwoY29u
c3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzCiAg
ICAgaWYgKG1faWdub3JlRGlkRmFpbENhbGxiYWNrID09IElnbm9yZURpZEZhaWxDYWxsYmFjazo6
WWVzKQogICAgICAgICByZXR1cm47CiAKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRG
YWlsOiAoaWQgPSAlIiBQUkl1NjQgIiwgaXNUaW1lb3V0ID0gJWQsIGlzQ2FuY2VsbGF0aW9uID0g
JWQsIGVyckNvZGUgPSAlZCkiLAorICAgIERPV05MT0FEX1JFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
ImRpZEZhaWw6IChpZCA9ICUiIFBSSXU2NCAiLCBpc1RpbWVvdXQgPSAlZCwgaXNDYW5jZWxsYXRp
b24gPSAlZCwgZXJyQ29kZSA9ICVkKSIsCiAgICAgICAgIGRvd25sb2FkSUQoKS50b1VJbnQ2NCgp
LCBlcnJvci5pc1RpbWVvdXQoKSwgZXJyb3IuaXNDYW5jZWxsYXRpb24oKSwgZXJyb3IuZXJyb3JD
b2RlKCkpOwogCiAgICAgc2VuZChNZXNzYWdlczo6RG93bmxvYWRQcm94eTo6RGlkRmFpbChlcnJv
ciwgcmVzdW1lRGF0YSkpOwpAQCAtMjAyLDQgKzIwMiw0IEBAIHZvaWQgRG93bmxvYWQ6OnBsYXRm
b3JtRGVzdHJveURvd25sb2FkKCkKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKLSN1bmRlZiBS
RUxFQVNFX0xPR19JRl9BTExPV0VECisjdW5kZWYgRE9XTkxPQURfUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCA2ZmMzYjJkODk1YTcuLjg0Yzkx
M2FkMWMwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTMyLDYgKzMyLDggQEAK
ICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya0NhY2hlLmgiCiAjaW5jbHVk
ZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgorI2luY2x1ZGUgIk5l
dHdvcmtMb2FkLmgiCisjaW5jbHVkZSAiTmV0d29ya0xvYWRTY2hlZHVsZXIuaCIKICNpbmNsdWRl
ICJOZXR3b3JrTUROU1JlZ2lzdGVyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vz
cy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCkBAIC04
NTMsMTcgKzg1NSwyMiBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRD
YXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3NFbmFibGVkKGJvbwogICAgICAgICBsb2FkZXIt
PmRpc2FibGVFeHRyYU5ldHdvcmtMb2FkTWV0cmljc0NhcHR1cmUoKTsKIH0KIAotI2lmIEVOQUJM
RShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpyZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1l
SUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmNsZWFyUGFnZVNwZWNpZmljRGF0YShQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7Cisg
ICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpKQorICAgICAgICBzZXNzaW9u
LT5uZXR3b3JrTG9hZFNjaGVkdWxlcigpLmNsZWFyUGFnZURhdGEocGFnZUlEKTsKKworI2lmIEVO
QUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNz
aW9uID0gbmV0d29ya1Byb2Nlc3MoKS5zdG9yYWdlU2Vzc2lvbihtX3Nlc3Npb25JRCkpCi0gICAg
ICAgIHN0b3JhZ2VTZXNzaW9uLT5yZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUoZnJhbWVJRCwg
cGFnZUlEKTsKKyAgICAgICAgc3RvcmFnZVNlc3Npb24tPmNsZWFyUGFnZVNwZWNpZmljRGF0YUZv
clJlc291cmNlTG9hZFN0YXRpc3RpY3MocGFnZUlEKTsKKyNlbmRpZgogfQogCi12b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjbGVhclBhZ2VTcGVjaWZpY0RhdGFGb3JSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKKyNpZiBFTkFCTEUoUkVTT1VS
Q0VfTE9BRF9TVEFUSVNUSUNTKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
cmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBQYWdl
SWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gbmV0
d29ya1Byb2Nlc3MoKS5zdG9yYWdlU2Vzc2lvbihtX3Nlc3Npb25JRCkpCi0gICAgICAgIHN0b3Jh
Z2VTZXNzaW9uLT5jbGVhclBhZ2VTcGVjaWZpY0RhdGFGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
KHBhZ2VJRCk7CisgICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5yZW1vdmVTdG9yYWdlQWNjZXNzRm9y
RnJhbWUoZnJhbWVJRCwgcGFnZUlEKTsKIH0KIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6bG9nVXNlckludGVyYWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21h
aW4pCkBAIC0xMTcwLDYgKzExNzcsMzMgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6c2V0Q09SU0Rpc2FibGluZ1BhdHRlcm5zKFdlYkNvcmU6OlBhZ2VJZGVudGkKICAgICBu
ZXR3b3JrUHJvY2VzcygpLnNldENPUlNEaXNhYmxpbmdQYXR0ZXJucyhwYWdlSWRlbnRpZmllciwg
V1RGTW92ZShwYXR0ZXJucykpOwogfQogCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpzZXRSZXNvdXJjZUxvYWRTY2hlZHVsaW5nTW9kZShXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciBwYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6TG9hZFNjaGVkdWxpbmdNb2RlIG1vZGUpCit7Cisg
ICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKCk7CisgICAgaWYgKCFzZXNzaW9uKQor
ICAgICAgICByZXR1cm47CisKKyAgICBzZXNzaW9uLT5uZXR3b3JrTG9hZFNjaGVkdWxlcigpLnNl
dFJlc291cmNlTG9hZFNjaGVkdWxpbmdNb2RlKHBhZ2VJZGVudGlmaWVyLCBtb2RlKTsKK30KKwor
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cHJpb3JpdGl6ZVJlc291cmNlTG9h
ZHMoVmVjdG9yPFJlc291cmNlTG9hZElkZW50aWZpZXI+IGxvYWRJZGVudGlmaWVycykKK3sKKyAg
ICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oKTsKKyAgICBpZiAoIXNlc3Npb24pCisg
ICAgICAgIHJldHVybjsKKworICAgIFZlY3RvcjxOZXR3b3JrTG9hZCo+IGxvYWRzOworICAgIGZv
ciAoYXV0byBpZGVudGlmaWVyIDogbG9hZElkZW50aWZpZXJzKSB7CisgICAgICAgIGF1dG8qIGxv
YWRlciA9IG1fbmV0d29ya1Jlc291cmNlTG9hZGVycy5nZXQoaWRlbnRpZmllcik7CisgICAgICAg
IGlmICghbG9hZGVyIHx8ICFsb2FkZXItPm5ldHdvcmtMb2FkKCkpCisgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgbG9hZHMuYXBwZW5kKGxvYWRlci0+bmV0d29ya0xvYWQoKSk7CisgICAg
fQorCisgICAgc2Vzc2lvbi0+bmV0d29ya0xvYWRTY2hlZHVsZXIoKS5wcmlvcml0aXplTG9hZHMo
bG9hZHMpOworfQorCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjdW5kZWYgTkVUV09SS19Q
Uk9DRVNTX01FU1NBR0VfQ0hFQ0tfQ09NUExFVElPTgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmlu
ZGV4IGQ4NjM3N2RhMWE0ZC4uNWE0YjJiODkzN2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5o
CkBAIC00MCw2ICs0MCw4IEBACiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCIK
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db25zb2xlVHlwZXMuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0ZyYW1lSWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTGF5b3V0TWlsZXN0b25l
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Mb2FkU2NoZWR1bGluZ01vZGUuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9N
ZXNzYWdlUG9ydElkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtMb2FkSW5m
b3JtYXRpb24uaD4KQEAgLTQ4LDYgKzUwLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJ
ZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvV2ViU29ja2V0SWRlbnRpZmllci5oPgorI2luY2x1ZGUgPHd0Zi9PcHRp
b25TZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgUEFMIHsK
QEAgLTI2Niw5ICsyNjksMTAgQEAgcHJpdmF0ZToKIAogICAgIENhY2hlU3RvcmFnZUVuZ2luZUNv
bm5lY3Rpb24mIGNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKTsKIAorICAgIHZvaWQgY2xlYXJQYWdl
U3BlY2lmaWNEYXRhKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKKwogI2lmIEVOQUJMRShSRVNP
VVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgdm9pZCByZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJh
bWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7Ci0g
ICAgdm9pZCBjbGVhclBhZ2VTcGVjaWZpY0RhdGFGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKIAogICAgIHZvaWQgbG9nVXNlckludGVyYWN0aW9uKGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJik7CiAgICAgdm9pZCByZXNvdXJjZUxvYWRTdGF0aXN0aWNz
VXBkYXRlZChWZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKQEAgLTMyNSw2ICszMjksOSBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCBoYXNVcGxvYWRTdGF0ZUNoYW5nZWQoYm9vbCk7CiAKKyAgICB2b2lkIHNldFJlc291
cmNlTG9hZFNjaGVkdWxpbmdNb2RlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpM
b2FkU2NoZWR1bGluZ01vZGUpOworICAgIHZvaWQgcHJpb3JpdGl6ZVJlc291cmNlTG9hZHMoVmVj
dG9yPFJlc291cmNlTG9hZElkZW50aWZpZXI+KTsKKwogI2lmIEVOQUJMRShBUFBMRV9QQVlfUkVN
T1RFX1VJKQogICAgIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiBwYXltZW50Q29vcmRpbmF0
b3IoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXgg
MWJiZmE5MGNmNDQzLi5mZjhkNGExNzlmMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5tZXNzYWdlcy5pbgpAQCAtNjIsOSArNjIsMTAgQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIENyZWF0ZVNvY2tldFN0
cmVhbShVUkwgdXJsLCBTdHJpbmcgY2FjaGVQYXJ0aXRpb24sIFdlYkNvcmU6OldlYlNvY2tldElk
ZW50aWZpZXIgaWRlbnRpZmllcikKICAgICBDcmVhdGVTb2NrZXRDaGFubmVsKFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCByZXF1ZXN0LCBTdHJpbmcgcHJvdG9jb2wsIFdlYkNvcmU6OldlYlNvY2tl
dElkZW50aWZpZXIgaWRlbnRpZmllcikKIAorICAgIENsZWFyUGFnZVNwZWNpZmljRGF0YShXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQpOworCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURf
U1RBVElTVElDUykKICAgICBSZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUoV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCk7Ci0g
ICAgQ2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciBwYWdlSUQpOwogICAgIExvZ1VzZXJJbnRlcmFjdGlvbihXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4pCiAgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Vw
ZGF0ZWQoVmVjdG9yPFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M+IHN0YXRpc3RpY3Mp
IC0+ICgpIEFzeW5jCiAgICAgSGFzU3RvcmFnZUFjY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiBzdWJGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVE
b21haW4sIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciBwYWdlSUQpIC0+IChib29sIGhhc1N0b3JhZ2VBY2Nlc3MpIEFzeW5jCkBAIC0xMDEs
NCArMTAyLDYgQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgTGVn
YWN5UmVjZWl2ZXIgewogI2lmIFBMQVRGT1JNKE1BQykKICAgICBVcGRhdGVBY3RpdmVQYWdlcyhT
dHJpbmcgbmFtZSwgVmVjdG9yPFN0cmluZz4gYWN0aXZlUGFnZXNPcmlnaW5zLCBhdWRpdF90b2tl
bl90IGF1ZGl0VG9rZW4pCiAjZW5kaWYKKyAgICBTZXRSZXNvdXJjZUxvYWRTY2hlZHVsaW5nTW9k
ZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIGVudW06dWludDhfdCBXZWJDb3Jl
OjpMb2FkU2NoZWR1bGluZ01vZGUgbW9kZSkKKyAgICBQcmlvcml0aXplUmVzb3VyY2VMb2FkcyhW
ZWN0b3I8dWludDY0X3Q+IGxvYWRJZGVudGlmaWVycykKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAKaW5kZXggMmU2Y2VmOTUwNWRiLi5iODRmMDg0ZWNh
MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCkBA
IC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3Np
dGlvbi5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIk5l
dHdvcmtEYXRhVGFza0Jsb2IuaCIKKyNpbmNsdWRlICJOZXR3b3JrTG9hZFNjaGVkdWxlci5oIgog
I2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94
eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Nlc3Npb24uaCIKQEAgLTM2LDYgKzM3LDgg
QEAKICNpbmNsdWRlICJXZWJFcnJvcnMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVx
dWVzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CisjaW5jbHVkZSA8d3Rm
L0xpc3RIYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVk
ZSA8d3RmL1NlY29uZHMuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC02MCw5ICs2MywxOSBA
QCB2b2lkIE5ldHdvcmtMb2FkOjpzdGFydCgpCiAgICAgICAgIG1fdGFzay0+cmVzdW1lKCk7CiB9
CiAKK3ZvaWQgTmV0d29ya0xvYWQ6OnN0YXJ0V2l0aFNjaGVkdWxpbmcoKQoreworICAgIGlmICgh
bV90YXNrIHx8ICFtX3Rhc2stPm5ldHdvcmtTZXNzaW9uKCkpCisgICAgICAgIHJldHVybjsKKyAg
ICBtX3NjaGVkdWxlciA9IG1ha2VXZWFrUHRyKG1fdGFzay0+bmV0d29ya1Nlc3Npb24oKS0+bmV0
d29ya0xvYWRTY2hlZHVsZXIoKSk7CisgICAgbV9zY2hlZHVsZXItPnNjaGVkdWxlKCp0aGlzKTsK
K30KKwogTmV0d29ya0xvYWQ6On5OZXR3b3JrTG9hZCgpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6
OmlzTWFpbigpKTsKKyAgICBpZiAobV9zY2hlZHVsZXIpCisgICAgICAgIG1fc2NoZWR1bGVyLT51
bnNjaGVkdWxlKCp0aGlzKTsKICAgICBpZiAobV9yZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyKQog
ICAgICAgICBtX3JlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIoeyB9KTsKICAgICBpZiAobV90YXNr
KQpAQCAtMjI1LDYgKzIzOCwxMSBAQCB2b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlRGF0YShS
ZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIAogdm9pZCBOZXR3b3JrTG9hZDo6ZGlkQ29tcGxl
dGVXaXRoRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIGNvbnN0IFdlYkNvcmU6Ok5l
dHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQogeworICAgIGlmIChtX3NjaGVk
dWxlcikgeworICAgICAgICBtX3NjaGVkdWxlci0+dW5zY2hlZHVsZSgqdGhpcyk7CisgICAgICAg
IG1fc2NoZWR1bGVyID0gbnVsbHB0cjsKKyAgICB9CisKICAgICBpZiAoZXJyb3IuaXNOdWxsKCkp
CiAgICAgICAgIG1fY2xpZW50LmdldCgpLmRpZEZpbmlzaExvYWRpbmcobmV0d29ya0xvYWRNZXRy
aWNzKTsKICAgICBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtMb2FkLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2Fk
LmgKaW5kZXggNTllMTdlNWI5YTU2Li42OTU1OTk3ODFiZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgKQEAgLTM5LDYgKzM5LDcgQEAgY2xhc3MgQmxvYlJl
Z2lzdHJ5SW1wbDsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIE5ldHdvcmtMb2FkU2No
ZWR1bGVyOwogY2xhc3MgTmV0d29ya1Byb2Nlc3M7CiAKIGNsYXNzIE5ldHdvcmtMb2FkIGZpbmFs
IDogcHJpdmF0ZSBOZXR3b3JrRGF0YVRhc2tDbGllbnQgewpAQCAtNDgsNiArNDksNyBAQCBwdWJs
aWM6CiAgICAgfk5ldHdvcmtMb2FkKCk7CiAKICAgICB2b2lkIHN0YXJ0KCk7CisgICAgdm9pZCBz
dGFydFdpdGhTY2hlZHVsaW5nKCk7CiAgICAgdm9pZCBjYW5jZWwoKTsKIAogICAgIGJvb2wgaXNB
bGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMoKSBjb25zdDsKQEAgLTU2LDYgKzU4LDcgQEAg
cHVibGljOgogICAgIHZvaWQgdXBkYXRlUmVxdWVzdEFmdGVyUmVkaXJlY3Rpb24oV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JikgY29uc3Q7CiAKICAgICBjb25zdCBOZXR3b3JrTG9hZFBhcmFtZXRl
cnMmIHBhcmFtZXRlcnMoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnM7IH0KKyAgICBjb25z
dCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIHBhcmFtZXRlcnMoKS5yZXF1ZXN0LnVybCgpOyB9
CiAKICAgICB2b2lkIGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmKTsKIApAQCAtOTAsNiArOTMsNyBAQCBwcml2YXRlOgogICAgIGNvbnN0IE5ldHdvcmtM
b2FkUGFyYW1ldGVycyBtX3BhcmFtZXRlcnM7CiAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+IG1fcmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlcjsK
ICAgICBSZWZQdHI8TmV0d29ya0RhdGFUYXNrPiBtX3Rhc2s7CisgICAgV2Vha1B0cjxOZXR3b3Jr
TG9hZFNjaGVkdWxlcj4gbV9zY2hlZHVsZXI7CiAKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QgbV9jdXJyZW50UmVxdWVzdDsgLy8gVXBkYXRlZCBvbiByZWRpcmVjdHMuCiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZFNjaGVkdWxlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkU2NoZWR1bGVyLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjk1MWVkZWViNWVlMQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xv
YWRTY2hlZHVsZXIuY3BwCkBAIC0wLDAgKzEsMTcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtMb2FkU2NoZWR1bGVyLmgiCisKKyNpbmNsdWRl
ICJOZXR3b3JrTG9hZC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGljIGNvbnN0ZXhw
ciBzaXplX3QgbWF4aW11bUFjdGl2ZUNvdW50Rm9yTG93UHJpb3JpdHkgPSA2OworCitjbGFzcyBO
ZXR3b3JrTG9hZFNjaGVkdWxlcjo6SG9zdENvbnRleHQgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOworcHVibGljOgorICAgIEhvc3RDb250ZXh0KCkgPSBkZWZhdWx0OworICAgIH5Ib3N0
Q29udGV4dCgpOworCisgICAgdm9pZCBzY2hlZHVsZShOZXR3b3JrTG9hZCYpOworICAgIHZvaWQg
dW5zY2hlZHVsZShOZXR3b3JrTG9hZCYpOworICAgIHZvaWQgcHJpb3JpdGl6ZShOZXR3b3JrTG9h
ZCYpOworCisgICAgdm9pZCBmaW5pc2hQYWdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKKwor
cHJpdmF0ZToKKyAgICB2b2lkIHN0YXJ0KE5ldHdvcmtMb2FkJik7CisKKyAgICBIYXNoU2V0PE5l
dHdvcmtMb2FkKj4gbV9hY3RpdmVMb2FkczsKKyAgICBMaXN0SGFzaFNldDxOZXR3b3JrTG9hZCo+
IG1fcGVuZGluZ0xvYWRzOworfTsKKwordm9pZCBOZXR3b3JrTG9hZFNjaGVkdWxlcjo6SG9zdENv
bnRleHQ6OnNjaGVkdWxlKE5ldHdvcmtMb2FkJiBsb2FkKQoreworICAgIGF1dG8gc3RhcnRJbW1l
ZGlhdGVseSA9IFsmXSB7CisgICAgICAgIGF1dG8gcHJpb3JpdHkgPSBsb2FkLnBhcmFtZXRlcnMo
KS5yZXF1ZXN0LnByaW9yaXR5KCk7CisgICAgICAgIGlmIChwcmlvcml0eSA+IFJlc291cmNlTG9h
ZFByaW9yaXR5OjpMb3cpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICBpZiAo
bV9hY3RpdmVMb2Fkcy5zaXplKCkgPCBtYXhpbXVtQWN0aXZlQ291bnRGb3JMb3dQcmlvcml0eSkK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
KCk7CisKKyAgICBpZiAoc3RhcnRJbW1lZGlhdGVseSkgeworICAgICAgICBzdGFydChsb2FkKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fcGVuZGluZ0xvYWRzLmFkZCgmbG9hZCk7
Cit9CisKK3ZvaWQgTmV0d29ya0xvYWRTY2hlZHVsZXI6Okhvc3RDb250ZXh0Ojp1bnNjaGVkdWxl
KE5ldHdvcmtMb2FkJiBsb2FkKQoreworICAgIG1fYWN0aXZlTG9hZHMucmVtb3ZlKCZsb2FkKTsK
KyAgICBtX3BlbmRpbmdMb2Fkcy5yZW1vdmUoJmxvYWQpOworCisgICAgaWYgKG1fcGVuZGluZ0xv
YWRzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChtX2FjdGl2ZUxvYWRzLnNp
emUoKSA+PSBtYXhpbXVtQWN0aXZlQ291bnRGb3JMb3dQcmlvcml0eSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgc3RhcnQoKm1fcGVuZGluZ0xvYWRzLnRha2VGaXJzdCgpKTsKK30KKwordm9pZCBO
ZXR3b3JrTG9hZFNjaGVkdWxlcjo6SG9zdENvbnRleHQ6OnByaW9yaXRpemUoTmV0d29ya0xvYWQm
IGxvYWQpCit7CisgICAgaWYgKCFtX3BlbmRpbmdMb2Fkcy5yZW1vdmUoJmxvYWQpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBzdGFydChsb2FkKTsKK30KKwordm9pZCBOZXR3b3JrTG9hZFNjaGVk
dWxlcjo6SG9zdENvbnRleHQ6OnN0YXJ0KE5ldHdvcmtMb2FkJiBsb2FkKQoreworICAgIG1fYWN0
aXZlTG9hZHMuYWRkKCZsb2FkKTsKKworICAgIGxvYWQuc3RhcnQoKTsKK30KKworTmV0d29ya0xv
YWRTY2hlZHVsZXI6Okhvc3RDb250ZXh0Ojp+SG9zdENvbnRleHQoKQoreworICAgIGZvciAoYXV0
byogbG9hZCA6IG1fcGVuZGluZ0xvYWRzKQorICAgICAgICBzdGFydCgqbG9hZCk7Cit9CisKK05l
dHdvcmtMb2FkU2NoZWR1bGVyOjpOZXR3b3JrTG9hZFNjaGVkdWxlcigpID0gZGVmYXVsdDsKK05l
dHdvcmtMb2FkU2NoZWR1bGVyOjp+TmV0d29ya0xvYWRTY2hlZHVsZXIoKSA9IGRlZmF1bHQ7CisK
K3ZvaWQgTmV0d29ya0xvYWRTY2hlZHVsZXI6OnNjaGVkdWxlKE5ldHdvcmtMb2FkJiBsb2FkKQor
eworICAgIGF1dG8qIGNvbnRleHQgPSBjb250ZXh0Rm9yTG9hZChsb2FkKTsKKworICAgIGlmICgh
Y29udGV4dCkgeworICAgICAgICBsb2FkLnN0YXJ0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBjb250ZXh0LT5zY2hlZHVsZShsb2FkKTsKK30KKwordm9pZCBOZXR3b3JrTG9hZFNj
aGVkdWxlcjo6dW5zY2hlZHVsZShOZXR3b3JrTG9hZCYgbG9hZCkKK3sKKyAgICBpZiAoYXV0byog
Y29udGV4dCA9IGNvbnRleHRGb3JMb2FkKGxvYWQpKQorICAgICAgICBjb250ZXh0LT51bnNjaGVk
dWxlKGxvYWQpOworfQorCit2b2lkIE5ldHdvcmtMb2FkU2NoZWR1bGVyOjpzZXRSZXNvdXJjZUxv
YWRTY2hlZHVsaW5nTW9kZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSWRlbnRpZmllciwg
V2ViQ29yZTo6TG9hZFNjaGVkdWxpbmdNb2RlIG1vZGUpCit7CisgICAgc3dpdGNoIChtb2RlKSB7
CisgICAgY2FzZSBXZWJDb3JlOjpMb2FkU2NoZWR1bGluZ01vZGU6OlByaW9yaXRpemVkOgorICAg
ICAgICBtX3BhZ2VDb250ZXh0cy5lbnN1cmUocGFnZUlkZW50aWZpZXIsIFsmXSB7CisgICAgICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYWdlQ29udGV4dD4oKTsKKyAgICAgICAgfSk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgV2ViQ29yZTo6TG9hZFNjaGVkdWxpbmdNb2RlOjpEaXJlY3Q6
CisgICAgICAgIG1fcGFnZUNvbnRleHRzLnJlbW92ZShwYWdlSWRlbnRpZmllcik7CisgICAgICAg
IGJyZWFrOworICAgIH0KK30KKwordm9pZCBOZXR3b3JrTG9hZFNjaGVkdWxlcjo6cHJpb3JpdGl6
ZUxvYWRzKGNvbnN0IFZlY3RvcjxOZXR3b3JrTG9hZCo+JiBsb2FkcykKK3sKKyAgICBmb3IgKGF1
dG8qIGxvYWQgOiBsb2FkcykgeworICAgICAgICBpZiAoYXV0byogY29udGV4dCA9IGNvbnRleHRG
b3JMb2FkKCpsb2FkKSkKKyAgICAgICAgICAgIGNvbnRleHQtPnByaW9yaXRpemUoKmxvYWQpOwor
ICAgIH0KK30KKwordm9pZCBOZXR3b3JrTG9hZFNjaGVkdWxlcjo6Y2xlYXJQYWdlRGF0YShXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSWRlbnRpZmllcikKK3sKKyAgICBtX3BhZ2VDb250ZXh0
cy5yZW1vdmUocGFnZUlkZW50aWZpZXIpOworfQorCithdXRvIE5ldHdvcmtMb2FkU2NoZWR1bGVy
Ojpjb250ZXh0Rm9yTG9hZChjb25zdCBOZXR3b3JrTG9hZCYgbG9hZCkgLT4gSG9zdENvbnRleHQq
Cit7CisgICAgaWYgKCFsb2FkLnVybCgpLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvKiBwYWdlQ29udGV4dCA9IG1fcGFnZUNvbnRl
eHRzLmdldChsb2FkLnBhcmFtZXRlcnMoKS53ZWJQYWdlSUQpOworICAgIGlmICghcGFnZUNvbnRl
eHQpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byBob3N0ID0gbG9hZC51cmwo
KS5ob3N0KCkudG9TdHJpbmcoKTsKKyAgICByZXR1cm4gcGFnZUNvbnRleHQtPmVuc3VyZShob3N0
LCBbJl0geworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxIb3N0Q29udGV4dD4oKTsKKyAgICB9
KS5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRTY2hlZHVsZXIuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRTY2hlZHVsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAuLjI5OWM4MWFjMzI4OQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRTY2hlZHVsZXIuaApAQCAtMCww
ICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxXZWJDb3Jl
L0xvYWRTY2hlZHVsaW5nTW9kZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIu
aD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBOZXR3b3JrTG9hZDsKKworY2xhc3MgTmV0d29y
a0xvYWRTY2hlZHVsZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TmV0d29ya0xvYWRTY2hlZHVs
ZXI+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBOZXR3b3Jr
TG9hZFNjaGVkdWxlcigpOworICAgIH5OZXR3b3JrTG9hZFNjaGVkdWxlcigpOworCisgICAgdm9p
ZCBzY2hlZHVsZShOZXR3b3JrTG9hZCYpOworICAgIHZvaWQgdW5zY2hlZHVsZShOZXR3b3JrTG9h
ZCYpOworCisgICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTY2hlZHVsaW5nTW9kZShXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciwgV2ViQ29yZTo6TG9hZFNjaGVkdWxpbmdNb2RlKTsKKyAgICB2b2lkIHBy
aW9yaXRpemVMb2Fkcyhjb25zdCBWZWN0b3I8TmV0d29ya0xvYWQqPiYpOworICAgIHZvaWQgY2xl
YXJQYWdlRGF0YShXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CisKK3ByaXZhdGU6CisgICAgY2xh
c3MgSG9zdENvbnRleHQ7CisgICAgSG9zdENvbnRleHQqIGNvbnRleHRGb3JMb2FkKGNvbnN0IE5l
dHdvcmtMb2FkJik7CisKKyAgICB1c2luZyBQYWdlQ29udGV4dCA9IEhhc2hNYXA8U3RyaW5nLCBz
dGQ6OnVuaXF1ZV9wdHI8SG9zdENvbnRleHQ+PjsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8UGFnZUNvbnRleHQ+PiBtX3BhZ2VDb250ZXh0czsK
K307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCAyOTA1ZDUxZTE3YTEuLmNmNzkzYTY5NWUxNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmNwcApAQCAtMzM2LDcgKzMzNiw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVy
OjpzdGFydE5ldHdvcmtMb2FkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZpcnN0TG9hCiAg
ICAgcGFyYW1ldGVycy5yZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KTsKICAgICBwYXJhbWV0ZXJz
LmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gPSBtX3BhcmFtZXRlcnMuaXNOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbjsKICAgICBtX25ldHdvcmtMb2FkID0gbWFrZVVuaXF1ZTxOZXR3b3Jr
TG9hZD4oKnRoaXMsICZuZXR3b3JrU2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCksIFdURk1vdmUocGFy
YW1ldGVycyksICpuZXR3b3JrU2Vzc2lvbik7Ci0gICAgbV9uZXR3b3JrTG9hZC0+c3RhcnQoKTsK
KyAgICBtX25ldHdvcmtMb2FkLT5zdGFydFdpdGhTY2hlZHVsaW5nKCk7CiAKICAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKCJzdGFydE5ldHdvcmtMb2FkOiBHb2luZyB0byB0aGUgbmV0d29yayAo
ZGVzY3JpcHRpb249JSIgUFVCTElDX0xPR19TVFJJTkcgIikiLCBtX25ldHdvcmtMb2FkLT5kZXNj
cmlwdGlvbigpLnV0ZjgoKS5kYXRhKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAppbmRleCA3NTljMWMyMzcyYWUuLjY2NzVmNjAwNDZl
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lv
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5j
cHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbi5oIgogCiAjaW5j
bHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtMb2FkU2NoZWR1bGVyLmgiCiAjaW5j
bHVkZSAiTmV0d29ya1Byb2Nlc3MuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1Byb3h5TWVz
c2FnZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oIgpAQCAt
MzgyLDQgKzM4MywxMSBAQCB2b2lkIE5ldHdvcmtTZXNzaW9uOjp1bnJlZ2lzdGVyTmV0d29ya0Rh
dGFUYXNrKE5ldHdvcmtEYXRhVGFzayYgdGFzaykKICAgICBtX2RhdGFUYXNrU2V0LnJlbW92ZSh0
YXNrKTsKIH0KIAorTmV0d29ya0xvYWRTY2hlZHVsZXImIE5ldHdvcmtTZXNzaW9uOjpuZXR3b3Jr
TG9hZFNjaGVkdWxlcigpCit7CisgICAgaWYgKCFtX25ldHdvcmtMb2FkU2NoZWR1bGVyKQorICAg
ICAgICBtX25ldHdvcmtMb2FkU2NoZWR1bGVyID0gbWFrZVVuaXF1ZTxOZXR3b3JrTG9hZFNjaGVk
dWxlcj4oKTsKKyAgICByZXR1cm4gKm1fbmV0d29ya0xvYWRTY2hlZHVsZXI7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U2Vzc2lvbi5oCmluZGV4IGFjODk4NjU4OGUyZC4uMWE4ZjU4Y2YyYjFkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCkBAIC01Myw2ICs1Myw3IEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFn
ZXI7CiBjbGFzcyBOZXR3b3JrRGF0YVRhc2s7CitjbGFzcyBOZXR3b3JrTG9hZFNjaGVkdWxlcjsK
IGNsYXNzIE5ldHdvcmtQcm9jZXNzOwogY2xhc3MgTmV0d29ya1Jlc291cmNlTG9hZGVyOwogY2xh
c3MgTmV0d29ya1NvY2tldENoYW5uZWw7CkBAIC0xNTAsNiArMTUxLDggQEAgcHVibGljOgogICAg
IHZvaWQgcmVtb3ZlU29mdFVwZGF0ZUxvYWRlcihTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRl
ciogbG9hZGVyKSB7IG1fc29mdFVwZGF0ZUxvYWRlcnMucmVtb3ZlKGxvYWRlcik7IH0KICNlbmRp
ZgogCisgICAgTmV0d29ya0xvYWRTY2hlZHVsZXImIG5ldHdvcmtMb2FkU2NoZWR1bGVyKCk7CisK
IHByb3RlY3RlZDoKICAgICBOZXR3b3JrU2Vzc2lvbihOZXR3b3JrUHJvY2VzcyYsIGNvbnN0IE5l
dHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAKQEAgLTE4Niw2ICsxODksNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgYm9vbCBtX2lzSW52YWxpZGF0ZWQgeyBmYWxzZSB9OwogI2VuZGlmCiAg
ICAgUmVmUHRyPE5ldHdvcmtDYWNoZTo6Q2FjaGU+IG1fY2FjaGU7CisgICAgc3RkOjp1bmlxdWVf
cHRyPE5ldHdvcmtMb2FkU2NoZWR1bGVyPiBtX25ldHdvcmtMb2FkU2NoZWR1bGVyOwogICAgIFdl
YkNvcmU6OkJsb2JSZWdpc3RyeUltcGwgbV9ibG9iUmVnaXN0cnk7CiAgICAgdW5zaWduZWQgbV90
ZXN0U3BlZWRNdWx0aXBsaWVyIHsgMSB9OwogICAgIGJvb2wgbV9hbGxvd3NTZXJ2ZXJQcmVjb25u
ZWN0IHsgdHJ1ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCmluZGV4IDRj
MTA3MzUwZmE0My4uNGI5OGQ1YzE0YzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxv
YWQuY3BwCkBAIC02OSw3ICs2OSw3IEBAIFNwZWN1bGF0aXZlTG9hZDo6U3BlY3VsYXRpdmVMb2Fk
KENhY2hlJiBjYWNoZSwgY29uc3QgR2xvYmFsRnJhbWVJRCYgZ2xvYmFsRnJhbWVJCiAgICAgcGFy
YW1ldGVycy5yZXF1ZXN0ID0gbV9vcmlnaW5hbFJlcXVlc3Q7CiAgICAgcGFyYW1ldGVycy5pc05h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluID0gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsK
ICAgICBtX25ldHdvcmtMb2FkID0gbWFrZVVuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsIG51bGxw
dHIsIFdURk1vdmUocGFyYW1ldGVycyksICpuZXR3b3JrU2Vzc2lvbik7Ci0gICAgbV9uZXR3b3Jr
TG9hZC0+c3RhcnQoKTsKKyAgICBtX25ldHdvcmtMb2FkLT5zdGFydFdpdGhTY2hlZHVsaW5nKCk7
CiB9CiAKIFNwZWN1bGF0aXZlTG9hZDo6flNwZWN1bGF0aXZlTG9hZCgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViS2l0RGlyZWN0b3J5SW5wdXRTdHJl
YW0uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYktpdERpcmVjdG9y
eUlucHV0U3RyZWFtLmNwcAppbmRleCA2NjUyODY1ZTNjNDQuLjk1ZmJlYTI1Y2I0NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYktpdERpcmVjdG9yeUlu
cHV0U3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2Vi
S2l0RGlyZWN0b3J5SW5wdXRTdHJlYW0uY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRl
ICJXZWJLaXREaXJlY3RvcnlJbnB1dFN0cmVhbURhdGEuaCIKICNpbmNsdWRlIDxnbGliL2dpMThu
LWxpYi5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KICNpbmNsdWRlIDx3dGYv
Z2xpYi9XVEZHVHlwZS5oPgogCiBzdHJ1Y3QgX1dlYktpdERpcmVjdG9yeUlucHV0U3RyZWFtUHJp
dmF0ZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dl
YktpdC9Tb3VyY2VzLnR4dAppbmRleCA3N2FjMTZkZjg5MWYuLjdmNDA4YmM0NjEwYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXMudHh0CkBAIC02NSw2ICs2NSw3IEBAIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Js
b2IuY3BwCiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrSFRUUFNVcGdyYWRlQ2hlY2tlci5jcHAKIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRD
aGVja2VyLmNwcAorTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRTY2hlZHVsZXIuY3BwCiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NQ
bGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCBmYTAzZGM4NTE0MDAuLjg0MjM3ZGM0YjY1NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xOTQ1
LDYgKzE5NDUsNyBAQAogCQlFNDQzNkVDQzFBMEQwNDBCMDBFQUQyMDQgLyogTmV0d29ya0NhY2hl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDQzNkVC
RjFBMENGREIyMDBFQUQyMDQgLyogTmV0d29ya0NhY2hlLmggKi87IH07CiAJCUU0NDM2RUNFMUEw
RDA0MEIwMEVBRDIwNCAvKiBOZXR3b3JrQ2FjaGVLZXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NDM2RUMxMUEwQ0ZEQjIwMEVBRDIwNCAvKiBOZXR3
b3JrQ2FjaGVLZXkuaCAqLzsgfTsKIAkJRTQ0MzZFQ0YxQTBEMDQwQjAwRUFEMjA0IC8qIE5ldHdv
cmtDYWNoZVN0b3JhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEU0NDM2RUMyMUEwQ0ZEQjIwMEVBRDIwNCAvKiBOZXR3b3JrQ2FjaGVTdG9yYWdlLmgg
Ki87IH07CisJCUU0N0ZDOEEwMjVCODMzMUMwMDU0OTVGQyAvKiBOZXR3b3JrTG9hZFNjaGVkdWxl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ3RkM4
OUYyNUI4MzMxQzAwNTQ5NUZDIC8qIE5ldHdvcmtMb2FkU2NoZWR1bGVyLmggKi87IH07CiAJCUU0
ODlEMjhDMUEwQTJEQjgwMDc4QzA2QSAvKiBOZXR3b3JrQ2FjaGVDb2RlcnMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0ODlEMjg1MUEwQTJEQjgwMDc4
QzA2QSAvKiBOZXR3b3JrQ2FjaGVDb2RlcnMuaCAqLzsgfTsKIAkJRTQ5RDQwRDcxQUQzRkIxNzAw
NjZCN0I5IC8qIE5ldHdvcmtDYWNoZUJsb2JTdG9yYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDlENDBENjFBRDNGQjE3MDA2NkI3QjkgLyogTmV0
d29ya0NhY2hlQmxvYlN0b3JhZ2UuaCAqLzsgfTsKIAkJRTRENTREMDQyMUYxRDcyRDAwN0UzQzM2
IC8qIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVJT1MuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0MEMxRjkzMjFGMEI5NkUwMDUz
MDcxOCAvKiBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlSU9TLmggKi87IH07
CkBAIC01NzQ0LDYgKzU3NDUsOCBAQAogCQlFNDQzNkVDMzFBMENGREIyMDBFQUQyMDQgLyogTmV0
d29ya0NhY2hlU3RvcmFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBOZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTQ2OTdDQ0MxQjI1RUI4RjAwMUIwQTZDIC8qIE5ldHdvcmtDYWNoZUZpbGVTeXN0ZW0uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29ya0NhY2hlRmlsZVN5c3Rl
bS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0N0QxRTk2MUIwNjJCNjYwMDI2
NzZBOCAvKiBOZXR3b3JrQ2FjaGVEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IE5ldHdvcmtDYWNoZURhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlFNDdGQzg5RDI1QjgzMzEzMDA1NDk1RkMgLyogTmV0d29ya0xvYWRTY2hlZHVsZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29ya0xvYWRTY2hlZHVs
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNDdGQzg5RjI1QjgzMzFDMDA1
NDk1RkMgLyogTmV0d29ya0xvYWRTY2hlZHVsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTmV0d29ya0xvYWRTY2hlZHVsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTQ4OUQyODQxQTBBMkRCODAwNzhDMDZBIC8qIE5ldHdvcmtDYWNoZUNvZGVycy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3JrQ2FjaGVDb2RlcnMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDg5RDI4NTFBMEEyREI4MDA3OEMw
NkEgLyogTmV0d29ya0NhY2hlQ29kZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE5ldHdvcmtDYWNoZUNvZGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
NDlENDBENjFBRDNGQjE3MDA2NkI3QjkgLyogTmV0d29ya0NhY2hlQmxvYlN0b3JhZ2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya0NhY2hlQmxvYlN0b3JhZ2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTgzMjgsNiArODMzMSw4IEBACiAJCQkJNDEw
M0ZCQTEyMDYxQkRCNzAwQzJFQUY4IC8qIE5ldHdvcmtMb2FkQ2hlY2tlci5oICovLAogCQkJCTgz
RDQ1NEQ2MUJFOUQzQzQwMDZDOTNCRCAvKiBOZXR3b3JrTG9hZENsaWVudC5oICovLAogCQkJCTgz
OTE0OTYzMUJFQTgzODUwMEQyRDk1MyAvKiBOZXR3b3JrTG9hZFBhcmFtZXRlcnMuaCAqLywKKwkJ
CQlFNDdGQzg5RDI1QjgzMzEzMDA1NDk1RkMgLyogTmV0d29ya0xvYWRTY2hlZHVsZXIuY3BwICov
LAorCQkJCUU0N0ZDODlGMjVCODMzMUMwMDU0OTVGQyAvKiBOZXR3b3JrTG9hZFNjaGVkdWxlci5o
ICovLAogCQkJCTUxMENDN0RGMTYxMzhFMjkwMEQwM0VEMyAvKiBOZXR3b3JrUHJvY2Vzcy5jcHAg
Ki8sCiAJCQkJNTEwQ0M3RTAxNjEzOEUyOTAwRDAzRUQzIC8qIE5ldHdvcmtQcm9jZXNzLmggKi8s
CiAJCQkJNTFBOEE2MTcxNjI3RjVCQjAwMEQ5MEU5IC8qIE5ldHdvcmtQcm9jZXNzLm1lc3NhZ2Vz
LmluICovLApAQCAtMTIwOTEsNiArMTIwOTYsNyBAQAogCQkJCTkzQTg4QjMzMUJDNkU5Q0QwMEFC
QTVDMiAvKiBXZWJIaXRUZXN0UmVzdWx0RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjQ0REZF
QjIxRTlFNzUyRjAwMzhEMTk2IC8qIFdlYkljb25VdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTkzMjYxMTYxMjE0MDU0RjQwMDA4MDZFNyAvKiBXZWJJREJDb25uZWN0aW9uVG9DbGllbnQu
aCBpbiBIZWFkZXJzICovLAorCQkJCUU0N0ZDOEEwMjVCODMzMUMwMDU0OTVGQyAvKiBOZXR3b3Jr
TG9hZFNjaGVkdWxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE0MTI5OTQxQzY0MjhCQjAwNTlF
NzE0IC8qIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEw
NTIzNzQxQzczRDM4QjAwNzk5M0NCIC8qIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlck1lc3NhZ2Vz
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzNFODM1NTIzQTA3QzA2MDBERUYyODkgLyogV2ViSURC
U2VydmVyLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAppbmRleCA2OWRlYTc0OTNlMjYuLjdj
NTc2OGE1YjhmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViTG9hZGVyU3RyYXRlZ3kuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcApAQCAtODUxLDYgKzg1MSwyMiBAQCBib29sIFdlYkxv
YWRlclN0cmF0ZWd5OjpoYXZlUGVyZm9ybWVkU2VjdXJpdHlDaGVja3MoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcAogICAgIHJldHVybiBmYWxzZTsKIH0KIAordm9pZCBXZWJMb2FkZXJTdHJh
dGVneTo6c2V0UmVzb3VyY2VMb2FkU2NoZWR1bGluZ01vZGUoV2ViQ29yZTo6UGFnZSYgcGFnZSwg
V2ViQ29yZTo6TG9hZFNjaGVkdWxpbmdNb2RlIG1vZGUpCit7CisgICAgYXV0byYgY29ubmVjdGlv
biA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bigpLmNvbm5lY3Rpb24oKTsKKyAgICBjb25uZWN0aW9uLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTZXRSZXNvdXJjZUxvYWRTY2hlZHVsaW5nTW9kZShXZWJQ
YWdlOjpmcm9tQ29yZVBhZ2UocGFnZSkuaWRlbnRpZmllcigpLCBtb2RlKSwgMCk7Cit9CisKK3Zv
aWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnByaW9yaXRpemVSZXNvdXJjZUxvYWRzKGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcio+JiByZXNvdXJjZXMpCit7CisgICAgYXV0byBp
ZGVudGlmaWVycyA9IHJlc291cmNlcy5tYXAoW10oYXV0byogbG9hZGVyKSAtPiBSZXNvdXJjZUxv
YWRJZGVudGlmaWVyIHsKKyAgICAgICAgcmV0dXJuIGxvYWRlci0+aWRlbnRpZmllcigpOworICAg
IH0pOworCisgICAgYXV0byYgY29ubmVjdGlvbiA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVu
c3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKTsKKyAgICBjb25uZWN0
aW9uLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQcmlvcml0
aXplUmVzb3VyY2VMb2FkcyhpZGVudGlmaWVycyksIDApOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKIAogI3VuZGVmIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oCmluZGV4IDlkOTg4
NDE4M2VjOS4uMDRkZjQ4ZmVkMzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgKQEAgLTExNCw2ICsxMTQsOSBAQCBwcml2
YXRlOgogCiAgICAgdm9pZCBpc1Jlc291cmNlTG9hZEZpbmlzaGVkKFdlYkNvcmU6OkNhY2hlZFJl
c291cmNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7CiAKKyAgICB2
b2lkIHNldFJlc291cmNlTG9hZFNjaGVkdWxpbmdNb2RlKFdlYkNvcmU6OlBhZ2UmLCBXZWJDb3Jl
OjpMb2FkU2NoZWR1bGluZ01vZGUpIGZpbmFsOworICAgIHZvaWQgcHJpb3JpdGl6ZVJlc291cmNl
TG9hZHMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyKj4mKSBmaW5hbDsK
KwogICAgIFZlY3Rvcjx1aW50NjRfdD4gb25nb2luZ0xvYWRzKCkgY29uc3QgZmluYWwKICAgICB7
CiAgICAgICAgIHJldHVybiBXVEY6Om1hcChtX3dlYlJlc291cmNlTG9hZGVycywgW10oYXV0byYm
IGtleVZhbHVlKSAtPiB1aW50NjRfdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCmluZGV4IDllNTA5MTA0NDc1OS4uZDBmYTBjMjIxZmI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTQwOSw5ICsx
NDA5LDcgQEAgdm9pZCBXZWJQYWdlOjpjbG9zZSgpCiAKICAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKExvYWRpbmcsICJjbG9zZToiKTsKIAotI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCi0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpDbGVhclBhZ2VTcGVjaWZpY0RhdGFGb3JSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzKG1faWRlbnRpZmllciksIDApOwotI2VuZGlmCisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDbGVhclBhZ2VTcGVjaWZpY0Rh
dGEobV9pZGVudGlmaWVyKSwgMCk7CiAKICAgICBtX2lzQ2xvc2VkID0gdHJ1ZTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>