<?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>22672</bug_id>
          
          <creation_ts>2008-12-04 22:22:22 -0800</creation_ts>
          <short_desc>ASSERT(m_table) when xhr.onabort creates another xhr or calls setTimeout</short_desc>
          <delta_ts>2008-12-05 06:24:12 -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>DOM</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="Dmitry Titov">dimich</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>ap</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>101439</commentid>
    <comment_count>0</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2008-12-04 22:22:22 -0800</bug_when>
    <thetext>While stopping active dom objects we iterate over a set of them and call &apos;stop()&apos;.
XmlHttpRequest, while stopping, synchronously invokes onabort event. If any other active object is created or removed, the iterator is invalidated underneath on the stack and ASSERT fires.
This stack shows how it happens (repro file is coming):

#0	0x0410f44f in WebCore::ScriptExecutionContext::createdActiveDOMObject at ScriptExecutionContext.cpp:160
#1	0x04106822 in WebCore::ActiveDOMObject::ActiveDOMObject at ActiveDOMObject.cpp:45
#2	0x03f014fc in WebCore::XMLHttpRequest::XMLHttpRequest at XMLHttpRequest.cpp:334
#3	0x03f01762 in WebCore::XMLHttpRequest::XMLHttpRequest at XMLHttpRequest.cpp:338
#4	0x0403ab1d in WebCore::XMLHttpRequest::create at XMLHttpRequest.h:41
#5	0x0403a8bb in constructXMLHttpRequest at JSXMLHttpRequestConstructor.cpp:46
#6	0x00581e0e in JSC::Interpreter::cti_op_construct_NotJSConstruct at Interpreter.cpp:5116
#7	0x0057b60c in JSC::Interpreter::retrieveCaller at Interpreter.cpp:4032
#8	0x0058052a in JSC::Interpreter::execute at Interpreter.cpp:1006
#9	0x004a2297 in JSC::JSFunction::call at JSFunction.cpp:82
#10	0x004a234f in JSC::call at CallData.cpp:39
#11	0x03f503a0 in WebCore::JSAbstractEventListener::handleEvent at JSEventListener.cpp:109
#12	0x03f01842 in WebCore::XMLHttpRequest::dispatchXMLHttpRequestProgressEvent at XMLHttpRequest.cpp:1387
#13	0x03f02abc in WebCore::XMLHttpRequest::dispatchAbortEvent at XMLHttpRequest.cpp:1397
#14	0x03f02c6f in WebCore::XMLHttpRequest::abort at XMLHttpRequest.cpp:872
#15	0x03f02cf5 in WebCore::XMLHttpRequest::stop at XMLHttpRequest.cpp:1429
#16	0x0410ece7 in WebCore::ScriptExecutionContext::stopActiveDOMObjects at ScriptExecutionContext.cpp:152
#17	0x03ab9456 in WebCore::FrameLoader::clear at FrameLoader.cpp:819
#18	0x03ab9727 in WebCore::FrameLoader::begin at FrameLoader.cpp:916
#19	0x03abbe5e in WebCore::FrameLoader::receivedFirstData at FrameLoader.cpp:866</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>101440</commentid>
    <comment_count>1</comment_count>
      <attachid>25762</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2008-12-04 22:24:47 -0800</bug_when>
    <thetext>Created attachment 25762
reduced repro

simple file that causes assert.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>101446</commentid>
    <comment_count>2</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2008-12-04 23:34:02 -0800</bug_when>
    <thetext>There could be fast and right solutions to this, I think. The fast one is to not use iterator in stopActiveDOMObjects but rather something like:
while(foo = activeObjects.begin()) {
foo-&gt;first-&gt;stop();
}
This can be an infinite loop so some counter and a limit could be used. Very hacky since it does not guarantee that objects will be stopped.

Better solution could include a way to deny a newly created object from becoming &apos;active&apos;. For example, once SEC::stopActiveDOMObjects started to terminate active ones, external code can create XHR and call send() but xhr will be zombied from the start and not cause any listener callbacks. That feels right because if there is a concept of Active Object, the sequence of gaining &apos;active&apos; status should be spelled out just as a sequence of loosing such status.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>101448</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-12-05 00:20:29 -0800</bug_when>
    <thetext>Another way to fix this could be undo the change that made stop() call abort() instead of internalAbort(). Even though the new behavior matches Firefox a little more closely, that&apos;s hardly important.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>101471</commentid>
    <comment_count>4</comment_count>
      <attachid>25770</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-12-05 04:57:49 -0800</bug_when>
    <thetext>Created attachment 25770
proposed fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>101472</commentid>
    <comment_count>5</comment_count>
      <attachid>25771</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-12-05 04:57:51 -0800</bug_when>
    <thetext>Created attachment 25771
proposed fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>101473</commentid>
    <comment_count>6</comment_count>
      <attachid>25772</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-12-05 05:01:40 -0800</bug_when>
    <thetext>Created attachment 25772
proposed fix

Forgot to save ChangeLog when making the patch, sorry for the spam.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>101480</commentid>
    <comment_count>7</comment_count>
      <attachid>25772</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-12-05 06:06:50 -0800</bug_when>
    <thetext>Comment on attachment 25772
proposed fix

&gt; Index: WebCore/ChangeLog
&gt; ===================================================================
&gt; --- WebCore/ChangeLog	(revision 39023)
&gt; +++ WebCore/ChangeLog	(working copy)
&gt; @@ -1,3 +1,36 @@
&gt; +2008-12-05  Alexey Proskuryakov  &lt;ap@webkit.org&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=22672
&gt; +        ASSERT(m_table) when xhr.onabort creates another xhr or calls setTimeout
&gt; +
&gt; +        Test: http/tests/xmlhttprequest/send-on-abort.html
&gt; +
&gt; +        * dom/ScriptExecutionContext.cpp:
&gt; +        (WebCore::ScriptExecutionContext::canSuspendActiveDOMObjects):
&gt; +        (WebCore::ScriptExecutionContext::suspendActiveDOMObjects):
&gt; +        (WebCore::ScriptExecutionContext::resumeActiveDOMObjects):
&gt; +        (WebCore::ScriptExecutionContext::stopActiveDOMObjects):
&gt; +        Add a comment explaining that ActiveDOMObject methods shouldn&apos;t execute arbitrary JS.
&gt; +
&gt; +        * xml/XMLHttpRequest.cpp: (WebCore::XMLHttpRequest::stop): Don&apos;t dispatch events. This
&gt; +        reverts a recent change that made the behavior slightly closer to Firefox - but the
&gt; +        compatibility effect should be very minor if any, and Firefox itself behaves inconsistently.
&gt; +
&gt; +2008-12-05  Alexey Proskuryakov  &lt;ap@webkit.org&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        * WebCore.xcodeproj/project.pbxproj:
&gt; +        * dom/ScriptExecutionContext.cpp:
&gt; +        (WebCore::ScriptExecutionContext::canSuspendActiveDOMObjects):
&gt; +        (WebCore::ScriptExecutionContext::suspendActiveDOMObjects):
&gt; +        (WebCore::ScriptExecutionContext::resumeActiveDOMObjects):
&gt; +        (WebCore::ScriptExecutionContext::stopActiveDOMObjects):
&gt; +        * xml/XMLHttpRequest.cpp:
&gt; +        (WebCore::XMLHttpRequest::stop):
&gt; +

Double change log here.

&gt; +        * http/tests/xmlhttprequest/abort-on-leaving-page-expected.txt: Removed.
&gt; +        * http/tests/xmlhttprequest/abort-on-leaving-page.html: Removed.
&gt; +        * http/tests/xmlhttprequest/frame-load-cancelled-abort-expected.txt:
&gt; +        * http/tests/xmlhttprequest/resources/slow-response.pl: Removed.
&gt; +        Stopping an XHR due to navigation no longer dispatches events.

Was there any way to change these tests to verify the new behavior, rather than removing them? Maybe that&apos;s pointless.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>101482</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-12-05 06:24:12 -0800</bug_when>
    <thetext>Committed revision 39025.

