<?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>66226</bug_id>
          
          <creation_ts>2011-08-15 07:44:59 -0700</creation_ts>
          <short_desc>Chromium Mac: Rubber banding gutter drawing</short_desc>
          <delta_ts>2011-08-16 13:01:37 -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>Mac</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter>asvitkine</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bdakin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>jam</cc>
    
    <cc>mark</cc>
    
    <cc>mihaip</cc>
    
    <cc>sail</cc>
    
    <cc>thakis</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>451067</commentid>
    <comment_count>0</comment_count>
    <who name="">asvitkine</who>
    <bug_when>2011-08-15 07:44:59 -0700</bug_when>
    <thetext>This bug is to track the work to do the rubber banding gutter drawing in Webkit on Chromium Mac.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451068</commentid>
    <comment_count>1</comment_count>
      <attachid>103914</attachid>
    <who name="">asvitkine</who>
    <bug_when>2011-08-15 07:53:27 -0700</bug_when>
    <thetext>Created attachment 103914
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451083</commentid>
    <comment_count>2</comment_count>
      <attachid>103914</attachid>
    <who name="Sailesh Agrawal">sail</who>
    <bug_when>2011-08-15 08:57:47 -0700</bug_when>
    <thetext>Comment on attachment 103914
Patch

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

&gt; Source/WebCore/platform/chromium/ScrollbarThemeChromiumMac.h:-77
&gt; -    void preferencesChanged();

I think moving this up makes sense but it&apos;s probably better not to do these kind of changes until ScrollbarThemeChromiumMac.* and ScrollbarThemeMac.* are merged back together (hopefully soon).
Alternatively, you could make this change in both files.

&gt; Source/WebCore/platform/chromium/ScrollbarThemeChromiumMac.mm:202
&gt; +                NSData* tiffData =  [image TIFFRepresentation];

I don&apos;t think this is a good way convert to CGImage. It&apos;s much better to create a CGBitmap and draw into it.

Also, if all you need to do is fill a rect with a patter than you don&apos;t even need a CGImage. You can use the NSImage directly. See LocalCurrentGraphicsContext.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451159</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-15 11:15:59 -0700</bug_when>
    <thetext>Attachment 103914 did not pass style-queue:

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

Source/WebCore/ChangeLog:6:  Line contains tab character.  [whitespace/tab] [5]
Source/WebCore/ChangeLog:7:  Line contains tab character.  [whitespace/tab] [5]
Source/WebCore/ChangeLog:8:  Line contains tab character.  [whitespace/tab] [5]
Total errors found: 3 in 7 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>451167</commentid>
    <comment_count>4</comment_count>
    <who name="Nico Weber">thakis</who>
    <bug_when>2011-08-15 11:25:52 -0700</bug_when>
    <thetext>Do you know where WebKit2 does this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451170</commentid>
    <comment_count>5</comment_count>
    <who name="">asvitkine</who>
    <bug_when>2011-08-15 11:29:48 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Do you know where WebKit2 does this?

In ScrollView::paintOverhangAreas().

In the public source, it paints it white - which you can confirm by playing with MiniBrowser.

My patch makes ScrollView::paintOverhangAreas() delegate the painting to the native ScrollBarTheme, which can then vary by platform.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451198</commentid>
    <comment_count>6</comment_count>
    <who name="">asvitkine</who>
    <bug_when>2011-08-15 12:08:47 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 103914 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=103914&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/chromium/ScrollbarThemeChromiumMac.h:-77
&gt; &gt; -    void preferencesChanged();
&gt; 
&gt; I think moving this up makes sense but it&apos;s probably better not to do these kind of changes until ScrollbarThemeChromiumMac.* and ScrollbarThemeMac.* are merged back together (hopefully soon).
&gt; Alternatively, you could make this change in both files.
&gt; 
&gt; &gt; Source/WebCore/platform/chromium/ScrollbarThemeChromiumMac.mm:202
&gt; &gt; +                NSData* tiffData =  [image TIFFRepresentation];
&gt; 
&gt; I don&apos;t think this is a good way convert to CGImage. It&apos;s much better to create a CGBitmap and draw into it.

Doing it the way you suggest requires more code and appears to be slower in this case (perhaps the TIFFRepresentation data is already available for this image).

The CGBitmap code consistently takes 6ms to execute compared to the TIFFRepresentation path, which takes 5ms consistently.

FWIW, I tried it using this code:

http://codesearch.google.com/#OAMlx_jo-ck/src/base/mac/mac_util.mm&amp;exact_package=chromium&amp;q=CopyNSImageToCGImage&amp;type=cs&amp;l=382

&gt; 
&gt; Also, if all you need to do is fill a rect with a patter than you don&apos;t even need a CGImage. You can use the NSImage directly. See LocalCurrentGraphicsContext.

The current code has the advantage that the drawing code is not Mac specific - so for example it could be easily re-used for other platforms if desired (they just need to provide a different Pattern).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451200</commentid>
    <comment_count>7</comment_count>
      <attachid>103939</attachid>
    <who name="">asvitkine</who>
    <bug_when>2011-08-15 12:10:19 -0700</bug_when>
    <thetext>Created attachment 103939
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451201</commentid>
    <comment_count>8</comment_count>
    <who name="">asvitkine</who>
    <bug_when>2011-08-15 12:10:43 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 103914 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=103914&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/chromium/ScrollbarThemeChromiumMac.h:-77
&gt; &gt; -    void preferencesChanged();
&gt; 
&gt; I think moving this up makes sense but it&apos;s probably better not to do these kind of changes until ScrollbarThemeChromiumMac.* and ScrollbarThemeMac.* are merged back together (hopefully soon).
&gt; Alternatively, you could make this change in both files.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451203</commentid>
    <comment_count>9</comment_count>
      <attachid>103939</attachid>
    <who name="Nico Weber">thakis</who>
    <bug_when>2011-08-15 12:17:36 -0700</bug_when>
    <thetext>Comment on attachment 103939
Patch

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

Looks pretty good overall!

&gt; Source/WebCore/platform/chromium/ScrollbarThemeChromiumMac.mm:684
&gt; +    const unsigned kNumShadowColors = sizeof(kShadowColors)/sizeof(kShadowColors[0]);

WTF_ARRAY_LENGTH

&gt; Source/WebCore/platform/chromium/ScrollbarThemeChromiumMac.mm:712
&gt; +            gradient = Gradient::create(FloatPoint(0, shadowRect.maxY()), FloatPoint(0, shadowRect.y()));

Is there any point in caching the gradients? (Do other client usually do this?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451205</commentid>
    <comment_count>10</comment_count>
    <who name="Nico Weber">thakis</who>
    <bug_when>2011-08-15 12:20:09 -0700</bug_when>
    <thetext>bdakin, this shouldn&apos;t cause problems for Safari, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451213</commentid>
    <comment_count>11</comment_count>
      <attachid>103942</attachid>
    <who name="">asvitkine</who>
    <bug_when>2011-08-15 12:26:59 -0700</bug_when>
    <thetext>Created attachment 103942
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451220</commentid>
    <comment_count>12</comment_count>
    <who name="">asvitkine</who>
    <bug_when>2011-08-15 12:33:12 -0700</bug_when>
    <thetext>&gt; &gt; Source/WebCore/platform/chromium/ScrollbarThemeChromiumMac.mm:684
&gt; &gt; +    const unsigned kNumShadowColors = sizeof(kShadowColors)/sizeof(kShadowColors[0]);
&gt; 
&gt; WTF_ARRAY_LENGTH

Thanks! Done.

&gt; &gt; Source/WebCore/platform/chromium/ScrollbarThemeChromiumMac.mm:712
&gt; &gt; +            gradient = Gradient::create(FloatPoint(0, shadowRect.maxY()), FloatPoint(0, shadowRect.y()));
&gt; 
&gt; Is there any point in caching the gradients? (Do other client usually do this?)

I&apos;m not sure we can, since the gradient properties are dynamic.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451246</commentid>
    <comment_count>13</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2011-08-15 13:16:50 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; bdakin, this shouldn&apos;t cause problems for Safari, right?

I don&apos;t think it will. Looks okay.

For what it&apos;s worth, I am not crazy about the idea of moving paintOverhangAreas() to ScrollbarTheme. The behavior happened to be introduced in concert with a new scrollbar theme on Lion, but it strikes me as a view-level concept and not something necessarily inherently tied to the ScrollbarTheme.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451269</commentid>
    <comment_count>14</comment_count>
    <who name="">asvitkine</who>
    <bug_when>2011-08-15 14:08:36 -0700</bug_when>
    <thetext>&gt; For what it&apos;s worth, I am not crazy about the idea of moving paintOverhangAreas() to ScrollbarTheme. The behavior happened to be introduced in concert with a new scrollbar theme on Lion, but it strikes me as a view-level concept and not something necessarily inherently tied to the ScrollbarTheme.

Do you have a suggestion for a better place for this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451643</commentid>
    <comment_count>15</comment_count>
    <who name="">asvitkine</who>
    <bug_when>2011-08-16 08:48:41 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; &gt; For what it&apos;s worth, I am not crazy about the idea of moving paintOverhangAreas() to ScrollbarTheme. The behavior happened to be introduced in concert with a new scrollbar theme on Lion, but it strikes me as a view-level concept and not something necessarily inherently tied to the ScrollbarTheme.
&gt; 
&gt; Do you have a suggestion for a better place for this?

If not, is there anything else I need to address before this can be approved?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451644</commentid>
    <comment_count>16</comment_count>
    <who name="Nico Weber">thakis</who>
    <bug_when>2011-08-16 08:51:17 -0700</bug_when>
    <thetext>I think this looks good. cc&apos;d reviewers (mihaip, dglazkov; bdakin is probably not comfortable r+ing webkit/chromium code :-) ): can you do the honors?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451669</commentid>
    <comment_count>17</comment_count>
      <attachid>103942</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-16 09:34:18 -0700</bug_when>
    <thetext>Comment on attachment 103942
Patch

Clearing flags on attachment: 103942

Committed r93114: &lt;http://trac.webkit.org/changeset/93114&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451670</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-16 09:34:23 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451693</commentid>
    <comment_count>19</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-08-16 09:57:51 -0700</bug_when>
    <thetext>Reverted r93114 for reason:

broke

Committed r93120: &lt;http://trac.webkit.org/changeset/93120&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451699</commentid>
    <comment_count>20</comment_count>
    <who name="">asvitkine</who>
    <bug_when>2011-08-16 10:02:21 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; Reverted r93114 for reason:
&gt; 
&gt; broke
&gt; 
&gt; Committed r93120: &lt;http://trac.webkit.org/changeset/93120&gt;

Link to build failure:

http://build.webkit.org/builders/Chromium%20Mac%20Release/builds/27832/steps/compile-webkit/logs/stdio</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451719</commentid>
    <comment_count>21</comment_count>
      <attachid>104065</attachid>
    <who name="">asvitkine</who>
    <bug_when>2011-08-16 10:25:39 -0700</bug_when>
    <thetext>Created attachment 104065
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451723</commentid>
    <comment_count>22</comment_count>
    <who name="">asvitkine</who>
    <bug_when>2011-08-16 10:27:53 -0700</bug_when>
    <thetext>Apparently WTF_ARRAY_LENGTH() doesn&apos;t work for arrays of structs declared within the function.

I&apos;ve reverted to the patch to not use WTF_ARRAY_LENGTH().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451730</commentid>
    <comment_count>23</comment_count>
      <attachid>104065</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-16 10:43:28 -0700</bug_when>
    <thetext>Comment on attachment 104065
Patch

Rejecting attachment 104065 from commit-queue.

asvitkine@chromium.org does not have committer permissions according to http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/common/config/committers.py.

- If you do not have committer rights please read http://webkit.org/coding/contributing.html for instructions on how to use bugzilla flags.

- If you have committer rights please correct the error in Tools/Scripts/webkitpy/common/config/committers.py by adding yourself to the file (no review needed).  The commit-queue restarts itself every 2 hours.  After restart the commit-queue will correctly respect your committer rights.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451782</commentid>
    <comment_count>24</comment_count>
      <attachid>104065</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-16 11:45:48 -0700</bug_when>
    <thetext>Comment on attachment 104065
Patch

Clearing flags on attachment: 104065

Committed r93136: &lt;http://trac.webkit.org/changeset/93136&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451783</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-16 11:45:54 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451807</commentid>
    <comment_count>26</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-08-16 12:58:32 -0700</bug_when>
    <thetext>Is it possible that this regressed
  fast/repaint/background-scaling.html
  fast/repaint/scale-page-shrink.html
?

http://test-results.appspot.com/dashboards/flakiness_dashboard.html#showExpectations=true&amp;tests=fast%2Frepaint%2Fbackground-scaling.html%2Cfast%2Frepaint%2Fscale-page-shrink.html

It looks like we&apos;re not repainting when we should?  Or maybe I&apos;m reading the results incorrectly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451808</commentid>
    <comment_count>27</comment_count>
    <who name="">asvitkine</who>
    <bug_when>2011-08-16 13:01:37 -0700</bug_when>
    <thetext>I don&apos;t see how it could have affected them in any way.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103914</attachid>
            <date>2011-08-15 07:53:27 -0700</date>
            <delta_ts>2011-08-15 12:10:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66226-20110815105325.patch</filename>
            <type>text/plain</type>
            <size>13714</size>
            <attacher>asvitkine</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkzMDQyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEtMDgtMTUgIEFsZXhlaSBT
