<?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>78167</bug_id>
          
          <creation_ts>2012-02-08 15:37:31 -0800</creation_ts>
          <short_desc>[Chromium] IndexedDB: IDBVersionChangeRequest V8 wrapper not generated as ActiveDOMObject</short_desc>
          <delta_ts>2012-02-09 17:54:59 -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>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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>
          
          <blocked>78004</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Joshua Bell">jsbell</reporter>
          <assigned_to name="Joshua Bell">jsbell</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dgrogan</cc>
    
    <cc>haraken</cc>
    
    <cc>jochen</cc>
    
    <cc>michaeln</cc>
    
    <cc>ojan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>552556</commentid>
    <comment_count>0</comment_count>
      <attachid>126167</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-02-08 15:37:31 -0800</bug_when>
    <thetext>Created attachment 126167
Repro case

The IndexedDB implementation relies on the ActiveDOMObject concept to keep certain objects alive when they have pending activity. IDBRequest and its subclass IDBVersionChangeRequest need to be kept alive if they are expecting events to be raised, even if all of the references from script have been dropped.

However, this isn&apos;t working for IDBVersionChangeRequest, meaning that sometimes the events from IDBFactory.deleteDatabase() and IDBDatabase.setVersion() never fire. See attached repro; if run in DRT or Chrome with --js-flags=&apos;--expose-gc&apos; to expose window.gc() the onsuccess event will never fire.

It appears that the IDBVersionChangeRequest.idl&apos;s derivation from IDBRequest is insufficient; the generated V8IDBVersionChangeRequest is missing the logic to ensure that the V8 wrapper is treated as an ActiveDOMObject. With this change:

