<?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>62842</bug_id>
          
          <creation_ts>2011-06-16 22:09:57 -0700</creation_ts>
          <short_desc>[EFL] Refactor zoom related APIs.</short_desc>
          <delta_ts>2011-10-09 22:57:05 -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>WebKit EFL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Ryuan Choi">ryuan.choi</reporter>
          <assigned_to name="Ryuan Choi">ryuan.choi</assigned_to>
          <cc>antognolli+webkit</cc>
    
    <cc>barbieri</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hyuki.kim</cc>
    
    <cc>kenneth</cc>
    
    <cc>leandro</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>rakuco</cc>
    
    <cc>sangseok.lim</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>422413</commentid>
    <comment_count>0</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2011-06-16 22:09:57 -0700</bug_when>
    <thetext>I want to use Frame::scalePage for zooming without layout changes.
It will help user experience in mobile domain.

However, WebKit/EFL already have some APIs for zooming.
ewk_frame_zoom_set is for page zoom and text zoom.
ewk_view_zoom_set is same as ewk_frame_zoom_set without moving center coordination.

So, I believe that changing behaviors of ewk_view_zoom_set is better than introducing new APIs.
This will also seperate ewk_view_zoom_set from ewk_frame_zoom_set.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>422420</commentid>
    <comment_count>1</comment_count>
      <attachid>97542</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2011-06-16 22:40:28 -0700</bug_when>
    <thetext>Created attachment 97542
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428390</commentid>
    <comment_count>2</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2011-06-27 15:37:24 -0700</bug_when>
    <thetext>I hope that it replace cairo-scaling.

how do you think about it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428716</commentid>
    <comment_count>3</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-06-28 01:26:40 -0700</bug_when>
    <thetext>You should talk the guy who did the tiling for EFL. Maybe it was Gustavo Barbieri or one of his coworkers.

Do you have any testing system to test if a change like this regress? I think that would be well worth working on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428762</commentid>
    <comment_count>4</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2011-06-28 02:42:35 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; You should talk the guy who did the tiling for EFL. Maybe it was Gustavo Barbieri or one of his coworkers.

Yes, I believe that Rafael Antognolli did it.
I am waiting his or other profusion guy&apos;s comment.

&gt; 
&gt; Do you have any testing system to test if a change like this regress? I think that would be well worth working on.

In this case, it will change behavior of ewk_view_zoom_set.
It is almost similar but it will make different rendered results.
So, I think that it&apos;s not regression area.

Anyway, we have some regression tools for basic behaviors and APIs although it was not enough to open.
(and also I heard that profusion guys are preparing DRT on EFL port.)

Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457671</commentid>
    <comment_count>5</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2011-08-26 11:19:51 -0700</bug_when>
    <thetext>Let&apos;s come back to this one at last.

Having API in ewk_view and ewk_frame with the same name but with different behavior does not sound very sensible to me -- either we make all the calls perform the same type of zoom/scaling, or we change the API to avoid confusions.

As as mentioned before, it&apos;d be good to verify if the math in the patch is also right: all those multiplications were there so that the the page was kept pretty much at the same point after zooming. Does that still happen?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465850</commentid>
    <comment_count>6</comment_count>
      <attachid>97542</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-09-12 15:38:40 -0700</bug_when>
    <thetext>Comment on attachment 97542
Patch

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

&gt; Source/WebKit/efl/ewk/ewk_view.cpp:892
&gt; +    Evas_Coord x, y;

No.  Please use C++.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465862</commentid>
    <comment_count>7</comment_count>
      <attachid>97542</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-09-12 15:42:54 -0700</bug_when>
    <thetext>Comment on attachment 97542
Patch

I am agreeing with Eric here, this code is pretty hard to read and not so WebKit&apos;ish. I understand that you want your public API to be in C, but isn&apos;t it possible to at least have all the private implementations written in C++? And I am also pretty sure that you should be able to replace EINA_FALSE with false without any issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466723</commentid>
    <comment_count>8</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2011-09-13 17:25:07 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Let&apos;s come back to this one at last.
&gt; 
&gt; Having API in ewk_view and ewk_frame with the same name but with different behavior does not sound very sensible to me -- either we make all the calls perform the same type of zoom/scaling, or we change the API to avoid confusions.
&gt; 

Sorry for late answer.

If then, how do you think about removing ewk_view_zoom_set/get and adding ewk_view_scale_set/get?

&gt; As as mentioned before, it&apos;d be good to verify if the math in the patch is also right: all those multiplications were there so that the the page was kept pretty much at the same point after zooming. Does that still happen?

Yes, at least, there are no issues related to position.

(In reply to comment #7)
&gt; (From update of attachment 97542 [details])
&gt; I am agreeing with Eric here, this code is pretty hard to read and not so WebKit&apos;ish. I understand that you want your public API to be in C, but isn&apos;t it possible to at least have all the private implementations written in C++? And I am also pretty sure that you should be able to replace EINA_FALSE with false without any issues.

I tried to keep EFL style for EFL specific files although WebKit style is clear for me.
I&apos;ll prepare patch like you and eric mentioned.

Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467177</commentid>
    <comment_count>9</comment_count>
    <who name="Gustavo Sverzut Barbieri">barbieri</who>
    <bug_when>2011-09-14 11:35:33 -0700</bug_when>
    <thetext>r-

Not everyone is mobile and want to scale page on zoom. How about desktop users that want text-only zoom? How about regular zoom that uses proper font size instead of scaled vectors? Users of low-end hardware, like some TVs will be hurt by such behavior.

Given the way we already do by having &quot;ewk_view_zoom_text_only_set()&quot;, we could remove it and make an enum of zoom modes.

Or introduce another ewk_{view,frame}_zoom_scaled_set() and note that is just applied if text_only is False. Effectively ewk_frame_zoom_set() would become:


    if (sd-&gt;textZoom)
        sd-&gt;frame-&gt;setTextZoomFactor(zoom);
    else if (sd-&gt;scaledZoom)
        sd-&gt;frame-&gt;scalePage(zoom, WebCore::IntPoint(x, y));
    else
        sd-&gt;frame-&gt;setPageZoomFactor(zoom);

ewk_frame_zoom_set() is not widely used (its usage is discouraged for regular users) and thus can start to take x,y parameters if you think it&apos;s necessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467468</commentid>
    <comment_count>10</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2011-09-14 16:37:26 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; r-
&gt; 
&gt; Not everyone is mobile and want to scale page on zoom. How about desktop users that want text-only zoom? How about regular zoom that uses proper font size instead of scaled vectors? Users of low-end hardware, like some TVs will be hurt by such behavior.
&gt; 

I don&apos;t want to remove text-only zoom and page zoom.
scale page is additional feature.

&gt; Given the way we already do by having &quot;ewk_view_zoom_text_only_set()&quot;, we could remove it and make an enum of zoom modes.
&gt; 
&gt; Or introduce another ewk_{view,frame}_zoom_scaled_set() and note that is just applied if text_only is False. Effectively ewk_frame_zoom_set() would become:
&gt; 
&gt; 
&gt;     if (sd-&gt;textZoom)
&gt;         sd-&gt;frame-&gt;setTextZoomFactor(zoom);
&gt;     else if (sd-&gt;scaledZoom)
&gt;         sd-&gt;frame-&gt;scalePage(zoom, WebCore::IntPoint(x, y));
&gt;     else
&gt;         sd-&gt;frame-&gt;setPageZoomFactor(zoom);
&gt; 

Basically, It make sense for me. I&apos;ll do that.

However,
IMO, ewk_view_zoom_text_only_set() limit zoom feature.
For example, we can&apos;t get 2.0 page zoomed and 3.0 text zoomed contents.

I prefer to add enum parameter in ewk_{view, frame}_zoom_get() with removing ewk_view_zoom_text_only_{get,set}().

I know that API changes is not good.
I&apos;ll prepare new patch after getting opinion from webkit-efl mailing list.

&gt; ewk_frame_zoom_set() is not widely used (its usage is discouraged for regular users) and thus can start to take x,y parameters if you think it&apos;s necessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467881</commentid>
    <comment_count>11</comment_count>
    <who name="Gustavo Sverzut Barbieri">barbieri</who>
    <bug_when>2011-09-15 10:05:12 -0700</bug_when>
    <thetext>Page scale is just another way of zooming. Actually it&apos;s the most logical way, just the most inefficient. :-)

Text-zoom is something that goes bit far from what people understand as zoom, but it is very useful for people with eye problems or different media. For instance, viewing a webpage on TV: you can spot icons and such, but hardly you can read a phrase with regular font size and want it doubled or so.

About your proposal: one more parameter to zoom_set() is bad. What do you get when you zoom_get()? Will be confusing for sure!

When I designed zoom_set() to operate on one of actual zoom or text I imagined the user would use just one or another. But as you mentioned the case of using both is reasonable.

If we&apos;re changing our API, why not change it for good and keep 1:1 with WebKit? If so then (with matching getters, of course):

   - ewk_{view,frame}_scale_set(o, factor, center_x, center_y);
   - ewk_{view,frame}_text_zoom_set(o, factor);
   - ewk_{view,frame}_zoom_set(o, factor).

I removed center point from regular zoom as it will not make much sense. Hardly the page contents will match (paragraphs will re-flow, etc) and thus not of much help.

Code in WebKit-EFL will be minimal, just C&lt;-&gt;C++ bridge and the behavior will be consistent. Browsers will need to be changed, but that is very simple.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>478107</commentid>
    <comment_count>12</comment_count>
      <attachid>109727</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2011-10-04 18:43:39 -0700</bug_when>
    <thetext>Created attachment 109727
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>478108</commentid>
    <comment_count>13</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2011-10-04 18:45:28 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Created an attachment (id=109727) [details]
&gt; Patch

I changed patch like gustavo mentioned.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>478135</commentid>
    <comment_count>14</comment_count>
      <attachid>109727</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-10-04 20:21:25 -0700</bug_when>
    <thetext>Comment on attachment 109727
Patch

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

&gt; Source/WebKit/efl/ewk/ewk_view.cpp:1686
&gt; +        priv-&gt;animated_zoom.zoom.start = ewk_view_scale_get(o);

In, Bug 69073, o can be changed with ewkView.

&gt; Source/WebKit/efl/ewk/ewk_view.cpp:1724
&gt; +    cur_zoom = ewk_view_scale_get(o);

ditto.

&gt; Source/WebKit/efl/ewk/ewk_view.cpp:1763
&gt; +    cur_zoom = ewk_view_scale_get(o);

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>478164</commentid>
    <comment_count>15</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2011-10-04 22:08:45 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 109727 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=109727&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_view.cpp:1686
&gt; &gt; +        priv-&gt;animated_zoom.zoom.start = ewk_view_scale_get(o);
&gt; 
&gt; In, Bug 69073, o can be changed with ewkView.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_view.cpp:1724
&gt; &gt; +    cur_zoom = ewk_view_scale_get(o);
&gt; 
&gt; ditto.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_view.cpp:1763
&gt; &gt; +    cur_zoom = ewk_view_scale_get(o);
&gt; 
&gt; ditto.

Right, but I think that this is fine until Bug 69073 merged.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479139</commentid>
    <comment_count>16</comment_count>
      <attachid>109727</attachid>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2011-10-06 07:07:11 -0700</bug_when>
    <thetext>Comment on attachment 109727
Patch

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

Informal r- here.

The ChangeLog is very incomplete -- this patch introduces a lot of changes, and if I were a reviewer who had not been closely paying attention to the whole discussion, I wouldn&apos;t really understand why these changes were made and what exactly is being changed by just looking at the ChangeLog.

Besides that, two separate things are being done at once here -- the refactoring of the APIs and the use of a different zoom method when zooming a view (this change is not mentioned in the ChangeLog at all). I&apos;d rather do them separately.

&gt; Source/WebKit/efl/ChangeLog:32
&gt; +        * ewk/ewk_frame.cpp:
&gt; +        (ewk_frame_text_zoom_get):
&gt; +        (ewk_frame_text_zoom_set):
&gt; +        (ewk_frame_zoom_get):
&gt; +        (ewk_frame_zoom_set):
&gt; +        * ewk/ewk_frame.h:
&gt; +        * ewk/ewk_view.cpp:
&gt; +        (_ewk_view_smart_scale_set):
&gt; +        (_ewk_view_zoom_animator_cb):
&gt; +        (ewk_view_base_smart_set):
&gt; +        (ewk_view_scale_get):
&gt; +        (ewk_view_scale_set):
&gt; +        (ewk_view_text_zoom_get):
&gt; +        (ewk_view_text_zoom_set):
&gt; +        (ewk_view_zoom_get):
&gt; +        (ewk_view_zoom_set):
&gt; +        (ewk_view_zoom_weak_set):
&gt; +        (ewk_view_zoom_animated_set):
&gt; +        (ewk_view_pre_render_region):
&gt; +        (ewk_view_pre_render_relative_radius):
&gt; +        * ewk/ewk_view.h:

You&apos;ve made a lot of changes, please describe them accordingly here.

&gt; Source/WebKit/efl/ewk/ewk_view.cpp:931
&gt; +    x = static_cast&lt;double&gt;(x + cx) / currentScaleFactor * scaleFactor - cx;
&gt; +    y = static_cast&lt;double&gt;(y + cy) / currentScaleFactor * scaleFactor - cy;

Use parentheses in the expressions so we don&apos;t get confused trying to parse the precedence of the operators here.

&gt; Source/WebKit/efl/ewk/ewk_view.cpp:933
&gt; +    priv-&gt;page-&gt;setPageScaleFactor(scaleFactor, WebCore::LayoutPoint(x, y));

Please add the appropriate include for the LayoutPoint typedef.

&gt; Source/WebKit/efl/ewk/ewk_view.cpp:1563
&gt; +float ewk_view_text_zoom_get(const Evas_Object* o)

o -&gt; ewkView?

&gt; Source/WebKit/efl/ewk/ewk_view.cpp:1569
&gt; +Eina_Bool ewk_view_text_zoom_set(Evas_Object* o, float textZoomFactor)

ditto.

&gt; Source/WebKit/efl/ewk/ewk_view.cpp:1575
&gt; +float ewk_view_zoom_get(const Evas_Object* o)

ditto.

&gt; Source/WebKit/efl/ewk/ewk_view.cpp:1581
&gt; +Eina_Bool ewk_view_zoom_set(Evas_Object* o, float zoomFactor)

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479149</commentid>
    <comment_count>17</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2011-10-06 07:33:08 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 109727 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=109727&amp;action=review
&gt; 
&gt; Informal r- here.
&gt; 
&gt; The ChangeLog is very incomplete -- this patch introduces a lot of changes, and if I were a reviewer who had not been closely paying attention to the whole discussion, I wouldn&apos;t really understand why these changes were made and what exactly is being changed by just looking at the ChangeLog.

OK, I&apos;ll try to fill more information.

&gt; 
&gt; Besides that, two separate things are being done at once here -- the refactoring of the APIs and the use of a different zoom method when zooming a view (this change is not mentioned in the ChangeLog at all). I&apos;d rather do them separately.

Agree.
If then, I can split this -- 1) Refactoring current zoom related APIs. 2) Introduce ewk_view_scale_{get|set} and change zoom method when zooming a view.

I&apos;ll update first one.

&gt; 
&gt; &gt; Source/WebKit/efl/ChangeLog:32
&gt; &gt; +        * ewk/ewk_frame.cpp:
&gt; &gt; +        (ewk_frame_text_zoom_get):
&gt; &gt; +        (ewk_frame_text_zoom_set):
&gt; &gt; +        (ewk_frame_zoom_get):
&gt; &gt; +        (ewk_frame_zoom_set):
&gt; &gt; +        * ewk/ewk_frame.h:
&gt; &gt; +        * ewk/ewk_view.cpp:
&gt; &gt; +        (_ewk_view_smart_scale_set):
&gt; &gt; +        (_ewk_view_zoom_animator_cb):
&gt; &gt; +        (ewk_view_base_smart_set):
&gt; &gt; +        (ewk_view_scale_get):
&gt; &gt; +        (ewk_view_scale_set):
&gt; &gt; +        (ewk_view_text_zoom_get):
&gt; &gt; +        (ewk_view_text_zoom_set):
&gt; &gt; +        (ewk_view_zoom_get):
&gt; &gt; +        (ewk_view_zoom_set):
&gt; &gt; +        (ewk_view_zoom_weak_set):
&gt; &gt; +        (ewk_view_zoom_animated_set):
&gt; &gt; +        (ewk_view_pre_render_region):
&gt; &gt; +        (ewk_view_pre_render_relative_radius):
&gt; &gt; +        * ewk/ewk_view.h:
&gt; 
&gt; You&apos;ve made a lot of changes, please describe them accordingly here.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_view.cpp:931
&gt; &gt; +    x = static_cast&lt;double&gt;(x + cx) / currentScaleFactor * scaleFactor - cx;
&gt; &gt; +    y = static_cast&lt;double&gt;(y + cy) / currentScaleFactor * scaleFactor - cy;
&gt; 
&gt; Use parentheses in the expressions so we don&apos;t get confused trying to parse the precedence of the operators here.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_view.cpp:933
&gt; &gt; +    priv-&gt;page-&gt;setPageScaleFactor(scaleFactor, WebCore::LayoutPoint(x, y));
&gt; 
&gt; Please add the appropriate include for the LayoutPoint typedef.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_view.cpp:1563
&gt; &gt; +float ewk_view_text_zoom_get(const Evas_Object* o)
&gt; 
&gt; o -&gt; ewkView?
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_view.cpp:1569
&gt; &gt; +Eina_Bool ewk_view_text_zoom_set(Evas_Object* o, float textZoomFactor)
&gt; 
&gt; ditto.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_view.cpp:1575
&gt; &gt; +float ewk_view_zoom_get(const Evas_Object* o)
&gt; 
&gt; ditto.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_view.cpp:1581
&gt; &gt; +Eina_Bool ewk_view_zoom_set(Evas_Object* o, float zoomFactor)
&gt; 
&gt; ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479159</commentid>
    <comment_count>18</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2011-10-06 07:53:11 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; Agree.
&gt; If then, I can split this -- 1) Refactoring current zoom related APIs. 2) Introduce ewk_view_scale_{get|set} and change zoom method when zooming a view.

I&apos;m OK with introducing the scale functions in 1) (I even think it makes more sense), it&apos;s just the behaviour change in the smart zoom function that should be done separately.

BTW, you guys were discussing the naming some time ago. IMO, ewk_{frame,view}_{page_zoom,text_zoom,page_scale}_{get,set} look good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479306</commentid>
    <comment_count>19</comment_count>
      <attachid>109981</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2011-10-06 11:17:34 -0700</bug_when>
    <thetext>Created attachment 109981
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479327</commentid>
    <comment_count>20</comment_count>
      <attachid>109981</attachid>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2011-10-06 11:36:22 -0700</bug_when>
    <thetext>Comment on attachment 109981
Patch

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

&gt; Source/WebKit/efl/ChangeLog:11
&gt; +        In addition, introduce ewk_view_scale_{get|set} to support proportioanl scaling.

proportioanl -&gt; proportional

&gt; Source/WebKit/efl/ChangeLog:13
&gt; +        ewk_view_zoom_{get|set} will be remained until the behavior of smart_zoom

will be remained -&gt; will remain unchanged

&gt; Source/WebKit/efl/ChangeLog:36
&gt; +        (ewk_view_zoom_weak_set):
&gt; +        (ewk_view_zoom_animated_set):
&gt; +        (ewk_view_pre_render_region):
&gt; +        (ewk_view_pre_render_relative_radius):

It&apos;d be nice to indicate what&apos;s changed in these functions.

&gt; Source/WebKit/efl/ewk/ewk_view.cpp:1605
&gt; +    x = (static_cast&lt;double&gt;(x + cx) / currentScaleFactor * scaleFactor) - cx;
&gt; +    y = (static_cast&lt;double&gt;(y + cy) / currentScaleFactor * scaleFactor) - cy;

