<?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>102557</bug_id>
          
          <creation_ts>2012-11-16 13:53:22 -0800</creation_ts>
          <short_desc>Adding occlusion detection to reduce overdraw in RenderBox background rendering</short_desc>
          <delta_ts>2012-11-26 11:00:52 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Justin Novosad">junov</reporter>
          <assigned_to name="Justin Novosad">junov</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>fmalita</cc>
    
    <cc>japhet</cc>
    
    <cc>jbadics</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>ojan</cc>
    
    <cc>senorblanco</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tomhudson</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>769648</commentid>
    <comment_count>0</comment_count>
    <who name="Justin Novosad">junov</who>
    <bug_when>2012-11-16 13:53:22 -0800</bug_when>
    <thetext>Adding occlusion detection to reduce overdraw in RenderBox background rendering</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769666</commentid>
    <comment_count>1</comment_count>
      <attachid>174758</attachid>
    <who name="Justin Novosad">junov</who>
    <bug_when>2012-11-16 14:07:51 -0800</bug_when>
    <thetext>Created attachment 174758
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769769</commentid>
    <comment_count>2</comment_count>
      <attachid>174758</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-16 16:44:51 -0800</bug_when>
    <thetext>Comment on attachment 174758
Patch

Attachment 174758 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14861375

New failing tests:
fast/dom/shadow/shadow-dom-event-dispatching.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770341</commentid>
    <comment_count>3</comment_count>
      <attachid>174758</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2012-11-18 21:51:17 -0800</bug_when>
    <thetext>Comment on attachment 174758
Patch

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

Looks likea great change, but I was curious about the static cast switch rather than a simple virtual method. They all appear to be children of a common superclass.

&gt; Source/WebCore/css/CSSImageGeneratorValue.cpp:200
&gt; +{

In the ChangeLog could you indicate why this switch statement is preferable to a virtual method on CSSImageGeneratorValue? Seems like a lot of casting and specialized knowledge about which subclasses need this behavior. Was this found to be a bottleneck?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770947</commentid>
    <comment_count>4</comment_count>
    <who name="Justin Novosad">junov</who>
    <bug_when>2012-11-19 12:36:54 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 174758 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=174758&amp;action=review
&gt; 
&gt; Looks likea great change, but I was curious about the static cast switch rather than a simple virtual method. They all appear to be children of a common superclass.

Actually, I was curious about that too when I wrote it.  I just followed the pattern that was already there.  I plead guilty to cargo cult programming.

I assume there is some sort of requirement for CSS*Value classes to be POD?  I should go satisfy my own curiosity, and come back...

FWIW, before landing this I will perform some experiments just to make sure we are getting full use case coverage (all the hasAlpha methods returning true and false).  I will add additional tests to the patch if needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771838</commentid>
    <comment_count>5</comment_count>
    <who name="Justin Novosad">junov</who>
    <bug_when>2012-11-20 07:07:28 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; 
&gt; In the ChangeLog could you indicate why this switch statement is preferable to a virtual method on CSSImageGeneratorValue? Seems like a lot of casting and specialized knowledge about which subclasses need this behavior. Was this found to be a bottleneck?

The reason is already documented in CSSValue.h:
// NOTE: This class is non-virtual for memory and performance reasons.
// Don&apos;t go making it virtual again unless you know exactly what you&apos;re doing!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773200</commentid>
    <comment_count>6</comment_count>
      <attachid>175503</attachid>
    <who name="Justin Novosad">junov</who>
    <bug_when>2012-11-21 13:03:46 -0800</bug_when>
    <thetext>Created attachment 175503
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773252</commentid>
    <comment_count>7</comment_count>
    <who name="Justin Novosad">junov</who>
    <bug_when>2012-11-21 13:57:47 -0800</bug_when>
    <thetext>Latest patch fixes issues I found while performing more in-depth testing.  I found that hasAlpha was returning true for opaque bitmap images that had not yet been pulled into cache.  To fix this, I had to add a RanderObject* argument to hasAlpha so that if the style contains a BitmapImage, the bitmap can be resolved for the current renderer.

The new patch also adds a layout test that covers a series of use cases that are optimization candidates.  The current patch successfully optimizes 6 of the 10 cases.  A regular test run does not verify that occlusion culling kicked in. To determine whether an optimization is successful, the test has to be run manually with a debugger attached.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773266</commentid>
    <comment_count>8</comment_count>
      <attachid>175520</attachid>
    <who name="Justin Novosad">junov</who>
    <bug_when>2012-11-21 14:07:57 -0800</bug_when>
    <thetext>Created attachment 175520
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773267</commentid>
    <comment_count>9</comment_count>
    <who name="Justin Novosad">junov</who>
    <bug_when>2012-11-21 14:08:57 -0800</bug_when>
    <thetext>New patch adds test expectations for missing baselines</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773483</commentid>
    <comment_count>10</comment_count>
      <attachid>175520</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-11-21 18:53:33 -0800</bug_when>
    <thetext>Comment on attachment 175520
Patch

Attachment 175520 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14961191

New failing tests:
fast/backgrounds/background-opaque-images-over-color.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773984</commentid>
    <comment_count>11</comment_count>
      <attachid>175684</attachid>
    <who name="Justin Novosad">junov</who>
    <bug_when>2012-11-22 08:55:45 -0800</bug_when>
    <thetext>Created attachment 175684
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773991</commentid>
    <comment_count>12</comment_count>
    <who name="Justin Novosad">junov</who>
    <bug_when>2012-11-22 09:05:03 -0800</bug_when>
    <thetext>New patch adds text baseline and fixes bug where &quot;space&quot; repeat mode was falsely considered opaque (bug caught by existing test).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774034</commentid>
    <comment_count>13</comment_count>
      <attachid>175520</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-11-22 10:36:24 -0800</bug_when>
    <thetext>Comment on attachment 175520
Patch

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

&gt; Source/WebCore/loader/cache/CachedImage.cpp:478
&gt; +bool CachedImage::hasAlpha(const RenderObject* renderer)

Maybe we should rename this to currentFrameHasAlpha() as well, just to be clear to callers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774036</commentid>
    <comment_count>14</comment_count>
      <attachid>175520</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-11-22 10:40:18 -0800</bug_when>
    <thetext>Comment on attachment 175520
Patch

Fix the above on landing, and I&apos;m good with it.  r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774038</commentid>
    <comment_count>15</comment_count>
      <attachid>175684</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-11-22 10:42:46 -0800</bug_when>
    <thetext>Comment on attachment 175684
Patch

r+&apos;ing the right patch this time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774039</commentid>
    <comment_count>16</comment_count>
      <attachid>175695</attachid>
    <who name="Justin Novosad">junov</who>
    <bug_when>2012-11-22 10:52:16 -0800</bug_when>
    <thetext>Created attachment 175695
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774117</commentid>
    <comment_count>17</comment_count>
      <attachid>175695</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-11-22 15:32:07 -0800</bug_when>
    <thetext>Comment on attachment 175695
Patch for landing

According to Noel Gordon, the change to BitmapImage will break deferred image decoding.  See http://trac.webkit.org/changeset/125154

I&apos;m going to cq- this patch for now until we can sort this out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774538</commentid>
    <comment_count>18</comment_count>
      <attachid>175805</attachid>
    <who name="Justin Novosad">junov</who>
    <bug_when>2012-11-23 07:15:56 -0800</bug_when>
    <thetext>Created attachment 175805
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774546</commentid>
    <comment_count>19</comment_count>
    <who name="Justin Novosad">junov</who>
    <bug_when>2012-11-23 07:25:22 -0800</bug_when>
    <thetext>Triggering the decode for the purpose of occlusion culling while rendering the RenderBox is perfectly fine because the decoded image will be required imminently anyways in order to draw it. New patch reverts change to BimapImage, and moves the decode triggering into CachedImage.  Since this is a new method, it won&apos;t affect previously existing code paths that check for the presence of alpha.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774588</commentid>
    <comment_count>20</comment_count>
      <attachid>175805</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-11-23 08:44:06 -0800</bug_when>
    <thetext>Comment on attachment 175805
Patch

Great.  This is the solution I was thinking of as well.  r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774603</commentid>
    <comment_count>21</comment_count>
      <attachid>175805</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-11-23 09:08:45 -0800</bug_when>
    <thetext>Comment on attachment 175805
Patch

Attachment 175805 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14966761

New failing tests:
fast/backgrounds/background-opaque-images-over-color.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774623</commentid>
    <comment_count>22</comment_count>
      <attachid>175821</attachid>
    <who name="Justin Novosad">junov</who>
    <bug_when>2012-11-23 09:42:51 -0800</bug_when>
    <thetext>Created attachment 175821
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774641</commentid>
    <comment_count>23</comment_count>
      <attachid>175821</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-23 10:44:35 -0800</bug_when>
    <thetext>Comment on attachment 175821
Patch for landing

Clearing flags on attachment: 175821

Committed r135629: &lt;http://trac.webkit.org/changeset/135629&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774642</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-23 10:44:40 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774660</commentid>
    <comment_count>25</comment_count>
      <attachid>175821</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-11-23 11:20:28 -0800</bug_when>
    <thetext>Comment on attachment 175821
Patch for landing

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

I wish I&apos;d had a chance to review this before it was landed.

&gt; Source/WebCore/loader/cache/CachedImage.cpp:482
&gt; +    if (image-&gt;isBitmapImage())
&gt; +        image-&gt;nativeImageForCurrentFrame(); // force decode

Seem unfortunate to force a decode here. Would that decode have always happened anyway, or would it be better to just say that it has alpha?

&gt; Source/WebCore/loader/cache/CachedImage.h:55
&gt; +    bool currentFrameHasAlpha(const RenderObject*); // Side effect: ensures decoded image is in cache, therefore should only be called when about to draw the image.

Why is this not const?

&gt; Source/WebCore/rendering/RenderBox.cpp:1007
&gt; +    // RenderBoxModelOBject::paintFillLayerExtended. A more efficient solution might be to move

Typo: OBject

&gt; Source/WebCore/rendering/RenderBox.cpp:1012
&gt; +    if (fillLayer-&gt;next() &amp;&amp; (!fillLayer-&gt;hasOpaqueImage(this) || !fillLayer-&gt;image()-&gt;canRender(this, style()-&gt;effectiveZoom()) || !fillLayer-&gt;hasRepeatXY()))
&gt; +        paintFillLayers(paintInfo, c, fillLayer-&gt;next(), rect, bleedAvoidance, op, backgroundObject);
&gt;      paintFillLayer(paintInfo, c, fillLayer, rect, bleedAvoidance, op, backgroundObject);

I don&apos;t see how this correctly handles background-clip (which means the image might not fill the entire border box).

&gt; Source/WebCore/rendering/RenderBoxModelObject.cpp:913
&gt; +    if (!bgLayer-&gt;next() &amp;&amp; !(shouldPaintBackgroundImage &amp;&amp; bgLayer-&gt;hasOpaqueImage(this) &amp;&amp; bgLayer-&gt;hasRepeatXY())) {

Same here.

&gt; LayoutTests/ChangeLog:13
&gt; +        * fast/backgrounds/background-opaque-images-over-color-expected.txt: Added.
&gt; +        * fast/backgrounds/background-opaque-images-over-color.html: Added.
&gt; +        * platform/chromium/TestExpectations:

Why was this not a ref tests? Without pixel results, the test is useless.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774666</commentid>
    <comment_count>26</comment_count>
    <who name="Justin Novosad">junov</who>
    <bug_when>2012-11-23 11:36:17 -0800</bug_when>
    <thetext>(In reply to comment #25)
&gt; (From update of attachment 175821 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=175821&amp;action=review
&gt; 
&gt; I wish I&apos;d had a chance to review this before it was landed.

Noted, and don&apos;t worry I&apos;ll post a follow-up patch to address your concerns early next week.

&gt; 
&gt; &gt; Source/WebCore/loader/cache/CachedImage.cpp:482
&gt; &gt; +    if (image-&gt;isBitmapImage())
&gt; &gt; +        image-&gt;nativeImageForCurrentFrame(); // force decode
&gt; 
&gt; Seem unfortunate to force a decode here. Would that decode have always happened anyway, or would it be better to just say that it has alpha?

Yes, a decode will happen anyways because this method is only ever called immediately before drawing the image.  I documented this side-effect in the header in case anyone else is tempted to use this method for other purposes.
&gt; 
&gt; 
&gt; &gt; Source/WebCore/rendering/RenderBox.cpp:1012
&gt; &gt; +    if (fillLayer-&gt;next() &amp;&amp; (!fillLayer-&gt;hasOpaqueImage(this) || !fillLayer-&gt;image()-&gt;canRender(this, style()-&gt;effectiveZoom()) || !fillLayer-&gt;hasRepeatXY()))
&gt; &gt; +        paintFillLayers(paintInfo, c, fillLayer-&gt;next(), rect, bleedAvoidance, op, backgroundObject);
&gt; &gt;      paintFillLayer(paintInfo, c, fillLayer, rect, bleedAvoidance, op, backgroundObject);
&gt; 
&gt; I don&apos;t see how this correctly handles background-clip (which means the image might not fill the entire border box).

OK, I&apos;m surprised no existing test picked-up on that 
I&apos;ll come-up with a layout test and a fix for that ASAP.

&gt; 
&gt; &gt; LayoutTests/ChangeLog:13
&gt; &gt; +        * fast/backgrounds/background-opaque-images-over-color-expected.txt: Added.
&gt; &gt; +        * fast/backgrounds/background-opaque-images-over-color.html: Added.
&gt; &gt; +        * platform/chromium/TestExpectations:
&gt; 
&gt; Why was this not a ref tests? Without pixel results, the test is useless.

It is, I just submitted it without the pixel baselines.  I&apos;ll pick-up and submit the baselines from the bots with Tools/Script/webkit-patch garden-o-matic</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774674</commentid>
    <comment_count>27</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-11-23 11:50:27 -0800</bug_when>
    <thetext>(In reply to comment #26)
&gt; &gt; &gt; LayoutTests/ChangeLog:13
&gt; &gt; &gt; +        * fast/backgrounds/background-opaque-images-over-color-expected.txt: Added.
&gt; &gt; &gt; +        * fast/backgrounds/background-opaque-images-over-color.html: Added.
&gt; &gt; &gt; +        * platform/chromium/TestExpectations:
&gt; &gt; 
&gt; &gt; Why was this not a ref tests? Without pixel results, the test is useless.
&gt; 
&gt; It is, I just submitted it without the pixel baselines.  I&apos;ll pick-up and submit the baselines from the bots with Tools/Script/webkit-patch garden-o-matic

A ref tests would have a -expected.html, and no .txt file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>774811</commentid>
    <comment_count>28</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2012-11-24 03:25:21 -0800</bug_when>
    <thetext>(In reply to comment #27)
&gt; (In reply to comment #26)
&gt; &gt; &gt; &gt; LayoutTests/ChangeLog:13
&gt; &gt; &gt; &gt; +        * fast/backgrounds/background-opaque-images-over-color-expected.txt: Added.
&gt; &gt; &gt; &gt; +        * fast/backgrounds/background-opaque-images-over-color.html: Added.
&gt; &gt; &gt; &gt; +        * platform/chromium/TestExpectations:
&gt; &gt; &gt; 
&gt; &gt; &gt; Why was this not a ref tests? Without pixel results, the test is useless.
&gt; &gt; 
&gt; &gt; It is, I just submitted it without the pixel baselines.  I&apos;ll pick-up and submit the baselines from the bots with Tools/Script/webkit-patch garden-o-matic
&gt; 
&gt; A ref tests would have a -expected.html, and no .txt file.

Please make this a reftest unless it&apos;s absolutely necessary to test the generated render tree. It&apos;s easier for everyone to maintain a reference output of a 200x100px green rectangle than to potentially have many ports generate unneeded pixel baselines.

OTOH, the test is producing a text failure on every port (except mac where the test is skipped).
http://test-results.appspot.com/dashboards/flakiness_dashboard.html#group=%40ToT%20-%20webkit.org&amp;tests=fast%2Fbackgrounds%2Fbackground-opaque-images-over-color.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775254</commentid>
    <comment_count>29</comment_count>
    <who name="János Badics">jbadics</who>
    <bug_when>2012-11-26 01:43:12 -0800</bug_when>
    <thetext>Unfortunately, new fast/backgrounds/background-opaque-images-over-color.html started to fail on Qt. I have created a bug for the issue at

https://bugs.webkit.org/show_bug.cgi?id=103227

I will skip this test on Qt until it&apos;s fixed, if you don&apos;t mind.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775296</commentid>
    <comment_count>30</comment_count>
    <who name="János Badics">jbadics</who>
    <bug_when>2012-11-26 02:50:02 -0800</bug_when>
    <thetext>The test has been skipped on Qt in
http://trac.webkit.org/changeset/135698

Please unskip it with the proper fix

(see the related bug at
https://bugs.webkit.org/show_bug.cgi?id=103227 )</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775613</commentid>
    <comment_count>31</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-11-26 10:16:47 -0800</bug_when>
    <thetext>I think we should revert this change if we don&apos;t get a fix soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775680</commentid>
    <comment_count>32</comment_count>
    <who name="Justin Novosad">junov</who>
    <bug_when>2012-11-26 11:00:52 -0800</bug_when>
    <thetext>Follow-ups:

Ref test:
https://bugs.webkit.org/show_bug.cgi?id=103275


Clip issue:
https://bugs.webkit.org/show_bug.cgi?id=103276</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174758</attachid>
            <date>2012-11-16 14:07:51 -0800</date>
            <delta_ts>2012-11-21 13:03:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102557-20121116170546.patch</filename>
            <type>text/plain</type>
            <size>18369</size>
            <attacher name="Justin Novosad">junov</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNDk5OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgzIEBACisyMDEyLTExLTE2ICBKdXN0aW4g
Tm92b3NhZCAgPGp1bm92QGdvb2dsZS5jb20+CisKKyAgICAgICAgQWRkaW5nIG9jY2x1c2lvbiBk
ZXRlY3Rpb24gdG8gcmVkdWNlIG92ZXJkcmF3IGluIFJlbmRlckJveCBiYWNrZ3JvdW5kIHJlbmRl
cmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAy
NTU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
aW5nIGhhc0FscGhhIG1ldGhvZCB0byBhbGwgY2xhc3NlcyBkZXJ2aXZlZCBmcm9tIENTU0ltYWdl
VmFsdWUgYW5kCisgICAgICAgIFN0eWxlSW1hZ2UsIGluIG9yZGVyIHRvIHN1cHBvcnQgb2NjbHVz
aW9uIHRlc3RpbmcuIAorICAgICAgICBUaGlzIGFsbG93cyB0aGUgRmlsbExheWVyIHJlY3Vyc2lv
biB0byBzdG9wIGVhcmx5IHdoZW4gYW4gb3BhcXVlIGxheWVyCisgICAgICAgIGlzIGVuY291bnRl
cmVkIHdoaWxlIGFwcGx5aW5nIGEgQ1NTIGJhY2tncm91bmQgc3R5bGUuIFRoaXMgYWxzbyBhbGxv
d3MKKyAgICAgICAgdGhlIGVsaW1pbmF0aW9uIG9mIGJhY2tncm91bmQgY29sb3IgYXBwbGljYXRp
b24gd2hlbiB0aGUgYmFja2dyb3VuZCBpcworICAgICAgICBjb21wbGV0ZWx5IGNvdmVyZWQgYnkg
YW4gaW1hZ2UuICBUaGUgb3B0aW1pemF0aW9uIGFsc28gc2tpcHMgdGhlCisgICAgICAgIGNsZWFy
aW5nIG9mIHRoZSBwYWdlJ3Mgcm9vdCBlbGVtZW50IHdoZW4gdGhlIHBhZ2UgYmFja2dyb3VuZCBp
cworICAgICAgICBlbnRpcmVseSBjb3ZlcmVkIGJ5IGFuIGltYWdlIChlLmcgYSB0aWxlZCBiaXRt
YXAgb3IgYSBncmFkaWVudCkKKworICAgICAgICBObyBuZXcgdGVzdHM6IE1vZGlmaWVkIGNvZGUg
aXMgYWRlcXVhdGVseSBjb3ZlcmVkIGJ5IGh1bmRyZWRzIG9mCisgICAgICAgIGV4aXN0aW5nIGxh
eW91dCB0ZXN0cworCisgICAgICAgICogY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnN1YmltYWdlSGFzQWxwaGEpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NDcm9zc2ZhZGVWYWx1ZTo6aXNQZW5kaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0Nyb3NzZmFkZVZhbHVlOjpoYXNBbHBoYSk6CisgICAgICAgICogY3NzL0NTU0Ny
b3NzZmFkZVZhbHVlLmg6CisgICAgICAgIChDU1NDcm9zc2ZhZGVWYWx1ZSk6CisgICAgICAgICog
Y3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTR3JhZGllbnRW
YWx1ZTo6aGFzQWxwaGEpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogY3NzL0NTU0dy
YWRpZW50VmFsdWUuaDoKKyAgICAgICAgKENTU0dyYWRpZW50VmFsdWUpOgorICAgICAgICAqIGNz
cy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ltYWdl
R2VuZXJhdG9yVmFsdWU6Omhhc0FscGhhKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAq
IGNzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmg6CisgICAgICAgIChDU1NJbWFnZUdlbmVyYXRv
clZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VWYWx1ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDU1NJbWFnZVZhbHVlOjpoYXNBbHBoYSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKiBjc3MvQ1NTSW1hZ2VWYWx1ZS5oOgorICAgICAgICAoQ1NTSW1hZ2VWYWx1ZSk6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZEltYWdlOjpoYXNBbHBoYSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaDoKKyAgICAgICAgKENhY2hlZEltYWdlKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6
cGFpbnRGaWxsTGF5ZXJzKToKKyAgICAgICAgQWRkZWQgbGF5ZXIgcmVjdXJzaW9uIGVhcmx5IGV4
aXQgd2hlbiBhbiBvcGFxdWUgbGF5ZXIgaXMgZW5jb3VudGVyZWQuCisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJv
eE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKToKKyAgICAgICAgRWxpbWluYXRl
ZCBiYWNrZ3JvdW5kIGNvbG9yIGZpbGwgd2hlbiB0aGUgbGF5ZXIgY29udGFpbnMgYW4gb3BhcXVl
CisgICAgICAgIGltYWdlIHRoYXQgY292ZXJzIHRoZSBlbnRpcmUgUmVuZGVyQm94LgorICAgICAg
ICAqIHJlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rmls
bExheWVyOjpoYXNPcGFxdWVJbWFnZSk6CisgICAgICAgIFJldHVybnMgdHJ1ZSBpZiB0aGUgbGF5
ZXIncyBpbWFnZSBpcyBmdWxseSBvcGFxdWUgKGNvbnNlcnZhdGl2ZSkKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6RmlsbExheWVyOjpoYXNOb1JlcGVhdCk6CisgICAgICAg
ICogcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5oOgorICAgICAgICAoRmlsbExheWVyKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZUNhY2hlZEltYWdlOjpoYXNBbHBoYSk6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5oOgorICAgICAgICAo
U3R5bGVDYWNoZWRJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVk
SW1hZ2VTZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVDYWNoZWRJbWFnZVNldDo6aGFz
QWxwaGEpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0
eWxlQ2FjaGVkSW1hZ2VTZXQuaDoKKyAgICAgICAgKFN0eWxlQ2FjaGVkSW1hZ2VTZXQpOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlR2VuZXJhdGVkSW1hZ2U6Omhhc0FscGhhKToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmg6Cisg
ICAgICAgIChTdHlsZUdlbmVyYXRlZEltYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
U3R5bGVJbWFnZS5oOgorICAgICAgICAoU3R5bGVJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5n
L3N0eWxlL1N0eWxlUGVuZGluZ0ltYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVBlbmRp
bmdJbWFnZTo6aGFzQWxwaGEpOgorCiAyMDEyLTExLTE2ICBKb24gTGVlICA8am9ubGVlQGFwcGxl
LmNvbT4KIAogICAgICAgICBTaW11bGF0ZWQgZXZlbnRzIGluc3RhbmNlcyBkbyBub3QgYWxsIGhh
dmUgdGhlIHNhbWUgdW5kZXJseWluZyBldmVudApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NT
U0Nyb3NzZmFkZVZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Q3Jvc3NmYWRlVmFsdWUuY3BwCShyZXZpc2lvbiAxMzQ5OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1MiwxOSBA
QCBzdGF0aWMgYm9vbCBzdWJpbWFnZUlzUGVuZGluZyhDU1NWYWx1ZSoKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKK3N0YXRpYyBib29sIHN1YmltYWdlSGFzQWxwaGEoQ1NTVmFsdWUqIHZhbHVlKQor
eworICAgIGlmICh2YWx1ZS0+aXNJbWFnZVZhbHVlKCkpCisgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxDU1NJbWFnZVZhbHVlKj4odmFsdWUpLT5oYXNBbHBoYSgpOworICAgIAorICAgIGlmICh2
YWx1ZS0+aXNJbWFnZUdlbmVyYXRvclZhbHVlKCkpCisgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxDU1NJbWFnZUdlbmVyYXRvclZhbHVlKj4odmFsdWUpLT5oYXNBbHBoYSgpOworICAgIAorICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIAorICAgIHJldHVybiBmYWxzZTsKK30KKwogc3Rh
dGljIENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZUZvckNTU1ZhbHVlKENTU1ZhbHVlKiB2YWx1ZSwg
Q2FjaGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyKQogewogICAgIGlmICgh
dmFsdWUpCkBAIC0xMjYsNiArMTM5LDExIEBAIGJvb2wgQ1NTQ3Jvc3NmYWRlVmFsdWU6OmlzUGVu
ZGluZygpIGNvbnMKICAgICByZXR1cm4gc3ViaW1hZ2VJc1BlbmRpbmcobV9mcm9tVmFsdWUuZ2V0
KCkpIHx8IHN1YmltYWdlSXNQZW5kaW5nKG1fdG9WYWx1ZS5nZXQoKSk7CiB9CiAKK2Jvb2wgQ1NT
Q3Jvc3NmYWRlVmFsdWU6Omhhc0FscGhhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3ViaW1hZ2VI
YXNBbHBoYShtX2Zyb21WYWx1ZS5nZXQoKSkgfHwgc3ViaW1hZ2VIYXNBbHBoYShtX3RvVmFsdWUu
Z2V0KCkpOworfQorCiB2b2lkIENTU0Nyb3NzZmFkZVZhbHVlOjpsb2FkU3ViaW1hZ2VzKENhY2hl
ZFJlc291cmNlTG9hZGVyKiBjYWNoZWRSZXNvdXJjZUxvYWRlcikKIHsKICAgICBtX2NhY2hlZEZy
b21JbWFnZSA9IGNhY2hlZEltYWdlRm9yQ1NTVmFsdWUobV9mcm9tVmFsdWUuZ2V0KCksIGNhY2hl
ZFJlc291cmNlTG9hZGVyKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVW
YWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1
ZS5oCShyZXZpc2lvbiAxMzQ5OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRl
VmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtNTgsNiArNTgsOCBAQCBwdWJsaWM6CiAgICAgSW50
U2l6ZSBmaXhlZFNpemUoY29uc3QgUmVuZGVyT2JqZWN0Kik7CiAKICAgICBib29sIGlzUGVuZGlu
ZygpIGNvbnN0OworICAgIGJvb2wgaGFzQWxwaGEoKSBjb25zdDsKKwogICAgIHZvaWQgbG9hZFN1
YmltYWdlcyhDYWNoZWRSZXNvdXJjZUxvYWRlciopOwogCiAgICAgdm9pZCBzZXRQZXJjZW50YWdl
KFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHBlcmNlbnRhZ2VWYWx1ZSkgeyBtX3BlcmNl
bnRhZ2VWYWx1ZSA9IHBlcmNlbnRhZ2VWYWx1ZTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0dyYWRpZW50VmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NHcmFkaWVudFZhbHVlLmNwcAkocmV2aXNpb24gMTM0OTk0KQorKysgU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NjIsNiArNDYyLDE1
IEBAIGJvb2wgQ1NTR3JhZGllbnRWYWx1ZTo6aXNDYWNoZWFibGUoKSBjb24KICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAorYm9vbCBDU1NHcmFkaWVudFZhbHVlOjpoYXNBbHBoYSgpIGNvbnN0Cit7Cisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3N0b3BzLnNpemUoKTsgKytpKSB7CisgICAgICAg
IGlmIChtX3N0b3BzW2ldLm1fcmVzb2x2ZWRDb2xvci5oYXNBbHBoYSgpKQorICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwogdm9pZCBDU1NHcmFk
aWVudFZhbHVlOjpyZXBvcnRCYXNlQ2xhc3NNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBt
ZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewogICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9y
eU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6Q1NTKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuaAkocmV2aXNpb24gMTM0OTk0KQorKysgU291cmNl
L1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtNzQsNiAr
NzQsOCBAQCBwdWJsaWM6CiAgICAgSW50U2l6ZSBmaXhlZFNpemUoY29uc3QgUmVuZGVyT2JqZWN0
KikgY29uc3QgeyByZXR1cm4gSW50U2l6ZSgpOyB9CiAKICAgICBib29sIGlzUGVuZGluZygpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBoYXNBbHBoYSgpIGNvbnN0OworCiAgICAg
dm9pZCBsb2FkU3ViaW1hZ2VzKENhY2hlZFJlc291cmNlTG9hZGVyKikgeyB9CiAgICAgUGFzc1Jl
ZlB0cjxDU1NHcmFkaWVudFZhbHVlPiBncmFkaWVudFdpdGhTdHlsZXNSZXNvbHZlZChTdHlsZVJl
c29sdmVyKik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZh
bHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0
b3JWYWx1ZS5jcHAJKHJldmlzaW9uIDEzNDk5NCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJ
bWFnZUdlbmVyYXRvclZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk2LDYgKzE5NiwyMyBA
QCBib29sIENTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OmlzUGVuZGluZygpCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCitib29sIENTU0ltYWdlR2VuZXJhdG9yVmFsdWU6Omhhc0FscGhhKCkgY29uc3QK
K3sKKyAgICBzd2l0Y2ggKGNsYXNzVHlwZSgpKSB7CisgICAgY2FzZSBDcm9zc2ZhZGVDbGFzczoK
KyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IENTU0Nyb3NzZmFkZVZhbHVlKj4odGhp
cyktPmhhc0FscGhhKCk7CisgICAgY2FzZSBDYW52YXNDbGFzczoKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgY2FzZSBMaW5lYXJHcmFkaWVudENsYXNzOgorICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8Y29uc3QgQ1NTTGluZWFyR3JhZGllbnRWYWx1ZSo+KHRoaXMpLT5oYXNBbHBoYSgpOwor
ICAgIGNhc2UgUmFkaWFsR3JhZGllbnRDbGFzczoKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGNvbnN0IENTU1JhZGlhbEdyYWRpZW50VmFsdWUqPih0aGlzKS0+aGFzQWxwaGEoKTsKKyAgICBk
ZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgcmV0dXJu
IHRydWU7Cit9CisKIHZvaWQgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6bG9hZFN1YmltYWdlcyhD
YWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIpCiB7CiAgICAgc3dpdGNo
IChjbGFzc1R5cGUoKSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJh
dG9yVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5l
cmF0b3JWYWx1ZS5oCShyZXZpc2lvbiAxMzQ5OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
SW1hZ2VHZW5lcmF0b3JWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2Myw3IEBAIHB1
YmxpYzoKICAgICBJbnRTaXplIGZpeGVkU2l6ZShjb25zdCBSZW5kZXJPYmplY3QqKTsKIAogICAg
IGJvb2wgaXNQZW5kaW5nKCkgY29uc3Q7CisgICAgYm9vbCBoYXNBbHBoYSgpIGNvbnN0OwogCiAg
ICAgdm9pZCBsb2FkU3ViaW1hZ2VzKENhY2hlZFJlc291cmNlTG9hZGVyKik7CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAJKHJldmlzaW9uIDEzNDk5NCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQwLDQg
KzE0MCw5IEBAIHZvaWQgQ1NTSW1hZ2VWYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW8KICAgICAv
LyBObyBuZWVkIHRvIHJlcG9ydCBtX2ltYWdlIGFzIGl0IGlzIGNvdW50ZWQgYXMgcGFydCBvZiBS
ZW5kZXJBcmVuYS4KIH0KIAorYm9vbCBDU1NJbWFnZVZhbHVlOjpoYXNBbHBoYSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1faW1hZ2UgPyBtX2ltYWdlLT5oYXNBbHBoYSgpIDogdHJ1ZTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdl
VmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5o
CShyZXZpc2lvbiAxMzQ5OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC01MSw2ICs1MSw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVw
b3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAorICAg
IGJvb2wgaGFzQWxwaGEoKSBjb25zdDsKKwogcHJvdGVjdGVkOgogICAgIENTU0ltYWdlVmFsdWUo
Q2xhc3NUeXBlLCBjb25zdCBTdHJpbmcmIHVybCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAkocmV2aXNpb24gMTM0OTk0KQorKysgU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDc1LDQgKzQ3NSwxNyBAQCB2b2lkIENhY2hlZEltYWdlOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1v
CiAjZW5kaWYKIH0KIAorYm9vbCBDYWNoZWRJbWFnZTo6aGFzQWxwaGEoKSBjb25zdAoreworICAg
IGlmICghbV9pbWFnZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyNpZiBFTkFCTEUoU1ZHKQor
ICAgIGlmIChtX2ltYWdlLT5pc1NWR0ltYWdlKCkpCisgICAgICAgIHJldHVybiB0cnVlOworI2Vu
ZGlmCisKKyAgICByZXR1cm4gbV9pbWFnZS0+Y3VycmVudEZyYW1lSGFzQWxwaGEoKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEltYWdlLmgJKHJldmlzaW9uIDEzNDk5NCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw3IEBAIHB1
YmxpYzoKICAgICBJbWFnZSogaW1hZ2UoKTsgLy8gUmV0dXJucyB0aGUgbnVsbEltYWdlKCkgaWYg
dGhlIGltYWdlIGlzIG5vdCBhdmFpbGFibGUgeWV0LgogICAgIEltYWdlKiBpbWFnZUZvclJlbmRl
cmVyKGNvbnN0IFJlbmRlck9iamVjdCopOyAvLyBSZXR1cm5zIHRoZSBudWxsSW1hZ2UoKSBpZiB0
aGUgaW1hZ2UgaXMgbm90IGF2YWlsYWJsZSB5ZXQuCiAgICAgYm9vbCBoYXNJbWFnZSgpIGNvbnN0
IHsgcmV0dXJuIG1faW1hZ2UuZ2V0KCk7IH0KKyAgICBib29sIGhhc0FscGhhKCkgY29uc3Q7CiAK
ICAgICBzdGQ6OnBhaXI8SW1hZ2UqLCBmbG9hdD4gYnJva2VuSW1hZ2UoZmxvYXQgZGV2aWNlU2Nh
bGVGYWN0b3IpIGNvbnN0OyAvLyBSZXR1cm5zIGFuIGltYWdlIGFuZCB0aGUgaW1hZ2UncyByZXNv
bHV0aW9uIHNjYWxlIGZhY3Rvci4KICAgICBib29sIHdpbGxQYWludEJyb2tlbkltYWdlKCkgY29u
c3Q7IApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAJKHJldmlzaW9u
IDEzNDk5NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDAxLDcgKzEwMDEsMTQgQEAgdm9pZCBSZW5kZXJCb3g6OnBhaW50Rmls
bExheWVycyhjb25zdCBQYQogICAgIGlmICghZmlsbExheWVyKQogICAgICAgICByZXR1cm47CiAK
LSAgICBwYWludEZpbGxMYXllcnMocGFpbnRJbmZvLCBjLCBmaWxsTGF5ZXItPm5leHQoKSwgcmVj
dCwgYmxlZWRBdm9pZGFuY2UsIG9wLCBiYWNrZ3JvdW5kT2JqZWN0KTsKKyAgICAvLyBGSVhNRSA6
IEl0IHdvdWxkIGJlIHBvc3NpYmxlIGZvciB0aGUgZm9sbG93aW5nIG9jY2x1c2lvbiBjdWxsaW5n
IHRlc3QgdG8gYmUgbW9yZSBhZ2dyZXNzaXZlIAorICAgIC8vIG9uIGxheWVycyB3aXRoIG5vIHJl
cGVhdCBieSB0ZXN0aW5nIHdoZXRoZXIgdGhlIGltYWdlIGNvdmVycyB0aGUgbGF5b3V0IHJlY3Qu
CisgICAgLy8gVGVzdGluZyB0aGF0IGhlcmUgd291bGQgaW1wbHkgZHVwbGljYXRpbmcgYSBsb3Qg
b2YgY2FsY3VsYXRpb25zIHRoYXQgYXJlIGN1cnJlbnRseSBkb25lIGluCisgICAgLy8gUmVuZGVy
Qm94TW9kZWxPQmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQuIEEgbW9yZSBlZmZpY2llbnQg
c29sdXRpb24gbWlnaHQgYmUgdG8gbW92ZQorICAgIC8vIHRoZSBsYXllciByZWN1cnNpb24gaW50
byBwYWludEZpbGxMYXllckV4dGVuZGVkLCBvciB0byBjb21wdXRlIHRoZSBsYXllciBnZW9tZXRy
eSBoZXJlCisgICAgLy8gYW5kIHBhc3MgaXQgZG93bi4KKyAgICBpZiAoIWZpbGxMYXllci0+aGFz
T3BhcXVlSW1hZ2UoKSB8fCAhZmlsbExheWVyLT5pbWFnZSgpLT5jYW5SZW5kZXIodGhpcywgc3R5
bGUoKS0+ZWZmZWN0aXZlWm9vbSgpKSB8fCBmaWxsTGF5ZXItPmhhc05vUmVwZWF0KCkpCisgICAg
ICAgIHBhaW50RmlsbExheWVycyhwYWludEluZm8sIGMsIGZpbGxMYXllci0+bmV4dCgpLCByZWN0
LCBibGVlZEF2b2lkYW5jZSwgb3AsIGJhY2tncm91bmRPYmplY3QpOwogICAgIHBhaW50RmlsbExh
eWVyKHBhaW50SW5mbywgYywgZmlsbExheWVyLCByZWN0LCBibGVlZEF2b2lkYW5jZSwgb3AsIGJh
Y2tncm91bmRPYmplY3QpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94TW9kZWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAJKHJldmlzaW9uIDEzNDk5NCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTkwOCw4ICs5MDgsMTAgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRG
aWxsTGF5ZQogICAgICAgICB2aWV3KCktPmZyYW1lVmlldygpLT5zZXRDb250ZW50SXNPcGFxdWUo
aXNPcGFxdWVSb290KTsKICAgICB9CiAKLSAgICAvLyBQYWludCB0aGUgY29sb3IgZmlyc3QgdW5k
ZXJuZWF0aCBhbGwgaW1hZ2VzLgotICAgIGlmICghYmdMYXllci0+bmV4dCgpKSB7CisgICAgLy8g
UGFpbnQgdGhlIGNvbG9yIGZpcnN0IHVuZGVybmVhdGggYWxsIGltYWdlcywgY3VsbGVkIGlmIGJh
Y2tncm91bmQgaW1hZ2Ugb2NjbHVkZXMgaXQuCisgICAgLy8gRklYTUU6IEluIHRoZSBiZ0xheWVy
LT5oYXNOb1JlcGVhdCgpIGNhc2UsIHdlIGNvdWxkIGltcHJvdmUgdGhlIGN1bGxpbmcgdGVzdAor
ICAgIC8vIGJ5IHZlcmlmeWluZyB3aGV0aGVyIHRoZSBiYWNrZ3JvdW5kIGltYWdlIGNvdmVycyB0
aGUgZW50aXJlIGxheW91dCByZWN0LgorICAgIGlmICghYmdMYXllci0+bmV4dCgpICYmICEoc2hv
dWxkUGFpbnRCYWNrZ3JvdW5kSW1hZ2UgJiYgYmdMYXllci0+aGFzT3BhcXVlSW1hZ2UoKSAmJiAh
YmdMYXllci0+aGFzTm9SZXBlYXQoKSkpIHsKICAgICAgICAgSW50UmVjdCBiYWNrZ3JvdW5kUmVj
dChwaXhlbFNuYXBwZWRJbnRSZWN0KHNjcm9sbGVkUGFpbnRSZWN0KSk7CiAgICAgICAgIGJvb2wg
Ym94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5kID0gdGhpcy0+Ym94U2hhZG93U2hv
dWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5kKGJsZWVkQXZvaWRhbmNlLCBib3gpOwogICAgICAgICBp
ZiAoIWJveFNoYWRvd1Nob3VsZEJlQXBwbGllZFRvQmFja2dyb3VuZCkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuY3BwCShyZXZpc2lvbiAxMzQ5OTQp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjgwLDQgKzI4MCwyMyBAQCBib29sIEZpbGxMYXllcjo6aW1hZ2VzQXJlTG9h
ZGVkKCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBGaWxsTGF5ZXI6Omhhc09w
YXF1ZUltYWdlKCkgY29uc3QKK3sKKyAgICBpZiAoIW1faW1hZ2UpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIGlmIChtX2NvbXBvc2l0ZSA9PSBDb21wb3NpdGVDbGVhciB8fCBtX2NvbXBv
c2l0ZSA9PSBDb21wb3NpdGVDb3B5KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAKKyAgICBp
ZiAobV9jb21wb3NpdGUgPT0gQ29tcG9zaXRlU291cmNlT3ZlcikKKyAgICAgICAgcmV0dXJuICFt
X2ltYWdlLT5oYXNBbHBoYSgpOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEZpbGxM
YXllcjo6aGFzTm9SZXBlYXQoKSBjb25zdAoreworICAgIHJldHVybiBtX3JlcGVhdFggPT0gTm9S
ZXBlYXRGaWxsIHx8IG1fcmVwZWF0WSA9PSBOb1JlcGVhdEZpbGw7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExh
eWVyLmgJKHJldmlzaW9uIDEzNDk5NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9GaWxsTGF5ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ0LDYgKzE0NCw5IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIG1fbmV4dCA/IG1fbmV4dC0+aGFzRml4ZWRJbWFnZSgpIDogZmFsc2U7
CiAgICAgfQogCisgICAgYm9vbCBoYXNPcGFxdWVJbWFnZSgpIGNvbnN0OworICAgIGJvb2wgaGFz
Tm9SZXBlYXQoKSBjb25zdDsKKwogICAgIEVGaWxsTGF5ZXJUeXBlIHR5cGUoKSBjb25zdCB7IHJl
dHVybiBzdGF0aWNfY2FzdDxFRmlsbExheWVyVHlwZT4obV90eXBlKTsgfQogCiAgICAgdm9pZCBm
aWxsVW5zZXRQcm9wZXJ0aWVzKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVDYWNoZWRJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuY3BwCShyZXZpc2lvbiAxMzQ5OTQpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEwNiw0ICsxMDYsOSBAQCBQYXNzUmVmUHRyPEltYWdlPiBTdHlsZUNhY2hl
ZEltYWdlOjppbWFnCiAgICAgcmV0dXJuIG1faW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIocmVuZGVy
ZXIpOwogfQogCitib29sIFN0eWxlQ2FjaGVkSW1hZ2U6Omhhc0FscGhhKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9pbWFnZS0+aGFzQWxwaGEoKTsKK30KKwogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5oCShyZXZpc2lvbiAx
MzQ5OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFn
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw2ICs1Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgYWRkQ2xpZW50KFJlbmRlck9iamVjdCopOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVD
bGllbnQoUmVuZGVyT2JqZWN0Kik7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEltYWdlPiBpbWFn
ZShSZW5kZXJPYmplY3QqLCBjb25zdCBJbnRTaXplJikgY29uc3Q7CisgICAgdmlydHVhbCBib29s
IGhhc0FscGhhKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgCiBwcml2YXRlOgogICAgIGV4cGxpY2l0
IFN0eWxlQ2FjaGVkSW1hZ2UoQ2FjaGVkSW1hZ2UqKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlU2V0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZVNldC5jcHAJKHJldmlz
aW9uIDEzNDk5NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hl
ZEltYWdlU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDYgKzExNiwxMSBAQCBQYXNzUmVm
UHRyPEltYWdlPiBTdHlsZUNhY2hlZEltYWdlU2V0OjppCiAgICAgcmV0dXJuIG1fYmVzdEZpdElt
YWdlLT5pbWFnZUZvclJlbmRlcmVyKHJlbmRlcmVyKTsKIH0KIAorYm9vbCBTdHlsZUNhY2hlZElt
YWdlU2V0OjpoYXNBbHBoYSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYmVzdEZpdEltYWdlLT5o
YXNBbHBoYSgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFC
TEUoQ1NTX0lNQUdFX1NFVCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZUNhY2hlZEltYWdlU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2VTZXQuaAkocmV2aXNpb24gMTM0OTk0KQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2VTZXQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNzEsNiArNzEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlbW92
ZUNsaWVudChSZW5kZXJPYmplY3QqKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SW1hZ2U+IGlt
YWdlKFJlbmRlck9iamVjdCosIGNvbnN0IEludFNpemUmKSBjb25zdDsKICAgICB2aXJ0dWFsIGZs
b2F0IGltYWdlU2NhbGVGYWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlU2NhbGVGYWN0b3I7
IH0KKyAgICB2aXJ0dWFsIGJvb2wgaGFzQWxwaGEoKSBjb25zdCBPVkVSUklERTsKICAgICAKIHBy
aXZhdGU6CiAgICAgU3R5bGVDYWNoZWRJbWFnZVNldChDYWNoZWRJbWFnZSosIGZsb2F0IGltYWdl
U2NhbGVGYWN0b3IsIENTU0ltYWdlU2V0VmFsdWUqKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJbWFnZS5jcHAJKHJldmlz
aW9uIDEzNDk5NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVy
YXRlZEltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODksNCArODksOSBAQCBQYXNzUmVmUHRy
PEltYWdlPiBTdHlsZUdlbmVyYXRlZEltYWdlOjppCiAgICAgcmV0dXJuIG1faW1hZ2VHZW5lcmF0
b3JWYWx1ZS0+aW1hZ2UocmVuZGVyZXIsIHNpemUpOwogfQogCitib29sIFN0eWxlR2VuZXJhdGVk
SW1hZ2U6Omhhc0FscGhhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbWFnZUdlbmVyYXRvclZh
bHVlLT5oYXNBbHBoYSgpOworfQorCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVHZW5lcmF0ZWRJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmgJKHJldmlzaW9uIDEzNDk5NCkK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTUxLDYgKzUxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBhZGRDbGllbnQoUmVuZGVyT2JqZWN0Kik7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUNsaWVu
dChSZW5kZXJPYmplY3QqKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlKFJl
bmRlck9iamVjdCosIGNvbnN0IEludFNpemUmKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFz
QWxwaGEoKSBjb25zdCBPVkVSUklERTsKICAgICAKIHByaXZhdGU6CiAgICAgU3R5bGVHZW5lcmF0
ZWRJbWFnZShQYXNzUmVmUHRyPENTU0ltYWdlR2VuZXJhdG9yVmFsdWU+KTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUltYWdlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlSW1hZ2UuaAkocmV2aXNpb24gMTM0OTk0
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlSW1hZ2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNjQsNiArNjQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXNzUmVmUHRy
PEltYWdlPiBpbWFnZShSZW5kZXJPYmplY3QqLCBjb25zdCBJbnRTaXplJikgY29uc3QgPSAwOwog
ICAgIHZpcnR1YWwgV3JhcHBlZEltYWdlUHRyIGRhdGEoKSBjb25zdCA9IDA7CiAgICAgdmlydHVh
bCBmbG9hdCBpbWFnZVNjYWxlRmFjdG9yKCkgY29uc3QgeyByZXR1cm4gMTsgfQorICAgIHZpcnR1
YWwgYm9vbCBoYXNBbHBoYSgpIGNvbnN0ID0gMDsKIAogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBp
c0NhY2hlZEltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9pc0NhY2hlZEltYWdlOyB9CiAgICAgQUxX
QVlTX0lOTElORSBib29sIGlzUGVuZGluZ0ltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9pc1BlbmRp
bmdJbWFnZTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUGVu
ZGluZ0ltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1N0eWxlUGVuZGluZ0ltYWdlLmgJKHJldmlzaW9uIDEzNDk5NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TdHlsZVBlbmRpbmdJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02
Niw2ICs2Niw3IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
ICAgIHJldHVybiAwOwogICAgIH0KKyAgICB2aXJ0dWFsIGJvb2wgaGFzQWxwaGEoKSBjb25zdCB7
IHJldHVybiB0cnVlOyB9CiAgICAgCiBwcml2YXRlOgogICAgIFN0eWxlUGVuZGluZ0ltYWdlKENT
U1ZhbHVlKiB2YWx1ZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175503</attachid>
            <date>2012-11-21 13:03:46 -0800</date>
            <delta_ts>2012-11-21 14:07:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102557-20121121160132.patch</filename>
            <type>text/plain</type>
            <size>23162</size>
            <attacher name="Justin Novosad">junov</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNTQyNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg2IEBACisyMDEyLTExLTIxICBKdXN0aW4g
Tm92b3NhZCAgPGp1bm92QGdvb2dsZS5jb20+CisKKyAgICAgICAgQWRkaW5nIG9jY2x1c2lvbiBk
ZXRlY3Rpb24gdG8gcmVkdWNlIG92ZXJkcmF3IGluIFJlbmRlckJveCBiYWNrZ3JvdW5kIHJlbmRl
cmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAy
NTU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
aW5nIGhhc0FscGhhIG1ldGhvZCB0byBhbGwgY2xhc3NlcyBkZXJ2aXZlZCBmcm9tIENTU0ltYWdl
VmFsdWUgYW5kCisgICAgICAgIFN0eWxlSW1hZ2UsIGluIG9yZGVyIHRvIHN1cHBvcnQgb2NjbHVz
aW9uIHRlc3RpbmcuIAorICAgICAgICBUaGlzIGFsbG93cyB0aGUgRmlsbExheWVyIHJlY3Vyc2lv
biB0byBzdG9wIGVhcmx5IHdoZW4gYW4gb3BhcXVlIGxheWVyCisgICAgICAgIGlzIGVuY291bnRl
cmVkIHdoaWxlIGFwcGx5aW5nIGEgQ1NTIGJhY2tncm91bmQgc3R5bGUuIFRoaXMgYWxzbyBhbGxv
d3MKKyAgICAgICAgdGhlIGVsaW1pbmF0aW9uIG9mIGJhY2tncm91bmQgY29sb3IgYXBwbGljYXRp
b24gd2hlbiB0aGUgYmFja2dyb3VuZCBpcworICAgICAgICBjb21wbGV0ZWx5IGNvdmVyZWQgYnkg
YW4gaW1hZ2UuICBUaGUgb3B0aW1pemF0aW9uIGFsc28gc2tpcHMgdGhlCisgICAgICAgIGNsZWFy
aW5nIG9mIHRoZSBwYWdlJ3Mgcm9vdCBlbGVtZW50IHdoZW4gdGhlIHBhZ2UgYmFja2dyb3VuZCBp
cworICAgICAgICBlbnRpcmVseSBjb3ZlcmVkIGJ5IGFuIGltYWdlIChlLmcgYSB0aWxlZCBiaXRt
YXAgb3IgYSBncmFkaWVudCkKKworICAgICAgICBUZXN0OiBmYXN0L2JhY2tncm91bmRzL2JhY2tn
cm91bmQtb3BhcXVlLWltYWdlcy1vdmVyLWNvbG9yLmh0bWwKKworICAgICAgICAqIGNzcy9DU1ND
cm9zc2ZhZGVWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdWJpbWFnZUhhc0FscGhhKToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ3Jvc3NmYWRlVmFsdWU6
OmlzUGVuZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NDcm9zc2ZhZGVWYWx1ZTo6aGFzQWxw
aGEpOgorICAgICAgICAqIGNzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5oOgorICAgICAgICAoQ1NTQ3Jv
c3NmYWRlVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NHcmFkaWVudFZhbHVlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0dyYWRpZW50VmFsdWU6Omhhc0FscGhhKToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAqIGNzcy9DU1NHcmFkaWVudFZhbHVlLmg6CisgICAgICAgIChDU1NHcmFk
aWVudFZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpoYXNBbHBoYSk6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5oOgor
ICAgICAgICAoQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU0ltYWdl
VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTSW1hZ2VWYWx1ZTo6aGFzQWxwaGEpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogY3NzL0NTU0ltYWdlVmFsdWUuaDoKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoQ1NTSW1hZ2VWYWx1ZSk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpo
YXNBbHBoYSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2UuaDoKKyAgICAgICAgKENhY2hlZEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6
ZnJhbWVIYXNBbHBoYUF0SW5kZXgpOgorICAgICAgICBUaGlzIG1ldGhvZCB3aWxsIG5vdyBwdWxs
IHRoZSBxdWVyaWVkIGZyYW1lIGludG8gY2FjaGUgdXBvbiB0ZXN0aW5nCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnBhaW50
RmlsbExheWVycyk6CisgICAgICAgIEFkZGVkIGxheWVyIHJlY3Vyc2lvbiBlYXJseSBleGl0IHdo
ZW4gYW4gb3BhcXVlIGxheWVyIGlzIGVuY291bnRlcmVkLgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZCk6CisgICAgICAgIEVsaW1pbmF0ZWQgYmFj
a2dyb3VuZCBjb2xvciBmaWxsIHdoZW4gdGhlIGxheWVyIGNvbnRhaW5zIGFuIG9wYXF1ZQorICAg
ICAgICBpbWFnZSB0aGF0IGNvdmVycyB0aGUgZW50aXJlIFJlbmRlckJveC4KKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGxMYXll
cjo6aGFzT3BhcXVlSW1hZ2UpOgorICAgICAgICBSZXR1cm5zIHRydWUgaWYgdGhlIGxheWVyJ3Mg
aW1hZ2UgaXMga25vd24gdG8gYmUgZnVsbHkgb3BhcXVlLgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWxsTGF5ZXI6Omhhc05vUmVwZWF0KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3R5bGUvRmlsbExheWVyLmg6CisgICAgICAgIChGaWxsTGF5ZXIpOgorICAgICAgICAq
IHJlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlQ2FjaGVkSW1hZ2U6Omhhc0FscGhhKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlLmg6CisgICAgICAgIChTdHlsZUNh
Y2hlZEltYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZVNl
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUNhY2hlZEltYWdlU2V0OjpoYXNBbHBoYSk6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNo
ZWRJbWFnZVNldC5oOgorICAgICAgICAoU3R5bGVDYWNoZWRJbWFnZVNldCk6CisgICAgICAgICog
cmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGVHZW5lcmF0ZWRJbWFnZTo6aGFzQWxwaGEpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuaDoKKyAgICAgICAg
KFN0eWxlR2VuZXJhdGVkSW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUlt
YWdlLmg6CisgICAgICAgIChTdHlsZUltYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
U3R5bGVQZW5kaW5nSW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUGVuZGluZ0ltYWdl
OjpoYXNBbHBoYSk6CisKIDIwMTItMTEtMjEgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFJlbW92ZSAkb3V0cHV0RGlyIGFuZCAkb3V0cHV0SGVhZGVyc0Rp
ciBmcm9tIGdsb2JhbCB2YXJpYWJsZXMgb2YgY29kZSBnZW5lcmF0b3JzCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHAJKHJldmlzaW9uIDEzNTQyNSkKKysrIFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTUyLDYgKzUyLDE5IEBAIHN0YXRpYyBib29sIHN1YmltYWdlSXNQZW5kaW5nKENTU1ZhbHVlKgog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAorc3RhdGljIGJvb2wgc3ViaW1hZ2VIYXNBbHBoYShDU1NW
YWx1ZSogdmFsdWUsIGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIpCit7CisgICAgaWYgKHZh
bHVlLT5pc0ltYWdlVmFsdWUoKSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PENTU0ltYWdl
VmFsdWUqPih2YWx1ZSktPmhhc0FscGhhKHJlbmRlcmVyKTsKKworICAgIGlmICh2YWx1ZS0+aXNJ
bWFnZUdlbmVyYXRvclZhbHVlKCkpCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxDU1NJbWFn
ZUdlbmVyYXRvclZhbHVlKj4odmFsdWUpLT5oYXNBbHBoYShyZW5kZXJlcik7CisKKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKworICAgIHJldHVybiB0cnVlOworfQorCiBzdGF0aWMgQ2FjaGVk
SW1hZ2UqIGNhY2hlZEltYWdlRm9yQ1NTVmFsdWUoQ1NTVmFsdWUqIHZhbHVlLCBDYWNoZWRSZXNv
dXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIpCiB7CiAgICAgaWYgKCF2YWx1ZSkKQEAg
LTEyNiw2ICsxMzksMTEgQEAgYm9vbCBDU1NDcm9zc2ZhZGVWYWx1ZTo6aXNQZW5kaW5nKCkgY29u
cwogICAgIHJldHVybiBzdWJpbWFnZUlzUGVuZGluZyhtX2Zyb21WYWx1ZS5nZXQoKSkgfHwgc3Vi
aW1hZ2VJc1BlbmRpbmcobV90b1ZhbHVlLmdldCgpKTsKIH0KIAorYm9vbCBDU1NDcm9zc2ZhZGVW
YWx1ZTo6aGFzQWxwaGEoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikgY29uc3QKK3sKKyAg
ICByZXR1cm4gc3ViaW1hZ2VIYXNBbHBoYShtX2Zyb21WYWx1ZS5nZXQoKSwgcmVuZGVyZXIpIHx8
IHN1YmltYWdlSGFzQWxwaGEobV90b1ZhbHVlLmdldCgpLCByZW5kZXJlcik7Cit9CisKIHZvaWQg
Q1NTQ3Jvc3NmYWRlVmFsdWU6OmxvYWRTdWJpbWFnZXMoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGNh
Y2hlZFJlc291cmNlTG9hZGVyKQogewogICAgIG1fY2FjaGVkRnJvbUltYWdlID0gY2FjaGVkSW1h
Z2VGb3JDU1NWYWx1ZShtX2Zyb21WYWx1ZS5nZXQoKSwgY2FjaGVkUmVzb3VyY2VMb2FkZXIpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmgJKHJldmlzaW9uIDEzNTQy
NSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC01OCw2ICs1OCw4IEBAIHB1YmxpYzoKICAgICBJbnRTaXplIGZpeGVkU2l6ZShjb25z
dCBSZW5kZXJPYmplY3QqKTsKIAogICAgIGJvb2wgaXNQZW5kaW5nKCkgY29uc3Q7CisgICAgYm9v
bCBoYXNBbHBoYShjb25zdCBSZW5kZXJPYmplY3QqKSBjb25zdDsKKwogICAgIHZvaWQgbG9hZFN1
YmltYWdlcyhDYWNoZWRSZXNvdXJjZUxvYWRlciopOwogCiAgICAgdm9pZCBzZXRQZXJjZW50YWdl
KFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHBlcmNlbnRhZ2VWYWx1ZSkgeyBtX3BlcmNl
bnRhZ2VWYWx1ZSA9IHBlcmNlbnRhZ2VWYWx1ZTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0dyYWRpZW50VmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NHcmFkaWVudFZhbHVlLmNwcAkocmV2aXNpb24gMTM1NDI1KQorKysgU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NjIsNiArNDYyLDE1
IEBAIGJvb2wgQ1NTR3JhZGllbnRWYWx1ZTo6aXNDYWNoZWFibGUoKSBjb24KICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAorYm9vbCBDU1NHcmFkaWVudFZhbHVlOjpoYXNBbHBoYShjb25zdCBSZW5kZXJP
YmplY3QqKSBjb25zdAoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9zdG9wcy5zaXpl
KCk7ICsraSkgeworICAgICAgICBpZiAobV9zdG9wc1tpXS5tX3Jlc29sdmVkQ29sb3IuaGFzQWxw
aGEoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKIHZvaWQgQ1NTR3JhZGllbnRWYWx1ZTo6cmVwb3J0QmFzZUNsYXNzTWVtb3J5VXNhZ2Uo
TWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBNZW1vcnlD
bGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6
OkNTUyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmgJKHJldmlzaW9u
IDEzNTQyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTc0LDYgKzc0LDggQEAgcHVibGljOgogICAgIEludFNpemUgZml4ZWRTaXpl
KGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0IHsgcmV0dXJuIEludFNpemUoKTsgfQogCiAgICAg
Ym9vbCBpc1BlbmRpbmcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaGFzQWxw
aGEoY29uc3QgUmVuZGVyT2JqZWN0KikgY29uc3Q7CisKICAgICB2b2lkIGxvYWRTdWJpbWFnZXMo
Q2FjaGVkUmVzb3VyY2VMb2FkZXIqKSB7IH0KICAgICBQYXNzUmVmUHRyPENTU0dyYWRpZW50VmFs
dWU+IGdyYWRpZW50V2l0aFN0eWxlc1Jlc29sdmVkKFN0eWxlUmVzb2x2ZXIqKTsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcAkocmV2aXNp
b24gMTM1NDI1KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTYsNiArMTk2LDIzIEBAIGJvb2wgQ1NTSW1hZ2VHZW5l
cmF0b3JWYWx1ZTo6aXNQZW5kaW5nKCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wgQ1NT
SW1hZ2VHZW5lcmF0b3JWYWx1ZTo6aGFzQWxwaGEoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJl
cikgY29uc3QKK3sKKyAgICBzd2l0Y2ggKGNsYXNzVHlwZSgpKSB7CisgICAgY2FzZSBDcm9zc2Zh
ZGVDbGFzczoKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IENTU0Nyb3NzZmFkZVZh
bHVlKj4odGhpcyktPmhhc0FscGhhKHJlbmRlcmVyKTsKKyAgICBjYXNlIENhbnZhc0NsYXNzOgor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBjYXNlIExpbmVhckdyYWRpZW50Q2xhc3M6CisgICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBDU1NMaW5lYXJHcmFkaWVudFZhbHVlKj4odGhp
cyktPmhhc0FscGhhKHJlbmRlcmVyKTsKKyAgICBjYXNlIFJhZGlhbEdyYWRpZW50Q2xhc3M6Cisg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBDU1NSYWRpYWxHcmFkaWVudFZhbHVlKj4o
dGhpcyktPmhhc0FscGhhKHJlbmRlcmVyKTsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgQ1NTSW1h
Z2VHZW5lcmF0b3JWYWx1ZTo6bG9hZFN1YmltYWdlcyhDYWNoZWRSZXNvdXJjZUxvYWRlciogY2Fj
aGVkUmVzb3VyY2VMb2FkZXIpCiB7CiAgICAgc3dpdGNoIChjbGFzc1R5cGUoKSkgewpJbmRleDog
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5oCShyZXZpc2lvbiAx
MzU0MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2Myw3IEBAIHB1YmxpYzoKICAgICBJbnRTaXplIGZpeGVk
U2l6ZShjb25zdCBSZW5kZXJPYmplY3QqKTsKIAogICAgIGJvb2wgaXNQZW5kaW5nKCkgY29uc3Q7
CisgICAgYm9vbCBoYXNBbHBoYShjb25zdCBSZW5kZXJPYmplY3QqKSBjb25zdDsKIAogICAgIHZv
aWQgbG9hZFN1YmltYWdlcyhDYWNoZWRSZXNvdXJjZUxvYWRlciopOwogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ltYWdlVmFsdWUuY3BwCShyZXZpc2lvbiAxMzU0MjUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MCw0ICsxNDAs
OSBAQCB2b2lkIENTU0ltYWdlVmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vCiAgICAgLy8gTm8g
bmVlZCB0byByZXBvcnQgbV9pbWFnZSBhcyBpdCBpcyBjb3VudGVkIGFzIHBhcnQgb2YgUmVuZGVy
QXJlbmEuCiB9CiAKK2Jvb2wgQ1NTSW1hZ2VWYWx1ZTo6aGFzQWxwaGEoY29uc3QgUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlcikgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbWFnZSA/IG1faW1hZ2UtPmhh
c0FscGhhKHJlbmRlcmVyKSA6IHRydWU7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuaAkocmV2aXNpb24gMTM1NDI1KQorKysgU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiAr
MzAsNyBAQCBjbGFzcyBDYWNoZWRSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFz
cyBTdHlsZUNhY2hlZEltYWdlOwogY2xhc3MgU3R5bGVJbWFnZTsKK2NsYXNzIFJlbmRlck9iamVj
dDsKIAogY2xhc3MgQ1NTSW1hZ2VWYWx1ZSA6IHB1YmxpYyBDU1NWYWx1ZSB7CiBwdWJsaWM6CkBA
IC01MSw2ICs1Miw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9y
eVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAorICAgIGJvb2wgaGFzQWxwaGEoY29u
c3QgUmVuZGVyT2JqZWN0KikgY29uc3Q7CisKIHByb3RlY3RlZDoKICAgICBDU1NJbWFnZVZhbHVl
KENsYXNzVHlwZSwgY29uc3QgU3RyaW5nJiB1cmwpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAJKHJldmlzaW9uIDEzNTQyNSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQ3NSw0ICs0NzUsOSBAQCB2b2lkIENhY2hlZEltYWdlOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1v
CiAjZW5kaWYKIH0KIAorYm9vbCBDYWNoZWRJbWFnZTo6aGFzQWxwaGEoY29uc3QgUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlcikKK3sKKyAgICByZXR1cm4gaW1hZ2VGb3JSZW5kZXJlcihyZW5kZXJlcikt
PmN1cnJlbnRGcmFtZUhhc0FscGhhKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCShyZXZpc2lvbiAx
MzU0MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAkod29y
a2luZyBjb3B5KQpAQCAtNTIsNiArNTIsNyBAQCBwdWJsaWM6CiAgICAgSW1hZ2UqIGltYWdlKCk7
IC8vIFJldHVybnMgdGhlIG51bGxJbWFnZSgpIGlmIHRoZSBpbWFnZSBpcyBub3QgYXZhaWxhYmxl
IHlldC4KICAgICBJbWFnZSogaW1hZ2VGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqKTsg
Ly8gUmV0dXJucyB0aGUgbnVsbEltYWdlKCkgaWYgdGhlIGltYWdlIGlzIG5vdCBhdmFpbGFibGUg
eWV0LgogICAgIGJvb2wgaGFzSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlLmdldCgpOyB9
CisgICAgYm9vbCBoYXNBbHBoYShjb25zdCBSZW5kZXJPYmplY3QqKTsKIAogICAgIHN0ZDo6cGFp
cjxJbWFnZSosIGZsb2F0PiBicm9rZW5JbWFnZShmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikgY29u
c3Q7IC8vIFJldHVybnMgYW4gaW1hZ2UgYW5kIHRoZSBpbWFnZSdzIHJlc29sdXRpb24gc2NhbGUg
ZmFjdG9yLgogICAgIGJvb2wgd2lsbFBhaW50QnJva2VuSW1hZ2UoKSBjb25zdDsgCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCShy
ZXZpc2lvbiAxMzU0MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRt
YXBJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyNiw3ICszMjYsNyBAQCBOYXRpdmVJbWFn
ZVB0ciBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VGCiAKIGJvb2wgQml0bWFwSW1hZ2U6OmZyYW1l
SGFzQWxwaGFBdEluZGV4KHNpemVfdCBpbmRleCkKIHsKLSAgICBpZiAobV9mcmFtZXMuc2l6ZSgp
IDw9IGluZGV4KQorICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hlZChpbmRleCkpCiAgICAgICAg
IHJldHVybiB0cnVlOwogCiAgICAgaWYgKG1fZnJhbWVzW2luZGV4XS5tX2hhdmVNZXRhZGF0YSkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCShyZXZpc2lvbiAxMzU0
MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTAwMSw3ICsxMDAxLDE0IEBAIHZvaWQgUmVuZGVyQm94OjpwYWludEZpbGxMYXll
cnMoY29uc3QgUGEKICAgICBpZiAoIWZpbGxMYXllcikKICAgICAgICAgcmV0dXJuOwogCi0gICAg
cGFpbnRGaWxsTGF5ZXJzKHBhaW50SW5mbywgYywgZmlsbExheWVyLT5uZXh0KCksIHJlY3QsIGJs
ZWVkQXZvaWRhbmNlLCBvcCwgYmFja2dyb3VuZE9iamVjdCk7CisgICAgLy8gRklYTUUgOiBJdCB3
b3VsZCBiZSBwb3NzaWJsZSBmb3IgdGhlIGZvbGxvd2luZyBvY2NsdXNpb24gY3VsbGluZyB0ZXN0
IHRvIGJlIG1vcmUgYWdncmVzc2l2ZSAKKyAgICAvLyBvbiBsYXllcnMgd2l0aCBubyByZXBlYXQg
YnkgdGVzdGluZyB3aGV0aGVyIHRoZSBpbWFnZSBjb3ZlcnMgdGhlIGxheW91dCByZWN0LgorICAg
IC8vIFRlc3RpbmcgdGhhdCBoZXJlIHdvdWxkIGltcGx5IGR1cGxpY2F0aW5nIGEgbG90IG9mIGNh
bGN1bGF0aW9ucyB0aGF0IGFyZSBjdXJyZW50bHkgZG9uZSBpbgorICAgIC8vIFJlbmRlckJveE1v
ZGVsT0JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkLiBBIG1vcmUgZWZmaWNpZW50IHNvbHV0
aW9uIG1pZ2h0IGJlIHRvIG1vdmUKKyAgICAvLyB0aGUgbGF5ZXIgcmVjdXJzaW9uIGludG8gcGFp
bnRGaWxsTGF5ZXJFeHRlbmRlZCwgb3IgdG8gY29tcHV0ZSB0aGUgbGF5ZXIgZ2VvbWV0cnkgaGVy
ZQorICAgIC8vIGFuZCBwYXNzIGl0IGRvd24uCisgICAgaWYgKGZpbGxMYXllci0+bmV4dCgpICYm
ICghZmlsbExheWVyLT5oYXNPcGFxdWVJbWFnZSh0aGlzKSB8fCAhZmlsbExheWVyLT5pbWFnZSgp
LT5jYW5SZW5kZXIodGhpcywgc3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpKSB8fCBmaWxsTGF5ZXIt
Pmhhc05vUmVwZWF0KCkpKQorICAgICAgICBwYWludEZpbGxMYXllcnMocGFpbnRJbmZvLCBjLCBm
aWxsTGF5ZXItPm5leHQoKSwgcmVjdCwgYmxlZWRBdm9pZGFuY2UsIG9wLCBiYWNrZ3JvdW5kT2Jq
ZWN0KTsKICAgICBwYWludEZpbGxMYXllcihwYWludEluZm8sIGMsIGZpbGxMYXllciwgcmVjdCwg
YmxlZWRBdm9pZGFuY2UsIG9wLCBiYWNrZ3JvdW5kT2JqZWN0KTsKIH0KIApJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCShyZXZp
c2lvbiAxMzU0MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxP
YmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MDcsOCArOTA3LDEwIEBAIHZvaWQgUmVuZGVy
Qm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWUKICAgICAgICAgdmlldygpLT5mcmFtZVZpZXco
KS0+c2V0Q29udGVudElzT3BhcXVlKGlzT3BhcXVlUm9vdCk7CiAgICAgfQogCi0gICAgLy8gUGFp
bnQgdGhlIGNvbG9yIGZpcnN0IHVuZGVybmVhdGggYWxsIGltYWdlcy4KLSAgICBpZiAoIWJnTGF5
ZXItPm5leHQoKSkgeworICAgIC8vIFBhaW50IHRoZSBjb2xvciBmaXJzdCB1bmRlcm5lYXRoIGFs
bCBpbWFnZXMsIGN1bGxlZCBpZiBiYWNrZ3JvdW5kIGltYWdlIG9jY2x1ZGVzIGl0LgorICAgIC8v
IEZJWE1FOiBJbiB0aGUgYmdMYXllci0+aGFzRmluaXRlQm91bmRzKCkgY2FzZSwgd2UgY291bGQg
aW1wcm92ZSB0aGUgY3VsbGluZyB0ZXN0CisgICAgLy8gYnkgdmVyaWZ5aW5nIHdoZXRoZXIgdGhl
IGJhY2tncm91bmQgaW1hZ2UgY292ZXJzIHRoZSBlbnRpcmUgbGF5b3V0IHJlY3QuCisgICAgaWYg
KCFiZ0xheWVyLT5uZXh0KCkgJiYgIShzaG91bGRQYWludEJhY2tncm91bmRJbWFnZSAmJiBiZ0xh
eWVyLT5oYXNPcGFxdWVJbWFnZSh0aGlzKSAmJiAhYmdMYXllci0+aGFzTm9SZXBlYXQoKSkpIHsK
ICAgICAgICAgSW50UmVjdCBiYWNrZ3JvdW5kUmVjdChwaXhlbFNuYXBwZWRJbnRSZWN0KHNjcm9s
bGVkUGFpbnRSZWN0KSk7CiAgICAgICAgIGJvb2wgYm94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9C
YWNrZ3JvdW5kID0gdGhpcy0+Ym94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5kKGJs
ZWVkQXZvaWRhbmNlLCBib3gpOwogICAgICAgICBpZiAoIWJveFNoYWRvd1Nob3VsZEJlQXBwbGll
ZFRvQmFja2dyb3VuZCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxs
TGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9G
aWxsTGF5ZXIuY3BwCShyZXZpc2lvbiAxMzU0MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvRmlsbExheWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgwLDQgKzI4MCwyMyBA
QCBib29sIEZpbGxMYXllcjo6aW1hZ2VzQXJlTG9hZGVkKCkgY29uc3QKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAorYm9vbCBGaWxsTGF5ZXI6Omhhc09wYXF1ZUltYWdlKGNvbnN0IFJlbmRlck9iamVj
dCogcmVuZGVyZXIpIGNvbnN0Cit7CisgICAgaWYgKCFtX2ltYWdlKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBpZiAobV9jb21wb3NpdGUgPT0gQ29tcG9zaXRlQ2xlYXIgfHwgbV9jb21w
b3NpdGUgPT0gQ29tcG9zaXRlQ29weSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAo
bV9jb21wb3NpdGUgPT0gQ29tcG9zaXRlU291cmNlT3ZlcikKKyAgICAgICAgcmV0dXJuICFtX2lt
YWdlLT5oYXNBbHBoYShyZW5kZXJlcik7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wg
RmlsbExheWVyOjpoYXNOb1JlcGVhdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcmVwZWF0WCA9
PSBOb1JlcGVhdEZpbGwgfHwgbV9yZXBlYXRZID09IE5vUmVwZWF0RmlsbDsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Zp
bGxMYXllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9G
aWxsTGF5ZXIuaAkocmV2aXNpb24gMTM1NDI1KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL0ZpbGxMYXllci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQsNiArMTQ0LDkgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gbV9uZXh0ID8gbV9uZXh0LT5oYXNGaXhlZEltYWdlKCkgOiBm
YWxzZTsKICAgICB9CiAKKyAgICBib29sIGhhc09wYXF1ZUltYWdlKGNvbnN0IFJlbmRlck9iamVj
dCopIGNvbnN0OworICAgIGJvb2wgaGFzTm9SZXBlYXQoKSBjb25zdDsKKwogICAgIEVGaWxsTGF5
ZXJUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFRmlsbExheWVyVHlwZT4o
bV90eXBlKTsgfQogCiAgICAgdm9pZCBmaWxsVW5zZXRQcm9wZXJ0aWVzKCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuY3Bw
CShyZXZpc2lvbiAxMzU0MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVDYWNoZWRJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNiw0ICsxMDYsOSBAQCBQYXNz
UmVmUHRyPEltYWdlPiBTdHlsZUNhY2hlZEltYWdlOjppbWFnCiAgICAgcmV0dXJuIG1faW1hZ2Ut
PmltYWdlRm9yUmVuZGVyZXIocmVuZGVyZXIpOwogfQogCitib29sIFN0eWxlQ2FjaGVkSW1hZ2U6
Omhhc0FscGhhKGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1faW1hZ2UtPmhhc0FscGhhKHJlbmRlcmVyKTsKK30KKwogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5oCShyZXZpc2lv
biAxMzU0MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJ
bWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw2ICs1Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgYWRkQ2xpZW50KFJlbmRlck9iamVjdCopOwogICAgIHZpcnR1YWwgdm9pZCByZW1v
dmVDbGllbnQoUmVuZGVyT2JqZWN0Kik7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEltYWdlPiBp
bWFnZShSZW5kZXJPYmplY3QqLCBjb25zdCBJbnRTaXplJikgY29uc3Q7CisgICAgdmlydHVhbCBi
b29sIGhhc0FscGhhKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0IE9WRVJSSURFOwogICAgIAog
cHJpdmF0ZToKICAgICBleHBsaWNpdCBTdHlsZUNhY2hlZEltYWdlKENhY2hlZEltYWdlKik7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZVNldC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2Fj
aGVkSW1hZ2VTZXQuY3BwCShyZXZpc2lvbiAxMzU0MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZVNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEx
Niw2ICsxMTYsMTEgQEAgUGFzc1JlZlB0cjxJbWFnZT4gU3R5bGVDYWNoZWRJbWFnZVNldDo6aQog
ICAgIHJldHVybiBtX2Jlc3RGaXRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihyZW5kZXJlcik7CiB9
CiAKK2Jvb2wgU3R5bGVDYWNoZWRJbWFnZVNldDo6aGFzQWxwaGEoY29uc3QgUmVuZGVyT2JqZWN0
KiByZW5kZXJlcikgY29uc3QKK3sKKyAgICByZXR1cm4gbV9iZXN0Rml0SW1hZ2UtPmhhc0FscGhh
KHJlbmRlcmVyKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5B
QkxFKENTU19JTUFHRV9TRVQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U3R5bGVDYWNoZWRJbWFnZVNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlU2V0LmgJKHJldmlzaW9uIDEzNTQyNSkKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlU2V0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTcxLDYgKzcxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZW1v
dmVDbGllbnQoUmVuZGVyT2JqZWN0Kik7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEltYWdlPiBp
bWFnZShSZW5kZXJPYmplY3QqLCBjb25zdCBJbnRTaXplJikgY29uc3Q7CiAgICAgdmlydHVhbCBm
bG9hdCBpbWFnZVNjYWxlRmFjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZVNjYWxlRmFjdG9y
OyB9CisgICAgdmlydHVhbCBib29sIGhhc0FscGhhKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0
IE9WRVJSSURFOwogICAgIAogcHJpdmF0ZToKICAgICBTdHlsZUNhY2hlZEltYWdlU2V0KENhY2hl
ZEltYWdlKiwgZmxvYXQgaW1hZ2VTY2FsZUZhY3RvciwgQ1NTSW1hZ2VTZXRWYWx1ZSopOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVy
YXRlZEltYWdlLmNwcAkocmV2aXNpb24gMTM1NDI1KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSw0
ICs4OSw5IEBAIFBhc3NSZWZQdHI8SW1hZ2U+IFN0eWxlR2VuZXJhdGVkSW1hZ2U6OmkKICAgICBy
ZXR1cm4gbV9pbWFnZUdlbmVyYXRvclZhbHVlLT5pbWFnZShyZW5kZXJlciwgc2l6ZSk7CiB9CiAK
K2Jvb2wgU3R5bGVHZW5lcmF0ZWRJbWFnZTo6aGFzQWxwaGEoY29uc3QgUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlcikgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbWFnZUdlbmVyYXRvclZhbHVlLT5oYXNB
bHBoYShyZW5kZXJlcik7Cit9CisKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuaAkocmV2aXNpb24gMTM1NDI1KQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuaAko
d29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGFkZENsaWVudChSZW5kZXJPYmplY3QqKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQ2xpZW50
KFJlbmRlck9iamVjdCopOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJbWFnZT4gaW1hZ2UoUmVu
ZGVyT2JqZWN0KiwgY29uc3QgSW50U2l6ZSYpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBoYXNB
bHBoYShjb25zdCBSZW5kZXJPYmplY3QqKSBjb25zdCBPVkVSUklERTsKICAgICAKIHByaXZhdGU6
CiAgICAgU3R5bGVHZW5lcmF0ZWRJbWFnZShQYXNzUmVmUHRyPENTU0ltYWdlR2VuZXJhdG9yVmFs
dWU+KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUltYWdlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlSW1hZ2Uu
aAkocmV2aXNpb24gMTM1NDI1KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0
eWxlSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNjQsNiArNjQsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBQYXNzUmVmUHRyPEltYWdlPiBpbWFnZShSZW5kZXJPYmplY3QqLCBjb25zdCBJbnRT
aXplJikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgV3JhcHBlZEltYWdlUHRyIGRhdGEoKSBjb25z
dCA9IDA7CiAgICAgdmlydHVhbCBmbG9hdCBpbWFnZVNjYWxlRmFjdG9yKCkgY29uc3QgeyByZXR1
cm4gMTsgfQorICAgIHZpcnR1YWwgYm9vbCBoYXNBbHBoYShjb25zdCBSZW5kZXJPYmplY3QqKSBj
b25zdCA9IDA7CiAKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNDYWNoZWRJbWFnZSgpIGNvbnN0
IHsgcmV0dXJuIG1faXNDYWNoZWRJbWFnZTsgfQogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc1Bl
bmRpbmdJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNQZW5kaW5nSW1hZ2U7IH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVBlbmRpbmdJbWFnZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVBlbmRpbmdJbWFnZS5o
CShyZXZpc2lvbiAxMzU0MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVQZW5kaW5nSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNjYsNiArNjYsNyBAQCBwdWJsaWM6
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9
CisgICAgdmlydHVhbCBib29sIGhhc0FscGhhKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0IHsg
cmV0dXJuIHRydWU7IH0KICAgICAKIHByaXZhdGU6CiAgICAgU3R5bGVQZW5kaW5nSW1hZ2UoQ1NT
VmFsdWUqIHZhbHVlKQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTM1NDI3KQorKysgTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMTEtMjEgIEp1
c3RpbiBOb3Zvc2FkICA8anVub3ZAZ29vZ2xlLmNvbT4KKworICAgICAgICBBZGRpbmcgb2NjbHVz
aW9uIGRldGVjdGlvbiB0byByZWR1Y2Ugb3ZlcmRyYXcgaW4gUmVuZGVyQm94IGJhY2tncm91bmQg
cmVuZGVyaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDI1NTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBOZXcgdGVzdCBleGVyY2lzZXMgZGlmZmVyZW50IENTUyBiYWNrZ3JvdW5kIHN0eWxlIHVzZSBj
YXNlcyB0aGF0CisgICAgICAgIGFyZSBjYW5kaWRhdGVzIGZvciBvcHRpbWl6YXRpb24gYnkgb2Nj
bHVzaW9uIGN1bGxpbmcuCisKKyAgICAgICAgKiBmYXN0L2JhY2tncm91bmRzL2JhY2tncm91bmQt
b3BhcXVlLWltYWdlcy1vdmVyLWNvbG9yLmh0bWw6IEFkZGVkLgorCiAyMDEyLTExLTIxICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVtb3ZlIElEQkRhdGFi
YXNlRXhjZXB0aW9uCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2JhY2tncm91bmRzL2JhY2tncm91
bmQtb3BhcXVlLWltYWdlcy1vdmVyLWNvbG9yLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9iYWNrZ3JvdW5kcy9iYWNrZ3JvdW5kLW9wYXF1ZS1pbWFnZXMtb3Zlci1jb2xvci5o
dG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9iYWNrZ3JvdW5kcy9iYWNrZ3Jv
dW5kLW9wYXF1ZS1pbWFnZXMtb3Zlci1jb2xvci5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDM3IEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8IS0tIFRlc3QgcGFzc2Vz
IHdoZW4gYSBncmVlbiByZWN0YW5nbGUgaXMgZGlzcGxheWVkLgorVGhlc2UgYXJlIGFsbCBkcmF3
aW5nIGNhc2VzIHRoYXQgY2FuIGJlIG9wdGltaXplZCBieSBvY2NsdXNpb24gY3VsbGluZworVGhl
IGZpeCBmb3IgYnVnIDEwMjU1NyBvcHRpbWl6ZXMgY2FzZXMgMSwgMiwgMywgNiwgNywgYW5kIDgt
LT4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiI+CisgICAgLnJlZEJhY2sg
eworICAgICAgICB3aWR0aDoyMHB4OworICAgICAgICBoZWlnaHQ6MTAwcHg7CisgICAgICAgIGRp
c3BsYXk6YmxvY2s7CisgICAgICAgIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQ7CisgICAgICAg
IGJhY2tncm91bmQtY29sb3I6IHJlZDsKKyAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjowcHgg
MHB4LCAwcHggMHB4OworICAgICAgICBmbG9hdDogbGVmdDsKKyAgICB9Cis8L3N0eWxlPgorPHNj
cmlwdD4KKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCh0cnVlKTsKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2PgorICAgIDxk
aXYgaWQ9ImNhc2VfMSIgY2xhc3M9InJlZEJhY2siIHN0eWxlPSJiYWNrZ3JvdW5kLWltYWdlOiB1
cmwoLi4vLi4vaHR0cC90ZXN0cy9tdWx0aXBhcnQvcmVzb3VyY2VzL2dyZWVuLTEwMHgxMDAucG5n
KSI+PC9kaXY+CisgICAgPGRpdiBpZD0iY2FzZV8yIiBjbGFzcz0icmVkQmFjayIgc3R5bGU9ImJh
Y2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwgZ3JlZW4sIGdyZWVu
KSI+PC9kaXY+CisgICAgPGRpdiBpZD0iY2FzZV8zIiBjbGFzcz0icmVkQmFjayIgc3R5bGU9ImJh
Y2tncm91bmQtaW1hZ2U6IC13ZWJraXQtY3Jvc3MtZmFkZSh1cmwoLi4vLi4vaHR0cC90ZXN0cy9t
dWx0aXBhcnQvcmVzb3VyY2VzL2dyZWVuLTEwMHgxMDAucG5nKSwgdXJsKC4uLy4uL2h0dHAvdGVz
dHMvbXVsdGlwYXJ0L3Jlc291cmNlcy9ncmVlbi0xMDB4MTAwLnBuZyksIDUwJSkiPjwvZGl2Pgor
ICAgIDxkaXYgaWQ9ImNhc2VfNCIgY2xhc3M9InJlZEJhY2siIHN0eWxlPSJiYWNrZ3JvdW5kLXJl
cGVhdDogbm8tcmVwZWF0OyBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vLi4vaHR0cC90ZXN0cy9t
dWx0aXBhcnQvcmVzb3VyY2VzL2dyZWVuLTEwMHgxMDAucG5nKSI+PC9kaXY+CisgICAgPGRpdiBp
ZD0iY2FzZV81IiBjbGFzcz0icmVkQmFjayIgc3R5bGU9ImJhY2tncm91bmQtcmVwZWF0OiByZXBl
YXQteDsgYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uLy4uL2h0dHAvdGVzdHMvbXVsdGlwYXJ0L3Jl
c291cmNlcy9ncmVlbi0xMDB4MTAwLnBuZykiPjwvZGl2PgorICAgIDxkaXYgaWQ9ImNhc2VfNiIg
Y2xhc3M9InJlZEJhY2siIHN0eWxlPSJiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vLi4vaHR0cC90
ZXN0cy9tdWx0aXBhcnQvcmVzb3VyY2VzL2dyZWVuLTEwMHgxMDAucG5nKSx1cmwocmVzb3VyY2Vz
LzY0eDMyLXJlZC5wbmcpIj48L2Rpdj4KKyAgICA8ZGl2IGlkPSJjYXNlXzciIGNsYXNzPSJyZWRC
YWNrIiBzdHlsZT0iYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9w
LCBncmVlbiwgZ3JlZW4pLHVybChyZXNvdXJjZXMvNjR4MzItcmVkLnBuZykiPjwvZGl2PgorICAg
IDxkaXYgaWQ9ImNhc2VfOCIgY2xhc3M9InJlZEJhY2siIHN0eWxlPSJiYWNrZ3JvdW5kLWltYWdl
OiAtd2Via2l0LWNyb3NzLWZhZGUodXJsKC4uLy4uL2h0dHAvdGVzdHMvbXVsdGlwYXJ0L3Jlc291
cmNlcy9ncmVlbi0xMDB4MTAwLnBuZyksdXJsKC4uLy4uL2h0dHAvdGVzdHMvbXVsdGlwYXJ0L3Jl
c291cmNlcy9ncmVlbi0xMDB4MTAwLnBuZyksIDUwJSksdXJsKHJlc291cmNlcy82NHgzMi1yZWQu
cG5nKSI+PC9kaXY+CisgICAgPGRpdiBpZD0iY2FzZV85IiBjbGFzcz0icmVkQmFjayIgc3R5bGU9
ImJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7IGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi8u
Li9odHRwL3Rlc3RzL211bHRpcGFydC9yZXNvdXJjZXMvZ3JlZW4tMTAweDEwMC5wbmcpLHVybChy
ZXNvdXJjZXMvNjR4MzItcmVkLnBuZykiPjwvZGl2PgorICAgIDxkaXYgaWQ9ImNhc2VfMTAiIGNs
YXNzPSJyZWRCYWNrIiBzdHlsZT0iYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14OyBiYWNrZ3Jv
dW5kLWltYWdlOiB1cmwoLi4vLi4vaHR0cC90ZXN0cy9tdWx0aXBhcnQvcmVzb3VyY2VzL2dyZWVu
LTEwMHgxMDAucG5nKSx1cmwocmVzb3VyY2VzLzY0eDMyLXJlZC5wbmcpIj48L2Rpdj4KKzwvZGl2
PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175520</attachid>
            <date>2012-11-21 14:07:57 -0800</date>
            <delta_ts>2012-11-22 10:42:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102557-20121121170543.patch</filename>
            <type>text/plain</type>
            <size>23858</size>
            <attacher name="Justin Novosad">junov</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNTQyNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg2IEBACisyMDEyLTExLTIxICBKdXN0aW4g
Tm92b3NhZCAgPGp1bm92QGdvb2dsZS5jb20+CisKKyAgICAgICAgQWRkaW5nIG9jY2x1c2lvbiBk
ZXRlY3Rpb24gdG8gcmVkdWNlIG92ZXJkcmF3IGluIFJlbmRlckJveCBiYWNrZ3JvdW5kIHJlbmRl
cmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAy
NTU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
aW5nIGhhc0FscGhhIG1ldGhvZCB0byBhbGwgY2xhc3NlcyBkZXJ2aXZlZCBmcm9tIENTU0ltYWdl
VmFsdWUgYW5kCisgICAgICAgIFN0eWxlSW1hZ2UsIGluIG9yZGVyIHRvIHN1cHBvcnQgb2NjbHVz
aW9uIHRlc3RpbmcuIAorICAgICAgICBUaGlzIGFsbG93cyB0aGUgRmlsbExheWVyIHJlY3Vyc2lv
biB0byBzdG9wIGVhcmx5IHdoZW4gYW4gb3BhcXVlIGxheWVyCisgICAgICAgIGlzIGVuY291bnRl
cmVkIHdoaWxlIGFwcGx5aW5nIGEgQ1NTIGJhY2tncm91bmQgc3R5bGUuIFRoaXMgYWxzbyBhbGxv
d3MKKyAgICAgICAgdGhlIGVsaW1pbmF0aW9uIG9mIGJhY2tncm91bmQgY29sb3IgYXBwbGljYXRp
b24gd2hlbiB0aGUgYmFja2dyb3VuZCBpcworICAgICAgICBjb21wbGV0ZWx5IGNvdmVyZWQgYnkg
YW4gaW1hZ2UuICBUaGUgb3B0aW1pemF0aW9uIGFsc28gc2tpcHMgdGhlCisgICAgICAgIGNsZWFy
aW5nIG9mIHRoZSBwYWdlJ3Mgcm9vdCBlbGVtZW50IHdoZW4gdGhlIHBhZ2UgYmFja2dyb3VuZCBp
cworICAgICAgICBlbnRpcmVseSBjb3ZlcmVkIGJ5IGFuIGltYWdlIChlLmcgYSB0aWxlZCBiaXRt
YXAgb3IgYSBncmFkaWVudCkKKworICAgICAgICBUZXN0OiBmYXN0L2JhY2tncm91bmRzL2JhY2tn
cm91bmQtb3BhcXVlLWltYWdlcy1vdmVyLWNvbG9yLmh0bWwKKworICAgICAgICAqIGNzcy9DU1ND
cm9zc2ZhZGVWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdWJpbWFnZUhhc0FscGhhKToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ3Jvc3NmYWRlVmFsdWU6
OmlzUGVuZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NDcm9zc2ZhZGVWYWx1ZTo6aGFzQWxw
aGEpOgorICAgICAgICAqIGNzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5oOgorICAgICAgICAoQ1NTQ3Jv
c3NmYWRlVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NHcmFkaWVudFZhbHVlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0dyYWRpZW50VmFsdWU6Omhhc0FscGhhKToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAqIGNzcy9DU1NHcmFkaWVudFZhbHVlLmg6CisgICAgICAgIChDU1NHcmFk
aWVudFZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpoYXNBbHBoYSk6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5oOgor
ICAgICAgICAoQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU0ltYWdl
VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTSW1hZ2VWYWx1ZTo6aGFzQWxwaGEpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogY3NzL0NTU0ltYWdlVmFsdWUuaDoKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoQ1NTSW1hZ2VWYWx1ZSk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpo
YXNBbHBoYSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2UuaDoKKyAgICAgICAgKENhY2hlZEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6
ZnJhbWVIYXNBbHBoYUF0SW5kZXgpOgorICAgICAgICBUaGlzIG1ldGhvZCB3aWxsIG5vdyBwdWxs
IHRoZSBxdWVyaWVkIGZyYW1lIGludG8gY2FjaGUgdXBvbiB0ZXN0aW5nCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnBhaW50
RmlsbExheWVycyk6CisgICAgICAgIEFkZGVkIGxheWVyIHJlY3Vyc2lvbiBlYXJseSBleGl0IHdo
ZW4gYW4gb3BhcXVlIGxheWVyIGlzIGVuY291bnRlcmVkLgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZCk6CisgICAgICAgIEVsaW1pbmF0ZWQgYmFj
a2dyb3VuZCBjb2xvciBmaWxsIHdoZW4gdGhlIGxheWVyIGNvbnRhaW5zIGFuIG9wYXF1ZQorICAg
ICAgICBpbWFnZSB0aGF0IGNvdmVycyB0aGUgZW50aXJlIFJlbmRlckJveC4KKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGxMYXll
cjo6aGFzT3BhcXVlSW1hZ2UpOgorICAgICAgICBSZXR1cm5zIHRydWUgaWYgdGhlIGxheWVyJ3Mg
aW1hZ2UgaXMga25vd24gdG8gYmUgZnVsbHkgb3BhcXVlLgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWxsTGF5ZXI6Omhhc05vUmVwZWF0KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3R5bGUvRmlsbExheWVyLmg6CisgICAgICAgIChGaWxsTGF5ZXIpOgorICAgICAgICAq
IHJlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlQ2FjaGVkSW1hZ2U6Omhhc0FscGhhKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlLmg6CisgICAgICAgIChTdHlsZUNh
Y2hlZEltYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZVNl
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUNhY2hlZEltYWdlU2V0OjpoYXNBbHBoYSk6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNo
ZWRJbWFnZVNldC5oOgorICAgICAgICAoU3R5bGVDYWNoZWRJbWFnZVNldCk6CisgICAgICAgICog
cmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGVHZW5lcmF0ZWRJbWFnZTo6aGFzQWxwaGEpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuaDoKKyAgICAgICAg
KFN0eWxlR2VuZXJhdGVkSW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUlt
YWdlLmg6CisgICAgICAgIChTdHlsZUltYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
U3R5bGVQZW5kaW5nSW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUGVuZGluZ0ltYWdl
OjpoYXNBbHBoYSk6CisKIDIwMTItMTEtMjEgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFJlbW92ZSAkb3V0cHV0RGlyIGFuZCAkb3V0cHV0SGVhZGVyc0Rp
ciBmcm9tIGdsb2JhbCB2YXJpYWJsZXMgb2YgY29kZSBnZW5lcmF0b3JzCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHAJKHJldmlzaW9uIDEzNTQyNSkKKysrIFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTUyLDYgKzUyLDE5IEBAIHN0YXRpYyBib29sIHN1YmltYWdlSXNQZW5kaW5nKENTU1ZhbHVlKgog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAorc3RhdGljIGJvb2wgc3ViaW1hZ2VIYXNBbHBoYShDU1NW
YWx1ZSogdmFsdWUsIGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIpCit7CisgICAgaWYgKHZh
bHVlLT5pc0ltYWdlVmFsdWUoKSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PENTU0ltYWdl
VmFsdWUqPih2YWx1ZSktPmhhc0FscGhhKHJlbmRlcmVyKTsKKworICAgIGlmICh2YWx1ZS0+aXNJ
bWFnZUdlbmVyYXRvclZhbHVlKCkpCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxDU1NJbWFn
ZUdlbmVyYXRvclZhbHVlKj4odmFsdWUpLT5oYXNBbHBoYShyZW5kZXJlcik7CisKKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKworICAgIHJldHVybiB0cnVlOworfQorCiBzdGF0aWMgQ2FjaGVk
SW1hZ2UqIGNhY2hlZEltYWdlRm9yQ1NTVmFsdWUoQ1NTVmFsdWUqIHZhbHVlLCBDYWNoZWRSZXNv
dXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIpCiB7CiAgICAgaWYgKCF2YWx1ZSkKQEAg
LTEyNiw2ICsxMzksMTEgQEAgYm9vbCBDU1NDcm9zc2ZhZGVWYWx1ZTo6aXNQZW5kaW5nKCkgY29u
cwogICAgIHJldHVybiBzdWJpbWFnZUlzUGVuZGluZyhtX2Zyb21WYWx1ZS5nZXQoKSkgfHwgc3Vi
aW1hZ2VJc1BlbmRpbmcobV90b1ZhbHVlLmdldCgpKTsKIH0KIAorYm9vbCBDU1NDcm9zc2ZhZGVW
YWx1ZTo6aGFzQWxwaGEoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikgY29uc3QKK3sKKyAg
ICByZXR1cm4gc3ViaW1hZ2VIYXNBbHBoYShtX2Zyb21WYWx1ZS5nZXQoKSwgcmVuZGVyZXIpIHx8
IHN1YmltYWdlSGFzQWxwaGEobV90b1ZhbHVlLmdldCgpLCByZW5kZXJlcik7Cit9CisKIHZvaWQg
Q1NTQ3Jvc3NmYWRlVmFsdWU6OmxvYWRTdWJpbWFnZXMoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGNh
Y2hlZFJlc291cmNlTG9hZGVyKQogewogICAgIG1fY2FjaGVkRnJvbUltYWdlID0gY2FjaGVkSW1h
Z2VGb3JDU1NWYWx1ZShtX2Zyb21WYWx1ZS5nZXQoKSwgY2FjaGVkUmVzb3VyY2VMb2FkZXIpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmgJKHJldmlzaW9uIDEzNTQy
NSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC01OCw2ICs1OCw4IEBAIHB1YmxpYzoKICAgICBJbnRTaXplIGZpeGVkU2l6ZShjb25z
dCBSZW5kZXJPYmplY3QqKTsKIAogICAgIGJvb2wgaXNQZW5kaW5nKCkgY29uc3Q7CisgICAgYm9v
bCBoYXNBbHBoYShjb25zdCBSZW5kZXJPYmplY3QqKSBjb25zdDsKKwogICAgIHZvaWQgbG9hZFN1
YmltYWdlcyhDYWNoZWRSZXNvdXJjZUxvYWRlciopOwogCiAgICAgdm9pZCBzZXRQZXJjZW50YWdl
KFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHBlcmNlbnRhZ2VWYWx1ZSkgeyBtX3BlcmNl
bnRhZ2VWYWx1ZSA9IHBlcmNlbnRhZ2VWYWx1ZTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0dyYWRpZW50VmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NHcmFkaWVudFZhbHVlLmNwcAkocmV2aXNpb24gMTM1NDI1KQorKysgU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NjIsNiArNDYyLDE1
IEBAIGJvb2wgQ1NTR3JhZGllbnRWYWx1ZTo6aXNDYWNoZWFibGUoKSBjb24KICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAorYm9vbCBDU1NHcmFkaWVudFZhbHVlOjpoYXNBbHBoYShjb25zdCBSZW5kZXJP
YmplY3QqKSBjb25zdAoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9zdG9wcy5zaXpl
KCk7ICsraSkgeworICAgICAgICBpZiAobV9zdG9wc1tpXS5tX3Jlc29sdmVkQ29sb3IuaGFzQWxw
aGEoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKIHZvaWQgQ1NTR3JhZGllbnRWYWx1ZTo6cmVwb3J0QmFzZUNsYXNzTWVtb3J5VXNhZ2Uo
TWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBNZW1vcnlD
bGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6
OkNTUyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmgJKHJldmlzaW9u
IDEzNTQyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTc0LDYgKzc0LDggQEAgcHVibGljOgogICAgIEludFNpemUgZml4ZWRTaXpl
KGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0IHsgcmV0dXJuIEludFNpemUoKTsgfQogCiAgICAg
Ym9vbCBpc1BlbmRpbmcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaGFzQWxw
aGEoY29uc3QgUmVuZGVyT2JqZWN0KikgY29uc3Q7CisKICAgICB2b2lkIGxvYWRTdWJpbWFnZXMo
Q2FjaGVkUmVzb3VyY2VMb2FkZXIqKSB7IH0KICAgICBQYXNzUmVmUHRyPENTU0dyYWRpZW50VmFs
dWU+IGdyYWRpZW50V2l0aFN0eWxlc1Jlc29sdmVkKFN0eWxlUmVzb2x2ZXIqKTsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcAkocmV2aXNp
b24gMTM1NDI1KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTYsNiArMTk2LDIzIEBAIGJvb2wgQ1NTSW1hZ2VHZW5l
cmF0b3JWYWx1ZTo6aXNQZW5kaW5nKCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wgQ1NT
SW1hZ2VHZW5lcmF0b3JWYWx1ZTo6aGFzQWxwaGEoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJl
cikgY29uc3QKK3sKKyAgICBzd2l0Y2ggKGNsYXNzVHlwZSgpKSB7CisgICAgY2FzZSBDcm9zc2Zh
ZGVDbGFzczoKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IENTU0Nyb3NzZmFkZVZh
bHVlKj4odGhpcyktPmhhc0FscGhhKHJlbmRlcmVyKTsKKyAgICBjYXNlIENhbnZhc0NsYXNzOgor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBjYXNlIExpbmVhckdyYWRpZW50Q2xhc3M6CisgICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBDU1NMaW5lYXJHcmFkaWVudFZhbHVlKj4odGhp
cyktPmhhc0FscGhhKHJlbmRlcmVyKTsKKyAgICBjYXNlIFJhZGlhbEdyYWRpZW50Q2xhc3M6Cisg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBDU1NSYWRpYWxHcmFkaWVudFZhbHVlKj4o
dGhpcyktPmhhc0FscGhhKHJlbmRlcmVyKTsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgQ1NTSW1h
Z2VHZW5lcmF0b3JWYWx1ZTo6bG9hZFN1YmltYWdlcyhDYWNoZWRSZXNvdXJjZUxvYWRlciogY2Fj
aGVkUmVzb3VyY2VMb2FkZXIpCiB7CiAgICAgc3dpdGNoIChjbGFzc1R5cGUoKSkgewpJbmRleDog
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5oCShyZXZpc2lvbiAx
MzU0MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2Myw3IEBAIHB1YmxpYzoKICAgICBJbnRTaXplIGZpeGVk
U2l6ZShjb25zdCBSZW5kZXJPYmplY3QqKTsKIAogICAgIGJvb2wgaXNQZW5kaW5nKCkgY29uc3Q7
CisgICAgYm9vbCBoYXNBbHBoYShjb25zdCBSZW5kZXJPYmplY3QqKSBjb25zdDsKIAogICAgIHZv
aWQgbG9hZFN1YmltYWdlcyhDYWNoZWRSZXNvdXJjZUxvYWRlciopOwogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ltYWdlVmFsdWUuY3BwCShyZXZpc2lvbiAxMzU0MjUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MCw0ICsxNDAs
OSBAQCB2b2lkIENTU0ltYWdlVmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vCiAgICAgLy8gTm8g
bmVlZCB0byByZXBvcnQgbV9pbWFnZSBhcyBpdCBpcyBjb3VudGVkIGFzIHBhcnQgb2YgUmVuZGVy
QXJlbmEuCiB9CiAKK2Jvb2wgQ1NTSW1hZ2VWYWx1ZTo6aGFzQWxwaGEoY29uc3QgUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlcikgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbWFnZSA/IG1faW1hZ2UtPmhh
c0FscGhhKHJlbmRlcmVyKSA6IHRydWU7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuaAkocmV2aXNpb24gMTM1NDI1KQorKysgU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiAr
MzAsNyBAQCBjbGFzcyBDYWNoZWRSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFz
cyBTdHlsZUNhY2hlZEltYWdlOwogY2xhc3MgU3R5bGVJbWFnZTsKK2NsYXNzIFJlbmRlck9iamVj
dDsKIAogY2xhc3MgQ1NTSW1hZ2VWYWx1ZSA6IHB1YmxpYyBDU1NWYWx1ZSB7CiBwdWJsaWM6CkBA
IC01MSw2ICs1Miw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9y
eVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAorICAgIGJvb2wgaGFzQWxwaGEoY29u
c3QgUmVuZGVyT2JqZWN0KikgY29uc3Q7CisKIHByb3RlY3RlZDoKICAgICBDU1NJbWFnZVZhbHVl
KENsYXNzVHlwZSwgY29uc3QgU3RyaW5nJiB1cmwpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAJKHJldmlzaW9uIDEzNTQyNSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQ3NSw0ICs0NzUsOSBAQCB2b2lkIENhY2hlZEltYWdlOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1v
CiAjZW5kaWYKIH0KIAorYm9vbCBDYWNoZWRJbWFnZTo6aGFzQWxwaGEoY29uc3QgUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlcikKK3sKKyAgICByZXR1cm4gaW1hZ2VGb3JSZW5kZXJlcihyZW5kZXJlcikt
PmN1cnJlbnRGcmFtZUhhc0FscGhhKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCShyZXZpc2lvbiAx
MzU0MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAkod29y
a2luZyBjb3B5KQpAQCAtNTIsNiArNTIsNyBAQCBwdWJsaWM6CiAgICAgSW1hZ2UqIGltYWdlKCk7
IC8vIFJldHVybnMgdGhlIG51bGxJbWFnZSgpIGlmIHRoZSBpbWFnZSBpcyBub3QgYXZhaWxhYmxl
IHlldC4KICAgICBJbWFnZSogaW1hZ2VGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqKTsg
Ly8gUmV0dXJucyB0aGUgbnVsbEltYWdlKCkgaWYgdGhlIGltYWdlIGlzIG5vdCBhdmFpbGFibGUg
eWV0LgogICAgIGJvb2wgaGFzSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlLmdldCgpOyB9
CisgICAgYm9vbCBoYXNBbHBoYShjb25zdCBSZW5kZXJPYmplY3QqKTsKIAogICAgIHN0ZDo6cGFp
cjxJbWFnZSosIGZsb2F0PiBicm9rZW5JbWFnZShmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikgY29u
c3Q7IC8vIFJldHVybnMgYW4gaW1hZ2UgYW5kIHRoZSBpbWFnZSdzIHJlc29sdXRpb24gc2NhbGUg
ZmFjdG9yLgogICAgIGJvb2wgd2lsbFBhaW50QnJva2VuSW1hZ2UoKSBjb25zdDsgCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCShy
ZXZpc2lvbiAxMzU0MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRt
YXBJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyNiw3ICszMjYsNyBAQCBOYXRpdmVJbWFn
ZVB0ciBCaXRtYXBJbWFnZTo6bmF0aXZlSW1hZ2VGCiAKIGJvb2wgQml0bWFwSW1hZ2U6OmZyYW1l
SGFzQWxwaGFBdEluZGV4KHNpemVfdCBpbmRleCkKIHsKLSAgICBpZiAobV9mcmFtZXMuc2l6ZSgp
IDw9IGluZGV4KQorICAgIGlmICghZW5zdXJlRnJhbWVJc0NhY2hlZChpbmRleCkpCiAgICAgICAg
IHJldHVybiB0cnVlOwogCiAgICAgaWYgKG1fZnJhbWVzW2luZGV4XS5tX2hhdmVNZXRhZGF0YSkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCShyZXZpc2lvbiAxMzU0
MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTAwMSw3ICsxMDAxLDE0IEBAIHZvaWQgUmVuZGVyQm94OjpwYWludEZpbGxMYXll
cnMoY29uc3QgUGEKICAgICBpZiAoIWZpbGxMYXllcikKICAgICAgICAgcmV0dXJuOwogCi0gICAg
cGFpbnRGaWxsTGF5ZXJzKHBhaW50SW5mbywgYywgZmlsbExheWVyLT5uZXh0KCksIHJlY3QsIGJs
ZWVkQXZvaWRhbmNlLCBvcCwgYmFja2dyb3VuZE9iamVjdCk7CisgICAgLy8gRklYTUUgOiBJdCB3
b3VsZCBiZSBwb3NzaWJsZSBmb3IgdGhlIGZvbGxvd2luZyBvY2NsdXNpb24gY3VsbGluZyB0ZXN0
IHRvIGJlIG1vcmUgYWdncmVzc2l2ZSAKKyAgICAvLyBvbiBsYXllcnMgd2l0aCBubyByZXBlYXQg
YnkgdGVzdGluZyB3aGV0aGVyIHRoZSBpbWFnZSBjb3ZlcnMgdGhlIGxheW91dCByZWN0LgorICAg
IC8vIFRlc3RpbmcgdGhhdCBoZXJlIHdvdWxkIGltcGx5IGR1cGxpY2F0aW5nIGEgbG90IG9mIGNh
bGN1bGF0aW9ucyB0aGF0IGFyZSBjdXJyZW50bHkgZG9uZSBpbgorICAgIC8vIFJlbmRlckJveE1v
ZGVsT0JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkLiBBIG1vcmUgZWZmaWNpZW50IHNvbHV0
aW9uIG1pZ2h0IGJlIHRvIG1vdmUKKyAgICAvLyB0aGUgbGF5ZXIgcmVjdXJzaW9uIGludG8gcGFp
bnRGaWxsTGF5ZXJFeHRlbmRlZCwgb3IgdG8gY29tcHV0ZSB0aGUgbGF5ZXIgZ2VvbWV0cnkgaGVy
ZQorICAgIC8vIGFuZCBwYXNzIGl0IGRvd24uCisgICAgaWYgKGZpbGxMYXllci0+bmV4dCgpICYm
ICghZmlsbExheWVyLT5oYXNPcGFxdWVJbWFnZSh0aGlzKSB8fCAhZmlsbExheWVyLT5pbWFnZSgp
LT5jYW5SZW5kZXIodGhpcywgc3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpKSB8fCBmaWxsTGF5ZXIt
Pmhhc05vUmVwZWF0KCkpKQorICAgICAgICBwYWludEZpbGxMYXllcnMocGFpbnRJbmZvLCBjLCBm
aWxsTGF5ZXItPm5leHQoKSwgcmVjdCwgYmxlZWRBdm9pZGFuY2UsIG9wLCBiYWNrZ3JvdW5kT2Jq
ZWN0KTsKICAgICBwYWludEZpbGxMYXllcihwYWludEluZm8sIGMsIGZpbGxMYXllciwgcmVjdCwg
YmxlZWRBdm9pZGFuY2UsIG9wLCBiYWNrZ3JvdW5kT2JqZWN0KTsKIH0KIApJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCShyZXZp
c2lvbiAxMzU0MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxP
YmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MDcsOCArOTA3LDEwIEBAIHZvaWQgUmVuZGVy
Qm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWUKICAgICAgICAgdmlldygpLT5mcmFtZVZpZXco
KS0+c2V0Q29udGVudElzT3BhcXVlKGlzT3BhcXVlUm9vdCk7CiAgICAgfQogCi0gICAgLy8gUGFp
bnQgdGhlIGNvbG9yIGZpcnN0IHVuZGVybmVhdGggYWxsIGltYWdlcy4KLSAgICBpZiAoIWJnTGF5
ZXItPm5leHQoKSkgeworICAgIC8vIFBhaW50IHRoZSBjb2xvciBmaXJzdCB1bmRlcm5lYXRoIGFs
bCBpbWFnZXMsIGN1bGxlZCBpZiBiYWNrZ3JvdW5kIGltYWdlIG9jY2x1ZGVzIGl0LgorICAgIC8v
IEZJWE1FOiBJbiB0aGUgYmdMYXllci0+aGFzRmluaXRlQm91bmRzKCkgY2FzZSwgd2UgY291bGQg
aW1wcm92ZSB0aGUgY3VsbGluZyB0ZXN0CisgICAgLy8gYnkgdmVyaWZ5aW5nIHdoZXRoZXIgdGhl
IGJhY2tncm91bmQgaW1hZ2UgY292ZXJzIHRoZSBlbnRpcmUgbGF5b3V0IHJlY3QuCisgICAgaWYg
KCFiZ0xheWVyLT5uZXh0KCkgJiYgIShzaG91bGRQYWludEJhY2tncm91bmRJbWFnZSAmJiBiZ0xh
eWVyLT5oYXNPcGFxdWVJbWFnZSh0aGlzKSAmJiAhYmdMYXllci0+aGFzTm9SZXBlYXQoKSkpIHsK
ICAgICAgICAgSW50UmVjdCBiYWNrZ3JvdW5kUmVjdChwaXhlbFNuYXBwZWRJbnRSZWN0KHNjcm9s
bGVkUGFpbnRSZWN0KSk7CiAgICAgICAgIGJvb2wgYm94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9C
YWNrZ3JvdW5kID0gdGhpcy0+Ym94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5kKGJs
ZWVkQXZvaWRhbmNlLCBib3gpOwogICAgICAgICBpZiAoIWJveFNoYWRvd1Nob3VsZEJlQXBwbGll
ZFRvQmFja2dyb3VuZCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxs
TGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9G
aWxsTGF5ZXIuY3BwCShyZXZpc2lvbiAxMzU0MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvRmlsbExheWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgwLDQgKzI4MCwyMyBA
QCBib29sIEZpbGxMYXllcjo6aW1hZ2VzQXJlTG9hZGVkKCkgY29uc3QKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAorYm9vbCBGaWxsTGF5ZXI6Omhhc09wYXF1ZUltYWdlKGNvbnN0IFJlbmRlck9iamVj
dCogcmVuZGVyZXIpIGNvbnN0Cit7CisgICAgaWYgKCFtX2ltYWdlKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBpZiAobV9jb21wb3NpdGUgPT0gQ29tcG9zaXRlQ2xlYXIgfHwgbV9jb21w
b3NpdGUgPT0gQ29tcG9zaXRlQ29weSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAo
bV9jb21wb3NpdGUgPT0gQ29tcG9zaXRlU291cmNlT3ZlcikKKyAgICAgICAgcmV0dXJuICFtX2lt
YWdlLT5oYXNBbHBoYShyZW5kZXJlcik7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wg
RmlsbExheWVyOjpoYXNOb1JlcGVhdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcmVwZWF0WCA9
PSBOb1JlcGVhdEZpbGwgfHwgbV9yZXBlYXRZID09IE5vUmVwZWF0RmlsbDsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Zp
bGxMYXllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9G
aWxsTGF5ZXIuaAkocmV2aXNpb24gMTM1NDI1KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL0ZpbGxMYXllci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQsNiArMTQ0LDkgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gbV9uZXh0ID8gbV9uZXh0LT5oYXNGaXhlZEltYWdlKCkgOiBm
YWxzZTsKICAgICB9CiAKKyAgICBib29sIGhhc09wYXF1ZUltYWdlKGNvbnN0IFJlbmRlck9iamVj
dCopIGNvbnN0OworICAgIGJvb2wgaGFzTm9SZXBlYXQoKSBjb25zdDsKKwogICAgIEVGaWxsTGF5
ZXJUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFRmlsbExheWVyVHlwZT4o
bV90eXBlKTsgfQogCiAgICAgdm9pZCBmaWxsVW5zZXRQcm9wZXJ0aWVzKCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuY3Bw
CShyZXZpc2lvbiAxMzU0MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVDYWNoZWRJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNiw0ICsxMDYsOSBAQCBQYXNz
UmVmUHRyPEltYWdlPiBTdHlsZUNhY2hlZEltYWdlOjppbWFnCiAgICAgcmV0dXJuIG1faW1hZ2Ut
PmltYWdlRm9yUmVuZGVyZXIocmVuZGVyZXIpOwogfQogCitib29sIFN0eWxlQ2FjaGVkSW1hZ2U6
Omhhc0FscGhhKGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1faW1hZ2UtPmhhc0FscGhhKHJlbmRlcmVyKTsKK30KKwogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5oCShyZXZpc2lv
biAxMzU0MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJ
bWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw2ICs1Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgYWRkQ2xpZW50KFJlbmRlck9iamVjdCopOwogICAgIHZpcnR1YWwgdm9pZCByZW1v
dmVDbGllbnQoUmVuZGVyT2JqZWN0Kik7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEltYWdlPiBp
bWFnZShSZW5kZXJPYmplY3QqLCBjb25zdCBJbnRTaXplJikgY29uc3Q7CisgICAgdmlydHVhbCBi
b29sIGhhc0FscGhhKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0IE9WRVJSSURFOwogICAgIAog
cHJpdmF0ZToKICAgICBleHBsaWNpdCBTdHlsZUNhY2hlZEltYWdlKENhY2hlZEltYWdlKik7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZVNldC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2Fj
aGVkSW1hZ2VTZXQuY3BwCShyZXZpc2lvbiAxMzU0MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZVNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEx
Niw2ICsxMTYsMTEgQEAgUGFzc1JlZlB0cjxJbWFnZT4gU3R5bGVDYWNoZWRJbWFnZVNldDo6aQog
ICAgIHJldHVybiBtX2Jlc3RGaXRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihyZW5kZXJlcik7CiB9
CiAKK2Jvb2wgU3R5bGVDYWNoZWRJbWFnZVNldDo6aGFzQWxwaGEoY29uc3QgUmVuZGVyT2JqZWN0
KiByZW5kZXJlcikgY29uc3QKK3sKKyAgICByZXR1cm4gbV9iZXN0Rml0SW1hZ2UtPmhhc0FscGhh
KHJlbmRlcmVyKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5B
QkxFKENTU19JTUFHRV9TRVQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U3R5bGVDYWNoZWRJbWFnZVNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlU2V0LmgJKHJldmlzaW9uIDEzNTQyNSkKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlU2V0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTcxLDYgKzcxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZW1v
dmVDbGllbnQoUmVuZGVyT2JqZWN0Kik7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEltYWdlPiBp
bWFnZShSZW5kZXJPYmplY3QqLCBjb25zdCBJbnRTaXplJikgY29uc3Q7CiAgICAgdmlydHVhbCBm
bG9hdCBpbWFnZVNjYWxlRmFjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZVNjYWxlRmFjdG9y
OyB9CisgICAgdmlydHVhbCBib29sIGhhc0FscGhhKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0
IE9WRVJSSURFOwogICAgIAogcHJpdmF0ZToKICAgICBTdHlsZUNhY2hlZEltYWdlU2V0KENhY2hl
ZEltYWdlKiwgZmxvYXQgaW1hZ2VTY2FsZUZhY3RvciwgQ1NTSW1hZ2VTZXRWYWx1ZSopOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVy
YXRlZEltYWdlLmNwcAkocmV2aXNpb24gMTM1NDI1KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSw0
ICs4OSw5IEBAIFBhc3NSZWZQdHI8SW1hZ2U+IFN0eWxlR2VuZXJhdGVkSW1hZ2U6OmkKICAgICBy
ZXR1cm4gbV9pbWFnZUdlbmVyYXRvclZhbHVlLT5pbWFnZShyZW5kZXJlciwgc2l6ZSk7CiB9CiAK
K2Jvb2wgU3R5bGVHZW5lcmF0ZWRJbWFnZTo6aGFzQWxwaGEoY29uc3QgUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlcikgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbWFnZUdlbmVyYXRvclZhbHVlLT5oYXNB
bHBoYShyZW5kZXJlcik7Cit9CisKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuaAkocmV2aXNpb24gMTM1NDI1KQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuaAko
d29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGFkZENsaWVudChSZW5kZXJPYmplY3QqKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQ2xpZW50
KFJlbmRlck9iamVjdCopOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJbWFnZT4gaW1hZ2UoUmVu
ZGVyT2JqZWN0KiwgY29uc3QgSW50U2l6ZSYpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBoYXNB
bHBoYShjb25zdCBSZW5kZXJPYmplY3QqKSBjb25zdCBPVkVSUklERTsKICAgICAKIHByaXZhdGU6
CiAgICAgU3R5bGVHZW5lcmF0ZWRJbWFnZShQYXNzUmVmUHRyPENTU0ltYWdlR2VuZXJhdG9yVmFs
dWU+KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUltYWdlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlSW1hZ2Uu
aAkocmV2aXNpb24gMTM1NDI1KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0
eWxlSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNjQsNiArNjQsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBQYXNzUmVmUHRyPEltYWdlPiBpbWFnZShSZW5kZXJPYmplY3QqLCBjb25zdCBJbnRT
aXplJikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgV3JhcHBlZEltYWdlUHRyIGRhdGEoKSBjb25z
dCA9IDA7CiAgICAgdmlydHVhbCBmbG9hdCBpbWFnZVNjYWxlRmFjdG9yKCkgY29uc3QgeyByZXR1
cm4gMTsgfQorICAgIHZpcnR1YWwgYm9vbCBoYXNBbHBoYShjb25zdCBSZW5kZXJPYmplY3QqKSBj
b25zdCA9IDA7CiAKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNDYWNoZWRJbWFnZSgpIGNvbnN0
IHsgcmV0dXJuIG1faXNDYWNoZWRJbWFnZTsgfQogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc1Bl
bmRpbmdJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNQZW5kaW5nSW1hZ2U7IH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVBlbmRpbmdJbWFnZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVBlbmRpbmdJbWFnZS5o
CShyZXZpc2lvbiAxMzU0MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVQZW5kaW5nSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNjYsNiArNjYsNyBAQCBwdWJsaWM6
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9
CisgICAgdmlydHVhbCBib29sIGhhc0FscGhhKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0IHsg
cmV0dXJuIHRydWU7IH0KICAgICAKIHByaXZhdGU6CiAgICAgU3R5bGVQZW5kaW5nSW1hZ2UoQ1NT
VmFsdWUqIHZhbHVlKQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTM1NDI3KQorKysgTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMTEtMjEgIEp1
c3RpbiBOb3Zvc2FkICA8anVub3ZAZ29vZ2xlLmNvbT4KKworICAgICAgICBBZGRpbmcgb2NjbHVz
aW9uIGRldGVjdGlvbiB0byByZWR1Y2Ugb3ZlcmRyYXcgaW4gUmVuZGVyQm94IGJhY2tncm91bmQg
cmVuZGVyaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDI1NTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBOZXcgdGVzdCBleGVyY2lzZXMgZGlmZmVyZW50IENTUyBiYWNrZ3JvdW5kIHN0eWxlIHVzZSBj
YXNlcyB0aGF0CisgICAgICAgIGFyZSBjYW5kaWRhdGVzIGZvciBvcHRpbWl6YXRpb24gYnkgb2Nj
bHVzaW9uIGN1bGxpbmcuCisKKyAgICAgICAgKiBmYXN0L2JhY2tncm91bmRzL2JhY2tncm91bmQt
b3BhcXVlLWltYWdlcy1vdmVyLWNvbG9yLmh0bWw6IEFkZGVkLgorCiAyMDEyLTExLTIxICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVtb3ZlIElEQkRhdGFi
YXNlRXhjZXB0aW9uCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2JhY2tncm91bmRzL2JhY2tncm91
bmQtb3BhcXVlLWltYWdlcy1vdmVyLWNvbG9yLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9iYWNrZ3JvdW5kcy9iYWNrZ3JvdW5kLW9wYXF1ZS1pbWFnZXMtb3Zlci1jb2xvci5o
dG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9iYWNrZ3JvdW5kcy9iYWNrZ3Jv
dW5kLW9wYXF1ZS1pbWFnZXMtb3Zlci1jb2xvci5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDM3IEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8IS0tIFRlc3QgcGFzc2Vz
IHdoZW4gYSBncmVlbiByZWN0YW5nbGUgaXMgZGlzcGxheWVkLgorVGhlc2UgYXJlIGFsbCBkcmF3
aW5nIGNhc2VzIHRoYXQgY2FuIGJlIG9wdGltaXplZCBieSBvY2NsdXNpb24gY3VsbGluZworVGhl
IGZpeCBmb3IgYnVnIDEwMjU1NyBvcHRpbWl6ZXMgY2FzZXMgMSwgMiwgMywgNiwgNywgYW5kIDgt
LT4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiI+CisgICAgLnJlZEJhY2sg
eworICAgICAgICB3aWR0aDoyMHB4OworICAgICAgICBoZWlnaHQ6MTAwcHg7CisgICAgICAgIGRp
c3BsYXk6YmxvY2s7CisgICAgICAgIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQ7CisgICAgICAg
IGJhY2tncm91bmQtY29sb3I6IHJlZDsKKyAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjowcHgg
MHB4LCAwcHggMHB4OworICAgICAgICBmbG9hdDogbGVmdDsKKyAgICB9Cis8L3N0eWxlPgorPHNj
cmlwdD4KKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCh0cnVlKTsKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2PgorICAgIDxk
aXYgaWQ9ImNhc2VfMSIgY2xhc3M9InJlZEJhY2siIHN0eWxlPSJiYWNrZ3JvdW5kLWltYWdlOiB1
cmwoLi4vLi4vaHR0cC90ZXN0cy9tdWx0aXBhcnQvcmVzb3VyY2VzL2dyZWVuLTEwMHgxMDAucG5n
KSI+PC9kaXY+CisgICAgPGRpdiBpZD0iY2FzZV8yIiBjbGFzcz0icmVkQmFjayIgc3R5bGU9ImJh
Y2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwgZ3JlZW4sIGdyZWVu
KSI+PC9kaXY+CisgICAgPGRpdiBpZD0iY2FzZV8zIiBjbGFzcz0icmVkQmFjayIgc3R5bGU9ImJh
Y2tncm91bmQtaW1hZ2U6IC13ZWJraXQtY3Jvc3MtZmFkZSh1cmwoLi4vLi4vaHR0cC90ZXN0cy9t
dWx0aXBhcnQvcmVzb3VyY2VzL2dyZWVuLTEwMHgxMDAucG5nKSwgdXJsKC4uLy4uL2h0dHAvdGVz
dHMvbXVsdGlwYXJ0L3Jlc291cmNlcy9ncmVlbi0xMDB4MTAwLnBuZyksIDUwJSkiPjwvZGl2Pgor
ICAgIDxkaXYgaWQ9ImNhc2VfNCIgY2xhc3M9InJlZEJhY2siIHN0eWxlPSJiYWNrZ3JvdW5kLXJl
cGVhdDogbm8tcmVwZWF0OyBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vLi4vaHR0cC90ZXN0cy9t
dWx0aXBhcnQvcmVzb3VyY2VzL2dyZWVuLTEwMHgxMDAucG5nKSI+PC9kaXY+CisgICAgPGRpdiBp
ZD0iY2FzZV81IiBjbGFzcz0icmVkQmFjayIgc3R5bGU9ImJhY2tncm91bmQtcmVwZWF0OiByZXBl
YXQteDsgYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uLy4uL2h0dHAvdGVzdHMvbXVsdGlwYXJ0L3Jl
c291cmNlcy9ncmVlbi0xMDB4MTAwLnBuZykiPjwvZGl2PgorICAgIDxkaXYgaWQ9ImNhc2VfNiIg
Y2xhc3M9InJlZEJhY2siIHN0eWxlPSJiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vLi4vaHR0cC90
ZXN0cy9tdWx0aXBhcnQvcmVzb3VyY2VzL2dyZWVuLTEwMHgxMDAucG5nKSx1cmwocmVzb3VyY2Vz
LzY0eDMyLXJlZC5wbmcpIj48L2Rpdj4KKyAgICA8ZGl2IGlkPSJjYXNlXzciIGNsYXNzPSJyZWRC
YWNrIiBzdHlsZT0iYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9w
LCBncmVlbiwgZ3JlZW4pLHVybChyZXNvdXJjZXMvNjR4MzItcmVkLnBuZykiPjwvZGl2PgorICAg
IDxkaXYgaWQ9ImNhc2VfOCIgY2xhc3M9InJlZEJhY2siIHN0eWxlPSJiYWNrZ3JvdW5kLWltYWdl
OiAtd2Via2l0LWNyb3NzLWZhZGUodXJsKC4uLy4uL2h0dHAvdGVzdHMvbXVsdGlwYXJ0L3Jlc291
cmNlcy9ncmVlbi0xMDB4MTAwLnBuZyksdXJsKC4uLy4uL2h0dHAvdGVzdHMvbXVsdGlwYXJ0L3Jl
c291cmNlcy9ncmVlbi0xMDB4MTAwLnBuZyksIDUwJSksdXJsKHJlc291cmNlcy82NHgzMi1yZWQu
cG5nKSI+PC9kaXY+CisgICAgPGRpdiBpZD0iY2FzZV85IiBjbGFzcz0icmVkQmFjayIgc3R5bGU9
ImJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7IGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi8u
Li9odHRwL3Rlc3RzL211bHRpcGFydC9yZXNvdXJjZXMvZ3JlZW4tMTAweDEwMC5wbmcpLHVybChy
ZXNvdXJjZXMvNjR4MzItcmVkLnBuZykiPjwvZGl2PgorICAgIDxkaXYgaWQ9ImNhc2VfMTAiIGNs
YXNzPSJyZWRCYWNrIiBzdHlsZT0iYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14OyBiYWNrZ3Jv
dW5kLWltYWdlOiB1cmwoLi4vLi4vaHR0cC90ZXN0cy9tdWx0aXBhcnQvcmVzb3VyY2VzL2dyZWVu
LTEwMHgxMDAucG5nKSx1cmwocmVzb3VyY2VzLzY0eDMyLXJlZC5wbmcpIj48L2Rpdj4KKzwvZGl2
PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
VGVzdEV4cGVjdGF0aW9ucwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9UZXN0RXhwZWN0YXRpb25zCShyZXZpc2lvbiAxMzU0MjUpCisrKyBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYw
LDYgKzEyNjAsOSBAQCB3ZWJraXQub3JnL2IvMjU4MTcgc3ZnL2RvbS9TVkdTY3JpcHRFbGVtCiAK
IHdlYmtpdC5vcmcvYi82MDExOCBbIE1hYyBdIHN2Zy9kb20vU1ZHU2NyaXB0RWxlbWVudC9zY3Jp
cHQtc2V0LWhyZWYuc3ZnIFsgRmFpbHVyZSBQYXNzIF0KIAorIyBOZXcgdGVzdCBpbiBuZWVkIG9m
IG5ldyBiYXNlbGluZXMKK3dlYmtpdC5vcmcvYi8xMDI1NTcgZmFzdC9iYWNrZ3JvdW5kcy9iYWNr
Z3JvdW5kLW9wYXF1ZS1pbWFnZXMtb3Zlci1jb2xvci5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWls
dXJlIEZhaWx1cmUgTWlzc2luZyBdCisKICMgSW50cm9kdWNlZCBkdWUgdG8gQlVHV0s1MzUxMiwg
ZmFpbHMgdW5kZXIgU2tpYSByaWdodCBub3cKIHdlYmtpdC5vcmcvYi82NTkzOSBzdmcvY3VzdG9t
L2dldEJCb3gtcGF0aC5zdmcgWyBGYWlsdXJlIF0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175684</attachid>
            <date>2012-11-22 08:55:45 -0800</date>
            <delta_ts>2012-11-22 10:52:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102557-20121122115330.patch</filename>
            <type>text/plain</type>
            <size>25273</size>
            <attacher name="Justin Novosad">junov</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNTUyNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg2IEBACisyMDEyLTExLTIxICBKdXN0aW4g
Tm92b3NhZCAgPGp1bm92QGdvb2dsZS5jb20+CisKKyAgICAgICAgQWRkaW5nIG9jY2x1c2lvbiBk
ZXRlY3Rpb24gdG8gcmVkdWNlIG92ZXJkcmF3IGluIFJlbmRlckJveCBiYWNrZ3JvdW5kIHJlbmRl
cmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAy
NTU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
aW5nIGhhc0FscGhhIG1ldGhvZCB0byBhbGwgY2xhc3NlcyBkZXJ2aXZlZCBmcm9tIENTU0ltYWdl
VmFsdWUgYW5kCisgICAgICAgIFN0eWxlSW1hZ2UsIGluIG9yZGVyIHRvIHN1cHBvcnQgb2NjbHVz
aW9uIHRlc3RpbmcuIAorICAgICAgICBUaGlzIGFsbG93cyB0aGUgRmlsbExheWVyIHJlY3Vyc2lv
biB0byBzdG9wIGVhcmx5IHdoZW4gYW4gb3BhcXVlIGxheWVyCisgICAgICAgIGlzIGVuY291bnRl
cmVkIHdoaWxlIGFwcGx5aW5nIGEgQ1NTIGJhY2tncm91bmQgc3R5bGUuIFRoaXMgYWxzbyBhbGxv
d3MKKyAgICAgICAgdGhlIGVsaW1pbmF0aW9uIG9mIGJhY2tncm91bmQgY29sb3IgYXBwbGljYXRp
b24gd2hlbiB0aGUgYmFja2dyb3VuZCBpcworICAgICAgICBjb21wbGV0ZWx5IGNvdmVyZWQgYnkg
YW4gaW1hZ2UuICBUaGUgb3B0aW1pemF0aW9uIGFsc28gc2tpcHMgdGhlCisgICAgICAgIGNsZWFy
aW5nIG9mIHRoZSBwYWdlJ3Mgcm9vdCBlbGVtZW50IHdoZW4gdGhlIHBhZ2UgYmFja2dyb3VuZCBp
cworICAgICAgICBlbnRpcmVseSBjb3ZlcmVkIGJ5IGFuIGltYWdlIChlLmcgYSB0aWxlZCBiaXRt
YXAgb3IgYSBncmFkaWVudCkKKworICAgICAgICBUZXN0OiBmYXN0L2JhY2tncm91bmRzL2JhY2tn
cm91bmQtb3BhcXVlLWltYWdlcy1vdmVyLWNvbG9yLmh0bWwKKworICAgICAgICAqIGNzcy9DU1ND
cm9zc2ZhZGVWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdWJpbWFnZUhhc0FscGhhKToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ3Jvc3NmYWRlVmFsdWU6
OmlzUGVuZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NDcm9zc2ZhZGVWYWx1ZTo6aGFzQWxw
aGEpOgorICAgICAgICAqIGNzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5oOgorICAgICAgICAoQ1NTQ3Jv
c3NmYWRlVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NHcmFkaWVudFZhbHVlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0dyYWRpZW50VmFsdWU6Omhhc0FscGhhKToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAqIGNzcy9DU1NHcmFkaWVudFZhbHVlLmg6CisgICAgICAgIChDU1NHcmFk
aWVudFZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpoYXNBbHBoYSk6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5oOgor
ICAgICAgICAoQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU0ltYWdl
VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTSW1hZ2VWYWx1ZTo6aGFzQWxwaGEpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogY3NzL0NTU0ltYWdlVmFsdWUuaDoKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoQ1NTSW1hZ2VWYWx1ZSk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpo
YXNBbHBoYSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2UuaDoKKyAgICAgICAgKENhY2hlZEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6
ZnJhbWVIYXNBbHBoYUF0SW5kZXgpOgorICAgICAgICBUaGlzIG1ldGhvZCB3aWxsIG5vdyBwdWxs
IHRoZSBxdWVyaWVkIGZyYW1lIGludG8gY2FjaGUgdXBvbiB0ZXN0aW5nCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnBhaW50
RmlsbExheWVycyk6CisgICAgICAgIEFkZGVkIGxheWVyIHJlY3Vyc2lvbiBlYXJseSBleGl0IHdo
ZW4gYW4gb3BhcXVlIGxheWVyIGlzIGVuY291bnRlcmVkLgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZCk6CisgICAgICAgIEVsaW1pbmF0ZWQgYmFj
a2dyb3VuZCBjb2xvciBmaWxsIHdoZW4gdGhlIGxheWVyIGNvbnRhaW5zIGFuIG9wYXF1ZQorICAg
ICAgICBpbWFnZSB0aGF0IGNvdmVycyB0aGUgZW50aXJlIFJlbmRlckJveC4KKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGxMYXll
cjo6aGFzT3BhcXVlSW1hZ2UpOgorICAgICAgICBSZXR1cm5zIHRydWUgaWYgdGhlIGxheWVyJ3Mg
aW1hZ2UgaXMga25vd24gdG8gYmUgZnVsbHkgb3BhcXVlLgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWxsTGF5ZXI6Omhhc05vUmVwZWF0KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3R5bGUvRmlsbExheWVyLmg6CisgICAgICAgIChGaWxsTGF5ZXIpOgorICAgICAgICAq
IHJlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlQ2FjaGVkSW1hZ2U6Omhhc0FscGhhKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlLmg6CisgICAgICAgIChTdHlsZUNh
Y2hlZEltYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZVNl
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUNhY2hlZEltYWdlU2V0OjpoYXNBbHBoYSk6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNo
ZWRJbWFnZVNldC5oOgorICAgICAgICAoU3R5bGVDYWNoZWRJbWFnZVNldCk6CisgICAgICAgICog
cmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGVHZW5lcmF0ZWRJbWFnZTo6aGFzQWxwaGEpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuaDoKKyAgICAgICAg
KFN0eWxlR2VuZXJhdGVkSW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUlt
YWdlLmg6CisgICAgICAgIChTdHlsZUltYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
U3R5bGVQZW5kaW5nSW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUGVuZGluZ0ltYWdl
OjpoYXNBbHBoYSk6CisKIDIwMTItMTEtMjIgIEV1Z2VuZSBLbHl1Y2huaWtvdiAgPGV1c3Rhcy5i
dWdAZ21haWwuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFRpbWVsaW5lOiBEaXNjbG9z
dXJlIGFycm93cyByZW5kZXJlZCB1bmRlcm5lYXRoIGZyYW1lIGJvdW5kYXJpZXMKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmNwcAkocmV2aXNpb24gMTM1NTI2KQor
KysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTIsNiArNTIsMTkgQEAgc3RhdGljIGJvb2wgc3ViaW1hZ2VJc1BlbmRpbmcoQ1NTVmFs
dWUqCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitzdGF0aWMgYm9vbCBzdWJpbWFnZUhhc0FscGhh
KENTU1ZhbHVlKiB2YWx1ZSwgY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKK3sKKyAgICBp
ZiAodmFsdWUtPmlzSW1hZ2VWYWx1ZSgpKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q1NT
SW1hZ2VWYWx1ZSo+KHZhbHVlKS0+aGFzQWxwaGEocmVuZGVyZXIpOworCisgICAgaWYgKHZhbHVl
LT5pc0ltYWdlR2VuZXJhdG9yVmFsdWUoKSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PENT
U0ltYWdlR2VuZXJhdG9yVmFsdWUqPih2YWx1ZSktPmhhc0FscGhhKHJlbmRlcmVyKTsKKworICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKIHN0YXRpYyBD
YWNoZWRJbWFnZSogY2FjaGVkSW1hZ2VGb3JDU1NWYWx1ZShDU1NWYWx1ZSogdmFsdWUsIENhY2hl
ZFJlc291cmNlTG9hZGVyKiBjYWNoZWRSZXNvdXJjZUxvYWRlcikKIHsKICAgICBpZiAoIXZhbHVl
KQpAQCAtMTI2LDYgKzEzOSwxMSBAQCBib29sIENTU0Nyb3NzZmFkZVZhbHVlOjppc1BlbmRpbmco
KSBjb25zCiAgICAgcmV0dXJuIHN1YmltYWdlSXNQZW5kaW5nKG1fZnJvbVZhbHVlLmdldCgpKSB8
fCBzdWJpbWFnZUlzUGVuZGluZyhtX3RvVmFsdWUuZ2V0KCkpOwogfQogCitib29sIENTU0Nyb3Nz
ZmFkZVZhbHVlOjpoYXNBbHBoYShjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKSBjb25zdAor
eworICAgIHJldHVybiBzdWJpbWFnZUhhc0FscGhhKG1fZnJvbVZhbHVlLmdldCgpLCByZW5kZXJl
cikgfHwgc3ViaW1hZ2VIYXNBbHBoYShtX3RvVmFsdWUuZ2V0KCksIHJlbmRlcmVyKTsKK30KKwog
dm9pZCBDU1NDcm9zc2ZhZGVWYWx1ZTo6bG9hZFN1YmltYWdlcyhDYWNoZWRSZXNvdXJjZUxvYWRl
ciogY2FjaGVkUmVzb3VyY2VMb2FkZXIpCiB7CiAgICAgbV9jYWNoZWRGcm9tSW1hZ2UgPSBjYWNo
ZWRJbWFnZUZvckNTU1ZhbHVlKG1fZnJvbVZhbHVlLmdldCgpLCBjYWNoZWRSZXNvdXJjZUxvYWRl
cik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuaAkocmV2aXNpb24g
MTM1NTI2KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTU4LDYgKzU4LDggQEAgcHVibGljOgogICAgIEludFNpemUgZml4ZWRTaXpl
KGNvbnN0IFJlbmRlck9iamVjdCopOwogCiAgICAgYm9vbCBpc1BlbmRpbmcoKSBjb25zdDsKKyAg
ICBib29sIGhhc0FscGhhKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0OworCiAgICAgdm9pZCBs
b2FkU3ViaW1hZ2VzKENhY2hlZFJlc291cmNlTG9hZGVyKik7CiAKICAgICB2b2lkIHNldFBlcmNl
bnRhZ2UoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcGVyY2VudGFnZVZhbHVlKSB7IG1f
cGVyY2VudGFnZVZhbHVlID0gcGVyY2VudGFnZVZhbHVlOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwCShyZXZpc2lvbiAxMzU1MjYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2Miw2ICs0
NjIsMTUgQEAgYm9vbCBDU1NHcmFkaWVudFZhbHVlOjppc0NhY2hlYWJsZSgpIGNvbgogICAgIHJl
dHVybiB0cnVlOwogfQogCitib29sIENTU0dyYWRpZW50VmFsdWU6Omhhc0FscGhhKGNvbnN0IFJl
bmRlck9iamVjdCopIGNvbnN0Cit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3N0b3Bz
LnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChtX3N0b3BzW2ldLm1fcmVzb2x2ZWRDb2xvci5o
YXNBbHBoYSgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBm
YWxzZTsKK30KKwogdm9pZCBDU1NHcmFkaWVudFZhbHVlOjpyZXBvcnRCYXNlQ2xhc3NNZW1vcnlV
c2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewogICAgIE1l
bW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlU
eXBlczo6Q1NTKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuaAkocmV2
aXNpb24gMTM1NTI2KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuaAko
d29ya2luZyBjb3B5KQpAQCAtNzQsNiArNzQsOCBAQCBwdWJsaWM6CiAgICAgSW50U2l6ZSBmaXhl
ZFNpemUoY29uc3QgUmVuZGVyT2JqZWN0KikgY29uc3QgeyByZXR1cm4gSW50U2l6ZSgpOyB9CiAK
ICAgICBib29sIGlzUGVuZGluZygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBo
YXNBbHBoYShjb25zdCBSZW5kZXJPYmplY3QqKSBjb25zdDsKKwogICAgIHZvaWQgbG9hZFN1Ymlt
YWdlcyhDYWNoZWRSZXNvdXJjZUxvYWRlciopIHsgfQogICAgIFBhc3NSZWZQdHI8Q1NTR3JhZGll
bnRWYWx1ZT4gZ3JhZGllbnRXaXRoU3R5bGVzUmVzb2x2ZWQoU3R5bGVSZXNvbHZlciopOwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwCShy
ZXZpc2lvbiAxMzU1MjYpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JW
YWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5Niw2ICsxOTYsMjMgQEAgYm9vbCBDU1NJbWFn
ZUdlbmVyYXRvclZhbHVlOjppc1BlbmRpbmcoKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9v
bCBDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpoYXNBbHBoYShjb25zdCBSZW5kZXJPYmplY3QqIHJl
bmRlcmVyKSBjb25zdAoreworICAgIHN3aXRjaCAoY2xhc3NUeXBlKCkpIHsKKyAgICBjYXNlIENy
b3NzZmFkZUNsYXNzOgorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ1NTQ3Jvc3Nm
YWRlVmFsdWUqPih0aGlzKS0+aGFzQWxwaGEocmVuZGVyZXIpOworICAgIGNhc2UgQ2FudmFzQ2xh
c3M6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGNhc2UgTGluZWFyR3JhZGllbnRDbGFzczoK
KyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IENTU0xpbmVhckdyYWRpZW50VmFsdWUq
Pih0aGlzKS0+aGFzQWxwaGEocmVuZGVyZXIpOworICAgIGNhc2UgUmFkaWFsR3JhZGllbnRDbGFz
czoKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IENTU1JhZGlhbEdyYWRpZW50VmFs
dWUqPih0aGlzKS0+aGFzQWxwaGEocmVuZGVyZXIpOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBD
U1NJbWFnZUdlbmVyYXRvclZhbHVlOjpsb2FkU3ViaW1hZ2VzKENhY2hlZFJlc291cmNlTG9hZGVy
KiBjYWNoZWRSZXNvdXJjZUxvYWRlcikKIHsKICAgICBzd2l0Y2ggKGNsYXNzVHlwZSgpKSB7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmgJKHJldmlz
aW9uIDEzNTUyNikKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDYgKzYzLDcgQEAgcHVibGljOgogICAgIEludFNpemUg
Zml4ZWRTaXplKGNvbnN0IFJlbmRlck9iamVjdCopOwogCiAgICAgYm9vbCBpc1BlbmRpbmcoKSBj
b25zdDsKKyAgICBib29sIGhhc0FscGhhKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0OwogCiAg
ICAgdm9pZCBsb2FkU3ViaW1hZ2VzKENhY2hlZFJlc291cmNlTG9hZGVyKik7CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAJKHJldmlzaW9uIDEzNTUyNikKKysrIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQwLDQg
KzE0MCw5IEBAIHZvaWQgQ1NTSW1hZ2VWYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW8KICAgICAv
LyBObyBuZWVkIHRvIHJlcG9ydCBtX2ltYWdlIGFzIGl0IGlzIGNvdW50ZWQgYXMgcGFydCBvZiBS
ZW5kZXJBcmVuYS4KIH0KIAorYm9vbCBDU1NJbWFnZVZhbHVlOjpoYXNBbHBoYShjb25zdCBSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyKSBjb25zdAoreworICAgIHJldHVybiBtX2ltYWdlID8gbV9pbWFn
ZS0+aGFzQWxwaGEocmVuZGVyZXIpIDogdHJ1ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5oCShyZXZpc2lvbiAxMzU1MjYpCisr
KyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
MCw2ICszMCw3IEBAIGNsYXNzIENhY2hlZFJlc291cmNlTG9hZGVyOwogY2xhc3MgRWxlbWVudDsK
IGNsYXNzIFN0eWxlQ2FjaGVkSW1hZ2U7CiBjbGFzcyBTdHlsZUltYWdlOworY2xhc3MgUmVuZGVy
T2JqZWN0OwogCiBjbGFzcyBDU1NJbWFnZVZhbHVlIDogcHVibGljIENTU1ZhbHVlIHsKIHB1Ymxp
YzoKQEAgLTUxLDYgKzUyLDggQEAgcHVibGljOgogCiAgICAgdm9pZCByZXBvcnREZXNjZW5kYW50
TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCisgICAgYm9vbCBoYXNBbHBo
YShjb25zdCBSZW5kZXJPYmplY3QqKSBjb25zdDsKKwogcHJvdGVjdGVkOgogICAgIENTU0ltYWdl
VmFsdWUoQ2xhc3NUeXBlLCBjb25zdCBTdHJpbmcmIHVybCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAkocmV2aXNpb24gMTM1NTI2KQorKysg
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDc1LDQgKzQ3NSw5IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OnJlcG9ydE1lbW9yeVVzYWdl
KE1lbW8KICNlbmRpZgogfQogCitib29sIENhY2hlZEltYWdlOjpoYXNBbHBoYShjb25zdCBSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyKQoreworICAgIHJldHVybiBpbWFnZUZvclJlbmRlcmVyKHJlbmRl
cmVyKS0+Y3VycmVudEZyYW1lSGFzQWxwaGEoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgJKHJldmlz
aW9uIDEzNTUyNikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw3IEBAIHB1YmxpYzoKICAgICBJbWFnZSogaW1h
Z2UoKTsgLy8gUmV0dXJucyB0aGUgbnVsbEltYWdlKCkgaWYgdGhlIGltYWdlIGlzIG5vdCBhdmFp
bGFibGUgeWV0LgogICAgIEltYWdlKiBpbWFnZUZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVj
dCopOyAvLyBSZXR1cm5zIHRoZSBudWxsSW1hZ2UoKSBpZiB0aGUgaW1hZ2UgaXMgbm90IGF2YWls
YWJsZSB5ZXQuCiAgICAgYm9vbCBoYXNJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2UuZ2V0
KCk7IH0KKyAgICBib29sIGhhc0FscGhhKGNvbnN0IFJlbmRlck9iamVjdCopOwogCiAgICAgc3Rk
OjpwYWlyPEltYWdlKiwgZmxvYXQ+IGJyb2tlbkltYWdlKGZsb2F0IGRldmljZVNjYWxlRmFjdG9y
KSBjb25zdDsgLy8gUmV0dXJucyBhbiBpbWFnZSBhbmQgdGhlIGltYWdlJ3MgcmVzb2x1dGlvbiBz
Y2FsZSBmYWN0b3IuCiAgICAgYm9vbCB3aWxsUGFpbnRCcm9rZW5JbWFnZSgpIGNvbnN0OyAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5j
cHAJKHJldmlzaW9uIDEzNTUyNikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0JpdG1hcEltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzI2LDcgKzMyNiw3IEBAIE5hdGl2
ZUltYWdlUHRyIEJpdG1hcEltYWdlOjpuYXRpdmVJbWFnZUYKIAogYm9vbCBCaXRtYXBJbWFnZTo6
ZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90IGluZGV4KQogewotICAgIGlmIChtX2ZyYW1lcy5z
aXplKCkgPD0gaW5kZXgpCisgICAgaWYgKCFlbnN1cmVGcmFtZUlzQ2FjaGVkKGluZGV4KSkKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBpZiAobV9mcmFtZXNbaW5kZXhdLm1faGF2ZU1ldGFk
YXRhKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAJKHJldmlzaW9u
IDEzNTUyNikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDAxLDcgKzEwMDEsMTQgQEAgdm9pZCBSZW5kZXJCb3g6OnBhaW50Rmls
bExheWVycyhjb25zdCBQYQogICAgIGlmICghZmlsbExheWVyKQogICAgICAgICByZXR1cm47CiAK
LSAgICBwYWludEZpbGxMYXllcnMocGFpbnRJbmZvLCBjLCBmaWxsTGF5ZXItPm5leHQoKSwgcmVj
dCwgYmxlZWRBdm9pZGFuY2UsIG9wLCBiYWNrZ3JvdW5kT2JqZWN0KTsKKyAgICAvLyBGSVhNRSA6
IEl0IHdvdWxkIGJlIHBvc3NpYmxlIGZvciB0aGUgZm9sbG93aW5nIG9jY2x1c2lvbiBjdWxsaW5n
IHRlc3QgdG8gYmUgbW9yZSBhZ2dyZXNzaXZlIAorICAgIC8vIG9uIGxheWVycyB3aXRoIG5vIHJl
cGVhdCBieSB0ZXN0aW5nIHdoZXRoZXIgdGhlIGltYWdlIGNvdmVycyB0aGUgbGF5b3V0IHJlY3Qu
CisgICAgLy8gVGVzdGluZyB0aGF0IGhlcmUgd291bGQgaW1wbHkgZHVwbGljYXRpbmcgYSBsb3Qg
b2YgY2FsY3VsYXRpb25zIHRoYXQgYXJlIGN1cnJlbnRseSBkb25lIGluCisgICAgLy8gUmVuZGVy
Qm94TW9kZWxPQmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQuIEEgbW9yZSBlZmZpY2llbnQg
c29sdXRpb24gbWlnaHQgYmUgdG8gbW92ZQorICAgIC8vIHRoZSBsYXllciByZWN1cnNpb24gaW50
byBwYWludEZpbGxMYXllckV4dGVuZGVkLCBvciB0byBjb21wdXRlIHRoZSBsYXllciBnZW9tZXRy
eSBoZXJlCisgICAgLy8gYW5kIHBhc3MgaXQgZG93bi4KKyAgICBpZiAoZmlsbExheWVyLT5uZXh0
KCkgJiYgKCFmaWxsTGF5ZXItPmhhc09wYXF1ZUltYWdlKHRoaXMpIHx8ICFmaWxsTGF5ZXItPmlt
YWdlKCktPmNhblJlbmRlcih0aGlzLCBzdHlsZSgpLT5lZmZlY3RpdmVab29tKCkpIHx8ICFmaWxs
TGF5ZXItPmhhc1JlcGVhdFhZKCkpKQorICAgICAgICBwYWludEZpbGxMYXllcnMocGFpbnRJbmZv
LCBjLCBmaWxsTGF5ZXItPm5leHQoKSwgcmVjdCwgYmxlZWRBdm9pZGFuY2UsIG9wLCBiYWNrZ3Jv
dW5kT2JqZWN0KTsKICAgICBwYWludEZpbGxMYXllcihwYWludEluZm8sIGMsIGZpbGxMYXllciwg
cmVjdCwgYmxlZWRBdm9pZGFuY2UsIG9wLCBiYWNrZ3JvdW5kT2JqZWN0KTsKIH0KIApJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3Bw
CShyZXZpc2lvbiAxMzU1MjYpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
TW9kZWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MDcsOCArOTA3LDEwIEBAIHZvaWQg
UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWUKICAgICAgICAgdmlldygpLT5mcmFt
ZVZpZXcoKS0+c2V0Q29udGVudElzT3BhcXVlKGlzT3BhcXVlUm9vdCk7CiAgICAgfQogCi0gICAg
Ly8gUGFpbnQgdGhlIGNvbG9yIGZpcnN0IHVuZGVybmVhdGggYWxsIGltYWdlcy4KLSAgICBpZiAo
IWJnTGF5ZXItPm5leHQoKSkgeworICAgIC8vIFBhaW50IHRoZSBjb2xvciBmaXJzdCB1bmRlcm5l
YXRoIGFsbCBpbWFnZXMsIGN1bGxlZCBpZiBiYWNrZ3JvdW5kIGltYWdlIG9jY2x1ZGVzIGl0Lgor
ICAgIC8vIEZJWE1FOiBJbiB0aGUgYmdMYXllci0+aGFzRmluaXRlQm91bmRzKCkgY2FzZSwgd2Ug
Y291bGQgaW1wcm92ZSB0aGUgY3VsbGluZyB0ZXN0CisgICAgLy8gYnkgdmVyaWZ5aW5nIHdoZXRo
ZXIgdGhlIGJhY2tncm91bmQgaW1hZ2UgY292ZXJzIHRoZSBlbnRpcmUgbGF5b3V0IHJlY3QuCisg
ICAgaWYgKCFiZ0xheWVyLT5uZXh0KCkgJiYgIShzaG91bGRQYWludEJhY2tncm91bmRJbWFnZSAm
JiBiZ0xheWVyLT5oYXNPcGFxdWVJbWFnZSh0aGlzKSAmJiBiZ0xheWVyLT5oYXNSZXBlYXRYWSgp
KSkgewogICAgICAgICBJbnRSZWN0IGJhY2tncm91bmRSZWN0KHBpeGVsU25hcHBlZEludFJlY3Qo
c2Nyb2xsZWRQYWludFJlY3QpKTsKICAgICAgICAgYm9vbCBib3hTaGFkb3dTaG91bGRCZUFwcGxp
ZWRUb0JhY2tncm91bmQgPSB0aGlzLT5ib3hTaGFkb3dTaG91bGRCZUFwcGxpZWRUb0JhY2tncm91
bmQoYmxlZWRBdm9pZGFuY2UsIGJveCk7CiAgICAgICAgIGlmICghYm94U2hhZG93U2hvdWxkQmVB
cHBsaWVkVG9CYWNrZ3JvdW5kKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L0ZpbGxMYXllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL0ZpbGxMYXllci5jcHAJKHJldmlzaW9uIDEzNTUyNikKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODAsNCArMjgw
LDIzIEBAIGJvb2wgRmlsbExheWVyOjppbWFnZXNBcmVMb2FkZWQoKSBjb25zdAogICAgIHJldHVy
biB0cnVlOwogfQogCitib29sIEZpbGxMYXllcjo6aGFzT3BhcXVlSW1hZ2UoY29uc3QgUmVuZGVy
T2JqZWN0KiByZW5kZXJlcikgY29uc3QKK3sKKyAgICBpZiAoIW1faW1hZ2UpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGlmIChtX2NvbXBvc2l0ZSA9PSBDb21wb3NpdGVDbGVhciB8fCBt
X2NvbXBvc2l0ZSA9PSBDb21wb3NpdGVDb3B5KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAg
IGlmIChtX2NvbXBvc2l0ZSA9PSBDb21wb3NpdGVTb3VyY2VPdmVyKQorICAgICAgICByZXR1cm4g
IW1faW1hZ2UtPmhhc0FscGhhKHJlbmRlcmVyKTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKwor
Ym9vbCBGaWxsTGF5ZXI6Omhhc1JlcGVhdFhZKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yZXBl
YXRYID09IFJlcGVhdEZpbGwgJiYgbV9yZXBlYXRZID09IFJlcGVhdEZpbGw7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9G
aWxsTGF5ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
RmlsbExheWVyLmgJKHJldmlzaW9uIDEzNTUyNikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9GaWxsTGF5ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ0LDYgKzE0NCw5IEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIG1fbmV4dCA/IG1fbmV4dC0+aGFzRml4ZWRJbWFnZSgpIDog
ZmFsc2U7CiAgICAgfQogCisgICAgYm9vbCBoYXNPcGFxdWVJbWFnZShjb25zdCBSZW5kZXJPYmpl
Y3QqKSBjb25zdDsKKyAgICBib29sIGhhc1JlcGVhdFhZKCkgY29uc3Q7CisKICAgICBFRmlsbExh
eWVyVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUZpbGxMYXllclR5cGU+
KG1fdHlwZSk7IH0KIAogICAgIHZvaWQgZmlsbFVuc2V0UHJvcGVydGllcygpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlLmNw
cAkocmV2aXNpb24gMTM1NTI2KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0
eWxlQ2FjaGVkSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsNCArMTA2LDkgQEAgUGFz
c1JlZlB0cjxJbWFnZT4gU3R5bGVDYWNoZWRJbWFnZTo6aW1hZwogICAgIHJldHVybiBtX2ltYWdl
LT5pbWFnZUZvclJlbmRlcmVyKHJlbmRlcmVyKTsKIH0KIAorYm9vbCBTdHlsZUNhY2hlZEltYWdl
OjpoYXNBbHBoYShjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKSBjb25zdAoreworICAgIHJl
dHVybiBtX2ltYWdlLT5oYXNBbHBoYShyZW5kZXJlcik7Cit9CisKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuaAkocmV2aXNp
b24gMTM1NTI2KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVk
SW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsNiArNTYsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGFkZENsaWVudChSZW5kZXJPYmplY3QqKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVt
b3ZlQ2xpZW50KFJlbmRlck9iamVjdCopOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJbWFnZT4g
aW1hZ2UoUmVuZGVyT2JqZWN0KiwgY29uc3QgSW50U2l6ZSYpIGNvbnN0OworICAgIHZpcnR1YWwg
Ym9vbCBoYXNBbHBoYShjb25zdCBSZW5kZXJPYmplY3QqKSBjb25zdCBPVkVSUklERTsKICAgICAK
IHByaXZhdGU6CiAgICAgZXhwbGljaXQgU3R5bGVDYWNoZWRJbWFnZShDYWNoZWRJbWFnZSopOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2VTZXQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNh
Y2hlZEltYWdlU2V0LmNwcAkocmV2aXNpb24gMTM1NTI2KQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2VTZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTYsNiArMTE2LDExIEBAIFBhc3NSZWZQdHI8SW1hZ2U+IFN0eWxlQ2FjaGVkSW1hZ2VTZXQ6OmkK
ICAgICByZXR1cm4gbV9iZXN0Rml0SW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIocmVuZGVyZXIpOwog
fQogCitib29sIFN0eWxlQ2FjaGVkSW1hZ2VTZXQ6Omhhc0FscGhhKGNvbnN0IFJlbmRlck9iamVj
dCogcmVuZGVyZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fYmVzdEZpdEltYWdlLT5oYXNBbHBo
YShyZW5kZXJlcik7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVO
QUJMRShDU1NfSU1BR0VfU0VUKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1N0eWxlQ2FjaGVkSW1hZ2VTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZVNldC5oCShyZXZpc2lvbiAxMzU1MjYpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZVNldC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03MSw2ICs3MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVt
b3ZlQ2xpZW50KFJlbmRlck9iamVjdCopOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJbWFnZT4g
aW1hZ2UoUmVuZGVyT2JqZWN0KiwgY29uc3QgSW50U2l6ZSYpIGNvbnN0OwogICAgIHZpcnR1YWwg
ZmxvYXQgaW1hZ2VTY2FsZUZhY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VTY2FsZUZhY3Rv
cjsgfQorICAgIHZpcnR1YWwgYm9vbCBoYXNBbHBoYShjb25zdCBSZW5kZXJPYmplY3QqKSBjb25z
dCBPVkVSUklERTsKICAgICAKIHByaXZhdGU6CiAgICAgU3R5bGVDYWNoZWRJbWFnZVNldChDYWNo
ZWRJbWFnZSosIGZsb2F0IGltYWdlU2NhbGVGYWN0b3IsIENTU0ltYWdlU2V0VmFsdWUqKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHZW5l
cmF0ZWRJbWFnZS5jcHAJKHJldmlzaW9uIDEzNTUyNikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODks
NCArODksOSBAQCBQYXNzUmVmUHRyPEltYWdlPiBTdHlsZUdlbmVyYXRlZEltYWdlOjppCiAgICAg
cmV0dXJuIG1faW1hZ2VHZW5lcmF0b3JWYWx1ZS0+aW1hZ2UocmVuZGVyZXIsIHNpemUpOwogfQog
Citib29sIFN0eWxlR2VuZXJhdGVkSW1hZ2U6Omhhc0FscGhhKGNvbnN0IFJlbmRlck9iamVjdCog
cmVuZGVyZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW1hZ2VHZW5lcmF0b3JWYWx1ZS0+aGFz
QWxwaGEocmVuZGVyZXIpOworfQorCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVHZW5lcmF0ZWRJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmgJKHJldmlzaW9uIDEzNTUyNikK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTUxLDYgKzUxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBhZGRDbGllbnQoUmVuZGVyT2JqZWN0Kik7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUNsaWVu
dChSZW5kZXJPYmplY3QqKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlKFJl
bmRlck9iamVjdCosIGNvbnN0IEludFNpemUmKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFz
QWxwaGEoY29uc3QgUmVuZGVyT2JqZWN0KikgY29uc3QgT1ZFUlJJREU7CiAgICAgCiBwcml2YXRl
OgogICAgIFN0eWxlR2VuZXJhdGVkSW1hZ2UoUGFzc1JlZlB0cjxDU1NJbWFnZUdlbmVyYXRvclZh
bHVlPik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVJbWFnZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUltYWdl
LmgJKHJldmlzaW9uIDEzNTUyNikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZUltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY0LDYgKzY0LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxJbWFnZT4gaW1hZ2UoUmVuZGVyT2JqZWN0KiwgY29uc3QgSW50
U2l6ZSYpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFdyYXBwZWRJbWFnZVB0ciBkYXRhKCkgY29u
c3QgPSAwOwogICAgIHZpcnR1YWwgZmxvYXQgaW1hZ2VTY2FsZUZhY3RvcigpIGNvbnN0IHsgcmV0
dXJuIDE7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaGFzQWxwaGEoY29uc3QgUmVuZGVyT2JqZWN0Kikg
Y29uc3QgPSAwOwogCiAgICAgQUxXQVlTX0lOTElORSBib29sIGlzQ2FjaGVkSW1hZ2UoKSBjb25z
dCB7IHJldHVybiBtX2lzQ2FjaGVkSW1hZ2U7IH0KICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNQ
ZW5kaW5nSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2lzUGVuZGluZ0ltYWdlOyB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVQZW5kaW5nSW1hZ2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVQZW5kaW5nSW1hZ2Uu
aAkocmV2aXNpb24gMTM1NTI2KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0
eWxlUGVuZGluZ0ltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDYgKzY2LDcgQEAgcHVibGlj
OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
fQorICAgIHZpcnR1YWwgYm9vbCBoYXNBbHBoYShjb25zdCBSZW5kZXJPYmplY3QqKSBjb25zdCB7
IHJldHVybiB0cnVlOyB9CiAgICAgCiBwcml2YXRlOgogICAgIFN0eWxlUGVuZGluZ0ltYWdlKENT
U1ZhbHVlKiB2YWx1ZSkKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNTUyNikKKysrIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDEyLTExLTIxICBK
dXN0aW4gTm92b3NhZCAgPGp1bm92QGdvb2dsZS5jb20+CisKKyAgICAgICAgQWRkaW5nIG9jY2x1
c2lvbiBkZXRlY3Rpb24gdG8gcmVkdWNlIG92ZXJkcmF3IGluIFJlbmRlckJveCBiYWNrZ3JvdW5k
IHJlbmRlcmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTAyNTU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgTmV3IHRlc3QgZXhlcmNpc2VzIGRpZmZlcmVudCBDU1MgYmFja2dyb3VuZCBzdHlsZSB1c2Ug
Y2FzZXMgdGhhdAorICAgICAgICBhcmUgY2FuZGlkYXRlcyBmb3Igb3B0aW1pemF0aW9uIGJ5IG9j
Y2x1c2lvbiBjdWxsaW5nLgorCisgICAgICAgICogZmFzdC9iYWNrZ3JvdW5kcy9iYWNrZ3JvdW5k
LW9wYXF1ZS1pbWFnZXMtb3Zlci1jb2xvci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Jh
Y2tncm91bmRzL2JhY2tncm91bmQtb3BhcXVlLWltYWdlcy1vdmVyLWNvbG9yLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisKIDIwMTItMTEtMjIgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0
Lm9yZz4KIAogICAgICAgICBbUXRdIFVucmV2aWV3ZWQgZ2FyZGVuaW5nLCBza2lwIGZhaWxpbmcg
dGVzdHMgdG8gcGFpbnQgdGhlIGJvdHMgZ3JlZW4uCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Jh
Y2tncm91bmRzL2JhY2tncm91bmQtb3BhcXVlLWltYWdlcy1vdmVyLWNvbG9yLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2JhY2tncm91bmRzL2JhY2tncm91bmQt
b3BhcXVlLWltYWdlcy1vdmVyLWNvbG9yLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvYmFja2dyb3VuZHMvYmFja2dyb3VuZC1vcGFxdWUtaW1hZ2VzLW92ZXIt
Y29sb3ItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE2IEBACitsYXllciBh
dCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAK
K2xheWVyIGF0ICgwLDApIHNpemUgODAweDEwOAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAs
MCkgc2l6ZSA4MDB4MTA4CisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4
MAorICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6ZSA3ODR4MAorICAgICAgICBS
ZW5kZXJCbG9jayAoZmxvYXRpbmcpIHtESVZ9IGF0ICgwLDApIHNpemUgMjB4MTAwIFtiZ2NvbG9y
PSNGRjAwMDBdCisgICAgICAgIFJlbmRlckJsb2NrIChmbG9hdGluZykge0RJVn0gYXQgKDIwLDAp
IHNpemUgMjB4MTAwIFtiZ2NvbG9yPSNGRjAwMDBdCisgICAgICAgIFJlbmRlckJsb2NrIChmbG9h
dGluZykge0RJVn0gYXQgKDQwLDApIHNpemUgMjB4MTAwIFtiZ2NvbG9yPSNGRjAwMDBdCisgICAg
ICAgIFJlbmRlckJsb2NrIChmbG9hdGluZykge0RJVn0gYXQgKDYwLDApIHNpemUgMjB4MTAwIFti
Z2NvbG9yPSNGRjAwMDBdCisgICAgICAgIFJlbmRlckJsb2NrIChmbG9hdGluZykge0RJVn0gYXQg
KDgwLDApIHNpemUgMjB4MTAwIFtiZ2NvbG9yPSNGRjAwMDBdCisgICAgICAgIFJlbmRlckJsb2Nr
IChmbG9hdGluZykge0RJVn0gYXQgKDEwMCwwKSBzaXplIDIweDEwMCBbYmdjb2xvcj0jRkYwMDAw
XQorICAgICAgICBSZW5kZXJCbG9jayAoZmxvYXRpbmcpIHtESVZ9IGF0ICgxMjAsMCkgc2l6ZSAy
MHgxMDAgW2JnY29sb3I9I0ZGMDAwMF0KKyAgICAgICAgUmVuZGVyQmxvY2sgKGZsb2F0aW5nKSB7
RElWfSBhdCAoMTQwLDApIHNpemUgMjB4MTAwIFtiZ2NvbG9yPSNGRjAwMDBdCisgICAgICAgIFJl
bmRlckJsb2NrIChmbG9hdGluZykge0RJVn0gYXQgKDE2MCwwKSBzaXplIDIweDEwMCBbYmdjb2xv
cj0jRkYwMDAwXQorICAgICAgICBSZW5kZXJCbG9jayAoZmxvYXRpbmcpIHtESVZ9IGF0ICgxODAs
MCkgc2l6ZSAyMHgxMDAgW2JnY29sb3I9I0ZGMDAwMF0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
YmFja2dyb3VuZHMvYmFja2dyb3VuZC1vcGFxdWUtaW1hZ2VzLW92ZXItY29sb3IuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2JhY2tncm91bmRzL2JhY2tncm91bmQtb3BhcXVl
LWltYWdlcy1vdmVyLWNvbG9yLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2JhY2tncm91bmRzL2JhY2tncm91bmQtb3BhcXVlLWltYWdlcy1vdmVyLWNvbG9yLmh0bWwJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMzMgQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKzwhLS0gVGVzdCBwYXNzZXMgd2hlbiBhIGdyZWVuIHJlY3RhbmdsZSBpcyBkaXNwbGF5ZWQu
CitUaGVzZSBhcmUgYWxsIGRyYXdpbmcgY2FzZXMgdGhhdCBjYW4gYmUgb3B0aW1pemVkIGJ5IG9j
Y2x1c2lvbiBjdWxsaW5nCitUaGUgZml4IGZvciBidWcgMTAyNTU3IG9wdGltaXplcyBjYXNlcyAx
LCAyLCAzLCA2LCA3LCBhbmQgOC0tPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRpYT0ic2Ny
ZWVuIj4KKyAgICAucmVkQmFjayB7CisgICAgICAgIHdpZHRoOjIwcHg7CisgICAgICAgIGhlaWdo
dDoxMDBweDsKKyAgICAgICAgZGlzcGxheTpibG9jazsKKyAgICAgICAgYmFja2dyb3VuZC1yZXBl
YXQ6IHJlcGVhdDsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmVkOworICAgICAgICBiYWNr
Z3JvdW5kLXBvc2l0aW9uOjBweCAwcHgsIDBweCAwcHg7CisgICAgICAgIGZsb2F0OiBsZWZ0Owor
ICAgIH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXY+CisgICAgPGRpdiBpZD0iY2Fz
ZV8xIiBjbGFzcz0icmVkQmFjayIgc3R5bGU9ImJhY2tncm91bmQtaW1hZ2U6IHVybCguLi8uLi9o
dHRwL3Rlc3RzL211bHRpcGFydC9yZXNvdXJjZXMvZ3JlZW4tMTAweDEwMC5wbmcpIj48L2Rpdj4K
KyAgICA8ZGl2IGlkPSJjYXNlXzIiIGNsYXNzPSJyZWRCYWNrIiBzdHlsZT0iYmFja2dyb3VuZC1p
bWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCBncmVlbiwgZ3JlZW4pIj48L2Rpdj4K
KyAgICA8ZGl2IGlkPSJjYXNlXzMiIGNsYXNzPSJyZWRCYWNrIiBzdHlsZT0iYmFja2dyb3VuZC1p
bWFnZTogLXdlYmtpdC1jcm9zcy1mYWRlKHVybCguLi8uLi9odHRwL3Rlc3RzL211bHRpcGFydC9y
ZXNvdXJjZXMvZ3JlZW4tMTAweDEwMC5wbmcpLCB1cmwoLi4vLi4vaHR0cC90ZXN0cy9tdWx0aXBh
cnQvcmVzb3VyY2VzL2dyZWVuLTEwMHgxMDAucG5nKSwgNTAlKSI+PC9kaXY+CisgICAgPGRpdiBp
ZD0iY2FzZV80IiBjbGFzcz0icmVkQmFjayIgc3R5bGU9ImJhY2tncm91bmQtcmVwZWF0OiBuby1y
ZXBlYXQ7IGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi8uLi9odHRwL3Rlc3RzL211bHRpcGFydC9y
ZXNvdXJjZXMvZ3JlZW4tMTAweDEwMC5wbmcpIj48L2Rpdj4KKyAgICA8ZGl2IGlkPSJjYXNlXzUi
IGNsYXNzPSJyZWRCYWNrIiBzdHlsZT0iYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14OyBiYWNr
Z3JvdW5kLWltYWdlOiB1cmwoLi4vLi4vaHR0cC90ZXN0cy9tdWx0aXBhcnQvcmVzb3VyY2VzL2dy
ZWVuLTEwMHgxMDAucG5nKSI+PC9kaXY+CisgICAgPGRpdiBpZD0iY2FzZV82IiBjbGFzcz0icmVk
QmFjayIgc3R5bGU9ImJhY2tncm91bmQtaW1hZ2U6IHVybCguLi8uLi9odHRwL3Rlc3RzL211bHRp
cGFydC9yZXNvdXJjZXMvZ3JlZW4tMTAweDEwMC5wbmcpLHVybChyZXNvdXJjZXMvNjR4MzItcmVk
LnBuZykiPjwvZGl2PgorICAgIDxkaXYgaWQ9ImNhc2VfNyIgY2xhc3M9InJlZEJhY2siIHN0eWxl
PSJiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsIGdyZWVuLCBn
cmVlbiksdXJsKHJlc291cmNlcy82NHgzMi1yZWQucG5nKSI+PC9kaXY+CisgICAgPGRpdiBpZD0i
Y2FzZV84IiBjbGFzcz0icmVkQmFjayIgc3R5bGU9ImJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQt
Y3Jvc3MtZmFkZSh1cmwoLi4vLi4vaHR0cC90ZXN0cy9tdWx0aXBhcnQvcmVzb3VyY2VzL2dyZWVu
LTEwMHgxMDAucG5nKSx1cmwoLi4vLi4vaHR0cC90ZXN0cy9tdWx0aXBhcnQvcmVzb3VyY2VzL2dy
ZWVuLTEwMHgxMDAucG5nKSwgNTAlKSx1cmwocmVzb3VyY2VzLzY0eDMyLXJlZC5wbmcpIj48L2Rp
dj4KKyAgICA8ZGl2IGlkPSJjYXNlXzkiIGNsYXNzPSJyZWRCYWNrIiBzdHlsZT0iYmFja2dyb3Vu
ZC1yZXBlYXQ6IG5vLXJlcGVhdDsgYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uLy4uL2h0dHAvdGVz
dHMvbXVsdGlwYXJ0L3Jlc291cmNlcy9ncmVlbi0xMDB4MTAwLnBuZyksdXJsKHJlc291cmNlcy82
NHgzMi1yZWQucG5nKSI+PC9kaXY+CisgICAgPGRpdiBpZD0iY2FzZV8xMCIgY2xhc3M9InJlZEJh
Y2siIHN0eWxlPSJiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7IGJhY2tncm91bmQtaW1hZ2U6
IHVybCguLi8uLi9odHRwL3Rlc3RzL211bHRpcGFydC9yZXNvdXJjZXMvZ3JlZW4tMTAweDEwMC5w
bmcpLHVybChyZXNvdXJjZXMvNjR4MzItcmVkLnBuZykiPjwvZGl2PgorPC9kaXY+Cis8L2JvZHk+
Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0
YXRpb25zCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RF
eHBlY3RhdGlvbnMJKHJldmlzaW9uIDEzNTUyNikKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMJKHdvcmtpbmcgY29weSkKQEAgLTEyNjMsNiArMTI2Myw5
IEBAIHdlYmtpdC5vcmcvYi8yNTgxNyBzdmcvZG9tL1NWR1NjcmlwdEVsZW0KIAogd2Via2l0Lm9y
Zy9iLzYwMTE4IFsgTWFjIF0gc3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50L3NjcmlwdC1zZXQtaHJl
Zi5zdmcgWyBGYWlsdXJlIFBhc3MgXQogCisjIE5ldyB0ZXN0IGluIG5lZWQgb2YgbmV3IGJhc2Vs
aW5lcword2Via2l0Lm9yZy9iLzEwMjU1NyBmYXN0L2JhY2tncm91bmRzL2JhY2tncm91bmQtb3Bh
cXVlLWltYWdlcy1vdmVyLWNvbG9yLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUgRmFpbHVy
ZSBNaXNzaW5nIF0KKwogIyBJbnRyb2R1Y2VkIGR1ZSB0byBCVUdXSzUzNTEyLCBmYWlscyB1bmRl
ciBTa2lhIHJpZ2h0IG5vdwogd2Via2l0Lm9yZy9iLzY1OTM5IHN2Zy9jdXN0b20vZ2V0QkJveC1w
YXRoLnN2ZyBbIEZhaWx1cmUgXQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175695</attachid>
            <date>2012-11-22 10:52:16 -0800</date>
            <delta_ts>2012-11-23 07:15:52 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-102557-20121122135001.patch</filename>
            <type>text/plain</type>
            <size>25319</size>
            <attacher name="Justin Novosad">junov</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNTUyNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg2IEBACisyMDEyLTExLTIxICBKdXN0aW4g
Tm92b3NhZCAgPGp1bm92QGdvb2dsZS5jb20+CisKKyAgICAgICAgQWRkaW5nIG9jY2x1c2lvbiBk
ZXRlY3Rpb24gdG8gcmVkdWNlIG92ZXJkcmF3IGluIFJlbmRlckJveCBiYWNrZ3JvdW5kIHJlbmRl
cmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAy
NTU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU3RlcGhlbiBXaGl0ZS4KKworICAgICAgICBBZGRp
bmcgaGFzQWxwaGEgbWV0aG9kIHRvIGFsbCBjbGFzc2VzIGRlcnZpdmVkIGZyb20gQ1NTSW1hZ2VW
YWx1ZSBhbmQKKyAgICAgICAgU3R5bGVJbWFnZSwgaW4gb3JkZXIgdG8gc3VwcG9ydCBvY2NsdXNp
b24gdGVzdGluZy4gCisgICAgICAgIFRoaXMgYWxsb3dzIHRoZSBGaWxsTGF5ZXIgcmVjdXJzaW9u
IHRvIHN0b3AgZWFybHkgd2hlbiBhbiBvcGFxdWUgbGF5ZXIKKyAgICAgICAgaXMgZW5jb3VudGVy
ZWQgd2hpbGUgYXBwbHlpbmcgYSBDU1MgYmFja2dyb3VuZCBzdHlsZS4gVGhpcyBhbHNvIGFsbG93
cworICAgICAgICB0aGUgZWxpbWluYXRpb24gb2YgYmFja2dyb3VuZCBjb2xvciBhcHBsaWNhdGlv
biB3aGVuIHRoZSBiYWNrZ3JvdW5kIGlzCisgICAgICAgIGNvbXBsZXRlbHkgY292ZXJlZCBieSBh
biBpbWFnZS4gIFRoZSBvcHRpbWl6YXRpb24gYWxzbyBza2lwcyB0aGUKKyAgICAgICAgY2xlYXJp
bmcgb2YgdGhlIHBhZ2UncyByb290IGVsZW1lbnQgd2hlbiB0aGUgcGFnZSBiYWNrZ3JvdW5kIGlz
CisgICAgICAgIGVudGlyZWx5IGNvdmVyZWQgYnkgYW4gaW1hZ2UgKGUuZyBhIHRpbGVkIGJpdG1h
cCBvciBhIGdyYWRpZW50KQorCisgICAgICAgIFRlc3Q6IGZhc3QvYmFja2dyb3VuZHMvYmFja2dy
b3VuZC1vcGFxdWUtaW1hZ2VzLW92ZXItY29sb3IuaHRtbAorCisgICAgICAgICogY3NzL0NTU0Ny
b3NzZmFkZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnN1YmltYWdlSGFzQWxwaGEpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NDcm9zc2ZhZGVWYWx1ZTo6
aXNQZW5kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Nyb3NzZmFkZVZhbHVlOjpoYXNBbHBo
YSk6CisgICAgICAgICogY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmg6CisgICAgICAgIChDU1NDcm9z
c2ZhZGVWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTR3JhZGllbnRWYWx1ZTo6aGFzQWxwaGEpOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgICogY3NzL0NTU0dyYWRpZW50VmFsdWUuaDoKKyAgICAgICAgKENTU0dyYWRp
ZW50VmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0ltYWdlR2VuZXJhdG9yVmFsdWU6Omhhc0FscGhhKToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAqIGNzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmg6Cisg
ICAgICAgIChDU1NJbWFnZUdlbmVyYXRvclZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VW
YWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZVZhbHVlOjpoYXNBbHBoYSk6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VWYWx1ZS5oOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChDU1NJbWFnZVZhbHVlKToKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6Omhh
c0FscGhhKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRJbWFnZS5oOgorICAgICAgICAoQ2FjaGVkSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpm
cmFtZUhhc0FscGhhQXRJbmRleCk6CisgICAgICAgIFRoaXMgbWV0aG9kIHdpbGwgbm93IHB1bGwg
dGhlIHF1ZXJpZWQgZnJhbWUgaW50byBjYWNoZSB1cG9uIHRlc3RpbmcKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6cGFpbnRG
aWxsTGF5ZXJzKToKKyAgICAgICAgQWRkZWQgbGF5ZXIgcmVjdXJzaW9uIGVhcmx5IGV4aXQgd2hl
biBhbiBvcGFxdWUgbGF5ZXIgaXMgZW5jb3VudGVyZWQuCisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVs
T2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKToKKyAgICAgICAgRWxpbWluYXRlZCBiYWNr
Z3JvdW5kIGNvbG9yIGZpbGwgd2hlbiB0aGUgbGF5ZXIgY29udGFpbnMgYW4gb3BhcXVlCisgICAg
ICAgIGltYWdlIHRoYXQgY292ZXJzIHRoZSBlbnRpcmUgUmVuZGVyQm94LgorICAgICAgICAqIHJl
bmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsbExheWVy
OjpoYXNPcGFxdWVJbWFnZSk6CisgICAgICAgIFJldHVybnMgdHJ1ZSBpZiB0aGUgbGF5ZXIncyBp
bWFnZSBpcyBrbm93biB0byBiZSBmdWxseSBvcGFxdWUuCisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZpbGxMYXllcjo6aGFzTm9SZXBlYXQpOgorICAgICAgICAqIHJlbmRl
cmluZy9zdHlsZS9GaWxsTGF5ZXIuaDoKKyAgICAgICAgKEZpbGxMYXllcik6CisgICAgICAgICog
cmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVDYWNoZWRJbWFnZTo6aGFzQWxwaGEpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
ICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuaDoKKyAgICAgICAgKFN0eWxlQ2Fj
aGVkSW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlU2V0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQ2FjaGVkSW1hZ2VTZXQ6Omhhc0FscGhhKToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hl
ZEltYWdlU2V0Lmg6CisgICAgICAgIChTdHlsZUNhY2hlZEltYWdlU2V0KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZUdlbmVyYXRlZEltYWdlOjpoYXNBbHBoYSk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJbWFnZS5oOgorICAgICAgICAo
U3R5bGVHZW5lcmF0ZWRJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlSW1h
Z2UuaDoKKyAgICAgICAgKFN0eWxlSW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9T
dHlsZVBlbmRpbmdJbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQZW5kaW5nSW1hZ2U6
Omhhc0FscGhhKToKKwogMjAxMi0xMS0yMiAgRXVnZW5lIEtseXVjaG5pa292ICA8ZXVzdGFzLmJ1
Z0BnbWFpbC5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogVGltZWxpbmU6IERpc2Nsb3N1
cmUgYXJyb3dzIHJlbmRlcmVkIHVuZGVybmVhdGggZnJhbWUgYm91bmRhcmllcwpJbmRleDogU291
cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwCShyZXZpc2lvbiAxMzU1MjYpCisr
KyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01Miw2ICs1MiwxOSBAQCBzdGF0aWMgYm9vbCBzdWJpbWFnZUlzUGVuZGluZyhDU1NWYWx1
ZSoKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK3N0YXRpYyBib29sIHN1YmltYWdlSGFzQWxwaGEo
Q1NTVmFsdWUqIHZhbHVlLCBjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQoreworICAgIGlm
ICh2YWx1ZS0+aXNJbWFnZVZhbHVlKCkpCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxDU1NJ
bWFnZVZhbHVlKj4odmFsdWUpLT5oYXNBbHBoYShyZW5kZXJlcik7CisKKyAgICBpZiAodmFsdWUt
PmlzSW1hZ2VHZW5lcmF0b3JWYWx1ZSgpKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q1NT
SW1hZ2VHZW5lcmF0b3JWYWx1ZSo+KHZhbHVlKS0+aGFzQWxwaGEocmVuZGVyZXIpOworCisgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogc3RhdGljIENh
Y2hlZEltYWdlKiBjYWNoZWRJbWFnZUZvckNTU1ZhbHVlKENTU1ZhbHVlKiB2YWx1ZSwgQ2FjaGVk
UmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyKQogewogICAgIGlmICghdmFsdWUp
CkBAIC0xMjYsNiArMTM5LDExIEBAIGJvb2wgQ1NTQ3Jvc3NmYWRlVmFsdWU6OmlzUGVuZGluZygp
IGNvbnMKICAgICByZXR1cm4gc3ViaW1hZ2VJc1BlbmRpbmcobV9mcm9tVmFsdWUuZ2V0KCkpIHx8
IHN1YmltYWdlSXNQZW5kaW5nKG1fdG9WYWx1ZS5nZXQoKSk7CiB9CiAKK2Jvb2wgQ1NTQ3Jvc3Nm
YWRlVmFsdWU6Omhhc0FscGhhKGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIpIGNvbnN0Cit7
CisgICAgcmV0dXJuIHN1YmltYWdlSGFzQWxwaGEobV9mcm9tVmFsdWUuZ2V0KCksIHJlbmRlcmVy
KSB8fCBzdWJpbWFnZUhhc0FscGhhKG1fdG9WYWx1ZS5nZXQoKSwgcmVuZGVyZXIpOworfQorCiB2
b2lkIENTU0Nyb3NzZmFkZVZhbHVlOjpsb2FkU3ViaW1hZ2VzKENhY2hlZFJlc291cmNlTG9hZGVy
KiBjYWNoZWRSZXNvdXJjZUxvYWRlcikKIHsKICAgICBtX2NhY2hlZEZyb21JbWFnZSA9IGNhY2hl
ZEltYWdlRm9yQ1NTVmFsdWUobV9mcm9tVmFsdWUuZ2V0KCksIGNhY2hlZFJlc291cmNlTG9hZGVy
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5oCShyZXZpc2lvbiAx
MzU1MjYpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTgsNiArNTgsOCBAQCBwdWJsaWM6CiAgICAgSW50U2l6ZSBmaXhlZFNpemUo
Y29uc3QgUmVuZGVyT2JqZWN0Kik7CiAKICAgICBib29sIGlzUGVuZGluZygpIGNvbnN0OworICAg
IGJvb2wgaGFzQWxwaGEoY29uc3QgUmVuZGVyT2JqZWN0KikgY29uc3Q7CisKICAgICB2b2lkIGxv
YWRTdWJpbWFnZXMoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqKTsKIAogICAgIHZvaWQgc2V0UGVyY2Vu
dGFnZShQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBwZXJjZW50YWdlVmFsdWUpIHsgbV9w
ZXJjZW50YWdlVmFsdWUgPSBwZXJjZW50YWdlVmFsdWU7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAJKHJldmlzaW9uIDEzNTUyNikKKysrIFNvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYyLDYgKzQ2
MiwxNSBAQCBib29sIENTU0dyYWRpZW50VmFsdWU6OmlzQ2FjaGVhYmxlKCkgY29uCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKK2Jvb2wgQ1NTR3JhZGllbnRWYWx1ZTo6aGFzQWxwaGEoY29uc3QgUmVu
ZGVyT2JqZWN0KikgY29uc3QKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fc3RvcHMu
c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKG1fc3RvcHNbaV0ubV9yZXNvbHZlZENvbG9yLmhh
c0FscGhhKCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZh
bHNlOworfQorCiB2b2lkIENTU0dyYWRpZW50VmFsdWU6OnJlcG9ydEJhc2VDbGFzc01lbW9yeVVz
YWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiB7CiAgICAgTWVt
b3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9yeVR5
cGVzOjpDU1MpOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5oCShyZXZp
c2lvbiAxMzU1MjYpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC03NCw2ICs3NCw4IEBAIHB1YmxpYzoKICAgICBJbnRTaXplIGZpeGVk
U2l6ZShjb25zdCBSZW5kZXJPYmplY3QqKSBjb25zdCB7IHJldHVybiBJbnRTaXplKCk7IH0KIAog
ICAgIGJvb2wgaXNQZW5kaW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGhh
c0FscGhhKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0OworCiAgICAgdm9pZCBsb2FkU3ViaW1h
Z2VzKENhY2hlZFJlc291cmNlTG9hZGVyKikgeyB9CiAgICAgUGFzc1JlZlB0cjxDU1NHcmFkaWVu
dFZhbHVlPiBncmFkaWVudFdpdGhTdHlsZXNSZXNvbHZlZChTdHlsZVJlc29sdmVyKik7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAJKHJl
dmlzaW9uIDEzNTUyNikKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZh
bHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk2LDYgKzE5NiwyMyBAQCBib29sIENTU0ltYWdl
R2VuZXJhdG9yVmFsdWU6OmlzUGVuZGluZygpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitib29s
IENTU0ltYWdlR2VuZXJhdG9yVmFsdWU6Omhhc0FscGhhKGNvbnN0IFJlbmRlck9iamVjdCogcmVu
ZGVyZXIpIGNvbnN0Cit7CisgICAgc3dpdGNoIChjbGFzc1R5cGUoKSkgeworICAgIGNhc2UgQ3Jv
c3NmYWRlQ2xhc3M6CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBDU1NDcm9zc2Zh
ZGVWYWx1ZSo+KHRoaXMpLT5oYXNBbHBoYShyZW5kZXJlcik7CisgICAgY2FzZSBDYW52YXNDbGFz
czoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgY2FzZSBMaW5lYXJHcmFkaWVudENsYXNzOgor
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ1NTTGluZWFyR3JhZGllbnRWYWx1ZSo+
KHRoaXMpLT5oYXNBbHBoYShyZW5kZXJlcik7CisgICAgY2FzZSBSYWRpYWxHcmFkaWVudENsYXNz
OgorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ1NTUmFkaWFsR3JhZGllbnRWYWx1
ZSo+KHRoaXMpLT5oYXNBbHBoYShyZW5kZXJlcik7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCiB2b2lkIENT
U0ltYWdlR2VuZXJhdG9yVmFsdWU6OmxvYWRTdWJpbWFnZXMoQ2FjaGVkUmVzb3VyY2VMb2FkZXIq
IGNhY2hlZFJlc291cmNlTG9hZGVyKQogewogICAgIHN3aXRjaCAoY2xhc3NUeXBlKCkpIHsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuaAkocmV2aXNp
b24gMTM1NTI2KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUu
aAkod29ya2luZyBjb3B5KQpAQCAtNjMsNiArNjMsNyBAQCBwdWJsaWM6CiAgICAgSW50U2l6ZSBm
aXhlZFNpemUoY29uc3QgUmVuZGVyT2JqZWN0Kik7CiAKICAgICBib29sIGlzUGVuZGluZygpIGNv
bnN0OworICAgIGJvb2wgaGFzQWxwaGEoY29uc3QgUmVuZGVyT2JqZWN0KikgY29uc3Q7CiAKICAg
ICB2b2lkIGxvYWRTdWJpbWFnZXMoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqKTsKIApJbmRleDogU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmNwcAkocmV2aXNpb24gMTM1NTI2KQorKysgU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDAsNCAr
MTQwLDkgQEAgdm9pZCBDU1NJbWFnZVZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtbwogICAgIC8v
IE5vIG5lZWQgdG8gcmVwb3J0IG1faW1hZ2UgYXMgaXQgaXMgY291bnRlZCBhcyBwYXJ0IG9mIFJl
bmRlckFyZW5hLgogfQogCitib29sIENTU0ltYWdlVmFsdWU6Omhhc0FscGhhKGNvbnN0IFJlbmRl
ck9iamVjdCogcmVuZGVyZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW1hZ2UgPyBtX2ltYWdl
LT5oYXNBbHBoYShyZW5kZXJlcikgOiB0cnVlOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmgJKHJldmlzaW9uIDEzNTUyNikKKysr
IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMw
LDYgKzMwLDcgQEAgY2xhc3MgQ2FjaGVkUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBFbGVtZW50Owog
Y2xhc3MgU3R5bGVDYWNoZWRJbWFnZTsKIGNsYXNzIFN0eWxlSW1hZ2U7CitjbGFzcyBSZW5kZXJP
YmplY3Q7CiAKIGNsYXNzIENTU0ltYWdlVmFsdWUgOiBwdWJsaWMgQ1NTVmFsdWUgewogcHVibGlj
OgpAQCAtNTEsNiArNTIsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRN
ZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAKKyAgICBib29sIGhhc0FscGhh
KGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0OworCiBwcm90ZWN0ZWQ6CiAgICAgQ1NTSW1hZ2VW
YWx1ZShDbGFzc1R5cGUsIGNvbnN0IFN0cmluZyYgdXJsKTsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCShyZXZpc2lvbiAxMzU1MjYpCisrKyBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00NzUsNCArNDc1LDkgQEAgdm9pZCBDYWNoZWRJbWFnZTo6cmVwb3J0TWVtb3J5VXNhZ2Uo
TWVtbwogI2VuZGlmCiB9CiAKK2Jvb2wgQ2FjaGVkSW1hZ2U6OmN1cnJlbnRGcmFtZUhhc0FscGhh
KGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIpCit7CisgICAgcmV0dXJuIGltYWdlRm9yUmVu
ZGVyZXIocmVuZGVyZXIpLT5jdXJyZW50RnJhbWVIYXNBbHBoYSgpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2UuaAkocmV2aXNpb24gMTM1NTI2KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUyLDcgQEAgcHVibGljOgogICAg
IEltYWdlKiBpbWFnZSgpOyAvLyBSZXR1cm5zIHRoZSBudWxsSW1hZ2UoKSBpZiB0aGUgaW1hZ2Ug
aXMgbm90IGF2YWlsYWJsZSB5ZXQuCiAgICAgSW1hZ2UqIGltYWdlRm9yUmVuZGVyZXIoY29uc3Qg
UmVuZGVyT2JqZWN0Kik7IC8vIFJldHVybnMgdGhlIG51bGxJbWFnZSgpIGlmIHRoZSBpbWFnZSBp
cyBub3QgYXZhaWxhYmxlIHlldC4KICAgICBib29sIGhhc0ltYWdlKCkgY29uc3QgeyByZXR1cm4g
bV9pbWFnZS5nZXQoKTsgfQorICAgIGJvb2wgY3VycmVudEZyYW1lSGFzQWxwaGEoY29uc3QgUmVu
ZGVyT2JqZWN0Kik7CiAKICAgICBzdGQ6OnBhaXI8SW1hZ2UqLCBmbG9hdD4gYnJva2VuSW1hZ2Uo
ZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IpIGNvbnN0OyAvLyBSZXR1cm5zIGFuIGltYWdlIGFuZCB0
aGUgaW1hZ2UncyByZXNvbHV0aW9uIHNjYWxlIGZhY3Rvci4KICAgICBib29sIHdpbGxQYWludEJy
b2tlbkltYWdlKCkgY29uc3Q7IApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQml0bWFwSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAkocmV2aXNpb24gMTM1NTI2KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMjYsNyArMzI2LDcgQEAgTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1hZ2U6Om5hdGl2ZUltYWdl
RgogCiBib29sIEJpdG1hcEltYWdlOjpmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QgaW5kZXgp
CiB7Ci0gICAgaWYgKG1fZnJhbWVzLnNpemUoKSA8PSBpbmRleCkKKyAgICBpZiAoIWVuc3VyZUZy
YW1lSXNDYWNoZWQoaW5kZXgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGlmIChtX2Zy
YW1lc1tpbmRleF0ubV9oYXZlTWV0YWRhdGEpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94LmNwcAkocmV2aXNpb24gMTM1NTI2KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMDEsNyArMTAwMSwxNCBAQCB2
b2lkIFJlbmRlckJveDo6cGFpbnRGaWxsTGF5ZXJzKGNvbnN0IFBhCiAgICAgaWYgKCFmaWxsTGF5
ZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIHBhaW50RmlsbExheWVycyhwYWludEluZm8sIGMs
IGZpbGxMYXllci0+bmV4dCgpLCByZWN0LCBibGVlZEF2b2lkYW5jZSwgb3AsIGJhY2tncm91bmRP
YmplY3QpOworICAgIC8vIEZJWE1FIDogSXQgd291bGQgYmUgcG9zc2libGUgZm9yIHRoZSBmb2xs
b3dpbmcgb2NjbHVzaW9uIGN1bGxpbmcgdGVzdCB0byBiZSBtb3JlIGFnZ3Jlc3NpdmUgCisgICAg
Ly8gb24gbGF5ZXJzIHdpdGggbm8gcmVwZWF0IGJ5IHRlc3Rpbmcgd2hldGhlciB0aGUgaW1hZ2Ug
Y292ZXJzIHRoZSBsYXlvdXQgcmVjdC4KKyAgICAvLyBUZXN0aW5nIHRoYXQgaGVyZSB3b3VsZCBp
bXBseSBkdXBsaWNhdGluZyBhIGxvdCBvZiBjYWxjdWxhdGlvbnMgdGhhdCBhcmUgY3VycmVudGx5
IGRvbmUgaW4KKyAgICAvLyBSZW5kZXJCb3hNb2RlbE9CamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRl
bmRlZC4gQSBtb3JlIGVmZmljaWVudCBzb2x1dGlvbiBtaWdodCBiZSB0byBtb3ZlCisgICAgLy8g
dGhlIGxheWVyIHJlY3Vyc2lvbiBpbnRvIHBhaW50RmlsbExheWVyRXh0ZW5kZWQsIG9yIHRvIGNv
bXB1dGUgdGhlIGxheWVyIGdlb21ldHJ5IGhlcmUKKyAgICAvLyBhbmQgcGFzcyBpdCBkb3duLgor
ICAgIGlmIChmaWxsTGF5ZXItPm5leHQoKSAmJiAoIWZpbGxMYXllci0+aGFzT3BhcXVlSW1hZ2Uo
dGhpcykgfHwgIWZpbGxMYXllci0+aW1hZ2UoKS0+Y2FuUmVuZGVyKHRoaXMsIHN0eWxlKCktPmVm
ZmVjdGl2ZVpvb20oKSkgfHwgIWZpbGxMYXllci0+aGFzUmVwZWF0WFkoKSkpCisgICAgICAgIHBh
aW50RmlsbExheWVycyhwYWludEluZm8sIGMsIGZpbGxMYXllci0+bmV4dCgpLCByZWN0LCBibGVl
ZEF2b2lkYW5jZSwgb3AsIGJhY2tncm91bmRPYmplY3QpOwogICAgIHBhaW50RmlsbExheWVyKHBh
aW50SW5mbywgYywgZmlsbExheWVyLCByZWN0LCBibGVlZEF2b2lkYW5jZSwgb3AsIGJhY2tncm91
bmRPYmplY3QpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
TW9kZWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAJKHJldmlzaW9uIDEzNTUyNikKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTkwNyw4ICs5MDcsMTAgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5
ZQogICAgICAgICB2aWV3KCktPmZyYW1lVmlldygpLT5zZXRDb250ZW50SXNPcGFxdWUoaXNPcGFx
dWVSb290KTsKICAgICB9CiAKLSAgICAvLyBQYWludCB0aGUgY29sb3IgZmlyc3QgdW5kZXJuZWF0
aCBhbGwgaW1hZ2VzLgotICAgIGlmICghYmdMYXllci0+bmV4dCgpKSB7CisgICAgLy8gUGFpbnQg
dGhlIGNvbG9yIGZpcnN0IHVuZGVybmVhdGggYWxsIGltYWdlcywgY3VsbGVkIGlmIGJhY2tncm91
bmQgaW1hZ2Ugb2NjbHVkZXMgaXQuCisgICAgLy8gRklYTUU6IEluIHRoZSBiZ0xheWVyLT5oYXNG
aW5pdGVCb3VuZHMoKSBjYXNlLCB3ZSBjb3VsZCBpbXByb3ZlIHRoZSBjdWxsaW5nIHRlc3QKKyAg
ICAvLyBieSB2ZXJpZnlpbmcgd2hldGhlciB0aGUgYmFja2dyb3VuZCBpbWFnZSBjb3ZlcnMgdGhl
IGVudGlyZSBsYXlvdXQgcmVjdC4KKyAgICBpZiAoIWJnTGF5ZXItPm5leHQoKSAmJiAhKHNob3Vs
ZFBhaW50QmFja2dyb3VuZEltYWdlICYmIGJnTGF5ZXItPmhhc09wYXF1ZUltYWdlKHRoaXMpICYm
IGJnTGF5ZXItPmhhc1JlcGVhdFhZKCkpKSB7CiAgICAgICAgIEludFJlY3QgYmFja2dyb3VuZFJl
Y3QocGl4ZWxTbmFwcGVkSW50UmVjdChzY3JvbGxlZFBhaW50UmVjdCkpOwogICAgICAgICBib29s
IGJveFNoYWRvd1Nob3VsZEJlQXBwbGllZFRvQmFja2dyb3VuZCA9IHRoaXMtPmJveFNoYWRvd1No
b3VsZEJlQXBwbGllZFRvQmFja2dyb3VuZChibGVlZEF2b2lkYW5jZSwgYm94KTsKICAgICAgICAg
aWYgKCFib3hTaGFkb3dTaG91bGRCZUFwcGxpZWRUb0JhY2tncm91bmQpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmNwcAkocmV2aXNpb24gMTM1NTI2
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI4MCw0ICsyODAsMjMgQEAgYm9vbCBGaWxsTGF5ZXI6OmltYWdlc0FyZUxv
YWRlZCgpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgRmlsbExheWVyOjpoYXNP
cGFxdWVJbWFnZShjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKSBjb25zdAoreworICAgIGlm
ICghbV9pbWFnZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG1fY29tcG9zaXRl
ID09IENvbXBvc2l0ZUNsZWFyIHx8IG1fY29tcG9zaXRlID09IENvbXBvc2l0ZUNvcHkpCisgICAg
ICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKG1fY29tcG9zaXRlID09IENvbXBvc2l0ZVNvdXJj
ZU92ZXIpCisgICAgICAgIHJldHVybiAhbV9pbWFnZS0+aGFzQWxwaGEocmVuZGVyZXIpOworCisg
ICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEZpbGxMYXllcjo6aGFzUmVwZWF0WFkoKSBjb25z
dAoreworICAgIHJldHVybiBtX3JlcGVhdFggPT0gUmVwZWF0RmlsbCAmJiBtX3JlcGVhdFkgPT0g
UmVwZWF0RmlsbDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuaAkocmV2aXNpb24gMTM1NTI2KQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDQsNiArMTQ0LDkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9uZXh0ID8gbV9u
ZXh0LT5oYXNGaXhlZEltYWdlKCkgOiBmYWxzZTsKICAgICB9CiAKKyAgICBib29sIGhhc09wYXF1
ZUltYWdlKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0OworICAgIGJvb2wgaGFzUmVwZWF0WFko
KSBjb25zdDsKKwogICAgIEVGaWxsTGF5ZXJUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxFRmlsbExheWVyVHlwZT4obV90eXBlKTsgfQogCiAgICAgdm9pZCBmaWxsVW5zZXRQ
cm9wZXJ0aWVzKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVD
YWNoZWRJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuY3BwCShyZXZpc2lvbiAxMzU1MjYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEwNiw0ICsxMDYsOSBAQCBQYXNzUmVmUHRyPEltYWdlPiBTdHlsZUNhY2hlZEltYWdlOjpp
bWFnCiAgICAgcmV0dXJuIG1faW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIocmVuZGVyZXIpOwogfQog
Citib29sIFN0eWxlQ2FjaGVkSW1hZ2U6Omhhc0FscGhhKGNvbnN0IFJlbmRlck9iamVjdCogcmVu
ZGVyZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW1hZ2UtPmN1cnJlbnRGcmFtZUhhc0FscGhh
KHJlbmRlcmVyKTsKK30KKwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1N0eWxlQ2FjaGVkSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5oCShyZXZpc2lvbiAxMzU1MjYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC01Niw2ICs1Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYWRkQ2xpZW50KFJl
bmRlck9iamVjdCopOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVDbGllbnQoUmVuZGVyT2JqZWN0
Kik7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEltYWdlPiBpbWFnZShSZW5kZXJPYmplY3QqLCBj
b25zdCBJbnRTaXplJikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGhhc0FscGhhKGNvbnN0IFJl
bmRlck9iamVjdCopIGNvbnN0IE9WRVJSSURFOwogICAgIAogcHJpdmF0ZToKICAgICBleHBsaWNp
dCBTdHlsZUNhY2hlZEltYWdlKENhY2hlZEltYWdlKik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZVNldC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2VTZXQuY3BwCShyZXZp
c2lvbiAxMzU1MjYpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNo
ZWRJbWFnZVNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNiw2ICsxMTYsMTEgQEAgUGFzc1Jl
ZlB0cjxJbWFnZT4gU3R5bGVDYWNoZWRJbWFnZVNldDo6aQogICAgIHJldHVybiBtX2Jlc3RGaXRJ
bWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihyZW5kZXJlcik7CiB9CiAKK2Jvb2wgU3R5bGVDYWNoZWRJ
bWFnZVNldDo6aGFzQWxwaGEoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9iZXN0Rml0SW1hZ2UtPmN1cnJlbnRGcmFtZUhhc0FscGhhKHJlbmRlcmVy
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKENTU19J
TUFHRV9TRVQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNo
ZWRJbWFnZVNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TdHlsZUNhY2hlZEltYWdlU2V0LmgJKHJldmlzaW9uIDEzNTUyNikKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlU2V0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTcxLDYgKzcxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVDbGllbnQo
UmVuZGVyT2JqZWN0Kik7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEltYWdlPiBpbWFnZShSZW5k
ZXJPYmplY3QqLCBjb25zdCBJbnRTaXplJikgY29uc3Q7CiAgICAgdmlydHVhbCBmbG9hdCBpbWFn
ZVNjYWxlRmFjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZVNjYWxlRmFjdG9yOyB9CisgICAg
dmlydHVhbCBib29sIGhhc0FscGhhKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0IE9WRVJSSURF
OwogICAgIAogcHJpdmF0ZToKICAgICBTdHlsZUNhY2hlZEltYWdlU2V0KENhY2hlZEltYWdlKiwg
ZmxvYXQgaW1hZ2VTY2FsZUZhY3RvciwgQ1NTSW1hZ2VTZXRWYWx1ZSopOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdl
LmNwcAkocmV2aXNpb24gMTM1NTI2KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1N0eWxlR2VuZXJhdGVkSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSw0ICs4OSw5IEBA
IFBhc3NSZWZQdHI8SW1hZ2U+IFN0eWxlR2VuZXJhdGVkSW1hZ2U6OmkKICAgICByZXR1cm4gbV9p
bWFnZUdlbmVyYXRvclZhbHVlLT5pbWFnZShyZW5kZXJlciwgc2l6ZSk7CiB9CiAKK2Jvb2wgU3R5
bGVHZW5lcmF0ZWRJbWFnZTo6aGFzQWxwaGEoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9pbWFnZUdlbmVyYXRvclZhbHVlLT5oYXNBbHBoYShyZW5k
ZXJlcik7Cit9CisKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZUdlbmVyYXRlZEltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuaAkocmV2aXNpb24gMTM1NTI2KQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuaAkod29ya2luZyBj
b3B5KQpAQCAtNTEsNiArNTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGFkZENsaWVu
dChSZW5kZXJPYmplY3QqKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQ2xpZW50KFJlbmRlck9i
amVjdCopOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJbWFnZT4gaW1hZ2UoUmVuZGVyT2JqZWN0
KiwgY29uc3QgSW50U2l6ZSYpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBoYXNBbHBoYShjb25z
dCBSZW5kZXJPYmplY3QqKSBjb25zdCBPVkVSUklERTsKICAgICAKIHByaXZhdGU6CiAgICAgU3R5
bGVHZW5lcmF0ZWRJbWFnZShQYXNzUmVmUHRyPENTU0ltYWdlR2VuZXJhdG9yVmFsdWU+KTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUltYWdlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlSW1hZ2UuaAkocmV2aXNp
b24gMTM1NTI2KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlSW1hZ2Uu
aAkod29ya2luZyBjb3B5KQpAQCAtNjQsNiArNjQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPEltYWdlPiBpbWFnZShSZW5kZXJPYmplY3QqLCBjb25zdCBJbnRTaXplJikgY29u
c3QgPSAwOwogICAgIHZpcnR1YWwgV3JhcHBlZEltYWdlUHRyIGRhdGEoKSBjb25zdCA9IDA7CiAg
ICAgdmlydHVhbCBmbG9hdCBpbWFnZVNjYWxlRmFjdG9yKCkgY29uc3QgeyByZXR1cm4gMTsgfQor
ICAgIHZpcnR1YWwgYm9vbCBoYXNBbHBoYShjb25zdCBSZW5kZXJPYmplY3QqKSBjb25zdCA9IDA7
CiAKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNDYWNoZWRJbWFnZSgpIGNvbnN0IHsgcmV0dXJu
IG1faXNDYWNoZWRJbWFnZTsgfQogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc1BlbmRpbmdJbWFn
ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNQZW5kaW5nSW1hZ2U7IH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVBlbmRpbmdJbWFnZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVBlbmRpbmdJbWFnZS5oCShyZXZpc2lv
biAxMzU1MjYpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVQZW5kaW5n
SW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNjYsNiArNjYsNyBAQCBwdWJsaWM6CiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CisgICAgdmly
dHVhbCBib29sIGhhc0FscGhhKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0IHsgcmV0dXJuIHRy
dWU7IH0KICAgICAKIHByaXZhdGU6CiAgICAgU3R5bGVQZW5kaW5nSW1hZ2UoQ1NTVmFsdWUqIHZh
bHVlKQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTM1NTI2KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMTEtMjEgIEp1c3RpbiBOb3Zv
c2FkICA8anVub3ZAZ29vZ2xlLmNvbT4KKworICAgICAgICBBZGRpbmcgb2NjbHVzaW9uIGRldGVj
dGlvbiB0byByZWR1Y2Ugb3ZlcmRyYXcgaW4gUmVuZGVyQm94IGJhY2tncm91bmQgcmVuZGVyaW5n
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI1NTcK
KworICAgICAgICBSZXZpZXdlZCBieSBTdGVwaGVuIFdoaXRlLgorCisgICAgICAgIE5ldyB0ZXN0
IGV4ZXJjaXNlcyBkaWZmZXJlbnQgQ1NTIGJhY2tncm91bmQgc3R5bGUgdXNlIGNhc2VzIHRoYXQK
KyAgICAgICAgYXJlIGNhbmRpZGF0ZXMgZm9yIG9wdGltaXphdGlvbiBieSBvY2NsdXNpb24gY3Vs
bGluZy4KKworICAgICAgICAqIGZhc3QvYmFja2dyb3VuZHMvYmFja2dyb3VuZC1vcGFxdWUtaW1h
Z2VzLW92ZXItY29sb3IuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9iYWNrZ3JvdW5kcy9i
YWNrZ3JvdW5kLW9wYXF1ZS1pbWFnZXMtb3Zlci1jb2xvci1leHBlY3RlZC50eHQ6IEFkZGVkLgor
CiAyMDEyLTExLTIyICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgW1F0XSBVbnJldmlld2VkIGdhcmRlbmluZywgc2tpcCBmYWlsaW5nIHRlc3RzIHRvIHBh
aW50IHRoZSBib3RzIGdyZWVuLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9iYWNrZ3JvdW5kcy9i
YWNrZ3JvdW5kLW9wYXF1ZS1pbWFnZXMtb3Zlci1jb2xvci1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9iYWNrZ3JvdW5kcy9iYWNrZ3JvdW5kLW9wYXF1ZS1pbWFn
ZXMtb3Zlci1jb2xvci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2JhY2tncm91bmRzL2JhY2tncm91bmQtb3BhcXVlLWltYWdlcy1vdmVyLWNvbG9yLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNiBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6
ZSA4MDB4NjAwCisgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAo
MCwwKSBzaXplIDgwMHgxMDgKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAw
eDEwOAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDAKKyAgICAgIFJl
bmRlckJsb2NrIHtESVZ9IGF0ICgwLDApIHNpemUgNzg0eDAKKyAgICAgICAgUmVuZGVyQmxvY2sg
KGZsb2F0aW5nKSB7RElWfSBhdCAoMCwwKSBzaXplIDIweDEwMCBbYmdjb2xvcj0jRkYwMDAwXQor
ICAgICAgICBSZW5kZXJCbG9jayAoZmxvYXRpbmcpIHtESVZ9IGF0ICgyMCwwKSBzaXplIDIweDEw
MCBbYmdjb2xvcj0jRkYwMDAwXQorICAgICAgICBSZW5kZXJCbG9jayAoZmxvYXRpbmcpIHtESVZ9
IGF0ICg0MCwwKSBzaXplIDIweDEwMCBbYmdjb2xvcj0jRkYwMDAwXQorICAgICAgICBSZW5kZXJC
bG9jayAoZmxvYXRpbmcpIHtESVZ9IGF0ICg2MCwwKSBzaXplIDIweDEwMCBbYmdjb2xvcj0jRkYw
MDAwXQorICAgICAgICBSZW5kZXJCbG9jayAoZmxvYXRpbmcpIHtESVZ9IGF0ICg4MCwwKSBzaXpl
IDIweDEwMCBbYmdjb2xvcj0jRkYwMDAwXQorICAgICAgICBSZW5kZXJCbG9jayAoZmxvYXRpbmcp
IHtESVZ9IGF0ICgxMDAsMCkgc2l6ZSAyMHgxMDAgW2JnY29sb3I9I0ZGMDAwMF0KKyAgICAgICAg
UmVuZGVyQmxvY2sgKGZsb2F0aW5nKSB7RElWfSBhdCAoMTIwLDApIHNpemUgMjB4MTAwIFtiZ2Nv
bG9yPSNGRjAwMDBdCisgICAgICAgIFJlbmRlckJsb2NrIChmbG9hdGluZykge0RJVn0gYXQgKDE0
MCwwKSBzaXplIDIweDEwMCBbYmdjb2xvcj0jRkYwMDAwXQorICAgICAgICBSZW5kZXJCbG9jayAo
ZmxvYXRpbmcpIHtESVZ9IGF0ICgxNjAsMCkgc2l6ZSAyMHgxMDAgW2JnY29sb3I9I0ZGMDAwMF0K
KyAgICAgICAgUmVuZGVyQmxvY2sgKGZsb2F0aW5nKSB7RElWfSBhdCAoMTgwLDApIHNpemUgMjB4
MTAwIFtiZ2NvbG9yPSNGRjAwMDBdCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2JhY2tncm91bmRz
L2JhY2tncm91bmQtb3BhcXVlLWltYWdlcy1vdmVyLWNvbG9yLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9iYWNrZ3JvdW5kcy9iYWNrZ3JvdW5kLW9wYXF1ZS1pbWFnZXMtb3Zl
ci1jb2xvci5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9iYWNrZ3JvdW5k
cy9iYWNrZ3JvdW5kLW9wYXF1ZS1pbWFnZXMtb3Zlci1jb2xvci5odG1sCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDMzIEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8IS0tIFRl
c3QgcGFzc2VzIHdoZW4gYSBncmVlbiByZWN0YW5nbGUgaXMgZGlzcGxheWVkLgorVGhlc2UgYXJl
IGFsbCBkcmF3aW5nIGNhc2VzIHRoYXQgY2FuIGJlIG9wdGltaXplZCBieSBvY2NsdXNpb24gY3Vs
bGluZworVGhlIGZpeCBmb3IgYnVnIDEwMjU1NyBvcHRpbWl6ZXMgY2FzZXMgMSwgMiwgMywgNiwg
NywgYW5kIDgtLT4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiI+CisgICAg
LnJlZEJhY2sgeworICAgICAgICB3aWR0aDoyMHB4OworICAgICAgICBoZWlnaHQ6MTAwcHg7Cisg
ICAgICAgIGRpc3BsYXk6YmxvY2s7CisgICAgICAgIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQ7
CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJlZDsKKyAgICAgICAgYmFja2dyb3VuZC1wb3Np
dGlvbjowcHggMHB4LCAwcHggMHB4OworICAgICAgICBmbG9hdDogbGVmdDsKKyAgICB9Cis8L3N0
eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2PgorICAgIDxkaXYgaWQ9ImNhc2VfMSIgY2xhc3M9
InJlZEJhY2siIHN0eWxlPSJiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vLi4vaHR0cC90ZXN0cy9t
dWx0aXBhcnQvcmVzb3VyY2VzL2dyZWVuLTEwMHgxMDAucG5nKSI+PC9kaXY+CisgICAgPGRpdiBp
ZD0iY2FzZV8yIiBjbGFzcz0icmVkQmFjayIgc3R5bGU9ImJhY2tncm91bmQtaW1hZ2U6IC13ZWJr
aXQtbGluZWFyLWdyYWRpZW50KHRvcCwgZ3JlZW4sIGdyZWVuKSI+PC9kaXY+CisgICAgPGRpdiBp
ZD0iY2FzZV8zIiBjbGFzcz0icmVkQmFjayIgc3R5bGU9ImJhY2tncm91bmQtaW1hZ2U6IC13ZWJr
aXQtY3Jvc3MtZmFkZSh1cmwoLi4vLi4vaHR0cC90ZXN0cy9tdWx0aXBhcnQvcmVzb3VyY2VzL2dy
ZWVuLTEwMHgxMDAucG5nKSwgdXJsKC4uLy4uL2h0dHAvdGVzdHMvbXVsdGlwYXJ0L3Jlc291cmNl
cy9ncmVlbi0xMDB4MTAwLnBuZyksIDUwJSkiPjwvZGl2PgorICAgIDxkaXYgaWQ9ImNhc2VfNCIg
Y2xhc3M9InJlZEJhY2siIHN0eWxlPSJiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OyBiYWNr
Z3JvdW5kLWltYWdlOiB1cmwoLi4vLi4vaHR0cC90ZXN0cy9tdWx0aXBhcnQvcmVzb3VyY2VzL2dy
ZWVuLTEwMHgxMDAucG5nKSI+PC9kaXY+CisgICAgPGRpdiBpZD0iY2FzZV81IiBjbGFzcz0icmVk
QmFjayIgc3R5bGU9ImJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDsgYmFja2dyb3VuZC1pbWFn
ZTogdXJsKC4uLy4uL2h0dHAvdGVzdHMvbXVsdGlwYXJ0L3Jlc291cmNlcy9ncmVlbi0xMDB4MTAw
LnBuZykiPjwvZGl2PgorICAgIDxkaXYgaWQ9ImNhc2VfNiIgY2xhc3M9InJlZEJhY2siIHN0eWxl
PSJiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vLi4vaHR0cC90ZXN0cy9tdWx0aXBhcnQvcmVzb3Vy
Y2VzL2dyZWVuLTEwMHgxMDAucG5nKSx1cmwocmVzb3VyY2VzLzY0eDMyLXJlZC5wbmcpIj48L2Rp
dj4KKyAgICA8ZGl2IGlkPSJjYXNlXzciIGNsYXNzPSJyZWRCYWNrIiBzdHlsZT0iYmFja2dyb3Vu
ZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCBncmVlbiwgZ3JlZW4pLHVybChy
ZXNvdXJjZXMvNjR4MzItcmVkLnBuZykiPjwvZGl2PgorICAgIDxkaXYgaWQ9ImNhc2VfOCIgY2xh
c3M9InJlZEJhY2siIHN0eWxlPSJiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWNyb3NzLWZhZGUo
dXJsKC4uLy4uL2h0dHAvdGVzdHMvbXVsdGlwYXJ0L3Jlc291cmNlcy9ncmVlbi0xMDB4MTAwLnBu
ZyksdXJsKC4uLy4uL2h0dHAvdGVzdHMvbXVsdGlwYXJ0L3Jlc291cmNlcy9ncmVlbi0xMDB4MTAw
LnBuZyksIDUwJSksdXJsKHJlc291cmNlcy82NHgzMi1yZWQucG5nKSI+PC9kaXY+CisgICAgPGRp
diBpZD0iY2FzZV85IiBjbGFzcz0icmVkQmFjayIgc3R5bGU9ImJhY2tncm91bmQtcmVwZWF0OiBu
by1yZXBlYXQ7IGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi8uLi9odHRwL3Rlc3RzL211bHRpcGFy
dC9yZXNvdXJjZXMvZ3JlZW4tMTAweDEwMC5wbmcpLHVybChyZXNvdXJjZXMvNjR4MzItcmVkLnBu
ZykiPjwvZGl2PgorICAgIDxkaXYgaWQ9ImNhc2VfMTAiIGNsYXNzPSJyZWRCYWNrIiBzdHlsZT0i
YmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14OyBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vLi4v
aHR0cC90ZXN0cy9tdWx0aXBhcnQvcmVzb3VyY2VzL2dyZWVuLTEwMHgxMDAucG5nKSx1cmwocmVz
b3VyY2VzLzY0eDMyLXJlZC5wbmcpIj48L2Rpdj4KKzwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpJ
bmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25z
CShyZXZpc2lvbiAxMzU1MjYpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0
RXhwZWN0YXRpb25zCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYzLDYgKzEyNjMsOSBAQCB3ZWJraXQu
b3JnL2IvMjU4MTcgc3ZnL2RvbS9TVkdTY3JpcHRFbGVtCiAKIHdlYmtpdC5vcmcvYi82MDExOCBb
IE1hYyBdIHN2Zy9kb20vU1ZHU2NyaXB0RWxlbWVudC9zY3JpcHQtc2V0LWhyZWYuc3ZnIFsgRmFp
bHVyZSBQYXNzIF0KIAorIyBOZXcgdGVzdCBpbiBuZWVkIG9mIG5ldyBiYXNlbGluZXMKK3dlYmtp
dC5vcmcvYi8xMDI1NTcgZmFzdC9iYWNrZ3JvdW5kcy9iYWNrZ3JvdW5kLW9wYXF1ZS1pbWFnZXMt
b3Zlci1jb2xvci5odG1sIFsgUGFzcyBJbWFnZU9ubHlGYWlsdXJlIEZhaWx1cmUgTWlzc2luZyBd
CisKICMgSW50cm9kdWNlZCBkdWUgdG8gQlVHV0s1MzUxMiwgZmFpbHMgdW5kZXIgU2tpYSByaWdo
dCBub3cKIHdlYmtpdC5vcmcvYi82NTkzOSBzdmcvY3VzdG9tL2dldEJCb3gtcGF0aC5zdmcgWyBG
YWlsdXJlIF0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175805</attachid>
            <date>2012-11-23 07:15:56 -0800</date>
            <delta_ts>2012-11-23 09:42:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102557-20121123101339.patch</filename>
            <type>text/plain</type>
            <size>28302</size>
            <attacher name="Justin Novosad">junov</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNTYwNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg1IEBACisyMDEyLTExLTIzICBKdXN0aW4g
Tm92b3NhZCAgPGp1bm92QGdvb2dsZS5jb20+CisKKyAgICAgICAgQWRkaW5nIG9jY2x1c2lvbiBk
ZXRlY3Rpb24gdG8gcmVkdWNlIG92ZXJkcmF3IGluIFJlbmRlckJveCBiYWNrZ3JvdW5kIHJlbmRl
cmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAy
NTU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
aW5nIGhhc0FscGhhIG1ldGhvZCB0byBhbGwgY2xhc3NlcyBkZXJ2aXZlZCBmcm9tIENTU0ltYWdl
VmFsdWUgYW5kCisgICAgICAgIFN0eWxlSW1hZ2UsIGluIG9yZGVyIHRvIHN1cHBvcnQgb2NjbHVz
aW9uIHRlc3RpbmcuIAorICAgICAgICBUaGlzIGFsbG93cyB0aGUgRmlsbExheWVyIHJlY3Vyc2lv
biB0byBzdG9wIGVhcmx5IHdoZW4gYW4gb3BhcXVlIGxheWVyCisgICAgICAgIGlzIGVuY291bnRl
cmVkIHdoaWxlIGFwcGx5aW5nIGEgQ1NTIGJhY2tncm91bmQgc3R5bGUuIFRoaXMgYWxzbyBhbGxv
d3MKKyAgICAgICAgdGhlIGVsaW1pbmF0aW9uIG9mIGJhY2tncm91bmQgY29sb3IgYXBwbGljYXRp
b24gd2hlbiB0aGUgYmFja2dyb3VuZCBpcworICAgICAgICBjb21wbGV0ZWx5IGNvdmVyZWQgYnkg
YW4gaW1hZ2UuICBUaGUgb3B0aW1pemF0aW9uIGFsc28gc2tpcHMgdGhlCisgICAgICAgIGNsZWFy
aW5nIG9mIHRoZSBwYWdlJ3Mgcm9vdCBlbGVtZW50IHdoZW4gdGhlIHBhZ2UgYmFja2dyb3VuZCBp
cworICAgICAgICBlbnRpcmVseSBjb3ZlcmVkIGJ5IGFuIGltYWdlIChlLmcgYSB0aWxlZCBiaXRt
YXAgb3IgYSBncmFkaWVudCkKKworICAgICAgICBUZXN0OiBmYXN0L2JhY2tncm91bmRzL2JhY2tn
cm91bmQtb3BhcXVlLWltYWdlcy1vdmVyLWNvbG9yLmh0bWwKKworICAgICAgICAqIGNzcy9DU1ND
cm9zc2ZhZGVWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdWJpbWFnZUhhc0FscGhhKToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ3Jvc3NmYWRlVmFsdWU6
OmlzUGVuZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NDcm9zc2ZhZGVWYWx1ZTo6aGFzQWxw
aGEpOgorICAgICAgICAqIGNzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5oOgorICAgICAgICAoQ1NTQ3Jv
c3NmYWRlVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NHcmFkaWVudFZhbHVlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0dyYWRpZW50VmFsdWU6Omhhc0FscGhhKToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAqIGNzcy9DU1NHcmFkaWVudFZhbHVlLmg6CisgICAgICAgIChDU1NHcmFk
aWVudFZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpoYXNBbHBoYSk6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5oOgor
ICAgICAgICAoQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU0ltYWdl
VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTSW1hZ2VWYWx1ZTo6aGFzQWxwaGEpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogY3NzL0NTU0ltYWdlVmFsdWUuaDoKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoQ1NTSW1hZ2VWYWx1ZSk6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpj
dXJyZW50RnJhbWVIYXNBbHBoYSk6CisgICAgICAgIFRlc3Qgd2hldGhlciBhIGNhY2hlZCBpbWFn
ZSBoYXMgYWxwaGEsIHdpdGggc2lkZSBlZmZlY3Qgb2YgZW5zdXJpbmcKKyAgICAgICAgdGhlIGlt
YWdlIGlzIGluIGNhY2hlLiAobmV3IG1ldGhvZCkKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAoQ2FjaGVkSW1hZ2UpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQm94OjpwYWludEZpbGxMYXllcnMpOgorICAgICAgICBBZGRlZCBsYXllciByZWN1cnNpb24g
ZWFybHkgZXhpdCB3aGVuIGFuIG9wYXF1ZSBsYXllciBpcyBlbmNvdW50ZXJlZC4KKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQpOgorICAgICAgICBF
bGltaW5hdGVkIGJhY2tncm91bmQgY29sb3IgZmlsbCB3aGVuIHRoZSBsYXllciBjb250YWlucyBh
biBvcGFxdWUKKyAgICAgICAgaW1hZ2UgdGhhdCBjb3ZlcnMgdGhlIGVudGlyZSBSZW5kZXJCb3gu
CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGaWxsTGF5ZXI6Omhhc09wYXF1ZUltYWdlKToKKyAgICAgICAgUmV0dXJucyB0cnVlIGlm
IHRoZSBsYXllcidzIGltYWdlIGlzIGtub3duIHRvIGJlIGZ1bGx5IG9wYXF1ZS4KKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RmlsbExheWVyOjpoYXNSZXBlYXRYWSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5oOgorICAgICAgICAoRmlsbExheWVy
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZUNhY2hlZEltYWdlOjpoYXNBbHBoYSk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5oOgorICAg
ICAgICAoU3R5bGVDYWNoZWRJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxl
Q2FjaGVkSW1hZ2VTZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVDYWNoZWRJbWFnZVNl
dDo6aGFzQWxwaGEpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0
eWxlL1N0eWxlQ2FjaGVkSW1hZ2VTZXQuaDoKKyAgICAgICAgKFN0eWxlQ2FjaGVkSW1hZ2VTZXQp
OgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlR2VuZXJhdGVkSW1hZ2U6Omhhc0FscGhhKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdl
Lmg6CisgICAgICAgIChTdHlsZUdlbmVyYXRlZEltYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3R5bGUvU3R5bGVJbWFnZS5oOgorICAgICAgICAoU3R5bGVJbWFnZSk6CisgICAgICAgICogcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlUGVuZGluZ0ltYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZVBlbmRpbmdJbWFnZTo6aGFzQWxwaGEpOgorCiAyMDEyLTExLTIzICBQYXZlbCBGZWxkbWFuICA8
cGZlbGRtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGRhbWFnaW5n
IGxhc3QgY2h1bmsgZG9lcyBub3QgcmVtb3ZlIGl0cyBnYXJiYWdlIGZyb20gRE9NCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHAJKHJldmlzaW9uIDEzNTUyNikK
KysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTUyLDYgKzUyLDE5IEBAIHN0YXRpYyBib29sIHN1YmltYWdlSXNQZW5kaW5nKENTU1Zh
bHVlKgogICAgIHJldHVybiBmYWxzZTsKIH0KIAorc3RhdGljIGJvb2wgc3ViaW1hZ2VIYXNBbHBo
YShDU1NWYWx1ZSogdmFsdWUsIGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIpCit7CisgICAg
aWYgKHZhbHVlLT5pc0ltYWdlVmFsdWUoKSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PENT
U0ltYWdlVmFsdWUqPih2YWx1ZSktPmhhc0FscGhhKHJlbmRlcmVyKTsKKworICAgIGlmICh2YWx1
ZS0+aXNJbWFnZUdlbmVyYXRvclZhbHVlKCkpCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxD
U1NJbWFnZUdlbmVyYXRvclZhbHVlKj4odmFsdWUpLT5oYXNBbHBoYShyZW5kZXJlcik7CisKKyAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKworICAgIHJldHVybiB0cnVlOworfQorCiBzdGF0aWMg
Q2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlRm9yQ1NTVmFsdWUoQ1NTVmFsdWUqIHZhbHVlLCBDYWNo
ZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIpCiB7CiAgICAgaWYgKCF2YWx1
ZSkKQEAgLTEyNiw2ICsxMzksMTEgQEAgYm9vbCBDU1NDcm9zc2ZhZGVWYWx1ZTo6aXNQZW5kaW5n
KCkgY29ucwogICAgIHJldHVybiBzdWJpbWFnZUlzUGVuZGluZyhtX2Zyb21WYWx1ZS5nZXQoKSkg
fHwgc3ViaW1hZ2VJc1BlbmRpbmcobV90b1ZhbHVlLmdldCgpKTsKIH0KIAorYm9vbCBDU1NDcm9z
c2ZhZGVWYWx1ZTo6aGFzQWxwaGEoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikgY29uc3QK
K3sKKyAgICByZXR1cm4gc3ViaW1hZ2VIYXNBbHBoYShtX2Zyb21WYWx1ZS5nZXQoKSwgcmVuZGVy
ZXIpIHx8IHN1YmltYWdlSGFzQWxwaGEobV90b1ZhbHVlLmdldCgpLCByZW5kZXJlcik7Cit9CisK
IHZvaWQgQ1NTQ3Jvc3NmYWRlVmFsdWU6OmxvYWRTdWJpbWFnZXMoQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyKQogewogICAgIG1fY2FjaGVkRnJvbUltYWdlID0gY2Fj
aGVkSW1hZ2VGb3JDU1NWYWx1ZShtX2Zyb21WYWx1ZS5nZXQoKSwgY2FjaGVkUmVzb3VyY2VMb2Fk
ZXIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmgJKHJldmlzaW9u
IDEzNTUyNikKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01OCw2ICs1OCw4IEBAIHB1YmxpYzoKICAgICBJbnRTaXplIGZpeGVkU2l6
ZShjb25zdCBSZW5kZXJPYmplY3QqKTsKIAogICAgIGJvb2wgaXNQZW5kaW5nKCkgY29uc3Q7Cisg
ICAgYm9vbCBoYXNBbHBoYShjb25zdCBSZW5kZXJPYmplY3QqKSBjb25zdDsKKwogICAgIHZvaWQg
bG9hZFN1YmltYWdlcyhDYWNoZWRSZXNvdXJjZUxvYWRlciopOwogCiAgICAgdm9pZCBzZXRQZXJj
ZW50YWdlKFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHBlcmNlbnRhZ2VWYWx1ZSkgeyBt
X3BlcmNlbnRhZ2VWYWx1ZSA9IHBlcmNlbnRhZ2VWYWx1ZTsgfQpJbmRleDogU291cmNlL1dlYkNv
cmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNwcAkocmV2aXNpb24gMTM1NTI2KQorKysgU291cmNlL1dl
YkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NjIsNiAr
NDYyLDE1IEBAIGJvb2wgQ1NTR3JhZGllbnRWYWx1ZTo6aXNDYWNoZWFibGUoKSBjb24KICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBDU1NHcmFkaWVudFZhbHVlOjpoYXNBbHBoYShjb25zdCBS
ZW5kZXJPYmplY3QqKSBjb25zdAoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9zdG9w
cy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAobV9zdG9wc1tpXS5tX3Jlc29sdmVkQ29sb3Iu
aGFzQWxwaGEoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKIHZvaWQgQ1NTR3JhZGllbnRWYWx1ZTo6cmVwb3J0QmFzZUNsYXNzTWVtb3J5
VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBN
ZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5
VHlwZXM6OkNTUyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmgJKHJl
dmlzaW9uIDEzNTUyNikKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTc0LDYgKzc0LDggQEAgcHVibGljOgogICAgIEludFNpemUgZml4
ZWRTaXplKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0IHsgcmV0dXJuIEludFNpemUoKTsgfQog
CiAgICAgYm9vbCBpc1BlbmRpbmcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wg
aGFzQWxwaGEoY29uc3QgUmVuZGVyT2JqZWN0KikgY29uc3Q7CisKICAgICB2b2lkIGxvYWRTdWJp
bWFnZXMoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqKSB7IH0KICAgICBQYXNzUmVmUHRyPENTU0dyYWRp
ZW50VmFsdWU+IGdyYWRpZW50V2l0aFN0eWxlc1Jlc29sdmVkKFN0eWxlUmVzb2x2ZXIqKTsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcAko
cmV2aXNpb24gMTM1NTI2KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9y
VmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTYsNiArMTk2LDIzIEBAIGJvb2wgQ1NTSW1h
Z2VHZW5lcmF0b3JWYWx1ZTo6aXNQZW5kaW5nKCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jv
b2wgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6aGFzQWxwaGEoY29uc3QgUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlcikgY29uc3QKK3sKKyAgICBzd2l0Y2ggKGNsYXNzVHlwZSgpKSB7CisgICAgY2FzZSBD
cm9zc2ZhZGVDbGFzczoKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IENTU0Nyb3Nz
ZmFkZVZhbHVlKj4odGhpcyktPmhhc0FscGhhKHJlbmRlcmVyKTsKKyAgICBjYXNlIENhbnZhc0Ns
YXNzOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBjYXNlIExpbmVhckdyYWRpZW50Q2xhc3M6
CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBDU1NMaW5lYXJHcmFkaWVudFZhbHVl
Kj4odGhpcyktPmhhc0FscGhhKHJlbmRlcmVyKTsKKyAgICBjYXNlIFJhZGlhbEdyYWRpZW50Q2xh
c3M6CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBDU1NSYWRpYWxHcmFkaWVudFZh
bHVlKj4odGhpcyktPmhhc0FscGhhKHJlbmRlcmVyKTsKKyAgICBkZWZhdWx0OgorICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQg
Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6bG9hZFN1YmltYWdlcyhDYWNoZWRSZXNvdXJjZUxvYWRl
ciogY2FjaGVkUmVzb3VyY2VMb2FkZXIpCiB7CiAgICAgc3dpdGNoIChjbGFzc1R5cGUoKSkgewpJ
bmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5oCShyZXZp
c2lvbiAxMzU1MjYpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2Myw3IEBAIHB1YmxpYzoKICAgICBJbnRTaXpl
IGZpeGVkU2l6ZShjb25zdCBSZW5kZXJPYmplY3QqKTsKIAogICAgIGJvb2wgaXNQZW5kaW5nKCkg
Y29uc3Q7CisgICAgYm9vbCBoYXNBbHBoYShjb25zdCBSZW5kZXJPYmplY3QqKSBjb25zdDsKIAog
ICAgIHZvaWQgbG9hZFN1YmltYWdlcyhDYWNoZWRSZXNvdXJjZUxvYWRlciopOwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuY3BwCShyZXZpc2lvbiAxMzU1MjYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MCw0
ICsxNDAsOSBAQCB2b2lkIENTU0ltYWdlVmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vCiAgICAg
Ly8gTm8gbmVlZCB0byByZXBvcnQgbV9pbWFnZSBhcyBpdCBpcyBjb3VudGVkIGFzIHBhcnQgb2Yg
UmVuZGVyQXJlbmEuCiB9CiAKK2Jvb2wgQ1NTSW1hZ2VWYWx1ZTo6aGFzQWxwaGEoY29uc3QgUmVu
ZGVyT2JqZWN0KiByZW5kZXJlcikgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbWFnZSA/IG1faW1h
Z2UtPmhhc0FscGhhKHJlbmRlcmVyKSA6IHRydWU7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuaAkocmV2aXNpb24gMTM1NTI2KQor
KysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAt
MzAsNiArMzAsNyBAQCBjbGFzcyBDYWNoZWRSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIEVsZW1lbnQ7
CiBjbGFzcyBTdHlsZUNhY2hlZEltYWdlOwogY2xhc3MgU3R5bGVJbWFnZTsKK2NsYXNzIFJlbmRl
ck9iamVjdDsKIAogY2xhc3MgQ1NTSW1hZ2VWYWx1ZSA6IHB1YmxpYyBDU1NWYWx1ZSB7CiBwdWJs
aWM6CkBAIC01MSw2ICs1Miw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFu
dE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAorICAgIGJvb2wgaGFzQWxw
aGEoY29uc3QgUmVuZGVyT2JqZWN0KikgY29uc3Q7CisKIHByb3RlY3RlZDoKICAgICBDU1NJbWFn
ZVZhbHVlKENsYXNzVHlwZSwgY29uc3QgU3RyaW5nJiB1cmwpOwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAJKHJldmlzaW9uIDEzNTUyNikKKysr
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ3NSw0ICs0NzUsMTIgQEAgdm9pZCBDYWNoZWRJbWFnZTo6cmVwb3J0TWVtb3J5VXNh
Z2UoTWVtbwogI2VuZGlmCiB9CiAKK2Jvb2wgQ2FjaGVkSW1hZ2U6OmN1cnJlbnRGcmFtZUhhc0Fs
cGhhKGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIpCit7CisgICAgSW1hZ2UqIGltYWdlID0g
aW1hZ2VGb3JSZW5kZXJlcihyZW5kZXJlcik7CisgICAgaWYgKGltYWdlLT5pc0JpdG1hcEltYWdl
KCkpCisgICAgICAgIGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOyAvLyBmb3Jj
ZSBkZWNvZGUKKyAgICByZXR1cm4gaW1hZ2UtPmN1cnJlbnRGcmFtZUhhc0FscGhhKCk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRJbWFnZS5oCShyZXZpc2lvbiAxMzU1MjYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNiArNTIsNyBAQCBw
dWJsaWM6CiAgICAgSW1hZ2UqIGltYWdlKCk7IC8vIFJldHVybnMgdGhlIG51bGxJbWFnZSgpIGlm
IHRoZSBpbWFnZSBpcyBub3QgYXZhaWxhYmxlIHlldC4KICAgICBJbWFnZSogaW1hZ2VGb3JSZW5k
ZXJlcihjb25zdCBSZW5kZXJPYmplY3QqKTsgLy8gUmV0dXJucyB0aGUgbnVsbEltYWdlKCkgaWYg
dGhlIGltYWdlIGlzIG5vdCBhdmFpbGFibGUgeWV0LgogICAgIGJvb2wgaGFzSW1hZ2UoKSBjb25z
dCB7IHJldHVybiBtX2ltYWdlLmdldCgpOyB9CisgICAgYm9vbCBjdXJyZW50RnJhbWVIYXNBbHBo
YShjb25zdCBSZW5kZXJPYmplY3QqKTsgLy8gU2lkZSBlZmZlY3Q6IGVuc3VyZXMgZGVjb2RlZCBp
bWFnZSBpcyBpbiBjYWNoZSwgdGhlcmVmb3JlIHNob3VsZCBvbmx5IGJlIGNhbGxlZCB3aGVuIGFi
b3V0IHRvIGRyYXcgdGhlIGltYWdlLgogCiAgICAgc3RkOjpwYWlyPEltYWdlKiwgZmxvYXQ+IGJy
b2tlbkltYWdlKGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKSBjb25zdDsgLy8gUmV0dXJucyBhbiBp
bWFnZSBhbmQgdGhlIGltYWdlJ3MgcmVzb2x1dGlvbiBzY2FsZSBmYWN0b3IuCiAgICAgYm9vbCB3
aWxsUGFpbnRCcm9rZW5JbWFnZSgpIGNvbnN0OyAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3guY3BwCShyZXZpc2lvbiAxMzU1MjYpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAwMSw3ICsxMDAxLDE0IEBA
IHZvaWQgUmVuZGVyQm94OjpwYWludEZpbGxMYXllcnMoY29uc3QgUGEKICAgICBpZiAoIWZpbGxM
YXllcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgcGFpbnRGaWxsTGF5ZXJzKHBhaW50SW5mbywg
YywgZmlsbExheWVyLT5uZXh0KCksIHJlY3QsIGJsZWVkQXZvaWRhbmNlLCBvcCwgYmFja2dyb3Vu
ZE9iamVjdCk7CisgICAgLy8gRklYTUUgOiBJdCB3b3VsZCBiZSBwb3NzaWJsZSBmb3IgdGhlIGZv
bGxvd2luZyBvY2NsdXNpb24gY3VsbGluZyB0ZXN0IHRvIGJlIG1vcmUgYWdncmVzc2l2ZSAKKyAg
ICAvLyBvbiBsYXllcnMgd2l0aCBubyByZXBlYXQgYnkgdGVzdGluZyB3aGV0aGVyIHRoZSBpbWFn
ZSBjb3ZlcnMgdGhlIGxheW91dCByZWN0LgorICAgIC8vIFRlc3RpbmcgdGhhdCBoZXJlIHdvdWxk
IGltcGx5IGR1cGxpY2F0aW5nIGEgbG90IG9mIGNhbGN1bGF0aW9ucyB0aGF0IGFyZSBjdXJyZW50
bHkgZG9uZSBpbgorICAgIC8vIFJlbmRlckJveE1vZGVsT0JqZWN0OjpwYWludEZpbGxMYXllckV4
dGVuZGVkLiBBIG1vcmUgZWZmaWNpZW50IHNvbHV0aW9uIG1pZ2h0IGJlIHRvIG1vdmUKKyAgICAv
LyB0aGUgbGF5ZXIgcmVjdXJzaW9uIGludG8gcGFpbnRGaWxsTGF5ZXJFeHRlbmRlZCwgb3IgdG8g
Y29tcHV0ZSB0aGUgbGF5ZXIgZ2VvbWV0cnkgaGVyZQorICAgIC8vIGFuZCBwYXNzIGl0IGRvd24u
CisgICAgaWYgKGZpbGxMYXllci0+bmV4dCgpICYmICghZmlsbExheWVyLT5oYXNPcGFxdWVJbWFn
ZSh0aGlzKSB8fCAhZmlsbExheWVyLT5pbWFnZSgpLT5jYW5SZW5kZXIodGhpcywgc3R5bGUoKS0+
ZWZmZWN0aXZlWm9vbSgpKSB8fCAhZmlsbExheWVyLT5oYXNSZXBlYXRYWSgpKSkKKyAgICAgICAg
cGFpbnRGaWxsTGF5ZXJzKHBhaW50SW5mbywgYywgZmlsbExheWVyLT5uZXh0KCksIHJlY3QsIGJs
ZWVkQXZvaWRhbmNlLCBvcCwgYmFja2dyb3VuZE9iamVjdCk7CiAgICAgcGFpbnRGaWxsTGF5ZXIo
cGFpbnRJbmZvLCBjLCBmaWxsTGF5ZXIsIHJlY3QsIGJsZWVkQXZvaWRhbmNlLCBvcCwgYmFja2dy
b3VuZE9iamVjdCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3hNb2RlbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAkocmV2aXNpb24gMTM1NTI2KQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtOTA3LDggKzkwNywxMCBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxM
YXllCiAgICAgICAgIHZpZXcoKS0+ZnJhbWVWaWV3KCktPnNldENvbnRlbnRJc09wYXF1ZShpc09w
YXF1ZVJvb3QpOwogICAgIH0KIAotICAgIC8vIFBhaW50IHRoZSBjb2xvciBmaXJzdCB1bmRlcm5l
YXRoIGFsbCBpbWFnZXMuCi0gICAgaWYgKCFiZ0xheWVyLT5uZXh0KCkpIHsKKyAgICAvLyBQYWlu
dCB0aGUgY29sb3IgZmlyc3QgdW5kZXJuZWF0aCBhbGwgaW1hZ2VzLCBjdWxsZWQgaWYgYmFja2dy
b3VuZCBpbWFnZSBvY2NsdWRlcyBpdC4KKyAgICAvLyBGSVhNRTogSW4gdGhlIGJnTGF5ZXItPmhh
c0Zpbml0ZUJvdW5kcygpIGNhc2UsIHdlIGNvdWxkIGltcHJvdmUgdGhlIGN1bGxpbmcgdGVzdAor
ICAgIC8vIGJ5IHZlcmlmeWluZyB3aGV0aGVyIHRoZSBiYWNrZ3JvdW5kIGltYWdlIGNvdmVycyB0
aGUgZW50aXJlIGxheW91dCByZWN0LgorICAgIGlmICghYmdMYXllci0+bmV4dCgpICYmICEoc2hv
dWxkUGFpbnRCYWNrZ3JvdW5kSW1hZ2UgJiYgYmdMYXllci0+aGFzT3BhcXVlSW1hZ2UodGhpcykg
JiYgYmdMYXllci0+aGFzUmVwZWF0WFkoKSkpIHsKICAgICAgICAgSW50UmVjdCBiYWNrZ3JvdW5k
UmVjdChwaXhlbFNuYXBwZWRJbnRSZWN0KHNjcm9sbGVkUGFpbnRSZWN0KSk7CiAgICAgICAgIGJv
b2wgYm94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5kID0gdGhpcy0+Ym94U2hhZG93
U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5kKGJsZWVkQXZvaWRhbmNlLCBib3gpOwogICAgICAg
ICBpZiAoIWJveFNoYWRvd1Nob3VsZEJlQXBwbGllZFRvQmFja2dyb3VuZCkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuY3BwCShyZXZpc2lvbiAxMzU1
MjYpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjgwLDQgKzI4MCwyMyBAQCBib29sIEZpbGxMYXllcjo6aW1hZ2VzQXJl
TG9hZGVkKCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBGaWxsTGF5ZXI6Omhh
c09wYXF1ZUltYWdlKGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIpIGNvbnN0Cit7CisgICAg
aWYgKCFtX2ltYWdlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobV9jb21wb3Np
dGUgPT0gQ29tcG9zaXRlQ2xlYXIgfHwgbV9jb21wb3NpdGUgPT0gQ29tcG9zaXRlQ29weSkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAobV9jb21wb3NpdGUgPT0gQ29tcG9zaXRlU291
cmNlT3ZlcikKKyAgICAgICAgcmV0dXJuICFtX2ltYWdlLT5oYXNBbHBoYShyZW5kZXJlcik7CisK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgRmlsbExheWVyOjpoYXNSZXBlYXRYWSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fcmVwZWF0WCA9PSBSZXBlYXRGaWxsICYmIG1fcmVwZWF0WSA9
PSBSZXBlYXRGaWxsOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5oCShyZXZpc2lvbiAxMzU1MjYpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE0NCw2ICsxNDQsOSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX25leHQgPyBt
X25leHQtPmhhc0ZpeGVkSW1hZ2UoKSA6IGZhbHNlOwogICAgIH0KIAorICAgIGJvb2wgaGFzT3Bh
cXVlSW1hZ2UoY29uc3QgUmVuZGVyT2JqZWN0KikgY29uc3Q7CisgICAgYm9vbCBoYXNSZXBlYXRY
WSgpIGNvbnN0OworCiAgICAgRUZpbGxMYXllclR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PEVGaWxsTGF5ZXJUeXBlPihtX3R5cGUpOyB9CiAKICAgICB2b2lkIGZpbGxVbnNl
dFByb3BlcnRpZXMoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZUNhY2hlZEltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5jcHAJKHJldmlzaW9uIDEzNTUyNikKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTA2LDQgKzEwNiw5IEBAIFBhc3NSZWZQdHI8SW1hZ2U+IFN0eWxlQ2FjaGVkSW1hZ2U6
OmltYWcKICAgICByZXR1cm4gbV9pbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihyZW5kZXJlcik7CiB9
CiAKK2Jvb2wgU3R5bGVDYWNoZWRJbWFnZTo6aGFzQWxwaGEoY29uc3QgUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlcikgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbWFnZS0+Y3VycmVudEZyYW1lSGFzQWxw
aGEocmVuZGVyZXIpOworfQorCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVDYWNoZWRJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlLmgJKHJldmlzaW9uIDEzNTUyNikKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTU2LDYgKzU2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBhZGRDbGllbnQo
UmVuZGVyT2JqZWN0Kik7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUNsaWVudChSZW5kZXJPYmpl
Y3QqKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlKFJlbmRlck9iamVjdCos
IGNvbnN0IEludFNpemUmKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzQWxwaGEoY29uc3Qg
UmVuZGVyT2JqZWN0KikgY29uc3QgT1ZFUlJJREU7CiAgICAgCiBwcml2YXRlOgogICAgIGV4cGxp
Y2l0IFN0eWxlQ2FjaGVkSW1hZ2UoQ2FjaGVkSW1hZ2UqKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlU2V0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZVNldC5jcHAJKHJl
dmlzaW9uIDEzNTUyNikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNh
Y2hlZEltYWdlU2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDYgKzExNiwxMSBAQCBQYXNz
UmVmUHRyPEltYWdlPiBTdHlsZUNhY2hlZEltYWdlU2V0OjppCiAgICAgcmV0dXJuIG1fYmVzdEZp
dEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKHJlbmRlcmVyKTsKIH0KIAorYm9vbCBTdHlsZUNhY2hl
ZEltYWdlU2V0OjpoYXNBbHBoYShjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKSBjb25zdAor
eworICAgIHJldHVybiBtX2Jlc3RGaXRJbWFnZS0+Y3VycmVudEZyYW1lSGFzQWxwaGEocmVuZGVy
ZXIpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoQ1NT
X0lNQUdFX1NFVCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNh
Y2hlZEltYWdlU2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlQ2FjaGVkSW1hZ2VTZXQuaAkocmV2aXNpb24gMTM1NTI2KQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2VTZXQuaAkod29ya2luZyBjb3B5
KQpAQCAtNzEsNiArNzEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUNsaWVu
dChSZW5kZXJPYmplY3QqKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlKFJl
bmRlck9iamVjdCosIGNvbnN0IEludFNpemUmKSBjb25zdDsKICAgICB2aXJ0dWFsIGZsb2F0IGlt
YWdlU2NhbGVGYWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlU2NhbGVGYWN0b3I7IH0KKyAg
ICB2aXJ0dWFsIGJvb2wgaGFzQWxwaGEoY29uc3QgUmVuZGVyT2JqZWN0KikgY29uc3QgT1ZFUlJJ
REU7CiAgICAgCiBwcml2YXRlOgogICAgIFN0eWxlQ2FjaGVkSW1hZ2VTZXQoQ2FjaGVkSW1hZ2Uq
LCBmbG9hdCBpbWFnZVNjYWxlRmFjdG9yLCBDU1NJbWFnZVNldFZhbHVlKik7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJbWFnZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1h
Z2UuY3BwCShyZXZpc2lvbiAxMzU1MjYpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVHZW5lcmF0ZWRJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5LDQgKzg5LDkg
QEAgUGFzc1JlZlB0cjxJbWFnZT4gU3R5bGVHZW5lcmF0ZWRJbWFnZTo6aQogICAgIHJldHVybiBt
X2ltYWdlR2VuZXJhdG9yVmFsdWUtPmltYWdlKHJlbmRlcmVyLCBzaXplKTsKIH0KIAorYm9vbCBT
dHlsZUdlbmVyYXRlZEltYWdlOjpoYXNBbHBoYShjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVy
KSBjb25zdAoreworICAgIHJldHVybiBtX2ltYWdlR2VuZXJhdG9yVmFsdWUtPmhhc0FscGhhKHJl
bmRlcmVyKTsKK30KKwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0
eWxlR2VuZXJhdGVkSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJbWFnZS5oCShyZXZpc2lvbiAxMzU1MjYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJbWFnZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC01MSw2ICs1MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYWRkQ2xp
ZW50KFJlbmRlck9iamVjdCopOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVDbGllbnQoUmVuZGVy
T2JqZWN0Kik7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEltYWdlPiBpbWFnZShSZW5kZXJPYmpl
Y3QqLCBjb25zdCBJbnRTaXplJikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGhhc0FscGhhKGNv
bnN0IFJlbmRlck9iamVjdCopIGNvbnN0IE9WRVJSSURFOwogICAgIAogcHJpdmF0ZToKICAgICBT
dHlsZUdlbmVyYXRlZEltYWdlKFBhc3NSZWZQdHI8Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZT4pOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlSW1hZ2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVJbWFnZS5oCShyZXZp
c2lvbiAxMzU1MjYpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVJbWFn
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02NCw2ICs2NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlKFJlbmRlck9iamVjdCosIGNvbnN0IEludFNpemUmKSBj
b25zdCA9IDA7CiAgICAgdmlydHVhbCBXcmFwcGVkSW1hZ2VQdHIgZGF0YSgpIGNvbnN0ID0gMDsK
ICAgICB2aXJ0dWFsIGZsb2F0IGltYWdlU2NhbGVGYWN0b3IoKSBjb25zdCB7IHJldHVybiAxOyB9
CisgICAgdmlydHVhbCBib29sIGhhc0FscGhhKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0ID0g
MDsKIAogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc0NhY2hlZEltYWdlKCkgY29uc3QgeyByZXR1
cm4gbV9pc0NhY2hlZEltYWdlOyB9CiAgICAgQUxXQVlTX0lOTElORSBib29sIGlzUGVuZGluZ0lt
YWdlKCkgY29uc3QgeyByZXR1cm4gbV9pc1BlbmRpbmdJbWFnZTsgfQpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUGVuZGluZ0ltYWdlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUGVuZGluZ0ltYWdlLmgJKHJldmlz
aW9uIDEzNTUyNikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVBlbmRp
bmdJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02Niw2ICs2Niw3IEBAIHB1YmxpYzoKICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KKyAgICB2
aXJ0dWFsIGJvb2wgaGFzQWxwaGEoY29uc3QgUmVuZGVyT2JqZWN0KikgY29uc3QgeyByZXR1cm4g
dHJ1ZTsgfQogICAgIAogcHJpdmF0ZToKICAgICBTdHlsZVBlbmRpbmdJbWFnZShDU1NWYWx1ZSog
dmFsdWUpCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzU2MDYpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0xMS0yMyAgSnVzdGluIE5v
dm9zYWQgIDxqdW5vdkBnb29nbGUuY29tPgorCisgICAgICAgIEFkZGluZyBvY2NsdXNpb24gZGV0
ZWN0aW9uIHRvIHJlZHVjZSBvdmVyZHJhdyBpbiBSZW5kZXJCb3ggYmFja2dyb3VuZCByZW5kZXJp
bmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjU1
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5ldyB0
ZXN0IGV4ZXJjaXNlcyBkaWZmZXJlbnQgQ1NTIGJhY2tncm91bmQgc3R5bGUgdXNlIGNhc2VzIHRo
YXQKKyAgICAgICAgYXJlIGNhbmRpZGF0ZXMgZm9yIG9wdGltaXphdGlvbiBieSBvY2NsdXNpb24g
Y3VsbGluZy4KKworICAgICAgICAqIGZhc3QvYmFja2dyb3VuZHMvYmFja2dyb3VuZC1vcGFxdWUt
aW1hZ2VzLW92ZXItY29sb3ItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Jh
Y2tncm91bmRzL2JhY2tncm91bmQtb3BhcXVlLWltYWdlcy1vdmVyLWNvbG9yLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMTIt
MTEtMjMgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
V2ViIEluc3BlY3RvcjogZGFtYWdpbmcgbGFzdCBjaHVuayBkb2VzIG5vdCByZW1vdmUgaXRzIGdh
cmJhZ2UgZnJvbSBET00KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvYmFja2dyb3VuZHMvYmFja2dy
b3VuZC1vcGFxdWUtaW1hZ2VzLW92ZXItY29sb3ItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvYmFja2dyb3VuZHMvYmFja2dyb3VuZC1vcGFxdWUtaW1hZ2VzLW92
ZXItY29sb3ItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9i
YWNrZ3JvdW5kcy9iYWNrZ3JvdW5kLW9wYXF1ZS1pbWFnZXMtb3Zlci1jb2xvci1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzIgQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAw
eDYwMAorICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkg
c2l6ZSA4MDB4MTA4CisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHgxMDgK
KyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHgwCisgICAgICBSZW5kZXJC
bG9jayB7RElWfSBhdCAoMCwwKSBzaXplIDc4NHgwCisgICAgICAgIFJlbmRlckJsb2NrIChmbG9h
dGluZykge0RJVn0gYXQgKDAsMCkgc2l6ZSAyMHgxMDAgW2JnY29sb3I9I0ZGMDAwMF0KKyAgICAg
ICAgUmVuZGVyQmxvY2sgKGZsb2F0aW5nKSB7RElWfSBhdCAoMjAsMCkgc2l6ZSAyMHgxMDAgW2Jn
Y29sb3I9I0ZGMDAwMF0KKyAgICAgICAgUmVuZGVyQmxvY2sgKGZsb2F0aW5nKSB7RElWfSBhdCAo
NDAsMCkgc2l6ZSAyMHgxMDAgW2JnY29sb3I9I0ZGMDAwMF0KKyAgICAgICAgUmVuZGVyQmxvY2sg
KGZsb2F0aW5nKSB7RElWfSBhdCAoNjAsMCkgc2l6ZSAyMHgxMDAgW2JnY29sb3I9I0ZGMDAwMF0K
KyAgICAgICAgUmVuZGVyQmxvY2sgKGZsb2F0aW5nKSB7RElWfSBhdCAoODAsMCkgc2l6ZSAyMHgx
MDAgW2JnY29sb3I9I0ZGMDAwMF0KKyAgICAgICAgUmVuZGVyQmxvY2sgKGZsb2F0aW5nKSB7RElW
fSBhdCAoMTAwLDApIHNpemUgMjB4MTAwIFtiZ2NvbG9yPSNGRjAwMDBdCisgICAgICAgIFJlbmRl
ckJsb2NrIChmbG9hdGluZykge0RJVn0gYXQgKDEyMCwwKSBzaXplIDIweDEwMCBbYmdjb2xvcj0j
RkYwMDAwXQorICAgICAgICBSZW5kZXJCbG9jayAoZmxvYXRpbmcpIHtESVZ9IGF0ICgxNDAsMCkg
c2l6ZSAyMHgxMDAgW2JnY29sb3I9I0ZGMDAwMF0KKyAgICAgICAgUmVuZGVyQmxvY2sgKGZsb2F0
aW5nKSB7RElWfSBhdCAoMTYwLDApIHNpemUgMjB4MTAwIFtiZ2NvbG9yPSNGRjAwMDBdCisgICAg
ICAgIFJlbmRlckJsb2NrIChmbG9hdGluZykge0RJVn0gYXQgKDE4MCwwKSBzaXplIDIweDEwMCBb
Ymdjb2xvcj0jRkYwMDAwXQorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlclZp
ZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHgxMDgKKyAg
UmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDEwOAorICAgIFJlbmRlckJvZHkg
e0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDAKKyAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgw
LDApIHNpemUgNzg0eDAKKyAgICAgICAgUmVuZGVyQmxvY2sgKGZsb2F0aW5nKSB7RElWfSBhdCAo
MCwwKSBzaXplIDIweDEwMCBbYmdjb2xvcj0jRkYwMDAwXQorICAgICAgICBSZW5kZXJCbG9jayAo
ZmxvYXRpbmcpIHtESVZ9IGF0ICgyMCwwKSBzaXplIDIweDEwMCBbYmdjb2xvcj0jRkYwMDAwXQor
ICAgICAgICBSZW5kZXJCbG9jayAoZmxvYXRpbmcpIHtESVZ9IGF0ICg0MCwwKSBzaXplIDIweDEw
MCBbYmdjb2xvcj0jRkYwMDAwXQorICAgICAgICBSZW5kZXJCbG9jayAoZmxvYXRpbmcpIHtESVZ9
IGF0ICg2MCwwKSBzaXplIDIweDEwMCBbYmdjb2xvcj0jRkYwMDAwXQorICAgICAgICBSZW5kZXJC
bG9jayAoZmxvYXRpbmcpIHtESVZ9IGF0ICg4MCwwKSBzaXplIDIweDEwMCBbYmdjb2xvcj0jRkYw
MDAwXQorICAgICAgICBSZW5kZXJCbG9jayAoZmxvYXRpbmcpIHtESVZ9IGF0ICgxMDAsMCkgc2l6
ZSAyMHgxMDAgW2JnY29sb3I9I0ZGMDAwMF0KKyAgICAgICAgUmVuZGVyQmxvY2sgKGZsb2F0aW5n
KSB7RElWfSBhdCAoMTIwLDApIHNpemUgMjB4MTAwIFtiZ2NvbG9yPSNGRjAwMDBdCisgICAgICAg
IFJlbmRlckJsb2NrIChmbG9hdGluZykge0RJVn0gYXQgKDE0MCwwKSBzaXplIDIweDEwMCBbYmdj
b2xvcj0jRkYwMDAwXQorICAgICAgICBSZW5kZXJCbG9jayAoZmxvYXRpbmcpIHtESVZ9IGF0ICgx
NjAsMCkgc2l6ZSAyMHgxMDAgW2JnY29sb3I9I0ZGMDAwMF0KKyAgICAgICAgUmVuZGVyQmxvY2sg
KGZsb2F0aW5nKSB7RElWfSBhdCAoMTgwLDApIHNpemUgMjB4MTAwIFtiZ2NvbG9yPSNGRjAwMDBd
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2JhY2tncm91bmRzL2JhY2tncm91bmQtb3BhcXVlLWlt
YWdlcy1vdmVyLWNvbG9yLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9iYWNr
Z3JvdW5kcy9iYWNrZ3JvdW5kLW9wYXF1ZS1pbWFnZXMtb3Zlci1jb2xvci5odG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9iYWNrZ3JvdW5kcy9iYWNrZ3JvdW5kLW9wYXF1ZS1p
bWFnZXMtb3Zlci1jb2xvci5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY2IEBACis8IWRv
Y3R5cGUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8IS0tIFRlc3QgcGFzc2VzIHdoZW4gYSBncmVl
biByZWN0YW5nbGUgaXMgZGlzcGxheWVkLgorVGhlc2UgYXJlIGFsbCBkcmF3aW5nIGNhc2VzIHRo
YXQgY2FuIGJlIG9wdGltaXplZCBieSBvY2NsdXNpb24gY3VsbGluZworVGhlIGZpeCBmb3IgYnVn
IDEwMjU1NyBvcHRpbWl6ZXMgY2FzZXMgMSwgMiwgMywgNiwgNywgYW5kIDgtLT4KKzxzdHlsZSB0
eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiI+CisgICAgLnJlZEJhY2sgeworICAgICAgICB3
aWR0aDoyMHB4OworICAgICAgICBoZWlnaHQ6MTAwcHg7CisgICAgICAgIGRpc3BsYXk6YmxvY2s7
CisgICAgICAgIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQ7CisgICAgICAgIGJhY2tncm91bmQt
Y29sb3I6IHJlZDsKKyAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjowcHggMHB4LCAwcHggMHB4
OworICAgICAgICBmbG9hdDogbGVmdDsKKyAgICB9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+
Cis8ZGl2PgorICAgIDxkaXYgaWQ9ImNhc2VfMSIgY2xhc3M9InJlZEJhY2siIHN0eWxlPSJiYWNr
Z3JvdW5kLWltYWdlOiB1cmwoLi4vLi4vaHR0cC90ZXN0cy9tdWx0aXBhcnQvcmVzb3VyY2VzL2dy
ZWVuLTEwMHgxMDAucG5nKSI+PC9kaXY+CisgICAgPGRpdiBpZD0iY2FzZV8yIiBjbGFzcz0icmVk
QmFjayIgc3R5bGU9ImJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRv
cCwgZ3JlZW4sIGdyZWVuKSI+PC9kaXY+CisgICAgPGRpdiBpZD0iY2FzZV8zIiBjbGFzcz0icmVk
QmFjayIgc3R5bGU9ImJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtY3Jvc3MtZmFkZSh1cmwoLi4v
Li4vaHR0cC90ZXN0cy9tdWx0aXBhcnQvcmVzb3VyY2VzL2dyZWVuLTEwMHgxMDAucG5nKSwgdXJs
KC4uLy4uL2h0dHAvdGVzdHMvbXVsdGlwYXJ0L3Jlc291cmNlcy9ncmVlbi0xMDB4MTAwLnBuZyks
IDUwJSkiPjwvZGl2PgorICAgIDxkaXYgaWQ9ImNhc2VfNCIgY2xhc3M9InJlZEJhY2siIHN0eWxl
PSJiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OyBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4v
Li4vaHR0cC90ZXN0cy9tdWx0aXBhcnQvcmVzb3VyY2VzL2dyZWVuLTEwMHgxMDAucG5nKSI+PC9k
aXY+CisgICAgPGRpdiBpZD0iY2FzZV81IiBjbGFzcz0icmVkQmFjayIgc3R5bGU9ImJhY2tncm91
bmQtcmVwZWF0OiByZXBlYXQteDsgYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uLy4uL2h0dHAvdGVz
dHMvbXVsdGlwYXJ0L3Jlc291cmNlcy9ncmVlbi0xMDB4MTAwLnBuZykiPjwvZGl2PgorICAgIDxk
aXYgaWQ9ImNhc2VfNiIgY2xhc3M9InJlZEJhY2siIHN0eWxlPSJiYWNrZ3JvdW5kLWltYWdlOiB1
cmwoLi4vLi4vaHR0cC90ZXN0cy9tdWx0aXBhcnQvcmVzb3VyY2VzL2dyZWVuLTEwMHgxMDAucG5n
KSx1cmwocmVzb3VyY2VzLzY0eDMyLXJlZC5wbmcpIj48L2Rpdj4KKyAgICA8ZGl2IGlkPSJjYXNl
XzciIGNsYXNzPSJyZWRCYWNrIiBzdHlsZT0iYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5l
YXItZ3JhZGllbnQodG9wLCBncmVlbiwgZ3JlZW4pLHVybChyZXNvdXJjZXMvNjR4MzItcmVkLnBu
ZykiPjwvZGl2PgorICAgIDxkaXYgaWQ9ImNhc2VfOCIgY2xhc3M9InJlZEJhY2siIHN0eWxlPSJi
YWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWNyb3NzLWZhZGUodXJsKC4uLy4uL2h0dHAvdGVzdHMv
bXVsdGlwYXJ0L3Jlc291cmNlcy9ncmVlbi0xMDB4MTAwLnBuZyksdXJsKC4uLy4uL2h0dHAvdGVz
dHMvbXVsdGlwYXJ0L3Jlc291cmNlcy9ncmVlbi0xMDB4MTAwLnBuZyksIDUwJSksdXJsKHJlc291
cmNlcy82NHgzMi1yZWQucG5nKSI+PC9kaXY+CisgICAgPGRpdiBpZD0iY2FzZV85IiBjbGFzcz0i
cmVkQmFjayIgc3R5bGU9ImJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7IGJhY2tncm91bmQt
aW1hZ2U6IHVybCguLi8uLi9odHRwL3Rlc3RzL211bHRpcGFydC9yZXNvdXJjZXMvZ3JlZW4tMTAw
eDEwMC5wbmcpLHVybChyZXNvdXJjZXMvNjR4MzItcmVkLnBuZykiPjwvZGl2PgorICAgIDxkaXYg
aWQ9ImNhc2VfMTAiIGNsYXNzPSJyZWRCYWNrIiBzdHlsZT0iYmFja2dyb3VuZC1yZXBlYXQ6IHJl
cGVhdC14OyBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vLi4vaHR0cC90ZXN0cy9tdWx0aXBhcnQv
cmVzb3VyY2VzL2dyZWVuLTEwMHgxMDAucG5nKSx1cmwocmVzb3VyY2VzLzY0eDMyLXJlZC5wbmcp
Ij48L2Rpdj4KKzwvZGl2PgorPC9ib2R5PgorPC9odG1sPgorPCFkb2N0eXBlIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPCEtLSBUZXN0IHBhc3NlcyB3aGVuIGEgZ3JlZW4gcmVjdGFuZ2xlIGlzIGRp
c3BsYXllZC4KK1RoZXNlIGFyZSBhbGwgZHJhd2luZyBjYXNlcyB0aGF0IGNhbiBiZSBvcHRpbWl6
ZWQgYnkgb2NjbHVzaW9uIGN1bGxpbmcKK1RoZSBmaXggZm9yIGJ1ZyAxMDI1NTcgb3B0aW1pemVz
IGNhc2VzIDEsIDIsIDMsIDYsIDcsIGFuZCA4LS0+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiIG1l
ZGlhPSJzY3JlZW4iPgorICAgIC5yZWRCYWNrIHsKKyAgICAgICAgd2lkdGg6MjBweDsKKyAgICAg
ICAgaGVpZ2h0OjEwMHB4OworICAgICAgICBkaXNwbGF5OmJsb2NrOworICAgICAgICBiYWNrZ3Jv
dW5kLXJlcGVhdDogcmVwZWF0OworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7CisgICAg
ICAgIGJhY2tncm91bmQtcG9zaXRpb246MHB4IDBweCwgMHB4IDBweDsKKyAgICAgICAgZmxvYXQ6
IGxlZnQ7CisgICAgfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPGRpdj4KKyAgICA8ZGl2
IGlkPSJjYXNlXzEiIGNsYXNzPSJyZWRCYWNrIiBzdHlsZT0iYmFja2dyb3VuZC1pbWFnZTogdXJs
KC4uLy4uL2h0dHAvdGVzdHMvbXVsdGlwYXJ0L3Jlc291cmNlcy9ncmVlbi0xMDB4MTAwLnBuZyki
PjwvZGl2PgorICAgIDxkaXYgaWQ9ImNhc2VfMiIgY2xhc3M9InJlZEJhY2siIHN0eWxlPSJiYWNr
Z3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsIGdyZWVuLCBncmVlbiki
PjwvZGl2PgorICAgIDxkaXYgaWQ9ImNhc2VfMyIgY2xhc3M9InJlZEJhY2siIHN0eWxlPSJiYWNr
Z3JvdW5kLWltYWdlOiAtd2Via2l0LWNyb3NzLWZhZGUodXJsKC4uLy4uL2h0dHAvdGVzdHMvbXVs
dGlwYXJ0L3Jlc291cmNlcy9ncmVlbi0xMDB4MTAwLnBuZyksIHVybCguLi8uLi9odHRwL3Rlc3Rz
L211bHRpcGFydC9yZXNvdXJjZXMvZ3JlZW4tMTAweDEwMC5wbmcpLCA1MCUpIj48L2Rpdj4KKyAg
ICA8ZGl2IGlkPSJjYXNlXzQiIGNsYXNzPSJyZWRCYWNrIiBzdHlsZT0iYmFja2dyb3VuZC1yZXBl
YXQ6IG5vLXJlcGVhdDsgYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uLy4uL2h0dHAvdGVzdHMvbXVs
dGlwYXJ0L3Jlc291cmNlcy9ncmVlbi0xMDB4MTAwLnBuZykiPjwvZGl2PgorICAgIDxkaXYgaWQ9
ImNhc2VfNSIgY2xhc3M9InJlZEJhY2siIHN0eWxlPSJiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0
LXg7IGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi8uLi9odHRwL3Rlc3RzL211bHRpcGFydC9yZXNv
dXJjZXMvZ3JlZW4tMTAweDEwMC5wbmcpIj48L2Rpdj4KKyAgICA8ZGl2IGlkPSJjYXNlXzYiIGNs
YXNzPSJyZWRCYWNrIiBzdHlsZT0iYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uLy4uL2h0dHAvdGVz
dHMvbXVsdGlwYXJ0L3Jlc291cmNlcy9ncmVlbi0xMDB4MTAwLnBuZyksdXJsKHJlc291cmNlcy82
NHgzMi1yZWQucG5nKSI+PC9kaXY+CisgICAgPGRpdiBpZD0iY2FzZV83IiBjbGFzcz0icmVkQmFj
ayIgc3R5bGU9ImJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwg
Z3JlZW4sIGdyZWVuKSx1cmwocmVzb3VyY2VzLzY0eDMyLXJlZC5wbmcpIj48L2Rpdj4KKyAgICA8
ZGl2IGlkPSJjYXNlXzgiIGNsYXNzPSJyZWRCYWNrIiBzdHlsZT0iYmFja2dyb3VuZC1pbWFnZTog
LXdlYmtpdC1jcm9zcy1mYWRlKHVybCguLi8uLi9odHRwL3Rlc3RzL211bHRpcGFydC9yZXNvdXJj
ZXMvZ3JlZW4tMTAweDEwMC5wbmcpLHVybCguLi8uLi9odHRwL3Rlc3RzL211bHRpcGFydC9yZXNv
dXJjZXMvZ3JlZW4tMTAweDEwMC5wbmcpLCA1MCUpLHVybChyZXNvdXJjZXMvNjR4MzItcmVkLnBu
ZykiPjwvZGl2PgorICAgIDxkaXYgaWQ9ImNhc2VfOSIgY2xhc3M9InJlZEJhY2siIHN0eWxlPSJi
YWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OyBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vLi4v
aHR0cC90ZXN0cy9tdWx0aXBhcnQvcmVzb3VyY2VzL2dyZWVuLTEwMHgxMDAucG5nKSx1cmwocmVz
b3VyY2VzLzY0eDMyLXJlZC5wbmcpIj48L2Rpdj4KKyAgICA8ZGl2IGlkPSJjYXNlXzEwIiBjbGFz
cz0icmVkQmFjayIgc3R5bGU9ImJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDsgYmFja2dyb3Vu
ZC1pbWFnZTogdXJsKC4uLy4uL2h0dHAvdGVzdHMvbXVsdGlwYXJ0L3Jlc291cmNlcy9ncmVlbi0x
MDB4MTAwLnBuZyksdXJsKHJlc291cmNlcy82NHgzMi1yZWQucG5nKSI+PC9kaXY+Cis8L2Rpdj4K
KzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rl
c3RFeHBlY3RhdGlvbnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vVGVzdEV4cGVjdGF0aW9ucwkocmV2aXNpb24gMTM1NTI2KQorKysgTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucwkod29ya2luZyBjb3B5KQpAQCAtMTI2Myw2
ICsxMjYzLDkgQEAgd2Via2l0Lm9yZy9iLzI1ODE3IHN2Zy9kb20vU1ZHU2NyaXB0RWxlbQogCiB3
ZWJraXQub3JnL2IvNjAxMTggWyBNYWMgXSBzdmcvZG9tL1NWR1NjcmlwdEVsZW1lbnQvc2NyaXB0
LXNldC1ocmVmLnN2ZyBbIEZhaWx1cmUgUGFzcyBdCiAKKyMgTmV3IHRlc3QgaW4gbmVlZCBvZiBu
ZXcgYmFzZWxpbmVzCit3ZWJraXQub3JnL2IvMTAyNTU3IGZhc3QvYmFja2dyb3VuZHMvYmFja2dy
b3VuZC1vcGFxdWUtaW1hZ2VzLW92ZXItY29sb3IuaHRtbCBbIFBhc3MgSW1hZ2VPbmx5RmFpbHVy
ZSBGYWlsdXJlIE1pc3NpbmcgXQorCiAjIEludHJvZHVjZWQgZHVlIHRvIEJVR1dLNTM1MTIsIGZh
aWxzIHVuZGVyIFNraWEgcmlnaHQgbm93CiB3ZWJraXQub3JnL2IvNjU5Mzkgc3ZnL2N1c3RvbS9n
ZXRCQm94LXBhdGguc3ZnIFsgRmFpbHVyZSBdCiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175821</attachid>
            <date>2012-11-23 09:42:51 -0800</date>
            <delta_ts>2012-11-23 11:20:28 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-102557-20121123124034.patch</filename>
            <type>text/plain</type>
            <size>28986</size>
            <attacher name="Justin Novosad">junov</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNTYwNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg1IEBACisyMDEyLTExLTIzICBKdXN0aW4g
Tm92b3NhZCAgPGp1bm92QGdvb2dsZS5jb20+CisKKyAgICAgICAgQWRkaW5nIG9jY2x1c2lvbiBk
ZXRlY3Rpb24gdG8gcmVkdWNlIG92ZXJkcmF3IGluIFJlbmRlckJveCBiYWNrZ3JvdW5kIHJlbmRl
cmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAy
NTU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU3RlcGhlbiBXaGl0ZS4KKworICAgICAgICBBZGRp
bmcgaGFzQWxwaGEgbWV0aG9kIHRvIGFsbCBjbGFzc2VzIGRlcnZpdmVkIGZyb20gQ1NTSW1hZ2VW
YWx1ZSBhbmQKKyAgICAgICAgU3R5bGVJbWFnZSwgaW4gb3JkZXIgdG8gc3VwcG9ydCBvY2NsdXNp
b24gdGVzdGluZy4gCisgICAgICAgIFRoaXMgYWxsb3dzIHRoZSBGaWxsTGF5ZXIgcmVjdXJzaW9u
IHRvIHN0b3AgZWFybHkgd2hlbiBhbiBvcGFxdWUgbGF5ZXIKKyAgICAgICAgaXMgZW5jb3VudGVy
ZWQgd2hpbGUgYXBwbHlpbmcgYSBDU1MgYmFja2dyb3VuZCBzdHlsZS4gVGhpcyBhbHNvIGFsbG93
cworICAgICAgICB0aGUgZWxpbWluYXRpb24gb2YgYmFja2dyb3VuZCBjb2xvciBhcHBsaWNhdGlv
biB3aGVuIHRoZSBiYWNrZ3JvdW5kIGlzCisgICAgICAgIGNvbXBsZXRlbHkgY292ZXJlZCBieSBh
biBpbWFnZS4gIFRoZSBvcHRpbWl6YXRpb24gYWxzbyBza2lwcyB0aGUKKyAgICAgICAgY2xlYXJp
bmcgb2YgdGhlIHBhZ2UncyByb290IGVsZW1lbnQgd2hlbiB0aGUgcGFnZSBiYWNrZ3JvdW5kIGlz
CisgICAgICAgIGVudGlyZWx5IGNvdmVyZWQgYnkgYW4gaW1hZ2UgKGUuZyBhIHRpbGVkIGJpdG1h
cCBvciBhIGdyYWRpZW50KQorCisgICAgICAgIFRlc3Q6IGZhc3QvYmFja2dyb3VuZHMvYmFja2dy
b3VuZC1vcGFxdWUtaW1hZ2VzLW92ZXItY29sb3IuaHRtbAorCisgICAgICAgICogY3NzL0NTU0Ny
b3NzZmFkZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnN1YmltYWdlSGFzQWxwaGEpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NDcm9zc2ZhZGVWYWx1ZTo6
aXNQZW5kaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Nyb3NzZmFkZVZhbHVlOjpoYXNBbHBo
YSk6CisgICAgICAgICogY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmg6CisgICAgICAgIChDU1NDcm9z
c2ZhZGVWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTR3JhZGllbnRWYWx1ZTo6aGFzQWxwaGEpOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgICogY3NzL0NTU0dyYWRpZW50VmFsdWUuaDoKKyAgICAgICAgKENTU0dyYWRp
ZW50VmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0ltYWdlR2VuZXJhdG9yVmFsdWU6Omhhc0FscGhhKToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAqIGNzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmg6Cisg
ICAgICAgIChDU1NJbWFnZUdlbmVyYXRvclZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VW
YWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZVZhbHVlOjpoYXNBbHBoYSk6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VWYWx1ZS5oOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChDU1NJbWFnZVZhbHVlKToKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmN1
cnJlbnRGcmFtZUhhc0FscGhhKToKKyAgICAgICAgVGVzdCB3aGV0aGVyIGEgY2FjaGVkIGltYWdl
IGhhcyBhbHBoYSwgd2l0aCBzaWRlIGVmZmVjdCBvZiBlbnN1cmluZworICAgICAgICB0aGUgaW1h
Z2UgaXMgaW4gY2FjaGUuIChuZXcgbWV0aG9kKQorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmg6CisgICAgICAgIChDYWNoZWRJbWFnZSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCb3g6OnBhaW50RmlsbExheWVycyk6CisgICAgICAgIEFkZGVkIGxheWVyIHJlY3Vyc2lvbiBl
YXJseSBleGl0IHdoZW4gYW4gb3BhcXVlIGxheWVyIGlzIGVuY291bnRlcmVkLgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZCk6CisgICAgICAgIEVs
aW1pbmF0ZWQgYmFja2dyb3VuZCBjb2xvciBmaWxsIHdoZW4gdGhlIGxheWVyIGNvbnRhaW5zIGFu
IG9wYXF1ZQorICAgICAgICBpbWFnZSB0aGF0IGNvdmVycyB0aGUgZW50aXJlIFJlbmRlckJveC4K
KyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZpbGxMYXllcjo6aGFzT3BhcXVlSW1hZ2UpOgorICAgICAgICBSZXR1cm5zIHRydWUgaWYg
dGhlIGxheWVyJ3MgaW1hZ2UgaXMga25vd24gdG8gYmUgZnVsbHkgb3BhcXVlLgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWxsTGF5ZXI6Omhhc1JlcGVhdFhZKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmg6CisgICAgICAgIChGaWxsTGF5ZXIp
OgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlQ2FjaGVkSW1hZ2U6Omhhc0FscGhhKToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlLmg6CisgICAg
ICAgIChTdHlsZUNhY2hlZEltYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVD
YWNoZWRJbWFnZVNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUNhY2hlZEltYWdlU2V0
OjpoYXNBbHBoYSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5
bGUvU3R5bGVDYWNoZWRJbWFnZVNldC5oOgorICAgICAgICAoU3R5bGVDYWNoZWRJbWFnZVNldCk6
CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVHZW5lcmF0ZWRJbWFnZTo6aGFzQWxwaGEpOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2Uu
aDoKKyAgICAgICAgKFN0eWxlR2VuZXJhdGVkSW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dHlsZS9TdHlsZUltYWdlLmg6CisgICAgICAgIChTdHlsZUltYWdlKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3R5bGUvU3R5bGVQZW5kaW5nSW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
UGVuZGluZ0ltYWdlOjpoYXNBbHBoYSk6CisKIDIwMTItMTEtMjMgIFBhdmVsIEZlbGRtYW4gIDxw
ZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogZGFtYWdpbmcg
bGFzdCBjaHVuayBkb2VzIG5vdCByZW1vdmUgaXRzIGdhcmJhZ2UgZnJvbSBET00KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmNwcAkocmV2aXNpb24gMTM1NTI2KQor
KysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTIsNiArNTIsMTkgQEAgc3RhdGljIGJvb2wgc3ViaW1hZ2VJc1BlbmRpbmcoQ1NTVmFs
dWUqCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitzdGF0aWMgYm9vbCBzdWJpbWFnZUhhc0FscGhh
KENTU1ZhbHVlKiB2YWx1ZSwgY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKK3sKKyAgICBp
ZiAodmFsdWUtPmlzSW1hZ2VWYWx1ZSgpKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q1NT
SW1hZ2VWYWx1ZSo+KHZhbHVlKS0+aGFzQWxwaGEocmVuZGVyZXIpOworCisgICAgaWYgKHZhbHVl
LT5pc0ltYWdlR2VuZXJhdG9yVmFsdWUoKSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PENT
U0ltYWdlR2VuZXJhdG9yVmFsdWUqPih2YWx1ZSktPmhhc0FscGhhKHJlbmRlcmVyKTsKKworICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKIHN0YXRpYyBD
YWNoZWRJbWFnZSogY2FjaGVkSW1hZ2VGb3JDU1NWYWx1ZShDU1NWYWx1ZSogdmFsdWUsIENhY2hl
ZFJlc291cmNlTG9hZGVyKiBjYWNoZWRSZXNvdXJjZUxvYWRlcikKIHsKICAgICBpZiAoIXZhbHVl
KQpAQCAtMTI2LDYgKzEzOSwxMSBAQCBib29sIENTU0Nyb3NzZmFkZVZhbHVlOjppc1BlbmRpbmco
KSBjb25zCiAgICAgcmV0dXJuIHN1YmltYWdlSXNQZW5kaW5nKG1fZnJvbVZhbHVlLmdldCgpKSB8
fCBzdWJpbWFnZUlzUGVuZGluZyhtX3RvVmFsdWUuZ2V0KCkpOwogfQogCitib29sIENTU0Nyb3Nz
ZmFkZVZhbHVlOjpoYXNBbHBoYShjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKSBjb25zdAor
eworICAgIHJldHVybiBzdWJpbWFnZUhhc0FscGhhKG1fZnJvbVZhbHVlLmdldCgpLCByZW5kZXJl
cikgfHwgc3ViaW1hZ2VIYXNBbHBoYShtX3RvVmFsdWUuZ2V0KCksIHJlbmRlcmVyKTsKK30KKwog
dm9pZCBDU1NDcm9zc2ZhZGVWYWx1ZTo6bG9hZFN1YmltYWdlcyhDYWNoZWRSZXNvdXJjZUxvYWRl
ciogY2FjaGVkUmVzb3VyY2VMb2FkZXIpCiB7CiAgICAgbV9jYWNoZWRGcm9tSW1hZ2UgPSBjYWNo
ZWRJbWFnZUZvckNTU1ZhbHVlKG1fZnJvbVZhbHVlLmdldCgpLCBjYWNoZWRSZXNvdXJjZUxvYWRl
cik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuaAkocmV2aXNpb24g
MTM1NTI2KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTU4LDYgKzU4LDggQEAgcHVibGljOgogICAgIEludFNpemUgZml4ZWRTaXpl
KGNvbnN0IFJlbmRlck9iamVjdCopOwogCiAgICAgYm9vbCBpc1BlbmRpbmcoKSBjb25zdDsKKyAg
ICBib29sIGhhc0FscGhhKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0OworCiAgICAgdm9pZCBs
b2FkU3ViaW1hZ2VzKENhY2hlZFJlc291cmNlTG9hZGVyKik7CiAKICAgICB2b2lkIHNldFBlcmNl
bnRhZ2UoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcGVyY2VudGFnZVZhbHVlKSB7IG1f
cGVyY2VudGFnZVZhbHVlID0gcGVyY2VudGFnZVZhbHVlOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwCShyZXZpc2lvbiAxMzU1MjYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2Miw2ICs0
NjIsMTUgQEAgYm9vbCBDU1NHcmFkaWVudFZhbHVlOjppc0NhY2hlYWJsZSgpIGNvbgogICAgIHJl
dHVybiB0cnVlOwogfQogCitib29sIENTU0dyYWRpZW50VmFsdWU6Omhhc0FscGhhKGNvbnN0IFJl
bmRlck9iamVjdCopIGNvbnN0Cit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3N0b3Bz
LnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChtX3N0b3BzW2ldLm1fcmVzb2x2ZWRDb2xvci5o
YXNBbHBoYSgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBm
YWxzZTsKK30KKwogdm9pZCBDU1NHcmFkaWVudFZhbHVlOjpyZXBvcnRCYXNlQ2xhc3NNZW1vcnlV
c2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewogICAgIE1l
bW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlU
eXBlczo6Q1NTKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuaAkocmV2
aXNpb24gMTM1NTI2KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuaAko
d29ya2luZyBjb3B5KQpAQCAtNzQsNiArNzQsOCBAQCBwdWJsaWM6CiAgICAgSW50U2l6ZSBmaXhl
ZFNpemUoY29uc3QgUmVuZGVyT2JqZWN0KikgY29uc3QgeyByZXR1cm4gSW50U2l6ZSgpOyB9CiAK
ICAgICBib29sIGlzUGVuZGluZygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBo
YXNBbHBoYShjb25zdCBSZW5kZXJPYmplY3QqKSBjb25zdDsKKwogICAgIHZvaWQgbG9hZFN1Ymlt
YWdlcyhDYWNoZWRSZXNvdXJjZUxvYWRlciopIHsgfQogICAgIFBhc3NSZWZQdHI8Q1NTR3JhZGll
bnRWYWx1ZT4gZ3JhZGllbnRXaXRoU3R5bGVzUmVzb2x2ZWQoU3R5bGVSZXNvbHZlciopOwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwCShy
ZXZpc2lvbiAxMzU1MjYpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JW
YWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5Niw2ICsxOTYsMjMgQEAgYm9vbCBDU1NJbWFn
ZUdlbmVyYXRvclZhbHVlOjppc1BlbmRpbmcoKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9v
bCBDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpoYXNBbHBoYShjb25zdCBSZW5kZXJPYmplY3QqIHJl
bmRlcmVyKSBjb25zdAoreworICAgIHN3aXRjaCAoY2xhc3NUeXBlKCkpIHsKKyAgICBjYXNlIENy
b3NzZmFkZUNsYXNzOgorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ1NTQ3Jvc3Nm
YWRlVmFsdWUqPih0aGlzKS0+aGFzQWxwaGEocmVuZGVyZXIpOworICAgIGNhc2UgQ2FudmFzQ2xh
c3M6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGNhc2UgTGluZWFyR3JhZGllbnRDbGFzczoK
KyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IENTU0xpbmVhckdyYWRpZW50VmFsdWUq
Pih0aGlzKS0+aGFzQWxwaGEocmVuZGVyZXIpOworICAgIGNhc2UgUmFkaWFsR3JhZGllbnRDbGFz
czoKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IENTU1JhZGlhbEdyYWRpZW50VmFs
dWUqPih0aGlzKS0+aGFzQWxwaGEocmVuZGVyZXIpOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBD
U1NJbWFnZUdlbmVyYXRvclZhbHVlOjpsb2FkU3ViaW1hZ2VzKENhY2hlZFJlc291cmNlTG9hZGVy
KiBjYWNoZWRSZXNvdXJjZUxvYWRlcikKIHsKICAgICBzd2l0Y2ggKGNsYXNzVHlwZSgpKSB7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmgJKHJldmlz
aW9uIDEzNTUyNikKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDYgKzYzLDcgQEAgcHVibGljOgogICAgIEludFNpemUg
Zml4ZWRTaXplKGNvbnN0IFJlbmRlck9iamVjdCopOwogCiAgICAgYm9vbCBpc1BlbmRpbmcoKSBj
b25zdDsKKyAgICBib29sIGhhc0FscGhhKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0OwogCiAg
ICAgdm9pZCBsb2FkU3ViaW1hZ2VzKENhY2hlZFJlc291cmNlTG9hZGVyKik7CiAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAJKHJldmlzaW9uIDEzNTUyNikKKysrIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQwLDQg
KzE0MCw5IEBAIHZvaWQgQ1NTSW1hZ2VWYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW8KICAgICAv
LyBObyBuZWVkIHRvIHJlcG9ydCBtX2ltYWdlIGFzIGl0IGlzIGNvdW50ZWQgYXMgcGFydCBvZiBS
ZW5kZXJBcmVuYS4KIH0KIAorYm9vbCBDU1NJbWFnZVZhbHVlOjpoYXNBbHBoYShjb25zdCBSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyKSBjb25zdAoreworICAgIHJldHVybiBtX2ltYWdlID8gbV9pbWFn
ZS0+aGFzQWxwaGEocmVuZGVyZXIpIDogdHJ1ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5oCShyZXZpc2lvbiAxMzU1MjYpCisr
KyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
MCw2ICszMCw3IEBAIGNsYXNzIENhY2hlZFJlc291cmNlTG9hZGVyOwogY2xhc3MgRWxlbWVudDsK
IGNsYXNzIFN0eWxlQ2FjaGVkSW1hZ2U7CiBjbGFzcyBTdHlsZUltYWdlOworY2xhc3MgUmVuZGVy
T2JqZWN0OwogCiBjbGFzcyBDU1NJbWFnZVZhbHVlIDogcHVibGljIENTU1ZhbHVlIHsKIHB1Ymxp
YzoKQEAgLTUxLDYgKzUyLDggQEAgcHVibGljOgogCiAgICAgdm9pZCByZXBvcnREZXNjZW5kYW50
TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCisgICAgYm9vbCBoYXNBbHBo
YShjb25zdCBSZW5kZXJPYmplY3QqKSBjb25zdDsKKwogcHJvdGVjdGVkOgogICAgIENTU0ltYWdl
VmFsdWUoQ2xhc3NUeXBlLCBjb25zdCBTdHJpbmcmIHVybCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAkocmV2aXNpb24gMTM1NTI2KQorKysg
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDc1LDQgKzQ3NSwxMiBAQCB2b2lkIENhY2hlZEltYWdlOjpyZXBvcnRNZW1vcnlVc2Fn
ZShNZW1vCiAjZW5kaWYKIH0KIAorYm9vbCBDYWNoZWRJbWFnZTo6Y3VycmVudEZyYW1lSGFzQWxw
aGEoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKK3sKKyAgICBJbWFnZSogaW1hZ2UgPSBp
bWFnZUZvclJlbmRlcmVyKHJlbmRlcmVyKTsKKyAgICBpZiAoaW1hZ2UtPmlzQml0bWFwSW1hZ2Uo
KSkKKyAgICAgICAgaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7IC8vIGZvcmNl
IGRlY29kZQorICAgIHJldHVybiBpbWFnZS0+Y3VycmVudEZyYW1lSGFzQWxwaGEoKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEltYWdlLmgJKHJldmlzaW9uIDEzNTUyNikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw3IEBAIHB1
YmxpYzoKICAgICBJbWFnZSogaW1hZ2UoKTsgLy8gUmV0dXJucyB0aGUgbnVsbEltYWdlKCkgaWYg
dGhlIGltYWdlIGlzIG5vdCBhdmFpbGFibGUgeWV0LgogICAgIEltYWdlKiBpbWFnZUZvclJlbmRl
cmVyKGNvbnN0IFJlbmRlck9iamVjdCopOyAvLyBSZXR1cm5zIHRoZSBudWxsSW1hZ2UoKSBpZiB0
aGUgaW1hZ2UgaXMgbm90IGF2YWlsYWJsZSB5ZXQuCiAgICAgYm9vbCBoYXNJbWFnZSgpIGNvbnN0
IHsgcmV0dXJuIG1faW1hZ2UuZ2V0KCk7IH0KKyAgICBib29sIGN1cnJlbnRGcmFtZUhhc0FscGhh
KGNvbnN0IFJlbmRlck9iamVjdCopOyAvLyBTaWRlIGVmZmVjdDogZW5zdXJlcyBkZWNvZGVkIGlt
YWdlIGlzIGluIGNhY2hlLCB0aGVyZWZvcmUgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdoZW4gYWJv
dXQgdG8gZHJhdyB0aGUgaW1hZ2UuCiAKICAgICBzdGQ6OnBhaXI8SW1hZ2UqLCBmbG9hdD4gYnJv
a2VuSW1hZ2UoZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IpIGNvbnN0OyAvLyBSZXR1cm5zIGFuIGlt
YWdlIGFuZCB0aGUgaW1hZ2UncyByZXNvbHV0aW9uIHNjYWxlIGZhY3Rvci4KICAgICBib29sIHdp
bGxQYWludEJyb2tlbkltYWdlKCkgY29uc3Q7IApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveC5jcHAJKHJldmlzaW9uIDEzNTUyNikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAxLDcgKzEwMDEsMTQgQEAg
dm9pZCBSZW5kZXJCb3g6OnBhaW50RmlsbExheWVycyhjb25zdCBQYQogICAgIGlmICghZmlsbExh
eWVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBwYWludEZpbGxMYXllcnMocGFpbnRJbmZvLCBj
LCBmaWxsTGF5ZXItPm5leHQoKSwgcmVjdCwgYmxlZWRBdm9pZGFuY2UsIG9wLCBiYWNrZ3JvdW5k
T2JqZWN0KTsKKyAgICAvLyBGSVhNRSA6IEl0IHdvdWxkIGJlIHBvc3NpYmxlIGZvciB0aGUgZm9s
bG93aW5nIG9jY2x1c2lvbiBjdWxsaW5nIHRlc3QgdG8gYmUgbW9yZSBhZ2dyZXNzaXZlIAorICAg
IC8vIG9uIGxheWVycyB3aXRoIG5vIHJlcGVhdCBieSB0ZXN0aW5nIHdoZXRoZXIgdGhlIGltYWdl
IGNvdmVycyB0aGUgbGF5b3V0IHJlY3QuCisgICAgLy8gVGVzdGluZyB0aGF0IGhlcmUgd291bGQg
aW1wbHkgZHVwbGljYXRpbmcgYSBsb3Qgb2YgY2FsY3VsYXRpb25zIHRoYXQgYXJlIGN1cnJlbnRs
eSBkb25lIGluCisgICAgLy8gUmVuZGVyQm94TW9kZWxPQmplY3Q6OnBhaW50RmlsbExheWVyRXh0
ZW5kZWQuIEEgbW9yZSBlZmZpY2llbnQgc29sdXRpb24gbWlnaHQgYmUgdG8gbW92ZQorICAgIC8v
IHRoZSBsYXllciByZWN1cnNpb24gaW50byBwYWludEZpbGxMYXllckV4dGVuZGVkLCBvciB0byBj
b21wdXRlIHRoZSBsYXllciBnZW9tZXRyeSBoZXJlCisgICAgLy8gYW5kIHBhc3MgaXQgZG93bi4K
KyAgICBpZiAoZmlsbExheWVyLT5uZXh0KCkgJiYgKCFmaWxsTGF5ZXItPmhhc09wYXF1ZUltYWdl
KHRoaXMpIHx8ICFmaWxsTGF5ZXItPmltYWdlKCktPmNhblJlbmRlcih0aGlzLCBzdHlsZSgpLT5l
ZmZlY3RpdmVab29tKCkpIHx8ICFmaWxsTGF5ZXItPmhhc1JlcGVhdFhZKCkpKQorICAgICAgICBw
YWludEZpbGxMYXllcnMocGFpbnRJbmZvLCBjLCBmaWxsTGF5ZXItPm5leHQoKSwgcmVjdCwgYmxl
ZWRBdm9pZGFuY2UsIG9wLCBiYWNrZ3JvdW5kT2JqZWN0KTsKICAgICBwYWludEZpbGxMYXllcihw
YWludEluZm8sIGMsIGZpbGxMYXllciwgcmVjdCwgYmxlZWRBdm9pZGFuY2UsIG9wLCBiYWNrZ3Jv
dW5kT2JqZWN0KTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eE1vZGVsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCShyZXZpc2lvbiAxMzU1MjYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC05MDcsOCArOTA3LDEwIEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExh
eWUKICAgICAgICAgdmlldygpLT5mcmFtZVZpZXcoKS0+c2V0Q29udGVudElzT3BhcXVlKGlzT3Bh
cXVlUm9vdCk7CiAgICAgfQogCi0gICAgLy8gUGFpbnQgdGhlIGNvbG9yIGZpcnN0IHVuZGVybmVh
dGggYWxsIGltYWdlcy4KLSAgICBpZiAoIWJnTGF5ZXItPm5leHQoKSkgeworICAgIC8vIFBhaW50
IHRoZSBjb2xvciBmaXJzdCB1bmRlcm5lYXRoIGFsbCBpbWFnZXMsIGN1bGxlZCBpZiBiYWNrZ3Jv
dW5kIGltYWdlIG9jY2x1ZGVzIGl0LgorICAgIC8vIEZJWE1FOiBJbiB0aGUgYmdMYXllci0+aGFz
RmluaXRlQm91bmRzKCkgY2FzZSwgd2UgY291bGQgaW1wcm92ZSB0aGUgY3VsbGluZyB0ZXN0Cisg
ICAgLy8gYnkgdmVyaWZ5aW5nIHdoZXRoZXIgdGhlIGJhY2tncm91bmQgaW1hZ2UgY292ZXJzIHRo
ZSBlbnRpcmUgbGF5b3V0IHJlY3QuCisgICAgaWYgKCFiZ0xheWVyLT5uZXh0KCkgJiYgIShzaG91
bGRQYWludEJhY2tncm91bmRJbWFnZSAmJiBiZ0xheWVyLT5oYXNPcGFxdWVJbWFnZSh0aGlzKSAm
JiBiZ0xheWVyLT5oYXNSZXBlYXRYWSgpKSkgewogICAgICAgICBJbnRSZWN0IGJhY2tncm91bmRS
ZWN0KHBpeGVsU25hcHBlZEludFJlY3Qoc2Nyb2xsZWRQYWludFJlY3QpKTsKICAgICAgICAgYm9v
bCBib3hTaGFkb3dTaG91bGRCZUFwcGxpZWRUb0JhY2tncm91bmQgPSB0aGlzLT5ib3hTaGFkb3dT
aG91bGRCZUFwcGxpZWRUb0JhY2tncm91bmQoYmxlZWRBdm9pZGFuY2UsIGJveCk7CiAgICAgICAg
IGlmICghYm94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5kKQpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5jcHAJKHJldmlzaW9uIDEzNTUy
NikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yODAsNCArMjgwLDIzIEBAIGJvb2wgRmlsbExheWVyOjppbWFnZXNBcmVM
b2FkZWQoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCitib29sIEZpbGxMYXllcjo6aGFz
T3BhcXVlSW1hZ2UoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikgY29uc3QKK3sKKyAgICBp
ZiAoIW1faW1hZ2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChtX2NvbXBvc2l0
ZSA9PSBDb21wb3NpdGVDbGVhciB8fCBtX2NvbXBvc2l0ZSA9PSBDb21wb3NpdGVDb3B5KQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmIChtX2NvbXBvc2l0ZSA9PSBDb21wb3NpdGVTb3Vy
Y2VPdmVyKQorICAgICAgICByZXR1cm4gIW1faW1hZ2UtPmhhc0FscGhhKHJlbmRlcmVyKTsKKwor
ICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBGaWxsTGF5ZXI6Omhhc1JlcGVhdFhZKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9yZXBlYXRYID09IFJlcGVhdEZpbGwgJiYgbV9yZXBlYXRZID09
IFJlcGVhdEZpbGw7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmgJKHJldmlzaW9uIDEzNTUyNikKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMTQ0LDYgKzE0NCw5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fbmV4dCA/IG1f
bmV4dC0+aGFzRml4ZWRJbWFnZSgpIDogZmFsc2U7CiAgICAgfQogCisgICAgYm9vbCBoYXNPcGFx
dWVJbWFnZShjb25zdCBSZW5kZXJPYmplY3QqKSBjb25zdDsKKyAgICBib29sIGhhc1JlcGVhdFhZ
KCkgY29uc3Q7CisKICAgICBFRmlsbExheWVyVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8RUZpbGxMYXllclR5cGU+KG1fdHlwZSk7IH0KIAogICAgIHZvaWQgZmlsbFVuc2V0
UHJvcGVydGllcygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
Q2FjaGVkSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZUNhY2hlZEltYWdlLmNwcAkocmV2aXNpb24gMTM1NTI2KQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDYsNCArMTA2LDkgQEAgUGFzc1JlZlB0cjxJbWFnZT4gU3R5bGVDYWNoZWRJbWFnZTo6
aW1hZwogICAgIHJldHVybiBtX2ltYWdlLT5pbWFnZUZvclJlbmRlcmVyKHJlbmRlcmVyKTsKIH0K
IAorYm9vbCBTdHlsZUNhY2hlZEltYWdlOjpoYXNBbHBoYShjb25zdCBSZW5kZXJPYmplY3QqIHJl
bmRlcmVyKSBjb25zdAoreworICAgIHJldHVybiBtX2ltYWdlLT5jdXJyZW50RnJhbWVIYXNBbHBo
YShyZW5kZXJlcik7Cit9CisKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TdHlsZUNhY2hlZEltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuaAkocmV2aXNpb24gMTM1NTI2KQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuaAkod29ya2luZyBjb3B5
KQpAQCAtNTYsNiArNTYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGFkZENsaWVudChS
ZW5kZXJPYmplY3QqKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQ2xpZW50KFJlbmRlck9iamVj
dCopOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJbWFnZT4gaW1hZ2UoUmVuZGVyT2JqZWN0Kiwg
Y29uc3QgSW50U2l6ZSYpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBoYXNBbHBoYShjb25zdCBS
ZW5kZXJPYmplY3QqKSBjb25zdCBPVkVSUklERTsKICAgICAKIHByaXZhdGU6CiAgICAgZXhwbGlj
aXQgU3R5bGVDYWNoZWRJbWFnZShDYWNoZWRJbWFnZSopOwpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2VTZXQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlU2V0LmNwcAkocmV2
aXNpb24gMTM1NTI2KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2Fj
aGVkSW1hZ2VTZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsNiArMTE2LDExIEBAIFBhc3NS
ZWZQdHI8SW1hZ2U+IFN0eWxlQ2FjaGVkSW1hZ2VTZXQ6OmkKICAgICByZXR1cm4gbV9iZXN0Rml0
SW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIocmVuZGVyZXIpOwogfQogCitib29sIFN0eWxlQ2FjaGVk
SW1hZ2VTZXQ6Omhhc0FscGhhKGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fYmVzdEZpdEltYWdlLT5jdXJyZW50RnJhbWVIYXNBbHBoYShyZW5kZXJl
cik7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShDU1Nf
SU1BR0VfU0VUKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2Fj
aGVkSW1hZ2VTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVDYWNoZWRJbWFnZVNldC5oCShyZXZpc2lvbiAxMzU1MjYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZVNldC5oCSh3b3JraW5nIGNvcHkp
CkBAIC03MSw2ICs3MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQ2xpZW50
KFJlbmRlck9iamVjdCopOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJbWFnZT4gaW1hZ2UoUmVu
ZGVyT2JqZWN0KiwgY29uc3QgSW50U2l6ZSYpIGNvbnN0OwogICAgIHZpcnR1YWwgZmxvYXQgaW1h
Z2VTY2FsZUZhY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VTY2FsZUZhY3RvcjsgfQorICAg
IHZpcnR1YWwgYm9vbCBoYXNBbHBoYShjb25zdCBSZW5kZXJPYmplY3QqKSBjb25zdCBPVkVSUklE
RTsKICAgICAKIHByaXZhdGU6CiAgICAgU3R5bGVDYWNoZWRJbWFnZVNldChDYWNoZWRJbWFnZSos
IGZsb2F0IGltYWdlU2NhbGVGYWN0b3IsIENTU0ltYWdlU2V0VmFsdWUqKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJbWFn
ZS5jcHAJKHJldmlzaW9uIDEzNTUyNikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TdHlsZUdlbmVyYXRlZEltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODksNCArODksOSBA
QCBQYXNzUmVmUHRyPEltYWdlPiBTdHlsZUdlbmVyYXRlZEltYWdlOjppCiAgICAgcmV0dXJuIG1f
aW1hZ2VHZW5lcmF0b3JWYWx1ZS0+aW1hZ2UocmVuZGVyZXIsIHNpemUpOwogfQogCitib29sIFN0
eWxlR2VuZXJhdGVkSW1hZ2U6Omhhc0FscGhhKGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW1hZ2VHZW5lcmF0b3JWYWx1ZS0+aGFzQWxwaGEocmVu
ZGVyZXIpOworfQorCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVHZW5lcmF0ZWRJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmgJKHJldmlzaW9uIDEzNTUyNikKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTUxLDYgKzUxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBhZGRDbGll
bnQoUmVuZGVyT2JqZWN0Kik7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUNsaWVudChSZW5kZXJP
YmplY3QqKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlKFJlbmRlck9iamVj
dCosIGNvbnN0IEludFNpemUmKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzQWxwaGEoY29u
c3QgUmVuZGVyT2JqZWN0KikgY29uc3QgT1ZFUlJJREU7CiAgICAgCiBwcml2YXRlOgogICAgIFN0
eWxlR2VuZXJhdGVkSW1hZ2UoUGFzc1JlZlB0cjxDU1NJbWFnZUdlbmVyYXRvclZhbHVlPik7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVJbWFnZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUltYWdlLmgJKHJldmlz
aW9uIDEzNTUyNikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUltYWdl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTY0LDYgKzY0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxJbWFnZT4gaW1hZ2UoUmVuZGVyT2JqZWN0KiwgY29uc3QgSW50U2l6ZSYpIGNv
bnN0ID0gMDsKICAgICB2aXJ0dWFsIFdyYXBwZWRJbWFnZVB0ciBkYXRhKCkgY29uc3QgPSAwOwog
ICAgIHZpcnR1YWwgZmxvYXQgaW1hZ2VTY2FsZUZhY3RvcigpIGNvbnN0IHsgcmV0dXJuIDE7IH0K
KyAgICB2aXJ0dWFsIGJvb2wgaGFzQWxwaGEoY29uc3QgUmVuZGVyT2JqZWN0KikgY29uc3QgPSAw
OwogCiAgICAgQUxXQVlTX0lOTElORSBib29sIGlzQ2FjaGVkSW1hZ2UoKSBjb25zdCB7IHJldHVy
biBtX2lzQ2FjaGVkSW1hZ2U7IH0KICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNQZW5kaW5nSW1h
Z2UoKSBjb25zdCB7IHJldHVybiBtX2lzUGVuZGluZ0ltYWdlOyB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVQZW5kaW5nSW1hZ2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVQZW5kaW5nSW1hZ2UuaAkocmV2aXNp
b24gMTM1NTI2KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUGVuZGlu
Z0ltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDYgKzY2LDcgQEAgcHVibGljOgogICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQorICAgIHZp
cnR1YWwgYm9vbCBoYXNBbHBoYShjb25zdCBSZW5kZXJPYmplY3QqKSBjb25zdCB7IHJldHVybiB0
cnVlOyB9CiAgICAgCiBwcml2YXRlOgogICAgIFN0eWxlUGVuZGluZ0ltYWdlKENTU1ZhbHVlKiB2
YWx1ZSkKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzNTYwNikKKysrIExheW91dFRlc3RzL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDEyLTExLTIzICBKdXN0aW4gTm92
b3NhZCAgPGp1bm92QGdvb2dsZS5jb20+CisKKyAgICAgICAgQWRkaW5nIG9jY2x1c2lvbiBkZXRl
Y3Rpb24gdG8gcmVkdWNlIG92ZXJkcmF3IGluIFJlbmRlckJveCBiYWNrZ3JvdW5kIHJlbmRlcmlu
ZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyNTU3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU3RlcGhlbiBXaGl0ZS4KKworICAgICAgICBOZXcgdGVz
dCBleGVyY2lzZXMgZGlmZmVyZW50IENTUyBiYWNrZ3JvdW5kIHN0eWxlIHVzZSBjYXNlcyB0aGF0
CisgICAgICAgIGFyZSBjYW5kaWRhdGVzIGZvciBvcHRpbWl6YXRpb24gYnkgb2NjbHVzaW9uIGN1
bGxpbmcuCisKKyAgICAgICAgKiBmYXN0L2JhY2tncm91bmRzL2JhY2tncm91bmQtb3BhcXVlLWlt
YWdlcy1vdmVyLWNvbG9yLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9iYWNr
Z3JvdW5kcy9iYWNrZ3JvdW5kLW9wYXF1ZS1pbWFnZXMtb3Zlci1jb2xvci5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDEyLTEx
LTIzICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdl
YiBJbnNwZWN0b3I6IGRhbWFnaW5nIGxhc3QgY2h1bmsgZG9lcyBub3QgcmVtb3ZlIGl0cyBnYXJi
YWdlIGZyb20gRE9NCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2JhY2tncm91bmRzL2JhY2tncm91
bmQtb3BhcXVlLWltYWdlcy1vdmVyLWNvbG9yLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2JhY2tncm91bmRzL2JhY2tncm91bmQtb3BhcXVlLWltYWdlcy1vdmVy
LWNvbG9yLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvYmFj
a2dyb3VuZHMvYmFja2dyb3VuZC1vcGFxdWUtaW1hZ2VzLW92ZXItY29sb3ItZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMyIEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2
MDAKKyAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNp
emUgODAweDEwOAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4MTA4Cisg
ICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4MAorICAgICAgUmVuZGVyQmxv
Y2sge0RJVn0gYXQgKDAsMCkgc2l6ZSA3ODR4MAorICAgICAgICBSZW5kZXJCbG9jayAoZmxvYXRp
bmcpIHtESVZ9IGF0ICgwLDApIHNpemUgMjB4MTAwIFtiZ2NvbG9yPSNGRjAwMDBdCisgICAgICAg
IFJlbmRlckJsb2NrIChmbG9hdGluZykge0RJVn0gYXQgKDIwLDApIHNpemUgMjB4MTAwIFtiZ2Nv
bG9yPSNGRjAwMDBdCisgICAgICAgIFJlbmRlckJsb2NrIChmbG9hdGluZykge0RJVn0gYXQgKDQw
LDApIHNpemUgMjB4MTAwIFtiZ2NvbG9yPSNGRjAwMDBdCisgICAgICAgIFJlbmRlckJsb2NrIChm
bG9hdGluZykge0RJVn0gYXQgKDYwLDApIHNpemUgMjB4MTAwIFtiZ2NvbG9yPSNGRjAwMDBdCisg
ICAgICAgIFJlbmRlckJsb2NrIChmbG9hdGluZykge0RJVn0gYXQgKDgwLDApIHNpemUgMjB4MTAw
IFtiZ2NvbG9yPSNGRjAwMDBdCisgICAgICAgIFJlbmRlckJsb2NrIChmbG9hdGluZykge0RJVn0g
YXQgKDEwMCwwKSBzaXplIDIweDEwMCBbYmdjb2xvcj0jRkYwMDAwXQorICAgICAgICBSZW5kZXJC
bG9jayAoZmxvYXRpbmcpIHtESVZ9IGF0ICgxMjAsMCkgc2l6ZSAyMHgxMDAgW2JnY29sb3I9I0ZG
MDAwMF0KKyAgICAgICAgUmVuZGVyQmxvY2sgKGZsb2F0aW5nKSB7RElWfSBhdCAoMTQwLDApIHNp
emUgMjB4MTAwIFtiZ2NvbG9yPSNGRjAwMDBdCisgICAgICAgIFJlbmRlckJsb2NrIChmbG9hdGlu
Zykge0RJVn0gYXQgKDE2MCwwKSBzaXplIDIweDEwMCBbYmdjb2xvcj0jRkYwMDAwXQorICAgICAg
ICBSZW5kZXJCbG9jayAoZmxvYXRpbmcpIHtESVZ9IGF0ICgxODAsMCkgc2l6ZSAyMHgxMDAgW2Jn
Y29sb3I9I0ZGMDAwMF0KK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJWaWV3
IGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4MTA4CisgIFJl
bmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHgxMDgKKyAgICBSZW5kZXJCb2R5IHtC
T0RZfSBhdCAoOCw4KSBzaXplIDc4NHgwCisgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCww
KSBzaXplIDc4NHgwCisgICAgICAgIFJlbmRlckJsb2NrIChmbG9hdGluZykge0RJVn0gYXQgKDAs
MCkgc2l6ZSAyMHgxMDAgW2JnY29sb3I9I0ZGMDAwMF0KKyAgICAgICAgUmVuZGVyQmxvY2sgKGZs
b2F0aW5nKSB7RElWfSBhdCAoMjAsMCkgc2l6ZSAyMHgxMDAgW2JnY29sb3I9I0ZGMDAwMF0KKyAg
ICAgICAgUmVuZGVyQmxvY2sgKGZsb2F0aW5nKSB7RElWfSBhdCAoNDAsMCkgc2l6ZSAyMHgxMDAg
W2JnY29sb3I9I0ZGMDAwMF0KKyAgICAgICAgUmVuZGVyQmxvY2sgKGZsb2F0aW5nKSB7RElWfSBh
dCAoNjAsMCkgc2l6ZSAyMHgxMDAgW2JnY29sb3I9I0ZGMDAwMF0KKyAgICAgICAgUmVuZGVyQmxv
Y2sgKGZsb2F0aW5nKSB7RElWfSBhdCAoODAsMCkgc2l6ZSAyMHgxMDAgW2JnY29sb3I9I0ZGMDAw
MF0KKyAgICAgICAgUmVuZGVyQmxvY2sgKGZsb2F0aW5nKSB7RElWfSBhdCAoMTAwLDApIHNpemUg
MjB4MTAwIFtiZ2NvbG9yPSNGRjAwMDBdCisgICAgICAgIFJlbmRlckJsb2NrIChmbG9hdGluZykg
e0RJVn0gYXQgKDEyMCwwKSBzaXplIDIweDEwMCBbYmdjb2xvcj0jRkYwMDAwXQorICAgICAgICBS
ZW5kZXJCbG9jayAoZmxvYXRpbmcpIHtESVZ9IGF0ICgxNDAsMCkgc2l6ZSAyMHgxMDAgW2JnY29s
b3I9I0ZGMDAwMF0KKyAgICAgICAgUmVuZGVyQmxvY2sgKGZsb2F0aW5nKSB7RElWfSBhdCAoMTYw
LDApIHNpemUgMjB4MTAwIFtiZ2NvbG9yPSNGRjAwMDBdCisgICAgICAgIFJlbmRlckJsb2NrIChm
bG9hdGluZykge0RJVn0gYXQgKDE4MCwwKSBzaXplIDIweDEwMCBbYmdjb2xvcj0jRkYwMDAwXQpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9iYWNrZ3JvdW5kcy9iYWNrZ3JvdW5kLW9wYXF1ZS1pbWFn
ZXMtb3Zlci1jb2xvci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvYmFja2dy
b3VuZHMvYmFja2dyb3VuZC1vcGFxdWUtaW1hZ2VzLW92ZXItY29sb3IuaHRtbAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Zhc3QvYmFja2dyb3VuZHMvYmFja2dyb3VuZC1vcGFxdWUtaW1h
Z2VzLW92ZXItY29sb3IuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NiBAQAorPCFkb2N0
eXBlIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPCEtLSBUZXN0IHBhc3NlcyB3aGVuIGEgZ3JlZW4g
cmVjdGFuZ2xlIGlzIGRpc3BsYXllZC4KK1RoZXNlIGFyZSBhbGwgZHJhd2luZyBjYXNlcyB0aGF0
IGNhbiBiZSBvcHRpbWl6ZWQgYnkgb2NjbHVzaW9uIGN1bGxpbmcKK1RoZSBmaXggZm9yIGJ1ZyAx
MDI1NTcgb3B0aW1pemVzIGNhc2VzIDEsIDIsIDMsIDYsIDcsIGFuZCA4LS0+Cis8c3R5bGUgdHlw
ZT0idGV4dC9jc3MiIG1lZGlhPSJzY3JlZW4iPgorICAgIC5yZWRCYWNrIHsKKyAgICAgICAgd2lk
dGg6MjBweDsKKyAgICAgICAgaGVpZ2h0OjEwMHB4OworICAgICAgICBkaXNwbGF5OmJsb2NrOwor
ICAgICAgICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0OworICAgICAgICBiYWNrZ3JvdW5kLWNv
bG9yOiByZWQ7CisgICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246MHB4IDBweCwgMHB4IDBweDsK
KyAgICAgICAgZmxvYXQ6IGxlZnQ7CisgICAgfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5Pgor
PGRpdj4KKyAgICA8ZGl2IGlkPSJjYXNlXzEiIGNsYXNzPSJyZWRCYWNrIiBzdHlsZT0iYmFja2dy
b3VuZC1pbWFnZTogdXJsKC4uLy4uL2h0dHAvdGVzdHMvbXVsdGlwYXJ0L3Jlc291cmNlcy9ncmVl
bi0xMDB4MTAwLnBuZykiPjwvZGl2PgorICAgIDxkaXYgaWQ9ImNhc2VfMiIgY2xhc3M9InJlZEJh
Y2siIHN0eWxlPSJiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3As
IGdyZWVuLCBncmVlbikiPjwvZGl2PgorICAgIDxkaXYgaWQ9ImNhc2VfMyIgY2xhc3M9InJlZEJh
Y2siIHN0eWxlPSJiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWNyb3NzLWZhZGUodXJsKC4uLy4u
L2h0dHAvdGVzdHMvbXVsdGlwYXJ0L3Jlc291cmNlcy9ncmVlbi0xMDB4MTAwLnBuZyksIHVybCgu
Li8uLi9odHRwL3Rlc3RzL211bHRpcGFydC9yZXNvdXJjZXMvZ3JlZW4tMTAweDEwMC5wbmcpLCA1
MCUpIj48L2Rpdj4KKyAgICA8ZGl2IGlkPSJjYXNlXzQiIGNsYXNzPSJyZWRCYWNrIiBzdHlsZT0i
YmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsgYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uLy4u
L2h0dHAvdGVzdHMvbXVsdGlwYXJ0L3Jlc291cmNlcy9ncmVlbi0xMDB4MTAwLnBuZykiPjwvZGl2
PgorICAgIDxkaXYgaWQ9ImNhc2VfNSIgY2xhc3M9InJlZEJhY2siIHN0eWxlPSJiYWNrZ3JvdW5k
LXJlcGVhdDogcmVwZWF0LXg7IGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi8uLi9odHRwL3Rlc3Rz
L211bHRpcGFydC9yZXNvdXJjZXMvZ3JlZW4tMTAweDEwMC5wbmcpIj48L2Rpdj4KKyAgICA8ZGl2
IGlkPSJjYXNlXzYiIGNsYXNzPSJyZWRCYWNrIiBzdHlsZT0iYmFja2dyb3VuZC1pbWFnZTogdXJs
KC4uLy4uL2h0dHAvdGVzdHMvbXVsdGlwYXJ0L3Jlc291cmNlcy9ncmVlbi0xMDB4MTAwLnBuZyks
dXJsKHJlc291cmNlcy82NHgzMi1yZWQucG5nKSI+PC9kaXY+CisgICAgPGRpdiBpZD0iY2FzZV83
IiBjbGFzcz0icmVkQmFjayIgc3R5bGU9ImJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFy
LWdyYWRpZW50KHRvcCwgZ3JlZW4sIGdyZWVuKSx1cmwocmVzb3VyY2VzLzY0eDMyLXJlZC5wbmcp
Ij48L2Rpdj4KKyAgICA8ZGl2IGlkPSJjYXNlXzgiIGNsYXNzPSJyZWRCYWNrIiBzdHlsZT0iYmFj
a2dyb3VuZC1pbWFnZTogLXdlYmtpdC1jcm9zcy1mYWRlKHVybCguLi8uLi9odHRwL3Rlc3RzL211
bHRpcGFydC9yZXNvdXJjZXMvZ3JlZW4tMTAweDEwMC5wbmcpLHVybCguLi8uLi9odHRwL3Rlc3Rz
L211bHRpcGFydC9yZXNvdXJjZXMvZ3JlZW4tMTAweDEwMC5wbmcpLCA1MCUpLHVybChyZXNvdXJj
ZXMvNjR4MzItcmVkLnBuZykiPjwvZGl2PgorICAgIDxkaXYgaWQ9ImNhc2VfOSIgY2xhc3M9InJl
ZEJhY2siIHN0eWxlPSJiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OyBiYWNrZ3JvdW5kLWlt
YWdlOiB1cmwoLi4vLi4vaHR0cC90ZXN0cy9tdWx0aXBhcnQvcmVzb3VyY2VzL2dyZWVuLTEwMHgx
MDAucG5nKSx1cmwocmVzb3VyY2VzLzY0eDMyLXJlZC5wbmcpIj48L2Rpdj4KKyAgICA8ZGl2IGlk
PSJjYXNlXzEwIiBjbGFzcz0icmVkQmFjayIgc3R5bGU9ImJhY2tncm91bmQtcmVwZWF0OiByZXBl
YXQteDsgYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uLy4uL2h0dHAvdGVzdHMvbXVsdGlwYXJ0L3Jl
c291cmNlcy9ncmVlbi0xMDB4MTAwLnBuZyksdXJsKHJlc291cmNlcy82NHgzMi1yZWQucG5nKSI+
PC9kaXY+Cis8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KKzwhZG9jdHlwZSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzwhLS0gVGVzdCBwYXNzZXMgd2hlbiBhIGdyZWVuIHJlY3RhbmdsZSBpcyBkaXNw
bGF5ZWQuCitUaGVzZSBhcmUgYWxsIGRyYXdpbmcgY2FzZXMgdGhhdCBjYW4gYmUgb3B0aW1pemVk
IGJ5IG9jY2x1c2lvbiBjdWxsaW5nCitUaGUgZml4IGZvciBidWcgMTAyNTU3IG9wdGltaXplcyBj
YXNlcyAxLCAyLCAzLCA2LCA3LCBhbmQgOC0tPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRp
YT0ic2NyZWVuIj4KKyAgICAucmVkQmFjayB7CisgICAgICAgIHdpZHRoOjIwcHg7CisgICAgICAg
IGhlaWdodDoxMDBweDsKKyAgICAgICAgZGlzcGxheTpibG9jazsKKyAgICAgICAgYmFja2dyb3Vu
ZC1yZXBlYXQ6IHJlcGVhdDsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmVkOworICAgICAg
ICBiYWNrZ3JvdW5kLXBvc2l0aW9uOjBweCAwcHgsIDBweCAwcHg7CisgICAgICAgIGZsb2F0OiBs
ZWZ0OworICAgIH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXY+CisgICAgPGRpdiBp
ZD0iY2FzZV8xIiBjbGFzcz0icmVkQmFjayIgc3R5bGU9ImJhY2tncm91bmQtaW1hZ2U6IHVybCgu
Li8uLi9odHRwL3Rlc3RzL211bHRpcGFydC9yZXNvdXJjZXMvZ3JlZW4tMTAweDEwMC5wbmcpIj48
L2Rpdj4KKyAgICA8ZGl2IGlkPSJjYXNlXzIiIGNsYXNzPSJyZWRCYWNrIiBzdHlsZT0iYmFja2dy
b3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCBncmVlbiwgZ3JlZW4pIj48
L2Rpdj4KKyAgICA8ZGl2IGlkPSJjYXNlXzMiIGNsYXNzPSJyZWRCYWNrIiBzdHlsZT0iYmFja2dy
b3VuZC1pbWFnZTogLXdlYmtpdC1jcm9zcy1mYWRlKHVybCguLi8uLi9odHRwL3Rlc3RzL211bHRp
cGFydC9yZXNvdXJjZXMvZ3JlZW4tMTAweDEwMC5wbmcpLCB1cmwoLi4vLi4vaHR0cC90ZXN0cy9t
dWx0aXBhcnQvcmVzb3VyY2VzL2dyZWVuLTEwMHgxMDAucG5nKSwgNTAlKSI+PC9kaXY+CisgICAg
PGRpdiBpZD0iY2FzZV80IiBjbGFzcz0icmVkQmFjayIgc3R5bGU9ImJhY2tncm91bmQtcmVwZWF0
OiBuby1yZXBlYXQ7IGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi8uLi9odHRwL3Rlc3RzL211bHRp
cGFydC9yZXNvdXJjZXMvZ3JlZW4tMTAweDEwMC5wbmcpIj48L2Rpdj4KKyAgICA8ZGl2IGlkPSJj
YXNlXzUiIGNsYXNzPSJyZWRCYWNrIiBzdHlsZT0iYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14
OyBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vLi4vaHR0cC90ZXN0cy9tdWx0aXBhcnQvcmVzb3Vy
Y2VzL2dyZWVuLTEwMHgxMDAucG5nKSI+PC9kaXY+CisgICAgPGRpdiBpZD0iY2FzZV82IiBjbGFz
cz0icmVkQmFjayIgc3R5bGU9ImJhY2tncm91bmQtaW1hZ2U6IHVybCguLi8uLi9odHRwL3Rlc3Rz
L211bHRpcGFydC9yZXNvdXJjZXMvZ3JlZW4tMTAweDEwMC5wbmcpLHVybChyZXNvdXJjZXMvNjR4
MzItcmVkLnBuZykiPjwvZGl2PgorICAgIDxkaXYgaWQ9ImNhc2VfNyIgY2xhc3M9InJlZEJhY2si
IHN0eWxlPSJiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsIGdy
ZWVuLCBncmVlbiksdXJsKHJlc291cmNlcy82NHgzMi1yZWQucG5nKSI+PC9kaXY+CisgICAgPGRp
diBpZD0iY2FzZV84IiBjbGFzcz0icmVkQmFjayIgc3R5bGU9ImJhY2tncm91bmQtaW1hZ2U6IC13
ZWJraXQtY3Jvc3MtZmFkZSh1cmwoLi4vLi4vaHR0cC90ZXN0cy9tdWx0aXBhcnQvcmVzb3VyY2Vz
L2dyZWVuLTEwMHgxMDAucG5nKSx1cmwoLi4vLi4vaHR0cC90ZXN0cy9tdWx0aXBhcnQvcmVzb3Vy
Y2VzL2dyZWVuLTEwMHgxMDAucG5nKSwgNTAlKSx1cmwocmVzb3VyY2VzLzY0eDMyLXJlZC5wbmcp
Ij48L2Rpdj4KKyAgICA8ZGl2IGlkPSJjYXNlXzkiIGNsYXNzPSJyZWRCYWNrIiBzdHlsZT0iYmFj
a2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsgYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uLy4uL2h0
dHAvdGVzdHMvbXVsdGlwYXJ0L3Jlc291cmNlcy9ncmVlbi0xMDB4MTAwLnBuZyksdXJsKHJlc291
cmNlcy82NHgzMi1yZWQucG5nKSI+PC9kaXY+CisgICAgPGRpdiBpZD0iY2FzZV8xMCIgY2xhc3M9
InJlZEJhY2siIHN0eWxlPSJiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7IGJhY2tncm91bmQt
aW1hZ2U6IHVybCguLi8uLi9odHRwL3Rlc3RzL211bHRpcGFydC9yZXNvdXJjZXMvZ3JlZW4tMTAw
eDEwMC5wbmcpLHVybChyZXNvdXJjZXMvNjR4MzItcmVkLnBuZykiPjwvZGl2PgorPC9kaXY+Cis8
L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0
RXhwZWN0YXRpb25zCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L1Rlc3RFeHBlY3RhdGlvbnMJKHJldmlzaW9uIDEzNTUyNikKKysrIExheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMJKHdvcmtpbmcgY29weSkKQEAgLTEyNjMsNiAr
MTI2Myw5IEBAIHdlYmtpdC5vcmcvYi8yNTgxNyBzdmcvZG9tL1NWR1NjcmlwdEVsZW0KIAogd2Vi
a2l0Lm9yZy9iLzYwMTE4IFsgTWFjIF0gc3ZnL2RvbS9TVkdTY3JpcHRFbGVtZW50L3NjcmlwdC1z
ZXQtaHJlZi5zdmcgWyBGYWlsdXJlIFBhc3MgXQogCisjIE5ldyB0ZXN0IGluIG5lZWQgb2YgbmV3
IGJhc2VsaW5lcword2Via2l0Lm9yZy9iLzEwMjU1NyBmYXN0L2JhY2tncm91bmRzL2JhY2tncm91
bmQtb3BhcXVlLWltYWdlcy1vdmVyLWNvbG9yLmh0bWwgWyBQYXNzIEltYWdlT25seUZhaWx1cmUg
RmFpbHVyZSBNaXNzaW5nIF0KKwogIyBJbnRyb2R1Y2VkIGR1ZSB0byBCVUdXSzUzNTEyLCBmYWls
cyB1bmRlciBTa2lhIHJpZ2h0IG5vdwogd2Via2l0Lm9yZy9iLzY1OTM5IHN2Zy9jdXN0b20vZ2V0
QkJveC1wYXRoLnN2ZyBbIEZhaWx1cmUgXQogCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvVGVzdEV4cGVjdGF0aW9ucwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvVGVzdEV4cGVjdGF0aW9ucwkocmV2aXNpb24gMTM1NTI2KQorKysgTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMJKHdvcmtpbmcgY29weSkKQEAgLTQ2OCw2ICs0Njgs
OSBAQCBtZWRpYS90cmFjay90cmFjay1jdWUtcmVuZGVyaW5nLXNuYXAtdG8tCiBtZWRpYS90cmFj
ay90cmFjay1jdWUtcmVuZGVyaW5nLXZlcnRpY2FsLmh0bWwKIG1lZGlhL3RyYWNrL3RyYWNrLXdl
YnZ0dC10YzAyOC11bnN1cHBvcnRlZC1tYXJrdXAuaHRtbAogCisjIFRlc3QgbmVlZHMgbmV3IGJh
c2VsaW5lcyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyNTU3Citm
YXN0L2JhY2tncm91bmRzL2JhY2tncm91bmQtb3BhcXVlLWltYWdlcy1vdmVyLWNvbG9yLmh0bWwK
KwogIyBUZXN0cyBmb3IgTWVkaWFTb3VyY2UgQVBJLiBGZWF0dXJlIGlzIG5vdCB5ZXQgZnVuY3Rp
b25hbC4KICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0NzMxCiBo
dHRwL3Rlc3RzL21lZGlhL21lZGlhLXNvdXJjZS8K
</data>

          </attachment>
      

    </bug>

</bugzilla>