<?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>118148</bug_id>
          
          <creation_ts>2013-06-27 14:17:35 -0700</creation_ts>
          <short_desc>fourthTier: JSC&apos;s disassembly infrastructure should be able to disassemble the code that LLVM generates</short_desc>
          <delta_ts>2013-06-27 15:51:10 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>
          
          <blocked>112840</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>904349</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-06-27 14:17:35 -0700</bug_when>
    <thetext>Oh boy.  UDis86 cannot disassemble the AVX (or whatever it&apos;s called) stuff that LLVM generates for floating point.  So the right decision is to switch to the LLVM disassembler, right?  Wrong!!  LLVM&apos;s disassembler cannot disassemble the load-from-absolute-address-into-%rax instructions that our JIT generates quite a lot of.

So we should use a combination of the two disassemblers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>904350</commentid>
    <comment_count>1</comment_count>
      <attachid>205635</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-06-27 14:23:00 -0700</bug_when>
    <thetext>Created attachment 205635
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>904367</commentid>
    <comment_count>2</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-06-27 15:51:10 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/152131</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>205635</attachid>
            <date>2013-06-27 14:23:00 -0700</date>
            <delta_ts>2013-06-27 15:22:54 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>45244</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTUyMTIyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU4IEBA
CisyMDEzLTA2LTI3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
Zm91cnRoVGllcjogSlNDJ3MgZGlzYXNzZW1ibHkgaW5mcmFzdHJ1Y3R1cmUgc2hvdWxkIGJlIGFi
bGUgdG8gZGlzYXNzZW1ibGUgdGhlIGNvZGUgdGhhdCBMTFZNIGdlbmVyYXRlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE4MTQ4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBPaCBib3kuIFVE
aXM4NiBjYW5ub3QgZGlzYXNzZW1ibGUgdGhlIEFWWCAob3Igd2hhdGV2ZXIgaXQncyBjYWxsZWQp
IHN0dWZmCisgICAgICAgIHRoYXQgTExWTSBnZW5lcmF0ZXMgZm9yIGZsb2F0aW5nIHBvaW50LiBT
byB0aGUgcmlnaHQgZGVjaXNpb24gaXMgdG8KKyAgICAgICAgc3dpdGNoIHRvIHRoZSBMTFZNIGRp
c2Fzc2VtYmxlciwgcmlnaHQ/IFdyb25nISEgTExWTSdzIGRpc2Fzc2VtYmxlcgorICAgICAgICBj
YW5ub3QgZGlzYXNzZW1ibGUgdGhlIGxvYWQtZnJvbS1hYnNvbHV0ZS1hZGRyZXNzLWludG8tJXJh
eCBpbnN0cnVjdGlvbnMKKyAgICAgICAgdGhhdCBvdXIgSklUIGdlbmVyYXRlcyBxdWl0ZSBhIGxv
dCBvZi4KKyAgICAgICAgCisgICAgICAgIFNvLCB0aGlzIGtlZXBzIHRoZSBVRGlzODYgZGlzYXNz
ZW1ibGVyLCBidXQgYWRkcyB0aGUgTExWTSBkaXNhc3NlbWJsZXIsCisgICAgICAgIGFuZCByZXF1
aXJlcyB0aGUgY2FsbGVyIG9mIGRpc2Fzc2VtYmxlKCkgdG8gaGludCB3aGljaCBvbmUgaXMgbGlr
ZWx5IHRvCisgICAgICAgIGJlIGxlc3Mgd3JvbmcgZm9yIHRoZSBnaXZlbiBjb2RlLgorICAgICAg
ICAKKyAgICAgICAgTWF5YmUgaW4gdGhlIGZ1dHVyZSBMTFZNIHdpbGwgY2F0Y2ggdXAgdG8gVURp
czg2LCBidXQgaXQncyBkZWZpbml0ZWx5IG5vdAorICAgICAgICB0aGVyZSByaWdodCBub3cuCisg
ICAgICAgIAorICAgICAgICBUaGlzIG5vdyBhbGxvd3MgdXMgdG8gZGlzYXNzZW1ibGUgYWxsIG9m
IHRoZSBjb2RlIHRoYXQgTExWTSBnZW5lcmF0ZXMuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRpc2Fzc2VtYmxlci9EaXNh
c3NlbWJsZXIuY3BwOgorICAgICAgICAoSlNDOjpkaXNhc3NlbWJsZSk6CisgICAgICAgICogZGlz
YXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5oOgorICAgICAgICAoSlNDOjp0cnlUb0Rpc2Fzc2VtYmxl
KToKKyAgICAgICAgKEpTQyk6CisgICAgICAgICogZGlzYXNzZW1ibGVyL0xMVk1EaXNhc3NlbWJs
ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OnN5bWJvbExvb2t1
cENhbGxiYWNrKToKKyAgICAgICAgKEpTQzo6dHJ5VG9EaXNhc3NlbWJsZVdpdGhMTFZNKToKKyAg
ICAgICAgKiBkaXNhc3NlbWJsZXIvTExWTURpc2Fzc2VtYmxlci5oOiBBZGRlZC4KKyAgICAgICAg
KEpTQyk6CisgICAgICAgIChKU0M6OnRyeVRvRGlzYXNzZW1ibGVXaXRoTExWTSk6CisgICAgICAg
ICogZGlzYXNzZW1ibGVyL1VEaXM4NkRpc2Fzc2VtYmxlci5jcHA6CisgICAgICAgIChKU0M6OnRy
eVRvRGlzYXNzZW1ibGVXaXRoVURpczg2KToKKyAgICAgICAgKiBkaXNhc3NlbWJsZXIvVURpczg2
RGlzYXNzZW1ibGVyLmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6dHJ5
VG9EaXNhc3NlbWJsZVdpdGhVRGlzODYpOgorICAgICAgICAqIGRpc2Fzc2VtYmxlci9YODZEaXNh
c3NlbWJsZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OnRyeVRv
RGlzYXNzZW1ibGUpOgorICAgICAgICAqIGZ0bC9GVExBYmJyZXZpYXRlZFR5cGVzLmg6CisgICAg
ICAgICogZnRsL0ZUTENvbXBpbGUuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNvbXBpbGUpOgor
ICAgICAgICAqIGZ0bC9GVExKSVRDb2RlLmg6CisgICAgICAgICogZnRsL0ZUTEpJVEZpbmFsaXpl
ci5oOgorICAgICAgICAqIGZ0bC9GVExMTFZNSGVhZGVycy5oOiBSZW1vdmVkLgorICAgICAgICAq
IGZ0bC9GVExMaW5rLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcu
Y3BwOgorICAgICAgICAoSlNDOjppbml0aWFsaXplVGhyZWFkaW5nT25jZSk6CisgICAgICAgICog
cnVudGltZS9PcHRpb25zLmg6CisgICAgICAgIChKU0MpOgorCiAyMDEzLTA2LTI3ICBGaWxpcCBQ
aXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgZm91cnRoVGllcjogRlRMIHNob3Vs
ZCBiZSBhYmxlIHRvIGR1bXAgZGlzYXNzZW1ibHkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiAxNTIxMTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTcw
LDYgKzE3MCwxMCBAQAogCQkwRjQ2RTZCOTE3NkY4OURCMDBFMUY3NTUgLyogRlRMU3dpdGNoQ2Fz
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NkU2
QjcxNzZGODlEOTAwRTFGNzU1IC8qIEZUTFN3aXRjaENhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjQ2RTZDNTE3NkY4QTVFMDBFMUY3NTUg
LyogREZHTGF6eUpTVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY0NkU2QzIxNzZGOEE1QjAwRTFGNzU1IC8qIERGR0xhenlKU1ZhbHVlLmNw
cCAqLzsgfTsKIAkJMEY0NkU2QzYxNzZGOEE2MDAwRTFGNzU1IC8qIERGR0xhenlKU1ZhbHVlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2RTZDMzE3
NkY4QTVCMDBFMUY3NTUgLyogREZHTGF6eUpTVmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ2RTZEOTE3N0NCOTAwMDBFMUY3NTUgLyog
TExWTURpc2Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjQ2RTZENzE3N0NCOEZDMDBFMUY3NTUgLyogTExWTURpc2Fzc2VtYmxlci5j
cHAgKi87IH07CisJCTBGNDZFNkUzMTc3Q0MzNjYwMEUxRjc1NSAvKiBMTFZNRGlzYXNzZW1ibGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2RTZF
MDE3N0NDMzY2MDBFMUY3NTUgLyogTExWTURpc2Fzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNDZFNkU0MTc3Q0MzNjYwMEUxRjc1
NSAvKiBVRGlzODZEaXNhc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGNDZFNkUxMTc3Q0MzNjYwMEUxRjc1NSAvKiBVRGlzODZEaXNhc3Nl
bWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQkwRjQ2RTZFNTE3N0NDMzY2MDBFMUY3NTUgLyogWDg2RGlzYXNzZW1ibGVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDZFNkUyMTc3Q0MzNjYw
MEUxRjc1NSAvKiBYODZEaXNhc3NlbWJsZXIuY3BwICovOyB9OwogCQkwRjQ5M0FGQTE2RDBDQUQz
MDA4NDUwOEIgLyogU291cmNlUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0OTNBRjgxNkQwQ0FEMTAwODQ1MDhCIC8qIFNvdXJjZVBy
b3ZpZGVyLmNwcCAqLzsgfTsKIAkJMEY0RTFBMEUxNzNBRUREQzAwN0VFMkQzIC8qIEludGVuZGVk
U3RydWN0dXJlQ2hhaW4uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY0RTFBMEMxNzNBRUREQzAwN0VFMkQzIC8qIEludGVuZGVkU3RydWN0dXJlQ2hh
aW4uY3BwICovOyB9OwogCQkwRjRFMUEwRjE3M0FFRERDMDA3RUUyRDMgLyogSW50ZW5kZWRTdHJ1
Y3R1cmVDaGFpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY0RTFBMEQxNzNBRUREQzAwN0VFMkQzIC8qIEludGVuZGVkU3RydWN0dXJlQ2hhaW4uaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzU5LDcg
KzM2Myw2IEBACiAJCTBGRUEwQTEwMTcwNTEzREIwMEJCNzIyQyAvKiBGVExMb3dlckRGR1RvTExW
TS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFQTBB
MDUxNzA1MTNEQjAwQkI3MjJDIC8qIEZUTExvd2VyREZHVG9MTFZNLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZFQTBBMTExNzA1MTNEQjAwQkI3
MjJDIC8qIEZUTE91dHB1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEZFQTBBMDYxNzA1MTNEQjAwQkI3MjJDIC8qIEZUTE91dHB1dC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGRUEwQTEyMTcwNTEz
REIwMEJCNzIyQyAvKiBGVExTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEZFQTBBMDcxNzA1MTNEQjAwQkI3MjJDIC8qIEZUTFN0YXRlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMEZFQTBBMTQx
NzA2MzYzNjAwQkI3MjJDIC8qIEZUTExMVk1IZWFkZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVBMEExMzE3MDYzNjM2MDBCQjcyMkMgLyogRlRM
TExWTUhlYWRlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwRkVBMEExNjE3MDZCQjkwMDBCQjcyMkMgLyogRlRMU3RhdGUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFQTBBMTUxNzA2QkI5MDAw
QkI3MjJDIC8qIEZUTFN0YXRlLmNwcCAqLzsgfTsKIAkJMEZFQTBBMUMxNzA4QjAwNzAwQkI3MjJD
IC8qIEZUTEFic3RyYWN0SGVhcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRkVBMEExNzE3MDhCMDA3MDBCQjcyMkMgLyogRlRMQWJzdHJhY3RIZWFw
LmNwcCAqLzsgfTsKIAkJMEZFQTBBMUQxNzA4QjAwNzAwQkI3MjJDIC8qIEZUTEFic3RyYWN0SGVh
cC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFQTBB
MTgxNzA4QjAwNzAwQkI3MjJDIC8qIEZUTEFic3RyYWN0SGVhcC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMTgwLDYgKzExODMsMTAgQEAKIAkJ
MEY0NkU2QjcxNzZGODlEOTAwRTFGNzU1IC8qIEZUTFN3aXRjaENhc2UuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gRlRMU3dpdGNoQ2FzZS5oOyBwYXRoID0gZnRsL0ZUTFN3aXRj
aENhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0NkU2QzIxNzZGOEE1QjAw
RTFGNzU1IC8qIERGR0xhenlKU1ZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IERGR0xhenlKU1ZhbHVlLmNwcDsgcGF0aCA9IGRmZy9ERkdMYXp5SlNWYWx1ZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDZFNkMzMTc2RjhBNUIwMEUxRjc1
NSAvKiBERkdMYXp5SlNWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBE
RkdMYXp5SlNWYWx1ZS5oOyBwYXRoID0gZGZnL0RGR0xhenlKU1ZhbHVlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGNDZFNkQ3MTc3Q0I4RkMwMEUxRjc1NSAvKiBMTFZNRGlzYXNz
ZW1ibGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMVk1EaXNh
c3NlbWJsZXIuY3BwOyBwYXRoID0gZGlzYXNzZW1ibGVyL0xMVk1EaXNhc3NlbWJsZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2RTZFMDE3N0NDMzY2MDBFMUY3NTUgLyog
TExWTURpc2Fzc2VtYmxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTFZN
RGlzYXNzZW1ibGVyLmg7IHBhdGggPSBkaXNhc3NlbWJsZXIvTExWTURpc2Fzc2VtYmxlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2RTZFMTE3N0NDMzY2MDBFMUY3NTUgLyog
VURpczg2RGlzYXNzZW1ibGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFVE
aXM4NkRpc2Fzc2VtYmxlci5oOyBwYXRoID0gZGlzYXNzZW1ibGVyL1VEaXM4NkRpc2Fzc2VtYmxl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2RTZFMjE3N0NDMzY2MDBFMUY3
NTUgLyogWDg2RGlzYXNzZW1ibGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IFg4NkRpc2Fzc2VtYmxlci5jcHA7IHBhdGggPSBkaXNhc3NlbWJsZXIvWDg2RGlzYXNz
ZW1ibGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0OTNBRjgxNkQwQ0FE
MTAwODQ1MDhCIC8qIFNvdXJjZVByb3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFNvdXJjZVByb3ZpZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEY0RTFBMEMxNzNBRUREQzAwN0VFMkQzIC8qIEludGVuZGVkU3RydWN0dXJlQ2hhaW4u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50ZW5kZWRTdHJ1Y3R1
cmVDaGFpbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNEUxQTBEMTczQUVE
REMwMDdFRTJEMyAvKiBJbnRlbmRlZFN0cnVjdHVyZUNoYWluLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEludGVuZGVkU3RydWN0dXJlQ2hhaW4uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTEzODQsNyArMTM5MSw2IEBACiAJCTBGRUEwQTA1MTcwNTEzREIwMEJC
NzIyQyAvKiBGVExMb3dlckRGR1RvTExWTS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBGVExMb3dlckRGR1RvTExWTS5oOyBwYXRoID0gZnRsL0ZUTExvd2VyREZHVG9MTFZNLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRUEwQTA2MTcwNTEzREIwMEJCNzIyQyAv
KiBGVExPdXRwdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRlRMT3V0cHV0
Lmg7IHBhdGggPSBmdGwvRlRMT3V0cHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGRUEwQTA3MTcwNTEzREIwMEJCNzIyQyAvKiBGVExTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBGVExTdGF0ZS5oOyBwYXRoID0gZnRsL0ZUTFN0YXRlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGRUEwQTEzMTcwNjM2MzYwMEJCNzIyQyAvKiBGVExM
TFZNSGVhZGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGVExMTFZNSGVh
ZGVycy5oOyBwYXRoID0gZnRsL0ZUTExMVk1IZWFkZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGRUEwQTE1MTcwNkJCOTAwMEJCNzIyQyAvKiBGVExTdGF0ZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGVExTdGF0ZS5jcHA7IHBhdGggPSBmdGwv
RlRMU3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkVBMEExNzE3MDhC
MDA3MDBCQjcyMkMgLyogRlRMQWJzdHJhY3RIZWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IEZUTEFic3RyYWN0SGVhcC5jcHA7IHBhdGggPSBmdGwvRlRMQWJzdHJh
Y3RIZWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZFQTBBMTgxNzA4QjAw
NzAwQkI3MjJDIC8qIEZUTEFic3RyYWN0SGVhcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBGVExBYnN0cmFjdEhlYXAuaDsgcGF0aCA9IGZ0bC9GVExBYnN0cmFjdEhlYXAuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIyMTUsNyArMjIyMSw2IEBACiAJCQkJMEZE
QjJDQ0QxNzQyRDdEMzAwN0IzQzFCIC8qIEZUTEpJVEZpbmFsaXplci5oICovLAogCQkJCTBGOEYy
QjkzMTcyRTA0OUUwMDdEQkRBNSAvKiBGVExMaW5rLmNwcCAqLywKIAkJCQkwRjhGMkI5NDE3MkUw
NDlFMDA3REJEQTUgLyogRlRMTGluay5oICovLAotCQkJCTBGRUEwQTEzMTcwNjM2MzYwMEJCNzIy
QyAvKiBGVExMTFZNSGVhZGVycy5oICovLAogCQkJCTBGRUEwQTA0MTcwNTEzREIwMEJCNzIyQyAv
KiBGVExMb3dlckRGR1RvTExWTS5jcHAgKi8sCiAJCQkJMEZFQTBBMDUxNzA1MTNEQjAwQkI3MjJD
IC8qIEZUTExvd2VyREZHVG9MTFZNLmggKi8sCiAJCQkJMEYyMzVCQzYxNzE3OEUxQzAwNjkwQzdG
IC8qIEZUTE9TUkV4aXQuY3BwICovLApAQCAtMjI0Nyw3ICsyMjUyLDExIEBACiAJCQkJMEZGNDI3
MzMxNThFQkQ2NDAwNENCOUZGIC8qIHVkaXM4NiAqLywKIAkJCQkwRjlEMzM2RTE2NURCQjhEMDA1
QUQzODcgLyogRGlzYXNzZW1ibGVyLmNwcCAqLywKIAkJCQkwRkY0MjcyRjE1OEVCRDQ0MDA0Q0I5
RkYgLyogRGlzYXNzZW1ibGVyLmggKi8sCisJCQkJMEY0NkU2RDcxNzdDQjhGQzAwRTFGNzU1IC8q
IExMVk1EaXNhc3NlbWJsZXIuY3BwICovLAorCQkJCTBGNDZFNkUwMTc3Q0MzNjYwMEUxRjc1NSAv
KiBMTFZNRGlzYXNzZW1ibGVyLmggKi8sCiAJCQkJMEZGNDI3MzAxNThFQkQ0NDAwNENCOUZGIC8q
IFVEaXM4NkRpc2Fzc2VtYmxlci5jcHAgKi8sCisJCQkJMEY0NkU2RTExNzdDQzM2NjAwRTFGNzU1
IC8qIFVEaXM4NkRpc2Fzc2VtYmxlci5oICovLAorCQkJCTBGNDZFNkUyMTc3Q0MzNjYwMEUxRjc1
NSAvKiBYODZEaXNhc3NlbWJsZXIuY3BwICovLAogCQkJKTsKIAkJCW5hbWUgPSBkaXNhc3NlbWJs
ZXI7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMzYxMyw3ICszNjIyLDYgQEAKIAkJ
CQk4NjAxNjFFNTBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZfNjQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGRUEwQTEwMTcwNTEzREIwMEJCNzIyQyAvKiBGVExMb3dlckRGR1Rv
TExWTS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODYwMTYxRTYwRjNBODNDMTAwRjg0NzEwIC8qIE1h
Y3JvQXNzZW1ibGVyWDg2Q29tbW9uLmggaW4gSGVhZGVycyAqLywKLQkJCQkwRkVBMEExNDE3MDYz
NjM2MDBCQjcyMkMgLyogRlRMTExWTUhlYWRlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyQjkx
NkMyMTREQTAxNEUwMENCQUM4NiAvKiBNYXJrZWRBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAog
CQkJCTE0MkQ2RjA5MTM1MzlBMjgwMEIwMkU4NiAvKiBNYXJrZWRCbG9jay5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMTQxNDQ4Q0IxM0ExNzZFQzAwRjVCQTFBIC8qIE1hcmtlZEJsb2NrU2V0LmggaW4g
SGVhZGVycyAqLywKQEAgLTM4MTAsNiArMzgxOCw4IEBACiAJCQkJMEY1RUU0RTkxNzU0MjRBRjAw
OUFFNDJEIC8qIEpTQ1Rlc3RSdW5uZXJVdGlscy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0NkU2
QzYxNzZGOEE2MDAwRTFGNzU1IC8qIERGR0xhenlKU1ZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjQ2RTZCOTE3NkY4OURCMDBFMUY3NTUgLyogRlRMU3dpdGNoQ2FzZS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMEY0NkU2RTMxNzdDQzM2NjAwRTFGNzU1IC8qIExMVk1EaXNhc3NlbWJsZXIuaCBp
biBIZWFkZXJzICovLAorCQkJCTBGNDZFNkU0MTc3Q0MzNjYwMEUxRjc1NSAvKiBVRGlzODZEaXNh
c3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtNDUwMSw2ICs0NTExLDggQEAKIAkJCQkwRjcx
NENBNDE2RUE5MkYwMDBGM0VCRUIgLyogREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRjVFRTRFODE3NTQyNEFGMDA5QUU0MkQgLyogSlNDVGVzdFJ1
bm5lclV0aWxzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDZFNkM1MTc2RjhBNUUwMEUxRjc1
NSAvKiBERkdMYXp5SlNWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjQ2RTZEOTE3N0NC
OTAwMDBFMUY3NTUgLyogTExWTURpc2Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkw
RjQ2RTZFNTE3N0NDMzY2MDBFMUY3NTUgLyogWDg2RGlzYXNzZW1ibGVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwog
CQl9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9EaXNhc3NlbWJs
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIv
RGlzYXNzZW1ibGVyLmNwcAkocmV2aXNpb24gMTUyMTE5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2Rpc2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMSw5ICsz
MSw5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi12b2lkIGRpc2Fzc2VtYmxlKGNvbnN0IE1hY3Jv
QXNzZW1ibGVyQ29kZVB0ciYgY29kZVB0ciwgc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIqIHByZWZp
eCwgUHJpbnRTdHJlYW0mIG91dCkKK3ZvaWQgZGlzYXNzZW1ibGUoY29uc3QgTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyJiBjb2RlUHRyLCBzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciogcHJlZml4LCBQcmlu
dFN0cmVhbSYgb3V0LCBJbnN0cnVjdGlvblN1YnNldEhpbnQgc3Vic2V0SGludCkKIHsKLSAgICBp
ZiAodHJ5VG9EaXNhc3NlbWJsZShjb2RlUHRyLCBzaXplLCBwcmVmaXgsIG91dCkpCisgICAgaWYg
KHRyeVRvRGlzYXNzZW1ibGUoY29kZVB0ciwgc2l6ZSwgcHJlZml4LCBvdXQsIHN1YnNldEhpbnQp
KQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgb3V0LnByaW50ZigiJXNkaXNhc3NlbWJseSBu
b3QgYXZhaWxhYmxlIGZvciByYW5nZSAlcC4uLiVwXG4iLCBwcmVmaXgsIGNvZGVQdHIuZXhlY3V0
YWJsZUFkZHJlc3MoKSwgc3RhdGljX2Nhc3Q8Y2hhcio+KGNvZGVQdHIuZXhlY3V0YWJsZUFkZHJl
c3MoKSkgKyBzaXplKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIv
RGlzYXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fz
c2VtYmxlci9EaXNhc3NlbWJsZXIuaAkocmV2aXNpb24gMTUyMTE5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMs
MTAgKzMzLDEyIEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBNYWNyb0Fzc2VtYmxlckNvZGVQ
dHI7CiAKK2VudW0gSW5zdHJ1Y3Rpb25TdWJzZXRIaW50IHsgTWFjcm9Bc3NlbWJsZXJTdWJzZXQs
IExMVk1TdWJzZXQgfTsKKwogI2lmIEVOQUJMRShESVNBU1NFTUJMRVIpCi1ib29sIHRyeVRvRGlz
YXNzZW1ibGUoY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiwgc2l6ZV90LCBjb25zdCBjaGFy
KiBwcmVmaXgsIFByaW50U3RyZWFtJik7Citib29sIHRyeVRvRGlzYXNzZW1ibGUoY29uc3QgTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyJiwgc2l6ZV90LCBjb25zdCBjaGFyKiBwcmVmaXgsIFByaW50U3Ry
ZWFtJiwgSW5zdHJ1Y3Rpb25TdWJzZXRIaW50ID0gTWFjcm9Bc3NlbWJsZXJTdWJzZXQpOwogI2Vs
c2UKLWlubGluZSBib29sIHRyeVRvRGlzYXNzZW1ibGUoY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyJiwgc2l6ZV90LCBjb25zdCBjaGFyKiwgUHJpbnRTdHJlYW0mKQoraW5saW5lIGJvb2wgdHJ5
VG9EaXNhc3NlbWJsZShjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHImLCBzaXplX3QsIGNvbnN0
IGNoYXIqLCBQcmludFN0cmVhbSYsIEluc3RydWN0aW9uU3Vic2V0SGludCA9IE1hY3JvQXNzZW1i
bGVyU3Vic2V0KQogewogICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTQ0LDcgKzQ2LDcgQEAgaW5s
aW5lIGJvb2wgdHJ5VG9EaXNhc3NlbWJsZShjb25zdCBNYWNybwogCiAvLyBQcmludHMgZWl0aGVy
IHRoZSBkaXNhc3NlbWJseSwgb3IgYSBsaW5lIG9mIHRleHQgaW5kaWNhdGluZyB0aGF0IGRpc2Fz
c2VtYmx5IGZhaWxlZCBhbmQKIC8vIHRoZSByYW5nZSBvZiBtYWNoaW5lIGNvZGUgYWRkcmVzc2Vz
Lgotdm9pZCBkaXNhc3NlbWJsZShjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHImLCBzaXplX3Qs
IGNvbnN0IGNoYXIqIHByZWZpeCwgUHJpbnRTdHJlYW0mIG91dCk7Cit2b2lkIGRpc2Fzc2VtYmxl
KGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYsIHNpemVfdCwgY29uc3QgY2hhciogcHJlZml4
LCBQcmludFN0cmVhbSYgb3V0LCBJbnN0cnVjdGlvblN1YnNldEhpbnQgPSBNYWNyb0Fzc2VtYmxl
clN1YnNldCk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGlzYXNzZW1ibGVyL0xMVk1EaXNhc3NlbWJsZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvTExWTURpc2Fzc2VtYmxlci5jcHAJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0xMVk1EaXNh
c3NlbWJsZXIuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExNSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiTExWTURpc2Fzc2VtYmxlci5oIgorCisjaWYgVVNFKExMVk1fRElTQVNTRU1CTEVS
KQorCisjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgiCisjaW5jbHVkZSA8d3RmL0xM
Vk1IZWFkZXJzLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitzdGF0aWMgY29uc3QgdW5zaWduZWQg
c3ltYm9sU3RyaW5nU2l6ZSA9IDIwOworCitzdGF0aWMgY29uc3QgY2hhciAqc3ltYm9sTG9va3Vw
Q2FsbGJhY2soCisgICAgdm9pZCogb3BhcXVlLCB1aW50NjRfdCByZWZlcmVuY2VWYWx1ZSwgdWlu
dDY0X3QqIHJlZmVyZW5jZVR5cGUsIHVpbnQ2NF90IHJlZmVyZW5jZVBDLAorICAgIGNvbnN0IGNo
YXIqKiByZWZlcmVuY2VOYW1lKQoreworICAgIGNoYXIqIHN5bWJvbFN0cmluZyA9IHN0YXRpY19j
YXN0PGNoYXIqPihvcGFxdWUpOworICAgIAorICAgIHN3aXRjaCAoKnJlZmVyZW5jZVR5cGUpIHsK
KyAgICBjYXNlIExMVk1EaXNhc3NlbWJsZXJfUmVmZXJlbmNlVHlwZV9Jbk91dF9Ob25lOgorICAg
ICAgICByZXR1cm4gMDsKKyAgICBjYXNlIExMVk1EaXNhc3NlbWJsZXJfUmVmZXJlbmNlVHlwZV9J
bl9CcmFuY2g6CisgICAgICAgICpyZWZlcmVuY2VOYW1lID0gMDsKKyAgICAgICAgKnJlZmVyZW5j
ZVR5cGUgPSBMTFZNRGlzYXNzZW1ibGVyX1JlZmVyZW5jZVR5cGVfSW5PdXRfTm9uZTsKKyAgICAg
ICAgc25wcmludGYoCisgICAgICAgICAgICBzeW1ib2xTdHJpbmcsIHN5bWJvbFN0cmluZ1NpemUs
ICIweCVseCIsCisgICAgICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihyZWZlcmVu
Y2VWYWx1ZSkpOworICAgICAgICByZXR1cm4gc3ltYm9sU3RyaW5nOworICAgIGRlZmF1bHQ6Cisg
ICAgICAgIGRhdGFMb2coInJlZmVyZW5jZVZhbHVlID0gIiwgcmVmZXJlbmNlVmFsdWUsICJcbiIp
OworICAgICAgICBkYXRhTG9nKCJyZWZlcmVuY2VUeXBlID0gIiwgUmF3UG9pbnRlcihyZWZlcmVu
Y2VUeXBlKSwgIiwgKnJlZmVyZW5jZVR5cGUgPSAiLCAqcmVmZXJlbmNlVHlwZSwgIlxuIik7Cisg
ICAgICAgIGRhdGFMb2coInJlZmVyZW5jZVBDID0gIiwgcmVmZXJlbmNlUEMsICJcbiIpOworICAg
ICAgICBkYXRhTG9nKCJyZWZlcmVuY2VOYW1lID0gIiwgUmF3UG9pbnRlcihyZWZlcmVuY2VOYW1l
KSwgIlxuIik7CisgICAgCisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIHJldHVybiAwOworICAgIH0KK30KKworYm9vbCB0cnlUb0Rpc2Fzc2VtYmxlV2l0aExM
Vk0oCisgICAgY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiBjb2RlUHRyLCBzaXplX3Qgc2l6
ZSwgY29uc3QgY2hhciogcHJlZml4LCBQcmludFN0cmVhbSYgb3V0LAorICAgIEluc3RydWN0aW9u
U3Vic2V0SGludCkKK3sKKyAgICBjb25zdCBjaGFyKiB0cmlwbGU7CisjaWYgQ1BVKFg4Nl82NCkK
KyAgICB0cmlwbGUgPSAieDg2XzY0LWFwcGxlLWRhcndpbiI7CisjZWxpZiBDUFUoWDg2KQorICAg
IHRyaXBsZSA9ICJ4ODYtYXBwbGUtZGFyd2luIjsKKyNlbHNlCisjZXJyb3IgIkxMVk0gZGlzYXNz
ZW1ibGVyIGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgQ1BVLiIKKyNlbmRpZgorCisg
ICAgY2hhciBzeW1ib2xTdHJpbmdbc3ltYm9sU3RyaW5nU2l6ZV07CisgICAgCisgICAgTExWTURp
c2FzbUNvbnRleHRSZWYgZGlzYXNzZW1ibHlDb250ZXh0ID0KKyAgICAgICAgTExWTUNyZWF0ZURp
c2FzbSh0cmlwbGUsIHN5bWJvbFN0cmluZywgMCwgMCwgc3ltYm9sTG9va3VwQ2FsbGJhY2spOwor
ICAgIFJFTEVBU0VfQVNTRVJUKGRpc2Fzc2VtYmx5Q29udGV4dCk7CisgICAgCisgICAgY2hhciBw
Y1N0cmluZ1syMF07CisgICAgY2hhciBpbnN0cnVjdGlvblN0cmluZ1sxMDAwXTsKKyAgICAKKyAg
ICB1aW50OF90KiBwYyA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihjb2RlUHRyLmV4ZWN1dGFibGVB
ZGRyZXNzKCkpOworICAgIHVpbnQ4X3QqIGVuZCA9IHBjICsgc2l6ZTsKKyAgICAKKyAgICB3aGls
ZSAocGMgPCBlbmQpIHsKKyAgICAgICAgc25wcmludGYoCisgICAgICAgICAgICBwY1N0cmluZywg
c2l6ZW9mKHBjU3RyaW5nKSwgIjB4JWx4IiwKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PHVuc2ln
bmVkIGxvbmc+KGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHBjKSkpOworCisgICAgICAgIHNpemVf
dCBpbnN0cnVjdGlvblNpemUgPSBMTFZNRGlzYXNtSW5zdHJ1Y3Rpb24oCisgICAgICAgICAgICBk
aXNhc3NlbWJseUNvbnRleHQsIHBjLCBlbmQgLSBwYywgYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4o
cGMpLAorICAgICAgICAgICAgaW5zdHJ1Y3Rpb25TdHJpbmcsIHNpemVvZihpbnN0cnVjdGlvblN0
cmluZykpOworICAgICAgICAKKyAgICAgICAgaWYgKCFpbnN0cnVjdGlvblNpemUpCisgICAgICAg
ICAgICBzbnByaW50ZihpbnN0cnVjdGlvblN0cmluZywgc2l6ZW9mKGluc3RydWN0aW9uU3RyaW5n
KSwgIi5ieXRlIDB4JTAyeCIsICpwYysrKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcGMg
Kz0gaW5zdHJ1Y3Rpb25TaXplOworICAgICAgICAKKyAgICAgICAgb3V0LnByaW50ZigiJXMlMTZz
OiAlc1xuIiwgcHJlZml4LCBwY1N0cmluZywgaW5zdHJ1Y3Rpb25TdHJpbmcpOworICAgIH0KKyAg
ICAKKyAgICBMTFZNRGlzYXNtRGlzcG9zZShkaXNhc3NlbWJseUNvbnRleHQpOworICAgIAorICAg
IHJldHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIFVTRShM
TFZNX0RJU0FTU0VNQkxFUikKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2Vt
Ymxlci9MTFZNRGlzYXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2Rpc2Fzc2VtYmxlci9MTFZNRGlzYXNzZW1ibGVyLmgJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0xMVk1EaXNhc3NlbWJsZXIuaAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaWZuZGVmIExMVk1EaXNhc3NlbWJsZXJfaAorI2RlZmluZSBMTFZNRGlz
YXNzZW1ibGVyX2gKKworI2luY2x1ZGUgIkRpc2Fzc2VtYmxlci5oIgorCituYW1lc3BhY2UgSlND
IHsKKworI2lmIFVTRShMTFZNX0RJU0FTU0VNQkxFUikKKworYm9vbCB0cnlUb0Rpc2Fzc2VtYmxl
V2l0aExMVk0oY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiBjb2RlUHRyLCBzaXplX3Qgc2l6
ZSwgY29uc3QgY2hhciogcHJlZml4LCBQcmludFN0cmVhbSYgb3V0LCBJbnN0cnVjdGlvblN1YnNl
dEhpbnQpOworCisjZWxzZSAvLyBVU0UoTExWTV9ESVNBU1NFTUJMRVIpCisKK2lubGluZSBib29s
IHRyeVRvRGlzYXNzZW1ibGVXaXRoTExWTShjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHImLCBz
aXplX3QsIGNvbnN0IGNoYXIqLCBQcmludFN0cmVhbSYsIEluc3RydWN0aW9uU3Vic2V0SGludCkg
eyByZXR1cm4gZmFsc2U7IH0KKworI2VuZGlmIC8vIFVTRShMTFZNX0RJU0FTU0VNQkxFUikKKwor
fSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBMTFZNRGlzYXNzZW1ibGVyX2gKKwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9VRGlzODZEaXNhc3NlbWJsZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvVURp
czg2RGlzYXNzZW1ibGVyLmNwcAkocmV2aXNpb24gMTUyMTE5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Rpc2Fzc2VtYmxlci9VRGlzODZEaXNhc3NlbWJsZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yNCw3ICsyNCw3IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkRp
c2Fzc2VtYmxlci5oIgorI2luY2x1ZGUgIlVEaXM4NkRpc2Fzc2VtYmxlci5oIgogCiAjaWYgVVNF
KFVESVM4NikKIApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotYm9vbCB0
cnlUb0Rpc2Fzc2VtYmxlKGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYgY29kZVB0ciwgc2l6
ZV90IHNpemUsIGNvbnN0IGNoYXIqIHByZWZpeCwgUHJpbnRTdHJlYW0mIG91dCkKK2Jvb2wgdHJ5
VG9EaXNhc3NlbWJsZVdpdGhVRGlzODYoY29uc3QgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiBjb2Rl
UHRyLCBzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciogcHJlZml4LCBQcmludFN0cmVhbSYgb3V0LCBJ
bnN0cnVjdGlvblN1YnNldEhpbnQpCiB7CiAgICAgdWRfdCBkaXNhc3NlbWJsZXI7CiAgICAgdWRf
aW5pdCgmZGlzYXNzZW1ibGVyKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3Nl
bWJsZXIvVURpczg2RGlzYXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Rpc2Fzc2VtYmxlci9VRGlzODZEaXNhc3NlbWJsZXIuaAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kaXNhc3NlbWJsZXIvVURpczg2RGlzYXNzZW1ibGVyLmgJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBVRGlzODZEaXNhc3NlbWJsZXJfaAorI2RlZmlu
ZSBVRGlzODZEaXNhc3NlbWJsZXJfaAorCisjaW5jbHVkZSAiRGlzYXNzZW1ibGVyLmgiCisKK25h
bWVzcGFjZSBKU0MgeworCisjaWYgVVNFKFVESVM4NikKKworYm9vbCB0cnlUb0Rpc2Fzc2VtYmxl
V2l0aFVEaXM4Nihjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHImIGNvZGVQdHIsIHNpemVfdCBz
aXplLCBjb25zdCBjaGFyKiBwcmVmaXgsIFByaW50U3RyZWFtJiBvdXQsIEluc3RydWN0aW9uU3Vi
c2V0SGludCk7CisKKyNlbHNlIC8vIFVTRShVRElTODYpCisKK2lubGluZSBib29sIHRyeVRvRGlz
YXNzZW1ibGVXaXRoVURpczg2KGNvbnN0IE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYsIHNpemVfdCwg
Y29uc3QgY2hhciosIFByaW50U3RyZWFtJiwgSW5zdHJ1Y3Rpb25TdWJzZXRIaW50KSB7IHJldHVy
biBmYWxzZTsgfQorCisjZW5kaWYgLy8gVVNFKFVESVM4NikKKworfSAvLyBuYW1lc3BhY2UgSlND
CisKKyNlbmRpZiAvLyBVRGlzODZEaXNhc3NlbWJsZXJfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGlzYXNzZW1ibGVyL1g4NkRpc2Fzc2VtYmxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9YODZEaXNhc3NlbWJsZXIuY3BwCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9YODZEaXNh
c3NlbWJsZXIuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJEaXNhc3NlbWJsZXIuaCIKKworI2lmIFVTRShVRElTODYpIHx8IFVTRShMTFZNX0RJ
U0FTU0VNQkxFUikKKworI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIgorI2luY2x1
ZGUgIk9wdGlvbnMuaCIKKyNpbmNsdWRlICJVRGlzODZEaXNhc3NlbWJsZXIuaCIKKyNpbmNsdWRl
ICJMTFZNRGlzYXNzZW1ibGVyLmgiCisKK25hbWVzcGFjZSBKU0MgeworCisvLyBUaGlzIGhvcnJp
ZnlpbmcgbW9uc3RlciBpcyBuZWVkZWQgYmVjYXVzZSBuZWl0aGVyIG9mIG91ciBkaXNhc3NlbWJs
ZXJzIHN1cHBvcnRzCisvLyBhbGwgb2YgeDg2LCBhbmQgdXNpbmcgdGhlbSB0b2dldGhlciB0byBk
aXNhc3NlbWJsZSB0aGUgc2FtZSBpbnN0cnVjdGlvbiBzdHJlYW0KKy8vIHdvdWxkIHJlc3VsdCBp
biBhIGZhaXJseSBqYXJyaW5nIHByaW50LW91dCBzaW5jZSB0aGV5IHByaW50IGluIGRpZmZlcmVu
dAorLy8gc3R5bGVzLiBNYXliZSB3ZSBjYW4gZG8gYmV0dGVyIGluIHRoZSBmdXR1cmUsIGJ1dCBm
b3Igbm93IHRoZSBjYWxsZXIgaGludHMKKy8vIHdoZXRoZXIgaGUncyB1c2luZyB0aGUgc3Vic2V0
IG9mIHRoZSBhcmNoaXRlY3R1cmUgdGhhdCBvdXIgTWFjcm9Bc3NlbWJsZXIKKy8vIHN1cHBvcnRz
IChpbiB3aGljaCBjYXNlIHdlIGdvIHdpdGggVURpczg2KSBvciBpZiBoZSdzIHVzaW5nIHRoZSBM
TFZNIHN1YnNldC4KKworYm9vbCB0cnlUb0Rpc2Fzc2VtYmxlKGNvbnN0IE1hY3JvQXNzZW1ibGVy
Q29kZVB0ciYgY29kZVB0ciwgc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIqIHByZWZpeCwgUHJpbnRT
dHJlYW0mIG91dCwgSW5zdHJ1Y3Rpb25TdWJzZXRIaW50IHN1YnNldEhpbnQpCit7CisgICAgaWYg
KE9wdGlvbnM6OmZvcmNlVURpczg2RGlzYXNzZW1ibGVyKCkpCisgICAgICAgIHJldHVybiB0cnlU
b0Rpc2Fzc2VtYmxlV2l0aFVEaXM4Nihjb2RlUHRyLCBzaXplLCBwcmVmaXgsIG91dCwgc3Vic2V0
SGludCk7CisgICAgaWYgKE9wdGlvbnM6OmZvcmNlTExWTURpc2Fzc2VtYmxlcigpKQorICAgICAg
ICByZXR1cm4gdHJ5VG9EaXNhc3NlbWJsZVdpdGhMTFZNKGNvZGVQdHIsIHNpemUsIHByZWZpeCwg
b3V0LCBzdWJzZXRIaW50KTsKKyAgICAKKyAgICBpZiAoc3Vic2V0SGludCA9PSBNYWNyb0Fzc2Vt
YmxlclN1YnNldAorICAgICAgICAmJiB0cnlUb0Rpc2Fzc2VtYmxlV2l0aFVEaXM4Nihjb2RlUHRy
LCBzaXplLCBwcmVmaXgsIG91dCwgTWFjcm9Bc3NlbWJsZXJTdWJzZXQpKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICBpZiAoc3Vic2V0SGludCA9PSBMTFZNU3Vic2V0CisgICAgICAgICYmIHRy
eVRvRGlzYXNzZW1ibGVXaXRoTExWTShjb2RlUHRyLCBzaXplLCBwcmVmaXgsIG91dCwgTExWTVN1
YnNldCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIAorICAgIGlmICh0cnlUb0Rpc2Fzc2Vt
YmxlV2l0aFVEaXM4Nihjb2RlUHRyLCBzaXplLCBwcmVmaXgsIG91dCwgc3Vic2V0SGludCkpCisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIGlmICh0cnlUb0Rpc2Fzc2VtYmxlV2l0aExMVk0oY29k
ZVB0ciwgc2l6ZSwgcHJlZml4LCBvdXQsIHN1YnNldEhpbnQpKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBm
YWxzZTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBVU0UoVURJUzg2KSB8
fCBVU0UoTExWTV9ESVNBU1NFTUJMRVIpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMQWJicmV2aWF0ZWRUeXBlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQWJicmV2aWF0ZWRUeXBlcy5oCShyZXZpc2lvbiAxNTIxMTkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFiYnJldmlhdGVkVHlwZXMuaAkod29ya2luZyBjb3B5
KQpAQCAtMzAsNyArMzAsNyBAQAogCiAjaWYgRU5BQkxFKEZUTF9KSVQpCiAKLSNpbmNsdWRlICJG
VExMTFZNSGVhZGVycy5oIgorI2luY2x1ZGUgPHd0Zi9MTFZNSGVhZGVycy5oPgogCiBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMQ29tcGlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExDb21waWxlLmNwcAkocmV2aXNpb24gMTUyMTE5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExDb21waWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsOSArMzMsOSBAQAog
I2luY2x1ZGUgIkRGR0NvbW1vbi5oIgogI2luY2x1ZGUgIkRpc2Fzc2VtYmxlci5oIgogI2luY2x1
ZGUgIkZUTEpJVENvZGUuaCIKLSNpbmNsdWRlICJGVExMTFZNSGVhZGVycy5oIgogI2luY2x1ZGUg
IkpJVFN0dWJzLmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgorI2luY2x1ZGUgPHd0Zi9MTFZN
SGVhZGVycy5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAKQEAgLTEzMSw3
ICsxMzEsNyBAQCB2b2lkIGNvbXBpbGUoU3RhdGUmIHN0YXRlKQogICAgICAgICAgICAgICAgICIg
IyIsIGksICI6XG4iKTsKICAgICAgICAgICAgIGRpc2Fzc2VtYmxlKAogICAgICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyQ29kZVB0cihoYW5kbGUtPnN0YXJ0KCkpLCBoYW5kbGUtPnNpemVJbkJ5
dGVzKCksCi0gICAgICAgICAgICAgICAgIiAgICAiLCBXVEY6OmRhdGFGaWxlKCkpOworICAgICAg
ICAgICAgICAgICIgICAgIiwgV1RGOjpkYXRhRmlsZSgpLCBMTFZNU3Vic2V0KTsKICAgICAgICAg
fQogICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklUQ29kZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklUQ29kZS5oCShy
ZXZpc2lvbiAxNTIxMTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVENvZGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMzEsOSArMzEsOSBAQAogI2lmIEVOQUJMRShGVExfSklUKQog
CiAjaW5jbHVkZSAiREZHQ29tbW9uRGF0YS5oIgotI2luY2x1ZGUgIkZUTExMVk1IZWFkZXJzLmgi
CiAjaW5jbHVkZSAiRlRMT1NSRXhpdC5oIgogI2luY2x1ZGUgIkpJVENvZGUuaCIKKyNpbmNsdWRl
IDx3dGYvTExWTUhlYWRlcnMuaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVEZpbmFsaXplci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklURmluYWxpemVyLmgJKHJl
dmlzaW9uIDE1MjExOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklURmluYWxp
emVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDkgKzMzLDkgQEAKICNpbmNsdWRlICJERkdGaW5h
bGl6ZXIuaCIKICNpbmNsdWRlICJGVExHZW5lcmF0ZWRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkZU
TEpJVENvZGUuaCIKLSNpbmNsdWRlICJGVExMTFZNSGVhZGVycy5oIgogI2luY2x1ZGUgIkxpbmtC
dWZmZXIuaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgorI2luY2x1ZGUgPHd0Zi9MTFZN
SGVhZGVycy5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTExWTUhlYWRlcnMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExMVk1IZWFkZXJzLmgJKHJldmlzaW9uIDE1MjEx
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTExWTUhlYWRlcnMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAotICovCi0KLSNpZm5kZWYgRlRMTExWTUhlYWRlcnNfaAotI2RlZmluZSBGVExMTFZN
SGVhZGVyc19oCi0KLSNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KLQotI2lmIEVOQUJMRShGVExf
SklUKQotCi0vLyBJdCBpcyBuZWNlc3NhcnkgdG8gaW5jbHVkZSBMTFZNIGhlYWRlcnMgdmlhIHRo
aXMgZmlsZSwgYmVjYXVzZToKLS8vIC0gTExWTSByZXF1aXJlcyBkZWZpbmluZyB0aGluZ3MgdGhh
dCB3ZSBkb24ndCBub3JtYWxseSBkZWZpbmUsIGFuZAotLy8gLSBMTFZNIGluY2x1ZGVzIGl0cyBD
KysgaGVhZGVycyBmcm9tIGl0cyBDIGhlYWRlcnMsIGFuZCBpdHMgQysrCi0vLyAgIGhlYWRlcnMg
ZG9uJ3QgY29tcGlsZSBjbGVhbmx5IHdpdGggb3VyIHdhcm5pbmdzLgotCi0jZGVmaW5lIF9fU1RE
Q19MSU1JVF9NQUNST1MKLSNkZWZpbmUgX19TVERDX0NPTlNUQU5UX01BQ1JPUwotCi0jaWYgQ09N
UElMRVIoQ0xBTkcpCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAotI3ByYWdtYSBjbGFu
ZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XbWlzc2luZy1ub3JldHVybiIKLSNwcmFnbWEgY2xhbmcg
ZGlhZ25vc3RpYyBpZ25vcmVkICItV3VudXNlZC1wYXJhbWV0ZXIiCi0jZW5kaWYKLQotI2luY2x1
ZGUgPGxsdm0tYy9BbmFseXNpcy5oPgotI2luY2x1ZGUgPGxsdm0tYy9FeGVjdXRpb25FbmdpbmUu
aD4KLSNpbmNsdWRlIDxsbHZtLWMvQ29yZS5oPgotI2luY2x1ZGUgPGxsdm0tYy9UYXJnZXQuaD4K
LSNpbmNsdWRlIDxsbHZtLWMvVHJhbnNmb3Jtcy9TY2FsYXIuaD4KLQotI2lmIENPTVBJTEVSKENM
QU5HKQotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAotI2VuZGlmCi0KLSNlbmRpZiAvLyBF
TkFCTEUoRlRMX0pJVCkKLQotI2VuZGlmIC8vIEZUTExMVk1IZWFkZXJzX2gKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAkocmV2aXNpb24gMTUyMTE5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsOSAr
MzMsOSBAQAogI2luY2x1ZGUgIkRGR0NDYWxsSGVscGVycy5oIgogI2luY2x1ZGUgIkRGR0NvbW1v
bi5oIgogI2luY2x1ZGUgIkZUTEpJVENvZGUuaCIKLSNpbmNsdWRlICJGVExMTFZNSGVhZGVycy5o
IgogI2luY2x1ZGUgIkpJVFN0dWJzLmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgorI2luY2x1
ZGUgPHd0Zi9MTFZNSGVhZGVycy5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRp
bmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRp
YWxpemVUaHJlYWRpbmcuY3BwCShyZXZpc2lvbiAxNTIxMTkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIkluaXRpYWxpemVUaHJlYWRpbmcuaCIKIAogI2luY2x1
ZGUgIkV4ZWN1dGFibGVBbGxvY2F0b3IuaCIKLSNpbmNsdWRlICJGVExMTFZNSGVhZGVycy5oIgog
I2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJIZWFwU3RhdGlzdGljcy5oIgogI2luY2x1ZGUg
Ik9wdGlvbnMuaCIKQEAgLTQxLDYgKzQwLDcgQEAKICNpbmNsdWRlICJMTEludERhdGEuaCIKICNp
bmNsdWRlICJXcml0ZUJhcnJpZXIuaCIKICNpbmNsdWRlIDx3dGYvZHRvYS5oPgorI2luY2x1ZGUg
PHd0Zi9MTFZNSGVhZGVycy5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KICNpbmNsdWRl
IDx3dGYvZHRvYS9jYWNoZWQtcG93ZXJzLmg+CiAKQEAgLTcwLDExICs3MCwyNCBAQCBzdGF0aWMg
dm9pZCBpbml0aWFsaXplVGhyZWFkaW5nT25jZSgpCiAjaWYgRU5BQkxFKExMSU5UKQogICAgIExM
SW50Ojppbml0aWFsaXplKCk7CiAjZW5kaWYKKyNpZiBIQVZFKExMVk0pCisgICAgYm9vbCBmdGwg
PSBmYWxzZTsKKyAgICBib29sIGRpc2Fzc2VtYmxlciA9IGZhbHNlOwogI2lmIEVOQUJMRShGVExf
SklUKQotICAgIExMVk1MaW5rSW5NQ0pJVCgpOwotICAgIExMVk1Jbml0aWFsaXplTmF0aXZlVGFy
Z2V0KCk7Ci0gICAgTExWTUluaXRpYWxpemVYODZBc21QcmludGVyKCk7CisgICAgZnRsID0gdHJ1
ZTsKICNlbmRpZgorI2lmIFVTRShMTFZNX0RJU0FTU0VNQkxFUikKKyAgICBkaXNhc3NlbWJsZXIg
PSB0cnVlOworI2VuZGlmCisgICAgaWYgKGZ0bCkKKyAgICAgICAgTExWTUxpbmtJbk1DSklUKCk7
CisgICAgaWYgKGZ0bCB8fCBkaXNhc3NlbWJsZXIpCisgICAgICAgIExMVk1Jbml0aWFsaXplTmF0
aXZlVGFyZ2V0KCk7CisgICAgaWYgKGZ0bCkKKyAgICAgICAgTExWTUluaXRpYWxpemVYODZBc21Q
cmludGVyKCk7CisgICAgaWYgKGRpc2Fzc2VtYmxlcikKKyAgICAgICAgTExWTUluaXRpYWxpemVY
ODZEaXNhc3NlbWJsZXIoKTsKKyNlbmRpZiAvLyBIQVZFKExMVk0pCiB9CiAKIHZvaWQgaW5pdGlh
bGl6ZVRocmVhZGluZygpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRp
b25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9u
cy5oCShyZXZpc2lvbiAxNTIxMTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
cHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTk4LDYgKzk4LDkgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgXAogICAgIHYoYm9vbCwgZW5hYmxlUHJvZmlsZXIsIGZhbHNlKSBcCiAgICAgXAorICAg
IHYoYm9vbCwgZm9yY2VVRGlzODZEaXNhc3NlbWJsZXIsIGZhbHNlKSBcCisgICAgdihib29sLCBm
b3JjZUxMVk1EaXNhc3NlbWJsZXIsIGZhbHNlKSBcCisgICAgXAogICAgIHYodW5zaWduZWQsIG1h
eGltdW1PcHRpbWl6YXRpb25DYW5kaWRhdGVJbnN0cnVjdGlvbkNvdW50LCAxMDAwMCkgXAogICAg
IFwKICAgICB2KHVuc2lnbmVkLCBtYXhpbXVtRnVuY3Rpb25Gb3JDYWxsSW5saW5lQ2FuZGlkYXRl
SW5zdHJ1Y3Rpb25Db3VudCwgMTgwKSBcCkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMTUyMTIyKQorKysgU291
cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMyBAQAorMjAxMy0w
Ni0yNyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIGZvdXJ0aFRp
ZXI6IEpTQydzIGRpc2Fzc2VtYmx5IGluZnJhc3RydWN0dXJlIHNob3VsZCBiZSBhYmxlIHRvIGRp
c2Fzc2VtYmxlIHRoZSBjb2RlIHRoYXQgTExWTSBnZW5lcmF0ZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExODE0OAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgV2Ugbm93IHVzZSBMTFZNIGZv
ciB0d28gdGhpbmdzOiBkaXNhc3NlbWJsZXIgYW5kIEZUTC4gU2VwYXJhdGUgb3V0IHRoZSBxdWVz
dGlvbgorICAgICAgICBvZiB3aGV0aGVyIHdlIGhhdmUgTExWTSAoSEFWRShMTFZNKSkgZnJvbSB3
aGV0aGVyIHdlIHdhbnQgdG8gdXNlIHRoZSBMTFZNCisgICAgICAgIGRpc2Fzc2VtYmxlciAoVVNF
KExMVk1fRElTQVNTRU1CTEVSKSkgYW5kIHdoZXRoZXIgd2UgZW5hYmxlIHRoZSBGVEwKKyAgICAg
ICAgKEVOQUJMRShGVExfSklUKSkuCisgICAgICAgIAorICAgICAgICBBbHNvIG1vdmUgdGhlIGNy
dWZ0IGZvciBpbmNsdWRpbmcgTExWTSBoZWFkZXJzIGludG8gV1RGIHNpbmNlIG5vdyB3ZSB1c2Ug
aXQgaW4KKyAgICAgICAgYSBidW5jaCBvZiBwbGFjZXMsIG5vdCBhbGwgcmVsYXRlZCB0byBGVEwu
IFRoZXJlJ3Mgbm8gb2J2aW91cyBwbGFjZSB0byBwdXQgdGhhdAorICAgICAgICBmaWxlIGluIEpT
QyBzbyBJIHB1dCBpdCBpbiBXVEYuCisKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiB3dGYvTExWTUhlYWRlcnMuaDogQ29waWVkIGZyb20gU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMTFZNSGVhZGVycy5oLgorICAgICAgICAqIHd0Zi9QbGF0
Zm9ybS5oOgorCiAyMDEzLTA2LTI1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAK
ICAgICAgICAgZm91cnRoVGllcjogREZHIHNob3VsZCBzdXBwb3J0IHN3aXRjaF9zdHJpbmcKSW5k
ZXg6IFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTUy
MTE5KQorKysgU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtMjIsMTAgKzIyLDExIEBACiAKIC8qIEJlZ2luIFBCWEJ1aWxkRmlsZSBzZWN0
aW9uICovCiAJCTBGMEQ4NUI0MTcyMzRDQzEwMDMzODIxMCAvKiBOb0xvY2suaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEQ4NUIzMTcyMzRDQjEwMDMz
ODIxMCAvKiBOb0xvY2suaCAqLzsgfTsKKwkJMEY0NkU2REUxNzdDQkE2QTAwRTFGNzU1IC8qIExM
Vk1IZWFkZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjQ2RTZERDE3N0NCQTZBMDBFMUY3NTUgLyogTExWTUhlYWRlcnMuaCAqLzsgfTsKIAkJMEY4
NzEwNUExNjY0M0YxOTAwOTBCMEFEIC8qIFJhd1BvaW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODcxMDU5MTY2NDNGMTkwMDkwQjBBRCAvKiBS
YXdQb2ludGVyLmggKi87IH07Ci0JCTBGOEYyQjlDMTcyRjI1OTYwMDdEQkRBNSAvKiBDb252ZXJz
aW9uTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY4RjJCOUIxNzJGMjU5NDAwN0RCREE1IC8qIENvbnZlcnNpb25Nb2RlLmggKi87IH07CiAJCTBG
OEYyQjkxMTcyRTAwRkMwMDdEQkRBNSAvKiBDb21waWxhdGlvblRocmVhZC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4RjJCOTAxNzJFMDBGMDAwN0RC
REE1IC8qIENvbXBpbGF0aW9uVGhyZWFkLmggKi87IH07CiAJCTBGOEYyQjkyMTcyRTAxMDMwMDdE
QkRBNSAvKiBDb21waWxhdGlvblRocmVhZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjhGMkI4RjE3MkUwMEYwMDA3REJEQTUgLyogQ29tcGlsYXRp
b25UaHJlYWQuY3BwICovOyB9OworCQkwRjhGMkI5QzE3MkYyNTk2MDA3REJEQTUgLyogQ29udmVy
c2lvbk1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGOEYyQjlCMTcyRjI1OTQwMDdEQkRBNSAvKiBDb252ZXJzaW9uTW9kZS5oICovOyB9OwogCQkw
RjlEMzM2MDE2NURCQTczMDA1QUQzODcgLyogRmlsZVByaW50U3RyZWFtLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOUQzMzVCMTY1REJBNzMwMDVB
RDM4NyAvKiBGaWxlUHJpbnRTdHJlYW0uY3BwICovOyB9OwogCQkwRjlEMzM2MTE2NURCQTczMDA1
QUQzODcgLyogRmlsZVByaW50U3RyZWFtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjlEMzM1QzE2NURCQTczMDA1QUQzODcgLyogRmlsZVByaW50U3Ry
ZWFtLmggKi87IH07CiAJCTBGOUQzMzYyMTY1REJBNzMwMDVBRDM4NyAvKiBQcmludFN0cmVhbS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjlEMzM1
RDE2NURCQTczMDA1QUQzODcgLyogUHJpbnRTdHJlYW0uY3BwICovOyB9OwpAQCAtMzM3LDEwICsz
MzgsMTEgQEAKIAogLyogQmVnaW4gUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCiAJCTBGMEQ4
NUIzMTcyMzRDQjEwMDMzODIxMCAvKiBOb0xvY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTm9Mb2NrLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDZFNkREMTc3Q0JBNkEwMEUxRjc1NSAv
KiBMTFZNSGVhZGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMTFZNSGVh
ZGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjg3MTA1OTE2NjQzRjE5MDA5
MEIwQUQgLyogUmF3UG9pbnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
YXdQb2ludGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGOEYyQjlCMTcyRjI1
OTQwMDdEQkRBNSAvKiBDb252ZXJzaW9uTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb252ZXJzaW9u
TW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjhGMkI4RjE3MkUwMEYwMDA3
REJEQTUgLyogQ29tcGlsYXRpb25UaHJlYWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29tcGls
YXRpb25UaHJlYWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjhGMkI5MDE3
MkUwMEYwMDA3REJEQTUgLyogQ29tcGlsYXRpb25UaHJlYWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29t
cGlsYXRpb25UaHJlYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY4RjJCOUIx
NzJGMjU5NDAwN0RCREE1IC8qIENvbnZlcnNpb25Nb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnZl
cnNpb25Nb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOUQzMzVCMTY1REJB
NzMwMDVBRDM4NyAvKiBGaWxlUHJpbnRTdHJlYW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRmlsZVByaW50U3RyZWFtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEY5RDMzNUMxNjVEQkE3MzAwNUFEMzg3IC8qIEZpbGVQcmludFN0cmVhbS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaWxlUHJpbnRTdHJlYW0uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5RDMzNUQxNjVEQkE3MzAwNUFEMzg3IC8qIFByaW50
U3RyZWFtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByaW50U3Ry
ZWFtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc4Nyw2ICs3ODksNyBAQAog
CQkJCUE4QTQ3MkJGMTUxQTgyNUEwMDQxMjNGRiAvKiBJbnQzMkFycmF5LmggKi8sCiAJCQkJQThB
NDcyQkQxNTFBODI1QTAwNDEyM0ZGIC8qIEludDhBcnJheS5oICovLAogCQkJCUE4QTQ3MkMwMTUx
QTgyNUEwMDQxMjNGRiAvKiBJbnRlZ3JhbFR5cGVkQXJyYXlCYXNlLmggKi8sCisJCQkJMEY0NkU2
REQxNzdDQkE2QTAwRTFGNzU1IC8qIExMVk1IZWFkZXJzLmggKi8sCiAJCQkJQThBNDcyQzExNTFB
ODI1QTAwNDEyM0ZGIC8qIExpc3RIYXNoU2V0LmggKi8sCiAJCQkJQThBNDcyQzIxNTFBODI1QTAw
NDEyM0ZGIC8qIExpc3RSZWZQdHIuaCAqLywKIAkJCQlBOEE0NzJDMzE1MUE4MjVBMDA0MTIzRkYg
LyogTG9ja2VyLmggKi8sCkBAIC0xMzA2LDYgKzEzMDksNyBAQAogCQkJCUE4QTQ3NDQ2MTUxQTgy
NUIwMDQxMjNGRiAvKiBXVEZTdHJpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3NDg3MTUx
QTgyNUIwMDQxMjNGRiAvKiBXVEZUaHJlYWREYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkM0
NDg4MzE2RkU5RkUxMDA4NDRCRTkgLyogUHJvY2Vzc0lELmggaW4gSGVhZGVycyAqLywKKwkJCQkw
RjQ2RTZERTE3N0NCQTZBMDBFMUY3NTUgLyogTExWTUhlYWRlcnMuaCBpbiBIZWFkZXJzICovLAog
CQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJ
bmRleDogU291cmNlL1dURi93dGYvTExWTUhlYWRlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V1RGL3d0Zi9MTFZNSGVhZGVycy5oCShyZXZpc2lvbiAxNTIxMDYpCShmcm9tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTExWTUhlYWRlcnMuaDoxNTIxMDYpCisrKyBTb3VyY2UvV1RGL3d0
Zi9MTFZNSGVhZGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBGVExMTFZNSGVh
ZGVyc19oCisjZGVmaW5lIEZUTExMVk1IZWFkZXJzX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9y
bS5oPgorCisjaWYgRU5BQkxFKEZUTF9KSVQpCisKKy8vIEl0IGlzIG5lY2Vzc2FyeSB0byBpbmNs
dWRlIExMVk0gaGVhZGVycyB2aWEgdGhpcyBmaWxlLCBiZWNhdXNlOgorLy8gLSBMTFZNIHJlcXVp
cmVzIGRlZmluaW5nIHRoaW5ncyB0aGF0IHdlIGRvbid0IG5vcm1hbGx5IGRlZmluZSwgYW5kCisv
LyAtIExMVk0gaW5jbHVkZXMgaXRzIEMrKyBoZWFkZXJzIGZyb20gaXRzIEMgaGVhZGVycywgYW5k
IGl0cyBDKysKKy8vICAgaGVhZGVycyBkb24ndCBjb21waWxlIGNsZWFubHkgd2l0aCBvdXIgd2Fy
bmluZ3MuCisKKyNkZWZpbmUgX19TVERDX0xJTUlUX01BQ1JPUworI2RlZmluZSBfX1NURENfQ09O
U1RBTlRfTUFDUk9TCisKKyNpZiBDT01QSUxFUihDTEFORykKKyNwcmFnbWEgY2xhbmcgZGlhZ25v
c3RpYyBwdXNoCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdtaXNzaW5nLW5v
cmV0dXJuIgorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdW51c2VkLXBhcmFt
ZXRlciIKKyNlbmRpZgorCisjaW5jbHVkZSA8bGx2bS1jL0FuYWx5c2lzLmg+CisjaW5jbHVkZSA8
bGx2bS1jL0V4ZWN1dGlvbkVuZ2luZS5oPgorI2luY2x1ZGUgPGxsdm0tYy9Db3JlLmg+CisjaW5j
bHVkZSA8bGx2bS1jL1RhcmdldC5oPgorI2luY2x1ZGUgPGxsdm0tYy9UcmFuc2Zvcm1zL1NjYWxh
ci5oPgorCisjaWYgQ09NUElMRVIoQ0xBTkcpCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9w
CisjZW5kaWYKKworI2VuZGlmIC8vIEVOQUJMRShGVExfSklUKQorCisjZW5kaWYgLy8gRlRMTExW
TUhlYWRlcnNfaApJbmRleDogU291cmNlL1dURi93dGYvTExWTUhlYWRlcnMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV1RGL3d0Zi9MTFZNSGVhZGVycy5oCShyZXZpc2lvbiAxNTIxMDYpCisrKyBT
b3VyY2UvV1RGL3d0Zi9MTFZNSGVhZGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMywxMiArMjMs
MTIgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNpZm5kZWYgRlRMTExWTUhlYWRlcnNfaAot
I2RlZmluZSBGVExMTFZNSGVhZGVyc19oCisjaWZuZGVmIExMVk1IZWFkZXJzX2gKKyNkZWZpbmUg
TExWTUhlYWRlcnNfaAogCiAjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CiAKLSNpZiBFTkFCTEUo
RlRMX0pJVCkKKyNpZiBIQVZFKExMVk0pCiAKIC8vIEl0IGlzIG5lY2Vzc2FyeSB0byBpbmNsdWRl
IExMVk0gaGVhZGVycyB2aWEgdGhpcyBmaWxlLCBiZWNhdXNlOgogLy8gLSBMTFZNIHJlcXVpcmVz
IGRlZmluaW5nIHRoaW5ncyB0aGF0IHdlIGRvbid0IG5vcm1hbGx5IGRlZmluZSwgYW5kCkBAIC00
NSw4ICs0NSw5IEBACiAjZW5kaWYKIAogI2luY2x1ZGUgPGxsdm0tYy9BbmFseXNpcy5oPgotI2lu
Y2x1ZGUgPGxsdm0tYy9FeGVjdXRpb25FbmdpbmUuaD4KICNpbmNsdWRlIDxsbHZtLWMvQ29yZS5o
PgorI2luY2x1ZGUgPGxsdm0tYy9EaXNhc3NlbWJsZXIuaD4KKyNpbmNsdWRlIDxsbHZtLWMvRXhl
Y3V0aW9uRW5naW5lLmg+CiAjaW5jbHVkZSA8bGx2bS1jL1RhcmdldC5oPgogI2luY2x1ZGUgPGxs
dm0tYy9UcmFuc2Zvcm1zL1NjYWxhci5oPgogCkBAIC01NCw2ICs1NSw2IEBACiAjcHJhZ21hIGNs
YW5nIGRpYWdub3N0aWMgcG9wCiAjZW5kaWYKIAotI2VuZGlmIC8vIEVOQUJMRShGVExfSklUKQor
I2VuZGlmIC8vIEhBVkUoTExWTSkKIAotI2VuZGlmIC8vIEZUTExMVk1IZWFkZXJzX2gKKyNlbmRp
ZiAvLyBMTFZNSGVhZGVyc19oCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgJKHJldmlzaW9uIDE1MjExOSkKKysr
IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgJKHdvcmtpbmcgY29weSkKQEAgLTc1OSw2ICs3NTks
MTcgQEAKICNkZWZpbmUgRU5BQkxFX0pJVCAxCiAjZW5kaWYKIAorLyogRG8gd2UgaGF2ZSBMTFZN
PyBPbiBNYWMsIHdlIG5vdyBhbHdheXMgZG8uICovCisjaWYgIWRlZmluZWQoSEFWRV9MTFZNKSAm
JiBQTEFURk9STShNQUMpCisjZGVmaW5lIEhBVkVfTExWTSAxCisjZW5kaWYKKworLyogSWYgcG9z
c2libGUsIHRyeSB0byBlbmFibGUgdGhlIExMVk0gZGlzYXNzZW1ibGVyLiBUaGlzIGlzIG9wdGlv
bmFsIGFuZCB3ZSBjYW4KKyAgIGZhbGwgYmFjayBvbiBVRGlzODYgaWYgbmVjZXNzYXJ5LiAqLwor
I2lmICFkZWZpbmVkKFdURl9VU0VfTExWTV9ESVNBU1NFTUJMRVIpICYmIEhBVkUoTExWTSkgJiYg
KENQVShYODZfNjQpIHx8IENQVShYODYpKQorI2RlZmluZSBXVEZfVVNFX0xMVk1fRElTQVNTRU1C
TEVSIDEKKyNlbmRpZgorCiAvKiBJZiBwb3NzaWJsZSwgdHJ5IHRvIGVuYWJsZSBhIGRpc2Fzc2Vt
Ymxlci4gVGhpcyBpcyBvcHRpb25hbC4gV2UgcHJvY2VlZCBpbiB0d28KICAgIHN0ZXBzOiBmaXJz
dCB3ZSB0cnkgdG8gZmluZCBzb21lIGRpc2Fzc2VtYmxlciB0aGF0IHdlIGNhbiB1c2UsIGFuZCB0
aGVuIHdlCiAgICBkZWNpZGUgaWYgdGhlIGhpZ2gtbGV2ZWwgZGlzYXNzZW1ibGVyIEFQSSBjYW4g
YmUgZW5hYmxlZC4gKi8KQEAgLTc2Nyw3ICs3NzgsNyBAQAogI2RlZmluZSBXVEZfVVNFX1VESVM4
NiAxCiAjZW5kaWYKIAotI2lmICFkZWZpbmVkKEVOQUJMRV9ESVNBU1NFTUJMRVIpICYmIFVTRShV
RElTODYpCisjaWYgIWRlZmluZWQoRU5BQkxFX0RJU0FTU0VNQkxFUikgJiYgKFVTRShVRElTODYp
IHx8IFVTRShMTFZNX0RJU0FTU0VNQkxFUikpCiAjZGVmaW5lIEVOQUJMRV9ESVNBU1NFTUJMRVIg
MQogI2VuZGlmCiAKQEAgLTgxNiw3ICs4MjcsNyBAQAogI2RlZmluZSBFTkFCTEVfQ09OQ1VSUkVO
VF9KSVQgMQogI2VuZGlmCiAKLSNpZiBDUFUoWDg2XzY0KSAmJiBQTEFURk9STShNQUMpICYmIEVO
QUJMRShERkdfSklUKQorI2lmIENQVShYODZfNjQpICYmIEhBVkUoTExWTSkgJiYgRU5BQkxFKERG
R19KSVQpCiAjZGVmaW5lIEVOQUJMRV9GVExfSklUIDEKICNlbmRpZgogCg==
</data>
<flag name="review"
          id="227208"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>