dml0a2luZSAgPGFzdml0a2luZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ2hyb21pdW0gTWFj
OiBSdWJiZXIgYmFuZGluZyBndXR0ZXIgZHJhd2luZworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjYyMjYKKworCU1ha2UgU2Nyb2xsVmlldzo6cGFpbnRP
dmVyaGFuZ0FyZWFzKCkgdXNlIHRoZSBTY3JvbGxiYXJUaGVtZTo6bmF0aXZlVGhlbWUoKSB0byBk
cmF3IHRoZSBvdmVyaGFuZworCWFyZWFzLiBNb3ZlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gdG8g
U2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnBhaW50T3ZlcmhhbmdBcmVhcygpLiBBZGQgYSBkaWZm
ZXJlbnQKKwlpbXBsZW1lbnRhdGlvbiBmb3IgQ2hyb21pdW0gTWFjLgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBzaW5jZSB0aGlz
IGlzIGp1c3QgcmVmYWN0b3JpbmcgY29kZSBhbmQgYWRkaW5nIGEgQ2hyb21pdW0tc3BlY2lmaWMg
cGF0aCBmb3Igb3ZlcmhhbmcgZHJhd2luZy4KKworICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZp
ZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6d2hlZWxFdmVudCk6CisgICAg
ICAgICogcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGJhclRoZW1lOjpwYWludE92ZXJoYW5nQXJlYXMpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9s
bGJhclRoZW1lQ29tcG9zaXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1l
Q29tcG9zaXRlOjpwYWludE92ZXJoYW5nQXJlYXMpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9s
bGJhclRoZW1lQ29tcG9zaXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bU1hYy5oOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Njcm9s
bGJhclRoZW1lQ2hyb21pdW1NYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVt
ZUNocm9taXVtTWFjOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjKToKKyAgICAgICAgKFdlYkNv
cmU6OnNjcm9sbGJhclN0YXRlVG9UaGVtZVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGJhclRoZW1lQ2hyb21pdW1NYWM6OnBhaW50VGlja21hcmtzKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnBhaW50T3ZlcmhhbmdBcmVhcyk6CisKIDIwMTEt
MDgtMTUgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBnb29nbGUuY29tPgogCiAgICAgICAgIFdl
YiBJbnNwZWN0b3I6IFtWOF0gY3Jhc2ggdXBvbiBzdGVwSW4gd2hpbGUgbm90IG9uIHBhdXNlLgpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAJKHJldmlzaW9uIDkzMDQw
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEwODYsMTcgKzEwODYsOSBAQCB2b2lkIFNjcm9sbFZpZXc6OmNhbGN1bGF0ZU92ZXJo
YW5nQXJlYXNGCiAgICAgfQogfQogCi12b2lkIFNjcm9sbFZpZXc6OnBhaW50T3ZlcmhhbmdBcmVh
cyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGhvcml6b250YWxPdmVy
aGFuZ1JlY3QsIGNvbnN0IEludFJlY3QmIHZlcnRpY2FsT3ZlcmhhbmdSZWN0LCBjb25zdCBJbnRS
ZWN0JikKK3ZvaWQgU2Nyb2xsVmlldzo6cGFpbnRPdmVyaGFuZ0FyZWFzKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgaG9yaXpvbnRhbE92ZXJoYW5nUmVjdCwgY29uc3Qg
SW50UmVjdCYgdmVydGljYWxPdmVyaGFuZ1JlY3QsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkK
IHsKLSAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgY2hlY2tpbmcgdGhlIGRpcnR5IHJlY3Qu
Ci0KLSAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3I6OndoaXRlLCBDb2xvclNwYWNlRGV2
aWNlUkdCKTsKLSAgICBpZiAoIWhvcml6b250YWxPdmVyaGFuZ1JlY3QuaXNFbXB0eSgpKQotICAg
ICAgICBjb250ZXh0LT5maWxsUmVjdChob3Jpem9udGFsT3ZlcmhhbmdSZWN0KTsKLQotICAgIGNv
bnRleHQtPnNldEZpbGxDb2xvcihDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwot
ICAgIGlmICghdmVydGljYWxPdmVyaGFuZ1JlY3QuaXNFbXB0eSgpKQotICAgICAgICBjb250ZXh0
LT5maWxsUmVjdCh2ZXJ0aWNhbE92ZXJoYW5nUmVjdCk7CisgICAgU2Nyb2xsYmFyVGhlbWU6Om5h
dGl2ZVRoZW1lKCktPnBhaW50T3ZlcmhhbmdBcmVhcyh0aGlzLCBjb250ZXh0LCBob3Jpem9udGFs
T3ZlcmhhbmdSZWN0LCB2ZXJ0aWNhbE92ZXJoYW5nUmVjdCwgZGlydHlSZWN0KTsKIH0KIAogYm9v
bCBTY3JvbGxWaWV3Ojppc1BvaW50SW5TY3JvbGxiYXJDb3JuZXIoY29uc3QgSW50UG9pbnQmIHdp
bmRvd1BvaW50KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZS5o
CShyZXZpc2lvbiA5MzA0MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRo
ZW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDYgKzgyLDggQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBwYWludFNjcm9sbENvcm5lcihTY3JvbGxWaWV3KiwgR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KSB7IGRlZmF1bHRQYWludFNjcm9sbENv
cm5lcihjb250ZXh0LCBjb3JuZXJSZWN0KTsgfQogICAgIHN0YXRpYyB2b2lkIGRlZmF1bHRQYWlu
dFNjcm9sbENvcm5lcihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGNv
cm5lclJlY3QpIHsgY29udGV4dC0+ZmlsbFJlY3QoY29ybmVyUmVjdCwgQ29sb3I6OndoaXRlLCBD
b2xvclNwYWNlRGV2aWNlUkdCKTsgfQogCisgICAgdmlydHVhbCB2b2lkIHBhaW50T3ZlcmhhbmdB
cmVhcyhTY3JvbGxWaWV3KiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYsIGNvbnN0
IEludFJlY3QmLCBjb25zdCBJbnRSZWN0JikgeyB9CisKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxk
Q2VudGVyT25UaHVtYihTY3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKSB7IHJl
dHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTbmFwQmFja1RvRHJhZ09yaWdp
bihTY3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKSB7IHJldHVybiBmYWxzZTsg
fQogICAgIHZpcnR1YWwgYm9vbCBzaG91bGREcmFnRG9jdW1lbnRJbnN0ZWFkT2ZUaHVtYihTY3Jv
bGxiYXIqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKSB7IHJldHVybiBmYWxzZTsgfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9z
aXRlLmNwcAkocmV2aXNpb24gOTMwNDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxiYXJUaGVtZUNvbXBvc2l0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxNSw0ICszMTUsMTUg
QEAgdm9pZCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6cGFpbnRTY3JvbAogICAgIGNvbnRleHQt
PmZpbGxSZWN0KGNvcm5lclJlY3QsIENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQik7
CiB9CiAKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnBhaW50T3ZlcmhhbmdBcmVhcyhT
Y3JvbGxWaWV3KiwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBob3Jp
em9udGFsT3ZlcmhhbmdSZWN0LCBjb25zdCBJbnRSZWN0JiB2ZXJ0aWNhbE92ZXJoYW5nUmVjdCwg
Y29uc3QgSW50UmVjdCYgZGlydHlSZWN0KQoreyAgICAKKyAgICBjb250ZXh0LT5zZXRGaWxsQ29s
b3IoQ29sb3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBpZiAoIWhvcml6b250
YWxPdmVyaGFuZ1JlY3QuaXNFbXB0eSgpKQorICAgICAgICBjb250ZXh0LT5maWxsUmVjdChpbnRl
cnNlY3Rpb24oaG9yaXpvbnRhbE92ZXJoYW5nUmVjdCwgZGlydHlSZWN0KSk7CisKKyAgICBjb250
ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAg
ICBpZiAoIXZlcnRpY2FsT3ZlcmhhbmdSZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgY29udGV4dC0+
ZmlsbFJlY3QoaW50ZXJzZWN0aW9uKHZlcnRpY2FsT3ZlcmhhbmdSZWN0LCBkaXJ0eVJlY3QpKTsK
K30KKwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21w
b3NpdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJU
aGVtZUNvbXBvc2l0ZS5oCShyZXZpc2lvbiA5MzA0MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgaW50IHRyYWNrTGVuZ3RoKFNjcm9sbGJhciopOwog
CiAgICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsQ29ybmVyKFNjcm9sbFZpZXcqLCBHcmFwaGlj
c0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KTsKKyAgICB2aXJ0dWFsIHZvaWQg
cGFpbnRPdmVyaGFuZ0FyZWFzKFNjcm9sbFZpZXcqLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJ
bnRSZWN0JiBob3Jpem9udGFsT3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0JiB2ZXJ0aWNhbE92
ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KTsKIAogcHJvdGVjdGVkOgogICAg
IHZpcnR1YWwgYm9vbCBoYXNCdXR0b25zKFNjcm9sbGJhciopID0gMDsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVt
ZUNocm9taXVtTWFjLmgJKHJldmlzaW9uIDkzMDQwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5oCSh3b3JraW5nIGNvcHkpCkBA
IC00MCw2ICs0MCw4IEBAIHB1YmxpYzoKICAgICBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjKCk7
CiAgICAgdmlydHVhbCB+U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYygpOwogCisgICAgdm9pZCBw
cmVmZXJlbmNlc0NoYW5nZWQoKTsKKyAgICAKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnQoU2Nyb2xs
YmFyKiwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0
KTsKIAogICAgIHZpcnR1YWwgaW50IHNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250cm9s
U2l6ZSA9IFJlZ3VsYXJTY3JvbGxiYXIpOwpAQCAtNTgsNiArNjAsOCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXROZXdQYWludGVyRm9yU2Nyb2xsYmFyKFNjcm9sbGJhciosIFdLU2Nyb2xsYmFyUGFp
bnRlclJlZik7CiAgICAgV0tTY3JvbGxiYXJQYWludGVyUmVmIHBhaW50ZXJGb3JTY3JvbGxiYXIo
U2Nyb2xsYmFyKik7CiAKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRPdmVyaGFuZ0FyZWFzKFNjcm9s
bFZpZXcqLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiBob3Jpem9udGFsT3Zlcmhh
bmdBcmVhLCBjb25zdCBJbnRSZWN0JiB2ZXJ0aWNhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVj
dCYgZGlydHlSZWN0KTsKKyAgICAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIGJvb2wgaGFzQnV0
dG9ucyhTY3JvbGxiYXIqKTsKICAgICB2aXJ0dWFsIGJvb2wgaGFzVGh1bWIoU2Nyb2xsYmFyKik7
CkBAIC03Myw4ICs3Nyw4IEBAIHByb3RlY3RlZDoKIAogICAgIHZpcnR1YWwgdm9pZCBwYWludFRp
Y2ttYXJrcyhHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jik7CiAK
LXB1YmxpYzoKLSAgICB2b2lkIHByZWZlcmVuY2VzQ2hhbmdlZCgpOworcHJpdmF0ZToKKyAgICBS
ZWZQdHI8UGF0dGVybj4gbV9vdmVyaGFuZ1BhdHRlcm47CiB9OwogCiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRo
ZW1lQ2hyb21pdW1NYWMubW0JKHJldmlzaW9uIDkzMDQwKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5tbQkod29ya2luZyBjb3B5
KQpAQCAtMjcsNyArMjcsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNjcm9s
bGJhclRoZW1lQ2hyb21pdW1NYWMuaCIKIAorI2luY2x1ZGUgIkJpdG1hcEltYWdlLmgiCiAjaW5j
bHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiR3JhZGllbnQuaCIKICNpbmNsdWRlICJJbWFn
ZUJ1ZmZlci5oIgogI2luY2x1ZGUgIkxvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIlBsYXRmb3JtQnJpZGdlLmgiCkBAIC00NCw2ICs0NiwxMyBAQAogI2luY2x1ZGUgInNr
aWEvZXh0L3NraWFfdXRpbHNfbWFjLmgiCiAjZW5kaWYKIAorCisvLyBVbmRvY3VtZW50ZWQgTGlv
biBtZXRob2QgdG8gZ2V0IHRoZSBwYXR0ZXJuIGZvciB0aGUgb3Zlci1zY3JvbGwgYXJlYS4KK0Bp
bnRlcmZhY2UgTlNDb2xvciAoTGlvblNla3JldEFQSSkKKysgKE5TSW1hZ2UqKV9saW5lblBhdHRl
cm5JbWFnZTsKK0BlbmQKKworCiAvLyBGSVhNRTogVGhlcmUgYXJlIHJlcGFpbnRpbmcgcHJvYmxl
bXMgZHVlIHRvIEFxdWEgc2Nyb2xsIGJhciBidXR0b25zJyB2aXN1YWwgb3ZlcmZsb3cuCiAKIHVz
aW5nIG5hbWVzcGFjZSBzdGQ7CkBAIC0xODUsNiArMTk0LDIxIEBAIFNjcm9sbGJhclRoZW1lQ2hy
b21pdW1NYWM6OlNjcm9sbGJhclRoZW0KICAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZDsKICAg
ICBpZiAoIWluaXRpYWxpemVkKSB7CiAgICAgICAgIGluaXRpYWxpemVkID0gdHJ1ZTsKKworICAg
ICAgICAvLyBMb2FkIHRoZSBsaW5lbiBwYXR0ZXJuIGltYWdlIHVzZWQgZm9yIG92ZXJoYW5nIGRy
YXdpbmcgaWYgYXZhaWxhYmxlLgorICAgICAgICBpZiAoW05TQ29sb3IgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3RvcihfbGluZW5QYXR0ZXJuSW1hZ2UpXSkgeworICAgICAgICAgICAgTlNJbWFn
ZSogaW1hZ2UgPSBbTlNDb2xvciBfbGluZW5QYXR0ZXJuSW1hZ2VdOworICAgICAgICAgICAgaWYg
KGltYWdlKSB7CisgICAgICAgICAgICAgICAgTlNEYXRhKiB0aWZmRGF0YSA9ICBbaW1hZ2UgVElG
RlJlcHJlc2VudGF0aW9uXTsKKyAgICAgICAgICAgICAgICBpZiAodGlmZkRhdGEpIHsKKyAgICAg
ICAgICAgICAgICAgICAgQ0dJbWFnZVNvdXJjZVJlZiBpbWFnZVNvdXJjZSA9IENHSW1hZ2VTb3Vy
Y2VDcmVhdGVXaXRoRGF0YSgoQ0ZEYXRhUmVmKXRpZmZEYXRhLCBOVUxMKTsKKyAgICAgICAgICAg
ICAgICAgICAgQ0dJbWFnZVJlZiBjZ0ltYWdlID0gQ0dJbWFnZVNvdXJjZUNyZWF0ZUltYWdlQXRJ
bmRleChpbWFnZVNvdXJjZSwgMCwgTlVMTCk7CisgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxJ
bWFnZT4gcGF0dGVybkltYWdlID0gQml0bWFwSW1hZ2U6OmNyZWF0ZShjZ0ltYWdlKTsKKyAgICAg
ICAgICAgICAgICAgICAgbV9vdmVyaGFuZ1BhdHRlcm4gPSBQYXR0ZXJuOjpjcmVhdGUocGF0dGVy
bkltYWdlLCB0cnVlLCB0cnVlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKwogICAgICAgICBbU2Nyb2xsYmFyUHJlZnNPYnNlcnZlciByZWdpc3RlckFzT2Jz
ZXJ2ZXJdOwogICAgICAgICBwcmVmZXJlbmNlc0NoYW5nZWQoKTsKICAgICB9CkBAIC00MzYsNyAr
NDYwLDggQEAgc3RhdGljIGlubGluZSB3a1Njcm9sbGVyS25vYlN0eWxlIHRvU2NybwogICAgIH0K
IH0KIAotc3RhdGljIFBsYXRmb3JtQnJpZGdlOjpUaGVtZVBhaW50U3RhdGUgc2Nyb2xsYmFyU3Rh
dGVUb1RoZW1lU3RhdGUoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpIHsKK3N0YXRpYyBQbGF0Zm9ybUJy
aWRnZTo6VGhlbWVQYWludFN0YXRlIHNjcm9sbGJhclN0YXRlVG9UaGVtZVN0YXRlKFNjcm9sbGJh
ciogc2Nyb2xsYmFyKQorewogICAgIGlmICghc2Nyb2xsYmFyLT5lbmFibGVkKCkpCiAgICAgICAg
IHJldHVybiBQbGF0Zm9ybUJyaWRnZTo6U3RhdGVEaXNhYmxlZDsKICAgICBpZiAoIXNjcm9sbGJh
ci0+c2Nyb2xsYWJsZUFyZWEoKS0+aXNBY3RpdmUoKSkKQEAgLTU5OCw3ICs2MjMsOCBAQCBib29s
IFNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnBhaW50KFNjCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6cGFpbnRUaWNrbWFya3MoR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYg
cmVjdCkgewordm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjpwYWludFRpY2ttYXJrcyhH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRS
ZWN0JiByZWN0KQorewogICAgIGlmIChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgIT0gVmVydGlj
YWxTY3JvbGxiYXIpCiAgICAgICAgIHJldHVybjsKIApAQCAtNjQzLDQgKzY2OSw5OSBAQCB2b2lk
IFNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnBhaW50VGljCiAgICAgY29udGV4dC0+cmVzdG9y
ZSgpOwogfQogCit2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnBhaW50T3ZlcmhhbmdB
cmVhcyhTY3JvbGxWaWV3KiB2aWV3LCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IElu
dFJlY3QmIGhvcml6b250YWxPdmVyaGFuZ1JlY3QsIGNvbnN0IEludFJlY3QmIHZlcnRpY2FsT3Zl
cmhhbmdSZWN0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpCit7CisgICAgY29uc3QgaW50IGtT
aGFkb3dTaXplID0gNTsKKyAgICBzdHJ1Y3QgeworICAgICAgZmxvYXQgc3RvcDsKKyAgICAgIENv
bG9yIGNvbG9yOworICAgIH0ga1NoYWRvd0NvbG9yc1tdID0geworICAgICAgICB7IDAuMCwgQ29s
b3IoMCwgMCwgMCwgMTQxKSB9LAorICAgICAgICB7IDAuMiwgQ29sb3IoMCwgMCwgMCwgODkpIH0s
CisgICAgICAgIHsgMC42LCBDb2xvcigwLCAwLCAwLCAzMCkgfSwKKyAgICAgICAgeyAxLjAsIENv
bG9yKDAsIDAsIDAsIDApIH0KKyAgICB9OworICAgIGNvbnN0IHVuc2lnbmVkIGtOdW1TaGFkb3dD
b2xvcnMgPSBzaXplb2Yoa1NoYWRvd0NvbG9ycykvc2l6ZW9mKGtTaGFkb3dDb2xvcnNbMF0pOwor
CisgICAgYm9vbCBoYXNIb3Jpem9udGFsT3ZlcmhhbmcgPSAhaG9yaXpvbnRhbE92ZXJoYW5nUmVj
dC5pc0VtcHR5KCk7CisgICAgYm9vbCBoYXNWZXJ0aWNhbE92ZXJoYW5nID0gIXZlcnRpY2FsT3Zl
cmhhbmdSZWN0LmlzRW1wdHkoKTsKKworICAgIGNvbnRleHQtPnNhdmUoKTsKKworICAgIGlmICht
X292ZXJoYW5nUGF0dGVybi5nZXQoKSkKKyAgICAgICAgY29udGV4dC0+c2V0RmlsbFBhdHRlcm4o
bV9vdmVyaGFuZ1BhdHRlcm4pOworICAgIGVsc2UgICAgCisgICAgICAgIGNvbnRleHQtPnNldEZp
bGxDb2xvcihDb2xvcjo6ZGFya0dyYXksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworCisgICAgaWYg
KGhhc0hvcml6b250YWxPdmVyaGFuZykKKyAgICAgICAgY29udGV4dC0+ZmlsbFJlY3QoaW50ZXJz
ZWN0aW9uKGhvcml6b250YWxPdmVyaGFuZ1JlY3QsIGRpcnR5UmVjdCkpOworICAgIGlmIChoYXNW
ZXJ0aWNhbE92ZXJoYW5nKQorICAgICAgICBjb250ZXh0LT5maWxsUmVjdChpbnRlcnNlY3Rpb24o
dmVydGljYWxPdmVyaGFuZ1JlY3QsIGRpcnR5UmVjdCkpOworCisgICAgSW50U2l6ZSBzY3JvbGxP
ZmZzZXQgPSB2aWV3LT5zY3JvbGxPZmZzZXQoKTsKKyAgICBGbG9hdFBvaW50IHNoYWRvd0Nvcm5l
ck9yaWdpbjsKKyAgICBGbG9hdFBvaW50IHNoYWRvd0Nvcm5lck9mZnNldDsKKworICAgIC8vIERy
YXcgdGhlIHNoYWRvdyBmb3IgdGhlIGhvcml6b250YWwgb3ZlcmhhbmcuCisgICAgaWYgKGhhc0hv
cml6b250YWxPdmVyaGFuZykgeworICAgICAgICBSZWZQdHI8R3JhZGllbnQ+IGdyYWRpZW50Owor
ICAgICAgICBJbnRSZWN0IHNoYWRvd1JlY3QgPSBob3Jpem9udGFsT3ZlcmhhbmdSZWN0OworICAg
ICAgICBpZiAoc2Nyb2xsT2Zmc2V0LmhlaWdodCgpIDwgMCkgeworICAgICAgICAgICAgc2hhZG93
UmVjdC5zZXRZKHNoYWRvd1JlY3QubWF4WSgpIC0ga1NoYWRvd1NpemUpOworICAgICAgICAgICAg
c2hhZG93UmVjdC5zZXRIZWlnaHQoa1NoYWRvd1NpemUpOworICAgICAgICAgICAgZ3JhZGllbnQg
PSBHcmFkaWVudDo6Y3JlYXRlKEZsb2F0UG9pbnQoMCwgc2hhZG93UmVjdC5tYXhZKCkpLCBGbG9h
dFBvaW50KDAsIHNoYWRvd1JlY3QueSgpKSk7CisgICAgICAgICAgICBzaGFkb3dDb3JuZXJPcmln
aW4uc2V0WShzaGFkb3dSZWN0Lm1heFkoKSk7CisgICAgICAgICAgICBzaGFkb3dDb3JuZXJPZmZz
ZXQuc2V0WSgta1NoYWRvd1NpemUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc2hh
ZG93UmVjdC5zZXRIZWlnaHQoa1NoYWRvd1NpemUpOworICAgICAgICAgICAgZ3JhZGllbnQgPSBH
cmFkaWVudDo6Y3JlYXRlKEZsb2F0UG9pbnQoMCwgc2hhZG93UmVjdC55KCkpLCBGbG9hdFBvaW50
KDAsIHNoYWRvd1JlY3QubWF4WSgpKSk7CisgICAgICAgICAgICBzaGFkb3dDb3JuZXJPcmlnaW4u
c2V0WShzaGFkb3dSZWN0LnkoKSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGhhc0hvcml6b250
YWxPdmVyaGFuZykgeworICAgICAgICAgICAgc2hhZG93UmVjdC5zZXRXaWR0aChzaGFkb3dSZWN0
LndpZHRoKCkgLSB2ZXJ0aWNhbE92ZXJoYW5nUmVjdC53aWR0aCgpKTsKKyAgICAgICAgICAgIGlm
IChzY3JvbGxPZmZzZXQud2lkdGgoKSA8IDApIHsKKyAgICAgICAgICAgICAgICBzaGFkb3dSZWN0
LnNldFgoc2hhZG93UmVjdC54KCkgKyB2ZXJ0aWNhbE92ZXJoYW5nUmVjdC53aWR0aCgpKTsKKyAg
ICAgICAgICAgICAgICBzaGFkb3dDb3JuZXJPcmlnaW4uc2V0WChzaGFkb3dSZWN0LngoKSk7Cisg
ICAgICAgICAgICAgICAgc2hhZG93Q29ybmVyT2Zmc2V0LnNldFgoLWtTaGFkb3dTaXplKTsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgc2hhZG93Q29ybmVyT3JpZ2luLnNl
dFgoc2hhZG93UmVjdC5tYXhYKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBrTnVtU2hhZG93Q29sb3JzOyBpKyspCisgICAgICAg
ICAgZ3JhZGllbnQtPmFkZENvbG9yU3RvcChrU2hhZG93Q29sb3JzW2ldLnN0b3AsIGtTaGFkb3dD
b2xvcnNbaV0uY29sb3IpOworICAgICAgICBjb250ZXh0LT5zZXRGaWxsR3JhZGllbnQoZ3JhZGll
bnQpOworICAgICAgICBjb250ZXh0LT5maWxsUmVjdChpbnRlcnNlY3Rpb24oc2hhZG93UmVjdCwg
ZGlydHlSZWN0KSk7CisgICAgfQorCisgICAgLy8gRHJhdyB0aGUgc2hhZG93IGZvciB0aGUgdmVy
dGljYWwgb3ZlcmhhbmcuCisgICAgaWYgKGhhc1ZlcnRpY2FsT3ZlcmhhbmcpIHsKKyAgICAgICAg
UmVmUHRyPEdyYWRpZW50PiBncmFkaWVudDsKKyAgICAgICAgSW50UmVjdCBzaGFkb3dSZWN0ID0g
dmVydGljYWxPdmVyaGFuZ1JlY3Q7CisgICAgICAgIGlmIChzY3JvbGxPZmZzZXQud2lkdGgoKSA8
IDApIHsKKyAgICAgICAgICAgIHNoYWRvd1JlY3Quc2V0WChzaGFkb3dSZWN0Lm1heFgoKSAtIGtT
aGFkb3dTaXplKTsKKyAgICAgICAgICAgIHNoYWRvd1JlY3Quc2V0V2lkdGgoa1NoYWRvd1NpemUp
OworICAgICAgICAgICAgZ3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKEZsb2F0UG9pbnQoc2hh
ZG93UmVjdC5tYXhYKCksIDApLCBGbG9hdFBvaW50KHNoYWRvd1JlY3QueCgpLCAwKSk7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzaGFkb3dSZWN0LnNldFdpZHRoKGtTaGFkb3dTaXpl
KTsKKyAgICAgICAgICAgIGdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShGbG9hdFBvaW50KHNo
YWRvd1JlY3QueCgpLCAwKSwgRmxvYXRQb2ludChzaGFkb3dSZWN0Lm1heFgoKSwgMCkpOworICAg
ICAgICB9CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBrTnVtU2hhZG93Q29sb3Jz
OyBpKyspCisgICAgICAgICAgZ3JhZGllbnQtPmFkZENvbG9yU3RvcChrU2hhZG93Q29sb3JzW2ld
LnN0b3AsIGtTaGFkb3dDb2xvcnNbaV0uY29sb3IpOworICAgICAgICBjb250ZXh0LT5zZXRGaWxs
R3JhZGllbnQoZ3JhZGllbnQpOworICAgICAgICBjb250ZXh0LT5maWxsUmVjdChpbnRlcnNlY3Rp
b24oc2hhZG93UmVjdCwgZGlydHlSZWN0KSk7CisgICAgfQorCisgICAgLy8gSWYgYm90aCByZWN0
YW5nbGVzIHByZXNlbnQsIGRyYXcgYSByYWRpYWwgZ3JhZGllbnQgZm9yIHRoZSBjb3JuZXIuCisg
ICAgaWYgKGhhc0hvcml6b250YWxPdmVyaGFuZyAmJiBoYXNWZXJ0aWNhbE92ZXJoYW5nKSB7Cisg
ICAgICBSZWZQdHI8R3JhZGllbnQ+IGdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShzaGFkb3dD
b3JuZXJPcmlnaW4sIDAsIHNoYWRvd0Nvcm5lck9yaWdpbiwga1NoYWRvd1NpemUpOworICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGtOdW1TaGFkb3dDb2xvcnM7IGkrKykKKyAgICAgICAg
Z3JhZGllbnQtPmFkZENvbG9yU3RvcChrU2hhZG93Q29sb3JzW2ldLnN0b3AsIGtTaGFkb3dDb2xv
cnNbaV0uY29sb3IpOworICAgICAgY29udGV4dC0+c2V0RmlsbEdyYWRpZW50KGdyYWRpZW50KTsK
KyAgICAgIGNvbnRleHQtPmZpbGxSZWN0KEZsb2F0UmVjdChzaGFkb3dDb3JuZXJPcmlnaW4ueCgp
ICsgc2hhZG93Q29ybmVyT2Zmc2V0LngoKSwgc2hhZG93Q29ybmVyT3JpZ2luLnkoKSArIHNoYWRv
d0Nvcm5lck9mZnNldC55KCksIGtTaGFkb3dTaXplLCBrU2hhZG93U2l6ZSkpOworICAgIH0KKwor
ICAgIGNvbnRleHQtPnJlc3RvcmUoKTsKK30KKworCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103939</attachid>
            <date>2011-08-15 12:10:19 -0700</date>
            <delta_ts>2011-08-15 12:26:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66226-20110815151017.patch</filename>
            <type>text/plain</type>
            <size>14524</size>
            <attacher>asvitkine</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkzMDQyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTEtMDgtMTUgIEFsZXhlaSBT