(In reply to comment #7)
&gt; Was there any way to change these tests to verify the new behavior, rather than
&gt; removing them? Maybe that&apos;s pointless.

I don&apos;t know how to - I changed internalAbort() to abort() previously exactly to be able to make this test.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>25762</attachid>
            <date>2008-12-04 22:24:47 -0800</date>
            <delta_ts>2008-12-05 04:58:34 -0800</delta_ts>
            <desc>reduced repro</desc>
            <filename>repro.html</filename>
            <type>text/html</type>
            <size>236</size>
            <attacher name="Dmitry Titov">dimich</attacher>
            
              <data encoding="base64">PHNjcmlwdD4KZnVuY3Rpb24gYWJvcnRIYW5kbGVyKCkKewogICAgeGhyMiA9IG5ldyBYTUxIdHRw
UmVxdWVzdDsgIC8vIG9yIHNldFRpbWVvdXQKfQoKeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0Owp4
aHIub25hYm9ydCA9IGFib3J0SGFuZGxlcjsKeGhyLm9wZW4oIkdFVCIsICJ3d3cuZ29vZ2xlLmNv
bSIsIHRydWUpOyAKeGhyLnNlbmQoKTsKbG9jYXRpb24uaHJlZiA9ICJhYm91dDpibGFuayI7Cjwv
c2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25770</attachid>
            <date>2008-12-05 04:57:49 -0800</date>
            <delta_ts>2008-12-05 04:58:18 -0800</delta_ts>
            <desc>proposed fix</desc>
            <filename>NoJSOnAbort.txt</filename>
            <type>text/plain</type>
            <size>10266</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzOTAyMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzYgQEAKKzIwMDgtMTItMDUgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEB3ZWJr
aXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY3MgorICAgICAgICBB
U1NFUlQobV90YWJsZSkgd2hlbiB4aHIub25hYm9ydCBjcmVhdGVzIGFub3RoZXIgeGhyIG9yIGNh
bGxzIHNldFRpbWVvdXQKKworICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0
L3NlbmQtb24tYWJvcnQuaHRtbAorCisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6Y2FuU3Vz
cGVuZEFjdGl2ZURPTU9iamVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6c3VzcGVuZEFjdGl2ZURPTU9iamVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6cmVzdW1lQWN0aXZlRE9NT2JqZWN0cyk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpzdG9wQWN0aXZlRE9NT2JqZWN0cyk6Cisg
ICAgICAgIEFkZCBhIGNvbW1lbnQgZXhwbGFpbmluZyB0aGF0IEFjdGl2ZURPTU9iamVjdCBtZXRo
b2RzIHNob3VsZG4ndCBleGVjdXRlIGFyYml0cmFyeSBKUy4KKworICAgICAgICAqIHhtbC9YTUxI
dHRwUmVxdWVzdC5jcHA6IChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6c3RvcCk6IERvbid0IGRp
c3BhdGNoIGV2ZW50cy4gVGhpcworICAgICAgICByZXZlcnRzIGEgcmVjZW50IGNoYW5nZSB0aGF0
IG1hZGUgdGhlIGJlaGF2aW9yIHNsaWdodGx5IGNsb3NlciB0byBGaXJlZm94IC0gYnV0IHRoZQor
ICAgICAgICBjb21wYXRpYmlsaXR5IGVmZmVjdCBzaG91bGQgYmUgdmVyeSBtaW5vciBpZiBhbnks
IGFuZCBGaXJlZm94IGl0c2VsZiBiZWhhdmVzIGluY29uc2lzdGVudGx5LgorCisyMDA4LTEyLTA1
ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpjYW5TdXNwZW5kQWN0aXZl
RE9NT2JqZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpz
dXNwZW5kQWN0aXZlRE9NT2JqZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRp
b25Db250ZXh0OjpyZXN1bWVBY3RpdmVET01PYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnN0b3BBY3RpdmVET01PYmplY3RzKToKKyAgICAgICAgKiB4
bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6
OnN0b3ApOgorCiAyMDA4LTEyLTA1ICBUb3IgQXJuZSBWZXN0YsO4ICA8dGF2ZXN0Ym9AdHJvbGx0
ZWNoLmNvbT4KIAogICAgICAgICBSdWJiZXItc3RhbXBlZCBieSBTaW1vbiBIYXVzbWFubi4KSW5k
ZXg6IFdlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCShyZXZpc2lvbiAzOTAyMCkK
KysrIFdlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTcsNiArMTE3LDcgQEAgdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpkZXN0cm95
ZWRNZQogCiBib29sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmNhblN1c3BlbmRBY3RpdmVET01P
YmplY3RzKCkKIHsKKyAgICAvLyBObyBwcm90ZWN0aW9uIGFnYWluc3QgbV9hY3RpdmVET01PYmpl
Y3RzIGNoYW5naW5nIGR1cmluZyBpdGVyYXRpb246IGNhblN1c3BlbmQoKSBzaG91bGRuJ3QgZXhl
Y3V0ZSBhcmJpdHJhcnkgSlMuCiAgICAgSGFzaE1hcDxBY3RpdmVET01PYmplY3QqLCB2b2lkKj46
Oml0ZXJhdG9yIGFjdGl2ZU9iamVjdHNFbmQgPSBtX2FjdGl2ZURPTU9iamVjdHMuZW5kKCk7CiAg
ICAgZm9yIChIYXNoTWFwPEFjdGl2ZURPTU9iamVjdCosIHZvaWQqPjo6aXRlcmF0b3IgaXRlciA9
IG1fYWN0aXZlRE9NT2JqZWN0cy5iZWdpbigpOyBpdGVyICE9IGFjdGl2ZU9iamVjdHNFbmQ7ICsr
aXRlcikgewogICAgICAgICBBU1NFUlQoaXRlci0+Zmlyc3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSA9PSB0aGlzKTsKQEAgLTEyOCw2ICsxMjksNyBAQCBib29sIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OmNhblN1c3BlbmRBCiAKIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6c3VzcGVu
ZEFjdGl2ZURPTU9iamVjdHMoKQogeworICAgIC8vIE5vIHByb3RlY3Rpb24gYWdhaW5zdCBtX2Fj
dGl2ZURPTU9iamVjdHMgY2hhbmdpbmcgZHVyaW5nIGl0ZXJhdGlvbjogc3VzcGVuZCgpIHNob3Vs
ZG4ndCBleGVjdXRlIGFyYml0cmFyeSBKUy4KICAgICBIYXNoTWFwPEFjdGl2ZURPTU9iamVjdCos
IHZvaWQqPjo6aXRlcmF0b3IgYWN0aXZlT2JqZWN0c0VuZCA9IG1fYWN0aXZlRE9NT2JqZWN0cy5l
bmQoKTsKICAgICBmb3IgKEhhc2hNYXA8QWN0aXZlRE9NT2JqZWN0Kiwgdm9pZCo+OjppdGVyYXRv
ciBpdGVyID0gbV9hY3RpdmVET01PYmplY3RzLmJlZ2luKCk7IGl0ZXIgIT0gYWN0aXZlT2JqZWN0
c0VuZDsgKytpdGVyKSB7CiAgICAgICAgIEFTU0VSVChpdGVyLT5maXJzdC0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpID09IHRoaXMpOwpAQCAtMTM3LDYgKzEzOSw3IEBAIHZvaWQgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6c3VzcGVuZEFjdGkKIAogdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OjpyZXN1bWVBY3RpdmVET01PYmplY3RzKCkKIHsKKyAgICAvLyBObyBwcm90ZWN0aW9uIGFnYWlu
c3QgbV9hY3RpdmVET01PYmplY3RzIGNoYW5naW5nIGR1cmluZyBpdGVyYXRpb246IHJlc3VtZSgp
IHNob3VsZG4ndCBleGVjdXRlIGFyYml0cmFyeSBKUy4KICAgICBIYXNoTWFwPEFjdGl2ZURPTU9i
amVjdCosIHZvaWQqPjo6aXRlcmF0b3IgYWN0aXZlT2JqZWN0c0VuZCA9IG1fYWN0aXZlRE9NT2Jq
ZWN0cy5lbmQoKTsKICAgICBmb3IgKEhhc2hNYXA8QWN0aXZlRE9NT2JqZWN0Kiwgdm9pZCo+Ojpp
dGVyYXRvciBpdGVyID0gbV9hY3RpdmVET01PYmplY3RzLmJlZ2luKCk7IGl0ZXIgIT0gYWN0aXZl
T2JqZWN0c0VuZDsgKytpdGVyKSB7CiAgICAgICAgIEFTU0VSVChpdGVyLT5maXJzdC0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpID09IHRoaXMpOwpAQCAtMTQ2LDYgKzE0OSw3IEBAIHZvaWQgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6cmVzdW1lQWN0aXYKIAogdm9pZCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpzdG9wQWN0aXZlRE9NT2JqZWN0cygpCiB7CisgICAgLy8gTm8gcHJvdGVjdGlvbiBh
Z2FpbnN0IG1fYWN0aXZlRE9NT2JqZWN0cyBjaGFuZ2luZyBkdXJpbmcgaXRlcmF0aW9uOiBzdG9w
KCkgc2hvdWxkbid0IGV4ZWN1dGUgYXJiaXRyYXJ5IEpTLgogICAgIEhhc2hNYXA8QWN0aXZlRE9N
T2JqZWN0Kiwgdm9pZCo+OjppdGVyYXRvciBhY3RpdmVPYmplY3RzRW5kID0gbV9hY3RpdmVET01P
YmplY3RzLmVuZCgpOwogICAgIGZvciAoSGFzaE1hcDxBY3RpdmVET01PYmplY3QqLCB2b2lkKj46
Oml0ZXJhdG9yIGl0ZXIgPSBtX2FjdGl2ZURPTU9iamVjdHMuYmVnaW4oKTsgaXRlciAhPSBhY3Rp
dmVPYmplY3RzRW5kOyArK2l0ZXIpIHsKICAgICAgICAgQVNTRVJUKGl0ZXItPmZpcnN0LT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkgPT0gdGhpcyk7CkluZGV4OiBXZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3Bw
CShyZXZpc2lvbiAzOTAyMCkKKysrIFdlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTQyNSw4ICsxNDI1LDcgQEAgYm9vbCBYTUxIdHRwUmVxdWVzdDo6Y2Fu
U3VzcGVuZCgpIGNvbnN0CiAKIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OnN0b3AoKQogewotICAgIGlm
IChtX2xvYWRlcikKLSAgICAgICAgYWJvcnQoKTsKKyAgICBpbnRlcm5hbEFib3J0KCk7CiB9CiAK
IHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmNvbnRleHREZXN0cm95ZWQoKQpJbmRleDogTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNp
b24gMzkwMjMpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwyMyBAQAorMjAwOC0xMi0wNSAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBo
dHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2Fib3J0LW9uLWxlYXZpbmctcGFnZS1leHBlY3RlZC50
eHQ6IFJlbW92ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hYm9ydC1v
bi1sZWF2aW5nLXBhZ2UuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3htbGh0
dHByZXF1ZXN0L2ZyYW1lLWxvYWQtY2FuY2VsbGVkLWFib3J0LWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9zbG93LXJlc3BvbnNlLnBs
OiBSZW1vdmVkLgorICAgICAgICAqIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvc2VuZC1vbi1h
Ym9ydC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMveG1saHR0cHJl
cXVlc3Qvc2VuZC1vbi1hYm9ydC5odG1sOiBBZGRlZC4KKworMjAwOC0xMi0wNSAgQWxleGV5IFBy
b3NrdXJ5YWtvdiAgPGFwQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2Fib3J0LW9u
LWxlYXZpbmctcGFnZS1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy94bWxodHRwcmVxdWVzdC9hYm9ydC1vbi1sZWF2aW5nLXBhZ2UuaHRtbDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2ZyYW1lLWxvYWQtY2FuY2VsbGVkLWFi
b3J0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jl
c291cmNlcy9zbG93LXJlc3BvbnNlLnBsOiBSZW1vdmVkLgorCiAyMDA4LTEyLTA1ICBKdW5nc2hp
ayBTaGluICA8anNoaW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFsZXhl
eSBQcm9za3VyeWFrb3YuCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1
ZXN0L2Fib3J0LW9uLWxlYXZpbmctcGFnZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hYm9ydC1vbi1sZWF2aW5nLXBhZ2Ut
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAzOTAyMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
eG1saHR0cHJlcXVlc3QvYWJvcnQtb24tbGVhdmluZy1wYWdlLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMSwyICswLDAgQEAKLUFMRVJUOiBTVUNDRVNTCi1TaG91bGQgaGF2ZSBzZWVu
IGEgU1VDQ0VTUyBhbGVydC4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJl
cXVlc3QvYWJvcnQtb24tbGVhdmluZy1wYWdlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hYm9ydC1vbi1sZWF2aW5nLXBhZ2UuaHRtbAko
cmV2aXNpb24gMzkwMjApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0
L2Fib3J0LW9uLWxlYXZpbmctcGFnZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDI0ICswLDAg
QEAKLTxib2R5PgotPGRpdiBpZD1yZXN1bHQ+PC9kaXY+Ci08c2NyaXB0PgotaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci19Ci0KLXRy
eSB7Ci0gICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdDsKLSAgICB4aHIub3BlbigiR0VU
IiwgInJlc291cmNlcy9zbG93LXJlc3BvbnNlLnBsIik7Ci0gICAgeGhyLm9ucmVhZHlzdGF0ZWNo
YW5nZSA9IGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAoeGhyLnJlYWR5U3RhdGUgPT0gNCkKLSAg
ICAgICAgICAgIGFsZXJ0KCJTVUNDRVNTIik7Ci0gICAgfQotICAgIHhoci5zZW5kKG51bGwpOwot
ICAgIAotICAgIHNldFRpbWVvdXQoIndpbmRvdy5sb2NhdGlvbi5ocmVmPSdkYXRhOnRleHQvaHRt
bCxTaG91bGQgaGF2ZSBzZWVuIGEgU1VDQ0VTUyBhbGVydC48c2NyaXB0PmlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTwvc2Ny
JyArICdpcHQ+JyIsIDEwMCk7Ci19IGNhdGNoIChleCkgewotICAgIGFsZXJ0KGV4KTsKLX0KLTwv
c2NyaXB0PgotPGEgaHJlZj0iYWJvdXQ6YmxhbmsiPmxpbms8L2E+Ci08L2JvZHk+CkluZGV4OiBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2ZyYW1lLWxvYWQtY2FuY2VsbGVk
LWFib3J0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3htbGh0dHByZXF1ZXN0L2ZyYW1lLWxvYWQtY2FuY2VsbGVkLWFib3J0LWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMzkwMjApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0
L2ZyYW1lLWxvYWQtY2FuY2VsbGVkLWFib3J0LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtOCw3ICs4LDYgQEAgVGhhdCBkaWRGaW5pc2hlZExvYWRpbmcoKSBjYWxsIHNob3VsZCBpbQog
TG9hZGluZyBzdWJmcmFtZSB0byBjYW5jZWwKIFJlYWR5IFN0YXRlOiAxCiBCb2R5IG9mIHN1YmZy
YW1lIGlzIGxvYWRlZC4gWE1MSHR0cFJlcXVlc3Qgc2hvdWxkIGJlIGluIHByb2dyZXNzLiBOdWtp
bmcgdGhlIGlmcmFtZQotUmVhZHkgU3RhdGU6IDQKIElmcmFtZSB1bmxvYWRlZAogSWZyYW1lIHJl
bW92ZWQKIApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9zZW5k
LW9uLWFib3J0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3htbGh0dHByZXF1ZXN0L3NlbmQtb24tYWJvcnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9zZW5kLW9uLWFib3J0
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAorUEFTUzogTm8gYXNzZXJ0
aW9uIGZhaWx1cmUuCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3htbGh0dHByZXF1ZXN0L3NlbmQtb24tYWJvcnQtZXhwZWN0ZWQudHh0Cl9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTmFt
ZTogc3ZuOm1pbWUtdHlwZQogICArIHRleHQvcGxhaW4KTmFtZTogc3ZuOmVvbC1zdHlsZQogICAr
IG5hdGl2ZQoKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvc2Vu
ZC1vbi1hYm9ydC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1s
aHR0cHJlcXVlc3Qvc2VuZC1vbi1hYm9ydC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9zZW5kLW9uLWFib3J0Lmh0bWwJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMjggQEAKKzwhLS0gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyNjcyCisgICAgIEFTU0VSVChtX3RhYmxlKSB3aGVuIHhoci5vbmFib3J0IGNy
ZWF0ZXMgYW5vdGhlciB4aHIgb3IgY2FsbHMgc2V0VGltZW91dAorLS0+Cis8c2NyaXB0PgoraWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
Cit9CisKK2Z1bmN0aW9uIGFib3J0SGFuZGxlcigpCit7CisgICAgeGhyMiA9IG5ldyBYTUxIdHRw
UmVxdWVzdDsKKyAgICBzZXRUaW1lb3V0KCJhbGVydCgnRkFBQUlMIScpIiwgMTAwKTsKK30KKwor
ZnVuY3Rpb24gb25yZWFkeXN0YXRlY2hhbmdlSGFuZGxlcigpCit7CisgICAgaWYgKHhoci5yZWFk
eVN0YXRlID09IDQpCisgICAgICAgIGFib3J0SGFuZGxlcigpOworfQorCit4aHIgPSBuZXcgWE1M
SHR0cFJlcXVlc3Q7Cit4aHIub25hYm9ydCA9IGFib3J0SGFuZGxlcjsKK3hoci5vbnJlYWR5c3Rh
dGVjaGFuZ2UgPSBvbnJlYWR5c3RhdGVjaGFuZ2VIYW5kbGVyOworeGhyLm9wZW4oIkdFVCIsICJm
b28udHh0IiwgdHJ1ZSk7IAoreGhyLnNlbmQobnVsbCk7Citsb2NhdGlvbi5ocmVmID0gImRhdGE6
dGV4dC9odG1sLDxzY3JpcHQ+aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgbGF5b3V0
VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpPC9zY3IiICsgImlwdD5QQVNTOiBObyBhc3NlcnRp
b24gZmFpbHVyZS4iOworPC9zY3JpcHQ+CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3NlbmQtb24tYWJvcnQuaHRtbApfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
Ck5hbWU6IHN2bjptaW1lLXR5cGUKICAgKyB0ZXh0L2h0bWwKCkluZGV4OiBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9zbG93LXJlc3BvbnNlLnBsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVzb3VyY2Vz
L3Nsb3ctcmVzcG9uc2UucGwJKHJldmlzaW9uIDM5MDIwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvc2xvdy1yZXNwb25zZS5wbAkod29ya2luZyBj
b3B5KQpAQCAtMSwxNCArMCwwIEBACi0jIS91c3IvYmluL3BlcmwgLXcKLQotIyBmbHVzaCB0aGUg
YnVmZmVycyBhZnRlciBlYWNoIHByaW50Ci1zZWxlY3QgKFNURE9VVCk7Ci0kfCA9IDE7Ci0KLXBy
aW50ICJDb250ZW50LVR5cGU6IHRleHQvcGxhaW5cclxuIjsKLXByaW50ICJFeHBpcmVzOiBUaHUs
IDAxIERlYyAyMDAzIDE2OjAwOjAwIEdNVFxyXG4iOwotcHJpbnQgIkNhY2hlLUNvbnRyb2w6IG5v
LXN0b3JlLCBuby1jYWNoZSwgbXVzdC1yZXZhbGlkYXRlXHJcbiI7Ci1wcmludCAiUHJhZ21hOiBu
by1jYWNoZVxyXG4iOwotcHJpbnQgIlxyXG4iOwotCi1zbGVlcCAyOwotcHJpbnQgIlJlc3BvbnNl
O1xuIjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25771</attachid>
            <date>2008-12-05 04:57:51 -0800</date>
            <delta_ts>2008-12-05 05:01:40 -0800</delta_ts>
            <desc>proposed fix</desc>
            <filename>NoJSOnAbort.txt</filename>
            <type>text/plain</type>
            <size>10266</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzOTAyMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzYgQEAKKzIwMDgtMTItMDUgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEB3ZWJr
aXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY3MgorICAgICAgICBB
U1NFUlQobV90YWJsZSkgd2hlbiB4aHIub25hYm9ydCBjcmVhdGVzIGFub3RoZXIgeGhyIG9yIGNh
bGxzIHNldFRpbWVvdXQKKworICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0
L3NlbmQtb24tYWJvcnQuaHRtbAorCisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6Y2FuU3Vz
cGVuZEFjdGl2ZURPTU9iamVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6c3VzcGVuZEFjdGl2ZURPTU9iamVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6cmVzdW1lQWN0aXZlRE9NT2JqZWN0cyk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpzdG9wQWN0aXZlRE9NT2JqZWN0cyk6Cisg
ICAgICAgIEFkZCBhIGNvbW1lbnQgZXhwbGFpbmluZyB0aGF0IEFjdGl2ZURPTU9iamVjdCBtZXRo
b2RzIHNob3VsZG4ndCBleGVjdXRlIGFyYml0cmFyeSBKUy4KKworICAgICAgICAqIHhtbC9YTUxI
dHRwUmVxdWVzdC5jcHA6IChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6c3RvcCk6IERvbid0IGRp
c3BhdGNoIGV2ZW50cy4gVGhpcworICAgICAgICByZXZlcnRzIGEgcmVjZW50IGNoYW5nZSB0aGF0
IG1hZGUgdGhlIGJlaGF2aW9yIHNsaWdodGx5IGNsb3NlciB0byBGaXJlZm94IC0gYnV0IHRoZQor
ICAgICAgICBjb21wYXRpYmlsaXR5IGVmZmVjdCBzaG91bGQgYmUgdmVyeSBtaW5vciBpZiBhbnks
IGFuZCBGaXJlZm94IGl0c2VsZiBiZWhhdmVzIGluY29uc2lzdGVudGx5LgorCisyMDA4LTEyLTA1
ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpjYW5TdXNwZW5kQWN0aXZl
RE9NT2JqZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpz
dXNwZW5kQWN0aXZlRE9NT2JqZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRp
b25Db250ZXh0OjpyZXN1bWVBY3RpdmVET01PYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnN0b3BBY3RpdmVET01PYmplY3RzKToKKyAgICAgICAgKiB4
bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6
OnN0b3ApOgorCiAyMDA4LTEyLTA1ICBUb3IgQXJuZSBWZXN0YsO4ICA8dGF2ZXN0Ym9AdHJvbGx0
ZWNoLmNvbT4KIAogICAgICAgICBSdWJiZXItc3RhbXBlZCBieSBTaW1vbiBIYXVzbWFubi4KSW5k
ZXg6IFdlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCShyZXZpc2lvbiAzOTAyMCkK
KysrIFdlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTcsNiArMTE3LDcgQEAgdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpkZXN0cm95
ZWRNZQogCiBib29sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmNhblN1c3BlbmRBY3RpdmVET01P
YmplY3RzKCkKIHsKKyAgICAvLyBObyBwcm90ZWN0aW9uIGFnYWluc3QgbV9hY3RpdmVET01PYmpl
Y3RzIGNoYW5naW5nIGR1cmluZyBpdGVyYXRpb246IGNhblN1c3BlbmQoKSBzaG91bGRuJ3QgZXhl
Y3V0ZSBhcmJpdHJhcnkgSlMuCiAgICAgSGFzaE1hcDxBY3RpdmVET01PYmplY3QqLCB2b2lkKj46
Oml0ZXJhdG9yIGFjdGl2ZU9iamVjdHNFbmQgPSBtX2FjdGl2ZURPTU9iamVjdHMuZW5kKCk7CiAg
ICAgZm9yIChIYXNoTWFwPEFjdGl2ZURPTU9iamVjdCosIHZvaWQqPjo6aXRlcmF0b3IgaXRlciA9
IG1fYWN0aXZlRE9NT2JqZWN0cy5iZWdpbigpOyBpdGVyICE9IGFjdGl2ZU9iamVjdHNFbmQ7ICsr
aXRlcikgewogICAgICAgICBBU1NFUlQoaXRlci0+Zmlyc3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSA9PSB0aGlzKTsKQEAgLTEyOCw2ICsxMjksNyBAQCBib29sIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OmNhblN1c3BlbmRBCiAKIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6c3VzcGVu
ZEFjdGl2ZURPTU9iamVjdHMoKQogeworICAgIC8vIE5vIHByb3RlY3Rpb24gYWdhaW5zdCBtX2Fj
dGl2ZURPTU9iamVjdHMgY2hhbmdpbmcgZHVyaW5nIGl0ZXJhdGlvbjogc3VzcGVuZCgpIHNob3Vs
ZG4ndCBleGVjdXRlIGFyYml0cmFyeSBKUy4KICAgICBIYXNoTWFwPEFjdGl2ZURPTU9iamVjdCos
IHZvaWQqPjo6aXRlcmF0b3IgYWN0aXZlT2JqZWN0c0VuZCA9IG1fYWN0aXZlRE9NT2JqZWN0cy5l
bmQoKTsKICAgICBmb3IgKEhhc2hNYXA8QWN0aXZlRE9NT2JqZWN0Kiwgdm9pZCo+OjppdGVyYXRv
ciBpdGVyID0gbV9hY3RpdmVET01PYmplY3RzLmJlZ2luKCk7IGl0ZXIgIT0gYWN0aXZlT2JqZWN0
c0VuZDsgKytpdGVyKSB7CiAgICAgICAgIEFTU0VSVChpdGVyLT5maXJzdC0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpID09IHRoaXMpOwpAQCAtMTM3LDYgKzEzOSw3IEBAIHZvaWQgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6c3VzcGVuZEFjdGkKIAogdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OjpyZXN1bWVBY3RpdmVET01PYmplY3RzKCkKIHsKKyAgICAvLyBObyBwcm90ZWN0aW9uIGFnYWlu
c3QgbV9hY3RpdmVET01PYmplY3RzIGNoYW5naW5nIGR1cmluZyBpdGVyYXRpb246IHJlc3VtZSgp
IHNob3VsZG4ndCBleGVjdXRlIGFyYml0cmFyeSBKUy4KICAgICBIYXNoTWFwPEFjdGl2ZURPTU9i
amVjdCosIHZvaWQqPjo6aXRlcmF0b3IgYWN0aXZlT2JqZWN0c0VuZCA9IG1fYWN0aXZlRE9NT2Jq
ZWN0cy5lbmQoKTsKICAgICBmb3IgKEhhc2hNYXA8QWN0aXZlRE9NT2JqZWN0Kiwgdm9pZCo+Ojpp
dGVyYXRvciBpdGVyID0gbV9hY3RpdmVET01PYmplY3RzLmJlZ2luKCk7IGl0ZXIgIT0gYWN0aXZl
T2JqZWN0c0VuZDsgKytpdGVyKSB7CiAgICAgICAgIEFTU0VSVChpdGVyLT5maXJzdC0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpID09IHRoaXMpOwpAQCAtMTQ2LDYgKzE0OSw3IEBAIHZvaWQgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6cmVzdW1lQWN0aXYKIAogdm9pZCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpzdG9wQWN0aXZlRE9NT2JqZWN0cygpCiB7CisgICAgLy8gTm8gcHJvdGVjdGlvbiBh
Z2FpbnN0IG1fYWN0aXZlRE9NT2JqZWN0cyBjaGFuZ2luZyBkdXJpbmcgaXRlcmF0aW9uOiBzdG9w
KCkgc2hvdWxkbid0IGV4ZWN1dGUgYXJiaXRyYXJ5IEpTLgogICAgIEhhc2hNYXA8QWN0aXZlRE9N
T2JqZWN0Kiwgdm9pZCo+OjppdGVyYXRvciBhY3RpdmVPYmplY3RzRW5kID0gbV9hY3RpdmVET01P
YmplY3RzLmVuZCgpOwogICAgIGZvciAoSGFzaE1hcDxBY3RpdmVET01PYmplY3QqLCB2b2lkKj46
Oml0ZXJhdG9yIGl0ZXIgPSBtX2FjdGl2ZURPTU9iamVjdHMuYmVnaW4oKTsgaXRlciAhPSBhY3Rp
dmVPYmplY3RzRW5kOyArK2l0ZXIpIHsKICAgICAgICAgQVNTRVJUKGl0ZXItPmZpcnN0LT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkgPT0gdGhpcyk7CkluZGV4OiBXZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3Bw
CShyZXZpc2lvbiAzOTAyMCkKKysrIFdlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTQyNSw4ICsxNDI1LDcgQEAgYm9vbCBYTUxIdHRwUmVxdWVzdDo6Y2Fu
U3VzcGVuZCgpIGNvbnN0CiAKIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OnN0b3AoKQogewotICAgIGlm
IChtX2xvYWRlcikKLSAgICAgICAgYWJvcnQoKTsKKyAgICBpbnRlcm5hbEFib3J0KCk7CiB9CiAK
IHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmNvbnRleHREZXN0cm95ZWQoKQpJbmRleDogTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNp
b24gMzkwMjMpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwyMyBAQAorMjAwOC0xMi0wNSAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBo
dHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2Fib3J0LW9uLWxlYXZpbmctcGFnZS1leHBlY3RlZC50
eHQ6IFJlbW92ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hYm9ydC1v
bi1sZWF2aW5nLXBhZ2UuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3htbGh0
dHByZXF1ZXN0L2ZyYW1lLWxvYWQtY2FuY2VsbGVkLWFib3J0LWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9zbG93LXJlc3BvbnNlLnBs
OiBSZW1vdmVkLgorICAgICAgICAqIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvc2VuZC1vbi1h
Ym9ydC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMveG1saHR0cHJl
cXVlc3Qvc2VuZC1vbi1hYm9ydC5odG1sOiBBZGRlZC4KKworMjAwOC0xMi0wNSAgQWxleGV5IFBy
b3NrdXJ5YWtvdiAgPGFwQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2Fib3J0LW9u
LWxlYXZpbmctcGFnZS1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy94bWxodHRwcmVxdWVzdC9hYm9ydC1vbi1sZWF2aW5nLXBhZ2UuaHRtbDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2ZyYW1lLWxvYWQtY2FuY2VsbGVkLWFi
b3J0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jl
c291cmNlcy9zbG93LXJlc3BvbnNlLnBsOiBSZW1vdmVkLgorCiAyMDA4LTEyLTA1ICBKdW5nc2hp
ayBTaGluICA8anNoaW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFsZXhl
eSBQcm9za3VyeWFrb3YuCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1
ZXN0L2Fib3J0LW9uLWxlYXZpbmctcGFnZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hYm9ydC1vbi1sZWF2aW5nLXBhZ2Ut
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAzOTAyMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
eG1saHR0cHJlcXVlc3QvYWJvcnQtb24tbGVhdmluZy1wYWdlLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMSwyICswLDAgQEAKLUFMRVJUOiBTVUNDRVNTCi1TaG91bGQgaGF2ZSBzZWVu
IGEgU1VDQ0VTUyBhbGVydC4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJl
cXVlc3QvYWJvcnQtb24tbGVhdmluZy1wYWdlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hYm9ydC1vbi1sZWF2aW5nLXBhZ2UuaHRtbAko
cmV2aXNpb24gMzkwMjApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0
L2Fib3J0LW9uLWxlYXZpbmctcGFnZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDI0ICswLDAg
QEAKLTxib2R5PgotPGRpdiBpZD1yZXN1bHQ+PC9kaXY+Ci08c2NyaXB0PgotaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Ci19Ci0KLXRy
eSB7Ci0gICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdDsKLSAgICB4aHIub3BlbigiR0VU
IiwgInJlc291cmNlcy9zbG93LXJlc3BvbnNlLnBsIik7Ci0gICAgeGhyLm9ucmVhZHlzdGF0ZWNo
YW5nZSA9IGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAoeGhyLnJlYWR5U3RhdGUgPT0gNCkKLSAg
ICAgICAgICAgIGFsZXJ0KCJTVUNDRVNTIik7Ci0gICAgfQotICAgIHhoci5zZW5kKG51bGwpOwot
ICAgIAotICAgIHNldFRpbWVvdXQoIndpbmRvdy5sb2NhdGlvbi5ocmVmPSdkYXRhOnRleHQvaHRt
bCxTaG91bGQgaGF2ZSBzZWVuIGEgU1VDQ0VTUyBhbGVydC48c2NyaXB0PmlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTwvc2Ny
JyArICdpcHQ+JyIsIDEwMCk7Ci19IGNhdGNoIChleCkgewotICAgIGFsZXJ0KGV4KTsKLX0KLTwv
c2NyaXB0PgotPGEgaHJlZj0iYWJvdXQ6YmxhbmsiPmxpbms8L2E+Ci08L2JvZHk+CkluZGV4OiBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2ZyYW1lLWxvYWQtY2FuY2VsbGVk
LWFib3J0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3htbGh0dHByZXF1ZXN0L2ZyYW1lLWxvYWQtY2FuY2VsbGVkLWFib3J0LWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMzkwMjApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0
L2ZyYW1lLWxvYWQtY2FuY2VsbGVkLWFib3J0LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtOCw3ICs4LDYgQEAgVGhhdCBkaWRGaW5pc2hlZExvYWRpbmcoKSBjYWxsIHNob3VsZCBpbQog
TG9hZGluZyBzdWJmcmFtZSB0byBjYW5jZWwKIFJlYWR5IFN0YXRlOiAxCiBCb2R5IG9mIHN1YmZy
YW1lIGlzIGxvYWRlZC4gWE1MSHR0cFJlcXVlc3Qgc2hvdWxkIGJlIGluIHByb2dyZXNzLiBOdWtp
bmcgdGhlIGlmcmFtZQotUmVhZHkgU3RhdGU6IDQKIElmcmFtZSB1bmxvYWRlZAogSWZyYW1lIHJl
bW92ZWQKIApJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9zZW5k
LW9uLWFib3J0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3htbGh0dHByZXF1ZXN0L3NlbmQtb24tYWJvcnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9zZW5kLW9uLWFib3J0
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAorUEFTUzogTm8gYXNzZXJ0
aW9uIGZhaWx1cmUuCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3htbGh0dHByZXF1ZXN0L3NlbmQtb24tYWJvcnQtZXhwZWN0ZWQudHh0Cl9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTmFt
ZTogc3ZuOm1pbWUtdHlwZQogICArIHRleHQvcGxhaW4KTmFtZTogc3ZuOmVvbC1zdHlsZQogICAr
IG5hdGl2ZQoKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvc2Vu
ZC1vbi1hYm9ydC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1s
aHR0cHJlcXVlc3Qvc2VuZC1vbi1hYm9ydC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9zZW5kLW9uLWFib3J0Lmh0bWwJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMjggQEAKKzwhLS0gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyNjcyCisgICAgIEFTU0VSVChtX3RhYmxlKSB3aGVuIHhoci5vbmFib3J0IGNy
ZWF0ZXMgYW5vdGhlciB4aHIgb3IgY2FsbHMgc2V0VGltZW91dAorLS0+Cis8c2NyaXB0PgoraWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
Cit9CisKK2Z1bmN0aW9uIGFib3J0SGFuZGxlcigpCit7CisgICAgeGhyMiA9IG5ldyBYTUxIdHRw
UmVxdWVzdDsKKyAgICBzZXRUaW1lb3V0KCJhbGVydCgnRkFBQUlMIScpIiwgMTAwKTsKK30KKwor
ZnVuY3Rpb24gb25yZWFkeXN0YXRlY2hhbmdlSGFuZGxlcigpCit7CisgICAgaWYgKHhoci5yZWFk
eVN0YXRlID09IDQpCisgICAgICAgIGFib3J0SGFuZGxlcigpOworfQorCit4aHIgPSBuZXcgWE1M
SHR0cFJlcXVlc3Q7Cit4aHIub25hYm9ydCA9IGFib3J0SGFuZGxlcjsKK3hoci5vbnJlYWR5c3Rh
dGVjaGFuZ2UgPSBvbnJlYWR5c3RhdGVjaGFuZ2VIYW5kbGVyOworeGhyLm9wZW4oIkdFVCIsICJm
b28udHh0IiwgdHJ1ZSk7IAoreGhyLnNlbmQobnVsbCk7Citsb2NhdGlvbi5ocmVmID0gImRhdGE6
dGV4dC9odG1sLDxzY3JpcHQ+aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgbGF5b3V0
VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpPC9zY3IiICsgImlwdD5QQVNTOiBObyBhc3NlcnRp
b24gZmFpbHVyZS4iOworPC9zY3JpcHQ+CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3NlbmQtb24tYWJvcnQuaHRtbApfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
Ck5hbWU6IHN2bjptaW1lLXR5cGUKICAgKyB0ZXh0L2h0bWwKCkluZGV4OiBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9zbG93LXJlc3BvbnNlLnBsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvcmVzb3VyY2Vz
L3Nsb3ctcmVzcG9uc2UucGwJKHJldmlzaW9uIDM5MDIwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvc2xvdy1yZXNwb25zZS5wbAkod29ya2luZyBj
b3B5KQpAQCAtMSwxNCArMCwwIEBACi0jIS91c3IvYmluL3BlcmwgLXcKLQotIyBmbHVzaCB0aGUg
YnVmZmVycyBhZnRlciBlYWNoIHByaW50Ci1zZWxlY3QgKFNURE9VVCk7Ci0kfCA9IDE7Ci0KLXBy
aW50ICJDb250ZW50LVR5cGU6IHRleHQvcGxhaW5cclxuIjsKLXByaW50ICJFeHBpcmVzOiBUaHUs
IDAxIERlYyAyMDAzIDE2OjAwOjAwIEdNVFxyXG4iOwotcHJpbnQgIkNhY2hlLUNvbnRyb2w6IG5v
LXN0b3JlLCBuby1jYWNoZSwgbXVzdC1yZXZhbGlkYXRlXHJcbiI7Ci1wcmludCAiUHJhZ21hOiBu
by1jYWNoZVxyXG4iOwotcHJpbnQgIlxyXG4iOwotCi1zbGVlcCAyOwotcHJpbnQgIlJlc3BvbnNl
O1xuIjsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25772</attachid>
            <date>2008-12-05 05:01:40 -0800</date>
            <delta_ts>2008-12-05 06:06:50 -0800</delta_ts>
            <desc>proposed fix</desc>
            <filename>NoJSOnAbort.txt</filename>
            <type>text/plain</type>
            <size>10078</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzOTAyMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzYgQEAKKzIwMDgtMTItMDUgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEB3ZWJr
aXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY3MgorICAgICAgICBB
U1NFUlQobV90YWJsZSkgd2hlbiB4aHIub25hYm9ydCBjcmVhdGVzIGFub3RoZXIgeGhyIG9yIGNh
bGxzIHNldFRpbWVvdXQKKworICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0
L3NlbmQtb24tYWJvcnQuaHRtbAorCisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6Y2FuU3Vz
cGVuZEFjdGl2ZURPTU9iamVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6c3VzcGVuZEFjdGl2ZURPTU9iamVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6cmVzdW1lQWN0aXZlRE9NT2JqZWN0cyk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpzdG9wQWN0aXZlRE9NT2JqZWN0cyk6Cisg
ICAgICAgIEFkZCBhIGNvbW1lbnQgZXhwbGFpbmluZyB0aGF0IEFjdGl2ZURPTU9iamVjdCBtZXRo
b2RzIHNob3VsZG4ndCBleGVjdXRlIGFyYml0cmFyeSBKUy4KKworICAgICAgICAqIHhtbC9YTUxI
dHRwUmVxdWVzdC5jcHA6IChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6c3RvcCk6IERvbid0IGRp
c3BhdGNoIGV2ZW50cy4gVGhpcworICAgICAgICByZXZlcnRzIGEgcmVjZW50IGNoYW5nZSB0aGF0
IG1hZGUgdGhlIGJlaGF2aW9yIHNsaWdodGx5IGNsb3NlciB0byBGaXJlZm94IC0gYnV0IHRoZQor
ICAgICAgICBjb21wYXRpYmlsaXR5IGVmZmVjdCBzaG91bGQgYmUgdmVyeSBtaW5vciBpZiBhbnks
IGFuZCBGaXJlZm94IGl0c2VsZiBiZWhhdmVzIGluY29uc2lzdGVudGx5LgorCisyMDA4LTEyLTA1
ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpjYW5TdXNwZW5kQWN0aXZl
RE9NT2JqZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpz
dXNwZW5kQWN0aXZlRE9NT2JqZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRp
b25Db250ZXh0OjpyZXN1bWVBY3RpdmVET01PYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnN0b3BBY3RpdmVET01PYmplY3RzKToKKyAgICAgICAgKiB4
bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6
OnN0b3ApOgorCiAyMDA4LTEyLTA1ICBUb3IgQXJuZSBWZXN0YsO4ICA8dGF2ZXN0Ym9AdHJvbGx0
ZWNoLmNvbT4KIAogICAgICAgICBSdWJiZXItc3RhbXBlZCBieSBTaW1vbiBIYXVzbWFubi4KSW5k
ZXg6IFdlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCShyZXZpc2lvbiAzOTAyMCkK
KysrIFdlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTcsNiArMTE3LDcgQEAgdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpkZXN0cm95
ZWRNZQogCiBib29sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmNhblN1c3BlbmRBY3RpdmVET01P
YmplY3RzKCkKIHsKKyAgICAvLyBObyBwcm90ZWN0aW9uIGFnYWluc3QgbV9hY3RpdmVET01PYmpl
Y3RzIGNoYW5naW5nIGR1cmluZyBpdGVyYXRpb246IGNhblN1c3BlbmQoKSBzaG91bGRuJ3QgZXhl
Y3V0ZSBhcmJpdHJhcnkgSlMuCiAgICAgSGFzaE1hcDxBY3RpdmVET01PYmplY3QqLCB2b2lkKj46
Oml0ZXJhdG9yIGFjdGl2ZU9iamVjdHNFbmQgPSBtX2FjdGl2ZURPTU9iamVjdHMuZW5kKCk7CiAg
ICAgZm9yIChIYXNoTWFwPEFjdGl2ZURPTU9iamVjdCosIHZvaWQqPjo6aXRlcmF0b3IgaXRlciA9
IG1fYWN0aXZlRE9NT2JqZWN0cy5iZWdpbigpOyBpdGVyICE9IGFjdGl2ZU9iamVjdHNFbmQ7ICsr
aXRlcikgewogICAgICAgICBBU1NFUlQoaXRlci0+Zmlyc3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSA9PSB0aGlzKTsKQEAgLTEyOCw2ICsxMjksNyBAQCBib29sIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OmNhblN1c3BlbmRBCiAKIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6c3VzcGVu
ZEFjdGl2ZURPTU9iamVjdHMoKQogeworICAgIC8vIE5vIHByb3RlY3Rpb24gYWdhaW5zdCBtX2Fj
dGl2ZURPTU9iamVjdHMgY2hhbmdpbmcgZHVyaW5nIGl0ZXJhdGlvbjogc3VzcGVuZCgpIHNob3Vs
ZG4ndCBleGVjdXRlIGFyYml0cmFyeSBKUy4KICAgICBIYXNoTWFwPEFjdGl2ZURPTU9iamVjdCos
IHZvaWQqPjo6aXRlcmF0b3IgYWN0aXZlT2JqZWN0c0VuZCA9IG1fYWN0aXZlRE9NT2JqZWN0cy5l
bmQoKTsKICAgICBmb3IgKEhhc2hNYXA8QWN0aXZlRE9NT2JqZWN0Kiwgdm9pZCo+OjppdGVyYXRv
ciBpdGVyID0gbV9hY3RpdmVET01PYmplY3RzLmJlZ2luKCk7IGl0ZXIgIT0gYWN0aXZlT2JqZWN0
c0VuZDsgKytpdGVyKSB7CiAgICAgICAgIEFTU0VSVChpdGVyLT5maXJzdC0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpID09IHRoaXMpOwpAQCAtMTM3LDYgKzEzOSw3IEBAIHZvaWQgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6c3VzcGVuZEFjdGkKIAogdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OjpyZXN1bWVBY3RpdmVET01PYmplY3RzKCkKIHsKKyAgICAvLyBObyBwcm90ZWN0aW9uIGFnYWlu
c3QgbV9hY3RpdmVET01PYmplY3RzIGNoYW5naW5nIGR1cmluZyBpdGVyYXRpb246IHJlc3VtZSgp
IHNob3VsZG4ndCBleGVjdXRlIGFyYml0cmFyeSBKUy4KICAgICBIYXNoTWFwPEFjdGl2ZURPTU9i
amVjdCosIHZvaWQqPjo6aXRlcmF0b3IgYWN0aXZlT2JqZWN0c0VuZCA9IG1fYWN0aXZlRE9NT2Jq
ZWN0cy5lbmQoKTsKICAgICBmb3IgKEhhc2hNYXA8QWN0aXZlRE9NT2JqZWN0Kiwgdm9pZCo+Ojpp
dGVyYXRvciBpdGVyID0gbV9hY3RpdmVET01PYmplY3RzLmJlZ2luKCk7IGl0ZXIgIT0gYWN0aXZl
T2JqZWN0c0VuZDsgKytpdGVyKSB7CiAgICAgICAgIEFTU0VSVChpdGVyLT5maXJzdC0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpID09IHRoaXMpOwpAQCAtMTQ2LDYgKzE0OSw3IEBAIHZvaWQgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6cmVzdW1lQWN0aXYKIAogdm9pZCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpzdG9wQWN0aXZlRE9NT2JqZWN0cygpCiB7CisgICAgLy8gTm8gcHJvdGVjdGlvbiBh
Z2FpbnN0IG1fYWN0aXZlRE9NT2JqZWN0cyBjaGFuZ2luZyBkdXJpbmcgaXRlcmF0aW9uOiBzdG9w
KCkgc2hvdWxkbid0IGV4ZWN1dGUgYXJiaXRyYXJ5IEpTLgogICAgIEhhc2hNYXA8QWN0aXZlRE9N
T2JqZWN0Kiwgdm9pZCo+OjppdGVyYXRvciBhY3RpdmVPYmplY3RzRW5kID0gbV9hY3RpdmVET01P
YmplY3RzLmVuZCgpOwogICAgIGZvciAoSGFzaE1hcDxBY3RpdmVET01PYmplY3QqLCB2b2lkKj46
Oml0ZXJhdG9yIGl0ZXIgPSBtX2FjdGl2ZURPTU9iamVjdHMuYmVnaW4oKTsgaXRlciAhPSBhY3Rp
dmVPYmplY3RzRW5kOyArK2l0ZXIpIHsKICAgICAgICAgQVNTRVJUKGl0ZXItPmZpcnN0LT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkgPT0gdGhpcyk7CkluZGV4OiBXZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3Bw
CShyZXZpc2lvbiAzOTAyMCkKKysrIFdlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTQyNSw4ICsxNDI1LDcgQEAgYm9vbCBYTUxIdHRwUmVxdWVzdDo6Y2Fu
U3VzcGVuZCgpIGNvbnN0CiAKIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OnN0b3AoKQogewotICAgIGlm
IChtX2xvYWRlcikKLSAgICAgICAgYWJvcnQoKTsKKyAgICBpbnRlcm5hbEFib3J0KCk7CiB9CiAK
IHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmNvbnRleHREZXN0cm95ZWQoKQpJbmRleDogTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNp
b24gMzkwMjMpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxOSBAQAorMjAwOC0xMi0wNSAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNjcyCisgICAgICAgIEFTU0VS
VChtX3RhYmxlKSB3aGVuIHhoci5vbmFib3J0IGNyZWF0ZXMgYW5vdGhlciB4aHIgb3IgY2FsbHMg
c2V0VGltZW91dAorCisgICAgICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9zZW5kLW9u
LWFib3J0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy94bWxodHRw
cmVxdWVzdC9zZW5kLW9uLWFib3J0Lmh0bWw6IEFkZGVkLgorCisgICAgICAgICogaHR0cC90ZXN0
cy94bWxodHRwcmVxdWVzdC9hYm9ydC1vbi1sZWF2aW5nLXBhZ2UtZXhwZWN0ZWQudHh0OiBSZW1v
dmVkLgorICAgICAgICAqIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWJvcnQtb24tbGVhdmlu
Zy1wYWdlLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVz
dC9mcmFtZS1sb2FkLWNhbmNlbGxlZC1hYm9ydC1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0
cC90ZXN0cy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvc2xvdy1yZXNwb25zZS5wbDogUmVtb3Zl
ZC4KKyAgICAgICAgU3RvcHBpbmcgYW4gWEhSIGR1ZSB0byBuYXZpZ2F0aW9uIG5vIGxvbmdlciBk
aXNwYXRjaGVzIGV2ZW50cy4KKwogMjAwOC0xMi0wNSAgSnVuZ3NoaWsgU2hpbiAgPGpzaGluQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292LgpJ
bmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hYm9ydC1vbi1sZWF2
aW5nLXBhZ2UtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVz
dHMveG1saHR0cHJlcXVlc3QvYWJvcnQtb24tbGVhdmluZy1wYWdlLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMzkwMjApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2Fi
b3J0LW9uLWxlYXZpbmctcGFnZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMiAr
MCwwIEBACi1BTEVSVDogU1VDQ0VTUwotU2hvdWxkIGhhdmUgc2VlbiBhIFNVQ0NFU1MgYWxlcnQu
CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2Fib3J0LW9uLWxl
YXZpbmctcGFnZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1s
aHR0cHJlcXVlc3QvYWJvcnQtb24tbGVhdmluZy1wYWdlLmh0bWwJKHJldmlzaW9uIDM5MDIwKQor
KysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9hYm9ydC1vbi1sZWF2aW5n
LXBhZ2UuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwyNCArMCwwIEBACi08Ym9keT4KLTxkaXYg
aWQ9cmVzdWx0PjwvZGl2PgotPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotfQotCi10cnkgewotICAgIHZhciB4aHIg
PSBuZXcgWE1MSHR0cFJlcXVlc3Q7Ci0gICAgeGhyLm9wZW4oIkdFVCIsICJyZXNvdXJjZXMvc2xv
dy1yZXNwb25zZS5wbCIpOwotICAgIHhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigp
IHsKLSAgICAgICAgaWYgKHhoci5yZWFkeVN0YXRlID09IDQpCi0gICAgICAgICAgICBhbGVydCgi
U1VDQ0VTUyIpOwotICAgIH0KLSAgICB4aHIuc2VuZChudWxsKTsKLSAgICAKLSAgICBzZXRUaW1l
b3V0KCJ3aW5kb3cubG9jYXRpb24uaHJlZj0nZGF0YTp0ZXh0L2h0bWwsU2hvdWxkIGhhdmUgc2Vl
biBhIFNVQ0NFU1MgYWxlcnQuPHNjcmlwdD5pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk8L3NjcicgKyAnaXB0PiciLCAxMDAp
OwotfSBjYXRjaCAoZXgpIHsKLSAgICBhbGVydChleCk7Ci19Ci08L3NjcmlwdD4KLTxhIGhyZWY9
ImFib3V0OmJsYW5rIj5saW5rPC9hPgotPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy94bWxodHRwcmVxdWVzdC9mcmFtZS1sb2FkLWNhbmNlbGxlZC1hYm9ydC1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9m
cmFtZS1sb2FkLWNhbmNlbGxlZC1hYm9ydC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDM5MDIwKQor
KysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9mcmFtZS1sb2FkLWNhbmNl
bGxlZC1hYm9ydC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTgsNyArOCw2IEBAIFRo
YXQgZGlkRmluaXNoZWRMb2FkaW5nKCkgY2FsbCBzaG91bGQgaW0KIExvYWRpbmcgc3ViZnJhbWUg
dG8gY2FuY2VsCiBSZWFkeSBTdGF0ZTogMQogQm9keSBvZiBzdWJmcmFtZSBpcyBsb2FkZWQuIFhN
TEh0dHBSZXF1ZXN0IHNob3VsZCBiZSBpbiBwcm9ncmVzcy4gTnVraW5nIHRoZSBpZnJhbWUKLVJl
YWR5IFN0YXRlOiA0CiBJZnJhbWUgdW5sb2FkZWQKIElmcmFtZSByZW1vdmVkCiAKSW5kZXg6IExh
eW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvc2VuZC1vbi1hYm9ydC1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVz
dC9zZW5kLW9uLWFib3J0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvc2VuZC1vbi1hYm9ydC1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEgQEAKK1BBU1M6IE5vIGFzc2VydGlvbiBmYWlsdXJlLgoKUHJv
cGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9z
ZW5kLW9uLWFib3J0LWV4cGVjdGVkLnR4dApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk5hbWU6IHN2bjptaW1lLXR5cGUK
ICAgKyB0ZXh0L3BsYWluCk5hbWU6IHN2bjplb2wtc3R5bGUKICAgKyBuYXRpdmUKCkluZGV4OiBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3NlbmQtb24tYWJvcnQuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3NlbmQt
b24tYWJvcnQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1s
aHR0cHJlcXVlc3Qvc2VuZC1vbi1hYm9ydC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI4
IEBACis8IS0tIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY3Mgor
ICAgICBBU1NFUlQobV90YWJsZSkgd2hlbiB4aHIub25hYm9ydCBjcmVhdGVzIGFub3RoZXIgeGhy
IG9yIGNhbGxzIHNldFRpbWVvdXQKKy0tPgorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cisg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCitmdW5jdGlvbiBh
Ym9ydEhhbmRsZXIoKQoreworICAgIHhocjIgPSBuZXcgWE1MSHR0cFJlcXVlc3Q7CisgICAgc2V0
VGltZW91dCgiYWxlcnQoJ0ZBQUFJTCEnKSIsIDEwMCk7Cit9CisKK2Z1bmN0aW9uIG9ucmVhZHlz
dGF0ZWNoYW5nZUhhbmRsZXIoKQoreworICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PSA0KQorICAg
ICAgICBhYm9ydEhhbmRsZXIoKTsKK30KKworeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0OworeGhy
Lm9uYWJvcnQgPSBhYm9ydEhhbmRsZXI7Cit4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gb25yZWFk
eXN0YXRlY2hhbmdlSGFuZGxlcjsKK3hoci5vcGVuKCJHRVQiLCAiZm9vLnR4dCIsIHRydWUpOyAK
K3hoci5zZW5kKG51bGwpOworbG9jYXRpb24uaHJlZiA9ICJkYXRhOnRleHQvaHRtbCw8c2NyaXB0
PmlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIGxheW91dFRlc3RDb250cm9sbGVyLm5v
dGlmeURvbmUoKTwvc2NyIiArICJpcHQ+UEFTUzogTm8gYXNzZXJ0aW9uIGZhaWx1cmUuIjsKKzwv
c2NyaXB0PgoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxo
dHRwcmVxdWVzdC9zZW5kLW9uLWFib3J0Lmh0bWwKX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46bWltZS10
eXBlCiAgICsgdGV4dC9odG1sCgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRw
cmVxdWVzdC9yZXNvdXJjZXMvc2xvdy1yZXNwb25zZS5wbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9zbG93LXJlc3BvbnNlLnBs
CShyZXZpc2lvbiAzOTAyMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVl
c3QvcmVzb3VyY2VzL3Nsb3ctcmVzcG9uc2UucGwJKHdvcmtpbmcgY29weSkKQEAgLTEsMTQgKzAs
MCBAQAotIyEvdXNyL2Jpbi9wZXJsIC13Ci0KLSMgZmx1c2ggdGhlIGJ1ZmZlcnMgYWZ0ZXIgZWFj
aCBwcmludAotc2VsZWN0IChTVERPVVQpOwotJHwgPSAxOwotCi1wcmludCAiQ29udGVudC1UeXBl
OiB0ZXh0L3BsYWluXHJcbiI7Ci1wcmludCAiRXhwaXJlczogVGh1LCAwMSBEZWMgMjAwMyAxNjow
MDowMCBHTVRcclxuIjsKLXByaW50ICJDYWNoZS1Db250cm9sOiBuby1zdG9yZSwgbm8tY2FjaGUs
IG11c3QtcmV2YWxpZGF0ZVxyXG4iOwotcHJpbnQgIlByYWdtYTogbm8tY2FjaGVcclxuIjsKLXBy
aW50ICJcclxuIjsKLQotc2xlZXAgMjsKLXByaW50ICJSZXNwb25zZTtcbiI7Cg==
</data>
<flag name="review"
          id="12062"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>