<?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>152185</bug_id>
          
          <creation_ts>2015-12-11 13:32:01 -0800</creation_ts>
          <short_desc>Refactoring to reduce potential cut-paste errors with the FTL ICs.</short_desc>
          <delta_ts>2015-12-11 15:03:12 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1148524</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-12-11 13:32:01 -0800</bug_when>
    <thetext>Patch coming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148531</commentid>
    <comment_count>1</comment_count>
      <attachid>267185</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-12-11 13:49:29 -0800</bug_when>
    <thetext>Created attachment 267185
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148532</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-11 13:51:00 -0800</bug_when>
    <thetext>Attachment 267185 did not pass style-queue:


ERROR: Source/JavaScriptCore/ftl/FTLInlineCacheDescriptor.h:92:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/ftl/FTLInlineCacheDescriptor.h:150:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/ftl/FTLInlineCacheDescriptor.h:243:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
Total errors found: 3 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148549</commentid>
    <comment_count>3</comment_count>
      <attachid>267190</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-12-11 14:40:33 -0800</bug_when>
    <thetext>Created attachment 267190
patch 2: revert unneeded part where I pushed m_name down to InlineCacheDescriptor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148557</commentid>
    <comment_count>4</comment_count>
      <attachid>267190</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-12-11 14:59:43 -0800</bug_when>
    <thetext>Comment on attachment 267190
patch 2: revert unneeded part where I pushed m_name down to InlineCacheDescriptor.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148560</commentid>
    <comment_count>5</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-12-11 15:03:12 -0800</bug_when>
    <thetext>Thanks for the review.  Landed in r193985: &lt;http://trac.webkit.org/r193985&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267185</attachid>
            <date>2015-12-11 13:49:29 -0800</date>
            <delta_ts>2015-12-11 14:40:33 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-152185.patch</filename>
            <type>text/plain</type>
            <size>41797</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTkzOTczKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgyIEBA
CisyMDE1LTEyLTExICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZWZhY3RvcmluZyB0byByZWR1Y2UgcG90ZW50aWFsIGN1dC1wYXN0ZSBlcnJvcnMgd2l0aCB0aGUg
RlRMIElDcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1MjE4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAg
ICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJz
OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisK
KyAgICAgICAgKiBmdGwvRlRMQ29tcGlsZS5jcHA6CisgICAgICAgIC0gSUNzIG5vdyBoYXZlIHRo
ZWlyIG93biBuYW1lcy4gIEdldEJ5SWQgYW5kIFB1dEJ5SUQgZmFzdCBwYXRoIElDcyBubyBsb25n
ZXIganVzdAorICAgICAgICAgIHNheSAiaW5saW5lIGNhY2hlIGZhc3QgcGF0aCIuCisKKyAgICAg
ICAgKiBmdGwvRlRMQ29tcGlsZUJpbmFyeU9wLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpnZW5l
cmF0ZUJpbmFyeUFyaXRoT3BGYXN0UGF0aCk6CisgICAgICAgIC0gRml4ZWQgYW4gaW5kZW50YXRp
b24uCisKKyAgICAgICAgKiBmdGwvRlRMSW5saW5lQ2FjaGVEZXNjcmlwdG9yLmg6CisgICAgICAg
IChKU0M6OkZUTDo6SW5saW5lQ2FjaGVEZXNjcmlwdG9yOjpJbmxpbmVDYWNoZURlc2NyaXB0b3Ip
OgorICAgICAgICAoSlNDOjpGVEw6OklubGluZUNhY2hlRGVzY3JpcHRvcjo6bmFtZSk6CisgICAg
ICAgIChKU0M6OkZUTDo6R2V0QnlJZERlc2NyaXB0b3I6OkdldEJ5SWREZXNjcmlwdG9yKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpQdXRCeUlkRGVzY3JpcHRvcjo6UHV0QnlJZERlc2NyaXB0b3IpOgor
ICAgICAgICAoSlNDOjpGVEw6OkNoZWNrSW5EZXNjcmlwdG9yOjpDaGVja0luRGVzY3JpcHRvcik6
CisgICAgICAgIChKU0M6OkZUTDo6QmluYXJ5T3BEZXNjcmlwdG9yOjpub2RlVHlwZSk6CisgICAg
ICAgIChKU0M6OkZUTDo6QmluYXJ5T3BEZXNjcmlwdG9yOjpzaXplKToKKyAgICAgICAgKEpTQzo6
RlRMOjpCaW5hcnlPcERlc2NyaXB0b3I6OnNsb3dQYXRoRnVuY3Rpb24pOgorICAgICAgICAoSlND
OjpGVEw6OkJpbmFyeU9wRGVzY3JpcHRvcjo6bGVmdE9wZXJhbmQpOgorICAgICAgICAoSlNDOjpG
VEw6OkJpbmFyeU9wRGVzY3JpcHRvcjo6QmluYXJ5T3BEZXNjcmlwdG9yKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpBcml0aERpdkRlc2NyaXB0b3I6OkFyaXRoRGl2RGVzY3JpcHRvcik6CisgICAgICAg
IChKU0M6OkZUTDo6QXJpdGhEaXZEZXNjcmlwdG9yOjppY1NpemUpOgorICAgICAgICAoSlNDOjpG
VEw6OkFyaXRoRGl2RGVzY3JpcHRvcjo6bm9kZVR5cGUpOgorICAgICAgICAoSlNDOjpGVEw6OkFy
aXRoRGl2RGVzY3JpcHRvcjo6b3BOYW1lKToKKyAgICAgICAgKEpTQzo6RlRMOjpBcml0aERpdkRl
c2NyaXB0b3I6OnNsb3dQYXRoRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpGVEw6OkFyaXRoRGl2
RGVzY3JpcHRvcjo6bm9uTnVtYmVyU2xvd1BhdGhGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkZU
TDo6QXJpdGhNdWxEZXNjcmlwdG9yOjpBcml0aE11bERlc2NyaXB0b3IpOgorICAgICAgICAoSlND
OjpGVEw6OkFyaXRoTXVsRGVzY3JpcHRvcjo6aWNTaXplKToKKyAgICAgICAgKEpTQzo6RlRMOjpB
cml0aE11bERlc2NyaXB0b3I6Om5vZGVUeXBlKToKKyAgICAgICAgKEpTQzo6RlRMOjpBcml0aE11
bERlc2NyaXB0b3I6Om9wTmFtZSk6CisgICAgICAgIChKU0M6OkZUTDo6QXJpdGhNdWxEZXNjcmlw
dG9yOjpzbG93UGF0aEZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6RlRMOjpBcml0aE11bERlc2Ny
aXB0b3I6Om5vbk51bWJlclNsb3dQYXRoRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpGVEw6OkFy
aXRoU3ViRGVzY3JpcHRvcjo6QXJpdGhTdWJEZXNjcmlwdG9yKToKKyAgICAgICAgKEpTQzo6RlRM
OjpBcml0aFN1YkRlc2NyaXB0b3I6OmljU2l6ZSk6CisgICAgICAgIChKU0M6OkZUTDo6QXJpdGhT
dWJEZXNjcmlwdG9yOjpub2RlVHlwZSk6CisgICAgICAgIChKU0M6OkZUTDo6QXJpdGhTdWJEZXNj
cmlwdG9yOjpvcE5hbWUpOgorICAgICAgICAoSlNDOjpGVEw6OkFyaXRoU3ViRGVzY3JpcHRvcjo6
c2xvd1BhdGhGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkZUTDo6QXJpdGhTdWJEZXNjcmlwdG9y
Ojpub25OdW1iZXJTbG93UGF0aEZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6RlRMOjpWYWx1ZUFk
ZERlc2NyaXB0b3I6OlZhbHVlQWRkRGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6OkZUTDo6VmFs
dWVBZGREZXNjcmlwdG9yOjppY1NpemUpOgorICAgICAgICAoSlNDOjpGVEw6OlZhbHVlQWRkRGVz
Y3JpcHRvcjo6bm9kZVR5cGUpOgorICAgICAgICAoSlNDOjpGVEw6OlZhbHVlQWRkRGVzY3JpcHRv
cjo6b3BOYW1lKToKKyAgICAgICAgKEpTQzo6RlRMOjpWYWx1ZUFkZERlc2NyaXB0b3I6OnNsb3dQ
YXRoRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpGVEw6OlZhbHVlQWRkRGVzY3JpcHRvcjo6bm9u
TnVtYmVyU2xvd1BhdGhGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkZUTDo6TGF6eVNsb3dQYXRo
RGVzY3JpcHRvcjo6TGF6eVNsb3dQYXRoRGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6OkZUTDo6
UHJvYmVEZXNjcmlwdG9yOjpQcm9iZURlc2NyaXB0b3IpOgorICAgICAgICAoSlNDOjpGVEw6OkJp
bmFyeU9wRGVzY3JpcHRvcjo6bmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZUTDo6Qmlu
YXJ5T3BEZXNjcmlwdG9yOjpmYXN0UGF0aElDTmFtZSk6IERlbGV0ZWQuCisgICAgICAgICogZnRs
L0ZUTElubGluZUNhY2hlRGVzY3JpcHRvcklubGluZXMuaDogUmVtb3ZlZC4KKyAgICAgICAgLSBH
YXZlIElDIGRlc2NyaXB0b3JzIHRoZWlyIG93biBuYW1lcy4KKyAgICAgICAgLSBDb25zb2xpZGF0
ZSB0aGUgbnVtYmVyIG9mIHBsYWNlcyB3aGVyZSB3ZSBoYXZlIHRvIGZpbGwgaW4gYSBkYXRhIGFi
b3V0IG5ldworICAgICAgICAgIHNuaXBwZXQgSUNzLiAgSXQgaXMgYWxsIGRvbmUgaW4gRlRMSW5s
aW5lQ2FjaGVEZXNjcmlwdG9yLmggbm93LiAgIAorCisgICAgICAgICogZnRsL0ZUTEpJVEZpbmFs
aXplci5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6SklURmluYWxpemVyOjpmaW5hbGl6ZUZ1bmN0
aW9uKToKKworICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvTExWTS5jcHA6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZVVudHlwZWRCaW5hcnlPcCk6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZVZhbHVlQWRkKToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlQXJpdGhBZGRP
clN1Yik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUFy
aXRoTXVsKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjpjb21waWxl
QXJpdGhEaXYpOgorICAgICAgICAtIEludHJvZHVjZWQgYSBjb21waWxlVW50eXBlZEJpbmFyeU9w
KCkgdGVtcGxhdGUgYW5kIHVzZSB0aGF0IGF0IGFsbCB0aGUgRlRMCisgICAgICAgICAgcGxhY2Vz
IHRoYXQgbmVlZCB0byB1c2UgYSBzbmlwcGV0LiAgVGhpcyByZWR1Y2VzIHRoZSBhbW91bnQgb2Yg
Y3V0IGFuZCBwYXN0ZQorICAgICAgICAgIGNvZGUuCisKKyAgICAgICAgKiBmdGwvRlRMU3RhdGUu
aDoKKyAgICAgICAgLSBSZW1vdmVkIGEgYmFkICNpbmNsdWRlLgorCiAyMDE1LTEyLTExICBKb3Nl
cGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgY2hlY2stZm9yLWlu
YXBwcm9wcmlhdGUtb2JqYy1jbGFzcy1uYW1lcyBzaG91bGQgY2hlY2sgYWxsIGNsYXNzIG5hbWVz
LCBub3QganVzdCBleHRlcm5hbGx5IHZpc2libGUgb25lcwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qCShyZXZpc2lvbiAxOTM5NjkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC0xMzE5LDcgKzEzMTksNiBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5cZnRsXEZUTEZvck9TUkVudHJ5SklUQ29kZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5cZnRsXEZUTEdlbmVyYXRlZEZ1bmN0aW9uLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxmdGxcRlRMSW5saW5lQ2FjaGVEZXNjcmlwdG9yLmgiIC8+Ci0gICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxmdGxcRlRMSW5saW5lQ2FjaGVEZXNjcmlwdG9ySW5saW5lcy5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZnRsXEZUTElubGluZUNhY2hlU2l6ZS5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZnRsXEZUTEludHJpbnNpY1JlcG9zaXRvcnku
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGZ0bFxGVExKSVRDb2RlLmgiIC8+Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJz
CShyZXZpc2lvbiAxOTM5NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMJKHdvcmtpbmcgY29weSkK
QEAgLTQyNTIsOSArNDI1Miw2IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxmdGxcRlRM
SW5saW5lQ2FjaGVEZXNjcmlwdG9yLmgiPgogICAgICAgPEZpbHRlcj5mdGw8L0ZpbHRlcj4KICAg
ICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGZ0bFxGVExJbmxpbmVD
YWNoZURlc2NyaXB0b3JJbmxpbmVzLmgiPgotICAgICAgPEZpbHRlcj5mdGw8L0ZpbHRlcj4KLSAg
ICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGZ0bFxGVExJbmxpbmVD
YWNoZVNpemUuaCI+CiAgICAgICA8RmlsdGVyPmZ0bDwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRl
PgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE5Mzk2OSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yMDAyLDcgKzIwMDIsNiBAQAogCQlGRTE4N0EwRDFD
MDMwRDVDMDAzOEJCQ0EgLyogSklURGl2R2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTE4N0EwQjFDMDIyOTIzMDAzOEJCQ0EgLyogSklU
RGl2R2VuZXJhdG9yLmggKi87IH07CiAJCUZFMTg3QTBFMUMwMzBENjQwMDM4QkJDQSAvKiBKSVRE
aXZHZW5lcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkUxODdBMEExQzAyMjkyMzAwMzhCQkNBIC8qIEpJVERpdkdlbmVyYXRvci5jcHAgKi87
IH07CiAJCUZFMTg3QTBGMUMwMzBENkMwMDM4QkJDQSAvKiBTbmlwcGV0T3BlcmFuZC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxODdBMEMxQzAyRUJB
NzAwMzhCQkNBIC8qIFNuaXBwZXRPcGVyYW5kLmggKi87IH07Ci0JCUZFMTg3QTE4MUMwRTEzREQw
MDM4QkJDQSAvKiBGVExJbmxpbmVDYWNoZURlc2NyaXB0b3JJbmxpbmVzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTE4N0ExNzFDMEUxM0M2MDAzOEJC
Q0EgLyogRlRMSW5saW5lQ2FjaGVEZXNjcmlwdG9ySW5saW5lcy5oICovOyB9OwogCQlGRTE4N0Ex
OTFDMEUxM0UzMDAzOEJCQ0EgLyogRlRMQ29tcGlsZUJpbmFyeU9wLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMTg3QTE1MUMwRTEzQzYwMDM4QkJD
QSAvKiBGVExDb21waWxlQmluYXJ5T3AuY3BwICovOyB9OwogCQlGRTE4N0ExQTFDMEUxM0U2MDAz
OEJCQ0EgLyogRlRMQ29tcGlsZUJpbmFyeU9wLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRTE4N0ExNjFDMEUxM0M2MDAzOEJCQ0EgLyogRlRMQ29tcGls
ZUJpbmFyeU9wLmggKi87IH07CiAJCUZFMUMwRkZEMUIxOTNFOTgwMEI1M0ZDQSAvKiBFeGNlcHRp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMUMw
RkZDMUIxOTNFOTgwMEI1M0ZDQSAvKiBFeGNlcHRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNDE5MCw3ICs0MTg5LDYgQEAKIAkJRkUxODdB
MEMxQzAyRUJBNzAwMzhCQkNBIC8qIFNuaXBwZXRPcGVyYW5kLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNuaXBwZXRPcGVyYW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUZFMTg3QTE1MUMwRTEzQzYwMDM4QkJDQSAvKiBGVExDb21waWxlQmluYXJ5T3AuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRlRMQ29tcGlsZUJpbmFyeU9w
LmNwcDsgcGF0aCA9IGZ0bC9GVExDb21waWxlQmluYXJ5T3AuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGRTE4N0ExNjFDMEUxM0M2MDAzOEJCQ0EgLyogRlRMQ29tcGlsZUJpbmFy
eU9wLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTENvbXBpbGVCaW5hcnlP
cC5oOyBwYXRoID0gZnRsL0ZUTENvbXBpbGVCaW5hcnlPcC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlGRTE4N0ExNzFDMEUxM0M2MDAzOEJCQ0EgLyogRlRMSW5saW5lQ2FjaGVEZXNj
cmlwdG9ySW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGVExJbmxp
bmVDYWNoZURlc2NyaXB0b3JJbmxpbmVzLmg7IHBhdGggPSBmdGwvRlRMSW5saW5lQ2FjaGVEZXNj
cmlwdG9ySW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTFDMEZGQzFC
MTkzRTk4MDBCNTNGQ0EgLyogRXhjZXB0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEV4Y2VwdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTFDMEZG
RTFCMTk0RkQxMDBCNTNGQ0EgLyogRXhjZXB0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEV4Y2VwdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUZFMjBDRTlCMTVGMDRBOTUwMERGMzQzMCAvKiBMTEludENMb29wLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50Q0xvb3AuY3BwOyBwYXRoID0gbGxpbnQv
TExJbnRDTG9vcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NTA4LDcgKzQ1
MDYsNiBAQAogCQkJCTBGRDhBMzE2MTdENTFGMjIwMENBMkM0MCAvKiBGVExGb3JPU1JFbnRyeUpJ
VENvZGUuaCAqLywKIAkJCQlBNzhBOTc3QzE3OTczOEQ1MDA5REY3NDQgLyogRlRMR2VuZXJhdGVk
RnVuY3Rpb24uaCAqLywKIAkJCQkwRjI1RjFBNzE4MTYzNUYzMDA1MjJGMzkgLyogRlRMSW5saW5l
Q2FjaGVEZXNjcmlwdG9yLmggKi8sCi0JCQkJRkUxODdBMTcxQzBFMTNDNjAwMzhCQkNBIC8qIEZU
TElubGluZUNhY2hlRGVzY3JpcHRvcklubGluZXMuaCAqLywKIAkJCQkwRjI1RjFBODE4MTYzNUYz
MDA1MjJGMzkgLyogRlRMSW5saW5lQ2FjaGVTaXplLmNwcCAqLywKIAkJCQkwRjI1RjFBOTE4MTYz
NUYzMDA1MjJGMzkgLyogRlRMSW5saW5lQ2FjaGVTaXplLmggKi8sCiAJCQkJMEZFQTBBMjYxNzA5
NjIzQjAwQkI3MjJDIC8qIEZUTEludHJpbnNpY1JlcG9zaXRvcnkuY3BwICovLApAQCAtNjk4Myw3
ICs2OTgwLDYgQEAKIAkJCQlDMkM4RDAyRDE0QTNDNkUwMDA1NzhFNjUgLyogQ29waWVkU3BhY2VJ
bmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjdDMTFBRDFCQzM4NjJDMDBDNzRDREIgLyog
Q29weUJhcnJpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNUE1MkQwMTdBREQ3MTcwMDhFQ0Iy
RCAvKiBDb3B5VG9rZW4uaCBpbiBIZWFkZXJzICovLAotCQkJCUZFMTg3QTE4MUMwRTEzREQwMDM4
QkJDQSAvKiBGVExJbmxpbmVDYWNoZURlc2NyaXB0b3JJbmxpbmVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQlDMjIzOUQxODE2MjYyQkREMDA1QUM1RkQgLyogQ29weVZpc2l0b3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUMyMjM5RDE5MTYyNjJCREQwMDVBQzVGRCAvKiBDb3B5VmlzaXRvcklubGluZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCUMyMThEMTQwMTY1NUNGRDUwMDYyQkI4MSAvKiBDb3B5V29y
a0xpc3QuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExDb21waWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TENvbXBpbGUuY3BwCShyZXZpc2lvbiAxOTM5NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTENvbXBpbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBACiAjaW5j
bHVkZSAiRlRMQ29tcGlsZUJpbmFyeU9wLmgiCiAjaW5jbHVkZSAiRlRMRXhjZXB0aW9uSGFuZGxl
ck1hbmFnZXIuaCIKICNpbmNsdWRlICJGVExFeGl0VGh1bmtHZW5lcmF0b3IuaCIKLSNpbmNsdWRl
ICJGVExJbmxpbmVDYWNoZURlc2NyaXB0b3JJbmxpbmVzLmgiCisjaW5jbHVkZSAiRlRMSW5saW5l
Q2FjaGVEZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiRlRMSW5saW5lQ2FjaGVTaXplLmgiCiAjaW5j
bHVkZSAiRlRMSklUQ29kZS5oIgogI2luY2x1ZGUgIkZUTFRodW5rcy5oIgpAQCAtMjM5LDcgKzIz
OSw3IEBAIHZvaWQgZ2VuZXJhdGVJQ0Zhc3RQYXRoKAogICAgICAgICBjaGFyKiBzdGFydE9mSUMg
PQogICAgICAgICAgICAgYml0d2lzZV9jYXN0PGNoYXIqPihnZW5lcmF0ZWRGdW5jdGlvbikgKyBy
ZWNvcmQuaW5zdHJ1Y3Rpb25PZmZzZXQ7CiAKLSAgICAgICAgZ2VuZXJhdGVJbmxpbmVJZlBvc3Np
YmxlT3V0T2ZMaW5lSWZOb3Qoc3RhdGUsIHZtLCBjb2RlQmxvY2ssIGZhc3RQYXRoSklULCBzdGFy
dE9mSUMsIHNpemVPZklDLCAiaW5saW5lIGNhY2hlIGZhc3QgcGF0aCIsIFsmXSAoTGlua0J1ZmZl
ciYgbGlua0J1ZmZlciwgQ0NhbGxIZWxwZXJzJiwgYm9vbCkgeworICAgICAgICBnZW5lcmF0ZUlu
bGluZUlmUG9zc2libGVPdXRPZkxpbmVJZk5vdChzdGF0ZSwgdm0sIGNvZGVCbG9jaywgZmFzdFBh
dGhKSVQsIHN0YXJ0T2ZJQywgc2l6ZU9mSUMsIGljLm5hbWUoKSwgWyZdIChMaW5rQnVmZmVyJiBs
aW5rQnVmZmVyLCBDQ2FsbEhlbHBlcnMmLCBib29sKSB7CiAgICAgICAgICAgICBzdGF0ZS5maW5h
bGl6ZXItPnNpZGVDb2RlTGlua0J1ZmZlci0+bGluayhpYy5tX3Nsb3dQYXRoRG9uZVtpXSwKICAg
ICAgICAgICAgICAgICBDb2RlTG9jYXRpb25MYWJlbChzdGFydE9mSUMgKyBzaXplT2ZJQykpOwog
CkBAIC0zMDQsNyArMzA0LDcgQEAgc3RhdGljIHZvaWQgZ2VuZXJhdGVDaGVja0luSUNGYXN0UGF0
aCgKICAgICAgICAgICAgICAgICBjYWxsUmV0dXJuTG9jYXRpb24sIHNsb3dQYXRoQmVnaW5Mb2Mp
OwogICAgICAgICB9OwogCi0gICAgICAgIGdlbmVyYXRlSW5saW5lSWZQb3NzaWJsZU91dE9mTGlu
ZUlmTm90KHN0YXRlLCB2bSwgY29kZUJsb2NrLCBmYXN0UGF0aEpJVCwgc3RhcnRPZklDLCBzaXpl
T2ZJQywgIkNoZWNrSW4gaW5saW5lIGNhY2hlIiwgcG9zdExpbmspOworICAgICAgICBnZW5lcmF0
ZUlubGluZUlmUG9zc2libGVPdXRPZkxpbmVJZk5vdChzdGF0ZSwgdm0sIGNvZGVCbG9jaywgZmFz
dFBhdGhKSVQsIHN0YXJ0T2ZJQywgc2l6ZU9mSUMsIGljLm5hbWUoKSwgcG9zdExpbmspOwogICAg
IH0KIH0KIApAQCAtMzM5LDggKzMzOSw3IEBAIHN0YXRpYyB2b2lkIGdlbmVyYXRlQmluYXJ5T3BJ
Q0Zhc3RQYXRoKAogICAgICAgICBnZW5lcmF0ZUJpbmFyeU9wRmFzdFBhdGgoaWMsIGZhc3RQYXRo
SklULCByZXN1bHQsIGxlZnQsIHJpZ2h0LCB1c2VkUmVnaXN0ZXJzLCBkb25lLCBzbG93UGF0aFN0
YXJ0KTsKIAogICAgICAgICBjaGFyKiBzdGFydE9mSUMgPSBiaXR3aXNlX2Nhc3Q8Y2hhcio+KGdl
bmVyYXRlZEZ1bmN0aW9uKSArIHJlY29yZC5pbnN0cnVjdGlvbk9mZnNldDsKLSAgICAgICAgY29u
c3QgY2hhciogZmFzdFBhdGhJQ05hbWUgPSBpYy5mYXN0UGF0aElDTmFtZSgpOwotICAgICAgICBn
ZW5lcmF0ZUlubGluZUlmUG9zc2libGVPdXRPZkxpbmVJZk5vdChzdGF0ZSwgdm0sIGNvZGVCbG9j
aywgZmFzdFBhdGhKSVQsIHN0YXJ0T2ZJQywgc2l6ZU9mSUMsIGZhc3RQYXRoSUNOYW1lLCBbJl0g
KExpbmtCdWZmZXImIGxpbmtCdWZmZXIsIENDYWxsSGVscGVycyYsIGJvb2wpIHsKKyAgICAgICAg
Z2VuZXJhdGVJbmxpbmVJZlBvc3NpYmxlT3V0T2ZMaW5lSWZOb3Qoc3RhdGUsIHZtLCBjb2RlQmxv
Y2ssIGZhc3RQYXRoSklULCBzdGFydE9mSUMsIHNpemVPZklDLCBpYy5uYW1lKCksIFsmXSAoTGlu
a0J1ZmZlciYgbGlua0J1ZmZlciwgQ0NhbGxIZWxwZXJzJiwgYm9vbCkgewogICAgICAgICAgICAg
bGlua0J1ZmZlci5saW5rKGRvbmUsIENvZGVMb2NhdGlvbkxhYmVsKHN0YXJ0T2ZJQyArIHNpemVP
ZklDKSk7CiAgICAgICAgICAgICBzdGF0ZS5maW5hbGl6ZXItPnNpZGVDb2RlTGlua0J1ZmZlci0+
bGluayhpYy5tX3Nsb3dQYXRoRG9uZVtpXSwgQ29kZUxvY2F0aW9uTGFiZWwoc3RhcnRPZklDICsg
c2l6ZU9mSUMpKTsKICAgICAgICAgICAgIApAQCAtMzcxLDcgKzM3MCw3IEBAIHN0YXRpYyB2b2lk
IGdlbmVyYXRlUHJvYmUoCiAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcCBkb25lID0gZmFzdFBh
dGhKSVQuanVtcCgpOwogCiAgICAgICAgIGNoYXIqIHN0YXJ0T2ZJQyA9IGJpdHdpc2VfY2FzdDxj
aGFyKj4oZ2VuZXJhdGVkRnVuY3Rpb24pICsgcmVjb3JkLmluc3RydWN0aW9uT2Zmc2V0OwotICAg
ICAgICBnZW5lcmF0ZUlubGluZUlmUG9zc2libGVPdXRPZkxpbmVJZk5vdChzdGF0ZSwgdm0sIGNv
ZGVCbG9jaywgZmFzdFBhdGhKSVQsIHN0YXJ0T2ZJQywgc2l6ZU9mSUMsICJQcm9iZSIsIFsmXSAo
TGlua0J1ZmZlciYgbGlua0J1ZmZlciwgQ0NhbGxIZWxwZXJzJiwgYm9vbCkgeworICAgICAgICBn
ZW5lcmF0ZUlubGluZUlmUG9zc2libGVPdXRPZkxpbmVJZk5vdChzdGF0ZSwgdm0sIGNvZGVCbG9j
aywgZmFzdFBhdGhKSVQsIHN0YXJ0T2ZJQywgc2l6ZU9mSUMsIGljLm5hbWUoKSwgWyZdIChMaW5r
QnVmZmVyJiBsaW5rQnVmZmVyLCBDQ2FsbEhlbHBlcnMmLCBib29sKSB7CiAgICAgICAgICAgICBs
aW5rQnVmZmVyLmxpbmsoZG9uZSwgQ29kZUxvY2F0aW9uTGFiZWwoc3RhcnRPZklDICsgc2l6ZU9m
SUMpKTsKICAgICAgICAgfSk7CiAgICAgfQpAQCAtOTIxLDcgKzkyMCw3IEBAIHN0YXRpYyB2b2lk
IGZpeEZ1bmN0aW9uQmFzZWRPblN0YWNrTWFwcygKIAogICAgICAgICBjaGFyKiBzdGFydE9mSUMg
PSBiaXR3aXNlX2Nhc3Q8Y2hhcio+KGdlbmVyYXRlZEZ1bmN0aW9uKSArIGNhbGwubV9pbnN0cnVj
dGlvbk9mZnNldDsKIAotICAgICAgICBnZW5lcmF0ZUlubGluZUlmUG9zc2libGVPdXRPZkxpbmVJ
Zk5vdChzdGF0ZSwgdm0sIGNvZGVCbG9jaywgZmFzdFBhdGhKSVQsIHN0YXJ0T2ZJQywgc2l6ZU9m
Q2FsbCgpLCAiSlNDYWxsIGlubGluZSBjYWNoZSIsIFsmXSAoTGlua0J1ZmZlciYgbGlua0J1ZmZl
ciwgQ0NhbGxIZWxwZXJzJiwgYm9vbCkgeworICAgICAgICBnZW5lcmF0ZUlubGluZUlmUG9zc2li
bGVPdXRPZkxpbmVJZk5vdChzdGF0ZSwgdm0sIGNvZGVCbG9jaywgZmFzdFBhdGhKSVQsIHN0YXJ0
T2ZJQywgc2l6ZU9mQ2FsbCgpLCAiSlNDYWxsIiwgWyZdIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVy
LCBDQ2FsbEhlbHBlcnMmLCBib29sKSB7CiAgICAgICAgICAgICBjYWxsLmxpbmsodm0sIGxpbmtC
dWZmZXIpOwogICAgICAgICB9KTsKICAgICB9CkBAIC05MzcsNyArOTM2LDcgQEAgc3RhdGljIHZv
aWQgZml4RnVuY3Rpb25CYXNlZE9uU3RhY2tNYXBzKAogICAgICAgICBjaGFyKiBzdGFydE9mSUMg
PSBiaXR3aXNlX2Nhc3Q8Y2hhcio+KGdlbmVyYXRlZEZ1bmN0aW9uKSArIGNhbGwubV9pbnN0cnVj
dGlvbk9mZnNldDsKICAgICAgICAgc2l6ZV90IHNpemVPZklDID0gc2l6ZU9mSUNGb3IoY2FsbC5u
b2RlKCkpOwogCi0gICAgICAgIGdlbmVyYXRlSW5saW5lSWZQb3NzaWJsZU91dE9mTGluZUlmTm90
KHN0YXRlLCB2bSwgY29kZUJsb2NrLCBmYXN0UGF0aEpJVCwgc3RhcnRPZklDLCBzaXplT2ZJQywg
InZhcmFyZ3MgY2FsbCBpbmxpbmUgY2FjaGUiLCBbJl0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIs
IENDYWxsSGVscGVycyYsIGJvb2wpIHsKKyAgICAgICAgZ2VuZXJhdGVJbmxpbmVJZlBvc3NpYmxl
T3V0T2ZMaW5lSWZOb3Qoc3RhdGUsIHZtLCBjb2RlQmxvY2ssIGZhc3RQYXRoSklULCBzdGFydE9m
SUMsIHNpemVPZklDLCAidmFyYXJncyBjYWxsIiwgWyZdIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVy
LCBDQ2FsbEhlbHBlcnMmLCBib29sKSB7CiAgICAgICAgICAgICBjYWxsLmxpbmsodm0sIGxpbmtC
dWZmZXIsIHN0YXRlLmZpbmFsaXplci0+aGFuZGxlRXhjZXB0aW9uc0xpbmtCdWZmZXItPmVudHJ5
cG9pbnQoKSk7CiAgICAgICAgIH0pOwogICAgIH0KQEAgLTk1Myw3ICs5NTIsNyBAQCBzdGF0aWMg
dm9pZCBmaXhGdW5jdGlvbkJhc2VkT25TdGFja01hcHMoCiAgICAgICAgIGNoYXIqIHN0YXJ0T2ZJ
QyA9IGJpdHdpc2VfY2FzdDxjaGFyKj4oZ2VuZXJhdGVkRnVuY3Rpb24pICsgY2FsbC5tX2luc3Ry
dWN0aW9uT2Zmc2V0OwogICAgICAgICBzaXplX3Qgc2l6ZU9mSUMgPSBjYWxsLmVzdGltYXRlZFNp
emUoKTsKIAotICAgICAgICBnZW5lcmF0ZUlubGluZUlmUG9zc2libGVPdXRPZkxpbmVJZk5vdChz
dGF0ZSwgdm0sIGNvZGVCbG9jaywgZmFzdFBhdGhKSVQsIHN0YXJ0T2ZJQywgc2l6ZU9mSUMsICJ0
YWlsIGNhbGwgaW5saW5lIGNhY2hlIiwgWyZdIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyLCBDQ2Fs
bEhlbHBlcnMmLCBib29sKSB7CisgICAgICAgIGdlbmVyYXRlSW5saW5lSWZQb3NzaWJsZU91dE9m
TGluZUlmTm90KHN0YXRlLCB2bSwgY29kZUJsb2NrLCBmYXN0UGF0aEpJVCwgc3RhcnRPZklDLCBz
aXplT2ZJQywgInRhaWwgY2FsbCIsIFsmXSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlciwgQ0NhbGxI
ZWxwZXJzJiwgYm9vbCkgewogICAgICAgICAgICAgY2FsbC5saW5rKHZtLCBsaW5rQnVmZmVyKTsK
ICAgICAgICAgfSk7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExD
b21waWxlQmluYXJ5T3AuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMQ29tcGlsZUJpbmFyeU9wLmNwcAkocmV2aXNpb24gMTkzOTY5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlQmluYXJ5T3AuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNzksNyArMTc5LDcgQEAgdm9pZCBnZW5lcmF0ZUJpbmFyeUFyaXRoT3BGYXN0UGF0aChCaW5h
cgogICAgICAgICBKU1ZhbHVlUmVncyhsZWZ0KSwgSlNWYWx1ZVJlZ3MocmlnaHQpLCBsZWZ0RlBS
LCByaWdodEZQUiwgc2NyYXRjaEdQUiwgc2NyYXRjaEZQUik7CiAKICAgICBhdXRvIG51bWJlck9m
Qnl0ZXNVc2VkVG9QcmVzZXJ2ZVJldXNlZFJlZ2lzdGVycyA9Ci0gICAgYWxsb2NhdG9yLnByZXNl
cnZlUmV1c2VkUmVnaXN0ZXJzQnlQdXNoaW5nKGppdCwgU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9y
OjpFeHRyYVN0YWNrU3BhY2U6Ok5vRXh0cmFTcGFjZSk7CisgICAgICAgIGFsbG9jYXRvci5wcmVz
ZXJ2ZVJldXNlZFJlZ2lzdGVyc0J5UHVzaGluZyhqaXQsIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRv
cjo6RXh0cmFTdGFja1NwYWNlOjpOb0V4dHJhU3BhY2UpOwogCiAgICAgY29udGV4dC5pbml0aWFs
aXplUmVnaXN0ZXJzKGppdCk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoaml0KTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSW5saW5lQ2FjaGVEZXNjcmlwdG9yLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExJbmxpbmVDYWNoZURlc2Ny
aXB0b3IuaAkocmV2aXNpb24gMTkzOTY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExJbmxpbmVDYWNoZURlc2NyaXB0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsOCBA
QAogCiAjaW5jbHVkZSAiQ29kZU9yaWdpbi5oIgogI2luY2x1ZGUgIkRGR0Fic3RyYWN0VmFsdWUu
aCIKKyNpbmNsdWRlICJERkdPcGVyYXRpb25zLmgiCisjaW5jbHVkZSAiRlRMSW5saW5lQ2FjaGVT
aXplLmgiCiAjaW5jbHVkZSAiRlRMTGF6eVNsb3dQYXRoLmgiCiAjaW5jbHVkZSAiSklUSW5saW5l
Q2FjaGVHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgpAQCAtNDUsMjIg
KzQ3LDI1IEBAIHB1YmxpYzoKICAgICBJbmxpbmVDYWNoZURlc2NyaXB0b3IoKSAKICAgICB7IH0K
ICAgICAKLSAgICBJbmxpbmVDYWNoZURlc2NyaXB0b3IodW5zaWduZWQgc3RhY2ttYXBJRCwgQ29k
ZU9yaWdpbiBjb2RlT3JpZ2luLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQorICAgIElubGluZUNh
Y2hlRGVzY3JpcHRvcih1bnNpZ25lZCBzdGFja21hcElELCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4s
IFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQsIGNvbnN0IGNoYXIqIG5hbWUpCiAgICAgICAgIDogbV9z
dGFja21hcElEKHN0YWNrbWFwSUQpCiAgICAgICAgICwgbV9jb2RlT3JpZ2luKGNvZGVPcmlnaW4p
CiAgICAgICAgICwgbV91aWQodWlkKQorICAgICAgICAsIG1fbmFtZShuYW1lKQogICAgIHsKICAg
ICB9CiAgICAgCiAgICAgdW5zaWduZWQgc3RhY2ttYXBJRCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Rh
Y2ttYXBJRDsgfQogICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIG1f
Y29kZU9yaWdpbjsgfQogICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQoKSBjb25zdCB7IHJldHVy
biBtX3VpZDsgfQotICAgIAorICAgIGNvbnN0IGNoYXIqIG5hbWUoKSBjb25zdCB7IHJldHVybiBt
X25hbWU7IH0KKwogcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX3N0YWNrbWFwSUQ7CiAgICAgQ29k
ZU9yaWdpbiBtX2NvZGVPcmlnaW47CiAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIG1fdWlkOwotICAg
IAorICAgIGNvbnN0IGNoYXIqIG1fbmFtZTsKKwogcHVibGljOgogICAgIFZlY3RvcjxNYWNyb0Fz
c2VtYmxlcjo6SnVtcD4gbV9zbG93UGF0aERvbmU7CiB9OwpAQCAtNzAsNyArNzUsNyBAQCBwdWJs
aWM6CiAgICAgR2V0QnlJZERlc2NyaXB0b3IoKSB7IH0KICAgICAKICAgICBHZXRCeUlkRGVzY3Jp
cHRvcih1bnNpZ25lZCBzdGFja21hcElELCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIFVuaXF1ZWRT
dHJpbmdJbXBsKiB1aWQpCi0gICAgICAgIDogSW5saW5lQ2FjaGVEZXNjcmlwdG9yKHN0YWNrbWFw
SUQsIGNvZGVPcmlnaW4sIHVpZCkKKyAgICAgICAgOiBJbmxpbmVDYWNoZURlc2NyaXB0b3Ioc3Rh
Y2ttYXBJRCwgY29kZU9yaWdpbiwgdWlkLCAiR2V0QnlJZCIpCiAgICAgewogICAgIH0KICAgICAK
QEAgLTg0LDcgKzg5LDcgQEAgcHVibGljOgogICAgIFB1dEJ5SWREZXNjcmlwdG9yKAogICAgICAg
ICB1bnNpZ25lZCBzdGFja21hcElELCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIFVuaXF1ZWRTdHJp
bmdJbXBsKiB1aWQsCiAgICAgICAgIEVDTUFNb2RlIGVjbWFNb2RlLCBQdXRLaW5kIHB1dEtpbmQp
Ci0gICAgICAgIDogSW5saW5lQ2FjaGVEZXNjcmlwdG9yKHN0YWNrbWFwSUQsIGNvZGVPcmlnaW4s
IHVpZCkKKyAgICAgICAgOiBJbmxpbmVDYWNoZURlc2NyaXB0b3Ioc3RhY2ttYXBJRCwgY29kZU9y
aWdpbiwgdWlkLCAiUHV0QnlJZCIpCiAgICAgICAgICwgbV9lY21hTW9kZShlY21hTW9kZSkKICAg
ICAgICAgLCBtX3B1dEtpbmQocHV0S2luZCkKICAgICB7CkBAIC0xMTgsNyArMTIzLDcgQEAgcHVi
bGljOgogICAgIENoZWNrSW5EZXNjcmlwdG9yKCkgeyB9CiAgICAgCiAgICAgQ2hlY2tJbkRlc2Ny
aXB0b3IodW5zaWduZWQgc3RhY2ttYXBJRCwgQ29kZU9yaWdpbiBjb2RlT3JpZ2luLCBVbmlxdWVk
U3RyaW5nSW1wbCogdWlkKQotICAgICAgICA6IElubGluZUNhY2hlRGVzY3JpcHRvcihzdGFja21h
cElELCBjb2RlT3JpZ2luLCB1aWQpCisgICAgICAgIDogSW5saW5lQ2FjaGVEZXNjcmlwdG9yKHN0
YWNrbWFwSUQsIGNvZGVPcmlnaW4sIHVpZCwgIkNoZWNrSW4iKQogICAgIHsKICAgICB9CiAgICAg
CkBAIC0xMzEsOCArMTM2LDYgQEAgcHVibGljOgogCiAgICAgdW5zaWduZWQgbm9kZVR5cGUoKSBj
b25zdCB7IHJldHVybiBtX25vZGVUeXBlOyB9CiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJl
dHVybiBtX3NpemU7IH0KLSAgICBjb25zdCBjaGFyKiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9u
YW1lOyB9Ci0gICAgY29uc3QgY2hhciogZmFzdFBhdGhJQ05hbWUoKSBjb25zdCB7IHJldHVybiBt
X2Zhc3RQYXRoSUNOYW1lOyB9CiAgICAgU2xvd1BhdGhGdW5jdGlvbiBzbG93UGF0aEZ1bmN0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9zbG93UGF0aEZ1bmN0aW9uOyB9CiAKICAgICBTbmlwcGV0T3Bl
cmFuZCBsZWZ0T3BlcmFuZCgpIHsgcmV0dXJuIG1fbGVmdE9wZXJhbmQ7IH0KQEAgLTE0MiwxMyAr
MTQ1LDExIEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIEJpbmFyeU9wRGVzY3JpcHRvcih1
bnNpZ25lZCBub2RlVHlwZSwgdW5zaWduZWQgc3RhY2ttYXBJRCwgQ29kZU9yaWdpbiBjb2RlT3Jp
Z2luLAotICAgICAgICBzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciogbmFtZSwgY29uc3QgY2hhciog
ZmFzdFBhdGhJQ05hbWUsCi0gICAgICAgIFNsb3dQYXRoRnVuY3Rpb24gc2xvd1BhdGhGdW5jdGlv
biwgY29uc3QgU25pcHBldE9wZXJhbmQmIGxlZnRPcGVyYW5kLCBjb25zdCBTbmlwcGV0T3BlcmFu
ZCYgcmlnaHRPcGVyYW5kKQotICAgICAgICA6IElubGluZUNhY2hlRGVzY3JpcHRvcihzdGFja21h
cElELCBjb2RlT3JpZ2luLCBudWxscHRyKQorICAgICAgICBzaXplX3Qgc2l6ZSwgY29uc3QgY2hh
ciogbmFtZSwgU2xvd1BhdGhGdW5jdGlvbiBzbG93UGF0aEZ1bmN0aW9uLAorICAgICAgICBjb25z
dCBTbmlwcGV0T3BlcmFuZCYgbGVmdE9wZXJhbmQsIGNvbnN0IFNuaXBwZXRPcGVyYW5kJiByaWdo
dE9wZXJhbmQpCisgICAgICAgIDogSW5saW5lQ2FjaGVEZXNjcmlwdG9yKHN0YWNrbWFwSUQsIGNv
ZGVPcmlnaW4sIG51bGxwdHIsIG5hbWUpCiAgICAgICAgICwgbV9ub2RlVHlwZShub2RlVHlwZSkK
ICAgICAgICAgLCBtX3NpemUoc2l6ZSkKLSAgICAgICAgLCBtX25hbWUobmFtZSkKLSAgICAgICAg
LCBtX2Zhc3RQYXRoSUNOYW1lKGZhc3RQYXRoSUNOYW1lKQogICAgICAgICAsIG1fc2xvd1BhdGhG
dW5jdGlvbihzbG93UGF0aEZ1bmN0aW9uKQogICAgICAgICAsIG1fbGVmdE9wZXJhbmQobGVmdE9w
ZXJhbmQpCiAgICAgICAgICwgbV9yaWdodE9wZXJhbmQocmlnaHRPcGVyYW5kKQpAQCAtMTU3LDcg
KzE1OCw2IEBAIHByb3RlY3RlZDoKIAogICAgIHVuc2lnbmVkIG1fbm9kZVR5cGU7CiAgICAgc2l6
ZV90IG1fc2l6ZTsKLSAgICBjb25zdCBjaGFyKiBtX25hbWU7CiAgICAgY29uc3QgY2hhciogbV9m
YXN0UGF0aElDTmFtZTsKICAgICBTbG93UGF0aEZ1bmN0aW9uIG1fc2xvd1BhdGhGdW5jdGlvbjsK
IApAQCAtMTY3LDI2ICsxNjcsNTQgQEAgcHJvdGVjdGVkOgogCiBjbGFzcyBBcml0aERpdkRlc2Ny
aXB0b3IgOiBwdWJsaWMgQmluYXJ5T3BEZXNjcmlwdG9yIHsKIHB1YmxpYzoKLSAgICBBcml0aERp
dkRlc2NyaXB0b3IodW5zaWduZWQgc3RhY2ttYXBJRCwgQ29kZU9yaWdpbiwgY29uc3QgU25pcHBl
dE9wZXJhbmQmIGxlZnRPcGVyYW5kLCBjb25zdCBTbmlwcGV0T3BlcmFuZCYgcmlnaHRPcGVyYW5k
KTsKLSAgICBzdGF0aWMgc2l6ZV90IGljU2l6ZSgpOworICAgIEFyaXRoRGl2RGVzY3JpcHRvcih1
bnNpZ25lZCBzdGFja21hcElELCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIGNvbnN0IFNuaXBwZXRP
cGVyYW5kJiBsZWZ0T3BlcmFuZCwgY29uc3QgU25pcHBldE9wZXJhbmQmIHJpZ2h0T3BlcmFuZCkK
KyAgICAgICAgOiBCaW5hcnlPcERlc2NyaXB0b3Iobm9kZVR5cGUoKSwgc3RhY2ttYXBJRCwgY29k
ZU9yaWdpbiwgaWNTaXplKCksIG9wTmFtZSgpLCBzbG93UGF0aEZ1bmN0aW9uKCksIGxlZnRPcGVy
YW5kLCByaWdodE9wZXJhbmQpCisgICAgeyB9CisKKyAgICBzdGF0aWMgc2l6ZV90IGljU2l6ZSgp
IHsgcmV0dXJuIHNpemVPZkFyaXRoRGl2KCk7IH0KKyAgICBzdGF0aWMgdW5zaWduZWQgbm9kZVR5
cGUoKSB7IHJldHVybiBERkc6OkFyaXRoRGl2OyB9CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIG9w
TmFtZSgpIHsgcmV0dXJuICJBcml0aERpdiI7IH0KKyAgICBzdGF0aWMgSl9KSVRPcGVyYXRpb25f
RUpKIHNsb3dQYXRoRnVuY3Rpb24oKSB7IHJldHVybiBERkc6Om9wZXJhdGlvblZhbHVlRGl2OyB9
CisgICAgc3RhdGljIEpfSklUT3BlcmF0aW9uX0VKSiBub25OdW1iZXJTbG93UGF0aEZ1bmN0aW9u
KCkgeyByZXR1cm4gc2xvd1BhdGhGdW5jdGlvbigpOyB9CiB9OwogCiBjbGFzcyBBcml0aE11bERl
c2NyaXB0b3IgOiBwdWJsaWMgQmluYXJ5T3BEZXNjcmlwdG9yIHsKIHB1YmxpYzoKLSAgICBBcml0
aE11bERlc2NyaXB0b3IodW5zaWduZWQgc3RhY2ttYXBJRCwgQ29kZU9yaWdpbiwgY29uc3QgU25p
cHBldE9wZXJhbmQmIGxlZnRPcGVyYW5kLCBjb25zdCBTbmlwcGV0T3BlcmFuZCYgcmlnaHRPcGVy
YW5kKTsKLSAgICBzdGF0aWMgc2l6ZV90IGljU2l6ZSgpOworICAgIEFyaXRoTXVsRGVzY3JpcHRv
cih1bnNpZ25lZCBzdGFja21hcElELCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIGNvbnN0IFNuaXBw
ZXRPcGVyYW5kJiBsZWZ0T3BlcmFuZCwgY29uc3QgU25pcHBldE9wZXJhbmQmIHJpZ2h0T3BlcmFu
ZCkKKyAgICAgICAgOiBCaW5hcnlPcERlc2NyaXB0b3Iobm9kZVR5cGUoKSwgc3RhY2ttYXBJRCwg
Y29kZU9yaWdpbiwgaWNTaXplKCksIG9wTmFtZSgpLCBzbG93UGF0aEZ1bmN0aW9uKCksIGxlZnRP
cGVyYW5kLCByaWdodE9wZXJhbmQpCisgICAgeyB9CisKKyAgICBzdGF0aWMgc2l6ZV90IGljU2l6
ZSgpIHsgcmV0dXJuIHNpemVPZkFyaXRoTXVsKCk7IH0KKyAgICBzdGF0aWMgdW5zaWduZWQgbm9k
ZVR5cGUoKSB7IHJldHVybiBERkc6OkFyaXRoTXVsOyB9CisgICAgc3RhdGljIGNvbnN0IGNoYXIq
IG9wTmFtZSgpIHsgcmV0dXJuICJBcml0aE11bCI7IH0KKyAgICBzdGF0aWMgSl9KSVRPcGVyYXRp
b25fRUpKIHNsb3dQYXRoRnVuY3Rpb24oKSB7IHJldHVybiBERkc6Om9wZXJhdGlvblZhbHVlTXVs
OyB9CisgICAgc3RhdGljIEpfSklUT3BlcmF0aW9uX0VKSiBub25OdW1iZXJTbG93UGF0aEZ1bmN0
aW9uKCkgeyByZXR1cm4gc2xvd1BhdGhGdW5jdGlvbigpOyB9CiB9OwogCiBjbGFzcyBBcml0aFN1
YkRlc2NyaXB0b3IgOiBwdWJsaWMgQmluYXJ5T3BEZXNjcmlwdG9yIHsKIHB1YmxpYzoKLSAgICBB
cml0aFN1YkRlc2NyaXB0b3IodW5zaWduZWQgc3RhY2ttYXBJRCwgQ29kZU9yaWdpbiwgY29uc3Qg
U25pcHBldE9wZXJhbmQmIGxlZnRPcGVyYW5kLCBjb25zdCBTbmlwcGV0T3BlcmFuZCYgcmlnaHRP
cGVyYW5kKTsKLSAgICBzdGF0aWMgc2l6ZV90IGljU2l6ZSgpOworICAgIEFyaXRoU3ViRGVzY3Jp
cHRvcih1bnNpZ25lZCBzdGFja21hcElELCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIGNvbnN0IFNu
aXBwZXRPcGVyYW5kJiBsZWZ0T3BlcmFuZCwgY29uc3QgU25pcHBldE9wZXJhbmQmIHJpZ2h0T3Bl
cmFuZCkKKyAgICAgICAgOiBCaW5hcnlPcERlc2NyaXB0b3Iobm9kZVR5cGUoKSwgc3RhY2ttYXBJ
RCwgY29kZU9yaWdpbiwgaWNTaXplKCksIG9wTmFtZSgpLCBzbG93UGF0aEZ1bmN0aW9uKCksIGxl
ZnRPcGVyYW5kLCByaWdodE9wZXJhbmQpCisgICAgeyB9CisKKyAgICBzdGF0aWMgc2l6ZV90IGlj
U2l6ZSgpIHsgcmV0dXJuIHNpemVPZkFyaXRoU3ViKCk7IH0KKyAgICBzdGF0aWMgdW5zaWduZWQg
bm9kZVR5cGUoKSB7IHJldHVybiBERkc6OkFyaXRoU3ViOyB9CisgICAgc3RhdGljIGNvbnN0IGNo
YXIqIG9wTmFtZSgpIHsgcmV0dXJuICJBcml0aFN1YiI7IH0KKyAgICBzdGF0aWMgSl9KSVRPcGVy
YXRpb25fRUpKIHNsb3dQYXRoRnVuY3Rpb24oKSB7IHJldHVybiBERkc6Om9wZXJhdGlvblZhbHVl
U3ViOyB9CisgICAgc3RhdGljIEpfSklUT3BlcmF0aW9uX0VKSiBub25OdW1iZXJTbG93UGF0aEZ1
bmN0aW9uKCkgeyByZXR1cm4gc2xvd1BhdGhGdW5jdGlvbigpOyB9CiB9OwogCiBjbGFzcyBWYWx1
ZUFkZERlc2NyaXB0b3IgOiBwdWJsaWMgQmluYXJ5T3BEZXNjcmlwdG9yIHsKIHB1YmxpYzoKLSAg
ICBWYWx1ZUFkZERlc2NyaXB0b3IodW5zaWduZWQgc3RhY2ttYXBJRCwgQ29kZU9yaWdpbiwgY29u
c3QgU25pcHBldE9wZXJhbmQmIGxlZnRPcGVyYW5kLCBjb25zdCBTbmlwcGV0T3BlcmFuZCYgcmln
aHRPcGVyYW5kKTsKLSAgICBzdGF0aWMgc2l6ZV90IGljU2l6ZSgpOworICAgIFZhbHVlQWRkRGVz
Y3JpcHRvcih1bnNpZ25lZCBzdGFja21hcElELCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIGNvbnN0
IFNuaXBwZXRPcGVyYW5kJiBsZWZ0T3BlcmFuZCwgY29uc3QgU25pcHBldE9wZXJhbmQmIHJpZ2h0
T3BlcmFuZCkKKyAgICAgICAgOiBCaW5hcnlPcERlc2NyaXB0b3Iobm9kZVR5cGUoKSwgc3RhY2tt
YXBJRCwgY29kZU9yaWdpbiwgaWNTaXplKCksIG9wTmFtZSgpLCBzbG93UGF0aEZ1bmN0aW9uKCks
IGxlZnRPcGVyYW5kLCByaWdodE9wZXJhbmQpCisgICAgeyB9CisKKyAgICBzdGF0aWMgc2l6ZV90
IGljU2l6ZSgpIHsgcmV0dXJuIHNpemVPZlZhbHVlQWRkKCk7IH0KKyAgICBzdGF0aWMgdW5zaWdu
ZWQgbm9kZVR5cGUoKSB7IHJldHVybiBERkc6OlZhbHVlQWRkOyB9CisgICAgc3RhdGljIGNvbnN0
IGNoYXIqIG9wTmFtZSgpIHsgcmV0dXJuICJWYWx1ZUFkZCI7IH0KKyAgICBzdGF0aWMgSl9KSVRP
cGVyYXRpb25fRUpKIHNsb3dQYXRoRnVuY3Rpb24oKSB7IHJldHVybiBERkc6Om9wZXJhdGlvblZh
bHVlQWRkOyB9CisgICAgc3RhdGljIEpfSklUT3BlcmF0aW9uX0VKSiBub25OdW1iZXJTbG93UGF0
aEZ1bmN0aW9uKCkgeyByZXR1cm4gREZHOjpvcGVyYXRpb25WYWx1ZUFkZE5vdE51bWJlcjsgfQog
fTsKIAogLy8gWW91IGNhbiBjcmVhdGUgYSBsYXp5IHNsb3cgcGF0aCBjYWxsIGluIGxvd2VyREZH
VG9MTFZNIGJ5IGRvaW5nOgpAQCAtMjEyLDcgKzI0MCw3IEBAIHB1YmxpYzoKICAgICBMYXp5U2xv
d1BhdGhEZXNjcmlwdG9yKAogICAgICAgICB1bnNpZ25lZCBzdGFja21hcElELCBDb2RlT3JpZ2lu
IGNvZGVPcmlnaW4sCiAgICAgICAgIFJlZlB0cjxMYXp5U2xvd1BhdGhMaW5rZXJUYXNrPiBsaW5r
ZXIpCi0gICAgICAgIDogSW5saW5lQ2FjaGVEZXNjcmlwdG9yKHN0YWNrbWFwSUQsIGNvZGVPcmln
aW4sIG51bGxwdHIpCisgICAgICAgIDogSW5saW5lQ2FjaGVEZXNjcmlwdG9yKHN0YWNrbWFwSUQs
IGNvZGVPcmlnaW4sIG51bGxwdHIsICJMYXp5U2xvd1BhdGgiKQogICAgICAgICAsIG1fbGlua2Vy
KGxpbmtlcikKICAgICB7CiAgICAgfQpAQCAtMjI2LDcgKzI1NCw3IEBAIHB1YmxpYzoKIGNsYXNz
IFByb2JlRGVzY3JpcHRvciA6IHB1YmxpYyBJbmxpbmVDYWNoZURlc2NyaXB0b3IgewogcHVibGlj
OgogICAgIFByb2JlRGVzY3JpcHRvcih1bnNpZ25lZCBzdGFja21hcElELCBzdGQ6OmZ1bmN0aW9u
PHZvaWQgKENDYWxsSGVscGVyczo6UHJvYmVDb250ZXh0Kik+IHByb2JlRnVuY3Rpb24pCi0gICAg
ICAgIDogSW5saW5lQ2FjaGVEZXNjcmlwdG9yKHN0YWNrbWFwSUQsIGNvZGVPcmlnaW4oKSwgbnVs
bHB0cikKKyAgICAgICAgOiBJbmxpbmVDYWNoZURlc2NyaXB0b3Ioc3RhY2ttYXBJRCwgY29kZU9y
aWdpbigpLCBudWxscHRyLCAiUHJvYmUiKQogICAgICAgICAsIG1fcHJvYmVGdW5jdGlvbihwcm9i
ZUZ1bmN0aW9uKQogICAgIHsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTElubGluZUNhY2hlRGVzY3JpcHRvcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTElubGluZUNhY2hlRGVzY3JpcHRvcklubGluZXMuaAkocmV2
aXNpb24gMTkzOTY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExJbmxpbmVDYWNo
ZURlc2NyaXB0b3JJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsOTAgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgRlRMSW5s
aW5lQ2FjaGVEZXNjcmlwdG9ySW5saW5lc19oCi0jZGVmaW5lIEZUTElubGluZUNhY2hlRGVzY3Jp
cHRvcklubGluZXNfaAotCi0jaWYgRU5BQkxFKEZUTF9KSVQpCi0KLSNpbmNsdWRlICJERkdOb2Rl
VHlwZS5oIgotI2luY2x1ZGUgIkRGR09wZXJhdGlvbnMuaCIKLSNpbmNsdWRlICJGVExJbmxpbmVD
YWNoZURlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJGVExJbmxpbmVDYWNoZVNpemUuaCIKLQotbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewotCi1Bcml0aERpdkRlc2NyaXB0b3I6OkFyaXRo
RGl2RGVzY3JpcHRvcih1bnNpZ25lZCBzdGFja21hcElELCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4s
Ci0gICAgY29uc3QgU25pcHBldE9wZXJhbmQmIGxlZnRPcGVyYW5kLCBjb25zdCBTbmlwcGV0T3Bl
cmFuZCYgcmlnaHRPcGVyYW5kKQotICAgIDogQmluYXJ5T3BEZXNjcmlwdG9yKERGRzo6QXJpdGhE
aXYsIHN0YWNrbWFwSUQsIGNvZGVPcmlnaW4sIGljU2l6ZSgpLAotICAgICAgICAiQXJpdGhEaXYi
LCAiQXJpdGhEaXYgSUMgZmFzdCBwYXRoIiwgREZHOjpvcGVyYXRpb25WYWx1ZURpdiwgbGVmdE9w
ZXJhbmQsIHJpZ2h0T3BlcmFuZCkKLXsKLX0KLQotc2l6ZV90IEFyaXRoRGl2RGVzY3JpcHRvcjo6
aWNTaXplKCkKLXsKLSAgICByZXR1cm4gc2l6ZU9mQXJpdGhEaXYoKTsKLX0KLQotQXJpdGhNdWxE
ZXNjcmlwdG9yOjpBcml0aE11bERlc2NyaXB0b3IodW5zaWduZWQgc3RhY2ttYXBJRCwgQ29kZU9y
aWdpbiBjb2RlT3JpZ2luLAotICAgIGNvbnN0IFNuaXBwZXRPcGVyYW5kJiBsZWZ0T3BlcmFuZCwg
Y29uc3QgU25pcHBldE9wZXJhbmQmIHJpZ2h0T3BlcmFuZCkKLSAgICA6IEJpbmFyeU9wRGVzY3Jp
cHRvcihERkc6OkFyaXRoTXVsLCBzdGFja21hcElELCBjb2RlT3JpZ2luLCBpY1NpemUoKSwKLSAg
ICAgICAgIkFyaXRoTXVsIiwgIkFyaXRoTXVsIElDIGZhc3QgcGF0aCIsIERGRzo6b3BlcmF0aW9u
VmFsdWVNdWwsIGxlZnRPcGVyYW5kLCByaWdodE9wZXJhbmQpCi17Ci19Ci0KLXNpemVfdCBBcml0
aE11bERlc2NyaXB0b3I6OmljU2l6ZSgpCi17Ci0gICAgcmV0dXJuIHNpemVPZkFyaXRoTXVsKCk7
Ci19Ci0KLUFyaXRoU3ViRGVzY3JpcHRvcjo6QXJpdGhTdWJEZXNjcmlwdG9yKHVuc2lnbmVkIHN0
YWNrbWFwSUQsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwKLSAgICBjb25zdCBTbmlwcGV0T3BlcmFu
ZCYgbGVmdE9wZXJhbmQsIGNvbnN0IFNuaXBwZXRPcGVyYW5kJiByaWdodE9wZXJhbmQpCi0gICAg
OiBCaW5hcnlPcERlc2NyaXB0b3IoREZHOjpBcml0aFN1Yiwgc3RhY2ttYXBJRCwgY29kZU9yaWdp
biwgaWNTaXplKCksCi0gICAgICAgICJBcml0aFN1YiIsICJBcml0aFN1YiBJQyBmYXN0IHBhdGgi
LCBERkc6Om9wZXJhdGlvblZhbHVlU3ViLCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKQotewot
fQotCi1zaXplX3QgQXJpdGhTdWJEZXNjcmlwdG9yOjppY1NpemUoKQotewotICAgIHJldHVybiBz
aXplT2ZBcml0aFN1YigpOwotfQotCi1WYWx1ZUFkZERlc2NyaXB0b3I6OlZhbHVlQWRkRGVzY3Jp
cHRvcih1bnNpZ25lZCBzdGFja21hcElELCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sCi0gICAgY29u
c3QgU25pcHBldE9wZXJhbmQmIGxlZnRPcGVyYW5kLCBjb25zdCBTbmlwcGV0T3BlcmFuZCYgcmln
aHRPcGVyYW5kKQotICAgIDogQmluYXJ5T3BEZXNjcmlwdG9yKERGRzo6VmFsdWVBZGQsIHN0YWNr
bWFwSUQsIGNvZGVPcmlnaW4sIGljU2l6ZSgpLAotICAgICAgICAiVmFsdWVBZGQiLCAiVmFsdWVB
ZGQgSUMgZmFzdCBwYXRoIiwgREZHOjpvcGVyYXRpb25WYWx1ZUFkZCwgbGVmdE9wZXJhbmQsIHJp
Z2h0T3BlcmFuZCkKLXsKLX0KLQotc2l6ZV90IFZhbHVlQWRkRGVzY3JpcHRvcjo6aWNTaXplKCkK
LXsKLSAgICByZXR1cm4gc2l6ZU9mVmFsdWVBZGQoKTsKLX0KLQotfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OkZUTAotCi0jZW5kaWYgLy8gRU5BQkxFKEZUTF9KSVQpCi0KLSNlbmRpZiAvLyBGVExJbmxp
bmVDYWNoZURlc2NyaXB0b3JJbmxpbmVzX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMSklURmluYWxpemVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTEpJVEZpbmFsaXplci5jcHAJKHJldmlzaW9uIDE5Mzk2OSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMSklURmluYWxpemVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTM3LDcgKzEzNyw3IEBAIGJvb2wgSklURmluYWxpemVyOjpmaW5hbGl6ZUZ1bmN0aW9uKCkKICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgb3V0T2ZMaW5lQ29kZUluZm9zLnNpemUoKTsgKytp
KSB7CiAgICAgICAgIGppdENvZGUtPmFkZEhhbmRsZShGSU5BTElaRV9DT0RFX0lGKAogICAgICAg
ICAgICAgZHVtcERpc2Fzc2VtYmx5LCAqb3V0T2ZMaW5lQ29kZUluZm9zW2ldLm1fbGlua0J1ZmZl
ciwKLSAgICAgICAgICAgICgiRlRMIG91dCBvZiBsaW5lIGNvZGUgZm9yICVzIiwgb3V0T2ZMaW5l
Q29kZUluZm9zW2ldLm1fY29kZURlc2NyaXB0aW9uKSkuZXhlY3V0YWJsZU1lbW9yeSgpKTsKKyAg
ICAgICAgICAgICgiRlRMIG91dCBvZiBsaW5lIGNvZGUgZm9yICVzIGlubGluZSBjYWNoZSIsIG91
dE9mTGluZUNvZGVJbmZvc1tpXS5tX2NvZGVEZXNjcmlwdGlvbikpLmV4ZWN1dGFibGVNZW1vcnko
KSk7CiAgICAgfQogI2VuZGlmIC8vIEZUTF9VU0VTX0IzCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCShyZXZpc2lvbiAxOTM5Njkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTAzMiw2ICsxMDMyLDg0IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KIAorICAgIGVudW0gQ29uc3RJbnQzMk9wZXJhbmRPcHRpbWl6YXRpb25T
dXBwb3J0IHsKKyAgICAgICAgSGFzQ29uc3RJbnQzMk9wZXJhbmRPcHRpbWl6YXRpb24sCisgICAg
ICAgIERvZXNOb3RIYXZlQ29uc3RJbnQzMk9wZXJhbmRPcHRpbWl6YXRpb24sCisgICAgfTsKKwor
ICAgIGVudW0gQ29uc3REb3VibGVPcGVyYW5kT3B0aW1pemF0aW9uU3VwcG9ydCB7CisgICAgICAg
IEhhc0NvbnN0RG91YmxlT3BlcmFuZE9wdGltaXphdGlvbiwKKyAgICAgICAgRG9lc05vdEhhdmVD
b25zdERvdWJsZU9wZXJhbmRPcHRpbWl6YXRpb24sCisgICAgfTsKKworICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBTbmlwcGV0SUNEZXNjcmlwdG9yLAorICAgICAgICBDb25zdEludDMyT3BlcmFuZE9w
dGltaXphdGlvblN1cHBvcnQgY29uc3RJbnQzMk9wdCA9IEhhc0NvbnN0SW50MzJPcGVyYW5kT3B0
aW1pemF0aW9uLAorICAgICAgICBDb25zdERvdWJsZU9wZXJhbmRPcHRpbWl6YXRpb25TdXBwb3J0
IGNvbnN0RG91YmxlT3B0ID0gRG9lc05vdEhhdmVDb25zdERvdWJsZU9wZXJhbmRPcHRpbWl6YXRp
b24+CisgICAgdm9pZCBjb21waWxlVW50eXBlZEJpbmFyeU9wKCkKKyAgICB7CisgICAgICAgIEVk
Z2UmIGxlZnRDaGlsZCA9IG1fbm9kZS0+Y2hpbGQxKCk7CisgICAgICAgIEVkZ2UmIHJpZ2h0Q2hp
bGQgPSBtX25vZGUtPmNoaWxkMigpOworCisgICAgICAgIGlmICghKHByb3ZlblR5cGUobGVmdENo
aWxkKSAmIFNwZWNGdWxsTnVtYmVyKSB8fCAhKHByb3ZlblR5cGUocmlnaHRDaGlsZCkgJiBTcGVj
RnVsbE51bWJlcikpIHsKKyAgICAgICAgICAgIHNldEpTVmFsdWUodm1DYWxsKG1fb3V0LmludDY0
LCBtX291dC5vcGVyYXRpb24oU25pcHBldElDRGVzY3JpcHRvcjo6bm9uTnVtYmVyU2xvd1BhdGhG
dW5jdGlvbigpKSwgbV9jYWxsRnJhbWUsCisgICAgICAgICAgICAgICAgbG93SlNWYWx1ZShsZWZ0
Q2hpbGQpLCBsb3dKU1ZhbHVlKHJpZ2h0Q2hpbGQpKSk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKworICAgICAgICB1bnNpZ25lZCBzdGFja21hcElEID0gbV9zdGFja21hcElEcysr
OworCisgICAgICAgIGlmIChPcHRpb25zOjp2ZXJib3NlQ29tcGlsYXRpb24oKSkKKyAgICAgICAg
ICAgIGRhdGFMb2coIiAgICBFbWl0dGluZyAiLCBTbmlwcGV0SUNEZXNjcmlwdG9yOjpvcE5hbWUo
KSwgIiBwYXRjaHBvaW50IHdpdGggc3RhY2ttYXAgIyIsIHN0YWNrbWFwSUQsICJcbiIpOworCisj
aWYgRlRMX1VTRVNfQjMKKyAgICAgICAgQ1JBU0goKTsKKyNlbHNlCisgICAgICAgIExWYWx1ZSBs
ZWZ0ID0gbG93SlNWYWx1ZShsZWZ0Q2hpbGQpOworICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dK
U1ZhbHVlKHJpZ2h0Q2hpbGQpOworCisgICAgICAgIFNuaXBwZXRPcGVyYW5kIGxlZnRPcGVyYW5k
KGFic3RyYWN0VmFsdWUobGVmdENoaWxkKS5yZXN1bHRUeXBlKCkpOworICAgICAgICBTbmlwcGV0
T3BlcmFuZCByaWdodE9wZXJhbmQoYWJzdHJhY3RWYWx1ZShyaWdodENoaWxkKS5yZXN1bHRUeXBl
KCkpOworCisgICAgICAgIGlmIChjb25zdEludDMyT3B0ID09IEhhc0NvbnN0SW50MzJPcGVyYW5k
T3B0aW1pemF0aW9uICYmIGxlZnRDaGlsZC0+aXNJbnQzMkNvbnN0YW50KCkpCisgICAgICAgICAg
ICBsZWZ0T3BlcmFuZC5zZXRDb25zdEludDMyKGxlZnRDaGlsZC0+YXNJbnQzMigpKTsKKyNpZiBV
U0UoSlNWQUxVRTY0KQorICAgICAgICBlbHNlIGlmIChjb25zdERvdWJsZU9wdCA9PSBIYXNDb25z
dERvdWJsZU9wZXJhbmRPcHRpbWl6YXRpb24gJiYgbGVmdENoaWxkLT5pc0RvdWJsZUNvbnN0YW50
KCkpCisgICAgICAgICAgICBsZWZ0T3BlcmFuZC5zZXRDb25zdERvdWJsZShsZWZ0Q2hpbGQtPmFz
TnVtYmVyKCkpOworI2VuZGlmCisKKyAgICAgICAgaWYgKGxlZnRPcGVyYW5kLmlzQ29uc3QoKSkg
eworICAgICAgICAgICAgLy8gQmVjYXVzZSB0aGUgc25pcHBldCBkb2VzIG5vdCBzdXBwb3J0IGJv
dGggb3BlcmFuZHMgYmVpbmcgY29uc3RhbnQsIGlmIHRoZSBsZWZ0CisgICAgICAgICAgICAvLyBv
cGVyYW5kIGlzIGFscmVhZHkgYSBjb25zdGFudCwgd2UnbGwganVzdCBwcmV0ZW5kIHRoZSByaWdo
dCBvcGVyYW5kIGlzIG5vdC4KKyAgICAgICAgfSBlbHNlIGlmIChjb25zdEludDMyT3B0ID09IEhh
c0NvbnN0SW50MzJPcGVyYW5kT3B0aW1pemF0aW9uICYmIHJpZ2h0Q2hpbGQtPmlzSW50MzJDb25z
dGFudCgpKQorICAgICAgICAgICAgcmlnaHRPcGVyYW5kLnNldENvbnN0SW50MzIocmlnaHRDaGls
ZC0+YXNJbnQzMigpKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBlbHNlIGlmIChjb25z
dERvdWJsZU9wdCA9PSBIYXNDb25zdERvdWJsZU9wZXJhbmRPcHRpbWl6YXRpb24gJiYgcmlnaHRD
aGlsZC0+aXNEb3VibGVDb25zdGFudCgpKQorICAgICAgICAgICAgcmlnaHRPcGVyYW5kLnNldENv
bnN0RG91YmxlKHJpZ2h0Q2hpbGQtPmFzTnVtYmVyKCkpOworI2VuZGlmCisKKyAgICAgICAgUkVM
RUFTRV9BU1NFUlQoIWxlZnRPcGVyYW5kLmlzQ29uc3QoKSB8fCAhcmlnaHRPcGVyYW5kLmlzQ29u
c3QoKSk7CisKKyAgICAgICAgLy8gQXJndW1lbnRzOiBpZCwgYnl0ZXMsIHRhcmdldCwgbnVtQXJn
cywgYXJncy4uLgorICAgICAgICBTdGFja21hcEFyZ3VtZW50TGlzdCBhcmd1bWVudHM7CisgICAg
ICAgIGFyZ3VtZW50cy5hcHBlbmQobV9vdXQuY29uc3RJbnQ2NChzdGFja21hcElEKSk7CisgICAg
ICAgIGFyZ3VtZW50cy5hcHBlbmQobV9vdXQuY29uc3RJbnQzMihTbmlwcGV0SUNEZXNjcmlwdG9y
OjppY1NpemUoKSkpOworICAgICAgICBhcmd1bWVudHMuYXBwZW5kKGNvbnN0TnVsbChtX291dC5y
ZWY4KSk7CisgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQobV9vdXQuY29uc3RJbnQzMigyKSk7Cisg
ICAgICAgIGFyZ3VtZW50cy5hcHBlbmQobGVmdCk7CisgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQo
cmlnaHQpOworCisgICAgICAgIGFwcGVuZE9TUkV4aXRBcmd1bWVudHNGb3JQYXRjaHBvaW50SWZX
aWxsQ2F0Y2hFeGNlcHRpb24oYXJndW1lbnRzLAorICAgICAgICAgICAgRXhjZXB0aW9uVHlwZTo6
QmluYXJ5T3BHZW5lcmF0b3IsIDMpOyAvLyBsZWZ0LCByaWdodCwgYW5kIHJlc3VsdCBzaG93IHVw
IGluIHRoZSBzdGFja21hcCBsb2NhdGlvbnMuCisKKyAgICAgICAgTFZhbHVlIGNhbGwgPSBtX291
dC5jYWxsKG1fb3V0LmludDY0LCBtX291dC5wYXRjaHBvaW50SW50NjRJbnRyaW5zaWMoKSwgYXJn
dW1lbnRzKTsKKyAgICAgICAgc2V0SW5zdHJ1Y3Rpb25DYWxsaW5nQ29udmVudGlvbihjYWxsLCBM
TFZNQW55UmVnQ2FsbENvbnYpOworCisgICAgICAgIG1fZnRsU3RhdGUuYmluYXJ5T3BzLmFwcGVu
ZChTbmlwcGV0SUNEZXNjcmlwdG9yKHN0YWNrbWFwSUQsIG1fbm9kZS0+b3JpZ2luLnNlbWFudGlj
LCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKSk7CisKKyAgICAgICAgc2V0SlNWYWx1ZShjYWxs
KTsKKyNlbmRpZgorICAgIH0KKwogICAgIHZvaWQgY29tcGlsZVVwc2lsb24oKQogICAgIHsKICAg
ICAgICAgTFZhbHVlIHVwc2lsb25WYWx1ZSA9IG51bGxwdHI7CkBAIC0xNTA2LDU1ICsxNTg0LDcg
QEAgcHJpdmF0ZToKICAgICAKICAgICB2b2lkIGNvbXBpbGVWYWx1ZUFkZCgpCiAgICAgewotICAg
ICAgICBFZGdlJiBsZWZ0Q2hpbGQgPSBtX25vZGUtPmNoaWxkMSgpOwotICAgICAgICBFZGdlJiBy
aWdodENoaWxkID0gbV9ub2RlLT5jaGlsZDIoKTsKLQotICAgICAgICBpZiAoIShwcm92ZW5UeXBl
KGxlZnRDaGlsZCkgJiBTcGVjRnVsbE51bWJlcikgfHwgIShwcm92ZW5UeXBlKHJpZ2h0Q2hpbGQp
ICYgU3BlY0Z1bGxOdW1iZXIpKSB7Ci0gICAgICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChtX291
dC5pbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvblZhbHVlQWRkTm90TnVtYmVyKSwgbV9j
YWxsRnJhbWUsCi0gICAgICAgICAgICAgICAgbG93SlNWYWx1ZShsZWZ0Q2hpbGQpLCBsb3dKU1Zh
bHVlKHJpZ2h0Q2hpbGQpKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAg
ICAgICB1bnNpZ25lZCBzdGFja21hcElEID0gbV9zdGFja21hcElEcysrOwotCi0gICAgICAgIGlm
IChPcHRpb25zOjp2ZXJib3NlQ29tcGlsYXRpb24oKSkKLSAgICAgICAgICAgIGRhdGFMb2coIiAg
ICBFbWl0dGluZyBWYWx1ZUFkZCBwYXRjaHBvaW50IHdpdGggc3RhY2ttYXAgIyIsIHN0YWNrbWFw
SUQsICJcbiIpOwotCi0jaWYgRlRMX1VTRVNfQjMKLSAgICAgICAgQ1JBU0goKTsKLSNlbHNlCi0g
ICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SlNWYWx1ZShsZWZ0Q2hpbGQpOwotICAgICAgICBMVmFs
dWUgcmlnaHQgPSBsb3dKU1ZhbHVlKHJpZ2h0Q2hpbGQpOwotCi0gICAgICAgIFNuaXBwZXRPcGVy
YW5kIGxlZnRPcGVyYW5kKGFic3RyYWN0VmFsdWUobGVmdENoaWxkKS5yZXN1bHRUeXBlKCkpOwot
ICAgICAgICBTbmlwcGV0T3BlcmFuZCByaWdodE9wZXJhbmQoYWJzdHJhY3RWYWx1ZShyaWdodENo
aWxkKS5yZXN1bHRUeXBlKCkpOwotCi0gICAgICAgIC8vIEJlY2F1c2UgdGhlIHNuaXBwZXQgZG9l
cyBub3Qgc3VwcG9ydCBib3RoIG9wZXJhbmRzIGJlaW5nIGNvbnN0YW50LCBpZiB0aGUgbGVmdAot
ICAgICAgICAvLyBvcGVyYW5kIGlzIGFscmVhZHkgYSBjb25zdGFudCwgd2UnbGwganVzdCBwcmV0
ZW5kIHRoZSByaWdodCBvcGVyYW5kIGlzIG5vdC4KLSAgICAgICAgaWYgKGxlZnRDaGlsZC0+aXNJ
bnQzMkNvbnN0YW50KCkpCi0gICAgICAgICAgICBsZWZ0T3BlcmFuZC5zZXRDb25zdEludDMyKGxl
ZnRDaGlsZC0+YXNJbnQzMigpKTsKLSAgICAgICAgZWxzZSBpZiAocmlnaHRDaGlsZC0+aXNJbnQz
MkNvbnN0YW50KCkpCi0gICAgICAgICAgICByaWdodE9wZXJhbmQuc2V0Q29uc3RJbnQzMihyaWdo
dENoaWxkLT5hc0ludDMyKCkpOwotCi0gICAgICAgIC8vIEFyZ3VtZW50czogaWQsIGJ5dGVzLCB0
YXJnZXQsIG51bUFyZ3MsIGFyZ3MuLi4KLSAgICAgICAgU3RhY2ttYXBBcmd1bWVudExpc3QgYXJn
dW1lbnRzOwotICAgICAgICBhcmd1bWVudHMuYXBwZW5kKG1fb3V0LmNvbnN0SW50NjQoc3RhY2tt
YXBJRCkpOwotICAgICAgICBhcmd1bWVudHMuYXBwZW5kKG1fb3V0LmNvbnN0SW50MzIoVmFsdWVB
ZGREZXNjcmlwdG9yOjppY1NpemUoKSkpOwotICAgICAgICBhcmd1bWVudHMuYXBwZW5kKGNvbnN0
TnVsbChtX291dC5yZWY4KSk7Ci0gICAgICAgIGFyZ3VtZW50cy5hcHBlbmQobV9vdXQuY29uc3RJ
bnQzMigyKSk7Ci0gICAgICAgIGFyZ3VtZW50cy5hcHBlbmQobGVmdCk7Ci0gICAgICAgIGFyZ3Vt
ZW50cy5hcHBlbmQocmlnaHQpOwotCi0gICAgICAgIGFwcGVuZE9TUkV4aXRBcmd1bWVudHNGb3JQ
YXRjaHBvaW50SWZXaWxsQ2F0Y2hFeGNlcHRpb24oYXJndW1lbnRzLAotICAgICAgICAgICAgRXhj
ZXB0aW9uVHlwZTo6QmluYXJ5T3BHZW5lcmF0b3IsIDMpOyAvLyBsZWZ0LCByaWdodCwgYW5kIHJl
c3VsdCBzaG93IHVwIGluIHRoZSBzdGFja21hcCBsb2NhdGlvbnMuCi0KLSAgICAgICAgTFZhbHVl
IGNhbGwgPSBtX291dC5jYWxsKG1fb3V0LmludDY0LCBtX291dC5wYXRjaHBvaW50SW50NjRJbnRy
aW5zaWMoKSwgYXJndW1lbnRzKTsKLSAgICAgICAgc2V0SW5zdHJ1Y3Rpb25DYWxsaW5nQ29udmVu
dGlvbihjYWxsLCBMTFZNQW55UmVnQ2FsbENvbnYpOwotCi0gICAgICAgIG1fZnRsU3RhdGUuYmlu
YXJ5T3BzLmFwcGVuZChWYWx1ZUFkZERlc2NyaXB0b3Ioc3RhY2ttYXBJRCwgbV9ub2RlLT5vcmln
aW4uc2VtYW50aWMsIGxlZnRPcGVyYW5kLCByaWdodE9wZXJhbmQpKTsKLQotICAgICAgICBzZXRK
U1ZhbHVlKGNhbGwpOwotI2VuZGlmCisgICAgICAgIGNvbXBpbGVVbnR5cGVkQmluYXJ5T3A8VmFs
dWVBZGREZXNjcmlwdG9yPigpOwogICAgIH0KICAgICAKICAgICB2b2lkIGNvbXBpbGVTdHJDYXQo
KQpAQCAtMTcwMywzOCArMTczMyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIHVuc2lnbmVkIHN0YWNr
bWFwSUQgPSBtX3N0YWNrbWFwSURzKys7Ci0KLSAgICAgICAgICAgIGlmIChPcHRpb25zOjp2ZXJi
b3NlQ29tcGlsYXRpb24oKSkKLSAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgRW1pdHRpbmcg
QXJpdGhTdWIgcGF0Y2hwb2ludCB3aXRoIHN0YWNrbWFwICMiLCBzdGFja21hcElELCAiXG4iKTsK
LQotI2lmIEZUTF9VU0VTX0IzCi0gICAgICAgICAgICBDUkFTSCgpOwotI2Vsc2UKLSAgICAgICAg
ICAgIExWYWx1ZSBsZWZ0ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAg
ICAgIExWYWx1ZSByaWdodCA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSk7Ci0KLSAgICAg
ICAgICAgIC8vIEFyZ3VtZW50czogaWQsIGJ5dGVzLCB0YXJnZXQsIG51bUFyZ3MsIGFyZ3MuLi4K
LSAgICAgICAgICAgIFN0YWNrbWFwQXJndW1lbnRMaXN0IGFyZ3VtZW50czsKLSAgICAgICAgICAg
IGFyZ3VtZW50cy5hcHBlbmQobV9vdXQuY29uc3RJbnQ2NChzdGFja21hcElEKSk7Ci0gICAgICAg
ICAgICBhcmd1bWVudHMuYXBwZW5kKG1fb3V0LmNvbnN0SW50MzIoQXJpdGhTdWJEZXNjcmlwdG9y
OjppY1NpemUoKSkpOwotICAgICAgICAgICAgYXJndW1lbnRzLmFwcGVuZChjb25zdE51bGwobV9v
dXQucmVmOCkpOwotICAgICAgICAgICAgYXJndW1lbnRzLmFwcGVuZChtX291dC5jb25zdEludDMy
KDIpKTsKLSAgICAgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQobGVmdCk7Ci0gICAgICAgICAgICBh
cmd1bWVudHMuYXBwZW5kKHJpZ2h0KTsKLQotICAgICAgICAgICAgYXBwZW5kT1NSRXhpdEFyZ3Vt
ZW50c0ZvclBhdGNocG9pbnRJZldpbGxDYXRjaEV4Y2VwdGlvbihhcmd1bWVudHMsCi0gICAgICAg
ICAgICAgICAgRXhjZXB0aW9uVHlwZTo6QmluYXJ5T3BHZW5lcmF0b3IsIDMpOyAvLyBsZWZ0LCBy
aWdodCwgYW5kIHJlc3VsdCBzaG93IHVwIGluIHRoZSBzdGFja21hcCBsb2NhdGlvbnMuCi0KLSAg
ICAgICAgICAgIExWYWx1ZSBjYWxsID0gbV9vdXQuY2FsbChtX291dC5pbnQ2NCwgbV9vdXQucGF0
Y2hwb2ludEludDY0SW50cmluc2ljKCksIGFyZ3VtZW50cyk7Ci0gICAgICAgICAgICBzZXRJbnN0
cnVjdGlvbkNhbGxpbmdDb252ZW50aW9uKGNhbGwsIExMVk1BbnlSZWdDYWxsQ29udik7Ci0KLSAg
ICAgICAgICAgIFNuaXBwZXRPcGVyYW5kIGxlZnRPcGVyYW5kKGFic3RyYWN0VmFsdWUobV9ub2Rl
LT5jaGlsZDEoKSkucmVzdWx0VHlwZSgpKTsKLSAgICAgICAgICAgIFNuaXBwZXRPcGVyYW5kIHJp
Z2h0T3BlcmFuZChhYnN0cmFjdFZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpLnJlc3VsdFR5cGUoKSk7
Ci0gICAgICAgICAgICBtX2Z0bFN0YXRlLmJpbmFyeU9wcy5hcHBlbmQoQXJpdGhTdWJEZXNjcmlw
dG9yKHN0YWNrbWFwSUQsIG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLCBsZWZ0T3BlcmFuZCwgcmln
aHRPcGVyYW5kKSk7Ci0KLSAgICAgICAgICAgIHNldEpTVmFsdWUoY2FsbCk7Ci0jZW5kaWYKKyAg
ICAgICAgICAgIGNvbXBpbGVVbnR5cGVkQmluYXJ5T3A8QXJpdGhTdWJEZXNjcmlwdG9yLCBEb2Vz
Tm90SGF2ZUNvbnN0SW50MzJPcGVyYW5kT3B0aW1pemF0aW9uLCBEb2VzTm90SGF2ZUNvbnN0RG91
YmxlT3BlcmFuZE9wdGltaXphdGlvbj4oKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAKQEAgLTE4MzAsNTcgKzE4MjksNyBAQCBwcml2YXRlOgogICAgICAgICB9CiAKICAgICAgICAg
Y2FzZSBVbnR5cGVkVXNlOiB7Ci0gICAgICAgICAgICBFZGdlJiBsZWZ0Q2hpbGQgPSBtX25vZGUt
PmNoaWxkMSgpOwotICAgICAgICAgICAgRWRnZSYgcmlnaHRDaGlsZCA9IG1fbm9kZS0+Y2hpbGQy
KCk7Ci0KLSAgICAgICAgICAgIGlmICghKHByb3ZlblR5cGUobGVmdENoaWxkKSAmIFNwZWNGdWxs
TnVtYmVyKSB8fCAhKHByb3ZlblR5cGUocmlnaHRDaGlsZCkgJiBTcGVjRnVsbE51bWJlcikpIHsK
LSAgICAgICAgICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChtX291dC5pbnQ2NCwgbV9vdXQub3Bl
cmF0aW9uKG9wZXJhdGlvblZhbHVlTXVsKSwgbV9jYWxsRnJhbWUsCi0gICAgICAgICAgICAgICAg
ICAgIGxvd0pTVmFsdWUobGVmdENoaWxkKSwgbG93SlNWYWx1ZShyaWdodENoaWxkKSkpOwotICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdW5zaWdu
ZWQgc3RhY2ttYXBJRCA9IG1fc3RhY2ttYXBJRHMrKzsKLQotICAgICAgICAgICAgaWYgKE9wdGlv
bnM6OnZlcmJvc2VDb21waWxhdGlvbigpKQotICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBF
bWl0dGluZyBBcml0aE11bCBwYXRjaHBvaW50IHdpdGggc3RhY2ttYXAgIyIsIHN0YWNrbWFwSUQs
ICJcbiIpOwotCi0jaWYgRlRMX1VTRVNfQjMKLSAgICAgICAgICAgIENSQVNIKCk7Ci0jZWxzZQot
ICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dKU1ZhbHVlKGxlZnRDaGlsZCk7Ci0gICAgICAg
ICAgICBMVmFsdWUgcmlnaHQgPSBsb3dKU1ZhbHVlKHJpZ2h0Q2hpbGQpOwotCi0gICAgICAgICAg
ICBTbmlwcGV0T3BlcmFuZCBsZWZ0T3BlcmFuZChhYnN0cmFjdFZhbHVlKGxlZnRDaGlsZCkucmVz
dWx0VHlwZSgpKTsKLSAgICAgICAgICAgIFNuaXBwZXRPcGVyYW5kIHJpZ2h0T3BlcmFuZChhYnN0
cmFjdFZhbHVlKHJpZ2h0Q2hpbGQpLnJlc3VsdFR5cGUoKSk7Ci0KLSAgICAgICAgICAgIC8vIEJl
Y2F1c2UgdGhlIHNuaXBwZXQgZG9lcyBub3Qgc3VwcG9ydCBib3RoIG9wZXJhbmRzIGJlaW5nIGNv
bnN0YW50LCBpZiB0aGUgbGVmdAotICAgICAgICAgICAgLy8gb3BlcmFuZCBpcyBhbHJlYWR5IGEg
Y29uc3RhbnQsIHdlJ2xsIGp1c3QgcHJldGVuZCB0aGUgcmlnaHQgb3BlcmFuZCBpcyBub3QuCi0g
ICAgICAgICAgICBpZiAobGVmdENoaWxkLT5pc0ludDMyQ29uc3RhbnQoKSkKLSAgICAgICAgICAg
ICAgICBsZWZ0T3BlcmFuZC5zZXRDb25zdEludDMyKGxlZnRDaGlsZC0+YXNJbnQzMigpKTsKLSAg
ICAgICAgICAgIGVsc2UgaWYgKHJpZ2h0Q2hpbGQtPmlzSW50MzJDb25zdGFudCgpKQotICAgICAg
ICAgICAgICAgIHJpZ2h0T3BlcmFuZC5zZXRDb25zdEludDMyKHJpZ2h0Q2hpbGQtPmFzSW50MzIo
KSk7Ci0KLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFsZWZ0T3BlcmFuZC5pc0NvbnN0KCkg
fHwgIXJpZ2h0T3BlcmFuZC5pc0NvbnN0KCkpOwotCi0gICAgICAgICAgICAvLyBBcmd1bWVudHM6
IGlkLCBieXRlcywgdGFyZ2V0LCBudW1BcmdzLCBhcmdzLi4uCi0gICAgICAgICAgICBTdGFja21h
cEFyZ3VtZW50TGlzdCBhcmd1bWVudHM7Ci0gICAgICAgICAgICBhcmd1bWVudHMuYXBwZW5kKG1f
b3V0LmNvbnN0SW50NjQoc3RhY2ttYXBJRCkpOwotICAgICAgICAgICAgYXJndW1lbnRzLmFwcGVu
ZChtX291dC5jb25zdEludDMyKEFyaXRoTXVsRGVzY3JpcHRvcjo6aWNTaXplKCkpKTsKLSAgICAg
ICAgICAgIGFyZ3VtZW50cy5hcHBlbmQoY29uc3ROdWxsKG1fb3V0LnJlZjgpKTsKLSAgICAgICAg
ICAgIGFyZ3VtZW50cy5hcHBlbmQobV9vdXQuY29uc3RJbnQzMigyKSk7Ci0gICAgICAgICAgICBh
cmd1bWVudHMuYXBwZW5kKGxlZnQpOwotICAgICAgICAgICAgYXJndW1lbnRzLmFwcGVuZChyaWdo
dCk7Ci0KLSAgICAgICAgICAgIGFwcGVuZE9TUkV4aXRBcmd1bWVudHNGb3JQYXRjaHBvaW50SWZX
aWxsQ2F0Y2hFeGNlcHRpb24oYXJndW1lbnRzLAotICAgICAgICAgICAgICAgIEV4Y2VwdGlvblR5
cGU6OkJpbmFyeU9wR2VuZXJhdG9yLCAzKTsgLy8gbGVmdCwgcmlnaHQsIGFuZCByZXN1bHQgc2hv
dyB1cCBpbiB0aGUgc3RhY2ttYXAgbG9jYXRpb25zLgotCi0gICAgICAgICAgICBMVmFsdWUgY2Fs
bCA9IG1fb3V0LmNhbGwobV9vdXQuaW50NjQsIG1fb3V0LnBhdGNocG9pbnRJbnQ2NEludHJpbnNp
YygpLCBhcmd1bWVudHMpOwotICAgICAgICAgICAgc2V0SW5zdHJ1Y3Rpb25DYWxsaW5nQ29udmVu
dGlvbihjYWxsLCBMTFZNQW55UmVnQ2FsbENvbnYpOwotCi0gICAgICAgICAgICBtX2Z0bFN0YXRl
LmJpbmFyeU9wcy5hcHBlbmQoQXJpdGhNdWxEZXNjcmlwdG9yKHN0YWNrbWFwSUQsIG1fbm9kZS0+
b3JpZ2luLnNlbWFudGljLCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5kKSk7Ci0KLSAgICAgICAg
ICAgIHNldEpTVmFsdWUoY2FsbCk7Ci0jZW5kaWYKKyAgICAgICAgICAgIGNvbXBpbGVVbnR5cGVk
QmluYXJ5T3A8QXJpdGhNdWxEZXNjcmlwdG9yPigpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KIApAQCAtMTk0OSw2NyArMTg5OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIH0KIAogICAg
ICAgICBjYXNlIFVudHlwZWRVc2U6IHsKLSAgICAgICAgICAgIEVkZ2UmIGxlZnRDaGlsZCA9IG1f
bm9kZS0+Y2hpbGQxKCk7Ci0gICAgICAgICAgICBFZGdlJiByaWdodENoaWxkID0gbV9ub2RlLT5j
aGlsZDIoKTsKLQotICAgICAgICAgICAgaWYgKCEocHJvdmVuVHlwZShsZWZ0Q2hpbGQpICYgU3Bl
Y0Z1bGxOdW1iZXIpIHx8ICEocHJvdmVuVHlwZShyaWdodENoaWxkKSAmIFNwZWNGdWxsTnVtYmVy
KSkgewotICAgICAgICAgICAgICAgIHNldEpTVmFsdWUodm1DYWxsKG1fb3V0LmludDY0LCBtX291
dC5vcGVyYXRpb24ob3BlcmF0aW9uVmFsdWVEaXYpLCBtX2NhbGxGcmFtZSwKLSAgICAgICAgICAg
ICAgICAgICAgbG93SlNWYWx1ZShsZWZ0Q2hpbGQpLCBsb3dKU1ZhbHVlKHJpZ2h0Q2hpbGQpKSk7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB1
bnNpZ25lZCBzdGFja21hcElEID0gbV9zdGFja21hcElEcysrOwotCi0gICAgICAgICAgICBpZiAo
T3B0aW9uczo6dmVyYm9zZUNvbXBpbGF0aW9uKCkpCi0gICAgICAgICAgICAgICAgZGF0YUxvZygi
ICAgIEVtaXR0aW5nIEFyaXRoRGl2IHBhdGNocG9pbnQgd2l0aCBzdGFja21hcCAjIiwgc3RhY2tt
YXBJRCwgIlxuIik7Ci0KLSNpZiBGVExfVVNFU19CMwotICAgICAgICAgICAgQ1JBU0goKTsKLSNl
bHNlCi0gICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0pTVmFsdWUobGVmdENoaWxkKTsKLSAg
ICAgICAgICAgIExWYWx1ZSByaWdodCA9IGxvd0pTVmFsdWUocmlnaHRDaGlsZCk7Ci0KLSAgICAg
ICAgICAgIFNuaXBwZXRPcGVyYW5kIGxlZnRPcGVyYW5kKGFic3RyYWN0VmFsdWUobGVmdENoaWxk
KS5yZXN1bHRUeXBlKCkpOwotICAgICAgICAgICAgU25pcHBldE9wZXJhbmQgcmlnaHRPcGVyYW5k
KGFic3RyYWN0VmFsdWUocmlnaHRDaGlsZCkucmVzdWx0VHlwZSgpKTsKLQotICAgICAgICAgICAg
aWYgKGxlZnRDaGlsZC0+aXNJbnQzMkNvbnN0YW50KCkpCi0gICAgICAgICAgICAgICAgbGVmdE9w
ZXJhbmQuc2V0Q29uc3RJbnQzMihsZWZ0Q2hpbGQtPmFzSW50MzIoKSk7Ci0jaWYgVVNFKEpTVkFM
VUU2NCkKLSAgICAgICAgICAgIGVsc2UgaWYgKGxlZnRDaGlsZC0+aXNEb3VibGVDb25zdGFudCgp
KQotICAgICAgICAgICAgICAgIGxlZnRPcGVyYW5kLnNldENvbnN0RG91YmxlKGxlZnRDaGlsZC0+
YXNOdW1iZXIoKSk7Ci0jZW5kaWYKLQotICAgICAgICAgICAgaWYgKGxlZnRPcGVyYW5kLmlzQ29u
c3QoKSkgewotICAgICAgICAgICAgICAgIC8vIFRoZSBzbmlwcGV0IGdlbmVyYXRvciBvbmx5IHN1
cHBvcnRzIDEgYXJndW1lbnQgYXMgYSBjb25zdGFudC4KLSAgICAgICAgICAgICAgICAvLyBJZ25v
cmUgdGhlIHJpZ2h0Q2hpbGQncyBjb25zdC1uZXNzLgotICAgICAgICAgICAgfSBlbHNlIGlmIChy
aWdodENoaWxkLT5pc0ludDMyQ29uc3RhbnQoKSkKLSAgICAgICAgICAgICAgICByaWdodE9wZXJh
bmQuc2V0Q29uc3RJbnQzMihyaWdodENoaWxkLT5hc0ludDMyKCkpOwotI2lmIFVTRShKU1ZBTFVF
NjQpCi0gICAgICAgICAgICBlbHNlIGlmIChyaWdodENoaWxkLT5pc0RvdWJsZUNvbnN0YW50KCkp
Ci0gICAgICAgICAgICAgICAgcmlnaHRPcGVyYW5kLnNldENvbnN0RG91YmxlKHJpZ2h0Q2hpbGQt
PmFzTnVtYmVyKCkpOwotI2VuZGlmCi0KLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFsZWZ0
T3BlcmFuZC5pc0NvbnN0KCkgfHwgIXJpZ2h0T3BlcmFuZC5pc0NvbnN0KCkpOwotCi0gICAgICAg
ICAgICAvLyBBcmd1bWVudHM6IGlkLCBieXRlcywgdGFyZ2V0LCBudW1BcmdzLCBhcmdzLi4uCi0g
ICAgICAgICAgICBTdGFja21hcEFyZ3VtZW50TGlzdCBhcmd1bWVudHM7Ci0gICAgICAgICAgICBh
cmd1bWVudHMuYXBwZW5kKG1fb3V0LmNvbnN0SW50NjQoc3RhY2ttYXBJRCkpOwotICAgICAgICAg
ICAgYXJndW1lbnRzLmFwcGVuZChtX291dC5jb25zdEludDMyKEFyaXRoRGl2RGVzY3JpcHRvcjo6
aWNTaXplKCkpKTsKLSAgICAgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQoY29uc3ROdWxsKG1fb3V0
LnJlZjgpKTsKLSAgICAgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQobV9vdXQuY29uc3RJbnQzMigy
KSk7Ci0gICAgICAgICAgICBhcmd1bWVudHMuYXBwZW5kKGxlZnQpOwotICAgICAgICAgICAgYXJn
dW1lbnRzLmFwcGVuZChyaWdodCk7Ci0KLSAgICAgICAgICAgIGFwcGVuZE9TUkV4aXRBcmd1bWVu
dHNGb3JQYXRjaHBvaW50SWZXaWxsQ2F0Y2hFeGNlcHRpb24oYXJndW1lbnRzLAotICAgICAgICAg
ICAgICAgIEV4Y2VwdGlvblR5cGU6OkJpbmFyeU9wR2VuZXJhdG9yLCAzKTsgLy8gbGVmdCwgcmln
aHQsIGFuZCByZXN1bHQgc2hvdyB1cCBpbiB0aGUgc3RhY2ttYXAgbG9jYXRpb25zLgotCi0gICAg
ICAgICAgICBMVmFsdWUgY2FsbCA9IG1fb3V0LmNhbGwobV9vdXQuaW50NjQsIG1fb3V0LnBhdGNo
cG9pbnRJbnQ2NEludHJpbnNpYygpLCBhcmd1bWVudHMpOwotICAgICAgICAgICAgc2V0SW5zdHJ1
Y3Rpb25DYWxsaW5nQ29udmVudGlvbihjYWxsLCBMTFZNQW55UmVnQ2FsbENvbnYpOwotCi0gICAg
ICAgICAgICBtX2Z0bFN0YXRlLmJpbmFyeU9wcy5hcHBlbmQoQXJpdGhEaXZEZXNjcmlwdG9yKHN0
YWNrbWFwSUQsIG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVy
YW5kKSk7Ci0KLSAgICAgICAgICAgIHNldEpTVmFsdWUoY2FsbCk7Ci0jZW5kaWYgLy8gRlRMX1VT
RVNfQjMKKyAgICAgICAgICAgIGNvbXBpbGVVbnR5cGVkQmluYXJ5T3A8QXJpdGhEaXZEZXNjcmlw
dG9yLCBIYXNDb25zdEludDMyT3BlcmFuZE9wdGltaXphdGlvbiwgSGFzQ29uc3REb3VibGVPcGVy
YW5kT3B0aW1pemF0aW9uPigpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU3RhdGUuaAkocmV2aXNpb24gMTkzOTY5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00
MCw3ICs0MCw2IEBACiAjaW5jbHVkZSAiRlRMSlNDYWxsVmFyYXJncy5oIgogI2luY2x1ZGUgIkZU
TEpTVGFpbENhbGwuaCIKICNpbmNsdWRlICJGVExTdGFja01hcHMuaCIKLSNpbmNsdWRlICJGVExT
dGF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIEZUTCB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267190</attachid>
            <date>2015-12-11 14:40:33 -0800</date>
            <delta_ts>2015-12-11 14:59:43 -0800</delta_ts>
            <desc>patch 2: revert unneeded part where I pushed m_name down to InlineCacheDescriptor.</desc>
            <filename>bug-152185.patch</filename>
            <type>text/plain</type>
            <size>39596</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTkzOTczKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgxIEBA
CisyMDE1LTEyLTExICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZWZhY3RvcmluZyB0byByZWR1Y2UgcG90ZW50aWFsIGN1dC1wYXN0ZSBlcnJvcnMgd2l0aCB0aGUg
RlRMIElDcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1MjE4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAg
ICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJz
OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisK
KyAgICAgICAgKiBmdGwvRlRMQ29tcGlsZS5jcHA6CisgICAgICAgIC0gSUNzIG5vdyBoYXZlIHRo
ZWlyIG93biBuYW1lcy4gIEdldEJ5SWQgYW5kIFB1dEJ5SUQgZmFzdCBwYXRoIElDcyBubyBsb25n
ZXIganVzdAorICAgICAgICAgIHNheSAiaW5saW5lIGNhY2hlIGZhc3QgcGF0aCIuCisKKyAgICAg
ICAgKiBmdGwvRlRMQ29tcGlsZUJpbmFyeU9wLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpnZW5l
cmF0ZUJpbmFyeUFyaXRoT3BGYXN0UGF0aCk6CisgICAgICAgIC0gRml4ZWQgYW4gaW5kZW50YXRp
b24uCisKKyAgICAgICAgKiBmdGwvRlRMSW5saW5lQ2FjaGVEZXNjcmlwdG9yLmg6CisgICAgICAg
IChKU0M6OkZUTDo6SW5saW5lQ2FjaGVEZXNjcmlwdG9yOjpJbmxpbmVDYWNoZURlc2NyaXB0b3Ip
OgorICAgICAgICAoSlNDOjpGVEw6OklubGluZUNhY2hlRGVzY3JpcHRvcjo6bmFtZSk6CisgICAg
ICAgIChKU0M6OkZUTDo6R2V0QnlJZERlc2NyaXB0b3I6OkdldEJ5SWREZXNjcmlwdG9yKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpQdXRCeUlkRGVzY3JpcHRvcjo6UHV0QnlJZERlc2NyaXB0b3IpOgor
ICAgICAgICAoSlNDOjpGVEw6OkNoZWNrSW5EZXNjcmlwdG9yOjpDaGVja0luRGVzY3JpcHRvcik6
CisgICAgICAgIChKU0M6OkZUTDo6QmluYXJ5T3BEZXNjcmlwdG9yOjpub2RlVHlwZSk6CisgICAg
ICAgIChKU0M6OkZUTDo6QmluYXJ5T3BEZXNjcmlwdG9yOjpzaXplKToKKyAgICAgICAgKEpTQzo6
RlRMOjpCaW5hcnlPcERlc2NyaXB0b3I6OnNsb3dQYXRoRnVuY3Rpb24pOgorICAgICAgICAoSlND
OjpGVEw6OkJpbmFyeU9wRGVzY3JpcHRvcjo6bGVmdE9wZXJhbmQpOgorICAgICAgICAoSlNDOjpG
VEw6OkJpbmFyeU9wRGVzY3JpcHRvcjo6QmluYXJ5T3BEZXNjcmlwdG9yKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpBcml0aERpdkRlc2NyaXB0b3I6OkFyaXRoRGl2RGVzY3JpcHRvcik6CisgICAgICAg
IChKU0M6OkZUTDo6QXJpdGhEaXZEZXNjcmlwdG9yOjppY1NpemUpOgorICAgICAgICAoSlNDOjpG
VEw6OkFyaXRoRGl2RGVzY3JpcHRvcjo6bm9kZVR5cGUpOgorICAgICAgICAoSlNDOjpGVEw6OkFy
aXRoRGl2RGVzY3JpcHRvcjo6b3BOYW1lKToKKyAgICAgICAgKEpTQzo6RlRMOjpBcml0aERpdkRl
c2NyaXB0b3I6OnNsb3dQYXRoRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpGVEw6OkFyaXRoRGl2
RGVzY3JpcHRvcjo6bm9uTnVtYmVyU2xvd1BhdGhGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkZU
TDo6QXJpdGhNdWxEZXNjcmlwdG9yOjpBcml0aE11bERlc2NyaXB0b3IpOgorICAgICAgICAoSlND
OjpGVEw6OkFyaXRoTXVsRGVzY3JpcHRvcjo6aWNTaXplKToKKyAgICAgICAgKEpTQzo6RlRMOjpB
cml0aE11bERlc2NyaXB0b3I6Om5vZGVUeXBlKToKKyAgICAgICAgKEpTQzo6RlRMOjpBcml0aE11
bERlc2NyaXB0b3I6Om9wTmFtZSk6CisgICAgICAgIChKU0M6OkZUTDo6QXJpdGhNdWxEZXNjcmlw
dG9yOjpzbG93UGF0aEZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6RlRMOjpBcml0aE11bERlc2Ny
aXB0b3I6Om5vbk51bWJlclNsb3dQYXRoRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpGVEw6OkFy
aXRoU3ViRGVzY3JpcHRvcjo6QXJpdGhTdWJEZXNjcmlwdG9yKToKKyAgICAgICAgKEpTQzo6RlRM
OjpBcml0aFN1YkRlc2NyaXB0b3I6OmljU2l6ZSk6CisgICAgICAgIChKU0M6OkZUTDo6QXJpdGhT
dWJEZXNjcmlwdG9yOjpub2RlVHlwZSk6CisgICAgICAgIChKU0M6OkZUTDo6QXJpdGhTdWJEZXNj
cmlwdG9yOjpvcE5hbWUpOgorICAgICAgICAoSlNDOjpGVEw6OkFyaXRoU3ViRGVzY3JpcHRvcjo6
c2xvd1BhdGhGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkZUTDo6QXJpdGhTdWJEZXNjcmlwdG9y
Ojpub25OdW1iZXJTbG93UGF0aEZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6RlRMOjpWYWx1ZUFk
ZERlc2NyaXB0b3I6OlZhbHVlQWRkRGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6OkZUTDo6VmFs
dWVBZGREZXNjcmlwdG9yOjppY1NpemUpOgorICAgICAgICAoSlNDOjpGVEw6OlZhbHVlQWRkRGVz
Y3JpcHRvcjo6bm9kZVR5cGUpOgorICAgICAgICAoSlNDOjpGVEw6OlZhbHVlQWRkRGVzY3JpcHRv
cjo6b3BOYW1lKToKKyAgICAgICAgKEpTQzo6RlRMOjpWYWx1ZUFkZERlc2NyaXB0b3I6OnNsb3dQ
YXRoRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpGVEw6OlZhbHVlQWRkRGVzY3JpcHRvcjo6bm9u
TnVtYmVyU2xvd1BhdGhGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkZUTDo6TGF6eVNsb3dQYXRo
RGVzY3JpcHRvcjo6TGF6eVNsb3dQYXRoRGVzY3JpcHRvcik6CisgICAgICAgIChKU0M6OkZUTDo6
UHJvYmVEZXNjcmlwdG9yOjpQcm9iZURlc2NyaXB0b3IpOgorICAgICAgICAoSlNDOjpGVEw6OkJp
bmFyeU9wRGVzY3JpcHRvcjo6bmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkZUTDo6Qmlu
YXJ5T3BEZXNjcmlwdG9yOjpmYXN0UGF0aElDTmFtZSk6IERlbGV0ZWQuCisgICAgICAgICogZnRs
L0ZUTElubGluZUNhY2hlRGVzY3JpcHRvcklubGluZXMuaDogUmVtb3ZlZC4KKyAgICAgICAgLSBD
b25zb2xpZGF0ZSB0aGUgbnVtYmVyIG9mIHBsYWNlcyB3aGVyZSB3ZSBoYXZlIHRvIGZpbGwgaW4g
YSBkYXRhIGFib3V0IG5ldworICAgICAgICAgIHNuaXBwZXQgSUNzLiAgSXQgaXMgYWxsIGRvbmUg
aW4gRlRMSW5saW5lQ2FjaGVEZXNjcmlwdG9yLmggbm93LiAgIAorCisgICAgICAgICogZnRsL0ZU
TEpJVEZpbmFsaXplci5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6SklURmluYWxpemVyOjpmaW5h
bGl6ZUZ1bmN0aW9uKToKKworICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvTExWTS5jcHA6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZVVudHlwZWRCaW5h
cnlPcCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZVZh
bHVlQWRkKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjpjb21waWxl
QXJpdGhBZGRPclN1Yik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvTExWTTo6
Y29tcGlsZUFyaXRoTXVsKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZN
Ojpjb21waWxlQXJpdGhEaXYpOgorICAgICAgICAtIEludHJvZHVjZWQgYSBjb21waWxlVW50eXBl
ZEJpbmFyeU9wKCkgdGVtcGxhdGUgYW5kIHVzZSB0aGF0IGF0IGFsbCB0aGUgRlRMCisgICAgICAg
ICAgcGxhY2VzIHRoYXQgbmVlZCB0byB1c2UgYSBzbmlwcGV0LiAgVGhpcyByZWR1Y2VzIHRoZSBh
bW91bnQgb2YgY3V0IGFuZCBwYXN0ZQorICAgICAgICAgIGNvZGUuCisKKyAgICAgICAgKiBmdGwv
RlRMU3RhdGUuaDoKKyAgICAgICAgLSBSZW1vdmVkIGEgYmFkICNpbmNsdWRlLgorCiAyMDE1LTEy
LTExICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgY2hl
Y2stZm9yLWluYXBwcm9wcmlhdGUtb2JqYy1jbGFzcy1uYW1lcyBzaG91bGQgY2hlY2sgYWxsIGNs
YXNzIG5hbWVzLCBub3QganVzdCBleHRlcm5hbGx5IHZpc2libGUgb25lcwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCShyZXZpc2lvbiAxOTM5NjkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMzE5LDcgKzEzMTksNiBAQAogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5cZnRsXEZUTEZvck9TUkVudHJ5SklUQ29kZS5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5cZnRsXEZUTEdlbmVyYXRlZEZ1bmN0aW9uLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxmdGxcRlRMSW5saW5lQ2FjaGVEZXNjcmlwdG9yLmgiIC8+Ci0g
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxmdGxcRlRMSW5saW5lQ2FjaGVEZXNjcmlwdG9ySW5s
aW5lcy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZnRsXEZUTElubGluZUNhY2hl
U2l6ZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZnRsXEZUTEludHJpbnNpY1Jl
cG9zaXRvcnkuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGZ0bFxGVExKSVRDb2Rl
LmgiIC8+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJv
ai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJv
ai5maWx0ZXJzCShyZXZpc2lvbiAxOTM5NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMJKHdvcmtp
bmcgY29weSkKQEAgLTQyNTIsOSArNDI1Miw2IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxmdGxcRlRMSW5saW5lQ2FjaGVEZXNjcmlwdG9yLmgiPgogICAgICAgPEZpbHRlcj5mdGw8L0Zp
bHRlcj4KICAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGZ0bFxG
VExJbmxpbmVDYWNoZURlc2NyaXB0b3JJbmxpbmVzLmgiPgotICAgICAgPEZpbHRlcj5mdGw8L0Zp
bHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGZ0bFxG
VExJbmxpbmVDYWNoZVNpemUuaCI+CiAgICAgICA8RmlsdGVyPmZ0bDwvRmlsdGVyPgogICAgIDwv
Q2xJbmNsdWRlPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE5
Mzk2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yMDAyLDcgKzIwMDIsNiBAQAogCQlG
RTE4N0EwRDFDMDMwRDVDMDAzOEJCQ0EgLyogSklURGl2R2VuZXJhdG9yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTE4N0EwQjFDMDIyOTIzMDAzOEJC
Q0EgLyogSklURGl2R2VuZXJhdG9yLmggKi87IH07CiAJCUZFMTg3QTBFMUMwMzBENjQwMDM4QkJD
QSAvKiBKSVREaXZHZW5lcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRkUxODdBMEExQzAyMjkyMzAwMzhCQkNBIC8qIEpJVERpdkdlbmVyYXRv
ci5jcHAgKi87IH07CiAJCUZFMTg3QTBGMUMwMzBENkMwMDM4QkJDQSAvKiBTbmlwcGV0T3BlcmFu
ZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxODdB
MEMxQzAyRUJBNzAwMzhCQkNBIC8qIFNuaXBwZXRPcGVyYW5kLmggKi87IH07Ci0JCUZFMTg3QTE4
MUMwRTEzREQwMDM4QkJDQSAvKiBGVExJbmxpbmVDYWNoZURlc2NyaXB0b3JJbmxpbmVzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTE4N0ExNzFDMEUx
M0M2MDAzOEJCQ0EgLyogRlRMSW5saW5lQ2FjaGVEZXNjcmlwdG9ySW5saW5lcy5oICovOyB9Owog
CQlGRTE4N0ExOTFDMEUxM0UzMDAzOEJCQ0EgLyogRlRMQ29tcGlsZUJpbmFyeU9wLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFMTg3QTE1MUMwRTEz
QzYwMDM4QkJDQSAvKiBGVExDb21waWxlQmluYXJ5T3AuY3BwICovOyB9OwogCQlGRTE4N0ExQTFD
MEUxM0U2MDAzOEJCQ0EgLyogRlRMQ29tcGlsZUJpbmFyeU9wLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTE4N0ExNjFDMEUxM0M2MDAzOEJCQ0EgLyog
RlRMQ29tcGlsZUJpbmFyeU9wLmggKi87IH07CiAJCUZFMUMwRkZEMUIxOTNFOTgwMEI1M0ZDQSAv
KiBFeGNlcHRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEZFMUMwRkZDMUIxOTNFOTgwMEI1M0ZDQSAvKiBFeGNlcHRpb24uaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNDE5MCw3ICs0MTg5LDYgQEAK
IAkJRkUxODdBMEMxQzAyRUJBNzAwMzhCQkNBIC8qIFNuaXBwZXRPcGVyYW5kLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNuaXBwZXRPcGVyYW5kLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUZFMTg3QTE1MUMwRTEzQzYwMDM4QkJDQSAvKiBGVExDb21waWxlQmlu
YXJ5T3AuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRlRMQ29tcGls
ZUJpbmFyeU9wLmNwcDsgcGF0aCA9IGZ0bC9GVExDb21waWxlQmluYXJ5T3AuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGRTE4N0ExNjFDMEUxM0M2MDAzOEJCQ0EgLyogRlRMQ29t
cGlsZUJpbmFyeU9wLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZUTENvbXBp
bGVCaW5hcnlPcC5oOyBwYXRoID0gZnRsL0ZUTENvbXBpbGVCaW5hcnlPcC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlGRTE4N0ExNzFDMEUxM0M2MDAzOEJCQ0EgLyogRlRMSW5saW5l
Q2FjaGVEZXNjcmlwdG9ySW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBGVExJbmxpbmVDYWNoZURlc2NyaXB0b3JJbmxpbmVzLmg7IHBhdGggPSBmdGwvRlRMSW5saW5l
Q2FjaGVEZXNjcmlwdG9ySW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlG
RTFDMEZGQzFCMTkzRTk4MDBCNTNGQ0EgLyogRXhjZXB0aW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEV4Y2VwdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGRTFDMEZGRTFCMTk0RkQxMDBCNTNGQ0EgLyogRXhjZXB0aW9uLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV4Y2VwdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUZFMjBDRTlCMTVGMDRBOTUwMERGMzQzMCAvKiBMTEludENMb29wLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50Q0xvb3AuY3BwOyBwYXRo
ID0gbGxpbnQvTExJbnRDTG9vcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00
NTA4LDcgKzQ1MDYsNiBAQAogCQkJCTBGRDhBMzE2MTdENTFGMjIwMENBMkM0MCAvKiBGVExGb3JP
U1JFbnRyeUpJVENvZGUuaCAqLywKIAkJCQlBNzhBOTc3QzE3OTczOEQ1MDA5REY3NDQgLyogRlRM
R2VuZXJhdGVkRnVuY3Rpb24uaCAqLywKIAkJCQkwRjI1RjFBNzE4MTYzNUYzMDA1MjJGMzkgLyog
RlRMSW5saW5lQ2FjaGVEZXNjcmlwdG9yLmggKi8sCi0JCQkJRkUxODdBMTcxQzBFMTNDNjAwMzhC
QkNBIC8qIEZUTElubGluZUNhY2hlRGVzY3JpcHRvcklubGluZXMuaCAqLywKIAkJCQkwRjI1RjFB
ODE4MTYzNUYzMDA1MjJGMzkgLyogRlRMSW5saW5lQ2FjaGVTaXplLmNwcCAqLywKIAkJCQkwRjI1
RjFBOTE4MTYzNUYzMDA1MjJGMzkgLyogRlRMSW5saW5lQ2FjaGVTaXplLmggKi8sCiAJCQkJMEZF
QTBBMjYxNzA5NjIzQjAwQkI3MjJDIC8qIEZUTEludHJpbnNpY1JlcG9zaXRvcnkuY3BwICovLApA
QCAtNjk4Myw3ICs2OTgwLDYgQEAKIAkJCQlDMkM4RDAyRDE0QTNDNkUwMDA1NzhFNjUgLyogQ29w
aWVkU3BhY2VJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjdDMTFBRDFCQzM4NjJDMDBD
NzRDREIgLyogQ29weUJhcnJpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNUE1MkQwMTdBREQ3
MTcwMDhFQ0IyRCAvKiBDb3B5VG9rZW4uaCBpbiBIZWFkZXJzICovLAotCQkJCUZFMTg3QTE4MUMw
RTEzREQwMDM4QkJDQSAvKiBGVExJbmxpbmVDYWNoZURlc2NyaXB0b3JJbmxpbmVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlDMjIzOUQxODE2MjYyQkREMDA1QUM1RkQgLyogQ29weVZpc2l0b3IuaCBp
biBIZWFkZXJzICovLAogCQkJCUMyMjM5RDE5MTYyNjJCREQwMDVBQzVGRCAvKiBDb3B5VmlzaXRv
cklubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyMThEMTQwMTY1NUNGRDUwMDYyQkI4MSAv
KiBDb3B5V29ya0xpc3QuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExDb21waWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTENvbXBpbGUuY3BwCShyZXZpc2lvbiAxOTM5NjkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3
IEBACiAjaW5jbHVkZSAiRlRMQ29tcGlsZUJpbmFyeU9wLmgiCiAjaW5jbHVkZSAiRlRMRXhjZXB0
aW9uSGFuZGxlck1hbmFnZXIuaCIKICNpbmNsdWRlICJGVExFeGl0VGh1bmtHZW5lcmF0b3IuaCIK
LSNpbmNsdWRlICJGVExJbmxpbmVDYWNoZURlc2NyaXB0b3JJbmxpbmVzLmgiCisjaW5jbHVkZSAi
RlRMSW5saW5lQ2FjaGVEZXNjcmlwdG9yLmgiCiAjaW5jbHVkZSAiRlRMSW5saW5lQ2FjaGVTaXpl
LmgiCiAjaW5jbHVkZSAiRlRMSklUQ29kZS5oIgogI2luY2x1ZGUgIkZUTFRodW5rcy5oIgpAQCAt
MjE1LDcgKzIxNSw3IEBAIHN0YXRpYyB2b2lkIGdlbmVyYXRlSW5saW5lSWZQb3NzaWJsZU91dE8K
IHRlbXBsYXRlPHR5cGVuYW1lIERlc2NyaXB0b3JUeXBlPgogdm9pZCBnZW5lcmF0ZUlDRmFzdFBh
dGgoCiAgICAgU3RhdGUmIHN0YXRlLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgR2VuZXJhdGVkRnVu
Y3Rpb24gZ2VuZXJhdGVkRnVuY3Rpb24sCi0gICAgU3RhY2tNYXBzOjpSZWNvcmRNYXAmIHJlY29y
ZE1hcCwgRGVzY3JpcHRvclR5cGUmIGljLCBzaXplX3Qgc2l6ZU9mSUMpCisgICAgU3RhY2tNYXBz
OjpSZWNvcmRNYXAmIHJlY29yZE1hcCwgRGVzY3JpcHRvclR5cGUmIGljLCBzaXplX3Qgc2l6ZU9m
SUMsIGNvbnN0IGNoYXIqIGljTmFtZSkKIHsKICAgICBWTSYgdm0gPSBzdGF0ZS5ncmFwaC5tX3Zt
OwogCkBAIC0yMzksNyArMjM5LDcgQEAgdm9pZCBnZW5lcmF0ZUlDRmFzdFBhdGgoCiAgICAgICAg
IGNoYXIqIHN0YXJ0T2ZJQyA9CiAgICAgICAgICAgICBiaXR3aXNlX2Nhc3Q8Y2hhcio+KGdlbmVy
YXRlZEZ1bmN0aW9uKSArIHJlY29yZC5pbnN0cnVjdGlvbk9mZnNldDsKIAotICAgICAgICBnZW5l
cmF0ZUlubGluZUlmUG9zc2libGVPdXRPZkxpbmVJZk5vdChzdGF0ZSwgdm0sIGNvZGVCbG9jaywg
ZmFzdFBhdGhKSVQsIHN0YXJ0T2ZJQywgc2l6ZU9mSUMsICJpbmxpbmUgY2FjaGUgZmFzdCBwYXRo
IiwgWyZdIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyLCBDQ2FsbEhlbHBlcnMmLCBib29sKSB7Cisg
ICAgICAgIGdlbmVyYXRlSW5saW5lSWZQb3NzaWJsZU91dE9mTGluZUlmTm90KHN0YXRlLCB2bSwg
Y29kZUJsb2NrLCBmYXN0UGF0aEpJVCwgc3RhcnRPZklDLCBzaXplT2ZJQywgaWNOYW1lLCBbJl0g
KExpbmtCdWZmZXImIGxpbmtCdWZmZXIsIENDYWxsSGVscGVycyYsIGJvb2wpIHsKICAgICAgICAg
ICAgIHN0YXRlLmZpbmFsaXplci0+c2lkZUNvZGVMaW5rQnVmZmVyLT5saW5rKGljLm1fc2xvd1Bh
dGhEb25lW2ldLAogICAgICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsKHN0YXJ0T2ZJQyAr
IHNpemVPZklDKSk7CiAKQEAgLTMwNCw3ICszMDQsNyBAQCBzdGF0aWMgdm9pZCBnZW5lcmF0ZUNo
ZWNrSW5JQ0Zhc3RQYXRoKAogICAgICAgICAgICAgICAgIGNhbGxSZXR1cm5Mb2NhdGlvbiwgc2xv
d1BhdGhCZWdpbkxvYyk7CiAgICAgICAgIH07CiAKLSAgICAgICAgZ2VuZXJhdGVJbmxpbmVJZlBv
c3NpYmxlT3V0T2ZMaW5lSWZOb3Qoc3RhdGUsIHZtLCBjb2RlQmxvY2ssIGZhc3RQYXRoSklULCBz
dGFydE9mSUMsIHNpemVPZklDLCAiQ2hlY2tJbiBpbmxpbmUgY2FjaGUiLCBwb3N0TGluayk7Cisg
ICAgICAgIGdlbmVyYXRlSW5saW5lSWZQb3NzaWJsZU91dE9mTGluZUlmTm90KHN0YXRlLCB2bSwg
Y29kZUJsb2NrLCBmYXN0UGF0aEpJVCwgc3RhcnRPZklDLCBzaXplT2ZJQywgIkNoZWNrSW4iLCBw
b3N0TGluayk7CiAgICAgfQogfQogCkBAIC0zMzksOCArMzM5LDcgQEAgc3RhdGljIHZvaWQgZ2Vu
ZXJhdGVCaW5hcnlPcElDRmFzdFBhdGgoCiAgICAgICAgIGdlbmVyYXRlQmluYXJ5T3BGYXN0UGF0
aChpYywgZmFzdFBhdGhKSVQsIHJlc3VsdCwgbGVmdCwgcmlnaHQsIHVzZWRSZWdpc3RlcnMsIGRv
bmUsIHNsb3dQYXRoU3RhcnQpOwogCiAgICAgICAgIGNoYXIqIHN0YXJ0T2ZJQyA9IGJpdHdpc2Vf
Y2FzdDxjaGFyKj4oZ2VuZXJhdGVkRnVuY3Rpb24pICsgcmVjb3JkLmluc3RydWN0aW9uT2Zmc2V0
OwotICAgICAgICBjb25zdCBjaGFyKiBmYXN0UGF0aElDTmFtZSA9IGljLmZhc3RQYXRoSUNOYW1l
KCk7Ci0gICAgICAgIGdlbmVyYXRlSW5saW5lSWZQb3NzaWJsZU91dE9mTGluZUlmTm90KHN0YXRl
LCB2bSwgY29kZUJsb2NrLCBmYXN0UGF0aEpJVCwgc3RhcnRPZklDLCBzaXplT2ZJQywgZmFzdFBh
dGhJQ05hbWUsIFsmXSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlciwgQ0NhbGxIZWxwZXJzJiwgYm9v
bCkgeworICAgICAgICBnZW5lcmF0ZUlubGluZUlmUG9zc2libGVPdXRPZkxpbmVJZk5vdChzdGF0
ZSwgdm0sIGNvZGVCbG9jaywgZmFzdFBhdGhKSVQsIHN0YXJ0T2ZJQywgc2l6ZU9mSUMsIGljLm5h
bWUoKSwgWyZdIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyLCBDQ2FsbEhlbHBlcnMmLCBib29sKSB7
CiAgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoZG9uZSwgQ29kZUxvY2F0aW9uTGFiZWwoc3Rh
cnRPZklDICsgc2l6ZU9mSUMpKTsKICAgICAgICAgICAgIHN0YXRlLmZpbmFsaXplci0+c2lkZUNv
ZGVMaW5rQnVmZmVyLT5saW5rKGljLm1fc2xvd1BhdGhEb25lW2ldLCBDb2RlTG9jYXRpb25MYWJl
bChzdGFydE9mSUMgKyBzaXplT2ZJQykpOwogICAgICAgICAgICAgCkBAIC04NzcsMTIgKzg3Niwx
MiBAQCBzdGF0aWMgdm9pZCBmaXhGdW5jdGlvbkJhc2VkT25TdGFja01hcHMoCiAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IHN0YXRlLmdldEJ5SWRzLnNpemUoKTsgaS0tOykgewogICAgICAgICAg
ICAgZ2VuZXJhdGVJQ0Zhc3RQYXRoKAogICAgICAgICAgICAgICAgIHN0YXRlLCBjb2RlQmxvY2ss
IGdlbmVyYXRlZEZ1bmN0aW9uLCByZWNvcmRNYXAsIHN0YXRlLmdldEJ5SWRzW2ldLAotICAgICAg
ICAgICAgICAgIHNpemVPZkdldEJ5SWQoKSk7CisgICAgICAgICAgICAgICAgc2l6ZU9mR2V0QnlJ
ZCgpLCAiR2V0QnlJZCIpOwogICAgICAgICB9CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IHN0
YXRlLnB1dEJ5SWRzLnNpemUoKTsgaS0tOykgewogICAgICAgICAgICAgZ2VuZXJhdGVJQ0Zhc3RQ
YXRoKAogICAgICAgICAgICAgICAgIHN0YXRlLCBjb2RlQmxvY2ssIGdlbmVyYXRlZEZ1bmN0aW9u
LCByZWNvcmRNYXAsIHN0YXRlLnB1dEJ5SWRzW2ldLAotICAgICAgICAgICAgICAgIHNpemVPZlB1
dEJ5SWQoKSk7CisgICAgICAgICAgICAgICAgc2l6ZU9mUHV0QnlJZCgpLCAiUHV0QnlJZCIpOwog
ICAgICAgICB9CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IHN0YXRlLmNoZWNrSW5zLnNpemUo
KTsgaS0tOykgewogICAgICAgICAgICAgZ2VuZXJhdGVDaGVja0luSUNGYXN0UGF0aCgKQEAgLTky
MSw3ICs5MjAsNyBAQCBzdGF0aWMgdm9pZCBmaXhGdW5jdGlvbkJhc2VkT25TdGFja01hcHMoCiAK
ICAgICAgICAgY2hhciogc3RhcnRPZklDID0gYml0d2lzZV9jYXN0PGNoYXIqPihnZW5lcmF0ZWRG
dW5jdGlvbikgKyBjYWxsLm1faW5zdHJ1Y3Rpb25PZmZzZXQ7CiAKLSAgICAgICAgZ2VuZXJhdGVJ
bmxpbmVJZlBvc3NpYmxlT3V0T2ZMaW5lSWZOb3Qoc3RhdGUsIHZtLCBjb2RlQmxvY2ssIGZhc3RQ
YXRoSklULCBzdGFydE9mSUMsIHNpemVPZkNhbGwoKSwgIkpTQ2FsbCBpbmxpbmUgY2FjaGUiLCBb
Jl0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIsIENDYWxsSGVscGVycyYsIGJvb2wpIHsKKyAgICAg
ICAgZ2VuZXJhdGVJbmxpbmVJZlBvc3NpYmxlT3V0T2ZMaW5lSWZOb3Qoc3RhdGUsIHZtLCBjb2Rl
QmxvY2ssIGZhc3RQYXRoSklULCBzdGFydE9mSUMsIHNpemVPZkNhbGwoKSwgIkpTQ2FsbCIsIFsm
XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlciwgQ0NhbGxIZWxwZXJzJiwgYm9vbCkgewogICAgICAg
ICAgICAgY2FsbC5saW5rKHZtLCBsaW5rQnVmZmVyKTsKICAgICAgICAgfSk7CiAgICAgfQpAQCAt
OTM3LDcgKzkzNiw3IEBAIHN0YXRpYyB2b2lkIGZpeEZ1bmN0aW9uQmFzZWRPblN0YWNrTWFwcygK
ICAgICAgICAgY2hhciogc3RhcnRPZklDID0gYml0d2lzZV9jYXN0PGNoYXIqPihnZW5lcmF0ZWRG
dW5jdGlvbikgKyBjYWxsLm1faW5zdHJ1Y3Rpb25PZmZzZXQ7CiAgICAgICAgIHNpemVfdCBzaXpl
T2ZJQyA9IHNpemVPZklDRm9yKGNhbGwubm9kZSgpKTsKIAotICAgICAgICBnZW5lcmF0ZUlubGlu
ZUlmUG9zc2libGVPdXRPZkxpbmVJZk5vdChzdGF0ZSwgdm0sIGNvZGVCbG9jaywgZmFzdFBhdGhK
SVQsIHN0YXJ0T2ZJQywgc2l6ZU9mSUMsICJ2YXJhcmdzIGNhbGwgaW5saW5lIGNhY2hlIiwgWyZd
IChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyLCBDQ2FsbEhlbHBlcnMmLCBib29sKSB7CisgICAgICAg
IGdlbmVyYXRlSW5saW5lSWZQb3NzaWJsZU91dE9mTGluZUlmTm90KHN0YXRlLCB2bSwgY29kZUJs
b2NrLCBmYXN0UGF0aEpJVCwgc3RhcnRPZklDLCBzaXplT2ZJQywgInZhcmFyZ3MgY2FsbCIsIFsm
XSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlciwgQ0NhbGxIZWxwZXJzJiwgYm9vbCkgewogICAgICAg
ICAgICAgY2FsbC5saW5rKHZtLCBsaW5rQnVmZmVyLCBzdGF0ZS5maW5hbGl6ZXItPmhhbmRsZUV4
Y2VwdGlvbnNMaW5rQnVmZmVyLT5lbnRyeXBvaW50KCkpOwogICAgICAgICB9KTsKICAgICB9CkBA
IC05NTMsNyArOTUyLDcgQEAgc3RhdGljIHZvaWQgZml4RnVuY3Rpb25CYXNlZE9uU3RhY2tNYXBz
KAogICAgICAgICBjaGFyKiBzdGFydE9mSUMgPSBiaXR3aXNlX2Nhc3Q8Y2hhcio+KGdlbmVyYXRl
ZEZ1bmN0aW9uKSArIGNhbGwubV9pbnN0cnVjdGlvbk9mZnNldDsKICAgICAgICAgc2l6ZV90IHNp
emVPZklDID0gY2FsbC5lc3RpbWF0ZWRTaXplKCk7CiAKLSAgICAgICAgZ2VuZXJhdGVJbmxpbmVJ
ZlBvc3NpYmxlT3V0T2ZMaW5lSWZOb3Qoc3RhdGUsIHZtLCBjb2RlQmxvY2ssIGZhc3RQYXRoSklU
LCBzdGFydE9mSUMsIHNpemVPZklDLCAidGFpbCBjYWxsIGlubGluZSBjYWNoZSIsIFsmXSAoTGlu
a0J1ZmZlciYgbGlua0J1ZmZlciwgQ0NhbGxIZWxwZXJzJiwgYm9vbCkgeworICAgICAgICBnZW5l
cmF0ZUlubGluZUlmUG9zc2libGVPdXRPZkxpbmVJZk5vdChzdGF0ZSwgdm0sIGNvZGVCbG9jaywg
ZmFzdFBhdGhKSVQsIHN0YXJ0T2ZJQywgc2l6ZU9mSUMsICJ0YWlsIGNhbGwiLCBbJl0gKExpbmtC
dWZmZXImIGxpbmtCdWZmZXIsIENDYWxsSGVscGVycyYsIGJvb2wpIHsKICAgICAgICAgICAgIGNh
bGwubGluayh2bSwgbGlua0J1ZmZlcik7CiAgICAgICAgIH0pOwogICAgIH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZUJpbmFyeU9wLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGVCaW5hcnlPcC5jcHAJKHJldmlz
aW9uIDE5Mzk2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZUJpbmFy
eU9wLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc5LDcgKzE3OSw3IEBAIHZvaWQgZ2VuZXJhdGVC
aW5hcnlBcml0aE9wRmFzdFBhdGgoQmluYXIKICAgICAgICAgSlNWYWx1ZVJlZ3MobGVmdCksIEpT
VmFsdWVSZWdzKHJpZ2h0KSwgbGVmdEZQUiwgcmlnaHRGUFIsIHNjcmF0Y2hHUFIsIHNjcmF0Y2hG
UFIpOwogCiAgICAgYXV0byBudW1iZXJPZkJ5dGVzVXNlZFRvUHJlc2VydmVSZXVzZWRSZWdpc3Rl
cnMgPQotICAgIGFsbG9jYXRvci5wcmVzZXJ2ZVJldXNlZFJlZ2lzdGVyc0J5UHVzaGluZyhqaXQs
IFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvcjo6RXh0cmFTdGFja1NwYWNlOjpOb0V4dHJhU3BhY2Up
OworICAgICAgICBhbGxvY2F0b3IucHJlc2VydmVSZXVzZWRSZWdpc3RlcnNCeVB1c2hpbmcoaml0
LCBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3I6OkV4dHJhU3RhY2tTcGFjZTo6Tm9FeHRyYVNwYWNl
KTsKIAogICAgIGNvbnRleHQuaW5pdGlhbGl6ZVJlZ2lzdGVycyhqaXQpOwogICAgIGdlbi5nZW5l
cmF0ZUZhc3RQYXRoKGppdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTElu
bGluZUNhY2hlRGVzY3JpcHRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMSW5saW5lQ2FjaGVEZXNjcmlwdG9yLmgJKHJldmlzaW9uIDE5Mzk2OSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSW5saW5lQ2FjaGVEZXNjcmlwdG9yLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMwLDYgKzMwLDggQEAKIAogI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKICNp
bmNsdWRlICJERkdBYnN0cmFjdFZhbHVlLmgiCisjaW5jbHVkZSAiREZHT3BlcmF0aW9ucy5oIgor
I2luY2x1ZGUgIkZUTElubGluZUNhY2hlU2l6ZS5oIgogI2luY2x1ZGUgIkZUTExhenlTbG93UGF0
aC5oIgogI2luY2x1ZGUgIkpJVElubGluZUNhY2hlR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiTWFj
cm9Bc3NlbWJsZXIuaCIKQEAgLTEzMiw3ICsxMzQsNiBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQg
bm9kZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX25vZGVUeXBlOyB9CiAgICAgc2l6ZV90IHNpemUo
KSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KICAgICBjb25zdCBjaGFyKiBuYW1lKCkgY29uc3Qg
eyByZXR1cm4gbV9uYW1lOyB9Ci0gICAgY29uc3QgY2hhciogZmFzdFBhdGhJQ05hbWUoKSBjb25z
dCB7IHJldHVybiBtX2Zhc3RQYXRoSUNOYW1lOyB9CiAgICAgU2xvd1BhdGhGdW5jdGlvbiBzbG93
UGF0aEZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zbG93UGF0aEZ1bmN0aW9uOyB9CiAKICAg
ICBTbmlwcGV0T3BlcmFuZCBsZWZ0T3BlcmFuZCgpIHsgcmV0dXJuIG1fbGVmdE9wZXJhbmQ7IH0K
QEAgLTE0MiwxMyArMTQzLDEyIEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIEJpbmFyeU9w
RGVzY3JpcHRvcih1bnNpZ25lZCBub2RlVHlwZSwgdW5zaWduZWQgc3RhY2ttYXBJRCwgQ29kZU9y
aWdpbiBjb2RlT3JpZ2luLAotICAgICAgICBzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciogbmFtZSwg
Y29uc3QgY2hhciogZmFzdFBhdGhJQ05hbWUsCi0gICAgICAgIFNsb3dQYXRoRnVuY3Rpb24gc2xv
d1BhdGhGdW5jdGlvbiwgY29uc3QgU25pcHBldE9wZXJhbmQmIGxlZnRPcGVyYW5kLCBjb25zdCBT
bmlwcGV0T3BlcmFuZCYgcmlnaHRPcGVyYW5kKQorICAgICAgICBzaXplX3Qgc2l6ZSwgY29uc3Qg
Y2hhciogbmFtZSwgU2xvd1BhdGhGdW5jdGlvbiBzbG93UGF0aEZ1bmN0aW9uLAorICAgICAgICBj
b25zdCBTbmlwcGV0T3BlcmFuZCYgbGVmdE9wZXJhbmQsIGNvbnN0IFNuaXBwZXRPcGVyYW5kJiBy
aWdodE9wZXJhbmQpCiAgICAgICAgIDogSW5saW5lQ2FjaGVEZXNjcmlwdG9yKHN0YWNrbWFwSUQs
IGNvZGVPcmlnaW4sIG51bGxwdHIpCiAgICAgICAgICwgbV9ub2RlVHlwZShub2RlVHlwZSkKICAg
ICAgICAgLCBtX3NpemUoc2l6ZSkKICAgICAgICAgLCBtX25hbWUobmFtZSkKLSAgICAgICAgLCBt
X2Zhc3RQYXRoSUNOYW1lKGZhc3RQYXRoSUNOYW1lKQogICAgICAgICAsIG1fc2xvd1BhdGhGdW5j
dGlvbihzbG93UGF0aEZ1bmN0aW9uKQogICAgICAgICAsIG1fbGVmdE9wZXJhbmQobGVmdE9wZXJh
bmQpCiAgICAgICAgICwgbV9yaWdodE9wZXJhbmQocmlnaHRPcGVyYW5kKQpAQCAtMTU4LDcgKzE1
OCw2IEBAIHByb3RlY3RlZDoKICAgICB1bnNpZ25lZCBtX25vZGVUeXBlOwogICAgIHNpemVfdCBt
X3NpemU7CiAgICAgY29uc3QgY2hhciogbV9uYW1lOwotICAgIGNvbnN0IGNoYXIqIG1fZmFzdFBh
dGhJQ05hbWU7CiAgICAgU2xvd1BhdGhGdW5jdGlvbiBtX3Nsb3dQYXRoRnVuY3Rpb247CiAKICAg
ICBTbmlwcGV0T3BlcmFuZCBtX2xlZnRPcGVyYW5kOwpAQCAtMTY3LDI2ICsxNjYsNTQgQEAgcHJv
dGVjdGVkOgogCiBjbGFzcyBBcml0aERpdkRlc2NyaXB0b3IgOiBwdWJsaWMgQmluYXJ5T3BEZXNj
cmlwdG9yIHsKIHB1YmxpYzoKLSAgICBBcml0aERpdkRlc2NyaXB0b3IodW5zaWduZWQgc3RhY2tt
YXBJRCwgQ29kZU9yaWdpbiwgY29uc3QgU25pcHBldE9wZXJhbmQmIGxlZnRPcGVyYW5kLCBjb25z
dCBTbmlwcGV0T3BlcmFuZCYgcmlnaHRPcGVyYW5kKTsKLSAgICBzdGF0aWMgc2l6ZV90IGljU2l6
ZSgpOworICAgIEFyaXRoRGl2RGVzY3JpcHRvcih1bnNpZ25lZCBzdGFja21hcElELCBDb2RlT3Jp
Z2luIGNvZGVPcmlnaW4sIGNvbnN0IFNuaXBwZXRPcGVyYW5kJiBsZWZ0T3BlcmFuZCwgY29uc3Qg
U25pcHBldE9wZXJhbmQmIHJpZ2h0T3BlcmFuZCkKKyAgICAgICAgOiBCaW5hcnlPcERlc2NyaXB0
b3Iobm9kZVR5cGUoKSwgc3RhY2ttYXBJRCwgY29kZU9yaWdpbiwgaWNTaXplKCksIG9wTmFtZSgp
LCBzbG93UGF0aEZ1bmN0aW9uKCksIGxlZnRPcGVyYW5kLCByaWdodE9wZXJhbmQpCisgICAgeyB9
CisKKyAgICBzdGF0aWMgc2l6ZV90IGljU2l6ZSgpIHsgcmV0dXJuIHNpemVPZkFyaXRoRGl2KCk7
IH0KKyAgICBzdGF0aWMgdW5zaWduZWQgbm9kZVR5cGUoKSB7IHJldHVybiBERkc6OkFyaXRoRGl2
OyB9CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIG9wTmFtZSgpIHsgcmV0dXJuICJBcml0aERpdiI7
IH0KKyAgICBzdGF0aWMgSl9KSVRPcGVyYXRpb25fRUpKIHNsb3dQYXRoRnVuY3Rpb24oKSB7IHJl
dHVybiBERkc6Om9wZXJhdGlvblZhbHVlRGl2OyB9CisgICAgc3RhdGljIEpfSklUT3BlcmF0aW9u
X0VKSiBub25OdW1iZXJTbG93UGF0aEZ1bmN0aW9uKCkgeyByZXR1cm4gc2xvd1BhdGhGdW5jdGlv
bigpOyB9CiB9OwogCiBjbGFzcyBBcml0aE11bERlc2NyaXB0b3IgOiBwdWJsaWMgQmluYXJ5T3BE
ZXNjcmlwdG9yIHsKIHB1YmxpYzoKLSAgICBBcml0aE11bERlc2NyaXB0b3IodW5zaWduZWQgc3Rh
Y2ttYXBJRCwgQ29kZU9yaWdpbiwgY29uc3QgU25pcHBldE9wZXJhbmQmIGxlZnRPcGVyYW5kLCBj
b25zdCBTbmlwcGV0T3BlcmFuZCYgcmlnaHRPcGVyYW5kKTsKLSAgICBzdGF0aWMgc2l6ZV90IGlj
U2l6ZSgpOworICAgIEFyaXRoTXVsRGVzY3JpcHRvcih1bnNpZ25lZCBzdGFja21hcElELCBDb2Rl
T3JpZ2luIGNvZGVPcmlnaW4sIGNvbnN0IFNuaXBwZXRPcGVyYW5kJiBsZWZ0T3BlcmFuZCwgY29u
c3QgU25pcHBldE9wZXJhbmQmIHJpZ2h0T3BlcmFuZCkKKyAgICAgICAgOiBCaW5hcnlPcERlc2Ny
aXB0b3Iobm9kZVR5cGUoKSwgc3RhY2ttYXBJRCwgY29kZU9yaWdpbiwgaWNTaXplKCksIG9wTmFt
ZSgpLCBzbG93UGF0aEZ1bmN0aW9uKCksIGxlZnRPcGVyYW5kLCByaWdodE9wZXJhbmQpCisgICAg
eyB9CisKKyAgICBzdGF0aWMgc2l6ZV90IGljU2l6ZSgpIHsgcmV0dXJuIHNpemVPZkFyaXRoTXVs
KCk7IH0KKyAgICBzdGF0aWMgdW5zaWduZWQgbm9kZVR5cGUoKSB7IHJldHVybiBERkc6OkFyaXRo
TXVsOyB9CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIG9wTmFtZSgpIHsgcmV0dXJuICJBcml0aE11
bCI7IH0KKyAgICBzdGF0aWMgSl9KSVRPcGVyYXRpb25fRUpKIHNsb3dQYXRoRnVuY3Rpb24oKSB7
IHJldHVybiBERkc6Om9wZXJhdGlvblZhbHVlTXVsOyB9CisgICAgc3RhdGljIEpfSklUT3BlcmF0
aW9uX0VKSiBub25OdW1iZXJTbG93UGF0aEZ1bmN0aW9uKCkgeyByZXR1cm4gc2xvd1BhdGhGdW5j
dGlvbigpOyB9CiB9OwogCiBjbGFzcyBBcml0aFN1YkRlc2NyaXB0b3IgOiBwdWJsaWMgQmluYXJ5
T3BEZXNjcmlwdG9yIHsKIHB1YmxpYzoKLSAgICBBcml0aFN1YkRlc2NyaXB0b3IodW5zaWduZWQg
c3RhY2ttYXBJRCwgQ29kZU9yaWdpbiwgY29uc3QgU25pcHBldE9wZXJhbmQmIGxlZnRPcGVyYW5k
LCBjb25zdCBTbmlwcGV0T3BlcmFuZCYgcmlnaHRPcGVyYW5kKTsKLSAgICBzdGF0aWMgc2l6ZV90
IGljU2l6ZSgpOworICAgIEFyaXRoU3ViRGVzY3JpcHRvcih1bnNpZ25lZCBzdGFja21hcElELCBD
b2RlT3JpZ2luIGNvZGVPcmlnaW4sIGNvbnN0IFNuaXBwZXRPcGVyYW5kJiBsZWZ0T3BlcmFuZCwg
Y29uc3QgU25pcHBldE9wZXJhbmQmIHJpZ2h0T3BlcmFuZCkKKyAgICAgICAgOiBCaW5hcnlPcERl
c2NyaXB0b3Iobm9kZVR5cGUoKSwgc3RhY2ttYXBJRCwgY29kZU9yaWdpbiwgaWNTaXplKCksIG9w
TmFtZSgpLCBzbG93UGF0aEZ1bmN0aW9uKCksIGxlZnRPcGVyYW5kLCByaWdodE9wZXJhbmQpCisg
ICAgeyB9CisKKyAgICBzdGF0aWMgc2l6ZV90IGljU2l6ZSgpIHsgcmV0dXJuIHNpemVPZkFyaXRo
U3ViKCk7IH0KKyAgICBzdGF0aWMgdW5zaWduZWQgbm9kZVR5cGUoKSB7IHJldHVybiBERkc6OkFy
aXRoU3ViOyB9CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIG9wTmFtZSgpIHsgcmV0dXJuICJBcml0
aFN1YiI7IH0KKyAgICBzdGF0aWMgSl9KSVRPcGVyYXRpb25fRUpKIHNsb3dQYXRoRnVuY3Rpb24o
KSB7IHJldHVybiBERkc6Om9wZXJhdGlvblZhbHVlU3ViOyB9CisgICAgc3RhdGljIEpfSklUT3Bl
cmF0aW9uX0VKSiBub25OdW1iZXJTbG93UGF0aEZ1bmN0aW9uKCkgeyByZXR1cm4gc2xvd1BhdGhG
dW5jdGlvbigpOyB9CiB9OwogCiBjbGFzcyBWYWx1ZUFkZERlc2NyaXB0b3IgOiBwdWJsaWMgQmlu
YXJ5T3BEZXNjcmlwdG9yIHsKIHB1YmxpYzoKLSAgICBWYWx1ZUFkZERlc2NyaXB0b3IodW5zaWdu
ZWQgc3RhY2ttYXBJRCwgQ29kZU9yaWdpbiwgY29uc3QgU25pcHBldE9wZXJhbmQmIGxlZnRPcGVy
YW5kLCBjb25zdCBTbmlwcGV0T3BlcmFuZCYgcmlnaHRPcGVyYW5kKTsKLSAgICBzdGF0aWMgc2l6
ZV90IGljU2l6ZSgpOworICAgIFZhbHVlQWRkRGVzY3JpcHRvcih1bnNpZ25lZCBzdGFja21hcElE
LCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIGNvbnN0IFNuaXBwZXRPcGVyYW5kJiBsZWZ0T3BlcmFu
ZCwgY29uc3QgU25pcHBldE9wZXJhbmQmIHJpZ2h0T3BlcmFuZCkKKyAgICAgICAgOiBCaW5hcnlP
cERlc2NyaXB0b3Iobm9kZVR5cGUoKSwgc3RhY2ttYXBJRCwgY29kZU9yaWdpbiwgaWNTaXplKCks
IG9wTmFtZSgpLCBzbG93UGF0aEZ1bmN0aW9uKCksIGxlZnRPcGVyYW5kLCByaWdodE9wZXJhbmQp
CisgICAgeyB9CisKKyAgICBzdGF0aWMgc2l6ZV90IGljU2l6ZSgpIHsgcmV0dXJuIHNpemVPZlZh
bHVlQWRkKCk7IH0KKyAgICBzdGF0aWMgdW5zaWduZWQgbm9kZVR5cGUoKSB7IHJldHVybiBERkc6
OlZhbHVlQWRkOyB9CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIG9wTmFtZSgpIHsgcmV0dXJuICJW
YWx1ZUFkZCI7IH0KKyAgICBzdGF0aWMgSl9KSVRPcGVyYXRpb25fRUpKIHNsb3dQYXRoRnVuY3Rp
b24oKSB7IHJldHVybiBERkc6Om9wZXJhdGlvblZhbHVlQWRkOyB9CisgICAgc3RhdGljIEpfSklU
T3BlcmF0aW9uX0VKSiBub25OdW1iZXJTbG93UGF0aEZ1bmN0aW9uKCkgeyByZXR1cm4gREZHOjpv
cGVyYXRpb25WYWx1ZUFkZE5vdE51bWJlcjsgfQogfTsKIAogLy8gWW91IGNhbiBjcmVhdGUgYSBs
YXp5IHNsb3cgcGF0aCBjYWxsIGluIGxvd2VyREZHVG9MTFZNIGJ5IGRvaW5nOgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExJbmxpbmVDYWNoZURlc2NyaXB0b3JJbmxpbmVzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExJbmxpbmVDYWNoZURl
c2NyaXB0b3JJbmxpbmVzLmgJKHJldmlzaW9uIDE5Mzk2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMSW5saW5lQ2FjaGVEZXNjcmlwdG9ySW5saW5lcy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDkwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
Ci0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaWZuZGVmIEZUTElubGluZUNhY2hlRGVzY3JpcHRvcklubGluZXNfaAotI2RlZmlu
ZSBGVExJbmxpbmVDYWNoZURlc2NyaXB0b3JJbmxpbmVzX2gKLQotI2lmIEVOQUJMRShGVExfSklU
KQotCi0jaW5jbHVkZSAiREZHTm9kZVR5cGUuaCIKLSNpbmNsdWRlICJERkdPcGVyYXRpb25zLmgi
Ci0jaW5jbHVkZSAiRlRMSW5saW5lQ2FjaGVEZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiRlRMSW5s
aW5lQ2FjaGVTaXplLmgiCi0KLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKLQotQXJp
dGhEaXZEZXNjcmlwdG9yOjpBcml0aERpdkRlc2NyaXB0b3IodW5zaWduZWQgc3RhY2ttYXBJRCwg
Q29kZU9yaWdpbiBjb2RlT3JpZ2luLAotICAgIGNvbnN0IFNuaXBwZXRPcGVyYW5kJiBsZWZ0T3Bl
cmFuZCwgY29uc3QgU25pcHBldE9wZXJhbmQmIHJpZ2h0T3BlcmFuZCkKLSAgICA6IEJpbmFyeU9w
RGVzY3JpcHRvcihERkc6OkFyaXRoRGl2LCBzdGFja21hcElELCBjb2RlT3JpZ2luLCBpY1NpemUo
KSwKLSAgICAgICAgIkFyaXRoRGl2IiwgIkFyaXRoRGl2IElDIGZhc3QgcGF0aCIsIERGRzo6b3Bl
cmF0aW9uVmFsdWVEaXYsIGxlZnRPcGVyYW5kLCByaWdodE9wZXJhbmQpCi17Ci19Ci0KLXNpemVf
dCBBcml0aERpdkRlc2NyaXB0b3I6OmljU2l6ZSgpCi17Ci0gICAgcmV0dXJuIHNpemVPZkFyaXRo
RGl2KCk7Ci19Ci0KLUFyaXRoTXVsRGVzY3JpcHRvcjo6QXJpdGhNdWxEZXNjcmlwdG9yKHVuc2ln
bmVkIHN0YWNrbWFwSUQsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwKLSAgICBjb25zdCBTbmlwcGV0
T3BlcmFuZCYgbGVmdE9wZXJhbmQsIGNvbnN0IFNuaXBwZXRPcGVyYW5kJiByaWdodE9wZXJhbmQp
Ci0gICAgOiBCaW5hcnlPcERlc2NyaXB0b3IoREZHOjpBcml0aE11bCwgc3RhY2ttYXBJRCwgY29k
ZU9yaWdpbiwgaWNTaXplKCksCi0gICAgICAgICJBcml0aE11bCIsICJBcml0aE11bCBJQyBmYXN0
IHBhdGgiLCBERkc6Om9wZXJhdGlvblZhbHVlTXVsLCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVyYW5k
KQotewotfQotCi1zaXplX3QgQXJpdGhNdWxEZXNjcmlwdG9yOjppY1NpemUoKQotewotICAgIHJl
dHVybiBzaXplT2ZBcml0aE11bCgpOwotfQotCi1Bcml0aFN1YkRlc2NyaXB0b3I6OkFyaXRoU3Vi
RGVzY3JpcHRvcih1bnNpZ25lZCBzdGFja21hcElELCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sCi0g
ICAgY29uc3QgU25pcHBldE9wZXJhbmQmIGxlZnRPcGVyYW5kLCBjb25zdCBTbmlwcGV0T3BlcmFu
ZCYgcmlnaHRPcGVyYW5kKQotICAgIDogQmluYXJ5T3BEZXNjcmlwdG9yKERGRzo6QXJpdGhTdWIs
IHN0YWNrbWFwSUQsIGNvZGVPcmlnaW4sIGljU2l6ZSgpLAotICAgICAgICAiQXJpdGhTdWIiLCAi
QXJpdGhTdWIgSUMgZmFzdCBwYXRoIiwgREZHOjpvcGVyYXRpb25WYWx1ZVN1YiwgbGVmdE9wZXJh
bmQsIHJpZ2h0T3BlcmFuZCkKLXsKLX0KLQotc2l6ZV90IEFyaXRoU3ViRGVzY3JpcHRvcjo6aWNT
aXplKCkKLXsKLSAgICByZXR1cm4gc2l6ZU9mQXJpdGhTdWIoKTsKLX0KLQotVmFsdWVBZGREZXNj
cmlwdG9yOjpWYWx1ZUFkZERlc2NyaXB0b3IodW5zaWduZWQgc3RhY2ttYXBJRCwgQ29kZU9yaWdp
biBjb2RlT3JpZ2luLAotICAgIGNvbnN0IFNuaXBwZXRPcGVyYW5kJiBsZWZ0T3BlcmFuZCwgY29u
c3QgU25pcHBldE9wZXJhbmQmIHJpZ2h0T3BlcmFuZCkKLSAgICA6IEJpbmFyeU9wRGVzY3JpcHRv
cihERkc6OlZhbHVlQWRkLCBzdGFja21hcElELCBjb2RlT3JpZ2luLCBpY1NpemUoKSwKLSAgICAg
ICAgIlZhbHVlQWRkIiwgIlZhbHVlQWRkIElDIGZhc3QgcGF0aCIsIERGRzo6b3BlcmF0aW9uVmFs
dWVBZGQsIGxlZnRPcGVyYW5kLCByaWdodE9wZXJhbmQpCi17Ci19Ci0KLXNpemVfdCBWYWx1ZUFk
ZERlc2NyaXB0b3I6OmljU2l6ZSgpCi17Ci0gICAgcmV0dXJuIHNpemVPZlZhbHVlQWRkKCk7Ci19
Ci0KLX0gfSAvLyBuYW1lc3BhY2UgSlNDOjpGVEwKLQotI2VuZGlmIC8vIEVOQUJMRShGVExfSklU
KQotCi0jZW5kaWYgLy8gRlRMSW5saW5lQ2FjaGVEZXNjcmlwdG9ySW5saW5lc19oCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVEZpbmFsaXplci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRGaW5hbGl6ZXIuY3BwCShyZXZpc2lv
biAxOTM5NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVEZpbmFsaXplci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNyw3ICsxMzcsNyBAQCBib29sIEpJVEZpbmFsaXplcjo6
ZmluYWxpemVGdW5jdGlvbigpCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG91dE9mTGlu
ZUNvZGVJbmZvcy5zaXplKCk7ICsraSkgewogICAgICAgICBqaXRDb2RlLT5hZGRIYW5kbGUoRklO
QUxJWkVfQ09ERV9JRigKICAgICAgICAgICAgIGR1bXBEaXNhc3NlbWJseSwgKm91dE9mTGluZUNv
ZGVJbmZvc1tpXS5tX2xpbmtCdWZmZXIsCi0gICAgICAgICAgICAoIkZUTCBvdXQgb2YgbGluZSBj
b2RlIGZvciAlcyIsIG91dE9mTGluZUNvZGVJbmZvc1tpXS5tX2NvZGVEZXNjcmlwdGlvbikpLmV4
ZWN1dGFibGVNZW1vcnkoKSk7CisgICAgICAgICAgICAoIkZUTCBvdXQgb2YgbGluZSBjb2RlIGZv
ciAlcyBpbmxpbmUgY2FjaGUiLCBvdXRPZkxpbmVDb2RlSW5mb3NbaV0ubV9jb2RlRGVzY3JpcHRp
b24pKS5leGVjdXRhYmxlTWVtb3J5KCkpOwogICAgIH0KICNlbmRpZiAvLyBGVExfVVNFU19CMwog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZN
LmNwcAkocmV2aXNpb24gMTkzOTY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvTExWTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMzIsNiArMTAzMiw4NCBAQCBw
cml2YXRlOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKKyAgICBlbnVtIENvbnN0SW50
MzJPcGVyYW5kT3B0aW1pemF0aW9uU3VwcG9ydCB7CisgICAgICAgIEhhc0NvbnN0SW50MzJPcGVy
YW5kT3B0aW1pemF0aW9uLAorICAgICAgICBEb2VzTm90SGF2ZUNvbnN0SW50MzJPcGVyYW5kT3B0
aW1pemF0aW9uLAorICAgIH07CisKKyAgICBlbnVtIENvbnN0RG91YmxlT3BlcmFuZE9wdGltaXph
dGlvblN1cHBvcnQgeworICAgICAgICBIYXNDb25zdERvdWJsZU9wZXJhbmRPcHRpbWl6YXRpb24s
CisgICAgICAgIERvZXNOb3RIYXZlQ29uc3REb3VibGVPcGVyYW5kT3B0aW1pemF0aW9uLAorICAg
IH07CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgU25pcHBldElDRGVzY3JpcHRvciwKKyAgICAg
ICAgQ29uc3RJbnQzMk9wZXJhbmRPcHRpbWl6YXRpb25TdXBwb3J0IGNvbnN0SW50MzJPcHQgPSBI
YXNDb25zdEludDMyT3BlcmFuZE9wdGltaXphdGlvbiwKKyAgICAgICAgQ29uc3REb3VibGVPcGVy
YW5kT3B0aW1pemF0aW9uU3VwcG9ydCBjb25zdERvdWJsZU9wdCA9IERvZXNOb3RIYXZlQ29uc3RE
b3VibGVPcGVyYW5kT3B0aW1pemF0aW9uPgorICAgIHZvaWQgY29tcGlsZVVudHlwZWRCaW5hcnlP
cCgpCisgICAgeworICAgICAgICBFZGdlJiBsZWZ0Q2hpbGQgPSBtX25vZGUtPmNoaWxkMSgpOwor
ICAgICAgICBFZGdlJiByaWdodENoaWxkID0gbV9ub2RlLT5jaGlsZDIoKTsKKworICAgICAgICBp
ZiAoIShwcm92ZW5UeXBlKGxlZnRDaGlsZCkgJiBTcGVjRnVsbE51bWJlcikgfHwgIShwcm92ZW5U
eXBlKHJpZ2h0Q2hpbGQpICYgU3BlY0Z1bGxOdW1iZXIpKSB7CisgICAgICAgICAgICBzZXRKU1Zh
bHVlKHZtQ2FsbChtX291dC5pbnQ2NCwgbV9vdXQub3BlcmF0aW9uKFNuaXBwZXRJQ0Rlc2NyaXB0
b3I6Om5vbk51bWJlclNsb3dQYXRoRnVuY3Rpb24oKSksIG1fY2FsbEZyYW1lLAorICAgICAgICAg
ICAgICAgIGxvd0pTVmFsdWUobGVmdENoaWxkKSwgbG93SlNWYWx1ZShyaWdodENoaWxkKSkpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdW5zaWduZWQgc3RhY2tt
YXBJRCA9IG1fc3RhY2ttYXBJRHMrKzsKKworICAgICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZUNv
bXBpbGF0aW9uKCkpCisgICAgICAgICAgICBkYXRhTG9nKCIgICAgRW1pdHRpbmcgIiwgU25pcHBl
dElDRGVzY3JpcHRvcjo6b3BOYW1lKCksICIgcGF0Y2hwb2ludCB3aXRoIHN0YWNrbWFwICMiLCBz
dGFja21hcElELCAiXG4iKTsKKworI2lmIEZUTF9VU0VTX0IzCisgICAgICAgIENSQVNIKCk7Cisj
ZWxzZQorICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0pTVmFsdWUobGVmdENoaWxkKTsKKyAgICAg
ICAgTFZhbHVlIHJpZ2h0ID0gbG93SlNWYWx1ZShyaWdodENoaWxkKTsKKworICAgICAgICBTbmlw
cGV0T3BlcmFuZCBsZWZ0T3BlcmFuZChhYnN0cmFjdFZhbHVlKGxlZnRDaGlsZCkucmVzdWx0VHlw
ZSgpKTsKKyAgICAgICAgU25pcHBldE9wZXJhbmQgcmlnaHRPcGVyYW5kKGFic3RyYWN0VmFsdWUo
cmlnaHRDaGlsZCkucmVzdWx0VHlwZSgpKTsKKworICAgICAgICBpZiAoY29uc3RJbnQzMk9wdCA9
PSBIYXNDb25zdEludDMyT3BlcmFuZE9wdGltaXphdGlvbiAmJiBsZWZ0Q2hpbGQtPmlzSW50MzJD
b25zdGFudCgpKQorICAgICAgICAgICAgbGVmdE9wZXJhbmQuc2V0Q29uc3RJbnQzMihsZWZ0Q2hp
bGQtPmFzSW50MzIoKSk7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgZWxzZSBpZiAoY29u
c3REb3VibGVPcHQgPT0gSGFzQ29uc3REb3VibGVPcGVyYW5kT3B0aW1pemF0aW9uICYmIGxlZnRD
aGlsZC0+aXNEb3VibGVDb25zdGFudCgpKQorICAgICAgICAgICAgbGVmdE9wZXJhbmQuc2V0Q29u
c3REb3VibGUobGVmdENoaWxkLT5hc051bWJlcigpKTsKKyNlbmRpZgorCisgICAgICAgIGlmIChs
ZWZ0T3BlcmFuZC5pc0NvbnN0KCkpIHsKKyAgICAgICAgICAgIC8vIEJlY2F1c2UgdGhlIHNuaXBw
ZXQgZG9lcyBub3Qgc3VwcG9ydCBib3RoIG9wZXJhbmRzIGJlaW5nIGNvbnN0YW50LCBpZiB0aGUg
bGVmdAorICAgICAgICAgICAgLy8gb3BlcmFuZCBpcyBhbHJlYWR5IGEgY29uc3RhbnQsIHdlJ2xs
IGp1c3QgcHJldGVuZCB0aGUgcmlnaHQgb3BlcmFuZCBpcyBub3QuCisgICAgICAgIH0gZWxzZSBp
ZiAoY29uc3RJbnQzMk9wdCA9PSBIYXNDb25zdEludDMyT3BlcmFuZE9wdGltaXphdGlvbiAmJiBy
aWdodENoaWxkLT5pc0ludDMyQ29uc3RhbnQoKSkKKyAgICAgICAgICAgIHJpZ2h0T3BlcmFuZC5z
ZXRDb25zdEludDMyKHJpZ2h0Q2hpbGQtPmFzSW50MzIoKSk7CisjaWYgVVNFKEpTVkFMVUU2NCkK
KyAgICAgICAgZWxzZSBpZiAoY29uc3REb3VibGVPcHQgPT0gSGFzQ29uc3REb3VibGVPcGVyYW5k
T3B0aW1pemF0aW9uICYmIHJpZ2h0Q2hpbGQtPmlzRG91YmxlQ29uc3RhbnQoKSkKKyAgICAgICAg
ICAgIHJpZ2h0T3BlcmFuZC5zZXRDb25zdERvdWJsZShyaWdodENoaWxkLT5hc051bWJlcigpKTsK
KyNlbmRpZgorCisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFsZWZ0T3BlcmFuZC5pc0NvbnN0KCkg
fHwgIXJpZ2h0T3BlcmFuZC5pc0NvbnN0KCkpOworCisgICAgICAgIC8vIEFyZ3VtZW50czogaWQs
IGJ5dGVzLCB0YXJnZXQsIG51bUFyZ3MsIGFyZ3MuLi4KKyAgICAgICAgU3RhY2ttYXBBcmd1bWVu
dExpc3QgYXJndW1lbnRzOworICAgICAgICBhcmd1bWVudHMuYXBwZW5kKG1fb3V0LmNvbnN0SW50
NjQoc3RhY2ttYXBJRCkpOworICAgICAgICBhcmd1bWVudHMuYXBwZW5kKG1fb3V0LmNvbnN0SW50
MzIoU25pcHBldElDRGVzY3JpcHRvcjo6aWNTaXplKCkpKTsKKyAgICAgICAgYXJndW1lbnRzLmFw
cGVuZChjb25zdE51bGwobV9vdXQucmVmOCkpOworICAgICAgICBhcmd1bWVudHMuYXBwZW5kKG1f
b3V0LmNvbnN0SW50MzIoMikpOworICAgICAgICBhcmd1bWVudHMuYXBwZW5kKGxlZnQpOworICAg
ICAgICBhcmd1bWVudHMuYXBwZW5kKHJpZ2h0KTsKKworICAgICAgICBhcHBlbmRPU1JFeGl0QXJn
dW1lbnRzRm9yUGF0Y2hwb2ludElmV2lsbENhdGNoRXhjZXB0aW9uKGFyZ3VtZW50cywKKyAgICAg
ICAgICAgIEV4Y2VwdGlvblR5cGU6OkJpbmFyeU9wR2VuZXJhdG9yLCAzKTsgLy8gbGVmdCwgcmln
aHQsIGFuZCByZXN1bHQgc2hvdyB1cCBpbiB0aGUgc3RhY2ttYXAgbG9jYXRpb25zLgorCisgICAg
ICAgIExWYWx1ZSBjYWxsID0gbV9vdXQuY2FsbChtX291dC5pbnQ2NCwgbV9vdXQucGF0Y2hwb2lu
dEludDY0SW50cmluc2ljKCksIGFyZ3VtZW50cyk7CisgICAgICAgIHNldEluc3RydWN0aW9uQ2Fs
bGluZ0NvbnZlbnRpb24oY2FsbCwgTExWTUFueVJlZ0NhbGxDb252KTsKKworICAgICAgICBtX2Z0
bFN0YXRlLmJpbmFyeU9wcy5hcHBlbmQoU25pcHBldElDRGVzY3JpcHRvcihzdGFja21hcElELCBt
X25vZGUtPm9yaWdpbi5zZW1hbnRpYywgbGVmdE9wZXJhbmQsIHJpZ2h0T3BlcmFuZCkpOworCisg
ICAgICAgIHNldEpTVmFsdWUoY2FsbCk7CisjZW5kaWYKKyAgICB9CisKICAgICB2b2lkIGNvbXBp
bGVVcHNpbG9uKCkKICAgICB7CiAgICAgICAgIExWYWx1ZSB1cHNpbG9uVmFsdWUgPSBudWxscHRy
OwpAQCAtMTUwNiw1NSArMTU4NCw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBjb21waWxl
VmFsdWVBZGQoKQogICAgIHsKLSAgICAgICAgRWRnZSYgbGVmdENoaWxkID0gbV9ub2RlLT5jaGls
ZDEoKTsKLSAgICAgICAgRWRnZSYgcmlnaHRDaGlsZCA9IG1fbm9kZS0+Y2hpbGQyKCk7Ci0KLSAg
ICAgICAgaWYgKCEocHJvdmVuVHlwZShsZWZ0Q2hpbGQpICYgU3BlY0Z1bGxOdW1iZXIpIHx8ICEo
cHJvdmVuVHlwZShyaWdodENoaWxkKSAmIFNwZWNGdWxsTnVtYmVyKSkgewotICAgICAgICAgICAg
c2V0SlNWYWx1ZSh2bUNhbGwobV9vdXQuaW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25W
YWx1ZUFkZE5vdE51bWJlciksIG1fY2FsbEZyYW1lLAotICAgICAgICAgICAgICAgIGxvd0pTVmFs
dWUobGVmdENoaWxkKSwgbG93SlNWYWx1ZShyaWdodENoaWxkKSkpOwotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgdW5zaWduZWQgc3RhY2ttYXBJRCA9IG1fc3RhY2tt
YXBJRHMrKzsKLQotICAgICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZUNvbXBpbGF0aW9uKCkpCi0g
ICAgICAgICAgICBkYXRhTG9nKCIgICAgRW1pdHRpbmcgVmFsdWVBZGQgcGF0Y2hwb2ludCB3aXRo
IHN0YWNrbWFwICMiLCBzdGFja21hcElELCAiXG4iKTsKLQotI2lmIEZUTF9VU0VTX0IzCi0gICAg
ICAgIENSQVNIKCk7Ci0jZWxzZQotICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0pTVmFsdWUobGVm
dENoaWxkKTsKLSAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SlNWYWx1ZShyaWdodENoaWxkKTsK
LQotICAgICAgICBTbmlwcGV0T3BlcmFuZCBsZWZ0T3BlcmFuZChhYnN0cmFjdFZhbHVlKGxlZnRD
aGlsZCkucmVzdWx0VHlwZSgpKTsKLSAgICAgICAgU25pcHBldE9wZXJhbmQgcmlnaHRPcGVyYW5k
KGFic3RyYWN0VmFsdWUocmlnaHRDaGlsZCkucmVzdWx0VHlwZSgpKTsKLQotICAgICAgICAvLyBC
ZWNhdXNlIHRoZSBzbmlwcGV0IGRvZXMgbm90IHN1cHBvcnQgYm90aCBvcGVyYW5kcyBiZWluZyBj
b25zdGFudCwgaWYgdGhlIGxlZnQKLSAgICAgICAgLy8gb3BlcmFuZCBpcyBhbHJlYWR5IGEgY29u
c3RhbnQsIHdlJ2xsIGp1c3QgcHJldGVuZCB0aGUgcmlnaHQgb3BlcmFuZCBpcyBub3QuCi0gICAg
ICAgIGlmIChsZWZ0Q2hpbGQtPmlzSW50MzJDb25zdGFudCgpKQotICAgICAgICAgICAgbGVmdE9w
ZXJhbmQuc2V0Q29uc3RJbnQzMihsZWZ0Q2hpbGQtPmFzSW50MzIoKSk7Ci0gICAgICAgIGVsc2Ug
aWYgKHJpZ2h0Q2hpbGQtPmlzSW50MzJDb25zdGFudCgpKQotICAgICAgICAgICAgcmlnaHRPcGVy
YW5kLnNldENvbnN0SW50MzIocmlnaHRDaGlsZC0+YXNJbnQzMigpKTsKLQotICAgICAgICAvLyBB
cmd1bWVudHM6IGlkLCBieXRlcywgdGFyZ2V0LCBudW1BcmdzLCBhcmdzLi4uCi0gICAgICAgIFN0
YWNrbWFwQXJndW1lbnRMaXN0IGFyZ3VtZW50czsKLSAgICAgICAgYXJndW1lbnRzLmFwcGVuZCht
X291dC5jb25zdEludDY0KHN0YWNrbWFwSUQpKTsKLSAgICAgICAgYXJndW1lbnRzLmFwcGVuZCht
X291dC5jb25zdEludDMyKFZhbHVlQWRkRGVzY3JpcHRvcjo6aWNTaXplKCkpKTsKLSAgICAgICAg
YXJndW1lbnRzLmFwcGVuZChjb25zdE51bGwobV9vdXQucmVmOCkpOwotICAgICAgICBhcmd1bWVu
dHMuYXBwZW5kKG1fb3V0LmNvbnN0SW50MzIoMikpOwotICAgICAgICBhcmd1bWVudHMuYXBwZW5k
KGxlZnQpOwotICAgICAgICBhcmd1bWVudHMuYXBwZW5kKHJpZ2h0KTsKLQotICAgICAgICBhcHBl
bmRPU1JFeGl0QXJndW1lbnRzRm9yUGF0Y2hwb2ludElmV2lsbENhdGNoRXhjZXB0aW9uKGFyZ3Vt
ZW50cywKLSAgICAgICAgICAgIEV4Y2VwdGlvblR5cGU6OkJpbmFyeU9wR2VuZXJhdG9yLCAzKTsg
Ly8gbGVmdCwgcmlnaHQsIGFuZCByZXN1bHQgc2hvdyB1cCBpbiB0aGUgc3RhY2ttYXAgbG9jYXRp
b25zLgotCi0gICAgICAgIExWYWx1ZSBjYWxsID0gbV9vdXQuY2FsbChtX291dC5pbnQ2NCwgbV9v
dXQucGF0Y2hwb2ludEludDY0SW50cmluc2ljKCksIGFyZ3VtZW50cyk7Ci0gICAgICAgIHNldElu
c3RydWN0aW9uQ2FsbGluZ0NvbnZlbnRpb24oY2FsbCwgTExWTUFueVJlZ0NhbGxDb252KTsKLQot
ICAgICAgICBtX2Z0bFN0YXRlLmJpbmFyeU9wcy5hcHBlbmQoVmFsdWVBZGREZXNjcmlwdG9yKHN0
YWNrbWFwSUQsIG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLCBsZWZ0T3BlcmFuZCwgcmlnaHRPcGVy
YW5kKSk7Ci0KLSAgICAgICAgc2V0SlNWYWx1ZShjYWxsKTsKLSNlbmRpZgorICAgICAgICBjb21w
aWxlVW50eXBlZEJpbmFyeU9wPFZhbHVlQWRkRGVzY3JpcHRvcj4oKTsKICAgICB9CiAgICAgCiAg
ICAgdm9pZCBjb21waWxlU3RyQ2F0KCkKQEAgLTE3MDMsMzggKzE3MzMsNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAg
ICAgICAgICB1bnNpZ25lZCBzdGFja21hcElEID0gbV9zdGFja21hcElEcysrOwotCi0gICAgICAg
ICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZUNvbXBpbGF0aW9uKCkpCi0gICAgICAgICAgICAgICAg
ZGF0YUxvZygiICAgIEVtaXR0aW5nIEFyaXRoU3ViIHBhdGNocG9pbnQgd2l0aCBzdGFja21hcCAj
Iiwgc3RhY2ttYXBJRCwgIlxuIik7Ci0KLSNpZiBGVExfVVNFU19CMwotICAgICAgICAgICAgQ1JB
U0goKTsKLSNlbHNlCi0gICAgICAgICAgICBMVmFsdWUgbGVmdCA9IGxvd0pTVmFsdWUobV9ub2Rl
LT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dKU1ZhbHVlKG1fbm9k
ZS0+Y2hpbGQyKCkpOwotCi0gICAgICAgICAgICAvLyBBcmd1bWVudHM6IGlkLCBieXRlcywgdGFy
Z2V0LCBudW1BcmdzLCBhcmdzLi4uCi0gICAgICAgICAgICBTdGFja21hcEFyZ3VtZW50TGlzdCBh
cmd1bWVudHM7Ci0gICAgICAgICAgICBhcmd1bWVudHMuYXBwZW5kKG1fb3V0LmNvbnN0SW50NjQo
c3RhY2ttYXBJRCkpOwotICAgICAgICAgICAgYXJndW1lbnRzLmFwcGVuZChtX291dC5jb25zdElu
dDMyKEFyaXRoU3ViRGVzY3JpcHRvcjo6aWNTaXplKCkpKTsKLSAgICAgICAgICAgIGFyZ3VtZW50
cy5hcHBlbmQoY29uc3ROdWxsKG1fb3V0LnJlZjgpKTsKLSAgICAgICAgICAgIGFyZ3VtZW50cy5h
cHBlbmQobV9vdXQuY29uc3RJbnQzMigyKSk7Ci0gICAgICAgICAgICBhcmd1bWVudHMuYXBwZW5k
KGxlZnQpOwotICAgICAgICAgICAgYXJndW1lbnRzLmFwcGVuZChyaWdodCk7Ci0KLSAgICAgICAg
ICAgIGFwcGVuZE9TUkV4aXRBcmd1bWVudHNGb3JQYXRjaHBvaW50SWZXaWxsQ2F0Y2hFeGNlcHRp
b24oYXJndW1lbnRzLAotICAgICAgICAgICAgICAgIEV4Y2VwdGlvblR5cGU6OkJpbmFyeU9wR2Vu
ZXJhdG9yLCAzKTsgLy8gbGVmdCwgcmlnaHQsIGFuZCByZXN1bHQgc2hvdyB1cCBpbiB0aGUgc3Rh
Y2ttYXAgbG9jYXRpb25zLgotCi0gICAgICAgICAgICBMVmFsdWUgY2FsbCA9IG1fb3V0LmNhbGwo
bV9vdXQuaW50NjQsIG1fb3V0LnBhdGNocG9pbnRJbnQ2NEludHJpbnNpYygpLCBhcmd1bWVudHMp
OwotICAgICAgICAgICAgc2V0SW5zdHJ1Y3Rpb25DYWxsaW5nQ29udmVudGlvbihjYWxsLCBMTFZN
QW55UmVnQ2FsbENvbnYpOwotCi0gICAgICAgICAgICBTbmlwcGV0T3BlcmFuZCBsZWZ0T3BlcmFu
ZChhYnN0cmFjdFZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpLnJlc3VsdFR5cGUoKSk7Ci0gICAgICAg
ICAgICBTbmlwcGV0T3BlcmFuZCByaWdodE9wZXJhbmQoYWJzdHJhY3RWYWx1ZShtX25vZGUtPmNo
aWxkMigpKS5yZXN1bHRUeXBlKCkpOwotICAgICAgICAgICAgbV9mdGxTdGF0ZS5iaW5hcnlPcHMu
YXBwZW5kKEFyaXRoU3ViRGVzY3JpcHRvcihzdGFja21hcElELCBtX25vZGUtPm9yaWdpbi5zZW1h
bnRpYywgbGVmdE9wZXJhbmQsIHJpZ2h0T3BlcmFuZCkpOwotCi0gICAgICAgICAgICBzZXRKU1Zh
bHVlKGNhbGwpOwotI2VuZGlmCisgICAgICAgICAgICBjb21waWxlVW50eXBlZEJpbmFyeU9wPEFy
aXRoU3ViRGVzY3JpcHRvciwgRG9lc05vdEhhdmVDb25zdEludDMyT3BlcmFuZE9wdGltaXphdGlv
biwgRG9lc05vdEhhdmVDb25zdERvdWJsZU9wZXJhbmRPcHRpbWl6YXRpb24+KCk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogCkBAIC0xODMwLDU3ICsxODI5LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgVW50eXBlZFVzZTogewotICAgICAgICAgICAgRWRn
ZSYgbGVmdENoaWxkID0gbV9ub2RlLT5jaGlsZDEoKTsKLSAgICAgICAgICAgIEVkZ2UmIHJpZ2h0
Q2hpbGQgPSBtX25vZGUtPmNoaWxkMigpOwotCi0gICAgICAgICAgICBpZiAoIShwcm92ZW5UeXBl
KGxlZnRDaGlsZCkgJiBTcGVjRnVsbE51bWJlcikgfHwgIShwcm92ZW5UeXBlKHJpZ2h0Q2hpbGQp
ICYgU3BlY0Z1bGxOdW1iZXIpKSB7Ci0gICAgICAgICAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwo
bV9vdXQuaW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25WYWx1ZU11bCksIG1fY2FsbEZy
YW1lLAotICAgICAgICAgICAgICAgICAgICBsb3dKU1ZhbHVlKGxlZnRDaGlsZCksIGxvd0pTVmFs
dWUocmlnaHRDaGlsZCkpKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgIHVuc2lnbmVkIHN0YWNrbWFwSUQgPSBtX3N0YWNrbWFwSURzKys7Ci0K
LSAgICAgICAgICAgIGlmIChPcHRpb25zOjp2ZXJib3NlQ29tcGlsYXRpb24oKSkKLSAgICAgICAg
ICAgICAgICBkYXRhTG9nKCIgICAgRW1pdHRpbmcgQXJpdGhNdWwgcGF0Y2hwb2ludCB3aXRoIHN0
YWNrbWFwICMiLCBzdGFja21hcElELCAiXG4iKTsKLQotI2lmIEZUTF9VU0VTX0IzCi0gICAgICAg
ICAgICBDUkFTSCgpOwotI2Vsc2UKLSAgICAgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SlNWYWx1
ZShsZWZ0Q2hpbGQpOwotICAgICAgICAgICAgTFZhbHVlIHJpZ2h0ID0gbG93SlNWYWx1ZShyaWdo
dENoaWxkKTsKLQotICAgICAgICAgICAgU25pcHBldE9wZXJhbmQgbGVmdE9wZXJhbmQoYWJzdHJh
Y3RWYWx1ZShsZWZ0Q2hpbGQpLnJlc3VsdFR5cGUoKSk7Ci0gICAgICAgICAgICBTbmlwcGV0T3Bl
cmFuZCByaWdodE9wZXJhbmQoYWJzdHJhY3RWYWx1ZShyaWdodENoaWxkKS5yZXN1bHRUeXBlKCkp
OwotCi0gICAgICAgICAgICAvLyBCZWNhdXNlIHRoZSBzbmlwcGV0IGRvZXMgbm90IHN1cHBvcnQg
Ym90aCBvcGVyYW5kcyBiZWluZyBjb25zdGFudCwgaWYgdGhlIGxlZnQKLSAgICAgICAgICAgIC8v
IG9wZXJhbmQgaXMgYWxyZWFkeSBhIGNvbnN0YW50LCB3ZSdsbCBqdXN0IHByZXRlbmQgdGhlIHJp
Z2h0IG9wZXJhbmQgaXMgbm90LgotICAgICAgICAgICAgaWYgKGxlZnRDaGlsZC0+aXNJbnQzMkNv
bnN0YW50KCkpCi0gICAgICAgICAgICAgICAgbGVmdE9wZXJhbmQuc2V0Q29uc3RJbnQzMihsZWZ0
Q2hpbGQtPmFzSW50MzIoKSk7Ci0gICAgICAgICAgICBlbHNlIGlmIChyaWdodENoaWxkLT5pc0lu
dDMyQ29uc3RhbnQoKSkKLSAgICAgICAgICAgICAgICByaWdodE9wZXJhbmQuc2V0Q29uc3RJbnQz
MihyaWdodENoaWxkLT5hc0ludDMyKCkpOwotCi0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCgh
bGVmdE9wZXJhbmQuaXNDb25zdCgpIHx8ICFyaWdodE9wZXJhbmQuaXNDb25zdCgpKTsKLQotICAg
ICAgICAgICAgLy8gQXJndW1lbnRzOiBpZCwgYnl0ZXMsIHRhcmdldCwgbnVtQXJncywgYXJncy4u
LgotICAgICAgICAgICAgU3RhY2ttYXBBcmd1bWVudExpc3QgYXJndW1lbnRzOwotICAgICAgICAg
ICAgYXJndW1lbnRzLmFwcGVuZChtX291dC5jb25zdEludDY0KHN0YWNrbWFwSUQpKTsKLSAgICAg
ICAgICAgIGFyZ3VtZW50cy5hcHBlbmQobV9vdXQuY29uc3RJbnQzMihBcml0aE11bERlc2NyaXB0
b3I6OmljU2l6ZSgpKSk7Ci0gICAgICAgICAgICBhcmd1bWVudHMuYXBwZW5kKGNvbnN0TnVsbCht
X291dC5yZWY4KSk7Ci0gICAgICAgICAgICBhcmd1bWVudHMuYXBwZW5kKG1fb3V0LmNvbnN0SW50
MzIoMikpOwotICAgICAgICAgICAgYXJndW1lbnRzLmFwcGVuZChsZWZ0KTsKLSAgICAgICAgICAg
IGFyZ3VtZW50cy5hcHBlbmQocmlnaHQpOwotCi0gICAgICAgICAgICBhcHBlbmRPU1JFeGl0QXJn
dW1lbnRzRm9yUGF0Y2hwb2ludElmV2lsbENhdGNoRXhjZXB0aW9uKGFyZ3VtZW50cywKLSAgICAg
ICAgICAgICAgICBFeGNlcHRpb25UeXBlOjpCaW5hcnlPcEdlbmVyYXRvciwgMyk7IC8vIGxlZnQs
IHJpZ2h0LCBhbmQgcmVzdWx0IHNob3cgdXAgaW4gdGhlIHN0YWNrbWFwIGxvY2F0aW9ucy4KLQot
ICAgICAgICAgICAgTFZhbHVlIGNhbGwgPSBtX291dC5jYWxsKG1fb3V0LmludDY0LCBtX291dC5w
YXRjaHBvaW50SW50NjRJbnRyaW5zaWMoKSwgYXJndW1lbnRzKTsKLSAgICAgICAgICAgIHNldElu
c3RydWN0aW9uQ2FsbGluZ0NvbnZlbnRpb24oY2FsbCwgTExWTUFueVJlZ0NhbGxDb252KTsKLQot
ICAgICAgICAgICAgbV9mdGxTdGF0ZS5iaW5hcnlPcHMuYXBwZW5kKEFyaXRoTXVsRGVzY3JpcHRv
cihzdGFja21hcElELCBtX25vZGUtPm9yaWdpbi5zZW1hbnRpYywgbGVmdE9wZXJhbmQsIHJpZ2h0
T3BlcmFuZCkpOwotCi0gICAgICAgICAgICBzZXRKU1ZhbHVlKGNhbGwpOwotI2VuZGlmCisgICAg
ICAgICAgICBjb21waWxlVW50eXBlZEJpbmFyeU9wPEFyaXRoTXVsRGVzY3JpcHRvcj4oKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKQEAgLTE5NDksNjcgKzE4OTgsNyBAQCBwcml2
YXRlOgogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBVbnR5cGVkVXNlOiB7Ci0gICAgICAgICAg
ICBFZGdlJiBsZWZ0Q2hpbGQgPSBtX25vZGUtPmNoaWxkMSgpOwotICAgICAgICAgICAgRWRnZSYg
cmlnaHRDaGlsZCA9IG1fbm9kZS0+Y2hpbGQyKCk7Ci0KLSAgICAgICAgICAgIGlmICghKHByb3Zl
blR5cGUobGVmdENoaWxkKSAmIFNwZWNGdWxsTnVtYmVyKSB8fCAhKHByb3ZlblR5cGUocmlnaHRD
aGlsZCkgJiBTcGVjRnVsbE51bWJlcikpIHsKLSAgICAgICAgICAgICAgICBzZXRKU1ZhbHVlKHZt
Q2FsbChtX291dC5pbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvblZhbHVlRGl2KSwgbV9j
YWxsRnJhbWUsCi0gICAgICAgICAgICAgICAgICAgIGxvd0pTVmFsdWUobGVmdENoaWxkKSwgbG93
SlNWYWx1ZShyaWdodENoaWxkKSkpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgdW5zaWduZWQgc3RhY2ttYXBJRCA9IG1fc3RhY2ttYXBJRHMr
KzsKLQotICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VDb21waWxhdGlvbigpKQotICAg
ICAgICAgICAgICAgIGRhdGFMb2coIiAgICBFbWl0dGluZyBBcml0aERpdiBwYXRjaHBvaW50IHdp
dGggc3RhY2ttYXAgIyIsIHN0YWNrbWFwSUQsICJcbiIpOwotCi0jaWYgRlRMX1VTRVNfQjMKLSAg
ICAgICAgICAgIENSQVNIKCk7Ci0jZWxzZQotICAgICAgICAgICAgTFZhbHVlIGxlZnQgPSBsb3dK
U1ZhbHVlKGxlZnRDaGlsZCk7Ci0gICAgICAgICAgICBMVmFsdWUgcmlnaHQgPSBsb3dKU1ZhbHVl
KHJpZ2h0Q2hpbGQpOwotCi0gICAgICAgICAgICBTbmlwcGV0T3BlcmFuZCBsZWZ0T3BlcmFuZChh
YnN0cmFjdFZhbHVlKGxlZnRDaGlsZCkucmVzdWx0VHlwZSgpKTsKLSAgICAgICAgICAgIFNuaXBw
ZXRPcGVyYW5kIHJpZ2h0T3BlcmFuZChhYnN0cmFjdFZhbHVlKHJpZ2h0Q2hpbGQpLnJlc3VsdFR5
cGUoKSk7Ci0KLSAgICAgICAgICAgIGlmIChsZWZ0Q2hpbGQtPmlzSW50MzJDb25zdGFudCgpKQot
ICAgICAgICAgICAgICAgIGxlZnRPcGVyYW5kLnNldENvbnN0SW50MzIobGVmdENoaWxkLT5hc0lu
dDMyKCkpOwotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgICAgICBlbHNlIGlmIChsZWZ0Q2hp
bGQtPmlzRG91YmxlQ29uc3RhbnQoKSkKLSAgICAgICAgICAgICAgICBsZWZ0T3BlcmFuZC5zZXRD
b25zdERvdWJsZShsZWZ0Q2hpbGQtPmFzTnVtYmVyKCkpOwotI2VuZGlmCi0KLSAgICAgICAgICAg
IGlmIChsZWZ0T3BlcmFuZC5pc0NvbnN0KCkpIHsKLSAgICAgICAgICAgICAgICAvLyBUaGUgc25p
cHBldCBnZW5lcmF0b3Igb25seSBzdXBwb3J0cyAxIGFyZ3VtZW50IGFzIGEgY29uc3RhbnQuCi0g
ICAgICAgICAgICAgICAgLy8gSWdub3JlIHRoZSByaWdodENoaWxkJ3MgY29uc3QtbmVzcy4KLSAg
ICAgICAgICAgIH0gZWxzZSBpZiAocmlnaHRDaGlsZC0+aXNJbnQzMkNvbnN0YW50KCkpCi0gICAg
ICAgICAgICAgICAgcmlnaHRPcGVyYW5kLnNldENvbnN0SW50MzIocmlnaHRDaGlsZC0+YXNJbnQz
MigpKTsKLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAgICAgZWxzZSBpZiAocmlnaHRDaGls
ZC0+aXNEb3VibGVDb25zdGFudCgpKQotICAgICAgICAgICAgICAgIHJpZ2h0T3BlcmFuZC5zZXRD
b25zdERvdWJsZShyaWdodENoaWxkLT5hc051bWJlcigpKTsKLSNlbmRpZgotCi0gICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVCghbGVmdE9wZXJhbmQuaXNDb25zdCgpIHx8ICFyaWdodE9wZXJhbmQu
aXNDb25zdCgpKTsKLQotICAgICAgICAgICAgLy8gQXJndW1lbnRzOiBpZCwgYnl0ZXMsIHRhcmdl
dCwgbnVtQXJncywgYXJncy4uLgotICAgICAgICAgICAgU3RhY2ttYXBBcmd1bWVudExpc3QgYXJn
dW1lbnRzOwotICAgICAgICAgICAgYXJndW1lbnRzLmFwcGVuZChtX291dC5jb25zdEludDY0KHN0
YWNrbWFwSUQpKTsKLSAgICAgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQobV9vdXQuY29uc3RJbnQz
MihBcml0aERpdkRlc2NyaXB0b3I6OmljU2l6ZSgpKSk7Ci0gICAgICAgICAgICBhcmd1bWVudHMu
YXBwZW5kKGNvbnN0TnVsbChtX291dC5yZWY4KSk7Ci0gICAgICAgICAgICBhcmd1bWVudHMuYXBw
ZW5kKG1fb3V0LmNvbnN0SW50MzIoMikpOwotICAgICAgICAgICAgYXJndW1lbnRzLmFwcGVuZChs
ZWZ0KTsKLSAgICAgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQocmlnaHQpOwotCi0gICAgICAgICAg
ICBhcHBlbmRPU1JFeGl0QXJndW1lbnRzRm9yUGF0Y2hwb2ludElmV2lsbENhdGNoRXhjZXB0aW9u
KGFyZ3VtZW50cywKLSAgICAgICAgICAgICAgICBFeGNlcHRpb25UeXBlOjpCaW5hcnlPcEdlbmVy
YXRvciwgMyk7IC8vIGxlZnQsIHJpZ2h0LCBhbmQgcmVzdWx0IHNob3cgdXAgaW4gdGhlIHN0YWNr
bWFwIGxvY2F0aW9ucy4KLQotICAgICAgICAgICAgTFZhbHVlIGNhbGwgPSBtX291dC5jYWxsKG1f
b3V0LmludDY0LCBtX291dC5wYXRjaHBvaW50SW50NjRJbnRyaW5zaWMoKSwgYXJndW1lbnRzKTsK
LSAgICAgICAgICAgIHNldEluc3RydWN0aW9uQ2FsbGluZ0NvbnZlbnRpb24oY2FsbCwgTExWTUFu
eVJlZ0NhbGxDb252KTsKLQotICAgICAgICAgICAgbV9mdGxTdGF0ZS5iaW5hcnlPcHMuYXBwZW5k
KEFyaXRoRGl2RGVzY3JpcHRvcihzdGFja21hcElELCBtX25vZGUtPm9yaWdpbi5zZW1hbnRpYywg
bGVmdE9wZXJhbmQsIHJpZ2h0T3BlcmFuZCkpOwotCi0gICAgICAgICAgICBzZXRKU1ZhbHVlKGNh
bGwpOwotI2VuZGlmIC8vIEZUTF9VU0VTX0IzCisgICAgICAgICAgICBjb21waWxlVW50eXBlZEJp
bmFyeU9wPEFyaXRoRGl2RGVzY3JpcHRvciwgSGFzQ29uc3RJbnQzMk9wZXJhbmRPcHRpbWl6YXRp
b24sIEhhc0NvbnN0RG91YmxlT3BlcmFuZE9wdGltaXphdGlvbj4oKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU3Rh
dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFN0YXRlLmgJ
KHJldmlzaW9uIDE5Mzk2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU3RhdGUu
aAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNiBAQAogI2luY2x1ZGUgIkZUTEpTQ2FsbFZh
cmFyZ3MuaCIKICNpbmNsdWRlICJGVExKU1RhaWxDYWxsLmgiCiAjaW5jbHVkZSAiRlRMU3RhY2tN
YXBzLmgiCi0jaW5jbHVkZSAiRlRMU3RhdGUuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewo=
</data>
<flag name="review"
          id="292247"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>