<?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>58505</bug_id>
          
          <creation_ts>2011-04-13 19:03:29 -0700</creation_ts>
          <short_desc>[Chromium]UI polishes and tweaks to Autofill dropdown menu.</short_desc>
          <delta_ts>2011-04-19 22:16:57 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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="Naoki Takano">honten</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dhollowa</cc>
    
    <cc>fishd</cc>
    
    <cc>honten</cc>
    
    <cc>isherman</cc>
    
    <cc>rniwa</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>385447</commentid>
    <comment_count>0</comment_count>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-04-13 19:03:29 -0700</bug_when>
    <thetext>[Chromium]UI polishes and tweaks to Autofill dropdown menu.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385450</commentid>
    <comment_count>1</comment_count>
      <attachid>89517</attachid>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-04-13 19:13:46 -0700</bug_when>
    <thetext>Created attachment 89517
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385454</commentid>
    <comment_count>2</comment_count>
      <attachid>89517</attachid>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-04-13 19:14:37 -0700</bug_when>
    <thetext>Comment on attachment 89517
Patch

Could you review my patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385455</commentid>
    <comment_count>3</comment_count>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-04-13 19:16:08 -0700</bug_when>
    <thetext>The original bug report is here.
http://code.google.com/p/chromium/issues/detail?id=51077</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385598</commentid>
    <comment_count>4</comment_count>
      <attachid>89517</attachid>
    <who name="Ilya Sherman">isherman</who>
    <bug_when>2011-04-14 02:23:01 -0700</bug_when>
    <thetext>Comment on attachment 89517
Patch

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

I know that a lot of the code in this file is shared by the &lt;select&gt; popup (except on Mac) and by the Autofill popup.  I believe we only want these changes to affect the Autofill popup.  Have you verified that this is indeed the case?

&gt; Source/WebCore/platform/chromium/PopupMenuChromium.cpp:79
&gt; +static const int kLineHeightMargin = 3; // Line height margin put at the top and bottom of each line.

nit: This should probably be called &quot;kLineHeightPadding&quot; -- margins would be allowed to overlap, whereas this is additive, like padding.

&gt; Source/WebCore/platform/chromium/PopupMenuChromium.cpp:208
&gt; +    // Paint an top and bottom padding.

nit: &quot;an&quot; -&gt; &quot;the&quot;

&gt; Source/WebCore/platform/chromium/PopupMenuChromium.cpp:858
&gt; +void PopupListBox::paintTopBottomPadding(GraphicsContext* gc, const IntRect&amp; rect)

nit: Perhaps &quot;paintVerticalPadding&quot;?

&gt; Source/WebCore/platform/chromium/PopupMenuChromium.cpp:864
&gt; +    Color backColor = m_popupClient-&gt;itemStyle(0).backgroundColor();

nit: Prefer to use unabbreviated names -- in this case, &quot;backgroundColor&quot;

&gt; Source/WebCore/platform/chromium/PopupMenuChromium.cpp:868
&gt; +    topRect.move(0, - kPaddingHeight);

nit: Omit the space in &quot;- kPaddingHeight&quot; since this is a unary minus

&gt; Source/WebCore/platform/chromium/PopupMenuChromium.cpp:957
&gt; +        gc-&gt;fillRect(separatorRect, Color(0xcd, 0xcd, 0xcd), ColorSpaceDeviceRGB);

nit: I wonder if there&apos;s an existing named color for this.  It seems a little weird to declare a color constant as a function parameter.  I&apos;m not completely up to speed on WebKit style guidelines, though.

&gt; Source/WebCore/platform/chromium/PopupMenuChromium.cpp:1146
&gt; +        return separatorHeight;

nit: As mentioned in the Chromium bug, we might want a few pixels of padding around the separator.  I&apos;d need to see more screenshots or play with the code to have a beter idea of what exactly we want here, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385872</commentid>
    <comment_count>5</comment_count>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-04-14 10:53:52 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 89517 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=89517&amp;action=review
&gt; 
&gt; I know that a lot of the code in this file is shared by the &lt;select&gt; popup (except on Mac) and by the Autofill popup.  I believe we only want these changes to affect the Autofill popup.  Have you verified that this is indeed the case?
I verified them, but I assumed the other popups also need to obey this rule. I&apos;ll leave the other popups as it is.

My plan is
1, Add whole padding and margin information into PopupMenuStyle.
2, Add popup window type into PopupMenuStyle and according to the type, change the margin.

I prefer to 1.

&gt; &gt; Source/WebCore/platform/chromium/PopupMenuChromium.cpp:957
&gt; &gt; +        gc-&gt;fillRect(separatorRect, Color(0xcd, 0xcd, 0xcd), ColorSpaceDeviceRGB);
&gt; 
&gt; nit: I wonder if there&apos;s an existing named color for this.  It seems a little weird to declare a color constant as a function parameter.  I&apos;m not completely up to speed on WebKit style guidelines, though.
There is not #cdcdcd color in Webkit as defined. But as I suggested in bug track comment, I will use #c0c0c0 which is Color::lightGray. That would be better.

&gt; &gt; Source/WebCore/platform/chromium/PopupMenuChromium.cpp:1146
&gt; &gt; +        return separatorHeight;
&gt; 
&gt; nit: As mentioned in the Chromium bug, we might want a few pixels of padding around the separator.  I&apos;d need to see more screenshots or play with the code to have a beter idea of what exactly we want here, though.

As Roma isn&apos;t worried about it, so I will leave here.

Thanks,</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386289</commentid>
    <comment_count>6</comment_count>
      <attachid>89718</attachid>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-04-14 19:00:42 -0700</bug_when>
    <thetext>Created attachment 89718
Revised patch.

Please review again.

Once I got ToT, my webkit-patch upload doesn&apos;t work anymore because of exception. Now I&apos;m investigating...

So I upload it manually.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386290</commentid>
    <comment_count>7</comment_count>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-04-14 19:00:57 -0700</bug_when>
    <thetext>Please review again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386305</commentid>
    <comment_count>8</comment_count>
      <attachid>89722</attachid>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-04-14 19:21:08 -0700</bug_when>
    <thetext>Created attachment 89722
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386306</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-14 19:23:06 -0700</bug_when>
    <thetext>Attachment 89722 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Tools/Scripts/webkitpy/common/net/bugzilla/bugzilla.py:326:  at least two spaces before inline comment  [pep8/E261] [5]
Total errors found: 1 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386307</commentid>
    <comment_count>10</comment_count>
      <attachid>89723</attachid>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-04-14 19:25:14 -0700</bug_when>
    <thetext>Created attachment 89723
Remove separator padding at the edges.

