<?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>62518</bug_id>
          
          <creation_ts>2011-06-12 15:03:48 -0700</creation_ts>
          <short_desc>If an Event Listener is a Function, It Should be Called and Not Checked for handleEvent</short_desc>
          <delta_ts>2011-11-21 18:59:24 -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>WebCore JavaScript</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>0</everconfirmed>
          <reporter name="Rob Brackett">rob</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>dino</cc>
    
    <cc>dominicc</cc>
    
    <cc>ggaren</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>419340</commentid>
    <comment_count>0</comment_count>
      <attachid>96892</attachid>
    <who name="Rob Brackett">rob</who>
    <bug_when>2011-06-12 15:03:48 -0700</bug_when>
    <thetext>Created attachment 96892
Layout Test for Event Listener Functions that Implement the EventListener Interface

When the listener passed to addEventListener() is a function, it should be called when the event occurs. The listener function should not be tested for adherence to the EventListener interface and have its handleEvent() method called if present.

The DOM Level 2 Events spec does not address this issue (in the ECMAScript interface, it only allows functions as listeners). The DOM Level 3 Events spec, though not yet a working draft, appears to indicate that the above described behavior is correct, though it is not extraordinarily clear. It says,

“The listener parameter must be either an object that implements the EventListener interface, or a function. If listener is a function then it must be used as the callback for the event; otherwise, if listener implements EventTarget, then its handleEvent method must be used as the callback.” (see the spec at http://www.w3.org/TR/2011/WD-DOM-Level-3-Events-20110531/#events-EventTarget-addEventListener)

In any case, all other major browsers (Firefox, Opera, and even Chrome) implement it this way, so standard WebKit with JavaScriptCore should probably strive for parity here.

As a note, I think the current behavior is much nicer than this, but interoperability is probably more important.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>419341</commentid>
    <comment_count>1</comment_count>
      <attachid>96893</attachid>
    <who name="Rob Brackett">rob</who>
    <bug_when>2011-06-12 15:06:22 -0700</bug_when>
    <thetext>Created attachment 96893
Patch for Event Listener Functions that Implement the EventListener Interface

Adding a patch for this issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>419343</commentid>
    <comment_count>2</comment_count>
    <who name="Rob Brackett">rob</who>
    <bug_when>2011-06-12 15:25:32 -0700</bug_when>
    <thetext>For some context, this issue was found while using Chrome to test some JS that had only previously been run in Safari. 

A JS &quot;class&quot; (which is actually a function) had handleEvent() implemented as a &quot;class method&quot; (a property on the function itself instead of its prototype) that would auto-construct instances of the class based on data found in the DOM. This worked great in Safari, but as soon as the code was run in any other browser, the constructor function would run instead of handleEvent()!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>419372</commentid>
    <comment_count>3</comment_count>
      <attachid>96893</attachid>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2011-06-12 18:29:36 -0700</bug_when>
    <thetext>Comment on attachment 96893
Patch for Event Listener Functions that Implement the EventListener Interface

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

While I am not a reviewer, it would be nice if this patch included a ChangeLog and a layout test.

I think the layout test in a previous attachment could be much more succinct if it briefly (one sentence) described what it was testing and used the JS test framework many other layout tests use.

&gt; Source/WebCore/bindings/js/JSEventListener.cpp:100
&gt; +    CallType callType = jsFunction-&gt;getCallData(callData);

Is it safe to use this getCallData here, c.f. the two-argument helper in the original? I think that the checks are slightly different.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>419446</commentid>
    <comment_count>4</comment_count>
      <attachid>96923</attachid>
    <who name="Rob Brackett">rob</who>
    <bug_when>2011-06-12 23:27:34 -0700</bug_when>
    <thetext>Created attachment 96923
[PATCH] Improved Fix for this Issue

Adding an improved patch.

I&apos;ve switched to using the two-argument getCallData() helper in the change. The previous style seemed to be safe (it looks like all objects implement getCallData and jsFunction is guaranteed to be an object), but this certainly seems more foolproof.

For the layout test, I&apos;ve removed a lot of the descriptive text that is specific to this bug but not necessarily to the test itself. I&apos;ve also pulled all the setup and helpers out into separate files. Hopefully between these two, that should make the test more succinct and understandable.

The layout test doesn&apos;t behave exactly the same as the other DOM tests; I don&apos;t know what the right conventions are here since the &quot;framework&quot; appears to differ drastically across the various layout tests. Additionally, I was unsure whether I should use the selfhtml.js since that seems to be part of the official W3C tests, which this test is not. (As a side note, is this the right place for this test?)

I&apos;ve also added a changelog. I haven&apos;t ever submitted a patch to WebKit before, so hopefully the formatting is correct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>419450</commentid>
    <comment_count>5</comment_count>
      <attachid>96926</attachid>
    <who name="Rob Brackett">rob</who>
    <bug_when>2011-06-12 23:45:17 -0700</bug_when>
    <thetext>Created attachment 96926
[PATCH] Improved Patch Following Conventions

I apologize for the churn. I read through the contributing guide and used the appropriate scripts to prepare the patch, so hopefully this should be more correct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>419455</commentid>
    <comment_count>6</comment_count>
      <attachid>96926</attachid>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2011-06-13 00:02:51 -0700</bug_when>
    <thetext>Comment on attachment 96926
[PATCH] Improved Patch Following Conventions

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

Again, I am not a reviewer and you will need to find a review for this. However here are some personal opinions about your patch.

&gt; Source/WebCore/ChangeLog:5
&gt; +        If an Event Listener is a Function, It Should be Called and Not Checked for handleEvent

Don&apos;t use title case here.

&gt; Source/WebCore/ChangeLog:8
&gt; +        If an event listener added via addEventListener() is a function, that 

You can probably delete this since it doesn&apos;t add much that isn&apos;t in line 5.

&gt; LayoutTests/ChangeLog:12
&gt; +        * dom/html/level3: Added.

I believe the tests under dom/html/level* are the W3C&apos;s published test suites. So you probably don&apos;t want to put this here. What about something under fast/events?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420094</commentid>
    <comment_count>7</comment_count>
      <attachid>96926</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-06-13 17:29:11 -0700</bug_when>
    <thetext>Comment on attachment 96926
[PATCH] Improved Patch Following Conventions

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

I think we should probably audit all the other places where we handle the &quot;handleEvent&quot; case and ensure that we are being consistent.

&gt;&gt; LayoutTests/ChangeLog:12
&gt;&gt; +        * dom/html/level3: Added.
&gt; 
&gt; I believe the tests under dom/html/level* are the W3C&apos;s published test suites. So you probably don&apos;t want to put this here. What about something under fast/events?

Dominic is right, you should create a new test under fast/events.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501691</commentid>
    <comment_count>8</comment_count>
      <attachid>114894</attachid>
    <who name="Rob Brackett">rob</who>
    <bug_when>2011-11-14 00:11:39 -0800</bug_when>
    <thetext>Created attachment 114894
Patch with tests in fast/ and that addresses JSCallbacks

This patch moves the test to fast/events. It also simplifies the test further. I&apos;ve also looked through the codebase to find any other uses of handleEvent. The only one seems to be in JSCallbackData, so I have included changes for that as well (and a test in fast/js).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507138</commentid>
    <comment_count>9</comment_count>
    <who name="Rob Brackett">rob</who>
    <bug_when>2011-11-21 12:45:28 -0800</bug_when>
    <thetext>This patch has been sitting for a week. Is anybody interested in reviewing it? Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507356</commentid>
    <comment_count>10</comment_count>
      <attachid>114894</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-21 18:59:18 -0800</bug_when>
    <thetext>Comment on attachment 114894
Patch with tests in fast/ and that addresses JSCallbacks

Clearing flags on attachment: 114894

Committed r100974: &lt;http://trac.webkit.org/changeset/100974&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507357</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-21 18:59:24 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96892</attachid>
            <date>2011-06-12 15:03:48 -0700</date>
            <delta_ts>2011-06-12 23:27:34 -0700</delta_ts>
            <desc>Layout Test for Event Listener Functions that Implement the EventListener Interface</desc>
            <filename>event-listener-function-test.patch</filename>
            <type>text/plain</type>
            <size>4499</size>
            <attacher name="Rob Brackett">rob</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMy9ldmVudHMvZXZlbnQtbGlzdGVuZXIt
ZnVuY3Rpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2RvbS9odG1s
L2xldmVsMy9ldmVudHMvZXZlbnQtbGlzdGVuZXItZnVuY3Rpb24tZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwzL2V2ZW50cy9ldmVudC1saXN0
ZW5lci1mdW5jdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEgQEAKK1BB
U1M6IFRoZSBsaXN0ZW5lciBmdW5jdGlvbiBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCB0byBoYW5k
bGUgdGhlIGxvYWQgZXZlbnQuCkluZGV4OiBMYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDMvZXZl
bnRzL2V2ZW50LWxpc3RlbmVyLWZ1bmN0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZG9tL2h0bWwvbGV2ZWwzL2V2ZW50cy9ldmVudC1saXN0ZW5lci1mdW5jdGlvbi5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwzL2V2ZW50cy9ldmVudC1s
aXN0ZW5lci1mdW5jdGlvbi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDk3IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorICA8aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCIg
Lz4KKyAgICA8dGl0bGU+RnVuY3Rpb25zIEltcGxlbWVudGluZyBFdmVudExpc3RlbmVyPC90aXRs
ZT4KKyAgICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJzY3JlZW4iPgorICAgICAgYm9k
eSB7CisgICAgICAgIGZvbnQtZmFtaWx5OiBoZWx2ZXRpY2EsIGFyaWFsLCBzYW5zLXNlcmY7Cisg
ICAgICB9CisgICAgICAjcmVzdWx0cyB7CisgICAgICAgIHBhZGRpbmc6IDAuNWVtOworICAgICAg
ICBjb2xvcjogI2ZmZjsKKyAgICAgIH0KKyAgICAgICNwYXNzX2ZhaWwgeworICAgICAgICBmb250
LXdlaWdodDogYm9sZDsKKyAgICAgIH0KKyAgICAgIC5QQVNTIHsKKyAgICAgICAgYmFja2dyb3Vu
ZDogIzA5MDsKKyAgICAgIH0KKyAgICAgIC5GQUlMIHsKKyAgICAgICAgYmFja2dyb3VuZDogI2Mw
MDsKKyAgICAgIH0KKyAgICA8L3N0eWxlPgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0IiBjaGFyc2V0PSJ1dGYtOCI+CisgICAgICAKKyAgICAgIC8qIC0tLS0tLS0tLSBURVNUIFVU
SUxJVElFUyAtLS0tLS0tLS0tLS0tICovCisgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7CisgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwor
ICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgIH0K
KyAgICAgIAorICAgICAgdmFyIGZpbmlzaFRlc3QgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgICAvLyBSZW1vdmUgdGhl
IHByZXR0eSBzdHVmZiBzbyBpdCBkb2Vzbid0IGdldCBpbmNsdWRlZCBpbiB0aGUgb3V0cHV0Cisg
ICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiaW50cm9kdWN0aW9uIikpOworICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlm
eURvbmUoKTsKKyAgICAgICAgfQorICAgICAgfTsKKyAgICAgIAorICAgICAgdmFyIG91dHB1dCA9
IGZ1bmN0aW9uIChwYXNzLCBtZXNzYWdlKSB7CisgICAgICAgIHZhciBwYXNzU3RyaW5nID0gcGFz
cyA/ICJQQVNTIiA6ICJGQUlMIjsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJl
c3VsdHMiKS5jbGFzc05hbWUgPSBwYXNzU3RyaW5nOworICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgicGFzc19mYWlsIikudGV4dENvbnRlbnQgPSBwYXNzU3RyaW5nICsgIjoiOworICAg
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibWVzc2FnZSIpLnRleHRDb250ZW50ID0gbWVz
c2FnZTsKKyAgICAgICAgCisgICAgICAgIGlmICghd2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7CisgICAgICAgICAgbWVzc2FnZSA9IHBhc3NTdHJpbmcgKyAiOiAiICsgbWVzc2FnZTsKKyAg
ICAgICAgICBjb25zb2xlW3Bhc3MgPyAibG9nIiA6ICJlcnJvciJdKG1lc3NhZ2UpOworICAgICAg
ICB9CisgICAgICB9OworICAgIAorICAgIAorICAgICAgLyogLS0tLS0tLS0tIFRIRSBBQ1RVQUwg
VEVTVCAtLS0tLS0tLS0tLS0tICovCisgICAgICB2YXIgbGlzdGVuZXIgPSBmdW5jdGlvbihldmVu
dCkgeworICAgICAgICBvdXRwdXQodHJ1ZSwgIlRoZSBsaXN0ZW5lciBmdW5jdGlvbiBzaG91bGQg
aGF2ZSBiZWVuIGNhbGxlZCB0byBoYW5kbGUgdGhlIGxvYWQgZXZlbnQuIik7CisgICAgICAgIGZp
bmlzaFRlc3QoKTsKKyAgICAgIH07CisgICAgICAKKyAgICAgIGxpc3RlbmVyLmhhbmRsZUV2ZW50
ID0gZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgICAgIG91dHB1dChmYWxzZSwgIlRoZSBsaXN0ZW5l
ciBmdW5jdGlvbiBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCB0byBoYW5kbGUgdGhlIGxvYWQgZXZl
bnQuIEluc3RlYWQsIGhhbmRsZUV2ZW50KCkgd2FzIGNhbGxlZC4iKTsKKyAgICAgICAgZmluaXNo
VGVzdCgpOworICAgICAgfTsKKyAgICAgIAorICAgICAgLy8gYW5kIGhlcmUgd2UgZ28hCisgICAg
ICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGxpc3RlbmVyLCBmYWxzZSk7CisgICAg
ICAKKyAgICA8L3NjcmlwdD4KKyAgPC9oZWFkPgorICA8Ym9keT4KKyAgICAKKyAgICA8ZGl2IGlk
PSJpbnRyb2R1Y3Rpb24iPgorICAgICAgPGgxPkV2ZW50IExpc3RlbmVyIEZ1bmN0aW9ucyBTaG91
bGQgYmUgQ2FsbGVkIERpcmVjdGx5PC9oMT4KKyAgICAgIDxwPgorICAgICAgICBXaGVuIHRoZSBs
aXN0ZW5lciBwYXNzZWQgdG8gPGNvZGU+YWRkRXZlbnRMaXN0ZW5lcigpPC9jb2RlPiBpcyBhIGZ1
bmN0aW9uLCBpdCBzaG91bGQgYmUgY2FsbGVkIHdoZW4gdGhlIGV2ZW50IG9jY3Vycy4KKyAgICAg
ICAgVGhlIGxpc3RlbmVyIGZ1bmN0aW9uIHNob3VsZCA8ZW0+bm90PC9lbT4gYmUgdGVzdGVkIGZv
ciBhZGhlcmVuY2UgdG8gdGhlIDxjb2RlPkV2ZW50TGlzdGVuZXI8L2NvZGU+IGludGVyZmFjZSBh
bmQgaGF2ZSBpdHMgPGNvZGU+aGFuZGxlRXZlbnQoKTwvY29kZT4gbWV0aG9kIGNhbGxlZCBpZiBw
cmVzZW50LgorICAgICAgPC9wPgorICAgICAgPHA+CisgICAgICAgIFRoZSBET00gTGV2ZWwgMiBF
dmVudHMgc3BlYyBkb2VzIG5vdCBhZGRyZXNzIHRoaXMgaXNzdWUgKGluIHRoZSBFQ01BU2NyaXB0
IGludGVyZmFjZSwgaXQgb25seSBhbGxvd3MgZnVuY3Rpb25zIGFzIGxpc3RlbmVycykuIAorICAg
ICAgICBUaGUgRE9NIExldmVsIDMgRXZlbnRzIHNwZWMsIGhvd2V2ZXIsIGFwcGVhcnMgdG8gaW5k
aWNhdGUgdGhhdCB0aGUgYWJvdmUgZGVzY3JpYmVkIGJlaGF2aW9yIGlzIGNvcnJlY3QsIHRob3Vn
aCBpdCBpcyBub3QgZXh0cmFvcmRpbmFyaWx5IGNsZWFyLiBJdCBzYXlzLCAKKyAgICAgIDwvcD4K
KyAgICAgIDxibG9ja3F1b3RlPgorICAgICAgICDigJxUaGUgbGlzdGVuZXIgcGFyYW1ldGVyIG11
c3QgYmUgZWl0aGVyIGFuIG9iamVjdCB0aGF0IGltcGxlbWVudHMgdGhlIEV2ZW50TGlzdGVuZXIg
aW50ZXJmYWNlLCBvciBhIGZ1bmN0aW9uLiAKKyAgICAgICAgSWYgbGlzdGVuZXIgaXMgYSBmdW5j
dGlvbiB0aGVuIGl0IG11c3QgYmUgdXNlZCBhcyB0aGUgY2FsbGJhY2sgZm9yIHRoZSBldmVudDsg
b3RoZXJ3aXNlLCBpZiBsaXN0ZW5lciBpbXBsZW1lbnRzIAorICAgICAgICBFdmVudFRhcmdldCwg
dGhlbiBpdHMgaGFuZGxlRXZlbnQgbWV0aG9kIG11c3QgYmUgdXNlZCBhcyB0aGUgY2FsbGJhY2su
4oCdIDxjaXRlPjxhIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSLzIwMTEvV0QtRE9NLUxldmVs
LTMtRXZlbnRzLTIwMTEwNTMxLyNldmVudHMtRXZlbnRUYXJnZXQtYWRkRXZlbnRMaXN0ZW5lciI+
RE9NIExldmVsIDMgRXZlbnRzPC9hPjwvY2l0ZT4KKyAgICAgIDwvYmxvY2txdW90ZT4KKyAgICAg
IDxwPgorICAgICAgICBJbiBhbnkgY2FzZSwgYWxsIG90aGVyIG1ham9yIGJyb3dzZXJzIGltcGxl
bWVudCBpdCB0aGlzIHdheSAoRmlyZWZveCwgQ2hyb21lLCBPcGVyYSksIHNvIFNhZmFyaSBzaG91
bGQgcHJvYmFibHkgc3RyaXZlIGZvciBwYXJpdHkgaGVyZS4KKyAgICAgIDwvcD4KKyAgICA8L2Rp
dj4KKyAgICAKKyAgICA8ZGl2IGlkPSJyZXN1bHRzIj4KKyAgICAgIDxzcGFuIGlkPSJwYXNzX2Zh
aWwiPjwvc3Bhbj4KKyAgICAgIDxzcGFuIGlkPSJtZXNzYWdlIj48L3NwYW4+CisgICAgPC9kaXY+
CisgIAorICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96893</attachid>
            <date>2011-06-12 15:06:22 -0700</date>
            <delta_ts>2011-06-12 23:27:34 -0700</delta_ts>
            <desc>Patch for Event Listener Functions that Implement the EventListener Interface</desc>
            <filename>event-listener-function.patch</filename>
            <type>text/plain</type>
            <size>2473</size>
            <attacher name="Rob Brackett">rob</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNw
cAkocmV2aXNpb24gODg2MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50
TGlzdGVuZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NCwxMyArOTQsMTQgQEAKICAgICB9CiAK
ICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKLSAgICBK
U1ZhbHVlIGhhbmRsZUV2ZW50RnVuY3Rpb24gPSBqc0Z1bmN0aW9uLT5nZXQoZXhlYywgSWRlbnRp
ZmllcihleGVjLCAiaGFuZGxlRXZlbnQiKSk7Ci0KKyAgICBKU1ZhbHVlIGhhbmRsZUV2ZW50RnVu
Y3Rpb24gPSBqc0Z1bmN0aW9uOworICAgIAogICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENh
bGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoaGFuZGxlRXZlbnRGdW5jdGlvbiwgY2FsbERh
dGEpOworICAgIENhbGxUeXBlIGNhbGxUeXBlID0ganNGdW5jdGlvbi0+Z2V0Q2FsbERhdGEoY2Fs
bERhdGEpOworICAgIC8vIElmIGpzRnVuY3Rpb24gaXMgbm90IGFjdHVhbGx5IGEgZnVuY3Rpb24s
IHNlZSBpZiBpdCBpbXBsZW1lbnRzIHRoZSBFdmVudExpc3RlbmVyIGludGVyZmFjZSBhbmQgdXNl
IHRoYXQKICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKSB7Ci0gICAgICAgIGhhbmRs
ZUV2ZW50RnVuY3Rpb24gPSBKU1ZhbHVlKCk7Ci0gICAgICAgIGNhbGxUeXBlID0ganNGdW5jdGlv
bi0+Z2V0Q2FsbERhdGEoY2FsbERhdGEpOworICAgICAgICBoYW5kbGVFdmVudEZ1bmN0aW9uID0g
anNGdW5jdGlvbi0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgImhhbmRsZUV2ZW50IikpOwor
ICAgICAgICBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGhhbmRsZUV2ZW50RnVuY3Rpb24sIGNhbGxE
YXRhKTsKICAgICB9CiAKICAgICBpZiAoY2FsbFR5cGUgIT0gQ2FsbFR5cGVOb25lKSB7CkBAIC0x
MTYsMTcgKzExNywxMCBAQAogICAgICAgICBEeW5hbWljR2xvYmFsT2JqZWN0U2NvcGUgZ2xvYmFs
T2JqZWN0U2NvcGUoZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS5keW5hbWljR2xvYmFsT2JqZWN0ID8g
Z2xvYmFsRGF0YS5keW5hbWljR2xvYmFsT2JqZWN0IDogZ2xvYmFsT2JqZWN0KTsKIAogICAgICAg
ICBnbG9iYWxEYXRhLnRpbWVvdXRDaGVja2VyLnN0YXJ0KCk7Ci0gICAgICAgIEpTVmFsdWUgcmV0
dmFsOwotICAgICAgICBpZiAoaGFuZGxlRXZlbnRGdW5jdGlvbikgewotICAgICAgICAgICAgcmV0
dmFsID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNEb2N1bWVudCgpCi0gICAgICAgICAgICAg
ICAgPyBKU01haW5UaHJlYWRFeGVjU3RhdGU6OmNhbGwoZXhlYywgaGFuZGxlRXZlbnRGdW5jdGlv
biwgY2FsbFR5cGUsIGNhbGxEYXRhLCBqc0Z1bmN0aW9uLCBhcmdzKQotICAgICAgICAgICAgICAg
IDogSlNDOjpjYWxsKGV4ZWMsIGhhbmRsZUV2ZW50RnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0
YSwganNGdW5jdGlvbiwgYXJncyk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBKU1Zh
bHVlIGN1cnJlbnRUYXJnZXQgPSB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgZXZlbnQtPmN1cnJl
bnRUYXJnZXQoKSk7Ci0gICAgICAgICAgICByZXR2YWwgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0
LT5pc0RvY3VtZW50KCkKLSAgICAgICAgICAgICAgICA/IEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6
Y2FsbChleGVjLCBqc0Z1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIGN1cnJlbnRUYXJnZXQs
IGFyZ3MpCi0gICAgICAgICAgICAgICAgOiBKU0M6OmNhbGwoZXhlYywganNGdW5jdGlvbiwgY2Fs
bFR5cGUsIGNhbGxEYXRhLCBjdXJyZW50VGFyZ2V0LCBhcmdzKTsKLSAgICAgICAgfQorICAgICAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGhhbmRsZUV2ZW50RnVuY3Rpb24gPT0ganNGdW5jdGlvbiA/
IHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBldmVudC0+Y3VycmVudFRhcmdldCgpKSA6IGpzRnVu
Y3Rpb247CisgICAgICAgIEpTVmFsdWUgcmV0dmFsID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+
aXNEb2N1bWVudCgpCisgICAgICAgICAgICA/IEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6Y2FsbChl
eGVjLCBoYW5kbGVFdmVudEZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXNWYWx1ZSwg
YXJncykKKyAgICAgICAgICAgIDogSlNDOjpjYWxsKGV4ZWMsIGhhbmRsZUV2ZW50RnVuY3Rpb24s
IGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmdzKTsKICAgICAgICAgZ2xvYmFsRGF0
YS50aW1lb3V0Q2hlY2tlci5zdG9wKCk7CiAKICAgICAgICAgZ2xvYmFsT2JqZWN0LT5zZXRDdXJy
ZW50RXZlbnQoc2F2ZWRFdmVudCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96923</attachid>
            <date>2011-06-12 23:27:34 -0700</date>
            <delta_ts>2011-06-12 23:45:17 -0700</delta_ts>
            <desc>[PATCH] Improved Fix for this Issue</desc>
            <filename>event-listener-function-improved.patch</filename>
            <type>text/plain</type>
            <size>9179</size>
            <attacher name="Rob Brackett">rob</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg4NjE3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTEtMDYtMTIgIFJvYiBCcmFj
a2V0dCAgPHJvYkByb2JicmFja2V0dC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgW25vYm9k
eSB5ZXRdLgorCisgICAgICAgIElmIGFuIEV2ZW50IExpc3RlbmVyIGlzIGEgRnVuY3Rpb24sIEl0
IFNob3VsZCBiZSBDYWxsZWQgYW5kIE5vdCBDaGVja2VkIGZvciBoYW5kbGVFdmVudAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjI1MTgKKworICAgICAg
ICBBZGRlZCBhIGRpcmVjdG9yeSBmb3IgRE9NIExldmVsIDMgRXZlbnQgdGVzdHMgdG8gZ28gYWxv
bmcgd2l0aCB0aGUgY2hhbmdlLgorCisgICAgICAgICogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNFdmVudExpc3RlbmVyLmNwcAorICAgICAgICAoV2ViQ29yZTo6SlNFdmVudExpc3RlbmVy
OjpoYW5kbGVFdmVudCk6IENoZWNrIHdoZXRoZXIgdGhlIGxpc3RlbmVyIGlzIGEgZnVuY3Rpb24g
YmVmb3JlIGxvb2tpbmcgZm9yIGEgImhhbmRsZUV2ZW50IiBtZXRob2Qgb24gaXQKKyAgICAgICAg
KiBMYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDMKKyAgICAgICAgKiBMYXlvdXRUZXN0cy9kb20v
aHRtbC9sZXZlbDMvZXZlbnRzCisgICAgICAgICogTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwz
L2V2ZW50cy9yZXNvdXJjZXMKKyAgICAgICAgKiBMYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDMv
ZXZlbnRzL2V2ZW50LWxpc3RlbmVyLWZ1bmN0aW9uLWV4cGVjdGVkLnR4dAorICAgICAgICAqIExh
eW91dFRlc3RzL2RvbS9odG1sL2xldmVsMy9ldmVudHMvZXZlbnQtbGlzdGVuZXItZnVuY3Rpb24u
aHRtbAorICAgICAgICAqIExheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMy9ldmVudHMvcmVzb3Vy
Y2VzCisgICAgICAgICogTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwzL2V2ZW50cy9yZXNvdXJj
ZXMvbGF5b3V0LXRlc3QuY3NzCisgICAgICAgICogTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwz
L2V2ZW50cy9yZXNvdXJjZXMvbGF5b3V0LXRlc3QuanMKKwogMjAxMS0wNi0xMiAgRGFuIEJlcm5z
dGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVy
LgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIu
Y3BwCShyZXZpc2lvbiA4ODYxNykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZl
bnRMaXN0ZW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk0LDEzICs5NCwxNCBAQAogICAgIH0K
IAogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwotICAg
IEpTVmFsdWUgaGFuZGxlRXZlbnRGdW5jdGlvbiA9IGpzRnVuY3Rpb24tPmdldChleGVjLCBJZGVu
dGlmaWVyKGV4ZWMsICJoYW5kbGVFdmVudCIpKTsKLQorICAgIEpTVmFsdWUgaGFuZGxlRXZlbnRG
dW5jdGlvbiA9IGpzRnVuY3Rpb247CisgICAgCiAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAg
Q2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShoYW5kbGVFdmVudEZ1bmN0aW9uLCBjYWxs
RGF0YSk7CisgICAgLy8gSWYganNGdW5jdGlvbiBpcyBub3QgYWN0dWFsbHkgYSBmdW5jdGlvbiwg
c2VlIGlmIGl0IGltcGxlbWVudHMgdGhlIEV2ZW50TGlzdGVuZXIgaW50ZXJmYWNlIGFuZCB1c2Ug
dGhhdAogICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpIHsKLSAgICAgICAgaGFuZGxl
RXZlbnRGdW5jdGlvbiA9IEpTVmFsdWUoKTsKLSAgICAgICAgY2FsbFR5cGUgPSBqc0Z1bmN0aW9u
LT5nZXRDYWxsRGF0YShjYWxsRGF0YSk7CisgICAgICAgIGhhbmRsZUV2ZW50RnVuY3Rpb24gPSBq
c0Z1bmN0aW9uLT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAiaGFuZGxlRXZlbnQiKSk7Cisg
ICAgICAgIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoaGFuZGxlRXZlbnRGdW5jdGlvbiwgY2FsbERh
dGEpOwogICAgIH0KIAogICAgIGlmIChjYWxsVHlwZSAhPSBDYWxsVHlwZU5vbmUpIHsKQEAgLTEx
NiwxNyArMTE3LDEwIEBACiAgICAgICAgIER5bmFtaWNHbG9iYWxPYmplY3RTY29wZSBnbG9iYWxP
YmplY3RTY29wZShnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLmR5bmFtaWNHbG9iYWxPYmplY3QgPyBn
bG9iYWxEYXRhLmR5bmFtaWNHbG9iYWxPYmplY3QgOiBnbG9iYWxPYmplY3QpOwogCiAgICAgICAg
IGdsb2JhbERhdGEudGltZW91dENoZWNrZXIuc3RhcnQoKTsKLSAgICAgICAgSlNWYWx1ZSByZXR2
YWw7Ci0gICAgICAgIGlmIChoYW5kbGVFdmVudEZ1bmN0aW9uKSB7Ci0gICAgICAgICAgICByZXR2
YWwgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0RvY3VtZW50KCkKLSAgICAgICAgICAgICAg
ICA/IEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6Y2FsbChleGVjLCBoYW5kbGVFdmVudEZ1bmN0aW9u
LCBjYWxsVHlwZSwgY2FsbERhdGEsIGpzRnVuY3Rpb24sIGFyZ3MpCi0gICAgICAgICAgICAgICAg
OiBKU0M6OmNhbGwoZXhlYywgaGFuZGxlRXZlbnRGdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRh
LCBqc0Z1bmN0aW9uLCBhcmdzKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIEpTVmFs
dWUgY3VycmVudFRhcmdldCA9IHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBldmVudC0+Y3VycmVu
dFRhcmdldCgpKTsKLSAgICAgICAgICAgIHJldHZhbCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQt
PmlzRG9jdW1lbnQoKQotICAgICAgICAgICAgICAgID8gSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpj
YWxsKGV4ZWMsIGpzRnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgY3VycmVudFRhcmdldCwg
YXJncykKLSAgICAgICAgICAgICAgICA6IEpTQzo6Y2FsbChleGVjLCBqc0Z1bmN0aW9uLCBjYWxs
VHlwZSwgY2FsbERhdGEsIGN1cnJlbnRUYXJnZXQsIGFyZ3MpOwotICAgICAgICB9CisgICAgICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gaGFuZGxlRXZlbnRGdW5jdGlvbiA9PSBqc0Z1bmN0aW9uID8g
dG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIGV2ZW50LT5jdXJyZW50VGFyZ2V0KCkpIDoganNGdW5j
dGlvbjsKKyAgICAgICAgSlNWYWx1ZSByZXR2YWwgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5p
c0RvY3VtZW50KCkKKyAgICAgICAgICAgID8gSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpjYWxsKGV4
ZWMsIGhhbmRsZUV2ZW50RnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBh
cmdzKQorICAgICAgICAgICAgOiBKU0M6OmNhbGwoZXhlYywgaGFuZGxlRXZlbnRGdW5jdGlvbiwg
Y2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzVmFsdWUsIGFyZ3MpOwogICAgICAgICBnbG9iYWxEYXRh
LnRpbWVvdXRDaGVja2VyLnN0b3AoKTsKIAogICAgICAgICBnbG9iYWxPYmplY3QtPnNldEN1cnJl
bnRFdmVudChzYXZlZEV2ZW50KTsKSW5kZXg6IExheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMy9l
dmVudHMvZXZlbnQtbGlzdGVuZXItZnVuY3Rpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMy9ldmVudHMvZXZlbnQtbGlzdGVuZXItZnVuY3Rp
b24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2
ZWwzL2V2ZW50cy9ldmVudC1saXN0ZW5lci1mdW5jdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEgQEAKK1BBU1M6IFRoZSBsaXN0ZW5lciBmdW5jdGlvbiBzaG91bGQgaGF2
ZSBiZWVuIGNhbGxlZCB0byBoYW5kbGUgdGhlIGV2ZW50LgpJbmRleDogTGF5b3V0VGVzdHMvZG9t
L2h0bWwvbGV2ZWwzL2V2ZW50cy9ldmVudC1saXN0ZW5lci1mdW5jdGlvbi5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMy9ldmVudHMvZXZlbnQtbGlzdGVuZXIt
ZnVuY3Rpb24uaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2RvbS9odG1sL2xldmVs
My9ldmVudHMvZXZlbnQtbGlzdGVuZXItZnVuY3Rpb24uaHRtbAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw0MiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgPGhlYWQ+CisgICAgPG1ldGEg
Y2hhcnNldD0idXRmLTgiIC8+CisgICAgPHRpdGxlPkZ1bmN0aW9ucyBJbXBsZW1lbnRpbmcgRXZl
bnRMaXN0ZW5lcjwvdGl0bGU+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNv
dXJjZXMvbGF5b3V0LXRlc3QuY3NzIiB0eXBlPSJ0ZXh0L2NzcyIgLz4KKyAgICA8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL2xheW91dC10ZXN0LmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJz
ZXQ9InV0Zi04Ij48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIg
Y2hhcnNldD0idXRmLTgiPgorICAgICAgCisgICAgICB2YXIgcnVuVGVzdCA9IGZ1bmN0aW9uKCkg
eworICAgICAgICAvLyBUaGlzIGZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQuCisgICAgICAgIHZh
ciBsaXN0ZW5lciA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgICAgbGlzdGVuZXIuY2FsbGVk
ID0gdHJ1ZTsKKyAgICAgICAgfTsKKyAgICAgICAgLy8gVGhpcyBmdW5jdGlvbiBzaG91bGQgbm90
IGJlIGNhbGxlZC4KKyAgICAgICAgbGlzdGVuZXIuaGFuZGxlRXZlbnQgPSBmdW5jdGlvbihldmVu
dCkgeworICAgICAgICAgIGxpc3RlbmVyLmNhbGxlZCA9IGZhbHNlOworICAgICAgICB9OworICAg
ICAgICAKKyAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInRlc3RldmVudCIsIGxpc3Rl
bmVyLCBmYWxzZSk7CisgICAgICAgIHZhciBldmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCJF
dmVudCIpOworICAgICAgICBldmVudC5pbml0RXZlbnQoInRlc3RldmVudCIsIHRydWUsIHRydWUp
OworICAgICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldmVudCk7CisgICAgICAgIAorICAgICAg
ICBhc3NlcnQoIlRoZSBsaXN0ZW5lciBmdW5jdGlvbiBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCB0
byBoYW5kbGUgdGhlIGV2ZW50LiIsIGxpc3RlbmVyLmNhbGxlZCk7CisgICAgICB9OworICAgICAg
CisgICAgPC9zY3JpcHQ+CisgIDwvaGVhZD4KKyAgPGJvZHkgb25sb2FkPSJzdGFydFRlc3QoKTsi
PgorICAgIAorICAgIDxkaXYgY2xhc3M9Imh1bWFuZS1pbmZvIj4KKyAgICAgIDxoMT5FdmVudCBM
aXN0ZW5lciBGdW5jdGlvbnMgU2hvdWxkIGJlIENhbGxlZCBEaXJlY3RseTwvaDE+CisgICAgICA8
cD4KKyAgICAgICAgV2hlbiB0aGUgbGlzdGVuZXIgcGFzc2VkIHRvIDxjb2RlPmFkZEV2ZW50TGlz
dGVuZXIoKTwvY29kZT4gaXMgYSBmdW5jdGlvbiwgaXQgc2hvdWxkIGJlIGNhbGxlZCB3aGVuIHRo
ZSBldmVudCBvY2N1cnMuCisgICAgICAgIFRoZSBsaXN0ZW5lciBmdW5jdGlvbiBzaG91bGQgPGVt
Pm5vdDwvZW0+IGJlIHRlc3RlZCBmb3IgYWRoZXJlbmNlIHRvIHRoZSA8Y29kZT5FdmVudExpc3Rl
bmVyPC9jb2RlPiBpbnRlcmZhY2UgCisgICAgICAgIGFuZCBoYXZlIGl0cyA8Y29kZT5oYW5kbGVF
dmVudCgpPC9jb2RlPiBtZXRob2QgY2FsbGVkIGlmIHByZXNlbnQuCisgICAgICA8L3A+CisgICAg
PC9kaXY+CisgIAorICA8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9kb20vaHRt
bC9sZXZlbDMvZXZlbnRzL3Jlc291cmNlcy9sYXlvdXQtdGVzdC5jc3MKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwzL2V2ZW50cy9yZXNvdXJjZXMvbGF5b3V0LXRlc3Qu
Y3NzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwzL2V2ZW50cy9y
ZXNvdXJjZXMvbGF5b3V0LXRlc3QuY3NzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI3IEBACiti
b2R5IHsKKyAgZm9udC1mYW1pbHk6IGhlbHZldGljYSwgYXJpYWwsIHNhbnMtc2VyZjsKK30KKwor
I3Jlc3VsdHMgeworICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7CisgIG1hcmdpbjogMDsKKyAgcGFk
ZGluZzogMDsKKyAgY29sb3I6ICNmZmY7Cit9CisKKyAgLnJlc3VsdCB7CisgICAgbWFyZ2luOiAw
IDAgMXB4OworICAgIHBhZGRpbmc6IDAuNWVtOworICB9CisgIAorICAuUEFTUyB7CisgICAgYmFj
a2dyb3VuZDogIzA5MDsKKyAgfQorICAKKyAgLkZBSUwgeworICAgIGJhY2tncm91bmQ6ICNjMDA7
CisgIH0KKyAgICAKKyAgICAuc3RhdHVzIHsKKyAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOworICAg
IH0KSW5kZXg6IExheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMy9ldmVudHMvcmVzb3VyY2VzL2xh
eW91dC10ZXN0LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMy9l
dmVudHMvcmVzb3VyY2VzL2xheW91dC10ZXN0LmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZG9tL2h0bWwvbGV2ZWwzL2V2ZW50cy9yZXNvdXJjZXMvbGF5b3V0LXRlc3QuanMJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNzYgQEAKK3ZhciBzaG91bGREZWZlclRlc3RDb21wbGV0aW9uID0g
ZmFsc2U7Cit2YXIgcmVzdWx0c0xpc3Q7CisKK3ZhciBzdGFydFRlc3QgPSBmdW5jdGlvbigpIHsK
KyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
d2FpdFVudGlsRG9uZSgpOworICAgIH0KKyAgICAKKyAgICBzZXRVcFBhZ2UoKTsKKyAgICAKKyAg
ICB0cnkgeworICAgICAgICBydW5UZXN0KCk7CisgICAgfQorICAgIGNhdGNoIChleCkgeworICAg
ICAgICBhc3NlcnQoIlRoZSB0ZXN0IGZhaWxlZCB0byBydW4gc3VjY2Vzc2Z1bGx5LiIsIGZhbHNl
KTsKKyAgICB9CisgICAgCisgICAgaWYgKCFzaG91bGREZWZlclRlc3RDb21wbGV0aW9uKSB7Cisg
ICAgICAgIGVuZFRlc3QoKTsKKyAgICB9Cit9OworCit2YXIgZW5kVGVzdCA9IGZ1bmN0aW9uKCkg
eworICAgIGNsZWFuVXBQYWdlKCk7CisgICAgCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgeworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cisg
ICAgfQorfTsKKworLy8gT3ZlcnJpZGUgdGhpcyBmb3IgY3VzdG9tIHBhZ2Ugc2V0dXAuCit2YXIg
c2V0VXBQYWdlID0gZnVuY3Rpb24oKSB7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgeworICAgICAgICAvLyBJZiBydW5uaW5nIGFzIGEgbGF5b3V0IHRlc3QsIHJlbW92ZSB0
ZXh0IGZvciBodW1hbnMKKyAgICAgICAgdmFyIGh1bWFuZUluZm8gPSBkb2N1bWVudC5xdWVyeVNl
bGVjdG9yQWxsKCIuaHVtYW5lLWluZm8iKTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBo
dW1hbmVJbmZvLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBodW1hbmVJbmZvW2ldLnBhcmVu
dE5vZGUucmVtb3ZlQ2hpbGQoaHVtYW5lSW5mb1tpXSk7CisgICAgICAgIH0KKyAgICB9CisgICAg
CisgICAgcmVzdWx0c0xpc3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvbCIpOworICAgIHJl
c3VsdHNMaXN0LmlkID0gInJlc3VsdHMiOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQo
cmVzdWx0c0xpc3QpOworfTsKKworLy8gT3ZlcnJpZGUgdGhpcyBmb3IgY3VzdG9tIHBhZ2UgY2xl
YW51cC4KK3ZhciBjbGVhblVwUGFnZSA9IGZ1bmN0aW9uKCkge307CisKKworLyogLS0tLS0tLS0t
LS0tLS0tLS0gSEVMUEVSIEZVTkNUSU9OUyAtLS0tLS0tLS0tLS0tLS0tLSAqLworCit2YXIgYXNz
ZXJ0ID0gZnVuY3Rpb24oZGVzY3JpcHRpb24sIGFjdHVhbCkgeworICAgIHZhciBwYXNzU3RyaW5n
ID0gYWN0dWFsID8gIlBBU1MiIDogIkZBSUwiOworICAgIAorICAgIC8vIERyYXcgdGhlIG91dHB1
dCBvbiBzY3JlZW4KKyAgICBpZiAocmVzdWx0c0xpc3QpIHsKKyAgICAgICAgdmFyIG91dHB1dE5v
ZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpOworICAgICAgICBvdXRwdXROb2RlLmNs
YXNzTmFtZSA9ICJyZXN1bHQgIiArIHBhc3NTdHJpbmc7CisgICAgICAgIHZhciBzdGF0dXNOb2Rl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAgICAgICBzdGF0dXNOb2RlLmNs
YXNzTmFtZSA9ICJzdGF0dXMiOworICAgICAgICBzdGF0dXNOb2RlLnRleHRDb250ZW50ID0gcGFz
c1N0cmluZyArICI6ICI7CisgICAgICAgIHZhciBtZXNzYWdlTm9kZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoInNwYW4iKTsKKyAgICAgICAgbWVzc2FnZU5vZGUuY2xhc3NOYW1lID0gIm1lc3Nh
Z2UiOworICAgICAgICBtZXNzYWdlTm9kZS50ZXh0Q29udGVudCA9IGRlc2NyaXB0aW9uOworICAg
ICAgICBvdXRwdXROb2RlLmFwcGVuZENoaWxkKHN0YXR1c05vZGUpOworICAgICAgICBvdXRwdXRO
b2RlLmFwcGVuZENoaWxkKG1lc3NhZ2VOb2RlKTsKKyAgICAgICAgcmVzdWx0c0xpc3QuYXBwZW5k
Q2hpbGQob3V0cHV0Tm9kZSk7CisgICAgfQorICAgIAorICAgIC8vIElmIG5vdCBydW5uaW5nIGFz
IGEgbGF5b3V0IHRlc3QsIG91dHB1dCB0byB0aGUgY29uc29sZQorICAgIGlmICghd2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGNvbnNvbGVbYWN0dWFsID8gImxvZyIgOiAi
ZXJyb3IiXShwYXNzU3RyaW5nICsgIjogIiArIGRlc2NyaXB0aW9uKTsKKyAgICB9CisgICAgCit9
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96926</attachid>
            <date>2011-06-12 23:45:17 -0700</date>
            <delta_ts>2011-11-14 00:11:39 -0800</delta_ts>
            <desc>[PATCH] Improved Patch Following Conventions</desc>
            <filename>event-listener-function-improved.patch</filename>
            <type>text/plain</type>
            <size>10339</size>
            <attacher name="Rob Brackett">rob</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg4NjI5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDYtMTIgIFJvYiBCcmFj
a2V0dCAgPHJvYkByb2JicmFja2V0dC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSWYgYW4gRXZlbnQgTGlzdGVuZXIgaXMgYSBGdW5jdGlvbiwg
SXQgU2hvdWxkIGJlIENhbGxlZCBhbmQgTm90IENoZWNrZWQgZm9yIGhhbmRsZUV2ZW50CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MjUxOAorCisgICAg
ICAgIElmIGFuIGV2ZW50IGxpc3RlbmVyIGFkZGVkIHZpYSBhZGRFdmVudExpc3RlbmVyKCkgaXMg
YSBmdW5jdGlvbiwgdGhhdCAKKyAgICAgICAgZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCB0byBo
YW5kbGUgdGhlIGV2ZW50LiBFdmVuIGlmIGl0IGltcGxlbWVudHMgCisgICAgICAgIGhhbmRsZUV2
ZW50KCksIHRoYXQgbWV0aG9kIHNob3VsZCBub3QgYmUgY2FsbGVkLgorCisgICAgICAgIFRlc3Q6
IGRvbS9odG1sL2xldmVsMy9ldmVudHMvZXZlbnQtbGlzdGVuZXItZnVuY3Rpb24uaHRtbAorCisg
ICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQpOiBDaGVjayB3aGV0aGVyIHRoZSBsaXN0
ZW5lciBpcyBhIGZ1bmN0aW9uIGJlZm9yZSBsb29raW5nIGZvciBhICJoYW5kbGVFdmVudCIgbWV0
aG9kIG9uIGl0CisKIDIwMTEtMDYtMTIgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAJKHJldmlzaW9uIDg4NjE3KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTQsMTMgKzk0LDE0IEBAIHZvaWQgSlNFdmVudExpc3RlbmVyOjpoYW5kbGVF
dmVudChTY3JpcHQKICAgICB9CiAKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBnbG9iYWxPYmplY3Qt
Pmdsb2JhbEV4ZWMoKTsKLSAgICBKU1ZhbHVlIGhhbmRsZUV2ZW50RnVuY3Rpb24gPSBqc0Z1bmN0
aW9uLT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAiaGFuZGxlRXZlbnQiKSk7Ci0KKyAgICBK
U1ZhbHVlIGhhbmRsZUV2ZW50RnVuY3Rpb24gPSBqc0Z1bmN0aW9uOworICAgIAogICAgIENhbGxE
YXRhIGNhbGxEYXRhOwogICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoaGFuZGxl
RXZlbnRGdW5jdGlvbiwgY2FsbERhdGEpOworICAgIC8vIElmIGpzRnVuY3Rpb24gaXMgbm90IGFj
dHVhbGx5IGEgZnVuY3Rpb24sIHNlZSBpZiBpdCBpbXBsZW1lbnRzIHRoZSBFdmVudExpc3RlbmVy
IGludGVyZmFjZSBhbmQgdXNlIHRoYXQKICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25l
KSB7Ci0gICAgICAgIGhhbmRsZUV2ZW50RnVuY3Rpb24gPSBKU1ZhbHVlKCk7Ci0gICAgICAgIGNh
bGxUeXBlID0ganNGdW5jdGlvbi0+Z2V0Q2FsbERhdGEoY2FsbERhdGEpOworICAgICAgICBoYW5k
bGVFdmVudEZ1bmN0aW9uID0ganNGdW5jdGlvbi0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywg
ImhhbmRsZUV2ZW50IikpOworICAgICAgICBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGhhbmRsZUV2
ZW50RnVuY3Rpb24sIGNhbGxEYXRhKTsKICAgICB9CiAKICAgICBpZiAoY2FsbFR5cGUgIT0gQ2Fs
bFR5cGVOb25lKSB7CkBAIC0xMTYsMTcgKzExNywxMCBAQCB2b2lkIEpTRXZlbnRMaXN0ZW5lcjo6
aGFuZGxlRXZlbnQoU2NyaXB0CiAgICAgICAgIER5bmFtaWNHbG9iYWxPYmplY3RTY29wZSBnbG9i
YWxPYmplY3RTY29wZShnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLmR5bmFtaWNHbG9iYWxPYmplY3Qg
PyBnbG9iYWxEYXRhLmR5bmFtaWNHbG9iYWxPYmplY3QgOiBnbG9iYWxPYmplY3QpOwogCiAgICAg
ICAgIGdsb2JhbERhdGEudGltZW91dENoZWNrZXIuc3RhcnQoKTsKLSAgICAgICAgSlNWYWx1ZSBy
ZXR2YWw7Ci0gICAgICAgIGlmIChoYW5kbGVFdmVudEZ1bmN0aW9uKSB7Ci0gICAgICAgICAgICBy
ZXR2YWwgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0RvY3VtZW50KCkKLSAgICAgICAgICAg
ICAgICA/IEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6Y2FsbChleGVjLCBoYW5kbGVFdmVudEZ1bmN0
aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIGpzRnVuY3Rpb24sIGFyZ3MpCi0gICAgICAgICAgICAg
ICAgOiBKU0M6OmNhbGwoZXhlYywgaGFuZGxlRXZlbnRGdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxE
YXRhLCBqc0Z1bmN0aW9uLCBhcmdzKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIEpT
VmFsdWUgY3VycmVudFRhcmdldCA9IHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBldmVudC0+Y3Vy
cmVudFRhcmdldCgpKTsKLSAgICAgICAgICAgIHJldHZhbCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQtPmlzRG9jdW1lbnQoKQotICAgICAgICAgICAgICAgID8gSlNNYWluVGhyZWFkRXhlY1N0YXRl
OjpjYWxsKGV4ZWMsIGpzRnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgY3VycmVudFRhcmdl
dCwgYXJncykKLSAgICAgICAgICAgICAgICA6IEpTQzo6Y2FsbChleGVjLCBqc0Z1bmN0aW9uLCBj
YWxsVHlwZSwgY2FsbERhdGEsIGN1cnJlbnRUYXJnZXQsIGFyZ3MpOwotICAgICAgICB9CisgICAg
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gaGFuZGxlRXZlbnRGdW5jdGlvbiA9PSBqc0Z1bmN0aW9u
ID8gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIGV2ZW50LT5jdXJyZW50VGFyZ2V0KCkpIDoganNG
dW5jdGlvbjsKKyAgICAgICAgSlNWYWx1ZSByZXR2YWwgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0
LT5pc0RvY3VtZW50KCkKKyAgICAgICAgICAgID8gSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpjYWxs
KGV4ZWMsIGhhbmRsZUV2ZW50RnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVl
LCBhcmdzKQorICAgICAgICAgICAgOiBKU0M6OmNhbGwoZXhlYywgaGFuZGxlRXZlbnRGdW5jdGlv
biwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzVmFsdWUsIGFyZ3MpOwogICAgICAgICBnbG9iYWxE
YXRhLnRpbWVvdXRDaGVja2VyLnN0b3AoKTsKIAogICAgICAgICBnbG9iYWxPYmplY3QtPnNldEN1
cnJlbnRFdmVudChzYXZlZEV2ZW50KTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDg4NjI5KQorKysgTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTEt
MDYtMTIgIFJvYiBCcmFja2V0dCAgPHJvYkByb2JicmFja2V0dC5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSWYgYW4gRXZlbnQgTGlzdGVuZXIg
aXMgYSBGdW5jdGlvbiwgSXQgU2hvdWxkIGJlIENhbGxlZCBhbmQgTm90IENoZWNrZWQgZm9yIGhh
bmRsZUV2ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02MjUxOAorCisgICAgICAgIElmIGFuIGV2ZW50IGxpc3RlbmVyIGFkZGVkIHZpYSBhZGRFdmVu
dExpc3RlbmVyKCkgaXMgYSBmdW5jdGlvbiwgdGhhdCAKKyAgICAgICAgZnVuY3Rpb24gc2hvdWxk
IGJlIGNhbGxlZCB0byBoYW5kbGUgdGhlIGV2ZW50LiBFdmVuIGlmIGl0IGltcGxlbWVudHMgCisg
ICAgICAgIGhhbmRsZUV2ZW50KCksIHRoYXQgbWV0aG9kIHNob3VsZCBub3QgYmUgY2FsbGVkLgor
CisgICAgICAgICogZG9tL2h0bWwvbGV2ZWwzOiBBZGRlZC4KKyAgICAgICAgKiBkb20vaHRtbC9s
ZXZlbDMvZXZlbnRzOiBBZGRlZC4KKyAgICAgICAgKiBkb20vaHRtbC9sZXZlbDMvZXZlbnRzL2V2
ZW50LWxpc3RlbmVyLWZ1bmN0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZG9t
L2h0bWwvbGV2ZWwzL2V2ZW50cy9ldmVudC1saXN0ZW5lci1mdW5jdGlvbi5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBkb20vaHRtbC9sZXZlbDMvZXZlbnRzL3Jlc291cmNlczogQWRkZWQuCisgICAg
ICAgICogZG9tL2h0bWwvbGV2ZWwzL2V2ZW50cy9yZXNvdXJjZXMvbGF5b3V0LXRlc3QuY3NzOiBB
ZGRlZC4KKyAgICAgICAgKGJvZHkpOgorICAgICAgICAoI3Jlc3VsdHMpOgorICAgICAgICAoLnJl
c3VsdCk6CisgICAgICAgICguUEFTUyk6CisgICAgICAgICguRkFJTCk6CisgICAgICAgICguc3Rh
dHVzKToKKyAgICAgICAgKiBkb20vaHRtbC9sZXZlbDMvZXZlbnRzL3Jlc291cmNlcy9sYXlvdXQt
dGVzdC5qczogQWRkZWQuCisgICAgICAgIChzdGFydFRlc3QpOgorICAgICAgICAoZW5kVGVzdCk6
CisgICAgICAgIChzZXRVcFBhZ2UpOgorICAgICAgICAoY2xlYW5VcFBhZ2UpOgorICAgICAgICAo
YXNzZXJ0KToKKwogMjAxMS0wNi0xMiAgSGlyb25vcmkgQm9ubyAgPGhib25vQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBIYWppbWUgTW9yaXRhLgpJbmRleDogTGF5b3V0VGVz
dHMvZG9tL2h0bWwvbGV2ZWwzL2V2ZW50cy9ldmVudC1saXN0ZW5lci1mdW5jdGlvbi1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwzL2V2ZW50cy9l
dmVudC1saXN0ZW5lci1mdW5jdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9kb20vaHRtbC9sZXZlbDMvZXZlbnRzL2V2ZW50LWxpc3RlbmVyLWZ1bmN0aW9uLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAorUEFTUzogVGhlIGxpc3RlbmVy
IGZ1bmN0aW9uIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIHRvIGhhbmRsZSB0aGUgZXZlbnQuCklu
ZGV4OiBMYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDMvZXZlbnRzL2V2ZW50LWxpc3RlbmVyLWZ1
bmN0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwzL2V2
ZW50cy9ldmVudC1saXN0ZW5lci1mdW5jdGlvbi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZG9tL2h0bWwvbGV2ZWwzL2V2ZW50cy9ldmVudC1saXN0ZW5lci1mdW5jdGlvbi5odG1s
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
ICA8aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCIgLz4KKyAgICA8dGl0bGU+RnVuY3Rp
b25zIEltcGxlbWVudGluZyBFdmVudExpc3RlbmVyPC90aXRsZT4KKyAgICA8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9sYXlvdXQtdGVzdC5jc3MiIHR5cGU9InRleHQvY3Nz
IiAvPgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvbGF5b3V0LXRlc3QuanMiIHR5cGU9InRl
eHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgdHlw
ZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+CisgICAgICAKKyAgICAgIHZhciBy
dW5UZXN0ID0gZnVuY3Rpb24oKSB7CisgICAgICAgIC8vIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJl
IGNhbGxlZC4KKyAgICAgICAgdmFyIGxpc3RlbmVyID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAg
ICAgICBsaXN0ZW5lci5jYWxsZWQgPSB0cnVlOworICAgICAgICB9OworICAgICAgICAvLyBUaGlz
IGZ1bmN0aW9uIHNob3VsZCBub3QgYmUgY2FsbGVkLgorICAgICAgICBsaXN0ZW5lci5oYW5kbGVF
dmVudCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgICAgbGlzdGVuZXIuY2FsbGVkID0gZmFs
c2U7CisgICAgICAgIH07CisgICAgICAgIAorICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5l
cigidGVzdGV2ZW50IiwgbGlzdGVuZXIsIGZhbHNlKTsKKyAgICAgICAgdmFyIGV2ZW50ID0gZG9j
dW1lbnQuY3JlYXRlRXZlbnQoIkV2ZW50Iik7CisgICAgICAgIGV2ZW50LmluaXRFdmVudCgidGVz
dGV2ZW50IiwgdHJ1ZSwgdHJ1ZSk7CisgICAgICAgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KGV2ZW50
KTsKKyAgICAgICAgCisgICAgICAgIGFzc2VydCgiVGhlIGxpc3RlbmVyIGZ1bmN0aW9uIHNob3Vs
ZCBoYXZlIGJlZW4gY2FsbGVkIHRvIGhhbmRsZSB0aGUgZXZlbnQuIiwgbGlzdGVuZXIuY2FsbGVk
KTsKKyAgICAgIH07CisgICAgICAKKyAgICA8L3NjcmlwdD4KKyAgPC9oZWFkPgorICA8Ym9keSBv
bmxvYWQ9InN0YXJ0VGVzdCgpOyI+CisgICAgCisgICAgPGRpdiBjbGFzcz0iaHVtYW5lLWluZm8i
PgorICAgICAgPGgxPkV2ZW50IExpc3RlbmVyIEZ1bmN0aW9ucyBTaG91bGQgYmUgQ2FsbGVkIERp
cmVjdGx5PC9oMT4KKyAgICAgIDxwPgorICAgICAgICBXaGVuIHRoZSBsaXN0ZW5lciBwYXNzZWQg
dG8gPGNvZGU+YWRkRXZlbnRMaXN0ZW5lcigpPC9jb2RlPiBpcyBhIGZ1bmN0aW9uLCBpdCBzaG91
bGQgYmUgY2FsbGVkIHdoZW4gdGhlIGV2ZW50IG9jY3Vycy4KKyAgICAgICAgVGhlIGxpc3RlbmVy
IGZ1bmN0aW9uIHNob3VsZCA8ZW0+bm90PC9lbT4gYmUgdGVzdGVkIGZvciBhZGhlcmVuY2UgdG8g
dGhlIDxjb2RlPkV2ZW50TGlzdGVuZXI8L2NvZGU+IGludGVyZmFjZSAKKyAgICAgICAgYW5kIGhh
dmUgaXRzIDxjb2RlPmhhbmRsZUV2ZW50KCk8L2NvZGU+IG1ldGhvZCBjYWxsZWQgaWYgcHJlc2Vu
dC4KKyAgICAgIDwvcD4KKyAgICA8L2Rpdj4KKyAgCisgIDwvYm9keT4KKzwvaHRtbD4KSW5kZXg6
IExheW91dFRlc3RzL2RvbS9odG1sL2xldmVsMy9ldmVudHMvcmVzb3VyY2VzL2xheW91dC10ZXN0
LmNzcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDMvZXZlbnRzL3Jl
c291cmNlcy9sYXlvdXQtdGVzdC5jc3MJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9kb20v
aHRtbC9sZXZlbDMvZXZlbnRzL3Jlc291cmNlcy9sYXlvdXQtdGVzdC5jc3MJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMjcgQEAKK2JvZHkgeworICBmb250LWZhbWlseTogaGVsdmV0aWNhLCBhcmlh
bCwgc2Fucy1zZXJmOworfQorCisjcmVzdWx0cyB7CisgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTsK
KyAgbWFyZ2luOiAwOworICBwYWRkaW5nOiAwOworICBjb2xvcjogI2ZmZjsKK30KKworICAucmVz
dWx0IHsKKyAgICBtYXJnaW46IDAgMCAxcHg7CisgICAgcGFkZGluZzogMC41ZW07CisgIH0KKyAg
CisgIC5QQVNTIHsKKyAgICBiYWNrZ3JvdW5kOiAjMDkwOworICB9CisgIAorICAuRkFJTCB7Cisg
ICAgYmFja2dyb3VuZDogI2MwMDsKKyAgfQorICAgIAorICAgIC5zdGF0dXMgeworICAgICAgZm9u
dC13ZWlnaHQ6IGJvbGQ7CisgICAgfQpJbmRleDogTGF5b3V0VGVzdHMvZG9tL2h0bWwvbGV2ZWwz
L2V2ZW50cy9yZXNvdXJjZXMvbGF5b3V0LXRlc3QuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZG9tL2h0bWwvbGV2ZWwzL2V2ZW50cy9yZXNvdXJjZXMvbGF5b3V0LXRlc3QuanMJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9kb20vaHRtbC9sZXZlbDMvZXZlbnRzL3Jlc291cmNlcy9s
YXlvdXQtdGVzdC5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NiBAQAordmFyIHNob3VsZERl
ZmVyVGVzdENvbXBsZXRpb24gPSBmYWxzZTsKK3ZhciByZXN1bHRzTGlzdDsKKwordmFyIHN0YXJ0
VGVzdCA9IGZ1bmN0aW9uKCkgeworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgfQorICAgIAorICAgIHNl
dFVwUGFnZSgpOworICAgIAorICAgIHRyeSB7CisgICAgICAgIHJ1blRlc3QoKTsKKyAgICB9Cisg
ICAgY2F0Y2ggKGV4KSB7CisgICAgICAgIGFzc2VydCgiVGhlIHRlc3QgZmFpbGVkIHRvIHJ1biBz
dWNjZXNzZnVsbHkuIiwgZmFsc2UpOworICAgIH0KKyAgICAKKyAgICBpZiAoIXNob3VsZERlZmVy
VGVzdENvbXBsZXRpb24pIHsKKyAgICAgICAgZW5kVGVzdCgpOworICAgIH0KK307CisKK3ZhciBl
bmRUZXN0ID0gZnVuY3Rpb24oKSB7CisgICAgY2xlYW5VcFBhZ2UoKTsKKyAgICAKKyAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLm5vdGlmeURvbmUoKTsKKyAgICB9Cit9OworCisvLyBPdmVycmlkZSB0aGlzIGZvciBjdXN0
b20gcGFnZSBzZXR1cC4KK3ZhciBzZXRVcFBhZ2UgPSBmdW5jdGlvbigpIHsKKyAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIC8vIElmIHJ1bm5pbmcgYXMgYSBs
YXlvdXQgdGVzdCwgcmVtb3ZlIHRleHQgZm9yIGh1bWFucworICAgICAgICB2YXIgaHVtYW5lSW5m
byA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5odW1hbmUtaW5mbyIpOworICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IGh1bWFuZUluZm8ubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAg
IGh1bWFuZUluZm9baV0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChodW1hbmVJbmZvW2ldKTsKKyAg
ICAgICAgfQorICAgIH0KKyAgICAKKyAgICByZXN1bHRzTGlzdCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoIm9sIik7CisgICAgcmVzdWx0c0xpc3QuaWQgPSAicmVzdWx0cyI7CisgICAgZG9jdW1l
bnQuYm9keS5hcHBlbmRDaGlsZChyZXN1bHRzTGlzdCk7Cit9OworCisvLyBPdmVycmlkZSB0aGlz
IGZvciBjdXN0b20gcGFnZSBjbGVhbnVwLgordmFyIGNsZWFuVXBQYWdlID0gZnVuY3Rpb24oKSB7
fTsKKworCisvKiAtLS0tLS0tLS0tLS0tLS0tLSBIRUxQRVIgRlVOQ1RJT05TIC0tLS0tLS0tLS0t
LS0tLS0tICovCisKK3ZhciBhc3NlcnQgPSBmdW5jdGlvbihkZXNjcmlwdGlvbiwgYWN0dWFsKSB7
CisgICAgdmFyIHBhc3NTdHJpbmcgPSBhY3R1YWwgPyAiUEFTUyIgOiAiRkFJTCI7CisgICAgCisg
ICAgLy8gRHJhdyB0aGUgb3V0cHV0IG9uIHNjcmVlbgorICAgIGlmIChyZXN1bHRzTGlzdCkgewor
ICAgICAgICB2YXIgb3V0cHV0Tm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7Cisg
ICAgICAgIG91dHB1dE5vZGUuY2xhc3NOYW1lID0gInJlc3VsdCAiICsgcGFzc1N0cmluZzsKKyAg
ICAgICAgdmFyIHN0YXR1c05vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7Cisg
ICAgICAgIHN0YXR1c05vZGUuY2xhc3NOYW1lID0gInN0YXR1cyI7CisgICAgICAgIHN0YXR1c05v
ZGUudGV4dENvbnRlbnQgPSBwYXNzU3RyaW5nICsgIjogIjsKKyAgICAgICAgdmFyIG1lc3NhZ2VO
b2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAgICAgICBtZXNzYWdlTm9k
ZS5jbGFzc05hbWUgPSAibWVzc2FnZSI7CisgICAgICAgIG1lc3NhZ2VOb2RlLnRleHRDb250ZW50
ID0gZGVzY3JpcHRpb247CisgICAgICAgIG91dHB1dE5vZGUuYXBwZW5kQ2hpbGQoc3RhdHVzTm9k
ZSk7CisgICAgICAgIG91dHB1dE5vZGUuYXBwZW5kQ2hpbGQobWVzc2FnZU5vZGUpOworICAgICAg
ICByZXN1bHRzTGlzdC5hcHBlbmRDaGlsZChvdXRwdXROb2RlKTsKKyAgICB9CisgICAgCisgICAg
Ly8gSWYgbm90IHJ1bm5pbmcgYXMgYSBsYXlvdXQgdGVzdCwgb3V0cHV0IHRvIHRoZSBjb25zb2xl
CisgICAgaWYgKCF3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgY29uc29s
ZVthY3R1YWwgPyAibG9nIiA6ICJlcnJvciJdKHBhc3NTdHJpbmcgKyAiOiAiICsgZGVzY3JpcHRp
b24pOworICAgIH0KKyAgICAKK307Cg==
</data>
<flag name="review"
          id="90723"
          type_id="1"
          status="-"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114894</attachid>
            <date>2011-11-14 00:11:39 -0800</date>
            <delta_ts>2011-11-21 18:59:18 -0800</delta_ts>
            <desc>Patch with tests in fast/ and that addresses JSCallbacks</desc>
            <filename>62518.patch</filename>
            <type>text/plain</type>
            <size>10123</size>
            <attacher name="Rob Brackett">rob</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2Rpc3BhdGNoLXRvLWZ1bmN0aW9uLXdpdGgt
aGFuZGxlLWV2ZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
ZGlzcGF0Y2gtdG8tZnVuY3Rpb24td2l0aC1oYW5kbGUtZXZlbnQuaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2Rpc3BhdGNoLXRvLWZ1bmN0aW9uLXdpdGgtaGFu
ZGxlLWV2ZW50Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzYgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+CisgIDxoZWFkPgorICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04IiAvPgorICAg
IDx0aXRsZT5EaXNwYXRjaGluZyB0byBhIEZ1bmN0aW9uIE9iamVjdCBJbXBsZW1lbnRpbmcgaGFu
ZGxlRXZlbnQoKTwvdGl0bGU+CisgIDwvaGVhZD4KKyAgPGJvZHk+CisgICAgCisgICAgPHA+Cisg
ICAgICBXaGVuIHRoZSBsaXN0ZW5lciBwYXNzZWQgdG8gPGNvZGU+YWRkRXZlbnRMaXN0ZW5lcigp
PC9jb2RlPiBpcyBhIGZ1bmN0aW9uLCBpdCBzaG91bGQgYmUgY2FsbGVkIHdoZW4gdGhlIGV2ZW50
IG9jY3Vycy4KKyAgICAgIFRoZSBsaXN0ZW5lciBmdW5jdGlvbiBzaG91bGQgPGVtPm5vdDwvZW0+
IGJlIHRlc3RlZCBmb3IgYWRoZXJlbmNlIHRvIHRoZSA8Y29kZT5FdmVudExpc3RlbmVyPC9jb2Rl
PiBpbnRlcmZhY2UgCisgICAgICBhbmQgaGF2ZSBpdHMgPGNvZGU+aGFuZGxlRXZlbnQoKTwvY29k
ZT4gbWV0aG9kIGNhbGxlZCBpZiBwcmVzZW50LgorICAgIDwvcD4KKworICAgIDxwIGlkPSJjb25z
b2xlIj48L3A+CisgICAgCisgICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNo
YXJzZXQ9InV0Zi04Ij4KKyAgICAgIC8vIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZC4K
KyAgICAgIHZhciBsaXN0ZW5lciA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIHRlc3RQYXNz
ZWQoIlRoZSBsaXN0ZW5lciBmdW5jdGlvbiBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCB0byBoYW5k
bGUgdGhlIGV2ZW50LiIpOworICAgICAgfTsKKyAgICAgIC8vIFRoaXMgZnVuY3Rpb24gc2hvdWxk
IG5vdCBiZSBjYWxsZWQuCisgICAgICBsaXN0ZW5lci5oYW5kbGVFdmVudCA9IGZ1bmN0aW9uKGV2
ZW50KSB7CisgICAgICAgIHRlc3RGYWlsZWQoIlRoZSBsaXN0ZW5lciBmdW5jdGlvbiBzaG91bGQg
aGF2ZSBiZWVuIGNhbGxlZCB0byBoYW5kbGUgdGhlIGV2ZW50LiIpOworICAgICAgfTsKKyAgICAg
IAorICAgICAgLy8gU2VuZCB0aGUgdGVzdCBldmVudAorICAgICAgd2luZG93LmFkZEV2ZW50TGlz
dGVuZXIoInRlc3RldmVudCIsIGxpc3RlbmVyLCBmYWxzZSk7CisgICAgICB2YXIgZXZlbnQgPSBk
b2N1bWVudC5jcmVhdGVFdmVudCgiRXZlbnQiKTsKKyAgICAgIGV2ZW50LmluaXRFdmVudCgidGVz
dGV2ZW50IiwgdHJ1ZSwgdHJ1ZSk7CisgICAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldmVudCk7
CisgICAgPC9zY3JpcHQ+CisgIAorICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvZGlzcGF0Y2gtdG8tZnVu
Y3Rpb24td2l0aC1oYW5kbGUtZXZlbnQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL2Rpc3BhdGNoLXRvLWZ1bmN0aW9uLXdpdGgtaGFuZGxlLWV2ZW50
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2Rp
c3BhdGNoLXRvLWZ1bmN0aW9uLXdpdGgtaGFuZGxlLWV2ZW50LWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw0IEBACitXaGVuIHRoZSBsaXN0ZW5lciBwYXNzZWQgdG8gYWRkRXZl
bnRMaXN0ZW5lcigpIGlzIGEgZnVuY3Rpb24sIGl0IHNob3VsZCBiZSBjYWxsZWQgd2hlbiB0aGUg
ZXZlbnQgb2NjdXJzLiBUaGUgbGlzdGVuZXIgZnVuY3Rpb24gc2hvdWxkIG5vdCBiZSB0ZXN0ZWQg
Zm9yIGFkaGVyZW5jZSB0byB0aGUgRXZlbnRMaXN0ZW5lciBpbnRlcmZhY2UgYW5kIGhhdmUgaXRz
IGhhbmRsZUV2ZW50KCkgbWV0aG9kIGNhbGxlZCBpZiBwcmVzZW50LgorCitQQVNTIFRoZSBsaXN0
ZW5lciBmdW5jdGlvbiBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCB0byBoYW5kbGUgdGhlIGV2ZW50
LgorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL2NhbGxiYWNrLWZ1bmN0aW9uLXdpdGgtaGFu
ZGxlLWV2ZW50LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pz
L2NhbGxiYWNrLWZ1bmN0aW9uLXdpdGgtaGFuZGxlLWV2ZW50LWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvY2FsbGJhY2stZnVuY3Rpb24td2l0aC1oYW5k
bGUtZXZlbnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcgQEAKK1doZW4g
YSBKUyBjYWxsYmFjayBpcyBhIGZ1bmN0aW9uLCBpdCBzaG91bGQgYmUgY2FsbGVkLiBJZiB0aGUg
ZnVuY3Rpb24gaGFzIGFub3RoZXIgZnVuY3Rpb24gYXMgaXRzIGhhbmRsZUV2ZW50IHByb3BlcnR5
LCB0aGF0IGZ1bmN0aW9uIHNob3VsZCBub3QgYmUgY2FsbGVkLgorCitQQVNTIFRoZSBjYWxsYmFj
ayBmdW5jdGlvbiB3YXMgY2FsbGVkIGRpcmVjdGx5LgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvY2Fs
bGJhY2stZnVuY3Rpb24td2l0aC1oYW5kbGUtZXZlbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2pzL2NhbGxiYWNrLWZ1bmN0aW9uLXdpdGgtaGFuZGxlLWV2ZW50Lmh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL2NhbGxiYWNrLWZ1bmN0aW9uLXdp
dGgtaGFuZGxlLWV2ZW50Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzggQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+CisgIDxoZWFkPgorICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04IiAv
PgorICAgIDx0aXRsZT5DYWxsYmFjayBGdW5jdGlvbiBPYmplY3RzIEltcGxlbWVudGluZyBoYW5k
bGVFdmVudCgpPC90aXRsZT4KKyAgPC9oZWFkPgorICA8Ym9keT4KKyAgICAKKyAgICA8cD4KKyAg
ICAgIFdoZW4gYSBKUyBjYWxsYmFjayBpcyBhIGZ1bmN0aW9uLCBpdCBzaG91bGQgYmUgY2FsbGVk
LiBJZiB0aGUgZnVuY3Rpb24gaGFzIGFub3RoZXIgZnVuY3Rpb24gYXMgCisgICAgICBpdHMgPGNv
ZGU+aGFuZGxlRXZlbnQ8L2NvZGU+IHByb3BlcnR5LCB0aGF0IGZ1bmN0aW9uIHNob3VsZCA8ZW0+
bm90PC9lbT4gYmUgY2FsbGVkLgorICAgIDwvcD4KKworICAgIDxwIGlkPSJjb25zb2xlIj48L3A+
CisgICAgCisgICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4K
KyAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICAgIAorICAgICAgLy8gVGhp
cyBmdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkLgorICAgICAgdmFyIGNhbGxiYWNrID0gZnVuY3Rp
b24oZXZlbnQpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgiVGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHdh
cyBjYWxsZWQgZGlyZWN0bHkuIik7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgfTsK
KyAgICAgIC8vIFRoaXMgZnVuY3Rpb24gc2hvdWxkIG5vdCBiZSBjYWxsZWQuCisgICAgICBjYWxs
YmFjay5oYW5kbGVFdmVudCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIHRlc3RGYWlsZWQo
IlRoZSBjYWxsYmFjayBmdW5jdGlvbidzIGhhbmRsZUV2ZW50IHByb3BlcnR5IHdhcyBjYWxsZWQg
aW5zdGVhZCBvZiB0aGUgZnVuY3Rpb24gaXRzZWxmLiIpOworICAgICAgICBmaW5pc2hKU1Rlc3Qo
KTsKKyAgICAgIH07CisgICAgICAKKyAgICAgIC8vIERhdGFiYXNlIGlzIG9uZSBvZiBzZXZlcmFs
IHVzZXMgb2YgSlMgQ2FsbGJhY2tzCisgICAgICB2YXIgZGIgPSBvcGVuRGF0YWJhc2UoImNhbGxi
YWNrLWZ1bmN0aW9uLXdpdGgtaGFuZGxlLWV2ZW50LXRlc3QiLCAiIiwgIlRlc3QgZm9yIGNhbGxi
YWNrIGZ1bmN0aW9ucyB0aGF0IGltcGxlbWVudCBhIGhhbmRsZUV2ZW50KCkgbWV0aG9kLiIsIDEp
OworICAgICAgZGIuY2hhbmdlVmVyc2lvbihkYi52ZXJzaW9uLCAiMS4wIiwgY2FsbGJhY2spOwor
ICAgIDwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKyAgCisgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDAxMDEpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMS0xMS0xMyAgUm9iIEJyYWNr
ZXR0ICA8cm9iQHJvYmJyYWNrZXR0LmNvbT4KKworICAgICAgICBJZiBhbiBldmVudCBsaXN0ZW5l
ciBpcyBhIGZ1bmN0aW9uLCBpdCBzaG91bGQgYmUgY2FsbGVkIGFuZCBub3QgY2hlY2tlZCBmb3Ig
aGFuZGxlRXZlbnQuCisgICAgICAgIFRoaXMgYWxzbyBjb3ZlcnMgY2FsbGJhY2tzLCB3aGljaCBm
b2xsb3cgdGhlIHNhbWUgc3BlYyBidXQgYXJlIGltcGxlbWVudGVkIHNlcGFyYXRlbHkuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MjUxOAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9ldmVudHMv
ZGlzcGF0Y2gtdG8tZnVuY3Rpb24td2l0aC1oYW5kbGUtZXZlbnQtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9kaXNwYXRjaC10by1mdW5jdGlvbi13aXRoLWhhbmRs
ZS1ldmVudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL2NhbGxiYWNrLWZ1bmN0aW9u
LXdpdGgtaGFuZGxlLWV2ZW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9q
cy9jYWxsYmFjay1mdW5jdGlvbi13aXRoLWhhbmRsZS1ldmVudC5odG1sOiBBZGRlZC4KKwogMjAx
MS0xMS0xMyAgSnVsaWVuIENoYWZmcmFpeCAgPGpjaGFmZnJhaXhAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBSRUdSRVNTSU9OKDk5ODQ5KTogTlVMTC1kZXJlZiBpbiB1cGRhdGVMYXN0TWVkaWFMaW5l
IHdoZW4gcGFyc2luZyBzb21lIG1lZGlhLXF1ZXJpZXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9u
IDEwMDEwMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDE5IEBACisyMDExLTExLTEzICBSb2IgQnJhY2tldHQgIDxyb2JAcm9iYnJhY2tldHQu
Y29tPgorICAgICAgICAKKyAgICAgICAgSWYgYW4gZXZlbnQgbGlzdGVuZXIgaXMgYSBmdW5jdGlv
biwgaXQgc2hvdWxkIGJlIGNhbGxlZCBhbmQgbm90IGNoZWNrZWQgZm9yIGhhbmRsZUV2ZW50Lgor
ICAgICAgICBUaGlzIGFsc28gY292ZXJzIGNhbGxiYWNrcywgd2hpY2ggZm9sbG93IHRoZSBzYW1l
IHNwZWMgYnV0IGFyZSBpbXBsZW1lbnRlZCBzZXBhcmF0ZWx5LgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjI1MTgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0czogZmFzdC9ldmVudHMvZGlzcGF0Y2gt
dG8tZnVuY3Rpb24td2l0aC1oYW5kbGUtZXZlbnQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9q
cy9jYWxsYmFjay1mdW5jdGlvbi13aXRoLWhhbmRsZS1ldmVudC5odG1sCisKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0NhbGxi
YWNrRGF0YTo6aW52b2tlQ2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRM
aXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0V2ZW50TGlzdGVuZXI6OmhhbmRsZUV2
ZW50KToKKwogMjAxMS0xMS0xMyAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFNlY3VyaXR5UG9saWN5IHNob3VsZCByZWZlciB0byBpc1VuaXF1ZSByYXRoZXIgdGhh
biBpc0VtcHR5CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVu
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRM
aXN0ZW5lci5jcHAJKHJldmlzaW9uIDEwMDA5MikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDEzICs5NSwxNCBA
QAogICAgIH0KIAogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhl
YygpOwotICAgIEpTVmFsdWUgaGFuZGxlRXZlbnRGdW5jdGlvbiA9IGpzRnVuY3Rpb24tPmdldChl
eGVjLCBJZGVudGlmaWVyKGV4ZWMsICJoYW5kbGVFdmVudCIpKTsKKyAgICBKU1ZhbHVlIGhhbmRs
ZUV2ZW50RnVuY3Rpb24gPSBqc0Z1bmN0aW9uOwogCiAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAg
ICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShoYW5kbGVFdmVudEZ1bmN0aW9uLCBj
YWxsRGF0YSk7CisgICAgLy8gSWYganNGdW5jdGlvbiBpcyBub3QgYWN0dWFsbHkgYSBmdW5jdGlv
biwgc2VlIGlmIGl0IGltcGxlbWVudHMgdGhlIEV2ZW50TGlzdGVuZXIgaW50ZXJmYWNlIGFuZCB1
c2UgdGhhdAogICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpIHsKLSAgICAgICAgaGFu
ZGxlRXZlbnRGdW5jdGlvbiA9IEpTVmFsdWUoKTsKLSAgICAgICAgY2FsbFR5cGUgPSBqc0Z1bmN0
aW9uLT5tZXRob2RUYWJsZSgpLT5nZXRDYWxsRGF0YShqc0Z1bmN0aW9uLCBjYWxsRGF0YSk7Cisg
ICAgICAgIGhhbmRsZUV2ZW50RnVuY3Rpb24gPSBqc0Z1bmN0aW9uLT5nZXQoZXhlYywgSWRlbnRp
ZmllcihleGVjLCAiaGFuZGxlRXZlbnQiKSk7CisgICAgICAgIGNhbGxUeXBlID0gZ2V0Q2FsbERh
dGEoaGFuZGxlRXZlbnRGdW5jdGlvbiwgY2FsbERhdGEpOwogICAgIH0KIAogICAgIGlmIChjYWxs
VHlwZSAhPSBDYWxsVHlwZU5vbmUpIHsKQEAgLTExNywxNyArMTE4LDEwIEBACiAgICAgICAgIER5
bmFtaWNHbG9iYWxPYmplY3RTY29wZSBnbG9iYWxPYmplY3RTY29wZShnbG9iYWxEYXRhLCBnbG9i
YWxEYXRhLmR5bmFtaWNHbG9iYWxPYmplY3QgPyBnbG9iYWxEYXRhLmR5bmFtaWNHbG9iYWxPYmpl
Y3QgOiBnbG9iYWxPYmplY3QpOwogCiAgICAgICAgIGdsb2JhbERhdGEudGltZW91dENoZWNrZXIu
c3RhcnQoKTsKLSAgICAgICAgSlNWYWx1ZSByZXR2YWw7Ci0gICAgICAgIGlmIChoYW5kbGVFdmVu
dEZ1bmN0aW9uKSB7Ci0gICAgICAgICAgICByZXR2YWwgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0
LT5pc0RvY3VtZW50KCkKLSAgICAgICAgICAgICAgICA/IEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6
Y2FsbChleGVjLCBoYW5kbGVFdmVudEZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIGpzRnVu
Y3Rpb24sIGFyZ3MpCi0gICAgICAgICAgICAgICAgOiBKU0M6OmNhbGwoZXhlYywgaGFuZGxlRXZl
bnRGdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBqc0Z1bmN0aW9uLCBhcmdzKTsKLSAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgIEpTVmFsdWUgY3VycmVudFRhcmdldCA9IHRvSlMoZXhl
YywgZ2xvYmFsT2JqZWN0LCBldmVudC0+Y3VycmVudFRhcmdldCgpKTsKLSAgICAgICAgICAgIHJl
dHZhbCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzRG9jdW1lbnQoKQotICAgICAgICAgICAg
ICAgID8gSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpjYWxsKGV4ZWMsIGpzRnVuY3Rpb24sIGNhbGxU
eXBlLCBjYWxsRGF0YSwgY3VycmVudFRhcmdldCwgYXJncykKLSAgICAgICAgICAgICAgICA6IEpT
Qzo6Y2FsbChleGVjLCBqc0Z1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIGN1cnJlbnRUYXJn
ZXQsIGFyZ3MpOwotICAgICAgICB9CisgICAgICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gaGFuZGxl
RXZlbnRGdW5jdGlvbiA9PSBqc0Z1bmN0aW9uID8gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIGV2
ZW50LT5jdXJyZW50VGFyZ2V0KCkpIDoganNGdW5jdGlvbjsKKyAgICAgICAgSlNWYWx1ZSByZXR2
YWwgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0RvY3VtZW50KCkKKyAgICAgICAgICAgID8g
SlNNYWluVGhyZWFkRXhlY1N0YXRlOjpjYWxsKGV4ZWMsIGhhbmRsZUV2ZW50RnVuY3Rpb24sIGNh
bGxUeXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmdzKQorICAgICAgICAgICAgOiBKU0M6OmNh
bGwoZXhlYywgaGFuZGxlRXZlbnRGdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzVmFs
dWUsIGFyZ3MpOwogICAgICAgICBnbG9iYWxEYXRhLnRpbWVvdXRDaGVja2VyLnN0b3AoKTsKIAog
ICAgICAgICBnbG9iYWxPYmplY3QtPnNldEN1cnJlbnRFdmVudChzYXZlZEV2ZW50KTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5jcHAJKHJldmlz
aW9uIDEwMDA5MikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRh
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsMTUgKzQ4LDE1IEBACiAgICAgQVNTRVJUKGdsb2Jh
bE9iamVjdCgpKTsKIAogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdCgpLT5nbG9i
YWxFeGVjKCk7Ci0gICAgSlNWYWx1ZSBmdW5jdGlvbiA9IGNhbGxiYWNrKCktPmdldChleGVjLCBJ
ZGVudGlmaWVyKGV4ZWMsICJoYW5kbGVFdmVudCIpKTsKKyAgICBKU1ZhbHVlIGZ1bmN0aW9uID0g
Y2FsbGJhY2soKTsKIAogICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIENhbGxUeXBlIGNhbGxU
eXBlID0gZ2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKKyAgICBDYWxsVHlwZSBjYWxs
VHlwZSA9IGNhbGxiYWNrKCktPm1ldGhvZFRhYmxlKCktPmdldENhbGxEYXRhKGNhbGxiYWNrKCks
IGNhbGxEYXRhKTsKICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKSB7Ci0gICAgICAg
IGNhbGxUeXBlID0gY2FsbGJhY2soKS0+bWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEoY2FsbGJh
Y2soKSwgY2FsbERhdGEpOworICAgICAgICBmdW5jdGlvbiA9IGNhbGxiYWNrKCktPmdldChleGVj
LCBJZGVudGlmaWVyKGV4ZWMsICJoYW5kbGVFdmVudCIpKTsKKyAgICAgICAgY2FsbFR5cGUgPSBn
ZXRDYWxsRGF0YShmdW5jdGlvbiwgY2FsbERhdGEpOwogICAgICAgICBpZiAoY2FsbFR5cGUgPT0g
Q2FsbFR5cGVOb25lKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKLSAgICAgICAgZnVu
Y3Rpb24gPSBjYWxsYmFjaygpOwogICAgIH0KICAgICAKICAgICBnbG9iYWxPYmplY3QoKS0+Z2xv
YmFsRGF0YSgpLnRpbWVvdXRDaGVja2VyLnN0YXJ0KCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>