<?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>73370</bug_id>
          
          <creation_ts>2011-11-29 15:29:19 -0800</creation_ts>
          <short_desc>Hash* iterators should allow comparison between const and non-const versions</short_desc>
          <delta_ts>2011-12-09 15:51:46 -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>Web Template Framework</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="David Levin">levin</reporter>
          <assigned_to name="David Levin">levin</assigned_to>
          <cc>abarth</cc>
    
    <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>511157</commentid>
    <comment_count>0</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-11-29 15:29:19 -0800</bug_when>
    <thetext>There is no reason to disallow this, and it is a constant source of confusion.

For example, 
  HashMap a;
  for (HashMap::const_iterator it = a.begin(); it != a.end(); ++it)

Generates a compile error because it and a.end() differ in the const iterator type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511161</commentid>
    <comment_count>1</comment_count>
      <attachid>117060</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-11-29 15:38:20 -0800</bug_when>
    <thetext>Created attachment 117060
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511180</commentid>
    <comment_count>2</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-11-29 16:09:13 -0800</bug_when>
    <thetext>Perhaps there is a more concise way to do this but I don&apos;t know it.

I did this after hearing about another co-worker hit this issue and I remember someone else hitting this and not understanding it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511215</commentid>
    <comment_count>3</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-11-29 16:43:17 -0800</bug_when>
    <thetext>Adding a comment from irc:

&quot;One way it&apos;s nice that we don&apos;t allow comparisons is that it&apos;s really not the best way to iterate over a loop since it&apos;ll call end() for every step&quot; -- andersca</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512074</commentid>
    <comment_count>4</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-11-30 13:32:41 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Adding a comment from irc:
&gt; 
&gt; &quot;One way it&apos;s nice that we don&apos;t allow comparisons is that it&apos;s really not the best way to iterate over a loop since it&apos;ll call end() for every step&quot; -- andersca

This is a good thing.

After more thought, it seemed like it still would be nice to have these comparison be available. Why?
1. The current compile error is confusing.
2. Even with omitting this, people are still able to write the loop if they use a non const_iterator.
3. It seems valuable to allow comparing iterator to const_iterator rather than forcing people to go through workarounds.
4. I like the idea of not having &quot;end()&quot; in the loop. It applies equally when using iterator alone and that is not stopped right now so this feels more like a coder/reviewer education issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512079</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-11-30 13:38:41 -0800</bug_when>
    <thetext>&gt; 2. Even with omitting this, people are still able to write the loop if they use a non const_iterator.

This is what I always do, precisely because plain iterator doesn&apos;t work!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512087</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-11-30 13:44:06 -0800</bug_when>
    <thetext>Err, *because const_iterator doesn&apos;t work*.

Can&apos;t we generally expect optimizer to move the end() call out?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512292</commentid>
    <comment_count>7</comment_count>
      <attachid>117060</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-11-30 17:51:36 -0800</bug_when>
    <thetext>Comment on attachment 117060
Patch

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

&gt; Source/JavaScriptCore/wtf/HashTable.h:197
&gt; +        bool operator==(const iterator&amp; other) const
&gt; +        {
&gt; +            return *this == static_cast&lt;const_iterator&gt;(other);
&gt; +        }
&gt; +        bool operator!=(const iterator&amp; other) const
&gt; +        {
&gt; +            return *this != static_cast&lt;const_iterator&gt;(other);
&gt; +        }

We don’t have to change the type like this. We can just write:

    return get() == other.get();</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518600</commentid>
    <comment_count>8</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-12-09 15:47:46 -0800</bug_when>
    <thetext>Committed as http://trac.webkit.org/changeset/102483

