<?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>151164</bug_id>
          
          <creation_ts>2015-11-11 16:25:41 -0800</creation_ts>
          <short_desc>[JSC] Support Doubles with B3&apos;s Add</short_desc>
          <delta_ts>2015-11-11 21:12:17 -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>New Bugs</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>fpizlo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1141266</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-11-11 16:25:41 -0800</bug_when>
    <thetext>[JSC] Support Doubles with B3&apos;s Add</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1141268</commentid>
    <comment_count>1</comment_count>
      <attachid>265333</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-11-11 16:27:16 -0800</bug_when>
    <thetext>Created attachment 265333
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1141275</commentid>
    <comment_count>2</comment_count>
      <attachid>265333</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-11-11 16:32:58 -0800</bug_when>
    <thetext>Comment on attachment 265333
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1141294</commentid>
    <comment_count>3</comment_count>
      <attachid>265333</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-11-11 16:58:25 -0800</bug_when>
    <thetext>Comment on attachment 265333
Patch

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

&gt; Source/JavaScriptCore/b3/B3ReduceStrength.cpp:172
&gt; +            if (m_value-&gt;child(1)-&gt;isLikeZero()) {

Does this do the right thing for -0?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1141301</commentid>
    <comment_count>4</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-11-11 17:06:24 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 265333 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=265333&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/b3/B3ReduceStrength.cpp:172
&gt; &gt; +            if (m_value-&gt;child(1)-&gt;isLikeZero()) {
&gt; 
&gt; Does this do the right thing for -0?

Yep :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1141302</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-11-11 17:08:58 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; Comment on attachment 265333 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=265333&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/JavaScriptCore/b3/B3ReduceStrength.cpp:172
&gt; &gt; &gt; +            if (m_value-&gt;child(1)-&gt;isLikeZero()) {
&gt; &gt; 
&gt; &gt; Does this do the right thing for -0?
&gt; 
&gt; Yep :)

Can you add a comment about why? :-)

For example, does isLikeZero return true for -0?  Even if this was documented on the method, it would help to say this here. If it does work for -0, then it would be worth explaining why this handles both -0 and 0 as the other value. A table or something that explains this would help for example if we wanted to try to expand this optimization with some more sophisticated algebra.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1141311</commentid>
    <comment_count>6</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-11-11 17:33:11 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Can you add a comment about why? :-)
&gt; 
&gt; For example, does isLikeZero return true for -0?  Even if this was
&gt; documented on the method, it would help to say this here. If it does work
&gt; for -0, then it would be worth explaining why this handles both -0 and 0 as
&gt; the other value. A table or something that explains this would help for
&gt; example if we wanted to try to expand this optimization with some more
&gt; sophisticated algebra.

If you prefer something more explicit, what do you think of:
    bool isZero()
    bool isZeroOrMinusZero()
on Value?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1141312</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-11-11 17:40:12 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; Can you add a comment about why? :-)
&gt; &gt; 
&gt; &gt; For example, does isLikeZero return true for -0?  Even if this was
&gt; &gt; documented on the method, it would help to say this here. If it does work
&gt; &gt; for -0, then it would be worth explaining why this handles both -0 and 0 as
&gt; &gt; the other value. A table or something that explains this would help for
&gt; &gt; example if we wanted to try to expand this optimization with some more
&gt; &gt; sophisticated algebra.
&gt; 
&gt; If you prefer something more explicit, what do you think of:
&gt;     bool isZero()
&gt;     bool isZeroOrMinusZero()
&gt; on Value?

I think that isLikeZero() essentially means -0, and I&apos;m fine with the name.

I believe that your optimization assumes that the following is true:

0 + 0 = 0
0 + -0 = 0
-0 + 0 = -0
-0 + -0 = -0

But I don&apos;t think that this is true.  Here&apos;s what I found, in both jsc and lldb:

0 + 0 = 0
0 + -0 = 0
-0 + 0 = 0
-0 + -0 = -0

In other words, when child(1) is 0, this operation acts as a -0 clean-up filter, which is not the same as identity.  When child(1) is -0 then it appears that this is indeed an identity.

So, either your optimization is wrong, or you need some comments to describe why it&apos;s right.  That comment should start with pointing out that this optimization applies to both 0 and -0, and you should explain why it behaves like identity in both cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1141313</commentid>
    <comment_count>8</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-11-11 17:40:38 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; (In reply to comment #5)
&gt; &gt; &gt; Can you add a comment about why? :-)
&gt; &gt; &gt; 
&gt; &gt; &gt; For example, does isLikeZero return true for -0?  Even if this was
&gt; &gt; &gt; documented on the method, it would help to say this here. If it does work
&gt; &gt; &gt; for -0, then it would be worth explaining why this handles both -0 and 0 as
&gt; &gt; &gt; the other value. A table or something that explains this would help for
&gt; &gt; &gt; example if we wanted to try to expand this optimization with some more
&gt; &gt; &gt; sophisticated algebra.
&gt; &gt; 
&gt; &gt; If you prefer something more explicit, what do you think of:
&gt; &gt;     bool isZero()
&gt; &gt;     bool isZeroOrMinusZero()
&gt; &gt; on Value?
&gt; 
&gt; I think that isLikeZero() essentially means -0, and I&apos;m fine with the name.

*essentially means 0 or -0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1141318</commentid>
    <comment_count>9</comment_count>
      <attachid>265333</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-11-11 17:57:07 -0800</bug_when>
    <thetext>Comment on attachment 265333
Patch

Yeah, looks like I got that wrong.
I just trusted the tests without much thinking.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1141325</commentid>
    <comment_count>10</comment_count>
      <attachid>265345</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-11-11 18:43:25 -0800</bug_when>
    <thetext>Created attachment 265345
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1141326</commentid>
    <comment_count>11</comment_count>
      <attachid>265345</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-11-11 18:46:22 -0800</bug_when>
    <thetext>Comment on attachment 265345