dml0a2luZSAgPGFzdml0a2luZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ2hyb21pdW0gTWFj
OiBSdWJiZXIgYmFuZGluZyBndXR0ZXIgZHJhd2luZworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjYyMjYKKworICAgICAgICBNYWtlIFNjcm9sbFZpZXc6
OnBhaW50T3ZlcmhhbmdBcmVhcygpIHVzZSB0aGUgU2Nyb2xsYmFyVGhlbWU6Om5hdGl2ZVRoZW1l
KCkgdG8KKyAgICAgICAgZHJhdyB0aGUgb3ZlcmhhbmcgYXJlYXMuCisgICAgICAgIE1vdmUgZGVm
YXVsdCBpbXBsZW1lbnRhdGlvbiB0byBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6cGFpbnRPdmVy
aGFuZ0FyZWFzKCkuCisgICAgICAgIEFkZCBhIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbiBmb3Ig
Q2hyb21pdW0gTWFjLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cyBzaW5jZSB0aGlzIGlzIGp1c3QgcmVmYWN0b3JpbmcgY29kZSBh
bmQgYWRkaW5nIGEgQ2hyb21pdW0tc3BlY2lmaWMgcGF0aCBmb3Igb3ZlcmhhbmcgZHJhd2luZy4K
KworICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsVmlldzo6d2hlZWxFdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYmFyVGhl
bWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lOjpwYWludE92ZXJoYW5nQXJl
YXMpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpwYWludE92ZXJoYW5nQXJl
YXMpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjpTY3JvbGxiYXJUaGVt
ZUNocm9taXVtTWFjKToKKyAgICAgICAgKFdlYkNvcmU6OnNjcm9sbGJhclN0YXRlVG9UaGVtZVN0
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnBhaW50
VGlja21hcmtzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6
OnBhaW50T3ZlcmhhbmdBcmVhcyk6CisKIDIwMTEtMDgtMTUgIFBhdmVsIEZlbGRtYW4gIDxwZmVs
ZG1hbkBnb29nbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtWOF0gY3Jhc2ggdXBv
biBzdGVwSW4gd2hpbGUgbm90IG9uIHBhdXNlLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsVmlldy5jcHAJKHJldmlzaW9uIDkzMDQwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwODYsMTcgKzEwODYsOSBAQCB2
b2lkIFNjcm9sbFZpZXc6OmNhbGN1bGF0ZU92ZXJoYW5nQXJlYXNGCiAgICAgfQogfQogCi12b2lk
IFNjcm9sbFZpZXc6OnBhaW50T3ZlcmhhbmdBcmVhcyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IGNvbnN0IEludFJlY3QmIGhvcml6b250YWxPdmVyaGFuZ1JlY3QsIGNvbnN0IEludFJlY3QmIHZl
cnRpY2FsT3ZlcmhhbmdSZWN0LCBjb25zdCBJbnRSZWN0JikKK3ZvaWQgU2Nyb2xsVmlldzo6cGFp
bnRPdmVyaGFuZ0FyZWFzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYg
aG9yaXpvbnRhbE92ZXJoYW5nUmVjdCwgY29uc3QgSW50UmVjdCYgdmVydGljYWxPdmVyaGFuZ1Jl
Y3QsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkKIHsKLSAgICAvLyBGSVhNRTogVGhpcyBzaG91
bGQgYmUgY2hlY2tpbmcgdGhlIGRpcnR5IHJlY3QuCi0KLSAgICBjb250ZXh0LT5zZXRGaWxsQ29s
b3IoQ29sb3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICBpZiAoIWhvcml6b250
YWxPdmVyaGFuZ1JlY3QuaXNFbXB0eSgpKQotICAgICAgICBjb250ZXh0LT5maWxsUmVjdChob3Jp
em9udGFsT3ZlcmhhbmdSZWN0KTsKLQotICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihDb2xvcjo6
d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgIGlmICghdmVydGljYWxPdmVyaGFuZ1Jl
Y3QuaXNFbXB0eSgpKQotICAgICAgICBjb250ZXh0LT5maWxsUmVjdCh2ZXJ0aWNhbE92ZXJoYW5n
UmVjdCk7CisgICAgU2Nyb2xsYmFyVGhlbWU6Om5hdGl2ZVRoZW1lKCktPnBhaW50T3ZlcmhhbmdB
cmVhcyh0aGlzLCBjb250ZXh0LCBob3Jpem9udGFsT3ZlcmhhbmdSZWN0LCB2ZXJ0aWNhbE92ZXJo
YW5nUmVjdCwgZGlydHlSZWN0KTsKIH0KIAogYm9vbCBTY3JvbGxWaWV3Ojppc1BvaW50SW5TY3Jv
bGxiYXJDb3JuZXIoY29uc3QgSW50UG9pbnQmIHdpbmRvd1BvaW50KQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZS5oCShyZXZpc2lvbiA5MzA0MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTgy
LDYgKzgyLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbENvcm5lcihT
Y3JvbGxWaWV3KiwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBjb3Ju
ZXJSZWN0KSB7IGRlZmF1bHRQYWludFNjcm9sbENvcm5lcihjb250ZXh0LCBjb3JuZXJSZWN0KTsg
fQogICAgIHN0YXRpYyB2b2lkIGRlZmF1bHRQYWludFNjcm9sbENvcm5lcihHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGNvcm5lclJlY3QpIHsgY29udGV4dC0+ZmlsbFJl
Y3QoY29ybmVyUmVjdCwgQ29sb3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsgfQogCisg
ICAgdmlydHVhbCB2b2lkIHBhaW50T3ZlcmhhbmdBcmVhcyhTY3JvbGxWaWV3KiwgR3JhcGhpY3ND
b250ZXh0KiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRSZWN0Jikg
eyB9CisKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXIqLCBj
b25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGRTbmFwQmFja1RvRHJhZ09yaWdpbihTY3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9y
bU1vdXNlRXZlbnQmKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRE
cmFnRG9jdW1lbnRJbnN0ZWFkT2ZUaHVtYihTY3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9ybU1vdXNl
RXZlbnQmKSB7IHJldHVybiBmYWxzZTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmNwcAkocmV2aXNpb24gOTMwNDApCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMxNSw0ICszMTUsMTUgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZUNvbXBv
c2l0ZTo6cGFpbnRTY3JvbAogICAgIGNvbnRleHQtPmZpbGxSZWN0KGNvcm5lclJlY3QsIENvbG9y
Ojp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQik7CiB9CiAKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVD
b21wb3NpdGU6OnBhaW50T3ZlcmhhbmdBcmVhcyhTY3JvbGxWaWV3KiwgR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBob3Jpem9udGFsT3ZlcmhhbmdSZWN0LCBjb25zdCBJ
bnRSZWN0JiB2ZXJ0aWNhbE92ZXJoYW5nUmVjdCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KQor
eyAgICAKKyAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3I6OndoaXRlLCBDb2xvclNwYWNl
RGV2aWNlUkdCKTsKKyAgICBpZiAoIWhvcml6b250YWxPdmVyaGFuZ1JlY3QuaXNFbXB0eSgpKQor
ICAgICAgICBjb250ZXh0LT5maWxsUmVjdChpbnRlcnNlY3Rpb24oaG9yaXpvbnRhbE92ZXJoYW5n
UmVjdCwgZGlydHlSZWN0KSk7CisKKyAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3I6Ondo
aXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBpZiAoIXZlcnRpY2FsT3ZlcmhhbmdSZWN0
LmlzRW1wdHkoKSkKKyAgICAgICAgY29udGV4dC0+ZmlsbFJlY3QoaW50ZXJzZWN0aW9uKHZlcnRp
Y2FsT3ZlcmhhbmdSZWN0LCBkaXJ0eVJlY3QpKTsKK30KKwogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5oCShyZXZpc2lvbiA5
MzA0MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
aW50IHRyYWNrTGVuZ3RoKFNjcm9sbGJhciopOwogCiAgICAgdmlydHVhbCB2b2lkIHBhaW50U2Ny
b2xsQ29ybmVyKFNjcm9sbFZpZXcqLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiBj
b3JuZXJSZWN0KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRPdmVyaGFuZ0FyZWFzKFNjcm9sbFZp
ZXcqLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiBob3Jpem9udGFsT3ZlcmhhbmdB
cmVhLCBjb25zdCBJbnRSZWN0JiB2ZXJ0aWNhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYg
ZGlydHlSZWN0KTsKIAogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgYm9vbCBoYXNCdXR0b25zKFNj
cm9sbGJhciopID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Nj
cm9sbGJhclRoZW1lQ2hyb21pdW1NYWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLmgJKHJldmlzaW9uIDkz
MDQwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVD
aHJvbWl1bU1hYy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw4IEBAIHB1YmxpYzoKICAg
ICBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjKCk7CiAgICAgdmlydHVhbCB+U2Nyb2xsYmFyVGhl
bWVDaHJvbWl1bU1hYygpOwogCisgICAgdm9pZCBwcmVmZXJlbmNlc0NoYW5nZWQoKTsKKwogICAg
IHZpcnR1YWwgYm9vbCBwYWludChTY3JvbGxiYXIqLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpOwogCiAgICAgdmlydHVhbCBpbnQgc2Nyb2xsYmFy
VGhpY2tuZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplID0gUmVndWxhclNjcm9sbGJhcik7CkBAIC01
OCw2ICs2MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE5ld1BhaW50ZXJGb3JTY3JvbGxiYXIo
U2Nyb2xsYmFyKiwgV0tTY3JvbGxiYXJQYWludGVyUmVmKTsKICAgICBXS1Njcm9sbGJhclBhaW50
ZXJSZWYgcGFpbnRlckZvclNjcm9sbGJhcihTY3JvbGxiYXIqKTsKIAorICAgIHZpcnR1YWwgdm9p
ZCBwYWludE92ZXJoYW5nQXJlYXMoU2Nyb2xsVmlldyosIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0
IEludFJlY3QmIGhvcml6b250YWxPdmVyaGFuZ0FyZWEsIGNvbnN0IEludFJlY3QmIHZlcnRpY2Fs
T3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpOworICAgIAogcHJvdGVjdGVk
OgogICAgIHZpcnR1YWwgYm9vbCBoYXNCdXR0b25zKFNjcm9sbGJhciopOwogICAgIHZpcnR1YWwg
Ym9vbCBoYXNUaHVtYihTY3JvbGxiYXIqKTsKQEAgLTczLDggKzc3LDggQEAgcHJvdGVjdGVkOgog
CiAgICAgdmlydHVhbCB2b2lkIHBhaW50VGlja21hcmtzKEdyYXBoaWNzQ29udGV4dCosIFNjcm9s
bGJhciosIGNvbnN0IEludFJlY3QmKTsKIAotcHVibGljOgotICAgIHZvaWQgcHJlZmVyZW5jZXND
aGFuZ2VkKCk7Citwcml2YXRlOgorICAgIFJlZlB0cjxQYXR0ZXJuPiBtX292ZXJoYW5nUGF0dGVy
bjsKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9s
bGJhclRoZW1lQ2hyb21pdW1NYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5tbQkocmV2aXNpb24gOTMw
NDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNo
cm9taXVtTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw5IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5oIgogCisjaW5j
bHVkZSAiQml0bWFwSW1hZ2UuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJH
cmFkaWVudC5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiTG9jYWxDdXJy
ZW50R3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1CcmlkZ2UuaCIKQEAgLTQ0
LDYgKzQ2LDEzIEBACiAjaW5jbHVkZSAic2tpYS9leHQvc2tpYV91dGlsc19tYWMuaCIKICNlbmRp
ZgogCisKKy8vIFVuZG9jdW1lbnRlZCBMaW9uIG1ldGhvZCB0byBnZXQgdGhlIHBhdHRlcm4gZm9y
IHRoZSBvdmVyLXNjcm9sbCBhcmVhLgorQGludGVyZmFjZSBOU0NvbG9yIChMaW9uU2VrcmV0QVBJ
KQorKyAoTlNJbWFnZSopX2xpbmVuUGF0dGVybkltYWdlOworQGVuZAorCisKIC8vIEZJWE1FOiBU
aGVyZSBhcmUgcmVwYWludGluZyBwcm9ibGVtcyBkdWUgdG8gQXF1YSBzY3JvbGwgYmFyIGJ1dHRv
bnMnIHZpc3VhbCBvdmVyZmxvdy4KIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKQEAgLTE4NSw2ICsx
OTQsMjEgQEAgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6U2Nyb2xsYmFyVGhlbQogICAgIHN0
YXRpYyBib29sIGluaXRpYWxpemVkOwogICAgIGlmICghaW5pdGlhbGl6ZWQpIHsKICAgICAgICAg
aW5pdGlhbGl6ZWQgPSB0cnVlOworCisgICAgICAgIC8vIExvYWQgdGhlIGxpbmVuIHBhdHRlcm4g
aW1hZ2UgdXNlZCBmb3Igb3ZlcmhhbmcgZHJhd2luZyBpZiBhdmFpbGFibGUuCisgICAgICAgIGlm
IChbTlNDb2xvciByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9saW5lblBhdHRlcm5JbWFn
ZSldKSB7CisgICAgICAgICAgICBOU0ltYWdlKiBpbWFnZSA9IFtOU0NvbG9yIF9saW5lblBhdHRl
cm5JbWFnZV07CisgICAgICAgICAgICBpZiAoaW1hZ2UpIHsKKyAgICAgICAgICAgICAgICBOU0Rh
dGEqIHRpZmZEYXRhID0gIFtpbWFnZSBUSUZGUmVwcmVzZW50YXRpb25dOworICAgICAgICAgICAg
ICAgIGlmICh0aWZmRGF0YSkgeworICAgICAgICAgICAgICAgICAgICBDR0ltYWdlU291cmNlUmVm
IGltYWdlU291cmNlID0gQ0dJbWFnZVNvdXJjZUNyZWF0ZVdpdGhEYXRhKChDRkRhdGFSZWYpdGlm
ZkRhdGEsIE5VTEwpOworICAgICAgICAgICAgICAgICAgICBDR0ltYWdlUmVmIGNnSW1hZ2UgPSBD
R0ltYWdlU291cmNlQ3JlYXRlSW1hZ2VBdEluZGV4KGltYWdlU291cmNlLCAwLCBOVUxMKTsKKyAg
ICAgICAgICAgICAgICAgICAgUmVmUHRyPEltYWdlPiBwYXR0ZXJuSW1hZ2UgPSBCaXRtYXBJbWFn
ZTo6Y3JlYXRlKGNnSW1hZ2UpOworICAgICAgICAgICAgICAgICAgICBtX292ZXJoYW5nUGF0dGVy
biA9IFBhdHRlcm46OmNyZWF0ZShwYXR0ZXJuSW1hZ2UsIHRydWUsIHRydWUpOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCiAgICAgICAgIFtTY3JvbGxiYXJQ
cmVmc09ic2VydmVyIHJlZ2lzdGVyQXNPYnNlcnZlcl07CiAgICAgICAgIHByZWZlcmVuY2VzQ2hh
bmdlZCgpOwogICAgIH0KQEAgLTQzNiw3ICs0NjAsOCBAQCBzdGF0aWMgaW5saW5lIHdrU2Nyb2xs
ZXJLbm9iU3R5bGUgdG9TY3JvCiAgICAgfQogfQogCi1zdGF0aWMgUGxhdGZvcm1CcmlkZ2U6OlRo
ZW1lUGFpbnRTdGF0ZSBzY3JvbGxiYXJTdGF0ZVRvVGhlbWVTdGF0ZShTY3JvbGxiYXIqIHNjcm9s
bGJhcikgeworc3RhdGljIFBsYXRmb3JtQnJpZGdlOjpUaGVtZVBhaW50U3RhdGUgc2Nyb2xsYmFy
U3RhdGVUb1RoZW1lU3RhdGUoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCit7CiAgICAgaWYgKCFzY3Jv
bGxiYXItPmVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIFBsYXRmb3JtQnJpZGdlOjpTdGF0ZURp
c2FibGVkOwogICAgIGlmICghc2Nyb2xsYmFyLT5zY3JvbGxhYmxlQXJlYSgpLT5pc0FjdGl2ZSgp
KQpAQCAtNTk4LDcgKzYyMyw4IEBAIGJvb2wgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6cGFp
bnQoU2MKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVt
TWFjOjpwYWludFRpY2ttYXJrcyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhciog
c2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KSB7Cit2b2lkIFNjcm9sbGJhclRoZW1lQ2hy
b21pdW1NYWM6OnBhaW50VGlja21hcmtzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xs
YmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCit7CiAgICAgaWYgKHNjcm9sbGJh
ci0+b3JpZW50YXRpb24oKSAhPSBWZXJ0aWNhbFNjcm9sbGJhcikKICAgICAgICAgcmV0dXJuOwog
CkBAIC02NDMsNCArNjY5LDk5IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6cGFp
bnRUaWMKICAgICBjb250ZXh0LT5yZXN0b3JlKCk7CiB9CiAKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVD
aHJvbWl1bU1hYzo6cGFpbnRPdmVyaGFuZ0FyZWFzKFNjcm9sbFZpZXcqIHZpZXcsIEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgaG9yaXpvbnRhbE92ZXJoYW5nUmVjdCwg
Y29uc3QgSW50UmVjdCYgdmVydGljYWxPdmVyaGFuZ1JlY3QsIGNvbnN0IEludFJlY3QmIGRpcnR5
UmVjdCkKK3sKKyAgICBjb25zdCBpbnQga1NoYWRvd1NpemUgPSA1OworICAgIHN0cnVjdCB7Cisg
ICAgICBmbG9hdCBzdG9wOworICAgICAgQ29sb3IgY29sb3I7CisgICAgfSBrU2hhZG93Q29sb3Jz
W10gPSB7CisgICAgICAgIHsgMC4wLCBDb2xvcigwLCAwLCAwLCAxNDEpIH0sCisgICAgICAgIHsg
MC4yLCBDb2xvcigwLCAwLCAwLCA4OSkgfSwKKyAgICAgICAgeyAwLjYsIENvbG9yKDAsIDAsIDAs
IDMwKSB9LAorICAgICAgICB7IDEuMCwgQ29sb3IoMCwgMCwgMCwgMCkgfQorICAgIH07CisgICAg
Y29uc3QgdW5zaWduZWQga051bVNoYWRvd0NvbG9ycyA9IHNpemVvZihrU2hhZG93Q29sb3JzKS9z
aXplb2Yoa1NoYWRvd0NvbG9yc1swXSk7CisKKyAgICBib29sIGhhc0hvcml6b250YWxPdmVyaGFu
ZyA9ICFob3Jpem9udGFsT3ZlcmhhbmdSZWN0LmlzRW1wdHkoKTsKKyAgICBib29sIGhhc1ZlcnRp
Y2FsT3ZlcmhhbmcgPSAhdmVydGljYWxPdmVyaGFuZ1JlY3QuaXNFbXB0eSgpOworCisgICAgY29u
dGV4dC0+c2F2ZSgpOworCisgICAgaWYgKG1fb3ZlcmhhbmdQYXR0ZXJuLmdldCgpKQorICAgICAg
ICBjb250ZXh0LT5zZXRGaWxsUGF0dGVybihtX292ZXJoYW5nUGF0dGVybik7CisgICAgZWxzZSAg
ICAKKyAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKENvbG9yOjpkYXJrR3JheSwgQ29sb3JT
cGFjZURldmljZVJHQik7CisKKyAgICBpZiAoaGFzSG9yaXpvbnRhbE92ZXJoYW5nKQorICAgICAg
ICBjb250ZXh0LT5maWxsUmVjdChpbnRlcnNlY3Rpb24oaG9yaXpvbnRhbE92ZXJoYW5nUmVjdCwg
ZGlydHlSZWN0KSk7CisgICAgaWYgKGhhc1ZlcnRpY2FsT3ZlcmhhbmcpCisgICAgICAgIGNvbnRl
eHQtPmZpbGxSZWN0KGludGVyc2VjdGlvbih2ZXJ0aWNhbE92ZXJoYW5nUmVjdCwgZGlydHlSZWN0
KSk7CisKKyAgICBJbnRTaXplIHNjcm9sbE9mZnNldCA9IHZpZXctPnNjcm9sbE9mZnNldCgpOwor
ICAgIEZsb2F0UG9pbnQgc2hhZG93Q29ybmVyT3JpZ2luOworICAgIEZsb2F0UG9pbnQgc2hhZG93
Q29ybmVyT2Zmc2V0OworCisgICAgLy8gRHJhdyB0aGUgc2hhZG93IGZvciB0aGUgaG9yaXpvbnRh
bCBvdmVyaGFuZy4KKyAgICBpZiAoaGFzSG9yaXpvbnRhbE92ZXJoYW5nKSB7CisgICAgICAgIFJl
ZlB0cjxHcmFkaWVudD4gZ3JhZGllbnQ7CisgICAgICAgIEludFJlY3Qgc2hhZG93UmVjdCA9IGhv
cml6b250YWxPdmVyaGFuZ1JlY3Q7CisgICAgICAgIGlmIChzY3JvbGxPZmZzZXQuaGVpZ2h0KCkg
PCAwKSB7CisgICAgICAgICAgICBzaGFkb3dSZWN0LnNldFkoc2hhZG93UmVjdC5tYXhZKCkgLSBr
U2hhZG93U2l6ZSk7CisgICAgICAgICAgICBzaGFkb3dSZWN0LnNldEhlaWdodChrU2hhZG93U2l6
ZSk7CisgICAgICAgICAgICBncmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoRmxvYXRQb2ludCgw
LCBzaGFkb3dSZWN0Lm1heFkoKSksIEZsb2F0UG9pbnQoMCwgc2hhZG93UmVjdC55KCkpKTsKKyAg
ICAgICAgICAgIHNoYWRvd0Nvcm5lck9yaWdpbi5zZXRZKHNoYWRvd1JlY3QubWF4WSgpKTsKKyAg
ICAgICAgICAgIHNoYWRvd0Nvcm5lck9mZnNldC5zZXRZKC1rU2hhZG93U2l6ZSk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBzaGFkb3dSZWN0LnNldEhlaWdodChrU2hhZG93U2l6ZSk7
CisgICAgICAgICAgICBncmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoRmxvYXRQb2ludCgwLCBz
aGFkb3dSZWN0LnkoKSksIEZsb2F0UG9pbnQoMCwgc2hhZG93UmVjdC5tYXhZKCkpKTsKKyAgICAg
ICAgICAgIHNoYWRvd0Nvcm5lck9yaWdpbi5zZXRZKHNoYWRvd1JlY3QueSgpKTsKKyAgICAgICAg
fQorICAgICAgICBpZiAoaGFzSG9yaXpvbnRhbE92ZXJoYW5nKSB7CisgICAgICAgICAgICBzaGFk
b3dSZWN0LnNldFdpZHRoKHNoYWRvd1JlY3Qud2lkdGgoKSAtIHZlcnRpY2FsT3ZlcmhhbmdSZWN0
LndpZHRoKCkpOworICAgICAgICAgICAgaWYgKHNjcm9sbE9mZnNldC53aWR0aCgpIDwgMCkgewor
ICAgICAgICAgICAgICAgIHNoYWRvd1JlY3Quc2V0WChzaGFkb3dSZWN0LngoKSArIHZlcnRpY2Fs
T3ZlcmhhbmdSZWN0LndpZHRoKCkpOworICAgICAgICAgICAgICAgIHNoYWRvd0Nvcm5lck9yaWdp
bi5zZXRYKHNoYWRvd1JlY3QueCgpKTsKKyAgICAgICAgICAgICAgICBzaGFkb3dDb3JuZXJPZmZz
ZXQuc2V0WCgta1NoYWRvd1NpemUpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBzaGFkb3dDb3JuZXJPcmlnaW4uc2V0WChzaGFkb3dSZWN0Lm1heFgoKSk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGtOdW1T
aGFkb3dDb2xvcnM7IGkrKykKKyAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JTdG9wKGtTaGFk
b3dDb2xvcnNbaV0uc3RvcCwga1NoYWRvd0NvbG9yc1tpXS5jb2xvcik7CisgICAgICAgIGNvbnRl
eHQtPnNldEZpbGxHcmFkaWVudChncmFkaWVudCk7CisgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0
KGludGVyc2VjdGlvbihzaGFkb3dSZWN0LCBkaXJ0eVJlY3QpKTsKKyAgICB9CisKKyAgICAvLyBE
cmF3IHRoZSBzaGFkb3cgZm9yIHRoZSB2ZXJ0aWNhbCBvdmVyaGFuZy4KKyAgICBpZiAoaGFzVmVy
dGljYWxPdmVyaGFuZykgeworICAgICAgICBSZWZQdHI8R3JhZGllbnQ+IGdyYWRpZW50OworICAg
ICAgICBJbnRSZWN0IHNoYWRvd1JlY3QgPSB2ZXJ0aWNhbE92ZXJoYW5nUmVjdDsKKyAgICAgICAg
aWYgKHNjcm9sbE9mZnNldC53aWR0aCgpIDwgMCkgeworICAgICAgICAgICAgc2hhZG93UmVjdC5z
ZXRYKHNoYWRvd1JlY3QubWF4WCgpIC0ga1NoYWRvd1NpemUpOworICAgICAgICAgICAgc2hhZG93
UmVjdC5zZXRXaWR0aChrU2hhZG93U2l6ZSk7CisgICAgICAgICAgICBncmFkaWVudCA9IEdyYWRp
ZW50OjpjcmVhdGUoRmxvYXRQb2ludChzaGFkb3dSZWN0Lm1heFgoKSwgMCksIEZsb2F0UG9pbnQo
c2hhZG93UmVjdC54KCksIDApKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNoYWRv
d1JlY3Quc2V0V2lkdGgoa1NoYWRvd1NpemUpOworICAgICAgICAgICAgZ3JhZGllbnQgPSBHcmFk
aWVudDo6Y3JlYXRlKEZsb2F0UG9pbnQoc2hhZG93UmVjdC54KCksIDApLCBGbG9hdFBvaW50KHNo
YWRvd1JlY3QubWF4WCgpLCAwKSk7CisgICAgICAgIH0KKyAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGtOdW1TaGFkb3dDb2xvcnM7IGkrKykKKyAgICAgICAgICBncmFkaWVudC0+YWRk
Q29sb3JTdG9wKGtTaGFkb3dDb2xvcnNbaV0uc3RvcCwga1NoYWRvd0NvbG9yc1tpXS5jb2xvcik7
CisgICAgICAgIGNvbnRleHQtPnNldEZpbGxHcmFkaWVudChncmFkaWVudCk7CisgICAgICAgIGNv
bnRleHQtPmZpbGxSZWN0KGludGVyc2VjdGlvbihzaGFkb3dSZWN0LCBkaXJ0eVJlY3QpKTsKKyAg
ICB9CisKKyAgICAvLyBJZiBib3RoIHJlY3RhbmdsZXMgcHJlc2VudCwgZHJhdyBhIHJhZGlhbCBn
cmFkaWVudCBmb3IgdGhlIGNvcm5lci4KKyAgICBpZiAoaGFzSG9yaXpvbnRhbE92ZXJoYW5nICYm
IGhhc1ZlcnRpY2FsT3ZlcmhhbmcpIHsKKyAgICAgIFJlZlB0cjxHcmFkaWVudD4gZ3JhZGllbnQg
PSBHcmFkaWVudDo6Y3JlYXRlKHNoYWRvd0Nvcm5lck9yaWdpbiwgMCwgc2hhZG93Q29ybmVyT3Jp
Z2luLCBrU2hhZG93U2l6ZSk7CisgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwga051bVNo
YWRvd0NvbG9yczsgaSsrKQorICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JTdG9wKGtTaGFkb3dD
b2xvcnNbaV0uc3RvcCwga1NoYWRvd0NvbG9yc1tpXS5jb2xvcik7CisgICAgICBjb250ZXh0LT5z
ZXRGaWxsR3JhZGllbnQoZ3JhZGllbnQpOworICAgICAgY29udGV4dC0+ZmlsbFJlY3QoRmxvYXRS
ZWN0KHNoYWRvd0Nvcm5lck9yaWdpbi54KCkgKyBzaGFkb3dDb3JuZXJPZmZzZXQueCgpLCBzaGFk
b3dDb3JuZXJPcmlnaW4ueSgpICsgc2hhZG93Q29ybmVyT2Zmc2V0LnkoKSwga1NoYWRvd1NpemUs
IGtTaGFkb3dTaXplKSk7CisgICAgfQorCisgICAgY29udGV4dC0+cmVzdG9yZSgpOworfQorCisK
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVt
ZU1hYy5oCShyZXZpc2lvbiA5MzA0MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9T
Y3JvbGxiYXJUaGVtZU1hYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw4IEBAIHB1Ymxp
YzoKICAgICBTY3JvbGxiYXJUaGVtZU1hYygpOwogICAgIHZpcnR1YWwgflNjcm9sbGJhclRoZW1l
TWFjKCk7CiAKKyAgICB2b2lkIHByZWZlcmVuY2VzQ2hhbmdlZCgpOworCiAgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZUVuYWJsZWRTdGF0ZShTY3JvbGxiYXIqKTsKIAogICAgIHZpcnR1YWwgYm9vbCBw
YWludChTY3JvbGxiYXIqLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3Qm
IGRhbWFnZVJlY3QpOwpAQCAtNzYsOSArNzgsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgCiAgICAgdmly
dHVhbCBib29sIHNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1N
b3VzZUV2ZW50Jik7CiAgICAgdmlydHVhbCBib29sIHNob3VsZERyYWdEb2N1bWVudEluc3RlYWRP
ZlRodW1iKFNjcm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwotICAgIAotcHVi
bGljOgotICAgIHZvaWQgcHJlZmVyZW5jZXNDaGFuZ2VkKCk7CiB9OwogCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103942</attachid>
            <date>2011-08-15 12:26:59 -0700</date>
            <delta_ts>2011-08-16 10:25:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66226-20110815152657.patch</filename>
            <type>text/plain</type>
            <size>14492</size>
            <attacher>asvitkine</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkzMDQyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTEtMDgtMTUgIEFsZXhlaSBT
