<?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>46130</bug_id>
          
          <creation_ts>2010-09-20 15:24:25 -0700</creation_ts>
          <short_desc>The commit-cluster bots still race to lock patch_ids</short_desc>
          <delta_ts>2010-09-20 16:59:31 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>281851</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-09-20 15:24:25 -0700</bug_when>
    <thetext>The commit-cluster bots still race to lock patch_ids</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281853</commentid>
    <comment_count>1</comment_count>
      <attachid>68146</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-09-20 15:26:33 -0700</bug_when>
    <thetext>Created attachment 68146
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281867</commentid>
    <comment_count>2</comment_count>
      <attachid>68146</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-09-20 15:43:39 -0700</bug_when>
    <thetext>Comment on attachment 68146
Patch

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

In general I think this is a great change.  But I think it could be factored cleaner.

&gt; WebKitTools/QueueStatusServer/handlers/nextpatch.py:41
&gt; +    one_hour_ago = time.mktime((now - timedelta(minutes=60)).timetuple())

Wow.  What a confusing way to make this time object.  Amazing there isn&apos;t a cleaner way.

Doesn&apos;t the model list type understand dates?

&gt; WebKitTools/QueueStatusServer/handlers/nextpatch.py:49
&gt; +    nonexpired_item_ids = []
&gt; +    nonexpired_item_dates = []
&gt; +    for i in range(len(active_work_items.item_ids)):
&gt; +        if active_work_items.item_dates[i] &gt; one_hour_ago:
&gt; +            nonexpired_item_ids.append(active_work_items.item_ids[i])
&gt; +            nonexpired_item_dates.append(active_work_items.item_dates[i])
&gt; +    active_work_items.item_ids = nonexpired_item_ids
&gt; +    active_work_items.item_dates = nonexpired_item_dates

I would think this should just walk the list and remove items.  Or use an accessor on the model which returns tuples.  I don&apos;t think all the code which deals with the model needs to be exposed to the fact that these are stored as separate lists.

Maybe this whole function should be made a static method on the model?

&gt; WebKitTools/QueueStatusServer/handlers/nextpatch.py:52
&gt; +def _find_ready_item(active_work_items, work_item_ids, now):

Since there is no difference between a free function and a static method, seems a static method would be a better choice here.

I think you can even use a non-static method and python may automatically bind self for you when you do self.my_method_name to pass to the transaction.

&gt; WebKitTools/QueueStatusServer/model/activeworkitems.py:34
&gt; +class ActiveWorkItems(WorkItems):

I dont&apos; think this makes sense as a WorkItems class.  It wants to have different storage anyway.

&gt; WebKitTools/QueueStatusServer/model/activeworkitems.py:35
&gt; +    item_dates = db.ListProperty(float)

Seems this should end up being a list of tuples, no?  number, date pairs?  Maybe such a thing doesn&apos;t exist for the model.  In which case, shouldn&apos;t we use accessor methods to access these in pairs. Then we don&apos;t need to have all the individual code paths be careful to access both.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281873</commentid>
    <comment_count>3</comment_count>
      <attachid>68146</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-09-20 15:53:23 -0700</bug_when>
    <thetext>Comment on attachment 68146
Patch

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

&gt;&gt; WebKitTools/QueueStatusServer/handlers/nextpatch.py:41
&gt;&gt; +    one_hour_ago = time.mktime((now - timedelta(minutes=60)).timetuple())
&gt; 
&gt; Wow.  What a confusing way to make this time object.  Amazing there isn&apos;t a cleaner way.
&gt; 
&gt; Doesn&apos;t the model list type understand dates?

Sadly, no.  That forces things to be pretty ugly.

&gt;&gt; WebKitTools/QueueStatusServer/handlers/nextpatch.py:52
&gt;&gt; +def _find_ready_item(active_work_items, work_item_ids, now):
&gt; 
&gt; Since there is no difference between a free function and a static method, seems a static method would be a better choice here.
&gt; 
&gt; I think you can even use a non-static method and python may automatically bind self for you when you do self.my_method_name to pass to the transaction.

Ok.  I&apos;ll move these to the model.