--- a/Source/WebCore/storage/IDBVersionChangeRequest.idl
+++ b/Source/WebCore/storage/IDBVersionChangeRequest.idl
@@ -27,6 +27,7 @@ module storage {
 
     interface [
         Conditional=INDEXED_DATABASE,
+        ActiveDOMObject,
         EventTarget
     ] IDBVersionChangeRequest : IDBRequest {
         attribute EventListener onblocked;

The following is diff is produced in the generated V8IDBVersionChangeRequest.h/.cpp:

diff -uw 1/V8IDBVersionChangeRequest.h 2/V8IDBVersionChangeRequest.h
--- 1/V8IDBVersionChangeRequest.h	2012-02-08 15:25:48.927992208 -0800
+++ 2/V8IDBVersionChangeRequest.h	2012-02-08 15:26:26.368725887 -0800
@@ -25,7 +25,6 @@
 
 #include &quot;IDBVersionChangeRequest.h&quot;
 #include &quot;V8DOMWrapper.h&quot;
-#include &quot;V8IDBRequest.h&quot;
 #include &quot;WrapperTypeInfo.h&quot;
 #include &lt;v8.h&gt;
 #include &lt;wtf/HashMap.h&gt;
@@ -35,7 +34,7 @@
 
 class V8IDBVersionChangeRequest {
 public:
-    static const bool hasDependentLifetime = V8IDBRequest::hasDependentLifetime;
+    static const bool hasDependentLifetime = true;
     static bool HasInstance(v8::Handle&lt;v8::Value&gt;);
     static v8::Persistent&lt;v8::FunctionTemplate&gt; GetRawTemplate();
     static v8::Persistent&lt;v8::FunctionTemplate&gt; GetTemplate();
@@ -46,6 +45,7 @@
     inline static v8::Handle&lt;v8::Object&gt; wrap(IDBVersionChangeRequest*);
     static void derefObject(void*);
     static WrapperTypeInfo info;
+    static ActiveDOMObject* toActiveDOMObject(v8::Handle&lt;v8::Object&gt;);
     static const int eventListenerCacheIndex = v8DefaultWrapperInternalFieldCount + 0;
     static const int internalFieldCount = v8DefaultWrapperInternalFieldCount + 1;
     static v8::Handle&lt;v8::Object&gt; existingWrapper(IDBVersionChangeRequest*);
@@ -56,7 +56,7 @@
 
 ALWAYS_INLINE v8::Handle&lt;v8::Object&gt; V8IDBVersionChangeRequest::existingWrapper(IDBVersionChangeRequest* impl)
 {
-    return getDOMObjectMap().get(impl);
+    return getActiveDOMObjectMap().get(impl);
 }
 
 v8::Handle&lt;v8::Object&gt; V8IDBVersionChangeRequest::wrap(IDBVersionChangeRequest* impl)

diff -uw 1/V8IDBVersionChangeRequest.cpp 2/V8IDBVersionChangeRequest.cpp
--- 1/V8IDBVersionChangeRequest.cpp	2012-02-08 15:25:48.927992208 -0800
+++ 2/V8IDBVersionChangeRequest.cpp	2012-02-08 15:26:26.368725887 -0800
@@ -37,7 +37,7 @@
 
 namespace WebCore {
 
-WrapperTypeInfo V8IDBVersionChangeRequest::info = { V8IDBVersionChangeRequest::GetTemplate, V8IDBVersionChangeRequest::derefObject, 0, &amp;V8IDBRequest::info };
+WrapperTypeInfo V8IDBVersionChangeRequest::info = { V8IDBVersionChangeRequest::GetTemplate, V8IDBVersionChangeRequest::derefObject, V8IDBVersionChangeRequest::toActiveDOMObject, &amp;V8IDBRequest::info };
 
 namespace IDBVersionChangeRequestInternal {
 
@@ -114,6 +114,10 @@
     return GetRawTemplate()-&gt;HasInstance(value);
 }
 
+ActiveDOMObject* V8IDBVersionChangeRequest::toActiveDOMObject(v8::Handle&lt;v8::Object&gt; object)
+{
+    return toNative(object);
+}      
 
 v8::Handle&lt;v8::Object&gt; V8IDBVersionChangeRequest::wrapSlow(IDBVersionChangeRequest* impl)
 {
@@ -128,7 +132,7 @@
 
     if (!hasDependentLifetime)
         wrapperHandle.MarkIndependent();
-    getDOMObjectMap().set(impl, wrapperHandle);
+    getActiveDOMObjectMap().set(impl, wrapperHandle);
     return wrapper;
 }
 
It seems like that should happen &quot;automagically&quot; in CodeGeneratorV8.pm, but perhaps adding the ActiveDOMObject annotation to the derived class is the right fix?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552665</commentid>
    <comment_count>1</comment_count>
      <attachid>126199</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-02-08 17:19:11 -0800</bug_when>
    <thetext>Created attachment 126199
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552667</commentid>
    <comment_count>2</comment_count>
      <attachid>126199</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-02-08 17:20:33 -0800</bug_when>
    <thetext>Comment on attachment 126199
Patch

Note that the layout test is not terribly exciting, but it will timeout without the IDL change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552670</commentid>
    <comment_count>3</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-02-08 17:26:33 -0800</bug_when>
    <thetext>LGTM idb-wise</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552809</commentid>
    <comment_count>4</comment_count>
      <attachid>126199</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-08 20:35:42 -0800</bug_when>
    <thetext>Comment on attachment 126199
Patch

Attachment 126199 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11480044

New failing tests:
platform/chromium/compositing/layout-width-change.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553242</commentid>
    <comment_count>5</comment_count>
      <attachid>126321</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-02-09 09:57:14 -0800</bug_when>
    <thetext>Created attachment 126321
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553243</commentid>
    <comment_count>6</comment_count>
      <attachid>126321</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-02-09 09:58:01 -0800</bug_when>
    <thetext>Comment on attachment 126321
Patch

Re-upping to remove some whitespace and try and get a clean cr-linux run.

abarth@ can you review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553337</commentid>
    <comment_count>7</comment_count>
      <attachid>126321</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-09 11:08:07 -0800</bug_when>
    <thetext>Comment on attachment 126321
Patch

Yeah, it seems like this should be inherited.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553339</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-09 11:08:32 -0800</bug_when>
    <thetext>@haraken: This looks like a subtle gotcha in the code generator.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553430</commentid>
    <comment_count>9</comment_count>
      <attachid>126321</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-09 12:49:50 -0800</bug_when>
    <thetext>Comment on attachment 126321
Patch

Clearing flags on attachment: 126321

Committed r107278: &lt;http://trac.webkit.org/changeset/107278&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553431</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-09 12:49:58 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553647</commentid>
    <comment_count>11</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-02-09 17:42:26 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 126321 [details])
&gt; Yeah, it seems like this should be inherited.

The inheritance will introduce [ActiveDOMObject] to classes which have not had [ActiveDOMObject] so far, but would it be OK? For example, DedicatedWorkerContext and SharedWorkerContext do not have [ActiveDOMObject] but inherit Worker, which already has [ActiveDOMObject].

IMHO, I am neutral about inheriting IDL attributes. Explicitly writing IDL attributes might be less confusing for people.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553651</commentid>
    <comment_count>12</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-09 17:50:56 -0800</bug_when>
    <thetext>Isn&apos;t it a bug whenever we don&apos;t inherit this attribute?  The wrappers will be collected too early, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553657</commentid>
    <comment_count>13</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-02-09 17:54:59 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; Isn&apos;t it a bug whenever we don&apos;t inherit this attribute?  The wrappers will be collected too early, right?

Let&apos;s discuss the topic in bug 78302.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>126167</attachid>
            <date>2012-02-08 15:37:31 -0800</date>
            <delta_ts>2012-02-08 15:37:31 -0800</delta_ts>
            <desc>Repro case</desc>
            <filename>wedge.html</filename>
            <type>text/html</type>
            <size>850</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxzY3JpcHQ+CmlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CiAgLy9sYXlvdXRUZXN0Q29u
dHJvbGxlci53YWl0VW50aWxEb25lKCk7Cn0KCndpbmRvdy5pbmRleGVkREIgPSB3aW5kb3cuaW5k
ZXhlZERCIHx8IHdpbmRvdy53ZWJraXRJbmRleGVkREI7Cgp3aW5kb3cub25sb2FkID0gZnVuY3Rp
b24gKCkgewogIGNvbnNvbGUubG9nKCdjYWxsaW5nIGRlbGV0ZURhdGFiYXNlJyk7CgogIHZhciBy
ZXF1ZXN0ID0gaW5kZXhlZERCLmRlbGV0ZURhdGFiYXNlKCd3ZWRnZS1kYicpOwogIC8vd2luZG93
LnN0YXNoID0gcmVxdWVzdDsgLy8gdW5jb21tZW50IHRvIGhpZGUgdGhlIGJ1ZwoKICBjb25zb2xl
LmxvZygic2V0dGluZyBldmVudCBsaXN0ZW5lcnMiKTsKICByZXF1ZXN0Lm9uZXJyb3IgPSBmdW5j
dGlvbiAoKSB7IGNvbnNvbGUubG9nKCJvbmVycm9yIGV2ZW50IGZpcmVkIik7IH07CiAgcmVxdWVz
dC5vbmJsb2NrZWQgPSBmdW5jdGlvbiAoKSB7IGNvbnNvbGUubG9nKCJvbmJsb2NrZWQgZXZlbnQg
ZmlyZWQiKTsgfTsKICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHsgY29uc29sZS5s
b2coIm9uc3VjY2VzcyBldmVudCBmaXJlZCIpOyB9OwogIGNvbnNvbGUubG9nKCJldmVudCBsaXN0
ZW5lcnMgc2V0Iik7CgogIGlmICh3aW5kb3cuZ2MpIHsKICAgIGNvbnNvbGUubG9nKCJpbnZva2lu
ZyBnYyIpOwogICAgcmVxdWVzdCA9IG51bGw7CiAgICB3aW5kb3cuZ2MoKTsKICAgIGNvbnNvbGUu
bG9nKCJnYyBjb21wbGV0ZSIpOwogIH0KfTsKCjwvc2NyaXB0Pgo8Ym9keT48L2JvZHk+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126199</attachid>
            <date>2012-02-08 17:19:11 -0800</date>
            <delta_ts>2012-02-09 09:57:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78167-20120208171910.patch</filename>
            <type>text/plain</type>
            <size>6084</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3MTQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjRiMTBlMzY1YzkyMjE4
YzJlNTQ0ZTQyOTdmOTI4ODhlNTI2MzVjMi4uOWRhNDVhODRjMDc2NjZkZWUzODBjNWJjYzYzMjk1
ZWQ1ZDgwNzJmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTAyLTA4ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBJbmRl
eGVkREI6IElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0IFY4IHdyYXBwZXIgbm90IGdlbmVyYXRlZCBh
cyBBY3RpdmVET01PYmplY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTc4MTY3CisKKyAgICAgICAgQWRkIEFjdGl2ZURPTU9iamVjdCBhbm5vdGF0aW9u
IHRvIElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0LmlkbDsgaXQgaXMgbm90IAorICAgICAgICBhdXRv
bWFnaWNhbGx5IGluaGVyaXRlZCBmcm9tIElEQlJlcXVlc3QuaWRsLgorICAgICAgICAKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogc3RvcmFnZS9p
bmRleGVkZGIvdmVyc2lvbmNoYW5nZXJlcXVlc3QtYWN0aXZlZG9tb2JqZWN0Lmh0bWwKKworICAg
ICAgICAqIHN0b3JhZ2UvSURCVmVyc2lvbkNoYW5nZVJlcXVlc3QuaWRsOgorCiAyMDEyLTAyLTA4
ICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZW1vdmUg
W0N1c3RvbUhlYWRlcl0gZnJvbSBDYW52YXNQaXhlbEFycmF5IGFuZCByZW5hbWUgW0N1c3RvbUhl
YWRlcl0gdG8gW0pTQ3VzdG9tSGVhZGVyXQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9JREJWZXJzaW9uQ2hhbmdlUmVxdWVzdC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdl
L0lEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0LmlkbAppbmRleCBmZmFjNzM1NDcwYTJhOWIwMGQyZDQ5
YTc4NmVmMTc2YmM5YTk3YTM0Li4yYWEyMzhhOGI0OWFlZjNiMjZjMjAzZjgwNDY2Mzg0NmE0Y2M2
ODg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlZlcnNpb25DaGFuZ2VS
ZXF1ZXN0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlZlcnNpb25DaGFuZ2VS
ZXF1ZXN0LmlkbApAQCAtMjcsNiArMjcsNyBAQCBtb2R1bGUgc3RvcmFnZSB7CiAKICAgICBpbnRl
cmZhY2UgWwogICAgICAgICBDb25kaXRpb25hbD1JTkRFWEVEX0RBVEFCQVNFLAorICAgICAgICBB
Y3RpdmVET01PYmplY3QsCiAgICAgICAgIEV2ZW50VGFyZ2V0CiAgICAgXSBJREJWZXJzaW9uQ2hh
bmdlUmVxdWVzdCA6IElEQlJlcXVlc3QgewogICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5l
ciBvbmJsb2NrZWQ7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggMTViNjBhYjMxZjMxYzAwMzI0ZTIzYzRjMWM1M2I1NmE5N2Y4
MTNjNS4uYjhjMzIwYTYyMzY5ZGI4NTNhMmEzOWVhYjdmMzg5NzIzYzVkNWE5NCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEzIEBACisyMDEyLTAyLTA4ICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBJbmRleGVkREI6IElEQlZlcnNpb25DaGFuZ2VSZXF1
ZXN0IFY4IHdyYXBwZXIgbm90IGdlbmVyYXRlZCBhcyBBY3RpdmVET01PYmplY3QKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4MTY3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRk
Yi92ZXJzaW9uY2hhbmdlcmVxdWVzdC1hY3RpdmVkb21vYmplY3QtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi92ZXJzaW9uY2hhbmdlcmVxdWVzdC1hY3Rp
dmVkb21vYmplY3QuaHRtbDogQWRkZWQuCisKIDIwMTItMDItMDggIEp1bGllbiBDaGFmZnJhaXgg
IDxqY2hhZmZyYWl4QHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBnYXJkZW5pbmcu
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi92ZXJzaW9uY2hhbmdl
cmVxdWVzdC1hY3RpdmVkb21vYmplY3QtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvdmVyc2lvbmNoYW5nZXJlcXVlc3QtYWN0aXZlZG9tb2JqZWN0LWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4zMmM5OWJiM2E3Y2MwZDcxYzg4MzMxMzQ3NDhmYWE3NmU2NGRhZDdk
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdmVyc2lv
bmNoYW5nZXJlcXVlc3QtYWN0aXZlZG9tb2JqZWN0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI1
IEBACitFbnN1cmUgdGhhdCBJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdCBvYmplY3RzIGFyZSBub3Qg
R0MnZCBpZiB0aGV5IGhhdmUgcGVuZGluZyBldmVudHMKKworT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgorCisKK2luZGV4ZWREQiA9IHdpbmRvdy5pbmRleGVkREIgfHwgd2luZG93LndlYmtpdElu
ZGV4ZWREQiB8fCB3aW5kb3cubW96SW5kZXhlZERCOworUEFTUyBpbmRleGVkREIgPT0gbnVsbCBp
cyBmYWxzZQorCit3aW5kb3cuZGJuYW1lID0gJ3ZlcnNpb25jaGFuZ2VyZXF1ZXN0LWFjdGl2ZWRv
bW9iamVjdCcKKwordGVzdERlbGV0ZURhdGFiYXNlKCk6CitpbmRleGVkREIuZGVsZXRlRGF0YWJh
c2Uod2luZG93LmRibmFtZSkKK3dpbmRvdy5nYygpCitQQVNTIGRlbGV0ZURhdGFiYXNlJ3MgSURC
VmVyc2lvbkNoYW5nZVJlcXVlc3Qub25zdWNjZXNzIGV2ZW50IGZpcmVkCisKK3Rlc3RTZXRWZXJz
aW9uKCk6CitvcGVuUmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKHdpbmRvdy5kYm5hbWUpCitkYiA9
IG9wZW5SZXF1ZXN0LnJlc3VsdAorZGIuc2V0VmVyc2lvbignMScpCit3aW5kb3cuZ2MoKQorUEFT
UyBzZXRWZXJzaW9uJ3MgSURCVmVyc2lvbkNoYW5nZVJlcXVlc3Qub25zdWNjZXNzIGV2ZW50IGZp
cmVkCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdmVyc2lvbmNoYW5nZXJl
cXVlc3QtYWN0aXZlZG9tb2JqZWN0Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi92ZXJzaW9uY2hhbmdlcmVxdWVzdC1hY3RpdmVkb21vYmplY3QuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
N2QzODk0M2QzY2E4YTI3YzUzMDg1YzgzNDFlM2E1MzU4Y2JlMjYwCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdmVyc2lvbmNoYW5nZXJlcXVlc3QtYWN0
aXZlZG9tb2JqZWN0Lmh0bWwKQEAgLTAsMCArMSw4MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCJFbnN1cmUgdGhhdCBJ
REJWZXJzaW9uQ2hhbmdlUmVxdWVzdCBvYmplY3RzIGFyZSBub3QgR0MnZCBpZiB0aGV5IGhhdmUg
cGVuZGluZyBldmVudHMiKTsKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworCitmdW5jdGlvbiB0ZXN0KCkg
eworICAgIGV2YWxBbmRMb2coImluZGV4ZWREQiA9IHdpbmRvdy5pbmRleGVkREIgfHwgd2luZG93
LndlYmtpdEluZGV4ZWREQiB8fCB3aW5kb3cubW96SW5kZXhlZERCOyIpOworICAgIHNob3VsZEJl
RmFsc2UoImluZGV4ZWREQiA9PSBudWxsIik7CisKKyAgICBkZWJ1ZygiIik7CisgICAgZXZhbEFu
ZExvZygid2luZG93LmRibmFtZSA9ICd2ZXJzaW9uY2hhbmdlcmVxdWVzdC1hY3RpdmVkb21vYmpl
Y3QnIik7CisKKyAgICB0ZXN0RGVsZXRlRGF0YWJhc2UoKTsKK30KKworZnVuY3Rpb24gdGVzdERl
bGV0ZURhdGFiYXNlKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInRlc3REZWxldGVE
YXRhYmFzZSgpOiIpOworICAgIC8vIE5PVEU6IGRlbGV0ZVJlcXVlc3QgaXMgbG9jYWwgdmFyaWFi
bGUgc28gaXQgaXMgbm90IGNhcHR1cmVkIGluIGdsb2JhbCBzY29wZS4KKyAgICB2YXIgZGVsZXRl
UmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5kZWxldGVEYXRhYmFzZSh3aW5kb3cuZGJu
YW1lKSIpOworICAgIGRlbGV0ZVJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxi
YWNrOworICAgIGRlbGV0ZVJlcXVlc3Qub25ibG9ja2VkID0gdW5leHBlY3RlZEJsb2NrZWRDYWxs
YmFjazsKKyAgICBkZWxldGVSZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeyBkZWxldGVT
dWNjZXNzKCk7IH07CisgICAgZGVsZXRlUmVxdWVzdCA9IG51bGw7CisgICAgaWYgKHdpbmRvdy5n
YykgeworICAgICAgICBldmFsQW5kTG9nKCJ3aW5kb3cuZ2MoKSIpOworICAgIH0KK30KKworZnVu
Y3Rpb24gZGVsZXRlU3VjY2VzcygpCit7CisgICAgdGVzdFBhc3NlZCgiZGVsZXRlRGF0YWJhc2Un
cyBJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdC5vbnN1Y2Nlc3MgZXZlbnQgZmlyZWQiKTsKKyAgICB0
ZXN0U2V0VmVyc2lvbigpOworfQorCitmdW5jdGlvbiB0ZXN0U2V0VmVyc2lvbigpCit7CisgICAg
ZGVidWcoIiIpOworICAgIGRlYnVnKCJ0ZXN0U2V0VmVyc2lvbigpOiIpOworICAgIAorICAgIC8v
IE5PVEU6IFRoaXMgaXMganVzdCBhbiBJREJSZXF1ZXN0LCBpdCBjYW4gYmUgZ2xvYmFsLgorICAg
IGV2YWxBbmRMb2coIm9wZW5SZXF1ZXN0ID0gaW5kZXhlZERCLm9wZW4od2luZG93LmRibmFtZSki
KTsKKyAgICBvcGVuUmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7Cisg
ICAgb3BlblJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24gKCkgeworICAgICAgICBldmFsQW5k
TG9nKCJkYiA9IG9wZW5SZXF1ZXN0LnJlc3VsdCIpOworCisgICAgICAgIC8vIE5PVEU6IHZlcnNp
b25SZXF1ZXN0IGlzIGxvY2FsIHZhcmlhYmxlIHNvIGl0IGlzIG5vdCBjYXB0dXJlZCBpbiBnbG9i
YWwgc2NvcGUuCisgICAgICAgIHZhciB2ZXJzaW9uUmVxdWVzdCA9IGV2YWxBbmRMb2coImRiLnNl
dFZlcnNpb24oJzEnKSIpOworICAgICAgICB2ZXJzaW9uUmVxdWVzdC5vbmVycm9yID0gdW5leHBl
Y3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIHZlcnNpb25SZXF1ZXN0Lm9uYmxvY2tlZCA9IHVu
ZXhwZWN0ZWRCbG9ja2VkQ2FsbGJhY2s7CisgICAgICAgIHZlcnNpb25SZXF1ZXN0Lm9uc3VjY2Vz
cyA9IGZ1bmN0aW9uKCkgeyB2ZXJzaW9uU3VjY2VzcygpOyB9OworICAgICAgICB2ZXJzaW9uUmVx
dWVzdCA9IG51bGw7CisgICAgICAgIGlmICh3aW5kb3cuZ2MpIHsKKyAgICAgICAgICAgIGV2YWxB
bmRMb2coIndpbmRvdy5nYygpIik7CisgICAgICAgIH0KKyAgICB9OworfQorCitmdW5jdGlvbiB2
ZXJzaW9uU3VjY2VzcygpCit7CisgICAgdGVzdFBhc3NlZCgic2V0VmVyc2lvbidzIElEQlZlcnNp
b25DaGFuZ2VSZXF1ZXN0Lm9uc3VjY2VzcyBldmVudCBmaXJlZCIpOworICAgIGRvbmUoKTsKK30K
KwordGVzdCgpOworCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126321</attachid>
            <date>2012-02-09 09:57:14 -0800</date>
            <delta_ts>2012-02-09 12:49:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78167-20120209095713.patch</filename>
            <type>text/plain</type>
            <size>6071</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3MTQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjRiMTBlMzY1YzkyMjE4
YzJlNTQ0ZTQyOTdmOTI4ODhlNTI2MzVjMi4uMjJhYTdmZjFmMDFhZmFhNmU0Y2MwYTQ2YmZmNDg3
NTg4OTZkMGYwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTAyLTA4ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBJbmRl
eGVkREI6IElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0IFY4IHdyYXBwZXIgbm90IGdlbmVyYXRlZCBh
cyBBY3RpdmVET01PYmplY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTc4MTY3CisKKyAgICAgICAgQWRkIEFjdGl2ZURPTU9iamVjdCBhbm5vdGF0aW9u
IHRvIElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0LmlkbDsgaXQgaXMgbm90CisgICAgICAgIGF1dG9t
YWdpY2FsbHkgaW5oZXJpdGVkIGZyb20gSURCUmVxdWVzdC5pZGwuCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogc3RvcmFnZS9pbmRleGVkZGIv
dmVyc2lvbmNoYW5nZXJlcXVlc3QtYWN0aXZlZG9tb2JqZWN0Lmh0bWwKKworICAgICAgICAqIHN0
b3JhZ2UvSURCVmVyc2lvbkNoYW5nZVJlcXVlc3QuaWRsOgorCiAyMDEyLTAyLTA4ICBLZW50YXJv
IEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZW1vdmUgW0N1c3RvbUhl
YWRlcl0gZnJvbSBDYW52YXNQaXhlbEFycmF5IGFuZCByZW5hbWUgW0N1c3RvbUhlYWRlcl0gdG8g
W0pTQ3VzdG9tSGVhZGVyXQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJW
ZXJzaW9uQ2hhbmdlUmVxdWVzdC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlZlcnNp
b25DaGFuZ2VSZXF1ZXN0LmlkbAppbmRleCBmZmFjNzM1NDcwYTJhOWIwMGQyZDQ5YTc4NmVmMTc2
YmM5YTk3YTM0Li4yYWEyMzhhOGI0OWFlZjNiMjZjMjAzZjgwNDY2Mzg0NmE0Y2M2ODg5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0Lmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0Lmlk
bApAQCAtMjcsNiArMjcsNyBAQCBtb2R1bGUgc3RvcmFnZSB7CiAKICAgICBpbnRlcmZhY2UgWwog
ICAgICAgICBDb25kaXRpb25hbD1JTkRFWEVEX0RBVEFCQVNFLAorICAgICAgICBBY3RpdmVET01P
YmplY3QsCiAgICAgICAgIEV2ZW50VGFyZ2V0CiAgICAgXSBJREJWZXJzaW9uQ2hhbmdlUmVxdWVz
dCA6IElEQlJlcXVlc3QgewogICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmJsb2Nr
ZWQ7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggMTViNjBhYjMxZjMxYzAwMzI0ZTIzYzRjMWM1M2I1NmE5N2Y4MTNjNS4uYjhj
MzIwYTYyMzY5ZGI4NTNhMmEzOWVhYjdmMzg5NzIzYzVkNWE5NCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEz
IEBACisyMDEyLTAyLTA4ICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgW0Nocm9taXVtXSBJbmRleGVkREI6IElEQlZlcnNpb25DaGFuZ2VSZXF1ZXN0IFY4IHdy
YXBwZXIgbm90IGdlbmVyYXRlZCBhcyBBY3RpdmVET01PYmplY3QKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4MTY3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi92ZXJzaW9u
Y2hhbmdlcmVxdWVzdC1hY3RpdmVkb21vYmplY3QtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBzdG9yYWdlL2luZGV4ZWRkYi92ZXJzaW9uY2hhbmdlcmVxdWVzdC1hY3RpdmVkb21vYmpl
Y3QuaHRtbDogQWRkZWQuCisKIDIwMTItMDItMDggIEp1bGllbiBDaGFmZnJhaXggIDxqY2hhZmZy
YWl4QHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBnYXJkZW5pbmcuCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi92ZXJzaW9uY2hhbmdlcmVxdWVzdC1h
Y3RpdmVkb21vYmplY3QtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvdmVyc2lvbmNoYW5nZXJlcXVlc3QtYWN0aXZlZG9tb2JqZWN0LWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4zMmM5OWJiM2E3Y2MwZDcxYzg4MzMxMzQ3NDhmYWE3NmU2NGRhZDdkCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdmVyc2lvbmNoYW5nZXJl
cXVlc3QtYWN0aXZlZG9tb2JqZWN0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI1IEBACitFbnN1
cmUgdGhhdCBJREJWZXJzaW9uQ2hhbmdlUmVxdWVzdCBvYmplY3RzIGFyZSBub3QgR0MnZCBpZiB0
aGV5IGhhdmUgcGVuZGluZyBldmVudHMKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K2luZGV4ZWREQiA9IHdpbmRvdy5pbmRleGVkREIgfHwgd2luZG93LndlYmtpdEluZGV4ZWREQiB8
fCB3aW5kb3cubW96SW5kZXhlZERCOworUEFTUyBpbmRleGVkREIgPT0gbnVsbCBpcyBmYWxzZQor
Cit3aW5kb3cuZGJuYW1lID0gJ3ZlcnNpb25jaGFuZ2VyZXF1ZXN0LWFjdGl2ZWRvbW9iamVjdCcK
KwordGVzdERlbGV0ZURhdGFiYXNlKCk6CitpbmRleGVkREIuZGVsZXRlRGF0YWJhc2Uod2luZG93
LmRibmFtZSkKK3dpbmRvdy5nYygpCitQQVNTIGRlbGV0ZURhdGFiYXNlJ3MgSURCVmVyc2lvbkNo
YW5nZVJlcXVlc3Qub25zdWNjZXNzIGV2ZW50IGZpcmVkCisKK3Rlc3RTZXRWZXJzaW9uKCk6Citv
cGVuUmVxdWVzdCA9IGluZGV4ZWREQi5vcGVuKHdpbmRvdy5kYm5hbWUpCitkYiA9IG9wZW5SZXF1
ZXN0LnJlc3VsdAorZGIuc2V0VmVyc2lvbignMScpCit3aW5kb3cuZ2MoKQorUEFTUyBzZXRWZXJz
aW9uJ3MgSURCVmVyc2lvbkNoYW5nZVJlcXVlc3Qub25zdWNjZXNzIGV2ZW50IGZpcmVkCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdmVyc2lvbmNoYW5nZXJlcXVlc3QtYWN0
aXZlZG9tb2JqZWN0Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi92ZXJzaW9u
Y2hhbmdlcmVxdWVzdC1hY3RpdmVkb21vYmplY3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMzMyODA3ZDBj
Yjg2ZjM0NjMyZjU3YTZmZGVmOTM4NTk3YTAwNzQzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvdmVyc2lvbmNoYW5nZXJlcXVlc3QtYWN0aXZlZG9tb2Jq
ZWN0Lmh0bWwKQEAgLTAsMCArMSw4MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCJFbnN1cmUgdGhhdCBJREJWZXJzaW9u
Q2hhbmdlUmVxdWVzdCBvYmplY3RzIGFyZSBub3QgR0MnZCBpZiB0aGV5IGhhdmUgcGVuZGluZyBl
dmVudHMiKTsKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworCitmdW5jdGlvbiB0ZXN0KCkgeworICAgIGV2
YWxBbmRMb2coImluZGV4ZWREQiA9IHdpbmRvdy5pbmRleGVkREIgfHwgd2luZG93LndlYmtpdElu
ZGV4ZWREQiB8fCB3aW5kb3cubW96SW5kZXhlZERCOyIpOworICAgIHNob3VsZEJlRmFsc2UoImlu
ZGV4ZWREQiA9PSBudWxsIik7CisKKyAgICBkZWJ1ZygiIik7CisgICAgZXZhbEFuZExvZygid2lu
ZG93LmRibmFtZSA9ICd2ZXJzaW9uY2hhbmdlcmVxdWVzdC1hY3RpdmVkb21vYmplY3QnIik7CisK
KyAgICB0ZXN0RGVsZXRlRGF0YWJhc2UoKTsKK30KKworZnVuY3Rpb24gdGVzdERlbGV0ZURhdGFi
YXNlKCkKK3sKKyAgICBkZWJ1ZygiIik7CisgICAgZGVidWcoInRlc3REZWxldGVEYXRhYmFzZSgp
OiIpOworICAgIC8vIE5PVEU6IGRlbGV0ZVJlcXVlc3QgaXMgbG9jYWwgdmFyaWFibGUgc28gaXQg
aXMgbm90IGNhcHR1cmVkIGluIGdsb2JhbCBzY29wZS4KKyAgICB2YXIgZGVsZXRlUmVxdWVzdCA9
IGV2YWxBbmRMb2coImluZGV4ZWREQi5kZWxldGVEYXRhYmFzZSh3aW5kb3cuZGJuYW1lKSIpOwor
ICAgIGRlbGV0ZVJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworICAg
IGRlbGV0ZVJlcXVlc3Qub25ibG9ja2VkID0gdW5leHBlY3RlZEJsb2NrZWRDYWxsYmFjazsKKyAg
ICBkZWxldGVSZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKCkgeyBkZWxldGVTdWNjZXNzKCk7
IH07CisgICAgZGVsZXRlUmVxdWVzdCA9IG51bGw7CisgICAgaWYgKHdpbmRvdy5nYykgeworICAg
ICAgICBldmFsQW5kTG9nKCJ3aW5kb3cuZ2MoKSIpOworICAgIH0KK30KKworZnVuY3Rpb24gZGVs
ZXRlU3VjY2VzcygpCit7CisgICAgdGVzdFBhc3NlZCgiZGVsZXRlRGF0YWJhc2UncyBJREJWZXJz
aW9uQ2hhbmdlUmVxdWVzdC5vbnN1Y2Nlc3MgZXZlbnQgZmlyZWQiKTsKKyAgICB0ZXN0U2V0VmVy
c2lvbigpOworfQorCitmdW5jdGlvbiB0ZXN0U2V0VmVyc2lvbigpCit7CisgICAgZGVidWcoIiIp
OworICAgIGRlYnVnKCJ0ZXN0U2V0VmVyc2lvbigpOiIpOworCisgICAgLy8gTk9URTogVGhpcyBp
cyBqdXN0IGFuIElEQlJlcXVlc3QsIGl0IGNhbiBiZSBnbG9iYWwuCisgICAgZXZhbEFuZExvZygi
b3BlblJlcXVlc3QgPSBpbmRleGVkREIub3Blbih3aW5kb3cuZGJuYW1lKSIpOworICAgIG9wZW5S
ZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKKyAgICBvcGVuUmVxdWVz
dC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgIGV2YWxBbmRMb2coImRiID0gb3Bl
blJlcXVlc3QucmVzdWx0Iik7CisKKyAgICAgICAgLy8gTk9URTogdmVyc2lvblJlcXVlc3QgaXMg
bG9jYWwgdmFyaWFibGUgc28gaXQgaXMgbm90IGNhcHR1cmVkIGluIGdsb2JhbCBzY29wZS4KKyAg
ICAgICAgdmFyIHZlcnNpb25SZXF1ZXN0ID0gZXZhbEFuZExvZygiZGIuc2V0VmVyc2lvbignMScp
Iik7CisgICAgICAgIHZlcnNpb25SZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxs
YmFjazsKKyAgICAgICAgdmVyc2lvblJlcXVlc3Qub25ibG9ja2VkID0gdW5leHBlY3RlZEJsb2Nr
ZWRDYWxsYmFjazsKKyAgICAgICAgdmVyc2lvblJlcXVlc3Qub25zdWNjZXNzID0gZnVuY3Rpb24o
KSB7IHZlcnNpb25TdWNjZXNzKCk7IH07CisgICAgICAgIHZlcnNpb25SZXF1ZXN0ID0gbnVsbDsK
KyAgICAgICAgaWYgKHdpbmRvdy5nYykgeworICAgICAgICAgICAgZXZhbEFuZExvZygid2luZG93
LmdjKCkiKTsKKyAgICAgICAgfQorICAgIH07Cit9CisKK2Z1bmN0aW9uIHZlcnNpb25TdWNjZXNz
KCkKK3sKKyAgICB0ZXN0UGFzc2VkKCJzZXRWZXJzaW9uJ3MgSURCVmVyc2lvbkNoYW5nZVJlcXVl
c3Qub25zdWNjZXNzIGV2ZW50IGZpcmVkIik7CisgICAgZG9uZSgpOworfQorCit0ZXN0KCk7CisK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>