dml0a2luZSAgPGFzdml0a2luZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ2hyb21pdW0gTWFj
OiBSdWJiZXIgYmFuZGluZyBndXR0ZXIgZHJhd2luZworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjYyMjYKKworICAgICAgICBNYWtlIFNjcm9sbFZpZXc6
OnBhaW50T3ZlcmhhbmdBcmVhcygpIHVzZSB0aGUgU2Nyb2xsYmFyVGhlbWU6Om5hdGl2ZVRoZW1l
KCkgdG8KKyAgICAgICAgZHJhdyB0aGUgb3ZlcmhhbmcgYXJlYXMuCisgICAgICAgIE1vdmUgZGVm
YXVsdCBpbXBsZW1lbnRhdGlvbiB0byBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6cGFpbnRPdmVy
aGFuZ0FyZWFzKCkuCisgICAgICAgIEFkZCBhIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbiBmb3Ig
Q2hyb21pdW0gTWFjLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cyBzaW5jZSB0aGlzIGlzIGp1c3QgcmVmYWN0b3JpbmcgY29kZSBh
bmQgYWRkaW5nIGEgQ2hyb21pdW0tc3BlY2lmaWMgcGF0aCBmb3Igb3ZlcmhhbmcgZHJhd2luZy4K
KworICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsVmlldzo6d2hlZWxFdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYmFyVGhl
bWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lOjpwYWludE92ZXJoYW5nQXJl
YXMpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpwYWludE92ZXJoYW5nQXJl
YXMpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjpTY3JvbGxiYXJUaGVt
ZUNocm9taXVtTWFjKToKKyAgICAgICAgKFdlYkNvcmU6OnNjcm9sbGJhclN0YXRlVG9UaGVtZVN0
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnBhaW50
VGlja21hcmtzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6
OnBhaW50T3ZlcmhhbmdBcmVhcyk6CisKIDIwMTEtMDgtMTUgIFBhdmVsIEZlbGRtYW4gIDxwZmVs
ZG1hbkBnb29nbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtWOF0gY3Jhc2ggdXBv
biBzdGVwSW4gd2hpbGUgbm90IG9uIHBhdXNlLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsVmlldy5jcHAJKHJldmlzaW9uIDkzMDQwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwODYsMTcgKzEwODYsOSBAQCB2
b2lkIFNjcm9sbFZpZXc6OmNhbGN1bGF0ZU92ZXJoYW5nQXJlYXNGCiAgICAgfQogfQogCi12b2lk
IFNjcm9sbFZpZXc6OnBhaW50T3ZlcmhhbmdBcmVhcyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IGNvbnN0IEludFJlY3QmIGhvcml6b250YWxPdmVyaGFuZ1JlY3QsIGNvbnN0IEludFJlY3QmIHZl
cnRpY2FsT3ZlcmhhbmdSZWN0LCBjb25zdCBJbnRSZWN0JikKK3ZvaWQgU2Nyb2xsVmlldzo6cGFp
bnRPdmVyaGFuZ0FyZWFzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYg
aG9yaXpvbnRhbE92ZXJoYW5nUmVjdCwgY29uc3QgSW50UmVjdCYgdmVydGljYWxPdmVyaGFuZ1Jl
Y3QsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkKIHsKLSAgICAvLyBGSVhNRTogVGhpcyBzaG91
bGQgYmUgY2hlY2tpbmcgdGhlIGRpcnR5IHJlY3QuCi0KLSAgICBjb250ZXh0LT5zZXRGaWxsQ29s
b3IoQ29sb3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKLSAgICBpZiAoIWhvcml6b250
YWxPdmVyaGFuZ1JlY3QuaXNFbXB0eSgpKQotICAgICAgICBjb250ZXh0LT5maWxsUmVjdChob3Jp
em9udGFsT3ZlcmhhbmdSZWN0KTsKLQotICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihDb2xvcjo6
d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwotICAgIGlmICghdmVydGljYWxPdmVyaGFuZ1Jl
Y3QuaXNFbXB0eSgpKQotICAgICAgICBjb250ZXh0LT5maWxsUmVjdCh2ZXJ0aWNhbE92ZXJoYW5n
UmVjdCk7CisgICAgU2Nyb2xsYmFyVGhlbWU6Om5hdGl2ZVRoZW1lKCktPnBhaW50T3ZlcmhhbmdB
cmVhcyh0aGlzLCBjb250ZXh0LCBob3Jpem9udGFsT3ZlcmhhbmdSZWN0LCB2ZXJ0aWNhbE92ZXJo
YW5nUmVjdCwgZGlydHlSZWN0KTsKIH0KIAogYm9vbCBTY3JvbGxWaWV3Ojppc1BvaW50SW5TY3Jv
bGxiYXJDb3JuZXIoY29uc3QgSW50UG9pbnQmIHdpbmRvd1BvaW50KQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZS5oCShyZXZpc2lvbiA5MzA0MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTgy
LDYgKzgyLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbENvcm5lcihT
Y3JvbGxWaWV3KiwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBjb3Ju
ZXJSZWN0KSB7IGRlZmF1bHRQYWludFNjcm9sbENvcm5lcihjb250ZXh0LCBjb3JuZXJSZWN0KTsg
fQogICAgIHN0YXRpYyB2b2lkIGRlZmF1bHRQYWludFNjcm9sbENvcm5lcihHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGNvcm5lclJlY3QpIHsgY29udGV4dC0+ZmlsbFJl
Y3QoY29ybmVyUmVjdCwgQ29sb3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsgfQogCisg
ICAgdmlydHVhbCB2b2lkIHBhaW50T3ZlcmhhbmdBcmVhcyhTY3JvbGxWaWV3KiwgR3JhcGhpY3ND
b250ZXh0KiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRSZWN0Jikg
eyB9CisKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXIqLCBj
b25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGRTbmFwQmFja1RvRHJhZ09yaWdpbihTY3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9y
bU1vdXNlRXZlbnQmKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRE
cmFnRG9jdW1lbnRJbnN0ZWFkT2ZUaHVtYihTY3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9ybU1vdXNl
RXZlbnQmKSB7IHJldHVybiBmYWxzZTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmNwcAkocmV2aXNpb24gOTMwNDApCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMxNSw0ICszMTUsMTUgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZUNvbXBv
c2l0ZTo6cGFpbnRTY3JvbAogICAgIGNvbnRleHQtPmZpbGxSZWN0KGNvcm5lclJlY3QsIENvbG9y
Ojp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQik7CiB9CiAKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVD
b21wb3NpdGU6OnBhaW50T3ZlcmhhbmdBcmVhcyhTY3JvbGxWaWV3KiwgR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBob3Jpem9udGFsT3ZlcmhhbmdSZWN0LCBjb25zdCBJ
bnRSZWN0JiB2ZXJ0aWNhbE92ZXJoYW5nUmVjdCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KQor
eyAgICAKKyAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3I6OndoaXRlLCBDb2xvclNwYWNl
RGV2aWNlUkdCKTsKKyAgICBpZiAoIWhvcml6b250YWxPdmVyaGFuZ1JlY3QuaXNFbXB0eSgpKQor
ICAgICAgICBjb250ZXh0LT5maWxsUmVjdChpbnRlcnNlY3Rpb24oaG9yaXpvbnRhbE92ZXJoYW5n
UmVjdCwgZGlydHlSZWN0KSk7CisKKyAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IoQ29sb3I6Ondo
aXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBpZiAoIXZlcnRpY2FsT3ZlcmhhbmdSZWN0
LmlzRW1wdHkoKSkKKyAgICAgICAgY29udGV4dC0+ZmlsbFJlY3QoaW50ZXJzZWN0aW9uKHZlcnRp
Y2FsT3ZlcmhhbmdSZWN0LCBkaXJ0eVJlY3QpKTsKK30KKwogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5oCShyZXZpc2lvbiA5
MzA0MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
aW50IHRyYWNrTGVuZ3RoKFNjcm9sbGJhciopOwogCiAgICAgdmlydHVhbCB2b2lkIHBhaW50U2Ny
b2xsQ29ybmVyKFNjcm9sbFZpZXcqLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiBj
b3JuZXJSZWN0KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRPdmVyaGFuZ0FyZWFzKFNjcm9sbFZp
ZXcqLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiBob3Jpem9udGFsT3ZlcmhhbmdB
cmVhLCBjb25zdCBJbnRSZWN0JiB2ZXJ0aWNhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYg
ZGlydHlSZWN0KTsKIAogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgYm9vbCBoYXNCdXR0b25zKFNj
cm9sbGJhciopID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Nj
cm9sbGJhclRoZW1lQ2hyb21pdW1NYWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLmgJKHJldmlzaW9uIDkz
MDQwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVD
aHJvbWl1bU1hYy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw4IEBAIHB1YmxpYzoKICAg
ICBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjKCk7CiAgICAgdmlydHVhbCB+U2Nyb2xsYmFyVGhl
bWVDaHJvbWl1bU1hYygpOwogCisgICAgdm9pZCBwcmVmZXJlbmNlc0NoYW5nZWQoKTsKKwogICAg
IHZpcnR1YWwgYm9vbCBwYWludChTY3JvbGxiYXIqLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpOwogCiAgICAgdmlydHVhbCBpbnQgc2Nyb2xsYmFy
VGhpY2tuZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplID0gUmVndWxhclNjcm9sbGJhcik7CkBAIC01
OCw2ICs2MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE5ld1BhaW50ZXJGb3JTY3JvbGxiYXIo
U2Nyb2xsYmFyKiwgV0tTY3JvbGxiYXJQYWludGVyUmVmKTsKICAgICBXS1Njcm9sbGJhclBhaW50
ZXJSZWYgcGFpbnRlckZvclNjcm9sbGJhcihTY3JvbGxiYXIqKTsKIAorICAgIHZpcnR1YWwgdm9p
ZCBwYWludE92ZXJoYW5nQXJlYXMoU2Nyb2xsVmlldyosIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0
IEludFJlY3QmIGhvcml6b250YWxPdmVyaGFuZ0FyZWEsIGNvbnN0IEludFJlY3QmIHZlcnRpY2Fs
T3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpOworICAgIAogcHJvdGVjdGVk
OgogICAgIHZpcnR1YWwgYm9vbCBoYXNCdXR0b25zKFNjcm9sbGJhciopOwogICAgIHZpcnR1YWwg
Ym9vbCBoYXNUaHVtYihTY3JvbGxiYXIqKTsKQEAgLTczLDggKzc3LDggQEAgcHJvdGVjdGVkOgog
CiAgICAgdmlydHVhbCB2b2lkIHBhaW50VGlja21hcmtzKEdyYXBoaWNzQ29udGV4dCosIFNjcm9s
bGJhciosIGNvbnN0IEludFJlY3QmKTsKIAotcHVibGljOgotICAgIHZvaWQgcHJlZmVyZW5jZXND
aGFuZ2VkKCk7Citwcml2YXRlOgorICAgIFJlZlB0cjxQYXR0ZXJuPiBtX292ZXJoYW5nUGF0dGVy
bjsKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9s
bGJhclRoZW1lQ2hyb21pdW1NYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5tbQkocmV2aXNpb24gOTMw
NDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNo
cm9taXVtTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw5IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5oIgogCisjaW5j
bHVkZSAiQml0bWFwSW1hZ2UuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJH
cmFkaWVudC5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiTG9jYWxDdXJy
ZW50R3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1CcmlkZ2UuaCIKQEAgLTQ0
LDYgKzQ2LDEzIEBACiAjaW5jbHVkZSAic2tpYS9leHQvc2tpYV91dGlsc19tYWMuaCIKICNlbmRp
ZgogCisKKy8vIFVuZG9jdW1lbnRlZCBMaW9uIG1ldGhvZCB0byBnZXQgdGhlIHBhdHRlcm4gZm9y
IHRoZSBvdmVyLXNjcm9sbCBhcmVhLgorQGludGVyZmFjZSBOU0NvbG9yIChMaW9uU2VrcmV0QVBJ
KQorKyAoTlNJbWFnZSopX2xpbmVuUGF0dGVybkltYWdlOworQGVuZAorCisKIC8vIEZJWE1FOiBU
aGVyZSBhcmUgcmVwYWludGluZyBwcm9ibGVtcyBkdWUgdG8gQXF1YSBzY3JvbGwgYmFyIGJ1dHRv
bnMnIHZpc3VhbCBvdmVyZmxvdy4KIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKQEAgLTE4NSw2ICsx
OTQsMjEgQEAgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6U2Nyb2xsYmFyVGhlbQogICAgIHN0
YXRpYyBib29sIGluaXRpYWxpemVkOwogICAgIGlmICghaW5pdGlhbGl6ZWQpIHsKICAgICAgICAg
aW5pdGlhbGl6ZWQgPSB0cnVlOworCisgICAgICAgIC8vIExvYWQgdGhlIGxpbmVuIHBhdHRlcm4g
aW1hZ2UgdXNlZCBmb3Igb3ZlcmhhbmcgZHJhd2luZyBpZiBhdmFpbGFibGUuCisgICAgICAgIGlm
IChbTlNDb2xvciByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9saW5lblBhdHRlcm5JbWFn
ZSldKSB7CisgICAgICAgICAgICBOU0ltYWdlKiBpbWFnZSA9IFtOU0NvbG9yIF9saW5lblBhdHRl
cm5JbWFnZV07CisgICAgICAgICAgICBpZiAoaW1hZ2UpIHsKKyAgICAgICAgICAgICAgICBOU0Rh
dGEqIHRpZmZEYXRhID0gIFtpbWFnZSBUSUZGUmVwcmVzZW50YXRpb25dOworICAgICAgICAgICAg
ICAgIGlmICh0aWZmRGF0YSkgeworICAgICAgICAgICAgICAgICAgICBDR0ltYWdlU291cmNlUmVm
IGltYWdlU291cmNlID0gQ0dJbWFnZVNvdXJjZUNyZWF0ZVdpdGhEYXRhKChDRkRhdGFSZWYpdGlm
ZkRhdGEsIE5VTEwpOworICAgICAgICAgICAgICAgICAgICBDR0ltYWdlUmVmIGNnSW1hZ2UgPSBD
R0ltYWdlU291cmNlQ3JlYXRlSW1hZ2VBdEluZGV4KGltYWdlU291cmNlLCAwLCBOVUxMKTsKKyAg
ICAgICAgICAgICAgICAgICAgUmVmUHRyPEltYWdlPiBwYXR0ZXJuSW1hZ2UgPSBCaXRtYXBJbWFn
ZTo6Y3JlYXRlKGNnSW1hZ2UpOworICAgICAgICAgICAgICAgICAgICBtX292ZXJoYW5nUGF0dGVy
biA9IFBhdHRlcm46OmNyZWF0ZShwYXR0ZXJuSW1hZ2UsIHRydWUsIHRydWUpOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCiAgICAgICAgIFtTY3JvbGxiYXJQ
cmVmc09ic2VydmVyIHJlZ2lzdGVyQXNPYnNlcnZlcl07CiAgICAgICAgIHByZWZlcmVuY2VzQ2hh
bmdlZCgpOwogICAgIH0KQEAgLTQzNiw3ICs0NjAsOCBAQCBzdGF0aWMgaW5saW5lIHdrU2Nyb2xs
ZXJLbm9iU3R5bGUgdG9TY3JvCiAgICAgfQogfQogCi1zdGF0aWMgUGxhdGZvcm1CcmlkZ2U6OlRo
ZW1lUGFpbnRTdGF0ZSBzY3JvbGxiYXJTdGF0ZVRvVGhlbWVTdGF0ZShTY3JvbGxiYXIqIHNjcm9s
bGJhcikgeworc3RhdGljIFBsYXRmb3JtQnJpZGdlOjpUaGVtZVBhaW50U3RhdGUgc2Nyb2xsYmFy
U3RhdGVUb1RoZW1lU3RhdGUoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCit7CiAgICAgaWYgKCFzY3Jv
bGxiYXItPmVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIFBsYXRmb3JtQnJpZGdlOjpTdGF0ZURp
c2FibGVkOwogICAgIGlmICghc2Nyb2xsYmFyLT5zY3JvbGxhYmxlQXJlYSgpLT5pc0FjdGl2ZSgp
KQpAQCAtNTk4LDcgKzYyMyw4IEBAIGJvb2wgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6cGFp
bnQoU2MKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVt
TWFjOjpwYWludFRpY2ttYXJrcyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhciog
c2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KSB7Cit2b2lkIFNjcm9sbGJhclRoZW1lQ2hy
b21pdW1NYWM6OnBhaW50VGlja21hcmtzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xs
YmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCit7CiAgICAgaWYgKHNjcm9sbGJh
ci0+b3JpZW50YXRpb24oKSAhPSBWZXJ0aWNhbFNjcm9sbGJhcikKICAgICAgICAgcmV0dXJuOwog
CkBAIC02NDMsNCArNjY5LDk4IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6cGFp
bnRUaWMKICAgICBjb250ZXh0LT5yZXN0b3JlKCk7CiB9CiAKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVD
aHJvbWl1bU1hYzo6cGFpbnRPdmVyaGFuZ0FyZWFzKFNjcm9sbFZpZXcqIHZpZXcsIEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgaG9yaXpvbnRhbE92ZXJoYW5nUmVjdCwg
Y29uc3QgSW50UmVjdCYgdmVydGljYWxPdmVyaGFuZ1JlY3QsIGNvbnN0IEludFJlY3QmIGRpcnR5
UmVjdCkKK3sKKyAgICBjb25zdCBpbnQga1NoYWRvd1NpemUgPSA1OworICAgIGNvbnN0IHN0cnVj
dCB7CisgICAgICAgIGZsb2F0IHN0b3A7CisgICAgICAgIENvbG9yIGNvbG9yOworICAgIH0ga1No
YWRvd0NvbG9yc1tdID0geworICAgICAgICB7IDAuMCwgQ29sb3IoMCwgMCwgMCwgMTQxKSB9LAor
ICAgICAgICB7IDAuMiwgQ29sb3IoMCwgMCwgMCwgODkpIH0sCisgICAgICAgIHsgMC42LCBDb2xv
cigwLCAwLCAwLCAzMCkgfSwKKyAgICAgICAgeyAxLjAsIENvbG9yKDAsIDAsIDAsIDApIH0KKyAg
ICB9OworCisgICAgYm9vbCBoYXNIb3Jpem9udGFsT3ZlcmhhbmcgPSAhaG9yaXpvbnRhbE92ZXJo
YW5nUmVjdC5pc0VtcHR5KCk7CisgICAgYm9vbCBoYXNWZXJ0aWNhbE92ZXJoYW5nID0gIXZlcnRp
Y2FsT3ZlcmhhbmdSZWN0LmlzRW1wdHkoKTsKKworICAgIGNvbnRleHQtPnNhdmUoKTsKKworICAg
IGlmIChtX292ZXJoYW5nUGF0dGVybi5nZXQoKSkKKyAgICAgICAgY29udGV4dC0+c2V0RmlsbFBh
dHRlcm4obV9vdmVyaGFuZ1BhdHRlcm4pOworICAgIGVsc2UgICAgCisgICAgICAgIGNvbnRleHQt
PnNldEZpbGxDb2xvcihDb2xvcjo6ZGFya0dyYXksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworCisg
ICAgaWYgKGhhc0hvcml6b250YWxPdmVyaGFuZykKKyAgICAgICAgY29udGV4dC0+ZmlsbFJlY3Qo
aW50ZXJzZWN0aW9uKGhvcml6b250YWxPdmVyaGFuZ1JlY3QsIGRpcnR5UmVjdCkpOworICAgIGlm
IChoYXNWZXJ0aWNhbE92ZXJoYW5nKQorICAgICAgICBjb250ZXh0LT5maWxsUmVjdChpbnRlcnNl
Y3Rpb24odmVydGljYWxPdmVyaGFuZ1JlY3QsIGRpcnR5UmVjdCkpOworCisgICAgSW50U2l6ZSBz
Y3JvbGxPZmZzZXQgPSB2aWV3LT5zY3JvbGxPZmZzZXQoKTsKKyAgICBGbG9hdFBvaW50IHNoYWRv
d0Nvcm5lck9yaWdpbjsKKyAgICBGbG9hdFBvaW50IHNoYWRvd0Nvcm5lck9mZnNldDsKKworICAg
IC8vIERyYXcgdGhlIHNoYWRvdyBmb3IgdGhlIGhvcml6b250YWwgb3ZlcmhhbmcuCisgICAgaWYg
KGhhc0hvcml6b250YWxPdmVyaGFuZykgeworICAgICAgICBSZWZQdHI8R3JhZGllbnQ+IGdyYWRp
ZW50OworICAgICAgICBJbnRSZWN0IHNoYWRvd1JlY3QgPSBob3Jpem9udGFsT3ZlcmhhbmdSZWN0
OworICAgICAgICBpZiAoc2Nyb2xsT2Zmc2V0LmhlaWdodCgpIDwgMCkgeworICAgICAgICAgICAg
c2hhZG93UmVjdC5zZXRZKHNoYWRvd1JlY3QubWF4WSgpIC0ga1NoYWRvd1NpemUpOworICAgICAg
ICAgICAgc2hhZG93UmVjdC5zZXRIZWlnaHQoa1NoYWRvd1NpemUpOworICAgICAgICAgICAgZ3Jh
ZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKEZsb2F0UG9pbnQoMCwgc2hhZG93UmVjdC5tYXhZKCkp
LCBGbG9hdFBvaW50KDAsIHNoYWRvd1JlY3QueSgpKSk7CisgICAgICAgICAgICBzaGFkb3dDb3Ju
ZXJPcmlnaW4uc2V0WShzaGFkb3dSZWN0Lm1heFkoKSk7CisgICAgICAgICAgICBzaGFkb3dDb3Ju
ZXJPZmZzZXQuc2V0WSgta1NoYWRvd1NpemUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgc2hhZG93UmVjdC5zZXRIZWlnaHQoa1NoYWRvd1NpemUpOworICAgICAgICAgICAgZ3JhZGll
bnQgPSBHcmFkaWVudDo6Y3JlYXRlKEZsb2F0UG9pbnQoMCwgc2hhZG93UmVjdC55KCkpLCBGbG9h
dFBvaW50KDAsIHNoYWRvd1JlY3QubWF4WSgpKSk7CisgICAgICAgICAgICBzaGFkb3dDb3JuZXJP
cmlnaW4uc2V0WShzaGFkb3dSZWN0LnkoKSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGhhc0hv
cml6b250YWxPdmVyaGFuZykgeworICAgICAgICAgICAgc2hhZG93UmVjdC5zZXRXaWR0aChzaGFk
b3dSZWN0LndpZHRoKCkgLSB2ZXJ0aWNhbE92ZXJoYW5nUmVjdC53aWR0aCgpKTsKKyAgICAgICAg
ICAgIGlmIChzY3JvbGxPZmZzZXQud2lkdGgoKSA8IDApIHsKKyAgICAgICAgICAgICAgICBzaGFk
b3dSZWN0LnNldFgoc2hhZG93UmVjdC54KCkgKyB2ZXJ0aWNhbE92ZXJoYW5nUmVjdC53aWR0aCgp
KTsKKyAgICAgICAgICAgICAgICBzaGFkb3dDb3JuZXJPcmlnaW4uc2V0WChzaGFkb3dSZWN0Lngo
KSk7CisgICAgICAgICAgICAgICAgc2hhZG93Q29ybmVyT2Zmc2V0LnNldFgoLWtTaGFkb3dTaXpl
KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgc2hhZG93Q29ybmVyT3Jp
Z2luLnNldFgoc2hhZG93UmVjdC5tYXhYKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RIKGtTaGFkb3dD
b2xvcnMpOyBpKyspCisgICAgICAgICAgZ3JhZGllbnQtPmFkZENvbG9yU3RvcChrU2hhZG93Q29s
b3JzW2ldLnN0b3AsIGtTaGFkb3dDb2xvcnNbaV0uY29sb3IpOworICAgICAgICBjb250ZXh0LT5z
ZXRGaWxsR3JhZGllbnQoZ3JhZGllbnQpOworICAgICAgICBjb250ZXh0LT5maWxsUmVjdChpbnRl
cnNlY3Rpb24oc2hhZG93UmVjdCwgZGlydHlSZWN0KSk7CisgICAgfQorCisgICAgLy8gRHJhdyB0
aGUgc2hhZG93IGZvciB0aGUgdmVydGljYWwgb3ZlcmhhbmcuCisgICAgaWYgKGhhc1ZlcnRpY2Fs
T3ZlcmhhbmcpIHsKKyAgICAgICAgUmVmUHRyPEdyYWRpZW50PiBncmFkaWVudDsKKyAgICAgICAg
SW50UmVjdCBzaGFkb3dSZWN0ID0gdmVydGljYWxPdmVyaGFuZ1JlY3Q7CisgICAgICAgIGlmIChz
Y3JvbGxPZmZzZXQud2lkdGgoKSA8IDApIHsKKyAgICAgICAgICAgIHNoYWRvd1JlY3Quc2V0WChz
aGFkb3dSZWN0Lm1heFgoKSAtIGtTaGFkb3dTaXplKTsKKyAgICAgICAgICAgIHNoYWRvd1JlY3Qu
c2V0V2lkdGgoa1NoYWRvd1NpemUpOworICAgICAgICAgICAgZ3JhZGllbnQgPSBHcmFkaWVudDo6
Y3JlYXRlKEZsb2F0UG9pbnQoc2hhZG93UmVjdC5tYXhYKCksIDApLCBGbG9hdFBvaW50KHNoYWRv
d1JlY3QueCgpLCAwKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzaGFkb3dSZWN0
LnNldFdpZHRoKGtTaGFkb3dTaXplKTsKKyAgICAgICAgICAgIGdyYWRpZW50ID0gR3JhZGllbnQ6
OmNyZWF0ZShGbG9hdFBvaW50KHNoYWRvd1JlY3QueCgpLCAwKSwgRmxvYXRQb2ludChzaGFkb3dS
ZWN0Lm1heFgoKSwgMCkpOworICAgICAgICB9CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBXVEZfQVJSQVlfTEVOR1RIKGtTaGFkb3dDb2xvcnMpOyBpKyspCisgICAgICAgICAgZ3Jh
ZGllbnQtPmFkZENvbG9yU3RvcChrU2hhZG93Q29sb3JzW2ldLnN0b3AsIGtTaGFkb3dDb2xvcnNb
aV0uY29sb3IpOworICAgICAgICBjb250ZXh0LT5zZXRGaWxsR3JhZGllbnQoZ3JhZGllbnQpOwor
ICAgICAgICBjb250ZXh0LT5maWxsUmVjdChpbnRlcnNlY3Rpb24oc2hhZG93UmVjdCwgZGlydHlS
ZWN0KSk7CisgICAgfQorCisgICAgLy8gSWYgYm90aCByZWN0YW5nbGVzIHByZXNlbnQsIGRyYXcg
YSByYWRpYWwgZ3JhZGllbnQgZm9yIHRoZSBjb3JuZXIuCisgICAgaWYgKGhhc0hvcml6b250YWxP
dmVyaGFuZyAmJiBoYXNWZXJ0aWNhbE92ZXJoYW5nKSB7CisgICAgICBSZWZQdHI8R3JhZGllbnQ+
IGdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShzaGFkb3dDb3JuZXJPcmlnaW4sIDAsIHNoYWRv
d0Nvcm5lck9yaWdpbiwga1NoYWRvd1NpemUpOworICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IFdURl9BUlJBWV9MRU5HVEgoa1NoYWRvd0NvbG9ycyk7IGkrKykKKyAgICAgICAgZ3JhZGll
bnQtPmFkZENvbG9yU3RvcChrU2hhZG93Q29sb3JzW2ldLnN0b3AsIGtTaGFkb3dDb2xvcnNbaV0u
Y29sb3IpOworICAgICAgY29udGV4dC0+c2V0RmlsbEdyYWRpZW50KGdyYWRpZW50KTsKKyAgICAg
IGNvbnRleHQtPmZpbGxSZWN0KEZsb2F0UmVjdChzaGFkb3dDb3JuZXJPcmlnaW4ueCgpICsgc2hh
ZG93Q29ybmVyT2Zmc2V0LngoKSwgc2hhZG93Q29ybmVyT3JpZ2luLnkoKSArIHNoYWRvd0Nvcm5l
ck9mZnNldC55KCksIGtTaGFkb3dTaXplLCBrU2hhZG93U2l6ZSkpOworICAgIH0KKworICAgIGNv
bnRleHQtPnJlc3RvcmUoKTsKK30KKworCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMuaAkocmV2aXNpb24gOTMwNDApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMuaAkod29ya2luZyBjb3B5
KQpAQCAtMzksNiArMzksOCBAQCBwdWJsaWM6CiAgICAgU2Nyb2xsYmFyVGhlbWVNYWMoKTsKICAg
ICB2aXJ0dWFsIH5TY3JvbGxiYXJUaGVtZU1hYygpOwogCisgICAgdm9pZCBwcmVmZXJlbmNlc0No
YW5nZWQoKTsKKwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVFbmFibGVkU3RhdGUoU2Nyb2xsYmFy
Kik7CiAKICAgICB2aXJ0dWFsIGJvb2wgcGFpbnQoU2Nyb2xsYmFyKiwgR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KTsKQEAgLTc2LDkgKzc4LDYgQEAg
cHJvdGVjdGVkOgogICAgIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRodW1iKFNj
cm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwogICAgIHZpcnR1YWwgYm9vbCBz
aG91bGREcmFnRG9jdW1lbnRJbnN0ZWFkT2ZUaHVtYihTY3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9y
bU1vdXNlRXZlbnQmKTsKLSAgICAKLXB1YmxpYzoKLSAgICB2b2lkIHByZWZlcmVuY2VzQ2hhbmdl
ZCgpOwogfTsKIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104065</attachid>
            <date>2011-08-16 10:25:39 -0700</date>
            <delta_ts>2011-08-16 11:45:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66226-20110816132537.patch</filename>
            <type>text/plain</type>
            <size>14554</size>
            <attacher>asvitkine</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkzMTAxKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTEtMDgtMTUgIEFsZXhlaSBT