&gt;&gt; WebKitTools/QueueStatusServer/model/activeworkitems.py:34
&gt;&gt; +class ActiveWorkItems(WorkItems):
&gt; 
&gt; I dont&apos; think this makes sense as a WorkItems class.  It wants to have different storage anyway.

ok

&gt;&gt; WebKitTools/QueueStatusServer/model/activeworkitems.py:35
&gt;&gt; +    item_dates = db.ListProperty(float)
&gt; 
&gt; Seems this should end up being a list of tuples, no?  number, date pairs?  Maybe such a thing doesn&apos;t exist for the model.  In which case, shouldn&apos;t we use accessor methods to access these in pairs. Then we don&apos;t need to have all the individual code paths be careful to access both.

I don&apos;t think you can make lists of complicated things, otherwise I&apos;d agree with you.  If you want to make more complicated structures, I think you&apos;re supposed to use the notion of a tree of entities, but that seems like too much overhead for what we need.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281878</commentid>
    <comment_count>4</comment_count>
      <attachid>68151</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-09-20 16:03:56 -0700</bug_when>
    <thetext>Created attachment 68151
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281879</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-09-20 16:05:06 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; &gt; Seems this should end up being a list of tuples, no?  number, date pairs?  Maybe such a thing doesn&apos;t exist for the model.  In which case, shouldn&apos;t we use accessor methods to access these in pairs. Then we don&apos;t need to have all the individual code paths be careful to access both.
&gt; 
&gt; I don&apos;t think you can make lists of complicated things, otherwise I&apos;d agree with you.  If you want to make more complicated structures, I think you&apos;re supposed to use the notion of a tree of entities, but that seems like too much overhead for what we need.

Yup.  I&apos;m all for little-overhead.  Just attempting to vote for model cleanliness.  When someone else writes code to show the list of current locks, they shouldn&apos;t have to walk two separate lists then too, for example.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281880</commentid>
    <comment_count>6</comment_count>
      <attachid>68151</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-09-20 16:10:59 -0700</bug_when>
    <thetext>Comment on attachment 68151
Patch

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

&gt; WebKitTools/QueueStatusServer/model/activeworkitems.py:48
&gt; +                nonexpired_item_ids.append(self.item_ids[i])
&gt; +                nonexpired_item_dates.append(self.item_dates[i])

I think we should consider hiding these two lists behind a list of tuples instead.  Then the &quot;API&quot; for dealing with them is to get/set a list of tuples and their storage is a internal detail of this class (even hidden from the classes core logic methods).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281885</commentid>
    <comment_count>7</comment_count>
      <attachid>68151</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-09-20 16:17:23 -0700</bug_when>
    <thetext>Comment on attachment 68151
Patch

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

&gt;&gt; WebKitTools/QueueStatusServer/model/activeworkitems.py:48
&gt;&gt; +                nonexpired_item_dates.append(self.item_dates[i])
&gt; 
&gt; I think we should consider hiding these two lists behind a list of tuples instead.  Then the &quot;API&quot; for dealing with them is to get/set a list of tuples and their storage is a internal detail of this class (even hidden from the classes core logic methods).

That&apos;s good idea, but I&apos;m inclined to do that when we have more than one consumer of that API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281913</commentid>
    <comment_count>8</comment_count>
      <attachid>68151</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-20 16:59:26 -0700</bug_when>
    <thetext>Comment on attachment 68151
Patch

Clearing flags on attachment: 68151

Committed r67893: &lt;http://trac.webkit.org/changeset/67893&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281914</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-20 16:59:31 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68146</attachid>
            <date>2010-09-20 15:26:33 -0700</date>
            <delta_ts>2010-09-20 16:03:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-46130-20100920152632.patch</filename>
            <type>text/plain</type>
            <size>6320</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDY3ODg0KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTAtMDktMjAgIEFkYW0gQmFydGggIDxhYmFy
dGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGUgY29tbWl0LWNsdXN0ZXIgYm90cyBzdGlsbCByYWNlIHRvIGxvY2sgcGF0Y2hf
aWRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjEz
MAorCisgICAgICAgIEl0IHR1cm5zIG91dCB3ZSBuZWVkIHRvIHVzZSBhIHRyYW5zYWN0aW9uIG9i
amVjdCB0byBtYWtlIHRoZQorICAgICAgICByZWFkL21vZGlmeS93cml0ZSBsb2NrIG9wZXJhdGlv
biBhdG9taWMuICBGcm9tIHJlYWRpbmcgdGhlIEFwcEVuZ2luZQorICAgICAgICBkb2N1bWVudGF0
aW9uLCBJIHRoaW5rIHRoaXMgcGF0Y2ggc2hvdWxkIGRvIHdoYXQgd2Ugd2FudC4gIEl0J3MgaGFy
ZCB0bworICAgICAgICB0ZXN0IGxvY2FsbHkgYmVjYXVzZSB0aGUgdGVzdCBpbnN0YW5jZSBpc24n
dCBkaXN0cmlidXRlZCBpbiB0aGUgc2FtZQorICAgICAgICB3YXkgdGhlIHByb2R1Y3Rpb24gaW5z
dGFuY2UgaXMuCisKKyAgICAgICAgKiBRdWV1ZVN0YXR1c1NlcnZlci9oYW5kbGVycy9uZXh0cGF0
Y2gucHk6CisgICAgICAgICogUXVldWVTdGF0dXNTZXJ2ZXIvbW9kZWwvYWN0aXZld29ya2l0ZW1z
LnB5OiBBZGRlZC4KKwogMjAxMC0wOS0yMCAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KSW5kZXg6IFdlYktpdFRvb2xzL1F1
ZXVlU3RhdHVzU2VydmVyL2hhbmRsZXJzL25leHRwYXRjaC5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXRUb29scy9RdWV1ZVN0YXR1c1NlcnZlci9oYW5kbGVycy9uZXh0cGF0Y2gucHkJKHJldmlzaW9u
IDY3ODcxKQorKysgV2ViS2l0VG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvaGFuZGxlcnMvbmV4dHBh
dGNoLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMiArMjYsNDcgQEAKICMgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAKK2Zyb20gZ29vZ2xlLmFwcGVuZ2luZS5leHQgaW1wb3J0IGRiCiBm
cm9tIGdvb2dsZS5hcHBlbmdpbmUuZXh0IGltcG9ydCB3ZWJhcHAKIAogZnJvbSBtb2RlbC53b3Jr
aXRlbXMgaW1wb3J0IFdvcmtJdGVtcworZnJvbSBtb2RlbC5hY3RpdmV3b3JraXRlbXMgaW1wb3J0
IEFjdGl2ZVdvcmtJdGVtcwogZnJvbSBtb2RlbCBpbXBvcnQgcXVldWVzdGF0dXMKIAogZnJvbSBk
YXRldGltZSBpbXBvcnQgZGF0ZXRpbWUsIHRpbWVkZWx0YQoraW1wb3J0IHRpbWUKKworCitkZWYg
X3VuYXNzaWduX2V4cGlyZWRfd29ya19pdGVtcyhhY3RpdmVfd29ya19pdGVtcywgbm93KToKKyAg
ICBvbmVfaG91cl9hZ28gPSB0aW1lLm1rdGltZSgobm93IC0gdGltZWRlbHRhKG1pbnV0ZXM9NjAp
KS50aW1ldHVwbGUoKSkKKyAgICBub25leHBpcmVkX2l0ZW1faWRzID0gW10KKyAgICBub25leHBp
cmVkX2l0ZW1fZGF0ZXMgPSBbXQorICAgIGZvciBpIGluIHJhbmdlKGxlbihhY3RpdmVfd29ya19p
dGVtcy5pdGVtX2lkcykpOgorICAgICAgICBpZiBhY3RpdmVfd29ya19pdGVtcy5pdGVtX2RhdGVz
W2ldID4gb25lX2hvdXJfYWdvOgorICAgICAgICAgICAgbm9uZXhwaXJlZF9pdGVtX2lkcy5hcHBl
bmQoYWN0aXZlX3dvcmtfaXRlbXMuaXRlbV9pZHNbaV0pCisgICAgICAgICAgICBub25leHBpcmVk
X2l0ZW1fZGF0ZXMuYXBwZW5kKGFjdGl2ZV93b3JrX2l0ZW1zLml0ZW1fZGF0ZXNbaV0pCisgICAg
YWN0aXZlX3dvcmtfaXRlbXMuaXRlbV9pZHMgPSBub25leHBpcmVkX2l0ZW1faWRzCisgICAgYWN0
aXZlX3dvcmtfaXRlbXMuaXRlbV9kYXRlcyA9IG5vbmV4cGlyZWRfaXRlbV9kYXRlcworCisKK2Rl
ZiBfZmluZF9yZWFkeV9pdGVtKGFjdGl2ZV93b3JrX2l0ZW1zLCB3b3JrX2l0ZW1faWRzLCBub3cp
OgorICAgIGZvciBpdGVtX2lkIGluIHdvcmtfaXRlbV9pZHM6CisgICAgICAgIGlmIGl0ZW1faWQg
bm90IGluIGFjdGl2ZV93b3JrX2l0ZW1zLml0ZW1faWRzOgorICAgICAgICAgICAgYWN0aXZlX3dv
cmtfaXRlbXMuaXRlbV9pZHMuYXBwZW5kKGl0ZW1faWQpCisgICAgICAgICAgICBhY3RpdmVfd29y
a19pdGVtcy5pdGVtX2RhdGVzLmFwcGVuZCh0aW1lLm1rdGltZShub3cudGltZXR1cGxlKCkpKQor
ICAgICAgICAgICAgcmV0dXJuIGl0ZW1faWQKKyAgICByZXR1cm4gTm9uZQorCisKK2RlZiBfYXNz
aWduX3BhdGNoX2lkKGtleSwgd29ya19pdGVtX2lkcyk6CisgICAgbm93ID0gZGF0ZXRpbWUubm93
KCkKKyAgICBhY3RpdmVfd29ya19pdGVtcyA9IGRiLmdldChrZXkpCisKKyAgICBfdW5hc3NpZ25f
ZXhwaXJlZF93b3JrX2l0ZW1zKGFjdGl2ZV93b3JrX2l0ZW1zLCBub3cpCisgICAgYXNzaWduZWRf
aXRlbSA9IF9maW5kX3JlYWR5X2l0ZW0oYWN0aXZlX3dvcmtfaXRlbXMsIHdvcmtfaXRlbV9pZHMs
IG5vdykKKworICAgIGFjdGl2ZV93b3JrX2l0ZW1zLnB1dCgpCisgICAgcmV0dXJuIGFzc2lnbmVk
X2l0ZW0KIAogCiBjbGFzcyBOZXh0UGF0Y2god2ViYXBwLlJlcXVlc3RIYW5kbGVyKToKQEAgLTM5
LDI2ICs3NCwxMiBAQCBjbGFzcyBOZXh0UGF0Y2god2ViYXBwLlJlcXVlc3RIYW5kbGVyKToKICAg
ICAgICAgd29ya19pdGVtcyA9IFdvcmtJdGVtcy5hbGwoKS5maWx0ZXIoInF1ZXVlX25hbWUgPSIs
IHF1ZXVlX25hbWUpLmdldCgpCiAgICAgICAgIGlmIG5vdCB3b3JrX2l0ZW1zOgogICAgICAgICAg
ICAgcmV0dXJuIE5vbmUKLSAgICAgICAgb25lX2hvdXJfYWdvID0gZGF0ZXRpbWUubm93KCkgLSB0
aW1lZGVsdGEobWludXRlcz02MCkKLSAgICAgICAgc3RhdHVzZXMgPSBxdWV1ZXN0YXR1cy5RdWV1
ZVN0YXR1cy5hbGwoKS5maWx0ZXIoInF1ZXVlX25hbWUgPSIsIHF1ZXVlX25hbWUpLmZpbHRlcigi
ZGF0ZSA+Iiwgb25lX2hvdXJfYWdvKS5mZXRjaCgxNSkKLSAgICAgICAgYWN0aXZlX3BhdGNoX2lk
cyA9IHNldChbc3RhdHVzLmFjdGl2ZV9wYXRjaF9pZCBmb3Igc3RhdHVzIGluIHN0YXR1c2VzXSkK
LSAgICAgICAgZm9yIGl0ZW1faWQgaW4gd29ya19pdGVtcy5pdGVtX2lkczoKLSAgICAgICAgICAg
IGlmIGl0ZW1faWQgbm90IGluIGFjdGl2ZV9wYXRjaF9pZHM6Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIGl0ZW1faWQKLSAgICAgICAgIyBFaXRoZXIgdGhlcmUgd2VyZSBubyB3b3JrIGl0ZW1zLCBv
ciB0aGV5J3JlIGFsbCBhY3RpdmUuCi0gICAgICAgIHJldHVybiBOb25lCi0KLSAgICBkZWYgX2Fz
c2lnbihzZWxmLCBxdWV1ZV9uYW1lLCBwYXRjaF9pZCk6Ci0gICAgICAgIHF1ZXVlX3N0YXR1cyA9
IHF1ZXVlc3RhdHVzLlF1ZXVlU3RhdHVzKCkKLSAgICAgICAgcXVldWVfc3RhdHVzLnF1ZXVlX25h
bWUgPSBxdWV1ZV9uYW1lCi0gICAgICAgIHF1ZXVlX3N0YXR1cy5hY3RpdmVfcGF0Y2hfaWQgPSBw
YXRjaF9pZAotICAgICAgICBxdWV1ZV9zdGF0dXMubWVzc2FnZSA9ICJBc3NpZ25lZCBmb3IgcHJv
Y2Vzc2luZyIKLSAgICAgICAgcXVldWVfc3RhdHVzLnB1dCgpCisgICAgICAgIGFjdGl2ZV93b3Jr
X2l0ZW1zID0gQWN0aXZlV29ya0l0ZW1zLmdldF9vcl9pbnNlcnQoa2V5X25hbWU9cXVldWVfbmFt
ZSwgcXVldWVfbmFtZT1xdWV1ZV9uYW1lKQorICAgICAgICByZXR1cm4gZGIucnVuX2luX3RyYW5z
YWN0aW9uKF9hc3NpZ25fcGF0Y2hfaWQsIGFjdGl2ZV93b3JrX2l0ZW1zLmtleSgpLCB3b3JrX2l0
ZW1zLml0ZW1faWRzKQogCiAgICAgZGVmIGdldChzZWxmLCBxdWV1ZV9uYW1lKToKICAgICAgICAg
cGF0Y2hfaWQgPSBzZWxmLl9nZXRfbmV4dF9wYXRjaF9pZChxdWV1ZV9uYW1lKQogICAgICAgICBp
ZiBub3QgcGF0Y2hfaWQ6CiAgICAgICAgICAgICBzZWxmLmVycm9yKDQwNCkKICAgICAgICAgICAg
IHJldHVybgotICAgICAgICBzZWxmLl9hc3NpZ24ocXVldWVfbmFtZSwgcGF0Y2hfaWQpCiAgICAg
ICAgIHNlbGYucmVzcG9uc2Uub3V0LndyaXRlKHBhdGNoX2lkKQpJbmRleDogV2ViS2l0VG9vbHMv
UXVldWVTdGF0dXNTZXJ2ZXIvbW9kZWwvYWN0aXZld29ya2l0ZW1zLnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL21vZGVsL2FjdGl2ZXdvcmtpdGVtcy5weQko
cmV2aXNpb24gMCkKKysrIFdlYktpdFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL21vZGVsL2FjdGl2
ZXdvcmtpdGVtcy5weQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNSBAQAorIyBDb3B5cmlnaHQg
KEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
IyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKK2Zyb20gZ29vZ2xlLmFwcGVuZ2luZS5leHQgaW1wb3J0IGRiCisKK2Zyb20gbW9kZWwu
d29ya2l0ZW1zIGltcG9ydCBXb3JrSXRlbXMKKworCitjbGFzcyBBY3RpdmVXb3JrSXRlbXMoV29y
a0l0ZW1zKToKKyAgICBpdGVtX2RhdGVzID0gZGIuTGlzdFByb3BlcnR5KGZsb2F0KQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68151</attachid>
            <date>2010-09-20 16:03:56 -0700</date>
            <delta_ts>2010-09-20 16:59:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-46130-20100920160355.patch</filename>
            <type>text/plain</type>
            <size>6309</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDY3ODg0KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTAtMDktMjAgIEFkYW0gQmFydGggIDxhYmFy
dGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGUgY29tbWl0LWNsdXN0ZXIgYm90cyBzdGlsbCByYWNlIHRvIGxvY2sgcGF0Y2hf
aWRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjEz
MAorCisgICAgICAgIEl0IHR1cm5zIG91dCB3ZSBuZWVkIHRvIHVzZSBhIHRyYW5zYWN0aW9uIG9i
amVjdCB0byBtYWtlIHRoZQorICAgICAgICByZWFkL21vZGlmeS93cml0ZSBsb2NrIG9wZXJhdGlv
biBhdG9taWMuICBGcm9tIHJlYWRpbmcgdGhlIEFwcEVuZ2luZQorICAgICAgICBkb2N1bWVudGF0
aW9uLCBJIHRoaW5rIHRoaXMgcGF0Y2ggc2hvdWxkIGRvIHdoYXQgd2Ugd2FudC4gIEl0J3MgaGFy
ZCB0bworICAgICAgICB0ZXN0IGxvY2FsbHkgYmVjYXVzZSB0aGUgdGVzdCBpbnN0YW5jZSBpc24n
dCBkaXN0cmlidXRlZCBpbiB0aGUgc2FtZQorICAgICAgICB3YXkgdGhlIHByb2R1Y3Rpb24gaW5z
dGFuY2UgaXMuCisKKyAgICAgICAgKiBRdWV1ZVN0YXR1c1NlcnZlci9oYW5kbGVycy9uZXh0cGF0
Y2gucHk6CisgICAgICAgICogUXVldWVTdGF0dXNTZXJ2ZXIvbW9kZWwvYWN0aXZld29ya2l0ZW1z
LnB5OiBBZGRlZC4KKwogMjAxMC0wOS0yMCAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KSW5kZXg6IFdlYktpdFRvb2xzL1F1
ZXVlU3RhdHVzU2VydmVyL2hhbmRsZXJzL25leHRwYXRjaC5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXRUb29scy9RdWV1ZVN0YXR1c1NlcnZlci9oYW5kbGVycy9uZXh0cGF0Y2gucHkJKHJldmlzaW9u
IDY3ODcxKQorKysgV2ViS2l0VG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvaGFuZGxlcnMvbmV4dHBh
dGNoLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw5ICsyNiwxMSBAQAogIyAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
ICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KIAorZnJvbSBnb29nbGUuYXBwZW5naW5lLmV4dCBpbXBvcnQgZGIKIGZy
b20gZ29vZ2xlLmFwcGVuZ2luZS5leHQgaW1wb3J0IHdlYmFwcAogCiBmcm9tIG1vZGVsLndvcmtp
dGVtcyBpbXBvcnQgV29ya0l0ZW1zCitmcm9tIG1vZGVsLmFjdGl2ZXdvcmtpdGVtcyBpbXBvcnQg
QWN0aXZlV29ya0l0ZW1zCiBmcm9tIG1vZGVsIGltcG9ydCBxdWV1ZXN0YXR1cwogCiBmcm9tIGRh
dGV0aW1lIGltcG9ydCBkYXRldGltZSwgdGltZWRlbHRhCkBAIC0zOSwyNiArNDEsMjEgQEAgY2xh
c3MgTmV4dFBhdGNoKHdlYmFwcC5SZXF1ZXN0SGFuZGxlcik6CiAgICAgICAgIHdvcmtfaXRlbXMg
PSBXb3JrSXRlbXMuYWxsKCkuZmlsdGVyKCJxdWV1ZV9uYW1lID0iLCBxdWV1ZV9uYW1lKS5nZXQo
KQogICAgICAgICBpZiBub3Qgd29ya19pdGVtczoKICAgICAgICAgICAgIHJldHVybiBOb25lCi0g
ICAgICAgIG9uZV9ob3VyX2FnbyA9IGRhdGV0aW1lLm5vdygpIC0gdGltZWRlbHRhKG1pbnV0ZXM9
NjApCi0gICAgICAgIHN0YXR1c2VzID0gcXVldWVzdGF0dXMuUXVldWVTdGF0dXMuYWxsKCkuZmls
dGVyKCJxdWV1ZV9uYW1lID0iLCBxdWV1ZV9uYW1lKS5maWx0ZXIoImRhdGUgPiIsIG9uZV9ob3Vy
X2FnbykuZmV0Y2goMTUpCi0gICAgICAgIGFjdGl2ZV9wYXRjaF9pZHMgPSBzZXQoW3N0YXR1cy5h
Y3RpdmVfcGF0Y2hfaWQgZm9yIHN0YXR1cyBpbiBzdGF0dXNlc10pCi0gICAgICAgIGZvciBpdGVt
X2lkIGluIHdvcmtfaXRlbXMuaXRlbV9pZHM6Ci0gICAgICAgICAgICBpZiBpdGVtX2lkIG5vdCBp
biBhY3RpdmVfcGF0Y2hfaWRzOgotICAgICAgICAgICAgICAgIHJldHVybiBpdGVtX2lkCi0gICAg
ICAgICMgRWl0aGVyIHRoZXJlIHdlcmUgbm8gd29yayBpdGVtcywgb3IgdGhleSdyZSBhbGwgYWN0
aXZlLgotICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgZGVmIF9hc3NpZ24oc2VsZiwgcXVldWVf
bmFtZSwgcGF0Y2hfaWQpOgotICAgICAgICBxdWV1ZV9zdGF0dXMgPSBxdWV1ZXN0YXR1cy5RdWV1
ZVN0YXR1cygpCi0gICAgICAgIHF1ZXVlX3N0YXR1cy5xdWV1ZV9uYW1lID0gcXVldWVfbmFtZQot
ICAgICAgICBxdWV1ZV9zdGF0dXMuYWN0aXZlX3BhdGNoX2lkID0gcGF0Y2hfaWQKLSAgICAgICAg
cXVldWVfc3RhdHVzLm1lc3NhZ2UgPSAiQXNzaWduZWQgZm9yIHByb2Nlc3NpbmciCi0gICAgICAg
IHF1ZXVlX3N0YXR1cy5wdXQoKQorICAgICAgICBhY3RpdmVfd29ya19pdGVtcyA9IEFjdGl2ZVdv
cmtJdGVtcy5nZXRfb3JfaW5zZXJ0KGtleV9uYW1lPXF1ZXVlX25hbWUsIHF1ZXVlX25hbWU9cXVl
dWVfbmFtZSkKKyAgICAgICAgcmV0dXJuIGRiLnJ1bl9pbl90cmFuc2FjdGlvbihzZWxmLl9hc3Np
Z25fcGF0Y2gsIGFjdGl2ZV93b3JrX2l0ZW1zLmtleSgpLCB3b3JrX2l0ZW1zLml0ZW1faWRzKQog
CiAgICAgZGVmIGdldChzZWxmLCBxdWV1ZV9uYW1lKToKICAgICAgICAgcGF0Y2hfaWQgPSBzZWxm
Ll9nZXRfbmV4dF9wYXRjaF9pZChxdWV1ZV9uYW1lKQogICAgICAgICBpZiBub3QgcGF0Y2hfaWQ6
CiAgICAgICAgICAgICBzZWxmLmVycm9yKDQwNCkKICAgICAgICAgICAgIHJldHVybgotICAgICAg
ICBzZWxmLl9hc3NpZ24ocXVldWVfbmFtZSwgcGF0Y2hfaWQpCiAgICAgICAgIHNlbGYucmVzcG9u
c2Uub3V0LndyaXRlKHBhdGNoX2lkKQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBfYXNz
aWduX3BhdGNoKGtleSwgd29ya19pdGVtX2lkcyk6CisgICAgICAgIG5vdyA9IGRhdGV0aW1lLm5v
dygpCisgICAgICAgIGFjdGl2ZV93b3JrX2l0ZW1zID0gZGIuZ2V0KGtleSkKKyAgICAgICAgYWN0
aXZlX3dvcmtfaXRlbXMuZGVhY3RpdmF0ZV9leHBpcmVkKG5vdykKKyAgICAgICAgbmV4dF9pdGVt
ID0gYWN0aXZlX3dvcmtfaXRlbXMubmV4dF9pdGVtKHdvcmtfaXRlbV9pZHMsIG5vdykKKyAgICAg
ICAgYWN0aXZlX3dvcmtfaXRlbXMucHV0KCkKKyAgICAgICAgcmV0dXJuIG5leHRfaXRlbQpJbmRl
eDogV2ViS2l0VG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvbW9kZWwvYWN0aXZld29ya2l0ZW1zLnB5
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL21vZGVsL2FjdGl2
ZXdvcmtpdGVtcy5weQkocmV2aXNpb24gMCkKKysrIFdlYktpdFRvb2xzL1F1ZXVlU3RhdHVzU2Vy
dmVyL21vZGVsL2FjdGl2ZXdvcmtpdGVtcy5weQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1OCBA
QAorIyBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlv
bi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisj
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
IyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKK2Zyb20gZ29vZ2xlLmFwcGVuZ2luZS5leHQgaW1wb3J0IGRi
CisKK2Zyb20gZGF0ZXRpbWUgaW1wb3J0IHRpbWVkZWx0YQoraW1wb3J0IHRpbWUKKworCitjbGFz
cyBBY3RpdmVXb3JrSXRlbXMoZGIuTW9kZWwpOgorICAgIHF1ZXVlX25hbWUgPSBkYi5TdHJpbmdQ
cm9wZXJ0eSgpCisgICAgaXRlbV9pZHMgPSBkYi5MaXN0UHJvcGVydHkoaW50KQorICAgIGl0ZW1f
ZGF0ZXMgPSBkYi5MaXN0UHJvcGVydHkoZmxvYXQpCisgICAgZGF0ZSA9IGRiLkRhdGVUaW1lUHJv
cGVydHkoYXV0b19ub3dfYWRkPVRydWUpCisKKyAgICBkZWYgZGVhY3RpdmF0ZV9leHBpcmVkKHNl
bGYsIG5vdyk6CisgICAgICAgIG9uZV9ob3VyX2FnbyA9IHRpbWUubWt0aW1lKChub3cgLSB0aW1l
ZGVsdGEobWludXRlcz02MCkpLnRpbWV0dXBsZSgpKQorICAgICAgICBub25leHBpcmVkX2l0ZW1f
aWRzID0gW10KKyAgICAgICAgbm9uZXhwaXJlZF9pdGVtX2RhdGVzID0gW10KKyAgICAgICAgZm9y
IGkgaW4gcmFuZ2UobGVuKHNlbGYuaXRlbV9pZHMpKToKKyAgICAgICAgICAgIGlmIHNlbGYuaXRl
bV9kYXRlc1tpXSA+IG9uZV9ob3VyX2FnbzoKKyAgICAgICAgICAgICAgICBub25leHBpcmVkX2l0
ZW1faWRzLmFwcGVuZChzZWxmLml0ZW1faWRzW2ldKQorICAgICAgICAgICAgICAgIG5vbmV4cGly
ZWRfaXRlbV9kYXRlcy5hcHBlbmQoc2VsZi5pdGVtX2RhdGVzW2ldKQorICAgICAgICBzZWxmLml0
ZW1faWRzID0gbm9uZXhwaXJlZF9pdGVtX2lkcworICAgICAgICBzZWxmLml0ZW1fZGF0ZXMgPSBu
b25leHBpcmVkX2l0ZW1fZGF0ZXMKKworICAgIGRlZiBuZXh0X2l0ZW0oc2VsZiwgd29ya19pdGVt
X2lkcywgbm93KToKKyAgICAgICAgZm9yIGl0ZW1faWQgaW4gd29ya19pdGVtX2lkczoKKyAgICAg
ICAgICAgIGlmIGl0ZW1faWQgbm90IGluIHNlbGYuaXRlbV9pZHM6CisgICAgICAgICAgICAgICAg
c2VsZi5pdGVtX2lkcy5hcHBlbmQoaXRlbV9pZCkKKyAgICAgICAgICAgICAgICBzZWxmLml0ZW1f
ZGF0ZXMuYXBwZW5kKHRpbWUubWt0aW1lKG5vdy50aW1ldHVwbGUoKSkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGl0ZW1faWQKKyAgICAgICAgcmV0dXJuIE5vbmUK
</data>

          </attachment>
      

    </bug>

</bugzilla>