<?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>226599</bug_id>
          
          <creation_ts>2021-06-03 14:41:04 -0700</creation_ts>
          <short_desc>[FTL] Have a more generic fast path for compareStrictEq on Untyped/Untyped in FTLLowerDFGToB3</short_desc>
          <delta_ts>2021-06-10 14:42:26 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>ASSIGNED</bug_status>
          <resolution></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="Robin Morisset">rmorisset</reporter>
          <assigned_to name="Robin Morisset">rmorisset</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1766531</commentid>
    <comment_count>0</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-06-03 14:41:04 -0700</bug_when>
    <thetext>There is already such a path in the DFG, so currently the FTL is producing worse code than the DFG in this instance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766546</commentid>
    <comment_count>1</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-06-03 14:59:37 -0700</bug_when>
    <thetext>Technically there already is a fast path, but only for Int32/Int32.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766550</commentid>
    <comment_count>2</comment_count>
      <attachid>430505</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-06-03 15:05:27 -0700</bug_when>
    <thetext>Created attachment 430505
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766577</commentid>
    <comment_count>3</comment_count>
      <attachid>430505</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2021-06-03 16:17:31 -0700</bug_when>
    <thetext>Comment on attachment 430505
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:23
&gt; +        if (isCell(left) &amp;&amp; isCell(right))

Isn&apos;t the thing that requires the slow path that both left and right are either strings or bigints?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1766582</commentid>
    <comment_count>4</comment_count>
      <attachid>430505</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2021-06-03 16:34:16 -0700</bug_when>
    <thetext>Comment on attachment 430505
Patch

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

&gt;&gt; Source/JavaScriptCore/ChangeLog:23
&gt;&gt; +        if (isCell(left) &amp;&amp; isCell(right))
&gt; 
&gt; Isn&apos;t the thing that requires the slow path that both left and right are either strings or bigints?

Yes, but checking whether a Cell is either a HeapBigInt or a String would be quite a bit of code, so I am approximating here (going to the slow path even for things like Object == Object).
Note that I use the more precise condition when it comes to pruning that check with the abstract interpreter (so if we can prove it is Object == Object, we&apos;ll generate the ideal code without all of these checks).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768746</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-06-10 14:42:26 -0700</bug_when>
    <thetext>&lt;rdar://problem/79161356&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430505</attachid>
            <date>2021-06-03 15:05:27 -0700</date>
            <delta_ts>2021-06-03 15:47:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch226599</filename>
            <type>text/plain</type>
            <size>19384</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