dml0a2luZSAgPGFzdml0a2luZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ2hyb21pdW0gTWFj
OiBSdWJiZXIgYmFuZGluZyBndXR0ZXIgZHJhd2luZworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjYyMjYKKworICAgICAgICBNYWtlIFNjcm9sbFZpZXc6
OnBhaW50T3ZlcmhhbmdBcmVhcygpIHVzZSB0aGUgU2Nyb2xsYmFyVGhlbWU6Om5hdGl2ZVRoZW1l
KCkgdG8KKyAgICAgICAgZHJhdyB0aGUgb3ZlcmhhbmcgYXJlYXMuCisgICAgICAgIE1vdmUgZGVm
YXVsdCBpbXBsZW1lbnRhdGlvbiB0byBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6cGFpbnRPdmVy
aGFuZ0FyZWFzKCkuCisgICAgICAgIEFkZCBhIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbiBmb3Ig
Q2hyb21pdW0gTWFjLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cyBzaW5jZSB0aGlzIGlzIGp1c3QgcmVmYWN0b3JpbmcgY29kZSBh
bmQgYWRkaW5nIGEgQ2hyb21pdW0tc3BlY2lmaWMgcGF0aCBmb3Igb3ZlcmhhbmcgZHJhd2luZy4K
KworICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsVmlldzo6d2hlZWxFdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYmFyVGhl
bWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lOjpwYWludE92ZXJoYW5nQXJl
YXMpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpwYWludE92ZXJoYW5nQXJl
YXMpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjpTY3JvbGxiYXJUaGVt
ZUNocm9taXVtTWFjKToKKyAgICAgICAgKFdlYkNvcmU6OnNjcm9sbGJhclN0YXRlVG9UaGVtZVN0
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnBhaW50
VGlja21hcmtzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6
OnBhaW50T3ZlcmhhbmdBcmVhcyk6CisKIDIwMTEtMDgtMTYgIFBhdmVsIEZlbGRtYW4gIDxwZmVs
ZG1hbkBnb29nbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGhpZGUgbm9uLWNvbnNl
cnZhdGl2ZSBtZXRob2RzIGZyb20gdGhlIHByb3RvY29sIGRvY3VtZW50YXRpb24uCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAkocmV2aXNpb24gOTMxMDEpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTA4NiwxNyArMTA4Niw5IEBAIHZvaWQgU2Nyb2xsVmlldzo6Y2FsY3VsYXRlT3ZlcmhhbmdBcmVh
c0YKICAgICB9CiB9CiAKLXZvaWQgU2Nyb2xsVmlldzo6cGFpbnRPdmVyaGFuZ0FyZWFzKEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgaG9yaXpvbnRhbE92ZXJoYW5nUmVj
dCwgY29uc3QgSW50UmVjdCYgdmVydGljYWxPdmVyaGFuZ1JlY3QsIGNvbnN0IEludFJlY3QmKQor
dm9pZCBTY3JvbGxWaWV3OjpwYWludE92ZXJoYW5nQXJlYXMoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBJbnRSZWN0JiBob3Jpem9udGFsT3ZlcmhhbmdSZWN0LCBjb25zdCBJbnRSZWN0
JiB2ZXJ0aWNhbE92ZXJoYW5nUmVjdCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KQogewotICAg
IC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBjaGVja2luZyB0aGUgZGlydHkgcmVjdC4KLQotICAg
IGNvbnRleHQtPnNldEZpbGxDb2xvcihDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0Ip
OwotICAgIGlmICghaG9yaXpvbnRhbE92ZXJoYW5nUmVjdC5pc0VtcHR5KCkpCi0gICAgICAgIGNv
bnRleHQtPmZpbGxSZWN0KGhvcml6b250YWxPdmVyaGFuZ1JlY3QpOwotCi0gICAgY29udGV4dC0+
c2V0RmlsbENvbG9yKENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQik7Ci0gICAgaWYg
KCF2ZXJ0aWNhbE92ZXJoYW5nUmVjdC5pc0VtcHR5KCkpCi0gICAgICAgIGNvbnRleHQtPmZpbGxS
ZWN0KHZlcnRpY2FsT3ZlcmhhbmdSZWN0KTsKKyAgICBTY3JvbGxiYXJUaGVtZTo6bmF0aXZlVGhl
bWUoKS0+cGFpbnRPdmVyaGFuZ0FyZWFzKHRoaXMsIGNvbnRleHQsIGhvcml6b250YWxPdmVyaGFu
Z1JlY3QsIHZlcnRpY2FsT3ZlcmhhbmdSZWN0LCBkaXJ0eVJlY3QpOwogfQogCiBib29sIFNjcm9s
bFZpZXc6OmlzUG9pbnRJblNjcm9sbGJhckNvcm5lcihjb25zdCBJbnRQb2ludCYgd2luZG93UG9p
bnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lLmgJKHJldmlz
aW9uIDkzMTAxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWUuaAko
d29ya2luZyBjb3B5KQpAQCAtODIsNiArODIsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IHBhaW50U2Nyb2xsQ29ybmVyKFNjcm9sbFZpZXcqLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IGNvbnN0IEludFJlY3QmIGNvcm5lclJlY3QpIHsgZGVmYXVsdFBhaW50U2Nyb2xsQ29ybmVyKGNv
bnRleHQsIGNvcm5lclJlY3QpOyB9CiAgICAgc3RhdGljIHZvaWQgZGVmYXVsdFBhaW50U2Nyb2xs
Q29ybmVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVj
dCkgeyBjb250ZXh0LT5maWxsUmVjdChjb3JuZXJSZWN0LCBDb2xvcjo6d2hpdGUsIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRPdmVyaGFuZ0FyZWFzKFNj
cm9sbFZpZXcqLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50UmVj
dCYsIGNvbnN0IEludFJlY3QmKSB7IH0KKwogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJP
blRodW1iKFNjcm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpIHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgdmlydHVhbCBib29sIHNob3VsZFNuYXBCYWNrVG9EcmFnT3JpZ2luKFNjcm9s
bGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
dmlydHVhbCBib29sIHNob3VsZERyYWdEb2N1bWVudEluc3RlYWRPZlRodW1iKFNjcm9sbGJhcios
IGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpIHsgcmV0dXJuIGZhbHNlOyB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuY3Bw
CShyZXZpc2lvbiA5MzEwMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRo
ZW1lQ29tcG9zaXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE1LDQgKzMxNSwxNSBAQCB2b2lk
IFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpwYWludFNjcm9sCiAgICAgY29udGV4dC0+ZmlsbFJl
Y3QoY29ybmVyUmVjdCwgQ29sb3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIH0KIAor
dm9pZCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6cGFpbnRPdmVyaGFuZ0FyZWFzKFNjcm9sbFZp
ZXcqLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGhvcml6b250YWxP
dmVyaGFuZ1JlY3QsIGNvbnN0IEludFJlY3QmIHZlcnRpY2FsT3ZlcmhhbmdSZWN0LCBjb25zdCBJ
bnRSZWN0JiBkaXJ0eVJlY3QpCit7ICAgIAorICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihDb2xv
cjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGlmICghaG9yaXpvbnRhbE92ZXJo
YW5nUmVjdC5pc0VtcHR5KCkpCisgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KGludGVyc2VjdGlv
bihob3Jpem9udGFsT3ZlcmhhbmdSZWN0LCBkaXJ0eVJlY3QpKTsKKworICAgIGNvbnRleHQtPnNl
dEZpbGxDb2xvcihDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIGlmICgh
dmVydGljYWxPdmVyaGFuZ1JlY3QuaXNFbXB0eSgpKQorICAgICAgICBjb250ZXh0LT5maWxsUmVj
dChpbnRlcnNlY3Rpb24odmVydGljYWxPdmVyaGFuZ1JlY3QsIGRpcnR5UmVjdCkpOworfQorCiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29t
cG9zaXRlLmgJKHJldmlzaW9uIDkzMTAxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsYmFyVGhlbWVDb21wb3NpdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBpbnQgdHJhY2tMZW5ndGgoU2Nyb2xsYmFyKik7CiAKICAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxDb3JuZXIoU2Nyb2xsVmlldyosIEdyYXBoaWNzQ29udGV4
dCosIGNvbnN0IEludFJlY3QmIGNvcm5lclJlY3QpOworICAgIHZpcnR1YWwgdm9pZCBwYWludE92
ZXJoYW5nQXJlYXMoU2Nyb2xsVmlldyosIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3Qm
IGhvcml6b250YWxPdmVyaGFuZ0FyZWEsIGNvbnN0IEludFJlY3QmIHZlcnRpY2FsT3ZlcmhhbmdB
cmVhLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpOwogCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVh
bCBib29sIGhhc0J1dHRvbnMoU2Nyb2xsYmFyKikgPSAwOwpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21p
dW1NYWMuaAkocmV2aXNpb24gOTMxMDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYg
KzQwLDggQEAgcHVibGljOgogICAgIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMoKTsKICAgICB2
aXJ0dWFsIH5TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjKCk7CiAKKyAgICB2b2lkIHByZWZlcmVu
Y2VzQ2hhbmdlZCgpOworCiAgICAgdmlydHVhbCBib29sIHBhaW50KFNjcm9sbGJhciosIEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCk7CiAKICAgICB2
aXJ0dWFsIGludCBzY3JvbGxiYXJUaGlja25lc3MoU2Nyb2xsYmFyQ29udHJvbFNpemUgPSBSZWd1
bGFyU2Nyb2xsYmFyKTsKQEAgLTU4LDYgKzYwLDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0TmV3
UGFpbnRlckZvclNjcm9sbGJhcihTY3JvbGxiYXIqLCBXS1Njcm9sbGJhclBhaW50ZXJSZWYpOwog
ICAgIFdLU2Nyb2xsYmFyUGFpbnRlclJlZiBwYWludGVyRm9yU2Nyb2xsYmFyKFNjcm9sbGJhciop
OwogCisgICAgdmlydHVhbCB2b2lkIHBhaW50T3ZlcmhhbmdBcmVhcyhTY3JvbGxWaWV3KiwgR3Jh
cGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgaG9yaXpvbnRhbE92ZXJoYW5nQXJlYSwgY29u
c3QgSW50UmVjdCYgdmVydGljYWxPdmVyaGFuZ0FyZWEsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVj
dCk7CisgICAgCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBib29sIGhhc0J1dHRvbnMoU2Nyb2xs
YmFyKik7CiAgICAgdmlydHVhbCBib29sIGhhc1RodW1iKFNjcm9sbGJhciopOwpAQCAtNzMsOCAr
NzcsOCBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaWNrbWFya3MoR3Jh
cGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpOwogCi1wdWJsaWM6Ci0g
ICAgdm9pZCBwcmVmZXJlbmNlc0NoYW5nZWQoKTsKK3ByaXZhdGU6CisgICAgUmVmUHRyPFBhdHRl
cm4+IG1fb3ZlcmhhbmdQYXR0ZXJuOwogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVt
TWFjLm1tCShyZXZpc2lvbiA5MzEwMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI3LDcg
KzI3LDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTY3JvbGxiYXJUaGVtZUNo
cm9taXVtTWFjLmgiCiAKKyNpbmNsdWRlICJCaXRtYXBJbWFnZS5oIgogI2luY2x1ZGUgIkZyYW1l
Vmlldy5oIgorI2luY2x1ZGUgIkdyYWRpZW50LmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIK
ICNpbmNsdWRlICJMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJQbGF0
Zm9ybUJyaWRnZS5oIgpAQCAtNDQsNiArNDYsMTMgQEAKICNpbmNsdWRlICJza2lhL2V4dC9za2lh
X3V0aWxzX21hYy5oIgogI2VuZGlmCiAKKworLy8gVW5kb2N1bWVudGVkIExpb24gbWV0aG9kIHRv
IGdldCB0aGUgcGF0dGVybiBmb3IgdGhlIG92ZXItc2Nyb2xsIGFyZWEuCitAaW50ZXJmYWNlIE5T
Q29sb3IgKExpb25TZWtyZXRBUEkpCisrIChOU0ltYWdlKilfbGluZW5QYXR0ZXJuSW1hZ2U7CitA
ZW5kCisKKwogLy8gRklYTUU6IFRoZXJlIGFyZSByZXBhaW50aW5nIHByb2JsZW1zIGR1ZSB0byBB
cXVhIHNjcm9sbCBiYXIgYnV0dG9ucycgdmlzdWFsIG92ZXJmbG93LgogCiB1c2luZyBuYW1lc3Bh
Y2Ugc3RkOwpAQCAtMTg1LDYgKzE5NCwyMSBAQCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjpT
Y3JvbGxiYXJUaGVtCiAgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQ7CiAgICAgaWYgKCFpbml0
aWFsaXplZCkgewogICAgICAgICBpbml0aWFsaXplZCA9IHRydWU7CisKKyAgICAgICAgLy8gTG9h
ZCB0aGUgbGluZW4gcGF0dGVybiBpbWFnZSB1c2VkIGZvciBvdmVyaGFuZyBkcmF3aW5nIGlmIGF2
YWlsYWJsZS4KKyAgICAgICAgaWYgKFtOU0NvbG9yIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0
b3IoX2xpbmVuUGF0dGVybkltYWdlKV0pIHsKKyAgICAgICAgICAgIE5TSW1hZ2UqIGltYWdlID0g
W05TQ29sb3IgX2xpbmVuUGF0dGVybkltYWdlXTsKKyAgICAgICAgICAgIGlmIChpbWFnZSkgewor
ICAgICAgICAgICAgICAgIE5TRGF0YSogdGlmZkRhdGEgPSAgW2ltYWdlIFRJRkZSZXByZXNlbnRh
dGlvbl07CisgICAgICAgICAgICAgICAgaWYgKHRpZmZEYXRhKSB7CisgICAgICAgICAgICAgICAg
ICAgIENHSW1hZ2VTb3VyY2VSZWYgaW1hZ2VTb3VyY2UgPSBDR0ltYWdlU291cmNlQ3JlYXRlV2l0
aERhdGEoKENGRGF0YVJlZil0aWZmRGF0YSwgTlVMTCk7CisgICAgICAgICAgICAgICAgICAgIENH
SW1hZ2VSZWYgY2dJbWFnZSA9IENHSW1hZ2VTb3VyY2VDcmVhdGVJbWFnZUF0SW5kZXgoaW1hZ2VT
b3VyY2UsIDAsIE5VTEwpOworICAgICAgICAgICAgICAgICAgICBSZWZQdHI8SW1hZ2U+IHBhdHRl
cm5JbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoY2dJbWFnZSk7CisgICAgICAgICAgICAgICAg
ICAgIG1fb3ZlcmhhbmdQYXR0ZXJuID0gUGF0dGVybjo6Y3JlYXRlKHBhdHRlcm5JbWFnZSwgdHJ1
ZSwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisK
ICAgICAgICAgW1Njcm9sbGJhclByZWZzT2JzZXJ2ZXIgcmVnaXN0ZXJBc09ic2VydmVyXTsKICAg
ICAgICAgcHJlZmVyZW5jZXNDaGFuZ2VkKCk7CiAgICAgfQpAQCAtNDM2LDcgKzQ2MCw4IEBAIHN0
YXRpYyBpbmxpbmUgd2tTY3JvbGxlcktub2JTdHlsZSB0b1Njcm8KICAgICB9CiB9CiAKLXN0YXRp
YyBQbGF0Zm9ybUJyaWRnZTo6VGhlbWVQYWludFN0YXRlIHNjcm9sbGJhclN0YXRlVG9UaGVtZVN0
YXRlKFNjcm9sbGJhciogc2Nyb2xsYmFyKSB7CitzdGF0aWMgUGxhdGZvcm1CcmlkZ2U6OlRoZW1l
UGFpbnRTdGF0ZSBzY3JvbGxiYXJTdGF0ZVRvVGhlbWVTdGF0ZShTY3JvbGxiYXIqIHNjcm9sbGJh
cikKK3sKICAgICBpZiAoIXNjcm9sbGJhci0+ZW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gUGxh
dGZvcm1CcmlkZ2U6OlN0YXRlRGlzYWJsZWQ7CiAgICAgaWYgKCFzY3JvbGxiYXItPnNjcm9sbGFi
bGVBcmVhKCktPmlzQWN0aXZlKCkpCkBAIC01OTgsNyArNjIzLDggQEAgYm9vbCBTY3JvbGxiYXJU
aGVtZUNocm9taXVtTWFjOjpwYWludChTYwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFNj
cm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnBhaW50VGlja21hcmtzKEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QpIHsKK3Zv
aWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6cGFpbnRUaWNrbWFya3MoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkK
K3sKICAgICBpZiAoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpICE9IFZlcnRpY2FsU2Nyb2xsYmFy
KQogICAgICAgICByZXR1cm47CiAKQEAgLTY0Myw0ICs2NjksOTkgQEAgdm9pZCBTY3JvbGxiYXJU
aGVtZUNocm9taXVtTWFjOjpwYWludFRpYwogICAgIGNvbnRleHQtPnJlc3RvcmUoKTsKIH0KIAor
dm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjpwYWludE92ZXJoYW5nQXJlYXMoU2Nyb2xs
VmlldyogdmlldywgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBob3Jp
em9udGFsT3ZlcmhhbmdSZWN0LCBjb25zdCBJbnRSZWN0JiB2ZXJ0aWNhbE92ZXJoYW5nUmVjdCwg
Y29uc3QgSW50UmVjdCYgZGlydHlSZWN0KQoreworICAgIGNvbnN0IGludCBrU2hhZG93U2l6ZSA9
IDU7CisgICAgY29uc3Qgc3RydWN0IHsKKyAgICAgICAgZmxvYXQgc3RvcDsKKyAgICAgICAgQ29s
b3IgY29sb3I7CisgICAgfSBrU2hhZG93Q29sb3JzW10gPSB7CisgICAgICAgIHsgMC4wLCBDb2xv
cigwLCAwLCAwLCAxNDEpIH0sCisgICAgICAgIHsgMC4yLCBDb2xvcigwLCAwLCAwLCA4OSkgfSwK
KyAgICAgICAgeyAwLjYsIENvbG9yKDAsIDAsIDAsIDMwKSB9LAorICAgICAgICB7IDEuMCwgQ29s
b3IoMCwgMCwgMCwgMCkgfQorICAgIH07CisgICAgY29uc3QgdW5zaWduZWQga051bVNoYWRvd0Nv
bG9ycyA9IHNpemVvZihrU2hhZG93Q29sb3JzKS9zaXplb2Yoa1NoYWRvd0NvbG9yc1swXSk7CisK
KyAgICBib29sIGhhc0hvcml6b250YWxPdmVyaGFuZyA9ICFob3Jpem9udGFsT3ZlcmhhbmdSZWN0
LmlzRW1wdHkoKTsKKyAgICBib29sIGhhc1ZlcnRpY2FsT3ZlcmhhbmcgPSAhdmVydGljYWxPdmVy
aGFuZ1JlY3QuaXNFbXB0eSgpOworCisgICAgY29udGV4dC0+c2F2ZSgpOworCisgICAgaWYgKG1f
b3ZlcmhhbmdQYXR0ZXJuLmdldCgpKQorICAgICAgICBjb250ZXh0LT5zZXRGaWxsUGF0dGVybiht
X292ZXJoYW5nUGF0dGVybik7CisgICAgZWxzZSAgICAKKyAgICAgICAgY29udGV4dC0+c2V0Rmls
bENvbG9yKENvbG9yOjpkYXJrR3JheSwgQ29sb3JTcGFjZURldmljZVJHQik7CisKKyAgICBpZiAo
aGFzSG9yaXpvbnRhbE92ZXJoYW5nKQorICAgICAgICBjb250ZXh0LT5maWxsUmVjdChpbnRlcnNl
Y3Rpb24oaG9yaXpvbnRhbE92ZXJoYW5nUmVjdCwgZGlydHlSZWN0KSk7CisgICAgaWYgKGhhc1Zl
cnRpY2FsT3ZlcmhhbmcpCisgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KGludGVyc2VjdGlvbih2
ZXJ0aWNhbE92ZXJoYW5nUmVjdCwgZGlydHlSZWN0KSk7CisKKyAgICBJbnRTaXplIHNjcm9sbE9m
ZnNldCA9IHZpZXctPnNjcm9sbE9mZnNldCgpOworICAgIEZsb2F0UG9pbnQgc2hhZG93Q29ybmVy
T3JpZ2luOworICAgIEZsb2F0UG9pbnQgc2hhZG93Q29ybmVyT2Zmc2V0OworCisgICAgLy8gRHJh
dyB0aGUgc2hhZG93IGZvciB0aGUgaG9yaXpvbnRhbCBvdmVyaGFuZy4KKyAgICBpZiAoaGFzSG9y
aXpvbnRhbE92ZXJoYW5nKSB7CisgICAgICAgIFJlZlB0cjxHcmFkaWVudD4gZ3JhZGllbnQ7Cisg
ICAgICAgIEludFJlY3Qgc2hhZG93UmVjdCA9IGhvcml6b250YWxPdmVyaGFuZ1JlY3Q7CisgICAg
ICAgIGlmIChzY3JvbGxPZmZzZXQuaGVpZ2h0KCkgPCAwKSB7CisgICAgICAgICAgICBzaGFkb3dS
ZWN0LnNldFkoc2hhZG93UmVjdC5tYXhZKCkgLSBrU2hhZG93U2l6ZSk7CisgICAgICAgICAgICBz
aGFkb3dSZWN0LnNldEhlaWdodChrU2hhZG93U2l6ZSk7CisgICAgICAgICAgICBncmFkaWVudCA9
IEdyYWRpZW50OjpjcmVhdGUoRmxvYXRQb2ludCgwLCBzaGFkb3dSZWN0Lm1heFkoKSksIEZsb2F0
UG9pbnQoMCwgc2hhZG93UmVjdC55KCkpKTsKKyAgICAgICAgICAgIHNoYWRvd0Nvcm5lck9yaWdp
bi5zZXRZKHNoYWRvd1JlY3QubWF4WSgpKTsKKyAgICAgICAgICAgIHNoYWRvd0Nvcm5lck9mZnNl
dC5zZXRZKC1rU2hhZG93U2l6ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzaGFk
b3dSZWN0LnNldEhlaWdodChrU2hhZG93U2l6ZSk7CisgICAgICAgICAgICBncmFkaWVudCA9IEdy
YWRpZW50OjpjcmVhdGUoRmxvYXRQb2ludCgwLCBzaGFkb3dSZWN0LnkoKSksIEZsb2F0UG9pbnQo
MCwgc2hhZG93UmVjdC5tYXhZKCkpKTsKKyAgICAgICAgICAgIHNoYWRvd0Nvcm5lck9yaWdpbi5z
ZXRZKHNoYWRvd1JlY3QueSgpKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoaGFzSG9yaXpvbnRh
bE92ZXJoYW5nKSB7CisgICAgICAgICAgICBzaGFkb3dSZWN0LnNldFdpZHRoKHNoYWRvd1JlY3Qu
d2lkdGgoKSAtIHZlcnRpY2FsT3ZlcmhhbmdSZWN0LndpZHRoKCkpOworICAgICAgICAgICAgaWYg
KHNjcm9sbE9mZnNldC53aWR0aCgpIDwgMCkgeworICAgICAgICAgICAgICAgIHNoYWRvd1JlY3Qu
c2V0WChzaGFkb3dSZWN0LngoKSArIHZlcnRpY2FsT3ZlcmhhbmdSZWN0LndpZHRoKCkpOworICAg
ICAgICAgICAgICAgIHNoYWRvd0Nvcm5lck9yaWdpbi5zZXRYKHNoYWRvd1JlY3QueCgpKTsKKyAg
ICAgICAgICAgICAgICBzaGFkb3dDb3JuZXJPZmZzZXQuc2V0WCgta1NoYWRvd1NpemUpOworICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBzaGFkb3dDb3JuZXJPcmlnaW4uc2V0
WChzaGFkb3dSZWN0Lm1heFgoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGtOdW1TaGFkb3dDb2xvcnM7IGkrKykKKyAgICAgICAg
ICBncmFkaWVudC0+YWRkQ29sb3JTdG9wKGtTaGFkb3dDb2xvcnNbaV0uc3RvcCwga1NoYWRvd0Nv
bG9yc1tpXS5jb2xvcik7CisgICAgICAgIGNvbnRleHQtPnNldEZpbGxHcmFkaWVudChncmFkaWVu
dCk7CisgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KGludGVyc2VjdGlvbihzaGFkb3dSZWN0LCBk
aXJ0eVJlY3QpKTsKKyAgICB9CisKKyAgICAvLyBEcmF3IHRoZSBzaGFkb3cgZm9yIHRoZSB2ZXJ0
aWNhbCBvdmVyaGFuZy4KKyAgICBpZiAoaGFzVmVydGljYWxPdmVyaGFuZykgeworICAgICAgICBS
ZWZQdHI8R3JhZGllbnQ+IGdyYWRpZW50OworICAgICAgICBJbnRSZWN0IHNoYWRvd1JlY3QgPSB2
ZXJ0aWNhbE92ZXJoYW5nUmVjdDsKKyAgICAgICAgaWYgKHNjcm9sbE9mZnNldC53aWR0aCgpIDwg
MCkgeworICAgICAgICAgICAgc2hhZG93UmVjdC5zZXRYKHNoYWRvd1JlY3QubWF4WCgpIC0ga1No
YWRvd1NpemUpOworICAgICAgICAgICAgc2hhZG93UmVjdC5zZXRXaWR0aChrU2hhZG93U2l6ZSk7
CisgICAgICAgICAgICBncmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoRmxvYXRQb2ludChzaGFk
b3dSZWN0Lm1heFgoKSwgMCksIEZsb2F0UG9pbnQoc2hhZG93UmVjdC54KCksIDApKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNoYWRvd1JlY3Quc2V0V2lkdGgoa1NoYWRvd1NpemUp
OworICAgICAgICAgICAgZ3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKEZsb2F0UG9pbnQoc2hh
ZG93UmVjdC54KCksIDApLCBGbG9hdFBvaW50KHNoYWRvd1JlY3QubWF4WCgpLCAwKSk7CisgICAg
ICAgIH0KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGtOdW1TaGFkb3dDb2xvcnM7
IGkrKykKKyAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JTdG9wKGtTaGFkb3dDb2xvcnNbaV0u
c3RvcCwga1NoYWRvd0NvbG9yc1tpXS5jb2xvcik7CisgICAgICAgIGNvbnRleHQtPnNldEZpbGxH
cmFkaWVudChncmFkaWVudCk7CisgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KGludGVyc2VjdGlv
bihzaGFkb3dSZWN0LCBkaXJ0eVJlY3QpKTsKKyAgICB9CisKKyAgICAvLyBJZiBib3RoIHJlY3Rh
bmdsZXMgcHJlc2VudCwgZHJhdyBhIHJhZGlhbCBncmFkaWVudCBmb3IgdGhlIGNvcm5lci4KKyAg
ICBpZiAoaGFzSG9yaXpvbnRhbE92ZXJoYW5nICYmIGhhc1ZlcnRpY2FsT3ZlcmhhbmcpIHsKKyAg
ICAgIFJlZlB0cjxHcmFkaWVudD4gZ3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKHNoYWRvd0Nv
cm5lck9yaWdpbiwgMCwgc2hhZG93Q29ybmVyT3JpZ2luLCBrU2hhZG93U2l6ZSk7CisgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwga051bVNoYWRvd0NvbG9yczsgaSsrKQorICAgICAgICBn
cmFkaWVudC0+YWRkQ29sb3JTdG9wKGtTaGFkb3dDb2xvcnNbaV0uc3RvcCwga1NoYWRvd0NvbG9y
c1tpXS5jb2xvcik7CisgICAgICBjb250ZXh0LT5zZXRGaWxsR3JhZGllbnQoZ3JhZGllbnQpOwor
ICAgICAgY29udGV4dC0+ZmlsbFJlY3QoRmxvYXRSZWN0KHNoYWRvd0Nvcm5lck9yaWdpbi54KCkg
KyBzaGFkb3dDb3JuZXJPZmZzZXQueCgpLCBzaGFkb3dDb3JuZXJPcmlnaW4ueSgpICsgc2hhZG93
Q29ybmVyT2Zmc2V0LnkoKSwga1NoYWRvd1NpemUsIGtTaGFkb3dTaXplKSk7CisgICAgfQorCisg
ICAgY29udGV4dC0+cmVzdG9yZSgpOworfQorCisKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5oCShyZXZpc2lvbiA5MzEwMSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zOSw2ICszOSw4IEBAIHB1YmxpYzoKICAgICBTY3JvbGxiYXJUaGVtZU1hYygp
OwogICAgIHZpcnR1YWwgflNjcm9sbGJhclRoZW1lTWFjKCk7CiAKKyAgICB2b2lkIHByZWZlcmVu
Y2VzQ2hhbmdlZCgpOworCiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUVuYWJsZWRTdGF0ZShTY3Jv
bGxiYXIqKTsKIAogICAgIHZpcnR1YWwgYm9vbCBwYWludChTY3JvbGxiYXIqLCBHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpOwpAQCAtNzYsOSArNzgs
NiBAQCBwcm90ZWN0ZWQ6CiAgICAgCiAgICAgdmlydHVhbCBib29sIHNob3VsZENlbnRlck9uVGh1
bWIoU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CiAgICAgdmlydHVhbCBi
b29sIHNob3VsZERyYWdEb2N1bWVudEluc3RlYWRPZlRodW1iKFNjcm9sbGJhciosIGNvbnN0IFBs
YXRmb3JtTW91c2VFdmVudCYpOwotICAgIAotcHVibGljOgotICAgIHZvaWQgcHJlZmVyZW5jZXND
aGFuZ2VkKCk7CiB9OwogCiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>