Patch

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

&gt; Source/JavaScriptCore/b3/B3ReduceStrength.cpp:172
&gt;              // Turn this: Add(value, zero)
&gt;              // Into an Identity.
&gt; -            if (m_value-&gt;child(1)-&gt;isInt(0)) {
&gt; +            if (m_value-&gt;child(1)-&gt;isInt(0) || m_value-&gt;child(1)-&gt;isNegativeZero()) {

It would be great to say in the comment why this only works for -0, so that somebody doesn&apos;t just assume this is a bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1141367</commentid>
    <comment_count>12</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-11-11 21:12:17 -0800</bug_when>
    <thetext>Committed r192347: &lt;http://trac.webkit.org/changeset/192347&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265333</attachid>
            <date>2015-11-11 16:27:16 -0800</date>
            <delta_ts>2015-11-11 18:43:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-151164-20151111162711.patch</filename>
            <type>text/plain</type>
            <size>8737</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyMzI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
YjBhZDI3ZTM0MTAxZTFlZWRhMWM4MjU4NzJlZjMzNGVmMjA1MjEyLi45NDY2NzU4NjVlZjk3NTRm
ZWE3ODEzMzNmNzAwZGVjM2Q3ZTQ5ZmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOSBAQAorMjAxNS0xMS0xMSAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxl
LmNvbT4KKworICAgICAgICBbSlNDXSBTdXBwb3J0IERvdWJsZXMgd2l0aCBCMydzIEFkZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxMTY0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSSB0d2Vha2VkIFJl
ZHVjZVN0cmVuZ3RoIGEgYml0IHRvIG1haW50YWluIGNvcnJlY3RuZXNzLgorICAgICAgICBOb3Ro
aW5nIGZhbmN5IG90aGVyd2lzZS4KKworICAgICAgICAqIGIzL0IzTG93ZXJUb0Fpci5jcHA6Cisg
ICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6Omxvd2VyKToKKyAgICAgICAgKiBiMy9C
M1JlZHVjZVN0cmVuZ3RoLmNwcDoKKyAgICAgICAgKiBiMy9CM1ZhbHVlLmg6CisgICAgICAgICog
YjMvQjNWYWx1ZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6QjM6OlZhbHVlOjppc0ludGVnZXIp
OgorICAgICAgICAqIGIzL2Fpci9BaXJPcGNvZGUub3Bjb2RlczoKKyAgICAgICAgKiBiMy90ZXN0
YjMuY3BwOgorICAgICAgICAoSlNDOjpCMzo6Yml0V2lzZUVxdWFsKToKKyAgICAgICAgKEpTQzo6
QjM6OnRlc3RBZGRBcmdEb3VibGUpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdEFkZEFyZ3NEb3Vi
bGUpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdEFkZEFyZ0ltbURvdWJsZSk6CisgICAgICAgIChK
U0M6OkIzOjp0ZXN0QWRkSW1tQXJnRG91YmxlKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RBZGRJ
bW1zRG91YmxlKToKKyAgICAgICAgKEpTQzo6QjM6OnJ1bik6CisKIDIwMTUtMTEtMTEgIE1hcmsg
TGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIENoYW5nZSBwcm9iZSBDUFVTdGF0
ZSBncHIoKSBhbmQgZnByKCkgdG8gcmV0dXJuIHJlZmVyZW5jZXMuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCmluZGV4IDViZmJlZDQzN2M5YjE2MDQ5M2QwMmViZDM1
OTk5ZDQ5ODRiYjBmNWIuLmUwMmIwMjg3MGQ1MmRjMjVlMjhhODA4NjMzMzM5Njc0MDUzYTYxNjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCkBAIC0xMjE4LDkg
KzEyMTgsNyBAQCBwcml2YXRlOgogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBBZGQ6IHsKLSAg
ICAgICAgICAgIC8vIEZJWE1FOiBOZWVkIGEgc3RvcnkgZm9yIGRvdWJsZXMuCi0gICAgICAgICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwOTkxCi0gICAg
ICAgICAgICBhcHBlbmRCaW5PcDxBZGQzMiwgQWRkNjQsIEFpcjo6T29wcywgQ29tbXV0YXRpdmU+
KAorICAgICAgICAgICAgYXBwZW5kQmluT3A8QWRkMzIsIEFkZDY0LCBBZGREb3VibGUsIENvbW11
dGF0aXZlPigKICAgICAgICAgICAgICAgICBtX3ZhbHVlLT5jaGlsZCgwKSwgbV92YWx1ZS0+Y2hp
bGQoMSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAKaW5kZXggZTI5NWQ1ZWU3ODY1ZWM0ZjBi
YWRlMDg4ZmU3ZDQzOWI2MDA0M2Q0Ny4uMDExNmQzZjgyNTU2NGY1MjFmNTlmMDY0MWQ3MTg4YzAz
YmUxNjJlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3Ry
ZW5ndGguY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3Ro
LmNwcApAQCAtMTU2LDEwICsxNTYsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgLy8gVHVybiB0aGlzOiBBZGQodmFsdWUs
IHZhbHVlKQorICAgICAgICAgICAgLy8gVHVybiB0aGlzOiBJbnRlZ2VyIEFkZCh2YWx1ZSwgdmFs
dWUpCiAgICAgICAgICAgICAvLyBJbnRvIHRoaXM6IFNobCh2YWx1ZSwgMSkKICAgICAgICAgICAg
IC8vIFRoaXMgaXMgYSB1c2VmdWwgY2Fub25pY2FsaXphdGlvbi4gSXQncyBub3QgbWVhbnQgdG8g
YmUgYSBzdHJlbmd0aCByZWR1Y3Rpb24uCi0gICAgICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQo
MCkgPT0gbV92YWx1ZS0+Y2hpbGQoMSkpIHsKKyAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5pc0lu
dGVnZXIoKSAmJiBtX3ZhbHVlLT5jaGlsZCgwKSA9PSBtX3ZhbHVlLT5jaGlsZCgxKSkgewogICAg
ICAgICAgICAgICAgIHJlcGxhY2VXaXRoTmV3VmFsdWUoCiAgICAgICAgICAgICAgICAgICAgIG1f
cHJvYy5hZGQ8VmFsdWU+KAogICAgICAgICAgICAgICAgICAgICAgICAgU2hsLCBtX3ZhbHVlLT5v
cmlnaW4oKSwgbV92YWx1ZS0+Y2hpbGQoMCksCkBAIC0xNjksNyArMTY5LDcgQEAgcHJpdmF0ZToK
IAogICAgICAgICAgICAgLy8gVHVybiB0aGlzOiBBZGQodmFsdWUsIHplcm8pCiAgICAgICAgICAg
ICAvLyBJbnRvIGFuIElkZW50aXR5LgotICAgICAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxkKDEp
LT5pc0ludCgwKSkgeworICAgICAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxkKDEpLT5pc0xpa2Va
ZXJvKCkpIHsKICAgICAgICAgICAgICAgICBtX3ZhbHVlLT5yZXBsYWNlV2l0aElkZW50aXR5KG1f
dmFsdWUtPmNoaWxkKDApKTsKICAgICAgICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzVmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmgKaW5kZXggNTk0
OWNiZjgxYTViYTBmMjNlNTg0NGI5YjM4OTEzOWZjNDU3NTE0NC4uODU3YTkyM2NmNzkxMThjMzJj
NTk1NjgyYmRjNmUzNGU2ODRiNTI2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5oCkBA
IC0xMDgsNiArMTA4LDcgQEAgcHVibGljOgogICAgIC8vIG91cnNlbHZlcyB0byBhbnkgcGFydGlj
dWxhciBpZGlvbS4KIAogICAgIGJvb2wgaXNDb25zdGFudCgpIGNvbnN0OworICAgIGJvb2wgaXNJ
bnRlZ2VyKCkgY29uc3Q7CiAgICAgCiAgICAgdmlydHVhbCBWYWx1ZSogbmVnQ29uc3RhbnQoUHJv
Y2VkdXJlJikgY29uc3Q7CiAgICAgdmlydHVhbCBWYWx1ZSogYWRkQ29uc3RhbnQoUHJvY2VkdXJl
JiwgaW50MzJfdCBvdGhlcikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNWYWx1ZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVl
SW5saW5lcy5oCmluZGV4IDU0M2YxNjIyNWY4YzkwN2E0MTUxMjZjZDk3YjNhZTRlYmIxZmEyZjUu
LmQ2NWFkYWY1ZjU4NzAyNzJmZWZiNDVlZDAzMWVkNGY5MzBmNTg1ZjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1ZhbHVlSW5saW5lcy5oCkBAIC02NCw2ICs2NCwxMSBAQCBpbmxpbmUg
Ym9vbCBWYWx1ZTo6aXNDb25zdGFudCgpIGNvbnN0CiAgICAgfQogfQogCitpbmxpbmUgYm9vbCBW
YWx1ZTo6aXNJbnRlZ2VyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gdHlwZSgpID09IEludDMyIHx8
IHR5cGUoKSA9PSBJbnQ2NDsKK30KKwogaW5saW5lIGJvb2wgVmFsdWU6Omhhc0ludDMyKCkgY29u
c3QKIHsKICAgICByZXR1cm4gISFhczxDb25zdDMyVmFsdWU+KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2RlcwppbmRleCAyYTc5NGQ4YjMzZjQzNTJl
ZWZjNjczNDJjNmNiODZjMmZlZDc0ZTQyLi4yNjZkMzE5YzY1MTg1MzI4NTBkNzU4NWI2MDFlZGVm
MmU5MDIwNjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9w
Y29kZS5vcGNvZGVzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2Rl
Lm9wY29kZXMKQEAgLTEzMiw2ICsxMzIsMTAgQEAgQW5kNjQgVTpHLCBVRDpHCiAgICAgVG1wLCBU
bXAKICAgICBJbW0sIFRtcAogCitBZGREb3VibGUgVTpGLCBVRDpGCisgICAgVG1wLCBUbXAKKyAg
ICBBZGRyLCBUbXAKKwogTHNoaWZ0MzIgVTpHLCBVRDpHCiAgICAgVG1wKiwgVG1wCiAgICAgSW1t
LCBUbXAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAKaW5kZXggMDQ3NTUwNWEyYTA5Njg4
ZTRjOTg4NDdiNmRiZjVmYzI5YmE4ZmRmNi4uZTk5ZGFhZDQyODAyZTJmNmJmMjFjMzU2ODY1ZGNm
MTBiZjdkODc4OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAKQEAgLTQyLDYgKzQy
LDcgQEAKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgog
I2luY2x1ZGUgIlZNLmgiCisjaW5jbHVkZSA8Y21hdGg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4K
ICNpbmNsdWRlIDx3dGYvTnVtYmVyT2ZDb3Jlcy5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcu
aD4KQEAgLTIyNSw2ICsyMjYsNzUgQEAgdm9pZCB0ZXN0QWRkTG9hZFR3aWNlKCkKICAgICB0ZXN0
KDEpOwogfQogCitib29sIGJpdFdpc2VFcXVhbChkb3VibGUgYSwgZG91YmxlIGIpCit7CisgICAg
cmV0dXJuIGJpdHdpc2VfY2FzdDx1aW50NjRfdD4oYSkgPT0gYml0d2lzZV9jYXN0PHVpbnQ2NF90
PihiKTsKK30KKwordm9pZCB0ZXN0QWRkQXJnRG91YmxlKGRvdWJsZSBhKQoreworICAgIFByb2Nl
ZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAg
VmFsdWUqIHZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250
cm9sVmFsdWU+KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIHZhbHVlLCB2YWx1ZSkpOwor
CisgICAgQ0hFQ0soYml0V2lzZUVxdWFsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCBhKSwg
YSArIGEpKTsKK30KKwordm9pZCB0ZXN0QWRkQXJnc0RvdWJsZShkb3VibGUgYSwgZG91YmxlIGIp
Cit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRk
QmxvY2soKTsKKyAgICBWYWx1ZSogdmFsdWVBID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOworICAgIFZhbHVl
KiB2YWx1ZUIgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEZQUkluZm86OmFyZ3VtZW50RlBSMSk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xW
YWx1ZT4oCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4ocHJvYywgQWRkLCBPcmlnaW4oKSwgdmFsdWVBLCB2YWx1ZUIpKTsKKwor
ICAgIENIRUNLKGJpdFdpc2VFcXVhbChjb21waWxlQW5kUnVuPGRvdWJsZT4ocHJvYywgYSwgYiks
IGEgKyBiKSk7Cit9CisKK3ZvaWQgdGVzdEFkZEFyZ0ltbURvdWJsZShkb3VibGUgYSwgZG91Ymxl
IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKKyAgICBWYWx1ZSogdmFsdWVBID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOworICAgIFZh
bHVlKiB2YWx1ZUIgPSByb290LT5hcHBlbmROZXc8Q29uc3REb3VibGVWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIGIpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KAorICAgICAgICBw
cm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHBy
b2MsIEFkZCwgT3JpZ2luKCksIHZhbHVlQSwgdmFsdWVCKSk7CisKKyAgICBDSEVDSyhiaXRXaXNl
RXF1YWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIGEpLCBhICsgYikpOworfQorCit2b2lk
IHRlc3RBZGRJbW1BcmdEb3VibGUoZG91YmxlIGEsIGRvdWJsZSBiKQoreworICAgIFByb2NlZHVy
ZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFs
dWUqIHZhbHVlQSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdERvdWJsZVZhbHVlPihwcm9jLCBPcmln
aW4oKSwgYSk7CisgICAgVmFsdWUqIHZhbHVlQiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKKyAgICByb290
LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCB2
YWx1ZUEsIHZhbHVlQikpOworCisgICAgQ0hFQ0soYml0V2lzZUVxdWFsKGNvbXBpbGVBbmRSdW48
ZG91YmxlPihwcm9jLCBiKSwgYSArIGIpKTsKK30KKwordm9pZCB0ZXN0QWRkSW1tc0RvdWJsZShk
b3VibGUgYSwgZG91YmxlIGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9j
ayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogdmFsdWVBID0gcm9vdC0+YXBw
ZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKTsKKyAgICBWYWx1ZSog
dmFsdWVCID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RG91YmxlVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBiKTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigKKyAgICAgICAgcHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBB
ZGQsIE9yaWdpbigpLCB2YWx1ZUEsIHZhbHVlQikpOworCisgICAgQ0hFQ0soYml0V2lzZUVxdWFs
KGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jKSwgYSArIGIpKTsKK30KKwogdm9pZCB0ZXN0TXVs
QXJnKGludCBhKQogewogICAgIFByb2NlZHVyZSBwcm9jOwpAQCAtMzIwMyw2ICszMjczLDI4IEBA
IHZvaWQgcnVuKGNvbnN0IGNoYXIqIGZpbHRlcikKICAgICBSVU4odGVzdEFkZEFyZ3MzMigxLCAy
KSk7CiAgICAgUlVOKHRlc3RBZGRMb2FkVHdpY2UoKSk7CiAKKyAgICBSVU4odGVzdEFkZEFyZ0Rv
dWJsZShNX1BJKSk7CisgICAgUlVOKHRlc3RBZGRBcmdzRG91YmxlKE1fUEksIDEpKTsKKyAgICBS
VU4odGVzdEFkZEFyZ3NEb3VibGUoTV9QSSwgLU1fUEkpKTsKKyAgICBSVU4odGVzdEFkZEFyZ0lt
bURvdWJsZShNX1BJLCAxKSk7CisgICAgUlVOKHRlc3RBZGRBcmdJbW1Eb3VibGUoTV9QSSwgMCkp
OworICAgIFJVTih0ZXN0QWRkQXJnSW1tRG91YmxlKE1fUEksIC0wKSk7CisgICAgUlVOKHRlc3RB
ZGRBcmdJbW1Eb3VibGUoMCwgMCkpOworICAgIFJVTih0ZXN0QWRkQXJnSW1tRG91YmxlKDAsIC0w
KSk7CisgICAgUlVOKHRlc3RBZGRBcmdJbW1Eb3VibGUoLTAsIC0wKSk7CisgICAgUlVOKHRlc3RB
ZGRJbW1BcmdEb3VibGUoTV9QSSwgMSkpOworICAgIFJVTih0ZXN0QWRkSW1tQXJnRG91YmxlKE1f
UEksIDApKTsKKyAgICBSVU4odGVzdEFkZEltbUFyZ0RvdWJsZShNX1BJLCAtMCkpOworICAgIFJV
Tih0ZXN0QWRkSW1tQXJnRG91YmxlKDAsIDApKTsKKyAgICBSVU4odGVzdEFkZEltbUFyZ0RvdWJs
ZSgwLCAtMCkpOworICAgIFJVTih0ZXN0QWRkSW1tQXJnRG91YmxlKC0wLCAtMCkpOworICAgIFJV
Tih0ZXN0QWRkSW1tc0RvdWJsZShNX1BJLCAxKSk7CisgICAgUlVOKHRlc3RBZGRJbW1zRG91Ymxl
KE1fUEksIDApKTsKKyAgICBSVU4odGVzdEFkZEltbXNEb3VibGUoTV9QSSwgLTApKTsKKyAgICBS
VU4odGVzdEFkZEltbXNEb3VibGUoMCwgMCkpOworICAgIFJVTih0ZXN0QWRkSW1tc0RvdWJsZSgw
LCAtMCkpOworICAgIFJVTih0ZXN0QWRkSW1tc0RvdWJsZSgtMCwgLTApKTsKKwogICAgIFJVTih0
ZXN0TXVsQXJnKDUpKTsKICAgICBSVU4odGVzdE11bEFyZ3MoMSwgMSkpOwogICAgIFJVTih0ZXN0
TXVsQXJncygxLCAyKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265345</attachid>
            <date>2015-11-11 18:43:25 -0800</date>
            <delta_ts>2015-11-11 18:46:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-151164-20151111184320.patch</filename>
            <type>text/plain</type>
            <size>10364</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyMzQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
NzU2ZDg3NjMwMWYxNzQ2YmVmMmExOTY3NDlmZGMzMzVmMzc4YTk1Li5iOTkyYjNmNTdmNDY0MjVh
YjY1NmUxNzM0YmRjNWUzMDhhZTZkMTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOSBAQAorMjAxNS0xMS0xMSAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxl
LmNvbT4KKworICAgICAgICBbSlNDXSBTdXBwb3J0IERvdWJsZXMgd2l0aCBCMydzIEFkZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxMTY0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSSB0d2Vha2VkIFJl
ZHVjZVN0cmVuZ3RoIGEgYml0IHRvIG1haW50YWluIGNvcnJlY3RuZXNzLgorICAgICAgICBOb3Ro
aW5nIGZhbmN5IG90aGVyd2lzZS4KKworICAgICAgICAqIGIzL0IzTG93ZXJUb0Fpci5jcHA6Cisg
ICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6Omxvd2VyKToKKyAgICAgICAgKiBiMy9C
M1JlZHVjZVN0cmVuZ3RoLmNwcDoKKyAgICAgICAgKiBiMy9CM1ZhbHVlLmg6CisgICAgICAgICog
YjMvQjNWYWx1ZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6QjM6OlZhbHVlOjppc0ludGVnZXIp
OgorICAgICAgICAqIGIzL2Fpci9BaXJPcGNvZGUub3Bjb2RlczoKKyAgICAgICAgKiBiMy90ZXN0
YjMuY3BwOgorICAgICAgICAoSlNDOjpCMzo6Yml0V2lzZUVxdWFsKToKKyAgICAgICAgKEpTQzo6
QjM6OnRlc3RBZGRBcmdEb3VibGUpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdEFkZEFyZ3NEb3Vi
bGUpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdEFkZEFyZ0ltbURvdWJsZSk6CisgICAgICAgIChK
U0M6OkIzOjp0ZXN0QWRkSW1tQXJnRG91YmxlKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RBZGRJ
bW1zRG91YmxlKToKKyAgICAgICAgKEpTQzo6QjM6OnJ1bik6CisKIDIwMTUtMTEtMTEgIE1hcmsg
TGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBhYmlsaXR5IHRvIGluc2Vy
dCBwcm9iZXMgaW4gTExWTSBJUiB0aGF0IHdlIGdlbmVyYXRlLgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNMb3dlclRvQWlyLmNwcAppbmRleCA1YmZiZWQ0MzdjOWIxNjA0OTNkMDJlYmQzNTk5
OWQ0OTg0YmIwZjViLi5lMDJiMDI4NzBkNTJkYzI1ZTI4YTgwODYzMzMzOTY3NDA1M2E2MTY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcApAQCAtMTIxOCw5ICsx
MjE4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgQWRkOiB7Ci0gICAg
ICAgICAgICAvLyBGSVhNRTogTmVlZCBhIHN0b3J5IGZvciBkb3VibGVzLgotICAgICAgICAgICAg
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDk5MQotICAgICAg
ICAgICAgYXBwZW5kQmluT3A8QWRkMzIsIEFkZDY0LCBBaXI6Ok9vcHMsIENvbW11dGF0aXZlPigK
KyAgICAgICAgICAgIGFwcGVuZEJpbk9wPEFkZDMyLCBBZGQ2NCwgQWRkRG91YmxlLCBDb21tdXRh
dGl2ZT4oCiAgICAgICAgICAgICAgICAgbV92YWx1ZS0+Y2hpbGQoMCksIG1fdmFsdWUtPmNoaWxk
KDEpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwCmluZGV4IGUyOTVkNWVlNzg2NWVjNGYwYmFk
ZTA4OGZlN2Q0MzliNjAwNDNkNDcuLmZjNTZjZGU1ZDc3NTA1N2I3YTRkMzYxMzMyZmJlNzJlMGZm
M2M4MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVu
Z3RoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5j
cHAKQEAgLTE1NiwxMCArMTU2LDEwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIC8vIFR1cm4gdGhpczogQWRkKHZhbHVlLCB2
YWx1ZSkKKyAgICAgICAgICAgIC8vIFR1cm4gdGhpczogSW50ZWdlciBBZGQodmFsdWUsIHZhbHVl
KQogICAgICAgICAgICAgLy8gSW50byB0aGlzOiBTaGwodmFsdWUsIDEpCiAgICAgICAgICAgICAv
LyBUaGlzIGlzIGEgdXNlZnVsIGNhbm9uaWNhbGl6YXRpb24uIEl0J3Mgbm90IG1lYW50IHRvIGJl
IGEgc3RyZW5ndGggcmVkdWN0aW9uLgotICAgICAgICAgICAgaWYgKG1fdmFsdWUtPmNoaWxkKDAp
ID09IG1fdmFsdWUtPmNoaWxkKDEpKSB7CisgICAgICAgICAgICBpZiAobV92YWx1ZS0+aXNJbnRl
Z2VyKCkgJiYgbV92YWx1ZS0+Y2hpbGQoMCkgPT0gbV92YWx1ZS0+Y2hpbGQoMSkpIHsKICAgICAg
ICAgICAgICAgICByZXBsYWNlV2l0aE5ld1ZhbHVlKAogICAgICAgICAgICAgICAgICAgICBtX3By
b2MuYWRkPFZhbHVlPigKICAgICAgICAgICAgICAgICAgICAgICAgIFNobCwgbV92YWx1ZS0+b3Jp
Z2luKCksIG1fdmFsdWUtPmNoaWxkKDApLApAQCAtMTY5LDcgKzE2OSw3IEBAIHByaXZhdGU6CiAK
ICAgICAgICAgICAgIC8vIFR1cm4gdGhpczogQWRkKHZhbHVlLCB6ZXJvKQogICAgICAgICAgICAg
Ly8gSW50byBhbiBJZGVudGl0eS4KLSAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgxKS0+
aXNJbnQoMCkpIHsKKyAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgxKS0+aXNJbnQoMCkg
fHwgbV92YWx1ZS0+Y2hpbGQoMSktPmlzTmVnYXRpdmVaZXJvKCkpIHsKICAgICAgICAgICAgICAg
ICBtX3ZhbHVlLT5yZXBsYWNlV2l0aElkZW50aXR5KG1fdmFsdWUtPmNoaWxkKDApKTsKICAgICAg
ICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmgKaW5kZXggNTk0OWNiZjgxYTViYTBmMjNlNTg0NGI5YjM4
OTEzOWZjNDU3NTE0NC4uYmJlODE5YTI5NmFjMGE0OTRkNDc4MzA4ZjM3OTVkNDlkMTFhNmMwZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5oCkBAIC0xMDgsNiArMTA4LDcgQEAgcHVibGlj
OgogICAgIC8vIG91cnNlbHZlcyB0byBhbnkgcGFydGljdWxhciBpZGlvbS4KIAogICAgIGJvb2wg
aXNDb25zdGFudCgpIGNvbnN0OworICAgIGJvb2wgaXNJbnRlZ2VyKCkgY29uc3Q7CiAgICAgCiAg
ICAgdmlydHVhbCBWYWx1ZSogbmVnQ29uc3RhbnQoUHJvY2VkdXJlJikgY29uc3Q7CiAgICAgdmly
dHVhbCBWYWx1ZSogYWRkQ29uc3RhbnQoUHJvY2VkdXJlJiwgaW50MzJfdCBvdGhlcikgY29uc3Q7
CkBAIC0xNjcsNiArMTY4LDggQEAgcHVibGljOgogICAgIC8vIHBvc3NpYmxlIHJldHVybiB2YWx1
ZXMgYXJlIDAgb3IgMS4gSXQncyBPSyBmb3IgdGhpcyBtZXRob2QgdG8gY29uc2VydmF0aXZlbHkg
cmV0dXJuIGZhbHNlLgogICAgIGJvb2wgcmV0dXJuc0Jvb2woKSBjb25zdDsKIAorICAgIGJvb2wg
aXNOZWdhdGl2ZVplcm8oKSBjb25zdDsKKwogICAgIFRyaVN0YXRlIGFzVHJpU3RhdGUoKSBjb25z
dDsKICAgICBib29sIGlzTGlrZVplcm8oKSBjb25zdCB7IHJldHVybiBhc1RyaVN0YXRlKCkgPT0g
RmFsc2VUcmlTdGF0ZTsgfQogICAgIGJvb2wgaXNMaWtlTm9uWmVybygpIGNvbnN0IHsgcmV0dXJu
IGFzVHJpU3RhdGUoKSA9PSBUcnVlVHJpU3RhdGU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1ZhbHVlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzVmFsdWVJbmxpbmVzLmgKaW5kZXggNTQzZjE2MjI1ZjhjOTA3YTQxNTEyNmNkOTdiM2FlNGVi
YjFmYTJmNS4uMzQ0MTRmMmIyYjFiZDcxNjVkZTE1OTA3MzRkNmMxZjFlZWVkOWE5ZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWVJbmxpbmVzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWVJbmxpbmVzLmgKQEAgLTY0LDYgKzY0LDExIEBA
IGlubGluZSBib29sIFZhbHVlOjppc0NvbnN0YW50KCkgY29uc3QKICAgICB9CiB9CiAKK2lubGlu
ZSBib29sIFZhbHVlOjppc0ludGVnZXIoKSBjb25zdAoreworICAgIHJldHVybiB0eXBlKCkgPT0g
SW50MzIgfHwgdHlwZSgpID09IEludDY0OworfQorCiBpbmxpbmUgYm9vbCBWYWx1ZTo6aGFzSW50
MzIoKSBjb25zdAogewogICAgIHJldHVybiAhIWFzPENvbnN0MzJWYWx1ZT4oKTsKQEAgLTE0OCw2
ICsxNTMsMTUgQEAgaW5saW5lIGJvb2wgVmFsdWU6Omhhc051bWJlcigpIGNvbnN0CiAgICAgcmV0
dXJuIGhhc0ludCgpIHx8IGhhc0RvdWJsZSgpOwogfQogCitpbmxpbmUgYm9vbCBWYWx1ZTo6aXNO
ZWdhdGl2ZVplcm8oKSBjb25zdAoreworICAgIGlmIChoYXNEb3VibGUoKSkgeworICAgICAgICBk
b3VibGUgdmFsdWUgPSBhc0RvdWJsZSgpOworICAgICAgICByZXR1cm4gIXZhbHVlICYmIHN0ZDo6
c2lnbmJpdCh2YWx1ZSk7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwogdGVtcGxhdGU8
dHlwZW5hbWUgVD4KIGlubGluZSBib29sIFZhbHVlOjpyZXByZXNlbnRhYmxlQXMoKSBjb25zdAog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bj
b2RlcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMKaW5k
ZXggMmE3OTRkOGIzM2Y0MzUyZWVmYzY3MzQyYzZjYjg2YzJmZWQ3NGU0Mi4uMjY2ZDMxOWM2NTE4
NTMyODUwZDc1ODViNjAxZWRlZjJlOTAyMDYzZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2RlcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCkBAIC0xMzIsNiArMTMyLDEwIEBAIEFuZDY0IFU6
RywgVUQ6RwogICAgIFRtcCwgVG1wCiAgICAgSW1tLCBUbXAKIAorQWRkRG91YmxlIFU6RiwgVUQ6
RgorICAgIFRtcCwgVG1wCisgICAgQWRkciwgVG1wCisKIExzaGlmdDMyIFU6RywgVUQ6RwogICAg
IFRtcCosIFRtcAogICAgIEltbSwgVG1wCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvdGVzdGIzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCmlu
ZGV4IDA0NzU1MDVhMmEwOTY4OGU0Yzk4ODQ3YjZkYmY1ZmMyOWJhOGZkZjYuLmMyNTNmYTM3NmQ5
ODQxZjIzMjE5ZmEyNjQ5MDY5NDUwYjNhOTQ4YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy90ZXN0YjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0
YjMuY3BwCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1
ZGUgIkxpbmtCdWZmZXIuaCIKICNpbmNsdWRlICJWTS5oIgorI2luY2x1ZGUgPGNtYXRoPgogI2lu
Y2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL051bWJlck9mQ29yZXMuaD4KICNpbmNs
dWRlIDx3dGYvVGhyZWFkaW5nLmg+CkBAIC0yMjUsNiArMjI2LDcwIEBAIHZvaWQgdGVzdEFkZExv
YWRUd2ljZSgpCiAgICAgdGVzdCgxKTsKIH0KIAordm9pZCB0ZXN0QWRkQXJnRG91YmxlKGRvdWJs
ZSBhKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9j
LmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIHZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOworICAgIHJv
b3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCks
IHZhbHVlLCB2YWx1ZSkpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxk
b3VibGU+KHByb2MsIGEpLCBhICsgYSkpOworfQorCit2b2lkIHRlc3RBZGRBcmdzRG91YmxlKGRv
dWJsZSBhLCBkb3VibGUgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2Nr
KiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiB2YWx1ZUEgPSByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50
RlBSMCk7CisgICAgVmFsdWUqIHZhbHVlQiA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIxKTsKKyAgICByb290LT5h
cHBlbmROZXc8Q29udHJvbFZhbHVlPigKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwK
KyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCB2YWx1
ZUEsIHZhbHVlQikpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3Vi
bGU+KHByb2MsIGEsIGIpLCBhICsgYikpOworfQorCit2b2lkIHRlc3RBZGRBcmdJbW1Eb3VibGUo
ZG91YmxlIGEsIGRvdWJsZSBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIHZhbHVlQSA9IHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1l
bnRGUFIwKTsKKyAgICBWYWx1ZSogdmFsdWVCID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0RG91Ymxl
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZh
bHVlPigKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPihwcm9jLCBBZGQsIE9yaWdpbigpLCB2YWx1ZUEsIHZhbHVlQikpOworCisg
ICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIGEpLCBhICsg
YikpOworfQorCit2b2lkIHRlc3RBZGRJbW1BcmdEb3VibGUoZG91YmxlIGEsIGRvdWJsZSBiKQor
eworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJs
b2NrKCk7CisgICAgVmFsdWUqIHZhbHVlQSA9IHJvb3QtPmFwcGVuZE5ldzxDb25zdERvdWJsZVZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgYSk7CisgICAgVmFsdWUqIHZhbHVlQiA9IHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRG
UFIwKTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigKKyAgICAgICAgcHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBB
ZGQsIE9yaWdpbigpLCB2YWx1ZUEsIHZhbHVlQikpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwo
Y29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIGIpLCBhICsgYikpOworfQorCit2b2lkIHRlc3RB
ZGRJbW1zRG91YmxlKGRvdWJsZSBhLCBkb3VibGUgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsK
KyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiB2YWx1
ZUEgPSByb290LT5hcHBlbmROZXc8Q29uc3REb3VibGVWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEp
OworICAgIFZhbHVlKiB2YWx1ZUIgPSByb290LT5hcHBlbmROZXc8Q29uc3REb3VibGVWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIGIpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KAor
ICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIEFkZCwgT3JpZ2luKCksIHZhbHVlQSwgdmFsdWVCKSk7CisKKyAgICBDSEVD
Syhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPGRvdWJsZT4ocHJvYyksIGEgKyBiKSk7Cit9CisK
IHZvaWQgdGVzdE11bEFyZyhpbnQgYSkKIHsKICAgICBQcm9jZWR1cmUgcHJvYzsKQEAgLTMxNjEs
NiArMzIyNiwxOCBAQCB2b2lkIHRlc3RDaGlsbERpdjY0KGludDY0X3QgbnVtLCBpbnQ2NF90IGRl
biwgaW50NjRfdCByZXMpCiAgICAgfQogfQogCisvLyBDbGFuZyBjaGFuZ2VzIGxpdGVyYWwgLTAg
aW50byAwLgorLy8gV2UgaGF2ZSB0byBoaWRlIHRoZSB2YWx1ZSB0byBjcmVhdGUgYSBuZWdhdGl2
ZSB6ZXJvLgorTkVWRVJfSU5MSU5FIGRvdWJsZSB6ZXJvKCkKK3sKKyAgICByZXR1cm4gMDsKK30K
KworTkVWRVJfSU5MSU5FIGRvdWJsZSBuZWdhdGl2ZVplcm8oKQoreworICAgIHJldHVybiAtemVy
bygpOworfQorCiAjZGVmaW5lIFJVTih0ZXN0KSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCiAgICAgICAgIGlmICghc2hvdWxkUnVuKCN0ZXN0KSkgICAgICAgICAgICAgICAgICBcCiAg
ICAgICAgICAgICBicmVhazsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC0zMjAz
LDYgKzMyODAsMzAgQEAgdm9pZCBydW4oY29uc3QgY2hhciogZmlsdGVyKQogICAgIFJVTih0ZXN0
QWRkQXJnczMyKDEsIDIpKTsKICAgICBSVU4odGVzdEFkZExvYWRUd2ljZSgpKTsKIAorICAgIFJV
Tih0ZXN0QWRkQXJnRG91YmxlKE1fUEkpKTsKKyAgICBSVU4odGVzdEFkZEFyZ3NEb3VibGUoTV9Q
SSwgMSkpOworICAgIFJVTih0ZXN0QWRkQXJnc0RvdWJsZShNX1BJLCAtTV9QSSkpOworICAgIFJV
Tih0ZXN0QWRkQXJnSW1tRG91YmxlKE1fUEksIDEpKTsKKyAgICBSVU4odGVzdEFkZEFyZ0ltbURv
dWJsZShNX1BJLCAwKSk7CisgICAgUlVOKHRlc3RBZGRBcmdJbW1Eb3VibGUoTV9QSSwgbmVnYXRp
dmVaZXJvKCkpKTsKKyAgICBSVU4odGVzdEFkZEFyZ0ltbURvdWJsZSgwLCAwKSk7CisgICAgUlVO
KHRlc3RBZGRBcmdJbW1Eb3VibGUoMCwgbmVnYXRpdmVaZXJvKCkpKTsKKyAgICBSVU4odGVzdEFk
ZEFyZ0ltbURvdWJsZShuZWdhdGl2ZVplcm8oKSwgMCkpOworICAgIFJVTih0ZXN0QWRkQXJnSW1t
RG91YmxlKG5lZ2F0aXZlWmVybygpLCBuZWdhdGl2ZVplcm8oKSkpOworICAgIFJVTih0ZXN0QWRk
SW1tQXJnRG91YmxlKE1fUEksIDEpKTsKKyAgICBSVU4odGVzdEFkZEltbUFyZ0RvdWJsZShNX1BJ
LCAwKSk7CisgICAgUlVOKHRlc3RBZGRJbW1BcmdEb3VibGUoTV9QSSwgbmVnYXRpdmVaZXJvKCkp
KTsKKyAgICBSVU4odGVzdEFkZEltbUFyZ0RvdWJsZSgwLCAwKSk7CisgICAgUlVOKHRlc3RBZGRJ
bW1BcmdEb3VibGUoMCwgbmVnYXRpdmVaZXJvKCkpKTsKKyAgICBSVU4odGVzdEFkZEltbUFyZ0Rv
dWJsZShuZWdhdGl2ZVplcm8oKSwgMCkpOworICAgIFJVTih0ZXN0QWRkSW1tQXJnRG91YmxlKG5l
Z2F0aXZlWmVybygpLCBuZWdhdGl2ZVplcm8oKSkpOworICAgIFJVTih0ZXN0QWRkSW1tc0RvdWJs
ZShNX1BJLCAxKSk7CisgICAgUlVOKHRlc3RBZGRJbW1zRG91YmxlKE1fUEksIDApKTsKKyAgICBS
VU4odGVzdEFkZEltbXNEb3VibGUoTV9QSSwgbmVnYXRpdmVaZXJvKCkpKTsKKyAgICBSVU4odGVz
dEFkZEltbXNEb3VibGUoMCwgMCkpOworICAgIFJVTih0ZXN0QWRkSW1tc0RvdWJsZSgwLCBuZWdh
dGl2ZVplcm8oKSkpOworICAgIFJVTih0ZXN0QWRkSW1tc0RvdWJsZShuZWdhdGl2ZVplcm8oKSwg
bmVnYXRpdmVaZXJvKCkpKTsKKwogICAgIFJVTih0ZXN0TXVsQXJnKDUpKTsKICAgICBSVU4odGVz
dE11bEFyZ3MoMSwgMSkpOwogICAgIFJVTih0ZXN0TXVsQXJncygxLCAyKSk7CkBAIC0zNjc1LDcg
KzM3NzYsNyBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpCiAgICAgUlVOKHRlc3RDYWxs
RnVuY3Rpb25XaXRoSGVsbGFBcmd1bWVudHMoKSk7CiAKICAgICBSVU4odGVzdFJldHVybkRvdWJs
ZSgwLjApKTsKLSAgICBSVU4odGVzdFJldHVybkRvdWJsZSgtMC4wKSk7CisgICAgUlVOKHRlc3RS
ZXR1cm5Eb3VibGUobmVnYXRpdmVaZXJvKCkpKTsKICAgICBSVU4odGVzdFJldHVybkRvdWJsZSg0
Mi41KSk7CiAKICAgICBSVU4odGVzdENhbGxTaW1wbGVEb3VibGUoMSwgMikpOwo=
</data>
<flag name="review"
          id="290398"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>