<?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>210015</bug_id>
          
          <creation_ts>2020-04-04 21:05:23 -0700</creation_ts>
          <short_desc>Add some structureID integrity checks to various runtime functions.</short_desc>
          <delta_ts>2020-04-05 01:35:22 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>annulen</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1637798</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-04-04 21:05:23 -0700</bug_when>
    <thetext>&lt;rdar://problem/58116514&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637799</commentid>
    <comment_count>1</comment_count>
      <attachid>395475</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-04-04 21:12:23 -0700</bug_when>
    <thetext>Created attachment 395475
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637800</commentid>
    <comment_count>2</comment_count>
      <attachid>395476</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-04-04 21:15:07 -0700</bug_when>
    <thetext>Created attachment 395476
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637803</commentid>
    <comment_count>3</comment_count>
      <attachid>395476</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-04-04 21:34:56 -0700</bug_when>
    <thetext>Comment on attachment 395476
proposed patch.

r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637804</commentid>
    <comment_count>4</comment_count>
      <attachid>395477</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-04-04 21:39:21 -0700</bug_when>
    <thetext>Created attachment 395477
patch for landing.

Thanks for the review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637823</commentid>
    <comment_count>5</comment_count>
      <attachid>395486</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-04-04 22:58:35 -0700</bug_when>
    <thetext>Created attachment 395486
patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637825</commentid>
    <comment_count>6</comment_count>
      <attachid>395488</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-04-04 23:09:43 -0700</bug_when>
    <thetext>Created attachment 395488
patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637842</commentid>
    <comment_count>7</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-04-05 01:35:22 -0700</bug_when>
    <thetext>Landed in r259547: &lt;http://trac.webkit.org/r259547&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395475</attachid>
            <date>2020-04-04 21:12:23 -0700</date>
            <delta_ts>2020-04-04 21:14:27 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-210015.patch</filename>
            <type>text/plain</type>
            <size>40979</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjU5NTQyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY5IEBA
CisyMDIwLTA0LTA0ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZGQgc29tZSBzdHJ1Y3R1cmVJRCBpbnRlZ3JpdHkgY2hlY2tzIHRvIHZhcmlvdXMgcnVudGltZSBm
dW5jdGlvbnMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTAwMTUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU4MTE2NTE0PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGlzIHBlcmZv
cm1hbmNlIG5ldXRyYWwgb24gSmV0U3RyZWFtIDIuMCwgU3BlZWRvbWV0ZXItMiwgYW5kIFBMVDUu
CisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAg
ICAqIGhlYXAvSGVhcENlbGwuY3BwOgorICAgICAgICAoSlNDOjplbnN1cmVTdGlsbEFsaXZlSGVy
ZSk6IERlbGV0ZWQuCisgICAgICAgICogaGVhcC9IZWFwQ2VsbC5oOgorICAgICAgICAoSlNDOjpl
bnN1cmVTdGlsbEFsaXZlSGVyZSk6IERlbGV0ZWQuCisgICAgICAgICogaGVhcC9TbG90VmlzaXRv
ci5jcHA6CisgICAgICAgIChKU0M6OlNsb3RWaXNpdG9yOjphcHBlbmRKU0NlbGxPckF1eGlsaWFy
eSk6CisgICAgICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6
OmFycmF5UHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvQmlnSW50UHJvdG90
eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6YmlnSW50UHJvdG9GdW5jVG9TdHJpbmdJbXBsKToKKyAg
ICAgICAgKEpTQzo6YmlnSW50UHJvdG9GdW5jVmFsdWVPZik6CisgICAgICAgICogcnVudGltZS9C
b29sZWFuUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6Ym9vbGVhblByb3RvRnVuY1RvU3Ry
aW5nKToKKyAgICAgICAgKEpTQzo6Ym9vbGVhblByb3RvRnVuY1ZhbHVlT2YpOgorICAgICAgICAq
IHJ1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmZvcm1hdExvY2FsZURh
dGUpOgorICAgICAgICAoSlNDOjpmb3JtYXRlRGF0ZUluc3RhbmNlKToKKyAgICAgICAgKEpTQzo6
ZGF0ZVByb3RvRnVuY1RvSVNPU3RyaW5nKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY1Rv
UHJpbWl0aXZlU3ltYm9sKToKKyAgICAgICAgKiBydW50aW1lL0Vuc3VyZVN0aWxsQWxpdmVIZXJl
LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OmVuc3VyZVN0aWxsQWxpdmVIZXJlKToKKyAgICAg
ICAgKiBydW50aW1lL0Vuc3VyZVN0aWxsQWxpdmVIZXJlLmg6IEFkZGVkLgorICAgICAgICAoSlND
OjplbnN1cmVTdGlsbEFsaXZlSGVyZSk6CisgICAgICAgICogcnVudGltZS9FcnJvckluc3RhbmNl
LmNwcDoKKyAgICAgICAgKEpTQzo6RXJyb3JJbnN0YW5jZTo6c2FuaXRpemVkVG9TdHJpbmcpOgor
ICAgICAgICAqIHJ1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjplcnJv
clByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBl
LmNwcDoKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25Qcm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAg
ICogcnVudGltZS9KU0NlbGwuY3BwOgorICAgICAgICAoSlNDOjpKU0NlbGw6OnRvT2JqZWN0U2xv
dyBjb25zdCk6CisgICAgICAgICogcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwOgorICAgICAg
ICAoSlNDOjp0b1RoaXNOdW1iZXIpOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0UHJvdG90eXBl
LmNwcDoKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jVmFsdWVPZik6CisgICAgICAgIChK
U0M6Om9iamVjdFByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cFBy
b3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OnJlZ0V4cFByb3RvRnVuY1RvU3RyaW5nKToKKyAg
ICAgICAgKiBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OnN0cmlu
Z1Byb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUlEVGFibGUu
aDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlSURUYWJsZTo6dmFsaWRhdGUpOgorICAgICAgICAo
SlNDOjpTdHJ1Y3R1cmVJRFRhYmxlOjppc1ZhbGlkKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50
aW1lL1N5bWJvbFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OnN5bWJvbFByb3RvR2V0dGVy
RGVzY3JpcHRpb24pOgorICAgICAgICAoSlNDOjpzeW1ib2xQcm90b0Z1bmNUb1N0cmluZyk6Cisg
ICAgICAgIChKU0M6OnN5bWJvbFByb3RvRnVuY1ZhbHVlT2YpOgorICAgICAgICAqIHRvb2xzL0lu
dGVncml0eS5oOgorICAgICAgICAqIHRvb2xzL0ludGVncml0eUlubGluZXMuaDoKKyAgICAgICAg
KEpTQzo6SW50ZWdyaXR5OjphdWRpdFN0cnVjdHVyZUlEKToKKyAgICAgICAgKiB3YXNtL2pzL1dl
YkFzc2VtYmx5R2xvYmFsUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0R2xvYmFsKToK
KwogMjAyMC0wNC0wNCAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CiAK
ICAgICAgICAgJ1x1JyBzaG91bGQgdGhyb3cgYW4gZWFybHkgU3ludGF4RXJyb3IgZXhjZXB0aW9u
LCBidXQgaW5zdGVhZCBldmFsdWF0ZXMgdG8gJ3UnCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CShyZXZpc2lvbiAyNTk1NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTgyMCw2ICs4MjAsNyBAQCBzZXQoSmF2
YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBCiAgICAgcnVudGltZS9EaXNhbGxvd1Nj
b3BlLmgKICAgICBydW50aW1lL0Rpc2FsbG93Vk1SZWVudHJ5LmgKICAgICBydW50aW1lL0R1bXBD
b250ZXh0LmgKKyAgICBydW50aW1lL0Vuc3VyZVN0aWxsQWxpdmVIZXJlLmgKICAgICBydW50aW1l
L0VudW1lcmF0aW9uTW9kZS5oCiAgICAgcnVudGltZS9FcnJvci5oCiAgICAgcnVudGltZS9FcnJv
ckhhbmRsaW5nU2NvcGUuaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAkocmV2aXNp
b24gMjU5NTQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC03NjQsNiArNzY0LDcgQEAgcnVudGltZS9EaXNhbGxvd1ZNUmVlbnRyeS5jcHAK
IHJ1bnRpbWUvRG91YmxlUHJlZGljdGlvbkZ1enplckFnZW50LmNwcAogcnVudGltZS9EdW1wQ29u
dGV4dC5jcHAKIHJ1bnRpbWUvRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5jcHAKK3J1
bnRpbWUvRW5zdXJlU3RpbGxBbGl2ZUhlcmUuY3BwCiBydW50aW1lL0Vycm9yLmNwcAogcnVudGlt
ZS9FcnJvckNvbnN0cnVjdG9yLmNwcAogcnVudGltZS9FcnJvckhhbmRsaW5nU2NvcGUuY3BwCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjU5NTQxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHdvcmtpbmcgY29weSkKQEAgLTE4ODgsNiArMTg4OCw3IEBACiAJCUZFMzAyMkQ3MUU0Mjg1
NzMwMEJBQzQ5MyAvKiBWTUluc3BlY3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkUzMDIyRDUxRTQyODU2NzAwQkFDNDkzIC8qIFZNSW5zcGVjdG9y
LmggKi87IH07CiAJCUZFMzE4RkUwMUNBQzk4MkYwMERGQ0M1NCAvKiBFQ01BU2NyaXB0U3BlY0lu
dGVybmFsRnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRTMxOEZERTFDQUM4QzUzMDBERkNDNTQgLyogRUNNQVNjcmlwdFNwZWNJbnRlcm5h
bEZ1bmN0aW9ucy5oICovOyB9OwogCQlGRTM0MjIxMjFENkI4MUMzMDAzMkJFODggLyogVGhyb3dT
Y29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUz
NDIyMTExRDZCODE4QzAwMzJCRTg4IC8qIFRocm93U2NvcGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGRTM0RUUyMTI0Mzk4QUFFMDBBQTJFN0Mg
LyogRW5zdXJlU3RpbGxBbGl2ZUhlcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZFMzRFRTIwMjQzOThBOUEwMEFBMkU3QyAvKiBFbnN1cmVTdGlsbEFs
aXZlSGVyZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUZFMzg0MjMzMjMyNEQ1MUIwMDlERDQ0NSAvKiBPcHRpb25zTGlzdC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzODQyMzEyMzI0RDUxQjAwOURE
NDQ1IC8qIE9wdGlvbnNMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJRkUzODRFRTYxQUREQjdBRDAwNTVERTJDIC8qIEpTRG9sbGFyVk0uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzg0RUUyMUFE
REI3QUQwMDU1REUyQyAvKiBKU0RvbGxhclZNLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkUzQTA2QTYxQzEwQjcyRDAwMzkwRkREIC8qIEpJVEJp
dE9yR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGRTNBMDZBNDFDMTBCNzA4MDAzOTBGREQgLyogSklUQml0T3JHZW5lcmF0b3IuaCAqLzsg
fTsKQEAgLTUxMjIsNiArNTEyMyw4IEBACiAJCUZFMzE4RkREMUNBQzhDNTMwMERGQ0M1NCAvKiBF
Q01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEVDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTMxOEZERTFDQUM4QzUzMDBERkNDNTQgLyogRUNN
QVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBFQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUZFMzQyMjExMUQ2QjgxOEMwMDMyQkU4OCAvKiBUaHJvd1Njb3BlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRocm93U2NvcGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkUzNEVFMjAyNDM5OEE5QTAwQUEyRTdDIC8qIEVuc3VyZVN0
aWxsQWxpdmVIZXJlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVuc3VyZVN0aWxsQWxpdmVIZXJlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMzRFRTIyMjQzOThCODUwMEFBMkU3QyAvKiBF
bnN1cmVTdGlsbEFsaXZlSGVyZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBFbnN1cmVTdGlsbEFsaXZlSGVyZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUZFMzVDMkYwMjFCMUU2QzUwMDBGNENBOCAvKiBUZW1wbGF0ZS5yYiAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQuc2NyaXB0LnJ1Ynk7IHBhdGggPSBUZW1wbGF0ZS5yYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRkUzNUMyRjEyMUIxRTZDNjAwMEY0Q0E4IC8qIEZpdHMucmIgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0LnNjcmlwdC5ydWJ5OyBwYXRoID0gRml0cy5yYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRkUzNUMyRjIyMUIxRTZDNjAwMEY0Q0E4IC8qIEdlbmVyYXRlZEZpbGUucmIgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0LnNjcmlwdC5ydWJ5OyBwYXRoID0gR2VuZXJhdGVkRmlsZS5yYjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcxMTEsNiArNzExNCw4IEBACiAJCQkJQTcwNDQ3RUMxN0Ew
QkQ3MDAwRjU4OThFIC8qIER1bXBDb250ZXh0LmggKi8sCiAJCQkJRkUzMThGREQxQ0FDOEM1MzAw
REZDQzU0IC8qIEVDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuY3BwICovLAogCQkJCUZF
MzE4RkRFMUNBQzhDNTMwMERGQ0M1NCAvKiBFQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25z
LmggKi8sCisJCQkJRkUzNEVFMjIyNDM5OEI4NTAwQUEyRTdDIC8qIEVuc3VyZVN0aWxsQWxpdmVI
ZXJlLmNwcCAqLywKKwkJCQlGRTM0RUUyMDI0Mzk4QTlBMDBBQTJFN0MgLyogRW5zdXJlU3RpbGxB
bGl2ZUhlcmUuaCAqLywKIAkJCQkyQUQyRURGQTE5Nzk5RTM4MDA0RDY0NzggLyogRW51bWVyYXRp
b25Nb2RlLmggKi8sCiAJCQkJQkMzMzdCRUEwRTFCMDBDQjAwNzY5MThBIC8qIEVycm9yLmNwcCAq
LywKIAkJCQlCQzMwNDYwNjBFMUY0OTdGMDAzMjMyQ0YgLyogRXJyb3IuaCAqLywKQEAgLTg5Mjcs
NiArODkzMiw3IEBACiAJCQkJMEZFMDUwMTQxQUE5MDkxMTAwRDMzQjMzIC8qIEFyZ3VtZW50c01v
ZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTc5QTIyODM2MUQzNUQ3MUYwMEQ4RTA2NyAvKiBBcml0
aFByb2ZpbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNkIxQ0I5MTg2MTI0NEMwMDg0NUQ5NyAv
KiBBcml0eUNoZWNrTW9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkUzNEVFMjEyNDM5OEFBRTAw
QUEyRTdDIC8qIEVuc3VyZVN0aWxsQWxpdmVIZXJlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMUEw
MDlDMTE4MzFBMjZFMDBDRjg3MTEgLyogQVJNNjRBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUZFMUUyQzQwMjI0MERENjIwMEY2QjcyOSAvKiBBUk02NEVBc3NlbWJsZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUExQTAwOUMxMTgzMUEyNkUwMENGODcyMiAvKiBBUk02NFJlZ2lzdGVycy5o
IGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwQ2Vs
bC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcENlbGwu
Y3BwCShyZXZpc2lvbiAyNTk1NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
Q2VsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE2LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MiwxMyArNDIsNiBAQCBib29sIEhlYXBDZWxs
Ojppc0xpdmUoKQogICAgIHJldHVybiBtYXJrZWRCbG9ja0hhbmRsZS5pc0xpdmUodGhpcyk7CiB9
CiAKLSNpZiAhQ09NUElMRVIoR0NDX0NPTVBBVElCTEUpCi0vLyBUaGlzIG1ha2VzIHRoZSBhcmd1
bWVudCBvcGFxdWUgZnJvbSB0aGUgY29tcGlsZXIuCi1ORVZFUl9JTkxJTkUgdm9pZCBlbnN1cmVT
dGlsbEFsaXZlSGVyZShjb25zdCB2b2lkKikKLXsKLX0KLSNlbmRpZgotCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKIAogbmFtZXNwYWNlIFdURiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9IZWFwQ2VsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXBDZWxsLmgJKHJldmlzaW9uIDI1OTU0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXBDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE2LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9u
Y2UKIAogI2luY2x1ZGUgIkRlc3RydWN0aW9uTW9kZS5oIgorI2luY2x1ZGUgIkVuc3VyZVN0aWxs
QWxpdmVIZXJlLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC0zNywxNSArMzgsNiBAQCBjbGFz
cyBTdWJzcGFjZTsKIGNsYXNzIFZNOwogc3RydWN0IENlbGxBdHRyaWJ1dGVzOwogCi0jaWYgQ09N
UElMRVIoR0NDX0NPTVBBVElCTEUpCi1BTFdBWVNfSU5MSU5FIHZvaWQgZW5zdXJlU3RpbGxBbGl2
ZUhlcmUoY29uc3Qgdm9pZCogcG9pbnRlcikKLXsKLSAgICBhc20gdm9sYXRpbGUgKCIiIDogOiAi
ciIocG9pbnRlcikgOiAibWVtb3J5Iik7Ci19Ci0jZWxzZQotSlNfRVhQT1JUX1BSSVZBVEUgdm9p
ZCBlbnN1cmVTdGlsbEFsaXZlSGVyZShjb25zdCB2b2lkKik7Ci0jZW5kaWYKLQogY2xhc3MgSGVh
cENlbGwgewogcHVibGljOgogICAgIGVudW0gS2luZCA6IGludDhfdCB7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuY3BwCShyZXZpc2lvbiAyNTk1NDEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0yMDAsMTEgKzIwMCw4IEBAIHZvaWQgU2xvdFZpc2l0b3I6OmFwcGVuZEpTQ2VsbE9y
QXV4aWxpYXIKICAgICAgICAgaWYgKGlzTnVrZWQoc3RydWN0dXJlSUQpKQogICAgICAgICAgICAg
ZGllKCJHQyBzY2FuIGZvdW5kIG9iamVjdCBpbiBiYWQgc3RhdGU6IHN0cnVjdHVyZUlEIGlzIG51
a2VkIVxuIik7CiAgICAgICAgIAotI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIC8vIFRoaXMg
ZGV0ZWN0cyB0aGUgd29yc3Qgb2YgdGhlIGJhZG5lc3MuCi0gICAgICAgIGlmICghaGVhcCgpLT5z
dHJ1Y3R1cmVJRFRhYmxlKCkuaXNWYWxpZChzdHJ1Y3R1cmVJRCkpCi0gICAgICAgICAgICBkaWUo
IkdDIHNjYW4gZm91bmQgY29ycnVwdCBvYmplY3Q6IHN0cnVjdHVyZUlEIGlzIGludmFsaWQhXG4i
KTsKLSNlbmRpZgorICAgICAgICBJbnRlZ3JpdHk6OmF1ZGl0U3RydWN0dXJlSUQoaGVhcCgpLT5z
dHJ1Y3R1cmVJRFRhYmxlKCksIHN0cnVjdHVyZUlEKTsKICAgICB9OwogICAgIAogICAgIC8vIElu
IGRlYnVnIG1vZGUsIHdlIHZhbGlkYXRlIGJlZm9yZSBtYXJraW5nIHNpbmNlIHRoaXMgbWFrZXMg
aXQgY2xlYXJlciB3aGF0IHRoZSBwcm9ibGVtCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyNTk1NDEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhh
cnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwMy0y
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBDb3B5cmlnaHQgKEMpIDIw
MDMgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKICAqICBDb3B5cmlnaHQgKEMpIDIwMDYgQWxl
eGV5IFByb3NrdXJ5YWtvdiAoYXBAbnlwb3AuY29tKQogICoKQEAgLTMxLDYgKzMxLDcgQEAKICNp
bmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUgIkdldHRl
clNldHRlci5oIgorI2luY2x1ZGUgIkludGVncml0eUlubGluZXMuaCIKICNpbmNsdWRlICJJbnRl
cnByZXRlci5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpTQXJyYXlJbmxpbmVzLmgi
CkBAIC02MDMsNiArNjA0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVBy
b3RvRgogCiAgICAgLy8gMS4gTGV0IGFycmF5IGJlIHRoZSByZXN1bHQgb2YgY2FsbGluZyBUb09i
amVjdCBvbiB0aGUgdGhpcyB2YWx1ZS4KICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IHRoaXNW
YWx1ZS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIEludGVncml0eTo6YXVkaXRTdHJ1Y3R1
cmVJRCh2bSwgdGhpc09iamVjdC0+c3RydWN0dXJlSUQoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBpZiAoIWNhblVzZURlZmF1bHRB
cnJheUpvaW5Gb3JUb1N0cmluZyh2bSwgdGhpc09iamVjdCkpIHsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludFByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50UHJvdG90eXBlLmNwcAkocmV2aXNpb24g
MjU5NTQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50UHJvdG90eXBl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQ2FpbyBMaW1hIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4uCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTctMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkJpZ0lu
dE9iamVjdC5oIgogI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSW50ZWdyaXR5SW5saW5l
cy5oIgogI2luY2x1ZGUgIkpTQmlnSW50LmgiCiAjaW5jbHVkZSAiSlNDQnVpbHRpbnMuaCIKICNp
bmNsdWRlICJKU0NJbmxpbmVzLmgiCkBAIC0xMDEsNiArMTAyLDcgQEAgc3RhdGljIEpTVmFsdWUg
YmlnSW50UHJvdG9GdW5jVG9TdHJpbmdJbQogCiAgICAgQVNTRVJUKHZhbHVlKTsKIAorICAgIElu
dGVncml0eTo6YXVkaXRTdHJ1Y3R1cmVJRCh2bSwgdmFsdWUtPnN0cnVjdHVyZUlEKCkpOwogICAg
IGludDMyX3QgcmFkaXggPSBleHRyYWN0VG9TdHJpbmdSYWRpeEFyZ3VtZW50KGdsb2JhbE9iamVj
dCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgc2NvcGUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHsgfSk7CiAKQEAgLTEyNiwxMSArMTI4LDE0IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgYmlnSW50UHJvdG8KIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYmln
SW50UHJvdG9GdW5jVmFsdWVPZihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0gICAg
aWYgKEpTQmlnSW50KiB2YWx1ZSA9IHRvVGhpc0JpZ0ludFZhbHVlKHZtLCBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh2YWx1ZSk7Ci0gICAg
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICIndGhpcycgdmFsdWUgbXVzdCBi
ZSBhIEJpZ0ludCBvciBCaWdJbnRPYmplY3QiX3MpOworCisgICAgSlNCaWdJbnQqIHZhbHVlID0g
dG9UaGlzQmlnSW50VmFsdWUodm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICgh
dmFsdWUpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICIndGhpcycgdmFsdWUgbXVzdCBiZSBhIEJpZ0ludCBvciBCaWdJbnRPYmplY3QiX3MpOwor
CisgICAgSW50ZWdyaXR5OjphdWRpdFN0cnVjdHVyZUlEKHZtLCB2YWx1ZS0+c3RydWN0dXJlSUQo
KSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh2YWx1ZSk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3Rv
dHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9v
bGVhblByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI1OTU0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYg
KzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBv
cnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwMywgMjAwOCwgMjAxMSwgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpA
QCAtMjMsNiArMjMsNyBAQAogCiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJFeGNlcHRp
b25IZWxwZXJzLmgiCisjaW5jbHVkZSAiSW50ZWdyaXR5SW5saW5lcy5oIgogI2luY2x1ZGUgIkpT
RnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgogI2luY2x1ZGUgIk9iamVjdFByb3Rv
dHlwZS5oIgpAQCAtODAsNiArODEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJv
b2xlYW5Qcm90CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqZWN0KSkKICAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7CiAKKyAgICBJbnRlZ3JpdHk6
OmF1ZGl0U3RydWN0dXJlSUQodm0sIHRoaXNPYmplY3QtPnN0cnVjdHVyZUlEKCkpOwogICAgIGlm
ICh0aGlzT2JqZWN0LT5pbnRlcm5hbFZhbHVlKCkgPT0ganNCb29sZWFuKGZhbHNlKSkKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh2bS5zbWFsbFN0cmluZ3MuZmFsc2VTdHJpbmcoKSk7
CiAKQEAgLTk5LDYgKzEwMSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm9vbGVh
blByb3QKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmplY3QpKQogICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKTsKIAorICAgIEludGVncml0eTo6YXVk
aXRTdHJ1Y3R1cmVJRCh2bSwgdGhpc09iamVjdC0+c3RydWN0dXJlSUQoKSk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0aGlzT2JqZWN0LT5pbnRlcm5hbFZhbHVlKCkpOwogfQogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAko
cmV2aXNpb24gMjU5NTQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVBy
b3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHly
aWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29w
eXJpZ2h0IChDKSAyMDA0LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
IENvcHlyaWdodCAoQykgMjAwNC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqICBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgVG9yY2ggTW9iaWxlLCBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDEwIFRvcmNoIE1vYmlsZSAoQmVpamlu
ZykgQ28uIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC0yNyw2ICsyNyw3IEBACiAj
aW5jbHVkZSAiRGF0ZUNvbnZlcnNpb24uaCIKICNpbmNsdWRlICJEYXRlSW5zdGFuY2UuaCIKICNp
bmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkludGVncml0eUlubGluZXMuaCIKICNpbmNsdWRl
ICJKU0NCdWlsdGlucy5oIgogI2luY2x1ZGUgIkpTRGF0ZU1hdGguaCIKICNpbmNsdWRlICJKU0ds
b2JhbE9iamVjdC5oIgpAQCAtMTQwLDkgKzE0MSwxMSBAQCBzdGF0aWMgQ0ZEYXRlRm9ybWF0dGVy
U3R5bGUgc3R5bGVGcm9tQXJnCiAgICAgcmV0dXJuIGRlZmF1bHRTdHlsZTsKIH0KIAotc3RhdGlj
IEpTQ2VsbCogZm9ybWF0TG9jYWxlRGF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSwgRGF0ZUluc3RhbmNlKiwgZG91YmxlIHRpbWVJbk1pbGxpc2Vj
b25kcywgTG9jYWxlRGF0ZVRpbWVGb3JtYXQgZm9ybWF0KQorc3RhdGljIEpTQ2VsbCogZm9ybWF0
TG9jYWxlRGF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSwgRGF0ZUluc3RhbmNlKiBkYXRlT2JqZWN0LCBkb3VibGUgdGltZUluTWlsbGlzZWNvbmRz
LCBMb2NhbGVEYXRlVGltZUZvcm1hdCBmb3JtYXQpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOworICAgIEludGVncml0eTo6YXVkaXRTdHJ1Y3R1cmVJRCh2bSwgZGF0ZU9iamVj
dC0+c3RydWN0dXJlSUQoKSk7CisKICAgICBDRkRhdGVGb3JtYXR0ZXJTdHlsZSBkYXRlU3R5bGUg
PSAoZm9ybWF0ICE9IExvY2FsZVRpbWUgPyBrQ0ZEYXRlRm9ybWF0dGVyTG9uZ1N0eWxlIDoga0NG
RGF0ZUZvcm1hdHRlck5vU3R5bGUpOwogICAgIENGRGF0ZUZvcm1hdHRlclN0eWxlIHRpbWVTdHls
ZSA9IChmb3JtYXQgIT0gTG9jYWxlRGF0ZSA/IGtDRkRhdGVGb3JtYXR0ZXJMb25nU3R5bGUgOiBr
Q0ZEYXRlRm9ybWF0dGVyTm9TdHlsZSk7CiAKQEAgLTE3MSw5ICsxNzQsMTEgQEAgc3RhdGljIEpT
Q2VsbCogZm9ybWF0TG9jYWxlRGF0ZShKU0dsb2JhbAogCiAjZWxpZiAhVUNPTkZJR19OT19GT1JN
QVRUSU5HCiAKLXN0YXRpYyBKU0NlbGwqIGZvcm1hdExvY2FsZURhdGUoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiwgRGF0ZUluc3RhbmNlKiwgZG91YmxlIHRpbWVJbk1p
bGxpc2Vjb25kcywgTG9jYWxlRGF0ZVRpbWVGb3JtYXQgZm9ybWF0KQorc3RhdGljIEpTQ2VsbCog
Zm9ybWF0TG9jYWxlRGF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
LCBEYXRlSW5zdGFuY2UqIGRhdGVPYmplY3QsIGRvdWJsZSB0aW1lSW5NaWxsaXNlY29uZHMsIExv
Y2FsZURhdGVUaW1lRm9ybWF0IGZvcm1hdCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CisgICAgSW50ZWdyaXR5OjphdWRpdFN0cnVjdHVyZUlEKHZtLCBkYXRlT2JqZWN0LT5z
dHJ1Y3R1cmVJRCgpKTsKKwogICAgIFVEYXRlRm9ybWF0U3R5bGUgdGltZVN0eWxlID0gKGZvcm1h
dCAhPSBMb2NhbGVEYXRlID8gVURBVF9MT05HIDogVURBVF9OT05FKTsKICAgICBVRGF0ZUZvcm1h
dFN0eWxlIGRhdGVTdHlsZSA9IChmb3JtYXQgIT0gTG9jYWxlVGltZSA/IFVEQVRfTE9ORyA6IFVE
QVRfTk9ORSk7CiAKQEAgLTMxMSw2ICszMTYsOCBAQCBzdGF0aWMgSlNDZWxsKiBmb3JtYXRMb2Nh
bGVEYXRlKEpTR2xvYmFsCiBzdGF0aWMgSlNDZWxsKiBmb3JtYXRMb2NhbGVEYXRlKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBEYXRlSW5zdGFuY2Uq
IGRhdGVPYmplY3QsIGRvdWJsZSwgTG9jYWxlRGF0ZVRpbWVGb3JtYXQgZm9ybWF0KQogewogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBJbnRlZ3JpdHk6OmF1ZGl0U3RydWN0
dXJlSUQodm0sIGRhdGVPYmplY3QtPnN0cnVjdHVyZUlEKCkpOworCiAgICAgY29uc3QgR3JlZ29y
aWFuRGF0ZVRpbWUqIGdyZWdvcmlhbkRhdGVUaW1lID0gZGF0ZU9iamVjdC0+Z3JlZ29yaWFuRGF0
ZVRpbWUodm0pOwogICAgIGlmICghZ3JlZ29yaWFuRGF0ZVRpbWUpCiAgICAgICAgIHJldHVybiBq
c05vbnRyaXZpYWxTdHJpbmcodm0sICJJbnZhbGlkIERhdGUiX3MpOwpAQCAtMzI4LDYgKzMzNSw3
IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBmb3JtYXRlRGF0ZUluc3RhbmMKICAgICBpZiAoVU5M
SUtFTFkoIXRoaXNEYXRlT2JqKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSk7CiAKKyAgICBJbnRlZ3JpdHk6OmF1ZGl0U3RydWN0dXJlSUQodm0s
IHRoaXNEYXRlT2JqLT5zdHJ1Y3R1cmVJRCgpKTsKICAgICBjb25zdCBHcmVnb3JpYW5EYXRlVGlt
ZSogZ3JlZ29yaWFuRGF0ZVRpbWUgPSBhc1VUQ1ZhcmlhbnQKICAgICAgICAgPyB0aGlzRGF0ZU9i
ai0+Z3JlZ29yaWFuRGF0ZVRpbWVVVEModm0pCiAgICAgICAgIDogdGhpc0RhdGVPYmotPmdyZWdv
cmlhbkRhdGVUaW1lKHZtKTsKQEAgLTU0Myw3ICs1NTEsOCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGRhdGVQcm90b0Z1CiAgICAgYXV0byogdGhpc0RhdGVPYmogPSBqc0R5bmFtaWND
YXN0PERhdGVJbnN0YW5jZSo+KHZtLCB0aGlzVmFsdWUpOwogICAgIGlmIChVTkxJS0VMWSghdGhp
c0RhdGVPYmopKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlKTsKLSAgICAKKworICAgIEludGVncml0eTo6YXVkaXRTdHJ1Y3R1cmVJRCh2bSwgdGhp
c0RhdGVPYmotPnN0cnVjdHVyZUlEKCkpOwogICAgIGlmICghc3RkOjppc2Zpbml0ZSh0aGlzRGF0
ZU9iai0+aW50ZXJuYWxOdW1iZXIoKSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsICJJbnZhbGlk
IERhdGUiX3MpKTsKIApAQCAtNjI3LDYgKzYzNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZGF0ZVByb3RvRnUKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQogICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRGF0ZS5wcm90
b3R5cGVbU3ltYm9sLnRvUHJpbWl0aXZlXSBleHBlY3RlZCB8dGhpc3wgdG8gYmUgYW4gb2JqZWN0
LiIpOwogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTT2JqZWN0Kj4odGhpc1Zh
bHVlKTsKKyAgICBJbnRlZ3JpdHk6OmF1ZGl0U3RydWN0dXJlSUQodm0sIHRoaXNPYmplY3QtPnN0
cnVjdHVyZUlEKCkpOwogCiAgICAgaWYgKCFjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSkKICAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkRhdGUu
cHJvdG90eXBlW1N5bWJvbC50b1ByaW1pdGl2ZV0gZXhwZWN0ZWQgYSBmaXJzdCBhcmd1bWVudC4i
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vuc3VyZVN0aWxsQWxpdmVI
ZXJlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FbnN1
cmVTdGlsbEFsaXZlSGVyZS5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRW5zdXJlU3RpbGxBbGl2ZUhlcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRW5zdXJlU3RpbGxBbGl2ZUhlcmUuaCIK
KworbmFtZXNwYWNlIEpTQyB7CisKKyNpZiAhQ09NUElMRVIoR0NDX0NPTVBBVElCTEUpCisKKy8v
IFRoZXNlIG1ha2VzIHRoZSBhcmd1bWVudCBvcGFxdWUgZnJvbSB0aGUgY29tcGlsZXIuCisKK05F
VkVSX0lOTElORSB2b2lkIGVuc3VyZVN0aWxsQWxpdmVIZXJlKHVpbnQ2NF90KQoreworfQorCitO
RVZFUl9JTkxJTkUgdm9pZCBlbnN1cmVTdGlsbEFsaXZlSGVyZShjb25zdCB2b2lkKikKK3sKK30K
KworI2VuZGlmIC8vICFDT01QSUxFUihHQ0NfQ09NUEFUSUJMRSkKKworfSAvLyBuYW1lc3BhY2Ug
SlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FbnN1cmVTdGlsbEFsaXZl
SGVyZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vuc3Vy
ZVN0aWxsQWxpdmVIZXJlLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRW5zdXJlU3RpbGxBbGl2ZUhlcmUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKK25hbWVzcGFjZSBKU0MgeworCisjaWYgQ09NUElMRVIoR0NDX0NPTVBBVElC
TEUpCisKK0FMV0FZU19JTkxJTkUgdm9pZCBlbnN1cmVTdGlsbEFsaXZlSGVyZSh1aW50NjRfdCB2
YWx1ZSkKK3sKKyAgICBhc20gdm9sYXRpbGUgKCIiIDogOiAiciIodmFsdWUpIDogIm1lbW9yeSIp
OworfQorCitBTFdBWVNfSU5MSU5FIHZvaWQgZW5zdXJlU3RpbGxBbGl2ZUhlcmUoY29uc3Qgdm9p
ZCogcG9pbnRlcikKK3sKKyAgICBhc20gdm9sYXRpbGUgKCIiIDogOiAiciIocG9pbnRlcikgOiAi
bWVtb3J5Iik7Cit9CisKKyNlbHNlCisKK0pTX0VYUE9SVF9QUklWQVRFIHZvaWQgZW5zdXJlU3Rp
bGxBbGl2ZUhlcmUodWludDY0X3QgdmFsdWUpCitKU19FWFBPUlRfUFJJVkFURSB2b2lkIGVuc3Vy
ZVN0aWxsQWxpdmVIZXJlKGNvbnN0IHZvaWQqKTsKKworI2VuZGlmCisKK30gLy8gbmFtZXNwYWNl
IEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0
YW5jZS5jcHAJKHJldmlzaW9uIDI1OTU0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Vycm9ySW5zdGFuY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoK
ICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3Jn
KQotICogIENvcHlyaWdodCAoQykgMjAwMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0yMyw2ICsyMyw3IEBACiAKICNpbmNs
dWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJJbmxpbmVDYWxsRnJhbWUuaCIKKyNpbmNsdWRl
ICJJbnRlZ3JpdHlJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRl
ICJKU1Njb3BlLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgpAQCAtMTM5LDYgKzE0MCw3IEBA
IFN0cmluZyBFcnJvckluc3RhbmNlOjpzYW5pdGl6ZWRUb1N0cmluZygKIHsKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworICAgIEludGVncml0eTo6YXVkaXRTdHJ1Y3R1cmVJRCh2bSwgc3RydWN0dXJlSUQo
KSk7CiAKICAgICBKU1ZhbHVlIG5hbWVWYWx1ZTsKICAgICBhdXRvIG5hbWVQcm9wZXJ0TmFtZSA9
IHZtLnByb3BlcnR5TmFtZXMtPm5hbWU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FcnJvclByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyNTk1NDEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJp
IFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwMy0yMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAg
LTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJFcnJvclByb3RvdHlwZS5oIgogCiAjaW5jbHVkZSAi
RXJyb3IuaCIKKyNpbmNsdWRlICJJbnRlZ3JpdHlJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNGdW5j
dGlvbi5oIgogI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIk9iamVjdFBy
b3RvdHlwZS5oIgpAQCAtODIsNiArODMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGVycm9yUHJvdG9GCiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKICAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7CiAgICAgSlNPYmplY3Qq
IHRoaXNPYmogPSBhc09iamVjdCh0aGlzVmFsdWUpOworICAgIEludGVncml0eTo6YXVkaXRTdHJ1
Y3R1cmVJRCh2bSwgdGhpc09iai0+c3RydWN0dXJlSUQoKSk7CiAKICAgICAvLyBHdWFyZCBhZ2Fp
bnN0IHJlY3Vyc2lvbiEKICAgICBTdHJpbmdSZWN1cnNpb25DaGVja2VyIGNoZWNrZXIoZ2xvYmFs
T2JqZWN0LCB0aGlzT2JqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1
bmN0aW9uUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI1OTU0MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFy
cmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpA
QCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgogI2luY2x1ZGUgIkVy
cm9yLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCisjaW5jbHVkZSAiSW50ZWdyaXR5SW5s
aW5lcy5oIgogI2luY2x1ZGUgIkpTQXN5bmNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lubGlu
ZXMuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCkBAIC04NCw2ICs4NSw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Qcm8KICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKHRoaXNWYWx1ZS5pbmhlcml0czxKU0Z1
bmN0aW9uPih2bSkpIHsKICAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNG
dW5jdGlvbio+KHRoaXNWYWx1ZSk7CisgICAgICAgIEludGVncml0eTo6YXVkaXRTdHJ1Y3R1cmVJ
RCh2bSwgZnVuY3Rpb24tPnN0cnVjdHVyZUlEKCkpOwogICAgICAgICBpZiAoZnVuY3Rpb24tPmlz
SG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpCiAgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGdsb2JhbE9iamVj
dCwgImZ1bmN0aW9uICIsIGZ1bmN0aW9uLT5uYW1lKHZtKSwgIigpIHtcbiAgICBbbmF0aXZlIGNv
ZGVdXG59IikpKTsKIApAQCAtMTQwLDExICsxNDIsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvblBybwogCiAgICAgaWYgKHRoaXNWYWx1ZS5pbmhlcml0czxJbnRlcm5h
bEZ1bmN0aW9uPih2bSkpIHsKICAgICAgICAgSW50ZXJuYWxGdW5jdGlvbiogZnVuY3Rpb24gPSBq
c0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KHRoaXNWYWx1ZSk7CisgICAgICAgIEludGVncml0eTo6
YXVkaXRTdHJ1Y3R1cmVJRCh2bSwgZnVuY3Rpb24tPnN0cnVjdHVyZUlEKCkpOwogICAgICAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFs
U3RyaW5nKGdsb2JhbE9iamVjdCwgImZ1bmN0aW9uICIsIGZ1bmN0aW9uLT5uYW1lKCksICIoKSB7
XG4gICAgW25hdGl2ZSBjb2RlXVxufSIpKSk7CiAgICAgfQogCiAgICAgaWYgKHRoaXNWYWx1ZS5p
c09iamVjdCgpKSB7CiAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdCh0aGlzVmFs
dWUpOworICAgICAgICBJbnRlZ3JpdHk6OmF1ZGl0U3RydWN0dXJlSUQodm0sIG9iamVjdC0+c3Ry
dWN0dXJlSUQoKSk7CiAgICAgICAgIGlmIChvYmplY3QtPmlzRnVuY3Rpb24odm0pKQogICAgICAg
ICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9u
dHJpdmlhbFN0cmluZyhnbG9iYWxPYmplY3QsICJmdW5jdGlvbiAiLCBvYmplY3QtPmNsYXNzSW5m
byh2bSktPmNsYXNzTmFtZSwgIigpIHtcbiAgICBbbmF0aXZlIGNvZGVdXG59IikpKTsKICAgICB9
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAJKHJldmlzaW9u
IDI1OTU0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0y
MDAxIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAx
IFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwMy0y
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJBcnJheUJ1ZmZlclZpZXcuaCIKICNpbmNs
dWRlICJCbG9ja0RpcmVjdG9yeUlubGluZXMuaCIKKyNpbmNsdWRlICJJbnRlZ3JpdHlJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiSXNvU3Vic3BhY2VJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5l
cy5oIgogI2luY2x1ZGUgIkpTQ2FzdC5oIgpAQCAtMTkxLDYgKzE5Miw3IEBAIGRvdWJsZSBKU0Nl
bGw6OnRvTnVtYmVyKEpTR2xvYmFsT2JqZWN0KiAKIAogSlNPYmplY3QqIEpTQ2VsbDo6dG9PYmpl
Y3RTbG93KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiB7CisgICAgSW50ZWdy
aXR5OjphdWRpdFN0cnVjdHVyZUlEKGdsb2JhbE9iamVjdC0+dm0oKSwgc3RydWN0dXJlSUQoKSk7
CiAgICAgQVNTRVJUKCFpc09iamVjdCgpKTsKICAgICBpZiAoaXNTdHJpbmcoKSkKICAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTU3RyaW5nKj4odGhpcyktPnRvT2JqZWN0KGdsb2Jh
bE9iamVjdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90
b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051
bWJlclByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI1OTU0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiAr
MSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwLDIwMDMgSGFycmkgUG9ydGVu
IChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDctMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA3LTIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMjQsNiAr
MjQsNyBAQAogCiAjaW5jbHVkZSAiQmlnSW50ZWdlci5oIgogI2luY2x1ZGUgIkVycm9yLmgiCisj
aW5jbHVkZSAiSW50ZWdyaXR5SW5saW5lcy5oIgogI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXQu
aCIKICNpbmNsdWRlICJJbnRsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgpAQCAt
OTgsNiArOTksNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBib29sIHRvVGhpc051bWJlcihWCiAg
ICAgfQogCiAgICAgaWYgKGF1dG8qIG51bWJlck9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8TnVtYmVy
T2JqZWN0Kj4odm0sIHRoaXNWYWx1ZSkpIHsKKyAgICAgICAgSW50ZWdyaXR5OjphdWRpdFN0cnVj
dHVyZUlEKHZtLCBudW1iZXJPYmplY3QtPnN0cnVjdHVyZUlEKCkpOwogICAgICAgICB4ID0gbnVt
YmVyT2JqZWN0LT5pbnRlcm5hbFZhbHVlKCkuYXNOdW1iZXIoKTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJv
dG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
YmplY3RQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyNTk1NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYg
KzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBv
cnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwOC0yMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0yNCw2ICsyNCw3
IEBACiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNs
dWRlICJIYXNPd25Qcm9wZXJ0eUNhY2hlLmgiCisjaW5jbHVkZSAiSW50ZWdyaXR5SW5saW5lcy5o
IgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgogI2luY2x1
ZGUgIkpTQ0lubGluZXMuaCIKQEAgLTg0LDYgKzg1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBvYmplY3RQcm90bwogICAgIEpTT2JqZWN0KiB2YWx1ZU9iaiA9IHRoaXNWYWx1ZS50
b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIGlmIChVTkxJS0VMWSghdmFsdWVPYmopKQogICAg
ICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKKyAgICBJbnRlZ3JpdHk6OmF1ZGl0U3RydWN0
dXJlSUQoZ2xvYmFsT2JqZWN0LT52bSgpLCB2YWx1ZU9iai0+c3RydWN0dXJlSUQoKSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh2YWx1ZU9iaik7CiB9CiAKQEAgLTMxNyw2ICszMTksNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvCiAgICAgaWYgKHRoaXNW
YWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRoaXNWYWx1ZS5pc1VuZGVmaW5lZCgpID8gdm0uc21hbGxTdHJpbmdzLnVuZGVmaW5lZE9iamVj
dFN0cmluZygpIDogdm0uc21hbGxTdHJpbmdzLm51bGxPYmplY3RTdHJpbmcoKSk7CiAgICAgSlNP
YmplY3QqIHRoaXNPYmplY3QgPSB0aGlzVmFsdWUudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAg
ICBJbnRlZ3JpdHk6OmF1ZGl0U3RydWN0dXJlSUQodm0sIHRoaXNPYmplY3QtPnN0cnVjdHVyZUlE
KCkpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhdGhpc09i
amVjdCk7CiAgICAgaWYgKCF0aGlzT2JqZWN0KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyNTk1NDEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQ
b3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwMy0yMDE5IEFwcGxl
IEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMCBB
cHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0y
NCw2ICsyNCw3IEBACiAjaW5jbHVkZSAiQXJyYXlQcm90b3R5cGUuaCIKICNpbmNsdWRlICJCdWls
dGluTmFtZXMuaCIKICNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkludGVncml0eUlubGlu
ZXMuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCiAjaW5jbHVkZSAiSlNDQnVpbHRpbnMuaCIKICNp
bmNsdWRlICJKU0NJbmxpbmVzLmgiCkBAIC0yMTcsNiArMjE4LDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90bwogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlKTsKIAogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gYXNP
YmplY3QodGhpc1ZhbHVlKTsKKyAgICBJbnRlZ3JpdHk6OmF1ZGl0U3RydWN0dXJlSUQodm0sIHRo
aXNPYmplY3QtPnN0cnVjdHVyZUlEKCkpOwogCiAgICAgU3RyaW5nUmVjdXJzaW9uQ2hlY2tlciBj
aGVja2VyKGdsb2JhbE9iamVjdCwgdGhpc09iamVjdCk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCgh
c2NvcGUuZXhjZXB0aW9uKCkgfHwgY2hlY2tlci5lYXJseVJldHVyblZhbHVlKCkpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3Bw
CShyZXZpc2lvbiAyNTk1NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
bmdQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBD
b3B5cmlnaHQgKEMpIDE5OTktMjAwMSBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICog
IENvcHlyaWdodCAoQykgMjAwNC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqICBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA5IFRvcmNoIE1vYmlsZSwgSW5jLgogICogIENvcHly
aWdodCAoQykgMjAxNSBKb3JkYW4gSGFyYmFuZCAobGpoYXJiQGdtYWlsLmNvbSkKICAqCkBAIC0y
OSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJFeGVjdXRhYmxlQmFz
ZUlubGluZXMuaCIKICNpbmNsdWRlICJGcmFtZVRyYWNlcnMuaCIKKyNpbmNsdWRlICJJbnRlZ3Jp
dHlJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
SW50bENvbGxhdG9yLmgiCiAjaW5jbHVkZSAiSW50bE9iamVjdC5oIgpAQCAtOTc5LDEwICs5ODAs
MTEgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90bwogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRoaXNWYWx1ZSk7CiAKICAgICBhdXRvKiBzdHJpbmdPYmpl
Y3QgPSBqc0R5bmFtaWNDYXN0PFN0cmluZ09iamVjdCo+KHZtLCB0aGlzVmFsdWUpOwotICAgIGlm
IChzdHJpbmdPYmplY3QpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc3RyaW5nT2Jq
ZWN0LT5pbnRlcm5hbFZhbHVlKCkpOworICAgIGlmICghc3RyaW5nT2JqZWN0KQorICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKTsKIAotICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOworICAgIEludGVncml0eTo6
YXVkaXRTdHJ1Y3R1cmVJRCh2bSwgc3RyaW5nT2JqZWN0LT5zdHJ1Y3R1cmVJRCgpKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHN0cmluZ09iamVjdC0+aW50ZXJuYWxWYWx1ZSgpKTsKIH0K
IAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNDaGFyQXQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURUYWJsZS5oCShy
ZXZpc2lvbiAyNTk1NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmVJRFRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEg
b25jZQogCisjaW5jbHVkZSAiRW5zdXJlU3RpbGxBbGl2ZUhlcmUuaCIKICNpbmNsdWRlICJVbnVz
ZWRQb2ludGVyLmgiCiAjaW5jbHVkZSA8d3RmL1VuaXF1ZUFycmF5Lmg+CiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgpAQCAtOTEsNyArOTIsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkKiogYmFzZSgp
IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmbV90YWJsZSk7IH0KIAotICAgIGJv
b2wgaXNWYWxpZChTdHJ1Y3R1cmVJRCk7CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHZhbGlkYXRl
KFN0cnVjdHVyZUlEKTsKKwogICAgIFN0cnVjdHVyZSogZ2V0KFN0cnVjdHVyZUlEKTsKICAgICB2
b2lkIGRlYWxsb2NhdGVJRChTdHJ1Y3R1cmUqLCBTdHJ1Y3R1cmVJRCk7CiAgICAgU3RydWN0dXJl
SUQgYWxsb2NhdGVJRChTdHJ1Y3R1cmUqKTsKQEAgLTE3NiwxOSArMTc4LDEzIEBAIGlubGluZSBT
dHJ1Y3R1cmUqIFN0cnVjdHVyZUlEVGFibGU6OmdldCgKICAgICByZXR1cm4gZGVjb2RlKHRhYmxl
KClbc3RydWN0dXJlSW5kZXhdLmVuY29kZWRTdHJ1Y3R1cmVCaXRzLCBzdHJ1Y3R1cmVJRCk7CiB9
CiAKLWlubGluZSBib29sIFN0cnVjdHVyZUlEVGFibGU6OmlzVmFsaWQoU3RydWN0dXJlSUQgc3Ry
dWN0dXJlSUQpCitBTFdBWVNfSU5MSU5FIHZvaWQgU3RydWN0dXJlSURUYWJsZTo6dmFsaWRhdGUo
U3RydWN0dXJlSUQgc3RydWN0dXJlSUQpCiB7Ci0gICAgaWYgKCFzdHJ1Y3R1cmVJRCkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIHVpbnQzMl90IHN0cnVjdHVyZUluZGV4ID0gc3RydWN0dXJl
SUQgPj4gc19udW1iZXJPZkVudHJvcHlCaXRzOwotICAgIGlmIChzdHJ1Y3R1cmVJbmRleCA+PSBt
X2NhcGFjaXR5KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0jaWYgQ1BVKEFERFJFU1M2NCkKICAg
ICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGRlY29kZSh0YWJsZSgpW3N0cnVjdHVyZUluZGV4XS5l
bmNvZGVkU3RydWN0dXJlQml0cywgc3RydWN0dXJlSUQpOwotICAgIGlmIChyZWludGVycHJldF9j
YXN0PHVpbnRwdHJfdD4oc3RydWN0dXJlKSA+PiBzX2VudHJvcHlCaXRzU2hpZnRGb3JTdHJ1Y3R1
cmVQb2ludGVyKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKLSAgICByZXR1cm4gdHJ1
ZTsKKyAgICBSRUxFQVNFX0FTU0VSVChzdHJ1Y3R1cmVJbmRleCA8IG1fY2FwYWNpdHkpOworICAg
IHVpbnQ2NF90IHZhbHVlID0gKmJpdHdpc2VfY2FzdDx1aW50NjRfdCo+KHN0cnVjdHVyZSk7Cisg
ICAgZW5zdXJlU3RpbGxBbGl2ZUhlcmUodmFsdWUpOwogfQogCiAjZWxzZSAvLyBub3QgVVNFKEpT
VkFMVUU2NCkKQEAgLTIwOSw2ICsyMDUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBmbHVzaE9sZFRh
YmxlcygpIHsgfQogfTsKIAorQUxXQVlTX0lOTElORSB2b2lkIFN0cnVjdHVyZUlEVGFibGU6OnZh
bGlkYXRlKFN0cnVjdHVyZUlEKSB7IH0KKwogI2VuZGlmIC8vIG5vdCBVU0UoSlNWQUxVRTY0KQog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N5bWJvbFByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3ltYm9sUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjU5NTQxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtl
IFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTI4
LDYgKzI4LDcgQEAKICNpbmNsdWRlICJTeW1ib2xQcm90b3R5cGUuaCIKIAogI2luY2x1ZGUgIkVy
cm9yLmgiCisjaW5jbHVkZSAiSW50ZWdyaXR5SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0lubGlu
ZXMuaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgogI2luY2x1ZGUgIlN5bWJvbE9iamVjdC5oIgpA
QCAtOTcsNiArOTgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN5bWJvbFByb3Rv
CiAgICAgaWYgKCFzeW1ib2wpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsIFN5bWJvbERlc2NyaXB0aW9uVHlwZUVycm9yKTsKICAgICBzY29wZS5y
ZWxlYXNlKCk7CisgICAgSW50ZWdyaXR5OjphdWRpdFN0cnVjdHVyZUlEKHZtLCBzeW1ib2wtPnN0
cnVjdHVyZUlEKCkpOwogICAgIGNvbnN0IGF1dG8gZGVzY3JpcHRpb24gPSBzeW1ib2wtPmRlc2Ny
aXB0aW9uKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShkZXNjcmlwdGlvbi5pc051bGwo
KSA/IGpzVW5kZWZpbmVkKCkgOiBqc1N0cmluZyh2bSwgZGVzY3JpcHRpb24pKTsKIH0KQEAgLTEw
OSw2ICsxMTEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN5bWJvbFByb3RvCiAg
ICAgU3ltYm9sKiBzeW1ib2wgPSB0cnlFeHRyYWN0U3ltYm9sKHZtLCBjYWxsRnJhbWUtPnRoaXNW
YWx1ZSgpKTsKICAgICBpZiAoIXN5bWJvbCkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgU3ltYm9sVG9TdHJpbmdUeXBlRXJyb3IpOworICAgIElu
dGVncml0eTo6YXVkaXRTdHJ1Y3R1cmVJRCh2bSwgc3ltYm9sLT5zdHJ1Y3R1cmVJRCgpKTsKICAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxT
dHJpbmcodm0sIHN5bWJvbC0+ZGVzY3JpcHRpdmVTdHJpbmcoKSkpKTsKIH0KIApAQCAtMTIxLDYg
KzEyNCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3ltYm9sUHJvdG8KICAgICBp
ZiAoIXN5bWJvbCkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgU3ltYm9sVmFsdWVPZlR5cGVFcnJvcik7CiAKKyAgICBJbnRlZ3JpdHk6OmF1ZGl0
U3RydWN0dXJlSUQodm0sIHN5bWJvbC0+c3RydWN0dXJlSUQoKSk7CiAgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoc3ltYm9sKSk7CiB9CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90b29scy9JbnRlZ3JpdHkuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdG9vbHMvSW50ZWdyaXR5LmgJKHJldmlzaW9uIDI1OTU0MSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9JbnRlZ3JpdHkuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiw2
ICszMiw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgSlNDZWxsOworY2xhc3MgU3RydWN0
dXJlSURUYWJsZTsKIGNsYXNzIFZNOwogCiBuYW1lc3BhY2UgSW50ZWdyaXR5IHsKQEAgLTk5LDYg
KzEwMCw5IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBhdWRpdENlbGwoVk0mIHZtLCBKU1YKICAgICAg
ICAgYXVkaXRDZWxsPGF1ZGl0TGV2ZWw+KHZtLCB2YWx1ZS5hc0NlbGwoKSk7CiB9CiAKK0FMV0FZ
U19JTkxJTkUgdm9pZCBhdWRpdFN0cnVjdHVyZUlEKFN0cnVjdHVyZUlEVGFibGUmLCBTdHJ1Y3R1
cmVJRCk7CitBTFdBWVNfSU5MSU5FIHZvaWQgYXVkaXRTdHJ1Y3R1cmVJRChWTSYsIFN0cnVjdHVy
ZUlEKTsKKwogfSAvLyBuYW1lc3BhY2UgSW50ZWdyaXR5CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0ludGVncml0eUlubGluZXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSW50ZWdyaXR5SW5saW5lcy5o
CShyZXZpc2lvbiAyNTk1NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSW50ZWdy
aXR5SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTktMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTczLDUgKzczLDE1IEBAIEFMV0FZU19JTkxJTkUg
dm9pZCBhdWRpdENlbGxSYW5kb21seShWTSYKICAgICAgICAgYXVkaXRDZWxsRnVsbHkodm0sIGNl
bGwpOwogfQogCitBTFdBWVNfSU5MSU5FIHZvaWQgYXVkaXRTdHJ1Y3R1cmVJRChTdHJ1Y3R1cmVJ
RFRhYmxlJiB0YWJsZSwgU3RydWN0dXJlSUQgaWQpCit7CisgICAgdGFibGUudmFsaWRhdGUoaWQp
OworfQorCitBTFdBWVNfSU5MSU5FIHZvaWQgYXVkaXRTdHJ1Y3R1cmVJRChWTSYgdm0sIFN0cnVj
dHVyZUlEIGlkKQoreworICAgIGF1ZGl0U3RydWN0dXJlSUQodm0uaGVhcC5zdHJ1Y3R1cmVJRFRh
YmxlKCksIGlkKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSW50ZWdyaXR5CiB9IC8vIG5hbWVzcGFj
ZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5R2xv
YmFsUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseUdsb2JhbFByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI1OTU0MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5R2xvYmFsUHJvdG90eXBl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE5LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJGdW5jdGlvblBy
b3RvdHlwZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgorI2luY2x1ZGUgIkludGVncml0
eUlubGluZXMuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNXZWJBc3Nl
bWJseUdsb2JhbC5oIgogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlIZWxwZXJzLmgiCkBAIC02MSw2
ICs2Miw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTV2ViQXNzZW1ibHlHbG9iYWwKICAgICAg
ICAgICAgIGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsICJleHBlY3RlZCB8dGhpc3wgdmFs
dWUgdG8gYmUgYW4gaW5zdGFuY2Ugb2YgV2ViQXNzZW1ibHkuR2xvYmFsIl9zKSk7CiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KKyAgICBJbnRlZ3JpdHk6OmF1ZGl0U3RydWN0dXJlSUQo
dm0sIHJlc3VsdC0+c3RydWN0dXJlSUQoKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395476</attachid>
            <date>2020-04-04 21:15:07 -0700</date>
            <delta_ts>2020-04-04 21:39:21 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-210015.patch</filename>
            <type>text/plain</type>
            <size>41238</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjU5NTQyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDczIEBA
CisyMDIwLTA0LTA0ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZGQgc29tZSBzdHJ1Y3R1cmVJRCBpbnRlZ3JpdHkgY2hlY2tzIHRvIHZhcmlvdXMgcnVudGltZSBm
dW5jdGlvbnMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTAwMTUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU4MTE2NTE0PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNwZWNpZmljYWxseSwgaW1wbGVt
ZW50YXRpb25zIG9mIHRvU3RyaW5nKCksIHRvVmFsdWUoKSwgYW5kIGEgZmV3IG90aGVycy4KKyAg
ICAgICAgSSBhbHNvIG1vdmVkIHRoZSBIZWFwQ2VsbCB2ZXJzaW9uIG9mIGVuc3VyZVN0aWxsQWxp
dmVIZXJlKCkgaW50byB0aGUgbmV3CisgICAgICAgIEVuc3VyZVN0aWxsQWxpdmVIZXJlLmgvY3Bw
IHNpbmNlIGl0J3MgdXNlZnVsIGZvciBhbnkgcG9pbnRlcnMsIG5vdCBqdXN0IEhlYXBDZWxscy4K
KworICAgICAgICBUaGlzIGNoYW5nZSBpcyBwZXJmb3JtYW5jZSBuZXV0cmFsIG9uIEpldFN0cmVh
bSAyLjAsIFNwZWVkb21ldGVyLTIsIGFuZCBQTFQ1LgorCisgICAgICAgICogQ01ha2VMaXN0cy50
eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBoZWFwL0hlYXBDZWxsLmNwcDoKKyAg
ICAgICAgKEpTQzo6ZW5zdXJlU3RpbGxBbGl2ZUhlcmUpOiBEZWxldGVkLgorICAgICAgICAqIGhl
YXAvSGVhcENlbGwuaDoKKyAgICAgICAgKEpTQzo6ZW5zdXJlU3RpbGxBbGl2ZUhlcmUpOiBEZWxl
dGVkLgorICAgICAgICAqIGhlYXAvU2xvdFZpc2l0b3IuY3BwOgorICAgICAgICAoSlNDOjpTbG90
VmlzaXRvcjo6YXBwZW5kSlNDZWxsT3JBdXhpbGlhcnkpOgorICAgICAgICAqIHJ1bnRpbWUvQXJy
YXlQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1RvU3RyaW5nKToK
KyAgICAgICAgKiBydW50aW1lL0JpZ0ludFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmJp
Z0ludFByb3RvRnVuY1RvU3RyaW5nSW1wbCk6CisgICAgICAgIChKU0M6OmJpZ0ludFByb3RvRnVu
Y1ZhbHVlT2YpOgorICAgICAgICAqIHJ1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5jcHA6CisgICAg
ICAgIChKU0M6OmJvb2xlYW5Qcm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgIChKU0M6OmJvb2xl
YW5Qcm90b0Z1bmNWYWx1ZU9mKToKKyAgICAgICAgKiBydW50aW1lL0RhdGVQcm90b3R5cGUuY3Bw
OgorICAgICAgICAoSlNDOjpmb3JtYXRMb2NhbGVEYXRlKToKKyAgICAgICAgKEpTQzo6Zm9ybWF0
ZURhdGVJbnN0YW5jZSk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNUb0lTT1N0cmluZyk6
CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNUb1ByaW1pdGl2ZVN5bWJvbCk6CisgICAgICAg
ICogcnVudGltZS9FbnN1cmVTdGlsbEFsaXZlSGVyZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlND
OjplbnN1cmVTdGlsbEFsaXZlSGVyZSk6CisgICAgICAgICogcnVudGltZS9FbnN1cmVTdGlsbEFs
aXZlSGVyZS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6ZW5zdXJlU3RpbGxBbGl2ZUhlcmUpOgor
ICAgICAgICAqIHJ1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHA6CisgICAgICAgIChKU0M6OkVycm9y
SW5zdGFuY2U6OnNhbml0aXplZFRvU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1lL0Vycm9yUHJv
dG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6ZXJyb3JQcm90b0Z1bmNUb1N0cmluZyk6CisgICAg
ICAgICogcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmZ1bmN0
aW9uUHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNDZWxsOjp0b09iamVjdFNsb3cgY29uc3QpOgorICAgICAgICAqIHJ1bnRp
bWUvTnVtYmVyUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6dG9UaGlzTnVtYmVyKToKKyAg
ICAgICAgKiBydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6Om9iamVj
dFByb3RvRnVuY1ZhbHVlT2YpOgorICAgICAgICAoSlNDOjpvYmplY3RQcm90b0Z1bmNUb1N0cmlu
Zyk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlND
OjpyZWdFeHBQcm90b0Z1bmNUb1N0cmluZyk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90
b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNUb1N0cmluZyk6CisgICAg
ICAgICogcnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZUlEVGFibGU6OnZhbGlkYXRlKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlSURUYWJsZTo6aXNW
YWxpZCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9TeW1ib2xQcm90b3R5cGUuY3BwOgor
ICAgICAgICAoSlNDOjpzeW1ib2xQcm90b0dldHRlckRlc2NyaXB0aW9uKToKKyAgICAgICAgKEpT
Qzo6c3ltYm9sUHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAgICAoSlNDOjpzeW1ib2xQcm90b0Z1
bmNWYWx1ZU9mKToKKyAgICAgICAgKiB0b29scy9JbnRlZ3JpdHkuaDoKKyAgICAgICAgKiB0b29s
cy9JbnRlZ3JpdHlJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkludGVncml0eTo6YXVkaXRTdHJ1
Y3R1cmVJRCk6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseUdsb2JhbFByb3RvdHlwZS5j
cHA6CisgICAgICAgIChKU0M6OmdldEdsb2JhbCk6CisKIDIwMjAtMDQtMDQgIEFsZXhleSBTaHZh
eWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgogCiAgICAgICAgICdcdScgc2hvdWxkIHRocm93
IGFuIGVhcmx5IFN5bnRheEVycm9yIGV4Y2VwdGlvbiwgYnV0IGluc3RlYWQgZXZhbHVhdGVzIHRv
ICd1JwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjU5
NTQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC04MjAsNiArODIwLDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVX
T1JLX0hFQQogICAgIHJ1bnRpbWUvRGlzYWxsb3dTY29wZS5oCiAgICAgcnVudGltZS9EaXNhbGxv
d1ZNUmVlbnRyeS5oCiAgICAgcnVudGltZS9EdW1wQ29udGV4dC5oCisgICAgcnVudGltZS9FbnN1
cmVTdGlsbEFsaXZlSGVyZS5oCiAgICAgcnVudGltZS9FbnVtZXJhdGlvbk1vZGUuaAogICAgIHJ1
bnRpbWUvRXJyb3IuaAogICAgIHJ1bnRpbWUvRXJyb3JIYW5kbGluZ1Njb3BlLmgKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvU291cmNlcy50eHQJKHJldmlzaW9uIDI1OTU0MSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNzY0LDYgKzc2NCw3IEBA
IHJ1bnRpbWUvRGlzYWxsb3dWTVJlZW50cnkuY3BwCiBydW50aW1lL0RvdWJsZVByZWRpY3Rpb25G
dXp6ZXJBZ2VudC5jcHAKIHJ1bnRpbWUvRHVtcENvbnRleHQuY3BwCiBydW50aW1lL0VDTUFTY3Jp
cHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuY3BwCitydW50aW1lL0Vuc3VyZVN0aWxsQWxpdmVIZXJl
LmNwcAogcnVudGltZS9FcnJvci5jcHAKIHJ1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5jcHAKIHJ1
bnRpbWUvRXJyb3JIYW5kbGluZ1Njb3BlLmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDI1OTU0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xODg4
LDYgKzE4ODgsNyBAQAogCQlGRTMwMjJENzFFNDI4NTczMDBCQUM0OTMgLyogVk1JbnNwZWN0b3Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzAyMkQ1
MUU0Mjg1NjcwMEJBQzQ5MyAvKiBWTUluc3BlY3Rvci5oICovOyB9OwogCQlGRTMxOEZFMDFDQUM5
ODJGMDBERkNDNTQgLyogRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzMThGREUxQ0FDOEM1MzAw
REZDQzU0IC8qIEVDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuaCAqLzsgfTsKIAkJRkUz
NDIyMTIxRDZCODFDMzAwMzJCRTg4IC8qIFRocm93U2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzQyMjExMUQ2QjgxOEMwMDMyQkU4OCAvKiBU
aHJvd1Njb3BlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJRkUzNEVFMjEyNDM5OEFBRTAwQUEyRTdDIC8qIEVuc3VyZVN0aWxsQWxpdmVIZXJlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTM0RUUyMDI0
Mzk4QTlBMDBBQTJFN0MgLyogRW5zdXJlU3RpbGxBbGl2ZUhlcmUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTM4NDIzMzIzMjRENTFCMDA5REQ0
NDUgLyogT3B0aW9uc0xpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZFMzg0MjMxMjMyNEQ1MUIwMDlERDQ0NSAvKiBPcHRpb25zTGlzdC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZFMzg0RUU2MUFE
REI3QUQwMDU1REUyQyAvKiBKU0RvbGxhclZNLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRTM4NEVFMjFBRERCN0FEMDA1NURFMkMgLyogSlNEb2xsYXJW
TS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZF
M0EwNkE2MUMxMEI3MkQwMDM5MEZERCAvKiBKSVRCaXRPckdlbmVyYXRvci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzQTA2QTQxQzEwQjcwODAwMzkw
RkREIC8qIEpJVEJpdE9yR2VuZXJhdG9yLmggKi87IH07CkBAIC01MTIyLDYgKzUxMjMsOCBAQAog
CQlGRTMxOEZERDFDQUM4QzUzMDBERkNDNTQgLyogRUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0
aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFQ01BU2NyaXB0
U3BlY0ludGVybmFsRnVuY3Rpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RkUzMThGREUxQ0FDOEM1MzAwREZDQzU0IC8qIEVDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlv
bnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRUNNQVNjcmlwdFNwZWNJbnRl
cm5hbEZ1bmN0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTM0MjIxMTFE
NkI4MThDMDAzMkJFODggLyogVGhyb3dTY29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBUaHJvd1Njb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMzRF
RTIwMjQzOThBOUEwMEFBMkU3QyAvKiBFbnN1cmVTdGlsbEFsaXZlSGVyZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBFbnN1cmVTdGlsbEFsaXZlSGVyZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlGRTM0RUUyMjI0Mzk4Qjg1MDBBQTJFN0MgLyogRW5zdXJlU3RpbGxBbGl2ZUhlcmUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRW5zdXJlU3RpbGxBbGl2ZUhlcmUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTM1QzJGMDIxQjFFNkM1MDAwRjRD
QTggLyogVGVtcGxhdGUucmIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5ydWJ5OyBwYXRoID0gVGVt
cGxhdGUucmI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMzVDMkYxMjFCMUU2QzYw
MDBGNENBOCAvKiBGaXRzLnJiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucnVieTsgcGF0aCA9IEZp
dHMucmI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMzVDMkYyMjFCMUU2QzYwMDBG
NENBOCAvKiBHZW5lcmF0ZWRGaWxlLnJiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucnVieTsgcGF0
aCA9IEdlbmVyYXRlZEZpbGUucmI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MTEx
LDYgKzcxMTQsOCBAQAogCQkJCUE3MDQ0N0VDMTdBMEJENzAwMEY1ODk4RSAvKiBEdW1wQ29udGV4
dC5oICovLAogCQkJCUZFMzE4RkREMUNBQzhDNTMwMERGQ0M1NCAvKiBFQ01BU2NyaXB0U3BlY0lu
dGVybmFsRnVuY3Rpb25zLmNwcCAqLywKIAkJCQlGRTMxOEZERTFDQUM4QzUzMDBERkNDNTQgLyog
RUNNQVNjcmlwdFNwZWNJbnRlcm5hbEZ1bmN0aW9ucy5oICovLAorCQkJCUZFMzRFRTIyMjQzOThC
ODUwMEFBMkU3QyAvKiBFbnN1cmVTdGlsbEFsaXZlSGVyZS5jcHAgKi8sCisJCQkJRkUzNEVFMjAy
NDM5OEE5QTAwQUEyRTdDIC8qIEVuc3VyZVN0aWxsQWxpdmVIZXJlLmggKi8sCiAJCQkJMkFEMkVE
RkExOTc5OUUzODAwNEQ2NDc4IC8qIEVudW1lcmF0aW9uTW9kZS5oICovLAogCQkJCUJDMzM3QkVB
MEUxQjAwQ0IwMDc2OTE4QSAvKiBFcnJvci5jcHAgKi8sCiAJCQkJQkMzMDQ2MDYwRTFGNDk3RjAw
MzIzMkNGIC8qIEVycm9yLmggKi8sCkBAIC04OTI3LDYgKzg5MzIsNyBAQAogCQkJCTBGRTA1MDE0
MUFBOTA5MTEwMEQzM0IzMyAvKiBBcmd1bWVudHNNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3
OUEyMjgzNjFEMzVENzFGMDBEOEUwNjcgLyogQXJpdGhQcm9maWxlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjZCMUNCOTE4NjEyNDRDMDA4NDVEOTcgLyogQXJpdHlDaGVja01vZGUuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUZFMzRFRTIxMjQzOThBQUUwMEFBMkU3QyAvKiBFbnN1cmVTdGlsbEFsaXZl
SGVyZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFBMDA5QzExODMxQTI2RTAwQ0Y4NzExIC8qIEFS
TTY0QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTFFMkM0MDIyNDBERDYyMDBGNkI3
MjkgLyogQVJNNjRFQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMUEwMDlDMTE4MzFB
MjZFMDBDRjg3MjIgLyogQVJNNjRSZWdpc3RlcnMuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcENlbGwuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBDZWxsLmNwcAkocmV2aXNpb24gMjU5NTQxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcENlbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNDIsMTMgKzQyLDYgQEAgYm9vbCBIZWFwQ2VsbDo6aXNMaXZlKCkKICAgICByZXR1cm4gbWFy
a2VkQmxvY2tIYW5kbGUuaXNMaXZlKHRoaXMpOwogfQogCi0jaWYgIUNPTVBJTEVSKEdDQ19DT01Q
QVRJQkxFKQotLy8gVGhpcyBtYWtlcyB0aGUgYXJndW1lbnQgb3BhcXVlIGZyb20gdGhlIGNvbXBp
bGVyLgotTkVWRVJfSU5MSU5FIHZvaWQgZW5zdXJlU3RpbGxBbGl2ZUhlcmUoY29uc3Qgdm9pZCop
Ci17Ci19Ci0jZW5kaWYKLQogfSAvLyBuYW1lc3BhY2UgSlNDCiAKIG5hbWVzcGFjZSBXVEYgewpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcENlbGwuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwQ2VsbC5oCShyZXZpc2lvbiAyNTk1NDEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwQ2VsbC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJEZXN0cnVjdGlv
bk1vZGUuaCIKKyNpbmNsdWRlICJFbnN1cmVTdGlsbEFsaXZlSGVyZS5oIgogCiBuYW1lc3BhY2Ug
SlNDIHsKIApAQCAtMzcsMTUgKzM4LDYgQEAgY2xhc3MgU3Vic3BhY2U7CiBjbGFzcyBWTTsKIHN0
cnVjdCBDZWxsQXR0cmlidXRlczsKIAotI2lmIENPTVBJTEVSKEdDQ19DT01QQVRJQkxFKQotQUxX
QVlTX0lOTElORSB2b2lkIGVuc3VyZVN0aWxsQWxpdmVIZXJlKGNvbnN0IHZvaWQqIHBvaW50ZXIp
Ci17Ci0gICAgYXNtIHZvbGF0aWxlICgiIiA6IDogInIiKHBvaW50ZXIpIDogIm1lbW9yeSIpOwot
fQotI2Vsc2UKLUpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZW5zdXJlU3RpbGxBbGl2ZUhlcmUoY29u
c3Qgdm9pZCopOwotI2VuZGlmCi0KIGNsYXNzIEhlYXBDZWxsIHsKIHB1YmxpYzoKICAgICBlbnVt
IEtpbmQgOiBpbnQ4X3QgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZp
c2l0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RW
aXNpdG9yLmNwcAkocmV2aXNpb24gMjU5NTQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvU2xvdFZpc2l0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjAwLDExICsyMDAsOCBAQCB2
b2lkIFNsb3RWaXNpdG9yOjphcHBlbmRKU0NlbGxPckF1eGlsaWFyCiAgICAgICAgIGlmIChpc051
a2VkKHN0cnVjdHVyZUlEKSkKICAgICAgICAgICAgIGRpZSgiR0Mgc2NhbiBmb3VuZCBvYmplY3Qg
aW4gYmFkIHN0YXRlOiBzdHJ1Y3R1cmVJRCBpcyBudWtlZCFcbiIpOwogICAgICAgICAKLSNpZiBV
U0UoSlNWQUxVRTY0KQogICAgICAgICAvLyBUaGlzIGRldGVjdHMgdGhlIHdvcnN0IG9mIHRoZSBi
YWRuZXNzLgotICAgICAgICBpZiAoIWhlYXAoKS0+c3RydWN0dXJlSURUYWJsZSgpLmlzVmFsaWQo
c3RydWN0dXJlSUQpKQotICAgICAgICAgICAgZGllKCJHQyBzY2FuIGZvdW5kIGNvcnJ1cHQgb2Jq
ZWN0OiBzdHJ1Y3R1cmVJRCBpcyBpbnZhbGlkIVxuIik7Ci0jZW5kaWYKKyAgICAgICAgSW50ZWdy
aXR5OjphdWRpdFN0cnVjdHVyZUlEKGhlYXAoKS0+c3RydWN0dXJlSURUYWJsZSgpLCBzdHJ1Y3R1
cmVJRCk7CiAgICAgfTsKICAgICAKICAgICAvLyBJbiBkZWJ1ZyBtb2RlLCB3ZSB2YWxpZGF0ZSBi
ZWZvcmUgbWFya2luZyBzaW5jZSB0aGlzIG1ha2VzIGl0IGNsZWFyZXIgd2hhdCB0aGUgcHJvYmxl
bQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90
eXBlLmNwcAkocmV2aXNpb24gMjU5NTQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJyYXlQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoK
ICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3Jn
KQotICogIENvcHlyaWdodCAoQykgMjAwMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAzIFBldGVyIEtlbGx5IChwbWtAcG9zdC5j
b20pCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQG55cG9w
LmNvbSkKICAqCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5j
bHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKKyNpbmNsdWRlICJJbnRl
Z3JpdHlJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKSVQu
aCIKICNpbmNsdWRlICJKU0FycmF5SW5saW5lcy5oIgpAQCAtNjAzLDYgKzYwNCw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0YKIAogICAgIC8vIDEuIExldCBhcnJh
eSBiZSB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgVG9PYmplY3Qgb24gdGhlIHRoaXMgdmFsdWUuCiAg
ICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSB0aGlzVmFsdWUudG9PYmplY3QoZ2xvYmFsT2JqZWN0
KTsKKyAgICBJbnRlZ3JpdHk6OmF1ZGl0U3RydWN0dXJlSUQodm0sIHRoaXNPYmplY3QtPnN0cnVj
dHVyZUlEKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwogCiAgICAgaWYgKCFjYW5Vc2VEZWZhdWx0QXJyYXlKb2luRm9yVG9TdHJpbmcodm0sIHRo
aXNPYmplY3QpKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRQ
cm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0JpZ0ludFByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI1OTU0MSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0JpZ0ludFByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE3IENhaW8gTGltYSA8dGljYWlvbGlt
YUBnbWFpbC5jb20+LgotICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
OSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJCaWdJbnRPYmplY3QuaCIKICNpbmNsdWRlICJFcnJv
ci5oIgorI2luY2x1ZGUgIkludGVncml0eUlubGluZXMuaCIKICNpbmNsdWRlICJKU0JpZ0ludC5o
IgogI2luY2x1ZGUgIkpTQ0J1aWx0aW5zLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgpAQCAt
MTAxLDYgKzEwMiw3IEBAIHN0YXRpYyBKU1ZhbHVlIGJpZ0ludFByb3RvRnVuY1RvU3RyaW5nSW0K
IAogICAgIEFTU0VSVCh2YWx1ZSk7CiAKKyAgICBJbnRlZ3JpdHk6OmF1ZGl0U3RydWN0dXJlSUQo
dm0sIHZhbHVlLT5zdHJ1Y3R1cmVJRCgpKTsKICAgICBpbnQzMl90IHJhZGl4ID0gZXh0cmFjdFRv
U3RyaW5nUmFkaXhBcmd1bWVudChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCks
IHNjb3BlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCkBAIC0xMjYs
MTEgKzEyOCwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJpZ0ludFByb3RvCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJpZ0ludFByb3RvRnVuY1ZhbHVlT2YoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7CiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwotICAgIGlmIChKU0JpZ0ludCogdmFsdWUgPSB0b1Ro
aXNCaWdJbnRWYWx1ZSh2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSkpCi0gICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodmFsdWUpOwotICAgIAogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKLSAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiJ3RoaXMnIHZhbHVlIG11c3QgYmUgYSBCaWdJbnQgb3IgQmlnSW50T2JqZWN0
Il9zKTsKKworICAgIEpTQmlnSW50KiB2YWx1ZSA9IHRvVGhpc0JpZ0ludFZhbHVlKHZtLCBjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIXZhbHVlKQorICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiJ3RoaXMnIHZhbHVlIG11c3QgYmUg
YSBCaWdJbnQgb3IgQmlnSW50T2JqZWN0Il9zKTsKKworICAgIEludGVncml0eTo6YXVkaXRTdHJ1
Y3R1cmVJRCh2bSwgdmFsdWUtPnN0cnVjdHVyZUlEKCkpOworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodmFsdWUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwCShyZXZpc2lv
biAyNTk1NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuUHJvdG90
eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0
IChDKSAxOTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmln
aHQgKEMpIDIwMDMsIDIwMDgsIDIwMTEsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogIENvcHlyaWdodCAoQykgMjAwMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTIzLDYgKzIzLDcgQEAKIAogI2luY2x1
ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgorI2luY2x1ZGUgIklu
dGVncml0eUlubGluZXMuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNT
dHJpbmcuaCIKICNpbmNsdWRlICJPYmplY3RQcm90b3R5cGUuaCIKQEAgLTgwLDYgKzgxLDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib29sZWFuUHJvdAogICAgIGlmIChVTkxJS0VM
WSghdGhpc09iamVjdCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUpOwogCisgICAgSW50ZWdyaXR5OjphdWRpdFN0cnVjdHVyZUlEKHZtLCB0aGlz
T2JqZWN0LT5zdHJ1Y3R1cmVJRCgpKTsKICAgICBpZiAodGhpc09iamVjdC0+aW50ZXJuYWxWYWx1
ZSgpID09IGpzQm9vbGVhbihmYWxzZSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dm0uc21hbGxTdHJpbmdzLmZhbHNlU3RyaW5nKCkpOwogCkBAIC05OSw2ICsxMDEsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvb2xlYW5Qcm90CiAgICAgaWYgKFVOTElLRUxZKCF0
aGlzT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSk7CiAKKyAgICBJbnRlZ3JpdHk6OmF1ZGl0U3RydWN0dXJlSUQodm0sIHRoaXNPYmpl
Y3QtPnN0cnVjdHVyZUlEKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhpc09iamVj
dC0+aW50ZXJuYWxWYWx1ZSgpKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI1OTU0MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQ
b3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwNC0yMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA4LCAy
MDA5IFRvcmNoIE1vYmlsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogIENvcHlyaWdo
dCAoQykgMjAxMCBUb3JjaCBNb2JpbGUgKEJlaWppbmcpIENvLiBMdGQuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkRhdGVDb252ZXJzaW9uLmgi
CiAjaW5jbHVkZSAiRGF0ZUluc3RhbmNlLmgiCiAjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRl
ICJJbnRlZ3JpdHlJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDQnVpbHRpbnMuaCIKICNpbmNsdWRl
ICJKU0RhdGVNYXRoLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKQEAgLTE0MCw5ICsx
NDEsMTEgQEAgc3RhdGljIENGRGF0ZUZvcm1hdHRlclN0eWxlIHN0eWxlRnJvbUFyZwogICAgIHJl
dHVybiBkZWZhdWx0U3R5bGU7CiB9CiAKLXN0YXRpYyBKU0NlbGwqIGZvcm1hdExvY2FsZURhdGUo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIERhdGVJ
bnN0YW5jZSosIGRvdWJsZSB0aW1lSW5NaWxsaXNlY29uZHMsIExvY2FsZURhdGVUaW1lRm9ybWF0
IGZvcm1hdCkKK3N0YXRpYyBKU0NlbGwqIGZvcm1hdExvY2FsZURhdGUoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIERhdGVJbnN0YW5jZSogZGF0ZU9i
amVjdCwgZG91YmxlIHRpbWVJbk1pbGxpc2Vjb25kcywgTG9jYWxlRGF0ZVRpbWVGb3JtYXQgZm9y
bWF0KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBJbnRlZ3JpdHk6
OmF1ZGl0U3RydWN0dXJlSUQodm0sIGRhdGVPYmplY3QtPnN0cnVjdHVyZUlEKCkpOworCiAgICAg
Q0ZEYXRlRm9ybWF0dGVyU3R5bGUgZGF0ZVN0eWxlID0gKGZvcm1hdCAhPSBMb2NhbGVUaW1lID8g
a0NGRGF0ZUZvcm1hdHRlckxvbmdTdHlsZSA6IGtDRkRhdGVGb3JtYXR0ZXJOb1N0eWxlKTsKICAg
ICBDRkRhdGVGb3JtYXR0ZXJTdHlsZSB0aW1lU3R5bGUgPSAoZm9ybWF0ICE9IExvY2FsZURhdGUg
PyBrQ0ZEYXRlRm9ybWF0dGVyTG9uZ1N0eWxlIDoga0NGRGF0ZUZvcm1hdHRlck5vU3R5bGUpOwog
CkBAIC0xNzEsOSArMTc0LDExIEBAIHN0YXRpYyBKU0NlbGwqIGZvcm1hdExvY2FsZURhdGUoSlNH
bG9iYWwKIAogI2VsaWYgIVVDT05GSUdfTk9fRk9STUFUVElORwogCi1zdGF0aWMgSlNDZWxsKiBm
b3JtYXRMb2NhbGVEYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSos
IERhdGVJbnN0YW5jZSosIGRvdWJsZSB0aW1lSW5NaWxsaXNlY29uZHMsIExvY2FsZURhdGVUaW1l
Rm9ybWF0IGZvcm1hdCkKK3N0YXRpYyBKU0NlbGwqIGZvcm1hdExvY2FsZURhdGUoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiwgRGF0ZUluc3RhbmNlKiBkYXRlT2JqZWN0
LCBkb3VibGUgdGltZUluTWlsbGlzZWNvbmRzLCBMb2NhbGVEYXRlVGltZUZvcm1hdCBmb3JtYXQp
CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIEludGVncml0eTo6YXVk
aXRTdHJ1Y3R1cmVJRCh2bSwgZGF0ZU9iamVjdC0+c3RydWN0dXJlSUQoKSk7CisKICAgICBVRGF0
ZUZvcm1hdFN0eWxlIHRpbWVTdHlsZSA9IChmb3JtYXQgIT0gTG9jYWxlRGF0ZSA/IFVEQVRfTE9O
RyA6IFVEQVRfTk9ORSk7CiAgICAgVURhdGVGb3JtYXRTdHlsZSBkYXRlU3R5bGUgPSAoZm9ybWF0
ICE9IExvY2FsZVRpbWUgPyBVREFUX0xPTkcgOiBVREFUX05PTkUpOwogCkBAIC0zMTEsNiArMzE2
LDggQEAgc3RhdGljIEpTQ2VsbCogZm9ybWF0TG9jYWxlRGF0ZShKU0dsb2JhbAogc3RhdGljIEpT
Q2VsbCogZm9ybWF0TG9jYWxlRGF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSwgRGF0ZUluc3RhbmNlKiBkYXRlT2JqZWN0LCBkb3VibGUsIExvY2Fs
ZURhdGVUaW1lRm9ybWF0IGZvcm1hdCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CisgICAgSW50ZWdyaXR5OjphdWRpdFN0cnVjdHVyZUlEKHZtLCBkYXRlT2JqZWN0LT5zdHJ1
Y3R1cmVJRCgpKTsKKwogICAgIGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lKiBncmVnb3JpYW5EYXRl
VGltZSA9IGRhdGVPYmplY3QtPmdyZWdvcmlhbkRhdGVUaW1lKHZtKTsKICAgICBpZiAoIWdyZWdv
cmlhbkRhdGVUaW1lKQogICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKHZtLCAiSW52
YWxpZCBEYXRlIl9zKTsKQEAgLTMyOCw2ICszMzUsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
Zm9ybWF0ZURhdGVJbnN0YW5jCiAgICAgaWYgKFVOTElLRUxZKCF0aGlzRGF0ZU9iaikpCiAgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOwogCisgICAg
SW50ZWdyaXR5OjphdWRpdFN0cnVjdHVyZUlEKHZtLCB0aGlzRGF0ZU9iai0+c3RydWN0dXJlSUQo
KSk7CiAgICAgY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUqIGdyZWdvcmlhbkRhdGVUaW1lID0gYXNV
VENWYXJpYW50CiAgICAgICAgID8gdGhpc0RhdGVPYmotPmdyZWdvcmlhbkRhdGVUaW1lVVRDKHZt
KQogICAgICAgICA6IHRoaXNEYXRlT2JqLT5ncmVnb3JpYW5EYXRlVGltZSh2bSk7CkBAIC01NDMs
NyArNTUxLDggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdQogICAg
IGF1dG8qIHRoaXNEYXRlT2JqID0ganNEeW5hbWljQ2FzdDxEYXRlSW5zdGFuY2UqPih2bSwgdGhp
c1ZhbHVlKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNEYXRlT2JqKSkKICAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7Ci0gICAgCisKKyAgICBJbnRl
Z3JpdHk6OmF1ZGl0U3RydWN0dXJlSUQodm0sIHRoaXNEYXRlT2JqLT5zdHJ1Y3R1cmVJRCgpKTsK
ICAgICBpZiAoIXN0ZDo6aXNmaW5pdGUodGhpc0RhdGVPYmotPmludGVybmFsTnVtYmVyKCkpKQog
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJh
bmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiSW52YWxpZCBEYXRlIl9zKSk7CiAKQEAgLTYyNyw2ICs2
MzYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1CiAgICAgaWYg
KCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIkRhdGUucHJvdG90eXBlW1N5bWJvbC50b1ByaW1pdGl2ZV0g
ZXhwZWN0ZWQgfHRoaXN8IHRvIGJlIGFuIG9iamVjdC4iKTsKICAgICBKU09iamVjdCogdGhpc09i
amVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KHRoaXNWYWx1ZSk7CisgICAgSW50ZWdyaXR5OjphdWRp
dFN0cnVjdHVyZUlEKHZtLCB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmVJRCgpKTsKIAogICAgIGlmICgh
Y2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJEYXRlLnByb3RvdHlwZVtTeW1ib2wudG9QcmltaXRp
dmVdIGV4cGVjdGVkIGEgZmlyc3QgYXJndW1lbnQuIik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FbnN1cmVTdGlsbEFsaXZlSGVyZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRW5zdXJlU3RpbGxBbGl2ZUhlcmUuY3BwCShub25l
eGlzdGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vuc3VyZVN0aWxsQWxp
dmVIZXJlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkVuc3VyZVN0aWxsQWxpdmVIZXJlLmgiCisKK25hbWVzcGFjZSBKU0MgeworCisjaWYg
IUNPTVBJTEVSKEdDQ19DT01QQVRJQkxFKQorCisvLyBUaGVzZSBtYWtlcyB0aGUgYXJndW1lbnQg
b3BhcXVlIGZyb20gdGhlIGNvbXBpbGVyLgorCitORVZFUl9JTkxJTkUgdm9pZCBlbnN1cmVTdGls
bEFsaXZlSGVyZSh1aW50NjRfdCkKK3sKK30KKworTkVWRVJfSU5MSU5FIHZvaWQgZW5zdXJlU3Rp
bGxBbGl2ZUhlcmUoY29uc3Qgdm9pZCopCit7Cit9CisKKyNlbmRpZiAvLyAhQ09NUElMRVIoR0ND
X0NPTVBBVElCTEUpCisKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRW5zdXJlU3RpbGxBbGl2ZUhlcmUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FbnN1cmVTdGlsbEFsaXZlSGVyZS5oCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vuc3VyZVN0aWxsQWxpdmVI
ZXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgSlND
IHsKKworI2lmIENPTVBJTEVSKEdDQ19DT01QQVRJQkxFKQorCitBTFdBWVNfSU5MSU5FIHZvaWQg
ZW5zdXJlU3RpbGxBbGl2ZUhlcmUodWludDY0X3QgdmFsdWUpCit7CisgICAgYXNtIHZvbGF0aWxl
ICgiIiA6IDogInIiKHZhbHVlKSA6ICJtZW1vcnkiKTsKK30KKworQUxXQVlTX0lOTElORSB2b2lk
IGVuc3VyZVN0aWxsQWxpdmVIZXJlKGNvbnN0IHZvaWQqIHBvaW50ZXIpCit7CisgICAgYXNtIHZv
bGF0aWxlICgiIiA6IDogInIiKHBvaW50ZXIpIDogIm1lbW9yeSIpOworfQorCisjZWxzZQorCitK
U19FWFBPUlRfUFJJVkFURSB2b2lkIGVuc3VyZVN0aWxsQWxpdmVIZXJlKHVpbnQ2NF90IHZhbHVl
KQorSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBlbnN1cmVTdGlsbEFsaXZlSGVyZShjb25zdCB2b2lk
Kik7CisKKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwCShyZXZpc2lvbiAyNTk1NDEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIw
MDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMt
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAy
MDAzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAg
KiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1
YmxpYwpAQCAtMjMsNiArMjMsNyBAQAogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVk
ZSAiSW5saW5lQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiSW50ZWdyaXR5SW5saW5lcy5oIgogI2lu
Y2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNTY29wZS5oIgogI2luY2x1ZGUgIkpT
Q0lubGluZXMuaCIKQEAgLTEzOSw2ICsxNDAsNyBAQCBTdHJpbmcgRXJyb3JJbnN0YW5jZTo6c2Fu
aXRpemVkVG9TdHJpbmcoCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBJbnRlZ3JpdHk6OmF1
ZGl0U3RydWN0dXJlSUQodm0sIHN0cnVjdHVyZUlEKCkpOwogCiAgICAgSlNWYWx1ZSBuYW1lVmFs
dWU7CiAgICAgYXV0byBuYW1lUHJvcGVydE5hbWUgPSB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBl
LmNwcAkocmV2aXNpb24gMjU5NTQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXJyb3JQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAq
ICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQot
ICogIENvcHlyaWdodCAoQykgMjAwMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAi
RXJyb3JQcm90b3R5cGUuaCIKIAogI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSW50ZWdy
aXR5SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU1N0cmlu
Z0lubGluZXMuaCIKICNpbmNsdWRlICJPYmplY3RQcm90b3R5cGUuaCIKQEAgLTgyLDYgKzgzLDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBlcnJvclByb3RvRgogICAgIGlmICghdGhp
c1ZhbHVlLmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUpOwogICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gYXNPYmplY3QodGhpc1Zh
bHVlKTsKKyAgICBJbnRlZ3JpdHk6OmF1ZGl0U3RydWN0dXJlSUQodm0sIHRoaXNPYmotPnN0cnVj
dHVyZUlEKCkpOwogCiAgICAgLy8gR3VhcmQgYWdhaW5zdCByZWN1cnNpb24hCiAgICAgU3RyaW5n
UmVjdXJzaW9uQ2hlY2tlciBjaGVja2VyKGdsb2JhbE9iamVjdCwgdGhpc09iaik7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUu
Y3BwCShyZXZpc2lvbiAyNTk1NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9G
dW5jdGlvblByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgog
ICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcp
Ci0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogIENvcHlyaWdodCAoQykgMjAwMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRl
ICJCdWlsdGluTmFtZXMuaCIKICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUgIkdldHRlclNl
dHRlci5oIgorI2luY2x1ZGUgIkludGVncml0eUlubGluZXMuaCIKICNpbmNsdWRlICJKU0FzeW5j
RnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlv
bi5oIgpAQCAtODQsNiArODUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uUHJvCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwog
ICAgIGlmICh0aGlzVmFsdWUuaW5oZXJpdHM8SlNGdW5jdGlvbj4odm0pKSB7CiAgICAgICAgIEpT
RnVuY3Rpb24qIGZ1bmN0aW9uID0ganNDYXN0PEpTRnVuY3Rpb24qPih0aGlzVmFsdWUpOworICAg
ICAgICBJbnRlZ3JpdHk6OmF1ZGl0U3RydWN0dXJlSUQodm0sIGZ1bmN0aW9uLT5zdHJ1Y3R1cmVJ
RCgpKTsKICAgICAgICAgaWYgKGZ1bmN0aW9uLT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpKQog
ICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNN
YWtlTm9udHJpdmlhbFN0cmluZyhnbG9iYWxPYmplY3QsICJmdW5jdGlvbiAiLCBmdW5jdGlvbi0+
bmFtZSh2bSksICIoKSB7XG4gICAgW25hdGl2ZSBjb2RlXVxufSIpKSk7CiAKQEAgLTE0MCwxMSAr
MTQyLDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Qcm8KIAogICAg
IGlmICh0aGlzVmFsdWUuaW5oZXJpdHM8SW50ZXJuYWxGdW5jdGlvbj4odm0pKSB7CiAgICAgICAg
IEludGVybmFsRnVuY3Rpb24qIGZ1bmN0aW9uID0ganNDYXN0PEludGVybmFsRnVuY3Rpb24qPih0
aGlzVmFsdWUpOworICAgICAgICBJbnRlZ3JpdHk6OmF1ZGl0U3RydWN0dXJlSUQodm0sIGZ1bmN0
aW9uLT5zdHJ1Y3R1cmVJRCgpKTsKICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBK
U1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhnbG9iYWxPYmplY3QsICJmdW5j
dGlvbiAiLCBmdW5jdGlvbi0+bmFtZSgpLCAiKCkge1xuICAgIFtuYXRpdmUgY29kZV1cbn0iKSkp
OwogICAgIH0KIAogICAgIGlmICh0aGlzVmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICBKU09i
amVjdCogb2JqZWN0ID0gYXNPYmplY3QodGhpc1ZhbHVlKTsKKyAgICAgICAgSW50ZWdyaXR5Ojph
dWRpdFN0cnVjdHVyZUlEKHZtLCBvYmplY3QtPnN0cnVjdHVyZUlEKCkpOwogICAgICAgICBpZiAo
b2JqZWN0LT5pc0Z1bmN0aW9uKHZtKSkKICAgICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZ2xvYmFsT2JqZWN0
LCAiZnVuY3Rpb24gIiwgb2JqZWN0LT5jbGFzc0luZm8odm0pLT5jbGFzc05hbWUsICIoKSB7XG4g
ICAgW25hdGl2ZSBjb2RlXVxufSIpKSk7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDZWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NlbGwuY3BwCShyZXZpc2lvbiAyNTk1NDEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBA
QAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMSBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBr
ZGUub3JnKQogICogIENvcHlyaWdodCAoQykgMjAwMSBQZXRlciBLZWxseSAocG1rQHBvc3QuY29t
KQotICogIENvcHlyaWdodCAoQykgMjAwMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjUsNiArMjUsNyBAQAogCiAjaW5j
bHVkZSAiQXJyYXlCdWZmZXJWaWV3LmgiCiAjaW5jbHVkZSAiQmxvY2tEaXJlY3RvcnlJbmxpbmVz
LmgiCisjaW5jbHVkZSAiSW50ZWdyaXR5SW5saW5lcy5oIgogI2luY2x1ZGUgIklzb1N1YnNwYWNl
SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0Nhc3QuaCIK
QEAgLTE5MSw2ICsxOTIsNyBAQCBkb3VibGUgSlNDZWxsOjp0b051bWJlcihKU0dsb2JhbE9iamVj
dCogCiAKIEpTT2JqZWN0KiBKU0NlbGw6OnRvT2JqZWN0U2xvdyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KSBjb25zdAogeworICAgIEludGVncml0eTo6YXVkaXRTdHJ1Y3R1cmVJRChnbG9i
YWxPYmplY3QtPnZtKCksIHN0cnVjdHVyZUlEKCkpOwogICAgIEFTU0VSVCghaXNPYmplY3QoKSk7
CiAgICAgaWYgKGlzU3RyaW5nKCkpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBK
U1N0cmluZyo+KHRoaXMpLT50b09iamVjdChnbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwCShyZXZpc2lv
biAyNTk1NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5
cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQg
KEMpIDE5OTktMjAwMCwyMDAzIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29w
eXJpZ2h0IChDKSAyMDA3LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
IENvcHlyaWdodCAoQykgMjAwNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTI0LDYgKzI0LDcgQEAKIAogI2luY2x1ZGUgIkJpZ0lu
dGVnZXIuaCIKICNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkludGVncml0eUlubGluZXMu
aCIKICNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0LmgiCiAjaW5jbHVkZSAiSW50bE9iamVjdC5o
IgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKQEAgLTk4LDYgKzk5LDcgQEAgc3RhdGljIEFMV0FZ
U19JTkxJTkUgYm9vbCB0b1RoaXNOdW1iZXIoVgogICAgIH0KIAogICAgIGlmIChhdXRvKiBudW1i
ZXJPYmplY3QgPSBqc0R5bmFtaWNDYXN0PE51bWJlck9iamVjdCo+KHZtLCB0aGlzVmFsdWUpKSB7
CisgICAgICAgIEludGVncml0eTo6YXVkaXRTdHJ1Y3R1cmVJRCh2bSwgbnVtYmVyT2JqZWN0LT5z
dHJ1Y3R1cmVJRCgpKTsKICAgICAgICAgeCA9IG51bWJlck9iamVjdC0+aW50ZXJuYWxWYWx1ZSgp
LmFzTnVtYmVyKCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAkocmV2aXNp
b24gMjU5NTQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90
eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0
IChDKSAxOTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmln
aHQgKEMpIDIwMDgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29w
eXJpZ2h0IChDKSAyMDA4LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYwpAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgIkVycm9yLmgiCiAj
aW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSGFzT3duUHJvcGVydHlDYWNoZS5o
IgorI2luY2x1ZGUgIkludGVncml0eUlubGluZXMuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgi
CiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCkBAIC04NCw2
ICs4NSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG8KICAgICBK
U09iamVjdCogdmFsdWVPYmogPSB0aGlzVmFsdWUudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAg
ICBpZiAoVU5MSUtFTFkoIXZhbHVlT2JqKSkKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVl
KCk7CisgICAgSW50ZWdyaXR5OjphdWRpdFN0cnVjdHVyZUlEKGdsb2JhbE9iamVjdC0+dm0oKSwg
dmFsdWVPYmotPnN0cnVjdHVyZUlEKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodmFs
dWVPYmopOwogfQogCkBAIC0zMTcsNiArMzE5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBvYmplY3RQcm90bwogICAgIGlmICh0aGlzVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aGlzVmFsdWUuaXNVbmRlZmluZWQoKSA/
IHZtLnNtYWxsU3RyaW5ncy51bmRlZmluZWRPYmplY3RTdHJpbmcoKSA6IHZtLnNtYWxsU3RyaW5n
cy5udWxsT2JqZWN0U3RyaW5nKCkpOwogICAgIEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gdGhpc1Zh
bHVlLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgSW50ZWdyaXR5OjphdWRpdFN0cnVjdHVy
ZUlEKHZtLCB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmVJRCgpKTsKICAgICBFWENFUFRJT05fQVNTRVJU
KCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIXRoaXNPYmplY3QpOwogICAgIGlmICghdGhpc09iamVj
dCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNw
cAkocmV2aXNpb24gMjU5NTQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVn
RXhwUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAg
Q29weXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAq
ICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMjAgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgIkFy
cmF5UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiQnVpbHRpbk5hbWVzLmgiCiAjaW5jbHVkZSAiRXJy
b3IuaCIKKyNpbmNsdWRlICJJbnRlZ3JpdHlJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5o
IgogI2luY2x1ZGUgIkpTQ0J1aWx0aW5zLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgpAQCAt
MjE3LDYgKzIxOCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG8K
ICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7CiAK
ICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGFzT2JqZWN0KHRoaXNWYWx1ZSk7CisgICAgSW50
ZWdyaXR5OjphdWRpdFN0cnVjdHVyZUlEKHZtLCB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmVJRCgpKTsK
IAogICAgIFN0cmluZ1JlY3Vyc2lvbkNoZWNrZXIgY2hlY2tlcihnbG9iYWxPYmplY3QsIHRoaXNP
YmplY3QpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpIHx8IGNoZWNr
ZXIuZWFybHlSZXR1cm5WYWx1ZSgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjU5NTQxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFy
cmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA0LTIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogIENvcHlyaWdodCAoQykgMjAw
OSBUb3JjaCBNb2JpbGUsIEluYy4KICAqICBDb3B5cmlnaHQgKEMpIDIwMTUgSm9yZGFuIEhhcmJh
bmQgKGxqaGFyYkBnbWFpbC5jb20pCiAgKgpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkVy
cm9yLmgiCiAjaW5jbHVkZSAiRXhlY3V0YWJsZUJhc2VJbmxpbmVzLmgiCiAjaW5jbHVkZSAiRnJh
bWVUcmFjZXJzLmgiCisjaW5jbHVkZSAiSW50ZWdyaXR5SW5saW5lcy5oIgogI2luY2x1ZGUgIklu
dGVycHJldGVySW5saW5lcy5oIgogI2luY2x1ZGUgIkludGxDb2xsYXRvci5oIgogI2luY2x1ZGUg
IkludGxPYmplY3QuaCIKQEAgLTk3OSwxMCArOTgwLDExIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgc3RyaW5nUHJvdG8KICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aGlz
VmFsdWUpOwogCiAgICAgYXV0byogc3RyaW5nT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxTdHJpbmdP
YmplY3QqPih2bSwgdGhpc1ZhbHVlKTsKLSAgICBpZiAoc3RyaW5nT2JqZWN0KQotICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHN0cmluZ09iamVjdC0+aW50ZXJuYWxWYWx1ZSgpKTsKKyAg
ICBpZiAoIXN0cmluZ09iamVjdCkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSk7CiAKLSAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlKTsKKyAgICBJbnRlZ3JpdHk6OmF1ZGl0U3RydWN0dXJlSUQodm0sIHN0cmlu
Z09iamVjdC0+c3RydWN0dXJlSUQoKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzdHJp
bmdPYmplY3QtPmludGVybmFsVmFsdWUoKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgc3RyaW5nUHJvdG9GdW5jQ2hhckF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlSURUYWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZUlEVGFibGUuaAkocmV2aXNpb24gMjU5NTQxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlSURUYWJsZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkVuc3VyZVN0
aWxsQWxpdmVIZXJlLmgiCiAjaW5jbHVkZSAiVW51c2VkUG9pbnRlci5oIgogI2luY2x1ZGUgPHd0
Zi9VbmlxdWVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTkxLDcgKzkyLDgg
QEAgcHVibGljOgogCiAgICAgdm9pZCoqIGJhc2UoKSB7IHJldHVybiByZWludGVycHJldF9jYXN0
PHZvaWQqKj4oJm1fdGFibGUpOyB9CiAKLSAgICBib29sIGlzVmFsaWQoU3RydWN0dXJlSUQpOwor
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCB2YWxpZGF0ZShTdHJ1Y3R1cmVJRCk7CisKICAgICBTdHJ1
Y3R1cmUqIGdldChTdHJ1Y3R1cmVJRCk7CiAgICAgdm9pZCBkZWFsbG9jYXRlSUQoU3RydWN0dXJl
KiwgU3RydWN0dXJlSUQpOwogICAgIFN0cnVjdHVyZUlEIGFsbG9jYXRlSUQoU3RydWN0dXJlKik7
CkBAIC0xNzYsMTkgKzE3OCwxMyBAQCBpbmxpbmUgU3RydWN0dXJlKiBTdHJ1Y3R1cmVJRFRhYmxl
OjpnZXQoCiAgICAgcmV0dXJuIGRlY29kZSh0YWJsZSgpW3N0cnVjdHVyZUluZGV4XS5lbmNvZGVk
U3RydWN0dXJlQml0cywgc3RydWN0dXJlSUQpOwogfQogCi1pbmxpbmUgYm9vbCBTdHJ1Y3R1cmVJ
RFRhYmxlOjppc1ZhbGlkKFN0cnVjdHVyZUlEIHN0cnVjdHVyZUlEKQorQUxXQVlTX0lOTElORSB2
b2lkIFN0cnVjdHVyZUlEVGFibGU6OnZhbGlkYXRlKFN0cnVjdHVyZUlEIHN0cnVjdHVyZUlEKQog
ewotICAgIGlmICghc3RydWN0dXJlSUQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKICAgICB1aW50
MzJfdCBzdHJ1Y3R1cmVJbmRleCA9IHN0cnVjdHVyZUlEID4+IHNfbnVtYmVyT2ZFbnRyb3B5Qml0
czsKLSAgICBpZiAoc3RydWN0dXJlSW5kZXggPj0gbV9jYXBhY2l0eSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotI2lmIENQVShBRERSRVNTNjQpCiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBk
ZWNvZGUodGFibGUoKVtzdHJ1Y3R1cmVJbmRleF0uZW5jb2RlZFN0cnVjdHVyZUJpdHMsIHN0cnVj
dHVyZUlEKTsKLSAgICBpZiAocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHN0cnVjdHVyZSkg
Pj4gc19lbnRyb3B5Qml0c1NoaWZ0Rm9yU3RydWN0dXJlUG9pbnRlcikKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotI2VuZGlmCi0gICAgcmV0dXJuIHRydWU7CisgICAgUkVMRUFTRV9BU1NFUlQoc3Ry
dWN0dXJlSW5kZXggPCBtX2NhcGFjaXR5KTsKKyAgICB1aW50NjRfdCB2YWx1ZSA9ICpiaXR3aXNl
X2Nhc3Q8dWludDY0X3QqPihzdHJ1Y3R1cmUpOworICAgIGVuc3VyZVN0aWxsQWxpdmVIZXJlKHZh
bHVlKTsKIH0KIAogI2Vsc2UgLy8gbm90IFVTRShKU1ZBTFVFNjQpCkBAIC0yMDksNiArMjA1LDgg
QEAgcHVibGljOgogICAgIHZvaWQgZmx1c2hPbGRUYWJsZXMoKSB7IH0KIH07CiAKK0FMV0FZU19J
TkxJTkUgdm9pZCBTdHJ1Y3R1cmVJRFRhYmxlOjp2YWxpZGF0ZShTdHJ1Y3R1cmVJRCkgeyB9CisK
ICNlbmRpZiAvLyBub3QgVVNFKEpTVkFMVUU2NCkKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xQcm90b3R5cGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbFByb3RvdHlwZS5j
cHAJKHJldmlzaW9uIDI1OTU0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5
bWJvbFByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEyLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4uCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiU3lt
Ym9sUHJvdG90eXBlLmgiCiAKICNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkludGVncml0
eUlubGluZXMuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcu
aCIKICNpbmNsdWRlICJTeW1ib2xPYmplY3QuaCIKQEAgLTk3LDYgKzk4LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBzeW1ib2xQcm90bwogICAgIGlmICghc3ltYm9sKQogICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBTeW1ib2xEZXNj
cmlwdGlvblR5cGVFcnJvcik7CiAgICAgc2NvcGUucmVsZWFzZSgpOworICAgIEludGVncml0eTo6
YXVkaXRTdHJ1Y3R1cmVJRCh2bSwgc3ltYm9sLT5zdHJ1Y3R1cmVJRCgpKTsKICAgICBjb25zdCBh
dXRvIGRlc2NyaXB0aW9uID0gc3ltYm9sLT5kZXNjcmlwdGlvbigpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoZGVzY3JpcHRpb24uaXNOdWxsKCkgPyBqc1VuZGVmaW5lZCgpIDoganNTdHJp
bmcodm0sIGRlc2NyaXB0aW9uKSk7CiB9CkBAIC0xMDksNiArMTExLDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBzeW1ib2xQcm90bwogICAgIFN5bWJvbCogc3ltYm9sID0gdHJ5RXh0
cmFjdFN5bWJvbCh2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFzeW1ib2wp
CiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIFN5
bWJvbFRvU3RyaW5nVHlwZUVycm9yKTsKKyAgICBJbnRlZ3JpdHk6OmF1ZGl0U3RydWN0dXJlSUQo
dm0sIHN5bWJvbC0+c3RydWN0dXJlSUQoKSk7CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBKU1ZhbHVlOjplbmNvZGUoanNOb250cml2aWFsU3RyaW5nKHZtLCBzeW1ib2wtPmRlc2NyaXB0
aXZlU3RyaW5nKCkpKSk7CiB9CiAKQEAgLTEyMSw2ICsxMjQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHN5bWJvbFByb3RvCiAgICAgaWYgKCFzeW1ib2wpCiAgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIFN5bWJvbFZhbHVlT2ZUeXBl
RXJyb3IpOwogCisgICAgSW50ZWdyaXR5OjphdWRpdFN0cnVjdHVyZUlEKHZtLCBzeW1ib2wtPnN0
cnVjdHVyZUlEKCkpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKHN5bWJvbCkpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSW50
ZWdyaXR5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0ludGVn
cml0eS5oCShyZXZpc2lvbiAyNTk1NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMv
SW50ZWdyaXR5LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxOS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsNiArMzIsNyBAQAogbmFtZXNwYWNlIEpTQyB7
CiAKIGNsYXNzIEpTQ2VsbDsKK2NsYXNzIFN0cnVjdHVyZUlEVGFibGU7CiBjbGFzcyBWTTsKIAog
bmFtZXNwYWNlIEludGVncml0eSB7CkBAIC05OSw2ICsxMDAsOSBAQCBBTFdBWVNfSU5MSU5FIHZv
aWQgYXVkaXRDZWxsKFZNJiB2bSwgSlNWCiAgICAgICAgIGF1ZGl0Q2VsbDxhdWRpdExldmVsPih2
bSwgdmFsdWUuYXNDZWxsKCkpOwogfQogCitBTFdBWVNfSU5MSU5FIHZvaWQgYXVkaXRTdHJ1Y3R1
cmVJRChTdHJ1Y3R1cmVJRFRhYmxlJiwgU3RydWN0dXJlSUQpOworQUxXQVlTX0lOTElORSB2b2lk
IGF1ZGl0U3RydWN0dXJlSUQoVk0mLCBTdHJ1Y3R1cmVJRCk7CisKIH0gLy8gbmFtZXNwYWNlIElu
dGVncml0eQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90b29scy9JbnRlZ3JpdHlJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0ludGVncml0eUlubGluZXMuaAkocmV2aXNpb24gMjU5NTQxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0ludGVncml0eUlubGluZXMuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC03Myw1ICs3MywxNSBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgYXVkaXRDZWxsUmFuZG9tbHkoVk0m
CiAgICAgICAgIGF1ZGl0Q2VsbEZ1bGx5KHZtLCBjZWxsKTsKIH0KIAorQUxXQVlTX0lOTElORSB2
b2lkIGF1ZGl0U3RydWN0dXJlSUQoU3RydWN0dXJlSURUYWJsZSYgdGFibGUsIFN0cnVjdHVyZUlE
IGlkKQoreworICAgIHRhYmxlLnZhbGlkYXRlKGlkKTsKK30KKworQUxXQVlTX0lOTElORSB2b2lk
IGF1ZGl0U3RydWN0dXJlSUQoVk0mIHZtLCBTdHJ1Y3R1cmVJRCBpZCkKK3sKKyAgICBhdWRpdFN0
cnVjdHVyZUlEKHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLCBpZCk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIEludGVncml0eQogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUdsb2JhbFByb3RvdHlwZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlHbG9iYWxQcm90
b3R5cGUuY3BwCShyZXZpc2lvbiAyNTk1NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseUdsb2JhbFByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzAsNiAr
MzAsNyBAQAogCiAjaW5jbHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKICNpbmNsdWRlICJHZXR0
ZXJTZXR0ZXIuaCIKKyNpbmNsdWRlICJJbnRlZ3JpdHlJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlND
SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlHbG9iYWwuaCIKICNpbmNsdWRlICJK
U1dlYkFzc2VtYmx5SGVscGVycy5oIgpAQCAtNjEsNiArNjIsNyBAQCBzdGF0aWMgQUxXQVlTX0lO
TElORSBKU1dlYkFzc2VtYmx5R2xvYmFsCiAgICAgICAgICAgICBjcmVhdGVUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCAiZXhwZWN0ZWQgfHRoaXN8IHZhbHVlIHRvIGJlIGFuIGluc3RhbmNlIG9mIFdl
YkFzc2VtYmx5Lkdsb2JhbCJfcykpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9Cisg
ICAgSW50ZWdyaXR5OjphdWRpdFN0cnVjdHVyZUlEKHZtLCByZXN1bHQtPnN0cnVjdHVyZUlEKCkp
OwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
</data>
<flag name="review"
          id="410906"
          type_id="1"
          status="+"
          setter="keith_miller"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395477</attachid>
            <date>2020-04-04 21:39:21 -0700</date>
            <delta_ts>2020-04-04 22:58:35 -0700</delta_ts>
            <desc>patch for landing.</desc>
            <filename>bug-210015.patch</filename>
            <type>text/plain</type>
            <size>41194</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjU5NTQyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDczIEBA
CisyMDIwLTA0LTA0ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZGQgc29tZSBzdHJ1Y3R1cmVJRCBpbnRlZ3JpdHkgY2hlY2tzIHRvIHZhcmlvdXMgcnVudGltZSBm
dW5jdGlvbnMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTAwMTUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU4MTE2NTE0PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IEtlaXRoIE1pbGxlci4KKworICAgICAgICBTcGVjaWZpY2FsbHksIGltcGxlbWVu
dGF0aW9ucyBvZiB0b1N0cmluZygpLCB0b1ZhbHVlKCksIGFuZCBhIGZldyBvdGhlcnMuCisgICAg
ICAgIEkgYWxzbyBtb3ZlZCB0aGUgSGVhcENlbGwgdmVyc2lvbiBvZiBlbnN1cmVTdGlsbEFsaXZl
SGVyZSgpIGludG8gdGhlIG5ldworICAgICAgICBFbnN1cmVTdGlsbEFsaXZlSGVyZS5oL2NwcCBz
aW5jZSBpdCdzIHVzZWZ1bCBmb3IgYW55IHBvaW50ZXJzLCBub3QganVzdCBIZWFwQ2VsbHMuCisK
KyAgICAgICAgVGhpcyBjaGFuZ2UgaXMgcGVyZm9ybWFuY2UgbmV1dHJhbCBvbiBKZXRTdHJlYW0g
Mi4wLCBTcGVlZG9tZXRlci0yLCBhbmQgUExUNS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogaGVhcC9IZWFwQ2VsbC5jcHA6CisgICAg
ICAgIChKU0M6OmVuc3VyZVN0aWxsQWxpdmVIZXJlKTogRGVsZXRlZC4KKyAgICAgICAgKiBoZWFw
L0hlYXBDZWxsLmg6CisgICAgICAgIChKU0M6OmVuc3VyZVN0aWxsQWxpdmVIZXJlKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBoZWFwL1Nsb3RWaXNpdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6U2xvdFZp
c2l0b3I6OmFwcGVuZEpTQ2VsbE9yQXV4aWxpYXJ5KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5
UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNUb1N0cmluZyk6Cisg
ICAgICAgICogcnVudGltZS9CaWdJbnRQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpiaWdJ
bnRQcm90b0Z1bmNUb1N0cmluZ0ltcGwpOgorICAgICAgICAoSlNDOjpiaWdJbnRQcm90b0Z1bmNW
YWx1ZU9mKToKKyAgICAgICAgKiBydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwOgorICAgICAg
ICAoSlNDOjpib29sZWFuUHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAgICAoSlNDOjpib29sZWFu
UHJvdG9GdW5jVmFsdWVPZik6CisgICAgICAgICogcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcDoK
KyAgICAgICAgKEpTQzo6Zm9ybWF0TG9jYWxlRGF0ZSk6CisgICAgICAgIChKU0M6OmZvcm1hdGVE
YXRlSW5zdGFuY2UpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jVG9JU09TdHJpbmcpOgor
ICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jVG9QcmltaXRpdmVTeW1ib2wpOgorICAgICAgICAq
IHJ1bnRpbWUvRW5zdXJlU3RpbGxBbGl2ZUhlcmUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6
ZW5zdXJlU3RpbGxBbGl2ZUhlcmUpOgorICAgICAgICAqIHJ1bnRpbWUvRW5zdXJlU3RpbGxBbGl2
ZUhlcmUuaDogQWRkZWQuCisgICAgICAgIChKU0M6OmVuc3VyZVN0aWxsQWxpdmVIZXJlKToKKyAg
ICAgICAgKiBydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwOgorICAgICAgICAoSlNDOjpFcnJvcklu
c3RhbmNlOjpzYW5pdGl6ZWRUb1N0cmluZyk6CisgICAgICAgICogcnVudGltZS9FcnJvclByb3Rv
dHlwZS5jcHA6CisgICAgICAgIChKU0M6OmVycm9yUHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAg
ICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpmdW5jdGlv
blByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5jcHA6CisgICAg
ICAgIChKU0M6OkpTQ2VsbDo6dG9PYmplY3RTbG93IGNvbnN0KToKKyAgICAgICAgKiBydW50aW1l
L051bWJlclByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OnRvVGhpc051bWJlcik6CisgICAg
ICAgICogcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpvYmplY3RQ
cm90b0Z1bmNWYWx1ZU9mKToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jVG9TdHJpbmcp
OgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6
cmVnRXhwUHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nUHJvdG90
eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAg
ICAqIHJ1bnRpbWUvU3RydWN0dXJlSURUYWJsZS5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVJ
RFRhYmxlOjp2YWxpZGF0ZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUlEVGFibGU6OmlzVmFs
aWQpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sUHJvdG90eXBlLmNwcDoKKyAg
ICAgICAgKEpTQzo6c3ltYm9sUHJvdG9HZXR0ZXJEZXNjcmlwdGlvbik6CisgICAgICAgIChKU0M6
OnN5bWJvbFByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKEpTQzo6c3ltYm9sUHJvdG9GdW5j
VmFsdWVPZik6CisgICAgICAgICogdG9vbHMvSW50ZWdyaXR5Lmg6CisgICAgICAgICogdG9vbHMv
SW50ZWdyaXR5SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpJbnRlZ3JpdHk6OmF1ZGl0U3RydWN0
dXJlSUQpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlHbG9iYWxQcm90b3R5cGUuY3Bw
OgorICAgICAgICAoSlNDOjpnZXRHbG9iYWwpOgorCiAyMDIwLTA0LTA0ICBBbGV4ZXkgU2h2YXlr
YSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KIAogICAgICAgICAnXHUnIHNob3VsZCB0aHJvdyBh
biBlYXJseSBTeW50YXhFcnJvciBleGNlcHRpb24sIGJ1dCBpbnN0ZWFkIGV2YWx1YXRlcyB0byAn
dScKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDI1OTU0
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtODIwLDYgKzgyMCw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09S
S19IRUEKICAgICBydW50aW1lL0Rpc2FsbG93U2NvcGUuaAogICAgIHJ1bnRpbWUvRGlzYWxsb3dW
TVJlZW50cnkuaAogICAgIHJ1bnRpbWUvRHVtcENvbnRleHQuaAorICAgIHJ1bnRpbWUvRW5zdXJl
U3RpbGxBbGl2ZUhlcmUuaAogICAgIHJ1bnRpbWUvRW51bWVyYXRpb25Nb2RlLmgKICAgICBydW50
aW1lL0Vycm9yLmgKICAgICBydW50aW1lL0Vycm9ySGFuZGxpbmdTY29wZS5oCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL1NvdXJjZXMudHh0CShyZXZpc2lvbiAyNTk1NDEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTc2NCw2ICs3NjQsNyBAQCBy
dW50aW1lL0Rpc2FsbG93Vk1SZWVudHJ5LmNwcAogcnVudGltZS9Eb3VibGVQcmVkaWN0aW9uRnV6
emVyQWdlbnQuY3BwCiBydW50aW1lL0R1bXBDb250ZXh0LmNwcAogcnVudGltZS9FQ01BU2NyaXB0
U3BlY0ludGVybmFsRnVuY3Rpb25zLmNwcAorcnVudGltZS9FbnN1cmVTdGlsbEFsaXZlSGVyZS5j
cHAKIHJ1bnRpbWUvRXJyb3IuY3BwCiBydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuY3BwCiBydW50
aW1lL0Vycm9ySGFuZGxpbmdTY29wZS5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiAyNTk1NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTg4OCw2
ICsxODg4LDcgQEAKIAkJRkUzMDIyRDcxRTQyODU3MzAwQkFDNDkzIC8qIFZNSW5zcGVjdG9yLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTMwMjJENTFF
NDI4NTY3MDBCQUM0OTMgLyogVk1JbnNwZWN0b3IuaCAqLzsgfTsKIAkJRkUzMThGRTAxQ0FDOTgy
RjAwREZDQzU0IC8qIEVDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzE4RkRFMUNBQzhDNTMwMERG
Q0M1NCAvKiBFQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmggKi87IH07CiAJCUZFMzQy
MjEyMUQ2QjgxQzMwMDMyQkU4OCAvKiBUaHJvd1Njb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTM0MjIxMTFENkI4MThDMDAzMkJFODggLyogVGhy
b3dTY29wZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCUZFMzRFRTIxMjQzOThBQUUwMEFBMkU3QyAvKiBFbnN1cmVTdGlsbEFsaXZlSGVyZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzNEVFMjAyNDM5
OEE5QTAwQUEyRTdDIC8qIEVuc3VyZVN0aWxsQWxpdmVIZXJlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkUzODQyMzMyMzI0RDUxQjAwOURENDQ1
IC8qIE9wdGlvbnNMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRTM4NDIzMTIzMjRENTFCMDA5REQ0NDUgLyogT3B0aW9uc0xpc3QuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTM4NEVFNjFBRERC
N0FEMDA1NURFMkMgLyogSlNEb2xsYXJWTS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkUzODRFRTIxQUREQjdBRDAwNTVERTJDIC8qIEpTRG9sbGFyVk0u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTNB
MDZBNjFDMTBCNzJEMDAzOTBGREQgLyogSklUQml0T3JHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFM0EwNkE0MUMxMEI3MDgwMDM5MEZE
RCAvKiBKSVRCaXRPckdlbmVyYXRvci5oICovOyB9OwpAQCAtNTEyMiw2ICs1MTIzLDggQEAKIAkJ
RkUzMThGREQxQ0FDOEM1MzAwREZDQzU0IC8qIEVDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlv
bnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRUNNQVNjcmlwdFNw
ZWNJbnRlcm5hbEZ1bmN0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZF
MzE4RkRFMUNBQzhDNTMwMERGQ0M1NCAvKiBFQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25z
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVDTUFTY3JpcHRTcGVjSW50ZXJu
YWxGdW5jdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUzNDIyMTExRDZC
ODE4QzAwMzJCRTg4IC8qIFRocm93U2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVGhyb3dTY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTM0RUUy
MDI0Mzk4QTlBMDBBQTJFN0MgLyogRW5zdXJlU3RpbGxBbGl2ZUhlcmUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRW5zdXJlU3RpbGxBbGl2ZUhlcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RkUzNEVFMjIyNDM5OEI4NTAwQUEyRTdDIC8qIEVuc3VyZVN0aWxsQWxpdmVIZXJlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVuc3VyZVN0aWxsQWxpdmVIZXJlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUzNUMyRjAyMUIxRTZDNTAwMEY0Q0E4
IC8qIFRlbXBsYXRlLnJiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucnVieTsgcGF0aCA9IFRlbXBs
YXRlLnJiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTM1QzJGMTIxQjFFNkM2MDAw
RjRDQTggLyogRml0cy5yYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnJ1Ynk7IHBhdGggPSBGaXRz
LnJiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTM1QzJGMjIxQjFFNkM2MDAwRjRD
QTggLyogR2VuZXJhdGVkRmlsZS5yYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnJ1Ynk7IHBhdGgg
PSBHZW5lcmF0ZWRGaWxlLnJiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzExMSw2
ICs3MTE0LDggQEAKIAkJCQlBNzA0NDdFQzE3QTBCRDcwMDBGNTg5OEUgLyogRHVtcENvbnRleHQu
aCAqLywKIAkJCQlGRTMxOEZERDFDQUM4QzUzMDBERkNDNTQgLyogRUNNQVNjcmlwdFNwZWNJbnRl
cm5hbEZ1bmN0aW9ucy5jcHAgKi8sCiAJCQkJRkUzMThGREUxQ0FDOEM1MzAwREZDQzU0IC8qIEVD
TUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuaCAqLywKKwkJCQlGRTM0RUUyMjI0Mzk4Qjg1
MDBBQTJFN0MgLyogRW5zdXJlU3RpbGxBbGl2ZUhlcmUuY3BwICovLAorCQkJCUZFMzRFRTIwMjQz
OThBOUEwMEFBMkU3QyAvKiBFbnN1cmVTdGlsbEFsaXZlSGVyZS5oICovLAogCQkJCTJBRDJFREZB
MTk3OTlFMzgwMDRENjQ3OCAvKiBFbnVtZXJhdGlvbk1vZGUuaCAqLywKIAkJCQlCQzMzN0JFQTBF
MUIwMENCMDA3NjkxOEEgLyogRXJyb3IuY3BwICovLAogCQkJCUJDMzA0NjA2MEUxRjQ5N0YwMDMy
MzJDRiAvKiBFcnJvci5oICovLApAQCAtODkyNyw2ICs4OTMyLDcgQEAKIAkJCQkwRkUwNTAxNDFB
QTkwOTExMDBEMzNCMzMgLyogQXJndW1lbnRzTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzlB
MjI4MzYxRDM1RDcxRjAwRDhFMDY3IC8qIEFyaXRoUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEY2QjFDQjkxODYxMjQ0QzAwODQ1RDk3IC8qIEFyaXR5Q2hlY2tNb2RlLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlGRTM0RUUyMTI0Mzk4QUFFMDBBQTJFN0MgLyogRW5zdXJlU3RpbGxBbGl2ZUhl
cmUuaCBpbiBIZWFkZXJzICovLAogCQkJCUExQTAwOUMxMTgzMUEyNkUwMENGODcxMSAvKiBBUk02
NEFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkUxRTJDNDAyMjQwREQ2MjAwRjZCNzI5
IC8qIEFSTTY0RUFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFBMDA5QzExODMxQTI2
RTAwQ0Y4NzIyIC8qIEFSTTY0UmVnaXN0ZXJzLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBDZWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwQ2VsbC5jcHAJKHJldmlzaW9uIDI1OTU0MSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBDZWxsLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTQyLDEzICs0Miw2IEBAIGJvb2wgSGVhcENlbGw6OmlzTGl2ZSgpCiAgICAgcmV0dXJuIG1hcmtl
ZEJsb2NrSGFuZGxlLmlzTGl2ZSh0aGlzKTsKIH0KIAotI2lmICFDT01QSUxFUihHQ0NfQ09NUEFU
SUJMRSkKLS8vIFRoaXMgbWFrZXMgdGhlIGFyZ3VtZW50IG9wYXF1ZSBmcm9tIHRoZSBjb21waWxl
ci4KLU5FVkVSX0lOTElORSB2b2lkIGVuc3VyZVN0aWxsQWxpdmVIZXJlKGNvbnN0IHZvaWQqKQot
ewotfQotI2VuZGlmCi0KIH0gLy8gbmFtZXNwYWNlIEpTQwogCiBuYW1lc3BhY2UgV1RGIHsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBDZWxsLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcENlbGwuaAkocmV2aXNpb24gMjU5NTQxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcENlbGwuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRGVzdHJ1Y3Rpb25N
b2RlLmgiCisjaW5jbHVkZSAiRW5zdXJlU3RpbGxBbGl2ZUhlcmUuaCIKIAogbmFtZXNwYWNlIEpT
QyB7CiAKQEAgLTM3LDE1ICszOCw2IEBAIGNsYXNzIFN1YnNwYWNlOwogY2xhc3MgVk07CiBzdHJ1
Y3QgQ2VsbEF0dHJpYnV0ZXM7CiAKLSNpZiBDT01QSUxFUihHQ0NfQ09NUEFUSUJMRSkKLUFMV0FZ
U19JTkxJTkUgdm9pZCBlbnN1cmVTdGlsbEFsaXZlSGVyZShjb25zdCB2b2lkKiBwb2ludGVyKQot
ewotICAgIGFzbSB2b2xhdGlsZSAoIiIgOiA6ICJyIihwb2ludGVyKSA6ICJtZW1vcnkiKTsKLX0K
LSNlbHNlCi1KU19FWFBPUlRfUFJJVkFURSB2b2lkIGVuc3VyZVN0aWxsQWxpdmVIZXJlKGNvbnN0
IHZvaWQqKTsKLSNlbmRpZgotCiBjbGFzcyBIZWFwQ2VsbCB7CiBwdWJsaWM6CiAgICAgZW51bSBL
aW5kIDogaW50OF90IHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNp
dG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90Vmlz
aXRvci5jcHAJKHJldmlzaW9uIDI1OTU0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L1Nsb3RWaXNpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTItMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTItMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIwMCwxMSArMjAwLDggQEAgdm9p
ZCBTbG90VmlzaXRvcjo6YXBwZW5kSlNDZWxsT3JBdXhpbGlhcgogICAgICAgICBpZiAoaXNOdWtl
ZChzdHJ1Y3R1cmVJRCkpCiAgICAgICAgICAgICBkaWUoIkdDIHNjYW4gZm91bmQgb2JqZWN0IGlu
IGJhZCBzdGF0ZTogc3RydWN0dXJlSUQgaXMgbnVrZWQhXG4iKTsKICAgICAgICAgCi0jaWYgVVNF
KEpTVkFMVUU2NCkKICAgICAgICAgLy8gVGhpcyBkZXRlY3RzIHRoZSB3b3JzdCBvZiB0aGUgYmFk
bmVzcy4KLSAgICAgICAgaWYgKCFoZWFwKCktPnN0cnVjdHVyZUlEVGFibGUoKS5pc1ZhbGlkKHN0
cnVjdHVyZUlEKSkKLSAgICAgICAgICAgIGRpZSgiR0Mgc2NhbiBmb3VuZCBjb3JydXB0IG9iamVj
dDogc3RydWN0dXJlSUQgaXMgaW52YWxpZCFcbiIpOwotI2VuZGlmCisgICAgICAgIEludGVncml0
eTo6YXVkaXRTdHJ1Y3R1cmVJRChoZWFwKCktPnN0cnVjdHVyZUlEVGFibGUoKSwgc3RydWN0dXJl
SUQpOwogICAgIH07CiAgICAgCiAgICAgLy8gSW4gZGVidWcgbW9kZSwgd2UgdmFsaWRhdGUgYmVm
b3JlIG1hcmtpbmcgc2luY2UgdGhpcyBtYWtlcyBpdCBjbGVhcmVyIHdoYXQgdGhlIHByb2JsZW0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlw
ZS5jcHAJKHJldmlzaW9uIDI1OTU0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAg
KiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykK
LSAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICogIENvcHlyaWdodCAoQykgMjAwMyBQZXRlciBLZWxseSAocG1rQHBvc3QuY29t
KQogICogIENvcHlyaWdodCAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292IChhcEBueXBvcC5j
b20pCiAgKgpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1
ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCisjaW5jbHVkZSAiSW50ZWdy
aXR5SW5saW5lcy5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSklULmgi
CiAjaW5jbHVkZSAiSlNBcnJheUlubGluZXMuaCIKQEAgLTYwMyw2ICs2MDQsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GCiAKICAgICAvLyAxLiBMZXQgYXJyYXkg
YmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIFRvT2JqZWN0IG9uIHRoZSB0aGlzIHZhbHVlLgogICAg
IEpTT2JqZWN0KiB0aGlzT2JqZWN0ID0gdGhpc1ZhbHVlLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7
CisgICAgSW50ZWdyaXR5OjphdWRpdFN0cnVjdHVyZUlEKHZtLCB0aGlzT2JqZWN0LT5zdHJ1Y3R1
cmVJRCgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgp
KTsKIAogICAgIGlmICghY2FuVXNlRGVmYXVsdEFycmF5Sm9pbkZvclRvU3RyaW5nKHZtLCB0aGlz
T2JqZWN0KSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50UHJv
dG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9C
aWdJbnRQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyNTk1NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9CaWdJbnRQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYg
KzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNyBDYWlvIExpbWEgPHRpY2Fpb2xpbWFA
Z21haWwuY29tPi4KLSAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjks
NiArMjksNyBAQAogCiAjaW5jbHVkZSAiQmlnSW50T2JqZWN0LmgiCiAjaW5jbHVkZSAiRXJyb3Iu
aCIKKyNpbmNsdWRlICJJbnRlZ3JpdHlJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNCaWdJbnQuaCIK
ICNpbmNsdWRlICJKU0NCdWlsdGlucy5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKQEAgLTEw
MSw2ICsxMDIsNyBAQCBzdGF0aWMgSlNWYWx1ZSBiaWdJbnRQcm90b0Z1bmNUb1N0cmluZ0ltCiAK
ICAgICBBU1NFUlQodmFsdWUpOwogCisgICAgSW50ZWdyaXR5OjphdWRpdFN0cnVjdHVyZUlEKHZt
LCB2YWx1ZS0+c3RydWN0dXJlSUQoKSk7CiAgICAgaW50MzJfdCByYWRpeCA9IGV4dHJhY3RUb1N0
cmluZ1JhZGl4QXJndW1lbnQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBz
Y29wZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIApAQCAtMTI2LDEx
ICsxMjgsMTQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBiaWdJbnRQcm90bwogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBiaWdJbnRQcm90b0Z1bmNWYWx1ZU9mKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICBpZiAoSlNCaWdJbnQqIHZhbHVlID0gdG9UaGlz
QmlnSW50VmFsdWUodm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpKQotICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKTsKLSAgICAKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7Ci0gICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIid0aGlzJyB2YWx1ZSBtdXN0IGJlIGEgQmlnSW50IG9yIEJpZ0ludE9iamVjdCJf
cyk7CisKKyAgICBKU0JpZ0ludCogdmFsdWUgPSB0b1RoaXNCaWdJbnRWYWx1ZSh2bSwgY2FsbEZy
YW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIid0aGlzJyB2YWx1ZSBtdXN0IGJlIGEg
QmlnSW50IG9yIEJpZ0ludE9iamVjdCJfcyk7CisKKyAgICBJbnRlZ3JpdHk6OmF1ZGl0U3RydWN0
dXJlSUQodm0sIHZhbHVlLT5zdHJ1Y3R1cmVJRCgpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHZhbHVlKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmNwcAkocmV2aXNpb24g
MjU5NTQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlw
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAo
QykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0
IChDKSAyMDAzLCAyMDA4LCAyMDExLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0yMyw2ICsyMyw3IEBACiAKICNpbmNsdWRl
ICJFcnJvci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKKyNpbmNsdWRlICJJbnRl
Z3JpdHlJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTU3Ry
aW5nLmgiCiAjaW5jbHVkZSAiT2JqZWN0UHJvdG90eXBlLmgiCkBAIC04MCw2ICs4MSw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm9vbGVhblByb3QKICAgICBpZiAoVU5MSUtFTFko
IXRoaXNPYmplY3QpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlKTsKIAorICAgIEludGVncml0eTo6YXVkaXRTdHJ1Y3R1cmVJRCh2bSwgdGhpc09i
amVjdC0+c3RydWN0dXJlSUQoKSk7CiAgICAgaWYgKHRoaXNPYmplY3QtPmludGVybmFsVmFsdWUo
KSA9PSBqc0Jvb2xlYW4oZmFsc2UpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHZt
LnNtYWxsU3RyaW5ncy5mYWxzZVN0cmluZygpKTsKIApAQCAtOTksNiArMTAxLDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib29sZWFuUHJvdAogICAgIGlmIChVTkxJS0VMWSghdGhp
c09iamVjdCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUpOwogCisgICAgSW50ZWdyaXR5OjphdWRpdFN0cnVjdHVyZUlEKHZtLCB0aGlzT2JqZWN0
LT5zdHJ1Y3R1cmVJRCgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRoaXNPYmplY3Qt
PmludGVybmFsVmFsdWUoKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0RhdGVQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyNTk1NDEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFycmkgUG9y
dGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA0LTIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogIENvcHlyaWdodCAoQykgMjAwOCwgMjAw
OSBUb3JjaCBNb2JpbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBDb3B5cmlnaHQg
KEMpIDIwMTAgVG9yY2ggTW9iaWxlIChCZWlqaW5nKSBDby4gTHRkLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJEYXRlQ29udmVyc2lvbi5oIgog
I2luY2x1ZGUgIkRhdGVJbnN0YW5jZS5oIgogI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAi
SW50ZWdyaXR5SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0J1aWx0aW5zLmgiCiAjaW5jbHVkZSAi
SlNEYXRlTWF0aC5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCkBAIC0xNDAsOSArMTQx
LDExIEBAIHN0YXRpYyBDRkRhdGVGb3JtYXR0ZXJTdHlsZSBzdHlsZUZyb21BcmcKICAgICByZXR1
cm4gZGVmYXVsdFN0eWxlOwogfQogCi1zdGF0aWMgSlNDZWxsKiBmb3JtYXRMb2NhbGVEYXRlKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBEYXRlSW5z
dGFuY2UqLCBkb3VibGUgdGltZUluTWlsbGlzZWNvbmRzLCBMb2NhbGVEYXRlVGltZUZvcm1hdCBm
b3JtYXQpCitzdGF0aWMgSlNDZWxsKiBmb3JtYXRMb2NhbGVEYXRlKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBEYXRlSW5zdGFuY2UqIGRhdGVPYmpl
Y3QsIGRvdWJsZSB0aW1lSW5NaWxsaXNlY29uZHMsIExvY2FsZURhdGVUaW1lRm9ybWF0IGZvcm1h
dCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgSW50ZWdyaXR5Ojph
dWRpdFN0cnVjdHVyZUlEKHZtLCBkYXRlT2JqZWN0LT5zdHJ1Y3R1cmVJRCgpKTsKKwogICAgIENG
RGF0ZUZvcm1hdHRlclN0eWxlIGRhdGVTdHlsZSA9IChmb3JtYXQgIT0gTG9jYWxlVGltZSA/IGtD
RkRhdGVGb3JtYXR0ZXJMb25nU3R5bGUgOiBrQ0ZEYXRlRm9ybWF0dGVyTm9TdHlsZSk7CiAgICAg
Q0ZEYXRlRm9ybWF0dGVyU3R5bGUgdGltZVN0eWxlID0gKGZvcm1hdCAhPSBMb2NhbGVEYXRlID8g
a0NGRGF0ZUZvcm1hdHRlckxvbmdTdHlsZSA6IGtDRkRhdGVGb3JtYXR0ZXJOb1N0eWxlKTsKIApA
QCAtMTcxLDkgKzE3NCwxMSBAQCBzdGF0aWMgSlNDZWxsKiBmb3JtYXRMb2NhbGVEYXRlKEpTR2xv
YmFsCiAKICNlbGlmICFVQ09ORklHX05PX0ZPUk1BVFRJTkcKIAotc3RhdGljIEpTQ2VsbCogZm9y
bWF0TG9jYWxlRGF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqLCBE
YXRlSW5zdGFuY2UqLCBkb3VibGUgdGltZUluTWlsbGlzZWNvbmRzLCBMb2NhbGVEYXRlVGltZUZv
cm1hdCBmb3JtYXQpCitzdGF0aWMgSlNDZWxsKiBmb3JtYXRMb2NhbGVEYXRlKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSosIERhdGVJbnN0YW5jZSogZGF0ZU9iamVjdCwg
ZG91YmxlIHRpbWVJbk1pbGxpc2Vjb25kcywgTG9jYWxlRGF0ZVRpbWVGb3JtYXQgZm9ybWF0KQog
ewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBJbnRlZ3JpdHk6OmF1ZGl0
U3RydWN0dXJlSUQodm0sIGRhdGVPYmplY3QtPnN0cnVjdHVyZUlEKCkpOworCiAgICAgVURhdGVG
b3JtYXRTdHlsZSB0aW1lU3R5bGUgPSAoZm9ybWF0ICE9IExvY2FsZURhdGUgPyBVREFUX0xPTkcg
OiBVREFUX05PTkUpOwogICAgIFVEYXRlRm9ybWF0U3R5bGUgZGF0ZVN0eWxlID0gKGZvcm1hdCAh
PSBMb2NhbGVUaW1lID8gVURBVF9MT05HIDogVURBVF9OT05FKTsKIApAQCAtMzExLDYgKzMxNiw4
IEBAIHN0YXRpYyBKU0NlbGwqIGZvcm1hdExvY2FsZURhdGUoSlNHbG9iYWwKIHN0YXRpYyBKU0Nl
bGwqIGZvcm1hdExvY2FsZURhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUsIERhdGVJbnN0YW5jZSogZGF0ZU9iamVjdCwgZG91YmxlLCBMb2NhbGVE
YXRlVGltZUZvcm1hdCBmb3JtYXQpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OworICAgIEludGVncml0eTo6YXVkaXRTdHJ1Y3R1cmVJRCh2bSwgZGF0ZU9iamVjdC0+c3RydWN0
dXJlSUQoKSk7CisKICAgICBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSogZ3JlZ29yaWFuRGF0ZVRp
bWUgPSBkYXRlT2JqZWN0LT5ncmVnb3JpYW5EYXRlVGltZSh2bSk7CiAgICAgaWYgKCFncmVnb3Jp
YW5EYXRlVGltZSkKICAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIkludmFs
aWQgRGF0ZSJfcyk7CkBAIC0zMjgsNiArMzM1LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIGZv
cm1hdGVEYXRlSW5zdGFuYwogICAgIGlmIChVTkxJS0VMWSghdGhpc0RhdGVPYmopKQogICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKTsKIAorICAgIElu
dGVncml0eTo6YXVkaXRTdHJ1Y3R1cmVJRCh2bSwgdGhpc0RhdGVPYmotPnN0cnVjdHVyZUlEKCkp
OwogICAgIGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lKiBncmVnb3JpYW5EYXRlVGltZSA9IGFzVVRD
VmFyaWFudAogICAgICAgICA/IHRoaXNEYXRlT2JqLT5ncmVnb3JpYW5EYXRlVGltZVVUQyh2bSkK
ICAgICAgICAgOiB0aGlzRGF0ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWUodm0pOwpAQCAtNTQzLDcg
KzU1MSw4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnUKICAgICBh
dXRvKiB0aGlzRGF0ZU9iaiA9IGpzRHluYW1pY0Nhc3Q8RGF0ZUluc3RhbmNlKj4odm0sIHRoaXNW
YWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzRGF0ZU9iaikpCiAgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOwotICAgIAorCisgICAgSW50ZWdy
aXR5OjphdWRpdFN0cnVjdHVyZUlEKHZtLCB0aGlzRGF0ZU9iai0+c3RydWN0dXJlSUQoKSk7CiAg
ICAgaWYgKCFzdGQ6OmlzZmluaXRlKHRoaXNEYXRlT2JqLT5pbnRlcm5hbE51bWJlcigpKSkKICAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5n
ZUVycm9yKGdsb2JhbE9iamVjdCwgIkludmFsaWQgRGF0ZSJfcykpOwogCkBAIC02MjcsNiArNjM2
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdQogICAgIGlmICgh
dGhpc1ZhbHVlLmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJEYXRlLnByb3RvdHlwZVtTeW1ib2wudG9QcmltaXRpdmVdIGV4
cGVjdGVkIHx0aGlzfCB0byBiZSBhbiBvYmplY3QuIik7CiAgICAgSlNPYmplY3QqIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8SlNPYmplY3QqPih0aGlzVmFsdWUpOworICAgIEludGVncml0eTo6YXVkaXRT
dHJ1Y3R1cmVJRCh2bSwgdGhpc09iamVjdC0+c3RydWN0dXJlSUQoKSk7CiAKICAgICBpZiAoIWNh
bGxGcmFtZS0+YXJndW1lbnRDb3VudCgpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRGF0ZS5wcm90b3R5cGVbU3ltYm9sLnRvUHJpbWl0aXZl
XSBleHBlY3RlZCBhIGZpcnN0IGFyZ3VtZW50LiIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRW5zdXJlU3RpbGxBbGl2ZUhlcmUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vuc3VyZVN0aWxsQWxpdmVIZXJlLmNwcAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FbnN1cmVTdGlsbEFsaXZl
SGVyZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJFbnN1cmVTdGlsbEFsaXZlSGVyZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworI2lmICFD
T01QSUxFUihHQ0NfQ09NUEFUSUJMRSkKKworLy8gVGhlc2UgbWFrZXMgdGhlIGFyZ3VtZW50IG9w
YXF1ZSBmcm9tIHRoZSBjb21waWxlci4KKworTkVWRVJfSU5MSU5FIHZvaWQgZW5zdXJlU3RpbGxB
bGl2ZUhlcmUodWludDY0X3QpCit7Cit9CisKK05FVkVSX0lOTElORSB2b2lkIGVuc3VyZVN0aWxs
QWxpdmVIZXJlKGNvbnN0IHZvaWQqKQoreworfQorCisjZW5kaWYgLy8gIUNPTVBJTEVSKEdDQ19D
T01QQVRJQkxFKQorCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Vuc3VyZVN0aWxsQWxpdmVIZXJlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRW5zdXJlU3RpbGxBbGl2ZUhlcmUuaAkobm9uZXhpc3Rl
bnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FbnN1cmVTdGlsbEFsaXZlSGVy
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIEpTQyB7
CisKKyNpZiBDT01QSUxFUihHQ0NfQ09NUEFUSUJMRSkKKworQUxXQVlTX0lOTElORSB2b2lkIGVu
c3VyZVN0aWxsQWxpdmVIZXJlKHVpbnQ2NF90IHZhbHVlKQoreworICAgIGFzbSB2b2xhdGlsZSAo
IiIgOiA6ICJyIih2YWx1ZSkgOiAibWVtb3J5Iik7Cit9CisKK0FMV0FZU19JTkxJTkUgdm9pZCBl
bnN1cmVTdGlsbEFsaXZlSGVyZShjb25zdCB2b2lkKiBwb2ludGVyKQoreworICAgIGFzbSB2b2xh
dGlsZSAoIiIgOiA6ICJyIihwb2ludGVyKSA6ICJtZW1vcnkiKTsKK30KKworI2Vsc2UKKworSlNf
RVhQT1JUX1BSSVZBVEUgdm9pZCBlbnN1cmVTdGlsbEFsaXZlSGVyZSh1aW50NjRfdCB2YWx1ZSkK
K0pTX0VYUE9SVF9QUklWQVRFIHZvaWQgZW5zdXJlU3RpbGxBbGl2ZUhlcmUoY29uc3Qgdm9pZCop
OworCisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNwcAkocmV2aXNpb24gMjU5NTQxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAw
IEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAw
My0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICog
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMKQEAgLTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUg
IklubGluZUNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIkludGVncml0eUlubGluZXMuaCIKICNpbmNs
dWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTU2NvcGUuaCIKICNpbmNsdWRlICJKU0NJ
bmxpbmVzLmgiCkBAIC0xMzksNiArMTQwLDcgQEAgU3RyaW5nIEVycm9ySW5zdGFuY2U6OnNhbml0
aXplZFRvU3RyaW5nKAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgSW50ZWdyaXR5OjphdWRp
dFN0cnVjdHVyZUlEKHZtLCBzdHJ1Y3R1cmVJRCgpKTsKIAogICAgIEpTVmFsdWUgbmFtZVZhbHVl
OwogICAgIGF1dG8gbmFtZVByb3BlcnROYW1lID0gdm0ucHJvcGVydHlOYW1lcy0+bmFtZTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5j
cHAJKHJldmlzaW9uIDI1OTU0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vy
cm9yUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAg
Q29weXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAq
ICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgIkVy
cm9yUHJvdG90eXBlLmgiCiAKICNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkludGVncml0
eUlubGluZXMuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmdJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiT2JqZWN0UHJvdG90eXBlLmgiCkBAIC04Miw2ICs4Myw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZXJyb3JQcm90b0YKICAgICBpZiAoIXRoaXNW
YWx1ZS5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlKTsKICAgICBKU09iamVjdCogdGhpc09iaiA9IGFzT2JqZWN0KHRoaXNWYWx1
ZSk7CisgICAgSW50ZWdyaXR5OjphdWRpdFN0cnVjdHVyZUlEKHZtLCB0aGlzT2JqLT5zdHJ1Y3R1
cmVJRCgpKTsKIAogICAgIC8vIEd1YXJkIGFnYWluc3QgcmVjdXJzaW9uIQogICAgIFN0cmluZ1Jl
Y3Vyc2lvbkNoZWNrZXIgY2hlY2tlcihnbG9iYWxPYmplY3QsIHRoaXNPYmopOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNw
cAkocmV2aXNpb24gMjU5NTQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVu
Y3Rpb25Qcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAq
ICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMSBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQot
ICogIENvcHlyaWdodCAoQykgMjAwMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAi
QnVpbHRpbk5hbWVzLmgiCiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0
ZXIuaCIKKyNpbmNsdWRlICJJbnRlZ3JpdHlJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNBc3luY0Z1
bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24u
aCIKQEAgLTg0LDYgKzg1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
blBybwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAg
ICBpZiAodGhpc1ZhbHVlLmluaGVyaXRzPEpTRnVuY3Rpb24+KHZtKSkgewogICAgICAgICBKU0Z1
bmN0aW9uKiBmdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4odGhpc1ZhbHVlKTsKKyAgICAg
ICAgSW50ZWdyaXR5OjphdWRpdFN0cnVjdHVyZUlEKHZtLCBmdW5jdGlvbi0+c3RydWN0dXJlSUQo
KSk7CiAgICAgICAgIGlmIChmdW5jdGlvbi0+aXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkKICAg
ICAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzTWFr
ZU5vbnRyaXZpYWxTdHJpbmcoZ2xvYmFsT2JqZWN0LCAiZnVuY3Rpb24gIiwgZnVuY3Rpb24tPm5h
bWUodm0pLCAiKCkge1xuICAgIFtuYXRpdmUgY29kZV1cbn0iKSkpOwogCkBAIC0xNDAsMTEgKzE0
MiwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJvCiAKICAgICBp
ZiAodGhpc1ZhbHVlLmluaGVyaXRzPEludGVybmFsRnVuY3Rpb24+KHZtKSkgewogICAgICAgICBJ
bnRlcm5hbEZ1bmN0aW9uKiBmdW5jdGlvbiA9IGpzQ2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4odGhp
c1ZhbHVlKTsKKyAgICAgICAgSW50ZWdyaXR5OjphdWRpdFN0cnVjdHVyZUlEKHZtLCBmdW5jdGlv
bi0+c3RydWN0dXJlSUQoKSk7CiAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNW
YWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZ2xvYmFsT2JqZWN0LCAiZnVuY3Rp
b24gIiwgZnVuY3Rpb24tPm5hbWUoKSwgIigpIHtcbiAgICBbbmF0aXZlIGNvZGVdXG59IikpKTsK
ICAgICB9CiAKICAgICBpZiAodGhpc1ZhbHVlLmlzT2JqZWN0KCkpIHsKICAgICAgICAgSlNPYmpl
Y3QqIG9iamVjdCA9IGFzT2JqZWN0KHRoaXNWYWx1ZSk7CisgICAgICAgIEludGVncml0eTo6YXVk
aXRTdHJ1Y3R1cmVJRCh2bSwgb2JqZWN0LT5zdHJ1Y3R1cmVJRCgpKTsKICAgICAgICAgaWYgKG9i
amVjdC0+aXNGdW5jdGlvbih2bSkpCiAgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGdsb2JhbE9iamVjdCwg
ImZ1bmN0aW9uICIsIG9iamVjdC0+Y2xhc3NJbmZvKHZtKS0+Y2xhc3NOYW1lLCAiKCkge1xuICAg
IFtuYXRpdmUgY29kZV1cbn0iKSkpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ2VsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDZWxsLmNwcAkocmV2aXNpb24gMjU5NTQxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAK
IC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2Rl
Lm9yZykKICAqICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkK
LSAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTI1LDYgKzI1LDcgQEAKIAogI2luY2x1
ZGUgIkFycmF5QnVmZmVyVmlldy5oIgogI2luY2x1ZGUgIkJsb2NrRGlyZWN0b3J5SW5saW5lcy5o
IgorI2luY2x1ZGUgIkludGVncml0eUlubGluZXMuaCIKICNpbmNsdWRlICJJc29TdWJzcGFjZUlu
bGluZXMuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDYXN0LmgiCkBA
IC0xOTEsNiArMTkyLDcgQEAgZG91YmxlIEpTQ2VsbDo6dG9OdW1iZXIoSlNHbG9iYWxPYmplY3Qq
IAogCiBKU09iamVjdCogSlNDZWxsOjp0b09iamVjdFNsb3coSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkgY29uc3QKIHsKKyAgICBJbnRlZ3JpdHk6OmF1ZGl0U3RydWN0dXJlSUQoZ2xvYmFs
T2JqZWN0LT52bSgpLCBzdHJ1Y3R1cmVJRCgpKTsKICAgICBBU1NFUlQoIWlzT2JqZWN0KCkpOwog
ICAgIGlmIChpc1N0cmluZygpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNT
dHJpbmcqPih0aGlzKS0+dG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcAkocmV2aXNpb24g
MjU5NTQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChD
KSAxOTk5LTIwMDAsMjAwMyBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHly
aWdodCAoQykgMjAwNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBD
b3B5cmlnaHQgKEMpIDIwMDctMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVz
c2VyIEdlbmVyYWwgUHVibGljCkBAIC0yNCw2ICsyNCw3IEBACiAKICNpbmNsdWRlICJCaWdJbnRl
Z2VyLmgiCiAjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJJbnRlZ3JpdHlJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdC5oIgogI2luY2x1ZGUgIkludGxPYmplY3QuaCIK
ICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCkBAIC05OCw2ICs5OSw3IEBAIHN0YXRpYyBBTFdBWVNf
SU5MSU5FIGJvb2wgdG9UaGlzTnVtYmVyKFYKICAgICB9CiAKICAgICBpZiAoYXV0byogbnVtYmVy
T2JqZWN0ID0ganNEeW5hbWljQ2FzdDxOdW1iZXJPYmplY3QqPih2bSwgdGhpc1ZhbHVlKSkgewor
ICAgICAgICBJbnRlZ3JpdHk6OmF1ZGl0U3RydWN0dXJlSUQodm0sIG51bWJlck9iamVjdC0+c3Ry
dWN0dXJlSUQoKSk7CiAgICAgICAgIHggPSBudW1iZXJPYmplY3QtPmludGVybmFsVmFsdWUoKS5h
c051bWJlcigpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAJKHJldmlzaW9u
IDI1OTU0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlw
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAo
QykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0
IChDKSAyMDA4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHly
aWdodCAoQykgMjAwOC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJFcnJvci5oIgogI2lu
Y2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkhhc093blByb3BlcnR5Q2FjaGUuaCIK
KyNpbmNsdWRlICJJbnRlZ3JpdHlJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgog
I2luY2x1ZGUgIkpTU3RyaW5nLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgpAQCAtODQsNiAr
ODUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvCiAgICAgSlNP
YmplY3QqIHZhbHVlT2JqID0gdGhpc1ZhbHVlLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAg
aWYgKFVOTElLRUxZKCF2YWx1ZU9iaikpCiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgp
OworICAgIEludGVncml0eTo6YXVkaXRTdHJ1Y3R1cmVJRChnbG9iYWxPYmplY3QtPnZtKCksIHZh
bHVlT2JqLT5zdHJ1Y3R1cmVJRCgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVl
T2JqKTsKIH0KIApAQCAtMzE3LDYgKzMxOSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgb2JqZWN0UHJvdG8KICAgICBpZiAodGhpc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhpc1ZhbHVlLmlzVW5kZWZpbmVkKCkgPyB2
bS5zbWFsbFN0cmluZ3MudW5kZWZpbmVkT2JqZWN0U3RyaW5nKCkgOiB2bS5zbWFsbFN0cmluZ3Mu
bnVsbE9iamVjdFN0cmluZygpKTsKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IHRoaXNWYWx1
ZS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIEludGVncml0eTo6YXVkaXRTdHJ1Y3R1cmVJ
RCh2bSwgdGhpc09iamVjdC0+c3RydWN0dXJlSUQoKSk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCgh
IXNjb3BlLmV4Y2VwdGlvbigpID09ICF0aGlzT2JqZWN0KTsKICAgICBpZiAoIXRoaXNPYmplY3Qp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAJ
KHJldmlzaW9uIDI1OTU0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cFByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENv
cHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAg
Q29weXJpZ2h0IChDKSAyMDAzLTIwMTkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgor
ICogIENvcHlyaWdodCAoQykgMjAwMy0yMDIwIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJBcnJh
eVByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgogI2luY2x1ZGUgIkVycm9y
LmgiCisjaW5jbHVkZSAiSW50ZWdyaXR5SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIK
ICNpbmNsdWRlICJKU0NCdWlsdGlucy5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKQEAgLTIx
Nyw2ICsyMTgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvCiAg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOwogCiAg
ICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBhc09iamVjdCh0aGlzVmFsdWUpOworICAgIEludGVn
cml0eTo6YXVkaXRTdHJ1Y3R1cmVJRCh2bSwgdGhpc09iamVjdC0+c3RydWN0dXJlSUQoKSk7CiAK
ICAgICBTdHJpbmdSZWN1cnNpb25DaGVja2VyIGNoZWNrZXIoZ2xvYmFsT2JqZWN0LCB0aGlzT2Jq
ZWN0KTsKICAgICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSB8fCBjaGVja2Vy
LmVhcmx5UmV0dXJuVmFsdWUoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJpbmdQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI1OTU0MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhhcnJp
IFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA0LTIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwNC0yMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDkg
VG9yY2ggTW9iaWxlLCBJbmMuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDE1IEpvcmRhbiBIYXJiYW5k
IChsamhhcmJAZ21haWwuY29tKQogICoKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJFcnJv
ci5oIgogI2luY2x1ZGUgIkV4ZWN1dGFibGVCYXNlSW5saW5lcy5oIgogI2luY2x1ZGUgIkZyYW1l
VHJhY2Vycy5oIgorI2luY2x1ZGUgIkludGVncml0eUlubGluZXMuaCIKICNpbmNsdWRlICJJbnRl
cnByZXRlcklubGluZXMuaCIKICNpbmNsdWRlICJJbnRsQ29sbGF0b3IuaCIKICNpbmNsdWRlICJJ
bnRsT2JqZWN0LmgiCkBAIC05NzksMTAgKzk4MCwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHN0cmluZ1Byb3RvCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhpc1Zh
bHVlKTsKIAogICAgIGF1dG8qIHN0cmluZ09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8U3RyaW5nT2Jq
ZWN0Kj4odm0sIHRoaXNWYWx1ZSk7Ci0gICAgaWYgKHN0cmluZ09iamVjdCkKLSAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShzdHJpbmdPYmplY3QtPmludGVybmFsVmFsdWUoKSk7CisgICAg
aWYgKCFzdHJpbmdPYmplY3QpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUpOwogCi0gICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSk7CisgICAgSW50ZWdyaXR5OjphdWRpdFN0cnVjdHVyZUlEKHZtLCBzdHJpbmdP
YmplY3QtPnN0cnVjdHVyZUlEKCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc3RyaW5n
T2JqZWN0LT5pbnRlcm5hbFZhbHVlKCkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHN0cmluZ1Byb3RvRnVuY0NoYXJBdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZUlEVGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmgJKHJldmlzaW9uIDI1OTU0MSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlEVGFibGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJFbnN1cmVTdGls
bEFsaXZlSGVyZS5oIgogI2luY2x1ZGUgIlVudXNlZFBvaW50ZXIuaCIKICNpbmNsdWRlIDx3dGYv
VW5pcXVlQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC05MSw3ICs5Miw4IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQqKiBiYXNlKCkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2
b2lkKio+KCZtX3RhYmxlKTsgfQogCi0gICAgYm9vbCBpc1ZhbGlkKFN0cnVjdHVyZUlEKTsKKyAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgdmFsaWRhdGUoU3RydWN0dXJlSUQpOworCiAgICAgU3RydWN0
dXJlKiBnZXQoU3RydWN0dXJlSUQpOwogICAgIHZvaWQgZGVhbGxvY2F0ZUlEKFN0cnVjdHVyZSos
IFN0cnVjdHVyZUlEKTsKICAgICBTdHJ1Y3R1cmVJRCBhbGxvY2F0ZUlEKFN0cnVjdHVyZSopOwpA
QCAtMTc2LDE5ICsxNzgsMTMgQEAgaW5saW5lIFN0cnVjdHVyZSogU3RydWN0dXJlSURUYWJsZTo6
Z2V0KAogICAgIHJldHVybiBkZWNvZGUodGFibGUoKVtzdHJ1Y3R1cmVJbmRleF0uZW5jb2RlZFN0
cnVjdHVyZUJpdHMsIHN0cnVjdHVyZUlEKTsKIH0KIAotaW5saW5lIGJvb2wgU3RydWN0dXJlSURU
YWJsZTo6aXNWYWxpZChTdHJ1Y3R1cmVJRCBzdHJ1Y3R1cmVJRCkKK0FMV0FZU19JTkxJTkUgdm9p
ZCBTdHJ1Y3R1cmVJRFRhYmxlOjp2YWxpZGF0ZShTdHJ1Y3R1cmVJRCBzdHJ1Y3R1cmVJRCkKIHsK
LSAgICBpZiAoIXN0cnVjdHVyZUlEKQotICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgdWludDMy
X3Qgc3RydWN0dXJlSW5kZXggPSBzdHJ1Y3R1cmVJRCA+PiBzX251bWJlck9mRW50cm9weUJpdHM7
Ci0gICAgaWYgKHN0cnVjdHVyZUluZGV4ID49IG1fY2FwYWNpdHkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLSNpZiBDUFUoQUREUkVTUzY0KQogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZGVj
b2RlKHRhYmxlKClbc3RydWN0dXJlSW5kZXhdLmVuY29kZWRTdHJ1Y3R1cmVCaXRzLCBzdHJ1Y3R1
cmVJRCk7Ci0gICAgaWYgKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihzdHJ1Y3R1cmUpID4+
IHNfZW50cm9weUJpdHNTaGlmdEZvclN0cnVjdHVyZVBvaW50ZXIpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLSNlbmRpZgotICAgIHJldHVybiB0cnVlOworICAgIFJFTEVBU0VfQVNTRVJUKHN0cnVj
dHVyZUluZGV4IDwgbV9jYXBhY2l0eSk7CisgICAgdWludDY0X3QgdmFsdWUgPSAqYml0d2lzZV9j
YXN0PHVpbnQ2NF90Kj4oc3RydWN0dXJlKTsKKyAgICBlbnN1cmVTdGlsbEFsaXZlSGVyZSh2YWx1
ZSk7CiB9CiAKICNlbHNlIC8vIG5vdCBVU0UoSlNWQUxVRTY0KQpAQCAtMjA3LDYgKzIwMyw3IEBA
IHB1YmxpYzoKICAgICB9OwogCiAgICAgdm9pZCBmbHVzaE9sZFRhYmxlcygpIHsgfQorICAgIHZv
aWQgdmFsaWRhdGUoU3RydWN0dXJlSUQpIHsgfQogfTsKIAogI2VuZGlmIC8vIG5vdCBVU0UoSlNW
QUxVRTY0KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sUHJvdG90
eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1i
b2xQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyNTk1NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TeW1ib2xQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMjgsNiArMjgsNyBAQAog
I2luY2x1ZGUgIlN5bWJvbFByb3RvdHlwZS5oIgogCiAjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNs
dWRlICJJbnRlZ3JpdHlJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1
ZGUgIkpTU3RyaW5nLmgiCiAjaW5jbHVkZSAiU3ltYm9sT2JqZWN0LmgiCkBAIC05Nyw2ICs5OCw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3ltYm9sUHJvdG8KICAgICBpZiAoIXN5
bWJvbCkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgU3ltYm9sRGVzY3JpcHRpb25UeXBlRXJyb3IpOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKKyAg
ICBJbnRlZ3JpdHk6OmF1ZGl0U3RydWN0dXJlSUQodm0sIHN5bWJvbC0+c3RydWN0dXJlSUQoKSk7
CiAgICAgY29uc3QgYXV0byBkZXNjcmlwdGlvbiA9IHN5bWJvbC0+ZGVzY3JpcHRpb24oKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGRlc2NyaXB0aW9uLmlzTnVsbCgpID8ganNVbmRlZmlu
ZWQoKSA6IGpzU3RyaW5nKHZtLCBkZXNjcmlwdGlvbikpOwogfQpAQCAtMTA5LDYgKzExMSw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3ltYm9sUHJvdG8KICAgICBTeW1ib2wqIHN5
bWJvbCA9IHRyeUV4dHJhY3RTeW1ib2wodm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAg
IGlmICghc3ltYm9sKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCBTeW1ib2xUb1N0cmluZ1R5cGVFcnJvcik7CisgICAgSW50ZWdyaXR5OjphdWRp
dFN0cnVjdHVyZUlEKHZtLCBzeW1ib2wtPnN0cnVjdHVyZUlEKCkpOwogICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyh2bSwgc3lt
Ym9sLT5kZXNjcmlwdGl2ZVN0cmluZygpKSkpOwogfQogCkBAIC0xMjEsNiArMTI0LDcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzeW1ib2xQcm90bwogICAgIGlmICghc3ltYm9sKQog
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBTeW1i
b2xWYWx1ZU9mVHlwZUVycm9yKTsKIAorICAgIEludGVncml0eTo6YXVkaXRTdHJ1Y3R1cmVJRCh2
bSwgc3ltYm9sLT5zdHJ1Y3R1cmVJRCgpKTsKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IEpTVmFsdWU6OmVuY29kZShzeW1ib2wpKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rvb2xzL0ludGVncml0eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90b29scy9JbnRlZ3JpdHkuaAkocmV2aXNpb24gMjU5NTQxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0ludGVncml0eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDYgKzMyLDcgQEAKIG5h
bWVzcGFjZSBKU0MgewogCiBjbGFzcyBKU0NlbGw7CitjbGFzcyBTdHJ1Y3R1cmVJRFRhYmxlOwog
Y2xhc3MgVk07CiAKIG5hbWVzcGFjZSBJbnRlZ3JpdHkgewpAQCAtOTksNiArMTAwLDkgQEAgQUxX
QVlTX0lOTElORSB2b2lkIGF1ZGl0Q2VsbChWTSYgdm0sIEpTVgogICAgICAgICBhdWRpdENlbGw8
YXVkaXRMZXZlbD4odm0sIHZhbHVlLmFzQ2VsbCgpKTsKIH0KIAorQUxXQVlTX0lOTElORSB2b2lk
IGF1ZGl0U3RydWN0dXJlSUQoU3RydWN0dXJlSURUYWJsZSYsIFN0cnVjdHVyZUlEKTsKK0FMV0FZ
U19JTkxJTkUgdm9pZCBhdWRpdFN0cnVjdHVyZUlEKFZNJiwgU3RydWN0dXJlSUQpOworCiB9IC8v
IG5hbWVzcGFjZSBJbnRlZ3JpdHkKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdG9vbHMvSW50ZWdyaXR5SW5saW5lcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9JbnRlZ3JpdHlJbmxpbmVzLmgJKHJldmlzaW9uIDI1
OTU0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9JbnRlZ3JpdHlJbmxpbmVzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOS0y
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNzMsNSArNzMsMTUgQEAgQUxXQVlTX0lOTElORSB2b2lkIGF1ZGl0Q2Vs
bFJhbmRvbWx5KFZNJgogICAgICAgICBhdWRpdENlbGxGdWxseSh2bSwgY2VsbCk7CiB9CiAKK0FM
V0FZU19JTkxJTkUgdm9pZCBhdWRpdFN0cnVjdHVyZUlEKFN0cnVjdHVyZUlEVGFibGUmIHRhYmxl
LCBTdHJ1Y3R1cmVJRCBpZCkKK3sKKyAgICB0YWJsZS52YWxpZGF0ZShpZCk7Cit9CisKK0FMV0FZ
U19JTkxJTkUgdm9pZCBhdWRpdFN0cnVjdHVyZUlEKFZNJiB2bSwgU3RydWN0dXJlSUQgaWQpCit7
CisgICAgYXVkaXRTdHJ1Y3R1cmVJRCh2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKSwgaWQpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBJbnRlZ3JpdHkKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlHbG9iYWxQcm90b3R5cGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5R2xvYmFsUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjU5NTQxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlHbG9iYWxQcm90b3R5cGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBlLmgiCiAj
aW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCisjaW5jbHVkZSAiSW50ZWdyaXR5SW5saW5lcy5oIgog
I2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5R2xvYmFsLmgi
CiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseUhlbHBlcnMuaCIKQEAgLTYxLDYgKzYyLDcgQEAgc3Rh
dGljIEFMV0FZU19JTkxJTkUgSlNXZWJBc3NlbWJseUdsb2JhbAogICAgICAgICAgICAgY3JlYXRl
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgImV4cGVjdGVkIHx0aGlzfCB2YWx1ZSB0byBiZSBhbiBp
bnN0YW5jZSBvZiBXZWJBc3NlbWJseS5HbG9iYWwiX3MpKTsKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgfQorICAgIEludGVncml0eTo6YXVkaXRTdHJ1Y3R1cmVJRCh2bSwgcmVzdWx0LT5z
dHJ1Y3R1cmVJRCgpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395486</attachid>
            <date>2020-04-04 22:58:35 -0700</date>
            <delta_ts>2020-04-04 23:09:43 -0700</delta_ts>
            <desc>patch for landing.</desc>
            <filename>bug-210015.patch</filename>
            <type>text/plain</type>
            <size>41179</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjU5NTQyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDczIEBA
CisyMDIwLTA0LTA0ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZGQgc29tZSBzdHJ1Y3R1cmVJRCBpbnRlZ3JpdHkgY2hlY2tzIHRvIHZhcmlvdXMgcnVudGltZSBm
dW5jdGlvbnMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTAwMTUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU4MTE2NTE0PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IEtlaXRoIE1pbGxlci4KKworICAgICAgICBTcGVjaWZpY2FsbHksIGltcGxlbWVu
dGF0aW9ucyBvZiB0b1N0cmluZygpLCB0b1ZhbHVlKCksIGFuZCBhIGZldyBvdGhlcnMuCisgICAg
ICAgIEkgYWxzbyBtb3ZlZCB0aGUgSGVhcENlbGwgdmVyc2lvbiBvZiBlbnN1cmVTdGlsbEFsaXZl
SGVyZSgpIGludG8gdGhlIG5ldworICAgICAgICBFbnN1cmVTdGlsbEFsaXZlSGVyZS5oL2NwcCBz
aW5jZSBpdCdzIHVzZWZ1bCBmb3IgYW55IHBvaW50ZXJzLCBub3QganVzdCBIZWFwQ2VsbHMuCisK
KyAgICAgICAgVGhpcyBjaGFuZ2UgaXMgcGVyZm9ybWFuY2UgbmV1dHJhbCBvbiBKZXRTdHJlYW0g
Mi4wLCBTcGVlZG9tZXRlci0yLCBhbmQgUExUNS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogaGVhcC9IZWFwQ2VsbC5jcHA6CisgICAg
ICAgIChKU0M6OmVuc3VyZVN0aWxsQWxpdmVIZXJlKTogRGVsZXRlZC4KKyAgICAgICAgKiBoZWFw
L0hlYXBDZWxsLmg6CisgICAgICAgIChKU0M6OmVuc3VyZVN0aWxsQWxpdmVIZXJlKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBoZWFwL1Nsb3RWaXNpdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6U2xvdFZp
c2l0b3I6OmFwcGVuZEpTQ2VsbE9yQXV4aWxpYXJ5KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5
UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNUb1N0cmluZyk6Cisg
ICAgICAgICogcnVudGltZS9CaWdJbnRQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpiaWdJ
bnRQcm90b0Z1bmNUb1N0cmluZ0ltcGwpOgorICAgICAgICAoSlNDOjpiaWdJbnRQcm90b0Z1bmNW
YWx1ZU9mKToKKyAgICAgICAgKiBydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwOgorICAgICAg
ICAoSlNDOjpib29sZWFuUHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAgICAoSlNDOjpib29sZWFu
UHJvdG9GdW5jVmFsdWVPZik6CisgICAgICAgICogcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcDoK
KyAgICAgICAgKEpTQzo6Zm9ybWF0TG9jYWxlRGF0ZSk6CisgICAgICAgIChKU0M6OmZvcm1hdGVE
YXRlSW5zdGFuY2UpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jVG9JU09TdHJpbmcpOgor
ICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jVG9QcmltaXRpdmVTeW1ib2wpOgorICAgICAgICAq
IHJ1bnRpbWUvRW5zdXJlU3RpbGxBbGl2ZUhlcmUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6
ZW5zdXJlU3RpbGxBbGl2ZUhlcmUpOgorICAgICAgICAqIHJ1bnRpbWUvRW5zdXJlU3RpbGxBbGl2
ZUhlcmUuaDogQWRkZWQuCisgICAgICAgIChKU0M6OmVuc3VyZVN0aWxsQWxpdmVIZXJlKToKKyAg
ICAgICAgKiBydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwOgorICAgICAgICAoSlNDOjpFcnJvcklu
c3RhbmNlOjpzYW5pdGl6ZWRUb1N0cmluZyk6CisgICAgICAgICogcnVudGltZS9FcnJvclByb3Rv
dHlwZS5jcHA6CisgICAgICAgIChKU0M6OmVycm9yUHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAg
ICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpmdW5jdGlv
blByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5jcHA6CisgICAg
ICAgIChKU0M6OkpTQ2VsbDo6dG9PYmplY3RTbG93IGNvbnN0KToKKyAgICAgICAgKiBydW50aW1l
L051bWJlclByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OnRvVGhpc051bWJlcik6CisgICAg
ICAgICogcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpvYmplY3RQ
cm90b0Z1bmNWYWx1ZU9mKToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jVG9TdHJpbmcp
OgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6
cmVnRXhwUHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nUHJvdG90
eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAg
ICAqIHJ1bnRpbWUvU3RydWN0dXJlSURUYWJsZS5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVJ
RFRhYmxlOjp2YWxpZGF0ZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUlEVGFibGU6OmlzVmFs
aWQpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sUHJvdG90eXBlLmNwcDoKKyAg
ICAgICAgKEpTQzo6c3ltYm9sUHJvdG9HZXR0ZXJEZXNjcmlwdGlvbik6CisgICAgICAgIChKU0M6
OnN5bWJvbFByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKEpTQzo6c3ltYm9sUHJvdG9GdW5j
VmFsdWVPZik6CisgICAgICAgICogdG9vbHMvSW50ZWdyaXR5Lmg6CisgICAgICAgICogdG9vbHMv
SW50ZWdyaXR5SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpJbnRlZ3JpdHk6OmF1ZGl0U3RydWN0
dXJlSUQpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlHbG9iYWxQcm90b3R5cGUuY3Bw
OgorICAgICAgICAoSlNDOjpnZXRHbG9iYWwpOgorCiAyMDIwLTA0LTA0ICBBbGV4ZXkgU2h2YXlr
YSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KIAogICAgICAgICAnXHUnIHNob3VsZCB0aHJvdyBh
biBlYXJseSBTeW50YXhFcnJvciBleGNlcHRpb24sIGJ1dCBpbnN0ZWFkIGV2YWx1YXRlcyB0byAn
dScKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDI1OTU0
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtODIwLDYgKzgyMCw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09S
S19IRUEKICAgICBydW50aW1lL0Rpc2FsbG93U2NvcGUuaAogICAgIHJ1bnRpbWUvRGlzYWxsb3dW
TVJlZW50cnkuaAogICAgIHJ1bnRpbWUvRHVtcENvbnRleHQuaAorICAgIHJ1bnRpbWUvRW5zdXJl
U3RpbGxBbGl2ZUhlcmUuaAogICAgIHJ1bnRpbWUvRW51bWVyYXRpb25Nb2RlLmgKICAgICBydW50
aW1lL0Vycm9yLmgKICAgICBydW50aW1lL0Vycm9ySGFuZGxpbmdTY29wZS5oCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL1NvdXJjZXMudHh0CShyZXZpc2lvbiAyNTk1NDEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTc2NCw2ICs3NjQsNyBAQCBy
dW50aW1lL0Rpc2FsbG93Vk1SZWVudHJ5LmNwcAogcnVudGltZS9Eb3VibGVQcmVkaWN0aW9uRnV6
emVyQWdlbnQuY3BwCiBydW50aW1lL0R1bXBDb250ZXh0LmNwcAogcnVudGltZS9FQ01BU2NyaXB0
U3BlY0ludGVybmFsRnVuY3Rpb25zLmNwcAorcnVudGltZS9FbnN1cmVTdGlsbEFsaXZlSGVyZS5j
cHAKIHJ1bnRpbWUvRXJyb3IuY3BwCiBydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuY3BwCiBydW50
aW1lL0Vycm9ySGFuZGxpbmdTY29wZS5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiAyNTk1NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTg4OCw2
ICsxODg4LDcgQEAKIAkJRkUzMDIyRDcxRTQyODU3MzAwQkFDNDkzIC8qIFZNSW5zcGVjdG9yLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTMwMjJENTFF
NDI4NTY3MDBCQUM0OTMgLyogVk1JbnNwZWN0b3IuaCAqLzsgfTsKIAkJRkUzMThGRTAxQ0FDOTgy
RjAwREZDQzU0IC8qIEVDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzE4RkRFMUNBQzhDNTMwMERG
Q0M1NCAvKiBFQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmggKi87IH07CiAJCUZFMzQy
MjEyMUQ2QjgxQzMwMDMyQkU4OCAvKiBUaHJvd1Njb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTM0MjIxMTFENkI4MThDMDAzMkJFODggLyogVGhy
b3dTY29wZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCUZFMzRFRTIxMjQzOThBQUUwMEFBMkU3QyAvKiBFbnN1cmVTdGlsbEFsaXZlSGVyZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzNEVFMjAyNDM5
OEE5QTAwQUEyRTdDIC8qIEVuc3VyZVN0aWxsQWxpdmVIZXJlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkUzODQyMzMyMzI0RDUxQjAwOURENDQ1
IC8qIE9wdGlvbnNMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRTM4NDIzMTIzMjRENTFCMDA5REQ0NDUgLyogT3B0aW9uc0xpc3QuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTM4NEVFNjFBRERC
N0FEMDA1NURFMkMgLyogSlNEb2xsYXJWTS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkUzODRFRTIxQUREQjdBRDAwNTVERTJDIC8qIEpTRG9sbGFyVk0u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTNB
MDZBNjFDMTBCNzJEMDAzOTBGREQgLyogSklUQml0T3JHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFM0EwNkE0MUMxMEI3MDgwMDM5MEZE
RCAvKiBKSVRCaXRPckdlbmVyYXRvci5oICovOyB9OwpAQCAtNTEyMiw2ICs1MTIzLDggQEAKIAkJ
RkUzMThGREQxQ0FDOEM1MzAwREZDQzU0IC8qIEVDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlv
bnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRUNNQVNjcmlwdFNw
ZWNJbnRlcm5hbEZ1bmN0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZF
MzE4RkRFMUNBQzhDNTMwMERGQ0M1NCAvKiBFQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25z
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVDTUFTY3JpcHRTcGVjSW50ZXJu
YWxGdW5jdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUzNDIyMTExRDZC
ODE4QzAwMzJCRTg4IC8qIFRocm93U2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVGhyb3dTY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTM0RUUy
MDI0Mzk4QTlBMDBBQTJFN0MgLyogRW5zdXJlU3RpbGxBbGl2ZUhlcmUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRW5zdXJlU3RpbGxBbGl2ZUhlcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RkUzNEVFMjIyNDM5OEI4NTAwQUEyRTdDIC8qIEVuc3VyZVN0aWxsQWxpdmVIZXJlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVuc3VyZVN0aWxsQWxpdmVIZXJlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUzNUMyRjAyMUIxRTZDNTAwMEY0Q0E4
IC8qIFRlbXBsYXRlLnJiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucnVieTsgcGF0aCA9IFRlbXBs
YXRlLnJiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTM1QzJGMTIxQjFFNkM2MDAw
RjRDQTggLyogRml0cy5yYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnJ1Ynk7IHBhdGggPSBGaXRz
LnJiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTM1QzJGMjIxQjFFNkM2MDAwRjRD
QTggLyogR2VuZXJhdGVkRmlsZS5yYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnJ1Ynk7IHBhdGgg
PSBHZW5lcmF0ZWRGaWxlLnJiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzExMSw2
ICs3MTE0LDggQEAKIAkJCQlBNzA0NDdFQzE3QTBCRDcwMDBGNTg5OEUgLyogRHVtcENvbnRleHQu
aCAqLywKIAkJCQlGRTMxOEZERDFDQUM4QzUzMDBERkNDNTQgLyogRUNNQVNjcmlwdFNwZWNJbnRl
cm5hbEZ1bmN0aW9ucy5jcHAgKi8sCiAJCQkJRkUzMThGREUxQ0FDOEM1MzAwREZDQzU0IC8qIEVD
TUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuaCAqLywKKwkJCQlGRTM0RUUyMjI0Mzk4Qjg1
MDBBQTJFN0MgLyogRW5zdXJlU3RpbGxBbGl2ZUhlcmUuY3BwICovLAorCQkJCUZFMzRFRTIwMjQz
OThBOUEwMEFBMkU3QyAvKiBFbnN1cmVTdGlsbEFsaXZlSGVyZS5oICovLAogCQkJCTJBRDJFREZB
MTk3OTlFMzgwMDRENjQ3OCAvKiBFbnVtZXJhdGlvbk1vZGUuaCAqLywKIAkJCQlCQzMzN0JFQTBF
MUIwMENCMDA3NjkxOEEgLyogRXJyb3IuY3BwICovLAogCQkJCUJDMzA0NjA2MEUxRjQ5N0YwMDMy
MzJDRiAvKiBFcnJvci5oICovLApAQCAtODkyNyw2ICs4OTMyLDcgQEAKIAkJCQkwRkUwNTAxNDFB
QTkwOTExMDBEMzNCMzMgLyogQXJndW1lbnRzTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzlB
MjI4MzYxRDM1RDcxRjAwRDhFMDY3IC8qIEFyaXRoUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEY2QjFDQjkxODYxMjQ0QzAwODQ1RDk3IC8qIEFyaXR5Q2hlY2tNb2RlLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlGRTM0RUUyMTI0Mzk4QUFFMDBBQTJFN0MgLyogRW5zdXJlU3RpbGxBbGl2ZUhl
cmUuaCBpbiBIZWFkZXJzICovLAogCQkJCUExQTAwOUMxMTgzMUEyNkUwMENGODcxMSAvKiBBUk02
NEFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkUxRTJDNDAyMjQwREQ2MjAwRjZCNzI5
IC8qIEFSTTY0RUFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFBMDA5QzExODMxQTI2
RTAwQ0Y4NzIyIC8qIEFSTTY0UmVnaXN0ZXJzLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBDZWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwQ2VsbC5jcHAJKHJldmlzaW9uIDI1OTU0MSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBDZWxsLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTQyLDEzICs0Miw2IEBAIGJvb2wgSGVhcENlbGw6OmlzTGl2ZSgpCiAgICAgcmV0dXJuIG1hcmtl
ZEJsb2NrSGFuZGxlLmlzTGl2ZSh0aGlzKTsKIH0KIAotI2lmICFDT01QSUxFUihHQ0NfQ09NUEFU
SUJMRSkKLS8vIFRoaXMgbWFrZXMgdGhlIGFyZ3VtZW50IG9wYXF1ZSBmcm9tIHRoZSBjb21waWxl
ci4KLU5FVkVSX0lOTElORSB2b2lkIGVuc3VyZVN0aWxsQWxpdmVIZXJlKGNvbnN0IHZvaWQqKQot
ewotfQotI2VuZGlmCi0KIH0gLy8gbmFtZXNwYWNlIEpTQwogCiBuYW1lc3BhY2UgV1RGIHsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBDZWxsLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcENlbGwuaAkocmV2aXNpb24gMjU5NTQxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcENlbGwuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRGVzdHJ1Y3Rpb25N
b2RlLmgiCisjaW5jbHVkZSAiRW5zdXJlU3RpbGxBbGl2ZUhlcmUuaCIKIAogbmFtZXNwYWNlIEpT
QyB7CiAKQEAgLTM3LDE1ICszOCw2IEBAIGNsYXNzIFN1YnNwYWNlOwogY2xhc3MgVk07CiBzdHJ1
Y3QgQ2VsbEF0dHJpYnV0ZXM7CiAKLSNpZiBDT01QSUxFUihHQ0NfQ09NUEFUSUJMRSkKLUFMV0FZ
U19JTkxJTkUgdm9pZCBlbnN1cmVTdGlsbEFsaXZlSGVyZShjb25zdCB2b2lkKiBwb2ludGVyKQot
ewotICAgIGFzbSB2b2xhdGlsZSAoIiIgOiA6ICJyIihwb2ludGVyKSA6ICJtZW1vcnkiKTsKLX0K
LSNlbHNlCi1KU19FWFBPUlRfUFJJVkFURSB2b2lkIGVuc3VyZVN0aWxsQWxpdmVIZXJlKGNvbnN0
IHZvaWQqKTsKLSNlbmRpZgotCiBjbGFzcyBIZWFwQ2VsbCB7CiBwdWJsaWM6CiAgICAgZW51bSBL
aW5kIDogaW50OF90IHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNp
dG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90Vmlz
aXRvci5jcHAJKHJldmlzaW9uIDI1OTU0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L1Nsb3RWaXNpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTItMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTItMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIwMCwxMSArMjAwLDggQEAgdm9p
ZCBTbG90VmlzaXRvcjo6YXBwZW5kSlNDZWxsT3JBdXhpbGlhcgogICAgICAgICBpZiAoaXNOdWtl
ZChzdHJ1Y3R1cmVJRCkpCiAgICAgICAgICAgICBkaWUoIkdDIHNjYW4gZm91bmQgb2JqZWN0IGlu
IGJhZCBzdGF0ZTogc3RydWN0dXJlSUQgaXMgbnVrZWQhXG4iKTsKICAgICAgICAgCi0jaWYgVVNF
KEpTVkFMVUU2NCkKICAgICAgICAgLy8gVGhpcyBkZXRlY3RzIHRoZSB3b3JzdCBvZiB0aGUgYmFk
bmVzcy4KLSAgICAgICAgaWYgKCFoZWFwKCktPnN0cnVjdHVyZUlEVGFibGUoKS5pc1ZhbGlkKHN0
cnVjdHVyZUlEKSkKLSAgICAgICAgICAgIGRpZSgiR0Mgc2NhbiBmb3VuZCBjb3JydXB0IG9iamVj
dDogc3RydWN0dXJlSUQgaXMgaW52YWxpZCFcbiIpOwotI2VuZGlmCisgICAgICAgIEludGVncml0
eTo6YXVkaXRTdHJ1Y3R1cmVJRChoZWFwKCktPnN0cnVjdHVyZUlEVGFibGUoKSwgc3RydWN0dXJl
SUQpOwogICAgIH07CiAgICAgCiAgICAgLy8gSW4gZGVidWcgbW9kZSwgd2UgdmFsaWRhdGUgYmVm
b3JlIG1hcmtpbmcgc2luY2UgdGhpcyBtYWtlcyBpdCBjbGVhcmVyIHdoYXQgdGhlIHByb2JsZW0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlw
ZS5jcHAJKHJldmlzaW9uIDI1OTU0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAg
KiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykK
LSAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICogIENvcHlyaWdodCAoQykgMjAwMyBQZXRlciBLZWxseSAocG1rQHBvc3QuY29t
KQogICogIENvcHlyaWdodCAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292IChhcEBueXBvcC5j
b20pCiAgKgpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1
ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCisjaW5jbHVkZSAiSW50ZWdy
aXR5SW5saW5lcy5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSklULmgi
CiAjaW5jbHVkZSAiSlNBcnJheUlubGluZXMuaCIKQEAgLTYwNSw2ICs2MDYsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GCiAgICAgSlNPYmplY3QqIHRoaXNPYmpl
Y3QgPSB0aGlzVmFsdWUudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAorICAgIEludGVncml0eTo6YXVkaXRT
dHJ1Y3R1cmVJRCh2bSwgdGhpc09iamVjdC0+c3RydWN0dXJlSUQoKSk7CiAgICAgaWYgKCFjYW5V
c2VEZWZhdWx0QXJyYXlKb2luRm9yVG9TdHJpbmcodm0sIHRoaXNPYmplY3QpKSB7CiAgICAgICAg
IC8vIDIuIExldCBmdW5jIGJlIHRoZSByZXN1bHQgb2YgY2FsbGluZyB0aGUgW1tHZXRdXSBpbnRl
cm5hbCBtZXRob2Qgb2YgYXJyYXkgd2l0aCBhcmd1bWVudCAiam9pbiIuCiAgICAgICAgIEpTVmFs
dWUgZnVuY3Rpb24gPSBKU1ZhbHVlKHRoaXNPYmplY3QpLmdldChnbG9iYWxPYmplY3QsIHZtLnBy
b3BlcnR5TmFtZXMtPmpvaW4pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QmlnSW50UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9CaWdJbnRQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyNTk1NDEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNyBDYWlvIExpbWEgPHRp
Y2Fpb2xpbWFAZ21haWwuY29tPi4KLSAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiQmlnSW50T2JqZWN0LmgiCiAjaW5jbHVk
ZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJJbnRlZ3JpdHlJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNC
aWdJbnQuaCIKICNpbmNsdWRlICJKU0NCdWlsdGlucy5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMu
aCIKQEAgLTEwMSw2ICsxMDIsNyBAQCBzdGF0aWMgSlNWYWx1ZSBiaWdJbnRQcm90b0Z1bmNUb1N0
cmluZ0ltCiAKICAgICBBU1NFUlQodmFsdWUpOwogCisgICAgSW50ZWdyaXR5OjphdWRpdFN0cnVj
dHVyZUlEKHZtLCB2YWx1ZS0+c3RydWN0dXJlSUQoKSk7CiAgICAgaW50MzJfdCByYWRpeCA9IGV4
dHJhY3RUb1N0cmluZ1JhZGl4QXJndW1lbnQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDApLCBzY29wZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIApA
QCAtMTI2LDExICsxMjgsMTQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBiaWdJbnRQ
cm90bwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBiaWdJbnRQcm90b0Z1bmNWYWx1ZU9m
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICBpZiAoSlNCaWdJbnQqIHZhbHVl
ID0gdG9UaGlzQmlnSW50VmFsdWUodm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpKQotICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKTsKLSAgICAKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIid0aGlzJyB2YWx1ZSBtdXN0IGJlIGEgQmlnSW50IG9yIEJpZ0lu
dE9iamVjdCJfcyk7CisKKyAgICBKU0JpZ0ludCogdmFsdWUgPSB0b1RoaXNCaWdJbnRWYWx1ZSh2
bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIid0aGlzJyB2YWx1ZSBt
dXN0IGJlIGEgQmlnSW50IG9yIEJpZ0ludE9iamVjdCJfcyk7CisKKyAgICBJbnRlZ3JpdHk6OmF1
ZGl0U3RydWN0dXJlSUQodm0sIHZhbHVlLT5zdHJ1Y3R1cmVJRCgpKTsKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHZhbHVlKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmNwcAko
cmV2aXNpb24gMjU5NTQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVh
blByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENv
cHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAg
Q29weXJpZ2h0IChDKSAyMDAzLCAyMDA4LCAyMDExLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0yMyw2ICsyMyw3IEBACiAK
ICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKKyNpbmNs
dWRlICJJbnRlZ3JpdHlJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1
ZGUgIkpTU3RyaW5nLmgiCiAjaW5jbHVkZSAiT2JqZWN0UHJvdG90eXBlLmgiCkBAIC04MCw2ICs4
MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm9vbGVhblByb3QKICAgICBpZiAo
VU5MSUtFTFkoIXRoaXNPYmplY3QpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlKTsKIAorICAgIEludGVncml0eTo6YXVkaXRTdHJ1Y3R1cmVJRCh2
bSwgdGhpc09iamVjdC0+c3RydWN0dXJlSUQoKSk7CiAgICAgaWYgKHRoaXNPYmplY3QtPmludGVy
bmFsVmFsdWUoKSA9PSBqc0Jvb2xlYW4oZmFsc2UpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHZtLnNtYWxsU3RyaW5ncy5mYWxzZVN0cmluZygpKTsKIApAQCAtOTksNiArMTAxLDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib29sZWFuUHJvdAogICAgIGlmIChVTkxJ
S0VMWSghdGhpc09iamVjdCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUpOwogCisgICAgSW50ZWdyaXR5OjphdWRpdFN0cnVjdHVyZUlEKHZtLCB0
aGlzT2JqZWN0LT5zdHJ1Y3R1cmVJRCgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
aXNPYmplY3QtPmludGVybmFsVmFsdWUoKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyNTk1NDEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAg
SGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDQtMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA0
LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogIENvcHlyaWdodCAoQykg
MjAwOCwgMjAwOSBUb3JjaCBNb2JpbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBD
b3B5cmlnaHQgKEMpIDIwMTAgVG9yY2ggTW9iaWxlIChCZWlqaW5nKSBDby4gTHRkLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJEYXRlQ29udmVy
c2lvbi5oIgogI2luY2x1ZGUgIkRhdGVJbnN0YW5jZS5oIgogI2luY2x1ZGUgIkVycm9yLmgiCisj
aW5jbHVkZSAiSW50ZWdyaXR5SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0J1aWx0aW5zLmgiCiAj
aW5jbHVkZSAiSlNEYXRlTWF0aC5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCkBAIC0x
NDAsOSArMTQxLDExIEBAIHN0YXRpYyBDRkRhdGVGb3JtYXR0ZXJTdHlsZSBzdHlsZUZyb21BcmcK
ICAgICByZXR1cm4gZGVmYXVsdFN0eWxlOwogfQogCi1zdGF0aWMgSlNDZWxsKiBmb3JtYXRMb2Nh
bGVEYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
LCBEYXRlSW5zdGFuY2UqLCBkb3VibGUgdGltZUluTWlsbGlzZWNvbmRzLCBMb2NhbGVEYXRlVGlt
ZUZvcm1hdCBmb3JtYXQpCitzdGF0aWMgSlNDZWxsKiBmb3JtYXRMb2NhbGVEYXRlKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBEYXRlSW5zdGFuY2Uq
IGRhdGVPYmplY3QsIGRvdWJsZSB0aW1lSW5NaWxsaXNlY29uZHMsIExvY2FsZURhdGVUaW1lRm9y
bWF0IGZvcm1hdCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgSW50
ZWdyaXR5OjphdWRpdFN0cnVjdHVyZUlEKHZtLCBkYXRlT2JqZWN0LT5zdHJ1Y3R1cmVJRCgpKTsK
KwogICAgIENGRGF0ZUZvcm1hdHRlclN0eWxlIGRhdGVTdHlsZSA9IChmb3JtYXQgIT0gTG9jYWxl
VGltZSA/IGtDRkRhdGVGb3JtYXR0ZXJMb25nU3R5bGUgOiBrQ0ZEYXRlRm9ybWF0dGVyTm9TdHls
ZSk7CiAgICAgQ0ZEYXRlRm9ybWF0dGVyU3R5bGUgdGltZVN0eWxlID0gKGZvcm1hdCAhPSBMb2Nh
bGVEYXRlID8ga0NGRGF0ZUZvcm1hdHRlckxvbmdTdHlsZSA6IGtDRkRhdGVGb3JtYXR0ZXJOb1N0
eWxlKTsKIApAQCAtMTcxLDkgKzE3NCwxMSBAQCBzdGF0aWMgSlNDZWxsKiBmb3JtYXRMb2NhbGVE
YXRlKEpTR2xvYmFsCiAKICNlbGlmICFVQ09ORklHX05PX0ZPUk1BVFRJTkcKIAotc3RhdGljIEpT
Q2VsbCogZm9ybWF0TG9jYWxlRGF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqLCBEYXRlSW5zdGFuY2UqLCBkb3VibGUgdGltZUluTWlsbGlzZWNvbmRzLCBMb2NhbGVE
YXRlVGltZUZvcm1hdCBmb3JtYXQpCitzdGF0aWMgSlNDZWxsKiBmb3JtYXRMb2NhbGVEYXRlKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSosIERhdGVJbnN0YW5jZSogZGF0
ZU9iamVjdCwgZG91YmxlIHRpbWVJbk1pbGxpc2Vjb25kcywgTG9jYWxlRGF0ZVRpbWVGb3JtYXQg
Zm9ybWF0KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBJbnRlZ3Jp
dHk6OmF1ZGl0U3RydWN0dXJlSUQodm0sIGRhdGVPYmplY3QtPnN0cnVjdHVyZUlEKCkpOworCiAg
ICAgVURhdGVGb3JtYXRTdHlsZSB0aW1lU3R5bGUgPSAoZm9ybWF0ICE9IExvY2FsZURhdGUgPyBV
REFUX0xPTkcgOiBVREFUX05PTkUpOwogICAgIFVEYXRlRm9ybWF0U3R5bGUgZGF0ZVN0eWxlID0g
KGZvcm1hdCAhPSBMb2NhbGVUaW1lID8gVURBVF9MT05HIDogVURBVF9OT05FKTsKIApAQCAtMzEx
LDYgKzMxNiw4IEBAIHN0YXRpYyBKU0NlbGwqIGZvcm1hdExvY2FsZURhdGUoSlNHbG9iYWwKIHN0
YXRpYyBKU0NlbGwqIGZvcm1hdExvY2FsZURhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIERhdGVJbnN0YW5jZSogZGF0ZU9iamVjdCwgZG91Ymxl
LCBMb2NhbGVEYXRlVGltZUZvcm1hdCBmb3JtYXQpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOworICAgIEludGVncml0eTo6YXVkaXRTdHJ1Y3R1cmVJRCh2bSwgZGF0ZU9iamVj
dC0+c3RydWN0dXJlSUQoKSk7CisKICAgICBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSogZ3JlZ29y
aWFuRGF0ZVRpbWUgPSBkYXRlT2JqZWN0LT5ncmVnb3JpYW5EYXRlVGltZSh2bSk7CiAgICAgaWYg
KCFncmVnb3JpYW5EYXRlVGltZSkKICAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyh2
bSwgIkludmFsaWQgRGF0ZSJfcyk7CkBAIC0zMjgsNiArMzM1LDcgQEAgc3RhdGljIEVuY29kZWRK
U1ZhbHVlIGZvcm1hdGVEYXRlSW5zdGFuYwogICAgIGlmIChVTkxJS0VMWSghdGhpc0RhdGVPYmop
KQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKTsK
IAorICAgIEludGVncml0eTo6YXVkaXRTdHJ1Y3R1cmVJRCh2bSwgdGhpc0RhdGVPYmotPnN0cnVj
dHVyZUlEKCkpOwogICAgIGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lKiBncmVnb3JpYW5EYXRlVGlt
ZSA9IGFzVVRDVmFyaWFudAogICAgICAgICA/IHRoaXNEYXRlT2JqLT5ncmVnb3JpYW5EYXRlVGlt
ZVVUQyh2bSkKICAgICAgICAgOiB0aGlzRGF0ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWUodm0pOwpA
QCAtNTQzLDcgKzU1MSw4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3Rv
RnUKICAgICBhdXRvKiB0aGlzRGF0ZU9iaiA9IGpzRHluYW1pY0Nhc3Q8RGF0ZUluc3RhbmNlKj4o
dm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzRGF0ZU9iaikpCiAgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOwotICAgIAorCisg
ICAgSW50ZWdyaXR5OjphdWRpdFN0cnVjdHVyZUlEKHZtLCB0aGlzRGF0ZU9iai0+c3RydWN0dXJl
SUQoKSk7CiAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKHRoaXNEYXRlT2JqLT5pbnRlcm5hbE51bWJl
cigpKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBj
cmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgIkludmFsaWQgRGF0ZSJfcykpOwogCkBAIC02
MjcsNiArNjM2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdQog
ICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJEYXRlLnByb3RvdHlwZVtTeW1ib2wudG9Qcmlt
aXRpdmVdIGV4cGVjdGVkIHx0aGlzfCB0byBiZSBhbiBvYmplY3QuIik7CiAgICAgSlNPYmplY3Qq
IHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNPYmplY3QqPih0aGlzVmFsdWUpOworICAgIEludGVncml0
eTo6YXVkaXRTdHJ1Y3R1cmVJRCh2bSwgdGhpc09iamVjdC0+c3RydWN0dXJlSUQoKSk7CiAKICAg
ICBpZiAoIWNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpKQogICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRGF0ZS5wcm90b3R5cGVbU3ltYm9sLnRv
UHJpbWl0aXZlXSBleHBlY3RlZCBhIGZpcnN0IGFyZ3VtZW50LiIpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRW5zdXJlU3RpbGxBbGl2ZUhlcmUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vuc3VyZVN0aWxsQWxpdmVIZXJlLmNw
cAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FbnN1cmVT
dGlsbEFsaXZlSGVyZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJFbnN1cmVTdGlsbEFsaXZlSGVyZS5oIgorCituYW1lc3BhY2UgSlNDIHsK
KworI2lmICFDT01QSUxFUihHQ0NfQ09NUEFUSUJMRSkKKworLy8gVGhlc2UgbWFrZXMgdGhlIGFy
Z3VtZW50IG9wYXF1ZSBmcm9tIHRoZSBjb21waWxlci4KKworTkVWRVJfSU5MSU5FIHZvaWQgZW5z
dXJlU3RpbGxBbGl2ZUhlcmUodWludDY0X3QpCit7Cit9CisKK05FVkVSX0lOTElORSB2b2lkIGVu
c3VyZVN0aWxsQWxpdmVIZXJlKGNvbnN0IHZvaWQqKQoreworfQorCisjZW5kaWYgLy8gIUNPTVBJ
TEVSKEdDQ19DT01QQVRJQkxFKQorCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vuc3VyZVN0aWxsQWxpdmVIZXJlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRW5zdXJlU3RpbGxBbGl2ZUhlcmUuaAko
bm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FbnN1cmVTdGls
bEFsaXZlSGVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIkpTRXhwb3J0TWFjcm9zLmgiCisKK25hbWVzcGFjZSBKU0MgeworCisjaWYgQ09NUElMRVIo
R0NDX0NPTVBBVElCTEUpCisKK0FMV0FZU19JTkxJTkUgdm9pZCBlbnN1cmVTdGlsbEFsaXZlSGVy
ZSh1aW50NjRfdCB2YWx1ZSkKK3sKKyAgICBhc20gdm9sYXRpbGUgKCIiIDogOiAiciIodmFsdWUp
IDogIm1lbW9yeSIpOworfQorCitBTFdBWVNfSU5MSU5FIHZvaWQgZW5zdXJlU3RpbGxBbGl2ZUhl
cmUoY29uc3Qgdm9pZCogcG9pbnRlcikKK3sKKyAgICBhc20gdm9sYXRpbGUgKCIiIDogOiAiciIo
cG9pbnRlcikgOiAibWVtb3J5Iik7Cit9CisKKyNlbHNlCisKK0pTX0VYUE9SVF9QUklWQVRFIHZv
aWQgZW5zdXJlU3RpbGxBbGl2ZUhlcmUodWludDY0X3QgdmFsdWUpCitKU19FWFBPUlRfUFJJVkFU
RSB2b2lkIGVuc3VyZVN0aWxsQWxpdmVIZXJlKGNvbnN0IHZvaWQqKTsKKworI2VuZGlmCisKK30g
Ly8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJy
b3JJbnN0YW5jZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXJyb3JJbnN0YW5jZS5jcHAJKHJldmlzaW9uIDI1OTU0MSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYg
KzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBv
cnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwMy0yMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0yMyw2ICsyMyw3
IEBACiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJJbmxpbmVDYWxsRnJhbWUu
aCIKKyNpbmNsdWRlICJJbnRlZ3JpdHlJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIu
aCIKICNpbmNsdWRlICJKU1Njb3BlLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgpAQCAtMTM5
LDYgKzE0MCw3IEBAIFN0cmluZyBFcnJvckluc3RhbmNlOjpzYW5pdGl6ZWRUb1N0cmluZygKIHsK
ICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworICAgIEludGVncml0eTo6YXVkaXRTdHJ1Y3R1cmVJRCh2bSwg
c3RydWN0dXJlSUQoKSk7CiAKICAgICBKU1ZhbHVlIG5hbWVWYWx1ZTsKICAgICBhdXRvIG5hbWVQ
cm9wZXJ0TmFtZSA9IHZtLnByb3BlcnR5TmFtZXMtPm5hbWU7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyNTk1
NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5
OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAy
MDAzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAo
QykgMjAwMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJFcnJvclByb3RvdHlwZS5oIgog
CiAjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJJbnRlZ3JpdHlJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1
ZGUgIk9iamVjdFByb3RvdHlwZS5oIgpAQCAtODIsNiArODMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGVycm9yUHJvdG9GCiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkK
ICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7CiAg
ICAgSlNPYmplY3QqIHRoaXNPYmogPSBhc09iamVjdCh0aGlzVmFsdWUpOworICAgIEludGVncml0
eTo6YXVkaXRTdHJ1Y3R1cmVJRCh2bSwgdGhpc09iai0+c3RydWN0dXJlSUQoKSk7CiAKICAgICAv
LyBHdWFyZCBhZ2FpbnN0IHJlY3Vyc2lvbiEKICAgICBTdHJpbmdSZWN1cnNpb25DaGVja2VyIGNo
ZWNrZXIoZ2xvYmFsT2JqZWN0LCB0aGlzT2JqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI1OTU0
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAx
OTk5LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMp
IDIwMDMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0
IChDKSAyMDAzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5l
cmFsIFB1YmxpYwpAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgog
I2luY2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCisjaW5jbHVkZSAi
SW50ZWdyaXR5SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQXN5bmNGdW5jdGlvbi5oIgogI2luY2x1
ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCkBAIC04NCw2ICs4NSw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Qcm8KICAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKHRoaXNWYWx1ZS5p
bmhlcml0czxKU0Z1bmN0aW9uPih2bSkpIHsKICAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24g
PSBqc0Nhc3Q8SlNGdW5jdGlvbio+KHRoaXNWYWx1ZSk7CisgICAgICAgIEludGVncml0eTo6YXVk
aXRTdHJ1Y3R1cmVJRCh2bSwgZnVuY3Rpb24tPnN0cnVjdHVyZUlEKCkpOwogICAgICAgICBpZiAo
ZnVuY3Rpb24tPmlzSG9zdE9yQnVpbHRpbkZ1bmN0aW9uKCkpCiAgICAgICAgICAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5n
KGdsb2JhbE9iamVjdCwgImZ1bmN0aW9uICIsIGZ1bmN0aW9uLT5uYW1lKHZtKSwgIigpIHtcbiAg
ICBbbmF0aXZlIGNvZGVdXG59IikpKTsKIApAQCAtMTQwLDExICsxNDIsMTMgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblBybwogCiAgICAgaWYgKHRoaXNWYWx1ZS5pbmhl
cml0czxJbnRlcm5hbEZ1bmN0aW9uPih2bSkpIHsKICAgICAgICAgSW50ZXJuYWxGdW5jdGlvbiog
ZnVuY3Rpb24gPSBqc0Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KHRoaXNWYWx1ZSk7CisgICAgICAg
IEludGVncml0eTo6YXVkaXRTdHJ1Y3R1cmVJRCh2bSwgZnVuY3Rpb24tPnN0cnVjdHVyZUlEKCkp
OwogICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc01h
a2VOb250cml2aWFsU3RyaW5nKGdsb2JhbE9iamVjdCwgImZ1bmN0aW9uICIsIGZ1bmN0aW9uLT5u
YW1lKCksICIoKSB7XG4gICAgW25hdGl2ZSBjb2RlXVxufSIpKSk7CiAgICAgfQogCiAgICAgaWYg
KHRoaXNWYWx1ZS5pc09iamVjdCgpKSB7CiAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09i
amVjdCh0aGlzVmFsdWUpOworICAgICAgICBJbnRlZ3JpdHk6OmF1ZGl0U3RydWN0dXJlSUQodm0s
IG9iamVjdC0+c3RydWN0dXJlSUQoKSk7CiAgICAgICAgIGlmIChvYmplY3QtPmlzRnVuY3Rpb24o
dm0pKQogICAgICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNv
ZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhnbG9iYWxPYmplY3QsICJmdW5jdGlvbiAiLCBvYmpl
Y3QtPmNsYXNzSW5mbyh2bSktPmNsYXNzTmFtZSwgIigpIHtcbiAgICBbbmF0aXZlIGNvZGVdXG59
IikpKTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5j
cHAJKHJldmlzaW9uIDI1OTU0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2VsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiAvKgogICogIENvcHlyaWdo
dCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCiAgKiAgQ29weXJp
Z2h0IChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCi0gKiAgQ29weXJpZ2h0IChD
KSAyMDAzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdo
dCAoQykgMjAwMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJBcnJheUJ1ZmZlclZp
ZXcuaCIKICNpbmNsdWRlICJCbG9ja0RpcmVjdG9yeUlubGluZXMuaCIKKyNpbmNsdWRlICJJbnRl
Z3JpdHlJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSXNvU3Vic3BhY2VJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2FzdC5oIgpAQCAtMTkxLDYgKzE5Miw3IEBA
IGRvdWJsZSBKU0NlbGw6OnRvTnVtYmVyKEpTR2xvYmFsT2JqZWN0KiAKIAogSlNPYmplY3QqIEpT
Q2VsbDo6dG9PYmplY3RTbG93KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiB7
CisgICAgSW50ZWdyaXR5OjphdWRpdFN0cnVjdHVyZUlEKGdsb2JhbE9iamVjdC0+dm0oKSwgc3Ry
dWN0dXJlSUQoKSk7CiAgICAgQVNTRVJUKCFpc09iamVjdCgpKTsKICAgICBpZiAoaXNTdHJpbmco
KSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTU3RyaW5nKj4odGhpcyktPnRv
T2JqZWN0KGdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9OdW1iZXJQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI1OTU0MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwLDIwMDMg
SGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDctMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA3
LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp
YwpAQCAtMjQsNiArMjQsNyBAQAogCiAjaW5jbHVkZSAiQmlnSW50ZWdlci5oIgogI2luY2x1ZGUg
IkVycm9yLmgiCisjaW5jbHVkZSAiSW50ZWdyaXR5SW5saW5lcy5oIgogI2luY2x1ZGUgIkludGxO
dW1iZXJGb3JtYXQuaCIKICNpbmNsdWRlICJJbnRsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNDSW5s
aW5lcy5oIgpAQCAtOTgsNiArOTksNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBib29sIHRvVGhp
c051bWJlcihWCiAgICAgfQogCiAgICAgaWYgKGF1dG8qIG51bWJlck9iamVjdCA9IGpzRHluYW1p
Y0Nhc3Q8TnVtYmVyT2JqZWN0Kj4odm0sIHRoaXNWYWx1ZSkpIHsKKyAgICAgICAgSW50ZWdyaXR5
OjphdWRpdFN0cnVjdHVyZUlEKHZtLCBudW1iZXJPYmplY3QtPnN0cnVjdHVyZUlEKCkpOwogICAg
ICAgICB4ID0gbnVtYmVyT2JqZWN0LT5pbnRlcm5hbFZhbHVlKCkuYXNOdW1iZXIoKTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT2JqZWN0UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyNTk1NDEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJy
aSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykgMjAwOC0yMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDgtMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBA
IC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0
ZXIuaCIKICNpbmNsdWRlICJIYXNPd25Qcm9wZXJ0eUNhY2hlLmgiCisjaW5jbHVkZSAiSW50ZWdy
aXR5SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU1N0cmlu
Zy5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKQEAgLTg0LDYgKzg1LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90bwogICAgIEpTT2JqZWN0KiB2YWx1ZU9iaiA9
IHRoaXNWYWx1ZS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIGlmIChVTkxJS0VMWSghdmFs
dWVPYmopKQogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKKyAgICBJbnRlZ3JpdHk6
OmF1ZGl0U3RydWN0dXJlSUQoZ2xvYmFsT2JqZWN0LT52bSgpLCB2YWx1ZU9iai0+c3RydWN0dXJl
SUQoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh2YWx1ZU9iaik7CiB9CiAKQEAgLTMy
MSw2ICszMjMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvCiAg
ICAgaWYgKCF0aGlzT2JqZWN0KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogCisgICAgSW50ZWdyaXR5OjphdWRpdFN0cnVjdHVyZUlEKHZtLCB0aGlzT2Jq
ZWN0LT5zdHJ1Y3R1cmVJRCgpKTsKICAgICBhdXRvIHJlc3VsdCA9IHRoaXNPYmplY3QtPnN0cnVj
dHVyZSh2bSktPm9iamVjdFRvU3RyaW5nVmFsdWUoKTsKICAgICBpZiAocmVzdWx0KQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI1OTU0
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5
OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAy
MDAzLTIwMTkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogIENvcHlyaWdodCAo
QykgMjAwMy0yMDIwIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiAgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJBcnJheVByb3RvdHlwZS5oIgog
I2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgogI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAi
SW50ZWdyaXR5SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKICNpbmNsdWRlICJKU0NC
dWlsdGlucy5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKQEAgLTIxNyw2ICsyMTgsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvCiAgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOwogCiAgICAgSlNPYmplY3QqIHRo
aXNPYmplY3QgPSBhc09iamVjdCh0aGlzVmFsdWUpOworICAgIEludGVncml0eTo6YXVkaXRTdHJ1
Y3R1cmVJRCh2bSwgdGhpc09iamVjdC0+c3RydWN0dXJlSUQoKSk7CiAKICAgICBTdHJpbmdSZWN1
cnNpb25DaGVja2VyIGNoZWNrZXIoZ2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0KTsKICAgICBFWENF
UFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSB8fCBjaGVja2VyLmVhcmx5UmV0dXJuVmFs
dWUoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5
cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmlu
Z1Byb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI1OTU0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2
IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRlbiAocG9ydGVu
QGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA0LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwNC0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxlLCBJ
bmMuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDE1IEpvcmRhbiBIYXJiYW5kIChsamhhcmJAZ21haWwu
Y29tKQogICoKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUg
IkV4ZWN1dGFibGVCYXNlSW5saW5lcy5oIgogI2luY2x1ZGUgIkZyYW1lVHJhY2Vycy5oIgorI2lu
Y2x1ZGUgIkludGVncml0eUlubGluZXMuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlcklubGluZXMu
aCIKICNpbmNsdWRlICJJbnRsQ29sbGF0b3IuaCIKICNpbmNsdWRlICJJbnRsT2JqZWN0LmgiCkBA
IC05NzksMTAgKzk4MCwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1By
b3RvCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhpc1ZhbHVlKTsKIAogICAgIGF1
dG8qIHN0cmluZ09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8U3RyaW5nT2JqZWN0Kj4odm0sIHRoaXNW
YWx1ZSk7Ci0gICAgaWYgKHN0cmluZ09iamVjdCkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShzdHJpbmdPYmplY3QtPmludGVybmFsVmFsdWUoKSk7CisgICAgaWYgKCFzdHJpbmdPYmpl
Y3QpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUp
OwogCi0gICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7Cisg
ICAgSW50ZWdyaXR5OjphdWRpdFN0cnVjdHVyZUlEKHZtLCBzdHJpbmdPYmplY3QtPnN0cnVjdHVy
ZUlEKCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc3RyaW5nT2JqZWN0LT5pbnRlcm5h
bFZhbHVlKCkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3Rv
RnVuY0NoYXJBdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlEVGFi
bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmVJRFRhYmxlLmgJKHJldmlzaW9uIDI1OTU0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZUlEVGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDYgKzI1LDcg
QEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJFbnN1cmVTdGlsbEFsaXZlSGVyZS5oIgog
I2luY2x1ZGUgIlVudXNlZFBvaW50ZXIuaCIKICNpbmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC05MSw3ICs5Miw4IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQqKiBiYXNlKCkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZtX3RhYmxl
KTsgfQogCi0gICAgYm9vbCBpc1ZhbGlkKFN0cnVjdHVyZUlEKTsKKyAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgdmFsaWRhdGUoU3RydWN0dXJlSUQpOworCiAgICAgU3RydWN0dXJlKiBnZXQoU3RydWN0
dXJlSUQpOwogICAgIHZvaWQgZGVhbGxvY2F0ZUlEKFN0cnVjdHVyZSosIFN0cnVjdHVyZUlEKTsK
ICAgICBTdHJ1Y3R1cmVJRCBhbGxvY2F0ZUlEKFN0cnVjdHVyZSopOwpAQCAtMTc2LDE5ICsxNzgs
MTMgQEAgaW5saW5lIFN0cnVjdHVyZSogU3RydWN0dXJlSURUYWJsZTo6Z2V0KAogICAgIHJldHVy
biBkZWNvZGUodGFibGUoKVtzdHJ1Y3R1cmVJbmRleF0uZW5jb2RlZFN0cnVjdHVyZUJpdHMsIHN0
cnVjdHVyZUlEKTsKIH0KIAotaW5saW5lIGJvb2wgU3RydWN0dXJlSURUYWJsZTo6aXNWYWxpZChT
dHJ1Y3R1cmVJRCBzdHJ1Y3R1cmVJRCkKK0FMV0FZU19JTkxJTkUgdm9pZCBTdHJ1Y3R1cmVJRFRh
YmxlOjp2YWxpZGF0ZShTdHJ1Y3R1cmVJRCBzdHJ1Y3R1cmVJRCkKIHsKLSAgICBpZiAoIXN0cnVj
dHVyZUlEKQotICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgdWludDMyX3Qgc3RydWN0dXJlSW5k
ZXggPSBzdHJ1Y3R1cmVJRCA+PiBzX251bWJlck9mRW50cm9weUJpdHM7Ci0gICAgaWYgKHN0cnVj
dHVyZUluZGV4ID49IG1fY2FwYWNpdHkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSNpZiBDUFUo
QUREUkVTUzY0KQogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZGVjb2RlKHRhYmxlKClbc3Ry
dWN0dXJlSW5kZXhdLmVuY29kZWRTdHJ1Y3R1cmVCaXRzLCBzdHJ1Y3R1cmVJRCk7Ci0gICAgaWYg
KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihzdHJ1Y3R1cmUpID4+IHNfZW50cm9weUJpdHNT
aGlmdEZvclN0cnVjdHVyZVBvaW50ZXIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgot
ICAgIHJldHVybiB0cnVlOworICAgIFJFTEVBU0VfQVNTRVJUKHN0cnVjdHVyZUluZGV4IDwgbV9j
YXBhY2l0eSk7CisgICAgdWludDY0X3QgdmFsdWUgPSAqYml0d2lzZV9jYXN0PHVpbnQ2NF90Kj4o
c3RydWN0dXJlKTsKKyAgICBlbnN1cmVTdGlsbEFsaXZlSGVyZSh2YWx1ZSk7CiB9CiAKICNlbHNl
IC8vIG5vdCBVU0UoSlNWQUxVRTY0KQpAQCAtMjA3LDYgKzIwMyw3IEBAIHB1YmxpYzoKICAgICB9
OwogCiAgICAgdm9pZCBmbHVzaE9sZFRhYmxlcygpIHsgfQorICAgIHZvaWQgdmFsaWRhdGUoU3Ry
dWN0dXJlSUQpIHsgfQogfTsKIAogI2VuZGlmIC8vIG5vdCBVU0UoSlNWQUxVRTY0KQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sUHJvdG90eXBlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xQcm90b3R5cGUuY3Bw
CShyZXZpc2lvbiAyNTk1NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1i
b2xQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMi0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5j
b20+LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIlN5bWJv
bFByb3RvdHlwZS5oIgogCiAjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJJbnRlZ3JpdHlJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgi
CiAjaW5jbHVkZSAiU3ltYm9sT2JqZWN0LmgiCkBAIC05Nyw2ICs5OCw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgc3ltYm9sUHJvdG8KICAgICBpZiAoIXN5bWJvbCkKICAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgU3ltYm9sRGVzY3Jp
cHRpb25UeXBlRXJyb3IpOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKKyAgICBJbnRlZ3JpdHk6OmF1
ZGl0U3RydWN0dXJlSUQodm0sIHN5bWJvbC0+c3RydWN0dXJlSUQoKSk7CiAgICAgY29uc3QgYXV0
byBkZXNjcmlwdGlvbiA9IHN5bWJvbC0+ZGVzY3JpcHRpb24oKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGRlc2NyaXB0aW9uLmlzTnVsbCgpID8ganNVbmRlZmluZWQoKSA6IGpzU3RyaW5n
KHZtLCBkZXNjcmlwdGlvbikpOwogfQpAQCAtMTA5LDYgKzExMSw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgc3ltYm9sUHJvdG8KICAgICBTeW1ib2wqIHN5bWJvbCA9IHRyeUV4dHJh
Y3RTeW1ib2wodm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghc3ltYm9sKQog
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBTeW1i
b2xUb1N0cmluZ1R5cGVFcnJvcik7CisgICAgSW50ZWdyaXR5OjphdWRpdFN0cnVjdHVyZUlEKHZt
LCBzeW1ib2wtPnN0cnVjdHVyZUlEKCkpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyh2bSwgc3ltYm9sLT5kZXNjcmlwdGl2
ZVN0cmluZygpKSkpOwogfQogCkBAIC0xMjEsNiArMTI0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBzeW1ib2xQcm90bwogICAgIGlmICghc3ltYm9sKQogICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBTeW1ib2xWYWx1ZU9mVHlwZUVy
cm9yKTsKIAorICAgIEludGVncml0eTo6YXVkaXRTdHJ1Y3R1cmVJRCh2bSwgc3ltYm9sLT5zdHJ1
Y3R1cmVJRCgpKTsKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29k
ZShzeW1ib2wpKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0ludGVn
cml0eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9JbnRlZ3Jp
dHkuaAkocmV2aXNpb24gMjU5NTQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0lu
dGVncml0eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTktMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDYgKzMyLDcgQEAKIG5hbWVzcGFjZSBKU0Mgewog
CiBjbGFzcyBKU0NlbGw7CitjbGFzcyBTdHJ1Y3R1cmVJRFRhYmxlOwogY2xhc3MgVk07CiAKIG5h
bWVzcGFjZSBJbnRlZ3JpdHkgewpAQCAtOTksNiArMTAwLDkgQEAgQUxXQVlTX0lOTElORSB2b2lk
IGF1ZGl0Q2VsbChWTSYgdm0sIEpTVgogICAgICAgICBhdWRpdENlbGw8YXVkaXRMZXZlbD4odm0s
IHZhbHVlLmFzQ2VsbCgpKTsKIH0KIAorQUxXQVlTX0lOTElORSB2b2lkIGF1ZGl0U3RydWN0dXJl
SUQoU3RydWN0dXJlSURUYWJsZSYsIFN0cnVjdHVyZUlEKTsKK0FMV0FZU19JTkxJTkUgdm9pZCBh
dWRpdFN0cnVjdHVyZUlEKFZNJiwgU3RydWN0dXJlSUQpOworCiB9IC8vIG5hbWVzcGFjZSBJbnRl
Z3JpdHkKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
dG9vbHMvSW50ZWdyaXR5SW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS90b29scy9JbnRlZ3JpdHlJbmxpbmVzLmgJKHJldmlzaW9uIDI1OTU0MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90b29scy9JbnRlZ3JpdHlJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
NzMsNSArNzMsMTUgQEAgQUxXQVlTX0lOTElORSB2b2lkIGF1ZGl0Q2VsbFJhbmRvbWx5KFZNJgog
ICAgICAgICBhdWRpdENlbGxGdWxseSh2bSwgY2VsbCk7CiB9CiAKK0FMV0FZU19JTkxJTkUgdm9p
ZCBhdWRpdFN0cnVjdHVyZUlEKFN0cnVjdHVyZUlEVGFibGUmIHRhYmxlLCBTdHJ1Y3R1cmVJRCBp
ZCkKK3sKKyAgICB0YWJsZS52YWxpZGF0ZShpZCk7Cit9CisKK0FMV0FZU19JTkxJTkUgdm9pZCBh
dWRpdFN0cnVjdHVyZUlEKFZNJiB2bSwgU3RydWN0dXJlSUQgaWQpCit7CisgICAgYXVkaXRTdHJ1
Y3R1cmVJRCh2bS5oZWFwLnN0cnVjdHVyZUlEVGFibGUoKSwgaWQpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBJbnRlZ3JpdHkKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlHbG9iYWxQcm90b3R5cGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5R2xvYmFsUHJvdG90
eXBlLmNwcAkocmV2aXNpb24gMjU5NTQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvV2ViQXNzZW1ibHlHbG9iYWxQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMwLDYgKzMw
LDcgQEAKIAogI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiR2V0dGVy
U2V0dGVyLmgiCisjaW5jbHVkZSAiSW50ZWdyaXR5SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0lu
bGluZXMuaCIKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5R2xvYmFsLmgiCiAjaW5jbHVkZSAiSlNX
ZWJBc3NlbWJseUhlbHBlcnMuaCIKQEAgLTYxLDYgKzYyLDcgQEAgc3RhdGljIEFMV0FZU19JTkxJ
TkUgSlNXZWJBc3NlbWJseUdsb2JhbAogICAgICAgICAgICAgY3JlYXRlVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgImV4cGVjdGVkIHx0aGlzfCB2YWx1ZSB0byBiZSBhbiBpbnN0YW5jZSBvZiBXZWJB
c3NlbWJseS5HbG9iYWwiX3MpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQorICAg
IEludGVncml0eTo6YXVkaXRTdHJ1Y3R1cmVJRCh2bSwgcmVzdWx0LT5zdHJ1Y3R1cmVJRCgpKTsK
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395488</attachid>
            <date>2020-04-04 23:09:43 -0700</date>
            <delta_ts>2020-04-04 23:09:43 -0700</delta_ts>
            <desc>patch for landing.</desc>
            <filename>bug-210015.patch</filename>
            <type>text/plain</type>
            <size>41149</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjU5NTQyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDczIEBA
CisyMDIwLTA0LTA0ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZGQgc29tZSBzdHJ1Y3R1cmVJRCBpbnRlZ3JpdHkgY2hlY2tzIHRvIHZhcmlvdXMgcnVudGltZSBm
dW5jdGlvbnMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTAwMTUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU4MTE2NTE0PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IEtlaXRoIE1pbGxlci4KKworICAgICAgICBTcGVjaWZpY2FsbHksIGltcGxlbWVu
dGF0aW9ucyBvZiB0b1N0cmluZygpLCB0b1ZhbHVlKCksIGFuZCBhIGZldyBvdGhlcnMuCisgICAg
ICAgIEkgYWxzbyBtb3ZlZCB0aGUgSGVhcENlbGwgdmVyc2lvbiBvZiBlbnN1cmVTdGlsbEFsaXZl
SGVyZSgpIGludG8gdGhlIG5ldworICAgICAgICBFbnN1cmVTdGlsbEFsaXZlSGVyZS5oL2NwcCBz
aW5jZSBpdCdzIHVzZWZ1bCBmb3IgYW55IHBvaW50ZXJzLCBub3QganVzdCBIZWFwQ2VsbHMuCisK
KyAgICAgICAgVGhpcyBjaGFuZ2UgaXMgcGVyZm9ybWFuY2UgbmV1dHJhbCBvbiBKZXRTdHJlYW0g
Mi4wLCBTcGVlZG9tZXRlci0yLCBhbmQgUExUNS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogaGVhcC9IZWFwQ2VsbC5jcHA6CisgICAg
ICAgIChKU0M6OmVuc3VyZVN0aWxsQWxpdmVIZXJlKTogRGVsZXRlZC4KKyAgICAgICAgKiBoZWFw
L0hlYXBDZWxsLmg6CisgICAgICAgIChKU0M6OmVuc3VyZVN0aWxsQWxpdmVIZXJlKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBoZWFwL1Nsb3RWaXNpdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6U2xvdFZp
c2l0b3I6OmFwcGVuZEpTQ2VsbE9yQXV4aWxpYXJ5KToKKyAgICAgICAgKiBydW50aW1lL0FycmF5
UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNUb1N0cmluZyk6Cisg
ICAgICAgICogcnVudGltZS9CaWdJbnRQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpiaWdJ
bnRQcm90b0Z1bmNUb1N0cmluZ0ltcGwpOgorICAgICAgICAoSlNDOjpiaWdJbnRQcm90b0Z1bmNW
YWx1ZU9mKToKKyAgICAgICAgKiBydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwOgorICAgICAg
ICAoSlNDOjpib29sZWFuUHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAgICAoSlNDOjpib29sZWFu
UHJvdG9GdW5jVmFsdWVPZik6CisgICAgICAgICogcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcDoK
KyAgICAgICAgKEpTQzo6Zm9ybWF0TG9jYWxlRGF0ZSk6CisgICAgICAgIChKU0M6OmZvcm1hdGVE
YXRlSW5zdGFuY2UpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jVG9JU09TdHJpbmcpOgor
ICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jVG9QcmltaXRpdmVTeW1ib2wpOgorICAgICAgICAq
IHJ1bnRpbWUvRW5zdXJlU3RpbGxBbGl2ZUhlcmUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6
ZW5zdXJlU3RpbGxBbGl2ZUhlcmUpOgorICAgICAgICAqIHJ1bnRpbWUvRW5zdXJlU3RpbGxBbGl2
ZUhlcmUuaDogQWRkZWQuCisgICAgICAgIChKU0M6OmVuc3VyZVN0aWxsQWxpdmVIZXJlKToKKyAg
ICAgICAgKiBydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwOgorICAgICAgICAoSlNDOjpFcnJvcklu
c3RhbmNlOjpzYW5pdGl6ZWRUb1N0cmluZyk6CisgICAgICAgICogcnVudGltZS9FcnJvclByb3Rv
dHlwZS5jcHA6CisgICAgICAgIChKU0M6OmVycm9yUHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAg
ICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpmdW5jdGlv
blByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5jcHA6CisgICAg
ICAgIChKU0M6OkpTQ2VsbDo6dG9PYmplY3RTbG93IGNvbnN0KToKKyAgICAgICAgKiBydW50aW1l
L051bWJlclByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OnRvVGhpc051bWJlcik6CisgICAg
ICAgICogcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpvYmplY3RQ
cm90b0Z1bmNWYWx1ZU9mKToKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jVG9TdHJpbmcp
OgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6
cmVnRXhwUHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nUHJvdG90
eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jVG9TdHJpbmcpOgorICAgICAg
ICAqIHJ1bnRpbWUvU3RydWN0dXJlSURUYWJsZS5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVJ
RFRhYmxlOjp2YWxpZGF0ZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUlEVGFibGU6OmlzVmFs
aWQpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sUHJvdG90eXBlLmNwcDoKKyAg
ICAgICAgKEpTQzo6c3ltYm9sUHJvdG9HZXR0ZXJEZXNjcmlwdGlvbik6CisgICAgICAgIChKU0M6
OnN5bWJvbFByb3RvRnVuY1RvU3RyaW5nKToKKyAgICAgICAgKEpTQzo6c3ltYm9sUHJvdG9GdW5j
VmFsdWVPZik6CisgICAgICAgICogdG9vbHMvSW50ZWdyaXR5Lmg6CisgICAgICAgICogdG9vbHMv
SW50ZWdyaXR5SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpJbnRlZ3JpdHk6OmF1ZGl0U3RydWN0
dXJlSUQpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlHbG9iYWxQcm90b3R5cGUuY3Bw
OgorICAgICAgICAoSlNDOjpnZXRHbG9iYWwpOgorCiAyMDIwLTA0LTA0ICBBbGV4ZXkgU2h2YXlr
YSAgPHNodmFpa2FsZXNoQGdtYWlsLmNvbT4KIAogICAgICAgICAnXHUnIHNob3VsZCB0aHJvdyBh
biBlYXJseSBTeW50YXhFcnJvciBleGNlcHRpb24sIGJ1dCBpbnN0ZWFkIGV2YWx1YXRlcyB0byAn
dScKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDI1OTU0
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtODIwLDYgKzgyMCw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09S
S19IRUEKICAgICBydW50aW1lL0Rpc2FsbG93U2NvcGUuaAogICAgIHJ1bnRpbWUvRGlzYWxsb3dW
TVJlZW50cnkuaAogICAgIHJ1bnRpbWUvRHVtcENvbnRleHQuaAorICAgIHJ1bnRpbWUvRW5zdXJl
U3RpbGxBbGl2ZUhlcmUuaAogICAgIHJ1bnRpbWUvRW51bWVyYXRpb25Nb2RlLmgKICAgICBydW50
aW1lL0Vycm9yLmgKICAgICBydW50aW1lL0Vycm9ySGFuZGxpbmdTY29wZS5oCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL1NvdXJjZXMudHh0CShyZXZpc2lvbiAyNTk1NDEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTc2NCw2ICs3NjQsNyBAQCBy
dW50aW1lL0Rpc2FsbG93Vk1SZWVudHJ5LmNwcAogcnVudGltZS9Eb3VibGVQcmVkaWN0aW9uRnV6
emVyQWdlbnQuY3BwCiBydW50aW1lL0R1bXBDb250ZXh0LmNwcAogcnVudGltZS9FQ01BU2NyaXB0
U3BlY0ludGVybmFsRnVuY3Rpb25zLmNwcAorcnVudGltZS9FbnN1cmVTdGlsbEFsaXZlSGVyZS5j
cHAKIHJ1bnRpbWUvRXJyb3IuY3BwCiBydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuY3BwCiBydW50
aW1lL0Vycm9ySGFuZGxpbmdTY29wZS5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiAyNTk1NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTg4OCw2
ICsxODg4LDcgQEAKIAkJRkUzMDIyRDcxRTQyODU3MzAwQkFDNDkzIC8qIFZNSW5zcGVjdG9yLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTMwMjJENTFF
NDI4NTY3MDBCQUM0OTMgLyogVk1JbnNwZWN0b3IuaCAqLzsgfTsKIAkJRkUzMThGRTAxQ0FDOTgy
RjAwREZDQzU0IC8qIEVDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMzE4RkRFMUNBQzhDNTMwMERG
Q0M1NCAvKiBFQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25zLmggKi87IH07CiAJCUZFMzQy
MjEyMUQ2QjgxQzMwMDMyQkU4OCAvKiBUaHJvd1Njb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTM0MjIxMTFENkI4MThDMDAzMkJFODggLyogVGhy
b3dTY29wZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCUZFMzRFRTIxMjQzOThBQUUwMEFBMkU3QyAvKiBFbnN1cmVTdGlsbEFsaXZlSGVyZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzNEVFMjAyNDM5
OEE5QTAwQUEyRTdDIC8qIEVuc3VyZVN0aWxsQWxpdmVIZXJlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkUzODQyMzMyMzI0RDUxQjAwOURENDQ1
IC8qIE9wdGlvbnNMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRTM4NDIzMTIzMjRENTFCMDA5REQ0NDUgLyogT3B0aW9uc0xpc3QuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTM4NEVFNjFBRERC
N0FEMDA1NURFMkMgLyogSlNEb2xsYXJWTS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkUzODRFRTIxQUREQjdBRDAwNTVERTJDIC8qIEpTRG9sbGFyVk0u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGRTNB
MDZBNjFDMTBCNzJEMDAzOTBGREQgLyogSklUQml0T3JHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFM0EwNkE0MUMxMEI3MDgwMDM5MEZE
RCAvKiBKSVRCaXRPckdlbmVyYXRvci5oICovOyB9OwpAQCAtNTEyMiw2ICs1MTIzLDggQEAKIAkJ
RkUzMThGREQxQ0FDOEM1MzAwREZDQzU0IC8qIEVDTUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlv
bnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRUNNQVNjcmlwdFNw
ZWNJbnRlcm5hbEZ1bmN0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZF
MzE4RkRFMUNBQzhDNTMwMERGQ0M1NCAvKiBFQ01BU2NyaXB0U3BlY0ludGVybmFsRnVuY3Rpb25z
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVDTUFTY3JpcHRTcGVjSW50ZXJu
YWxGdW5jdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUzNDIyMTExRDZC
ODE4QzAwMzJCRTg4IC8qIFRocm93U2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVGhyb3dTY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTM0RUUy
MDI0Mzk4QTlBMDBBQTJFN0MgLyogRW5zdXJlU3RpbGxBbGl2ZUhlcmUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRW5zdXJlU3RpbGxBbGl2ZUhlcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RkUzNEVFMjIyNDM5OEI4NTAwQUEyRTdDIC8qIEVuc3VyZVN0aWxsQWxpdmVIZXJlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVuc3VyZVN0aWxsQWxpdmVIZXJlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkUzNUMyRjAyMUIxRTZDNTAwMEY0Q0E4
IC8qIFRlbXBsYXRlLnJiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucnVieTsgcGF0aCA9IFRlbXBs
YXRlLnJiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTM1QzJGMTIxQjFFNkM2MDAw
RjRDQTggLyogRml0cy5yYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnJ1Ynk7IHBhdGggPSBGaXRz
LnJiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTM1QzJGMjIxQjFFNkM2MDAwRjRD
QTggLyogR2VuZXJhdGVkRmlsZS5yYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnJ1Ynk7IHBhdGgg
PSBHZW5lcmF0ZWRGaWxlLnJiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzExMSw2
ICs3MTE0LDggQEAKIAkJCQlBNzA0NDdFQzE3QTBCRDcwMDBGNTg5OEUgLyogRHVtcENvbnRleHQu
aCAqLywKIAkJCQlGRTMxOEZERDFDQUM4QzUzMDBERkNDNTQgLyogRUNNQVNjcmlwdFNwZWNJbnRl
cm5hbEZ1bmN0aW9ucy5jcHAgKi8sCiAJCQkJRkUzMThGREUxQ0FDOEM1MzAwREZDQzU0IC8qIEVD
TUFTY3JpcHRTcGVjSW50ZXJuYWxGdW5jdGlvbnMuaCAqLywKKwkJCQlGRTM0RUUyMjI0Mzk4Qjg1
MDBBQTJFN0MgLyogRW5zdXJlU3RpbGxBbGl2ZUhlcmUuY3BwICovLAorCQkJCUZFMzRFRTIwMjQz
OThBOUEwMEFBMkU3QyAvKiBFbnN1cmVTdGlsbEFsaXZlSGVyZS5oICovLAogCQkJCTJBRDJFREZB
MTk3OTlFMzgwMDRENjQ3OCAvKiBFbnVtZXJhdGlvbk1vZGUuaCAqLywKIAkJCQlCQzMzN0JFQTBF
MUIwMENCMDA3NjkxOEEgLyogRXJyb3IuY3BwICovLAogCQkJCUJDMzA0NjA2MEUxRjQ5N0YwMDMy
MzJDRiAvKiBFcnJvci5oICovLApAQCAtODkyNyw2ICs4OTMyLDcgQEAKIAkJCQkwRkUwNTAxNDFB
QTkwOTExMDBEMzNCMzMgLyogQXJndW1lbnRzTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzlB
MjI4MzYxRDM1RDcxRjAwRDhFMDY3IC8qIEFyaXRoUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEY2QjFDQjkxODYxMjQ0QzAwODQ1RDk3IC8qIEFyaXR5Q2hlY2tNb2RlLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlGRTM0RUUyMTI0Mzk4QUFFMDBBQTJFN0MgLyogRW5zdXJlU3RpbGxBbGl2ZUhl
cmUuaCBpbiBIZWFkZXJzICovLAogCQkJCUExQTAwOUMxMTgzMUEyNkUwMENGODcxMSAvKiBBUk02
NEFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkUxRTJDNDAyMjQwREQ2MjAwRjZCNzI5
IC8qIEFSTTY0RUFzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFBMDA5QzExODMxQTI2
RTAwQ0Y4NzIyIC8qIEFSTTY0UmVnaXN0ZXJzLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBDZWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwQ2VsbC5jcHAJKHJldmlzaW9uIDI1OTU0MSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBDZWxsLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTQyLDEzICs0Miw2IEBAIGJvb2wgSGVhcENlbGw6OmlzTGl2ZSgpCiAgICAgcmV0dXJuIG1hcmtl
ZEJsb2NrSGFuZGxlLmlzTGl2ZSh0aGlzKTsKIH0KIAotI2lmICFDT01QSUxFUihHQ0NfQ09NUEFU
SUJMRSkKLS8vIFRoaXMgbWFrZXMgdGhlIGFyZ3VtZW50IG9wYXF1ZSBmcm9tIHRoZSBjb21waWxl
ci4KLU5FVkVSX0lOTElORSB2b2lkIGVuc3VyZVN0aWxsQWxpdmVIZXJlKGNvbnN0IHZvaWQqKQot
ewotfQotI2VuZGlmCi0KIH0gLy8gbmFtZXNwYWNlIEpTQwogCiBuYW1lc3BhY2UgV1RGIHsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBDZWxsLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcENlbGwuaAkocmV2aXNpb24gMjU5NTQxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcENlbGwuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRGVzdHJ1Y3Rpb25N
b2RlLmgiCisjaW5jbHVkZSAiRW5zdXJlU3RpbGxBbGl2ZUhlcmUuaCIKIAogbmFtZXNwYWNlIEpT
QyB7CiAKQEAgLTM3LDE1ICszOCw2IEBAIGNsYXNzIFN1YnNwYWNlOwogY2xhc3MgVk07CiBzdHJ1
Y3QgQ2VsbEF0dHJpYnV0ZXM7CiAKLSNpZiBDT01QSUxFUihHQ0NfQ09NUEFUSUJMRSkKLUFMV0FZ
U19JTkxJTkUgdm9pZCBlbnN1cmVTdGlsbEFsaXZlSGVyZShjb25zdCB2b2lkKiBwb2ludGVyKQot
ewotICAgIGFzbSB2b2xhdGlsZSAoIiIgOiA6ICJyIihwb2ludGVyKSA6ICJtZW1vcnkiKTsKLX0K
LSNlbHNlCi1KU19FWFBPUlRfUFJJVkFURSB2b2lkIGVuc3VyZVN0aWxsQWxpdmVIZXJlKGNvbnN0
IHZvaWQqKTsKLSNlbmRpZgotCiBjbGFzcyBIZWFwQ2VsbCB7CiBwdWJsaWM6CiAgICAgZW51bSBL
aW5kIDogaW50OF90IHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNp
dG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90Vmlz
aXRvci5jcHAJKHJldmlzaW9uIDI1OTU0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L1Nsb3RWaXNpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTItMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTItMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIwMCwxMSArMjAwLDggQEAgdm9p
ZCBTbG90VmlzaXRvcjo6YXBwZW5kSlNDZWxsT3JBdXhpbGlhcgogICAgICAgICBpZiAoaXNOdWtl
ZChzdHJ1Y3R1cmVJRCkpCiAgICAgICAgICAgICBkaWUoIkdDIHNjYW4gZm91bmQgb2JqZWN0IGlu
IGJhZCBzdGF0ZTogc3RydWN0dXJlSUQgaXMgbnVrZWQhXG4iKTsKICAgICAgICAgCi0jaWYgVVNF
KEpTVkFMVUU2NCkKICAgICAgICAgLy8gVGhpcyBkZXRlY3RzIHRoZSB3b3JzdCBvZiB0aGUgYmFk
bmVzcy4KLSAgICAgICAgaWYgKCFoZWFwKCktPnN0cnVjdHVyZUlEVGFibGUoKS5pc1ZhbGlkKHN0
cnVjdHVyZUlEKSkKLSAgICAgICAgICAgIGRpZSgiR0Mgc2NhbiBmb3VuZCBjb3JydXB0IG9iamVj
dDogc3RydWN0dXJlSUQgaXMgaW52YWxpZCFcbiIpOwotI2VuZGlmCisgICAgICAgIEludGVncml0
eTo6YXVkaXRTdHJ1Y3R1cmVJRChoZWFwKCktPnN0cnVjdHVyZUlEVGFibGUoKSwgc3RydWN0dXJl
SUQpOwogICAgIH07CiAgICAgCiAgICAgLy8gSW4gZGVidWcgbW9kZSwgd2UgdmFsaWRhdGUgYmVm
b3JlIG1hcmtpbmcgc2luY2UgdGhpcyBtYWtlcyBpdCBjbGVhcmVyIHdoYXQgdGhlIHByb2JsZW0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlw
ZS5jcHAJKHJldmlzaW9uIDI1OTU0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAg
KiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykK
LSAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICogIENvcHlyaWdodCAoQykgMjAwMyBQZXRlciBLZWxseSAocG1rQHBvc3QuY29t
KQogICogIENvcHlyaWdodCAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292IChhcEBueXBvcC5j
b20pCiAgKgpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1
ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCisjaW5jbHVkZSAiSW50ZWdy
aXR5SW5saW5lcy5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSklULmgi
CiAjaW5jbHVkZSAiSlNBcnJheUlubGluZXMuaCIKQEAgLTYwNSw2ICs2MDYsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GCiAgICAgSlNPYmplY3QqIHRoaXNPYmpl
Y3QgPSB0aGlzVmFsdWUudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAorICAgIEludGVncml0eTo6YXVkaXRT
dHJ1Y3R1cmVJRCh2bSwgdGhpc09iamVjdC0+c3RydWN0dXJlSUQoKSk7CiAgICAgaWYgKCFjYW5V
c2VEZWZhdWx0QXJyYXlKb2luRm9yVG9TdHJpbmcodm0sIHRoaXNPYmplY3QpKSB7CiAgICAgICAg
IC8vIDIuIExldCBmdW5jIGJlIHRoZSByZXN1bHQgb2YgY2FsbGluZyB0aGUgW1tHZXRdXSBpbnRl
cm5hbCBtZXRob2Qgb2YgYXJyYXkgd2l0aCBhcmd1bWVudCAiam9pbiIuCiAgICAgICAgIEpTVmFs
dWUgZnVuY3Rpb24gPSBKU1ZhbHVlKHRoaXNPYmplY3QpLmdldChnbG9iYWxPYmplY3QsIHZtLnBy
b3BlcnR5TmFtZXMtPmpvaW4pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QmlnSW50UHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9CaWdJbnRQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyNTk1NDEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNyBDYWlvIExpbWEgPHRp
Y2Fpb2xpbWFAZ21haWwuY29tPi4KLSAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiQmlnSW50T2JqZWN0LmgiCiAjaW5jbHVk
ZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJJbnRlZ3JpdHlJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNC
aWdJbnQuaCIKICNpbmNsdWRlICJKU0NCdWlsdGlucy5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMu
aCIKQEAgLTEwMSw2ICsxMDIsNyBAQCBzdGF0aWMgSlNWYWx1ZSBiaWdJbnRQcm90b0Z1bmNUb1N0
cmluZ0ltCiAKICAgICBBU1NFUlQodmFsdWUpOwogCisgICAgSW50ZWdyaXR5OjphdWRpdFN0cnVj
dHVyZUlEKHZtLCB2YWx1ZS0+c3RydWN0dXJlSUQoKSk7CiAgICAgaW50MzJfdCByYWRpeCA9IGV4
dHJhY3RUb1N0cmluZ1JhZGl4QXJndW1lbnQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDApLCBzY29wZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIApA
QCAtMTI2LDExICsxMjgsMTQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBiaWdJbnRQ
cm90bwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBiaWdJbnRQcm90b0Z1bmNWYWx1ZU9m
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICBpZiAoSlNCaWdJbnQqIHZhbHVl
ID0gdG9UaGlzQmlnSW50VmFsdWUodm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpKQotICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKTsKLSAgICAKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIid0aGlzJyB2YWx1ZSBtdXN0IGJlIGEgQmlnSW50IG9yIEJpZ0lu
dE9iamVjdCJfcyk7CisKKyAgICBKU0JpZ0ludCogdmFsdWUgPSB0b1RoaXNCaWdJbnRWYWx1ZSh2
bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIid0aGlzJyB2YWx1ZSBt
dXN0IGJlIGEgQmlnSW50IG9yIEJpZ0ludE9iamVjdCJfcyk7CisKKyAgICBJbnRlZ3JpdHk6OmF1
ZGl0U3RydWN0dXJlSUQodm0sIHZhbHVlLT5zdHJ1Y3R1cmVJRCgpKTsKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHZhbHVlKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmNwcAko
cmV2aXNpb24gMjU5NTQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVh
blByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENv
cHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAg
Q29weXJpZ2h0IChDKSAyMDAzLCAyMDA4LCAyMDExLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0yMyw2ICsyMyw3IEBACiAK
ICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKKyNpbmNs
dWRlICJJbnRlZ3JpdHlJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1
ZGUgIkpTU3RyaW5nLmgiCiAjaW5jbHVkZSAiT2JqZWN0UHJvdG90eXBlLmgiCkBAIC04MCw2ICs4
MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm9vbGVhblByb3QKICAgICBpZiAo
VU5MSUtFTFkoIXRoaXNPYmplY3QpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlKTsKIAorICAgIEludGVncml0eTo6YXVkaXRTdHJ1Y3R1cmVJRCh2
bSwgdGhpc09iamVjdC0+c3RydWN0dXJlSUQoKSk7CiAgICAgaWYgKHRoaXNPYmplY3QtPmludGVy
bmFsVmFsdWUoKSA9PSBqc0Jvb2xlYW4oZmFsc2UpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHZtLnNtYWxsU3RyaW5ncy5mYWxzZVN0cmluZygpKTsKIApAQCAtOTksNiArMTAxLDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib29sZWFuUHJvdAogICAgIGlmIChVTkxJ
S0VMWSghdGhpc09iamVjdCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUpOwogCisgICAgSW50ZWdyaXR5OjphdWRpdFN0cnVjdHVyZUlEKHZtLCB0
aGlzT2JqZWN0LT5zdHJ1Y3R1cmVJRCgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
aXNPYmplY3QtPmludGVybmFsVmFsdWUoKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyNTk1NDEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDAg
SGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDQtMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA0
LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogIENvcHlyaWdodCAoQykg
MjAwOCwgMjAwOSBUb3JjaCBNb2JpbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBD
b3B5cmlnaHQgKEMpIDIwMTAgVG9yY2ggTW9iaWxlIChCZWlqaW5nKSBDby4gTHRkLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJEYXRlQ29udmVy
c2lvbi5oIgogI2luY2x1ZGUgIkRhdGVJbnN0YW5jZS5oIgogI2luY2x1ZGUgIkVycm9yLmgiCisj
aW5jbHVkZSAiSW50ZWdyaXR5SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0J1aWx0aW5zLmgiCiAj
aW5jbHVkZSAiSlNEYXRlTWF0aC5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCkBAIC0x
NDAsOSArMTQxLDExIEBAIHN0YXRpYyBDRkRhdGVGb3JtYXR0ZXJTdHlsZSBzdHlsZUZyb21BcmcK
ICAgICByZXR1cm4gZGVmYXVsdFN0eWxlOwogfQogCi1zdGF0aWMgSlNDZWxsKiBmb3JtYXRMb2Nh
bGVEYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
LCBEYXRlSW5zdGFuY2UqLCBkb3VibGUgdGltZUluTWlsbGlzZWNvbmRzLCBMb2NhbGVEYXRlVGlt
ZUZvcm1hdCBmb3JtYXQpCitzdGF0aWMgSlNDZWxsKiBmb3JtYXRMb2NhbGVEYXRlKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBEYXRlSW5zdGFuY2Uq
IGRhdGVPYmplY3QsIGRvdWJsZSB0aW1lSW5NaWxsaXNlY29uZHMsIExvY2FsZURhdGVUaW1lRm9y
bWF0IGZvcm1hdCkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgSW50
ZWdyaXR5OjphdWRpdFN0cnVjdHVyZUlEKHZtLCBkYXRlT2JqZWN0LT5zdHJ1Y3R1cmVJRCgpKTsK
KwogICAgIENGRGF0ZUZvcm1hdHRlclN0eWxlIGRhdGVTdHlsZSA9IChmb3JtYXQgIT0gTG9jYWxl
VGltZSA/IGtDRkRhdGVGb3JtYXR0ZXJMb25nU3R5bGUgOiBrQ0ZEYXRlRm9ybWF0dGVyTm9TdHls
ZSk7CiAgICAgQ0ZEYXRlRm9ybWF0dGVyU3R5bGUgdGltZVN0eWxlID0gKGZvcm1hdCAhPSBMb2Nh
bGVEYXRlID8ga0NGRGF0ZUZvcm1hdHRlckxvbmdTdHlsZSA6IGtDRkRhdGVGb3JtYXR0ZXJOb1N0
eWxlKTsKIApAQCAtMTcxLDkgKzE3NCwxMSBAQCBzdGF0aWMgSlNDZWxsKiBmb3JtYXRMb2NhbGVE
YXRlKEpTR2xvYmFsCiAKICNlbGlmICFVQ09ORklHX05PX0ZPUk1BVFRJTkcKIAotc3RhdGljIEpT
Q2VsbCogZm9ybWF0TG9jYWxlRGF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqLCBEYXRlSW5zdGFuY2UqLCBkb3VibGUgdGltZUluTWlsbGlzZWNvbmRzLCBMb2NhbGVE
YXRlVGltZUZvcm1hdCBmb3JtYXQpCitzdGF0aWMgSlNDZWxsKiBmb3JtYXRMb2NhbGVEYXRlKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSosIERhdGVJbnN0YW5jZSogZGF0
ZU9iamVjdCwgZG91YmxlIHRpbWVJbk1pbGxpc2Vjb25kcywgTG9jYWxlRGF0ZVRpbWVGb3JtYXQg
Zm9ybWF0KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBJbnRlZ3Jp
dHk6OmF1ZGl0U3RydWN0dXJlSUQodm0sIGRhdGVPYmplY3QtPnN0cnVjdHVyZUlEKCkpOworCiAg
ICAgVURhdGVGb3JtYXRTdHlsZSB0aW1lU3R5bGUgPSAoZm9ybWF0ICE9IExvY2FsZURhdGUgPyBV
REFUX0xPTkcgOiBVREFUX05PTkUpOwogICAgIFVEYXRlRm9ybWF0U3R5bGUgZGF0ZVN0eWxlID0g
KGZvcm1hdCAhPSBMb2NhbGVUaW1lID8gVURBVF9MT05HIDogVURBVF9OT05FKTsKIApAQCAtMzEx
LDYgKzMxNiw4IEBAIHN0YXRpYyBKU0NlbGwqIGZvcm1hdExvY2FsZURhdGUoSlNHbG9iYWwKIHN0
YXRpYyBKU0NlbGwqIGZvcm1hdExvY2FsZURhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIERhdGVJbnN0YW5jZSogZGF0ZU9iamVjdCwgZG91Ymxl
LCBMb2NhbGVEYXRlVGltZUZvcm1hdCBmb3JtYXQpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOworICAgIEludGVncml0eTo6YXVkaXRTdHJ1Y3R1cmVJRCh2bSwgZGF0ZU9iamVj
dC0+c3RydWN0dXJlSUQoKSk7CisKICAgICBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSogZ3JlZ29y
aWFuRGF0ZVRpbWUgPSBkYXRlT2JqZWN0LT5ncmVnb3JpYW5EYXRlVGltZSh2bSk7CiAgICAgaWYg
KCFncmVnb3JpYW5EYXRlVGltZSkKICAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyh2
bSwgIkludmFsaWQgRGF0ZSJfcyk7CkBAIC0zMjgsNiArMzM1LDcgQEAgc3RhdGljIEVuY29kZWRK
U1ZhbHVlIGZvcm1hdGVEYXRlSW5zdGFuYwogICAgIGlmIChVTkxJS0VMWSghdGhpc0RhdGVPYmop
KQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKTsK
IAorICAgIEludGVncml0eTo6YXVkaXRTdHJ1Y3R1cmVJRCh2bSwgdGhpc0RhdGVPYmotPnN0cnVj
dHVyZUlEKCkpOwogICAgIGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lKiBncmVnb3JpYW5EYXRlVGlt
ZSA9IGFzVVRDVmFyaWFudAogICAgICAgICA/IHRoaXNEYXRlT2JqLT5ncmVnb3JpYW5EYXRlVGlt
ZVVUQyh2bSkKICAgICAgICAgOiB0aGlzRGF0ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWUodm0pOwpA
QCAtNTQzLDcgKzU1MSw4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3Rv
RnUKICAgICBhdXRvKiB0aGlzRGF0ZU9iaiA9IGpzRHluYW1pY0Nhc3Q8RGF0ZUluc3RhbmNlKj4o
dm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCF0aGlzRGF0ZU9iaikpCiAgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOwotICAgIAorCisg
ICAgSW50ZWdyaXR5OjphdWRpdFN0cnVjdHVyZUlEKHZtLCB0aGlzRGF0ZU9iai0+c3RydWN0dXJl
SUQoKSk7CiAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKHRoaXNEYXRlT2JqLT5pbnRlcm5hbE51bWJl
cigpKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBj
cmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgIkludmFsaWQgRGF0ZSJfcykpOwogCkBAIC02
MjcsNiArNjM2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdQog
ICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJEYXRlLnByb3RvdHlwZVtTeW1ib2wudG9Qcmlt
aXRpdmVdIGV4cGVjdGVkIHx0aGlzfCB0byBiZSBhbiBvYmplY3QuIik7CiAgICAgSlNPYmplY3Qq
IHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNPYmplY3QqPih0aGlzVmFsdWUpOworICAgIEludGVncml0
eTo6YXVkaXRTdHJ1Y3R1cmVJRCh2bSwgdGhpc09iamVjdC0+c3RydWN0dXJlSUQoKSk7CiAKICAg
ICBpZiAoIWNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpKQogICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRGF0ZS5wcm90b3R5cGVbU3ltYm9sLnRv
UHJpbWl0aXZlXSBleHBlY3RlZCBhIGZpcnN0IGFyZ3VtZW50LiIpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRW5zdXJlU3RpbGxBbGl2ZUhlcmUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vuc3VyZVN0aWxsQWxpdmVIZXJlLmNw
cAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FbnN1cmVT
dGlsbEFsaXZlSGVyZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJFbnN1cmVTdGlsbEFsaXZlSGVyZS5oIgorCituYW1lc3BhY2UgSlNDIHsK
KworI2lmICFDT01QSUxFUihHQ0NfQ09NUEFUSUJMRSkKKworLy8gVGhlc2UgbWFrZXMgdGhlIGFy
Z3VtZW50IG9wYXF1ZSBmcm9tIHRoZSBjb21waWxlci4KKworTkVWRVJfSU5MSU5FIHZvaWQgZW5z
dXJlU3RpbGxBbGl2ZUhlcmUodWludDY0X3QpCit7Cit9CisKK05FVkVSX0lOTElORSB2b2lkIGVu
c3VyZVN0aWxsQWxpdmVIZXJlKGNvbnN0IHZvaWQqKQoreworfQorCisjZW5kaWYgLy8gIUNPTVBJ
TEVSKEdDQ19DT01QQVRJQkxFKQorCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vuc3VyZVN0aWxsQWxpdmVIZXJlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRW5zdXJlU3RpbGxBbGl2ZUhlcmUuaAko
bm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FbnN1cmVTdGls
bEFsaXZlSGVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNw
YWNlIEpTQyB7CisKKyNpZiBDT01QSUxFUihHQ0NfQ09NUEFUSUJMRSkKKworQUxXQVlTX0lOTElO
RSB2b2lkIGVuc3VyZVN0aWxsQWxpdmVIZXJlKHVpbnQ2NF90IHZhbHVlKQoreworICAgIGFzbSB2
b2xhdGlsZSAoIiIgOiA6ICJyIih2YWx1ZSkgOiAibWVtb3J5Iik7Cit9CisKK0FMV0FZU19JTkxJ
TkUgdm9pZCBlbnN1cmVTdGlsbEFsaXZlSGVyZShjb25zdCB2b2lkKiBwb2ludGVyKQoreworICAg
IGFzbSB2b2xhdGlsZSAoIiIgOiA6ICJyIihwb2ludGVyKSA6ICJtZW1vcnkiKTsKK30KKworI2Vs
c2UKKworSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBlbnN1cmVTdGlsbEFsaXZlSGVyZSh1aW50NjRf
dCB2YWx1ZSk7CitKU19FWFBPUlRfUFJJVkFURSB2b2lkIGVuc3VyZVN0aWxsQWxpdmVIZXJlKGNv
bnN0IHZvaWQqKTsKKworI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAJKHJldmlzaW9u
IDI1OTU0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBDb3B5cmlnaHQgKEMp
IDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAo
QykgMjAwMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmln
aHQgKEMpIDIwMDMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdl
bmVyYWwgUHVibGljCkBAIC0yMyw2ICsyMyw3IEBACiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIK
ICNpbmNsdWRlICJJbmxpbmVDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJJbnRlZ3JpdHlJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU1Njb3BlLmgiCiAjaW5j
bHVkZSAiSlNDSW5saW5lcy5oIgpAQCAtMTM5LDYgKzE0MCw3IEBAIFN0cmluZyBFcnJvckluc3Rh
bmNlOjpzYW5pdGl6ZWRUb1N0cmluZygKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIEludGVn
cml0eTo6YXVkaXRTdHJ1Y3R1cmVJRCh2bSwgc3RydWN0dXJlSUQoKSk7CiAKICAgICBKU1ZhbHVl
IG5hbWVWYWx1ZTsKICAgICBhdXRvIG5hbWVQcm9wZXJ0TmFtZSA9IHZtLnByb3BlcnR5TmFtZXMt
Pm5hbWU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlw
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQ
cm90b3R5cGUuY3BwCShyZXZpc2lvbiAyNTk1NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBA
CiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtk
ZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTIyLDYgKzIyLDcgQEAKICNp
bmNsdWRlICJFcnJvclByb3RvdHlwZS5oIgogCiAjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRl
ICJJbnRlZ3JpdHlJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUg
IkpTU3RyaW5nSW5saW5lcy5oIgogI2luY2x1ZGUgIk9iamVjdFByb3RvdHlwZS5oIgpAQCAtODIs
NiArODMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGVycm9yUHJvdG9GCiAgICAg
aWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7CiAgICAgSlNPYmplY3QqIHRoaXNPYmogPSBhc09iamVj
dCh0aGlzVmFsdWUpOworICAgIEludGVncml0eTo6YXVkaXRTdHJ1Y3R1cmVJRCh2bSwgdGhpc09i
ai0+c3RydWN0dXJlSUQoKSk7CiAKICAgICAvLyBHdWFyZCBhZ2FpbnN0IHJlY3Vyc2lvbiEKICAg
ICBTdHJpbmdSZWN1cnNpb25DaGVja2VyIGNoZWNrZXIoZ2xvYmFsT2JqZWN0LCB0aGlzT2JqKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblBy
b3RvdHlwZS5jcHAJKHJldmlzaW9uIDI1OTU0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYg
QEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0ZW5A
a2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMjUsNiArMjUsNyBAQAog
I2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgogI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAi
R2V0dGVyU2V0dGVyLmgiCisjaW5jbHVkZSAiSW50ZWdyaXR5SW5saW5lcy5oIgogI2luY2x1ZGUg
IkpTQXN5bmNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJK
U0Z1bmN0aW9uLmgiCkBAIC04NCw2ICs4NSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZnVuY3Rpb25Qcm8KICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCk7CiAgICAgaWYgKHRoaXNWYWx1ZS5pbmhlcml0czxKU0Z1bmN0aW9uPih2bSkpIHsKICAg
ICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KHRoaXNWYWx1
ZSk7CisgICAgICAgIEludGVncml0eTo6YXVkaXRTdHJ1Y3R1cmVJRCh2bSwgZnVuY3Rpb24tPnN0
cnVjdHVyZUlEKCkpOwogICAgICAgICBpZiAoZnVuY3Rpb24tPmlzSG9zdE9yQnVpbHRpbkZ1bmN0
aW9uKCkpCiAgICAgICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVu
Y29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGdsb2JhbE9iamVjdCwgImZ1bmN0aW9uICIsIGZ1
bmN0aW9uLT5uYW1lKHZtKSwgIigpIHtcbiAgICBbbmF0aXZlIGNvZGVdXG59IikpKTsKIApAQCAt
MTQwLDExICsxNDIsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblBy
bwogCiAgICAgaWYgKHRoaXNWYWx1ZS5pbmhlcml0czxJbnRlcm5hbEZ1bmN0aW9uPih2bSkpIHsK
ICAgICAgICAgSW50ZXJuYWxGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0Nhc3Q8SW50ZXJuYWxGdW5j
dGlvbio+KHRoaXNWYWx1ZSk7CisgICAgICAgIEludGVncml0eTo6YXVkaXRTdHJ1Y3R1cmVJRCh2
bSwgZnVuY3Rpb24tPnN0cnVjdHVyZUlEKCkpOwogICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGdsb2JhbE9iamVj
dCwgImZ1bmN0aW9uICIsIGZ1bmN0aW9uLT5uYW1lKCksICIoKSB7XG4gICAgW25hdGl2ZSBjb2Rl
XVxufSIpKSk7CiAgICAgfQogCiAgICAgaWYgKHRoaXNWYWx1ZS5pc09iamVjdCgpKSB7CiAgICAg
ICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdCh0aGlzVmFsdWUpOworICAgICAgICBJbnRl
Z3JpdHk6OmF1ZGl0U3RydWN0dXJlSUQodm0sIG9iamVjdC0+c3RydWN0dXJlSUQoKSk7CiAgICAg
ICAgIGlmIChvYmplY3QtPmlzRnVuY3Rpb24odm0pKQogICAgICAgICAgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhnbG9i
YWxPYmplY3QsICJmdW5jdGlvbiAiLCBvYmplY3QtPmNsYXNzSW5mbyh2bSktPmNsYXNzTmFtZSwg
IigpIHtcbiAgICBbbmF0aXZlIGNvZGVdXG59IikpKTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAJKHJldmlzaW9uIDI1OTU0MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NyArMSw3IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRlbiAo
cG9ydGVuQGtkZS5vcmcpCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtA
cG9zdC5jb20pCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwMy0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yNSw2ICsyNSw3IEBA
CiAKICNpbmNsdWRlICJBcnJheUJ1ZmZlclZpZXcuaCIKICNpbmNsdWRlICJCbG9ja0RpcmVjdG9y
eUlubGluZXMuaCIKKyNpbmNsdWRlICJJbnRlZ3JpdHlJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSXNv
U3Vic3BhY2VJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpT
Q2FzdC5oIgpAQCAtMTkxLDYgKzE5Miw3IEBAIGRvdWJsZSBKU0NlbGw6OnRvTnVtYmVyKEpTR2xv
YmFsT2JqZWN0KiAKIAogSlNPYmplY3QqIEpTQ2VsbDo6dG9PYmplY3RTbG93KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiB7CisgICAgSW50ZWdyaXR5OjphdWRpdFN0cnVjdHVy
ZUlEKGdsb2JhbE9iamVjdC0+dm0oKSwgc3RydWN0dXJlSUQoKSk7CiAgICAgQVNTRVJUKCFpc09i
amVjdCgpKTsKICAgICBpZiAoaXNTdHJpbmcoKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGNvbnN0IEpTU3RyaW5nKj4odGhpcyktPnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAJ
KHJldmlzaW9uIDI1OTU0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJl
clByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENv
cHlyaWdodCAoQykgMTk5OS0yMDAwLDIwMDMgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykK
LSAqICBDb3B5cmlnaHQgKEMpIDIwMDctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA3LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMjQsNiArMjQsNyBAQAogCiAjaW5jbHVk
ZSAiQmlnSW50ZWdlci5oIgogI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSW50ZWdyaXR5
SW5saW5lcy5oIgogI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXQuaCIKICNpbmNsdWRlICJJbnRs
T2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgpAQCAtOTgsNiArOTksNyBAQCBzdGF0
aWMgQUxXQVlTX0lOTElORSBib29sIHRvVGhpc051bWJlcihWCiAgICAgfQogCiAgICAgaWYgKGF1
dG8qIG51bWJlck9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8TnVtYmVyT2JqZWN0Kj4odm0sIHRoaXNW
YWx1ZSkpIHsKKyAgICAgICAgSW50ZWdyaXR5OjphdWRpdFN0cnVjdHVyZUlEKHZtLCBudW1iZXJP
YmplY3QtPnN0cnVjdHVyZUlEKCkpOwogICAgICAgICB4ID0gbnVtYmVyT2JqZWN0LT5pbnRlcm5h
bFZhbHVlKCkuYXNOdW1iZXIoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3Bw
CShyZXZpc2lvbiAyNTk1NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmpl
Y3RQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqICBD
b3B5cmlnaHQgKEMpIDE5OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICog
IENvcHlyaWdodCAoQykgMjAwOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqICBDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSAiRXJy
b3IuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJIYXNPd25Qcm9wZXJ0
eUNhY2hlLmgiCisjaW5jbHVkZSAiSW50ZWdyaXR5SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRnVu
Y3Rpb24uaCIKICNpbmNsdWRlICJKU1N0cmluZy5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIK
QEAgLTg0LDYgKzg1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RQcm90
bwogICAgIEpTT2JqZWN0KiB2YWx1ZU9iaiA9IHRoaXNWYWx1ZS50b09iamVjdChnbG9iYWxPYmpl
Y3QpOwogICAgIGlmIChVTkxJS0VMWSghdmFsdWVPYmopKQogICAgICAgICByZXR1cm4gZW5jb2Rl
ZEpTVmFsdWUoKTsKKyAgICBJbnRlZ3JpdHk6OmF1ZGl0U3RydWN0dXJlSUQoZ2xvYmFsT2JqZWN0
LT52bSgpLCB2YWx1ZU9iai0+c3RydWN0dXJlSUQoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh2YWx1ZU9iaik7CiB9CiAKQEAgLTMyMSw2ICszMjMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG9iamVjdFByb3RvCiAgICAgaWYgKCF0aGlzT2JqZWN0KQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCisgICAgSW50ZWdyaXR5Ojph
dWRpdFN0cnVjdHVyZUlEKHZtLCB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmVJRCgpKTsKICAgICBhdXRv
IHJlc3VsdCA9IHRoaXNPYmplY3QtPnN0cnVjdHVyZSh2bSktPm9iamVjdFRvU3RyaW5nVmFsdWUo
KTsKICAgICBpZiAocmVzdWx0KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3Vs
dCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFBy
b3RvdHlwZS5jcHAJKHJldmlzaW9uIDI1OTU0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBA
CiAvKgogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAwIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtk
ZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMTkgQXBwbGUgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwMy0yMDIwIEFwcGxlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTI0LDYgKzI0LDcgQEAKICNp
bmNsdWRlICJBcnJheVByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgogI2lu
Y2x1ZGUgIkVycm9yLmgiCisjaW5jbHVkZSAiSW50ZWdyaXR5SW5saW5lcy5oIgogI2luY2x1ZGUg
IkpTQXJyYXkuaCIKICNpbmNsdWRlICJKU0NCdWlsdGlucy5oIgogI2luY2x1ZGUgIkpTQ0lubGlu
ZXMuaCIKQEAgLTIxNyw2ICsyMTgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJl
Z0V4cFByb3RvCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUpOwogCiAgICAgSlNPYmplY3QqIHRoaXNPYmplY3QgPSBhc09iamVjdCh0aGlzVmFsdWUp
OworICAgIEludGVncml0eTo6YXVkaXRTdHJ1Y3R1cmVJRCh2bSwgdGhpc09iamVjdC0+c3RydWN0
dXJlSUQoKSk7CiAKICAgICBTdHJpbmdSZWN1cnNpb25DaGVja2VyIGNoZWNrZXIoZ2xvYmFsT2Jq
ZWN0LCB0aGlzT2JqZWN0KTsKICAgICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24o
KSB8fCBjaGVja2VyLmVhcmx5UmV0dXJuVmFsdWUoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAJKHJldmlzaW9uIDI1OTU0
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMTk5
OS0yMDAxIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCi0gKiAgQ29weXJpZ2h0IChDKSAy
MDA0LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENvcHlyaWdodCAo
QykgMjAwNC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBDb3B5cmln
aHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxlLCBJbmMuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDE1IEpv
cmRhbiBIYXJiYW5kIChsamhhcmJAZ21haWwuY29tKQogICoKQEAgLTI5LDYgKzI5LDcgQEAKICNp
bmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUgIkV4ZWN1dGFibGVCYXNlSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIkZyYW1lVHJhY2Vycy5oIgorI2luY2x1ZGUgIkludGVncml0eUlubGluZXMuaCIKICNp
bmNsdWRlICJJbnRlcnByZXRlcklubGluZXMuaCIKICNpbmNsdWRlICJJbnRsQ29sbGF0b3IuaCIK
ICNpbmNsdWRlICJJbnRsT2JqZWN0LmgiCkBAIC05NzksMTAgKzk4MCwxMSBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodGhpc1ZhbHVlKTsKIAogICAgIGF1dG8qIHN0cmluZ09iamVjdCA9IGpzRHluYW1pY0Nh
c3Q8U3RyaW5nT2JqZWN0Kj4odm0sIHRoaXNWYWx1ZSk7Ci0gICAgaWYgKHN0cmluZ09iamVjdCkK
LSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzdHJpbmdPYmplY3QtPmludGVybmFsVmFs
dWUoKSk7CisgICAgaWYgKCFzdHJpbmdPYmplY3QpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOwogCi0gICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7CisgICAgSW50ZWdyaXR5OjphdWRpdFN0cnVjdHVyZUlE
KHZtLCBzdHJpbmdPYmplY3QtPnN0cnVjdHVyZUlEKCkpOworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoc3RyaW5nT2JqZWN0LT5pbnRlcm5hbFZhbHVlKCkpOwogfQogCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0NoYXJBdChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlEVGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJRFRhYmxlLmgJKHJldmlzaW9uIDI1OTU0MSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlEVGFibGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMt
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRl
ICJFbnN1cmVTdGlsbEFsaXZlSGVyZS5oIgogI2luY2x1ZGUgIlVudXNlZFBvaW50ZXIuaCIKICNp
bmNsdWRlIDx3dGYvVW5pcXVlQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC05
MSw3ICs5Miw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQqKiBiYXNlKCkgeyByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDx2b2lkKio+KCZtX3RhYmxlKTsgfQogCi0gICAgYm9vbCBpc1ZhbGlkKFN0cnVj
dHVyZUlEKTsKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgdmFsaWRhdGUoU3RydWN0dXJlSUQpOwor
CiAgICAgU3RydWN0dXJlKiBnZXQoU3RydWN0dXJlSUQpOwogICAgIHZvaWQgZGVhbGxvY2F0ZUlE
KFN0cnVjdHVyZSosIFN0cnVjdHVyZUlEKTsKICAgICBTdHJ1Y3R1cmVJRCBhbGxvY2F0ZUlEKFN0
cnVjdHVyZSopOwpAQCAtMTc2LDE5ICsxNzgsMTMgQEAgaW5saW5lIFN0cnVjdHVyZSogU3RydWN0
dXJlSURUYWJsZTo6Z2V0KAogICAgIHJldHVybiBkZWNvZGUodGFibGUoKVtzdHJ1Y3R1cmVJbmRl
eF0uZW5jb2RlZFN0cnVjdHVyZUJpdHMsIHN0cnVjdHVyZUlEKTsKIH0KIAotaW5saW5lIGJvb2wg
U3RydWN0dXJlSURUYWJsZTo6aXNWYWxpZChTdHJ1Y3R1cmVJRCBzdHJ1Y3R1cmVJRCkKK0FMV0FZ
U19JTkxJTkUgdm9pZCBTdHJ1Y3R1cmVJRFRhYmxlOjp2YWxpZGF0ZShTdHJ1Y3R1cmVJRCBzdHJ1
Y3R1cmVJRCkKIHsKLSAgICBpZiAoIXN0cnVjdHVyZUlEKQotICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgdWludDMyX3Qgc3RydWN0dXJlSW5kZXggPSBzdHJ1Y3R1cmVJRCA+PiBzX251bWJlck9m
RW50cm9weUJpdHM7Ci0gICAgaWYgKHN0cnVjdHVyZUluZGV4ID49IG1fY2FwYWNpdHkpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSNpZiBDUFUoQUREUkVTUzY0KQogICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gZGVjb2RlKHRhYmxlKClbc3RydWN0dXJlSW5kZXhdLmVuY29kZWRTdHJ1Y3R1cmVC
aXRzLCBzdHJ1Y3R1cmVJRCk7Ci0gICAgaWYgKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihz
dHJ1Y3R1cmUpID4+IHNfZW50cm9weUJpdHNTaGlmdEZvclN0cnVjdHVyZVBvaW50ZXIpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgotICAgIHJldHVybiB0cnVlOworICAgIFJFTEVBU0Vf
QVNTRVJUKHN0cnVjdHVyZUluZGV4IDwgbV9jYXBhY2l0eSk7CisgICAgdWludDY0X3QgdmFsdWUg
PSAqYml0d2lzZV9jYXN0PHVpbnQ2NF90Kj4oc3RydWN0dXJlKTsKKyAgICBlbnN1cmVTdGlsbEFs
aXZlSGVyZSh2YWx1ZSk7CiB9CiAKICNlbHNlIC8vIG5vdCBVU0UoSlNWQUxVRTY0KQpAQCAtMjA3
LDYgKzIwMyw3IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgdm9pZCBmbHVzaE9sZFRhYmxlcygp
IHsgfQorICAgIHZvaWQgdmFsaWRhdGUoU3RydWN0dXJlSUQpIHsgfQogfTsKIAogI2VuZGlmIC8v
IG5vdCBVU0UoSlNWQUxVRTY0KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3ltYm9sUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TeW1ib2xQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAyNTk1NDEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2Ug
U3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMjgs
NiArMjgsNyBAQAogI2luY2x1ZGUgIlN5bWJvbFByb3RvdHlwZS5oIgogCiAjaW5jbHVkZSAiRXJy
b3IuaCIKKyNpbmNsdWRlICJJbnRlZ3JpdHlJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5l
cy5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCiAjaW5jbHVkZSAiU3ltYm9sT2JqZWN0LmgiCkBA
IC05Nyw2ICs5OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3ltYm9sUHJvdG8K
ICAgICBpZiAoIXN5bWJvbCkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgU3ltYm9sRGVzY3JpcHRpb25UeXBlRXJyb3IpOwogICAgIHNjb3BlLnJl
bGVhc2UoKTsKKyAgICBJbnRlZ3JpdHk6OmF1ZGl0U3RydWN0dXJlSUQodm0sIHN5bWJvbC0+c3Ry
dWN0dXJlSUQoKSk7CiAgICAgY29uc3QgYXV0byBkZXNjcmlwdGlvbiA9IHN5bWJvbC0+ZGVzY3Jp
cHRpb24oKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGRlc2NyaXB0aW9uLmlzTnVsbCgp
ID8ganNVbmRlZmluZWQoKSA6IGpzU3RyaW5nKHZtLCBkZXNjcmlwdGlvbikpOwogfQpAQCAtMTA5
LDYgKzExMSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3ltYm9sUHJvdG8KICAg
ICBTeW1ib2wqIHN5bWJvbCA9IHRyeUV4dHJhY3RTeW1ib2wodm0sIGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkpOwogICAgIGlmICghc3ltYm9sKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCBTeW1ib2xUb1N0cmluZ1R5cGVFcnJvcik7CisgICAgSW50
ZWdyaXR5OjphdWRpdFN0cnVjdHVyZUlEKHZtLCBzeW1ib2wtPnN0cnVjdHVyZUlEKCkpOwogICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0
cmluZyh2bSwgc3ltYm9sLT5kZXNjcmlwdGl2ZVN0cmluZygpKSkpOwogfQogCkBAIC0xMjEsNiAr
MTI0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzeW1ib2xQcm90bwogICAgIGlm
ICghc3ltYm9sKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCBTeW1ib2xWYWx1ZU9mVHlwZUVycm9yKTsKIAorICAgIEludGVncml0eTo6YXVkaXRT
dHJ1Y3R1cmVJRCh2bSwgc3ltYm9sLT5zdHJ1Y3R1cmVJRCgpKTsKICAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShzeW1ib2wpKTsKIH0KIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rvb2xzL0ludGVncml0eS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS90b29scy9JbnRlZ3JpdHkuaAkocmV2aXNpb24gMjU5NTQxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0ludGVncml0eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDYg
KzMyLDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBKU0NlbGw7CitjbGFzcyBTdHJ1Y3R1
cmVJRFRhYmxlOwogY2xhc3MgVk07CiAKIG5hbWVzcGFjZSBJbnRlZ3JpdHkgewpAQCAtOTksNiAr
MTAwLDkgQEAgQUxXQVlTX0lOTElORSB2b2lkIGF1ZGl0Q2VsbChWTSYgdm0sIEpTVgogICAgICAg
ICBhdWRpdENlbGw8YXVkaXRMZXZlbD4odm0sIHZhbHVlLmFzQ2VsbCgpKTsKIH0KIAorQUxXQVlT
X0lOTElORSB2b2lkIGF1ZGl0U3RydWN0dXJlSUQoU3RydWN0dXJlSURUYWJsZSYsIFN0cnVjdHVy
ZUlEKTsKK0FMV0FZU19JTkxJTkUgdm9pZCBhdWRpdFN0cnVjdHVyZUlEKFZNJiwgU3RydWN0dXJl
SUQpOworCiB9IC8vIG5hbWVzcGFjZSBJbnRlZ3JpdHkKIAogfSAvLyBuYW1lc3BhY2UgSlNDCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSW50ZWdyaXR5SW5saW5lcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9JbnRlZ3JpdHlJbmxpbmVzLmgJ
KHJldmlzaW9uIDI1OTU0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9JbnRlZ3Jp
dHlJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxOS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzMsNSArNzMsMTUgQEAgQUxXQVlTX0lOTElORSB2
b2lkIGF1ZGl0Q2VsbFJhbmRvbWx5KFZNJgogICAgICAgICBhdWRpdENlbGxGdWxseSh2bSwgY2Vs
bCk7CiB9CiAKK0FMV0FZU19JTkxJTkUgdm9pZCBhdWRpdFN0cnVjdHVyZUlEKFN0cnVjdHVyZUlE
VGFibGUmIHRhYmxlLCBTdHJ1Y3R1cmVJRCBpZCkKK3sKKyAgICB0YWJsZS52YWxpZGF0ZShpZCk7
Cit9CisKK0FMV0FZU19JTkxJTkUgdm9pZCBhdWRpdFN0cnVjdHVyZUlEKFZNJiB2bSwgU3RydWN0
dXJlSUQgaWQpCit7CisgICAgYXVkaXRTdHJ1Y3R1cmVJRCh2bS5oZWFwLnN0cnVjdHVyZUlEVGFi
bGUoKSwgaWQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBJbnRlZ3JpdHkKIH0gLy8gbmFtZXNwYWNl
IEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlHbG9i
YWxQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5R2xvYmFsUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjU5NTQxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlHbG9iYWxQcm90b3R5cGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTktMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkZ1bmN0aW9uUHJv
dG90eXBlLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCisjaW5jbHVkZSAiSW50ZWdyaXR5
SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU1dlYkFzc2Vt
Ymx5R2xvYmFsLmgiCiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseUhlbHBlcnMuaCIKQEAgLTYxLDYg
KzYyLDcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNXZWJBc3NlbWJseUdsb2JhbAogICAgICAg
ICAgICAgY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgImV4cGVjdGVkIHx0aGlzfCB2YWx1
ZSB0byBiZSBhbiBpbnN0YW5jZSBvZiBXZWJBc3NlbWJseS5HbG9iYWwiX3MpKTsKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgfQorICAgIEludGVncml0eTo6YXVkaXRTdHJ1Y3R1cmVJRCh2
bSwgcmVzdWx0LT5zdHJ1Y3R1cmVJRCgpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>