<?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>98921</bug_id>
          
          <creation_ts>2012-10-10 09:53:54 -0700</creation_ts>
          <short_desc>MutationRecord addedNodes/removedNodes should never be null</short_desc>
          <delta_ts>2012-12-10 17:18:34 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://dom.spec.whatwg.org/#concept-node-insert</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>WebExposed</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>68729</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Erik Arvidsson">arv</reporter>
          <assigned_to name="Adam Klein">adamk</assigned_to>
          <cc>adamk</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>ojan</cc>
    
    <cc>rafaelw</cc>
    
    <cc>rniwa</cc>
    
    <cc>syoichi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>739042</commentid>
    <comment_count>0</comment_count>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2012-10-10 09:53:54 -0700</bug_when>
    <thetext>We currently return empty NodeLists for addedNodes/removedNodes in several places where we should return null.

See http://dom.spec.whatwg.org/#concept-node-insert step 7

var div = document.createElement(&apos;div&apos;);
var observer = new JsMutationObserver(function() {});
observer.observe(div, {
  childList: true
});

var a = document.createTextNode(&apos;a&apos;);
div.appendChild(a);

var records = observer.takeRecords();
assert(records[0].removedNodes === null);


There is one case of &quot;removedNodes null&quot; in the spec and two cases of &quot;addedNodes null&quot;. Searching is your friend.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739290</commentid>
    <comment_count>1</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-10-10 14:13:15 -0700</bug_when>
    <thetext>I think perhaps the spec should simply be updated to match WebKit and Gecko behavior for &apos;childList&apos;-typed records.  My memory is that the behavior here is intentional to avoid requiring a null-check: consumers of the API can simply walk over addedNodes/removedNodes blindly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739315</commentid>
    <comment_count>2</comment_count>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2012-10-10 14:49:05 -0700</bug_when>
    <thetext>Changing the spec is also acceptable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740161</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-10-11 11:56:48 -0700</bug_when>
    <thetext>Per https://www.w3.org/Bugs/Public/show_bug.cgi?id=19463, the spec has been updated. Updating this bug appropriately.

The spec now states that addedNodes/removedNodes should always return non-null NodeLists, which will have items in them if appropriate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741009</commentid>
    <comment_count>4</comment_count>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2012-10-12 10:19:15 -0700</bug_when>
    <thetext>So we are broken for attribute and characterData</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741105</commentid>
    <comment_count>5</comment_count>
      <attachid>168461</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-10-12 12:17:02 -0700</bug_when>
    <thetext>Created attachment 168461
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741110</commentid>
    <comment_count>6</comment_count>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2012-10-12 12:22:05 -0700</bug_when>
    <thetext>Doesn&apos;t this patch return the same NodeList instance?

var div = document.createElement(&apos;div&apos;);
var observer = new WebKitMutationObserver(function() {});
observer.observe(div, {attributes: true});
div.setAttribute(&apos;a&apos;, &apos;A&apos;);
var records = observer.takeRecords();
shouldBeTrue(&quot;records[0].addedNodes !== records[0].removedNodes&quot;);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741113</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-10-12 12:25:29 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Doesn&apos;t this patch return the same NodeList instance?
&gt; 
&gt; var div = document.createElement(&apos;div&apos;);
&gt; var observer = new WebKitMutationObserver(function() {});
&gt; observer.observe(div, {attributes: true});
&gt; div.setAttribute(&apos;a&apos;, &apos;A&apos;);
&gt; var records = observer.takeRecords();
&gt; shouldBeTrue(&quot;records[0].addedNodes !== records[0].removedNodes&quot;);

Yes, it does. Does this strike you as particularly problematic? These node lists are immutable, as are the properties on the records. What&apos;s the use case for ===/!== comparisons on MutationRecord.addedNodes/removedNodes?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741114</commentid>
    <comment_count>8</comment_count>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2012-10-12 12:29:25 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; Doesn&apos;t this patch return the same NodeList instance?
&gt; &gt; 
&gt; &gt; var div = document.createElement(&apos;div&apos;);
&gt; &gt; var observer = new WebKitMutationObserver(function() {});
&gt; &gt; observer.observe(div, {attributes: true});
&gt; &gt; div.setAttribute(&apos;a&apos;, &apos;A&apos;);
&gt; &gt; var records = observer.takeRecords();
&gt; &gt; shouldBeTrue(&quot;records[0].addedNodes !== records[0].removedNodes&quot;);
&gt; 
&gt; Yes, it does. Does this strike you as particularly problematic? These node lists are immutable, as are the properties on the records. What&apos;s the use case for ===/!== comparisons on MutationRecord.addedNodes/removedNodes?

It strikes me as odd.

Another problem with this is that you are using static which means the instance will be shared between different domains. How does that work? Will the user get permission errors when the try to access this object? Can you add a test to make sure this works as expected?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758043</commentid>
    <comment_count>9</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-11-03 18:30:47 -0700</bug_when>
    <thetext>I agree with arv here that reusing the same nod list object is odd. I wonder if we can add some binding level optimization where we can lazy-create zero-length NodeList efficiently...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772010</commentid>
    <comment_count>10</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-11-20 10:51:14 -0800</bug_when>
    <thetext>*** Bug 102825 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781828</commentid>
    <comment_count>11</comment_count>
      <attachid>168461</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-12-03 13:37:34 -0800</bug_when>
    <thetext>Comment on attachment 168461
Patch

I don’t think we should be using the same object. The behavior doesn’t match that of Firefox or the specification.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786011</commentid>
    <comment_count>12</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-12-07 11:32:12 -0800</bug_when>
    <thetext>Will pick this up again and do something more normal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786083</commentid>
    <comment_count>13</comment_count>
      <attachid>178260</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-12-07 13:06:25 -0800</bug_when>
    <thetext>Created attachment 178260
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786084</commentid>
    <comment_count>14</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-12-07 13:06:42 -0800</bug_when>
    <thetext>New patch creates new nodelists for each record, ptal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786123</commentid>
    <comment_count>15</comment_count>
      <attachid>178260</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-12-07 14:00:05 -0800</bug_when>
    <thetext>Comment on attachment 178260
Patch

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

