<?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>220432</bug_id>
          
          <creation_ts>2021-01-07 13:00:15 -0800</creation_ts>
          <short_desc>Work around Clang bug in __builtin_return_address().</short_desc>
          <delta_ts>2021-01-08 12:36:49 -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 Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1718058</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-01-07 13:00:15 -0800</bug_when>
    <thetext>Clang&apos;s __builtin_return_address() currently sometimes returns a PAC signed pointer and sometimes not.  This patch works around that by always ensuring that the pointer is not signed.

rdar://71648468</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1718095</commentid>
    <comment_count>1</comment_count>
      <attachid>417215</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-01-07 15:03:38 -0800</bug_when>
    <thetext>Created attachment 417215
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1718112</commentid>
    <comment_count>2</comment_count>
      <attachid>417215</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-01-07 15:39:00 -0800</bug_when>
    <thetext>Comment on attachment 417215
proposed patch.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1718116</commentid>
    <comment_count>3</comment_count>
      <attachid>417215</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2021-01-07 15:42:47 -0800</bug_when>
    <thetext>Comment on attachment 417215
proposed patch.

View in context: https://bugs.webkit.org/attachment.cgi?id=417215&amp;action=review

&gt; Source/WebKit/PluginProcess/mac/PluginProcessShim.mm:43
&gt; +#if CPU(ARM64E)

