<?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>87403</bug_id>
          
          <creation_ts>2012-05-24 10:47:59 -0700</creation_ts>
          <short_desc>Implement pointer and hover CSS media features for touch screens</short_desc>
          <delta_ts>2012-05-30 20:56:46 -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>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>85921</dependson>
          <blocked>87806</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Rick Byers">rbyers</reporter>
          <assigned_to name="Rick Byers">rbyers</assigned_to>
          <cc>abarth</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>johnme</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>tabatkins</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>632940</commentid>
    <comment_count>0</comment_count>
    <who name="Rick Byers">rbyers</who>
    <bug_when>2012-05-24 10:47:59 -0700</bug_when>
    <thetext>Implement the new features defined here, first on Chromium:
http://dev.w3.org/csswg/css4-mediaqueries/#pointer
http://dev.w3.org/csswg/css4-mediaqueries/#hover</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>633436</commentid>
    <comment_count>1</comment_count>
      <attachid>143944</attachid>
    <who name="Rick Byers">rbyers</who>
    <bug_when>2012-05-24 18:25:10 -0700</bug_when>
    <thetext>Created attachment 143944
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>633442</commentid>
    <comment_count>2</comment_count>
    <who name="Rick Byers">rbyers</who>
    <bug_when>2012-05-24 18:30:45 -0700</bug_when>
    <thetext>Initial working patch.  This includes the entire contents of the patch in bug 85921 - I&apos;ll wait until that lands and resolve before requesting review of this path.

With this patch, if we&apos;re on platform that sets the TouchScreenDevice setting (currently Chromium for Windows and ChromeOS), then we can return true for the (pointer) (pointer:coarse) and (hover:0) queries.  Otherwise we behave exactly as if the media feature isn&apos;t supported at all.  Eg., I don&apos;t want to report anything for pointer:none or pointer:fine when we don&apos;t know whether or not there&apos;s a mouse attached.  I&apos;ll handle the mouse case for chromium in a follow-up CL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635341</commentid>
    <comment_count>3</comment_count>
      <attachid>143944</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-05-28 11:43:02 -0700</bug_when>
    <thetext>Comment on attachment 143944
Patch

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

&gt; Source/WebCore/css/MediaQueryEvaluator.cpp:542
&gt; +static PointerDeviceType getLeastCapablePrimaryPointerDeviceType(Frame* frame)

We generally dislike using &quot;get&quot; as a verb because it&apos;s such a weak verb.  Perhaps &quot;leastCapablePrimaryPointerDeviceType&quot; ?

&gt; Source/WebCore/css/MediaQueryEvaluator.cpp:547
&gt; +    // FIXME: Should also try to determine if we know we have a mouse.

Please use complete sentences in comments.  &quot;We should ...&quot;

&gt; Source/WebCore/css/MediaQueryEvaluator.cpp:557
&gt; +static bool hoverMediaFeatureEval(CSSValue *value, RenderStyle*, Frame* frame, MediaFeaturePrefix)

CSSValue *value =&gt; CSSValue* value

&gt; Source/WebCore/css/MediaQueryEvaluator.cpp:559
&gt; +    PointerDeviceType p = getLeastCapablePrimaryPointerDeviceType(frame);

p =&gt; type (Please use words for variable names, not letters.)

&gt; Source/WebCore/css/MediaQueryEvaluator.cpp:581
&gt; +      return p != NoPointer;

Four-space indent.

&gt; Source/WebCore/css/MediaQueryEvaluator.cpp:590
&gt; +    }

Bad indent.

&gt; LayoutTests/fast/media/mq-pointer-touchscreen.html:7
&gt; +  if (window.internals) {
&gt; +    internals.settings.setDeviceTouchScreen(true);
&gt; +  }

No need for { }

&gt; LayoutTests/fast/media/mq-pointer-touchscreen.html:41
&gt; +  &lt;p id=&quot;a&quot;&gt;This text should be green if some pointer is known to be available.&lt;/p&gt;
&gt; +  &lt;p id=&quot;b&quot;&gt;This text should be green if it&apos;s known that no pointers are available.&lt;/p&gt;
&gt; +  &lt;p id=&quot;c&quot;&gt;This text should be green if a touch screen is known to be available.&lt;/p&gt;
&gt; +  &lt;p id=&quot;d&quot;&gt;This text should be green if a mouse (but not a coarse pointer) is known to be available.&lt;/p&gt;
&gt; +  &lt;p id=&quot;e&quot;&gt;This text should be green if the least capable primary pointer supports hover.&lt;/p&gt;
&gt; +  &lt;p id=&quot;f&quot;&gt;This text should be green if the least capable primary pointer doesn&apos;t support hover.&lt;/p&gt;
&gt; +  &lt;p id=&quot;g&quot;&gt;This text should be green if the least capable primary pointer supports hover.&lt;/p&gt;

Can we use getComputedStyle or something so we can use a text test rather than a render tree dump?  Render tree dumps are annoying because they&apos;re different on every platform.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635343</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-05-28 11:44:02 -0700</bug_when>
    <thetext>By the way, you can just upload the diff after some other patch if you like.  It&apos;s fine to upload patches that don&apos;t apply to trunk or that don&apos;t compile.  That&apos;s better than having a bunch of unrelated changes in your patch, which make it hard to review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635344</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-05-28 11:44:24 -0700</bug_when>
    <thetext>This patch is not Chromium specific.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635373</commentid>
    <comment_count>6</comment_count>
      <attachid>144388</attachid>
    <who name="Rick Byers">rbyers</who>
    <bug_when>2012-05-28 13:03:50 -0700</bug_when>
    <thetext>Created attachment 144388
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635374</commentid>
    <comment_count>7</comment_count>
      <attachid>143944</attachid>
    <who name="Rick Byers">rbyers</who>
    <bug_when>2012-05-28 13:05:07 -0700</bug_when>
    <thetext>Comment on attachment 143944
Patch

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

&gt;&gt; Source/WebCore/css/MediaQueryEvaluator.cpp:542
&gt;&gt; +static PointerDeviceType getLeastCapablePrimaryPointerDeviceType(Frame* frame)
&gt; 
&gt; We generally dislike using &quot;get&quot; as a verb because it&apos;s such a weak verb.  Perhaps &quot;leastCapablePrimaryPointerDeviceType&quot; ?

Done

&gt;&gt; Source/WebCore/css/MediaQueryEvaluator.cpp:547
&gt;&gt; +    // FIXME: Should also try to determine if we know we have a mouse.
&gt; 
&gt; Please use complete sentences in comments.  &quot;We should ...&quot;

Done

&gt;&gt; Source/WebCore/css/MediaQueryEvaluator.cpp:557
&gt;&gt; +static bool hoverMediaFeatureEval(CSSValue *value, RenderStyle*, Frame* frame, MediaFeaturePrefix)
&gt; 
&gt; CSSValue *value =&gt; CSSValue* value

Done

&gt;&gt; Source/WebCore/css/MediaQueryEvaluator.cpp:559
&gt;&gt; +    PointerDeviceType p = getLeastCapablePrimaryPointerDeviceType(frame);
&gt; 
&gt; p =&gt; type (Please use words for variable names, not letters.)

Done

&gt;&gt; Source/WebCore/css/MediaQueryEvaluator.cpp:581
&gt;&gt; +      return p != NoPointer;
&gt; 
&gt; Four-space indent.

Done.

&gt;&gt; Source/WebCore/css/MediaQueryEvaluator.cpp:590
&gt;&gt; +    }
&gt; 
&gt; Bad indent.

Done

&gt;&gt; LayoutTests/fast/media/mq-pointer-touchscreen.html:7
&gt;&gt; +  }
&gt; 
&gt; No need for { }

Done

&gt;&gt; LayoutTests/fast/media/mq-pointer-touchscreen.html:41
&gt;&gt; +  &lt;p id=&quot;g&quot;&gt;This text should be green if the least capable primary pointer supports hover.&lt;/p&gt;
&gt; 
&gt; Can we use getComputedStyle or something so we can use a text test rather than a render tree dump?  Render tree dumps are annoying because they&apos;re different on every platform.

Sure, I&apos;ll start working on that now.  I debated between the two approaches.  I&apos;d like to avoid having one test file per hardware configuration (since there will be several more), and the resulting duplication across the files.  So once I make this a JS test, I&apos;ll also refactor to have one test for &quot;pointer&quot; and one test for &quot;hover&quot; - which each test checking all hardware configurations.  

I thought it was nicer for CSS tests to be more declarative like this (at least a lot of the existing media query tests use this style), but I didn&apos;t realize the output would be different on different platforms (presumably the size of text changes?).  In general wouldn&apos;t it be better to have some modes where DumpRenderTree omits details that are known to vary across platforms and considered irrelevant to the test (in this case all sizes)?  The general approach of declarative layout testing seems nice to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635376</commentid>
    <comment_count>8</comment_count>
    <who name="Rick Byers">rbyers</who>
    <bug_when>2012-05-28 13:06:43 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; By the way, you can just upload the diff after some other patch if you like.  It&apos;s fine to upload patches that don&apos;t apply to trunk or that don&apos;t compile.  That&apos;s better than having a bunch of unrelated changes in your patch, which make it hard to review

Thanks.  I looked for a baseline option to &quot;webkit-patch upload&quot;, but of course I can just create a separate non-compiling git branch.  Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635408</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-05-28 14:20:53 -0700</bug_when>
    <thetext>&gt; I thought it was nicer for CSS tests to be more declarative like this (at least a lot of the existing media query tests use this style), but I didn&apos;t realize the output would be different on different platforms (presumably the size of text changes?).

Yeah.

&gt; In general wouldn&apos;t it be better to have some modes where DumpRenderTree omits details that are known to vary across platforms and considered irrelevant to the test (in this case all sizes)?  The general approach of declarative layout testing seems nice to me.