MzQ5YTg1MmYzMzQxLi5jNTUyMDQ5MjVkNzQgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMDYtMDMgIFJv
YmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBbRlRMXSBIYXZl
IGEgbW9yZSBnZW5lcmljIGZhc3QgcGF0aCBmb3IgY29tcGFyZVN0cmljdEVxIG9uIFVudHlwZWQv
VW50eXBlZCBpbiBGVExMb3dlckRGR1RvQjMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyNjU5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoZSBtaWNyb2JlbmNobWFyayBwb2x5LXN0cmljdGVxLmpzIHdh
cyBuZXZlciByZWFjaGluZyB0aGUgRlRMLCBhcyBhbGwgb2YgdGhlIGNvZGUgd2FzIGluIHRoZSBn
bG9iYWwgc2NvcGUgYW5kIHdlJ3JlIHZlcnkgY29uc2VydmF0aXZlIGluIGNvbXBpbGluZyBjb2Rl
IGF0IHRoYXQgc2NvcGUuCisgICAgICAgIEkganVzdCBob2lzdGVkIGl0IGludG8gaXRzIG93biBm
dW5jdGlvbi4KKworICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9wb2x5LXN0cmljdGVxLmpzOgor
ICAgICAgICAoZm9vKToKKyAgICAgICAgKHRlc3QpOgorCiAyMDIxLTA1LTI4ICBSb2JpbiBNb3Jp
c3NldCAgPHJtb3Jpc3NldEBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IExpa2VseURlbnNlVW5z
aWduZWRJbnRlZ2VyU2V0OjpjbGVhcigpCmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2ht
YXJrcy9wb2x5LXN0cmljdGVxLmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvcG9seS1zdHJp
Y3RlcS5qcwppbmRleCA5ZDA1MzA2ZTUxNTcuLjRiNjQzNThkOTg2ZCAxMDA2NDQKLS0tIGEvSlNU
ZXN0cy9taWNyb2JlbmNobWFya3MvcG9seS1zdHJpY3RlcS5qcworKysgYi9KU1Rlc3RzL21pY3Jv
YmVuY2htYXJrcy9wb2x5LXN0cmljdGVxLmpzCkBAIC0xNCwxNiArMTQsMjYgQEAgZm9yICh2YXIg
aSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKICAgICBhcnJheS5wdXNoKG8pOwogfQogCi12YXIgbnVt
U3RyaWN0RXF1YWwgPSAwOwotZm9yICh2YXIgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7ICsraSkg
ewotICAgIGZvciAodmFyIGogPSBpICsgMTsgaiA8IGFycmF5Lmxlbmd0aDsgKytqKSB7Ci0gICAg
ICAgIGlmIChhcnJheVtpXSA9PT0gYXJyYXlbal0pCi0gICAgICAgICAgICBudW1TdHJpY3RFcXVh
bCsrOwotICAgIH0KLX0KIAotaWYgKG51bVN0cmljdEVxdWFsICE9IDI0OTUwMCkKLSAgICB0aHJv
dyAiSW5jb3JyZWN0IHJlc3VsdDogIiArIG51bVN0cmljdEVxdWFsOworZnVuY3Rpb24gZm9vKHgs
IHkpCit7CisgICAgaWYgKHggPT09IHkpCisgICAgICAgIHJldHVybiAxOworICAgIHJldHVybiAw
OworfQogCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICB2YXIgbnVtU3RyaWN0RXF1YWwgPSAwOwor
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgZm9y
ICh2YXIgaiA9IGkgKyAxOyBqIDwgYXJyYXkubGVuZ3RoOyArK2opIHsKKyAgICAgICAgICAgIG51
bVN0cmljdEVxdWFsICs9IGZvbyhhcnJheVtpXSwgYXJyYXlbal0pOworICAgICAgICB9CisgICAg
fQogCisgICAgaWYgKG51bVN0cmljdEVxdWFsICE9IDI0OTUwMCkKKyAgICAgICAgdGhyb3cgIklu
Y29ycmVjdCByZXN1bHQ6ICIgKyBudW1TdHJpY3RFcXVhbDsKK30KK25vSW5saW5lKHRlc3QpOwor
dGVzdCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBlYzJmYjRmMWU1ZmMuLmRmOGE2
NzhkMjYxNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTggQEAKKzIwMjEt
MDYtMDMgIFJvYmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFwcGxlLmNvbT4KKworICAgICAgICBb
RlRMXSBIYXZlIGEgbW9yZSBnZW5lcmljIGZhc3QgcGF0aCBmb3IgY29tcGFyZVN0cmljdEVxIG9u
IFVudHlwZWQvVW50eXBlZCBpbiBGVExMb3dlckRGR1RvQjMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjU5OQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJlZm9yZSB0aGlzIHBhdGNoLCB3ZSB3ZXJlIHBy
b2R1Y2luZyBjb2RlIHRoYXQgd2FzIGVmZmVjdGl2ZWx5IHRoZSBmb2xsb3dpbmc6CisgICAgICAg
IGBgYAorICAgICAgICBpZiAoIWlzSW50MzIobGVmdCkpCisgICAgICAgICAgICBnb3RvIHNsb3dQ
YXRoOworICAgICAgICBpZiAoIWlzSW50MzIocmlnaHQpKQorICAgICAgICAgICAgZ290byBzbG93
UGF0aDsKKyAgICAgICAgcmV0dXJuIGxlZnQgPT0gcmlnaHQ7CisgICAgICAgIGBgYAorCisgICAg
ICAgIE5vdyB3ZSBhcmUgcHJvZHVjaW5nIGNvZGUgdGhhdCBpcyBhcHByb3hpbWF0ZWx5IGRvaW5n
IHRoZSBmb2xsb3dpbmc6CisgICAgICAgIGBgYAorICAgICAgICBpZiAoaXNEb3VibGUobGVmdCkg
fHwgaXNEb3VibGUocmlnaHQpKQorICAgICAgICAgICAgZ290byBzbG93UGF0aDsKKyAgICAgICAg
aWYgKGxlZnQgPT0gcmlnaHQpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYg
KGlzQ2VsbChsZWZ0KSAmJiBpc0NlbGwocmlnaHQpKQorICAgICAgICAgICAgZ290byBzbG93UGF0
aDsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBgYGAKKyAgICAgICAgVGhpcyBpcyBj
b3JyZWN0IGJlY2F1c2U6CisgICAgICAgIC0gdGhlIG9ubHkgd2F5IHRoYXQgd2UgY2FuIGhhdmUg
bGVmdCA9PSByaWdodCBhbmQgeWV0IGhhdmUgdG8gcmV0dXJuIGZhbHNlIGlzIHdpdGggTmFOcwor
ICAgICAgICAtIHRoZSBvbmx5IHdheSB0aGF0IHdlIGNhbiBoYXZlIGxlZnQgIT0gcmlnaHQgYW5k
IHlldCBoYXZlIHRvIHJldHVybiB0cnVlIGlzIHdpdGggU3RyaW5nID09PSBTdHJpbmcgb3IgSGVh
cEJpZ0ludCA9PT0gSGVhcEJpZ0ludCwgYm90aCBvZiB3aGljaCBhcmUgQ2VsbHMgKGlnbm9yaW5n
IEJpZ0ludDMyIGhlcmUsIHNlZSB0aGUgY29tbWVudCBpbiB0aGUgZmlsZSBmb3IgZGV0YWlscyBv
ZiBpdHMgaW1wYWN0KSwgb3Igd2l0aCB0d28gTnVtYmVycyBhdCBsZWFzdCBvbmUgb2Ygd2hpY2gg
aXMgYSBEb3VibGUgKGUuZy4gMC4wIChEb3VibGUpID09PSAwIChJbnQzMikpLgorCisgICAgICAg
IFdlIHVzZSB0d28gYml0LXRyaWNrcyB0byBtaW5pbWl6ZSB0aGUgbnVtYmVyIG9mIGJyYW5jaGVz
OgorICAgICAgICAtIFdlIGNhbiBjaGVjayAoaXNEb3VibGUobGVmdCkgfHwgaXNEb3VibGUocmln
aHQpKSB3aXRoIGEgc2luZ2xlIGJyYW5jaCAoaW5zdGVhZCBvZiA0IGZvciBhIG5haXZlIGltcGxl
bWVudGF0aW9uKQorICAgICAgICAtIFdlIGNhbiBjaGVjayAoaXNDZWxsKGxlZnQpICYmIGlzQ2Vs
bChyaWdodCkpIHdpdGggYSBzaW5nbGUgYnJhbmNoIChpbnN0ZWFkIG9mIDIgZm9yIGEgbmFpdmUg
aW1wbGVtZW50YXRpb24pCisgICAgICAgIFBsZWFzZSBzZWUgdGhlIGlubGluZSBjb21tZW50cyBm
b3IgZXhwbGFuYXRpb25zIG9mIGhvdyB0aGVzZSB0cmlja3Mgd29yay4KKyAgICAgICAgU28gd2Ug
bm93IGhhdmUgYSBmYXN0IHBhdGggdGhhdCBjb3ZlcnMgYSBsb3QgbW9yZSBjYXNlcywgd2l0aG91
dCBoYXZpbmcgYSB0b24gb2YgYnJhbmNoZXMuCisgICAgICAgIFRvIGZ1cnRoZXIgbWluaW1pemUg
dGhlIGFtb3VudCBvZiBjb2RlIGdlbmVyYXRlZCwgd2UgYWxzbyB1c2UgdGhlIGFic3RyYWN0IGlu
dGVycHJldGVyIGluZm9ybWF0aW9uIHRvIHBydW5lIGFzIG11Y2ggb2YgdGhlIGNoZWNrcyBhcyBw
b3NzaWJsZS4KKworICAgICAgICBQZXJmb3JtYW5jZSByZXN1bHQ6CisgICAgICAgIHBvbHktc3Ry
aWN0ZXEtbm9pbmxpbmUgICAgICAgNDYuNzk4NCstMC42NDcyICAgICBeICAgICAzMi41MjE5Ky0w
LjQwODYgICAgICAgIF4gZGVmaW5pdGVseSAxLjQzOTB4IGZhc3RlcgorCisgICAgICAgIFRoaXMg
cGF0Y2ggYWxzbyByZW5hbWVkIExvd2VzdE9mSGlnaEJpdHMgaW4gRG91YmxlT2Zmc2V0RW5jb2Rl
IGFzIHRoZSBsYXRlciBpcyBhbHJlYWR5IHVzZWQgaW4gbW9yZSBwbGFjZXMgYW5kIHRoZXkgYXJl
IGRlZmluZWQgaW4gdGhlIGV4YWN0IHNhbWUgd2F5IGluIHRoZSBleGFjdCBzYW1lIHBsYWNlLgor
ICAgICAgICBGaW5hbGx5IEkgYWRkZWQgYSBidW5jaCBvZiBGSVhNRXMgdG8gdGhlIERGRyB2ZXJz
aW9uIG9mIHRoaXMgZmFzdCBwYXRoIG9uIGhvdyB0byBhdm9pZCBnZW5lcmF0aW5nIHRvbyBtdWNo
IGNvZGUgZm9yIGl0LiBJIGludGVuZCB0byBmaXggdGhlbSBpbiBhIHNlcGFyYXRlIHBhdGNoLCB0
byBoYXZlIGEgY2xlYXJlciB2aWV3IG9mIHRoZSBwZXJmb3JtYW5jZSBiZW5lZml0cyBvZiBlYWNo
IGNoYW5nZS4KKworICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaG9sZVN0cmlj
dEVxKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Z2VuZXJpY0pTVmFsdWVO
b25QZWVwaG9sZVN0cmljdEVxKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNvbXBhcmVTdHJp
Y3RFcSk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6
OmNvbXBpbGVPcFN0cmljdEVxKToKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlT3BTdHJpY3RF
cUp1bXApOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAg
ICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcnVudGltZS9K
U0NKU1ZhbHVlLmg6CisKIDIwMjEtMDYtMDIgIFJvYmluIE1vcmlzc2V0ICA8cm1vcmlzc2V0QGFw
cGxlLmNvbT4KIAogICAgICAgICBCM01vdmVDb25zdGFudHMgc2hvdWxkIGZpbHRlciBkaXJlY3Rs
eSBvbiBWYWx1ZXMsIGFuZCBvbmx5IGNyZWF0ZSBWYWx1ZUtleXMgd2hlbiB1c2VmdWwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4
IGVmOGJhMzg2OGU4NS4uNTA0NWFiOTA4YmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTM2NCwxMCArMzY0LDEzIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVTdHJpY3RFcShOb2RlKiBu
b2RlLCBOb2RlKiBicmFuY2hOb2RlCiAgICAgICAgICBpZiAobGVmdCBpcyBDZWxsIHx8IHJpZ2h0
IGlzIENlbGwpCiAgICAgICAgICAgICBnb3RvIHNsb3dQYXRoOwogICAgICAgICAgZ290byBub3RU
YWtlbjsKKyAgICAgICAgIC8vIEZJWE1FOiB1c2UgYSBzZXBhcmF0ZSBzbG93UGF0aCBmb3IgdGhl
IENlbGxDYXNlIHZzIERvdWJsZUNhc2UKICAgICAgICAgICovCiAKICAgICAgICAgSklUQ29tcGls
ZXI6Okp1bXBMaXN0IHNsb3dQYXRoQ2FzZXM7CiAKKyAgICAgICAgLy8gRklYTUU6IGRvbid0IGdl
bmVyYXRlIHRoaXMgYmxvY2sgYXQgYWxsIGlmIHdlIGNhbiBwcm92ZSB0aGF0IG5laXRoZXIgbGVm
dCBub3IgcmlnaHQgYXJlIGRvdWJsZXMKKyAgICAgICAgLy8gRklYTUU6IEkgZG9uJ3QgdGhpbmsg
dGhhdCB0aGlzIGJsb2NrIGlzIHJlcXVpcmVkIGVpdGhlciBpZiB3ZSBjYW4gcHJvdmUgdGhhdCBh
dCBsZWFzdCBvbmUgc2lkZSBpcyBub3QgYSBudW1iZXIKICAgICAgICAgLy8gVGhpcyBmcmFnbWVu
dCBpbXBsZW1lbnRzIChsZWZ0IGlzIERvdWJsZSB8fCByaWdodCBpcyBEb3VibGUpLCB3aXRoIGEg
c2luZ2xlIGJyYW5jaCBpbnN0ZWFkIG9mIHRoZSA0IHRoYXQgd291bGQgYmUgbmFpdmVseSByZXF1
aXJlZCBpZiB3ZSB1c2VkIGJyYW5jaElmSW50MzIvYnJhbmNoSWZOdW1iZXIKICAgICAgICAgLy8g
VGhlIHRyaWNrIGlzIHRoYXQgaWYgYSBKU1ZhbHVlIGlzIGFuIEludDMyLCB0aGVuIGFkZGluZyAx
PDw0OSB0byBpdCB3aWxsIG1ha2UgaXQgb3ZlcmZsb3csIGxlYXZpbmcgYWxsIGhpZ2ggYml0cyBh
dCAwCiAgICAgICAgIC8vIElmIGl0IGlzIG5vdCBhIG51bWJlciBhdCBhbGwsIHRoZW4gMTw8NDkg
d2lsbCBiZSBpdHMgb25seSBoaWdoIGJpdCBzZXQKQEAgLTM3NSwxNCArMzc4LDE3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVTdHJpY3RFcShOb2RlKiBub2Rl
LCBOb2RlKiBicmFuY2hOb2RlCiAgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwog
ICAgICAgICBtX2ppdC5tb3ZlKGFyZzFHUFIsIHJlc3VsdEdQUik7CiAgICAgICAgIG1faml0Lm1v
dmUoYXJnMkdQUiwgc2NyYXRjaC5ncHIoKSk7Ci0gICAgICAgIG1faml0LmFkZDY0KFRydXN0ZWRJ
bW02NChKU1ZhbHVlOjpMb3dlc3RPZkhpZ2hCaXRzKSwgcmVzdWx0R1BSKTsKLSAgICAgICAgbV9q
aXQuYWRkNjQoVHJ1c3RlZEltbTY0KEpTVmFsdWU6Okxvd2VzdE9mSGlnaEJpdHMpLCBzY3JhdGNo
LmdwcigpKTsKKyAgICAgICAgLy8gRklYTUU6IHB1dHRpbmcgdGhlIGNvbnN0YW50IGluIGEgcmVn
aXN0ZXIgbWlnaHQgaGVscCBkZXBlbmRpbmcgb24gaG93IGdyb3NzIHRoZSBtYXRlcmlhbGl6YXRp
b24gb2YgdGhlIGNvbnN0YW50IGlzLgorICAgICAgICBtX2ppdC5hZGQ2NChUcnVzdGVkSW1tNjQo
SlNWYWx1ZTo6RG91YmxlRW5jb2RlT2Zmc2V0KSwgcmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQu
YWRkNjQoVHJ1c3RlZEltbTY0KEpTVmFsdWU6OkRvdWJsZUVuY29kZU9mZnNldCksIHNjcmF0Y2gu
Z3ByKCkpOwogICAgICAgICBtX2ppdC5vcjY0KHNjcmF0Y2guZ3ByKCksIHJlc3VsdEdQUiwgcmVz
dWx0R1BSKTsKLSAgICAgICAgY29uc3RleHByIHVpbnQ2NF90IG5leHRMb3dlc3RPZkhpZ2hCaXRz
ID0gSlNWYWx1ZTo6TG93ZXN0T2ZIaWdoQml0cyA8PCAxOworICAgICAgICAvLyBGSVhNRTogd2Ug
Y2FuIGF2b2lkIG1hdGVyaWFsaXppbmcgdGhhdCBodWdlIGNvbnN0YW50IGJ5IGRvaW5nIGEgc2hp
ZnQtcmlnaHQgYnkgNTAgYW5kIGNvbXBhcmluZyB0byAwIGluc3RlYWQuCisgICAgICAgIGNvbnN0
ZXhwciB1aW50NjRfdCBuZXh0TG93ZXN0T2ZIaWdoQml0cyA9IEpTVmFsdWU6OkRvdWJsZUVuY29k
ZU9mZnNldCA8PCAxOwogICAgICAgICBzbG93UGF0aENhc2VzLmFwcGVuZChtX2ppdC5icmFuY2g2
NChKSVRDb21waWxlcjo6QWJvdmVPckVxdWFsLCByZXN1bHRHUFIsIFRydXN0ZWRJbW02NChuZXh0
TG93ZXN0T2ZIaWdoQml0cykpKTsKIAogICAgICAgICBicmFuY2g2NChKSVRDb21waWxlcjo6RXF1
YWwsIGFyZzFHUFIsIGFyZzJHUFIsIGludmVydCA/IG5vdFRha2VuIDogdGFrZW4pOwotICAgICAg
ICAKKworICAgICAgICAvLyBGSVhNRTogZG9uJ3QgZ2VuZXJhdGUgdGhpcyBibG9jayBpZiB3ZSBj
YW4gcHJvdmUgdGhhdCBuZWl0aGVyIGxlZnQgbm9yIHJpZ2h0IGFyZSBjZWxscyAob3IgdGhhdCBq
dXN0IG9uZSBpcyBpbiB0aGUgY2FzZSB3aXRob3V0IEJpZ0ludDMyKQogICAgICAgICAvLyBJZiB3
ZSBzdXBwb3J0IEJpZ0ludDMyIHdlIG11c3QgZ28gdG8gYSBzbG93IHBhdGggaWYgYXQgbGVhc3Qg
b25lIG9wZXJhbmQgaXMgYSBjZWxsIChmb3IgSGVhcEJpZ0ludCA9PT0gQmlnSW50MzIpCiAgICAg
ICAgIC8vIElmIHdlIGRvbid0IHN1cHBvcnQgQmlnSW50MzIsIHdlIG9ubHkgaGF2ZSB0byBnbyB0
byBhIHNsb3cgcGF0aCBpZiBib3RoIG9wZXJhbmRzIGFyZSBjZWxscyAoZm9yIEhlYXBCaWdJbnQg
PT09IEhlYXBCaWdJbnQgYW5kIFN0cmluZyA9PT0gU3RyaW5nKQogICAgICAgICAvLyBJbnN0ZWFk
IG9mIGRvaW5nIHR3byBicmFuY2hlcywgd2UgY2FuIGRvIGEgc2luZ2xlIG9uZSwgYnkgb2JzZXJ2
aW5nIHRoYXQKQEAgLTQ2OCwxMCArNDc0LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmdlbmVy
aWNKU1ZhbHVlTm9uUGVlcGhvbGVTdHJpY3RFcShOb2RlKiBub2RlLCBib29sIGludmVydCkKICAg
ICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKICAgICBtX2ppdC5tb3ZlKGFyZzFHUFIsIHJl
c3VsdEdQUik7CiAgICAgbV9qaXQubW92ZShhcmcyR1BSLCBzY3JhdGNoLmdwcigpKTsKLSAgICBt
X2ppdC5hZGQ2NChUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6TG93ZXN0T2ZIaWdoQml0cyksIHJlc3Vs
dEdQUik7Ci0gICAgbV9qaXQuYWRkNjQoVHJ1c3RlZEltbTY0KEpTVmFsdWU6Okxvd2VzdE9mSGln
aEJpdHMpLCBzY3JhdGNoLmdwcigpKTsKKyAgICBtX2ppdC5hZGQ2NChUcnVzdGVkSW1tNjQoSlNW
YWx1ZTo6RG91YmxlRW5jb2RlT2Zmc2V0KSwgcmVzdWx0R1BSKTsKKyAgICBtX2ppdC5hZGQ2NChU
cnVzdGVkSW1tNjQoSlNWYWx1ZTo6RG91YmxlRW5jb2RlT2Zmc2V0KSwgc2NyYXRjaC5ncHIoKSk7
CiAgICAgbV9qaXQub3I2NChzY3JhdGNoLmdwcigpLCByZXN1bHRHUFIsIHJlc3VsdEdQUik7Ci0g
ICAgY29uc3RleHByIHVpbnQ2NF90IG5leHRMb3dlc3RPZkhpZ2hCaXRzID0gSlNWYWx1ZTo6TG93
ZXN0T2ZIaWdoQml0cyA8PCAxOworICAgIGNvbnN0ZXhwciB1aW50NjRfdCBuZXh0TG93ZXN0T2ZI
aWdoQml0cyA9IEpTVmFsdWU6OkRvdWJsZUVuY29kZU9mZnNldCA8PCAxOwogICAgIHNsb3dQYXRo
Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaDY0KEpJVENvbXBpbGVyOjpBYm92ZU9yRXF1YWwsIHJl
c3VsdEdQUiwgVHJ1c3RlZEltbTY0KG5leHRMb3dlc3RPZkhpZ2hCaXRzKSkpOwogCiAgICAgbV9q
aXQuY29tcGFyZTY0KEpJVENvbXBpbGVyOjpFcXVhbCwgYXJnMUdQUiwgYXJnMkdQUiwgcmVzdWx0
R1BSKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdU
b0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApp
bmRleCAyM2JlN2U3NzVkM2EuLjVmOGU1MTM4YzI4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtOTQ4NSwxMyArOTQ4NSw5OSBAQCBwcml2
YXRlOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgLy8gRklYTUU6
IHdlIGNhbiBkbyBzb21ldGhpbmcgbXVjaCBzbWFydGVyIGhlcmUsIHNlZSB0aGUgREZHU3BlY3Vs
YXRpdmVKSVQgYXBwcm9hY2ggaW4gZS5nLiBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQ
ZWVwaG9sZVN0cmljdEVxCiAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBtX25v
ZGUtPmlzQmluYXJ5VXNlS2luZChVbnR5cGVkVXNlKSwgbV9ub2RlLT5jaGlsZDEoKS51c2VLaW5k
KCksIG1fbm9kZS0+Y2hpbGQyKCkudXNlS2luZCgpKTsKLSAgICAgICAgZ2VuZXJpY0pTVmFsdWVD
b21wYXJlKAotICAgICAgICAgICAgWyZdIChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KSB7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIG1fb3V0LmVxdWFsKGxlZnQsIHJpZ2h0KTsKLSAgICAgICAg
ICAgIH0sCi0gICAgICAgICAgICBvcGVyYXRpb25Db21wYXJlU3RyaWN0RXEpOworCisgICAgICAg
IEVkZ2UgbGVmdEVkZ2UgPSBtX25vZGUtPmNoaWxkMSgpOworICAgICAgICBFZGdlIHJpZ2h0RWRn
ZSA9IG1fbm9kZS0+Y2hpbGQyKCk7CisgICAgICAgIExWYWx1ZSBsZWZ0ID0gbG93SlNWYWx1ZShs
ZWZ0RWRnZSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgTFZhbHVlIHJpZ2h0
ID0gbG93SlNWYWx1ZShyaWdodEVkZ2UsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlvbik7CisgICAg
ICAgIHNwZWN1bGF0ZShsZWZ0RWRnZSk7CisgICAgICAgIHNwZWN1bGF0ZShyaWdodEVkZ2UpOwor
CisgICAgICAgIC8qIEF0IGEgaGlnaCBsZXZlbCB3ZSBkbyAoaWYgQmlnSW50MzIgYXJlIGVuYWJs
ZWQpOgorICAgICAgICAgICAgSWYgKGxlZnQgaXMgRG91YmxlIHx8IHJpZ2h0IGlzIERvdWJsZSkK
KyAgICAgICAgICAgICAgICBnb3RvIHNsb3dQYXRoOworICAgICAgICAgICAgaWYgKGxlZnQgPT0g
cmlnaHQpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICBpZiAobGVm
dCBpcyBDZWxsIHx8IHJpZ2h0IGlzIENlbGwpCisgICAgICAgICAgICAgICAgZ290byBzbG93UGF0
aDsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgIElmIEJpZ0ludDMyIGFyZSBu
b3QgZW5hYmxlZCB0aGUgYGxlZnQgaXMgQ2VsbCB8fCByaWdodCBpcyBDZWxsYCBiZWNvbWVzIGFu
ICYmLgorICAgICAgICAgKi8KKyAgICAgICAgLy8gRklYTUU6IGluIHRoZSBpc0NlbGwgY2FzZSB3
ZSBjb3VsZCBmdXJ0aGVyIGlubGluZSBhbiBpc1N0cmluZyhsZWZ0KSAmJiBpc1N0cmluZyhyaWdo
dCkgYW5kIHRoZW4gc3RyaW5nc0VxdWFsKCkuCisgICAgICAgIC8vIEknbSBqdXN0IGFmcmFpZCBi
b3RoIG9mIGNvZGUgZXhwbG9zaW9uLCBhbmQgb2Ygc3VidGxldGllcyBsaWtlIFN0cmluZyB2cyBT
dHJpbmdPYmplY3QuCisgICAgICAgIC8vIEZJWE1FOiBXZSBlbWl0IGJsb2NrcyB3aXRoIGp1c3Qg
YSBqdW1wIHdoZW4gd2Ugc2tpcCBzb21lIGJyYW5jaCB0aGFua3MgdG8gdGhlIGFic3RyYWN0IGlu
dGVycHJldGVyCisgICAgICAgIC8vIEl0IHdvdWxkIGJlIHZlcnkgc2xpZ2h0bHkgbmljZXIgdG8g
QjMgaWYgaXQgZGlkIG5vdCBoYXZlIHRvIGVsaW1pbmF0ZSB0aGVzZSB0cml2aWFsIGJsb2Nrcy4K
KyAgICAgICAgTEJhc2ljQmxvY2sgYXJlTm90RG91YmxlID0gbV9vdXQubmV3QmxvY2soKTsKKyAg
ICAgICAgTEJhc2ljQmxvY2sgdHJ1ZUNhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBM
QmFzaWNCbG9jayBub3RUcml2aWFsbHlFcXVhbENhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAg
ICAgICBMQmFzaWNCbG9jayBmYWxzZUNhc2UgPSBtX291dC5uZXdCbG9jaygpOworICAgICAgICBM
QmFzaWNCbG9jayBzbG93UGF0aCA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Js
b2NrIGNvbnRpbnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisKKyAgICAgICAgLy8gSWYgYXQg
bGVhc3Qgb25lIHNpZGUgaXMgbm90IGEgbnVtYmVyLCBpdCBkb2VzIG5vdCBtYXR0ZXIgd2hldGhl
ciB0aGUgb3RoZXIgc2lkZSBpcyBhIGRvdWJsZSwgaXQgaXMgbm90IGdvaW5nIHRvIGJlIGVxdWFs
LgorICAgICAgICBib29sIGxlZnRNYXlCZURvdWJsZUFuZFJpZ2h0TnVtYmVyID0gKHByb3ZlblR5
cGUobGVmdEVkZ2UpICYgU3BlY0Z1bGxEb3VibGUpICYmIChwcm92ZW5UeXBlKHJpZ2h0RWRnZSkg
JiBTcGVjRnVsbE51bWJlcik7CisgICAgICAgIGJvb2wgcmlnaHRNYXlCZURvdWJsZUFuZExlZnRO
dW1iZXIgPSAocHJvdmVuVHlwZShsZWZ0RWRnZSkgJiBTcGVjRnVsbE51bWJlcikgJiYgKHByb3Zl
blR5cGUocmlnaHRFZGdlKSAmIFNwZWNGdWxsRG91YmxlKTsKKyAgICAgICAgaWYgKGxlZnRNYXlC
ZURvdWJsZUFuZFJpZ2h0TnVtYmVyIHx8IHJpZ2h0TWF5QmVEb3VibGVBbmRMZWZ0TnVtYmVyKSB7
CisgICAgICAgICAgICAvLyBUaGlzIGZyYWdtZW50IGltcGxlbWVudHMgKGxlZnQgaXMgRG91Ymxl
IHx8IHJpZ2h0IGlzIERvdWJsZSksIHdpdGggYSBzaW5nbGUgYnJhbmNoIGluc3RlYWQgb2YgdGhl
IDQgdGhhdCB3b3VsZCBiZSBuYWl2ZWx5IHJlcXVpcmVkIGlmIHdlIHVzZWQgYnJhbmNoSWZJbnQz
Mi9icmFuY2hJZk51bWJlcgorICAgICAgICAgICAgLy8gVGhlIHRyaWNrIGlzIHRoYXQgaWYgYSBK
U1ZhbHVlIGlzIGFuIEludDMyLCB0aGVuIGFkZGluZyAxPDw0OSB0byBpdCB3aWxsIG1ha2UgaXQg
b3ZlcmZsb3csIGxlYXZpbmcgYWxsIGhpZ2ggYml0cyBhdCAwCisgICAgICAgICAgICAvLyBJZiBp
dCBpcyBub3QgYSBudW1iZXIgYXQgYWxsLCB0aGVuIDE8PDQ5IHdpbGwgYmUgaXRzIG9ubHkgaGln
aCBiaXQgc2V0CisgICAgICAgICAgICAvLyBMZWF2aW5nIG9ubHkgZG91YmxlcyBhYm92ZSBvciBl
cXVhbCAxPDw1MC4KKyAgICAgICAgICAgIExWYWx1ZSBsb3dlc3RPZkhpZ2hCaXRzID0gbV9vdXQu
Y29uc3RJbnQ2NChKU1ZhbHVlOjpEb3VibGVFbmNvZGVPZmZzZXQpOworICAgICAgICAgICAgTFZh
bHVlIGxlZnRBZGQgPSBtX291dC5hZGQobGVmdCwgbG93ZXN0T2ZIaWdoQml0cyk7CisgICAgICAg
ICAgICBMVmFsdWUgcmlnaHRBZGQgPSBtX291dC5hZGQocmlnaHQsIGxvd2VzdE9mSGlnaEJpdHMp
OworICAgICAgICAgICAgTFZhbHVlIG51bGxIaWdoZXN0Qml0c1VubGVzc09uZUlzRG91YmxlID0g
bV9vdXQuYml0T3IobGVmdEFkZCwgcmlnaHRBZGQpOworICAgICAgICAgICAgTFZhbHVlIHNoaWZ0
QW1vdW50ID0gbV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpEb3VibGVFbmNvZGVPZmZzZXRCaXQg
KyAxKTsKKyAgICAgICAgICAgIExWYWx1ZSBhdExlYXN0T25lRG91YmxlID0gbV9vdXQubFNocihu
dWxsSGlnaGVzdEJpdHNVbmxlc3NPbmVJc0RvdWJsZSwgc2hpZnRBbW91bnQpOworICAgICAgICAg
ICAgbV9vdXQuYnJhbmNoKGF0TGVhc3RPbmVEb3VibGUsIHVuc3VyZShzbG93UGF0aCksIHVuc3Vy
ZShhcmVOb3REb3VibGUpKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX291dC5qdW1w
KGFyZU5vdERvdWJsZSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5h
cHBlbmRUbyhhcmVOb3REb3VibGUsIHRydWVDYXNlKTsKKyAgICAgICAgTFZhbHVlIHRyaXZpYWxs
eUVxdWFsID0gbV9vdXQuZXF1YWwobGVmdCwgcmlnaHQpOworICAgICAgICBtX291dC5icmFuY2go
dHJpdmlhbGx5RXF1YWwsIHVuc3VyZSh0cnVlQ2FzZSksIHVuc3VyZShub3RUcml2aWFsbHlFcXVh
bENhc2UpKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyh0cnVlQ2FzZSwgbm90VHJpdmlhbGx5
RXF1YWxDYXNlKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgdHJ1ZVJlc3VsdCA9IG1fb3V0LmFu
Y2hvcihtX291dC5jb25zdEJvb2wodHJ1ZSkpOworICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVh
dGlvbik7CisKKyAgICAgICAgLy8gSWYgd2Ugc3VwcG9ydCBCaWdJbnQzMiB3ZSBtdXN0IGdvIHRv
IGEgc2xvdyBwYXRoIGlmIGF0IGxlYXN0IG9uZSBvcGVyYW5kIGlzIGEgY2VsbCAoZm9yIEhlYXBC
aWdJbnQgPT09IEJpZ0ludDMyKQorICAgICAgICAvLyBJZiB3ZSBkb24ndCBzdXBwb3J0IEJpZ0lu
dDMyLCB3ZSBvbmx5IGhhdmUgdG8gZ28gdG8gYSBzbG93IHBhdGggaWYgYm90aCBvcGVyYW5kcyBh
cmUgY2VsbHMgKGZvciBIZWFwQmlnSW50ID09PSBIZWFwQmlnSW50IGFuZCBTdHJpbmcgPT09IFN0
cmluZykKKyAgICAgICAgLy8gSW5zdGVhZCBvZiBkb2luZyB0d28gYnJhbmNoZXMsIHdlIGNhbiBk
byBhIHNpbmdsZSBvbmUsIGJ5IG9ic2VydmluZyB0aGF0CisgICAgICAgIC8vIDEuIChsZWZ0IGlz
IENlbGwgJiYgcmlnaHQgaXMgQ2VsbCkgaXMgdGhlIHNhbWUgYXMgKChsZWZ0IHwgcmlnaHQpIGlz
IENlbGwpCisgICAgICAgIC8vICAgICAgQm90aCBhcmUgIkFsbCBoaWdoIGJpdHMgYXJlIDAiCisg
ICAgICAgIC8vIDIuIFNpbmNlIHdlIGtub3cgdGhhdCBuZWl0aGVyIGlzIGEgZG91YmxlLCAobGVm
dCBpcyBDZWxsIHx8IHJpZ2h0IGlzIENlbGwpIGlzIGVxdWl2YWxlbnQgdG8gKChsZWZ0ICYgcmln
aHQpIGlzIENlbGwpCisgICAgICAgIC8vICAgICAgSWYgYm90aCBhcmUgSW50MzIsIHRoZW4gdGhl
IHRvcCBiaXRzIHdpbGwgYmUgc2V0IGFuZCB0aGUgdGVzdCB3aWxsIGZhaWwKKyAgICAgICAgLy8g
ICAgICBJZiBhdCBsZWFzdCBvbmUgaXMgbm90IEludDMyLCB0aGVuIHRoZSB0b3AgYml0cyB3aWxs
IGJlIDAuCisgICAgICAgIC8vICAgICAgQW5kIGlmIGF0IGxlYXN0IG9uZSBpcyBhIGNlbGwsIHRo
ZW4gdGhlICdPdGhlcicgdGFnIHdpbGwgYWxzbyBiZSAwLCBtYWtpbmcgdGhlIHRlc3Qgc3VjY2Vl
ZAorICAgICAgICBib29sIGxlZnRNYXlCZUhlYXBCaWdJbnRPclN0cmluZyA9IHByb3ZlblR5cGUo
bGVmdEVkZ2UpICYgKFNwZWNIZWFwQmlnSW50IHwgU3BlY1N0cmluZyk7CisgICAgICAgIGJvb2wg
cmlnaHRNYXlCZUhlYXBCaWdJbnRPclN0cmluZyA9IHByb3ZlblR5cGUocmlnaHRFZGdlKSAmIChT
cGVjSGVhcEJpZ0ludCB8IFNwZWNTdHJpbmcpOworICAgICAgICBtX291dC5hcHBlbmRUbyhub3RU
cml2aWFsbHlFcXVhbENhc2UsIGZhbHNlQ2FzZSk7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgICAg
ICBpZiAobGVmdE1heUJlSGVhcEJpZ0ludE9yU3RyaW5nIHx8IHJpZ2h0TWF5QmVIZWFwQmlnSW50
T3JTdHJpbmcpIHsKKyAgICAgICAgICAgIExWYWx1ZSBtYXliZUNlbGwgPSBtX291dC5iaXRBbmQo
bGVmdCwgcmlnaHQpOworICAgICAgICAgICAgbV9vdXQuYnJhbmNoKGlzQ2VsbChtYXliZUNlbGwp
LCB1bnN1cmUoc2xvd1BhdGgpLCB1bnN1cmUoZmFsc2VDYXNlKSk7CisgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgbV9vdXQuanVtcChmYWxzZUNhc2UpOworI2Vsc2UKKyAgICAgICAgaWYgKGxl
ZnRNYXlCZUhlYXBCaWdJbnRPclN0cmluZyAmJiByaWdodE1heUJlSGVhcEJpZ0ludE9yU3RyaW5n
KSB7CisgICAgICAgICAgICBMVmFsdWUgbWF5YmVDZWxsID0gbV9vdXQuYml0T3IobGVmdCwgcmln
aHQpOworICAgICAgICAgICAgbV9vdXQuYnJhbmNoKGlzQ2VsbChtYXliZUNlbGwpLCB1bnN1cmUo
c2xvd1BhdGgpLCB1bnN1cmUoZmFsc2VDYXNlKSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgbV9vdXQuanVtcChmYWxzZUNhc2UpOworI2VuZGlmCisKKyAgICAgICAgbV9vdXQuYXBwZW5k
VG8oZmFsc2VDYXNlLCBzbG93UGF0aCk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhbHNlUmVz
dWx0ID0gbV9vdXQuYW5jaG9yKG1fb3V0LmNvbnN0Qm9vbChmYWxzZSkpOworICAgICAgICBtX291
dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd1BhdGgs
IGNvbnRpbnVhdGlvbik7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291
dC5hbmNob3IobV9vdXQubm90TnVsbCh2bUNhbGwoCisgICAgICAgICAgICBwb2ludGVyVHlwZSgp
LCBvcGVyYXRpb25Db21wYXJlU3RyaWN0RXEsIHdlYWtQb2ludGVyKGdsb2JhbE9iamVjdCksIGxl
ZnQsIHJpZ2h0KSkpOworICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAg
ICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CisgICAgICAgIHNldEJv
b2xlYW4obV9vdXQucGhpKEludDMyLCB0cnVlUmVzdWx0LCBmYWxzZVJlc3VsdCwgc2xvd1Jlc3Vs
dCkpOwogICAgIH0KIAogICAgIHZvaWQgY29tcGlsZVN0cmluZ1RvVW50eXBlZFN0cmljdEVxdWFs
aXR5KEVkZ2Ugc3RyaW5nRWRnZSwgRWRnZSB1bnR5cGVkRWRnZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IGJkNTVhM2QwNTE2ZC4uNGQ4NzRkMWFiODY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTc1NSw3ICs3NTUs
NyBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wU3RyaWN0RXEoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKICAgICAvLyBMZWF2aW5nIG9ubHkgZG91YmxlcyBhYm92ZSBvciBlcXVh
bCAxPDw1MC4KICAgICBtb3ZlKHJlZ1QwLCByZWdUMik7CiAgICAgbW92ZShyZWdUMSwgcmVnVDMp
OwotICAgIG1vdmUoVHJ1c3RlZEltbTY0KEpTVmFsdWU6Okxvd2VzdE9mSGlnaEJpdHMpLCByZWdU
NSk7CisgICAgbW92ZShUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6RG91YmxlRW5jb2RlT2Zmc2V0KSwg
cmVnVDUpOwogICAgIGFkZDY0KHJlZ1Q1LCByZWdUMik7CiAgICAgYWRkNjQocmVnVDUsIHJlZ1Qz
KTsKICAgICBsc2hpZnQ2NChUcnVzdGVkSW1tMzIoMSksIHJlZ1Q1KTsKQEAgLTgzOCw3ICs4Mzgs
NyBAQCB2b2lkIEpJVDo6Y29tcGlsZU9wU3RyaWN0RXFKdW1wKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgLy8gTGVhdmluZyBvbmx5IGRvdWJsZXMgYWJvdmUgb3Ig
ZXF1YWwgMTw8NTAuCiAgICAgbW92ZShyZWdUMCwgcmVnVDIpOwogICAgIG1vdmUocmVnVDEsIHJl
Z1QzKTsKLSAgICBtb3ZlKFRydXN0ZWRJbW02NChKU1ZhbHVlOjpMb3dlc3RPZkhpZ2hCaXRzKSwg
cmVnVDUpOworICAgIG1vdmUoVHJ1c3RlZEltbTY0KEpTVmFsdWU6OkRvdWJsZUVuY29kZU9mZnNl
dCksIHJlZ1Q1KTsKICAgICBhZGQ2NChyZWdUNSwgcmVnVDIpOwogICAgIGFkZDY0KHJlZ1Q1LCBy
ZWdUMyk7CiAgICAgbHNoaWZ0NjQoVHJ1c3RlZEltbTMyKDEpLCByZWdUNSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXgg
OGFhMjI2MmVhMzNjLi5jNWMxNDhiMDMzN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTIwMCw3ICsyMDAsNyBAQCBp
ZiBKU1ZBTFVFNjQKICAgICAgICAgY29uc3QgVGFnQmlnSW50MzIgPSBjb25zdGV4cHIgSlNWYWx1
ZTo6QmlnSW50MzJUYWcKICAgICAgICAgY29uc3QgTWFza0JpZ0ludDMyID0gY29uc3RleHByIEpT
VmFsdWU6OkJpZ0ludDMyTWFzawogICAgIGVuZAotICAgIGNvbnN0IExvd2VzdE9mSGlnaEJpdHMg
PSBjb25zdGV4cHIgSlNWYWx1ZTo6TG93ZXN0T2ZIaWdoQml0cworICAgIGNvbnN0IERvdWJsZUVu
Y29kZU9mZnNldCA9IGNvbnN0ZXhwciBKU1ZhbHVlOjpEb3VibGVFbmNvZGVPZmZzZXQKIGVsc2UK
ICAgICBjb25zdCBJbnQzMlRhZyA9IGNvbnN0ZXhwciBKU1ZhbHVlOjpJbnQzMlRhZwogICAgIGNv
bnN0IEJvb2xlYW5UYWcgPSBjb25zdGV4cHIgSlNWYWx1ZTo6Qm9vbGVhblRhZwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20g
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQpp
bmRleCAxNGFkMmE0OTdmYjAuLjYwYjU0ZjNjMzFlMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KQEAgLTk1OSw3ICs5
NTksNyBAQCBtYWNybyBzdHJpY3RFcU9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgY3JlYXRl
Qm9vbGVhbikKICAgICAgICAgIyBMZWF2aW5nIG9ubHkgZG91YmxlcyBhYm92ZSBvciBlcXVhbCAx
PDw1MC4KICAgICAgICAgbW92ZSB0MCwgdDIKICAgICAgICAgbW92ZSB0MSwgdDMKLSAgICAgICAg
bW92ZSBMb3dlc3RPZkhpZ2hCaXRzLCB0NQorICAgICAgICBtb3ZlIERvdWJsZUVuY29kZU9mZnNl
dCwgdDUKICAgICAgICAgYWRkcSB0NSwgdDIKICAgICAgICAgYWRkcSB0NSwgdDMKICAgICAgICAg
b3JxIHQyLCB0MwpAQCAtMTAxNSw3ICsxMDE1LDcgQEAgbWFjcm8gc3RyaWN0RXF1YWxpdHlKdW1w
T3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBqdW1wSWZFcXVhbCwganVtcElmTm90RXF1YWwK
ICAgICAgICAgIyBMZWF2aW5nIG9ubHkgZG91YmxlcyBhYm92ZSBvciBlcXVhbCAxPDw1MC4KICAg
ICAgICAgbW92ZSB0MCwgdDIKICAgICAgICAgbW92ZSB0MSwgdDMKLSAgICAgICAgbW92ZSBMb3dl
c3RPZkhpZ2hCaXRzLCB0NQorICAgICAgICBtb3ZlIERvdWJsZUVuY29kZU9mZnNldCwgdDUKICAg
ICAgICAgYWRkcSB0NSwgdDIKICAgICAgICAgYWRkcSB0NSwgdDMKICAgICAgICAgb3JxIHQyLCB0
MwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCmluZGV4IDhmNGQy
MDJlNjMwOS4uNTg3MGFhZjBiYTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NKU1ZhbHVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDSlNWYWx1ZS5oCkBAIC00NTcsMTAgKzQ1Nyw4IEBAIHB1YmxpYzoKICAgICAvLyBJZiBhbGwg
Yml0cyBpbiB0aGUgbWFzayBhcmUgc2V0LCB0aGlzIGluZGljYXRlcyBhbiBpbnRlZ2VyIG51bWJl
ciwKICAgICAvLyBpZiBhbnkgYnV0IG5vdCBhbGwgYXJlIHNldCB0aGlzIHZhbHVlIGlzIGEgZG91
YmxlIHByZWNpc2lvbiBudW1iZXIuCiAgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQ2NF90IE51bWJl
clRhZyA9IDB4ZmZmZTAwMDAwMDAwMDAwMGxsOwotICAgIC8vIFRoZSBmb2xsb3dpbmcgY29uc3Rh
bnQgaXMgdXNlZCBmb3IgYSB0cmljayBpbiB0aGUgaW1wbGVtZW50YXRpb24gb2Ygc3RyaWN0RXEs
IHRvIGRldGVjdCBpZiBlaXRoZXIgb2YgdGhlIGFyZ3VtZW50cyBpcyBhIGRvdWJsZQotICAgIHN0
YXRpYyBjb25zdGV4cHIgaW50NjRfdCBMb3dlc3RPZkhpZ2hCaXRzID0gMVVMTCA8PCA0OTsKLSAg
ICBzdGF0aWNfYXNzZXJ0KExvd2VzdE9mSGlnaEJpdHMgJiBOdW1iZXJUYWcpOwotICAgIHN0YXRp
Y19hc3NlcnQoISgoTG93ZXN0T2ZIaWdoQml0cz4+MSkgJiBOdW1iZXJUYWcpKTsKKyAgICBzdGF0
aWNfYXNzZXJ0KERvdWJsZUVuY29kZU9mZnNldCAmIE51bWJlclRhZyk7CisgICAgc3RhdGljX2Fz
c2VydCghKChEb3VibGVFbmNvZGVPZmZzZXQ+PjEpICYgTnVtYmVyVGFnKSk7CiAKICAgICAvLyBB
bGwgbm9uLW51bWVyaWMgKGJvb2wsIG51bGwsIHVuZGVmaW5lZCkgaW1tZWRpYXRlcyBoYXZlIGJp
dCAyIHNldC4KICAgICBzdGF0aWMgY29uc3RleHByIGludDMyX3QgT3RoZXJUYWcgICAgICAgPSAw
eDI7Cg==
</data>
<flag name="review"
          id="451973"
          type_id="1"
          status="?"
          setter="rmorisset"
    />
    <flag name="commit-queue"
          id="451974"
          type_id="3"
          status="?"
          setter="rmorisset"
    />
          </attachment>
      

    </bug>

</bugzilla>