Is it even possible to make an arm64 plug-in that WebKit will load?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1718131</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-01-07 16:10:59 -0800</bug_when>
    <thetext>(In reply to Alexey Proskuryakov from comment #3)
&gt; Comment on attachment 417215 [details]
&gt; proposed patch.
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=417215&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/PluginProcess/mac/PluginProcessShim.mm:43
&gt; &gt; +#if CPU(ARM64E)
&gt; 
&gt; Is it even possible to make an arm64 plug-in that WebKit will load?

I actually don&apos;t know.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1718161</commentid>
    <comment_count>5</comment_count>
      <attachid>417215</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-01-07 17:12:07 -0800</bug_when>
    <thetext>Comment on attachment 417215
proposed patch.

Thanks for the review.  Landing now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1718169</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-01-07 17:36:51 -0800</bug_when>
    <thetext>Committed r271279: &lt;https://trac.webkit.org/changeset/271279&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 417215.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1718357</commentid>
    <comment_count>7</comment_count>
      <attachid>417215</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-01-08 11:31:04 -0800</bug_when>
    <thetext>Comment on attachment 417215
proposed patch.

View in context: https://bugs.webkit.org/attachment.cgi?id=417215&amp;action=review

&gt; Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h:239
&gt; +#if CPU(ARM64E)

Surprised that this is #if CPU(ARM64E) and not something more like #if HAVE/USE(TAGGED_POINTERS).

&gt; Source/JavaScriptCore/interpreter/CallFrame.h:322
&gt; +// FIXME (see rdar://72897291): Work around a Clang bug where __builtin_return_address()
&gt; +// sometimes gives us a signed pointer, and sometimes does not.

Doesn&apos;t seem critical to have that comment here. It’s more valuable at the site of the workarounds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1718367</commentid>
    <comment_count>8</comment_count>
      <attachid>417215</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-01-08 11:48:10 -0800</bug_when>
    <thetext>Comment on attachment 417215
proposed patch.

View in context: https://bugs.webkit.org/attachment.cgi?id=417215&amp;action=review

&gt;&gt; Source/JavaScriptCore/interpreter/CallFrame.h:322
&gt;&gt; +// sometimes gives us a signed pointer, and sometimes does not.
&gt; 
&gt; Doesn&apos;t seem critical to have that comment here. It’s more valuable at the site of the workarounds.

Right below this, we use a removeCodePtrTag() on the result of __builtin_return_address().  This shouldn&apos;t be needed if __builtin_return_address() actually behaves consistently.  That&apos;s why I added this comment here to note this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1718389</commentid>
    <comment_count>9</comment_count>
      <attachid>417215</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-01-08 12:16:15 -0800</bug_when>
    <thetext>Comment on attachment 417215
proposed patch.

View in context: https://bugs.webkit.org/attachment.cgi?id=417215&amp;action=review

&gt;&gt;&gt; Source/JavaScriptCore/interpreter/CallFrame.h:322
&gt;&gt;&gt; +// sometimes gives us a signed pointer, and sometimes does not.
&gt;&gt; 
&gt;&gt; Doesn&apos;t seem critical to have that comment here. It’s more valuable at the site of the workarounds.
&gt; 
&gt; Right below this, we use a removeCodePtrTag() on the result of __builtin_return_address().  This shouldn&apos;t be needed if __builtin_return_address() actually behaves consistently.  That&apos;s why I added this comment here to note this.

OK. I misunderstood because the removeCodePtrTag was already there. Just curious, why was it already there?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1718396</commentid>
    <comment_count>10</comment_count>
      <attachid>417215</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-01-08 12:29:14 -0800</bug_when>
    <thetext>Comment on attachment 417215
proposed patch.

View in context: https://bugs.webkit.org/attachment.cgi?id=417215&amp;action=review

&gt;&gt; Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h:239
&gt;&gt; +#if CPU(ARM64E)
&gt; 
&gt; Surprised that this is #if CPU(ARM64E) and not something more like #if HAVE/USE(TAGGED_POINTERS).

To me, CPU(ARM64E) is better since ARM64E ABI involves pointer tagging. If we introduce TAGGED_POINTERS, we need to consider about pair of TAGGED_POINTERS + ARM64, TAGGED_POINTERS + X64 etc. while they do not exist.
So long as ARM64E is only one ABI using pointer tagging, I prefer using ARM64E here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1718398</commentid>
    <comment_count>11</comment_count>
      <attachid>417215</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-01-08 12:36:49 -0800</bug_when>
    <thetext>Comment on attachment 417215
proposed patch.

View in context: https://bugs.webkit.org/attachment.cgi?id=417215&amp;action=review

&gt;&gt;&gt; Source/JavaScriptCore/assembler/MacroAssemblerCodeRef.h:239
&gt;&gt;&gt; +#if CPU(ARM64E)
&gt;&gt; 
&gt;&gt; Surprised that this is #if CPU(ARM64E) and not something more like #if HAVE/USE(TAGGED_POINTERS).
&gt; 
&gt; To me, CPU(ARM64E) is better since ARM64E ABI involves pointer tagging. If we introduce TAGGED_POINTERS, we need to consider about pair of TAGGED_POINTERS + ARM64, TAGGED_POINTERS + X64 etc. while they do not exist.
&gt; So long as ARM64E is only one ABI using pointer tagging, I prefer using ARM64E here.

I don’t understand your logic at all!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417215</attachid>
            <date>2021-01-07 15:03:38 -0800</date>
            <delta_ts>2021-01-07 17:36:52 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-220432.patch</filename>
            <type>text/plain</type>
            <size>20103</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjcxMjU1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBA
CisyMDIxLTAxLTA3ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBX
b3JrIGFyb3VuZCBDbGFuZyBidWcgaW4gX19idWlsdGluX3JldHVybl9hZGRyZXNzKCkuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjA0MzIKKyAgICAg
ICAgcmRhcjovLzcxNjQ4NDY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQ2xhbmcncyBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoKSBjdXJyZW50bHkg
c29tZXRpbWVzIHJldHVybnMgYSBQQUMgc2lnbmVkIHBvaW50ZXIKKyAgICAgICAgYW5kIHNvbWV0
aW1lcyBub3QuICBUaGlzIHBhdGNoIHdvcmtzIGFyb3VuZCB0aGF0IGJ5IGFsd2F5cyBlbnN1cmlu
ZyB0aGF0IHRoZSBwb2ludGVyCisgICAgICAgIGlzIG5vdCBzaWduZWQuCisKKyAgICAgICAgQWxz
byBjaGFuZ2VkIHRoZSBSZXR1cm5BZGRyZXNzUHRyIHRvIHN0b3JlIGEgc2lnbmVkIHBvaW50ZXIu
CisKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmg6CisgICAgICAg
IChKU0M6OlJldHVybkFkZHJlc3NQdHI6OlJldHVybkFkZHJlc3NQdHIpOgorICAgICAgICAoSlND
OjpSZXR1cm5BZGRyZXNzUHRyOjp1bnRhZ2dlZFZhbHVlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpNYWNyb0Fzc2VtYmxlckNvZGVQdHIpOgorICAgICAgICAq
IGludGVycHJldGVyL0Fic3RyYWN0UEMuaDoKKyAgICAgICAgKEpTQzo6QWJzdHJhY3RQQzo6QWJz
dHJhY3RQQyk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmg6CisgICAgICAgICog
aml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OmN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyk6
CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZh
dGVDb21waWxlSGFzSW5kZXhlZFByb3BlcnR5KToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMy
XzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZUhhc0luZGV4ZWRQcm9w
ZXJ0eSk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpK
U0NfREVGSU5FX0pJVF9PUEVSQVRJT04pOgorICAgICAgICAoSlNDOjp1bnByb2ZpbGVkTXVsKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6cHJvZmlsZWRNdWwpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjp1bnByb2ZpbGVkU3ViKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6cHJvZmlsZWRTdWIp
OiBEZWxldGVkLgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6
cHJpdmF0ZUNvbXBpbGVQdXRQcml2YXRlTmFtZVdpdGhDYWNoZWRJZCk6CisgICAgICAgIChKU0M6
OkpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbFdpdGhDYWNoZWRJZCk6CisgICAgICAgICogcnVu
dGltZS9KU0NQdHJUYWcuaDoKKwogMjAyMS0wMS0wNyAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBs
ZS5jb20+CiAKICAgICAgICAgVGhlIHNjcmF0Y2ggcmVnaXN0ZXIgc2hvdWxkIGJlIGRpZmZlcmVu
dCBmcm9tIHRoZSB0YXJnZXQgcmVnaXN0ZXIgd2hlbiBjYWxsaW5nIHZhbGlkYXRlVW50YWdnZWRQ
dHIuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
Q29kZVJlZi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgJKHJldmlzaW9uIDI3MTI0MSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0yMzQsOSArMjM0LDEzIEBAIGNsYXNzIFJldHVybkFkZHJlc3NQdHIgewogcHVibGlj
OgogICAgIFJldHVybkFkZHJlc3NQdHIoKSB7IH0KIAotICAgIGV4cGxpY2l0IFJldHVybkFkZHJl
c3NQdHIoY29uc3Qgdm9pZCogdmFsdWUpCi0gICAgICAgIDogbV92YWx1ZSh2YWx1ZSkKKyAgICBl
eHBsaWNpdCBSZXR1cm5BZGRyZXNzUHRyKGNvbnN0IHZvaWQqIHJldHVybkFkZHJlc3MpCiAgICAg
eworI2lmIENQVShBUk02NEUpCisgICAgICAgIGFzc2VydElzTm90VGFnZ2VkKHJldHVybkFkZHJl
c3MpOworICAgICAgICByZXR1cm5BZGRyZXNzID0gcmV0YWdDb2RlUHRyPE5vUHRyVGFnLCBSZXR1
cm5BZGRyZXNzUHRyVGFnPihyZXR1cm5BZGRyZXNzKTsKKyNlbmRpZgorICAgICAgICBtX3ZhbHVl
ID0gcmV0dXJuQWRkcmVzczsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUihtX3Zh
bHVlKTsKICAgICB9CiAKQEAgLTI0NSw2ICsyNDksMTEgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gbV92YWx1ZTsKICAgICB9CiAgICAgCisgICAgY29uc3Qgdm9pZCogdW50YWdnZWRWYWx1ZSgp
IGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gdW50YWdDb2RlUHRyPFJldHVybkFkZHJlc3NQ
dHJUYWc+KG1fdmFsdWUpOworICAgIH0KKwogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0
KSBjb25zdAogICAgIHsKICAgICAgICAgb3V0LnByaW50KFJhd1BvaW50ZXIobV92YWx1ZSkpOwpA
QCAtMjk3LDEwICszMDYsOSBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgZXhwbGljaXQgTWFjcm9B
c3NlbWJsZXJDb2RlUHRyKFJldHVybkFkZHJlc3NQdHIgcmEpCi0gICAgICAgIDogbV92YWx1ZSh0
YWdDb2RlUHRyPHRhZz4ocmEudmFsdWUoKSkpCisgICAgICAgIDogbV92YWx1ZShyZXRhZ0NvZGVQ
dHI8UmV0dXJuQWRkcmVzc1B0clRhZywgdGFnPihyYS52YWx1ZSgpKSkKICAgICB7Ci0gICAgICAg
IGFzc2VydElzTm90VGFnZ2VkKHJhLnZhbHVlKCkpOwotICAgICAgICBBU1NFUlQocmEudmFsdWUo
KSk7CisgICAgICAgIEFTU0VSVChyYS51bnRhZ2dlZFZhbHVlKCkpOwogICAgICAgICBBU1NFUlRf
VkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0Fic3RyYWN0UEMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQWJzdHJhY3RQQy5oCShyZXZpc2lvbiAyNzEyNDEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQWJzdHJhY3RQQy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTQ3LDYgKzQ3LDcgQEAgcHVibGljOgogICAgICAgICA6IG1fcG9pbnRlcihwdHIu
dmFsdWUoKSkKICAgICAgICAgLCBtX21vZGUoSklUKQogICAgIHsKKyAgICAgICAgYXNzZXJ0SXNU
YWdnZWRXaXRoPFJldHVybkFkZHJlc3NQdHJUYWc+KG1fcG9pbnRlcik7CiAgICAgfQogICAgIAog
ICAgIGJvb2wgaGFzSklUUmV0dXJuQWRkcmVzcygpIGNvbnN0IHsgcmV0dXJuIG1fbW9kZSA9PSBK
SVQ7IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZy
YW1lLmgJKHJldmlzaW9uIDI3MTI0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9DYWxsRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiAg
Q29weXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKICAq
ICBDb3B5cmlnaHQgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKLSAqICBDb3B5
cmlnaHQgKEMpIDIwMDMtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAg
Q29weXJpZ2h0IChDKSAyMDAzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTMxOCw2ICszMTgsOCBAQCBuYW1lc3BhY2UgSlNDICB7
CiBKU19FWFBPUlRfUFJJVkFURSBib29sIGlzRnJvbUpTQ29kZSh2b2lkKiByZXR1cm5BZGRyZXNz
KTsKIAogI2lmIFVTRShCVUlMVElOX0ZSQU1FX0FERFJFU1MpCisvLyBGSVhNRSAoc2VlIHJkYXI6
Ly83Mjg5NzI5MSk6IFdvcmsgYXJvdW5kIGEgQ2xhbmcgYnVnIHdoZXJlIF9fYnVpbHRpbl9yZXR1
cm5fYWRkcmVzcygpCisvLyBzb21ldGltZXMgZ2l2ZXMgdXMgYSBzaWduZWQgcG9pbnRlciwgYW5k
IHNvbWV0aW1lcyBkb2VzIG5vdC4KICNkZWZpbmUgREVDTEFSRV9DQUxMX0ZSQU1FKHZtKSBcCiAg
ICAgKHsgXAogICAgICAgICBBU1NFUlQoSlNDOjppc0Zyb21KU0NvZGUocmVtb3ZlQ29kZVB0clRh
Zzx2b2lkKj4oX19idWlsdGluX3JldHVybl9hZGRyZXNzKDApKSkpOyBcCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuY3BwCShyZXZpc2lvbiAyNzEyNDEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDA4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02Myw3ICs2Myw3IEBAIFNlY29u
ZHMgdG90YWxGVExCM0NvbXBpbGVUaW1lOwogdm9pZCBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJl
c3MoUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzLCBGdW5jdGlvblB0cjxDRnVuY3Rpb25Q
dHJUYWc+IG5ld0NhbGxlZUZ1bmN0aW9uKQogewogICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNo
Q2FsbCgKLSAgICAgICAgQ29kZUxvY2F0aW9uQ2FsbDxOb1B0clRhZz4oTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyPE5vUHRyVGFnPihyZXR1cm5BZGRyZXNzKSksCisgICAgICAgIENvZGVMb2NhdGlvbkNh
bGw8UmV0dXJuQWRkcmVzc1B0clRhZz4oTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPFJldHVybkFkZHJl
c3NQdHJUYWc+KHJldHVybkFkZHJlc3MpKSwKICAgICAgICAgbmV3Q2FsbGVlRnVuY3Rpb24ucmV0
YWdnZWQ8T3BlcmF0aW9uUHRyVGFnPigpKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkocmV2aXNpb24gMjcxMjQxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOS0yMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMCBQYXRyaWNr
IEdhbnN0ZXJlciA8cGFyb2dhQHBhcm9nYS5jb20+CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0xMTg3
LDEwICsxMTg3LDEwIEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUhhc0luZGV4ZWRQcm9wZXIK
IAogICAgIGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUgPSBGSU5BTElaRV9DT0RFX0ZPUl9TVFVCKAog
ICAgICAgICBtX2NvZGVCbG9jaywgcGF0Y2hCdWZmZXIsIEpJVFN0dWJSb3V0aW5lUHRyVGFnLAot
ICAgICAgICAiQmFzZWxpbmUgaGFzX2luZGV4ZWRfcHJvcGVydHkgc3R1YiBmb3IgJXMsIHJldHVy
biBwb2ludCAlcCIsIHRvQ1N0cmluZygqbV9jb2RlQmxvY2spLmRhdGEoKSwgcmV0dXJuQWRkcmVz
cy52YWx1ZSgpKTsKKyAgICAgICAgIkJhc2VsaW5lIGhhc19pbmRleGVkX3Byb3BlcnR5IHN0dWIg
Zm9yICVzLCByZXR1cm4gcG9pbnQgJXAiLCB0b0NTdHJpbmcoKm1fY29kZUJsb2NrKS5kYXRhKCks
IHJldHVybkFkZHJlc3MudW50YWdnZWRWYWx1ZSgpKTsKICAgICAKICAgICBNYWNyb0Fzc2VtYmxl
cjo6cmVwYXRjaEp1bXAoYnlWYWxJbmZvLT5iYWRUeXBlSnVtcCwgQ29kZUxvY2F0aW9uTGFiZWw8
SklUU3R1YlJvdXRpbmVQdHJUYWc+KGJ5VmFsSW5mby0+c3R1YlJvdXRpbmUtPmNvZGUoKS5jb2Rl
KCkpKTsKLSAgICBNYWNyb0Fzc2VtYmxlcjo6cmVwYXRjaENhbGwoQ29kZUxvY2F0aW9uQ2FsbDxO
b1B0clRhZz4oTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPE5vUHRyVGFnPihyZXR1cm5BZGRyZXNzKSks
IEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ob3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5
R2VuZXJpYykpOworICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoQ2FsbChDb2RlTG9jYXRpb25D
YWxsPFJldHVybkFkZHJlc3NQdHJUYWc+KE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxSZXR1cm5BZGRy
ZXNzUHRyVGFnPihyZXR1cm5BZGRyZXNzKSksIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4o
b3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5R2VuZXJpYykpOwogfQogCiB2b2lkIEpJVDo6ZW1p
dF9vcF9oYXNfZW51bWVyYWJsZV9pbmRleGVkX3Byb3BlcnR5KGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bj
b2Rlcy5jcHAJKHJldmlzaW9uIDI3MTI0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3Bjb2Rlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDA5LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDA5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICogQ29weXJpZ2h0IChDKSAyMDEwIFBhdHJpY2sgR2Fuc3RlcmVyIDxwYXJvZ2FAcGFyb2dhLmNv
bT4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTE0MjgsMTAgKzE0MjgsMTAgQEAgdm9pZCBKSVQ6OnBy
aXZhdGVDb21waWxlSGFzSW5kZXhlZFByb3BlcgogCiAgICAgYnlWYWxJbmZvLT5zdHViUm91dGlu
ZSA9IEZJTkFMSVpFX0NPREVfRk9SX1NUVUIoCiAgICAgICAgIG1fY29kZUJsb2NrLCBwYXRjaEJ1
ZmZlciwgSklUU3R1YlJvdXRpbmVQdHJUYWcsCi0gICAgICAgICJCYXNlbGluZSBoYXNfaW5kZXhl
ZF9wcm9wZXJ0eSBzdHViIGZvciAlcywgcmV0dXJuIHBvaW50ICVwIiwgdG9DU3RyaW5nKCptX2Nv
ZGVCbG9jaykuZGF0YSgpLCByZXR1cm5BZGRyZXNzLnZhbHVlKCkpOworICAgICAgICAiQmFzZWxp
bmUgaGFzX2luZGV4ZWRfcHJvcGVydHkgc3R1YiBmb3IgJXMsIHJldHVybiBwb2ludCAlcCIsIHRv
Q1N0cmluZygqbV9jb2RlQmxvY2spLmRhdGEoKSwgcmV0dXJuQWRkcmVzcy51bnRhZ2dlZFZhbHVl
KCkpOwogICAgIAogICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChieVZhbEluZm8tPmJh
ZFR5cGVKdW1wLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlWYWxJ
bmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSkpOwotICAgIE1hY3JvQXNzZW1ibGVyOjpy
ZXBhdGNoQ2FsbChDb2RlTG9jYXRpb25DYWxsPE5vUHRyVGFnPihNYWNyb0Fzc2VtYmxlckNvZGVQ
dHI8Tm9QdHJUYWc+KHJldHVybkFkZHJlc3MpKSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFn
PihvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlHZW5lcmljKSk7CisgICAgTWFjcm9Bc3NlbWJs
ZXI6OnJlcGF0Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGw8UmV0dXJuQWRkcmVzc1B0clRhZz4oTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyPFJldHVybkFkZHJlc3NQdHJUYWc+KHJldHVybkFkZHJlc3MpKSwg
RnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRyVGFnPihvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlH
ZW5lcmljKSk7CiB9CiAKIHZvaWQgSklUOjplbWl0X29wX2hhc19lbnVtZXJhYmxlX2luZGV4ZWRf
cHJvcGVydHkoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMjcx
MjQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTg2LDcgKzg2LDkgQEAgZXh0ZXJuICJDIiB2b2lkICogX1JldHVybkFk
ZHJlc3Modm9pZCk7CiAKICNkZWZpbmUgT1VSX1JFVFVSTl9BRERSRVNTIF9SZXR1cm5BZGRyZXNz
KCkKICNlbHNlCi0jZGVmaW5lIE9VUl9SRVRVUk5fQUREUkVTUyBfX2J1aWx0aW5fcmV0dXJuX2Fk
ZHJlc3MoMCkKKy8vIEZJWE1FIChzZWUgcmRhcjovLzcyODk3MjkxKTogV29yayBhcm91bmQgYSBD
bGFuZyBidWcgd2hlcmUgX19idWlsdGluX3JldHVybl9hZGRyZXNzKCkKKy8vIHNvbWV0aW1lcyBn
aXZlcyB1cyBhIHNpZ25lZCBwb2ludGVyLCBhbmQgc29tZXRpbWVzIGRvZXMgbm90LgorI2RlZmlu
ZSBPVVJfUkVUVVJOX0FERFJFU1MgcmVtb3ZlQ29kZVB0clRhZyhfX2J1aWx0aW5fcmV0dXJuX2Fk
ZHJlc3MoMCkpCiAjZW5kaWYKIAogI2lmIEVOQUJMRShPUENPREVfU0FNUExJTkcpCkBAIC0yOTQ3
LDYgKzI5NDksOSBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uRXhjZXB0CiAg
ICAgVU5VU0VEX1BBUkFNKHNjb3BlKTsKICNpZiBDT01QSUxFUihHQ0NfQ09NUEFUSUJMRSkKICAg
ICB2b2lkKiByZXR1cm5QQyA9IF9fYnVpbHRpbl9yZXR1cm5fYWRkcmVzcygwKTsKKyAgICAvLyBG
SVhNRSAoc2VlIHJkYXI6Ly83Mjg5NzI5MSk6IFdvcmsgYXJvdW5kIGEgQ2xhbmcgYnVnIHdoZXJl
IF9fYnVpbHRpbl9yZXR1cm5fYWRkcmVzcygpCisgICAgLy8gc29tZXRpbWVzIGdpdmVzIHVzIGEg
c2lnbmVkIHBvaW50ZXIsIGFuZCBzb21ldGltZXMgZG9lcyBub3QuCisgICAgcmV0dXJuUEMgPSBy
ZW1vdmVDb2RlUHRyVGFnKHJldHVyblBDKTsKICAgICBkb0V4Y2VwdGlvbkZ1enppbmcoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIkpJVE9wZXJhdGlvbnMiLCByZXR1cm5QQyk7CiAjZW5kaWYgLy8gQ09N
UElMRVIoR0NDX0NPTVBBVElCTEUpCiB9CkBAIC0yOTYwLDYgKzI5NjUsOSBAQCBKU0NfREVGSU5F
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uRXhjZXB0CiAgICAgVU5VU0VEX1BBUkFNKHNjb3BlKTsK
ICNpZiBDT01QSUxFUihHQ0NfQ09NUEFUSUJMRSkKICAgICB2b2lkKiByZXR1cm5QQyA9IF9fYnVp
bHRpbl9yZXR1cm5fYWRkcmVzcygwKTsKKyAgICAvLyBGSVhNRSAoc2VlIHJkYXI6Ly83Mjg5NzI5
MSk6IFdvcmsgYXJvdW5kIGEgQ2xhbmcgYnVnIHdoZXJlIF9fYnVpbHRpbl9yZXR1cm5fYWRkcmVz
cygpCisgICAgLy8gc29tZXRpbWVzIGdpdmVzIHVzIGEgc2lnbmVkIHBvaW50ZXIsIGFuZCBzb21l
dGltZXMgZG9lcyBub3QuCisgICAgcmV0dXJuUEMgPSByZW1vdmVDb2RlUHRyVGFnKHJldHVyblBD
KTsKICAgICBkb0V4Y2VwdGlvbkZ1enppbmcoY2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KHZtKSwgc2NvcGUsICJKSVRPcGVyYXRpb25zIiwgcmV0dXJuUEMpOwogI2VuZGlmIC8vIENPTVBJ
TEVSKEdDQ19DT01QQVRJQkxFKQogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRQcm9wZXJ0eUFjY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHJldmlzaW9uIDI3MTI0MSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMTUxMywxNSArMTUxMywxNSBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQdXRCeVZhbChj
b25zdCBDCiAgICAgaWYgKCFpc0RpcmVjdCkgewogICAgICAgICBieVZhbEluZm8tPnN0dWJSb3V0
aW5lID0gRklOQUxJWkVfQ09ERV9GT1JfU1RVQigKICAgICAgICAgICAgIG1fY29kZUJsb2NrLCBw
YXRjaEJ1ZmZlciwgSklUU3R1YlJvdXRpbmVQdHJUYWcsCi0gICAgICAgICAgICAiQmFzZWxpbmUg
cHV0X2J5X3ZhbCBzdHViIGZvciAlcywgcmV0dXJuIHBvaW50ICVwIiwgdG9DU3RyaW5nKCptX2Nv
ZGVCbG9jaykuZGF0YSgpLCByZXR1cm5BZGRyZXNzLnZhbHVlKCkpOworICAgICAgICAgICAgIkJh
c2VsaW5lIHB1dF9ieV92YWwgc3R1YiBmb3IgJXMsIHJldHVybiBwb2ludCAlcCIsIHRvQ1N0cmlu
ZygqbV9jb2RlQmxvY2spLmRhdGEoKSwgcmV0dXJuQWRkcmVzcy51bnRhZ2dlZFZhbHVlKCkpOwog
ICAgICAgICAKICAgICB9IGVsc2UgewogICAgICAgICBieVZhbEluZm8tPnN0dWJSb3V0aW5lID0g
RklOQUxJWkVfQ09ERV9GT1JfU1RVQigKICAgICAgICAgICAgIG1fY29kZUJsb2NrLCBwYXRjaEJ1
ZmZlciwgSklUU3R1YlJvdXRpbmVQdHJUYWcsCi0gICAgICAgICAgICAiQmFzZWxpbmUgcHV0X2J5
X3ZhbF9kaXJlY3Qgc3R1YiBmb3IgJXMsIHJldHVybiBwb2ludCAlcCIsIHRvQ1N0cmluZygqbV9j
b2RlQmxvY2spLmRhdGEoKSwgcmV0dXJuQWRkcmVzcy52YWx1ZSgpKTsKKyAgICAgICAgICAgICJC
YXNlbGluZSBwdXRfYnlfdmFsX2RpcmVjdCBzdHViIGZvciAlcywgcmV0dXJuIHBvaW50ICVwIiwg
dG9DU3RyaW5nKCptX2NvZGVCbG9jaykuZGF0YSgpLCByZXR1cm5BZGRyZXNzLnVudGFnZ2VkVmFs
dWUoKSk7CiAgICAgfQogICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoSnVtcChieVZhbEluZm8t
PmJhZFR5cGVKdW1wLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRhZz4oYnlW
YWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSkpOwotICAgIE1hY3JvQXNzZW1ibGVy
OjpyZXBhdGNoQ2FsbChDb2RlTG9jYXRpb25DYWxsPE5vUHRyVGFnPihNYWNyb0Fzc2VtYmxlckNv
ZGVQdHI8Tm9QdHJUYWc+KHJldHVybkFkZHJlc3MpKSwgRnVuY3Rpb25QdHI8T3BlcmF0aW9uUHRy
VGFnPihpc0RpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyA6IG9wZXJhdGlv
blB1dEJ5VmFsR2VuZXJpYykpOworICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoQ2FsbChDb2Rl
TG9jYXRpb25DYWxsPFJldHVybkFkZHJlc3NQdHJUYWc+KE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxS
ZXR1cm5BZGRyZXNzUHRyVGFnPihyZXR1cm5BZGRyZXNzKSksIEZ1bmN0aW9uUHRyPE9wZXJhdGlv
blB0clRhZz4oaXNEaXJlY3QgPyBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdlbmVyaWMgOiBvcGVy
YXRpb25QdXRCeVZhbEdlbmVyaWMpKTsKIH0KIC8vIFRoaXMgZnVuY3Rpb24gaXMgb25seSBjb25z
dW1lZCBmcm9tIGFub3RoZXIgdHJhbnNsYXRpb24gdW5pdCAoSklUT3BlcmF0aW9ucy5jcHApLAog
Ly8gc28gd2UgbGlzdCBvZmYgdGhlIHR3byBleHBlY3RlZCBzcGVjaWFsaXphdGlvbnMgaW4gYWR2
YW5jZS4KQEAgLTE1NTcsMTEgKzE1NTcsMTEgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlUHV0
UHJpdmF0ZU5hbWVXaQogCiAgICAgYnlWYWxJbmZvLT5zdHViUm91dGluZSA9IEZJTkFMSVpFX0NP
REVfRk9SX1NUVUIoCiAgICAgICAgIG1fY29kZUJsb2NrLCBwYXRjaEJ1ZmZlciwgSklUU3R1YlJv
dXRpbmVQdHJUYWcsCi0gICAgICAgICJCYXNlbGluZSBwdXRfcHJpdmF0ZV9uYW1lIHdpdGggY2Fj
aGVkIHByb3BlcnR5IG5hbWUgJyVzJyBzdHViIGZvciAlcywgcmV0dXJuIHBvaW50ICVwIiwgcHJv
cGVydHlOYW1lLnVpZCgpLT51dGY4KCkuZGF0YSgpLCB0b0NTdHJpbmcoKm1fY29kZUJsb2NrKS5k
YXRhKCksIHJldHVybkFkZHJlc3MudmFsdWUoKSk7CisgICAgICAgICJCYXNlbGluZSBwdXRfcHJp
dmF0ZV9uYW1lIHdpdGggY2FjaGVkIHByb3BlcnR5IG5hbWUgJyVzJyBzdHViIGZvciAlcywgcmV0
dXJuIHBvaW50ICVwIiwgcHJvcGVydHlOYW1lLnVpZCgpLT51dGY4KCkuZGF0YSgpLCB0b0NTdHJp
bmcoKm1fY29kZUJsb2NrKS5kYXRhKCksIHJldHVybkFkZHJlc3MudW50YWdnZWRWYWx1ZSgpKTsK
ICAgICBieVZhbEluZm8tPnN0dWJJbmZvID0gZ2VuLnN0dWJJbmZvKCk7CiAKICAgICBNYWNyb0Fz
c2VtYmxlcjo6cmVwYXRjaEp1bXAoYnlWYWxJbmZvLT5ub3RJbmRleEp1bXAsIENvZGVMb2NhdGlv
bkxhYmVsPEpJVFN0dWJSb3V0aW5lUHRyVGFnPihieVZhbEluZm8tPnN0dWJSb3V0aW5lLT5jb2Rl
KCkuY29kZSgpKSk7Ci0gICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hDYWxsKENvZGVMb2NhdGlv
bkNhbGw8Tm9QdHJUYWc+KE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxOb1B0clRhZz4ocmV0dXJuQWRk
cmVzcykpLCBGdW5jdGlvblB0cjxPcGVyYXRpb25QdHJUYWc+KG9wZXJhdGlvblB1dFByaXZhdGVO
YW1lR2VuZXJpYykpOworICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoQ2FsbChDb2RlTG9jYXRp
b25DYWxsPFJldHVybkFkZHJlc3NQdHJUYWc+KE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxSZXR1cm5B
ZGRyZXNzUHRyVGFnPihyZXR1cm5BZGRyZXNzKSksIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRh
Zz4ob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVHZW5lcmljKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIE9wPgpAQCAtMTU5NSwxMSArMTU5NSwxMSBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVQ
dXRCeVZhbFdpdGhDYWNoCiAKICAgICBieVZhbEluZm8tPnN0dWJSb3V0aW5lID0gRklOQUxJWkVf
Q09ERV9GT1JfU1RVQigKICAgICAgICAgbV9jb2RlQmxvY2ssIHBhdGNoQnVmZmVyLCBKSVRTdHVi
Um91dGluZVB0clRhZywKLSAgICAgICAgIkJhc2VsaW5lIHB1dF9ieV92YWwlcyB3aXRoIGNhY2hl
ZCBwcm9wZXJ0eSBuYW1lICclcycgc3R1YiBmb3IgJXMsIHJldHVybiBwb2ludCAlcCIsIChwdXRL
aW5kID09IFB1dEtpbmQ6OkRpcmVjdCkgPyAiX2RpcmVjdCIgOiAiIiwgcHJvcGVydHlOYW1lLnVp
ZCgpLT51dGY4KCkuZGF0YSgpLCB0b0NTdHJpbmcoKm1fY29kZUJsb2NrKS5kYXRhKCksIHJldHVy
bkFkZHJlc3MudmFsdWUoKSk7CisgICAgICAgICJCYXNlbGluZSBwdXRfYnlfdmFsJXMgd2l0aCBj
YWNoZWQgcHJvcGVydHkgbmFtZSAnJXMnIHN0dWIgZm9yICVzLCByZXR1cm4gcG9pbnQgJXAiLCAo
cHV0S2luZCA9PSBQdXRLaW5kOjpEaXJlY3QpID8gIl9kaXJlY3QiIDogIiIsIHByb3BlcnR5TmFt
ZS51aWQoKS0+dXRmOCgpLmRhdGEoKSwgdG9DU3RyaW5nKCptX2NvZGVCbG9jaykuZGF0YSgpLCBy
ZXR1cm5BZGRyZXNzLnVudGFnZ2VkVmFsdWUoKSk7CiAgICAgYnlWYWxJbmZvLT5zdHViSW5mbyA9
IGdlbi5zdHViSW5mbygpOwogCiAgICAgTWFjcm9Bc3NlbWJsZXI6OnJlcGF0Y2hKdW1wKGJ5VmFs
SW5mby0+bm90SW5kZXhKdW1wLCBDb2RlTG9jYXRpb25MYWJlbDxKSVRTdHViUm91dGluZVB0clRh
Zz4oYnlWYWxJbmZvLT5zdHViUm91dGluZS0+Y29kZSgpLmNvZGUoKSkpOwotICAgIE1hY3JvQXNz
ZW1ibGVyOjpyZXBhdGNoQ2FsbChDb2RlTG9jYXRpb25DYWxsPE5vUHRyVGFnPihNYWNyb0Fzc2Vt
YmxlckNvZGVQdHI8Tm9QdHJUYWc+KHJldHVybkFkZHJlc3MpKSwgRnVuY3Rpb25QdHI8T3BlcmF0
aW9uUHRyVGFnPihwdXRLaW5kID09IFB1dEtpbmQ6OkRpcmVjdCA/IG9wZXJhdGlvbkRpcmVjdFB1
dEJ5VmFsR2VuZXJpYyA6IG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYykpOworICAgIE1hY3JvQXNz
ZW1ibGVyOjpyZXBhdGNoQ2FsbChDb2RlTG9jYXRpb25DYWxsPFJldHVybkFkZHJlc3NQdHJUYWc+
KE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxSZXR1cm5BZGRyZXNzUHRyVGFnPihyZXR1cm5BZGRyZXNz
KSksIEZ1bmN0aW9uUHRyPE9wZXJhdGlvblB0clRhZz4ocHV0S2luZCA9PSBQdXRLaW5kOjpEaXJl
Y3QgPyBvcGVyYXRpb25EaXJlY3RQdXRCeVZhbEdlbmVyaWMgOiBvcGVyYXRpb25QdXRCeVZhbEdl
bmVyaWMpKTsKIH0KIC8vIFRoaXMgZnVuY3Rpb24gaXMgb25seSBjb25zdW1lZCBmcm9tIGFub3Ro
ZXIgdHJhbnNsYXRpb24gdW5pdCAoSklUT3BlcmF0aW9ucy5jcHApLAogLy8gc28gd2UgbGlzdCBv
ZmYgdGhlIHR3byBleHBlY3RlZCBzcGVjaWFsaXphdGlvbnMgaW4gYWR2YW5jZS4KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1B0clRhZy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ1B0clRhZy5oCShyZXZpc2lvbiAyNzEyNDEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NQdHJUYWcuaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTU5LDYgKzU5LDcgQEAgdXNpbmcgUHRyVGFnID0gV1RGOjpQdHJUYWc7CiAgICAg
dihKSVRQcm9iZUV4ZWN1dG9yUHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpOYXRpdmUsIFB0clRh
Z0NhbGxlclR5cGU6Ok5hdGl2ZSkgXAogICAgIHYoSklUUHJvYmVQQ1B0clRhZywgUHRyVGFnQ2Fs
bGVlVHlwZTo6TmF0aXZlLCBQdHJUYWdDYWxsZXJUeXBlOjpOYXRpdmUpIFwKICAgICB2KEpJVFBy
b2JlU3RhY2tJbml0aWFsaXphdGlvbkZ1bmN0aW9uUHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpO
YXRpdmUsIFB0clRhZ0NhbGxlclR5cGU6Ok5hdGl2ZSkgXAorICAgIHYoUmV0dXJuQWRkcmVzc1B0
clRhZywgUHRyVGFnQ2FsbGVlVHlwZTo6TmF0aXZlLCBQdHJUYWdDYWxsZXJUeXBlOjpOYXRpdmUp
IFwKICAgICAvKiBDYWxsZWU6SklUIENhbGxlcjpOYXRpdmUgKi8gXAogICAgIHYoTmF0aXZlVG9K
SVRHYXRlUHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpKSVQsIFB0clRhZ0NhbGxlclR5cGU6Ok5h
dGl2ZSkgXAogICAgIHYoWWFyckVudHJ5UHRyVGFnLCBQdHJUYWdDYWxsZWVUeXBlOjpKSVQsIFB0
clRhZ0NhbGxlclR5cGU6Ok5hdGl2ZSkgXApJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3MTI0MSkK
KysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkg
QEAKKzIwMjEtMDEtMDcgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAg
IFdvcmsgYXJvdW5kIENsYW5nIGJ1ZyBpbiBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3MoKS4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDQzMgorICAg
ICAgICByZGFyOi8vNzE2NDg0NjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFBsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NTaGltLm1tOgor
ICAgICAgICAoV2ViS2l0OjpzaGltQ0ZTdHJpbmdDb21wYXJlKToKKyAgICAgICAgLSBXZSBnbyBk
aXJlY3QgdG8gcHRyYXV0aC5oIGluc3RlYWQgb2YgdXNpbmcgdGhlIFdURiBQdHJUYWcgYWJzdHJh
Y3Rpb24gYmVjYXVzZQorICAgICAgICAgIHRoaXMgZmlsZSBhcHBlYXJzIHRvIGJlIGdvaW5nIG91
dCBvZiBpdHMgd2F5IHRvIGF2b2lkIGltcG9ydGluZyBjb25maWcuaC4KKyAgICAgICAgICBCZWNh
dXNlIG9mIHRoaXMsIGltcG9ydGluZyBQdHJUYWcuaCByZXN1bHRzIGluIGEgbG90IG9mIGJ1aWxk
IGVycm9yIGNvbXBsaWNhdGlvbnMuCisgICAgICAgICAgUmF0aGVyIHRoYW4ganVtcCB0aHJ1IG1h
bnkgaG9vcHMgdG8gbWFrZSBpbXBvcnRpbmcgUHRyVGFnLmggd29yayBhbmQgYmVjYXVzZSBhbGwK
KyAgICAgICAgICB3ZSByZWFsbHkgd2FudCBpcyBvbmx5IHRvIHVzZSBwdHJhdXRoX3N0cmlwKCks
IGltcG9ydGluZyBwdHJhdXRoLmggaXMgc2ltcGxlci4KKwogMjAyMS0wMS0wNyAgU2lodWkgTGl1
ICA8c2lodWlfbGl1QGFwcGUuY29tPgogCiAgICAgICAgIEFTU0VSVElPTiBGQUlMRUQ6ICFtX21l
c3NhZ2VSZWNlaXZlck1hcENvdW50IHVuZGVyIFdlYktpdDo6U3BlZWNoUmVjb2duaXRpb25TZXJ2
ZXI6On5TcGVlY2hSZWNvZ25pdGlvblNlcnZlcigpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1BsdWdp
blByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NTaGltLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc1NoaW0ubW0JKHJldmlzaW9uIDI3
MTI0MSkKKysrIFNvdXJjZS9XZWJLaXQvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc1No
aW0ubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtNDAsNiArNDAsMTAgQEAKICNpbXBvcnQgPHd0Zi9Db21waWxl
ci5oPgogI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oPgogCisjaWYgQ1BVKEFS
TTY0RSkKKyNpbXBvcnQgPHB0cmF1dGguaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogZXh0ZXJuICJDIiB2b2lkIFdlYktpdFBsdWdpblByb2Nlc3NTaGltSW5pdGlhbGl6ZShjb25z
dCBQbHVnaW5Qcm9jZXNzU2hpbUNhbGxiYWNrcyYgY2FsbGJhY2tzKTsKQEAgLTIzOSw3ICsyNDMs
MTMgQEAgc3RhdGljIENGQ29tcGFyaXNvblJlc3VsdCBzaGltQ0ZTdHJpbmdDbwogewogICAgIGlm
IChwbHVnaW5Qcm9jZXNzU2hpbUNhbGxiYWNrcy5zdHJpbmdDb21wYXJlKSB7CiAgICAgICAgIENG
Q29tcGFyaXNvblJlc3VsdCByZXN1bHQ7Ci0gICAgICAgIGlmIChwbHVnaW5Qcm9jZXNzU2hpbUNh
bGxiYWNrcy5zdHJpbmdDb21wYXJlKGEsIGIsIG9wdGlvbnMsIF9fYnVpbHRpbl9yZXR1cm5fYWRk
cmVzcygwKSwgcmVzdWx0KSkKKyAgICAgICAgLy8gRklYTUUgKHNlZSByZGFyOi8vNzI4OTcyOTEp
OiBXb3JrIGFyb3VuZCBhIENsYW5nIGJ1ZyB3aGVyZSBfX2J1aWx0aW5fcmV0dXJuX2FkZHJlc3Mo
KQorICAgICAgICAvLyBzb21ldGltZXMgZ2l2ZXMgdXMgYSBzaWduZWQgcG9pbnRlciwgYW5kIHNv
bWV0aW1lcyBkb2VzIG5vdC4KKyAgICAgICAgdm9pZCogcmV0dXJuQWRkcmVzcyA9IF9fYnVpbHRp
bl9yZXR1cm5fYWRkcmVzcygwKTsKKyNpZiBDUFUoQVJNNjRFKQorICAgICAgICByZXR1cm5BZGRy
ZXNzID0gcHRyYXV0aF9zdHJpcChyZXR1cm5BZGRyZXNzLCBwdHJhdXRoX2tleV9wcm9jZXNzX2Rl
cGVuZGVudF9jb2RlKTsKKyNlbmRpZgorICAgICAgICBpZiAocGx1Z2luUHJvY2Vzc1NoaW1DYWxs
YmFja3Muc3RyaW5nQ29tcGFyZShhLCBiLCBvcHRpb25zLCByZXR1cm5BZGRyZXNzLCByZXN1bHQp
KQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>