Yes, we&apos;d like to do that, but it&apos;s somewhat tricky and no one has done it yet.  We might even be able to get pixel perfect in most cases, at least for the Chromium port, by using mock scroll bars and using some repeatable Skia text rendering.(In reply to comment #8)

&gt; Thanks.  I looked for a baseline option to &quot;webkit-patch upload&quot;, but of course I can just create a separate non-compiling git branch.  Done.

I usually use this option:

abarth@quadzen:~/svn/webkit$ ./Tools/Scripts/webkit-patch help upload
[...]
  -g GIT_COMMIT, --git-commit=GIT_COMMIT
                        Operate on a local commit. If a range, the commits are
                        squashed into one. &lt;ref&gt;.... includes the working copy
                        changes. UPSTREAM can be used for the
                        upstream/tracking branch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635410</commentid>
    <comment_count>10</comment_count>
      <attachid>144388</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-05-28 14:25:29 -0700</bug_when>
    <thetext>Comment on attachment 144388
Patch

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

&gt; Source/WebCore/css/MediaQueryEvaluator.cpp:589
&gt; +    return (pointer == NoPointer &amp;&amp; str == &quot;none&quot;)
&gt; +        || (pointer == TouchPointer &amp;&amp; str == &quot;coarse&quot;)
&gt; +        || (pointer == MousePointer &amp;&amp; str == &quot;fine&quot;);

To confirm, this is supposed to be case sensitive?

&gt; LayoutTests/fast/media/mq-pointer-touchscreen.html:15
&gt; +@media screen and (pointer:coarse) {

Can you add some tests for mixed case?

&gt; LayoutTests/fast/media/mq-pointer-touchscreen.html:24
&gt; +@media screen and (hover:0) {

You can add some tests for non-numeric values?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635411</commentid>
    <comment_count>11</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-05-28 14:25:48 -0700</bug_when>
    <thetext>@tabatkins: Should we be using a vendor prefix in this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635415</commentid>
    <comment_count>12</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-05-28 14:29:44 -0700</bug_when>
    <thetext>I wonder if we should have an ENABLE(TOUCH_MEDIA_QUERIES) macro for this patch.  It seems like other ports won&apos;t want to ship this code if they haven&apos;t wired up the settings property.

Also, we probably should email webkit-dev to let folks know we&apos;re implementing this feature: http://www.webkit.org/coding/adding-features.html

I&apos;m also slightly worried that we&apos;re doing the wrong thing in the common case.  In the common case, we have a mouse pointer, but we&apos;re treating that case as &quot;unknown&quot; currently.  If folks write content using this feature, that means that &quot;unknown&quot; will de facto mean &quot;mouse&quot;.  It seems better to wire in a setting for whether the device supports mice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635420</commentid>
    <comment_count>13</comment_count>
    <who name="Rick Byers">rbyers</who>
    <bug_when>2012-05-28 14:47:27 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; I wonder if we should have an ENABLE(TOUCH_MEDIA_QUERIES) macro for this patch.  It seems like other ports won&apos;t want to ship this code if they haven&apos;t wired up the settings property.

I was hoping this wouldn&apos;t be necessary since I&apos;ve been careful to make the PointerUnknown case behave identically to the case where the media query isn&apos;t supported at all.  Let me know if you think it&apos;s required.  Do I then need to request a bot be setup that runs with this feature enabled?
 
&gt; Also, we probably should email webkit-dev to let folks know we&apos;re implementing this feature: http://www.webkit.org/coding/adding-features.html

Sure, I&apos;m happy to do that.  Let&apos;s answer these other two questions firs though.

&gt; I&apos;m also slightly worried that we&apos;re doing the wrong thing in the common case.  In the common case, we have a mouse pointer, but we&apos;re treating that case as &quot;unknown&quot; currently.  If folks write content using this feature, that means that &quot;unknown&quot; will de facto mean &quot;mouse&quot;.  It seems better to wire in a setting for whether the device supports mice.

Note that the &quot;unknown&quot; case is identical to the &quot;feature not supported&quot; case. Having to handle the not supported case is something sites will need to do anyway to support browsers that don&apos;t yet have this feature.  Since sites will (for some time anyway) always need some fallback decision in their app, it seems better to me to leave that decision to the app then to try to apply some heuristic behavior ourselves (like encouraging ports to assume there is a mouse when we&apos;re not sure).

I agree though that I&apos;m not 100% positive this is the right approach (this is what I was describing in my original e-mail to you).  I can&apos;t think of a concrete scenario where it might be a problem though, any suggestions?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635479</commentid>
    <comment_count>14</comment_count>
    <who name="Rick Byers">rbyers</who>
    <bug_when>2012-05-28 17:51:29 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #12)
&gt; &gt; I&apos;m also slightly worried that we&apos;re doing the wrong thing in the common case.  In the common case, we have a mouse pointer, but we&apos;re treating that case as &quot;unknown&quot; currently.  If folks write content using this feature, that means that &quot;unknown&quot; will de facto mean &quot;mouse&quot;.  It seems better to wire in a setting for whether the device supports mice.
&gt; 
&gt; Note that the &quot;unknown&quot; case is identical to the &quot;feature not supported&quot; case. Having to handle the not supported case is something sites will need to do anyway to support browsers that don&apos;t yet have this feature.  Since sites will (for some time anyway) always need some fallback decision in their app, it seems better to me to leave that decision to the app then to try to apply some heuristic behavior ourselves (like encouraging ports to assume there is a mouse when we&apos;re not sure).
&gt; 
&gt; I agree though that I&apos;m not 100% positive this is the right approach (this is what I was describing in my original e-mail to you).  I can&apos;t think of a concrete scenario where it might be a problem though, any suggestions?

Also, just to be clear, I intend to implement the mouse case for chromium.  It&apos;s just not as urgent as touch for me right now (I really need pointer:coarse in Chrome 21).  I can split the mouse piece out to a separate bug if you like.

Note that &quot;unknown&quot; (i.e. both (pointer)&quot; and (pointer:none) being false) already de facto means &quot;mouse&quot; - that&apos;s the web as it exists today.  So I don&apos;t think I&apos;m changing anything in that respect.  First step is for (pointer:coarse) to mean &quot;definitely a touch screen&quot;, then later I&apos;ll add (pointer:fine) to mean definitely a mouse but no touch screen, and (pointer:none) to mean definitely no pointer.  Sound reasonable?

If you think it&apos;s important then I&apos;m willing to wait and do the whole thing in one big CL instead.  Let me know.  Thanks!
   Rick</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635481</commentid>
    <comment_count>15</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-05-28 18:01:41 -0700</bug_when>
    <thetext>If you add an ENABLE macro, then the order of implementation is less important because each port can decide whether or not to enable the feature.  Currently, the patch doesn&apos;t have an ENABLE macro, which means that it will report &quot;unknown&quot; for non-Chromium ports, even if they are using touch devices.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>636331</commentid>
    <comment_count>16</comment_count>
      <attachid>144600</attachid>
    <who name="Rick Byers">rbyers</who>
    <bug_when>2012-05-29 12:31:06 -0700</bug_when>
    <thetext>Created attachment 144600
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>636334</commentid>
    <comment_count>17</comment_count>
    <who name="Rick Byers">rbyers</who>
    <bug_when>2012-05-29 12:32:32 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 144388 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=144388&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/css/MediaQueryEvaluator.cpp:589
&gt; &gt; +    return (pointer == NoPointer &amp;&amp; str == &quot;none&quot;)
&gt; &gt; +        || (pointer == TouchPointer &amp;&amp; str == &quot;coarse&quot;)
&gt; &gt; +        || (pointer == MousePointer &amp;&amp; str == &quot;fine&quot;);
&gt; 
&gt; To confirm, this is supposed to be case sensitive?

It&apos;s case insensitive but it&apos;s normalized to lowercase by the parsing code.  I&apos;ve added tests that verify this.

&gt; &gt; LayoutTests/fast/media/mq-pointer-touchscreen.html:15
&gt; &gt; +@media screen and (pointer:coarse) {
&gt; 
&gt; Can you add some tests for mixed case?

Done

&gt; &gt; LayoutTests/fast/media/mq-pointer-touchscreen.html:24
&gt; &gt; +@media screen and (hover:0) {
&gt; 
&gt; You can add some tests for non-numeric values?

Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>636342</commentid>
    <comment_count>18</comment_count>
    <who name="Rick Byers">rbyers</who>
    <bug_when>2012-05-29 12:46:08 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; If you add an ENABLE macro, then the order of implementation is less important because each port can decide whether or not to enable the feature.  Currently, the patch doesn&apos;t have an ENABLE macro, which means that it will report &quot;unknown&quot; for non-Chromium ports, even if they are using touch devices.

What exactly do you mean &quot;report unknown&quot;?  

If I add an ENABLE macro, then ports that haven&apos;t opted into this will return &apos;false&apos; for all relevant queries.  Without the ENABLE macro, ports that haven&apos;t opted into supplying pointer device data return &apos;false&apos; for all relevant queries - i.e. exactly the same behavior as with the macro.  So the two choices we&apos;re debating have identical behavior.

That said, if there&apos;s other reasons to use an ENABLE macro I&apos;m fine doing that.  I just want to make sure I&apos;m clear on the benefits it provides, and importantly what the compat implications of enabling the feature are.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>636555</commentid>
    <comment_count>19</comment_count>
      <attachid>144600</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-05-29 16:42:52 -0700</bug_when>
    <thetext>Comment on attachment 144600
Patch

Thanks for clarifying!  I see that now in the spreadsheet you gave me.  My apologies, I was confused before.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>636685</commentid>
    <comment_count>20</comment_count>
    <who name="Rick Byers">rbyers</who>
    <bug_when>2012-05-29 18:29:12 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; (From update of attachment 144600 [details])
&gt; Thanks for clarifying!  I see that now in the spreadsheet you gave me.  My apologies, I was confused before.

Cool, thanks!  I&apos;ll make that post to webkit-dev before putting this in the commit queue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>636687</commentid>
    <comment_count>21</comment_count>
    <who name="Rick Byers">rbyers</who>
    <bug_when>2012-05-29 18:30:09 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; @tabatkins: Should we be using a vendor prefix in this patch?

I spoke with Tab over IM and he said &quot;Honestly, I&apos;d recommend no prefix.  This is not going to be controversial.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>636706</commentid>
    <comment_count>22</comment_count>
    <who name="Rick Byers">rbyers</who>
    <bug_when>2012-05-29 18:43:17 -0700</bug_when>
    <thetext>I&apos;ve filed https://bugs.webkit.org/show_bug.cgi?id=87806 to track adding the mouse support piece, since my patch here is just about touch screens.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>637283</commentid>
    <comment_count>23</comment_count>
      <attachid>144600</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-30 09:00:46 -0700</bug_when>
    <thetext>Comment on attachment 144600
Patch

Rejecting attachment 144600 from commit-queue.

rbyers@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>637482</commentid>
    <comment_count>24</comment_count>
      <attachid>144600</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-30 11:34:45 -0700</bug_when>
    <thetext>Comment on attachment 144600
Patch

Rejecting attachment 144600 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
 of 2 hunks FAILED -- saving rejects to file Source/WebCore/testing/InternalSettings.h.rej
patching file Source/WebCore/testing/InternalSettings.idl
patching file LayoutTests/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file LayoutTests/fast/media/mq-pointer-expected.txt
patching file LayoutTests/fast/media/mq-pointer.html

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--force&apos;, u&apos;--reviewer&apos;, u&apos;Adam Barth&apos;]&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue/

Full output: http://queues.webkit.org/results/12849950</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>637758</commentid>
    <comment_count>25</comment_count>
      <attachid>144940</attachid>
    <who name="Rick Byers">rbyers</who>
    <bug_when>2012-05-30 15:30:31 -0700</bug_when>
    <thetext>Created attachment 144940
Merge with trunk, resolve conflicts</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>637976</commentid>
    <comment_count>26</comment_count>
      <attachid>144940</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-30 20:56:38 -0700</bug_when>
    <thetext>Comment on attachment 144940
Merge with trunk, resolve conflicts

Clearing flags on attachment: 144940

Committed r119045: &lt;http://trac.webkit.org/changeset/119045&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>637977</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-30 20:56:46 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143944</attachid>
            <date>2012-05-24 18:25:10 -0700</date>
            <delta_ts>2012-05-28 13:05:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87403-20120524212509.patch</filename>
            <type>text/plain</type>
            <size>34293</size>
            <attacher name="Rick Byers">rbyers</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4NDU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjU1YTg4NmVlNzE1NjYw
NTMzNDNhM2QzNzJkYTlhYTFmMTU3NzczYy4uMjU2YWU2MmNlNzQyNTAzMzIxYzlhNWQyYWZmYWU5
MjE2OTc0Yzk3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDEyLTA1LTI0ICBSaWNr
IEJ5ZXJzICA8cmJ5ZXJzQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEltcGxl
bWVudCBwb2ludGVyIGFuZCBob3ZlciBDU1MgbWVkaWEgZmVhdHVyZXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3NDAzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGluaXRpYWwgc3VwcG9ydCBmb3Ig
dGhlIHBvaW50ZXIgYW5kIGhvdmVyIG1lZGlhIGZlYXR1cmVzIGFzIGRlZmluZWQKKyAgICAgICAg
aGVyZTogCisgICAgICAgIGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2NzczQtbWVkaWFxdWVyaWVz
LyNwb2ludGVyCisgICAgICAgIGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2NzczQtbWVkaWFxdWVy
aWVzLyNob3ZlcgorCisgICAgICAgIEZvciBub3cgdGhpcyBvbmx5IHN1cHBvcnRzIHRoZSBjYXNl
IHdoZXJlIHdlIGtub3cgYSB0b3VjaCBzY3JlZW4gaXMKKyAgICAgICAgYXZhaWxhYmxlIChjdXJy
ZW50bHkga25vd24gb25seSBmb3IgdGhlIGNocm9taXVtIHBvcnQgb24gY2VydGFpbgorICAgICAg
ICBwbGF0Zm9ybXMpLiAgQWxsIG90aGVyIGNhc2VzIGNvbnRpbnVlIHRvIGJlaGF2ZSBhcyBpZiB0
aGUgbWVkaWEgZmVhdHVyZQorICAgICAgICBpc24ndCBzdXBwb3J0ZWQuCisKKyAgICAgICAgVGVz
dHM6IGZhc3QvbWVkaWEvbXEtcG9pbnRlci10b3VjaHNjcmVlbi5odG1sCisgICAgICAgICAgICAg
ICBmYXN0L21lZGlhL21xLXBvaW50ZXIuaHRtbAorCisgICAgICAgICogY3NzL0NTU1ZhbHVlS2V5
d29yZHMuaW46CisgICAgICAgICogY3NzL01lZGlhRmVhdHVyZU5hbWVzLmg6CisgICAgICAgIChN
ZWRpYUZlYXR1cmVOYW1lcyk6CisgICAgICAgICogY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Z2V0TGVhc3RDYXBhYmxlUHJpbWFyeVBvaW50ZXJEZXZpY2VU
eXBlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6aG92ZXJNZWRpYUZl
YXR1cmVFdmFsKToKKyAgICAgICAgKFdlYkNvcmU6OnBvaW50ZXJNZWRpYUZlYXR1cmVFdmFsKToK
KyAgICAgICAgCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkludGVybmFsU2V0dGluZ3M6OkludGVybmFsU2V0dGluZ3MpOgorICAgICAg
ICAoV2ViQ29yZTo6SW50ZXJuYWxTZXR0aW5nczo6cmVzdG9yZVRvKToKKyAgICAgICAgKFdlYkNv
cmU6OkludGVybmFsU2V0dGluZ3M6OnNldERldmljZVRvdWNoU2NyZWVuKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5oOgorICAgICAgICAo
SW50ZXJuYWxTZXR0aW5ncyk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlk
bDoKKworICAgICAgICAqKiogVE9ETyAqKiogTk9UIEZPUiBTVUJNSVNTSU9OIFlFVAorICAgICAg
ICBUaGVzZSBjaGFuZ2VzIGFyZSBmcm9tIGJ1ZyA4NTkyMSB3aGljaCB0aGlzIGNoYW5nZSBkZXBl
bmRzIG9uLiAgT25jZQorICAgICAgICB0aGF0IENMIGxhbmRzLCBJJ2xsIHJlbW92ZSB0aGVtIGZy
b20gdGhpcyBDTC4KKworICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2V0dGluZ3M6OlNldHRpbmdzKToKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6c2V0RGV2aWNlVG91Y2hTY3JlZW4pOgorICAgICAg
ICAoV2ViQ29yZTo6U2V0dGluZ3M6OmlzRGV2aWNlVG91Y2hTY3JlZW4pOgorICAgICAgICAoU2V0
dGluZ3MpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1BvcHVwTGlzdEJveC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQb3B1cExpc3RCb3g6OmdldFJvd0hlaWdodCk6CisgICAgICAgICog
cGxhdGZvcm0vY2hyb21pdW0vUG9wdXBMaXN0Qm94Lmg6CisgICAgICAgIChQb3B1cENvbnRhaW5l
clNldHRpbmdzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cE1lbnVDaHJvbWl1bTo6c2hvdyk6CisKIDIw
MTItMDUtMjQgIFJheW1vbmQgVG95ICA8cnRveUBnb29nbGUuY29tPgogCiAgICAgICAgIFVzZSAz
Mi1ieXRlIGFsaWdubWVudCBpbiBBdWRpb0FycmF5IGlmIHVzaW5nIFdFQkFVRElPX0ZGTVBFRwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBjOGNiOGYwNzdiNzViYTJkYzhkYzljYWMwNmJj
YWM3ZDA4Mjg4ZjU1Li5iNDZmNDUyNDkwNTQ3ZGZlMDllOWRkZjRkNTUxNzE2YTFiZWIwYTlmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTA1LTI0ICBS
aWNrIEJ5ZXJzICA8cmJ5ZXJzQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIElt
cGxlbWVudCBwb2ludGVyIGFuZCBob3ZlciBDU1MgbWVkaWEgZmVhdHVyZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3NDAzCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKioqIFRPRE8gKioqIE5PVCBGT1Ig
U1VCTUlTU0lPTiBZRVQKKyAgICAgICAgVGhlc2UgY2hhbmdlcyBhcmUgZnJvbSBidWcgODU5MjEg
d2hpY2ggdGhpcyBjaGFuZ2UgZGVwZW5kcyBvbi4gIE9uY2UKKyAgICAgICAgdGhhdCBDTCBsYW5k
cywgSSdsbCByZW1vdmUgdGhlbSBmcm9tIHRoaXMgQ0wuCisKKyAgICAgICAgKiBwdWJsaWMvV2Vi
U2V0dGluZ3MuaDoKKyAgICAgICAgKiBzcmMvV2ViU2V0dGluZ3NJbXBsLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViU2V0dGluZ3NJbXBsOjpkZWZhdWx0RGV2aWNlU2NhbGVGYWN0b3IpOgorICAg
ICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU2V0dGluZ3NJbXBsOjpzZXREZXZp
Y2VUb3VjaFNjcmVlbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNldHRpbmdzSW1wbDo6aXNEZXZp
Y2VUb3VjaFNjcmVlbik6CisgICAgICAgICogc3JjL1dlYlNldHRpbmdzSW1wbC5oOgorICAgICAg
ICAoV2ViU2V0dGluZ3NJbXBsKToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6YXBwbHlBdXRvZmlsbFN1Z2dlc3Rpb25zKToKKyAg
ICAgICAgKiB0ZXN0cy9Qb3B1cE1lbnVUZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2VsZWN0
UG9wdXBNZW51VGVzdDo6U2V0VXApOgorICAgICAgICAoV2ViS2l0OjpTZWxlY3RQb3B1cE1lbnVU
ZXN0OjpUZWFyRG93bik6CisgICAgICAgIChTZWxlY3RQb3B1cE1lbnVUZXN0KToKKyAgICAgICAg
KFdlYktpdDo6VEVTVF9GKToKKwogMjAxMi0wNS0yNCAgQW50b2luZSBMYWJvdXIgIDxwaW1hbkBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBBZGQgYSBzZXRGb3JjZVJlbmRlclN1
cmZhY2UgdG8gV2ViTGF5ZXIgZm9yIHRlc3QvYmVuY2ggcHVycG9zZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4gYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTVmFsdWVLZXl3b3Jkcy5pbgppbmRleCBiNjI2OTQ5ZTg2ZmU4NWViZjUxNDg5MzQyMDQ2N2Yy
NzljYzczM2YxLi5mZDFiM2EzMTVhOWI2NWY5ZThiMTQzZWMxYTBiZDFjMDMwMGM3YjZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgpAQCAtODk3LDYgKzg5NywxMSBAQCB3
cmFwCiAvLyAtd2Via2l0LWxpbmUtYWxpZ24KIGVkZ2VzCiAKKy8vIChwb2ludGVyOikgbWVkaWEg
ZmVhdHVyZQorLy8gbm9uZQorY29hcnNlCitmaW5lCisKICNpZiBkZWZpbmVkKEVOQUJMRV9DU1Nf
RklMVEVSUykgJiYgRU5BQkxFX0NTU19GSUxURVJTCiAvLyAtd2Via2l0LWZpbHRlcgogI2lmIGRl
ZmluZWQoRU5BQkxFX0NTU19TSEFERVJTKSAmJiBFTkFCTEVfQ1NTX1NIQURFUlMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUZlYXR1cmVOYW1lcy5oIGIvU291cmNlL1dlYkNv
cmUvY3NzL01lZGlhRmVhdHVyZU5hbWVzLmgKaW5kZXggMWRhYTRlOWUxNTczODUwNDAwZWE2ZWY3
YWUzYTY2NmQ1MWFiNzgzNi4uYjA4NDM5ZTRhMDE4MzQ5MjJmZGEwMGU4YWQ5N2VmZjIwZmJlYzBm
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhRmVhdHVyZU5hbWVzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhRmVhdHVyZU5hbWVzLmgKQEAgLTMwLDYgKzMwLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIG1hY3JvKGdyaWQsICJncmlkIikgXAogICAgIG1h
Y3JvKG1vbm9jaHJvbWUsICJtb25vY2hyb21lIikgXAogICAgIG1hY3JvKGhlaWdodCwgImhlaWdo
dCIpIFwKKyAgICBtYWNybyhob3ZlciwgImhvdmVyIikgXAogICAgIG1hY3JvKHdpZHRoLCAid2lk
dGgiKSBcCiAgICAgbWFjcm8ob3JpZW50YXRpb24sICJvcmllbnRhdGlvbiIpIFwKICAgICBtYWNy
byhhc3BlY3RfcmF0aW8sICJhc3BlY3QtcmF0aW8iKSBcCkBAIC01NSw2ICs1Niw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyhtaW5faGVpZ2h0LCAibWluLWhlaWdodCIpIFwKICAg
ICBtYWNybyhtaW5fbW9ub2Nocm9tZSwgIm1pbi1tb25vY2hyb21lIikgXAogICAgIG1hY3JvKG1p
bl93aWR0aCwgIm1pbi13aWR0aCIpIFwKKyAgICBtYWNybyhwb2ludGVyLCAicG9pbnRlciIpIFwK
ICAgICBtYWNybyh0cmFuc2Zvcm1fMmQsICItd2Via2l0LXRyYW5zZm9ybS0yZCIpIFwKICAgICBt
YWNybyh0cmFuc2Zvcm1fM2QsICItd2Via2l0LXRyYW5zZm9ybS0zZCIpIFwKICAgICBtYWNybyh0
cmFuc2l0aW9uLCAiLXdlYmtpdC10cmFuc2l0aW9uIikgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL01l
ZGlhUXVlcnlFdmFsdWF0b3IuY3BwCmluZGV4IDRmMDQ1YzY3YWVlYjE5ZDZhZTQwMTFiMmU1NDJi
MGY2MzQ4ZDg1YzUuLjM0Y2FlMDlkYmQ5YWEyMWQ1OTg4NjA3ZTc3ZWYzNGIzMWI2MzViNGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHAKQEAgLTQ1LDYgKzQ1
LDcgQEAKICNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcu
aCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5j
bHVkZSAiU3R5bGVSZXNvbHZlci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKQEAgLTUz
Niw2ICs1MzcsNTggQEAgc3RhdGljIGJvb2wgdmlld19tb2RlTWVkaWFGZWF0dXJlRXZhbChDU1NW
YWx1ZSogdmFsdWUsIFJlbmRlclN0eWxlKiwgRnJhbWUqIGZyYW0KICAgICByZXR1cm4gUGFnZTo6
c3RyaW5nVG9WaWV3TW9kZShzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKS0+
Z2V0U3RyaW5nVmFsdWUoKSkgPT0gZnJhbWUtPnBhZ2UoKS0+dmlld01vZGUoKTsKIH0KIAorZW51
bSBQb2ludGVyRGV2aWNlVHlwZSB7IFRvdWNoUG9pbnRlciwgTW91c2VQb2ludGVyLCBOb1BvaW50
ZXIsIFVua25vd25Qb2ludGVyIH07CisKK3N0YXRpYyBQb2ludGVyRGV2aWNlVHlwZSBnZXRMZWFz
dENhcGFibGVQcmltYXJ5UG9pbnRlckRldmljZVR5cGUoRnJhbWUqIGZyYW1lKQoreworICAgIGlm
IChmcmFtZS0+c2V0dGluZ3MoKS0+aXNEZXZpY2VUb3VjaFNjcmVlbigpKQorICAgICAgICByZXR1
cm4gVG91Y2hQb2ludGVyOworCisgICAgLy8gRklYTUU6IFNob3VsZCBhbHNvIHRyeSB0byBkZXRl
cm1pbmUgaWYgd2Uga25vdyB3ZSBoYXZlIGEgbW91c2UuCisgICAgLy8gV2hlbiB3ZSBkbyB0aGlz
LCB3ZSdsbCBhbHNvIG5lZWQgdG8gZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIGtub3duIG5vdCB0bwor
ICAgIC8vIGhhdmUgbW91c2Ugb3IgdG91Y2ggc2NyZWVuIChOb1BvaW50ZXIpIGFuZCB1bmtub3du
IChVbmtub3duUG9pbnRlcikuCisgICAgLy8gV2UgY291bGQgYWxzbyB0YWtlIGludG8gYWNjb3Vu
dCBvdGhlciBwcmVmZXJlbmNlcyBsaWtlIGFjY2Vzc2liaWxpdHkKKyAgICAvLyBzZXR0aW5ncyB0
byBkZWNpZGUgd2hpY2ggb2YgdGhlIGF2YWlsYWJsZSBwb2ludGVycyBzaG91bGQgYmUgY29uc2lk
ZXJlZAorICAgIC8vICJwcmltYXJ5Ii4KKworICAgIHJldHVybiBVbmtub3duUG9pbnRlcjsKK30K
Kworc3RhdGljIGJvb2wgaG92ZXJNZWRpYUZlYXR1cmVFdmFsKENTU1ZhbHVlICp2YWx1ZSwgUmVu
ZGVyU3R5bGUqLCBGcmFtZSogZnJhbWUsIE1lZGlhRmVhdHVyZVByZWZpeCkKK3sKKyAgICBQb2lu
dGVyRGV2aWNlVHlwZSBwID0gZ2V0TGVhc3RDYXBhYmxlUHJpbWFyeVBvaW50ZXJEZXZpY2VUeXBl
KGZyYW1lKTsKKyAgICBpZiAocCA9PSBVbmtub3duUG9pbnRlcikKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgZmxvYXQgbnVtYmVyID0gMTsKKyAgICBpZiAodmFsdWUpIHsKKyAgICAgICAg
aWYgKCFudW1iZXJWYWx1ZSh2YWx1ZSwgbnVtYmVyKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisKKyAgICByZXR1cm4gKHAgPT0gTm9Qb2ludGVyICYmICFudW1iZXIpCisgICAg
ICAgIHx8IChwID09IFRvdWNoUG9pbnRlciAmJiAhbnVtYmVyKQorICAgICAgICB8fCAocCA9PSBN
b3VzZVBvaW50ZXIgJiYgbnVtYmVyID09IDEpOworfQorCitzdGF0aWMgYm9vbCBwb2ludGVyTWVk
aWFGZWF0dXJlRXZhbChDU1NWYWx1ZSAqdmFsdWUsIFJlbmRlclN0eWxlKiwgRnJhbWUqIGZyYW1l
LCBNZWRpYUZlYXR1cmVQcmVmaXgpCit7CisgICAgUG9pbnRlckRldmljZVR5cGUgcCA9IGdldExl
YXN0Q2FwYWJsZVByaW1hcnlQb2ludGVyRGV2aWNlVHlwZShmcmFtZSk7CisgICAgaWYgKHAgPT0g
VW5rbm93blBvaW50ZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghdmFsdWUp
CisgICAgICByZXR1cm4gcCAhPSBOb1BvaW50ZXI7CisKKyAgICBpZiAoIXZhbHVlLT5pc1ByaW1p
dGl2ZVZhbHVlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFN0cmluZyBzdHIgPSBz
dGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKS0+Z2V0U3RyaW5nVmFsdWUoKTsK
KyAgICByZXR1cm4gKHAgPT0gTm9Qb2ludGVyICYmIHN0ciA9PSAibm9uZSIpCisgICAgICAgIHx8
IChwID09IFRvdWNoUG9pbnRlciAmJiBzdHIgPT0gImNvYXJzZSIpCisgICAgICAgIHx8IChwID09
IE1vdXNlUG9pbnRlciAmJiBzdHIgPT0gImZpbmUiKTsKKyAgICB9CisKIHN0YXRpYyB2b2lkIGNy
ZWF0ZUZ1bmN0aW9uTWFwKCkKIHsKICAgICAvLyBDcmVhdGUgdGhlIHRhYmxlLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NldHRpbmdzLmNwcAppbmRleCBhOGY0MGRjYzAxNTQ4OTcyZmQ0MzRlOGVjMDg1ZGU4ZTA5YmNm
ZTY4Li42YTAwYWY5NmQ2MmM1NjMxNDg5ODc4OTQwZjE5ODllZjc3YTNkMTk5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NldHRpbmdzLmNwcApAQCAtMjY4LDYgKzI2OCw3IEBAIFNldHRpbmdzOjpTZXR0aW5ncyhQ
YWdlKiBwYWdlKQogICAgICwgbV9zaG91bGRSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbihmYWxzZSkK
ICAgICAsIG1fd2FudHNCYWxhbmNlZFNldERlZmVyc0xvYWRpbmdCZWhhdmlvcihmYWxzZSkKICAg
ICAsIG1fcmVxdWVzdEFuaW1hdGlvbkZyYW1lRW5hYmxlZCh0cnVlKQorICAgICwgbV9kZXZpY2VU
b3VjaFNjcmVlbihmYWxzZSkKICAgICAsIG1fbmVlZHNEaWRGaW5pc2hMb2FkT3JkZXJRdWlyayhm
YWxzZSkKICAgICAsIG1fZml4ZWRQb3NpdGlvbkNyZWF0ZXNTdGFja2luZ0NvbnRleHQoZmFsc2Up
CiAgICAgLCBtX2xvYWRzSW1hZ2VzQXV0b21hdGljYWxseVRpbWVyKHRoaXMsICZTZXR0aW5nczo6
bG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5VGltZXJGaXJlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaApp
bmRleCBmYmQ4NTYzMDBhMmVjMjU3NmNiMzdjNGEyMWQ2ZTA4NTZlMTIwNzBlLi5mYzhlMGM4MmYy
YzMzN2E3YTIxNzNlZWYxZDQzMGQ4MzE3ZjQzNzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NldHRpbmdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCkBA
IC01NzAsNiArNTcwLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHNldFJl
cXVlc3RBbmltYXRpb25GcmFtZUVuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1fcmVxdWVzdEFuaW1h
dGlvbkZyYW1lRW5hYmxlZCA9IGVuYWJsZWQ7IH0KICAgICAgICAgYm9vbCByZXF1ZXN0QW5pbWF0
aW9uRnJhbWVFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0QW5pbWF0aW9uRnJhbWVF
bmFibGVkOyB9CiAKKyAgICAgICAgdm9pZCBzZXREZXZpY2VUb3VjaFNjcmVlbihib29sIGVuYWJs
ZWQpIHsgbV9kZXZpY2VUb3VjaFNjcmVlbiA9IGVuYWJsZWQ7IH0KKyAgICAgICAgYm9vbCBpc0Rl
dmljZVRvdWNoU2NyZWVuKCkgY29uc3QgeyByZXR1cm4gbV9kZXZpY2VUb3VjaFNjcmVlbjsgfQor
CiAgICAgICAgIHZvaWQgc2V0TmVlZHNEaWRGaW5pc2hMb2FkT3JkZXJRdWlyayhib29sIG5lZWRz
UXVpcmspIHsgbV9uZWVkc0RpZEZpbmlzaExvYWRPcmRlclF1aXJrID0gbmVlZHNRdWlyazsgfQog
ICAgICAgICBib29sIG5lZWRzRGlkRmluaXNoTG9hZE9yZGVyUXVpcmsoKSBjb25zdCB7IHJldHVy
biBtX25lZWRzRGlkRmluaXNoTG9hZE9yZGVyUXVpcms7IH0KIApAQCAtNzQzLDYgKzc0Niw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBtX3Nob3VsZFJlc3BlY3RJbWFnZU9y
aWVudGF0aW9uIDogMTsKICAgICAgICAgYm9vbCBtX3dhbnRzQmFsYW5jZWRTZXREZWZlcnNMb2Fk
aW5nQmVoYXZpb3IgOiAxOwogICAgICAgICBib29sIG1fcmVxdWVzdEFuaW1hdGlvbkZyYW1lRW5h
YmxlZCA6IDE7CisgICAgICAgIGJvb2wgbV9kZXZpY2VUb3VjaFNjcmVlbiA6IDE7CiAgICAgICAg
IGJvb2wgbV9uZWVkc0RpZEZpbmlzaExvYWRPcmRlclF1aXJrIDogMTsKIAogICAgICAgICBib29s
IG1fZml4ZWRQb3NpdGlvbkNyZWF0ZXNTdGFja2luZ0NvbnRleHQgOiAxOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBMaXN0Qm94LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTGlzdEJveC5jcHAKaW5kZXggZDQzN2Jj
ODgyNjRlMTIzNDcwZTk0ODM4ODliOTM5ZDFmMGUxZTY5YS4uZWNjMDMxNDRlZjdiZDlhN2UyNWZk
YWY3ZDNmMWU0MjZmMzg4ZWZlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vUG9wdXBMaXN0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9Qb3B1cExpc3RCb3guY3BwCkBAIC02MzIsNyArNjMyLDcgQEAgaW50IFBvcHVwTGlz
dEJveDo6Z2V0Um93SGVpZ2h0KGludCBpbmRleCkKIHsKICAgICBpbnQgc2NhbGUgPSBtX3NldHRp
bmdzLmRlZmF1bHREZXZpY2VTY2FsZUZhY3RvcjsKICAgICBpbnQgcGFkZGluZ0ZvclRvdWNoID0g
MDsKLSAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6dG91Y2hFbmFibGVkKCkpCisgICAg
aWYgKG1fc2V0dGluZ3MuaXNEZXZpY2VUb3VjaFNjcmVlbikKICAgICAgICAgcGFkZGluZ0ZvclRv
dWNoID0gUG9wdXBNZW51Q2hyb21pdW06Om9wdGlvblBhZGRpbmdGb3JUb3VjaCgpOwogICAgIGlm
IChpbmRleCA8IDAgfHwgbV9wb3B1cENsaWVudC0+aXRlbVN0eWxlKGluZGV4KS5pc0Rpc3BsYXlO
b25lKCkpCiAgICAgICAgIHJldHVybiBQb3B1cE1lbnVDaHJvbWl1bTo6bWluaW11bVJvd0hlaWdo
dCgpICogc2NhbGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9Qb3B1cExpc3RCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVw
TGlzdEJveC5oCmluZGV4IGI2ODUzMTNjYzQzMTliMTE0NjQyZjc1ZTA3OTc1MjlkNjg1YmMxYTMu
LmY1YzkwMDNjYThmN2YwNzkwNGQ3MzkyZTcxYzA2NDkzMTc1NTkzODggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTGlzdEJveC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTGlzdEJveC5oCkBAIC04MCw3ICs4MCwx
MyBAQCBzdHJ1Y3QgUG9wdXBDb250YWluZXJTZXR0aW5ncyB7CiAgICAgLy8gQXV0b2NvbXBsZXRl
IHBvcHVwcyBhcmUgcmVzdHJpY3RlZCwgY29tYm8tYm94ZXMgKHNlbGVjdCB0YWdzKSBhcmVuJ3Qu
CiAgICAgYm9vbCByZXN0cmljdFdpZHRoT2ZMaXN0Qm94OwogCisgICAgLy8gVGhlIGRlZmF1bHQg
ZGV2aWNlIHNjYWxlIGZhY3RvciBvZiB0aGUgc2NyZWVuIHVzZWQgdG8gZHJhdyB0aGUgbWVudQor
ICAgIC8vIGF0IHRoaXMgc2NhbGUgc3VpdGFibGUgZm9yIHRoZSBkZXZpY2UgRFBJLgogICAgIGlu
dCBkZWZhdWx0RGV2aWNlU2NhbGVGYWN0b3I7CisKKyAgICAvLyBJZiB0aGUgZGV2aWNlIGlzIGEg
dG91Y2ggc2NyZWVuIHdlIGluY3JlYXNlIHRoZSBoZWlnaHQgb2YgbWVudSBpdGVtcworICAgIC8v
IHRvIG1ha2UgaXQgZWFzaWVyIHRvIHVuYW1iaWd1b3VzbHkgdG91Y2ggdGhlbS4KKyAgICBib29s
IGlzRGV2aWNlVG91Y2hTY3JlZW47CiB9OwogCiAvLyBBIGNvbnRhaW5lciBmb3IgdGhlIGRhdGEg
Zm9yIGVhY2ggbWVudSBpdGVtIChlLmcuIHJlcHJlc2VudGVkIGJ5IDxvcHRpb24+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5j
cHAKaW5kZXggNjJlMTAwOGZiOTZhMDBjZTVjNDI4NzFmNGQ4YzQwMTVkNjZhNzBjMS4uNGQ5ZGUw
ZWUyMzM2NTY2ODhkNzgxZjA0ZDExZTQ5YThjMzc3OGQ1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVudUNocm9taXVtLmNwcApAQCAtNjYs
MTcgKzY2LDE5IEBAIFBvcHVwTWVudUNocm9taXVtOjp+UG9wdXBNZW51Q2hyb21pdW0oKQogICAg
IGhpZGUoKTsKIH0KIAotdm9pZCBQb3B1cE1lbnVDaHJvbWl1bTo6c2hvdyhjb25zdCBJbnRSZWN0
JiByLCBGcmFtZVZpZXcqIHYsIGludCBpbmRleCkKK3ZvaWQgUG9wdXBNZW51Q2hyb21pdW06OnNo
b3coY29uc3QgSW50UmVjdCYgcmVjdCwgRnJhbWVWaWV3KiBmcmFtZVZpZXcsIGludCBpbmRleCkK
IHsKICAgICBpZiAoIXAucG9wdXApIHsKKyAgICAgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gZnJh
bWVWaWV3LT5mcmFtZSgpLT5wYWdlKCktPnNldHRpbmdzKCk7CiAgICAgICAgIFBvcHVwQ29udGFp
bmVyU2V0dGluZ3MgcG9wdXBTZXR0aW5ncyA9IGRyb3BEb3duU2V0dGluZ3M7CiAgICAgICAgIHBv
cHVwU2V0dGluZ3MuZGVmYXVsdERldmljZVNjYWxlRmFjdG9yID0KLSAgICAgICAgICAgIHYtPmZy
YW1lKCktPnBhZ2UoKS0+c2V0dGluZ3MoKS0+ZGVmYXVsdERldmljZVNjYWxlRmFjdG9yKCk7Cisg
ICAgICAgICAgICBzZXR0aW5ncy0+ZGVmYXVsdERldmljZVNjYWxlRmFjdG9yKCk7CiAgICAgICAg
IGlmICghcG9wdXBTZXR0aW5ncy5kZWZhdWx0RGV2aWNlU2NhbGVGYWN0b3IpCiAgICAgICAgICAg
ICBwb3B1cFNldHRpbmdzLmRlZmF1bHREZXZpY2VTY2FsZUZhY3RvciA9IDE7CisgICAgICAgIHBv
cHVwU2V0dGluZ3MuaXNEZXZpY2VUb3VjaFNjcmVlbiA9IHNldHRpbmdzLT5pc0RldmljZVRvdWNo
U2NyZWVuKCk7CiAgICAgICAgIHAucG9wdXAgPSBQb3B1cENvbnRhaW5lcjo6Y3JlYXRlKGNsaWVu
dCgpLCBQb3B1cENvbnRhaW5lcjo6U2VsZWN0LCBwb3B1cFNldHRpbmdzKTsKICAgICB9Ci0gICAg
cC5wb3B1cC0+c2hvd0luUmVjdChyLCB2LCBpbmRleCk7CisgICAgcC5wb3B1cC0+c2hvd0luUmVj
dChyZWN0LCBmcmFtZVZpZXcsIGluZGV4KTsKIH0KIAogdm9pZCBQb3B1cE1lbnVDaHJvbWl1bTo6
aGlkZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGlu
Z3MuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcAppbmRl
eCA4NTk0YjcwNGRlZjVmMTVhMTE5Yzg2ZjI0YjMyMzUyM2UzYzQ5ODZmLi40MWU2YjUyMDNjZjIx
ZTkyMzc5MmNlYTQ0ZjVkYjdjYzIzYjBhYTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxTZXR0aW5ncy5jcHAKQEAgLTEwMCw2ICsxMDAsNyBAQCBJbnRlcm5hbFNldHRpbmdz
OjpJbnRlcm5hbFNldHRpbmdzKEZyYW1lKiBmcmFtZSkKICNlbmRpZgogICAgICwgbV9vcmlnaW5h
bEVkaXRpbmdCZWhhdmlvcihzZXR0aW5ncygpLT5lZGl0aW5nQmVoYXZpb3JUeXBlKCkpCiAgICAg
LCBtX29yaWdpbmFsRml4ZWRQb3NpdGlvbkNyZWF0ZXNTdGFja2luZ0NvbnRleHQoc2V0dGluZ3Mo
KS0+Zml4ZWRQb3NpdGlvbkNyZWF0ZXNTdGFja2luZ0NvbnRleHQoKSkKKyAgICAsIG1fb3JpZ2lu
YWxEZXZpY2VUb3VjaFNjcmVlbihzZXR0aW5ncygpLT5pc0RldmljZVRvdWNoU2NyZWVuKCkpCiB7
CiB9CiAKQEAgLTExMyw2ICsxMTQsNyBAQCB2b2lkIEludGVybmFsU2V0dGluZ3M6OnJlc3RvcmVU
byhTZXR0aW5ncyogc2V0dGluZ3MpCiAjZW5kaWYKICAgICBzZXR0aW5ncy0+c2V0RWRpdGluZ0Jl
aGF2aW9yVHlwZShtX29yaWdpbmFsRWRpdGluZ0JlaGF2aW9yKTsKICAgICBzZXR0aW5ncy0+c2V0
Rml4ZWRQb3NpdGlvbkNyZWF0ZXNTdGFja2luZ0NvbnRleHQobV9vcmlnaW5hbEZpeGVkUG9zaXRp
b25DcmVhdGVzU3RhY2tpbmdDb250ZXh0KTsKKyAgICBzZXR0aW5ncy0+c2V0RGV2aWNlVG91Y2hT
Y3JlZW4obV9vcmlnaW5hbERldmljZVRvdWNoU2NyZWVuKTsKIH0KIAogU2V0dGluZ3MqIEludGVy
bmFsU2V0dGluZ3M6OnNldHRpbmdzKCkgY29uc3QKQEAgLTI0OSw2ICsyNTEsMTIgQEAgdm9pZCBJ
bnRlcm5hbFNldHRpbmdzOjpzZXRUb3VjaEV2ZW50RW11bGF0aW9uRW5hYmxlZChib29sIGVuYWJs
ZWQsIEV4Y2VwdGlvbkNvZGUKICNlbmRpZgogfQogCit2b2lkIEludGVybmFsU2V0dGluZ3M6OnNl
dERldmljZVRvdWNoU2NyZWVuKGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29kZSYgZWMpCit7Cisg
ICAgSW50ZXJuYWxTZXR0aW5nc0d1YXJkRm9yU2V0dGluZ3MoKTsKKyAgICBzZXR0aW5ncygpLT5z
ZXREZXZpY2VUb3VjaFNjcmVlbihlbmFibGVkKTsKK30KKwogdHlwZWRlZiB2b2lkIChTZXR0aW5n
czo6KlNldEZvbnRGYW1pbHlGdW5jdGlvbikoY29uc3QgQXRvbWljU3RyaW5nJiwgVVNjcmlwdENv
ZGUpOwogc3RhdGljIHZvaWQgc2V0Rm9udEZhbWlseShTZXR0aW5ncyogc2V0dGluZ3MsIGNvbnN0
IFN0cmluZyYgZmFtaWx5LCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgU2V0Rm9udEZhbWlseUZ1bmN0
aW9uIHNldHRlcikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxTZXR0aW5ncy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmgK
aW5kZXggN2ZlYTc1ZGZiMjdhZDRkZDc5MTRiYWI0M2QzZGRkNGQ0MDFhZWUwMy4uMjczYjVkNDkw
MTY5MTJkNTkzNzJhMDA4ZjViMjM2OTg0NWMxY2I3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbFNldHRpbmdzLmgKQEAgLTYzLDYgKzYzLDcgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0UGFnZVNjYWxlRmFjdG9yKGZsb2F0IHNjYWxlRmFjdG9yLCBpbnQgeCwgaW50IHksIEV4Y2Vw
dGlvbkNvZGUmKTsKICAgICB2b2lkIHNldFBlclRpbGVEcmF3aW5nRW5hYmxlZChib29sIGVuYWJs
ZWQsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHNldFRvdWNoRXZlbnRFbXVsYXRpb25FbmFi
bGVkKGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgc2V0RGV2aWNlVG91
Y2hTY3JlZW4oYm9vbCBlbmFibGVkLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBzZXRTaGFk
b3dET01FbmFibGVkKGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgc2V0
U3RhbmRhcmRGb250RmFtaWx5KGNvbnN0IFN0cmluZyYgZmFtaWx5LCBjb25zdCBTdHJpbmcmIHNj
cmlwdCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgc2V0U2VyaWZGb250RmFtaWx5KGNvbnN0
IFN0cmluZyYgZmFtaWx5LCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgRXhjZXB0aW9uQ29kZSYpOwpA
QCAtOTUsNiArOTYsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgRWRpdGluZ0JlaGF2aW9yVHlw
ZSBtX29yaWdpbmFsRWRpdGluZ0JlaGF2aW9yOwogICAgIGJvb2wgbV9vcmlnaW5hbEZpeGVkUG9z
aXRpb25DcmVhdGVzU3RhY2tpbmdDb250ZXh0OworICAgIGJvb2wgbV9vcmlnaW5hbERldmljZVRv
dWNoU2NyZWVuOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5pZGwKaW5kZXggN2IzMDE3OWJkYmQzZmEyMGIxMDQ0
YjdiMTBiNzI5NzM5Y2Q3ZDFiNC4uNDFlM2M1YTQ5YWM4ZjZjOTUwNjAwMGQ4NzgxYWY2YzlhN2Y1
YWIwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdz
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaWRsCkBA
IC00MSw2ICs0MSw3IEBAIG1vZHVsZSB3aW5kb3cgewogICAgICAgICBib29sZWFuIHVuaWZpZWRU
ZXh0Q2hlY2tpbmdFbmFibGVkKCkgcmFpc2VzIChET01FeGNlcHRpb24pOwogICAgICAgICB2b2lk
IHNldFBhZ2VTY2FsZUZhY3RvcihpbiBmbG9hdCBzY2FsZUZhY3RvciwgaW4gbG9uZyB4LCBpbiBs
b25nIHkpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgICAgICB2b2lkIHNldFRvdWNoRXZlbnRF
bXVsYXRpb25FbmFibGVkKGluIGJvb2xlYW4gZW5hYmxlZCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7
CisgICAgICAgIHZvaWQgc2V0RGV2aWNlVG91Y2hTY3JlZW4oaW4gYm9vbGVhbiBlbmFibGVkKSBy
YWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgdm9pZCBzZXRTaGFkb3dET01FbmFibGVkKGlu
IGJvb2xlYW4gZW5hYmxlZCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIHZvaWQgc2V0
U3RhbmRhcmRGb250RmFtaWx5KGluIERPTVN0cmluZyBmYW1pbHksIGluIERPTVN0cmluZyBzY3Jp
cHQpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgICAgICB2b2lkIHNldFNlcmlmRm9udEZhbWls
eShpbiBET01TdHJpbmcgZmFtaWx5LCBpbiBET01TdHJpbmcgc2NyaXB0KSByYWlzZXMoRE9NRXhj
ZXB0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNl
dHRpbmdzLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCmlu
ZGV4IDMwODliMGJkYzRmYTVjOGVmMGM1NmQzN2NlMmRhMmZhMWYzMGEyMTYuLjhlYmIzZTc3MGM4
MjJjZmE3NTBhMjllZGNjNzU2ZWRiYmU4MzdjYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViU2V0dGluZ3MuaApAQCAtNjcsNiArNjcsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHNldEFwcGx5RGVmYXVsdERldmljZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKGJv
b2wpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Rm9udEJvb3N0aW5nRW5hYmxlZChib29sKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldERlZmF1bHRUZXh0RW5jb2RpbmdOYW1lKGNvbnN0IFdl
YlN0cmluZyYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RGV2aWNlVG91Y2hTY3JlZW4oYm9v
bCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRKYXZhU2NyaXB0RW5hYmxlZChib29sKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHNldFdlYlNlY3VyaXR5RW5hYmxlZChib29sKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHNldEphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHkoYm9v
bCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGlu
Z3NJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5j
cHAKaW5kZXggNzg3NzBhOTVjMDg5NmExNmU4MmQ0ZWExNzc1ZDQxNjgyZWI4N2NlYi4uODc4OTI4
NzhkZDJiNjFhMzQ4MjYwMzkyNmFlMzBhOGY5YWYxNjk5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCkBAIC0xMTgsNiArMTE4LDIxIEBAIHZv
aWQgV2ViU2V0dGluZ3NJbXBsOjpzZXREZWZhdWx0RGV2aWNlU2NhbGVGYWN0b3IoaW50IGRlZmF1
bHREZXZpY2VTY2FsZUZhY3RvcikKICAgICBtX3NldHRpbmdzLT5zZXREZWZhdWx0RGV2aWNlU2Nh
bGVGYWN0b3IoZGVmYXVsdERldmljZVNjYWxlRmFjdG9yKTsKIH0KIAoraW50IFdlYlNldHRpbmdz
SW1wbDo6ZGVmYXVsdERldmljZVNjYWxlRmFjdG9yKCkKK3sKKyAgICByZXR1cm4gbV9zZXR0aW5n
cy0+ZGVmYXVsdERldmljZVNjYWxlRmFjdG9yKCk7Cit9CisKK3ZvaWQgV2ViU2V0dGluZ3NJbXBs
OjpzZXREZXZpY2VUb3VjaFNjcmVlbihib29sIGRldmljZVRvdWNoU2NyZWVuKQoreworICAgIG1f
c2V0dGluZ3MtPnNldERldmljZVRvdWNoU2NyZWVuKGRldmljZVRvdWNoU2NyZWVuKTsKK30KKwor
Ym9vbCBXZWJTZXR0aW5nc0ltcGw6OmlzRGV2aWNlVG91Y2hTY3JlZW4oKQoreworICAgIHJldHVy
biBtX3NldHRpbmdzLT5pc0RldmljZVRvdWNoU2NyZWVuKCk7Cit9CisKIHZvaWQgV2ViU2V0dGlu
Z3NJbXBsOjpzZXRBcHBseURlZmF1bHREZXZpY2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcihib29s
IGFwcGx5RGVmYXVsdERldmljZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKQogewogICAgIG1fYXBw
bHlEZWZhdWx0RGV2aWNlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IgPSBhcHBseURlZmF1bHREZXZp
Y2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViU2V0dGluZ3NJbXBsLmgKaW5kZXggMWMzYjBlN2UyOWVlOWY0NDViMWRlM2YxZGRiZDJmZDlm
NjdlY2Y4Ny4uN2QwMDY4ZTNjZWFhZTZlM2FmMTIxNzM3NmVhNGMzY2E3OWZkNjg2MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKQEAgLTU1LDkgKzU1
LDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0TWluaW11bUZvbnRTaXplKGludCk7
CiAgICAgdmlydHVhbCB2b2lkIHNldE1pbmltdW1Mb2dpY2FsRm9udFNpemUoaW50KTsKICAgICB2
aXJ0dWFsIHZvaWQgc2V0RGVmYXVsdERldmljZVNjYWxlRmFjdG9yKGludCk7CisgICAgdmlydHVh
bCBpbnQgZGVmYXVsdERldmljZVNjYWxlRmFjdG9yKCk7CiAgICAgdmlydHVhbCB2b2lkIHNldEFw
cGx5RGVmYXVsdERldmljZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKGJvb2wpOwogICAgIHZpcnR1
YWwgdm9pZCBzZXRGb250Qm9vc3RpbmdFbmFibGVkKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBz
ZXREZWZhdWx0VGV4dEVuY29kaW5nTmFtZShjb25zdCBXZWJTdHJpbmcmKTsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0RGV2aWNlVG91Y2hTY3JlZW4oYm9vbCk7CisgICAgdmlydHVhbCBib29sIGlzRGV2
aWNlVG91Y2hTY3JlZW4oKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SmF2YVNjcmlwdEVuYWJsZWQo
Ym9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHNldFdlYlNlY3VyaXR5RW5hYmxlZChib29sKTsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseShi
b29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBs
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCBh
NDdjYjI4NTA4MDU2NWNhMDY0NGQ0NTBmZjljMjI5ZmNmZmVlM2JmLi4yYmQ1ZGJkODgwOTkwMDQw
YzY0ODJhZDQ1Mzc0NjM1Y2JkZGQ5MDg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlld0ltcGwuY3BwCkBAIC0yOTUxLDkgKzI5NTEsMTEgQEAgdm9pZCBXZWJWaWV3SW1wbDo6
YXBwbHlBdXRvZmlsbFN1Z2dlc3Rpb25zKAogICAgIGlmICghbV9hdXRvZmlsbFBvcHVwKSB7CiAg
ICAgICAgIFBvcHVwQ29udGFpbmVyU2V0dGluZ3MgcG9wdXBTZXR0aW5ncyA9IGF1dG9maWxsUG9w
dXBTZXR0aW5nczsKICAgICAgICAgcG9wdXBTZXR0aW5ncy5kZWZhdWx0RGV2aWNlU2NhbGVGYWN0
b3IgPQotICAgICAgICAgICAgbV9wYWdlLT5zZXR0aW5ncygpLT5kZWZhdWx0RGV2aWNlU2NhbGVG
YWN0b3IoKTsKKyAgICAgICAgICAgIHNldHRpbmdzSW1wbCgpLT5kZWZhdWx0RGV2aWNlU2NhbGVG
YWN0b3IoKTsKICAgICAgICAgaWYgKCFwb3B1cFNldHRpbmdzLmRlZmF1bHREZXZpY2VTY2FsZUZh
Y3RvcikKICAgICAgICAgICAgIHBvcHVwU2V0dGluZ3MuZGVmYXVsdERldmljZVNjYWxlRmFjdG9y
ID0gMTsKKyAgICAgICAgcG9wdXBTZXR0aW5ncy5pc0RldmljZVRvdWNoU2NyZWVuID0KKyAgICAg
ICAgICAgIHNldHRpbmdzSW1wbCgpLT5pc0RldmljZVRvdWNoU2NyZWVuKCk7CiAgICAgICAgIG1f
YXV0b2ZpbGxQb3B1cCA9IFBvcHVwQ29udGFpbmVyOjpjcmVhdGUobV9hdXRvZmlsbFBvcHVwQ2xp
ZW50LmdldCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFBvcHVwQ29udGFpbmVyOjpTdWdnZXN0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHBvcHVwU2V0dGluZ3MpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Qb3B1cE1lbnVUZXN0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvUG9wdXBNZW51VGVzdC5jcHAKaW5kZXggMWRiNjVlYzZlZjI3MDY2
ODBiYzZlM2RiMzExYTg4OWVhMmFiZmVhMS4uN2FjYjMxMTQ5NTcxZTc2ZmFkYjMxNGY2YmU5OTZi
MzE2OWQ3NmI0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Qb3B1
cE1lbnVUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1BvcHVwTWVu
dVRlc3QuY3BwCkBAIC0xODIsMTAgKzE4Miw2IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICB2
aXJ0dWFsIHZvaWQgU2V0VXAoKQogICAgIHsKLSAgICAgICAgLy8gV2hlbiB0b3VjaCBpcyBlbmFi
bGVkLCBwYWRkaW5nIGlzIGFkZGVkIHRvIG9wdGlvbiBlbGVtZW50cwotICAgICAgICAvLyBJbiB0
aGVzZSB0ZXN0cywgd2UnbGwgYXNzdW1lIHRvdWNoIGlzIGRpc2FibGVkLgotICAgICAgICBtX3Rv
dWNoV2FzRW5hYmxlZCA9IFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnRvdWNoRW5hYmxlZCgpOwot
ICAgICAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRUb3VjaEVuYWJsZWQoZmFsc2UpOwog
ICAgICAgICBtX3dlYlZpZXcgPSBzdGF0aWNfY2FzdDxXZWJWaWV3SW1wbCo+KFdlYlZpZXc6OmNy
ZWF0ZSgmbV93ZWJ2aWV3Q2xpZW50KSk7CiAgICAgICAgIG1fd2ViVmlldy0+aW5pdGlhbGl6ZU1h
aW5GcmFtZSgmbV93ZWJGcmFtZUNsaWVudCk7CiAgICAgICAgIG1fcG9wdXBNZW51ID0gYWRvcHRS
ZWYobmV3IFBvcHVwTWVudUNocm9taXVtKCZtX3BvcHVwTWVudUNsaWVudCkpOwpAQCAtMTk2LDcg
KzE5Miw2IEBAIHByb3RlY3RlZDoKICAgICAgICAgbV9wb3B1cE1lbnUgPSAwOwogICAgICAgICBt
X3dlYlZpZXctPmNsb3NlKCk7CiAgICAgICAgIHdlYmtpdF9zdXBwb3J0OjpVbnJlZ2lzdGVyQWxs
TW9ja2VkVVJMcygpOwotICAgICAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRUb3VjaEVu
YWJsZWQobV90b3VjaFdhc0VuYWJsZWQpOwogICAgIH0KIAogICAgIC8vIFJldHVybnMgdHJ1ZSBp
ZiB0aGVyZSBjdXJyZW50bHkgaXMgYSBzZWxlY3QgcG9wdXAgaW4gdGhlIFdlYlZpZXcuCkBAIC0y
ODQsNyArMjc5LDYgQEAgcHJvdGVjdGVkOgogICAgIFRlc3RXZWJGcmFtZUNsaWVudCBtX3dlYkZy
YW1lQ2xpZW50OwogICAgIFRlc3RQb3B1cE1lbnVDbGllbnQgbV9wb3B1cE1lbnVDbGllbnQ7CiAg
ICAgUmVmUHRyPFBvcHVwTWVudT4gbV9wb3B1cE1lbnU7Ci0gICAgYm9vbCBtX3RvdWNoV2FzRW5h
YmxlZDsKICAgICBzdGQ6OnN0cmluZyBiYXNlVVJMOwogfTsKIApAQCAtMzYwLDggKzM1NCw5IEBA
IFRFU1RfRihTZWxlY3RQb3B1cE1lbnVUZXN0LCBDbGlja0l0ZW0pCiB7CiAgICAgc2hvd1BvcHVw
KCk7CiAKLSAgICAvLyBZIG9mIDE4IHRvIGJlIG9uIHRoZSBpdGVtIGF0IGluZGV4IDEgKDEyIGZv
bnQgcGx1cyBib3JkZXIgYW5kIG1vcmUgdG8gYmUgc2FmZSkuCi0gICAgSW50UG9pbnQgcm93MVBv
aW50KDIsIDE4KTsKKyAgICBpbnQgbWVudUl0ZW1IZWlnaHQgPSBtX3dlYlZpZXctPnNlbGVjdFBv
cHVwKCktPm1lbnVJdGVtSGVpZ2h0KCk7CisgICAgLy8gbWVudUl0ZW1IZWlnaHQgKiAxLjUgbWVh
bnMgdGhlIFkgcG9zaXRpb24gb24gdGhlIGl0ZW0gYXQgaW5kZXggMS4KKyAgICBJbnRQb2ludCBy
b3cxUG9pbnQoMiwgbWVudUl0ZW1IZWlnaHQgKiAxLjUpOwogICAgIC8vIFNpbXVsYXRlIGEgY2xp
Y2sgZG93bi91cCBvbiB0aGUgZmlyc3QgaXRlbS4KICAgICBzaW11bGF0ZUxlZnRNb3VzZURvd25F
dmVudChyb3cxUG9pbnQpOwogICAgIHNpbXVsYXRlTGVmdE1vdXNlVXBFdmVudChyb3cxUG9pbnQp
OwpAQCAtMzc3LDggKzM3Miw5IEBAIFRFU1RfRihTZWxlY3RQb3B1cE1lbnVUZXN0LCBNb3VzZU92
ZXJJdGVtQ2xpY2tPdXRzaWRlKQogewogICAgIHNob3dQb3B1cCgpOwogCi0gICAgLy8gWSBvZiAx
OCB0byBiZSBvbiB0aGUgaXRlbSBhdCBpbmRleCAxICgxMiBmb250IHBsdXMgYm9yZGVyIGFuZCBt
b3JlIHRvIGJlIHNhZmUpLgotICAgIEludFBvaW50IHJvdzFQb2ludCgyLCAxOCk7CisgICAgaW50
IG1lbnVJdGVtSGVpZ2h0ID0gbV93ZWJWaWV3LT5zZWxlY3RQb3B1cCgpLT5tZW51SXRlbUhlaWdo
dCgpOworICAgIC8vIG1lbnVJdGVtSGVpZ2h0ICogMS41IG1lYW5zIHRoZSBZIHBvc2l0aW9uIG9u
IHRoZSBpdGVtIGF0IGluZGV4IDEuCisgICAgSW50UG9pbnQgcm93MVBvaW50KDIsIG1lbnVJdGVt
SGVpZ2h0ICogMS41KTsKICAgICAvLyBTaW11bGF0ZSB0aGUgbW91c2UgbW92aW5nIG92ZXIgdGhl
IGZpcnN0IGl0ZW0uCiAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IG1vdXNlRXZlbnQocm93MVBvaW50
LCByb3cxUG9pbnQsIE5vQnV0dG9uLCBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNl
LCAwKTsKQEAgLTQyMSw5ICs0MTcsOSBAQCBURVNUX0YoU2VsZWN0UG9wdXBNZW51VGVzdCwgRElT
QUJMRURfU2VsZWN0SXRlbUV2ZW50RmlyZSkKIAogICAgIHNob3dQb3B1cCgpOwogCi0gICAgaW50
IG1lbnVIZWlnaHQgPSBtX3dlYlZpZXctPnNlbGVjdFBvcHVwKCktPm1lbnVJdGVtSGVpZ2h0KCk7
Ci0gICAgLy8gbWVudUhlaWdodCAqIDAuNSBtZWFucyB0aGUgWSBwb3NpdGlvbiBvbiB0aGUgaXRl
bSBhdCBpbmRleCAwLgotICAgIEludFBvaW50IHJvdzFQb2ludCgyLCBtZW51SGVpZ2h0ICogMC41
KTsKKyAgICBpbnQgbWVudUl0ZW1IZWlnaHQgPSBtX3dlYlZpZXctPnNlbGVjdFBvcHVwKCktPm1l
bnVJdGVtSGVpZ2h0KCk7CisgICAgLy8gbWVudUl0ZW1IZWlnaHQgKiAwLjUgbWVhbnMgdGhlIFkg
cG9zaXRpb24gb24gdGhlIGl0ZW0gYXQgaW5kZXggMC4KKyAgICBJbnRQb2ludCByb3cxUG9pbnQo
MiwgbWVudUl0ZW1IZWlnaHQgKiAwLjUpOwogICAgIHNpbXVsYXRlTGVmdE1vdXNlRG93bkV2ZW50
KHJvdzFQb2ludCk7CiAgICAgc2ltdWxhdGVMZWZ0TW91c2VVcEV2ZW50KHJvdzFQb2ludCk7CiAK
QEAgLTQzNyw4ICs0MzMsOCBAQCBURVNUX0YoU2VsZWN0UG9wdXBNZW51VGVzdCwgRElTQUJMRURf
U2VsZWN0SXRlbUV2ZW50RmlyZSkKICAgICBtX3BvcHVwTWVudUNsaWVudC5zZXREaXNhYmxlZElu
ZGV4KDEpOwogCiAgICAgc2hvd1BvcHVwKCk7Ci0gICAgLy8gbWVudUhlaWdodCAqIDEuNSBtZWFu
cyB0aGUgWSBwb3NpdGlvbiBvbiB0aGUgaXRlbSBhdCBpbmRleCAxLgotICAgIHJvdzFQb2ludC5z
ZXRZKG1lbnVIZWlnaHQgKiAxLjUpOworICAgIC8vIG1lbnVJdGVtSGVpZ2h0ICogMS41IG1lYW5z
IHRoZSBZIHBvc2l0aW9uIG9uIHRoZSBpdGVtIGF0IGluZGV4IDEuCisgICAgcm93MVBvaW50LnNl
dFkobWVudUl0ZW1IZWlnaHQgKiAxLjUpOwogICAgIHNpbXVsYXRlTGVmdE1vdXNlRG93bkV2ZW50
KHJvdzFQb2ludCk7CiAgICAgc2ltdWxhdGVMZWZ0TW91c2VVcEV2ZW50KHJvdzFQb2ludCk7CiAK
QEAgLTQ0Niw4ICs0NDIsOCBAQCBURVNUX0YoU2VsZWN0UG9wdXBNZW51VGVzdCwgRElTQUJMRURf
U2VsZWN0SXRlbUV2ZW50RmlyZSkKICAgICBFWFBFQ1RfU1RSRVEoInVwY2xpY2siLCBzdGQ6OnN0
cmluZyhlbGVtZW50LmlubmVyVGV4dCgpLnV0ZjgoKSkuY19zdHIoKSk7CiAKICAgICBzaG93UG9w
dXAoKTsKLSAgICAvLyBtZW51SGVpZ2h0ICogMi41IG1lYW5zIHRoZSBZIHBvc2l0aW9uIG9uIHRo
ZSBpdGVtIGF0IGluZGV4IDIuCi0gICAgcm93MVBvaW50LnNldFkobWVudUhlaWdodCAqIDIuNSk7
CisgICAgLy8gbWVudUl0ZW1IZWlnaHQgKiAyLjUgbWVhbnMgdGhlIFkgcG9zaXRpb24gb24gdGhl
IGl0ZW0gYXQgaW5kZXggMi4KKyAgICByb3cxUG9pbnQuc2V0WShtZW51SXRlbUhlaWdodCAqIDIu
NSk7CiAgICAgc2ltdWxhdGVMZWZ0TW91c2VEb3duRXZlbnQocm93MVBvaW50KTsKICAgICBzaW11
bGF0ZUxlZnRNb3VzZVVwRXZlbnQocm93MVBvaW50KTsKIApAQCAtNDg4LDkgKzQ4NCw5IEBAIFRF
U1RfRihTZWxlY3RQb3B1cE1lbnVUZXN0LCBTZWxlY3RJdGVtUmVtb3ZlU2VsZWN0T25DaGFuZ2Up
CiAKICAgICBzaG93UG9wdXAoKTsKIAotICAgIGludCBtZW51SGVpZ2h0ID0gbV93ZWJWaWV3LT5z
ZWxlY3RQb3B1cCgpLT5tZW51SXRlbUhlaWdodCgpOwotICAgIC8vIG1lbnVIZWlnaHQgKiAxLjUg
bWVhbnMgdGhlIFkgcG9zaXRpb24gb24gdGhlIGl0ZW0gYXQgaW5kZXggMS4KLSAgICBJbnRQb2lu
dCByb3cxUG9pbnQoMiwgbWVudUhlaWdodCAqIDEuNSk7CisgICAgaW50IG1lbnVJdGVtSGVpZ2h0
ID0gbV93ZWJWaWV3LT5zZWxlY3RQb3B1cCgpLT5tZW51SXRlbUhlaWdodCgpOworICAgIC8vIG1l
bnVJdGVtSGVpZ2h0ICogMS41IG1lYW5zIHRoZSBZIHBvc2l0aW9uIG9uIHRoZSBpdGVtIGF0IGlu
ZGV4IDEuCisgICAgSW50UG9pbnQgcm93MVBvaW50KDIsIG1lbnVJdGVtSGVpZ2h0ICogMS41KTsK
ICAgICBzaW11bGF0ZUxlZnRNb3VzZURvd25FdmVudChyb3cxUG9pbnQpOwogICAgIHNpbXVsYXRl
TGVmdE1vdXNlVXBFdmVudChyb3cxUG9pbnQpOwogCkBAIC01MTAsOSArNTA2LDkgQEAgVEVTVF9G
KFNlbGVjdFBvcHVwTWVudVRlc3QsIFNlbGVjdEl0ZW1SZW1vdmVTZWxlY3RPbkNsaWNrKQogCiAg
ICAgc2hvd1BvcHVwKCk7CiAKLSAgICBpbnQgbWVudUhlaWdodCA9IG1fd2ViVmlldy0+c2VsZWN0
UG9wdXAoKS0+bWVudUl0ZW1IZWlnaHQoKTsKLSAgICAvLyBtZW51SGVpZ2h0ICogMS41IG1lYW5z
IHRoZSBZIHBvc2l0aW9uIG9uIHRoZSBpdGVtIGF0IGluZGV4IDEuCi0gICAgSW50UG9pbnQgcm93
MVBvaW50KDIsIG1lbnVIZWlnaHQgKiAxLjUpOworICAgIGludCBtZW51SXRlbUhlaWdodCA9IG1f
d2ViVmlldy0+c2VsZWN0UG9wdXAoKS0+bWVudUl0ZW1IZWlnaHQoKTsKKyAgICAvLyBtZW51SXRl
bUhlaWdodCAqIDEuNSBtZWFucyB0aGUgWSBwb3NpdGlvbiBvbiB0aGUgaXRlbSBhdCBpbmRleCAx
LgorICAgIEludFBvaW50IHJvdzFQb2ludCgyLCBtZW51SXRlbUhlaWdodCAqIDEuNSk7CiAgICAg
c2ltdWxhdGVMZWZ0TW91c2VEb3duRXZlbnQocm93MVBvaW50KTsKICAgICBzaW11bGF0ZUxlZnRN
b3VzZVVwRXZlbnQocm93MVBvaW50KTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDE1YzUwODRmODkyNzFkY2I4ZDYwYTBl
MDIxMWQyMGFhOWNiMzY4ZTQuLjg2ZTU5NGExZjBkMDFlYWI0NDZjZjdjZDk5NTgwZjkxNzUzNGUw
MTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0wNS0yNCAgUmljayBCeWVycyAgPHJieWVy
c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBJbXBsZW1lbnQgcG9pbnRlciBh
bmQgaG92ZXIgQ1NTIG1lZGlhIGZlYXR1cmVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04NzQwMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZHMgdGVzdHMgZm9yIHBvaW50ZXIgYW5kIGhvdmVyIG1lZGlh
IGZlYXR1cmVzLCBmb3IgdGhlIGluaXRpYWwgY2FzZXMKKyAgICAgICAgd2l0aCBhbmQgd2l0aG91
dCBhIHRvdWNoIHNjcmVlbi4KKworICAgICAgICAqIGZhc3QvbWVkaWEvbXEtcG9pbnRlci1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWEvbXEtcG9pbnRlci10b3VjaHNj
cmVlbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWEvbXEtcG9pbnRl
ci10b3VjaHNjcmVlbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhL21xLXBvaW50
ZXIuaHRtbDogQWRkZWQuCisKIDIwMTItMDUtMjQgIEpvc2h1YSBCZWxsICA8anNiZWxsQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIFJlYmFzZWxpbmVzIGZvbGxvd2luZyByMTE4
NDQ4LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1wb2ludGVyLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtcG9pbnRlci1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZmY4ZjA4Mjc4ZjE2MGRiZGVmNTI3NzU4OWU2M2MzM2FmYTkwZmY4YwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtcG9pbnRlci1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwzNCBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJl
bmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2
MDAKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAorICAgIFJlbmRl
ckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU3NgorICAgICAgUmVuZGVyQmxvY2sge1B9
IGF0ICgwLDApIHNpemUgNzg0eDIwCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCww
KSBzaXplIDI3eDE5CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMjc6ICJTZWUg
IgorICAgICAgICBSZW5kZXJJbmxpbmUge0F9IGF0ICgwLDApIHNpemUgNjh4MTkgW2NvbG9yPSMw
MDAwRUVdCisgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgyNywwKSBzaXplIDY4eDE5
CisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMjcsMCkgd2lkdGggNjg6ICJCdWcgODc0MDMiCisg
ICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoOTUsMCkgc2l6ZSA2M3gxOQorICAgICAgICAg
IHRleHQgcnVuIGF0ICg5NSwwKSB3aWR0aCA2MzogIiBmb3IgZGV0YWlscyIKKyAgICAgIFJlbmRl
ckJsb2NrIHtQfSBhdCAoMCwzNikgc2l6ZSA3ODR4MjAKKyAgICAgICAgUmVuZGVyVGV4dCB7I3Rl
eHR9IGF0ICgwLDApIHNpemUgMzk2eDE5CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lk
dGggMzk2OiAiVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbiBpZiBzb21lIHBvaW50ZXIgaXMga25v
d24gdG8gYmUgYXZhaWxhYmxlLiIKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCw3Mikgc2l6
ZSA3ODR4MjAKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNDA2eDE5
CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNDA2OiAiVGhpcyB0ZXh0IHNob3Vs
ZCBiZSBncmVlbiBpZiBpdCdzIGtub3duIHRoYXQgbm8gcG9pbnRlcnMgYXJlIGF2YWlsYWJsZS4i
CisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMTA4KSBzaXplIDc4NHgyMAorICAgICAgICBS
ZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA0MDV4MTkKKyAgICAgICAgICB0ZXh0IHJ1
biBhdCAoMCwwKSB3aWR0aCA0MDU6ICJUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuIGlmIGEgdG91
Y2ggc2NyZWVuIGlzIGtub3duIHRvIGJlIGF2YWlsYWJsZS4iCisgICAgICBSZW5kZXJCbG9jayB7
UH0gYXQgKDAsMTQ0KSBzaXplIDc4NHgyMAorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQg
KDAsMCkgc2l6ZSA1MjV4MTkKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA1MjU6
ICJUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuIGlmIGEgbW91c2UgKGJ1dCBub3QgYSBjb2Fyc2Ug
cG9pbnRlcikgaXMga25vd24gdG8gYmUgYXZhaWxhYmxlLiIKKyAgICAgIFJlbmRlckJsb2NrIHtQ
fSBhdCAoMCwxODApIHNpemUgNzg0eDIwCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAo
MCwwKSBzaXplIDQ1OXgxOQorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDQ1OTog
IlRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4gaWYgdGhlIGxlYXN0IGNhcGFibGUgcHJpbWFyeSBw
b2ludGVyIHN1cHBvcnRzIGhvdmVyLiIKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwyMTYp
IHNpemUgNzg0eDIwCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDUw
MHgxOQorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDUwMDogIlRoaXMgdGV4dCBz
aG91bGQgYmUgZ3JlZW4gaWYgdGhlIGxlYXN0IGNhcGFibGUgcHJpbWFyeSBwb2ludGVyIGRvZXNu
J3Qgc3VwcG9ydCBob3Zlci4iCisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMjUyKSBzaXpl
IDc4NHgyMAorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA0NTl4MTkK
KyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA0NTk6ICJUaGlzIHRleHQgc2hvdWxk
IGJlIGdyZWVuIGlmIHRoZSBsZWFzdCBjYXBhYmxlIHByaW1hcnkgcG9pbnRlciBzdXBwb3J0cyBo
b3Zlci4iCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXBvaW50ZXItdG91
Y2hzY3JlZW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1wb2ludGVy
LXRvdWNoc2NyZWVuLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YzhhNjg4ODcyZTY4MWJmYWJi
ZmY5N2NmNWY0OTc0Y2ExOWMxNjMwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9tZWRpYS9tcS1wb2ludGVyLXRvdWNoc2NyZWVuLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDM0
IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyVmlldyBhdCAoMCwwKSBz
aXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJCbG9jayB7
SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgs
OCkgc2l6ZSA3ODR4NTc2CisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3ODR4
MjAKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMjd4MTkKKyAgICAg
ICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAyNzogIlNlZSAiCisgICAgICAgIFJlbmRlcklu
bGluZSB7QX0gYXQgKDAsMCkgc2l6ZSA2OHgxOSBbY29sb3I9IzAwMDBFRV0KKyAgICAgICAgICBS
ZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDI3LDApIHNpemUgNjh4MTkKKyAgICAgICAgICAgIHRleHQg
cnVuIGF0ICgyNywwKSB3aWR0aCA2ODogIkJ1ZyA4NzQwMyIKKyAgICAgICAgUmVuZGVyVGV4dCB7
I3RleHR9IGF0ICg5NSwwKSBzaXplIDYzeDE5CisgICAgICAgICAgdGV4dCBydW4gYXQgKDk1LDAp
IHdpZHRoIDYzOiAiIGZvciBkZXRhaWxzIgorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDM2
KSBzaXplIDc4NHgyMCBbY29sb3I9IzAwODAwMF0KKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9
IGF0ICgwLDApIHNpemUgMzk2eDE5CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGgg
Mzk2OiAiVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbiBpZiBzb21lIHBvaW50ZXIgaXMga25vd24g
dG8gYmUgYXZhaWxhYmxlLiIKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCw3Mikgc2l6ZSA3
ODR4MjAKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNDA2eDE5Cisg
ICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNDA2OiAiVGhpcyB0ZXh0IHNob3VsZCBi
ZSBncmVlbiBpZiBpdCdzIGtub3duIHRoYXQgbm8gcG9pbnRlcnMgYXJlIGF2YWlsYWJsZS4iCisg
ICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMTA4KSBzaXplIDc4NHgyMCBbY29sb3I9IzAwODAw
MF0KKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNDA1eDE5CisgICAg
ICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNDA1OiAiVGhpcyB0ZXh0IHNob3VsZCBiZSBn
cmVlbiBpZiBhIHRvdWNoIHNjcmVlbiBpcyBrbm93biB0byBiZSBhdmFpbGFibGUuIgorICAgICAg
UmVuZGVyQmxvY2sge1B9IGF0ICgwLDE0NCkgc2l6ZSA3ODR4MjAKKyAgICAgICAgUmVuZGVyVGV4
dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNTI1eDE5CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAs
MCkgd2lkdGggNTI1OiAiVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbiBpZiBhIG1vdXNlIChidXQg
bm90IGEgY29hcnNlIHBvaW50ZXIpIGlzIGtub3duIHRvIGJlIGF2YWlsYWJsZS4iCisgICAgICBS
ZW5kZXJCbG9jayB7UH0gYXQgKDAsMTgwKSBzaXplIDc4NHgyMAorICAgICAgICBSZW5kZXJUZXh0
IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA0NTl4MTkKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCww
KSB3aWR0aCA0NTk6ICJUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuIGlmIHRoZSBsZWFzdCBjYXBh
YmxlIHByaW1hcnkgcG9pbnRlciBzdXBwb3J0cyBob3Zlci4iCisgICAgICBSZW5kZXJCbG9jayB7
UH0gYXQgKDAsMjE2KSBzaXplIDc4NHgyMCBbY29sb3I9IzAwODAwMF0KKyAgICAgICAgUmVuZGVy
VGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNTAweDE5CisgICAgICAgICAgdGV4dCBydW4gYXQg
KDAsMCkgd2lkdGggNTAwOiAiVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbiBpZiB0aGUgbGVhc3Qg
Y2FwYWJsZSBwcmltYXJ5IHBvaW50ZXIgZG9lc24ndCBzdXBwb3J0IGhvdmVyLiIKKyAgICAgIFJl
bmRlckJsb2NrIHtQfSBhdCAoMCwyNTIpIHNpemUgNzg0eDIwCisgICAgICAgIFJlbmRlclRleHQg
eyN0ZXh0fSBhdCAoMCwwKSBzaXplIDQ1OXgxOQorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDAp
IHdpZHRoIDQ1OTogIlRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4gaWYgdGhlIGxlYXN0IGNhcGFi
bGUgcHJpbWFyeSBwb2ludGVyIHN1cHBvcnRzIGhvdmVyLiIKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvbWVkaWEvbXEtcG9pbnRlci10b3VjaHNjcmVlbi5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9tZWRpYS9tcS1wb2ludGVyLXRvdWNoc2NyZWVuLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzU5MmIx
NTZhNDU1NWUzMGVhN2RkMGE4OTViZDE5MzEyOTg3NGUxNwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtcG9pbnRlci10b3VjaHNjcmVlbi5odG1sCkBAIC0wLDAg
KzEsNDMgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+Q1NTNCBtZWRpYSBxdWVyeSB0ZXN0OiBt
ZWRpYSBxdWVyeSB0ZXN0aW5nIHBvaW50ZXIgYW5kIGhvdmVyIGZlYXR1cmVzLjwvdGl0bGU+Cis8
c2NyaXB0PgorICBpZiAod2luZG93LmludGVybmFscykgeworICAgIGludGVybmFscy5zZXR0aW5n
cy5zZXREZXZpY2VUb3VjaFNjcmVlbih0cnVlKTsKKyAgfQorPC9zY3JpcHQ+Cis8c3R5bGUgdHlw
ZT0idGV4dC9jc3MiPgorQG1lZGlhIHNjcmVlbiBhbmQgKHBvaW50ZXIpIHsKKyNhIHsgY29sb3I6
IGdyZWVuIH0KK30KK0BtZWRpYSBzY3JlZW4gYW5kIChwb2ludGVyOm5vbmUpIHsKKyNiIHsgY29s
b3I6IGdyZWVuIH0KK30KK0BtZWRpYSBzY3JlZW4gYW5kIChwb2ludGVyOmNvYXJzZSkgeworI2Mg
eyBjb2xvcjogZ3JlZW4gfQorfQorQG1lZGlhIHNjcmVlbiBhbmQgKHBvaW50ZXI6ZmluZSkgewor
I2QgeyBjb2xvcjogZ3JlZW4gfQorfQorQG1lZGlhIHNjcmVlbiBhbmQgKGhvdmVyKSB7CisjZSB7
IGNvbG9yOiBncmVlbiB9Cit9CitAbWVkaWEgc2NyZWVuIGFuZCAoaG92ZXI6MCkgeworI2YgeyBj
b2xvcjogZ3JlZW4gfQorfQorQG1lZGlhIHNjcmVlbiBhbmQgKGhvdmVyOjEpIHsKKyNnIHsgY29s
b3I6IGdyZWVuIH0KK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPHA+U2VlIDxhIGhy
ZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NzQwMyI+QnVnIDg3
NDAzPC9hPiBmb3IgZGV0YWlsczwvcD4KKyAgPHAgaWQ9ImEiPlRoaXMgdGV4dCBzaG91bGQgYmUg
Z3JlZW4gaWYgc29tZSBwb2ludGVyIGlzIGtub3duIHRvIGJlIGF2YWlsYWJsZS48L3A+CisgIDxw
IGlkPSJiIj5UaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuIGlmIGl0J3Mga25vd24gdGhhdCBubyBw
b2ludGVycyBhcmUgYXZhaWxhYmxlLjwvcD4KKyAgPHAgaWQ9ImMiPlRoaXMgdGV4dCBzaG91bGQg
YmUgZ3JlZW4gaWYgYSB0b3VjaCBzY3JlZW4gaXMga25vd24gdG8gYmUgYXZhaWxhYmxlLjwvcD4K
KyAgPHAgaWQ9ImQiPlRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4gaWYgYSBtb3VzZSAoYnV0IG5v
dCBhIGNvYXJzZSBwb2ludGVyKSBpcyBrbm93biB0byBiZSBhdmFpbGFibGUuPC9wPgorICA8cCBp
ZD0iZSI+VGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbiBpZiB0aGUgbGVhc3QgY2FwYWJsZSBwcmlt
YXJ5IHBvaW50ZXIgc3VwcG9ydHMgaG92ZXIuPC9wPgorICA8cCBpZD0iZiI+VGhpcyB0ZXh0IHNo
b3VsZCBiZSBncmVlbiBpZiB0aGUgbGVhc3QgY2FwYWJsZSBwcmltYXJ5IHBvaW50ZXIgZG9lc24n
dCBzdXBwb3J0IGhvdmVyLjwvcD4KKyAgPHAgaWQ9ImciPlRoaXMgdGV4dCBzaG91bGQgYmUgZ3Jl
ZW4gaWYgdGhlIGxlYXN0IGNhcGFibGUgcHJpbWFyeSBwb2ludGVyIHN1cHBvcnRzIGhvdmVyLjwv
cD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWEv
bXEtcG9pbnRlci5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1wb2ludGVyLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMWJhNjI0M2NjYTdmODQ5YWNjMDI5MTg1OWQ0N2Y5YTg0OTRjZDhlZQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtcG9pbnRlci5odG1sCkBA
IC0wLDAgKzEsMzggQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+Q1NTNCBtZWRpYSBxdWVyeSB0
ZXN0OiBtZWRpYSBxdWVyeSB0ZXN0aW5nIHBvaW50ZXIgYW5kIGhvdmVyIGZlYXR1cmVzLjwvdGl0
bGU+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorQG1lZGlhIHNjcmVlbiBhbmQgKHBvaW50ZXIp
IHsKKyNhIHsgY29sb3I6IGdyZWVuIH0KK30KK0BtZWRpYSBzY3JlZW4gYW5kIChwb2ludGVyOm5v
bmUpIHsKKyNiIHsgY29sb3I6IGdyZWVuIH0KK30KK0BtZWRpYSBzY3JlZW4gYW5kIChwb2ludGVy
OmNvYXJzZSkgeworI2MgeyBjb2xvcjogZ3JlZW4gfQorfQorQG1lZGlhIHNjcmVlbiBhbmQgKHBv
aW50ZXI6ZmluZSkgeworI2QgeyBjb2xvcjogZ3JlZW4gfQorfQorQG1lZGlhIHNjcmVlbiBhbmQg
KGhvdmVyKSB7CisjZSB7IGNvbG9yOiBncmVlbiB9Cit9CitAbWVkaWEgc2NyZWVuIGFuZCAoaG92
ZXI6MCkgeworI2YgeyBjb2xvcjogZ3JlZW4gfQorfQorQG1lZGlhIHNjcmVlbiBhbmQgKGhvdmVy
OjEpIHsKKyNnIHsgY29sb3I6IGdyZWVuIH0KK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4K
KyAgPHA+U2VlIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD04NzQwMyI+QnVnIDg3NDAzPC9hPiBmb3IgZGV0YWlsczwvcD4KKyAgPHAgaWQ9ImEiPlRoaXMg
dGV4dCBzaG91bGQgYmUgZ3JlZW4gaWYgc29tZSBwb2ludGVyIGlzIGtub3duIHRvIGJlIGF2YWls
YWJsZS48L3A+CisgIDxwIGlkPSJiIj5UaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuIGlmIGl0J3Mg
a25vd24gdGhhdCBubyBwb2ludGVycyBhcmUgYXZhaWxhYmxlLjwvcD4KKyAgPHAgaWQ9ImMiPlRo
aXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4gaWYgYSB0b3VjaCBzY3JlZW4gaXMga25vd24gdG8gYmUg
YXZhaWxhYmxlLjwvcD4KKyAgPHAgaWQ9ImQiPlRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4gaWYg
YSBtb3VzZSAoYnV0IG5vdCBhIGNvYXJzZSBwb2ludGVyKSBpcyBrbm93biB0byBiZSBhdmFpbGFi
bGUuPC9wPgorICA8cCBpZD0iZSI+VGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbiBpZiB0aGUgbGVh
c3QgY2FwYWJsZSBwcmltYXJ5IHBvaW50ZXIgc3VwcG9ydHMgaG92ZXIuPC9wPgorICA8cCBpZD0i
ZiI+VGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbiBpZiB0aGUgbGVhc3QgY2FwYWJsZSBwcmltYXJ5
IHBvaW50ZXIgZG9lc24ndCBzdXBwb3J0IGhvdmVyLjwvcD4KKyAgPHAgaWQ9ImciPlRoaXMgdGV4
dCBzaG91bGQgYmUgZ3JlZW4gaWYgdGhlIGxlYXN0IGNhcGFibGUgcHJpbWFyeSBwb2ludGVyIHN1
cHBvcnRzIGhvdmVyLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144388</attachid>
            <date>2012-05-28 13:03:50 -0700</date>
            <delta_ts>2012-05-29 12:31:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87403-20120528160349.patch</filename>
            <type>text/plain</type>
            <size>18421</size>
            <attacher name="Rick Byers">rbyers</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4NDU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjU1YTg4NmVlNzE1NjYw
NTMzNDNhM2QzNzJkYTlhYTFmMTU3NzczYy4uODU3YWQ5MzM5MjljMzk4YTE5MGE0Y2E2MTI4MzE1
NzgyOGU4MGZiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEyLTA1LTI0ICBSaWNr
IEJ5ZXJzICA8cmJ5ZXJzQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEltcGxl
bWVudCBwb2ludGVyIGFuZCBob3ZlciBDU1MgbWVkaWEgZmVhdHVyZXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3NDAzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGluaXRpYWwgc3VwcG9ydCBmb3Ig
dGhlIHBvaW50ZXIgYW5kIGhvdmVyIG1lZGlhIGZlYXR1cmVzIGFzIGRlZmluZWQKKyAgICAgICAg
aGVyZToKKyAgICAgICAgaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzNC1tZWRpYXF1ZXJpZXMv
I3BvaW50ZXIKKyAgICAgICAgaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzNC1tZWRpYXF1ZXJp
ZXMvI2hvdmVyCisKKyAgICAgICAgRm9yIG5vdyB0aGlzIG9ubHkgc3VwcG9ydHMgdGhlIGNhc2Ug
d2hlcmUgd2Uga25vdyBhIHRvdWNoIHNjcmVlbiBpcworICAgICAgICBhdmFpbGFibGUgKGN1cnJl
bnRseSBrbm93biBvbmx5IGZvciB0aGUgY2hyb21pdW0gcG9ydCBvbiBjZXJ0YWluCisgICAgICAg
IHBsYXRmb3JtcykuICBBbGwgb3RoZXIgY2FzZXMgY29udGludWUgdG8gYmVoYXZlIGFzIGlmIHRo
ZSBtZWRpYSBmZWF0dXJlCisgICAgICAgIGlzbid0IHN1cHBvcnRlZC4KKworICAgICAgICBUZXN0
czogZmFzdC9tZWRpYS9tcS1wb2ludGVyLXRvdWNoc2NyZWVuLmh0bWwKKyAgICAgICAgICAgICAg
IGZhc3QvbWVkaWEvbXEtcG9pbnRlci5odG1sCisKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWVLZXl3
b3Jkcy5pbjoKKyAgICAgICAgKiBjc3MvTWVkaWFGZWF0dXJlTmFtZXMuaDoKKyAgICAgICAgKE1l
ZGlhRmVhdHVyZU5hbWVzKToKKyAgICAgICAgKiBjc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpnZXRMZWFzdENhcGFibGVQcmltYXJ5UG9pbnRlckRldmljZVR5
cGUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpob3Zlck1lZGlhRmVh
dHVyZUV2YWwpOgorICAgICAgICAoV2ViQ29yZTo6cG9pbnRlck1lZGlhRmVhdHVyZUV2YWwpOgor
CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkludGVybmFsU2V0dGluZ3M6OkludGVybmFsU2V0dGluZ3MpOgorICAgICAgICAoV2ViQ29y
ZTo6SW50ZXJuYWxTZXR0aW5nczo6cmVzdG9yZVRvKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVy
bmFsU2V0dGluZ3M6OnNldERldmljZVRvdWNoU2NyZWVuKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5oOgorICAgICAgICAoSW50ZXJuYWxT
ZXR0aW5ncyk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlkbDoKKwogMjAx
Mi0wNS0yNCAgUmF5bW9uZCBUb3kgIDxydG95QGdvb2dsZS5jb20+CiAKICAgICAgICAgVXNlIDMy
LWJ5dGUgYWxpZ25tZW50IGluIEF1ZGlvQXJyYXkgaWYgdXNpbmcgV0VCQVVESU9fRkZNUEVHCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbiBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluCmluZGV4IGI2MjY5NDllODZmZTg1ZWJm
NTE0ODkzNDIwNDY3ZjI3OWNjNzMzZjEuLmZkMWIzYTMxNWE5YjY1ZjllOGIxNDNlYzFhMGJkMWMw
MzAwYzdiNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRz
LmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluCkBAIC04OTcs
NiArODk3LDExIEBAIHdyYXAKIC8vIC13ZWJraXQtbGluZS1hbGlnbgogZWRnZXMKIAorLy8gKHBv
aW50ZXI6KSBtZWRpYSBmZWF0dXJlCisvLyBub25lCitjb2Fyc2UKK2ZpbmUKKwogI2lmIGRlZmlu
ZWQoRU5BQkxFX0NTU19GSUxURVJTKSAmJiBFTkFCTEVfQ1NTX0ZJTFRFUlMKIC8vIC13ZWJraXQt
ZmlsdGVyCiAjaWYgZGVmaW5lZChFTkFCTEVfQ1NTX1NIQURFUlMpICYmIEVOQUJMRV9DU1NfU0hB
REVSUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhRmVhdHVyZU5hbWVzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFGZWF0dXJlTmFtZXMuaAppbmRleCAxZGFhNGU5ZTE1
NzM4NTA0MDBlYTZlZjdhZTNhNjY2ZDUxYWI3ODM2Li5iMDg0MzllNGEwMTgzNDkyMmZkYTAwZThh
ZDk3ZWZmMjBmYmVjMGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFGZWF0
dXJlTmFtZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFGZWF0dXJlTmFtZXMuaApA
QCAtMzAsNiArMzAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8oZ3JpZCwgImdy
aWQiKSBcCiAgICAgbWFjcm8obW9ub2Nocm9tZSwgIm1vbm9jaHJvbWUiKSBcCiAgICAgbWFjcm8o
aGVpZ2h0LCAiaGVpZ2h0IikgXAorICAgIG1hY3JvKGhvdmVyLCAiaG92ZXIiKSBcCiAgICAgbWFj
cm8od2lkdGgsICJ3aWR0aCIpIFwKICAgICBtYWNybyhvcmllbnRhdGlvbiwgIm9yaWVudGF0aW9u
IikgXAogICAgIG1hY3JvKGFzcGVjdF9yYXRpbywgImFzcGVjdC1yYXRpbyIpIFwKQEAgLTU1LDYg
KzU2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIG1hY3JvKG1pbl9oZWlnaHQsICJtaW4t
aGVpZ2h0IikgXAogICAgIG1hY3JvKG1pbl9tb25vY2hyb21lLCAibWluLW1vbm9jaHJvbWUiKSBc
CiAgICAgbWFjcm8obWluX3dpZHRoLCAibWluLXdpZHRoIikgXAorICAgIG1hY3JvKHBvaW50ZXIs
ICJwb2ludGVyIikgXAogICAgIG1hY3JvKHRyYW5zZm9ybV8yZCwgIi13ZWJraXQtdHJhbnNmb3Jt
LTJkIikgXAogICAgIG1hY3JvKHRyYW5zZm9ybV8zZCwgIi13ZWJraXQtdHJhbnNmb3JtLTNkIikg
XAogICAgIG1hY3JvKHRyYW5zaXRpb24sICItd2Via2l0LXRyYW5zaXRpb24iKSBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHAKaW5kZXggNGYwNDVjNjdhZWViMTlk
NmFlNDAxMWIyZTU0MmIwZjYzNDhkODVjNS4uOTRiNzIwODRhYTVjNzBjN2JhZGE1ZDM4ODBiMWQw
ZWMzNGU1ZTI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFs
dWF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNw
cApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtU2NyZWVuLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCisjaW5jbHVkZSAiU2V0
dGluZ3MuaCIKICNpbmNsdWRlICJTdHlsZVJlc29sdmVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KIApAQCAtNTM2LDYgKzUzNyw1OCBAQCBzdGF0aWMgYm9vbCB2aWV3X21vZGVNZWRpYUZl
YXR1cmVFdmFsKENTU1ZhbHVlKiB2YWx1ZSwgUmVuZGVyU3R5bGUqLCBGcmFtZSogZnJhbQogICAg
IHJldHVybiBQYWdlOjpzdHJpbmdUb1ZpZXdNb2RlKHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlKj4odmFsdWUpLT5nZXRTdHJpbmdWYWx1ZSgpKSA9PSBmcmFtZS0+cGFnZSgpLT52aWV3TW9k
ZSgpOwogfQogCitlbnVtIFBvaW50ZXJEZXZpY2VUeXBlIHsgVG91Y2hQb2ludGVyLCBNb3VzZVBv
aW50ZXIsIE5vUG9pbnRlciwgVW5rbm93blBvaW50ZXIgfTsKKworc3RhdGljIFBvaW50ZXJEZXZp
Y2VUeXBlIGxlYXN0Q2FwYWJsZVByaW1hcnlQb2ludGVyRGV2aWNlVHlwZShGcmFtZSogZnJhbWUp
Cit7CisgICAgaWYgKGZyYW1lLT5zZXR0aW5ncygpLT5pc0RldmljZVRvdWNoU2NyZWVuKCkpCisg
ICAgICAgIHJldHVybiBUb3VjaFBvaW50ZXI7CisKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGFs
c28gdHJ5IHRvIGRldGVybWluZSBpZiB3ZSBrbm93IHdlIGhhdmUgYSBtb3VzZS4KKyAgICAvLyBX
aGVuIHdlIGRvIHRoaXMsIHdlJ2xsIGFsc28gbmVlZCB0byBkaWZmZXJlbnRpYXRlIGJldHdlZW4g
a25vd24gbm90IHRvCisgICAgLy8gaGF2ZSBtb3VzZSBvciB0b3VjaCBzY3JlZW4gKE5vUG9pbnRl
cikgYW5kIHVua25vd24gKFVua25vd25Qb2ludGVyKS4KKyAgICAvLyBXZSBjb3VsZCBhbHNvIHRh
a2UgaW50byBhY2NvdW50IG90aGVyIHByZWZlcmVuY2VzIGxpa2UgYWNjZXNzaWJpbGl0eQorICAg
IC8vIHNldHRpbmdzIHRvIGRlY2lkZSB3aGljaCBvZiB0aGUgYXZhaWxhYmxlIHBvaW50ZXJzIHNo
b3VsZCBiZSBjb25zaWRlcmVkCisgICAgLy8gInByaW1hcnkiLgorCisgICAgcmV0dXJuIFVua25v
d25Qb2ludGVyOworfQorCitzdGF0aWMgYm9vbCBob3Zlck1lZGlhRmVhdHVyZUV2YWwoQ1NTVmFs
dWUqIHZhbHVlLCBSZW5kZXJTdHlsZSosIEZyYW1lKiBmcmFtZSwgTWVkaWFGZWF0dXJlUHJlZml4
KQoreworICAgIFBvaW50ZXJEZXZpY2VUeXBlIHBvaW50ZXIgPSBsZWFzdENhcGFibGVQcmltYXJ5
UG9pbnRlckRldmljZVR5cGUoZnJhbWUpOworICAgIGlmIChwb2ludGVyID09IFVua25vd25Qb2lu
dGVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBmbG9hdCBudW1iZXIgPSAxOworICAg
IGlmICh2YWx1ZSkgeworICAgICAgICBpZiAoIW51bWJlclZhbHVlKHZhbHVlLCBudW1iZXIpKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiAocG9pbnRlciA9
PSBOb1BvaW50ZXIgJiYgIW51bWJlcikKKyAgICAgICAgfHwgKHBvaW50ZXIgPT0gVG91Y2hQb2lu
dGVyICYmICFudW1iZXIpCisgICAgICAgIHx8IChwb2ludGVyID09IE1vdXNlUG9pbnRlciAmJiBu
dW1iZXIgPT0gMSk7Cit9CisKK3N0YXRpYyBib29sIHBvaW50ZXJNZWRpYUZlYXR1cmVFdmFsKENT
U1ZhbHVlKiB2YWx1ZSwgUmVuZGVyU3R5bGUqLCBGcmFtZSogZnJhbWUsIE1lZGlhRmVhdHVyZVBy
ZWZpeCkKK3sKKyAgICBQb2ludGVyRGV2aWNlVHlwZSBwb2ludGVyID0gbGVhc3RDYXBhYmxlUHJp
bWFyeVBvaW50ZXJEZXZpY2VUeXBlKGZyYW1lKTsKKyAgICBpZiAocG9pbnRlciA9PSBVbmtub3du
UG9pbnRlcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCF2YWx1ZSkKKyAgICAg
ICAgcmV0dXJuIHBvaW50ZXIgIT0gTm9Qb2ludGVyOworCisgICAgaWYgKCF2YWx1ZS0+aXNQcmlt
aXRpdmVWYWx1ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBTdHJpbmcgc3RyID0g
c3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSktPmdldFN0cmluZ1ZhbHVlKCk7
CisgICAgcmV0dXJuIChwb2ludGVyID09IE5vUG9pbnRlciAmJiBzdHIgPT0gIm5vbmUiKQorICAg
ICAgICB8fCAocG9pbnRlciA9PSBUb3VjaFBvaW50ZXIgJiYgc3RyID09ICJjb2Fyc2UiKQorICAg
ICAgICB8fCAocG9pbnRlciA9PSBNb3VzZVBvaW50ZXIgJiYgc3RyID09ICJmaW5lIik7Cit9CisK
IHN0YXRpYyB2b2lkIGNyZWF0ZUZ1bmN0aW9uTWFwKCkKIHsKICAgICAvLyBDcmVhdGUgdGhlIHRh
YmxlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAKaW5kZXgg
ODU5NGI3MDRkZWY1ZjE1YTExOWM4NmYyNGIzMjM1MjNlM2M0OTg2Zi4uNDFlNmI1MjAzY2YyMWU5
MjM3OTJjZWE0NGY1ZGI3Y2MyM2IwYWE2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFsU2V0dGluZ3MuY3BwCkBAIC0xMDAsNiArMTAwLDcgQEAgSW50ZXJuYWxTZXR0aW5nczo6
SW50ZXJuYWxTZXR0aW5ncyhGcmFtZSogZnJhbWUpCiAjZW5kaWYKICAgICAsIG1fb3JpZ2luYWxF
ZGl0aW5nQmVoYXZpb3Ioc2V0dGluZ3MoKS0+ZWRpdGluZ0JlaGF2aW9yVHlwZSgpKQogICAgICwg
bV9vcmlnaW5hbEZpeGVkUG9zaXRpb25DcmVhdGVzU3RhY2tpbmdDb250ZXh0KHNldHRpbmdzKCkt
PmZpeGVkUG9zaXRpb25DcmVhdGVzU3RhY2tpbmdDb250ZXh0KCkpCisgICAgLCBtX29yaWdpbmFs
RGV2aWNlVG91Y2hTY3JlZW4oc2V0dGluZ3MoKS0+aXNEZXZpY2VUb3VjaFNjcmVlbigpKQogewog
fQogCkBAIC0xMTMsNiArMTE0LDcgQEAgdm9pZCBJbnRlcm5hbFNldHRpbmdzOjpyZXN0b3JlVG8o
U2V0dGluZ3MqIHNldHRpbmdzKQogI2VuZGlmCiAgICAgc2V0dGluZ3MtPnNldEVkaXRpbmdCZWhh
dmlvclR5cGUobV9vcmlnaW5hbEVkaXRpbmdCZWhhdmlvcik7CiAgICAgc2V0dGluZ3MtPnNldEZp
eGVkUG9zaXRpb25DcmVhdGVzU3RhY2tpbmdDb250ZXh0KG1fb3JpZ2luYWxGaXhlZFBvc2l0aW9u
Q3JlYXRlc1N0YWNraW5nQ29udGV4dCk7CisgICAgc2V0dGluZ3MtPnNldERldmljZVRvdWNoU2Ny
ZWVuKG1fb3JpZ2luYWxEZXZpY2VUb3VjaFNjcmVlbik7CiB9CiAKIFNldHRpbmdzKiBJbnRlcm5h
bFNldHRpbmdzOjpzZXR0aW5ncygpIGNvbnN0CkBAIC0yNDksNiArMjUxLDEyIEBAIHZvaWQgSW50
ZXJuYWxTZXR0aW5nczo6c2V0VG91Y2hFdmVudEVtdWxhdGlvbkVuYWJsZWQoYm9vbCBlbmFibGVk
LCBFeGNlcHRpb25Db2RlCiAjZW5kaWYKIH0KIAordm9pZCBJbnRlcm5hbFNldHRpbmdzOjpzZXRE
ZXZpY2VUb3VjaFNjcmVlbihib29sIGVuYWJsZWQsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAg
IEludGVybmFsU2V0dGluZ3NHdWFyZEZvclNldHRpbmdzKCk7CisgICAgc2V0dGluZ3MoKS0+c2V0
RGV2aWNlVG91Y2hTY3JlZW4oZW5hYmxlZCk7Cit9CisKIHR5cGVkZWYgdm9pZCAoU2V0dGluZ3M6
OipTZXRGb250RmFtaWx5RnVuY3Rpb24pKGNvbnN0IEF0b21pY1N0cmluZyYsIFVTY3JpcHRDb2Rl
KTsKIHN0YXRpYyB2b2lkIHNldEZvbnRGYW1pbHkoU2V0dGluZ3MqIHNldHRpbmdzLCBjb25zdCBT
dHJpbmcmIGZhbWlseSwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIFNldEZvbnRGYW1pbHlGdW5jdGlv
biBzZXR0ZXIpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
U2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5oCmlu
ZGV4IDdmZWE3NWRmYjI3YWQ0ZGQ3OTE0YmFiNDNkM2RkZDRkNDAxYWVlMDMuLjI3M2I1ZDQ5MDE2
OTEyZDU5MzcyYTAwOGY1YjIzNjk4NDVjMWNiNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxTZXR0aW5ncy5oCkBAIC02Myw2ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dFBhZ2VTY2FsZUZhY3RvcihmbG9hdCBzY2FsZUZhY3RvciwgaW50IHgsIGludCB5LCBFeGNlcHRp
b25Db2RlJik7CiAgICAgdm9pZCBzZXRQZXJUaWxlRHJhd2luZ0VuYWJsZWQoYm9vbCBlbmFibGVk
LCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBzZXRUb3VjaEV2ZW50RW11bGF0aW9uRW5hYmxl
ZChib29sIGVuYWJsZWQsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHNldERldmljZVRvdWNo
U2NyZWVuKGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgc2V0U2hhZG93
RE9NRW5hYmxlZChib29sIGVuYWJsZWQsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHNldFN0
YW5kYXJkRm9udEZhbWlseShjb25zdCBTdHJpbmcmIGZhbWlseSwgY29uc3QgU3RyaW5nJiBzY3Jp
cHQsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHNldFNlcmlmRm9udEZhbWlseShjb25zdCBT
dHJpbmcmIGZhbWlseSwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIEV4Y2VwdGlvbkNvZGUmKTsKQEAg
LTk1LDYgKzk2LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogICAgIEVkaXRpbmdCZWhhdmlvclR5cGUg
bV9vcmlnaW5hbEVkaXRpbmdCZWhhdmlvcjsKICAgICBib29sIG1fb3JpZ2luYWxGaXhlZFBvc2l0
aW9uQ3JlYXRlc1N0YWNraW5nQ29udGV4dDsKKyAgICBib29sIG1fb3JpZ2luYWxEZXZpY2VUb3Vj
aFNjcmVlbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaWRsCmluZGV4IDdiMzAxNzliZGJkM2ZhMjBiMTA0NGI3
YjEwYjcyOTczOWNkN2QxYjQuLjQxZTNjNWE0OWFjOGY2Yzk1MDYwMDBkODc4MWFmNmM5YTdmNWFi
MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5p
ZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlkbApAQCAt
NDEsNiArNDEsNyBAQCBtb2R1bGUgd2luZG93IHsKICAgICAgICAgYm9vbGVhbiB1bmlmaWVkVGV4
dENoZWNraW5nRW5hYmxlZCgpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgdm9pZCBz
ZXRQYWdlU2NhbGVGYWN0b3IoaW4gZmxvYXQgc2NhbGVGYWN0b3IsIGluIGxvbmcgeCwgaW4gbG9u
ZyB5KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgdm9pZCBzZXRUb3VjaEV2ZW50RW11
bGF0aW9uRW5hYmxlZChpbiBib29sZWFuIGVuYWJsZWQpIHJhaXNlcyhET01FeGNlcHRpb24pOwor
ICAgICAgICB2b2lkIHNldERldmljZVRvdWNoU2NyZWVuKGluIGJvb2xlYW4gZW5hYmxlZCkgcmFp
c2VzKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIHZvaWQgc2V0U2hhZG93RE9NRW5hYmxlZChpbiBi
b29sZWFuIGVuYWJsZWQpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgICAgICB2b2lkIHNldFN0
YW5kYXJkRm9udEZhbWlseShpbiBET01TdHJpbmcgZmFtaWx5LCBpbiBET01TdHJpbmcgc2NyaXB0
KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgdm9pZCBzZXRTZXJpZkZvbnRGYW1pbHko
aW4gRE9NU3RyaW5nIGZhbWlseSwgaW4gRE9NU3RyaW5nIHNjcmlwdCkgcmFpc2VzKERPTUV4Y2Vw
dGlvbik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggMTVjNTA4NGY4OTI3MWRjYjhkNjBhMGUwMjExZDIwYWE5Y2IzNjhlNC4u
ODZlNTk0YTFmMGQwMWVhYjQ0NmNmN2NkOTk1ODBmOTE3NTM0ZTAxNyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE4IEBACisyMDEyLTA1LTI0ICBSaWNrIEJ5ZXJzICA8cmJ5ZXJzQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBbY2hyb21pdW1dIEltcGxlbWVudCBwb2ludGVyIGFuZCBob3ZlciBDU1MgbWVkaWEg
ZmVhdHVyZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTg3NDAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkcyB0ZXN0cyBmb3IgcG9pbnRlciBhbmQgaG92ZXIgbWVkaWEgZmVhdHVyZXMsIGZvciB0aGUg
aW5pdGlhbCBjYXNlcworICAgICAgICB3aXRoIGFuZCB3aXRob3V0IGEgdG91Y2ggc2NyZWVuLgor
CisgICAgICAgICogZmFzdC9tZWRpYS9tcS1wb2ludGVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9tZWRpYS9tcS1wb2ludGVyLXRvdWNoc2NyZWVuLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYS9tcS1wb2ludGVyLXRvdWNoc2NyZWVuLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWEvbXEtcG9pbnRlci5odG1sOiBBZGRlZC4KKwog
MjAxMi0wNS0yNCAgSm9zaHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFtDaHJvbWl1bV0gUmViYXNlbGluZXMgZm9sbG93aW5nIHIxMTg0NDguCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXBvaW50ZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9tZWRpYS9tcS1wb2ludGVyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZjhmMDgy
NzhmMTYwZGJkZWY1Mjc3NTg5ZTYzYzMzYWZhOTBmZjhjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1wb2ludGVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDM0
IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyVmlldyBhdCAoMCwwKSBz
aXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJCbG9jayB7
SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgs
OCkgc2l6ZSA3ODR4NTc2CisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3ODR4
MjAKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMjd4MTkKKyAgICAg
ICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAyNzogIlNlZSAiCisgICAgICAgIFJlbmRlcklu
bGluZSB7QX0gYXQgKDAsMCkgc2l6ZSA2OHgxOSBbY29sb3I9IzAwMDBFRV0KKyAgICAgICAgICBS
ZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDI3LDApIHNpemUgNjh4MTkKKyAgICAgICAgICAgIHRleHQg
cnVuIGF0ICgyNywwKSB3aWR0aCA2ODogIkJ1ZyA4NzQwMyIKKyAgICAgICAgUmVuZGVyVGV4dCB7
I3RleHR9IGF0ICg5NSwwKSBzaXplIDYzeDE5CisgICAgICAgICAgdGV4dCBydW4gYXQgKDk1LDAp
IHdpZHRoIDYzOiAiIGZvciBkZXRhaWxzIgorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDM2
KSBzaXplIDc4NHgyMAorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAz
OTZ4MTkKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAzOTY6ICJUaGlzIHRleHQg
c2hvdWxkIGJlIGdyZWVuIGlmIHNvbWUgcG9pbnRlciBpcyBrbm93biB0byBiZSBhdmFpbGFibGUu
IgorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDcyKSBzaXplIDc4NHgyMAorICAgICAgICBS
ZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA0MDZ4MTkKKyAgICAgICAgICB0ZXh0IHJ1
biBhdCAoMCwwKSB3aWR0aCA0MDY6ICJUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuIGlmIGl0J3Mg
a25vd24gdGhhdCBubyBwb2ludGVycyBhcmUgYXZhaWxhYmxlLiIKKyAgICAgIFJlbmRlckJsb2Nr
IHtQfSBhdCAoMCwxMDgpIHNpemUgNzg0eDIwCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBh
dCAoMCwwKSBzaXplIDQwNXgxOQorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDQw
NTogIlRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4gaWYgYSB0b3VjaCBzY3JlZW4gaXMga25vd24g
dG8gYmUgYXZhaWxhYmxlLiIKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwxNDQpIHNpemUg
Nzg0eDIwCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDUyNXgxOQor
ICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDUyNTogIlRoaXMgdGV4dCBzaG91bGQg
YmUgZ3JlZW4gaWYgYSBtb3VzZSAoYnV0IG5vdCBhIGNvYXJzZSBwb2ludGVyKSBpcyBrbm93biB0
byBiZSBhdmFpbGFibGUuIgorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDE4MCkgc2l6ZSA3
ODR4MjAKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNDU5eDE5Cisg
ICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNDU5OiAiVGhpcyB0ZXh0IHNob3VsZCBi
ZSBncmVlbiBpZiB0aGUgbGVhc3QgY2FwYWJsZSBwcmltYXJ5IHBvaW50ZXIgc3VwcG9ydHMgaG92
ZXIuIgorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDIxNikgc2l6ZSA3ODR4MjAKKyAgICAg
ICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNTAweDE5CisgICAgICAgICAgdGV4
dCBydW4gYXQgKDAsMCkgd2lkdGggNTAwOiAiVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbiBpZiB0
aGUgbGVhc3QgY2FwYWJsZSBwcmltYXJ5IHBvaW50ZXIgZG9lc24ndCBzdXBwb3J0IGhvdmVyLiIK
KyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwyNTIpIHNpemUgNzg0eDIwCisgICAgICAgIFJl
bmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDQ1OXgxOQorICAgICAgICAgIHRleHQgcnVu
IGF0ICgwLDApIHdpZHRoIDQ1OTogIlRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4gaWYgdGhlIGxl
YXN0IGNhcGFibGUgcHJpbWFyeSBwb2ludGVyIHN1cHBvcnRzIGhvdmVyLiIKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtcG9pbnRlci10b3VjaHNjcmVlbi1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXBvaW50ZXItdG91Y2hzY3JlZW4tZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjljOGE2ODg4NzJlNjgxYmZhYmJmZjk3Y2Y1ZjQ5NzRjYTE5YzE2
MzAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXBvaW50ZXIt
dG91Y2hzY3JlZW4tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzQgQEAKK2xheWVyIGF0ICgwLDAp
IHNpemUgODAweDYwMAorICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIg
YXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXpl
IDgwMHg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1NzYKKyAg
ICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc4NHgyMAorICAgICAgICBSZW5kZXJU
ZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAyN3gxOQorICAgICAgICAgIHRleHQgcnVuIGF0ICgw
LDApIHdpZHRoIDI3OiAiU2VlICIKKyAgICAgICAgUmVuZGVySW5saW5lIHtBfSBhdCAoMCwwKSBz
aXplIDY4eDE5IFtjb2xvcj0jMDAwMEVFXQorICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBh
dCAoMjcsMCkgc2l6ZSA2OHgxOQorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDI3LDApIHdpZHRo
IDY4OiAiQnVnIDg3NDAzIgorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDk1LDApIHNp
emUgNjN4MTkKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoOTUsMCkgd2lkdGggNjM6ICIgZm9yIGRl
dGFpbHMiCisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMzYpIHNpemUgNzg0eDIwIFtjb2xv
cj0jMDA4MDAwXQorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAzOTZ4
MTkKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAzOTY6ICJUaGlzIHRleHQgc2hv
dWxkIGJlIGdyZWVuIGlmIHNvbWUgcG9pbnRlciBpcyBrbm93biB0byBiZSBhdmFpbGFibGUuIgor
ICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDcyKSBzaXplIDc4NHgyMAorICAgICAgICBSZW5k
ZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA0MDZ4MTkKKyAgICAgICAgICB0ZXh0IHJ1biBh
dCAoMCwwKSB3aWR0aCA0MDY6ICJUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuIGlmIGl0J3Mga25v
d24gdGhhdCBubyBwb2ludGVycyBhcmUgYXZhaWxhYmxlLiIKKyAgICAgIFJlbmRlckJsb2NrIHtQ
fSBhdCAoMCwxMDgpIHNpemUgNzg0eDIwIFtjb2xvcj0jMDA4MDAwXQorICAgICAgICBSZW5kZXJU
ZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA0MDV4MTkKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAo
MCwwKSB3aWR0aCA0MDU6ICJUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuIGlmIGEgdG91Y2ggc2Ny
ZWVuIGlzIGtub3duIHRvIGJlIGF2YWlsYWJsZS4iCisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQg
KDAsMTQ0KSBzaXplIDc4NHgyMAorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkg
c2l6ZSA1MjV4MTkKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA1MjU6ICJUaGlz
IHRleHQgc2hvdWxkIGJlIGdyZWVuIGlmIGEgbW91c2UgKGJ1dCBub3QgYSBjb2Fyc2UgcG9pbnRl
cikgaXMga25vd24gdG8gYmUgYXZhaWxhYmxlLiIKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAo
MCwxODApIHNpemUgNzg0eDIwCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBz
aXplIDQ1OXgxOQorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDQ1OTogIlRoaXMg
dGV4dCBzaG91bGQgYmUgZ3JlZW4gaWYgdGhlIGxlYXN0IGNhcGFibGUgcHJpbWFyeSBwb2ludGVy
IHN1cHBvcnRzIGhvdmVyLiIKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwyMTYpIHNpemUg
Nzg0eDIwIFtjb2xvcj0jMDA4MDAwXQorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAs
MCkgc2l6ZSA1MDB4MTkKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA1MDA6ICJU
aGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuIGlmIHRoZSBsZWFzdCBjYXBhYmxlIHByaW1hcnkgcG9p
bnRlciBkb2Vzbid0IHN1cHBvcnQgaG92ZXIuIgorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgw
LDI1Mikgc2l6ZSA3ODR4MjAKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNp
emUgNDU5eDE5CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNDU5OiAiVGhpcyB0
ZXh0IHNob3VsZCBiZSBncmVlbiBpZiB0aGUgbGVhc3QgY2FwYWJsZSBwcmltYXJ5IHBvaW50ZXIg
c3VwcG9ydHMgaG92ZXIuIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1w
b2ludGVyLXRvdWNoc2NyZWVuLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXBvaW50
ZXItdG91Y2hzY3JlZW4uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44N2FlMjI2NTc4NWViOWM0NGUxNTcwYWJk
YjgzZDljZjEyMmI1YmI0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRp
YS9tcS1wb2ludGVyLXRvdWNoc2NyZWVuLmh0bWwKQEAgLTAsMCArMSw0MiBAQAorPGh0bWw+Cis8
aGVhZD4KKzx0aXRsZT5DU1M0IG1lZGlhIHF1ZXJ5IHRlc3Q6IG1lZGlhIHF1ZXJ5IHRlc3Rpbmcg
cG9pbnRlciBhbmQgaG92ZXIgZmVhdHVyZXMuPC90aXRsZT4KKzxzY3JpcHQ+CisgIGlmICh3aW5k
b3cuaW50ZXJuYWxzKQorICAgIGludGVybmFscy5zZXR0aW5ncy5zZXREZXZpY2VUb3VjaFNjcmVl
bih0cnVlKTsKKzwvc2NyaXB0PgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KK0BtZWRpYSBzY3Jl
ZW4gYW5kIChwb2ludGVyKSB7CisjYSB7IGNvbG9yOiBncmVlbiB9Cit9CitAbWVkaWEgc2NyZWVu
IGFuZCAocG9pbnRlcjpub25lKSB7CisjYiB7IGNvbG9yOiBncmVlbiB9Cit9CitAbWVkaWEgc2Ny
ZWVuIGFuZCAocG9pbnRlcjpjb2Fyc2UpIHsKKyNjIHsgY29sb3I6IGdyZWVuIH0KK30KK0BtZWRp
YSBzY3JlZW4gYW5kIChwb2ludGVyOmZpbmUpIHsKKyNkIHsgY29sb3I6IGdyZWVuIH0KK30KK0Bt
ZWRpYSBzY3JlZW4gYW5kIChob3ZlcikgeworI2UgeyBjb2xvcjogZ3JlZW4gfQorfQorQG1lZGlh
IHNjcmVlbiBhbmQgKGhvdmVyOjApIHsKKyNmIHsgY29sb3I6IGdyZWVuIH0KK30KK0BtZWRpYSBz
Y3JlZW4gYW5kIChob3ZlcjoxKSB7CisjZyB7IGNvbG9yOiBncmVlbiB9Cit9Cis8L3N0eWxlPgor
PC9oZWFkPgorPGJvZHk+CisgIDxwPlNlZSA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODc0MDMiPkJ1ZyA4NzQwMzwvYT4gZm9yIGRldGFpbHM8L3A+Cisg
IDxwIGlkPSJhIj5UaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuIGlmIHNvbWUgcG9pbnRlciBpcyBr
bm93biB0byBiZSBhdmFpbGFibGUuPC9wPgorICA8cCBpZD0iYiI+VGhpcyB0ZXh0IHNob3VsZCBi
ZSBncmVlbiBpZiBpdCdzIGtub3duIHRoYXQgbm8gcG9pbnRlcnMgYXJlIGF2YWlsYWJsZS48L3A+
CisgIDxwIGlkPSJjIj5UaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuIGlmIGEgdG91Y2ggc2NyZWVu
IGlzIGtub3duIHRvIGJlIGF2YWlsYWJsZS48L3A+CisgIDxwIGlkPSJkIj5UaGlzIHRleHQgc2hv
dWxkIGJlIGdyZWVuIGlmIGEgbW91c2UgKGJ1dCBub3QgYSBjb2Fyc2UgcG9pbnRlcikgaXMga25v
d24gdG8gYmUgYXZhaWxhYmxlLjwvcD4KKyAgPHAgaWQ9ImUiPlRoaXMgdGV4dCBzaG91bGQgYmUg
Z3JlZW4gaWYgdGhlIGxlYXN0IGNhcGFibGUgcHJpbWFyeSBwb2ludGVyIHN1cHBvcnRzIGhvdmVy
LjwvcD4KKyAgPHAgaWQ9ImYiPlRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4gaWYgdGhlIGxlYXN0
IGNhcGFibGUgcHJpbWFyeSBwb2ludGVyIGRvZXNuJ3Qgc3VwcG9ydCBob3Zlci48L3A+CisgIDxw
IGlkPSJnIj5UaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuIGlmIHRoZSBsZWFzdCBjYXBhYmxlIHBy
aW1hcnkgcG9pbnRlciBzdXBwb3J0cyBob3Zlci48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXBvaW50ZXIuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvbWVkaWEvbXEtcG9pbnRlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFiYTYyNDNjY2E3Zjg0
OWFjYzAyOTE4NTlkNDdmOWE4NDk0Y2Q4ZWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L21lZGlhL21xLXBvaW50ZXIuaHRtbApAQCAtMCwwICsxLDM4IEBACis8aHRtbD4KKzxo
ZWFkPgorPHRpdGxlPkNTUzQgbWVkaWEgcXVlcnkgdGVzdDogbWVkaWEgcXVlcnkgdGVzdGluZyBw
b2ludGVyIGFuZCBob3ZlciBmZWF0dXJlcy48L3RpdGxlPgorPHN0eWxlIHR5cGU9InRleHQvY3Nz
Ij4KK0BtZWRpYSBzY3JlZW4gYW5kIChwb2ludGVyKSB7CisjYSB7IGNvbG9yOiBncmVlbiB9Cit9
CitAbWVkaWEgc2NyZWVuIGFuZCAocG9pbnRlcjpub25lKSB7CisjYiB7IGNvbG9yOiBncmVlbiB9
Cit9CitAbWVkaWEgc2NyZWVuIGFuZCAocG9pbnRlcjpjb2Fyc2UpIHsKKyNjIHsgY29sb3I6IGdy
ZWVuIH0KK30KK0BtZWRpYSBzY3JlZW4gYW5kIChwb2ludGVyOmZpbmUpIHsKKyNkIHsgY29sb3I6
IGdyZWVuIH0KK30KK0BtZWRpYSBzY3JlZW4gYW5kIChob3ZlcikgeworI2UgeyBjb2xvcjogZ3Jl
ZW4gfQorfQorQG1lZGlhIHNjcmVlbiBhbmQgKGhvdmVyOjApIHsKKyNmIHsgY29sb3I6IGdyZWVu
IH0KK30KK0BtZWRpYSBzY3JlZW4gYW5kIChob3ZlcjoxKSB7CisjZyB7IGNvbG9yOiBncmVlbiB9
Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgIDxwPlNlZSA8YSBocmVmPSJodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODc0MDMiPkJ1ZyA4NzQwMzwvYT4gZm9y
IGRldGFpbHM8L3A+CisgIDxwIGlkPSJhIj5UaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuIGlmIHNv
bWUgcG9pbnRlciBpcyBrbm93biB0byBiZSBhdmFpbGFibGUuPC9wPgorICA8cCBpZD0iYiI+VGhp
cyB0ZXh0IHNob3VsZCBiZSBncmVlbiBpZiBpdCdzIGtub3duIHRoYXQgbm8gcG9pbnRlcnMgYXJl
IGF2YWlsYWJsZS48L3A+CisgIDxwIGlkPSJjIj5UaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuIGlm
IGEgdG91Y2ggc2NyZWVuIGlzIGtub3duIHRvIGJlIGF2YWlsYWJsZS48L3A+CisgIDxwIGlkPSJk
Ij5UaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuIGlmIGEgbW91c2UgKGJ1dCBub3QgYSBjb2Fyc2Ug
cG9pbnRlcikgaXMga25vd24gdG8gYmUgYXZhaWxhYmxlLjwvcD4KKyAgPHAgaWQ9ImUiPlRoaXMg
dGV4dCBzaG91bGQgYmUgZ3JlZW4gaWYgdGhlIGxlYXN0IGNhcGFibGUgcHJpbWFyeSBwb2ludGVy
IHN1cHBvcnRzIGhvdmVyLjwvcD4KKyAgPHAgaWQ9ImYiPlRoaXMgdGV4dCBzaG91bGQgYmUgZ3Jl
ZW4gaWYgdGhlIGxlYXN0IGNhcGFibGUgcHJpbWFyeSBwb2ludGVyIGRvZXNuJ3Qgc3VwcG9ydCBo
b3Zlci48L3A+CisgIDxwIGlkPSJnIj5UaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuIGlmIHRoZSBs
ZWFzdCBjYXBhYmxlIHByaW1hcnkgcG9pbnRlciBzdXBwb3J0cyBob3Zlci48L3A+Cis8L2JvZHk+
Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144600</attachid>
            <date>2012-05-29 12:31:06 -0700</date>
            <delta_ts>2012-05-30 15:30:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-87403-20120529153105.patch</filename>
            <type>text/plain</type>
            <size>13660</size>
            <attacher name="Rick Byers">rbyers</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4ODExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTlhNDUyMWJlMmY5MjEx
MjlmOWRmYzkyYjQxYmQzOTU5NDM2OWJiNS4uYTJhYzMxZjdjYmZmMmQzMTNjNjdmYzM5ODIwMjQ2
Zjc1NWVmOTFlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEyLTA1LTI0ICBSaWNr
IEJ5ZXJzICA8cmJ5ZXJzQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEltcGxl
bWVudCBwb2ludGVyIGFuZCBob3ZlciBDU1MgbWVkaWEgZmVhdHVyZXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3NDAzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGluaXRpYWwgc3VwcG9ydCBmb3Ig
dGhlIHBvaW50ZXIgYW5kIGhvdmVyIG1lZGlhIGZlYXR1cmVzIGFzIGRlZmluZWQKKyAgICAgICAg
aGVyZToKKyAgICAgICAgaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzNC1tZWRpYXF1ZXJpZXMv
I3BvaW50ZXIKKyAgICAgICAgaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzNC1tZWRpYXF1ZXJp
ZXMvI2hvdmVyCisKKyAgICAgICAgRm9yIG5vdyB0aGlzIG9ubHkgc3VwcG9ydHMgdGhlIGNhc2Ug
d2hlcmUgd2Uga25vdyBhIHRvdWNoIHNjcmVlbiBpcworICAgICAgICBhdmFpbGFibGUgKGN1cnJl
bnRseSBrbm93biBvbmx5IGZvciB0aGUgY2hyb21pdW0gcG9ydCBvbiBjZXJ0YWluCisgICAgICAg
IHBsYXRmb3JtcykuICBBbGwgb3RoZXIgY2FzZXMgY29udGludWUgdG8gYmVoYXZlIGV4YWN0bHkg
YXMgaWYgdGhlIG1lZGlhCisgICAgICAgIGZlYXR1cmUgaXNuJ3Qgc3VwcG9ydGVkLgorCisgICAg
ICAgIFRlc3RzOiBmYXN0L21lZGlhL21xLXBvaW50ZXIuaHRtbAorCisgICAgICAgICogY3NzL0NT
U1ZhbHVlS2V5d29yZHMuaW46CisgICAgICAgICogY3NzL01lZGlhRmVhdHVyZU5hbWVzLmg6Cisg
ICAgICAgIChNZWRpYUZlYXR1cmVOYW1lcyk6CisgICAgICAgICogY3NzL01lZGlhUXVlcnlFdmFs
dWF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0TGVhc3RDYXBhYmxlUHJpbWFyeVBvaW50
ZXJEZXZpY2VUeXBlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6aG92
ZXJNZWRpYUZlYXR1cmVFdmFsKToKKyAgICAgICAgKFdlYkNvcmU6OnBvaW50ZXJNZWRpYUZlYXR1
cmVFdmFsKToKKworICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnRlcm5hbFNldHRpbmdzOjpJbnRlcm5hbFNldHRpbmdzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkludGVybmFsU2V0dGluZ3M6OnJlc3RvcmVUbyk6CisgICAgICAgIChXZWJD
b3JlOjpJbnRlcm5hbFNldHRpbmdzOjpzZXREZXZpY2VTdXBwb3J0c1RvdWNoKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5oOgorICAgICAg
ICAoSW50ZXJuYWxTZXR0aW5ncyk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbFNldHRpbmdz
LmlkbDoKKwogMjAxMi0wNS0yOSAgQW5kcmVhcyBLbGluZyAgPGtsaW5nQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgTWFrZSBTdHlsZVByb3BlcnR5U2V0IGEgdmFyaWFibGUtc2l6ZWQgb2JqZWN0IHRv
IHJlZHVjZSBtZW1vcnkgdXNlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Zh
bHVlS2V5d29yZHMuaW4gYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgpp
bmRleCAyOGUxNGNmNGExZmQ2OTZmYmQ2OTIxZTVlYzZhOTUxMmNiNDEwYTlhLi41YmM1NTQ1Yjg1
ZWM5MzM2MWFhN2E1ZGVlZjhjY2FkNjhhYTE5ZGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFs
dWVLZXl3b3Jkcy5pbgpAQCAtOTAxLDYgKzkwMSwxMSBAQCB3cmFwCiAvLyAtd2Via2l0LWxpbmUt
YWxpZ24KIGVkZ2VzCiAKKy8vIChwb2ludGVyOikgbWVkaWEgZmVhdHVyZQorLy8gbm9uZQorY29h
cnNlCitmaW5lCisKICNpZiBkZWZpbmVkKEVOQUJMRV9DU1NfRklMVEVSUykgJiYgRU5BQkxFX0NT
U19GSUxURVJTCiAvLyAtd2Via2l0LWZpbHRlcgogI2lmIGRlZmluZWQoRU5BQkxFX0NTU19TSEFE
RVJTKSAmJiBFTkFCTEVfQ1NTX1NIQURFUlMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9NZWRpYUZlYXR1cmVOYW1lcy5oIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhRmVhdHVyZU5h
bWVzLmgKaW5kZXggMWRhYTRlOWUxNTczODUwNDAwZWE2ZWY3YWUzYTY2NmQ1MWFiNzgzNi4uYjA4
NDM5ZTRhMDE4MzQ5MjJmZGEwMGU4YWQ5N2VmZjIwZmJlYzBmYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL01lZGlhRmVhdHVyZU5hbWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L01lZGlhRmVhdHVyZU5hbWVzLmgKQEAgLTMwLDYgKzMwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIG1hY3JvKGdyaWQsICJncmlkIikgXAogICAgIG1hY3JvKG1vbm9jaHJvbWUsICJtb25v
Y2hyb21lIikgXAogICAgIG1hY3JvKGhlaWdodCwgImhlaWdodCIpIFwKKyAgICBtYWNybyhob3Zl
ciwgImhvdmVyIikgXAogICAgIG1hY3JvKHdpZHRoLCAid2lkdGgiKSBcCiAgICAgbWFjcm8ob3Jp
ZW50YXRpb24sICJvcmllbnRhdGlvbiIpIFwKICAgICBtYWNybyhhc3BlY3RfcmF0aW8sICJhc3Bl
Y3QtcmF0aW8iKSBcCkBAIC01NSw2ICs1Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBt
YWNybyhtaW5faGVpZ2h0LCAibWluLWhlaWdodCIpIFwKICAgICBtYWNybyhtaW5fbW9ub2Nocm9t
ZSwgIm1pbi1tb25vY2hyb21lIikgXAogICAgIG1hY3JvKG1pbl93aWR0aCwgIm1pbi13aWR0aCIp
IFwKKyAgICBtYWNybyhwb2ludGVyLCAicG9pbnRlciIpIFwKICAgICBtYWNybyh0cmFuc2Zvcm1f
MmQsICItd2Via2l0LXRyYW5zZm9ybS0yZCIpIFwKICAgICBtYWNybyh0cmFuc2Zvcm1fM2QsICIt
d2Via2l0LXRyYW5zZm9ybS0zZCIpIFwKICAgICBtYWNybyh0cmFuc2l0aW9uLCAiLXdlYmtpdC10
cmFuc2l0aW9uIikgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlF
dmFsdWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3Bw
CmluZGV4IDRmMDQ1YzY3YWVlYjE5ZDZhZTQwMTFiMmU1NDJiMGY2MzQ4ZDg1YzUuLjkwYzlkZjI4
NmMwMTBhZDc1Y2MxNWNhY2VjYmQ0ZGUyMjc2YTdhY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
TWVkaWFRdWVyeUV2YWx1YXRvci5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJQbGF0
Zm9ybVNjcmVlbi5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJSZW5kZXJT
dHlsZS5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5o
IgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKQEAgLTUzNiw2ICs1MzcsNjYgQEAgc3RhdGlj
IGJvb2wgdmlld19tb2RlTWVkaWFGZWF0dXJlRXZhbChDU1NWYWx1ZSogdmFsdWUsIFJlbmRlclN0
eWxlKiwgRnJhbWUqIGZyYW0KICAgICByZXR1cm4gUGFnZTo6c3RyaW5nVG9WaWV3TW9kZShzdGF0
aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKS0+Z2V0U3RyaW5nVmFsdWUoKSkgPT0g
ZnJhbWUtPnBhZ2UoKS0+dmlld01vZGUoKTsKIH0KIAorZW51bSBQb2ludGVyRGV2aWNlVHlwZSB7
IFRvdWNoUG9pbnRlciwgTW91c2VQb2ludGVyLCBOb1BvaW50ZXIsIFVua25vd25Qb2ludGVyIH07
CisKK3N0YXRpYyBQb2ludGVyRGV2aWNlVHlwZSBsZWFzdENhcGFibGVQcmltYXJ5UG9pbnRlckRl
dmljZVR5cGUoRnJhbWUqIGZyYW1lKQoreworICAgIGlmIChmcmFtZS0+c2V0dGluZ3MoKS0+ZGV2
aWNlU3VwcG9ydHNUb3VjaCgpKQorICAgICAgICByZXR1cm4gVG91Y2hQb2ludGVyOworCisgICAg
Ly8gRklYTUU6IFdlIHNob3VsZCBhbHNvIHRyeSB0byBkZXRlcm1pbmUgaWYgd2Uga25vdyB3ZSBo
YXZlIGEgbW91c2UuCisgICAgLy8gV2hlbiB3ZSBkbyB0aGlzLCB3ZSdsbCBhbHNvIG5lZWQgdG8g
ZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIGtub3duIG5vdCB0bworICAgIC8vIGhhdmUgbW91c2Ugb3Ig
dG91Y2ggc2NyZWVuIChOb1BvaW50ZXIpIGFuZCB1bmtub3duIChVbmtub3duUG9pbnRlcikuCisg
ICAgLy8gV2UgY291bGQgYWxzbyB0YWtlIGludG8gYWNjb3VudCBvdGhlciBwcmVmZXJlbmNlcyBs
aWtlIGFjY2Vzc2liaWxpdHkKKyAgICAvLyBzZXR0aW5ncyB0byBkZWNpZGUgd2hpY2ggb2YgdGhl
IGF2YWlsYWJsZSBwb2ludGVycyBzaG91bGQgYmUgY29uc2lkZXJlZAorICAgIC8vICJwcmltYXJ5
Ii4KKworICAgIHJldHVybiBVbmtub3duUG9pbnRlcjsKK30KKworc3RhdGljIGJvb2wgaG92ZXJN
ZWRpYUZlYXR1cmVFdmFsKENTU1ZhbHVlKiB2YWx1ZSwgUmVuZGVyU3R5bGUqLCBGcmFtZSogZnJh
bWUsIE1lZGlhRmVhdHVyZVByZWZpeCkKK3sKKyAgICBQb2ludGVyRGV2aWNlVHlwZSBwb2ludGVy
ID0gbGVhc3RDYXBhYmxlUHJpbWFyeVBvaW50ZXJEZXZpY2VUeXBlKGZyYW1lKTsKKworICAgIC8v
IElmIHdlJ3JlIG9uIGEgcG9ydCB0aGF0IGhhc24ndCBleHBsaWNpdGx5IG9wdGVkIGludG8gcHJv
dmlkaW5nIHBvaW50ZXIgZGV2aWNlIGluZm9ybWF0aW9uCisgICAgLy8gKG9yIG90aGVyd2lzZSBj
YW4ndCBiZSBjb25maWRlbnQgaW4gdGhlIHBvaW50ZXIgaGFyZHdhcmUgYXZhaWxhYmxlKSwgdGhl
biBiZWhhdmUgZXhhY3RseQorICAgIC8vIGFzIGlmIHRoaXMgZmVhdHVyZSBmZWF0dXJlIGlzbid0
IHN1cHBvcnRlZC4KKyAgICBpZiAocG9pbnRlciA9PSBVbmtub3duUG9pbnRlcikKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgZmxvYXQgbnVtYmVyID0gMTsKKyAgICBpZiAodmFsdWUpIHsK
KyAgICAgICAgaWYgKCFudW1iZXJWYWx1ZSh2YWx1ZSwgbnVtYmVyKSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gKHBvaW50ZXIgPT0gTm9Qb2ludGVyICYm
ICFudW1iZXIpCisgICAgICAgIHx8IChwb2ludGVyID09IFRvdWNoUG9pbnRlciAmJiAhbnVtYmVy
KQorICAgICAgICB8fCAocG9pbnRlciA9PSBNb3VzZVBvaW50ZXIgJiYgbnVtYmVyID09IDEpOwor
fQorCitzdGF0aWMgYm9vbCBwb2ludGVyTWVkaWFGZWF0dXJlRXZhbChDU1NWYWx1ZSogdmFsdWUs
IFJlbmRlclN0eWxlKiwgRnJhbWUqIGZyYW1lLCBNZWRpYUZlYXR1cmVQcmVmaXgpCit7CisgICAg
UG9pbnRlckRldmljZVR5cGUgcG9pbnRlciA9IGxlYXN0Q2FwYWJsZVByaW1hcnlQb2ludGVyRGV2
aWNlVHlwZShmcmFtZSk7CisKKyAgICAvLyBJZiB3ZSdyZSBvbiBhIHBvcnQgdGhhdCBoYXNuJ3Qg
ZXhwbGljaXRseSBvcHRlZCBpbnRvIHByb3ZpZGluZyBwb2ludGVyIGRldmljZSBpbmZvcm1hdGlv
bgorICAgIC8vIChvciBvdGhlcndpc2UgY2FuJ3QgYmUgY29uZmlkZW50IGluIHRoZSBwb2ludGVy
IGhhcmR3YXJlIGF2YWlsYWJsZSksIHRoZW4gYmVoYXZlIGV4YWN0bHkKKyAgICAvLyBhcyBpZiB0
aGlzIGZlYXR1cmUgZmVhdHVyZSBpc24ndCBzdXBwb3J0ZWQuCisgICAgaWYgKHBvaW50ZXIgPT0g
VW5rbm93blBvaW50ZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghdmFsdWUp
CisgICAgICAgIHJldHVybiBwb2ludGVyICE9IE5vUG9pbnRlcjsKKworICAgIGlmICghdmFsdWUt
PmlzUHJpbWl0aXZlVmFsdWUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgU3RyaW5n
IHN0ciA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpLT5nZXRTdHJpbmdW
YWx1ZSgpOworICAgIHJldHVybiAocG9pbnRlciA9PSBOb1BvaW50ZXIgJiYgc3RyID09ICJub25l
IikKKyAgICAgICAgfHwgKHBvaW50ZXIgPT0gVG91Y2hQb2ludGVyICYmIHN0ciA9PSAiY29hcnNl
IikKKyAgICAgICAgfHwgKHBvaW50ZXIgPT0gTW91c2VQb2ludGVyICYmIHN0ciA9PSAiZmluZSIp
OworfQorCiBzdGF0aWMgdm9pZCBjcmVhdGVGdW5jdGlvbk1hcCgpCiB7CiAgICAgLy8gQ3JlYXRl
IHRoZSB0YWJsZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxT
ZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3Bw
CmluZGV4IGQ2NDg2NjgyMWI3YTlmMjA4Y2QzOGMwOTdjNzEyMjMwMjFkMWU3NDMuLjUwM2ZiMDg1
ZTgzODljNjkyMWM2MWI3OTJmNDA0MjJjODhlNzhjNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcApAQCAtMTA0LDYgKzEwNCw3IEBAIEludGVybmFsU2V0
dGluZ3M6OkludGVybmFsU2V0dGluZ3MoRnJhbWUqIGZyYW1lKQogI2lmIEVOQUJMRShJTlNQRUNU
T1IpICYmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQogICAgICwgbV9vcmlnaW5hbEphdmFT
Y3JpcHRQcm9maWxpbmdFbmFibGVkKHBhZ2UoKSAmJiBwYWdlKCktPmluc3BlY3RvckNvbnRyb2xs
ZXIoKSAmJiBwYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+cHJvZmlsZXJFbmFibGVkKCkp
CiAjZW5kaWYKKyAgICAsIG1fb3JpZ2luYWxEZXZpY2VTdXBwb3J0c1RvdWNoKHNldHRpbmdzKCkt
PmRldmljZVN1cHBvcnRzVG91Y2goKSkKIHsKIH0KIApAQCAtMTIyLDYgKzEyMyw3IEBAIHZvaWQg
SW50ZXJuYWxTZXR0aW5nczo6cmVzdG9yZVRvKFNldHRpbmdzKiBzZXR0aW5ncykKICAgICBpZiAo
cGFnZSgpICYmIHBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpKQogICAgICAgICBwYWdlKCkt
Pmluc3BlY3RvckNvbnRyb2xsZXIoKS0+c2V0UHJvZmlsZXJFbmFibGVkKG1fb3JpZ2luYWxKYXZh
U2NyaXB0UHJvZmlsaW5nRW5hYmxlZCk7CiAjZW5kaWYKKyAgICBzZXR0aW5ncy0+c2V0RGV2aWNl
U3VwcG9ydHNUb3VjaChtX29yaWdpbmFsRGV2aWNlU3VwcG9ydHNUb3VjaCk7CiB9CiAKIFNldHRp
bmdzKiBJbnRlcm5hbFNldHRpbmdzOjpzZXR0aW5ncygpIGNvbnN0CkBAIC0yNTgsNiArMjYwLDEy
IEBAIHZvaWQgSW50ZXJuYWxTZXR0aW5nczo6c2V0VG91Y2hFdmVudEVtdWxhdGlvbkVuYWJsZWQo
Ym9vbCBlbmFibGVkLCBFeGNlcHRpb25Db2RlCiAjZW5kaWYKIH0KIAordm9pZCBJbnRlcm5hbFNl
dHRpbmdzOjpzZXREZXZpY2VTdXBwb3J0c1RvdWNoKGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29k
ZSYgZWMpCit7CisgICAgSW50ZXJuYWxTZXR0aW5nc0d1YXJkRm9yU2V0dGluZ3MoKTsKKyAgICBz
ZXR0aW5ncygpLT5zZXREZXZpY2VTdXBwb3J0c1RvdWNoKGVuYWJsZWQpOworfQorCiB0eXBlZGVm
IHZvaWQgKFNldHRpbmdzOjoqU2V0Rm9udEZhbWlseUZ1bmN0aW9uKShjb25zdCBBdG9taWNTdHJp
bmcmLCBVU2NyaXB0Q29kZSk7CiBzdGF0aWMgdm9pZCBzZXRGb250RmFtaWx5KFNldHRpbmdzKiBz
ZXR0aW5ncywgY29uc3QgU3RyaW5nJiBmYW1pbHksIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBTZXRG
b250RmFtaWx5RnVuY3Rpb24gc2V0dGVyKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFsU2V0dGluZ3MuaAppbmRleCAxMTFjMTgwNjliZWFkZGI3ODgzZWEzMDhkZDEyNjAzMWQzYzU4
YzBmLi4wYmJlMjk5OTQ5ZDI1MTRjY2VjYmUwM2M0ODlkMWJlMWI4ZDQ2YjRhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaApAQCAtNjMsNiArNjMsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRQYWdlU2NhbGVGYWN0b3IoZmxvYXQgc2NhbGVGYWN0b3IsIGludCB4
LCBpbnQgeSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgc2V0UGVyVGlsZURyYXdpbmdFbmFi
bGVkKGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgc2V0VG91Y2hFdmVu
dEVtdWxhdGlvbkVuYWJsZWQoYm9vbCBlbmFibGVkLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9p
ZCBzZXREZXZpY2VTdXBwb3J0c1RvdWNoKGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29kZSYpOwog
ICAgIHZvaWQgc2V0U2hhZG93RE9NRW5hYmxlZChib29sIGVuYWJsZWQsIEV4Y2VwdGlvbkNvZGUm
KTsKICAgICB2b2lkIHNldFN0YW5kYXJkRm9udEZhbWlseShjb25zdCBTdHJpbmcmIGZhbWlseSwg
Y29uc3QgU3RyaW5nJiBzY3JpcHQsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHNldFNlcmlm
Rm9udEZhbWlseShjb25zdCBTdHJpbmcmIGZhbWlseSwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIEV4
Y2VwdGlvbkNvZGUmKTsKQEAgLTEwMiw2ICsxMDMsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShJ
TlNQRUNUT1IpICYmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQogICAgIGJvb2wgbV9vcmln
aW5hbEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkOwogI2VuZGlmCisgICAgYm9vbCBtX29yaWdp
bmFsRGV2aWNlU3VwcG9ydHNUb3VjaDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5pZGwgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaWRsCmluZGV4IDM1MDEwMWUx
MTU2MDNiNDRlMzcyNGMxNzZjZGY4YzUwYTNjNTAxMDMuLjQ1ZjQ0OTk0NmFlNzk1Mzc2YTQ1Mjdj
ODk1MDlhMDg3Zjg4N2I3NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxTZXR0aW5ncy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNl
dHRpbmdzLmlkbApAQCAtNDEsNiArNDEsNyBAQCBtb2R1bGUgd2luZG93IHsKICAgICAgICAgYm9v
bGVhbiB1bmlmaWVkVGV4dENoZWNraW5nRW5hYmxlZCgpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsK
ICAgICAgICAgdm9pZCBzZXRQYWdlU2NhbGVGYWN0b3IoaW4gZmxvYXQgc2NhbGVGYWN0b3IsIGlu
IGxvbmcgeCwgaW4gbG9uZyB5KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgdm9pZCBz
ZXRUb3VjaEV2ZW50RW11bGF0aW9uRW5hYmxlZChpbiBib29sZWFuIGVuYWJsZWQpIHJhaXNlcyhE
T01FeGNlcHRpb24pOworICAgICAgICB2b2lkIHNldERldmljZVN1cHBvcnRzVG91Y2goaW4gYm9v
bGVhbiBlbmFibGVkKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgdm9pZCBzZXRTaGFk
b3dET01FbmFibGVkKGluIGJvb2xlYW4gZW5hYmxlZCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAg
ICAgICAgIHZvaWQgc2V0U3RhbmRhcmRGb250RmFtaWx5KGluIERPTVN0cmluZyBmYW1pbHksIGlu
IERPTVN0cmluZyBzY3JpcHQpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgICAgICB2b2lkIHNl
dFNlcmlmRm9udEZhbWlseShpbiBET01TdHJpbmcgZmFtaWx5LCBpbiBET01TdHJpbmcgc2NyaXB0
KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzZWYwYTFlNWEyYzRlNmNjZDljYmZiYzNh
NWExNjdkNmI4ZWI4MmNjLi4yMjlmMGEyMTg5YTRhMmQ5OTIzNDZjYzllMjkxMzgxYjJkYWE5ZDM0
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDUtMjQgIFJpY2sgQnllcnMgIDxyYnllcnNA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gSW1wbGVtZW50IHBvaW50ZXIgYW5k
IGhvdmVyIENTUyBtZWRpYSBmZWF0dXJlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODc0MDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGRzIHRlc3RzIGZvciBwb2ludGVyIGFuZCBob3ZlciBtZWRpYSBm
ZWF0dXJlcywgZm9yIHRoZSBpbml0aWFsIGNhc2VzCisgICAgICAgIHdpdGggYW5kIHdpdGhvdXQg
YSB0b3VjaCBzY3JlZW4uCisKKyAgICAgICAgKiBmYXN0L21lZGlhL21xLXBvaW50ZXItZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhL21xLXBvaW50ZXIuaHRtbDogQWRk
ZWQuCisKIDIwMTItMDUtMjkgIEplc3NpZSBCZXJsaW4gIDxqYmVybGluQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbV2luXSBBU1NFUlQobV9tYW51YWxTdHJlYW0pIGZhaWxlZCBpbiBQbHVnaW5WaWV3
OjpkaWRGaW5pc2hMb2FkaW5nIHJ1bm5pbmcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
bWVkaWEvbXEtcG9pbnRlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhL21x
LXBvaW50ZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNmN2E2OTU2ZGRlZmZiMmQzMDViNTMw
NDc1OTIwM2NkYWFjNGJjMTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21l
ZGlhL21xLXBvaW50ZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjcgQEAKK1Rlc3QgdGhlIChw
b2ludGVyKSBhbmQgKGhvdmVyKSBtZWRpYSBmZWF0dXJlcy4gU2VlIEJ1ZyA4NzQwMyBmb3IgZGV0
YWlscy4KKworLS0tLS0tLS0tLS0tLSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gLS0tLS0tLS0tLS0t
LQorUXVlcnkgIihwb2ludGVyKSI6IGZhbHNlCitRdWVyeSAiKFBvaW50ZXIpIjogZmFsc2UKK1F1
ZXJ5ICIocG9pbnRlcjpub25lKSI6IGZhbHNlCitRdWVyeSAiKHBvaW50ZXI6Y29hcnNlKSI6IGZh
bHNlCitRdWVyeSAiKHBvaW50ZXI6Y29BUnNlKSI6IGZhbHNlCitRdWVyeSAiKHBvaW50ZXI6Ym9n
dXN2YWx1ZSkiOiBmYWxzZQorUXVlcnkgIihwb2ludGVyOmZpbmUpIjogZmFsc2UKK1F1ZXJ5ICIo
aG92ZXIpIjogZmFsc2UKK1F1ZXJ5ICIoaG92ZXI6MCkiOiBmYWxzZQorUXVlcnkgIihob3Zlcjox
KSI6IGZhbHNlCitRdWVyeSAiKGhvdmVyOmJvZ3VzdmFsdWUpIjogZmFsc2UKKy0tLS0tLS0tLS0t
LS0gd2l0aCB0b3VjaCBzY3JlZW4gLS0tLS0tLS0tLS0tLQorUXVlcnkgIihwb2ludGVyKSI6IHRy
dWUKK1F1ZXJ5ICIoUG9pbnRlcikiOiB0cnVlCitRdWVyeSAiKHBvaW50ZXI6bm9uZSkiOiBmYWxz
ZQorUXVlcnkgIihwb2ludGVyOmNvYXJzZSkiOiB0cnVlCitRdWVyeSAiKHBvaW50ZXI6Y29BUnNl
KSI6IHRydWUKK1F1ZXJ5ICIocG9pbnRlcjpib2d1c3ZhbHVlKSI6IGZhbHNlCitRdWVyeSAiKHBv
aW50ZXI6ZmluZSkiOiBmYWxzZQorUXVlcnkgIihob3ZlcikiOiBmYWxzZQorUXVlcnkgIihob3Zl
cjowKSI6IHRydWUKK1F1ZXJ5ICIoaG92ZXI6MSkiOiBmYWxzZQorUXVlcnkgIihob3Zlcjpib2d1
c3ZhbHVlKSI6IGZhbHNlCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEt
cG9pbnRlci5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1wb2ludGVyLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uN2M4MWE0MGFkYTUwNjVmYjMyZjk5OWEyYWUwNDdjMTgxNTBkZjdmZAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtcG9pbnRlci5odG1sCkBAIC0w
LDAgKzEsNTggQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+VGVzdCBDU1M0IG1lZGlhIHF1ZXJ5
ICJwb2ludGVyIiBhbmQgImhvdmVyIiBmZWF0dXJlcy48L3RpdGxlPgorPHN0eWxlIHR5cGU9InRl
eHQvY3NzIj4KKworPC9zdHlsZT4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFy
c2V0PSJ1dGYtOCI+CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgZnVuY3Rpb24gbG9n
KG0pIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdHMnKS5pbm5lckhU
TUwgKz0gbSArICc8YnI+JzsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0UXVlcmllcygpCisg
ICAgeworICAgICAgICB2YXIgcXVlcmllcyA9IFsKKyAgICAgICAgICAgICIocG9pbnRlcikiLAor
ICAgICAgICAgICAgIihQb2ludGVyKSIsCisgICAgICAgICAgICAiKHBvaW50ZXI6bm9uZSkiLAor
ICAgICAgICAgICAgIihwb2ludGVyOmNvYXJzZSkiLAorICAgICAgICAgICAgIihwb2ludGVyOmNv
QVJzZSkiLAorICAgICAgICAgICAgIihwb2ludGVyOmJvZ3VzdmFsdWUpIiwKKyAgICAgICAgICAg
ICIocG9pbnRlcjpmaW5lKSIsCisgICAgICAgICAgICAiKGhvdmVyKSIsCisgICAgICAgICAgICAi
KGhvdmVyOjApIiwKKyAgICAgICAgICAgICIoaG92ZXI6MSkiLAorICAgICAgICAgICAgIihob3Zl
cjpib2d1c3ZhbHVlKSIgXTsKKyAgICAgICAgZm9yICh2YXIgaW5kZXg9MDsgaW5kZXggPCBxdWVy
aWVzLmxlbmd0aDsgaW5kZXgrKykgeworICAgICAgICAgICAgbG9nKCJRdWVyeSAmcXVvdDsiICsg
cXVlcmllc1tpbmRleF0gKyAiJnF1b3Q6ICIgKworICAgICAgICAgICAgICAgIHdpbmRvdy5tYXRj
aE1lZGlhKHF1ZXJpZXNbaW5kZXhdKS5tYXRjaGVzKTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IGZ1bmN0aW9uIHJ1blRlc3RzKCkKKyAgICB7CisgICAgICAgIGxvZygiLS0tLS0tLS0tLS0tLSBk
ZWZhdWx0IGNvbmZpZ3VyYXRpb24gLS0tLS0tLS0tLS0tLSIpOworICAgICAgICB0ZXN0UXVlcmll
cygpOworCisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgICAgICBpbnRl
cm5hbHMuc2V0dGluZ3Muc2V0RGV2aWNlU3VwcG9ydHNUb3VjaCh0cnVlKTsKKworICAgICAgICAg
ICAgbG9nKCItLS0tLS0tLS0tLS0tIHdpdGggdG91Y2ggc2NyZWVuIC0tLS0tLS0tLS0tLS0iKTsK
KyAgICAgICAgICAgIHRlc3RRdWVyaWVzKCk7CisgICAgICAgIH0KKyAgICB9CisKKzwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0cygpIj4KKyAgICA8cD5UZXN0IHRoZSA8
YSBocmVmPSJodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9jc3M0LW1lZGlhcXVlcmllcy8jcG9pbnRl
ciI+KHBvaW50ZXIpPC9hPiBhbmQKKyAgICA8YSBocmVmPSJodHRwOi8vZGV2LnczLm9yZy9jc3N3
Zy9jc3M0LW1lZGlhcXVlcmllcy8jaG92ZXIiPihob3Zlcik8L2E+IG1lZGlhIGZlYXR1cmVzLgor
ICAgIFNlZSA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODc0MDMiPkJ1ZyA4NzQwMzwvYT4gZm9yIGRldGFpbHMuPC9wPgorCisgICAgPGRpdiBpZD0icmVz
dWx0cyI+CisgICAgPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144940</attachid>
            <date>2012-05-30 15:30:31 -0700</date>
            <delta_ts>2012-05-30 20:56:37 -0700</delta_ts>
            <desc>Merge with trunk, resolve conflicts</desc>
            <filename>bug-87403-20120530183030.patch</filename>
            <type>text/plain</type>
            <size>13677</size>
            <attacher name="Rick Byers">rbyers</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4OTgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2Q0ZWM1NDM1YjNiMjQ3
N2Y4N2U4MWRhMDA5Y2ExMTRiMzYzYWY2Yi4uYjU5MzUxZmY4OGE5YzlmMmJiM2NlNGRiYTZiZTI0
ZmE1ZGZhNjFhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEyLTA1LTI0ICBSaWNr
IEJ5ZXJzICA8cmJ5ZXJzQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEltcGxl
bWVudCBwb2ludGVyIGFuZCBob3ZlciBDU1MgbWVkaWEgZmVhdHVyZXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3NDAzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGluaXRpYWwgc3VwcG9ydCBmb3Ig
dGhlIHBvaW50ZXIgYW5kIGhvdmVyIG1lZGlhIGZlYXR1cmVzIGFzIGRlZmluZWQKKyAgICAgICAg
aGVyZToKKyAgICAgICAgaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzNC1tZWRpYXF1ZXJpZXMv
I3BvaW50ZXIKKyAgICAgICAgaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzNC1tZWRpYXF1ZXJp
ZXMvI2hvdmVyCisKKyAgICAgICAgRm9yIG5vdyB0aGlzIG9ubHkgc3VwcG9ydHMgdGhlIGNhc2Ug
d2hlcmUgd2Uga25vdyBhIHRvdWNoIHNjcmVlbiBpcworICAgICAgICBhdmFpbGFibGUgKGN1cnJl
bnRseSBrbm93biBvbmx5IGZvciB0aGUgY2hyb21pdW0gcG9ydCBvbiBjZXJ0YWluCisgICAgICAg
IHBsYXRmb3JtcykuICBBbGwgb3RoZXIgY2FzZXMgY29udGludWUgdG8gYmVoYXZlIGV4YWN0bHkg
YXMgaWYgdGhlIG1lZGlhCisgICAgICAgIGZlYXR1cmUgaXNuJ3Qgc3VwcG9ydGVkLgorCisgICAg
ICAgIFRlc3RzOiBmYXN0L21lZGlhL21xLXBvaW50ZXIuaHRtbAorCisgICAgICAgICogY3NzL0NT
U1ZhbHVlS2V5d29yZHMuaW46CisgICAgICAgICogY3NzL01lZGlhRmVhdHVyZU5hbWVzLmg6Cisg
ICAgICAgIChNZWRpYUZlYXR1cmVOYW1lcyk6CisgICAgICAgICogY3NzL01lZGlhUXVlcnlFdmFs
dWF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0TGVhc3RDYXBhYmxlUHJpbWFyeVBvaW50
ZXJEZXZpY2VUeXBlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6aG92
ZXJNZWRpYUZlYXR1cmVFdmFsKToKKyAgICAgICAgKFdlYkNvcmU6OnBvaW50ZXJNZWRpYUZlYXR1
cmVFdmFsKToKKworICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnRlcm5hbFNldHRpbmdzOjpJbnRlcm5hbFNldHRpbmdzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkludGVybmFsU2V0dGluZ3M6OnJlc3RvcmVUbyk6CisgICAgICAgIChXZWJD
b3JlOjpJbnRlcm5hbFNldHRpbmdzOjpzZXREZXZpY2VTdXBwb3J0c1RvdWNoKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5oOgorICAgICAg
ICAoSW50ZXJuYWxTZXR0aW5ncyk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbFNldHRpbmdz
LmlkbDoKKwogMjAxMi0wNS0zMCAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2Vu
QG5va2lhLmNvbT4KIAogICAgICAgICBbUXRdIEltYWdlRGVjb2RlclF0IGRvZXNuJ3Qgc3VwcG9y
dCBzb21lIGRlY29kZXJzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVl
S2V5d29yZHMuaW4gYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgppbmRl
eCBiOThjOGQwNDY3ZTMyYTY4MzQ1YzM3N2QyNWUyYTljNjAyMDIzYTc4Li5lMzliMDE2NmRhMTZk
YThhOGMyMDNiMDRkOGNlMjIxY2IxNjc4NjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVL
ZXl3b3Jkcy5pbgpAQCAtOTA1LDYgKzkwNSwxMSBAQCB3cmFwCiAvLyAtd2Via2l0LWxpbmUtYWxp
Z24KIGVkZ2VzCiAKKy8vIChwb2ludGVyOikgbWVkaWEgZmVhdHVyZQorLy8gbm9uZQorY29hcnNl
CitmaW5lCisKICNpZiBkZWZpbmVkKEVOQUJMRV9DU1NfRklMVEVSUykgJiYgRU5BQkxFX0NTU19G
SUxURVJTCiAvLyAtd2Via2l0LWZpbHRlcgogI2lmIGRlZmluZWQoRU5BQkxFX0NTU19TSEFERVJT
KSAmJiBFTkFCTEVfQ1NTX1NIQURFUlMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9N
ZWRpYUZlYXR1cmVOYW1lcy5oIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhRmVhdHVyZU5hbWVz
LmgKaW5kZXggMWRhYTRlOWUxNTczODUwNDAwZWE2ZWY3YWUzYTY2NmQ1MWFiNzgzNi4uYjA4NDM5
ZTRhMDE4MzQ5MjJmZGEwMGU4YWQ5N2VmZjIwZmJlYzBmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL01lZGlhRmVhdHVyZU5hbWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL01l
ZGlhRmVhdHVyZU5hbWVzLmgKQEAgLTMwLDYgKzMwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgIG1hY3JvKGdyaWQsICJncmlkIikgXAogICAgIG1hY3JvKG1vbm9jaHJvbWUsICJtb25vY2hy
b21lIikgXAogICAgIG1hY3JvKGhlaWdodCwgImhlaWdodCIpIFwKKyAgICBtYWNybyhob3Zlciwg
ImhvdmVyIikgXAogICAgIG1hY3JvKHdpZHRoLCAid2lkdGgiKSBcCiAgICAgbWFjcm8ob3JpZW50
YXRpb24sICJvcmllbnRhdGlvbiIpIFwKICAgICBtYWNybyhhc3BlY3RfcmF0aW8sICJhc3BlY3Qt
cmF0aW8iKSBcCkBAIC01NSw2ICs1Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBtYWNy
byhtaW5faGVpZ2h0LCAibWluLWhlaWdodCIpIFwKICAgICBtYWNybyhtaW5fbW9ub2Nocm9tZSwg
Im1pbi1tb25vY2hyb21lIikgXAogICAgIG1hY3JvKG1pbl93aWR0aCwgIm1pbi13aWR0aCIpIFwK
KyAgICBtYWNybyhwb2ludGVyLCAicG9pbnRlciIpIFwKICAgICBtYWNybyh0cmFuc2Zvcm1fMmQs
ICItd2Via2l0LXRyYW5zZm9ybS0yZCIpIFwKICAgICBtYWNybyh0cmFuc2Zvcm1fM2QsICItd2Vi
a2l0LXRyYW5zZm9ybS0zZCIpIFwKICAgICBtYWNybyh0cmFuc2l0aW9uLCAiLXdlYmtpdC10cmFu
c2l0aW9uIikgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFs
dWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCmlu
ZGV4IDRmMDQ1YzY3YWVlYjE5ZDZhZTQwMTFiMmU1NDJiMGY2MzQ4ZDg1YzUuLjkwYzlkZjI4NmMw
MTBhZDc1Y2MxNWNhY2VjYmQ0ZGUyMjc2YTdhY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVk
aWFRdWVyeUV2YWx1YXRvci5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJQbGF0Zm9y
bVNjcmVlbi5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJSZW5kZXJTdHls
ZS5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgog
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKQEAgLTUzNiw2ICs1MzcsNjYgQEAgc3RhdGljIGJv
b2wgdmlld19tb2RlTWVkaWFGZWF0dXJlRXZhbChDU1NWYWx1ZSogdmFsdWUsIFJlbmRlclN0eWxl
KiwgRnJhbWUqIGZyYW0KICAgICByZXR1cm4gUGFnZTo6c3RyaW5nVG9WaWV3TW9kZShzdGF0aWNf
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKS0+Z2V0U3RyaW5nVmFsdWUoKSkgPT0gZnJh
bWUtPnBhZ2UoKS0+dmlld01vZGUoKTsKIH0KIAorZW51bSBQb2ludGVyRGV2aWNlVHlwZSB7IFRv
dWNoUG9pbnRlciwgTW91c2VQb2ludGVyLCBOb1BvaW50ZXIsIFVua25vd25Qb2ludGVyIH07CisK
K3N0YXRpYyBQb2ludGVyRGV2aWNlVHlwZSBsZWFzdENhcGFibGVQcmltYXJ5UG9pbnRlckRldmlj
ZVR5cGUoRnJhbWUqIGZyYW1lKQoreworICAgIGlmIChmcmFtZS0+c2V0dGluZ3MoKS0+ZGV2aWNl
U3VwcG9ydHNUb3VjaCgpKQorICAgICAgICByZXR1cm4gVG91Y2hQb2ludGVyOworCisgICAgLy8g
RklYTUU6IFdlIHNob3VsZCBhbHNvIHRyeSB0byBkZXRlcm1pbmUgaWYgd2Uga25vdyB3ZSBoYXZl
IGEgbW91c2UuCisgICAgLy8gV2hlbiB3ZSBkbyB0aGlzLCB3ZSdsbCBhbHNvIG5lZWQgdG8gZGlm
ZmVyZW50aWF0ZSBiZXR3ZWVuIGtub3duIG5vdCB0bworICAgIC8vIGhhdmUgbW91c2Ugb3IgdG91
Y2ggc2NyZWVuIChOb1BvaW50ZXIpIGFuZCB1bmtub3duIChVbmtub3duUG9pbnRlcikuCisgICAg
Ly8gV2UgY291bGQgYWxzbyB0YWtlIGludG8gYWNjb3VudCBvdGhlciBwcmVmZXJlbmNlcyBsaWtl
IGFjY2Vzc2liaWxpdHkKKyAgICAvLyBzZXR0aW5ncyB0byBkZWNpZGUgd2hpY2ggb2YgdGhlIGF2
YWlsYWJsZSBwb2ludGVycyBzaG91bGQgYmUgY29uc2lkZXJlZAorICAgIC8vICJwcmltYXJ5Ii4K
KworICAgIHJldHVybiBVbmtub3duUG9pbnRlcjsKK30KKworc3RhdGljIGJvb2wgaG92ZXJNZWRp
YUZlYXR1cmVFdmFsKENTU1ZhbHVlKiB2YWx1ZSwgUmVuZGVyU3R5bGUqLCBGcmFtZSogZnJhbWUs
IE1lZGlhRmVhdHVyZVByZWZpeCkKK3sKKyAgICBQb2ludGVyRGV2aWNlVHlwZSBwb2ludGVyID0g
bGVhc3RDYXBhYmxlUHJpbWFyeVBvaW50ZXJEZXZpY2VUeXBlKGZyYW1lKTsKKworICAgIC8vIElm
IHdlJ3JlIG9uIGEgcG9ydCB0aGF0IGhhc24ndCBleHBsaWNpdGx5IG9wdGVkIGludG8gcHJvdmlk
aW5nIHBvaW50ZXIgZGV2aWNlIGluZm9ybWF0aW9uCisgICAgLy8gKG9yIG90aGVyd2lzZSBjYW4n
dCBiZSBjb25maWRlbnQgaW4gdGhlIHBvaW50ZXIgaGFyZHdhcmUgYXZhaWxhYmxlKSwgdGhlbiBi
ZWhhdmUgZXhhY3RseQorICAgIC8vIGFzIGlmIHRoaXMgZmVhdHVyZSBmZWF0dXJlIGlzbid0IHN1
cHBvcnRlZC4KKyAgICBpZiAocG9pbnRlciA9PSBVbmtub3duUG9pbnRlcikKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgZmxvYXQgbnVtYmVyID0gMTsKKyAgICBpZiAodmFsdWUpIHsKKyAg
ICAgICAgaWYgKCFudW1iZXJWYWx1ZSh2YWx1ZSwgbnVtYmVyKSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gKHBvaW50ZXIgPT0gTm9Qb2ludGVyICYmICFu
dW1iZXIpCisgICAgICAgIHx8IChwb2ludGVyID09IFRvdWNoUG9pbnRlciAmJiAhbnVtYmVyKQor
ICAgICAgICB8fCAocG9pbnRlciA9PSBNb3VzZVBvaW50ZXIgJiYgbnVtYmVyID09IDEpOworfQor
CitzdGF0aWMgYm9vbCBwb2ludGVyTWVkaWFGZWF0dXJlRXZhbChDU1NWYWx1ZSogdmFsdWUsIFJl
bmRlclN0eWxlKiwgRnJhbWUqIGZyYW1lLCBNZWRpYUZlYXR1cmVQcmVmaXgpCit7CisgICAgUG9p
bnRlckRldmljZVR5cGUgcG9pbnRlciA9IGxlYXN0Q2FwYWJsZVByaW1hcnlQb2ludGVyRGV2aWNl
VHlwZShmcmFtZSk7CisKKyAgICAvLyBJZiB3ZSdyZSBvbiBhIHBvcnQgdGhhdCBoYXNuJ3QgZXhw
bGljaXRseSBvcHRlZCBpbnRvIHByb3ZpZGluZyBwb2ludGVyIGRldmljZSBpbmZvcm1hdGlvbgor
ICAgIC8vIChvciBvdGhlcndpc2UgY2FuJ3QgYmUgY29uZmlkZW50IGluIHRoZSBwb2ludGVyIGhh
cmR3YXJlIGF2YWlsYWJsZSksIHRoZW4gYmVoYXZlIGV4YWN0bHkKKyAgICAvLyBhcyBpZiB0aGlz
IGZlYXR1cmUgZmVhdHVyZSBpc24ndCBzdXBwb3J0ZWQuCisgICAgaWYgKHBvaW50ZXIgPT0gVW5r
bm93blBvaW50ZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghdmFsdWUpCisg
ICAgICAgIHJldHVybiBwb2ludGVyICE9IE5vUG9pbnRlcjsKKworICAgIGlmICghdmFsdWUtPmlz
UHJpbWl0aXZlVmFsdWUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgU3RyaW5nIHN0
ciA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpLT5nZXRTdHJpbmdWYWx1
ZSgpOworICAgIHJldHVybiAocG9pbnRlciA9PSBOb1BvaW50ZXIgJiYgc3RyID09ICJub25lIikK
KyAgICAgICAgfHwgKHBvaW50ZXIgPT0gVG91Y2hQb2ludGVyICYmIHN0ciA9PSAiY29hcnNlIikK
KyAgICAgICAgfHwgKHBvaW50ZXIgPT0gTW91c2VQb2ludGVyICYmIHN0ciA9PSAiZmluZSIpOwor
fQorCiBzdGF0aWMgdm9pZCBjcmVhdGVGdW5jdGlvbk1hcCgpCiB7CiAgICAgLy8gQ3JlYXRlIHRo
ZSB0YWJsZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0
aW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCmlu
ZGV4IDJmNDI3OTQzYTVmMDgyN2I3ZjU2MTA0MzcyMGM3NzgyMjJmNzVhNzYuLjYwMzA0YWE2NTE5
YTI4OWMzYjI3MjRmMzU4MDc5ZjU2YmIxMGU4MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbFNldHRpbmdzLmNwcApAQCAtMTA1LDYgKzEwNSw3IEBAIEludGVybmFsU2V0dGlu
Z3M6OkludGVybmFsU2V0dGluZ3MoRnJhbWUqIGZyYW1lKQogICAgICwgbV9vcmlnaW5hbEphdmFT
Y3JpcHRQcm9maWxpbmdFbmFibGVkKHBhZ2UoKSAmJiBwYWdlKCktPmluc3BlY3RvckNvbnRyb2xs
ZXIoKSAmJiBwYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+cHJvZmlsZXJFbmFibGVkKCkp
CiAjZW5kaWYKICAgICAsIG1fb3JpZ2luYWxXaW5kb3dGb2N1c1Jlc3RyaWN0ZWQoc2V0dGluZ3Mo
KS0+d2luZG93Rm9jdXNSZXN0cmljdGVkKCkpCisgICAgLCBtX29yaWdpbmFsRGV2aWNlU3VwcG9y
dHNUb3VjaChzZXR0aW5ncygpLT5kZXZpY2VTdXBwb3J0c1RvdWNoKCkpCiB7CiB9CiAKQEAgLTEy
NCw2ICsxMjUsNyBAQCB2b2lkIEludGVybmFsU2V0dGluZ3M6OnJlc3RvcmVUbyhTZXR0aW5ncyog
c2V0dGluZ3MpCiAgICAgICAgIHBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5zZXRQcm9m
aWxlckVuYWJsZWQobV9vcmlnaW5hbEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkKTsKICNlbmRp
ZgogICAgIHNldHRpbmdzLT5zZXRXaW5kb3dGb2N1c1Jlc3RyaWN0ZWQobV9vcmlnaW5hbFdpbmRv
d0ZvY3VzUmVzdHJpY3RlZCk7CisgICAgc2V0dGluZ3MtPnNldERldmljZVN1cHBvcnRzVG91Y2go
bV9vcmlnaW5hbERldmljZVN1cHBvcnRzVG91Y2gpOwogfQogCiBTZXR0aW5ncyogSW50ZXJuYWxT
ZXR0aW5nczo6c2V0dGluZ3MoKSBjb25zdApAQCAtMjYwLDYgKzI2MiwxMiBAQCB2b2lkIEludGVy
bmFsU2V0dGluZ3M6OnNldFRvdWNoRXZlbnRFbXVsYXRpb25FbmFibGVkKGJvb2wgZW5hYmxlZCwg
RXhjZXB0aW9uQ29kZQogI2VuZGlmCiB9CiAKK3ZvaWQgSW50ZXJuYWxTZXR0aW5nczo6c2V0RGV2
aWNlU3VwcG9ydHNUb3VjaChib29sIGVuYWJsZWQsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAg
IEludGVybmFsU2V0dGluZ3NHdWFyZEZvclNldHRpbmdzKCk7CisgICAgc2V0dGluZ3MoKS0+c2V0
RGV2aWNlU3VwcG9ydHNUb3VjaChlbmFibGVkKTsKK30KKwogdHlwZWRlZiB2b2lkIChTZXR0aW5n
czo6KlNldEZvbnRGYW1pbHlGdW5jdGlvbikoY29uc3QgQXRvbWljU3RyaW5nJiwgVVNjcmlwdENv
ZGUpOwogc3RhdGljIHZvaWQgc2V0Rm9udEZhbWlseShTZXR0aW5ncyogc2V0dGluZ3MsIGNvbnN0
IFN0cmluZyYgZmFtaWx5LCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgU2V0Rm9udEZhbWlseUZ1bmN0
aW9uIHNldHRlcikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxTZXR0aW5ncy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmgK
aW5kZXggODZjZDEzNTBlZDZlNzIyODE1MzBjYjZjNmFhN2FiMmY2NWY3OTE4Yy4uYWZmZWYwNzkw
MTEwMzQ2ZDhmNThkNTU3NDA2NmE0OGRhZGJlNWM4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbFNldHRpbmdzLmgKQEAgLTYzLDYgKzYzLDcgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0UGFnZVNjYWxlRmFjdG9yKGZsb2F0IHNjYWxlRmFjdG9yLCBpbnQgeCwgaW50IHksIEV4Y2Vw
dGlvbkNvZGUmKTsKICAgICB2b2lkIHNldFBlclRpbGVEcmF3aW5nRW5hYmxlZChib29sIGVuYWJs
ZWQsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHNldFRvdWNoRXZlbnRFbXVsYXRpb25FbmFi
bGVkKGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgc2V0RGV2aWNlU3Vw
cG9ydHNUb3VjaChib29sIGVuYWJsZWQsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHNldFNo
YWRvd0RPTUVuYWJsZWQoYm9vbCBlbmFibGVkLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBz
ZXRTdGFuZGFyZEZvbnRGYW1pbHkoY29uc3QgU3RyaW5nJiBmYW1pbHksIGNvbnN0IFN0cmluZyYg
c2NyaXB0LCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBzZXRTZXJpZkZvbnRGYW1pbHkoY29u
c3QgU3RyaW5nJiBmYW1pbHksIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBFeGNlcHRpb25Db2RlJik7
CkBAIC0xMDQsNiArMTA1LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fb3JpZ2luYWxKYXZhU2Ny
aXB0UHJvZmlsaW5nRW5hYmxlZDsKICNlbmRpZgogICAgIGJvb2wgbV9vcmlnaW5hbFdpbmRvd0Zv
Y3VzUmVzdHJpY3RlZDsKKyAgICBib29sIG1fb3JpZ2luYWxEZXZpY2VTdXBwb3J0c1RvdWNoOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxTZXR0aW5ncy5pZGwKaW5kZXggYjZhMTRlNzcxMWNmN2MzZDZiNDUxYmNhODc1NmQxN2Ri
MjgxNDUwNi4uNTNjNTE3NjM4NjIyNzBjMTE1MTAwYWFiODZiYTc1MjIzZjg3NzYyYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaWRsCkBAIC00MSw2ICs0MSw3
IEBAIG1vZHVsZSB3aW5kb3cgewogICAgICAgICBib29sZWFuIHVuaWZpZWRUZXh0Q2hlY2tpbmdF
bmFibGVkKCkgcmFpc2VzIChET01FeGNlcHRpb24pOwogICAgICAgICB2b2lkIHNldFBhZ2VTY2Fs
ZUZhY3RvcihpbiBmbG9hdCBzY2FsZUZhY3RvciwgaW4gbG9uZyB4LCBpbiBsb25nIHkpIHJhaXNl
cyhET01FeGNlcHRpb24pOwogICAgICAgICB2b2lkIHNldFRvdWNoRXZlbnRFbXVsYXRpb25FbmFi
bGVkKGluIGJvb2xlYW4gZW5hYmxlZCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAgIHZv
aWQgc2V0RGV2aWNlU3VwcG9ydHNUb3VjaChpbiBib29sZWFuIGVuYWJsZWQpIHJhaXNlcyhET01F
eGNlcHRpb24pOwogICAgICAgICB2b2lkIHNldFNoYWRvd0RPTUVuYWJsZWQoaW4gYm9vbGVhbiBl
bmFibGVkKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgdm9pZCBzZXRTdGFuZGFyZEZv
bnRGYW1pbHkoaW4gRE9NU3RyaW5nIGZhbWlseSwgaW4gRE9NU3RyaW5nIHNjcmlwdCkgcmFpc2Vz
KERPTUV4Y2VwdGlvbik7CiAgICAgICAgIHZvaWQgc2V0U2VyaWZGb250RmFtaWx5KGluIERPTVN0
cmluZyBmYW1pbHksIGluIERPTVN0cmluZyBzY3JpcHQpIHJhaXNlcyhET01FeGNlcHRpb24pOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IDQ3MTVjODVhMTIxZjk1ZTRmY2Y1M2U0NmY3N2U1NWQ2MzA3NDkwNDIuLmIyZjg2NjU3
Yzk4NDVmZWIwNGYyMDIwY2YyY2RlZTM3NDkxZTk3MjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAor
MjAxMi0wNS0yNCAgUmljayBCeWVycyAgPHJieWVyc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
W2Nocm9taXVtXSBJbXBsZW1lbnQgcG9pbnRlciBhbmQgaG92ZXIgQ1NTIG1lZGlhIGZlYXR1cmVz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NzQwMwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZHMgdGVz
dHMgZm9yIHBvaW50ZXIgYW5kIGhvdmVyIG1lZGlhIGZlYXR1cmVzLCBmb3IgdGhlIGluaXRpYWwg
Y2FzZXMKKyAgICAgICAgd2l0aCBhbmQgd2l0aG91dCBhIHRvdWNoIHNjcmVlbi4KKworICAgICAg
ICAqIGZhc3QvbWVkaWEvbXEtcG9pbnRlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvbWVkaWEvbXEtcG9pbnRlci5odG1sOiBBZGRlZC4KKwogMjAxMi0wNS0zMCAgRW1pbCBB
IEVrbHVuZCAgPGVhZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRmxvYXRzIHdyYXBzIGluY29y
cmVjdGx5IHdoZW4gdG9wIGVkZ2UgaGFzIHN1YnBpeGVsIHByZWNpc2lvbgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1wb2ludGVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2Zhc3QvbWVkaWEvbXEtcG9pbnRlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2Y3YTY5
NTZkZGVmZmIyZDMwNWI1MzA0NzU5MjAzY2RhYWM0YmMxMAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtcG9pbnRlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwy
NyBAQAorVGVzdCB0aGUgKHBvaW50ZXIpIGFuZCAoaG92ZXIpIG1lZGlhIGZlYXR1cmVzLiBTZWUg
QnVnIDg3NDAzIGZvciBkZXRhaWxzLgorCistLS0tLS0tLS0tLS0tIGRlZmF1bHQgY29uZmlndXJh
dGlvbiAtLS0tLS0tLS0tLS0tCitRdWVyeSAiKHBvaW50ZXIpIjogZmFsc2UKK1F1ZXJ5ICIoUG9p
bnRlcikiOiBmYWxzZQorUXVlcnkgIihwb2ludGVyOm5vbmUpIjogZmFsc2UKK1F1ZXJ5ICIocG9p
bnRlcjpjb2Fyc2UpIjogZmFsc2UKK1F1ZXJ5ICIocG9pbnRlcjpjb0FSc2UpIjogZmFsc2UKK1F1
ZXJ5ICIocG9pbnRlcjpib2d1c3ZhbHVlKSI6IGZhbHNlCitRdWVyeSAiKHBvaW50ZXI6ZmluZSki
OiBmYWxzZQorUXVlcnkgIihob3ZlcikiOiBmYWxzZQorUXVlcnkgIihob3ZlcjowKSI6IGZhbHNl
CitRdWVyeSAiKGhvdmVyOjEpIjogZmFsc2UKK1F1ZXJ5ICIoaG92ZXI6Ym9ndXN2YWx1ZSkiOiBm
YWxzZQorLS0tLS0tLS0tLS0tLSB3aXRoIHRvdWNoIHNjcmVlbiAtLS0tLS0tLS0tLS0tCitRdWVy
eSAiKHBvaW50ZXIpIjogdHJ1ZQorUXVlcnkgIihQb2ludGVyKSI6IHRydWUKK1F1ZXJ5ICIocG9p
bnRlcjpub25lKSI6IGZhbHNlCitRdWVyeSAiKHBvaW50ZXI6Y29hcnNlKSI6IHRydWUKK1F1ZXJ5
ICIocG9pbnRlcjpjb0FSc2UpIjogdHJ1ZQorUXVlcnkgIihwb2ludGVyOmJvZ3VzdmFsdWUpIjog
ZmFsc2UKK1F1ZXJ5ICIocG9pbnRlcjpmaW5lKSI6IGZhbHNlCitRdWVyeSAiKGhvdmVyKSI6IGZh
bHNlCitRdWVyeSAiKGhvdmVyOjApIjogdHJ1ZQorUXVlcnkgIihob3ZlcjoxKSI6IGZhbHNlCitR
dWVyeSAiKGhvdmVyOmJvZ3VzdmFsdWUpIjogZmFsc2UKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9tZWRpYS9tcS1wb2ludGVyLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhL21x
LXBvaW50ZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YzgxYTQwYWRhNTA2NWZiMzJmOTk5YTJhZTA0N2Mx
ODE1MGRmN2ZkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1w
b2ludGVyLmh0bWwKQEAgLTAsMCArMSw1OCBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5UZXN0
IENTUzQgbWVkaWEgcXVlcnkgInBvaW50ZXIiIGFuZCAiaG92ZXIiIGZlYXR1cmVzLjwvdGl0bGU+
Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorCis8L3N0eWxlPgorPHNjcmlwdCB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KKyAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisK
KyAgICBmdW5jdGlvbiBsb2cobSkgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
cmVzdWx0cycpLmlubmVySFRNTCArPSBtICsgJzxicj4nOworICAgIH0KKworICAgIGZ1bmN0aW9u
IHRlc3RRdWVyaWVzKCkKKyAgICB7CisgICAgICAgIHZhciBxdWVyaWVzID0gWworICAgICAgICAg
ICAgIihwb2ludGVyKSIsCisgICAgICAgICAgICAiKFBvaW50ZXIpIiwKKyAgICAgICAgICAgICIo
cG9pbnRlcjpub25lKSIsCisgICAgICAgICAgICAiKHBvaW50ZXI6Y29hcnNlKSIsCisgICAgICAg
ICAgICAiKHBvaW50ZXI6Y29BUnNlKSIsCisgICAgICAgICAgICAiKHBvaW50ZXI6Ym9ndXN2YWx1
ZSkiLAorICAgICAgICAgICAgIihwb2ludGVyOmZpbmUpIiwKKyAgICAgICAgICAgICIoaG92ZXIp
IiwKKyAgICAgICAgICAgICIoaG92ZXI6MCkiLAorICAgICAgICAgICAgIihob3ZlcjoxKSIsCisg
ICAgICAgICAgICAiKGhvdmVyOmJvZ3VzdmFsdWUpIiBdOworICAgICAgICBmb3IgKHZhciBpbmRl
eD0wOyBpbmRleCA8IHF1ZXJpZXMubGVuZ3RoOyBpbmRleCsrKSB7CisgICAgICAgICAgICBsb2co
IlF1ZXJ5ICZxdW90OyIgKyBxdWVyaWVzW2luZGV4XSArICImcXVvdDogIiArCisgICAgICAgICAg
ICAgICAgd2luZG93Lm1hdGNoTWVkaWEocXVlcmllc1tpbmRleF0pLm1hdGNoZXMpOworICAgICAg
ICB9CisgICAgfQorCisgICAgZnVuY3Rpb24gcnVuVGVzdHMoKQorICAgIHsKKyAgICAgICAgbG9n
KCItLS0tLS0tLS0tLS0tIGRlZmF1bHQgY29uZmlndXJhdGlvbiAtLS0tLS0tLS0tLS0tIik7Cisg
ICAgICAgIHRlc3RRdWVyaWVzKCk7CisKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsK
KyAgICAgICAgICAgIGludGVybmFscy5zZXR0aW5ncy5zZXREZXZpY2VTdXBwb3J0c1RvdWNoKHRy
dWUpOworCisgICAgICAgICAgICBsb2coIi0tLS0tLS0tLS0tLS0gd2l0aCB0b3VjaCBzY3JlZW4g
LS0tLS0tLS0tLS0tLSIpOworICAgICAgICAgICAgdGVzdFF1ZXJpZXMoKTsKKyAgICAgICAgfQor
ICAgIH0KKworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3RzKCkiPgor
ICAgIDxwPlRlc3QgdGhlIDxhIGhyZWY9Imh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2NzczQtbWVk
aWFxdWVyaWVzLyNwb2ludGVyIj4ocG9pbnRlcik8L2E+IGFuZAorICAgIDxhIGhyZWY9Imh0dHA6
Ly9kZXYudzMub3JnL2Nzc3dnL2NzczQtbWVkaWFxdWVyaWVzLyNob3ZlciI+KGhvdmVyKTwvYT4g
bWVkaWEgZmVhdHVyZXMuCisgICAgU2VlIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD04NzQwMyI+QnVnIDg3NDAzPC9hPiBmb3IgZGV0YWlscy48L3A+CisK
KyAgICA8ZGl2IGlkPSJyZXN1bHRzIj4KKyAgICA8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>