(In reply to comment #7)
&gt; (From update of attachment 117060 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=117060&amp;action=review
&gt; &gt; Source/JavaScriptCore/wtf/HashTable.h:197
&gt; &gt; +        bool operator==(const iterator&amp; other) const
&gt; &gt; +        {
&gt; &gt; +            return *this == static_cast&lt;const_iterator&gt;(other);
&gt; &gt; +        }
&gt; We don’t have to change the type like this. We can just write:
&gt; 
&gt;     return get() == other.get();

I considered doing this but I felt bad that it would avoid the checkValidity() call done by the &quot;bool operator==(const const_iterator&amp; other) const&quot; version. fwiw, the static_cast should only invoke the operator which returns the contained const_iterator.

If you disagree with this, I will change it to use get()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518606</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-12-09 15:51:46 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; I considered doing this but I felt bad that it would avoid the checkValidity() call done by the &quot;bool operator==(const const_iterator&amp; other) const&quot; version.

I see.

&gt; fwiw, the static_cast should only invoke the operator which returns the contained const_iterator.

Sure, but the problem with static_cast is that you can’t easily tell this for sure just looking at the call site. Anyway, I am fine with this as is.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117060</attachid>
            <date>2011-11-29 15:38:20 -0800</date>
            <delta_ts>2011-11-30 17:51:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73370-20111129153819.patch</filename>
            <type>text/plain</type>
            <size>10264</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxNDAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
YTExM2QzZDUyYmM3MzM5MTYzMDVlNjRiZTc2YTUxYjA5YzA5ODU0Li5hNjNkOTM5NTkyODMzMzg5
OTdiNDIxOTNkMDBlODQzNTM0NGE5NmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAxMS0xMS0yOSAgRGF2aWQgTGV2aW4gIDxsZXZpbkBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgSGFzaCogaXRlcmF0b3JzIHNob3VsZCBhbGxvdyBjb21wYXJpc29uIGJldHdl
ZW4gY29uc3QgYW5kIGNvbnN0IHZlcnNpb25zLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMzNzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9IYXNoVGFibGUuaDogQWRkIHRoZSBvcGVyYXRvcnMg
bmVlZGVkIHRvIGRvIHRoaXMuCisgICAgICAgIChXVEY6Okhhc2hUYWJsZUNvbnN0SXRlcmF0b3I6
Om9wZXJhdG9yPT0pOgorICAgICAgICAoV1RGOjpIYXNoVGFibGVDb25zdEl0ZXJhdG9yOjpvcGVy
YXRvciE9KToKKyAgICAgICAgKFdURjo6SGFzaFRhYmxlSXRlcmF0b3I6Om9wZXJhdG9yPT0pOgor
ICAgICAgICAoV1RGOjpIYXNoVGFibGVJdGVyYXRvcjo6b3BlcmF0b3IhPSk6CisgICAgICAgIChX
VEY6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV1RGOjpvcGVyYXRvciE9KToKKwogMjAxMS0xMS0y
OCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIERGRyBkZWJ1Z0Nh
bGwoKSBtZWNoYW5pc20gb25seSB3b3JrcyBvbiBYODYgYW5kIFg4Ni02NApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9IYXNoVGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvSGFzaFRhYmxlLmgKaW5kZXggMzhiZGM0ODQxMDA5ZDRkYjhlMjQzZmI0ZWU2OTQ5
MTA5ZTJlOGZlYi4uOTdhYzNhZTUyMTc3YThmZGI1NjVjMTU4MTkyM2E5YjEwY2EzMWZhNiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9IYXNoVGFibGUuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL0hhc2hUYWJsZS5oCkBAIC0xODcsNiArMTg3LDE0IEBAIG5h
bWVzcGFjZSBXVEYgewogICAgICAgICAgICAgY2hlY2tWYWxpZGl0eShvdGhlcik7CiAgICAgICAg
ICAgICByZXR1cm4gbV9wb3NpdGlvbiAhPSBvdGhlci5tX3Bvc2l0aW9uOwogICAgICAgICB9Cisg
ICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBpdGVyYXRvciYgb3RoZXIpIGNvbnN0CisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJldHVybiAqdGhpcyA9PSBzdGF0aWNfY2FzdDxjb25zdF9pdGVy
YXRvcj4ob3RoZXIpOworICAgICAgICB9CisgICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBp
dGVyYXRvciYgb3RoZXIpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiAqdGhp
cyAhPSBzdGF0aWNfY2FzdDxjb25zdF9pdGVyYXRvcj4ob3RoZXIpOworICAgICAgICB9CiAKICAg
ICBwcml2YXRlOgogICAgICAgICB2b2lkIGNoZWNrVmFsaWRpdHkoKSBjb25zdApAQCAtMjUyLDYg
KzI2MCw4IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICAvLyBDb21wYXJpc29uLgogICAgICAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgaXRlcmF0b3ImIG90aGVyKSBjb25zdCB7IHJldHVybiBt
X2l0ZXJhdG9yID09IG90aGVyLm1faXRlcmF0b3I7IH0KICAgICAgICAgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRvciAhPSBvdGhl
ci5tX2l0ZXJhdG9yOyB9CisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBjb25zdF9pdGVy
YXRvciYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1faXRlcmF0b3IgPT0gb3RoZXI7IH0KKyAgICAg
ICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGNvbnN0X2l0ZXJhdG9yJiBvdGhlcikgY29uc3QgeyBy
ZXR1cm4gbV9pdGVyYXRvciAhPSBvdGhlcjsgfQogCiAgICAgICAgIG9wZXJhdG9yIGNvbnN0X2l0
ZXJhdG9yKCkgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRvcjsgfQogCkBAIC0xMjAxLDYgKzEyMTEs
MzEgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHJldHVybiBhLm1faW1wbCAhPSBiLm1faW1w
bDsKICAgICB9CiAKKyAgICAvLyBBbGwgNCBjb21iaW5hdGlvbnMgb2YgPT0sICE9IGFuZCBDb25z
dCxub24gY29uc3QuCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KKyAgICBp
bmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEhhc2hUYWJsZUNvbnN0SXRlcmF0b3JBZGFwdGVy
PFQsIFU+JiBhLCBjb25zdCBIYXNoVGFibGVJdGVyYXRvckFkYXB0ZXI8VCwgVT4mIGIpCisgICAg
eworICAgICAgICByZXR1cm4gYS5tX2ltcGwgPT0gYi5tX2ltcGw7CisgICAgfQorCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KKyAgICBpbmxpbmUgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IEhhc2hUYWJsZUNvbnN0SXRlcmF0b3JBZGFwdGVyPFQsIFU+JiBhLCBjb25zdCBIYXNo
VGFibGVJdGVyYXRvckFkYXB0ZXI8VCwgVT4mIGIpCisgICAgeworICAgICAgICByZXR1cm4gYS5t
X2ltcGwgIT0gYi5tX2ltcGw7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVT4KKyAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEhhc2hUYWJsZUl0ZXJh
dG9yQWRhcHRlcjxULCBVPiYgYSwgY29uc3QgSGFzaFRhYmxlQ29uc3RJdGVyYXRvckFkYXB0ZXI8
VCwgVT4mIGIpCisgICAgeworICAgICAgICByZXR1cm4gYS5tX2ltcGwgPT0gYi5tX2ltcGw7Cisg
ICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KKyAgICBpbmxpbmUg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IEhhc2hUYWJsZUl0ZXJhdG9yQWRhcHRlcjxULCBVPiYgYSwg
Y29uc3QgSGFzaFRhYmxlQ29uc3RJdGVyYXRvckFkYXB0ZXI8VCwgVT4mIGIpCisgICAgeworICAg
ICAgICByZXR1cm4gYS5tX2ltcGwgIT0gYi5tX2ltcGw7CisgICAgfQorCiB9IC8vIG5hbWVzcGFj
ZSBXVEYKIAogI2luY2x1ZGUgIkhhc2hJdGVyYXRvcnMuaCIKZGlmZiAtLWdpdCBhL1Rvb2xzL0No
YW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2YjE3MDkyOGY2YWYxYTE4ZGEzNmUwMjM0
ZjVmZDlmZTQwN2QxZjJjLi5jZGRhZjkwMjRjOTEzYWVjZDFlNzU4OTlkZjk1MjE3YTRhZWEwNGNi
IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTYgQEAKKzIwMTEtMTEtMjkgIERhdmlkIExldmluICA8bGV2aW5AY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIEhhc2gqIGl0ZXJhdG9ycyBzaG91bGQgYWxsb3cgY29tcGFyaXNvbiBiZXR3
ZWVuIGNvbnN0IGFuZCBjb25zdCB2ZXJzaW9ucy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTczMzcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkuZ3lwaTog
QWRkIHRoZSBuZXcgdGVzdCBmaWxlIHRvIHRoZSBidWlsZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogRGl0dG8uCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS93aW4vVGVzdFdlYktpdEFQSS52Y3Byb2o6IERpdHRvLgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hNYXAuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOiBBZGQgYSB0ZXN0IGZvciB0aGUgbmV3IGZ1bmN0aW9u
YWxpdHkuCisKIDIwMTEtMTEtMjkgIFRvciBBcm5lIFZlc3Riw7ggIDx0b3IuYXJuZS52ZXN0Ym9A
bm9raWEuY29tPgogCiAgICAgICAgIFtRdF0gUmVtb3ZlIHVzZSBvZiBpbnRlcm5hbCBoZWFkZXJz
IGluIHRoZSBNaW5pQnJvd3NlcgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLmd5cGkgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkuZ3lwaQpp
bmRleCA4NWFhMjljZmViOWEyYzA3ZTY2ZDFiNGQzNmU4OTE1M2ZlMjBmMWE3Li5kMzE1N2U5ODgz
NmQ4NWZkNDFlMTE1NGI3ZGJiM2Y0NjUyNDY2OTZiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RXZWJLaXRBUEkuZ3lwaQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkuZ3lwaQpAQCAtMzIsNiArMzIsNyBAQAogICAgICd2YXJpYWJsZXMnOiB7CiAgICAg
ICAgICdUZXN0V2ViS2l0QVBJX2ZpbGVzJzogWwogICAgICAgICAgICAgJ1Rlc3RzL1dURi9DaGVj
a2VkQXJpdGhtZXRpY09wZXJhdGlvbnMuY3BwJywKKyAgICAgICAgICAgICdUZXN0cy9XVEYvSGFz
aE1hcC5jcHAnLAogICAgICAgICAgICAgJ1Rlc3RzL1dURi9SZWRCbGFja1RyZWUuY3BwJywKICAg
ICAgICAgICAgICdUZXN0cy9XVEYvU3RyaW5nQnVpbGRlci5jcHAnLAogICAgICAgICAgICAgJ1Rl
c3RzL1dURi9TdHJpbmdPcGVyYXRvcnMuY3BwJywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
MWY0YWM1NzkwNzkxNjNlZjk2N2ViYTY5NzJlNTc5MDI1NzYxYzhiOS4uNWE3ZWZlMjUxOWVkMmYz
MTBlZWY5MTE2MDk0NDM4ZGY3Yzg1ZGU5YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTcs
NiArNyw3IEBACiAJb2JqZWN0cyA9IHsKIAogLyogQmVnaW4gUEJYQnVpbGRGaWxlIHNlY3Rpb24g
Ki8KKwkJMEJDRDgzMzUxNDg1N0NFNDAwRUEyMDAzIC8qIEhhc2hNYXAuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEJDRDgzMzQxNDg1N0NFNDAwRUEy
MDAzIC8qIEhhc2hNYXAuY3BwICovOyB9OwogCQkwRkM2QzRDQzE0MTAyN0UwMDA1QjdGMEMgLyog
UmVkQmxhY2tUcmVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGQzZDNENCMTQxMDI3RTAwMDVCN0YwQyAvKiBSZWRCbGFja1RyZWUuY3BwICovOyB9
OwogCQkwRkM2QzRDRjE0MTAzNEFEMDA1QjdGMEMgLyogTWV0YUFsbG9jYXRvci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkM2QzRDRTE0MTAzNEFE
MDA1QjdGMEMgLyogTWV0YUFsbG9jYXRvci5jcHAgKi87IH07CiAJCTFBMDJDODRGMTI1RDRBODQw
MEUzRjRCRCAvKiBGaW5kLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDFBMDJDODRFMTI1RDRBODQwMEUzRjRCRCAvKiBGaW5kLmNwcCAqLzsgfTsKQEAg
LTE0NSw2ICsxNDYsNyBAQAogLyogRW5kIFBCWENvcHlGaWxlc0J1aWxkUGhhc2Ugc2VjdGlvbiAq
LwogCiAvKiBCZWdpbiBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KKwkJMEJDRDgzMzQxNDg1
N0NFNDAwRUEyMDAzIC8qIEhhc2hNYXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gSGFzaE1hcC5jcHA7IHBhdGggPSBXVEYvSGFzaE1hcC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGQzZDNENCMTQxMDI3RTAwMDVCN0YwQyAvKiBSZWRCbGFja1Ry
ZWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUmVkQmxhY2tUcmVl
LmNwcDsgcGF0aCA9IFdURi9SZWRCbGFja1RyZWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRkM2QzRDRTE0MTAzNEFEMDA1QjdGMEMgLyogTWV0YUFsbG9jYXRvci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBNZXRhQWxsb2NhdG9yLmNwcDsgcGF0
aCA9IFdURi9NZXRhQWxsb2NhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MUEwMkM4NEIxMjVENEE1RTAwRTNGNEJEIC8qIGZpbmQuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRt
bDsgcGF0aCA9IGZpbmQuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQxNCw2
ICs0MTYsNyBAQAogCQkJCTBGQzZDNENFMTQxMDM0QUQwMDVCN0YwQyAvKiBNZXRhQWxsb2NhdG9y
LmNwcCAqLywKIAkJCQkwRkM2QzRDQjE0MTAyN0UwMDA1QjdGMEMgLyogUmVkQmxhY2tUcmVlLmNw
cCAqLywKIAkJCQlBN0E5NjZEQTE0MEVDQ0M4MDA1RUY5QjQgLyogQ2hlY2tlZEFyaXRobWV0aWNP
cGVyYXRpb25zLmNwcCAqLywKKwkJCQkwQkNEODMzNDE0ODU3Q0U0MDBFQTIwMDMgLyogSGFzaE1h
cC5jcHAgKi8sCiAJCQkJODFCNTAxOTIxNDBGMjMyMzAwRDlFQjU4IC8qIFN0cmluZ0J1aWxkZXIu
Y3BwICovLAogCQkJCUMwMTM2M0M3MTNDMzk5NzMwMEVGMzk2NCAvKiBTdHJpbmdPcGVyYXRvcnMu
Y3BwICovLAogCQkJCUJDOTA5NjRCMTI1NTYxQkYwMDA4Mzc1NiAvKiBWZWN0b3JCYXNpYy5jcHAg
Ki8sCkBAIC02NjAsNiArNjYzLDcgQEAKIAkJCQlCQzNDNEM3RjE0NTg3QUE2MDAyNUZCNjIgLyog
V0tCcm93c2luZ0NvbnRleHRHcm91cFRlc3QubW0gaW4gU291cmNlcyAqLywKIAkJCQlDMEM1RDNC
RTE0NTk4QjZGMDBBODAyQTYgLyogR2V0QmFja2luZ1NjYWxlRmFjdG9yLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMzcyMkM4NjkxNDYxRTAzRTAwQzQ1RDAwIC8qIFJlbmRlcmVkSW1hZ2VGcm9tRE9N
UmFuZ2UubW0gaW4gU291cmNlcyAqLywKKwkJCQkwQkNEODMzNTE0ODU3Q0U0MDBFQTIwMDMgLyog
SGFzaE1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL0hhc2hNYXAuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
SGFzaE1hcC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjlmNGMxZmRkOWFlZWJiZTljMTdjNWQ1OTczZGUwMGU4
YmFkOGVkNQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L0hhc2hNYXAuY3BwCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEkgeworCit0eXBlZGVmIFdURjo6SGFzaE1hcDxpbnQsIGludD4gSW50SGFzaE1hcDsKKwor
VEVTVChXVEYsIEhhc2hUYWJsZUl0ZXJhdG9yQ29tcGFyaXNvbikKK3sKKyAgICBJbnRIYXNoTWFw
IG1hcDsKKyAgICBtYXAuYWRkKDEsIDIpOworICAgIEFTU0VSVF9UUlVFKG1hcC5iZWdpbigpICE9
IG1hcC5lbmQoKSk7CisgICAgQVNTRVJUX0ZBTFNFKG1hcC5iZWdpbigpID09IG1hcC5lbmQoKSk7
CisKKyAgICBJbnRIYXNoTWFwOjpjb25zdF9pdGVyYXRvciBiZWdpbiA9IG1hcC5iZWdpbigpOwor
ICAgIEFTU0VSVF9UUlVFKGJlZ2luID09IG1hcC5iZWdpbigpKTsKKyAgICBBU1NFUlRfVFJVRSht
YXAuYmVnaW4oKSA9PSBiZWdpbik7CisgICAgQVNTRVJUX1RSVUUoYmVnaW4gIT0gbWFwLmVuZCgp
KTsKKyAgICBBU1NFUlRfVFJVRShtYXAuZW5kKCkgIT0gYmVnaW4pOworICAgIEFTU0VSVF9GQUxT
RShiZWdpbiAhPSBtYXAuYmVnaW4oKSk7CisgICAgQVNTRVJUX0ZBTFNFKG1hcC5iZWdpbigpICE9
IGJlZ2luKTsKKyAgICBBU1NFUlRfRkFMU0UoYmVnaW4gPT0gbWFwLmVuZCgpKTsKKyAgICBBU1NF
UlRfRkFMU0UobWFwLmVuZCgpID09IGJlZ2luKTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdl
YktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS93aW4vVGVzdFdlYktpdEFQ
SS52Y3Byb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL3dpbi9UZXN0V2ViS2l0QVBJLnZjcHJvagpp
bmRleCA1MGVjMDgwYWJmYmUzYmMzYjA2OTk5OTk5YjU2ZjBmNzIzZDc4MTU3Li5hNjhlM2IxMzk0
ZDBhMGVkNTM2MWM5ZGNmOGVhOWY4YTI5ZmMyMjM3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL3dpbi9UZXN0V2ViS2l0QVBJLnZjcHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L3dpbi9UZXN0V2ViS2l0QVBJLnZjcHJvagpAQCAtNjM2LDYgKzYzNiwxMCBAQAogCQkJCQk+CiAJ
CQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cVGVzdHNcV1RGXEhh
c2hNYXAuY3BwIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZl
UGF0aD0iLi5cVGVzdHNcV1RGXFN0cmluZ09wZXJhdG9ycy5jcHAiCiAJCQkJCT4KIAkJCQk8L0Zp
bGU+Cg==
</data>
<flag name="review"
          id="116377"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>