<?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>50666</bug_id>
          
          <creation_ts>2010-12-07 22:20:43 -0800</creation_ts>
          <short_desc>Spatial Navigation: code clean up</short_desc>
          <delta_ts>2011-05-30 09:47:04 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Accessibility</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>61606</dependson>
          <blocked>46905</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Antonio Gomes">tonikitoo</reporter>
          <assigned_to name="Antonio Gomes">tonikitoo</assigned_to>
          <cc>abarth</cc>
    
    <cc>dbates</cc>
    
    <cc>eric</cc>
    
    <cc>kenneth</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yael</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>318652</commentid>
    <comment_count>0</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-12-07 22:20:43 -0800</bug_when>
    <thetext>Although the spatial navigation is in a great shape, feature complete wise, its code can be improved in some patch.

Patch(es) coming ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318653</commentid>
    <comment_count>1</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-12-07 22:21:52 -0800</bug_when>
    <thetext>(In reply to comment #0)
&gt; ... its code can be improved in some patch.

&quot;parts&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318657</commentid>
    <comment_count>2</comment_count>
      <attachid>75873</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-12-07 22:32:55 -0800</bug_when>
    <thetext>Created attachment 75873
patch v1 (committed r73627, r=dbates)

Patch unifies the two non-default FocusCandidate constructors, making caller sites simpler. Now the special handling given to HTMLAreaElement elements is done within
the non default constructor (i.e. FocusCanditate(Node*, FocusDirection)).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318821</commentid>
    <comment_count>3</comment_count>
      <attachid>75873</attachid>
    <who name="Yael">yael</who>
    <bug_when>2010-12-08 09:15:37 -0800</bug_when>
    <thetext>Comment on attachment 75873
patch v1 (committed r73627, r=dbates)

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

&gt; WebCore/page/FocusController.cpp:-492
&gt; -        if (!node-&gt;renderer())

Removing the check for !node-&gt;Renderer() will cause a crash if you have an iframe of size (0 x 0). This is not uncommon thing to do.
I am about to add a layout test to make sure we don&apos;t break this in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318823</commentid>
    <comment_count>4</comment_count>
      <attachid>75873</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-12-08 09:21:21 -0800</bug_when>
    <thetext>Comment on attachment 75873
patch v1 (committed r73627, r=dbates)

It is not removed it moved to inside FocusCandidate ctor:

+if (!n-&gt;renderer())
+  82 return;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318843</commentid>
    <comment_count>5</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2010-12-08 09:57:43 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 75873 [details])
&gt; It is not removed it moved to inside FocusCandidate ctor:
&gt; 
&gt; +if (!n-&gt;renderer())
&gt; +  82 return;

My bad.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318846</commentid>
    <comment_count>6</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-12-08 10:01:16 -0800</bug_when>
    <thetext>
&gt; ...  cause a crash if you have an iframe of size (0 x 0). This is not uncommon thing to do.
&gt; I am about to add a layout test to make sure we don&apos;t break this in the future.

that would be nice anyways.!

A layout test with 0x0 sized frame and anchor whose display property is set to none should get caught here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319416</commentid>
    <comment_count>7</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2010-12-09 05:31:50 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; &gt; ...  cause a crash if you have an iframe of size (0 x 0). This is not uncommon thing to do.
&gt; &gt; I am about to add a layout test to make sure we don&apos;t break this in the future.
&gt; 
&gt; that would be nice anyways.!
&gt; 
&gt; A layout test with 0x0 sized frame and anchor whose display property is set to none should get caught here.

https://bugs.webkit.org/show_bug.cgi?id=50730
https://bugs.webkit.org/show_bug.cgi?id=50728</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319528</commentid>
    <comment_count>8</comment_count>
      <attachid>75873</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-12-09 09:57:39 -0800</bug_when>
    <thetext>Comment on attachment 75873
patch v1 (committed r73627, r=dbates)

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

&gt; WebCore/ChangeLog:9
&gt; +        simpler. Now the special handling HTMLAreaElement gets is done within

The start of the second sentence does not read well. I believe you mean:

&quot;Now the special handling for the HTMLAreaElement gets done within ...&quot;

&gt; WebCore/page/SpatialNavigation.cpp:88
&gt; +    if (n-&gt;hasTagName(HTMLNames::areaTag)) {
&gt; +        HTMLAreaElement* area = static_cast&lt;HTMLAreaElement*&gt;(n);
&gt; +        HTMLImageElement* image = area-&gt;imageElement();
&gt; +        if (!image)
&gt; +            return;
&gt; +
&gt; +        focusableNode = area;
&gt; +        visibleNode = image;
&gt; +        rect = virtualRectForAreaElementAndDirection(direction, area);
&gt; +        isOffscreen = hasOffscreenRect(image);
&gt; +        isOffscreenAfterScrolling = hasOffscreenRect(image, direction);
&gt; +    } else {
&gt; +        if (!n-&gt;renderer())
&gt; +            return;
&gt; +
&gt; +        visibleNode = focusableNode = n;
&gt; +        rect = nodeRectInAbsoluteCoordinates(n, true /* ignore border */);
&gt; +        isOffscreen = hasOffscreenRect(n);
&gt; +        isOffscreenAfterScrolling = hasOffscreenRect(n, direction);
&gt; +    }

It looks like we can move the variable initialization of focusableNode, isOffscreen, and isOffscreenAfterScrolling outside the if-else clauses since they occur in both. Maybe something like:

if (n-&gt;hasTagName(HTMLNames::areaTag)) {
	HTMLAreaElement* area = static_cast&lt;HTMLAreaElement*&gt;(n);
	HTMLImageElement* image = area-&gt;imageElement();
	if (!image || !image-&gt;renderer())
		return;
	visibleNode = image;
	rect = virtualRectForAreaElementAndDirection(direction, area);
} else {
	if (!n-&gt;renderer())
		return;
	visibleNode = n;
	rect = nodeRectInAbsoluteCoordinates(n, true /* ignore border */);
}
focusableNode = n;
isOffscreen = hasOffscreenRect(visibleNode);
isOffscreenAfterScrolling = hasOffscreenRect(visibleNode, direction);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319531</commentid>
    <comment_count>9</comment_count>
      <attachid>75873</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-12-09 10:00:17 -0800</bug_when>
    <thetext>Comment on attachment 75873
patch v1 (committed r73627, r=dbates)

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

&gt; WebCore/page/SpatialNavigation.cpp:85
&gt; +        rect = nodeRectInAbsoluteCoordinates(n, true /* ignore border */);

Nit: I don&apos;t really like the boolean second argument of nodeRectInAbsoluteCoordinates(). We should consider making the second argument take enum values so that we an remove the comment /* ignore border */. This can be done in a follow up bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319600</commentid>
    <comment_count>10</comment_count>
      <attachid>75873</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-12-09 11:04:44 -0800</bug_when>
    <thetext>Comment on attachment 75873
patch v1 (committed r73627, r=dbates)

Clearing flags on attachment: 75873

Committed r73627: &lt;http://trac.webkit.org/changeset/73627&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319963</commentid>
    <comment_count>11</comment_count>
      <attachid>76168</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-12-09 23:44:50 -0800</bug_when>
    <thetext>Created attachment 76168
patch 2 - v1

More clean ups</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>319990</commentid>
    <comment_count>12</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-10 00:06:52 -0800</bug_when>
    <thetext>Attachment 76168 did not build on mac:
Build output: http://queues.webkit.org/results/6905025</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320056</commentid>
    <comment_count>13</comment_count>
      <attachid>76168</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-10 02:41:44 -0800</bug_when>
    <thetext>Comment on attachment 76168
patch 2 - v1

r-, breaks mac.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320299</commentid>
    <comment_count>14</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-12-10 12:03:18 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 76168 [details])
&gt; r-, breaks mac.

Could someone help me to see what is the Mac build error about? The logs did not help me :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320324</commentid>
    <comment_count>15</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2010-12-10 12:24:42 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #13)
&gt; &gt; (From update of attachment 76168 [details] [details])
&gt; &gt; r-, breaks mac.
&gt; 
&gt; Could someone help me to see what is the Mac build error about? The logs did not help me :(

I think you should bring back this declaration:

static void updateFocusCandidateIfNeeded(FocusDirection direction, const IntRect&amp; startingRect, FocusCandidate&amp; candidate, FocusCandidate&amp; closest);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320829</commentid>
    <comment_count>16</comment_count>
      <attachid>76324</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-12-12 06:13:37 -0800</bug_when>
    <thetext>Created attachment 76324
patch 2 - v2 (committed with r73885, r=dbates)

Fixed Mac build fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320873</commentid>
    <comment_count>17</comment_count>
      <attachid>76324</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-12-12 12:41:41 -0800</bug_when>
    <thetext>Comment on attachment 76324
patch 2 - v2 (committed with r73885, r=dbates)

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

&gt; WebCore/ChangeLog:18
&gt; +        Summary:
&gt; +        - Removed static declaration of updateFocusCandidateIfNeeded() from the top of FocusController.cpp.
&gt; +        It is unneeded;
&gt; +        - In FocusCandidate constructor, renamed &apos;n&apos; to &apos;node&apos;, and added an assert to it;
&gt; +        - In virtualRectForAreaElementAndDirection, I added an assert to &apos;node&apos; as well;
&gt; +        - In SpatialNavigation.h:
&gt; +        1) I reordered the declaration of some methods in order to group
&gt; +           related ones;
&gt; +        2) removed isScrollableContainerNode() function declaration since it is not used outside
&gt; +        SpatialNavigation.cpp;
&gt; +        3) and removed the declaration of isNodeDeepDescendantOfDocument() since it does not exist anymore.

It is unusual to give such a detailed summary for a change.

If you feel that the name of the bug is insufficient to describe this change then I suggest  you write a general description of the change and/or highlight the major change in this patch. Then I would move your Summary remarks to after the &apos;:&apos; to the right of the respective file/function in the list of files and functions (below).

For an example of this, see &lt;http://trac.webkit.org/changeset/73829&gt;. Notice, a description is omitted in the change log entry as the bug title is sufficiently detailed.

&gt; WebCore/page/SpatialNavigation.cpp:54
&gt;  static IntRect rectToAbsoluteCoordinates(Frame* initialFrame, const IntRect&amp; rect);

Nit: Although outside of this patch, the name of the second argument &quot;rect&quot; should be removed/renamed as it doesn&apos;t add any value to this function prototype.

&gt; WebCore/page/SpatialNavigation.cpp:56
&gt; +static bool isScrollableContainerNode(const WebCore::Node*);

Do we need the &quot;WebCore::&quot; prefix here? Looking at the code, this declaration is within the WebCore namespace.

&gt; WebCore/page/SpatialNavigation.cpp:695
&gt;  IntRect virtualRectForAreaElementAndDirection(FocusDirection direction, HTMLAreaElement* area)

Nit: The name of this function disagrees with the ordering of its arguments. In particular, its name implies that the argument order should be HTMLAreaElement*, then FocusDirection.

&gt; WebCore/page/SpatialNavigation.cpp:697
&gt; +    ASSERT(area);

I suggest that we also ASSERT(area-&gt;imageElement()).

&gt; WebCore/page/SpatialNavigation.h:143
&gt; +Node* scrollableEnclosingBoxOrParentFrameForNodeInDirection(FocusDirection, Node* node);

Please remove the name of the second argument &quot;node&quot; as it doesn&apos;t add any value to this prototype declaration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320936</commentid>
    <comment_count>18</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-12-12 21:44:33 -0800</bug_when>
    <thetext>
&gt; It is unusual to give such a detailed summary for a change.
&gt; 
&gt; ... Then I would move your Summary remarks to after the &apos;:&apos; to the right of the respective file/function in the list of files and functions (below).

Done.

&gt; &gt; WebCore/page/SpatialNavigation.cpp:56
&gt; &gt; +static bool isScrollableContainerNode(const WebCore::Node*);
&gt; 
&gt; Do we need the &quot;WebCore::&quot; prefix here? Looking at the code, this declaration is within the WebCore namespace.

It is not needed. Removed.
 
&gt; &gt; WebCore/page/SpatialNavigation.cpp:697
&gt; &gt; +    ASSERT(area);
&gt; 
&gt; I suggest that we also ASSERT(area-&gt;imageElement()).

Done.

&gt; &gt; WebCore/page/SpatialNavigation.h:143
&gt; &gt; +Node* scrollableEnclosingBoxOrParentFrameForNodeInDirection(FocusDirection, Node* node);
&gt; 
&gt; Please remove the name of the second argument &quot;node&quot; as it doesn&apos;t add any value to this prototype declaration.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320937</commentid>
    <comment_count>19</comment_count>
      <attachid>76324</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-12-12 21:53:13 -0800</bug_when>
    <thetext>Comment on attachment 76324
patch 2 - v2 (committed with r73885, r=dbates)

Clearing flags on attachment: 76324

Committed r73885: &lt;http://trac.webkit.org/changeset/73885&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320944</commentid>
    <comment_count>20</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-12-12 22:54:24 -0800</bug_when>
    <thetext>Wont close it, since there is more stuff coming ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320946</commentid>
    <comment_count>21</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-12 23:29:02 -0800</bug_when>
    <thetext>It&apos;s generally preferred to use master bugs, and do one-bug-per change, but multi-patch bugs are certainly not &quot;forbidden&quot;. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321188</commentid>
    <comment_count>22</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-12-13 10:07:01 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; It&apos;s generally preferred to use master bugs, and do one-bug-per change, but multi-patch bugs are certainly not &quot;forbidden&quot;. :)

