<?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>39340</bug_id>
          
          <creation_ts>2010-05-18 20:41:15 -0700</creation_ts>
          <short_desc>WebSocket: resume should not process buffer if already processing.</short_desc>
          <delta_ts>2010-06-18 01:29:45 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Fumitoshi Ukai">ukai</reporter>
          <assigned_to name="Fumitoshi Ukai">ukai</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>eric</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yutak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>227645</commentid>
    <comment_count>0</comment_count>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2010-05-18 20:41:15 -0700</bug_when>
    <thetext>Reported on chromium issue tracker: http://code.google.com/p/chromium/issues/detail?id=44309

I investigated this and found this happens as follows:

- didReceiveData called for handshake response message and initial websocket frame
  - processBuffer found handshake response header and WebSocket connection is established.
    - didConnect
      - dispatch open event
        ..
        - while processing handler code, it might issue some API which will send IPC to browser process
          - RenderThread::Send will enter modal loop, which will suspend active DOM objects
            - WebSocket and its WebSocketChannel is suspended
              ..
          - RenderThread::Send exit modal loop, which will resume active DOM objects
            - WebSocket and its WebSocketChannel is resumed
              processBuffer found initial websocket frame and fire message event
              - didReceiveMessage
                - dispatch message event

Thus, message event is dispatched while open event handler is running, which is wrong behavior.
This issue is in Chromium, but not in chromium test_shell nor in WebKit nightly build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>227676</commentid>
    <comment_count>1</comment_count>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2010-05-18 22:47:22 -0700</bug_when>
    <thetext>(In reply to comment #0)
&gt; Reported on chromium issue tracker: http://code.google.com/p/chromium/issues/detail?id=44309
&gt; 
&gt; I investigated this and found this happens as follows:
&gt; 
&gt; - didReceiveData called for handshake response message and initial websocket frame
&gt;   - processBuffer found handshake response header and WebSocket connection is established.
&gt;     - didConnect
&gt;       - dispatch open event
&gt;         ..
&gt;         - while processing handler code, it might issue some API which will send IPC to browser process
&gt;           - RenderThread::Send will enter modal loop, which will suspend active DOM objects
&gt;             - WebSocket and its WebSocketChannel is suspended
&gt;               ..
&gt;           - RenderThread::Send exit modal loop, which will resume active DOM objects
&gt;             - WebSocket and its WebSocketChannel is resumed
&gt;               processBuffer found initial websocket frame and fire message event
&gt;               - didReceiveMessage
&gt;                 - dispatch message event
&gt; 
&gt; Thus, message event is dispatched while open event handler is running, which is wrong behavior.
&gt; This issue is in Chromium, but not in chromium test_shell nor in WebKit nightly build.

If alert() is called in event handler, it would happens in chromium test_shell and WebKit nightly build as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>227682</commentid>
    <comment_count>2</comment_count>
      <attachid>56459</attachid>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2010-05-18 22:55:23 -0700</bug_when>
    <thetext>Created attachment 56459
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>228145</commentid>
    <comment_count>3</comment_count>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2010-05-19 19:40:11 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; (In reply to comment #0)

&gt; If alert() is called in event handler, it would happens in chromium test_shell and WebKit nightly build as well.

We should not process pending event in resume().
alert() may be called in other context than websocket&apos;s event handler.
While in alert(), network pushed data to WebSocketChannel, but it is not good to fire websocket event just after alert().
I think websocket event should be fired after the current javascript task has been finished.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>228146</commentid>
    <comment_count>4</comment_count>
      <attachid>56548</attachid>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2010-05-19 19:41:54 -0700</bug_when>
    <thetext>Created attachment 56548
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>228803</commentid>
    <comment_count>5</comment_count>
      <attachid>56684</attachid>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2010-05-21 02:17:35 -0700</bug_when>
    <thetext>Created attachment 56684
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239477</commentid>
    <comment_count>6</comment_count>
      <attachid>56684</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-06-17 10:58:24 -0700</bug_when>
    <thetext>Comment on attachment 56684
Patch

Nice catch!

+++ b/WebCore/websockets/ThreadableWebSocketChannelClientWrapper.h

Do we even need to suspend WebSocket message processing below an alert() in workers?

+    if (!m_resumeTimer.isActive())
+        m_resumeTimer.startOneShot(0);

So, a timer will be started for all WebSocketChannel objects, even those that have no pending data? This doesn&apos;t look great.

+    RefPtr&lt;WebSocketChannel&gt; protect(this); // The client can close the channel, potentially removing the last reference.

Is this covered by regression tests?

+++ b/LayoutTests/websocket/tests/script-tests/alert-in-event-handler.js

I still hate it that I can&apos;t see test content when I open .html, and have to dig inside a subdirectory for matching .js.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239741</commentid>
    <comment_count>7</comment_count>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2010-06-17 21:30:41 -0700</bug_when>
    <thetext>Committed r61375: &lt;http://trac.webkit.org/changeset/61375&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239747</commentid>
    <comment_count>8</comment_count>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2010-06-17 21:37:01 -0700</bug_when>
    <thetext>&gt; (From update of attachment 56684 [details])
&gt; Nice catch!
Thanks for review!

&gt; +++ b/WebCore/websockets/ThreadableWebSocketChannelClientWrapper.h
&gt; 
&gt; Do we even need to suspend WebSocket message processing below an alert() in workers?

Hmm, I&apos;m not sure, but in chrome, it will suspend/resume active DOM objects when sending IPC message, so it might be safer to do as main thread.

&gt; 
&gt; +    if (!m_resumeTimer.isActive())
&gt; +        m_resumeTimer.startOneShot(0);
&gt; 
&gt; So, a timer will be started for all WebSocketChannel objects, even those that have no pending data? This doesn&apos;t look great.

Ah, sure. I&apos;ve add check if there are pending event before starting timer.

&gt; +    RefPtr&lt;WebSocketChannel&gt; protect(this); // The client can close the channel, potentially removing the last reference.
&gt; 
&gt; Is this covered by regression tests?

not sure. but didClose() will deref(), so it would be safe to keep reference here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239792</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-18 00:35:21 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/61375 might have broken Leopard Intel Debug (Tests)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239804</commentid>
    <comment_count>10</comment_count>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2010-06-18 01:29:45 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; http://trac.webkit.org/changeset/61375 might have broken Leopard Intel Debug (Tests)

Oops.

I realized that we couldn&apos;t use Timer in worker thread.
And I noticed MessageLoop runs in main thread, so we don&apos;t need to use Timer for resume in worker thread.

Fixed in r61385: &lt;http://trac.webkit.org/changeset/61385&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56459</attachid>
            <date>2010-05-18 22:55:23 -0700</date>
            <delta_ts>2010-05-19 19:41:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39340-20100518225521.patch</filename>
            <type>text/plain</type>
            <size>8079</size>
            <attacher name="Fumitoshi Ukai">ukai</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwMGYyYTU4NjFmYTcwOTk3MWJmMTBhNzUwN2I2YzYwNDg2NGRhODRkLi5hODUwOWU3
ZjBlNmE0OTAzNzdlNDBiNmQwMTQyNjdiZjNkOWJjYzBjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTAtMDUtMTggIEZ1bWl0b3NoaSBVa2FpICA8dWthaUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViU29ja2V0OiByZXN1
bWUgc2hvdWxkIG5vdCBwcm9jZXNzIGJ1ZmZlciBpZiBhbHJlYWR5IHByb2Nlc3NpbmcuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTM0MAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2Vic29ja2V0L3Rl
c3RzL2FsZXJ0LWluLWV2ZW50LWhhbmRsZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiB3ZWJzb2NrZXQvdGVzdHMvYWxlcnQtaW4tZXZlbnQtaGFuZGxlci5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiB3ZWJzb2NrZXQvdGVzdHMvc2NyaXB0LXRlc3RzL2FsZXJ0LWluLWV2ZW50LWhhbmRs
ZXIuanM6IEFkZGVkLgorICAgICAgICAqIHdlYnNvY2tldC90ZXN0cy9zZW5kMl93c2gucHk6IEFk
ZGVkLgorCiAyMDEwLTA1LTE4ICBUb255IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgT2phbiBWYWZhaS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dl
YnNvY2tldC90ZXN0cy9hbGVydC1pbi1ldmVudC1oYW5kbGVyLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3dlYnNvY2tldC90ZXN0cy9hbGVydC1pbi1ldmVudC1oYW5kbGVyLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44MzQyOTU5ZDU2OWQyYzI3ZTdkZjU2YWY0MjU3OGY1ZWU1MjM0Yzc4Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vic29ja2V0L3Rlc3RzL2FsZXJ0LWluLWV2
ZW50LWhhbmRsZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTYgQEAKK0FMRVJUOiBtZXNzYWdl
IGhhbmRsZWQuZmlyc3QgbWVzc2FnZQorQUxFUlQ6IG1lc3NhZ2UgaGFuZGxlZC5zZWNvbmQgbWVz
c2FnZQorTWFrZSBzdXJlIGV2ZW50IGhhbmRsZXIgY2FsbGVkIHNlcmlhbGx5LgorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKK0Nvbm5lY3RlZAorRW50ZXIgb25tZXNzYWdlOiBmaXJzdCBt
ZXNzYWdlCitMZWF2ZSBvbm1lc3NhZ2U6IGZpcnN0IG1lc3NhZ2UKK0VudGVyIG9ubWVzc2FnZTog
c2Vjb25kIG1lc3NhZ2UKK0xlYXZlIG9ubWVzc2FnZTogc2Vjb25kIG1lc3NhZ2UKK0Nsb3NlZAor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYnNvY2tldC90ZXN0cy9hbGVydC1pbi1ldmVudC1oYW5kbGVy
Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJzb2NrZXQvdGVzdHMvYWxlcnQtaW4tZXZlbnQtaGFuZGxl
ci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmI3MDJjZGJiOTRkODNmNzMyMGEzYTMzMTI4NDk3NTNjNjcxYmIy
NzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJzb2NrZXQvdGVzdHMvYWxlcnQt
aW4tZXZlbnQtaGFuZGxlci5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBV
QkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LWZ1bmN0aW9uLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0i
ZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNy
Yz0ic2NyaXB0LXRlc3RzL2FsZXJ0LWluLWV2ZW50LWhhbmRsZXIuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vic29ja2V0L3Rlc3RzL3Nj
cmlwdC10ZXN0cy9hbGVydC1pbi1ldmVudC1oYW5kbGVyLmpzIGIvTGF5b3V0VGVzdHMvd2Vic29j
a2V0L3Rlc3RzL3NjcmlwdC10ZXN0cy9hbGVydC1pbi1ldmVudC1oYW5kbGVyLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmQxNDA2Y2FkZDlhZDBhNWQxNmM2Mzc3ZWJiMTdkYTAxNGVhOTY4NDMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy93ZWJzb2NrZXQvdGVzdHMvc2NyaXB0LXRlc3RzL2FsZXJ0LWlu
LWV2ZW50LWhhbmRsZXIuanMKQEAgLTAsMCArMSwzNiBAQAorZGVzY3JpcHRpb24oIk1ha2Ugc3Vy
ZSBldmVudCBoYW5kbGVyIGNhbGxlZCBzZXJpYWxseS4iKTsKKworaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUo
KTsKK30KKworZnVuY3Rpb24gZW5kVGVzdCgpCit7CisgICAgaXNTdWNjZXNzZnVsbHlQYXJzZWQo
KTsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICB9Cit9CisKK3ZhciB3cyA9IG5ldyBX
ZWJTb2NrZXQoIndzOi8vMTI3LjAuMC4xOjg4ODAvd2Vic29ja2V0L3Rlc3RzL3NlbmQyIik7CisK
K3dzLm9ub3BlbiA9IGZ1bmN0aW9uKCkKK3sKKyAgICBkZWJ1ZygiQ29ubmVjdGVkIik7Cit9Owor
Cit3cy5vbm1lc3NhZ2UgPSBmdW5jdGlvbihtZXNzYWdlRXZlbnQpCit7CisgICAgZGVidWcoIkVu
dGVyIG9ubWVzc2FnZTogIiArIG1lc3NhZ2VFdmVudC5kYXRhKTsKKyAgICAvLyBhbGVydCgpIHdp
bGwgc3VzcGVuZC9yZXN1bWUgV2ViU29ja2V0LgorICAgIGFsZXJ0KCJtZXNzYWdlIGhhbmRsZWQu
IiArIG1lc3NhZ2VFdmVudC5kYXRhKTsKKyAgICBkZWJ1ZygiTGVhdmUgb25tZXNzYWdlOiAiICsg
bWVzc2FnZUV2ZW50LmRhdGEpOworfTsKKword3Mub25jbG9zZSA9IGZ1bmN0aW9uKCkKK3sKKyAg
ICBkZWJ1ZygiQ2xvc2VkIik7CisgICAgZW5kVGVzdCgpOworfTsKKwordmFyIHN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJzb2NrZXQvdGVzdHMv
c2VuZDJfd3NoLnB5IGIvTGF5b3V0VGVzdHMvd2Vic29ja2V0L3Rlc3RzL3NlbmQyX3dzaC5weQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wM2ZjNmM2NzliZWIzOTE0OGNjMjYwNjYyNzY4MWMyYzA5N2FhYzIxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vic29ja2V0L3Rlc3RzL3NlbmQyX3dzaC5weQpA
QCAtMCwwICsxLDcgQEAKK2RlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0
KToKKyAgICBwYXNzICMgQWx3YXlzIGFjY2VwdC4KKworZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJf
ZGF0YShyZXF1ZXN0KToKKyAgICAjIHNlbmQgMiBtZXNzYWdlcyBpbiBvbmUgcGFja2V0LgorICAg
IHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZSgiXHgwMCIgKyAiZmlyc3QgbWVzc2FnZSIgKyAiXHhm
ZiIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXHgwMCIgKyAic2Vjb25kIG1lc3Nh
Z2UiICsgIlx4ZmYiKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmMGNkY2ZmNDcwNDcwOWMyODg2ZTJmYTBjNDhhNGU4MDMzZjFkYjY5Li5h
ZDUzY2EyOGI3YjJhN2I5NjU1Y2IwYjYzMmQ3ZThlNDUyNjQ4YTg5IDEwMDY0NAotLS0gYS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisy
MDEwLTA1LTE4ICBGdW1pdG9zaGkgVWthaSAgPHVrYWlAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYlNvY2tldDogcmVzdW1l
IHNob3VsZCBub3QgcHJvY2VzcyBidWZmZXIgaWYgYWxyZWFkeSBwcm9jZXNzaW5nLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzkzNDAKKworICAgICAg
ICBUZXN0OiB3ZWJzb2NrZXQvdGVzdHMvYWxlcnQtaW4tZXZlbnQtaGFuZGxlci5odG1sCisKKyAg
ICAgICAgV2hpbGUgcnVubmluZyBhbiBldmVudCBoYW5kbGVyIG9mIFdlYlNvY2tldCBvYmplY3Qs
IGl0IG1heSBiZSBzdXNwZW5kZWQKKyAgICAgICAgYW5kIHJlc3VtZWQgaW4gdmFyaW91cyByZWFz
b24uIGUuZy4gYWxlcnQoKSB3aWxsIHN1c3BlbmQvcmVzdW1lCisgICAgICAgIEFjdGl2ZURPTSBv
YmplY3RzLiBJbiBjaHJvbWl1bSwgc2VuZGluZyBJUEMgbWVzc2FnZSB3b3VsZCBhbHNvCisgICAg
ICAgIHN1c3BlbmQvcmVzdW1lIEFjdGl2ZURPTSBvYmplY3RzLgorICAgICAgICBJZiByZXN1bWUg
cHJvY2VzcyBwZW5kaW5nIGJ1ZmZlciBpbiB0aGlzIGNhc2UsIGFub3RoZXIgZXZlbnQgbWlnaHQK
KyAgICAgICAgYmUgZmlyZWQgd2hpbGUgcnVubmluZyB0aGUgaW5pdGlhbCBldmVudCBoYW5kbGVy
LgorICAgICAgICBUaHVzLCByZXN1bWUgc2hvdWxkIG5vdCBwcm9jZXNzIHBlbmRpbmcgYnVmZmVy
LiBQZW5kaW5nIGJ1ZmZlciB3b3VsZAorICAgICAgICBiZSBwcm9jZXNzZWQgYWZ0ZXIgdGhlIGlu
aXRpYWwgZXZlbnQgaGFuZGxlciBoYXMgYmVlbiBmaW5pc2hlZC4KKworICAgICAgICAqIHdlYnNv
Y2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRD
aGFubmVsOjpXZWJTb2NrZXRDaGFubmVsKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENo
YW5uZWw6OnJlc3VtZSk6CisgICAgICAgICBJZiBpdCBpcyBhbHJlYWR5IGluIHByb2Nlc3Npbmcs
IGRvbid0IHJlc3VtZSBwcm9jZXNzaW5nLgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hh
bm5lbFByb2Nlc3NMb2NrOjpXZWJTb2NrZXRDaGFubmVsUHJvY2Vzc0xvY2spOgorICAgICAgICAo
V2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbFByb2Nlc3NMb2NrOjp+V2ViU29ja2V0Q2hhbm5lbFBy
b2Nlc3NMb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NC
dWZmZXIpOgorICAgICAgICAgTWFyayBwcm9jZXNzaW5nIGFuZCBkb24ndCByZS1lbnRlciBwcm9j
ZXNzaW5nIGJ1ZmZlci4KKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaDoK
KwogMjAxMC0wNS0xOCAgVG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IE9qYW4gVmFmYWkuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dlYnNvY2tldHMv
V2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5l
bC5jcHAKaW5kZXggOWNhMmIyMDM2OTZmNmQzNzk1MWFkMzFmN2MyMDg2MzU2OTY0OWY0Ni4uNTU0
YjRiYmQ4YTBhODEzMWZmNTk0NWNlZWY3MmQxNTlkZWMyZGNjMCAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1dlYkNvcmUvd2Vic29ja2V0
cy9XZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtNTgsNiArNTgsNyBAQCBXZWJTb2NrZXRDaGFubmVs
OjpXZWJTb2NrZXRDaGFubmVsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFdlYlNv
Y2tldENoYQogICAgICwgbV9oYW5kc2hha2UodXJsLCBwcm90b2NvbCwgY29udGV4dCkKICAgICAs
IG1fYnVmZmVyKDApCiAgICAgLCBtX2J1ZmZlclNpemUoMCkKKyAgICAsIG1fcHJvY2Vzc2luZyhm
YWxzZSkKICAgICAsIG1fc3VzcGVuZGVkKGZhbHNlKQogICAgICwgbV9jbG9zZWQoZmFsc2UpCiAg
ICAgLCBtX3VuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50KDApCkBAIC0xMjUsNiArMTI2LDggQEAgdm9p
ZCBXZWJTb2NrZXRDaGFubmVsOjpzdXNwZW5kKCkKIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6cmVz
dW1lKCkKIHsKICAgICBtX3N1c3BlbmRlZCA9IGZhbHNlOworICAgIGlmIChtX3Byb2Nlc3Npbmcp
CisgICAgICByZXR1cm47CiAgICAgUmVmUHRyPFdlYlNvY2tldENoYW5uZWw+IHByb3RlY3QodGhp
cyk7IC8vIFRoZSBjbGllbnQgY2FuIGNsb3NlIHRoZSBjaGFubmVsLCBwb3RlbnRpYWxseSByZW1v
dmluZyB0aGUgbGFzdCByZWZlcmVuY2UuCiAgICAgd2hpbGUgKCFtX3N1c3BlbmRlZCAmJiBtX2Ns
aWVudCAmJiBtX2J1ZmZlcikKICAgICAgICAgaWYgKCFwcm9jZXNzQnVmZmVyKCkpCkBAIC0yMjks
MTEgKzIzMiwzMyBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OnNraXBCdWZmZXIoaW50IGxlbikK
ICAgICBtZW1tb3ZlKG1fYnVmZmVyLCBtX2J1ZmZlciArIGxlbiwgbV9idWZmZXJTaXplKTsKIH0K
IAorY2xhc3MgV2ViU29ja2V0Q2hhbm5lbFByb2Nlc3NMb2NrIDogcHVibGljIE5vbmNvcHlhYmxl
IHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBXZWJTb2NrZXRDaGFubmVsUHJvY2Vzc0xvY2soYm9v
bCYgcHJvY2Vzc2luZykKKyAgICAgICAgOiBtX3Byb2Nlc3NpbmcocHJvY2Vzc2luZykKKyAgICB7
CisgICAgICAgIEFTU0VSVCghbV9wcm9jZXNzaW5nKTsKKyAgICAgICAgbV9wcm9jZXNzaW5nID0g
dHJ1ZTsKKyAgICB9CisgICAgfldlYlNvY2tldENoYW5uZWxQcm9jZXNzTG9jaygpCisgICAgewor
ICAgICAgICBBU1NFUlQobV9wcm9jZXNzaW5nKTsKKyAgICAgICAgbV9wcm9jZXNzaW5nID0gZmFs
c2U7CisgICAgfQorcHJpdmF0ZToKKyAgICBib29sJiBtX3Byb2Nlc3Npbmc7Cit9OworCiBib29s
IFdlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NCdWZmZXIoKQogewogICAgIEFTU0VSVCghbV9zdXNw
ZW5kZWQpOwogICAgIEFTU0VSVChtX2NsaWVudCk7CiAgICAgQVNTRVJUKG1fYnVmZmVyKTsKKwor
ICAgIGlmIChtX3Byb2Nlc3NpbmcpCisgICAgICByZXR1cm4gZmFsc2U7CisgICAgV2ViU29ja2V0
Q2hhbm5lbFByb2Nlc3NMb2NrIHByb2Nlc3NMb2NrKG1fcHJvY2Vzc2luZyk7CisKICAgICBpZiAo
bV9oYW5kc2hha2UubW9kZSgpID09IFdlYlNvY2tldEhhbmRzaGFrZTo6SW5jb21wbGV0ZSkgewog
ICAgICAgICBpbnQgaGVhZGVyTGVuZ3RoID0gbV9oYW5kc2hha2UucmVhZFNlcnZlckhhbmRzaGFr
ZShtX2J1ZmZlciwgbV9idWZmZXJTaXplKTsKICAgICAgICAgaWYgKGhlYWRlckxlbmd0aCA8PSAw
KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaCBiL1dl
YkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggMGNiNDExZDllMjg3MzJj
MWFkMzQxM2M5MDNjMDRlMDZkMTI1NDU0ZS4uMjgyNTY0NjQyYmUyODlkNzNkZTc1ZThlNDQxZGU3
NDJlYjUyYWIxMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5u
ZWwuaAorKysgYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oCkBAIC05MCw2
ICs5MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgY2hhciogbV9idWZmZXI7CiAg
ICAgICAgIGludCBtX2J1ZmZlclNpemU7CiAKKyAgICAgICAgYm9vbCBtX3Byb2Nlc3Npbmc7CiAg
ICAgICAgIGJvb2wgbV9zdXNwZW5kZWQ7CiAgICAgICAgIGJvb2wgbV9jbG9zZWQ7CiAgICAgICAg
IHVuc2lnbmVkIGxvbmcgbV91bmhhbmRsZWRCdWZmZXJlZEFtb3VudDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56548</attachid>
            <date>2010-05-19 19:41:54 -0700</date>
            <delta_ts>2010-05-21 02:17:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39340-20100519194152.patch</filename>
            <type>text/plain</type>
            <size>8753</size>
            <attacher name="Fumitoshi Ukai">ukai</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1NTA4NWI5MzlmNDcxN2U1ODk2ZjZjNmRiZTE5NzkzNmRjM2M4ODhmLi4zNjhjOGM5
MDdhZDY4MjQxMmFkZWExNGM2ZWQ0YzliOTgxMWYzMzA3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTAtMDUtMTggIEZ1bWl0b3NoaSBVa2FpICA8dWthaUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViU29ja2V0OiByZXN1
bWUgc2hvdWxkIG5vdCBwcm9jZXNzIGJ1ZmZlciBpZiBhbHJlYWR5IHByb2Nlc3NpbmcuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTM0MAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2Vic29ja2V0L3Rl
c3RzL2FsZXJ0LWluLWV2ZW50LWhhbmRsZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiB3ZWJzb2NrZXQvdGVzdHMvYWxlcnQtaW4tZXZlbnQtaGFuZGxlci5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiB3ZWJzb2NrZXQvdGVzdHMvc2NyaXB0LXRlc3RzL2FsZXJ0LWluLWV2ZW50LWhhbmRs
ZXIuanM6IEFkZGVkLgorICAgICAgICAqIHdlYnNvY2tldC90ZXN0cy9zZW5kMl93c2gucHk6IEFk
ZGVkLgorCiAyMDEwLTA1LTE5ICBWaWN0b3IgV2FuZyAgPHZpY3RvcndAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFVucmV2aWV3ZWQuIFVwZGF0ZSBDaHJvbWl1bSB0ZXN0IGV4cGVjdGF0aW9ucy4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYnNvY2tldC90ZXN0cy9hbGVydC1pbi1ldmVudC1o
YW5kbGVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYnNvY2tldC90ZXN0cy9hbGVydC1p
bi1ldmVudC1oYW5kbGVyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MTU3ZWMwYjlkOTAwZDU5
NmFhZWNiNWIzZmJlNWZhN2EyOGUxNGZmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
d2Vic29ja2V0L3Rlc3RzL2FsZXJ0LWluLWV2ZW50LWhhbmRsZXItZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTkgQEAKK0FMRVJUOiB3YWl0aW5nIGZvciBvcGVuCitBTEVSVDogbWVzc2FnZSBoYW5k
bGVkLmZpcnN0IG1lc3NhZ2UKK0FMRVJUOiBtZXNzYWdlIGhhbmRsZWQuc2Vjb25kIG1lc3NhZ2UK
K01ha2Ugc3VyZSBldmVudCBoYW5kbGVyIGNhbGxlZCBzZXJpYWxseS4KKworT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgorCithbGVydCB3aWxsIHN1c3BlbmQvcmVzdW1lIFdlYlNvY2tldC4KK29u
b3BlbiBzaG91bGQgZmlyZSBsYXRlci4KK0Nvbm5lY3RlZAorRW50ZXIgb25tZXNzYWdlOiBmaXJz
dCBtZXNzYWdlCitMZWF2ZSBvbm1lc3NhZ2U6IGZpcnN0IG1lc3NhZ2UKK0VudGVyIG9ubWVzc2Fn
ZTogc2Vjb25kIG1lc3NhZ2UKK0xlYXZlIG9ubWVzc2FnZTogc2Vjb25kIG1lc3NhZ2UKK0Nsb3Nl
ZAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYnNvY2tldC90ZXN0cy9hbGVydC1pbi1ldmVudC1oYW5k
bGVyLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJzb2NrZXQvdGVzdHMvYWxlcnQtaW4tZXZlbnQtaGFu
ZGxlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI3MDJjZGJiOTRkODNmNzMyMGEzYTMzMTI4NDk3NTNjNjcx
YmIyNzQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJzb2NrZXQvdGVzdHMvYWxl
cnQtaW4tZXZlbnQtaGFuZGxlci5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1M
IFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5
bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LWZ1bmN0aW9uLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBp
ZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0
IHNyYz0ic2NyaXB0LXRlc3RzL2FsZXJ0LWluLWV2ZW50LWhhbmRsZXIuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L3NjcmlwdC10ZXN0cy9hbGVydC1pbi1ldmVudC1oYW5kbGVyLmpzIGIvTGF5b3V0VGVzdHMvd2Vi
c29ja2V0L3Rlc3RzL3NjcmlwdC10ZXN0cy9hbGVydC1pbi1ldmVudC1oYW5kbGVyLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjBjNDRhZjkyYjYyMTk5ODFjZjU2MmRkMmNjMzg5NmZkOGFhMzExYmMKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJzb2NrZXQvdGVzdHMvc2NyaXB0LXRlc3RzL2FsZXJ0
LWluLWV2ZW50LWhhbmRsZXIuanMKQEAgLTAsMCArMSwzOSBAQAorZGVzY3JpcHRpb24oIk1ha2Ug
c3VyZSBldmVudCBoYW5kbGVyIGNhbGxlZCBzZXJpYWxseS4iKTsKKworaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERv
bmUoKTsKK30KKworZnVuY3Rpb24gZW5kVGVzdCgpCit7CisgICAgaXNTdWNjZXNzZnVsbHlQYXJz
ZWQoKTsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICB9Cit9CisKK3ZhciB3cyA9IG5l
dyBXZWJTb2NrZXQoIndzOi8vMTI3LjAuMC4xOjg4ODAvd2Vic29ja2V0L3Rlc3RzL3NlbmQyIik7
CisKK3dzLm9ub3BlbiA9IGZ1bmN0aW9uKCkKK3sKKyAgICBkZWJ1ZygiQ29ubmVjdGVkIik7Cit9
OworCit3cy5vbm1lc3NhZ2UgPSBmdW5jdGlvbihtZXNzYWdlRXZlbnQpCit7CisgICAgZGVidWco
IkVudGVyIG9ubWVzc2FnZTogIiArIG1lc3NhZ2VFdmVudC5kYXRhKTsKKyAgICAvLyBhbGVydCgp
IHdpbGwgc3VzcGVuZC9yZXN1bWUgV2ViU29ja2V0LgorICAgIGFsZXJ0KCJtZXNzYWdlIGhhbmRs
ZWQuIiArIG1lc3NhZ2VFdmVudC5kYXRhKTsKKyAgICBkZWJ1ZygiTGVhdmUgb25tZXNzYWdlOiAi
ICsgbWVzc2FnZUV2ZW50LmRhdGEpOworfTsKKword3Mub25jbG9zZSA9IGZ1bmN0aW9uKCkKK3sK
KyAgICBkZWJ1ZygiQ2xvc2VkIik7CisgICAgZW5kVGVzdCgpOworfTsKKworZGVidWcoImFsZXJ0
IHdpbGwgc3VzcGVuZC9yZXN1bWUgV2ViU29ja2V0LiIpOworYWxlcnQoIndhaXRpbmcgZm9yIG9w
ZW4iKTsKK2RlYnVnKCJvbm9wZW4gc2hvdWxkIGZpcmUgbGF0ZXIuIik7Cit2YXIgc3VjY2Vzc2Z1
bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYnNvY2tldC90ZXN0
cy9zZW5kMl93c2gucHkgYi9MYXlvdXRUZXN0cy93ZWJzb2NrZXQvdGVzdHMvc2VuZDJfd3NoLnB5
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjAzZmM2YzY3OWJlYjM5MTQ4Y2MyNjA2NjI3NjgxYzJjMDk3YWFjMjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJzb2NrZXQvdGVzdHMvc2VuZDJfd3NoLnB5
CkBAIC0wLDAgKzEsNyBAQAorZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVl
c3QpOgorICAgIHBhc3MgIyBBbHdheXMgYWNjZXB0LgorCitkZWYgd2ViX3NvY2tldF90cmFuc2Zl
cl9kYXRhKHJlcXVlc3QpOgorICAgICMgc2VuZCAyIG1lc3NhZ2VzIGluIG9uZSBwYWNrZXQuCisg
ICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKCJceDAwIiArICJmaXJzdCBtZXNzYWdlIiArICJc
eGZmIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJceDAwIiArICJzZWNvbmQgbWVz
c2FnZSIgKyAiXHhmZiIpCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUv
Q2hhbmdlTG9nCmluZGV4IDU2ZDY0YWIwYWM4OTRmMDEwY2I0YWM2ZWY4MjM4OTYyNGExOGM4YzMu
LmQ3NDk3Njk3YzEwOTVlMmUzMjgzM2Q5MWFlNjEzYTNhNWM4NzVhNDMgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAK
KzIwMTAtMDUtMTggIEZ1bWl0b3NoaSBVa2FpICA8dWthaUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViU29ja2V0OiByZXN1
bWUgc2hvdWxkIG5vdCBwcm9jZXNzIGJ1ZmZlciBpZiBhbHJlYWR5IHByb2Nlc3NpbmcuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTM0MAorCisgICAg
ICAgIFRlc3Q6IHdlYnNvY2tldC90ZXN0cy9hbGVydC1pbi1ldmVudC1oYW5kbGVyLmh0bWwKKwor
ICAgICAgICBXaGlsZSBydW5uaW5nIGFuIGV2ZW50IGhhbmRsZXIgb2YgV2ViU29ja2V0IG9iamVj
dCwgaXQgbWF5IGJlIHN1c3BlbmRlZAorICAgICAgICBhbmQgcmVzdW1lZCBpbiB2YXJpb3VzIHJl
YXNvbi4gZS5nLiBhbGVydCgpIHdpbGwgc3VzcGVuZC9yZXN1bWUKKyAgICAgICAgQWN0aXZlRE9N
IG9iamVjdHMuIEluIGNocm9taXVtLCBzZW5kaW5nIElQQyBtZXNzYWdlIHdvdWxkIGFsc28KKyAg
ICAgICAgc3VzcGVuZC9yZXN1bWUgQWN0aXZlRE9NIG9iamVjdHMuCisgICAgICAgIElmIHJlc3Vt
ZSBwcm9jZXNzIHBlbmRpbmcgYnVmZmVyIGluIHRoaXMgY2FzZSwgYW5vdGhlciBldmVudCBtaWdo
dAorICAgICAgICBiZSBmaXJlZCB3aGlsZSBydW5uaW5nIHRoZSBpbml0aWFsIGV2ZW50IGhhbmRs
ZXIuCisgICAgICAgIFRodXMsIHJlc3VtZSBzaG91bGQgbm90IHByb2Nlc3MgcGVuZGluZyBidWZm
ZXIgaW1tZWRpYXRlbHkuCisgICAgICAgIFBlbmRpbmcgYnVmZmVyIHdvdWxkIGJlIHByb2Nlc3Nl
ZCBhZnRlciB0aGUgY3VycmVudCB0YXNrIGhhcyBiZWVuCisgICAgICAgIGZpbmlzaGVkLgorCisg
ICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldlYlNvY2tldENoYW5uZWw6OldlYlNvY2tldENoYW5uZWwpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViU29ja2V0Q2hhbm5lbDo6cmVzdW1lKToKKyAgICAgICAgIEp1c3Qgc2V0IG9uZSBzaG90
IHRpbWVyIGZvciByZXN1bWVUaW1lckZpcmVkKCkgaWYgbm90IHlldCBzZXQuCisgICAgICAgIChX
ZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpyZXN1bWVUaW1lckZpcmVkKToKKyAgICAgICAgIFBy
b2Nlc3MgcGVuZGluZyBldmVudCBhZnRlciByZXN1bWUgd2FzIGNhbGxlZC4KKyAgICAgICAgKiB3
ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaDoKKwogMjAxMC0wNS0xOSAgSmlhbiBMaSAgPGpp
YW5saUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFByb3NrdXJ5
YWtvdi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNw
cCBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCA5Y2EyYjIw
MzY5NmY2ZDM3OTUxYWQzMWY3YzIwODYzNTY5NjQ5ZjQ2Li5iMTMwYTUwN2Q3ZGRlOTMzY2Y1ZmNh
MmJjZjg1NDMxYjk3MjkwZDI5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29j
a2V0Q2hhbm5lbC5jcHAKKysrIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwu
Y3BwCkBAIC01OCw2ICs1OCw3IEBAIFdlYlNvY2tldENoYW5uZWw6OldlYlNvY2tldENoYW5uZWwo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgV2ViU29ja2V0Q2hhCiAgICAgLCBtX2hh
bmRzaGFrZSh1cmwsIHByb3RvY29sLCBjb250ZXh0KQogICAgICwgbV9idWZmZXIoMCkKICAgICAs
IG1fYnVmZmVyU2l6ZSgwKQorICAgICwgbV9yZXN1bWVUaW1lcih0aGlzLCAmV2ViU29ja2V0Q2hh
bm5lbDo6cmVzdW1lVGltZXJGaXJlZCkKICAgICAsIG1fc3VzcGVuZGVkKGZhbHNlKQogICAgICwg
bV9jbG9zZWQoZmFsc2UpCiAgICAgLCBtX3VuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50KDApCkBAIC0x
MjUsMTIgKzEyNiw4IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6c3VzcGVuZCgpCiB2b2lkIFdl
YlNvY2tldENoYW5uZWw6OnJlc3VtZSgpCiB7CiAgICAgbV9zdXNwZW5kZWQgPSBmYWxzZTsKLSAg
ICBSZWZQdHI8V2ViU29ja2V0Q2hhbm5lbD4gcHJvdGVjdCh0aGlzKTsgLy8gVGhlIGNsaWVudCBj
YW4gY2xvc2UgdGhlIGNoYW5uZWwsIHBvdGVudGlhbGx5IHJlbW92aW5nIHRoZSBsYXN0IHJlZmVy
ZW5jZS4KLSAgICB3aGlsZSAoIW1fc3VzcGVuZGVkICYmIG1fY2xpZW50ICYmIG1fYnVmZmVyKQot
ICAgICAgICBpZiAoIXByb2Nlc3NCdWZmZXIoKSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgIGlm
ICghbV9zdXNwZW5kZWQgJiYgbV9jbGllbnQgJiYgbV9jbG9zZWQgJiYgbV9oYW5kbGUpCi0gICAg
ICAgIGRpZENsb3NlKG1faGFuZGxlLmdldCgpKTsKKyAgICBpZiAoIW1fcmVzdW1lVGltZXIuaXNB
Y3RpdmUoKSkKKyAgICAgICAgbV9yZXN1bWVUaW1lci5zdGFydE9uZVNob3QoMCk7CiB9CiAKIHZv
aWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlkT3BlbihTb2NrZXRTdHJlYW1IYW5kbGUqIGhhbmRsZSkK
QEAgLTIzNCw2ICsyMzEsNyBAQCBib29sIFdlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NCdWZmZXIo
KQogICAgIEFTU0VSVCghbV9zdXNwZW5kZWQpOwogICAgIEFTU0VSVChtX2NsaWVudCk7CiAgICAg
QVNTRVJUKG1fYnVmZmVyKTsKKwogICAgIGlmIChtX2hhbmRzaGFrZS5tb2RlKCkgPT0gV2ViU29j
a2V0SGFuZHNoYWtlOjpJbmNvbXBsZXRlKSB7CiAgICAgICAgIGludCBoZWFkZXJMZW5ndGggPSBt
X2hhbmRzaGFrZS5yZWFkU2VydmVySGFuZHNoYWtlKG1fYnVmZmVyLCBtX2J1ZmZlclNpemUpOwog
ICAgICAgICBpZiAoaGVhZGVyTGVuZ3RoIDw9IDApCkBAIC0zMTgsNiArMzE2LDE4IEBAIGJvb2wg
V2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc0J1ZmZlcigpCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Cit2b2lkIFdlYlNvY2tldENoYW5uZWw6OnJlc3VtZVRpbWVyRmlyZWQoVGltZXI8V2ViU29ja2V0
Q2hhbm5lbD4qIHRpbWVyKQoreworICAgIEFTU0VSVF9VTlVTRUQodGltZXIsIHRpbWVyID09ICZt
X3Jlc3VtZVRpbWVyKTsKKworICAgIFJlZlB0cjxXZWJTb2NrZXRDaGFubmVsPiBwcm90ZWN0KHRo
aXMpOyAvLyBUaGUgY2xpZW50IGNhbiBjbG9zZSB0aGUgY2hhbm5lbCwgcG90ZW50aWFsbHkgcmVt
b3ZpbmcgdGhlIGxhc3QgcmVmZXJlbmNlLgorICAgIHdoaWxlICghbV9zdXNwZW5kZWQgJiYgbV9j
bGllbnQgJiYgbV9idWZmZXIpCisgICAgICAgIGlmICghcHJvY2Vzc0J1ZmZlcigpKQorICAgICAg
ICAgICAgYnJlYWs7CisgICAgaWYgKCFtX3N1c3BlbmRlZCAmJiBtX2NsaWVudCAmJiBtX2Nsb3Nl
ZCAmJiBtX2hhbmRsZSkKKyAgICAgICAgZGlkQ2xvc2UobV9oYW5kbGUuZ2V0KCkpOworfQorCiB9
ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgIC8vIEVOQUJMRShXRUJfU09DS0VUUykK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmggYi9XZWJD
b3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oCmluZGV4IDBjYjQxMWQ5ZTI4NzMyYzFh
ZDM0MTNjOTAzYzA0ZTA2ZDEyNTQ1NGUuLmE5MGM2ZGMxMWYyY2Q4YTk1MDQ3MmRiYWZmODU0MWEz
YTk0YTBhNGUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVs
LmgKKysrIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaApAQCAtODIsNiAr
ODIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgYXBwZW5kVG9CdWZmZXIo
Y29uc3QgY2hhciogZGF0YSwgaW50IGxlbik7CiAgICAgICAgIHZvaWQgc2tpcEJ1ZmZlcihpbnQg
bGVuKTsKICAgICAgICAgYm9vbCBwcm9jZXNzQnVmZmVyKCk7CisgICAgICAgIHZvaWQgcmVzdW1l
VGltZXJGaXJlZChUaW1lcjxXZWJTb2NrZXRDaGFubmVsPiogdGltZXIpOwogCiAgICAgICAgIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIG1fY29udGV4dDsKICAgICAgICAgV2ViU29ja2V0Q2hhbm5l
bENsaWVudCogbV9jbGllbnQ7CkBAIC05MCw2ICs5MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgY2hhciogbV9idWZmZXI7CiAgICAgICAgIGludCBtX2J1ZmZlclNpemU7CiAKKyAg
ICAgICAgVGltZXI8V2ViU29ja2V0Q2hhbm5lbD4gbV9yZXN1bWVUaW1lcjsKICAgICAgICAgYm9v
bCBtX3N1c3BlbmRlZDsKICAgICAgICAgYm9vbCBtX2Nsb3NlZDsKICAgICAgICAgdW5zaWduZWQg
bG9uZyBtX3VuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56684</attachid>
            <date>2010-05-21 02:17:35 -0700</date>
            <delta_ts>2010-06-17 10:58:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39340-20100521021733.patch</filename>
            <type>text/plain</type>
            <size>10367</size>
            <attacher name="Fumitoshi Ukai">ukai</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhNzhhNjBmMTk2MjlhMzYxODYyOGM2MmE5NDA5NGU2ODlhODJkZTExLi4xYjNjYzNl
NzRhNWYwNmVhZGE0YWQzZDE1MThkOTM1YmU0MDI4NzMxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTAtMDUtMTggIEZ1bWl0b3NoaSBVa2FpICA8dWthaUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViU29ja2V0OiByZXN1
bWUgc2hvdWxkIG5vdCBwcm9jZXNzIGJ1ZmZlciBpZiBhbHJlYWR5IHByb2Nlc3NpbmcuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTM0MAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2Vic29ja2V0L3Rl
c3RzL2FsZXJ0LWluLWV2ZW50LWhhbmRsZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiB3ZWJzb2NrZXQvdGVzdHMvYWxlcnQtaW4tZXZlbnQtaGFuZGxlci5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiB3ZWJzb2NrZXQvdGVzdHMvc2NyaXB0LXRlc3RzL2FsZXJ0LWluLWV2ZW50LWhhbmRs
ZXIuanM6IEFkZGVkLgorICAgICAgICAqIHdlYnNvY2tldC90ZXN0cy9zZW5kMl93c2gucHk6IEFk
ZGVkLgorCiAyMDEwLTA1LTIwICBGdW1pdG9zaGkgVWthaSAgPHVrYWlAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy93ZWJzb2NrZXQvdGVzdHMvYWxlcnQtaW4tZXZlbnQtaGFuZGxlci1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJzb2NrZXQvdGVzdHMvYWxlcnQtaW4tZXZlbnQtaGFuZGxl
ci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTE1N2VjMGI5ZDkwMGQ1OTZhYWVjYjViM2ZiZTVm
YTdhMjhlMTRmZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYnNvY2tldC90ZXN0
cy9hbGVydC1pbi1ldmVudC1oYW5kbGVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE5IEBACitB
TEVSVDogd2FpdGluZyBmb3Igb3BlbgorQUxFUlQ6IG1lc3NhZ2UgaGFuZGxlZC5maXJzdCBtZXNz
YWdlCitBTEVSVDogbWVzc2FnZSBoYW5kbGVkLnNlY29uZCBtZXNzYWdlCitNYWtlIHN1cmUgZXZl
bnQgaGFuZGxlciBjYWxsZWQgc2VyaWFsbHkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworYWxlcnQgd2lsbCBzdXNwZW5kL3Jlc3VtZSBXZWJTb2NrZXQuCitvbm9wZW4gc2hvdWxkIGZp
cmUgbGF0ZXIuCitDb25uZWN0ZWQKK0VudGVyIG9ubWVzc2FnZTogZmlyc3QgbWVzc2FnZQorTGVh
dmUgb25tZXNzYWdlOiBmaXJzdCBtZXNzYWdlCitFbnRlciBvbm1lc3NhZ2U6IHNlY29uZCBtZXNz
YWdlCitMZWF2ZSBvbm1lc3NhZ2U6IHNlY29uZCBtZXNzYWdlCitDbG9zZWQKK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJzb2NrZXQvdGVzdHMvYWxlcnQtaW4tZXZlbnQtaGFuZGxlci5odG1sIGIvTGF5
b3V0VGVzdHMvd2Vic29ja2V0L3Rlc3RzL2FsZXJ0LWluLWV2ZW50LWhhbmRsZXIuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5iNzAyY2RiYjk0ZDgzZjczMjBhM2EzMzEyODQ5NzUzYzY3MWJiMjc0Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vic29ja2V0L3Rlc3RzL2FsZXJ0LWluLWV2ZW50LWhh
bmRsZXIuaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lF
VEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC1mdW5j
dGlvbi5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9u
Ij48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10
ZXN0cy9hbGVydC1pbi1ldmVudC1oYW5kbGVyLmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYnNvY2tldC90ZXN0cy9zY3JpcHQtdGVzdHMv
YWxlcnQtaW4tZXZlbnQtaGFuZGxlci5qcyBiL0xheW91dFRlc3RzL3dlYnNvY2tldC90ZXN0cy9z
Y3JpcHQtdGVzdHMvYWxlcnQtaW4tZXZlbnQtaGFuZGxlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYzQ0YWY5
MmI2MjE5OTgxY2Y1NjJkZDJjYzM4OTZmZDhhYTMxMWJjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvd2Vic29ja2V0L3Rlc3RzL3NjcmlwdC10ZXN0cy9hbGVydC1pbi1ldmVudC1oYW5k
bGVyLmpzCkBAIC0wLDAgKzEsMzkgQEAKK2Rlc2NyaXB0aW9uKCJNYWtlIHN1cmUgZXZlbnQgaGFu
ZGxlciBjYWxsZWQgc2VyaWFsbHkuIik7CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK2Z1
bmN0aW9uIGVuZFRlc3QoKQoreworICAgIGlzU3VjY2Vzc2Z1bGx5UGFyc2VkKCk7CisgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5ub3RpZnlEb25lKCk7CisgICAgfQorfQorCit2YXIgd3MgPSBuZXcgV2ViU29ja2V0KCJ3
czovLzEyNy4wLjAuMTo4ODgwL3dlYnNvY2tldC90ZXN0cy9zZW5kMiIpOworCit3cy5vbm9wZW4g
PSBmdW5jdGlvbigpCit7CisgICAgZGVidWcoIkNvbm5lY3RlZCIpOworfTsKKword3Mub25tZXNz
YWdlID0gZnVuY3Rpb24obWVzc2FnZUV2ZW50KQoreworICAgIGRlYnVnKCJFbnRlciBvbm1lc3Nh
Z2U6ICIgKyBtZXNzYWdlRXZlbnQuZGF0YSk7CisgICAgLy8gYWxlcnQoKSB3aWxsIHN1c3BlbmQv
cmVzdW1lIFdlYlNvY2tldC4KKyAgICBhbGVydCgibWVzc2FnZSBoYW5kbGVkLiIgKyBtZXNzYWdl
RXZlbnQuZGF0YSk7CisgICAgZGVidWcoIkxlYXZlIG9ubWVzc2FnZTogIiArIG1lc3NhZ2VFdmVu
dC5kYXRhKTsKK307CisKK3dzLm9uY2xvc2UgPSBmdW5jdGlvbigpCit7CisgICAgZGVidWcoIkNs
b3NlZCIpOworICAgIGVuZFRlc3QoKTsKK307CisKK2RlYnVnKCJhbGVydCB3aWxsIHN1c3BlbmQv
cmVzdW1lIFdlYlNvY2tldC4iKTsKK2FsZXJ0KCJ3YWl0aW5nIGZvciBvcGVuIik7CitkZWJ1Zygi
b25vcGVuIHNob3VsZCBmaXJlIGxhdGVyLiIpOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRy
dWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJzb2NrZXQvdGVzdHMvc2VuZDJfd3NoLnB5
IGIvTGF5b3V0VGVzdHMvd2Vic29ja2V0L3Rlc3RzL3NlbmQyX3dzaC5weQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
M2ZjNmM2NzliZWIzOTE0OGNjMjYwNjYyNzY4MWMyYzA5N2FhYzIxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2Vic29ja2V0L3Rlc3RzL3NlbmQyX3dzaC5weQpAQCAtMCwwICsxLDcg
QEAKK2RlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKKyAgICBwYXNz
ICMgQWx3YXlzIGFjY2VwdC4KKworZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0
KToKKyAgICAjIHNlbmQgMiBtZXNzYWdlcyBpbiBvbmUgcGFja2V0LgorICAgIHJlcXVlc3QuY29u
bmVjdGlvbi53cml0ZSgiXHgwMCIgKyAiZmlyc3QgbWVzc2FnZSIgKyAiXHhmZiIgKworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiXHgwMCIgKyAic2Vjb25kIG1lc3NhZ2UiICsgIlx4ZmYi
KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCBhNTA0MGI3ZWJiODg1Nzg2YWNlMjcyYzcwM2M3ODI0NjEwNDI5MGM0Li5kMjk4NTkzNmEzZWI2
YjgzZjNjYjA3NDVkOGZiZDMyOTY0M2ZmYmJmIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEwLTA1LTE4ICBG
dW1pdG9zaGkgVWthaSAgPHVrYWlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYlNvY2tldDogcmVzdW1lIHNob3VsZCBub3Qg
cHJvY2VzcyBidWZmZXIgaWYgYWxyZWFkeSBwcm9jZXNzaW5nLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzkzNDAKKworICAgICAgICBUZXN0OiB3ZWJz
b2NrZXQvdGVzdHMvYWxlcnQtaW4tZXZlbnQtaGFuZGxlci5odG1sCisKKyAgICAgICAgV2hpbGUg
cnVubmluZyBhbiBldmVudCBoYW5kbGVyIG9mIFdlYlNvY2tldCBvYmplY3QsIGl0IG1heSBiZSBz
dXNwZW5kZWQKKyAgICAgICAgYW5kIHJlc3VtZWQgaW4gdmFyaW91cyByZWFzb24uIGUuZy4gYWxl
cnQoKSB3aWxsIHN1c3BlbmQvcmVzdW1lCisgICAgICAgIEFjdGl2ZURPTSBvYmplY3RzLiBJbiBj
aHJvbWl1bSwgc2VuZGluZyBJUEMgbWVzc2FnZSB3b3VsZCBhbHNvCisgICAgICAgIHN1c3BlbmQv
cmVzdW1lIEFjdGl2ZURPTSBvYmplY3RzLgorICAgICAgICBJZiByZXN1bWUgcHJvY2VzcyBwZW5k
aW5nIGJ1ZmZlciBpbiB0aGlzIGNhc2UsIGFub3RoZXIgZXZlbnQgbWlnaHQKKyAgICAgICAgYmUg
ZmlyZWQgd2hpbGUgcnVubmluZyB0aGUgaW5pdGlhbCBldmVudCBoYW5kbGVyLgorICAgICAgICBU
aHVzLCByZXN1bWUgc2hvdWxkIG5vdCBwcm9jZXNzIHBlbmRpbmcgYnVmZmVyIGltbWVkaWF0ZWx5
LgorICAgICAgICBQZW5kaW5nIGJ1ZmZlciB3b3VsZCBiZSBwcm9jZXNzZWQgYWZ0ZXIgdGhlIGN1
cnJlbnQgdGFzayBoYXMgYmVlbgorICAgICAgICBmaW5pc2hlZC4KKworICAgICAgICAqIHdlYnNv
Y2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmg6CisgICAgICAg
ICogd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlNvY2tldENoYW5uZWw6OldlYlNvY2tldENoYW5uZWwpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
U29ja2V0Q2hhbm5lbDo6cmVzdW1lKToKKyAgICAgICAgIEp1c3Qgc2V0IG9uZSBzaG90IHRpbWVy
IGZvciByZXN1bWVUaW1lckZpcmVkKCkgaWYgbm90IHlldCBzZXQuCisgICAgICAgIChXZWJDb3Jl
OjpXZWJTb2NrZXRDaGFubmVsOjpyZXN1bWVUaW1lckZpcmVkKToKKyAgICAgICAgIFByb2Nlc3Mg
cGVuZGluZyBldmVudCBhZnRlciByZXN1bWUgd2FzIGNhbGxlZC4KKyAgICAgICAgKiB3ZWJzb2Nr
ZXRzL1dlYlNvY2tldENoYW5uZWwuaDoKKwogMjAxMC0wNS0yMCAgS3dhbmcgWXVsIFNlbyAgPHNr
eXVsQGNvbXBhbnkxMDAubmV0PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
Q2xpZW50V3JhcHBlci5oIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsQ2xpZW50V3JhcHBlci5oCmluZGV4IGJjMzZjMWJhNWViNTU3OTFhOTI3OGZkOTE4N2E2
M2NlZDUxNTczMjcuLmI3OTgzZWZhODQ1ZmZhNGJlYjBkMjRjYzc0YmQ4ZjNkNDA4ZTZjOTMgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENs
aWVudFdyYXBwZXIuaAorKysgYi9XZWJDb3JlL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWxDbGllbnRXcmFwcGVyLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpZiBFTkFCTEUoV0VC
X1NPQ0tFVFMpCiAKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlRpbWVy
LmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0Q2hhbm5lbENsaWVudC5oIgogI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgpAQCAtMTE5LDcgKzEyMCw4
IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3VtZSgpCiAgICAgewogICAgICAgICBtX3N1c3BlbmRl
ZCA9IGZhbHNlOwotICAgICAgICBwcm9jZXNzUGVuZGluZ0V2ZW50cygpOworICAgICAgICBpZiAo
IW1fcmVzdW1lVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgICAgIG1fcmVzdW1lVGltZXIuc3Rh
cnRPbmVTaG90KDApOwogICAgIH0KIAogcHJvdGVjdGVkOgpAQCAtMTMxLDYgKzEzMyw3IEBAIHBy
b3RlY3RlZDoKICAgICAgICAgLCBtX3N1c3BlbmRlZChmYWxzZSkKICAgICAgICAgLCBtX3BlbmRp
bmdDb25uZWN0ZWQoZmFsc2UpCiAgICAgICAgICwgbV9wZW5kaW5nQ2xvc2VkKGZhbHNlKQorICAg
ICAgICAsIG1fcmVzdW1lVGltZXIodGhpcywgJlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xp
ZW50V3JhcHBlcjo6cmVzdW1lVGltZXJGaXJlZCkKICAgICB7CiAgICAgfQogCkBAIC0xNTcsNiAr
MTYwLDEyIEBAIHByb3RlY3RlZDoKICAgICAgICAgfQogICAgIH0KIAorICAgIHZvaWQgcmVzdW1l
VGltZXJGaXJlZChUaW1lcjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+
KiB0aW1lcikKKyAgICB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQodGltZXIsIHRpbWVyID09ICZt
X3Jlc3VtZVRpbWVyKTsKKyAgICAgICAgcHJvY2Vzc1BlbmRpbmdFdmVudHMoKTsKKyAgICB9CisK
ICAgICBXZWJTb2NrZXRDaGFubmVsQ2xpZW50KiBtX2NsaWVudDsKICAgICBib29sIG1fc3luY01l
dGhvZERvbmU7CiAgICAgYm9vbCBtX3NlbnQ7CkBAIC0xNjUsNiArMTc0LDcgQEAgcHJvdGVjdGVk
OgogICAgIGJvb2wgbV9wZW5kaW5nQ29ubmVjdGVkOwogICAgIFZlY3RvcjxTdHJpbmc+IG1fcGVu
ZGluZ01lc3NhZ2VzOwogICAgIGJvb2wgbV9wZW5kaW5nQ2xvc2VkOworICAgIFRpbWVyPFRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4gbV9yZXN1bWVUaW1lcjsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd2Vic29ja2V0cy9X
ZWJTb2NrZXRDaGFubmVsLmNwcCBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVs
LmNwcAppbmRleCA5Y2EyYjIwMzY5NmY2ZDM3OTUxYWQzMWY3YzIwODYzNTY5NjQ5ZjQ2Li5iMTMw
YTUwN2Q3ZGRlOTMzY2Y1ZmNhMmJjZjg1NDMxYjk3MjkwZDI5IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvV2ViQ29yZS93ZWJzb2NrZXRz
L1dlYlNvY2tldENoYW5uZWwuY3BwCkBAIC01OCw2ICs1OCw3IEBAIFdlYlNvY2tldENoYW5uZWw6
OldlYlNvY2tldENoYW5uZWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgV2ViU29j
a2V0Q2hhCiAgICAgLCBtX2hhbmRzaGFrZSh1cmwsIHByb3RvY29sLCBjb250ZXh0KQogICAgICwg
bV9idWZmZXIoMCkKICAgICAsIG1fYnVmZmVyU2l6ZSgwKQorICAgICwgbV9yZXN1bWVUaW1lcih0
aGlzLCAmV2ViU29ja2V0Q2hhbm5lbDo6cmVzdW1lVGltZXJGaXJlZCkKICAgICAsIG1fc3VzcGVu
ZGVkKGZhbHNlKQogICAgICwgbV9jbG9zZWQoZmFsc2UpCiAgICAgLCBtX3VuaGFuZGxlZEJ1ZmZl
cmVkQW1vdW50KDApCkBAIC0xMjUsMTIgKzEyNiw4IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6
c3VzcGVuZCgpCiB2b2lkIFdlYlNvY2tldENoYW5uZWw6OnJlc3VtZSgpCiB7CiAgICAgbV9zdXNw
ZW5kZWQgPSBmYWxzZTsKLSAgICBSZWZQdHI8V2ViU29ja2V0Q2hhbm5lbD4gcHJvdGVjdCh0aGlz
KTsgLy8gVGhlIGNsaWVudCBjYW4gY2xvc2UgdGhlIGNoYW5uZWwsIHBvdGVudGlhbGx5IHJlbW92
aW5nIHRoZSBsYXN0IHJlZmVyZW5jZS4KLSAgICB3aGlsZSAoIW1fc3VzcGVuZGVkICYmIG1fY2xp
ZW50ICYmIG1fYnVmZmVyKQotICAgICAgICBpZiAoIXByb2Nlc3NCdWZmZXIoKSkKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgIGlmICghbV9zdXNwZW5kZWQgJiYgbV9jbGllbnQgJiYgbV9jbG9zZWQg
JiYgbV9oYW5kbGUpCi0gICAgICAgIGRpZENsb3NlKG1faGFuZGxlLmdldCgpKTsKKyAgICBpZiAo
IW1fcmVzdW1lVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV9yZXN1bWVUaW1lci5zdGFydE9u
ZVNob3QoMCk7CiB9CiAKIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlkT3BlbihTb2NrZXRTdHJl
YW1IYW5kbGUqIGhhbmRsZSkKQEAgLTIzNCw2ICsyMzEsNyBAQCBib29sIFdlYlNvY2tldENoYW5u
ZWw6OnByb2Nlc3NCdWZmZXIoKQogICAgIEFTU0VSVCghbV9zdXNwZW5kZWQpOwogICAgIEFTU0VS
VChtX2NsaWVudCk7CiAgICAgQVNTRVJUKG1fYnVmZmVyKTsKKwogICAgIGlmIChtX2hhbmRzaGFr
ZS5tb2RlKCkgPT0gV2ViU29ja2V0SGFuZHNoYWtlOjpJbmNvbXBsZXRlKSB7CiAgICAgICAgIGlu
dCBoZWFkZXJMZW5ndGggPSBtX2hhbmRzaGFrZS5yZWFkU2VydmVySGFuZHNoYWtlKG1fYnVmZmVy
LCBtX2J1ZmZlclNpemUpOwogICAgICAgICBpZiAoaGVhZGVyTGVuZ3RoIDw9IDApCkBAIC0zMTgs
NiArMzE2LDE4IEBAIGJvb2wgV2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc0J1ZmZlcigpCiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCit2b2lkIFdlYlNvY2tldENoYW5uZWw6OnJlc3VtZVRpbWVyRmly
ZWQoVGltZXI8V2ViU29ja2V0Q2hhbm5lbD4qIHRpbWVyKQoreworICAgIEFTU0VSVF9VTlVTRUQo
dGltZXIsIHRpbWVyID09ICZtX3Jlc3VtZVRpbWVyKTsKKworICAgIFJlZlB0cjxXZWJTb2NrZXRD
aGFubmVsPiBwcm90ZWN0KHRoaXMpOyAvLyBUaGUgY2xpZW50IGNhbiBjbG9zZSB0aGUgY2hhbm5l
bCwgcG90ZW50aWFsbHkgcmVtb3ZpbmcgdGhlIGxhc3QgcmVmZXJlbmNlLgorICAgIHdoaWxlICgh
bV9zdXNwZW5kZWQgJiYgbV9jbGllbnQgJiYgbV9idWZmZXIpCisgICAgICAgIGlmICghcHJvY2Vz
c0J1ZmZlcigpKQorICAgICAgICAgICAgYnJlYWs7CisgICAgaWYgKCFtX3N1c3BlbmRlZCAmJiBt
X2NsaWVudCAmJiBtX2Nsb3NlZCAmJiBtX2hhbmRsZSkKKyAgICAgICAgZGlkQ2xvc2UobV9oYW5k
bGUuZ2V0KCkpOworfQorCiB9ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgIC8vIEVO
QUJMRShXRUJfU09DS0VUUykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRDaGFubmVsLmggYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oCmluZGV4
IDBjYjQxMWQ5ZTI4NzMyYzFhZDM0MTNjOTAzYzA0ZTA2ZDEyNTQ1NGUuLmE5MGM2ZGMxMWYyY2Q4
YTk1MDQ3MmRiYWZmODU0MWEzYTk0YTBhNGUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd2Vic29ja2V0
cy9XZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldENo
YW5uZWwuaApAQCAtODIsNiArODIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJv
b2wgYXBwZW5kVG9CdWZmZXIoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbik7CiAgICAgICAgIHZv
aWQgc2tpcEJ1ZmZlcihpbnQgbGVuKTsKICAgICAgICAgYm9vbCBwcm9jZXNzQnVmZmVyKCk7Cisg
ICAgICAgIHZvaWQgcmVzdW1lVGltZXJGaXJlZChUaW1lcjxXZWJTb2NrZXRDaGFubmVsPiogdGlt
ZXIpOwogCiAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIG1fY29udGV4dDsKICAgICAg
ICAgV2ViU29ja2V0Q2hhbm5lbENsaWVudCogbV9jbGllbnQ7CkBAIC05MCw2ICs5MSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgY2hhciogbV9idWZmZXI7CiAgICAgICAgIGludCBt
X2J1ZmZlclNpemU7CiAKKyAgICAgICAgVGltZXI8V2ViU29ja2V0Q2hhbm5lbD4gbV9yZXN1bWVU
aW1lcjsKICAgICAgICAgYm9vbCBtX3N1c3BlbmRlZDsKICAgICAgICAgYm9vbCBtX2Nsb3NlZDsK
ICAgICAgICAgdW5zaWduZWQgbG9uZyBtX3VuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50Owo=
</data>
<flag name="review"
          id="41143"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>