Remove separator padding.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386412</commentid>
    <comment_count>11</comment_count>
    <who name="Ilya Sherman">isherman</who>
    <bug_when>2011-04-14 23:41:09 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; (From update of attachment 89517 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=89517&amp;action=review
&gt; &gt; 
&gt; &gt; I know that a lot of the code in this file is shared by the &lt;select&gt; popup (except on Mac) and by the Autofill popup.  I believe we only want these changes to affect the Autofill popup.  Have you verified that this is indeed the case?
&gt; I verified them, but I assumed the other popups also need to obey this rule. I&apos;ll leave the other popups as it is.
&gt; 
&gt; My plan is
&gt; 1, Add whole padding and margin information into PopupMenuStyle.
&gt; 2, Add popup window type into PopupMenuStyle and according to the type, change the margin.
&gt; 
&gt; I prefer to 1.

Long-term, we want to more cleanly separate the Autofill popup code from the &lt;select&gt; popup code -- the current dual-purpose code can be a bit clumsy to update.  I agree that (1) is probably a better short term solution that (2) though -- perhaps some WebKit folks more familiar with this code could comment?

&gt; As Roma isn&apos;t worried about it, so I will leave here.

Ok :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386418</commentid>
    <comment_count>12</comment_count>
      <attachid>89723</attachid>
    <who name="Ilya Sherman">isherman</who>
    <bug_when>2011-04-14 23:52:36 -0700</bug_when>
    <thetext>Comment on attachment 89723
Remove separator padding at the edges.

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

Nearly all of these are fairly opinionated nits -- feel free to ignore ones that seem totally bogus to you.  One the whole, this looks pretty good to me, but I am not a WebKit reviewer.

&gt; Source/WebCore/ChangeLog:12
&gt; +        Put PopupMenuStyle::paddingLineHeightk() at the top and bottom of each line.

nit: Stray &apos;k&apos;s in the function names

&gt; Source/WebCore/platform/PopupMenuStyle.h:38
&gt; +    PopupMenuStyle(const Color&amp; foreground, const Color&amp; background, const Font&amp; font, bool visible, bool isDisplayNone, Length textIndent, TextDirection textDirection, bool hasTextDirectionOverride, int paddingHeight, int paddingLineHeight)

nit: &quot;listBoxPaddingHeight&quot; and &quot;linePaddingHeight&quot; might be slightly clearer names for these variables.

&gt; Source/WebCore/platform/PopupMenuStyle.h:72
&gt; +    int m_paddingHeight; // Padding height put at the top and bottom of window.

nit: &quot;window&quot; -&gt; &quot;popup&quot;

&gt; Source/WebCore/platform/PopupMenuStyle.h:73
&gt; +    int m_paddingLineHeight; // Padding line height put at the top and bottom of each line.

nit: &quot;Padding line height&quot; -&gt; &quot;Padding height&quot; (you already mention that this is for each line later in the comment)

&gt; Source/WebCore/platform/chromium/PopupMenuChromium.cpp:954
&gt; +        gc-&gt;fillRect(separatorRect, Color::lightGray, ColorSpaceDeviceRGB);

Is it possible for a &lt;select&gt; popup to have a separator?  If so, again, I think we only want this change for the Autofill popup.  (I&apos;m not 100% sure about that though.)

&gt; Source/WebCore/platform/chromium/PopupMenuChromium.cpp:1352
&gt; +    int windowHeight = menuStyle.paddingHeight(); // Top padding heights is added first.

nit: remove &quot;heights&quot;

&gt; Source/WebCore/platform/chromium/PopupMenuChromium.cpp:1366
&gt; +    windowHeight += menuStyle.paddingHeight(); // Bottom padding heights is added last.

nit: remove &quot;heights&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386445</commentid>
    <comment_count>13</comment_count>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-04-15 00:24:58 -0700</bug_when>
    <thetext>Ilya,

Thank you for your great comments every time.

(In reply to comment #12)
&gt; &gt; Source/WebCore/platform/chromium/PopupMenuChromium.cpp:954
&gt; &gt; +        gc-&gt;fillRect(separatorRect, Color::lightGray, ColorSpaceDeviceRGB);
&gt; 
&gt; Is it possible for a &lt;select&gt; popup to have a separator?  If so, again, I think we only want this change for the Autofill popup.  (I&apos;m not 100% sure about that though.)
Hmm... I&apos;m also not sure we will have separator for other popup windows. At least, we don&apos;t have any separator tag for select html tag though. We also can drag the padding value with PopupMenuStyle. But the class is getting bigger...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386446</commentid>
    <comment_count>14</comment_count>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-04-15 00:27:10 -0700</bug_when>
    <thetext>So is there anybody who can review my patch?

Especially it is very helpful to let me know if the separator padding width should be configurable or not with PopupMenuStyle.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386769</commentid>
    <comment_count>15</comment_count>
      <attachid>89723</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-04-15 11:27:20 -0700</bug_when>
    <thetext>Comment on attachment 89723
Remove separator padding at the edges.

Can you address the nits?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386770</commentid>
    <comment_count>16</comment_count>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-04-15 11:28:06 -0700</bug_when>
    <thetext>Sure!!

(In reply to comment #15)
&gt; (From update of attachment 89723 [details])
&gt; Can you address the nits?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386771</commentid>
    <comment_count>17</comment_count>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-04-15 11:31:07 -0700</bug_when>
    <thetext>To see the screen shot, please refer to

http://code.google.com/p/chromium/issues/detail?id=51077</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386784</commentid>
    <comment_count>18</comment_count>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-04-15 11:46:21 -0700</bug_when>
    <thetext>After looking around the source code, I notice itemIsSeparator() might return true even if not AutoFillPopupMenuClient. So it implies other popup window separator might be drawn.

Ok, I add one more parameter to PopupMenuStyle and drag it.

(In reply to comment #13)
&gt; Ilya,
&gt; 
&gt; Thank you for your great comments every time.
&gt; 
&gt; (In reply to comment #12)
&gt; &gt; &gt; Source/WebCore/platform/chromium/PopupMenuChromium.cpp:954
&gt; &gt; &gt; +        gc-&gt;fillRect(separatorRect, Color::lightGray, ColorSpaceDeviceRGB);
&gt; &gt; 
&gt; &gt; Is it possible for a &lt;select&gt; popup to have a separator?  If so, again, I think we only want this change for the Autofill popup.  (I&apos;m not 100% sure about that though.)
&gt; Hmm... I&apos;m also not sure we will have separator for other popup windows. At least, we don&apos;t have any separator tag for select html tag though. We also can drag the padding value with PopupMenuStyle. But the class is getting bigger...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>387149</commentid>
    <comment_count>19</comment_count>
    <who name="David Holloway">dhollowa</who>
    <bug_when>2011-04-15 18:46:47 -0700</bug_when>
    <thetext>I have some suggestions about layout and separator color.  Please see my comments in http://code.google.com/p/chromium/issues/detail?id=51077.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>387172</commentid>
    <comment_count>20</comment_count>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-04-15 19:52:19 -0700</bug_when>
    <thetext>Thanks, David.

(In reply to comment #19)
&gt; I have some suggestions about layout and separator color.  Please see my comments in http://code.google.com/p/chromium/issues/detail?id=51077.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>387202</commentid>
    <comment_count>21</comment_count>
      <attachid>89915</attachid>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-04-15 22:10:37 -0700</bug_when>
    <thetext>Created attachment 89915
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>387203</commentid>
    <comment_count>22</comment_count>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-04-15 22:11:21 -0700</bug_when>
    <thetext>Per David&apos;s request, I tweak my patch again.

Please review again, David.

Thanks,</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>387378</commentid>
    <comment_count>23</comment_count>
      <attachid>89952</attachid>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-04-17 11:32:49 -0700</bug_when>
    <thetext>Created attachment 89952
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>387379</commentid>
    <comment_count>24</comment_count>
      <attachid>89952</attachid>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-04-17 11:33:49 -0700</bug_when>
    <thetext>Comment on attachment 89952
Patch

Per Roma&apos;s request, I added font size change for label if autofill.

Please review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>387555</commentid>
    <comment_count>25</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-04-17 23:02:54 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; &gt; Is it possible for a &lt;select&gt; popup to have a separator?  If so, again, I think we only want this change for the Autofill popup.  (I&apos;m not 100% sure about that though.)
&gt; Hmm... I&apos;m also not sure we will have separator for other popup windows. At least, we don&apos;t have any separator tag for select html tag though. We also can drag the padding value with PopupMenuStyle. But the class is getting bigger...

&lt;select&gt; can have an &lt;hr&gt; child, and the &lt;hr&gt; is rendered as a separator though the HTML parser doesn&apos;t support this structure.  (HTML5 parser regression??)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>387560</commentid>
    <comment_count>26</comment_count>
      <attachid>89952</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-04-17 23:10:02 -0700</bug_when>
    <thetext>Comment on attachment 89952
Patch

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

&gt; Source/WebCore/platform/PopupMenuStyle.h:38
&gt; +    PopupMenuStyle(const Color&amp; foreground, const Color&amp; background, const Font&amp; font, bool visible, bool isDisplayNone, Length textIndent, TextDirection textDirection, bool hasTextDirectionOverride, bool isAutofillStyle)

Please avoid new bool parameter.  We prefer introducing enum. Also, we can avoid updating RenderMenuList and RenderTextConstrolSingleLine by a default parameter.

enum PopupMenuType { SelectPopup, AutofillPopup };
PopupMenuStyle(const Color&amp;...., PopupMenuType menuType = SelectPopup)

&gt; Source/WebCore/platform/chromium/PopupMenuChromium.cpp:78
&gt; +static const int kLinePaddingHeight = 3; // Padding height put at the top and bottom of each line.

Do not use &quot;k&quot; prefix for constant values.

&gt; Source/WebCore/platform/chromium/PopupMenuChromium.cpp:1000
&gt; +        d.setComputedSize(d.computedSize()*0.8);

Add spaces around &quot;*&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>387563</commentid>
    <comment_count>27</comment_count>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-04-17 23:23:58 -0700</bug_when>
    <thetext>Kent-san,

Thank you for your review.

(In reply to comment #26)
&gt; (From update of attachment 89952 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=89952&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/PopupMenuStyle.h:38
&gt; &gt; +    PopupMenuStyle(const Color&amp; foreground, const Color&amp; background, const Font&amp; font, bool visible, bool isDisplayNone, Length textIndent, TextDirection textDirection, bool hasTextDirectionOverride, bool isAutofillStyle)
&gt; 
&gt; Please avoid new bool parameter.  We prefer introducing enum. Also, we can avoid updating RenderMenuList and RenderTextConstrolSingleLine by a default parameter.
I assumed any default parameter is prohibited.
I believe it it true in Chromium project, but is WetKit different?

&gt; enum PopupMenuType { SelectPopup, AutofillPopup };
&gt; PopupMenuStyle(const Color&amp;...., PopupMenuType menuType = SelectPopup)
&gt; 
&gt; &gt; Source/WebCore/platform/chromium/PopupMenuChromium.cpp:78
&gt; &gt; +static const int kLinePaddingHeight = 3; // Padding height put at the top and bottom of each line.
&gt; 
&gt; Do not use &quot;k&quot; prefix for constant values.
I referred to
 static const int kLabelToIconPadding = 5;
 static const int kMinEndOfLinePadding = 2;

They start with &quot;k&quot;, but do I have change &quot;kLinePaddingHeight&quot; to &quot;linePaddingHeight&quot;?

Thanks,</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>387569</commentid>
    <comment_count>28</comment_count>
      <attachid>89952</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-04-18 00:25:17 -0700</bug_when>
    <thetext>Comment on attachment 89952
Patch

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

&gt;&gt;&gt; Source/WebCore/platform/PopupMenuStyle.h:38
&gt;&gt;&gt; +    PopupMenuStyle(const Color&amp; foreground, const Color&amp; background, const Font&amp; font, bool visible, bool isDisplayNone, Length textIndent, TextDirection textDirection, bool hasTextDirectionOverride, bool isAutofillStyle)
&gt;&gt; 
&gt;&gt; Please avoid new bool parameter.  We prefer introducing enum. Also, we can avoid updating RenderMenuList and RenderTextConstrolSingleLine by a default parameter.
&gt;&gt; 
&gt;&gt; enum PopupMenuType { SelectPopup, AutofillPopup };
&gt;&gt; PopupMenuStyle(const Color&amp;...., PopupMenuType menuType = SelectPopup)
&gt; 
&gt; I assumed any default parameter is prohibited.
&gt; I believe it it true in Chromium project, but is WetKit different?

Yes. WebKit is not Chromium. You can see a lot of default parameter usages in WebKit.

&gt;&gt;&gt; Source/WebCore/platform/chromium/PopupMenuChromium.cpp:78
&gt;&gt;&gt; +static const int kLinePaddingHeight = 3; // Padding height put at the top and bottom of each line.
&gt;&gt; 
&gt;&gt; Do not use &quot;k&quot; prefix for constant values.
&gt; 
&gt; I referred to
&gt;  static const int kLabelToIconPadding = 5;
&gt;  static const int kMinEndOfLinePadding = 2;
&gt; 
&gt; They start with &quot;k&quot;, but do I have change &quot;kLinePaddingHeight&quot; to &quot;linePaddingHeight&quot;?
&gt; 
&gt; Thanks,

It&apos;s ok to keep &quot;k&quot; if you think consistency in this file is more important than consistency in WebKit.
Anyway, I expect someone makes a patch to remove all of &quot;k&quot; prefixes in PopupMenuChromium.cpp and ScrollbarThemeChromiumWin.cpp later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>388227</commentid>
    <comment_count>29</comment_count>
      <attachid>90130</attachid>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-04-18 19:09:41 -0700</bug_when>
    <thetext>Created attachment 90130
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>388230</commentid>
    <comment_count>30</comment_count>
      <attachid>90130</attachid>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-04-18 19:11:43 -0700</bug_when>
    <thetext>Comment on attachment 90130
Patch

Please review again.

About &apos;k&apos; prefix problem, I&apos;ll be in charge of it next time...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>388626</commentid>
    <comment_count>31</comment_count>
      <attachid>90130</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-04-19 11:16:44 -0700</bug_when>
    <thetext>Comment on attachment 90130
Patch

Looks ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>388631</commentid>
    <comment_count>32</comment_count>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-04-19 11:19:28 -0700</bug_when>
    <thetext>Roma requests very tiny parameter tuning, maybe 0.8 to 0.9.

Once the parameter is fixed, I let you know.

Thanks,</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>389040</commentid>
    <comment_count>33</comment_count>
      <attachid>90301</attachid>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-04-19 21:18:05 -0700</bug_when>
    <thetext>Created attachment 90301
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>389041</commentid>
    <comment_count>34</comment_count>
      <attachid>90301</attachid>
    <who name="Naoki Takano">honten</who>
    <bug_when>2011-04-19 21:19:37 -0700</bug_when>
    <thetext>Comment on attachment 90301
Patch

Kent-san,

Sorry for bothering you again.

But I just changed 0.8 to 0.9 ratio for label font.

Please commit if it&apos;s ok.

Thanks,</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>389046</commentid>
    <comment_count>35</comment_count>
      <attachid>90301</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-04-19 21:43:54 -0700</bug_when>
    <thetext>Comment on attachment 90301
Patch

ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>389060</commentid>
    <comment_count>36</comment_count>
      <attachid>90301</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-19 22:16:50 -0700</bug_when>
    <thetext>Comment on attachment 90301
Patch

Clearing flags on attachment: 90301

Committed r84342: &lt;http://trac.webkit.org/changeset/84342&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>389061</commentid>
    <comment_count>37</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-19 22:16:57 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89517</attachid>
            <date>2011-04-13 19:13:46 -0700</date>
            <delta_ts>2011-04-14 19:00:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58505-20110413191353.patch</filename>
            <type>text/plain</type>
            <size>6632</size>
            <attacher name="Naoki Takano">honten</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODMyNTIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyY2I3MjE0ODdhNDQ3Yjhh
NzMzNTdmYjgxZWMyM2RjYTY3NTExYWI1Li45MTdkMzI2MjI5N2M2Y2U0NzBjNTM3ZGQwY2E4MDhl
NWVmNDA1MGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTEtMDQtMTMgIE5hb2tp
IFRha2FubyAgPHRha2Fuby5uYW9raUBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0Nocm9taXVtXVVJIHBvbGlzaGVzIGFuZCB0d2Vh
a3MgdG8gQXV0b2ZpbGwgZHJvcGRvd24gbWVudS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTU4NTA1CisgICAgICAgIGh0dHA6Ly9jb2RlLmdvb2dsZS5j
b20vcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTUxMDc3CisKKyAgICAgICAgTm8gbmV3IHRl
c3RzLiBCZWNhdXNlIHRoaXMgaXMgYXV0b2ZpbGwgbG9va2luZyBwcm9ibGVtIGluIENocm9taXVt
LgorICAgICAgICBQdXQga1BhZGRpbmdIZWlnaHQgaGVpZ2h0IHBhZGRpbmcgYXQgdGhlIHRvcCBh
bmQgYm90dG9tIG9mIHdpbmRvdy4KKyAgICAgICAgUHV0IGtMaW5lSGVpZ2h0TWFyZ2luIGF0IHRo
ZSB0b3AgYW5kIGJvdHRvbSBvZiBlYWNoIGxpbmUuCisgICAgICAgIENoYW5nZSBzZXBhcmF0b3Ig
Y29sb3IgdG8gI2NkY2RjZC4KKyAgICAgICAgQ2hhbmdlIHRoZSBsaW5lIGhlaWdodCBvZiBzZXBh
cmF0b3IgYXMgb25seSB0aGUgcGllY2UuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9Q
b3B1cE1lbnVDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cExpc3RCb3g6OnBh
aW50VG9wQm90dG9tUGFkZGluZyk6IEFkZCBuZXcgZnVuY3Rpb24gdG8gcHV0IHRoZSB0b3AgYW5k
IGJvdHRvbSBwYWRkaW5ncy4KKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTGlzdEJveDo6cGFpbnQp
OiBBZGQgY2FsbGluZyBwYWludFRvcEJvdHRvbVBhZGRpbmcoKS4KKyAgICAgICAgKFdlYkNvcmU6
OlBvcHVwTGlzdEJveDo6cGFpbnRSb3cpOiBDaGFuZ2UgdGhlIHNlcGFyYXRvciBjb2xvciB0byAj
Y2RjZGNkLgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBMaXN0Qm94OjpnZXRSb3dIZWlnaHQpOkFk
ZCBrTGluZUhlaWdodE1hcmdpbioyIGZvciBlYWNoIGxpbmUgaGVpZ2h0LgorICAgICAgICAoV2Vi
Q29yZTo6UG9wdXBMaXN0Qm94OjpsYXlvdXQpOiBBZGQgcGFkZGluZyBoZWlnaHQgc2l6ZSB0byBj
YWxjdWxhdGUgd2luZG93IGhlaWdodC4KKwogMjAxMS0wNC0wNyAgTmVkIEhvbGJyb29rICA8bmhv
bGJyb29rQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYW4gQmVybnN0ZWluLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hy
b21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hy
b21pdW0uY3BwCmluZGV4IGFmOTdlY2Y0Y2VjMjIwOTUxY2Y0ZWY0MDMxZmM1ZWI4YWU4NjQ0OWEu
LjlkOWRjOWYwMDdhMTRhOTYwMzM0ZGJkZTAzNTViOGMwOTI2MTAyMWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVtLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5jcHAK
QEAgLTc1LDYgKzc1LDggQEAgc3RhdGljIGNvbnN0IGludCBrVGV4dFRvTGFiZWxQYWRkaW5nID0g
MTA7CiBzdGF0aWMgY29uc3QgaW50IGtMYWJlbFRvSWNvblBhZGRpbmcgPSA1Owogc3RhdGljIGNv
bnN0IGludCBrTWluRW5kT2ZMaW5lUGFkZGluZyA9IDI7CiBzdGF0aWMgY29uc3QgVGltZVN0YW1w
IGtUeXBlQWhlYWRUaW1lb3V0TXMgPSAxMDAwOworc3RhdGljIGNvbnN0IGludCBrUGFkZGluZ0hl
aWdodCA9IDQ7IC8vIFBhZGRpbmcgaGVpZ2h0IHB1dCBhdCB0aGUgdG9wIGFuZCBib3R0b20gb2Yg
d2luZG93Lgorc3RhdGljIGNvbnN0IGludCBrTGluZUhlaWdodE1hcmdpbiA9IDM7IC8vIExpbmUg
aGVpZ2h0IG1hcmdpbiBwdXQgYXQgdGhlIHRvcCBhbmQgYm90dG9tIG9mIGVhY2ggbGluZS4KIAog
Ly8gVGhlIHNldHRpbmdzIHVzZWQgZm9yIHRoZSBkcm9wIGRvd24gbWVudS4KIC8vIFRoaXMgaXMg
dGhlIGRlbGVnYXRlIHVzZWQgaWYgbm9uZSBpcyBwcm92aWRlZC4KQEAgLTIwMyw2ICsyMDUsOSBA
QCBwcml2YXRlOgogICAgIC8vIENvbnZlcnRzIGEgcG9pbnQgdG8gYW4gaW5kZXggb2YgdGhlIHJv
dyB0aGUgcG9pbnQgaXMgb3ZlcgogICAgIGludCBwb2ludFRvUm93SW5kZXgoY29uc3QgSW50UG9p
bnQmKTsKIAorICAgIC8vIFBhaW50IGFuIHRvcCBhbmQgYm90dG9tIHBhZGRpbmcuCisgICAgdm9p
ZCBwYWludFRvcEJvdHRvbVBhZGRpbmcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYp
OworCiAgICAgLy8gUGFpbnQgYW4gaW5kaXZpZHVhbCByb3cKICAgICB2b2lkIHBhaW50Um93KEdy
YXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmLCBpbnQgcm93SW5kZXgpOwogCkBAIC04NTAs
NiArODU1LDM3IEBAIHZvaWQgUG9wdXBMaXN0Qm94Ojp0eXBlQWhlYWRGaW5kKGNvbnN0IFBsYXRm
b3JtS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiAgICAgfQogfQogCit2b2lkIFBvcHVwTGlzdEJveDo6
cGFpbnRUb3BCb3R0b21QYWRkaW5nKEdyYXBoaWNzQ29udGV4dCogZ2MsIGNvbnN0IEludFJlY3Qm
IHJlY3QpCit7CisgICAgLy8gRG8gbm90IHBhaW50IGlmIHRoZSBudW1JdGVtcygpIGlzIGVtcHR5
LgorICAgIGlmICghbnVtSXRlbXMoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQ29sb3IgYmFj
a0NvbG9yID0gbV9wb3B1cENsaWVudC0+aXRlbVN0eWxlKDApLmJhY2tncm91bmRDb2xvcigpOwor
CisgICAgLy8gRmlsbCBiYWNrZ3JvdW5kIGNvbG9yIGF0IHRoZSB0b3AuCisgICAgSW50UmVjdCB0
b3BSZWN0ID0gZ2V0Um93Qm91bmRzKDApOworICAgIHRvcFJlY3QubW92ZSgwLCAtIGtQYWRkaW5n
SGVpZ2h0KTsKKyAgICB0b3BSZWN0LnNldEhlaWdodChrUGFkZGluZ0hlaWdodCk7CisgICAgaWYg
KHRvcFJlY3QuaW50ZXJzZWN0cyhyZWN0KSkgeworICAgICAgICBpZiAoYmFja0NvbG9yLmhhc0Fs
cGhhKCkpCisgICAgICAgICAgICBnYy0+ZmlsbFJlY3QodG9wUmVjdCwgQ29sb3I6OndoaXRlLCBD
b2xvclNwYWNlRGV2aWNlUkdCKTsKKworICAgICAgICBnYy0+ZmlsbFJlY3QodG9wUmVjdCwgYmFj
a0NvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICB9CisKKyAgICAvLyBGaWxsIGJhY2tn
cm91bmQgY29sb3IgYXQgdGhlIGJvdHRvbS4KKyAgICBJbnRSZWN0IGJvdHRvbVJlY3QgPSBnZXRS
b3dCb3VuZHMobnVtSXRlbXMoKS0xKTsKKyAgICBib3R0b21SZWN0Lm1vdmUoMCwgYm90dG9tUmVj
dC5oZWlnaHQoKSk7CisgICAgYm90dG9tUmVjdC5zZXRIZWlnaHQoa1BhZGRpbmdIZWlnaHQpOwor
ICAgIGlmIChib3R0b21SZWN0LmludGVyc2VjdHMocmVjdCkpIHsKKyAgICAgICAgaWYgKGJhY2tD
b2xvci5oYXNBbHBoYSgpKQorICAgICAgICAgICAgZ2MtPmZpbGxSZWN0KGJvdHRvbVJlY3QsIENv
bG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQik7CisKKyAgICAgICAgZ2MtPmZpbGxSZWN0
KGJvdHRvbVJlY3QsIGJhY2tDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgfQorfQor
CiB2b2lkIFBvcHVwTGlzdEJveDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiBnYywgY29uc3QgSW50
UmVjdCYgcmVjdCkKIHsKICAgICAvLyBhZGp1c3QgY29vcmRzIGZvciBzY3JvbGxlZCBmcmFtZQpA
QCAtODY2LDYgKzkwMiw3IEBAIHZvaWQgUG9wdXBMaXN0Qm94OjpwYWludChHcmFwaGljc0NvbnRl
eHQqIGdjLCBjb25zdCBJbnRSZWN0JiByZWN0KQogCiAgICAgLy8gRklYTUU6IENhbiB3ZSBvcHRp
bWl6ZSBzY3JvbGxpbmcgdG8gbm90IHJlcXVpcmUgcmVwYWludGluZyB0aGUgZW50aXJlCiAgICAg
Ly8gd2luZG93PyAgU2hvdWxkIHdlPworICAgIHBhaW50VG9wQm90dG9tUGFkZGluZyhnYywgcik7
CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1JdGVtcygpOyArK2kpCiAgICAgICAgIHBhaW50
Um93KGdjLCByLCBpKTsKIApAQCAtOTE3LDcgKzk1NCw3IEBAIHZvaWQgUG9wdXBMaXN0Qm94Ojpw
YWludFJvdyhHcmFwaGljc0NvbnRleHQqIGdjLCBjb25zdCBJbnRSZWN0JiByZWN0LCBpbnQgcm93
SW5kCiAgICAgICAgICAgICByb3dSZWN0LngoKSArIHNlcGFyYXRvclBhZGRpbmcsCiAgICAgICAg
ICAgICByb3dSZWN0LnkoKSArIChyb3dSZWN0LmhlaWdodCgpIC0gc2VwYXJhdG9ySGVpZ2h0KSAv
IDIsCiAgICAgICAgICAgICByb3dSZWN0LndpZHRoKCkgLSAyICogc2VwYXJhdG9yUGFkZGluZywg
c2VwYXJhdG9ySGVpZ2h0KTsKLSAgICAgICAgZ2MtPmZpbGxSZWN0KHNlcGFyYXRvclJlY3QsIHRl
eHRDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgIGdjLT5maWxsUmVjdChzZXBh
cmF0b3JSZWN0LCBDb2xvcigweGNkLCAweGNkLCAweGNkKSwgQ29sb3JTcGFjZURldmljZVJHQik7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTExMDQsMTMgKzExNDEsMTcgQEAgaW50IFBv
cHVwTGlzdEJveDo6Z2V0Um93SGVpZ2h0KGludCBpbmRleCkKICAgICBpZiAobV9wb3B1cENsaWVu
dC0+aXRlbVN0eWxlKGluZGV4KS5pc0Rpc3BsYXlOb25lKCkpCiAgICAgICAgIHJldHVybiAwOwog
CisgICAgLy8gU2VwYXJhdG9yIHJvdyBoZWlnaHQgaXMgdGhlIHNhbWUgc2l6ZSBhcyBpdHNlbGYu
CisgICAgaWYgKG1fcG9wdXBDbGllbnQtPml0ZW1Jc1NlcGFyYXRvcihpbmRleCkpCisgICAgICAg
IHJldHVybiBzZXBhcmF0b3JIZWlnaHQ7CisKICAgICBTdHJpbmcgaWNvbiA9IG1fcG9wdXBDbGll
bnQtPml0ZW1JY29uKGluZGV4KTsKICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlKEltYWdlOjpsb2Fk
UGxhdGZvcm1SZXNvdXJjZShpY29uLnV0ZjgoKS5kYXRhKCkpKTsKIAogICAgIGludCBmb250SGVp
Z2h0ID0gZ2V0Um93Rm9udChpbmRleCkuZm9udE1ldHJpY3MoKS5oZWlnaHQoKTsKICAgICBpbnQg
aWNvbkhlaWdodCA9IChpbWFnZSAmJiAhaW1hZ2UtPmlzTnVsbCgpKSA/IGltYWdlLT5yZWN0KCku
aGVpZ2h0KCkgOiAwOwogCi0gICAgcmV0dXJuIG1heChmb250SGVpZ2h0LCBpY29uSGVpZ2h0KTsK
KyAgICByZXR1cm4gbWF4KGZvbnRIZWlnaHQsIGljb25IZWlnaHQpICsga0xpbmVIZWlnaHRNYXJn
aW4qMjsKIH0KIAogSW50UmVjdCBQb3B1cExpc3RCb3g6OmdldFJvd0JvdW5kcyhpbnQgaW5kZXgp
CkBAIC0xMjczLDcgKzEzMTQsNyBAQCB2b2lkIFBvcHVwTGlzdEJveDo6bGF5b3V0KCkKICAgICBp
bnQgYmFzZVdpZHRoID0gMDsKICAgICBpbnQgcGFkZGluZ1dpZHRoID0gMDsKICAgICBpbnQgbGlu
ZUVuZFBhZGRpbmdXaWR0aCA9IDA7Ci0gICAgaW50IHkgPSAwOworICAgIGludCB5ID0ga1BhZGRp
bmdIZWlnaHQ7IC8vIFRvcCBwYWRkaW5nCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1JdGVt
cygpOyArK2kpIHsKICAgICAgICAgLy8gUGxhY2UgdGhlIGl0ZW0gdmVydGljYWxseS4KICAgICAg
ICAgbV9pdGVtc1tpXS0+eU9mZnNldCA9IHk7CkBAIC0xMzEwLDcgKzEzNTEsNyBAQCB2b2lkIFBv
cHVwTGlzdEJveDo6bGF5b3V0KCkKICAgICB9CiAKICAgICAvLyBDYWxjdWxhdGUgc2Nyb2xsIGJh
ciB3aWR0aC4KLSAgICBpbnQgd2luZG93SGVpZ2h0ID0gMDsKKyAgICBpbnQgd2luZG93SGVpZ2h0
ID0ga1BhZGRpbmdIZWlnaHQ7IC8vIFRvcCBwYWRkaW5nIGhlaWdodHMgaXMgYWRkZWQgZmlyc3Qu
CiAgICAgbV92aXNpYmxlUm93cyA9IG1pbihudW1JdGVtcygpLCBrTWF4VmlzaWJsZVJvd3MpOwog
CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX3Zpc2libGVSb3dzOyArK2kpIHsKQEAgLTEzMjQs
NiArMTM2NSw3IEBAIHZvaWQgUG9wdXBMaXN0Qm94OjpsYXlvdXQoKQogCiAgICAgICAgIHdpbmRv
d0hlaWdodCArPSByb3dIZWlnaHQ7CiAgICAgfQorICAgIHdpbmRvd0hlaWdodCArPSBrUGFkZGlu
Z0hlaWdodDsgLy8gQm90dG9tIHBhZGRpbmcgaGVpZ2h0cyBpcyBhZGRlZCBsYXN0LgogCiAgICAg
Ly8gU2V0IG91ciB3aWRnZXQgYW5kIHNjcm9sbGFibGUgY29udGVudHMgc2l6ZXMuCiAgICAgaW50
IHNjcm9sbGJhcldpZHRoID0gMDsKQEAgLTEzNTQsNyArMTM5Niw3IEBAIHZvaWQgUG9wdXBMaXN0
Qm94OjpsYXlvdXQoKQogICAgIH0KIAogICAgIHJlc2l6ZSh3aW5kb3dXaWR0aCwgd2luZG93SGVp
Z2h0KTsKLSAgICBzZXRDb250ZW50c1NpemUoSW50U2l6ZShjb250ZW50V2lkdGgsIGdldFJvd0Jv
dW5kcyhudW1JdGVtcygpIC0gMSkubWF4WSgpKSk7CisgICAgc2V0Q29udGVudHNTaXplKEludFNp
emUoY29udGVudFdpZHRoLCBnZXRSb3dCb3VuZHMobnVtSXRlbXMoKSAtIDEpLm1heFkoKSArIGtQ
YWRkaW5nSGVpZ2h0KSk7CiAKICAgICBpZiAoaG9zdFdpbmRvdygpKQogICAgICAgICBzY3JvbGxU
b1JldmVhbFNlbGVjdGlvbigpOwo=
</data>
<flag name="review"
          id="82206"
          type_id="1"
          status="-"
          setter="honten"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89718</attachid>
            <date>2011-04-14 19:00:42 -0700</date>
            <delta_ts>2011-04-14 19:21:05 -0700</delta_ts>
            <desc>Revised patch.</desc>
            <filename>UIPolish.patch</filename>
            <type>text/plain</type>
            <size>15713</size>
            <attacher name="Naoki Takano">honten</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2NzkxMDc5Li5kNjFmY2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUg
QEAKKzIwMTEtMDQtMTQgIE5hb2tpIFRha2FubyAgPHRha2Fuby5uYW9raUBnbWFpbC5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0Nocm9taXVt
XVVJIHBvbGlzaGVzIGFuZCB0d2Vha3MgdG8gQXV0b2ZpbGwgZHJvcGRvd24gbWVudS4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4NTA1CisgICAgICAg
IGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTUxMDc3
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBCZWNhdXNlIHRoaXMgaXMgYXV0b2ZpbGwgbG9va2lu
ZyBwcm9ibGVtIGluIENocm9taXVtLgorICAgICAgICBBZGQgbV9wYWRkaW5naGVpZ2h0LCBtX3Bh
ZGRpbmdMaW5lSGVpZ2h0IGZvciBQb3B1cE1lbnVTdHlsZS4KKyAgICAgICAgUHV0IFBvcHVwTWVu
dVN0eWxlOjpwYWRkaW5nSGVpZ2h0aygpIGF0IHRoZSB0b3AgYW5kIGJvdHRvbSBvZiB3aW5kb3cu
CisgICAgICAgIFB1dCBQb3B1cE1lbnVTdHlsZTo6cGFkZGluZ0xpbmVIZWlnaHRrKCkgYXQgdGhl
IHRvcCBhbmQgYm90dG9tIG9mIGVhY2ggbGluZS4KKyAgICAgICAgQ2hhbmdlIHNlcGFyYXRvciBj
b2xvciB0byBDb2xvcjo6bGlnaHRHcmF5LgorICAgICAgICBDaGFuZ2UgdGhlIGxpbmUgaGVpZ2h0
IG9mIHNlcGFyYXRvciBhcyBvbmx5IHRoZSBwaWVjZS4KKworICAgICAgICAqIHBsYXRmb3JtL1Bv
cHVwTWVudVN0eWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnVTdHlsZTo6UG9wdXBN
ZW51U3R5bGUpOiBBZGQgcGFkZGluZyBoZWlnaHRzIHBhcmFtZXRlcnMgZm9yIGNvbnN0cnVjdG9y
LgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51U3R5bGU6OnBhZGRpbmdIZWlnaHQpOiBBZGQg
Zm9yIHBhZGRpbmcgaGVpZ2h0IGZvciB3aW5kb3cuCisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1l
bnVTdHlsZTo6cGFkZGluZ0xpbmVIZWlnaHQpOiBBZGQgZm9yIHBhZGRpbmcgaGVpZ2h0IGF0IGVh
Y2ggbGluZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cExpc3RCb3g6OnBhaW50VmVydGljYWxQYWRkaW5n
KTogQWRkIG5ldyBmdW5jdGlvbiB0byBwdXQgdGhlIHRvcCBhbmQgYm90dG9tIHBhZGRpbmdzLgor
ICAgICAgICAoV2ViQ29yZTo6UG9wdXBMaXN0Qm94OjpwYWludCk6IEFkZCBjYWxsaW5nIHBhaW50
VG9wQm90dG9tUGFkZGluZygpLgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBMaXN0Qm94OjpwYWlu
dFJvdyk6IENoYW5nZSB0aGUgc2VwYXJhdG9yIGNvbG9yIHRvIGxpZ2h0R3JheS4KKyAgICAgICAg
KFdlYkNvcmU6OlBvcHVwTGlzdEJveDo6Z2V0Um93SGVpZ2h0KTpBZGQga0xpbmVIZWlnaHRNYXJn
aW4qMiBmb3IgZWFjaCBsaW5lIGhlaWdodC4KKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTGlzdEJv
eDo6bGF5b3V0KTogQWRkIHBhZGRpbmcgaGVpZ2h0IHNpemUgdG8gY2FsY3VsYXRlIHdpbmRvdyBo
ZWlnaHQuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTWVudUxpc3Q6Oml0ZW1TdHlsZSk6IFBhc3MgMCBoZWlnaHQgYmVj
YXVzZSB0aGUgc3R5bGUgZG9lc24ndCBuZWVkIGhlaWdodC4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlck1lbnVMaXN0OjptZW51U3R5bGUpOiBQYXNzIDAgaGVpZ2h0IGJlY2F1c2UgdGhlIHN0eWxl
IGRvZXNuJ3QgbmVlZCBoZWlnaHQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250
cm9sU2luZ2xlTGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbFNp
bmdsZUxpbmU6Om1lbnVTdHlsZSk6IFBhc3MgMCBoZWlnaHQgYmVjYXVzZSB0aGUgc3R5bGUgZG9l
c24ndCBuZWVkIGhlaWdodC4KKwogMjAxMS0wNC0xNCAgRG1pdHJ5IFRpdG92ICA8ZGltaWNoQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXZpZCBMZXZpbi4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BvcHVwTWVudVN0eWxlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Qb3B1cE1lbnVTdHlsZS5oCmluZGV4IDNjYjMzY2MuLjM4YTkyZTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BvcHVwTWVudVN0eWxlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUG9wdXBNZW51U3R5bGUuaApAQCAtMzUsNyArMzUsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFBvcHVwTWVudVN0eWxlIHsKIHB1YmxpYzoK
LSAgICBQb3B1cE1lbnVTdHlsZShjb25zdCBDb2xvciYgZm9yZWdyb3VuZCwgY29uc3QgQ29sb3Im
IGJhY2tncm91bmQsIGNvbnN0IEZvbnQmIGZvbnQsIGJvb2wgdmlzaWJsZSwgYm9vbCBpc0Rpc3Bs
YXlOb25lLCBMZW5ndGggdGV4dEluZGVudCwgVGV4dERpcmVjdGlvbiB0ZXh0RGlyZWN0aW9uLCBi
b29sIGhhc1RleHREaXJlY3Rpb25PdmVycmlkZSkKKyAgICBQb3B1cE1lbnVTdHlsZShjb25zdCBD
b2xvciYgZm9yZWdyb3VuZCwgY29uc3QgQ29sb3ImIGJhY2tncm91bmQsIGNvbnN0IEZvbnQmIGZv
bnQsIGJvb2wgdmlzaWJsZSwgYm9vbCBpc0Rpc3BsYXlOb25lLCBMZW5ndGggdGV4dEluZGVudCwg
VGV4dERpcmVjdGlvbiB0ZXh0RGlyZWN0aW9uLCBib29sIGhhc1RleHREaXJlY3Rpb25PdmVycmlk
ZSwgaW50IHBhZGRpbmdIZWlnaHQsIGludCBwYWRkaW5nTGluZUhlaWdodCkKICAgICAgICAgOiBt
X2ZvcmVncm91bmRDb2xvcihmb3JlZ3JvdW5kKQogICAgICAgICAsIG1fYmFja2dyb3VuZENvbG9y
KGJhY2tncm91bmQpCiAgICAgICAgICwgbV9mb250KGZvbnQpCkBAIC00NCw5ICs0NCwxMSBAQCBw
dWJsaWM6CiAgICAgICAgICwgbV90ZXh0SW5kZW50KHRleHRJbmRlbnQpCiAgICAgICAgICwgbV90
ZXh0RGlyZWN0aW9uKHRleHREaXJlY3Rpb24pCiAgICAgICAgICwgbV9oYXNUZXh0RGlyZWN0aW9u
T3ZlcnJpZGUoaGFzVGV4dERpcmVjdGlvbk92ZXJyaWRlKQorICAgICAgICAsIG1fcGFkZGluZ0hl
aWdodChwYWRkaW5nSGVpZ2h0KQorICAgICAgICAsIG1fcGFkZGluZ0xpbmVIZWlnaHQocGFkZGlu
Z0xpbmVIZWlnaHQpCiAgICAgewogICAgIH0KLSAgICAKKwogICAgIGNvbnN0IENvbG9yJiBmb3Jl
Z3JvdW5kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2ZvcmVncm91bmRDb2xvcjsgfQogICAgIGNv
bnN0IENvbG9yJiBiYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmRD
b2xvcjsgfQogICAgIGNvbnN0IEZvbnQmIGZvbnQoKSBjb25zdCB7IHJldHVybiBtX2ZvbnQ7IH0K
QEAgLTU1LDYgKzU3LDggQEAgcHVibGljOgogICAgIExlbmd0aCB0ZXh0SW5kZW50KCkgY29uc3Qg
eyByZXR1cm4gbV90ZXh0SW5kZW50OyB9CiAgICAgVGV4dERpcmVjdGlvbiB0ZXh0RGlyZWN0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV90ZXh0RGlyZWN0aW9uOyB9CiAgICAgYm9vbCBoYXNUZXh0RGly
ZWN0aW9uT3ZlcnJpZGUoKSBjb25zdCB7IHJldHVybiBtX2hhc1RleHREaXJlY3Rpb25PdmVycmlk
ZTsgfQorICAgIGludCBwYWRkaW5nSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9wYWRkaW5nSGVp
Z2h0OyB9OworICAgIGludCBwYWRkaW5nTGluZUhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFk
ZGluZ0xpbmVIZWlnaHQ7IH07CiAKIHByaXZhdGU6CiAgICAgQ29sb3IgbV9mb3JlZ3JvdW5kQ29s
b3I7CkBAIC02NSw2ICs2OSw5IEBAIHByaXZhdGU6CiAgICAgTGVuZ3RoIG1fdGV4dEluZGVudDsK
ICAgICBUZXh0RGlyZWN0aW9uIG1fdGV4dERpcmVjdGlvbjsKICAgICBib29sIG1faGFzVGV4dERp
cmVjdGlvbk92ZXJyaWRlOworICAgIGludCBtX3BhZGRpbmdIZWlnaHQ7IC8vIFBhZGRpbmcgaGVp
Z2h0IHB1dCBhdCB0aGUgdG9wIGFuZCBib3R0b20gb2Ygd2luZG93LgorICAgIGludCBtX3BhZGRp
bmdMaW5lSGVpZ2h0OyAvLyBQYWRkaW5nIGxpbmUgaGVpZ2h0IHB1dCBhdCB0aGUgdG9wIGFuZCBi
b3R0b20gb2YgZWFjaCBsaW5lLgorCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1
bS5jcHAKaW5kZXggYWY5N2VjZi4uZTRhMzZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVtLmNwcApAQCAtMjAzLDYgKzIw
Myw5IEBAIHByaXZhdGU6CiAgICAgLy8gQ29udmVydHMgYSBwb2ludCB0byBhbiBpbmRleCBvZiB0
aGUgcm93IHRoZSBwb2ludCBpcyBvdmVyCiAgICAgaW50IHBvaW50VG9Sb3dJbmRleChjb25zdCBJ
bnRQb2ludCYpOwogCisgICAgLy8gUGFpbnQgdGhlIHRvcCBhbmQgYm90dG9tIHBhZGRpbmcuCisg
ICAgdm9pZCBwYWludFZlcnRpY2FsUGFkZGluZyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRS
ZWN0Jik7CisKICAgICAvLyBQYWludCBhbiBpbmRpdmlkdWFsIHJvdwogICAgIHZvaWQgcGFpbnRS
b3coR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYsIGludCByb3dJbmRleCk7CiAKQEAg
LTg1MCw2ICs4NTMsMzcgQEAgdm9pZCBQb3B1cExpc3RCb3g6OnR5cGVBaGVhZEZpbmQoY29uc3Qg
UGxhdGZvcm1LZXlib2FyZEV2ZW50JiBldmVudCkKICAgICB9CiB9CiAKK3ZvaWQgUG9wdXBMaXN0
Qm94OjpwYWludFZlcnRpY2FsUGFkZGluZyhHcmFwaGljc0NvbnRleHQqIGdjLCBjb25zdCBJbnRS
ZWN0JiByZWN0KQoreworICAgIC8vIERvIG5vdCBwYWludCBpZiB0aGUgbnVtSXRlbXMoKSBpcyBl
bXB0eS4KKyAgICBpZiAoIW51bUl0ZW1zKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFBvcHVw
TWVudVN0eWxlIG1lbnVTdHlsZSA9IG1fcG9wdXBDbGllbnQtPm1lbnVTdHlsZSgpOworCisgICAg
Ly8gRmlsbCBiYWNrZ3JvdW5kIGNvbG9yIGF0IHRoZSB0b3AuCisgICAgSW50UmVjdCB0b3BSZWN0
ID0gZ2V0Um93Qm91bmRzKDApOworICAgIHRvcFJlY3QubW92ZSgwLCAtbWVudVN0eWxlLnBhZGRp
bmdIZWlnaHQoKSk7CisgICAgdG9wUmVjdC5zZXRIZWlnaHQobWVudVN0eWxlLnBhZGRpbmdIZWln
aHQoKSk7CisgICAgaWYgKHRvcFJlY3QuaW50ZXJzZWN0cyhyZWN0KSkgeworICAgICAgICBpZiAo
bWVudVN0eWxlLmJhY2tncm91bmRDb2xvcigpLmhhc0FscGhhKCkpCisgICAgICAgICAgICBnYy0+
ZmlsbFJlY3QodG9wUmVjdCwgQ29sb3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKwor
ICAgICAgICBnYy0+ZmlsbFJlY3QodG9wUmVjdCwgbWVudVN0eWxlLmJhY2tncm91bmRDb2xvcigp
LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICB9CisKKyAgICAvLyBGaWxsIGJhY2tncm91bmQg
Y29sb3IgYXQgdGhlIGJvdHRvbS4KKyAgICBJbnRSZWN0IGJvdHRvbVJlY3QgPSBnZXRSb3dCb3Vu
ZHMobnVtSXRlbXMoKS0xKTsKKyAgICBib3R0b21SZWN0Lm1vdmUoMCwgYm90dG9tUmVjdC5oZWln
aHQoKSk7CisgICAgYm90dG9tUmVjdC5zZXRIZWlnaHQobWVudVN0eWxlLnBhZGRpbmdIZWlnaHQo
KSk7CisgICAgaWYgKGJvdHRvbVJlY3QuaW50ZXJzZWN0cyhyZWN0KSkgeworICAgICAgICBpZiAo
bWVudVN0eWxlLmJhY2tncm91bmRDb2xvcigpLmhhc0FscGhhKCkpCisgICAgICAgICAgICBnYy0+
ZmlsbFJlY3QoYm90dG9tUmVjdCwgQ29sb3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsK
KworICAgICAgICBnYy0+ZmlsbFJlY3QoYm90dG9tUmVjdCwgbWVudVN0eWxlLmJhY2tncm91bmRD
b2xvcigpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICB9Cit9CisKIHZvaWQgUG9wdXBMaXN0
Qm94OjpwYWludChHcmFwaGljc0NvbnRleHQqIGdjLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewog
ICAgIC8vIGFkanVzdCBjb29yZHMgZm9yIHNjcm9sbGVkIGZyYW1lCkBAIC04NjYsNiArOTAwLDcg
QEAgdm9pZCBQb3B1cExpc3RCb3g6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogZ2MsIGNvbnN0IElu
dFJlY3QmIHJlY3QpCiAKICAgICAvLyBGSVhNRTogQ2FuIHdlIG9wdGltaXplIHNjcm9sbGluZyB0
byBub3QgcmVxdWlyZSByZXBhaW50aW5nIHRoZSBlbnRpcmUKICAgICAvLyB3aW5kb3c/ICBTaG91
bGQgd2U/CisgICAgcGFpbnRWZXJ0aWNhbFBhZGRpbmcoZ2MsIHIpOwogICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgbnVtSXRlbXMoKTsgKytpKQogICAgICAgICBwYWludFJvdyhnYywgciwgaSk7CiAK
QEAgLTkxNyw3ICs5NTIsNyBAQCB2b2lkIFBvcHVwTGlzdEJveDo6cGFpbnRSb3coR3JhcGhpY3ND
b250ZXh0KiBnYywgY29uc3QgSW50UmVjdCYgcmVjdCwgaW50IHJvd0luZAogICAgICAgICAgICAg
cm93UmVjdC54KCkgKyBzZXBhcmF0b3JQYWRkaW5nLAogICAgICAgICAgICAgcm93UmVjdC55KCkg
KyAocm93UmVjdC5oZWlnaHQoKSAtIHNlcGFyYXRvckhlaWdodCkgLyAyLAogICAgICAgICAgICAg
cm93UmVjdC53aWR0aCgpIC0gMiAqIHNlcGFyYXRvclBhZGRpbmcsIHNlcGFyYXRvckhlaWdodCk7
Ci0gICAgICAgIGdjLT5maWxsUmVjdChzZXBhcmF0b3JSZWN0LCB0ZXh0Q29sb3IsIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOworICAgICAgICBnYy0+ZmlsbFJlY3Qoc2VwYXJhdG9yUmVjdCwgQ29sb3I6
OmxpZ2h0R3JheSwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTExMDQsMTMgKzExMzksMTcgQEAgaW50IFBvcHVwTGlzdEJveDo6Z2V0Um93SGVpZ2h0
KGludCBpbmRleCkKICAgICBpZiAobV9wb3B1cENsaWVudC0+aXRlbVN0eWxlKGluZGV4KS5pc0Rp
c3BsYXlOb25lKCkpCiAgICAgICAgIHJldHVybiAwOwogCisgICAgLy8gU2VwYXJhdG9yIHJvdyBo
ZWlnaHQgaXMgdGhlIHNhbWUgc2l6ZSBhcyBpdHNlbGYuCisgICAgaWYgKG1fcG9wdXBDbGllbnQt
Pml0ZW1Jc1NlcGFyYXRvcihpbmRleCkpCisgICAgICAgIHJldHVybiBzZXBhcmF0b3JIZWlnaHQ7
CisKICAgICBTdHJpbmcgaWNvbiA9IG1fcG9wdXBDbGllbnQtPml0ZW1JY29uKGluZGV4KTsKICAg
ICBSZWZQdHI8SW1hZ2U+IGltYWdlKEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZShpY29uLnV0
ZjgoKS5kYXRhKCkpKTsKIAogICAgIGludCBmb250SGVpZ2h0ID0gZ2V0Um93Rm9udChpbmRleCku
Zm9udE1ldHJpY3MoKS5oZWlnaHQoKTsKICAgICBpbnQgaWNvbkhlaWdodCA9IChpbWFnZSAmJiAh
aW1hZ2UtPmlzTnVsbCgpKSA/IGltYWdlLT5yZWN0KCkuaGVpZ2h0KCkgOiAwOwogCi0gICAgcmV0
dXJuIG1heChmb250SGVpZ2h0LCBpY29uSGVpZ2h0KTsKKyAgICByZXR1cm4gbWF4KGZvbnRIZWln
aHQsIGljb25IZWlnaHQpICsgbV9wb3B1cENsaWVudC0+bWVudVN0eWxlKCkucGFkZGluZ0xpbmVI
ZWlnaHQoKSoyOwogfQogCiBJbnRSZWN0IFBvcHVwTGlzdEJveDo6Z2V0Um93Qm91bmRzKGludCBp
bmRleCkKQEAgLTEyNjcsMTMgKzEzMDYsMTQgQEAgdm9pZCBQb3B1cExpc3RCb3g6OnVwZGF0ZUZy
b21FbGVtZW50KCkKIAogdm9pZCBQb3B1cExpc3RCb3g6OmxheW91dCgpCiB7Ci0gICAgYm9vbCBp
c1JpZ2h0QWxpZ25lZCA9IG1fcG9wdXBDbGllbnQtPm1lbnVTdHlsZSgpLnRleHREaXJlY3Rpb24o
KSA9PSBSVEw7Ci0gICAgCisgICAgUG9wdXBNZW51U3R5bGUgbWVudVN0eWxlID0gbV9wb3B1cENs
aWVudC0+bWVudVN0eWxlKCk7CisgICAgYm9vbCBpc1JpZ2h0QWxpZ25lZCA9IG1lbnVTdHlsZS50
ZXh0RGlyZWN0aW9uKCkgPT0gUlRMOworCiAgICAgLy8gU2l6ZSBvdXIgY2hpbGQgaXRlbXMuCiAg
ICAgaW50IGJhc2VXaWR0aCA9IDA7CiAgICAgaW50IHBhZGRpbmdXaWR0aCA9IDA7CiAgICAgaW50
IGxpbmVFbmRQYWRkaW5nV2lkdGggPSAwOwotICAgIGludCB5ID0gMDsKKyAgICBpbnQgeSA9IG1l
bnVTdHlsZS5wYWRkaW5nSGVpZ2h0KCk7IC8vIFRvcCBwYWRkaW5nCiAgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBudW1JdGVtcygpOyArK2kpIHsKICAgICAgICAgLy8gUGxhY2UgdGhlIGl0ZW0gdmVy
dGljYWxseS4KICAgICAgICAgbV9pdGVtc1tpXS0+eU9mZnNldCA9IHk7CkBAIC0xMzEwLDcgKzEz
NTAsNyBAQCB2b2lkIFBvcHVwTGlzdEJveDo6bGF5b3V0KCkKICAgICB9CiAKICAgICAvLyBDYWxj
dWxhdGUgc2Nyb2xsIGJhciB3aWR0aC4KLSAgICBpbnQgd2luZG93SGVpZ2h0ID0gMDsKKyAgICBp
bnQgd2luZG93SGVpZ2h0ID0gbWVudVN0eWxlLnBhZGRpbmdIZWlnaHQoKTsgLy8gVG9wIHBhZGRp
bmcgaGVpZ2h0cyBpcyBhZGRlZCBmaXJzdC4KICAgICBtX3Zpc2libGVSb3dzID0gbWluKG51bUl0
ZW1zKCksIGtNYXhWaXNpYmxlUm93cyk7CiAKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fdmlz
aWJsZVJvd3M7ICsraSkgewpAQCAtMTMyNCw2ICsxMzY0LDcgQEAgdm9pZCBQb3B1cExpc3RCb3g6
OmxheW91dCgpCiAKICAgICAgICAgd2luZG93SGVpZ2h0ICs9IHJvd0hlaWdodDsKICAgICB9Cisg
ICAgd2luZG93SGVpZ2h0ICs9IG1lbnVTdHlsZS5wYWRkaW5nSGVpZ2h0KCk7IC8vIEJvdHRvbSBw
YWRkaW5nIGhlaWdodHMgaXMgYWRkZWQgbGFzdC4KIAogICAgIC8vIFNldCBvdXIgd2lkZ2V0IGFu
ZCBzY3JvbGxhYmxlIGNvbnRlbnRzIHNpemVzLgogICAgIGludCBzY3JvbGxiYXJXaWR0aCA9IDA7
CkBAIC0xMzU0LDcgKzEzOTUsNyBAQCB2b2lkIFBvcHVwTGlzdEJveDo6bGF5b3V0KCkKICAgICB9
CiAKICAgICByZXNpemUod2luZG93V2lkdGgsIHdpbmRvd0hlaWdodCk7Ci0gICAgc2V0Q29udGVu
dHNTaXplKEludFNpemUoY29udGVudFdpZHRoLCBnZXRSb3dCb3VuZHMobnVtSXRlbXMoKSAtIDEp
Lm1heFkoKSkpOworICAgIHNldENvbnRlbnRzU2l6ZShJbnRTaXplKGNvbnRlbnRXaWR0aCwgZ2V0
Um93Qm91bmRzKG51bUl0ZW1zKCkgLSAxKS5tYXhZKCkgKyBtZW51U3R5bGUucGFkZGluZ0hlaWdo
dCgpKSk7CiAKICAgICBpZiAoaG9zdFdpbmRvdygpKQogICAgICAgICBzY3JvbGxUb1JldmVhbFNl
bGVjdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1l
bnVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAK
aW5kZXggZjE1NTYxNC4uNzMzYWNhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck1lbnVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTWVudUxpc3QuY3BwCkBAIC00MjgsNyArNDI4LDcgQEAgUG9wdXBNZW51U3R5bGUgUmVuZGVy
TWVudUxpc3Q6Oml0ZW1TdHlsZSh1bnNpZ25lZCBsaXN0SW5kZXgpIGNvbnN0CiAgICAgRWxlbWVu
dCogZWxlbWVudCA9IGxpc3RJdGVtc1tsaXN0SW5kZXhdOwogICAgIAogICAgIFJlbmRlclN0eWxl
KiBzdHlsZSA9IGVsZW1lbnQtPnJlbmRlclN0eWxlKCkgPyBlbGVtZW50LT5yZW5kZXJTdHlsZSgp
IDogZWxlbWVudC0+Y29tcHV0ZWRTdHlsZSgpOwotICAgIHJldHVybiBzdHlsZSA/IFBvcHVwTWVu
dVN0eWxlKHN0eWxlLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIGl0
ZW1CYWNrZ3JvdW5kQ29sb3IobGlzdEluZGV4KSwgc3R5bGUtPmZvbnQoKSwgc3R5bGUtPnZpc2li
aWxpdHkoKSA9PSBWSVNJQkxFLCBzdHlsZS0+ZGlzcGxheSgpID09IE5PTkUsIHN0eWxlLT50ZXh0
SW5kZW50KCksIHN0eWxlLT5kaXJlY3Rpb24oKSwgc3R5bGUtPnVuaWNvZGVCaWRpKCkgPT0gT3Zl
cnJpZGUpIDogbWVudVN0eWxlKCk7CisgICAgcmV0dXJuIHN0eWxlID8gUG9wdXBNZW51U3R5bGUo
c3R5bGUtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSwgaXRlbUJhY2tn
cm91bmRDb2xvcihsaXN0SW5kZXgpLCBzdHlsZS0+Zm9udCgpLCBzdHlsZS0+dmlzaWJpbGl0eSgp
ID09IFZJU0lCTEUsIHN0eWxlLT5kaXNwbGF5KCkgPT0gTk9ORSwgc3R5bGUtPnRleHRJbmRlbnQo
KSwgc3R5bGUtPmRpcmVjdGlvbigpLCBzdHlsZS0+dW5pY29kZUJpZGkoKSA9PSBPdmVycmlkZSwg
MCwgMCkgOiBtZW51U3R5bGUoKTsKIH0KIAogQ29sb3IgUmVuZGVyTWVudUxpc3Q6Oml0ZW1CYWNr
Z3JvdW5kQ29sb3IodW5zaWduZWQgbGlzdEluZGV4KSBjb25zdApAQCAtNDU4LDcgKzQ1OCw3IEBA
IENvbG9yIFJlbmRlck1lbnVMaXN0OjppdGVtQmFja2dyb3VuZENvbG9yKHVuc2lnbmVkIGxpc3RJ
bmRleCkgY29uc3QKIFBvcHVwTWVudVN0eWxlIFJlbmRlck1lbnVMaXN0OjptZW51U3R5bGUoKSBj
b25zdAogewogICAgIFJlbmRlclN0eWxlKiBzID0gbV9pbm5lckJsb2NrID8gbV9pbm5lckJsb2Nr
LT5zdHlsZSgpIDogc3R5bGUoKTsKLSAgICByZXR1cm4gUG9wdXBNZW51U3R5bGUocy0+dmlzaXRl
ZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBzLT52aXNpdGVkRGVwZW5kZW50Q29s
b3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpLCBzLT5mb250KCksIHMtPnZpc2liaWxpdHko
KSA9PSBWSVNJQkxFLCBzLT5kaXNwbGF5KCkgPT0gTk9ORSwgcy0+dGV4dEluZGVudCgpLCBzdHls
ZSgpLT5kaXJlY3Rpb24oKSwgc3R5bGUoKS0+dW5pY29kZUJpZGkoKSA9PSBPdmVycmlkZSk7Cisg
ICAgcmV0dXJuIFBvcHVwTWVudVN0eWxlKHMtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9w
ZXJ0eUNvbG9yKSwgcy0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3Vu
ZENvbG9yKSwgcy0+Zm9udCgpLCBzLT52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSwgcy0+ZGlzcGxh
eSgpID09IE5PTkUsIHMtPnRleHRJbmRlbnQoKSwgc3R5bGUoKS0+ZGlyZWN0aW9uKCksIHN0eWxl
KCktPnVuaWNvZGVCaWRpKCkgPT0gT3ZlcnJpZGUsIDAsIDApOwogfQogCiBIb3N0V2luZG93KiBS
ZW5kZXJNZW51TGlzdDo6aG9zdFdpbmRvdygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCmluZGV4IGI2
MGY3ZTEuLmJlM2NiMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCkBAIC05MzgsNyArOTM4LDcgQEAgUG9w
dXBNZW51U3R5bGUgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjppdGVtU3R5bGUodW5zaWdu
ZWQpIGNvbnN0CiAKIFBvcHVwTWVudVN0eWxlIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6
bWVudVN0eWxlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gUG9wdXBNZW51U3R5bGUoc3R5bGUoKS0+
dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBzdHlsZSgpLT52aXNpdGVk
RGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpLCBzdHlsZSgpLT5mb250
KCksIHN0eWxlKCktPnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFLCBzdHlsZSgpLT5kaXNwbGF5KCkg
PT0gTk9ORSwgc3R5bGUoKS0+dGV4dEluZGVudCgpLCBzdHlsZSgpLT5kaXJlY3Rpb24oKSwgc3R5
bGUoKS0+dW5pY29kZUJpZGkoKSA9PSBPdmVycmlkZSk7CisgICAgcmV0dXJuIFBvcHVwTWVudVN0
eWxlKHN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSwgc3R5
bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKSwg
c3R5bGUoKS0+Zm9udCgpLCBzdHlsZSgpLT52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSwgc3R5bGUo
KS0+ZGlzcGxheSgpID09IE5PTkUsIHN0eWxlKCktPnRleHRJbmRlbnQoKSwgc3R5bGUoKS0+ZGly
ZWN0aW9uKCksIHN0eWxlKCktPnVuaWNvZGVCaWRpKCkgPT0gT3ZlcnJpZGUsIDAsIDApOwogfQog
CiBpbnQgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpjbGllbnRJbnNldExlZnQoKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBiYTEyYzYyLi4zYmZjMTljIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDExLTA0LTE0ICBOYW9raSBU
YWthbm8gIDx0YWthbm8ubmFva2lAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFtDaHJvbWl1bV1VSSBwb2xpc2hlcyBhbmQgdHdlYWtz
IHRvIEF1dG9maWxsIGRyb3Bkb3duIG1lbnUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD01ODUwNQorICAgICAgICBodHRwOi8vY29kZS5nb29nbGUuY29t
L3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD01MTA3NworCisgICAgICAgICogc3JjL0F1dG9G
aWxsUG9wdXBNZW51Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6QXV0b0ZpbGxQb3B1cE1l
bnVDbGllbnQ6OmluaXRpYWxpemUpOiBTZXQgcGFkZGluZyBoZWlnaHRzIGZvciBhdXRvZmlsbCBw
b3B1cCB3aW5kb3cuCisKIDIwMTEtMDQtMTQgIEFkcmllbm5lIFdhbGtlciAgPGVubmVAZ29vZ2xl
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBKYW1lcyBSb2JpbnNvbi4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0F1dG9GaWxsUG9wdXBNZW51Q2xpZW50LmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0F1dG9GaWxsUG9wdXBNZW51Q2xpZW50LmNwcApp
bmRleCBkMDRjNTdjLi4xYjEwMTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9BdXRvRmlsbFBvcHVwTWVudUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvQXV0b0ZpbGxQb3B1cE1lbnVDbGllbnQuY3BwCkBAIC00OCw2ICs0OCw5IEBAIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorc3RhdGljIGNv
bnN0IGludCBrUGFkZGluZ0hlaWdodCA9IDQ7IC8vIFBhZGRpbmcgaGVpZ2h0IHB1dCBhdCB0aGUg
dG9wIGFuZCBib3R0b20gb2Ygd2luZG93Lgorc3RhdGljIGNvbnN0IGludCBrUGFkZGluZ0xpbmVI
ZWlnaHQ9IDM7IC8vIFBhZGRpbmcgTGluZSBoZWlnaHQgcHV0IGF0IHRoZSB0b3AgYW5kIGJvdHRv
bSBvZiBlYWNoIGxpbmUuCisKIEF1dG9GaWxsUG9wdXBNZW51Q2xpZW50OjpBdXRvRmlsbFBvcHVw
TWVudUNsaWVudCgpCiAgICAgOiBtX3NlcGFyYXRvckluZGV4KC0xKQogICAgICwgbV9zZWxlY3Rl
ZEluZGV4KC0xKQpAQCAtMjkxLDkgKzI5NCwxNiBAQCB2b2lkIEF1dG9GaWxsUG9wdXBNZW51Q2xp
ZW50Ojppbml0aWFsaXplKAogICAgIHJlZ3VsYXJGb250LnVwZGF0ZSh0ZXh0RmllbGQtPmRvY3Vt
ZW50KCktPnN0eWxlU2VsZWN0b3IoKS0+Zm9udFNlbGVjdG9yKCkpOwogICAgIC8vIFRoZSBkaXJl
Y3Rpb24gb2YgdGV4dCBpbiBwb3B1cCBtZW51IGlzIHNldCB0aGUgc2FtZSBhcyB0aGUgZGlyZWN0
aW9uIG9mCiAgICAgLy8gdGhlIGlucHV0IGVsZW1lbnQ6IHRleHRGaWVsZC4KLSAgICBtX3JlZ3Vs
YXJTdHlsZS5zZXQobmV3IFBvcHVwTWVudVN0eWxlKENvbG9yOjpibGFjaywgQ29sb3I6OndoaXRl
LCByZWd1bGFyRm9udCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRydWUsIGZhbHNlLCBMZW5ndGgoV2ViQ29yZTo6Rml4ZWQpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEZpZWxkLT5yZW5kZXJlcigpLT5zdHlsZSgpLT5k
aXJlY3Rpb24oKSwgdGV4dEZpZWxkLT5yZW5kZXJlcigpLT5zdHlsZSgpLT51bmljb2RlQmlkaSgp
ID09IE92ZXJyaWRlKSk7CisgICAgbV9yZWd1bGFyU3R5bGUuc2V0KG5ldyBQb3B1cE1lbnVTdHls
ZShDb2xvcjo6YmxhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBDb2xvcjo6d2hpdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZWd1bGFyRm9udCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExlbmd0aChXZWJDb3Jl
OjpGaXhlZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0
RmllbGQtPnJlbmRlcmVyKCktPnN0eWxlKCktPmRpcmVjdGlvbigpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEZpZWxkLT5yZW5kZXJlcigpLT5zdHlsZSgp
LT51bmljb2RlQmlkaSgpID09IE92ZXJyaWRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAga1BhZGRpbmdIZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBrUGFkZGluZ0xpbmVIZWlnaHQpKTsKIAogICAgIEZvbnREZXNjcmlw
dGlvbiB3YXJuaW5nRm9udERlc2NyaXB0aW9uID0gcmVndWxhckZvbnQuZm9udERlc2NyaXB0aW9u
KCk7CiAgICAgd2FybmluZ0ZvbnREZXNjcmlwdGlvbi5zZXRJdGFsaWModHJ1ZSk7CkBAIC0zMDYs
NyArMzE2LDkgQEAgdm9pZCBBdXRvRmlsbFBvcHVwTWVudUNsaWVudDo6aW5pdGlhbGl6ZSgKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcmVndWxhclN0eWxlLT5p
c0Rpc3BsYXlOb25lKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtX3JlZ3VsYXJTdHlsZS0+dGV4dEluZGVudCgpLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbV9yZWd1bGFyU3R5bGUtPnRleHREaXJlY3Rpb24oKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcmVndWxhclN0eWxlLT5oYXNU
ZXh0RGlyZWN0aW9uT3ZlcnJpZGUoKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbV9yZWd1bGFyU3R5bGUtPmhhc1RleHREaXJlY3Rpb25PdmVycmlkZSgpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga1BhZGRpbmdIZWlnaHQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrUGFkZGluZ0xpbmVI
ZWlnaHQpKTsKIH0KIAogdm9pZCBBdXRvRmlsbFBvcHVwTWVudUNsaWVudDo6c2V0U3VnZ2VzdGlv
bnMoY29uc3QgV2ViVmVjdG9yPFdlYlN0cmluZz4mIG5hbWVzLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89722</attachid>
            <date>2011-04-14 19:21:08 -0700</date>
            <delta_ts>2011-04-15 22:10:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58505-20110414192107.patch</filename>
            <type>text/plain</type>
            <size>17524</size>
            <attacher name="Naoki Takano">honten</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODM5MTEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2NzkxMDc5MWU0NWEzNjlh
NGFhNTI0M2U1YmM4MzUxZDY1OWQ2YTFiLi41MDEwN2Y5NDcwNjM0NDBlMTg5NTRmYTIzOTNiMTc4
ZTljY2Y5M2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTEtMDQtMTQgIE5hb2tp
IFRha2FubyAgPHRha2Fuby5uYW9raUBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0Nocm9taXVtXVVJIHBvbGlzaGVzIGFuZCB0d2Vh
a3MgdG8gQXV0b2ZpbGwgZHJvcGRvd24gbWVudS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTU4NTA1CisgICAgICAgIGh0dHA6Ly9jb2RlLmdvb2dsZS5j
b20vcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTUxMDc3CisKKyAgICAgICAgTm8gbmV3IHRl
c3RzLiBCZWNhdXNlIHRoaXMgaXMgYXV0b2ZpbGwgbG9va2luZyBwcm9ibGVtIGluIENocm9taXVt
LgorICAgICAgICBBZGQgbV9wYWRkaW5naGVpZ2h0LCBtX3BhZGRpbmdMaW5lSGVpZ2h0IGZvciBQ
b3B1cE1lbnVTdHlsZS4KKyAgICAgICAgUHV0IFBvcHVwTWVudVN0eWxlOjpwYWRkaW5nSGVpZ2h0
aygpIGF0IHRoZSB0b3AgYW5kIGJvdHRvbSBvZiB3aW5kb3cuCisgICAgICAgIFB1dCBQb3B1cE1l
bnVTdHlsZTo6cGFkZGluZ0xpbmVIZWlnaHRrKCkgYXQgdGhlIHRvcCBhbmQgYm90dG9tIG9mIGVh
Y2ggbGluZS4KKyAgICAgICAgQ2hhbmdlIHNlcGFyYXRvciBjb2xvciB0byBDb2xvcjo6bGlnaHRH
cmF5IGFuZCByZW1vdmUgc2VwYXJhdG9yUGFkZGluZyBhdCB0aGUgZWRnZS4KKyAgICAgICAgQ2hh
bmdlIHRoZSBsaW5lIGhlaWdodCBvZiBzZXBhcmF0b3IgYXMgb25seSB0aGUgcGllY2UuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9Qb3B1cE1lbnVTdHlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6UG9w
dXBNZW51U3R5bGU6OlBvcHVwTWVudVN0eWxlKTogQWRkIHBhZGRpbmcgaGVpZ2h0cyBwYXJhbWV0
ZXJzIGZvciBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTWVudVN0eWxlOjpw
YWRkaW5nSGVpZ2h0KTogQWRkIGZvciBwYWRkaW5nIGhlaWdodCBmb3Igd2luZG93LgorICAgICAg
ICAoV2ViQ29yZTo6UG9wdXBNZW51U3R5bGU6OnBhZGRpbmdMaW5lSGVpZ2h0KTogQWRkIGZvciBw
YWRkaW5nIGhlaWdodCBhdCBlYWNoIGxpbmUuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0v
UG9wdXBNZW51Q2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBMaXN0Qm94Ojpw
YWludFZlcnRpY2FsUGFkZGluZyk6IEFkZCBuZXcgZnVuY3Rpb24gdG8gcHV0IHRoZSB0b3AgYW5k
IGJvdHRvbSBwYWRkaW5ncy4KKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTGlzdEJveDo6cGFpbnQp
OiBBZGQgY2FsbGluZyBwYWludFRvcEJvdHRvbVBhZGRpbmcoKS4KKyAgICAgICAgKFdlYkNvcmU6
OlBvcHVwTGlzdEJveDo6cGFpbnRSb3cpOiBDaGFuZ2UgdGhlIHNlcGFyYXRvciBjb2xvciB0byBs
aWdodEdyYXkuCisgICAgICAgIChXZWJDb3JlOjpQb3B1cExpc3RCb3g6OmdldFJvd0hlaWdodCk6
QWRkIGtMaW5lSGVpZ2h0TWFyZ2luKjIgZm9yIGVhY2ggbGluZSBoZWlnaHQuCisgICAgICAgIChX
ZWJDb3JlOjpQb3B1cExpc3RCb3g6OmxheW91dCk6IEFkZCBwYWRkaW5nIGhlaWdodCBzaXplIHRv
IGNhbGN1bGF0ZSB3aW5kb3cgaGVpZ2h0LgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1l
bnVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1lbnVMaXN0OjppdGVtU3R5bGUp
OiBQYXNzIDAgaGVpZ2h0IGJlY2F1c2UgdGhlIHN0eWxlIGRvZXNuJ3QgbmVlZCBoZWlnaHQuCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJNZW51TGlzdDo6bWVudVN0eWxlKTogUGFzcyAwIGhlaWdo
dCBiZWNhdXNlIHRoZSBzdHlsZSBkb2Vzbid0IG5lZWQgaGVpZ2h0LgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjptZW51U3R5bGUpOiBQYXNzIDAgaGVpZ2h0IGJl
Y2F1c2UgdGhlIHN0eWxlIGRvZXNuJ3QgbmVlZCBoZWlnaHQuCisKIDIwMTEtMDQtMTQgIERtaXRy
eSBUaXRvdiAgPGRpbWljaEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2
aWQgTGV2aW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qb3B1cE1lbnVT
dHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUG9wdXBNZW51U3R5bGUuaAppbmRleCAz
Y2IzM2NjNmFmMmY3MjU5NzM3NDViZmFjNWZhNzQyYmQyOGJhMDk1Li4zOGE5MmUwYjllZDQyNTVl
Y2FiMjMxOGY3NWIzYmZkNWEwZjJmNTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Qb3B1cE1lbnVTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BvcHVw
TWVudVN0eWxlLmgKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBQb3B1cE1lbnVTdHlsZSB7CiBwdWJsaWM6Ci0gICAgUG9wdXBNZW51U3R5bGUoY29uc3QgQ29s
b3ImIGZvcmVncm91bmQsIGNvbnN0IENvbG9yJiBiYWNrZ3JvdW5kLCBjb25zdCBGb250JiBmb250
LCBib29sIHZpc2libGUsIGJvb2wgaXNEaXNwbGF5Tm9uZSwgTGVuZ3RoIHRleHRJbmRlbnQsIFRl
eHREaXJlY3Rpb24gdGV4dERpcmVjdGlvbiwgYm9vbCBoYXNUZXh0RGlyZWN0aW9uT3ZlcnJpZGUp
CisgICAgUG9wdXBNZW51U3R5bGUoY29uc3QgQ29sb3ImIGZvcmVncm91bmQsIGNvbnN0IENvbG9y
JiBiYWNrZ3JvdW5kLCBjb25zdCBGb250JiBmb250LCBib29sIHZpc2libGUsIGJvb2wgaXNEaXNw
bGF5Tm9uZSwgTGVuZ3RoIHRleHRJbmRlbnQsIFRleHREaXJlY3Rpb24gdGV4dERpcmVjdGlvbiwg
Ym9vbCBoYXNUZXh0RGlyZWN0aW9uT3ZlcnJpZGUsIGludCBwYWRkaW5nSGVpZ2h0LCBpbnQgcGFk
ZGluZ0xpbmVIZWlnaHQpCiAgICAgICAgIDogbV9mb3JlZ3JvdW5kQ29sb3IoZm9yZWdyb3VuZCkK
ICAgICAgICAgLCBtX2JhY2tncm91bmRDb2xvcihiYWNrZ3JvdW5kKQogICAgICAgICAsIG1fZm9u
dChmb250KQpAQCAtNDQsOSArNDQsMTEgQEAgcHVibGljOgogICAgICAgICAsIG1fdGV4dEluZGVu
dCh0ZXh0SW5kZW50KQogICAgICAgICAsIG1fdGV4dERpcmVjdGlvbih0ZXh0RGlyZWN0aW9uKQog
ICAgICAgICAsIG1faGFzVGV4dERpcmVjdGlvbk92ZXJyaWRlKGhhc1RleHREaXJlY3Rpb25PdmVy
cmlkZSkKKyAgICAgICAgLCBtX3BhZGRpbmdIZWlnaHQocGFkZGluZ0hlaWdodCkKKyAgICAgICAg
LCBtX3BhZGRpbmdMaW5lSGVpZ2h0KHBhZGRpbmdMaW5lSGVpZ2h0KQogICAgIHsKICAgICB9Ci0g
ICAgCisKICAgICBjb25zdCBDb2xvciYgZm9yZWdyb3VuZENvbG9yKCkgY29uc3QgeyByZXR1cm4g
bV9mb3JlZ3JvdW5kQ29sb3I7IH0KICAgICBjb25zdCBDb2xvciYgYmFja2dyb3VuZENvbG9yKCkg
Y29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kQ29sb3I7IH0KICAgICBjb25zdCBGb250JiBmb250
KCkgY29uc3QgeyByZXR1cm4gbV9mb250OyB9CkBAIC01NSw2ICs1Nyw4IEBAIHB1YmxpYzoKICAg
ICBMZW5ndGggdGV4dEluZGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dEluZGVudDsgfQogICAg
IFRleHREaXJlY3Rpb24gdGV4dERpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dERpcmVj
dGlvbjsgfQogICAgIGJvb2wgaGFzVGV4dERpcmVjdGlvbk92ZXJyaWRlKCkgY29uc3QgeyByZXR1
cm4gbV9oYXNUZXh0RGlyZWN0aW9uT3ZlcnJpZGU7IH0KKyAgICBpbnQgcGFkZGluZ0hlaWdodCgp
IGNvbnN0IHsgcmV0dXJuIG1fcGFkZGluZ0hlaWdodDsgfTsKKyAgICBpbnQgcGFkZGluZ0xpbmVI
ZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX3BhZGRpbmdMaW5lSGVpZ2h0OyB9OwogCiBwcml2YXRl
OgogICAgIENvbG9yIG1fZm9yZWdyb3VuZENvbG9yOwpAQCAtNjUsNiArNjksOSBAQCBwcml2YXRl
OgogICAgIExlbmd0aCBtX3RleHRJbmRlbnQ7CiAgICAgVGV4dERpcmVjdGlvbiBtX3RleHREaXJl
Y3Rpb247CiAgICAgYm9vbCBtX2hhc1RleHREaXJlY3Rpb25PdmVycmlkZTsKKyAgICBpbnQgbV9w
YWRkaW5nSGVpZ2h0OyAvLyBQYWRkaW5nIGhlaWdodCBwdXQgYXQgdGhlIHRvcCBhbmQgYm90dG9t
IG9mIHdpbmRvdy4KKyAgICBpbnQgbV9wYWRkaW5nTGluZUhlaWdodDsgLy8gUGFkZGluZyBsaW5l
IGhlaWdodCBwdXQgYXQgdGhlIHRvcCBhbmQgYm90dG9tIG9mIGVhY2ggbGluZS4KKwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uY3BwCmluZGV4IGFmOTdlY2Y0Y2VjMjIwOTUx
Y2Y0ZWY0MDMxZmM1ZWI4YWU4NjQ0OWEuLjMxM2Q3NDUxYzUwMmY4ODdjNjYxZjRhMzNkY2Y3NmE1
NTAwYjFiNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Bv
cHVwTWVudUNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9Qb3B1cE1lbnVDaHJvbWl1bS5jcHAKQEAgLTIwMyw2ICsyMDMsOSBAQCBwcml2YXRlOgogICAg
IC8vIENvbnZlcnRzIGEgcG9pbnQgdG8gYW4gaW5kZXggb2YgdGhlIHJvdyB0aGUgcG9pbnQgaXMg
b3ZlcgogICAgIGludCBwb2ludFRvUm93SW5kZXgoY29uc3QgSW50UG9pbnQmKTsKIAorICAgIC8v
IFBhaW50IHRoZSB0b3AgYW5kIGJvdHRvbSBwYWRkaW5nLgorICAgIHZvaWQgcGFpbnRWZXJ0aWNh
bFBhZGRpbmcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYpOworCiAgICAgLy8gUGFp
bnQgYW4gaW5kaXZpZHVhbCByb3cKICAgICB2b2lkIHBhaW50Um93KEdyYXBoaWNzQ29udGV4dCos
IGNvbnN0IEludFJlY3QmLCBpbnQgcm93SW5kZXgpOwogCkBAIC04NTAsNiArODUzLDM3IEBAIHZv
aWQgUG9wdXBMaXN0Qm94Ojp0eXBlQWhlYWRGaW5kKGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVu
dCYgZXZlbnQpCiAgICAgfQogfQogCit2b2lkIFBvcHVwTGlzdEJveDo6cGFpbnRWZXJ0aWNhbFBh
ZGRpbmcoR3JhcGhpY3NDb250ZXh0KiBnYywgY29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyAgICAv
LyBEbyBub3QgcGFpbnQgaWYgdGhlIG51bUl0ZW1zKCkgaXMgZW1wdHkuCisgICAgaWYgKCFudW1J
dGVtcygpKQorICAgICAgICByZXR1cm47CisKKyAgICBQb3B1cE1lbnVTdHlsZSBtZW51U3R5bGUg
PSBtX3BvcHVwQ2xpZW50LT5tZW51U3R5bGUoKTsKKworICAgIC8vIEZpbGwgYmFja2dyb3VuZCBj
b2xvciBhdCB0aGUgdG9wLgorICAgIEludFJlY3QgdG9wUmVjdCA9IGdldFJvd0JvdW5kcygwKTsK
KyAgICB0b3BSZWN0Lm1vdmUoMCwgLW1lbnVTdHlsZS5wYWRkaW5nSGVpZ2h0KCkpOworICAgIHRv
cFJlY3Quc2V0SGVpZ2h0KG1lbnVTdHlsZS5wYWRkaW5nSGVpZ2h0KCkpOworICAgIGlmICh0b3BS
ZWN0LmludGVyc2VjdHMocmVjdCkpIHsKKyAgICAgICAgaWYgKG1lbnVTdHlsZS5iYWNrZ3JvdW5k
Q29sb3IoKS5oYXNBbHBoYSgpKQorICAgICAgICAgICAgZ2MtPmZpbGxSZWN0KHRvcFJlY3QsIENv
bG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQik7CisKKyAgICAgICAgZ2MtPmZpbGxSZWN0
KHRvcFJlY3QsIG1lbnVTdHlsZS5iYWNrZ3JvdW5kQ29sb3IoKSwgQ29sb3JTcGFjZURldmljZVJH
Qik7CisgICAgfQorCisgICAgLy8gRmlsbCBiYWNrZ3JvdW5kIGNvbG9yIGF0IHRoZSBib3R0b20u
CisgICAgSW50UmVjdCBib3R0b21SZWN0ID0gZ2V0Um93Qm91bmRzKG51bUl0ZW1zKCktMSk7Cisg
ICAgYm90dG9tUmVjdC5tb3ZlKDAsIGJvdHRvbVJlY3QuaGVpZ2h0KCkpOworICAgIGJvdHRvbVJl
Y3Quc2V0SGVpZ2h0KG1lbnVTdHlsZS5wYWRkaW5nSGVpZ2h0KCkpOworICAgIGlmIChib3R0b21S
ZWN0LmludGVyc2VjdHMocmVjdCkpIHsKKyAgICAgICAgaWYgKG1lbnVTdHlsZS5iYWNrZ3JvdW5k
Q29sb3IoKS5oYXNBbHBoYSgpKQorICAgICAgICAgICAgZ2MtPmZpbGxSZWN0KGJvdHRvbVJlY3Qs
IENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQik7CisKKyAgICAgICAgZ2MtPmZpbGxS
ZWN0KGJvdHRvbVJlY3QsIG1lbnVTdHlsZS5iYWNrZ3JvdW5kQ29sb3IoKSwgQ29sb3JTcGFjZURl
dmljZVJHQik7CisgICAgfQorfQorCiB2b2lkIFBvcHVwTGlzdEJveDo6cGFpbnQoR3JhcGhpY3ND
b250ZXh0KiBnYywgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICAvLyBhZGp1c3QgY29vcmRz
IGZvciBzY3JvbGxlZCBmcmFtZQpAQCAtODY2LDYgKzkwMCw3IEBAIHZvaWQgUG9wdXBMaXN0Qm94
OjpwYWludChHcmFwaGljc0NvbnRleHQqIGdjLCBjb25zdCBJbnRSZWN0JiByZWN0KQogCiAgICAg
Ly8gRklYTUU6IENhbiB3ZSBvcHRpbWl6ZSBzY3JvbGxpbmcgdG8gbm90IHJlcXVpcmUgcmVwYWlu
dGluZyB0aGUgZW50aXJlCiAgICAgLy8gd2luZG93PyAgU2hvdWxkIHdlPworICAgIHBhaW50VmVy
dGljYWxQYWRkaW5nKGdjLCByKTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bUl0ZW1zKCk7
ICsraSkKICAgICAgICAgcGFpbnRSb3coZ2MsIHIsIGkpOwogCkBAIC04NzgsNyArOTEzLDYgQEAg
dm9pZCBQb3B1cExpc3RCb3g6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogZ2MsIGNvbnN0IEludFJl
Y3QmIHJlY3QpCiAgICAgU2Nyb2xsVmlldzo6cGFpbnQoZ2MsIHJlY3QpOwogfQogCi1zdGF0aWMg
Y29uc3QgaW50IHNlcGFyYXRvclBhZGRpbmcgPSA0Owogc3RhdGljIGNvbnN0IGludCBzZXBhcmF0
b3JIZWlnaHQgPSAxOwogCiB2b2lkIFBvcHVwTGlzdEJveDo6cGFpbnRSb3coR3JhcGhpY3NDb250
ZXh0KiBnYywgY29uc3QgSW50UmVjdCYgcmVjdCwgaW50IHJvd0luZGV4KQpAQCAtOTE0LDEwICs5
NDgsMTAgQEAgdm9pZCBQb3B1cExpc3RCb3g6OnBhaW50Um93KEdyYXBoaWNzQ29udGV4dCogZ2Ms
IGNvbnN0IEludFJlY3QmIHJlY3QsIGludCByb3dJbmQKIAogICAgIGlmIChtX3BvcHVwQ2xpZW50
LT5pdGVtSXNTZXBhcmF0b3Iocm93SW5kZXgpKSB7CiAgICAgICAgIEludFJlY3Qgc2VwYXJhdG9y
UmVjdCgKLSAgICAgICAgICAgIHJvd1JlY3QueCgpICsgc2VwYXJhdG9yUGFkZGluZywKKyAgICAg
ICAgICAgIHJvd1JlY3QueCgpLAogICAgICAgICAgICAgcm93UmVjdC55KCkgKyAocm93UmVjdC5o
ZWlnaHQoKSAtIHNlcGFyYXRvckhlaWdodCkgLyAyLAotICAgICAgICAgICAgcm93UmVjdC53aWR0
aCgpIC0gMiAqIHNlcGFyYXRvclBhZGRpbmcsIHNlcGFyYXRvckhlaWdodCk7Ci0gICAgICAgIGdj
LT5maWxsUmVjdChzZXBhcmF0b3JSZWN0LCB0ZXh0Q29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0Ip
OworICAgICAgICAgICAgcm93UmVjdC53aWR0aCgpLCBzZXBhcmF0b3JIZWlnaHQpOworICAgICAg
ICBnYy0+ZmlsbFJlY3Qoc2VwYXJhdG9yUmVjdCwgQ29sb3I6OmxpZ2h0R3JheSwgQ29sb3JTcGFj
ZURldmljZVJHQik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTExMDQsMTMgKzExMzgs
MTcgQEAgaW50IFBvcHVwTGlzdEJveDo6Z2V0Um93SGVpZ2h0KGludCBpbmRleCkKICAgICBpZiAo
bV9wb3B1cENsaWVudC0+aXRlbVN0eWxlKGluZGV4KS5pc0Rpc3BsYXlOb25lKCkpCiAgICAgICAg
IHJldHVybiAwOwogCisgICAgLy8gU2VwYXJhdG9yIHJvdyBoZWlnaHQgaXMgdGhlIHNhbWUgc2l6
ZSBhcyBpdHNlbGYuCisgICAgaWYgKG1fcG9wdXBDbGllbnQtPml0ZW1Jc1NlcGFyYXRvcihpbmRl
eCkpCisgICAgICAgIHJldHVybiBzZXBhcmF0b3JIZWlnaHQ7CisKICAgICBTdHJpbmcgaWNvbiA9
IG1fcG9wdXBDbGllbnQtPml0ZW1JY29uKGluZGV4KTsKICAgICBSZWZQdHI8SW1hZ2U+IGltYWdl
KEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZShpY29uLnV0ZjgoKS5kYXRhKCkpKTsKIAogICAg
IGludCBmb250SGVpZ2h0ID0gZ2V0Um93Rm9udChpbmRleCkuZm9udE1ldHJpY3MoKS5oZWlnaHQo
KTsKICAgICBpbnQgaWNvbkhlaWdodCA9IChpbWFnZSAmJiAhaW1hZ2UtPmlzTnVsbCgpKSA/IGlt
YWdlLT5yZWN0KCkuaGVpZ2h0KCkgOiAwOwogCi0gICAgcmV0dXJuIG1heChmb250SGVpZ2h0LCBp
Y29uSGVpZ2h0KTsKKyAgICByZXR1cm4gbWF4KGZvbnRIZWlnaHQsIGljb25IZWlnaHQpICsgbV9w
b3B1cENsaWVudC0+bWVudVN0eWxlKCkucGFkZGluZ0xpbmVIZWlnaHQoKSoyOwogfQogCiBJbnRS
ZWN0IFBvcHVwTGlzdEJveDo6Z2V0Um93Qm91bmRzKGludCBpbmRleCkKQEAgLTEyNjcsMTMgKzEz
MDUsMTQgQEAgdm9pZCBQb3B1cExpc3RCb3g6OnVwZGF0ZUZyb21FbGVtZW50KCkKIAogdm9pZCBQ
b3B1cExpc3RCb3g6OmxheW91dCgpCiB7Ci0gICAgYm9vbCBpc1JpZ2h0QWxpZ25lZCA9IG1fcG9w
dXBDbGllbnQtPm1lbnVTdHlsZSgpLnRleHREaXJlY3Rpb24oKSA9PSBSVEw7Ci0gICAgCisgICAg
UG9wdXBNZW51U3R5bGUgbWVudVN0eWxlID0gbV9wb3B1cENsaWVudC0+bWVudVN0eWxlKCk7Cisg
ICAgYm9vbCBpc1JpZ2h0QWxpZ25lZCA9IG1lbnVTdHlsZS50ZXh0RGlyZWN0aW9uKCkgPT0gUlRM
OworCiAgICAgLy8gU2l6ZSBvdXIgY2hpbGQgaXRlbXMuCiAgICAgaW50IGJhc2VXaWR0aCA9IDA7
CiAgICAgaW50IHBhZGRpbmdXaWR0aCA9IDA7CiAgICAgaW50IGxpbmVFbmRQYWRkaW5nV2lkdGgg
PSAwOwotICAgIGludCB5ID0gMDsKKyAgICBpbnQgeSA9IG1lbnVTdHlsZS5wYWRkaW5nSGVpZ2h0
KCk7IC8vIFRvcCBwYWRkaW5nCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1JdGVtcygpOyAr
K2kpIHsKICAgICAgICAgLy8gUGxhY2UgdGhlIGl0ZW0gdmVydGljYWxseS4KICAgICAgICAgbV9p
dGVtc1tpXS0+eU9mZnNldCA9IHk7CkBAIC0xMzEwLDcgKzEzNDksNyBAQCB2b2lkIFBvcHVwTGlz
dEJveDo6bGF5b3V0KCkKICAgICB9CiAKICAgICAvLyBDYWxjdWxhdGUgc2Nyb2xsIGJhciB3aWR0
aC4KLSAgICBpbnQgd2luZG93SGVpZ2h0ID0gMDsKKyAgICBpbnQgd2luZG93SGVpZ2h0ID0gbWVu
dVN0eWxlLnBhZGRpbmdIZWlnaHQoKTsgLy8gVG9wIHBhZGRpbmcgaGVpZ2h0cyBpcyBhZGRlZCBm
aXJzdC4KICAgICBtX3Zpc2libGVSb3dzID0gbWluKG51bUl0ZW1zKCksIGtNYXhWaXNpYmxlUm93
cyk7CiAKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fdmlzaWJsZVJvd3M7ICsraSkgewpAQCAt
MTMyNCw2ICsxMzYzLDcgQEAgdm9pZCBQb3B1cExpc3RCb3g6OmxheW91dCgpCiAKICAgICAgICAg
d2luZG93SGVpZ2h0ICs9IHJvd0hlaWdodDsKICAgICB9CisgICAgd2luZG93SGVpZ2h0ICs9IG1l
bnVTdHlsZS5wYWRkaW5nSGVpZ2h0KCk7IC8vIEJvdHRvbSBwYWRkaW5nIGhlaWdodHMgaXMgYWRk
ZWQgbGFzdC4KIAogICAgIC8vIFNldCBvdXIgd2lkZ2V0IGFuZCBzY3JvbGxhYmxlIGNvbnRlbnRz
IHNpemVzLgogICAgIGludCBzY3JvbGxiYXJXaWR0aCA9IDA7CkBAIC0xMzU0LDcgKzEzOTQsNyBA
QCB2b2lkIFBvcHVwTGlzdEJveDo6bGF5b3V0KCkKICAgICB9CiAKICAgICByZXNpemUod2luZG93
V2lkdGgsIHdpbmRvd0hlaWdodCk7Ci0gICAgc2V0Q29udGVudHNTaXplKEludFNpemUoY29udGVu
dFdpZHRoLCBnZXRSb3dCb3VuZHMobnVtSXRlbXMoKSAtIDEpLm1heFkoKSkpOworICAgIHNldENv
bnRlbnRzU2l6ZShJbnRTaXplKGNvbnRlbnRXaWR0aCwgZ2V0Um93Qm91bmRzKG51bUl0ZW1zKCkg
LSAxKS5tYXhZKCkgKyBtZW51U3R5bGUucGFkZGluZ0hlaWdodCgpKSk7CiAKICAgICBpZiAoaG9z
dFdpbmRvdygpKQogICAgICAgICBzY3JvbGxUb1JldmVhbFNlbGVjdGlvbigpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAKaW5kZXggZjE1NTYxNGE4ZTM3M2E2
YWNiNjljNzY4NzViNGY5YjUwYmIyM2UzZS4uNzMzYWNhYWI4OTRhN2YzNjRmMDM1NjQ2MjIyNjVj
MDE0NDNkYjI2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1l
bnVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3Qu
Y3BwCkBAIC00MjgsNyArNDI4LDcgQEAgUG9wdXBNZW51U3R5bGUgUmVuZGVyTWVudUxpc3Q6Oml0
ZW1TdHlsZSh1bnNpZ25lZCBsaXN0SW5kZXgpIGNvbnN0CiAgICAgRWxlbWVudCogZWxlbWVudCA9
IGxpc3RJdGVtc1tsaXN0SW5kZXhdOwogICAgIAogICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9IGVs
ZW1lbnQtPnJlbmRlclN0eWxlKCkgPyBlbGVtZW50LT5yZW5kZXJTdHlsZSgpIDogZWxlbWVudC0+
Y29tcHV0ZWRTdHlsZSgpOwotICAgIHJldHVybiBzdHlsZSA/IFBvcHVwTWVudVN0eWxlKHN0eWxl
LT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIGl0ZW1CYWNrZ3JvdW5k
Q29sb3IobGlzdEluZGV4KSwgc3R5bGUtPmZvbnQoKSwgc3R5bGUtPnZpc2liaWxpdHkoKSA9PSBW
SVNJQkxFLCBzdHlsZS0+ZGlzcGxheSgpID09IE5PTkUsIHN0eWxlLT50ZXh0SW5kZW50KCksIHN0
eWxlLT5kaXJlY3Rpb24oKSwgc3R5bGUtPnVuaWNvZGVCaWRpKCkgPT0gT3ZlcnJpZGUpIDogbWVu
dVN0eWxlKCk7CisgICAgcmV0dXJuIHN0eWxlID8gUG9wdXBNZW51U3R5bGUoc3R5bGUtPnZpc2l0
ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSwgaXRlbUJhY2tncm91bmRDb2xvcihs
aXN0SW5kZXgpLCBzdHlsZS0+Zm9udCgpLCBzdHlsZS0+dmlzaWJpbGl0eSgpID09IFZJU0lCTEUs
IHN0eWxlLT5kaXNwbGF5KCkgPT0gTk9ORSwgc3R5bGUtPnRleHRJbmRlbnQoKSwgc3R5bGUtPmRp
cmVjdGlvbigpLCBzdHlsZS0+dW5pY29kZUJpZGkoKSA9PSBPdmVycmlkZSwgMCwgMCkgOiBtZW51
U3R5bGUoKTsKIH0KIAogQ29sb3IgUmVuZGVyTWVudUxpc3Q6Oml0ZW1CYWNrZ3JvdW5kQ29sb3Io
dW5zaWduZWQgbGlzdEluZGV4KSBjb25zdApAQCAtNDU4LDcgKzQ1OCw3IEBAIENvbG9yIFJlbmRl
ck1lbnVMaXN0OjppdGVtQmFja2dyb3VuZENvbG9yKHVuc2lnbmVkIGxpc3RJbmRleCkgY29uc3QK
IFBvcHVwTWVudVN0eWxlIFJlbmRlck1lbnVMaXN0OjptZW51U3R5bGUoKSBjb25zdAogewogICAg
IFJlbmRlclN0eWxlKiBzID0gbV9pbm5lckJsb2NrID8gbV9pbm5lckJsb2NrLT5zdHlsZSgpIDog
c3R5bGUoKTsKLSAgICByZXR1cm4gUG9wdXBNZW51U3R5bGUocy0+dmlzaXRlZERlcGVuZGVudENv
bG9yKENTU1Byb3BlcnR5Q29sb3IpLCBzLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kQ29sb3IpLCBzLT5mb250KCksIHMtPnZpc2liaWxpdHkoKSA9PSBWSVNJQkxF
LCBzLT5kaXNwbGF5KCkgPT0gTk9ORSwgcy0+dGV4dEluZGVudCgpLCBzdHlsZSgpLT5kaXJlY3Rp
b24oKSwgc3R5bGUoKS0+dW5pY29kZUJpZGkoKSA9PSBPdmVycmlkZSk7CisgICAgcmV0dXJuIFBv
cHVwTWVudVN0eWxlKHMtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSwg
cy0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKSwgcy0+
Zm9udCgpLCBzLT52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSwgcy0+ZGlzcGxheSgpID09IE5PTkUs
IHMtPnRleHRJbmRlbnQoKSwgc3R5bGUoKS0+ZGlyZWN0aW9uKCksIHN0eWxlKCktPnVuaWNvZGVC
aWRpKCkgPT0gT3ZlcnJpZGUsIDAsIDApOwogfQogCiBIb3N0V2luZG93KiBSZW5kZXJNZW51TGlz
dDo6aG9zdFdpbmRvdygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCmluZGV4IGI2MGY3ZTEzZWRhYjZk
MjRiMWYwMjc2Nzg5YmY5MWRkYTYzNDgyMmIuLmJlM2NiMmFiMmFjYTQwYzYzOThiZjI0OGY4NzNi
OWFhZDQxYzYwMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCkBAIC05MzgsNyArOTM4LDcgQEAgUG9wdXBN
ZW51U3R5bGUgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjppdGVtU3R5bGUodW5zaWduZWQp
IGNvbnN0CiAKIFBvcHVwTWVudVN0eWxlIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6bWVu
dVN0eWxlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gUG9wdXBNZW51U3R5bGUoc3R5bGUoKS0+dmlz
aXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBzdHlsZSgpLT52aXNpdGVkRGVw
ZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpLCBzdHlsZSgpLT5mb250KCks
IHN0eWxlKCktPnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFLCBzdHlsZSgpLT5kaXNwbGF5KCkgPT0g
Tk9ORSwgc3R5bGUoKS0+dGV4dEluZGVudCgpLCBzdHlsZSgpLT5kaXJlY3Rpb24oKSwgc3R5bGUo
KS0+dW5pY29kZUJpZGkoKSA9PSBPdmVycmlkZSk7CisgICAgcmV0dXJuIFBvcHVwTWVudVN0eWxl
KHN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSwgc3R5bGUo
KS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKSwgc3R5
bGUoKS0+Zm9udCgpLCBzdHlsZSgpLT52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSwgc3R5bGUoKS0+
ZGlzcGxheSgpID09IE5PTkUsIHN0eWxlKCktPnRleHRJbmRlbnQoKSwgc3R5bGUoKS0+ZGlyZWN0
aW9uKCksIHN0eWxlKCktPnVuaWNvZGVCaWRpKCkgPT0gT3ZlcnJpZGUsIDAsIDApOwogfQogCiBp
bnQgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpjbGllbnRJbnNldExlZnQoKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBiYTEyYzYyNzU3MDAzZDJmZGI2MWJmMzQ1MGE0
MWNkZTUzNDdlMzY2Li4zYmZjMTljODc3ZjI3MDRjZjA5MzU2Y2JhYTBmZDU3ZWE5NTcyMzZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDExLTA0LTE0ICBO
YW9raSBUYWthbm8gIDx0YWthbm8ubmFva2lAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtDaHJvbWl1bV1VSSBwb2xpc2hlcyBhbmQg
dHdlYWtzIHRvIEF1dG9maWxsIGRyb3Bkb3duIG1lbnUuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODUwNQorICAgICAgICBodHRwOi8vY29kZS5nb29n
bGUuY29tL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD01MTA3NworCisgICAgICAgICogc3Jj
L0F1dG9GaWxsUG9wdXBNZW51Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6QXV0b0ZpbGxQ
b3B1cE1lbnVDbGllbnQ6OmluaXRpYWxpemUpOiBTZXQgcGFkZGluZyBoZWlnaHRzIGZvciBhdXRv
ZmlsbCBwb3B1cCB3aW5kb3cuCisKIDIwMTEtMDQtMTQgIEFkcmllbm5lIFdhbGtlciAgPGVubmVA
Z29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBKYW1lcyBSb2JpbnNvbi4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0F1dG9GaWxsUG9wdXBNZW51Q2xpZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0F1dG9GaWxsUG9wdXBNZW51Q2xpZW50
LmNwcAppbmRleCBkMDRjNTdjYjAxYWYwMDhkZmZlZjkzYWZlMTcyZDFkNGFmODI5MDc0Li4xYjEw
MTI5ZmExOThhZDU2MWJhZTM3MGE1ODVjMWRkNWZmZTYxNWYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9BdXRvRmlsbFBvcHVwTWVudUNsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXV0b0ZpbGxQb3B1cE1lbnVDbGllbnQuY3BwCkBAIC00
OCw2ICs0OCw5IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAorc3RhdGljIGNvbnN0IGludCBrUGFkZGluZ0hlaWdodCA9IDQ7IC8vIFBhZGRpbmcgaGVp
Z2h0IHB1dCBhdCB0aGUgdG9wIGFuZCBib3R0b20gb2Ygd2luZG93Lgorc3RhdGljIGNvbnN0IGlu
dCBrUGFkZGluZ0xpbmVIZWlnaHQ9IDM7IC8vIFBhZGRpbmcgTGluZSBoZWlnaHQgcHV0IGF0IHRo
ZSB0b3AgYW5kIGJvdHRvbSBvZiBlYWNoIGxpbmUuCisKIEF1dG9GaWxsUG9wdXBNZW51Q2xpZW50
OjpBdXRvRmlsbFBvcHVwTWVudUNsaWVudCgpCiAgICAgOiBtX3NlcGFyYXRvckluZGV4KC0xKQog
ICAgICwgbV9zZWxlY3RlZEluZGV4KC0xKQpAQCAtMjkxLDkgKzI5NCwxNiBAQCB2b2lkIEF1dG9G
aWxsUG9wdXBNZW51Q2xpZW50Ojppbml0aWFsaXplKAogICAgIHJlZ3VsYXJGb250LnVwZGF0ZSh0
ZXh0RmllbGQtPmRvY3VtZW50KCktPnN0eWxlU2VsZWN0b3IoKS0+Zm9udFNlbGVjdG9yKCkpOwog
ICAgIC8vIFRoZSBkaXJlY3Rpb24gb2YgdGV4dCBpbiBwb3B1cCBtZW51IGlzIHNldCB0aGUgc2Ft
ZSBhcyB0aGUgZGlyZWN0aW9uIG9mCiAgICAgLy8gdGhlIGlucHV0IGVsZW1lbnQ6IHRleHRGaWVs
ZC4KLSAgICBtX3JlZ3VsYXJTdHlsZS5zZXQobmV3IFBvcHVwTWVudVN0eWxlKENvbG9yOjpibGFj
aywgQ29sb3I6OndoaXRlLCByZWd1bGFyRm9udCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRydWUsIGZhbHNlLCBMZW5ndGgoV2ViQ29yZTo6Rml4ZWQpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEZpZWxkLT5yZW5kZXJl
cigpLT5zdHlsZSgpLT5kaXJlY3Rpb24oKSwgdGV4dEZpZWxkLT5yZW5kZXJlcigpLT5zdHlsZSgp
LT51bmljb2RlQmlkaSgpID09IE92ZXJyaWRlKSk7CisgICAgbV9yZWd1bGFyU3R5bGUuc2V0KG5l
dyBQb3B1cE1lbnVTdHlsZShDb2xvcjo6YmxhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBDb2xvcjo6d2hpdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZWd1bGFyRm9udCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IExlbmd0aChXZWJDb3JlOjpGaXhlZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0ZXh0RmllbGQtPnJlbmRlcmVyKCktPnN0eWxlKCktPmRpcmVjdGlvbigpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEZpZWxkLT5yZW5k
ZXJlcigpLT5zdHlsZSgpLT51bmljb2RlQmlkaSgpID09IE92ZXJyaWRlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga1BhZGRpbmdIZWlnaHQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrUGFkZGluZ0xpbmVIZWlnaHQpKTsKIAog
ICAgIEZvbnREZXNjcmlwdGlvbiB3YXJuaW5nRm9udERlc2NyaXB0aW9uID0gcmVndWxhckZvbnQu
Zm9udERlc2NyaXB0aW9uKCk7CiAgICAgd2FybmluZ0ZvbnREZXNjcmlwdGlvbi5zZXRJdGFsaWMo
dHJ1ZSk7CkBAIC0zMDYsNyArMzE2LDkgQEAgdm9pZCBBdXRvRmlsbFBvcHVwTWVudUNsaWVudDo6
aW5pdGlhbGl6ZSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1f
cmVndWxhclN0eWxlLT5pc0Rpc3BsYXlOb25lKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtX3JlZ3VsYXJTdHlsZS0+dGV4dEluZGVudCgpLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9yZWd1bGFyU3R5bGUtPnRleHREaXJl
Y3Rpb24oKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcmVn
dWxhclN0eWxlLT5oYXNUZXh0RGlyZWN0aW9uT3ZlcnJpZGUoKSkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9yZWd1bGFyU3R5bGUtPmhhc1RleHREaXJlY3Rp
b25PdmVycmlkZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
a1BhZGRpbmdIZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBrUGFkZGluZ0xpbmVIZWlnaHQpKTsKIH0KIAogdm9pZCBBdXRvRmlsbFBvcHVwTWVudUNsaWVu
dDo6c2V0U3VnZ2VzdGlvbnMoY29uc3QgV2ViVmVjdG9yPFdlYlN0cmluZz4mIG5hbWVzLApkaWZm
IC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1Z3pp
bGxhLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhL2J1Z3pp
bGxhLnB5CmluZGV4IGM3ODFkZmIwMGQ3MDFhNjkwNWEwZDI3MzA0MDBjMmJiOThiNDA5ODYuLjVm
NWU1Zjc0Yzg5YjBiYzcwZjMxYzMxNTQ0MTA0ZWMwYmNlNjVkYTUgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxsYS9idWd6aWxsYS5weQorKysgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGEvYnVnemlsbGEucHkKQEAg
LTMyMyw3ICszMjMsNyBAQCBjbGFzcyBCdWd6aWxsYShvYmplY3QpOgogICAgICAgICBzb3VwID0g
QmVhdXRpZnVsU3RvbmVTb3VwKHBhZ2UsIGNvbnZlcnRFbnRpdGllcz1CZWF1dGlmdWxTdG9uZVNv
dXAuWE1MX0VOVElUSUVTKQogICAgICAgICBidWcgPSB7fQogICAgICAgICBidWdbImlkIl0gPSBp
bnQoc291cC5maW5kKCJidWdfaWQiKS5zdHJpbmcpCi0gICAgICAgIGJ1Z1sidGl0bGUiXSA9IHNl
bGYuX3N0cmluZ19jb250ZW50cyhzb3VwLmZpbmQoInNob3J0X2Rlc2MiKSkKKyAgICAgICAgYnVn
WyJ0aXRsZSJdID0gIiIjc2VsZi5fc3RyaW5nX2NvbnRlbnRzKHNvdXAuZmluZCgic2hvcnRfZGVz
YyIpKQogICAgICAgICBidWdbImJ1Z19zdGF0dXMiXSA9IHNlbGYuX3N0cmluZ19jb250ZW50cyhz
b3VwLmZpbmQoImJ1Z19zdGF0dXMiKSkKICAgICAgICAgZHVwX2lkID0gc291cC5maW5kKCJkdXBf
aWQiKQogICAgICAgICBpZiBkdXBfaWQ6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89723</attachid>
            <date>2011-04-14 19:25:14 -0700</date>
            <delta_ts>2011-04-15 22:10:33 -0700</delta_ts>
            <desc>Remove separator padding at the edges.</desc>
            <filename>UIPolish.patch</filename>
            <type>text/plain</type>
            <size>16208</size>
            <attacher name="Naoki Takano">honten</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2NzkxMDc5Li41MDEwN2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUg
QEAKKzIwMTEtMDQtMTQgIE5hb2tpIFRha2FubyAgPHRha2Fuby5uYW9raUBnbWFpbC5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0Nocm9taXVt
XVVJIHBvbGlzaGVzIGFuZCB0d2Vha3MgdG8gQXV0b2ZpbGwgZHJvcGRvd24gbWVudS4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4NTA1CisgICAgICAg
IGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTUxMDc3
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBCZWNhdXNlIHRoaXMgaXMgYXV0b2ZpbGwgbG9va2lu
ZyBwcm9ibGVtIGluIENocm9taXVtLgorICAgICAgICBBZGQgbV9wYWRkaW5naGVpZ2h0LCBtX3Bh
ZGRpbmdMaW5lSGVpZ2h0IGZvciBQb3B1cE1lbnVTdHlsZS4KKyAgICAgICAgUHV0IFBvcHVwTWVu
dVN0eWxlOjpwYWRkaW5nSGVpZ2h0aygpIGF0IHRoZSB0b3AgYW5kIGJvdHRvbSBvZiB3aW5kb3cu
CisgICAgICAgIFB1dCBQb3B1cE1lbnVTdHlsZTo6cGFkZGluZ0xpbmVIZWlnaHRrKCkgYXQgdGhl
IHRvcCBhbmQgYm90dG9tIG9mIGVhY2ggbGluZS4KKyAgICAgICAgQ2hhbmdlIHNlcGFyYXRvciBj
b2xvciB0byBDb2xvcjo6bGlnaHRHcmF5IGFuZCByZW1vdmUgc2VwYXJhdG9yUGFkZGluZyBhdCB0
aGUgZWRnZS4KKyAgICAgICAgQ2hhbmdlIHRoZSBsaW5lIGhlaWdodCBvZiBzZXBhcmF0b3IgYXMg
b25seSB0aGUgcGllY2UuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9Qb3B1cE1lbnVTdHlsZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51U3R5bGU6OlBvcHVwTWVudVN0eWxlKTogQWRkIHBh
ZGRpbmcgaGVpZ2h0cyBwYXJhbWV0ZXJzIGZvciBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKFdlYkNv
cmU6OlBvcHVwTWVudVN0eWxlOjpwYWRkaW5nSGVpZ2h0KTogQWRkIGZvciBwYWRkaW5nIGhlaWdo
dCBmb3Igd2luZG93LgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBNZW51U3R5bGU6OnBhZGRpbmdM
aW5lSGVpZ2h0KTogQWRkIGZvciBwYWRkaW5nIGhlaWdodCBhdCBlYWNoIGxpbmUuCisgICAgICAg
ICogcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UG9wdXBMaXN0Qm94OjpwYWludFZlcnRpY2FsUGFkZGluZyk6IEFkZCBuZXcgZnVuY3Rp
b24gdG8gcHV0IHRoZSB0b3AgYW5kIGJvdHRvbSBwYWRkaW5ncy4KKyAgICAgICAgKFdlYkNvcmU6
OlBvcHVwTGlzdEJveDo6cGFpbnQpOiBBZGQgY2FsbGluZyBwYWludFRvcEJvdHRvbVBhZGRpbmco
KS4KKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTGlzdEJveDo6cGFpbnRSb3cpOiBDaGFuZ2UgdGhl
IHNlcGFyYXRvciBjb2xvciB0byBsaWdodEdyYXkuCisgICAgICAgIChXZWJDb3JlOjpQb3B1cExp
c3RCb3g6OmdldFJvd0hlaWdodCk6QWRkIGtMaW5lSGVpZ2h0TWFyZ2luKjIgZm9yIGVhY2ggbGlu
ZSBoZWlnaHQuCisgICAgICAgIChXZWJDb3JlOjpQb3B1cExpc3RCb3g6OmxheW91dCk6IEFkZCBw
YWRkaW5nIGhlaWdodCBzaXplIHRvIGNhbGN1bGF0ZSB3aW5kb3cgaGVpZ2h0LgorCisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ck1lbnVMaXN0OjppdGVtU3R5bGUpOiBQYXNzIDAgaGVpZ2h0IGJlY2F1c2UgdGhlIHN0eWxlIGRv
ZXNuJ3QgbmVlZCBoZWlnaHQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNZW51TGlzdDo6bWVu
dVN0eWxlKTogUGFzcyAwIGhlaWdodCBiZWNhdXNlIHRoZSBzdHlsZSBkb2Vzbid0IG5lZWQgaGVp
Z2h0LgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjptZW51U3R5
bGUpOiBQYXNzIDAgaGVpZ2h0IGJlY2F1c2UgdGhlIHN0eWxlIGRvZXNuJ3QgbmVlZCBoZWlnaHQu
CisKIDIwMTEtMDQtMTQgIERtaXRyeSBUaXRvdiAgPGRpbWljaEBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgTGV2aW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9Qb3B1cE1lbnVTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUG9w
dXBNZW51U3R5bGUuaAppbmRleCAzY2IzM2NjLi4zOGE5MmUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9Qb3B1cE1lbnVTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1BvcHVwTWVudVN0eWxlLmgKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBQb3B1cE1lbnVTdHlsZSB7CiBwdWJsaWM6Ci0gICAgUG9wdXBNZW51U3R5
bGUoY29uc3QgQ29sb3ImIGZvcmVncm91bmQsIGNvbnN0IENvbG9yJiBiYWNrZ3JvdW5kLCBjb25z
dCBGb250JiBmb250LCBib29sIHZpc2libGUsIGJvb2wgaXNEaXNwbGF5Tm9uZSwgTGVuZ3RoIHRl
eHRJbmRlbnQsIFRleHREaXJlY3Rpb24gdGV4dERpcmVjdGlvbiwgYm9vbCBoYXNUZXh0RGlyZWN0
aW9uT3ZlcnJpZGUpCisgICAgUG9wdXBNZW51U3R5bGUoY29uc3QgQ29sb3ImIGZvcmVncm91bmQs
IGNvbnN0IENvbG9yJiBiYWNrZ3JvdW5kLCBjb25zdCBGb250JiBmb250LCBib29sIHZpc2libGUs
IGJvb2wgaXNEaXNwbGF5Tm9uZSwgTGVuZ3RoIHRleHRJbmRlbnQsIFRleHREaXJlY3Rpb24gdGV4
dERpcmVjdGlvbiwgYm9vbCBoYXNUZXh0RGlyZWN0aW9uT3ZlcnJpZGUsIGludCBwYWRkaW5nSGVp
Z2h0LCBpbnQgcGFkZGluZ0xpbmVIZWlnaHQpCiAgICAgICAgIDogbV9mb3JlZ3JvdW5kQ29sb3Io
Zm9yZWdyb3VuZCkKICAgICAgICAgLCBtX2JhY2tncm91bmRDb2xvcihiYWNrZ3JvdW5kKQogICAg
ICAgICAsIG1fZm9udChmb250KQpAQCAtNDQsOSArNDQsMTEgQEAgcHVibGljOgogICAgICAgICAs
IG1fdGV4dEluZGVudCh0ZXh0SW5kZW50KQogICAgICAgICAsIG1fdGV4dERpcmVjdGlvbih0ZXh0
RGlyZWN0aW9uKQogICAgICAgICAsIG1faGFzVGV4dERpcmVjdGlvbk92ZXJyaWRlKGhhc1RleHRE
aXJlY3Rpb25PdmVycmlkZSkKKyAgICAgICAgLCBtX3BhZGRpbmdIZWlnaHQocGFkZGluZ0hlaWdo
dCkKKyAgICAgICAgLCBtX3BhZGRpbmdMaW5lSGVpZ2h0KHBhZGRpbmdMaW5lSGVpZ2h0KQogICAg
IHsKICAgICB9Ci0gICAgCisKICAgICBjb25zdCBDb2xvciYgZm9yZWdyb3VuZENvbG9yKCkgY29u
c3QgeyByZXR1cm4gbV9mb3JlZ3JvdW5kQ29sb3I7IH0KICAgICBjb25zdCBDb2xvciYgYmFja2dy
b3VuZENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kQ29sb3I7IH0KICAgICBjb25z
dCBGb250JiBmb250KCkgY29uc3QgeyByZXR1cm4gbV9mb250OyB9CkBAIC01NSw2ICs1Nyw4IEBA
IHB1YmxpYzoKICAgICBMZW5ndGggdGV4dEluZGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dElu
ZGVudDsgfQogICAgIFRleHREaXJlY3Rpb24gdGV4dERpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fdGV4dERpcmVjdGlvbjsgfQogICAgIGJvb2wgaGFzVGV4dERpcmVjdGlvbk92ZXJyaWRlKCkg
Y29uc3QgeyByZXR1cm4gbV9oYXNUZXh0RGlyZWN0aW9uT3ZlcnJpZGU7IH0KKyAgICBpbnQgcGFk
ZGluZ0hlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFkZGluZ0hlaWdodDsgfTsKKyAgICBpbnQg
cGFkZGluZ0xpbmVIZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX3BhZGRpbmdMaW5lSGVpZ2h0OyB9
OwogCiBwcml2YXRlOgogICAgIENvbG9yIG1fZm9yZWdyb3VuZENvbG9yOwpAQCAtNjUsNiArNjks
OSBAQCBwcml2YXRlOgogICAgIExlbmd0aCBtX3RleHRJbmRlbnQ7CiAgICAgVGV4dERpcmVjdGlv
biBtX3RleHREaXJlY3Rpb247CiAgICAgYm9vbCBtX2hhc1RleHREaXJlY3Rpb25PdmVycmlkZTsK
KyAgICBpbnQgbV9wYWRkaW5nSGVpZ2h0OyAvLyBQYWRkaW5nIGhlaWdodCBwdXQgYXQgdGhlIHRv
cCBhbmQgYm90dG9tIG9mIHdpbmRvdy4KKyAgICBpbnQgbV9wYWRkaW5nTGluZUhlaWdodDsgLy8g
UGFkZGluZyBsaW5lIGhlaWdodCBwdXQgYXQgdGhlIHRvcCBhbmQgYm90dG9tIG9mIGVhY2ggbGlu
ZS4KKwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uY3BwCmluZGV4IGFmOTdl
Y2YuLjMxM2Q3NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L1BvcHVwTWVudUNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5jcHAKQEAgLTIwMyw2ICsyMDMsOSBAQCBwcml2YXRlOgog
ICAgIC8vIENvbnZlcnRzIGEgcG9pbnQgdG8gYW4gaW5kZXggb2YgdGhlIHJvdyB0aGUgcG9pbnQg
aXMgb3ZlcgogICAgIGludCBwb2ludFRvUm93SW5kZXgoY29uc3QgSW50UG9pbnQmKTsKIAorICAg
IC8vIFBhaW50IHRoZSB0b3AgYW5kIGJvdHRvbSBwYWRkaW5nLgorICAgIHZvaWQgcGFpbnRWZXJ0
aWNhbFBhZGRpbmcoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYpOworCiAgICAgLy8g
UGFpbnQgYW4gaW5kaXZpZHVhbCByb3cKICAgICB2b2lkIHBhaW50Um93KEdyYXBoaWNzQ29udGV4
dCosIGNvbnN0IEludFJlY3QmLCBpbnQgcm93SW5kZXgpOwogCkBAIC04NTAsNiArODUzLDM3IEBA
IHZvaWQgUG9wdXBMaXN0Qm94Ojp0eXBlQWhlYWRGaW5kKGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRF
dmVudCYgZXZlbnQpCiAgICAgfQogfQogCit2b2lkIFBvcHVwTGlzdEJveDo6cGFpbnRWZXJ0aWNh
bFBhZGRpbmcoR3JhcGhpY3NDb250ZXh0KiBnYywgY29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyAg
ICAvLyBEbyBub3QgcGFpbnQgaWYgdGhlIG51bUl0ZW1zKCkgaXMgZW1wdHkuCisgICAgaWYgKCFu
dW1JdGVtcygpKQorICAgICAgICByZXR1cm47CisKKyAgICBQb3B1cE1lbnVTdHlsZSBtZW51U3R5
bGUgPSBtX3BvcHVwQ2xpZW50LT5tZW51U3R5bGUoKTsKKworICAgIC8vIEZpbGwgYmFja2dyb3Vu
ZCBjb2xvciBhdCB0aGUgdG9wLgorICAgIEludFJlY3QgdG9wUmVjdCA9IGdldFJvd0JvdW5kcygw
KTsKKyAgICB0b3BSZWN0Lm1vdmUoMCwgLW1lbnVTdHlsZS5wYWRkaW5nSGVpZ2h0KCkpOworICAg
IHRvcFJlY3Quc2V0SGVpZ2h0KG1lbnVTdHlsZS5wYWRkaW5nSGVpZ2h0KCkpOworICAgIGlmICh0
b3BSZWN0LmludGVyc2VjdHMocmVjdCkpIHsKKyAgICAgICAgaWYgKG1lbnVTdHlsZS5iYWNrZ3Jv
dW5kQ29sb3IoKS5oYXNBbHBoYSgpKQorICAgICAgICAgICAgZ2MtPmZpbGxSZWN0KHRvcFJlY3Qs
IENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQik7CisKKyAgICAgICAgZ2MtPmZpbGxS
ZWN0KHRvcFJlY3QsIG1lbnVTdHlsZS5iYWNrZ3JvdW5kQ29sb3IoKSwgQ29sb3JTcGFjZURldmlj
ZVJHQik7CisgICAgfQorCisgICAgLy8gRmlsbCBiYWNrZ3JvdW5kIGNvbG9yIGF0IHRoZSBib3R0
b20uCisgICAgSW50UmVjdCBib3R0b21SZWN0ID0gZ2V0Um93Qm91bmRzKG51bUl0ZW1zKCktMSk7
CisgICAgYm90dG9tUmVjdC5tb3ZlKDAsIGJvdHRvbVJlY3QuaGVpZ2h0KCkpOworICAgIGJvdHRv
bVJlY3Quc2V0SGVpZ2h0KG1lbnVTdHlsZS5wYWRkaW5nSGVpZ2h0KCkpOworICAgIGlmIChib3R0
b21SZWN0LmludGVyc2VjdHMocmVjdCkpIHsKKyAgICAgICAgaWYgKG1lbnVTdHlsZS5iYWNrZ3Jv
dW5kQ29sb3IoKS5oYXNBbHBoYSgpKQorICAgICAgICAgICAgZ2MtPmZpbGxSZWN0KGJvdHRvbVJl
Y3QsIENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQik7CisKKyAgICAgICAgZ2MtPmZp
bGxSZWN0KGJvdHRvbVJlY3QsIG1lbnVTdHlsZS5iYWNrZ3JvdW5kQ29sb3IoKSwgQ29sb3JTcGFj
ZURldmljZVJHQik7CisgICAgfQorfQorCiB2b2lkIFBvcHVwTGlzdEJveDo6cGFpbnQoR3JhcGhp
Y3NDb250ZXh0KiBnYywgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICAvLyBhZGp1c3QgY29v
cmRzIGZvciBzY3JvbGxlZCBmcmFtZQpAQCAtODY2LDYgKzkwMCw3IEBAIHZvaWQgUG9wdXBMaXN0
Qm94OjpwYWludChHcmFwaGljc0NvbnRleHQqIGdjLCBjb25zdCBJbnRSZWN0JiByZWN0KQogCiAg
ICAgLy8gRklYTUU6IENhbiB3ZSBvcHRpbWl6ZSBzY3JvbGxpbmcgdG8gbm90IHJlcXVpcmUgcmVw
YWludGluZyB0aGUgZW50aXJlCiAgICAgLy8gd2luZG93PyAgU2hvdWxkIHdlPworICAgIHBhaW50
VmVydGljYWxQYWRkaW5nKGdjLCByKTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bUl0ZW1z
KCk7ICsraSkKICAgICAgICAgcGFpbnRSb3coZ2MsIHIsIGkpOwogCkBAIC04NzgsNyArOTEzLDYg
QEAgdm9pZCBQb3B1cExpc3RCb3g6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogZ2MsIGNvbnN0IElu
dFJlY3QmIHJlY3QpCiAgICAgU2Nyb2xsVmlldzo6cGFpbnQoZ2MsIHJlY3QpOwogfQogCi1zdGF0
aWMgY29uc3QgaW50IHNlcGFyYXRvclBhZGRpbmcgPSA0Owogc3RhdGljIGNvbnN0IGludCBzZXBh
cmF0b3JIZWlnaHQgPSAxOwogCiB2b2lkIFBvcHVwTGlzdEJveDo6cGFpbnRSb3coR3JhcGhpY3ND
b250ZXh0KiBnYywgY29uc3QgSW50UmVjdCYgcmVjdCwgaW50IHJvd0luZGV4KQpAQCAtOTE0LDEw
ICs5NDgsMTAgQEAgdm9pZCBQb3B1cExpc3RCb3g6OnBhaW50Um93KEdyYXBoaWNzQ29udGV4dCog
Z2MsIGNvbnN0IEludFJlY3QmIHJlY3QsIGludCByb3dJbmQKIAogICAgIGlmIChtX3BvcHVwQ2xp
ZW50LT5pdGVtSXNTZXBhcmF0b3Iocm93SW5kZXgpKSB7CiAgICAgICAgIEludFJlY3Qgc2VwYXJh
dG9yUmVjdCgKLSAgICAgICAgICAgIHJvd1JlY3QueCgpICsgc2VwYXJhdG9yUGFkZGluZywKKyAg
ICAgICAgICAgIHJvd1JlY3QueCgpLAogICAgICAgICAgICAgcm93UmVjdC55KCkgKyAocm93UmVj
dC5oZWlnaHQoKSAtIHNlcGFyYXRvckhlaWdodCkgLyAyLAotICAgICAgICAgICAgcm93UmVjdC53
aWR0aCgpIC0gMiAqIHNlcGFyYXRvclBhZGRpbmcsIHNlcGFyYXRvckhlaWdodCk7Ci0gICAgICAg
IGdjLT5maWxsUmVjdChzZXBhcmF0b3JSZWN0LCB0ZXh0Q29sb3IsIENvbG9yU3BhY2VEZXZpY2VS
R0IpOworICAgICAgICAgICAgcm93UmVjdC53aWR0aCgpLCBzZXBhcmF0b3JIZWlnaHQpOworICAg
ICAgICBnYy0+ZmlsbFJlY3Qoc2VwYXJhdG9yUmVjdCwgQ29sb3I6OmxpZ2h0R3JheSwgQ29sb3JT
cGFjZURldmljZVJHQik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTExMDQsMTMgKzEx
MzgsMTcgQEAgaW50IFBvcHVwTGlzdEJveDo6Z2V0Um93SGVpZ2h0KGludCBpbmRleCkKICAgICBp
ZiAobV9wb3B1cENsaWVudC0+aXRlbVN0eWxlKGluZGV4KS5pc0Rpc3BsYXlOb25lKCkpCiAgICAg
ICAgIHJldHVybiAwOwogCisgICAgLy8gU2VwYXJhdG9yIHJvdyBoZWlnaHQgaXMgdGhlIHNhbWUg
c2l6ZSBhcyBpdHNlbGYuCisgICAgaWYgKG1fcG9wdXBDbGllbnQtPml0ZW1Jc1NlcGFyYXRvcihp
bmRleCkpCisgICAgICAgIHJldHVybiBzZXBhcmF0b3JIZWlnaHQ7CisKICAgICBTdHJpbmcgaWNv
biA9IG1fcG9wdXBDbGllbnQtPml0ZW1JY29uKGluZGV4KTsKICAgICBSZWZQdHI8SW1hZ2U+IGlt
YWdlKEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZShpY29uLnV0ZjgoKS5kYXRhKCkpKTsKIAog
ICAgIGludCBmb250SGVpZ2h0ID0gZ2V0Um93Rm9udChpbmRleCkuZm9udE1ldHJpY3MoKS5oZWln
aHQoKTsKICAgICBpbnQgaWNvbkhlaWdodCA9IChpbWFnZSAmJiAhaW1hZ2UtPmlzTnVsbCgpKSA/
IGltYWdlLT5yZWN0KCkuaGVpZ2h0KCkgOiAwOwogCi0gICAgcmV0dXJuIG1heChmb250SGVpZ2h0
LCBpY29uSGVpZ2h0KTsKKyAgICByZXR1cm4gbWF4KGZvbnRIZWlnaHQsIGljb25IZWlnaHQpICsg
bV9wb3B1cENsaWVudC0+bWVudVN0eWxlKCkucGFkZGluZ0xpbmVIZWlnaHQoKSoyOwogfQogCiBJ
bnRSZWN0IFBvcHVwTGlzdEJveDo6Z2V0Um93Qm91bmRzKGludCBpbmRleCkKQEAgLTEyNjcsMTMg
KzEzMDUsMTQgQEAgdm9pZCBQb3B1cExpc3RCb3g6OnVwZGF0ZUZyb21FbGVtZW50KCkKIAogdm9p
ZCBQb3B1cExpc3RCb3g6OmxheW91dCgpCiB7Ci0gICAgYm9vbCBpc1JpZ2h0QWxpZ25lZCA9IG1f
cG9wdXBDbGllbnQtPm1lbnVTdHlsZSgpLnRleHREaXJlY3Rpb24oKSA9PSBSVEw7Ci0gICAgCisg
ICAgUG9wdXBNZW51U3R5bGUgbWVudVN0eWxlID0gbV9wb3B1cENsaWVudC0+bWVudVN0eWxlKCk7
CisgICAgYm9vbCBpc1JpZ2h0QWxpZ25lZCA9IG1lbnVTdHlsZS50ZXh0RGlyZWN0aW9uKCkgPT0g
UlRMOworCiAgICAgLy8gU2l6ZSBvdXIgY2hpbGQgaXRlbXMuCiAgICAgaW50IGJhc2VXaWR0aCA9
IDA7CiAgICAgaW50IHBhZGRpbmdXaWR0aCA9IDA7CiAgICAgaW50IGxpbmVFbmRQYWRkaW5nV2lk
dGggPSAwOwotICAgIGludCB5ID0gMDsKKyAgICBpbnQgeSA9IG1lbnVTdHlsZS5wYWRkaW5nSGVp
Z2h0KCk7IC8vIFRvcCBwYWRkaW5nCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1JdGVtcygp
OyArK2kpIHsKICAgICAgICAgLy8gUGxhY2UgdGhlIGl0ZW0gdmVydGljYWxseS4KICAgICAgICAg
bV9pdGVtc1tpXS0+eU9mZnNldCA9IHk7CkBAIC0xMzEwLDcgKzEzNDksNyBAQCB2b2lkIFBvcHVw
TGlzdEJveDo6bGF5b3V0KCkKICAgICB9CiAKICAgICAvLyBDYWxjdWxhdGUgc2Nyb2xsIGJhciB3
aWR0aC4KLSAgICBpbnQgd2luZG93SGVpZ2h0ID0gMDsKKyAgICBpbnQgd2luZG93SGVpZ2h0ID0g
bWVudVN0eWxlLnBhZGRpbmdIZWlnaHQoKTsgLy8gVG9wIHBhZGRpbmcgaGVpZ2h0cyBpcyBhZGRl
ZCBmaXJzdC4KICAgICBtX3Zpc2libGVSb3dzID0gbWluKG51bUl0ZW1zKCksIGtNYXhWaXNpYmxl
Um93cyk7CiAKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fdmlzaWJsZVJvd3M7ICsraSkgewpA
QCAtMTMyNCw2ICsxMzYzLDcgQEAgdm9pZCBQb3B1cExpc3RCb3g6OmxheW91dCgpCiAKICAgICAg
ICAgd2luZG93SGVpZ2h0ICs9IHJvd0hlaWdodDsKICAgICB9CisgICAgd2luZG93SGVpZ2h0ICs9
IG1lbnVTdHlsZS5wYWRkaW5nSGVpZ2h0KCk7IC8vIEJvdHRvbSBwYWRkaW5nIGhlaWdodHMgaXMg
YWRkZWQgbGFzdC4KIAogICAgIC8vIFNldCBvdXIgd2lkZ2V0IGFuZCBzY3JvbGxhYmxlIGNvbnRl
bnRzIHNpemVzLgogICAgIGludCBzY3JvbGxiYXJXaWR0aCA9IDA7CkBAIC0xMzU0LDcgKzEzOTQs
NyBAQCB2b2lkIFBvcHVwTGlzdEJveDo6bGF5b3V0KCkKICAgICB9CiAKICAgICByZXNpemUod2lu
ZG93V2lkdGgsIHdpbmRvd0hlaWdodCk7Ci0gICAgc2V0Q29udGVudHNTaXplKEludFNpemUoY29u
dGVudFdpZHRoLCBnZXRSb3dCb3VuZHMobnVtSXRlbXMoKSAtIDEpLm1heFkoKSkpOworICAgIHNl
dENvbnRlbnRzU2l6ZShJbnRTaXplKGNvbnRlbnRXaWR0aCwgZ2V0Um93Qm91bmRzKG51bUl0ZW1z
KCkgLSAxKS5tYXhZKCkgKyBtZW51U3R5bGUucGFkZGluZ0hlaWdodCgpKSk7CiAKICAgICBpZiAo
aG9zdFdpbmRvdygpKQogICAgICAgICBzY3JvbGxUb1JldmVhbFNlbGVjdGlvbigpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAKaW5kZXggZjE1NTYxNC4uNzMz
YWNhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCkBA
IC00MjgsNyArNDI4LDcgQEAgUG9wdXBNZW51U3R5bGUgUmVuZGVyTWVudUxpc3Q6Oml0ZW1TdHls
ZSh1bnNpZ25lZCBsaXN0SW5kZXgpIGNvbnN0CiAgICAgRWxlbWVudCogZWxlbWVudCA9IGxpc3RJ
dGVtc1tsaXN0SW5kZXhdOwogICAgIAogICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9IGVsZW1lbnQt
PnJlbmRlclN0eWxlKCkgPyBlbGVtZW50LT5yZW5kZXJTdHlsZSgpIDogZWxlbWVudC0+Y29tcHV0
ZWRTdHlsZSgpOwotICAgIHJldHVybiBzdHlsZSA/IFBvcHVwTWVudVN0eWxlKHN0eWxlLT52aXNp
dGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIGl0ZW1CYWNrZ3JvdW5kQ29sb3Io
bGlzdEluZGV4KSwgc3R5bGUtPmZvbnQoKSwgc3R5bGUtPnZpc2liaWxpdHkoKSA9PSBWSVNJQkxF
LCBzdHlsZS0+ZGlzcGxheSgpID09IE5PTkUsIHN0eWxlLT50ZXh0SW5kZW50KCksIHN0eWxlLT5k
aXJlY3Rpb24oKSwgc3R5bGUtPnVuaWNvZGVCaWRpKCkgPT0gT3ZlcnJpZGUpIDogbWVudVN0eWxl
KCk7CisgICAgcmV0dXJuIHN0eWxlID8gUG9wdXBNZW51U3R5bGUoc3R5bGUtPnZpc2l0ZWREZXBl
bmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSwgaXRlbUJhY2tncm91bmRDb2xvcihsaXN0SW5k
ZXgpLCBzdHlsZS0+Zm9udCgpLCBzdHlsZS0+dmlzaWJpbGl0eSgpID09IFZJU0lCTEUsIHN0eWxl
LT5kaXNwbGF5KCkgPT0gTk9ORSwgc3R5bGUtPnRleHRJbmRlbnQoKSwgc3R5bGUtPmRpcmVjdGlv
bigpLCBzdHlsZS0+dW5pY29kZUJpZGkoKSA9PSBPdmVycmlkZSwgMCwgMCkgOiBtZW51U3R5bGUo
KTsKIH0KIAogQ29sb3IgUmVuZGVyTWVudUxpc3Q6Oml0ZW1CYWNrZ3JvdW5kQ29sb3IodW5zaWdu
ZWQgbGlzdEluZGV4KSBjb25zdApAQCAtNDU4LDcgKzQ1OCw3IEBAIENvbG9yIFJlbmRlck1lbnVM
aXN0OjppdGVtQmFja2dyb3VuZENvbG9yKHVuc2lnbmVkIGxpc3RJbmRleCkgY29uc3QKIFBvcHVw
TWVudVN0eWxlIFJlbmRlck1lbnVMaXN0OjptZW51U3R5bGUoKSBjb25zdAogewogICAgIFJlbmRl
clN0eWxlKiBzID0gbV9pbm5lckJsb2NrID8gbV9pbm5lckJsb2NrLT5zdHlsZSgpIDogc3R5bGUo
KTsKLSAgICByZXR1cm4gUG9wdXBNZW51U3R5bGUocy0+dmlzaXRlZERlcGVuZGVudENvbG9yKENT
U1Byb3BlcnR5Q29sb3IpLCBzLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kQ29sb3IpLCBzLT5mb250KCksIHMtPnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFLCBzLT5k
aXNwbGF5KCkgPT0gTk9ORSwgcy0+dGV4dEluZGVudCgpLCBzdHlsZSgpLT5kaXJlY3Rpb24oKSwg
c3R5bGUoKS0+dW5pY29kZUJpZGkoKSA9PSBPdmVycmlkZSk7CisgICAgcmV0dXJuIFBvcHVwTWVu
dVN0eWxlKHMtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSwgcy0+dmlz
aXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKSwgcy0+Zm9udCgp
LCBzLT52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSwgcy0+ZGlzcGxheSgpID09IE5PTkUsIHMtPnRl
eHRJbmRlbnQoKSwgc3R5bGUoKS0+ZGlyZWN0aW9uKCksIHN0eWxlKCktPnVuaWNvZGVCaWRpKCkg
PT0gT3ZlcnJpZGUsIDAsIDApOwogfQogCiBIb3N0V2luZG93KiBSZW5kZXJNZW51TGlzdDo6aG9z
dFdpbmRvdygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCmluZGV4IGI2MGY3ZTEuLmJlM2NiMmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmds
ZUxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJv
bFNpbmdsZUxpbmUuY3BwCkBAIC05MzgsNyArOTM4LDcgQEAgUG9wdXBNZW51U3R5bGUgUmVuZGVy
VGV4dENvbnRyb2xTaW5nbGVMaW5lOjppdGVtU3R5bGUodW5zaWduZWQpIGNvbnN0CiAKIFBvcHVw
TWVudVN0eWxlIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6bWVudVN0eWxlKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gUG9wdXBNZW51U3R5bGUoc3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENv
bG9yKENTU1Byb3BlcnR5Q29sb3IpLCBzdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpLCBzdHlsZSgpLT5mb250KCksIHN0eWxlKCktPnZpc2li
aWxpdHkoKSA9PSBWSVNJQkxFLCBzdHlsZSgpLT5kaXNwbGF5KCkgPT0gTk9ORSwgc3R5bGUoKS0+
dGV4dEluZGVudCgpLCBzdHlsZSgpLT5kaXJlY3Rpb24oKSwgc3R5bGUoKS0+dW5pY29kZUJpZGko
KSA9PSBPdmVycmlkZSk7CisgICAgcmV0dXJuIFBvcHVwTWVudVN0eWxlKHN0eWxlKCktPnZpc2l0
ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSwgc3R5bGUoKS0+dmlzaXRlZERlcGVu
ZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKSwgc3R5bGUoKS0+Zm9udCgpLCBz
dHlsZSgpLT52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSwgc3R5bGUoKS0+ZGlzcGxheSgpID09IE5P
TkUsIHN0eWxlKCktPnRleHRJbmRlbnQoKSwgc3R5bGUoKS0+ZGlyZWN0aW9uKCksIHN0eWxlKCkt
PnVuaWNvZGVCaWRpKCkgPT0gT3ZlcnJpZGUsIDAsIDApOwogfQogCiBpbnQgUmVuZGVyVGV4dENv
bnRyb2xTaW5nbGVMaW5lOjpjbGllbnRJbnNldExlZnQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwppbmRleCBiYTEyYzYyLi4zYmZjMTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE0IEBACisyMDExLTA0LTE0ICBOYW9raSBUYWthbm8gIDx0YWthbm8ubmFv
a2lAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFtDaHJvbWl1bV1VSSBwb2xpc2hlcyBhbmQgdHdlYWtzIHRvIEF1dG9maWxsIGRyb3Bk
b3duIG1lbnUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD01ODUwNQorICAgICAgICBodHRwOi8vY29kZS5nb29nbGUuY29tL3AvY2hyb21pdW0vaXNzdWVz
L2RldGFpbD9pZD01MTA3NworCisgICAgICAgICogc3JjL0F1dG9GaWxsUG9wdXBNZW51Q2xpZW50
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6QXV0b0ZpbGxQb3B1cE1lbnVDbGllbnQ6OmluaXRpYWxp
emUpOiBTZXQgcGFkZGluZyBoZWlnaHRzIGZvciBhdXRvZmlsbCBwb3B1cCB3aW5kb3cuCisKIDIw
MTEtMDQtMTQgIEFkcmllbm5lIFdhbGtlciAgPGVubmVAZ29vZ2xlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBKYW1lcyBSb2JpbnNvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0F1dG9GaWxsUG9wdXBNZW51Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0F1dG9GaWxsUG9wdXBNZW51Q2xpZW50LmNwcAppbmRleCBkMDRjNTdjLi4xYjEw
MTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9BdXRvRmlsbFBvcHVw
TWVudUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXV0b0ZpbGxQ
b3B1cE1lbnVDbGllbnQuY3BwCkBAIC00OCw2ICs0OCw5IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorc3RhdGljIGNvbnN0IGludCBrUGFkZGluZ0hl
aWdodCA9IDQ7IC8vIFBhZGRpbmcgaGVpZ2h0IHB1dCBhdCB0aGUgdG9wIGFuZCBib3R0b20gb2Yg
d2luZG93Lgorc3RhdGljIGNvbnN0IGludCBrUGFkZGluZ0xpbmVIZWlnaHQ9IDM7IC8vIFBhZGRp
bmcgTGluZSBoZWlnaHQgcHV0IGF0IHRoZSB0b3AgYW5kIGJvdHRvbSBvZiBlYWNoIGxpbmUuCisK
IEF1dG9GaWxsUG9wdXBNZW51Q2xpZW50OjpBdXRvRmlsbFBvcHVwTWVudUNsaWVudCgpCiAgICAg
OiBtX3NlcGFyYXRvckluZGV4KC0xKQogICAgICwgbV9zZWxlY3RlZEluZGV4KC0xKQpAQCAtMjkx
LDkgKzI5NCwxNiBAQCB2b2lkIEF1dG9GaWxsUG9wdXBNZW51Q2xpZW50Ojppbml0aWFsaXplKAog
ICAgIHJlZ3VsYXJGb250LnVwZGF0ZSh0ZXh0RmllbGQtPmRvY3VtZW50KCktPnN0eWxlU2VsZWN0
b3IoKS0+Zm9udFNlbGVjdG9yKCkpOwogICAgIC8vIFRoZSBkaXJlY3Rpb24gb2YgdGV4dCBpbiBw
b3B1cCBtZW51IGlzIHNldCB0aGUgc2FtZSBhcyB0aGUgZGlyZWN0aW9uIG9mCiAgICAgLy8gdGhl
IGlucHV0IGVsZW1lbnQ6IHRleHRGaWVsZC4KLSAgICBtX3JlZ3VsYXJTdHlsZS5zZXQobmV3IFBv
cHVwTWVudVN0eWxlKENvbG9yOjpibGFjaywgQ29sb3I6OndoaXRlLCByZWd1bGFyRm9udCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUsIGZhbHNlLCBMZW5n
dGgoV2ViQ29yZTo6Rml4ZWQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdGV4dEZpZWxkLT5yZW5kZXJlcigpLT5zdHlsZSgpLT5kaXJlY3Rpb24oKSwgdGV4dEZp
ZWxkLT5yZW5kZXJlcigpLT5zdHlsZSgpLT51bmljb2RlQmlkaSgpID09IE92ZXJyaWRlKSk7Cisg
ICAgbV9yZWd1bGFyU3R5bGUuc2V0KG5ldyBQb3B1cE1lbnVTdHlsZShDb2xvcjo6YmxhY2ssCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xvcjo6d2hpdGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWd1bGFyRm9udCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIExlbmd0aChXZWJDb3JlOjpGaXhlZCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0RmllbGQtPnJlbmRlcmVyKCkt
PnN0eWxlKCktPmRpcmVjdGlvbigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGV4dEZpZWxkLT5yZW5kZXJlcigpLT5zdHlsZSgpLT51bmljb2RlQmlkaSgpID09
IE92ZXJyaWRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga1Bh
ZGRpbmdIZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBr
UGFkZGluZ0xpbmVIZWlnaHQpKTsKIAogICAgIEZvbnREZXNjcmlwdGlvbiB3YXJuaW5nRm9udERl
c2NyaXB0aW9uID0gcmVndWxhckZvbnQuZm9udERlc2NyaXB0aW9uKCk7CiAgICAgd2FybmluZ0Zv
bnREZXNjcmlwdGlvbi5zZXRJdGFsaWModHJ1ZSk7CkBAIC0zMDYsNyArMzE2LDkgQEAgdm9pZCBB
dXRvRmlsbFBvcHVwTWVudUNsaWVudDo6aW5pdGlhbGl6ZSgKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1fcmVndWxhclN0eWxlLT5pc0Rpc3BsYXlOb25lKCksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3JlZ3VsYXJTdHlsZS0+
dGV4dEluZGVudCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bV9yZWd1bGFyU3R5bGUtPnRleHREaXJlY3Rpb24oKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1fcmVndWxhclN0eWxlLT5oYXNUZXh0RGlyZWN0aW9uT3ZlcnJp
ZGUoKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9yZWd1
bGFyU3R5bGUtPmhhc1RleHREaXJlY3Rpb25PdmVycmlkZSgpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAga1BhZGRpbmdIZWlnaHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBrUGFkZGluZ0xpbmVIZWlnaHQpKTsKIH0KIAogdm9p
ZCBBdXRvRmlsbFBvcHVwTWVudUNsaWVudDo6c2V0U3VnZ2VzdGlvbnMoY29uc3QgV2ViVmVjdG9y
PFdlYlN0cmluZz4mIG5hbWVzLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89915</attachid>
            <date>2011-04-15 22:10:37 -0700</date>
            <delta_ts>2011-04-17 11:32:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58505-20110415221035.patch</filename>
            <type>text/plain</type>
            <size>12428</size>
            <attacher name="Naoki Takano">honten</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODM5MjcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiZGVlZTgyZjQzYjllOTc0
YjNjMzA0MDM0MDRjOTUxNzMwODVmYWI4Li41N2U1ZTJlMTE2ZWIyZTFiN2ExNDAwZmQ1NjlmMjk1
ZjNmY2U1ZTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEtMDQtMTUgIE5hb2tp
IFRha2FubyAgPHRha2Fuby5uYW9raUBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0Nocm9taXVtXVVJIHBvbGlzaGVzIGFuZCB0d2Vh
a3MgdG8gQXV0b2ZpbGwgZHJvcGRvd24gbWVudS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTU4NTA1CisgICAgICAgIGh0dHA6Ly9jb2RlLmdvb2dsZS5j
b20vcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTUxMDc3CisKKyAgICAgICAgTm8gbmV3IHRl
c3RzLiBCZWNhdXNlIHRoaXMgaXMgYXV0b2ZpbGwgbG9va2luZyBwcm9ibGVtIGluIENocm9taXVt
LgorICAgICAgICBBZGQgbV9pc0F1dG9GaWxsU3R5bGUgZm9yIFBvcHVwTWVudVN0eWxlIHRvIGNo
YW5nZSBwb3B1cCBzdHlsZSBjaGFuZ2UuCisgICAgICAgIFB1dCBrTGluZVBhZGRpbmdIZWlnaHQg
YXQgdGhlIHRvcCBhbmQgYm90dG9tIG9mIGVhY2ggbGluZSBpZiBpc0F1dG9GaWxsU3R5bGUoKS4K
KyAgICAgICAgQ2hhbmdlIHNlcGFyYXRvciBjb2xvciB0byAjZGNkY2RjIGFuZCByZW1vdmUgc3Bh
cmF0b3JQYWRkaW5nIGF0IHRoZSBlZGdlIGlmIGlzQXV0b0ZpbGxTeWxlKCkuCisgICAgICAgIENo
YW5nZSB0aGUgbGluZSBoZWlnaHQgb2Ygc2VwYXJhdG9yIGFzIG9ubHkgdGhlIHBpZWNlLgorCisg
ICAgICAgICogcGxhdGZvcm0vUG9wdXBNZW51U3R5bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBv
cHVwTWVudVN0eWxlOjpQb3B1cE1lbnVTdHlsZSk6IEFkZCBtX2lzQXV0b2ZpbGxTdHlsZS4KKyAg
ICAgICAgKFdlYkNvcmU6OlBvcHVwTWVudVN0eWxlOjppc0F1dG9maWxsU3R5bGUpOiBBZGQgdG8g
Y2hhbmdlIHRoZSBzdHlsZSBhY2NvcmRpbmcgdG8gdGhlIHJldHVybiB2YWx1ZS4KKyAgICAgICAg
KiBwbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQb3B1cExpc3RCb3g6OnBhaW50Um93KTpDaGFuZ2UgdGhlIHNlcGFyYXRvciBjb2xvciB0
byAjZGNkY2RjLgorICAgICAgICBDaGFuZ2UgdGhlIGVkZ2UgcGFkZGluZyBhY2NvcmRpbmcgdG8g
aXNBdXRvZmlsbFN0eWxlKCkuCisgICAgICAgIChXZWJDb3JlOjpQb3B1cExpc3RCb3g6OmdldFJv
d0hlaWdodCk6IEFkZCBrTGluZUhlaWdodE1hcmdpbioyIGZvciBlYWNoIGxpbmUgaGVpZ2h0Lgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJNZW51TGlzdDo6aXRlbVN0eWxlKTogUGFzcyBmYWxzZSBiZWNhdXNlIHRoaXMgaXMg
bm90IEF1dG9maWxsLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWVudUxpc3Q6Om1lbnVTdHls
ZSk6IFBhc3MgZmFsc2UgYmVjYXVzZSB0aGlzIGlzIG5vdCBBdXRvZmlsbC4KKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6bWVudVN0eWxlKTogUGFzcyBmYWxzZSBi
ZWNhdXNlIHRoaXMgaXMgbm90IEF1dG9maWxsLgorCiAyMDExLTA0LTE0ICBMdWtlIE1hY3BoZXJz
b24gICA8bWFjcGhlcnNvbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGlt
aXRyaSBHbGF6a292LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUG9wdXBN
ZW51U3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BvcHVwTWVudVN0eWxlLmgKaW5k
ZXggM2NiMzNjYzZhZjJmNzI1OTczNzQ1YmZhYzVmYTc0MmJkMjhiYTA5NS4uNzhkMDFkYmRkY2Jl
NmE3YmQ2YmM2NDNhN2JlZWM4YmU0Y2FjYTI4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUG9wdXBNZW51U3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
b3B1cE1lbnVTdHlsZS5oCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgUG9wdXBNZW51U3R5bGUgewogcHVibGljOgotICAgIFBvcHVwTWVudVN0eWxlKGNvbnN0
IENvbG9yJiBmb3JlZ3JvdW5kLCBjb25zdCBDb2xvciYgYmFja2dyb3VuZCwgY29uc3QgRm9udCYg
Zm9udCwgYm9vbCB2aXNpYmxlLCBib29sIGlzRGlzcGxheU5vbmUsIExlbmd0aCB0ZXh0SW5kZW50
LCBUZXh0RGlyZWN0aW9uIHRleHREaXJlY3Rpb24sIGJvb2wgaGFzVGV4dERpcmVjdGlvbk92ZXJy
aWRlKQorICAgIFBvcHVwTWVudVN0eWxlKGNvbnN0IENvbG9yJiBmb3JlZ3JvdW5kLCBjb25zdCBD
b2xvciYgYmFja2dyb3VuZCwgY29uc3QgRm9udCYgZm9udCwgYm9vbCB2aXNpYmxlLCBib29sIGlz
RGlzcGxheU5vbmUsIExlbmd0aCB0ZXh0SW5kZW50LCBUZXh0RGlyZWN0aW9uIHRleHREaXJlY3Rp
b24sIGJvb2wgaGFzVGV4dERpcmVjdGlvbk92ZXJyaWRlLCBib29sIGlzQXV0b2ZpbGxTdHlsZSkK
ICAgICAgICAgOiBtX2ZvcmVncm91bmRDb2xvcihmb3JlZ3JvdW5kKQogICAgICAgICAsIG1fYmFj
a2dyb3VuZENvbG9yKGJhY2tncm91bmQpCiAgICAgICAgICwgbV9mb250KGZvbnQpCkBAIC00NCw5
ICs0NCwxMCBAQCBwdWJsaWM6CiAgICAgICAgICwgbV90ZXh0SW5kZW50KHRleHRJbmRlbnQpCiAg
ICAgICAgICwgbV90ZXh0RGlyZWN0aW9uKHRleHREaXJlY3Rpb24pCiAgICAgICAgICwgbV9oYXNU
ZXh0RGlyZWN0aW9uT3ZlcnJpZGUoaGFzVGV4dERpcmVjdGlvbk92ZXJyaWRlKQorICAgICAgICAs
IG1faXNBdXRvZmlsbFN0eWxlKGlzQXV0b2ZpbGxTdHlsZSkKICAgICB7CiAgICAgfQotICAgIAor
CiAgICAgY29uc3QgQ29sb3ImIGZvcmVncm91bmRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fZm9y
ZWdyb3VuZENvbG9yOyB9CiAgICAgY29uc3QgQ29sb3ImIGJhY2tncm91bmRDb2xvcigpIGNvbnN0
IHsgcmV0dXJuIG1fYmFja2dyb3VuZENvbG9yOyB9CiAgICAgY29uc3QgRm9udCYgZm9udCgpIGNv
bnN0IHsgcmV0dXJuIG1fZm9udDsgfQpAQCAtNTUsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgTGVu
Z3RoIHRleHRJbmRlbnQoKSBjb25zdCB7IHJldHVybiBtX3RleHRJbmRlbnQ7IH0KICAgICBUZXh0
RGlyZWN0aW9uIHRleHREaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3RleHREaXJlY3Rpb247
IH0KICAgICBib29sIGhhc1RleHREaXJlY3Rpb25PdmVycmlkZSgpIGNvbnN0IHsgcmV0dXJuIG1f
aGFzVGV4dERpcmVjdGlvbk92ZXJyaWRlOyB9Ci0KKyAgICBib29sIGlzQXV0b2ZpbGxTdHlsZSgp
IGNvbnN0IHsgcmV0dXJuIG1faXNBdXRvZmlsbFN0eWxlOyB9CiBwcml2YXRlOgogICAgIENvbG9y
IG1fZm9yZWdyb3VuZENvbG9yOwogICAgIENvbG9yIG1fYmFja2dyb3VuZENvbG9yOwpAQCAtNjUs
NiArNjYsNyBAQCBwcml2YXRlOgogICAgIExlbmd0aCBtX3RleHRJbmRlbnQ7CiAgICAgVGV4dERp
cmVjdGlvbiBtX3RleHREaXJlY3Rpb247CiAgICAgYm9vbCBtX2hhc1RleHREaXJlY3Rpb25PdmVy
cmlkZTsKKyAgICBib29sIG1faXNBdXRvZmlsbFN0eWxlOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9w
dXBNZW51Q2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9w
dXBNZW51Q2hyb21pdW0uY3BwCmluZGV4IGFmOTdlY2Y0Y2VjMjIwOTUxY2Y0ZWY0MDMxZmM1ZWI4
YWU4NjQ0OWEuLjI0YmY4NmQ4YmYxZTM3ZjRmNGEyMDZlZTM2NGFjMjc1NjhlMjQ1M2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVt
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJv
bWl1bS5jcHAKQEAgLTc1LDYgKzc1LDcgQEAgc3RhdGljIGNvbnN0IGludCBrVGV4dFRvTGFiZWxQ
YWRkaW5nID0gMTA7CiBzdGF0aWMgY29uc3QgaW50IGtMYWJlbFRvSWNvblBhZGRpbmcgPSA1Owog
c3RhdGljIGNvbnN0IGludCBrTWluRW5kT2ZMaW5lUGFkZGluZyA9IDI7CiBzdGF0aWMgY29uc3Qg
VGltZVN0YW1wIGtUeXBlQWhlYWRUaW1lb3V0TXMgPSAxMDAwOworc3RhdGljIGNvbnN0IGludCBr
TGluZVBhZGRpbmdIZWlnaHQgPSAzOyAvLyBQYWRkaW5nIGhlaWdodCBwdXQgYXQgdGhlIHRvcCBh
bmQgYm90dG9tIG9mIGVhY2ggbGluZS4KIAogLy8gVGhlIHNldHRpbmdzIHVzZWQgZm9yIHRoZSBk
cm9wIGRvd24gbWVudS4KIC8vIFRoaXMgaXMgdGhlIGRlbGVnYXRlIHVzZWQgaWYgbm9uZSBpcyBw
cm92aWRlZC4KQEAgLTkxMiwxMiArOTEzLDE1IEBAIHZvaWQgUG9wdXBMaXN0Qm94OjpwYWludFJv
dyhHcmFwaGljc0NvbnRleHQqIGdjLCBjb25zdCBJbnRSZWN0JiByZWN0LCBpbnQgcm93SW5kCiAK
ICAgICBnYy0+ZmlsbFJlY3Qocm93UmVjdCwgYmFja0NvbG9yLCBDb2xvclNwYWNlRGV2aWNlUkdC
KTsKIAorICAgIC8vIEl0IGRvZXNuJ3QgbG9vayBnb29kIGJ1dCBBdXRvZmlsbCByZXF1aXJlcyBz
cGVjaWFsIHN0eWxlIGZvciBzZXBhcmF0b3IuCisgICAgLy8gQXV0b2ZpbGwgZG9lc24ndCBoYXZl
IHBhZGRpbmcgYW5kICNkY2RjZGMgY29sb3IuCiAgICAgaWYgKG1fcG9wdXBDbGllbnQtPml0ZW1J
c1NlcGFyYXRvcihyb3dJbmRleCkpIHsKKyAgICAgICAgaW50IHBhZGRpbmcgPSBzdHlsZS5pc0F1
dG9maWxsU3R5bGUoKSA/IDAgOiBzZXBhcmF0b3JQYWRkaW5nOwogICAgICAgICBJbnRSZWN0IHNl
cGFyYXRvclJlY3QoCi0gICAgICAgICAgICByb3dSZWN0LngoKSArIHNlcGFyYXRvclBhZGRpbmcs
CisgICAgICAgICAgICByb3dSZWN0LngoKSArIHBhZGRpbmcsCiAgICAgICAgICAgICByb3dSZWN0
LnkoKSArIChyb3dSZWN0LmhlaWdodCgpIC0gc2VwYXJhdG9ySGVpZ2h0KSAvIDIsCi0gICAgICAg
ICAgICByb3dSZWN0LndpZHRoKCkgLSAyICogc2VwYXJhdG9yUGFkZGluZywgc2VwYXJhdG9ySGVp
Z2h0KTsKLSAgICAgICAgZ2MtPmZpbGxSZWN0KHNlcGFyYXRvclJlY3QsIHRleHRDb2xvciwgQ29s
b3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAgICByb3dSZWN0LndpZHRoKCkgLSAyICogcGFk
ZGluZywgc2VwYXJhdG9ySGVpZ2h0KTsKKyAgICAgICAgZ2MtPmZpbGxSZWN0KHNlcGFyYXRvclJl
Y3QsIHN0eWxlLmlzQXV0b2ZpbGxTdHlsZSgpID8gQ29sb3IoMHhkYywgMHhkYywgMHhkYykgOiB0
ZXh0Q29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC0xMTA0LDEzICsxMTA4LDE4IEBAIGludCBQb3B1cExpc3RCb3g6OmdldFJvd0hlaWdodChp
bnQgaW5kZXgpCiAgICAgaWYgKG1fcG9wdXBDbGllbnQtPml0ZW1TdHlsZShpbmRleCkuaXNEaXNw
bGF5Tm9uZSgpKQogICAgICAgICByZXR1cm4gMDsKIAorICAgIC8vIFNlcGFyYXRvciByb3cgaGVp
Z2h0IGlzIHRoZSBzYW1lIHNpemUgYXMgaXRzZWxmLgorICAgIGlmIChtX3BvcHVwQ2xpZW50LT5p
dGVtSXNTZXBhcmF0b3IoaW5kZXgpKQorICAgICAgICByZXR1cm4gc2VwYXJhdG9ySGVpZ2h0Owor
CiAgICAgU3RyaW5nIGljb24gPSBtX3BvcHVwQ2xpZW50LT5pdGVtSWNvbihpbmRleCk7CiAgICAg
UmVmUHRyPEltYWdlPiBpbWFnZShJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoaWNvbi51dGY4
KCkuZGF0YSgpKSk7CiAKICAgICBpbnQgZm9udEhlaWdodCA9IGdldFJvd0ZvbnQoaW5kZXgpLmZv
bnRNZXRyaWNzKCkuaGVpZ2h0KCk7CiAgICAgaW50IGljb25IZWlnaHQgPSAoaW1hZ2UgJiYgIWlt
YWdlLT5pc051bGwoKSkgPyBpbWFnZS0+cmVjdCgpLmhlaWdodCgpIDogMDsKIAotICAgIHJldHVy
biBtYXgoZm9udEhlaWdodCwgaWNvbkhlaWdodCk7CisgICAgaW50IGxpbmVQYWRkaW5nSGVpZ2h0
ID0gbV9wb3B1cENsaWVudC0+bWVudVN0eWxlKCkuaXNBdXRvZmlsbFN0eWxlKCkgPyBrTGluZVBh
ZGRpbmdIZWlnaHQgOiAwOworICAgIHJldHVybiBtYXgoZm9udEhlaWdodCwgaWNvbkhlaWdodCkg
KyBsaW5lUGFkZGluZ0hlaWdodCAqIDI7CiB9CiAKIEludFJlY3QgUG9wdXBMaXN0Qm94OjpnZXRS
b3dCb3VuZHMoaW50IGluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck1lbnVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51
TGlzdC5jcHAKaW5kZXggZjE1NTYxNGE4ZTM3M2E2YWNiNjljNzY4NzViNGY5YjUwYmIyM2UzZS4u
YmIyM2Y5ZjVhNGM3M2UxMjY1ZDUwOTBmYmMwMzUxNTVlMmM0MTkzOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCkBAIC00MjgsNyArNDI4LDcgQEAgUG9w
dXBNZW51U3R5bGUgUmVuZGVyTWVudUxpc3Q6Oml0ZW1TdHlsZSh1bnNpZ25lZCBsaXN0SW5kZXgp
IGNvbnN0CiAgICAgRWxlbWVudCogZWxlbWVudCA9IGxpc3RJdGVtc1tsaXN0SW5kZXhdOwogICAg
IAogICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9IGVsZW1lbnQtPnJlbmRlclN0eWxlKCkgPyBlbGVt
ZW50LT5yZW5kZXJTdHlsZSgpIDogZWxlbWVudC0+Y29tcHV0ZWRTdHlsZSgpOwotICAgIHJldHVy
biBzdHlsZSA/IFBvcHVwTWVudVN0eWxlKHN0eWxlLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NT
UHJvcGVydHlDb2xvciksIGl0ZW1CYWNrZ3JvdW5kQ29sb3IobGlzdEluZGV4KSwgc3R5bGUtPmZv
bnQoKSwgc3R5bGUtPnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFLCBzdHlsZS0+ZGlzcGxheSgpID09
IE5PTkUsIHN0eWxlLT50ZXh0SW5kZW50KCksIHN0eWxlLT5kaXJlY3Rpb24oKSwgc3R5bGUtPnVu
aWNvZGVCaWRpKCkgPT0gT3ZlcnJpZGUpIDogbWVudVN0eWxlKCk7CisgICAgcmV0dXJuIHN0eWxl
ID8gUG9wdXBNZW51U3R5bGUoc3R5bGUtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0
eUNvbG9yKSwgaXRlbUJhY2tncm91bmRDb2xvcihsaXN0SW5kZXgpLCBzdHlsZS0+Zm9udCgpLCBz
dHlsZS0+dmlzaWJpbGl0eSgpID09IFZJU0lCTEUsIHN0eWxlLT5kaXNwbGF5KCkgPT0gTk9ORSwg
c3R5bGUtPnRleHRJbmRlbnQoKSwgc3R5bGUtPmRpcmVjdGlvbigpLCBzdHlsZS0+dW5pY29kZUJp
ZGkoKSA9PSBPdmVycmlkZSwgZmFsc2UpIDogbWVudVN0eWxlKCk7CiB9CiAKIENvbG9yIFJlbmRl
ck1lbnVMaXN0OjppdGVtQmFja2dyb3VuZENvbG9yKHVuc2lnbmVkIGxpc3RJbmRleCkgY29uc3QK
QEAgLTQ1OCw3ICs0NTgsNyBAQCBDb2xvciBSZW5kZXJNZW51TGlzdDo6aXRlbUJhY2tncm91bmRD
b2xvcih1bnNpZ25lZCBsaXN0SW5kZXgpIGNvbnN0CiBQb3B1cE1lbnVTdHlsZSBSZW5kZXJNZW51
TGlzdDo6bWVudVN0eWxlKCkgY29uc3QKIHsKICAgICBSZW5kZXJTdHlsZSogcyA9IG1faW5uZXJC
bG9jayA/IG1faW5uZXJCbG9jay0+c3R5bGUoKSA6IHN0eWxlKCk7Ci0gICAgcmV0dXJuIFBvcHVw
TWVudVN0eWxlKHMtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSwgcy0+
dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKSwgcy0+Zm9u
dCgpLCBzLT52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSwgcy0+ZGlzcGxheSgpID09IE5PTkUsIHMt
PnRleHRJbmRlbnQoKSwgc3R5bGUoKS0+ZGlyZWN0aW9uKCksIHN0eWxlKCktPnVuaWNvZGVCaWRp
KCkgPT0gT3ZlcnJpZGUpOworICAgIHJldHVybiBQb3B1cE1lbnVTdHlsZShzLT52aXNpdGVkRGVw
ZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIHMtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihD
U1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciksIHMtPmZvbnQoKSwgcy0+dmlzaWJpbGl0eSgpID09
IFZJU0lCTEUsIHMtPmRpc3BsYXkoKSA9PSBOT05FLCBzLT50ZXh0SW5kZW50KCksIHN0eWxlKCkt
PmRpcmVjdGlvbigpLCBzdHlsZSgpLT51bmljb2RlQmlkaSgpID09IE92ZXJyaWRlLCBmYWxzZSk7
CiB9CiAKIEhvc3RXaW5kb3cqIFJlbmRlck1lbnVMaXN0Ojpob3N0V2luZG93KCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmds
ZUxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2lu
Z2xlTGluZS5jcHAKaW5kZXggYjYwZjdlMTNlZGFiNmQyNGIxZjAyNzY3ODliZjkxZGRhNjM0ODIy
Yi4uNTdjMzQ0ZmQzZmZiYWE5NjI5YmZhN2RkYjIzYTEwOWY3M2YwMDBkYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGlu
ZS5jcHAKQEAgLTkzOCw3ICs5MzgsNyBAQCBQb3B1cE1lbnVTdHlsZSBSZW5kZXJUZXh0Q29udHJv
bFNpbmdsZUxpbmU6Oml0ZW1TdHlsZSh1bnNpZ25lZCkgY29uc3QKIAogUG9wdXBNZW51U3R5bGUg
UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjptZW51U3R5bGUoKSBjb25zdAogewotICAgIHJl
dHVybiBQb3B1cE1lbnVTdHlsZShzdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJv
cGVydHlDb2xvciksIHN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJh
Y2tncm91bmRDb2xvciksIHN0eWxlKCktPmZvbnQoKSwgc3R5bGUoKS0+dmlzaWJpbGl0eSgpID09
IFZJU0lCTEUsIHN0eWxlKCktPmRpc3BsYXkoKSA9PSBOT05FLCBzdHlsZSgpLT50ZXh0SW5kZW50
KCksIHN0eWxlKCktPmRpcmVjdGlvbigpLCBzdHlsZSgpLT51bmljb2RlQmlkaSgpID09IE92ZXJy
aWRlKTsKKyAgICByZXR1cm4gUG9wdXBNZW51U3R5bGUoc3R5bGUoKS0+dmlzaXRlZERlcGVuZGVu
dENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBzdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3Io
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpLCBzdHlsZSgpLT5mb250KCksIHN0eWxlKCktPnZp
c2liaWxpdHkoKSA9PSBWSVNJQkxFLCBzdHlsZSgpLT5kaXNwbGF5KCkgPT0gTk9ORSwgc3R5bGUo
KS0+dGV4dEluZGVudCgpLCBzdHlsZSgpLT5kaXJlY3Rpb24oKSwgc3R5bGUoKS0+dW5pY29kZUJp
ZGkoKSA9PSBPdmVycmlkZSwgZmFsc2UpOwogfQogCiBpbnQgUmVuZGVyVGV4dENvbnRyb2xTaW5n
bGVMaW5lOjpjbGllbnRJbnNldExlZnQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpp
bmRleCBiYTEyYzYyNzU3MDAzZDJmZGI2MWJmMzQ1MGE0MWNkZTUzNDdlMzY2Li5iNjliYTNmNjk3
Njc0MDI1NDUyMDA0MmUwMTA4YjgxMjRjMjM5MmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEzIEBACisyMDExLTA0LTE1ICBOYW9raSBUYWthbm8gIDx0YWthbm8ubmFv
a2lAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFtDaHJvbWl1bV1VSSBwb2xpc2hlcyBhbmQgdHdlYWtzIHRvIEF1dG9maWxsIGRyb3Bk
b3duIG1lbnUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD01ODUwNQorCisgICAgICAgICogc3JjL0F1dG9GaWxsUG9wdXBNZW51Q2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6QXV0b0ZpbGxQb3B1cE1lbnVDbGllbnQ6OmluaXRpYWxpemUpOiBTZXQg
dHJ1ZSBmb3IgaXNBdXRvZmlsbFN0eWxlIGZsYWcuCisKIDIwMTEtMDQtMTQgIEFkcmllbm5lIFdh
bGtlciAgPGVubmVAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBKYW1lcyBSb2Jp
bnNvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0F1dG9GaWxsUG9w
dXBNZW51Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0F1dG9GaWxsUG9w
dXBNZW51Q2xpZW50LmNwcAppbmRleCBkMDRjNTdjYjAxYWYwMDhkZmZlZjkzYWZlMTcyZDFkNGFm
ODI5MDc0Li5mNTI0NTIxZmE1NWRkZDBkM2RkYWQ2Mjg1ODAyYzk1MzU1NDEwNzNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9BdXRvRmlsbFBvcHVwTWVudUNsaWVudC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXV0b0ZpbGxQb3B1cE1lbnVDbGll
bnQuY3BwCkBAIC0yOTEsOSArMjkxLDE1IEBAIHZvaWQgQXV0b0ZpbGxQb3B1cE1lbnVDbGllbnQ6
OmluaXRpYWxpemUoCiAgICAgcmVndWxhckZvbnQudXBkYXRlKHRleHRGaWVsZC0+ZG9jdW1lbnQo
KS0+c3R5bGVTZWxlY3RvcigpLT5mb250U2VsZWN0b3IoKSk7CiAgICAgLy8gVGhlIGRpcmVjdGlv
biBvZiB0ZXh0IGluIHBvcHVwIG1lbnUgaXMgc2V0IHRoZSBzYW1lIGFzIHRoZSBkaXJlY3Rpb24g
b2YKICAgICAvLyB0aGUgaW5wdXQgZWxlbWVudDogdGV4dEZpZWxkLgotICAgIG1fcmVndWxhclN0
eWxlLnNldChuZXcgUG9wdXBNZW51U3R5bGUoQ29sb3I6OmJsYWNrLCBDb2xvcjo6d2hpdGUsIHJl
Z3VsYXJGb250LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1
ZSwgZmFsc2UsIExlbmd0aChXZWJDb3JlOjpGaXhlZCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0ZXh0RmllbGQtPnJlbmRlcmVyKCktPnN0eWxlKCktPmRpcmVj
dGlvbigpLCB0ZXh0RmllbGQtPnJlbmRlcmVyKCktPnN0eWxlKCktPnVuaWNvZGVCaWRpKCkgPT0g
T3ZlcnJpZGUpKTsKKyAgICBtX3JlZ3VsYXJTdHlsZS5zZXQobmV3IFBvcHVwTWVudVN0eWxlKENv
bG9yOjpibGFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENv
bG9yOjp3aGl0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
Z3VsYXJGb250LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGVuZ3RoKFdlYkNvcmU6OkZp
eGVkKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRGaWVs
ZC0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+ZGlyZWN0aW9uKCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0ZXh0RmllbGQtPnJlbmRlcmVyKCktPnN0eWxlKCktPnVu
aWNvZGVCaWRpKCkgPT0gT3ZlcnJpZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0cnVlKSk7CiAKICAgICBGb250RGVzY3JpcHRpb24gd2FybmluZ0ZvbnREZXNj
cmlwdGlvbiA9IHJlZ3VsYXJGb250LmZvbnREZXNjcmlwdGlvbigpOwogICAgIHdhcm5pbmdGb250
RGVzY3JpcHRpb24uc2V0SXRhbGljKHRydWUpOwpAQCAtMzA2LDcgKzMxMiw4IEBAIHZvaWQgQXV0
b0ZpbGxQb3B1cE1lbnVDbGllbnQ6OmluaXRpYWxpemUoCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtX3JlZ3VsYXJTdHlsZS0+aXNEaXNwbGF5Tm9uZSgpLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9yZWd1bGFyU3R5bGUtPnRl
eHRJbmRlbnQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1f
cmVndWxhclN0eWxlLT50ZXh0RGlyZWN0aW9uKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtX3JlZ3VsYXJTdHlsZS0+aGFzVGV4dERpcmVjdGlvbk92ZXJyaWRl
KCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcmVndWxh
clN0eWxlLT5oYXNUZXh0RGlyZWN0aW9uT3ZlcnJpZGUoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRydWUpKTsKIH0KIAogdm9pZCBBdXRvRmlsbFBvcHVwTWVu
dUNsaWVudDo6c2V0U3VnZ2VzdGlvbnMoY29uc3QgV2ViVmVjdG9yPFdlYlN0cmluZz4mIG5hbWVz
LAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89952</attachid>
            <date>2011-04-17 11:32:49 -0700</date>
            <delta_ts>2011-04-18 19:09:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58505-20110417113248.patch</filename>
            <type>text/plain</type>
            <size>13398</size>
            <attacher name="Naoki Takano">honten</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODM5MjcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiZGVlZTgyZjQzYjllOTc0
YjNjMzA0MDM0MDRjOTUxNzMwODVmYWI4Li5iODkwODg4NWRlMGU4OTM2NjgyZTU5YmFkZmJlYjg5
MWRmYzU2NDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTEtMDQtMTUgIE5hb2tp
IFRha2FubyAgPHRha2Fuby5uYW9raUBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0Nocm9taXVtXVVJIHBvbGlzaGVzIGFuZCB0d2Vh
a3MgdG8gQXV0b2ZpbGwgZHJvcGRvd24gbWVudS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTU4NTA1CisgICAgICAgIGh0dHA6Ly9jb2RlLmdvb2dsZS5j
b20vcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTUxMDc3CisKKyAgICAgICAgTm8gbmV3IHRl
c3RzLiBCZWNhdXNlIHRoaXMgaXMgYXV0b2ZpbGwgbG9va2luZyBwcm9ibGVtIGluIENocm9taXVt
LgorICAgICAgICBBZGQgbV9pc0F1dG9GaWxsU3R5bGUgZm9yIFBvcHVwTWVudVN0eWxlIHRvIGNo
YW5nZSBwb3B1cCBzdHlsZSBjaGFuZ2UuCisgICAgICAgIFB1dCBrTGluZVBhZGRpbmdIZWlnaHQg
YXQgdGhlIHRvcCBhbmQgYm90dG9tIG9mIGVhY2ggbGluZSBpZiBpc0F1dG9GaWxsU3R5bGUoKS4K
KyAgICAgICAgQ2hhbmdlIHNlcGFyYXRvciBjb2xvciB0byAjZGNkY2RjIGFuZCByZW1vdmUgc3Bh
cmF0b3JQYWRkaW5nIGF0IHRoZSBlZGdlIGlmIGlzQXV0b0ZpbGxTeWxlKCkuCisgICAgICAgIENo
YW5nZSB0aGUgbGluZSBoZWlnaHQgb2Ygc2VwYXJhdG9yIGFzIG9ubHkgdGhlIHBpZWNlIGlmIGlz
QXV0b0ZpbGxTeWxlKCkuCisgICAgICAgIENoYW5nZSB0aGUgbGFiZWwgZm9udCBzaXplIDAuOCB0
aW1lIHNtYWxsZXIgdGhhbiByZWd1bGFyIGZvbnQgc2l6ZSBpZiBpc0F1dG9GaWxsU3lsZSgpLgor
CisgICAgICAgICogcGxhdGZvcm0vUG9wdXBNZW51U3R5bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlBvcHVwTWVudVN0eWxlOjpQb3B1cE1lbnVTdHlsZSk6IEFkZCBtX2lzQXV0b2ZpbGxTdHlsZS4K
KyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTWVudVN0eWxlOjppc0F1dG9maWxsU3R5bGUpOiBBZGQg
dG8gY2hhbmdlIHRoZSBzdHlsZSBhY2NvcmRpbmcgdG8gdGhlIHJldHVybiB2YWx1ZS4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQb3B1cExpc3RCb3g6OnBhaW50Um93KTpDaGFuZ2UgdGhlIHNlcGFyYXRvciBjb2xv
ciB0byAjZGNkY2RjLgorICAgICAgICBDaGFuZ2UgdGhlIGVkZ2UgcGFkZGluZyBhY2NvcmRpbmcg
dG8gaXNBdXRvZmlsbFN0eWxlKCkuCisgICAgICAgIChXZWJDb3JlOjpQb3B1cExpc3RCb3g6Omdl
dFJvd0hlaWdodCk6IEFkZCBrTGluZUhlaWdodE1hcmdpbioyIGZvciBlYWNoIGxpbmUgaGVpZ2h0
LgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJNZW51TGlzdDo6aXRlbVN0eWxlKTogUGFzcyBmYWxzZSBiZWNhdXNlIHRoaXMg
aXMgbm90IEF1dG9maWxsLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWVudUxpc3Q6Om1lbnVT
dHlsZSk6IFBhc3MgZmFsc2UgYmVjYXVzZSB0aGlzIGlzIG5vdCBBdXRvZmlsbC4KKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6bWVudVN0eWxlKTogUGFzcyBmYWxz
ZSBiZWNhdXNlIHRoaXMgaXMgbm90IEF1dG9maWxsLgorCiAyMDExLTA0LTE0ICBMdWtlIE1hY3Bo
ZXJzb24gICA8bWFjcGhlcnNvbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
RGltaXRyaSBHbGF6a292LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUG9w
dXBNZW51U3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BvcHVwTWVudVN0eWxlLmgK
aW5kZXggM2NiMzNjYzZhZjJmNzI1OTczNzQ1YmZhYzVmYTc0MmJkMjhiYTA5NS4uNzhkMDFkYmRk
Y2JlNmE3YmQ2YmM2NDNhN2JlZWM4YmU0Y2FjYTI4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUG9wdXBNZW51U3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Qb3B1cE1lbnVTdHlsZS5oCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgUG9wdXBNZW51U3R5bGUgewogcHVibGljOgotICAgIFBvcHVwTWVudVN0eWxlKGNv
bnN0IENvbG9yJiBmb3JlZ3JvdW5kLCBjb25zdCBDb2xvciYgYmFja2dyb3VuZCwgY29uc3QgRm9u
dCYgZm9udCwgYm9vbCB2aXNpYmxlLCBib29sIGlzRGlzcGxheU5vbmUsIExlbmd0aCB0ZXh0SW5k
ZW50LCBUZXh0RGlyZWN0aW9uIHRleHREaXJlY3Rpb24sIGJvb2wgaGFzVGV4dERpcmVjdGlvbk92
ZXJyaWRlKQorICAgIFBvcHVwTWVudVN0eWxlKGNvbnN0IENvbG9yJiBmb3JlZ3JvdW5kLCBjb25z
dCBDb2xvciYgYmFja2dyb3VuZCwgY29uc3QgRm9udCYgZm9udCwgYm9vbCB2aXNpYmxlLCBib29s
IGlzRGlzcGxheU5vbmUsIExlbmd0aCB0ZXh0SW5kZW50LCBUZXh0RGlyZWN0aW9uIHRleHREaXJl
Y3Rpb24sIGJvb2wgaGFzVGV4dERpcmVjdGlvbk92ZXJyaWRlLCBib29sIGlzQXV0b2ZpbGxTdHls
ZSkKICAgICAgICAgOiBtX2ZvcmVncm91bmRDb2xvcihmb3JlZ3JvdW5kKQogICAgICAgICAsIG1f
YmFja2dyb3VuZENvbG9yKGJhY2tncm91bmQpCiAgICAgICAgICwgbV9mb250KGZvbnQpCkBAIC00
NCw5ICs0NCwxMCBAQCBwdWJsaWM6CiAgICAgICAgICwgbV90ZXh0SW5kZW50KHRleHRJbmRlbnQp
CiAgICAgICAgICwgbV90ZXh0RGlyZWN0aW9uKHRleHREaXJlY3Rpb24pCiAgICAgICAgICwgbV9o
YXNUZXh0RGlyZWN0aW9uT3ZlcnJpZGUoaGFzVGV4dERpcmVjdGlvbk92ZXJyaWRlKQorICAgICAg
ICAsIG1faXNBdXRvZmlsbFN0eWxlKGlzQXV0b2ZpbGxTdHlsZSkKICAgICB7CiAgICAgfQotICAg
IAorCiAgICAgY29uc3QgQ29sb3ImIGZvcmVncm91bmRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1f
Zm9yZWdyb3VuZENvbG9yOyB9CiAgICAgY29uc3QgQ29sb3ImIGJhY2tncm91bmRDb2xvcigpIGNv
bnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZENvbG9yOyB9CiAgICAgY29uc3QgRm9udCYgZm9udCgp
IGNvbnN0IHsgcmV0dXJuIG1fZm9udDsgfQpAQCAtNTUsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAg
TGVuZ3RoIHRleHRJbmRlbnQoKSBjb25zdCB7IHJldHVybiBtX3RleHRJbmRlbnQ7IH0KICAgICBU
ZXh0RGlyZWN0aW9uIHRleHREaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3RleHREaXJlY3Rp
b247IH0KICAgICBib29sIGhhc1RleHREaXJlY3Rpb25PdmVycmlkZSgpIGNvbnN0IHsgcmV0dXJu
IG1faGFzVGV4dERpcmVjdGlvbk92ZXJyaWRlOyB9Ci0KKyAgICBib29sIGlzQXV0b2ZpbGxTdHls
ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNBdXRvZmlsbFN0eWxlOyB9CiBwcml2YXRlOgogICAgIENv
bG9yIG1fZm9yZWdyb3VuZENvbG9yOwogICAgIENvbG9yIG1fYmFja2dyb3VuZENvbG9yOwpAQCAt
NjUsNiArNjYsNyBAQCBwcml2YXRlOgogICAgIExlbmd0aCBtX3RleHRJbmRlbnQ7CiAgICAgVGV4
dERpcmVjdGlvbiBtX3RleHREaXJlY3Rpb247CiAgICAgYm9vbCBtX2hhc1RleHREaXJlY3Rpb25P
dmVycmlkZTsKKyAgICBib29sIG1faXNBdXRvZmlsbFN0eWxlOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
UG9wdXBNZW51Q2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
UG9wdXBNZW51Q2hyb21pdW0uY3BwCmluZGV4IGFmOTdlY2Y0Y2VjMjIwOTUxY2Y0ZWY0MDMxZmM1
ZWI4YWU4NjQ0OWEuLjc4NWEwZTA0OWI4M2Y5NTVjMGUwMTBmZTFkNDZiYzM0NGRjYzQyYzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9t
aXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVD
aHJvbWl1bS5jcHAKQEAgLTc1LDYgKzc1LDcgQEAgc3RhdGljIGNvbnN0IGludCBrVGV4dFRvTGFi
ZWxQYWRkaW5nID0gMTA7CiBzdGF0aWMgY29uc3QgaW50IGtMYWJlbFRvSWNvblBhZGRpbmcgPSA1
Owogc3RhdGljIGNvbnN0IGludCBrTWluRW5kT2ZMaW5lUGFkZGluZyA9IDI7CiBzdGF0aWMgY29u
c3QgVGltZVN0YW1wIGtUeXBlQWhlYWRUaW1lb3V0TXMgPSAxMDAwOworc3RhdGljIGNvbnN0IGlu
dCBrTGluZVBhZGRpbmdIZWlnaHQgPSAzOyAvLyBQYWRkaW5nIGhlaWdodCBwdXQgYXQgdGhlIHRv
cCBhbmQgYm90dG9tIG9mIGVhY2ggbGluZS4KIAogLy8gVGhlIHNldHRpbmdzIHVzZWQgZm9yIHRo
ZSBkcm9wIGRvd24gbWVudS4KIC8vIFRoaXMgaXMgdGhlIGRlbGVnYXRlIHVzZWQgaWYgbm9uZSBp
cyBwcm92aWRlZC4KQEAgLTkxMiwxMiArOTEzLDE1IEBAIHZvaWQgUG9wdXBMaXN0Qm94OjpwYWlu
dFJvdyhHcmFwaGljc0NvbnRleHQqIGdjLCBjb25zdCBJbnRSZWN0JiByZWN0LCBpbnQgcm93SW5k
CiAKICAgICBnYy0+ZmlsbFJlY3Qocm93UmVjdCwgYmFja0NvbG9yLCBDb2xvclNwYWNlRGV2aWNl
UkdCKTsKIAorICAgIC8vIEl0IGRvZXNuJ3QgbG9vayBnb29kIGJ1dCBBdXRvZmlsbCByZXF1aXJl
cyBzcGVjaWFsIHN0eWxlIGZvciBzZXBhcmF0b3IuCisgICAgLy8gQXV0b2ZpbGwgZG9lc24ndCBo
YXZlIHBhZGRpbmcgYW5kICNkY2RjZGMgY29sb3IuCiAgICAgaWYgKG1fcG9wdXBDbGllbnQtPml0
ZW1Jc1NlcGFyYXRvcihyb3dJbmRleCkpIHsKKyAgICAgICAgaW50IHBhZGRpbmcgPSBzdHlsZS5p
c0F1dG9maWxsU3R5bGUoKSA/IDAgOiBzZXBhcmF0b3JQYWRkaW5nOwogICAgICAgICBJbnRSZWN0
IHNlcGFyYXRvclJlY3QoCi0gICAgICAgICAgICByb3dSZWN0LngoKSArIHNlcGFyYXRvclBhZGRp
bmcsCisgICAgICAgICAgICByb3dSZWN0LngoKSArIHBhZGRpbmcsCiAgICAgICAgICAgICByb3dS
ZWN0LnkoKSArIChyb3dSZWN0LmhlaWdodCgpIC0gc2VwYXJhdG9ySGVpZ2h0KSAvIDIsCi0gICAg
ICAgICAgICByb3dSZWN0LndpZHRoKCkgLSAyICogc2VwYXJhdG9yUGFkZGluZywgc2VwYXJhdG9y
SGVpZ2h0KTsKLSAgICAgICAgZ2MtPmZpbGxSZWN0KHNlcGFyYXRvclJlY3QsIHRleHRDb2xvciwg
Q29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAgICByb3dSZWN0LndpZHRoKCkgLSAyICog
cGFkZGluZywgc2VwYXJhdG9ySGVpZ2h0KTsKKyAgICAgICAgZ2MtPmZpbGxSZWN0KHNlcGFyYXRv
clJlY3QsIHN0eWxlLmlzQXV0b2ZpbGxTdHlsZSgpID8gQ29sb3IoMHhkYywgMHhkYywgMHhkYykg
OiB0ZXh0Q29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC05ODgsNiArOTkyLDE2IEBAIHZvaWQgUG9wdXBMaXN0Qm94OjpwYWludFJvdyhHcmFw
aGljc0NvbnRleHQqIGdjLCBjb25zdCBJbnRSZWN0JiByZWN0LCBpbnQgcm93SW5kCiAgICAgLy8g
RHJhdyB0aGUgdGhlIGxhYmVsIGlmIGFwcGxpY2FibGUuCiAgICAgaWYgKGl0ZW1MYWJlbC5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybjsKKworICAgIC8vIEF1dG9maWxsIGxhYmVsIGlzIDAuOCBz
bWFsbGVyIHRoYW4gcmVndWxhciBmb250IHNpemUuCisgICAgaWYgKHN0eWxlLmlzQXV0b2ZpbGxT
dHlsZSgpKSB7CisgICAgICAgIGl0ZW1Gb250ID0gbV9wb3B1cENsaWVudC0+aXRlbVN0eWxlKHJv
d0luZGV4KS5mb250KCk7CisgICAgICAgIEZvbnREZXNjcmlwdGlvbiBkID0gaXRlbUZvbnQuZm9u
dERlc2NyaXB0aW9uKCk7CisgICAgICAgIGQuc2V0Q29tcHV0ZWRTaXplKGQuY29tcHV0ZWRTaXpl
KCkqMC44KTsKKyAgICAgICAgaXRlbUZvbnQgPSBGb250KGQsIGl0ZW1Gb250LmxldHRlclNwYWNp
bmcoKSwgaXRlbUZvbnQud29yZFNwYWNpbmcoKSk7CisgICAgICAgIGl0ZW1Gb250LnVwZGF0ZSgw
KTsKKyAgICB9CisKICAgICBUZXh0UnVuIGxhYmVsVGV4dFJ1bihpdGVtTGFiZWwuY2hhcmFjdGVy
cygpLCBpdGVtTGFiZWwubGVuZ3RoKCksIGZhbHNlLCAwLCAwLCBUZXh0UnVuOjpBbGxvd1RyYWls
aW5nRXhwYW5zaW9uLCBydGwsIHN0eWxlLmhhc1RleHREaXJlY3Rpb25PdmVycmlkZSgpKTsKICAg
ICBpZiAocmlnaHRBbGlnbmVkKQogICAgICAgICB0ZXh0WCA9IG1heCgwLCBtX3BvcHVwQ2xpZW50
LT5jbGllbnRQYWRkaW5nTGVmdCgpIC0gbV9wb3B1cENsaWVudC0+Y2xpZW50SW5zZXRMZWZ0KCkp
OwpAQCAtMTEwNCwxMyArMTExOCwxOCBAQCBpbnQgUG9wdXBMaXN0Qm94OjpnZXRSb3dIZWlnaHQo
aW50IGluZGV4KQogICAgIGlmIChtX3BvcHVwQ2xpZW50LT5pdGVtU3R5bGUoaW5kZXgpLmlzRGlz
cGxheU5vbmUoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKKyAgICAvLyBTZXBhcmF0b3Igcm93IGhl
aWdodCBpcyB0aGUgc2FtZSBzaXplIGFzIGl0c2VsZi4KKyAgICBpZiAobV9wb3B1cENsaWVudC0+
aXRlbUlzU2VwYXJhdG9yKGluZGV4KSkKKyAgICAgICAgcmV0dXJuIHNlcGFyYXRvckhlaWdodDsK
KwogICAgIFN0cmluZyBpY29uID0gbV9wb3B1cENsaWVudC0+aXRlbUljb24oaW5kZXgpOwogICAg
IFJlZlB0cjxJbWFnZT4gaW1hZ2UoSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKGljb24udXRm
OCgpLmRhdGEoKSkpOwogCiAgICAgaW50IGZvbnRIZWlnaHQgPSBnZXRSb3dGb250KGluZGV4KS5m
b250TWV0cmljcygpLmhlaWdodCgpOwogICAgIGludCBpY29uSGVpZ2h0ID0gKGltYWdlICYmICFp
bWFnZS0+aXNOdWxsKCkpID8gaW1hZ2UtPnJlY3QoKS5oZWlnaHQoKSA6IDA7CiAKLSAgICByZXR1
cm4gbWF4KGZvbnRIZWlnaHQsIGljb25IZWlnaHQpOworICAgIGludCBsaW5lUGFkZGluZ0hlaWdo
dCA9IG1fcG9wdXBDbGllbnQtPm1lbnVTdHlsZSgpLmlzQXV0b2ZpbGxTdHlsZSgpID8ga0xpbmVQ
YWRkaW5nSGVpZ2h0IDogMDsKKyAgICByZXR1cm4gbWF4KGZvbnRIZWlnaHQsIGljb25IZWlnaHQp
ICsgbGluZVBhZGRpbmdIZWlnaHQgKiAyOwogfQogCiBJbnRSZWN0IFBvcHVwTGlzdEJveDo6Z2V0
Um93Qm91bmRzKGludCBpbmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJNZW51TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVu
dUxpc3QuY3BwCmluZGV4IGYxNTU2MTRhOGUzNzNhNmFjYjY5Yzc2ODc1YjRmOWI1MGJiMjNlM2Uu
LmJiMjNmOWY1YTRjNzNlMTI2NWQ1MDkwZmJjMDM1MTU1ZTJjNDE5MzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcApAQCAtNDI4LDcgKzQyOCw3IEBAIFBv
cHVwTWVudVN0eWxlIFJlbmRlck1lbnVMaXN0OjppdGVtU3R5bGUodW5zaWduZWQgbGlzdEluZGV4
KSBjb25zdAogICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBsaXN0SXRlbXNbbGlzdEluZGV4XTsKICAg
ICAKICAgICBSZW5kZXJTdHlsZSogc3R5bGUgPSBlbGVtZW50LT5yZW5kZXJTdHlsZSgpID8gZWxl
bWVudC0+cmVuZGVyU3R5bGUoKSA6IGVsZW1lbnQtPmNvbXB1dGVkU3R5bGUoKTsKLSAgICByZXR1
cm4gc3R5bGUgPyBQb3B1cE1lbnVTdHlsZShzdHlsZS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENT
U1Byb3BlcnR5Q29sb3IpLCBpdGVtQmFja2dyb3VuZENvbG9yKGxpc3RJbmRleCksIHN0eWxlLT5m
b250KCksIHN0eWxlLT52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSwgc3R5bGUtPmRpc3BsYXkoKSA9
PSBOT05FLCBzdHlsZS0+dGV4dEluZGVudCgpLCBzdHlsZS0+ZGlyZWN0aW9uKCksIHN0eWxlLT51
bmljb2RlQmlkaSgpID09IE92ZXJyaWRlKSA6IG1lbnVTdHlsZSgpOworICAgIHJldHVybiBzdHls
ZSA/IFBvcHVwTWVudVN0eWxlKHN0eWxlLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVy
dHlDb2xvciksIGl0ZW1CYWNrZ3JvdW5kQ29sb3IobGlzdEluZGV4KSwgc3R5bGUtPmZvbnQoKSwg
c3R5bGUtPnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFLCBzdHlsZS0+ZGlzcGxheSgpID09IE5PTkUs
IHN0eWxlLT50ZXh0SW5kZW50KCksIHN0eWxlLT5kaXJlY3Rpb24oKSwgc3R5bGUtPnVuaWNvZGVC
aWRpKCkgPT0gT3ZlcnJpZGUsIGZhbHNlKSA6IG1lbnVTdHlsZSgpOwogfQogCiBDb2xvciBSZW5k
ZXJNZW51TGlzdDo6aXRlbUJhY2tncm91bmRDb2xvcih1bnNpZ25lZCBsaXN0SW5kZXgpIGNvbnN0
CkBAIC00NTgsNyArNDU4LDcgQEAgQ29sb3IgUmVuZGVyTWVudUxpc3Q6Oml0ZW1CYWNrZ3JvdW5k
Q29sb3IodW5zaWduZWQgbGlzdEluZGV4KSBjb25zdAogUG9wdXBNZW51U3R5bGUgUmVuZGVyTWVu
dUxpc3Q6Om1lbnVTdHlsZSgpIGNvbnN0CiB7CiAgICAgUmVuZGVyU3R5bGUqIHMgPSBtX2lubmVy
QmxvY2sgPyBtX2lubmVyQmxvY2stPnN0eWxlKCkgOiBzdHlsZSgpOwotICAgIHJldHVybiBQb3B1
cE1lbnVTdHlsZShzLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIHMt
PnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciksIHMtPmZv
bnQoKSwgcy0+dmlzaWJpbGl0eSgpID09IFZJU0lCTEUsIHMtPmRpc3BsYXkoKSA9PSBOT05FLCBz
LT50ZXh0SW5kZW50KCksIHN0eWxlKCktPmRpcmVjdGlvbigpLCBzdHlsZSgpLT51bmljb2RlQmlk
aSgpID09IE92ZXJyaWRlKTsKKyAgICByZXR1cm4gUG9wdXBNZW51U3R5bGUocy0+dmlzaXRlZERl
cGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBzLT52aXNpdGVkRGVwZW5kZW50Q29sb3Io
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpLCBzLT5mb250KCksIHMtPnZpc2liaWxpdHkoKSA9
PSBWSVNJQkxFLCBzLT5kaXNwbGF5KCkgPT0gTk9ORSwgcy0+dGV4dEluZGVudCgpLCBzdHlsZSgp
LT5kaXJlY3Rpb24oKSwgc3R5bGUoKS0+dW5pY29kZUJpZGkoKSA9PSBPdmVycmlkZSwgZmFsc2Up
OwogfQogCiBIb3N0V2luZG93KiBSZW5kZXJNZW51TGlzdDo6aG9zdFdpbmRvdygpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5n
bGVMaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNp
bmdsZUxpbmUuY3BwCmluZGV4IGI2MGY3ZTEzZWRhYjZkMjRiMWYwMjc2Nzg5YmY5MWRkYTYzNDgy
MmIuLjU3YzM0NGZkM2ZmYmFhOTYyOWJmYTdkZGIyM2ExMDlmNzNmMDAwZGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxp
bmUuY3BwCkBAIC05MzgsNyArOTM4LDcgQEAgUG9wdXBNZW51U3R5bGUgUmVuZGVyVGV4dENvbnRy
b2xTaW5nbGVMaW5lOjppdGVtU3R5bGUodW5zaWduZWQpIGNvbnN0CiAKIFBvcHVwTWVudVN0eWxl
IFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6bWVudVN0eWxlKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gUG9wdXBNZW51U3R5bGUoc3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1By
b3BlcnR5Q29sb3IpLCBzdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlC
YWNrZ3JvdW5kQ29sb3IpLCBzdHlsZSgpLT5mb250KCksIHN0eWxlKCktPnZpc2liaWxpdHkoKSA9
PSBWSVNJQkxFLCBzdHlsZSgpLT5kaXNwbGF5KCkgPT0gTk9ORSwgc3R5bGUoKS0+dGV4dEluZGVu
dCgpLCBzdHlsZSgpLT5kaXJlY3Rpb24oKSwgc3R5bGUoKS0+dW5pY29kZUJpZGkoKSA9PSBPdmVy
cmlkZSk7CisgICAgcmV0dXJuIFBvcHVwTWVudVN0eWxlKHN0eWxlKCktPnZpc2l0ZWREZXBlbmRl
bnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSwgc3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9y
KENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKSwgc3R5bGUoKS0+Zm9udCgpLCBzdHlsZSgpLT52
aXNpYmlsaXR5KCkgPT0gVklTSUJMRSwgc3R5bGUoKS0+ZGlzcGxheSgpID09IE5PTkUsIHN0eWxl
KCktPnRleHRJbmRlbnQoKSwgc3R5bGUoKS0+ZGlyZWN0aW9uKCksIHN0eWxlKCktPnVuaWNvZGVC
aWRpKCkgPT0gT3ZlcnJpZGUsIGZhbHNlKTsKIH0KIAogaW50IFJlbmRlclRleHRDb250cm9sU2lu
Z2xlTGluZTo6Y2xpZW50SW5zZXRMZWZ0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
aW5kZXggYmExMmM2Mjc1NzAwM2QyZmRiNjFiZjM0NTBhNDFjZGU1MzQ3ZTM2Ni4uYjY5YmEzZjY5
NzY3NDAyNTQ1MjAwNDJlMDEwOGI4MTI0YzIzOTJmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0wNC0xNSAgTmFva2kgVGFrYW5vICA8dGFrYW5vLm5h
b2tpQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBbQ2hyb21pdW1dVUkgcG9saXNoZXMgYW5kIHR3ZWFrcyB0byBBdXRvZmlsbCBkcm9w
ZG93biBtZW51LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTg1MDUKKworICAgICAgICAqIHNyYy9BdXRvRmlsbFBvcHVwTWVudUNsaWVudC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkF1dG9GaWxsUG9wdXBNZW51Q2xpZW50Ojppbml0aWFsaXplKTogU2V0
IHRydWUgZm9yIGlzQXV0b2ZpbGxTdHlsZSBmbGFnLgorCiAyMDExLTA0LTE0ICBBZHJpZW5uZSBX
YWxrZXIgIDxlbm5lQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSmFtZXMgUm9i
aW5zb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9BdXRvRmlsbFBv
cHVwTWVudUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9BdXRvRmlsbFBv
cHVwTWVudUNsaWVudC5jcHAKaW5kZXggZDA0YzU3Y2IwMWFmMDA4ZGZmZWY5M2FmZTE3MmQxZDRh
ZjgyOTA3NC4uZjUyNDUyMWZhNTVkZGQwZDNkZGFkNjI4NTgwMmM5NTM1NTQxMDczYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXV0b0ZpbGxQb3B1cE1lbnVDbGllbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0F1dG9GaWxsUG9wdXBNZW51Q2xp
ZW50LmNwcApAQCAtMjkxLDkgKzI5MSwxNSBAQCB2b2lkIEF1dG9GaWxsUG9wdXBNZW51Q2xpZW50
Ojppbml0aWFsaXplKAogICAgIHJlZ3VsYXJGb250LnVwZGF0ZSh0ZXh0RmllbGQtPmRvY3VtZW50
KCktPnN0eWxlU2VsZWN0b3IoKS0+Zm9udFNlbGVjdG9yKCkpOwogICAgIC8vIFRoZSBkaXJlY3Rp
b24gb2YgdGV4dCBpbiBwb3B1cCBtZW51IGlzIHNldCB0aGUgc2FtZSBhcyB0aGUgZGlyZWN0aW9u
IG9mCiAgICAgLy8gdGhlIGlucHV0IGVsZW1lbnQ6IHRleHRGaWVsZC4KLSAgICBtX3JlZ3VsYXJT
dHlsZS5zZXQobmV3IFBvcHVwTWVudVN0eWxlKENvbG9yOjpibGFjaywgQ29sb3I6OndoaXRlLCBy
ZWd1bGFyRm9udCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRy
dWUsIGZhbHNlLCBMZW5ndGgoV2ViQ29yZTo6Rml4ZWQpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdGV4dEZpZWxkLT5yZW5kZXJlcigpLT5zdHlsZSgpLT5kaXJl
Y3Rpb24oKSwgdGV4dEZpZWxkLT5yZW5kZXJlcigpLT5zdHlsZSgpLT51bmljb2RlQmlkaSgpID09
IE92ZXJyaWRlKSk7CisgICAgbV9yZWd1bGFyU3R5bGUuc2V0KG5ldyBQb3B1cE1lbnVTdHlsZShD
b2xvcjo6YmxhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBD
b2xvcjo6d2hpdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZWd1bGFyRm9udCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRy
dWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExlbmd0aChXZWJDb3JlOjpG
aXhlZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0Rmll
bGQtPnJlbmRlcmVyKCktPnN0eWxlKCktPmRpcmVjdGlvbigpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEZpZWxkLT5yZW5kZXJlcigpLT5zdHlsZSgpLT51
bmljb2RlQmlkaSgpID09IE92ZXJyaWRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdHJ1ZSkpOwogCiAgICAgRm9udERlc2NyaXB0aW9uIHdhcm5pbmdGb250RGVz
Y3JpcHRpb24gPSByZWd1bGFyRm9udC5mb250RGVzY3JpcHRpb24oKTsKICAgICB3YXJuaW5nRm9u
dERlc2NyaXB0aW9uLnNldEl0YWxpYyh0cnVlKTsKQEAgLTMwNiw3ICszMTIsOCBAQCB2b2lkIEF1
dG9GaWxsUG9wdXBNZW51Q2xpZW50Ojppbml0aWFsaXplKAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbV9yZWd1bGFyU3R5bGUtPmlzRGlzcGxheU5vbmUoKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcmVndWxhclN0eWxlLT50
ZXh0SW5kZW50KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
X3JlZ3VsYXJTdHlsZS0+dGV4dERpcmVjdGlvbigpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbV9yZWd1bGFyU3R5bGUtPmhhc1RleHREaXJlY3Rpb25PdmVycmlk
ZSgpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3JlZ3Vs
YXJTdHlsZS0+aGFzVGV4dERpcmVjdGlvbk92ZXJyaWRlKCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0cnVlKSk7CiB9CiAKIHZvaWQgQXV0b0ZpbGxQb3B1cE1l
bnVDbGllbnQ6OnNldFN1Z2dlc3Rpb25zKGNvbnN0IFdlYlZlY3RvcjxXZWJTdHJpbmc+JiBuYW1l
cywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90130</attachid>
            <date>2011-04-18 19:09:41 -0700</date>
            <delta_ts>2011-04-19 21:18:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58505-20110418190939.patch</filename>
            <type>text/plain</type>
            <size>10127</size>
            <attacher name="Naoki Takano">honten</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODM5MjcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiZGVlZTgyZjQzYjllOTc0
YjNjMzA0MDM0MDRjOTUxNzMwODVmYWI4Li43N2ZjMDk1OTM2YTAxZWZkNjExMmJjOTIyYjg5MTRj
YzZhNjg2MTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTEtMDQtMTUgIE5hb2tp
IFRha2FubyAgPHRha2Fuby5uYW9raUBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0Nocm9taXVtXVVJIHBvbGlzaGVzIGFuZCB0d2Vh
a3MgdG8gQXV0b2ZpbGwgZHJvcGRvd24gbWVudS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTU4NTA1CisgICAgICAgIGh0dHA6Ly9jb2RlLmdvb2dsZS5j
b20vcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTUxMDc3CisKKyAgICAgICAgTm8gbmV3IHRl
c3RzLiBCZWNhdXNlIHRoaXMgaXMgYXV0b2ZpbGwgbG9va2luZyBwcm9ibGVtIGluIENocm9taXVt
LgorICAgICAgICBBZGQgbV9tZW51VHlwZSBhcyBQb3B1cE1lbnVTdHlsZSB0byBjaGFuZ2UgcG9w
dXAgc3R5bGUgY2hhbmdlLgorICAgICAgICBQdXQga0xpbmVQYWRkaW5nSGVpZ2h0IGF0IHRoZSB0
b3AgYW5kIGJvdHRvbSBvZiBlYWNoIGxpbmUgaWYgbV9tZW51VHlwZSBpcyBBdXRvZmlsbFBvcHVw
LgorICAgICAgICBDaGFuZ2Ugc2VwYXJhdG9yIGNvbG9yIHRvICNkY2RjZGMgYW5kIHJlbW92ZSBz
cGFyYXRvclBhZGRpbmcgYXQgdGhlIGVkZ2UgaWYgbV9tZW51VHlwZSBpcyBBdXRvZmlsbFBvcHVw
LgorICAgICAgICBDaGFuZ2UgdGhlIGxpbmUgaGVpZ2h0IG9mIHNlcGFyYXRvciBhcyBvbmx5IHRo
ZSBwaWVjZSBpZiBtX21lbnVUeXBlIGlzIEF1dG9maWxsUG9wdXAuCisgICAgICAgIENoYW5nZSB0
aGUgbGFiZWwgZm9udCBzaXplIDAuOCB0aW1lIHNtYWxsZXIgdGhhbiByZWd1bGFyIGZvbnQgc2l6
ZSBpZiBtX21lbnVUeXBlIGlzIEF1dG9maWxsUG9wdXAuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9Q
b3B1cE1lbnVTdHlsZS5oOiBBZGQgZW51bSBQb3B1cE1lbnVUeXBlOworICAgICAgICAoV2ViQ29y
ZTo6UG9wdXBNZW51U3R5bGU6OlBvcHVwTWVudVN0eWxlKTogQWRkIG1fbWVudVR5cGUuCisgICAg
ICAgIChXZWJDb3JlOjpQb3B1cE1lbnVTdHlsZTo6bWVudVR5cGUpOiBBZGQgdG8gY2hhbmdlIHRo
ZSBzdHlsZSBhY2NvcmRpbmcgdG8gdGhlIHJldHVybiB2YWx1ZS4KKyAgICAgICAgKiBwbGF0Zm9y
bS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb3B1
cExpc3RCb3g6OnBhaW50Um93KTpDaGFuZ2UgdGhlIHNlcGFyYXRvciBjb2xvciB0byAjZGNkY2Rj
LgorICAgICAgICBDaGFuZ2UgdGhlIGVkZ2UgcGFkZGluZyBhY2NvcmRpbmcgdG8gbWVudVN0eWxl
KCkuCisgICAgICAgIChXZWJDb3JlOjpQb3B1cExpc3RCb3g6OmdldFJvd0hlaWdodCk6IEFkZCBr
TGluZUhlaWdodE1hcmdpbioyIGZvciBlYWNoIGxpbmUgaGVpZ2h0LgorCiAyMDExLTA0LTE0ICBM
dWtlIE1hY3BoZXJzb24gICA8bWFjcGhlcnNvbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUG9wdXBNZW51U3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BvcHVwTWVu
dVN0eWxlLmgKaW5kZXggM2NiMzNjYzZhZjJmNzI1OTczNzQ1YmZhYzVmYTc0MmJkMjhiYTA5NS4u
ZTk3OWUyNWVlOTc1ZGIzNDhiNzIxODVjYWNjYzQ4MjIyMjE4MjU5NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUG9wdXBNZW51U3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9Qb3B1cE1lbnVTdHlsZS5oCkBAIC0zNSw3ICszNSw4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgUG9wdXBNZW51U3R5bGUgewogcHVibGljOgotICAgIFBvcHVwTWVu
dVN0eWxlKGNvbnN0IENvbG9yJiBmb3JlZ3JvdW5kLCBjb25zdCBDb2xvciYgYmFja2dyb3VuZCwg
Y29uc3QgRm9udCYgZm9udCwgYm9vbCB2aXNpYmxlLCBib29sIGlzRGlzcGxheU5vbmUsIExlbmd0
aCB0ZXh0SW5kZW50LCBUZXh0RGlyZWN0aW9uIHRleHREaXJlY3Rpb24sIGJvb2wgaGFzVGV4dERp
cmVjdGlvbk92ZXJyaWRlKQorICAgIGVudW0gUG9wdXBNZW51VHlwZSB7IFNlbGVjdFBvcHVwLCBB
dXRvZmlsbFBvcHVwIH07CisgICAgUG9wdXBNZW51U3R5bGUoY29uc3QgQ29sb3ImIGZvcmVncm91
bmQsIGNvbnN0IENvbG9yJiBiYWNrZ3JvdW5kLCBjb25zdCBGb250JiBmb250LCBib29sIHZpc2li
bGUsIGJvb2wgaXNEaXNwbGF5Tm9uZSwgTGVuZ3RoIHRleHRJbmRlbnQsIFRleHREaXJlY3Rpb24g
dGV4dERpcmVjdGlvbiwgYm9vbCBoYXNUZXh0RGlyZWN0aW9uT3ZlcnJpZGUsIFBvcHVwTWVudVR5
cGUgbWVudVR5cGUgPSBTZWxlY3RQb3B1cCkKICAgICAgICAgOiBtX2ZvcmVncm91bmRDb2xvcihm
b3JlZ3JvdW5kKQogICAgICAgICAsIG1fYmFja2dyb3VuZENvbG9yKGJhY2tncm91bmQpCiAgICAg
ICAgICwgbV9mb250KGZvbnQpCkBAIC00NCw5ICs0NSwxMCBAQCBwdWJsaWM6CiAgICAgICAgICwg
bV90ZXh0SW5kZW50KHRleHRJbmRlbnQpCiAgICAgICAgICwgbV90ZXh0RGlyZWN0aW9uKHRleHRE
aXJlY3Rpb24pCiAgICAgICAgICwgbV9oYXNUZXh0RGlyZWN0aW9uT3ZlcnJpZGUoaGFzVGV4dERp
cmVjdGlvbk92ZXJyaWRlKQorICAgICAgICAsIG1fbWVudVR5cGUobWVudVR5cGUpCiAgICAgewog
ICAgIH0KLSAgICAKKwogICAgIGNvbnN0IENvbG9yJiBmb3JlZ3JvdW5kQ29sb3IoKSBjb25zdCB7
IHJldHVybiBtX2ZvcmVncm91bmRDb2xvcjsgfQogICAgIGNvbnN0IENvbG9yJiBiYWNrZ3JvdW5k
Q29sb3IoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmRDb2xvcjsgfQogICAgIGNvbnN0IEZv
bnQmIGZvbnQoKSBjb25zdCB7IHJldHVybiBtX2ZvbnQ7IH0KQEAgLTU1LDcgKzU3LDcgQEAgcHVi
bGljOgogICAgIExlbmd0aCB0ZXh0SW5kZW50KCkgY29uc3QgeyByZXR1cm4gbV90ZXh0SW5kZW50
OyB9CiAgICAgVGV4dERpcmVjdGlvbiB0ZXh0RGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV90
ZXh0RGlyZWN0aW9uOyB9CiAgICAgYm9vbCBoYXNUZXh0RGlyZWN0aW9uT3ZlcnJpZGUoKSBjb25z
dCB7IHJldHVybiBtX2hhc1RleHREaXJlY3Rpb25PdmVycmlkZTsgfQotCisgICAgUG9wdXBNZW51
VHlwZSBtZW51VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVudVR5cGU7IH0KIHByaXZhdGU6CiAg
ICAgQ29sb3IgbV9mb3JlZ3JvdW5kQ29sb3I7CiAgICAgQ29sb3IgbV9iYWNrZ3JvdW5kQ29sb3I7
CkBAIC02NSw2ICs2Nyw3IEBAIHByaXZhdGU6CiAgICAgTGVuZ3RoIG1fdGV4dEluZGVudDsKICAg
ICBUZXh0RGlyZWN0aW9uIG1fdGV4dERpcmVjdGlvbjsKICAgICBib29sIG1faGFzVGV4dERpcmVj
dGlvbk92ZXJyaWRlOworICAgIFBvcHVwTWVudVR5cGUgbV9tZW51VHlwZTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL1BvcHVwTWVudUNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL1BvcHVwTWVudUNocm9taXVtLmNwcAppbmRleCBhZjk3ZWNmNGNlYzIyMDk1MWNmNGVm
NDAzMWZjNWViOGFlODY0NDlhLi5jNjQxNGViOGJiZTA4NzBiZjE2MmJhMzZiN2YwMTc2MjYxOWZh
MTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1l
bnVDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9w
dXBNZW51Q2hyb21pdW0uY3BwCkBAIC03NSw2ICs3NSw3IEBAIHN0YXRpYyBjb25zdCBpbnQga1Rl
eHRUb0xhYmVsUGFkZGluZyA9IDEwOwogc3RhdGljIGNvbnN0IGludCBrTGFiZWxUb0ljb25QYWRk
aW5nID0gNTsKIHN0YXRpYyBjb25zdCBpbnQga01pbkVuZE9mTGluZVBhZGRpbmcgPSAyOwogc3Rh
dGljIGNvbnN0IFRpbWVTdGFtcCBrVHlwZUFoZWFkVGltZW91dE1zID0gMTAwMDsKK3N0YXRpYyBj
b25zdCBpbnQga0xpbmVQYWRkaW5nSGVpZ2h0ID0gMzsgLy8gUGFkZGluZyBoZWlnaHQgcHV0IGF0
IHRoZSB0b3AgYW5kIGJvdHRvbSBvZiBlYWNoIGxpbmUuCiAKIC8vIFRoZSBzZXR0aW5ncyB1c2Vk
IGZvciB0aGUgZHJvcCBkb3duIG1lbnUuCiAvLyBUaGlzIGlzIHRoZSBkZWxlZ2F0ZSB1c2VkIGlm
IG5vbmUgaXMgcHJvdmlkZWQuCkBAIC05MTIsMTIgKzkxMywxNSBAQCB2b2lkIFBvcHVwTGlzdEJv
eDo6cGFpbnRSb3coR3JhcGhpY3NDb250ZXh0KiBnYywgY29uc3QgSW50UmVjdCYgcmVjdCwgaW50
IHJvd0luZAogCiAgICAgZ2MtPmZpbGxSZWN0KHJvd1JlY3QsIGJhY2tDb2xvciwgQ29sb3JTcGFj
ZURldmljZVJHQik7CiAKKyAgICAvLyBJdCBkb2Vzbid0IGxvb2sgZ29vZCBidXQgQXV0b2ZpbGwg
cmVxdWlyZXMgc3BlY2lhbCBzdHlsZSBmb3Igc2VwYXJhdG9yLgorICAgIC8vIEF1dG9maWxsIGRv
ZXNuJ3QgaGF2ZSBwYWRkaW5nIGFuZCAjZGNkY2RjIGNvbG9yLgogICAgIGlmIChtX3BvcHVwQ2xp
ZW50LT5pdGVtSXNTZXBhcmF0b3Iocm93SW5kZXgpKSB7CisgICAgICAgIGludCBwYWRkaW5nID0g
c3R5bGUubWVudVR5cGUoKSA9PSBQb3B1cE1lbnVTdHlsZTo6QXV0b2ZpbGxQb3B1cCA/IDAgOiBz
ZXBhcmF0b3JQYWRkaW5nOwogICAgICAgICBJbnRSZWN0IHNlcGFyYXRvclJlY3QoCi0gICAgICAg
ICAgICByb3dSZWN0LngoKSArIHNlcGFyYXRvclBhZGRpbmcsCisgICAgICAgICAgICByb3dSZWN0
LngoKSArIHBhZGRpbmcsCiAgICAgICAgICAgICByb3dSZWN0LnkoKSArIChyb3dSZWN0LmhlaWdo
dCgpIC0gc2VwYXJhdG9ySGVpZ2h0KSAvIDIsCi0gICAgICAgICAgICByb3dSZWN0LndpZHRoKCkg
LSAyICogc2VwYXJhdG9yUGFkZGluZywgc2VwYXJhdG9ySGVpZ2h0KTsKLSAgICAgICAgZ2MtPmZp
bGxSZWN0KHNlcGFyYXRvclJlY3QsIHRleHRDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7Cisg
ICAgICAgICAgICByb3dSZWN0LndpZHRoKCkgLSAyICogcGFkZGluZywgc2VwYXJhdG9ySGVpZ2h0
KTsKKyAgICAgICAgZ2MtPmZpbGxSZWN0KHNlcGFyYXRvclJlY3QsIHN0eWxlLm1lbnVUeXBlKCkg
PT0gUG9wdXBNZW51U3R5bGU6OkF1dG9maWxsUG9wdXAgPyBDb2xvcigweGRjLCAweGRjLCAweGRj
KSA6IHRleHRDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKQEAgLTk4OCw2ICs5OTIsMTYgQEAgdm9pZCBQb3B1cExpc3RCb3g6OnBhaW50Um93KEdy
YXBoaWNzQ29udGV4dCogZ2MsIGNvbnN0IEludFJlY3QmIHJlY3QsIGludCByb3dJbmQKICAgICAv
LyBEcmF3IHRoZSB0aGUgbGFiZWwgaWYgYXBwbGljYWJsZS4KICAgICBpZiAoaXRlbUxhYmVsLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOworCisgICAgLy8gQXV0b2ZpbGwgbGFiZWwgaXMgMC44
IHNtYWxsZXIgdGhhbiByZWd1bGFyIGZvbnQgc2l6ZS4KKyAgICBpZiAoc3R5bGUubWVudVR5cGUo
KSA9PSBQb3B1cE1lbnVTdHlsZTo6QXV0b2ZpbGxQb3B1cCkgeworICAgICAgICBpdGVtRm9udCA9
IG1fcG9wdXBDbGllbnQtPml0ZW1TdHlsZShyb3dJbmRleCkuZm9udCgpOworICAgICAgICBGb250
RGVzY3JpcHRpb24gZCA9IGl0ZW1Gb250LmZvbnREZXNjcmlwdGlvbigpOworICAgICAgICBkLnNl
dENvbXB1dGVkU2l6ZShkLmNvbXB1dGVkU2l6ZSgpICogMC44KTsKKyAgICAgICAgaXRlbUZvbnQg
PSBGb250KGQsIGl0ZW1Gb250LmxldHRlclNwYWNpbmcoKSwgaXRlbUZvbnQud29yZFNwYWNpbmco
KSk7CisgICAgICAgIGl0ZW1Gb250LnVwZGF0ZSgwKTsKKyAgICB9CisKICAgICBUZXh0UnVuIGxh
YmVsVGV4dFJ1bihpdGVtTGFiZWwuY2hhcmFjdGVycygpLCBpdGVtTGFiZWwubGVuZ3RoKCksIGZh
bHNlLCAwLCAwLCBUZXh0UnVuOjpBbGxvd1RyYWlsaW5nRXhwYW5zaW9uLCBydGwsIHN0eWxlLmhh
c1RleHREaXJlY3Rpb25PdmVycmlkZSgpKTsKICAgICBpZiAocmlnaHRBbGlnbmVkKQogICAgICAg
ICB0ZXh0WCA9IG1heCgwLCBtX3BvcHVwQ2xpZW50LT5jbGllbnRQYWRkaW5nTGVmdCgpIC0gbV9w
b3B1cENsaWVudC0+Y2xpZW50SW5zZXRMZWZ0KCkpOwpAQCAtMTEwNCwxMyArMTExOCwxOCBAQCBp
bnQgUG9wdXBMaXN0Qm94OjpnZXRSb3dIZWlnaHQoaW50IGluZGV4KQogICAgIGlmIChtX3BvcHVw
Q2xpZW50LT5pdGVtU3R5bGUoaW5kZXgpLmlzRGlzcGxheU5vbmUoKSkKICAgICAgICAgcmV0dXJu
IDA7CiAKKyAgICAvLyBTZXBhcmF0b3Igcm93IGhlaWdodCBpcyB0aGUgc2FtZSBzaXplIGFzIGl0
c2VsZi4KKyAgICBpZiAobV9wb3B1cENsaWVudC0+aXRlbUlzU2VwYXJhdG9yKGluZGV4KSkKKyAg
ICAgICAgcmV0dXJuIHNlcGFyYXRvckhlaWdodDsKKwogICAgIFN0cmluZyBpY29uID0gbV9wb3B1
cENsaWVudC0+aXRlbUljb24oaW5kZXgpOwogICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UoSW1hZ2U6
OmxvYWRQbGF0Zm9ybVJlc291cmNlKGljb24udXRmOCgpLmRhdGEoKSkpOwogCiAgICAgaW50IGZv
bnRIZWlnaHQgPSBnZXRSb3dGb250KGluZGV4KS5mb250TWV0cmljcygpLmhlaWdodCgpOwogICAg
IGludCBpY29uSGVpZ2h0ID0gKGltYWdlICYmICFpbWFnZS0+aXNOdWxsKCkpID8gaW1hZ2UtPnJl
Y3QoKS5oZWlnaHQoKSA6IDA7CiAKLSAgICByZXR1cm4gbWF4KGZvbnRIZWlnaHQsIGljb25IZWln
aHQpOworICAgIGludCBsaW5lUGFkZGluZ0hlaWdodCA9IG1fcG9wdXBDbGllbnQtPm1lbnVTdHls
ZSgpLm1lbnVUeXBlKCkgPT0gUG9wdXBNZW51U3R5bGU6OkF1dG9maWxsUG9wdXAgPyBrTGluZVBh
ZGRpbmdIZWlnaHQgOiAwOworICAgIHJldHVybiBtYXgoZm9udEhlaWdodCwgaWNvbkhlaWdodCkg
KyBsaW5lUGFkZGluZ0hlaWdodCAqIDI7CiB9CiAKIEludFJlY3QgUG9wdXBMaXN0Qm94OjpnZXRS
b3dCb3VuZHMoaW50IGluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBiYTEyYzYy
NzU3MDAzZDJmZGI2MWJmMzQ1MGE0MWNkZTUzNDdlMzY2Li5jNTVjODJiOWUyMDVhMWI0MzI5YTZk
OTBlYmE2MGVjMTg0ZjA1ZWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEzIEBACisyMDExLTA0LTE1ICBOYW9raSBUYWthbm8gIDx0YWthbm8ubmFva2lAZ21haWwuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtDaHJv
bWl1bV1VSSBwb2xpc2hlcyBhbmQgdHdlYWtzIHRvIEF1dG9maWxsIGRyb3Bkb3duIG1lbnUuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODUwNQorCisg
ICAgICAgICogc3JjL0F1dG9GaWxsUG9wdXBNZW51Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6QXV0b0ZpbGxQb3B1cE1lbnVDbGllbnQ6OmluaXRpYWxpemUpOiBTZXQgQXV0b2ZpbGxQb3B1
cCBmb3IgbWVudVN0eWxlLgorCiAyMDExLTA0LTE0ICBBZHJpZW5uZSBXYWxrZXIgIDxlbm5lQGdv
b2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSmFtZXMgUm9iaW5zb24uCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9BdXRvRmlsbFBvcHVwTWVudUNsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9BdXRvRmlsbFBvcHVwTWVudUNsaWVudC5j
cHAKaW5kZXggZDA0YzU3Y2IwMWFmMDA4ZGZmZWY5M2FmZTE3MmQxZDRhZjgyOTA3NC4uYzczZTA1
OWViYjMwODkzOTAwYzkxMDYxMzMwYzE1ZGQ2MGE1ZmExNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvQXV0b0ZpbGxQb3B1cE1lbnVDbGllbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0F1dG9GaWxsUG9wdXBNZW51Q2xpZW50LmNwcApAQCAtMjkx
LDkgKzI5MSwxNSBAQCB2b2lkIEF1dG9GaWxsUG9wdXBNZW51Q2xpZW50Ojppbml0aWFsaXplKAog
ICAgIHJlZ3VsYXJGb250LnVwZGF0ZSh0ZXh0RmllbGQtPmRvY3VtZW50KCktPnN0eWxlU2VsZWN0
b3IoKS0+Zm9udFNlbGVjdG9yKCkpOwogICAgIC8vIFRoZSBkaXJlY3Rpb24gb2YgdGV4dCBpbiBw
b3B1cCBtZW51IGlzIHNldCB0aGUgc2FtZSBhcyB0aGUgZGlyZWN0aW9uIG9mCiAgICAgLy8gdGhl
IGlucHV0IGVsZW1lbnQ6IHRleHRGaWVsZC4KLSAgICBtX3JlZ3VsYXJTdHlsZS5zZXQobmV3IFBv
cHVwTWVudVN0eWxlKENvbG9yOjpibGFjaywgQ29sb3I6OndoaXRlLCByZWd1bGFyRm9udCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUsIGZhbHNlLCBMZW5n
dGgoV2ViQ29yZTo6Rml4ZWQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdGV4dEZpZWxkLT5yZW5kZXJlcigpLT5zdHlsZSgpLT5kaXJlY3Rpb24oKSwgdGV4dEZp
ZWxkLT5yZW5kZXJlcigpLT5zdHlsZSgpLT51bmljb2RlQmlkaSgpID09IE92ZXJyaWRlKSk7Cisg
ICAgbV9yZWd1bGFyU3R5bGUuc2V0KG5ldyBQb3B1cE1lbnVTdHlsZShDb2xvcjo6YmxhY2ssCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xvcjo6d2hpdGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWd1bGFyRm9udCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIExlbmd0aChXZWJDb3JlOjpGaXhlZCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0RmllbGQtPnJlbmRlcmVyKCkt
PnN0eWxlKCktPmRpcmVjdGlvbigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGV4dEZpZWxkLT5yZW5kZXJlcigpLT5zdHlsZSgpLT51bmljb2RlQmlkaSgpID09
IE92ZXJyaWRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9w
dXBNZW51U3R5bGU6OkF1dG9maWxsUG9wdXApKTsKIAogICAgIEZvbnREZXNjcmlwdGlvbiB3YXJu
aW5nRm9udERlc2NyaXB0aW9uID0gcmVndWxhckZvbnQuZm9udERlc2NyaXB0aW9uKCk7CiAgICAg
d2FybmluZ0ZvbnREZXNjcmlwdGlvbi5zZXRJdGFsaWModHJ1ZSk7CkBAIC0zMDYsNyArMzEyLDgg
QEAgdm9pZCBBdXRvRmlsbFBvcHVwTWVudUNsaWVudDo6aW5pdGlhbGl6ZSgKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcmVndWxhclN0eWxlLT5pc0Rpc3BsYXlO
b25lKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3JlZ3Vs
YXJTdHlsZS0+dGV4dEluZGVudCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbV9yZWd1bGFyU3R5bGUtPnRleHREaXJlY3Rpb24oKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcmVndWxhclN0eWxlLT5oYXNUZXh0RGlyZWN0
aW9uT3ZlcnJpZGUoKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbV9yZWd1bGFyU3R5bGUtPmhhc1RleHREaXJlY3Rpb25PdmVycmlkZSgpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9wdXBNZW51U3R5bGU6OkF1dG9maWxs
UG9wdXApKTsKIH0KIAogdm9pZCBBdXRvRmlsbFBvcHVwTWVudUNsaWVudDo6c2V0U3VnZ2VzdGlv
bnMoY29uc3QgV2ViVmVjdG9yPFdlYlN0cmluZz4mIG5hbWVzLAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90301</attachid>
            <date>2011-04-19 21:18:05 -0700</date>
            <delta_ts>2011-04-19 22:16:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58505-20110419211804.patch</filename>
            <type>text/plain</type>
            <size>10161</size>
            <attacher name="Naoki Takano">honten</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODQwNDYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxYjEyYzNkZWUyY2ZjYTUw
M2FmOTZkZTQ0YmM1MWVmZDQ0M2NjNmUyLi42OGJiNTRmNDI4MzIxNTI3YmE0ZjcyMGU4MTQ1NDE4
M2IzMTA0ZDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTEtMDQtMTUgIE5hb2tp
IFRha2FubyAgPHRha2Fuby5uYW9raUBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0Nocm9taXVtXVVJIHBvbGlzaGVzIGFuZCB0d2Vh
a3MgdG8gQXV0b2ZpbGwgZHJvcGRvd24gbWVudS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTU4NTA1CisgICAgICAgIGh0dHA6Ly9jb2RlLmdvb2dsZS5j
b20vcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTUxMDc3CisKKyAgICAgICAgTm8gbmV3IHRl
c3RzLiBCZWNhdXNlIHRoaXMgaXMgYXV0b2ZpbGwgbG9va2luZyBwcm9ibGVtIGluIENocm9taXVt
LgorICAgICAgICBBZGQgbV9tZW51VHlwZSBhcyBQb3B1cE1lbnVTdHlsZSB0byBjaGFuZ2UgcG9w
dXAgc3R5bGUgY2hhbmdlLgorICAgICAgICBQdXQga0xpbmVQYWRkaW5nSGVpZ2h0IGF0IHRoZSB0
b3AgYW5kIGJvdHRvbSBvZiBlYWNoIGxpbmUgaWYgbV9tZW51VHlwZSBpcyBBdXRvZmlsbFBvcHVw
LgorICAgICAgICBDaGFuZ2Ugc2VwYXJhdG9yIGNvbG9yIHRvICNkY2RjZGMgYW5kIHJlbW92ZSBz
cGFyYXRvclBhZGRpbmcgYXQgdGhlIGVkZ2UgaWYgbV9tZW51VHlwZSBpcyBBdXRvZmlsbFBvcHVw
LgorICAgICAgICBDaGFuZ2UgdGhlIGxpbmUgaGVpZ2h0IG9mIHNlcGFyYXRvciBhcyBvbmx5IHRo
ZSBwaWVjZSBpZiBtX21lbnVUeXBlIGlzIEF1dG9maWxsUG9wdXAuCisgICAgICAgIENoYW5nZSB0
aGUgbGFiZWwgZm9udCBzaXplIDAuOSB0aW1lIHNtYWxsZXIgdGhhbiByZWd1bGFyIGZvbnQgc2l6
ZSBpZiBtX21lbnVUeXBlIGlzIEF1dG9maWxsUG9wdXAuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9Q
b3B1cE1lbnVTdHlsZS5oOiBBZGQgZW51bSBQb3B1cE1lbnVUeXBlOworICAgICAgICAoV2ViQ29y
ZTo6UG9wdXBNZW51U3R5bGU6OlBvcHVwTWVudVN0eWxlKTogQWRkIG1fbWVudVR5cGUuCisgICAg
ICAgIChXZWJDb3JlOjpQb3B1cE1lbnVTdHlsZTo6bWVudVR5cGUpOiBBZGQgdG8gY2hhbmdlIHRo
ZSBzdHlsZSBhY2NvcmRpbmcgdG8gdGhlIHJldHVybiB2YWx1ZS4KKyAgICAgICAgKiBwbGF0Zm9y
bS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb3B1
cExpc3RCb3g6OnBhaW50Um93KTpDaGFuZ2UgdGhlIHNlcGFyYXRvciBjb2xvciB0byAjZGNkY2Rj
LgorICAgICAgICBDaGFuZ2UgdGhlIGVkZ2UgcGFkZGluZyBhY2NvcmRpbmcgdG8gbWVudVN0eWxl
KCkuCisgICAgICAgIChXZWJDb3JlOjpQb3B1cExpc3RCb3g6OmdldFJvd0hlaWdodCk6IEFkZCBr
TGluZUhlaWdodE1hcmdpbioyIGZvciBlYWNoIGxpbmUgaGVpZ2h0LgorCiAyMDExLTA0LTE1ICBL
ZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBD
aHJvbWl1bSBMaW51eCBSZWxlYXNlIGJ1aWxkIGZpeCBkdWUgdG8gdW51c2VkIHZhcmlhYmxlcy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BvcHVwTWVudVN0eWxlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qb3B1cE1lbnVTdHlsZS5oCmluZGV4IDNjYjMzY2M2YWYy
ZjcyNTk3Mzc0NWJmYWM1ZmE3NDJiZDI4YmEwOTUuLmU5NzllMjVlZTk3NWRiMzQ4YjcyMTg1Y2Fj
Y2M0ODIyMjIxODI1OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BvcHVw
TWVudVN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUG9wdXBNZW51U3R5bGUu
aApAQCAtMzUsNyArMzUsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFBvcHVwTWVu
dVN0eWxlIHsKIHB1YmxpYzoKLSAgICBQb3B1cE1lbnVTdHlsZShjb25zdCBDb2xvciYgZm9yZWdy
b3VuZCwgY29uc3QgQ29sb3ImIGJhY2tncm91bmQsIGNvbnN0IEZvbnQmIGZvbnQsIGJvb2wgdmlz
aWJsZSwgYm9vbCBpc0Rpc3BsYXlOb25lLCBMZW5ndGggdGV4dEluZGVudCwgVGV4dERpcmVjdGlv
biB0ZXh0RGlyZWN0aW9uLCBib29sIGhhc1RleHREaXJlY3Rpb25PdmVycmlkZSkKKyAgICBlbnVt
IFBvcHVwTWVudVR5cGUgeyBTZWxlY3RQb3B1cCwgQXV0b2ZpbGxQb3B1cCB9OworICAgIFBvcHVw
TWVudVN0eWxlKGNvbnN0IENvbG9yJiBmb3JlZ3JvdW5kLCBjb25zdCBDb2xvciYgYmFja2dyb3Vu
ZCwgY29uc3QgRm9udCYgZm9udCwgYm9vbCB2aXNpYmxlLCBib29sIGlzRGlzcGxheU5vbmUsIExl
bmd0aCB0ZXh0SW5kZW50LCBUZXh0RGlyZWN0aW9uIHRleHREaXJlY3Rpb24sIGJvb2wgaGFzVGV4
dERpcmVjdGlvbk92ZXJyaWRlLCBQb3B1cE1lbnVUeXBlIG1lbnVUeXBlID0gU2VsZWN0UG9wdXAp
CiAgICAgICAgIDogbV9mb3JlZ3JvdW5kQ29sb3IoZm9yZWdyb3VuZCkKICAgICAgICAgLCBtX2Jh
Y2tncm91bmRDb2xvcihiYWNrZ3JvdW5kKQogICAgICAgICAsIG1fZm9udChmb250KQpAQCAtNDQs
OSArNDUsMTAgQEAgcHVibGljOgogICAgICAgICAsIG1fdGV4dEluZGVudCh0ZXh0SW5kZW50KQog
ICAgICAgICAsIG1fdGV4dERpcmVjdGlvbih0ZXh0RGlyZWN0aW9uKQogICAgICAgICAsIG1faGFz
VGV4dERpcmVjdGlvbk92ZXJyaWRlKGhhc1RleHREaXJlY3Rpb25PdmVycmlkZSkKKyAgICAgICAg
LCBtX21lbnVUeXBlKG1lbnVUeXBlKQogICAgIHsKICAgICB9Ci0gICAgCisKICAgICBjb25zdCBD
b2xvciYgZm9yZWdyb3VuZENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9mb3JlZ3JvdW5kQ29sb3I7
IH0KICAgICBjb25zdCBDb2xvciYgYmFja2dyb3VuZENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9i
YWNrZ3JvdW5kQ29sb3I7IH0KICAgICBjb25zdCBGb250JiBmb250KCkgY29uc3QgeyByZXR1cm4g
bV9mb250OyB9CkBAIC01NSw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICBMZW5ndGggdGV4dEluZGVu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dEluZGVudDsgfQogICAgIFRleHREaXJlY3Rpb24gdGV4
dERpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dERpcmVjdGlvbjsgfQogICAgIGJvb2wg
aGFzVGV4dERpcmVjdGlvbk92ZXJyaWRlKCkgY29uc3QgeyByZXR1cm4gbV9oYXNUZXh0RGlyZWN0
aW9uT3ZlcnJpZGU7IH0KLQorICAgIFBvcHVwTWVudVR5cGUgbWVudVR5cGUoKSBjb25zdCB7IHJl
dHVybiBtX21lbnVUeXBlOyB9CiBwcml2YXRlOgogICAgIENvbG9yIG1fZm9yZWdyb3VuZENvbG9y
OwogICAgIENvbG9yIG1fYmFja2dyb3VuZENvbG9yOwpAQCAtNjUsNiArNjcsNyBAQCBwcml2YXRl
OgogICAgIExlbmd0aCBtX3RleHRJbmRlbnQ7CiAgICAgVGV4dERpcmVjdGlvbiBtX3RleHREaXJl
Y3Rpb247CiAgICAgYm9vbCBtX2hhc1RleHREaXJlY3Rpb25PdmVycmlkZTsKKyAgICBQb3B1cE1l
bnVUeXBlIG1fbWVudVR5cGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5j
cHAKaW5kZXggYWY5N2VjZjRjZWMyMjA5NTFjZjRlZjQwMzFmYzVlYjhhZTg2NDQ5YS4uODBhNjZi
MjRjNjU5YWVkNDBlYTlhNjAwNGY3NDgxNmE1NzIwZmRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVtLmNwcApAQCAtNzUs
NiArNzUsNyBAQCBzdGF0aWMgY29uc3QgaW50IGtUZXh0VG9MYWJlbFBhZGRpbmcgPSAxMDsKIHN0
YXRpYyBjb25zdCBpbnQga0xhYmVsVG9JY29uUGFkZGluZyA9IDU7CiBzdGF0aWMgY29uc3QgaW50
IGtNaW5FbmRPZkxpbmVQYWRkaW5nID0gMjsKIHN0YXRpYyBjb25zdCBUaW1lU3RhbXAga1R5cGVB
aGVhZFRpbWVvdXRNcyA9IDEwMDA7CitzdGF0aWMgY29uc3QgaW50IGtMaW5lUGFkZGluZ0hlaWdo
dCA9IDM7IC8vIFBhZGRpbmcgaGVpZ2h0IHB1dCBhdCB0aGUgdG9wIGFuZCBib3R0b20gb2YgZWFj
aCBsaW5lLgogCiAvLyBUaGUgc2V0dGluZ3MgdXNlZCBmb3IgdGhlIGRyb3AgZG93biBtZW51Lgog
Ly8gVGhpcyBpcyB0aGUgZGVsZWdhdGUgdXNlZCBpZiBub25lIGlzIHByb3ZpZGVkLgpAQCAtOTEy
LDEyICs5MTMsMTUgQEAgdm9pZCBQb3B1cExpc3RCb3g6OnBhaW50Um93KEdyYXBoaWNzQ29udGV4
dCogZ2MsIGNvbnN0IEludFJlY3QmIHJlY3QsIGludCByb3dJbmQKIAogICAgIGdjLT5maWxsUmVj
dChyb3dSZWN0LCBiYWNrQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogCisgICAgLy8gSXQg
ZG9lc24ndCBsb29rIGdvb2QgYnV0IEF1dG9maWxsIHJlcXVpcmVzIHNwZWNpYWwgc3R5bGUgZm9y
IHNlcGFyYXRvci4KKyAgICAvLyBBdXRvZmlsbCBkb2Vzbid0IGhhdmUgcGFkZGluZyBhbmQgI2Rj
ZGNkYyBjb2xvci4KICAgICBpZiAobV9wb3B1cENsaWVudC0+aXRlbUlzU2VwYXJhdG9yKHJvd0lu
ZGV4KSkgeworICAgICAgICBpbnQgcGFkZGluZyA9IHN0eWxlLm1lbnVUeXBlKCkgPT0gUG9wdXBN
ZW51U3R5bGU6OkF1dG9maWxsUG9wdXAgPyAwIDogc2VwYXJhdG9yUGFkZGluZzsKICAgICAgICAg
SW50UmVjdCBzZXBhcmF0b3JSZWN0KAotICAgICAgICAgICAgcm93UmVjdC54KCkgKyBzZXBhcmF0
b3JQYWRkaW5nLAorICAgICAgICAgICAgcm93UmVjdC54KCkgKyBwYWRkaW5nLAogICAgICAgICAg
ICAgcm93UmVjdC55KCkgKyAocm93UmVjdC5oZWlnaHQoKSAtIHNlcGFyYXRvckhlaWdodCkgLyAy
LAotICAgICAgICAgICAgcm93UmVjdC53aWR0aCgpIC0gMiAqIHNlcGFyYXRvclBhZGRpbmcsIHNl
cGFyYXRvckhlaWdodCk7Ci0gICAgICAgIGdjLT5maWxsUmVjdChzZXBhcmF0b3JSZWN0LCB0ZXh0
Q29sb3IsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICAgICAgcm93UmVjdC53aWR0aCgp
IC0gMiAqIHBhZGRpbmcsIHNlcGFyYXRvckhlaWdodCk7CisgICAgICAgIGdjLT5maWxsUmVjdChz
ZXBhcmF0b3JSZWN0LCBzdHlsZS5tZW51VHlwZSgpID09IFBvcHVwTWVudVN0eWxlOjpBdXRvZmls
bFBvcHVwID8gQ29sb3IoMHhkYywgMHhkYywgMHhkYykgOiB0ZXh0Q29sb3IsIENvbG9yU3BhY2VE
ZXZpY2VSR0IpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC05ODgsNiArOTkyLDE2IEBA
IHZvaWQgUG9wdXBMaXN0Qm94OjpwYWludFJvdyhHcmFwaGljc0NvbnRleHQqIGdjLCBjb25zdCBJ
bnRSZWN0JiByZWN0LCBpbnQgcm93SW5kCiAgICAgLy8gRHJhdyB0aGUgdGhlIGxhYmVsIGlmIGFw
cGxpY2FibGUuCiAgICAgaWYgKGl0ZW1MYWJlbC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsK
KworICAgIC8vIEF1dG9maWxsIGxhYmVsIGlzIDAuOSBzbWFsbGVyIHRoYW4gcmVndWxhciBmb250
IHNpemUuCisgICAgaWYgKHN0eWxlLm1lbnVUeXBlKCkgPT0gUG9wdXBNZW51U3R5bGU6OkF1dG9m
aWxsUG9wdXApIHsKKyAgICAgICAgaXRlbUZvbnQgPSBtX3BvcHVwQ2xpZW50LT5pdGVtU3R5bGUo
cm93SW5kZXgpLmZvbnQoKTsKKyAgICAgICAgRm9udERlc2NyaXB0aW9uIGQgPSBpdGVtRm9udC5m
b250RGVzY3JpcHRpb24oKTsKKyAgICAgICAgZC5zZXRDb21wdXRlZFNpemUoZC5jb21wdXRlZFNp
emUoKSAqIDAuOSk7CisgICAgICAgIGl0ZW1Gb250ID0gRm9udChkLCBpdGVtRm9udC5sZXR0ZXJT
cGFjaW5nKCksIGl0ZW1Gb250LndvcmRTcGFjaW5nKCkpOworICAgICAgICBpdGVtRm9udC51cGRh
dGUoMCk7CisgICAgfQorCiAgICAgVGV4dFJ1biBsYWJlbFRleHRSdW4oaXRlbUxhYmVsLmNoYXJh
Y3RlcnMoKSwgaXRlbUxhYmVsLmxlbmd0aCgpLCBmYWxzZSwgMCwgMCwgVGV4dFJ1bjo6QWxsb3dU
cmFpbGluZ0V4cGFuc2lvbiwgcnRsLCBzdHlsZS5oYXNUZXh0RGlyZWN0aW9uT3ZlcnJpZGUoKSk7
CiAgICAgaWYgKHJpZ2h0QWxpZ25lZCkKICAgICAgICAgdGV4dFggPSBtYXgoMCwgbV9wb3B1cENs
aWVudC0+Y2xpZW50UGFkZGluZ0xlZnQoKSAtIG1fcG9wdXBDbGllbnQtPmNsaWVudEluc2V0TGVm
dCgpKTsKQEAgLTExMDQsMTMgKzExMTgsMTggQEAgaW50IFBvcHVwTGlzdEJveDo6Z2V0Um93SGVp
Z2h0KGludCBpbmRleCkKICAgICBpZiAobV9wb3B1cENsaWVudC0+aXRlbVN0eWxlKGluZGV4KS5p
c0Rpc3BsYXlOb25lKCkpCiAgICAgICAgIHJldHVybiAwOwogCisgICAgLy8gU2VwYXJhdG9yIHJv
dyBoZWlnaHQgaXMgdGhlIHNhbWUgc2l6ZSBhcyBpdHNlbGYuCisgICAgaWYgKG1fcG9wdXBDbGll
bnQtPml0ZW1Jc1NlcGFyYXRvcihpbmRleCkpCisgICAgICAgIHJldHVybiBzZXBhcmF0b3JIZWln
aHQ7CisKICAgICBTdHJpbmcgaWNvbiA9IG1fcG9wdXBDbGllbnQtPml0ZW1JY29uKGluZGV4KTsK
ICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlKEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZShpY29u
LnV0ZjgoKS5kYXRhKCkpKTsKIAogICAgIGludCBmb250SGVpZ2h0ID0gZ2V0Um93Rm9udChpbmRl
eCkuZm9udE1ldHJpY3MoKS5oZWlnaHQoKTsKICAgICBpbnQgaWNvbkhlaWdodCA9IChpbWFnZSAm
JiAhaW1hZ2UtPmlzTnVsbCgpKSA/IGltYWdlLT5yZWN0KCkuaGVpZ2h0KCkgOiAwOwogCi0gICAg
cmV0dXJuIG1heChmb250SGVpZ2h0LCBpY29uSGVpZ2h0KTsKKyAgICBpbnQgbGluZVBhZGRpbmdI
ZWlnaHQgPSBtX3BvcHVwQ2xpZW50LT5tZW51U3R5bGUoKS5tZW51VHlwZSgpID09IFBvcHVwTWVu
dVN0eWxlOjpBdXRvZmlsbFBvcHVwID8ga0xpbmVQYWRkaW5nSGVpZ2h0IDogMDsKKyAgICByZXR1
cm4gbWF4KGZvbnRIZWlnaHQsIGljb25IZWlnaHQpICsgbGluZVBhZGRpbmdIZWlnaHQgKiAyOwog
fQogCiBJbnRSZWN0IFBvcHVwTGlzdEJveDo6Z2V0Um93Qm91bmRzKGludCBpbmRleCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNTJhN2JiZDRmODJjOWQ2OWY2ZTQwNmNiYzM2ZjMzYWY3
YWVhY2JhNy4uZDQzNzQzMGM1YzA4ZWIzMTJmNjdkZDhjYTQ1ZTE1MDdhYzMzOGY3OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0wNC0xNSAgTmFva2kg
VGFrYW5vICA8dGFrYW5vLm5hb2tpQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbQ2hyb21pdW1dVUkgcG9saXNoZXMgYW5kIHR3ZWFr
cyB0byBBdXRvZmlsbCBkcm9wZG93biBtZW51LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTg1MDUKKworICAgICAgICAqIHNyYy9BdXRvRmlsbFBvcHVw
TWVudUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkF1dG9GaWxsUG9wdXBNZW51Q2xpZW50
Ojppbml0aWFsaXplKTogU2V0IEF1dG9maWxsUG9wdXAgZm9yIG1lbnVTdHlsZS4KKwogMjAxMS0w
NC0xNSAgVnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvQXV0b0ZpbGxQb3B1cE1lbnVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvQXV0b0ZpbGxQb3B1cE1lbnVDbGllbnQuY3BwCmluZGV4IGQwNGM1N2NiMDFhZjAw
OGRmZmVmOTNhZmUxNzJkMWQ0YWY4MjkwNzQuLmM3M2UwNTllYmIzMDg5MzkwMGM5MTA2MTMzMGMx
NWRkNjBhNWZhMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0F1dG9G
aWxsUG9wdXBNZW51Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9B
dXRvRmlsbFBvcHVwTWVudUNsaWVudC5jcHAKQEAgLTI5MSw5ICsyOTEsMTUgQEAgdm9pZCBBdXRv
RmlsbFBvcHVwTWVudUNsaWVudDo6aW5pdGlhbGl6ZSgKICAgICByZWd1bGFyRm9udC51cGRhdGUo
dGV4dEZpZWxkLT5kb2N1bWVudCgpLT5zdHlsZVNlbGVjdG9yKCktPmZvbnRTZWxlY3RvcigpKTsK
ICAgICAvLyBUaGUgZGlyZWN0aW9uIG9mIHRleHQgaW4gcG9wdXAgbWVudSBpcyBzZXQgdGhlIHNh
bWUgYXMgdGhlIGRpcmVjdGlvbiBvZgogICAgIC8vIHRoZSBpbnB1dCBlbGVtZW50OiB0ZXh0Rmll
bGQuCi0gICAgbV9yZWd1bGFyU3R5bGUuc2V0KG5ldyBQb3B1cE1lbnVTdHlsZShDb2xvcjo6Ymxh
Y2ssIENvbG9yOjp3aGl0ZSwgcmVndWxhckZvbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0cnVlLCBmYWxzZSwgTGVuZ3RoKFdlYkNvcmU6OkZpeGVkKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRGaWVsZC0+cmVuZGVy
ZXIoKS0+c3R5bGUoKS0+ZGlyZWN0aW9uKCksIHRleHRGaWVsZC0+cmVuZGVyZXIoKS0+c3R5bGUo
KS0+dW5pY29kZUJpZGkoKSA9PSBPdmVycmlkZSkpOworICAgIG1fcmVndWxhclN0eWxlLnNldChu
ZXcgUG9wdXBNZW51U3R5bGUoQ29sb3I6OmJsYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQ29sb3I6OndoaXRlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVndWxhckZvbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0cnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBMZW5ndGgoV2ViQ29yZTo6Rml4ZWQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdGV4dEZpZWxkLT5yZW5kZXJlcigpLT5zdHlsZSgpLT5kaXJlY3Rpb24oKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRGaWVsZC0+cmVu
ZGVyZXIoKS0+c3R5bGUoKS0+dW5pY29kZUJpZGkoKSA9PSBPdmVycmlkZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvcHVwTWVudVN0eWxlOjpBdXRvZmlsbFBv
cHVwKSk7CiAKICAgICBGb250RGVzY3JpcHRpb24gd2FybmluZ0ZvbnREZXNjcmlwdGlvbiA9IHJl
Z3VsYXJGb250LmZvbnREZXNjcmlwdGlvbigpOwogICAgIHdhcm5pbmdGb250RGVzY3JpcHRpb24u
c2V0SXRhbGljKHRydWUpOwpAQCAtMzA2LDcgKzMxMiw4IEBAIHZvaWQgQXV0b0ZpbGxQb3B1cE1l
bnVDbGllbnQ6OmluaXRpYWxpemUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtX3JlZ3VsYXJTdHlsZS0+aXNEaXNwbGF5Tm9uZSgpLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9yZWd1bGFyU3R5bGUtPnRleHRJbmRlbnQoKSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcmVndWxhclN0eWxl
LT50ZXh0RGlyZWN0aW9uKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtX3JlZ3VsYXJTdHlsZS0+aGFzVGV4dERpcmVjdGlvbk92ZXJyaWRlKCkpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcmVndWxhclN0eWxlLT5oYXNU
ZXh0RGlyZWN0aW9uT3ZlcnJpZGUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFBvcHVwTWVudVN0eWxlOjpBdXRvZmlsbFBvcHVwKSk7CiB9CiAKIHZvaWQgQXV0
b0ZpbGxQb3B1cE1lbnVDbGllbnQ6OnNldFN1Z2dlc3Rpb25zKGNvbnN0IFdlYlZlY3RvcjxXZWJT
dHJpbmc+JiBuYW1lcywK
</data>

          </attachment>
      

    </bug>

</bugzilla>