I know :( I promiss it won&apos;t happen again othen than here :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321681</commentid>
    <comment_count>23</comment_count>
      <attachid>76498</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-12-13 22:12:31 -0800</bug_when>
    <thetext>Created attachment 76498
patch 3 - v1 (committed r74003, r=dbates)

Some more clean ups</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321682</commentid>
    <comment_count>24</comment_count>
      <attachid>76499</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-12-13 22:13:07 -0800</bug_when>
    <thetext>Created attachment 76499
patch 4 - v1 (committed r74004, r=dbates)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321685</commentid>
    <comment_count>25</comment_count>
      <attachid>76498</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-12-13 22:30:05 -0800</bug_when>
    <thetext>Comment on attachment 76498
patch 3 - v1 (committed r74003, r=dbates)

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

&gt; WebCore/ChangeLog:11
&gt; +        * page/SpatialNavigation.h: Added FocusCandidate::isFrameOwnerElement and WebCore::toFrameOwnerElement helper functions.
&gt; +        (WebCore::FocusCandidate::isFrameOwnerElement): Checks is the Node pointer wrapped by FocusCandidate is a instead of HTMLFrameOwnerElement.

Nit: We tend to wrap change log lines at around 80 columns.

&gt; WebCore/ChangeLog:13
&gt; +        (WebCore::toFrameOwnerElement): Static casts the FocusCandidate given as parameter to HTMLFrameOwnerElement if appropriated.

Nit: This sentence does not read well. Maybe, write &quot;Returns the HTMLFrameOwnerElement associated with the FocusCandidate if appropriate&quot;?

&gt; WebCore/page/SpatialNavigation.cpp:704
&gt; +HTMLFrameOwnerElement* toFrameOwnerElement(FocusCandidate&amp; candidate)

The name of this function seems strange. In particular, the prefix &quot;to&quot; implies that the FocusCandidate will be transformed into an HTMLFrameOwnerElement (like toRenderTable casting a RenderObject* to a RenderTable*). However, this function actually transforms the visibleNode of a FocusCandidate object from type Node* to HTMLFrameOwnerElement*.

Maybe rename this function frameOwnerElement(FocusCandidate&amp; candidate)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321688</commentid>
    <comment_count>26</comment_count>
      <attachid>76499</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-12-13 22:37:22 -0800</bug_when>
    <thetext>Comment on attachment 76499
patch 4 - v1 (committed r74004, r=dbates)

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

Looks good to me.
r=me.

&gt; WebCore/page/FocusController.cpp:505
&gt; +        // spatial navigation algorithm to continue, skipping this container.

Nit: I think it may be a bit clearer to write this line as &quot;spatial navigation algorithm will skip this container.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321689</commentid>
    <comment_count>27</comment_count>
      <attachid>76502</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-12-13 22:43:27 -0800</bug_when>
    <thetext>Created attachment 76502
patch 5 - v1 (committed r74006, r=dbates)

(This one just need a quick rubber stamp)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321693</commentid>
    <comment_count>28</comment_count>
      <attachid>76498</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-12-13 22:53:31 -0800</bug_when>
    <thetext>Comment on attachment 76498
patch 3 - v1 (committed r74003, r=dbates)

Clearing flags on attachment: 76498

Committed r74003: &lt;http://trac.webkit.org/changeset/74003&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321695</commentid>
    <comment_count>29</comment_count>
      <attachid>76499</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-12-13 22:54:29 -0800</bug_when>
    <thetext>Comment on attachment 76499
patch 4 - v1 (committed r74004, r=dbates)

Clearing flags on attachment: 76499

Committed r74004: &lt;http://trac.webkit.org/changeset/74004&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321699</commentid>
    <comment_count>30</comment_count>
      <attachid>76502</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-12-13 22:56:26 -0800</bug_when>
    <thetext>Comment on attachment 76502
patch 5 - v1 (committed r74006, r=dbates)

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

&gt; WebCore/ChangeLog:12
&gt; +        (WebCore::distanceDataForNode): Made &apos;FocusCandidate current&apos; const since it is not supposed
&gt; +        changed within this function.

typo &apos;to be changed&apos; fixed locally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321711</commentid>
    <comment_count>31</comment_count>
      <attachid>76502</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-12-13 23:23:04 -0800</bug_when>
    <thetext>Comment on attachment 76502
patch 5 - v1 (committed r74006, r=dbates)

Clearing flags on attachment: 76502

Committed r74006: &lt;http://trac.webkit.org/changeset/74006&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324869</commentid>
    <comment_count>32</comment_count>
      <attachid>77087</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-12-20 23:37:42 -0800</bug_when>
    <thetext>Created attachment 77087
patch 6 - v1 (committed r74723, r=dbates)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325890</commentid>
    <comment_count>33</comment_count>
      <attachid>77087</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-12-22 21:38:56 -0800</bug_when>
    <thetext>Comment on attachment 77087
patch 6 - v1 (committed r74723, r=dbates)

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

r=me.

&gt; WebCore/ChangeLog:13
&gt; +        (WebCore::updatFocusCandidateIfNeeded): Assert if !renderer() or !isElementNode()
&gt; +        since we are bailing bailing our earlir in FocusCandidate constructor and
&gt; +        FocusController::findFocusCandidateInContainer respectively;

I believe you meant to write:

Assert renderer() and isElementNode() now that we are bailing out earlier in both the FocusCandidate constructor and FocusController::findFocusCandidateInContainer().

&gt; WebCore/ChangeLog:17
&gt; +        i(WebCore::FocusController::findFocusCandidateInContainer):
&gt; +        (WebCore::FocusController::advanceFocusDirectionallyInContainer): Adjusted callsites

Remove the leading &apos;i&apos; before the &quot;(WebCore::FocusController...&quot; on line 16.

callsites =&gt; call sites

&gt; WebCore/ChangeLog:19
&gt; +        (WebCore::FocusController::advanceFocusDirectionally): Adjusted callsite of

callsite =&gt; call site

&gt; WebCore/ChangeLog:23
&gt; +        (WebCore::FocusCandidate::FocusCandidate): Assert if node is not a element node;
&gt; +        (WebCore::isScrollableNode): Renamed from isScrollableContainerNode;

element =&gt; Element (as per &quot;The DOM Structure Model&quot; &lt;http://www.w3.org/TR/DOM-Level-2-Core/core.html#ID-1590626202&gt;).

; =&gt; . (on both line 22 and 23)

&gt; WebCore/ChangeLog:24
&gt; +        (WebCore::scrollInDirection): Adjusted callsite after function name change;

callsite =&gt; call site

; =&gt; .

&gt; WebCore/ChangeLog:26
&gt; +        a documentNode;

documentNode =&gt; &quot;Document node&quot; (as per &quot;The DOM Structure Model&quot; &lt;http://www.w3.org/TR/DOM-Level-2-Core/core.html#ID-1590626202&gt;).

; =&gt; .

&gt; WebCore/page/FocusController.cpp:475
&gt; +    for (; node; node = (node-&gt;isFrameOwnerElement() || canScrollInDirection(node, direction)) ? node-&gt;traverseNextSibling(container) : node-&gt;traverseNextNode(container)) {

I still do not like this for-loop since it&apos;s long to follow and its step function changes depending on the truth value of &quot;node-&gt;isFrameOwnerElement() || canScrollInDirection(node, direction)&quot;.

Maybe use a while-loop that has the form:

Node* next = container-&gt;firstChild();
while (next) {
   ...
   next = next-&gt;isFrameOwnerElement() || canScrollInDirection(next, direction) ? next-&gt;traverseNextSibling(container) : next-&gt;traverseNextNode(container);
}

&gt; WebCore/page/FocusController.cpp:585
&gt; +            startingRect = virtualRectForAreaElementAndDirection(area, direction);

Yay! The name of the function now matches the argument order.

&gt; WebCore/page/SpatialNavigation.cpp:431
&gt;          return (renderer-&gt;isBox() &amp;&amp; toRenderBox(renderer)-&gt;canBeScrolledAndHasScrollableArea()
&gt; -             &amp;&amp; node-&gt;hasChildNodes() &amp;&amp; !node-&gt;isDocumentNode());
&gt; +             &amp;&amp; node-&gt;hasChildNodes());

I would remove the outer parentheses and write this return on one line now that we have less conjuncts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>327354</commentid>
    <comment_count>34</comment_count>
      <attachid>77087</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-12-28 13:58:17 -0800</bug_when>
    <thetext>Comment on attachment 77087
patch 6 - v1 (committed r74723, r=dbates)

Clearing flags on attachment: 77087

Committed r74723: &lt;http://trac.webkit.org/changeset/74723&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>327397</commentid>
    <comment_count>35</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-12-28 15:02:57 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/74723 might have broken Leopard Intel Debug (Tests)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412266</commentid>
    <comment_count>36</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2011-05-30 09:47:04 -0700</bug_when>
    <thetext>Code is cleaner now. Lets close it.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75873</attachid>
            <date>2010-12-07 22:32:55 -0800</date>
            <delta_ts>2010-12-09 11:04:44 -0800</delta_ts>
            <desc>patch v1 (committed r73627, r=dbates)</desc>
            <filename>0001-2010-12-07-Antonio-Gomes-agomes-rim.com.patch</filename>
            <type>text/plain</type>
            <size>5600</size>
            <attacher name="Antonio Gomes">tonikitoo</attacher>
            
              <data encoding="base64">RnJvbSBmYjNmMGQ1ZDZlOGU3ZThlZDBmMGU1NmE2MDhjZDg5ZWIzMTE0MWJkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmlvIEdvbWVzIDxhZ29tZXNAcmltLmNvbT4KRGF0ZTog
V2VkLCA4IERlYyAyMDEwIDAxOjI5OjI5IC0wNTAwClN1YmplY3Q6IFtQQVRDSF0gMjAxMC0xMi0w
NyAgQW50b25pbyBHb21lcyAgPGFnb21lc0ByaW0uY29tPgoKICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KCiAgICAgICAgU3BhdGlhbCBOYXZpZ2F0aW9uOiBjb2RlIGNsZWFuIHVw
CiAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwNjY2Cgog
ICAgICAgIFBhdGNoIHVuaWZpZXMgdHdvIEZvY3VzQ2FuZGlkYXRlIGNvbnN0cnVjdG9ycywgbWFr
aW5nIGNhbGxlciBzaXRlcwogICAgICAgIHNpbXBsZXIuIE5vdyB0aGUgc3BlY2lhbCBoYW5kbGlu
ZyBIVE1MQXJlYUVsZW1lbnQgZ2V0cyBpcyBkb25lIHdpdGhpbgogICAgICAgIHRoZSBub24gZGVm
YXVsdCBjb25zdHJ1Y3RvciAoaS5lLiBGb2N1c0NhbmRpdGF0ZShOb2RlKiwgRm9jdXNEaXJlY3Rp
b24pKS4KCiAgICAgICAgTm8gbmV3IHRlc3RzIG5lZWRlZC4KCiAgICAgICAgKiBwYWdlL0ZvY3Vz
Q29udHJvbGxlci5jcHA6CiAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6ZmluZEZv
Y3VzQ2FuZGlkYXRlSW5Db250YWluZXIpOgogICAgICAgICogcGFnZS9TcGF0aWFsTmF2aWdhdGlv
bi5jcHA6CiAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ2FuZGlkYXRlOjpGb2N1c0NhbmRpZGF0ZSk6
Ci0tLQogV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICB8ICAgMTggKysrKysrKysr
KysrKysrCiBXZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcCAgIHwgICAxNSArLS0tLS0t
LS0tLS0KIFdlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHAgfCAgIDQyICsrKysrKysr
KysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tCiAzIGZpbGVzIGNoYW5nZWQsIDQwIGluc2VydGlv
bnMoKyksIDM1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODhiM2FkYS4uYWFkN2Q2MyAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAor
MjAxMC0xMi0wNyAgQW50b25pbyBHb21lcyAgPGFnb21lc0ByaW0uY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNwYXRpYWwgTmF2aWdhdGlvbjog
Y29kZSBjbGVhbiB1cAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NTA2NjYKKworICAgICAgICBQYXRjaCB1bmlmaWVzIHR3byBGb2N1c0NhbmRpZGF0ZSBj
b25zdHJ1Y3RvcnMsIG1ha2luZyBjYWxsZXIgc2l0ZXMKKyAgICAgICAgc2ltcGxlci4gTm93IHRo
ZSBzcGVjaWFsIGhhbmRsaW5nIEhUTUxBcmVhRWxlbWVudCBnZXRzIGlzIGRvbmUgd2l0aGluCisg
ICAgICAgIHRoZSBub24gZGVmYXVsdCBjb25zdHJ1Y3RvciAoaS5lLiBGb2N1c0NhbmRpdGF0ZShO
b2RlKiwgRm9jdXNEaXJlY3Rpb24pKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgbmVlZGVkLgor
CisgICAgICAgICogcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Rm9jdXNDb250cm9sbGVyOjpmaW5kRm9jdXNDYW5kaWRhdGVJbkNvbnRhaW5lcik6CisgICAgICAg
ICogcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb2N1c0Nh
bmRpZGF0ZTo6Rm9jdXNDYW5kaWRhdGUpOgorCiAyMDEwLTEyLTA3ICBTaW1vbiBGcmFzZXIgIDxz
aW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhbiBCZXJuc3Rl
aW4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcCBiL1dlYkNv
cmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCmluZGV4IDU1MDA5YTYuLjljZjQ4Y2YgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUvcGFn
ZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCkBAIC00NzgsMjEgKzQ3OCwxMCBAQCB2b2lkIEZvY3VzQ29u
dHJvbGxlcjo6ZmluZEZvY3VzQ2FuZGlkYXRlSW5Db250YWluZXIoTm9kZSogY29udGFpbmVyLCBj
b25zdCBJbnRSZQogICAgICAgICBpZiAoIW5vZGUtPmlzS2V5Ym9hcmRGb2N1c2FibGUoZXZlbnQp
ICYmICFub2RlLT5pc0ZyYW1lT3duZXJFbGVtZW50KCkgJiYgIWNhblNjcm9sbEluRGlyZWN0aW9u
KGRpcmVjdGlvbiwgbm9kZSkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBpZiAo
bm9kZS0+aGFzVGFnTmFtZShhcmVhVGFnKSkgewotICAgICAgICAgICAgSFRNTEFyZWFFbGVtZW50
KiBhcmVhID0gc3RhdGljX2Nhc3Q8SFRNTEFyZWFFbGVtZW50Kj4obm9kZSk7Ci0gICAgICAgICAg
ICBGb2N1c0NhbmRpZGF0ZSBjYW5kaWRhdGUoYXJlYSwgZGlyZWN0aW9uKTsKLSAgICAgICAgICAg
IGlmIChjYW5kaWRhdGUuaXNOdWxsKCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAg
ICAgICAgICAgIGNhbmRpZGF0ZS5lbmNsb3NpbmdTY3JvbGxhYmxlQm94ID0gY29udGFpbmVyOwot
ICAgICAgICAgICAgdXBkYXRlRm9jdXNDYW5kaWRhdGVJZk5lZWRlZChkaXJlY3Rpb24sIHN0YXJ0
aW5nUmVjdCwgY2FuZGlkYXRlLCBjbG9zZXN0KTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICB9Ci0KLSAgICAgICAgaWYgKCFub2RlLT5yZW5kZXJlcigpKQorICAgICAgICBGb2N1c0Nh
bmRpZGF0ZSBjYW5kaWRhdGUgPSBGb2N1c0NhbmRpZGF0ZShub2RlLCBkaXJlY3Rpb24pOworICAg
ICAgICBpZiAoY2FuZGlkYXRlLmlzTnVsbCgpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAg
ICAgICAgRm9jdXNDYW5kaWRhdGUgY2FuZGlkYXRlKG5vZGUsIGRpcmVjdGlvbik7CiAgICAgICAg
IGNhbmRpZGF0ZS5lbmNsb3NpbmdTY3JvbGxhYmxlQm94ID0gY29udGFpbmVyOwogICAgICAgICB1
cGRhdGVGb2N1c0NhbmRpZGF0ZUlmTmVlZGVkKGRpcmVjdGlvbiwgc3RhcnRpbmdSZWN0LCBjYW5k
aWRhdGUsIGNsb3Nlc3QpOwogICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9TcGF0aWFs
TmF2aWdhdGlvbi5jcHAgYi9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwCmluZGV4
IDE3NTA1MDAuLjBiMTE0MzcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdh
dGlvbi5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmNwcApAQCAtMzYs
NiArMzYsNyBAQAogI2luY2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVudC5oIgogI2luY2x1ZGUg
IkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTWFwRWxlbWVudC5oIgorI2luY2x1
ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJOb2RlLmgi
CiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAtNTUsMjAgKzU2LDYgQEAgc3RhdGljIHZvaWQgZW50cnlB
bmRFeGl0UG9pbnRzRm9yRGlyZWN0aW9uKEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgY29uc3Qg
SW50UmUKIAogCiBGb2N1c0NhbmRpZGF0ZTo6Rm9jdXNDYW5kaWRhdGUoTm9kZSogbiwgRm9jdXNE
aXJlY3Rpb24gZGlyZWN0aW9uKQotICAgIDogdmlzaWJsZU5vZGUobikKLSAgICAsIGZvY3VzYWJs
ZU5vZGUobikKLSAgICAsIGVuY2xvc2luZ1Njcm9sbGFibGVCb3goMCkKLSAgICAsIGRpc3RhbmNl
KG1heERpc3RhbmNlKCkpCi0gICAgLCBwYXJlbnREaXN0YW5jZShtYXhEaXN0YW5jZSgpKQotICAg
ICwgYWxpZ25tZW50KE5vbmUpCi0gICAgLCBwYXJlbnRBbGlnbm1lbnQoTm9uZSkKLSAgICAsIHJl
Y3Qobm9kZVJlY3RJbkFic29sdXRlQ29vcmRpbmF0ZXMobiwgdHJ1ZSAvKiBpZ25vcmUgYm9yZGVy
ICovKSkKLSAgICAsIGlzT2Zmc2NyZWVuKGhhc09mZnNjcmVlblJlY3QobikpCi0gICAgLCBpc09m
ZnNjcmVlbkFmdGVyU2Nyb2xsaW5nKGhhc09mZnNjcmVlblJlY3QobiwgZGlyZWN0aW9uKSkKLXsK
LX0KLQotRm9jdXNDYW5kaWRhdGU6OkZvY3VzQ2FuZGlkYXRlKEhUTUxBcmVhRWxlbWVudCogYXJl
YSwgRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uKQogICAgIDogdmlzaWJsZU5vZGUoMCkKICAgICAs
IGZvY3VzYWJsZU5vZGUoMCkKICAgICAsIGVuY2xvc2luZ1Njcm9sbGFibGVCb3goMCkKQEAgLTc5
LDE1ICs2NiwyNiBAQCBGb2N1c0NhbmRpZGF0ZTo6Rm9jdXNDYW5kaWRhdGUoSFRNTEFyZWFFbGVt
ZW50KiBhcmVhLCBGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24pCiAgICAgLCBpc09mZnNjcmVlbih0
cnVlKQogICAgICwgaXNPZmZzY3JlZW5BZnRlclNjcm9sbGluZyh0cnVlKQogewotICAgIEhUTUxJ
bWFnZUVsZW1lbnQqIGltYWdlID0gYXJlYS0+aW1hZ2VFbGVtZW50KCk7Ci0gICAgaWYgKCFpbWFn
ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZm9jdXNhYmxlTm9kZSA9IGFyZWE7Ci0gICAgdmlz
aWJsZU5vZGUgPSBpbWFnZTsKLSAgICByZWN0ID0gdmlydHVhbFJlY3RGb3JBcmVhRWxlbWVudEFu
ZERpcmVjdGlvbihkaXJlY3Rpb24sIGFyZWEpOwotICAgIGlzT2Zmc2NyZWVuID0gaGFzT2Zmc2Ny
ZWVuUmVjdChpbWFnZSk7Ci0gICAgaXNPZmZzY3JlZW5BZnRlclNjcm9sbGluZyA9IGhhc09mZnNj
cmVlblJlY3QoaW1hZ2UsIGRpcmVjdGlvbik7CisgICAgaWYgKG4tPmhhc1RhZ05hbWUoSFRNTE5h
bWVzOjphcmVhVGFnKSkgeworICAgICAgICBIVE1MQXJlYUVsZW1lbnQqIGFyZWEgPSBzdGF0aWNf
Y2FzdDxIVE1MQXJlYUVsZW1lbnQqPihuKTsKKyAgICAgICAgSFRNTEltYWdlRWxlbWVudCogaW1h
Z2UgPSBhcmVhLT5pbWFnZUVsZW1lbnQoKTsKKyAgICAgICAgaWYgKCFpbWFnZSkKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICBmb2N1c2FibGVOb2RlID0gYXJlYTsKKyAgICAgICAgdmlz
aWJsZU5vZGUgPSBpbWFnZTsKKyAgICAgICAgcmVjdCA9IHZpcnR1YWxSZWN0Rm9yQXJlYUVsZW1l
bnRBbmREaXJlY3Rpb24oZGlyZWN0aW9uLCBhcmVhKTsKKyAgICAgICAgaXNPZmZzY3JlZW4gPSBo
YXNPZmZzY3JlZW5SZWN0KGltYWdlKTsKKyAgICAgICAgaXNPZmZzY3JlZW5BZnRlclNjcm9sbGlu
ZyA9IGhhc09mZnNjcmVlblJlY3QoaW1hZ2UsIGRpcmVjdGlvbik7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgaWYgKCFuLT5yZW5kZXJlcigpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IHZpc2libGVOb2RlID0gZm9jdXNhYmxlTm9kZSA9IG47CisgICAgICAgIHJlY3QgPSBub2RlUmVj
dEluQWJzb2x1dGVDb29yZGluYXRlcyhuLCB0cnVlIC8qIGlnbm9yZSBib3JkZXIgKi8pOworICAg
ICAgICBpc09mZnNjcmVlbiA9IGhhc09mZnNjcmVlblJlY3Qobik7CisgICAgICAgIGlzT2Zmc2Ny
ZWVuQWZ0ZXJTY3JvbGxpbmcgPSBoYXNPZmZzY3JlZW5SZWN0KG4sIGRpcmVjdGlvbik7CisgICAg
fQogfQogCiBib29sIGlzU3BhdGlhbE5hdmlnYXRpb25FbmFibGVkKGNvbnN0IEZyYW1lKiBmcmFt
ZSkKLS0gCjEuNy4xCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76168</attachid>
            <date>2010-12-09 23:44:50 -0800</date>
            <delta_ts>2010-12-12 06:13:37 -0800</delta_ts>
            <desc>patch 2 - v1</desc>
            <filename>0001-2010-12-09-Antonio-Gomes-agomes-rim.com.patch</filename>
            <type>text/plain</type>
            <size>7663</size>
            <attacher name="Antonio Gomes">tonikitoo</attacher>
            
              <data encoding="base64">RnJvbSAwN2M0MjI3NWI3NWNiMGY1YTQ3MTYzMzQ2NTE4MmE0NjdhZmU5YzkxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmlvIEdvbWVzIDxhZ29tZXNAcmltLmNvbT4KRGF0ZTog
RnJpLCAxMCBEZWMgMjAxMCAwMjoxOTozNiAtMDUwMApTdWJqZWN0OiBbUEFUQ0hdIDIwMTAtMTIt
MDkgIEFudG9uaW8gR29tZXMgIDxhZ29tZXNAcmltLmNvbT4KCiAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCgogICAgICAgIFNwYXRpYWwgTmF2aWdhdGlvbjogY29kZSBjbGVhbiB1
cCAocGFydCBJSSkKICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTA2NjYKCiAgICAgICAgU3VtbWFyeToKICAgICAgICAtIFJlbW92ZWQgc3RhdGljIGRlY2xh
cmF0aW9uIG9mIHVwZGF0ZUZvY3VzQ2FuZGlkYXRlSWZOZWVkZWQoKSBmcm9tIHRoZSB0b3Agb2Yg
Rm9jdXNDb250cm9sbGVyLmNwcC4KICAgICAgICBJdCBpcyB1bm5lZWRlZDsKICAgICAgICAtIElu
IEZvY3VzQ2FuZGlkYXRlIGNvbnN0cnVjdG9yLCByZW5hbWVkICduJyB0byAnbm9kZScsIGFuZCBh
ZGRlZCBhbiBhc3NlcnQgdG8gaXQ7CiAgICAgICAgLSBJbiB2aXJ0dWFsUmVjdEZvckFyZWFFbGVt
ZW50QW5kRGlyZWN0aW9uLCBJIGFkZGVkIGFuIGFzc2VydCB0byAnbm9kZScgYXMgd2VsbDsKICAg
ICAgICAtIEluIFNwYXRpYWxOYXZpZ2F0aW9uLmg6CiAgICAgICAgMSkgSSByZW9yZGVyZWQgdGhl
IGRlY2xhcmF0aW9uIG9mIHNvbWUgbWV0aG9kcyBpbiBvcmRlciB0byBncm91cAogICAgICAgICAg
IHJlbGF0ZWQgb25lczsKICAgICAgICAyKSByZW1vdmVkIGlzU2Nyb2xsYWJsZUNvbnRhaW5lck5v
ZGUoKSBmdW5jdGlvbiBkZWNsYXJhdGlvbiBzaW5jZSBpdCBpcyBub3QgdXNlZCBvdXRzaWRlCiAg
ICAgICAgU3BhdGlhbE5hdmlnYXRpb24uY3BwOwogICAgICAgIDMpIGFuZCByZW1vdmVkIHRoZSBk
ZWNsYXJhdGlvbiBvZiBpc05vZGVEZWVwRGVzY2VuZGFudE9mRG9jdW1lbnQoKSBzaW5jZSBpdCBk
b2VzIG5vdCBleGlzdCBhbnltb3JlLgoKICAgICAgICBObyBuZXcgdGVzdHMgbmVlZGVkLgoKICAg
ICAgICAqIHBhZ2UvRm9jdXNDb250cm9sbGVyLmNwcDoKICAgICAgICAqIHBhZ2UvU3BhdGlhbE5h
dmlnYXRpb24uY3BwOgogICAgICAgIChXZWJDb3JlOjpGb2N1c0NhbmRpZGF0ZTo6Rm9jdXNDYW5k
aWRhdGUpOgogICAgICAgIChXZWJDb3JlOjp2aXJ0dWFsUmVjdEZvckFyZWFFbGVtZW50QW5kRGly
ZWN0aW9uKToKICAgICAgICAqIHBhZ2UvU3BhdGlhbE5hdmlnYXRpb24uaDoKLS0tCiBXZWJDb3Jl
L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgIHwgICAyNyArKysrKysrKysrKysrKysrKysrKysr
KysrKysKIFdlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwICAgfCAgICAxIC0KIFdlYkNv
cmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHAgfCAgIDE2ICsrKysrKysrKy0tLS0tLS0KIFdl
YkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5oICAgfCAgIDEwICsrKystLS0tLS0KIDQgZmls
ZXMgY2hhbmdlZCwgNDAgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxOTQ4OWE4Li4y
NDhmNTRjIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEwLTEyLTA5ICBBbnRvbmlvIEdvbWVzICA8YWdvbWVz
QHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgU3BhdGlhbCBOYXZpZ2F0aW9uOiBjb2RlIGNsZWFuIHVwIChwYXJ0IElJKQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTA2NjYKKworICAgICAgICBT
dW1tYXJ5OgorICAgICAgICAtIFJlbW92ZWQgc3RhdGljIGRlY2xhcmF0aW9uIG9mIHVwZGF0ZUZv
Y3VzQ2FuZGlkYXRlSWZOZWVkZWQoKSBmcm9tIHRoZSB0b3Agb2YgRm9jdXNDb250cm9sbGVyLmNw
cC4KKyAgICAgICAgSXQgaXMgdW5uZWVkZWQ7CisgICAgICAgIC0gSW4gRm9jdXNDYW5kaWRhdGUg
Y29uc3RydWN0b3IsIHJlbmFtZWQgJ24nIHRvICdub2RlJywgYW5kIGFkZGVkIGFuIGFzc2VydCB0
byBpdDsKKyAgICAgICAgLSBJbiB2aXJ0dWFsUmVjdEZvckFyZWFFbGVtZW50QW5kRGlyZWN0aW9u
LCBJIGFkZGVkIGFuIGFzc2VydCB0byAnbm9kZScgYXMgd2VsbDsKKyAgICAgICAgLSBJbiBTcGF0
aWFsTmF2aWdhdGlvbi5oOgorICAgICAgICAxKSBJIHJlb3JkZXJlZCB0aGUgZGVjbGFyYXRpb24g
b2Ygc29tZSBtZXRob2RzIGluIG9yZGVyIHRvIGdyb3VwCisgICAgICAgICAgIHJlbGF0ZWQgb25l
czsKKyAgICAgICAgMikgcmVtb3ZlZCBpc1Njcm9sbGFibGVDb250YWluZXJOb2RlKCkgZnVuY3Rp
b24gZGVjbGFyYXRpb24gc2luY2UgaXQgaXMgbm90IHVzZWQgb3V0c2lkZQorICAgICAgICBTcGF0
aWFsTmF2aWdhdGlvbi5jcHA7CisgICAgICAgIDMpIGFuZCByZW1vdmVkIHRoZSBkZWNsYXJhdGlv
biBvZiBpc05vZGVEZWVwRGVzY2VuZGFudE9mRG9jdW1lbnQoKSBzaW5jZSBpdCBkb2VzIG5vdCBl
eGlzdCBhbnltb3JlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBuZWVkZWQuCisKKyAgICAgICAg
KiBwYWdlL0ZvY3VzQ29udHJvbGxlci5jcHA6CisgICAgICAgICogcGFnZS9TcGF0aWFsTmF2aWdh
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb2N1c0NhbmRpZGF0ZTo6Rm9jdXNDYW5kaWRh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6dmlydHVhbFJlY3RGb3JBcmVhRWxlbWVudEFuZERpcmVj
dGlvbik6CisgICAgICAgICogcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5oOgorCiAyMDEwLTEyLTA5
ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkLCByb2xsaW5nIG91dCByNzM2ODQuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2Uv
Rm9jdXNDb250cm9sbGVyLmNwcCBiL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCmlu
ZGV4IGMwZDI1ODcuLmJhNjE1YzAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRy
b2xsZXIuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCkBAIC02MSw3
ICs2MSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7
CiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCi1zdGF0aWMgdm9pZCB1cGRhdGVGb2N1c0NhbmRpZGF0
ZUlmTmVlZGVkKEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgY29uc3QgSW50UmVjdCYgc3RhcnRp
bmdSZWN0LCBGb2N1c0NhbmRpZGF0ZSYgY2FuZGlkYXRlLCBGb2N1c0NhbmRpZGF0ZSYgY2xvc2Vz
dCk7CiBzdGF0aWMgaW5saW5lIHZvaWQgZGlzcGF0Y2hFdmVudHNPbldpbmRvd0FuZEZvY3VzZWRO
b2RlKERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCBmb2N1c2VkKQogewogICAgIC8vIElmIHdlIGhh
dmUgYSBmb2N1c2VkIG5vZGUgd2Ugc2hvdWxkIGRpc3BhdGNoIGJsdXIgb24gaXQgYmVmb3JlIHdl
IGJsdXIgdGhlIHdpbmRvdy4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdh
dGlvbi5jcHAgYi9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwCmluZGV4IGY2YmEw
MDkuLjI5MjdlMWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5j
cHAKKysrIGIvV2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmNwcApAQCAtNTUsNyArNTUs
NyBAQCBzdGF0aWMgSW50UmVjdCByZWN0VG9BYnNvbHV0ZUNvb3JkaW5hdGVzKEZyYW1lKiBpbml0
aWFsRnJhbWUsIGNvbnN0IEludFJlY3QmIHJlYwogc3RhdGljIHZvaWQgZW50cnlBbmRFeGl0UG9p
bnRzRm9yRGlyZWN0aW9uKEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgY29uc3QgSW50UmVjdCYg
c3RhcnRpbmdSZWN0LCBjb25zdCBJbnRSZWN0JiBwb3RlbnRpYWxSZWN0LCBJbnRQb2ludCYgZXhp
dFBvaW50LCBJbnRQb2ludCYgZW50cnlQb2ludCk7CiAKIAotRm9jdXNDYW5kaWRhdGU6OkZvY3Vz
Q2FuZGlkYXRlKE5vZGUqIG4sIEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbikKK0ZvY3VzQ2FuZGlk
YXRlOjpGb2N1c0NhbmRpZGF0ZShOb2RlKiBub2RlLCBGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24p
CiAgICAgOiB2aXNpYmxlTm9kZSgwKQogICAgICwgZm9jdXNhYmxlTm9kZSgwKQogICAgICwgZW5j
bG9zaW5nU2Nyb2xsYWJsZUJveCgwKQpAQCAtNjYsOCArNjYsOSBAQCBGb2N1c0NhbmRpZGF0ZTo6
Rm9jdXNDYW5kaWRhdGUoTm9kZSogbiwgRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uKQogICAgICwg
aXNPZmZzY3JlZW4odHJ1ZSkKICAgICAsIGlzT2Zmc2NyZWVuQWZ0ZXJTY3JvbGxpbmcodHJ1ZSkK
IHsKLSAgICBpZiAobi0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmFyZWFUYWcpKSB7Ci0gICAgICAg
IEhUTUxBcmVhRWxlbWVudCogYXJlYSA9IHN0YXRpY19jYXN0PEhUTUxBcmVhRWxlbWVudCo+KG4p
OworICAgIEFTU0VSVChub2RlKTsKKyAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6
OmFyZWFUYWcpKSB7CisgICAgICAgIEhUTUxBcmVhRWxlbWVudCogYXJlYSA9IHN0YXRpY19jYXN0
PEhUTUxBcmVhRWxlbWVudCo+KG5vZGUpOwogICAgICAgICBIVE1MSW1hZ2VFbGVtZW50KiBpbWFn
ZSA9IGFyZWEtPmltYWdlRWxlbWVudCgpOwogICAgICAgICBpZiAoIWltYWdlIHx8ICFpbWFnZS0+
cmVuZGVyZXIoKSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTc1LDE0ICs3NiwxNCBAQCBGb2N1
c0NhbmRpZGF0ZTo6Rm9jdXNDYW5kaWRhdGUoTm9kZSogbiwgRm9jdXNEaXJlY3Rpb24gZGlyZWN0
aW9uKQogICAgICAgICB2aXNpYmxlTm9kZSA9IGltYWdlOwogICAgICAgICByZWN0ID0gdmlydHVh
bFJlY3RGb3JBcmVhRWxlbWVudEFuZERpcmVjdGlvbihkaXJlY3Rpb24sIGFyZWEpOwogICAgIH0g
ZWxzZSB7Ci0gICAgICAgIGlmICghbi0+cmVuZGVyZXIoKSkKKyAgICAgICAgaWYgKCFub2RlLT5y
ZW5kZXJlcigpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHZpc2libGVOb2RlID0g
bjsKLSAgICAgICAgcmVjdCA9IG5vZGVSZWN0SW5BYnNvbHV0ZUNvb3JkaW5hdGVzKG4sIHRydWUg
LyogaWdub3JlIGJvcmRlciAqLyk7CisgICAgICAgIHZpc2libGVOb2RlID0gbm9kZTsKKyAgICAg
ICAgcmVjdCA9IG5vZGVSZWN0SW5BYnNvbHV0ZUNvb3JkaW5hdGVzKG5vZGUsIHRydWUgLyogaWdu
b3JlIGJvcmRlciAqLyk7CiAgICAgfQogCi0gICAgZm9jdXNhYmxlTm9kZSA9IG47CisgICAgZm9j
dXNhYmxlTm9kZSA9IG5vZGU7CiAgICAgaXNPZmZzY3JlZW4gPSBoYXNPZmZzY3JlZW5SZWN0KHZp
c2libGVOb2RlKTsKICAgICBpc09mZnNjcmVlbkFmdGVyU2Nyb2xsaW5nID0gaGFzT2Zmc2NyZWVu
UmVjdCh2aXNpYmxlTm9kZSwgZGlyZWN0aW9uKTsKIH0KQEAgLTY5Myw2ICs2OTQsNyBAQCBJbnRS
ZWN0IHZpcnR1YWxSZWN0Rm9yRGlyZWN0aW9uKEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgY29u
c3QgSW50UmVjdCYgc3RhcnRpbgogCiBJbnRSZWN0IHZpcnR1YWxSZWN0Rm9yQXJlYUVsZW1lbnRB
bmREaXJlY3Rpb24oRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBIVE1MQXJlYUVsZW1lbnQqIGFy
ZWEpCiB7CisgICAgQVNTRVJUKGFyZWEpOwogICAgIC8vIEFyZWEgZWxlbWVudHMgdGVuZCB0byBv
dmVybGFwIG1vcmUgdGhhbiBvdGhlciBmb2N1c2FibGUgZWxlbWVudHMuIFdlIGZsYXR0ZW4gdGhl
IHJlY3Qgb2YgdGhlIGFyZWEgZWxlbWVudHMKICAgICAvLyB0byBtaW5pbWl6ZSB0aGUgZWZmZWN0
IG9mIG92ZXJsYXBwaW5nIGFyZWFzLgogICAgIEludFJlY3QgcmVjdCA9IHZpcnR1YWxSZWN0Rm9y
RGlyZWN0aW9uKGRpcmVjdGlvbiwgcmVjdFRvQWJzb2x1dGVDb29yZGluYXRlcyhhcmVhLT5kb2N1
bWVudCgpLT5mcmFtZSgpLCBhcmVhLT5nZXRSZWN0KGFyZWEtPmltYWdlRWxlbWVudCgpLT5yZW5k
ZXJlcigpKSksIDEpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9u
LmggYi9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uaAppbmRleCBjOTExMzc2Li5hNGFj
MmMyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uaAorKysgYi9X
ZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uaApAQCAtMTMzLDE4ICsxMzMsMTYgQEAgc3Ry
dWN0IEZvY3VzQ2FuZGlkYXRlIHsKICAgICBib29sIGlzT2Zmc2NyZWVuQWZ0ZXJTY3JvbGxpbmc7
CiB9OwogCitib29sIGhhc09mZnNjcmVlblJlY3QoTm9kZSosIEZvY3VzRGlyZWN0aW9uIGRpcmVj
dGlvbiA9IEZvY3VzRGlyZWN0aW9uTm9uZSk7CiBib29sIHNjcm9sbEluRGlyZWN0aW9uKEZyYW1l
KiwgRm9jdXNEaXJlY3Rpb24pOwogYm9vbCBzY3JvbGxJbkRpcmVjdGlvbihOb2RlKiBjb250YWlu
ZXIsIEZvY3VzRGlyZWN0aW9uKTsKLWJvb2wgaGFzT2Zmc2NyZWVuUmVjdChOb2RlKiwgRm9jdXNE
aXJlY3Rpb24gZGlyZWN0aW9uID0gRm9jdXNEaXJlY3Rpb25Ob25lKTsKLWJvb2wgaXNTY3JvbGxh
YmxlQ29udGFpbmVyTm9kZShjb25zdCBOb2RlKik7Ci1ib29sIGlzTm9kZURlZXBEZXNjZW5kYW50
T2ZEb2N1bWVudChOb2RlKiwgRG9jdW1lbnQqKTsKLU5vZGUqIHNjcm9sbGFibGVFbmNsb3NpbmdC
b3hPclBhcmVudEZyYW1lRm9yTm9kZUluRGlyZWN0aW9uKEZvY3VzRGlyZWN0aW9uLCBOb2RlKiBu
b2RlKTsKIGJvb2wgY2FuU2Nyb2xsSW5EaXJlY3Rpb24oRm9jdXNEaXJlY3Rpb24sIGNvbnN0IE5v
ZGUqIGNvbnRhaW5lcik7CiBib29sIGNhblNjcm9sbEluRGlyZWN0aW9uKEZvY3VzRGlyZWN0aW9u
LCBjb25zdCBGcmFtZSopOworYm9vbCBjYW5CZVNjcm9sbGVkSW50b1ZpZXcoRm9jdXNEaXJlY3Rp
b24sIGNvbnN0IEZvY3VzQ2FuZGlkYXRlJik7Cit2b2lkIGRpc3RhbmNlRGF0YUZvck5vZGUoRm9j
dXNEaXJlY3Rpb24sIEZvY3VzQ2FuZGlkYXRlJiBjdXJyZW50LCBGb2N1c0NhbmRpZGF0ZSYgY2Fu
ZGlkYXRlKTsKK05vZGUqIHNjcm9sbGFibGVFbmNsb3NpbmdCb3hPclBhcmVudEZyYW1lRm9yTm9k
ZUluRGlyZWN0aW9uKEZvY3VzRGlyZWN0aW9uLCBOb2RlKiBub2RlKTsKIEludFJlY3Qgbm9kZVJl
Y3RJbkFic29sdXRlQ29vcmRpbmF0ZXMoTm9kZSosIGJvb2wgaWdub3JlQm9yZGVyID0gZmFsc2Up
OwogSW50UmVjdCBmcmFtZVJlY3RJbkFic29sdXRlQ29vcmRpbmF0ZXMoRnJhbWUqKTsKLXZvaWQg
ZGlzdGFuY2VEYXRhRm9yTm9kZShGb2N1c0RpcmVjdGlvbiwgRm9jdXNDYW5kaWRhdGUmIGN1cnJl
bnQsIEZvY3VzQ2FuZGlkYXRlJiBjYW5kaWRhdGUpOwotYm9vbCBjYW5CZVNjcm9sbGVkSW50b1Zp
ZXcoRm9jdXNEaXJlY3Rpb24sIGNvbnN0IEZvY3VzQ2FuZGlkYXRlJik7CiBJbnRSZWN0IHZpcnR1
YWxSZWN0Rm9yRGlyZWN0aW9uKEZvY3VzRGlyZWN0aW9uLCBjb25zdCBJbnRSZWN0JiBzdGFydGlu
Z1JlY3QsIGludCB3aWR0aCA9IDApOwogSW50UmVjdCB2aXJ0dWFsUmVjdEZvckFyZWFFbGVtZW50
QW5kRGlyZWN0aW9uKEZvY3VzRGlyZWN0aW9uLCBIVE1MQXJlYUVsZW1lbnQqKTsKIH0gLy8gbmFt
c3BhY2UgV2ViQ29yZQotLSAKMS43LjEKCg==
</data>
<flag name="review"
          id="67065"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76324</attachid>
            <date>2010-12-12 06:13:37 -0800</date>
            <delta_ts>2010-12-12 21:53:13 -0800</delta_ts>
            <desc>patch 2 - v2 (committed with r73885, r=dbates)</desc>
            <filename>0001-2010-12-09-Antonio-Gomes-agomes-rim.com.patch</filename>
            <type>text/plain</type>
            <size>8288</size>
            <attacher name="Antonio Gomes">tonikitoo</attacher>
            
              <data encoding="base64">RnJvbSAxYjE5NmRlNTgyMjgyYjkxOGQ5MDRiMzVlMTBkNDJjMjM0MmE3YTIzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmlvIEdvbWVzIDxhZ29tZXNAcmltLmNvbT4KRGF0ZTog
RnJpLCAxMCBEZWMgMjAxMCAwMjoxOTozNiAtMDUwMApTdWJqZWN0OiBbUEFUQ0hdIDIwMTAtMTIt
MDkgQW50b25pbyBHb21lcyA8YWdvbWVzQHJpbS5jb20+CgogICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgoKICAgICAgICBTcGF0aWFsIE5hdmlnYXRpb246IGNvZGUgY2xlYW4gdXAg
KHBhcnQgSUkpCiAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTUwNjY2CgogICAgICAgIFN1bW1hcnk6CiAgICAgICAgLSBJbiBGb2N1c0NhbmRpZGF0ZSBjb25z
dHJ1Y3RvciwgcmVuYW1lZCAnbicgdG8gJ25vZGUnLCBhbmQgYWRkZWQgYW4gYXNzZXJ0IHRvIGl0
OwogICAgICAgIC0gSW4gdmlydHVhbFJlY3RGb3JBcmVhRWxlbWVudEFuZERpcmVjdGlvbiwgSSBh
ZGRlZCBhbiBhc3NlcnQgdG8gJ25vZGUnIGFzIHdlbGw7CiAgICAgICAgLSBJbiBTcGF0aWFsTmF2
aWdhdGlvbi5oOgogICAgICAgICAgMSkgSSByZW9yZGVyZWQgdGhlIGRlY2xhcmF0aW9uIG9mIHNv
bWUgbWV0aG9kcyBpbiBvcmRlciB0byBncm91cAogICAgICAgICAgICAgcmVsYXRlZCBvbmVzOwog
ICAgICAgICAgMikgcmVtb3ZlZCBpc1Njcm9sbGFibGVDb250YWluZXJOb2RlKCkgZnVuY3Rpb24g
ZGVjbGFyYXRpb24gc2luY2UgaXQgaXMgbm90IHVzZWQgb3V0c2lkZQogICAgICAgICAgICAgU3Bh
dGlhbE5hdmlnYXRpb24uY3BwOwogICAgICAgICAgMykgQW5kIHJlbW92ZWQgdGhlIGRlY2xhcmF0
aW9uIG9mIGlzTm9kZURlZXBEZXNjZW5kYW50T2ZEb2N1bWVudCgpIHNpbmNlIGl0IGRvZXMgbm90
IGV4aXN0IGFueW1vcmUuCgogICAgICAgIE5vIG5ldyB0ZXN0cyBuZWVkZWQuCgogICAgICAgICog
cGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwOgogICAgICAgICogcGFnZS9TcGF0aWFsTmF2aWdhdGlv
bi5jcHA6CiAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ2FuZGlkYXRlOjpGb2N1c0NhbmRpZGF0ZSk6
CiAgICAgICAgKFdlYkNvcmU6OnZpcnR1YWxSZWN0Rm9yQXJlYUVsZW1lbnRBbmREaXJlY3Rpb24p
OgogICAgICAgICogcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5oOgotLS0KIFdlYkNvcmUvQ2hhbmdl
TG9nICAgICAgICAgICAgICAgICAgfCAgIDI3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKwog
V2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAgICB8ICAgIDMgKy0tCiBXZWJDb3JlL3Bh
Z2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwIHwgICAxOCArKysrKysrKysrLS0tLS0tLS0KIFdlYkNv
cmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5oICAgfCAgIDEwICsrKystLS0tLS0KIDQgZmlsZXMg
Y2hhbmdlZCwgNDIgaW5zZXJ0aW9ucygrKSwgMTYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwZmMyZGI1Li42ZjNm
NDI2IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDMwIEBACisyMDEwLTEyLTA5ICBBbnRvbmlvIEdvbWVzICA8YWdvbWVzQHJp
bS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
U3BhdGlhbCBOYXZpZ2F0aW9uOiBjb2RlIGNsZWFuIHVwIChwYXJ0IElJKQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTA2NjYKKworICAgICAgICBTdW1t
YXJ5OgorICAgICAgICAtIFJlbW92ZWQgc3RhdGljIGRlY2xhcmF0aW9uIG9mIHVwZGF0ZUZvY3Vz
Q2FuZGlkYXRlSWZOZWVkZWQoKSBmcm9tIHRoZSB0b3Agb2YgRm9jdXNDb250cm9sbGVyLmNwcC4K
KyAgICAgICAgSXQgaXMgdW5uZWVkZWQ7CisgICAgICAgIC0gSW4gRm9jdXNDYW5kaWRhdGUgY29u
c3RydWN0b3IsIHJlbmFtZWQgJ24nIHRvICdub2RlJywgYW5kIGFkZGVkIGFuIGFzc2VydCB0byBp
dDsKKyAgICAgICAgLSBJbiB2aXJ0dWFsUmVjdEZvckFyZWFFbGVtZW50QW5kRGlyZWN0aW9uLCBJ
IGFkZGVkIGFuIGFzc2VydCB0byAnbm9kZScgYXMgd2VsbDsKKyAgICAgICAgLSBJbiBTcGF0aWFs
TmF2aWdhdGlvbi5oOgorICAgICAgICAxKSBJIHJlb3JkZXJlZCB0aGUgZGVjbGFyYXRpb24gb2Yg
c29tZSBtZXRob2RzIGluIG9yZGVyIHRvIGdyb3VwCisgICAgICAgICAgIHJlbGF0ZWQgb25lczsK
KyAgICAgICAgMikgcmVtb3ZlZCBpc1Njcm9sbGFibGVDb250YWluZXJOb2RlKCkgZnVuY3Rpb24g
ZGVjbGFyYXRpb24gc2luY2UgaXQgaXMgbm90IHVzZWQgb3V0c2lkZQorICAgICAgICBTcGF0aWFs
TmF2aWdhdGlvbi5jcHA7CisgICAgICAgIDMpIGFuZCByZW1vdmVkIHRoZSBkZWNsYXJhdGlvbiBv
ZiBpc05vZGVEZWVwRGVzY2VuZGFudE9mRG9jdW1lbnQoKSBzaW5jZSBpdCBkb2VzIG5vdCBleGlz
dCBhbnltb3JlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBuZWVkZWQuCisKKyAgICAgICAgKiBw
YWdlL0ZvY3VzQ29udHJvbGxlci5jcHA6CisgICAgICAgICogcGFnZS9TcGF0aWFsTmF2aWdhdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb2N1c0NhbmRpZGF0ZTo6Rm9jdXNDYW5kaWRhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6dmlydHVhbFJlY3RGb3JBcmVhRWxlbWVudEFuZERpcmVjdGlv
bik6CisgICAgICAgICogcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5oOgorCiAyMDEwLTEyLTEwICBW
aW5jZW50IFNjaGVpYiAgPHNjaGVpYkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgSmFtZXMgUm9iaW5zb24uCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9s
bGVyLmNwcCBiL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCmluZGV4IGMwZDI1ODcu
LjA5NGFjZDYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCisr
KyBiL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCkBAIC02MSw3ICs2MSw2IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiB1c2luZyBuYW1l
c3BhY2Ugc3RkOwogCi1zdGF0aWMgdm9pZCB1cGRhdGVGb2N1c0NhbmRpZGF0ZUlmTmVlZGVkKEZv
Y3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgY29uc3QgSW50UmVjdCYgc3RhcnRpbmdSZWN0LCBGb2N1
c0NhbmRpZGF0ZSYgY2FuZGlkYXRlLCBGb2N1c0NhbmRpZGF0ZSYgY2xvc2VzdCk7CiBzdGF0aWMg
aW5saW5lIHZvaWQgZGlzcGF0Y2hFdmVudHNPbldpbmRvd0FuZEZvY3VzZWROb2RlKERvY3VtZW50
KiBkb2N1bWVudCwgYm9vbCBmb2N1c2VkKQogewogICAgIC8vIElmIHdlIGhhdmUgYSBmb2N1c2Vk
IG5vZGUgd2Ugc2hvdWxkIGRpc3BhdGNoIGJsdXIgb24gaXQgYmVmb3JlIHdlIGJsdXIgdGhlIHdp
bmRvdy4KQEAgLTQxNCw3ICs0MTMsNyBAQCB2b2lkIEZvY3VzQ29udHJvbGxlcjo6c2V0QWN0aXZl
KGJvb2wgYWN0aXZlKQogICAgICAgICBkaXNwYXRjaEV2ZW50c09uV2luZG93QW5kRm9jdXNlZE5v
ZGUobV9mb2N1c2VkRnJhbWUtPmRvY3VtZW50KCksIGFjdGl2ZSk7CiB9CiAKLXZvaWQgdXBkYXRl
Rm9jdXNDYW5kaWRhdGVJZk5lZWRlZChGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24sIGNvbnN0IElu
dFJlY3QmIHN0YXJ0aW5nUmVjdCwgRm9jdXNDYW5kaWRhdGUmIGNhbmRpZGF0ZSwgRm9jdXNDYW5k
aWRhdGUmIGNsb3Nlc3QpCitzdGF0aWMgdm9pZCB1cGRhdGVGb2N1c0NhbmRpZGF0ZUlmTmVlZGVk
KEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgY29uc3QgSW50UmVjdCYgc3RhcnRpbmdSZWN0LCBG
b2N1c0NhbmRpZGF0ZSYgY2FuZGlkYXRlLCBGb2N1c0NhbmRpZGF0ZSYgY2xvc2VzdCkKIHsKICAg
ICBpZiAoIWNhbmRpZGF0ZS52aXNpYmxlTm9kZS0+aXNFbGVtZW50Tm9kZSgpIHx8ICFjYW5kaWRh
dGUudmlzaWJsZU5vZGUtPnJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHAgYi9XZWJDb3JlL3BhZ2UvU3BhdGlh
bE5hdmlnYXRpb24uY3BwCmluZGV4IGY2YmEwMDkuLjc3OTBkYTAgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL1NwYXRpYWxO
YXZpZ2F0aW9uLmNwcApAQCAtNTMsOSArNTMsOSBAQCBzdGF0aWMgYm9vbCBpc1JlY3RJbkRpcmVj
dGlvbihGb2N1c0RpcmVjdGlvbiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFJlY3QmKTsKIHN0
YXRpYyB2b2lkIGRlZmxhdGVJZk92ZXJsYXBwZWQoSW50UmVjdCYsIEludFJlY3QmKTsKIHN0YXRp
YyBJbnRSZWN0IHJlY3RUb0Fic29sdXRlQ29vcmRpbmF0ZXMoRnJhbWUqIGluaXRpYWxGcmFtZSwg
Y29uc3QgSW50UmVjdCYgcmVjdCk7CiBzdGF0aWMgdm9pZCBlbnRyeUFuZEV4aXRQb2ludHNGb3JE
aXJlY3Rpb24oRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBjb25zdCBJbnRSZWN0JiBzdGFydGlu
Z1JlY3QsIGNvbnN0IEludFJlY3QmIHBvdGVudGlhbFJlY3QsIEludFBvaW50JiBleGl0UG9pbnQs
IEludFBvaW50JiBlbnRyeVBvaW50KTsKK3N0YXRpYyBib29sIGlzU2Nyb2xsYWJsZUNvbnRhaW5l
ck5vZGUoY29uc3QgV2ViQ29yZTo6Tm9kZSopOwogCi0KLUZvY3VzQ2FuZGlkYXRlOjpGb2N1c0Nh
bmRpZGF0ZShOb2RlKiBuLCBGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24pCitGb2N1c0NhbmRpZGF0
ZTo6Rm9jdXNDYW5kaWRhdGUoTm9kZSogbm9kZSwgRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uKQog
ICAgIDogdmlzaWJsZU5vZGUoMCkKICAgICAsIGZvY3VzYWJsZU5vZGUoMCkKICAgICAsIGVuY2xv
c2luZ1Njcm9sbGFibGVCb3goMCkKQEAgLTY2LDggKzY2LDkgQEAgRm9jdXNDYW5kaWRhdGU6OkZv
Y3VzQ2FuZGlkYXRlKE5vZGUqIG4sIEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbikKICAgICAsIGlz
T2Zmc2NyZWVuKHRydWUpCiAgICAgLCBpc09mZnNjcmVlbkFmdGVyU2Nyb2xsaW5nKHRydWUpCiB7
Ci0gICAgaWYgKG4tPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjphcmVhVGFnKSkgewotICAgICAgICBI
VE1MQXJlYUVsZW1lbnQqIGFyZWEgPSBzdGF0aWNfY2FzdDxIVE1MQXJlYUVsZW1lbnQqPihuKTsK
KyAgICBBU1NFUlQobm9kZSk7CisgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjph
cmVhVGFnKSkgeworICAgICAgICBIVE1MQXJlYUVsZW1lbnQqIGFyZWEgPSBzdGF0aWNfY2FzdDxI
VE1MQXJlYUVsZW1lbnQqPihub2RlKTsKICAgICAgICAgSFRNTEltYWdlRWxlbWVudCogaW1hZ2Ug
PSBhcmVhLT5pbWFnZUVsZW1lbnQoKTsKICAgICAgICAgaWYgKCFpbWFnZSB8fCAhaW1hZ2UtPnJl
bmRlcmVyKCkpCiAgICAgICAgICAgICByZXR1cm47CkBAIC03NSwxNCArNzYsMTQgQEAgRm9jdXND
YW5kaWRhdGU6OkZvY3VzQ2FuZGlkYXRlKE5vZGUqIG4sIEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlv
bikKICAgICAgICAgdmlzaWJsZU5vZGUgPSBpbWFnZTsKICAgICAgICAgcmVjdCA9IHZpcnR1YWxS
ZWN0Rm9yQXJlYUVsZW1lbnRBbmREaXJlY3Rpb24oZGlyZWN0aW9uLCBhcmVhKTsKICAgICB9IGVs
c2UgewotICAgICAgICBpZiAoIW4tPnJlbmRlcmVyKCkpCisgICAgICAgIGlmICghbm9kZS0+cmVu
ZGVyZXIoKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICB2aXNpYmxlTm9kZSA9IG47
Ci0gICAgICAgIHJlY3QgPSBub2RlUmVjdEluQWJzb2x1dGVDb29yZGluYXRlcyhuLCB0cnVlIC8q
IGlnbm9yZSBib3JkZXIgKi8pOworICAgICAgICB2aXNpYmxlTm9kZSA9IG5vZGU7CisgICAgICAg
IHJlY3QgPSBub2RlUmVjdEluQWJzb2x1dGVDb29yZGluYXRlcyhub2RlLCB0cnVlIC8qIGlnbm9y
ZSBib3JkZXIgKi8pOwogICAgIH0KIAotICAgIGZvY3VzYWJsZU5vZGUgPSBuOworICAgIGZvY3Vz
YWJsZU5vZGUgPSBub2RlOwogICAgIGlzT2Zmc2NyZWVuID0gaGFzT2Zmc2NyZWVuUmVjdCh2aXNp
YmxlTm9kZSk7CiAgICAgaXNPZmZzY3JlZW5BZnRlclNjcm9sbGluZyA9IGhhc09mZnNjcmVlblJl
Y3QodmlzaWJsZU5vZGUsIGRpcmVjdGlvbik7CiB9CkBAIC02OTMsNiArNjk0LDcgQEAgSW50UmVj
dCB2aXJ0dWFsUmVjdEZvckRpcmVjdGlvbihGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24sIGNvbnN0
IEludFJlY3QmIHN0YXJ0aW4KIAogSW50UmVjdCB2aXJ0dWFsUmVjdEZvckFyZWFFbGVtZW50QW5k
RGlyZWN0aW9uKEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgSFRNTEFyZWFFbGVtZW50KiBhcmVh
KQogeworICAgIEFTU0VSVChhcmVhKTsKICAgICAvLyBBcmVhIGVsZW1lbnRzIHRlbmQgdG8gb3Zl
cmxhcCBtb3JlIHRoYW4gb3RoZXIgZm9jdXNhYmxlIGVsZW1lbnRzLiBXZSBmbGF0dGVuIHRoZSBy
ZWN0IG9mIHRoZSBhcmVhIGVsZW1lbnRzCiAgICAgLy8gdG8gbWluaW1pemUgdGhlIGVmZmVjdCBv
ZiBvdmVybGFwcGluZyBhcmVhcy4KICAgICBJbnRSZWN0IHJlY3QgPSB2aXJ0dWFsUmVjdEZvckRp
cmVjdGlvbihkaXJlY3Rpb24sIHJlY3RUb0Fic29sdXRlQ29vcmRpbmF0ZXMoYXJlYS0+ZG9jdW1l
bnQoKS0+ZnJhbWUoKSwgYXJlYS0+Z2V0UmVjdChhcmVhLT5pbWFnZUVsZW1lbnQoKS0+cmVuZGVy
ZXIoKSkpLCAxKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5o
IGIvV2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmgKaW5kZXggYzkxMTM3Ni4uYTRhYzJj
MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmgKKysrIGIvV2Vi
Q29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmgKQEAgLTEzMywxOCArMTMzLDE2IEBAIHN0cnVj
dCBGb2N1c0NhbmRpZGF0ZSB7CiAgICAgYm9vbCBpc09mZnNjcmVlbkFmdGVyU2Nyb2xsaW5nOwog
fTsKIAorYm9vbCBoYXNPZmZzY3JlZW5SZWN0KE5vZGUqLCBGb2N1c0RpcmVjdGlvbiBkaXJlY3Rp
b24gPSBGb2N1c0RpcmVjdGlvbk5vbmUpOwogYm9vbCBzY3JvbGxJbkRpcmVjdGlvbihGcmFtZSos
IEZvY3VzRGlyZWN0aW9uKTsKIGJvb2wgc2Nyb2xsSW5EaXJlY3Rpb24oTm9kZSogY29udGFpbmVy
LCBGb2N1c0RpcmVjdGlvbik7Ci1ib29sIGhhc09mZnNjcmVlblJlY3QoTm9kZSosIEZvY3VzRGly
ZWN0aW9uIGRpcmVjdGlvbiA9IEZvY3VzRGlyZWN0aW9uTm9uZSk7Ci1ib29sIGlzU2Nyb2xsYWJs
ZUNvbnRhaW5lck5vZGUoY29uc3QgTm9kZSopOwotYm9vbCBpc05vZGVEZWVwRGVzY2VuZGFudE9m
RG9jdW1lbnQoTm9kZSosIERvY3VtZW50Kik7Ci1Ob2RlKiBzY3JvbGxhYmxlRW5jbG9zaW5nQm94
T3JQYXJlbnRGcmFtZUZvck5vZGVJbkRpcmVjdGlvbihGb2N1c0RpcmVjdGlvbiwgTm9kZSogbm9k
ZSk7CiBib29sIGNhblNjcm9sbEluRGlyZWN0aW9uKEZvY3VzRGlyZWN0aW9uLCBjb25zdCBOb2Rl
KiBjb250YWluZXIpOwogYm9vbCBjYW5TY3JvbGxJbkRpcmVjdGlvbihGb2N1c0RpcmVjdGlvbiwg
Y29uc3QgRnJhbWUqKTsKK2Jvb2wgY2FuQmVTY3JvbGxlZEludG9WaWV3KEZvY3VzRGlyZWN0aW9u
LCBjb25zdCBGb2N1c0NhbmRpZGF0ZSYpOwordm9pZCBkaXN0YW5jZURhdGFGb3JOb2RlKEZvY3Vz
RGlyZWN0aW9uLCBGb2N1c0NhbmRpZGF0ZSYgY3VycmVudCwgRm9jdXNDYW5kaWRhdGUmIGNhbmRp
ZGF0ZSk7CitOb2RlKiBzY3JvbGxhYmxlRW5jbG9zaW5nQm94T3JQYXJlbnRGcmFtZUZvck5vZGVJ
bkRpcmVjdGlvbihGb2N1c0RpcmVjdGlvbiwgTm9kZSogbm9kZSk7CiBJbnRSZWN0IG5vZGVSZWN0
SW5BYnNvbHV0ZUNvb3JkaW5hdGVzKE5vZGUqLCBib29sIGlnbm9yZUJvcmRlciA9IGZhbHNlKTsK
IEludFJlY3QgZnJhbWVSZWN0SW5BYnNvbHV0ZUNvb3JkaW5hdGVzKEZyYW1lKik7Ci12b2lkIGRp
c3RhbmNlRGF0YUZvck5vZGUoRm9jdXNEaXJlY3Rpb24sIEZvY3VzQ2FuZGlkYXRlJiBjdXJyZW50
LCBGb2N1c0NhbmRpZGF0ZSYgY2FuZGlkYXRlKTsKLWJvb2wgY2FuQmVTY3JvbGxlZEludG9WaWV3
KEZvY3VzRGlyZWN0aW9uLCBjb25zdCBGb2N1c0NhbmRpZGF0ZSYpOwogSW50UmVjdCB2aXJ0dWFs
UmVjdEZvckRpcmVjdGlvbihGb2N1c0RpcmVjdGlvbiwgY29uc3QgSW50UmVjdCYgc3RhcnRpbmdS
ZWN0LCBpbnQgd2lkdGggPSAwKTsKIEludFJlY3QgdmlydHVhbFJlY3RGb3JBcmVhRWxlbWVudEFu
ZERpcmVjdGlvbihGb2N1c0RpcmVjdGlvbiwgSFRNTEFyZWFFbGVtZW50Kik7CiB9IC8vIG5hbXNw
YWNlIFdlYkNvcmUKLS0gCjEuNy4zCgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76498</attachid>
            <date>2010-12-13 22:12:31 -0800</date>
            <delta_ts>2010-12-13 22:53:30 -0800</delta_ts>
            <desc>patch 3 - v1 (committed r74003, r=dbates)</desc>
            <filename>0001-2010-12-13-Antonio-Gomes-agomes-rim.com.patch</filename>
            <type>text/plain</type>
            <size>6215</size>
            <attacher name="Antonio Gomes">tonikitoo</attacher>
            
              <data encoding="base64">RnJvbSA5NzU4ZGM5MDFlNzUzOGRkOTQxZGZmNWE5MDRlMGI4ODE5ZDVjYjc2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmlvIEdvbWVzIDxhZ29tZXNAcmltLmNvbT4KRGF0ZTog
VHVlLCAxNCBEZWMgMjAxMCAwMDo0MTozOSAtMDUwMApTdWJqZWN0OiBbUEFUQ0ggMS8yXSAyMDEw
LTEyLTEzICBBbnRvbmlvIEdvbWVzICA8YWdvbWVzQHJpbS5jb20+CgogICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgoKICAgICAgICBTcGF0aWFsIE5hdmlnYXRpb246IGNvZGUgY2xl
YW4gdXAgKHBhcnQgSUlJKQogICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01MDY2NgoKICAgICAgICBObyBuZXcgdGVzdHMgbmVlZGVkLgoKICAgICAgICAqIHBh
Z2UvU3BhdGlhbE5hdmlnYXRpb24uaDogQWRkZWQgRm9jdXNDYW5kaWRhdGU6OmlzRnJhbWVPd25l
ckVsZW1lbnQgYW5kIFdlYkNvcmU6OnRvRnJhbWVPd25lckVsZW1lbnQgaGVscGVyIGZ1bmN0aW9u
cy4KICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDYW5kaWRhdGU6OmlzRnJhbWVPd25lckVsZW1lbnQp
OiBDaGVja3MgaXMgdGhlIE5vZGUgcG9pbnRlciB3cmFwcGVkIGJ5IEZvY3VzQ2FuZGlkYXRlIGlz
IGEgaW5zdGVhZCBvZiBIVE1MRnJhbWVPd25lckVsZW1lbnQuCiAgICAgICAgKiBwYWdlL1NwYXRp
YWxOYXZpZ2F0aW9uLmNwcDoKICAgICAgICAoV2ViQ29yZTo6dG9GcmFtZU93bmVyRWxlbWVudCk6
IFN0YXRpYyBjYXN0cyB0aGUgRm9jdXNDYW5kaWRhdGUgZ2l2ZW4gYXMgcGFyYW1ldGVyIHRvIEhU
TUxGcmFtZU93bmVyRWxlbWVudCBpZiBhcHByb3ByaWF0ZWQuCiAgICAgICAgKiBwYWdlL0ZvY3Vz
Q29udHJvbGxlci5jcHA6CiAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZUZvY3VzQ2FuZGlkYXRlSWZO
ZWVkZWQpOiBNYWtlIHVzZSBvZiBuZXdseSBhZGRlZCB0b0ZyYW1lT3duZXJFbGVtZW50KCkgaGVs
cGVyLgogICAgICAgIChXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6OmFkdmFuY2VGb2N1c0RpcmVj
dGlvbmFsbHlJbkNvbnRhaW5lcik6IERpdHRvLgotLS0KIFdlYkNvcmUvQ2hhbmdlTG9nICAgICAg
ICAgICAgICAgICAgfCAgIDE3ICsrKysrKysrKysrKysrKysrCiBXZWJDb3JlL3BhZ2UvRm9jdXND
b250cm9sbGVyLmNwcCAgIHwgICAgNyArKystLS0tCiBXZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmln
YXRpb24uY3BwIHwgICAgNSArKysrLQogV2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmgg
ICB8ICAgIDQgKysrKwogNCBmaWxlcyBjaGFuZ2VkLCAyOCBpbnNlcnRpb25zKCspLCA1IGRlbGV0
aW9ucygtKQoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggMWQ2YWY0Mi4uNDgxZDU1YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMC0xMi0xMyAgQW50
b25pbyBHb21lcyAgPGFnb21lc0ByaW0uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFNwYXRpYWwgTmF2aWdhdGlvbjogY29kZSBjbGVhbiB1cCAo
cGFydCBJSUkpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD01MDY2NgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBuZWVkZWQuCisKKyAgICAgICAgKiBwYWdl
L1NwYXRpYWxOYXZpZ2F0aW9uLmg6IEFkZGVkIEZvY3VzQ2FuZGlkYXRlOjppc0ZyYW1lT3duZXJF
bGVtZW50IGFuZCBXZWJDb3JlOjp0b0ZyYW1lT3duZXJFbGVtZW50IGhlbHBlciBmdW5jdGlvbnMu
CisgICAgICAgIChXZWJDb3JlOjpGb2N1c0NhbmRpZGF0ZTo6aXNGcmFtZU93bmVyRWxlbWVudCk6
IENoZWNrcyBpcyB0aGUgTm9kZSBwb2ludGVyIHdyYXBwZWQgYnkgRm9jdXNDYW5kaWRhdGUgaXMg
YSBpbnN0ZWFkIG9mIEhUTUxGcmFtZU93bmVyRWxlbWVudC4KKyAgICAgICAgKiBwYWdlL1NwYXRp
YWxOYXZpZ2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvRnJhbWVPd25lckVsZW1lbnQp
OiBTdGF0aWMgY2FzdHMgdGhlIEZvY3VzQ2FuZGlkYXRlIGdpdmVuIGFzIHBhcmFtZXRlciB0byBI
VE1MRnJhbWVPd25lckVsZW1lbnQgaWYgYXBwcm9wcmlhdGVkLgorICAgICAgICAqIHBhZ2UvRm9j
dXNDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZUZvY3VzQ2FuZGlkYXRl
SWZOZWVkZWQpOiBNYWtlIHVzZSBvZiBuZXdseSBhZGRlZCB0b0ZyYW1lT3duZXJFbGVtZW50KCkg
aGVscGVyLgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyOjphZHZhbmNlRm9jdXNE
aXJlY3Rpb25hbGx5SW5Db250YWluZXIpOiBEaXR0by4KKwogMjAxMC0xMi0wOSAgQW50b25pbyBH
b21lcyAgPGFnb21lc0ByaW0uY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhbmllbCBCYXRl
cy4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwIGIvV2ViQ29y
ZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKaW5kZXggMDk0YWNkNi4uNTE3N2ExYiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKKysrIGIvV2ViQ29yZS9wYWdl
L0ZvY3VzQ29udHJvbGxlci5jcHAKQEAgLTQxLDcgKzQxLDYgQEAKICNpbmNsdWRlICJGcmFtZVRy
ZWUuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJIVE1MQXJlYUVsZW1lbnQu
aCIKLSNpbmNsdWRlICJIVE1MRnJhbWVPd25lckVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSW1h
Z2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJl
c3VsdC5oIgpAQCAtNDE5LDcgKzQxOCw3IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZUZvY3VzQ2FuZGlk
YXRlSWZOZWVkZWQoRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBjb25zdCBJbnRSZWN0CiAgICAg
ICAgIHJldHVybjsKIAogICAgIC8vIElnbm9yZSBpZnJhbWVzIHRoYXQgZG9uJ3QgaGF2ZSBhIHNy
YyBhdHRyaWJ1dGUKLSAgICBpZiAoY2FuZGlkYXRlLnZpc2libGVOb2RlLT5pc0ZyYW1lT3duZXJF
bGVtZW50KCkgJiYgKCFzdGF0aWNfY2FzdDxIVE1MRnJhbWVPd25lckVsZW1lbnQqPihjYW5kaWRh
dGUudmlzaWJsZU5vZGUpLT5jb250ZW50RnJhbWUoKSB8fCBjYW5kaWRhdGUucmVjdC5pc0VtcHR5
KCkpKQorICAgIGlmICh0b0ZyYW1lT3duZXJFbGVtZW50KGNhbmRpZGF0ZSkgJiYgKCF0b0ZyYW1l
T3duZXJFbGVtZW50KGNhbmRpZGF0ZSktPmNvbnRlbnRGcmFtZSgpIHx8IGNhbmRpZGF0ZS5yZWN0
LmlzRW1wdHkoKSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIElnbm9yZSBvZmYgc2NyZWVu
IGNoaWxkIG5vZGVzIG9mIGNvbnRhaW5lcnMgdGhhdCBkbyBub3Qgc2Nyb2xsIChvdmVyZmxvdzpo
aWRkZW4pCkBAIC01MDksOCArNTA4LDggQEAgYm9vbCBGb2N1c0NvbnRyb2xsZXI6OmFkdmFuY2VG
b2N1c0RpcmVjdGlvbmFsbHlJbkNvbnRhaW5lcihOb2RlKiBjb250YWluZXIsIGNvbnMKICAgICAg
ICAgLy8gUmV0dXJuIGZhbHNlIHdpbGwgY2F1c2UgYSByZS10cnksIHNraXBwaW5nIHRoaXMgY29u
dGFpbmVyLgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIGlmIChmb2N1c0NhbmRp
ZGF0ZS52aXNpYmxlTm9kZS0+aXNGcmFtZU93bmVyRWxlbWVudCgpKSB7Ci0gICAgICAgIEhUTUxG
cmFtZU93bmVyRWxlbWVudCogZnJhbWVFbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTEZyYW1lT3du
ZXJFbGVtZW50Kj4oZm9jdXNDYW5kaWRhdGUudmlzaWJsZU5vZGUpOworCisgICAgaWYgKEhUTUxG
cmFtZU93bmVyRWxlbWVudCogZnJhbWVFbGVtZW50ID0gdG9GcmFtZU93bmVyRWxlbWVudChmb2N1
c0NhbmRpZGF0ZSkpIHsKICAgICAgICAgLy8gSWYgd2UgaGF2ZSBhbiBpZnJhbWUgd2l0aG91dCB0
aGUgc3JjIGF0dHJpYnV0ZSwgaXQgd2lsbCBub3QgaGF2ZSBhIGNvbnRlbnRGcmFtZSgpLgogICAg
ICAgICAvLyBXZSBBU1NFUlQgaGVyZSB0byBtYWtlIHN1cmUgdGhhdAogICAgICAgICAvLyB1cGRh
dGVGb2N1c0NhbmRpZGF0ZUlmTmVlZGVkKCkgd2lsbCBuZXZlciBjb25zaWRlciBzdWNoIGFuIGlm
cmFtZSBhcyBhIGNhbmRpZGF0ZS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2
aWdhdGlvbi5jcHAgYi9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwCmluZGV4IDVm
MjcwYmEuLjk3MGI4MTcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlv
bi5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmNwcApAQCAtMzMsNyAr
MzMsNiBAQAogI2luY2x1ZGUgIkZyYW1lVHJlZS5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgog
I2luY2x1ZGUgIkhUTUxBcmVhRWxlbWVudC5oIgotI2luY2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxl
bWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTWFw
RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgpAQCAtNzAyLDUgKzcwMSw5IEBAIElu
dFJlY3QgdmlydHVhbFJlY3RGb3JBcmVhRWxlbWVudEFuZERpcmVjdGlvbihGb2N1c0RpcmVjdGlv
biBkaXJlY3Rpb24sIEhUTUxBcmVhCiAgICAgcmV0dXJuIHJlY3Q7CiB9CiAKK0hUTUxGcmFtZU93
bmVyRWxlbWVudCogdG9GcmFtZU93bmVyRWxlbWVudChGb2N1c0NhbmRpZGF0ZSYgY2FuZGlkYXRl
KQoreworICAgIHJldHVybiBjYW5kaWRhdGUuaXNGcmFtZU93bmVyRWxlbWVudCgpID8gc3RhdGlj
X2Nhc3Q8SFRNTEZyYW1lT3duZXJFbGVtZW50Kj4oY2FuZGlkYXRlLnZpc2libGVOb2RlKSA6IDA7
Cit9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2Uv
U3BhdGlhbE5hdmlnYXRpb24uaCBiL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5oCmlu
ZGV4IDZlZjAwNTguLmY2ODhmMjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2
aWdhdGlvbi5oCisrKyBiL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5oCkBAIC0yMiw2
ICsyMiw3IEBACiAjZGVmaW5lIFNwYXRpYWxOYXZpZ2F0aW9uX2gKIAogI2luY2x1ZGUgIkZvY3Vz
RGlyZWN0aW9uLmgiCisjaW5jbHVkZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIk5vZGUuaCIKIApAQCAtMTE2LDYgKzExNyw3IEBAIHN0
cnVjdCBGb2N1c0NhbmRpZGF0ZSB7CiAgICAgZXhwbGljaXQgRm9jdXNDYW5kaWRhdGUoSFRNTEFy
ZWFFbGVtZW50KiBhcmVhLCBGb2N1c0RpcmVjdGlvbik7CiAgICAgYm9vbCBpc051bGwoKSBjb25z
dCB7IHJldHVybiAhdmlzaWJsZU5vZGU7IH0KICAgICBib29sIGluU2Nyb2xsYWJsZUNvbnRhaW5l
cigpIGNvbnN0IHsgcmV0dXJuIHZpc2libGVOb2RlICYmIGVuY2xvc2luZ1Njcm9sbGFibGVCb3g7
IH0KKyAgICBib29sIGlzRnJhbWVPd25lckVsZW1lbnQoKSBjb25zdCB7IHJldHVybiB2aXNpYmxl
Tm9kZSAmJiB2aXNpYmxlTm9kZS0+aXNGcmFtZU93bmVyRWxlbWVudCgpOyB9CiAgICAgRG9jdW1l
bnQqIGRvY3VtZW50KCkgY29uc3QgeyByZXR1cm4gdmlzaWJsZU5vZGUgPyB2aXNpYmxlTm9kZS0+
ZG9jdW1lbnQoKSA6IDA7IH0KIAogICAgIC8vIFdlIGhhbmRsZSBkaWZmZXJlbnRseSB2aXNpYmxl
Tm9kZSBhbmQgRm9jdXNhYmxlTm9kZSB0byBwcm9wZXJseSBoYW5kbGUgdGhlIGFyZWFzIG9mIGlt
YWdlbWFwcywKQEAgLTE0NSw2ICsxNDcsOCBAQCBJbnRSZWN0IG5vZGVSZWN0SW5BYnNvbHV0ZUNv
b3JkaW5hdGVzKE5vZGUqLCBib29sIGlnbm9yZUJvcmRlciA9IGZhbHNlKTsKIEludFJlY3QgZnJh
bWVSZWN0SW5BYnNvbHV0ZUNvb3JkaW5hdGVzKEZyYW1lKik7CiBJbnRSZWN0IHZpcnR1YWxSZWN0
Rm9yRGlyZWN0aW9uKEZvY3VzRGlyZWN0aW9uLCBjb25zdCBJbnRSZWN0JiBzdGFydGluZ1JlY3Qs
IGludCB3aWR0aCA9IDApOwogSW50UmVjdCB2aXJ0dWFsUmVjdEZvckFyZWFFbGVtZW50QW5kRGly
ZWN0aW9uKEZvY3VzRGlyZWN0aW9uLCBIVE1MQXJlYUVsZW1lbnQqKTsKK0hUTUxGcmFtZU93bmVy
RWxlbWVudCogdG9GcmFtZU93bmVyRWxlbWVudChGb2N1c0NhbmRpZGF0ZSYpOworCiB9IC8vIG5h
bXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFNwYXRpYWxOYXZpZ2F0aW9uX2gKLS0gCjEuNy4x
Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76499</attachid>
            <date>2010-12-13 22:13:07 -0800</date>
            <delta_ts>2010-12-13 22:54:29 -0800</delta_ts>
            <desc>patch 4 - v1 (committed r74004, r=dbates)</desc>
            <filename>0002-2010-12-13-Antonio-Gomes-agomes-rim.com.patch</filename>
            <type>text/plain</type>
            <size>4357</size>
            <attacher name="Antonio Gomes">tonikitoo</attacher>
            
              <data encoding="base64">RnJvbSBkZjM5YWQwZTYwOWM0YTBlZDBhYmViZWEzNzk1MDk1ZGY4ZTU3OGQ4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmlvIEdvbWVzIDxhZ29tZXNAcmltLmNvbT4KRGF0ZTog
VHVlLCAxNCBEZWMgMjAxMCAwMToxMDoyMSAtMDUwMApTdWJqZWN0OiBbUEFUQ0ggMi8yXSAyMDEw
LTEyLTEzICBBbnRvbmlvIEdvbWVzICA8YWdvbWVzQHJpbS5jb20+CgogICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgoKICAgICAgICBTcGF0aWFsIE5hdmlnYXRpb246IGNvZGUgY2xl
YW4gdXAgKHBhcnQgSVYpCiAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTUwNjY2CgogICAgICAgIEF2b2lkIGNhbGxpbmcgY2FuU2Nyb2xsSW5EaXJlY3Rpb24g
bW9yZSB0aGFuIG5lY2Vzc2FyeS4KCiAgICAgICAgTm8gbmV3IHRlc3RzIG5lZWRlZC4KCiAgICAg
ICAgKiBwYWdlL0ZvY3VzQ29udHJvbGxlci5jcHA6CiAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29u
dHJvbGxlcjo6YWR2YW5jZUZvY3VzRGlyZWN0aW9uYWxseUluQ29udGFpbmVyKTogTW92ZWQgdGhl
IGNhbGwgdG8gY2FuU2Nyb2xsSW5EaXJlY3Rpb24oKQogICAgICAgIHRvIHdpdGhpbiB0aGUgc2Ny
b2xsSW5EaXJlY3Rpb24oKS4KICAgICAgICAqIHBhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwOiBS
ZW1vdmVkIHRoZSBhc3NlcnRpb24gdG8gY2FuU2Nyb2xsaW5nRGlyZWN0aW9uIGZ1bmN0aW9uLgog
ICAgICAgIChXZWJDb3JlOjpzY3JvbGxJbkRpcmVjdGlvbik6Ci0tLQogV2ViQ29yZS9DaGFuZ2VM
b2cgICAgICAgICAgICAgICAgICB8ICAgMTcgKysrKysrKysrKysrKysrKysKIFdlYkNvcmUvcGFn
ZS9Gb2N1c0NvbnRyb2xsZXIuY3BwICAgfCAgIDExICsrKystLS0tLS0tCiBXZWJDb3JlL3BhZ2Uv
U3BhdGlhbE5hdmlnYXRpb24uY3BwIHwgICAgNiArKysrLS0KIDMgZmlsZXMgY2hhbmdlZCwgMjUg
aW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDQ4MWQ1NWMuLjA1YmZmZjQgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0yLDYgKzIs
MjMgQEAKIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KIAorICAgICAgICBT
cGF0aWFsIE5hdmlnYXRpb246IGNvZGUgY2xlYW4gdXAgKHBhcnQgSVYpCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDY2NgorCisgICAgICAgIEF2b2lk
IGNhbGxpbmcgY2FuU2Nyb2xsSW5EaXJlY3Rpb24gbW9yZSB0aGFuIG5lY2Vzc2FyeS4KKworICAg
ICAgICBObyBuZXcgdGVzdHMgbmVlZGVkLgorCisgICAgICAgICogcGFnZS9Gb2N1c0NvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyOjphZHZhbmNlRm9jdXNE
aXJlY3Rpb25hbGx5SW5Db250YWluZXIpOiBNb3ZlZCB0aGUgY2FsbCB0byBjYW5TY3JvbGxJbkRp
cmVjdGlvbigpCisgICAgICAgIHRvIHdpdGhpbiB0aGUgc2Nyb2xsSW5EaXJlY3Rpb24oKS4KKyAg
ICAgICAgKiBwYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmNwcDogUmVtb3ZlZCB0aGUgYXNzZXJ0aW9u
IHRvIGNhblNjcm9sbGluZ0RpcmVjdGlvbiBmdW5jdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OnNj
cm9sbEluRGlyZWN0aW9uKToKKworMjAxMC0xMi0xMyAgQW50b25pbyBHb21lcyAgPGFnb21lc0By
aW0uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCiAgICAgICAg
IFNwYXRpYWwgTmF2aWdhdGlvbjogY29kZSBjbGVhbiB1cCAocGFydCBJSUkpCiAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MDY2NgogCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcCBiL1dlYkNvcmUvcGFnZS9Gb2N1c0Nv
bnRyb2xsZXIuY3BwCmluZGV4IDUxNzdhMWIuLjc1ZDcwZWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xs
ZXIuY3BwCkBAIC01MDAsMTMgKzUwMCwxMCBAQCBib29sIEZvY3VzQ29udHJvbGxlcjo6YWR2YW5j
ZUZvY3VzRGlyZWN0aW9uYWxseUluQ29udGFpbmVyKE5vZGUqIGNvbnRhaW5lciwgY29ucwogICAg
IGZpbmRGb2N1c0NhbmRpZGF0ZUluQ29udGFpbmVyKGNvbnRhaW5lciwgbmV3U3RhcnRpbmdSZWN0
LCBkaXJlY3Rpb24sIGV2ZW50LCBmb2N1c0NhbmRpZGF0ZSk7CiAKICAgICBpZiAoZm9jdXNDYW5k
aWRhdGUuaXNOdWxsKCkpIHsKLSAgICAgICAgaWYgKGNhblNjcm9sbEluRGlyZWN0aW9uKGRpcmVj
dGlvbiwgY29udGFpbmVyKSkgewotICAgICAgICAgICAgLy8gTm90aGluZyB0byBmb2N1cywgc2Ny
b2xsIGlmIHBvc3NpYmxlLgotICAgICAgICAgICAgc2Nyb2xsSW5EaXJlY3Rpb24oY29udGFpbmVy
LCBkaXJlY3Rpb24pOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAg
ICAgLy8gUmV0dXJuIGZhbHNlIHdpbGwgY2F1c2UgYSByZS10cnksIHNraXBwaW5nIHRoaXMgY29u
dGFpbmVyLgotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIC8vIE5vdGhpbmcgdG8gZm9j
dXMsIHNjcm9sbCBpZiBwb3NzaWJsZS4KKyAgICAgICAgLy8gTk9URTogSWYgbm8gc2Nyb2xsaW5n
IGlzIHBlcmZvcm1lZCAoaS5lLiBzY3JvbGxJbkRpcmVjdGlvbiByZXR1cm5zIGZhbHNlKSwgdGhl
CisgICAgICAgIC8vIHNwYXRpYWwgbmF2aWdhdGlvbiBhbGdvcml0aG0gdG8gY29udGludWUsIHNr
aXBwaW5nIHRoaXMgY29udGFpbmVyLgorICAgICAgICByZXR1cm4gc2Nyb2xsSW5EaXJlY3Rpb24o
Y29udGFpbmVyLCBkaXJlY3Rpb24pOwogICAgIH0KIAogICAgIGlmIChIVE1MRnJhbWVPd25lckVs
ZW1lbnQqIGZyYW1lRWxlbWVudCA9IHRvRnJhbWVPd25lckVsZW1lbnQoZm9jdXNDYW5kaWRhdGUp
KSB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwIGIvV2Vi
Q29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmNwcAppbmRleCA5NzBiODE3Li5kMzZhOGE4IDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwCisrKyBiL1dlYkNv
cmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHAKQEAgLTMzNCw3ICszMzQsNyBAQCBib29sIGhh
c09mZnNjcmVlblJlY3QoTm9kZSogbm9kZSwgRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uKQogCiBi
b29sIHNjcm9sbEluRGlyZWN0aW9uKEZyYW1lKiBmcmFtZSwgRm9jdXNEaXJlY3Rpb24gZGlyZWN0
aW9uKQogewotICAgIEFTU0VSVChmcmFtZSAmJiBjYW5TY3JvbGxJbkRpcmVjdGlvbihkaXJlY3Rp
b24sIGZyYW1lLT5kb2N1bWVudCgpKSk7CisgICAgQVNTRVJUKGZyYW1lKTsKIAogICAgIGlmIChm
cmFtZSAmJiBjYW5TY3JvbGxJbkRpcmVjdGlvbihkaXJlY3Rpb24sIGZyYW1lLT5kb2N1bWVudCgp
KSkgewogICAgICAgICBpbnQgZHggPSAwOwpAQCAtMzY1LDEzICszNjUsMTQgQEAgYm9vbCBzY3Jv
bGxJbkRpcmVjdGlvbihGcmFtZSogZnJhbWUsIEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbikKIAog
Ym9vbCBzY3JvbGxJbkRpcmVjdGlvbihOb2RlKiBjb250YWluZXIsIEZvY3VzRGlyZWN0aW9uIGRp
cmVjdGlvbikKIHsKKyAgICBBU1NFUlQoY29udGFpbmVyKTsKICAgICBpZiAoY29udGFpbmVyLT5p
c0RvY3VtZW50Tm9kZSgpKQogICAgICAgICByZXR1cm4gc2Nyb2xsSW5EaXJlY3Rpb24oc3RhdGlj
X2Nhc3Q8RG9jdW1lbnQqPihjb250YWluZXIpLT5mcmFtZSgpLCBkaXJlY3Rpb24pOwogCiAgICAg
aWYgKCFjb250YWluZXItPnJlbmRlckJveCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICBpZiAoY29udGFpbmVyICYmIGNhblNjcm9sbEluRGlyZWN0aW9uKGRpcmVjdGlvbiwgY29udGFp
bmVyKSkgeworICAgIGlmIChjYW5TY3JvbGxJbkRpcmVjdGlvbihkaXJlY3Rpb24sIGNvbnRhaW5l
cikpIHsKICAgICAgICAgaW50IGR4ID0gMDsKICAgICAgICAgaW50IGR5ID0gMDsKICAgICAgICAg
c3dpdGNoIChkaXJlY3Rpb24pIHsKQEAgLTM5Nyw2ICszOTgsNyBAQCBib29sIHNjcm9sbEluRGly
ZWN0aW9uKE5vZGUqIGNvbnRhaW5lciwgRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uKQogICAgICAg
ICBjb250YWluZXItPnJlbmRlckJveCgpLT5lbmNsb3NpbmdMYXllcigpLT5zY3JvbGxCeVJlY3Vy
c2l2ZWx5KGR4LCBkeSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KKwogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotLSAKMS43LjEKCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76502</attachid>
            <date>2010-12-13 22:43:27 -0800</date>
            <delta_ts>2010-12-13 23:23:04 -0800</delta_ts>
            <desc>patch 5 - v1 (committed r74006, r=dbates)</desc>
            <filename>0001-2010-12-13-Antonio-Gomes-agomes-rim.com.patch</filename>
            <type>text/plain</type>
            <size>2990</size>
            <attacher name="Antonio Gomes">tonikitoo</attacher>
            
              <data encoding="base64">RnJvbSAwNzRmYjEzNzc0YmZiYjY1OGU0ZDgwZjFkNDYxZDYzZDhkODlkMTJlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmlvIEdvbWVzIDxhZ29tZXNAcmltLmNvbT4KRGF0ZTog
VHVlLCAxNCBEZWMgMjAxMCAwMToyNDoxNSAtMDUwMApTdWJqZWN0OiBbUEFUQ0hdIDIwMTAtMTIt
MTMgIEFudG9uaW8gR29tZXMgIDxhZ29tZXNAcmltLmNvbT4KCiAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCgogICAgICAgIFNwYXRpYWwgTmF2aWdhdGlvbjogY29kZSBjbGVhbiB1
cCAocGFydCBWKQogICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD01MDY2NgoKICAgICAgICBObyBuZXcgdGVzdHMgbmVlZGVkLgoKICAgICAgICAqIHBhZ2UvU3Bh
dGlhbE5hdmlnYXRpb24uY3BwOgogICAgICAgIChXZWJDb3JlOjpkaXN0YW5jZURhdGFGb3JOb2Rl
KTogTWFkZSAnRm9jdXNDYW5kaWRhdGUgY3VycmVudCcgY29uc3Qgc2luY2UgaXQgaXMgbm90IHN1
cHBvc2VkCiAgICAgICAgY2hhbmdlZCB3aXRoaW4gdGhpcyBmdW5jdGlvbi4KICAgICAgICAqIHBh
Z2UvU3BhdGlhbE5hdmlnYXRpb24uaDogRGl0dG8uCi0tLQogV2ViQ29yZS9DaGFuZ2VMb2cgICAg
ICAgICAgICAgICAgICB8ICAgMTQgKysrKysrKysrKysrKysKIFdlYkNvcmUvcGFnZS9TcGF0aWFs
TmF2aWdhdGlvbi5jcHAgfCAgICAyICstCiBXZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24u
aCAgIHwgICAgMiArLQogMyBmaWxlcyBjaGFuZ2VkLCAxNiBpbnNlcnRpb25zKCspLCAyIGRlbGV0
aW9ucygtKQoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggMjQzNWNlMy4uNzg2NjIxNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwxOSBAQAogMjAxMC0xMi0xMyAgQW50
b25pbyBHb21lcyAgPGFnb21lc0ByaW0uY29tPgogCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFNwYXRpYWwgTmF2aWdhdGlvbjogY29kZSBjbGVhbiB1cCAo
cGFydCBWKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NTA2NjYKKworICAgICAgICBObyBuZXcgdGVzdHMgbmVlZGVkLgorCisgICAgICAgICogcGFnZS9T
cGF0aWFsTmF2aWdhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkaXN0YW5jZURhdGFGb3JO
b2RlKTogTWFkZSAnRm9jdXNDYW5kaWRhdGUgY3VycmVudCcgY29uc3Qgc2luY2UgaXQgaXMgbm90
IHN1cHBvc2VkCisgICAgICAgIGNoYW5nZWQgd2l0aGluIHRoaXMgZnVuY3Rpb24uCisgICAgICAg
ICogcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5oOiBEaXR0by4KKworMjAxMC0xMi0xMyAgQW50b25p
byBHb21lcyAgPGFnb21lc0ByaW0uY29tPgorCiAgICAgICAgIFJldmlld2VkIGJ5IERhbmllbCBC
YXRlcy4KIAogICAgICAgICBTcGF0aWFsIE5hdmlnYXRpb246IGNvZGUgY2xlYW4gdXAgKHBhcnQg
SVYpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwIGIvV2Vi
Q29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmNwcAppbmRleCA1ZDEyZjcyLi41Y2IzYzk1IDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwCisrKyBiL1dlYkNv
cmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHAKQEAgLTU5Miw3ICs1OTIsNyBAQCB2b2lkIGVu
dHJ5QW5kRXhpdFBvaW50c0ZvckRpcmVjdGlvbihGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24sIGNv
bnN0IEludFJlY3QmIHN0YQogICAgIH0KIH0KIAotdm9pZCBkaXN0YW5jZURhdGFGb3JOb2RlKEZv
Y3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgRm9jdXNDYW5kaWRhdGUmIGN1cnJlbnQsIEZvY3VzQ2Fu
ZGlkYXRlJiBjYW5kaWRhdGUpCit2b2lkIGRpc3RhbmNlRGF0YUZvck5vZGUoRm9jdXNEaXJlY3Rp
b24gZGlyZWN0aW9uLCBjb25zdCBGb2N1c0NhbmRpZGF0ZSYgY3VycmVudCwgRm9jdXNDYW5kaWRh
dGUmIGNhbmRpZGF0ZSkKIHsKICAgICBpZiAoY2FuZGlkYXRlLmlzTnVsbCgpKQogICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uaCBiL1dl
YkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5oCmluZGV4IGMwNTE0NDEuLmE2ZGNmMjQgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5oCisrKyBiL1dlYkNvcmUv
cGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5oCkBAIC0xNDEsNyArMTQxLDcgQEAgYm9vbCBzY3JvbGxJ
bkRpcmVjdGlvbihOb2RlKiBjb250YWluZXIsIEZvY3VzRGlyZWN0aW9uKTsKIGJvb2wgY2FuU2Ny
b2xsSW5EaXJlY3Rpb24oRm9jdXNEaXJlY3Rpb24sIGNvbnN0IE5vZGUqIGNvbnRhaW5lcik7CiBi
b29sIGNhblNjcm9sbEluRGlyZWN0aW9uKEZvY3VzRGlyZWN0aW9uLCBjb25zdCBGcmFtZSopOwog
Ym9vbCBjYW5CZVNjcm9sbGVkSW50b1ZpZXcoRm9jdXNEaXJlY3Rpb24sIGNvbnN0IEZvY3VzQ2Fu
ZGlkYXRlJik7Ci12b2lkIGRpc3RhbmNlRGF0YUZvck5vZGUoRm9jdXNEaXJlY3Rpb24sIEZvY3Vz
Q2FuZGlkYXRlJiBjdXJyZW50LCBGb2N1c0NhbmRpZGF0ZSYgY2FuZGlkYXRlKTsKK3ZvaWQgZGlz
dGFuY2VEYXRhRm9yTm9kZShGb2N1c0RpcmVjdGlvbiwgY29uc3QgRm9jdXNDYW5kaWRhdGUmIGN1
cnJlbnQsIEZvY3VzQ2FuZGlkYXRlJiBjYW5kaWRhdGUpOwogTm9kZSogc2Nyb2xsYWJsZUVuY2xv
c2luZ0JveE9yUGFyZW50RnJhbWVGb3JOb2RlSW5EaXJlY3Rpb24oRm9jdXNEaXJlY3Rpb24sIE5v
ZGUqKTsKIEludFJlY3Qgbm9kZVJlY3RJbkFic29sdXRlQ29vcmRpbmF0ZXMoTm9kZSosIGJvb2wg
aWdub3JlQm9yZGVyID0gZmFsc2UpOwogSW50UmVjdCBmcmFtZVJlY3RJbkFic29sdXRlQ29vcmRp
bmF0ZXMoRnJhbWUqKTsKLS0gCjEuNy4xCgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77087</attachid>
            <date>2010-12-20 23:37:42 -0800</date>
            <delta_ts>2010-12-28 13:58:38 -0800</delta_ts>
            <desc>patch 6 - v1 (committed r74723, r=dbates)</desc>
            <filename>0001-2010-12-20-Antonio-Gomes-agomes-rim.com.patch</filename>
            <type>text/plain</type>
            <size>13004</size>
            <attacher name="Antonio Gomes">tonikitoo</attacher>
            
              <data encoding="base64">RnJvbSAzZDQ1MDZjNjJiY2Q1OTlhOTNjNWZlYTU4MDE3YzA0ZWNhNmFiOWFjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmlvIEdvbWVzIDxhZ29tZXNAcmltLmNvbT4KRGF0ZTog
VHVlLCAyMSBEZWMgMjAxMCAwMjozNjo0MiAtMDUwMApTdWJqZWN0OiBbUEFUQ0hdIDIwMTAtMTIt
MjAgIEFudG9uaW8gR29tZXMgIDxhZ29tZXNAcmltLmNvbT4KCiAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCgogICAgICAgIFNwYXRpYWwgTmF2aWdhdGlvbjogY29kZSBjbGVhbiB1
cCAoUGFydCBWSSkKICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTA2NjYKCiAgICAgICAgTm8gbmV3IHRlc3RzIG5lZWRlZC4KCiAgICAgICAgKiBwYWdlL0Zv
Y3VzQ29udHJvbGxlci5jcHA6CiAgICAgICAgKFdlYkNvcmU6OnVwZGF0Rm9jdXNDYW5kaWRhdGVJ
Zk5lZWRlZCk6IEFzc2VydCBpZiAhcmVuZGVyZXIoKSBvciAhaXNFbGVtZW50Tm9kZSgpCiAgICAg
ICAgc2luY2Ugd2UgYXJlIGJhaWxpbmcgYmFpbGluZyBvdXIgZWFybGlyIGluIEZvY3VzQ2FuZGlk
YXRlIGNvbnN0cnVjdG9yIGFuZAogICAgICAgIEZvY3VzQ29udHJvbGxlcjo6ZmluZEZvY3VzQ2Fu
ZGlkYXRlSW5Db250YWluZXIgcmVzcGVjdGl2ZWx5OwogICAgICAgICogcGFnZS9TcGF0aWFsTmF2
aWdhdGlvbi5oOiBTd2FwcGVkIHRoZSBwYXJhbWV0ZXJzIG9yZGVyIGluIGNhblNjcm9sbEluRGly
ZWN0aW9uCiAgICAgICAgYW5kIHZpcnR1YWxSZWN0Rm9yQXJlYUVsZW1lbnRBbmREaXJlY3Rpb24g
ZnVuY3Rpb25zLgogICAgICAgIGkoV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyOjpmaW5kRm9jdXND
YW5kaWRhdGVJbkNvbnRhaW5lcik6CiAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6
YWR2YW5jZUZvY3VzRGlyZWN0aW9uYWxseUluQ29udGFpbmVyKTogQWRqdXN0ZWQgY2FsbHNpdGVz
CiAgICAgICAgb2YgY2FuU2Nyb2xsSW5EaXJlY3Rpb24oKSwgYW5kIGFkZGVkIGFuIGVhcmx5IHJl
dHVybiBpZiAhaXNFbGVtZW50Tm9kZSgpLgogICAgICAgIChXZWJDb3JlOjpGb2N1c0NvbnRyb2xs
ZXI6OmFkdmFuY2VGb2N1c0RpcmVjdGlvbmFsbHkpOiBBZGp1c3RlZCBjYWxsc2l0ZSBvZgogICAg
ICAgIHZpcnR1YWxSZWN0Rm9yQXJlYUVsZW1lbnRBbmREaXJlY3Rpb24oKTsKICAgICAgICAqIHBh
Z2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwOgogICAgICAgIChXZWJDb3JlOjpGb2N1c0NhbmRpZGF0
ZTo6Rm9jdXNDYW5kaWRhdGUpOiBBc3NlcnQgaWYgbm9kZSBpcyBub3QgYSBlbGVtZW50IG5vZGU7
CiAgICAgICAgKFdlYkNvcmU6OmlzU2Nyb2xsYWJsZU5vZGUpOiBSZW5hbWVkIGZyb20gaXNTY3Jv
bGxhYmxlQ29udGFpbmVyTm9kZTsKICAgICAgICAoV2ViQ29yZTo6c2Nyb2xsSW5EaXJlY3Rpb24p
OiBBZGp1c3RlZCBjYWxsc2l0ZSBhZnRlciBmdW5jdGlvbiBuYW1lIGNoYW5nZTsKICAgICAgICAo
V2ViQ29yZTo6c2Nyb2xsYWJsZUVuY2xvc2luZ0JveE9yUGFyZW50RnJhbWVGb3JOb2RlSW5EaTpy
ZWN0aW9uKTogQXNzZXJ0IGlmIG5vZGUgaXMKICAgICAgICBhIGRvY3VtZW50Tm9kZTsKICAgICAg
ICAoV2ViQ29yZTo6Y2FuU2Nyb2xsSW5EaXJlY3Rpb24pOiBTaWduYXR1cmUgY2hhbmdlZC4KICAg
ICAgICAoV2ViQ29yZTo6Y2FuQmVTY3JvbGxlZEludG9WaWV3KTogRGl0dG8uCiAgICAgICAgKFdl
YkNvcmU6OnZpcnR1YWxSZWN0Rm9yQXJlYUVsZW1lbnRBbmREaXJlY3Rpb24pOiBEaXR0by4KLS0t
CiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgIHwgICAzMCArKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysKIFdlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwICAgfCAg
IDE2ICsrKysrKysrKystLS0tLS0KIFdlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHAg
fCAgIDMwICsrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQogV2ViQ29yZS9wYWdlL1NwYXRp
YWxOYXZpZ2F0aW9uLmggICB8ICAgIDYgKysrLS0tCiA0IGZpbGVzIGNoYW5nZWQsIDYwIGluc2Vy
dGlvbnMoKyksIDIyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTc4NTZlNS4uYTM2MmY0ZSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBA
QAorMjAxMC0xMi0yMCAgQW50b25pbyBHb21lcyAgPGFnb21lc0ByaW0uY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNwYXRpYWwgTmF2aWdhdGlv
bjogY29kZSBjbGVhbiB1cCAoUGFydCBWSSkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTUwNjY2CisKKyAgICAgICAgTm8gbmV3IHRlc3RzIG5lZWRlZC4K
KworICAgICAgICAqIHBhZ2UvRm9jdXNDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnVwZGF0Rm9jdXNDYW5kaWRhdGVJZk5lZWRlZCk6IEFzc2VydCBpZiAhcmVuZGVyZXIoKSBvciAh
aXNFbGVtZW50Tm9kZSgpCisgICAgICAgIHNpbmNlIHdlIGFyZSBiYWlsaW5nIGJhaWxpbmcgb3Vy
IGVhcmxpciBpbiBGb2N1c0NhbmRpZGF0ZSBjb25zdHJ1Y3RvciBhbmQKKyAgICAgICAgRm9jdXND
b250cm9sbGVyOjpmaW5kRm9jdXNDYW5kaWRhdGVJbkNvbnRhaW5lciByZXNwZWN0aXZlbHk7Cisg
ICAgICAgICogcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5oOiBTd2FwcGVkIHRoZSBwYXJhbWV0ZXJz
IG9yZGVyIGluIGNhblNjcm9sbEluRGlyZWN0aW9uCisgICAgICAgIGFuZCB2aXJ0dWFsUmVjdEZv
ckFyZWFFbGVtZW50QW5kRGlyZWN0aW9uIGZ1bmN0aW9ucy4KKyAgICAgICAgaShXZWJDb3JlOjpG
b2N1c0NvbnRyb2xsZXI6OmZpbmRGb2N1c0NhbmRpZGF0ZUluQ29udGFpbmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6YWR2YW5jZUZvY3VzRGlyZWN0aW9uYWxseUluQ29u
dGFpbmVyKTogQWRqdXN0ZWQgY2FsbHNpdGVzCisgICAgICAgIG9mIGNhblNjcm9sbEluRGlyZWN0
aW9uKCksIGFuZCBhZGRlZCBhbiBlYXJseSByZXR1cm4gaWYgIWlzRWxlbWVudE5vZGUoKS4KKyAg
ICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6YWR2YW5jZUZvY3VzRGlyZWN0aW9uYWxs
eSk6IEFkanVzdGVkIGNhbGxzaXRlIG9mCisgICAgICAgIHZpcnR1YWxSZWN0Rm9yQXJlYUVsZW1l
bnRBbmREaXJlY3Rpb24oKTsKKyAgICAgICAgKiBwYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ2FuZGlkYXRlOjpGb2N1c0NhbmRpZGF0ZSk6IEFzc2Vy
dCBpZiBub2RlIGlzIG5vdCBhIGVsZW1lbnQgbm9kZTsKKyAgICAgICAgKFdlYkNvcmU6OmlzU2Ny
b2xsYWJsZU5vZGUpOiBSZW5hbWVkIGZyb20gaXNTY3JvbGxhYmxlQ29udGFpbmVyTm9kZTsKKyAg
ICAgICAgKFdlYkNvcmU6OnNjcm9sbEluRGlyZWN0aW9uKTogQWRqdXN0ZWQgY2FsbHNpdGUgYWZ0
ZXIgZnVuY3Rpb24gbmFtZSBjaGFuZ2U7CisgICAgICAgIChXZWJDb3JlOjpzY3JvbGxhYmxlRW5j
bG9zaW5nQm94T3JQYXJlbnRGcmFtZUZvck5vZGVJbkRpOnJlY3Rpb24pOiBBc3NlcnQgaWYgbm9k
ZSBpcworICAgICAgICBhIGRvY3VtZW50Tm9kZTsKKyAgICAgICAgKFdlYkNvcmU6OmNhblNjcm9s
bEluRGlyZWN0aW9uKTogU2lnbmF0dXJlIGNoYW5nZWQuCisgICAgICAgIChXZWJDb3JlOjpjYW5C
ZVNjcm9sbGVkSW50b1ZpZXcpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnZpcnR1YWxSZWN0
Rm9yQXJlYUVsZW1lbnRBbmREaXJlY3Rpb24pOiBEaXR0by4KKwogMjAxMC0xMi0xOSAgQW50b25p
byBHb21lcyAgPGFnb21lc0ByaW0uY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAgYi9X
ZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAppbmRleCA5Y2ExOGRkLi5lZGExMDA1IDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAorKysgYi9XZWJDb3Jl
L3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcApAQCAtNDE3LDggKzQxNyw4IEBAIHZvaWQgRm9jdXND
b250cm9sbGVyOjpzZXRBY3RpdmUoYm9vbCBhY3RpdmUpCiAKIHN0YXRpYyB2b2lkIHVwZGF0ZUZv
Y3VzQ2FuZGlkYXRlSWZOZWVkZWQoRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBjb25zdCBJbnRS
ZWN0JiBzdGFydGluZ1JlY3QsIEZvY3VzQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIEZvY3VzQ2FuZGlk
YXRlJiBjbG9zZXN0KQogewotICAgIGlmICghY2FuZGlkYXRlLnZpc2libGVOb2RlLT5pc0VsZW1l
bnROb2RlKCkgfHwgIWNhbmRpZGF0ZS52aXNpYmxlTm9kZS0+cmVuZGVyZXIoKSkKLSAgICAgICAg
cmV0dXJuOworICAgIEFTU0VSVChjYW5kaWRhdGUudmlzaWJsZU5vZGUtPmlzRWxlbWVudE5vZGUo
KSk7CisgICAgQVNTRVJUKGNhbmRpZGF0ZS52aXNpYmxlTm9kZS0+cmVuZGVyZXIoKSk7CiAKICAg
ICAvLyBJZ25vcmUgaWZyYW1lcyB0aGF0IGRvbid0IGhhdmUgYSBzcmMgYXR0cmlidXRlCiAgICAg
aWYgKGZyYW1lT3duZXJFbGVtZW50KGNhbmRpZGF0ZSkgJiYgKCFmcmFtZU93bmVyRWxlbWVudChj
YW5kaWRhdGUpLT5jb250ZW50RnJhbWUoKSB8fCBjYW5kaWRhdGUucmVjdC5pc0VtcHR5KCkpKQpA
QCAtNDcyLDExICs0NzIsMTQgQEAgdm9pZCBGb2N1c0NvbnRyb2xsZXI6OmZpbmRGb2N1c0NhbmRp
ZGF0ZUluQ29udGFpbmVyKE5vZGUqIGNvbnRhaW5lciwgY29uc3QgSW50UmUKICAgICBOb2RlKiBm
b2N1c2VkTm9kZSA9IChmb2N1c2VkRnJhbWUoKSAmJiBmb2N1c2VkRnJhbWUoKS0+ZG9jdW1lbnQo
KSkgPyBmb2N1c2VkRnJhbWUoKS0+ZG9jdW1lbnQoKS0+Zm9jdXNlZE5vZGUoKSA6IDA7CiAKICAg
ICBOb2RlKiBub2RlID0gY29udGFpbmVyLT5maXJzdENoaWxkKCk7Ci0gICAgZm9yICg7IG5vZGU7
IG5vZGUgPSAobm9kZS0+aXNGcmFtZU93bmVyRWxlbWVudCgpIHx8IGNhblNjcm9sbEluRGlyZWN0
aW9uKGRpcmVjdGlvbiwgbm9kZSkpID8gbm9kZS0+dHJhdmVyc2VOZXh0U2libGluZyhjb250YWlu
ZXIpIDogbm9kZS0+dHJhdmVyc2VOZXh0Tm9kZShjb250YWluZXIpKSB7CisgICAgZm9yICg7IG5v
ZGU7IG5vZGUgPSAobm9kZS0+aXNGcmFtZU93bmVyRWxlbWVudCgpIHx8IGNhblNjcm9sbEluRGly
ZWN0aW9uKG5vZGUsIGRpcmVjdGlvbikpID8gbm9kZS0+dHJhdmVyc2VOZXh0U2libGluZyhjb250
YWluZXIpIDogbm9kZS0+dHJhdmVyc2VOZXh0Tm9kZShjb250YWluZXIpKSB7CiAgICAgICAgIGlm
IChub2RlID09IGZvY3VzZWROb2RlKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAg
aWYgKCFub2RlLT5pc0tleWJvYXJkRm9jdXNhYmxlKGV2ZW50KSAmJiAhbm9kZS0+aXNGcmFtZU93
bmVyRWxlbWVudCgpICYmICFjYW5TY3JvbGxJbkRpcmVjdGlvbihkaXJlY3Rpb24sIG5vZGUpKQor
ICAgICAgICBpZiAoIW5vZGUtPmlzRWxlbWVudE5vZGUoKSkKKyAgICAgICAgICAgIGNvbnRpbnVl
OworCisgICAgICAgIGlmICghbm9kZS0+aXNLZXlib2FyZEZvY3VzYWJsZShldmVudCkgJiYgIW5v
ZGUtPmlzRnJhbWVPd25lckVsZW1lbnQoKSAmJiAhY2FuU2Nyb2xsSW5EaXJlY3Rpb24obm9kZSwg
ZGlyZWN0aW9uKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIEZvY3VzQ2FuZGlk
YXRlIGNhbmRpZGF0ZSA9IEZvY3VzQ2FuZGlkYXRlKG5vZGUsIGRpcmVjdGlvbik7CkBAIC01MzEs
NyArNTM0LDggQEAgYm9vbCBGb2N1c0NvbnRyb2xsZXI6OmFkdmFuY2VGb2N1c0RpcmVjdGlvbmFs
bHlJbkNvbnRhaW5lcihOb2RlKiBjb250YWluZXIsIGNvbnMKICAgICAgICAgfQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAgaWYgKGNhblNjcm9sbEluRGlyZWN0aW9uKGRpcmVjdGlv
biwgZm9jdXNDYW5kaWRhdGUudmlzaWJsZU5vZGUpKSB7CisKKyAgICBpZiAoY2FuU2Nyb2xsSW5E
aXJlY3Rpb24oZm9jdXNDYW5kaWRhdGUudmlzaWJsZU5vZGUsIGRpcmVjdGlvbikpIHsKICAgICAg
ICAgaWYgKGZvY3VzQ2FuZGlkYXRlLmlzT2Zmc2NyZWVuQWZ0ZXJTY3JvbGxpbmcpIHsKICAgICAg
ICAgICAgIHNjcm9sbEluRGlyZWN0aW9uKGZvY3VzQ2FuZGlkYXRlLnZpc2libGVOb2RlLCBkaXJl
Y3Rpb24pOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC01NzgsNyArNTgyLDcgQEAgYm9v
bCBGb2N1c0NvbnRyb2xsZXI6OmFkdmFuY2VGb2N1c0RpcmVjdGlvbmFsbHkoRm9jdXNEaXJlY3Rp
b24gZGlyZWN0aW9uLCBLZXlib2EKICAgICAgICAgfSBlbHNlIGlmIChmb2N1c2VkTm9kZS0+aGFz
VGFnTmFtZShhcmVhVGFnKSkgewogICAgICAgICAgICAgSFRNTEFyZWFFbGVtZW50KiBhcmVhID0g
c3RhdGljX2Nhc3Q8SFRNTEFyZWFFbGVtZW50Kj4oZm9jdXNlZE5vZGUpOwogICAgICAgICAgICAg
Y29udGFpbmVyID0gc2Nyb2xsYWJsZUVuY2xvc2luZ0JveE9yUGFyZW50RnJhbWVGb3JOb2RlSW5E
aXJlY3Rpb24oZGlyZWN0aW9uLCBhcmVhLT5pbWFnZUVsZW1lbnQoKSk7Ci0gICAgICAgICAgICBz
dGFydGluZ1JlY3QgPSB2aXJ0dWFsUmVjdEZvckFyZWFFbGVtZW50QW5kRGlyZWN0aW9uKGRpcmVj
dGlvbiwgYXJlYSk7CisgICAgICAgICAgICBzdGFydGluZ1JlY3QgPSB2aXJ0dWFsUmVjdEZvckFy
ZWFFbGVtZW50QW5kRGlyZWN0aW9uKGFyZWEsIGRpcmVjdGlvbik7CiAgICAgICAgIH0KICAgICB9
CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHAgYi9XZWJD
b3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwCmluZGV4IDQ3MmI1ZjkuLjUwYWIyZmYgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHAKKysrIGIvV2ViQ29y
ZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmNwcApAQCAtNTIsNyArNTIsNyBAQCBzdGF0aWMgYm9v
bCBpc1JlY3RJbkRpcmVjdGlvbihGb2N1c0RpcmVjdGlvbiwgY29uc3QgSW50UmVjdCYsIGNvbnN0
IEludFJlY3QmKTsKIHN0YXRpYyB2b2lkIGRlZmxhdGVJZk92ZXJsYXBwZWQoSW50UmVjdCYsIElu
dFJlY3QmKTsKIHN0YXRpYyBJbnRSZWN0IHJlY3RUb0Fic29sdXRlQ29vcmRpbmF0ZXMoRnJhbWUq
IGluaXRpYWxGcmFtZSwgY29uc3QgSW50UmVjdCYpOwogc3RhdGljIHZvaWQgZW50cnlBbmRFeGl0
UG9pbnRzRm9yRGlyZWN0aW9uKEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgY29uc3QgSW50UmVj
dCYgc3RhcnRpbmdSZWN0LCBjb25zdCBJbnRSZWN0JiBwb3RlbnRpYWxSZWN0LCBJbnRQb2ludCYg
ZXhpdFBvaW50LCBJbnRQb2ludCYgZW50cnlQb2ludCk7Ci1zdGF0aWMgYm9vbCBpc1Njcm9sbGFi
bGVDb250YWluZXJOb2RlKGNvbnN0IE5vZGUqKTsKK3N0YXRpYyBib29sIGlzU2Nyb2xsYWJsZU5v
ZGUoY29uc3QgTm9kZSopOwogCiBGb2N1c0NhbmRpZGF0ZTo6Rm9jdXNDYW5kaWRhdGUoTm9kZSog
bm9kZSwgRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uKQogICAgIDogdmlzaWJsZU5vZGUoMCkKQEAg
LTY2LDYgKzY2LDggQEAgRm9jdXNDYW5kaWRhdGU6OkZvY3VzQ2FuZGlkYXRlKE5vZGUqIG5vZGUs
IEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbikKICAgICAsIGlzT2Zmc2NyZWVuQWZ0ZXJTY3JvbGxp
bmcodHJ1ZSkKIHsKICAgICBBU1NFUlQobm9kZSk7CisgICAgQVNTRVJUKG5vZGUtPmlzRWxlbWVu
dE5vZGUoKSk7CisKICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmFyZWFUYWcp
KSB7CiAgICAgICAgIEhUTUxBcmVhRWxlbWVudCogYXJlYSA9IHN0YXRpY19jYXN0PEhUTUxBcmVh
RWxlbWVudCo+KG5vZGUpOwogICAgICAgICBIVE1MSW1hZ2VFbGVtZW50KiBpbWFnZSA9IGFyZWEt
PmltYWdlRWxlbWVudCgpOwpAQCAtNzMsNyArNzUsNyBAQCBGb2N1c0NhbmRpZGF0ZTo6Rm9jdXND
YW5kaWRhdGUoTm9kZSogbm9kZSwgRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uKQogICAgICAgICAg
ICAgcmV0dXJuOwogCiAgICAgICAgIHZpc2libGVOb2RlID0gaW1hZ2U7Ci0gICAgICAgIHJlY3Qg
PSB2aXJ0dWFsUmVjdEZvckFyZWFFbGVtZW50QW5kRGlyZWN0aW9uKGRpcmVjdGlvbiwgYXJlYSk7
CisgICAgICAgIHJlY3QgPSB2aXJ0dWFsUmVjdEZvckFyZWFFbGVtZW50QW5kRGlyZWN0aW9uKGFy
ZWEsIGRpcmVjdGlvbik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKCFub2RlLT5yZW5kZXJl
cigpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzM2LDcgKzMzOCw3IEBAIGJvb2wgc2Nyb2xs
SW5EaXJlY3Rpb24oRnJhbWUqIGZyYW1lLCBGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAg
ICAgQVNTRVJUKGZyYW1lKTsKIAotICAgIGlmIChmcmFtZSAmJiBjYW5TY3JvbGxJbkRpcmVjdGlv
bihkaXJlY3Rpb24sIGZyYW1lLT5kb2N1bWVudCgpKSkgeworICAgIGlmIChmcmFtZSAmJiBjYW5T
Y3JvbGxJbkRpcmVjdGlvbihmcmFtZS0+ZG9jdW1lbnQoKSwgZGlyZWN0aW9uKSkgewogICAgICAg
ICBpbnQgZHggPSAwOwogICAgICAgICBpbnQgZHkgPSAwOwogICAgICAgICBzd2l0Y2ggKGRpcmVj
dGlvbikgewpAQCAtMzcyLDcgKzM3NCw3IEBAIGJvb2wgc2Nyb2xsSW5EaXJlY3Rpb24oTm9kZSog
Y29udGFpbmVyLCBGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24pCiAgICAgaWYgKCFjb250YWluZXIt
PnJlbmRlckJveCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoY2FuU2Nyb2xs
SW5EaXJlY3Rpb24oZGlyZWN0aW9uLCBjb250YWluZXIpKSB7CisgICAgaWYgKGNhblNjcm9sbElu
RGlyZWN0aW9uKGNvbnRhaW5lciwgZGlyZWN0aW9uKSkgewogICAgICAgICBpbnQgZHggPSAwOwog
ICAgICAgICBpbnQgZHkgPSAwOwogICAgICAgICBzd2l0Y2ggKGRpcmVjdGlvbikgewpAQCAtNDE3
LDE0ICs0MTksMTYgQEAgc3RhdGljIHZvaWQgZGVmbGF0ZUlmT3ZlcmxhcHBlZChJbnRSZWN0JiBh
LCBJbnRSZWN0JiBiKQogICAgICAgICBiLmluZmxhdGUoZGVmbGF0ZUZhY3Rvcik7CiB9CiAKLWJv
b2wgaXNTY3JvbGxhYmxlQ29udGFpbmVyTm9kZShjb25zdCBOb2RlKiBub2RlKQorYm9vbCBpc1Nj
cm9sbGFibGVOb2RlKGNvbnN0IE5vZGUqIG5vZGUpCiB7CisgICAgQVNTRVJUKCFub2RlLT5pc0Rv
Y3VtZW50Tm9kZSgpKTsKKwogICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpKSB7CiAg
ICAgICAgIHJldHVybiAocmVuZGVyZXItPmlzQm94KCkgJiYgdG9SZW5kZXJCb3gocmVuZGVyZXIp
LT5jYW5CZVNjcm9sbGVkQW5kSGFzU2Nyb2xsYWJsZUFyZWEoKQotICAgICAgICAgICAgICYmIG5v
ZGUtPmhhc0NoaWxkTm9kZXMoKSAmJiAhbm9kZS0+aXNEb2N1bWVudE5vZGUoKSk7CisgICAgICAg
ICAgICAgJiYgbm9kZS0+aGFzQ2hpbGROb2RlcygpKTsKICAgICB9CiAKICAgICByZXR1cm4gZmFs
c2U7CkBAIC00MzksMTggKzQ0MywxOCBAQCBOb2RlKiBzY3JvbGxhYmxlRW5jbG9zaW5nQm94T3JQ
YXJlbnRGcmFtZUZvck5vZGVJbkRpcmVjdGlvbihGb2N1c0RpcmVjdGlvbiBkaXJlYwogICAgICAg
ICAgICAgcGFyZW50ID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihwYXJlbnQpLT5kb2N1bWVudCgp
LT5mcmFtZSgpLT5vd25lckVsZW1lbnQoKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcGFy
ZW50ID0gcGFyZW50LT5wYXJlbnROb2RlKCk7Ci0gICAgfSB3aGlsZSAocGFyZW50ICYmICFjYW5T
Y3JvbGxJbkRpcmVjdGlvbihkaXJlY3Rpb24sIHBhcmVudCkgJiYgIXBhcmVudC0+aXNEb2N1bWVu
dE5vZGUoKSk7CisgICAgfSB3aGlsZSAocGFyZW50ICYmICFjYW5TY3JvbGxJbkRpcmVjdGlvbihw
YXJlbnQsIGRpcmVjdGlvbikgJiYgIXBhcmVudC0+aXNEb2N1bWVudE5vZGUoKSk7CiAKICAgICBy
ZXR1cm4gcGFyZW50OwogfQogCi1ib29sIGNhblNjcm9sbEluRGlyZWN0aW9uKEZvY3VzRGlyZWN0
aW9uIGRpcmVjdGlvbiwgY29uc3QgTm9kZSogY29udGFpbmVyKQorYm9vbCBjYW5TY3JvbGxJbkRp
cmVjdGlvbihjb25zdCBOb2RlKiBjb250YWluZXIsIEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbikK
IHsKICAgICBBU1NFUlQoY29udGFpbmVyKTsKICAgICBpZiAoY29udGFpbmVyLT5pc0RvY3VtZW50
Tm9kZSgpKQotICAgICAgICByZXR1cm4gY2FuU2Nyb2xsSW5EaXJlY3Rpb24oZGlyZWN0aW9uLCBz
dGF0aWNfY2FzdDxjb25zdCBEb2N1bWVudCo+KGNvbnRhaW5lciktPmZyYW1lKCkpOworICAgICAg
ICByZXR1cm4gY2FuU2Nyb2xsSW5EaXJlY3Rpb24oc3RhdGljX2Nhc3Q8Y29uc3QgRG9jdW1lbnQq
Pihjb250YWluZXIpLT5mcmFtZSgpLCBkaXJlY3Rpb24pOwogCi0gICAgaWYgKCFpc1Njcm9sbGFi
bGVDb250YWluZXJOb2RlKGNvbnRhaW5lcikpCisgICAgaWYgKCFpc1Njcm9sbGFibGVOb2RlKGNv
bnRhaW5lcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHN3aXRjaCAoZGlyZWN0aW9u
KSB7CkBAIC00NjgsNyArNDcyLDcgQEAgYm9vbCBjYW5TY3JvbGxJbkRpcmVjdGlvbihGb2N1c0Rp
cmVjdGlvbiBkaXJlY3Rpb24sIGNvbnN0IE5vZGUqIGNvbnRhaW5lcikKICAgICB9CiB9CiAKLWJv
b2wgY2FuU2Nyb2xsSW5EaXJlY3Rpb24oRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBjb25zdCBG
cmFtZSogZnJhbWUpCitib29sIGNhblNjcm9sbEluRGlyZWN0aW9uKGNvbnN0IEZyYW1lKiBmcmFt
ZSwgRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAgIGlmICghZnJhbWUtPnZpZXcoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjYwLDcgKzY2NCw3IEBAIGJvb2wgY2FuQmVTY3Jv
bGxlZEludG9WaWV3KEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgY29uc3QgRm9jdXNDYW5kaWRh
dGUmIGNhbmRpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAg
ICAgIGlmIChwYXJlbnROb2RlID09IGNhbmRpZGF0ZS5lbmNsb3NpbmdTY3JvbGxhYmxlQm94KQot
ICAgICAgICAgICAgcmV0dXJuIGNhblNjcm9sbEluRGlyZWN0aW9uKGRpcmVjdGlvbiwgcGFyZW50
Tm9kZSk7CisgICAgICAgICAgICByZXR1cm4gY2FuU2Nyb2xsSW5EaXJlY3Rpb24ocGFyZW50Tm9k
ZSwgZGlyZWN0aW9uKTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC02OTQsNyArNjk4
LDcgQEAgSW50UmVjdCB2aXJ0dWFsUmVjdEZvckRpcmVjdGlvbihGb2N1c0RpcmVjdGlvbiBkaXJl
Y3Rpb24sIGNvbnN0IEludFJlY3QmIHN0YXJ0aW4KICAgICByZXR1cm4gdmlydHVhbFN0YXJ0aW5n
UmVjdDsKIH0KIAotSW50UmVjdCB2aXJ0dWFsUmVjdEZvckFyZWFFbGVtZW50QW5kRGlyZWN0aW9u
KEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgSFRNTEFyZWFFbGVtZW50KiBhcmVhKQorSW50UmVj
dCB2aXJ0dWFsUmVjdEZvckFyZWFFbGVtZW50QW5kRGlyZWN0aW9uKEhUTUxBcmVhRWxlbWVudCog
YXJlYSwgRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAgIEFTU0VSVChhcmVhKTsKICAg
ICBBU1NFUlQoYXJlYS0+aW1hZ2VFbGVtZW50KCkpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdl
L1NwYXRpYWxOYXZpZ2F0aW9uLmggYi9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uaApp
bmRleCBhNmRjZjI0Li45Nzk1ZjI4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5h
dmlnYXRpb24uaAorKysgYi9XZWJDb3JlL3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uaApAQCAtMTM4
LDE1ICsxMzgsMTUgQEAgc3RydWN0IEZvY3VzQ2FuZGlkYXRlIHsKIGJvb2wgaGFzT2Zmc2NyZWVu
UmVjdChOb2RlKiwgRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uID0gRm9jdXNEaXJlY3Rpb25Ob25l
KTsKIGJvb2wgc2Nyb2xsSW5EaXJlY3Rpb24oRnJhbWUqLCBGb2N1c0RpcmVjdGlvbik7CiBib29s
IHNjcm9sbEluRGlyZWN0aW9uKE5vZGUqIGNvbnRhaW5lciwgRm9jdXNEaXJlY3Rpb24pOwotYm9v
bCBjYW5TY3JvbGxJbkRpcmVjdGlvbihGb2N1c0RpcmVjdGlvbiwgY29uc3QgTm9kZSogY29udGFp
bmVyKTsKLWJvb2wgY2FuU2Nyb2xsSW5EaXJlY3Rpb24oRm9jdXNEaXJlY3Rpb24sIGNvbnN0IEZy
YW1lKik7Citib29sIGNhblNjcm9sbEluRGlyZWN0aW9uKGNvbnN0IE5vZGUqIGNvbnRhaW5lciwg
Rm9jdXNEaXJlY3Rpb24pOworYm9vbCBjYW5TY3JvbGxJbkRpcmVjdGlvbihjb25zdCBGcmFtZSos
IEZvY3VzRGlyZWN0aW9uKTsKIGJvb2wgY2FuQmVTY3JvbGxlZEludG9WaWV3KEZvY3VzRGlyZWN0
aW9uLCBjb25zdCBGb2N1c0NhbmRpZGF0ZSYpOwogdm9pZCBkaXN0YW5jZURhdGFGb3JOb2RlKEZv
Y3VzRGlyZWN0aW9uLCBjb25zdCBGb2N1c0NhbmRpZGF0ZSYgY3VycmVudCwgRm9jdXNDYW5kaWRh
dGUmIGNhbmRpZGF0ZSk7CiBOb2RlKiBzY3JvbGxhYmxlRW5jbG9zaW5nQm94T3JQYXJlbnRGcmFt
ZUZvck5vZGVJbkRpcmVjdGlvbihGb2N1c0RpcmVjdGlvbiwgTm9kZSopOwogSW50UmVjdCBub2Rl
UmVjdEluQWJzb2x1dGVDb29yZGluYXRlcyhOb2RlKiwgYm9vbCBpZ25vcmVCb3JkZXIgPSBmYWxz
ZSk7CiBJbnRSZWN0IGZyYW1lUmVjdEluQWJzb2x1dGVDb29yZGluYXRlcyhGcmFtZSopOwogSW50
UmVjdCB2aXJ0dWFsUmVjdEZvckRpcmVjdGlvbihGb2N1c0RpcmVjdGlvbiwgY29uc3QgSW50UmVj
dCYgc3RhcnRpbmdSZWN0LCBpbnQgd2lkdGggPSAwKTsKLUludFJlY3QgdmlydHVhbFJlY3RGb3JB
cmVhRWxlbWVudEFuZERpcmVjdGlvbihGb2N1c0RpcmVjdGlvbiwgSFRNTEFyZWFFbGVtZW50Kik7
CitJbnRSZWN0IHZpcnR1YWxSZWN0Rm9yQXJlYUVsZW1lbnRBbmREaXJlY3Rpb24oSFRNTEFyZWFF
bGVtZW50KiwgRm9jdXNEaXJlY3Rpb24pOwogSFRNTEZyYW1lT3duZXJFbGVtZW50KiBmcmFtZU93
bmVyRWxlbWVudChGb2N1c0NhbmRpZGF0ZSYpOwogCiB9IC8vIG5hbXNwYWNlIFdlYkNvcmUKLS0g
CjEuNy4xCgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>