&gt; Source/WebCore/dom/MutationRecord.cpp:74
&gt; +class EmptyNodeList : public NodeList {
&gt;  public:

Do we really need to add this class?

&gt; Source/WebCore/dom/MutationRecord.cpp:78
&gt; +            nodeList = adoptRef(new EmptyNodeList);

Why can’t we just instantiate StaticNodeList here? We’re creating these objects lazily anyway.

&gt; Source/WebCore/dom/MutationRecord.cpp:110
&gt; +class AttributesRecord : public EmptyChildListRecord {
&gt; +public:

It’s odd that AttributesRecord inherits from EmptyChildListRecord since AttributesRecords is NOT a EmptyChildListRecord.

&gt; Source/WebCore/dom/MutationRecord.cpp:127
&gt; +class CharacterDataRecord : public EmptyChildListRecord {

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786131</commentid>
    <comment_count>16</comment_count>
      <attachid>178260</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-12-07 14:07:38 -0800</bug_when>
    <thetext>Comment on attachment 178260
Patch

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

&gt;&gt; Source/WebCore/dom/MutationRecord.cpp:74
&gt;&gt;  public:
&gt; 
&gt; Do we really need to add this class?

What&apos;s the downside? It&apos;s about 5 lines of code (the lazy initialization code I&apos;d need anyway).

&gt;&gt; Source/WebCore/dom/MutationRecord.cpp:78
&gt;&gt; +            nodeList = adoptRef(new EmptyNodeList);
&gt; 
&gt; Why can’t we just instantiate StaticNodeList here? We’re creating these objects lazily anyway.

See above, I&apos;m not clear on why StaticNodeList is better for this. NodeList is already fully virtualized, so the only extra cost is the size of the code for EmptyNodeList (which I&apos;d bet is pretty darn small).

&gt;&gt; Source/WebCore/dom/MutationRecord.cpp:110
&gt;&gt; +public:
&gt; 
&gt; It’s odd that AttributesRecord inherits from EmptyChildListRecord since AttributesRecords is NOT a EmptyChildListRecord.

Maybe I named it poorly? AttributesRecord and CharacterDataRecord are both records-with-empty-childlists.  What else would you say AttributesRecord and CharacterDataRecord have in common?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786147</commentid>
    <comment_count>17</comment_count>
      <attachid>178260</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-12-07 14:17:21 -0800</bug_when>
    <thetext>Comment on attachment 178260
Patch

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

&gt;&gt;&gt; Source/WebCore/dom/MutationRecord.cpp:74
&gt;&gt;&gt;  public:
&gt;&gt; 
&gt;&gt; Do we really need to add this class?
&gt; 
&gt; What&apos;s the downside? It&apos;s about 5 lines of code (the lazy initialization code I&apos;d need anyway).

We shouldn’t be adding code unless it’s necessary. With that argument, we’ll end up adding all sorts of 5-line code, and soon, we’ll double the number of lines in our codebsae like we did in the past 3 years.
I can be convinced that this is a good idea if there is a data that supports adding this class benefit the real world use case.

&gt;&gt;&gt; Source/WebCore/dom/MutationRecord.cpp:110
&gt;&gt;&gt; +public:
&gt;&gt; 
&gt;&gt; It’s odd that AttributesRecord inherits from EmptyChildListRecord since AttributesRecords is NOT a EmptyChildListRecord.
&gt; 
&gt; Maybe I named it poorly? AttributesRecord and CharacterDataRecord are both records-with-empty-childlists.  What else would you say AttributesRecord and CharacterDataRecord have in common?

How about renaming it to RecordWithEmptyChildList?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786160</commentid>
    <comment_count>18</comment_count>
      <attachid>178276</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-12-07 14:28:45 -0800</bug_when>
    <thetext>Created attachment 178276
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786163</commentid>
    <comment_count>19</comment_count>
      <attachid>178260</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-12-07 14:31:20 -0800</bug_when>
    <thetext>Comment on attachment 178260
Patch

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

&gt;&gt;&gt;&gt; Source/WebCore/dom/MutationRecord.cpp:74
&gt;&gt;&gt;&gt;  public:
&gt;&gt;&gt; 
&gt;&gt;&gt; Do we really need to add this class?
&gt;&gt; 
&gt;&gt; What&apos;s the downside? It&apos;s about 5 lines of code (the lazy initialization code I&apos;d need anyway).
&gt; 
&gt; We shouldn’t be adding code unless it’s necessary. With that argument, we’ll end up adding all sorts of 5-line code, and soon, we’ll double the number of lines in our codebsae like we did in the past 3 years.
&gt; I can be convinced that this is a good idea if there is a data that supports adding this class benefit the real world use case.

I certainly don&apos;t have any data for this, just trying to reduce the size of these objects which are effectively just sentinels by sizeof(Vector). The lazy-initialization may or may not help us if the pattern for code that uses these APIs is to always query addedNodes.length and removedNodes.length. I still think this code was unlikely to cause any real maintenance burden or add to the bloat of the codebase.

But I&apos;ve replaced with StaticNodeList as requested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786167</commentid>
    <comment_count>20</comment_count>
      <attachid>178276</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-12-07 14:32:50 -0800</bug_when>
    <thetext>Comment on attachment 178276
Patch

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

&gt; Source/WebCore/dom/MutationRecord.cpp:92
&gt; +            Vector&lt;RefPtr&lt;Node&gt; &gt; emptyVector;
&gt; +            nodeList = StaticNodeList::adopt(emptyVector);

You would add StaticNodeList::create() to avoid swap.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786194</commentid>
    <comment_count>21</comment_count>
      <attachid>178286</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-12-07 14:55:04 -0800</bug_when>
    <thetext>Created attachment 178286
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786244</commentid>
    <comment_count>22</comment_count>
      <attachid>178286</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-07 15:44:46 -0800</bug_when>
    <thetext>Comment on attachment 178286
Patch for landing

Clearing flags on attachment: 178286

Committed r136996: &lt;http://trac.webkit.org/changeset/136996&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786245</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-07 15:44:51 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786598</commentid>
    <comment_count>24</comment_count>
      <attachid>178286</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-12-08 13:19:23 -0800</bug_when>
    <thetext>Comment on attachment 178286
Patch for landing

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

&gt; Source/WebCore/dom/StaticNodeList.h:-43
&gt; -        // Adopts the contents of the nodes vector.

Why remove this comment?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786621</commentid>
    <comment_count>25</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-12-08 14:22:21 -0800</bug_when>
    <thetext>(In reply to comment #24)
&gt; (From update of attachment 178286 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=178286&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/StaticNodeList.h:-43
&gt; &gt; -        // Adopts the contents of the nodes vector.
&gt; 
&gt; Why remove this comment?

I discussed this on IRC with rniwa, sorry it didn&apos;t end up on the bug: my thought was that now both the name (&quot;adopt&quot;) and implementation (using swap()) are together, the comment seems redundant. rniwa agreed. If you think the comment is still useful I&apos;d be happy to add it back.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787854</commentid>
    <comment_count>26</comment_count>
      <attachid>178260</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-12-10 17:00:13 -0800</bug_when>
    <thetext>Comment on attachment 178260
Patch

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

&gt;&gt;&gt;&gt;&gt; Source/WebCore/dom/MutationRecord.cpp:74
&gt;&gt;&gt;&gt;&gt;  public:
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; Do we really need to add this class?
&gt;&gt;&gt; 
&gt;&gt;&gt; What&apos;s the downside? It&apos;s about 5 lines of code (the lazy initialization code I&apos;d need anyway).
&gt;&gt; 
&gt;&gt; We shouldn’t be adding code unless it’s necessary. With that argument, we’ll end up adding all sorts of 5-line code, and soon, we’ll double the number of lines in our codebsae like we did in the past 3 years.
&gt;&gt; I can be convinced that this is a good idea if there is a data that supports adding this class benefit the real world use case.
&gt; 
&gt; I certainly don&apos;t have any data for this, just trying to reduce the size of these objects which are effectively just sentinels by sizeof(Vector). The lazy-initialization may or may not help us if the pattern for code that uses these APIs is to always query addedNodes.length and removedNodes.length. I still think this code was unlikely to cause any real maintenance burden or add to the bloat of the codebase.
&gt; 
&gt; But I&apos;ve replaced with StaticNodeList as requested.

For the record, I think the StaticNodeList approach that got committed is inferior in every way to the EmptyNodeList approach here. I don&apos;t think we need to justify every change with data. The EmptyNodeList approach is clearly avoiding significant memory churn. It wouldn&apos;t be hard to come up with an example page where it&apos;s problematic.

A few lines of extra code here has effectively 0 cost.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787871</commentid>
    <comment_count>27</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-12-10 17:18:34 -0800</bug_when>
    <thetext>(In reply to comment #26)
&gt; (From update of attachment 178260 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=178260&amp;action=review
&gt;
&gt; For the record, I think the StaticNodeList approach that got committed is inferior in every way to the EmptyNodeList approach here. I don&apos;t think we need to justify every change with data. The EmptyNodeList approach is clearly avoiding significant memory churn. It wouldn&apos;t be hard to come up with an example page where it&apos;s problematic.

I disagree. The biggest problem is nobody would know to use EmptyNodeList when they&apos;re looking to use StaticNodeList. It&apos;s much better to optimize StaticNodeList::createEmpty not to require memory allocation because then people working on any client of StaticNodeList are likely to discover this optimization.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168461</attachid>
            <date>2012-10-12 12:17:02 -0700</date>
            <delta_ts>2012-12-07 13:06:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98921-20121012121558.patch</filename>
            <type>text/plain</type>
            <size>7158</size>
            <attacher name="Adam Klein">adamk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxMTk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDFmY2JmYzljMDcwNTU1
M2U1YzA3MjViMzFjY2U2YTIyNDY2NzE4Zi4uMDFhYjQ1MzdlZmRjYTEzMjQ2NGI5M2RjNmU3ODQx
ZDBiOTA3ZDJjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEyLTEwLTEyICBBZGFt
IEtsZWluICA8YWRhbWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIE11dGF0aW9uUmVjb3JkIGFk
ZGVkTm9kZXMvcmVtb3ZlZE5vZGVzIHNob3VsZCBuZXZlciBiZSBudWxsCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODkyMQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBlciBhbiB1cGRhdGUgdG8gdGhlIERP
TTQgc3BlYyB0aGF0IG1hdGNoZXMgR2Vja28ncyBiZWhhdmlvciwKKyAgICAgICAgYWRkZWROb2Rl
cy9yZW1vdmVkTm9kZXMgc2hvdWxkIGJlIGVtcHR5IE5vZGVMaXN0cyBvbiAnYXR0cmlidXRlcycK
KyAgICAgICAgYW5kICdjaGFyYWN0ZXJEYXRhJyByZWNvcmRzLCByYXRoZXIgdGhhbiBudWxsLgor
CisgICAgICAgIFRvIGF2b2lkIHVubmVjZXNzYXJ5IGhlYXAgYWxsb2NhdGlvbiwgYWxsIHRob3Nl
IHJlY29yZHMgc2hhcmUgYQorICAgICAgICBzaW5nbGUgaW5zdGFuY2Ugb2YgYW4gRW1wdHlOb2Rl
TGlzdCB0eXBlLgorCisgICAgICAgICogZG9tL011dGF0aW9uUmVjb3JkLmNwcDoKKyAgICAgICAg
KFdlYkNvcmUpOiBOZXcgRW1wdHlOb2RlTGlzdCB0eXBlIGZvciB1c2UgaW4gbm9uLWNoaWxkTGlz
dCByZWNvcmRzLgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25SZWNvcmQ6OmFkZGVkTm9kZXMp
OiBSZXR1cm4gYW4gZW1wdHkgbm9kZSBsaXN0IGluc3RlYWQgb2YgbnVsbC4KKyAgICAgICAgKFdl
YkNvcmU6Ok11dGF0aW9uUmVjb3JkOjpyZW1vdmVkTm9kZXMpOiBkaXR0bworICAgICAgICAqIGRv
bS9NdXRhdGlvblJlY29yZC5oOgorICAgICAgICAoTXV0YXRpb25SZWNvcmQpOiBNb3ZlZCBwcmV2
aW91c2x5LWlubGluZWQgZGVmaW5pdGlvbnMgdG8gLmNwcCBmaWxlLgorCiAyMDEyLTEwLTEyICBK
YWVodW4gTGltICA8bGphZWh1bi5saW1Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgQ2hlY2sgcGFy
YW1ldGVyJ3Mgc2FmZXR5IGZpcnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0
YXRpb25SZWNvcmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uUmVjb3JkLmNwcApp
bmRleCAxZmVkZDFkYmZhMTY1ZjA5MDMxZDVjYzdjYjU4MjdjMWI3NjJiMmIwLi43MjE0NzI0ZGY3
OWFlNTc2MGU3ZTA0NDBlOTYyYTY1ZGNiZjQ1NjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTXV0YXRpb25SZWNvcmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlv
blJlY29yZC5jcHAKQEAgLTE1MCw2ICsxNTAsMjEgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBDaGFy
YWN0ZXJEYXRhUmVjb3JkOjp0eXBlKCkKICAgICByZXR1cm4gY2hhcmFjdGVyRGF0YTsKIH0KIAor
Y2xhc3MgRW1wdHlOb2RlTGlzdCA6IHB1YmxpYyBOb2RlTGlzdCB7CitwdWJsaWM6CisgICAgc3Rh
dGljIE5vZGVMaXN0KiBpbnN0YW5jZSgpCisgICAgeworICAgICAgICBzdGF0aWMgTm9kZUxpc3Qq
IGxpc3QgPSBhZG9wdFJlZihuZXcgRW1wdHlOb2RlTGlzdCkubGVha1JlZigpOworICAgICAgICBy
ZXR1cm4gbGlzdDsKKyAgICB9CisgICAgdmlydHVhbCB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCBP
VkVSUklERSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBOb2RlKiBpdGVtKHVuc2lnbmVkKSBj
b25zdCBPVkVSUklERSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBOb2RlKiBpdGVtV2l0aE5h
bWUoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gMDsgfQorCitw
cml2YXRlOgorICAgIEVtcHR5Tm9kZUxpc3QoKSB7IH0KK307CisKIH0gLy8gbmFtZXNwYWNlCiAK
IFBhc3NSZWZQdHI8TXV0YXRpb25SZWNvcmQ+IE11dGF0aW9uUmVjb3JkOjpjcmVhdGVDaGlsZExp
c3QoUGFzc1JlZlB0cjxOb2RlPiB0YXJnZXQsIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IGFkZGVkLCBQ
YXNzUmVmUHRyPE5vZGVMaXN0PiByZW1vdmVkLCBQYXNzUmVmUHRyPE5vZGU+IHByZXZpb3VzU2li
bGluZywgUGFzc1JlZlB0cjxOb2RlPiBuZXh0U2libGluZykKQEAgLTE3Niw2ICsxOTEsMTYgQEAg
TXV0YXRpb25SZWNvcmQ6On5NdXRhdGlvblJlY29yZCgpCiB7CiB9CiAKK05vZGVMaXN0KiBNdXRh
dGlvblJlY29yZDo6YWRkZWROb2RlcygpCit7CisgICAgcmV0dXJuIEVtcHR5Tm9kZUxpc3Q6Omlu
c3RhbmNlKCk7Cit9CisKK05vZGVMaXN0KiBNdXRhdGlvblJlY29yZDo6cmVtb3ZlZE5vZGVzKCkK
K3sKKyAgICByZXR1cm4gRW1wdHlOb2RlTGlzdDo6aW5zdGFuY2UoKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKE1VVEFUSU9OX09CU0VSVkVSUykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblJlY29yZC5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL011dGF0aW9uUmVjb3JkLmgKaW5kZXggZDc0NmQ0ODU5YmNjMjc5ZjFjNjU5MjVk
NWMzNmI2ZTUzNDA4ZDViNy4uMmQ0NmQyZDIwMzcyN2QyMGZkZjA0ZTU0YzdkYjk3N2JhODZlODA3
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uUmVjb3JkLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uUmVjb3JkLmgKQEAgLTU3LDggKzU3LDggQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlKCkgPSAwOwogICAgIHZp
cnR1YWwgTm9kZSogdGFyZ2V0KCkgPSAwOwogCi0gICAgdmlydHVhbCBOb2RlTGlzdCogYWRkZWRO
b2RlcygpIHsgcmV0dXJuIDA7IH0KLSAgICB2aXJ0dWFsIE5vZGVMaXN0KiByZW1vdmVkTm9kZXMo
KSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBOb2RlTGlzdCogYWRkZWROb2RlcygpOworICAg
IHZpcnR1YWwgTm9kZUxpc3QqIHJlbW92ZWROb2RlcygpOwogICAgIHZpcnR1YWwgTm9kZSogcHJl
dmlvdXNTaWJsaW5nKCkgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgTm9kZSogbmV4dFNpYmxp
bmcoKSB7IHJldHVybiAwOyB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5ZTQ0MzAwZjU4YjZjZDhiMmI2MGM2NDRmZmY2
MmZlYjNlNjBkMWM4Li5mYTQ3OWY0ZThiNDE1ODhmNmMzNWVlMjY5NzcwMTkwZTM2YzlhMmFlIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMTAtMTIgIEFkYW0gS2xlaW4gIDxhZGFta0BjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgTXV0YXRpb25SZWNvcmQgYWRkZWROb2Rlcy9yZW1vdmVkTm9k
ZXMgc2hvdWxkIG5ldmVyIGJlIG51bGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTk4OTIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVXBkYXRlZCBudWxsaXR5IHRlc3QgdG8gY2hlY2sgZm9yIGVtcHR5IG5v
ZGVsaXN0cy4KKworICAgICAgICAqIGZhc3QvbXV0YXRpb24vbXV0YXRpb24tcmVjb3JkLW51bGxp
dHktZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvbXV0YXRpb24vbXV0YXRpb24tcmVjb3Jk
LW51bGxpdHkuaHRtbDoKKwogMjAxMi0xMC0xMiAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3
ZWJraXQub3JnPgogCiAgICAgICAgIFtRdF0gVW5yZXZpZXdlZCBnYXJkZW5pbmcuCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL211dGF0aW9uLXJlY29yZC1udWxsaXR5LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vbXV0YXRpb24tcmVjb3JkLW51
bGxpdHktZXhwZWN0ZWQudHh0CmluZGV4IDYyOTAyOWQ2NDVmNjE0OTRlZTY3ODNjMWNmMTVhNDZl
MDc4N2QyODkuLjcyMDU2NjRlMWUzNWI5ODdmM2Y2NWRhYTNlMGJiNjg3N2E5MzhkZDMgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vbXV0YXRpb24tcmVjb3JkLW51bGxpdHkt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vbXV0YXRpb24tcmVj
b3JkLW51bGxpdHktZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsNCBAQAotTm9uLXJlbGV2YW50IHBy
b3BlcnRpZXMgb24gbXV0YXRpb24gcmVjb3JkcyBzaG91bGQgYmUgbnVsbAorTm9uLXJlbGV2YW50
IHByb3BlcnRpZXMgb24gbXV0YXRpb24gcmVjb3JkcyBzaG91bGQgYmUgbnVsbCwgZXhjZXB0IGZv
ciBOb2RlTGlzdHMsIHdoaWNoIHNob3VsZCBiZSBlbXB0eQogCiBPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCiAKQEAgLTcsMTAgKzcsMTAgQEAgY2hhcmFjdGVyRGF0YSByZWNvcmQ6CiBQQVNTIHJl
Y29yZC5hdHRyaWJ1dGVOYW1lIGlzIG51bGwKIFBBU1MgcmVjb3JkLmF0dHJpYnV0ZU5hbWVzcGFj
ZSBpcyBudWxsCiBQQVNTIHJlY29yZC5vbGRWYWx1ZSBpcyBudWxsCi1QQVNTIHJlY29yZC5hZGRl
ZE5vZGVzIGlzIG51bGwKLVBBU1MgcmVjb3JkLnJlbW92ZWROb2RlcyBpcyBudWxsCiBQQVNTIHJl
Y29yZC5wcmV2aW91c1NpYmxpbmcgaXMgbnVsbAogUEFTUyByZWNvcmQubmV4dFNpYmxpbmcgaXMg
bnVsbAorUEFTUyByZWNvcmQuYWRkZWROb2Rlcy5sZW5ndGggaXMgMAorUEFTUyByZWNvcmQucmVt
b3ZlZE5vZGVzLmxlbmd0aCBpcyAwCiAKIGNoaWxkTGlzdCByZWNvcmQ6CiBQQVNTIHJlY29yZC5h
dHRyaWJ1dGVOYW1lIGlzIG51bGwKQEAgLTIwLDEwICsyMCwxMCBAQCBQQVNTIHJlY29yZC5vbGRW
YWx1ZSBpcyBudWxsCiBhdHRyaWJ1dGVzIHJlY29yZDoKIFBBU1MgcmVjb3JkLmF0dHJpYnV0ZU5h
bWVzcGFjZSBpcyBudWxsCiBQQVNTIHJlY29yZC5vbGRWYWx1ZSBpcyBudWxsCi1QQVNTIHJlY29y
ZC5hZGRlZE5vZGVzIGlzIG51bGwKLVBBU1MgcmVjb3JkLnJlbW92ZWROb2RlcyBpcyBudWxsCiBQ
QVNTIHJlY29yZC5wcmV2aW91c1NpYmxpbmcgaXMgbnVsbAogUEFTUyByZWNvcmQubmV4dFNpYmxp
bmcgaXMgbnVsbAorUEFTUyByZWNvcmQuYWRkZWROb2Rlcy5sZW5ndGggaXMgMAorUEFTUyByZWNv
cmQucmVtb3ZlZE5vZGVzLmxlbmd0aCBpcyAwCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRp
b24vbXV0YXRpb24tcmVjb3JkLW51bGxpdHkuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRp
b24vbXV0YXRpb24tcmVjb3JkLW51bGxpdHkuaHRtbAppbmRleCA0YWEzMGUzZjk5YjgyMjVjYTVj
ZWJjZjNmMGYwNGQ2ZjM0N2U2NmJiLi5hZjQ4ZmRjNWRlYWM5YWE4MDNmMDgzYTljZWRhMzA3NGJl
MTVhOWYwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL211dGF0aW9uLXJl
Y29yZC1udWxsaXR5Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9tdXRhdGlv
bi1yZWNvcmQtbnVsbGl0eS5odG1sCkBAIC0xLDcgKzEsNyBAQAogPCFET0NUWVBFIGh0bWw+CiA8
c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQ+Ci1kZXNjcmlwdGlvbignTm9uLXJlbGV2YW50IHByb3BlcnRpZXMgb24gbXV0YXRpb24g
cmVjb3JkcyBzaG91bGQgYmUgbnVsbCcpOworZGVzY3JpcHRpb24oJ05vbi1yZWxldmFudCBwcm9w
ZXJ0aWVzIG9uIG11dGF0aW9uIHJlY29yZHMgc2hvdWxkIGJlIG51bGwsIGV4Y2VwdCBmb3IgTm9k
ZUxpc3RzLCB3aGljaCBzaG91bGQgYmUgZW1wdHknKTsKIHZhciBvYnNlcnZlciA9IG5ldyBXZWJL
aXRNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKCkge30pOwogCiB2YXIgdGV4dCA9IGRvY3VtZW50
LmNyZWF0ZVRleHROb2RlKCdzb21ldGhpbmcnKTsKQEAgLTEyLDEwICsxMiwxMCBAQCBkZWJ1Zygn
Y2hhcmFjdGVyRGF0YSByZWNvcmQ6Jyk7CiBzaG91bGRCZU51bGwoJ3JlY29yZC5hdHRyaWJ1dGVO
YW1lJyk7CiBzaG91bGRCZU51bGwoJ3JlY29yZC5hdHRyaWJ1dGVOYW1lc3BhY2UnKTsKIHNob3Vs
ZEJlTnVsbCgncmVjb3JkLm9sZFZhbHVlJyk7Ci1zaG91bGRCZU51bGwoJ3JlY29yZC5hZGRlZE5v
ZGVzJyk7Ci1zaG91bGRCZU51bGwoJ3JlY29yZC5yZW1vdmVkTm9kZXMnKTsKIHNob3VsZEJlTnVs
bCgncmVjb3JkLnByZXZpb3VzU2libGluZycpOwogc2hvdWxkQmVOdWxsKCdyZWNvcmQubmV4dFNp
YmxpbmcnKTsKK3Nob3VsZEJlKCdyZWNvcmQuYWRkZWROb2Rlcy5sZW5ndGgnLCAnMCcpOworc2hv
dWxkQmUoJ3JlY29yZC5yZW1vdmVkTm9kZXMubGVuZ3RoJywgJzAnKTsKIAogdmFyIGRpdiA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogb2JzZXJ2ZXIub2JzZXJ2ZShkaXYsIHtjaGls
ZExpc3Q6IHRydWV9KTsKQEAgLTMyLDkgKzMyLDkgQEAgcmVjb3JkID0gb2JzZXJ2ZXIudGFrZVJl
Y29yZHMoKVswXTsKIGRlYnVnKCdcbmF0dHJpYnV0ZXMgcmVjb3JkOicpOwogc2hvdWxkQmVOdWxs
KCdyZWNvcmQuYXR0cmlidXRlTmFtZXNwYWNlJyk7CiBzaG91bGRCZU51bGwoJ3JlY29yZC5vbGRW
YWx1ZScpOwotc2hvdWxkQmVOdWxsKCdyZWNvcmQuYWRkZWROb2RlcycpOwotc2hvdWxkQmVOdWxs
KCdyZWNvcmQucmVtb3ZlZE5vZGVzJyk7CiBzaG91bGRCZU51bGwoJ3JlY29yZC5wcmV2aW91c1Np
YmxpbmcnKTsKIHNob3VsZEJlTnVsbCgncmVjb3JkLm5leHRTaWJsaW5nJyk7CitzaG91bGRCZSgn
cmVjb3JkLmFkZGVkTm9kZXMubGVuZ3RoJywgJzAnKTsKK3Nob3VsZEJlKCdyZWNvcmQucmVtb3Zl
ZE5vZGVzLmxlbmd0aCcsICcwJyk7CiA8L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178260</attachid>
            <date>2012-12-07 13:06:25 -0800</date>
            <delta_ts>2012-12-10 17:00:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98921-20121207130348.patch</filename>
            <type>text/plain</type>
            <size>8845</size>
            <attacher name="Adam Klein">adamk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2ODgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTNiZGVkNDBhMzg5N2Yw
MGIyODU3NzIwMjVlZjc0MTkwZmZhNjlhMC4uYzQ3MDczNGM2Mjg3ZTQzYjFlZGJiZjhiOGM4OWMy
YWQ2YmNiMmRiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTEyLTA3ICBBZGFt
IEtsZWluICA8YWRhbWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIE11dGF0aW9uUmVjb3JkIGFk
ZGVkTm9kZXMvcmVtb3ZlZE5vZGVzIHNob3VsZCBuZXZlciBiZSBudWxsCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODkyMQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBlciBhbiB1cGRhdGUgdG8gdGhlIERP
TTQgc3BlYyB0aGF0IG1hdGNoZXMgR2Vja28ncyBiZWhhdmlvciwKKyAgICAgICAgYWRkZWROb2Rl
cy9yZW1vdmVkTm9kZXMgc2hvdWxkIGJlIGVtcHR5IE5vZGVMaXN0cyBvbiAnYXR0cmlidXRlcycK
KyAgICAgICAgYW5kICdjaGFyYWN0ZXJEYXRhJyByZWNvcmRzLCByYXRoZXIgdGhhbiBudWxsLgor
CisgICAgICAgIFRoaXMgaXMgYWNjb21wbGlzaGVkIHdpdGggYSBuZXcgRW1wdHlOb2RlTGlzdCBz
dWJjbGFzcyBhbmQgbGF6eQorICAgICAgICBpbml0aWFsaXphdGlvbiBvZiB0aGUgYWRkZWROb2Rl
cy9yZW1vdmVkTm9kZXMgYXR0cmlidXRlcyBvbgorICAgICAgICAnYXR0cmlidXRlcycgYW5kICdj
aGFyYWN0ZXJEYXRhJyByZWNvcmRzLgorCisgICAgICAgICogZG9tL011dGF0aW9uUmVjb3JkLmNw
cDoKKyAgICAgICAgKiBkb20vTXV0YXRpb25SZWNvcmQuaDoKKyAgICAgICAgKE11dGF0aW9uUmVj
b3JkKToKKwogMjAxMi0xMi0wNiAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFp
bC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEzNjg3MS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblJlY29yZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTXV0YXRpb25SZWNvcmQuY3BwCmluZGV4IDFlYWFhNDQ4NGY0ZmM3Zjg1ZmVlNGMx
YjdlNzllZjdmMTdjY2ViYTkuLjk2NjA4ZGIzMGY4MGFjOWU5YzAyM2EyZTY1NWM2YmRjNTBiZTU0
MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblJlY29yZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uUmVjb3JkLmNwcApAQCAtNzAsNDQgKzcwLDY5
IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPE5vZGU+IG1fbmV4dFNpYmxpbmc7CiB9OwogCi1jbGFz
cyBBdHRyaWJ1dGVzUmVjb3JkIDogcHVibGljIE11dGF0aW9uUmVjb3JkIHsKK2NsYXNzIEVtcHR5
Tm9kZUxpc3QgOiBwdWJsaWMgTm9kZUxpc3QgewogcHVibGljOgotICAgIEF0dHJpYnV0ZXNSZWNv
cmQoUGFzc1JlZlB0cjxOb2RlPiB0YXJnZXQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNv
bnN0IEF0b21pY1N0cmluZyYgb2xkVmFsdWUpCisgICAgc3RhdGljIE5vZGVMaXN0KiBsYXppbHlJ
bml0aWFsaXplQW5kUmV0dXJuKFJlZlB0cjxOb2RlTGlzdD4mIG5vZGVMaXN0KQorICAgIHsKKyAg
ICAgICAgaWYgKCFub2RlTGlzdCkKKyAgICAgICAgICAgIG5vZGVMaXN0ID0gYWRvcHRSZWYobmV3
IEVtcHR5Tm9kZUxpc3QpOworICAgICAgICByZXR1cm4gbm9kZUxpc3QuZ2V0KCk7CisgICAgfQor
ICAgIHZpcnR1YWwgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gMDsg
fQorICAgIHZpcnR1YWwgTm9kZSogaXRlbSh1bnNpZ25lZCkgY29uc3QgT1ZFUlJJREUgeyByZXR1
cm4gMDsgfQorICAgIHZpcnR1YWwgTm9kZSogbmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYp
IGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIDA7IH0KKworcHJpdmF0ZToKKyAgICBFbXB0eU5vZGVM
aXN0KCkgeyB9Cit9OworCitjbGFzcyBFbXB0eUNoaWxkTGlzdFJlY29yZCA6IHB1YmxpYyBNdXRh
dGlvblJlY29yZCB7CitwdWJsaWM6CisgICAgRW1wdHlDaGlsZExpc3RSZWNvcmQoUGFzc1JlZlB0
cjxOb2RlPiB0YXJnZXQsIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUpCiAgICAgICAgIDogbV90YXJn
ZXQodGFyZ2V0KQorICAgICAgICAsIG1fb2xkVmFsdWUob2xkVmFsdWUpCisgICAgeworICAgIH0K
KworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIE5vZGUqIHRhcmdldCgpIE9WRVJSSURFIHsgcmV0dXJu
IG1fdGFyZ2V0LmdldCgpOyB9CisgICAgdmlydHVhbCBTdHJpbmcgb2xkVmFsdWUoKSBPVkVSUklE
RSB7IHJldHVybiBtX29sZFZhbHVlOyB9CisgICAgdmlydHVhbCBOb2RlTGlzdCogYWRkZWROb2Rl
cygpIE9WRVJSSURFIHsgcmV0dXJuIEVtcHR5Tm9kZUxpc3Q6OmxhemlseUluaXRpYWxpemVBbmRS
ZXR1cm4obV9hZGRlZE5vZGVzKTsgfQorICAgIHZpcnR1YWwgTm9kZUxpc3QqIHJlbW92ZWROb2Rl
cygpIE9WRVJSSURFIHsgcmV0dXJuIEVtcHR5Tm9kZUxpc3Q6OmxhemlseUluaXRpYWxpemVBbmRS
ZXR1cm4obV9yZW1vdmVkTm9kZXMpOyB9CisKKyAgICBSZWZQdHI8Tm9kZT4gbV90YXJnZXQ7Cisg
ICAgU3RyaW5nIG1fb2xkVmFsdWU7CisgICAgUmVmUHRyPE5vZGVMaXN0PiBtX2FkZGVkTm9kZXM7
CisgICAgUmVmUHRyPE5vZGVMaXN0PiBtX3JlbW92ZWROb2RlczsKK307CisKK2NsYXNzIEF0dHJp
YnV0ZXNSZWNvcmQgOiBwdWJsaWMgRW1wdHlDaGlsZExpc3RSZWNvcmQgeworcHVibGljOgorICAg
IEF0dHJpYnV0ZXNSZWNvcmQoUGFzc1JlZlB0cjxOb2RlPiB0YXJnZXQsIGNvbnN0IFF1YWxpZmll
ZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgb2xkVmFsdWUpCisgICAgICAgIDogRW1w
dHlDaGlsZExpc3RSZWNvcmQodGFyZ2V0LCBvbGRWYWx1ZSkKICAgICAgICAgLCBtX2F0dHJpYnV0
ZU5hbWUobmFtZS5sb2NhbE5hbWUoKSkKICAgICAgICAgLCBtX2F0dHJpYnV0ZU5hbWVzcGFjZShu
YW1lLm5hbWVzcGFjZVVSSSgpKQotICAgICAgICAsIG1fb2xkVmFsdWUob2xkVmFsdWUpCiAgICAg
ewogICAgIH0KIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgdHlw
ZSgpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgTm9kZSogdGFyZ2V0KCkgT1ZFUlJJREUgeyByZXR1
cm4gbV90YXJnZXQuZ2V0KCk7IH0KICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0
cmlidXRlTmFtZSgpIE9WRVJSSURFIHsgcmV0dXJuIG1fYXR0cmlidXRlTmFtZTsgfQogICAgIHZp
cnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVOYW1lc3BhY2UoKSBPVkVSUklERSB7
IHJldHVybiBtX2F0dHJpYnV0ZU5hbWVzcGFjZTsgfQotICAgIHZpcnR1YWwgU3RyaW5nIG9sZFZh
bHVlKCkgT1ZFUlJJREUgeyByZXR1cm4gbV9vbGRWYWx1ZTsgfQogCi0gICAgUmVmUHRyPE5vZGU+
IG1fdGFyZ2V0OwogICAgIEF0b21pY1N0cmluZyBtX2F0dHJpYnV0ZU5hbWU7CiAgICAgQXRvbWlj
U3RyaW5nIG1fYXR0cmlidXRlTmFtZXNwYWNlOwotICAgIEF0b21pY1N0cmluZyBtX29sZFZhbHVl
OwogfTsKIAotY2xhc3MgQ2hhcmFjdGVyRGF0YVJlY29yZCA6IHB1YmxpYyBNdXRhdGlvblJlY29y
ZCB7CitjbGFzcyBDaGFyYWN0ZXJEYXRhUmVjb3JkIDogcHVibGljIEVtcHR5Q2hpbGRMaXN0UmVj
b3JkIHsKIHB1YmxpYzoKICAgICBDaGFyYWN0ZXJEYXRhUmVjb3JkKFBhc3NSZWZQdHI8Tm9kZT4g
dGFyZ2V0LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlKQotICAgICAgICA6IG1fdGFyZ2V0KHRhcmdl
dCkKLSAgICAgICAgLCBtX29sZFZhbHVlKG9sZFZhbHVlKQorICAgICAgICA6IEVtcHR5Q2hpbGRM
aXN0UmVjb3JkKHRhcmdldCwgb2xkVmFsdWUpCiAgICAgewogICAgIH0KIAogcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSgpIE9WRVJSSURFOwotICAgIHZpcnR1
YWwgTm9kZSogdGFyZ2V0KCkgT1ZFUlJJREUgeyByZXR1cm4gbV90YXJnZXQuZ2V0KCk7IH0KLSAg
ICB2aXJ0dWFsIFN0cmluZyBvbGRWYWx1ZSgpIE9WRVJSSURFIHsgcmV0dXJuIG1fb2xkVmFsdWU7
IH0KLQotICAgIFJlZlB0cjxOb2RlPiBtX3RhcmdldDsKLSAgICBTdHJpbmcgbV9vbGRWYWx1ZTsK
IH07CiAKIGNsYXNzIE11dGF0aW9uUmVjb3JkV2l0aE51bGxPbGRWYWx1ZSA6IHB1YmxpYyBNdXRh
dGlvblJlY29yZCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25SZWNv
cmQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblJlY29yZC5oCmluZGV4IGQ3NDZkNDg1
OWJjYzI3OWYxYzY1OTI1ZDVjMzZiNmU1MzQwOGQ1YjcuLjA2MTkzNDYzMTBkY2ZjMjhlYWQxYTk3
M2JmNTcxMjY4ZTdiNTRmNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlv
blJlY29yZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblJlY29yZC5oCkBAIC01
Nyw4ICs1Nyw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgdHlw
ZSgpID0gMDsKICAgICB2aXJ0dWFsIE5vZGUqIHRhcmdldCgpID0gMDsKIAotICAgIHZpcnR1YWwg
Tm9kZUxpc3QqIGFkZGVkTm9kZXMoKSB7IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCBOb2RlTGlz
dCogcmVtb3ZlZE5vZGVzKCkgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgTm9kZUxpc3QqIGFk
ZGVkTm9kZXMoKSA9IDA7CisgICAgdmlydHVhbCBOb2RlTGlzdCogcmVtb3ZlZE5vZGVzKCkgPSAw
OwogICAgIHZpcnR1YWwgTm9kZSogcHJldmlvdXNTaWJsaW5nKCkgeyByZXR1cm4gMDsgfQogICAg
IHZpcnR1YWwgTm9kZSogbmV4dFNpYmxpbmcoKSB7IHJldHVybiAwOyB9CiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5MTMy
ODZjZTE4YzkwZTEzODEyNTg1NzA4ZWI4ZjIwNTNlZDM0NTg1Li4xM2RiMDE1ODkyMGM5ZDAyZTEx
Y2VmZTdjNDRiMmNiMDMyZDNiZGYzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMTItMDcg
IEFkYW0gS2xlaW4gIDxhZGFta0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTXV0YXRpb25SZWNv
cmQgYWRkZWROb2Rlcy9yZW1vdmVkTm9kZXMgc2hvdWxkIG5ldmVyIGJlIG51bGwKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4OTIxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlZCBudWxsaXR5IHRl
c3QgdG8gY2hlY2sgZm9yIGVtcHR5IG5vZGVsaXN0cy4KKworICAgICAgICAqIGZhc3QvbXV0YXRp
b24vbXV0YXRpb24tcmVjb3JkLW51bGxpdHktZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3Qv
bXV0YXRpb24vbXV0YXRpb24tcmVjb3JkLW51bGxpdHkuaHRtbDoKKwogMjAxMi0xMi0wNiAgU3Rl
cGhlbiBXaGl0ZSAgPHNlbm9yYmxhbmNvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21p
dW1dIFVucmV2aWV3ZWQgZ2FyZGVuaW5nLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9t
dXRhdGlvbi9tdXRhdGlvbi1yZWNvcmQtbnVsbGl0eS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9mYXN0L211dGF0aW9uL211dGF0aW9uLXJlY29yZC1udWxsaXR5LWV4cGVjdGVkLnR4dAppbmRl
eCA2MjkwMjlkNjQ1ZjYxNDk0ZWU2NzgzYzFjZjE1YTQ2ZTA3ODdkMjg5Li43MjA1NjY0ZTFlMzVi
OTg3ZjNmNjVkYWEzZTBiYjY4NzdhOTM4ZGQzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0
L211dGF0aW9uL211dGF0aW9uLXJlY29yZC1udWxsaXR5LWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L211dGF0aW9uL211dGF0aW9uLXJlY29yZC1udWxsaXR5LWV4cGVjdGVkLnR4
dApAQCAtMSw0ICsxLDQgQEAKLU5vbi1yZWxldmFudCBwcm9wZXJ0aWVzIG9uIG11dGF0aW9uIHJl
Y29yZHMgc2hvdWxkIGJlIG51bGwKK05vbi1yZWxldmFudCBwcm9wZXJ0aWVzIG9uIG11dGF0aW9u
IHJlY29yZHMgc2hvdWxkIGJlIG51bGwsIGV4Y2VwdCBmb3IgTm9kZUxpc3RzLCB3aGljaCBzaG91
bGQgYmUgZW1wdHkKIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCkBAIC03LDEwICs3LDEw
IEBAIGNoYXJhY3RlckRhdGEgcmVjb3JkOgogUEFTUyByZWNvcmQuYXR0cmlidXRlTmFtZSBpcyBu
dWxsCiBQQVNTIHJlY29yZC5hdHRyaWJ1dGVOYW1lc3BhY2UgaXMgbnVsbAogUEFTUyByZWNvcmQu
b2xkVmFsdWUgaXMgbnVsbAotUEFTUyByZWNvcmQuYWRkZWROb2RlcyBpcyBudWxsCi1QQVNTIHJl
Y29yZC5yZW1vdmVkTm9kZXMgaXMgbnVsbAogUEFTUyByZWNvcmQucHJldmlvdXNTaWJsaW5nIGlz
IG51bGwKIFBBU1MgcmVjb3JkLm5leHRTaWJsaW5nIGlzIG51bGwKK1BBU1MgcmVjb3JkLmFkZGVk
Tm9kZXMubGVuZ3RoIGlzIDAKK1BBU1MgcmVjb3JkLnJlbW92ZWROb2Rlcy5sZW5ndGggaXMgMAog
CiBjaGlsZExpc3QgcmVjb3JkOgogUEFTUyByZWNvcmQuYXR0cmlidXRlTmFtZSBpcyBudWxsCkBA
IC0yMCwxMCArMjAsMTAgQEAgUEFTUyByZWNvcmQub2xkVmFsdWUgaXMgbnVsbAogYXR0cmlidXRl
cyByZWNvcmQ6CiBQQVNTIHJlY29yZC5hdHRyaWJ1dGVOYW1lc3BhY2UgaXMgbnVsbAogUEFTUyBy
ZWNvcmQub2xkVmFsdWUgaXMgbnVsbAotUEFTUyByZWNvcmQuYWRkZWROb2RlcyBpcyBudWxsCi1Q
QVNTIHJlY29yZC5yZW1vdmVkTm9kZXMgaXMgbnVsbAogUEFTUyByZWNvcmQucHJldmlvdXNTaWJs
aW5nIGlzIG51bGwKIFBBU1MgcmVjb3JkLm5leHRTaWJsaW5nIGlzIG51bGwKK1BBU1MgcmVjb3Jk
LmFkZGVkTm9kZXMubGVuZ3RoIGlzIDAKK1BBU1MgcmVjb3JkLnJlbW92ZWROb2Rlcy5sZW5ndGgg
aXMgMAogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL211dGF0aW9uLXJlY29yZC1udWxs
aXR5Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL211dGF0aW9uLXJlY29yZC1udWxs
aXR5Lmh0bWwKaW5kZXggNGFhMzBlM2Y5OWI4MjI1Y2E1Y2ViY2YzZjBmMDRkNmYzNDdlNjZiYi4u
YWY0OGZkYzVkZWFjOWFhODAzZjA4M2E5Y2VkYTMwNzRiZTE1YTlmMCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9tdXRhdGlvbi1yZWNvcmQtbnVsbGl0eS5odG1sCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vbXV0YXRpb24tcmVjb3JkLW51bGxpdHkuaHRtbApA
QCAtMSw3ICsxLDcgQEAKIDwhRE9DVFlQRSBodG1sPgogPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgotZGVzY3JpcHRpb24oJ05v
bi1yZWxldmFudCBwcm9wZXJ0aWVzIG9uIG11dGF0aW9uIHJlY29yZHMgc2hvdWxkIGJlIG51bGwn
KTsKK2Rlc2NyaXB0aW9uKCdOb24tcmVsZXZhbnQgcHJvcGVydGllcyBvbiBtdXRhdGlvbiByZWNv
cmRzIHNob3VsZCBiZSBudWxsLCBleGNlcHQgZm9yIE5vZGVMaXN0cywgd2hpY2ggc2hvdWxkIGJl
IGVtcHR5Jyk7CiB2YXIgb2JzZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZlcihmdW5j
dGlvbigpIHt9KTsKIAogdmFyIHRleHQgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnc29tZXRo
aW5nJyk7CkBAIC0xMiwxMCArMTIsMTAgQEAgZGVidWcoJ2NoYXJhY3RlckRhdGEgcmVjb3JkOicp
Owogc2hvdWxkQmVOdWxsKCdyZWNvcmQuYXR0cmlidXRlTmFtZScpOwogc2hvdWxkQmVOdWxsKCdy
ZWNvcmQuYXR0cmlidXRlTmFtZXNwYWNlJyk7CiBzaG91bGRCZU51bGwoJ3JlY29yZC5vbGRWYWx1
ZScpOwotc2hvdWxkQmVOdWxsKCdyZWNvcmQuYWRkZWROb2RlcycpOwotc2hvdWxkQmVOdWxsKCdy
ZWNvcmQucmVtb3ZlZE5vZGVzJyk7CiBzaG91bGRCZU51bGwoJ3JlY29yZC5wcmV2aW91c1NpYmxp
bmcnKTsKIHNob3VsZEJlTnVsbCgncmVjb3JkLm5leHRTaWJsaW5nJyk7CitzaG91bGRCZSgncmVj
b3JkLmFkZGVkTm9kZXMubGVuZ3RoJywgJzAnKTsKK3Nob3VsZEJlKCdyZWNvcmQucmVtb3ZlZE5v
ZGVzLmxlbmd0aCcsICcwJyk7CiAKIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdk
aXYnKTsKIG9ic2VydmVyLm9ic2VydmUoZGl2LCB7Y2hpbGRMaXN0OiB0cnVlfSk7CkBAIC0zMiw5
ICszMiw5IEBAIHJlY29yZCA9IG9ic2VydmVyLnRha2VSZWNvcmRzKClbMF07CiBkZWJ1ZygnXG5h
dHRyaWJ1dGVzIHJlY29yZDonKTsKIHNob3VsZEJlTnVsbCgncmVjb3JkLmF0dHJpYnV0ZU5hbWVz
cGFjZScpOwogc2hvdWxkQmVOdWxsKCdyZWNvcmQub2xkVmFsdWUnKTsKLXNob3VsZEJlTnVsbCgn
cmVjb3JkLmFkZGVkTm9kZXMnKTsKLXNob3VsZEJlTnVsbCgncmVjb3JkLnJlbW92ZWROb2Rlcycp
Owogc2hvdWxkQmVOdWxsKCdyZWNvcmQucHJldmlvdXNTaWJsaW5nJyk7CiBzaG91bGRCZU51bGwo
J3JlY29yZC5uZXh0U2libGluZycpOworc2hvdWxkQmUoJ3JlY29yZC5hZGRlZE5vZGVzLmxlbmd0
aCcsICcwJyk7CitzaG91bGRCZSgncmVjb3JkLnJlbW92ZWROb2Rlcy5sZW5ndGgnLCAnMCcpOwog
PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178276</attachid>
            <date>2012-12-07 14:28:45 -0800</date>
            <delta_ts>2012-12-07 14:55:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98921-20121207142609.patch</filename>
            <type>text/plain</type>
            <size>8763</size>
            <attacher name="Adam Klein">adamk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2ODgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTNiZGVkNDBhMzg5N2Yw
MGIyODU3NzIwMjVlZjc0MTkwZmZhNjlhMC4uMWQ5ZGZiNTdlOGMxYTZmODNmMjNkY2U5MmM1NjU5
NzI5YjY4MTQzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTEyLTA3ICBBZGFt
IEtsZWluICA8YWRhbWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIE11dGF0aW9uUmVjb3JkIGFk
ZGVkTm9kZXMvcmVtb3ZlZE5vZGVzIHNob3VsZCBuZXZlciBiZSBudWxsCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODkyMQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBlciBhbiB1cGRhdGUgdG8gdGhlIERP
TTQgc3BlYyB0aGF0IG1hdGNoZXMgR2Vja28ncyBiZWhhdmlvciwKKyAgICAgICAgYWRkZWROb2Rl
cy9yZW1vdmVkTm9kZXMgc2hvdWxkIGJlIGVtcHR5IE5vZGVMaXN0cyBvbiAnYXR0cmlidXRlcycK
KyAgICAgICAgYW5kICdjaGFyYWN0ZXJEYXRhJyByZWNvcmRzLCByYXRoZXIgdGhhbiBudWxsLgor
CisgICAgICAgIFRoaXMgaXMgYWNjb21wbGlzaGVkIHdpdGggbGF6eSBpbml0aWFsaXphdGlvbiBv
ZiB0aGUgYWRkZWROb2Rlcy9yZW1vdmVkTm9kZXMKKyAgICAgICAgYXR0cmlidXRlcyBvbiAnYXR0
cmlidXRlcycgYW5kICdjaGFyYWN0ZXJEYXRhJyByZWNvcmRzLgorCisgICAgICAgICogZG9tL011
dGF0aW9uUmVjb3JkLmNwcDoKKyAgICAgICAgKiBkb20vTXV0YXRpb25SZWNvcmQuaDoKKyAgICAg
ICAgKE11dGF0aW9uUmVjb3JkKToKKwogMjAxMi0xMi0wNiAgU2hlcmlmZiBCb3QgIDx3ZWJraXQu
cmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQg
cjEzNjg3MS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblJlY29yZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25SZWNvcmQuY3BwCmluZGV4IDFlYWFhNDQ4
NGY0ZmM3Zjg1ZmVlNGMxYjdlNzllZjdmMTdjY2ViYTkuLjM1YzIwM2Q3Mjg3M2U2YzQ1ZjYxYmY1
Y2NhNzBjNjlhNWMyNTQ4MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlv
blJlY29yZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uUmVjb3JkLmNwcApA
QCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJOb2RlTGlzdC5o
IgogI2luY2x1ZGUgIlF1YWxpZmllZE5hbWUuaCIKKyNpbmNsdWRlICJTdGF0aWNOb2RlTGlzdC5o
IgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJh
cy5oPgogCkBAIC03MCw0NCArNzEsNjIgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8Tm9kZT4gbV9u
ZXh0U2libGluZzsKIH07CiAKLWNsYXNzIEF0dHJpYnV0ZXNSZWNvcmQgOiBwdWJsaWMgTXV0YXRp
b25SZWNvcmQgeworY2xhc3MgUmVjb3JkV2l0aEVtcHR5Tm9kZUxpc3RzIDogcHVibGljIE11dGF0
aW9uUmVjb3JkIHsKIHB1YmxpYzoKLSAgICBBdHRyaWJ1dGVzUmVjb3JkKFBhc3NSZWZQdHI8Tm9k
ZT4gdGFyZ2V0LCBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcm
IG9sZFZhbHVlKQorICAgIFJlY29yZFdpdGhFbXB0eU5vZGVMaXN0cyhQYXNzUmVmUHRyPE5vZGU+
IHRhcmdldCwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSkKICAgICAgICAgOiBtX3RhcmdldCh0YXJn
ZXQpCisgICAgICAgICwgbV9vbGRWYWx1ZShvbGRWYWx1ZSkKKyAgICB7CisgICAgfQorCitwcml2
YXRlOgorICAgIHZpcnR1YWwgTm9kZSogdGFyZ2V0KCkgT1ZFUlJJREUgeyByZXR1cm4gbV90YXJn
ZXQuZ2V0KCk7IH0KKyAgICB2aXJ0dWFsIFN0cmluZyBvbGRWYWx1ZSgpIE9WRVJSSURFIHsgcmV0
dXJuIG1fb2xkVmFsdWU7IH0KKyAgICB2aXJ0dWFsIE5vZGVMaXN0KiBhZGRlZE5vZGVzKCkgT1ZF
UlJJREUgeyByZXR1cm4gbGF6aWx5SW5pdGlhbGl6ZUVtcHR5Tm9kZUxpc3QobV9hZGRlZE5vZGVz
KTsgfQorICAgIHZpcnR1YWwgTm9kZUxpc3QqIHJlbW92ZWROb2RlcygpIE9WRVJSSURFIHsgcmV0
dXJuIGxhemlseUluaXRpYWxpemVFbXB0eU5vZGVMaXN0KG1fcmVtb3ZlZE5vZGVzKTsgfQorCisg
ICAgc3RhdGljIE5vZGVMaXN0KiBsYXppbHlJbml0aWFsaXplRW1wdHlOb2RlTGlzdChSZWZQdHI8
Tm9kZUxpc3Q+JiBub2RlTGlzdCkKKyAgICB7CisgICAgICAgIGlmICghbm9kZUxpc3QpIHsKKyAg
ICAgICAgICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiBlbXB0eVZlY3RvcjsKKyAgICAgICAgICAg
IG5vZGVMaXN0ID0gU3RhdGljTm9kZUxpc3Q6OmFkb3B0KGVtcHR5VmVjdG9yKTsKKyAgICAgICAg
fQorICAgICAgICByZXR1cm4gbm9kZUxpc3QuZ2V0KCk7CisgICAgfQorCisgICAgUmVmUHRyPE5v
ZGU+IG1fdGFyZ2V0OworICAgIFN0cmluZyBtX29sZFZhbHVlOworICAgIFJlZlB0cjxOb2RlTGlz
dD4gbV9hZGRlZE5vZGVzOworICAgIFJlZlB0cjxOb2RlTGlzdD4gbV9yZW1vdmVkTm9kZXM7Cit9
OworCitjbGFzcyBBdHRyaWJ1dGVzUmVjb3JkIDogcHVibGljIFJlY29yZFdpdGhFbXB0eU5vZGVM
aXN0cyB7CitwdWJsaWM6CisgICAgQXR0cmlidXRlc1JlY29yZChQYXNzUmVmUHRyPE5vZGU+IHRh
cmdldCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBvbGRW
YWx1ZSkKKyAgICAgICAgOiBSZWNvcmRXaXRoRW1wdHlOb2RlTGlzdHModGFyZ2V0LCBvbGRWYWx1
ZSkKICAgICAgICAgLCBtX2F0dHJpYnV0ZU5hbWUobmFtZS5sb2NhbE5hbWUoKSkKICAgICAgICAg
LCBtX2F0dHJpYnV0ZU5hbWVzcGFjZShuYW1lLm5hbWVzcGFjZVVSSSgpKQotICAgICAgICAsIG1f
b2xkVmFsdWUob2xkVmFsdWUpCiAgICAgewogICAgIH0KIAogcHJpdmF0ZToKICAgICB2aXJ0dWFs
IGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSgpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgTm9kZSog
dGFyZ2V0KCkgT1ZFUlJJREUgeyByZXR1cm4gbV90YXJnZXQuZ2V0KCk7IH0KICAgICB2aXJ0dWFs
IGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlTmFtZSgpIE9WRVJSSURFIHsgcmV0dXJuIG1f
YXR0cmlidXRlTmFtZTsgfQogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1
dGVOYW1lc3BhY2UoKSBPVkVSUklERSB7IHJldHVybiBtX2F0dHJpYnV0ZU5hbWVzcGFjZTsgfQot
ICAgIHZpcnR1YWwgU3RyaW5nIG9sZFZhbHVlKCkgT1ZFUlJJREUgeyByZXR1cm4gbV9vbGRWYWx1
ZTsgfQogCi0gICAgUmVmUHRyPE5vZGU+IG1fdGFyZ2V0OwogICAgIEF0b21pY1N0cmluZyBtX2F0
dHJpYnV0ZU5hbWU7CiAgICAgQXRvbWljU3RyaW5nIG1fYXR0cmlidXRlTmFtZXNwYWNlOwotICAg
IEF0b21pY1N0cmluZyBtX29sZFZhbHVlOwogfTsKIAotY2xhc3MgQ2hhcmFjdGVyRGF0YVJlY29y
ZCA6IHB1YmxpYyBNdXRhdGlvblJlY29yZCB7CitjbGFzcyBDaGFyYWN0ZXJEYXRhUmVjb3JkIDog
cHVibGljIFJlY29yZFdpdGhFbXB0eU5vZGVMaXN0cyB7CiBwdWJsaWM6CiAgICAgQ2hhcmFjdGVy
RGF0YVJlY29yZChQYXNzUmVmUHRyPE5vZGU+IHRhcmdldCwgY29uc3QgU3RyaW5nJiBvbGRWYWx1
ZSkKLSAgICAgICAgOiBtX3RhcmdldCh0YXJnZXQpCi0gICAgICAgICwgbV9vbGRWYWx1ZShvbGRW
YWx1ZSkKKyAgICAgICAgOiBSZWNvcmRXaXRoRW1wdHlOb2RlTGlzdHModGFyZ2V0LCBvbGRWYWx1
ZSkKICAgICB7CiAgICAgfQogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3Ry
aW5nJiB0eXBlKCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBOb2RlKiB0YXJnZXQoKSBPVkVSUklE
RSB7IHJldHVybiBtX3RhcmdldC5nZXQoKTsgfQotICAgIHZpcnR1YWwgU3RyaW5nIG9sZFZhbHVl
KCkgT1ZFUlJJREUgeyByZXR1cm4gbV9vbGRWYWx1ZTsgfQotCi0gICAgUmVmUHRyPE5vZGU+IG1f
dGFyZ2V0OwotICAgIFN0cmluZyBtX29sZFZhbHVlOwogfTsKIAogY2xhc3MgTXV0YXRpb25SZWNv
cmRXaXRoTnVsbE9sZFZhbHVlIDogcHVibGljIE11dGF0aW9uUmVjb3JkIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblJlY29yZC5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L011dGF0aW9uUmVjb3JkLmgKaW5kZXggZDc0NmQ0ODU5YmNjMjc5ZjFjNjU5MjVkNWMzNmI2ZTUz
NDA4ZDViNy4uMDYxOTM0NjMxMGRjZmMyOGVhZDFhOTczYmY1NzEyNjhlN2I1NGY0ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uUmVjb3JkLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL011dGF0aW9uUmVjb3JkLmgKQEAgLTU3LDggKzU3LDggQEAgcHVibGljOgogICAg
IHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlKCkgPSAwOwogICAgIHZpcnR1YWwgTm9k
ZSogdGFyZ2V0KCkgPSAwOwogCi0gICAgdmlydHVhbCBOb2RlTGlzdCogYWRkZWROb2RlcygpIHsg
cmV0dXJuIDA7IH0KLSAgICB2aXJ0dWFsIE5vZGVMaXN0KiByZW1vdmVkTm9kZXMoKSB7IHJldHVy
biAwOyB9CisgICAgdmlydHVhbCBOb2RlTGlzdCogYWRkZWROb2RlcygpID0gMDsKKyAgICB2aXJ0
dWFsIE5vZGVMaXN0KiByZW1vdmVkTm9kZXMoKSA9IDA7CiAgICAgdmlydHVhbCBOb2RlKiBwcmV2
aW91c1NpYmxpbmcoKSB7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCBOb2RlKiBuZXh0U2libGlu
ZygpIHsgcmV0dXJuIDA7IH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDkxMzI4NmNlMThjOTBlMTM4MTI1ODU3MDhlYjhm
MjA1M2VkMzQ1ODUuLjEzZGIwMTU4OTIwYzlkMDJlMTFjZWZlN2M0NGIyY2IwMzJkM2JkZjMgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0xMi0wNyAgQWRhbSBLbGVpbiAgPGFkYW1rQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBNdXRhdGlvblJlY29yZCBhZGRlZE5vZGVzL3JlbW92ZWROb2Rl
cyBzaG91bGQgbmV2ZXIgYmUgbnVsbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTg5MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBVcGRhdGVkIG51bGxpdHkgdGVzdCB0byBjaGVjayBmb3IgZW1wdHkgbm9k
ZWxpc3RzLgorCisgICAgICAgICogZmFzdC9tdXRhdGlvbi9tdXRhdGlvbi1yZWNvcmQtbnVsbGl0
eS1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9tdXRhdGlvbi9tdXRhdGlvbi1yZWNvcmQt
bnVsbGl0eS5odG1sOgorCiAyMDEyLTEyLTA2ICBTdGVwaGVuIFdoaXRlICA8c2Vub3JibGFuY29A
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gVW5yZXZpZXdlZCBnYXJkZW5pbmcu
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL211dGF0aW9uLXJlY29yZC1u
dWxsaXR5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vbXV0YXRpb24t
cmVjb3JkLW51bGxpdHktZXhwZWN0ZWQudHh0CmluZGV4IDYyOTAyOWQ2NDVmNjE0OTRlZTY3ODNj
MWNmMTVhNDZlMDc4N2QyODkuLjcyMDU2NjRlMWUzNWI5ODdmM2Y2NWRhYTNlMGJiNjg3N2E5Mzhk
ZDMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vbXV0YXRpb24tcmVjb3Jk
LW51bGxpdHktZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vbXV0
YXRpb24tcmVjb3JkLW51bGxpdHktZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsNCBAQAotTm9uLXJl
bGV2YW50IHByb3BlcnRpZXMgb24gbXV0YXRpb24gcmVjb3JkcyBzaG91bGQgYmUgbnVsbAorTm9u
LXJlbGV2YW50IHByb3BlcnRpZXMgb24gbXV0YXRpb24gcmVjb3JkcyBzaG91bGQgYmUgbnVsbCwg
ZXhjZXB0IGZvciBOb2RlTGlzdHMsIHdoaWNoIHNob3VsZCBiZSBlbXB0eQogCiBPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCiAKQEAgLTcsMTAgKzcsMTAgQEAgY2hhcmFjdGVyRGF0YSByZWNvcmQ6
CiBQQVNTIHJlY29yZC5hdHRyaWJ1dGVOYW1lIGlzIG51bGwKIFBBU1MgcmVjb3JkLmF0dHJpYnV0
ZU5hbWVzcGFjZSBpcyBudWxsCiBQQVNTIHJlY29yZC5vbGRWYWx1ZSBpcyBudWxsCi1QQVNTIHJl
Y29yZC5hZGRlZE5vZGVzIGlzIG51bGwKLVBBU1MgcmVjb3JkLnJlbW92ZWROb2RlcyBpcyBudWxs
CiBQQVNTIHJlY29yZC5wcmV2aW91c1NpYmxpbmcgaXMgbnVsbAogUEFTUyByZWNvcmQubmV4dFNp
YmxpbmcgaXMgbnVsbAorUEFTUyByZWNvcmQuYWRkZWROb2Rlcy5sZW5ndGggaXMgMAorUEFTUyBy
ZWNvcmQucmVtb3ZlZE5vZGVzLmxlbmd0aCBpcyAwCiAKIGNoaWxkTGlzdCByZWNvcmQ6CiBQQVNT
IHJlY29yZC5hdHRyaWJ1dGVOYW1lIGlzIG51bGwKQEAgLTIwLDEwICsyMCwxMCBAQCBQQVNTIHJl
Y29yZC5vbGRWYWx1ZSBpcyBudWxsCiBhdHRyaWJ1dGVzIHJlY29yZDoKIFBBU1MgcmVjb3JkLmF0
dHJpYnV0ZU5hbWVzcGFjZSBpcyBudWxsCiBQQVNTIHJlY29yZC5vbGRWYWx1ZSBpcyBudWxsCi1Q
QVNTIHJlY29yZC5hZGRlZE5vZGVzIGlzIG51bGwKLVBBU1MgcmVjb3JkLnJlbW92ZWROb2RlcyBp
cyBudWxsCiBQQVNTIHJlY29yZC5wcmV2aW91c1NpYmxpbmcgaXMgbnVsbAogUEFTUyByZWNvcmQu
bmV4dFNpYmxpbmcgaXMgbnVsbAorUEFTUyByZWNvcmQuYWRkZWROb2Rlcy5sZW5ndGggaXMgMAor
UEFTUyByZWNvcmQucmVtb3ZlZE5vZGVzLmxlbmd0aCBpcyAwCiBQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvbXV0YXRpb24vbXV0YXRpb24tcmVjb3JkLW51bGxpdHkuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvbXV0YXRpb24vbXV0YXRpb24tcmVjb3JkLW51bGxpdHkuaHRtbAppbmRleCA0YWEzMGUzZjk5
YjgyMjVjYTVjZWJjZjNmMGYwNGQ2ZjM0N2U2NmJiLi5hZjQ4ZmRjNWRlYWM5YWE4MDNmMDgzYTlj
ZWRhMzA3NGJlMTVhOWYwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL211
dGF0aW9uLXJlY29yZC1udWxsaXR5Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlv
bi9tdXRhdGlvbi1yZWNvcmQtbnVsbGl0eS5odG1sCkBAIC0xLDcgKzEsNyBAQAogPCFET0NUWVBF
IGh0bWw+CiA8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KIDxzY3JpcHQ+Ci1kZXNjcmlwdGlvbignTm9uLXJlbGV2YW50IHByb3BlcnRpZXMgb24g
bXV0YXRpb24gcmVjb3JkcyBzaG91bGQgYmUgbnVsbCcpOworZGVzY3JpcHRpb24oJ05vbi1yZWxl
dmFudCBwcm9wZXJ0aWVzIG9uIG11dGF0aW9uIHJlY29yZHMgc2hvdWxkIGJlIG51bGwsIGV4Y2Vw
dCBmb3IgTm9kZUxpc3RzLCB3aGljaCBzaG91bGQgYmUgZW1wdHknKTsKIHZhciBvYnNlcnZlciA9
IG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKCkge30pOwogCiB2YXIgdGV4dCA9
IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdzb21ldGhpbmcnKTsKQEAgLTEyLDEwICsxMiwxMCBA
QCBkZWJ1ZygnY2hhcmFjdGVyRGF0YSByZWNvcmQ6Jyk7CiBzaG91bGRCZU51bGwoJ3JlY29yZC5h
dHRyaWJ1dGVOYW1lJyk7CiBzaG91bGRCZU51bGwoJ3JlY29yZC5hdHRyaWJ1dGVOYW1lc3BhY2Un
KTsKIHNob3VsZEJlTnVsbCgncmVjb3JkLm9sZFZhbHVlJyk7Ci1zaG91bGRCZU51bGwoJ3JlY29y
ZC5hZGRlZE5vZGVzJyk7Ci1zaG91bGRCZU51bGwoJ3JlY29yZC5yZW1vdmVkTm9kZXMnKTsKIHNo
b3VsZEJlTnVsbCgncmVjb3JkLnByZXZpb3VzU2libGluZycpOwogc2hvdWxkQmVOdWxsKCdyZWNv
cmQubmV4dFNpYmxpbmcnKTsKK3Nob3VsZEJlKCdyZWNvcmQuYWRkZWROb2Rlcy5sZW5ndGgnLCAn
MCcpOworc2hvdWxkQmUoJ3JlY29yZC5yZW1vdmVkTm9kZXMubGVuZ3RoJywgJzAnKTsKIAogdmFy
IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogb2JzZXJ2ZXIub2JzZXJ2ZShk
aXYsIHtjaGlsZExpc3Q6IHRydWV9KTsKQEAgLTMyLDkgKzMyLDkgQEAgcmVjb3JkID0gb2JzZXJ2
ZXIudGFrZVJlY29yZHMoKVswXTsKIGRlYnVnKCdcbmF0dHJpYnV0ZXMgcmVjb3JkOicpOwogc2hv
dWxkQmVOdWxsKCdyZWNvcmQuYXR0cmlidXRlTmFtZXNwYWNlJyk7CiBzaG91bGRCZU51bGwoJ3Jl
Y29yZC5vbGRWYWx1ZScpOwotc2hvdWxkQmVOdWxsKCdyZWNvcmQuYWRkZWROb2RlcycpOwotc2hv
dWxkQmVOdWxsKCdyZWNvcmQucmVtb3ZlZE5vZGVzJyk7CiBzaG91bGRCZU51bGwoJ3JlY29yZC5w
cmV2aW91c1NpYmxpbmcnKTsKIHNob3VsZEJlTnVsbCgncmVjb3JkLm5leHRTaWJsaW5nJyk7Citz
aG91bGRCZSgncmVjb3JkLmFkZGVkTm9kZXMubGVuZ3RoJywgJzAnKTsKK3Nob3VsZEJlKCdyZWNv
cmQucmVtb3ZlZE5vZGVzLmxlbmd0aCcsICcwJyk7CiA8L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIu
Li9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178286</attachid>
            <date>2012-12-07 14:55:04 -0800</date>
            <delta_ts>2012-12-08 13:19:23 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-98921-20121207145228.patch</filename>
            <type>text/plain</type>
            <size>10219</size>
            <attacher name="Adam Klein">adamk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2ODgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTNiZGVkNDBhMzg5N2Yw
MGIyODU3NzIwMjVlZjc0MTkwZmZhNjlhMC4uZjA2YWQ0YTgxOGJhNjQ1Zjc0NDQzMjc1OGFlOTQ5
ZTk5ZTE2NmJhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTEyLTA3ICBBZGFt
IEtsZWluICA8YWRhbWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIE11dGF0aW9uUmVjb3JkIGFk
ZGVkTm9kZXMvcmVtb3ZlZE5vZGVzIHNob3VsZCBuZXZlciBiZSBudWxsCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODkyMQorCisgICAgICAgIFJldmll
d2VkIGJ5IFJ5b3N1a2UgTml3YS4KKworICAgICAgICBQZXIgYW4gdXBkYXRlIHRvIHRoZSBET000
IHNwZWMgdGhhdCBtYXRjaGVzIEdlY2tvJ3MgYmVoYXZpb3IsCisgICAgICAgIGFkZGVkTm9kZXMv
cmVtb3ZlZE5vZGVzIHNob3VsZCBiZSBlbXB0eSBOb2RlTGlzdHMgb24gJ2F0dHJpYnV0ZXMnCisg
ICAgICAgIGFuZCAnY2hhcmFjdGVyRGF0YScgcmVjb3JkcywgcmF0aGVyIHRoYW4gbnVsbC4KKwor
ICAgICAgICBUaGlzIGlzIGFjY29tcGxpc2hlZCB3aXRoIGxhenkgaW5pdGlhbGl6YXRpb24gb2Yg
YWRkZWROb2Rlcy9yZW1vdmVkTm9kZXMKKyAgICAgICAgYXR0cmlidXRlcyBvbiAnYXR0cmlidXRl
cycvJ2NoYXJhY3RlckRhdGEnIHJlY29yZHMgYW5kIHRoZQorICAgICAgICBhZGRpdGlvbiBvZiBh
IG5ldyBTdGF0aWNOb2RlTGlzdDo6Y3JlYXRlRW1wdHkoKSBmYWN0b3J5IG1ldGhvZC4KKworICAg
ICAgICAqIGRvbS9NdXRhdGlvblJlY29yZC5jcHA6CisgICAgICAgICogZG9tL011dGF0aW9uUmVj
b3JkLmg6CisgICAgICAgIChNdXRhdGlvblJlY29yZCk6CisgICAgICAgICogZG9tL1N0YXRpY05v
ZGVMaXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpTdGF0aWNOb2RlTGlzdDo6YWRvcHQpOgorICAg
ICAgICAoU3RhdGljTm9kZUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3RhdGljTm9kZUxpc3Q6
OmNyZWF0ZUVtcHR5KToKKyAgICAgICAgKFdlYkNvcmU6OlN0YXRpY05vZGVMaXN0OjpTdGF0aWNO
b2RlTGlzdCk6CisKIDIwMTItMTItMDYgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RA
Z21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMzY4NzEuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25SZWNvcmQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL011dGF0aW9uUmVjb3JkLmNwcAppbmRleCAxZWFhYTQ0ODRmNGZjN2Y4NWZl
ZTRjMWI3ZTc5ZWY3ZjE3Y2NlYmE5Li42ZjlkODBlOTY2YzIwODIxZDEwNGI3YTljNTJhNTI1MDNk
ZThlY2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25SZWNvcmQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblJlY29yZC5jcHAKQEAgLTM3LDYgKzM3
LDcgQEAKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiTm9kZUxpc3QuaCIKICNpbmNsdWRl
ICJRdWFsaWZpZWROYW1lLmgiCisjaW5jbHVkZSAiU3RhdGljTm9kZUxpc3QuaCIKICNpbmNsdWRl
IDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIApAQCAt
NzAsNDQgKzcxLDYwIEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPE5vZGU+IG1fbmV4dFNpYmxpbmc7
CiB9OwogCi1jbGFzcyBBdHRyaWJ1dGVzUmVjb3JkIDogcHVibGljIE11dGF0aW9uUmVjb3JkIHsK
K2NsYXNzIFJlY29yZFdpdGhFbXB0eU5vZGVMaXN0cyA6IHB1YmxpYyBNdXRhdGlvblJlY29yZCB7
CiBwdWJsaWM6Ci0gICAgQXR0cmlidXRlc1JlY29yZChQYXNzUmVmUHRyPE5vZGU+IHRhcmdldCwg
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1ZSkK
KyAgICBSZWNvcmRXaXRoRW1wdHlOb2RlTGlzdHMoUGFzc1JlZlB0cjxOb2RlPiB0YXJnZXQsIGNv
bnN0IFN0cmluZyYgb2xkVmFsdWUpCiAgICAgICAgIDogbV90YXJnZXQodGFyZ2V0KQorICAgICAg
ICAsIG1fb2xkVmFsdWUob2xkVmFsdWUpCisgICAgeworICAgIH0KKworcHJpdmF0ZToKKyAgICB2
aXJ0dWFsIE5vZGUqIHRhcmdldCgpIE9WRVJSSURFIHsgcmV0dXJuIG1fdGFyZ2V0LmdldCgpOyB9
CisgICAgdmlydHVhbCBTdHJpbmcgb2xkVmFsdWUoKSBPVkVSUklERSB7IHJldHVybiBtX29sZFZh
bHVlOyB9CisgICAgdmlydHVhbCBOb2RlTGlzdCogYWRkZWROb2RlcygpIE9WRVJSSURFIHsgcmV0
dXJuIGxhemlseUluaXRpYWxpemVFbXB0eU5vZGVMaXN0KG1fYWRkZWROb2Rlcyk7IH0KKyAgICB2
aXJ0dWFsIE5vZGVMaXN0KiByZW1vdmVkTm9kZXMoKSBPVkVSUklERSB7IHJldHVybiBsYXppbHlJ
bml0aWFsaXplRW1wdHlOb2RlTGlzdChtX3JlbW92ZWROb2Rlcyk7IH0KKworICAgIHN0YXRpYyBO
b2RlTGlzdCogbGF6aWx5SW5pdGlhbGl6ZUVtcHR5Tm9kZUxpc3QoUmVmUHRyPE5vZGVMaXN0PiYg
bm9kZUxpc3QpCisgICAgeworICAgICAgICBpZiAoIW5vZGVMaXN0KQorICAgICAgICAgICAgbm9k
ZUxpc3QgPSBTdGF0aWNOb2RlTGlzdDo6Y3JlYXRlRW1wdHkoKTsKKyAgICAgICAgcmV0dXJuIG5v
ZGVMaXN0LmdldCgpOworICAgIH0KKworICAgIFJlZlB0cjxOb2RlPiBtX3RhcmdldDsKKyAgICBT
dHJpbmcgbV9vbGRWYWx1ZTsKKyAgICBSZWZQdHI8Tm9kZUxpc3Q+IG1fYWRkZWROb2RlczsKKyAg
ICBSZWZQdHI8Tm9kZUxpc3Q+IG1fcmVtb3ZlZE5vZGVzOworfTsKKworY2xhc3MgQXR0cmlidXRl
c1JlY29yZCA6IHB1YmxpYyBSZWNvcmRXaXRoRW1wdHlOb2RlTGlzdHMgeworcHVibGljOgorICAg
IEF0dHJpYnV0ZXNSZWNvcmQoUGFzc1JlZlB0cjxOb2RlPiB0YXJnZXQsIGNvbnN0IFF1YWxpZmll
ZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgb2xkVmFsdWUpCisgICAgICAgIDogUmVj
b3JkV2l0aEVtcHR5Tm9kZUxpc3RzKHRhcmdldCwgb2xkVmFsdWUpCiAgICAgICAgICwgbV9hdHRy
aWJ1dGVOYW1lKG5hbWUubG9jYWxOYW1lKCkpCiAgICAgICAgICwgbV9hdHRyaWJ1dGVOYW1lc3Bh
Y2UobmFtZS5uYW1lc3BhY2VVUkkoKSkKLSAgICAgICAgLCBtX29sZFZhbHVlKG9sZFZhbHVlKQog
ICAgIHsKICAgICB9CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcm
IHR5cGUoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIE5vZGUqIHRhcmdldCgpIE9WRVJSSURFIHsg
cmV0dXJuIG1fdGFyZ2V0LmdldCgpOyB9CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcm
IGF0dHJpYnV0ZU5hbWUoKSBPVkVSUklERSB7IHJldHVybiBtX2F0dHJpYnV0ZU5hbWU7IH0KICAg
ICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlTmFtZXNwYWNlKCkgT1ZFUlJJ
REUgeyByZXR1cm4gbV9hdHRyaWJ1dGVOYW1lc3BhY2U7IH0KLSAgICB2aXJ0dWFsIFN0cmluZyBv
bGRWYWx1ZSgpIE9WRVJSSURFIHsgcmV0dXJuIG1fb2xkVmFsdWU7IH0KIAotICAgIFJlZlB0cjxO
b2RlPiBtX3RhcmdldDsKICAgICBBdG9taWNTdHJpbmcgbV9hdHRyaWJ1dGVOYW1lOwogICAgIEF0
b21pY1N0cmluZyBtX2F0dHJpYnV0ZU5hbWVzcGFjZTsKLSAgICBBdG9taWNTdHJpbmcgbV9vbGRW
YWx1ZTsKIH07CiAKLWNsYXNzIENoYXJhY3RlckRhdGFSZWNvcmQgOiBwdWJsaWMgTXV0YXRpb25S
ZWNvcmQgeworY2xhc3MgQ2hhcmFjdGVyRGF0YVJlY29yZCA6IHB1YmxpYyBSZWNvcmRXaXRoRW1w
dHlOb2RlTGlzdHMgewogcHVibGljOgogICAgIENoYXJhY3RlckRhdGFSZWNvcmQoUGFzc1JlZlB0
cjxOb2RlPiB0YXJnZXQsIGNvbnN0IFN0cmluZyYgb2xkVmFsdWUpCi0gICAgICAgIDogbV90YXJn
ZXQodGFyZ2V0KQotICAgICAgICAsIG1fb2xkVmFsdWUob2xkVmFsdWUpCisgICAgICAgIDogUmVj
b3JkV2l0aEVtcHR5Tm9kZUxpc3RzKHRhcmdldCwgb2xkVmFsdWUpCiAgICAgewogICAgIH0KIAog
cHJpdmF0ZToKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSgpIE9WRVJSSURF
OwotICAgIHZpcnR1YWwgTm9kZSogdGFyZ2V0KCkgT1ZFUlJJREUgeyByZXR1cm4gbV90YXJnZXQu
Z2V0KCk7IH0KLSAgICB2aXJ0dWFsIFN0cmluZyBvbGRWYWx1ZSgpIE9WRVJSSURFIHsgcmV0dXJu
IG1fb2xkVmFsdWU7IH0KLQotICAgIFJlZlB0cjxOb2RlPiBtX3RhcmdldDsKLSAgICBTdHJpbmcg
bV9vbGRWYWx1ZTsKIH07CiAKIGNsYXNzIE11dGF0aW9uUmVjb3JkV2l0aE51bGxPbGRWYWx1ZSA6
IHB1YmxpYyBNdXRhdGlvblJlY29yZCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
TXV0YXRpb25SZWNvcmQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblJlY29yZC5oCmlu
ZGV4IGQ3NDZkNDg1OWJjYzI3OWYxYzY1OTI1ZDVjMzZiNmU1MzQwOGQ1YjcuLjA2MTkzNDYzMTBk
Y2ZjMjhlYWQxYTk3M2JmNTcxMjY4ZTdiNTRmNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9NdXRhdGlvblJlY29yZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblJl
Y29yZC5oCkBAIC01Nyw4ICs1Nyw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21p
Y1N0cmluZyYgdHlwZSgpID0gMDsKICAgICB2aXJ0dWFsIE5vZGUqIHRhcmdldCgpID0gMDsKIAot
ICAgIHZpcnR1YWwgTm9kZUxpc3QqIGFkZGVkTm9kZXMoKSB7IHJldHVybiAwOyB9Ci0gICAgdmly
dHVhbCBOb2RlTGlzdCogcmVtb3ZlZE5vZGVzKCkgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwg
Tm9kZUxpc3QqIGFkZGVkTm9kZXMoKSA9IDA7CisgICAgdmlydHVhbCBOb2RlTGlzdCogcmVtb3Zl
ZE5vZGVzKCkgPSAwOwogICAgIHZpcnR1YWwgTm9kZSogcHJldmlvdXNTaWJsaW5nKCkgeyByZXR1
cm4gMDsgfQogICAgIHZpcnR1YWwgTm9kZSogbmV4dFNpYmxpbmcoKSB7IHJldHVybiAwOyB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdGF0aWNOb2RlTGlzdC5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL1N0YXRpY05vZGVMaXN0LmgKaW5kZXggNTMyMGNlNTJiZTEyODhlNmZiOTAx
MWY5M2MzN2I1OWYwYTA2OTk1Yi4uNWRlYmQyZTU5MjI3ZTdkZTVjZmM3YTJlYTUyN2JjZDQ4Y2Zj
MjJmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1N0YXRpY05vZGVMaXN0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL1N0YXRpY05vZGVMaXN0LmgKQEAgLTQwLDEwICs0MCwxNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBTdGF0aWNOb2RlTGlzdCA6IHB1Ymxp
YyBOb2RlTGlzdCB7CiAgICAgcHVibGljOgotICAgICAgICAvLyBBZG9wdHMgdGhlIGNvbnRlbnRz
IG9mIHRoZSBub2RlcyB2ZWN0b3IuCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0YXRpY05v
ZGVMaXN0PiBhZG9wdChWZWN0b3I8UmVmUHRyPE5vZGU+ID4mIG5vZGVzKQogICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0YXRpY05vZGVMaXN0KG5vZGVzKSk7Cisg
ICAgICAgICAgICBSZWZQdHI8U3RhdGljTm9kZUxpc3Q+IG5vZGVMaXN0ID0gYWRvcHRSZWYobmV3
IFN0YXRpY05vZGVMaXN0KTsKKyAgICAgICAgICAgIG5vZGVMaXN0LT5tX25vZGVzLnN3YXAobm9k
ZXMpOworICAgICAgICAgICAgcmV0dXJuIG5vZGVMaXN0LnJlbGVhc2UoKTsKKyAgICAgICAgfQor
CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0YXRpY05vZGVMaXN0PiBjcmVhdGVFbXB0eSgp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3RhdGljTm9kZUxp
c3QpOwogICAgICAgICB9CiAKICAgICAgICAgdmlydHVhbCB1bnNpZ25lZCBsZW5ndGgoKSBjb25z
dCBPVkVSUklERTsKQEAgLTUxLDEwICs1Nyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgdmlydHVhbCBOb2RlKiBuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3QgT1ZF
UlJJREU7CiAKICAgICBwcml2YXRlOgotICAgICAgICBleHBsaWNpdCBTdGF0aWNOb2RlTGlzdChW
ZWN0b3I8UmVmUHRyPE5vZGU+ID4mIG5vZGVzKQotICAgICAgICB7Ci0gICAgICAgICAgICBtX25v
ZGVzLnN3YXAobm9kZXMpOwotICAgICAgICB9CisgICAgICAgIFN0YXRpY05vZGVMaXN0KCkgeyB9
CisKICAgICAgICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IG1fbm9kZXM7CiAgICAgfTsKIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDkxMzI4NmNlMThjOTBlMTM4MTI1ODU3MDhlYjhmMjA1M2VkMzQ1ODUuLjZhNjRiNzU5NjZi
MzYwMTY5ZjM1NTg2YzdiZDhmMDMxNWQ2MjlkZTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAx
Mi0xMi0wNyAgQWRhbSBLbGVpbiAgPGFkYW1rQGNocm9taXVtLm9yZz4KKworICAgICAgICBNdXRh
dGlvblJlY29yZCBhZGRlZE5vZGVzL3JlbW92ZWROb2RlcyBzaG91bGQgbmV2ZXIgYmUgbnVsbAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg5MjEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCisKKyAgICAgICAgVXBkYXRlZCBudWxs
aXR5IHRlc3QgdG8gY2hlY2sgZm9yIGVtcHR5IG5vZGVsaXN0cy4KKworICAgICAgICAqIGZhc3Qv
bXV0YXRpb24vbXV0YXRpb24tcmVjb3JkLW51bGxpdHktZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IGZhc3QvbXV0YXRpb24vbXV0YXRpb24tcmVjb3JkLW51bGxpdHkuaHRtbDoKKwogMjAxMi0xMi0w
NiAgU3RlcGhlbiBXaGl0ZSAgPHNlbm9yYmxhbmNvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBb
Q2hyb21pdW1dIFVucmV2aWV3ZWQgZ2FyZGVuaW5nLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9tdXRhdGlvbi9tdXRhdGlvbi1yZWNvcmQtbnVsbGl0eS1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9mYXN0L211dGF0aW9uL211dGF0aW9uLXJlY29yZC1udWxsaXR5LWV4cGVjdGVkLnR4
dAppbmRleCA2MjkwMjlkNjQ1ZjYxNDk0ZWU2NzgzYzFjZjE1YTQ2ZTA3ODdkMjg5Li43MjA1NjY0
ZTFlMzViOTg3ZjNmNjVkYWEzZTBiYjY4NzdhOTM4ZGQzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9mYXN0L211dGF0aW9uL211dGF0aW9uLXJlY29yZC1udWxsaXR5LWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL211dGF0aW9uLXJlY29yZC1udWxsaXR5LWV4cGVj
dGVkLnR4dApAQCAtMSw0ICsxLDQgQEAKLU5vbi1yZWxldmFudCBwcm9wZXJ0aWVzIG9uIG11dGF0
aW9uIHJlY29yZHMgc2hvdWxkIGJlIG51bGwKK05vbi1yZWxldmFudCBwcm9wZXJ0aWVzIG9uIG11
dGF0aW9uIHJlY29yZHMgc2hvdWxkIGJlIG51bGwsIGV4Y2VwdCBmb3IgTm9kZUxpc3RzLCB3aGlj
aCBzaG91bGQgYmUgZW1wdHkKIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCkBAIC03LDEw
ICs3LDEwIEBAIGNoYXJhY3RlckRhdGEgcmVjb3JkOgogUEFTUyByZWNvcmQuYXR0cmlidXRlTmFt
ZSBpcyBudWxsCiBQQVNTIHJlY29yZC5hdHRyaWJ1dGVOYW1lc3BhY2UgaXMgbnVsbAogUEFTUyBy
ZWNvcmQub2xkVmFsdWUgaXMgbnVsbAotUEFTUyByZWNvcmQuYWRkZWROb2RlcyBpcyBudWxsCi1Q
QVNTIHJlY29yZC5yZW1vdmVkTm9kZXMgaXMgbnVsbAogUEFTUyByZWNvcmQucHJldmlvdXNTaWJs
aW5nIGlzIG51bGwKIFBBU1MgcmVjb3JkLm5leHRTaWJsaW5nIGlzIG51bGwKK1BBU1MgcmVjb3Jk
LmFkZGVkTm9kZXMubGVuZ3RoIGlzIDAKK1BBU1MgcmVjb3JkLnJlbW92ZWROb2Rlcy5sZW5ndGgg
aXMgMAogCiBjaGlsZExpc3QgcmVjb3JkOgogUEFTUyByZWNvcmQuYXR0cmlidXRlTmFtZSBpcyBu
dWxsCkBAIC0yMCwxMCArMjAsMTAgQEAgUEFTUyByZWNvcmQub2xkVmFsdWUgaXMgbnVsbAogYXR0
cmlidXRlcyByZWNvcmQ6CiBQQVNTIHJlY29yZC5hdHRyaWJ1dGVOYW1lc3BhY2UgaXMgbnVsbAog
UEFTUyByZWNvcmQub2xkVmFsdWUgaXMgbnVsbAotUEFTUyByZWNvcmQuYWRkZWROb2RlcyBpcyBu
dWxsCi1QQVNTIHJlY29yZC5yZW1vdmVkTm9kZXMgaXMgbnVsbAogUEFTUyByZWNvcmQucHJldmlv
dXNTaWJsaW5nIGlzIG51bGwKIFBBU1MgcmVjb3JkLm5leHRTaWJsaW5nIGlzIG51bGwKK1BBU1Mg
cmVjb3JkLmFkZGVkTm9kZXMubGVuZ3RoIGlzIDAKK1BBU1MgcmVjb3JkLnJlbW92ZWROb2Rlcy5s
ZW5ndGggaXMgMAogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBM
RVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL211dGF0aW9uLXJlY29y
ZC1udWxsaXR5Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L211dGF0aW9uL211dGF0aW9uLXJlY29y
ZC1udWxsaXR5Lmh0bWwKaW5kZXggNGFhMzBlM2Y5OWI4MjI1Y2E1Y2ViY2YzZjBmMDRkNmYzNDdl
NjZiYi4uYWY0OGZkYzVkZWFjOWFhODAzZjA4M2E5Y2VkYTMwNzRiZTE1YTlmMCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvZmFzdC9tdXRhdGlvbi9tdXRhdGlvbi1yZWNvcmQtbnVsbGl0eS5odG1s
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbXV0YXRpb24vbXV0YXRpb24tcmVjb3JkLW51bGxpdHku
aHRtbApAQCAtMSw3ICsxLDcgQEAKIDwhRE9DVFlQRSBodG1sPgogPHNjcmlwdCBzcmM9Ii4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgotZGVzY3JpcHRp
b24oJ05vbi1yZWxldmFudCBwcm9wZXJ0aWVzIG9uIG11dGF0aW9uIHJlY29yZHMgc2hvdWxkIGJl
IG51bGwnKTsKK2Rlc2NyaXB0aW9uKCdOb24tcmVsZXZhbnQgcHJvcGVydGllcyBvbiBtdXRhdGlv
biByZWNvcmRzIHNob3VsZCBiZSBudWxsLCBleGNlcHQgZm9yIE5vZGVMaXN0cywgd2hpY2ggc2hv
dWxkIGJlIGVtcHR5Jyk7CiB2YXIgb2JzZXJ2ZXIgPSBuZXcgV2ViS2l0TXV0YXRpb25PYnNlcnZl
cihmdW5jdGlvbigpIHt9KTsKIAogdmFyIHRleHQgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgn
c29tZXRoaW5nJyk7CkBAIC0xMiwxMCArMTIsMTAgQEAgZGVidWcoJ2NoYXJhY3RlckRhdGEgcmVj
b3JkOicpOwogc2hvdWxkQmVOdWxsKCdyZWNvcmQuYXR0cmlidXRlTmFtZScpOwogc2hvdWxkQmVO
dWxsKCdyZWNvcmQuYXR0cmlidXRlTmFtZXNwYWNlJyk7CiBzaG91bGRCZU51bGwoJ3JlY29yZC5v
bGRWYWx1ZScpOwotc2hvdWxkQmVOdWxsKCdyZWNvcmQuYWRkZWROb2RlcycpOwotc2hvdWxkQmVO
dWxsKCdyZWNvcmQucmVtb3ZlZE5vZGVzJyk7CiBzaG91bGRCZU51bGwoJ3JlY29yZC5wcmV2aW91
c1NpYmxpbmcnKTsKIHNob3VsZEJlTnVsbCgncmVjb3JkLm5leHRTaWJsaW5nJyk7CitzaG91bGRC
ZSgncmVjb3JkLmFkZGVkTm9kZXMubGVuZ3RoJywgJzAnKTsKK3Nob3VsZEJlKCdyZWNvcmQucmVt
b3ZlZE5vZGVzLmxlbmd0aCcsICcwJyk7CiAKIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdkaXYnKTsKIG9ic2VydmVyLm9ic2VydmUoZGl2LCB7Y2hpbGRMaXN0OiB0cnVlfSk7CkBA
IC0zMiw5ICszMiw5IEBAIHJlY29yZCA9IG9ic2VydmVyLnRha2VSZWNvcmRzKClbMF07CiBkZWJ1
ZygnXG5hdHRyaWJ1dGVzIHJlY29yZDonKTsKIHNob3VsZEJlTnVsbCgncmVjb3JkLmF0dHJpYnV0
ZU5hbWVzcGFjZScpOwogc2hvdWxkQmVOdWxsKCdyZWNvcmQub2xkVmFsdWUnKTsKLXNob3VsZEJl
TnVsbCgncmVjb3JkLmFkZGVkTm9kZXMnKTsKLXNob3VsZEJlTnVsbCgncmVjb3JkLnJlbW92ZWRO
b2RlcycpOwogc2hvdWxkQmVOdWxsKCdyZWNvcmQucHJldmlvdXNTaWJsaW5nJyk7CiBzaG91bGRC
ZU51bGwoJ3JlY29yZC5uZXh0U2libGluZycpOworc2hvdWxkQmUoJ3JlY29yZC5hZGRlZE5vZGVz
Lmxlbmd0aCcsICcwJyk7CitzaG91bGRCZSgncmVjb3JkLnJlbW92ZWROb2Rlcy5sZW5ndGgnLCAn
MCcpOwogPC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>