<?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>111873</bug_id>
          
          <creation_ts>2013-03-08 11:06:41 -0800</creation_ts>
          <short_desc>[Chromium] chromium/linux breaks expectation of select popup background due to bad UA css rules</short_desc>
          <delta_ts>2013-04-12 09:01:07 -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>PC</rep_platform>
          <op_sys>Linux</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>Minor</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="xiyuan">xiyuan</reporter>
          <assigned_to name="xiyuan">xiyuan</assigned_to>
          <cc>eric</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>hclam</cc>
    
    <cc>info</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>mifenton</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>tkent</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>851336</commentid>
    <comment_count>0</comment_count>
    <who name="xiyuan">xiyuan</who>
    <bug_when>2013-03-08 11:06:41 -0800</bug_when>
    <thetext>Related chromium bug http://crbug.com/165031

The following UA css rule in themeChromiumLinux.css breaks some website&apos;s expectation that select background-color would be used as the popup&apos;s background-color:

select:not([size]):not([multiple]) option,
select[size=&quot;0&quot;] option,
select[size=&quot;1&quot;] option {
    background-color: #f7f7f7;
}

Example of such web page http://jsfiddle.net/rbyers/VEvCr/ (from rbyers@chromium.org)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851354</commentid>
    <comment_count>1</comment_count>
      <attachid>192254</attachid>
    <who name="xiyuan">xiyuan</who>
    <bug_when>2013-03-08 11:23:03 -0800</bug_when>
    <thetext>Created attachment 192254
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851374</commentid>
    <comment_count>2</comment_count>
      <attachid>192254</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2013-03-08 11:45:07 -0800</bug_when>
    <thetext>Comment on attachment 192254
Patch

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

&gt; Source/WebCore/css/themeChromiumLinux.css:33
&gt;  select {

Nit: I would probably add a comment here saying that on Linux, selects look like buttons with a drop down triangle.

&gt; Source/WebCore/platform/chromium/PopupListBox.cpp:407
&gt; +        // Map background color from default button face to menu color.

This should be a &apos;why&apos; comment, not a &apos;what&apos; comment.  For example:
On other platforms, the &lt;option&gt; background color is the same as the &lt;select&gt; background color. On Linux, that makes the &lt;option&gt; background color very dark, so by default, try to use a lighter background color for &lt;option&gt;s.

&gt; Source/WebCore/platform/chromium/PopupListBox.cpp:409
&gt; +        if (RenderTheme::defaultTheme()-&gt;systemColor(CSSValueButtonface) == backColor)
&gt; +            backColor = RenderTheme::defaultTheme()-&gt;systemColor(CSSValueMenu);

I don&apos;t think this is correct since this is only looking at the &lt;option&gt;.  For example, if someone explicitly had &quot;option { background-color: #ddd; }&quot;, we would override the color.

I think you want to add a bool to PopupMenuStyle like m_hasCustomBackgroundColor and in itemStyle(), set m_hasCustomBackgroundColor if the &lt;select&gt; is styled (maybe isControlStyled?) and the option is transparent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851391</commentid>
    <comment_count>3</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2013-03-08 11:57:46 -0800</bug_when>
    <thetext>I wonder if we can write a test for this using getComputedStyle on an &lt;option&gt; element.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851600</commentid>
    <comment_count>4</comment_count>
      <attachid>192254</attachid>
    <who name="xiyuan">xiyuan</who>
    <bug_when>2013-03-08 16:28:25 -0800</bug_when>
    <thetext>Comment on attachment 192254
Patch

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

&gt;&gt; Source/WebCore/css/themeChromiumLinux.css:33
&gt;&gt;  select {
&gt; 
&gt; Nit: I would probably add a comment here saying that on Linux, selects look like buttons with a drop down triangle.

Done.

&gt;&gt; Source/WebCore/platform/chromium/PopupListBox.cpp:407
&gt;&gt; +        // Map background color from default button face to menu color.
&gt; 
&gt; This should be a &apos;why&apos; comment, not a &apos;what&apos; comment.  For example:
&gt; On other platforms, the &lt;option&gt; background color is the same as the &lt;select&gt; background color. On Linux, that makes the &lt;option&gt; background color very dark, so by default, try to use a lighter background color for &lt;option&gt;s.

Done. Thanks for the sample. It&apos;s well put.

&gt;&gt; Source/WebCore/platform/chromium/PopupListBox.cpp:409
&gt;&gt; +            backColor = RenderTheme::defaultTheme()-&gt;systemColor(CSSValueMenu);
&gt; 
&gt; I don&apos;t think this is correct since this is only looking at the &lt;option&gt;.  For example, if someone explicitly had &quot;option { background-color: #ddd; }&quot;, we would override the color.
&gt; 
&gt; I think you want to add a bool to PopupMenuStyle like m_hasCustomBackgroundColor and in itemStyle(), set m_hasCustomBackgroundColor if the &lt;select&gt; is styled (maybe isControlStyled?) and the option is transparent.

Right. I missed that.

Added a m_hasCustomBackgroundColor to PopupMenuStyle as suggested and set its value in RenderMenuList. However, isControlStyled depends on knowing an element&apos;s border/backgroundLayer/backgroundColor etc and hard to use out side StyleResolver context. I found a way to get UA style rules and set the custom background flag for &lt;select&gt; by comparing the UA rule&apos;s background with the current style&apos;s background.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851601</commentid>
    <comment_count>5</comment_count>
    <who name="xiyuan">xiyuan</who>
    <bug_when>2013-03-08 16:30:13 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; I wonder if we can write a test for this using getComputedStyle on an &lt;option&gt; element.

getComputedStyle seems not able to get the actual background color of the popup list. :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851716</commentid>
    <comment_count>6</comment_count>
      <attachid>192336</attachid>
    <who name="xiyuan">xiyuan</who>
    <bug_when>2013-03-08 22:32:12 -0800</bug_when>
    <thetext>Created attachment 192336
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851718</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-08 22:36:34 -0800</bug_when>
    <thetext>Attachment 192336 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/WebCore/css/themeChromiumLinux.css&apos;, u&apos;Source/WebCore/platform/PopupMenuStyle.h&apos;, u&apos;Source/WebCore/platform/chromium/PopupListBox.cpp&apos;, u&apos;Source/WebCore/rendering/RenderMenuList.cpp&apos;, u&apos;Source/WebCore/rendering/RenderMenuList.h&apos;, u&apos;Source/WebCore/rendering/RenderSearchField.cpp&apos;, u&apos;Source/WebCore/rendering/RenderThemeChromiumDefault.cpp&apos;, u&apos;Source/WebKit/chromium/ChangeLog&apos;, u&apos;Source/WebKit/chromium/src/AutofillPopupMenuClient.cpp&apos;, u&apos;Source/WebKit/chromium/tests/PopupMenuTest.cpp&apos;]&quot; exit_code: 1
Source/WebKit/chromium/src/AutofillPopupMenuClient.cpp:294:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/chromium/src/AutofillPopupMenuClient.cpp:304:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 2 in 11 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>851824</commentid>
    <comment_count>8</comment_count>
      <attachid>192351</attachid>
    <who name="xiyuan">xiyuan</who>
    <bug_when>2013-03-09 13:43:57 -0800</bug_when>
    <thetext>Created attachment 192351
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852456</commentid>
    <comment_count>9</comment_count>
      <attachid>192351</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2013-03-11 10:40:57 -0700</bug_when>
    <thetext>Comment on attachment 192351
Patch

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

&gt; Source/WebCore/platform/PopupMenuStyle.h:40
&gt; +    PopupMenuStyle(const Color&amp; foreground, const Color&amp; background, const Font&amp; font, bool visible, bool isDisplayNone, Length textIndent, TextDirection textDirection, bool hasTextDirectionOverride, BackgroundColorType backgroundColorType, PopupMenuType menuType = SelectPopup)

I would probably make BackgroundColorType an optional argument and make the default DefaultBackgroundColor since most of the callers don&apos;t care about this parameter.

&gt; Source/WebCore/rendering/RenderMenuList.cpp:162
&gt; +    bool backgroundColorChanged = !oldStyle || oldStyle-&gt;visitedDependentColor(CSSPropertyBackgroundColor) != style()-&gt;visitedDependentColor(CSSPropertyBackgroundColor);
&gt; +    if (backgroundColorChanged)
&gt; +        updateHasCustomBackgroundColor();

I think this is unnecessary and doesn&apos;t work.  This code only runs if the style is changed dynamically.

I would remove m_hasCustomBackgroundColor and instead pass in the &lt;select&gt; background color to itemStyle as a param.  Then you can use CustomBackgroundColor if the &lt;select&gt; background color doesn&apos;t match the passed in value and the option is transparent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852509</commentid>
    <comment_count>10</comment_count>
      <attachid>192351</attachid>
    <who name="xiyuan">xiyuan</who>
    <bug_when>2013-03-11 11:30:00 -0700</bug_when>
    <thetext>Comment on attachment 192351
Patch

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

&gt;&gt; Source/WebCore/platform/PopupMenuStyle.h:40
&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, BackgroundColorType backgroundColorType, PopupMenuType menuType = SelectPopup)
&gt; 
&gt; I would probably make BackgroundColorType an optional argument and make the default DefaultBackgroundColor since most of the callers don&apos;t care about this parameter.

Done.

&gt;&gt; Source/WebCore/rendering/RenderMenuList.cpp:162
&gt;&gt; +        updateHasCustomBackgroundColor();
&gt; 
&gt; I think this is unnecessary and doesn&apos;t work.  This code only runs if the style is changed dynamically.
&gt; 
&gt; I would remove m_hasCustomBackgroundColor and instead pass in the &lt;select&gt; background color to itemStyle as a param.  Then you can use CustomBackgroundColor if the &lt;select&gt; background color doesn&apos;t match the passed in value and the option is transparent.

Removed the unnecessary flag and logic and set CustomBackgroundColor if the background color is tinted from &lt;option&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852511</commentid>
    <comment_count>11</comment_count>
      <attachid>192518</attachid>
    <who name="xiyuan">xiyuan</who>
    <bug_when>2013-03-11 11:30:53 -0700</bug_when>
    <thetext>Created attachment 192518
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852529</commentid>
    <comment_count>12</comment_count>
      <attachid>192518</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2013-03-11 11:47:24 -0700</bug_when>
    <thetext>Comment on attachment 192518
Patch

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

Looking good.  Just some final style nits.

&gt; Source/WebCore/ChangeLog:19
&gt; +        No new tests (no change in behaviour).

I would write: No new tests, this tests &lt;select&gt; popups and can be verified by ManualTests/select-scroll.html.

&gt; Source/WebCore/css/themeChromiumLinux.css:34
&gt; +    /* Selects look like buttons with a drop down triangle on Linux */

Nit: End the sentence with a period.

&gt; Source/WebCore/rendering/RenderMenuList.cpp:469
&gt; +    getItemBackgroundColorAndFlag(listIndex, itemBackgroundColor, itemHasCustomBackgroundColor);

AndFlag doesn&apos;t seem to add much to this function.  I would just call it getItemBackgroundColor.

&gt; Source/WebCore/rendering/RenderMenuList.cpp:477
&gt; +void RenderMenuList::getItemBackgroundColorAndFlag(unsigned listIndex, Color&amp; outItemBackgroundColor, bool&amp; outItemHasCustomBackgroundColor) const

I don&apos;t think it&apos;s WebKit style to prefix parameters with &apos;out&apos;.  I would drop that prefix.

&gt; Source/WebCore/rendering/RenderMenuList.h:118
&gt; +    void getItemBackgroundColorAndFlag(unsigned listIndex, Color&amp; outItemBackgroundColor, bool&amp; outItemHasCustomBackgroundColor) const;

Nit: Color does not need to be named.

&gt; Source/WebKit/chromium/src/AutofillPopupMenuClient.cpp:295
&gt;  

Should this be Custom or Default?  I guess I would use Default since it&apos;s the original value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852571</commentid>
    <comment_count>13</comment_count>
      <attachid>192527</attachid>
    <who name="xiyuan">xiyuan</who>
    <bug_when>2013-03-11 12:27:24 -0700</bug_when>
    <thetext>Created attachment 192527
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852578</commentid>
    <comment_count>14</comment_count>
      <attachid>192518</attachid>
    <who name="xiyuan">xiyuan</who>
    <bug_when>2013-03-11 12:32:02 -0700</bug_when>
    <thetext>Comment on attachment 192518
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:19
&gt;&gt; +        No new tests (no change in behaviour).
&gt; 
&gt; I would write: No new tests, this tests &lt;select&gt; popups and can be verified by ManualTests/select-scroll.html.

Done

&gt;&gt; Source/WebCore/css/themeChromiumLinux.css:34
&gt;&gt; +    /* Selects look like buttons with a drop down triangle on Linux */
&gt; 
&gt; Nit: End the sentence with a period.

Done.

&gt;&gt; Source/WebCore/rendering/RenderMenuList.cpp:469
&gt;&gt; +    getItemBackgroundColorAndFlag(listIndex, itemBackgroundColor, itemHasCustomBackgroundColor);
&gt; 
&gt; AndFlag doesn&apos;t seem to add much to this function.  I would just call it getItemBackgroundColor.

Done.

&gt;&gt; Source/WebCore/rendering/RenderMenuList.cpp:477
&gt;&gt; +void RenderMenuList::getItemBackgroundColorAndFlag(unsigned listIndex, Color&amp; outItemBackgroundColor, bool&amp; outItemHasCustomBackgroundColor) const
&gt; 
&gt; I don&apos;t think it&apos;s WebKit style to prefix parameters with &apos;out&apos;.  I would drop that prefix.

Done.

&gt;&gt; Source/WebCore/rendering/RenderMenuList.h:118
&gt;&gt; +    void getItemBackgroundColorAndFlag(unsigned listIndex, Color&amp; outItemBackgroundColor, bool&amp; outItemHasCustomBackgroundColor) const;
&gt; 
&gt; Nit: Color does not need to be named.

Done.

&gt;&gt; Source/WebKit/chromium/src/AutofillPopupMenuClient.cpp:295
&gt;&gt;  
&gt; 
&gt; Should this be Custom or Default?  I guess I would use Default since it&apos;s the original value.

Default is subject to the color mapping and is more correct because we don&apos;t want that to happen for autofill popup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852732</commentid>
    <comment_count>15</comment_count>
      <attachid>192527</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-11 14:37:31 -0700</bug_when>
    <thetext>Comment on attachment 192527
Patch

Clearing flags on attachment: 192527

Committed r145406: &lt;http://trac.webkit.org/changeset/145406&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852734</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-11 14:37:36 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853182</commentid>
    <comment_count>17</comment_count>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2013-03-12 01:30:53 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853183</commentid>
    <comment_count>18</comment_count>
      <attachid>192664</attachid>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2013-03-12 01:30:55 -0700</bug_when>
    <thetext>Created attachment 192664
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853185</commentid>
    <comment_count>19</comment_count>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2013-03-12 01:32:11 -0700</bug_when>
    <thetext>Whoops.. webkit-patch failed me..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>874776</commentid>
    <comment_count>20</comment_count>
    <who name="xiyuan">xiyuan</who>
    <bug_when>2013-04-12 09:01:07 -0700</bug_when>
    <thetext>*** Bug 69619 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192254</attachid>
            <date>2013-03-08 11:23:03 -0800</date>
            <delta_ts>2013-03-08 22:32:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111873-20130308111906.patch</filename>
            <type>text/plain</type>
            <size>3556</size>
            <attacher name="xiyuan">xiyuan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1MjMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmQ3MWQzMDk4MDU5OTBj
MmRmMjMyNTAxYjVmMjJlY2NkMTIwZDZmMy4uYTdmZjIzZThiNmMzNzk5YTg3NGRhMDRiYThkZGUw
MWYyNDU2YzE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEzLTAzLTA4ICBYaXl1
YW4gWGlhICA8eGl5dWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIGNocm9t
aXVtL2xpbnV4IGJyZWFrcyBleHBlY3RhdGlvbiBvZiBzZWxlY3QgcG9wdXAgYmFja2dyb3VuZCBk
dWUgdG8gYmFkIFVBIGNzcyBydWxlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTExODczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChubyBjaGFuZ2UgaW4gYmVoYXZpb3VyKS4KKwor
ICAgICAgICAqIGNzcy90aGVtZUNocm9taXVtTGludXguY3NzOgorICAgICAgICAoc2VsZWN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cExpc3RCb3guY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UG9wdXBMaXN0Qm94OjpwYWludFJvdyk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclRoZW1lQ2hyb21pdW1EZWZhdWx0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRo
ZW1lQ2hyb21pdW1EZWZhdWx0OjpzeXN0ZW1Db2xvcik6CisKIDIwMTMtMDMtMDggIEdsZW5uIEhh
cnRtYW5uICA8aGFydG1hbm5nQGNocm9taXVtLm9yZz4KIAogICAgICAgIEFkZGluZyBhIGhvb2sg
dG8gY29sbGVjdCBkYXRhIGZvciBhIEdvb2dsZSBVTUEgaGlzdG9ncmFtIHRvIHRyYWNrIHdoZW4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy90aGVtZUNocm9taXVtTGludXguY3NzIGIv
U291cmNlL1dlYkNvcmUvY3NzL3RoZW1lQ2hyb21pdW1MaW51eC5jc3MKaW5kZXggZGVlODQzNjhh
MzZmMThmODU0ZjZiNWM5NTQxMGFkZGUzMzJjNzc4NS4uZDI3YTUxY2M5Nzc1OTAyOGMzNTVjZGQ5
YjY0MzIxYThmZjU2NWQwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3RoZW1lQ2hy
b21pdW1MaW51eC5jc3MKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3RoZW1lQ2hyb21pdW1MaW51
eC5jc3MKQEAgLTMxLDEzICszMSw3IEBACiAvKiBUaGVzZSBzdHlsZXMgb3ZlcnJpZGUgb3RoZXIg
dXNlci1hZ2VudCBzdHlsZXMgZm9yIENocm9taXVtIG9uIExpbnV4LiAqLwogCiBzZWxlY3Qgewot
ICAgIGJhY2tncm91bmQtY29sb3I6ICNkZGRkZGQ7Ci19Ci0KLXNlbGVjdDpub3QoW3NpemVdKTpu
b3QoW211bHRpcGxlXSkgb3B0aW9uLAotc2VsZWN0W3NpemU9IjAiXSBvcHRpb24sCi1zZWxlY3Rb
c2l6ZT0iMSJdIG9wdGlvbiB7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogI2Y3ZjdmNzsKKyAgICBi
YWNrZ3JvdW5kLWNvbG9yOiBCdXR0b25GYWNlOwogfQogCiBpbnB1dFt0eXBlPXJhbmdlXSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cExpc3RCb3gu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBMaXN0Qm94LmNwcApp
bmRleCA1Yzc2YWUxMDFmMDA2MGFkZjU2Zjg2ZWVhZjcxZGExMTk4YmM0NzcwLi40NTE5YjIyMmJl
ODQ5YTE4MmM1MGUzNjRjNzg5NzRiOTgzZmRkMzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cExpc3RCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTGlzdEJveC5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQb3B1cExpc3RCb3guaCIKIAorI2luY2x1ZGUg
IkNTU1ZhbHVlS2V5d29yZHMuaCIKICNpbmNsdWRlICJGb250LmgiCiAjaW5jbHVkZSAiRm9udFNl
bGVjdG9yLmgiCiAjaW5jbHVkZSAiRnJhbWVsZXNzU2Nyb2xsVmlld0NsaWVudC5oIgpAQCAtNDAx
LDYgKzQwMiwxMyBAQCB2b2lkIFBvcHVwTGlzdEJveDo6cGFpbnRSb3coR3JhcGhpY3NDb250ZXh0
KiBnYywgY29uc3QgSW50UmVjdCYgcmVjdCwgaW50IHJvd0luZAogICAgIH0gZWxzZSB7CiAgICAg
ICAgIGJhY2tDb2xvciA9IHN0eWxlLmJhY2tncm91bmRDb2xvcigpOwogICAgICAgICB0ZXh0Q29s
b3IgPSBzdHlsZS5mb3JlZ3JvdW5kQ29sb3IoKTsKKworI2lmIE9TKExJTlVYKQorICAgICAgICAv
LyBNYXAgYmFja2dyb3VuZCBjb2xvciBmcm9tIGRlZmF1bHQgYnV0dG9uIGZhY2UgdG8gbWVudSBj
b2xvci4KKyAgICAgICAgaWYgKFJlbmRlclRoZW1lOjpkZWZhdWx0VGhlbWUoKS0+c3lzdGVtQ29s
b3IoQ1NTVmFsdWVCdXR0b25mYWNlKSA9PSBiYWNrQ29sb3IpCisgICAgICAgICAgICBiYWNrQ29s
b3IgPSBSZW5kZXJUaGVtZTo6ZGVmYXVsdFRoZW1lKCktPnN5c3RlbUNvbG9yKENTU1ZhbHVlTWVu
dSk7CisjZW5kaWYKKwogICAgICAgICAvLyBGSVhNRTogZm9yIG5vdyB0aGUgbGFiZWwgY29sb3Ig
aXMgaGFyZC1jb2RlZC4gSXQgc2hvdWxkIGJlIGFkZGVkIHRvCiAgICAgICAgIC8vIHRoZSBQb3B1
cE1lbnVTdHlsZS4KICAgICAgICAgbGFiZWxDb2xvciA9IENvbG9yKDExNSwgMTE1LCAxMTUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1E
ZWZhdWx0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVt
RGVmYXVsdC5jcHAKaW5kZXggZDY0MzcyOWFkOThmYWMzZjY4NzkwZDM2ZDk0YjZkN2U4NDU0YThm
Ny4uMjRmZWY3MDBkNTE3YjZkM2FhZGU5ZjE4NmIzNjAzZmY3NjY2MjhiNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1EZWZhdWx0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bURlZmF1bHQu
Y3BwCkBAIC05MSw5ICs5MSwxMiBAQCBSZW5kZXJUaGVtZUNocm9taXVtRGVmYXVsdDo6flJlbmRl
clRoZW1lQ2hyb21pdW1EZWZhdWx0KCkKIENvbG9yIFJlbmRlclRoZW1lQ2hyb21pdW1EZWZhdWx0
OjpzeXN0ZW1Db2xvcihpbnQgY3NzVmFsdWVJZCkgY29uc3QKIHsKICAgICBzdGF0aWMgY29uc3Qg
Q29sb3IgZGVmYXVsdEJ1dHRvbkdyYXlDb2xvcigweGZmZGRkZGRkKTsKKyAgICBzdGF0aWMgY29u
c3QgQ29sb3IgZGVmYXVsdE1lbnVDb2xvcigweGZmZjdmN2Y3KTsKIAogICAgIGlmIChjc3NWYWx1
ZUlkID09IENTU1ZhbHVlQnV0dG9uZmFjZSkKICAgICAgICAgcmV0dXJuIGRlZmF1bHRCdXR0b25H
cmF5Q29sb3I7CisgICAgaWYgKGNzc1ZhbHVlSWQgPT0gQ1NTVmFsdWVNZW51KQorICAgICAgICBy
ZXR1cm4gZGVmYXVsdE1lbnVDb2xvcjsKICAgICByZXR1cm4gUmVuZGVyVGhlbWU6OnN5c3RlbUNv
bG9yKGNzc1ZhbHVlSWQpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192336</attachid>
            <date>2013-03-08 22:32:12 -0800</date>
            <delta_ts>2013-03-09 13:43:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111873-20130308222814.patch</filename>
            <type>text/plain</type>
            <size>17743</size>
            <attacher name="xiyuan">xiyuan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1MzAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDFjNWJhOTY0YzJlYTNm
YTk4ODNhYWI1YzRhNjk4ZTNjZTg1ODU3ZS4uNGZjYTQyZjA5YjE0ZGUxY2NjM2Q3MzRiYmQ3NWIx
OWViODM3ZTYzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDEzLTAzLTA4ICBYaXl1
YW4gWGlhICA8eGl5dWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIGNocm9t
aXVtL2xpbnV4IGJyZWFrcyBleHBlY3RhdGlvbiBvZiBzZWxlY3QgcG9wdXAgYmFja2dyb3VuZCBk
dWUgdG8gYmFkIFVBIGNzcyBydWxlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTExODczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgT24gbGludXggdGhlIGRlZmF1bHQgPHNlbGVjdD4gYmFja2dyb3VuZCBj
b2xvciBpcyB0b28gZGFyayB0byB1c2UgYXMgdGhlCisgICAgICAgIHBvcHVwIGJhY2tncm91bmQg
Y29sb3IuICBMYXN0IGZpeGVzOgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTQxMTUgYW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01NjAyMworICAgICAgICBhdHRlbXB0IHRvIGZpeCB0aGUgcHJvYmxlbSBi
eSBhcHBseWluZyBhIGxpZ2h0ZXIgYmFja2dyb3VuZCB1c2luZworICAgICAgICBzcGVjaWFsIDxv
cHRpb24+IHNlbGVjdG9yLiBUaGlzIGJyZWFrcyBleHBlY3RhdGlvbnMgb2Ygc29tZSB3ZWJzaXRl
cy4KKworICAgICAgICBUaGlzIENMIHJldmVydHMgdGhlIGJhZCBVQSBjc3MgcnVsZXMgYWJvdmUg
YW5kIHByb3ZpZGVzIHRoZSBsaWdodGVyCisgICAgICAgIGJhY2tncm91bmQgY29sb3IgaWYgPHNl
bGVjdD4gYW5kIDxvcHRpb24+IGVsZW1lbnRzIGFyZSB1c2luZyB0aGUgZGVmYXVsdAorICAgICAg
ICBiYWNrZ3JvdW5kLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAobm8gY2hhbmdlIGluIGJlaGF2
aW91cikuCisKKyAgICAgICAgKiBjc3MvdGhlbWVDaHJvbWl1bUxpbnV4LmNzczoKKyAgICAgICAg
KHNlbGVjdCk6CisgICAgICAgICogcGxhdGZvcm0vUG9wdXBNZW51U3R5bGUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlBvcHVwTWVudVN0eWxlOjpQb3B1cE1lbnVTdHlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpQb3B1cE1lbnVTdHlsZTo6aGFzQ3VzdG9tQmFja2dyb3VuZENvbG9yKToKKyAgICAgICAg
KFBvcHVwTWVudVN0eWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cExpc3RC
b3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9wdXBMaXN0Qm94OjpwYWludFJvdyk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlck1lbnVMaXN0OjpSZW5kZXJNZW51TGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJN
ZW51TGlzdDo6c3R5bGVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWVudUxp
c3Q6OnVwZGF0ZUhhc0N1c3RvbUJhY2tncm91bmRDb2xvcik6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1lbnVMaXN0OjppdGVtU3R5bGUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTWVudUxpc3Q6OmdldEl0ZW1CYWNrZ3JvdW5kQ29sb3JBbmRGbGFnKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1lbnVMaXN0OjptZW51U3R5bGUpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5oOgorICAgICAgICAoUmVuZGVyTWVudUxpc3QpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTZWFyY2hGaWVsZDo6bWVudVN0eWxlKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyVGhlbWVDaHJvbWl1bURlZmF1bHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVDaHJvbWl1bURlZmF1bHQ6OnN5c3RlbUNvbG9yKToKKwogMjAxMy0wMy0wOCAgRGF2aWQg
S2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEJVSUxEIEZJWDogTWFrZSBX
ZWJDb3JlIGxpbmsgZm9yIGlPUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA5ZjQ0NzQz
MTY2NDljMDk2ZjVhNGU4YzY3MGViMWUzYzkwYjE3NDM3Li4wM2I0OGJhMjhiYzg5M2NhYjVjYzVi
ODliMjAxYmNjY2E5NjJiNGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE2IEBACisyMDEzLTAzLTA4ICBYaXl1YW4gWGlhICA8eGl5dWFuQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBbQ2hyb21pdW1dIGNocm9taXVtL2xpbnV4IGJyZWFrcyBleHBlY3RhdGlvbiBvZiBz
ZWxlY3QgcG9wdXAgYmFja2dyb3VuZCBkdWUgdG8gYmFkIFVBIGNzcyBydWxlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTExODczCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIFBvcHVwTWVudVN0
eWxlIGNvbnN0cnVjdG9yIGNhbGwgc2l0ZXMuCisKKyAgICAgICAgKiBzcmMvQXV0b2ZpbGxQb3B1
cE1lbnVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpBdXRvZmlsbFBvcHVwTWVudUNsaWVu
dDo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogdGVzdHMvUG9wdXBNZW51VGVzdC5jcHA6CisKIDIw
MTMtMDMtMDggIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQuICBSb2xsZWQgQ2hyb21pdW0gREVQUyB0byByMTg3MDM3LiAgUmVx
dWVzdGVkIGJ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvdGhlbWVDaHJvbWl1bUxp
bnV4LmNzcyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy90aGVtZUNocm9taXVtTGludXguY3NzCmluZGV4
IGRlZTg0MzY4YTM2ZjE4Zjg1NGY2YjVjOTU0MTBhZGRlMzMyYzc3ODUuLmE3OTU2Yjg2NTVjZWM5
NTk0MzU4MjQ1NTlmOTEzZWIzNDZkNWE1YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy90aGVtZUNocm9taXVtTGludXguY3NzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy90aGVtZUNo
cm9taXVtTGludXguY3NzCkBAIC0zMSwxMyArMzEsOCBAQAogLyogVGhlc2Ugc3R5bGVzIG92ZXJy
aWRlIG90aGVyIHVzZXItYWdlbnQgc3R5bGVzIGZvciBDaHJvbWl1bSBvbiBMaW51eC4gKi8KIAog
c2VsZWN0IHsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGRkZGRkOwotfQotCi1zZWxlY3Q6bm90
KFtzaXplXSk6bm90KFttdWx0aXBsZV0pIG9wdGlvbiwKLXNlbGVjdFtzaXplPSIwIl0gb3B0aW9u
LAotc2VsZWN0W3NpemU9IjEiXSBvcHRpb24gewotICAgIGJhY2tncm91bmQtY29sb3I6ICNmN2Y3
Zjc7CisgICAgLyogU2VsZWN0cyBsb29rIGxpa2UgYnV0dG9ucyB3aXRoIGEgZHJvcCBkb3duIHRy
aWFuZ2xlIG9uIExpbnV4ICovCisgICAgYmFja2dyb3VuZC1jb2xvcjogQnV0dG9uRmFjZTsKIH0K
IAogaW5wdXRbdHlwZT1yYW5nZV0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUG9wdXBNZW51U3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BvcHVwTWVudVN0
eWxlLmgKaW5kZXggZTk3OWUyNWVlOTc1ZGIzNDhiNzIxODVjYWNjYzQ4MjIyMjE4MjU5Ny4uYmNl
NTZiNzk5YjQwZThjMjg0ZGEwZGI4Mjc1ZmI3MjllYjg0OGUxZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUG9wdXBNZW51U3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Qb3B1cE1lbnVTdHlsZS5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIFBvcHVwTWVudVN0eWxlIHsKIHB1YmxpYzoKICAgICBlbnVtIFBvcHVwTWVu
dVR5cGUgeyBTZWxlY3RQb3B1cCwgQXV0b2ZpbGxQb3B1cCB9OwotICAgIFBvcHVwTWVudVN0eWxl
KGNvbnN0IENvbG9yJiBmb3JlZ3JvdW5kLCBjb25zdCBDb2xvciYgYmFja2dyb3VuZCwgY29uc3Qg
Rm9udCYgZm9udCwgYm9vbCB2aXNpYmxlLCBib29sIGlzRGlzcGxheU5vbmUsIExlbmd0aCB0ZXh0
SW5kZW50LCBUZXh0RGlyZWN0aW9uIHRleHREaXJlY3Rpb24sIGJvb2wgaGFzVGV4dERpcmVjdGlv
bk92ZXJyaWRlLCBQb3B1cE1lbnVUeXBlIG1lbnVUeXBlID0gU2VsZWN0UG9wdXApCisgICAgUG9w
dXBNZW51U3R5bGUoY29uc3QgQ29sb3ImIGZvcmVncm91bmQsIGNvbnN0IENvbG9yJiBiYWNrZ3Jv
dW5kLCBjb25zdCBGb250JiBmb250LCBib29sIHZpc2libGUsIGJvb2wgaXNEaXNwbGF5Tm9uZSwg
TGVuZ3RoIHRleHRJbmRlbnQsIFRleHREaXJlY3Rpb24gdGV4dERpcmVjdGlvbiwgYm9vbCBoYXNU
ZXh0RGlyZWN0aW9uT3ZlcnJpZGUsIGJvb2wgaGFzQ3VzdG9tQmFja2dyb3VuZENvbG9yLCBQb3B1
cE1lbnVUeXBlIG1lbnVUeXBlID0gU2VsZWN0UG9wdXApCiAgICAgICAgIDogbV9mb3JlZ3JvdW5k
Q29sb3IoZm9yZWdyb3VuZCkKICAgICAgICAgLCBtX2JhY2tncm91bmRDb2xvcihiYWNrZ3JvdW5k
KQogICAgICAgICAsIG1fZm9udChmb250KQpAQCAtNDUsNiArNDUsNyBAQCBwdWJsaWM6CiAgICAg
ICAgICwgbV90ZXh0SW5kZW50KHRleHRJbmRlbnQpCiAgICAgICAgICwgbV90ZXh0RGlyZWN0aW9u
KHRleHREaXJlY3Rpb24pCiAgICAgICAgICwgbV9oYXNUZXh0RGlyZWN0aW9uT3ZlcnJpZGUoaGFz
VGV4dERpcmVjdGlvbk92ZXJyaWRlKQorICAgICAgICAsIG1faGFzQ3VzdG9tQmFja2dyb3VuZENv
bG9yKGhhc0N1c3RvbUJhY2tncm91bmRDb2xvcikKICAgICAgICAgLCBtX21lbnVUeXBlKG1lbnVU
eXBlKQogICAgIHsKICAgICB9CkBAIC01Nyw2ICs1OCw3IEBAIHB1YmxpYzoKICAgICBMZW5ndGgg
dGV4dEluZGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dEluZGVudDsgfQogICAgIFRleHREaXJl
Y3Rpb24gdGV4dERpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dERpcmVjdGlvbjsgfQog
ICAgIGJvb2wgaGFzVGV4dERpcmVjdGlvbk92ZXJyaWRlKCkgY29uc3QgeyByZXR1cm4gbV9oYXNU
ZXh0RGlyZWN0aW9uT3ZlcnJpZGU7IH0KKyAgICBib29sIGhhc0N1c3RvbUJhY2tncm91bmRDb2xv
cigpIGNvbnN0IHsgcmV0dXJuIG1faGFzQ3VzdG9tQmFja2dyb3VuZENvbG9yOyB9CiAgICAgUG9w
dXBNZW51VHlwZSBtZW51VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVudVR5cGU7IH0KIHByaXZh
dGU6CiAgICAgQ29sb3IgbV9mb3JlZ3JvdW5kQ29sb3I7CkBAIC02Nyw2ICs2OSw3IEBAIHByaXZh
dGU6CiAgICAgTGVuZ3RoIG1fdGV4dEluZGVudDsKICAgICBUZXh0RGlyZWN0aW9uIG1fdGV4dERp
cmVjdGlvbjsKICAgICBib29sIG1faGFzVGV4dERpcmVjdGlvbk92ZXJyaWRlOworICAgIGJvb2wg
bV9oYXNDdXN0b21CYWNrZ3JvdW5kQ29sb3I7CiAgICAgUG9wdXBNZW51VHlwZSBtX21lbnVUeXBl
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9w
dXBMaXN0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTGlz
dEJveC5jcHAKaW5kZXggNWM3NmFlMTAxZjAwNjBhZGY1NmY4NmVlYWY3MWRhMTE5OGJjNDc3MC4u
ODQ4MTE2ZjAxNGM4MDA4MDNjNjkwOWU3ZmJlMTUxMjliMGZhZTc4NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBMaXN0Qm94LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cExpc3RCb3guY3BwCkBAIC0zMCw2ICsz
MCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUG9wdXBMaXN0Qm94LmgiCiAK
KyNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSAiRm9udC5oIgogI2luY2x1
ZGUgIkZvbnRTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkZyYW1lbGVzc1Njcm9sbFZpZXdDbGllbnQu
aCIKQEAgLTQwMSw2ICs0MDIsMTYgQEAgdm9pZCBQb3B1cExpc3RCb3g6OnBhaW50Um93KEdyYXBo
aWNzQ29udGV4dCogZ2MsIGNvbnN0IEludFJlY3QmIHJlY3QsIGludCByb3dJbmQKICAgICB9IGVs
c2UgewogICAgICAgICBiYWNrQ29sb3IgPSBzdHlsZS5iYWNrZ3JvdW5kQ29sb3IoKTsKICAgICAg
ICAgdGV4dENvbG9yID0gc3R5bGUuZm9yZWdyb3VuZENvbG9yKCk7CisKKyNpZiBPUyhMSU5VWCkK
KyAgICAgICAgLy8gT24gb3RoZXIgcGxhdGZvcm1zLCB0aGUgPG9wdGlvbj4gYmFja2dyb3VuZCBj
b2xvciBpcyB0aGUgc2FtZSBhcyB0aGUKKyAgICAgICAgLy8gPHNlbGVjdD4gYmFja2dyb3VuZCBj
b2xvci4gT24gTGludXgsIHRoYXQgbWFrZXMgdGhlIDxvcHRpb24+CisgICAgICAgIC8vIGJhY2tn
cm91bmQgY29sb3IgdmVyeSBkYXJrLCBzbyBieSBkZWZhdWx0LCB0cnkgdG8gdXNlIGEgbGlnaHRl
cgorICAgICAgICAvLyBiYWNrZ3JvdW5kIGNvbG9yIGZvciA8b3B0aW9uPnMuCisgICAgICAgIGlm
ICghc3R5bGUuaGFzQ3VzdG9tQmFja2dyb3VuZENvbG9yKCkgJiYgUmVuZGVyVGhlbWU6OmRlZmF1
bHRUaGVtZSgpLT5zeXN0ZW1Db2xvcihDU1NWYWx1ZUJ1dHRvbmZhY2UpID09IGJhY2tDb2xvcikK
KyAgICAgICAgICAgIGJhY2tDb2xvciA9IFJlbmRlclRoZW1lOjpkZWZhdWx0VGhlbWUoKS0+c3lz
dGVtQ29sb3IoQ1NTVmFsdWVNZW51KTsKKyNlbmRpZgorCiAgICAgICAgIC8vIEZJWE1FOiBmb3Ig
bm93IHRoZSBsYWJlbCBjb2xvciBpcyBoYXJkLWNvZGVkLiBJdCBzaG91bGQgYmUgYWRkZWQgdG8K
ICAgICAgICAgLy8gdGhlIFBvcHVwTWVudVN0eWxlLgogICAgICAgICBsYWJlbENvbG9yID0gQ29s
b3IoMTE1LCAxMTUsIDExNSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTWVudUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVM
aXN0LmNwcAppbmRleCA2NmY2MGY5MzFjNmVhMzc2NTMwNGFmNjZlMzhiMDQ4OTg0YjIxOTBjLi42
MjZmNzMxN2FlZjQyZDlmMTFjODQzMGYxZTUwYTY0NDAxNzBjMzM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAKQEAgLTYxLDYgKzYxLDcgQEAgUmVuZGVy
TWVudUxpc3Q6OlJlbmRlck1lbnVMaXN0KEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgLCBtX29wdGlv
bnNXaWR0aCgwKQogICAgICwgbV9sYXN0QWN0aXZlSW5kZXgoLTEpCiAgICAgLCBtX3BvcHVwSXNW
aXNpYmxlKGZhbHNlKQorICAgICwgbV9oYXNDdXN0b21CYWNrZ3JvdW5kQ29sb3IoZmFsc2UpCiB7
CiAgICAgQVNTRVJUKGVsZW1lbnQpOwogICAgIEFTU0VSVChlbGVtZW50LT5pc0hUTUxFbGVtZW50
KCkpOwpAQCAtMTU1LDYgKzE1NiwxMCBAQCB2b2lkIFJlbmRlck1lbnVMaXN0OjpzdHlsZURpZENo
YW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZAogICAgIGJv
b2wgZm9udENoYW5nZWQgPSAhb2xkU3R5bGUgfHwgb2xkU3R5bGUtPmZvbnQoKSAhPSBzdHlsZSgp
LT5mb250KCk7CiAgICAgaWYgKGZvbnRDaGFuZ2VkKQogICAgICAgICB1cGRhdGVPcHRpb25zV2lk
dGgoKTsKKworICAgIGJvb2wgYmFja2dyb3VuZENvbG9yQ2hhbmdlZCA9ICFvbGRTdHlsZSB8fCBv
bGRTdHlsZS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9y
KSAhPSBzdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
Q29sb3IpOworICAgIGlmIChiYWNrZ3JvdW5kQ29sb3JDaGFuZ2VkKQorICAgICAgICB1cGRhdGVI
YXNDdXN0b21CYWNrZ3JvdW5kQ29sb3IoKTsKIH0KIAogdm9pZCBSZW5kZXJNZW51TGlzdDo6dXBk
YXRlT3B0aW9uc1dpZHRoKCkKQEAgLTE5Miw2ICsxOTcsMTYgQEAgdm9pZCBSZW5kZXJNZW51TGlz
dDo6dXBkYXRlT3B0aW9uc1dpZHRoKCkKICAgICAgICAgc2V0TmVlZHNMYXlvdXRBbmRQcmVmV2lk
dGhzUmVjYWxjKCk7CiB9CiAKK3ZvaWQgUmVuZGVyTWVudUxpc3Q6OnVwZGF0ZUhhc0N1c3RvbUJh
Y2tncm91bmRDb2xvcigpCit7CisgICAgaWYgKCFkb2N1bWVudCgpLT5zdHlsZVJlc29sdmVySWZF
eGlzdHMoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgSFRNTFNlbGVjdEVsZW1lbnQqIHNlbGVj
dCA9IHNlbGVjdEVsZW1lbnQoKTsKKyAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IGRlZmF1bHRTdHls
ZSA9IGRvY3VtZW50KCktPnN0eWxlUmVzb2x2ZXJJZkV4aXN0cygpLT5zdHlsZUZvckVsZW1lbnQo
c2VsZWN0LCAwLCBBbGxvd1N0eWxlU2hhcmluZywgTWF0Y2hPbmx5VXNlckFnZW50UnVsZXMpOwor
ICAgIG1faGFzQ3VzdG9tQmFja2dyb3VuZENvbG9yID0gZGVmYXVsdFN0eWxlLT52aXNpdGVkRGVw
ZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpICE9IHN0eWxlKCktPnZpc2l0
ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7Cit9CisKIHZvaWQg
UmVuZGVyTWVudUxpc3Q6OnVwZGF0ZUZyb21FbGVtZW50KCkKIHsKICAgICBpZiAobV9vcHRpb25z
Q2hhbmdlZCkgewpAQCAtNDYzLDQwICs0NzgsNTMgQEAgUG9wdXBNZW51U3R5bGUgUmVuZGVyTWVu
dUxpc3Q6Oml0ZW1TdHlsZSh1bnNpZ25lZCBsaXN0SW5kZXgpIGNvbnN0CiAgICAgICAgIGxpc3RJ
bmRleCA9IDA7CiAgICAgfQogICAgIEhUTUxFbGVtZW50KiBlbGVtZW50ID0gbGlzdEl0ZW1zW2xp
c3RJbmRleF07Ci0gICAgCisKKyAgICBDb2xvciBpdGVtQmFja2dyb3VuZENvbG9yOworICAgIGJv
b2wgaXRlbUhhc0N1c3RvbUJhY2tncm91bmRDb2xvcjsKKyAgICBnZXRJdGVtQmFja2dyb3VuZENv
bG9yQW5kRmxhZyhsaXN0SW5kZXgsICZpdGVtQmFja2dyb3VuZENvbG9yLCAmaXRlbUhhc0N1c3Rv
bUJhY2tncm91bmRDb2xvcik7CisKICAgICBSZW5kZXJTdHlsZSogc3R5bGUgPSBlbGVtZW50LT5y
ZW5kZXJTdHlsZSgpID8gZWxlbWVudC0+cmVuZGVyU3R5bGUoKSA6IGVsZW1lbnQtPmNvbXB1dGVk
U3R5bGUoKTsKLSAgICByZXR1cm4gc3R5bGUgPyBQb3B1cE1lbnVTdHlsZShzdHlsZS0+dmlzaXRl
ZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBpdGVtQmFja2dyb3VuZENvbG9yKGxp
c3RJbmRleCksIHN0eWxlLT5mb250KCksIHN0eWxlLT52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSwK
LSAgICAgICAgc3R5bGUtPmRpc3BsYXkoKSA9PSBOT05FLCBzdHlsZS0+dGV4dEluZGVudCgpLCBz
dHlsZS0+ZGlyZWN0aW9uKCksIGlzT3ZlcnJpZGUoc3R5bGUtPnVuaWNvZGVCaWRpKCkpKSA6IG1l
bnVTdHlsZSgpOworICAgIHJldHVybiBzdHlsZSA/IFBvcHVwTWVudVN0eWxlKHN0eWxlLT52aXNp
dGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIGl0ZW1CYWNrZ3JvdW5kQ29sb3Is
IHN0eWxlLT5mb250KCksIHN0eWxlLT52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSwKKyAgICAgICAg
c3R5bGUtPmRpc3BsYXkoKSA9PSBOT05FLCBzdHlsZS0+dGV4dEluZGVudCgpLCBzdHlsZS0+ZGly
ZWN0aW9uKCksIGlzT3ZlcnJpZGUoc3R5bGUtPnVuaWNvZGVCaWRpKCkpLCBpdGVtSGFzQ3VzdG9t
QmFja2dyb3VuZENvbG9yKSA6IG1lbnVTdHlsZSgpOwogfQogCi1Db2xvciBSZW5kZXJNZW51TGlz
dDo6aXRlbUJhY2tncm91bmRDb2xvcih1bnNpZ25lZCBsaXN0SW5kZXgpIGNvbnN0Cit2b2lkIFJl
bmRlck1lbnVMaXN0OjpnZXRJdGVtQmFja2dyb3VuZENvbG9yQW5kRmxhZyh1bnNpZ25lZCBsaXN0
SW5kZXgsIENvbG9yKiBpdGVtQmFja2dyb3VuZENvbG9yLCBib29sKiBpdGVtSGFzQ3VzdG9tQmFj
a2dyb3VuZENvbG9yKSBjb25zdAogewogICAgIGNvbnN0IFZlY3RvcjxIVE1MRWxlbWVudCo+JiBs
aXN0SXRlbXMgPSBzZWxlY3RFbGVtZW50KCktPmxpc3RJdGVtcygpOwotICAgIGlmIChsaXN0SW5k
ZXggPj0gbGlzdEl0ZW1zLnNpemUoKSkKLSAgICAgICAgcmV0dXJuIHN0eWxlKCktPnZpc2l0ZWRE
ZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7CisgICAgaWYgKGxpc3RJ
bmRleCA+PSBsaXN0SXRlbXMuc2l6ZSgpKSB7CisgICAgICAgICppdGVtQmFja2dyb3VuZENvbG9y
ID0gc3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENv
bG9yKTsKKyAgICAgICAgKml0ZW1IYXNDdXN0b21CYWNrZ3JvdW5kQ29sb3IgPSBtX2hhc0N1c3Rv
bUJhY2tncm91bmRDb2xvcjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICBIVE1MRWxlbWVu
dCogZWxlbWVudCA9IGxpc3RJdGVtc1tsaXN0SW5kZXhdOwogCiAgICAgQ29sb3IgYmFja2dyb3Vu
ZENvbG9yOwogICAgIGlmIChlbGVtZW50LT5yZW5kZXJTdHlsZSgpKQogICAgICAgICBiYWNrZ3Jv
dW5kQ29sb3IgPSBlbGVtZW50LT5yZW5kZXJTdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3Io
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpOworICAgICppdGVtSGFzQ3VzdG9tQmFja2dyb3Vu
ZENvbG9yID0gYmFja2dyb3VuZENvbG9yLmlzVmFsaWQoKSAmJiBiYWNrZ3JvdW5kQ29sb3IuYWxw
aGEoKTsKICAgICAvLyBJZiB0aGUgaXRlbSBoYXMgYW4gb3BhcXVlIGJhY2tncm91bmQgY29sb3Is
IHJldHVybiB0aGF0LgotICAgIGlmICghYmFja2dyb3VuZENvbG9yLmhhc0FscGhhKCkpCi0gICAg
ICAgIHJldHVybiBiYWNrZ3JvdW5kQ29sb3I7CisgICAgaWYgKCFiYWNrZ3JvdW5kQ29sb3IuaGFz
QWxwaGEoKSkgeworICAgICAgICAqaXRlbUJhY2tncm91bmRDb2xvciA9IGJhY2tncm91bmRDb2xv
cjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIC8vIE90aGVyd2lzZSwgdGhlIGl0ZW0n
cyBiYWNrZ3JvdW5kIGlzIG92ZXJsYXllZCBvbiB0b3Agb2YgdGhlIG1lbnUgYmFja2dyb3VuZC4K
ICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBzdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpLmJsZW5kKGJhY2tncm91bmRDb2xvcik7Ci0gICAgaWYg
KCFiYWNrZ3JvdW5kQ29sb3IuaGFzQWxwaGEoKSkKLSAgICAgICAgcmV0dXJuIGJhY2tncm91bmRD
b2xvcjsKKyAgICAqaXRlbUhhc0N1c3RvbUJhY2tncm91bmRDb2xvciA9ICppdGVtSGFzQ3VzdG9t
QmFja2dyb3VuZENvbG9yIHx8IG1faGFzQ3VzdG9tQmFja2dyb3VuZENvbG9yOworICAgIGlmICgh
YmFja2dyb3VuZENvbG9yLmhhc0FscGhhKCkpIHsKKyAgICAgICAgKml0ZW1CYWNrZ3JvdW5kQ29s
b3IgPSBiYWNrZ3JvdW5kQ29sb3I7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICAvLyBJ
ZiB0aGUgbWVudSBiYWNrZ3JvdW5kIGlzIG5vdCBvcGFxdWUsIHRoZW4gYWRkIGFuIG9wYXF1ZSB3
aGl0ZSBiYWNrZ3JvdW5kIGJlaGluZC4KLSAgICByZXR1cm4gQ29sb3IoQ29sb3I6OndoaXRlKS5i
bGVuZChiYWNrZ3JvdW5kQ29sb3IpOworICAgICppdGVtQmFja2dyb3VuZENvbG9yID0gQ29sb3Io
Q29sb3I6OndoaXRlKS5ibGVuZChiYWNrZ3JvdW5kQ29sb3IpOwogfQogCiBQb3B1cE1lbnVTdHls
ZSBSZW5kZXJNZW51TGlzdDo6bWVudVN0eWxlKCkgY29uc3QKIHsKICAgICBSZW5kZXJTdHlsZSog
cyA9IG1faW5uZXJCbG9jayA/IG1faW5uZXJCbG9jay0+c3R5bGUoKSA6IHN0eWxlKCk7CiAgICAg
cmV0dXJuIFBvcHVwTWVudVN0eWxlKHMtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0
eUNvbG9yKSwgcy0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENv
bG9yKSwgcy0+Zm9udCgpLCBzLT52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSwKLSAgICAgICAgcy0+
ZGlzcGxheSgpID09IE5PTkUsIHMtPnRleHRJbmRlbnQoKSwgc3R5bGUoKS0+ZGlyZWN0aW9uKCks
IGlzT3ZlcnJpZGUoc3R5bGUoKS0+dW5pY29kZUJpZGkoKSkpOworICAgICAgICBzLT5kaXNwbGF5
KCkgPT0gTk9ORSwgcy0+dGV4dEluZGVudCgpLCBzdHlsZSgpLT5kaXJlY3Rpb24oKSwgaXNPdmVy
cmlkZShzdHlsZSgpLT51bmljb2RlQmlkaSgpKSwgbV9oYXNDdXN0b21CYWNrZ3JvdW5kQ29sb3Ip
OwogfQogCiBIb3N0V2luZG93KiBSZW5kZXJNZW51TGlzdDo6aG9zdFdpbmRvdygpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5oCmluZGV4IGYwZDA2NmJjN2Rm
ZjdlZDc0MzQzMmI3Zjc3NzY0NmEyNzBiZDk1YjguLmMyZjZkNzk0MDRlYTlkNTUwNjU1NmVhNTZm
Y2U4MWI2MjE0YzgxZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJNZW51TGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlz
dC5oCkBAIC0xMTUsMTMgKzExNSwxNCBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBib29sIGhh
c0xpbmVJZkVtcHR5KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgQ29sb3IgaXRlbUJh
Y2tncm91bmRDb2xvcih1bnNpZ25lZCBsaXN0SW5kZXgpIGNvbnN0OworICAgIHZvaWQgZ2V0SXRl
bUJhY2tncm91bmRDb2xvckFuZEZsYWcodW5zaWduZWQgbGlzdEluZGV4LCBDb2xvciogaXRlbUJh
Y2tncm91bmRDb2xvciwgYm9vbCogaXRlbUhhc0N1c3RvbUJhY2tncm91bmRDb2xvcikgY29uc3Q7
CiAKICAgICB2b2lkIGNyZWF0ZUlubmVyQmxvY2soKTsKICAgICB2b2lkIGFkanVzdElubmVyU3R5
bGUoKTsKICAgICB2b2lkIHNldFRleHQoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBzZXRUZXh0
RnJvbU9wdGlvbihpbnQgb3B0aW9uSW5kZXgpOwogICAgIHZvaWQgdXBkYXRlT3B0aW9uc1dpZHRo
KCk7CisgICAgdm9pZCB1cGRhdGVIYXNDdXN0b21CYWNrZ3JvdW5kQ29sb3IoKTsKIAogICAgIHZv
aWQgZGlkVXBkYXRlQWN0aXZlT3B0aW9uKGludCBvcHRpb25JbmRleCk7CiAKQEAgLTEzNyw2ICsx
MzgsOCBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPFBvcHVwTWVudT4gbV9wb3B1cDsKICAgICBi
b29sIG1fcG9wdXBJc1Zpc2libGU7CisKKyAgICBib29sIG1faGFzQ3VzdG9tQmFja2dyb3VuZENv
bG9yOwogfTsKIAogaW5saW5lIFJlbmRlck1lbnVMaXN0KiB0b1JlbmRlck1lbnVMaXN0KFJlbmRl
ck9iamVjdCogb2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclNlYXJjaEZpZWxkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFy
Y2hGaWVsZC5jcHAKaW5kZXggN2FhYjJkMGE3NjExZTQxNzlkYzM2YWFiYzc1MGM5Y2EyOGFiZjdh
MC4uYWZjOWUwOWM3OGEwZTA2NThhNmFhYmNiOWExMzMzYTkwODlhZDcwOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuY3BwCkBAIC0yNjYsNyArMjY2
LDcgQEAgUG9wdXBNZW51U3R5bGUgUmVuZGVyU2VhcmNoRmllbGQ6Oml0ZW1TdHlsZSh1bnNpZ25l
ZCkgY29uc3QKIFBvcHVwTWVudVN0eWxlIFJlbmRlclNlYXJjaEZpZWxkOjptZW51U3R5bGUoKSBj
b25zdAogewogICAgIHJldHVybiBQb3B1cE1lbnVTdHlsZShzdHlsZSgpLT52aXNpdGVkRGVwZW5k
ZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIHN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xv
cihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciksIHN0eWxlKCktPmZvbnQoKSwgc3R5bGUoKS0+
dmlzaWJpbGl0eSgpID09IFZJU0lCTEUsCi0gICAgICAgIHN0eWxlKCktPmRpc3BsYXkoKSA9PSBO
T05FLCBzdHlsZSgpLT50ZXh0SW5kZW50KCksIHN0eWxlKCktPmRpcmVjdGlvbigpLCBpc092ZXJy
aWRlKHN0eWxlKCktPnVuaWNvZGVCaWRpKCkpKTsKKyAgICAgICAgc3R5bGUoKS0+ZGlzcGxheSgp
ID09IE5PTkUsIHN0eWxlKCktPnRleHRJbmRlbnQoKSwgc3R5bGUoKS0+ZGlyZWN0aW9uKCksIGlz
T3ZlcnJpZGUoc3R5bGUoKS0+dW5pY29kZUJpZGkoKSksIHRydWUpOwogfQogCiBpbnQgUmVuZGVy
U2VhcmNoRmllbGQ6OmNsaWVudEluc2V0TGVmdCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bURlZmF1bHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1EZWZhdWx0LmNwcAppbmRleCBk
NjQzNzI5YWQ5OGZhYzNmNjg3OTBkMzZkOTRiNmQ3ZTg0NTRhOGY3Li4yNGZlZjcwMGQ1MTdiNmQz
YWFkZTlmMTg2YjM2MDNmZjc2NjYyOGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bURlZmF1bHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtRGVmYXVsdC5jcHAKQEAgLTkxLDkgKzkxLDEy
IEBAIFJlbmRlclRoZW1lQ2hyb21pdW1EZWZhdWx0Ojp+UmVuZGVyVGhlbWVDaHJvbWl1bURlZmF1
bHQoKQogQ29sb3IgUmVuZGVyVGhlbWVDaHJvbWl1bURlZmF1bHQ6OnN5c3RlbUNvbG9yKGludCBj
c3NWYWx1ZUlkKSBjb25zdAogewogICAgIHN0YXRpYyBjb25zdCBDb2xvciBkZWZhdWx0QnV0dG9u
R3JheUNvbG9yKDB4ZmZkZGRkZGQpOworICAgIHN0YXRpYyBjb25zdCBDb2xvciBkZWZhdWx0TWVu
dUNvbG9yKDB4ZmZmN2Y3ZjcpOwogCiAgICAgaWYgKGNzc1ZhbHVlSWQgPT0gQ1NTVmFsdWVCdXR0
b25mYWNlKQogICAgICAgICByZXR1cm4gZGVmYXVsdEJ1dHRvbkdyYXlDb2xvcjsKKyAgICBpZiAo
Y3NzVmFsdWVJZCA9PSBDU1NWYWx1ZU1lbnUpCisgICAgICAgIHJldHVybiBkZWZhdWx0TWVudUNv
bG9yOwogICAgIHJldHVybiBSZW5kZXJUaGVtZTo6c3lzdGVtQ29sb3IoY3NzVmFsdWVJZCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0F1dG9maWxsUG9wdXBN
ZW51Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0F1dG9maWxsUG9wdXBN
ZW51Q2xpZW50LmNwcAppbmRleCBhZDI5Nzk3NzBlNjUwZTBiZmNlZDE3MmE3NGZkM2RmYTE5NGQ1
YTlkLi4wYTY5ZmIxNTVkODRlNTRlN2I5ZjlkNWU2MmZiYzY5NWIzMDIwNDljIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9BdXRvZmlsbFBvcHVwTWVudUNsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQu
Y3BwCkBAIC0yOTEsNyArMjkxLDcgQEAgdm9pZCBBdXRvZmlsbFBvcHVwTWVudUNsaWVudDo6aW5p
dGlhbGl6ZSgKICAgICBtX3JlZ3VsYXJTdHlsZSA9IGFkb3B0UHRyKG5ldyBQb3B1cE1lbnVTdHls
ZShDb2xvcjo6YmxhY2ssIENvbG9yOjp3aGl0ZSwgcmVndWxhckZvbnQsIHRydWUsIGZhbHNlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExlbmd0aChX
ZWJDb3JlOjpGaXhlZCksIHRleHRGaWVsZC0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+ZGlyZWN0aW9u
KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4
dEZpZWxkLT5yZW5kZXJlcigpLT5zdHlsZSgpLT51bmljb2RlQmlkaSgpID09IE92ZXJyaWRlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvcHVwTWVu
dVN0eWxlOjpBdXRvZmlsbFBvcHVwKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdHJ1ZSwgUG9wdXBNZW51U3R5bGU6OkF1dG9maWxsUG9wdXApKTsK
IAogICAgIEZvbnREZXNjcmlwdGlvbiB3YXJuaW5nRm9udERlc2NyaXB0aW9uID0gcmVndWxhckZv
bnQuZm9udERlc2NyaXB0aW9uKCk7CiAgICAgd2FybmluZ0ZvbnREZXNjcmlwdGlvbi5zZXRJdGFs
aWModHJ1ZSk7CkBAIC0zMDEsNyArMzAxLDcgQEAgdm9pZCBBdXRvZmlsbFBvcHVwTWVudUNsaWVu
dDo6aW5pdGlhbGl6ZSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtX3JlZ3VsYXJTdHlsZS0+aXNWaXNpYmxlKCksIG1fcmVndWxhclN0eWxlLT5pc0Rp
c3BsYXlOb25lKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbV9yZWd1bGFyU3R5bGUtPnRleHRJbmRlbnQoKSwgbV9yZWd1bGFyU3R5bGUtPnRleHRE
aXJlY3Rpb24oKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtX3JlZ3VsYXJTdHlsZS0+aGFzVGV4dERpcmVjdGlvbk92ZXJyaWRlKCksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9wdXBNZW51U3R5bGU6
OkF1dG9maWxsUG9wdXApKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0cnVlLCBQb3B1cE1lbnVTdHlsZTo6QXV0b2ZpbGxQb3B1cCkpOwogfQogCiB2
b2lkIEF1dG9maWxsUG9wdXBNZW51Q2xpZW50OjpzZXRTdWdnZXN0aW9ucyhjb25zdCBXZWJWZWN0
b3I8V2ViU3RyaW5nPiYgbmFtZXMsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL1BvcHVwTWVudVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Q
b3B1cE1lbnVUZXN0LmNwcAppbmRleCA2NjIyMzJiYWFhZTIyYWNlOTMzODcwOTgxMzZjM2EwNTJh
OTZmY2E5Li4wNTNhM2ZhOTgxNTk3MjQxYzQzMGZjNjZlYTMyYmY0Y2NjZGU3NDA2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1BvcHVwTWVudVRlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvUG9wdXBNZW51VGVzdC5jcHAKQEAgLTk4LDcg
Kzk4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUG9wdXBNZW51U3R5bGUgaXRlbVN0eWxlKHVu
c2lnbmVkIGxpc3RJbmRleCkgY29uc3QKICAgICB7CiAgICAgICAgIEZvbnQgZm9udChGb250UGxh
dGZvcm1EYXRhKDEyLjAsIGZhbHNlLCBmYWxzZSksIGZhbHNlKTsKLSAgICAgICAgcmV0dXJuIFBv
cHVwTWVudVN0eWxlKENvbG9yOjpibGFjaywgQ29sb3I6OndoaXRlLCBmb250LCB0cnVlLCBmYWxz
ZSwgTGVuZ3RoKCksIFRleHREaXJlY3Rpb24oKSwgZmFsc2UgLyogaGFzIHRleHQgZGlyZWN0aW9u
IG92ZXJyaWRlICovKTsKKyAgICAgICAgcmV0dXJuIFBvcHVwTWVudVN0eWxlKENvbG9yOjpibGFj
aywgQ29sb3I6OndoaXRlLCBmb250LCB0cnVlLCBmYWxzZSwgTGVuZ3RoKCksIFRleHREaXJlY3Rp
b24oKSwgZmFsc2UgLyogaGFzIHRleHQgZGlyZWN0aW9uIG92ZXJyaWRlICovLCB0cnVlKTsKICAg
ICB9CiAgICAgdmlydHVhbCBQb3B1cE1lbnVTdHlsZSBtZW51U3R5bGUoKSBjb25zdCB7IHJldHVy
biBpdGVtU3R5bGUoMCk7IH0KICAgICB2aXJ0dWFsIGludCBjbGllbnRJbnNldExlZnQoKSBjb25z
dCB7IHJldHVybiAwOyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192351</attachid>
            <date>2013-03-09 13:43:57 -0800</date>
            <delta_ts>2013-03-11 11:30:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111873-20130309133959.patch</filename>
            <type>text/plain</type>
            <size>18831</size>
            <attacher name="xiyuan">xiyuan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1MzIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmY2ZWQ0NWIxZjIyNGJk
NzkzYmEyYWI1MGYxNDE2NzEwZGQzZTFkMy4uOTQ0MzE3NTk5MDUwY2Q4NWJjZGRhMGI5NWFjMmY4
ZDY2YzZlYWUzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDEzLTAzLTA5ICBYaXl1
YW4gWGlhICA8eGl5dWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIGNocm9t
aXVtL2xpbnV4IGJyZWFrcyBleHBlY3RhdGlvbiBvZiBzZWxlY3QgcG9wdXAgYmFja2dyb3VuZCBk
dWUgdG8gYmFkIFVBIGNzcyBydWxlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTExODczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgT24gbGludXggdGhlIGRlZmF1bHQgPHNlbGVjdD4gYmFja2dyb3VuZCBj
b2xvciBpcyB0b28gZGFyayB0byB1c2UgYXMgdGhlCisgICAgICAgIHBvcHVwIGJhY2tncm91bmQg
Y29sb3IuICBMYXN0IGZpeGVzOgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTQxMTUgYW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01NjAyMworICAgICAgICBhdHRlbXB0IHRvIGZpeCB0aGUgcHJvYmxlbSBi
eSBhcHBseWluZyBhIGxpZ2h0ZXIgYmFja2dyb3VuZCB1c2luZworICAgICAgICBzcGVjaWFsIDxv
cHRpb24+IHNlbGVjdG9yLiBUaGlzIGJyZWFrcyBleHBlY3RhdGlvbnMgb2Ygc29tZSB3ZWJzaXRl
cy4KKworICAgICAgICBUaGlzIENMIHJldmVydHMgdGhlIGJhZCBVQSBjc3MgcnVsZXMgYWJvdmUg
YW5kIHByb3ZpZGVzIHRoZSBsaWdodGVyCisgICAgICAgIGJhY2tncm91bmQgY29sb3IgaWYgPHNl
bGVjdD4gYW5kIDxvcHRpb24+IGVsZW1lbnRzIGFyZSB1c2luZyB0aGUgZGVmYXVsdAorICAgICAg
ICBiYWNrZ3JvdW5kLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAobm8gY2hhbmdlIGluIGJlaGF2
aW91cikuCisKKyAgICAgICAgKiBjc3MvdGhlbWVDaHJvbWl1bUxpbnV4LmNzczoKKyAgICAgICAg
KHNlbGVjdCk6CisgICAgICAgICogcGxhdGZvcm0vUG9wdXBNZW51U3R5bGUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlBvcHVwTWVudVN0eWxlOjpQb3B1cE1lbnVTdHlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpQb3B1cE1lbnVTdHlsZTo6YmFja2dyb3VuZENvbG9yVHlwZSk6CisgICAgICAgIChQb3B1
cE1lbnVTdHlsZSk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBMaXN0Qm94LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTGlzdEJveDo6cGFpbnRSb3cpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJN
ZW51TGlzdDo6UmVuZGVyTWVudUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWVudUxp
c3Q6OnN0eWxlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1lbnVMaXN0Ojp1
cGRhdGVIYXNDdXN0b21CYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJNZW51TGlzdDo6aXRlbVN0eWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlck1lbnVMaXN0OjpnZXRJdGVtQmFja2dyb3VuZENvbG9yQW5kRmxhZyk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJNZW51TGlzdDo6bWVudVN0eWxlKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyTWVudUxpc3QuaDoKKyAgICAgICAgKFJlbmRlck1lbnVMaXN0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU2VhcmNoRmllbGQ6Om1lbnVTdHlsZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRoZW1lQ2hyb21pdW1EZWZhdWx0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1l
Q2hyb21pdW1EZWZhdWx0OjpzeXN0ZW1Db2xvcik6CisKIDIwMTMtMDMtMDkgIEVyaWMgQ2FybHNv
biAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgRW5hYmxlIHBsYXRmb3JtIGNv
ZGUgdG8gaW1wbGVtZW50IHRleHQgdHJhY2sgbWVudQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpp
bmRleCBhMjAyN2E3ODI0MzUyZGU5NzI1MmFlNjlhMWU2YTdiNzU4Y2MxOWQ2Li5kMDJkNGU2ZTg2
ZTQ3YzgwYTNkM2QwYzE0N2YxMmQyZWMzYzNiZDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE2IEBACisyMDEzLTAzLTA5ICBYaXl1YW4gWGlhICA8eGl5dWFuQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIGNocm9taXVtL2xpbnV4IGJyZWFrcyBleHBl
Y3RhdGlvbiBvZiBzZWxlY3QgcG9wdXAgYmFja2dyb3VuZCBkdWUgdG8gYmFkIFVBIGNzcyBydWxl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTExODcz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRl
IFBvcHVwTWVudVN0eWxlIGNvbnN0cnVjdG9yIGNhbGwgc2l0ZXMuCisKKyAgICAgICAgKiBzcmMv
QXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpBdXRvZmlsbFBv
cHVwTWVudUNsaWVudDo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogdGVzdHMvUG9wdXBNZW51VGVz
dC5jcHA6CisKIDIwMTMtMDMtMDkgIFNhZHJ1bCBIYWJpYiBDaG93ZGh1cnkgIDxzYWRydWxAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gUmVtb3ZlIGRlcHJlY2F0ZWQgZmxpbmdT
dGFydC5zb3VyY2VEZXZpY2UgZnJvbSBXZWJHZXN0dXJlRXZlbnQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy90aGVtZUNocm9taXVtTGludXguY3NzIGIvU291cmNlL1dlYkNvcmUvY3Nz
L3RoZW1lQ2hyb21pdW1MaW51eC5jc3MKaW5kZXggZGVlODQzNjhhMzZmMThmODU0ZjZiNWM5NTQx
MGFkZGUzMzJjNzc4NS4uYTc5NTZiODY1NWNlYzk1OTQzNTgyNDU1OWY5MTNlYjM0NmQ1YTVjMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3RoZW1lQ2hyb21pdW1MaW51eC5jc3MKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL3RoZW1lQ2hyb21pdW1MaW51eC5jc3MKQEAgLTMxLDEzICsz
MSw4IEBACiAvKiBUaGVzZSBzdHlsZXMgb3ZlcnJpZGUgb3RoZXIgdXNlci1hZ2VudCBzdHlsZXMg
Zm9yIENocm9taXVtIG9uIExpbnV4LiAqLwogCiBzZWxlY3QgewotICAgIGJhY2tncm91bmQtY29s
b3I6ICNkZGRkZGQ7Ci19Ci0KLXNlbGVjdDpub3QoW3NpemVdKTpub3QoW211bHRpcGxlXSkgb3B0
aW9uLAotc2VsZWN0W3NpemU9IjAiXSBvcHRpb24sCi1zZWxlY3Rbc2l6ZT0iMSJdIG9wdGlvbiB7
Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogI2Y3ZjdmNzsKKyAgICAvKiBTZWxlY3RzIGxvb2sgbGlr
ZSBidXR0b25zIHdpdGggYSBkcm9wIGRvd24gdHJpYW5nbGUgb24gTGludXggKi8KKyAgICBiYWNr
Z3JvdW5kLWNvbG9yOiBCdXR0b25GYWNlOwogfQogCiBpbnB1dFt0eXBlPXJhbmdlXSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qb3B1cE1lbnVTdHlsZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUG9wdXBNZW51U3R5bGUuaAppbmRleCBlOTc5ZTI1ZWU5NzVkYjM0
OGI3MjE4NWNhY2NjNDgyMjIyMTgyNTk3Li4wMDBlYTg4NDhjYzAxMGE1NjU4YWJjYjcxMWVmMjhl
YmIxOWEzNGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qb3B1cE1lbnVT
dHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BvcHVwTWVudVN0eWxlLmgKQEAg
LTM2LDcgKzM2LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUG9wdXBNZW51U3R5bGUg
ewogcHVibGljOgogICAgIGVudW0gUG9wdXBNZW51VHlwZSB7IFNlbGVjdFBvcHVwLCBBdXRvZmls
bFBvcHVwIH07Ci0gICAgUG9wdXBNZW51U3R5bGUoY29uc3QgQ29sb3ImIGZvcmVncm91bmQsIGNv
bnN0IENvbG9yJiBiYWNrZ3JvdW5kLCBjb25zdCBGb250JiBmb250LCBib29sIHZpc2libGUsIGJv
b2wgaXNEaXNwbGF5Tm9uZSwgTGVuZ3RoIHRleHRJbmRlbnQsIFRleHREaXJlY3Rpb24gdGV4dERp
cmVjdGlvbiwgYm9vbCBoYXNUZXh0RGlyZWN0aW9uT3ZlcnJpZGUsIFBvcHVwTWVudVR5cGUgbWVu
dVR5cGUgPSBTZWxlY3RQb3B1cCkKKyAgICBlbnVtIEJhY2tncm91bmRDb2xvclR5cGUgeyBEZWZh
dWx0QmFja2dyb3VuZENvbG9yLCBDdXN0b21CYWNrZ3JvdW5kQ29sb3IgfTsKKyAgICBQb3B1cE1l
bnVTdHlsZShjb25zdCBDb2xvciYgZm9yZWdyb3VuZCwgY29uc3QgQ29sb3ImIGJhY2tncm91bmQs
IGNvbnN0IEZvbnQmIGZvbnQsIGJvb2wgdmlzaWJsZSwgYm9vbCBpc0Rpc3BsYXlOb25lLCBMZW5n
dGggdGV4dEluZGVudCwgVGV4dERpcmVjdGlvbiB0ZXh0RGlyZWN0aW9uLCBib29sIGhhc1RleHRE
aXJlY3Rpb25PdmVycmlkZSwgQmFja2dyb3VuZENvbG9yVHlwZSBiYWNrZ3JvdW5kQ29sb3JUeXBl
LCBQb3B1cE1lbnVUeXBlIG1lbnVUeXBlID0gU2VsZWN0UG9wdXApCiAgICAgICAgIDogbV9mb3Jl
Z3JvdW5kQ29sb3IoZm9yZWdyb3VuZCkKICAgICAgICAgLCBtX2JhY2tncm91bmRDb2xvcihiYWNr
Z3JvdW5kKQogICAgICAgICAsIG1fZm9udChmb250KQpAQCAtNDUsNiArNDYsNyBAQCBwdWJsaWM6
CiAgICAgICAgICwgbV90ZXh0SW5kZW50KHRleHRJbmRlbnQpCiAgICAgICAgICwgbV90ZXh0RGly
ZWN0aW9uKHRleHREaXJlY3Rpb24pCiAgICAgICAgICwgbV9oYXNUZXh0RGlyZWN0aW9uT3ZlcnJp
ZGUoaGFzVGV4dERpcmVjdGlvbk92ZXJyaWRlKQorICAgICAgICAsIG1fYmFja2dyb3VuZENvbG9y
VHlwZShiYWNrZ3JvdW5kQ29sb3JUeXBlKQogICAgICAgICAsIG1fbWVudVR5cGUobWVudVR5cGUp
CiAgICAgewogICAgIH0KQEAgLTU3LDYgKzU5LDcgQEAgcHVibGljOgogICAgIExlbmd0aCB0ZXh0
SW5kZW50KCkgY29uc3QgeyByZXR1cm4gbV90ZXh0SW5kZW50OyB9CiAgICAgVGV4dERpcmVjdGlv
biB0ZXh0RGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0RGlyZWN0aW9uOyB9CiAgICAg
Ym9vbCBoYXNUZXh0RGlyZWN0aW9uT3ZlcnJpZGUoKSBjb25zdCB7IHJldHVybiBtX2hhc1RleHRE
aXJlY3Rpb25PdmVycmlkZTsgfQorICAgIEJhY2tncm91bmRDb2xvclR5cGUgYmFja2dyb3VuZENv
bG9yVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZENvbG9yVHlwZTsgfQogICAgIFBv
cHVwTWVudVR5cGUgbWVudVR5cGUoKSBjb25zdCB7IHJldHVybiBtX21lbnVUeXBlOyB9CiBwcml2
YXRlOgogICAgIENvbG9yIG1fZm9yZWdyb3VuZENvbG9yOwpAQCAtNjcsNiArNzAsNyBAQCBwcml2
YXRlOgogICAgIExlbmd0aCBtX3RleHRJbmRlbnQ7CiAgICAgVGV4dERpcmVjdGlvbiBtX3RleHRE
aXJlY3Rpb247CiAgICAgYm9vbCBtX2hhc1RleHREaXJlY3Rpb25PdmVycmlkZTsKKyAgICBCYWNr
Z3JvdW5kQ29sb3JUeXBlIG1fYmFja2dyb3VuZENvbG9yVHlwZTsKICAgICBQb3B1cE1lbnVUeXBl
IG1fbWVudVR5cGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9Qb3B1cExpc3RCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21p
dW0vUG9wdXBMaXN0Qm94LmNwcAppbmRleCA1Yzc2YWUxMDFmMDA2MGFkZjU2Zjg2ZWVhZjcxZGEx
MTk4YmM0NzcwLi4zMTg4YTEwMjFmNDg1YWQ2MDk1ZjViNjRkZjllOTVkYmJlZTQ4ZDExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cExpc3RCb3guY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTGlzdEJveC5jcHAK
QEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQb3B1cExp
c3RCb3guaCIKIAorI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKICNpbmNsdWRlICJGb250
LmgiCiAjaW5jbHVkZSAiRm9udFNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiRnJhbWVsZXNzU2Nyb2xs
Vmlld0NsaWVudC5oIgpAQCAtNDAxLDYgKzQwMiwxNiBAQCB2b2lkIFBvcHVwTGlzdEJveDo6cGFp
bnRSb3coR3JhcGhpY3NDb250ZXh0KiBnYywgY29uc3QgSW50UmVjdCYgcmVjdCwgaW50IHJvd0lu
ZAogICAgIH0gZWxzZSB7CiAgICAgICAgIGJhY2tDb2xvciA9IHN0eWxlLmJhY2tncm91bmRDb2xv
cigpOwogICAgICAgICB0ZXh0Q29sb3IgPSBzdHlsZS5mb3JlZ3JvdW5kQ29sb3IoKTsKKworI2lm
IE9TKExJTlVYKQorICAgICAgICAvLyBPbiBvdGhlciBwbGF0Zm9ybXMsIHRoZSA8b3B0aW9uPiBi
YWNrZ3JvdW5kIGNvbG9yIGlzIHRoZSBzYW1lIGFzIHRoZQorICAgICAgICAvLyA8c2VsZWN0PiBi
YWNrZ3JvdW5kIGNvbG9yLiBPbiBMaW51eCwgdGhhdCBtYWtlcyB0aGUgPG9wdGlvbj4KKyAgICAg
ICAgLy8gYmFja2dyb3VuZCBjb2xvciB2ZXJ5IGRhcmssIHNvIGJ5IGRlZmF1bHQsIHRyeSB0byB1
c2UgYSBsaWdodGVyCisgICAgICAgIC8vIGJhY2tncm91bmQgY29sb3IgZm9yIDxvcHRpb24+cy4K
KyAgICAgICAgaWYgKHN0eWxlLmJhY2tncm91bmRDb2xvclR5cGUoKSA9PSBQb3B1cE1lbnVTdHls
ZTo6RGVmYXVsdEJhY2tncm91bmRDb2xvciAmJiBSZW5kZXJUaGVtZTo6ZGVmYXVsdFRoZW1lKCkt
PnN5c3RlbUNvbG9yKENTU1ZhbHVlQnV0dG9uZmFjZSkgPT0gYmFja0NvbG9yKQorICAgICAgICAg
ICAgYmFja0NvbG9yID0gUmVuZGVyVGhlbWU6OmRlZmF1bHRUaGVtZSgpLT5zeXN0ZW1Db2xvcihD
U1NWYWx1ZU1lbnUpOworI2VuZGlmCisKICAgICAgICAgLy8gRklYTUU6IGZvciBub3cgdGhlIGxh
YmVsIGNvbG9yIGlzIGhhcmQtY29kZWQuIEl0IHNob3VsZCBiZSBhZGRlZCB0bwogICAgICAgICAv
LyB0aGUgUG9wdXBNZW51U3R5bGUuCiAgICAgICAgIGxhYmVsQ29sb3IgPSBDb2xvcigxMTUsIDEx
NSwgMTE1KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51
TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCmlu
ZGV4IDY2ZjYwZjkzMWM2ZWEzNzY1MzA0YWY2NmUzOGIwNDg5ODRiMjE5MGMuLmE3NjhkODlmMmJl
OWY0NWU2ZDE3OGM0MDNhNzYzMTk5MTczMDk0ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck1lbnVMaXN0LmNwcApAQCAtNjEsNiArNjEsNyBAQCBSZW5kZXJNZW51TGlzdDo6
UmVuZGVyTWVudUxpc3QoRWxlbWVudCogZWxlbWVudCkKICAgICAsIG1fb3B0aW9uc1dpZHRoKDAp
CiAgICAgLCBtX2xhc3RBY3RpdmVJbmRleCgtMSkKICAgICAsIG1fcG9wdXBJc1Zpc2libGUoZmFs
c2UpCisgICAgLCBtX2hhc0N1c3RvbUJhY2tncm91bmRDb2xvcihmYWxzZSkKIHsKICAgICBBU1NF
UlQoZWxlbWVudCk7CiAgICAgQVNTRVJUKGVsZW1lbnQtPmlzSFRNTEVsZW1lbnQoKSk7CkBAIC0x
NTUsNiArMTU2LDEwIEBAIHZvaWQgUmVuZGVyTWVudUxpc3Q6OnN0eWxlRGlkQ2hhbmdlKFN0eWxl
RGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkCiAgICAgYm9vbCBmb250Q2hh
bmdlZCA9ICFvbGRTdHlsZSB8fCBvbGRTdHlsZS0+Zm9udCgpICE9IHN0eWxlKCktPmZvbnQoKTsK
ICAgICBpZiAoZm9udENoYW5nZWQpCiAgICAgICAgIHVwZGF0ZU9wdGlvbnNXaWR0aCgpOworCisg
ICAgYm9vbCBiYWNrZ3JvdW5kQ29sb3JDaGFuZ2VkID0gIW9sZFN0eWxlIHx8IG9sZFN0eWxlLT52
aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpICE9IHN0eWxl
KCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7Cisg
ICAgaWYgKGJhY2tncm91bmRDb2xvckNoYW5nZWQpCisgICAgICAgIHVwZGF0ZUhhc0N1c3RvbUJh
Y2tncm91bmRDb2xvcigpOwogfQogCiB2b2lkIFJlbmRlck1lbnVMaXN0Ojp1cGRhdGVPcHRpb25z
V2lkdGgoKQpAQCAtMTkyLDYgKzE5NywxNiBAQCB2b2lkIFJlbmRlck1lbnVMaXN0Ojp1cGRhdGVP
cHRpb25zV2lkdGgoKQogICAgICAgICBzZXROZWVkc0xheW91dEFuZFByZWZXaWR0aHNSZWNhbGMo
KTsKIH0KIAordm9pZCBSZW5kZXJNZW51TGlzdDo6dXBkYXRlSGFzQ3VzdG9tQmFja2dyb3VuZENv
bG9yKCkKK3sKKyAgICBpZiAoIWRvY3VtZW50KCktPnN0eWxlUmVzb2x2ZXJJZkV4aXN0cygpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBIVE1MU2VsZWN0RWxlbWVudCogc2VsZWN0ID0gc2VsZWN0
RWxlbWVudCgpOworICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gZGVmYXVsdFN0eWxlID0gZG9jdW1l
bnQoKS0+c3R5bGVSZXNvbHZlcklmRXhpc3RzKCktPnN0eWxlRm9yRWxlbWVudChzZWxlY3QsIDAs
IEFsbG93U3R5bGVTaGFyaW5nLCBNYXRjaE9ubHlVc2VyQWdlbnRSdWxlcyk7CisgICAgbV9oYXND
dXN0b21CYWNrZ3JvdW5kQ29sb3IgPSBkZWZhdWx0U3R5bGUtPnZpc2l0ZWREZXBlbmRlbnRDb2xv
cihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcikgIT0gc3R5bGUoKS0+dmlzaXRlZERlcGVuZGVu
dENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsKK30KKwogdm9pZCBSZW5kZXJNZW51
TGlzdDo6dXBkYXRlRnJvbUVsZW1lbnQoKQogewogICAgIGlmIChtX29wdGlvbnNDaGFuZ2VkKSB7
CkBAIC00NjMsNDAgKzQ3OCw1NSBAQCBQb3B1cE1lbnVTdHlsZSBSZW5kZXJNZW51TGlzdDo6aXRl
bVN0eWxlKHVuc2lnbmVkIGxpc3RJbmRleCkgY29uc3QKICAgICAgICAgbGlzdEluZGV4ID0gMDsK
ICAgICB9CiAgICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSBsaXN0SXRlbXNbbGlzdEluZGV4XTsK
LSAgICAKKworICAgIENvbG9yIGl0ZW1CYWNrZ3JvdW5kQ29sb3I7CisgICAgYm9vbCBpdGVtSGFz
Q3VzdG9tQmFja2dyb3VuZENvbG9yOworICAgIGdldEl0ZW1CYWNrZ3JvdW5kQ29sb3JBbmRGbGFn
KGxpc3RJbmRleCwgaXRlbUJhY2tncm91bmRDb2xvciwgaXRlbUhhc0N1c3RvbUJhY2tncm91bmRD
b2xvcik7CisKICAgICBSZW5kZXJTdHlsZSogc3R5bGUgPSBlbGVtZW50LT5yZW5kZXJTdHlsZSgp
ID8gZWxlbWVudC0+cmVuZGVyU3R5bGUoKSA6IGVsZW1lbnQtPmNvbXB1dGVkU3R5bGUoKTsKLSAg
ICByZXR1cm4gc3R5bGUgPyBQb3B1cE1lbnVTdHlsZShzdHlsZS0+dmlzaXRlZERlcGVuZGVudENv
bG9yKENTU1Byb3BlcnR5Q29sb3IpLCBpdGVtQmFja2dyb3VuZENvbG9yKGxpc3RJbmRleCksIHN0
eWxlLT5mb250KCksIHN0eWxlLT52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSwKLSAgICAgICAgc3R5
bGUtPmRpc3BsYXkoKSA9PSBOT05FLCBzdHlsZS0+dGV4dEluZGVudCgpLCBzdHlsZS0+ZGlyZWN0
aW9uKCksIGlzT3ZlcnJpZGUoc3R5bGUtPnVuaWNvZGVCaWRpKCkpKSA6IG1lbnVTdHlsZSgpOwor
ICAgIHJldHVybiBzdHlsZSA/IFBvcHVwTWVudVN0eWxlKHN0eWxlLT52aXNpdGVkRGVwZW5kZW50
Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIGl0ZW1CYWNrZ3JvdW5kQ29sb3IsIHN0eWxlLT5mb250
KCksIHN0eWxlLT52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSwKKyAgICAgICAgc3R5bGUtPmRpc3Bs
YXkoKSA9PSBOT05FLCBzdHlsZS0+dGV4dEluZGVudCgpLCBzdHlsZS0+ZGlyZWN0aW9uKCksIGlz
T3ZlcnJpZGUoc3R5bGUtPnVuaWNvZGVCaWRpKCkpLAorICAgICAgICBpdGVtSGFzQ3VzdG9tQmFj
a2dyb3VuZENvbG9yID8gUG9wdXBNZW51U3R5bGU6OkN1c3RvbUJhY2tncm91bmRDb2xvciA6IFBv
cHVwTWVudVN0eWxlOjpEZWZhdWx0QmFja2dyb3VuZENvbG9yKSA6IG1lbnVTdHlsZSgpOwogfQog
Ci1Db2xvciBSZW5kZXJNZW51TGlzdDo6aXRlbUJhY2tncm91bmRDb2xvcih1bnNpZ25lZCBsaXN0
SW5kZXgpIGNvbnN0Cit2b2lkIFJlbmRlck1lbnVMaXN0OjpnZXRJdGVtQmFja2dyb3VuZENvbG9y
QW5kRmxhZyh1bnNpZ25lZCBsaXN0SW5kZXgsIENvbG9yJiBvdXRJdGVtQmFja2dyb3VuZENvbG9y
LCBib29sJiBvdXRJdGVtSGFzQ3VzdG9tQmFja2dyb3VuZENvbG9yKSBjb25zdAogewogICAgIGNv
bnN0IFZlY3RvcjxIVE1MRWxlbWVudCo+JiBsaXN0SXRlbXMgPSBzZWxlY3RFbGVtZW50KCktPmxp
c3RJdGVtcygpOwotICAgIGlmIChsaXN0SW5kZXggPj0gbGlzdEl0ZW1zLnNpemUoKSkKLSAgICAg
ICAgcmV0dXJuIHN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tn
cm91bmRDb2xvcik7CisgICAgaWYgKGxpc3RJbmRleCA+PSBsaXN0SXRlbXMuc2l6ZSgpKSB7Cisg
ICAgICAgIG91dEl0ZW1CYWNrZ3JvdW5kQ29sb3IgPSBzdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50
Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpOworICAgICAgICBvdXRJdGVtSGFzQ3Vz
dG9tQmFja2dyb3VuZENvbG9yID0gbV9oYXNDdXN0b21CYWNrZ3JvdW5kQ29sb3I7CisgICAgICAg
IHJldHVybjsKKyAgICB9CiAgICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSBsaXN0SXRlbXNbbGlz
dEluZGV4XTsKIAogICAgIENvbG9yIGJhY2tncm91bmRDb2xvcjsKICAgICBpZiAoZWxlbWVudC0+
cmVuZGVyU3R5bGUoKSkKICAgICAgICAgYmFja2dyb3VuZENvbG9yID0gZWxlbWVudC0+cmVuZGVy
U3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9y
KTsKKyAgICBvdXRJdGVtSGFzQ3VzdG9tQmFja2dyb3VuZENvbG9yID0gYmFja2dyb3VuZENvbG9y
LmlzVmFsaWQoKSAmJiBiYWNrZ3JvdW5kQ29sb3IuYWxwaGEoKTsKICAgICAvLyBJZiB0aGUgaXRl
bSBoYXMgYW4gb3BhcXVlIGJhY2tncm91bmQgY29sb3IsIHJldHVybiB0aGF0LgotICAgIGlmICgh
YmFja2dyb3VuZENvbG9yLmhhc0FscGhhKCkpCi0gICAgICAgIHJldHVybiBiYWNrZ3JvdW5kQ29s
b3I7CisgICAgaWYgKCFiYWNrZ3JvdW5kQ29sb3IuaGFzQWxwaGEoKSkgeworICAgICAgICBvdXRJ
dGVtQmFja2dyb3VuZENvbG9yID0gYmFja2dyb3VuZENvbG9yOworICAgICAgICByZXR1cm47Cisg
ICAgfQogCiAgICAgLy8gT3RoZXJ3aXNlLCB0aGUgaXRlbSdzIGJhY2tncm91bmQgaXMgb3Zlcmxh
eWVkIG9uIHRvcCBvZiB0aGUgbWVudSBiYWNrZ3JvdW5kLgogICAgIGJhY2tncm91bmRDb2xvciA9
IHN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xv
cikuYmxlbmQoYmFja2dyb3VuZENvbG9yKTsKLSAgICBpZiAoIWJhY2tncm91bmRDb2xvci5oYXNB
bHBoYSgpKQotICAgICAgICByZXR1cm4gYmFja2dyb3VuZENvbG9yOworICAgIG91dEl0ZW1IYXND
dXN0b21CYWNrZ3JvdW5kQ29sb3IgPSBvdXRJdGVtSGFzQ3VzdG9tQmFja2dyb3VuZENvbG9yIHx8
IG1faGFzQ3VzdG9tQmFja2dyb3VuZENvbG9yOworICAgIGlmICghYmFja2dyb3VuZENvbG9yLmhh
c0FscGhhKCkpIHsKKyAgICAgICAgb3V0SXRlbUJhY2tncm91bmRDb2xvciA9IGJhY2tncm91bmRD
b2xvcjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIC8vIElmIHRoZSBtZW51IGJhY2tn
cm91bmQgaXMgbm90IG9wYXF1ZSwgdGhlbiBhZGQgYW4gb3BhcXVlIHdoaXRlIGJhY2tncm91bmQg
YmVoaW5kLgotICAgIHJldHVybiBDb2xvcihDb2xvcjo6d2hpdGUpLmJsZW5kKGJhY2tncm91bmRD
b2xvcik7CisgICAgb3V0SXRlbUJhY2tncm91bmRDb2xvciA9IENvbG9yKENvbG9yOjp3aGl0ZSku
YmxlbmQoYmFja2dyb3VuZENvbG9yKTsKIH0KIAogUG9wdXBNZW51U3R5bGUgUmVuZGVyTWVudUxp
c3Q6Om1lbnVTdHlsZSgpIGNvbnN0CiB7CiAgICAgUmVuZGVyU3R5bGUqIHMgPSBtX2lubmVyQmxv
Y2sgPyBtX2lubmVyQmxvY2stPnN0eWxlKCkgOiBzdHlsZSgpOwogICAgIHJldHVybiBQb3B1cE1l
bnVTdHlsZShzLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIHMtPnZp
c2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciksIHMtPmZvbnQo
KSwgcy0+dmlzaWJpbGl0eSgpID09IFZJU0lCTEUsCi0gICAgICAgIHMtPmRpc3BsYXkoKSA9PSBO
T05FLCBzLT50ZXh0SW5kZW50KCksIHN0eWxlKCktPmRpcmVjdGlvbigpLCBpc092ZXJyaWRlKHN0
eWxlKCktPnVuaWNvZGVCaWRpKCkpKTsKKyAgICAgICAgcy0+ZGlzcGxheSgpID09IE5PTkUsIHMt
PnRleHRJbmRlbnQoKSwgc3R5bGUoKS0+ZGlyZWN0aW9uKCksIGlzT3ZlcnJpZGUoc3R5bGUoKS0+
dW5pY29kZUJpZGkoKSksCisgICAgICAgIG1faGFzQ3VzdG9tQmFja2dyb3VuZENvbG9yID8gUG9w
dXBNZW51U3R5bGU6OkN1c3RvbUJhY2tncm91bmRDb2xvciA6IFBvcHVwTWVudVN0eWxlOjpEZWZh
dWx0QmFja2dyb3VuZENvbG9yKTsKIH0KIAogSG9zdFdpbmRvdyogUmVuZGVyTWVudUxpc3Q6Omhv
c3RXaW5kb3coKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck1lbnVMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3Qu
aAppbmRleCBmMGQwNjZiYzdkZmY3ZWQ3NDM0MzJiN2Y3Nzc2NDZhMjcwYmQ5NWI4Li4xZmU4Nzgy
NGEwOGRhYWEzOTc4YmE2YTVjZjE2ODlkZDU5ZTY0YTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTWVudUxpc3QuaApAQCAtMTE1LDEzICsxMTUsMTQgQEAgcHJpdmF0ZToKIAog
ICAgIHZpcnR1YWwgYm9vbCBoYXNMaW5lSWZFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0K
IAotICAgIENvbG9yIGl0ZW1CYWNrZ3JvdW5kQ29sb3IodW5zaWduZWQgbGlzdEluZGV4KSBjb25z
dDsKKyAgICB2b2lkIGdldEl0ZW1CYWNrZ3JvdW5kQ29sb3JBbmRGbGFnKHVuc2lnbmVkIGxpc3RJ
bmRleCwgQ29sb3ImIG91dEl0ZW1CYWNrZ3JvdW5kQ29sb3IsIGJvb2wmIG91dEl0ZW1IYXNDdXN0
b21CYWNrZ3JvdW5kQ29sb3IpIGNvbnN0OwogCiAgICAgdm9pZCBjcmVhdGVJbm5lckJsb2NrKCk7
CiAgICAgdm9pZCBhZGp1c3RJbm5lclN0eWxlKCk7CiAgICAgdm9pZCBzZXRUZXh0KGNvbnN0IFN0
cmluZyYpOwogICAgIHZvaWQgc2V0VGV4dEZyb21PcHRpb24oaW50IG9wdGlvbkluZGV4KTsKICAg
ICB2b2lkIHVwZGF0ZU9wdGlvbnNXaWR0aCgpOworICAgIHZvaWQgdXBkYXRlSGFzQ3VzdG9tQmFj
a2dyb3VuZENvbG9yKCk7CiAKICAgICB2b2lkIGRpZFVwZGF0ZUFjdGl2ZU9wdGlvbihpbnQgb3B0
aW9uSW5kZXgpOwogCkBAIC0xMzcsNiArMTM4LDggQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxQ
b3B1cE1lbnU+IG1fcG9wdXA7CiAgICAgYm9vbCBtX3BvcHVwSXNWaXNpYmxlOworCisgICAgYm9v
bCBtX2hhc0N1c3RvbUJhY2tncm91bmRDb2xvcjsKIH07CiAKIGlubGluZSBSZW5kZXJNZW51TGlz
dCogdG9SZW5kZXJNZW51TGlzdChSZW5kZXJPYmplY3QqIG9iamVjdCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuY3BwCmluZGV4IDdhYWIyZDBhNzYxMWU0
MTc5ZGMzNmFhYmM3NTBjOWNhMjhhYmY3YTAuLjExZmQyNzkyYjUyNjQ0MWFiZGVlNjlkZDZkOWQx
M2VmMDBjMzNiZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJT
ZWFyY2hGaWVsZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJj
aEZpZWxkLmNwcApAQCAtMjY2LDcgKzI2Niw3IEBAIFBvcHVwTWVudVN0eWxlIFJlbmRlclNlYXJj
aEZpZWxkOjppdGVtU3R5bGUodW5zaWduZWQpIGNvbnN0CiBQb3B1cE1lbnVTdHlsZSBSZW5kZXJT
ZWFyY2hGaWVsZDo6bWVudVN0eWxlKCkgY29uc3QKIHsKICAgICByZXR1cm4gUG9wdXBNZW51U3R5
bGUoc3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBzdHls
ZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpLCBz
dHlsZSgpLT5mb250KCksIHN0eWxlKCktPnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFLAotICAgICAg
ICBzdHlsZSgpLT5kaXNwbGF5KCkgPT0gTk9ORSwgc3R5bGUoKS0+dGV4dEluZGVudCgpLCBzdHls
ZSgpLT5kaXJlY3Rpb24oKSwgaXNPdmVycmlkZShzdHlsZSgpLT51bmljb2RlQmlkaSgpKSk7Cisg
ICAgICAgIHN0eWxlKCktPmRpc3BsYXkoKSA9PSBOT05FLCBzdHlsZSgpLT50ZXh0SW5kZW50KCks
IHN0eWxlKCktPmRpcmVjdGlvbigpLCBpc092ZXJyaWRlKHN0eWxlKCktPnVuaWNvZGVCaWRpKCkp
LCBQb3B1cE1lbnVTdHlsZTo6Q3VzdG9tQmFja2dyb3VuZENvbG9yKTsKIH0KIAogaW50IFJlbmRl
clNlYXJjaEZpZWxkOjpjbGllbnRJbnNldExlZnQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1EZWZhdWx0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtRGVmYXVsdC5jcHAKaW5kZXgg
ZDY0MzcyOWFkOThmYWMzZjY4NzkwZDM2ZDk0YjZkN2U4NDU0YThmNy4uMjRmZWY3MDBkNTE3YjZk
M2FhZGU5ZjE4NmIzNjAzZmY3NjY2MjhiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1EZWZhdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bURlZmF1bHQuY3BwCkBAIC05MSw5ICs5MSwx
MiBAQCBSZW5kZXJUaGVtZUNocm9taXVtRGVmYXVsdDo6flJlbmRlclRoZW1lQ2hyb21pdW1EZWZh
dWx0KCkKIENvbG9yIFJlbmRlclRoZW1lQ2hyb21pdW1EZWZhdWx0OjpzeXN0ZW1Db2xvcihpbnQg
Y3NzVmFsdWVJZCkgY29uc3QKIHsKICAgICBzdGF0aWMgY29uc3QgQ29sb3IgZGVmYXVsdEJ1dHRv
bkdyYXlDb2xvcigweGZmZGRkZGRkKTsKKyAgICBzdGF0aWMgY29uc3QgQ29sb3IgZGVmYXVsdE1l
bnVDb2xvcigweGZmZjdmN2Y3KTsKIAogICAgIGlmIChjc3NWYWx1ZUlkID09IENTU1ZhbHVlQnV0
dG9uZmFjZSkKICAgICAgICAgcmV0dXJuIGRlZmF1bHRCdXR0b25HcmF5Q29sb3I7CisgICAgaWYg
KGNzc1ZhbHVlSWQgPT0gQ1NTVmFsdWVNZW51KQorICAgICAgICByZXR1cm4gZGVmYXVsdE1lbnVD
b2xvcjsKICAgICByZXR1cm4gUmVuZGVyVGhlbWU6OnN5c3RlbUNvbG9yKGNzc1ZhbHVlSWQpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9BdXRvZmlsbFBvcHVw
TWVudUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9BdXRvZmlsbFBvcHVw
TWVudUNsaWVudC5jcHAKaW5kZXggYWQyOTc5NzcwZTY1MGUwYmZjZWQxNzJhNzRmZDNkZmExOTRk
NWE5ZC4uZTljNjY1MTUzMGY1MjhjMmRlNDE4M2Q3MWFlNTI4YjViZjU4OGE3MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0F1dG9maWxsUG9wdXBNZW51Q2xpZW50
LmNwcApAQCAtMjg5LDE5ICsyODksMTkgQEAgdm9pZCBBdXRvZmlsbFBvcHVwTWVudUNsaWVudDo6
aW5pdGlhbGl6ZSgKICAgICAvLyBUaGUgZGlyZWN0aW9uIG9mIHRleHQgaW4gcG9wdXAgbWVudSBp
cyBzZXQgdGhlIHNhbWUgYXMgdGhlIGRpcmVjdGlvbiBvZgogICAgIC8vIHRoZSBpbnB1dCBlbGVt
ZW50OiB0ZXh0RmllbGQuCiAgICAgbV9yZWd1bGFyU3R5bGUgPSBhZG9wdFB0cihuZXcgUG9wdXBN
ZW51U3R5bGUoQ29sb3I6OmJsYWNrLCBDb2xvcjo6d2hpdGUsIHJlZ3VsYXJGb250LCB0cnVlLCBm
YWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBM
ZW5ndGgoV2ViQ29yZTo6Rml4ZWQpLCB0ZXh0RmllbGQtPnJlbmRlcmVyKCktPnN0eWxlKCktPmRp
cmVjdGlvbigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRleHRGaWVsZC0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+dW5pY29kZUJpZGkoKSA9PSBPdmVy
cmlkZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ
b3B1cE1lbnVTdHlsZTo6QXV0b2ZpbGxQb3B1cCkpOworICAgICAgICBMZW5ndGgoV2ViQ29yZTo6
Rml4ZWQpLCB0ZXh0RmllbGQtPnJlbmRlcmVyKCktPnN0eWxlKCktPmRpcmVjdGlvbigpLAorICAg
ICAgICB0ZXh0RmllbGQtPnJlbmRlcmVyKCktPnN0eWxlKCktPnVuaWNvZGVCaWRpKCkgPT0gT3Zl
cnJpZGUsCisgICAgICAgIFBvcHVwTWVudVN0eWxlOjpDdXN0b21CYWNrZ3JvdW5kQ29sb3IsIFBv
cHVwTWVudVN0eWxlOjpBdXRvZmlsbFBvcHVwKSk7CiAKICAgICBGb250RGVzY3JpcHRpb24gd2Fy
bmluZ0ZvbnREZXNjcmlwdGlvbiA9IHJlZ3VsYXJGb250LmZvbnREZXNjcmlwdGlvbigpOwogICAg
IHdhcm5pbmdGb250RGVzY3JpcHRpb24uc2V0SXRhbGljKHRydWUpOwogICAgIEZvbnQgd2Fybmlu
Z0ZvbnQod2FybmluZ0ZvbnREZXNjcmlwdGlvbiwgcmVndWxhckZvbnQubGV0dGVyU3BhY2luZygp
LCByZWd1bGFyRm9udC53b3JkU3BhY2luZygpKTsKICAgICB3YXJuaW5nRm9udC51cGRhdGUocmVn
dWxhckZvbnQuZm9udFNlbGVjdG9yKCkpOwogICAgIG1fd2FybmluZ1N0eWxlID0gYWRvcHRQdHIo
bmV3IFBvcHVwTWVudVN0eWxlKENvbG9yOjpkYXJrR3JheSwgbV9yZWd1bGFyU3R5bGUtPmJhY2tn
cm91bmRDb2xvcigpLCB3YXJuaW5nRm9udCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtX3JlZ3VsYXJTdHlsZS0+aXNWaXNpYmxlKCksIG1fcmVndWxh
clN0eWxlLT5pc0Rpc3BsYXlOb25lKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbV9yZWd1bGFyU3R5bGUtPnRleHRJbmRlbnQoKSwgbV9yZWd1bGFy
U3R5bGUtPnRleHREaXJlY3Rpb24oKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtX3JlZ3VsYXJTdHlsZS0+aGFzVGV4dERpcmVjdGlvbk92ZXJyaWRl
KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9w
dXBNZW51U3R5bGU6OkF1dG9maWxsUG9wdXApKTsKKyAgICAgICAgbV9yZWd1bGFyU3R5bGUtPmlz
VmlzaWJsZSgpLCBtX3JlZ3VsYXJTdHlsZS0+aXNEaXNwbGF5Tm9uZSgpLAorICAgICAgICBtX3Jl
Z3VsYXJTdHlsZS0+dGV4dEluZGVudCgpLCBtX3JlZ3VsYXJTdHlsZS0+dGV4dERpcmVjdGlvbigp
LAorICAgICAgICBtX3JlZ3VsYXJTdHlsZS0+aGFzVGV4dERpcmVjdGlvbk92ZXJyaWRlKCksCisg
ICAgICAgIFBvcHVwTWVudVN0eWxlOjpDdXN0b21CYWNrZ3JvdW5kQ29sb3IsIFBvcHVwTWVudVN0
eWxlOjpBdXRvZmlsbFBvcHVwKSk7CiB9CiAKIHZvaWQgQXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQ6
OnNldFN1Z2dlc3Rpb25zKGNvbnN0IFdlYlZlY3RvcjxXZWJTdHJpbmc+JiBuYW1lcywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvUG9wdXBNZW51VGVzdC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1BvcHVwTWVudVRlc3QuY3BwCmluZGV4IDY2MjIz
MmJhYWFlMjJhY2U5MzM4NzA5ODEzNmMzYTA1MmE5NmZjYTkuLmQ2YzkzZjkxMTA3NDE4NWZkZmVh
NWMwMDYyYmRlZDAwNmI2ZTZjYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvUG9wdXBNZW51VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9Qb3B1cE1lbnVUZXN0LmNwcApAQCAtOTgsNyArOTgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBQb3B1cE1lbnVTdHlsZSBpdGVtU3R5bGUodW5zaWduZWQgbGlzdEluZGV4KSBjb25zdAogICAg
IHsKICAgICAgICAgRm9udCBmb250KEZvbnRQbGF0Zm9ybURhdGEoMTIuMCwgZmFsc2UsIGZhbHNl
KSwgZmFsc2UpOwotICAgICAgICByZXR1cm4gUG9wdXBNZW51U3R5bGUoQ29sb3I6OmJsYWNrLCBD
b2xvcjo6d2hpdGUsIGZvbnQsIHRydWUsIGZhbHNlLCBMZW5ndGgoKSwgVGV4dERpcmVjdGlvbigp
LCBmYWxzZSAvKiBoYXMgdGV4dCBkaXJlY3Rpb24gb3ZlcnJpZGUgKi8pOworICAgICAgICByZXR1
cm4gUG9wdXBNZW51U3R5bGUoQ29sb3I6OmJsYWNrLCBDb2xvcjo6d2hpdGUsIGZvbnQsIHRydWUs
IGZhbHNlLCBMZW5ndGgoKSwgVGV4dERpcmVjdGlvbigpLCBmYWxzZSAvKiBoYXMgdGV4dCBkaXJl
Y3Rpb24gb3ZlcnJpZGUgKi8sIFBvcHVwTWVudVN0eWxlOjpDdXN0b21CYWNrZ3JvdW5kQ29sb3Ip
OwogICAgIH0KICAgICB2aXJ0dWFsIFBvcHVwTWVudVN0eWxlIG1lbnVTdHlsZSgpIGNvbnN0IHsg
cmV0dXJuIGl0ZW1TdHlsZSgwKTsgfQogICAgIHZpcnR1YWwgaW50IGNsaWVudEluc2V0TGVmdCgp
IGNvbnN0IHsgcmV0dXJuIDA7IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192518</attachid>
            <date>2013-03-11 11:30:53 -0700</date>
            <delta_ts>2013-03-11 12:32:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111873-20130311112652.patch</filename>
            <type>text/plain</type>
            <size>14986</size>
            <attacher name="xiyuan">xiyuan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1Mzc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmYxMDI2MWM3ZWU4ZTNj
YmEwNjMwYmQyYWQ3MjNiYzU4NjFhYzcwOC4uYTcwMDI2ODMwMDgwOTZkZTEyODcxN2MxYzNkNzRi
NmY1ZDU3NGE0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEzLTAzLTExICBYaXl1
YW4gWGlhICA8eGl5dWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIGNocm9t
aXVtL2xpbnV4IGJyZWFrcyBleHBlY3RhdGlvbiBvZiBzZWxlY3QgcG9wdXAgYmFja2dyb3VuZCBk
dWUgdG8gYmFkIFVBIGNzcyBydWxlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTExODczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgT24gbGludXggdGhlIGRlZmF1bHQgPHNlbGVjdD4gYmFja2dyb3VuZCBj
b2xvciBpcyB0b28gZGFyayB0byB1c2UgYXMgdGhlCisgICAgICAgIHBvcHVwIGJhY2tncm91bmQg
Y29sb3IuICBMYXN0IGZpeGVzOgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTQxMTUgYW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01NjAyMworICAgICAgICBhdHRlbXB0IHRvIGZpeCB0aGUgcHJvYmxlbSBi
eSBhcHBseWluZyBhIGxpZ2h0ZXIgYmFja2dyb3VuZCB1c2luZworICAgICAgICBzcGVjaWFsIDxv
cHRpb24+IHNlbGVjdG9yLiBUaGlzIGJyZWFrcyBleHBlY3RhdGlvbnMgb2Ygc29tZSB3ZWJzaXRl
cy4KKworICAgICAgICBUaGlzIENMIHJldmVydHMgdGhlIGJhZCBVQSBjc3MgcnVsZXMgYWJvdmUg
YW5kIHByb3ZpZGVzIHRoZSBsaWdodGVyCisgICAgICAgIGJhY2tncm91bmQgY29sb3IgaWYgPHNl
bGVjdD4gYW5kIDxvcHRpb24+IGVsZW1lbnRzIGFyZSB1c2luZyB0aGUgZGVmYXVsdAorICAgICAg
ICBiYWNrZ3JvdW5kLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAobm8gY2hhbmdlIGluIGJlaGF2
aW91cikuCisKKyAgICAgICAgKiBjc3MvdGhlbWVDaHJvbWl1bUxpbnV4LmNzczoKKyAgICAgICAg
KHNlbGVjdCk6CisgICAgICAgICogcGxhdGZvcm0vUG9wdXBNZW51U3R5bGUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlBvcHVwTWVudVN0eWxlOjpQb3B1cE1lbnVTdHlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpQb3B1cE1lbnVTdHlsZTo6YmFja2dyb3VuZENvbG9yVHlwZSk6CisgICAgICAgIChQb3B1
cE1lbnVTdHlsZSk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBMaXN0Qm94LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTGlzdEJveDo6cGFpbnRSb3cpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJN
ZW51TGlzdDo6aXRlbVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1lbnVMaXN0Ojpn
ZXRJdGVtQmFja2dyb3VuZENvbG9yQW5kRmxhZyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ck1lbnVMaXN0Lmg6CisgICAgICAgIChSZW5kZXJNZW51TGlzdCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNlYXJj
aEZpZWxkOjptZW51U3R5bGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9t
aXVtRGVmYXVsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUNocm9taXVtRGVm
YXVsdDo6c3lzdGVtQ29sb3IpOgorCiAyMDEzLTAzLTExICBBbGVjIEZsZXR0ICA8YWxlY2ZsZXR0
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBJbmRleGVkREI6IFByb3RlY3QgYWdhaW5zdCBrZXkg
cHJlZml4IG92ZXJmbG93cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA1NTViZWYyMTg0
M2FjYzBhYjYzNTM5YjZkZmRkN2U0NzlmMzQ2YzQ5Li4zY2M1NTdiYmRiYjdkZDZjNGNmNWE3ZjMy
ZTdhMTRjM2I5MjIyNmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1
IEBACisyMDEzLTAzLTExICBYaXl1YW4gWGlhICA8eGl5dWFuQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBbQ2hyb21pdW1dIGNocm9taXVtL2xpbnV4IGJyZWFrcyBleHBlY3RhdGlvbiBvZiBzZWxl
Y3QgcG9wdXAgYmFja2dyb3VuZCBkdWUgdG8gYmFkIFVBIGNzcyBydWxlcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTExODczCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIFBvcHVwTWVudVN0eWxl
IGNvbnN0cnVjdG9yIGNhbGwgc2l0ZXMuCisKKyAgICAgICAgKiBzcmMvQXV0b2ZpbGxQb3B1cE1l
bnVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpBdXRvZmlsbFBvcHVwTWVudUNsaWVudDo6
aW5pdGlhbGl6ZSk6CisKIDIwMTMtMDMtMTEgIEFsZWMgRmxldHQgIDxhbGVjZmxldHRAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIEluZGV4ZWREQjogUHJvdGVjdCBhZ2FpbnN0IGtleSBwcmVmaXgg
b3ZlcmZsb3dzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvdGhlbWVDaHJvbWl1bUxp
bnV4LmNzcyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy90aGVtZUNocm9taXVtTGludXguY3NzCmluZGV4
IGRlZTg0MzY4YTM2ZjE4Zjg1NGY2YjVjOTU0MTBhZGRlMzMyYzc3ODUuLmE3OTU2Yjg2NTVjZWM5
NTk0MzU4MjQ1NTlmOTEzZWIzNDZkNWE1YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy90aGVtZUNocm9taXVtTGludXguY3NzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy90aGVtZUNo
cm9taXVtTGludXguY3NzCkBAIC0zMSwxMyArMzEsOCBAQAogLyogVGhlc2Ugc3R5bGVzIG92ZXJy
aWRlIG90aGVyIHVzZXItYWdlbnQgc3R5bGVzIGZvciBDaHJvbWl1bSBvbiBMaW51eC4gKi8KIAog
c2VsZWN0IHsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGRkZGRkOwotfQotCi1zZWxlY3Q6bm90
KFtzaXplXSk6bm90KFttdWx0aXBsZV0pIG9wdGlvbiwKLXNlbGVjdFtzaXplPSIwIl0gb3B0aW9u
LAotc2VsZWN0W3NpemU9IjEiXSBvcHRpb24gewotICAgIGJhY2tncm91bmQtY29sb3I6ICNmN2Y3
Zjc7CisgICAgLyogU2VsZWN0cyBsb29rIGxpa2UgYnV0dG9ucyB3aXRoIGEgZHJvcCBkb3duIHRy
aWFuZ2xlIG9uIExpbnV4ICovCisgICAgYmFja2dyb3VuZC1jb2xvcjogQnV0dG9uRmFjZTsKIH0K
IAogaW5wdXRbdHlwZT1yYW5nZV0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUG9wdXBNZW51U3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BvcHVwTWVudVN0
eWxlLmgKaW5kZXggZTk3OWUyNWVlOTc1ZGIzNDhiNzIxODVjYWNjYzQ4MjIyMjE4MjU5Ny4uNjg5
ZWQyOWRiODRhZjAyNDEzYzc2ZmZiYzRlMzk1ZDAxM2Y2MmNhNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUG9wdXBNZW51U3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Qb3B1cE1lbnVTdHlsZS5oCkBAIC0zNiw3ICszNiw4IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIFBvcHVwTWVudVN0eWxlIHsKIHB1YmxpYzoKICAgICBlbnVtIFBvcHVwTWVu
dVR5cGUgeyBTZWxlY3RQb3B1cCwgQXV0b2ZpbGxQb3B1cCB9OwotICAgIFBvcHVwTWVudVN0eWxl
KGNvbnN0IENvbG9yJiBmb3JlZ3JvdW5kLCBjb25zdCBDb2xvciYgYmFja2dyb3VuZCwgY29uc3Qg
Rm9udCYgZm9udCwgYm9vbCB2aXNpYmxlLCBib29sIGlzRGlzcGxheU5vbmUsIExlbmd0aCB0ZXh0
SW5kZW50LCBUZXh0RGlyZWN0aW9uIHRleHREaXJlY3Rpb24sIGJvb2wgaGFzVGV4dERpcmVjdGlv
bk92ZXJyaWRlLCBQb3B1cE1lbnVUeXBlIG1lbnVUeXBlID0gU2VsZWN0UG9wdXApCisgICAgZW51
bSBCYWNrZ3JvdW5kQ29sb3JUeXBlIHsgRGVmYXVsdEJhY2tncm91bmRDb2xvciwgQ3VzdG9tQmFj
a2dyb3VuZENvbG9yIH07CisgICAgUG9wdXBNZW51U3R5bGUoY29uc3QgQ29sb3ImIGZvcmVncm91
bmQsIGNvbnN0IENvbG9yJiBiYWNrZ3JvdW5kLCBjb25zdCBGb250JiBmb250LCBib29sIHZpc2li
bGUsIGJvb2wgaXNEaXNwbGF5Tm9uZSwgTGVuZ3RoIHRleHRJbmRlbnQsIFRleHREaXJlY3Rpb24g
dGV4dERpcmVjdGlvbiwgYm9vbCBoYXNUZXh0RGlyZWN0aW9uT3ZlcnJpZGUsIEJhY2tncm91bmRD
b2xvclR5cGUgYmFja2dyb3VuZENvbG9yVHlwZSA9IERlZmF1bHRCYWNrZ3JvdW5kQ29sb3IsIFBv
cHVwTWVudVR5cGUgbWVudVR5cGUgPSBTZWxlY3RQb3B1cCkKICAgICAgICAgOiBtX2ZvcmVncm91
bmRDb2xvcihmb3JlZ3JvdW5kKQogICAgICAgICAsIG1fYmFja2dyb3VuZENvbG9yKGJhY2tncm91
bmQpCiAgICAgICAgICwgbV9mb250KGZvbnQpCkBAIC00NSw2ICs0Niw3IEBAIHB1YmxpYzoKICAg
ICAgICAgLCBtX3RleHRJbmRlbnQodGV4dEluZGVudCkKICAgICAgICAgLCBtX3RleHREaXJlY3Rp
b24odGV4dERpcmVjdGlvbikKICAgICAgICAgLCBtX2hhc1RleHREaXJlY3Rpb25PdmVycmlkZSho
YXNUZXh0RGlyZWN0aW9uT3ZlcnJpZGUpCisgICAgICAgICwgbV9iYWNrZ3JvdW5kQ29sb3JUeXBl
KGJhY2tncm91bmRDb2xvclR5cGUpCiAgICAgICAgICwgbV9tZW51VHlwZShtZW51VHlwZSkKICAg
ICB7CiAgICAgfQpAQCAtNTcsNiArNTksNyBAQCBwdWJsaWM6CiAgICAgTGVuZ3RoIHRleHRJbmRl
bnQoKSBjb25zdCB7IHJldHVybiBtX3RleHRJbmRlbnQ7IH0KICAgICBUZXh0RGlyZWN0aW9uIHRl
eHREaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3RleHREaXJlY3Rpb247IH0KICAgICBib29s
IGhhc1RleHREaXJlY3Rpb25PdmVycmlkZSgpIGNvbnN0IHsgcmV0dXJuIG1faGFzVGV4dERpcmVj
dGlvbk92ZXJyaWRlOyB9CisgICAgQmFja2dyb3VuZENvbG9yVHlwZSBiYWNrZ3JvdW5kQ29sb3JU
eXBlKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kQ29sb3JUeXBlOyB9CiAgICAgUG9wdXBN
ZW51VHlwZSBtZW51VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVudVR5cGU7IH0KIHByaXZhdGU6
CiAgICAgQ29sb3IgbV9mb3JlZ3JvdW5kQ29sb3I7CkBAIC02Nyw2ICs3MCw3IEBAIHByaXZhdGU6
CiAgICAgTGVuZ3RoIG1fdGV4dEluZGVudDsKICAgICBUZXh0RGlyZWN0aW9uIG1fdGV4dERpcmVj
dGlvbjsKICAgICBib29sIG1faGFzVGV4dERpcmVjdGlvbk92ZXJyaWRlOworICAgIEJhY2tncm91
bmRDb2xvclR5cGUgbV9iYWNrZ3JvdW5kQ29sb3JUeXBlOwogICAgIFBvcHVwTWVudVR5cGUgbV9t
ZW51VHlwZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL1BvcHVwTGlzdEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Q
b3B1cExpc3RCb3guY3BwCmluZGV4IDVjNzZhZTEwMWYwMDYwYWRmNTZmODZlZWFmNzFkYTExOThi
YzQ3NzAuLjMxODhhMTAyMWY0ODVhZDYwOTVmNWI2NGRmOWU5NWRiYmVlNDhkMTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTGlzdEJveC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBMaXN0Qm94LmNwcApAQCAt
MzAsNiArMzAsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlBvcHVwTGlzdEJv
eC5oIgogCisjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgogI2luY2x1ZGUgIkZvbnQuaCIK
ICNpbmNsdWRlICJGb250U2VsZWN0b3IuaCIKICNpbmNsdWRlICJGcmFtZWxlc3NTY3JvbGxWaWV3
Q2xpZW50LmgiCkBAIC00MDEsNiArNDAyLDE2IEBAIHZvaWQgUG9wdXBMaXN0Qm94OjpwYWludFJv
dyhHcmFwaGljc0NvbnRleHQqIGdjLCBjb25zdCBJbnRSZWN0JiByZWN0LCBpbnQgcm93SW5kCiAg
ICAgfSBlbHNlIHsKICAgICAgICAgYmFja0NvbG9yID0gc3R5bGUuYmFja2dyb3VuZENvbG9yKCk7
CiAgICAgICAgIHRleHRDb2xvciA9IHN0eWxlLmZvcmVncm91bmRDb2xvcigpOworCisjaWYgT1Mo
TElOVVgpCisgICAgICAgIC8vIE9uIG90aGVyIHBsYXRmb3JtcywgdGhlIDxvcHRpb24+IGJhY2tn
cm91bmQgY29sb3IgaXMgdGhlIHNhbWUgYXMgdGhlCisgICAgICAgIC8vIDxzZWxlY3Q+IGJhY2tn
cm91bmQgY29sb3IuIE9uIExpbnV4LCB0aGF0IG1ha2VzIHRoZSA8b3B0aW9uPgorICAgICAgICAv
LyBiYWNrZ3JvdW5kIGNvbG9yIHZlcnkgZGFyaywgc28gYnkgZGVmYXVsdCwgdHJ5IHRvIHVzZSBh
IGxpZ2h0ZXIKKyAgICAgICAgLy8gYmFja2dyb3VuZCBjb2xvciBmb3IgPG9wdGlvbj5zLgorICAg
ICAgICBpZiAoc3R5bGUuYmFja2dyb3VuZENvbG9yVHlwZSgpID09IFBvcHVwTWVudVN0eWxlOjpE
ZWZhdWx0QmFja2dyb3VuZENvbG9yICYmIFJlbmRlclRoZW1lOjpkZWZhdWx0VGhlbWUoKS0+c3lz
dGVtQ29sb3IoQ1NTVmFsdWVCdXR0b25mYWNlKSA9PSBiYWNrQ29sb3IpCisgICAgICAgICAgICBi
YWNrQ29sb3IgPSBSZW5kZXJUaGVtZTo6ZGVmYXVsdFRoZW1lKCktPnN5c3RlbUNvbG9yKENTU1Zh
bHVlTWVudSk7CisjZW5kaWYKKwogICAgICAgICAvLyBGSVhNRTogZm9yIG5vdyB0aGUgbGFiZWwg
Y29sb3IgaXMgaGFyZC1jb2RlZC4gSXQgc2hvdWxkIGJlIGFkZGVkIHRvCiAgICAgICAgIC8vIHRo
ZSBQb3B1cE1lbnVTdHlsZS4KICAgICAgICAgbGFiZWxDb2xvciA9IENvbG9yKDExNSwgMTE1LCAx
MTUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAKaW5kZXgg
NjZmNjBmOTMxYzZlYTM3NjUzMDRhZjY2ZTM4YjA0ODk4NGIyMTkwYy4uMTAzZDgxMWZkOWY0ZGY0
YjE1NzU3ZGQ4NzFjMjMzNTcxOTM4ODkyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTWVudUxpc3QuY3BwCkBAIC00NjMsMzMgKzQ2Myw0NiBAQCBQb3B1cE1lbnVTdHlsZSBS
ZW5kZXJNZW51TGlzdDo6aXRlbVN0eWxlKHVuc2lnbmVkIGxpc3RJbmRleCkgY29uc3QKICAgICAg
ICAgbGlzdEluZGV4ID0gMDsKICAgICB9CiAgICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSBsaXN0
SXRlbXNbbGlzdEluZGV4XTsKLSAgICAKKworICAgIENvbG9yIGl0ZW1CYWNrZ3JvdW5kQ29sb3I7
CisgICAgYm9vbCBpdGVtSGFzQ3VzdG9tQmFja2dyb3VuZENvbG9yOworICAgIGdldEl0ZW1CYWNr
Z3JvdW5kQ29sb3JBbmRGbGFnKGxpc3RJbmRleCwgaXRlbUJhY2tncm91bmRDb2xvciwgaXRlbUhh
c0N1c3RvbUJhY2tncm91bmRDb2xvcik7CisKICAgICBSZW5kZXJTdHlsZSogc3R5bGUgPSBlbGVt
ZW50LT5yZW5kZXJTdHlsZSgpID8gZWxlbWVudC0+cmVuZGVyU3R5bGUoKSA6IGVsZW1lbnQtPmNv
bXB1dGVkU3R5bGUoKTsKLSAgICByZXR1cm4gc3R5bGUgPyBQb3B1cE1lbnVTdHlsZShzdHlsZS0+
dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBpdGVtQmFja2dyb3VuZENv
bG9yKGxpc3RJbmRleCksIHN0eWxlLT5mb250KCksIHN0eWxlLT52aXNpYmlsaXR5KCkgPT0gVklT
SUJMRSwKLSAgICAgICAgc3R5bGUtPmRpc3BsYXkoKSA9PSBOT05FLCBzdHlsZS0+dGV4dEluZGVu
dCgpLCBzdHlsZS0+ZGlyZWN0aW9uKCksIGlzT3ZlcnJpZGUoc3R5bGUtPnVuaWNvZGVCaWRpKCkp
KSA6IG1lbnVTdHlsZSgpOworICAgIHJldHVybiBzdHlsZSA/IFBvcHVwTWVudVN0eWxlKHN0eWxl
LT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIGl0ZW1CYWNrZ3JvdW5k
Q29sb3IsIHN0eWxlLT5mb250KCksIHN0eWxlLT52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSwKKyAg
ICAgICAgc3R5bGUtPmRpc3BsYXkoKSA9PSBOT05FLCBzdHlsZS0+dGV4dEluZGVudCgpLCBzdHls
ZS0+ZGlyZWN0aW9uKCksIGlzT3ZlcnJpZGUoc3R5bGUtPnVuaWNvZGVCaWRpKCkpLAorICAgICAg
ICBpdGVtSGFzQ3VzdG9tQmFja2dyb3VuZENvbG9yID8gUG9wdXBNZW51U3R5bGU6OkN1c3RvbUJh
Y2tncm91bmRDb2xvciA6IFBvcHVwTWVudVN0eWxlOjpEZWZhdWx0QmFja2dyb3VuZENvbG9yKSA6
IG1lbnVTdHlsZSgpOwogfQogCi1Db2xvciBSZW5kZXJNZW51TGlzdDo6aXRlbUJhY2tncm91bmRD
b2xvcih1bnNpZ25lZCBsaXN0SW5kZXgpIGNvbnN0Cit2b2lkIFJlbmRlck1lbnVMaXN0OjpnZXRJ
dGVtQmFja2dyb3VuZENvbG9yQW5kRmxhZyh1bnNpZ25lZCBsaXN0SW5kZXgsIENvbG9yJiBvdXRJ
dGVtQmFja2dyb3VuZENvbG9yLCBib29sJiBvdXRJdGVtSGFzQ3VzdG9tQmFja2dyb3VuZENvbG9y
KSBjb25zdAogewogICAgIGNvbnN0IFZlY3RvcjxIVE1MRWxlbWVudCo+JiBsaXN0SXRlbXMgPSBz
ZWxlY3RFbGVtZW50KCktPmxpc3RJdGVtcygpOwotICAgIGlmIChsaXN0SW5kZXggPj0gbGlzdEl0
ZW1zLnNpemUoKSkKLSAgICAgICAgcmV0dXJuIHN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xv
cihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7CisgICAgaWYgKGxpc3RJbmRleCA+PSBsaXN0
SXRlbXMuc2l6ZSgpKSB7CisgICAgICAgIG91dEl0ZW1CYWNrZ3JvdW5kQ29sb3IgPSBzdHlsZSgp
LT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpOworICAg
ICAgICBvdXRJdGVtSGFzQ3VzdG9tQmFja2dyb3VuZENvbG9yID0gZmFsc2U7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CiAgICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSBsaXN0SXRlbXNbbGlzdElu
ZGV4XTsKIAogICAgIENvbG9yIGJhY2tncm91bmRDb2xvcjsKICAgICBpZiAoZWxlbWVudC0+cmVu
ZGVyU3R5bGUoKSkKICAgICAgICAgYmFja2dyb3VuZENvbG9yID0gZWxlbWVudC0+cmVuZGVyU3R5
bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKTsK
KyAgICBvdXRJdGVtSGFzQ3VzdG9tQmFja2dyb3VuZENvbG9yID0gYmFja2dyb3VuZENvbG9yLmlz
VmFsaWQoKSAmJiBiYWNrZ3JvdW5kQ29sb3IuYWxwaGEoKTsKICAgICAvLyBJZiB0aGUgaXRlbSBo
YXMgYW4gb3BhcXVlIGJhY2tncm91bmQgY29sb3IsIHJldHVybiB0aGF0LgotICAgIGlmICghYmFj
a2dyb3VuZENvbG9yLmhhc0FscGhhKCkpCi0gICAgICAgIHJldHVybiBiYWNrZ3JvdW5kQ29sb3I7
CisgICAgaWYgKCFiYWNrZ3JvdW5kQ29sb3IuaGFzQWxwaGEoKSkgeworICAgICAgICBvdXRJdGVt
QmFja2dyb3VuZENvbG9yID0gYmFja2dyb3VuZENvbG9yOworICAgICAgICByZXR1cm47CisgICAg
fQogCiAgICAgLy8gT3RoZXJ3aXNlLCB0aGUgaXRlbSdzIGJhY2tncm91bmQgaXMgb3ZlcmxheWVk
IG9uIHRvcCBvZiB0aGUgbWVudSBiYWNrZ3JvdW5kLgogICAgIGJhY2tncm91bmRDb2xvciA9IHN0
eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciku
YmxlbmQoYmFja2dyb3VuZENvbG9yKTsKLSAgICBpZiAoIWJhY2tncm91bmRDb2xvci5oYXNBbHBo
YSgpKQotICAgICAgICByZXR1cm4gYmFja2dyb3VuZENvbG9yOworICAgIGlmICghYmFja2dyb3Vu
ZENvbG9yLmhhc0FscGhhKCkpIHsKKyAgICAgICAgb3V0SXRlbUJhY2tncm91bmRDb2xvciA9IGJh
Y2tncm91bmRDb2xvcjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIC8vIElmIHRoZSBt
ZW51IGJhY2tncm91bmQgaXMgbm90IG9wYXF1ZSwgdGhlbiBhZGQgYW4gb3BhcXVlIHdoaXRlIGJh
Y2tncm91bmQgYmVoaW5kLgotICAgIHJldHVybiBDb2xvcihDb2xvcjo6d2hpdGUpLmJsZW5kKGJh
Y2tncm91bmRDb2xvcik7CisgICAgb3V0SXRlbUJhY2tncm91bmRDb2xvciA9IENvbG9yKENvbG9y
Ojp3aGl0ZSkuYmxlbmQoYmFja2dyb3VuZENvbG9yKTsKIH0KIAogUG9wdXBNZW51U3R5bGUgUmVu
ZGVyTWVudUxpc3Q6Om1lbnVTdHlsZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJNZW51TGlzdC5oCmluZGV4IGYwZDA2NmJjN2RmZjdlZDc0MzQzMmI3Zjc3NzY0NmEyNzBi
ZDk1YjguLjA1ZTY2YjJmYzQ1ZDViNmNlNWQyNmVhOTA0Mzk4NGM0OGI3YmQ1NjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5oCkBAIC0xMTUsNyArMTE1LDcgQEAg
cHJpdmF0ZToKIAogICAgIHZpcnR1YWwgYm9vbCBoYXNMaW5lSWZFbXB0eSgpIGNvbnN0IHsgcmV0
dXJuIHRydWU7IH0KIAotICAgIENvbG9yIGl0ZW1CYWNrZ3JvdW5kQ29sb3IodW5zaWduZWQgbGlz
dEluZGV4KSBjb25zdDsKKyAgICB2b2lkIGdldEl0ZW1CYWNrZ3JvdW5kQ29sb3JBbmRGbGFnKHVu
c2lnbmVkIGxpc3RJbmRleCwgQ29sb3ImIG91dEl0ZW1CYWNrZ3JvdW5kQ29sb3IsIGJvb2wmIG91
dEl0ZW1IYXNDdXN0b21CYWNrZ3JvdW5kQ29sb3IpIGNvbnN0OwogCiAgICAgdm9pZCBjcmVhdGVJ
bm5lckJsb2NrKCk7CiAgICAgdm9pZCBhZGp1c3RJbm5lclN0eWxlKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcAppbmRleCA3YWFiMmQwYTc2MTFl
NDE3OWRjMzZhYWJjNzUwYzljYTI4YWJmN2EwLi4xMWZkMjc5MmI1MjY0NDFhYmRlZTY5ZGQ2ZDlk
MTNlZjAwYzMzYmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
U2VhcmNoRmllbGQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFy
Y2hGaWVsZC5jcHAKQEAgLTI2Niw3ICsyNjYsNyBAQCBQb3B1cE1lbnVTdHlsZSBSZW5kZXJTZWFy
Y2hGaWVsZDo6aXRlbVN0eWxlKHVuc2lnbmVkKSBjb25zdAogUG9wdXBNZW51U3R5bGUgUmVuZGVy
U2VhcmNoRmllbGQ6Om1lbnVTdHlsZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFBvcHVwTWVudVN0
eWxlKHN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSwgc3R5
bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKSwg
c3R5bGUoKS0+Zm9udCgpLCBzdHlsZSgpLT52aXNpYmlsaXR5KCkgPT0gVklTSUJMRSwKLSAgICAg
ICAgc3R5bGUoKS0+ZGlzcGxheSgpID09IE5PTkUsIHN0eWxlKCktPnRleHRJbmRlbnQoKSwgc3R5
bGUoKS0+ZGlyZWN0aW9uKCksIGlzT3ZlcnJpZGUoc3R5bGUoKS0+dW5pY29kZUJpZGkoKSkpOwor
ICAgICAgICBzdHlsZSgpLT5kaXNwbGF5KCkgPT0gTk9ORSwgc3R5bGUoKS0+dGV4dEluZGVudCgp
LCBzdHlsZSgpLT5kaXJlY3Rpb24oKSwgaXNPdmVycmlkZShzdHlsZSgpLT51bmljb2RlQmlkaSgp
KSwgUG9wdXBNZW51U3R5bGU6OkN1c3RvbUJhY2tncm91bmRDb2xvcik7CiB9CiAKIGludCBSZW5k
ZXJTZWFyY2hGaWVsZDo6Y2xpZW50SW5zZXRMZWZ0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtRGVmYXVsdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bURlZmF1bHQuY3BwCmluZGV4
IGQ2NDM3MjlhZDk4ZmFjM2Y2ODc5MGQzNmQ5NGI2ZDdlODQ1NGE4ZjcuLjI0ZmVmNzAwZDUxN2I2
ZDNhYWRlOWYxODZiMzYwM2ZmNzY2NjI4YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtRGVmYXVsdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1EZWZhdWx0LmNwcApAQCAtOTEsOSArOTEs
MTIgQEAgUmVuZGVyVGhlbWVDaHJvbWl1bURlZmF1bHQ6On5SZW5kZXJUaGVtZUNocm9taXVtRGVm
YXVsdCgpCiBDb2xvciBSZW5kZXJUaGVtZUNocm9taXVtRGVmYXVsdDo6c3lzdGVtQ29sb3IoaW50
IGNzc1ZhbHVlSWQpIGNvbnN0CiB7CiAgICAgc3RhdGljIGNvbnN0IENvbG9yIGRlZmF1bHRCdXR0
b25HcmF5Q29sb3IoMHhmZmRkZGRkZCk7CisgICAgc3RhdGljIGNvbnN0IENvbG9yIGRlZmF1bHRN
ZW51Q29sb3IoMHhmZmY3ZjdmNyk7CiAKICAgICBpZiAoY3NzVmFsdWVJZCA9PSBDU1NWYWx1ZUJ1
dHRvbmZhY2UpCiAgICAgICAgIHJldHVybiBkZWZhdWx0QnV0dG9uR3JheUNvbG9yOworICAgIGlm
IChjc3NWYWx1ZUlkID09IENTU1ZhbHVlTWVudSkKKyAgICAgICAgcmV0dXJuIGRlZmF1bHRNZW51
Q29sb3I7CiAgICAgcmV0dXJuIFJlbmRlclRoZW1lOjpzeXN0ZW1Db2xvcihjc3NWYWx1ZUlkKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXV0b2ZpbGxQb3B1
cE1lbnVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXV0b2ZpbGxQb3B1
cE1lbnVDbGllbnQuY3BwCmluZGV4IGFkMjk3OTc3MGU2NTBlMGJmY2VkMTcyYTc0ZmQzZGZhMTk0
ZDVhOWQuLmU5YzY2NTE1MzBmNTI4YzJkZTQxODNkNzFhZTUyOGI1YmY1ODhhNzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0F1dG9maWxsUG9wdXBNZW51Q2xpZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9BdXRvZmlsbFBvcHVwTWVudUNsaWVu
dC5jcHAKQEAgLTI4OSwxOSArMjg5LDE5IEBAIHZvaWQgQXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQ6
OmluaXRpYWxpemUoCiAgICAgLy8gVGhlIGRpcmVjdGlvbiBvZiB0ZXh0IGluIHBvcHVwIG1lbnUg
aXMgc2V0IHRoZSBzYW1lIGFzIHRoZSBkaXJlY3Rpb24gb2YKICAgICAvLyB0aGUgaW5wdXQgZWxl
bWVudDogdGV4dEZpZWxkLgogICAgIG1fcmVndWxhclN0eWxlID0gYWRvcHRQdHIobmV3IFBvcHVw
TWVudVN0eWxlKENvbG9yOjpibGFjaywgQ29sb3I6OndoaXRlLCByZWd1bGFyRm9udCwgdHJ1ZSwg
ZmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
TGVuZ3RoKFdlYkNvcmU6OkZpeGVkKSwgdGV4dEZpZWxkLT5yZW5kZXJlcigpLT5zdHlsZSgpLT5k
aXJlY3Rpb24oKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0ZXh0RmllbGQtPnJlbmRlcmVyKCktPnN0eWxlKCktPnVuaWNvZGVCaWRpKCkgPT0gT3Zl
cnJpZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UG9wdXBNZW51U3R5bGU6OkF1dG9maWxsUG9wdXApKTsKKyAgICAgICAgTGVuZ3RoKFdlYkNvcmU6
OkZpeGVkKSwgdGV4dEZpZWxkLT5yZW5kZXJlcigpLT5zdHlsZSgpLT5kaXJlY3Rpb24oKSwKKyAg
ICAgICAgdGV4dEZpZWxkLT5yZW5kZXJlcigpLT5zdHlsZSgpLT51bmljb2RlQmlkaSgpID09IE92
ZXJyaWRlLAorICAgICAgICBQb3B1cE1lbnVTdHlsZTo6Q3VzdG9tQmFja2dyb3VuZENvbG9yLCBQ
b3B1cE1lbnVTdHlsZTo6QXV0b2ZpbGxQb3B1cCkpOwogCiAgICAgRm9udERlc2NyaXB0aW9uIHdh
cm5pbmdGb250RGVzY3JpcHRpb24gPSByZWd1bGFyRm9udC5mb250RGVzY3JpcHRpb24oKTsKICAg
ICB3YXJuaW5nRm9udERlc2NyaXB0aW9uLnNldEl0YWxpYyh0cnVlKTsKICAgICBGb250IHdhcm5p
bmdGb250KHdhcm5pbmdGb250RGVzY3JpcHRpb24sIHJlZ3VsYXJGb250LmxldHRlclNwYWNpbmco
KSwgcmVndWxhckZvbnQud29yZFNwYWNpbmcoKSk7CiAgICAgd2FybmluZ0ZvbnQudXBkYXRlKHJl
Z3VsYXJGb250LmZvbnRTZWxlY3RvcigpKTsKICAgICBtX3dhcm5pbmdTdHlsZSA9IGFkb3B0UHRy
KG5ldyBQb3B1cE1lbnVTdHlsZShDb2xvcjo6ZGFya0dyYXksIG1fcmVndWxhclN0eWxlLT5iYWNr
Z3JvdW5kQ29sb3IoKSwgd2FybmluZ0ZvbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbV9yZWd1bGFyU3R5bGUtPmlzVmlzaWJsZSgpLCBtX3JlZ3Vs
YXJTdHlsZS0+aXNEaXNwbGF5Tm9uZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1fcmVndWxhclN0eWxlLT50ZXh0SW5kZW50KCksIG1fcmVndWxh
clN0eWxlLT50ZXh0RGlyZWN0aW9uKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbV9yZWd1bGFyU3R5bGUtPmhhc1RleHREaXJlY3Rpb25PdmVycmlk
ZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBv
cHVwTWVudVN0eWxlOjpBdXRvZmlsbFBvcHVwKSk7CisgICAgICAgIG1fcmVndWxhclN0eWxlLT5p
c1Zpc2libGUoKSwgbV9yZWd1bGFyU3R5bGUtPmlzRGlzcGxheU5vbmUoKSwKKyAgICAgICAgbV9y
ZWd1bGFyU3R5bGUtPnRleHRJbmRlbnQoKSwgbV9yZWd1bGFyU3R5bGUtPnRleHREaXJlY3Rpb24o
KSwKKyAgICAgICAgbV9yZWd1bGFyU3R5bGUtPmhhc1RleHREaXJlY3Rpb25PdmVycmlkZSgpLAor
ICAgICAgICBQb3B1cE1lbnVTdHlsZTo6Q3VzdG9tQmFja2dyb3VuZENvbG9yLCBQb3B1cE1lbnVT
dHlsZTo6QXV0b2ZpbGxQb3B1cCkpOwogfQogCiB2b2lkIEF1dG9maWxsUG9wdXBNZW51Q2xpZW50
OjpzZXRTdWdnZXN0aW9ucyhjb25zdCBXZWJWZWN0b3I8V2ViU3RyaW5nPiYgbmFtZXMsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192527</attachid>
            <date>2013-03-11 12:27:24 -0700</date>
            <delta_ts>2013-03-12 01:30:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111873-20130311122323.patch</filename>
            <type>text/plain</type>
            <size>14966</size>
            <attacher name="xiyuan">xiyuan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1Mzc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmYxMDI2MWM3ZWU4ZTNj
YmEwNjMwYmQyYWQ3MjNiYzU4NjFhYzcwOC4uZGE2MmY0OGY2MWVkMzQ4NWRkZjM2OGRjZjU1MTkz
ZjZiNTFjODE3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEzLTAzLTExICBYaXl1
YW4gWGlhICA8eGl5dWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIGNocm9t
aXVtL2xpbnV4IGJyZWFrcyBleHBlY3RhdGlvbiBvZiBzZWxlY3QgcG9wdXAgYmFja2dyb3VuZCBk
dWUgdG8gYmFkIFVBIGNzcyBydWxlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTExODczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgT24gbGludXggdGhlIGRlZmF1bHQgPHNlbGVjdD4gYmFja2dyb3VuZCBj
b2xvciBpcyB0b28gZGFyayB0byB1c2UgYXMgdGhlCisgICAgICAgIHBvcHVwIGJhY2tncm91bmQg
Y29sb3IuICBMYXN0IGZpeGVzOgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTQxMTUgYW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01NjAyMworICAgICAgICBhdHRlbXB0IHRvIGZpeCB0aGUgcHJvYmxlbSBi
eSBhcHBseWluZyBhIGxpZ2h0ZXIgYmFja2dyb3VuZCB1c2luZworICAgICAgICBzcGVjaWFsIDxv
cHRpb24+IHNlbGVjdG9yLiBUaGlzIGJyZWFrcyBleHBlY3RhdGlvbnMgb2Ygc29tZSB3ZWJzaXRl
cy4KKworICAgICAgICBUaGlzIENMIHJldmVydHMgdGhlIGJhZCBVQSBjc3MgcnVsZXMgYWJvdmUg
YW5kIHByb3ZpZGVzIHRoZSBsaWdodGVyCisgICAgICAgIGJhY2tncm91bmQgY29sb3IgaWYgPHNl
bGVjdD4gYW5kIDxvcHRpb24+IGVsZW1lbnRzIGFyZSB1c2luZyB0aGUgZGVmYXVsdAorICAgICAg
ICBiYWNrZ3JvdW5kLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgdGhpcyB0ZXN0cyA8c2VsZWN0
PiBwb3B1cHMgYW5kIGNhbiBiZSB2ZXJpZmllZCBieSBNYW51YWxUZXN0cy9zZWxlY3Qtc2Nyb2xs
Lmh0bWwuCisKKyAgICAgICAgKiBjc3MvdGhlbWVDaHJvbWl1bUxpbnV4LmNzczoKKyAgICAgICAg
KHNlbGVjdCk6CisgICAgICAgICogcGxhdGZvcm0vUG9wdXBNZW51U3R5bGUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlBvcHVwTWVudVN0eWxlOjpQb3B1cE1lbnVTdHlsZSk6CisgICAgICAgIChXZWJD
b3JlOjpQb3B1cE1lbnVTdHlsZTo6YmFja2dyb3VuZENvbG9yVHlwZSk6CisgICAgICAgIChQb3B1
cE1lbnVTdHlsZSk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBMaXN0Qm94LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBvcHVwTGlzdEJveDo6cGFpbnRSb3cpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJN
ZW51TGlzdDo6aXRlbVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1lbnVMaXN0Ojpn
ZXRJdGVtQmFja2dyb3VuZENvbG9yKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWVudUxp
c3QuaDoKKyAgICAgICAgKFJlbmRlck1lbnVMaXN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyU2VhcmNoRmllbGQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2VhcmNoRmllbGQ6
Om1lbnVTdHlsZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1EZWZh
dWx0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQ2hyb21pdW1EZWZhdWx0Ojpz
eXN0ZW1Db2xvcik6CisKIDIwMTMtMDMtMTEgIEFsZWMgRmxldHQgIDxhbGVjZmxldHRAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIEluZGV4ZWREQjogUHJvdGVjdCBhZ2FpbnN0IGtleSBwcmVmaXgg
b3ZlcmZsb3dzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDU1NWJlZjIxODQzYWNjMGFi
NjM1MzliNmRmZGQ3ZTQ3OWYzNDZjNDkuLjNjYzU1N2JiZGJiN2RkNmM0Y2Y1YTdmMzJlN2ExNGMz
YjkyMjI2ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIw
MTMtMDMtMTEgIFhpeXVhbiBYaWEgIDx4aXl1YW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtD
aHJvbWl1bV0gY2hyb21pdW0vbGludXggYnJlYWtzIGV4cGVjdGF0aW9uIG9mIHNlbGVjdCBwb3B1
cCBiYWNrZ3JvdW5kIGR1ZSB0byBiYWQgVUEgY3NzIHJ1bGVzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTE4NzMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgUG9wdXBNZW51U3R5bGUgY29uc3Ry
dWN0b3IgY2FsbCBzaXRlcy4KKworICAgICAgICAqIHNyYy9BdXRvZmlsbFBvcHVwTWVudUNsaWVu
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkF1dG9maWxsUG9wdXBNZW51Q2xpZW50Ojppbml0aWFs
aXplKToKKwogMjAxMy0wMy0xMSAgQWxlYyBGbGV0dCAgPGFsZWNmbGV0dEBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgSW5kZXhlZERCOiBQcm90ZWN0IGFnYWluc3Qga2V5IHByZWZpeCBvdmVyZmxv
d3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy90aGVtZUNocm9taXVtTGludXguY3Nz
IGIvU291cmNlL1dlYkNvcmUvY3NzL3RoZW1lQ2hyb21pdW1MaW51eC5jc3MKaW5kZXggZGVlODQz
NjhhMzZmMThmODU0ZjZiNWM5NTQxMGFkZGUzMzJjNzc4NS4uNTBkZGQ2YWRmNTU5NjhiMTg0M2Vm
M2NhYmNjZDBjMzQ5ZWQzYmJhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3RoZW1l
Q2hyb21pdW1MaW51eC5jc3MKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3RoZW1lQ2hyb21pdW1M
aW51eC5jc3MKQEAgLTMxLDEzICszMSw4IEBACiAvKiBUaGVzZSBzdHlsZXMgb3ZlcnJpZGUgb3Ro
ZXIgdXNlci1hZ2VudCBzdHlsZXMgZm9yIENocm9taXVtIG9uIExpbnV4LiAqLwogCiBzZWxlY3Qg
ewotICAgIGJhY2tncm91bmQtY29sb3I6ICNkZGRkZGQ7Ci19Ci0KLXNlbGVjdDpub3QoW3NpemVd
KTpub3QoW211bHRpcGxlXSkgb3B0aW9uLAotc2VsZWN0W3NpemU9IjAiXSBvcHRpb24sCi1zZWxl
Y3Rbc2l6ZT0iMSJdIG9wdGlvbiB7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogI2Y3ZjdmNzsKKyAg
ICAvKiBTZWxlY3RzIGxvb2sgbGlrZSBidXR0b25zIHdpdGggYSBkcm9wIGRvd24gdHJpYW5nbGUg
b24gTGludXguICovCisgICAgYmFja2dyb3VuZC1jb2xvcjogQnV0dG9uRmFjZTsKIH0KIAogaW5w
dXRbdHlwZT1yYW5nZV0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUG9w
dXBNZW51U3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BvcHVwTWVudVN0eWxlLmgK
aW5kZXggZTk3OWUyNWVlOTc1ZGIzNDhiNzIxODVjYWNjYzQ4MjIyMjE4MjU5Ny4uNjg5ZWQyOWRi
ODRhZjAyNDEzYzc2ZmZiYzRlMzk1ZDAxM2Y2MmNhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUG9wdXBNZW51U3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Qb3B1cE1lbnVTdHlsZS5oCkBAIC0zNiw3ICszNiw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIFBvcHVwTWVudVN0eWxlIHsKIHB1YmxpYzoKICAgICBlbnVtIFBvcHVwTWVudVR5cGUg
eyBTZWxlY3RQb3B1cCwgQXV0b2ZpbGxQb3B1cCB9OwotICAgIFBvcHVwTWVudVN0eWxlKGNvbnN0
IENvbG9yJiBmb3JlZ3JvdW5kLCBjb25zdCBDb2xvciYgYmFja2dyb3VuZCwgY29uc3QgRm9udCYg
Zm9udCwgYm9vbCB2aXNpYmxlLCBib29sIGlzRGlzcGxheU5vbmUsIExlbmd0aCB0ZXh0SW5kZW50
LCBUZXh0RGlyZWN0aW9uIHRleHREaXJlY3Rpb24sIGJvb2wgaGFzVGV4dERpcmVjdGlvbk92ZXJy
aWRlLCBQb3B1cE1lbnVUeXBlIG1lbnVUeXBlID0gU2VsZWN0UG9wdXApCisgICAgZW51bSBCYWNr
Z3JvdW5kQ29sb3JUeXBlIHsgRGVmYXVsdEJhY2tncm91bmRDb2xvciwgQ3VzdG9tQmFja2dyb3Vu
ZENvbG9yIH07CisgICAgUG9wdXBNZW51U3R5bGUoY29uc3QgQ29sb3ImIGZvcmVncm91bmQsIGNv
bnN0IENvbG9yJiBiYWNrZ3JvdW5kLCBjb25zdCBGb250JiBmb250LCBib29sIHZpc2libGUsIGJv
b2wgaXNEaXNwbGF5Tm9uZSwgTGVuZ3RoIHRleHRJbmRlbnQsIFRleHREaXJlY3Rpb24gdGV4dERp
cmVjdGlvbiwgYm9vbCBoYXNUZXh0RGlyZWN0aW9uT3ZlcnJpZGUsIEJhY2tncm91bmRDb2xvclR5
cGUgYmFja2dyb3VuZENvbG9yVHlwZSA9IERlZmF1bHRCYWNrZ3JvdW5kQ29sb3IsIFBvcHVwTWVu
dVR5cGUgbWVudVR5cGUgPSBTZWxlY3RQb3B1cCkKICAgICAgICAgOiBtX2ZvcmVncm91bmRDb2xv
cihmb3JlZ3JvdW5kKQogICAgICAgICAsIG1fYmFja2dyb3VuZENvbG9yKGJhY2tncm91bmQpCiAg
ICAgICAgICwgbV9mb250KGZvbnQpCkBAIC00NSw2ICs0Niw3IEBAIHB1YmxpYzoKICAgICAgICAg
LCBtX3RleHRJbmRlbnQodGV4dEluZGVudCkKICAgICAgICAgLCBtX3RleHREaXJlY3Rpb24odGV4
dERpcmVjdGlvbikKICAgICAgICAgLCBtX2hhc1RleHREaXJlY3Rpb25PdmVycmlkZShoYXNUZXh0
RGlyZWN0aW9uT3ZlcnJpZGUpCisgICAgICAgICwgbV9iYWNrZ3JvdW5kQ29sb3JUeXBlKGJhY2tn
cm91bmRDb2xvclR5cGUpCiAgICAgICAgICwgbV9tZW51VHlwZShtZW51VHlwZSkKICAgICB7CiAg
ICAgfQpAQCAtNTcsNiArNTksNyBAQCBwdWJsaWM6CiAgICAgTGVuZ3RoIHRleHRJbmRlbnQoKSBj
b25zdCB7IHJldHVybiBtX3RleHRJbmRlbnQ7IH0KICAgICBUZXh0RGlyZWN0aW9uIHRleHREaXJl
Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3RleHREaXJlY3Rpb247IH0KICAgICBib29sIGhhc1Rl
eHREaXJlY3Rpb25PdmVycmlkZSgpIGNvbnN0IHsgcmV0dXJuIG1faGFzVGV4dERpcmVjdGlvbk92
ZXJyaWRlOyB9CisgICAgQmFja2dyb3VuZENvbG9yVHlwZSBiYWNrZ3JvdW5kQ29sb3JUeXBlKCkg
Y29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kQ29sb3JUeXBlOyB9CiAgICAgUG9wdXBNZW51VHlw
ZSBtZW51VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVudVR5cGU7IH0KIHByaXZhdGU6CiAgICAg
Q29sb3IgbV9mb3JlZ3JvdW5kQ29sb3I7CkBAIC02Nyw2ICs3MCw3IEBAIHByaXZhdGU6CiAgICAg
TGVuZ3RoIG1fdGV4dEluZGVudDsKICAgICBUZXh0RGlyZWN0aW9uIG1fdGV4dERpcmVjdGlvbjsK
ICAgICBib29sIG1faGFzVGV4dERpcmVjdGlvbk92ZXJyaWRlOworICAgIEJhY2tncm91bmRDb2xv
clR5cGUgbV9iYWNrZ3JvdW5kQ29sb3JUeXBlOwogICAgIFBvcHVwTWVudVR5cGUgbV9tZW51VHlw
ZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Bv
cHVwTGlzdEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cExp
c3RCb3guY3BwCmluZGV4IDVjNzZhZTEwMWYwMDYwYWRmNTZmODZlZWFmNzFkYTExOThiYzQ3NzAu
LjMxODhhMTAyMWY0ODVhZDYwOTVmNWI2NGRmOWU5NWRiYmVlNDhkMTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTGlzdEJveC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBMaXN0Qm94LmNwcApAQCAtMzAsNiAr
MzAsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlBvcHVwTGlzdEJveC5oIgog
CisjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgogI2luY2x1ZGUgIkZvbnQuaCIKICNpbmNs
dWRlICJGb250U2VsZWN0b3IuaCIKICNpbmNsdWRlICJGcmFtZWxlc3NTY3JvbGxWaWV3Q2xpZW50
LmgiCkBAIC00MDEsNiArNDAyLDE2IEBAIHZvaWQgUG9wdXBMaXN0Qm94OjpwYWludFJvdyhHcmFw
aGljc0NvbnRleHQqIGdjLCBjb25zdCBJbnRSZWN0JiByZWN0LCBpbnQgcm93SW5kCiAgICAgfSBl
bHNlIHsKICAgICAgICAgYmFja0NvbG9yID0gc3R5bGUuYmFja2dyb3VuZENvbG9yKCk7CiAgICAg
ICAgIHRleHRDb2xvciA9IHN0eWxlLmZvcmVncm91bmRDb2xvcigpOworCisjaWYgT1MoTElOVVgp
CisgICAgICAgIC8vIE9uIG90aGVyIHBsYXRmb3JtcywgdGhlIDxvcHRpb24+IGJhY2tncm91bmQg
Y29sb3IgaXMgdGhlIHNhbWUgYXMgdGhlCisgICAgICAgIC8vIDxzZWxlY3Q+IGJhY2tncm91bmQg
Y29sb3IuIE9uIExpbnV4LCB0aGF0IG1ha2VzIHRoZSA8b3B0aW9uPgorICAgICAgICAvLyBiYWNr
Z3JvdW5kIGNvbG9yIHZlcnkgZGFyaywgc28gYnkgZGVmYXVsdCwgdHJ5IHRvIHVzZSBhIGxpZ2h0
ZXIKKyAgICAgICAgLy8gYmFja2dyb3VuZCBjb2xvciBmb3IgPG9wdGlvbj5zLgorICAgICAgICBp
ZiAoc3R5bGUuYmFja2dyb3VuZENvbG9yVHlwZSgpID09IFBvcHVwTWVudVN0eWxlOjpEZWZhdWx0
QmFja2dyb3VuZENvbG9yICYmIFJlbmRlclRoZW1lOjpkZWZhdWx0VGhlbWUoKS0+c3lzdGVtQ29s
b3IoQ1NTVmFsdWVCdXR0b25mYWNlKSA9PSBiYWNrQ29sb3IpCisgICAgICAgICAgICBiYWNrQ29s
b3IgPSBSZW5kZXJUaGVtZTo6ZGVmYXVsdFRoZW1lKCktPnN5c3RlbUNvbG9yKENTU1ZhbHVlTWVu
dSk7CisjZW5kaWYKKwogICAgICAgICAvLyBGSVhNRTogZm9yIG5vdyB0aGUgbGFiZWwgY29sb3Ig
aXMgaGFyZC1jb2RlZC4gSXQgc2hvdWxkIGJlIGFkZGVkIHRvCiAgICAgICAgIC8vIHRoZSBQb3B1
cE1lbnVTdHlsZS4KICAgICAgICAgbGFiZWxDb2xvciA9IENvbG9yKDExNSwgMTE1LCAxMTUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAKaW5kZXggNjZmNjBm
OTMxYzZlYTM3NjUzMDRhZjY2ZTM4YjA0ODk4NGIyMTkwYy4uY2ZmZTlkNTFhMWEwNGEzMjJmZDUx
Nzk5MWFlNDgyYTY4MzIxMTMwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck1lbnVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TWVudUxpc3QuY3BwCkBAIC00NjMsMzMgKzQ2Myw0NiBAQCBQb3B1cE1lbnVTdHlsZSBSZW5kZXJN
ZW51TGlzdDo6aXRlbVN0eWxlKHVuc2lnbmVkIGxpc3RJbmRleCkgY29uc3QKICAgICAgICAgbGlz
dEluZGV4ID0gMDsKICAgICB9CiAgICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSBsaXN0SXRlbXNb
bGlzdEluZGV4XTsKLSAgICAKKworICAgIENvbG9yIGl0ZW1CYWNrZ3JvdW5kQ29sb3I7CisgICAg
Ym9vbCBpdGVtSGFzQ3VzdG9tQmFja2dyb3VuZENvbG9yOworICAgIGdldEl0ZW1CYWNrZ3JvdW5k
Q29sb3IobGlzdEluZGV4LCBpdGVtQmFja2dyb3VuZENvbG9yLCBpdGVtSGFzQ3VzdG9tQmFja2dy
b3VuZENvbG9yKTsKKwogICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9IGVsZW1lbnQtPnJlbmRlclN0
eWxlKCkgPyBlbGVtZW50LT5yZW5kZXJTdHlsZSgpIDogZWxlbWVudC0+Y29tcHV0ZWRTdHlsZSgp
OwotICAgIHJldHVybiBzdHlsZSA/IFBvcHVwTWVudVN0eWxlKHN0eWxlLT52aXNpdGVkRGVwZW5k
ZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIGl0ZW1CYWNrZ3JvdW5kQ29sb3IobGlzdEluZGV4
KSwgc3R5bGUtPmZvbnQoKSwgc3R5bGUtPnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFLAotICAgICAg
ICBzdHlsZS0+ZGlzcGxheSgpID09IE5PTkUsIHN0eWxlLT50ZXh0SW5kZW50KCksIHN0eWxlLT5k
aXJlY3Rpb24oKSwgaXNPdmVycmlkZShzdHlsZS0+dW5pY29kZUJpZGkoKSkpIDogbWVudVN0eWxl
KCk7CisgICAgcmV0dXJuIHN0eWxlID8gUG9wdXBNZW51U3R5bGUoc3R5bGUtPnZpc2l0ZWREZXBl
bmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSwgaXRlbUJhY2tncm91bmRDb2xvciwgc3R5bGUt
PmZvbnQoKSwgc3R5bGUtPnZpc2liaWxpdHkoKSA9PSBWSVNJQkxFLAorICAgICAgICBzdHlsZS0+
ZGlzcGxheSgpID09IE5PTkUsIHN0eWxlLT50ZXh0SW5kZW50KCksIHN0eWxlLT5kaXJlY3Rpb24o
KSwgaXNPdmVycmlkZShzdHlsZS0+dW5pY29kZUJpZGkoKSksCisgICAgICAgIGl0ZW1IYXNDdXN0
b21CYWNrZ3JvdW5kQ29sb3IgPyBQb3B1cE1lbnVTdHlsZTo6Q3VzdG9tQmFja2dyb3VuZENvbG9y
IDogUG9wdXBNZW51U3R5bGU6OkRlZmF1bHRCYWNrZ3JvdW5kQ29sb3IpIDogbWVudVN0eWxlKCk7
CiB9CiAKLUNvbG9yIFJlbmRlck1lbnVMaXN0OjppdGVtQmFja2dyb3VuZENvbG9yKHVuc2lnbmVk
IGxpc3RJbmRleCkgY29uc3QKK3ZvaWQgUmVuZGVyTWVudUxpc3Q6OmdldEl0ZW1CYWNrZ3JvdW5k
Q29sb3IodW5zaWduZWQgbGlzdEluZGV4LCBDb2xvciYgaXRlbUJhY2tncm91bmRDb2xvciwgYm9v
bCYgaXRlbUhhc0N1c3RvbUJhY2tncm91bmRDb2xvcikgY29uc3QKIHsKICAgICBjb25zdCBWZWN0
b3I8SFRNTEVsZW1lbnQqPiYgbGlzdEl0ZW1zID0gc2VsZWN0RWxlbWVudCgpLT5saXN0SXRlbXMo
KTsKLSAgICBpZiAobGlzdEluZGV4ID49IGxpc3RJdGVtcy5zaXplKCkpCi0gICAgICAgIHJldHVy
biBzdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29s
b3IpOworICAgIGlmIChsaXN0SW5kZXggPj0gbGlzdEl0ZW1zLnNpemUoKSkgeworICAgICAgICBp
dGVtQmFja2dyb3VuZENvbG9yID0gc3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1By
b3BlcnR5QmFja2dyb3VuZENvbG9yKTsKKyAgICAgICAgaXRlbUhhc0N1c3RvbUJhY2tncm91bmRD
b2xvciA9IGZhbHNlOworICAgICAgICByZXR1cm47CisgICAgfQogICAgIEhUTUxFbGVtZW50KiBl
bGVtZW50ID0gbGlzdEl0ZW1zW2xpc3RJbmRleF07CiAKICAgICBDb2xvciBiYWNrZ3JvdW5kQ29s
b3I7CiAgICAgaWYgKGVsZW1lbnQtPnJlbmRlclN0eWxlKCkpCiAgICAgICAgIGJhY2tncm91bmRD
b2xvciA9IGVsZW1lbnQtPnJlbmRlclN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQ
cm9wZXJ0eUJhY2tncm91bmRDb2xvcik7CisgICAgaXRlbUhhc0N1c3RvbUJhY2tncm91bmRDb2xv
ciA9IGJhY2tncm91bmRDb2xvci5pc1ZhbGlkKCkgJiYgYmFja2dyb3VuZENvbG9yLmFscGhhKCk7
CiAgICAgLy8gSWYgdGhlIGl0ZW0gaGFzIGFuIG9wYXF1ZSBiYWNrZ3JvdW5kIGNvbG9yLCByZXR1
cm4gdGhhdC4KLSAgICBpZiAoIWJhY2tncm91bmRDb2xvci5oYXNBbHBoYSgpKQotICAgICAgICBy
ZXR1cm4gYmFja2dyb3VuZENvbG9yOworICAgIGlmICghYmFja2dyb3VuZENvbG9yLmhhc0FscGhh
KCkpIHsKKyAgICAgICAgaXRlbUJhY2tncm91bmRDb2xvciA9IGJhY2tncm91bmRDb2xvcjsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIC8vIE90aGVyd2lzZSwgdGhlIGl0ZW0ncyBiYWNr
Z3JvdW5kIGlzIG92ZXJsYXllZCBvbiB0b3Agb2YgdGhlIG1lbnUgYmFja2dyb3VuZC4KICAgICBi
YWNrZ3JvdW5kQ29sb3IgPSBzdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kQ29sb3IpLmJsZW5kKGJhY2tncm91bmRDb2xvcik7Ci0gICAgaWYgKCFiYWNr
Z3JvdW5kQ29sb3IuaGFzQWxwaGEoKSkKLSAgICAgICAgcmV0dXJuIGJhY2tncm91bmRDb2xvcjsK
KyAgICBpZiAoIWJhY2tncm91bmRDb2xvci5oYXNBbHBoYSgpKSB7CisgICAgICAgIGl0ZW1CYWNr
Z3JvdW5kQ29sb3IgPSBiYWNrZ3JvdW5kQ29sb3I7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAK
ICAgICAvLyBJZiB0aGUgbWVudSBiYWNrZ3JvdW5kIGlzIG5vdCBvcGFxdWUsIHRoZW4gYWRkIGFu
IG9wYXF1ZSB3aGl0ZSBiYWNrZ3JvdW5kIGJlaGluZC4KLSAgICByZXR1cm4gQ29sb3IoQ29sb3I6
OndoaXRlKS5ibGVuZChiYWNrZ3JvdW5kQ29sb3IpOworICAgIGl0ZW1CYWNrZ3JvdW5kQ29sb3Ig
PSBDb2xvcihDb2xvcjo6d2hpdGUpLmJsZW5kKGJhY2tncm91bmRDb2xvcik7CiB9CiAKIFBvcHVw
TWVudVN0eWxlIFJlbmRlck1lbnVMaXN0OjptZW51U3R5bGUoKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuaAppbmRleCBmMGQwNjZiYzdkZmY3ZWQ3NDM0MzJi
N2Y3Nzc2NDZhMjcwYmQ5NWI4Li5hN2M1ZGVlMTQwOTFhMGMxNjhiZjdmNTkwOTE5N2Q1ZjNmMmEw
Yzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuaApAQCAtMTE1
LDcgKzExNSw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIGJvb2wgaGFzTGluZUlmRW1wdHko
KSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBDb2xvciBpdGVtQmFja2dyb3VuZENvbG9y
KHVuc2lnbmVkIGxpc3RJbmRleCkgY29uc3Q7CisgICAgdm9pZCBnZXRJdGVtQmFja2dyb3VuZENv
bG9yKHVuc2lnbmVkIGxpc3RJbmRleCwgQ29sb3ImLCBib29sJiBpdGVtSGFzQ3VzdG9tQmFja2dy
b3VuZENvbG9yKSBjb25zdDsKIAogICAgIHZvaWQgY3JlYXRlSW5uZXJCbG9jaygpOwogICAgIHZv
aWQgYWRqdXN0SW5uZXJTdHlsZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTZWFyY2hGaWVsZC5jcHAKaW5kZXggN2FhYjJkMGE3NjExZTQxNzlkYzM2YWFiYzc1MGM5Y2Ey
OGFiZjdhMC4uMTFmZDI3OTJiNTI2NDQxYWJkZWU2OWRkNmQ5ZDEzZWYwMGMzM2JkOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuY3BwCkBAIC0yNjYs
NyArMjY2LDcgQEAgUG9wdXBNZW51U3R5bGUgUmVuZGVyU2VhcmNoRmllbGQ6Oml0ZW1TdHlsZSh1
bnNpZ25lZCkgY29uc3QKIFBvcHVwTWVudVN0eWxlIFJlbmRlclNlYXJjaEZpZWxkOjptZW51U3R5
bGUoKSBjb25zdAogewogICAgIHJldHVybiBQb3B1cE1lbnVTdHlsZShzdHlsZSgpLT52aXNpdGVk
RGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIHN0eWxlKCktPnZpc2l0ZWREZXBlbmRl
bnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciksIHN0eWxlKCktPmZvbnQoKSwgc3R5
bGUoKS0+dmlzaWJpbGl0eSgpID09IFZJU0lCTEUsCi0gICAgICAgIHN0eWxlKCktPmRpc3BsYXko
KSA9PSBOT05FLCBzdHlsZSgpLT50ZXh0SW5kZW50KCksIHN0eWxlKCktPmRpcmVjdGlvbigpLCBp
c092ZXJyaWRlKHN0eWxlKCktPnVuaWNvZGVCaWRpKCkpKTsKKyAgICAgICAgc3R5bGUoKS0+ZGlz
cGxheSgpID09IE5PTkUsIHN0eWxlKCktPnRleHRJbmRlbnQoKSwgc3R5bGUoKS0+ZGlyZWN0aW9u
KCksIGlzT3ZlcnJpZGUoc3R5bGUoKS0+dW5pY29kZUJpZGkoKSksIFBvcHVwTWVudVN0eWxlOjpD
dXN0b21CYWNrZ3JvdW5kQ29sb3IpOwogfQogCiBpbnQgUmVuZGVyU2VhcmNoRmllbGQ6OmNsaWVu
dEluc2V0TGVmdCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVDaHJvbWl1bURlZmF1bHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lQ2hyb21pdW1EZWZhdWx0LmNwcAppbmRleCBkNjQzNzI5YWQ5OGZhYzNmNjg3
OTBkMzZkOTRiNmQ3ZTg0NTRhOGY3Li4yNGZlZjcwMGQ1MTdiNmQzYWFkZTlmMTg2YjM2MDNmZjc2
NjYyOGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVD
aHJvbWl1bURlZmF1bHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZUNocm9taXVtRGVmYXVsdC5jcHAKQEAgLTkxLDkgKzkxLDEyIEBAIFJlbmRlclRoZW1lQ2hy
b21pdW1EZWZhdWx0Ojp+UmVuZGVyVGhlbWVDaHJvbWl1bURlZmF1bHQoKQogQ29sb3IgUmVuZGVy
VGhlbWVDaHJvbWl1bURlZmF1bHQ6OnN5c3RlbUNvbG9yKGludCBjc3NWYWx1ZUlkKSBjb25zdAog
ewogICAgIHN0YXRpYyBjb25zdCBDb2xvciBkZWZhdWx0QnV0dG9uR3JheUNvbG9yKDB4ZmZkZGRk
ZGQpOworICAgIHN0YXRpYyBjb25zdCBDb2xvciBkZWZhdWx0TWVudUNvbG9yKDB4ZmZmN2Y3Zjcp
OwogCiAgICAgaWYgKGNzc1ZhbHVlSWQgPT0gQ1NTVmFsdWVCdXR0b25mYWNlKQogICAgICAgICBy
ZXR1cm4gZGVmYXVsdEJ1dHRvbkdyYXlDb2xvcjsKKyAgICBpZiAoY3NzVmFsdWVJZCA9PSBDU1NW
YWx1ZU1lbnUpCisgICAgICAgIHJldHVybiBkZWZhdWx0TWVudUNvbG9yOwogICAgIHJldHVybiBS
ZW5kZXJUaGVtZTo6c3lzdGVtQ29sb3IoY3NzVmFsdWVJZCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0F1dG9maWxsUG9wdXBNZW51Q2xpZW50LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0F1dG9maWxsUG9wdXBNZW51Q2xpZW50LmNwcAppbmRl
eCBhZDI5Nzk3NzBlNjUwZTBiZmNlZDE3MmE3NGZkM2RmYTE5NGQ1YTlkLi5lOWM2NjUxNTMwZjUy
OGMyZGU0MTgzZDcxYWU1MjhiNWJmNTg4YTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9BdXRvZmlsbFBvcHVwTWVudUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvQXV0b2ZpbGxQb3B1cE1lbnVDbGllbnQuY3BwCkBAIC0yODksMTkgKzI4
OSwxOSBAQCB2b2lkIEF1dG9maWxsUG9wdXBNZW51Q2xpZW50Ojppbml0aWFsaXplKAogICAgIC8v
IFRoZSBkaXJlY3Rpb24gb2YgdGV4dCBpbiBwb3B1cCBtZW51IGlzIHNldCB0aGUgc2FtZSBhcyB0
aGUgZGlyZWN0aW9uIG9mCiAgICAgLy8gdGhlIGlucHV0IGVsZW1lbnQ6IHRleHRGaWVsZC4KICAg
ICBtX3JlZ3VsYXJTdHlsZSA9IGFkb3B0UHRyKG5ldyBQb3B1cE1lbnVTdHlsZShDb2xvcjo6Ymxh
Y2ssIENvbG9yOjp3aGl0ZSwgcmVndWxhckZvbnQsIHRydWUsIGZhbHNlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExlbmd0aChXZWJDb3JlOjpGaXhl
ZCksIHRleHRGaWVsZC0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+ZGlyZWN0aW9uKCksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEZpZWxkLT5yZW5k
ZXJlcigpLT5zdHlsZSgpLT51bmljb2RlQmlkaSgpID09IE92ZXJyaWRlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvcHVwTWVudVN0eWxlOjpBdXRv
ZmlsbFBvcHVwKSk7CisgICAgICAgIExlbmd0aChXZWJDb3JlOjpGaXhlZCksIHRleHRGaWVsZC0+
cmVuZGVyZXIoKS0+c3R5bGUoKS0+ZGlyZWN0aW9uKCksCisgICAgICAgIHRleHRGaWVsZC0+cmVu
ZGVyZXIoKS0+c3R5bGUoKS0+dW5pY29kZUJpZGkoKSA9PSBPdmVycmlkZSwKKyAgICAgICAgUG9w
dXBNZW51U3R5bGU6OkN1c3RvbUJhY2tncm91bmRDb2xvciwgUG9wdXBNZW51U3R5bGU6OkF1dG9m
aWxsUG9wdXApKTsKIAogICAgIEZvbnREZXNjcmlwdGlvbiB3YXJuaW5nRm9udERlc2NyaXB0aW9u
ID0gcmVndWxhckZvbnQuZm9udERlc2NyaXB0aW9uKCk7CiAgICAgd2FybmluZ0ZvbnREZXNjcmlw
dGlvbi5zZXRJdGFsaWModHJ1ZSk7CiAgICAgRm9udCB3YXJuaW5nRm9udCh3YXJuaW5nRm9udERl
c2NyaXB0aW9uLCByZWd1bGFyRm9udC5sZXR0ZXJTcGFjaW5nKCksIHJlZ3VsYXJGb250LndvcmRT
cGFjaW5nKCkpOwogICAgIHdhcm5pbmdGb250LnVwZGF0ZShyZWd1bGFyRm9udC5mb250U2VsZWN0
b3IoKSk7CiAgICAgbV93YXJuaW5nU3R5bGUgPSBhZG9wdFB0cihuZXcgUG9wdXBNZW51U3R5bGUo
Q29sb3I6OmRhcmtHcmF5LCBtX3JlZ3VsYXJTdHlsZS0+YmFja2dyb3VuZENvbG9yKCksIHdhcm5p
bmdGb250LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1fcmVndWxhclN0eWxlLT5pc1Zpc2libGUoKSwgbV9yZWd1bGFyU3R5bGUtPmlzRGlzcGxheU5v
bmUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
X3JlZ3VsYXJTdHlsZS0+dGV4dEluZGVudCgpLCBtX3JlZ3VsYXJTdHlsZS0+dGV4dERpcmVjdGlv
bigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1f
cmVndWxhclN0eWxlLT5oYXNUZXh0RGlyZWN0aW9uT3ZlcnJpZGUoKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQb3B1cE1lbnVTdHlsZTo6QXV0b2Zp
bGxQb3B1cCkpOworICAgICAgICBtX3JlZ3VsYXJTdHlsZS0+aXNWaXNpYmxlKCksIG1fcmVndWxh
clN0eWxlLT5pc0Rpc3BsYXlOb25lKCksCisgICAgICAgIG1fcmVndWxhclN0eWxlLT50ZXh0SW5k
ZW50KCksIG1fcmVndWxhclN0eWxlLT50ZXh0RGlyZWN0aW9uKCksCisgICAgICAgIG1fcmVndWxh
clN0eWxlLT5oYXNUZXh0RGlyZWN0aW9uT3ZlcnJpZGUoKSwKKyAgICAgICAgUG9wdXBNZW51U3R5
bGU6OkN1c3RvbUJhY2tncm91bmRDb2xvciwgUG9wdXBNZW51U3R5bGU6OkF1dG9maWxsUG9wdXAp
KTsKIH0KIAogdm9pZCBBdXRvZmlsbFBvcHVwTWVudUNsaWVudDo6c2V0U3VnZ2VzdGlvbnMoY29u
c3QgV2ViVmVjdG9yPFdlYlN0cmluZz4mIG5hbWVzLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192664</attachid>
            <date>2013-03-12 01:30:55 -0700</date>
            <delta_ts>2013-03-12 01:31:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111873-20130312012654.patch</filename>
            <type>text/plain</type>
            <size>58250</size>
            <attacher name="Hin-Chung Lam">hclam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1NDI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmUzMGQxYTU5MmZjMGQ0
ODZkNWI1OTRhNDZhNjNlOGRkZDI2NjA3NC4uYzljZjI3ZWEzZmIwYTEyYTU5ZGJhM2MxODNhNzA5
OGU0ZmZhMGE4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMTY2Nyw2ICsxNjY3LDEwNiBAQAogICAgICAgICAo
V2ViQ29yZTo6UHNldWRvRWxlbWVudDo6flBzZXVkb0VsZW1lbnQpOiBXcmFwIHRoZSBjYWxsIHRv
IHBzZXVkb0VsZW1lbnREZXN0cm95ZWQgaW4KICAgICAgICAgICAgIFVTRShBQ0NFTEVSQVRFRF9D
T01QT1NJVElORykKIAorMjAxMy0wMy0wOSAgQWxwaGEgTGFtICA8aGNsYW1AY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIEdJRkltYWdlUmVhZGVyIHRvIGNvdW50IGZyYW1lcyBhbmQgZGVjb2RlIGlu
IG9uZSBwYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMTExNDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBPQkpFQ1RJVkUKKworICAgICAgICBUaGlzIGNoYW5nZSBoYXMgdGhlIG9iamVjdGl2ZSBvZiBp
bXByb3ZpbmcgcGVyZm9ybWFuY2UgcmVhZGluZyBHSUYKKyAgICAgICAgZmlsZXMuIFRoaXMgaW1w
bGVtZW50YXRpb24gY2FuIHBhcnNlIHRoZSBlbnRpcmUgR0lGIGZpbGUgaW4gb25lIHBhc3MKKyAg
ICAgICAgYW5kIHNhdmVzIGluZm9ybWF0aW9uIGFib3V0IGVhY2ggZnJhbWUsIHN1Y2ggdGhhdCBk
ZWNvZGluZyBpbiBhIGxhdGVyCisgICAgICAgIHBhc3MgZG9lcyBub3QgbmVlZCB0byBwYXJzZSB0
aGUgZmlsZSBhZ2Fpbi4KKworICAgICAgICBUaGlzIGNoYW5nZSBmaXhlcyB0aGUgcGVyZm9ybWFu
Y2UgcHJvYmxlbSBvZiBkZWNvZGluZyBHSUYgZmlsZXMgd2hlbgorICAgICAgICBpdCBpcyByZWNl
aXZlZCB2ZXJ5IHNsb3dseS4gRXhpc3RpbmcgaW1wbGVtZW50YXRpb24gY3JlYXRlcyBhIG5ldwor
ICAgICAgICBHSUZJbWFnZVJlYWRlciBmb3IgY291bnRpbmcgZnJhbWVzIGZvciBldmVyeSBieXRl
IHRoYXQgY29tZXMgaW4sIHRoaXMKKyAgICAgICAgaGFzIE8obl4yKSBiZWhhdmlvciB3aGVuIGRh
dGEgaXMgcmVjZWl2ZWQgdmVyeSBzbG93bHkuCisKKyAgICAgICAgQUxHT1JJVEhNCisKKyAgICAg
ICAgVGhpcyBpbXBsZW1lbnRhdGlvbiBkaXZpZGVzIHRoZSBkZWNvZGluZyBwcm9jZXNzIGludG8g
dHdvIHNlcGFyYXRlCisgICAgICAgIHN0ZXBzOiBwYXJzZSBhbmQgTFpXIGRlY29kaW5nLgorCisg
ICAgICAgIEluIHRoZSBwYXJzZSBzdGVwLCB0aGUgc3RhdGUgbWFjaGluZSBpcyBzaW1pbGFyIHRv
IHRoZSBleGlzdGluZworICAgICAgICBpbXBsZW1lbnRhdGlvbi4gSG93ZXZlciB0aGlzIGFsZ29y
aXRobSBkb2VzIG5vdCBwZXJmb3JtIGFueSBkZWNvZGluZworICAgICAgICB3aGlsZSBzY2Fubmlu
ZyB0aHJvdWdoIHRoZSBmaWxlLiBJbnRlYWQgaXQgY3JlYXRlcyBhIG5ldyBkYXRhIHN0cnVjdHVy
ZQorICAgICAgICBmb3IgY2FjaGluZyBhbGwgZnJhbWUgaW5mb3JtYXRpb24gYW5kIHRoZSBjb3Jy
ZXNwb25kaW5nIExaVyBibG9ja3MuCisKKyAgICAgICAgSWYgYSBmdWxsIGRlY29kZSBpcyByZXF1
ZXN0ZWQgdGhlbiBMWlcgZGVjb2RpbmcgaXMgcGVyZm9ybWVkLiBUaGlzCisgICAgICAgIGltcGxl
bWVudGF0aW9uIGxvb2tzIHRocm91Z2ggYWxsIGZyYW1lIGluZm9ybWF0aW9uIHNhdmVkIGFuZCBk
ZWNvZGVzCisgICAgICAgIGVhY2ggZnJhbWUgc2VxdWVudGlhbGx5IHVudGlsIHRoZSB0YXJnZXQg
ZnJhbWUgaXMgcmVhY2hlZC4KKworICAgICAgICBCZWNhdXNlIG9mIHRoZSBzZXBhcmF0aW9uIG9m
IHBhcnNlIGFuZCBkZWNvZGUsIGVhY2ggZnJhbWUgY2FuIGJlCisgICAgICAgIGRlY29kZWQgc2Vw
YXJhdGVseS4gVGhpcyBwYXZlcyB0aGUgd2F5IHRvIHN1cHBvcnQgc2Vla2luZyBpbiBHSUYgZmls
ZXMuCisKKyAgICAgICAgVEVTVElORworCisgICAgICAgIEFkZGVkIGEgbmV3IHVuaXQgdGVzdCB0
byBjb3ZlciBwcm9ncmVzc2l2ZWx5IGRlY29kaW5nIGEgR0lGIGltYWdlLgorICAgICAgICBUaGVy
ZSBhcmUgYWxyZWFkeSBHSUYgdW5pdCB0ZXN0cyBmb3IgZnVuY3Rpb25hbCB0ZXN0aW5nLgorICAg
ICAgICBFeGhhdXN0aXZlIHRlc3Rpbmcgd2FzIGRvbmUgbG9jYWxseSB3aXRoIGEgY29ycHVzIG9m
IDYwayBpbWFnZXMuCisgICAgICAgIEkgbWl4ZWQgdGhlIGNvcnB1cyB3aXRoIHNvbWUgZ2VuZXJh
dGVkIGJhZCBkYXRhIGFuZCB0cnVuY2F0ZWQgZmlsZXMuCisgICAgICAgIFRoZSByZXN1bHRzIHdh
cyBiaXQtaWRlbnRpY2FsIHdoZW4gY29tcGFyZWQgdG8gdGhlIHByZXZpb3VzCisgICAgICAgIGlt
cGxlbWVudGF0aW9uLgorCisgICAgICAgIFRoZXNlIHdhcyBhbHNvIG5vIGNyYXNoaW5nIHdoZW4g
ZGVjb2RpbmcgdGhlIGVudGlyZSBjb3JwdXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdJRklt
YWdlRGVjb2Rlcjo6R0lGSW1hZ2VEZWNvZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdJRkltYWdl
RGVjb2Rlcjo6c2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpHSUZJbWFnZURlY29kZXI6OmZy
YW1lQ291bnQpOgorICAgICAgICAoV2ViQ29yZTo6R0lGSW1hZ2VEZWNvZGVyOjpyZXBldGl0aW9u
Q291bnQpOgorICAgICAgICAoV2ViQ29yZTo6R0lGSW1hZ2VEZWNvZGVyOjpkZWNvZGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaDoKKyAg
ICAgICAgKEdJRkltYWdlRGVjb2Rlcik6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvZ2lmL0dJRkltYWdlUmVhZGVyLmNwcDoKKyAgICAgICAgKEdJRkxaV0NvbnRleHQ6Om91dHB1
dFJvdyk6CisgICAgICAgIChHSUZMWldDb250ZXh0Ojpkb0xaVyk6CisgICAgICAgIChHSUZGcmFt
ZUNvbnRleHQ6OmRlY29kZSk6CisgICAgICAgIChHSUZJbWFnZVJlYWRlcjo6ZGVjb2RlKToKKyAg
ICAgICAgKEdJRkltYWdlUmVhZGVyOjpwYXJzZSk6CisgICAgICAgIChHSUZJbWFnZVJlYWRlcjo6
YWRkRnJhbWVJZk5lY2Vzc2FyeSk6CisgICAgICAgIChHSUZMWldDb250ZXh0OjpwcmVwYXJlVG9E
ZWNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZVJl
YWRlci5oOgorICAgICAgICBUaGVyZSBpcyBhIGxvdCBvZiByZXNodWZmbGluZyBpbiBHSUZMWldD
b250ZXh0IGFuZCBHSUZGcmFtZUNvbnRleHQuCisgICAgICAgIFRoZXNlIGNoYW5nZXMgaGFzIHRo
ZSBnb2FsIG9mIGhhdmluZyBHSUZMWldDb250ZXh0IGJlIGEgcHVyZSBkZWNvZGluZworICAgICAg
ICBzdGF0ZSBtYWNoaW5lLiBHSUZGcmFtZUNvbnRleHQgaXMgbW9zdGx5IGEgcmVhZC1vbmx5IGNv
bnRhaW5lciBmb3IKKyAgICAgICAgZnJhbWUgaW5mb3JtYXRpb24uIFdpdGggYWxsIHRoZXNlIGNo
YW5nZXMgd2UgY2FuIGRlY29kZSBlYWNoCisgICAgICAgIEdJRkZyYW1lQ29udGV4dCBpbmRlcGVu
ZGVudGx5LgorCisgICAgICAgIFRoZSBvd25lcnNoaXAgcGF0dGVybiBpczoKKyAgICAgICAgR0lG
SW1hZ2VSZWFkZXIgb3ducyBHSUZGcmFtZUNvbnRleHQgb3ducyBHSUZMWldDb250ZXh0LgorCisg
ICAgICAgIChHSUZMWldDb250ZXh0OjpHSUZMWldDb250ZXh0KToKKyAgICAgICAgKEdJRkxaV0Nv
bnRleHQpOgorICAgICAgICAoR0lGTFpXQ29udGV4dDo6aGFzUmVtYWluaW5nUm93cyk6CisgICAg
ICAgIEdJRkxaV0NvbnRleHQgaXMgbW92ZWQgdG8gdGhlIHRvcCBvZiBmaWxlLgorICAgICAgICAo
R0lGTFpXQmxvY2spOgorICAgICAgICAoR0lGTFpXQmxvY2s6OkdJRkxaV0Jsb2NrKToKKyAgICAg
ICAgTmV3IGRhdGEgc3RydWN0dXJlIHRvIHNhdmUgYmxvY2sgcG9zaXRpb24gYW5kIHNpemUuCisg
ICAgICAgIChHSUZGcmFtZUNvbnRleHQpOgorICAgICAgICAoR0lGRnJhbWVDb250ZXh0OjpHSUZG
cmFtZUNvbnRleHQpOgorICAgICAgICAoR0lGRnJhbWVDb250ZXh0Ojp+R0lGRnJhbWVDb250ZXh0
KToKKyAgICAgICAgKEdJRkZyYW1lQ29udGV4dDo6YWRkTHp3QmxvY2spOgorICAgICAgICAoR0lG
RnJhbWVDb250ZXh0Ojppc0NvbXBsZXRlKToKKyAgICAgICAgKEdJRkZyYW1lQ29udGV4dDo6aXNI
ZWFkZXJEZWZpbmVkKToKKyAgICAgICAgKEdJRkZyYW1lQ29udGV4dDo6aXNEYXRhU2l6ZURlZmlu
ZWQpOgorICAgICAgICAoR0lGRnJhbWVDb250ZXh0OjpzZXRDb21wbGV0ZSk6CisgICAgICAgIChH
SUZGcmFtZUNvbnRleHQ6OnNldEhlYWRlckRlZmluZWQpOgorICAgICAgICAoR0lGRnJhbWVDb250
ZXh0OjpzZXREYXRhU2l6ZSk6CisgICAgICAgIE5vdyBvd25zIEdJRkxaV0NvbnRleHQgZm9yIGRl
Y29kaW5nLgorICAgICAgICAoR0lGSW1hZ2VSZWFkZXI6OkdJRkltYWdlUmVhZGVyKToKKyAgICAg
ICAgKEdJRkltYWdlUmVhZGVyOjp+R0lGSW1hZ2VSZWFkZXIpOgorICAgICAgICAoR0lGSW1hZ2VS
ZWFkZXI6OmltYWdlc0NvdW50KToKKyAgICAgICAgKEdJRkltYWdlUmVhZGVyOjpmcmFtZUNvbnRl
eHQpOgorICAgICAgICAoR0lGSW1hZ2VSZWFkZXIpOgorICAgICAgICAoR0lGSW1hZ2VSZWFkZXI6
OnBhcnNlRmFpbGVkKToKKyAgICAgICAgKEdJRkltYWdlUmVhZGVyOjppc0ZpcnN0RnJhbWUpOgor
ICAgICAgICBPd25zIGEgbGlzdCBvZiBHSUZGcmFtZUNvbnR4dC4KKwogMjAxMy0wMy0wNyAgUm9i
ZXJ0IEhvZ2FuICA8cm9iZXJ0QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMTQw
OTA3KTogSW5jb3JyZWN0IGJhc2VsaW5lIGZvciBjZWxscyB3aXRoIG1lZGlhIGNvbnRlbnQgZHVy
aW5nIGxvYWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMjgzYjM5ZjhmMzY4NGFhZjJl
OTdkYTUyM2Y5NmE5ZGQyNzIwOGQ1Ny4uOTAyNWIwOTMxZTQ0ZjlmNDViOWYwYzUwY2YwZTkwZTg4
NDhkNDM5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEwMSw2ICsxMDEsMTkgQEAK
ICAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoKICAgICAgICAgKFdlYlZpZXdJbXBsKToKIAor
MjAxMy0wMy0wOSAgQWxwaGEgTGFtICA8aGNsYW1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEdJ
RkltYWdlUmVhZGVyIHRvIGNvdW50IGZyYW1lcyBhbmQgZGVjb2RlIGluIG9uZSBwYXNzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTExNDQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBhIG5ldyBH
SUYgdW5pdCB0ZXN0IGZvciBwcm9ncmVzc2l2ZSBkZWNvZGluZy4gVGhlIHRlc3QgaXMgdG8gdmVy
aWZ5CisgICAgICAgIHRoYXQgcHJvZ3Jlc3NpdmUgZGVjb2RpbmcgcHJvZHVjZXMgdGhlIHNhbWUg
cmVzdWx0cyBhcyBhIHRydW5jYXRlZCBmaWxlLgorCisgICAgICAgICogdGVzdHMvR0lGSW1hZ2VE
ZWNvZGVyVGVzdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlRFU1QpOgorCiAyMDEzLTAzLTA4ICBT
aGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJl
dmlld2VkLiAgUm9sbGVkIENocm9taXVtIERFUFMgdG8gcjE4NzAzNy4gIFJlcXVlc3RlZCBieQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJ
RkltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBiYjg4NDE1YmIwYzU2NThkMDIyYTgxYWU1
NDdiY2MxOTdkZWMyYzAwLi41NDg4NWIwZTkwMTdmNzk0YzJiOWExYmRiNzA0ZWM2ZGI1NDcwOGZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYv
R0lGSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5j
bHVkZSAiR0lGSW1hZ2VSZWFkZXIuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUluc3RydW1lbnRhdGlv
bi5oIgorI2luY2x1ZGUgPGxpbWl0cz4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNSw3ICszNiw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IEdJRkltYWdlRGVjb2Rlcjo6R0lGSW1hZ2VEZWNvZGVyKEltYWdlU291cmNlOjpBbHBoYU9wdGlv
biBhbHBoYU9wdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEltYWdlU291
cmNlOjpHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
bikKICAgICA6IEltYWdlRGVjb2RlcihhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24pCi0gICAgLCBtX2FscmVhZHlTY2FubmVkVGhpc0RhdGFGb3JGcmFtZUNvdW50KHRydWUp
CiAgICAgLCBtX3JlcGV0aXRpb25Db3VudChjQW5pbWF0aW9uTG9vcE9uY2UpCiB7CiB9CkBAIC01
Miw5ICs1Miw2IEBAIHZvaWQgR0lGSW1hZ2VEZWNvZGVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciog
ZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgSW1hZ2VEZWNvZGVyOjpzZXREYXRhKGRh
dGEsIGFsbERhdGFSZWNlaXZlZCk7CiAgICAgaWYgKG1fcmVhZGVyKQogICAgICAgICBtX3JlYWRl
ci0+c2V0RGF0YShkYXRhKTsKLQotICAgIC8vIFdlIG5lZWQgdG8gcmVzY2FuIHRoZSBmcmFtZSBj
b3VudCwgYXMgdGhlIG5ldyBkYXRhIG1heSBoYXZlIGNoYW5nZWQgaXQuCi0gICAgbV9hbHJlYWR5
U2Nhbm5lZFRoaXNEYXRhRm9yRnJhbWVDb3VudCA9IGZhbHNlOwogfQogCiBib29sIEdJRkltYWdl
RGVjb2Rlcjo6aXNTaXplQXZhaWxhYmxlKCkKQEAgLTc5LDIxICs3Niw3IEBAIGJvb2wgR0lGSW1h
Z2VEZWNvZGVyOjpzZXRTaXplKHVuc2lnbmVkIHdpZHRoLCB1bnNpZ25lZCBoZWlnaHQpCiAKIHNp
emVfdCBHSUZJbWFnZURlY29kZXI6OmZyYW1lQ291bnQoKQogewotICAgIGlmICghbV9hbHJlYWR5
U2Nhbm5lZFRoaXNEYXRhRm9yRnJhbWVDb3VudCkgewotICAgICAgICAvLyBGSVhNRTogU2Nhbm5p
bmcgYWxsIHRoZSBkYXRhIGhhcyBPKG5eMikgYmVoYXZpb3IgaWYgdGhlIGRhdGEgd2VyZSB0bwot
ICAgICAgICAvLyBjb21lIGluIHJlYWxseSBzbG93bHkuICBNaWdodCBiZSBpbnRlcmVzdGluZyB0
byB0cnkgdG8gY2xvbmUgb3VyCi0gICAgICAgIC8vIGV4aXN0aW5nIHJlYWQgc2Vzc2lvbiB0byBw
cmVzZXJ2ZSBzdGF0ZSwgYnV0IGZvciBub3cgd2UganVzdCBjcmF3bAotICAgICAgICAvLyBhbGwg
dGhlIGRhdGEuICBOb3RlIHRoYXQgdGhpcyBpcyBubyB3b3JzZSB0aGFuIHdoYXQgSW1hZ2VJTyBk
b2VzIG9uCi0gICAgICAgIC8vIE1hYyByaWdodCBub3cgKGl0IGFsc28gY3Jhd2xzIGFsbCB0aGUg
ZGF0YSBhZ2FpbikuCi0gICAgICAgIEdJRkltYWdlUmVhZGVyIHJlYWRlcigwKTsKLSAgICAgICAg
cmVhZGVyLnNldERhdGEobV9kYXRhKTsKLSAgICAgICAgcmVhZGVyLmRlY29kZShHSUZGcmFtZUNv
dW50UXVlcnksIHN0YXRpY19jYXN0PHVuc2lnbmVkPigtMSkpOwotICAgICAgICBtX2FscmVhZHlT
Y2FubmVkVGhpc0RhdGFGb3JGcmFtZUNvdW50ID0gdHJ1ZTsKLSAgICAgICAgbV9mcmFtZUJ1ZmZl
ckNhY2hlLnJlc2l6ZShyZWFkZXIuaW1hZ2VzQ291bnQoKSk7Ci0gICAgICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgcmVhZGVyLmltYWdlc0NvdW50KCk7ICsraSkKLSAgICAgICAgICAgIG1fZnJhbWVC
dWZmZXJDYWNoZVtpXS5zZXRQcmVtdWx0aXBseUFscGhhKG1fcHJlbXVsdGlwbHlBbHBoYSk7Ci0g
ICAgfQotCisgICAgZGVjb2RlKHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSwg
R0lGRnJhbWVDb3VudFF1ZXJ5KTsKICAgICByZXR1cm4gbV9mcmFtZUJ1ZmZlckNhY2hlLnNpemUo
KTsKIH0KIApAQCAtMTA3LDggKzkwLDggQEAgaW50IEdJRkltYWdlRGVjb2Rlcjo6cmVwZXRpdGlv
bkNvdW50KCkgY29uc3QKICAgICAvLyBzaG91bGQgZGVmYXVsdCB0byBsb29waW5nIG9uY2UgKHRo
ZSBpbml0aWFsIHZhbHVlIGZvcgogICAgIC8vIHxtX3JlcGV0aXRpb25Db3VudHwpLgogICAgIC8v
Ci0gICAgLy8gVGhlcmUgYXJlIHR3byBhZGRpdGlvbmFsIHdyaW5rbGVzIGhlcmUuICBGaXJzdCwg
SW1hZ2VTb3VyY2U6OmNsZWFyKCkgbWF5Ci0gICAgLy8gZGVzdHJveSB0aGUgcmVhZGVyLCBtYWtp
bmcgdGhlIHJlc3VsdCBmcm9tIHRoZSByZWFkZXIgX2xlc3NfCisgICAgLy8gVGhlcmUgYXJlIHNv
bWUgYWRkaXRpb25hbCB3cmlua2xlcyBoZXJlLiBGaXJzdCwgSW1hZ2VTb3VyY2U6OmNsZWFyKCkK
KyAgICAvLyBtYXkgZGVzdHJveSB0aGUgcmVhZGVyLCBtYWtpbmcgdGhlIHJlc3VsdCBmcm9tIHRo
ZSByZWFkZXIgX2xlc3NfCiAgICAgLy8gYXV0aG9yaXRhdGl2ZSBvbiBmdXR1cmUgY2FsbHMgaWYg
dGhlIHJlY3JlYXRlZCByZWFkZXIgaGFzbid0IHNlZW4gdGhlCiAgICAgLy8gbG9vcCBjb3VudC4g
IFdlIGRvbid0IG5lZWQgdG8gc3BlY2lhbC1jYXNlIHRoaXMgYmVjYXVzZSBpbiB0aGlzIGNhc2Ug
dGhlCiAgICAgLy8gbmV3IHJlYWRlciB3aWxsIG9uY2UgYWdhaW4gcmV0dXJuIGNMb29wQ291bnRO
b3RTZWVuLCBhbmQgd2Ugd29uJ3QKQEAgLTExOCw3ICsxMDEsMTUgQEAgaW50IEdJRkltYWdlRGVj
b2Rlcjo6cmVwZXRpdGlvbkNvdW50KCkgY29uc3QKICAgICAvLyBzaG91bGQgY29udGludWUgdG8g
dHJlYXQgaXQgYXMgYSAibG9vcCBvbmNlIiBhbmltYXRpb24uICBXZSBkb24ndCBuZWVkCiAgICAg
Ly8gc3BlY2lhbCBjb2RlIGhlcmUgZWl0aGVyLCBiZWNhdXNlIGluIHRoaXMgY2FzZSB3ZSdsbCBu
ZXZlciBjaGFuZ2UKICAgICAvLyB8bV9yZXBldGl0aW9uQ291bnR8IGZyb20gaXRzIGRlZmF1bHQg
dmFsdWUuCi0gICAgaWYgKG1fcmVhZGVyICYmIChtX3JlYWRlci0+bG9vcENvdW50KCkgIT0gY0xv
b3BDb3VudE5vdFNlZW4pKQorICAgIC8vCisgICAgLy8gVGhpcmQsIHdlIHVzZSB0aGUgc2FtZSBH
SUZJbWFnZVJlYWRlciBmb3IgY291bnRpbmcgZnJhbWVzIGFuZCB3ZSBtaWdodAorICAgIC8vIHNl
ZSB0aGUgbG9vcCBjb3VudCBhbmQgdGhlbiBlbmNvdW50ZXIgYSBkZWNvZGluZyBlcnJvciB3aGlj
aCBoYXBwZW5zCisgICAgLy8gbGF0ZXIgaW4gdGhlIHN0cmVhbS4gSXQgaXMgYWxzbyBwb3NzaWJs
ZSB0aGF0IG5vIGZyYW1lcyBhcmUgaW4gdGhlCisgICAgLy8gc3RyZWFtLiBJbiB0aGVzZSBjYXNl
cyB3ZSBzaG91bGQganVzdCBsb29wIG9uY2UuCisgICAgaWYgKGZhaWxlZCgpCisgICAgICAgIHx8
IChtX3JlYWRlciAmJiAoIW1fcmVhZGVyLT5pbWFnZXNDb3VudCgpIHx8IG1fcmVhZGVyLT5wYXJz
ZUZhaWxlZCgpKSkpCisgICAgICAgIG1fcmVwZXRpdGlvbkNvdW50ID0gY0FuaW1hdGlvbkxvb3BP
bmNlOworICAgIGVsc2UgaWYgKG1fcmVhZGVyICYmIG1fcmVhZGVyLT5sb29wQ291bnQoKSAhPSBj
TG9vcENvdW50Tm90U2VlbikKICAgICAgICAgbV9yZXBldGl0aW9uQ291bnQgPSBtX3JlYWRlci0+
bG9vcENvdW50KCk7CiAgICAgcmV0dXJuIG1fcmVwZXRpdGlvbkNvdW50OwogfQpAQCAtMzIxLDkg
KzMxMiwzMyBAQCB2b2lkIEdJRkltYWdlRGVjb2Rlcjo6ZGVjb2RlKHVuc2lnbmVkIGhhbHRBdEZy
YW1lLCBHSUZRdWVyeSBxdWVyeSkKICAgICAgICAgbV9yZWFkZXItPnNldERhdGEobV9kYXRhKTsK
ICAgICB9CiAKLSAgICAvLyBJZiB3ZSBjb3VsZG4ndCBkZWNvZGUgdGhlIGltYWdlIGJ1dCB3ZSd2
ZSByZWNlaXZlZCBhbGwgdGhlIGRhdGEsIGRlY29kaW5nCi0gICAgLy8gaGFzIGZhaWxlZC4KLSAg
ICBpZiAoIW1fcmVhZGVyLT5kZWNvZGUocXVlcnksIGhhbHRBdEZyYW1lKSAmJiBpc0FsbERhdGFS
ZWNlaXZlZCgpKQorICAgIGlmIChxdWVyeSA9PSBHSUZTaXplUXVlcnkpIHsKKyAgICAgICAgaWYg
KCFtX3JlYWRlci0+ZGVjb2RlKEdJRlNpemVRdWVyeSwgaGFsdEF0RnJhbWUpKQorICAgICAgICAg
ICAgc2V0RmFpbGVkKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIW1fcmVh
ZGVyLT5kZWNvZGUoR0lGRnJhbWVDb3VudFF1ZXJ5LCBoYWx0QXRGcmFtZSkpIHsKKyAgICAgICAg
c2V0RmFpbGVkKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjb25zdCBzaXplX3Qg
b2xkU2l6ZSA9IG1fZnJhbWVCdWZmZXJDYWNoZS5zaXplKCk7CisgICAgbV9mcmFtZUJ1ZmZlckNh
Y2hlLnJlc2l6ZShtX3JlYWRlci0+aW1hZ2VzQ291bnQoKSk7CisgICAgZm9yIChzaXplX3QgaSA9
IG9sZFNpemU7IGkgPCBtX3JlYWRlci0+aW1hZ2VzQ291bnQoKTsgKytpKQorICAgICAgICBtX2Zy
YW1lQnVmZmVyQ2FjaGVbaV0uc2V0UHJlbXVsdGlwbHlBbHBoYShtX3ByZW11bHRpcGx5QWxwaGEp
OworCisgICAgaWYgKHF1ZXJ5ID09IEdJRkZyYW1lQ291bnRRdWVyeSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgaWYgKCFtX3JlYWRlci0+ZGVjb2RlKEdJRkZ1bGxRdWVyeSwgaGFsdEF0RnJhbWUp
KSB7CisgICAgICAgIHNldEZhaWxlZCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
Ly8gSXQgaXMgYWxzbyBhIGZhdGFsIGVycm9yIGlmIGFsbCBkYXRhIGlzIHJlY2VpdmVkIGJ1dCB3
ZSBmYWlsZWQgdG8gZGVjb2RlCisgICAgLy8gYWxsIGZyYW1lcyBjb21wbGV0ZWx5LgorICAgIGlm
IChpc0FsbERhdGFSZWNlaXZlZCgpICYmIGhhbHRBdEZyYW1lID49IG1fZnJhbWVCdWZmZXJDYWNo
ZS5zaXplKCkgJiYgbV9yZWFkZXIpCiAgICAgICAgIHNldEZhaWxlZCgpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VE
ZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lG
SW1hZ2VEZWNvZGVyLmgKaW5kZXggNTVmOWIzNTY0ZjQxMmM3MDcyMTkxZDc0MDYxYjE5Njc2MTZj
NmI2ZC4uZjllMWI4NGQzMTgxYWE2YzU1ZmJhYzI0OGViMzEyZTk1NDJiOGExNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVj
b2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9H
SUZJbWFnZURlY29kZXIuaApAQCAtNzIsNyArNzIsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIC8vIGZhaWx1cmUsIHRoaXMgd2lsbCBtYXJrIHRoZSBpbWFnZSBhcyBmYWlsZWQuCiAg
ICAgICAgIGJvb2wgaW5pdEZyYW1lQnVmZmVyKHVuc2lnbmVkIGZyYW1lSW5kZXgpOwogCi0gICAg
ICAgIGJvb2wgbV9hbHJlYWR5U2Nhbm5lZFRoaXNEYXRhRm9yRnJhbWVDb3VudDsKICAgICAgICAg
Ym9vbCBtX2N1cnJlbnRCdWZmZXJTYXdBbHBoYTsKICAgICAgICAgbXV0YWJsZSBpbnQgbV9yZXBl
dGl0aW9uQ291bnQ7CiAgICAgICAgIE93blB0cjxHSUZJbWFnZVJlYWRlcj4gbV9yZWFkZXI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lG
SW1hZ2VSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
Z2lmL0dJRkltYWdlUmVhZGVyLmNwcAppbmRleCBiODdmNmRmNTdlNzY5NWQ1NWJkMzU3NGUyYzIz
MTkwZWRkZjdmMzM3Li4yOGFiMWY2NDcwZTg0MGRlMmYzMzNkZTIyZjExMzQ2NWZlZDQ0ZGQ0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lG
SW1hZ2VSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2dpZi9HSUZJbWFnZVJlYWRlci5jcHAKQEAgLTk4LDIwICs5OCwyMCBAQCB1c2luZyBXZWJD
b3JlOjpHSUZJbWFnZURlY29kZXI7CiAjZGVmaW5lIEdFVElOVDE2KHApICAgKChwKVsxXTw8OHwo
cClbMF0pCiAKIC8vIFNlbmQgdGhlIGRhdGEgdG8gdGhlIGRpc3BsYXkgZnJvbnQtZW5kLgotYm9v
bCBHSUZJbWFnZVJlYWRlcjo6b3V0cHV0Um93KCkKK2Jvb2wgR0lGTFpXQ29udGV4dDo6b3V0cHV0
Um93KCkKIHsKLSAgICBpbnQgZHJvd1N0YXJ0ID0gbV9mcmFtZUNvbnRleHQtPmlyb3c7Ci0gICAg
aW50IGRyb3dFbmQgPSBtX2ZyYW1lQ29udGV4dC0+aXJvdzsKKyAgICBpbnQgZHJvd1N0YXJ0ID0g
aXJvdzsKKyAgICBpbnQgZHJvd0VuZCA9IGlyb3c7CiAKICAgICAvLyBIYWViZXJsaS1pbnNwaXJl
ZCBoYWNrIGZvciBpbnRlcmxhY2VkIEdJRnM6IFJlcGxpY2F0ZSBsaW5lcyB3aGlsZQogICAgIC8v
IGRpc3BsYXlpbmcgdG8gZGltaW5pc2ggdGhlICJ2ZW5ldGlhbi1ibGluZCIgZWZmZWN0IGFzIHRo
ZSBpbWFnZSBpcwogICAgIC8vIGxvYWRlZC4gQWRqdXN0IHBpeGVsIHZlcnRpY2FsIHBvc2l0aW9u
cyB0byBhdm9pZCB0aGUgYXBwZWFyYW5jZSBvZiB0aGUKICAgICAvLyBpbWFnZSBjcmF3bGluZyB1
cCB0aGUgc2NyZWVuIGFzIHN1Y2Nlc3NpdmUgcGFzc2VzIGFyZSBkcmF3bi4KLSAgICBpZiAobV9m
cmFtZUNvbnRleHQtPnByb2dyZXNzaXZlRGlzcGxheSAmJiBtX2ZyYW1lQ29udGV4dC0+aW50ZXJs
YWNlZCAmJiBtX2ZyYW1lQ29udGV4dC0+aXBhc3MgPCA0KSB7CisgICAgaWYgKG1fZnJhbWVDb250
ZXh0LT5wcm9ncmVzc2l2ZURpc3BsYXkgJiYgbV9mcmFtZUNvbnRleHQtPmludGVybGFjZWQgJiYg
aXBhc3MgPCA0KSB7CiAgICAgICAgIHVuc2lnbmVkIHJvd0R1cCA9IDA7CiAgICAgICAgIHVuc2ln
bmVkIHJvd1NoaWZ0ID0gMDsKIAotICAgICAgICBzd2l0Y2ggKG1fZnJhbWVDb250ZXh0LT5pcGFz
cykgeworICAgICAgICBzd2l0Y2ggKGlwYXNzKSB7CiAgICAgICAgIGNhc2UgMToKICAgICAgICAg
ICAgIHJvd0R1cCA9IDc7CiAgICAgICAgICAgICByb3dTaGlmdCA9IDM7CkBAIC0xNDgsODggKzE0
OCw2NSBAQCBib29sIEdJRkltYWdlUmVhZGVyOjpvdXRwdXRSb3coKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKIAogICAgIC8vIENBTExCQUNLOiBMZXQgdGhlIGNsaWVudCBrbm93IHdlIGhhdmUgZGVj
b2RlZCBhIHJvdy4KLSAgICBpZiAobV9jbGllbnQgJiYgbV9mcmFtZUNvbnRleHQKLSAgICAgICAg
JiYgIW1fY2xpZW50LT5oYXZlRGVjb2RlZFJvdyhtX2ltYWdlc0NvdW50IC0gMSwgbV9sendDb250
ZXh0LnJvd0J1ZmZlciwgbV9mcmFtZUNvbnRleHQtPndpZHRoLAotICAgICAgICAgICAgZHJvd1N0
YXJ0LCBkcm93RW5kIC0gZHJvd1N0YXJ0ICsgMSwgbV9mcmFtZUNvbnRleHQtPnByb2dyZXNzaXZl
RGlzcGxheSAmJiBtX2ZyYW1lQ29udGV4dC0+aW50ZXJsYWNlZCAmJiBtX2ZyYW1lQ29udGV4dC0+
aXBhc3MgPiAxKSkKKyAgICBpZiAoIW1fY2xpZW50LT5oYXZlRGVjb2RlZFJvdyhtX2ZyYW1lQ29u
dGV4dC0+ZnJhbWVJZCwgcm93QnVmZmVyLCBtX2ZyYW1lQ29udGV4dC0+d2lkdGgsCisgICAgICAg
IGRyb3dTdGFydCwgZHJvd0VuZCAtIGRyb3dTdGFydCArIDEsIG1fZnJhbWVDb250ZXh0LT5wcm9n
cmVzc2l2ZURpc3BsYXkgJiYgbV9mcmFtZUNvbnRleHQtPmludGVybGFjZWQgJiYgaXBhc3MgPiAx
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFtX2ZyYW1lQ29udGV4dC0+aW50
ZXJsYWNlZCkKLSAgICAgICAgbV9mcmFtZUNvbnRleHQtPmlyb3crKzsKKyAgICAgICAgaXJvdysr
OwogICAgIGVsc2UgewogICAgICAgICBkbyB7Ci0gICAgICAgICAgICBzd2l0Y2ggKG1fZnJhbWVD
b250ZXh0LT5pcGFzcykgeworICAgICAgICAgICAgc3dpdGNoIChpcGFzcykgewogICAgICAgICAg
ICAgY2FzZSAxOgotICAgICAgICAgICAgICAgIG1fZnJhbWVDb250ZXh0LT5pcm93ICs9IDg7Ci0g
ICAgICAgICAgICAgICAgaWYgKG1fZnJhbWVDb250ZXh0LT5pcm93ID49IG1fZnJhbWVDb250ZXh0
LT5oZWlnaHQpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9mcmFtZUNvbnRleHQtPmlwYXNzKys7
Ci0gICAgICAgICAgICAgICAgICAgIG1fZnJhbWVDb250ZXh0LT5pcm93ID0gNDsKKyAgICAgICAg
ICAgICAgICBpcm93ICs9IDg7CisgICAgICAgICAgICAgICAgaWYgKGlyb3cgPj0gbV9mcmFtZUNv
bnRleHQtPmhlaWdodCkgeworICAgICAgICAgICAgICAgICAgICBpcGFzcysrOworICAgICAgICAg
ICAgICAgICAgICBpcm93ID0gNDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAKICAgICAgICAgICAgIGNhc2UgMjoKLSAgICAgICAgICAgICAgICBtX2ZyYW1lQ29u
dGV4dC0+aXJvdyArPSA4OwotICAgICAgICAgICAgICAgIGlmIChtX2ZyYW1lQ29udGV4dC0+aXJv
dyA+PSBtX2ZyYW1lQ29udGV4dC0+aGVpZ2h0KSB7Ci0gICAgICAgICAgICAgICAgICAgIG1fZnJh
bWVDb250ZXh0LT5pcGFzcysrOwotICAgICAgICAgICAgICAgICAgICBtX2ZyYW1lQ29udGV4dC0+
aXJvdyA9IDI7CisgICAgICAgICAgICAgICAgaXJvdyArPSA4OworICAgICAgICAgICAgICAgIGlm
IChpcm93ID49IG1fZnJhbWVDb250ZXh0LT5oZWlnaHQpIHsKKyAgICAgICAgICAgICAgICAgICAg
aXBhc3MrKzsKKyAgICAgICAgICAgICAgICAgICAgaXJvdyA9IDI7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICBjYXNlIDM6Ci0gICAgICAg
ICAgICAgICAgbV9mcmFtZUNvbnRleHQtPmlyb3cgKz0gNDsKLSAgICAgICAgICAgICAgICBpZiAo
bV9mcmFtZUNvbnRleHQtPmlyb3cgPj0gbV9mcmFtZUNvbnRleHQtPmhlaWdodCkgewotICAgICAg
ICAgICAgICAgICAgICBtX2ZyYW1lQ29udGV4dC0+aXBhc3MrKzsKLSAgICAgICAgICAgICAgICAg
ICAgbV9mcmFtZUNvbnRleHQtPmlyb3cgPSAxOworICAgICAgICAgICAgICAgIGlyb3cgKz0gNDsK
KyAgICAgICAgICAgICAgICBpZiAoaXJvdyA+PSBtX2ZyYW1lQ29udGV4dC0+aGVpZ2h0KSB7Cisg
ICAgICAgICAgICAgICAgICAgIGlwYXNzKys7CisgICAgICAgICAgICAgICAgICAgIGlyb3cgPSAx
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAg
ICAgY2FzZSA0OgotICAgICAgICAgICAgICAgIG1fZnJhbWVDb250ZXh0LT5pcm93ICs9IDI7Ci0g
ICAgICAgICAgICAgICAgaWYgKG1fZnJhbWVDb250ZXh0LT5pcm93ID49IG1fZnJhbWVDb250ZXh0
LT5oZWlnaHQpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9mcmFtZUNvbnRleHQtPmlwYXNzKys7
Ci0gICAgICAgICAgICAgICAgICAgIG1fZnJhbWVDb250ZXh0LT5pcm93ID0gMDsKKyAgICAgICAg
ICAgICAgICBpcm93ICs9IDI7CisgICAgICAgICAgICAgICAgaWYgKGlyb3cgPj0gbV9mcmFtZUNv
bnRleHQtPmhlaWdodCkgeworICAgICAgICAgICAgICAgICAgICBpcGFzcysrOworICAgICAgICAg
ICAgICAgICAgICBpcm93ID0gMDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICB9Ci0gICAgICAgIH0gd2hpbGUgKG1fZnJhbWVDb250ZXh0LT5pcm93ID4gKG1f
ZnJhbWVDb250ZXh0LT5oZWlnaHQgLSAxKSk7CisgICAgICAgIH0gd2hpbGUgKGlyb3cgPiAobV9m
cmFtZUNvbnRleHQtPmhlaWdodCAtIDEpKTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
IC8vIFBlcmZvcm0gTGVtcGVsLVppdi1XZWxjaCBkZWNvZGluZy4KLWJvb2wgR0lGSW1hZ2VSZWFk
ZXI6OmRvTFpXKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGJsb2NrLCBzaXplX3QgYnl0ZXNJbkJsb2Nr
KQorLy8gUmV0dXJuIHRydWUgaWYgZGVjb2RpbmcgYmxvY2sgd2FzIHN1Y2Nlc3NmdWwgYW5kIHRo
ZSBlbnRpcmUgYmxvY2sgd2FzIGNvbnN1bWVkLgorLy8gUmV0dXJuIGZhbHNlIGlmIHRoZXJlIHdh
cyBhIGNyaXRpY2FsIGRlY29kaW5nIGVycm9yLiBUaGUgZXJyb3Igc2hvdWxkIGJlIHJlcG9ydGVk
IHRvIGNsaWVudC4KK2Jvb2wgR0lGTFpXQ29udGV4dDo6ZG9MWlcoY29uc3QgdW5zaWduZWQgY2hh
ciogYmxvY2ssIHNpemVfdCBieXRlc0luQmxvY2spCiB7Ci0gICAgaWYgKCFtX2ZyYW1lQ29udGV4
dCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KICAgICBpbnQgY29kZTsKICAgICBpbnQgaW5jb2Rl
OwogICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmNoOwogCi0gICAgLy8gQ29weSBhbGwgdGhlIGRl
Y29kZXIgc3RhdGUgdmFyaWFibGVzIGludG8gbG9jYWxzIHNvIHRoZSBjb21waWxlcgotICAgIC8v
IHdvbid0IHdvcnJ5IGFib3V0IHRoZW0gYmVpbmcgYWxpYXNlZC4gVGhlIGxvY2FscyB3aWxsIGJl
IGhvbWVkCi0gICAgLy8gYmFjayBpbnRvIHRoZSBHSUYgZGVjb2RlciBzdHJ1Y3R1cmUgd2hlbiB3
ZSBleGl0LgotICAgIGludCBhdmFpbCA9IG1fbHp3Q29udGV4dC5hdmFpbDsKLSAgICBpbnQgYml0
cyA9IG1fbHp3Q29udGV4dC5iaXRzOwotICAgIHNpemVfdCBjbnQgPSBieXRlc0luQmxvY2s7Ci0g
ICAgaW50IGNvZGVzaXplID0gbV9sendDb250ZXh0LmNvZGVzaXplOwotICAgIGludCBjb2RlbWFz
ayA9IG1fbHp3Q29udGV4dC5jb2RlbWFzazsKLSAgICBpbnQgb2xkY29kZSA9IG1fbHp3Q29udGV4
dC5vbGRjb2RlOwotICAgIGludCBjbGVhckNvZGUgPSBtX2x6d0NvbnRleHQuY2xlYXJDb2RlOwot
ICAgIHVuc2lnbmVkIGNoYXIgZmlyc3RjaGFyID0gbV9sendDb250ZXh0LmZpcnN0Y2hhcjsKLSAg
ICBpbnQgZGF0dW0gPSBtX2x6d0NvbnRleHQuZGF0dW07Ci0KLSAgICBWZWN0b3I8dW5zaWduZWQg
c2hvcnQ+JiBwcmVmaXggPSBtX2x6d0NvbnRleHQucHJlZml4OwotICAgIFZlY3Rvcjx1bnNpZ25l
ZCBjaGFyPiYgc3VmZml4ID0gbV9sendDb250ZXh0LnN1ZmZpeDsKLSAgICBWZWN0b3I8dW5zaWdu
ZWQgY2hhcj4mIHN0YWNrID0gbV9sendDb250ZXh0LnN0YWNrOwotICAgIHNpemVfdCBzdGFja3Ag
PSBtX2x6d0NvbnRleHQuc3RhY2twOwotICAgIHNpemVfdCByb3dwID0gbV9sendDb250ZXh0LnJv
d1Bvc2l0aW9uOwotICAgIHNpemVfdCB3aWR0aCA9IG1fZnJhbWVDb250ZXh0LT53aWR0aDsKLSAg
ICBzaXplX3Qgcm93c1JlbWFpbmluZyA9IG1fZnJhbWVDb250ZXh0LT5yb3dzUmVtYWluaW5nOwot
Ci0gICAgaWYgKHJvd3AgPT0gd2lkdGgpCisgICAgaWYgKHJvd1Bvc2l0aW9uID09IHJvd0J1ZmZl
ci5zaXplKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAjZGVmaW5lIE9VVFBVVF9ST1cgXApA
QCAtMjM3LDEzICsyMTQsMTIgQEAgYm9vbCBHSUZJbWFnZVJlYWRlcjo6ZG9MWlcoY29uc3QgdW5z
aWduZWQgY2hhciogYmxvY2ssIHNpemVfdCBieXRlc0luQmxvY2spCiAgICAgICAgIGlmICghb3V0
cHV0Um93KCkpIFwKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsgXAogICAgICAgICByb3dzUmVt
YWluaW5nLS07IFwKLSAgICAgICAgcm93cCA9IDA7IFwKLSAgICAgICAgbV9sendDb250ZXh0LnJv
d1Bvc2l0aW9uID0gMDsgXAorICAgICAgICByb3dQb3NpdGlvbiA9IDA7IFwKICAgICAgICAgaWYg
KCFyb3dzUmVtYWluaW5nKSBcCi0gICAgICAgICAgICBnb3RvIEVORDsgXAorICAgICAgICAgICAg
cmV0dXJuIHRydWU7IFwKICAgICB9IHdoaWxlICgwKQogCi0gICAgZm9yIChjaCA9IGJsb2NrOyBj
bnQtLSA+IDA7IGNoKyspIHsKKyAgICBmb3IgKGNoID0gYmxvY2s7IGJ5dGVzSW5CbG9jay0tID4g
MDsgY2grKykgewogICAgICAgICAvLyBGZWVkIHRoZSBuZXh0IGJ5dGUgaW50byB0aGUgZGVjb2Rl
cidzIDMyLWJpdCBpbnB1dCBidWZmZXIuCiAgICAgICAgIGRhdHVtICs9ICgoaW50KSAqY2gpIDw8
IGJpdHM7CiAgICAgICAgIGJpdHMgKz0gODsKQEAgLTI2OSwxMiArMjQ1LDEyIEBAIGJvb2wgR0lG
SW1hZ2VSZWFkZXI6OmRvTFpXKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGJsb2NrLCBzaXplX3QgYnl0
ZXNJbkJsb2NrKQogICAgICAgICAgICAgICAgIC8vIGVuZC1vZi1zdHJlYW0gc2hvdWxkIG9ubHkg
YXBwZWFyIGFmdGVyIGFsbCBpbWFnZSBkYXRhLgogICAgICAgICAgICAgICAgIGlmICghcm93c1Jl
bWFpbmluZykKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIG1fY2xpZW50ID8gbV9jbGllbnQtPnNldEZhaWxlZCgpIDogZmFsc2U7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBp
ZiAob2xkY29kZSA9PSAtMSkgewotICAgICAgICAgICAgICAgIG1fbHp3Q29udGV4dC5yb3dCdWZm
ZXJbcm93cCsrXSA9IHN1ZmZpeFtjb2RlXTsKLSAgICAgICAgICAgICAgICBpZiAocm93cCA9PSB3
aWR0aCkKKyAgICAgICAgICAgICAgICByb3dCdWZmZXJbcm93UG9zaXRpb24rK10gPSBzdWZmaXhb
Y29kZV07CisgICAgICAgICAgICAgICAgaWYgKHJvd1Bvc2l0aW9uID09IHJvd0J1ZmZlci5zaXpl
KCkpCiAgICAgICAgICAgICAgICAgICAgIE9VVFBVVF9ST1c7CiAKICAgICAgICAgICAgICAgICBm
aXJzdGNoYXIgPSBvbGRjb2RlID0gY29kZTsKQEAgLTI4NywxMiArMjYzLDEyIEBAIGJvb2wgR0lG
SW1hZ2VSZWFkZXI6OmRvTFpXKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGJsb2NrLCBzaXplX3QgYnl0
ZXNJbkJsb2NrKQogICAgICAgICAgICAgICAgIGNvZGUgPSBvbGRjb2RlOwogCiAgICAgICAgICAg
ICAgICAgaWYgKHN0YWNrcCA9PSBNQVhfQllURVMpCi0gICAgICAgICAgICAgICAgICAgIHJldHVy
biBtX2NsaWVudCA/IG1fY2xpZW50LT5zZXRGYWlsZWQoKSA6IGZhbHNlOworICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHdoaWxl
IChjb2RlID49IGNsZWFyQ29kZSkgewogICAgICAgICAgICAgICAgIGlmIChjb2RlID49IE1BWF9C
WVRFUyB8fCBjb2RlID09IHByZWZpeFtjb2RlXSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IG1fY2xpZW50ID8gbV9jbGllbnQtPnNldEZhaWxlZCgpIDogZmFsc2U7CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICAgICAgICAgIC8vIEV2ZW4gdGhvdWdoIHN1
ZmZpeFtdIG9ubHkgaG9sZHMgY2hhcmFjdGVycyB0aHJvdWdoIHN1ZmZpeFthdmFpbCAtIDFdLAog
ICAgICAgICAgICAgICAgIC8vIGFsbG93aW5nIGNvZGUgPj0gYXZhaWwgaGVyZSBsZXRzIHVzIGJl
IG1vcmUgdG9sZXJhbnQgb2YgbWFsZm9ybWVkCkBAIC0zMDIsNyArMjc4LDcgQEAgYm9vbCBHSUZJ
bWFnZVJlYWRlcjo6ZG9MWlcoY29uc3QgdW5zaWduZWQgY2hhciogYmxvY2ssIHNpemVfdCBieXRl
c0luQmxvY2spCiAgICAgICAgICAgICAgICAgY29kZSA9IHByZWZpeFtjb2RlXTsKIAogICAgICAg
ICAgICAgICAgIGlmIChzdGFja3AgPT0gTUFYX0JZVEVTKQotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gbV9jbGllbnQgPyBtX2NsaWVudC0+c2V0RmFpbGVkKCkgOiBmYWxzZTsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBz
dGFja1tzdGFja3ArK10gPSBmaXJzdGNoYXIgPSBzdWZmaXhbY29kZV07CkBAIC0zMjUsMzYgKzMw
MSwxMDAgQEAgYm9vbCBHSUZJbWFnZVJlYWRlcjo6ZG9MWlcoY29uc3QgdW5zaWduZWQgY2hhciog
YmxvY2ssIHNpemVfdCBieXRlc0luQmxvY2spCiAKICAgICAgICAgICAgIC8vIENvcHkgdGhlIGRl
Y29kZWQgZGF0YSBvdXQgdG8gdGhlIHNjYW5saW5lIGJ1ZmZlci4KICAgICAgICAgICAgIGRvIHsK
LSAgICAgICAgICAgICAgICBtX2x6d0NvbnRleHQucm93QnVmZmVyW3Jvd3ArK10gPSBzdGFja1st
LXN0YWNrcF07Ci0gICAgICAgICAgICAgICAgaWYgKHJvd3AgPT0gd2lkdGgpCisgICAgICAgICAg
ICAgICAgcm93QnVmZmVyW3Jvd1Bvc2l0aW9uKytdID0gc3RhY2tbLS1zdGFja3BdOworICAgICAg
ICAgICAgICAgIGlmIChyb3dQb3NpdGlvbiA9PSByb3dCdWZmZXIuc2l6ZSgpKQogICAgICAgICAg
ICAgICAgICAgICBPVVRQVVRfUk9XOwogICAgICAgICAgICAgfSB3aGlsZSAoc3RhY2twID4gMCk7
CiAgICAgICAgIH0KICAgICB9CiAKLUVORDoKLSAgICAvLyBIb21lIHRoZSBsb2NhbCBjb3BpZXMg
b2YgdGhlIEdJRiBkZWNvZGVyIHN0YXRlIHZhcmlhYmxlcy4KLSAgICBtX2x6d0NvbnRleHQuYXZh
aWwgPSBhdmFpbDsKLSAgICBtX2x6d0NvbnRleHQuYml0cyA9IGJpdHM7Ci0gICAgbV9sendDb250
ZXh0LmNvZGVzaXplID0gY29kZXNpemU7Ci0gICAgbV9sendDb250ZXh0LmNvZGVtYXNrID0gY29k
ZW1hc2s7Ci0gICAgbV9sendDb250ZXh0Lm9sZGNvZGUgPSBvbGRjb2RlOwotICAgIG1fbHp3Q29u
dGV4dC5maXJzdGNoYXIgPSBmaXJzdGNoYXI7Ci0gICAgbV9sendDb250ZXh0LmRhdHVtID0gZGF0
dW07Ci0gICAgbV9sendDb250ZXh0LnN0YWNrcCA9IHN0YWNrcDsKLSAgICBtX2x6d0NvbnRleHQu
cm93UG9zaXRpb24gPSByb3dwOwotICAgIG1fZnJhbWVDb250ZXh0LT5yb3dzUmVtYWluaW5nID0g
cm93c1JlbWFpbmluZzsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorLy8gUGVyZm9ybSBkZWNvZGlu
ZyBmb3IgdGhpcyBmcmFtZS4gZnJhbWVEZWNvZGVkIHdpbGwgYmUgdHJ1ZSBpZiB0aGUgZW50aXJl
IGZyYW1lIGlzIGRlY29kZWQuCisvLyBSZXR1cm4gdHJ1ZSBpZiBkZWNvZGluZyBmb3IgdGhpcyBm
cmFtZSBoYXMgcHJvZ3Jlc3NlZC4KKy8vIFJldHVybiBmYWxzZSBpZiB0aGVyZSB3YXMgYSBjcml0
aWNhbCBkZWNvZGluZyBlcnJvci4gVGhlIGVycm9yIHNob3VsZCBiZSByZXBvcnRlZCB0byBjbGll
bnQuCitib29sIEdJRkZyYW1lQ29udGV4dDo6ZGVjb2RlKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRh
dGEsIHNpemVfdCBsZW5ndGgsIFdlYkNvcmU6OkdJRkltYWdlRGVjb2RlciogY2xpZW50LCBib29s
KiBmcmFtZURlY29kZWQpCit7CisgICAgKmZyYW1lRGVjb2RlZCA9IGZhbHNlOworICAgIGlmICgh
bV9sendDb250ZXh0KSB7CisgICAgICAgIC8vIFdhaXQgZm9yIG1vcmUgZGF0YSB0byBwcm9wZXJs
eSBpbml0aWFsaXplIEdJRkxaV0NvbnRleHQuCisgICAgICAgIGlmICghaXNEYXRhU2l6ZURlZmlu
ZWQoKSB8fCAhaXNIZWFkZXJEZWZpbmVkKCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKwor
ICAgICAgICBtX2x6d0NvbnRleHQgPSBhZG9wdFB0cihuZXcgR0lGTFpXQ29udGV4dChjbGllbnQs
IHRoaXMpKTsKKyAgICAgICAgaWYgKCFtX2x6d0NvbnRleHQtPnByZXBhcmVUb0RlY29kZSgpKSB7
CisgICAgICAgICAgICBtX2x6d0NvbnRleHQuY2xlYXIoKTsKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIG1fY3VycmVudEx6d0Jsb2NrID0gMDsKKyAgICB9
CisKKyAgICAvLyBTb21lIGJhZCBHSUZzIGhhdmUgZXh0cmEgYmxvY2tzIGJleW9uZCB0aGUgbGFz
dCByb3csIHdoaWNoIHdlIGRvbid0IHdhbnQgdG8gZGVjb2RlLgorICAgIHdoaWxlIChtX2N1cnJl
bnRMendCbG9jayA8IG1fbHp3QmxvY2tzLnNpemUoKSAmJiBtX2x6d0NvbnRleHQtPmhhc1JlbWFp
bmluZ1Jvd3MoKSkgeworICAgICAgICBzaXplX3QgYmxvY2tQb3NpdGlvbiA9IG1fbHp3QmxvY2tz
W21fY3VycmVudEx6d0Jsb2NrXS5ibG9ja1Bvc2l0aW9uOworICAgICAgICBzaXplX3QgYmxvY2tT
aXplID0gbV9sendCbG9ja3NbbV9jdXJyZW50THp3QmxvY2tdLmJsb2NrU2l6ZTsKKyAgICAgICAg
aWYgKGJsb2NrUG9zaXRpb24gKyBibG9ja1NpemUgPiBsZW5ndGgpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIGlmICghbV9sendDb250ZXh0LT5kb0xaVyhkYXRhICsgYmxvY2tQ
b3NpdGlvbiwgYmxvY2tTaXplKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
KyttX2N1cnJlbnRMendCbG9jazsKKyAgICB9CisKKyAgICAvLyBJZiB0aGlzIGZyYW1lIGlzIGRh
dGEgY29tcGxldGUgdGhlbiB0aGUgcHJldmlvdXMgbG9vcCBtdXN0IGhhdmUgY29tcGxldGVseSBk
ZWNvZGVkIGFsbCBMWlcgYmxvY2tzLgorICAgIC8vIFRoZXJlIHdpbGwgYmUgbm8gbW9yZSBkZWNv
ZGluZyBmb3IgdGhpcyBmcmFtZSBzbyBpdCdzIHRpbWUgdG8gY2xlYW51cC4KKyAgICAvLyBOb3Rl
IHRoYXQgc29tZSBicm9rZW4gR0lGIGZpbGVzIGhhdmUgbm8gbW9yZSBMWlcgYmxvY2tzIGJ1dCBz
dGlsbCBzb21lIHJvd3MgcmVtYWluaW5nLgorICAgIC8vIFdlIHRyZWF0IGl0IGFzIGZyYW1lIGNv
bXBsZXRlIGFzIHdlbGwsIHRvIGJlIGNvbnNpc3RlbnQgd2l0aCBwcmV2aW91cyBpbXBsZW1lbnRh
dGlvbi4KKyAgICBpZiAoaXNDb21wbGV0ZSgpKSB7CisgICAgICAgICpmcmFtZURlY29kZWQgPSB0
cnVlOworICAgICAgICBtX2x6d0NvbnRleHQuY2xlYXIoKTsKKyAgICB9CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKKy8vIERlY29kZSBhbGwgZnJhbWVzIGJlZm9yZSBoYWx0QXRGcmFtZS4KKy8vIFRo
aXMgbWV0aG9kIHVzZXMgR0lGRnJhbWVDb250ZXh0OmRlY29kZSgpIHRvIGRlY29kZSBlYWNoIGZy
YW1lLCBkZWNvZGluZyBlcnJvciBpcyByZXBvcnRlZCB0byBjbGllbnQgYXMgYSBjcml0aWNhbCBm
YWlsdXJlLgorLy8gUmV0dXJuIHRydWUgaWYgZGVjb2RpbmcgaGFzIHByb2dyZXNzZWQuIHJldHVy
biBmYWxzZTsgaWYgYW4gZXJyb3IgaGFzIG9jY3VycmVkLgogYm9vbCBHSUZJbWFnZVJlYWRlcjo6
ZGVjb2RlKEdJRkltYWdlRGVjb2Rlcjo6R0lGUXVlcnkgcXVlcnksIHVuc2lnbmVkIGhhbHRBdEZy
YW1lKQogewogICAgIEFTU0VSVChtX2J5dGVzUmVhZCA8PSBtX2RhdGEtPnNpemUoKSk7Ci0gICAg
cmV0dXJuIGRlY29kZUludGVybmFsKG1fYnl0ZXNSZWFkLCBtX2RhdGEtPnNpemUoKSAtIG1fYnl0
ZXNSZWFkLCBxdWVyeSwgaGFsdEF0RnJhbWUpOworCisgICAgLy8gVHJ5IHRvIGJlIHRvbGVyYW50
IGFuZCBkb24ndCByZXBvcnQgcGFyc2luZyBlcnJvcnMgYnV0IHdlIHdpbGwgbm90IHBhcnNlIGFn
YWluLgorICAgIC8vIFByZXZpb3VzIGltcGxlbWVudGF0aW9uIHVzZWQgYSBzZXBhcmF0ZSBHSUZJ
bWFnZVJlYWRlciB0byBjb3VudCBmcmFtZXMsIHNvIHBhcnNpbmcgZXJyb3Igd2FzIHRvbGVyYXRl
ZAorICAgIC8vIGJ1dCBub3QgZGVjb2RpbmcgZXJyb3IuIERvIGEgc2VwYXJhdGUgY2FzZSBoZXJl
IHRvIG1hdGNoIHByZXZpb3VzIGltcGxlbWVudGF0aW9uLgorICAgIGlmICghbV9wYXJzZUZhaWxl
ZCAmJiAhcGFyc2UobV9ieXRlc1JlYWQsIG1fZGF0YS0+c2l6ZSgpIC0gbV9ieXRlc1JlYWQsIHF1
ZXJ5ID09IEdJRkltYWdlRGVjb2Rlcjo6R0lGU2l6ZVF1ZXJ5KSkKKyAgICAgICAgbV9wYXJzZUZh
aWxlZCA9IHRydWU7CisKKyAgICBpZiAocXVlcnkgIT0gR0lGSW1hZ2VEZWNvZGVyOjpHSUZGdWxs
UXVlcnkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgd2hpbGUgKG1fY3VycmVudERlY29k
aW5nRnJhbWUgPCBzdGQ6Om1pbihtX2ZyYW1lcy5zaXplKCksIHN0YXRpY19jYXN0PHNpemVfdD4o
aGFsdEF0RnJhbWUpKSkgeworICAgICAgICBib29sIGZyYW1lRGVjb2RlZCA9IGZhbHNlOworICAg
ICAgICBHSUZGcmFtZUNvbnRleHQqIGN1cnJlbnRGcmFtZSA9IG1fZnJhbWVzW21fY3VycmVudERl
Y29kaW5nRnJhbWVdLmdldCgpOworCisgICAgICAgIGlmICghY3VycmVudEZyYW1lLT5kZWNvZGUo
ZGF0YSgwKSwgbV9kYXRhLT5zaXplKCksIG1fY2xpZW50LCAmZnJhbWVEZWNvZGVkKSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAvLyBFeGl0IHRoaXMgbG9vcCBhbmQgd2Fp
dCBmb3IgbW9yZSBkYXRhIHRvIGNvbnRpbnVlIGRlY29kaW5nLgorICAgICAgICBpZiAoIWZyYW1l
RGVjb2RlZCkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGlmICghbV9jbGllbnQtPmZy
YW1lQ29tcGxldGUobV9jdXJyZW50RGVjb2RpbmdGcmFtZSwgY3VycmVudEZyYW1lLT5kZWxheVRp
bWUsIGN1cnJlbnRGcmFtZS0+ZGlzcG9zYWxNZXRob2QpKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICArK21fY3VycmVudERlY29kaW5nRnJhbWU7CisgICAgfQorCisgICAgLy8g
QWxsIGZyYW1lcyBkZWNvZGVkLgorICAgIGlmIChtX2N1cnJlbnREZWNvZGluZ0ZyYW1lID09IG1f
ZnJhbWVzLnNpemUoKSAmJiBtX3BhcnNlQ29tcGxldGVkKQorICAgICAgICBtX2NsaWVudC0+Z2lm
Q29tcGxldGUoKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAotLy8gUHJvY2VzcyBkYXRhIGFycml2
aW5nIGZyb20gdGhlIHN0cmVhbSBmb3IgdGhlIGdpZiBkZWNvZGVyLgotYm9vbCBHSUZJbWFnZVJl
YWRlcjo6ZGVjb2RlSW50ZXJuYWwoc2l6ZV90IGRhdGFQb3NpdGlvbiwgc2l6ZV90IGxlbiwgR0lG
SW1hZ2VEZWNvZGVyOjpHSUZRdWVyeSBxdWVyeSwgdW5zaWduZWQgaGFsdEF0RnJhbWUpCisvLyBQ
YXJzZSBpbmNvbWluZyBHSUYgZGF0YSBzdHJlYW0gaW50byBpbnRlcm5hbCBkYXRhIHN0cnVjdHVy
ZXMuCisvLyBSZXR1cm4gdHJ1ZSBpZiBwYXJzaW5nIGhhcyBwcm9ncmVzc2VkIG9yIHRoZXJlIGlz
IG5vdCBlbm91Z2ggZGF0YS4KKy8vIFJldHVybiBmYWxzZSBpZiBhIGZhdGFsIGVycm9yIGlzIGVu
Y291bnRlcmVkLgorYm9vbCBHSUZJbWFnZVJlYWRlcjo6cGFyc2Uoc2l6ZV90IGRhdGFQb3NpdGlv
biwgc2l6ZV90IGxlbiwgYm9vbCBwYXJzZVNpemVPbmx5KQogewogICAgIGlmICghbGVuKSB7CiAg
ICAgICAgIC8vIE5vIG5ldyBkYXRhIGhhcyBjb21lIGluIHNpbmNlIHRoZSBsYXN0IGNhbGwsIGp1
c3QgaWdub3JlIHRoaXMgY2FsbC4KQEAgLTM2MiwxMiArNDAyLDEzIEBAIGJvb2wgR0lGSW1hZ2VS
ZWFkZXI6OmRlY29kZUludGVybmFsKHNpemVfdCBkYXRhUG9zaXRpb24sIHNpemVfdCBsZW4sIEdJ
RkltYWdlRGVjCiAgICAgfQogCiAgICAgaWYgKGxlbiA8IG1fYnl0ZXNUb0NvbnN1bWUpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBUaGlzIGxv
b3AgcmVhZHMgYXMgbWFueSBjb21wb25lbnRzIGZyb20gfG1fZGF0YXwgYXMgcG9zc2libGUuCiAg
ICAgLy8gQXQgdGhlIGJlZ2lubmluZyBvZiBlYWNoIGl0ZXJhdGlvbiwgZGF0YVBvc2l0aW9uIHdp
bGwgYmUgYWR2YW5jZWQgYnkgbV9ieXRlc1RvQ29uc3VtZSB0bwogICAgIC8vIHBvaW50IHRvIHRo
ZSBuZXh0IGNvbXBvbmVudC4gbGVuIHdpbGwgYmUgZGVjcmVtZW50ZWQgYWNjb3JkaW5nbHkuCiAg
ICAgd2hpbGUgKGxlbiA+PSBtX2J5dGVzVG9Db25zdW1lKSB7CisgICAgICAgIGNvbnN0IHNpemVf
dCBjdXJyZW50Q29tcG9uZW50UG9zaXRpb24gPSBkYXRhUG9zaXRpb247CiAgICAgICAgIGNvbnN0
IHVuc2lnbmVkIGNoYXIqIGN1cnJlbnRDb21wb25lbnQgPSBkYXRhKGRhdGFQb3NpdGlvbik7CiAK
ICAgICAgICAgLy8gTWFyayB0aGUgY3VycmVudCBjb21wb25lbnQgYXMgY29uc3VtZWQuIE5vdGUg
dGhhdCBjdXJyZW50Q29tcG9uZW50IHdpbGwgcmVtYWluIHBvaW50ZWQgYXQgdGhpcwpAQCAtMzc3
LDIwICs0MTgsMTUgQEAgYm9vbCBHSUZJbWFnZVJlYWRlcjo6ZGVjb2RlSW50ZXJuYWwoc2l6ZV90
IGRhdGFQb3NpdGlvbiwgc2l6ZV90IGxlbiwgR0lGSW1hZ2VEZWMKIAogICAgICAgICBzd2l0Y2gg
KG1fc3RhdGUpIHsKICAgICAgICAgY2FzZSBHSUZMWlc6CisgICAgICAgICAgICBBU1NFUlQoIW1f
ZnJhbWVzLmlzRW1wdHkoKSk7CiAgICAgICAgICAgICAvLyBtX2J5dGVzVG9Db25zdW1lIGlzIHRo
ZSBjdXJyZW50IGNvbXBvbmVudCBzaXplIGJlY2F1c2UgaXQgaGFzbid0IGJlZW4gdXBkYXRlZC4K
LSAgICAgICAgICAgIGlmICghZG9MWlcoY3VycmVudENvbXBvbmVudCwgbV9ieXRlc1RvQ29uc3Vt
ZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBJZiBkb0xaVygpIGVuY291bnRl
cmVkIGFuIGVycm9yLCBpdCBoYXMgYWxyZWFkeSBjYWxsZWQgbV9jbGllbnQtPnNldEZhaWxlZCgp
LgorICAgICAgICAgICAgbV9mcmFtZXMubGFzdCgpLT5hZGRMendCbG9jayhjdXJyZW50Q29tcG9u
ZW50UG9zaXRpb24sIG1fYnl0ZXNUb0NvbnN1bWUpOwogICAgICAgICAgICAgR0VUTigxLCBHSUZT
dWJCbG9jayk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIEdJRkxaV1N0YXJ0
OiB7Ci0gICAgICAgICAgICBpZiAocXVlcnkgPT0gR0lGSW1hZ2VEZWNvZGVyOjpHSUZGdWxsUXVl
cnkpIHsKLSAgICAgICAgICAgICAgICBpbnQgZGF0YXNpemUgPSAqY3VycmVudENvbXBvbmVudDsK
LSAgICAgICAgICAgICAgICBtX2ZyYW1lQ29udGV4dC0+ZGF0YXNpemUgPSBkYXRhc2l6ZTsKLSAg
ICAgICAgICAgICAgICAvLyBJbml0aWFsaXplIExaVyBwYXJzZXIvZGVjb2Rlci4KLSAgICAgICAg
ICAgICAgICBpZiAoIW1fbHp3Q29udGV4dC5wcmVwYXJlVG9EZWNvZGUobV9zY3JlZW5XaWR0aCwg
ZGF0YXNpemUpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbV9jbGllbnQgPyBtX2NsaWVu
dC0+c2V0RmFpbGVkKCkgOiBmYWxzZTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFTU0VS
VCghbV9mcmFtZXMuaXNFbXB0eSgpKTsKKyAgICAgICAgICAgIG1fZnJhbWVzLmxhc3QoKS0+c2V0
RGF0YVNpemUoKmN1cnJlbnRDb21wb25lbnQpOwogICAgICAgICAgICAgR0VUTigxLCBHSUZTdWJC
bG9jayk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtNDAyLDcgKzQzOCw3IEBA
IGJvb2wgR0lGSW1hZ2VSZWFkZXI6OmRlY29kZUludGVybmFsKHNpemVfdCBkYXRhUG9zaXRpb24s
IHNpemVfdCBsZW4sIEdJRkltYWdlRGVjCiAgICAgICAgICAgICBlbHNlIGlmICghc3RybmNtcCgo
Y2hhciopY3VycmVudENvbXBvbmVudCwgIkdJRjg3YSIsIDYpKQogICAgICAgICAgICAgICAgIG1f
dmVyc2lvbiA9IDg3OwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJldHVybiBt
X2NsaWVudCA/IG1fY2xpZW50LT5zZXRGYWlsZWQoKSA6IGZhbHNlOworICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIEdFVE4oNywgR0lGR2xvYmFsSGVhZGVyKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC00MTUsNiArNDUxLDcgQEAgYm9vbCBHSUZJ
bWFnZVJlYWRlcjo6ZGVjb2RlSW50ZXJuYWwoc2l6ZV90IGRhdGFQb3NpdGlvbiwgc2l6ZV90IGxl
biwgR0lGSW1hZ2VEZWMKICAgICAgICAgICAgIG1fc2NyZWVuSGVpZ2h0ID0gR0VUSU5UMTYoY3Vy
cmVudENvbXBvbmVudCArIDIpOwogCiAgICAgICAgICAgICAvLyBDQUxMQkFDSzogSW5mb3JtIHRo
ZSBkZWNvZGVycGx1Z2luIG9mIG91ciBzaXplLgorICAgICAgICAgICAgLy8gTm90ZTogQSBzdWJz
ZXF1ZW50IGZyYW1lIG1pZ2h0IGhhdmUgZGltZW5zaW9ucyBsYXJnZXIgdGhhbiB0aGUgInNjcmVl
biIgZGltZW5zaW9ucy4KICAgICAgICAgICAgIGlmIChtX2NsaWVudCAmJiAhbV9jbGllbnQtPnNl
dFNpemUobV9zY3JlZW5XaWR0aCwgbV9zY3JlZW5IZWlnaHQpKQogICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKIApAQCAtNDY4LDcgKzUwNSw3IEBAIGJvb2wgR0lGSW1hZ2VSZWFkZXI6OmRl
Y29kZUludGVybmFsKHNpemVfdCBkYXRhUG9zaXRpb24sIHNpemVfdCBsZW4sIEdJRkltYWdlRGVj
CiAgICAgICAgICAgICAvLyB1bnRpbCB3ZSBmaW5kIGFuIGltYWdlIHNlcGFyYXRvciwgYnV0IEdJ
Rjg5YSBzYXlzIHN1Y2gKICAgICAgICAgICAgIC8vIGEgZmlsZSBpcyBjb3JydXB0LiBXZSBmb2xs
b3cgR0lGODlhIGFuZCBiYWlsIG91dC4KICAgICAgICAgICAgIGlmICgqY3VycmVudENvbXBvbmVu
dCAhPSAnLCcpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1fY2xpZW50ID8gbV9jbGllbnQtPnNl
dEZhaWxlZCgpIDogZmFsc2U7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
ICAgICAgICBHRVROKDksIEdJRkltYWdlSGVhZGVyKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAt
NTM1LDMwICs1NzIsMjMgQEAgYm9vbCBHSUZJbWFnZVJlYWRlcjo6ZGVjb2RlSW50ZXJuYWwoc2l6
ZV90IGRhdGFQb3NpdGlvbiwgc2l6ZV90IGxlbiwgR0lGSW1hZ2VEZWMKICAgICAgICAgfQogCiAg
ICAgICAgIGNhc2UgR0lGQ29udHJvbEV4dGVuc2lvbjogewotICAgICAgICAgICAgaWYgKHF1ZXJ5
ICE9IEdJRkltYWdlRGVjb2Rlcjo6R0lGRnJhbWVDb3VudFF1ZXJ5KSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKCFtX2ZyYW1lQ29udGV4dCkKLSAgICAgICAgICAgICAgICAgICAgbV9mcmFtZUNvbnRl
eHQgPSBuZXcgR0lGRnJhbWVDb250ZXh0KCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
IGlmIChtX2ZyYW1lQ29udGV4dCkgewotICAgICAgICAgICAgICAgIGlmICgqY3VycmVudENvbXBv
bmVudCAmIDB4MSkgewotICAgICAgICAgICAgICAgICAgICBtX2ZyYW1lQ29udGV4dC0+dHBpeGVs
ID0gY3VycmVudENvbXBvbmVudFszXTsKLSAgICAgICAgICAgICAgICAgICAgbV9mcmFtZUNvbnRl
eHQtPmlzVHJhbnNwYXJlbnQgPSB0cnVlOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgICAgIG1fZnJhbWVDb250ZXh0LT5pc1RyYW5zcGFyZW50ID0gZmFsc2U7Ci0g
ICAgICAgICAgICAgICAgICAgIC8vIGlnbm9yaW5nIGdmeCBjb250cm9sIGV4dGVuc2lvbgotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAvLyBOT1RFOiBUaGlzIHJlbGllcyBvbiB0
aGUgdmFsdWVzIGluIHRoZSBGcmFtZURpc3Bvc2FsTWV0aG9kIGVudW0KLSAgICAgICAgICAgICAg
ICAvLyBtYXRjaGluZyB0aG9zZSBpbiB0aGUgR0lGIHNwZWMhCi0gICAgICAgICAgICAgICAgaW50
IGRpc3Bvc2FsTWV0aG9kID0gKCgqY3VycmVudENvbXBvbmVudCkgPj4gMikgJiAweDc7Ci0gICAg
ICAgICAgICAgICAgbV9mcmFtZUNvbnRleHQtPmRpc3Bvc2FsTWV0aG9kID0gKFdlYkNvcmU6Oklt
YWdlRnJhbWU6OkZyYW1lRGlzcG9zYWxNZXRob2QpZGlzcG9zYWxNZXRob2Q7Ci0KLSAgICAgICAg
ICAgICAgICAvLyBTb21lIHNwZWNzIHNheSAzcmQgYml0ICh2YWx1ZSA0KSwgb3RoZXIgc3BlY3Mg
c2F5IHZhbHVlIDMKLSAgICAgICAgICAgICAgICAvLyBMZXQncyBjaG9vc2UgMyAodGhlIG1vcmUg
cG9wdWxhcikKLSAgICAgICAgICAgICAgICBpZiAoZGlzcG9zYWxNZXRob2QgPT0gNCkKLSAgICAg
ICAgICAgICAgICAgICAgbV9mcmFtZUNvbnRleHQtPmRpc3Bvc2FsTWV0aG9kID0gV2ViQ29yZTo6
SW1hZ2VGcmFtZTo6RGlzcG9zZU92ZXJ3cml0ZVByZXZpb3VzOwotICAgICAgICAgICAgICAgIG1f
ZnJhbWVDb250ZXh0LT5kZWxheVRpbWUgPSBHRVRJTlQxNihjdXJyZW50Q29tcG9uZW50ICsgMSkg
KiAxMDsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGFkZEZyYW1lSWZOZWNlc3NhcnkoKTsK
KyAgICAgICAgICAgIEdJRkZyYW1lQ29udGV4dCogY3VycmVudEZyYW1lID0gbV9mcmFtZXMubGFz
dCgpLmdldCgpOworICAgICAgICAgICAgY3VycmVudEZyYW1lLT5pc1RyYW5zcGFyZW50ID0gKmN1
cnJlbnRDb21wb25lbnQgJiAweDE7CisgICAgICAgICAgICBpZiAoY3VycmVudEZyYW1lLT5pc1Ry
YW5zcGFyZW50KQorICAgICAgICAgICAgICAgIGN1cnJlbnRGcmFtZS0+dHBpeGVsID0gY3VycmVu
dENvbXBvbmVudFszXTsKKworICAgICAgICAgICAgLy8gV2UgaWdub3JlIHRoZSAidXNlciBpbnB1
dCIgYml0LgorICAgICAgICAgICAgLy8gTk9URTogVGhpcyByZWxpZXMgb24gdGhlIHZhbHVlcyBp
biB0aGUgRnJhbWVEaXNwb3NhbE1ldGhvZCBlbnVtCisgICAgICAgICAgICAvLyBtYXRjaGluZyB0
aG9zZSBpbiB0aGUgR0lGIHNwZWMhCisgICAgICAgICAgICBpbnQgZGlzcG9zYWxNZXRob2QgPSAo
KCpjdXJyZW50Q29tcG9uZW50KSA+PiAyKSAmIDB4NzsKKyAgICAgICAgICAgIGN1cnJlbnRGcmFt
ZS0+ZGlzcG9zYWxNZXRob2QgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpJbWFnZUZyYW1lOjpGcmFt
ZURpc3Bvc2FsTWV0aG9kPihkaXNwb3NhbE1ldGhvZCk7CisKKyAgICAgICAgICAgIC8vIFNvbWUg
c3BlY3Mgc2F5IHRoYXQgZGlzcG9zYWwgbWV0aG9kIDMgaXMgIm92ZXJ3cml0ZSBwcmV2aW91cyIs
IG90aGVycyB0aGF0IHNldHRpbmcKKyAgICAgICAgICAgIC8vIHRoZSB0aGlyZCBiaXQgb2YgdGhl
IGZpZWxkIChpLmUuIG1ldGhvZCA0KSBpcy4gV2UgbWFwIGJvdGggdG8gdGhlIHNhbWUgdmFsdWUu
CisgICAgICAgICAgICBpZiAoZGlzcG9zYWxNZXRob2QgPT0gNCkKKyAgICAgICAgICAgICAgICBj
dXJyZW50RnJhbWUtPmRpc3Bvc2FsTWV0aG9kID0gV2ViQ29yZTo6SW1hZ2VGcmFtZTo6RGlzcG9z
ZU92ZXJ3cml0ZVByZXZpb3VzOworICAgICAgICAgICAgY3VycmVudEZyYW1lLT5kZWxheVRpbWUg
PSBHRVRJTlQxNihjdXJyZW50Q29tcG9uZW50ICsgMSkgKiAxMDsKICAgICAgICAgICAgIEdFVE4o
MSwgR0lGQ29uc3VtZUJsb2NrKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC01
ODcsOCArNjE3LDkgQEAgYm9vbCBHSUZJbWFnZVJlYWRlcjo6ZGVjb2RlSW50ZXJuYWwoc2l6ZV90
IGRhdGFQb3NpdGlvbiwgc2l6ZV90IGxlbiwgR0lGSW1hZ2VEZWMKIAogICAgICAgICAvLyBOZXRz
Y2FwZS1zcGVjaWZpYyBHSUYgZXh0ZW5zaW9uOiBhbmltYXRpb24gbG9vcGluZy4KICAgICAgICAg
Y2FzZSBHSUZOZXRzY2FwZUV4dGVuc2lvbkJsb2NrOiB7CisgICAgICAgICAgICAvLyBHSUZDb25z
dW1lTmV0c2NhcGVFeHRlbnNpb24gYWx3YXkgcmVhZHMgMyBieXRlcyBmcm9tIHRoZSBzdHJlYW07
IFdlIHNob3VsZCBhdCBsZWFzdCB3YWl0IGZvciB0aGlzIGFtb3VudC4KICAgICAgICAgICAgIGlm
ICgqY3VycmVudENvbXBvbmVudCkKLSAgICAgICAgICAgICAgICBHRVROKCpjdXJyZW50Q29tcG9u
ZW50LCBHSUZDb25zdW1lTmV0c2NhcGVFeHRlbnNpb24pOworICAgICAgICAgICAgICAgIEdFVE4o
c3RkOjptYXgoMywgc3RhdGljX2Nhc3Q8aW50PigqY3VycmVudENvbXBvbmVudCkpLCBHSUZDb25z
dW1lTmV0c2NhcGVFeHRlbnNpb24pOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAg
IEdFVE4oMSwgR0lGSW1hZ2VTdGFydCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTYxNiw3ICs2
NDcsNyBAQCBib29sIEdJRkltYWdlUmVhZGVyOjpkZWNvZGVJbnRlcm5hbChzaXplX3QgZGF0YVBv
c2l0aW9uLCBzaXplX3QgbGVuLCBHSUZJbWFnZURlYwogICAgICAgICAgICAgICAgIEdFVE4oMSwg
R0lGTmV0c2NhcGVFeHRlbnNpb25CbG9jayk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgICAgIC8vIDAsMy03IGFyZSB5ZXQgdG8gYmUgZGVmaW5lZCBuZXRzY2FwZSBleHRlbnNp
b24gY29kZXMKLSAgICAgICAgICAgICAgICByZXR1cm4gbV9jbGllbnQgPyBtX2NsaWVudC0+c2V0
RmFpbGVkKCkgOiBmYWxzZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtNjM2LDcgKzY2Nyw3IEBA
IGJvb2wgR0lGSW1hZ2VSZWFkZXI6OmRlY29kZUludGVybmFsKHNpemVfdCBkYXRhUG9zaXRpb24s
IHNpemVfdCBsZW4sIEdJRkltYWdlRGVjCiAgICAgICAgICAgICAgKiBzaXplIGhhcyB3ZWlyZCB3
aWR0aCBvciBoZWlnaHQuICBXZSBhc3N1bWUgdGhhdCBHSUY4N2EKICAgICAgICAgICAgICAqIGZp
bGVzIGRvbid0IGNvbnRhaW4gYW5pbWF0aW9ucy4KICAgICAgICAgICAgICAqLwotICAgICAgICAg
ICAgaWYgKCFtX2ltYWdlc0RlY29kZWQKKyAgICAgICAgICAgIGlmIChjdXJyZW50RnJhbWVJc0Zp
cnN0RnJhbWUoKQogICAgICAgICAgICAgICAgICYmICgobV9zY3JlZW5IZWlnaHQgPCBoZWlnaHQp
IHx8IChtX3NjcmVlbldpZHRoIDwgd2lkdGgpIHx8IChtX3ZlcnNpb24gPT0gODcpKSkgewogICAg
ICAgICAgICAgICAgIG1fc2NyZWVuSGVpZ2h0ID0gaGVpZ2h0OwogICAgICAgICAgICAgICAgIG1f
c2NyZWVuV2lkdGggPSB3aWR0aDsKQEAgLTY1MywxMCArNjg0LDEwIEBAIGJvb2wgR0lGSW1hZ2VS
ZWFkZXI6OmRlY29kZUludGVybmFsKHNpemVfdCBkYXRhUG9zaXRpb24sIHNpemVfdCBsZW4sIEdJ
RkltYWdlRGVjCiAgICAgICAgICAgICAgICAgaGVpZ2h0ID0gbV9zY3JlZW5IZWlnaHQ7CiAgICAg
ICAgICAgICAgICAgd2lkdGggPSBtX3NjcmVlbldpZHRoOwogICAgICAgICAgICAgICAgIGlmICgh
aGVpZ2h0IHx8ICF3aWR0aCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1fY2xpZW50ID8g
bV9jbGllbnQtPnNldEZhaWxlZCgpIDogZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKHF1ZXJ5ID09IEdJRklt
YWdlRGVjb2Rlcjo6R0lGU2l6ZVF1ZXJ5IHx8IGhhbHRBdEZyYW1lID09IG1faW1hZ2VzRGVjb2Rl
ZCkgeworICAgICAgICAgICAgaWYgKHBhcnNlU2l6ZU9ubHkpIHsKICAgICAgICAgICAgICAgICAv
LyBUaGUgZGVjb2RlciBuZWVkcyB0byBzdG9wLiBIYW5kIGJhY2sgdGhlIG51bWJlciBvZiBieXRl
cyB3ZSBjb25zdW1lZCBmcm9tCiAgICAgICAgICAgICAgICAgLy8gYnVmZmVyIG1pbnVzIDkgKHRo
ZSBhbW91bnQgd2UgY29uc3VtZWQgdG8gcmVhZCB0aGUgaGVhZGVyKS4KICAgICAgICAgICAgICAg
ICBzZXRSZW1haW5pbmdCeXRlcyhsZW4gKyA5KTsKQEAgLTY2NCw2MiArNjk1LDQwIEBAIGJvb2wg
R0lGSW1hZ2VSZWFkZXI6OmRlY29kZUludGVybmFsKHNpemVfdCBkYXRhUG9zaXRpb24sIHNpemVf
dCBsZW4sIEdJRkltYWdlRGVjCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
ICAgICB9CiAKLSAgICAgICAgICAgIG1faW1hZ2VzQ291bnQgPSBtX2ltYWdlc0RlY29kZWQgKyAx
OwotCi0gICAgICAgICAgICBpZiAocXVlcnkgPT0gR0lGSW1hZ2VEZWNvZGVyOjpHSUZGdWxsUXVl
cnkgJiYgIW1fZnJhbWVDb250ZXh0KQotICAgICAgICAgICAgICAgIG1fZnJhbWVDb250ZXh0ID0g
bmV3IEdJRkZyYW1lQ29udGV4dCgpOwotCi0gICAgICAgICAgICBpZiAobV9mcmFtZUNvbnRleHQp
IHsKLSAgICAgICAgICAgICAgICBtX2ZyYW1lQ29udGV4dC0+eE9mZnNldCA9IHhPZmZzZXQ7Ci0g
ICAgICAgICAgICAgICAgbV9mcmFtZUNvbnRleHQtPnlPZmZzZXQgPSB5T2Zmc2V0OwotICAgICAg
ICAgICAgICAgIG1fZnJhbWVDb250ZXh0LT5oZWlnaHQgPSBoZWlnaHQ7Ci0gICAgICAgICAgICAg
ICAgbV9mcmFtZUNvbnRleHQtPndpZHRoID0gd2lkdGg7Ci0KLSAgICAgICAgICAgICAgICAvKiBU
aGlzIGNhc2Ugd2lsbCBuZXZlciBiZSB0YWtlbiBpZiB0aGlzIGlzIHRoZSBmaXJzdCBpbWFnZSAq
LwotICAgICAgICAgICAgICAgIC8qIGJlaW5nIGRlY29kZWQuIElmIGFueSBvZiB0aGUgbGF0ZXIg
aW1hZ2VzIGFyZSBsYXJnZXIgICAgICovCi0gICAgICAgICAgICAgICAgLyogdGhhbiB0aGUgc2Ny
ZWVuIHNpemUsIHdlIG5lZWQgdG8gcmVhbGxvY2F0ZSBidWZmZXJzLiAgICAgKi8KLSAgICAgICAg
ICAgICAgICBtX3NjcmVlbldpZHRoID0gc3RkOjptYXgobV9zY3JlZW5XaWR0aCwgd2lkdGgpOwot
Ci0gICAgICAgICAgICAgICAgaWYgKG1fc2NyZWVuSGVpZ2h0IDwgaGVpZ2h0KQotICAgICAgICAg
ICAgICAgICAgICBtX3NjcmVlbkhlaWdodCA9IGhlaWdodDsKLQotICAgICAgICAgICAgICAgIGlm
IChjdXJyZW50Q29tcG9uZW50WzhdICYgMHg0MCkgewotICAgICAgICAgICAgICAgICAgICBtX2Zy
YW1lQ29udGV4dC0+aW50ZXJsYWNlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIG1fZnJh
bWVDb250ZXh0LT5pcGFzcyA9IDE7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgICAgICAgICAgbV9mcmFtZUNvbnRleHQtPmludGVybGFjZWQgPSBmYWxzZTsKLSAgICAgICAg
ICAgICAgICAgICAgbV9mcmFtZUNvbnRleHQtPmlwYXNzID0gMDsKLSAgICAgICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgICAgICBpZiAoIW1faW1hZ2VzRGVjb2RlZCkKLSAgICAgICAgICAgICAg
ICAgICAgbV9mcmFtZUNvbnRleHQtPnByb2dyZXNzaXZlRGlzcGxheSA9IHRydWU7Ci0gICAgICAg
ICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIE92ZXJsYXlpbmcgaW50ZXJs
YWNlZCwgdHJhbnNwYXJlbnQgR0lGcyBvdmVyCi0gICAgICAgICAgICAgICAgICAgIC8vIGV4aXN0
aW5nIGltYWdlIGRhdGEgdXNpbmcgdGhlIEhhZWJlcmxpIGRpc3BsYXkgaGFjawotICAgICAgICAg
ICAgICAgICAgICAvLyByZXF1aXJlcyBzYXZpbmcgdGhlIHVuZGVybHlpbmcgaW1hZ2UgaW4gb3Jk
ZXIgdG8KLSAgICAgICAgICAgICAgICAgICAgLy8gYXZvaWQgamFnZ2llcyBhdCB0aGUgdHJhbnNw
YXJlbmN5IGVkZ2VzLiBXZSBhcmUKLSAgICAgICAgICAgICAgICAgICAgLy8gdW5wcmVwYXJlZCB0
byBkZWFsIHdpdGggdGhhdCwgc28gZG9uJ3QgZGlzcGxheSBzdWNoCi0gICAgICAgICAgICAgICAg
ICAgIC8vIGltYWdlcyBwcm9ncmVzc2l2ZWx5Ci0gICAgICAgICAgICAgICAgICAgIG1fZnJhbWVD
b250ZXh0LT5wcm9ncmVzc2l2ZURpc3BsYXkgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgICAgICAvLyBDbGVhciBzdGF0ZSBmcm9tIGxhc3QgaW1hZ2UuCi0gICAgICAg
ICAgICAgICAgbV9mcmFtZUNvbnRleHQtPmlyb3cgPSAwOwotICAgICAgICAgICAgICAgIG1fZnJh
bWVDb250ZXh0LT5yb3dzUmVtYWluaW5nID0gbV9mcmFtZUNvbnRleHQtPmhlaWdodDsKLQotICAg
ICAgICAgICAgICAgIC8vIGJpdHMgcGVyIHBpeGVsIGlzIGN1cnJlbnRDb21wb25lbnRbOF0mMHgw
NwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBoYXMgYSBsb2NhbCBjb2xvcm1hcD8K
LSAgICAgICAgICAgIGlmIChjdXJyZW50Q29tcG9uZW50WzhdICYgMHg4MCkgeworICAgICAgICAg
ICAgYWRkRnJhbWVJZk5lY2Vzc2FyeSgpOworICAgICAgICAgICAgR0lGRnJhbWVDb250ZXh0KiBj
dXJyZW50RnJhbWUgPSBtX2ZyYW1lcy5sYXN0KCkuZ2V0KCk7CisKKyAgICAgICAgICAgIGN1cnJl
bnRGcmFtZS0+c2V0SGVhZGVyRGVmaW5lZCgpOworICAgICAgICAgICAgY3VycmVudEZyYW1lLT54
T2Zmc2V0ID0geE9mZnNldDsKKyAgICAgICAgICAgIGN1cnJlbnRGcmFtZS0+eU9mZnNldCA9IHlP
ZmZzZXQ7CisgICAgICAgICAgICBjdXJyZW50RnJhbWUtPmhlaWdodCA9IGhlaWdodDsKKyAgICAg
ICAgICAgIGN1cnJlbnRGcmFtZS0+d2lkdGggPSB3aWR0aDsKKyAgICAgICAgICAgIG1fc2NyZWVu
V2lkdGggPSBzdGQ6Om1heChtX3NjcmVlbldpZHRoLCB3aWR0aCk7CisgICAgICAgICAgICBtX3Nj
cmVlbkhlaWdodCA9IHN0ZDo6bWF4KG1fc2NyZWVuSGVpZ2h0LCBoZWlnaHQpOworICAgICAgICAg
ICAgY3VycmVudEZyYW1lLT5pbnRlcmxhY2VkID0gY3VycmVudENvbXBvbmVudFs4XSAmIDB4NDA7
CisKKyAgICAgICAgICAgIC8vIE92ZXJsYXlpbmcgaW50ZXJsYWNlZCwgdHJhbnNwYXJlbnQgR0lG
cyBvdmVyCisgICAgICAgICAgICAvLyBleGlzdGluZyBpbWFnZSBkYXRhIHVzaW5nIHRoZSBIYWVi
ZXJsaSBkaXNwbGF5IGhhY2sKKyAgICAgICAgICAgIC8vIHJlcXVpcmVzIHNhdmluZyB0aGUgdW5k
ZXJseWluZyBpbWFnZSBpbiBvcmRlciB0bworICAgICAgICAgICAgLy8gYXZvaWQgamFnZ2llcyBh
dCB0aGUgdHJhbnNwYXJlbmN5IGVkZ2VzLiBXZSBhcmUKKyAgICAgICAgICAgIC8vIHVucHJlcGFy
ZWQgdG8gZGVhbCB3aXRoIHRoYXQsIHNvIGRvbid0IGRpc3BsYXkgc3VjaAorICAgICAgICAgICAg
Ly8gaW1hZ2VzIHByb2dyZXNzaXZlbHkuIFdoaWNoIG1lYW5zIG9ubHkgdGhlIGZpcnN0CisgICAg
ICAgICAgICAvLyBmcmFtZSBjYW4gYmUgcHJvZ3Jlc3NpdmVseSBkaXNwbGF5ZWQuCisgICAgICAg
ICAgICAvLyBGSVhNRTogSXQgaXMgcG9zc2libGUgdGhhdCBhIG5vbi10cmFuc3BhcmVudCBmcmFt
ZQorICAgICAgICAgICAgLy8gY2FuIGJlIGludGVybGFjZWQgYW5kIHByb2dyZXNzaXZlbHkgZGlz
cGxheWVkLgorICAgICAgICAgICAgY3VycmVudEZyYW1lLT5wcm9ncmVzc2l2ZURpc3BsYXkgPSBj
dXJyZW50RnJhbWVJc0ZpcnN0RnJhbWUoKTsKKworICAgICAgICAgICAgLy8gYml0cyBwZXIgcGl4
ZWwgaXMgY3VycmVudENvbXBvbmVudFs4XSYweDA3CisKKyAgICAgICAgICAgIGNvbnN0IGJvb2wg
aXNMb2NhbENvbG9ybWFwRGVmaW5lZCA9IGN1cnJlbnRDb21wb25lbnRbOF0gJiAweDgwOworICAg
ICAgICAgICAgaWYgKGlzTG9jYWxDb2xvcm1hcERlZmluZWQpIHsKKyAgICAgICAgICAgICAgICAv
LyBUaGUgdGhyZWUgbG93LW9yZGVyIGJpdHMgb2YgY3VycmVudENvbXBvbmVudFs4XSBzcGVjaWZ5
IHRoZSBiaXRzIHBlciBwaXhlbC4KICAgICAgICAgICAgICAgICBpbnQgbnVtQ29sb3JzID0gMiA8
PCAoY3VycmVudENvbXBvbmVudFs4XSAmIDB4Nyk7CiAgICAgICAgICAgICAgICAgY29uc3Qgc2l6
ZV90IGxvY2FsQ29sb3JtYXBCeXRlcyA9IDMgKiBudW1Db2xvcnM7CiAKICAgICAgICAgICAgICAg
ICAvLyBTd2l0Y2ggdG8gdGhlIG5ldyBsb2NhbCBwYWxldHRlIGFmdGVyIGl0IGxvYWRzCi0gICAg
ICAgICAgICAgICAgaWYgKG1fZnJhbWVDb250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAgIG1f
ZnJhbWVDb250ZXh0LT5sb2NhbENvbG9ybWFwUG9zaXRpb24gPSBkYXRhUG9zaXRpb247Ci0gICAg
ICAgICAgICAgICAgICAgIG1fZnJhbWVDb250ZXh0LT5sb2NhbENvbG9ybWFwU2l6ZSA9IG51bUNv
bG9yczsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY3VycmVudEZyYW1lLT5s
b2NhbENvbG9ybWFwUG9zaXRpb24gPSBkYXRhUG9zaXRpb247CisgICAgICAgICAgICAgICAgY3Vy
cmVudEZyYW1lLT5sb2NhbENvbG9ybWFwU2l6ZSA9IG51bUNvbG9yczsKIAogICAgICAgICAgICAg
ICAgIGlmIChsZW4gPCBsb2NhbENvbG9ybWFwQnl0ZXMpIHsKICAgICAgICAgICAgICAgICAgICAg
Ly8gV2FpdCB1bnRpbCB3ZSBoYXZlIGVub3VnaCBieXRlcyB0byBjb25zdW1lIHRoZSBlbnRpcmUg
Y29sb3JtYXAgYXQgb25jZS4KQEAgLTcyNyw3MCArNzM2LDUxIEBAIGJvb2wgR0lGSW1hZ2VSZWFk
ZXI6OmRlY29kZUludGVybmFsKHNpemVfdCBkYXRhUG9zaXRpb24sIHNpemVfdCBsZW4sIEdJRklt
YWdlRGVjCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KIAot
ICAgICAgICAgICAgICAgIGlmIChtX2ZyYW1lQ29udGV4dCkKLSAgICAgICAgICAgICAgICAgICAg
bV9mcmFtZUNvbnRleHQtPmlzTG9jYWxDb2xvcm1hcERlZmluZWQgPSB0cnVlOworICAgICAgICAg
ICAgICAgIGN1cnJlbnRGcmFtZS0+aXNMb2NhbENvbG9ybWFwRGVmaW5lZCA9IHRydWU7CiAgICAg
ICAgICAgICAgICAgZGF0YVBvc2l0aW9uICs9IGxvY2FsQ29sb3JtYXBCeXRlczsKICAgICAgICAg
ICAgICAgICBsZW4gLT0gbG9jYWxDb2xvcm1hcEJ5dGVzOwotICAgICAgICAgICAgfSBlbHNlIGlm
IChtX2ZyYW1lQ29udGV4dCkgeworICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAg
ICAvLyBTd2l0Y2ggYmFjayB0byB0aGUgZ2xvYmFsIHBhbGV0dGUKLSAgICAgICAgICAgICAgICBt
X2ZyYW1lQ29udGV4dC0+aXNMb2NhbENvbG9ybWFwRGVmaW5lZCA9IGZhbHNlOworICAgICAgICAg
ICAgICAgIGN1cnJlbnRGcmFtZS0+aXNMb2NhbENvbG9ybWFwRGVmaW5lZCA9IGZhbHNlOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgR0VUTigxLCBHSUZMWldTdGFydCk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgR0lGSW1hZ2VDb2xvcm1hcDogewot
ICAgICAgICAgICAgaWYgKG1fZnJhbWVDb250ZXh0KQotICAgICAgICAgICAgICAgIG1fZnJhbWVD
b250ZXh0LT5pc0xvY2FsQ29sb3JtYXBEZWZpbmVkID0gdHJ1ZTsKKyAgICAgICAgICAgIEFTU0VS
VCghbV9mcmFtZXMuaXNFbXB0eSgpKTsKKyAgICAgICAgICAgIG1fZnJhbWVzLmxhc3QoKS0+aXNM
b2NhbENvbG9ybWFwRGVmaW5lZCA9IHRydWU7CiAgICAgICAgICAgICBHRVROKDEsIEdJRkxaV1N0
YXJ0KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBHSUZT
dWJCbG9jazogewotICAgICAgICAgICAgLy8gU3RpbGwgd29ya2luZyBvbiB0aGUgc2FtZSBpbWFn
ZTogUHJvY2VzcyBuZXh0IExaVyBkYXRhIGJsb2NrLgogICAgICAgICAgICAgY29uc3Qgc2l6ZV90
IGJ5dGVzSW5CbG9jayA9ICpjdXJyZW50Q29tcG9uZW50OwotICAgICAgICAgICAgaWYgKGJ5dGVz
SW5CbG9jaykgewotICAgICAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGVyZSBhcmUgc3RpbGwg
cm93cyBsZWZ0LiBJZiB0aGUgR0lGIGRhdGEKLSAgICAgICAgICAgICAgICAvLyBpcyBjb3JydXB0
LCB3ZSBtYXkgbm90IGdldCBhbiBleHBsaWNpdCB0ZXJtaW5hdG9yLgotICAgICAgICAgICAgICAg
IGlmIChtX2ZyYW1lQ29udGV4dCAmJiAhbV9mcmFtZUNvbnRleHQtPnJvd3NSZW1haW5pbmcpIHsK
LSAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBhbiBpbGxlZ2FsIEdJRiwgYnV0IHdlIHJl
bWFpbiB0b2xlcmFudC4KLSAgICAgICAgICAgICAgICAgICAgR0VUTigxLCBHSUZTdWJCbG9jayk7
Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGJ5dGVzSW5CbG9jaykKICAgICAg
ICAgICAgICAgICBHRVROKGJ5dGVzSW5CbG9jaywgR0lGTFpXKTsKLSAgICAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgLy8gU2VlIGlmIHRoZXJlIGFyZSBhbnkgbW9yZSBpbWFnZXMg
aW4gdGhpcyBzZXF1ZW5jZS4KLSAgICAgICAgICAgICAgICBtX2ltYWdlc0RlY29kZWQrKzsKLQot
ICAgICAgICAgICAgICAgIC8vIENBTExCQUNLOiBUaGUgZnJhbWUgaXMgbm93IGNvbXBsZXRlLgot
ICAgICAgICAgICAgICAgIGlmIChtX2NsaWVudCAmJiBtX2ZyYW1lQ29udGV4dCAmJiAhbV9jbGll
bnQtPmZyYW1lQ29tcGxldGUobV9pbWFnZXNEZWNvZGVkIC0gMSwgbV9mcmFtZUNvbnRleHQtPmRl
bGF5VGltZSwgbV9mcmFtZUNvbnRleHQtPmRpc3Bvc2FsTWV0aG9kKSkKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOyAvLyBmcmFtZUNvbXBsZXRlKCkgaGFzIGFscmVhZHkgY2FsbGVk
IG1fY2xpZW50LT5zZXRGYWlsZWQoKS4KLQotICAgICAgICAgICAgICAgIC8vIENsZWFyIHN0YXRl
IGZyb20gdGhpcyBpbWFnZQotICAgICAgICAgICAgICAgIGlmIChtX2ZyYW1lQ29udGV4dCkgewot
ICAgICAgICAgICAgICAgICAgICBtX2ZyYW1lQ29udGV4dC0+aXNMb2NhbENvbG9ybWFwRGVmaW5l
ZCA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICBtX2ZyYW1lQ29udGV4dC0+aXNUcmFuc3Bh
cmVudCA9IGZhbHNlOwotICAgICAgICAgICAgICAgIH0KLQorICAgICAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICAgICAgLy8gRmluaXNoZWQgcGFyc2luZyBvbmUgZnJhbWU7IFByb2Nlc3MgbmV4
dCBmcmFtZS4KKyAgICAgICAgICAgICAgICBBU1NFUlQoIW1fZnJhbWVzLmlzRW1wdHkoKSk7Cisg
ICAgICAgICAgICAgICAgbV9mcmFtZXMubGFzdCgpLT5zZXRDb21wbGV0ZSgpOwogICAgICAgICAg
ICAgICAgIEdFVE4oMSwgR0lGSW1hZ2VTdGFydCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgR0lGRG9uZTogewotICAgICAgICAg
ICAgLy8gV2hlbiB0aGUgR0lGIGlzIGRvbmUsIHdlIGNhbiBzdG9wLgotICAgICAgICAgICAgaWYg
KG1fY2xpZW50KQotICAgICAgICAgICAgICAgIG1fY2xpZW50LT5naWZDb21wbGV0ZSgpOworICAg
ICAgICAgICAgbV9wYXJzZUNvbXBsZXRlZCA9IHRydWU7CiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgfQogCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAvLyBXZSBzaG91
bGRuJ3QgZXZlciBnZXQgaGVyZS4KKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQogCiAgICAgc2V0UmVtYWluaW5nQnl0ZXMobGVu
KTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgR0lGSW1h
Z2VSZWFkZXI6OnNldFJlbWFpbmluZ0J5dGVzKHNpemVfdCByZW1haW5pbmdCeXRlcykKQEAgLTc5
OSwyMiArNzg5LDMzIEBAIHZvaWQgR0lGSW1hZ2VSZWFkZXI6OnNldFJlbWFpbmluZ0J5dGVzKHNp
emVfdCByZW1haW5pbmdCeXRlcykKICAgICBtX2J5dGVzUmVhZCA9IG1fZGF0YS0+c2l6ZSgpIC0g
cmVtYWluaW5nQnl0ZXM7CiB9CiAKLWJvb2wgR0lGTFpXQ29udGV4dDo6cHJlcGFyZVRvRGVjb2Rl
KHVuc2lnbmVkIHJvd1dpZHRoLCBpbnQgZGF0YXNpemUpCit2b2lkIEdJRkltYWdlUmVhZGVyOjph
ZGRGcmFtZUlmTmVjZXNzYXJ5KCkKIHsKKyAgICBpZiAobV9mcmFtZXMuaXNFbXB0eSgpIHx8IG1f
ZnJhbWVzLmxhc3QoKS0+aXNDb21wbGV0ZSgpKQorICAgICAgICBtX2ZyYW1lcy5hcHBlbmQoYWRv
cHRQdHIobmV3IEdJRkZyYW1lQ29udGV4dChtX2ZyYW1lcy5zaXplKCkpKSk7Cit9CisKKy8vIEZJ
WE1FOiBNb3ZlIHRoaXMgbWV0aG9kIHRvIGNsb3NlIHRvIGRvTFpXKCkuCitib29sIEdJRkxaV0Nv
bnRleHQ6OnByZXBhcmVUb0RlY29kZSgpCit7CisgICAgQVNTRVJUKG1fZnJhbWVDb250ZXh0LT5p
c0RhdGFTaXplRGVmaW5lZCgpICYmIG1fZnJhbWVDb250ZXh0LT5pc0hlYWRlckRlZmluZWQoKSk7
CisKICAgICAvLyBTaW5jZSB3ZSB1c2UgYSBjb2Rlc2l6ZSBvZiAxIG1vcmUgdGhhbiB0aGUgZGF0
YXNpemUsIHdlIG5lZWQgdG8gZW5zdXJlCiAgICAgLy8gdGhhdCBvdXIgZGF0YXNpemUgaXMgc3Ry
aWN0bHkgbGVzcyB0aGFuIHRoZSBNQVhfTFpXX0JJVFMgdmFsdWUgKDEyKS4KICAgICAvLyBUaGlz
IHNldHMgdGhlIGxhcmdlc3QgcG9zc2libGUgY29kZW1hc2sgY29ycmVjdGx5IGF0IDQwOTUuCi0g
ICAgaWYgKGRhdGFzaXplID49IE1BWF9MWldfQklUUykKKyAgICBpZiAobV9mcmFtZUNvbnRleHQt
PmRhdGFzaXplID49IE1BWF9MWldfQklUUykKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGNs
ZWFyQ29kZSA9IDEgPDwgZGF0YXNpemU7CisgICAgY2xlYXJDb2RlID0gMSA8PCBtX2ZyYW1lQ29u
dGV4dC0+ZGF0YXNpemU7CiAgICAgaWYgKGNsZWFyQ29kZSA+PSBNQVhfQllURVMpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIGF2YWlsID0gY2xlYXJDb2RlICsgMjsKICAgICBvbGRjb2Rl
ID0gLTE7Ci0gICAgY29kZXNpemUgPSBkYXRhc2l6ZSArIDE7CisgICAgY29kZXNpemUgPSBtX2Zy
YW1lQ29udGV4dC0+ZGF0YXNpemUgKyAxOwogICAgIGNvZGVtYXNrID0gKDEgPDwgY29kZXNpemUp
IC0gMTsKICAgICBkYXR1bSA9IGJpdHMgPSAwOworICAgIGlwYXNzID0gbV9mcmFtZUNvbnRleHQt
PmludGVybGFjZWQgPyAxIDogMDsKKyAgICBpcm93ID0gMDsKIAogICAgIC8vIEluaXRpYWxpemUg
dGhlIHRhYmxlcyBsYXppbHksIHRoaXMgYWxsb3dzIGZyYW1lIGNvdW50IHF1ZXJ5IHRvIHVzZSBs
ZXNzIG1lbW9yeS4KICAgICBzdWZmaXgucmVzaXplKE1BWF9CWVRFUyk7CkBAIC04MjIsOCArODIz
LDkgQEAgYm9vbCBHSUZMWldDb250ZXh0OjpwcmVwYXJlVG9EZWNvZGUodW5zaWduZWQgcm93V2lk
dGgsIGludCBkYXRhc2l6ZSkKICAgICBwcmVmaXgucmVzaXplKE1BWF9CWVRFUyk7CiAKICAgICAv
LyBJbml0aWFsaXplIG91dHB1dCByb3cgYnVmZmVyLgotICAgIHJvd0J1ZmZlci5yZXNpemUocm93
V2lkdGgpOworICAgIHJvd0J1ZmZlci5yZXNpemUobV9mcmFtZUNvbnRleHQtPndpZHRoKTsKICAg
ICByb3dQb3NpdGlvbiA9IDA7CisgICAgcm93c1JlbWFpbmluZyA9IG1fZnJhbWVDb250ZXh0LT5o
ZWlnaHQ7CiAKICAgICAvLyBDbGVhcmluZyB0aGUgd2hvbGUgc3VmZml4IHRhYmxlIGxldHMgdXMg
YmUgbW9yZSB0b2xlcmFudCBvZiBiYWQgZGF0YS4KICAgICBzdWZmaXguZmlsbCgwKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFn
ZVJlYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJ
RkltYWdlUmVhZGVyLmgKaW5kZXggYWUyYThiYjIxY2Q4MzMxMTZhOWQxNzg2OGZhZjg3MzliYmRm
OTNmYy4uMjRkMmViYzU5NDNmMzhlYzY1OWIzYmYwZmI1YzE0ZWZiZWQzMjg3NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlUmVh
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJ
RkltYWdlUmVhZGVyLmgKQEAgLTQyLDYgKzQyLDggQEAKIC8vIHNvIHdlIHdpbGwgdG9vLgogI2lu
Y2x1ZGUgIkdJRkltYWdlRGVjb2Rlci5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2lu
Y2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KIAogI2RlZmluZSBNQVhfTFpXX0JJVFMgICAgICAgICAgMTIKQEAg
LTc1LDE2ICs3Nyw4MiBAQCBlbnVtIEdJRlN0YXRlIHsKICAgICBHSUZDb25zdW1lQ29tbWVudAog
fTsKIAotLy8gRnJhbWUgb3V0cHV0IHN0YXRlIG1hY2hpbmUuCi1zdHJ1Y3QgR0lGRnJhbWVDb250
ZXh0IHsKK3N0cnVjdCBHSUZGcmFtZUNvbnRleHQ7CisKKy8vIExaVyBkZWNvZGVyIHN0YXRlIG1h
Y2hpbmUuCisvLyBGSVhNRTogTWFrZSB0aGlzIGEgY2xhc3MgYW5kIGhpZGUgcHJpdmF0ZSBtZW1i
ZXJzLgorY2xhc3MgR0lGTFpXQ29udGV4dCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6Ci0gICAgaW50IGRhdGFzaXplOworICAgIEdJRkxaV0NvbnRleHQoV2ViQ29yZTo6
R0lGSW1hZ2VEZWNvZGVyKiBjbGllbnQsIEdJRkZyYW1lQ29udGV4dCogZnJhbWVDb250ZXh0KQor
ICAgICAgICA6IHN0YWNrcCgwKQorICAgICAgICAsIGNvZGVzaXplKDApCisgICAgICAgICwgY29k
ZW1hc2soMCkKKyAgICAgICAgLCBjbGVhckNvZGUoMCkKKyAgICAgICAgLCBhdmFpbCgwKQorICAg
ICAgICAsIG9sZGNvZGUoMCkKKyAgICAgICAgLCBmaXJzdGNoYXIoMCkKKyAgICAgICAgLCBiaXRz
KDApCisgICAgICAgICwgZGF0dW0oMCkKKyAgICAgICAgLCBpcGFzcygwKQorICAgICAgICAsIGly
b3coMCkKKyAgICAgICAgLCByb3dQb3NpdGlvbigwKQorICAgICAgICAsIHJvd3NSZW1haW5pbmco
MCkKKyAgICAgICAgLCBtX2NsaWVudChjbGllbnQpCisgICAgICAgICwgbV9mcmFtZUNvbnRleHQo
ZnJhbWVDb250ZXh0KQorICAgIHsgfQorCisgICAgYm9vbCBwcmVwYXJlVG9EZWNvZGUoKTsKKyAg
ICBib29sIG91dHB1dFJvdygpOworICAgIGJvb2wgZG9MWlcoY29uc3QgdW5zaWduZWQgY2hhciog
YmxvY2ssIHNpemVfdCBieXRlc0luQmxvY2spOworICAgIGJvb2wgaGFzUmVtYWluaW5nUm93cygp
IHsgcmV0dXJuICEhcm93c1JlbWFpbmluZzsgfQorCitwcml2YXRlOgorICAgIC8vIExaVyBkZWNv
ZGluZyBzdGF0ZXMgYW5kIG91dHB1dCBzdGF0ZXMuCisgICAgc2l6ZV90IHN0YWNrcDsgLy8gQ3Vy
cmVudCBzdGFjayBwb2ludGVyLgorICAgIGludCBjb2Rlc2l6ZTsKKyAgICBpbnQgY29kZW1hc2s7
CisgICAgaW50IGNsZWFyQ29kZTsgLy8gQ29kZXdvcmQgdXNlZCB0byB0cmlnZ2VyIGRpY3Rpb25h
cnkgcmVzZXQuCisgICAgaW50IGF2YWlsOyAvLyBJbmRleCBvZiBuZXh0IGF2YWlsYWJsZSBzbG90
IGluIGRpY3Rpb25hcnkuCisgICAgaW50IG9sZGNvZGU7CisgICAgdW5zaWduZWQgY2hhciBmaXJz
dGNoYXI7CisgICAgaW50IGJpdHM7IC8vIE51bWJlciBvZiB1bnJlYWQgYml0cyBpbiAiZGF0dW0i
LgorICAgIGludCBkYXR1bTsgLy8gMzItYml0IGlucHV0IGJ1ZmZlci4KICAgICBpbnQgaXBhc3M7
IC8vIEludGVybGFjZSBwYXNzOyBSYW5nZXMgMS00IGlmIGludGVybGFjZWQuCi0gICAgc2l6ZV90
IHJvd3NSZW1haW5pbmc7IC8vIFJvd3MgcmVtYWluaW5nIHRvIGJlIG91dHB1dC4KICAgICBzaXpl
X3QgaXJvdzsgLy8gQ3VycmVudCBvdXRwdXQgcm93LCBzdGFydGluZyBhdCB6ZXJvLgorICAgIHNp
emVfdCByb3dQb3NpdGlvbjsKKyAgICBzaXplX3Qgcm93c1JlbWFpbmluZzsgLy8gUm93cyByZW1h
aW5pbmcgdG8gYmUgb3V0cHV0LgorCisgICAgVmVjdG9yPHVuc2lnbmVkIHNob3J0PiBwcmVmaXg7
CisgICAgVmVjdG9yPHVuc2lnbmVkIGNoYXI+IHN1ZmZpeDsKKyAgICBWZWN0b3I8dW5zaWduZWQg
Y2hhcj4gc3RhY2s7CisgICAgVmVjdG9yPHVuc2lnbmVkIGNoYXI+IHJvd0J1ZmZlcjsgLy8gU2lu
Z2xlIHNjYW5saW5lIHRlbXBvcmFyeSBidWZmZXIuCiAKLSAgICAvLyBQYXJhbWV0ZXJzIGZvciBp
bWFnZSBmcmFtZSBjdXJyZW50bHkgYmVpbmcgZGVjb2RlZC4KKyAgICAvLyBJbml0aWFsaXplZCBk
dXJpbmcgY29uc3RydWN0aW9uIGFuZCByZWFkLW9ubHkuCisgICAgV2ViQ29yZTo6R0lGSW1hZ2VE
ZWNvZGVyKiBtX2NsaWVudDsKKyAgICBHSUZGcmFtZUNvbnRleHQqIG1fZnJhbWVDb250ZXh0Owor
fTsKKworLy8gRGF0YSBzdHJ1Y3R1cmUgZm9yIG9uZSBMWlcgYmxvY2suCitzdHJ1Y3QgR0lGTFpX
QmxvY2sgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIEdJRkxa
V0Jsb2NrKHNpemVfdCBwb3NpdGlvbiwgc2l6ZV90IHNpemUpCisgICAgICAgIDogYmxvY2tQb3Np
dGlvbihwb3NpdGlvbikKKyAgICAgICAgLCBibG9ja1NpemUoc2l6ZSkKKyAgICB7CisgICAgfQor
CisgICAgc2l6ZV90IGJsb2NrUG9zaXRpb247CisgICAgc2l6ZV90IGJsb2NrU2l6ZTsKK307CisK
Ky8vIEZyYW1lIG91dHB1dCBzdGF0ZSBtYWNoaW5lLgorc3RydWN0IEdJRkZyYW1lQ29udGV4dCB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgLy8gRklYTUU6IE1v
dmUgdGhlc2UgbWVtYmVycyB0byBwcml2YXRlIHNlY3Rpb24uCisgICAgaW50IGZyYW1lSWQ7CiAg
ICAgdW5zaWduZWQgeE9mZnNldDsKICAgICB1bnNpZ25lZCB5T2Zmc2V0OyAvLyBXaXRoIHJlc3Bl
Y3QgdG8gInNjcmVlbiIgb3JpZ2luLgogICAgIHVuc2lnbmVkIHdpZHRoOwpAQCAtOTMsNiArMTYx
LDcgQEAgcHVibGljOgogICAgIFdlYkNvcmU6OkltYWdlRnJhbWU6OkZyYW1lRGlzcG9zYWxNZXRo
b2QgZGlzcG9zYWxNZXRob2Q7IC8vIFJlc3RvcmUgdG8gYmFja2dyb3VuZCwgbGVhdmUgaW4gcGxh
Y2UsIGV0Yy4KICAgICBzaXplX3QgbG9jYWxDb2xvcm1hcFBvc2l0aW9uOyAvLyBQZXItaW1hZ2Ug
Y29sb3JtYXAuCiAgICAgaW50IGxvY2FsQ29sb3JtYXBTaXplOyAvLyBTaXplIG9mIGxvY2FsIGNv
bG9ybWFwIGFycmF5LgorICAgIGludCBkYXRhc2l6ZTsKICAgICAKICAgICBib29sIGlzTG9jYWxD
b2xvcm1hcERlZmluZWQgOiAxOwogICAgIGJvb2wgcHJvZ3Jlc3NpdmVEaXNwbGF5IDogMTsgLy8g
SWYgdHJ1ZSwgZG8gSGFlYmVybGkgaW50ZXJsYWNlIGhhY2suCkBAIC0xMDEsMTEgKzE3MCw4IEBA
IHB1YmxpYzoKIAogICAgIHVuc2lnbmVkIGRlbGF5VGltZTsgLy8gRGlzcGxheSB0aW1lLCBpbiBt
aWxsaXNlY29uZHMsIGZvciB0aGlzIGltYWdlIGluIGEgbXVsdGktaW1hZ2UgR0lGLgogCi0gICAg
R0lGRnJhbWVDb250ZXh0KCkKLSAgICAgICAgOiBkYXRhc2l6ZSgwKQotICAgICAgICAsIGlwYXNz
KDApCi0gICAgICAgICwgcm93c1JlbWFpbmluZygwKQotICAgICAgICAsIGlyb3coMCkKKyAgICBH
SUZGcmFtZUNvbnRleHQoaW50IGlkKQorICAgICAgICA6IGZyYW1lSWQoaWQpCiAgICAgICAgICwg
eE9mZnNldCgwKQogICAgICAgICAsIHlPZmZzZXQoMCkKICAgICAgICAgLCB3aWR0aCgwKQpAQCAt
MTE0LDU0ICsxODAsNDggQEAgcHVibGljOgogICAgICAgICAsIGRpc3Bvc2FsTWV0aG9kKFdlYkNv
cmU6OkltYWdlRnJhbWU6OkRpc3Bvc2VOb3RTcGVjaWZpZWQpCiAgICAgICAgICwgbG9jYWxDb2xv
cm1hcFBvc2l0aW9uKDApCiAgICAgICAgICwgbG9jYWxDb2xvcm1hcFNpemUoMCkKKyAgICAgICAg
LCBkYXRhc2l6ZSgwKQogICAgICAgICAsIGlzTG9jYWxDb2xvcm1hcERlZmluZWQoZmFsc2UpCiAg
ICAgICAgICwgcHJvZ3Jlc3NpdmVEaXNwbGF5KGZhbHNlKQogICAgICAgICAsIGludGVybGFjZWQo
ZmFsc2UpCiAgICAgICAgICwgaXNUcmFuc3BhcmVudChmYWxzZSkKICAgICAgICAgLCBkZWxheVRp
bWUoMCkKKyAgICAgICAgLCBtX2N1cnJlbnRMendCbG9jaygwKQorICAgICAgICAsIG1faXNDb21w
bGV0ZShmYWxzZSkKKyAgICAgICAgLCBtX2lzSGVhZGVyRGVmaW5lZChmYWxzZSkKKyAgICAgICAg
LCBtX2lzRGF0YVNpemVEZWZpbmVkKGZhbHNlKQogICAgIHsKICAgICB9CiAgICAgCiAgICAgfkdJ
RkZyYW1lQ29udGV4dCgpCiAgICAgewogICAgIH0KLX07CiAKLS8vIExaVyBkZWNvZGVyIHN0YXRl
IG1hY2hpbmUuCi0vLyBGSVhNRTogTWFrZSB0aGlzIGEgY2xhc3MgYW5kIGhpZGUgcHJpdmF0ZSBt
ZW1iZXJzLgotc3RydWN0IEdJRkxaV0NvbnRleHQgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwotcHVibGljOgotICAgIEdJRkxaV0NvbnRleHQoKQotICAgICAgICA6IHN0YWNrcCgwKQot
ICAgICAgICAsIGNvZGVzaXplKDApCi0gICAgICAgICwgY29kZW1hc2soMCkKLSAgICAgICAgLCBj
bGVhckNvZGUoMCkKLSAgICAgICAgLCBhdmFpbCgwKQotICAgICAgICAsIG9sZGNvZGUoMCkKLSAg
ICAgICAgLCBmaXJzdGNoYXIoMCkKLSAgICAgICAgLCBiaXRzKDApCi0gICAgICAgICwgZGF0dW0o
MCkKLSAgICAgICAgLCByb3dQb3NpdGlvbigwKQotICAgIHsgfQorICAgIHZvaWQgYWRkTHp3Qmxv
Y2soc2l6ZV90IHBvc2l0aW9uLCBzaXplX3Qgc2l6ZSkKKyAgICB7CisgICAgICAgIG1fbHp3Qmxv
Y2tzLmFwcGVuZChHSUZMWldCbG9jayhwb3NpdGlvbiwgc2l6ZSkpOworICAgIH0KIAotICAgIGJv
b2wgcHJlcGFyZVRvRGVjb2RlKHVuc2lnbmVkIHJvd1dpZHRoLCBpbnQgZGF0YXNpemUpOworICAg
IGJvb2wgZGVjb2RlKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIFdl
YkNvcmU6OkdJRkltYWdlRGVjb2RlciogY2xpZW50LCBib29sKiBmcmFtZURlY29kZWQpOwogCi0g
ICAgc2l6ZV90IHN0YWNrcDsgLy8gQ3VycmVudCBzdGFjayBwb2ludGVyLgotICAgIGludCBjb2Rl
c2l6ZTsKLSAgICBpbnQgY29kZW1hc2s7Ci0gICAgaW50IGNsZWFyQ29kZTsgLy8gQ29kZXdvcmQg
dXNlZCB0byB0cmlnZ2VyIGRpY3Rpb25hcnkgcmVzZXQuCi0gICAgaW50IGF2YWlsOyAvLyBJbmRl
eCBvZiBuZXh0IGF2YWlsYWJsZSBzbG90IGluIGRpY3Rpb25hcnkuCi0gICAgaW50IG9sZGNvZGU7
Ci0gICAgdW5zaWduZWQgY2hhciBmaXJzdGNoYXI7Ci0gICAgaW50IGJpdHM7IC8vIE51bWJlciBv
ZiB1bnJlYWQgYml0cyBpbiAiZGF0dW0iLgotICAgIGludCBkYXR1bTsgLy8gMzItYml0IGlucHV0
IGJ1ZmZlci4KLSAgICBzaXplX3Qgcm93UG9zaXRpb247CisgICAgYm9vbCBpc0NvbXBsZXRlKCkg
Y29uc3QgeyByZXR1cm4gbV9pc0NvbXBsZXRlOyB9CisgICAgdm9pZCBzZXRDb21wbGV0ZSgpIHsg
bV9pc0NvbXBsZXRlID0gdHJ1ZTsgfQorICAgIGJvb2wgaXNIZWFkZXJEZWZpbmVkKCkgY29uc3Qg
eyByZXR1cm4gbV9pc0hlYWRlckRlZmluZWQ7IH0KKyAgICB2b2lkIHNldEhlYWRlckRlZmluZWQo
KSB7IG1faXNIZWFkZXJEZWZpbmVkID0gdHJ1ZTsgfQorICAgIGJvb2wgaXNEYXRhU2l6ZURlZmlu
ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRGF0YVNpemVEZWZpbmVkOyB9CisgICAgdm9pZCBzZXRE
YXRhU2l6ZShpbnQgc2l6ZSkKKyAgICB7CisgICAgICAgIGRhdGFzaXplID0gc2l6ZTsKKyAgICAg
ICAgbV9pc0RhdGFTaXplRGVmaW5lZCA9IHRydWU7CisgICAgfQogCi0gICAgVmVjdG9yPHVuc2ln
bmVkIHNob3J0PiBwcmVmaXg7Ci0gICAgVmVjdG9yPHVuc2lnbmVkIGNoYXI+IHN1ZmZpeDsKLSAg
ICBWZWN0b3I8dW5zaWduZWQgY2hhcj4gc3RhY2s7Ci0gICAgVmVjdG9yPHVuc2lnbmVkIGNoYXI+
IHJvd0J1ZmZlcjsgLy8gU2luZ2xlIHNjYW5saW5lIHRlbXBvcmFyeSBidWZmZXIuCitwcml2YXRl
OgorICAgIE93blB0cjxHSUZMWldDb250ZXh0PiBtX2x6d0NvbnRleHQ7CisgICAgVmVjdG9yPEdJ
RkxaV0Jsb2NrPiBtX2x6d0Jsb2NrczsgLy8gTFpXIGJsb2NrcyBmb3IgdGhpcyBmcmFtZS4KKyAg
ICBzaXplX3QgbV9jdXJyZW50THp3QmxvY2s7CisgICAgYm9vbCBtX2lzQ29tcGxldGU7CisgICAg
Ym9vbCBtX2lzSGVhZGVyRGVmaW5lZDsKKyAgICBib29sIG1faXNEYXRhU2l6ZURlZmluZWQ7CiB9
OwogCiBjbGFzcyBHSUZJbWFnZVJlYWRlciB7CkBAIC0xNzksMjMgKzIzOSwzMCBAQCBwdWJsaWM6
CiAgICAgICAgICwgbV9pc0dsb2JhbENvbG9ybWFwRGVmaW5lZChmYWxzZSkKICAgICAgICAgLCBt
X2dsb2JhbENvbG9ybWFwUG9zaXRpb24oMCkKICAgICAgICAgLCBtX2dsb2JhbENvbG9ybWFwU2l6
ZSgwKQotICAgICAgICAsIG1faW1hZ2VzRGVjb2RlZCgwKQotICAgICAgICAsIG1faW1hZ2VzQ291
bnQoMCkKICAgICAgICAgLCBtX2xvb3BDb3VudChjTG9vcENvdW50Tm90U2VlbikKLSAgICAgICAg
LCBtX2ZyYW1lQ29udGV4dCgwKQorICAgICAgICAsIG1fY3VycmVudERlY29kaW5nRnJhbWUoMCkK
KyAgICAgICAgLCBtX3BhcnNlRmFpbGVkKGZhbHNlKQorICAgICAgICAsIG1fcGFyc2VDb21wbGV0
ZWQoZmFsc2UpCiAgICAgewogICAgIH0KIAogICAgIH5HSUZJbWFnZVJlYWRlcigpCiAgICAgewot
ICAgICAgICBkZWxldGUgbV9mcmFtZUNvbnRleHQ7Ci0gICAgICAgIG1fZnJhbWVDb250ZXh0ID0g
MDsKICAgICB9CiAKICAgICB2b2lkIHNldERhdGEoUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IGRhdGEpIHsgbV9kYXRhID0gZGF0YTsgfQorICAgIC8vIEZJWE1FOiBoYWx0QXRGcmFt
ZSBzaG91bGQgYmUgc2l6ZV90LgogICAgIGJvb2wgZGVjb2RlKFdlYkNvcmU6OkdJRkltYWdlRGVj
b2Rlcjo6R0lGUXVlcnksIHVuc2lnbmVkIGhhbHRBdEZyYW1lKTsKIAotICAgIGludCBpbWFnZXND
b3VudCgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VzQ291bnQ7IH0KKyAgICBzaXplX3QgaW1hZ2Vz
Q291bnQoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKG1fZnJhbWVzLmlzRW1wdHkoKSkKKyAg
ICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgIC8vIFRoaXMgaXMgYSBzcGVjaWFsIGNhc2Ug
dG8gbWF0Y2ggYmVoYXZpb3Igb2YgcHJldmlvdXMgaW1wbGVtZW50YXRpb24gb2YgR0lGSW1hZ2VS
ZWFkZXIuCisgICAgICAgIC8vIEdJRkNvbnRyb2xFeHRlbnNpb24gYWRkcyBhIG5ldyBmcmFtZSBi
dXQgaXMgbm90IGNvdW50ZWQgdW50aWwgR0lGSW1hZ2VIZWFkZXIgaXMgcmVhY2hlZC4KKyAgICAg
ICAgcmV0dXJuIG1fZnJhbWVzLmxhc3QoKS0+aXNIZWFkZXJEZWZpbmVkKCkgPyBtX2ZyYW1lcy5z
aXplKCkgOiBtX2ZyYW1lcy5zaXplKCkgLSAxOworICAgIH0KICAgICBpbnQgbG9vcENvdW50KCkg
Y29uc3QgeyByZXR1cm4gbV9sb29wQ291bnQ7IH0KIAogICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIq
IGdsb2JhbENvbG9ybWFwKCkgY29uc3QKQEAgLTIxNiwxMiArMjgzLDE1IEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIGZyYW1lLT5pc0xvY2FsQ29sb3JtYXBEZWZpbmVkID8gZnJhbWUtPmxvY2Fs
Q29sb3JtYXBTaXplIDogMDsKICAgICB9CiAKLSAgICBjb25zdCBHSUZGcmFtZUNvbnRleHQqIGZy
YW1lQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVDb250ZXh0OyB9CisgICAgY29uc3Qg
R0lGRnJhbWVDb250ZXh0KiBmcmFtZUNvbnRleHQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fY3VycmVudERlY29kaW5nRnJhbWUgPCBtX2ZyYW1lcy5zaXplKCkgPyBtX2ZyYW1lc1tt
X2N1cnJlbnREZWNvZGluZ0ZyYW1lXS5nZXQoKSA6IDA7CisgICAgfQorCisgICAgYm9vbCBwYXJz
ZUZhaWxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyc2VGYWlsZWQ7IH0KIAogcHJpdmF0ZToKLSAg
ICBib29sIGRlY29kZUludGVybmFsKHNpemVfdCBkYXRhUG9zaXRpb24sIHNpemVfdCBsZW4sIFdl
YkNvcmU6OkdJRkltYWdlRGVjb2Rlcjo6R0lGUXVlcnksIHVuc2lnbmVkIGhhbHRBdEZyYW1lKTsK
LSAgICBib29sIG91dHB1dFJvdygpOwotICAgIGJvb2wgZG9MWlcoY29uc3QgdW5zaWduZWQgY2hh
ciAqLCBzaXplX3QpOworICAgIGJvb2wgcGFyc2Uoc2l6ZV90IGRhdGFQb3NpdGlvbiwgc2l6ZV90
IGxlbiwgYm9vbCBwYXJzZVNpemVPbmx5KTsKICAgICB2b2lkIHNldFJlbWFpbmluZ0J5dGVzKHNp
emVfdCk7CiAKICAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhKHNpemVfdCBkYXRhUG9zaXRp
b24pIGNvbnN0CkBAIC0yMjksNiArMjk5LDEyIEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihtX2RhdGEtPmRhdGEoKSkgKyBk
YXRhUG9zaXRpb247CiAgICAgfQogCisgICAgdm9pZCBhZGRGcmFtZUlmTmVjZXNzYXJ5KCk7Cisg
ICAgYm9vbCBjdXJyZW50RnJhbWVJc0ZpcnN0RnJhbWUoKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIG1fZnJhbWVzLmlzRW1wdHkoKSB8fCAobV9mcmFtZXMuc2l6ZSgpID09IDF1ICYmICFt
X2ZyYW1lc1swXS0+aXNDb21wbGV0ZSgpKTsKKyAgICB9CisKICAgICBXZWJDb3JlOjpHSUZJbWFn
ZURlY29kZXIqIG1fY2xpZW50OwogCiAgICAgLy8gUGFyc2luZyBzdGF0ZSBtYWNoaW5lLgpAQCAt
MjQ0LDE1ICszMjAsMTQgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNHbG9iYWxDb2xvcm1hcERl
ZmluZWQ7CiAgICAgc2l6ZV90IG1fZ2xvYmFsQ29sb3JtYXBQb3NpdGlvbjsgLy8gKDMqIE1BWF9D
T0xPUlMgaW4gc2l6ZSkgRGVmYXVsdCBjb2xvcm1hcCBpZiBsb2NhbCBub3Qgc3VwcGxpZWQsIDMg
Ynl0ZXMgZm9yIGVhY2ggY29sb3IuCiAgICAgaW50IG1fZ2xvYmFsQ29sb3JtYXBTaXplOyAvLyBT
aXplIG9mIGdsb2JhbCBjb2xvcm1hcCBhcnJheS4KLSAgICB1bnNpZ25lZCBtX2ltYWdlc0RlY29k
ZWQ7IC8vIENvdW50cyBjb21wbGV0ZWQgZnJhbWVzIGZvciBhbmltYXRlZCBHSUZzLgotICAgIGlu
dCBtX2ltYWdlc0NvdW50OyAvLyBDb3VudGVkIGFsbCBmcmFtZXMgc2VlbiBzbyBmYXIgKGluY2x1
ZGluZyBpbmNvbXBsZXRlIGZyYW1lcykuCiAgICAgaW50IG1fbG9vcENvdW50OyAvLyBOZXRzY2Fw
ZSBzcGVjaWZpYyBleHRlbnNpb24gYmxvY2sgdG8gY29udHJvbCB0aGUgbnVtYmVyIG9mIGFuaW1h
dGlvbiBsb29wcyBhIEdJRiByZW5kZXJzLgogICAgIAotICAgIEdJRkZyYW1lQ29udGV4dCogbV9m
cmFtZUNvbnRleHQ7Ci0KLSAgICBHSUZMWldDb250ZXh0IG1fbHp3Q29udGV4dDsKKyAgICBWZWN0
b3I8T3duUHRyPEdJRkZyYW1lQ29udGV4dD4gPiBtX2ZyYW1lczsKKyAgICBzaXplX3QgbV9jdXJy
ZW50RGVjb2RpbmdGcmFtZTsKIAogICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1f
ZGF0YTsKKyAgICBib29sIG1fcGFyc2VGYWlsZWQ7CisgICAgYm9vbCBtX3BhcnNlQ29tcGxldGVk
OwogfTsKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0dJRkltYWdlRGVjb2RlclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9H
SUZJbWFnZURlY29kZXJUZXN0LmNwcAppbmRleCBhN2JmNWQ1NTBmNDNiZmY4YmJiMDNiYTY3NmJl
ZTZkOWIzZDlhMTk3Li5iYzZlODExMTU5YzM3ZTkyMjA0ZDIzZmRmYzNhYzdlOGIxYWRmMWEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0dJRkltYWdlRGVjb2RlclRl
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvR0lGSW1hZ2VEZWNvZGVy
VGVzdC5jcHAKQEAgLTQxLDYgKzQxLDggQEAKICNpbmNsdWRlIDxwdWJsaWMvV2ViVW5pdFRlc3RT
dXBwb3J0Lmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3du
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1N0cmluZ0hhc2hlci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0
OwpAQCAtNjYsOSArNjgsMTkgQEAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWFk
RmlsZShjb25zdCBjaGFyKiBmaWxlTmFtZSkKICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjphZG9w
dFZlY3RvcihidWZmZXIpOwogfQogCitzdGF0aWMgUGFzc093blB0cjxHSUZJbWFnZURlY29kZXI+
IGNyZWF0ZURlY29kZXIoKQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcgR0lGSW1hZ2VEZWNv
ZGVyKEltYWdlU291cmNlOjpBbHBoYU5vdFByZW11bHRpcGxpZWQsIEltYWdlU291cmNlOjpHYW1t
YUFuZENvbG9yUHJvZmlsZUFwcGxpZWQpKTsKK30KKworc3RhdGljIHVuc2lnbmVkIGhhc2hTa0Jp
dG1hcChjb25zdCBTa0JpdG1hcCYgYml0bWFwKQoreworICAgIHJldHVybiBTdHJpbmdIYXNoZXI6
Omhhc2hNZW1vcnkoYml0bWFwLmdldFBpeGVscygpLCBiaXRtYXAuZ2V0U2l6ZSgpKTsKK30KKwog
VEVTVChHSUZJbWFnZURlY29kZXJUZXN0LCBkZWNvZGVUd29GcmFtZXMpCiB7Ci0gICAgT3duUHRy
PEdJRkltYWdlRGVjb2Rlcj4gZGVjb2RlcihhZG9wdFB0cihuZXcgR0lGSW1hZ2VEZWNvZGVyKElt
YWdlU291cmNlOjpBbHBoYU5vdFByZW11bHRpcGxpZWQsIEltYWdlU291cmNlOjpHYW1tYUFuZENv
bG9yUHJvZmlsZUFwcGxpZWQpKSk7CisgICAgT3duUHRyPEdJRkltYWdlRGVjb2Rlcj4gZGVjb2Rl
cihjcmVhdGVEZWNvZGVyKCkpOwogCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IHJl
YWRGaWxlKCIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvcmVzb3VyY2VzL2FuaW1hdGVkLmdpZiIp
OwogICAgIEFTU0VSVF9UUlVFKGRhdGEuZ2V0KCkpOwpAQCAtOTEsNyArMTAzLDcgQEAgVEVTVChH
SUZJbWFnZURlY29kZXJUZXN0LCBkZWNvZGVUd29GcmFtZXMpCiAKIFRFU1QoR0lGSW1hZ2VEZWNv
ZGVyVGVzdCwgcGFyc2VBbmREZWNvZGUpCiB7Ci0gICAgT3duUHRyPEdJRkltYWdlRGVjb2Rlcj4g
ZGVjb2RlcihhZG9wdFB0cihuZXcgR0lGSW1hZ2VEZWNvZGVyKEltYWdlU291cmNlOjpBbHBoYU5v
dFByZW11bHRpcGxpZWQsIEltYWdlU291cmNlOjpHYW1tYUFuZENvbG9yUHJvZmlsZUFwcGxpZWQp
KSk7CisgICAgT3duUHRyPEdJRkltYWdlRGVjb2Rlcj4gZGVjb2RlcihjcmVhdGVEZWNvZGVyKCkp
OwogCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IHJlYWRGaWxlKCIvTGF5b3V0VGVz
dHMvZmFzdC9pbWFnZXMvcmVzb3VyY2VzL2FuaW1hdGVkLmdpZiIpOwogICAgIEFTU0VSVF9UUlVF
KGRhdGEuZ2V0KCkpOwpAQCAtMTE1LDcgKzEyNyw3IEBAIFRFU1QoR0lGSW1hZ2VEZWNvZGVyVGVz
dCwgcGFyc2VBbmREZWNvZGUpCiAKIFRFU1QoR0lGSW1hZ2VEZWNvZGVyVGVzdCwgcGFyc2VCeXRl
QnlCeXRlKQogewotICAgIE93blB0cjxHSUZJbWFnZURlY29kZXI+IGRlY29kZXIoYWRvcHRQdHIo
bmV3IEdJRkltYWdlRGVjb2RlcihJbWFnZVNvdXJjZTo6QWxwaGFOb3RQcmVtdWx0aXBsaWVkLCBJ
bWFnZVNvdXJjZTo6R2FtbWFBbmRDb2xvclByb2ZpbGVBcHBsaWVkKSkpOworICAgIE93blB0cjxH
SUZJbWFnZURlY29kZXI+IGRlY29kZXIoY3JlYXRlRGVjb2RlcigpKTsKIAogICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IGRhdGEgPSByZWFkRmlsZSgiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3Jl
c291cmNlcy9hbmltYXRlZC5naWYiKTsKICAgICBBU1NFUlRfVFJVRShkYXRhLmdldCgpKTsKQEAg
LTE0MCw3ICsxNTIsNyBAQCBURVNUKEdJRkltYWdlRGVjb2RlclRlc3QsIHBhcnNlQnl0ZUJ5Qnl0
ZSkKIAogVEVTVChHSUZJbWFnZURlY29kZXJUZXN0LCBwYXJzZUFuZERlY29kZUJ5dGVCeUJ5dGUp
CiB7Ci0gICAgT3duUHRyPEdJRkltYWdlRGVjb2Rlcj4gZGVjb2RlcihhZG9wdFB0cihuZXcgR0lG
SW1hZ2VEZWNvZGVyKEltYWdlU291cmNlOjpBbHBoYU5vdFByZW11bHRpcGxpZWQsIEltYWdlU291
cmNlOjpHYW1tYUFuZENvbG9yUHJvZmlsZUFwcGxpZWQpKSk7CisgICAgT3duUHRyPEdJRkltYWdl
RGVjb2Rlcj4gZGVjb2RlcihjcmVhdGVEZWNvZGVyKCkpOwogCiAgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gZGF0YSA9IHJlYWRGaWxlKCIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvcmVzb3VyY2Vz
L2FuaW1hdGVkLWdpZi13aXRoLW9mZnNldHMuZ2lmIik7CiAgICAgQVNTRVJUX1RSVUUoZGF0YS5n
ZXQoKSk7CkBAIC0xNjksNyArMTgxLDcgQEAgVEVTVChHSUZJbWFnZURlY29kZXJUZXN0LCBwYXJz
ZUFuZERlY29kZUJ5dGVCeUJ5dGUpCiAvLyBTZWNvbmQgZnJhbWUgaW4gdGhlIGZpbGUgaXMgYnJv
a2VuIGJ1dCB0ZXN0IHRoYXQgZmlyc3QgZnJhbWUgY2FuIGJlIGRlY29kZWQuCiBURVNUKEdJRklt
YWdlRGVjb2RlclRlc3QsIGJyb2tlblNlY29uZEZyYW1lKQogewotICAgIE93blB0cjxHSUZJbWFn
ZURlY29kZXI+IGRlY29kZXIoYWRvcHRQdHIobmV3IEdJRkltYWdlRGVjb2RlcihJbWFnZVNvdXJj
ZTo6QWxwaGFOb3RQcmVtdWx0aXBsaWVkLCBJbWFnZVNvdXJjZTo6R2FtbWFBbmRDb2xvclByb2Zp
bGVBcHBsaWVkKSkpOworICAgIE93blB0cjxHSUZJbWFnZURlY29kZXI+IGRlY29kZXIoY3JlYXRl
RGVjb2RlcigpKTsKIAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEgPSByZWFkRmlsZSgi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS9icm9rZW4uZ2lmIik7CiAgICAgQVNT
RVJUX1RSVUUoZGF0YS5nZXQoKSk7CkBAIC0xODcsNiArMTk5LDU1IEBAIFRFU1QoR0lGSW1hZ2VE
ZWNvZGVyVGVzdCwgYnJva2VuU2Vjb25kRnJhbWUpCiAgICAgRVhQRUNUX0VRKGNBbmltYXRpb25M
b29wT25jZSwgZGVjb2Rlci0+cmVwZXRpdGlvbkNvdW50KCkpOwogfQogCitURVNUKEdJRkltYWdl
RGVjb2RlclRlc3QsIHByb2dyZXNzaXZlRGVjb2RlKQoreworICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGZ1bGxEYXRhID0gcmVhZEZpbGUoIi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2Rh
dGEvcmFkaWVudC5naWYiKTsKKyAgICBBU1NFUlRfVFJVRShmdWxsRGF0YS5nZXQoKSk7CisgICAg
Y29uc3Qgc2l6ZV90IGZ1bGxMZW5ndGggPSBmdWxsRGF0YS0+c2l6ZSgpOworCisgICAgT3duUHRy
PEdJRkltYWdlRGVjb2Rlcj4gZGVjb2RlcjsKKyAgICBJbWFnZUZyYW1lKiBmcmFtZTsKKworICAg
IFZlY3Rvcjx1bnNpZ25lZD4gdHJ1bmNhdGVkSGFzaGVzOworICAgIFZlY3Rvcjx1bnNpZ25lZD4g
cHJvZ3Jlc3NpdmVIYXNoZXM7CisKKyAgICAvLyBDb21wdXRlIGhhc2hlcyB3aGVuIHRoZSBmaWxl
IGlzIHRydW5jYXRlZC4KKyAgICBjb25zdCBzaXplX3QgaW5jcmVtZW50ID0gMTsKKyAgICBmb3Ig
KHNpemVfdCBpID0gMTsgaSA8PSBmdWxsTGVuZ3RoOyBpICs9IGluY3JlbWVudCkgeworICAgICAg
ICBkZWNvZGVyID0gY3JlYXRlRGVjb2RlcigpOworICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZnVsbERhdGEtPmRhdGEoKSwgaSk7CisgICAg
ICAgIGRlY29kZXItPnNldERhdGEoZGF0YS5nZXQoKSwgaSA9PSBmdWxsTGVuZ3RoKTsKKyAgICAg
ICAgZnJhbWUgPSBkZWNvZGVyLT5mcmFtZUJ1ZmZlckF0SW5kZXgoMCk7CisgICAgICAgIGlmICgh
ZnJhbWUpIHsKKyAgICAgICAgICAgIHRydW5jYXRlZEhhc2hlcy5hcHBlbmQoMCk7CisgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICB0cnVuY2F0ZWRIYXNoZXMuYXBwZW5k
KGhhc2hTa0JpdG1hcChmcmFtZS0+Z2V0U2tCaXRtYXAoKSkpOworICAgIH0KKworICAgIC8vIENv
bXB1dGUgaGFzaGVzIHdoZW4gdGhlIGZpbGUgaXMgcHJvZ3Jlc3NpdmVseSBkZWNvZGVkLgorICAg
IGRlY29kZXIgPSBjcmVhdGVEZWNvZGVyKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDE7IGkgPD0g
ZnVsbExlbmd0aDsgaSArPSBpbmNyZW1lbnQpIHsKKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGZ1bGxEYXRhLT5kYXRhKCksIGkpOworICAg
ICAgICBkZWNvZGVyLT5zZXREYXRhKGRhdGEuZ2V0KCksIGkgPT0gZnVsbExlbmd0aCk7CisgICAg
ICAgIGZyYW1lID0gZGVjb2Rlci0+ZnJhbWVCdWZmZXJBdEluZGV4KDApOworICAgICAgICBpZiAo
IWZyYW1lKSB7CisgICAgICAgICAgICBwcm9ncmVzc2l2ZUhhc2hlcy5hcHBlbmQoMCk7CisgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBwcm9ncmVzc2l2ZUhhc2hlcy5h
cHBlbmQoaGFzaFNrQml0bWFwKGZyYW1lLT5nZXRTa0JpdG1hcCgpKSk7CisgICAgfQorCisgICAg
Ym9vbCBtYXRjaCA9IHRydWU7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0cnVuY2F0ZWRI
YXNoZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKHRydW5jYXRlZEhhc2hlc1tpXSAhPSBw
cm9ncmVzc2l2ZUhhc2hlc1tpXSkgeworICAgICAgICAgICAgbWF0Y2ggPSBmYWxzZTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIEVYUEVDVF9UUlVFKG1hdGNoKTsK
K30KKwogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL2RhdGEvcmFkaWVudC5naWYgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL2RhdGEvcmFkaWVudC5naWYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTJkZTI4NmViYmU1ZDk1M2RkNGEy
MGU2ODlkOTIzMGIyOTlhM2Q1YwpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMTAzNAp6Y21kNmt7
Wm8/IzBMUS1ySFU/fWstZjBBR2JBdHRqPzFwUjUpN1R5ISN2fFojY3FGfEB0UFQjWTdiJiFgRnQt
NlIKelVaZlclOTlNVilAZ08+MnBtXlljWmV4JVUxKENkRG5WXntAVTFBaWNiJSZrKDZAN21Be1FT
QjVXYkQpYGxNTW4wCnp1bVAtdGF8YD8qdjJfa3soP31kZ2lVWC1iJFFWUnNLWGtwJmNPJG4wRlNI
XjVRQHFsSTUtVlEpMnlabD90UFkyYwp6O2N6Nz9PbkNuJmo3TU84MmJNQjR5b3RzR2AwI2FuVCNW
KS13N2lUfjE1V0tuYC0/YzhodDNAST0rVjB5X0ZXanIKeiNOYll4UHNmRWNqRjE+cjxJKiM1NWcx
RnhnYzRzUTtWVCl3TnlQTSVuMnBEa0NvbXNfQDVUNSpnbGpfbEIqNjcoCnpFSnh1NkFHZ0E+NXs2
JHhhVkc/O0pscVl5OFcoQH47WkktdTwlMTB0OXgoQVkxRG43QHtRblI+QGNKKW0rYW9gRQp6MGBF
PHUmUmtobGVYUGIobFNPTl82bV5gPXM8ckI5aXF4bzcxZmtNc05HKk1gSSFqQmNRamBpc1FlUkpz
c3tPPjcKej01Qj50d21vNHFWWV5KTzdAI189RylXQVAjN1FPNzVeM0JlN2VQK2NUJU1GQyM3Vj49
O1RFQSNCPnB5R1psUjh2CnpsKk0xYTVmI2JqTUBCXnBaXnozTl5NaDVFYDtMM1BSaEVGTHF5bD9e
JDt7K3pzRDcoQWpkPSZ8QkBkU1ZeTlljZwp6PHJeZC0lNlM/T3JYYHhQKFZifipiKiMyeHZBb1Vm
dUhsQm81VCFGbE1rVUslbDxseDwrVXZwPDYlbWh9NldgPk4KejN5Q3xnKiMhJl9GUHxfKFRAWF5X
cTRNWUYkKUt1JlQ+PDxVc0BTJDxHPGo/P0lnanN8U3o8N2AoUjd6QiFrc3RPCnpCQmMmRzFXdT5m
bGdae3BzQkkxdChfZFYkVmhqMiNNPFhqNGtfT0pYdTZuVzlZJks1fmhObG1vdmQ7ezx7ckp0VAp6
Pj8+MnhSYVNkKmNwKHV5eno5IVlMRHpjPXBaaElfN3B+aW10aVMjSHdiNyZBeUIkbDYpY3tIM0ko
X1BKKzNvNEoKempBbThxeU42YjlfQ0xKSENXaDlRLVN2XkZqbH1SPHZ1QnpuQ3pQTDxUdnlLQDd+
aXBQZXtnWEAkVihHUjw2fk9BCnpBdSVfMVV0empIcEtwQFAzcF5NXyFNYz10S0xfcyM7MXReT28w
ZW5nejVIUWJVZEVRezVOQ1olO0tfd2RMcilyPQp6P2QzZGNWRU81bmN2TzFyVDQ7S0k7SCkrS3VC
fTgodlpKVFlJIzFrUmskMHEwQlN7djghYWVpI1FfQl5Kam1lVmkKej8+XllFN30zdTRteWcmPGAz
IWExPD1lTmNFfE9lY0JGN1JnaikyMSpvNjBFP2IjQEc3I2BtcSZSJkcwSUNEfmhCCmFOP288Rlo0
Sz5ScTZWZU1tKHBpLS02Ykx1QGJ0ZipxZSZBMAoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>