Please also add another level of parentheses to indicate the precedence order between &apos;/&apos; and &apos;*&apos;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479664</commentid>
    <comment_count>21</comment_count>
      <attachid>110067</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2011-10-06 17:28:03 -0700</bug_when>
    <thetext>Created attachment 110067
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479666</commentid>
    <comment_count>22</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2011-10-06 17:32:18 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; (From update of attachment 109981 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=109981&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/efl/ChangeLog:11
&gt; &gt; +        In addition, introduce ewk_view_scale_{get|set} to support proportioanl scaling.
&gt; 
&gt; proportioanl -&gt; proportional
Sorry for the typo. fixed.

&gt; 
&gt; &gt; Source/WebKit/efl/ChangeLog:13
&gt; &gt; +        ewk_view_zoom_{get|set} will be remained until the behavior of smart_zoom
&gt; 
&gt; will be remained -&gt; will remain unchanged
fixed.

&gt; 
&gt; &gt; Source/WebKit/efl/ChangeLog:36
&gt; &gt; +        (ewk_view_zoom_weak_set):
&gt; &gt; +        (ewk_view_zoom_animated_set):
&gt; &gt; +        (ewk_view_pre_render_region):
&gt; &gt; +        (ewk_view_pre_render_relative_radius):
&gt; 
&gt; It&apos;d be nice to indicate what&apos;s changed in these functions.
Done.

&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_view.cpp:1605
&gt; &gt; +    x = (static_cast&lt;double&gt;(x + cx) / currentScaleFactor * scaleFactor) - cx;
&gt; &gt; +    y = (static_cast&lt;double&gt;(y + cy) / currentScaleFactor * scaleFactor) - cy;
&gt; 
&gt; Please also add another level of parentheses to indicate the precedence order between &apos;/&apos; and &apos;*&apos;.

I&apos;m not sure that many parentheses help readability.
But fixed like you mentioned.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479674</commentid>
    <comment_count>23</comment_count>
      <attachid>110067</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-10-06 17:56:06 -0700</bug_when>
    <thetext>Comment on attachment 110067
Patch

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

&gt; Source/WebKit/efl/ewk/ewk_view.cpp:1604
&gt; +    x = ((static_cast&lt;double&gt;(x + cx) / currentScaleFactor) * scaleFactor) - cx;

Why do you cast data type as &apos;double&apos; ? currentScaleFactor and scaleFactor are float. In addition, are you sure a cast isn&apos;t required here to force integer point arithmetic?

&gt; Source/WebKit/efl/ewk/ewk_view.cpp:1605
&gt; +    y = ((static_cast&lt;double&gt;(y + cy) / currentScaleFactor) * scaleFactor) - cy;

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479685</commentid>
    <comment_count>24</comment_count>
      <attachid>110071</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2011-10-06 18:16:49 -0700</bug_when>
    <thetext>Created attachment 110071
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479688</commentid>
    <comment_count>25</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2011-10-06 18:18:16 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; (From update of attachment 110067 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=110067&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_view.cpp:1604
&gt; &gt; +    x = ((static_cast&lt;double&gt;(x + cx) / currentScaleFactor) * scaleFactor) - cx;
&gt; 
&gt; Why do you cast data type as &apos;double&apos; ? currentScaleFactor and scaleFactor are float. In addition, are you sure a cast isn&apos;t required here to force integer point arithmetic?
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_view.cpp:1605
&gt; &gt; +    y = ((static_cast&lt;double&gt;(y + cy) / currentScaleFactor) * scaleFactor) - cy;
&gt; 
&gt; ditto.

Right, I removed casting.
Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479708</commentid>
    <comment_count>26</comment_count>
      <attachid>110071</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-10-06 18:44:31 -0700</bug_when>
    <thetext>Comment on attachment 110071
Patch

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

&gt; Source/WebKit/efl/ewk/ewk_view.cpp:1604
&gt; +    x = (((x + cx) / currentScaleFactor) * scaleFactor) - cx;

AFAIK, Evas_Coord is int type. So, I think that (((x + cx) / currentScaleFactor) * scaleFactor) is floating type. Should we cast  (((x + cx) / currentScaleFactor) * scaleFactor) to int explicitly as below ?
static_cast&lt;int&gt;(((x + cx) / currentScaleFactor) * scaleFactor) - cx

&gt; Source/WebKit/efl/ewk/ewk_view.cpp:1605
&gt; +    y = (((y + cy) / currentScaleFactor) * scaleFactor) - cy;

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479718</commentid>
    <comment_count>27</comment_count>
      <attachid>110076</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2011-10-06 18:56:23 -0700</bug_when>
    <thetext>Created attachment 110076
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479719</commentid>
    <comment_count>28</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2011-10-06 18:57:33 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; (From update of attachment 110071 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=110071&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_view.cpp:1604
&gt; &gt; +    x = (((x + cx) / currentScaleFactor) * scaleFactor) - cx;
&gt; 
&gt; AFAIK, Evas_Coord is int type. So, I think that (((x + cx) / currentScaleFactor) * scaleFactor) is floating type. Should we cast  (((x + cx) / currentScaleFactor) * scaleFactor) to int explicitly as below ?
&gt; static_cast&lt;int&gt;(((x + cx) / currentScaleFactor) * scaleFactor) - cx
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_view.cpp:1605
&gt; &gt; +    y = (((y + cy) / currentScaleFactor) * scaleFactor) - cy;
&gt; 
&gt; ditto.

Thanks, done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479726</commentid>
    <comment_count>29</comment_count>
      <attachid>110076</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-10-06 19:13:07 -0700</bug_when>
    <thetext>Comment on attachment 110076
Patch

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

&gt; Source/WebKit/efl/ewk/ewk_view.h:991
&gt; +EAPI Eina_Bool    ewk_view_page_zoom_set(Evas_Object *o, float pageZoomFactor);

We are using efl coding style in public APIs despite some APIs don&apos;t adhere this rule. So, I think pageZoomFactor need to be changed with page_zoom_factor. Of course, variable name is gonna be discussed as one of coding style change.

&gt; Source/WebKit/efl/ewk/ewk_view.h:1031
&gt; +EAPI Eina_Bool    ewk_view_text_zoom_set(Evas_Object *o, float textZoomFactor);

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479764</commentid>
    <comment_count>30</comment_count>
      <attachid>110086</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2011-10-06 20:37:44 -0700</bug_when>
    <thetext>Created attachment 110086
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479766</commentid>
    <comment_count>31</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2011-10-06 20:40:38 -0700</bug_when>
    <thetext>(In reply to comment #29)
&gt; (From update of attachment 110076 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=110076&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_view.h:991
&gt; &gt; +EAPI Eina_Bool    ewk_view_page_zoom_set(Evas_Object *o, float pageZoomFactor);
&gt; 
&gt; We are using efl coding style in public APIs despite some APIs don&apos;t adhere this rule. So, I think pageZoomFactor need to be changed with page_zoom_factor. Of course, variable name is gonna be discussed as one of coding style change.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_view.h:1031
&gt; &gt; +EAPI Eina_Bool    ewk_view_text_zoom_set(Evas_Object *o, float textZoomFactor);
&gt; 
&gt; ditto.

OK, fixed.
For me, pageZoomFactor looks better.
But, as you mentioned, it can be covered as other issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479795</commentid>
    <comment_count>32</comment_count>
      <attachid>110086</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-10-06 22:28:40 -0700</bug_when>
    <thetext>Comment on attachment 110086
Patch

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479953</commentid>
    <comment_count>33</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2011-10-07 05:55:09 -0700</bug_when>
    <thetext>Informal r+ from my side too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480833</commentid>
    <comment_count>34</comment_count>
      <attachid>110086</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-09 22:56:58 -0700</bug_when>
    <thetext>Comment on attachment 110086
Patch

Clearing flags on attachment: 110086

Committed r97043: &lt;http://trac.webkit.org/changeset/97043&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480834</commentid>
    <comment_count>35</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-09 22:57:05 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97542</attachid>
            <date>2011-06-16 22:40:28 -0700</date>
            <delta_ts>2011-10-04 18:43:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62842-20110617144006.patch</filename>
            <type>text/plain</type>
            <size>4539</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODkxMTUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZs
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCAxZWUxNDUzZjdj
ZTE5ZjMwOTE3ODFlNjJmYjkwNTQ1ZWE5NTE3Y2ZkLi44MzU0YjQ0MTUwZmZlMGUxZTJjZTYzZjA4
MmE1MjE2ODA4NzA3ODdlIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEt
MDYtMTYgIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtFRkxdIENoYW5nZSBiZWhhdmlv
ciBvZiBld2tfdmlld196b29tX2dldC9zZXQgdG8gY2FsbCBGcmFtZTo6c2NhbGVQYWdlLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjI4NDIKKworICAg
ICAgICBOZXdseSBpbXBsZW1lbnQgZXdrX3ZpZXdfem9vbV9nZXQgYW5kIF9ld2tfdmlld19zbWFy
dF96b29tX3NldCB1c2luZworICAgICAgICBGcmFtZTo6c2NhbGVQYWdlIHRvIGtlZXAgc2FtZSBw
b3NpdGlvbiBmcm9tICh4LHkpIGFmdGVyIHpvb21lZC4KKworICAgICAgICAqIGV3ay9ld2tfdmll
dy5jcHA6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfem9vbV9zZXQpOgorICAgICAgICAoZXdr
X3ZpZXdfem9vbV9nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfem9vbV93ZWFrX3NldCk6IENoYW5n
ZSBld2tfZnJhbWVfem9vbV9nZXQgdG8gZXdrX3ZpZXdfem9vbV9nZXQuCisgICAgICAgIChld2tf
dmlld196b29tX2FuaW1hdGVkX3NldCk6IERpdHRvLgorICAgICAgICAoZXdrX3ZpZXdfcHJlX3Jl
bmRlcl9yZWdpb24pOiBEaXR0by4KKyAgICAgICAgKGV3a192aWV3X3ByZV9yZW5kZXJfcmVsYXRp
dmVfcmFkaXVzKTogRGl0dG8uCisKIDIwMTEtMDYtMTUgIEdyemVnb3J6IEN6YWprb3dza2kgIDxn
LmN6YWprb3dza2lAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW50b25pbyBH
b21lcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAgYi9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCmluZGV4IGJkZWE4NGQyMTQzZGJkNjAy
OWFhOTJlZjE5ZjY1NjkzZTY1NWE1NTMuLmUzMTU2MWYxZTJlZDIzMDE2MWY5NjgxYzRhNDczYzll
NjcyYjZjNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcApAQCAtODg0LDMwICs4ODQs
MTkgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfY29udGVudHNfcmVzaXplKEV3
a19WaWV3X1NtYXJ0X0RhdGEqIHNkLCBpbnQgdywKIAogc3RhdGljIEVpbmFfQm9vbCBfZXdrX3Zp
ZXdfc21hcnRfem9vbV9zZXQoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QsIGZsb2F0IHpvb20sIEV2
YXNfQ29vcmQgY3gsIEV2YXNfQ29vcmQgY3kpCiB7Ci0gICAgZG91YmxlIHB4LCBweTsKLSAgICBF
dmFzX0Nvb3JkIHgsIHksIHcsIGg7Ci0gICAgRWluYV9Cb29sIHJldDsKKyAgICBFV0tfVklFV19Q
UklWX0dFVF9PUl9SRVRVUk4oc2QsIHByaXYsIEVJTkFfRkFMU0UpOworICAgIGZsb2F0IGN1cl96
b29tID0gZXdrX3ZpZXdfem9vbV9nZXQoc2QtPnNlbGYpOworICAgIGlmIChjdXJfem9vbSA9PSAt
MS4wZikKKyAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CiAKLSAgICBld2tfZnJhbWVfc2Nyb2xs
X3NpemVfZ2V0KHNkLT5tYWluX2ZyYW1lLCAmdywgJmgpOworICAgIEV2YXNfQ29vcmQgeCwgeTsK
ICAgICBld2tfZnJhbWVfc2Nyb2xsX3Bvc19nZXQoc2QtPm1haW5fZnJhbWUsICZ4LCAmeSk7CiAK
LSAgICBpZiAodyArIHNkLT52aWV3LncgPiAwKQotICAgICAgICBweCA9IChkb3VibGUpKHggKyBj
eCkgLyAodyArIHNkLT52aWV3LncpOwotICAgIGVsc2UKLSAgICAgICAgcHggPSAwLjA7Ci0KLSAg
ICBpZiAoaCArIHNkLT52aWV3LmggPiAwKQotICAgICAgICBweSA9IChkb3VibGUpKHkgKyBjeSkg
LyAoaCArIHNkLT52aWV3LmgpOwotICAgIGVsc2UKLSAgICAgICAgcHkgPSAwLjA7Ci0KLSAgICBy
ZXQgPSBld2tfZnJhbWVfem9vbV9zZXQoc2QtPm1haW5fZnJhbWUsIHpvb20pOworICAgIHggPSAo
ZG91YmxlKSh4ICsgY3gpIC8gY3VyX3pvb20gKiB6b29tIC0gY3g7CisgICAgeSA9IChkb3VibGUp
KHkgKyBjeSkgLyBjdXJfem9vbSAqIHpvb20gLSBjeTsKIAotICAgIGV3a19mcmFtZV9zY3JvbGxf
c2l6ZV9nZXQoc2QtPm1haW5fZnJhbWUsICZ3LCAmaCk7Ci0gICAgeCA9ICh3ICsgc2QtPnZpZXcu
dykgKiBweCAtIGN4OwotICAgIHkgPSAoaCArIHNkLT52aWV3LmgpICogcHkgLSBjeTsKLSAgICBl
d2tfZnJhbWVfc2Nyb2xsX3NldChzZC0+bWFpbl9mcmFtZSwgeCwgeSk7Ci0gICAgcmV0dXJuIHJl
dDsKKyAgICBwcml2LT5tYWluX2ZyYW1lLT5zY2FsZVBhZ2Uoem9vbSwgV2ViQ29yZTo6SW50UG9p
bnQoeCwgeSkpOworICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKIHN0YXRpYyB2b2lkIF9ld2tf
dmlld19zbWFydF9mbHVzaChFd2tfVmlld19TbWFydF9EYXRhKiBzZCkKQEAgLTE4MzUsOCArMTgy
NCwxMCBAQCBFd2tfSGlzdG9yeSogZXdrX3ZpZXdfaGlzdG9yeV9nZXQoY29uc3QgRXZhc19PYmpl
Y3QqIG8pCiAgKi8KIGZsb2F0IGV3a192aWV3X3pvb21fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBv
KQogewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIC0xLjApOwotICAgIHJl
dHVybiBld2tfZnJhbWVfem9vbV9nZXQoc2QtPm1haW5fZnJhbWUpOworICAgIEVXS19WSUVXX1NE
X0dFVF9PUl9SRVRVUk4obywgc2QsIC0xLjBmKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9S
RVRVUk4oc2QsIHByaXYsIC0xLjBmKTsKKworICAgIHJldHVybiBwcml2LT5tYWluX2ZyYW1lLT5w
YWdlU2NhbGVGYWN0b3IoKTsKIH0KIAogLyoqCkBAIC0xOTQxLDcgKzE5MzIsNyBAQCBFaW5hX0Jv
b2wgZXdrX3ZpZXdfem9vbV93ZWFrX3NldChFdmFzX09iamVjdCogbywgZmxvYXQgem9vbSwgRXZh
c19Db29yZCBjeCwgRXZhcwogICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKICAgICB9CiAKLSAg
ICBzZC0+YW5pbWF0ZWRfem9vbS56b29tLnN0YXJ0ID0gZXdrX2ZyYW1lX3pvb21fZ2V0KHNkLT5t
YWluX2ZyYW1lKTsKKyAgICBzZC0+YW5pbWF0ZWRfem9vbS56b29tLnN0YXJ0ID0gZXdrX3ZpZXdf
em9vbV9nZXQobyk7CiAgICAgc2QtPmFuaW1hdGVkX3pvb20uem9vbS5lbmQgPSB6b29tOwogICAg
IHNkLT5hbmltYXRlZF96b29tLnpvb20uY3VycmVudCA9IHpvb207CiAgICAgcmV0dXJuIHNkLT5h
cGktPnpvb21fd2Vha19zZXQoc2QsIHpvb20sIGN4LCBjeSk7CkBAIC0yMDg4LDcgKzIwNzksNyBA
QCBFaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9zZXQoRXZhc19PYmplY3QqIG8sIGZs
b2F0IHpvb20sIGZsb2F0IGR1cmF0aW9uLAogICAgIGlmIChwcml2LT5hbmltYXRlZF96b29tLmFu
aW1hdG9yKQogICAgICAgICBwcml2LT5hbmltYXRlZF96b29tLnpvb20uc3RhcnQgPSBfZXdrX3Zp
ZXdfem9vbV9hbmltYXRlZF9jdXJyZW50KHByaXYpOwogICAgIGVsc2UgewotICAgICAgICBwcml2
LT5hbmltYXRlZF96b29tLnpvb20uc3RhcnQgPSBld2tfZnJhbWVfem9vbV9nZXQoc2QtPm1haW5f
ZnJhbWUpOworICAgICAgICBwcml2LT5hbmltYXRlZF96b29tLnpvb20uc3RhcnQgPSBld2tfdmll
d196b29tX2dldChvKTsKICAgICAgICAgX2V3a192aWV3X3pvb21fYW5pbWF0aW9uX3N0YXJ0KHNk
KTsKICAgICB9CiAKQEAgLTIxODEsNyArMjE3Miw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19wcmVf
cmVuZGVyX3JlZ2lvbihFdmFzX09iamVjdCogbywgRXZhc19Db29yZCB4LCBFdmFzX0Nvb3JkIHks
CiAgICAgaWYgKHByaXYtPmFuaW1hdGVkX3pvb20uYW5pbWF0b3IpCiAgICAgICAgIHJldHVybiBF
SU5BX0ZBTFNFOwogCi0gICAgY3VyX3pvb20gPSBld2tfZnJhbWVfem9vbV9nZXQoc2QtPm1haW5f
ZnJhbWUpOworICAgIGN1cl96b29tID0gZXdrX3ZpZXdfem9vbV9nZXQobyk7CiAKICAgICBpZiAo
Y3VyX3pvb20gPCAwLjAwMDAxKQogICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKQEAgLTIyMzUs
NyArMjIyNiw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19wcmVfcmVuZGVyX3JlbGF0aXZlX3JhZGl1
cyhFdmFzX09iamVjdCogbywgdW5zaWduZWQgaW50IG4pCiAgICAgaWYgKHByaXYtPmFuaW1hdGVk
X3pvb20uYW5pbWF0b3IpCiAgICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOwogCi0gICAgY3VyX3pv
b20gPSBld2tfZnJhbWVfem9vbV9nZXQoc2QtPm1haW5fZnJhbWUpOworICAgIGN1cl96b29tID0g
ZXdrX3ZpZXdfem9vbV9nZXQobyk7CiAgICAgcmV0dXJuIHNkLT5hcGktPnByZV9yZW5kZXJfcmVs
YXRpdmVfcmFkaXVzKHNkLCBuLCBjdXJfem9vbSk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109727</attachid>
            <date>2011-10-04 18:43:39 -0700</date>
            <delta_ts>2011-10-06 11:17:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62842-20111005104337.patch</filename>
            <type>text/plain</type>
            <size>19271</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTY2NjgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZs
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCBjN2Q1OTljNTJk
ZmQ2MDgxZTBmOTBmODc4Njk2NDI1MDk4OWZiN2UxLi5mZWRlMGRiNGU0ZGU3YTkzNGEwZGU1Njdh
ZDQxMWM4OTVlZTJhMzg4IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTEt
MTAtMDQgIENob2kgUnl1YW4gIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtF
RkxdIFJlZmFjdG9yIHpvb20gcmVsYXRlZCBBUElzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjI4NDIKKworICAgICAgICBSZXBsYWNlIGV3a197dmll
d3xmcmFtZX1fem9vbV90ZXh0X29ubHlfe2dldHxzZXR9IHRvIGV3a197dmlld3xmcmFtZX1fdGV4
dF96b29tX3tnZXR8c2V0fQorICAgICAgICBhbmQgaW50cm9kdWNlIGV3a192aWV3X3NjYWxlX3tn
ZXR8c2V0fSB0byBzdXBwb3J0IGFsbCB6b29tIGZlYXR1cmVzCisgICAgICAgIG9mIHdlYmtpdC4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGV3ay9l
d2tfZnJhbWUuY3BwOgorICAgICAgICAoZXdrX2ZyYW1lX3RleHRfem9vbV9nZXQpOgorICAgICAg
ICAoZXdrX2ZyYW1lX3RleHRfem9vbV9zZXQpOgorICAgICAgICAoZXdrX2ZyYW1lX3pvb21fZ2V0
KToKKyAgICAgICAgKGV3a19mcmFtZV96b29tX3NldCk6CisgICAgICAgICogZXdrL2V3a19mcmFt
ZS5oOgorICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6CisgICAgICAgIChfZXdrX3ZpZXdfc21h
cnRfc2NhbGVfc2V0KToKKyAgICAgICAgKF9ld2tfdmlld196b29tX2FuaW1hdG9yX2NiKToKKyAg
ICAgICAgKGV3a192aWV3X2Jhc2Vfc21hcnRfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3NjYWxl
X2dldCk6CisgICAgICAgIChld2tfdmlld19zY2FsZV9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdf
dGV4dF96b29tX2dldCk6CisgICAgICAgIChld2tfdmlld190ZXh0X3pvb21fc2V0KToKKyAgICAg
ICAgKGV3a192aWV3X3pvb21fZ2V0KToKKyAgICAgICAgKGV3a192aWV3X3pvb21fc2V0KToKKyAg
ICAgICAgKGV3a192aWV3X3pvb21fd2Vha19zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfem9vbV9h
bmltYXRlZF9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfcHJlX3JlbmRlcl9yZWdpb24pOgorICAg
ICAgICAoZXdrX3ZpZXdfcHJlX3JlbmRlcl9yZWxhdGl2ZV9yYWRpdXMpOgorICAgICAgICAqIGV3
ay9ld2tfdmlldy5oOgorCiAyMDExLTEwLTA0ICBSw6ltaSBEdXJhZmZvcnQgIDxyZW1pLmR1cmFm
Zm9ydEBzdC5jb20+CiAKICAgICAgICAgW0VGTF0gRml4IGNvbXBpbGF0aW9uIHdoZW4gU1FMaXRl
IGFuZC9vciBsaWJ4c2x0IGFyZSBub3QgaW5zdGFsbGVkIGluIC91c3IvaW5jbHVkZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX2ZyYW1lLmNwcAppbmRleCBiYzhmOGFlNjZlM2U2OGE3MzA1ZWFmYTFmOWM5
MjM5NDg2MmY1OTFhLi41NmNhNjQwODZiNTJmZTE0MGYxNWMzYTE1ZDBkYzNiZWRmODY0ZTAwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcApAQCAtNzUsNyArNzUsNiBAQCBzdHJ1Y3Qg
RXdrX0ZyYW1lX1NtYXJ0X0RhdGEgewogICAgIHN0cnVjdCB7CiAgICAgICAgIEV2YXNfQ29vcmQg
dywgaDsKICAgICB9IGNvbnRlbnRzX3NpemU7Ci0gICAgRWluYV9Cb29sIHRleHRab29tIDogMTsK
ICAgICBFaW5hX0Jvb2wgZWRpdGFibGUgOiAxOwogfTsKIApAQCAtNjEyLDQ2ICs2MTEsMzMgQEAg
RWluYV9Cb29sIGV3a19mcmFtZV9uYXZpZ2F0ZV9wb3NzaWJsZShFdmFzX09iamVjdCogbywgaW50
IHN0ZXBzKQogICAgIHJldHVybiBwYWdlLT5jYW5Hb0JhY2tPckZvcndhcmQoc3RlcHMpOwogfQog
Ci1mbG9hdCBld2tfZnJhbWVfem9vbV9nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCitmbG9hdCBl
d2tfZnJhbWVfdGV4dF96b29tX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrRnJhbWUpCiB7Ci0g
ICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIC0xLjApOworICAgIEVXS19GUkFN
RV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzZCwgLTEuMCk7CiAgICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk5fVkFMKHNkLT5mcmFtZSwgLTEuMCk7Ci0KLSAgICBpZiAoc2QtPnRleHRa
b29tKQotICAgICAgICByZXR1cm4gc2QtPmZyYW1lLT50ZXh0Wm9vbUZhY3RvcigpOwotICAgIHJl
dHVybiBzZC0+ZnJhbWUtPnBhZ2Vab29tRmFjdG9yKCk7CisgICAgcmV0dXJuIHNkLT5mcmFtZS0+
dGV4dFpvb21GYWN0b3IoKTsKIH0KIAotRWluYV9Cb29sIGV3a19mcmFtZV96b29tX3NldChFdmFz
X09iamVjdCogbywgZmxvYXQgem9vbSkKK0VpbmFfQm9vbCBld2tfZnJhbWVfdGV4dF96b29tX3Nl
dChFdmFzX09iamVjdCogZXdrRnJhbWUsIGZsb2F0IHRleHRab29tRmFjdG9yKQogewotICAgIEVX
S19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKKyAgICBFV0tfRlJB
TUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc2QsIEVJTkFfRkFMU0UpOwogICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+ZnJhbWUsIEVJTkFfRkFMU0UpOwotICAgIGlm
IChzZC0+dGV4dFpvb20pCi0gICAgICAgIHNkLT5mcmFtZS0+c2V0VGV4dFpvb21GYWN0b3Ioem9v
bSk7Ci0gICAgZWxzZQotICAgICAgICBzZC0+ZnJhbWUtPnNldFBhZ2Vab29tRmFjdG9yKHpvb20p
OworICAgIHNkLT5mcmFtZS0+c2V0VGV4dFpvb21GYWN0b3IodGV4dFpvb21GYWN0b3IpOwogICAg
IHJldHVybiBFSU5BX1RSVUU7CiB9CiAKLUVpbmFfQm9vbCBld2tfZnJhbWVfem9vbV90ZXh0X29u
bHlfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQorZmxvYXQgZXdrX2ZyYW1lX3pvb21fZ2V0KGNv
bnN0IEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKIHsKLSAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JF
VFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7Ci0gICAgcmV0dXJuIHNkLT50ZXh0Wm9vbTsKKyAgICBF
V0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc2QsIC0xLjApOworICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+ZnJhbWUsIC0xLjApOworICAgIHJldHVybiBz
ZC0+ZnJhbWUtPnBhZ2Vab29tRmFjdG9yKCk7CiB9CiAKLUVpbmFfQm9vbCBld2tfZnJhbWVfem9v
bV90ZXh0X29ubHlfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgc2V0dGluZykKK0VpbmFf
Qm9vbCBld2tfZnJhbWVfem9vbV9zZXQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBmbG9hdCB6b29t
RmFjdG9yKQogewotICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZB
TFNFKTsKKyAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc2QsIEVJTkFf
RkFMU0UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+ZnJhbWUsIEVJ
TkFfRkFMU0UpOwotICAgIGlmIChzZC0+dGV4dFpvb20gPT0gc2V0dGluZykKLSAgICAgICAgcmV0
dXJuIEVJTkFfVFJVRTsKLQotICAgIGZsb2F0IHpvb21fbGV2ZWwgPSBzZC0+dGV4dFpvb20gPyBz
ZC0+ZnJhbWUtPnRleHRab29tRmFjdG9yKCkgOiBzZC0+ZnJhbWUtPnBhZ2Vab29tRmFjdG9yKCk7
Ci0gICAgc2QtPnRleHRab29tID0gc2V0dGluZzsKLSAgICBpZiAoc2QtPnRleHRab29tKQotICAg
ICAgICBzZC0+ZnJhbWUtPnNldFBhZ2VBbmRUZXh0Wm9vbUZhY3RvcnMoMSwgem9vbV9sZXZlbCk7
Ci0gICAgZWxzZQotICAgICAgICBzZC0+ZnJhbWUtPnNldFBhZ2VBbmRUZXh0Wm9vbUZhY3RvcnMo
em9vbV9sZXZlbCwgMSk7CisgICAgc2QtPmZyYW1lLT5zZXRQYWdlWm9vbUZhY3Rvcih6b29tRmFj
dG9yKTsKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2VmbC9ld2svZXdrX2ZyYW1lLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1l
LmgKaW5kZXggNjYyYjBkNWE2ZTBmMGNkM2MzYjE4NjE0YzQ3NDljZmQyYzY3YmI3MC4uZTdlNTVm
YTlmNDk4NTNiYTg4NjVlOTFmNDhmZDlmOWM2MTM5N2YxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a19mcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
ZnJhbWUuaApAQCAtNTIwLDQ0ICs1MjAsNTAgQEAgRUFQSSBFaW5hX0Jvb2wgICAgZXdrX2ZyYW1l
X2ZvcndhcmRfcG9zc2libGUoRXZhc19PYmplY3QgKm8pOwogRUFQSSBFaW5hX0Jvb2wgICAgZXdr
X2ZyYW1lX25hdmlnYXRlX3Bvc3NpYmxlKEV2YXNfT2JqZWN0ICpvLCBpbnQgc3RlcHMpOwogCiAv
KioKLSAqIEdldHMgdGhlIGN1cnJlbnQgem9vbSBsZXZlbCB1c2VkIGJ5IHRoaXMgZnJhbWUuCisg
KiBHZXRzIHRoZSBjdXJyZW50IHRleHQgem9vbSBsZXZlbCB1c2VkIGJ5IHRoaXMgZnJhbWUuCiAg
KgogICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIGdldCB6b29tIGxldmVsCiAgKgotICogQHJl
dHVybiB6b29tIGxldmVsIGZvciB0aGUgZnJhbWUgb3IgQGMgLTEuMCBvbiBmYWlsdXJlCisgKiBA
cmV0dXJuIHRleHQgem9vbSBsZXZlbCBmb3IgdGhlIGZyYW1lIG9yIEBjIC0xLjAgb24gZmFpbHVy
ZQorICoKKyAqIEBzZWUgZXdrX2ZyYW1lX3pvb21fZ2V0KCkKICAqLwotRUFQSSBmbG9hdCAgICAg
ICAgZXdrX2ZyYW1lX3pvb21fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKK0VBUEkgZmxvYXQg
ICAgICAgIGV3a19mcmFtZV90ZXh0X3pvb21fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKIAog
LyoqCi0gKiBTZXRzIHRoZSBjdXJyZW50IHpvb20gbGV2ZWwgdXNlZCBieSB0aGlzIGZyYW1lLgor
ICogU2V0cyB0aGUgY3VycmVudCB0ZXh0IHpvb20gbGV2ZWwgdXNlZCBieSB0aGlzIGZyYW1lLgog
ICoKICAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBjaGFuZ2Ugem9vbSBsZXZlbAotICogQHBh
cmFtIHpvb20gYSBuZXcgem9vbSBsZXZlbAorICogQHBhcmFtIHRleHRab29tRmFjdG9yIGEgbmV3
IHpvb20gbGV2ZWwKICAqCiAgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIG9yIEBj
IEVJTkFfRkFMU0Ugb24gZmFpbHVyZQogICoKLSAqIEBzZWUgZXdrX2ZyYW1lX3pvb21fdGV4dF9v
bmx5X3NldCgpCisgKiBAc2VlIGV3a19mcmFtZV96b29tX3NldCgpCiAgKi8KLUVBUEkgRWluYV9C
b29sICAgIGV3a19mcmFtZV96b29tX3NldChFdmFzX09iamVjdCAqbywgZmxvYXQgem9vbSk7CitF
QVBJIEVpbmFfQm9vbCAgICBld2tfZnJhbWVfdGV4dF96b29tX3NldChFdmFzX09iamVjdCAqbywg
ZmxvYXQgdGV4dFpvb21GYWN0b3IpOwogCiAvKioKLSAqIFF1ZXJpZXMgaWYgem9vbSBsZXZlbCBq
dXN0IGFwcGxpZXMgdG8gdGV4dCBvbmx5IGFuZCBub3Qgb3RoZXIgZWxlbWVudHMuCisgKiBHZXRz
IHRoZSBjdXJyZW50IHpvb20gbGV2ZWwgdXNlZCBieSB0aGlzIGZyYW1lLgogICoKLSAqIEBwYXJh
bSBvIGZyYW1lIHRvIHF1ZXJ5IHpvb20gbGV2ZWwgZm9yIHRleHQgb25seQorICogQHBhcmFtIG8g
ZnJhbWUgb2JqZWN0IHRvIGdldCB6b29tIGxldmVsCiAgKgotICogQHJldHVybiBAYyBFSU5BX1RS
VUUgaWYgem9vbSBsZXZlbCBpcyBhcHBsaWVkIHRvIHRleHQgb25seSwgQGMgRUlOQV9GQUxTRSBp
ZiBub3Qgb3Igb24gZmFpbHVyZQorICogQHJldHVybiB6b29tIGxldmVsIGZvciB0aGUgZnJhbWUg
b3IgQGMgLTEuMCBvbiBmYWlsdXJlCisgKgorICogQHNlZSBld2tfZnJhbWVfdGV4dF96b29tX3Nl
dCgpCiAgKi8KLUVBUEkgRWluYV9Cb29sICAgIGV3a19mcmFtZV96b29tX3RleHRfb25seV9nZXQo
Y29uc3QgRXZhc19PYmplY3QgKm8pOworRUFQSSBmbG9hdCAgICAgICAgZXdrX2ZyYW1lX3pvb21f
Z2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKIAogLyoqCi0gKiBTZXRzIGlmIHpvb20gbGV2ZWwg
anVzdCBhcHBsaWVzIHRvIHRleHQgb25seSBhbmQgbm90IG90aGVyIGVsZW1lbnRzLgorICogU2V0
cyB0aGUgY3VycmVudCB6b29tIGxldmVsIHVzZWQgYnkgdGhpcyBmcmFtZS4KKyAqCisgKiBAcGFy
YW0gbyBmcmFtZSBvYmplY3QgdG8gY2hhbmdlIHpvb20gbGV2ZWwKKyAqIEBwYXJhbSB6b29tRmFj
dG9yIGEgbmV3IHpvb20gbGV2ZWwKICAqCi0gKiBAcGFyYW0gbyBmcmFtZSB0byBhcHBseSB6b29t
IGxldmVsIGZvciB0ZXh0IG9ubHkKLSAqIEBwYXJhbSBzZXR0aW5nIEBjIEVJTkFfVFJVRSBpZiB6
b29tIGxldmVsIHNob3VsZCBiZSBhcHBsaWVkIHRvIHRleHQgb25seSwgQGMgRUlOQV9GQUxTRSBp
ZiBub3QKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxT
RSBvbiBmYWlsdXJlCiAgKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcywgQGMg
RUlOQV9GQUxTRSBvdGhlcndpc2UKKyAqIEBzZWUgZXdrX2ZyYW1lX3pvb21fdGV4dF9vbmx5X3Nl
dCgpCiAgKi8KLUVBUEkgRWluYV9Cb29sICAgIGV3a19mcmFtZV96b29tX3RleHRfb25seV9zZXQo
RXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBzZXR0aW5nKTsKK0VBUEkgRWluYV9Cb29sICAgIGV3
a19mcmFtZV96b29tX3NldChFdmFzX09iamVjdCAqbywgZmxvYXQgem9vbUZhY3Rvcik7CiAKIC8q
KgogICogRnJlZXMgaGl0IHRlc3QgaW5zdGFuY2UgY3JlYXRlZCBieSBld2tfZnJhbWVfaGl0X3Rl
c3RfbmV3KCkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3Bw
IGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAppbmRleCA1OTkwNmUzMmYxNzg2
Mjk1MzgxYzViNzAzYTYzYTIwNDU0YmNlNDBkLi4xOGYwZmNmM2YzMDMyZGU4M2M3YzU3MTc3OGIz
YzgyYWMzMzc4YTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKQEAgLTkxNiwzMiAr
OTE2LDIyIEBAIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X2NvbnRlbnRzX3Jlc2l6
ZShFd2tfVmlld19TbWFydF9EYXRhKiBzZCwgaW50IHcsCiAgICAgcmV0dXJuIEVJTkFfVFJVRTsK
IH0KIAotc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfem9vbV9zZXQoRXdrX1ZpZXdf
U21hcnRfRGF0YSogc2QsIGZsb2F0IHpvb20sIEV2YXNfQ29vcmQgY3gsIEV2YXNfQ29vcmQgY3kp
CitzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9zY2FsZV9zZXQoRXdrX1ZpZXdfU21h
cnRfRGF0YSogc2QsIGZsb2F0IHNjYWxlRmFjdG9yLCBFdmFzX0Nvb3JkIGN4LCBFdmFzX0Nvb3Jk
IGN5KQogewotICAgIGRvdWJsZSBweCwgcHk7Ci0gICAgRXZhc19Db29yZCB4LCB5LCB3LCBoOwot
ICAgIEVpbmFfQm9vbCByZXQ7Ci0KLSAgICBld2tfZnJhbWVfc2Nyb2xsX3NpemVfZ2V0KHNkLT5t
YWluX2ZyYW1lLCAmdywgJmgpOwotICAgIGV3a19mcmFtZV9zY3JvbGxfcG9zX2dldChzZC0+bWFp
bl9mcmFtZSwgJngsICZ5KTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc2QsIHBy
aXYsIEVJTkFfRkFMU0UpOwogCi0gICAgaWYgKHcgKyBzZC0+dmlldy53ID4gMCkKLSAgICAgICAg
cHggPSBzdGF0aWNfY2FzdDxkb3VibGU+KHggKyBjeCkgLyAodyArIHNkLT52aWV3LncpOwotICAg
IGVsc2UKLSAgICAgICAgcHggPSAwLjA7CisgICAgZmxvYXQgY3VycmVudFNjYWxlRmFjdG9yID0g
ZXdrX3ZpZXdfc2NhbGVfZ2V0KHNkLT5zZWxmKTsKKyAgICBpZiAoY3VycmVudFNjYWxlRmFjdG9y
ID09IC0xKQorICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKIAotICAgIGlmIChoICsgc2QtPnZp
ZXcuaCA+IDApCi0gICAgICAgIHB5ID0gc3RhdGljX2Nhc3Q8ZG91YmxlPih5ICsgY3kpIC8gKGgg
KyBzZC0+dmlldy5oKTsKLSAgICBlbHNlCi0gICAgICAgIHB5ID0gMC4wOworICAgIGludCB4LCB5
OworICAgIGV3a19mcmFtZV9zY3JvbGxfcG9zX2dldChzZC0+bWFpbl9mcmFtZSwgJngsICZ5KTsK
IAotICAgIHJldCA9IGV3a19mcmFtZV96b29tX3NldChzZC0+bWFpbl9mcmFtZSwgem9vbSk7Cisg
ICAgeCA9IHN0YXRpY19jYXN0PGRvdWJsZT4oeCArIGN4KSAvIGN1cnJlbnRTY2FsZUZhY3RvciAq
IHNjYWxlRmFjdG9yIC0gY3g7CisgICAgeSA9IHN0YXRpY19jYXN0PGRvdWJsZT4oeSArIGN5KSAv
IGN1cnJlbnRTY2FsZUZhY3RvciAqIHNjYWxlRmFjdG9yIC0gY3k7CiAKLSAgICBld2tfZnJhbWVf
c2Nyb2xsX3NpemVfZ2V0KHNkLT5tYWluX2ZyYW1lLCAmdywgJmgpOwotICAgIHggPSAodyArIHNk
LT52aWV3LncpICogcHggLSBjeDsKLSAgICB5ID0gKGggKyBzZC0+dmlldy5oKSAqIHB5IC0gY3k7
Ci0gICAgZXdrX2ZyYW1lX3Njcm9sbF9zZXQoc2QtPm1haW5fZnJhbWUsIHgsIHkpOwotICAgIHJl
dHVybiByZXQ7CisgICAgcHJpdi0+cGFnZS0+c2V0UGFnZVNjYWxlRmFjdG9yKHNjYWxlRmFjdG9y
LCBXZWJDb3JlOjpMYXlvdXRQb2ludCh4LCB5KSk7CisgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0K
IAogc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2ZsdXNoKEV3a19WaWV3X1NtYXJ0X0RhdGEq
IHNkKQpAQCAtMTAyMSw3ICsxMDExLDcgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfem9v
bV9hbmltYXRvcl9jYih2b2lkKiBkYXRhKQogICAgIGlmICgobm93ID49IHByaXYtPmFuaW1hdGVk
X3pvb20udGltZS5lbmQpCiAgICAgICAgIHx8IChub3cgPCBwcml2LT5hbmltYXRlZF96b29tLnRp
bWUuc3RhcnQpKSB7CiAgICAgICAgIF9ld2tfdmlld196b29tX2FuaW1hdGVkX2ZpbmlzaChzZCk7
Ci0gICAgICAgIGV3a192aWV3X3pvb21fc2V0KHNkLT5zZWxmLCBwcml2LT5hbmltYXRlZF96b29t
Lnpvb20uZW5kLCBjeCwgY3kpOworICAgICAgICBld2tfdmlld19zY2FsZV9zZXQoc2QtPnNlbGYs
IHByaXYtPmFuaW1hdGVkX3pvb20uem9vbS5lbmQsIGN4LCBjeSk7CiAgICAgICAgIHNkLT5hcGkt
PnNjLmNhbGN1bGF0ZShzZC0+c2VsZik7CiAgICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOwogICAg
IH0KQEAgLTEwOTMsNyArMTA4Myw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19iYXNlX3NtYXJ0X3Nl
dChFd2tfVmlld19TbWFydF9DbGFzcyogYXBpKQogICAgIGFwaS0+c2MuZGF0YSA9IEVXS19WSUVX
X1RZUEVfU1RSOyAvKiB1c2VkIGJ5IHR5cGUgY2hlY2tpbmcgKi8KIAogICAgIGFwaS0+Y29udGVu
dHNfcmVzaXplID0gX2V3a192aWV3X3NtYXJ0X2NvbnRlbnRzX3Jlc2l6ZTsKLSAgICBhcGktPnpv
b21fc2V0ID0gX2V3a192aWV3X3NtYXJ0X3pvb21fc2V0OworICAgIGFwaS0+em9vbV9zZXQgPSBf
ZXdrX3ZpZXdfc21hcnRfc2NhbGVfc2V0OwogICAgIGFwaS0+Zmx1c2ggPSBfZXdrX3ZpZXdfc21h
cnRfZmx1c2g7CiAgICAgYXBpLT5wcmVfcmVuZGVyX3JlZ2lvbiA9IF9ld2tfdmlld19zbWFydF9w
cmVfcmVuZGVyX3JlZ2lvbjsKICAgICBhcGktPnByZV9yZW5kZXJfcmVsYXRpdmVfcmFkaXVzID0g
X2V3a192aWV3X3NtYXJ0X3ByZV9yZW5kZXJfcmVsYXRpdmVfcmFkaXVzOwpAQCAtMTUzNywxMyAr
MTUyNywxNCBAQCBFd2tfSGlzdG9yeSogZXdrX3ZpZXdfaGlzdG9yeV9nZXQoY29uc3QgRXZhc19P
YmplY3QqIG8pCiAgICAgcmV0dXJuIHByaXYtPmhpc3Rvcnk7CiB9CiAKLWZsb2F0IGV3a192aWV3
X3pvb21fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQorZmxvYXQgZXdrX3ZpZXdfc2NhbGVfZ2V0
KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4o
bywgc2QsIC0xLjApOwotICAgIHJldHVybiBld2tfZnJhbWVfem9vbV9nZXQoc2QtPm1haW5fZnJh
bWUpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgLTEuMCk7Cisg
ICAgcmV0dXJuIHByaXYtPnBhZ2UtPnBhZ2VTY2FsZUZhY3RvcigpOwogfQogCi1FaW5hX0Jvb2wg
ZXdrX3ZpZXdfem9vbV9zZXQoRXZhc19PYmplY3QqIG8sIGZsb2F0IHpvb20sIEV2YXNfQ29vcmQg
Y3gsIEV2YXNfQ29vcmQgY3kpCitFaW5hX0Jvb2wgZXdrX3ZpZXdfc2NhbGVfc2V0KEV2YXNfT2Jq
ZWN0KiBvLCBmbG9hdCBzY2FsZUZhY3RvciwgRXZhc19Db29yZCBjeCwgRXZhc19Db29yZCBjeSkK
IHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAg
ICBFV0tfVklFV19QUklWX0dFVChzZCwgcHJpdik7CkBAIC0xNTU2LDE3ICsxNTQ3LDQxIEBAIEVp
bmFfQm9vbCBld2tfdmlld196b29tX3NldChFdmFzX09iamVjdCogbywgZmxvYXQgem9vbSwgRXZh
c19Db29yZCBjeCwgRXZhc19Db29yCiAgICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOwogICAgIH0K
IAotICAgIGlmICh6b29tIDwgcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS5taW5fc2NhbGUpIHsK
LSAgICAgICAgV1JOKCJ6b29tIGxldmVsIGlzIDwgJWYgOiAlZiIsIHByaXYtPnNldHRpbmdzLnpv
b21fcmFuZ2UubWluX3NjYWxlLCB6b29tKTsKKyAgICBpZiAoc2NhbGVGYWN0b3IgPCBwcml2LT5z
ZXR0aW5ncy56b29tX3JhbmdlLm1pbl9zY2FsZSkgeworICAgICAgICBXUk4oInpvb20gbGV2ZWwg
aXMgPCAlZiA6ICVmIiwgcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS5taW5fc2NhbGUsIHNjYWxl
RmFjdG9yKTsKICAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CiAgICAgfQotICAgIGlmICh6b29t
ID4gcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS5tYXhfc2NhbGUpIHsKLSAgICAgICAgV1JOKCJ6
b29tIGxldmVsIGlzID4gJWYgOiAlZiIsIHByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWF4X3Nj
YWxlLCB6b29tKTsKKyAgICBpZiAoc2NhbGVGYWN0b3IgPiBwcml2LT5zZXR0aW5ncy56b29tX3Jh
bmdlLm1heF9zY2FsZSkgeworICAgICAgICBXUk4oInpvb20gbGV2ZWwgaXMgPiAlZiA6ICVmIiwg
cHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS5tYXhfc2NhbGUsIHNjYWxlRmFjdG9yKTsKICAgICAg
ICAgcmV0dXJuIEVJTkFfRkFMU0U7CiAgICAgfQogCiAgICAgX2V3a192aWV3X3pvb21fYW5pbWF0
ZWRfbWFya19zdG9wKHNkKTsKLSAgICByZXR1cm4gc2QtPmFwaS0+em9vbV9zZXQoc2QsIHpvb20s
IGN4LCBjeSk7CisgICAgcmV0dXJuIHNkLT5hcGktPnpvb21fc2V0KHNkLCBzY2FsZUZhY3Rvciwg
Y3gsIGN5KTsKK30KKworZmxvYXQgZXdrX3ZpZXdfdGV4dF96b29tX2dldChjb25zdCBFdmFzX09i
amVjdCogbykKK3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAtMS4wKTsK
KyAgICByZXR1cm4gZXdrX2ZyYW1lX3RleHRfem9vbV9nZXQoc2QtPm1haW5fZnJhbWUpOworfQor
CitFaW5hX0Jvb2wgZXdrX3ZpZXdfdGV4dF96b29tX3NldChFdmFzX09iamVjdCogbywgZmxvYXQg
dGV4dFpvb21GYWN0b3IpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwg
RUlOQV9GQUxTRSk7CisgICAgcmV0dXJuIGV3a19mcmFtZV90ZXh0X3pvb21fc2V0KHNkLT5tYWlu
X2ZyYW1lLCB0ZXh0Wm9vbUZhY3Rvcik7Cit9CisKK2Zsb2F0IGV3a192aWV3X3pvb21fZ2V0KGNv
bnN0IEV2YXNfT2JqZWN0KiBvKQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywg
c2QsIC0xLjApOworICAgIHJldHVybiBld2tfZnJhbWVfem9vbV9nZXQoc2QtPm1haW5fZnJhbWUp
OworfQorCitFaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV9zZXQoRXZhc19PYmplY3QqIG8sIGZsb2F0
IHpvb21GYWN0b3IpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlO
QV9GQUxTRSk7CisgICAgcmV0dXJuIGV3a19mcmFtZV96b29tX3NldChzZC0+bWFpbl9mcmFtZSwg
em9vbUZhY3Rvcik7CiB9CiAKIEVpbmFfQm9vbCBld2tfdmlld196b29tX3dlYWtfc21vb3RoX3Nj
YWxlX2dldChjb25zdCBFdmFzX09iamVjdCogbykKQEAgLTE2MDksNyArMTYyNCw3IEBAIEVpbmFf
Qm9vbCBld2tfdmlld196b29tX3dlYWtfc2V0KEV2YXNfT2JqZWN0KiBvLCBmbG9hdCB6b29tLCBF
dmFzX0Nvb3JkIGN4LCBFdmFzCiAgICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOwogICAgIH0KIAot
ICAgIHNkLT5hbmltYXRlZF96b29tLnpvb20uc3RhcnQgPSBld2tfZnJhbWVfem9vbV9nZXQoc2Qt
Pm1haW5fZnJhbWUpOworICAgIHNkLT5hbmltYXRlZF96b29tLnpvb20uc3RhcnQgPSBld2tfdmll
d19zY2FsZV9nZXQobyk7CiAgICAgc2QtPmFuaW1hdGVkX3pvb20uem9vbS5lbmQgPSB6b29tOwog
ICAgIHNkLT5hbmltYXRlZF96b29tLnpvb20uY3VycmVudCA9IHpvb207CiAgICAgcmV0dXJuIHNk
LT5hcGktPnpvb21fd2Vha19zZXQoc2QsIHpvb20sIGN4LCBjeSk7CkBAIC0xNjY4LDcgKzE2ODMs
NyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9zZXQoRXZhc19PYmplY3QqIG8s
IGZsb2F0IHpvb20sIGZsb2F0IGR1cmF0aW9uLAogICAgIGlmIChwcml2LT5hbmltYXRlZF96b29t
LmFuaW1hdG9yKQogICAgICAgICBwcml2LT5hbmltYXRlZF96b29tLnpvb20uc3RhcnQgPSBfZXdr
X3ZpZXdfem9vbV9hbmltYXRlZF9jdXJyZW50KHByaXYpOwogICAgIGVsc2UgewotICAgICAgICBw
cml2LT5hbmltYXRlZF96b29tLnpvb20uc3RhcnQgPSBld2tfZnJhbWVfem9vbV9nZXQoc2QtPm1h
aW5fZnJhbWUpOworICAgICAgICBwcml2LT5hbmltYXRlZF96b29tLnpvb20uc3RhcnQgPSBld2tf
dmlld19zY2FsZV9nZXQobyk7CiAgICAgICAgIF9ld2tfdmlld196b29tX2FuaW1hdGlvbl9zdGFy
dChzZCk7CiAgICAgfQogCkBAIC0xNjkyLDE4ICsxNzA3LDYgQEAgRWluYV9Cb29sIGV3a192aWV3
X3pvb21fYW5pbWF0ZWRfc2V0KEV2YXNfT2JqZWN0KiBvLCBmbG9hdCB6b29tLCBmbG9hdCBkdXJh
dGlvbiwKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdfem9v
bV90ZXh0X29ubHlfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQotewotICAgIEVXS19WSUVXX1NE
X0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwotICAgIHJldHVybiBld2tfZnJhbWVf
em9vbV90ZXh0X29ubHlfZ2V0KHNkLT5tYWluX2ZyYW1lKTsKLX0KLQotRWluYV9Cb29sIGV3a192
aWV3X3pvb21fdGV4dF9vbmx5X3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIHNldHRpbmcp
Ci17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7Ci0g
ICAgcmV0dXJuIGV3a19mcmFtZV96b29tX3RleHRfb25seV9zZXQoc2QtPm1haW5fZnJhbWUsIHNl
dHRpbmcpOwotfQotCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfcHJlX3JlbmRlcl9yZWdpb24oRXZhc19P
YmplY3QqIG8sIEV2YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5LCBFdmFzX0Nvb3JkIHcsIEV2YXNf
Q29vcmQgaCwgZmxvYXQgem9vbSkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8s
IHNkLCBFSU5BX0ZBTFNFKTsKQEAgLTE3MTgsNyArMTcyMSw3IEBAIEVpbmFfQm9vbCBld2tfdmll
d19wcmVfcmVuZGVyX3JlZ2lvbihFdmFzX09iamVjdCogbywgRXZhc19Db29yZCB4LCBFdmFzX0Nv
b3JkIHksCiAgICAgaWYgKHByaXYtPmFuaW1hdGVkX3pvb20uYW5pbWF0b3IpCiAgICAgICAgIHJl
dHVybiBFSU5BX0ZBTFNFOwogCi0gICAgY3VyX3pvb20gPSBld2tfZnJhbWVfem9vbV9nZXQoc2Qt
Pm1haW5fZnJhbWUpOworICAgIGN1cl96b29tID0gZXdrX3ZpZXdfc2NhbGVfZ2V0KG8pOwogCiAg
ICAgaWYgKGN1cl96b29tIDwgMC4wMDAwMSkKICAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CkBA
IC0xNzU3LDcgKzE3NjAsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfcHJlX3JlbmRlcl9yZWxhdGl2
ZV9yYWRpdXMoRXZhc19PYmplY3QqIG8sIHVuc2lnbmVkIGludCBuKQogICAgIGlmIChwcml2LT5h
bmltYXRlZF96b29tLmFuaW1hdG9yKQogICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKIAotICAg
IGN1cl96b29tID0gZXdrX2ZyYW1lX3pvb21fZ2V0KHNkLT5tYWluX2ZyYW1lKTsKKyAgICBjdXJf
em9vbSA9IGV3a192aWV3X3NjYWxlX2dldChvKTsKICAgICByZXR1cm4gc2QtPmFwaS0+cHJlX3Jl
bmRlcl9yZWxhdGl2ZV9yYWRpdXMoc2QsIG4sIGN1cl96b29tKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX3ZpZXcuaAppbmRleCAyN2Q2YTZiYzI0M2Y1ZTQ5YjE5YTY4OGRhNmE5OWQ3NzkyYTNkODNj
Li4xNTFiODAyMjNjNjU4ZTYxZjc2YjY5NzRmMmMyZmI4MjUzNjM0YTM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX3ZpZXcuaApAQCAtOTcyLDYgKzk3Miw0NiBAQCBFQVBJIEVpbmFfQm9vbCAgICBld2tf
dmlld19oaXN0b3J5X2VuYWJsZV9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBlbmFibGUp
OwogRUFQSSBFd2tfSGlzdG9yeSAqZXdrX3ZpZXdfaGlzdG9yeV9nZXQoY29uc3QgRXZhc19PYmpl
Y3QgKm8pOwogCiAvKioKKyAqIEdldHMgdGhlIGN1cnJlbnQgc2NhbGUgZmFjdG9yIG9mIHRoZSBw
YWdlLgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIGdldCB0aGUgc2NhbGUgZmFjdG9y
IAorICoKKyAqIEByZXR1cm4gY3VycmVudCBzY2FsZSBmYWN0b3IgaW4gdXNlIG9uIHN1Y2Nlc3Mg
b3IgQGMgLTEuMCBvbiBmYWlsdXJlCisgKi8KK0VBUEkgZmxvYXQgICAgICAgIGV3a192aWV3X3Nj
YWxlX2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7CisKKy8qKgorICogU2NhbGVzIHRoZSBjdXJy
ZW50IHBhZ2UsIGNlbnRlcmVkIGF0IHRoZSBnaXZlbiBwb2ludC4KKyAqCisgKiBAcGFyYW0gbyB2
aWV3IG9iamVjdCB0byBzZXQgdGhlIHpvb20gbGV2ZWwKKyAqIEBwYXJhbSBzY2FsZUZhY3RvciBh
IG5ldyBsZXZlbCB0byBzZXQKKyAqIEBwYXJhbSBjeCB4IG9mIGNlbnRlciBjb29yZGluYXRlCisg
KiBAcGFyYW0gY3kgeSBvZiBjZW50ZXIgY29vcmRpbmF0ZQorICoKKyAqIEByZXR1cm4gQGMgRUlO
QV9UUlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKKyAqLworRUFQSSBF
aW5hX0Jvb2wgICAgZXdrX3ZpZXdfc2NhbGVfc2V0KEV2YXNfT2JqZWN0ICpvLCBmbG9hdCBzY2Fs
ZUZhY3RvciwgRXZhc19Db29yZCBjeCwgRXZhc19Db29yZCBjeSk7CisKKy8qKgorICogR2V0cyB0
aGUgY3VycmVudCB0ZXh0IHpvb20gbGV2ZWwgb2YgdGhlIG1haW4gZnJhbWUuCisgKgorICogQHBh
cmFtIG8gdmlldyBvYmplY3QgdG8gZ2V0IHRoZSB6b29tIGxldmVsCisgKgorICogQHJldHVybiBj
dXJyZW50IHpvb20gbGV2ZWwgaW4gdXNlIG9uIHN1Y2Nlc3Mgb3IgQGMgLTEuMCBvbiBmYWlsdXJl
CisgKi8KK0VBUEkgZmxvYXQgICAgICAgIGV3a192aWV3X3RleHRfem9vbV9nZXQoY29uc3QgRXZh
c19PYmplY3QgKm8pOworCisvKioKKyAqIFNldHMgdGhlIGN1cnJlbnQgdGV4dCB6b29tIGxldmVs
IG9mIHRoZSBtYWluIGZyYW1lLgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIHNldCB0
aGUgem9vbSBsZXZlbAorICogQHBhcmFtIHpvb21GYWN0b3IgYSBuZXcgbGV2ZWwgdG8gc2V0Cisg
KgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcyBvciBAYyBFSU5BX0ZBTFNFIG90
aGVyd2lzZQorICovCitFQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld190ZXh0X3pvb21fc2V0KEV2
YXNfT2JqZWN0ICpvLCBmbG9hdCB6b29tRmFjdG9yKTsKKworLyoqCiAgKiBHZXRzIHRoZSBjdXJy
ZW50IHpvb20gbGV2ZWwgb2YgdGhlIG1haW4gZnJhbWUuCiAgKgogICogQHBhcmFtIG8gdmlldyBv
YmplY3QgdG8gZ2V0IHRoZSB6b29tIGxldmVsCkBAIC05ODEsMTYgKzEwMjEsMTQgQEAgRUFQSSBF
d2tfSGlzdG9yeSAqZXdrX3ZpZXdfaGlzdG9yeV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwog
RUFQSSBmbG9hdCAgICAgICAgZXdrX3ZpZXdfem9vbV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8p
OwogCiAvKioKLSAqIFNldHMgdGhlIGN1cnJlbnQgem9vbSBsZXZlbCBvZiB0aGUgbWFpbiBmcmFt
ZSwgY2VudGVyZWQgYXQgdGhlIGdpdmVuIHBvaW50LgorICogU2V0cyB0aGUgY3VycmVudCB6b29t
IGxldmVsIG9mIHRoZSBtYWluIGZyYW1lLgogICoKICAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRv
IHNldCB0aGUgem9vbSBsZXZlbAogICogQHBhcmFtIHpvb20gYSBuZXcgbGV2ZWwgdG8gc2V0Ci0g
KiBAcGFyYW0gY3ggeCBvZiBjZW50ZXIgY29vcmRpbmF0ZQotICogQHBhcmFtIGN5IHkgb2YgY2Vu
dGVyIGNvb3JkaW5hdGUKICAqCiAgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIG9y
IEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCiAgKi8KLUVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3
X3pvb21fc2V0KEV2YXNfT2JqZWN0ICpvLCBmbG9hdCB6b29tLCBFdmFzX0Nvb3JkIGN4LCBFdmFz
X0Nvb3JkIGN5KTsKK0VBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3pvb21fc2V0KEV2YXNfT2Jq
ZWN0ICpvLCBmbG9hdCB6b29tKTsKIAogLyoqCiAgKiBRdWVyaWVzIGlmIHRoZSBzbW9vdGggc2Nh
bGUgaXMgZW5hYmxlZCB3aGlsZSB0aGUgd2VhayB6b29tLgpAQCAtMTEzOCwyNSArMTE3Niw2IEBA
IEVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3pvb21fYW5pbWF0ZWRfbWFya19zdG9wKEV2YXNf
T2JqZWN0ICpvKTsKIEVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3pvb21fYW5pbWF0ZWRfc2V0
KEV2YXNfT2JqZWN0ICpvLCBmbG9hdCB6b29tLCBmbG9hdCBkdXJhdGlvbiwgRXZhc19Db29yZCBj
eCwgRXZhc19Db29yZCBjeSk7CiAKIC8qKgotICogUXVlcmllcyBpZiB6b29tIGxldmVsIGp1c3Qg
YXBwbGllcyB0byB0ZXh0IG9ubHkgYW5kIG5vdCBvdGhlciBlbGVtZW50cy4KLSAqCi0gKiBAcGFy
YW0gbyB2aWV3IHRvIHF1ZXJ5IHpvb20gbGV2ZWwgZm9yIHRleHQgb25seQotICoKLSAqIEByZXR1
cm4gQGMgRUlOQV9UUlVFIGlmIHpvb20gbGV2ZWwgaXMgYXBwbGllZCB0byB0ZXh0IG9ubHksIEBj
IEVJTkFfRkFMU0UgaWYgbm90IG9yIG9uIGZhaWx1cmUKLSAqLwotRUFQSSBFaW5hX0Jvb2wgICAg
ZXdrX3ZpZXdfem9vbV90ZXh0X29ubHlfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKLQotLyoq
Ci0gKiBTZXRzIGlmIHpvb20gbGV2ZWwganVzdCBhcHBsaWVzIHRvIHRleHQgb25seSBhbmQgbm90
IG90aGVyIGVsZW1lbnRzLgotICoKLSAqIEBwYXJhbSBvIHZpZXcgdG8gYXBwbHkgem9vbSBsZXZl
bCBmb3IgdGV4dCBvbmx5Ci0gKiBAcGFyYW0gc2V0dGluZyBAYyBFSU5BX1RSVUUgaWYgem9vbSBs
ZXZlbCBzaG91bGQgYmUgYXBwbGllZCB0byB0ZXh0IG9ubHksIEBjIEVJTkFfRkFMU0UgaWYgbm90
Ci0gKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcyBvciBAYyBFSU5BX0ZBTFNF
IG90aGVyd2lzZQotICovCi1FQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld196b29tX3RleHRfb25s
eV9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBzZXR0aW5nKTsKLQotLyoqCiAgKiBBc2tz
IGVuZ2luZSB0byBwcmUtcmVuZGVyIHJlZ2lvbi4KICAqCiAgKiBFbmdpbmVzIGFuZCBiYWNraW5n
IHN0b3JlIG1pZ2h0IGJlIGFibGUgdG8gcHJlLXJlbmRlciByZWdpb25zIGluCmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNDU3YjU2Y2VhMDE2ZGVi
MTMyNGY4NDQzNTY0Mzg0ODI3MGE5YTg4YS4uOTAzMmI2NjA4NDMzNjVhYmRiYjBmODhhZTdiMjFk
MDRkNzBkNWYwYSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDExLTEwLTA0ICBDaG9pIFJ5dWFuICA8cnl1YW4uY2hv
aUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXSBSZWZhY3RvciB6b29tIHJlbGF0ZWQgQVBJ
cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyODQy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBFV2Vi
TGF1bmNoZXIvbWFpbi5jOgorICAgICAgICAodmlld3BvcnRfc2V0KTogcmVtb3ZlIHBvc2l0aW9u
IGJlY2F1c2UgZXdrX3ZpZXdfem9vbV9zZXQgaXMgcmVmYWN0b3JlZC4KKwogMjAxMS0xMC0wNCAg
QWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIGdhcmRlbi1vLW1hdGlj
IGRvZXNuJ3QgbGF1bmNoIGl0J3MgVUkgb24gTGlvbgpkaWZmIC0tZ2l0IGEvVG9vbHMvRVdlYkxh
dW5jaGVyL21haW4uYyBiL1Rvb2xzL0VXZWJMYXVuY2hlci9tYWluLmMKaW5kZXggNmFlOWYzZDBl
NzE0NjMzZjJjYzRiYjExYWI3NWQ3ZTNmZGNkODMzYi4uNWRlYjU5NjJhNGNkNjhhNDMxNTkzYTE1
YWYyMDQxY2EyMjRiZjhiNCAxMDA2NDQKLS0tIGEvVG9vbHMvRVdlYkxhdW5jaGVyL21haW4uYwor
KysgYi9Ub29scy9FV2ViTGF1bmNoZXIvbWFpbi5jCkBAIC0yNzEsNyArMjcxLDcgQEAgdmlld3Bv
cnRfc2V0KCkKICAgICBhcHAgPSAoRUxhdW5jaGVyKikgZWluYV9saXN0X2RhdGFfZ2V0KHdpbmRv
d3MpOwogCiAgICAgZXdrX3ZpZXdfZml4ZWRfbGF5b3V0X3NpemVfc2V0KGFwcC0+YnJvd3Nlciwg
YXBwLT52aWV3cG9ydC53LCBhcHAtPnZpZXdwb3J0LmgpOwotICAgIGV3a192aWV3X3pvb21fc2V0
KGFwcC0+YnJvd3NlciwgYXBwLT52aWV3cG9ydC5pbml0U2NhbGUsIDAsIDApOworICAgIGV3a192
aWV3X3pvb21fc2V0KGFwcC0+YnJvd3NlciwgYXBwLT52aWV3cG9ydC5pbml0U2NhbGUpOwogICAg
IGlmICghZXdrX3ZpZXdfem9vbV9yYW5nZV9zZXQoYXBwLT5icm93c2VyLCBhcHAtPnZpZXdwb3J0
Lm1pblNjYWxlLCBhcHAtPnZpZXdwb3J0Lm1heFNjYWxlKSkKICAgICAgICAgaW5mbygiIEZhaWwg
dG8gc2V0IHpvb20gcmFuZ2UuIG1pblNjYWxlID0gJWYsIG1heFNjYWxlID0gJWZcbiIsIGFwcC0+
dmlld3BvcnQubWluU2NhbGUsIGFwcC0+dmlld3BvcnQubWF4U2NhbGUpOwogICAgIGV3a192aWV3
X3VzZXJfc2NhbGFibGVfc2V0KGFwcC0+YnJvd3NlciwgYXBwLT52aWV3cG9ydC51c2VyU2NhbGFi
bGUpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109981</attachid>
            <date>2011-10-06 11:17:34 -0700</date>
            <delta_ts>2011-10-06 17:27:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62842-20111007031732.patch</filename>
            <type>text/plain</type>
            <size>15996</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTY4MTMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZs
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCA5OTcwZjYwMWI0
YWQ1NDlkYjVmNjY2OGQ3NDliYmFjMWE2MDY4NjllLi5mYWMxZWRmZDBlYjI2NzA1OTQxZDExY2Ux
NmRlYTBmN2M4ZjQ5ZWYwIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTEt
MTAtMDYgIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtF
RkxdIFJlZmFjdG9yIHpvb20gcmVsYXRlZCBBUElzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjI4NDIKKworICAgICAgICBDdXJyZW50IHpvb20gYXBp
cyBjYW4ndCBzdXBwb3J0IHRoZSBjYXNlIG9mIHVzaW5nIGJvdGggcGFnZSB6b29tIGFuZCB0ZXh0
CisgICAgICAgIHpvb20uCisKKyAgICAgICAgQXMgYSBmaXJzdCBzdGVwIHRvIHJlZmFjdG9yLCB0
aGlzIHNwbGl0IGV3a197dmlld3xmcmFtZX1fem9vbV97Z2V0fHNldH0KKyAgICAgICAgdG8gdXNl
IGJvdGggcGFnZV96b29tIGFuZCB0ZXh0IHpvb20gaW5kaXZpZHVhbGx5LgorICAgICAgICBJbiBh
ZGRpdGlvbiwgaW50cm9kdWNlIGV3a192aWV3X3NjYWxlX3tnZXR8c2V0fSB0byBzdXBwb3J0IHBy
b3BvcnRpb2FubCBzY2FsaW5nLgorCisgICAgICAgIGV3a192aWV3X3pvb21fe2dldHxzZXR9IHdp
bGwgYmUgcmVtYWluZWQgdW50aWwgdGhlIGJlaGF2aW9yIG9mIHNtYXJ0X3pvb20KKyAgICAgICAg
d2FzIGNoYW5nZWQuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBld2svZXdrX2ZyYW1lLmNwcDoKKyAgICAgICAgKGV3a19mcmFtZV9wYWdlX3pvb21f
Z2V0KToKKyAgICAgICAgKGV3a19mcmFtZV9wYWdlX3pvb21fc2V0KToKKyAgICAgICAgKGV3a19m
cmFtZV90ZXh0X3pvb21fZ2V0KToKKyAgICAgICAgKGV3a19mcmFtZV90ZXh0X3pvb21fc2V0KToK
KyAgICAgICAgKiBld2svZXdrX2ZyYW1lLmg6CisgICAgICAgICogZXdrL2V3a192aWV3LmNwcDoK
KyAgICAgICAgKF9ld2tfdmlld19zbWFydF96b29tX3NldCk6CisgICAgICAgIChld2tfdmlld196
b29tX2dldCk6CisgICAgICAgIChld2tfdmlld19wYWdlX3pvb21fZ2V0KToKKyAgICAgICAgKGV3
a192aWV3X3BhZ2Vfem9vbV9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfc2NhbGVfZ2V0KToKKyAg
ICAgICAgKGV3a192aWV3X3NjYWxlX3NldCk6CisgICAgICAgIChld2tfdmlld190ZXh0X3pvb21f
Z2V0KToKKyAgICAgICAgKGV3a192aWV3X3RleHRfem9vbV9zZXQpOgorICAgICAgICAoZXdrX3Zp
ZXdfem9vbV93ZWFrX3NldCk6CisgICAgICAgIChld2tfdmlld196b29tX2FuaW1hdGVkX3NldCk6
CisgICAgICAgIChld2tfdmlld19wcmVfcmVuZGVyX3JlZ2lvbik6CisgICAgICAgIChld2tfdmll
d19wcmVfcmVuZGVyX3JlbGF0aXZlX3JhZGl1cyk6CisgICAgICAgICogZXdrL2V3a192aWV3Lmg6
CisKIDIwMTEtMTAtMDQgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4K
IAogICAgICAgICBbRUZMXSBPbmx5IHNldCB3aGVuIHRoZSBjdXN0b20gZW5jb2RpbmcgaXMgZGlm
ZmVyZW50IGZyb20gZXhpc3RpbmcgdmFsdWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfZnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAK
aW5kZXggYmM4ZjhhZTY2ZTNlNjhhNzMwNWVhZmExZjljOTIzOTQ4NjJmNTkxYS4uODRkNTA0NGQx
YTJlZjk2M2FjMTc1YzhiZjgxMzI2MWM3N2I4YTMzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9lZmwvZXdrL2V3a19mcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19m
cmFtZS5jcHAKQEAgLTc1LDcgKzc1LDYgQEAgc3RydWN0IEV3a19GcmFtZV9TbWFydF9EYXRhIHsK
ICAgICBzdHJ1Y3QgewogICAgICAgICBFdmFzX0Nvb3JkIHcsIGg7CiAgICAgfSBjb250ZW50c19z
aXplOwotICAgIEVpbmFfQm9vbCB0ZXh0Wm9vbSA6IDE7CiAgICAgRWluYV9Cb29sIGVkaXRhYmxl
IDogMTsKIH07CiAKQEAgLTYxMiw0NiArNjExLDMzIEBAIEVpbmFfQm9vbCBld2tfZnJhbWVfbmF2
aWdhdGVfcG9zc2libGUoRXZhc19PYmplY3QqIG8sIGludCBzdGVwcykKICAgICByZXR1cm4gcGFn
ZS0+Y2FuR29CYWNrT3JGb3J3YXJkKHN0ZXBzKTsKIH0KIAotZmxvYXQgZXdrX2ZyYW1lX3pvb21f
Z2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQorZmxvYXQgZXdrX2ZyYW1lX3BhZ2Vfem9vbV9nZXQo
Y29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lKQogewotICAgIEVXS19GUkFNRV9TRF9HRVRfT1Jf
UkVUVVJOKG8sIHNkLCAtMS4wKTsKKyAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tG
cmFtZSwgc2QsIC0xLjApOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+
ZnJhbWUsIC0xLjApOwotCi0gICAgaWYgKHNkLT50ZXh0Wm9vbSkKLSAgICAgICAgcmV0dXJuIHNk
LT5mcmFtZS0+dGV4dFpvb21GYWN0b3IoKTsKICAgICByZXR1cm4gc2QtPmZyYW1lLT5wYWdlWm9v
bUZhY3RvcigpOwogfQogCi1FaW5hX0Jvb2wgZXdrX2ZyYW1lX3pvb21fc2V0KEV2YXNfT2JqZWN0
KiBvLCBmbG9hdCB6b29tKQorRWluYV9Cb29sIGV3a19mcmFtZV9wYWdlX3pvb21fc2V0KEV2YXNf
T2JqZWN0KiBld2tGcmFtZSwgZmxvYXQgcGFnZVpvb21GYWN0b3IpCiB7Ci0gICAgRVdLX0ZSQU1F
X1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOworICAgIEVXS19GUkFNRV9TRF9H
RVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk5fVkFMKHNkLT5mcmFtZSwgRUlOQV9GQUxTRSk7Ci0gICAgaWYgKHNkLT50
ZXh0Wm9vbSkKLSAgICAgICAgc2QtPmZyYW1lLT5zZXRUZXh0Wm9vbUZhY3Rvcih6b29tKTsKLSAg
ICBlbHNlCi0gICAgICAgIHNkLT5mcmFtZS0+c2V0UGFnZVpvb21GYWN0b3Ioem9vbSk7CisgICAg
c2QtPmZyYW1lLT5zZXRQYWdlWm9vbUZhY3RvcihwYWdlWm9vbUZhY3Rvcik7CiAgICAgcmV0dXJu
IEVJTkFfVFJVRTsKIH0KIAotRWluYV9Cb29sIGV3a19mcmFtZV96b29tX3RleHRfb25seV9nZXQo
Y29uc3QgRXZhc19PYmplY3QqIG8pCitmbG9hdCBld2tfZnJhbWVfdGV4dF96b29tX2dldChjb25z
dCBFdmFzX09iamVjdCogZXdrRnJhbWUpCiB7Ci0gICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRV
Uk4obywgc2QsIEVJTkFfRkFMU0UpOwotICAgIHJldHVybiBzZC0+dGV4dFpvb207CisgICAgRVdL
X0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNkLCAtMS4wKTsKKyAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2QtPmZyYW1lLCAtMS4wKTsKKyAgICByZXR1cm4gc2Qt
PmZyYW1lLT50ZXh0Wm9vbUZhY3RvcigpOwogfQogCi1FaW5hX0Jvb2wgZXdrX2ZyYW1lX3pvb21f
dGV4dF9vbmx5X3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIHNldHRpbmcpCitFaW5hX0Jv
b2wgZXdrX2ZyYW1lX3RleHRfem9vbV9zZXQoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBmbG9hdCB0
ZXh0Wm9vbUZhY3RvcikKIHsKLSAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwg
RUlOQV9GQUxTRSk7CisgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNk
LCBFSU5BX0ZBTFNFKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2QtPmZy
YW1lLCBFSU5BX0ZBTFNFKTsKLSAgICBpZiAoc2QtPnRleHRab29tID09IHNldHRpbmcpCi0gICAg
ICAgIHJldHVybiBFSU5BX1RSVUU7Ci0KLSAgICBmbG9hdCB6b29tX2xldmVsID0gc2QtPnRleHRa
b29tID8gc2QtPmZyYW1lLT50ZXh0Wm9vbUZhY3RvcigpIDogc2QtPmZyYW1lLT5wYWdlWm9vbUZh
Y3RvcigpOwotICAgIHNkLT50ZXh0Wm9vbSA9IHNldHRpbmc7Ci0gICAgaWYgKHNkLT50ZXh0Wm9v
bSkKLSAgICAgICAgc2QtPmZyYW1lLT5zZXRQYWdlQW5kVGV4dFpvb21GYWN0b3JzKDEsIHpvb21f
bGV2ZWwpOwotICAgIGVsc2UKLSAgICAgICAgc2QtPmZyYW1lLT5zZXRQYWdlQW5kVGV4dFpvb21G
YWN0b3JzKHpvb21fbGV2ZWwsIDEpOworICAgIHNkLT5mcmFtZS0+c2V0VGV4dFpvb21GYWN0b3Io
dGV4dFpvb21GYWN0b3IpOwogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfZnJhbWUuaAppbmRleCA2NjJiMGQ1YTZlMGYwY2QzYzNiMTg2MTRjNDc0OWNmZDJjNjdi
YjcwLi41ZWM5ZThkMzRjMDc5ZWVmZDI4MDk5ZDI5NTM1YTcxMGQyNzBjZjM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmgKKysrIGIvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a19mcmFtZS5oCkBAIC01MjAsNDQgKzUyMCw1MCBAQCBFQVBJIEVpbmFfQm9vbCAg
ICBld2tfZnJhbWVfZm9yd2FyZF9wb3NzaWJsZShFdmFzX09iamVjdCAqbyk7CiBFQVBJIEVpbmFf
Qm9vbCAgICBld2tfZnJhbWVfbmF2aWdhdGVfcG9zc2libGUoRXZhc19PYmplY3QgKm8sIGludCBz
dGVwcyk7CiAKIC8qKgotICogR2V0cyB0aGUgY3VycmVudCB6b29tIGxldmVsIHVzZWQgYnkgdGhp
cyBmcmFtZS4KKyAqIEdldHMgdGhlIGN1cnJlbnQgcGFnZSB6b29tIGxldmVsIHVzZWQgYnkgdGhp
cyBmcmFtZS4KICAqCiAgKiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gZ2V0IHpvb20gbGV2ZWwK
ICAqCi0gKiBAcmV0dXJuIHpvb20gbGV2ZWwgZm9yIHRoZSBmcmFtZSBvciBAYyAtMS4wIG9uIGZh
aWx1cmUKKyAqIEByZXR1cm4gcGFnZSB6b29tIGxldmVsIGZvciB0aGUgZnJhbWUgb3IgQGMgLTEu
MCBvbiBmYWlsdXJlCisgKgorICogQHNlZSBld2tfZnJhbWVfdGV4dF96b29tX2dldCgpCiAgKi8K
LUVBUEkgZmxvYXQgICAgICAgIGV3a19mcmFtZV96b29tX2dldChjb25zdCBFdmFzX09iamVjdCAq
byk7CitFQVBJIGZsb2F0ICAgICAgICBld2tfZnJhbWVfcGFnZV96b29tX2dldChjb25zdCBFdmFz
X09iamVjdCAqbyk7CiAKIC8qKgotICogU2V0cyB0aGUgY3VycmVudCB6b29tIGxldmVsIHVzZWQg
YnkgdGhpcyBmcmFtZS4KKyAqIFNldHMgdGhlIGN1cnJlbnQgcGFnZSB6b29tIGxldmVsIHVzZWQg
YnkgdGhpcyBmcmFtZS4KICAqCiAgKiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gY2hhbmdlIHpv
b20gbGV2ZWwKLSAqIEBwYXJhbSB6b29tIGEgbmV3IHpvb20gbGV2ZWwKKyAqIEBwYXJhbSBwYWdl
Wm9vbUZhY3RvciBhIG5ldyB6b29tIGxldmVsCiAgKgogICogQHJldHVybiBAYyBFSU5BX1RSVUUg
b24gc3VjY2VzcyBvciBAYyBFSU5BX0ZBTFNFIG9uIGZhaWx1cmUKICAqCi0gKiBAc2VlIGV3a19m
cmFtZV96b29tX3RleHRfb25seV9zZXQoKQorICogQHNlZSBld2tfZnJhbWVfdGV4dF96b29tX3Nl
dCgpCiAgKi8KLUVBUEkgRWluYV9Cb29sICAgIGV3a19mcmFtZV96b29tX3NldChFdmFzX09iamVj
dCAqbywgZmxvYXQgem9vbSk7CitFQVBJIEVpbmFfQm9vbCAgICBld2tfZnJhbWVfcGFnZV96b29t
X3NldChFdmFzX09iamVjdCAqbywgZmxvYXQgcGFnZVpvb21GYWN0b3IpOwogCiAvKioKLSAqIFF1
ZXJpZXMgaWYgem9vbSBsZXZlbCBqdXN0IGFwcGxpZXMgdG8gdGV4dCBvbmx5IGFuZCBub3Qgb3Ro
ZXIgZWxlbWVudHMuCisgKiBHZXRzIHRoZSBjdXJyZW50IHRleHQgem9vbSBsZXZlbCB1c2VkIGJ5
IHRoaXMgZnJhbWUuCisgKgorICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIGdldCB6b29tIGxl
dmVsCiAgKgotICogQHBhcmFtIG8gZnJhbWUgdG8gcXVlcnkgem9vbSBsZXZlbCBmb3IgdGV4dCBv
bmx5CisgKiBAcmV0dXJuIHRleHQgem9vbSBsZXZlbCBmb3IgdGhlIGZyYW1lIG9yIEBjIC0xLjAg
b24gZmFpbHVyZQogICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIHpvb20gbGV2ZWwgaXMg
YXBwbGllZCB0byB0ZXh0IG9ubHksIEBjIEVJTkFfRkFMU0UgaWYgbm90IG9yIG9uIGZhaWx1cmUK
KyAqIEBzZWUgZXdrX2ZyYW1lX3BhZ2Vfem9vbV9nZXQoKQogICovCi1FQVBJIEVpbmFfQm9vbCAg
ICBld2tfZnJhbWVfem9vbV90ZXh0X29ubHlfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKK0VB
UEkgZmxvYXQgICAgICAgIGV3a19mcmFtZV90ZXh0X3pvb21fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0
ICpvKTsKIAogLyoqCi0gKiBTZXRzIGlmIHpvb20gbGV2ZWwganVzdCBhcHBsaWVzIHRvIHRleHQg
b25seSBhbmQgbm90IG90aGVyIGVsZW1lbnRzLgorICogU2V0cyB0aGUgY3VycmVudCB0ZXh0IHpv
b20gbGV2ZWwgdXNlZCBieSB0aGlzIGZyYW1lLgogICoKLSAqIEBwYXJhbSBvIGZyYW1lIHRvIGFw
cGx5IHpvb20gbGV2ZWwgZm9yIHRleHQgb25seQotICogQHBhcmFtIHNldHRpbmcgQGMgRUlOQV9U
UlVFIGlmIHpvb20gbGV2ZWwgc2hvdWxkIGJlIGFwcGxpZWQgdG8gdGV4dCBvbmx5LCBAYyBFSU5B
X0ZBTFNFIGlmIG5vdAorICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIGNoYW5nZSB6b29tIGxl
dmVsCisgKiBAcGFyYW0gdGV4dFpvb21GYWN0b3IgYSBuZXcgem9vbSBsZXZlbAogICoKLSAqIEBy
ZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCisg
KiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFp
bHVyZQorICoKKyAqIEBzZWUgZXdrX2ZyYW1lX3BhZ2Vfem9vbV9zZXQoKQogICovCi1FQVBJIEVp
bmFfQm9vbCAgICBld2tfZnJhbWVfem9vbV90ZXh0X29ubHlfc2V0KEV2YXNfT2JqZWN0ICpvLCBF
aW5hX0Jvb2wgc2V0dGluZyk7CitFQVBJIEVpbmFfQm9vbCAgICBld2tfZnJhbWVfdGV4dF96b29t
X3NldChFdmFzX09iamVjdCAqbywgZmxvYXQgdGV4dFpvb21GYWN0b3IpOwogCiAvKioKICAqIEZy
ZWVzIGhpdCB0ZXN0IGluc3RhbmNlIGNyZWF0ZWQgYnkgZXdrX2ZyYW1lX2hpdF90ZXN0X25ldygp
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKaW5kZXggYWNjNzVhNGE5NzczZDc2NzFlZjky
MjljZDRlMTE1MTBjYTA3YjdmNy4uNmY5MjY5YzcwZWY4ZDI3N2VhYTM3OGYwODQ3ZWQyYTJkZmZi
YWRjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCkBAIC00NCw2ICs0NCw3IEBACiAj
aW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01XaW5kb3cuaCIKICNpbmNs
dWRlICJKU0xvY2suaCIKKyNpbmNsdWRlICJMYXlvdXRUeXBlcy5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIlBvcHVwTWVudUNsaWVudC5oIgogI2luY2x1ZGUg
IlByb2dyZXNzVHJhY2tlci5oIgpAQCAtOTM1LDcgKzkzNiw3IEBAIHN0YXRpYyBFaW5hX0Jvb2wg
X2V3a192aWV3X3NtYXJ0X3pvb21fc2V0KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkLCBmbG9hdCB6
b29tLCBFCiAgICAgZWxzZQogICAgICAgICBweSA9IDAuMDsKIAotICAgIHJldCA9IGV3a19mcmFt
ZV96b29tX3NldChzZC0+bWFpbl9mcmFtZSwgem9vbSk7CisgICAgcmV0ID0gZXdrX2ZyYW1lX3Bh
Z2Vfem9vbV9zZXQoc2QtPm1haW5fZnJhbWUsIHpvb20pOwogCiAgICAgZXdrX2ZyYW1lX3Njcm9s
bF9zaXplX2dldChzZC0+bWFpbl9mcmFtZSwgJncsICZoKTsKICAgICB4ID0gKHcgKyBzZC0+dmll
dy53KSAqIHB4IC0gY3g7CkBAIC0xNTM3LDEwICsxNTM4LDEwIEBAIEV3a19IaXN0b3J5KiBld2tf
dmlld19oaXN0b3J5X2dldChjb25zdCBFdmFzX09iamVjdCogbykKICAgICByZXR1cm4gcHJpdi0+
aGlzdG9yeTsKIH0KIAotZmxvYXQgZXdrX3ZpZXdfem9vbV9nZXQoY29uc3QgRXZhc19PYmplY3Qq
IG8pCitmbG9hdCBld2tfdmlld196b29tX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykK
IHsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAtMS4wKTsKLSAgICByZXR1
cm4gZXdrX2ZyYW1lX3pvb21fZ2V0KHNkLT5tYWluX2ZyYW1lKTsKKyAgICBFV0tfVklFV19TRF9H
RVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNkLCAtMS4wKTsKKyAgICByZXR1cm4gZXdrX2ZyYW1lX3Bh
Z2Vfem9vbV9nZXQoc2QtPm1haW5fZnJhbWUpOwogfQogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfem9v
bV9zZXQoRXZhc19PYmplY3QqIG8sIGZsb2F0IHpvb20sIEV2YXNfQ29vcmQgY3gsIEV2YXNfQ29v
cmQgY3kpCkBAIC0xNTY5LDYgKzE1NzAsNTUgQEAgRWluYV9Cb29sIGV3a192aWV3X3pvb21fc2V0
KEV2YXNfT2JqZWN0KiBvLCBmbG9hdCB6b29tLCBFdmFzX0Nvb3JkIGN4LCBFdmFzX0Nvb3IKICAg
ICByZXR1cm4gc2QtPmFwaS0+em9vbV9zZXQoc2QsIHpvb20sIGN4LCBjeSk7CiB9CiAKK2Zsb2F0
IGV3a192aWV3X3BhZ2Vfem9vbV9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCit7Cisg
ICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzZCwgLTEuMCk7CisgICAgcmV0
dXJuIGV3a19mcmFtZV9wYWdlX3pvb21fZ2V0KHNkLT5tYWluX2ZyYW1lKTsKK30KKworRWluYV9C
b29sIGV3a192aWV3X3BhZ2Vfem9vbV9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGZsb2F0IHBh
Z2Vab29tRmFjdG9yKQoreworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywg
c2QsIEVJTkFfRkFMU0UpOworICAgIHJldHVybiBld2tfZnJhbWVfcGFnZV96b29tX3NldChzZC0+
bWFpbl9mcmFtZSwgcGFnZVpvb21GYWN0b3IpOworfQorCitmbG9hdCBld2tfdmlld19zY2FsZV9n
ZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09S
X1JFVFVSTihld2tWaWV3LCBzZCwgLTEuMCk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVU
VVJOKHNkLCBwcml2LCAtMS4wKTsKKyAgICByZXR1cm4gcHJpdi0+cGFnZS0+cGFnZVNjYWxlRmFj
dG9yKCk7Cit9CisKK0VpbmFfQm9vbCBld2tfdmlld19zY2FsZV9zZXQoRXZhc19PYmplY3QqIGV3
a1ZpZXcsIGZsb2F0IHNjYWxlRmFjdG9yLCBFdmFzX0Nvb3JkIGN4LCBFdmFzX0Nvb3JkIGN5KQor
eworICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc2QsIEVJTkFfRkFMU0Up
OworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzZCwgcHJpdiwgRUlOQV9GQUxTRSk7
CisKKyAgICBmbG9hdCBjdXJyZW50U2NhbGVGYWN0b3IgPSBld2tfdmlld19zY2FsZV9nZXQoZXdr
Vmlldyk7CisgICAgaWYgKGN1cnJlbnRTY2FsZUZhY3RvciA9PSAtMSkKKyAgICAgICAgcmV0dXJu
IEVJTkFfRkFMU0U7CisKKyAgICBpbnQgeCwgeTsKKyAgICBld2tfZnJhbWVfc2Nyb2xsX3Bvc19n
ZXQoc2QtPm1haW5fZnJhbWUsICZ4LCAmeSk7CisKKyAgICB4ID0gKHN0YXRpY19jYXN0PGRvdWJs
ZT4oeCArIGN4KSAvIGN1cnJlbnRTY2FsZUZhY3RvciAqIHNjYWxlRmFjdG9yKSAtIGN4OworICAg
IHkgPSAoc3RhdGljX2Nhc3Q8ZG91YmxlPih5ICsgY3kpIC8gY3VycmVudFNjYWxlRmFjdG9yICog
c2NhbGVGYWN0b3IpIC0gY3k7CisgICAgcHJpdi0+cGFnZS0+c2V0UGFnZVNjYWxlRmFjdG9yKHNj
YWxlRmFjdG9yLCBXZWJDb3JlOjpMYXlvdXRQb2ludCh4LCB5KSk7CisgICAgcmV0dXJuIEVJTkFf
VFJVRTsKK30KKworZmxvYXQgZXdrX3ZpZXdfdGV4dF96b29tX2dldChjb25zdCBFdmFzX09iamVj
dCogZXdrVmlldykKK3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNk
LCAtMS4wKTsKKyAgICByZXR1cm4gZXdrX2ZyYW1lX3RleHRfem9vbV9nZXQoc2QtPm1haW5fZnJh
bWUpOworfQorCitFaW5hX0Jvb2wgZXdrX3ZpZXdfdGV4dF96b29tX3NldChFdmFzX09iamVjdCog
ZXdrVmlldywgZmxvYXQgdGV4dFpvb21GYWN0b3IpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09S
X1JFVFVSTihld2tWaWV3LCBzZCwgRUlOQV9GQUxTRSk7CisgICAgcmV0dXJuIGV3a19mcmFtZV90
ZXh0X3pvb21fc2V0KHNkLT5tYWluX2ZyYW1lLCB0ZXh0Wm9vbUZhY3Rvcik7Cit9CisKIEVpbmFf
Qm9vbCBld2tfdmlld196b29tX3dlYWtfc21vb3RoX3NjYWxlX2dldChjb25zdCBFdmFzX09iamVj
dCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNF
KTsKQEAgLTE2MDksNyArMTY1OSw3IEBAIEVpbmFfQm9vbCBld2tfdmlld196b29tX3dlYWtfc2V0
KEV2YXNfT2JqZWN0KiBvLCBmbG9hdCB6b29tLCBFdmFzX0Nvb3JkIGN4LCBFdmFzCiAgICAgICAg
IHJldHVybiBFSU5BX0ZBTFNFOwogICAgIH0KIAotICAgIHNkLT5hbmltYXRlZF96b29tLnpvb20u
c3RhcnQgPSBld2tfZnJhbWVfem9vbV9nZXQoc2QtPm1haW5fZnJhbWUpOworICAgIHNkLT5hbmlt
YXRlZF96b29tLnpvb20uc3RhcnQgPSBld2tfZnJhbWVfcGFnZV96b29tX2dldChzZC0+bWFpbl9m
cmFtZSk7CiAgICAgc2QtPmFuaW1hdGVkX3pvb20uem9vbS5lbmQgPSB6b29tOwogICAgIHNkLT5h
bmltYXRlZF96b29tLnpvb20uY3VycmVudCA9IHpvb207CiAgICAgcmV0dXJuIHNkLT5hcGktPnpv
b21fd2Vha19zZXQoc2QsIHpvb20sIGN4LCBjeSk7CkBAIC0xNjY4LDcgKzE3MTgsNyBAQCBFaW5h
X0Jvb2wgZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9zZXQoRXZhc19PYmplY3QqIG8sIGZsb2F0IHpv
b20sIGZsb2F0IGR1cmF0aW9uLAogICAgIGlmIChwcml2LT5hbmltYXRlZF96b29tLmFuaW1hdG9y
KQogICAgICAgICBwcml2LT5hbmltYXRlZF96b29tLnpvb20uc3RhcnQgPSBfZXdrX3ZpZXdfem9v
bV9hbmltYXRlZF9jdXJyZW50KHByaXYpOwogICAgIGVsc2UgewotICAgICAgICBwcml2LT5hbmlt
YXRlZF96b29tLnpvb20uc3RhcnQgPSBld2tfZnJhbWVfem9vbV9nZXQoc2QtPm1haW5fZnJhbWUp
OworICAgICAgICBwcml2LT5hbmltYXRlZF96b29tLnpvb20uc3RhcnQgPSBld2tfZnJhbWVfcGFn
ZV96b29tX2dldChzZC0+bWFpbl9mcmFtZSk7CiAgICAgICAgIF9ld2tfdmlld196b29tX2FuaW1h
dGlvbl9zdGFydChzZCk7CiAgICAgfQogCkBAIC0xNjkyLDE4ICsxNzQyLDYgQEAgRWluYV9Cb29s
IGV3a192aWV3X3pvb21fYW5pbWF0ZWRfc2V0KEV2YXNfT2JqZWN0KiBvLCBmbG9hdCB6b29tLCBm
bG9hdCBkdXJhdGlvbiwKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1FaW5hX0Jvb2wgZXdr
X3ZpZXdfem9vbV90ZXh0X29ubHlfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQotewotICAgIEVX
S19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwotICAgIHJldHVybiBl
d2tfZnJhbWVfem9vbV90ZXh0X29ubHlfZ2V0KHNkLT5tYWluX2ZyYW1lKTsKLX0KLQotRWluYV9C
b29sIGV3a192aWV3X3pvb21fdGV4dF9vbmx5X3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29s
IHNldHRpbmcpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9G
QUxTRSk7Ci0gICAgcmV0dXJuIGV3a19mcmFtZV96b29tX3RleHRfb25seV9zZXQoc2QtPm1haW5f
ZnJhbWUsIHNldHRpbmcpOwotfQotCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfcHJlX3JlbmRlcl9yZWdp
b24oRXZhc19PYmplY3QqIG8sIEV2YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5LCBFdmFzX0Nvb3Jk
IHcsIEV2YXNfQ29vcmQgaCwgZmxvYXQgem9vbSkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1Jf
UkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKQEAgLTE3MTgsNyArMTc1Niw3IEBAIEVpbmFfQm9v
bCBld2tfdmlld19wcmVfcmVuZGVyX3JlZ2lvbihFdmFzX09iamVjdCogbywgRXZhc19Db29yZCB4
LCBFdmFzX0Nvb3JkIHksCiAgICAgaWYgKHByaXYtPmFuaW1hdGVkX3pvb20uYW5pbWF0b3IpCiAg
ICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOwogCi0gICAgY3VyX3pvb20gPSBld2tfZnJhbWVfem9v
bV9nZXQoc2QtPm1haW5fZnJhbWUpOworICAgIGN1cl96b29tID0gZXdrX2ZyYW1lX3BhZ2Vfem9v
bV9nZXQoc2QtPm1haW5fZnJhbWUpOwogCiAgICAgaWYgKGN1cl96b29tIDwgMC4wMDAwMSkKICAg
ICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CkBAIC0xNzU3LDcgKzE3OTUsNyBAQCBFaW5hX0Jvb2wg
ZXdrX3ZpZXdfcHJlX3JlbmRlcl9yZWxhdGl2ZV9yYWRpdXMoRXZhc19PYmplY3QqIG8sIHVuc2ln
bmVkIGludCBuKQogICAgIGlmIChwcml2LT5hbmltYXRlZF96b29tLmFuaW1hdG9yKQogICAgICAg
ICByZXR1cm4gRUlOQV9GQUxTRTsKIAotICAgIGN1cl96b29tID0gZXdrX2ZyYW1lX3pvb21fZ2V0
KHNkLT5tYWluX2ZyYW1lKTsKKyAgICBjdXJfem9vbSA9IGV3a19mcmFtZV9wYWdlX3pvb21fZ2V0
KHNkLT5tYWluX2ZyYW1lKTsKICAgICByZXR1cm4gc2QtPmFwaS0+cHJlX3JlbmRlcl9yZWxhdGl2
ZV9yYWRpdXMoc2QsIG4sIGN1cl96b29tKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9lZmwvZXdrL2V3a192aWV3LmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuaApp
bmRleCAyN2Q2YTZiYzI0M2Y1ZTQ5YjE5YTY4OGRhNmE5OWQ3NzkyYTNkODNjLi40YjEwZThkZTg5
OTcwZWZmY2YwMDUyNjQ2MWI5NDJiOGQ1M2MwZWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX3ZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcu
aApAQCAtOTcyLDYgKzk3Miw2NSBAQCBFQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19oaXN0b3J5
X2VuYWJsZV9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBlbmFibGUpOwogRUFQSSBFd2tf
SGlzdG9yeSAqZXdrX3ZpZXdfaGlzdG9yeV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwogCiAv
KioKKyAqIEdldHMgdGhlIGN1cnJlbnQgcGFnZSB6b29tIGxldmVsIG9mIHRoZSBtYWluIGZyYW1l
LgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIGdldCB0aGUgem9vbSBsZXZlbAorICoK
KyAqIEByZXR1cm4gY3VycmVudCB6b29tIGxldmVsIGluIHVzZSBvbiBzdWNjZXNzIG9yIEBjIC0x
LjAgb24gZmFpbHVyZQorICovCitFQVBJIGZsb2F0ICAgICAgICBld2tfdmlld19wYWdlX3pvb21f
Z2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKKworLyoqCisgKiBTZXRzIHRoZSBjdXJyZW50IHBh
Z2Ugem9vbSBsZXZlbCBvZiB0aGUgbWFpbiBmcmFtZS4KKyAqCisgKiBAcGFyYW0gbyB2aWV3IG9i
amVjdCB0byBzZXQgdGhlIHpvb20gbGV2ZWwKKyAqIEBwYXJhbSBwYWdlWm9vbUZhY3RvciBhIG5l
dyBsZXZlbCB0byBzZXQKKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIG9y
IEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCisgKi8KK0VBUEkgRWluYV9Cb29sICAgIGV3a192aWV3
X3BhZ2Vfem9vbV9zZXQoRXZhc19PYmplY3QgKm8sIGZsb2F0IHBhZ2Vab29tRmFjdG9yKTsKKwor
LyoqCisgKiBHZXRzIHRoZSBjdXJyZW50IHNjYWxlIGZhY3RvciBvZiB0aGUgcGFnZS4KKyAqCisg
KiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBnZXQgdGhlIHNjYWxlIGZhY3RvciAKKyAqCisgKiBA
cmV0dXJuIGN1cnJlbnQgc2NhbGUgZmFjdG9yIGluIHVzZSBvbiBzdWNjZXNzIG9yIEBjIC0xLjAg
b24gZmFpbHVyZQorICovCitFQVBJIGZsb2F0ICAgICAgICBld2tfdmlld19zY2FsZV9nZXQoY29u
c3QgRXZhc19PYmplY3QgKm8pOworCisvKioKKyAqIFNjYWxlcyB0aGUgY3VycmVudCBwYWdlLCBj
ZW50ZXJlZCBhdCB0aGUgZ2l2ZW4gcG9pbnQuCisgKgorICogQHBhcmFtIG8gdmlldyBvYmplY3Qg
dG8gc2V0IHRoZSB6b29tIGxldmVsCisgKiBAcGFyYW0gc2NhbGVGYWN0b3IgYSBuZXcgbGV2ZWwg
dG8gc2V0CisgKiBAcGFyYW0gY3ggeCBvZiBjZW50ZXIgY29vcmRpbmF0ZQorICogQHBhcmFtIGN5
IHkgb2YgY2VudGVyIGNvb3JkaW5hdGUKKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBz
dWNjZXNzIG9yIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCisgKi8KK0VBUEkgRWluYV9Cb29sICAg
IGV3a192aWV3X3NjYWxlX3NldChFdmFzX09iamVjdCAqbywgZmxvYXQgc2NhbGVGYWN0b3IsIEV2
YXNfQ29vcmQgY3gsIEV2YXNfQ29vcmQgY3kpOworCisvKioKKyAqIEdldHMgdGhlIGN1cnJlbnQg
dGV4dCB6b29tIGxldmVsIG9mIHRoZSBtYWluIGZyYW1lLgorICoKKyAqIEBwYXJhbSBvIHZpZXcg
b2JqZWN0IHRvIGdldCB0aGUgem9vbSBsZXZlbAorICoKKyAqIEByZXR1cm4gY3VycmVudCB6b29t
IGxldmVsIGluIHVzZSBvbiBzdWNjZXNzIG9yIEBjIC0xLjAgb24gZmFpbHVyZQorICovCitFQVBJ
IGZsb2F0ICAgICAgICBld2tfdmlld190ZXh0X3pvb21fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpv
KTsKKworLyoqCisgKiBTZXRzIHRoZSBjdXJyZW50IHRleHQgem9vbSBsZXZlbCBvZiB0aGUgbWFp
biBmcmFtZS4KKyAqCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBzZXQgdGhlIHpvb20gbGV2
ZWwKKyAqIEBwYXJhbSB0ZXh0Wm9vbUZhY3RvciBhIG5ldyBsZXZlbCB0byBzZXQKKyAqCisgKiBA
cmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIG9yIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNl
CisgKi8KK0VBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3RleHRfem9vbV9zZXQoRXZhc19PYmpl
Y3QgKm8sIGZsb2F0IHRleHRab29tRmFjdG9yKTsKKworLyoqCiAgKiBHZXRzIHRoZSBjdXJyZW50
IHpvb20gbGV2ZWwgb2YgdGhlIG1haW4gZnJhbWUuCiAgKgogICogQHBhcmFtIG8gdmlldyBvYmpl
Y3QgdG8gZ2V0IHRoZSB6b29tIGxldmVsCkBAIC0xMTM4LDI1ICsxMTk3LDYgQEAgRUFQSSBFaW5h
X0Jvb2wgICAgZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9tYXJrX3N0b3AoRXZhc19PYmplY3QgKm8p
OwogRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9zZXQoRXZhc19PYmpl
Y3QgKm8sIGZsb2F0IHpvb20sIGZsb2F0IGR1cmF0aW9uLCBFdmFzX0Nvb3JkIGN4LCBFdmFzX0Nv
b3JkIGN5KTsKIAogLyoqCi0gKiBRdWVyaWVzIGlmIHpvb20gbGV2ZWwganVzdCBhcHBsaWVzIHRv
IHRleHQgb25seSBhbmQgbm90IG90aGVyIGVsZW1lbnRzLgotICoKLSAqIEBwYXJhbSBvIHZpZXcg
dG8gcXVlcnkgem9vbSBsZXZlbCBmb3IgdGV4dCBvbmx5Ci0gKgotICogQHJldHVybiBAYyBFSU5B
X1RSVUUgaWYgem9vbSBsZXZlbCBpcyBhcHBsaWVkIHRvIHRleHQgb25seSwgQGMgRUlOQV9GQUxT
RSBpZiBub3Qgb3Igb24gZmFpbHVyZQotICovCi1FQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld196
b29tX3RleHRfb25seV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwotCi0vKioKLSAqIFNldHMg
aWYgem9vbSBsZXZlbCBqdXN0IGFwcGxpZXMgdG8gdGV4dCBvbmx5IGFuZCBub3Qgb3RoZXIgZWxl
bWVudHMuCi0gKgotICogQHBhcmFtIG8gdmlldyB0byBhcHBseSB6b29tIGxldmVsIGZvciB0ZXh0
IG9ubHkKLSAqIEBwYXJhbSBzZXR0aW5nIEBjIEVJTkFfVFJVRSBpZiB6b29tIGxldmVsIHNob3Vs
ZCBiZSBhcHBsaWVkIHRvIHRleHQgb25seSwgQGMgRUlOQV9GQUxTRSBpZiBub3QKLSAqCi0gKiBA
cmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIG9yIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNl
Ci0gKi8KLUVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3pvb21fdGV4dF9vbmx5X3NldChFdmFz
X09iamVjdCAqbywgRWluYV9Cb29sIHNldHRpbmcpOwotCi0vKioKICAqIEFza3MgZW5naW5lIHRv
IHByZS1yZW5kZXIgcmVnaW9uLgogICoKICAqIEVuZ2luZXMgYW5kIGJhY2tpbmcgc3RvcmUgbWln
aHQgYmUgYWJsZSB0byBwcmUtcmVuZGVyIHJlZ2lvbnMgaW4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110067</attachid>
            <date>2011-10-06 17:28:03 -0700</date>
            <delta_ts>2011-10-06 18:16:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62842-20111007092801.patch</filename>
            <type>text/plain</type>
            <size>16737</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTY4NzcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZs
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCA5OTcwZjYwMWI0
YWQ1NDlkYjVmNjY2OGQ3NDliYmFjMWE2MDY4NjllLi43NGY1YWViYzM5M2I3YjllYzMwMDBmYTBi
YTMzMWFkM2I4NzFmNDVhIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTEt
MTAtMDYgIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtF
RkxdIFJlZmFjdG9yIHpvb20gcmVsYXRlZCBBUElzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjI4NDIKKworICAgICAgICBDdXJyZW50IHpvb20gYXBp
cyBjYW4ndCBzdXBwb3J0IHRoZSBjYXNlIG9mIHVzaW5nIGJvdGggcGFnZSB6b29tIGFuZCB0ZXh0
CisgICAgICAgIHpvb20uCisKKyAgICAgICAgQXMgYSBmaXJzdCBzdGVwIHRvIHJlZmFjdG9yLCB0
aGlzIHNwbGl0IGV3a197dmlld3xmcmFtZX1fem9vbV97Z2V0fHNldH0KKyAgICAgICAgdG8gdXNl
IGJvdGggcGFnZV96b29tIGFuZCB0ZXh0IHpvb20gaW5kaXZpZHVhbGx5LgorICAgICAgICBJbiBh
ZGRpdGlvbiwgaW50cm9kdWNlIGV3a192aWV3X3NjYWxlX3tnZXR8c2V0fSB0byBzdXBwb3J0IHBy
b3BvcnRpb25hbCBzY2FsaW5nLgorCisgICAgICAgIGV3a192aWV3X3pvb21fe2dldHxzZXR9IHdp
bGwgcmVtYWluIHVuY2hhbmdlZCB1bnRpbCB0aGUgYmVoYXZpb3Igb2Ygc21hcnRfem9vbQorICAg
ICAgICB3YXMgY2hhbmdlZC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOiBSZW1vdmUgZXdrX2ZyYW1lX3pvb21fdGV4
dF9vbmx5X3tnZXR8c2V0fS4KKyAgICAgICAgKGV3a19mcmFtZV9wYWdlX3pvb21fZ2V0KTogUmVu
YW1lZCBmcm9tIGV3a19mcmFtZV96b29tX2dldCgpLgorICAgICAgICAoZXdrX2ZyYW1lX3BhZ2Vf
em9vbV9zZXQpOiBSZW5hbWVkIGZyb20gZXdrX2ZyYW1lX3pvb21fc2V0KCkuCisgICAgICAgIChl
d2tfZnJhbWVfdGV4dF96b29tX2dldCk6IEV4dHJhY3RlZCBmcm9tIGV3a19mcmFtZV96b29tX2dl
dCgpLgorICAgICAgICAoZXdrX2ZyYW1lX3RleHRfem9vbV9zZXQpOiBFeHRyYWN0ZWQgZnJvbSBl
d2tfZnJhbWVfem9vbV9zZXQoKS4KKyAgICAgICAgKiBld2svZXdrX2ZyYW1lLmg6CisgICAgICAg
ICogZXdrL2V3a192aWV3LmNwcDogUmVtb3ZlIGV3a192aWV3X3pvb21fdGV4dF9vbmx5X3tnZXR8
c2V0fQorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X3pvb21fc2V0KTogQ2hhbmdlIGV3a19mcmFt
ZV96b29tX2dldCgpIHRvIGV3a19mcmFtZV9wYWdlX3pvb21fZ2V0KCkuCisgICAgICAgIChld2tf
dmlld196b29tX2dldCk6IENoYW5nZSBld2tfZnJhbWVfem9vbV9nZXQoKSB0byBld2tfZnJhbWVf
cGFnZV96b29tX2dldCgpLgorICAgICAgICAoZXdrX3ZpZXdfcGFnZV96b29tX2dldCk6IEV4dHJh
Y3RlZCBmcm9tIGV3a192aWV3X3pvb21fZ2V0KCkuCisgICAgICAgIChld2tfdmlld19wYWdlX3pv
b21fc2V0KTogRXh0cmFjdGVkIGZyb20gZXdrX3ZpZXdfem9vbV9zZXQoKS4KKyAgICAgICAgKGV3
a192aWV3X3NjYWxlX2dldCk6IEFkZGVkLgorICAgICAgICAoZXdrX3ZpZXdfc2NhbGVfc2V0KTog
QWRkZWQuCisgICAgICAgIChld2tfdmlld190ZXh0X3pvb21fZ2V0KTogRXh0cmFjdGVkIGZyb20g
ZXdrX3ZpZXdfem9vbV9nZXQoKS4KKyAgICAgICAgKGV3a192aWV3X3RleHRfem9vbV9zZXQpOiBF
eHRyYWN0ZWQgZnJvbSBld2tfdmlld196b29tX3NldCgpLgorICAgICAgICAoZXdrX3ZpZXdfem9v
bV93ZWFrX3NldCk6IENoYW5nZSBld2tfZnJhbWVfem9vbV9nZXQgdG8gZXdrX2ZyYW1lX3BhZ2Vf
em9vbV9nZXQoKS4KKyAgICAgICAgKGV3a192aWV3X3pvb21fYW5pbWF0ZWRfc2V0KTogQ2hhbmdl
IGV3a19mcmFtZV96b29tX2dldCgpIHRvIGV3a19mcmFtZV9wYWdlX3pvb21fZ2V0KCkuCisgICAg
ICAgIChld2tfdmlld19wcmVfcmVuZGVyX3JlZ2lvbik6IENoYW5nZSBld2tfZnJhbWVfem9vbV9n
ZXQoKSB0byBld2tfZnJhbWVfcGFnZV96b29tX2dldCgpLgorICAgICAgICAoZXdrX3ZpZXdfcHJl
X3JlbmRlcl9yZWxhdGl2ZV9yYWRpdXMpOiBDaGFuZ2UgZXdrX2ZyYW1lX3pvb21fZ2V0KCkgdG8g
ZXdrX2ZyYW1lX3BhZ2Vfem9vbV9nZXQoKS4KKyAgICAgICAgKiBld2svZXdrX3ZpZXcuaDoKKwog
MjAxMS0xMC0wNCAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgogCiAg
ICAgICAgIFtFRkxdIE9ubHkgc2V0IHdoZW4gdGhlIGN1c3RvbSBlbmNvZGluZyBpcyBkaWZmZXJl
bnQgZnJvbSBleGlzdGluZyB2YWx1ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdr
L2V3a19mcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcAppbmRl
eCBiYzhmOGFlNjZlM2U2OGE3MzA1ZWFmYTFmOWM5MjM5NDg2MmY1OTFhLi44NGQ1MDQ0ZDFhMmVm
OTYzYWMxNzVjOGJmODEzMjYxYzc3YjhhMzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX2ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1l
LmNwcApAQCAtNzUsNyArNzUsNiBAQCBzdHJ1Y3QgRXdrX0ZyYW1lX1NtYXJ0X0RhdGEgewogICAg
IHN0cnVjdCB7CiAgICAgICAgIEV2YXNfQ29vcmQgdywgaDsKICAgICB9IGNvbnRlbnRzX3NpemU7
Ci0gICAgRWluYV9Cb29sIHRleHRab29tIDogMTsKICAgICBFaW5hX0Jvb2wgZWRpdGFibGUgOiAx
OwogfTsKIApAQCAtNjEyLDQ2ICs2MTEsMzMgQEAgRWluYV9Cb29sIGV3a19mcmFtZV9uYXZpZ2F0
ZV9wb3NzaWJsZShFdmFzX09iamVjdCogbywgaW50IHN0ZXBzKQogICAgIHJldHVybiBwYWdlLT5j
YW5Hb0JhY2tPckZvcndhcmQoc3RlcHMpOwogfQogCi1mbG9hdCBld2tfZnJhbWVfem9vbV9nZXQo
Y29uc3QgRXZhc19PYmplY3QqIG8pCitmbG9hdCBld2tfZnJhbWVfcGFnZV96b29tX2dldChjb25z
dCBFdmFzX09iamVjdCogZXdrRnJhbWUpCiB7Ci0gICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRV
Uk4obywgc2QsIC0xLjApOworICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1l
LCBzZCwgLTEuMCk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLT5mcmFt
ZSwgLTEuMCk7Ci0KLSAgICBpZiAoc2QtPnRleHRab29tKQotICAgICAgICByZXR1cm4gc2QtPmZy
YW1lLT50ZXh0Wm9vbUZhY3RvcigpOwogICAgIHJldHVybiBzZC0+ZnJhbWUtPnBhZ2Vab29tRmFj
dG9yKCk7CiB9CiAKLUVpbmFfQm9vbCBld2tfZnJhbWVfem9vbV9zZXQoRXZhc19PYmplY3QqIG8s
IGZsb2F0IHpvb20pCitFaW5hX0Jvb2wgZXdrX2ZyYW1lX3BhZ2Vfem9vbV9zZXQoRXZhc19PYmpl
Y3QqIGV3a0ZyYW1lLCBmbG9hdCBwYWdlWm9vbUZhY3RvcikKIHsKLSAgICBFV0tfRlJBTUVfU0Rf
R0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CisgICAgRVdLX0ZSQU1FX1NEX0dFVF9P
Ul9SRVRVUk4oZXdrRnJhbWUsIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTl9WQUwoc2QtPmZyYW1lLCBFSU5BX0ZBTFNFKTsKLSAgICBpZiAoc2QtPnRleHRa
b29tKQotICAgICAgICBzZC0+ZnJhbWUtPnNldFRleHRab29tRmFjdG9yKHpvb20pOwotICAgIGVs
c2UKLSAgICAgICAgc2QtPmZyYW1lLT5zZXRQYWdlWm9vbUZhY3Rvcih6b29tKTsKKyAgICBzZC0+
ZnJhbWUtPnNldFBhZ2Vab29tRmFjdG9yKHBhZ2Vab29tRmFjdG9yKTsKICAgICByZXR1cm4gRUlO
QV9UUlVFOwogfQogCi1FaW5hX0Jvb2wgZXdrX2ZyYW1lX3pvb21fdGV4dF9vbmx5X2dldChjb25z
dCBFdmFzX09iamVjdCogbykKK2Zsb2F0IGV3a19mcmFtZV90ZXh0X3pvb21fZ2V0KGNvbnN0IEV2
YXNfT2JqZWN0KiBld2tGcmFtZSkKIHsKLSAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihv
LCBzZCwgRUlOQV9GQUxTRSk7Ci0gICAgcmV0dXJuIHNkLT50ZXh0Wm9vbTsKKyAgICBFV0tfRlJB
TUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc2QsIC0xLjApOworICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOX1ZBTChzZC0+ZnJhbWUsIC0xLjApOworICAgIHJldHVybiBzZC0+ZnJh
bWUtPnRleHRab29tRmFjdG9yKCk7CiB9CiAKLUVpbmFfQm9vbCBld2tfZnJhbWVfem9vbV90ZXh0
X29ubHlfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgc2V0dGluZykKK0VpbmFfQm9vbCBl
d2tfZnJhbWVfdGV4dF96b29tX3NldChFdmFzX09iamVjdCogZXdrRnJhbWUsIGZsb2F0IHRleHRa
b29tRmFjdG9yKQogewotICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5B
X0ZBTFNFKTsKKyAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc2QsIEVJ
TkFfRkFMU0UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+ZnJhbWUs
IEVJTkFfRkFMU0UpOwotICAgIGlmIChzZC0+dGV4dFpvb20gPT0gc2V0dGluZykKLSAgICAgICAg
cmV0dXJuIEVJTkFfVFJVRTsKLQotICAgIGZsb2F0IHpvb21fbGV2ZWwgPSBzZC0+dGV4dFpvb20g
PyBzZC0+ZnJhbWUtPnRleHRab29tRmFjdG9yKCkgOiBzZC0+ZnJhbWUtPnBhZ2Vab29tRmFjdG9y
KCk7Ci0gICAgc2QtPnRleHRab29tID0gc2V0dGluZzsKLSAgICBpZiAoc2QtPnRleHRab29tKQot
ICAgICAgICBzZC0+ZnJhbWUtPnNldFBhZ2VBbmRUZXh0Wm9vbUZhY3RvcnMoMSwgem9vbV9sZXZl
bCk7Ci0gICAgZWxzZQotICAgICAgICBzZC0+ZnJhbWUtPnNldFBhZ2VBbmRUZXh0Wm9vbUZhY3Rv
cnMoem9vbV9sZXZlbCwgMSk7CisgICAgc2QtPmZyYW1lLT5zZXRUZXh0Wm9vbUZhY3Rvcih0ZXh0
Wm9vbUZhY3Rvcik7CiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a19mcmFtZS5oCmluZGV4IDY2MmIwZDVhNmUwZjBjZDNjM2IxODYxNGM0NzQ5Y2ZkMmM2N2JiNzAu
LjVlYzllOGQzNGMwNzllZWZkMjgwOTlkMjk1MzVhNzEwZDI3MGNmMzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX2ZyYW1lLmgKQEAgLTUyMCw0NCArNTIwLDUwIEBAIEVBUEkgRWluYV9Cb29sICAgIGV3
a19mcmFtZV9mb3J3YXJkX3Bvc3NpYmxlKEV2YXNfT2JqZWN0ICpvKTsKIEVBUEkgRWluYV9Cb29s
ICAgIGV3a19mcmFtZV9uYXZpZ2F0ZV9wb3NzaWJsZShFdmFzX09iamVjdCAqbywgaW50IHN0ZXBz
KTsKIAogLyoqCi0gKiBHZXRzIHRoZSBjdXJyZW50IHpvb20gbGV2ZWwgdXNlZCBieSB0aGlzIGZy
YW1lLgorICogR2V0cyB0aGUgY3VycmVudCBwYWdlIHpvb20gbGV2ZWwgdXNlZCBieSB0aGlzIGZy
YW1lLgogICoKICAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBnZXQgem9vbSBsZXZlbAogICoK
LSAqIEByZXR1cm4gem9vbSBsZXZlbCBmb3IgdGhlIGZyYW1lIG9yIEBjIC0xLjAgb24gZmFpbHVy
ZQorICogQHJldHVybiBwYWdlIHpvb20gbGV2ZWwgZm9yIHRoZSBmcmFtZSBvciBAYyAtMS4wIG9u
IGZhaWx1cmUKKyAqCisgKiBAc2VlIGV3a19mcmFtZV90ZXh0X3pvb21fZ2V0KCkKICAqLwotRUFQ
SSBmbG9hdCAgICAgICAgZXdrX2ZyYW1lX3pvb21fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsK
K0VBUEkgZmxvYXQgICAgICAgIGV3a19mcmFtZV9wYWdlX3pvb21fZ2V0KGNvbnN0IEV2YXNfT2Jq
ZWN0ICpvKTsKIAogLyoqCi0gKiBTZXRzIHRoZSBjdXJyZW50IHpvb20gbGV2ZWwgdXNlZCBieSB0
aGlzIGZyYW1lLgorICogU2V0cyB0aGUgY3VycmVudCBwYWdlIHpvb20gbGV2ZWwgdXNlZCBieSB0
aGlzIGZyYW1lLgogICoKICAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBjaGFuZ2Ugem9vbSBs
ZXZlbAotICogQHBhcmFtIHpvb20gYSBuZXcgem9vbSBsZXZlbAorICogQHBhcmFtIHBhZ2Vab29t
RmFjdG9yIGEgbmV3IHpvb20gbGV2ZWwKICAqCiAgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBz
dWNjZXNzIG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQogICoKLSAqIEBzZWUgZXdrX2ZyYW1l
X3pvb21fdGV4dF9vbmx5X3NldCgpCisgKiBAc2VlIGV3a19mcmFtZV90ZXh0X3pvb21fc2V0KCkK
ICAqLwotRUFQSSBFaW5hX0Jvb2wgICAgZXdrX2ZyYW1lX3pvb21fc2V0KEV2YXNfT2JqZWN0ICpv
LCBmbG9hdCB6b29tKTsKK0VBUEkgRWluYV9Cb29sICAgIGV3a19mcmFtZV9wYWdlX3pvb21fc2V0
KEV2YXNfT2JqZWN0ICpvLCBmbG9hdCBwYWdlWm9vbUZhY3Rvcik7CiAKIC8qKgotICogUXVlcmll
cyBpZiB6b29tIGxldmVsIGp1c3QgYXBwbGllcyB0byB0ZXh0IG9ubHkgYW5kIG5vdCBvdGhlciBl
bGVtZW50cy4KKyAqIEdldHMgdGhlIGN1cnJlbnQgdGV4dCB6b29tIGxldmVsIHVzZWQgYnkgdGhp
cyBmcmFtZS4KKyAqCisgKiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gZ2V0IHpvb20gbGV2ZWwK
ICAqCi0gKiBAcGFyYW0gbyBmcmFtZSB0byBxdWVyeSB6b29tIGxldmVsIGZvciB0ZXh0IG9ubHkK
KyAqIEByZXR1cm4gdGV4dCB6b29tIGxldmVsIGZvciB0aGUgZnJhbWUgb3IgQGMgLTEuMCBvbiBm
YWlsdXJlCiAgKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgem9vbSBsZXZlbCBpcyBhcHBs
aWVkIHRvIHRleHQgb25seSwgQGMgRUlOQV9GQUxTRSBpZiBub3Qgb3Igb24gZmFpbHVyZQorICog
QHNlZSBld2tfZnJhbWVfcGFnZV96b29tX2dldCgpCiAgKi8KLUVBUEkgRWluYV9Cb29sICAgIGV3
a19mcmFtZV96b29tX3RleHRfb25seV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOworRUFQSSBm
bG9hdCAgICAgICAgZXdrX2ZyYW1lX3RleHRfem9vbV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8p
OwogCiAvKioKLSAqIFNldHMgaWYgem9vbSBsZXZlbCBqdXN0IGFwcGxpZXMgdG8gdGV4dCBvbmx5
IGFuZCBub3Qgb3RoZXIgZWxlbWVudHMuCisgKiBTZXRzIHRoZSBjdXJyZW50IHRleHQgem9vbSBs
ZXZlbCB1c2VkIGJ5IHRoaXMgZnJhbWUuCiAgKgotICogQHBhcmFtIG8gZnJhbWUgdG8gYXBwbHkg
em9vbSBsZXZlbCBmb3IgdGV4dCBvbmx5Ci0gKiBAcGFyYW0gc2V0dGluZyBAYyBFSU5BX1RSVUUg
aWYgem9vbSBsZXZlbCBzaG91bGQgYmUgYXBwbGllZCB0byB0ZXh0IG9ubHksIEBjIEVJTkFfRkFM
U0UgaWYgbm90CisgKiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gY2hhbmdlIHpvb20gbGV2ZWwK
KyAqIEBwYXJhbSB0ZXh0Wm9vbUZhY3RvciBhIG5ldyB6b29tIGxldmVsCiAgKgotICogQHJldHVy
biBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcywgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKKyAqIEBy
ZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJl
CisgKgorICogQHNlZSBld2tfZnJhbWVfcGFnZV96b29tX3NldCgpCiAgKi8KLUVBUEkgRWluYV9C
b29sICAgIGV3a19mcmFtZV96b29tX3RleHRfb25seV9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFf
Qm9vbCBzZXR0aW5nKTsKK0VBUEkgRWluYV9Cb29sICAgIGV3a19mcmFtZV90ZXh0X3pvb21fc2V0
KEV2YXNfT2JqZWN0ICpvLCBmbG9hdCB0ZXh0Wm9vbUZhY3Rvcik7CiAKIC8qKgogICogRnJlZXMg
aGl0IHRlc3QgaW5zdGFuY2UgY3JlYXRlZCBieSBld2tfZnJhbWVfaGl0X3Rlc3RfbmV3KCkuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAppbmRleCBhY2M3NWE0YTk3NzNkNzY3MWVmOTIyOWNk
NGUxMTUxMGNhMDdiN2Y3Li41YjcxMDY0M2YyZGI2YTAxZjI4ZTRlYTk1ZGVkYjVmZjA3NjlhMWEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNs
dWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvdy5oIgogI2luY2x1ZGUg
IkpTTG9jay5oIgorI2luY2x1ZGUgIkxheW91dFR5cGVzLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1N
b3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiUG9wdXBNZW51Q2xpZW50LmgiCiAjaW5jbHVkZSAiUHJv
Z3Jlc3NUcmFja2VyLmgiCkBAIC05MzUsNyArOTM2LDcgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdr
X3ZpZXdfc21hcnRfem9vbV9zZXQoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QsIGZsb2F0IHpvb20s
IEUKICAgICBlbHNlCiAgICAgICAgIHB5ID0gMC4wOwogCi0gICAgcmV0ID0gZXdrX2ZyYW1lX3pv
b21fc2V0KHNkLT5tYWluX2ZyYW1lLCB6b29tKTsKKyAgICByZXQgPSBld2tfZnJhbWVfcGFnZV96
b29tX3NldChzZC0+bWFpbl9mcmFtZSwgem9vbSk7CiAKICAgICBld2tfZnJhbWVfc2Nyb2xsX3Np
emVfZ2V0KHNkLT5tYWluX2ZyYW1lLCAmdywgJmgpOwogICAgIHggPSAodyArIHNkLT52aWV3Lncp
ICogcHggLSBjeDsKQEAgLTE1MzcsMTAgKzE1MzgsMTAgQEAgRXdrX0hpc3RvcnkqIGV3a192aWV3
X2hpc3RvcnlfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogICAgIHJldHVybiBwcml2LT5oaXN0
b3J5OwogfQogCi1mbG9hdCBld2tfdmlld196b29tX2dldChjb25zdCBFdmFzX09iamVjdCogbykK
K2Zsb2F0IGV3a192aWV3X3pvb21fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQogewot
ICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIC0xLjApOwotICAgIHJldHVybiBl
d2tfZnJhbWVfem9vbV9nZXQoc2QtPm1haW5fZnJhbWUpOworICAgIEVXS19WSUVXX1NEX0dFVF9P
Ul9SRVRVUk4oZXdrVmlldywgc2QsIC0xLjApOworICAgIHJldHVybiBld2tfZnJhbWVfcGFnZV96
b29tX2dldChzZC0+bWFpbl9mcmFtZSk7CiB9CiAKIEVpbmFfQm9vbCBld2tfdmlld196b29tX3Nl
dChFdmFzX09iamVjdCogbywgZmxvYXQgem9vbSwgRXZhc19Db29yZCBjeCwgRXZhc19Db29yZCBj
eSkKQEAgLTE1NjksNiArMTU3MCw1NSBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV9zZXQoRXZh
c19PYmplY3QqIG8sIGZsb2F0IHpvb20sIEV2YXNfQ29vcmQgY3gsIEV2YXNfQ29vcgogICAgIHJl
dHVybiBzZC0+YXBpLT56b29tX3NldChzZCwgem9vbSwgY3gsIGN5KTsKIH0KIAorZmxvYXQgZXdr
X3ZpZXdfcGFnZV96b29tX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKK3sKKyAgICBF
V0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNkLCAtMS4wKTsKKyAgICByZXR1cm4g
ZXdrX2ZyYW1lX3BhZ2Vfem9vbV9nZXQoc2QtPm1haW5fZnJhbWUpOworfQorCitFaW5hX0Jvb2wg
ZXdrX3ZpZXdfcGFnZV96b29tX3NldChFdmFzX09iamVjdCogZXdrVmlldywgZmxvYXQgcGFnZVpv
b21GYWN0b3IpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzZCwg
RUlOQV9GQUxTRSk7CisgICAgcmV0dXJuIGV3a19mcmFtZV9wYWdlX3pvb21fc2V0KHNkLT5tYWlu
X2ZyYW1lLCBwYWdlWm9vbUZhY3Rvcik7Cit9CisKK2Zsb2F0IGV3a192aWV3X3NjYWxlX2dldChj
b25zdCBFdmFzX09iamVjdCogZXdrVmlldykKK3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVU
VVJOKGV3a1ZpZXcsIHNkLCAtMS4wKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4o
c2QsIHByaXYsIC0xLjApOworICAgIHJldHVybiBwcml2LT5wYWdlLT5wYWdlU2NhbGVGYWN0b3Io
KTsKK30KKworRWluYV9Cb29sIGV3a192aWV3X3NjYWxlX3NldChFdmFzX09iamVjdCogZXdrVmll
dywgZmxvYXQgc2NhbGVGYWN0b3IsIEV2YXNfQ29vcmQgY3gsIEV2YXNfQ29vcmQgY3kpCit7Cisg
ICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzZCwgRUlOQV9GQUxTRSk7Cisg
ICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKKwor
ICAgIGZsb2F0IGN1cnJlbnRTY2FsZUZhY3RvciA9IGV3a192aWV3X3NjYWxlX2dldChld2tWaWV3
KTsKKyAgICBpZiAoY3VycmVudFNjYWxlRmFjdG9yID09IC0xKQorICAgICAgICByZXR1cm4gRUlO
QV9GQUxTRTsKKworICAgIGludCB4LCB5OworICAgIGV3a19mcmFtZV9zY3JvbGxfcG9zX2dldChz
ZC0+bWFpbl9mcmFtZSwgJngsICZ5KTsKKworICAgIHggPSAoKHN0YXRpY19jYXN0PGRvdWJsZT4o
eCArIGN4KSAvIGN1cnJlbnRTY2FsZUZhY3RvcikgKiBzY2FsZUZhY3RvcikgLSBjeDsKKyAgICB5
ID0gKChzdGF0aWNfY2FzdDxkb3VibGU+KHkgKyBjeSkgLyBjdXJyZW50U2NhbGVGYWN0b3IpICog
c2NhbGVGYWN0b3IpIC0gY3k7CisgICAgcHJpdi0+cGFnZS0+c2V0UGFnZVNjYWxlRmFjdG9yKHNj
YWxlRmFjdG9yLCBXZWJDb3JlOjpMYXlvdXRQb2ludCh4LCB5KSk7CisgICAgcmV0dXJuIEVJTkFf
VFJVRTsKK30KKworZmxvYXQgZXdrX3ZpZXdfdGV4dF96b29tX2dldChjb25zdCBFdmFzX09iamVj
dCogZXdrVmlldykKK3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNk
LCAtMS4wKTsKKyAgICByZXR1cm4gZXdrX2ZyYW1lX3RleHRfem9vbV9nZXQoc2QtPm1haW5fZnJh
bWUpOworfQorCitFaW5hX0Jvb2wgZXdrX3ZpZXdfdGV4dF96b29tX3NldChFdmFzX09iamVjdCog
ZXdrVmlldywgZmxvYXQgdGV4dFpvb21GYWN0b3IpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09S
X1JFVFVSTihld2tWaWV3LCBzZCwgRUlOQV9GQUxTRSk7CisgICAgcmV0dXJuIGV3a19mcmFtZV90
ZXh0X3pvb21fc2V0KHNkLT5tYWluX2ZyYW1lLCB0ZXh0Wm9vbUZhY3Rvcik7Cit9CisKIEVpbmFf
Qm9vbCBld2tfdmlld196b29tX3dlYWtfc21vb3RoX3NjYWxlX2dldChjb25zdCBFdmFzX09iamVj
dCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNF
KTsKQEAgLTE2MDksNyArMTY1OSw3IEBAIEVpbmFfQm9vbCBld2tfdmlld196b29tX3dlYWtfc2V0
KEV2YXNfT2JqZWN0KiBvLCBmbG9hdCB6b29tLCBFdmFzX0Nvb3JkIGN4LCBFdmFzCiAgICAgICAg
IHJldHVybiBFSU5BX0ZBTFNFOwogICAgIH0KIAotICAgIHNkLT5hbmltYXRlZF96b29tLnpvb20u
c3RhcnQgPSBld2tfZnJhbWVfem9vbV9nZXQoc2QtPm1haW5fZnJhbWUpOworICAgIHNkLT5hbmlt
YXRlZF96b29tLnpvb20uc3RhcnQgPSBld2tfZnJhbWVfcGFnZV96b29tX2dldChzZC0+bWFpbl9m
cmFtZSk7CiAgICAgc2QtPmFuaW1hdGVkX3pvb20uem9vbS5lbmQgPSB6b29tOwogICAgIHNkLT5h
bmltYXRlZF96b29tLnpvb20uY3VycmVudCA9IHpvb207CiAgICAgcmV0dXJuIHNkLT5hcGktPnpv
b21fd2Vha19zZXQoc2QsIHpvb20sIGN4LCBjeSk7CkBAIC0xNjY4LDcgKzE3MTgsNyBAQCBFaW5h
X0Jvb2wgZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9zZXQoRXZhc19PYmplY3QqIG8sIGZsb2F0IHpv
b20sIGZsb2F0IGR1cmF0aW9uLAogICAgIGlmIChwcml2LT5hbmltYXRlZF96b29tLmFuaW1hdG9y
KQogICAgICAgICBwcml2LT5hbmltYXRlZF96b29tLnpvb20uc3RhcnQgPSBfZXdrX3ZpZXdfem9v
bV9hbmltYXRlZF9jdXJyZW50KHByaXYpOwogICAgIGVsc2UgewotICAgICAgICBwcml2LT5hbmlt
YXRlZF96b29tLnpvb20uc3RhcnQgPSBld2tfZnJhbWVfem9vbV9nZXQoc2QtPm1haW5fZnJhbWUp
OworICAgICAgICBwcml2LT5hbmltYXRlZF96b29tLnpvb20uc3RhcnQgPSBld2tfZnJhbWVfcGFn
ZV96b29tX2dldChzZC0+bWFpbl9mcmFtZSk7CiAgICAgICAgIF9ld2tfdmlld196b29tX2FuaW1h
dGlvbl9zdGFydChzZCk7CiAgICAgfQogCkBAIC0xNjkyLDE4ICsxNzQyLDYgQEAgRWluYV9Cb29s
IGV3a192aWV3X3pvb21fYW5pbWF0ZWRfc2V0KEV2YXNfT2JqZWN0KiBvLCBmbG9hdCB6b29tLCBm
bG9hdCBkdXJhdGlvbiwKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1FaW5hX0Jvb2wgZXdr
X3ZpZXdfem9vbV90ZXh0X29ubHlfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQotewotICAgIEVX
S19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwotICAgIHJldHVybiBl
d2tfZnJhbWVfem9vbV90ZXh0X29ubHlfZ2V0KHNkLT5tYWluX2ZyYW1lKTsKLX0KLQotRWluYV9C
b29sIGV3a192aWV3X3pvb21fdGV4dF9vbmx5X3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29s
IHNldHRpbmcpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9G
QUxTRSk7Ci0gICAgcmV0dXJuIGV3a19mcmFtZV96b29tX3RleHRfb25seV9zZXQoc2QtPm1haW5f
ZnJhbWUsIHNldHRpbmcpOwotfQotCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfcHJlX3JlbmRlcl9yZWdp
b24oRXZhc19PYmplY3QqIG8sIEV2YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5LCBFdmFzX0Nvb3Jk
IHcsIEV2YXNfQ29vcmQgaCwgZmxvYXQgem9vbSkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1Jf
UkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKQEAgLTE3MTgsNyArMTc1Niw3IEBAIEVpbmFfQm9v
bCBld2tfdmlld19wcmVfcmVuZGVyX3JlZ2lvbihFdmFzX09iamVjdCogbywgRXZhc19Db29yZCB4
LCBFdmFzX0Nvb3JkIHksCiAgICAgaWYgKHByaXYtPmFuaW1hdGVkX3pvb20uYW5pbWF0b3IpCiAg
ICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOwogCi0gICAgY3VyX3pvb20gPSBld2tfZnJhbWVfem9v
bV9nZXQoc2QtPm1haW5fZnJhbWUpOworICAgIGN1cl96b29tID0gZXdrX2ZyYW1lX3BhZ2Vfem9v
bV9nZXQoc2QtPm1haW5fZnJhbWUpOwogCiAgICAgaWYgKGN1cl96b29tIDwgMC4wMDAwMSkKICAg
ICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CkBAIC0xNzU3LDcgKzE3OTUsNyBAQCBFaW5hX0Jvb2wg
ZXdrX3ZpZXdfcHJlX3JlbmRlcl9yZWxhdGl2ZV9yYWRpdXMoRXZhc19PYmplY3QqIG8sIHVuc2ln
bmVkIGludCBuKQogICAgIGlmIChwcml2LT5hbmltYXRlZF96b29tLmFuaW1hdG9yKQogICAgICAg
ICByZXR1cm4gRUlOQV9GQUxTRTsKIAotICAgIGN1cl96b29tID0gZXdrX2ZyYW1lX3pvb21fZ2V0
KHNkLT5tYWluX2ZyYW1lKTsKKyAgICBjdXJfem9vbSA9IGV3a19mcmFtZV9wYWdlX3pvb21fZ2V0
KHNkLT5tYWluX2ZyYW1lKTsKICAgICByZXR1cm4gc2QtPmFwaS0+cHJlX3JlbmRlcl9yZWxhdGl2
ZV9yYWRpdXMoc2QsIG4sIGN1cl96b29tKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9lZmwvZXdrL2V3a192aWV3LmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuaApp
bmRleCAyN2Q2YTZiYzI0M2Y1ZTQ5YjE5YTY4OGRhNmE5OWQ3NzkyYTNkODNjLi40YjEwZThkZTg5
OTcwZWZmY2YwMDUyNjQ2MWI5NDJiOGQ1M2MwZWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX3ZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcu
aApAQCAtOTcyLDYgKzk3Miw2NSBAQCBFQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19oaXN0b3J5
X2VuYWJsZV9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBlbmFibGUpOwogRUFQSSBFd2tf
SGlzdG9yeSAqZXdrX3ZpZXdfaGlzdG9yeV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwogCiAv
KioKKyAqIEdldHMgdGhlIGN1cnJlbnQgcGFnZSB6b29tIGxldmVsIG9mIHRoZSBtYWluIGZyYW1l
LgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIGdldCB0aGUgem9vbSBsZXZlbAorICoK
KyAqIEByZXR1cm4gY3VycmVudCB6b29tIGxldmVsIGluIHVzZSBvbiBzdWNjZXNzIG9yIEBjIC0x
LjAgb24gZmFpbHVyZQorICovCitFQVBJIGZsb2F0ICAgICAgICBld2tfdmlld19wYWdlX3pvb21f
Z2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKKworLyoqCisgKiBTZXRzIHRoZSBjdXJyZW50IHBh
Z2Ugem9vbSBsZXZlbCBvZiB0aGUgbWFpbiBmcmFtZS4KKyAqCisgKiBAcGFyYW0gbyB2aWV3IG9i
amVjdCB0byBzZXQgdGhlIHpvb20gbGV2ZWwKKyAqIEBwYXJhbSBwYWdlWm9vbUZhY3RvciBhIG5l
dyBsZXZlbCB0byBzZXQKKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIG9y
IEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCisgKi8KK0VBUEkgRWluYV9Cb29sICAgIGV3a192aWV3
X3BhZ2Vfem9vbV9zZXQoRXZhc19PYmplY3QgKm8sIGZsb2F0IHBhZ2Vab29tRmFjdG9yKTsKKwor
LyoqCisgKiBHZXRzIHRoZSBjdXJyZW50IHNjYWxlIGZhY3RvciBvZiB0aGUgcGFnZS4KKyAqCisg
KiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBnZXQgdGhlIHNjYWxlIGZhY3RvciAKKyAqCisgKiBA
cmV0dXJuIGN1cnJlbnQgc2NhbGUgZmFjdG9yIGluIHVzZSBvbiBzdWNjZXNzIG9yIEBjIC0xLjAg
b24gZmFpbHVyZQorICovCitFQVBJIGZsb2F0ICAgICAgICBld2tfdmlld19zY2FsZV9nZXQoY29u
c3QgRXZhc19PYmplY3QgKm8pOworCisvKioKKyAqIFNjYWxlcyB0aGUgY3VycmVudCBwYWdlLCBj
ZW50ZXJlZCBhdCB0aGUgZ2l2ZW4gcG9pbnQuCisgKgorICogQHBhcmFtIG8gdmlldyBvYmplY3Qg
dG8gc2V0IHRoZSB6b29tIGxldmVsCisgKiBAcGFyYW0gc2NhbGVGYWN0b3IgYSBuZXcgbGV2ZWwg
dG8gc2V0CisgKiBAcGFyYW0gY3ggeCBvZiBjZW50ZXIgY29vcmRpbmF0ZQorICogQHBhcmFtIGN5
IHkgb2YgY2VudGVyIGNvb3JkaW5hdGUKKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBz
dWNjZXNzIG9yIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCisgKi8KK0VBUEkgRWluYV9Cb29sICAg
IGV3a192aWV3X3NjYWxlX3NldChFdmFzX09iamVjdCAqbywgZmxvYXQgc2NhbGVGYWN0b3IsIEV2
YXNfQ29vcmQgY3gsIEV2YXNfQ29vcmQgY3kpOworCisvKioKKyAqIEdldHMgdGhlIGN1cnJlbnQg
dGV4dCB6b29tIGxldmVsIG9mIHRoZSBtYWluIGZyYW1lLgorICoKKyAqIEBwYXJhbSBvIHZpZXcg
b2JqZWN0IHRvIGdldCB0aGUgem9vbSBsZXZlbAorICoKKyAqIEByZXR1cm4gY3VycmVudCB6b29t
IGxldmVsIGluIHVzZSBvbiBzdWNjZXNzIG9yIEBjIC0xLjAgb24gZmFpbHVyZQorICovCitFQVBJ
IGZsb2F0ICAgICAgICBld2tfdmlld190ZXh0X3pvb21fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpv
KTsKKworLyoqCisgKiBTZXRzIHRoZSBjdXJyZW50IHRleHQgem9vbSBsZXZlbCBvZiB0aGUgbWFp
biBmcmFtZS4KKyAqCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBzZXQgdGhlIHpvb20gbGV2
ZWwKKyAqIEBwYXJhbSB0ZXh0Wm9vbUZhY3RvciBhIG5ldyBsZXZlbCB0byBzZXQKKyAqCisgKiBA
cmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIG9yIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNl
CisgKi8KK0VBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3RleHRfem9vbV9zZXQoRXZhc19PYmpl
Y3QgKm8sIGZsb2F0IHRleHRab29tRmFjdG9yKTsKKworLyoqCiAgKiBHZXRzIHRoZSBjdXJyZW50
IHpvb20gbGV2ZWwgb2YgdGhlIG1haW4gZnJhbWUuCiAgKgogICogQHBhcmFtIG8gdmlldyBvYmpl
Y3QgdG8gZ2V0IHRoZSB6b29tIGxldmVsCkBAIC0xMTM4LDI1ICsxMTk3LDYgQEAgRUFQSSBFaW5h
X0Jvb2wgICAgZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9tYXJrX3N0b3AoRXZhc19PYmplY3QgKm8p
OwogRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9zZXQoRXZhc19PYmpl
Y3QgKm8sIGZsb2F0IHpvb20sIGZsb2F0IGR1cmF0aW9uLCBFdmFzX0Nvb3JkIGN4LCBFdmFzX0Nv
b3JkIGN5KTsKIAogLyoqCi0gKiBRdWVyaWVzIGlmIHpvb20gbGV2ZWwganVzdCBhcHBsaWVzIHRv
IHRleHQgb25seSBhbmQgbm90IG90aGVyIGVsZW1lbnRzLgotICoKLSAqIEBwYXJhbSBvIHZpZXcg
dG8gcXVlcnkgem9vbSBsZXZlbCBmb3IgdGV4dCBvbmx5Ci0gKgotICogQHJldHVybiBAYyBFSU5B
X1RSVUUgaWYgem9vbSBsZXZlbCBpcyBhcHBsaWVkIHRvIHRleHQgb25seSwgQGMgRUlOQV9GQUxT
RSBpZiBub3Qgb3Igb24gZmFpbHVyZQotICovCi1FQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld196
b29tX3RleHRfb25seV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwotCi0vKioKLSAqIFNldHMg
aWYgem9vbSBsZXZlbCBqdXN0IGFwcGxpZXMgdG8gdGV4dCBvbmx5IGFuZCBub3Qgb3RoZXIgZWxl
bWVudHMuCi0gKgotICogQHBhcmFtIG8gdmlldyB0byBhcHBseSB6b29tIGxldmVsIGZvciB0ZXh0
IG9ubHkKLSAqIEBwYXJhbSBzZXR0aW5nIEBjIEVJTkFfVFJVRSBpZiB6b29tIGxldmVsIHNob3Vs
ZCBiZSBhcHBsaWVkIHRvIHRleHQgb25seSwgQGMgRUlOQV9GQUxTRSBpZiBub3QKLSAqCi0gKiBA
cmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIG9yIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNl
Ci0gKi8KLUVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3pvb21fdGV4dF9vbmx5X3NldChFdmFz
X09iamVjdCAqbywgRWluYV9Cb29sIHNldHRpbmcpOwotCi0vKioKICAqIEFza3MgZW5naW5lIHRv
IHByZS1yZW5kZXIgcmVnaW9uLgogICoKICAqIEVuZ2luZXMgYW5kIGJhY2tpbmcgc3RvcmUgbWln
aHQgYmUgYWJsZSB0byBwcmUtcmVuZGVyIHJlZ2lvbnMgaW4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110071</attachid>
            <date>2011-10-06 18:16:49 -0700</date>
            <delta_ts>2011-10-06 18:56:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62842-20111007101647.patch</filename>
            <type>text/plain</type>
            <size>16699</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTY4ODcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZs
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCA5OTcwZjYwMWI0
YWQ1NDlkYjVmNjY2OGQ3NDliYmFjMWE2MDY4NjllLi43NGY1YWViYzM5M2I3YjllYzMwMDBmYTBi
YTMzMWFkM2I4NzFmNDVhIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTEt
MTAtMDYgIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtF
RkxdIFJlZmFjdG9yIHpvb20gcmVsYXRlZCBBUElzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjI4NDIKKworICAgICAgICBDdXJyZW50IHpvb20gYXBp
cyBjYW4ndCBzdXBwb3J0IHRoZSBjYXNlIG9mIHVzaW5nIGJvdGggcGFnZSB6b29tIGFuZCB0ZXh0
CisgICAgICAgIHpvb20uCisKKyAgICAgICAgQXMgYSBmaXJzdCBzdGVwIHRvIHJlZmFjdG9yLCB0
aGlzIHNwbGl0IGV3a197dmlld3xmcmFtZX1fem9vbV97Z2V0fHNldH0KKyAgICAgICAgdG8gdXNl
IGJvdGggcGFnZV96b29tIGFuZCB0ZXh0IHpvb20gaW5kaXZpZHVhbGx5LgorICAgICAgICBJbiBh
ZGRpdGlvbiwgaW50cm9kdWNlIGV3a192aWV3X3NjYWxlX3tnZXR8c2V0fSB0byBzdXBwb3J0IHBy
b3BvcnRpb25hbCBzY2FsaW5nLgorCisgICAgICAgIGV3a192aWV3X3pvb21fe2dldHxzZXR9IHdp
bGwgcmVtYWluIHVuY2hhbmdlZCB1bnRpbCB0aGUgYmVoYXZpb3Igb2Ygc21hcnRfem9vbQorICAg
ICAgICB3YXMgY2hhbmdlZC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOiBSZW1vdmUgZXdrX2ZyYW1lX3pvb21fdGV4
dF9vbmx5X3tnZXR8c2V0fS4KKyAgICAgICAgKGV3a19mcmFtZV9wYWdlX3pvb21fZ2V0KTogUmVu
YW1lZCBmcm9tIGV3a19mcmFtZV96b29tX2dldCgpLgorICAgICAgICAoZXdrX2ZyYW1lX3BhZ2Vf
em9vbV9zZXQpOiBSZW5hbWVkIGZyb20gZXdrX2ZyYW1lX3pvb21fc2V0KCkuCisgICAgICAgIChl
d2tfZnJhbWVfdGV4dF96b29tX2dldCk6IEV4dHJhY3RlZCBmcm9tIGV3a19mcmFtZV96b29tX2dl
dCgpLgorICAgICAgICAoZXdrX2ZyYW1lX3RleHRfem9vbV9zZXQpOiBFeHRyYWN0ZWQgZnJvbSBl
d2tfZnJhbWVfem9vbV9zZXQoKS4KKyAgICAgICAgKiBld2svZXdrX2ZyYW1lLmg6CisgICAgICAg
ICogZXdrL2V3a192aWV3LmNwcDogUmVtb3ZlIGV3a192aWV3X3pvb21fdGV4dF9vbmx5X3tnZXR8
c2V0fQorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X3pvb21fc2V0KTogQ2hhbmdlIGV3a19mcmFt
ZV96b29tX2dldCgpIHRvIGV3a19mcmFtZV9wYWdlX3pvb21fZ2V0KCkuCisgICAgICAgIChld2tf
dmlld196b29tX2dldCk6IENoYW5nZSBld2tfZnJhbWVfem9vbV9nZXQoKSB0byBld2tfZnJhbWVf
cGFnZV96b29tX2dldCgpLgorICAgICAgICAoZXdrX3ZpZXdfcGFnZV96b29tX2dldCk6IEV4dHJh
Y3RlZCBmcm9tIGV3a192aWV3X3pvb21fZ2V0KCkuCisgICAgICAgIChld2tfdmlld19wYWdlX3pv
b21fc2V0KTogRXh0cmFjdGVkIGZyb20gZXdrX3ZpZXdfem9vbV9zZXQoKS4KKyAgICAgICAgKGV3
a192aWV3X3NjYWxlX2dldCk6IEFkZGVkLgorICAgICAgICAoZXdrX3ZpZXdfc2NhbGVfc2V0KTog
QWRkZWQuCisgICAgICAgIChld2tfdmlld190ZXh0X3pvb21fZ2V0KTogRXh0cmFjdGVkIGZyb20g
ZXdrX3ZpZXdfem9vbV9nZXQoKS4KKyAgICAgICAgKGV3a192aWV3X3RleHRfem9vbV9zZXQpOiBF
eHRyYWN0ZWQgZnJvbSBld2tfdmlld196b29tX3NldCgpLgorICAgICAgICAoZXdrX3ZpZXdfem9v
bV93ZWFrX3NldCk6IENoYW5nZSBld2tfZnJhbWVfem9vbV9nZXQgdG8gZXdrX2ZyYW1lX3BhZ2Vf
em9vbV9nZXQoKS4KKyAgICAgICAgKGV3a192aWV3X3pvb21fYW5pbWF0ZWRfc2V0KTogQ2hhbmdl
IGV3a19mcmFtZV96b29tX2dldCgpIHRvIGV3a19mcmFtZV9wYWdlX3pvb21fZ2V0KCkuCisgICAg
ICAgIChld2tfdmlld19wcmVfcmVuZGVyX3JlZ2lvbik6IENoYW5nZSBld2tfZnJhbWVfem9vbV9n
ZXQoKSB0byBld2tfZnJhbWVfcGFnZV96b29tX2dldCgpLgorICAgICAgICAoZXdrX3ZpZXdfcHJl
X3JlbmRlcl9yZWxhdGl2ZV9yYWRpdXMpOiBDaGFuZ2UgZXdrX2ZyYW1lX3pvb21fZ2V0KCkgdG8g
ZXdrX2ZyYW1lX3BhZ2Vfem9vbV9nZXQoKS4KKyAgICAgICAgKiBld2svZXdrX3ZpZXcuaDoKKwog
MjAxMS0xMC0wNCAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgogCiAg
ICAgICAgIFtFRkxdIE9ubHkgc2V0IHdoZW4gdGhlIGN1c3RvbSBlbmNvZGluZyBpcyBkaWZmZXJl
bnQgZnJvbSBleGlzdGluZyB2YWx1ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdr
L2V3a19mcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcAppbmRl
eCBiYzhmOGFlNjZlM2U2OGE3MzA1ZWFmYTFmOWM5MjM5NDg2MmY1OTFhLi44NGQ1MDQ0ZDFhMmVm
OTYzYWMxNzVjOGJmODEzMjYxYzc3YjhhMzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX2ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1l
LmNwcApAQCAtNzUsNyArNzUsNiBAQCBzdHJ1Y3QgRXdrX0ZyYW1lX1NtYXJ0X0RhdGEgewogICAg
IHN0cnVjdCB7CiAgICAgICAgIEV2YXNfQ29vcmQgdywgaDsKICAgICB9IGNvbnRlbnRzX3NpemU7
Ci0gICAgRWluYV9Cb29sIHRleHRab29tIDogMTsKICAgICBFaW5hX0Jvb2wgZWRpdGFibGUgOiAx
OwogfTsKIApAQCAtNjEyLDQ2ICs2MTEsMzMgQEAgRWluYV9Cb29sIGV3a19mcmFtZV9uYXZpZ2F0
ZV9wb3NzaWJsZShFdmFzX09iamVjdCogbywgaW50IHN0ZXBzKQogICAgIHJldHVybiBwYWdlLT5j
YW5Hb0JhY2tPckZvcndhcmQoc3RlcHMpOwogfQogCi1mbG9hdCBld2tfZnJhbWVfem9vbV9nZXQo
Y29uc3QgRXZhc19PYmplY3QqIG8pCitmbG9hdCBld2tfZnJhbWVfcGFnZV96b29tX2dldChjb25z
dCBFdmFzX09iamVjdCogZXdrRnJhbWUpCiB7Ci0gICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRV
Uk4obywgc2QsIC0xLjApOworICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1l
LCBzZCwgLTEuMCk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLT5mcmFt
ZSwgLTEuMCk7Ci0KLSAgICBpZiAoc2QtPnRleHRab29tKQotICAgICAgICByZXR1cm4gc2QtPmZy
YW1lLT50ZXh0Wm9vbUZhY3RvcigpOwogICAgIHJldHVybiBzZC0+ZnJhbWUtPnBhZ2Vab29tRmFj
dG9yKCk7CiB9CiAKLUVpbmFfQm9vbCBld2tfZnJhbWVfem9vbV9zZXQoRXZhc19PYmplY3QqIG8s
IGZsb2F0IHpvb20pCitFaW5hX0Jvb2wgZXdrX2ZyYW1lX3BhZ2Vfem9vbV9zZXQoRXZhc19PYmpl
Y3QqIGV3a0ZyYW1lLCBmbG9hdCBwYWdlWm9vbUZhY3RvcikKIHsKLSAgICBFV0tfRlJBTUVfU0Rf
R0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CisgICAgRVdLX0ZSQU1FX1NEX0dFVF9P
Ul9SRVRVUk4oZXdrRnJhbWUsIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTl9WQUwoc2QtPmZyYW1lLCBFSU5BX0ZBTFNFKTsKLSAgICBpZiAoc2QtPnRleHRa
b29tKQotICAgICAgICBzZC0+ZnJhbWUtPnNldFRleHRab29tRmFjdG9yKHpvb20pOwotICAgIGVs
c2UKLSAgICAgICAgc2QtPmZyYW1lLT5zZXRQYWdlWm9vbUZhY3Rvcih6b29tKTsKKyAgICBzZC0+
ZnJhbWUtPnNldFBhZ2Vab29tRmFjdG9yKHBhZ2Vab29tRmFjdG9yKTsKICAgICByZXR1cm4gRUlO
QV9UUlVFOwogfQogCi1FaW5hX0Jvb2wgZXdrX2ZyYW1lX3pvb21fdGV4dF9vbmx5X2dldChjb25z
dCBFdmFzX09iamVjdCogbykKK2Zsb2F0IGV3a19mcmFtZV90ZXh0X3pvb21fZ2V0KGNvbnN0IEV2
YXNfT2JqZWN0KiBld2tGcmFtZSkKIHsKLSAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihv
LCBzZCwgRUlOQV9GQUxTRSk7Ci0gICAgcmV0dXJuIHNkLT50ZXh0Wm9vbTsKKyAgICBFV0tfRlJB
TUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc2QsIC0xLjApOworICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOX1ZBTChzZC0+ZnJhbWUsIC0xLjApOworICAgIHJldHVybiBzZC0+ZnJh
bWUtPnRleHRab29tRmFjdG9yKCk7CiB9CiAKLUVpbmFfQm9vbCBld2tfZnJhbWVfem9vbV90ZXh0
X29ubHlfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgc2V0dGluZykKK0VpbmFfQm9vbCBl
d2tfZnJhbWVfdGV4dF96b29tX3NldChFdmFzX09iamVjdCogZXdrRnJhbWUsIGZsb2F0IHRleHRa
b29tRmFjdG9yKQogewotICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5B
X0ZBTFNFKTsKKyAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc2QsIEVJ
TkFfRkFMU0UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+ZnJhbWUs
IEVJTkFfRkFMU0UpOwotICAgIGlmIChzZC0+dGV4dFpvb20gPT0gc2V0dGluZykKLSAgICAgICAg
cmV0dXJuIEVJTkFfVFJVRTsKLQotICAgIGZsb2F0IHpvb21fbGV2ZWwgPSBzZC0+dGV4dFpvb20g
PyBzZC0+ZnJhbWUtPnRleHRab29tRmFjdG9yKCkgOiBzZC0+ZnJhbWUtPnBhZ2Vab29tRmFjdG9y
KCk7Ci0gICAgc2QtPnRleHRab29tID0gc2V0dGluZzsKLSAgICBpZiAoc2QtPnRleHRab29tKQot
ICAgICAgICBzZC0+ZnJhbWUtPnNldFBhZ2VBbmRUZXh0Wm9vbUZhY3RvcnMoMSwgem9vbV9sZXZl
bCk7Ci0gICAgZWxzZQotICAgICAgICBzZC0+ZnJhbWUtPnNldFBhZ2VBbmRUZXh0Wm9vbUZhY3Rv
cnMoem9vbV9sZXZlbCwgMSk7CisgICAgc2QtPmZyYW1lLT5zZXRUZXh0Wm9vbUZhY3Rvcih0ZXh0
Wm9vbUZhY3Rvcik7CiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a19mcmFtZS5oCmluZGV4IDY2MmIwZDVhNmUwZjBjZDNjM2IxODYxNGM0NzQ5Y2ZkMmM2N2JiNzAu
LjVlYzllOGQzNGMwNzllZWZkMjgwOTlkMjk1MzVhNzEwZDI3MGNmMzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX2ZyYW1lLmgKQEAgLTUyMCw0NCArNTIwLDUwIEBAIEVBUEkgRWluYV9Cb29sICAgIGV3
a19mcmFtZV9mb3J3YXJkX3Bvc3NpYmxlKEV2YXNfT2JqZWN0ICpvKTsKIEVBUEkgRWluYV9Cb29s
ICAgIGV3a19mcmFtZV9uYXZpZ2F0ZV9wb3NzaWJsZShFdmFzX09iamVjdCAqbywgaW50IHN0ZXBz
KTsKIAogLyoqCi0gKiBHZXRzIHRoZSBjdXJyZW50IHpvb20gbGV2ZWwgdXNlZCBieSB0aGlzIGZy
YW1lLgorICogR2V0cyB0aGUgY3VycmVudCBwYWdlIHpvb20gbGV2ZWwgdXNlZCBieSB0aGlzIGZy
YW1lLgogICoKICAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBnZXQgem9vbSBsZXZlbAogICoK
LSAqIEByZXR1cm4gem9vbSBsZXZlbCBmb3IgdGhlIGZyYW1lIG9yIEBjIC0xLjAgb24gZmFpbHVy
ZQorICogQHJldHVybiBwYWdlIHpvb20gbGV2ZWwgZm9yIHRoZSBmcmFtZSBvciBAYyAtMS4wIG9u
IGZhaWx1cmUKKyAqCisgKiBAc2VlIGV3a19mcmFtZV90ZXh0X3pvb21fZ2V0KCkKICAqLwotRUFQ
SSBmbG9hdCAgICAgICAgZXdrX2ZyYW1lX3pvb21fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsK
K0VBUEkgZmxvYXQgICAgICAgIGV3a19mcmFtZV9wYWdlX3pvb21fZ2V0KGNvbnN0IEV2YXNfT2Jq
ZWN0ICpvKTsKIAogLyoqCi0gKiBTZXRzIHRoZSBjdXJyZW50IHpvb20gbGV2ZWwgdXNlZCBieSB0
aGlzIGZyYW1lLgorICogU2V0cyB0aGUgY3VycmVudCBwYWdlIHpvb20gbGV2ZWwgdXNlZCBieSB0
aGlzIGZyYW1lLgogICoKICAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBjaGFuZ2Ugem9vbSBs
ZXZlbAotICogQHBhcmFtIHpvb20gYSBuZXcgem9vbSBsZXZlbAorICogQHBhcmFtIHBhZ2Vab29t
RmFjdG9yIGEgbmV3IHpvb20gbGV2ZWwKICAqCiAgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBz
dWNjZXNzIG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQogICoKLSAqIEBzZWUgZXdrX2ZyYW1l
X3pvb21fdGV4dF9vbmx5X3NldCgpCisgKiBAc2VlIGV3a19mcmFtZV90ZXh0X3pvb21fc2V0KCkK
ICAqLwotRUFQSSBFaW5hX0Jvb2wgICAgZXdrX2ZyYW1lX3pvb21fc2V0KEV2YXNfT2JqZWN0ICpv
LCBmbG9hdCB6b29tKTsKK0VBUEkgRWluYV9Cb29sICAgIGV3a19mcmFtZV9wYWdlX3pvb21fc2V0
KEV2YXNfT2JqZWN0ICpvLCBmbG9hdCBwYWdlWm9vbUZhY3Rvcik7CiAKIC8qKgotICogUXVlcmll
cyBpZiB6b29tIGxldmVsIGp1c3QgYXBwbGllcyB0byB0ZXh0IG9ubHkgYW5kIG5vdCBvdGhlciBl
bGVtZW50cy4KKyAqIEdldHMgdGhlIGN1cnJlbnQgdGV4dCB6b29tIGxldmVsIHVzZWQgYnkgdGhp
cyBmcmFtZS4KKyAqCisgKiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gZ2V0IHpvb20gbGV2ZWwK
ICAqCi0gKiBAcGFyYW0gbyBmcmFtZSB0byBxdWVyeSB6b29tIGxldmVsIGZvciB0ZXh0IG9ubHkK
KyAqIEByZXR1cm4gdGV4dCB6b29tIGxldmVsIGZvciB0aGUgZnJhbWUgb3IgQGMgLTEuMCBvbiBm
YWlsdXJlCiAgKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgem9vbSBsZXZlbCBpcyBhcHBs
aWVkIHRvIHRleHQgb25seSwgQGMgRUlOQV9GQUxTRSBpZiBub3Qgb3Igb24gZmFpbHVyZQorICog
QHNlZSBld2tfZnJhbWVfcGFnZV96b29tX2dldCgpCiAgKi8KLUVBUEkgRWluYV9Cb29sICAgIGV3
a19mcmFtZV96b29tX3RleHRfb25seV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOworRUFQSSBm
bG9hdCAgICAgICAgZXdrX2ZyYW1lX3RleHRfem9vbV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8p
OwogCiAvKioKLSAqIFNldHMgaWYgem9vbSBsZXZlbCBqdXN0IGFwcGxpZXMgdG8gdGV4dCBvbmx5
IGFuZCBub3Qgb3RoZXIgZWxlbWVudHMuCisgKiBTZXRzIHRoZSBjdXJyZW50IHRleHQgem9vbSBs
ZXZlbCB1c2VkIGJ5IHRoaXMgZnJhbWUuCiAgKgotICogQHBhcmFtIG8gZnJhbWUgdG8gYXBwbHkg
em9vbSBsZXZlbCBmb3IgdGV4dCBvbmx5Ci0gKiBAcGFyYW0gc2V0dGluZyBAYyBFSU5BX1RSVUUg
aWYgem9vbSBsZXZlbCBzaG91bGQgYmUgYXBwbGllZCB0byB0ZXh0IG9ubHksIEBjIEVJTkFfRkFM
U0UgaWYgbm90CisgKiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gY2hhbmdlIHpvb20gbGV2ZWwK
KyAqIEBwYXJhbSB0ZXh0Wm9vbUZhY3RvciBhIG5ldyB6b29tIGxldmVsCiAgKgotICogQHJldHVy
biBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcywgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKKyAqIEBy
ZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJl
CisgKgorICogQHNlZSBld2tfZnJhbWVfcGFnZV96b29tX3NldCgpCiAgKi8KLUVBUEkgRWluYV9C
b29sICAgIGV3a19mcmFtZV96b29tX3RleHRfb25seV9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFf
Qm9vbCBzZXR0aW5nKTsKK0VBUEkgRWluYV9Cb29sICAgIGV3a19mcmFtZV90ZXh0X3pvb21fc2V0
KEV2YXNfT2JqZWN0ICpvLCBmbG9hdCB0ZXh0Wm9vbUZhY3Rvcik7CiAKIC8qKgogICogRnJlZXMg
aGl0IHRlc3QgaW5zdGFuY2UgY3JlYXRlZCBieSBld2tfZnJhbWVfaGl0X3Rlc3RfbmV3KCkuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAppbmRleCBhY2M3NWE0YTk3NzNkNzY3MWVmOTIyOWNk
NGUxMTUxMGNhMDdiN2Y3Li4yMmEyYWFiMzYwNGQ3N2UwZTU2M2MyOTk2MjAwMTMwMmZlZmY4MTVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNs
dWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvdy5oIgogI2luY2x1ZGUg
IkpTTG9jay5oIgorI2luY2x1ZGUgIkxheW91dFR5cGVzLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1N
b3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiUG9wdXBNZW51Q2xpZW50LmgiCiAjaW5jbHVkZSAiUHJv
Z3Jlc3NUcmFja2VyLmgiCkBAIC05MzUsNyArOTM2LDcgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdr
X3ZpZXdfc21hcnRfem9vbV9zZXQoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QsIGZsb2F0IHpvb20s
IEUKICAgICBlbHNlCiAgICAgICAgIHB5ID0gMC4wOwogCi0gICAgcmV0ID0gZXdrX2ZyYW1lX3pv
b21fc2V0KHNkLT5tYWluX2ZyYW1lLCB6b29tKTsKKyAgICByZXQgPSBld2tfZnJhbWVfcGFnZV96
b29tX3NldChzZC0+bWFpbl9mcmFtZSwgem9vbSk7CiAKICAgICBld2tfZnJhbWVfc2Nyb2xsX3Np
emVfZ2V0KHNkLT5tYWluX2ZyYW1lLCAmdywgJmgpOwogICAgIHggPSAodyArIHNkLT52aWV3Lncp
ICogcHggLSBjeDsKQEAgLTE1MzcsMTAgKzE1MzgsMTAgQEAgRXdrX0hpc3RvcnkqIGV3a192aWV3
X2hpc3RvcnlfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogICAgIHJldHVybiBwcml2LT5oaXN0
b3J5OwogfQogCi1mbG9hdCBld2tfdmlld196b29tX2dldChjb25zdCBFdmFzX09iamVjdCogbykK
K2Zsb2F0IGV3a192aWV3X3pvb21fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQogewot
ICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIC0xLjApOwotICAgIHJldHVybiBl
d2tfZnJhbWVfem9vbV9nZXQoc2QtPm1haW5fZnJhbWUpOworICAgIEVXS19WSUVXX1NEX0dFVF9P
Ul9SRVRVUk4oZXdrVmlldywgc2QsIC0xLjApOworICAgIHJldHVybiBld2tfZnJhbWVfcGFnZV96
b29tX2dldChzZC0+bWFpbl9mcmFtZSk7CiB9CiAKIEVpbmFfQm9vbCBld2tfdmlld196b29tX3Nl
dChFdmFzX09iamVjdCogbywgZmxvYXQgem9vbSwgRXZhc19Db29yZCBjeCwgRXZhc19Db29yZCBj
eSkKQEAgLTE1NjksNiArMTU3MCw1NSBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV9zZXQoRXZh
c19PYmplY3QqIG8sIGZsb2F0IHpvb20sIEV2YXNfQ29vcmQgY3gsIEV2YXNfQ29vcgogICAgIHJl
dHVybiBzZC0+YXBpLT56b29tX3NldChzZCwgem9vbSwgY3gsIGN5KTsKIH0KIAorZmxvYXQgZXdr
X3ZpZXdfcGFnZV96b29tX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKK3sKKyAgICBF
V0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNkLCAtMS4wKTsKKyAgICByZXR1cm4g
ZXdrX2ZyYW1lX3BhZ2Vfem9vbV9nZXQoc2QtPm1haW5fZnJhbWUpOworfQorCitFaW5hX0Jvb2wg
ZXdrX3ZpZXdfcGFnZV96b29tX3NldChFdmFzX09iamVjdCogZXdrVmlldywgZmxvYXQgcGFnZVpv
b21GYWN0b3IpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzZCwg
RUlOQV9GQUxTRSk7CisgICAgcmV0dXJuIGV3a19mcmFtZV9wYWdlX3pvb21fc2V0KHNkLT5tYWlu
X2ZyYW1lLCBwYWdlWm9vbUZhY3Rvcik7Cit9CisKK2Zsb2F0IGV3a192aWV3X3NjYWxlX2dldChj
b25zdCBFdmFzX09iamVjdCogZXdrVmlldykKK3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVU
VVJOKGV3a1ZpZXcsIHNkLCAtMS4wKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4o
c2QsIHByaXYsIC0xLjApOworICAgIHJldHVybiBwcml2LT5wYWdlLT5wYWdlU2NhbGVGYWN0b3Io
KTsKK30KKworRWluYV9Cb29sIGV3a192aWV3X3NjYWxlX3NldChFdmFzX09iamVjdCogZXdrVmll
dywgZmxvYXQgc2NhbGVGYWN0b3IsIEV2YXNfQ29vcmQgY3gsIEV2YXNfQ29vcmQgY3kpCit7Cisg
ICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzZCwgRUlOQV9GQUxTRSk7Cisg
ICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKKwor
ICAgIGZsb2F0IGN1cnJlbnRTY2FsZUZhY3RvciA9IGV3a192aWV3X3NjYWxlX2dldChld2tWaWV3
KTsKKyAgICBpZiAoY3VycmVudFNjYWxlRmFjdG9yID09IC0xKQorICAgICAgICByZXR1cm4gRUlO
QV9GQUxTRTsKKworICAgIGludCB4LCB5OworICAgIGV3a19mcmFtZV9zY3JvbGxfcG9zX2dldChz
ZC0+bWFpbl9mcmFtZSwgJngsICZ5KTsKKworICAgIHggPSAoKCh4ICsgY3gpIC8gY3VycmVudFNj
YWxlRmFjdG9yKSAqIHNjYWxlRmFjdG9yKSAtIGN4OworICAgIHkgPSAoKCh5ICsgY3kpIC8gY3Vy
cmVudFNjYWxlRmFjdG9yKSAqIHNjYWxlRmFjdG9yKSAtIGN5OworICAgIHByaXYtPnBhZ2UtPnNl
dFBhZ2VTY2FsZUZhY3RvcihzY2FsZUZhY3RvciwgV2ViQ29yZTo6TGF5b3V0UG9pbnQoeCwgeSkp
OworICAgIHJldHVybiBFSU5BX1RSVUU7Cit9CisKK2Zsb2F0IGV3a192aWV3X3RleHRfem9vbV9n
ZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09S
X1JFVFVSTihld2tWaWV3LCBzZCwgLTEuMCk7CisgICAgcmV0dXJuIGV3a19mcmFtZV90ZXh0X3pv
b21fZ2V0KHNkLT5tYWluX2ZyYW1lKTsKK30KKworRWluYV9Cb29sIGV3a192aWV3X3RleHRfem9v
bV9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGZsb2F0IHRleHRab29tRmFjdG9yKQoreworICAg
IEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc2QsIEVJTkFfRkFMU0UpOworICAg
IHJldHVybiBld2tfZnJhbWVfdGV4dF96b29tX3NldChzZC0+bWFpbl9mcmFtZSwgdGV4dFpvb21G
YWN0b3IpOworfQorCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV93ZWFrX3Ntb290aF9zY2FsZV9n
ZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVS
TihvLCBzZCwgRUlOQV9GQUxTRSk7CkBAIC0xNjA5LDcgKzE2NTksNyBAQCBFaW5hX0Jvb2wgZXdr
X3ZpZXdfem9vbV93ZWFrX3NldChFdmFzX09iamVjdCogbywgZmxvYXQgem9vbSwgRXZhc19Db29y
ZCBjeCwgRXZhcwogICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKICAgICB9CiAKLSAgICBzZC0+
YW5pbWF0ZWRfem9vbS56b29tLnN0YXJ0ID0gZXdrX2ZyYW1lX3pvb21fZ2V0KHNkLT5tYWluX2Zy
YW1lKTsKKyAgICBzZC0+YW5pbWF0ZWRfem9vbS56b29tLnN0YXJ0ID0gZXdrX2ZyYW1lX3BhZ2Vf
em9vbV9nZXQoc2QtPm1haW5fZnJhbWUpOwogICAgIHNkLT5hbmltYXRlZF96b29tLnpvb20uZW5k
ID0gem9vbTsKICAgICBzZC0+YW5pbWF0ZWRfem9vbS56b29tLmN1cnJlbnQgPSB6b29tOwogICAg
IHJldHVybiBzZC0+YXBpLT56b29tX3dlYWtfc2V0KHNkLCB6b29tLCBjeCwgY3kpOwpAQCAtMTY2
OCw3ICsxNzE4LDcgQEAgRWluYV9Cb29sIGV3a192aWV3X3pvb21fYW5pbWF0ZWRfc2V0KEV2YXNf
T2JqZWN0KiBvLCBmbG9hdCB6b29tLCBmbG9hdCBkdXJhdGlvbiwKICAgICBpZiAocHJpdi0+YW5p
bWF0ZWRfem9vbS5hbmltYXRvcikKICAgICAgICAgcHJpdi0+YW5pbWF0ZWRfem9vbS56b29tLnN0
YXJ0ID0gX2V3a192aWV3X3pvb21fYW5pbWF0ZWRfY3VycmVudChwcml2KTsKICAgICBlbHNlIHsK
LSAgICAgICAgcHJpdi0+YW5pbWF0ZWRfem9vbS56b29tLnN0YXJ0ID0gZXdrX2ZyYW1lX3pvb21f
Z2V0KHNkLT5tYWluX2ZyYW1lKTsKKyAgICAgICAgcHJpdi0+YW5pbWF0ZWRfem9vbS56b29tLnN0
YXJ0ID0gZXdrX2ZyYW1lX3BhZ2Vfem9vbV9nZXQoc2QtPm1haW5fZnJhbWUpOwogICAgICAgICBf
ZXdrX3ZpZXdfem9vbV9hbmltYXRpb25fc3RhcnQoc2QpOwogICAgIH0KIApAQCAtMTY5MiwxOCAr
MTc0Miw2IEBAIEVpbmFfQm9vbCBld2tfdmlld196b29tX2FuaW1hdGVkX3NldChFdmFzX09iamVj
dCogbywgZmxvYXQgem9vbSwgZmxvYXQgZHVyYXRpb24sCiAgICAgcmV0dXJuIEVJTkFfVFJVRTsK
IH0KIAotRWluYV9Cb29sIGV3a192aWV3X3pvb21fdGV4dF9vbmx5X2dldChjb25zdCBFdmFzX09i
amVjdCogbykKLXsKLSAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZB
TFNFKTsKLSAgICByZXR1cm4gZXdrX2ZyYW1lX3pvb21fdGV4dF9vbmx5X2dldChzZC0+bWFpbl9m
cmFtZSk7Ci19Ci0KLUVpbmFfQm9vbCBld2tfdmlld196b29tX3RleHRfb25seV9zZXQoRXZhc19P
YmplY3QqIG8sIEVpbmFfQm9vbCBzZXR0aW5nKQotewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9S
RVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwotICAgIHJldHVybiBld2tfZnJhbWVfem9vbV90ZXh0
X29ubHlfc2V0KHNkLT5tYWluX2ZyYW1lLCBzZXR0aW5nKTsKLX0KLQogRWluYV9Cb29sIGV3a192
aWV3X3ByZV9yZW5kZXJfcmVnaW9uKEV2YXNfT2JqZWN0KiBvLCBFdmFzX0Nvb3JkIHgsIEV2YXNf
Q29vcmQgeSwgRXZhc19Db29yZCB3LCBFdmFzX0Nvb3JkIGgsIGZsb2F0IHpvb20pCiB7CiAgICAg
RVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CkBAIC0xNzE4LDcg
KzE3NTYsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfcHJlX3JlbmRlcl9yZWdpb24oRXZhc19PYmpl
Y3QqIG8sIEV2YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5LAogICAgIGlmIChwcml2LT5hbmltYXRl
ZF96b29tLmFuaW1hdG9yKQogICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKIAotICAgIGN1cl96
b29tID0gZXdrX2ZyYW1lX3pvb21fZ2V0KHNkLT5tYWluX2ZyYW1lKTsKKyAgICBjdXJfem9vbSA9
IGV3a19mcmFtZV9wYWdlX3pvb21fZ2V0KHNkLT5tYWluX2ZyYW1lKTsKIAogICAgIGlmIChjdXJf
em9vbSA8IDAuMDAwMDEpCiAgICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOwpAQCAtMTc1Nyw3ICsx
Nzk1LDcgQEAgRWluYV9Cb29sIGV3a192aWV3X3ByZV9yZW5kZXJfcmVsYXRpdmVfcmFkaXVzKEV2
YXNfT2JqZWN0KiBvLCB1bnNpZ25lZCBpbnQgbikKICAgICBpZiAocHJpdi0+YW5pbWF0ZWRfem9v
bS5hbmltYXRvcikKICAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CiAKLSAgICBjdXJfem9vbSA9
IGV3a19mcmFtZV96b29tX2dldChzZC0+bWFpbl9mcmFtZSk7CisgICAgY3VyX3pvb20gPSBld2tf
ZnJhbWVfcGFnZV96b29tX2dldChzZC0+bWFpbl9mcmFtZSk7CiAgICAgcmV0dXJuIHNkLT5hcGkt
PnByZV9yZW5kZXJfcmVsYXRpdmVfcmFkaXVzKHNkLCBuLCBjdXJfem9vbSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5oIGIvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a192aWV3LmgKaW5kZXggMjdkNmE2YmMyNDNmNWU0OWIxOWE2ODhkYTZhOTlkNzc5
MmEzZDgzYy4uNGIxMGU4ZGU4OTk3MGVmZmNmMDA1MjY0NjFiOTQyYjhkNTNjMGVhNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmgKKysrIGIvU291cmNlL1dlYktp
dC9lZmwvZXdrL2V3a192aWV3LmgKQEAgLTk3Miw2ICs5NzIsNjUgQEAgRUFQSSBFaW5hX0Jvb2wg
ICAgZXdrX3ZpZXdfaGlzdG9yeV9lbmFibGVfc2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wg
ZW5hYmxlKTsKIEVBUEkgRXdrX0hpc3RvcnkgKmV3a192aWV3X2hpc3RvcnlfZ2V0KGNvbnN0IEV2
YXNfT2JqZWN0ICpvKTsKIAogLyoqCisgKiBHZXRzIHRoZSBjdXJyZW50IHBhZ2Ugem9vbSBsZXZl
bCBvZiB0aGUgbWFpbiBmcmFtZS4KKyAqCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBnZXQg
dGhlIHpvb20gbGV2ZWwKKyAqCisgKiBAcmV0dXJuIGN1cnJlbnQgem9vbSBsZXZlbCBpbiB1c2Ug
b24gc3VjY2VzcyBvciBAYyAtMS4wIG9uIGZhaWx1cmUKKyAqLworRUFQSSBmbG9hdCAgICAgICAg
ZXdrX3ZpZXdfcGFnZV96b29tX2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7CisKKy8qKgorICog
U2V0cyB0aGUgY3VycmVudCBwYWdlIHpvb20gbGV2ZWwgb2YgdGhlIG1haW4gZnJhbWUuCisgKgor
ICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gc2V0IHRoZSB6b29tIGxldmVsCisgKiBAcGFyYW0g
cGFnZVpvb21GYWN0b3IgYSBuZXcgbGV2ZWwgdG8gc2V0CisgKgorICogQHJldHVybiBAYyBFSU5B
X1RSVUUgb24gc3VjY2VzcyBvciBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQorICovCitFQVBJIEVp
bmFfQm9vbCAgICBld2tfdmlld19wYWdlX3pvb21fc2V0KEV2YXNfT2JqZWN0ICpvLCBmbG9hdCBw
YWdlWm9vbUZhY3Rvcik7CisKKy8qKgorICogR2V0cyB0aGUgY3VycmVudCBzY2FsZSBmYWN0b3Ig
b2YgdGhlIHBhZ2UuCisgKgorICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gZ2V0IHRoZSBzY2Fs
ZSBmYWN0b3IgCisgKgorICogQHJldHVybiBjdXJyZW50IHNjYWxlIGZhY3RvciBpbiB1c2Ugb24g
c3VjY2VzcyBvciBAYyAtMS4wIG9uIGZhaWx1cmUKKyAqLworRUFQSSBmbG9hdCAgICAgICAgZXdr
X3ZpZXdfc2NhbGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKKworLyoqCisgKiBTY2FsZXMg
dGhlIGN1cnJlbnQgcGFnZSwgY2VudGVyZWQgYXQgdGhlIGdpdmVuIHBvaW50LgorICoKKyAqIEBw
YXJhbSBvIHZpZXcgb2JqZWN0IHRvIHNldCB0aGUgem9vbSBsZXZlbAorICogQHBhcmFtIHNjYWxl
RmFjdG9yIGEgbmV3IGxldmVsIHRvIHNldAorICogQHBhcmFtIGN4IHggb2YgY2VudGVyIGNvb3Jk
aW5hdGUKKyAqIEBwYXJhbSBjeSB5IG9mIGNlbnRlciBjb29yZGluYXRlCisgKgorICogQHJldHVy
biBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcyBvciBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZQorICov
CitFQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19zY2FsZV9zZXQoRXZhc19PYmplY3QgKm8sIGZs
b2F0IHNjYWxlRmFjdG9yLCBFdmFzX0Nvb3JkIGN4LCBFdmFzX0Nvb3JkIGN5KTsKKworLyoqCisg
KiBHZXRzIHRoZSBjdXJyZW50IHRleHQgem9vbSBsZXZlbCBvZiB0aGUgbWFpbiBmcmFtZS4KKyAq
CisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBnZXQgdGhlIHpvb20gbGV2ZWwKKyAqCisgKiBA
cmV0dXJuIGN1cnJlbnQgem9vbSBsZXZlbCBpbiB1c2Ugb24gc3VjY2VzcyBvciBAYyAtMS4wIG9u
IGZhaWx1cmUKKyAqLworRUFQSSBmbG9hdCAgICAgICAgZXdrX3ZpZXdfdGV4dF96b29tX2dldChj
b25zdCBFdmFzX09iamVjdCAqbyk7CisKKy8qKgorICogU2V0cyB0aGUgY3VycmVudCB0ZXh0IHpv
b20gbGV2ZWwgb2YgdGhlIG1haW4gZnJhbWUuCisgKgorICogQHBhcmFtIG8gdmlldyBvYmplY3Qg
dG8gc2V0IHRoZSB6b29tIGxldmVsCisgKiBAcGFyYW0gdGV4dFpvb21GYWN0b3IgYSBuZXcgbGV2
ZWwgdG8gc2V0CisgKgorICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcyBvciBAYyBF
SU5BX0ZBTFNFIG90aGVyd2lzZQorICovCitFQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld190ZXh0
X3pvb21fc2V0KEV2YXNfT2JqZWN0ICpvLCBmbG9hdCB0ZXh0Wm9vbUZhY3Rvcik7CisKKy8qKgog
ICogR2V0cyB0aGUgY3VycmVudCB6b29tIGxldmVsIG9mIHRoZSBtYWluIGZyYW1lLgogICoKICAq
IEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIGdldCB0aGUgem9vbSBsZXZlbApAQCAtMTEzOCwyNSAr
MTE5Nyw2IEBAIEVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3pvb21fYW5pbWF0ZWRfbWFya19z
dG9wKEV2YXNfT2JqZWN0ICpvKTsKIEVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3pvb21fYW5p
bWF0ZWRfc2V0KEV2YXNfT2JqZWN0ICpvLCBmbG9hdCB6b29tLCBmbG9hdCBkdXJhdGlvbiwgRXZh
c19Db29yZCBjeCwgRXZhc19Db29yZCBjeSk7CiAKIC8qKgotICogUXVlcmllcyBpZiB6b29tIGxl
dmVsIGp1c3QgYXBwbGllcyB0byB0ZXh0IG9ubHkgYW5kIG5vdCBvdGhlciBlbGVtZW50cy4KLSAq
Ci0gKiBAcGFyYW0gbyB2aWV3IHRvIHF1ZXJ5IHpvb20gbGV2ZWwgZm9yIHRleHQgb25seQotICoK
LSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIHpvb20gbGV2ZWwgaXMgYXBwbGllZCB0byB0ZXh0
IG9ubHksIEBjIEVJTkFfRkFMU0UgaWYgbm90IG9yIG9uIGZhaWx1cmUKLSAqLwotRUFQSSBFaW5h
X0Jvb2wgICAgZXdrX3ZpZXdfem9vbV90ZXh0X29ubHlfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpv
KTsKLQotLyoqCi0gKiBTZXRzIGlmIHpvb20gbGV2ZWwganVzdCBhcHBsaWVzIHRvIHRleHQgb25s
eSBhbmQgbm90IG90aGVyIGVsZW1lbnRzLgotICoKLSAqIEBwYXJhbSBvIHZpZXcgdG8gYXBwbHkg
em9vbSBsZXZlbCBmb3IgdGV4dCBvbmx5Ci0gKiBAcGFyYW0gc2V0dGluZyBAYyBFSU5BX1RSVUUg
aWYgem9vbSBsZXZlbCBzaG91bGQgYmUgYXBwbGllZCB0byB0ZXh0IG9ubHksIEBjIEVJTkFfRkFM
U0UgaWYgbm90Ci0gKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcyBvciBAYyBF
SU5BX0ZBTFNFIG90aGVyd2lzZQotICovCi1FQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld196b29t
X3RleHRfb25seV9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBzZXR0aW5nKTsKLQotLyoq
CiAgKiBBc2tzIGVuZ2luZSB0byBwcmUtcmVuZGVyIHJlZ2lvbi4KICAqCiAgKiBFbmdpbmVzIGFu
ZCBiYWNraW5nIHN0b3JlIG1pZ2h0IGJlIGFibGUgdG8gcHJlLXJlbmRlciByZWdpb25zIGluCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110076</attachid>
            <date>2011-10-06 18:56:23 -0700</date>
            <delta_ts>2011-10-06 20:37:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62842-20111007105621.patch</filename>
            <type>text/plain</type>
            <size>16731</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTY4ODcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZs
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCA5OTcwZjYwMWI0
YWQ1NDlkYjVmNjY2OGQ3NDliYmFjMWE2MDY4NjllLi43NGY1YWViYzM5M2I3YjllYzMwMDBmYTBi
YTMzMWFkM2I4NzFmNDVhIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTEt
MTAtMDYgIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtF
RkxdIFJlZmFjdG9yIHpvb20gcmVsYXRlZCBBUElzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjI4NDIKKworICAgICAgICBDdXJyZW50IHpvb20gYXBp
cyBjYW4ndCBzdXBwb3J0IHRoZSBjYXNlIG9mIHVzaW5nIGJvdGggcGFnZSB6b29tIGFuZCB0ZXh0
CisgICAgICAgIHpvb20uCisKKyAgICAgICAgQXMgYSBmaXJzdCBzdGVwIHRvIHJlZmFjdG9yLCB0
aGlzIHNwbGl0IGV3a197dmlld3xmcmFtZX1fem9vbV97Z2V0fHNldH0KKyAgICAgICAgdG8gdXNl
IGJvdGggcGFnZV96b29tIGFuZCB0ZXh0IHpvb20gaW5kaXZpZHVhbGx5LgorICAgICAgICBJbiBh
ZGRpdGlvbiwgaW50cm9kdWNlIGV3a192aWV3X3NjYWxlX3tnZXR8c2V0fSB0byBzdXBwb3J0IHBy
b3BvcnRpb25hbCBzY2FsaW5nLgorCisgICAgICAgIGV3a192aWV3X3pvb21fe2dldHxzZXR9IHdp
bGwgcmVtYWluIHVuY2hhbmdlZCB1bnRpbCB0aGUgYmVoYXZpb3Igb2Ygc21hcnRfem9vbQorICAg
ICAgICB3YXMgY2hhbmdlZC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOiBSZW1vdmUgZXdrX2ZyYW1lX3pvb21fdGV4
dF9vbmx5X3tnZXR8c2V0fS4KKyAgICAgICAgKGV3a19mcmFtZV9wYWdlX3pvb21fZ2V0KTogUmVu
YW1lZCBmcm9tIGV3a19mcmFtZV96b29tX2dldCgpLgorICAgICAgICAoZXdrX2ZyYW1lX3BhZ2Vf
em9vbV9zZXQpOiBSZW5hbWVkIGZyb20gZXdrX2ZyYW1lX3pvb21fc2V0KCkuCisgICAgICAgIChl
d2tfZnJhbWVfdGV4dF96b29tX2dldCk6IEV4dHJhY3RlZCBmcm9tIGV3a19mcmFtZV96b29tX2dl
dCgpLgorICAgICAgICAoZXdrX2ZyYW1lX3RleHRfem9vbV9zZXQpOiBFeHRyYWN0ZWQgZnJvbSBl
d2tfZnJhbWVfem9vbV9zZXQoKS4KKyAgICAgICAgKiBld2svZXdrX2ZyYW1lLmg6CisgICAgICAg
ICogZXdrL2V3a192aWV3LmNwcDogUmVtb3ZlIGV3a192aWV3X3pvb21fdGV4dF9vbmx5X3tnZXR8
c2V0fQorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X3pvb21fc2V0KTogQ2hhbmdlIGV3a19mcmFt
ZV96b29tX2dldCgpIHRvIGV3a19mcmFtZV9wYWdlX3pvb21fZ2V0KCkuCisgICAgICAgIChld2tf
dmlld196b29tX2dldCk6IENoYW5nZSBld2tfZnJhbWVfem9vbV9nZXQoKSB0byBld2tfZnJhbWVf
cGFnZV96b29tX2dldCgpLgorICAgICAgICAoZXdrX3ZpZXdfcGFnZV96b29tX2dldCk6IEV4dHJh
Y3RlZCBmcm9tIGV3a192aWV3X3pvb21fZ2V0KCkuCisgICAgICAgIChld2tfdmlld19wYWdlX3pv
b21fc2V0KTogRXh0cmFjdGVkIGZyb20gZXdrX3ZpZXdfem9vbV9zZXQoKS4KKyAgICAgICAgKGV3
a192aWV3X3NjYWxlX2dldCk6IEFkZGVkLgorICAgICAgICAoZXdrX3ZpZXdfc2NhbGVfc2V0KTog
QWRkZWQuCisgICAgICAgIChld2tfdmlld190ZXh0X3pvb21fZ2V0KTogRXh0cmFjdGVkIGZyb20g
ZXdrX3ZpZXdfem9vbV9nZXQoKS4KKyAgICAgICAgKGV3a192aWV3X3RleHRfem9vbV9zZXQpOiBF
eHRyYWN0ZWQgZnJvbSBld2tfdmlld196b29tX3NldCgpLgorICAgICAgICAoZXdrX3ZpZXdfem9v
bV93ZWFrX3NldCk6IENoYW5nZSBld2tfZnJhbWVfem9vbV9nZXQgdG8gZXdrX2ZyYW1lX3BhZ2Vf
em9vbV9nZXQoKS4KKyAgICAgICAgKGV3a192aWV3X3pvb21fYW5pbWF0ZWRfc2V0KTogQ2hhbmdl
IGV3a19mcmFtZV96b29tX2dldCgpIHRvIGV3a19mcmFtZV9wYWdlX3pvb21fZ2V0KCkuCisgICAg
ICAgIChld2tfdmlld19wcmVfcmVuZGVyX3JlZ2lvbik6IENoYW5nZSBld2tfZnJhbWVfem9vbV9n
ZXQoKSB0byBld2tfZnJhbWVfcGFnZV96b29tX2dldCgpLgorICAgICAgICAoZXdrX3ZpZXdfcHJl
X3JlbmRlcl9yZWxhdGl2ZV9yYWRpdXMpOiBDaGFuZ2UgZXdrX2ZyYW1lX3pvb21fZ2V0KCkgdG8g
ZXdrX2ZyYW1lX3BhZ2Vfem9vbV9nZXQoKS4KKyAgICAgICAgKiBld2svZXdrX3ZpZXcuaDoKKwog
MjAxMS0xMC0wNCAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgogCiAg
ICAgICAgIFtFRkxdIE9ubHkgc2V0IHdoZW4gdGhlIGN1c3RvbSBlbmNvZGluZyBpcyBkaWZmZXJl
bnQgZnJvbSBleGlzdGluZyB2YWx1ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdr
L2V3a19mcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcAppbmRl
eCBiYzhmOGFlNjZlM2U2OGE3MzA1ZWFmYTFmOWM5MjM5NDg2MmY1OTFhLi44NGQ1MDQ0ZDFhMmVm
OTYzYWMxNzVjOGJmODEzMjYxYzc3YjhhMzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX2ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1l
LmNwcApAQCAtNzUsNyArNzUsNiBAQCBzdHJ1Y3QgRXdrX0ZyYW1lX1NtYXJ0X0RhdGEgewogICAg
IHN0cnVjdCB7CiAgICAgICAgIEV2YXNfQ29vcmQgdywgaDsKICAgICB9IGNvbnRlbnRzX3NpemU7
Ci0gICAgRWluYV9Cb29sIHRleHRab29tIDogMTsKICAgICBFaW5hX0Jvb2wgZWRpdGFibGUgOiAx
OwogfTsKIApAQCAtNjEyLDQ2ICs2MTEsMzMgQEAgRWluYV9Cb29sIGV3a19mcmFtZV9uYXZpZ2F0
ZV9wb3NzaWJsZShFdmFzX09iamVjdCogbywgaW50IHN0ZXBzKQogICAgIHJldHVybiBwYWdlLT5j
YW5Hb0JhY2tPckZvcndhcmQoc3RlcHMpOwogfQogCi1mbG9hdCBld2tfZnJhbWVfem9vbV9nZXQo
Y29uc3QgRXZhc19PYmplY3QqIG8pCitmbG9hdCBld2tfZnJhbWVfcGFnZV96b29tX2dldChjb25z
dCBFdmFzX09iamVjdCogZXdrRnJhbWUpCiB7Ci0gICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRV
Uk4obywgc2QsIC0xLjApOworICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1l
LCBzZCwgLTEuMCk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLT5mcmFt
ZSwgLTEuMCk7Ci0KLSAgICBpZiAoc2QtPnRleHRab29tKQotICAgICAgICByZXR1cm4gc2QtPmZy
YW1lLT50ZXh0Wm9vbUZhY3RvcigpOwogICAgIHJldHVybiBzZC0+ZnJhbWUtPnBhZ2Vab29tRmFj
dG9yKCk7CiB9CiAKLUVpbmFfQm9vbCBld2tfZnJhbWVfem9vbV9zZXQoRXZhc19PYmplY3QqIG8s
IGZsb2F0IHpvb20pCitFaW5hX0Jvb2wgZXdrX2ZyYW1lX3BhZ2Vfem9vbV9zZXQoRXZhc19PYmpl
Y3QqIGV3a0ZyYW1lLCBmbG9hdCBwYWdlWm9vbUZhY3RvcikKIHsKLSAgICBFV0tfRlJBTUVfU0Rf
R0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CisgICAgRVdLX0ZSQU1FX1NEX0dFVF9P
Ul9SRVRVUk4oZXdrRnJhbWUsIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTl9WQUwoc2QtPmZyYW1lLCBFSU5BX0ZBTFNFKTsKLSAgICBpZiAoc2QtPnRleHRa
b29tKQotICAgICAgICBzZC0+ZnJhbWUtPnNldFRleHRab29tRmFjdG9yKHpvb20pOwotICAgIGVs
c2UKLSAgICAgICAgc2QtPmZyYW1lLT5zZXRQYWdlWm9vbUZhY3Rvcih6b29tKTsKKyAgICBzZC0+
ZnJhbWUtPnNldFBhZ2Vab29tRmFjdG9yKHBhZ2Vab29tRmFjdG9yKTsKICAgICByZXR1cm4gRUlO
QV9UUlVFOwogfQogCi1FaW5hX0Jvb2wgZXdrX2ZyYW1lX3pvb21fdGV4dF9vbmx5X2dldChjb25z
dCBFdmFzX09iamVjdCogbykKK2Zsb2F0IGV3a19mcmFtZV90ZXh0X3pvb21fZ2V0KGNvbnN0IEV2
YXNfT2JqZWN0KiBld2tGcmFtZSkKIHsKLSAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihv
LCBzZCwgRUlOQV9GQUxTRSk7Ci0gICAgcmV0dXJuIHNkLT50ZXh0Wm9vbTsKKyAgICBFV0tfRlJB
TUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc2QsIC0xLjApOworICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOX1ZBTChzZC0+ZnJhbWUsIC0xLjApOworICAgIHJldHVybiBzZC0+ZnJh
bWUtPnRleHRab29tRmFjdG9yKCk7CiB9CiAKLUVpbmFfQm9vbCBld2tfZnJhbWVfem9vbV90ZXh0
X29ubHlfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgc2V0dGluZykKK0VpbmFfQm9vbCBl
d2tfZnJhbWVfdGV4dF96b29tX3NldChFdmFzX09iamVjdCogZXdrRnJhbWUsIGZsb2F0IHRleHRa
b29tRmFjdG9yKQogewotICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5B
X0ZBTFNFKTsKKyAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc2QsIEVJ
TkFfRkFMU0UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+ZnJhbWUs
IEVJTkFfRkFMU0UpOwotICAgIGlmIChzZC0+dGV4dFpvb20gPT0gc2V0dGluZykKLSAgICAgICAg
cmV0dXJuIEVJTkFfVFJVRTsKLQotICAgIGZsb2F0IHpvb21fbGV2ZWwgPSBzZC0+dGV4dFpvb20g
PyBzZC0+ZnJhbWUtPnRleHRab29tRmFjdG9yKCkgOiBzZC0+ZnJhbWUtPnBhZ2Vab29tRmFjdG9y
KCk7Ci0gICAgc2QtPnRleHRab29tID0gc2V0dGluZzsKLSAgICBpZiAoc2QtPnRleHRab29tKQot
ICAgICAgICBzZC0+ZnJhbWUtPnNldFBhZ2VBbmRUZXh0Wm9vbUZhY3RvcnMoMSwgem9vbV9sZXZl
bCk7Ci0gICAgZWxzZQotICAgICAgICBzZC0+ZnJhbWUtPnNldFBhZ2VBbmRUZXh0Wm9vbUZhY3Rv
cnMoem9vbV9sZXZlbCwgMSk7CisgICAgc2QtPmZyYW1lLT5zZXRUZXh0Wm9vbUZhY3Rvcih0ZXh0
Wm9vbUZhY3Rvcik7CiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a19mcmFtZS5oCmluZGV4IDY2MmIwZDVhNmUwZjBjZDNjM2IxODYxNGM0NzQ5Y2ZkMmM2N2JiNzAu
LjVlYzllOGQzNGMwNzllZWZkMjgwOTlkMjk1MzVhNzEwZDI3MGNmMzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX2ZyYW1lLmgKQEAgLTUyMCw0NCArNTIwLDUwIEBAIEVBUEkgRWluYV9Cb29sICAgIGV3
a19mcmFtZV9mb3J3YXJkX3Bvc3NpYmxlKEV2YXNfT2JqZWN0ICpvKTsKIEVBUEkgRWluYV9Cb29s
ICAgIGV3a19mcmFtZV9uYXZpZ2F0ZV9wb3NzaWJsZShFdmFzX09iamVjdCAqbywgaW50IHN0ZXBz
KTsKIAogLyoqCi0gKiBHZXRzIHRoZSBjdXJyZW50IHpvb20gbGV2ZWwgdXNlZCBieSB0aGlzIGZy
YW1lLgorICogR2V0cyB0aGUgY3VycmVudCBwYWdlIHpvb20gbGV2ZWwgdXNlZCBieSB0aGlzIGZy
YW1lLgogICoKICAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBnZXQgem9vbSBsZXZlbAogICoK
LSAqIEByZXR1cm4gem9vbSBsZXZlbCBmb3IgdGhlIGZyYW1lIG9yIEBjIC0xLjAgb24gZmFpbHVy
ZQorICogQHJldHVybiBwYWdlIHpvb20gbGV2ZWwgZm9yIHRoZSBmcmFtZSBvciBAYyAtMS4wIG9u
IGZhaWx1cmUKKyAqCisgKiBAc2VlIGV3a19mcmFtZV90ZXh0X3pvb21fZ2V0KCkKICAqLwotRUFQ
SSBmbG9hdCAgICAgICAgZXdrX2ZyYW1lX3pvb21fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsK
K0VBUEkgZmxvYXQgICAgICAgIGV3a19mcmFtZV9wYWdlX3pvb21fZ2V0KGNvbnN0IEV2YXNfT2Jq
ZWN0ICpvKTsKIAogLyoqCi0gKiBTZXRzIHRoZSBjdXJyZW50IHpvb20gbGV2ZWwgdXNlZCBieSB0
aGlzIGZyYW1lLgorICogU2V0cyB0aGUgY3VycmVudCBwYWdlIHpvb20gbGV2ZWwgdXNlZCBieSB0
aGlzIGZyYW1lLgogICoKICAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBjaGFuZ2Ugem9vbSBs
ZXZlbAotICogQHBhcmFtIHpvb20gYSBuZXcgem9vbSBsZXZlbAorICogQHBhcmFtIHBhZ2Vab29t
RmFjdG9yIGEgbmV3IHpvb20gbGV2ZWwKICAqCiAgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBz
dWNjZXNzIG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFpbHVyZQogICoKLSAqIEBzZWUgZXdrX2ZyYW1l
X3pvb21fdGV4dF9vbmx5X3NldCgpCisgKiBAc2VlIGV3a19mcmFtZV90ZXh0X3pvb21fc2V0KCkK
ICAqLwotRUFQSSBFaW5hX0Jvb2wgICAgZXdrX2ZyYW1lX3pvb21fc2V0KEV2YXNfT2JqZWN0ICpv
LCBmbG9hdCB6b29tKTsKK0VBUEkgRWluYV9Cb29sICAgIGV3a19mcmFtZV9wYWdlX3pvb21fc2V0
KEV2YXNfT2JqZWN0ICpvLCBmbG9hdCBwYWdlWm9vbUZhY3Rvcik7CiAKIC8qKgotICogUXVlcmll
cyBpZiB6b29tIGxldmVsIGp1c3QgYXBwbGllcyB0byB0ZXh0IG9ubHkgYW5kIG5vdCBvdGhlciBl
bGVtZW50cy4KKyAqIEdldHMgdGhlIGN1cnJlbnQgdGV4dCB6b29tIGxldmVsIHVzZWQgYnkgdGhp
cyBmcmFtZS4KKyAqCisgKiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gZ2V0IHpvb20gbGV2ZWwK
ICAqCi0gKiBAcGFyYW0gbyBmcmFtZSB0byBxdWVyeSB6b29tIGxldmVsIGZvciB0ZXh0IG9ubHkK
KyAqIEByZXR1cm4gdGV4dCB6b29tIGxldmVsIGZvciB0aGUgZnJhbWUgb3IgQGMgLTEuMCBvbiBm
YWlsdXJlCiAgKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUgaWYgem9vbSBsZXZlbCBpcyBhcHBs
aWVkIHRvIHRleHQgb25seSwgQGMgRUlOQV9GQUxTRSBpZiBub3Qgb3Igb24gZmFpbHVyZQorICog
QHNlZSBld2tfZnJhbWVfcGFnZV96b29tX2dldCgpCiAgKi8KLUVBUEkgRWluYV9Cb29sICAgIGV3
a19mcmFtZV96b29tX3RleHRfb25seV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOworRUFQSSBm
bG9hdCAgICAgICAgZXdrX2ZyYW1lX3RleHRfem9vbV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8p
OwogCiAvKioKLSAqIFNldHMgaWYgem9vbSBsZXZlbCBqdXN0IGFwcGxpZXMgdG8gdGV4dCBvbmx5
IGFuZCBub3Qgb3RoZXIgZWxlbWVudHMuCisgKiBTZXRzIHRoZSBjdXJyZW50IHRleHQgem9vbSBs
ZXZlbCB1c2VkIGJ5IHRoaXMgZnJhbWUuCiAgKgotICogQHBhcmFtIG8gZnJhbWUgdG8gYXBwbHkg
em9vbSBsZXZlbCBmb3IgdGV4dCBvbmx5Ci0gKiBAcGFyYW0gc2V0dGluZyBAYyBFSU5BX1RSVUUg
aWYgem9vbSBsZXZlbCBzaG91bGQgYmUgYXBwbGllZCB0byB0ZXh0IG9ubHksIEBjIEVJTkFfRkFM
U0UgaWYgbm90CisgKiBAcGFyYW0gbyBmcmFtZSBvYmplY3QgdG8gY2hhbmdlIHpvb20gbGV2ZWwK
KyAqIEBwYXJhbSB0ZXh0Wm9vbUZhY3RvciBhIG5ldyB6b29tIGxldmVsCiAgKgotICogQHJldHVy
biBAYyBFSU5BX1RSVUUgb24gc3VjY2VzcywgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKKyAqIEBy
ZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJl
CisgKgorICogQHNlZSBld2tfZnJhbWVfcGFnZV96b29tX3NldCgpCiAgKi8KLUVBUEkgRWluYV9C
b29sICAgIGV3a19mcmFtZV96b29tX3RleHRfb25seV9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFf
Qm9vbCBzZXR0aW5nKTsKK0VBUEkgRWluYV9Cb29sICAgIGV3a19mcmFtZV90ZXh0X3pvb21fc2V0
KEV2YXNfT2JqZWN0ICpvLCBmbG9hdCB0ZXh0Wm9vbUZhY3Rvcik7CiAKIC8qKgogICogRnJlZXMg
aGl0IHRlc3QgaW5zdGFuY2UgY3JlYXRlZCBieSBld2tfZnJhbWVfaGl0X3Rlc3RfbmV3KCkuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAppbmRleCBhY2M3NWE0YTk3NzNkNzY3MWVmOTIyOWNk
NGUxMTUxMGNhMDdiN2Y3Li4zYjM1MDlkNGFhOTA3YmY2MmFlMTY1Mzg5NzA2Zjc4YmRkYmI5MDk2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNs
dWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvdy5oIgogI2luY2x1ZGUg
IkpTTG9jay5oIgorI2luY2x1ZGUgIkxheW91dFR5cGVzLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1N
b3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiUG9wdXBNZW51Q2xpZW50LmgiCiAjaW5jbHVkZSAiUHJv
Z3Jlc3NUcmFja2VyLmgiCkBAIC05MzUsNyArOTM2LDcgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdr
X3ZpZXdfc21hcnRfem9vbV9zZXQoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QsIGZsb2F0IHpvb20s
IEUKICAgICBlbHNlCiAgICAgICAgIHB5ID0gMC4wOwogCi0gICAgcmV0ID0gZXdrX2ZyYW1lX3pv
b21fc2V0KHNkLT5tYWluX2ZyYW1lLCB6b29tKTsKKyAgICByZXQgPSBld2tfZnJhbWVfcGFnZV96
b29tX3NldChzZC0+bWFpbl9mcmFtZSwgem9vbSk7CiAKICAgICBld2tfZnJhbWVfc2Nyb2xsX3Np
emVfZ2V0KHNkLT5tYWluX2ZyYW1lLCAmdywgJmgpOwogICAgIHggPSAodyArIHNkLT52aWV3Lncp
ICogcHggLSBjeDsKQEAgLTE1MzcsMTAgKzE1MzgsMTAgQEAgRXdrX0hpc3RvcnkqIGV3a192aWV3
X2hpc3RvcnlfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogICAgIHJldHVybiBwcml2LT5oaXN0
b3J5OwogfQogCi1mbG9hdCBld2tfdmlld196b29tX2dldChjb25zdCBFdmFzX09iamVjdCogbykK
K2Zsb2F0IGV3a192aWV3X3pvb21fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQogewot
ICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIC0xLjApOwotICAgIHJldHVybiBl
d2tfZnJhbWVfem9vbV9nZXQoc2QtPm1haW5fZnJhbWUpOworICAgIEVXS19WSUVXX1NEX0dFVF9P
Ul9SRVRVUk4oZXdrVmlldywgc2QsIC0xLjApOworICAgIHJldHVybiBld2tfZnJhbWVfcGFnZV96
b29tX2dldChzZC0+bWFpbl9mcmFtZSk7CiB9CiAKIEVpbmFfQm9vbCBld2tfdmlld196b29tX3Nl
dChFdmFzX09iamVjdCogbywgZmxvYXQgem9vbSwgRXZhc19Db29yZCBjeCwgRXZhc19Db29yZCBj
eSkKQEAgLTE1NjksNiArMTU3MCw1NSBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV9zZXQoRXZh
c19PYmplY3QqIG8sIGZsb2F0IHpvb20sIEV2YXNfQ29vcmQgY3gsIEV2YXNfQ29vcgogICAgIHJl
dHVybiBzZC0+YXBpLT56b29tX3NldChzZCwgem9vbSwgY3gsIGN5KTsKIH0KIAorZmxvYXQgZXdr
X3ZpZXdfcGFnZV96b29tX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKK3sKKyAgICBF
V0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNkLCAtMS4wKTsKKyAgICByZXR1cm4g
ZXdrX2ZyYW1lX3BhZ2Vfem9vbV9nZXQoc2QtPm1haW5fZnJhbWUpOworfQorCitFaW5hX0Jvb2wg
ZXdrX3ZpZXdfcGFnZV96b29tX3NldChFdmFzX09iamVjdCogZXdrVmlldywgZmxvYXQgcGFnZVpv
b21GYWN0b3IpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzZCwg
RUlOQV9GQUxTRSk7CisgICAgcmV0dXJuIGV3a19mcmFtZV9wYWdlX3pvb21fc2V0KHNkLT5tYWlu
X2ZyYW1lLCBwYWdlWm9vbUZhY3Rvcik7Cit9CisKK2Zsb2F0IGV3a192aWV3X3NjYWxlX2dldChj
b25zdCBFdmFzX09iamVjdCogZXdrVmlldykKK3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVU
VVJOKGV3a1ZpZXcsIHNkLCAtMS4wKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4o
c2QsIHByaXYsIC0xLjApOworICAgIHJldHVybiBwcml2LT5wYWdlLT5wYWdlU2NhbGVGYWN0b3Io
KTsKK30KKworRWluYV9Cb29sIGV3a192aWV3X3NjYWxlX3NldChFdmFzX09iamVjdCogZXdrVmll
dywgZmxvYXQgc2NhbGVGYWN0b3IsIEV2YXNfQ29vcmQgY3gsIEV2YXNfQ29vcmQgY3kpCit7Cisg
ICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzZCwgRUlOQV9GQUxTRSk7Cisg
ICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNFKTsKKwor
ICAgIGZsb2F0IGN1cnJlbnRTY2FsZUZhY3RvciA9IGV3a192aWV3X3NjYWxlX2dldChld2tWaWV3
KTsKKyAgICBpZiAoY3VycmVudFNjYWxlRmFjdG9yID09IC0xKQorICAgICAgICByZXR1cm4gRUlO
QV9GQUxTRTsKKworICAgIGludCB4LCB5OworICAgIGV3a19mcmFtZV9zY3JvbGxfcG9zX2dldChz
ZC0+bWFpbl9mcmFtZSwgJngsICZ5KTsKKworICAgIHggPSBzdGF0aWNfY2FzdDxpbnQ+KCgoeCAr
IGN4KSAvIGN1cnJlbnRTY2FsZUZhY3RvcikgKiBzY2FsZUZhY3RvcikgLSBjeDsKKyAgICB5ID0g
c3RhdGljX2Nhc3Q8aW50PigoKHkgKyBjeSkgLyBjdXJyZW50U2NhbGVGYWN0b3IpICogc2NhbGVG
YWN0b3IpIC0gY3k7CisgICAgcHJpdi0+cGFnZS0+c2V0UGFnZVNjYWxlRmFjdG9yKHNjYWxlRmFj
dG9yLCBXZWJDb3JlOjpMYXlvdXRQb2ludCh4LCB5KSk7CisgICAgcmV0dXJuIEVJTkFfVFJVRTsK
K30KKworZmxvYXQgZXdrX3ZpZXdfdGV4dF96b29tX2dldChjb25zdCBFdmFzX09iamVjdCogZXdr
VmlldykKK3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNkLCAtMS4w
KTsKKyAgICByZXR1cm4gZXdrX2ZyYW1lX3RleHRfem9vbV9nZXQoc2QtPm1haW5fZnJhbWUpOwor
fQorCitFaW5hX0Jvb2wgZXdrX3ZpZXdfdGV4dF96b29tX3NldChFdmFzX09iamVjdCogZXdrVmll
dywgZmxvYXQgdGV4dFpvb21GYWN0b3IpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVS
Tihld2tWaWV3LCBzZCwgRUlOQV9GQUxTRSk7CisgICAgcmV0dXJuIGV3a19mcmFtZV90ZXh0X3pv
b21fc2V0KHNkLT5tYWluX2ZyYW1lLCB0ZXh0Wm9vbUZhY3Rvcik7Cit9CisKIEVpbmFfQm9vbCBl
d2tfdmlld196b29tX3dlYWtfc21vb3RoX3NjYWxlX2dldChjb25zdCBFdmFzX09iamVjdCogbykK
IHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKQEAg
LTE2MDksNyArMTY1OSw3IEBAIEVpbmFfQm9vbCBld2tfdmlld196b29tX3dlYWtfc2V0KEV2YXNf
T2JqZWN0KiBvLCBmbG9hdCB6b29tLCBFdmFzX0Nvb3JkIGN4LCBFdmFzCiAgICAgICAgIHJldHVy
biBFSU5BX0ZBTFNFOwogICAgIH0KIAotICAgIHNkLT5hbmltYXRlZF96b29tLnpvb20uc3RhcnQg
PSBld2tfZnJhbWVfem9vbV9nZXQoc2QtPm1haW5fZnJhbWUpOworICAgIHNkLT5hbmltYXRlZF96
b29tLnpvb20uc3RhcnQgPSBld2tfZnJhbWVfcGFnZV96b29tX2dldChzZC0+bWFpbl9mcmFtZSk7
CiAgICAgc2QtPmFuaW1hdGVkX3pvb20uem9vbS5lbmQgPSB6b29tOwogICAgIHNkLT5hbmltYXRl
ZF96b29tLnpvb20uY3VycmVudCA9IHpvb207CiAgICAgcmV0dXJuIHNkLT5hcGktPnpvb21fd2Vh
a19zZXQoc2QsIHpvb20sIGN4LCBjeSk7CkBAIC0xNjY4LDcgKzE3MTgsNyBAQCBFaW5hX0Jvb2wg
ZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9zZXQoRXZhc19PYmplY3QqIG8sIGZsb2F0IHpvb20sIGZs
b2F0IGR1cmF0aW9uLAogICAgIGlmIChwcml2LT5hbmltYXRlZF96b29tLmFuaW1hdG9yKQogICAg
ICAgICBwcml2LT5hbmltYXRlZF96b29tLnpvb20uc3RhcnQgPSBfZXdrX3ZpZXdfem9vbV9hbmlt
YXRlZF9jdXJyZW50KHByaXYpOwogICAgIGVsc2UgewotICAgICAgICBwcml2LT5hbmltYXRlZF96
b29tLnpvb20uc3RhcnQgPSBld2tfZnJhbWVfem9vbV9nZXQoc2QtPm1haW5fZnJhbWUpOworICAg
ICAgICBwcml2LT5hbmltYXRlZF96b29tLnpvb20uc3RhcnQgPSBld2tfZnJhbWVfcGFnZV96b29t
X2dldChzZC0+bWFpbl9mcmFtZSk7CiAgICAgICAgIF9ld2tfdmlld196b29tX2FuaW1hdGlvbl9z
dGFydChzZCk7CiAgICAgfQogCkBAIC0xNjkyLDE4ICsxNzQyLDYgQEAgRWluYV9Cb29sIGV3a192
aWV3X3pvb21fYW5pbWF0ZWRfc2V0KEV2YXNfT2JqZWN0KiBvLCBmbG9hdCB6b29tLCBmbG9hdCBk
dXJhdGlvbiwKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1FaW5hX0Jvb2wgZXdrX3ZpZXdf
em9vbV90ZXh0X29ubHlfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQotewotICAgIEVXS19WSUVX
X1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwotICAgIHJldHVybiBld2tfZnJh
bWVfem9vbV90ZXh0X29ubHlfZ2V0KHNkLT5tYWluX2ZyYW1lKTsKLX0KLQotRWluYV9Cb29sIGV3
a192aWV3X3pvb21fdGV4dF9vbmx5X3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29sIHNldHRp
bmcpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7
Ci0gICAgcmV0dXJuIGV3a19mcmFtZV96b29tX3RleHRfb25seV9zZXQoc2QtPm1haW5fZnJhbWUs
IHNldHRpbmcpOwotfQotCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfcHJlX3JlbmRlcl9yZWdpb24oRXZh
c19PYmplY3QqIG8sIEV2YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5LCBFdmFzX0Nvb3JkIHcsIEV2
YXNfQ29vcmQgaCwgZmxvYXQgem9vbSkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJO
KG8sIHNkLCBFSU5BX0ZBTFNFKTsKQEAgLTE3MTgsNyArMTc1Niw3IEBAIEVpbmFfQm9vbCBld2tf
dmlld19wcmVfcmVuZGVyX3JlZ2lvbihFdmFzX09iamVjdCogbywgRXZhc19Db29yZCB4LCBFdmFz
X0Nvb3JkIHksCiAgICAgaWYgKHByaXYtPmFuaW1hdGVkX3pvb20uYW5pbWF0b3IpCiAgICAgICAg
IHJldHVybiBFSU5BX0ZBTFNFOwogCi0gICAgY3VyX3pvb20gPSBld2tfZnJhbWVfem9vbV9nZXQo
c2QtPm1haW5fZnJhbWUpOworICAgIGN1cl96b29tID0gZXdrX2ZyYW1lX3BhZ2Vfem9vbV9nZXQo
c2QtPm1haW5fZnJhbWUpOwogCiAgICAgaWYgKGN1cl96b29tIDwgMC4wMDAwMSkKICAgICAgICAg
cmV0dXJuIEVJTkFfRkFMU0U7CkBAIC0xNzU3LDcgKzE3OTUsNyBAQCBFaW5hX0Jvb2wgZXdrX3Zp
ZXdfcHJlX3JlbmRlcl9yZWxhdGl2ZV9yYWRpdXMoRXZhc19PYmplY3QqIG8sIHVuc2lnbmVkIGlu
dCBuKQogICAgIGlmIChwcml2LT5hbmltYXRlZF96b29tLmFuaW1hdG9yKQogICAgICAgICByZXR1
cm4gRUlOQV9GQUxTRTsKIAotICAgIGN1cl96b29tID0gZXdrX2ZyYW1lX3pvb21fZ2V0KHNkLT5t
YWluX2ZyYW1lKTsKKyAgICBjdXJfem9vbSA9IGV3a19mcmFtZV9wYWdlX3pvb21fZ2V0KHNkLT5t
YWluX2ZyYW1lKTsKICAgICByZXR1cm4gc2QtPmFwaS0+cHJlX3JlbmRlcl9yZWxhdGl2ZV9yYWRp
dXMoc2QsIG4sIGN1cl96b29tKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a192aWV3LmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuaAppbmRleCAy
N2Q2YTZiYzI0M2Y1ZTQ5YjE5YTY4OGRhNmE5OWQ3NzkyYTNkODNjLi40YjEwZThkZTg5OTcwZWZm
Y2YwMDUyNjQ2MWI5NDJiOGQ1M2MwZWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX3ZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuaApAQCAt
OTcyLDYgKzk3Miw2NSBAQCBFQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19oaXN0b3J5X2VuYWJs
ZV9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBlbmFibGUpOwogRUFQSSBFd2tfSGlzdG9y
eSAqZXdrX3ZpZXdfaGlzdG9yeV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwogCiAvKioKKyAq
IEdldHMgdGhlIGN1cnJlbnQgcGFnZSB6b29tIGxldmVsIG9mIHRoZSBtYWluIGZyYW1lLgorICoK
KyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIGdldCB0aGUgem9vbSBsZXZlbAorICoKKyAqIEBy
ZXR1cm4gY3VycmVudCB6b29tIGxldmVsIGluIHVzZSBvbiBzdWNjZXNzIG9yIEBjIC0xLjAgb24g
ZmFpbHVyZQorICovCitFQVBJIGZsb2F0ICAgICAgICBld2tfdmlld19wYWdlX3pvb21fZ2V0KGNv
bnN0IEV2YXNfT2JqZWN0ICpvKTsKKworLyoqCisgKiBTZXRzIHRoZSBjdXJyZW50IHBhZ2Ugem9v
bSBsZXZlbCBvZiB0aGUgbWFpbiBmcmFtZS4KKyAqCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0
byBzZXQgdGhlIHpvb20gbGV2ZWwKKyAqIEBwYXJhbSBwYWdlWm9vbUZhY3RvciBhIG5ldyBsZXZl
bCB0byBzZXQKKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIG9yIEBjIEVJ
TkFfRkFMU0Ugb3RoZXJ3aXNlCisgKi8KK0VBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3BhZ2Vf
em9vbV9zZXQoRXZhc19PYmplY3QgKm8sIGZsb2F0IHBhZ2Vab29tRmFjdG9yKTsKKworLyoqCisg
KiBHZXRzIHRoZSBjdXJyZW50IHNjYWxlIGZhY3RvciBvZiB0aGUgcGFnZS4KKyAqCisgKiBAcGFy
YW0gbyB2aWV3IG9iamVjdCB0byBnZXQgdGhlIHNjYWxlIGZhY3RvciAKKyAqCisgKiBAcmV0dXJu
IGN1cnJlbnQgc2NhbGUgZmFjdG9yIGluIHVzZSBvbiBzdWNjZXNzIG9yIEBjIC0xLjAgb24gZmFp
bHVyZQorICovCitFQVBJIGZsb2F0ICAgICAgICBld2tfdmlld19zY2FsZV9nZXQoY29uc3QgRXZh
c19PYmplY3QgKm8pOworCisvKioKKyAqIFNjYWxlcyB0aGUgY3VycmVudCBwYWdlLCBjZW50ZXJl
ZCBhdCB0aGUgZ2l2ZW4gcG9pbnQuCisgKgorICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gc2V0
IHRoZSB6b29tIGxldmVsCisgKiBAcGFyYW0gc2NhbGVGYWN0b3IgYSBuZXcgbGV2ZWwgdG8gc2V0
CisgKiBAcGFyYW0gY3ggeCBvZiBjZW50ZXIgY29vcmRpbmF0ZQorICogQHBhcmFtIGN5IHkgb2Yg
Y2VudGVyIGNvb3JkaW5hdGUKKyAqCisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNz
IG9yIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCisgKi8KK0VBUEkgRWluYV9Cb29sICAgIGV3a192
aWV3X3NjYWxlX3NldChFdmFzX09iamVjdCAqbywgZmxvYXQgc2NhbGVGYWN0b3IsIEV2YXNfQ29v
cmQgY3gsIEV2YXNfQ29vcmQgY3kpOworCisvKioKKyAqIEdldHMgdGhlIGN1cnJlbnQgdGV4dCB6
b29tIGxldmVsIG9mIHRoZSBtYWluIGZyYW1lLgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0
IHRvIGdldCB0aGUgem9vbSBsZXZlbAorICoKKyAqIEByZXR1cm4gY3VycmVudCB6b29tIGxldmVs
IGluIHVzZSBvbiBzdWNjZXNzIG9yIEBjIC0xLjAgb24gZmFpbHVyZQorICovCitFQVBJIGZsb2F0
ICAgICAgICBld2tfdmlld190ZXh0X3pvb21fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKKwor
LyoqCisgKiBTZXRzIHRoZSBjdXJyZW50IHRleHQgem9vbSBsZXZlbCBvZiB0aGUgbWFpbiBmcmFt
ZS4KKyAqCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBzZXQgdGhlIHpvb20gbGV2ZWwKKyAq
IEBwYXJhbSB0ZXh0Wm9vbUZhY3RvciBhIG5ldyBsZXZlbCB0byBzZXQKKyAqCisgKiBAcmV0dXJu
IEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIG9yIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCisgKi8K
K0VBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3RleHRfem9vbV9zZXQoRXZhc19PYmplY3QgKm8s
IGZsb2F0IHRleHRab29tRmFjdG9yKTsKKworLyoqCiAgKiBHZXRzIHRoZSBjdXJyZW50IHpvb20g
bGV2ZWwgb2YgdGhlIG1haW4gZnJhbWUuCiAgKgogICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8g
Z2V0IHRoZSB6b29tIGxldmVsCkBAIC0xMTM4LDI1ICsxMTk3LDYgQEAgRUFQSSBFaW5hX0Jvb2wg
ICAgZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9tYXJrX3N0b3AoRXZhc19PYmplY3QgKm8pOwogRUFQ
SSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9zZXQoRXZhc19PYmplY3QgKm8s
IGZsb2F0IHpvb20sIGZsb2F0IGR1cmF0aW9uLCBFdmFzX0Nvb3JkIGN4LCBFdmFzX0Nvb3JkIGN5
KTsKIAogLyoqCi0gKiBRdWVyaWVzIGlmIHpvb20gbGV2ZWwganVzdCBhcHBsaWVzIHRvIHRleHQg
b25seSBhbmQgbm90IG90aGVyIGVsZW1lbnRzLgotICoKLSAqIEBwYXJhbSBvIHZpZXcgdG8gcXVl
cnkgem9vbSBsZXZlbCBmb3IgdGV4dCBvbmx5Ci0gKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUg
aWYgem9vbSBsZXZlbCBpcyBhcHBsaWVkIHRvIHRleHQgb25seSwgQGMgRUlOQV9GQUxTRSBpZiBu
b3Qgb3Igb24gZmFpbHVyZQotICovCi1FQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld196b29tX3Rl
eHRfb25seV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwotCi0vKioKLSAqIFNldHMgaWYgem9v
bSBsZXZlbCBqdXN0IGFwcGxpZXMgdG8gdGV4dCBvbmx5IGFuZCBub3Qgb3RoZXIgZWxlbWVudHMu
Ci0gKgotICogQHBhcmFtIG8gdmlldyB0byBhcHBseSB6b29tIGxldmVsIGZvciB0ZXh0IG9ubHkK
LSAqIEBwYXJhbSBzZXR0aW5nIEBjIEVJTkFfVFJVRSBpZiB6b29tIGxldmVsIHNob3VsZCBiZSBh
cHBsaWVkIHRvIHRleHQgb25seSwgQGMgRUlOQV9GQUxTRSBpZiBub3QKLSAqCi0gKiBAcmV0dXJu
IEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIG9yIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCi0gKi8K
LUVBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3pvb21fdGV4dF9vbmx5X3NldChFdmFzX09iamVj
dCAqbywgRWluYV9Cb29sIHNldHRpbmcpOwotCi0vKioKICAqIEFza3MgZW5naW5lIHRvIHByZS1y
ZW5kZXIgcmVnaW9uLgogICoKICAqIEVuZ2luZXMgYW5kIGJhY2tpbmcgc3RvcmUgbWlnaHQgYmUg
YWJsZSB0byBwcmUtcmVuZGVyIHJlZ2lvbnMgaW4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110086</attachid>
            <date>2011-10-06 20:37:44 -0700</date>
            <delta_ts>2011-10-09 22:56:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62842-20111007123742.patch</filename>
            <type>text/plain</type>
            <size>16745</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTY4ODcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZs
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCA5OTcwZjYwMWI0
YWQ1NDlkYjVmNjY2OGQ3NDliYmFjMWE2MDY4NjllLi43NGY1YWViYzM5M2I3YjllYzMwMDBmYTBi
YTMzMWFkM2I4NzFmNDVhIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTEt
MTAtMDYgIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtF
RkxdIFJlZmFjdG9yIHpvb20gcmVsYXRlZCBBUElzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjI4NDIKKworICAgICAgICBDdXJyZW50IHpvb20gYXBp
cyBjYW4ndCBzdXBwb3J0IHRoZSBjYXNlIG9mIHVzaW5nIGJvdGggcGFnZSB6b29tIGFuZCB0ZXh0
CisgICAgICAgIHpvb20uCisKKyAgICAgICAgQXMgYSBmaXJzdCBzdGVwIHRvIHJlZmFjdG9yLCB0
aGlzIHNwbGl0IGV3a197dmlld3xmcmFtZX1fem9vbV97Z2V0fHNldH0KKyAgICAgICAgdG8gdXNl
IGJvdGggcGFnZV96b29tIGFuZCB0ZXh0IHpvb20gaW5kaXZpZHVhbGx5LgorICAgICAgICBJbiBh
ZGRpdGlvbiwgaW50cm9kdWNlIGV3a192aWV3X3NjYWxlX3tnZXR8c2V0fSB0byBzdXBwb3J0IHBy
b3BvcnRpb25hbCBzY2FsaW5nLgorCisgICAgICAgIGV3a192aWV3X3pvb21fe2dldHxzZXR9IHdp
bGwgcmVtYWluIHVuY2hhbmdlZCB1bnRpbCB0aGUgYmVoYXZpb3Igb2Ygc21hcnRfem9vbQorICAg
ICAgICB3YXMgY2hhbmdlZC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOiBSZW1vdmUgZXdrX2ZyYW1lX3pvb21fdGV4
dF9vbmx5X3tnZXR8c2V0fS4KKyAgICAgICAgKGV3a19mcmFtZV9wYWdlX3pvb21fZ2V0KTogUmVu
YW1lZCBmcm9tIGV3a19mcmFtZV96b29tX2dldCgpLgorICAgICAgICAoZXdrX2ZyYW1lX3BhZ2Vf
em9vbV9zZXQpOiBSZW5hbWVkIGZyb20gZXdrX2ZyYW1lX3pvb21fc2V0KCkuCisgICAgICAgIChl
d2tfZnJhbWVfdGV4dF96b29tX2dldCk6IEV4dHJhY3RlZCBmcm9tIGV3a19mcmFtZV96b29tX2dl
dCgpLgorICAgICAgICAoZXdrX2ZyYW1lX3RleHRfem9vbV9zZXQpOiBFeHRyYWN0ZWQgZnJvbSBl
d2tfZnJhbWVfem9vbV9zZXQoKS4KKyAgICAgICAgKiBld2svZXdrX2ZyYW1lLmg6CisgICAgICAg
ICogZXdrL2V3a192aWV3LmNwcDogUmVtb3ZlIGV3a192aWV3X3pvb21fdGV4dF9vbmx5X3tnZXR8
c2V0fQorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X3pvb21fc2V0KTogQ2hhbmdlIGV3a19mcmFt
ZV96b29tX2dldCgpIHRvIGV3a19mcmFtZV9wYWdlX3pvb21fZ2V0KCkuCisgICAgICAgIChld2tf
dmlld196b29tX2dldCk6IENoYW5nZSBld2tfZnJhbWVfem9vbV9nZXQoKSB0byBld2tfZnJhbWVf
cGFnZV96b29tX2dldCgpLgorICAgICAgICAoZXdrX3ZpZXdfcGFnZV96b29tX2dldCk6IEV4dHJh
Y3RlZCBmcm9tIGV3a192aWV3X3pvb21fZ2V0KCkuCisgICAgICAgIChld2tfdmlld19wYWdlX3pv
b21fc2V0KTogRXh0cmFjdGVkIGZyb20gZXdrX3ZpZXdfem9vbV9zZXQoKS4KKyAgICAgICAgKGV3
a192aWV3X3NjYWxlX2dldCk6IEFkZGVkLgorICAgICAgICAoZXdrX3ZpZXdfc2NhbGVfc2V0KTog
QWRkZWQuCisgICAgICAgIChld2tfdmlld190ZXh0X3pvb21fZ2V0KTogRXh0cmFjdGVkIGZyb20g
ZXdrX3ZpZXdfem9vbV9nZXQoKS4KKyAgICAgICAgKGV3a192aWV3X3RleHRfem9vbV9zZXQpOiBF
eHRyYWN0ZWQgZnJvbSBld2tfdmlld196b29tX3NldCgpLgorICAgICAgICAoZXdrX3ZpZXdfem9v
bV93ZWFrX3NldCk6IENoYW5nZSBld2tfZnJhbWVfem9vbV9nZXQgdG8gZXdrX2ZyYW1lX3BhZ2Vf
em9vbV9nZXQoKS4KKyAgICAgICAgKGV3a192aWV3X3pvb21fYW5pbWF0ZWRfc2V0KTogQ2hhbmdl
IGV3a19mcmFtZV96b29tX2dldCgpIHRvIGV3a19mcmFtZV9wYWdlX3pvb21fZ2V0KCkuCisgICAg
ICAgIChld2tfdmlld19wcmVfcmVuZGVyX3JlZ2lvbik6IENoYW5nZSBld2tfZnJhbWVfem9vbV9n
ZXQoKSB0byBld2tfZnJhbWVfcGFnZV96b29tX2dldCgpLgorICAgICAgICAoZXdrX3ZpZXdfcHJl
X3JlbmRlcl9yZWxhdGl2ZV9yYWRpdXMpOiBDaGFuZ2UgZXdrX2ZyYW1lX3pvb21fZ2V0KCkgdG8g
ZXdrX2ZyYW1lX3BhZ2Vfem9vbV9nZXQoKS4KKyAgICAgICAgKiBld2svZXdrX3ZpZXcuaDoKKwog
MjAxMS0xMC0wNCAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgogCiAg
ICAgICAgIFtFRkxdIE9ubHkgc2V0IHdoZW4gdGhlIGN1c3RvbSBlbmNvZGluZyBpcyBkaWZmZXJl
bnQgZnJvbSBleGlzdGluZyB2YWx1ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdr
L2V3a19mcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcAppbmRl
eCBiYzhmOGFlNjZlM2U2OGE3MzA1ZWFmYTFmOWM5MjM5NDg2MmY1OTFhLi44NGQ1MDQ0ZDFhMmVm
OTYzYWMxNzVjOGJmODEzMjYxYzc3YjhhMzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX2ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1l
LmNwcApAQCAtNzUsNyArNzUsNiBAQCBzdHJ1Y3QgRXdrX0ZyYW1lX1NtYXJ0X0RhdGEgewogICAg
IHN0cnVjdCB7CiAgICAgICAgIEV2YXNfQ29vcmQgdywgaDsKICAgICB9IGNvbnRlbnRzX3NpemU7
Ci0gICAgRWluYV9Cb29sIHRleHRab29tIDogMTsKICAgICBFaW5hX0Jvb2wgZWRpdGFibGUgOiAx
OwogfTsKIApAQCAtNjEyLDQ2ICs2MTEsMzMgQEAgRWluYV9Cb29sIGV3a19mcmFtZV9uYXZpZ2F0
ZV9wb3NzaWJsZShFdmFzX09iamVjdCogbywgaW50IHN0ZXBzKQogICAgIHJldHVybiBwYWdlLT5j
YW5Hb0JhY2tPckZvcndhcmQoc3RlcHMpOwogfQogCi1mbG9hdCBld2tfZnJhbWVfem9vbV9nZXQo
Y29uc3QgRXZhc19PYmplY3QqIG8pCitmbG9hdCBld2tfZnJhbWVfcGFnZV96b29tX2dldChjb25z
dCBFdmFzX09iamVjdCogZXdrRnJhbWUpCiB7Ci0gICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRV
Uk4obywgc2QsIC0xLjApOworICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1l
LCBzZCwgLTEuMCk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLT5mcmFt
ZSwgLTEuMCk7Ci0KLSAgICBpZiAoc2QtPnRleHRab29tKQotICAgICAgICByZXR1cm4gc2QtPmZy
YW1lLT50ZXh0Wm9vbUZhY3RvcigpOwogICAgIHJldHVybiBzZC0+ZnJhbWUtPnBhZ2Vab29tRmFj
dG9yKCk7CiB9CiAKLUVpbmFfQm9vbCBld2tfZnJhbWVfem9vbV9zZXQoRXZhc19PYmplY3QqIG8s
IGZsb2F0IHpvb20pCitFaW5hX0Jvb2wgZXdrX2ZyYW1lX3BhZ2Vfem9vbV9zZXQoRXZhc19PYmpl
Y3QqIGV3a0ZyYW1lLCBmbG9hdCBwYWdlWm9vbUZhY3RvcikKIHsKLSAgICBFV0tfRlJBTUVfU0Rf
R0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CisgICAgRVdLX0ZSQU1FX1NEX0dFVF9P
Ul9SRVRVUk4oZXdrRnJhbWUsIHNkLCBFSU5BX0ZBTFNFKTsKICAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTl9WQUwoc2QtPmZyYW1lLCBFSU5BX0ZBTFNFKTsKLSAgICBpZiAoc2QtPnRleHRa
b29tKQotICAgICAgICBzZC0+ZnJhbWUtPnNldFRleHRab29tRmFjdG9yKHpvb20pOwotICAgIGVs
c2UKLSAgICAgICAgc2QtPmZyYW1lLT5zZXRQYWdlWm9vbUZhY3Rvcih6b29tKTsKKyAgICBzZC0+
ZnJhbWUtPnNldFBhZ2Vab29tRmFjdG9yKHBhZ2Vab29tRmFjdG9yKTsKICAgICByZXR1cm4gRUlO
QV9UUlVFOwogfQogCi1FaW5hX0Jvb2wgZXdrX2ZyYW1lX3pvb21fdGV4dF9vbmx5X2dldChjb25z
dCBFdmFzX09iamVjdCogbykKK2Zsb2F0IGV3a19mcmFtZV90ZXh0X3pvb21fZ2V0KGNvbnN0IEV2
YXNfT2JqZWN0KiBld2tGcmFtZSkKIHsKLSAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihv
LCBzZCwgRUlOQV9GQUxTRSk7Ci0gICAgcmV0dXJuIHNkLT50ZXh0Wm9vbTsKKyAgICBFV0tfRlJB
TUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc2QsIC0xLjApOworICAgIEVJTkFfU0FGRVRZ
X09OX05VTExfUkVUVVJOX1ZBTChzZC0+ZnJhbWUsIC0xLjApOworICAgIHJldHVybiBzZC0+ZnJh
bWUtPnRleHRab29tRmFjdG9yKCk7CiB9CiAKLUVpbmFfQm9vbCBld2tfZnJhbWVfem9vbV90ZXh0
X29ubHlfc2V0KEV2YXNfT2JqZWN0KiBvLCBFaW5hX0Jvb2wgc2V0dGluZykKK0VpbmFfQm9vbCBl
d2tfZnJhbWVfdGV4dF96b29tX3NldChFdmFzX09iamVjdCogZXdrRnJhbWUsIGZsb2F0IHRleHRa
b29tRmFjdG9yKQogewotICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5B
X0ZBTFNFKTsKKyAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc2QsIEVJ
TkFfRkFMU0UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZC0+ZnJhbWUs
IEVJTkFfRkFMU0UpOwotICAgIGlmIChzZC0+dGV4dFpvb20gPT0gc2V0dGluZykKLSAgICAgICAg
cmV0dXJuIEVJTkFfVFJVRTsKLQotICAgIGZsb2F0IHpvb21fbGV2ZWwgPSBzZC0+dGV4dFpvb20g
PyBzZC0+ZnJhbWUtPnRleHRab29tRmFjdG9yKCkgOiBzZC0+ZnJhbWUtPnBhZ2Vab29tRmFjdG9y
KCk7Ci0gICAgc2QtPnRleHRab29tID0gc2V0dGluZzsKLSAgICBpZiAoc2QtPnRleHRab29tKQot
ICAgICAgICBzZC0+ZnJhbWUtPnNldFBhZ2VBbmRUZXh0Wm9vbUZhY3RvcnMoMSwgem9vbV9sZXZl
bCk7Ci0gICAgZWxzZQotICAgICAgICBzZC0+ZnJhbWUtPnNldFBhZ2VBbmRUZXh0Wm9vbUZhY3Rv
cnMoem9vbV9sZXZlbCwgMSk7CisgICAgc2QtPmZyYW1lLT5zZXRUZXh0Wm9vbUZhY3Rvcih0ZXh0
Wm9vbUZhY3Rvcik7CiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a19mcmFtZS5oCmluZGV4IDY2MmIwZDVhNmUwZjBjZDNjM2IxODYxNGM0NzQ5Y2ZkMmM2N2JiNzAu
LjlkY2JhM2MxYTRkYjNmMTkxYmY0YmNmMzkxMWJjNmE2MTk0OWMzNTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX2ZyYW1lLmgKQEAgLTUyMCw0NCArNTIwLDUwIEBAIEVBUEkgRWluYV9Cb29sICAgIGV3
a19mcmFtZV9mb3J3YXJkX3Bvc3NpYmxlKEV2YXNfT2JqZWN0ICpvKTsKIEVBUEkgRWluYV9Cb29s
ICAgIGV3a19mcmFtZV9uYXZpZ2F0ZV9wb3NzaWJsZShFdmFzX09iamVjdCAqbywgaW50IHN0ZXBz
KTsKIAogLyoqCi0gKiBHZXRzIHRoZSBjdXJyZW50IHpvb20gbGV2ZWwgdXNlZCBieSB0aGlzIGZy
YW1lLgorICogR2V0cyB0aGUgY3VycmVudCBwYWdlIHpvb20gbGV2ZWwgdXNlZCBieSB0aGlzIGZy
YW1lLgogICoKICAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBnZXQgem9vbSBsZXZlbAogICoK
LSAqIEByZXR1cm4gem9vbSBsZXZlbCBmb3IgdGhlIGZyYW1lIG9yIEBjIC0xLjAgb24gZmFpbHVy
ZQorICogQHJldHVybiBwYWdlIHpvb20gbGV2ZWwgZm9yIHRoZSBmcmFtZSBvciBAYyAtMS4wIG9u
IGZhaWx1cmUKKyAqCisgKiBAc2VlIGV3a19mcmFtZV90ZXh0X3pvb21fZ2V0KCkKICAqLwotRUFQ
SSBmbG9hdCAgICAgICAgZXdrX2ZyYW1lX3pvb21fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsK
K0VBUEkgZmxvYXQgICAgICAgIGV3a19mcmFtZV9wYWdlX3pvb21fZ2V0KGNvbnN0IEV2YXNfT2Jq
ZWN0ICpvKTsKIAogLyoqCi0gKiBTZXRzIHRoZSBjdXJyZW50IHpvb20gbGV2ZWwgdXNlZCBieSB0
aGlzIGZyYW1lLgorICogU2V0cyB0aGUgY3VycmVudCBwYWdlIHpvb20gbGV2ZWwgdXNlZCBieSB0
aGlzIGZyYW1lLgogICoKICAqIEBwYXJhbSBvIGZyYW1lIG9iamVjdCB0byBjaGFuZ2Ugem9vbSBs
ZXZlbAotICogQHBhcmFtIHpvb20gYSBuZXcgem9vbSBsZXZlbAorICogQHBhcmFtIHBhZ2Vfem9v
bV9mYWN0b3IgYSBuZXcgem9vbSBsZXZlbAogICoKICAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9u
IHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvbiBmYWlsdXJlCiAgKgotICogQHNlZSBld2tfZnJh
bWVfem9vbV90ZXh0X29ubHlfc2V0KCkKKyAqIEBzZWUgZXdrX2ZyYW1lX3RleHRfem9vbV9zZXQo
KQogICovCi1FQVBJIEVpbmFfQm9vbCAgICBld2tfZnJhbWVfem9vbV9zZXQoRXZhc19PYmplY3Qg
Km8sIGZsb2F0IHpvb20pOworRUFQSSBFaW5hX0Jvb2wgICAgZXdrX2ZyYW1lX3BhZ2Vfem9vbV9z
ZXQoRXZhc19PYmplY3QgKm8sIGZsb2F0IHBhZ2Vfem9vbV9mYWN0b3IpOwogCiAvKioKLSAqIFF1
ZXJpZXMgaWYgem9vbSBsZXZlbCBqdXN0IGFwcGxpZXMgdG8gdGV4dCBvbmx5IGFuZCBub3Qgb3Ro
ZXIgZWxlbWVudHMuCisgKiBHZXRzIHRoZSBjdXJyZW50IHRleHQgem9vbSBsZXZlbCB1c2VkIGJ5
IHRoaXMgZnJhbWUuCisgKgorICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIGdldCB6b29tIGxl
dmVsCiAgKgotICogQHBhcmFtIG8gZnJhbWUgdG8gcXVlcnkgem9vbSBsZXZlbCBmb3IgdGV4dCBv
bmx5CisgKiBAcmV0dXJuIHRleHQgem9vbSBsZXZlbCBmb3IgdGhlIGZyYW1lIG9yIEBjIC0xLjAg
b24gZmFpbHVyZQogICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIGlmIHpvb20gbGV2ZWwgaXMg
YXBwbGllZCB0byB0ZXh0IG9ubHksIEBjIEVJTkFfRkFMU0UgaWYgbm90IG9yIG9uIGZhaWx1cmUK
KyAqIEBzZWUgZXdrX2ZyYW1lX3BhZ2Vfem9vbV9nZXQoKQogICovCi1FQVBJIEVpbmFfQm9vbCAg
ICBld2tfZnJhbWVfem9vbV90ZXh0X29ubHlfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKK0VB
UEkgZmxvYXQgICAgICAgIGV3a19mcmFtZV90ZXh0X3pvb21fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0
ICpvKTsKIAogLyoqCi0gKiBTZXRzIGlmIHpvb20gbGV2ZWwganVzdCBhcHBsaWVzIHRvIHRleHQg
b25seSBhbmQgbm90IG90aGVyIGVsZW1lbnRzLgorICogU2V0cyB0aGUgY3VycmVudCB0ZXh0IHpv
b20gbGV2ZWwgdXNlZCBieSB0aGlzIGZyYW1lLgogICoKLSAqIEBwYXJhbSBvIGZyYW1lIHRvIGFw
cGx5IHpvb20gbGV2ZWwgZm9yIHRleHQgb25seQotICogQHBhcmFtIHNldHRpbmcgQGMgRUlOQV9U
UlVFIGlmIHpvb20gbGV2ZWwgc2hvdWxkIGJlIGFwcGxpZWQgdG8gdGV4dCBvbmx5LCBAYyBFSU5B
X0ZBTFNFIGlmIG5vdAorICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRvIGNoYW5nZSB6b29tIGxl
dmVsCisgKiBAcGFyYW0gdGV4dFpvb21GYWN0b3IgYSBuZXcgem9vbSBsZXZlbAogICoKLSAqIEBy
ZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3MsIEBjIEVJTkFfRkFMU0Ugb3RoZXJ3aXNlCisg
KiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIG9yIEBjIEVJTkFfRkFMU0Ugb24gZmFp
bHVyZQorICoKKyAqIEBzZWUgZXdrX2ZyYW1lX3BhZ2Vfem9vbV9zZXQoKQogICovCi1FQVBJIEVp
bmFfQm9vbCAgICBld2tfZnJhbWVfem9vbV90ZXh0X29ubHlfc2V0KEV2YXNfT2JqZWN0ICpvLCBF
aW5hX0Jvb2wgc2V0dGluZyk7CitFQVBJIEVpbmFfQm9vbCAgICBld2tfZnJhbWVfdGV4dF96b29t
X3NldChFdmFzX09iamVjdCAqbywgZmxvYXQgdGV4dF96b29tX2ZhY3Rvcik7CiAKIC8qKgogICog
RnJlZXMgaGl0IHRlc3QgaW5zdGFuY2UgY3JlYXRlZCBieSBld2tfZnJhbWVfaGl0X3Rlc3RfbmV3
KCkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwIGIvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAppbmRleCBhY2M3NWE0YTk3NzNkNzY3MWVm
OTIyOWNkNGUxMTUxMGNhMDdiN2Y3Li4zYjM1MDlkNGFhOTA3YmY2MmFlMTY1Mzg5NzA2Zjc4YmRk
YmI5MDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAK
ICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvdy5oIgogI2lu
Y2x1ZGUgIkpTTG9jay5oIgorI2luY2x1ZGUgIkxheW91dFR5cGVzLmgiCiAjaW5jbHVkZSAiUGxh
dGZvcm1Nb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiUG9wdXBNZW51Q2xpZW50LmgiCiAjaW5jbHVk
ZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCkBAIC05MzUsNyArOTM2LDcgQEAgc3RhdGljIEVpbmFfQm9v
bCBfZXdrX3ZpZXdfc21hcnRfem9vbV9zZXQoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QsIGZsb2F0
IHpvb20sIEUKICAgICBlbHNlCiAgICAgICAgIHB5ID0gMC4wOwogCi0gICAgcmV0ID0gZXdrX2Zy
YW1lX3pvb21fc2V0KHNkLT5tYWluX2ZyYW1lLCB6b29tKTsKKyAgICByZXQgPSBld2tfZnJhbWVf
cGFnZV96b29tX3NldChzZC0+bWFpbl9mcmFtZSwgem9vbSk7CiAKICAgICBld2tfZnJhbWVfc2Ny
b2xsX3NpemVfZ2V0KHNkLT5tYWluX2ZyYW1lLCAmdywgJmgpOwogICAgIHggPSAodyArIHNkLT52
aWV3LncpICogcHggLSBjeDsKQEAgLTE1MzcsMTAgKzE1MzgsMTAgQEAgRXdrX0hpc3RvcnkqIGV3
a192aWV3X2hpc3RvcnlfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQogICAgIHJldHVybiBwcml2
LT5oaXN0b3J5OwogfQogCi1mbG9hdCBld2tfdmlld196b29tX2dldChjb25zdCBFdmFzX09iamVj
dCogbykKK2Zsb2F0IGV3a192aWV3X3pvb21fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3
KQogewotICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIC0xLjApOwotICAgIHJl
dHVybiBld2tfZnJhbWVfem9vbV9nZXQoc2QtPm1haW5fZnJhbWUpOworICAgIEVXS19WSUVXX1NE
X0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc2QsIC0xLjApOworICAgIHJldHVybiBld2tfZnJhbWVf
cGFnZV96b29tX2dldChzZC0+bWFpbl9mcmFtZSk7CiB9CiAKIEVpbmFfQm9vbCBld2tfdmlld196
b29tX3NldChFdmFzX09iamVjdCogbywgZmxvYXQgem9vbSwgRXZhc19Db29yZCBjeCwgRXZhc19D
b29yZCBjeSkKQEAgLTE1NjksNiArMTU3MCw1NSBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV9z
ZXQoRXZhc19PYmplY3QqIG8sIGZsb2F0IHpvb20sIEV2YXNfQ29vcmQgY3gsIEV2YXNfQ29vcgog
ICAgIHJldHVybiBzZC0+YXBpLT56b29tX3NldChzZCwgem9vbSwgY3gsIGN5KTsKIH0KIAorZmxv
YXQgZXdrX3ZpZXdfcGFnZV96b29tX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKK3sK
KyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNkLCAtMS4wKTsKKyAgICBy
ZXR1cm4gZXdrX2ZyYW1lX3BhZ2Vfem9vbV9nZXQoc2QtPm1haW5fZnJhbWUpOworfQorCitFaW5h
X0Jvb2wgZXdrX3ZpZXdfcGFnZV96b29tX3NldChFdmFzX09iamVjdCogZXdrVmlldywgZmxvYXQg
cGFnZVpvb21GYWN0b3IpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3
LCBzZCwgRUlOQV9GQUxTRSk7CisgICAgcmV0dXJuIGV3a19mcmFtZV9wYWdlX3pvb21fc2V0KHNk
LT5tYWluX2ZyYW1lLCBwYWdlWm9vbUZhY3Rvcik7Cit9CisKK2Zsb2F0IGV3a192aWV3X3NjYWxl
X2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKK3sKKyAgICBFV0tfVklFV19TRF9HRVRf
T1JfUkVUVVJOKGV3a1ZpZXcsIHNkLCAtMS4wKTsKKyAgICBFV0tfVklFV19QUklWX0dFVF9PUl9S
RVRVUk4oc2QsIHByaXYsIC0xLjApOworICAgIHJldHVybiBwcml2LT5wYWdlLT5wYWdlU2NhbGVG
YWN0b3IoKTsKK30KKworRWluYV9Cb29sIGV3a192aWV3X3NjYWxlX3NldChFdmFzX09iamVjdCog
ZXdrVmlldywgZmxvYXQgc2NhbGVGYWN0b3IsIEV2YXNfQ29vcmQgY3gsIEV2YXNfQ29vcmQgY3kp
Cit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzZCwgRUlOQV9GQUxT
RSk7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNkLCBwcml2LCBFSU5BX0ZBTFNF
KTsKKworICAgIGZsb2F0IGN1cnJlbnRTY2FsZUZhY3RvciA9IGV3a192aWV3X3NjYWxlX2dldChl
d2tWaWV3KTsKKyAgICBpZiAoY3VycmVudFNjYWxlRmFjdG9yID09IC0xKQorICAgICAgICByZXR1
cm4gRUlOQV9GQUxTRTsKKworICAgIGludCB4LCB5OworICAgIGV3a19mcmFtZV9zY3JvbGxfcG9z
X2dldChzZC0+bWFpbl9mcmFtZSwgJngsICZ5KTsKKworICAgIHggPSBzdGF0aWNfY2FzdDxpbnQ+
KCgoeCArIGN4KSAvIGN1cnJlbnRTY2FsZUZhY3RvcikgKiBzY2FsZUZhY3RvcikgLSBjeDsKKyAg
ICB5ID0gc3RhdGljX2Nhc3Q8aW50PigoKHkgKyBjeSkgLyBjdXJyZW50U2NhbGVGYWN0b3IpICog
c2NhbGVGYWN0b3IpIC0gY3k7CisgICAgcHJpdi0+cGFnZS0+c2V0UGFnZVNjYWxlRmFjdG9yKHNj
YWxlRmFjdG9yLCBXZWJDb3JlOjpMYXlvdXRQb2ludCh4LCB5KSk7CisgICAgcmV0dXJuIEVJTkFf
VFJVRTsKK30KKworZmxvYXQgZXdrX3ZpZXdfdGV4dF96b29tX2dldChjb25zdCBFdmFzX09iamVj
dCogZXdrVmlldykKK3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNk
LCAtMS4wKTsKKyAgICByZXR1cm4gZXdrX2ZyYW1lX3RleHRfem9vbV9nZXQoc2QtPm1haW5fZnJh
bWUpOworfQorCitFaW5hX0Jvb2wgZXdrX3ZpZXdfdGV4dF96b29tX3NldChFdmFzX09iamVjdCog
ZXdrVmlldywgZmxvYXQgdGV4dFpvb21GYWN0b3IpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09S
X1JFVFVSTihld2tWaWV3LCBzZCwgRUlOQV9GQUxTRSk7CisgICAgcmV0dXJuIGV3a19mcmFtZV90
ZXh0X3pvb21fc2V0KHNkLT5tYWluX2ZyYW1lLCB0ZXh0Wm9vbUZhY3Rvcik7Cit9CisKIEVpbmFf
Qm9vbCBld2tfdmlld196b29tX3dlYWtfc21vb3RoX3NjYWxlX2dldChjb25zdCBFdmFzX09iamVj
dCogbykKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNF
KTsKQEAgLTE2MDksNyArMTY1OSw3IEBAIEVpbmFfQm9vbCBld2tfdmlld196b29tX3dlYWtfc2V0
KEV2YXNfT2JqZWN0KiBvLCBmbG9hdCB6b29tLCBFdmFzX0Nvb3JkIGN4LCBFdmFzCiAgICAgICAg
IHJldHVybiBFSU5BX0ZBTFNFOwogICAgIH0KIAotICAgIHNkLT5hbmltYXRlZF96b29tLnpvb20u
c3RhcnQgPSBld2tfZnJhbWVfem9vbV9nZXQoc2QtPm1haW5fZnJhbWUpOworICAgIHNkLT5hbmlt
YXRlZF96b29tLnpvb20uc3RhcnQgPSBld2tfZnJhbWVfcGFnZV96b29tX2dldChzZC0+bWFpbl9m
cmFtZSk7CiAgICAgc2QtPmFuaW1hdGVkX3pvb20uem9vbS5lbmQgPSB6b29tOwogICAgIHNkLT5h
bmltYXRlZF96b29tLnpvb20uY3VycmVudCA9IHpvb207CiAgICAgcmV0dXJuIHNkLT5hcGktPnpv
b21fd2Vha19zZXQoc2QsIHpvb20sIGN4LCBjeSk7CkBAIC0xNjY4LDcgKzE3MTgsNyBAQCBFaW5h
X0Jvb2wgZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9zZXQoRXZhc19PYmplY3QqIG8sIGZsb2F0IHpv
b20sIGZsb2F0IGR1cmF0aW9uLAogICAgIGlmIChwcml2LT5hbmltYXRlZF96b29tLmFuaW1hdG9y
KQogICAgICAgICBwcml2LT5hbmltYXRlZF96b29tLnpvb20uc3RhcnQgPSBfZXdrX3ZpZXdfem9v
bV9hbmltYXRlZF9jdXJyZW50KHByaXYpOwogICAgIGVsc2UgewotICAgICAgICBwcml2LT5hbmlt
YXRlZF96b29tLnpvb20uc3RhcnQgPSBld2tfZnJhbWVfem9vbV9nZXQoc2QtPm1haW5fZnJhbWUp
OworICAgICAgICBwcml2LT5hbmltYXRlZF96b29tLnpvb20uc3RhcnQgPSBld2tfZnJhbWVfcGFn
ZV96b29tX2dldChzZC0+bWFpbl9mcmFtZSk7CiAgICAgICAgIF9ld2tfdmlld196b29tX2FuaW1h
dGlvbl9zdGFydChzZCk7CiAgICAgfQogCkBAIC0xNjkyLDE4ICsxNzQyLDYgQEAgRWluYV9Cb29s
IGV3a192aWV3X3pvb21fYW5pbWF0ZWRfc2V0KEV2YXNfT2JqZWN0KiBvLCBmbG9hdCB6b29tLCBm
bG9hdCBkdXJhdGlvbiwKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCi1FaW5hX0Jvb2wgZXdr
X3ZpZXdfem9vbV90ZXh0X29ubHlfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBvKQotewotICAgIEVX
S19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIEVJTkFfRkFMU0UpOwotICAgIHJldHVybiBl
d2tfZnJhbWVfem9vbV90ZXh0X29ubHlfZ2V0KHNkLT5tYWluX2ZyYW1lKTsKLX0KLQotRWluYV9C
b29sIGV3a192aWV3X3pvb21fdGV4dF9vbmx5X3NldChFdmFzX09iamVjdCogbywgRWluYV9Cb29s
IHNldHRpbmcpCi17Ci0gICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9G
QUxTRSk7Ci0gICAgcmV0dXJuIGV3a19mcmFtZV96b29tX3RleHRfb25seV9zZXQoc2QtPm1haW5f
ZnJhbWUsIHNldHRpbmcpOwotfQotCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfcHJlX3JlbmRlcl9yZWdp
b24oRXZhc19PYmplY3QqIG8sIEV2YXNfQ29vcmQgeCwgRXZhc19Db29yZCB5LCBFdmFzX0Nvb3Jk
IHcsIEV2YXNfQ29vcmQgaCwgZmxvYXQgem9vbSkKIHsKICAgICBFV0tfVklFV19TRF9HRVRfT1Jf
UkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKQEAgLTE3MTgsNyArMTc1Niw3IEBAIEVpbmFfQm9v
bCBld2tfdmlld19wcmVfcmVuZGVyX3JlZ2lvbihFdmFzX09iamVjdCogbywgRXZhc19Db29yZCB4
LCBFdmFzX0Nvb3JkIHksCiAgICAgaWYgKHByaXYtPmFuaW1hdGVkX3pvb20uYW5pbWF0b3IpCiAg
ICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOwogCi0gICAgY3VyX3pvb20gPSBld2tfZnJhbWVfem9v
bV9nZXQoc2QtPm1haW5fZnJhbWUpOworICAgIGN1cl96b29tID0gZXdrX2ZyYW1lX3BhZ2Vfem9v
bV9nZXQoc2QtPm1haW5fZnJhbWUpOwogCiAgICAgaWYgKGN1cl96b29tIDwgMC4wMDAwMSkKICAg
ICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CkBAIC0xNzU3LDcgKzE3OTUsNyBAQCBFaW5hX0Jvb2wg
ZXdrX3ZpZXdfcHJlX3JlbmRlcl9yZWxhdGl2ZV9yYWRpdXMoRXZhc19PYmplY3QqIG8sIHVuc2ln
bmVkIGludCBuKQogICAgIGlmIChwcml2LT5hbmltYXRlZF96b29tLmFuaW1hdG9yKQogICAgICAg
ICByZXR1cm4gRUlOQV9GQUxTRTsKIAotICAgIGN1cl96b29tID0gZXdrX2ZyYW1lX3pvb21fZ2V0
KHNkLT5tYWluX2ZyYW1lKTsKKyAgICBjdXJfem9vbSA9IGV3a19mcmFtZV9wYWdlX3pvb21fZ2V0
KHNkLT5tYWluX2ZyYW1lKTsKICAgICByZXR1cm4gc2QtPmFwaS0+cHJlX3JlbmRlcl9yZWxhdGl2
ZV9yYWRpdXMoc2QsIG4sIGN1cl96b29tKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9lZmwvZXdrL2V3a192aWV3LmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuaApp
bmRleCAyN2Q2YTZiYzI0M2Y1ZTQ5YjE5YTY4OGRhNmE5OWQ3NzkyYTNkODNjLi40ZjJlNDRiZjEw
N2U5NmViNjUwNTk4Zjc5ZjZjN2E1MmYyNzhmYWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX3ZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcu
aApAQCAtOTcyLDYgKzk3Miw2NSBAQCBFQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19oaXN0b3J5
X2VuYWJsZV9zZXQoRXZhc19PYmplY3QgKm8sIEVpbmFfQm9vbCBlbmFibGUpOwogRUFQSSBFd2tf
SGlzdG9yeSAqZXdrX3ZpZXdfaGlzdG9yeV9nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwogCiAv
KioKKyAqIEdldHMgdGhlIGN1cnJlbnQgcGFnZSB6b29tIGxldmVsIG9mIHRoZSBtYWluIGZyYW1l
LgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIGdldCB0aGUgem9vbSBsZXZlbAorICoK
KyAqIEByZXR1cm4gY3VycmVudCB6b29tIGxldmVsIGluIHVzZSBvbiBzdWNjZXNzIG9yIEBjIC0x
LjAgb24gZmFpbHVyZQorICovCitFQVBJIGZsb2F0ICAgICAgICBld2tfdmlld19wYWdlX3pvb21f
Z2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKKworLyoqCisgKiBTZXRzIHRoZSBjdXJyZW50IHBh
Z2Ugem9vbSBsZXZlbCBvZiB0aGUgbWFpbiBmcmFtZS4KKyAqCisgKiBAcGFyYW0gbyB2aWV3IG9i
amVjdCB0byBzZXQgdGhlIHpvb20gbGV2ZWwKKyAqIEBwYXJhbSBwYWdlX3pvb21fZmFjdG9yIGEg
bmV3IGxldmVsIHRvIHNldAorICoKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Mg
b3IgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKKyAqLworRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3Zp
ZXdfcGFnZV96b29tX3NldChFdmFzX09iamVjdCAqbywgZmxvYXQgcGFnZV96b29tX2ZhY3Rvcik7
CisKKy8qKgorICogR2V0cyB0aGUgY3VycmVudCBzY2FsZSBmYWN0b3Igb2YgdGhlIHBhZ2UuCisg
KgorICogQHBhcmFtIG8gdmlldyBvYmplY3QgdG8gZ2V0IHRoZSBzY2FsZSBmYWN0b3IgCisgKgor
ICogQHJldHVybiBjdXJyZW50IHNjYWxlIGZhY3RvciBpbiB1c2Ugb24gc3VjY2VzcyBvciBAYyAt
MS4wIG9uIGZhaWx1cmUKKyAqLworRUFQSSBmbG9hdCAgICAgICAgZXdrX3ZpZXdfc2NhbGVfZ2V0
KGNvbnN0IEV2YXNfT2JqZWN0ICpvKTsKKworLyoqCisgKiBTY2FsZXMgdGhlIGN1cnJlbnQgcGFn
ZSwgY2VudGVyZWQgYXQgdGhlIGdpdmVuIHBvaW50LgorICoKKyAqIEBwYXJhbSBvIHZpZXcgb2Jq
ZWN0IHRvIHNldCB0aGUgem9vbSBsZXZlbAorICogQHBhcmFtIHNjYWxlX2ZhY3RvciBhIG5ldyBs
ZXZlbCB0byBzZXQKKyAqIEBwYXJhbSBjeCB4IG9mIGNlbnRlciBjb29yZGluYXRlCisgKiBAcGFy
YW0gY3kgeSBvZiBjZW50ZXIgY29vcmRpbmF0ZQorICoKKyAqIEByZXR1cm4gQGMgRUlOQV9UUlVF
IG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBvdGhlcndpc2UKKyAqLworRUFQSSBFaW5hX0Jv
b2wgICAgZXdrX3ZpZXdfc2NhbGVfc2V0KEV2YXNfT2JqZWN0ICpvLCBmbG9hdCBzY2FsZV9mYWN0
b3IsIEV2YXNfQ29vcmQgY3gsIEV2YXNfQ29vcmQgY3kpOworCisvKioKKyAqIEdldHMgdGhlIGN1
cnJlbnQgdGV4dCB6b29tIGxldmVsIG9mIHRoZSBtYWluIGZyYW1lLgorICoKKyAqIEBwYXJhbSBv
IHZpZXcgb2JqZWN0IHRvIGdldCB0aGUgem9vbSBsZXZlbAorICoKKyAqIEByZXR1cm4gY3VycmVu
dCB6b29tIGxldmVsIGluIHVzZSBvbiBzdWNjZXNzIG9yIEBjIC0xLjAgb24gZmFpbHVyZQorICov
CitFQVBJIGZsb2F0ICAgICAgICBld2tfdmlld190ZXh0X3pvb21fZ2V0KGNvbnN0IEV2YXNfT2Jq
ZWN0ICpvKTsKKworLyoqCisgKiBTZXRzIHRoZSBjdXJyZW50IHRleHQgem9vbSBsZXZlbCBvZiB0
aGUgbWFpbiBmcmFtZS4KKyAqCisgKiBAcGFyYW0gbyB2aWV3IG9iamVjdCB0byBzZXQgdGhlIHpv
b20gbGV2ZWwKKyAqIEBwYXJhbSB0ZXh0Wm9vbUZhY3RvciBhIG5ldyBsZXZlbCB0byBzZXQKKyAq
CisgKiBAcmV0dXJuIEBjIEVJTkFfVFJVRSBvbiBzdWNjZXNzIG9yIEBjIEVJTkFfRkFMU0Ugb3Ro
ZXJ3aXNlCisgKi8KK0VBUEkgRWluYV9Cb29sICAgIGV3a192aWV3X3RleHRfem9vbV9zZXQoRXZh
c19PYmplY3QgKm8sIGZsb2F0IHRleHRfem9vbV9mYWN0b3IpOworCisvKioKICAqIEdldHMgdGhl
IGN1cnJlbnQgem9vbSBsZXZlbCBvZiB0aGUgbWFpbiBmcmFtZS4KICAqCiAgKiBAcGFyYW0gbyB2
aWV3IG9iamVjdCB0byBnZXQgdGhlIHpvb20gbGV2ZWwKQEAgLTExMzgsMjUgKzExOTcsNiBAQCBF
QVBJIEVpbmFfQm9vbCAgICBld2tfdmlld196b29tX2FuaW1hdGVkX21hcmtfc3RvcChFdmFzX09i
amVjdCAqbyk7CiBFQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld196b29tX2FuaW1hdGVkX3NldChF
dmFzX09iamVjdCAqbywgZmxvYXQgem9vbSwgZmxvYXQgZHVyYXRpb24sIEV2YXNfQ29vcmQgY3gs
IEV2YXNfQ29vcmQgY3kpOwogCiAvKioKLSAqIFF1ZXJpZXMgaWYgem9vbSBsZXZlbCBqdXN0IGFw
cGxpZXMgdG8gdGV4dCBvbmx5IGFuZCBub3Qgb3RoZXIgZWxlbWVudHMuCi0gKgotICogQHBhcmFt
IG8gdmlldyB0byBxdWVyeSB6b29tIGxldmVsIGZvciB0ZXh0IG9ubHkKLSAqCi0gKiBAcmV0dXJu
IEBjIEVJTkFfVFJVRSBpZiB6b29tIGxldmVsIGlzIGFwcGxpZWQgdG8gdGV4dCBvbmx5LCBAYyBF
SU5BX0ZBTFNFIGlmIG5vdCBvciBvbiBmYWlsdXJlCi0gKi8KLUVBUEkgRWluYV9Cb29sICAgIGV3
a192aWV3X3pvb21fdGV4dF9vbmx5X2dldChjb25zdCBFdmFzX09iamVjdCAqbyk7Ci0KLS8qKgot
ICogU2V0cyBpZiB6b29tIGxldmVsIGp1c3QgYXBwbGllcyB0byB0ZXh0IG9ubHkgYW5kIG5vdCBv
dGhlciBlbGVtZW50cy4KLSAqCi0gKiBAcGFyYW0gbyB2aWV3IHRvIGFwcGx5IHpvb20gbGV2ZWwg
Zm9yIHRleHQgb25seQotICogQHBhcmFtIHNldHRpbmcgQGMgRUlOQV9UUlVFIGlmIHpvb20gbGV2
ZWwgc2hvdWxkIGJlIGFwcGxpZWQgdG8gdGV4dCBvbmx5LCBAYyBFSU5BX0ZBTFNFIGlmIG5vdAot
ICoKLSAqIEByZXR1cm4gQGMgRUlOQV9UUlVFIG9uIHN1Y2Nlc3Mgb3IgQGMgRUlOQV9GQUxTRSBv
dGhlcndpc2UKLSAqLwotRUFQSSBFaW5hX0Jvb2wgICAgZXdrX3ZpZXdfem9vbV90ZXh0X29ubHlf
c2V0KEV2YXNfT2JqZWN0ICpvLCBFaW5hX0Jvb2wgc2V0dGluZyk7Ci0KLS8qKgogICogQXNrcyBl
bmdpbmUgdG8gcHJlLXJlbmRlciByZWdpb24uCiAgKgogICogRW5naW5lcyBhbmQgYmFja2luZyBz
dG9yZSBtaWdodCBiZSBhYmxlIHRvIHByZS1yZW5kZXIgcmVnaW9ucyBpbgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>