<?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>70442</bug_id>
          
          <creation_ts>2011-10-19 14:52:08 -0700</creation_ts>
          <short_desc>[chromium] Track when CCLayerImpl properties have changed</short_desc>
          <delta_ts>2011-10-27 17:37:24 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</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>
          
          <blocked>67341</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Shawn Singh">shawnsingh</reporter>
          <assigned_to name="Shawn Singh">shawnsingh</assigned_to>
          <cc>danakj</cc>
    
    <cc>dglazkov</cc>
    
    <cc>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>nduca</cc>
    
    <cc>piman</cc>
    
    <cc>vangelis</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>487028</commentid>
    <comment_count>0</comment_count>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2011-10-19 14:52:08 -0700</bug_when>
    <thetext>When drawing layers in chromium, there are two major ways that the actual pixels drawn by a layer can be changed:
   - some content of the layer was updated (done by https://bugs.webkit.org/show_bug.cgi?id=69441)
   - a property changes (requiring the entire layer and the old exposed regions to be redrawn)

This bug is to modify CCLayerImpl to track when the appropriate properties change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490295</commentid>
    <comment_count>1</comment_count>
      <attachid>112388</attachid>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2011-10-25 13:21:47 -0700</bug_when>
    <thetext>Created attachment 112388
Please review, tests will be added soon</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490296</commentid>
    <comment_count>2</comment_count>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2011-10-25 13:24:20 -0700</bug_when>
    <thetext>Hi all,

It may be important to note that &quot;layer change&quot; affects screen damage.  if does not imply that layers can be skipped when drawing.  All relevant layers will still need to draw onto the damaged screen areas.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490299</commentid>
    <comment_count>3</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2011-10-25 13:28:24 -0700</bug_when>
    <thetext>(In reply to comment #0)
&gt;    - a property changes (requiring the entire layer and the old exposed regions to be redrawn)

If a layer&apos;s opacity (or opaque) property changes, the old exposed regions may not be enough.  This may add new exposed regions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490304</commentid>
    <comment_count>4</comment_count>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2011-10-25 13:34:13 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #0)
&gt; &gt;    - a property changes (requiring the entire layer and the old exposed regions to be redrawn)
&gt; 
&gt; If a layer&apos;s opacity (or opaque) property changes, the old exposed regions may not be enough.  This may add new exposed regions.

You&apos;re right - poor wording on my part =).   They are &quot;newly exposed areas&quot;, which are known based on &quot;previous draw rects&quot;.  

FYI, the exposed rects will come on the final scissor patch, where this &quot;rect buffer&quot; is maintained in the LayerRendererChromium.  I&apos;ll be happy to describe my intended changes on that scissor, if anyone asks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490310</commentid>
    <comment_count>5</comment_count>
      <attachid>112388</attachid>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2011-10-25 13:38:08 -0700</bug_when>
    <thetext>Comment on attachment 112388
Please review, tests will be added soon

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

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerImpl.cpp:230
&gt; +    for (size_t i = 0; i &lt; m_children.size(); ++i)

You can call setLayerHasChangedForDescendants here

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerImpl.cpp:240
&gt; +void CCLayerImpl:: setBounds(const IntSize&amp; bounds)

extra space before setBounds

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerImpl.h:104
&gt; +    void setAnchorPoint(const FloatPoint&amp; anchorPoint) { LAYER_CHANGED_IF_NOT_EQUAL(m_anchorPoint, anchorPoint); }

Changing the anchor point will affect the transforms of the entire subtree.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerImpl.h:113
&gt; +    void setOpacity(float opacity) { LAYER_CHANGED_IF_NOT_EQUAL(m_opacity, opacity); }

opacity will change the subtree as well

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerImpl.h:162
&gt; +    void setContentBounds(const IntSize&amp; contentBounds) { LAYER_CHANGED_IF_NOT_EQUAL(m_contentBounds, contentBounds); }

I don&apos;t see where contentBounds get used!! :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490452</commentid>
    <comment_count>6</comment_count>
      <attachid>112425</attachid>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2011-10-25 16:23:45 -0700</bug_when>
    <thetext>Created attachment 112425
addressed comments and added unit test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490470</commentid>
    <comment_count>7</comment_count>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2011-10-25 16:43:31 -0700</bug_when>
    <thetext>
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerImpl.h:162
&gt; &gt; +    void setContentBounds(const IntSize&amp; contentBounds) { LAYER_CHANGED_IF_NOT_EQUAL(m_contentBounds, contentBounds); }
&gt; 
&gt; I don&apos;t see where contentBounds get used!! :)

it gets used implicitly; the LayerChromium object has a virtual accessor contentBounds() which gives information to the CCLayerImpl.  For example, image layers retrieve their content bounds from the Image object itself.

I think its correct to say that a change in contentBounds will change the layer, but not the subtree.  Please let me know if I&apos;m missing something!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490490</commentid>
    <comment_count>8</comment_count>
      <attachid>112425</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-25 17:34:01 -0700</bug_when>
    <thetext>Comment on attachment 112425
addressed comments and added unit test

Attachment 112425 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10210403</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490808</commentid>
    <comment_count>9</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2011-10-26 06:55:20 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; opacity will change the subtree as well

I can see that opacity affects all layers underneath it, which are parents or siblings or cousins.. But I dont understand why it would specifically affect its children (and not siblings above it in z-order equally).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490936</commentid>
    <comment_count>10</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-10-26 09:40:19 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #5)
&gt; &gt; opacity will change the subtree as well
&gt; 
&gt; I can see that opacity affects all layers underneath it, which are parents or siblings or cousins.. But I dont understand why it would specifically affect its children (and not siblings above it in z-order equally).

It&apos;s my understanding here (please correct me if I&apos;m wrong), that when a layer is marked as &quot;changed&quot; either directly or recursively in this patch, it&apos;s implicitly saying that the part of the screen that the layer covers needs to be redrawn.  It&apos;s not about which layers need to be redrawn per se and more about which screen space rects need to be redrawn.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490972</commentid>
    <comment_count>11</comment_count>
      <attachid>112557</attachid>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2011-10-26 10:13:10 -0700</bug_when>
    <thetext>Created attachment 112557
this should fix the linux build error</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490976</commentid>
    <comment_count>12</comment_count>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2011-10-26 10:14:14 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #9)
&gt; &gt; (In reply to comment #5)
&gt; &gt; &gt; opacity will change the subtree as well
&gt; &gt; 
&gt; &gt; I can see that opacity affects all layers underneath it, which are parents or siblings or cousins.. But I dont understand why it would specifically affect its children (and not siblings above it in z-order equally).
&gt; 
&gt; It&apos;s my understanding here (please correct me if I&apos;m wrong), that when a layer is marked as &quot;changed&quot; either directly or recursively in this patch, it&apos;s implicitly saying that the part of the screen that the layer covers needs to be redrawn.  It&apos;s not about which layers need to be redrawn per se and more about which screen space rects need to be redrawn.

Would it be more clear if we changed this boolean flag from &quot;layerHasChanged&quot; to &quot;damagesScreen&quot; ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491003</commentid>
    <comment_count>13</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2011-10-26 10:41:11 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Would it be more clear if we changed this boolean flag from &quot;layerHasChanged&quot; to &quot;damagesScreen&quot; ?

IMO yes, or maybe &quot;layerIsDamaged&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491050</commentid>
    <comment_count>14</comment_count>
      <attachid>112557</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-10-26 11:40:27 -0700</bug_when>
    <thetext>Comment on attachment 112557
this should fix the linux build error

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

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerImpl.h:79
&gt; +    void setMaskLayer(PassRefPtr&lt;CCLayerImpl&gt; maskLayer) { SUBTREE_CHANGED_IF_NOT_EQUAL(m_maskLayer, maskLayer); }

there&apos;s no point in inlining these functions now - they are too big. please move the implementation to the .cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491143</commentid>
    <comment_count>15</comment_count>
      <attachid>112585</attachid>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2011-10-26 13:31:04 -0700</bug_when>
    <thetext>Created attachment 112585
moved implementations to .cpp file</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491147</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-26 13:33:31 -0700</bug_when>
    <thetext>Attachment 112585 did not pass style-queue:

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

Source/WebCore/platform/graphics/chromium/cc/CCLayerImpl.h:61:  The parameter name &quot;maskLayer&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/platform/graphics/chromium/cc/CCLayerImpl.h:64:  The parameter name &quot;replicaLayer&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/platform/graphics/chromium/cc/CCLayerImpl.h:78:  The parameter name &quot;drawsContent&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/platform/graphics/chromium/cc/CCLayerImpl.h:86:  The parameter name &quot;anchorPoint&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/platform/graphics/chromium/cc/CCLayerImpl.h:89:  The parameter name &quot;anchorPointZ&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/platform/graphics/chromium/cc/CCLayerImpl.h:92:  The parameter name &quot;masksToBounds&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/platform/graphics/chromium/cc/CCLayerImpl.h:95:  The parameter name &quot;opacity&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/platform/graphics/chromium/cc/CCLayerImpl.h:98:  The parameter name &quot;position&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/platform/graphics/chromium/cc/CCLayerImpl.h:101:  The parameter name &quot;preserves3D&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/platform/graphics/chromium/cc/CCLayerImpl.h:110:  The parameter name &quot;sublayerTransform&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/platform/graphics/chromium/cc/CCLayerImpl.h:113:  The parameter name &quot;transform&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/platform/graphics/chromium/cc/CCLayerImpl.h:120:  The parameter name &quot;c&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/platform/graphics/chromium/cc/CCLayerImpl.h:122:  The parameter name &quot;width&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/platform/graphics/chromium/cc/CCLayerImpl.h:143:  The parameter name &quot;contentBounds&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/platform/graphics/chromium/cc/CCLayerImpl.h:146:  The parameter name &quot;scrollPosition&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/platform/graphics/chromium/cc/CCLayerImpl.h:152:  The parameter name &quot;scrollDelta&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/platform/graphics/chromium/cc/CCLayerImpl.h:161:  The parameter name &quot;doubleSided&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 17 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491150</commentid>
    <comment_count>17</comment_count>
      <attachid>112587</attachid>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2011-10-26 13:35:25 -0700</bug_when>
    <thetext>Created attachment 112587
forgot to commit changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491151</commentid>
    <comment_count>18</comment_count>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2011-10-26 13:37:50 -0700</bug_when>
    <thetext>Hi all,

I did not re-name &quot;layerHasChanged&quot; yet.  I&apos;m willing to do it, but I felt that &quot;damagesScreen&quot; and &quot;layerIsDamaged&quot; are actually misleading and incorrect.

details if you care to read on:

damagesScreen is misleading because it implies that &quot;false&quot; means it does not damage the screen.  but the updateRect would still potentially damage the screen.  But we need this flag to be false in that scenario.

layerIsDamaged doesnt feel right because that sounds like the layer needs repainting/updating.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491181</commentid>
    <comment_count>19</comment_count>
      <attachid>112587</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-10-26 14:32:32 -0700</bug_when>
    <thetext>Comment on attachment 112587
forgot to commit changes

How about this (partially cribbed from GraphicsLayerCA):

layerPropertyChanged()
subtreeChanged()

?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491184</commentid>
    <comment_count>20</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-10-26 14:34:08 -0700</bug_when>
    <thetext>To expand a bit I don&apos;t think we are changing the layer in any cases here - the layer is still the same layer - we&apos;re either changing things about the layer (properties) or things about the layer&apos;s descendants (structure or properties on the descendants). If it&apos;s useful we can track the type of property change - see http://trac.webkit.org/browser/trunk/Source/WebCore/platform/graphics/ca/GraphicsLayerCA.h#L315 - but for now it seems we just want to know if anything happened.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491185</commentid>
    <comment_count>21</comment_count>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2011-10-26 14:36:18 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; To expand a bit I don&apos;t think we are changing the layer in any cases here - the layer is still the same layer - we&apos;re either changing things about the layer (properties) or things about the layer&apos;s descendants (structure or properties on the descendants). If it&apos;s useful we can track the type of property change - see http://trac.webkit.org/browser/trunk/Source/WebCore/platform/graphics/ca/GraphicsLayerCA.h#L315 - but for now it seems we just want to know if anything happened.

layerPropertyChanged is very agreeable with me =)

where does subtreeChanged() come in?  there wasn&apos;t going to be any accessor like that...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491190</commentid>
    <comment_count>22</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-10-26 14:40:39 -0700</bug_when>
    <thetext>I meant that for the setter, not the getter.  GraphicsLayerCA uses &apos;noteXXX&apos; for the setters - for example &apos;noteLayerPropertyChanged&apos;, I&apos;m not sure what convention you wanted to follow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491211</commentid>
    <comment_count>23</comment_count>
      <attachid>112603</attachid>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2011-10-26 15:10:14 -0700</bug_when>
    <thetext>Created attachment 112603
renamed the bool flag

hopefully this naming scheme is good</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491833</commentid>
    <comment_count>24</comment_count>
      <attachid>112603</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-10-27 12:42:40 -0700</bug_when>
    <thetext>Comment on attachment 112603
renamed the bool flag

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

I don&apos;t think the macros in CCLayerImpl.cpp are really worthwhile here - they aren&apos;t used all that much (1, 4, and 12 times by my count) and will make debugging a lot harder - for example you can&apos;t practically single-step, if we get crashes the line numbers will be bogus.  I&apos;d prefer that you just expand these out.

Other than that I think this is good to go.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerImpl.cpp:50
&gt; +#define DESCENDANTS_CHANGED_IF_NOT_EQUAL(member, newvalue)   \

there&apos;s only one user of this macro, so it doesn&apos;t seem worthwhile having it. Just expand it out.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerImpl.cpp:327
&gt; +void CCLayerImpl::setDebugBorderColor(Color c)
&gt; +{
&gt; +    LAYER_CHANGED_IF_NOT_EQUAL(m_debugBorderColor, c);

we don&apos;t typically use 1-letter variable names in WebKit. I think &apos;color&apos; would be better than &apos;c&apos;, or possibly &apos;debugBorderColor&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491906</commentid>
    <comment_count>25</comment_count>
      <attachid>112744</attachid>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2011-10-27 13:54:06 -0700</bug_when>
    <thetext>Created attachment 112744
addressed reviewer comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491911</commentid>
    <comment_count>26</comment_count>
      <attachid>112744</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-10-27 13:55:12 -0700</bug_when>
    <thetext>Comment on attachment 112744
addressed reviewer comments

R=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>492019</commentid>
    <comment_count>27</comment_count>
      <attachid>112769</attachid>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2011-10-27 15:35:00 -0700</bug_when>
    <thetext>Created attachment 112769
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>492023</commentid>
    <comment_count>28</comment_count>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2011-10-27 15:36:17 -0700</bug_when>
    <thetext>the most recent patch is the same, but resolves a conflict with the new setOpaque() in CCLayerImpl (and the appropriate added lines to the test)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>492029</commentid>
    <comment_count>29</comment_count>
      <attachid>112769</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-10-27 15:40:22 -0700</bug_when>
    <thetext>Comment on attachment 112769
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerImpl.cpp:242
&gt; +    if (m_bounds != bounds) {

actually now that i look at this again we&apos;d normally do this with early-return to avoid the extra indentation level. nothin&apos; but nitpicks here!

this is fine to land as-is, i think we&apos;ve gone through enough iterations</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>492132</commentid>
    <comment_count>30</comment_count>
      <attachid>112769</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-27 17:37:16 -0700</bug_when>
    <thetext>Comment on attachment 112769
Patch

Clearing flags on attachment: 112769

Committed r98667: &lt;http://trac.webkit.org/changeset/98667&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>492133</commentid>
    <comment_count>31</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-27 17:37:24 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112388</attachid>
            <date>2011-10-25 13:21:47 -0700</date>
            <delta_ts>2011-10-25 16:23:42 -0700</delta_ts>
            <desc>Please review, tests will be added soon</desc>
            <filename>bug-70442-20111025132146.patch</filename>
            <type>text/plain</type>
            <size>13146</size>
            <attacher name="Shawn Singh">shawnsingh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTgzNDgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0MjFjNzZhNTY2ZmY3MjQz
ZjE5MzEyOGYyOTU5Njc1OGZjMDkyYTE1Li5iOTdlY2U5NzU1MzIwOWM5MTg1OGIyMmU4NDc5YTA5
MDMzMDFhMDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcgQEAKKzIwMTEtMTAtMjUgIFNoYXdu
IFNpbmdoICA8c2hhd25zaW5naEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBU
cmFjayB3aGVuIENDTGF5ZXJJbXBsIHByb3BlcnRpZXMgaGF2ZSBjaGFuZ2VkCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDQ0MgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRvIGRldGVybWluZSBhIGdvb2Qg
c2Npc3NvciByZWN0LCB3ZSBtdXN0IGRldGVybWluZSB3aGF0CisgICAgICAgIHdpbGwgY2hhbmdl
IG9uIHRoZSBzY3JlZW4gb24gdGhlIG5leHQgcmVkcmF3LiAgVGhpcyBwYXRjaAorICAgICAgICB0
cmFja3MgdGhlIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiBvbiBDQ0xheWVySW1wbCBhbmQgbWFya3MK
KyAgICAgICAgYSBmbGFnIGluZGljYXRpbmcgd2hldGhlciB0aGlzIGxheWVyIHdpbGwgImRhbWFn
ZSIgdGhlIHNjcmVlbi4KKyAgICAgICAgVGhlIG90aGVyIHBvcnRpb24gb2YgImNoYW5nZSIsIHRo
ZSB1cGRhdGVSZWN0LCB3YXMgYWxyZWFkeQorICAgICAgICBsYW5kZWQgaW4gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY5NDQxLgorCisgICAgICAgIFRlc3RzIHdpbGwg
YmUgYWRkZWQgaW4gYSBmdXR1cmUgdmVyc2lvbiBvZiB0aGlzIHBhdGNoCisgICAgICAgIGJlZm9y
ZSBpdCBsYW5kcy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpDQ0xheWVySW1w
bCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6c2Nyb2xsQnkpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NMYXllckltcGw6OnNldExheWVySGFzQ2hhbmdlZEZvclN1YnRyZWUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OnNldExheWVySGFzQ2hhbmdlZEZvckRlc2NlbmRh
bnRzKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEJvdW5kcyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OkND
TGF5ZXJJbXBsOjpzZXRNYXNrTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6
OnNldFJlcGxpY2FMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6c2V0RHJh
d3NDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpzZXRBbmNob3JQb2lu
dCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6c2V0QW5jaG9yUG9pbnRaKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpzZXRNYXNrc1RvQm91bmRzKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpzZXRPcGFjaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkND
TGF5ZXJJbXBsOjpzZXRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6
c2V0UHJlc2VydmVzM0QpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OnNldFN1Ymxh
eWVyVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpzZXRUcmFuc2Zv
cm0pOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OnNldERlYnVnQm9yZGVyQ29sb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OnNldERlYnVnQm9yZGVyV2lkdGgpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OnNldENvbnRlbnRCb3VuZHMpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OnNldFNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDTGF5ZXJJbXBsOjpzZXRTY3JvbGxEZWx0YSk6CisgICAgICAgIChXZWJDb3JlOjpD
Q0xheWVySW1wbDo6c2V0RG91YmxlU2lkZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllcklt
cGw6OmxheWVySGFzQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6cmVz
ZXRMYXllckhhc0NoYW5nZWQpOgorCiAyMDExLTEwLTI1ICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVy
eXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJlZGVzaWduIHdvcmtl
cnMgc2lkZWJhciBwYW5lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKaW5kZXggMmIwNWQ5ZmYwZDE3
ZTAyYmI0ZWU3ZDgzYmIwZjNiMjRmY2I3NWNmMy4uNDIwYTYyZTliYWI3MTlhMGMzNzI2MDNiYjFi
MDk4YWEyNDkwY2NhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcApAQCAtNDMsNiArNDMsNyBA
QCBDQ0xheWVySW1wbDo6Q0NMYXllckltcGwoaW50IGlkKQogICAgICwgbV9hbmNob3JQb2ludCgw
LjUsIDAuNSkKICAgICAsIG1fYW5jaG9yUG9pbnRaKDApCiAgICAgLCBtX2RvdWJsZVNpZGVkKHRy
dWUpCisgICAgLCBtX2xheWVySGFzQ2hhbmdlZChmYWxzZSkKICAgICAsIG1fbWFza3NUb0JvdW5k
cyhmYWxzZSkKICAgICAsIG1fb3BhY2l0eSgxLjApCiAgICAgLCBtX3ByZXNlcnZlczNEKGZhbHNl
KQpAQCAtMTI1LDYgKzEyNiw3IEBAIHZvaWQgQ0NMYXllckltcGw6OnNjcm9sbEJ5KGNvbnN0IElu
dFNpemUmIHNjcm9sbCkKICAgICBJbnRTaXplIG1heERlbHRhID0gbV9tYXhTY3JvbGxQb3NpdGlv
biAtIHRvU2l6ZShtX3Njcm9sbFBvc2l0aW9uKTsKICAgICAvLyBDbGFtcCBuZXdEZWx0YSBzbyB0
aGF0IHBvc2l0aW9uICsgZGVsdGEgc3RheXMgd2l0aGluIHNjcm9sbCBib3VuZHMuCiAgICAgbV9z
Y3JvbGxEZWx0YSA9IG5ld0RlbHRhLmV4cGFuZGVkVG8obWluRGVsdGEpLnNocnVua1RvKG1heERl
bHRhKTsKKyAgICBzZXRMYXllckhhc0NoYW5nZWRGb3JTdWJ0cmVlKCk7CiB9CiAKIHZvaWQgQ0NM
YXllckltcGw6OmNsZWFudXBSZXNvdXJjZXMoKQpAQCAtMjIyLDYgKzIyNCwzMiBAQCB2b2lkIEND
TGF5ZXJJbXBsOjpkdW1wTGF5ZXIoVGV4dFN0cmVhbSYgdHMsIGludCBpbmRlbnQpIGNvbnN0CiAg
ICAgICAgIG1fY2hpbGRyZW5baV0tPmR1bXBMYXllcih0cywgaW5kZW50KzEpOwogfQogCit2b2lk
IENDTGF5ZXJJbXBsOjpzZXRMYXllckhhc0NoYW5nZWRGb3JTdWJ0cmVlKCkKK3sKKyAgICBtX2xh
eWVySGFzQ2hhbmdlZCA9IHRydWU7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2NoaWxk
cmVuLnNpemUoKTsgKytpKQorICAgICAgICBtX2NoaWxkcmVuW2ldLT5zZXRMYXllckhhc0NoYW5n
ZWRGb3JTdWJ0cmVlKCk7Cit9CisKK3ZvaWQgQ0NMYXllckltcGw6OnNldExheWVySGFzQ2hhbmdl
ZEZvckRlc2NlbmRhbnRzKCkKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fY2hpbGRy
ZW4uc2l6ZSgpOyArK2kpCisgICAgICAgIG1fY2hpbGRyZW5baV0tPnNldExheWVySGFzQ2hhbmdl
ZEZvclN1YnRyZWUoKTsKK30KKwordm9pZCBDQ0xheWVySW1wbDo6IHNldEJvdW5kcyhjb25zdCBJ
bnRTaXplJiBib3VuZHMpCit7CisgICAgaWYgKG1fYm91bmRzICE9IGJvdW5kcykgeworICAgICAg
ICBtX2JvdW5kcyA9IGJvdW5kczsKKworICAgICAgICAvLyBtYXNrc1RvQm91bmRzIG1lYW5zIHRo
YXQgdGhlc2UgYm91bmRzIGFmZmVjdCB0aGUgZW50aXJlIHN1YnRyZWUsIG5vdCBqdXN0IHRoaXMg
bGF5ZXIuCisgICAgICAgIGlmIChtYXNrc1RvQm91bmRzKCkpCisgICAgICAgICAgICBzZXRMYXll
ckhhc0NoYW5nZWRGb3JTdWJ0cmVlKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fbGF5
ZXJIYXNDaGFuZ2VkID0gdHJ1ZTsKKyAgICB9Cit9CisKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwu
aAppbmRleCAzOWM2ZjhlMTBiYTBmODc3YjkyYWZhMTMwZjQxMTg0MzRmYTVlY2E0Li4wMGRhZTUx
M2M2NmE3NmZhNDI3OWI4ZjY2Y2MwZDU0ZDg5ZGE3ZGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgK
QEAgLTQzLDYgKzQzLDI0IEBAIGNsYXNzIENDTGF5ZXJTb3J0ZXI7CiBjbGFzcyBMYXllckNocm9t
aXVtOwogY2xhc3MgTGF5ZXJSZW5kZXJlckNocm9taXVtOwogCisjZGVmaW5lIExBWUVSX0NIQU5H
RURfSUZfTk9UX0VRVUFMKG1lbWJlciwgbmV3dmFsdWUpICAgICBcCisgICAgaWYgKChtZW1iZXIp
ICE9IChuZXd2YWx1ZSkpIHsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKG1l
bWJlcikgPSAobmV3dmFsdWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
bV9sYXllckhhc0NoYW5nZWQgPSB0cnVlOyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9
CisKKyNkZWZpbmUgU1VCVFJFRV9DSEFOR0VEX0lGX05PVF9FUVVBTChtZW1iZXIsIG5ld3ZhbHVl
KSAgICBcCisgICAgaWYgKChtZW1iZXIpICE9IChuZXd2YWx1ZSkpIHsgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgIChtZW1iZXIpID0gKG5ld3ZhbHVlKTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICBzZXRMYXllckhhc0NoYW5nZWRGb3JTdWJ0cmVlKCk7
ICAgICAgICAgICAgICAgICAgIFwKKyAgICB9CisKKyNkZWZpbmUgREVTQ0VOREFOVFNfQ0hBTkdF
RF9JRl9OT1RfRVFVQUwobWVtYmVyLCBuZXd2YWx1ZSkgICAgICBcCisgICAgaWYgKChtZW1iZXIp
ICE9IChuZXd2YWx1ZSkpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgIChtZW1iZXIpID0gKG5ld3ZhbHVlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICBzZXRMYXllckhhc0NoYW5nZWRGb3JEZXNjZW5kYW50cygpOyAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgfQorCiBjbGFzcyBDQ0xheWVySW1wbCA6IHB1YmxpYyBS
ZWZDb3VudGVkPENDTGF5ZXJJbXBsPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8
Q0NMYXllckltcGw+IGNyZWF0ZShpbnQgaWQpCkBAIC01OCwxMCArNzYsMTAgQEAgcHVibGljOgog
ICAgIHZvaWQgcmVtb3ZlRnJvbVBhcmVudCgpOwogICAgIHZvaWQgcmVtb3ZlQWxsQ2hpbGRyZW4o
KTsKIAotICAgIHZvaWQgc2V0TWFza0xheWVyKFBhc3NSZWZQdHI8Q0NMYXllckltcGw+IG1hc2tM
YXllcikgeyBtX21hc2tMYXllciA9IG1hc2tMYXllcjsgfQorICAgIHZvaWQgc2V0TWFza0xheWVy
KFBhc3NSZWZQdHI8Q0NMYXllckltcGw+IG1hc2tMYXllcikgeyBTVUJUUkVFX0NIQU5HRURfSUZf
Tk9UX0VRVUFMKG1fbWFza0xheWVyLCBtYXNrTGF5ZXIpOyB9CiAgICAgQ0NMYXllckltcGwqIG1h
c2tMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fbWFza0xheWVyLmdldCgpOyB9CiAKLSAgICB2b2lk
IHNldFJlcGxpY2FMYXllcihQYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiByZXBsaWNhTGF5ZXIpIHsg
bV9yZXBsaWNhTGF5ZXIgPSByZXBsaWNhTGF5ZXI7IH0KKyAgICB2b2lkIHNldFJlcGxpY2FMYXll
cihQYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiByZXBsaWNhTGF5ZXIpIHsgU1VCVFJFRV9DSEFOR0VE
X0lGX05PVF9FUVVBTChtX3JlcGxpY2FMYXllciwgcmVwbGljYUxheWVyKTsgfQogICAgIENDTGF5
ZXJJbXBsKiByZXBsaWNhTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3JlcGxpY2FMYXllci5nZXQo
KTsgfQogCiAgICAgaW50IGlkKCkgY29uc3QgeyByZXR1cm4gbV9sYXllcklkOyB9CkBAIC03NSw3
ICs5Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYmluZENvbnRlbnRzVGV4dHVyZShM
YXllclJlbmRlcmVyQ2hyb21pdW0qKTsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIGxh
eWVyIGhhcyBjb250ZW50IHRvIGRyYXcuCi0gICAgdm9pZCBzZXREcmF3c0NvbnRlbnQoYm9vbCBk
cmF3c0NvbnRlbnQpIHsgbV9kcmF3c0NvbnRlbnQgPSBkcmF3c0NvbnRlbnQ7IH0KKyAgICB2b2lk
IHNldERyYXdzQ29udGVudChib29sIGRyYXdzQ29udGVudCkgeyBMQVlFUl9DSEFOR0VEX0lGX05P
VF9FUVVBTChtX2RyYXdzQ29udGVudCwgZHJhd3NDb250ZW50KTsgfQogICAgIGJvb2wgZHJhd3ND
b250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9kcmF3c0NvbnRlbnQ7IH0KIAogICAgIC8vIFJldHVy
bnMgdHJ1ZSBpZiBhbnkgb2YgdGhlIGxheWVyJ3MgZGVzY2VuZGFudHMgaGFzIGNvbnRlbnQgdG8g
ZHJhdy4KQEAgLTgzLDIyICsxMDEsMjIgQEAgcHVibGljOgogCiAgICAgdm9pZCBjbGVhbnVwUmVz
b3VyY2VzKCk7CiAKLSAgICB2b2lkIHNldEFuY2hvclBvaW50KGNvbnN0IEZsb2F0UG9pbnQmIGFu
Y2hvclBvaW50KSB7IG1fYW5jaG9yUG9pbnQgPSBhbmNob3JQb2ludDsgfQorICAgIHZvaWQgc2V0
QW5jaG9yUG9pbnQoY29uc3QgRmxvYXRQb2ludCYgYW5jaG9yUG9pbnQpIHsgTEFZRVJfQ0hBTkdF
RF9JRl9OT1RfRVFVQUwobV9hbmNob3JQb2ludCwgYW5jaG9yUG9pbnQpOyB9CiAgICAgY29uc3Qg
RmxvYXRQb2ludCYgYW5jaG9yUG9pbnQoKSBjb25zdCB7IHJldHVybiBtX2FuY2hvclBvaW50OyB9
CiAKLSAgICB2b2lkIHNldEFuY2hvclBvaW50WihmbG9hdCBhbmNob3JQb2ludFopIHsgbV9hbmNo
b3JQb2ludFogPSBhbmNob3JQb2ludFo7IH0KKyAgICB2b2lkIHNldEFuY2hvclBvaW50WihmbG9h
dCBhbmNob3JQb2ludFopIHsgTEFZRVJfQ0hBTkdFRF9JRl9OT1RfRVFVQUwobV9hbmNob3JQb2lu
dFosIGFuY2hvclBvaW50Wik7IH0KICAgICBmbG9hdCBhbmNob3JQb2ludFooKSBjb25zdCB7IHJl
dHVybiBtX2FuY2hvclBvaW50WjsgfQogCi0gICAgdm9pZCBzZXRNYXNrc1RvQm91bmRzKGJvb2wg
bWFza3NUb0JvdW5kcykgeyBtX21hc2tzVG9Cb3VuZHMgPSBtYXNrc1RvQm91bmRzOyB9CisgICAg
dm9pZCBzZXRNYXNrc1RvQm91bmRzKGJvb2wgbWFza3NUb0JvdW5kcykgeyBTVUJUUkVFX0NIQU5H
RURfSUZfTk9UX0VRVUFMKG1fbWFza3NUb0JvdW5kcywgbWFza3NUb0JvdW5kcyk7IH0KICAgICBi
b29sIG1hc2tzVG9Cb3VuZHMoKSBjb25zdCB7IHJldHVybiBtX21hc2tzVG9Cb3VuZHM7IH0KIAot
ICAgIHZvaWQgc2V0T3BhY2l0eShmbG9hdCBvcGFjaXR5KSB7IG1fb3BhY2l0eSA9IG9wYWNpdHk7
IH0KKyAgICB2b2lkIHNldE9wYWNpdHkoZmxvYXQgb3BhY2l0eSkgeyBMQVlFUl9DSEFOR0VEX0lG
X05PVF9FUVVBTChtX29wYWNpdHksIG9wYWNpdHkpOyB9CiAgICAgZmxvYXQgb3BhY2l0eSgpIGNv
bnN0IHsgcmV0dXJuIG1fb3BhY2l0eTsgfQogCi0gICAgdm9pZCBzZXRQb3NpdGlvbihjb25zdCBG
bG9hdFBvaW50JiBwb3NpdGlvbikgeyBtX3Bvc2l0aW9uID0gcG9zaXRpb247IH0KKyAgICB2b2lk
IHNldFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uKSB7IFNVQlRSRUVfQ0hBTkdF
RF9JRl9OT1RfRVFVQUwobV9wb3NpdGlvbiwgcG9zaXRpb24pOyB9CiAgICAgY29uc3QgRmxvYXRQ
b2ludCYgcG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uOyB9CiAKLSAgICB2b2lk
IHNldFByZXNlcnZlczNEKGJvb2wgcHJlc2VydmVzM0QpIHsgbV9wcmVzZXJ2ZXMzRCA9IHByZXNl
cnZlczNEOyB9CisgICAgdm9pZCBzZXRQcmVzZXJ2ZXMzRChib29sIHByZXNlcnZlczNEKSB7IFNV
QlRSRUVfQ0hBTkdFRF9JRl9OT1RfRVFVQUwobV9wcmVzZXJ2ZXMzRCwgcHJlc2VydmVzM0QpOyB9
CiAgICAgYm9vbCBwcmVzZXJ2ZXMzRCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlc2VydmVzM0Q7IH0K
IAogICAgIHZvaWQgc2V0VXNlc0xheWVyU2Npc3Nvcihib29sIHVzZXNMYXllclNjaXNzb3IpIHsg
bV91c2VzTGF5ZXJTY2lzc29yID0gdXNlc0xheWVyU2Npc3NvcjsgfQpAQCAtMTA3LDE5ICsxMjUs
MTkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0SXNOb25Db21wb3NpdGVkQ29udGVudChib29sIGlz
Tm9uQ29tcG9zaXRlZENvbnRlbnQpIHsgbV9pc05vbkNvbXBvc2l0ZWRDb250ZW50ID0gaXNOb25D
b21wb3NpdGVkQ29udGVudDsgfQogICAgIGJvb2wgaXNOb25Db21wb3NpdGVkQ29udGVudCgpIGNv
bnN0IHsgcmV0dXJuIG1faXNOb25Db21wb3NpdGVkQ29udGVudDsgfQogCi0gICAgdm9pZCBzZXRT
dWJsYXllclRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgc3VibGF5ZXJUcmFu
c2Zvcm0pIHsgbV9zdWJsYXllclRyYW5zZm9ybSA9IHN1YmxheWVyVHJhbnNmb3JtOyB9CisgICAg
dm9pZCBzZXRTdWJsYXllclRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgc3Vi
bGF5ZXJUcmFuc2Zvcm0pIHsgREVTQ0VOREFOVFNfQ0hBTkdFRF9JRl9OT1RfRVFVQUwobV9zdWJs
YXllclRyYW5zZm9ybSwgc3VibGF5ZXJUcmFuc2Zvcm0pOyB9CiAgICAgY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIHN1YmxheWVyVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9zdWJsYXll
clRyYW5zZm9ybTsgfQogCi0gICAgdm9pZCBzZXRUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmIHRyYW5zZm9ybSkgeyBtX3RyYW5zZm9ybSA9IHRyYW5zZm9ybTsgfQorICAgIHZv
aWQgc2V0VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0pIHsg
U1VCVFJFRV9DSEFOR0VEX0lGX05PVF9FUVVBTChtX3RyYW5zZm9ybSwgdHJhbnNmb3JtKTsgfQog
ICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0oKSBjb25zdCB7IHJldHVy
biBtX3RyYW5zZm9ybTsgfQogCiAgICAgdm9pZCBzZXROYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkg
eyBtX25hbWUgPSBuYW1lOyB9CiAgICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1
cm4gbV9uYW1lOyB9CiAKICAgICAvLyBEZWJ1ZyBsYXllciBib3JkZXIgLSB2aXN1YWwgZWZmZWN0
IG9ubHksIGRvIG5vdCBjaGFuZ2UgZ2VvbWV0cnkvY2xpcHBpbmcvZXRjLgotICAgIHZvaWQgc2V0
RGVidWdCb3JkZXJDb2xvcihDb2xvciBjKSB7IG1fZGVidWdCb3JkZXJDb2xvciA9IGM7IH0KKyAg
ICB2b2lkIHNldERlYnVnQm9yZGVyQ29sb3IoQ29sb3IgYykgeyBMQVlFUl9DSEFOR0VEX0lGX05P
VF9FUVVBTChtX2RlYnVnQm9yZGVyQ29sb3IsIGMpOyB9CiAgICAgQ29sb3IgZGVidWdCb3JkZXJD
b2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdCb3JkZXJDb2xvcjsgfQotICAgIHZvaWQgc2V0
RGVidWdCb3JkZXJXaWR0aChmbG9hdCB3aWR0aCkgeyBtX2RlYnVnQm9yZGVyV2lkdGggPSB3aWR0
aDsgfQorICAgIHZvaWQgc2V0RGVidWdCb3JkZXJXaWR0aChmbG9hdCB3aWR0aCkgeyBMQVlFUl9D
SEFOR0VEX0lGX05PVF9FUVVBTChtX2RlYnVnQm9yZGVyV2lkdGgsIHdpZHRoKTsgfQogICAgIGZs
b2F0IGRlYnVnQm9yZGVyV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2RlYnVnQm9yZGVyV2lkdGg7
IH0KIAogICAgIHZvaWQgZHJhd0RlYnVnQm9yZGVyKExheWVyUmVuZGVyZXJDaHJvbWl1bSopOwpA
QCAtMTM3LDE5ICsxNTUsMjAgQEAgcHVibGljOgogICAgIHZvaWQgc2V0VGFyZ2V0UmVuZGVyU3Vy
ZmFjZShDQ1JlbmRlclN1cmZhY2UqIHN1cmZhY2UpIHsgbV90YXJnZXRSZW5kZXJTdXJmYWNlID0g
c3VyZmFjZTsgfQogCiAgICAgY29uc3QgSW50U2l6ZSYgYm91bmRzKCkgY29uc3QgeyByZXR1cm4g
bV9ib3VuZHM7IH0KLSAgICB2b2lkIHNldEJvdW5kcyhjb25zdCBJbnRTaXplJiBib3VuZHMpIHsg
bV9ib3VuZHMgPSBib3VuZHM7IH0KKyAgICB2b2lkIHNldEJvdW5kcyhjb25zdCBJbnRTaXplJik7
CiAKICAgICBjb25zdCBJbnRTaXplJiBjb250ZW50Qm91bmRzKCkgY29uc3QgeyByZXR1cm4gbV9j
b250ZW50Qm91bmRzOyB9Ci0gICAgdm9pZCBzZXRDb250ZW50Qm91bmRzKGNvbnN0IEludFNpemUm
IGNvbnRlbnRCb3VuZHMpIHsgbV9jb250ZW50Qm91bmRzID0gY29udGVudEJvdW5kczsgfQorICAg
IC8vIEZJWE1FOiByZXZpZXdlcnMgcGxlYXNlIGNoZWNrIHRoaXMuLi4gaWYgY29udGVudCBib3Vu
ZHMgY2hhbmdlLCBpdCBzaG91bGQgbm90IGFmZmVjdCBkZXNjZW5kYW50IGxheWVycywgcmlnaHQ/
CisgICAgdm9pZCBzZXRDb250ZW50Qm91bmRzKGNvbnN0IEludFNpemUmIGNvbnRlbnRCb3VuZHMp
IHsgTEFZRVJfQ0hBTkdFRF9JRl9OT1RfRVFVQUwobV9jb250ZW50Qm91bmRzLCBjb250ZW50Qm91
bmRzKTsgfQogCiAgICAgY29uc3QgSW50UG9pbnQmIHNjcm9sbFBvc2l0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9zY3JvbGxQb3NpdGlvbjsgfQotICAgIHZvaWQgc2V0U2Nyb2xsUG9zaXRpb24oY29u
c3QgSW50UG9pbnQmIHNjcm9sbFBvc2l0aW9uKSB7IG1fc2Nyb2xsUG9zaXRpb24gPSBzY3JvbGxQ
b3NpdGlvbjsgfQorICAgIHZvaWQgc2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgSW50UG9pbnQmIHNj
cm9sbFBvc2l0aW9uKSB7IFNVQlRSRUVfQ0hBTkdFRF9JRl9OT1RfRVFVQUwobV9zY3JvbGxQb3Np
dGlvbiwgc2Nyb2xsUG9zaXRpb24pOyB9CiAKICAgICBjb25zdCBJbnRTaXplJiBtYXhTY3JvbGxQ
b3NpdGlvbigpIGNvbnN0IHtyZXR1cm4gbV9tYXhTY3JvbGxQb3NpdGlvbjsgfQogICAgIHZvaWQg
c2V0TWF4U2Nyb2xsUG9zaXRpb24oY29uc3QgSW50U2l6ZSYgbWF4U2Nyb2xsUG9zaXRpb24pIHsg
bV9tYXhTY3JvbGxQb3NpdGlvbiA9IG1heFNjcm9sbFBvc2l0aW9uOyB9CiAKICAgICBjb25zdCBJ
bnRTaXplJiBzY3JvbGxEZWx0YSgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsRGVsdGE7IH0KLSAg
ICB2b2lkIHNldFNjcm9sbERlbHRhKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhKSB7IG1fc2Ny
b2xsRGVsdGEgPSBzY3JvbGxEZWx0YTsgfQorICAgIHZvaWQgc2V0U2Nyb2xsRGVsdGEoY29uc3Qg
SW50U2l6ZSYgc2Nyb2xsRGVsdGEpIHsgU1VCVFJFRV9DSEFOR0VEX0lGX05PVF9FUVVBTChtX3Nj
cm9sbERlbHRhLCBzY3JvbGxEZWx0YSk7IH0KIAogICAgIHZvaWQgc2Nyb2xsQnkoY29uc3QgSW50
U2l6ZSYgc2Nyb2xsKTsKICAgICBib29sIHNjcm9sbGFibGUoKSBjb25zdCB7IHJldHVybiAhbWF4
U2Nyb2xsUG9zaXRpb24oKS5pc1plcm8oKTsgfQpAQCAtMTU4LDcgKzE3Nyw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldFZpc2libGVMYXllclJlY3QoY29uc3QgSW50UmVjdCYgdmlzaWJsZUxheWVy
UmVjdCkgeyBtX3Zpc2libGVMYXllclJlY3QgPSB2aXNpYmxlTGF5ZXJSZWN0OyB9CiAKICAgICBi
b29sIGRvdWJsZVNpZGVkKCkgY29uc3QgeyByZXR1cm4gbV9kb3VibGVTaWRlZDsgfQotICAgIHZv
aWQgc2V0RG91YmxlU2lkZWQoYm9vbCBkb3VibGVTaWRlZCkgeyBtX2RvdWJsZVNpZGVkID0gZG91
YmxlU2lkZWQ7IH0KKyAgICB2b2lkIHNldERvdWJsZVNpZGVkKGJvb2wgZG91YmxlU2lkZWQpIHsg
U1VCVFJFRV9DSEFOR0VEX0lGX05PVF9FUVVBTChtX2RvdWJsZVNpZGVkLCBkb3VibGVTaWRlZCk7
IH0KIAogICAgIC8vIFJldHVybnMgdGhlIHJlY3QgY29udGFpbnRhaW5pbmcgdGhpcyBsYXllciBp
biB0aGUgY3VycmVudCB2aWV3J3MgY29vcmRpbmF0ZSBzeXN0ZW0uCiAgICAgY29uc3QgSW50UmVj
dCBnZXREcmF3UmVjdCgpIGNvbnN0OwpAQCAtMTc0LDYgKzE5Myw5IEBAIHB1YmxpYzoKIAogICAg
IFN0cmluZyBsYXllclRyZWVBc1RleHQoKSBjb25zdDsKIAorICAgIGJvb2wgbGF5ZXJIYXNDaGFu
Z2VkKCkgY29uc3QgeyByZXR1cm4gbV9sYXllckhhc0NoYW5nZWQ7IH0KKyAgICB2b2lkIHJlc2V0
TGF5ZXJIYXNDaGFuZ2VkKCkgeyBtX2xheWVySGFzQ2hhbmdlZCA9IGZhbHNlOyB9CisKIHByb3Rl
Y3RlZDoKICAgICBleHBsaWNpdCBDQ0xheWVySW1wbChpbnQpOwogCkBAIC0xODUsNiArMjA3LDEx
IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFRyZWVTeW5jaHJvbml6ZXI7CiAgICAgdm9p
ZCBjbGVhckNoaWxkTGlzdCgpOyAvLyBXYXJuaW5nOiBUaGlzIGRvZXMgbm90IHByZXNlcnZlIHRy
ZWUgc3RydWN0dXJlIGludmFyaWFudHMgYW5kIHNvIGlzIG9ubHkgZXhwb3NlZCB0byB0aGUgdHJl
ZSBzeW5jaHJvbml6ZXIuCiAKKyAgICB2b2lkIHNldExheWVySGFzQ2hhbmdlZEZvclN1YnRyZWUo
KTsKKworICAgIC8vIE5vdGUgY2FyZWZ1bGx5IHRoaXMgZG9lcyBub3QgYWZmZWN0IHRoZSBjdXJy
ZW50IGxheWVyLgorICAgIHZvaWQgc2V0TGF5ZXJIYXNDaGFuZ2VkRm9yRGVzY2VuZGFudHMoKTsK
KwogICAgIHZpcnR1YWwgY29uc3QgY2hhciogbGF5ZXJUeXBlQXNTdHJpbmcoKSBjb25zdCB7IHJl
dHVybiAiTGF5ZXJDaHJvbWl1bSI7IH0KIAogICAgIHZvaWQgZHVtcExheWVyKFRleHRTdHJlYW0m
LCBpbnQgaW5kZW50KSBjb25zdDsKQEAgLTIwNyw2ICsyMzQsOSBAQCBwcml2YXRlOgogICAgIC8v
IFdoZXRoZXIgdGhlICJiYWNrIiBvZiB0aGlzIGxheWVyIHNob3VsZCBkcmF3LgogICAgIGJvb2wg
bV9kb3VibGVTaWRlZDsKIAorICAgIC8vIFRyYWNrcyBpZiBkcmF3aW5nLXJlbGF0ZWQgcHJvcGVy
dGllcyBoYXZlIGNoYW5nZWQgc2luY2UgbGFzdCByZWRyYXcuCisgICAgYm9vbCBtX2xheWVySGFz
Q2hhbmdlZDsKKwogICAgIEludFJlY3QgbV92aXNpYmxlTGF5ZXJSZWN0OwogICAgIGJvb2wgbV9t
YXNrc1RvQm91bmRzOwogICAgIGZsb2F0IG1fb3BhY2l0eTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112425</attachid>
            <date>2011-10-25 16:23:45 -0700</date>
            <delta_ts>2011-10-26 10:13:06 -0700</delta_ts>
            <desc>addressed comments and added unit test</desc>
            <filename>bug-70442-20111025162344.patch</filename>
            <type>text/plain</type>
            <size>24767</size>
            <attacher name="Shawn Singh">shawnsingh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTgzNDgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0MjFjNzZhNTY2ZmY3MjQz
ZjE5MzEyOGYyOTU5Njc1OGZjMDkyYTE1Li45NmZkMzI5MjdiMTk2NjZlM2RiNjM2Y2ViNThhMGRk
NzE4OTE3Y2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDYgQEAKKzIwMTEtMTAtMjUgIFNoYXdu
IFNpbmdoICA8c2hhd25zaW5naEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBU
cmFjayB3aGVuIENDTGF5ZXJJbXBsIHByb3BlcnRpZXMgaGF2ZSBjaGFuZ2VkLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA0NDIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBkZXRlcm1pbmUgYSBnb29k
IHNjaXNzb3IgcmVjdCwgd2UgbXVzdCBkZXRlcm1pbmUgd2hhdAorICAgICAgICB3aWxsIGNoYW5n
ZSBvbiB0aGUgc2NyZWVuIG9uIHRoZSBuZXh0IHJlZHJhdy4gIFRoaXMgcGF0Y2gKKyAgICAgICAg
dHJhY2tzIHRoZSBuZWNlc3NhcnkgaW5mb3JtYXRpb24gb24gQ0NMYXllckltcGwgYW5kIG1hcmtz
CisgICAgICAgIGEgZmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgdGhpcyBsYXllciB3aWxsICJkYW1h
Z2UiIHRoZSBzY3JlZW4uCisgICAgICAgIFRoZSBvdGhlciBwb3J0aW9uIG9mICJjaGFuZ2UiLCB0
aGUgdXBkYXRlUmVjdCwgd2FzIGFscmVhZHkKKyAgICAgICAgbGFuZGVkIGluIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTQ0MS4KKyAgICAgICAgCisgICAgICAgIE5l
dyB1bml0IHRlc3QgYWRkZWQgdG8gQ0NMYXllckltcGxUZXN0IHRvIHRlc3QgdGhpcyBwYXRjaC4K
KworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpDQ0xheWVySW1wbCk6CisgICAgICAg
IChXZWJDb3JlOjpDQ0xheWVySW1wbDo6c2Nyb2xsQnkpOgorICAgICAgICAoV2ViQ29yZTo6Q0NM
YXllckltcGw6OnNldExheWVySGFzQ2hhbmdlZEZvclN1YnRyZWUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NMYXllckltcGw6OnNldExheWVySGFzQ2hhbmdlZEZvckRlc2NlbmRhbnRzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpzZXRCb3VuZHMpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmg6CisgICAgICAgIChXZWJDb3JlOjpD
Q0xheWVySW1wbDo6c2V0TWFza0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBs
OjpzZXRSZXBsaWNhTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OnNldERy
YXdzQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6c2V0QW5jaG9yUG9p
bnQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OnNldEFuY2hvclBvaW50Wik6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6c2V0TWFza3NUb0JvdW5kcyk6CisgICAgICAg
IChXZWJDb3JlOjpDQ0xheWVySW1wbDo6c2V0T3BhY2l0eSk6CisgICAgICAgIChXZWJDb3JlOjpD
Q0xheWVySW1wbDo6c2V0UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6
OnNldFByZXNlcnZlczNEKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpzZXRTdWJs
YXllclRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6c2V0VHJhbnNm
b3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpzZXREZWJ1Z0JvcmRlckNvbG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpzZXREZWJ1Z0JvcmRlcldpZHRoKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpzZXRDb250ZW50Qm91bmRzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpzZXRTY3JvbGxQb3NpdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpDQ0xheWVySW1wbDo6c2V0U2Nyb2xsRGVsdGEpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NMYXllckltcGw6OnNldERvdWJsZVNpZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJ
bXBsOjpsYXllckhhc0NoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OnJl
c2V0TGF5ZXJIYXNDaGFuZ2VkKToKKwogMjAxMS0xMC0yNSAgWXVyeSBTZW1pa2hhdHNreSAgPHl1
cnlzQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiByZWRlc2lnbiB3b3Jr
ZXJzIHNpZGViYXIgcGFuZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAyNjk5YzU4OTll
Nzk5YWI2NDEzYzIwNmEzODcwNmViYWYxZmIwODdmLi5jMTcwYTBhNzk0MmE2MmMwNzI2ZDkwMDY4
MjY4OTEwNGI0OWM4MGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0
IEBACisyMDExLTEwLTI1ICBTaGF3biBTaW5naCAgPHNoYXduc2luZ2hAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFtjaHJvbWl1bV0gVHJhY2sgd2hlbiBDQ0xheWVySW1wbCBwcm9wZXJ0aWVzIGhh
dmUgY2hhbmdlZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTcwNDQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXZWJLaXQuZ3lwaToKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVySW1wbFRlc3QuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRFU1QpOgorCiAyMDExLTEwLTI1ICBZdXJ5IFNlbWlr
aGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJl
ZGVzaWduIHdvcmtlcnMgc2lkZWJhciBwYW5lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKaW5kZXgg
MmIwNWQ5ZmYwZDE3ZTAyYmI0ZWU3ZDgzYmIwZjNiMjRmY2I3NWNmMy4uMWE4YTRhNTkwODEwZTBi
MzVmMWUwYjYxZGQyMmZkNDk4OTYwYTA3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcApAQCAt
NDMsNiArNDMsNyBAQCBDQ0xheWVySW1wbDo6Q0NMYXllckltcGwoaW50IGlkKQogICAgICwgbV9h
bmNob3JQb2ludCgwLjUsIDAuNSkKICAgICAsIG1fYW5jaG9yUG9pbnRaKDApCiAgICAgLCBtX2Rv
dWJsZVNpZGVkKHRydWUpCisgICAgLCBtX2xheWVySGFzQ2hhbmdlZChmYWxzZSkKICAgICAsIG1f
bWFza3NUb0JvdW5kcyhmYWxzZSkKICAgICAsIG1fb3BhY2l0eSgxLjApCiAgICAgLCBtX3ByZXNl
cnZlczNEKGZhbHNlKQpAQCAtMTI1LDYgKzEyNiw3IEBAIHZvaWQgQ0NMYXllckltcGw6OnNjcm9s
bEJ5KGNvbnN0IEludFNpemUmIHNjcm9sbCkKICAgICBJbnRTaXplIG1heERlbHRhID0gbV9tYXhT
Y3JvbGxQb3NpdGlvbiAtIHRvU2l6ZShtX3Njcm9sbFBvc2l0aW9uKTsKICAgICAvLyBDbGFtcCBu
ZXdEZWx0YSBzbyB0aGF0IHBvc2l0aW9uICsgZGVsdGEgc3RheXMgd2l0aGluIHNjcm9sbCBib3Vu
ZHMuCiAgICAgbV9zY3JvbGxEZWx0YSA9IG5ld0RlbHRhLmV4cGFuZGVkVG8obWluRGVsdGEpLnNo
cnVua1RvKG1heERlbHRhKTsKKyAgICBzZXRMYXllckhhc0NoYW5nZWRGb3JTdWJ0cmVlKCk7CiB9
CiAKIHZvaWQgQ0NMYXllckltcGw6OmNsZWFudXBSZXNvdXJjZXMoKQpAQCAtMjIyLDYgKzIyNCwz
MSBAQCB2b2lkIENDTGF5ZXJJbXBsOjpkdW1wTGF5ZXIoVGV4dFN0cmVhbSYgdHMsIGludCBpbmRl
bnQpIGNvbnN0CiAgICAgICAgIG1fY2hpbGRyZW5baV0tPmR1bXBMYXllcih0cywgaW5kZW50KzEp
OwogfQogCit2b2lkIENDTGF5ZXJJbXBsOjpzZXRMYXllckhhc0NoYW5nZWRGb3JTdWJ0cmVlKCkK
K3sKKyAgICBtX2xheWVySGFzQ2hhbmdlZCA9IHRydWU7CisgICAgc2V0TGF5ZXJIYXNDaGFuZ2Vk
Rm9yRGVzY2VuZGFudHMoKTsKK30KKwordm9pZCBDQ0xheWVySW1wbDo6c2V0TGF5ZXJIYXNDaGFu
Z2VkRm9yRGVzY2VuZGFudHMoKQoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9jaGls
ZHJlbi5zaXplKCk7ICsraSkKKyAgICAgICAgbV9jaGlsZHJlbltpXS0+c2V0TGF5ZXJIYXNDaGFu
Z2VkRm9yU3VidHJlZSgpOworfQorCit2b2lkIENDTGF5ZXJJbXBsOjpzZXRCb3VuZHMoY29uc3Qg
SW50U2l6ZSYgYm91bmRzKQoreworICAgIGlmIChtX2JvdW5kcyAhPSBib3VuZHMpIHsKKyAgICAg
ICAgbV9ib3VuZHMgPSBib3VuZHM7CisKKyAgICAgICAgLy8gbWFza3NUb0JvdW5kcyBtZWFucyB0
aGF0IHRoZXNlIGJvdW5kcyBhZmZlY3QgdGhlIGVudGlyZSBzdWJ0cmVlLCBub3QganVzdCB0aGlz
IGxheWVyLgorICAgICAgICBpZiAobWFza3NUb0JvdW5kcygpKQorICAgICAgICAgICAgc2V0TGF5
ZXJIYXNDaGFuZ2VkRm9yU3VidHJlZSgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2xh
eWVySGFzQ2hhbmdlZCA9IHRydWU7CisgICAgfQorfQorCiB9CiAKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBs
LmgKaW5kZXggMzljNmY4ZTEwYmEwZjg3N2I5MmFmYTEzMGY0MTE4NDM0ZmE1ZWNhNC4uMWY0OGJl
MTFjN2VjZDNmZjQwZmM3ZThjOWY3NjQwNDkxMjExNGIzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5o
CkBAIC00Myw2ICs0MywyNCBAQCBjbGFzcyBDQ0xheWVyU29ydGVyOwogY2xhc3MgTGF5ZXJDaHJv
bWl1bTsKIGNsYXNzIExheWVyUmVuZGVyZXJDaHJvbWl1bTsKIAorI2RlZmluZSBMQVlFUl9DSEFO
R0VEX0lGX05PVF9FUVVBTChtZW1iZXIsIG5ld3ZhbHVlKSAgICAgXAorICAgIGlmICgobWVtYmVy
KSAhPSAobmV3dmFsdWUpKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICht
ZW1iZXIpID0gKG5ld3ZhbHVlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg
IG1fbGF5ZXJIYXNDaGFuZ2VkID0gdHJ1ZTsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
fQorCisjZGVmaW5lIFNVQlRSRUVfQ0hBTkdFRF9JRl9OT1RfRVFVQUwobWVtYmVyLCBuZXd2YWx1
ZSkgICAgXAorICAgIGlmICgobWVtYmVyKSAhPSAobmV3dmFsdWUpKSB7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICAobWVtYmVyKSA9IChuZXd2YWx1ZSk7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgc2V0TGF5ZXJIYXNDaGFuZ2VkRm9yU3VidHJlZSgp
OyAgICAgICAgICAgICAgICAgICBcCisgICAgfQorCisjZGVmaW5lIERFU0NFTkRBTlRTX0NIQU5H
RURfSUZfTk9UX0VRVUFMKG1lbWJlciwgbmV3dmFsdWUpICAgICAgXAorICAgIGlmICgobWVtYmVy
KSAhPSAobmV3dmFsdWUpKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICAobWVtYmVyKSA9IChuZXd2YWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgc2V0TGF5ZXJIYXNDaGFuZ2VkRm9yRGVzY2VuZGFudHMoKTsgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgIH0KKwogY2xhc3MgQ0NMYXllckltcGwgOiBwdWJsaWMg
UmVmQ291bnRlZDxDQ0xheWVySW1wbD4gewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRy
PENDTGF5ZXJJbXBsPiBjcmVhdGUoaW50IGlkKQpAQCAtNTgsMTAgKzc2LDEwIEBAIHB1YmxpYzoK
ICAgICB2b2lkIHJlbW92ZUZyb21QYXJlbnQoKTsKICAgICB2b2lkIHJlbW92ZUFsbENoaWxkcmVu
KCk7CiAKLSAgICB2b2lkIHNldE1hc2tMYXllcihQYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBtYXNr
TGF5ZXIpIHsgbV9tYXNrTGF5ZXIgPSBtYXNrTGF5ZXI7IH0KKyAgICB2b2lkIHNldE1hc2tMYXll
cihQYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBtYXNrTGF5ZXIpIHsgU1VCVFJFRV9DSEFOR0VEX0lG
X05PVF9FUVVBTChtX21hc2tMYXllciwgbWFza0xheWVyKTsgfQogICAgIENDTGF5ZXJJbXBsKiBt
YXNrTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX21hc2tMYXllci5nZXQoKTsgfQogCi0gICAgdm9p
ZCBzZXRSZXBsaWNhTGF5ZXIoUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4gcmVwbGljYUxheWVyKSB7
IG1fcmVwbGljYUxheWVyID0gcmVwbGljYUxheWVyOyB9CisgICAgdm9pZCBzZXRSZXBsaWNhTGF5
ZXIoUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4gcmVwbGljYUxheWVyKSB7IFNVQlRSRUVfQ0hBTkdF
RF9JRl9OT1RfRVFVQUwobV9yZXBsaWNhTGF5ZXIsIHJlcGxpY2FMYXllcik7IH0KICAgICBDQ0xh
eWVySW1wbCogcmVwbGljYUxheWVyKCkgY29uc3QgeyByZXR1cm4gbV9yZXBsaWNhTGF5ZXIuZ2V0
KCk7IH0KIAogICAgIGludCBpZCgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXJJZDsgfQpAQCAtNzUs
NyArOTMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGJpbmRDb250ZW50c1RleHR1cmUo
TGF5ZXJSZW5kZXJlckNocm9taXVtKik7CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhpcyBs
YXllciBoYXMgY29udGVudCB0byBkcmF3LgotICAgIHZvaWQgc2V0RHJhd3NDb250ZW50KGJvb2wg
ZHJhd3NDb250ZW50KSB7IG1fZHJhd3NDb250ZW50ID0gZHJhd3NDb250ZW50OyB9CisgICAgdm9p
ZCBzZXREcmF3c0NvbnRlbnQoYm9vbCBkcmF3c0NvbnRlbnQpIHsgTEFZRVJfQ0hBTkdFRF9JRl9O
T1RfRVFVQUwobV9kcmF3c0NvbnRlbnQsIGRyYXdzQ29udGVudCk7IH0KICAgICBib29sIGRyYXdz
Q29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZHJhd3NDb250ZW50OyB9CiAKICAgICAvLyBSZXR1
cm5zIHRydWUgaWYgYW55IG9mIHRoZSBsYXllcidzIGRlc2NlbmRhbnRzIGhhcyBjb250ZW50IHRv
IGRyYXcuCkBAIC04MywyMiArMTAxLDIyIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xlYW51cFJl
c291cmNlcygpOwogCi0gICAgdm9pZCBzZXRBbmNob3JQb2ludChjb25zdCBGbG9hdFBvaW50JiBh
bmNob3JQb2ludCkgeyBtX2FuY2hvclBvaW50ID0gYW5jaG9yUG9pbnQ7IH0KKyAgICB2b2lkIHNl
dEFuY2hvclBvaW50KGNvbnN0IEZsb2F0UG9pbnQmIGFuY2hvclBvaW50KSB7IFNVQlRSRUVfQ0hB
TkdFRF9JRl9OT1RfRVFVQUwobV9hbmNob3JQb2ludCwgYW5jaG9yUG9pbnQpOyB9CiAgICAgY29u
c3QgRmxvYXRQb2ludCYgYW5jaG9yUG9pbnQoKSBjb25zdCB7IHJldHVybiBtX2FuY2hvclBvaW50
OyB9CiAKLSAgICB2b2lkIHNldEFuY2hvclBvaW50WihmbG9hdCBhbmNob3JQb2ludFopIHsgbV9h
bmNob3JQb2ludFogPSBhbmNob3JQb2ludFo7IH0KKyAgICB2b2lkIHNldEFuY2hvclBvaW50Wihm
bG9hdCBhbmNob3JQb2ludFopIHsgU1VCVFJFRV9DSEFOR0VEX0lGX05PVF9FUVVBTChtX2FuY2hv
clBvaW50WiwgYW5jaG9yUG9pbnRaKTsgfQogICAgIGZsb2F0IGFuY2hvclBvaW50WigpIGNvbnN0
IHsgcmV0dXJuIG1fYW5jaG9yUG9pbnRaOyB9CiAKLSAgICB2b2lkIHNldE1hc2tzVG9Cb3VuZHMo
Ym9vbCBtYXNrc1RvQm91bmRzKSB7IG1fbWFza3NUb0JvdW5kcyA9IG1hc2tzVG9Cb3VuZHM7IH0K
KyAgICB2b2lkIHNldE1hc2tzVG9Cb3VuZHMoYm9vbCBtYXNrc1RvQm91bmRzKSB7IFNVQlRSRUVf
Q0hBTkdFRF9JRl9OT1RfRVFVQUwobV9tYXNrc1RvQm91bmRzLCBtYXNrc1RvQm91bmRzKTsgfQog
ICAgIGJvb2wgbWFza3NUb0JvdW5kcygpIGNvbnN0IHsgcmV0dXJuIG1fbWFza3NUb0JvdW5kczsg
fQogCi0gICAgdm9pZCBzZXRPcGFjaXR5KGZsb2F0IG9wYWNpdHkpIHsgbV9vcGFjaXR5ID0gb3Bh
Y2l0eTsgfQorICAgIHZvaWQgc2V0T3BhY2l0eShmbG9hdCBvcGFjaXR5KSB7IFNVQlRSRUVfQ0hB
TkdFRF9JRl9OT1RfRVFVQUwobV9vcGFjaXR5LCBvcGFjaXR5KTsgfQogICAgIGZsb2F0IG9wYWNp
dHkoKSBjb25zdCB7IHJldHVybiBtX29wYWNpdHk7IH0KIAotICAgIHZvaWQgc2V0UG9zaXRpb24o
Y29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24pIHsgbV9wb3NpdGlvbiA9IHBvc2l0aW9uOyB9Cisg
ICAgdm9pZCBzZXRQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbikgeyBTVUJUUkVF
X0NIQU5HRURfSUZfTk9UX0VRVUFMKG1fcG9zaXRpb24sIHBvc2l0aW9uKTsgfQogICAgIGNvbnN0
IEZsb2F0UG9pbnQmIHBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbjsgfQogCi0g
ICAgdm9pZCBzZXRQcmVzZXJ2ZXMzRChib29sIHByZXNlcnZlczNEKSB7IG1fcHJlc2VydmVzM0Qg
PSBwcmVzZXJ2ZXMzRDsgfQorICAgIHZvaWQgc2V0UHJlc2VydmVzM0QoYm9vbCBwcmVzZXJ2ZXMz
RCkgeyBTVUJUUkVFX0NIQU5HRURfSUZfTk9UX0VRVUFMKG1fcHJlc2VydmVzM0QsIHByZXNlcnZl
czNEKTsgfQogICAgIGJvb2wgcHJlc2VydmVzM0QoKSBjb25zdCB7IHJldHVybiBtX3ByZXNlcnZl
czNEOyB9CiAKICAgICB2b2lkIHNldFVzZXNMYXllclNjaXNzb3IoYm9vbCB1c2VzTGF5ZXJTY2lz
c29yKSB7IG1fdXNlc0xheWVyU2Npc3NvciA9IHVzZXNMYXllclNjaXNzb3I7IH0KQEAgLTEwNywx
OSArMTI1LDE5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldElzTm9uQ29tcG9zaXRlZENvbnRlbnQo
Ym9vbCBpc05vbkNvbXBvc2l0ZWRDb250ZW50KSB7IG1faXNOb25Db21wb3NpdGVkQ29udGVudCA9
IGlzTm9uQ29tcG9zaXRlZENvbnRlbnQ7IH0KICAgICBib29sIGlzTm9uQ29tcG9zaXRlZENvbnRl
bnQoKSBjb25zdCB7IHJldHVybiBtX2lzTm9uQ29tcG9zaXRlZENvbnRlbnQ7IH0KIAotICAgIHZv
aWQgc2V0U3VibGF5ZXJUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHN1Ymxh
eWVyVHJhbnNmb3JtKSB7IG1fc3VibGF5ZXJUcmFuc2Zvcm0gPSBzdWJsYXllclRyYW5zZm9ybTsg
fQorICAgIHZvaWQgc2V0U3VibGF5ZXJUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIHN1YmxheWVyVHJhbnNmb3JtKSB7IERFU0NFTkRBTlRTX0NIQU5HRURfSUZfTk9UX0VRVUFM
KG1fc3VibGF5ZXJUcmFuc2Zvcm0sIHN1YmxheWVyVHJhbnNmb3JtKTsgfQogICAgIGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4JiBzdWJsYXllclRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1f
c3VibGF5ZXJUcmFuc2Zvcm07IH0KIAotICAgIHZvaWQgc2V0VHJhbnNmb3JtKGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0pIHsgbV90cmFuc2Zvcm0gPSB0cmFuc2Zvcm07IH0K
KyAgICB2b2lkIHNldFRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNm
b3JtKSB7IFNVQlRSRUVfQ0hBTkdFRF9JRl9OT1RfRVFVQUwobV90cmFuc2Zvcm0sIHRyYW5zZm9y
bSk7IH0KICAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtKCkgY29uc3Qg
eyByZXR1cm4gbV90cmFuc2Zvcm07IH0KIAogICAgIHZvaWQgc2V0TmFtZShjb25zdCBTdHJpbmcm
IG5hbWUpIHsgbV9uYW1lID0gbmFtZTsgfQogICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbmFtZTsgfQogCiAgICAgLy8gRGVidWcgbGF5ZXIgYm9yZGVyIC0gdmlzdWFs
IGVmZmVjdCBvbmx5LCBkbyBub3QgY2hhbmdlIGdlb21ldHJ5L2NsaXBwaW5nL2V0Yy4KLSAgICB2
b2lkIHNldERlYnVnQm9yZGVyQ29sb3IoQ29sb3IgYykgeyBtX2RlYnVnQm9yZGVyQ29sb3IgPSBj
OyB9CisgICAgdm9pZCBzZXREZWJ1Z0JvcmRlckNvbG9yKENvbG9yIGMpIHsgTEFZRVJfQ0hBTkdF
RF9JRl9OT1RfRVFVQUwobV9kZWJ1Z0JvcmRlckNvbG9yLCBjKTsgfQogICAgIENvbG9yIGRlYnVn
Qm9yZGVyQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2RlYnVnQm9yZGVyQ29sb3I7IH0KLSAgICB2
b2lkIHNldERlYnVnQm9yZGVyV2lkdGgoZmxvYXQgd2lkdGgpIHsgbV9kZWJ1Z0JvcmRlcldpZHRo
ID0gd2lkdGg7IH0KKyAgICB2b2lkIHNldERlYnVnQm9yZGVyV2lkdGgoZmxvYXQgd2lkdGgpIHsg
TEFZRVJfQ0hBTkdFRF9JRl9OT1RfRVFVQUwobV9kZWJ1Z0JvcmRlcldpZHRoLCB3aWR0aCk7IH0K
ICAgICBmbG9hdCBkZWJ1Z0JvcmRlcldpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z0JvcmRl
cldpZHRoOyB9CiAKICAgICB2b2lkIGRyYXdEZWJ1Z0JvcmRlcihMYXllclJlbmRlcmVyQ2hyb21p
dW0qKTsKQEAgLTEzNywxOSArMTU1LDE5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFRhcmdldFJl
bmRlclN1cmZhY2UoQ0NSZW5kZXJTdXJmYWNlKiBzdXJmYWNlKSB7IG1fdGFyZ2V0UmVuZGVyU3Vy
ZmFjZSA9IHN1cmZhY2U7IH0KIAogICAgIGNvbnN0IEludFNpemUmIGJvdW5kcygpIGNvbnN0IHsg
cmV0dXJuIG1fYm91bmRzOyB9Ci0gICAgdm9pZCBzZXRCb3VuZHMoY29uc3QgSW50U2l6ZSYgYm91
bmRzKSB7IG1fYm91bmRzID0gYm91bmRzOyB9CisgICAgdm9pZCBzZXRCb3VuZHMoY29uc3QgSW50
U2l6ZSYpOwogCiAgICAgY29uc3QgSW50U2l6ZSYgY29udGVudEJvdW5kcygpIGNvbnN0IHsgcmV0
dXJuIG1fY29udGVudEJvdW5kczsgfQotICAgIHZvaWQgc2V0Q29udGVudEJvdW5kcyhjb25zdCBJ
bnRTaXplJiBjb250ZW50Qm91bmRzKSB7IG1fY29udGVudEJvdW5kcyA9IGNvbnRlbnRCb3VuZHM7
IH0KKyAgICB2b2lkIHNldENvbnRlbnRCb3VuZHMoY29uc3QgSW50U2l6ZSYgY29udGVudEJvdW5k
cykgeyBMQVlFUl9DSEFOR0VEX0lGX05PVF9FUVVBTChtX2NvbnRlbnRCb3VuZHMsIGNvbnRlbnRC
b3VuZHMpOyB9CiAKICAgICBjb25zdCBJbnRQb2ludCYgc2Nyb2xsUG9zaXRpb24oKSBjb25zdCB7
IHJldHVybiBtX3Njcm9sbFBvc2l0aW9uOyB9Ci0gICAgdm9pZCBzZXRTY3JvbGxQb3NpdGlvbihj
b25zdCBJbnRQb2ludCYgc2Nyb2xsUG9zaXRpb24pIHsgbV9zY3JvbGxQb3NpdGlvbiA9IHNjcm9s
bFBvc2l0aW9uOyB9CisgICAgdm9pZCBzZXRTY3JvbGxQb3NpdGlvbihjb25zdCBJbnRQb2ludCYg
c2Nyb2xsUG9zaXRpb24pIHsgU1VCVFJFRV9DSEFOR0VEX0lGX05PVF9FUVVBTChtX3Njcm9sbFBv
c2l0aW9uLCBzY3JvbGxQb3NpdGlvbik7IH0KIAogICAgIGNvbnN0IEludFNpemUmIG1heFNjcm9s
bFBvc2l0aW9uKCkgY29uc3Qge3JldHVybiBtX21heFNjcm9sbFBvc2l0aW9uOyB9CiAgICAgdm9p
ZCBzZXRNYXhTY3JvbGxQb3NpdGlvbihjb25zdCBJbnRTaXplJiBtYXhTY3JvbGxQb3NpdGlvbikg
eyBtX21heFNjcm9sbFBvc2l0aW9uID0gbWF4U2Nyb2xsUG9zaXRpb247IH0KIAogICAgIGNvbnN0
IEludFNpemUmIHNjcm9sbERlbHRhKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxEZWx0YTsgfQot
ICAgIHZvaWQgc2V0U2Nyb2xsRGVsdGEoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEpIHsgbV9z
Y3JvbGxEZWx0YSA9IHNjcm9sbERlbHRhOyB9CisgICAgdm9pZCBzZXRTY3JvbGxEZWx0YShjb25z
dCBJbnRTaXplJiBzY3JvbGxEZWx0YSkgeyBTVUJUUkVFX0NIQU5HRURfSUZfTk9UX0VRVUFMKG1f
c2Nyb2xsRGVsdGEsIHNjcm9sbERlbHRhKTsgfQogCiAgICAgdm9pZCBzY3JvbGxCeShjb25zdCBJ
bnRTaXplJiBzY3JvbGwpOwogICAgIGJvb2wgc2Nyb2xsYWJsZSgpIGNvbnN0IHsgcmV0dXJuICFt
YXhTY3JvbGxQb3NpdGlvbigpLmlzWmVybygpOyB9CkBAIC0xNTgsNyArMTc2LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0VmlzaWJsZUxheWVyUmVjdChjb25zdCBJbnRSZWN0JiB2aXNpYmxlTGF5
ZXJSZWN0KSB7IG1fdmlzaWJsZUxheWVyUmVjdCA9IHZpc2libGVMYXllclJlY3Q7IH0KIAogICAg
IGJvb2wgZG91YmxlU2lkZWQoKSBjb25zdCB7IHJldHVybiBtX2RvdWJsZVNpZGVkOyB9Ci0gICAg
dm9pZCBzZXREb3VibGVTaWRlZChib29sIGRvdWJsZVNpZGVkKSB7IG1fZG91YmxlU2lkZWQgPSBk
b3VibGVTaWRlZDsgfQorICAgIHZvaWQgc2V0RG91YmxlU2lkZWQoYm9vbCBkb3VibGVTaWRlZCkg
eyBTVUJUUkVFX0NIQU5HRURfSUZfTk9UX0VRVUFMKG1fZG91YmxlU2lkZWQsIGRvdWJsZVNpZGVk
KTsgfQogCiAgICAgLy8gUmV0dXJucyB0aGUgcmVjdCBjb250YWludGFpbmluZyB0aGlzIGxheWVy
IGluIHRoZSBjdXJyZW50IHZpZXcncyBjb29yZGluYXRlIHN5c3RlbS4KICAgICBjb25zdCBJbnRS
ZWN0IGdldERyYXdSZWN0KCkgY29uc3Q7CkBAIC0xNzQsNiArMTkyLDkgQEAgcHVibGljOgogCiAg
ICAgU3RyaW5nIGxheWVyVHJlZUFzVGV4dCgpIGNvbnN0OwogCisgICAgYm9vbCBsYXllckhhc0No
YW5nZWQoKSBjb25zdCB7IHJldHVybiBtX2xheWVySGFzQ2hhbmdlZDsgfQorICAgIHZvaWQgcmVz
ZXRMYXllckhhc0NoYW5nZWQoKSB7IG1fbGF5ZXJIYXNDaGFuZ2VkID0gZmFsc2U7IH0KKwogcHJv
dGVjdGVkOgogICAgIGV4cGxpY2l0IENDTGF5ZXJJbXBsKGludCk7CiAKQEAgLTE4NSw2ICsyMDYs
MTEgQEAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgVHJlZVN5bmNocm9uaXplcjsKICAgICB2
b2lkIGNsZWFyQ2hpbGRMaXN0KCk7IC8vIFdhcm5pbmc6IFRoaXMgZG9lcyBub3QgcHJlc2VydmUg
dHJlZSBzdHJ1Y3R1cmUgaW52YXJpYW50cyBhbmQgc28gaXMgb25seSBleHBvc2VkIHRvIHRoZSB0
cmVlIHN5bmNocm9uaXplci4KIAorICAgIHZvaWQgc2V0TGF5ZXJIYXNDaGFuZ2VkRm9yU3VidHJl
ZSgpOworCisgICAgLy8gTm90ZSBjYXJlZnVsbHkgdGhpcyBkb2VzIG5vdCBhZmZlY3QgdGhlIGN1
cnJlbnQgbGF5ZXIuCisgICAgdm9pZCBzZXRMYXllckhhc0NoYW5nZWRGb3JEZXNjZW5kYW50cygp
OworCiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiBsYXllclR5cGVBc1N0cmluZygpIGNvbnN0IHsg
cmV0dXJuICJMYXllckNocm9taXVtIjsgfQogCiAgICAgdm9pZCBkdW1wTGF5ZXIoVGV4dFN0cmVh
bSYsIGludCBpbmRlbnQpIGNvbnN0OwpAQCAtMjA3LDYgKzIzMyw5IEBAIHByaXZhdGU6CiAgICAg
Ly8gV2hldGhlciB0aGUgImJhY2siIG9mIHRoaXMgbGF5ZXIgc2hvdWxkIGRyYXcuCiAgICAgYm9v
bCBtX2RvdWJsZVNpZGVkOwogCisgICAgLy8gVHJhY2tzIGlmIGRyYXdpbmctcmVsYXRlZCBwcm9w
ZXJ0aWVzIGhhdmUgY2hhbmdlZCBzaW5jZSBsYXN0IHJlZHJhdy4KKyAgICBib29sIG1fbGF5ZXJI
YXNDaGFuZ2VkOworCiAgICAgSW50UmVjdCBtX3Zpc2libGVMYXllclJlY3Q7CiAgICAgYm9vbCBt
X21hc2tzVG9Cb3VuZHM7CiAgICAgZmxvYXQgbV9vcGFjaXR5OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaSBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2Vi
S2l0Lmd5cGkKaW5kZXggYTQ4OTFmYWIxNzlmMDJhZmQ2NGRmMWExMGEwMTYyNzQxNDZlY2I2Yi4u
MzMzMTM1ZjkzMTUwZmM1NmNjMWE4ODgzMDY0NDYxNDJjM2NjMWU3MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL1dlYktpdC5neXBpCkBAIC01NCw2ICs1NCw3IEBACiAgICAgICAgICd3ZWJraXRfdW5pdHRl
c3RfZmlsZXMnOiBbCiAgICAgICAgICAgICAndGVzdHMvQXJlbmFUZXN0SGVscGVycy5oJywKICAg
ICAgICAgICAgICd0ZXN0cy9Bc3NvY2lhdGVkVVJMTG9hZGVyVGVzdC5jcHAnLAorICAgICAgICAg
ICAgJ3Rlc3RzL0NDTGF5ZXJJbXBsVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0NDTGF5
ZXJTb3J0ZXJUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvQ0NMYXllclRyZWVIb3N0Q29t
bW9uVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0
LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJJ
bXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJJbXBsVGVz
dC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNDU5Y2JjMTkxYzNhZjg4OWNhOTAxZTlhOGFjOTkxZTM5MjFmNmQ1
MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXll
ckltcGxUZXN0LmNwcApAQCAtMCwwICsxLDE3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorCisjaW5jbHVkZSAiY2MvQ0NMYXllckltcGwuaCIKKworI2luY2x1ZGUgImNj
L0NDUHJveHkuaCIKKyNpbmNsdWRlIDxnbW9jay9nbW9jay5oPgorI2luY2x1ZGUgPGd0ZXN0L2d0
ZXN0Lmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgeworCisjZGVm
aW5lIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0NIQU5HRUQoY29kZVRvVGVzdCkgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgcm9vdC0+cmVzZXRMYXllckhhc0NoYW5nZWQoKTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2hpbGQtPnJlc2V0TGF5ZXJI
YXNDaGFuZ2VkKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
Z3JhbmRDaGlsZC0+cmVzZXRMYXllckhhc0NoYW5nZWQoKTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgY29kZVRvVGVzdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRVhQRUNUX1RSVUUocm9vdC0+bGF5
ZXJIYXNDaGFuZ2VkKCkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRVhQ
RUNUX1RSVUUoY2hpbGQtPmxheWVySGFzQ2hhbmdlZCgpKTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgRVhQRUNUX1RSVUUoZ3JhbmRDaGlsZC0+bGF5ZXJIYXNDaGFuZ2VkKCkp
CisKKyNkZWZpbmUgRVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfRElEX05PVF9DSEFOR0UoY29k
ZVRvVGVzdCkgICAgICAgICAgICAgIFwKKyAgICByb290LT5yZXNldExheWVySGFzQ2hhbmdlZCgp
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjaGlsZC0+cmVz
ZXRMYXllckhhc0NoYW5nZWQoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICBncmFuZENoaWxkLT5yZXNldExheWVySGFzQ2hhbmdlZCgpOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICBjb2RlVG9UZXN0OyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBFWFBFQ1RfRkFMU0Uo
cm9vdC0+bGF5ZXJIYXNDaGFuZ2VkKCkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICBFWFBFQ1RfRkFMU0UoY2hpbGQtPmxheWVySGFzQ2hhbmdlZCgpKTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICBFWFBFQ1RfRkFMU0UoZ3JhbmRDaGlsZC0+bGF5ZXJIYXND
aGFuZ2VkKCkpCisKKyNkZWZpbmUgRVhFQ1VURV9BTkRfVkVSSUZZX09OTFlfTEFZRVJfQ0hBTkdF
RChjb2RlVG9UZXN0KSAgICAgICAgICAgICAgIFwKKyAgICByb290LT5yZXNldExheWVySGFzQ2hh
bmdlZCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjaGls
ZC0+cmVzZXRMYXllckhhc0NoYW5nZWQoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICBncmFuZENoaWxkLT5yZXNldExheWVySGFzQ2hhbmdlZCgpOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjb2RlVG9UZXN0OyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBFWFBFQ1Rf
VFJVRShyb290LT5sYXllckhhc0NoYW5nZWQoKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICBFWFBFQ1RfRkFMU0UoY2hpbGQtPmxheWVySGFzQ2hhbmdlZCgpKTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBFWFBFQ1RfRkFMU0UoZ3JhbmRDaGlsZC0+bGF5
ZXJIYXNDaGFuZ2VkKCkpCisKKyNkZWZpbmUgRVhFQ1VURV9BTkRfVkVSSUZZX09OTFlfREVTQ0VO
REFOVFNfQ0hBTkdFRChjb2RlVG9UZXN0KSAgICAgICAgIFwKKyAgICByb290LT5yZXNldExheWVy
SGFzQ2hhbmdlZCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICBjaGlsZC0+cmVzZXRMYXllckhhc0NoYW5nZWQoKTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICBncmFuZENoaWxkLT5yZXNldExheWVySGFzQ2hhbmdlZCgpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjb2RlVG9UZXN0OyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBF
WFBFQ1RfRkFMU0Uocm9vdC0+bGF5ZXJIYXNDaGFuZ2VkKCkpOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICBFWFBFQ1RfVFJVRShjaGlsZC0+bGF5ZXJIYXNDaGFuZ2VkKCkpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBFWFBFQ1RfVFJVRShncmFuZENoaWxk
LT5sYXllckhhc0NoYW5nZWQoKSkKKworVEVTVChDQ0xheWVySW1wbFRlc3QsIHZlcmlmeUxheWVy
Q2hhbmdlc0FyZVRyYWNrZWRQcm9wZXJseSkKK3sKKyAgICAvLworICAgIC8vIFRoaXMgdGVzdCBj
aGVja3MgdGhhdCBsYXllckhhc0NoYW5nZWQoKSBoYXMgdGhlIGNvcnJlY3QgYmVoYXZpb3IuCisg
ICAgLy8KKworICAgIC8vIEZha2UgdGhpcyB0ZXN0IG9uIHRoZSBpbXBsIHRocmVhZC4KKyAgICBD
Q1Byb3h5OjpzZXRJbXBsVGhyZWFkKHRydWUpOworICAgIAorICAgIC8vIENyZWF0ZSBhIHNpbXBs
ZSBDQ0xheWVySW1wbCB0cmVlOgorICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IENDTGF5
ZXJJbXBsOjpjcmVhdGUoMSk7CisgICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBjaGlsZCA9IENDTGF5
ZXJJbXBsOjpjcmVhdGUoMik7CisgICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBncmFuZENoaWxkID0g
Q0NMYXllckltcGw6OmNyZWF0ZSgzKTsKKyAgICByb290LT5hZGRDaGlsZChjaGlsZCk7CisgICAg
Y2hpbGQtPmFkZENoaWxkKGdyYW5kQ2hpbGQpOworCisgICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBk
dW1teU1hc2sgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDQpOworICAgIFJlZlB0cjxDQ0xheWVySW1w
bD4gZHVtbXlSZXBsaWNhID0gQ0NMYXllckltcGw6OmNyZWF0ZSg1KTsKKworICAgIC8vIEFkZGlu
ZyBjaGlsZHJlbiBpcyBhbiBpbnRlcm5hbCBvcGVyYXRpb24gYW5kIHNob3VsZCBub3QgbWFyayBs
YXllcnMgYXMgY2hhbmdlZC4KKyAgICBFWFBFQ1RfRkFMU0Uocm9vdC0+bGF5ZXJIYXNDaGFuZ2Vk
KCkpOworICAgIEVYUEVDVF9GQUxTRShjaGlsZC0+bGF5ZXJIYXNDaGFuZ2VkKCkpOworICAgIEVY
UEVDVF9GQUxTRShncmFuZENoaWxkLT5sYXllckhhc0NoYW5nZWQoKSk7CisKKyAgICBGbG9hdFBv
aW50IGFyYml0cmFyeUZsb2F0UG9pbnQgPSBGbG9hdFBvaW50KDAuMTI1ZiwgMC4yNWYpOworICAg
IGZsb2F0IGFyYml0cmFyeU51bWJlciA9IDAuMzUyZjsKKyAgICBJbnRTaXplIGFyYml0cmFyeUlu
dFNpemUgPSBJbnRTaXplKDExMSwgMjIyKTsKKyAgICBJbnRQb2ludCBhcmJpdHJhcnlJbnRQb2lu
dCA9IEludFBvaW50KDMzMywgNDQ0KTsKKyAgICBJbnRSZWN0IGFyYml0cmFyeUludFJlY3QgPSBJ
bnRSZWN0KGFyYml0cmFyeUludFBvaW50LCBhcmJpdHJhcnlJbnRTaXplKTsKKyAgICBGbG9hdFJl
Y3QgYXJiaXRyYXJ5RmxvYXRSZWN0ID0gRmxvYXRSZWN0KGFyYml0cmFyeUZsb2F0UG9pbnQsIEZs
b2F0U2l6ZSgxLjIzNCwgNS42NzgpKTsKKyAgICBDb2xvciBhcmJpdHJhcnlDb2xvciA9IENvbG9y
KDEwLCAyMCwgMzApOworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGFyYml0cmFyeVRyYW5zZm9y
bTsKKyAgICBhcmJpdHJhcnlUcmFuc2Zvcm0uc2NhbGUzZCgwLjEsIDAuMiwgMC4zKTsKKyAgICAK
KyAgICAvLyBDaGFuZ2luZyB0aGVzZSBwcm9wZXJ0aWVzIGFmZmVjdHMgdGhlIGVudGlyZSBzdWJ0
cmVlIG9mIGxheWVycy4KKyAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9DSEFOR0VEKHJv
b3QtPnNldEFuY2hvclBvaW50KGFyYml0cmFyeUZsb2F0UG9pbnQpKTsKKyAgICBFWEVDVVRFX0FO
RF9WRVJJRllfU1VCVFJFRV9DSEFOR0VEKHJvb3QtPnNldEFuY2hvclBvaW50WihhcmJpdHJhcnlO
dW1iZXIpKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9DSEFOR0VEKHJvb3QtPnNl
dE1hc2tMYXllcihkdW1teU1hc2spKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9D
SEFOR0VEKHJvb3QtPnNldE1hc2tzVG9Cb3VuZHModHJ1ZSkpOworICAgIEVYRUNVVEVfQU5EX1ZF
UklGWV9TVUJUUkVFX0NIQU5HRUQocm9vdC0+c2V0T3BhY2l0eShhcmJpdHJhcnlOdW1iZXIpKTsK
KyAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9DSEFOR0VEKHJvb3QtPnNldFJlcGxpY2FM
YXllcihkdW1teVJlcGxpY2EpKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9DSEFO
R0VEKHJvb3QtPnNldFBvc2l0aW9uKGFyYml0cmFyeUZsb2F0UG9pbnQpKTsKKyAgICBFWEVDVVRF
X0FORF9WRVJJRllfU1VCVFJFRV9DSEFOR0VEKHJvb3QtPnNldFByZXNlcnZlczNEKHRydWUpKTsK
KyAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9DSEFOR0VEKHJvb3QtPnNldFRyYW5zZm9y
bShhcmJpdHJhcnlUcmFuc2Zvcm0pKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9D
SEFOR0VEKHJvb3QtPnNldERvdWJsZVNpZGVkKGZhbHNlKSk7IC8vIGNvbnN0cnVjdG9yIGluaXRp
YWxpemVzIGl0IHRvICJ0cnVlIi4KKyAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9DSEFO
R0VEKHJvb3QtPnNjcm9sbEJ5KGFyYml0cmFyeUludFNpemUpKTsKKyAgICBFWEVDVVRFX0FORF9W
RVJJRllfU1VCVFJFRV9DSEFOR0VEKHJvb3QtPnNldFNjcm9sbERlbHRhKGFyYml0cmFyeUludFNp
emUpKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9DSEFOR0VEKHJvb3QtPnNldFNj
cm9sbFBvc2l0aW9uKGFyYml0cmFyeUludFBvaW50KSk7CisgICAgCisgICAgLy8gQ2hhbmdpbmcg
dGhlc2UgcHJvcGVydGllcyBvbmx5IGFmZmVjdHMgdGhlIGxheWVyIGl0c2VsZi4KKyAgICBFWEVD
VVRFX0FORF9WRVJJRllfT05MWV9MQVlFUl9DSEFOR0VEKHJvb3QtPnNldENvbnRlbnRCb3VuZHMo
YXJiaXRyYXJ5SW50U2l6ZSkpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9PTkxZX0xBWUVSX0NI
QU5HRUQocm9vdC0+c2V0RGVidWdCb3JkZXJDb2xvcihhcmJpdHJhcnlDb2xvcikpOworICAgIEVY
RUNVVEVfQU5EX1ZFUklGWV9PTkxZX0xBWUVSX0NIQU5HRUQocm9vdC0+c2V0RGVidWdCb3JkZXJX
aWR0aChhcmJpdHJhcnlOdW1iZXIpKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllfT05MWV9MQVlF
Ul9DSEFOR0VEKHJvb3QtPnNldERyYXdzQ29udGVudCh0cnVlKSk7CisKKyAgICAvLyBTcGVjaWFs
IGNhc2U6IHN1YmxheWVyIHRyYW5zZm9ybSBjaGFuZ2VzIGFsbCBsYXllcidzIGRlc2NlbmRhbnRz
LCBidXQgbm90IHRoZSBsYXllciBpdHNlbGYuCisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX09OTFlf
REVTQ0VOREFOVFNfQ0hBTkdFRChyb290LT5zZXRTdWJsYXllclRyYW5zZm9ybShhcmJpdHJhcnlU
cmFuc2Zvcm0pKTsKKworICAgIC8vIFNwZWNpYWwgY2FzZTogc2V0Qm91bmRzIGNoYW5nZXMgYmVo
YXZpb3IgZGVwZW5kaW5nIG9uIG1hc2tzVG9Cb3VuZHMuCisgICAgcm9vdC0+c2V0TWFza3NUb0Jv
dW5kcyhmYWxzZSk7CisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX09OTFlfTEFZRVJfQ0hBTkdFRChy
b290LT5zZXRCb3VuZHMoSW50U2l6ZSgxMzUsIDI0NikpKTsKKyAgICByb290LT5zZXRNYXNrc1Rv
Qm91bmRzKHRydWUpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0NIQU5HRUQocm9v
dC0+c2V0Qm91bmRzKGFyYml0cmFyeUludFNpemUpKTsgLy8gc2hvdWxkIGJlIGEgZGlmZmVyZW50
IHNpemUgdGhhbiBwcmV2aW91cyBjYWxsLCB0byBlbnN1cmUgaXQgbWFya3MgdHJlZSBjaGFuZ2Vk
LgorCisgICAgLy8gQWZ0ZXIgc2V0dGluZyBhbGwgdGhlc2UgcHJvcGVydGllcyBhbHJlYWR5LCBz
ZXR0aW5nIHRvIHRoZSBleGFjdCBzYW1lIHZhbHVlcyBhZ2FpbiBzaG91bGQKKyAgICAvLyBub3Qg
Y2F1c2UgYW55IGNoYW5nZS4KKyAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9ESURfTk9U
X0NIQU5HRShyb290LT5zZXRBbmNob3JQb2ludChhcmJpdHJhcnlGbG9hdFBvaW50KSk7CisgICAg
RVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfRElEX05PVF9DSEFOR0Uocm9vdC0+c2V0QW5jaG9y
UG9pbnRaKGFyYml0cmFyeU51bWJlcikpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVF
X0RJRF9OT1RfQ0hBTkdFKHJvb3QtPnNldE1hc2tMYXllcihkdW1teU1hc2spKTsKKyAgICBFWEVD
VVRFX0FORF9WRVJJRllfU1VCVFJFRV9ESURfTk9UX0NIQU5HRShyb290LT5zZXRNYXNrc1RvQm91
bmRzKHRydWUpKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9ESURfTk9UX0NIQU5H
RShyb290LT5zZXRSZXBsaWNhTGF5ZXIoZHVtbXlSZXBsaWNhKSk7CisgICAgRVhFQ1VURV9BTkRf
VkVSSUZZX1NVQlRSRUVfRElEX05PVF9DSEFOR0Uocm9vdC0+c2V0UG9zaXRpb24oYXJiaXRyYXJ5
RmxvYXRQb2ludCkpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0RJRF9OT1RfQ0hB
TkdFKHJvb3QtPnNldFByZXNlcnZlczNEKHRydWUpKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllf
U1VCVFJFRV9ESURfTk9UX0NIQU5HRShyb290LT5zZXRUcmFuc2Zvcm0oYXJiaXRyYXJ5VHJhbnNm
b3JtKSk7CisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfRElEX05PVF9DSEFOR0Uocm9v
dC0+c2V0RG91YmxlU2lkZWQoZmFsc2UpKTsgLy8gY29uc3RydWN0b3IgaW5pdGlhbGl6ZXMgaXQg
dG8gInRydWUiLgorICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0RJRF9OT1RfQ0hBTkdF
KHJvb3QtPnNldFNjcm9sbERlbHRhKGFyYml0cmFyeUludFNpemUpKTsKKyAgICBFWEVDVVRFX0FO
RF9WRVJJRllfU1VCVFJFRV9ESURfTk9UX0NIQU5HRShyb290LT5zZXRTY3JvbGxQb3NpdGlvbihh
cmJpdHJhcnlJbnRQb2ludCkpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0RJRF9O
T1RfQ0hBTkdFKHJvb3QtPnNldENvbnRlbnRCb3VuZHMoYXJiaXRyYXJ5SW50U2l6ZSkpOworICAg
IEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0RJRF9OT1RfQ0hBTkdFKHJvb3QtPnNldE9wYWNp
dHkoYXJiaXRyYXJ5TnVtYmVyKSk7CisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfRElE
X05PVF9DSEFOR0Uocm9vdC0+c2V0RGVidWdCb3JkZXJDb2xvcihhcmJpdHJhcnlDb2xvcikpOwor
ICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0RJRF9OT1RfQ0hBTkdFKHJvb3QtPnNldERl
YnVnQm9yZGVyV2lkdGgoYXJiaXRyYXJ5TnVtYmVyKSk7CisgICAgRVhFQ1VURV9BTkRfVkVSSUZZ
X1NVQlRSRUVfRElEX05PVF9DSEFOR0Uocm9vdC0+c2V0RHJhd3NDb250ZW50KHRydWUpKTsKKyAg
ICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9ESURfTk9UX0NIQU5HRShyb290LT5zZXRTdWJs
YXllclRyYW5zZm9ybShhcmJpdHJhcnlUcmFuc2Zvcm0pKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJ
RllfU1VCVFJFRV9ESURfTk9UX0NIQU5HRShyb290LT5zZXRCb3VuZHMoYXJiaXRyYXJ5SW50U2l6
ZSkpOworCisgICAgLy8gVGhlc2UgcHJvcGVydGllcyBhcmUgaW50ZXJuYWwsIGFuZCBzaG91bGQg
bm90IGJlIGNvbnNpZGVyZWQgImNoYW5nZSIgd2hlbiB0aGV5IGFyZSB1c2VkLgorICAgIEVYRUNV
VEVfQU5EX1ZFUklGWV9TVUJUUkVFX0RJRF9OT1RfQ0hBTkdFKHJvb3QtPnNldElzTm9uQ29tcG9z
aXRlZENvbnRlbnQodHJ1ZSkpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0RJRF9O
T1RfQ0hBTkdFKHJvb3QtPnNldFNjaXNzb3JSZWN0KGFyYml0cmFyeUludFJlY3QpKTsKKyAgICBF
WEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9ESURfTk9UX0NIQU5HRShyb290LT5zZXRVc2VzTGF5
ZXJTY2lzc29yKHRydWUpKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9ESURfTk9U
X0NIQU5HRShyb290LT5zZXREcmF3T3BhY2l0eShhcmJpdHJhcnlOdW1iZXIpKTsKKyAgICBFWEVD
VVRFX0FORF9WRVJJRllfU1VCVFJFRV9ESURfTk9UX0NIQU5HRShyb290LT5zZXRUYXJnZXRSZW5k
ZXJTdXJmYWNlKDApKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9ESURfTk9UX0NI
QU5HRShyb290LT5zZXREcmF3VHJhbnNmb3JtKGFyYml0cmFyeVRyYW5zZm9ybSkpOworICAgIEVY
RUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0RJRF9OT1RfQ0hBTkdFKHJvb3QtPnNldFNjcmVlblNw
YWNlVHJhbnNmb3JtKGFyYml0cmFyeVRyYW5zZm9ybSkpOworICAgIEVYRUNVVEVfQU5EX1ZFUklG
WV9TVUJUUkVFX0RJRF9OT1RfQ0hBTkdFKHJvb3QtPnNldERyYXdhYmxlQ29udGVudFJlY3QoYXJi
aXRyYXJ5SW50UmVjdCkpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0RJRF9OT1Rf
Q0hBTkdFKHJvb3QtPnNldFVwZGF0ZVJlY3QoYXJiaXRyYXJ5RmxvYXRSZWN0KSk7CisgICAgRVhF
Q1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfRElEX05PVF9DSEFOR0Uocm9vdC0+c2V0VmlzaWJsZUxh
eWVyUmVjdChhcmJpdHJhcnlJbnRSZWN0KSk7CisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRS
RUVfRElEX05PVF9DSEFOR0Uocm9vdC0+c2V0TWF4U2Nyb2xsUG9zaXRpb24oYXJiaXRyYXJ5SW50
U2l6ZSkpOworfQorCit9IC8vIG5hbWVzcGFjZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112557</attachid>
            <date>2011-10-26 10:13:10 -0700</date>
            <delta_ts>2011-10-26 13:30:58 -0700</delta_ts>
            <desc>this should fix the linux build error</desc>
            <filename>bug-70442-20111026101309.patch</filename>
            <type>text/plain</type>
            <size>24819</size>
            <attacher name="Shawn Singh">shawnsingh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTgzNDgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0MjFjNzZhNTY2ZmY3MjQz
ZjE5MzEyOGYyOTU5Njc1OGZjMDkyYTE1Li42MmMyMGZmNTBkMTBmODVhODE2ZWYwMDA4MDYxZDli
OWY5NmE2OTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDYgQEAKKzIwMTEtMTAtMjUgIFNoYXdu
IFNpbmdoICA8c2hhd25zaW5naEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBU
cmFjayB3aGVuIENDTGF5ZXJJbXBsIHByb3BlcnRpZXMgaGF2ZSBjaGFuZ2VkLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA0NDIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBkZXRlcm1pbmUgYSBnb29k
IHNjaXNzb3IgcmVjdCwgd2UgbXVzdCBkZXRlcm1pbmUgd2hhdAorICAgICAgICB3aWxsIGNoYW5n
ZSBvbiB0aGUgc2NyZWVuIG9uIHRoZSBuZXh0IHJlZHJhdy4gIFRoaXMgcGF0Y2gKKyAgICAgICAg
dHJhY2tzIHRoZSBuZWNlc3NhcnkgaW5mb3JtYXRpb24gb24gQ0NMYXllckltcGwgYW5kIG1hcmtz
CisgICAgICAgIGEgZmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgdGhpcyBsYXllciB3aWxsICJkYW1h
Z2UiIHRoZSBzY3JlZW4uCisgICAgICAgIFRoZSBvdGhlciBwb3J0aW9uIG9mICJjaGFuZ2UiLCB0
aGUgdXBkYXRlUmVjdCwgd2FzIGFscmVhZHkKKyAgICAgICAgbGFuZGVkIGluIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTQ0MS4KKworICAgICAgICBOZXcgdW5pdCB0
ZXN0IGFkZGVkIHRvIENDTGF5ZXJJbXBsVGVzdCB0byB0ZXN0IHRoaXMgcGF0Y2guCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6Q0NMYXllckltcGwpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NMYXllckltcGw6OnNjcm9sbEJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBs
OjpzZXRMYXllckhhc0NoYW5nZWRGb3JTdWJ0cmVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5
ZXJJbXBsOjpzZXRMYXllckhhc0NoYW5nZWRGb3JEZXNjZW5kYW50cyk6CisgICAgICAgIChXZWJD
b3JlOjpDQ0xheWVySW1wbDo6c2V0Qm91bmRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllcklt
cGw6OnNldE1hc2tMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6c2V0UmVw
bGljYUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpzZXREcmF3c0NvbnRl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OnNldEFuY2hvclBvaW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpzZXRBbmNob3JQb2ludFopOgorICAgICAgICAo
V2ViQ29yZTo6Q0NMYXllckltcGw6OnNldE1hc2tzVG9Cb3VuZHMpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NMYXllckltcGw6OnNldE9wYWNpdHkpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllcklt
cGw6OnNldFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpzZXRQcmVz
ZXJ2ZXMzRCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6c2V0U3VibGF5ZXJUcmFu
c2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OnNldFRyYW5zZm9ybSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6c2V0RGVidWdCb3JkZXJDb2xvcik6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6c2V0RGVidWdCb3JkZXJXaWR0aCk6CisgICAgICAg
IChXZWJDb3JlOjpDQ0xheWVySW1wbDo6c2V0Q29udGVudEJvdW5kcyk6CisgICAgICAgIChXZWJD
b3JlOjpDQ0xheWVySW1wbDo6c2V0U2Nyb2xsUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
Q0NMYXllckltcGw6OnNldFNjcm9sbERlbHRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJ
bXBsOjpzZXREb3VibGVTaWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6bGF5
ZXJIYXNDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpyZXNldExheWVy
SGFzQ2hhbmdlZCk6CisKIDIwMTEtMTAtMjUgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogcmVkZXNpZ24gd29ya2VycyBzaWRl
YmFyIHBhbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMjY5OWM1ODk5ZTc5OWFiNjQx
M2MyMDZhMzg3MDZlYmFmMWZiMDg3Zi4uYzE3MGEwYTc5NDJhNjJjMDcyNmQ5MDA2ODI2ODkxMDRi
NDljODBhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAx
MS0xMC0yNSAgU2hhd24gU2luZ2ggIDxzaGF3bnNpbmdoQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBbY2hyb21pdW1dIFRyYWNrIHdoZW4gQ0NMYXllckltcGwgcHJvcGVydGllcyBoYXZlIGNoYW5n
ZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDQ0
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2Vi
S2l0Lmd5cGk6CisgICAgICAgICogdGVzdHMvQ0NMYXllckltcGxUZXN0LmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpURVNUKToKKwogMjAxMS0xMC0yNSAgWXVyeSBTZW1pa2hhdHNreSAg
PHl1cnlzQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiByZWRlc2lnbiB3
b3JrZXJzIHNpZGViYXIgcGFuZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwCmluZGV4IDJiMDVkOWZm
MGQxN2UwMmJiNGVlN2Q4M2JiMGYzYjI0ZmNiNzVjZjMuLjFhOGE0YTU5MDgxMGUwYjM1ZjFlMGI2
MWRkMjJmZDQ5ODk2MGEwNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKQEAgLTQzLDYgKzQz
LDcgQEAgQ0NMYXllckltcGw6OkNDTGF5ZXJJbXBsKGludCBpZCkKICAgICAsIG1fYW5jaG9yUG9p
bnQoMC41LCAwLjUpCiAgICAgLCBtX2FuY2hvclBvaW50WigwKQogICAgICwgbV9kb3VibGVTaWRl
ZCh0cnVlKQorICAgICwgbV9sYXllckhhc0NoYW5nZWQoZmFsc2UpCiAgICAgLCBtX21hc2tzVG9C
b3VuZHMoZmFsc2UpCiAgICAgLCBtX29wYWNpdHkoMS4wKQogICAgICwgbV9wcmVzZXJ2ZXMzRChm
YWxzZSkKQEAgLTEyNSw2ICsxMjYsNyBAQCB2b2lkIENDTGF5ZXJJbXBsOjpzY3JvbGxCeShjb25z
dCBJbnRTaXplJiBzY3JvbGwpCiAgICAgSW50U2l6ZSBtYXhEZWx0YSA9IG1fbWF4U2Nyb2xsUG9z
aXRpb24gLSB0b1NpemUobV9zY3JvbGxQb3NpdGlvbik7CiAgICAgLy8gQ2xhbXAgbmV3RGVsdGEg
c28gdGhhdCBwb3NpdGlvbiArIGRlbHRhIHN0YXlzIHdpdGhpbiBzY3JvbGwgYm91bmRzLgogICAg
IG1fc2Nyb2xsRGVsdGEgPSBuZXdEZWx0YS5leHBhbmRlZFRvKG1pbkRlbHRhKS5zaHJ1bmtUbyht
YXhEZWx0YSk7CisgICAgc2V0TGF5ZXJIYXNDaGFuZ2VkRm9yU3VidHJlZSgpOwogfQogCiB2b2lk
IENDTGF5ZXJJbXBsOjpjbGVhbnVwUmVzb3VyY2VzKCkKQEAgLTIyMiw2ICsyMjQsMzEgQEAgdm9p
ZCBDQ0xheWVySW1wbDo6ZHVtcExheWVyKFRleHRTdHJlYW0mIHRzLCBpbnQgaW5kZW50KSBjb25z
dAogICAgICAgICBtX2NoaWxkcmVuW2ldLT5kdW1wTGF5ZXIodHMsIGluZGVudCsxKTsKIH0KIAor
dm9pZCBDQ0xheWVySW1wbDo6c2V0TGF5ZXJIYXNDaGFuZ2VkRm9yU3VidHJlZSgpCit7CisgICAg
bV9sYXllckhhc0NoYW5nZWQgPSB0cnVlOworICAgIHNldExheWVySGFzQ2hhbmdlZEZvckRlc2Nl
bmRhbnRzKCk7Cit9CisKK3ZvaWQgQ0NMYXllckltcGw6OnNldExheWVySGFzQ2hhbmdlZEZvckRl
c2NlbmRhbnRzKCkKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fY2hpbGRyZW4uc2l6
ZSgpOyArK2kpCisgICAgICAgIG1fY2hpbGRyZW5baV0tPnNldExheWVySGFzQ2hhbmdlZEZvclN1
YnRyZWUoKTsKK30KKwordm9pZCBDQ0xheWVySW1wbDo6c2V0Qm91bmRzKGNvbnN0IEludFNpemUm
IGJvdW5kcykKK3sKKyAgICBpZiAobV9ib3VuZHMgIT0gYm91bmRzKSB7CisgICAgICAgIG1fYm91
bmRzID0gYm91bmRzOworCisgICAgICAgIC8vIG1hc2tzVG9Cb3VuZHMgbWVhbnMgdGhhdCB0aGVz
ZSBib3VuZHMgYWZmZWN0IHRoZSBlbnRpcmUgc3VidHJlZSwgbm90IGp1c3QgdGhpcyBsYXllci4K
KyAgICAgICAgaWYgKG1hc2tzVG9Cb3VuZHMoKSkKKyAgICAgICAgICAgIHNldExheWVySGFzQ2hh
bmdlZEZvclN1YnRyZWUoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9sYXllckhhc0No
YW5nZWQgPSB0cnVlOworICAgIH0KK30KKwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCmluZGV4
IDM5YzZmOGUxMGJhMGY4NzdiOTJhZmExMzBmNDExODQzNGZhNWVjYTQuLjMwMzM0MDAyMjI5ZWZj
MDA1NTQyYzFkNWE0ODE3YmE5MjIyZDgzYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaApAQCAtNDMs
NiArNDMsMjQgQEAgY2xhc3MgQ0NMYXllclNvcnRlcjsKIGNsYXNzIExheWVyQ2hyb21pdW07CiBj
bGFzcyBMYXllclJlbmRlcmVyQ2hyb21pdW07CiAKKyNkZWZpbmUgTEFZRVJfQ0hBTkdFRF9JRl9O
T1RfRVFVQUwobWVtYmVyLCBuZXd2YWx1ZSkgICAgICAgXAorICAgIGlmICgobWVtYmVyKSAhPSAo
bmV3dmFsdWUpKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIChtZW1iZXIp
ID0gKG5ld3ZhbHVlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgbV9s
YXllckhhc0NoYW5nZWQgPSB0cnVlOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0K
KworI2RlZmluZSBTVUJUUkVFX0NIQU5HRURfSUZfTk9UX0VRVUFMKG1lbWJlciwgbmV3dmFsdWUp
ICAgICAgXAorICAgIGlmICgobWVtYmVyKSAhPSAobmV3dmFsdWUpKSB7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICAobWVtYmVyKSA9IChuZXd2YWx1ZSk7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICBzZXRMYXllckhhc0NoYW5nZWRGb3JTdWJ0cmVl
KCk7ICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0KKworI2RlZmluZSBERVNDRU5EQU5UU19D
SEFOR0VEX0lGX05PVF9FUVVBTChtZW1iZXIsIG5ld3ZhbHVlKSAgICAgICAgICBcCisgICAgaWYg
KChtZW1iZXIpICE9IChuZXd2YWx1ZSkpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgKG1lbWJlcikgPSAobmV3dmFsdWUpOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICBzZXRMYXllckhhc0NoYW5nZWRGb3JEZXNjZW5k
YW50cygpOyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfQorCiBjbGFzcyBDQ0xheWVy
SW1wbCA6IHB1YmxpYyBSZWZDb3VudGVkPENDTGF5ZXJJbXBsPiB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8Q0NMYXllckltcGw+IGNyZWF0ZShpbnQgaWQpCkBAIC01OCwxMCArNzYs
MTAgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlRnJvbVBhcmVudCgpOwogICAgIHZvaWQgcmVt
b3ZlQWxsQ2hpbGRyZW4oKTsKIAotICAgIHZvaWQgc2V0TWFza0xheWVyKFBhc3NSZWZQdHI8Q0NM
YXllckltcGw+IG1hc2tMYXllcikgeyBtX21hc2tMYXllciA9IG1hc2tMYXllcjsgfQorICAgIHZv
aWQgc2V0TWFza0xheWVyKFBhc3NSZWZQdHI8Q0NMYXllckltcGw+IG1hc2tMYXllcikgeyBTVUJU
UkVFX0NIQU5HRURfSUZfTk9UX0VRVUFMKG1fbWFza0xheWVyLCBtYXNrTGF5ZXIpOyB9CiAgICAg
Q0NMYXllckltcGwqIG1hc2tMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fbWFza0xheWVyLmdldCgp
OyB9CiAKLSAgICB2b2lkIHNldFJlcGxpY2FMYXllcihQYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBy
ZXBsaWNhTGF5ZXIpIHsgbV9yZXBsaWNhTGF5ZXIgPSByZXBsaWNhTGF5ZXI7IH0KKyAgICB2b2lk
IHNldFJlcGxpY2FMYXllcihQYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiByZXBsaWNhTGF5ZXIpIHsg
U1VCVFJFRV9DSEFOR0VEX0lGX05PVF9FUVVBTChtX3JlcGxpY2FMYXllciwgcmVwbGljYUxheWVy
KTsgfQogICAgIENDTGF5ZXJJbXBsKiByZXBsaWNhTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3Jl
cGxpY2FMYXllci5nZXQoKTsgfQogCiAgICAgaW50IGlkKCkgY29uc3QgeyByZXR1cm4gbV9sYXll
cklkOyB9CkBAIC03NSw3ICs5Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYmluZENv
bnRlbnRzVGV4dHVyZShMYXllclJlbmRlcmVyQ2hyb21pdW0qKTsKIAogICAgIC8vIFJldHVybnMg
dHJ1ZSBpZiB0aGlzIGxheWVyIGhhcyBjb250ZW50IHRvIGRyYXcuCi0gICAgdm9pZCBzZXREcmF3
c0NvbnRlbnQoYm9vbCBkcmF3c0NvbnRlbnQpIHsgbV9kcmF3c0NvbnRlbnQgPSBkcmF3c0NvbnRl
bnQ7IH0KKyAgICB2b2lkIHNldERyYXdzQ29udGVudChib29sIGRyYXdzQ29udGVudCkgeyBMQVlF
Ul9DSEFOR0VEX0lGX05PVF9FUVVBTChtX2RyYXdzQ29udGVudCwgZHJhd3NDb250ZW50KTsgfQog
ICAgIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9kcmF3c0NvbnRlbnQ7IH0K
IAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBhbnkgb2YgdGhlIGxheWVyJ3MgZGVzY2VuZGFudHMg
aGFzIGNvbnRlbnQgdG8gZHJhdy4KQEAgLTgzLDIyICsxMDEsMjIgQEAgcHVibGljOgogCiAgICAg
dm9pZCBjbGVhbnVwUmVzb3VyY2VzKCk7CiAKLSAgICB2b2lkIHNldEFuY2hvclBvaW50KGNvbnN0
IEZsb2F0UG9pbnQmIGFuY2hvclBvaW50KSB7IG1fYW5jaG9yUG9pbnQgPSBhbmNob3JQb2ludDsg
fQorICAgIHZvaWQgc2V0QW5jaG9yUG9pbnQoY29uc3QgRmxvYXRQb2ludCYgYW5jaG9yUG9pbnQp
IHsgU1VCVFJFRV9DSEFOR0VEX0lGX05PVF9FUVVBTChtX2FuY2hvclBvaW50LCBhbmNob3JQb2lu
dCk7IH0KICAgICBjb25zdCBGbG9hdFBvaW50JiBhbmNob3JQb2ludCgpIGNvbnN0IHsgcmV0dXJu
IG1fYW5jaG9yUG9pbnQ7IH0KIAotICAgIHZvaWQgc2V0QW5jaG9yUG9pbnRaKGZsb2F0IGFuY2hv
clBvaW50WikgeyBtX2FuY2hvclBvaW50WiA9IGFuY2hvclBvaW50WjsgfQorICAgIHZvaWQgc2V0
QW5jaG9yUG9pbnRaKGZsb2F0IGFuY2hvclBvaW50WikgeyBTVUJUUkVFX0NIQU5HRURfSUZfTk9U
X0VRVUFMKG1fYW5jaG9yUG9pbnRaLCBhbmNob3JQb2ludFopOyB9CiAgICAgZmxvYXQgYW5jaG9y
UG9pbnRaKCkgY29uc3QgeyByZXR1cm4gbV9hbmNob3JQb2ludFo7IH0KIAotICAgIHZvaWQgc2V0
TWFza3NUb0JvdW5kcyhib29sIG1hc2tzVG9Cb3VuZHMpIHsgbV9tYXNrc1RvQm91bmRzID0gbWFz
a3NUb0JvdW5kczsgfQorICAgIHZvaWQgc2V0TWFza3NUb0JvdW5kcyhib29sIG1hc2tzVG9Cb3Vu
ZHMpIHsgU1VCVFJFRV9DSEFOR0VEX0lGX05PVF9FUVVBTChtX21hc2tzVG9Cb3VuZHMsIG1hc2tz
VG9Cb3VuZHMpOyB9CiAgICAgYm9vbCBtYXNrc1RvQm91bmRzKCkgY29uc3QgeyByZXR1cm4gbV9t
YXNrc1RvQm91bmRzOyB9CiAKLSAgICB2b2lkIHNldE9wYWNpdHkoZmxvYXQgb3BhY2l0eSkgeyBt
X29wYWNpdHkgPSBvcGFjaXR5OyB9CisgICAgdm9pZCBzZXRPcGFjaXR5KGZsb2F0IG9wYWNpdHkp
IHsgU1VCVFJFRV9DSEFOR0VEX0lGX05PVF9FUVVBTChtX29wYWNpdHksIG9wYWNpdHkpOyB9CiAg
ICAgZmxvYXQgb3BhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1fb3BhY2l0eTsgfQogCi0gICAgdm9p
ZCBzZXRQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbikgeyBtX3Bvc2l0aW9uID0g
cG9zaXRpb247IH0KKyAgICB2b2lkIHNldFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0
aW9uKSB7IFNVQlRSRUVfQ0hBTkdFRF9JRl9OT1RfRVFVQUwobV9wb3NpdGlvbiwgcG9zaXRpb24p
OyB9CiAgICAgY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Bv
c2l0aW9uOyB9CiAKLSAgICB2b2lkIHNldFByZXNlcnZlczNEKGJvb2wgcHJlc2VydmVzM0QpIHsg
bV9wcmVzZXJ2ZXMzRCA9IHByZXNlcnZlczNEOyB9CisgICAgdm9pZCBzZXRQcmVzZXJ2ZXMzRChi
b29sIHByZXNlcnZlczNEKSB7IFNVQlRSRUVfQ0hBTkdFRF9JRl9OT1RfRVFVQUwobV9wcmVzZXJ2
ZXMzRCwgcHJlc2VydmVzM0QpOyB9CiAgICAgYm9vbCBwcmVzZXJ2ZXMzRCgpIGNvbnN0IHsgcmV0
dXJuIG1fcHJlc2VydmVzM0Q7IH0KIAogICAgIHZvaWQgc2V0VXNlc0xheWVyU2Npc3Nvcihib29s
IHVzZXNMYXllclNjaXNzb3IpIHsgbV91c2VzTGF5ZXJTY2lzc29yID0gdXNlc0xheWVyU2Npc3Nv
cjsgfQpAQCAtMTA3LDE5ICsxMjUsMTkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0SXNOb25Db21w
b3NpdGVkQ29udGVudChib29sIGlzTm9uQ29tcG9zaXRlZENvbnRlbnQpIHsgbV9pc05vbkNvbXBv
c2l0ZWRDb250ZW50ID0gaXNOb25Db21wb3NpdGVkQ29udGVudDsgfQogICAgIGJvb2wgaXNOb25D
b21wb3NpdGVkQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1faXNOb25Db21wb3NpdGVkQ29udGVu
dDsgfQogCi0gICAgdm9pZCBzZXRTdWJsYXllclRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgc3VibGF5ZXJUcmFuc2Zvcm0pIHsgbV9zdWJsYXllclRyYW5zZm9ybSA9IHN1Ymxh
eWVyVHJhbnNmb3JtOyB9CisgICAgdm9pZCBzZXRTdWJsYXllclRyYW5zZm9ybShjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgc3VibGF5ZXJUcmFuc2Zvcm0pIHsgREVTQ0VOREFOVFNfQ0hBTkdF
RF9JRl9OT1RfRVFVQUwobV9zdWJsYXllclRyYW5zZm9ybSwgc3VibGF5ZXJUcmFuc2Zvcm0pOyB9
CiAgICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHN1YmxheWVyVHJhbnNmb3JtKCkgY29u
c3QgeyByZXR1cm4gbV9zdWJsYXllclRyYW5zZm9ybTsgfQogCi0gICAgdm9pZCBzZXRUcmFuc2Zv
cm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSkgeyBtX3RyYW5zZm9ybSA9
IHRyYW5zZm9ybTsgfQorICAgIHZvaWQgc2V0VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiB0cmFuc2Zvcm0pIHsgU1VCVFJFRV9DSEFOR0VEX0lGX05PVF9FUVVBTChtX3RyYW5z
Zm9ybSwgdHJhbnNmb3JtKTsgfQogICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFu
c2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX3RyYW5zZm9ybTsgfQogCiAgICAgdm9pZCBzZXROYW1l
KGNvbnN0IFN0cmluZyYgbmFtZSkgeyBtX25hbWUgPSBuYW1lOyB9CiAgICAgY29uc3QgU3RyaW5n
JiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CiAKICAgICAvLyBEZWJ1ZyBsYXllciBi
b3JkZXIgLSB2aXN1YWwgZWZmZWN0IG9ubHksIGRvIG5vdCBjaGFuZ2UgZ2VvbWV0cnkvY2xpcHBp
bmcvZXRjLgotICAgIHZvaWQgc2V0RGVidWdCb3JkZXJDb2xvcihDb2xvciBjKSB7IG1fZGVidWdC
b3JkZXJDb2xvciA9IGM7IH0KKyAgICB2b2lkIHNldERlYnVnQm9yZGVyQ29sb3IoQ29sb3IgYykg
eyBMQVlFUl9DSEFOR0VEX0lGX05PVF9FUVVBTChtX2RlYnVnQm9yZGVyQ29sb3IsIGMpOyB9CiAg
ICAgQ29sb3IgZGVidWdCb3JkZXJDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdCb3JkZXJD
b2xvcjsgfQotICAgIHZvaWQgc2V0RGVidWdCb3JkZXJXaWR0aChmbG9hdCB3aWR0aCkgeyBtX2Rl
YnVnQm9yZGVyV2lkdGggPSB3aWR0aDsgfQorICAgIHZvaWQgc2V0RGVidWdCb3JkZXJXaWR0aChm
bG9hdCB3aWR0aCkgeyBMQVlFUl9DSEFOR0VEX0lGX05PVF9FUVVBTChtX2RlYnVnQm9yZGVyV2lk
dGgsIHdpZHRoKTsgfQogICAgIGZsb2F0IGRlYnVnQm9yZGVyV2lkdGgoKSBjb25zdCB7IHJldHVy
biBtX2RlYnVnQm9yZGVyV2lkdGg7IH0KIAogICAgIHZvaWQgZHJhd0RlYnVnQm9yZGVyKExheWVy
UmVuZGVyZXJDaHJvbWl1bSopOwpAQCAtMTM3LDE5ICsxNTUsMTkgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0VGFyZ2V0UmVuZGVyU3VyZmFjZShDQ1JlbmRlclN1cmZhY2UqIHN1cmZhY2UpIHsgbV90
YXJnZXRSZW5kZXJTdXJmYWNlID0gc3VyZmFjZTsgfQogCiAgICAgY29uc3QgSW50U2l6ZSYgYm91
bmRzKCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZHM7IH0KLSAgICB2b2lkIHNldEJvdW5kcyhjb25z
dCBJbnRTaXplJiBib3VuZHMpIHsgbV9ib3VuZHMgPSBib3VuZHM7IH0KKyAgICB2b2lkIHNldEJv
dW5kcyhjb25zdCBJbnRTaXplJik7CiAKICAgICBjb25zdCBJbnRTaXplJiBjb250ZW50Qm91bmRz
KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50Qm91bmRzOyB9Ci0gICAgdm9pZCBzZXRDb250ZW50
Qm91bmRzKGNvbnN0IEludFNpemUmIGNvbnRlbnRCb3VuZHMpIHsgbV9jb250ZW50Qm91bmRzID0g
Y29udGVudEJvdW5kczsgfQorICAgIHZvaWQgc2V0Q29udGVudEJvdW5kcyhjb25zdCBJbnRTaXpl
JiBjb250ZW50Qm91bmRzKSB7IExBWUVSX0NIQU5HRURfSUZfTk9UX0VRVUFMKG1fY29udGVudEJv
dW5kcywgY29udGVudEJvdW5kcyk7IH0KIAogICAgIGNvbnN0IEludFBvaW50JiBzY3JvbGxQb3Np
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsUG9zaXRpb247IH0KLSAgICB2b2lkIHNldFNj
cm9sbFBvc2l0aW9uKGNvbnN0IEludFBvaW50JiBzY3JvbGxQb3NpdGlvbikgeyBtX3Njcm9sbFBv
c2l0aW9uID0gc2Nyb2xsUG9zaXRpb247IH0KKyAgICB2b2lkIHNldFNjcm9sbFBvc2l0aW9uKGNv
bnN0IEludFBvaW50JiBzY3JvbGxQb3NpdGlvbikgeyBTVUJUUkVFX0NIQU5HRURfSUZfTk9UX0VR
VUFMKG1fc2Nyb2xsUG9zaXRpb24sIHNjcm9sbFBvc2l0aW9uKTsgfQogCiAgICAgY29uc3QgSW50
U2l6ZSYgbWF4U2Nyb2xsUG9zaXRpb24oKSBjb25zdCB7cmV0dXJuIG1fbWF4U2Nyb2xsUG9zaXRp
b247IH0KICAgICB2b2lkIHNldE1heFNjcm9sbFBvc2l0aW9uKGNvbnN0IEludFNpemUmIG1heFNj
cm9sbFBvc2l0aW9uKSB7IG1fbWF4U2Nyb2xsUG9zaXRpb24gPSBtYXhTY3JvbGxQb3NpdGlvbjsg
fQogCiAgICAgY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEoKSBjb25zdCB7IHJldHVybiBtX3Nj
cm9sbERlbHRhOyB9Ci0gICAgdm9pZCBzZXRTY3JvbGxEZWx0YShjb25zdCBJbnRTaXplJiBzY3Jv
bGxEZWx0YSkgeyBtX3Njcm9sbERlbHRhID0gc2Nyb2xsRGVsdGE7IH0KKyAgICB2b2lkIHNldFNj
cm9sbERlbHRhKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhKSB7IFNVQlRSRUVfQ0hBTkdFRF9J
Rl9OT1RfRVFVQUwobV9zY3JvbGxEZWx0YSwgc2Nyb2xsRGVsdGEpOyB9CiAKICAgICB2b2lkIHNj
cm9sbEJ5KGNvbnN0IEludFNpemUmIHNjcm9sbCk7CiAgICAgYm9vbCBzY3JvbGxhYmxlKCkgY29u
c3QgeyByZXR1cm4gIW1heFNjcm9sbFBvc2l0aW9uKCkuaXNaZXJvKCk7IH0KQEAgLTE1OCw3ICsx
NzYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRWaXNpYmxlTGF5ZXJSZWN0KGNvbnN0IEludFJl
Y3QmIHZpc2libGVMYXllclJlY3QpIHsgbV92aXNpYmxlTGF5ZXJSZWN0ID0gdmlzaWJsZUxheWVy
UmVjdDsgfQogCiAgICAgYm9vbCBkb3VibGVTaWRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZG91Ymxl
U2lkZWQ7IH0KLSAgICB2b2lkIHNldERvdWJsZVNpZGVkKGJvb2wgZG91YmxlU2lkZWQpIHsgbV9k
b3VibGVTaWRlZCA9IGRvdWJsZVNpZGVkOyB9CisgICAgdm9pZCBzZXREb3VibGVTaWRlZChib29s
IGRvdWJsZVNpZGVkKSB7IFNVQlRSRUVfQ0hBTkdFRF9JRl9OT1RfRVFVQUwobV9kb3VibGVTaWRl
ZCwgZG91YmxlU2lkZWQpOyB9CiAKICAgICAvLyBSZXR1cm5zIHRoZSByZWN0IGNvbnRhaW50YWlu
aW5nIHRoaXMgbGF5ZXIgaW4gdGhlIGN1cnJlbnQgdmlldydzIGNvb3JkaW5hdGUgc3lzdGVtLgog
ICAgIGNvbnN0IEludFJlY3QgZ2V0RHJhd1JlY3QoKSBjb25zdDsKQEAgLTE3NCw2ICsxOTIsOSBA
QCBwdWJsaWM6CiAKICAgICBTdHJpbmcgbGF5ZXJUcmVlQXNUZXh0KCkgY29uc3Q7CiAKKyAgICBi
b29sIGxheWVySGFzQ2hhbmdlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXJIYXNDaGFuZ2VkOyB9
CisgICAgdm9pZCByZXNldExheWVySGFzQ2hhbmdlZCgpIHsgbV9sYXllckhhc0NoYW5nZWQgPSBm
YWxzZTsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgQ0NMYXllckltcGwoaW50KTsKIApA
QCAtMTg1LDYgKzIwNiwxMSBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBUcmVlU3luY2hy
b25pemVyOwogICAgIHZvaWQgY2xlYXJDaGlsZExpc3QoKTsgLy8gV2FybmluZzogVGhpcyBkb2Vz
IG5vdCBwcmVzZXJ2ZSB0cmVlIHN0cnVjdHVyZSBpbnZhcmlhbnRzIGFuZCBzbyBpcyBvbmx5IGV4
cG9zZWQgdG8gdGhlIHRyZWUgc3luY2hyb25pemVyLgogCisgICAgdm9pZCBzZXRMYXllckhhc0No
YW5nZWRGb3JTdWJ0cmVlKCk7CisKKyAgICAvLyBOb3RlIGNhcmVmdWxseSB0aGlzIGRvZXMgbm90
IGFmZmVjdCB0aGUgY3VycmVudCBsYXllci4KKyAgICB2b2lkIHNldExheWVySGFzQ2hhbmdlZEZv
ckRlc2NlbmRhbnRzKCk7CisKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIGxheWVyVHlwZUFzU3Ry
aW5nKCkgY29uc3QgeyByZXR1cm4gIkxheWVyQ2hyb21pdW0iOyB9CiAKICAgICB2b2lkIGR1bXBM
YXllcihUZXh0U3RyZWFtJiwgaW50IGluZGVudCkgY29uc3Q7CkBAIC0yMDcsNiArMjMzLDkgQEAg
cHJpdmF0ZToKICAgICAvLyBXaGV0aGVyIHRoZSAiYmFjayIgb2YgdGhpcyBsYXllciBzaG91bGQg
ZHJhdy4KICAgICBib29sIG1fZG91YmxlU2lkZWQ7CiAKKyAgICAvLyBUcmFja3MgaWYgZHJhd2lu
Zy1yZWxhdGVkIHByb3BlcnRpZXMgaGF2ZSBjaGFuZ2VkIHNpbmNlIGxhc3QgcmVkcmF3LgorICAg
IGJvb2wgbV9sYXllckhhc0NoYW5nZWQ7CisKICAgICBJbnRSZWN0IG1fdmlzaWJsZUxheWVyUmVj
dDsKICAgICBib29sIG1fbWFza3NUb0JvdW5kczsKICAgICBmbG9hdCBtX29wYWNpdHk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQppbmRleCBhNDg5MWZhYjE3OWYwMmFmZDY0ZGYxYTEwYTAx
NjI3NDE0NmVjYjZiLi4zMzMxMzVmOTMxNTBmYzU2Y2MxYTg4ODMwNjQ0NjE0MmMzY2MxZTcwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKQEAgLTU0LDYgKzU0LDcgQEAKICAgICAgICAg
J3dlYmtpdF91bml0dGVzdF9maWxlcyc6IFsKICAgICAgICAgICAgICd0ZXN0cy9BcmVuYVRlc3RI
ZWxwZXJzLmgnLAogICAgICAgICAgICAgJ3Rlc3RzL0Fzc29jaWF0ZWRVUkxMb2FkZXJUZXN0LmNw
cCcsCisgICAgICAgICAgICAndGVzdHMvQ0NMYXllckltcGxUZXN0LmNwcCcsCiAgICAgICAgICAg
ICAndGVzdHMvQ0NMYXllclNvcnRlclRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9DQ0xh
eWVyVHJlZUhvc3RDb21tb25UZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvQ0NMYXllclRy
ZWVIb3N0SW1wbFRlc3QuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NMYXllckltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NMYXllckltcGxUZXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZTkzNTZkMWE2OTEyYmE2ZmFmMDgzYzgy
ZDY4ODJhMTk5Y2QxZjU1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ0xheWVySW1wbFRlc3QuY3BwCkBAIC0wLDAgKzEsMTcyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJjYy9DQ0xheWVySW1wbC5oIgor
CisjaW5jbHVkZSAiY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIgorI2luY2x1ZGUgPGdtb2NrL2dt
b2NrLmg+CisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CisKK25hbWVzcGFjZSB7CisKKyNkZWZpbmUgRVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVf
Q0hBTkdFRChjb2RlVG9UZXN0KSAgICAgICAgICAgICAgICAgIFwKKyAgICByb290LT5yZXNldExh
eWVySGFzQ2hhbmdlZCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICBjaGlsZC0+cmVzZXRMYXllckhhc0NoYW5nZWQoKTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICBncmFuZENoaWxkLT5yZXNldExheWVySGFzQ2hhbmdlZCgp
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjb2RlVG9UZXN0OyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICBFWFBFQ1RfVFJVRShyb290LT5sYXllckhhc0NoYW5nZWQoKSk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICBFWFBFQ1RfVFJVRShjaGlsZC0+bGF5ZXJIYXNDaGFuZ2VkKCkp
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBFWFBFQ1RfVFJVRShncmFuZENo
aWxkLT5sYXllckhhc0NoYW5nZWQoKSkKKworI2RlZmluZSBFWEVDVVRFX0FORF9WRVJJRllfU1VC
VFJFRV9ESURfTk9UX0NIQU5HRShjb2RlVG9UZXN0KSAgICAgICAgICAgXAorICAgIHJvb3QtPnJl
c2V0TGF5ZXJIYXNDaGFuZ2VkKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgIGNoaWxkLT5yZXNldExheWVySGFzQ2hhbmdlZCgpOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgIGdyYW5kQ2hpbGQtPnJlc2V0TGF5ZXJIYXNDaGFu
Z2VkKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNvZGVUb1Rlc3Q7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgIEVYUEVDVF9GQUxTRShyb290LT5sYXllckhhc0NoYW5nZWQoKSk7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgIEVYUEVDVF9GQUxTRShjaGlsZC0+bGF5ZXJIYXNDaGFu
Z2VkKCkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEVYUEVDVF9GQUxTRShn
cmFuZENoaWxkLT5sYXllckhhc0NoYW5nZWQoKSkKKworI2RlZmluZSBFWEVDVVRFX0FORF9WRVJJ
RllfT05MWV9MQVlFUl9DSEFOR0VEKGNvZGVUb1Rlc3QpICAgICAgICAgICAgICAgXAorICAgIHJv
b3QtPnJlc2V0TGF5ZXJIYXNDaGFuZ2VkKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgIGNoaWxkLT5yZXNldExheWVySGFzQ2hhbmdlZCgpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGdyYW5kQ2hpbGQtPnJlc2V0TGF5ZXJI
YXNDaGFuZ2VkKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNvZGVU
b1Rlc3Q7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgIEVYUEVDVF9UUlVFKHJvb3QtPmxheWVySGFzQ2hhbmdlZCgpKTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEVYUEVDVF9GQUxTRShjaGlsZC0+bGF5ZXJI
YXNDaGFuZ2VkKCkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEVYUEVDVF9G
QUxTRShncmFuZENoaWxkLT5sYXllckhhc0NoYW5nZWQoKSkKKworI2RlZmluZSBFWEVDVVRFX0FO
RF9WRVJJRllfT05MWV9ERVNDRU5EQU5UU19DSEFOR0VEKGNvZGVUb1Rlc3QpICAgICAgICAgXAor
ICAgIHJvb3QtPnJlc2V0TGF5ZXJIYXNDaGFuZ2VkKCk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgIGNoaWxkLT5yZXNldExheWVySGFzQ2hhbmdlZCgpOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGdyYW5kQ2hpbGQtPnJlc2V0
TGF5ZXJIYXNDaGFuZ2VkKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
IGNvZGVUb1Rlc3Q7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgIEVYUEVDVF9GQUxTRShyb290LT5sYXllckhhc0NoYW5nZWQoKSk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEVYUEVDVF9UUlVFKGNoaWxkLT5s
YXllckhhc0NoYW5nZWQoKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEVY
UEVDVF9UUlVFKGdyYW5kQ2hpbGQtPmxheWVySGFzQ2hhbmdlZCgpKQorCitURVNUKENDTGF5ZXJJ
bXBsVGVzdCwgdmVyaWZ5TGF5ZXJDaGFuZ2VzQXJlVHJhY2tlZFByb3Blcmx5KQoreworICAgIC8v
CisgICAgLy8gVGhpcyB0ZXN0IGNoZWNrcyB0aGF0IGxheWVySGFzQ2hhbmdlZCgpIGhhcyB0aGUg
Y29ycmVjdCBiZWhhdmlvci4KKyAgICAvLworCisgICAgLy8gVGhlIGNvbnN0cnVjdG9yIG9uIHRo
aXMgd2lsbCBmYWtlIHRoYXQgd2UgYXJlIG9uIHRoZSBjb3JyZWN0IHRocmVhZC4KKyAgICBEZWJ1
Z1Njb3BlZFNldEltcGxUaHJlYWQgc2V0SW1wbFRocmVhZDsKKworICAgIC8vIENyZWF0ZSBhIHNp
bXBsZSBDQ0xheWVySW1wbCB0cmVlOgorICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IEND
TGF5ZXJJbXBsOjpjcmVhdGUoMSk7CisgICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBjaGlsZCA9IEND
TGF5ZXJJbXBsOjpjcmVhdGUoMik7CisgICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBncmFuZENoaWxk
ID0gQ0NMYXllckltcGw6OmNyZWF0ZSgzKTsKKyAgICByb290LT5hZGRDaGlsZChjaGlsZCk7Cisg
ICAgY2hpbGQtPmFkZENoaWxkKGdyYW5kQ2hpbGQpOworCisgICAgUmVmUHRyPENDTGF5ZXJJbXBs
PiBkdW1teU1hc2sgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDQpOworICAgIFJlZlB0cjxDQ0xheWVy
SW1wbD4gZHVtbXlSZXBsaWNhID0gQ0NMYXllckltcGw6OmNyZWF0ZSg1KTsKKworICAgIC8vIEFk
ZGluZyBjaGlsZHJlbiBpcyBhbiBpbnRlcm5hbCBvcGVyYXRpb24gYW5kIHNob3VsZCBub3QgbWFy
ayBsYXllcnMgYXMgY2hhbmdlZC4KKyAgICBFWFBFQ1RfRkFMU0Uocm9vdC0+bGF5ZXJIYXNDaGFu
Z2VkKCkpOworICAgIEVYUEVDVF9GQUxTRShjaGlsZC0+bGF5ZXJIYXNDaGFuZ2VkKCkpOworICAg
IEVYUEVDVF9GQUxTRShncmFuZENoaWxkLT5sYXllckhhc0NoYW5nZWQoKSk7CisKKyAgICBGbG9h
dFBvaW50IGFyYml0cmFyeUZsb2F0UG9pbnQgPSBGbG9hdFBvaW50KDAuMTI1ZiwgMC4yNWYpOwor
ICAgIGZsb2F0IGFyYml0cmFyeU51bWJlciA9IDAuMzUyZjsKKyAgICBJbnRTaXplIGFyYml0cmFy
eUludFNpemUgPSBJbnRTaXplKDExMSwgMjIyKTsKKyAgICBJbnRQb2ludCBhcmJpdHJhcnlJbnRQ
b2ludCA9IEludFBvaW50KDMzMywgNDQ0KTsKKyAgICBJbnRSZWN0IGFyYml0cmFyeUludFJlY3Qg
PSBJbnRSZWN0KGFyYml0cmFyeUludFBvaW50LCBhcmJpdHJhcnlJbnRTaXplKTsKKyAgICBGbG9h
dFJlY3QgYXJiaXRyYXJ5RmxvYXRSZWN0ID0gRmxvYXRSZWN0KGFyYml0cmFyeUZsb2F0UG9pbnQs
IEZsb2F0U2l6ZSgxLjIzNCwgNS42NzgpKTsKKyAgICBDb2xvciBhcmJpdHJhcnlDb2xvciA9IENv
bG9yKDEwLCAyMCwgMzApOworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGFyYml0cmFyeVRyYW5z
Zm9ybTsKKyAgICBhcmJpdHJhcnlUcmFuc2Zvcm0uc2NhbGUzZCgwLjEsIDAuMiwgMC4zKTsKKwor
ICAgIC8vIENoYW5naW5nIHRoZXNlIHByb3BlcnRpZXMgYWZmZWN0cyB0aGUgZW50aXJlIHN1YnRy
ZWUgb2YgbGF5ZXJzLgorICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0NIQU5HRUQocm9v
dC0+c2V0QW5jaG9yUG9pbnQoYXJiaXRyYXJ5RmxvYXRQb2ludCkpOworICAgIEVYRUNVVEVfQU5E
X1ZFUklGWV9TVUJUUkVFX0NIQU5HRUQocm9vdC0+c2V0QW5jaG9yUG9pbnRaKGFyYml0cmFyeU51
bWJlcikpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0NIQU5HRUQocm9vdC0+c2V0
TWFza0xheWVyKGR1bW15TWFzaykpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0NI
QU5HRUQocm9vdC0+c2V0TWFza3NUb0JvdW5kcyh0cnVlKSk7CisgICAgRVhFQ1VURV9BTkRfVkVS
SUZZX1NVQlRSRUVfQ0hBTkdFRChyb290LT5zZXRPcGFjaXR5KGFyYml0cmFyeU51bWJlcikpOwor
ICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0NIQU5HRUQocm9vdC0+c2V0UmVwbGljYUxh
eWVyKGR1bW15UmVwbGljYSkpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0NIQU5H
RUQocm9vdC0+c2V0UG9zaXRpb24oYXJiaXRyYXJ5RmxvYXRQb2ludCkpOworICAgIEVYRUNVVEVf
QU5EX1ZFUklGWV9TVUJUUkVFX0NIQU5HRUQocm9vdC0+c2V0UHJlc2VydmVzM0QodHJ1ZSkpOwor
ICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0NIQU5HRUQocm9vdC0+c2V0VHJhbnNmb3Jt
KGFyYml0cmFyeVRyYW5zZm9ybSkpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0NI
QU5HRUQocm9vdC0+c2V0RG91YmxlU2lkZWQoZmFsc2UpKTsgLy8gY29uc3RydWN0b3IgaW5pdGlh
bGl6ZXMgaXQgdG8gInRydWUiLgorICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0NIQU5H
RUQocm9vdC0+c2Nyb2xsQnkoYXJiaXRyYXJ5SW50U2l6ZSkpOworICAgIEVYRUNVVEVfQU5EX1ZF
UklGWV9TVUJUUkVFX0NIQU5HRUQocm9vdC0+c2V0U2Nyb2xsRGVsdGEoYXJiaXRyYXJ5SW50U2l6
ZSkpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0NIQU5HRUQocm9vdC0+c2V0U2Ny
b2xsUG9zaXRpb24oYXJiaXRyYXJ5SW50UG9pbnQpKTsKKworICAgIC8vIENoYW5naW5nIHRoZXNl
IHByb3BlcnRpZXMgb25seSBhZmZlY3RzIHRoZSBsYXllciBpdHNlbGYuCisgICAgRVhFQ1VURV9B
TkRfVkVSSUZZX09OTFlfTEFZRVJfQ0hBTkdFRChyb290LT5zZXRDb250ZW50Qm91bmRzKGFyYml0
cmFyeUludFNpemUpKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllfT05MWV9MQVlFUl9DSEFOR0VE
KHJvb3QtPnNldERlYnVnQm9yZGVyQ29sb3IoYXJiaXRyYXJ5Q29sb3IpKTsKKyAgICBFWEVDVVRF
X0FORF9WRVJJRllfT05MWV9MQVlFUl9DSEFOR0VEKHJvb3QtPnNldERlYnVnQm9yZGVyV2lkdGgo
YXJiaXRyYXJ5TnVtYmVyKSk7CisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX09OTFlfTEFZRVJfQ0hB
TkdFRChyb290LT5zZXREcmF3c0NvbnRlbnQodHJ1ZSkpOworCisgICAgLy8gU3BlY2lhbCBjYXNl
OiBzdWJsYXllciB0cmFuc2Zvcm0gY2hhbmdlcyBhbGwgbGF5ZXIncyBkZXNjZW5kYW50cywgYnV0
IG5vdCB0aGUgbGF5ZXIgaXRzZWxmLgorICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9PTkxZX0RFU0NF
TkRBTlRTX0NIQU5HRUQocm9vdC0+c2V0U3VibGF5ZXJUcmFuc2Zvcm0oYXJiaXRyYXJ5VHJhbnNm
b3JtKSk7CisKKyAgICAvLyBTcGVjaWFsIGNhc2U6IHNldEJvdW5kcyBjaGFuZ2VzIGJlaGF2aW9y
IGRlcGVuZGluZyBvbiBtYXNrc1RvQm91bmRzLgorICAgIHJvb3QtPnNldE1hc2tzVG9Cb3VuZHMo
ZmFsc2UpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9PTkxZX0xBWUVSX0NIQU5HRUQocm9vdC0+
c2V0Qm91bmRzKEludFNpemUoMTM1LCAyNDYpKSk7CisgICAgcm9vdC0+c2V0TWFza3NUb0JvdW5k
cyh0cnVlKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9DSEFOR0VEKHJvb3QtPnNl
dEJvdW5kcyhhcmJpdHJhcnlJbnRTaXplKSk7IC8vIHNob3VsZCBiZSBhIGRpZmZlcmVudCBzaXpl
IHRoYW4gcHJldmlvdXMgY2FsbCwgdG8gZW5zdXJlIGl0IG1hcmtzIHRyZWUgY2hhbmdlZC4KKwor
ICAgIC8vIEFmdGVyIHNldHRpbmcgYWxsIHRoZXNlIHByb3BlcnRpZXMgYWxyZWFkeSwgc2V0dGlu
ZyB0byB0aGUgZXhhY3Qgc2FtZSB2YWx1ZXMgYWdhaW4gc2hvdWxkCisgICAgLy8gbm90IGNhdXNl
IGFueSBjaGFuZ2UuCisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfRElEX05PVF9DSEFO
R0Uocm9vdC0+c2V0QW5jaG9yUG9pbnQoYXJiaXRyYXJ5RmxvYXRQb2ludCkpOworICAgIEVYRUNV
VEVfQU5EX1ZFUklGWV9TVUJUUkVFX0RJRF9OT1RfQ0hBTkdFKHJvb3QtPnNldEFuY2hvclBvaW50
WihhcmJpdHJhcnlOdW1iZXIpKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9ESURf
Tk9UX0NIQU5HRShyb290LT5zZXRNYXNrTGF5ZXIoZHVtbXlNYXNrKSk7CisgICAgRVhFQ1VURV9B
TkRfVkVSSUZZX1NVQlRSRUVfRElEX05PVF9DSEFOR0Uocm9vdC0+c2V0TWFza3NUb0JvdW5kcyh0
cnVlKSk7CisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfRElEX05PVF9DSEFOR0Uocm9v
dC0+c2V0UmVwbGljYUxheWVyKGR1bW15UmVwbGljYSkpOworICAgIEVYRUNVVEVfQU5EX1ZFUklG
WV9TVUJUUkVFX0RJRF9OT1RfQ0hBTkdFKHJvb3QtPnNldFBvc2l0aW9uKGFyYml0cmFyeUZsb2F0
UG9pbnQpKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9ESURfTk9UX0NIQU5HRShy
b290LT5zZXRQcmVzZXJ2ZXMzRCh0cnVlKSk7CisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRS
RUVfRElEX05PVF9DSEFOR0Uocm9vdC0+c2V0VHJhbnNmb3JtKGFyYml0cmFyeVRyYW5zZm9ybSkp
OworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0RJRF9OT1RfQ0hBTkdFKHJvb3QtPnNl
dERvdWJsZVNpZGVkKGZhbHNlKSk7IC8vIGNvbnN0cnVjdG9yIGluaXRpYWxpemVzIGl0IHRvICJ0
cnVlIi4KKyAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9ESURfTk9UX0NIQU5HRShyb290
LT5zZXRTY3JvbGxEZWx0YShhcmJpdHJhcnlJbnRTaXplKSk7CisgICAgRVhFQ1VURV9BTkRfVkVS
SUZZX1NVQlRSRUVfRElEX05PVF9DSEFOR0Uocm9vdC0+c2V0U2Nyb2xsUG9zaXRpb24oYXJiaXRy
YXJ5SW50UG9pbnQpKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9ESURfTk9UX0NI
QU5HRShyb290LT5zZXRDb250ZW50Qm91bmRzKGFyYml0cmFyeUludFNpemUpKTsKKyAgICBFWEVD
VVRFX0FORF9WRVJJRllfU1VCVFJFRV9ESURfTk9UX0NIQU5HRShyb290LT5zZXRPcGFjaXR5KGFy
Yml0cmFyeU51bWJlcikpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0RJRF9OT1Rf
Q0hBTkdFKHJvb3QtPnNldERlYnVnQm9yZGVyQ29sb3IoYXJiaXRyYXJ5Q29sb3IpKTsKKyAgICBF
WEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9ESURfTk9UX0NIQU5HRShyb290LT5zZXREZWJ1Z0Jv
cmRlcldpZHRoKGFyYml0cmFyeU51bWJlcikpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJU
UkVFX0RJRF9OT1RfQ0hBTkdFKHJvb3QtPnNldERyYXdzQ29udGVudCh0cnVlKSk7CisgICAgRVhF
Q1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfRElEX05PVF9DSEFOR0Uocm9vdC0+c2V0U3VibGF5ZXJU
cmFuc2Zvcm0oYXJiaXRyYXJ5VHJhbnNmb3JtKSk7CisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NV
QlRSRUVfRElEX05PVF9DSEFOR0Uocm9vdC0+c2V0Qm91bmRzKGFyYml0cmFyeUludFNpemUpKTsK
KworICAgIC8vIFRoZXNlIHByb3BlcnRpZXMgYXJlIGludGVybmFsLCBhbmQgc2hvdWxkIG5vdCBi
ZSBjb25zaWRlcmVkICJjaGFuZ2UiIHdoZW4gdGhleSBhcmUgdXNlZC4KKyAgICBFWEVDVVRFX0FO
RF9WRVJJRllfU1VCVFJFRV9ESURfTk9UX0NIQU5HRShyb290LT5zZXRJc05vbkNvbXBvc2l0ZWRD
b250ZW50KHRydWUpKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9ESURfTk9UX0NI
QU5HRShyb290LT5zZXRTY2lzc29yUmVjdChhcmJpdHJhcnlJbnRSZWN0KSk7CisgICAgRVhFQ1VU
RV9BTkRfVkVSSUZZX1NVQlRSRUVfRElEX05PVF9DSEFOR0Uocm9vdC0+c2V0VXNlc0xheWVyU2Np
c3Nvcih0cnVlKSk7CisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfRElEX05PVF9DSEFO
R0Uocm9vdC0+c2V0RHJhd09wYWNpdHkoYXJiaXRyYXJ5TnVtYmVyKSk7CisgICAgRVhFQ1VURV9B
TkRfVkVSSUZZX1NVQlRSRUVfRElEX05PVF9DSEFOR0Uocm9vdC0+c2V0VGFyZ2V0UmVuZGVyU3Vy
ZmFjZSgwKSk7CisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfRElEX05PVF9DSEFOR0Uo
cm9vdC0+c2V0RHJhd1RyYW5zZm9ybShhcmJpdHJhcnlUcmFuc2Zvcm0pKTsKKyAgICBFWEVDVVRF
X0FORF9WRVJJRllfU1VCVFJFRV9ESURfTk9UX0NIQU5HRShyb290LT5zZXRTY3JlZW5TcGFjZVRy
YW5zZm9ybShhcmJpdHJhcnlUcmFuc2Zvcm0pKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VC
VFJFRV9ESURfTk9UX0NIQU5HRShyb290LT5zZXREcmF3YWJsZUNvbnRlbnRSZWN0KGFyYml0cmFy
eUludFJlY3QpKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9ESURfTk9UX0NIQU5H
RShyb290LT5zZXRVcGRhdGVSZWN0KGFyYml0cmFyeUZsb2F0UmVjdCkpOworICAgIEVYRUNVVEVf
QU5EX1ZFUklGWV9TVUJUUkVFX0RJRF9OT1RfQ0hBTkdFKHJvb3QtPnNldFZpc2libGVMYXllclJl
Y3QoYXJiaXRyYXJ5SW50UmVjdCkpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0RJ
RF9OT1RfQ0hBTkdFKHJvb3QtPnNldE1heFNjcm9sbFBvc2l0aW9uKGFyYml0cmFyeUludFNpemUp
KTsKK30KKworfSAvLyBuYW1lc3BhY2UK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112585</attachid>
            <date>2011-10-26 13:31:04 -0700</date>
            <delta_ts>2011-10-26 13:35:21 -0700</delta_ts>
            <desc>moved implementations to .cpp file</desc>
            <filename>bug-70442-20111026133103.patch</filename>
            <type>text/plain</type>
            <size>26037</size>
            <attacher name="Shawn Singh">shawnsingh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTg0ODIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmNjBmYzFlNmNmYjNiZDNh
NjU2M2JmNDY1NzEzOGFkZTRkOTM1NWIzLi5jYmRjOWQ1YWQwZjk1OGVmODBkY2U2OTZhZDc2YTA1
MGZlMTU5N2I0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDYgQEAKKzIwMTEtMTAtMjYgIFNoYXdu
IFNpbmdoICA8c2hhd25zaW5naEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBU
cmFjayB3aGVuIENDTGF5ZXJJbXBsIHByb3BlcnRpZXMgaGF2ZSBjaGFuZ2VkLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA0NDIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBkZXRlcm1pbmUgYSBnb29k
IHNjaXNzb3IgcmVjdCwgd2UgbXVzdCBkZXRlcm1pbmUgd2hhdAorICAgICAgICB3aWxsIGNoYW5n
ZSBvbiB0aGUgc2NyZWVuIG9uIHRoZSBuZXh0IHJlZHJhdy4gIFRoaXMgcGF0Y2gKKyAgICAgICAg
dHJhY2tzIHRoZSBuZWNlc3NhcnkgaW5mb3JtYXRpb24gb24gQ0NMYXllckltcGwgYW5kIG1hcmtz
CisgICAgICAgIGEgZmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgdGhpcyBsYXllciB3aWxsICJkYW1h
Z2UiIHRoZSBzY3JlZW4uCisgICAgICAgIFRoZSBvdGhlciBwb3J0aW9uIG9mICJjaGFuZ2UiLCB0
aGUgdXBkYXRlUmVjdCwgd2FzIGFscmVhZHkKKyAgICAgICAgbGFuZGVkIGluIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTQ0MS4KKworICAgICAgICBOZXcgdW5pdCB0
ZXN0IGFkZGVkIHRvIENDTGF5ZXJJbXBsVGVzdCB0byB0ZXN0IHRoaXMgcGF0Y2guCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6Q0NMYXllckltcGwpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NMYXllckltcGw6OnNjcm9sbEJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBs
OjpzZXRMYXllckhhc0NoYW5nZWRGb3JTdWJ0cmVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5
ZXJJbXBsOjpzZXRMYXllckhhc0NoYW5nZWRGb3JEZXNjZW5kYW50cyk6CisgICAgICAgIChXZWJD
b3JlOjpDQ0xheWVySW1wbDo6c2V0Qm91bmRzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJ
bXBsOjpzZXRNYXNrTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OnNldFJl
cGxpY2FMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6c2V0RHJhd3NDb250
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpzZXRBbmNob3JQb2ludCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6c2V0QW5jaG9yUG9pbnRaKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpzZXRNYXNrc1RvQm91bmRzKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDTGF5ZXJJbXBsOjpzZXRPcGFjaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJ
bXBsOjpzZXRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6c2V0UHJl
c2VydmVzM0QpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OnNldFN1YmxheWVyVHJh
bnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpzZXRUcmFuc2Zvcm0pOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OnNldERlYnVnQm9yZGVyQ29sb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OnNldERlYnVnQm9yZGVyV2lkdGgpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OnNldENvbnRlbnRCb3VuZHMpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NMYXllckltcGw6OnNldFNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDTGF5ZXJJbXBsOjpzZXRTY3JvbGxEZWx0YSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVy
SW1wbDo6c2V0RG91YmxlU2lkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJJbXBsLmg6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6bGF5
ZXJIYXNDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpyZXNldExheWVy
SGFzQ2hhbmdlZCk6CisKIDIwMTEtMTAtMjYgIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuICA8
a2VubmV0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFByb3Blcmx5IHN1c3BlbmQvcmVzdW1lIEdl
b2xvY2F0aW9uL0RldmljZU1vdGlvbi9EZXZpY2VPcmllbnRhdGlvbiBvYmplY3RzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCmluZGV4IGFjZWU5MGZkOGI2YTNmZDk3MjEwMzllOWI0YmE4OTBkYTYw
OTlmZDUuLjhjZTdhMDZmNTUyMjZkYjJkY2IzOTNlYjU0NDY5NzhlYWYyNzMxNjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMTAtMjYgIFNoYXduIFNp
bmdoICA8c2hhd25zaW5naEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBUcmFj
ayB3aGVuIENDTGF5ZXJJbXBsIHByb3BlcnRpZXMgaGF2ZSBjaGFuZ2VkLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA0NDIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdC5neXBpOgorICAgICAg
ICAqIHRlc3RzL0NDTGF5ZXJJbXBsVGVzdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
VEVTVCk6CisKIDIwMTEtMTAtMjUgIFN0ZXBoZW4gV2hpdGUgIDxzZW5vcmJsYW5jb0BjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBDYW52YXMyRCBzaG91bGQgcmF0ZS1saW1pdCBk
cmF3aW5nIHRvIHByZXZlbnQgc3dhbXBpbmcgdGhlIEdQVSBwcm9jZXNzLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
ckltcGwuY3BwCmluZGV4IDJiMDVkOWZmMGQxN2UwMmJiNGVlN2Q4M2JiMGYzYjI0ZmNiNzVjZjMu
LjI4YTdhMGUxN2MxODNkZjYxZTNiOTViYWYzNzYzNzRiODMzNGJhZDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVySW1wbC5jcHAKQEAgLTM1LDYgKzM1LDI0IEBACiAjaW5jbHVkZSAiY2MvQ0NMYXllclNvcnRl
ci5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCisjZGVmaW5lIExBWUVSX0NI
QU5HRURfSUZfTk9UX0VRVUFMKG1lbWJlciwgbmV3dmFsdWUpICAgICAgIFwKKyAgICBpZiAoKG1l
bWJlcikgIT0gKG5ld3ZhbHVlKSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICAobWVtYmVyKSA9IChuZXd2YWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgIG1fbGF5ZXJIYXNDaGFuZ2VkID0gdHJ1ZTsgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICB9CisKKyNkZWZpbmUgU1VCVFJFRV9DSEFOR0VEX0lGX05PVF9FUVVBTChtZW1iZXIs
IG5ld3ZhbHVlKSAgICAgIFwKKyAgICBpZiAoKG1lbWJlcikgIT0gKG5ld3ZhbHVlKSkgeyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKG1lbWJlcikgPSAobmV3dmFsdWUpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgc2V0TGF5ZXJIYXNDaGFuZ2Vk
Rm9yU3VidHJlZSgpOyAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9CisKKyNkZWZpbmUgREVT
Q0VOREFOVFNfQ0hBTkdFRF9JRl9OT1RfRVFVQUwobWVtYmVyLCBuZXd2YWx1ZSkgICAgICAgICAg
XAorICAgIGlmICgobWVtYmVyKSAhPSAobmV3dmFsdWUpKSB7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgICAgIChtZW1iZXIpID0gKG5ld3ZhbHVlKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgc2V0TGF5ZXJIYXNDaGFuZ2Vk
Rm9yRGVzY2VuZGFudHMoKTsgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0KKwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBDQ0xheWVySW1wbDo6Q0NMYXllckltcGwoaW50IGlkKQpAQCAt
NDMsNiArNjEsNyBAQCBDQ0xheWVySW1wbDo6Q0NMYXllckltcGwoaW50IGlkKQogICAgICwgbV9h
bmNob3JQb2ludCgwLjUsIDAuNSkKICAgICAsIG1fYW5jaG9yUG9pbnRaKDApCiAgICAgLCBtX2Rv
dWJsZVNpZGVkKHRydWUpCisgICAgLCBtX2xheWVySGFzQ2hhbmdlZChmYWxzZSkKICAgICAsIG1f
bWFza3NUb0JvdW5kcyhmYWxzZSkKICAgICAsIG1fb3BhY2l0eSgxLjApCiAgICAgLCBtX3ByZXNl
cnZlczNEKGZhbHNlKQpAQCAtMTI1LDYgKzE0NCw3IEBAIHZvaWQgQ0NMYXllckltcGw6OnNjcm9s
bEJ5KGNvbnN0IEludFNpemUmIHNjcm9sbCkKICAgICBJbnRTaXplIG1heERlbHRhID0gbV9tYXhT
Y3JvbGxQb3NpdGlvbiAtIHRvU2l6ZShtX3Njcm9sbFBvc2l0aW9uKTsKICAgICAvLyBDbGFtcCBu
ZXdEZWx0YSBzbyB0aGF0IHBvc2l0aW9uICsgZGVsdGEgc3RheXMgd2l0aGluIHNjcm9sbCBib3Vu
ZHMuCiAgICAgbV9zY3JvbGxEZWx0YSA9IG5ld0RlbHRhLmV4cGFuZGVkVG8obWluRGVsdGEpLnNo
cnVua1RvKG1heERlbHRhKTsKKyAgICBzZXRMYXllckhhc0NoYW5nZWRGb3JTdWJ0cmVlKCk7CiB9
CiAKIHZvaWQgQ0NMYXllckltcGw6OmNsZWFudXBSZXNvdXJjZXMoKQpAQCAtMjIyLDYgKzI0Miwx
MTYgQEAgdm9pZCBDQ0xheWVySW1wbDo6ZHVtcExheWVyKFRleHRTdHJlYW0mIHRzLCBpbnQgaW5k
ZW50KSBjb25zdAogICAgICAgICBtX2NoaWxkcmVuW2ldLT5kdW1wTGF5ZXIodHMsIGluZGVudCsx
KTsKIH0KIAordm9pZCBDQ0xheWVySW1wbDo6c2V0TGF5ZXJIYXNDaGFuZ2VkRm9yU3VidHJlZSgp
Cit7CisgICAgbV9sYXllckhhc0NoYW5nZWQgPSB0cnVlOworICAgIHNldExheWVySGFzQ2hhbmdl
ZEZvckRlc2NlbmRhbnRzKCk7Cit9CisKK3ZvaWQgQ0NMYXllckltcGw6OnNldExheWVySGFzQ2hh
bmdlZEZvckRlc2NlbmRhbnRzKCkKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fY2hp
bGRyZW4uc2l6ZSgpOyArK2kpCisgICAgICAgIG1fY2hpbGRyZW5baV0tPnNldExheWVySGFzQ2hh
bmdlZEZvclN1YnRyZWUoKTsKK30KKwordm9pZCBDQ0xheWVySW1wbDo6c2V0Qm91bmRzKGNvbnN0
IEludFNpemUmIGJvdW5kcykKK3sKKyAgICBpZiAobV9ib3VuZHMgIT0gYm91bmRzKSB7CisgICAg
ICAgIG1fYm91bmRzID0gYm91bmRzOworCisgICAgICAgIC8vIG1hc2tzVG9Cb3VuZHMgbWVhbnMg
dGhhdCB0aGVzZSBib3VuZHMgYWZmZWN0IHRoZSBlbnRpcmUgc3VidHJlZSwgbm90IGp1c3QgdGhp
cyBsYXllci4KKyAgICAgICAgaWYgKG1hc2tzVG9Cb3VuZHMoKSkKKyAgICAgICAgICAgIHNldExh
eWVySGFzQ2hhbmdlZEZvclN1YnRyZWUoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9s
YXllckhhc0NoYW5nZWQgPSB0cnVlOworICAgIH0KK30KKwordm9pZCBDQ0xheWVySW1wbDo6c2V0
TWFza0xheWVyKFBhc3NSZWZQdHI8Q0NMYXllckltcGw+IG1hc2tMYXllcikKK3sKKyAgICBTVUJU
UkVFX0NIQU5HRURfSUZfTk9UX0VRVUFMKG1fbWFza0xheWVyLCBtYXNrTGF5ZXIpOworfQorCit2
b2lkIENDTGF5ZXJJbXBsOjpzZXRSZXBsaWNhTGF5ZXIoUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4g
cmVwbGljYUxheWVyKQoreworICAgIFNVQlRSRUVfQ0hBTkdFRF9JRl9OT1RfRVFVQUwobV9yZXBs
aWNhTGF5ZXIsIHJlcGxpY2FMYXllcik7Cit9CisKK3ZvaWQgQ0NMYXllckltcGw6OnNldERyYXdz
Q29udGVudChib29sIGRyYXdzQ29udGVudCkKK3sKKyAgICBMQVlFUl9DSEFOR0VEX0lGX05PVF9F
UVVBTChtX2RyYXdzQ29udGVudCwgZHJhd3NDb250ZW50KTsKK30KKwordm9pZCBDQ0xheWVySW1w
bDo6c2V0QW5jaG9yUG9pbnQoY29uc3QgRmxvYXRQb2ludCYgYW5jaG9yUG9pbnQpCit7CisgICAg
U1VCVFJFRV9DSEFOR0VEX0lGX05PVF9FUVVBTChtX2FuY2hvclBvaW50LCBhbmNob3JQb2ludCk7
Cit9CisKK3ZvaWQgQ0NMYXllckltcGw6OnNldEFuY2hvclBvaW50WihmbG9hdCBhbmNob3JQb2lu
dFopCit7CisgICAgU1VCVFJFRV9DSEFOR0VEX0lGX05PVF9FUVVBTChtX2FuY2hvclBvaW50Wiwg
YW5jaG9yUG9pbnRaKTsKK30KKwordm9pZCBDQ0xheWVySW1wbDo6c2V0TWFza3NUb0JvdW5kcyhi
b29sIG1hc2tzVG9Cb3VuZHMpCit7CisgICAgU1VCVFJFRV9DSEFOR0VEX0lGX05PVF9FUVVBTCht
X21hc2tzVG9Cb3VuZHMsIG1hc2tzVG9Cb3VuZHMpOworfQorCit2b2lkIENDTGF5ZXJJbXBsOjpz
ZXRPcGFjaXR5KGZsb2F0IG9wYWNpdHkpCit7CisgICAgU1VCVFJFRV9DSEFOR0VEX0lGX05PVF9F
UVVBTChtX29wYWNpdHksIG9wYWNpdHkpOworfQorCit2b2lkIENDTGF5ZXJJbXBsOjpzZXRQb3Np
dGlvbihjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbikKK3sKKyAgICBTVUJUUkVFX0NIQU5HRURf
SUZfTk9UX0VRVUFMKG1fcG9zaXRpb24sIHBvc2l0aW9uKTsKK30KKwordm9pZCBDQ0xheWVySW1w
bDo6c2V0UHJlc2VydmVzM0QoYm9vbCBwcmVzZXJ2ZXMzRCkKK3sKKyAgICBTVUJUUkVFX0NIQU5H
RURfSUZfTk9UX0VRVUFMKG1fcHJlc2VydmVzM0QsIHByZXNlcnZlczNEKTsKK30KKwordm9pZCBD
Q0xheWVySW1wbDo6c2V0U3VibGF5ZXJUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIHN1YmxheWVyVHJhbnNmb3JtKQoreworICAgIERFU0NFTkRBTlRTX0NIQU5HRURfSUZfTk9U
X0VRVUFMKG1fc3VibGF5ZXJUcmFuc2Zvcm0sIHN1YmxheWVyVHJhbnNmb3JtKTsKK30KKwordm9p
ZCBDQ0xheWVySW1wbDo6c2V0VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0
cmFuc2Zvcm0pCit7CisgICAgU1VCVFJFRV9DSEFOR0VEX0lGX05PVF9FUVVBTChtX3RyYW5zZm9y
bSwgdHJhbnNmb3JtKTsKK30KKwordm9pZCBDQ0xheWVySW1wbDo6c2V0RGVidWdCb3JkZXJDb2xv
cihDb2xvciBjKQoreworICAgIExBWUVSX0NIQU5HRURfSUZfTk9UX0VRVUFMKG1fZGVidWdCb3Jk
ZXJDb2xvciwgYyk7Cit9CisKK3ZvaWQgQ0NMYXllckltcGw6OnNldERlYnVnQm9yZGVyV2lkdGgo
ZmxvYXQgd2lkdGgpCit7CisgICAgTEFZRVJfQ0hBTkdFRF9JRl9OT1RfRVFVQUwobV9kZWJ1Z0Jv
cmRlcldpZHRoLCB3aWR0aCk7Cit9CisKK3ZvaWQgQ0NMYXllckltcGw6OnNldENvbnRlbnRCb3Vu
ZHMoY29uc3QgSW50U2l6ZSYgY29udGVudEJvdW5kcykKK3sKKyAgICBMQVlFUl9DSEFOR0VEX0lG
X05PVF9FUVVBTChtX2NvbnRlbnRCb3VuZHMsIGNvbnRlbnRCb3VuZHMpOworfQorCit2b2lkIEND
TGF5ZXJJbXBsOjpzZXRTY3JvbGxQb3NpdGlvbihjb25zdCBJbnRQb2ludCYgc2Nyb2xsUG9zaXRp
b24pCit7CisgICAgU1VCVFJFRV9DSEFOR0VEX0lGX05PVF9FUVVBTChtX3Njcm9sbFBvc2l0aW9u
LCBzY3JvbGxQb3NpdGlvbik7Cit9CisKK3ZvaWQgQ0NMYXllckltcGw6OnNldFNjcm9sbERlbHRh
KGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhKQoreworICAgIFNVQlRSRUVfQ0hBTkdFRF9JRl9O
T1RfRVFVQUwobV9zY3JvbGxEZWx0YSwgc2Nyb2xsRGVsdGEpOworfQorCit2b2lkIENDTGF5ZXJJ
bXBsOjpzZXREb3VibGVTaWRlZChib29sIGRvdWJsZVNpZGVkKQoreworICAgIFNVQlRSRUVfQ0hB
TkdFRF9JRl9OT1RfRVFVQUwobV9kb3VibGVTaWRlZCwgZG91YmxlU2lkZWQpOworfQorCiB9CiAK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJJbXBsLmgKaW5kZXggMzljNmY4ZTEwYmEwZjg3N2I5MmFmYTEzMGY0MTE4
NDM0ZmE1ZWNhNC4uZTU0ZTI4ZDRkNmY2YzgwZDlkMGFkMjMxZjM4MDM2M2MwYzAzYmQ4NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVySW1wbC5oCkBAIC01OCwxMCArNTgsMTAgQEAgcHVibGljOgogICAgIHZvaWQg
cmVtb3ZlRnJvbVBhcmVudCgpOwogICAgIHZvaWQgcmVtb3ZlQWxsQ2hpbGRyZW4oKTsKIAotICAg
IHZvaWQgc2V0TWFza0xheWVyKFBhc3NSZWZQdHI8Q0NMYXllckltcGw+IG1hc2tMYXllcikgeyBt
X21hc2tMYXllciA9IG1hc2tMYXllcjsgfQorICAgIHZvaWQgc2V0TWFza0xheWVyKFBhc3NSZWZQ
dHI8Q0NMYXllckltcGw+IG1hc2tMYXllcik7CiAgICAgQ0NMYXllckltcGwqIG1hc2tMYXllcigp
IGNvbnN0IHsgcmV0dXJuIG1fbWFza0xheWVyLmdldCgpOyB9CiAKLSAgICB2b2lkIHNldFJlcGxp
Y2FMYXllcihQYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiByZXBsaWNhTGF5ZXIpIHsgbV9yZXBsaWNh
TGF5ZXIgPSByZXBsaWNhTGF5ZXI7IH0KKyAgICB2b2lkIHNldFJlcGxpY2FMYXllcihQYXNzUmVm
UHRyPENDTGF5ZXJJbXBsPiByZXBsaWNhTGF5ZXIpOwogICAgIENDTGF5ZXJJbXBsKiByZXBsaWNh
TGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3JlcGxpY2FMYXllci5nZXQoKTsgfQogCiAgICAgaW50
IGlkKCkgY29uc3QgeyByZXR1cm4gbV9sYXllcklkOyB9CkBAIC03NSw3ICs3NSw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgYmluZENvbnRlbnRzVGV4dHVyZShMYXllclJlbmRlcmVyQ2hy
b21pdW0qKTsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIGxheWVyIGhhcyBjb250ZW50
IHRvIGRyYXcuCi0gICAgdm9pZCBzZXREcmF3c0NvbnRlbnQoYm9vbCBkcmF3c0NvbnRlbnQpIHsg
bV9kcmF3c0NvbnRlbnQgPSBkcmF3c0NvbnRlbnQ7IH0KKyAgICB2b2lkIHNldERyYXdzQ29udGVu
dChib29sIGRyYXdzQ29udGVudCk7CiAgICAgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdCB7IHJl
dHVybiBtX2RyYXdzQ29udGVudDsgfQogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIGFueSBvZiB0
aGUgbGF5ZXIncyBkZXNjZW5kYW50cyBoYXMgY29udGVudCB0byBkcmF3LgpAQCAtODMsMjIgKzgz
LDIyIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xlYW51cFJlc291cmNlcygpOwogCi0gICAgdm9p
ZCBzZXRBbmNob3JQb2ludChjb25zdCBGbG9hdFBvaW50JiBhbmNob3JQb2ludCkgeyBtX2FuY2hv
clBvaW50ID0gYW5jaG9yUG9pbnQ7IH0KKyAgICB2b2lkIHNldEFuY2hvclBvaW50KGNvbnN0IEZs
b2F0UG9pbnQmIGFuY2hvclBvaW50KTsKICAgICBjb25zdCBGbG9hdFBvaW50JiBhbmNob3JQb2lu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fYW5jaG9yUG9pbnQ7IH0KIAotICAgIHZvaWQgc2V0QW5jaG9y
UG9pbnRaKGZsb2F0IGFuY2hvclBvaW50WikgeyBtX2FuY2hvclBvaW50WiA9IGFuY2hvclBvaW50
WjsgfQorICAgIHZvaWQgc2V0QW5jaG9yUG9pbnRaKGZsb2F0IGFuY2hvclBvaW50Wik7CiAgICAg
ZmxvYXQgYW5jaG9yUG9pbnRaKCkgY29uc3QgeyByZXR1cm4gbV9hbmNob3JQb2ludFo7IH0KIAot
ICAgIHZvaWQgc2V0TWFza3NUb0JvdW5kcyhib29sIG1hc2tzVG9Cb3VuZHMpIHsgbV9tYXNrc1Rv
Qm91bmRzID0gbWFza3NUb0JvdW5kczsgfQorICAgIHZvaWQgc2V0TWFza3NUb0JvdW5kcyhib29s
IG1hc2tzVG9Cb3VuZHMpOwogICAgIGJvb2wgbWFza3NUb0JvdW5kcygpIGNvbnN0IHsgcmV0dXJu
IG1fbWFza3NUb0JvdW5kczsgfQogCi0gICAgdm9pZCBzZXRPcGFjaXR5KGZsb2F0IG9wYWNpdHkp
IHsgbV9vcGFjaXR5ID0gb3BhY2l0eTsgfQorICAgIHZvaWQgc2V0T3BhY2l0eShmbG9hdCBvcGFj
aXR5KTsKICAgICBmbG9hdCBvcGFjaXR5KCkgY29uc3QgeyByZXR1cm4gbV9vcGFjaXR5OyB9CiAK
LSAgICB2b2lkIHNldFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uKSB7IG1fcG9z
aXRpb24gPSBwb3NpdGlvbjsgfQorICAgIHZvaWQgc2V0UG9zaXRpb24oY29uc3QgRmxvYXRQb2lu
dCYgcG9zaXRpb24pOwogICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9wb3NpdGlvbjsgfQogCi0gICAgdm9pZCBzZXRQcmVzZXJ2ZXMzRChib29sIHByZXNl
cnZlczNEKSB7IG1fcHJlc2VydmVzM0QgPSBwcmVzZXJ2ZXMzRDsgfQorICAgIHZvaWQgc2V0UHJl
c2VydmVzM0QoYm9vbCBwcmVzZXJ2ZXMzRCk7CiAgICAgYm9vbCBwcmVzZXJ2ZXMzRCgpIGNvbnN0
IHsgcmV0dXJuIG1fcHJlc2VydmVzM0Q7IH0KIAogICAgIHZvaWQgc2V0VXNlc0xheWVyU2Npc3Nv
cihib29sIHVzZXNMYXllclNjaXNzb3IpIHsgbV91c2VzTGF5ZXJTY2lzc29yID0gdXNlc0xheWVy
U2Npc3NvcjsgfQpAQCAtMTA3LDE5ICsxMDcsMTkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0SXNO
b25Db21wb3NpdGVkQ29udGVudChib29sIGlzTm9uQ29tcG9zaXRlZENvbnRlbnQpIHsgbV9pc05v
bkNvbXBvc2l0ZWRDb250ZW50ID0gaXNOb25Db21wb3NpdGVkQ29udGVudDsgfQogICAgIGJvb2wg
aXNOb25Db21wb3NpdGVkQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1faXNOb25Db21wb3NpdGVk
Q29udGVudDsgfQogCi0gICAgdm9pZCBzZXRTdWJsYXllclRyYW5zZm9ybShjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgc3VibGF5ZXJUcmFuc2Zvcm0pIHsgbV9zdWJsYXllclRyYW5zZm9ybSA9
IHN1YmxheWVyVHJhbnNmb3JtOyB9CisgICAgdm9pZCBzZXRTdWJsYXllclRyYW5zZm9ybShjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgc3VibGF5ZXJUcmFuc2Zvcm0pOwogICAgIGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4JiBzdWJsYXllclRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1f
c3VibGF5ZXJUcmFuc2Zvcm07IH0KIAotICAgIHZvaWQgc2V0VHJhbnNmb3JtKGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0pIHsgbV90cmFuc2Zvcm0gPSB0cmFuc2Zvcm07IH0K
KyAgICB2b2lkIHNldFRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNm
b3JtKTsKICAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtKCkgY29uc3Qg
eyByZXR1cm4gbV90cmFuc2Zvcm07IH0KIAogICAgIHZvaWQgc2V0TmFtZShjb25zdCBTdHJpbmcm
IG5hbWUpIHsgbV9uYW1lID0gbmFtZTsgfQogICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbmFtZTsgfQogCiAgICAgLy8gRGVidWcgbGF5ZXIgYm9yZGVyIC0gdmlzdWFs
IGVmZmVjdCBvbmx5LCBkbyBub3QgY2hhbmdlIGdlb21ldHJ5L2NsaXBwaW5nL2V0Yy4KLSAgICB2
b2lkIHNldERlYnVnQm9yZGVyQ29sb3IoQ29sb3IgYykgeyBtX2RlYnVnQm9yZGVyQ29sb3IgPSBj
OyB9CisgICAgdm9pZCBzZXREZWJ1Z0JvcmRlckNvbG9yKENvbG9yIGMpOwogICAgIENvbG9yIGRl
YnVnQm9yZGVyQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2RlYnVnQm9yZGVyQ29sb3I7IH0KLSAg
ICB2b2lkIHNldERlYnVnQm9yZGVyV2lkdGgoZmxvYXQgd2lkdGgpIHsgbV9kZWJ1Z0JvcmRlcldp
ZHRoID0gd2lkdGg7IH0KKyAgICB2b2lkIHNldERlYnVnQm9yZGVyV2lkdGgoZmxvYXQgd2lkdGgp
OwogICAgIGZsb2F0IGRlYnVnQm9yZGVyV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2RlYnVnQm9y
ZGVyV2lkdGg7IH0KIAogICAgIHZvaWQgZHJhd0RlYnVnQm9yZGVyKExheWVyUmVuZGVyZXJDaHJv
bWl1bSopOwpAQCAtMTM3LDE5ICsxMzcsMTkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0VGFyZ2V0
UmVuZGVyU3VyZmFjZShDQ1JlbmRlclN1cmZhY2UqIHN1cmZhY2UpIHsgbV90YXJnZXRSZW5kZXJT
dXJmYWNlID0gc3VyZmFjZTsgfQogCiAgICAgY29uc3QgSW50U2l6ZSYgYm91bmRzKCkgY29uc3Qg
eyByZXR1cm4gbV9ib3VuZHM7IH0KLSAgICB2b2lkIHNldEJvdW5kcyhjb25zdCBJbnRTaXplJiBi
b3VuZHMpIHsgbV9ib3VuZHMgPSBib3VuZHM7IH0KKyAgICB2b2lkIHNldEJvdW5kcyhjb25zdCBJ
bnRTaXplJik7CiAKICAgICBjb25zdCBJbnRTaXplJiBjb250ZW50Qm91bmRzKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb250ZW50Qm91bmRzOyB9Ci0gICAgdm9pZCBzZXRDb250ZW50Qm91bmRzKGNvbnN0
IEludFNpemUmIGNvbnRlbnRCb3VuZHMpIHsgbV9jb250ZW50Qm91bmRzID0gY29udGVudEJvdW5k
czsgfQorICAgIHZvaWQgc2V0Q29udGVudEJvdW5kcyhjb25zdCBJbnRTaXplJiBjb250ZW50Qm91
bmRzKTsKIAogICAgIGNvbnN0IEludFBvaW50JiBzY3JvbGxQb3NpdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fc2Nyb2xsUG9zaXRpb247IH0KLSAgICB2b2lkIHNldFNjcm9sbFBvc2l0aW9uKGNvbnN0
IEludFBvaW50JiBzY3JvbGxQb3NpdGlvbikgeyBtX3Njcm9sbFBvc2l0aW9uID0gc2Nyb2xsUG9z
aXRpb247IH0KKyAgICB2b2lkIHNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IEludFBvaW50JiBzY3Jv
bGxQb3NpdGlvbik7CiAKICAgICBjb25zdCBJbnRTaXplJiBtYXhTY3JvbGxQb3NpdGlvbigpIGNv
bnN0IHtyZXR1cm4gbV9tYXhTY3JvbGxQb3NpdGlvbjsgfQogICAgIHZvaWQgc2V0TWF4U2Nyb2xs
UG9zaXRpb24oY29uc3QgSW50U2l6ZSYgbWF4U2Nyb2xsUG9zaXRpb24pIHsgbV9tYXhTY3JvbGxQ
b3NpdGlvbiA9IG1heFNjcm9sbFBvc2l0aW9uOyB9CiAKICAgICBjb25zdCBJbnRTaXplJiBzY3Jv
bGxEZWx0YSgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsRGVsdGE7IH0KLSAgICB2b2lkIHNldFNj
cm9sbERlbHRhKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhKSB7IG1fc2Nyb2xsRGVsdGEgPSBz
Y3JvbGxEZWx0YTsgfQorICAgIHZvaWQgc2V0U2Nyb2xsRGVsdGEoY29uc3QgSW50U2l6ZSYgc2Ny
b2xsRGVsdGEpOwogCiAgICAgdm9pZCBzY3JvbGxCeShjb25zdCBJbnRTaXplJiBzY3JvbGwpOwog
ICAgIGJvb2wgc2Nyb2xsYWJsZSgpIGNvbnN0IHsgcmV0dXJuICFtYXhTY3JvbGxQb3NpdGlvbigp
LmlzWmVybygpOyB9CkBAIC0xNTgsNyArMTU4LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Vmlz
aWJsZUxheWVyUmVjdChjb25zdCBJbnRSZWN0JiB2aXNpYmxlTGF5ZXJSZWN0KSB7IG1fdmlzaWJs
ZUxheWVyUmVjdCA9IHZpc2libGVMYXllclJlY3Q7IH0KIAogICAgIGJvb2wgZG91YmxlU2lkZWQo
KSBjb25zdCB7IHJldHVybiBtX2RvdWJsZVNpZGVkOyB9Ci0gICAgdm9pZCBzZXREb3VibGVTaWRl
ZChib29sIGRvdWJsZVNpZGVkKSB7IG1fZG91YmxlU2lkZWQgPSBkb3VibGVTaWRlZDsgfQorICAg
IHZvaWQgc2V0RG91YmxlU2lkZWQoYm9vbCBkb3VibGVTaWRlZCk7CiAKICAgICAvLyBSZXR1cm5z
IHRoZSByZWN0IGNvbnRhaW50YWluaW5nIHRoaXMgbGF5ZXIgaW4gdGhlIGN1cnJlbnQgdmlldydz
IGNvb3JkaW5hdGUgc3lzdGVtLgogICAgIGNvbnN0IEludFJlY3QgZ2V0RHJhd1JlY3QoKSBjb25z
dDsKQEAgLTE3NCw2ICsxNzQsOSBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgbGF5ZXJUcmVlQXNU
ZXh0KCkgY29uc3Q7CiAKKyAgICBib29sIGxheWVySGFzQ2hhbmdlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fbGF5ZXJIYXNDaGFuZ2VkOyB9CisgICAgdm9pZCByZXNldExheWVySGFzQ2hhbmdlZCgpIHsg
bV9sYXllckhhc0NoYW5nZWQgPSBmYWxzZTsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQg
Q0NMYXllckltcGwoaW50KTsKIApAQCAtMTg1LDYgKzE4OCwxMSBAQCBwcml2YXRlOgogICAgIGZy
aWVuZCBjbGFzcyBUcmVlU3luY2hyb25pemVyOwogICAgIHZvaWQgY2xlYXJDaGlsZExpc3QoKTsg
Ly8gV2FybmluZzogVGhpcyBkb2VzIG5vdCBwcmVzZXJ2ZSB0cmVlIHN0cnVjdHVyZSBpbnZhcmlh
bnRzIGFuZCBzbyBpcyBvbmx5IGV4cG9zZWQgdG8gdGhlIHRyZWUgc3luY2hyb25pemVyLgogCisg
ICAgdm9pZCBzZXRMYXllckhhc0NoYW5nZWRGb3JTdWJ0cmVlKCk7CisKKyAgICAvLyBOb3RlIGNh
cmVmdWxseSB0aGlzIGRvZXMgbm90IGFmZmVjdCB0aGUgY3VycmVudCBsYXllci4KKyAgICB2b2lk
IHNldExheWVySGFzQ2hhbmdlZEZvckRlc2NlbmRhbnRzKCk7CisKICAgICB2aXJ0dWFsIGNvbnN0
IGNoYXIqIGxheWVyVHlwZUFzU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gIkxheWVyQ2hyb21pdW0i
OyB9CiAKICAgICB2b2lkIGR1bXBMYXllcihUZXh0U3RyZWFtJiwgaW50IGluZGVudCkgY29uc3Q7
CkBAIC0yMDcsNiArMjE1LDkgQEAgcHJpdmF0ZToKICAgICAvLyBXaGV0aGVyIHRoZSAiYmFjayIg
b2YgdGhpcyBsYXllciBzaG91bGQgZHJhdy4KICAgICBib29sIG1fZG91YmxlU2lkZWQ7CiAKKyAg
ICAvLyBUcmFja3MgaWYgZHJhd2luZy1yZWxhdGVkIHByb3BlcnRpZXMgaGF2ZSBjaGFuZ2VkIHNp
bmNlIGxhc3QgcmVkcmF3LgorICAgIGJvb2wgbV9sYXllckhhc0NoYW5nZWQ7CisKICAgICBJbnRS
ZWN0IG1fdmlzaWJsZUxheWVyUmVjdDsKICAgICBib29sIG1fbWFza3NUb0JvdW5kczsKICAgICBm
bG9hdCBtX29wYWNpdHk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktp
dC5neXBpIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQppbmRleCBhNDg5MWZh
YjE3OWYwMmFmZDY0ZGYxYTEwYTAxNjI3NDE0NmVjYjZiLi4zMzMxMzVmOTMxNTBmYzU2Y2MxYTg4
ODMwNjQ0NjE0MmMzY2MxZTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dl
YktpdC5neXBpCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKQEAgLTU0
LDYgKzU0LDcgQEAKICAgICAgICAgJ3dlYmtpdF91bml0dGVzdF9maWxlcyc6IFsKICAgICAgICAg
ICAgICd0ZXN0cy9BcmVuYVRlc3RIZWxwZXJzLmgnLAogICAgICAgICAgICAgJ3Rlc3RzL0Fzc29j
aWF0ZWRVUkxMb2FkZXJUZXN0LmNwcCcsCisgICAgICAgICAgICAndGVzdHMvQ0NMYXllckltcGxU
ZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvQ0NMYXllclNvcnRlclRlc3QuY3BwJywKICAg
ICAgICAgICAgICd0ZXN0cy9DQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0LmNwcCcsCiAgICAgICAg
ICAgICAndGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwJywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllckltcGxUZXN0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllckltcGxUZXN0LmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZTkz
NTZkMWE2OTEyYmE2ZmFmMDgzYzgyZDY4ODJhMTk5Y2QxZjU1Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVySW1wbFRlc3QuY3BwCkBAIC0wLDAg
KzEsMTcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRl
ICJjYy9DQ0xheWVySW1wbC5oIgorCisjaW5jbHVkZSAiY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5o
IgorI2luY2x1ZGUgPGdtb2NrL2dtb2NrLmg+CisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKwor
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSB7CisKKyNkZWZpbmUgRVhFQ1VU
RV9BTkRfVkVSSUZZX1NVQlRSRUVfQ0hBTkdFRChjb2RlVG9UZXN0KSAgICAgICAgICAgICAgICAg
IFwKKyAgICByb290LT5yZXNldExheWVySGFzQ2hhbmdlZCgpOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICBjaGlsZC0+cmVzZXRMYXllckhhc0NoYW5nZWQoKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBncmFuZENoaWxkLT5y
ZXNldExheWVySGFzQ2hhbmdlZCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICBjb2RlVG9UZXN0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICBFWFBFQ1RfVFJVRShyb290LT5sYXllckhhc0NoYW5nZWQo
KSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBFWFBFQ1RfVFJVRShjaGls
ZC0+bGF5ZXJIYXNDaGFuZ2VkKCkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICBFWFBFQ1RfVFJVRShncmFuZENoaWxkLT5sYXllckhhc0NoYW5nZWQoKSkKKworI2RlZmluZSBF
WEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9ESURfTk9UX0NIQU5HRShjb2RlVG9UZXN0KSAgICAg
ICAgICAgXAorICAgIHJvb3QtPnJlc2V0TGF5ZXJIYXNDaGFuZ2VkKCk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNoaWxkLT5yZXNldExheWVySGFzQ2hhbmdl
ZCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGdyYW5kQ2hp
bGQtPnJlc2V0TGF5ZXJIYXNDaGFuZ2VkKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgIGNvZGVUb1Rlc3Q7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgIEVYUEVDVF9GQUxTRShyb290LT5sYXllckhhc0No
YW5nZWQoKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEVYUEVDVF9GQUxT
RShjaGlsZC0+bGF5ZXJIYXNDaGFuZ2VkKCkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgIEVYUEVDVF9GQUxTRShncmFuZENoaWxkLT5sYXllckhhc0NoYW5nZWQoKSkKKworI2Rl
ZmluZSBFWEVDVVRFX0FORF9WRVJJRllfT05MWV9MQVlFUl9DSEFOR0VEKGNvZGVUb1Rlc3QpICAg
ICAgICAgICAgICAgXAorICAgIHJvb3QtPnJlc2V0TGF5ZXJIYXNDaGFuZ2VkKCk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNoaWxkLT5yZXNldExheWVySGFz
Q2hhbmdlZCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGdy
YW5kQ2hpbGQtPnJlc2V0TGF5ZXJIYXNDaGFuZ2VkKCk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgIGNvZGVUb1Rlc3Q7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEVYUEVDVF9UUlVFKHJvb3QtPmxheWVy
SGFzQ2hhbmdlZCgpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEVYUEVD
VF9GQUxTRShjaGlsZC0+bGF5ZXJIYXNDaGFuZ2VkKCkpOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgIEVYUEVDVF9GQUxTRShncmFuZENoaWxkLT5sYXllckhhc0NoYW5nZWQoKSkK
KworI2RlZmluZSBFWEVDVVRFX0FORF9WRVJJRllfT05MWV9ERVNDRU5EQU5UU19DSEFOR0VEKGNv
ZGVUb1Rlc3QpICAgICAgICAgXAorICAgIHJvb3QtPnJlc2V0TGF5ZXJIYXNDaGFuZ2VkKCk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNoaWxkLT5yZXNldExh
eWVySGFzQ2hhbmdlZCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgIGdyYW5kQ2hpbGQtPnJlc2V0TGF5ZXJIYXNDaGFuZ2VkKCk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgIGNvZGVUb1Rlc3Q7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEVYUEVDVF9GQUxTRShyb290
LT5sYXllckhhc0NoYW5nZWQoKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
IEVYUEVDVF9UUlVFKGNoaWxkLT5sYXllckhhc0NoYW5nZWQoKSk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgIEVYUEVDVF9UUlVFKGdyYW5kQ2hpbGQtPmxheWVySGFzQ2hhbmdl
ZCgpKQorCitURVNUKENDTGF5ZXJJbXBsVGVzdCwgdmVyaWZ5TGF5ZXJDaGFuZ2VzQXJlVHJhY2tl
ZFByb3Blcmx5KQoreworICAgIC8vCisgICAgLy8gVGhpcyB0ZXN0IGNoZWNrcyB0aGF0IGxheWVy
SGFzQ2hhbmdlZCgpIGhhcyB0aGUgY29ycmVjdCBiZWhhdmlvci4KKyAgICAvLworCisgICAgLy8g
VGhlIGNvbnN0cnVjdG9yIG9uIHRoaXMgd2lsbCBmYWtlIHRoYXQgd2UgYXJlIG9uIHRoZSBjb3Jy
ZWN0IHRocmVhZC4KKyAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgc2V0SW1wbFRocmVhZDsK
KworICAgIC8vIENyZWF0ZSBhIHNpbXBsZSBDQ0xheWVySW1wbCB0cmVlOgorICAgIFJlZlB0cjxD
Q0xheWVySW1wbD4gcm9vdCA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMSk7CisgICAgUmVmUHRyPEND
TGF5ZXJJbXBsPiBjaGlsZCA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMik7CisgICAgUmVmUHRyPEND
TGF5ZXJJbXBsPiBncmFuZENoaWxkID0gQ0NMYXllckltcGw6OmNyZWF0ZSgzKTsKKyAgICByb290
LT5hZGRDaGlsZChjaGlsZCk7CisgICAgY2hpbGQtPmFkZENoaWxkKGdyYW5kQ2hpbGQpOworCisg
ICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBkdW1teU1hc2sgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDQp
OworICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gZHVtbXlSZXBsaWNhID0gQ0NMYXllckltcGw6OmNy
ZWF0ZSg1KTsKKworICAgIC8vIEFkZGluZyBjaGlsZHJlbiBpcyBhbiBpbnRlcm5hbCBvcGVyYXRp
b24gYW5kIHNob3VsZCBub3QgbWFyayBsYXllcnMgYXMgY2hhbmdlZC4KKyAgICBFWFBFQ1RfRkFM
U0Uocm9vdC0+bGF5ZXJIYXNDaGFuZ2VkKCkpOworICAgIEVYUEVDVF9GQUxTRShjaGlsZC0+bGF5
ZXJIYXNDaGFuZ2VkKCkpOworICAgIEVYUEVDVF9GQUxTRShncmFuZENoaWxkLT5sYXllckhhc0No
YW5nZWQoKSk7CisKKyAgICBGbG9hdFBvaW50IGFyYml0cmFyeUZsb2F0UG9pbnQgPSBGbG9hdFBv
aW50KDAuMTI1ZiwgMC4yNWYpOworICAgIGZsb2F0IGFyYml0cmFyeU51bWJlciA9IDAuMzUyZjsK
KyAgICBJbnRTaXplIGFyYml0cmFyeUludFNpemUgPSBJbnRTaXplKDExMSwgMjIyKTsKKyAgICBJ
bnRQb2ludCBhcmJpdHJhcnlJbnRQb2ludCA9IEludFBvaW50KDMzMywgNDQ0KTsKKyAgICBJbnRS
ZWN0IGFyYml0cmFyeUludFJlY3QgPSBJbnRSZWN0KGFyYml0cmFyeUludFBvaW50LCBhcmJpdHJh
cnlJbnRTaXplKTsKKyAgICBGbG9hdFJlY3QgYXJiaXRyYXJ5RmxvYXRSZWN0ID0gRmxvYXRSZWN0
KGFyYml0cmFyeUZsb2F0UG9pbnQsIEZsb2F0U2l6ZSgxLjIzNCwgNS42NzgpKTsKKyAgICBDb2xv
ciBhcmJpdHJhcnlDb2xvciA9IENvbG9yKDEwLCAyMCwgMzApOworICAgIFRyYW5zZm9ybWF0aW9u
TWF0cml4IGFyYml0cmFyeVRyYW5zZm9ybTsKKyAgICBhcmJpdHJhcnlUcmFuc2Zvcm0uc2NhbGUz
ZCgwLjEsIDAuMiwgMC4zKTsKKworICAgIC8vIENoYW5naW5nIHRoZXNlIHByb3BlcnRpZXMgYWZm
ZWN0cyB0aGUgZW50aXJlIHN1YnRyZWUgb2YgbGF5ZXJzLgorICAgIEVYRUNVVEVfQU5EX1ZFUklG
WV9TVUJUUkVFX0NIQU5HRUQocm9vdC0+c2V0QW5jaG9yUG9pbnQoYXJiaXRyYXJ5RmxvYXRQb2lu
dCkpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0NIQU5HRUQocm9vdC0+c2V0QW5j
aG9yUG9pbnRaKGFyYml0cmFyeU51bWJlcikpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJU
UkVFX0NIQU5HRUQocm9vdC0+c2V0TWFza0xheWVyKGR1bW15TWFzaykpOworICAgIEVYRUNVVEVf
QU5EX1ZFUklGWV9TVUJUUkVFX0NIQU5HRUQocm9vdC0+c2V0TWFza3NUb0JvdW5kcyh0cnVlKSk7
CisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfQ0hBTkdFRChyb290LT5zZXRPcGFjaXR5
KGFyYml0cmFyeU51bWJlcikpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0NIQU5H
RUQocm9vdC0+c2V0UmVwbGljYUxheWVyKGR1bW15UmVwbGljYSkpOworICAgIEVYRUNVVEVfQU5E
X1ZFUklGWV9TVUJUUkVFX0NIQU5HRUQocm9vdC0+c2V0UG9zaXRpb24oYXJiaXRyYXJ5RmxvYXRQ
b2ludCkpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0NIQU5HRUQocm9vdC0+c2V0
UHJlc2VydmVzM0QodHJ1ZSkpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0NIQU5H
RUQocm9vdC0+c2V0VHJhbnNmb3JtKGFyYml0cmFyeVRyYW5zZm9ybSkpOworICAgIEVYRUNVVEVf
QU5EX1ZFUklGWV9TVUJUUkVFX0NIQU5HRUQocm9vdC0+c2V0RG91YmxlU2lkZWQoZmFsc2UpKTsg
Ly8gY29uc3RydWN0b3IgaW5pdGlhbGl6ZXMgaXQgdG8gInRydWUiLgorICAgIEVYRUNVVEVfQU5E
X1ZFUklGWV9TVUJUUkVFX0NIQU5HRUQocm9vdC0+c2Nyb2xsQnkoYXJiaXRyYXJ5SW50U2l6ZSkp
OworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0NIQU5HRUQocm9vdC0+c2V0U2Nyb2xs
RGVsdGEoYXJiaXRyYXJ5SW50U2l6ZSkpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVF
X0NIQU5HRUQocm9vdC0+c2V0U2Nyb2xsUG9zaXRpb24oYXJiaXRyYXJ5SW50UG9pbnQpKTsKKwor
ICAgIC8vIENoYW5naW5nIHRoZXNlIHByb3BlcnRpZXMgb25seSBhZmZlY3RzIHRoZSBsYXllciBp
dHNlbGYuCisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX09OTFlfTEFZRVJfQ0hBTkdFRChyb290LT5z
ZXRDb250ZW50Qm91bmRzKGFyYml0cmFyeUludFNpemUpKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJ
RllfT05MWV9MQVlFUl9DSEFOR0VEKHJvb3QtPnNldERlYnVnQm9yZGVyQ29sb3IoYXJiaXRyYXJ5
Q29sb3IpKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllfT05MWV9MQVlFUl9DSEFOR0VEKHJvb3Qt
PnNldERlYnVnQm9yZGVyV2lkdGgoYXJiaXRyYXJ5TnVtYmVyKSk7CisgICAgRVhFQ1VURV9BTkRf
VkVSSUZZX09OTFlfTEFZRVJfQ0hBTkdFRChyb290LT5zZXREcmF3c0NvbnRlbnQodHJ1ZSkpOwor
CisgICAgLy8gU3BlY2lhbCBjYXNlOiBzdWJsYXllciB0cmFuc2Zvcm0gY2hhbmdlcyBhbGwgbGF5
ZXIncyBkZXNjZW5kYW50cywgYnV0IG5vdCB0aGUgbGF5ZXIgaXRzZWxmLgorICAgIEVYRUNVVEVf
QU5EX1ZFUklGWV9PTkxZX0RFU0NFTkRBTlRTX0NIQU5HRUQocm9vdC0+c2V0U3VibGF5ZXJUcmFu
c2Zvcm0oYXJiaXRyYXJ5VHJhbnNmb3JtKSk7CisKKyAgICAvLyBTcGVjaWFsIGNhc2U6IHNldEJv
dW5kcyBjaGFuZ2VzIGJlaGF2aW9yIGRlcGVuZGluZyBvbiBtYXNrc1RvQm91bmRzLgorICAgIHJv
b3QtPnNldE1hc2tzVG9Cb3VuZHMoZmFsc2UpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9PTkxZ
X0xBWUVSX0NIQU5HRUQocm9vdC0+c2V0Qm91bmRzKEludFNpemUoMTM1LCAyNDYpKSk7CisgICAg
cm9vdC0+c2V0TWFza3NUb0JvdW5kcyh0cnVlKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VC
VFJFRV9DSEFOR0VEKHJvb3QtPnNldEJvdW5kcyhhcmJpdHJhcnlJbnRTaXplKSk7IC8vIHNob3Vs
ZCBiZSBhIGRpZmZlcmVudCBzaXplIHRoYW4gcHJldmlvdXMgY2FsbCwgdG8gZW5zdXJlIGl0IG1h
cmtzIHRyZWUgY2hhbmdlZC4KKworICAgIC8vIEFmdGVyIHNldHRpbmcgYWxsIHRoZXNlIHByb3Bl
cnRpZXMgYWxyZWFkeSwgc2V0dGluZyB0byB0aGUgZXhhY3Qgc2FtZSB2YWx1ZXMgYWdhaW4gc2hv
dWxkCisgICAgLy8gbm90IGNhdXNlIGFueSBjaGFuZ2UuCisgICAgRVhFQ1VURV9BTkRfVkVSSUZZ
X1NVQlRSRUVfRElEX05PVF9DSEFOR0Uocm9vdC0+c2V0QW5jaG9yUG9pbnQoYXJiaXRyYXJ5Rmxv
YXRQb2ludCkpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0RJRF9OT1RfQ0hBTkdF
KHJvb3QtPnNldEFuY2hvclBvaW50WihhcmJpdHJhcnlOdW1iZXIpKTsKKyAgICBFWEVDVVRFX0FO
RF9WRVJJRllfU1VCVFJFRV9ESURfTk9UX0NIQU5HRShyb290LT5zZXRNYXNrTGF5ZXIoZHVtbXlN
YXNrKSk7CisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfRElEX05PVF9DSEFOR0Uocm9v
dC0+c2V0TWFza3NUb0JvdW5kcyh0cnVlKSk7CisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRS
RUVfRElEX05PVF9DSEFOR0Uocm9vdC0+c2V0UmVwbGljYUxheWVyKGR1bW15UmVwbGljYSkpOwor
ICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0RJRF9OT1RfQ0hBTkdFKHJvb3QtPnNldFBv
c2l0aW9uKGFyYml0cmFyeUZsb2F0UG9pbnQpKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VC
VFJFRV9ESURfTk9UX0NIQU5HRShyb290LT5zZXRQcmVzZXJ2ZXMzRCh0cnVlKSk7CisgICAgRVhF
Q1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfRElEX05PVF9DSEFOR0Uocm9vdC0+c2V0VHJhbnNmb3Jt
KGFyYml0cmFyeVRyYW5zZm9ybSkpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0RJ
RF9OT1RfQ0hBTkdFKHJvb3QtPnNldERvdWJsZVNpZGVkKGZhbHNlKSk7IC8vIGNvbnN0cnVjdG9y
IGluaXRpYWxpemVzIGl0IHRvICJ0cnVlIi4KKyAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJF
RV9ESURfTk9UX0NIQU5HRShyb290LT5zZXRTY3JvbGxEZWx0YShhcmJpdHJhcnlJbnRTaXplKSk7
CisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfRElEX05PVF9DSEFOR0Uocm9vdC0+c2V0
U2Nyb2xsUG9zaXRpb24oYXJiaXRyYXJ5SW50UG9pbnQpKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJ
RllfU1VCVFJFRV9ESURfTk9UX0NIQU5HRShyb290LT5zZXRDb250ZW50Qm91bmRzKGFyYml0cmFy
eUludFNpemUpKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9ESURfTk9UX0NIQU5H
RShyb290LT5zZXRPcGFjaXR5KGFyYml0cmFyeU51bWJlcikpOworICAgIEVYRUNVVEVfQU5EX1ZF
UklGWV9TVUJUUkVFX0RJRF9OT1RfQ0hBTkdFKHJvb3QtPnNldERlYnVnQm9yZGVyQ29sb3IoYXJi
aXRyYXJ5Q29sb3IpKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9ESURfTk9UX0NI
QU5HRShyb290LT5zZXREZWJ1Z0JvcmRlcldpZHRoKGFyYml0cmFyeU51bWJlcikpOworICAgIEVY
RUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0RJRF9OT1RfQ0hBTkdFKHJvb3QtPnNldERyYXdzQ29u
dGVudCh0cnVlKSk7CisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfRElEX05PVF9DSEFO
R0Uocm9vdC0+c2V0U3VibGF5ZXJUcmFuc2Zvcm0oYXJiaXRyYXJ5VHJhbnNmb3JtKSk7CisgICAg
RVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfRElEX05PVF9DSEFOR0Uocm9vdC0+c2V0Qm91bmRz
KGFyYml0cmFyeUludFNpemUpKTsKKworICAgIC8vIFRoZXNlIHByb3BlcnRpZXMgYXJlIGludGVy
bmFsLCBhbmQgc2hvdWxkIG5vdCBiZSBjb25zaWRlcmVkICJjaGFuZ2UiIHdoZW4gdGhleSBhcmUg
dXNlZC4KKyAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9ESURfTk9UX0NIQU5HRShyb290
LT5zZXRJc05vbkNvbXBvc2l0ZWRDb250ZW50KHRydWUpKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJ
RllfU1VCVFJFRV9ESURfTk9UX0NIQU5HRShyb290LT5zZXRTY2lzc29yUmVjdChhcmJpdHJhcnlJ
bnRSZWN0KSk7CisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfRElEX05PVF9DSEFOR0Uo
cm9vdC0+c2V0VXNlc0xheWVyU2Npc3Nvcih0cnVlKSk7CisgICAgRVhFQ1VURV9BTkRfVkVSSUZZ
X1NVQlRSRUVfRElEX05PVF9DSEFOR0Uocm9vdC0+c2V0RHJhd09wYWNpdHkoYXJiaXRyYXJ5TnVt
YmVyKSk7CisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfRElEX05PVF9DSEFOR0Uocm9v
dC0+c2V0VGFyZ2V0UmVuZGVyU3VyZmFjZSgwKSk7CisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NV
QlRSRUVfRElEX05PVF9DSEFOR0Uocm9vdC0+c2V0RHJhd1RyYW5zZm9ybShhcmJpdHJhcnlUcmFu
c2Zvcm0pKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9ESURfTk9UX0NIQU5HRShy
b290LT5zZXRTY3JlZW5TcGFjZVRyYW5zZm9ybShhcmJpdHJhcnlUcmFuc2Zvcm0pKTsKKyAgICBF
WEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9ESURfTk9UX0NIQU5HRShyb290LT5zZXREcmF3YWJs
ZUNvbnRlbnRSZWN0KGFyYml0cmFyeUludFJlY3QpKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllf
U1VCVFJFRV9ESURfTk9UX0NIQU5HRShyb290LT5zZXRVcGRhdGVSZWN0KGFyYml0cmFyeUZsb2F0
UmVjdCkpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0RJRF9OT1RfQ0hBTkdFKHJv
b3QtPnNldFZpc2libGVMYXllclJlY3QoYXJiaXRyYXJ5SW50UmVjdCkpOworICAgIEVYRUNVVEVf
QU5EX1ZFUklGWV9TVUJUUkVFX0RJRF9OT1RfQ0hBTkdFKHJvb3QtPnNldE1heFNjcm9sbFBvc2l0
aW9uKGFyYml0cmFyeUludFNpemUpKTsKK30KKworfSAvLyBuYW1lc3BhY2UK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112587</attachid>
            <date>2011-10-26 13:35:25 -0700</date>
            <delta_ts>2011-10-26 15:10:10 -0700</delta_ts>
            <desc>forgot to commit changes</desc>
            <filename>bug-70442-20111026133524.patch</filename>
            <type>text/plain</type>
            <size>25844</size>
            <attacher name="Shawn Singh">shawnsingh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTg0ODIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmNjBmYzFlNmNmYjNiZDNh
NjU2M2JmNDY1NzEzOGFkZTRkOTM1NWIzLi5jYmRjOWQ1YWQwZjk1OGVmODBkY2U2OTZhZDc2YTA1
MGZlMTU5N2I0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDYgQEAKKzIwMTEtMTAtMjYgIFNoYXdu
IFNpbmdoICA8c2hhd25zaW5naEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBU
cmFjayB3aGVuIENDTGF5ZXJJbXBsIHByb3BlcnRpZXMgaGF2ZSBjaGFuZ2VkLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA0NDIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBkZXRlcm1pbmUgYSBnb29k
IHNjaXNzb3IgcmVjdCwgd2UgbXVzdCBkZXRlcm1pbmUgd2hhdAorICAgICAgICB3aWxsIGNoYW5n
ZSBvbiB0aGUgc2NyZWVuIG9uIHRoZSBuZXh0IHJlZHJhdy4gIFRoaXMgcGF0Y2gKKyAgICAgICAg
dHJhY2tzIHRoZSBuZWNlc3NhcnkgaW5mb3JtYXRpb24gb24gQ0NMYXllckltcGwgYW5kIG1hcmtz
CisgICAgICAgIGEgZmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgdGhpcyBsYXllciB3aWxsICJkYW1h
Z2UiIHRoZSBzY3JlZW4uCisgICAgICAgIFRoZSBvdGhlciBwb3J0aW9uIG9mICJjaGFuZ2UiLCB0
aGUgdXBkYXRlUmVjdCwgd2FzIGFscmVhZHkKKyAgICAgICAgbGFuZGVkIGluIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTQ0MS4KKworICAgICAgICBOZXcgdW5pdCB0
ZXN0IGFkZGVkIHRvIENDTGF5ZXJJbXBsVGVzdCB0byB0ZXN0IHRoaXMgcGF0Y2guCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6Q0NMYXllckltcGwpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NMYXllckltcGw6OnNjcm9sbEJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBs
OjpzZXRMYXllckhhc0NoYW5nZWRGb3JTdWJ0cmVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5
ZXJJbXBsOjpzZXRMYXllckhhc0NoYW5nZWRGb3JEZXNjZW5kYW50cyk6CisgICAgICAgIChXZWJD
b3JlOjpDQ0xheWVySW1wbDo6c2V0Qm91bmRzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJ
bXBsOjpzZXRNYXNrTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OnNldFJl
cGxpY2FMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6c2V0RHJhd3NDb250
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpzZXRBbmNob3JQb2ludCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6c2V0QW5jaG9yUG9pbnRaKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpzZXRNYXNrc1RvQm91bmRzKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDTGF5ZXJJbXBsOjpzZXRPcGFjaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJ
bXBsOjpzZXRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6c2V0UHJl
c2VydmVzM0QpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OnNldFN1YmxheWVyVHJh
bnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpzZXRUcmFuc2Zvcm0pOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OnNldERlYnVnQm9yZGVyQ29sb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OnNldERlYnVnQm9yZGVyV2lkdGgpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OnNldENvbnRlbnRCb3VuZHMpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NMYXllckltcGw6OnNldFNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDTGF5ZXJJbXBsOjpzZXRTY3JvbGxEZWx0YSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVy
SW1wbDo6c2V0RG91YmxlU2lkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJJbXBsLmg6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6bGF5
ZXJIYXNDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpyZXNldExheWVy
SGFzQ2hhbmdlZCk6CisKIDIwMTEtMTAtMjYgIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuICA8
a2VubmV0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFByb3Blcmx5IHN1c3BlbmQvcmVzdW1lIEdl
b2xvY2F0aW9uL0RldmljZU1vdGlvbi9EZXZpY2VPcmllbnRhdGlvbiBvYmplY3RzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCmluZGV4IGFjZWU5MGZkOGI2YTNmZDk3MjEwMzllOWI0YmE4OTBkYTYw
OTlmZDUuLjhjZTdhMDZmNTUyMjZkYjJkY2IzOTNlYjU0NDY5NzhlYWYyNzMxNjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMTAtMjYgIFNoYXduIFNp
bmdoICA8c2hhd25zaW5naEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBUcmFj
ayB3aGVuIENDTGF5ZXJJbXBsIHByb3BlcnRpZXMgaGF2ZSBjaGFuZ2VkLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA0NDIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdC5neXBpOgorICAgICAg
ICAqIHRlc3RzL0NDTGF5ZXJJbXBsVGVzdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
VEVTVCk6CisKIDIwMTEtMTAtMjUgIFN0ZXBoZW4gV2hpdGUgIDxzZW5vcmJsYW5jb0BjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBDYW52YXMyRCBzaG91bGQgcmF0ZS1saW1pdCBk
cmF3aW5nIHRvIHByZXZlbnQgc3dhbXBpbmcgdGhlIEdQVSBwcm9jZXNzLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
ckltcGwuY3BwCmluZGV4IDJiMDVkOWZmMGQxN2UwMmJiNGVlN2Q4M2JiMGYzYjI0ZmNiNzVjZjMu
LjI4YTdhMGUxN2MxODNkZjYxZTNiOTViYWYzNzYzNzRiODMzNGJhZDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVySW1wbC5jcHAKQEAgLTM1LDYgKzM1LDI0IEBACiAjaW5jbHVkZSAiY2MvQ0NMYXllclNvcnRl
ci5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCisjZGVmaW5lIExBWUVSX0NI
QU5HRURfSUZfTk9UX0VRVUFMKG1lbWJlciwgbmV3dmFsdWUpICAgICAgIFwKKyAgICBpZiAoKG1l
bWJlcikgIT0gKG5ld3ZhbHVlKSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICAobWVtYmVyKSA9IChuZXd2YWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgIG1fbGF5ZXJIYXNDaGFuZ2VkID0gdHJ1ZTsgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICB9CisKKyNkZWZpbmUgU1VCVFJFRV9DSEFOR0VEX0lGX05PVF9FUVVBTChtZW1iZXIs
IG5ld3ZhbHVlKSAgICAgIFwKKyAgICBpZiAoKG1lbWJlcikgIT0gKG5ld3ZhbHVlKSkgeyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKG1lbWJlcikgPSAobmV3dmFsdWUpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgc2V0TGF5ZXJIYXNDaGFuZ2Vk
Rm9yU3VidHJlZSgpOyAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9CisKKyNkZWZpbmUgREVT
Q0VOREFOVFNfQ0hBTkdFRF9JRl9OT1RfRVFVQUwobWVtYmVyLCBuZXd2YWx1ZSkgICAgICAgICAg
XAorICAgIGlmICgobWVtYmVyKSAhPSAobmV3dmFsdWUpKSB7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgICAgIChtZW1iZXIpID0gKG5ld3ZhbHVlKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgc2V0TGF5ZXJIYXNDaGFuZ2Vk
Rm9yRGVzY2VuZGFudHMoKTsgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0KKwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBDQ0xheWVySW1wbDo6Q0NMYXllckltcGwoaW50IGlkKQpAQCAt
NDMsNiArNjEsNyBAQCBDQ0xheWVySW1wbDo6Q0NMYXllckltcGwoaW50IGlkKQogICAgICwgbV9h
bmNob3JQb2ludCgwLjUsIDAuNSkKICAgICAsIG1fYW5jaG9yUG9pbnRaKDApCiAgICAgLCBtX2Rv
dWJsZVNpZGVkKHRydWUpCisgICAgLCBtX2xheWVySGFzQ2hhbmdlZChmYWxzZSkKICAgICAsIG1f
bWFza3NUb0JvdW5kcyhmYWxzZSkKICAgICAsIG1fb3BhY2l0eSgxLjApCiAgICAgLCBtX3ByZXNl
cnZlczNEKGZhbHNlKQpAQCAtMTI1LDYgKzE0NCw3IEBAIHZvaWQgQ0NMYXllckltcGw6OnNjcm9s
bEJ5KGNvbnN0IEludFNpemUmIHNjcm9sbCkKICAgICBJbnRTaXplIG1heERlbHRhID0gbV9tYXhT
Y3JvbGxQb3NpdGlvbiAtIHRvU2l6ZShtX3Njcm9sbFBvc2l0aW9uKTsKICAgICAvLyBDbGFtcCBu
ZXdEZWx0YSBzbyB0aGF0IHBvc2l0aW9uICsgZGVsdGEgc3RheXMgd2l0aGluIHNjcm9sbCBib3Vu
ZHMuCiAgICAgbV9zY3JvbGxEZWx0YSA9IG5ld0RlbHRhLmV4cGFuZGVkVG8obWluRGVsdGEpLnNo
cnVua1RvKG1heERlbHRhKTsKKyAgICBzZXRMYXllckhhc0NoYW5nZWRGb3JTdWJ0cmVlKCk7CiB9
CiAKIHZvaWQgQ0NMYXllckltcGw6OmNsZWFudXBSZXNvdXJjZXMoKQpAQCAtMjIyLDYgKzI0Miwx
MTYgQEAgdm9pZCBDQ0xheWVySW1wbDo6ZHVtcExheWVyKFRleHRTdHJlYW0mIHRzLCBpbnQgaW5k
ZW50KSBjb25zdAogICAgICAgICBtX2NoaWxkcmVuW2ldLT5kdW1wTGF5ZXIodHMsIGluZGVudCsx
KTsKIH0KIAordm9pZCBDQ0xheWVySW1wbDo6c2V0TGF5ZXJIYXNDaGFuZ2VkRm9yU3VidHJlZSgp
Cit7CisgICAgbV9sYXllckhhc0NoYW5nZWQgPSB0cnVlOworICAgIHNldExheWVySGFzQ2hhbmdl
ZEZvckRlc2NlbmRhbnRzKCk7Cit9CisKK3ZvaWQgQ0NMYXllckltcGw6OnNldExheWVySGFzQ2hh
bmdlZEZvckRlc2NlbmRhbnRzKCkKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fY2hp
bGRyZW4uc2l6ZSgpOyArK2kpCisgICAgICAgIG1fY2hpbGRyZW5baV0tPnNldExheWVySGFzQ2hh
bmdlZEZvclN1YnRyZWUoKTsKK30KKwordm9pZCBDQ0xheWVySW1wbDo6c2V0Qm91bmRzKGNvbnN0
IEludFNpemUmIGJvdW5kcykKK3sKKyAgICBpZiAobV9ib3VuZHMgIT0gYm91bmRzKSB7CisgICAg
ICAgIG1fYm91bmRzID0gYm91bmRzOworCisgICAgICAgIC8vIG1hc2tzVG9Cb3VuZHMgbWVhbnMg
dGhhdCB0aGVzZSBib3VuZHMgYWZmZWN0IHRoZSBlbnRpcmUgc3VidHJlZSwgbm90IGp1c3QgdGhp
cyBsYXllci4KKyAgICAgICAgaWYgKG1hc2tzVG9Cb3VuZHMoKSkKKyAgICAgICAgICAgIHNldExh
eWVySGFzQ2hhbmdlZEZvclN1YnRyZWUoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9s
YXllckhhc0NoYW5nZWQgPSB0cnVlOworICAgIH0KK30KKwordm9pZCBDQ0xheWVySW1wbDo6c2V0
TWFza0xheWVyKFBhc3NSZWZQdHI8Q0NMYXllckltcGw+IG1hc2tMYXllcikKK3sKKyAgICBTVUJU
UkVFX0NIQU5HRURfSUZfTk9UX0VRVUFMKG1fbWFza0xheWVyLCBtYXNrTGF5ZXIpOworfQorCit2
b2lkIENDTGF5ZXJJbXBsOjpzZXRSZXBsaWNhTGF5ZXIoUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4g
cmVwbGljYUxheWVyKQoreworICAgIFNVQlRSRUVfQ0hBTkdFRF9JRl9OT1RfRVFVQUwobV9yZXBs
aWNhTGF5ZXIsIHJlcGxpY2FMYXllcik7Cit9CisKK3ZvaWQgQ0NMYXllckltcGw6OnNldERyYXdz
Q29udGVudChib29sIGRyYXdzQ29udGVudCkKK3sKKyAgICBMQVlFUl9DSEFOR0VEX0lGX05PVF9F
UVVBTChtX2RyYXdzQ29udGVudCwgZHJhd3NDb250ZW50KTsKK30KKwordm9pZCBDQ0xheWVySW1w
bDo6c2V0QW5jaG9yUG9pbnQoY29uc3QgRmxvYXRQb2ludCYgYW5jaG9yUG9pbnQpCit7CisgICAg
U1VCVFJFRV9DSEFOR0VEX0lGX05PVF9FUVVBTChtX2FuY2hvclBvaW50LCBhbmNob3JQb2ludCk7
Cit9CisKK3ZvaWQgQ0NMYXllckltcGw6OnNldEFuY2hvclBvaW50WihmbG9hdCBhbmNob3JQb2lu
dFopCit7CisgICAgU1VCVFJFRV9DSEFOR0VEX0lGX05PVF9FUVVBTChtX2FuY2hvclBvaW50Wiwg
YW5jaG9yUG9pbnRaKTsKK30KKwordm9pZCBDQ0xheWVySW1wbDo6c2V0TWFza3NUb0JvdW5kcyhi
b29sIG1hc2tzVG9Cb3VuZHMpCit7CisgICAgU1VCVFJFRV9DSEFOR0VEX0lGX05PVF9FUVVBTCht
X21hc2tzVG9Cb3VuZHMsIG1hc2tzVG9Cb3VuZHMpOworfQorCit2b2lkIENDTGF5ZXJJbXBsOjpz
ZXRPcGFjaXR5KGZsb2F0IG9wYWNpdHkpCit7CisgICAgU1VCVFJFRV9DSEFOR0VEX0lGX05PVF9F
UVVBTChtX29wYWNpdHksIG9wYWNpdHkpOworfQorCit2b2lkIENDTGF5ZXJJbXBsOjpzZXRQb3Np
dGlvbihjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbikKK3sKKyAgICBTVUJUUkVFX0NIQU5HRURf
SUZfTk9UX0VRVUFMKG1fcG9zaXRpb24sIHBvc2l0aW9uKTsKK30KKwordm9pZCBDQ0xheWVySW1w
bDo6c2V0UHJlc2VydmVzM0QoYm9vbCBwcmVzZXJ2ZXMzRCkKK3sKKyAgICBTVUJUUkVFX0NIQU5H
RURfSUZfTk9UX0VRVUFMKG1fcHJlc2VydmVzM0QsIHByZXNlcnZlczNEKTsKK30KKwordm9pZCBD
Q0xheWVySW1wbDo6c2V0U3VibGF5ZXJUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIHN1YmxheWVyVHJhbnNmb3JtKQoreworICAgIERFU0NFTkRBTlRTX0NIQU5HRURfSUZfTk9U
X0VRVUFMKG1fc3VibGF5ZXJUcmFuc2Zvcm0sIHN1YmxheWVyVHJhbnNmb3JtKTsKK30KKwordm9p
ZCBDQ0xheWVySW1wbDo6c2V0VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0
cmFuc2Zvcm0pCit7CisgICAgU1VCVFJFRV9DSEFOR0VEX0lGX05PVF9FUVVBTChtX3RyYW5zZm9y
bSwgdHJhbnNmb3JtKTsKK30KKwordm9pZCBDQ0xheWVySW1wbDo6c2V0RGVidWdCb3JkZXJDb2xv
cihDb2xvciBjKQoreworICAgIExBWUVSX0NIQU5HRURfSUZfTk9UX0VRVUFMKG1fZGVidWdCb3Jk
ZXJDb2xvciwgYyk7Cit9CisKK3ZvaWQgQ0NMYXllckltcGw6OnNldERlYnVnQm9yZGVyV2lkdGgo
ZmxvYXQgd2lkdGgpCit7CisgICAgTEFZRVJfQ0hBTkdFRF9JRl9OT1RfRVFVQUwobV9kZWJ1Z0Jv
cmRlcldpZHRoLCB3aWR0aCk7Cit9CisKK3ZvaWQgQ0NMYXllckltcGw6OnNldENvbnRlbnRCb3Vu
ZHMoY29uc3QgSW50U2l6ZSYgY29udGVudEJvdW5kcykKK3sKKyAgICBMQVlFUl9DSEFOR0VEX0lG
X05PVF9FUVVBTChtX2NvbnRlbnRCb3VuZHMsIGNvbnRlbnRCb3VuZHMpOworfQorCit2b2lkIEND
TGF5ZXJJbXBsOjpzZXRTY3JvbGxQb3NpdGlvbihjb25zdCBJbnRQb2ludCYgc2Nyb2xsUG9zaXRp
b24pCit7CisgICAgU1VCVFJFRV9DSEFOR0VEX0lGX05PVF9FUVVBTChtX3Njcm9sbFBvc2l0aW9u
LCBzY3JvbGxQb3NpdGlvbik7Cit9CisKK3ZvaWQgQ0NMYXllckltcGw6OnNldFNjcm9sbERlbHRh
KGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhKQoreworICAgIFNVQlRSRUVfQ0hBTkdFRF9JRl9O
T1RfRVFVQUwobV9zY3JvbGxEZWx0YSwgc2Nyb2xsRGVsdGEpOworfQorCit2b2lkIENDTGF5ZXJJ
bXBsOjpzZXREb3VibGVTaWRlZChib29sIGRvdWJsZVNpZGVkKQoreworICAgIFNVQlRSRUVfQ0hB
TkdFRF9JRl9OT1RfRVFVQUwobV9kb3VibGVTaWRlZCwgZG91YmxlU2lkZWQpOworfQorCiB9CiAK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJJbXBsLmgKaW5kZXggMzljNmY4ZTEwYmEwZjg3N2I5MmFmYTEzMGY0MTE4
NDM0ZmE1ZWNhNC4uYWZmZDJlOGUxNjNhYzRiOThlMmE0MzJmYjE5MGE3YTJmYjdhMzFhYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVySW1wbC5oCkBAIC01OCwxMCArNTgsMTAgQEAgcHVibGljOgogICAgIHZvaWQg
cmVtb3ZlRnJvbVBhcmVudCgpOwogICAgIHZvaWQgcmVtb3ZlQWxsQ2hpbGRyZW4oKTsKIAotICAg
IHZvaWQgc2V0TWFza0xheWVyKFBhc3NSZWZQdHI8Q0NMYXllckltcGw+IG1hc2tMYXllcikgeyBt
X21hc2tMYXllciA9IG1hc2tMYXllcjsgfQorICAgIHZvaWQgc2V0TWFza0xheWVyKFBhc3NSZWZQ
dHI8Q0NMYXllckltcGw+KTsKICAgICBDQ0xheWVySW1wbCogbWFza0xheWVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9tYXNrTGF5ZXIuZ2V0KCk7IH0KIAotICAgIHZvaWQgc2V0UmVwbGljYUxheWVyKFBh
c3NSZWZQdHI8Q0NMYXllckltcGw+IHJlcGxpY2FMYXllcikgeyBtX3JlcGxpY2FMYXllciA9IHJl
cGxpY2FMYXllcjsgfQorICAgIHZvaWQgc2V0UmVwbGljYUxheWVyKFBhc3NSZWZQdHI8Q0NMYXll
ckltcGw+KTsKICAgICBDQ0xheWVySW1wbCogcmVwbGljYUxheWVyKCkgY29uc3QgeyByZXR1cm4g
bV9yZXBsaWNhTGF5ZXIuZ2V0KCk7IH0KIAogICAgIGludCBpZCgpIGNvbnN0IHsgcmV0dXJuIG1f
bGF5ZXJJZDsgfQpAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGJp
bmRDb250ZW50c1RleHR1cmUoTGF5ZXJSZW5kZXJlckNocm9taXVtKik7CiAKICAgICAvLyBSZXR1
cm5zIHRydWUgaWYgdGhpcyBsYXllciBoYXMgY29udGVudCB0byBkcmF3LgotICAgIHZvaWQgc2V0
RHJhd3NDb250ZW50KGJvb2wgZHJhd3NDb250ZW50KSB7IG1fZHJhd3NDb250ZW50ID0gZHJhd3ND
b250ZW50OyB9CisgICAgdm9pZCBzZXREcmF3c0NvbnRlbnQoYm9vbCk7CiAgICAgYm9vbCBkcmF3
c0NvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX2RyYXdzQ29udGVudDsgfQogCiAgICAgLy8gUmV0
dXJucyB0cnVlIGlmIGFueSBvZiB0aGUgbGF5ZXIncyBkZXNjZW5kYW50cyBoYXMgY29udGVudCB0
byBkcmF3LgpAQCAtODMsMjIgKzgzLDIyIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xlYW51cFJl
c291cmNlcygpOwogCi0gICAgdm9pZCBzZXRBbmNob3JQb2ludChjb25zdCBGbG9hdFBvaW50JiBh
bmNob3JQb2ludCkgeyBtX2FuY2hvclBvaW50ID0gYW5jaG9yUG9pbnQ7IH0KKyAgICB2b2lkIHNl
dEFuY2hvclBvaW50KGNvbnN0IEZsb2F0UG9pbnQmKTsKICAgICBjb25zdCBGbG9hdFBvaW50JiBh
bmNob3JQb2ludCgpIGNvbnN0IHsgcmV0dXJuIG1fYW5jaG9yUG9pbnQ7IH0KIAotICAgIHZvaWQg
c2V0QW5jaG9yUG9pbnRaKGZsb2F0IGFuY2hvclBvaW50WikgeyBtX2FuY2hvclBvaW50WiA9IGFu
Y2hvclBvaW50WjsgfQorICAgIHZvaWQgc2V0QW5jaG9yUG9pbnRaKGZsb2F0KTsKICAgICBmbG9h
dCBhbmNob3JQb2ludFooKSBjb25zdCB7IHJldHVybiBtX2FuY2hvclBvaW50WjsgfQogCi0gICAg
dm9pZCBzZXRNYXNrc1RvQm91bmRzKGJvb2wgbWFza3NUb0JvdW5kcykgeyBtX21hc2tzVG9Cb3Vu
ZHMgPSBtYXNrc1RvQm91bmRzOyB9CisgICAgdm9pZCBzZXRNYXNrc1RvQm91bmRzKGJvb2wpOwog
ICAgIGJvb2wgbWFza3NUb0JvdW5kcygpIGNvbnN0IHsgcmV0dXJuIG1fbWFza3NUb0JvdW5kczsg
fQogCi0gICAgdm9pZCBzZXRPcGFjaXR5KGZsb2F0IG9wYWNpdHkpIHsgbV9vcGFjaXR5ID0gb3Bh
Y2l0eTsgfQorICAgIHZvaWQgc2V0T3BhY2l0eShmbG9hdCk7CiAgICAgZmxvYXQgb3BhY2l0eSgp
IGNvbnN0IHsgcmV0dXJuIG1fb3BhY2l0eTsgfQogCi0gICAgdm9pZCBzZXRQb3NpdGlvbihjb25z
dCBGbG9hdFBvaW50JiBwb3NpdGlvbikgeyBtX3Bvc2l0aW9uID0gcG9zaXRpb247IH0KKyAgICB2
b2lkIHNldFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmKTsKICAgICBjb25zdCBGbG9hdFBvaW50
JiBwb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb247IH0KIAotICAgIHZvaWQgc2V0
UHJlc2VydmVzM0QoYm9vbCBwcmVzZXJ2ZXMzRCkgeyBtX3ByZXNlcnZlczNEID0gcHJlc2VydmVz
M0Q7IH0KKyAgICB2b2lkIHNldFByZXNlcnZlczNEKGJvb2wpOwogICAgIGJvb2wgcHJlc2VydmVz
M0QoKSBjb25zdCB7IHJldHVybiBtX3ByZXNlcnZlczNEOyB9CiAKICAgICB2b2lkIHNldFVzZXNM
YXllclNjaXNzb3IoYm9vbCB1c2VzTGF5ZXJTY2lzc29yKSB7IG1fdXNlc0xheWVyU2Npc3NvciA9
IHVzZXNMYXllclNjaXNzb3I7IH0KQEAgLTEwNywxOSArMTA3LDE5IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldElzTm9uQ29tcG9zaXRlZENvbnRlbnQoYm9vbCBpc05vbkNvbXBvc2l0ZWRDb250ZW50
KSB7IG1faXNOb25Db21wb3NpdGVkQ29udGVudCA9IGlzTm9uQ29tcG9zaXRlZENvbnRlbnQ7IH0K
ICAgICBib29sIGlzTm9uQ29tcG9zaXRlZENvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX2lzTm9u
Q29tcG9zaXRlZENvbnRlbnQ7IH0KIAotICAgIHZvaWQgc2V0U3VibGF5ZXJUcmFuc2Zvcm0oY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHN1YmxheWVyVHJhbnNmb3JtKSB7IG1fc3VibGF5ZXJU
cmFuc2Zvcm0gPSBzdWJsYXllclRyYW5zZm9ybTsgfQorICAgIHZvaWQgc2V0U3VibGF5ZXJUcmFu
c2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKTsKICAgICBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgc3VibGF5ZXJUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX3N1YmxheWVy
VHJhbnNmb3JtOyB9CiAKLSAgICB2b2lkIHNldFRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgdHJhbnNmb3JtKSB7IG1fdHJhbnNmb3JtID0gdHJhbnNmb3JtOyB9CisgICAgdm9p
ZCBzZXRUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKTsKICAgICBjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV90cmFuc2Zv
cm07IH0KIAogICAgIHZvaWQgc2V0TmFtZShjb25zdCBTdHJpbmcmIG5hbWUpIHsgbV9uYW1lID0g
bmFtZTsgfQogICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsg
fQogCiAgICAgLy8gRGVidWcgbGF5ZXIgYm9yZGVyIC0gdmlzdWFsIGVmZmVjdCBvbmx5LCBkbyBu
b3QgY2hhbmdlIGdlb21ldHJ5L2NsaXBwaW5nL2V0Yy4KLSAgICB2b2lkIHNldERlYnVnQm9yZGVy
Q29sb3IoQ29sb3IgYykgeyBtX2RlYnVnQm9yZGVyQ29sb3IgPSBjOyB9CisgICAgdm9pZCBzZXRE
ZWJ1Z0JvcmRlckNvbG9yKENvbG9yKTsKICAgICBDb2xvciBkZWJ1Z0JvcmRlckNvbG9yKCkgY29u
c3QgeyByZXR1cm4gbV9kZWJ1Z0JvcmRlckNvbG9yOyB9Ci0gICAgdm9pZCBzZXREZWJ1Z0JvcmRl
cldpZHRoKGZsb2F0IHdpZHRoKSB7IG1fZGVidWdCb3JkZXJXaWR0aCA9IHdpZHRoOyB9CisgICAg
dm9pZCBzZXREZWJ1Z0JvcmRlcldpZHRoKGZsb2F0KTsKICAgICBmbG9hdCBkZWJ1Z0JvcmRlcldp
ZHRoKCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z0JvcmRlcldpZHRoOyB9CiAKICAgICB2b2lkIGRy
YXdEZWJ1Z0JvcmRlcihMYXllclJlbmRlcmVyQ2hyb21pdW0qKTsKQEAgLTEzNywxOSArMTM3LDE5
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFRhcmdldFJlbmRlclN1cmZhY2UoQ0NSZW5kZXJTdXJm
YWNlKiBzdXJmYWNlKSB7IG1fdGFyZ2V0UmVuZGVyU3VyZmFjZSA9IHN1cmZhY2U7IH0KIAogICAg
IGNvbnN0IEludFNpemUmIGJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRzOyB9Ci0gICAg
dm9pZCBzZXRCb3VuZHMoY29uc3QgSW50U2l6ZSYgYm91bmRzKSB7IG1fYm91bmRzID0gYm91bmRz
OyB9CisgICAgdm9pZCBzZXRCb3VuZHMoY29uc3QgSW50U2l6ZSYpOwogCiAgICAgY29uc3QgSW50
U2l6ZSYgY29udGVudEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudEJvdW5kczsgfQot
ICAgIHZvaWQgc2V0Q29udGVudEJvdW5kcyhjb25zdCBJbnRTaXplJiBjb250ZW50Qm91bmRzKSB7
IG1fY29udGVudEJvdW5kcyA9IGNvbnRlbnRCb3VuZHM7IH0KKyAgICB2b2lkIHNldENvbnRlbnRC
b3VuZHMoY29uc3QgSW50U2l6ZSYpOwogCiAgICAgY29uc3QgSW50UG9pbnQmIHNjcm9sbFBvc2l0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxQb3NpdGlvbjsgfQotICAgIHZvaWQgc2V0U2Ny
b2xsUG9zaXRpb24oY29uc3QgSW50UG9pbnQmIHNjcm9sbFBvc2l0aW9uKSB7IG1fc2Nyb2xsUG9z
aXRpb24gPSBzY3JvbGxQb3NpdGlvbjsgfQorICAgIHZvaWQgc2V0U2Nyb2xsUG9zaXRpb24oY29u
c3QgSW50UG9pbnQmKTsKIAogICAgIGNvbnN0IEludFNpemUmIG1heFNjcm9sbFBvc2l0aW9uKCkg
Y29uc3Qge3JldHVybiBtX21heFNjcm9sbFBvc2l0aW9uOyB9CiAgICAgdm9pZCBzZXRNYXhTY3Jv
bGxQb3NpdGlvbihjb25zdCBJbnRTaXplJiBtYXhTY3JvbGxQb3NpdGlvbikgeyBtX21heFNjcm9s
bFBvc2l0aW9uID0gbWF4U2Nyb2xsUG9zaXRpb247IH0KIAogICAgIGNvbnN0IEludFNpemUmIHNj
cm9sbERlbHRhKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxEZWx0YTsgfQotICAgIHZvaWQgc2V0
U2Nyb2xsRGVsdGEoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEpIHsgbV9zY3JvbGxEZWx0YSA9
IHNjcm9sbERlbHRhOyB9CisgICAgdm9pZCBzZXRTY3JvbGxEZWx0YShjb25zdCBJbnRTaXplJik7
CiAKICAgICB2b2lkIHNjcm9sbEJ5KGNvbnN0IEludFNpemUmIHNjcm9sbCk7CiAgICAgYm9vbCBz
Y3JvbGxhYmxlKCkgY29uc3QgeyByZXR1cm4gIW1heFNjcm9sbFBvc2l0aW9uKCkuaXNaZXJvKCk7
IH0KQEAgLTE1OCw3ICsxNTgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRWaXNpYmxlTGF5ZXJS
ZWN0KGNvbnN0IEludFJlY3QmIHZpc2libGVMYXllclJlY3QpIHsgbV92aXNpYmxlTGF5ZXJSZWN0
ID0gdmlzaWJsZUxheWVyUmVjdDsgfQogCiAgICAgYm9vbCBkb3VibGVTaWRlZCgpIGNvbnN0IHsg
cmV0dXJuIG1fZG91YmxlU2lkZWQ7IH0KLSAgICB2b2lkIHNldERvdWJsZVNpZGVkKGJvb2wgZG91
YmxlU2lkZWQpIHsgbV9kb3VibGVTaWRlZCA9IGRvdWJsZVNpZGVkOyB9CisgICAgdm9pZCBzZXRE
b3VibGVTaWRlZChib29sKTsKIAogICAgIC8vIFJldHVybnMgdGhlIHJlY3QgY29udGFpbnRhaW5p
bmcgdGhpcyBsYXllciBpbiB0aGUgY3VycmVudCB2aWV3J3MgY29vcmRpbmF0ZSBzeXN0ZW0uCiAg
ICAgY29uc3QgSW50UmVjdCBnZXREcmF3UmVjdCgpIGNvbnN0OwpAQCAtMTc0LDYgKzE3NCw5IEBA
IHB1YmxpYzoKIAogICAgIFN0cmluZyBsYXllclRyZWVBc1RleHQoKSBjb25zdDsKIAorICAgIGJv
b2wgbGF5ZXJIYXNDaGFuZ2VkKCkgY29uc3QgeyByZXR1cm4gbV9sYXllckhhc0NoYW5nZWQ7IH0K
KyAgICB2b2lkIHJlc2V0TGF5ZXJIYXNDaGFuZ2VkKCkgeyBtX2xheWVySGFzQ2hhbmdlZCA9IGZh
bHNlOyB9CisKIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBDQ0xheWVySW1wbChpbnQpOwogCkBA
IC0xODUsNiArMTg4LDExIEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFRyZWVTeW5jaHJv
bml6ZXI7CiAgICAgdm9pZCBjbGVhckNoaWxkTGlzdCgpOyAvLyBXYXJuaW5nOiBUaGlzIGRvZXMg
bm90IHByZXNlcnZlIHRyZWUgc3RydWN0dXJlIGludmFyaWFudHMgYW5kIHNvIGlzIG9ubHkgZXhw
b3NlZCB0byB0aGUgdHJlZSBzeW5jaHJvbml6ZXIuCiAKKyAgICB2b2lkIHNldExheWVySGFzQ2hh
bmdlZEZvclN1YnRyZWUoKTsKKworICAgIC8vIE5vdGUgY2FyZWZ1bGx5IHRoaXMgZG9lcyBub3Qg
YWZmZWN0IHRoZSBjdXJyZW50IGxheWVyLgorICAgIHZvaWQgc2V0TGF5ZXJIYXNDaGFuZ2VkRm9y
RGVzY2VuZGFudHMoKTsKKwogICAgIHZpcnR1YWwgY29uc3QgY2hhciogbGF5ZXJUeXBlQXNTdHJp
bmcoKSBjb25zdCB7IHJldHVybiAiTGF5ZXJDaHJvbWl1bSI7IH0KIAogICAgIHZvaWQgZHVtcExh
eWVyKFRleHRTdHJlYW0mLCBpbnQgaW5kZW50KSBjb25zdDsKQEAgLTIwNyw2ICsyMTUsOSBAQCBw
cml2YXRlOgogICAgIC8vIFdoZXRoZXIgdGhlICJiYWNrIiBvZiB0aGlzIGxheWVyIHNob3VsZCBk
cmF3LgogICAgIGJvb2wgbV9kb3VibGVTaWRlZDsKIAorICAgIC8vIFRyYWNrcyBpZiBkcmF3aW5n
LXJlbGF0ZWQgcHJvcGVydGllcyBoYXZlIGNoYW5nZWQgc2luY2UgbGFzdCByZWRyYXcuCisgICAg
Ym9vbCBtX2xheWVySGFzQ2hhbmdlZDsKKwogICAgIEludFJlY3QgbV92aXNpYmxlTGF5ZXJSZWN0
OwogICAgIGJvb2wgbV9tYXNrc1RvQm91bmRzOwogICAgIGZsb2F0IG1fb3BhY2l0eTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL1dlYktpdC5neXBpCmluZGV4IGE0ODkxZmFiMTc5ZjAyYWZkNjRkZjFhMTBhMDE2
Mjc0MTQ2ZWNiNmIuLjMzMzEzNWY5MzE1MGZjNTZjYzFhODg4MzA2NDQ2MTQyYzNjYzFlNzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQpAQCAtNTQsNiArNTQsNyBAQAogICAgICAgICAn
d2Via2l0X3VuaXR0ZXN0X2ZpbGVzJzogWwogICAgICAgICAgICAgJ3Rlc3RzL0FyZW5hVGVzdEhl
bHBlcnMuaCcsCiAgICAgICAgICAgICAndGVzdHMvQXNzb2NpYXRlZFVSTExvYWRlclRlc3QuY3Bw
JywKKyAgICAgICAgICAgICd0ZXN0cy9DQ0xheWVySW1wbFRlc3QuY3BwJywKICAgICAgICAgICAg
ICd0ZXN0cy9DQ0xheWVyU29ydGVyVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0NDTGF5
ZXJUcmVlSG9zdENvbW1vblRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9DQ0xheWVyVHJl
ZUhvc3RJbXBsVGVzdC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ0xheWVySW1wbFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q0xheWVySW1wbFRlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRlOTM1NmQxYTY5MTJiYTZmYWYwODNjODJk
Njg4MmExOTljZDFmNTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDTGF5ZXJJbXBsVGVzdC5jcHAKQEAgLTAsMCArMSwxNzIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
CisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgImNjL0NDTGF5ZXJJbXBsLmgiCisK
KyNpbmNsdWRlICJjYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgiCisjaW5jbHVkZSA8Z21vY2svZ21v
Y2suaD4KKyNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKKworbmFtZXNwYWNlIHsKKworI2RlZmluZSBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9D
SEFOR0VEKGNvZGVUb1Rlc3QpICAgICAgICAgICAgICAgICAgXAorICAgIHJvb3QtPnJlc2V0TGF5
ZXJIYXNDaGFuZ2VkKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgIGNoaWxkLT5yZXNldExheWVySGFzQ2hhbmdlZCgpOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgIGdyYW5kQ2hpbGQtPnJlc2V0TGF5ZXJIYXNDaGFuZ2VkKCk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNvZGVUb1Rlc3Q7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
IEVYUEVDVF9UUlVFKHJvb3QtPmxheWVySGFzQ2hhbmdlZCgpKTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgIEVYUEVDVF9UUlVFKGNoaWxkLT5sYXllckhhc0NoYW5nZWQoKSk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEVYUEVDVF9UUlVFKGdyYW5kQ2hp
bGQtPmxheWVySGFzQ2hhbmdlZCgpKQorCisjZGVmaW5lIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJU
UkVFX0RJRF9OT1RfQ0hBTkdFKGNvZGVUb1Rlc3QpICAgICAgICAgICBcCisgICAgcm9vdC0+cmVz
ZXRMYXllckhhc0NoYW5nZWQoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgY2hpbGQtPnJlc2V0TGF5ZXJIYXNDaGFuZ2VkKCk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgZ3JhbmRDaGlsZC0+cmVzZXRMYXllckhhc0NoYW5n
ZWQoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY29kZVRvVGVzdDsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgRVhQRUNUX0ZBTFNFKHJvb3QtPmxheWVySGFzQ2hhbmdlZCgpKTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgRVhQRUNUX0ZBTFNFKGNoaWxkLT5sYXllckhhc0NoYW5n
ZWQoKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRVhQRUNUX0ZBTFNFKGdy
YW5kQ2hpbGQtPmxheWVySGFzQ2hhbmdlZCgpKQorCisjZGVmaW5lIEVYRUNVVEVfQU5EX1ZFUklG
WV9PTkxZX0xBWUVSX0NIQU5HRUQoY29kZVRvVGVzdCkgICAgICAgICAgICAgICBcCisgICAgcm9v
dC0+cmVzZXRMYXllckhhc0NoYW5nZWQoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgY2hpbGQtPnJlc2V0TGF5ZXJIYXNDaGFuZ2VkKCk7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZ3JhbmRDaGlsZC0+cmVzZXRMYXllckhh
c0NoYW5nZWQoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY29kZVRv
VGVzdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgRVhQRUNUX1RSVUUocm9vdC0+bGF5ZXJIYXNDaGFuZ2VkKCkpOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRVhQRUNUX0ZBTFNFKGNoaWxkLT5sYXllckhh
c0NoYW5nZWQoKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRVhQRUNUX0ZB
TFNFKGdyYW5kQ2hpbGQtPmxheWVySGFzQ2hhbmdlZCgpKQorCisjZGVmaW5lIEVYRUNVVEVfQU5E
X1ZFUklGWV9PTkxZX0RFU0NFTkRBTlRTX0NIQU5HRUQoY29kZVRvVGVzdCkgICAgICAgICBcCisg
ICAgcm9vdC0+cmVzZXRMYXllckhhc0NoYW5nZWQoKTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgY2hpbGQtPnJlc2V0TGF5ZXJIYXNDaGFuZ2VkKCk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZ3JhbmRDaGlsZC0+cmVzZXRM
YXllckhhc0NoYW5nZWQoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
Y29kZVRvVGVzdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgRVhQRUNUX0ZBTFNFKHJvb3QtPmxheWVySGFzQ2hhbmdlZCgpKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRVhQRUNUX1RSVUUoY2hpbGQtPmxh
eWVySGFzQ2hhbmdlZCgpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRVhQ
RUNUX1RSVUUoZ3JhbmRDaGlsZC0+bGF5ZXJIYXNDaGFuZ2VkKCkpCisKK1RFU1QoQ0NMYXllcklt
cGxUZXN0LCB2ZXJpZnlMYXllckNoYW5nZXNBcmVUcmFja2VkUHJvcGVybHkpCit7CisgICAgLy8K
KyAgICAvLyBUaGlzIHRlc3QgY2hlY2tzIHRoYXQgbGF5ZXJIYXNDaGFuZ2VkKCkgaGFzIHRoZSBj
b3JyZWN0IGJlaGF2aW9yLgorICAgIC8vCisKKyAgICAvLyBUaGUgY29uc3RydWN0b3Igb24gdGhp
cyB3aWxsIGZha2UgdGhhdCB3ZSBhcmUgb24gdGhlIGNvcnJlY3QgdGhyZWFkLgorICAgIERlYnVn
U2NvcGVkU2V0SW1wbFRocmVhZCBzZXRJbXBsVGhyZWFkOworCisgICAgLy8gQ3JlYXRlIGEgc2lt
cGxlIENDTGF5ZXJJbXBsIHRyZWU6CisgICAgUmVmUHRyPENDTGF5ZXJJbXBsPiByb290ID0gQ0NM
YXllckltcGw6OmNyZWF0ZSgxKTsKKyAgICBSZWZQdHI8Q0NMYXllckltcGw+IGNoaWxkID0gQ0NM
YXllckltcGw6OmNyZWF0ZSgyKTsKKyAgICBSZWZQdHI8Q0NMYXllckltcGw+IGdyYW5kQ2hpbGQg
PSBDQ0xheWVySW1wbDo6Y3JlYXRlKDMpOworICAgIHJvb3QtPmFkZENoaWxkKGNoaWxkKTsKKyAg
ICBjaGlsZC0+YWRkQ2hpbGQoZ3JhbmRDaGlsZCk7CisKKyAgICBSZWZQdHI8Q0NMYXllckltcGw+
IGR1bW15TWFzayA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoNCk7CisgICAgUmVmUHRyPENDTGF5ZXJJ
bXBsPiBkdW1teVJlcGxpY2EgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDUpOworCisgICAgLy8gQWRk
aW5nIGNoaWxkcmVuIGlzIGFuIGludGVybmFsIG9wZXJhdGlvbiBhbmQgc2hvdWxkIG5vdCBtYXJr
IGxheWVycyBhcyBjaGFuZ2VkLgorICAgIEVYUEVDVF9GQUxTRShyb290LT5sYXllckhhc0NoYW5n
ZWQoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGNoaWxkLT5sYXllckhhc0NoYW5nZWQoKSk7CisgICAg
RVhQRUNUX0ZBTFNFKGdyYW5kQ2hpbGQtPmxheWVySGFzQ2hhbmdlZCgpKTsKKworICAgIEZsb2F0
UG9pbnQgYXJiaXRyYXJ5RmxvYXRQb2ludCA9IEZsb2F0UG9pbnQoMC4xMjVmLCAwLjI1Zik7Cisg
ICAgZmxvYXQgYXJiaXRyYXJ5TnVtYmVyID0gMC4zNTJmOworICAgIEludFNpemUgYXJiaXRyYXJ5
SW50U2l6ZSA9IEludFNpemUoMTExLCAyMjIpOworICAgIEludFBvaW50IGFyYml0cmFyeUludFBv
aW50ID0gSW50UG9pbnQoMzMzLCA0NDQpOworICAgIEludFJlY3QgYXJiaXRyYXJ5SW50UmVjdCA9
IEludFJlY3QoYXJiaXRyYXJ5SW50UG9pbnQsIGFyYml0cmFyeUludFNpemUpOworICAgIEZsb2F0
UmVjdCBhcmJpdHJhcnlGbG9hdFJlY3QgPSBGbG9hdFJlY3QoYXJiaXRyYXJ5RmxvYXRQb2ludCwg
RmxvYXRTaXplKDEuMjM0LCA1LjY3OCkpOworICAgIENvbG9yIGFyYml0cmFyeUNvbG9yID0gQ29s
b3IoMTAsIDIwLCAzMCk7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggYXJiaXRyYXJ5VHJhbnNm
b3JtOworICAgIGFyYml0cmFyeVRyYW5zZm9ybS5zY2FsZTNkKDAuMSwgMC4yLCAwLjMpOworCisg
ICAgLy8gQ2hhbmdpbmcgdGhlc2UgcHJvcGVydGllcyBhZmZlY3RzIHRoZSBlbnRpcmUgc3VidHJl
ZSBvZiBsYXllcnMuCisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfQ0hBTkdFRChyb290
LT5zZXRBbmNob3JQb2ludChhcmJpdHJhcnlGbG9hdFBvaW50KSk7CisgICAgRVhFQ1VURV9BTkRf
VkVSSUZZX1NVQlRSRUVfQ0hBTkdFRChyb290LT5zZXRBbmNob3JQb2ludFooYXJiaXRyYXJ5TnVt
YmVyKSk7CisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfQ0hBTkdFRChyb290LT5zZXRN
YXNrTGF5ZXIoZHVtbXlNYXNrKSk7CisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfQ0hB
TkdFRChyb290LT5zZXRNYXNrc1RvQm91bmRzKHRydWUpKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJ
RllfU1VCVFJFRV9DSEFOR0VEKHJvb3QtPnNldE9wYWNpdHkoYXJiaXRyYXJ5TnVtYmVyKSk7Cisg
ICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfQ0hBTkdFRChyb290LT5zZXRSZXBsaWNhTGF5
ZXIoZHVtbXlSZXBsaWNhKSk7CisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfQ0hBTkdF
RChyb290LT5zZXRQb3NpdGlvbihhcmJpdHJhcnlGbG9hdFBvaW50KSk7CisgICAgRVhFQ1VURV9B
TkRfVkVSSUZZX1NVQlRSRUVfQ0hBTkdFRChyb290LT5zZXRQcmVzZXJ2ZXMzRCh0cnVlKSk7Cisg
ICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfQ0hBTkdFRChyb290LT5zZXRUcmFuc2Zvcm0o
YXJiaXRyYXJ5VHJhbnNmb3JtKSk7CisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfQ0hB
TkdFRChyb290LT5zZXREb3VibGVTaWRlZChmYWxzZSkpOyAvLyBjb25zdHJ1Y3RvciBpbml0aWFs
aXplcyBpdCB0byAidHJ1ZSIuCisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfQ0hBTkdF
RChyb290LT5zY3JvbGxCeShhcmJpdHJhcnlJbnRTaXplKSk7CisgICAgRVhFQ1VURV9BTkRfVkVS
SUZZX1NVQlRSRUVfQ0hBTkdFRChyb290LT5zZXRTY3JvbGxEZWx0YShhcmJpdHJhcnlJbnRTaXpl
KSk7CisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfQ0hBTkdFRChyb290LT5zZXRTY3Jv
bGxQb3NpdGlvbihhcmJpdHJhcnlJbnRQb2ludCkpOworCisgICAgLy8gQ2hhbmdpbmcgdGhlc2Ug
cHJvcGVydGllcyBvbmx5IGFmZmVjdHMgdGhlIGxheWVyIGl0c2VsZi4KKyAgICBFWEVDVVRFX0FO
RF9WRVJJRllfT05MWV9MQVlFUl9DSEFOR0VEKHJvb3QtPnNldENvbnRlbnRCb3VuZHMoYXJiaXRy
YXJ5SW50U2l6ZSkpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9PTkxZX0xBWUVSX0NIQU5HRUQo
cm9vdC0+c2V0RGVidWdCb3JkZXJDb2xvcihhcmJpdHJhcnlDb2xvcikpOworICAgIEVYRUNVVEVf
QU5EX1ZFUklGWV9PTkxZX0xBWUVSX0NIQU5HRUQocm9vdC0+c2V0RGVidWdCb3JkZXJXaWR0aChh
cmJpdHJhcnlOdW1iZXIpKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllfT05MWV9MQVlFUl9DSEFO
R0VEKHJvb3QtPnNldERyYXdzQ29udGVudCh0cnVlKSk7CisKKyAgICAvLyBTcGVjaWFsIGNhc2U6
IHN1YmxheWVyIHRyYW5zZm9ybSBjaGFuZ2VzIGFsbCBsYXllcidzIGRlc2NlbmRhbnRzLCBidXQg
bm90IHRoZSBsYXllciBpdHNlbGYuCisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX09OTFlfREVTQ0VO
REFOVFNfQ0hBTkdFRChyb290LT5zZXRTdWJsYXllclRyYW5zZm9ybShhcmJpdHJhcnlUcmFuc2Zv
cm0pKTsKKworICAgIC8vIFNwZWNpYWwgY2FzZTogc2V0Qm91bmRzIGNoYW5nZXMgYmVoYXZpb3Ig
ZGVwZW5kaW5nIG9uIG1hc2tzVG9Cb3VuZHMuCisgICAgcm9vdC0+c2V0TWFza3NUb0JvdW5kcyhm
YWxzZSk7CisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX09OTFlfTEFZRVJfQ0hBTkdFRChyb290LT5z
ZXRCb3VuZHMoSW50U2l6ZSgxMzUsIDI0NikpKTsKKyAgICByb290LT5zZXRNYXNrc1RvQm91bmRz
KHRydWUpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0NIQU5HRUQocm9vdC0+c2V0
Qm91bmRzKGFyYml0cmFyeUludFNpemUpKTsgLy8gc2hvdWxkIGJlIGEgZGlmZmVyZW50IHNpemUg
dGhhbiBwcmV2aW91cyBjYWxsLCB0byBlbnN1cmUgaXQgbWFya3MgdHJlZSBjaGFuZ2VkLgorCisg
ICAgLy8gQWZ0ZXIgc2V0dGluZyBhbGwgdGhlc2UgcHJvcGVydGllcyBhbHJlYWR5LCBzZXR0aW5n
IHRvIHRoZSBleGFjdCBzYW1lIHZhbHVlcyBhZ2FpbiBzaG91bGQKKyAgICAvLyBub3QgY2F1c2Ug
YW55IGNoYW5nZS4KKyAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9ESURfTk9UX0NIQU5H
RShyb290LT5zZXRBbmNob3JQb2ludChhcmJpdHJhcnlGbG9hdFBvaW50KSk7CisgICAgRVhFQ1VU
RV9BTkRfVkVSSUZZX1NVQlRSRUVfRElEX05PVF9DSEFOR0Uocm9vdC0+c2V0QW5jaG9yUG9pbnRa
KGFyYml0cmFyeU51bWJlcikpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0RJRF9O
T1RfQ0hBTkdFKHJvb3QtPnNldE1hc2tMYXllcihkdW1teU1hc2spKTsKKyAgICBFWEVDVVRFX0FO
RF9WRVJJRllfU1VCVFJFRV9ESURfTk9UX0NIQU5HRShyb290LT5zZXRNYXNrc1RvQm91bmRzKHRy
dWUpKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9ESURfTk9UX0NIQU5HRShyb290
LT5zZXRSZXBsaWNhTGF5ZXIoZHVtbXlSZXBsaWNhKSk7CisgICAgRVhFQ1VURV9BTkRfVkVSSUZZ
X1NVQlRSRUVfRElEX05PVF9DSEFOR0Uocm9vdC0+c2V0UG9zaXRpb24oYXJiaXRyYXJ5RmxvYXRQ
b2ludCkpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0RJRF9OT1RfQ0hBTkdFKHJv
b3QtPnNldFByZXNlcnZlczNEKHRydWUpKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJF
RV9ESURfTk9UX0NIQU5HRShyb290LT5zZXRUcmFuc2Zvcm0oYXJiaXRyYXJ5VHJhbnNmb3JtKSk7
CisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfRElEX05PVF9DSEFOR0Uocm9vdC0+c2V0
RG91YmxlU2lkZWQoZmFsc2UpKTsgLy8gY29uc3RydWN0b3IgaW5pdGlhbGl6ZXMgaXQgdG8gInRy
dWUiLgorICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0RJRF9OT1RfQ0hBTkdFKHJvb3Qt
PnNldFNjcm9sbERlbHRhKGFyYml0cmFyeUludFNpemUpKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJ
RllfU1VCVFJFRV9ESURfTk9UX0NIQU5HRShyb290LT5zZXRTY3JvbGxQb3NpdGlvbihhcmJpdHJh
cnlJbnRQb2ludCkpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0RJRF9OT1RfQ0hB
TkdFKHJvb3QtPnNldENvbnRlbnRCb3VuZHMoYXJiaXRyYXJ5SW50U2l6ZSkpOworICAgIEVYRUNV
VEVfQU5EX1ZFUklGWV9TVUJUUkVFX0RJRF9OT1RfQ0hBTkdFKHJvb3QtPnNldE9wYWNpdHkoYXJi
aXRyYXJ5TnVtYmVyKSk7CisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfRElEX05PVF9D
SEFOR0Uocm9vdC0+c2V0RGVidWdCb3JkZXJDb2xvcihhcmJpdHJhcnlDb2xvcikpOworICAgIEVY
RUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0RJRF9OT1RfQ0hBTkdFKHJvb3QtPnNldERlYnVnQm9y
ZGVyV2lkdGgoYXJiaXRyYXJ5TnVtYmVyKSk7CisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRS
RUVfRElEX05PVF9DSEFOR0Uocm9vdC0+c2V0RHJhd3NDb250ZW50KHRydWUpKTsKKyAgICBFWEVD
VVRFX0FORF9WRVJJRllfU1VCVFJFRV9ESURfTk9UX0NIQU5HRShyb290LT5zZXRTdWJsYXllclRy
YW5zZm9ybShhcmJpdHJhcnlUcmFuc2Zvcm0pKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VC
VFJFRV9ESURfTk9UX0NIQU5HRShyb290LT5zZXRCb3VuZHMoYXJiaXRyYXJ5SW50U2l6ZSkpOwor
CisgICAgLy8gVGhlc2UgcHJvcGVydGllcyBhcmUgaW50ZXJuYWwsIGFuZCBzaG91bGQgbm90IGJl
IGNvbnNpZGVyZWQgImNoYW5nZSIgd2hlbiB0aGV5IGFyZSB1c2VkLgorICAgIEVYRUNVVEVfQU5E
X1ZFUklGWV9TVUJUUkVFX0RJRF9OT1RfQ0hBTkdFKHJvb3QtPnNldElzTm9uQ29tcG9zaXRlZENv
bnRlbnQodHJ1ZSkpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0RJRF9OT1RfQ0hB
TkdFKHJvb3QtPnNldFNjaXNzb3JSZWN0KGFyYml0cmFyeUludFJlY3QpKTsKKyAgICBFWEVDVVRF
X0FORF9WRVJJRllfU1VCVFJFRV9ESURfTk9UX0NIQU5HRShyb290LT5zZXRVc2VzTGF5ZXJTY2lz
c29yKHRydWUpKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9ESURfTk9UX0NIQU5H
RShyb290LT5zZXREcmF3T3BhY2l0eShhcmJpdHJhcnlOdW1iZXIpKTsKKyAgICBFWEVDVVRFX0FO
RF9WRVJJRllfU1VCVFJFRV9ESURfTk9UX0NIQU5HRShyb290LT5zZXRUYXJnZXRSZW5kZXJTdXJm
YWNlKDApKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9ESURfTk9UX0NIQU5HRShy
b290LT5zZXREcmF3VHJhbnNmb3JtKGFyYml0cmFyeVRyYW5zZm9ybSkpOworICAgIEVYRUNVVEVf
QU5EX1ZFUklGWV9TVUJUUkVFX0RJRF9OT1RfQ0hBTkdFKHJvb3QtPnNldFNjcmVlblNwYWNlVHJh
bnNmb3JtKGFyYml0cmFyeVRyYW5zZm9ybSkpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJU
UkVFX0RJRF9OT1RfQ0hBTkdFKHJvb3QtPnNldERyYXdhYmxlQ29udGVudFJlY3QoYXJiaXRyYXJ5
SW50UmVjdCkpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0RJRF9OT1RfQ0hBTkdF
KHJvb3QtPnNldFVwZGF0ZVJlY3QoYXJiaXRyYXJ5RmxvYXRSZWN0KSk7CisgICAgRVhFQ1VURV9B
TkRfVkVSSUZZX1NVQlRSRUVfRElEX05PVF9DSEFOR0Uocm9vdC0+c2V0VmlzaWJsZUxheWVyUmVj
dChhcmJpdHJhcnlJbnRSZWN0KSk7CisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfRElE
X05PVF9DSEFOR0Uocm9vdC0+c2V0TWF4U2Nyb2xsUG9zaXRpb24oYXJiaXRyYXJ5SW50U2l6ZSkp
OworfQorCit9IC8vIG5hbWVzcGFjZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112603</attachid>
            <date>2011-10-26 15:10:14 -0700</date>
            <delta_ts>2011-10-27 13:54:02 -0700</delta_ts>
            <desc>renamed the bool flag</desc>
            <filename>bug-70442-20111026151012.patch</filename>
            <type>text/plain</type>
            <size>25948</size>
            <attacher name="Shawn Singh">shawnsingh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTg0ODIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmNjBmYzFlNmNmYjNiZDNh
NjU2M2JmNDY1NzEzOGFkZTRkOTM1NWIzLi5jYmRjOWQ1YWQwZjk1OGVmODBkY2U2OTZhZDc2YTA1
MGZlMTU5N2I0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDYgQEAKKzIwMTEtMTAtMjYgIFNoYXdu
IFNpbmdoICA8c2hhd25zaW5naEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBU
cmFjayB3aGVuIENDTGF5ZXJJbXBsIHByb3BlcnRpZXMgaGF2ZSBjaGFuZ2VkLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA0NDIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBkZXRlcm1pbmUgYSBnb29k
IHNjaXNzb3IgcmVjdCwgd2UgbXVzdCBkZXRlcm1pbmUgd2hhdAorICAgICAgICB3aWxsIGNoYW5n
ZSBvbiB0aGUgc2NyZWVuIG9uIHRoZSBuZXh0IHJlZHJhdy4gIFRoaXMgcGF0Y2gKKyAgICAgICAg
dHJhY2tzIHRoZSBuZWNlc3NhcnkgaW5mb3JtYXRpb24gb24gQ0NMYXllckltcGwgYW5kIG1hcmtz
CisgICAgICAgIGEgZmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgdGhpcyBsYXllciB3aWxsICJkYW1h
Z2UiIHRoZSBzY3JlZW4uCisgICAgICAgIFRoZSBvdGhlciBwb3J0aW9uIG9mICJjaGFuZ2UiLCB0
aGUgdXBkYXRlUmVjdCwgd2FzIGFscmVhZHkKKyAgICAgICAgbGFuZGVkIGluIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTQ0MS4KKworICAgICAgICBOZXcgdW5pdCB0
ZXN0IGFkZGVkIHRvIENDTGF5ZXJJbXBsVGVzdCB0byB0ZXN0IHRoaXMgcGF0Y2guCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6Q0NMYXllckltcGwpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NMYXllckltcGw6OnNjcm9sbEJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBs
OjpzZXRMYXllckhhc0NoYW5nZWRGb3JTdWJ0cmVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5
ZXJJbXBsOjpzZXRMYXllckhhc0NoYW5nZWRGb3JEZXNjZW5kYW50cyk6CisgICAgICAgIChXZWJD
b3JlOjpDQ0xheWVySW1wbDo6c2V0Qm91bmRzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJ
bXBsOjpzZXRNYXNrTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OnNldFJl
cGxpY2FMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6c2V0RHJhd3NDb250
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpzZXRBbmNob3JQb2ludCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6c2V0QW5jaG9yUG9pbnRaKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpzZXRNYXNrc1RvQm91bmRzKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDTGF5ZXJJbXBsOjpzZXRPcGFjaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJ
bXBsOjpzZXRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6c2V0UHJl
c2VydmVzM0QpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OnNldFN1YmxheWVyVHJh
bnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpzZXRUcmFuc2Zvcm0pOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OnNldERlYnVnQm9yZGVyQ29sb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OnNldERlYnVnQm9yZGVyV2lkdGgpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OnNldENvbnRlbnRCb3VuZHMpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NMYXllckltcGw6OnNldFNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDTGF5ZXJJbXBsOjpzZXRTY3JvbGxEZWx0YSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVy
SW1wbDo6c2V0RG91YmxlU2lkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJJbXBsLmg6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6bGF5
ZXJIYXNDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpyZXNldExheWVy
SGFzQ2hhbmdlZCk6CisKIDIwMTEtMTAtMjYgIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuICA8
a2VubmV0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFByb3Blcmx5IHN1c3BlbmQvcmVzdW1lIEdl
b2xvY2F0aW9uL0RldmljZU1vdGlvbi9EZXZpY2VPcmllbnRhdGlvbiBvYmplY3RzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCmluZGV4IGFjZWU5MGZkOGI2YTNmZDk3MjEwMzllOWI0YmE4OTBkYTYw
OTlmZDUuLjhjZTdhMDZmNTUyMjZkYjJkY2IzOTNlYjU0NDY5NzhlYWYyNzMxNjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMTAtMjYgIFNoYXduIFNp
bmdoICA8c2hhd25zaW5naEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBUcmFj
ayB3aGVuIENDTGF5ZXJJbXBsIHByb3BlcnRpZXMgaGF2ZSBjaGFuZ2VkLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA0NDIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdC5neXBpOgorICAgICAg
ICAqIHRlc3RzL0NDTGF5ZXJJbXBsVGVzdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
VEVTVCk6CisKIDIwMTEtMTAtMjUgIFN0ZXBoZW4gV2hpdGUgIDxzZW5vcmJsYW5jb0BjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBDYW52YXMyRCBzaG91bGQgcmF0ZS1saW1pdCBk
cmF3aW5nIHRvIHByZXZlbnQgc3dhbXBpbmcgdGhlIEdQVSBwcm9jZXNzLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
ckltcGwuY3BwCmluZGV4IDJiMDVkOWZmMGQxN2UwMmJiNGVlN2Q4M2JiMGYzYjI0ZmNiNzVjZjMu
Ljg5MWRhMmE0ZTE3Yjk3ODU4ZjI2ZTJkNWJjOGMyODc3MDlmNzcwMDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVySW1wbC5jcHAKQEAgLTM1LDYgKzM1LDI0IEBACiAjaW5jbHVkZSAiY2MvQ0NMYXllclNvcnRl
ci5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCisjZGVmaW5lIExBWUVSX0NI
QU5HRURfSUZfTk9UX0VRVUFMKG1lbWJlciwgbmV3dmFsdWUpICAgICAgICBcCisgICAgaWYgKCht
ZW1iZXIpICE9IChuZXd2YWx1ZSkpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgIChtZW1iZXIpID0gKG5ld3ZhbHVlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICAgIG1fbGF5ZXJQcm9wZXJ0eUNoYW5nZWQgPSB0cnVlOyAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgfQorCisjZGVmaW5lIFNVQlRSRUVfQ0hBTkdFRF9JRl9OT1RfRVFVQUwobWVt
YmVyLCBuZXd2YWx1ZSkgICAgICBcCisgICAgaWYgKChtZW1iZXIpICE9IChuZXd2YWx1ZSkpIHsg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIChtZW1iZXIpID0gKG5ld3ZhbHVl
KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIG5vdGVMYXllclByb3Bl
cnR5Q2hhbmdlZEZvclN1YnRyZWUoKTsgICAgICAgICAgICAgICBcCisgICAgfQorCisjZGVmaW5l
IERFU0NFTkRBTlRTX0NIQU5HRURfSUZfTk9UX0VRVUFMKG1lbWJlciwgbmV3dmFsdWUpICAgXAor
ICAgIGlmICgobWVtYmVyKSAhPSAobmV3dmFsdWUpKSB7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgKG1lbWJlcikgPSAobmV3dmFsdWUpOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZEZvckRlc2NlbmRh
bnRzKCk7ICAgICAgICAgICAgXAorICAgIH0KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBDQ0xh
eWVySW1wbDo6Q0NMYXllckltcGwoaW50IGlkKQpAQCAtNDMsNiArNjEsNyBAQCBDQ0xheWVySW1w
bDo6Q0NMYXllckltcGwoaW50IGlkKQogICAgICwgbV9hbmNob3JQb2ludCgwLjUsIDAuNSkKICAg
ICAsIG1fYW5jaG9yUG9pbnRaKDApCiAgICAgLCBtX2RvdWJsZVNpZGVkKHRydWUpCisgICAgLCBt
X2xheWVyUHJvcGVydHlDaGFuZ2VkKGZhbHNlKQogICAgICwgbV9tYXNrc1RvQm91bmRzKGZhbHNl
KQogICAgICwgbV9vcGFjaXR5KDEuMCkKICAgICAsIG1fcHJlc2VydmVzM0QoZmFsc2UpCkBAIC0x
MjUsNiArMTQ0LDcgQEAgdm9pZCBDQ0xheWVySW1wbDo6c2Nyb2xsQnkoY29uc3QgSW50U2l6ZSYg
c2Nyb2xsKQogICAgIEludFNpemUgbWF4RGVsdGEgPSBtX21heFNjcm9sbFBvc2l0aW9uIC0gdG9T
aXplKG1fc2Nyb2xsUG9zaXRpb24pOwogICAgIC8vIENsYW1wIG5ld0RlbHRhIHNvIHRoYXQgcG9z
aXRpb24gKyBkZWx0YSBzdGF5cyB3aXRoaW4gc2Nyb2xsIGJvdW5kcy4KICAgICBtX3Njcm9sbERl
bHRhID0gbmV3RGVsdGEuZXhwYW5kZWRUbyhtaW5EZWx0YSkuc2hydW5rVG8obWF4RGVsdGEpOwor
ICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZEZvclN1YnRyZWUoKTsKIH0KIAogdm9pZCBDQ0xh
eWVySW1wbDo6Y2xlYW51cFJlc291cmNlcygpCkBAIC0yMjIsNiArMjQyLDExNiBAQCB2b2lkIEND
TGF5ZXJJbXBsOjpkdW1wTGF5ZXIoVGV4dFN0cmVhbSYgdHMsIGludCBpbmRlbnQpIGNvbnN0CiAg
ICAgICAgIG1fY2hpbGRyZW5baV0tPmR1bXBMYXllcih0cywgaW5kZW50KzEpOwogfQogCit2b2lk
IENDTGF5ZXJJbXBsOjpub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWRGb3JTdWJ0cmVlKCkKK3sKKyAg
ICBtX2xheWVyUHJvcGVydHlDaGFuZ2VkID0gdHJ1ZTsKKyAgICBub3RlTGF5ZXJQcm9wZXJ0eUNo
YW5nZWRGb3JEZXNjZW5kYW50cygpOworfQorCit2b2lkIENDTGF5ZXJJbXBsOjpub3RlTGF5ZXJQ
cm9wZXJ0eUNoYW5nZWRGb3JEZXNjZW5kYW50cygpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBtX2NoaWxkcmVuLnNpemUoKTsgKytpKQorICAgICAgICBtX2NoaWxkcmVuW2ldLT5ub3Rl
TGF5ZXJQcm9wZXJ0eUNoYW5nZWRGb3JTdWJ0cmVlKCk7Cit9CisKK3ZvaWQgQ0NMYXllckltcGw6
OnNldEJvdW5kcyhjb25zdCBJbnRTaXplJiBib3VuZHMpCit7CisgICAgaWYgKG1fYm91bmRzICE9
IGJvdW5kcykgeworICAgICAgICBtX2JvdW5kcyA9IGJvdW5kczsKKworICAgICAgICAvLyBtYXNr
c1RvQm91bmRzIG1lYW5zIHRoYXQgdGhlc2UgYm91bmRzIGFmZmVjdCB0aGUgZW50aXJlIHN1YnRy
ZWUsIG5vdCBqdXN0IHRoaXMgbGF5ZXIuCisgICAgICAgIGlmIChtYXNrc1RvQm91bmRzKCkpCisg
ICAgICAgICAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWRGb3JTdWJ0cmVlKCk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIG1fbGF5ZXJQcm9wZXJ0eUNoYW5nZWQgPSB0cnVlOworICAgIH0K
K30KKwordm9pZCBDQ0xheWVySW1wbDo6c2V0TWFza0xheWVyKFBhc3NSZWZQdHI8Q0NMYXllcklt
cGw+IG1hc2tMYXllcikKK3sKKyAgICBTVUJUUkVFX0NIQU5HRURfSUZfTk9UX0VRVUFMKG1fbWFz
a0xheWVyLCBtYXNrTGF5ZXIpOworfQorCit2b2lkIENDTGF5ZXJJbXBsOjpzZXRSZXBsaWNhTGF5
ZXIoUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4gcmVwbGljYUxheWVyKQoreworICAgIFNVQlRSRUVf
Q0hBTkdFRF9JRl9OT1RfRVFVQUwobV9yZXBsaWNhTGF5ZXIsIHJlcGxpY2FMYXllcik7Cit9CisK
K3ZvaWQgQ0NMYXllckltcGw6OnNldERyYXdzQ29udGVudChib29sIGRyYXdzQ29udGVudCkKK3sK
KyAgICBMQVlFUl9DSEFOR0VEX0lGX05PVF9FUVVBTChtX2RyYXdzQ29udGVudCwgZHJhd3NDb250
ZW50KTsKK30KKwordm9pZCBDQ0xheWVySW1wbDo6c2V0QW5jaG9yUG9pbnQoY29uc3QgRmxvYXRQ
b2ludCYgYW5jaG9yUG9pbnQpCit7CisgICAgU1VCVFJFRV9DSEFOR0VEX0lGX05PVF9FUVVBTCht
X2FuY2hvclBvaW50LCBhbmNob3JQb2ludCk7Cit9CisKK3ZvaWQgQ0NMYXllckltcGw6OnNldEFu
Y2hvclBvaW50WihmbG9hdCBhbmNob3JQb2ludFopCit7CisgICAgU1VCVFJFRV9DSEFOR0VEX0lG
X05PVF9FUVVBTChtX2FuY2hvclBvaW50WiwgYW5jaG9yUG9pbnRaKTsKK30KKwordm9pZCBDQ0xh
eWVySW1wbDo6c2V0TWFza3NUb0JvdW5kcyhib29sIG1hc2tzVG9Cb3VuZHMpCit7CisgICAgU1VC
VFJFRV9DSEFOR0VEX0lGX05PVF9FUVVBTChtX21hc2tzVG9Cb3VuZHMsIG1hc2tzVG9Cb3VuZHMp
OworfQorCit2b2lkIENDTGF5ZXJJbXBsOjpzZXRPcGFjaXR5KGZsb2F0IG9wYWNpdHkpCit7Cisg
ICAgU1VCVFJFRV9DSEFOR0VEX0lGX05PVF9FUVVBTChtX29wYWNpdHksIG9wYWNpdHkpOworfQor
Cit2b2lkIENDTGF5ZXJJbXBsOjpzZXRQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlv
bikKK3sKKyAgICBTVUJUUkVFX0NIQU5HRURfSUZfTk9UX0VRVUFMKG1fcG9zaXRpb24sIHBvc2l0
aW9uKTsKK30KKwordm9pZCBDQ0xheWVySW1wbDo6c2V0UHJlc2VydmVzM0QoYm9vbCBwcmVzZXJ2
ZXMzRCkKK3sKKyAgICBTVUJUUkVFX0NIQU5HRURfSUZfTk9UX0VRVUFMKG1fcHJlc2VydmVzM0Qs
IHByZXNlcnZlczNEKTsKK30KKwordm9pZCBDQ0xheWVySW1wbDo6c2V0U3VibGF5ZXJUcmFuc2Zv
cm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHN1YmxheWVyVHJhbnNmb3JtKQoreworICAg
IERFU0NFTkRBTlRTX0NIQU5HRURfSUZfTk9UX0VRVUFMKG1fc3VibGF5ZXJUcmFuc2Zvcm0sIHN1
YmxheWVyVHJhbnNmb3JtKTsKK30KKwordm9pZCBDQ0xheWVySW1wbDo6c2V0VHJhbnNmb3JtKGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0pCit7CisgICAgU1VCVFJFRV9DSEFO
R0VEX0lGX05PVF9FUVVBTChtX3RyYW5zZm9ybSwgdHJhbnNmb3JtKTsKK30KKwordm9pZCBDQ0xh
eWVySW1wbDo6c2V0RGVidWdCb3JkZXJDb2xvcihDb2xvciBjKQoreworICAgIExBWUVSX0NIQU5H
RURfSUZfTk9UX0VRVUFMKG1fZGVidWdCb3JkZXJDb2xvciwgYyk7Cit9CisKK3ZvaWQgQ0NMYXll
ckltcGw6OnNldERlYnVnQm9yZGVyV2lkdGgoZmxvYXQgd2lkdGgpCit7CisgICAgTEFZRVJfQ0hB
TkdFRF9JRl9OT1RfRVFVQUwobV9kZWJ1Z0JvcmRlcldpZHRoLCB3aWR0aCk7Cit9CisKK3ZvaWQg
Q0NMYXllckltcGw6OnNldENvbnRlbnRCb3VuZHMoY29uc3QgSW50U2l6ZSYgY29udGVudEJvdW5k
cykKK3sKKyAgICBMQVlFUl9DSEFOR0VEX0lGX05PVF9FUVVBTChtX2NvbnRlbnRCb3VuZHMsIGNv
bnRlbnRCb3VuZHMpOworfQorCit2b2lkIENDTGF5ZXJJbXBsOjpzZXRTY3JvbGxQb3NpdGlvbihj
b25zdCBJbnRQb2ludCYgc2Nyb2xsUG9zaXRpb24pCit7CisgICAgU1VCVFJFRV9DSEFOR0VEX0lG
X05PVF9FUVVBTChtX3Njcm9sbFBvc2l0aW9uLCBzY3JvbGxQb3NpdGlvbik7Cit9CisKK3ZvaWQg
Q0NMYXllckltcGw6OnNldFNjcm9sbERlbHRhKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhKQor
eworICAgIFNVQlRSRUVfQ0hBTkdFRF9JRl9OT1RfRVFVQUwobV9zY3JvbGxEZWx0YSwgc2Nyb2xs
RGVsdGEpOworfQorCit2b2lkIENDTGF5ZXJJbXBsOjpzZXREb3VibGVTaWRlZChib29sIGRvdWJs
ZVNpZGVkKQoreworICAgIFNVQlRSRUVfQ0hBTkdFRF9JRl9OT1RfRVFVQUwobV9kb3VibGVTaWRl
ZCwgZG91YmxlU2lkZWQpOworfQorCiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKaW5kZXggMzlj
NmY4ZTEwYmEwZjg3N2I5MmFmYTEzMGY0MTE4NDM0ZmE1ZWNhNC4uZWRhMDczZGRkZmY0YzEwZTA2
NTU3MTFmMjVjNGYxMGM1NGZkNDZhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCkBAIC01OCwxMCAr
NTgsMTAgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlRnJvbVBhcmVudCgpOwogICAgIHZvaWQg
cmVtb3ZlQWxsQ2hpbGRyZW4oKTsKIAotICAgIHZvaWQgc2V0TWFza0xheWVyKFBhc3NSZWZQdHI8
Q0NMYXllckltcGw+IG1hc2tMYXllcikgeyBtX21hc2tMYXllciA9IG1hc2tMYXllcjsgfQorICAg
IHZvaWQgc2V0TWFza0xheWVyKFBhc3NSZWZQdHI8Q0NMYXllckltcGw+KTsKICAgICBDQ0xheWVy
SW1wbCogbWFza0xheWVyKCkgY29uc3QgeyByZXR1cm4gbV9tYXNrTGF5ZXIuZ2V0KCk7IH0KIAot
ICAgIHZvaWQgc2V0UmVwbGljYUxheWVyKFBhc3NSZWZQdHI8Q0NMYXllckltcGw+IHJlcGxpY2FM
YXllcikgeyBtX3JlcGxpY2FMYXllciA9IHJlcGxpY2FMYXllcjsgfQorICAgIHZvaWQgc2V0UmVw
bGljYUxheWVyKFBhc3NSZWZQdHI8Q0NMYXllckltcGw+KTsKICAgICBDQ0xheWVySW1wbCogcmVw
bGljYUxheWVyKCkgY29uc3QgeyByZXR1cm4gbV9yZXBsaWNhTGF5ZXIuZ2V0KCk7IH0KIAogICAg
IGludCBpZCgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXJJZDsgfQpAQCAtNzUsNyArNzUsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGJpbmRDb250ZW50c1RleHR1cmUoTGF5ZXJSZW5kZXJl
ckNocm9taXVtKik7CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhpcyBsYXllciBoYXMgY29u
dGVudCB0byBkcmF3LgotICAgIHZvaWQgc2V0RHJhd3NDb250ZW50KGJvb2wgZHJhd3NDb250ZW50
KSB7IG1fZHJhd3NDb250ZW50ID0gZHJhd3NDb250ZW50OyB9CisgICAgdm9pZCBzZXREcmF3c0Nv
bnRlbnQoYm9vbCk7CiAgICAgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX2Ry
YXdzQ29udGVudDsgfQogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIGFueSBvZiB0aGUgbGF5ZXIn
cyBkZXNjZW5kYW50cyBoYXMgY29udGVudCB0byBkcmF3LgpAQCAtODMsMjIgKzgzLDIyIEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgY2xlYW51cFJlc291cmNlcygpOwogCi0gICAgdm9pZCBzZXRBbmNo
b3JQb2ludChjb25zdCBGbG9hdFBvaW50JiBhbmNob3JQb2ludCkgeyBtX2FuY2hvclBvaW50ID0g
YW5jaG9yUG9pbnQ7IH0KKyAgICB2b2lkIHNldEFuY2hvclBvaW50KGNvbnN0IEZsb2F0UG9pbnQm
KTsKICAgICBjb25zdCBGbG9hdFBvaW50JiBhbmNob3JQb2ludCgpIGNvbnN0IHsgcmV0dXJuIG1f
YW5jaG9yUG9pbnQ7IH0KIAotICAgIHZvaWQgc2V0QW5jaG9yUG9pbnRaKGZsb2F0IGFuY2hvclBv
aW50WikgeyBtX2FuY2hvclBvaW50WiA9IGFuY2hvclBvaW50WjsgfQorICAgIHZvaWQgc2V0QW5j
aG9yUG9pbnRaKGZsb2F0KTsKICAgICBmbG9hdCBhbmNob3JQb2ludFooKSBjb25zdCB7IHJldHVy
biBtX2FuY2hvclBvaW50WjsgfQogCi0gICAgdm9pZCBzZXRNYXNrc1RvQm91bmRzKGJvb2wgbWFz
a3NUb0JvdW5kcykgeyBtX21hc2tzVG9Cb3VuZHMgPSBtYXNrc1RvQm91bmRzOyB9CisgICAgdm9p
ZCBzZXRNYXNrc1RvQm91bmRzKGJvb2wpOwogICAgIGJvb2wgbWFza3NUb0JvdW5kcygpIGNvbnN0
IHsgcmV0dXJuIG1fbWFza3NUb0JvdW5kczsgfQogCi0gICAgdm9pZCBzZXRPcGFjaXR5KGZsb2F0
IG9wYWNpdHkpIHsgbV9vcGFjaXR5ID0gb3BhY2l0eTsgfQorICAgIHZvaWQgc2V0T3BhY2l0eShm
bG9hdCk7CiAgICAgZmxvYXQgb3BhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1fb3BhY2l0eTsgfQog
Ci0gICAgdm9pZCBzZXRQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbikgeyBtX3Bv
c2l0aW9uID0gcG9zaXRpb247IH0KKyAgICB2b2lkIHNldFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9p
bnQmKTsKICAgICBjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
cG9zaXRpb247IH0KIAotICAgIHZvaWQgc2V0UHJlc2VydmVzM0QoYm9vbCBwcmVzZXJ2ZXMzRCkg
eyBtX3ByZXNlcnZlczNEID0gcHJlc2VydmVzM0Q7IH0KKyAgICB2b2lkIHNldFByZXNlcnZlczNE
KGJvb2wpOwogICAgIGJvb2wgcHJlc2VydmVzM0QoKSBjb25zdCB7IHJldHVybiBtX3ByZXNlcnZl
czNEOyB9CiAKICAgICB2b2lkIHNldFVzZXNMYXllclNjaXNzb3IoYm9vbCB1c2VzTGF5ZXJTY2lz
c29yKSB7IG1fdXNlc0xheWVyU2Npc3NvciA9IHVzZXNMYXllclNjaXNzb3I7IH0KQEAgLTEwNywx
OSArMTA3LDE5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldElzTm9uQ29tcG9zaXRlZENvbnRlbnQo
Ym9vbCBpc05vbkNvbXBvc2l0ZWRDb250ZW50KSB7IG1faXNOb25Db21wb3NpdGVkQ29udGVudCA9
IGlzTm9uQ29tcG9zaXRlZENvbnRlbnQ7IH0KICAgICBib29sIGlzTm9uQ29tcG9zaXRlZENvbnRl
bnQoKSBjb25zdCB7IHJldHVybiBtX2lzTm9uQ29tcG9zaXRlZENvbnRlbnQ7IH0KIAotICAgIHZv
aWQgc2V0U3VibGF5ZXJUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHN1Ymxh
eWVyVHJhbnNmb3JtKSB7IG1fc3VibGF5ZXJUcmFuc2Zvcm0gPSBzdWJsYXllclRyYW5zZm9ybTsg
fQorICAgIHZvaWQgc2V0U3VibGF5ZXJUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmKTsKICAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgc3VibGF5ZXJUcmFuc2Zvcm0o
KSBjb25zdCB7IHJldHVybiBtX3N1YmxheWVyVHJhbnNmb3JtOyB9CiAKLSAgICB2b2lkIHNldFRy
YW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtKSB7IG1fdHJhbnNm
b3JtID0gdHJhbnNmb3JtOyB9CisgICAgdm9pZCBzZXRUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmKTsKICAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3Jt
KCkgY29uc3QgeyByZXR1cm4gbV90cmFuc2Zvcm07IH0KIAogICAgIHZvaWQgc2V0TmFtZShjb25z
dCBTdHJpbmcmIG5hbWUpIHsgbV9uYW1lID0gbmFtZTsgfQogICAgIGNvbnN0IFN0cmluZyYgbmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQogCiAgICAgLy8gRGVidWcgbGF5ZXIgYm9yZGVy
IC0gdmlzdWFsIGVmZmVjdCBvbmx5LCBkbyBub3QgY2hhbmdlIGdlb21ldHJ5L2NsaXBwaW5nL2V0
Yy4KLSAgICB2b2lkIHNldERlYnVnQm9yZGVyQ29sb3IoQ29sb3IgYykgeyBtX2RlYnVnQm9yZGVy
Q29sb3IgPSBjOyB9CisgICAgdm9pZCBzZXREZWJ1Z0JvcmRlckNvbG9yKENvbG9yKTsKICAgICBD
b2xvciBkZWJ1Z0JvcmRlckNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z0JvcmRlckNvbG9y
OyB9Ci0gICAgdm9pZCBzZXREZWJ1Z0JvcmRlcldpZHRoKGZsb2F0IHdpZHRoKSB7IG1fZGVidWdC
b3JkZXJXaWR0aCA9IHdpZHRoOyB9CisgICAgdm9pZCBzZXREZWJ1Z0JvcmRlcldpZHRoKGZsb2F0
KTsKICAgICBmbG9hdCBkZWJ1Z0JvcmRlcldpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z0Jv
cmRlcldpZHRoOyB9CiAKICAgICB2b2lkIGRyYXdEZWJ1Z0JvcmRlcihMYXllclJlbmRlcmVyQ2hy
b21pdW0qKTsKQEAgLTEzNywxOSArMTM3LDE5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFRhcmdl
dFJlbmRlclN1cmZhY2UoQ0NSZW5kZXJTdXJmYWNlKiBzdXJmYWNlKSB7IG1fdGFyZ2V0UmVuZGVy
U3VyZmFjZSA9IHN1cmZhY2U7IH0KIAogICAgIGNvbnN0IEludFNpemUmIGJvdW5kcygpIGNvbnN0
IHsgcmV0dXJuIG1fYm91bmRzOyB9Ci0gICAgdm9pZCBzZXRCb3VuZHMoY29uc3QgSW50U2l6ZSYg
Ym91bmRzKSB7IG1fYm91bmRzID0gYm91bmRzOyB9CisgICAgdm9pZCBzZXRCb3VuZHMoY29uc3Qg
SW50U2l6ZSYpOwogCiAgICAgY29uc3QgSW50U2l6ZSYgY29udGVudEJvdW5kcygpIGNvbnN0IHsg
cmV0dXJuIG1fY29udGVudEJvdW5kczsgfQotICAgIHZvaWQgc2V0Q29udGVudEJvdW5kcyhjb25z
dCBJbnRTaXplJiBjb250ZW50Qm91bmRzKSB7IG1fY29udGVudEJvdW5kcyA9IGNvbnRlbnRCb3Vu
ZHM7IH0KKyAgICB2b2lkIHNldENvbnRlbnRCb3VuZHMoY29uc3QgSW50U2l6ZSYpOwogCiAgICAg
Y29uc3QgSW50UG9pbnQmIHNjcm9sbFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxQ
b3NpdGlvbjsgfQotICAgIHZvaWQgc2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgSW50UG9pbnQmIHNj
cm9sbFBvc2l0aW9uKSB7IG1fc2Nyb2xsUG9zaXRpb24gPSBzY3JvbGxQb3NpdGlvbjsgfQorICAg
IHZvaWQgc2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgSW50UG9pbnQmKTsKIAogICAgIGNvbnN0IElu
dFNpemUmIG1heFNjcm9sbFBvc2l0aW9uKCkgY29uc3Qge3JldHVybiBtX21heFNjcm9sbFBvc2l0
aW9uOyB9CiAgICAgdm9pZCBzZXRNYXhTY3JvbGxQb3NpdGlvbihjb25zdCBJbnRTaXplJiBtYXhT
Y3JvbGxQb3NpdGlvbikgeyBtX21heFNjcm9sbFBvc2l0aW9uID0gbWF4U2Nyb2xsUG9zaXRpb247
IH0KIAogICAgIGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhKCkgY29uc3QgeyByZXR1cm4gbV9z
Y3JvbGxEZWx0YTsgfQotICAgIHZvaWQgc2V0U2Nyb2xsRGVsdGEoY29uc3QgSW50U2l6ZSYgc2Ny
b2xsRGVsdGEpIHsgbV9zY3JvbGxEZWx0YSA9IHNjcm9sbERlbHRhOyB9CisgICAgdm9pZCBzZXRT
Y3JvbGxEZWx0YShjb25zdCBJbnRTaXplJik7CiAKICAgICB2b2lkIHNjcm9sbEJ5KGNvbnN0IElu
dFNpemUmIHNjcm9sbCk7CiAgICAgYm9vbCBzY3JvbGxhYmxlKCkgY29uc3QgeyByZXR1cm4gIW1h
eFNjcm9sbFBvc2l0aW9uKCkuaXNaZXJvKCk7IH0KQEAgLTE1OCw3ICsxNTgsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRWaXNpYmxlTGF5ZXJSZWN0KGNvbnN0IEludFJlY3QmIHZpc2libGVMYXll
clJlY3QpIHsgbV92aXNpYmxlTGF5ZXJSZWN0ID0gdmlzaWJsZUxheWVyUmVjdDsgfQogCiAgICAg
Ym9vbCBkb3VibGVTaWRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZG91YmxlU2lkZWQ7IH0KLSAgICB2
b2lkIHNldERvdWJsZVNpZGVkKGJvb2wgZG91YmxlU2lkZWQpIHsgbV9kb3VibGVTaWRlZCA9IGRv
dWJsZVNpZGVkOyB9CisgICAgdm9pZCBzZXREb3VibGVTaWRlZChib29sKTsKIAogICAgIC8vIFJl
dHVybnMgdGhlIHJlY3QgY29udGFpbnRhaW5pbmcgdGhpcyBsYXllciBpbiB0aGUgY3VycmVudCB2
aWV3J3MgY29vcmRpbmF0ZSBzeXN0ZW0uCiAgICAgY29uc3QgSW50UmVjdCBnZXREcmF3UmVjdCgp
IGNvbnN0OwpAQCAtMTc0LDYgKzE3NCw5IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBsYXllclRy
ZWVBc1RleHQoKSBjb25zdDsKIAorICAgIGJvb2wgbGF5ZXJQcm9wZXJ0eUNoYW5nZWQoKSBjb25z
dCB7IHJldHVybiBtX2xheWVyUHJvcGVydHlDaGFuZ2VkOyB9CisgICAgdm9pZCByZXNldExheWVy
UHJvcGVydHlDaGFuZ2VkKCkgeyBtX2xheWVyUHJvcGVydHlDaGFuZ2VkID0gZmFsc2U7IH0KKwog
cHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IENDTGF5ZXJJbXBsKGludCk7CiAKQEAgLTE4NSw2ICsx
ODgsMTEgQEAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgVHJlZVN5bmNocm9uaXplcjsKICAg
ICB2b2lkIGNsZWFyQ2hpbGRMaXN0KCk7IC8vIFdhcm5pbmc6IFRoaXMgZG9lcyBub3QgcHJlc2Vy
dmUgdHJlZSBzdHJ1Y3R1cmUgaW52YXJpYW50cyBhbmQgc28gaXMgb25seSBleHBvc2VkIHRvIHRo
ZSB0cmVlIHN5bmNocm9uaXplci4KIAorICAgIHZvaWQgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2Vk
Rm9yU3VidHJlZSgpOworCisgICAgLy8gTm90ZSBjYXJlZnVsbHkgdGhpcyBkb2VzIG5vdCBhZmZl
Y3QgdGhlIGN1cnJlbnQgbGF5ZXIuCisgICAgdm9pZCBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWRG
b3JEZXNjZW5kYW50cygpOworCiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiBsYXllclR5cGVBc1N0
cmluZygpIGNvbnN0IHsgcmV0dXJuICJMYXllckNocm9taXVtIjsgfQogCiAgICAgdm9pZCBkdW1w
TGF5ZXIoVGV4dFN0cmVhbSYsIGludCBpbmRlbnQpIGNvbnN0OwpAQCAtMjA3LDYgKzIxNSw5IEBA
IHByaXZhdGU6CiAgICAgLy8gV2hldGhlciB0aGUgImJhY2siIG9mIHRoaXMgbGF5ZXIgc2hvdWxk
IGRyYXcuCiAgICAgYm9vbCBtX2RvdWJsZVNpZGVkOwogCisgICAgLy8gVHJhY2tzIGlmIGRyYXdp
bmctcmVsYXRlZCBwcm9wZXJ0aWVzIGhhdmUgY2hhbmdlZCBzaW5jZSBsYXN0IHJlZHJhdy4KKyAg
ICBib29sIG1fbGF5ZXJQcm9wZXJ0eUNoYW5nZWQ7CisKICAgICBJbnRSZWN0IG1fdmlzaWJsZUxh
eWVyUmVjdDsKICAgICBib29sIG1fbWFza3NUb0JvdW5kczsKICAgICBmbG9hdCBtX29wYWNpdHk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQppbmRleCBhNDg5MWZhYjE3OWYwMmFmZDY0ZGYx
YTEwYTAxNjI3NDE0NmVjYjZiLi4zMzMxMzVmOTMxNTBmYzU2Y2MxYTg4ODMwNjQ0NjE0MmMzY2Mx
ZTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKQEAgLTU0LDYgKzU0LDcgQEAKICAg
ICAgICAgJ3dlYmtpdF91bml0dGVzdF9maWxlcyc6IFsKICAgICAgICAgICAgICd0ZXN0cy9BcmVu
YVRlc3RIZWxwZXJzLmgnLAogICAgICAgICAgICAgJ3Rlc3RzL0Fzc29jaWF0ZWRVUkxMb2FkZXJU
ZXN0LmNwcCcsCisgICAgICAgICAgICAndGVzdHMvQ0NMYXllckltcGxUZXN0LmNwcCcsCiAgICAg
ICAgICAgICAndGVzdHMvQ0NMYXllclNvcnRlclRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0
cy9DQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvQ0NM
YXllclRyZWVIb3N0SW1wbFRlc3QuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NMYXllckltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NMYXllckltcGxUZXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMzNhOTE4YTc5ODM1NWQ0ZjJi
OTc4ZDEyZGU3ZDU5NjBhNTgyZTEyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ0xheWVySW1wbFRlc3QuY3BwCkBAIC0wLDAgKzEsMTcyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJjYy9DQ0xheWVySW1w
bC5oIgorCisjaW5jbHVkZSAiY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIgorI2luY2x1ZGUgPGdt
b2NrL2dtb2NrLmg+CisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKwordXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CisKK25hbWVzcGFjZSB7CisKKyNkZWZpbmUgRVhFQ1VURV9BTkRfVkVSSUZZX1NV
QlRSRUVfQ0hBTkdFRChjb2RlVG9UZXN0KSAgICAgICAgICAgICAgICAgIFwKKyAgICByb290LT5y
ZXNldExheWVyUHJvcGVydHlDaGFuZ2VkKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICBjaGlsZC0+cmVzZXRMYXllclByb3BlcnR5Q2hhbmdlZCgpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBncmFuZENoaWxkLT5yZXNldExheWVyUHJvcGVy
dHlDaGFuZ2VkKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjb2RlVG9UZXN0
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICBFWFBFQ1RfVFJVRShyb290LT5sYXllclByb3BlcnR5Q2hhbmdlZCgpKTsgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICBFWFBFQ1RfVFJVRShjaGlsZC0+bGF5ZXJQcm9wZXJ0
eUNoYW5nZWQoKSk7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBFWFBFQ1RfVFJVRShn
cmFuZENoaWxkLT5sYXllclByb3BlcnR5Q2hhbmdlZCgpKQorCisjZGVmaW5lIEVYRUNVVEVfQU5E
X1ZFUklGWV9TVUJUUkVFX0RJRF9OT1RfQ0hBTkdFKGNvZGVUb1Rlc3QpICAgICAgICAgICBcCisg
ICAgcm9vdC0+cmVzZXRMYXllclByb3BlcnR5Q2hhbmdlZCgpOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgY2hpbGQtPnJlc2V0TGF5ZXJQcm9wZXJ0eUNoYW5nZWQoKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZ3JhbmRDaGlsZC0+cmVzZXRM
YXllclByb3BlcnR5Q2hhbmdlZCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
Y29kZVRvVGVzdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgRVhQRUNUX0ZBTFNFKHJvb3QtPmxheWVyUHJvcGVydHlDaGFuZ2Vk
KCkpOyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRVhQRUNUX0ZBTFNFKGNoaWxkLT5s
YXllclByb3BlcnR5Q2hhbmdlZCgpKTsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRVhQ
RUNUX0ZBTFNFKGdyYW5kQ2hpbGQtPmxheWVyUHJvcGVydHlDaGFuZ2VkKCkpCisKKyNkZWZpbmUg
RVhFQ1VURV9BTkRfVkVSSUZZX09OTFlfTEFZRVJfQ0hBTkdFRChjb2RlVG9UZXN0KSAgICAgICAg
ICAgICAgIFwKKyAgICByb290LT5yZXNldExheWVyUHJvcGVydHlDaGFuZ2VkKCk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjaGlsZC0+cmVzZXRMYXllclByb3BlcnR5
Q2hhbmdlZCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBncmFuZENo
aWxkLT5yZXNldExheWVyUHJvcGVydHlDaGFuZ2VkKCk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICBjb2RlVG9UZXN0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBFWFBFQ1RfVFJVRShyb290LT5sYXllclByb3Bl
cnR5Q2hhbmdlZCgpKTsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBFWFBFQ1RfRkFM
U0UoY2hpbGQtPmxheWVyUHJvcGVydHlDaGFuZ2VkKCkpOyAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICBFWFBFQ1RfRkFMU0UoZ3JhbmRDaGlsZC0+bGF5ZXJQcm9wZXJ0eUNoYW5nZWQoKSkK
KworI2RlZmluZSBFWEVDVVRFX0FORF9WRVJJRllfT05MWV9ERVNDRU5EQU5UU19DSEFOR0VEKGNv
ZGVUb1Rlc3QpICAgICAgICAgXAorICAgIHJvb3QtPnJlc2V0TGF5ZXJQcm9wZXJ0eUNoYW5nZWQo
KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGNoaWxkLT5yZXNldExh
eWVyUHJvcGVydHlDaGFuZ2VkKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgIGdyYW5kQ2hpbGQtPnJlc2V0TGF5ZXJQcm9wZXJ0eUNoYW5nZWQoKTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgIGNvZGVUb1Rlc3Q7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEVYUEVDVF9GQUxTRShyb290
LT5sYXllclByb3BlcnR5Q2hhbmdlZCgpKTsgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
IEVYUEVDVF9UUlVFKGNoaWxkLT5sYXllclByb3BlcnR5Q2hhbmdlZCgpKTsgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgIEVYUEVDVF9UUlVFKGdyYW5kQ2hpbGQtPmxheWVyUHJvcGVydHlD
aGFuZ2VkKCkpCisKK1RFU1QoQ0NMYXllckltcGxUZXN0LCB2ZXJpZnlMYXllckNoYW5nZXNBcmVU
cmFja2VkUHJvcGVybHkpCit7CisgICAgLy8KKyAgICAvLyBUaGlzIHRlc3QgY2hlY2tzIHRoYXQg
bGF5ZXJQcm9wZXJ0eUNoYW5nZWQoKSBoYXMgdGhlIGNvcnJlY3QgYmVoYXZpb3IuCisgICAgLy8K
KworICAgIC8vIFRoZSBjb25zdHJ1Y3RvciBvbiB0aGlzIHdpbGwgZmFrZSB0aGF0IHdlIGFyZSBv
biB0aGUgY29ycmVjdCB0aHJlYWQuCisgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIHNldElt
cGxUaHJlYWQ7CisKKyAgICAvLyBDcmVhdGUgYSBzaW1wbGUgQ0NMYXllckltcGwgdHJlZToKKyAg
ICBSZWZQdHI8Q0NMYXllckltcGw+IHJvb3QgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDEpOworICAg
IFJlZlB0cjxDQ0xheWVySW1wbD4gY2hpbGQgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDIpOworICAg
IFJlZlB0cjxDQ0xheWVySW1wbD4gZ3JhbmRDaGlsZCA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMyk7
CisgICAgcm9vdC0+YWRkQ2hpbGQoY2hpbGQpOworICAgIGNoaWxkLT5hZGRDaGlsZChncmFuZENo
aWxkKTsKKworICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gZHVtbXlNYXNrID0gQ0NMYXllckltcGw6
OmNyZWF0ZSg0KTsKKyAgICBSZWZQdHI8Q0NMYXllckltcGw+IGR1bW15UmVwbGljYSA9IENDTGF5
ZXJJbXBsOjpjcmVhdGUoNSk7CisKKyAgICAvLyBBZGRpbmcgY2hpbGRyZW4gaXMgYW4gaW50ZXJu
YWwgb3BlcmF0aW9uIGFuZCBzaG91bGQgbm90IG1hcmsgbGF5ZXJzIGFzIGNoYW5nZWQuCisgICAg
RVhQRUNUX0ZBTFNFKHJvb3QtPmxheWVyUHJvcGVydHlDaGFuZ2VkKCkpOworICAgIEVYUEVDVF9G
QUxTRShjaGlsZC0+bGF5ZXJQcm9wZXJ0eUNoYW5nZWQoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGdy
YW5kQ2hpbGQtPmxheWVyUHJvcGVydHlDaGFuZ2VkKCkpOworCisgICAgRmxvYXRQb2ludCBhcmJp
dHJhcnlGbG9hdFBvaW50ID0gRmxvYXRQb2ludCgwLjEyNWYsIDAuMjVmKTsKKyAgICBmbG9hdCBh
cmJpdHJhcnlOdW1iZXIgPSAwLjM1MmY7CisgICAgSW50U2l6ZSBhcmJpdHJhcnlJbnRTaXplID0g
SW50U2l6ZSgxMTEsIDIyMik7CisgICAgSW50UG9pbnQgYXJiaXRyYXJ5SW50UG9pbnQgPSBJbnRQ
b2ludCgzMzMsIDQ0NCk7CisgICAgSW50UmVjdCBhcmJpdHJhcnlJbnRSZWN0ID0gSW50UmVjdChh
cmJpdHJhcnlJbnRQb2ludCwgYXJiaXRyYXJ5SW50U2l6ZSk7CisgICAgRmxvYXRSZWN0IGFyYml0
cmFyeUZsb2F0UmVjdCA9IEZsb2F0UmVjdChhcmJpdHJhcnlGbG9hdFBvaW50LCBGbG9hdFNpemUo
MS4yMzQsIDUuNjc4KSk7CisgICAgQ29sb3IgYXJiaXRyYXJ5Q29sb3IgPSBDb2xvcigxMCwgMjAs
IDMwKTsKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBhcmJpdHJhcnlUcmFuc2Zvcm07CisgICAg
YXJiaXRyYXJ5VHJhbnNmb3JtLnNjYWxlM2QoMC4xLCAwLjIsIDAuMyk7CisKKyAgICAvLyBDaGFu
Z2luZyB0aGVzZSBwcm9wZXJ0aWVzIGFmZmVjdHMgdGhlIGVudGlyZSBzdWJ0cmVlIG9mIGxheWVy
cy4KKyAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9DSEFOR0VEKHJvb3QtPnNldEFuY2hv
clBvaW50KGFyYml0cmFyeUZsb2F0UG9pbnQpKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VC
VFJFRV9DSEFOR0VEKHJvb3QtPnNldEFuY2hvclBvaW50WihhcmJpdHJhcnlOdW1iZXIpKTsKKyAg
ICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9DSEFOR0VEKHJvb3QtPnNldE1hc2tMYXllcihk
dW1teU1hc2spKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9DSEFOR0VEKHJvb3Qt
PnNldE1hc2tzVG9Cb3VuZHModHJ1ZSkpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVF
X0NIQU5HRUQocm9vdC0+c2V0T3BhY2l0eShhcmJpdHJhcnlOdW1iZXIpKTsKKyAgICBFWEVDVVRF
X0FORF9WRVJJRllfU1VCVFJFRV9DSEFOR0VEKHJvb3QtPnNldFJlcGxpY2FMYXllcihkdW1teVJl
cGxpY2EpKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9DSEFOR0VEKHJvb3QtPnNl
dFBvc2l0aW9uKGFyYml0cmFyeUZsb2F0UG9pbnQpKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllf
U1VCVFJFRV9DSEFOR0VEKHJvb3QtPnNldFByZXNlcnZlczNEKHRydWUpKTsKKyAgICBFWEVDVVRF
X0FORF9WRVJJRllfU1VCVFJFRV9DSEFOR0VEKHJvb3QtPnNldFRyYW5zZm9ybShhcmJpdHJhcnlU
cmFuc2Zvcm0pKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9DSEFOR0VEKHJvb3Qt
PnNldERvdWJsZVNpZGVkKGZhbHNlKSk7IC8vIGNvbnN0cnVjdG9yIGluaXRpYWxpemVzIGl0IHRv
ICJ0cnVlIi4KKyAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9DSEFOR0VEKHJvb3QtPnNj
cm9sbEJ5KGFyYml0cmFyeUludFNpemUpKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJF
RV9DSEFOR0VEKHJvb3QtPnNldFNjcm9sbERlbHRhKGFyYml0cmFyeUludFNpemUpKTsKKyAgICBF
WEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9DSEFOR0VEKHJvb3QtPnNldFNjcm9sbFBvc2l0aW9u
KGFyYml0cmFyeUludFBvaW50KSk7CisKKyAgICAvLyBDaGFuZ2luZyB0aGVzZSBwcm9wZXJ0aWVz
IG9ubHkgYWZmZWN0cyB0aGUgbGF5ZXIgaXRzZWxmLgorICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9P
TkxZX0xBWUVSX0NIQU5HRUQocm9vdC0+c2V0Q29udGVudEJvdW5kcyhhcmJpdHJhcnlJbnRTaXpl
KSk7CisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX09OTFlfTEFZRVJfQ0hBTkdFRChyb290LT5zZXRE
ZWJ1Z0JvcmRlckNvbG9yKGFyYml0cmFyeUNvbG9yKSk7CisgICAgRVhFQ1VURV9BTkRfVkVSSUZZ
X09OTFlfTEFZRVJfQ0hBTkdFRChyb290LT5zZXREZWJ1Z0JvcmRlcldpZHRoKGFyYml0cmFyeU51
bWJlcikpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9PTkxZX0xBWUVSX0NIQU5HRUQocm9vdC0+
c2V0RHJhd3NDb250ZW50KHRydWUpKTsKKworICAgIC8vIFNwZWNpYWwgY2FzZTogc3VibGF5ZXIg
dHJhbnNmb3JtIGNoYW5nZXMgYWxsIGxheWVyJ3MgZGVzY2VuZGFudHMsIGJ1dCBub3QgdGhlIGxh
eWVyIGl0c2VsZi4KKyAgICBFWEVDVVRFX0FORF9WRVJJRllfT05MWV9ERVNDRU5EQU5UU19DSEFO
R0VEKHJvb3QtPnNldFN1YmxheWVyVHJhbnNmb3JtKGFyYml0cmFyeVRyYW5zZm9ybSkpOworCisg
ICAgLy8gU3BlY2lhbCBjYXNlOiBzZXRCb3VuZHMgY2hhbmdlcyBiZWhhdmlvciBkZXBlbmRpbmcg
b24gbWFza3NUb0JvdW5kcy4KKyAgICByb290LT5zZXRNYXNrc1RvQm91bmRzKGZhbHNlKTsKKyAg
ICBFWEVDVVRFX0FORF9WRVJJRllfT05MWV9MQVlFUl9DSEFOR0VEKHJvb3QtPnNldEJvdW5kcyhJ
bnRTaXplKDEzNSwgMjQ2KSkpOworICAgIHJvb3QtPnNldE1hc2tzVG9Cb3VuZHModHJ1ZSk7Cisg
ICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfQ0hBTkdFRChyb290LT5zZXRCb3VuZHMoYXJi
aXRyYXJ5SW50U2l6ZSkpOyAvLyBzaG91bGQgYmUgYSBkaWZmZXJlbnQgc2l6ZSB0aGFuIHByZXZp
b3VzIGNhbGwsIHRvIGVuc3VyZSBpdCBtYXJrcyB0cmVlIGNoYW5nZWQuCisKKyAgICAvLyBBZnRl
ciBzZXR0aW5nIGFsbCB0aGVzZSBwcm9wZXJ0aWVzIGFscmVhZHksIHNldHRpbmcgdG8gdGhlIGV4
YWN0IHNhbWUgdmFsdWVzIGFnYWluIHNob3VsZAorICAgIC8vIG5vdCBjYXVzZSBhbnkgY2hhbmdl
LgorICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0RJRF9OT1RfQ0hBTkdFKHJvb3QtPnNl
dEFuY2hvclBvaW50KGFyYml0cmFyeUZsb2F0UG9pbnQpKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJ
RllfU1VCVFJFRV9ESURfTk9UX0NIQU5HRShyb290LT5zZXRBbmNob3JQb2ludFooYXJiaXRyYXJ5
TnVtYmVyKSk7CisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfRElEX05PVF9DSEFOR0Uo
cm9vdC0+c2V0TWFza0xheWVyKGR1bW15TWFzaykpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9T
VUJUUkVFX0RJRF9OT1RfQ0hBTkdFKHJvb3QtPnNldE1hc2tzVG9Cb3VuZHModHJ1ZSkpOworICAg
IEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0RJRF9OT1RfQ0hBTkdFKHJvb3QtPnNldFJlcGxp
Y2FMYXllcihkdW1teVJlcGxpY2EpKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9E
SURfTk9UX0NIQU5HRShyb290LT5zZXRQb3NpdGlvbihhcmJpdHJhcnlGbG9hdFBvaW50KSk7Cisg
ICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfRElEX05PVF9DSEFOR0Uocm9vdC0+c2V0UHJl
c2VydmVzM0QodHJ1ZSkpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0RJRF9OT1Rf
Q0hBTkdFKHJvb3QtPnNldFRyYW5zZm9ybShhcmJpdHJhcnlUcmFuc2Zvcm0pKTsKKyAgICBFWEVD
VVRFX0FORF9WRVJJRllfU1VCVFJFRV9ESURfTk9UX0NIQU5HRShyb290LT5zZXREb3VibGVTaWRl
ZChmYWxzZSkpOyAvLyBjb25zdHJ1Y3RvciBpbml0aWFsaXplcyBpdCB0byAidHJ1ZSIuCisgICAg
RVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfRElEX05PVF9DSEFOR0Uocm9vdC0+c2V0U2Nyb2xs
RGVsdGEoYXJiaXRyYXJ5SW50U2l6ZSkpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVF
X0RJRF9OT1RfQ0hBTkdFKHJvb3QtPnNldFNjcm9sbFBvc2l0aW9uKGFyYml0cmFyeUludFBvaW50
KSk7CisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfRElEX05PVF9DSEFOR0Uocm9vdC0+
c2V0Q29udGVudEJvdW5kcyhhcmJpdHJhcnlJbnRTaXplKSk7CisgICAgRVhFQ1VURV9BTkRfVkVS
SUZZX1NVQlRSRUVfRElEX05PVF9DSEFOR0Uocm9vdC0+c2V0T3BhY2l0eShhcmJpdHJhcnlOdW1i
ZXIpKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9ESURfTk9UX0NIQU5HRShyb290
LT5zZXREZWJ1Z0JvcmRlckNvbG9yKGFyYml0cmFyeUNvbG9yKSk7CisgICAgRVhFQ1VURV9BTkRf
VkVSSUZZX1NVQlRSRUVfRElEX05PVF9DSEFOR0Uocm9vdC0+c2V0RGVidWdCb3JkZXJXaWR0aChh
cmJpdHJhcnlOdW1iZXIpKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9ESURfTk9U
X0NIQU5HRShyb290LT5zZXREcmF3c0NvbnRlbnQodHJ1ZSkpOworICAgIEVYRUNVVEVfQU5EX1ZF
UklGWV9TVUJUUkVFX0RJRF9OT1RfQ0hBTkdFKHJvb3QtPnNldFN1YmxheWVyVHJhbnNmb3JtKGFy
Yml0cmFyeVRyYW5zZm9ybSkpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0RJRF9O
T1RfQ0hBTkdFKHJvb3QtPnNldEJvdW5kcyhhcmJpdHJhcnlJbnRTaXplKSk7CisKKyAgICAvLyBU
aGVzZSBwcm9wZXJ0aWVzIGFyZSBpbnRlcm5hbCwgYW5kIHNob3VsZCBub3QgYmUgY29uc2lkZXJl
ZCAiY2hhbmdlIiB3aGVuIHRoZXkgYXJlIHVzZWQuCisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NV
QlRSRUVfRElEX05PVF9DSEFOR0Uocm9vdC0+c2V0SXNOb25Db21wb3NpdGVkQ29udGVudCh0cnVl
KSk7CisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfRElEX05PVF9DSEFOR0Uocm9vdC0+
c2V0U2Npc3NvclJlY3QoYXJiaXRyYXJ5SW50UmVjdCkpOworICAgIEVYRUNVVEVfQU5EX1ZFUklG
WV9TVUJUUkVFX0RJRF9OT1RfQ0hBTkdFKHJvb3QtPnNldFVzZXNMYXllclNjaXNzb3IodHJ1ZSkp
OworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0RJRF9OT1RfQ0hBTkdFKHJvb3QtPnNl
dERyYXdPcGFjaXR5KGFyYml0cmFyeU51bWJlcikpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9T
VUJUUkVFX0RJRF9OT1RfQ0hBTkdFKHJvb3QtPnNldFRhcmdldFJlbmRlclN1cmZhY2UoMCkpOwor
ICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0RJRF9OT1RfQ0hBTkdFKHJvb3QtPnNldERy
YXdUcmFuc2Zvcm0oYXJiaXRyYXJ5VHJhbnNmb3JtKSk7CisgICAgRVhFQ1VURV9BTkRfVkVSSUZZ
X1NVQlRSRUVfRElEX05PVF9DSEFOR0Uocm9vdC0+c2V0U2NyZWVuU3BhY2VUcmFuc2Zvcm0oYXJi
aXRyYXJ5VHJhbnNmb3JtKSk7CisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfRElEX05P
VF9DSEFOR0Uocm9vdC0+c2V0RHJhd2FibGVDb250ZW50UmVjdChhcmJpdHJhcnlJbnRSZWN0KSk7
CisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfRElEX05PVF9DSEFOR0Uocm9vdC0+c2V0
VXBkYXRlUmVjdChhcmJpdHJhcnlGbG9hdFJlY3QpKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllf
U1VCVFJFRV9ESURfTk9UX0NIQU5HRShyb290LT5zZXRWaXNpYmxlTGF5ZXJSZWN0KGFyYml0cmFy
eUludFJlY3QpKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9ESURfTk9UX0NIQU5H
RShyb290LT5zZXRNYXhTY3JvbGxQb3NpdGlvbihhcmJpdHJhcnlJbnRTaXplKSk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112744</attachid>
            <date>2011-10-27 13:54:06 -0700</date>
            <delta_ts>2011-10-27 15:34:50 -0700</delta_ts>
            <desc>addressed reviewer comments</desc>
            <filename>bug-70442-20111027135405.patch</filename>
            <type>text/plain</type>
            <size>25967</size>
            <attacher name="Shawn Singh">shawnsingh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTg0ODIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmNjBmYzFlNmNmYjNiZDNh
NjU2M2JmNDY1NzEzOGFkZTRkOTM1NWIzLi44MGJkOWYzZTA3ZDQ3ZDgyYzcyMmJmMDljYzM2NmY5
NWZmMjk3ZTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDYgQEAKKzIwMTEtMTAtMjcgIFNoYXdu
IFNpbmdoICA8c2hhd25zaW5naEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBU
cmFjayB3aGVuIENDTGF5ZXJJbXBsIHByb3BlcnRpZXMgaGF2ZSBjaGFuZ2VkLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA0NDIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBkZXRlcm1pbmUgYSBnb29k
IHNjaXNzb3IgcmVjdCwgd2UgbXVzdCBkZXRlcm1pbmUgd2hhdAorICAgICAgICB3aWxsIGNoYW5n
ZSBvbiB0aGUgc2NyZWVuIG9uIHRoZSBuZXh0IHJlZHJhdy4gIFRoaXMgcGF0Y2gKKyAgICAgICAg
dHJhY2tzIHRoZSBuZWNlc3NhcnkgaW5mb3JtYXRpb24gb24gQ0NMYXllckltcGwgYW5kIG1hcmtz
CisgICAgICAgIGEgZmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgdGhpcyBsYXllciB3aWxsICJkYW1h
Z2UiIHRoZSBzY3JlZW4uCisgICAgICAgIFRoZSBvdGhlciBwb3J0aW9uIG9mICJjaGFuZ2UiLCB0
aGUgdXBkYXRlUmVjdCwgd2FzIGFscmVhZHkKKyAgICAgICAgbGFuZGVkIGluIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTQ0MS4KKworICAgICAgICBOZXcgdW5pdCB0
ZXN0IGFkZGVkIHRvIENDTGF5ZXJJbXBsVGVzdCB0byB0ZXN0IHRoaXMgcGF0Y2guCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6Q0NMYXllckltcGwpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NMYXllckltcGw6OnNjcm9sbEJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBs
Ojpub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWRGb3JTdWJ0cmVlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDTGF5ZXJJbXBsOjpub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWRGb3JEZXNjZW5kYW50cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6c2V0Qm91bmRzKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDTGF5ZXJJbXBsOjpzZXRNYXNrTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXll
ckltcGw6OnNldFJlcGxpY2FMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6
c2V0RHJhd3NDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpzZXRBbmNo
b3JQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6c2V0QW5jaG9yUG9pbnRa
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpzZXRNYXNrc1RvQm91bmRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpzZXRPcGFjaXR5KToKKyAgICAgICAgKFdlYkNv
cmU6OkNDTGF5ZXJJbXBsOjpzZXRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVy
SW1wbDo6c2V0UHJlc2VydmVzM0QpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OnNl
dFN1YmxheWVyVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpzZXRU
cmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OnNldERlYnVnQm9yZGVy
Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OnNldERlYnVnQm9yZGVyV2lk
dGgpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OnNldENvbnRlbnRCb3VuZHMpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OnNldFNjcm9sbFBvc2l0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpzZXRTY3JvbGxEZWx0YSk6CisgICAgICAgIChXZWJD
b3JlOjpDQ0xheWVySW1wbDo6c2V0RG91YmxlU2lkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmg6CisgICAgICAgIChXZWJDb3JlOjpDQ0xh
eWVySW1wbDo6bGF5ZXJQcm9wZXJ0eUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXll
ckltcGw6OnJlc2V0TGF5ZXJQcm9wZXJ0eUNoYW5nZWQpOgorCiAyMDExLTEwLTI2ICBLZW5uZXRo
IFJvaGRlIENocmlzdGlhbnNlbiAgPGtlbm5ldGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBQcm9w
ZXJseSBzdXNwZW5kL3Jlc3VtZSBHZW9sb2NhdGlvbi9EZXZpY2VNb3Rpb24vRGV2aWNlT3JpZW50
YXRpb24gb2JqZWN0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBhY2VlOTBmZDhiNmEz
ZmQ5NzIxMDM5ZTliNGJhODkwZGE2MDk5ZmQ1Li40OTUyYTg2YmVmZjJjY2UyMDA2ZTUzMjA4NGNj
MzE0NzU3YWVkZTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBA
CisyMDExLTEwLTI3ICBTaGF3biBTaW5naCAgPHNoYXduc2luZ2hAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFtjaHJvbWl1bV0gVHJhY2sgd2hlbiBDQ0xheWVySW1wbCBwcm9wZXJ0aWVzIGhhdmUg
Y2hhbmdlZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTcwNDQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBXZWJLaXQuZ3lwaToKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVySW1wbFRlc3QuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlRFU1QpOgorCiAyMDExLTEwLTI1ICBTdGVwaGVuIFdoaXRl
ICA8c2Vub3JibGFuY29AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gQ2FudmFz
MkQgc2hvdWxkIHJhdGUtbGltaXQgZHJhd2luZyB0byBwcmV2ZW50IHN3YW1waW5nIHRoZSBHUFUg
cHJvY2Vzcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcAppbmRleCAyYjA1ZDlmZjBkMTdlMDJiYjRl
ZTdkODNiYjBmM2IyNGZjYjc1Y2YzLi42MmE5Mzg1ZDVlMTI0M2UzYzdkZDhmYWJlMTJkNjMxMjU0
NThiYWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwCkBAIC00Myw2ICs0Myw3IEBAIENDTGF5
ZXJJbXBsOjpDQ0xheWVySW1wbChpbnQgaWQpCiAgICAgLCBtX2FuY2hvclBvaW50KDAuNSwgMC41
KQogICAgICwgbV9hbmNob3JQb2ludFooMCkKICAgICAsIG1fZG91YmxlU2lkZWQodHJ1ZSkKKyAg
ICAsIG1fbGF5ZXJQcm9wZXJ0eUNoYW5nZWQoZmFsc2UpCiAgICAgLCBtX21hc2tzVG9Cb3VuZHMo
ZmFsc2UpCiAgICAgLCBtX29wYWNpdHkoMS4wKQogICAgICwgbV9wcmVzZXJ2ZXMzRChmYWxzZSkK
QEAgLTEyNSw2ICsxMjYsNyBAQCB2b2lkIENDTGF5ZXJJbXBsOjpzY3JvbGxCeShjb25zdCBJbnRT
aXplJiBzY3JvbGwpCiAgICAgSW50U2l6ZSBtYXhEZWx0YSA9IG1fbWF4U2Nyb2xsUG9zaXRpb24g
LSB0b1NpemUobV9zY3JvbGxQb3NpdGlvbik7CiAgICAgLy8gQ2xhbXAgbmV3RGVsdGEgc28gdGhh
dCBwb3NpdGlvbiArIGRlbHRhIHN0YXlzIHdpdGhpbiBzY3JvbGwgYm91bmRzLgogICAgIG1fc2Ny
b2xsRGVsdGEgPSBuZXdEZWx0YS5leHBhbmRlZFRvKG1pbkRlbHRhKS5zaHJ1bmtUbyhtYXhEZWx0
YSk7CisgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkRm9yU3VidHJlZSgpOwogfQogCiB2b2lk
IENDTGF5ZXJJbXBsOjpjbGVhbnVwUmVzb3VyY2VzKCkKQEAgLTIyMiw2ICsyMjQsMTY3IEBAIHZv
aWQgQ0NMYXllckltcGw6OmR1bXBMYXllcihUZXh0U3RyZWFtJiB0cywgaW50IGluZGVudCkgY29u
c3QKICAgICAgICAgbV9jaGlsZHJlbltpXS0+ZHVtcExheWVyKHRzLCBpbmRlbnQrMSk7CiB9CiAK
K3ZvaWQgQ0NMYXllckltcGw6Om5vdGVMYXllclByb3BlcnR5Q2hhbmdlZEZvclN1YnRyZWUoKQor
eworICAgIG1fbGF5ZXJQcm9wZXJ0eUNoYW5nZWQgPSB0cnVlOworICAgIG5vdGVMYXllclByb3Bl
cnR5Q2hhbmdlZEZvckRlc2NlbmRhbnRzKCk7Cit9CisKK3ZvaWQgQ0NMYXllckltcGw6Om5vdGVM
YXllclByb3BlcnR5Q2hhbmdlZEZvckRlc2NlbmRhbnRzKCkKK3sKKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG1fY2hpbGRyZW4uc2l6ZSgpOyArK2kpCisgICAgICAgIG1fY2hpbGRyZW5baV0t
Pm5vdGVMYXllclByb3BlcnR5Q2hhbmdlZEZvclN1YnRyZWUoKTsKK30KKwordm9pZCBDQ0xheWVy
SW1wbDo6c2V0Qm91bmRzKGNvbnN0IEludFNpemUmIGJvdW5kcykKK3sKKyAgICBpZiAobV9ib3Vu
ZHMgIT0gYm91bmRzKSB7CisgICAgICAgIG1fYm91bmRzID0gYm91bmRzOworCisgICAgICAgIGlm
IChtYXNrc1RvQm91bmRzKCkpCisgICAgICAgICAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWRG
b3JTdWJ0cmVlKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fbGF5ZXJQcm9wZXJ0eUNo
YW5nZWQgPSB0cnVlOworICAgIH0KK30KKwordm9pZCBDQ0xheWVySW1wbDo6c2V0TWFza0xheWVy
KFBhc3NSZWZQdHI8Q0NMYXllckltcGw+IG1hc2tMYXllcikKK3sKKyAgICBpZiAobV9tYXNrTGF5
ZXIgIT0gbWFza0xheWVyKSB7CisgICAgICAgIG1fbWFza0xheWVyID0gbWFza0xheWVyOworICAg
ICAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWRGb3JTdWJ0cmVlKCk7CisgICAgfQorfQorCit2
b2lkIENDTGF5ZXJJbXBsOjpzZXRSZXBsaWNhTGF5ZXIoUGFzc1JlZlB0cjxDQ0xheWVySW1wbD4g
cmVwbGljYUxheWVyKQoreworICAgIGlmIChtX3JlcGxpY2FMYXllciAhPSByZXBsaWNhTGF5ZXIp
IHsKKyAgICAgICAgbV9yZXBsaWNhTGF5ZXIgPSByZXBsaWNhTGF5ZXI7CisgICAgICAgIG5vdGVM
YXllclByb3BlcnR5Q2hhbmdlZEZvclN1YnRyZWUoKTsKKyAgICB9Cit9CisKK3ZvaWQgQ0NMYXll
ckltcGw6OnNldERyYXdzQ29udGVudChib29sIGRyYXdzQ29udGVudCkKK3sKKyAgICBpZiAobV9k
cmF3c0NvbnRlbnQgIT0gZHJhd3NDb250ZW50KSB7CisgICAgICAgIG1fZHJhd3NDb250ZW50ID0g
ZHJhd3NDb250ZW50OworICAgICAgICBtX2xheWVyUHJvcGVydHlDaGFuZ2VkID0gdHJ1ZTsKKyAg
ICB9Cit9CisKK3ZvaWQgQ0NMYXllckltcGw6OnNldEFuY2hvclBvaW50KGNvbnN0IEZsb2F0UG9p
bnQmIGFuY2hvclBvaW50KQoreworICAgIGlmIChtX2FuY2hvclBvaW50ICE9IGFuY2hvclBvaW50
KSB7CisgICAgICAgIG1fYW5jaG9yUG9pbnQgPSBhbmNob3JQb2ludDsKKyAgICAgICAgbm90ZUxh
eWVyUHJvcGVydHlDaGFuZ2VkRm9yU3VidHJlZSgpOworICAgIH0KK30KKwordm9pZCBDQ0xheWVy
SW1wbDo6c2V0QW5jaG9yUG9pbnRaKGZsb2F0IGFuY2hvclBvaW50WikKK3sKKyAgICBpZiAobV9h
bmNob3JQb2ludFogIT0gYW5jaG9yUG9pbnRaKSB7CisgICAgICAgIG1fYW5jaG9yUG9pbnRaID0g
YW5jaG9yUG9pbnRaOworICAgICAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWRGb3JTdWJ0cmVl
KCk7CisgICAgfQorfQorCit2b2lkIENDTGF5ZXJJbXBsOjpzZXRNYXNrc1RvQm91bmRzKGJvb2wg
bWFza3NUb0JvdW5kcykKK3sKKyAgICBpZiAobV9tYXNrc1RvQm91bmRzICE9IG1hc2tzVG9Cb3Vu
ZHMpIHsKKyAgICAgICAgbV9tYXNrc1RvQm91bmRzID0gbWFza3NUb0JvdW5kczsKKyAgICAgICAg
bm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkRm9yU3VidHJlZSgpOworICAgIH0KK30KKwordm9pZCBD
Q0xheWVySW1wbDo6c2V0T3BhY2l0eShmbG9hdCBvcGFjaXR5KQoreworICAgIGlmIChtX29wYWNp
dHkgIT0gb3BhY2l0eSkgeworICAgICAgICBtX29wYWNpdHkgPSBvcGFjaXR5OworICAgICAgICBu
b3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWRGb3JTdWJ0cmVlKCk7CisgICAgfQorfQorCit2b2lkIEND
TGF5ZXJJbXBsOjpzZXRQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbikKK3sKKyAg
ICBpZiAobV9wb3NpdGlvbiAhPSBwb3NpdGlvbikgeworICAgICAgICBtX3Bvc2l0aW9uID0gcG9z
aXRpb247CisgICAgICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZEZvclN1YnRyZWUoKTsKKyAg
ICB9Cit9CisKK3ZvaWQgQ0NMYXllckltcGw6OnNldFByZXNlcnZlczNEKGJvb2wgcHJlc2VydmVz
M0QpCit7CisgICAgaWYgKG1fcHJlc2VydmVzM0QgIT0gcHJlc2VydmVzM0QpIHsKKyAgICAgICAg
bV9wcmVzZXJ2ZXMzRCA9IHByZXNlcnZlczNEOworICAgICAgICBub3RlTGF5ZXJQcm9wZXJ0eUNo
YW5nZWRGb3JTdWJ0cmVlKCk7CisgICAgfQorfQorCit2b2lkIENDTGF5ZXJJbXBsOjpzZXRTdWJs
YXllclRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgc3VibGF5ZXJUcmFuc2Zv
cm0pCit7CisgICAgaWYgKG1fc3VibGF5ZXJUcmFuc2Zvcm0gIT0gc3VibGF5ZXJUcmFuc2Zvcm0p
IHsKKyAgICAgICAgbV9zdWJsYXllclRyYW5zZm9ybSA9IHN1YmxheWVyVHJhbnNmb3JtOworICAg
ICAgICAvLyBzdWJsYXllciB0cmFuc2Zvcm0gZG9lcyBub3QgYWZmZWN0IHRoZSBjdXJyZW50IGxh
eWVyOyBpdCBhZmZlY3RzIG9ubHkgaXRzIGNoaWxkcmVuLgorICAgICAgICBub3RlTGF5ZXJQcm9w
ZXJ0eUNoYW5nZWRGb3JEZXNjZW5kYW50cygpOworICAgIH0KK30KKwordm9pZCBDQ0xheWVySW1w
bDo6c2V0VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0pCit7
CisgICAgaWYgKG1fdHJhbnNmb3JtICE9IHRyYW5zZm9ybSkgeworICAgICAgICBtX3RyYW5zZm9y
bSA9IHRyYW5zZm9ybTsKKyAgICAgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkRm9yU3VidHJl
ZSgpOworICAgIH0KK30KKwordm9pZCBDQ0xheWVySW1wbDo6c2V0RGVidWdCb3JkZXJDb2xvcihD
b2xvciBkZWJ1Z0JvcmRlckNvbG9yKQoreworICAgIGlmIChtX2RlYnVnQm9yZGVyQ29sb3IgIT0g
ZGVidWdCb3JkZXJDb2xvcikgeworICAgICAgICBtX2RlYnVnQm9yZGVyQ29sb3IgPSBkZWJ1Z0Jv
cmRlckNvbG9yOworICAgICAgICBtX2xheWVyUHJvcGVydHlDaGFuZ2VkID0gdHJ1ZTsKKyAgICB9
Cit9CisKK3ZvaWQgQ0NMYXllckltcGw6OnNldERlYnVnQm9yZGVyV2lkdGgoZmxvYXQgZGVidWdC
b3JkZXJXaWR0aCkKK3sKKyAgICBpZiAobV9kZWJ1Z0JvcmRlcldpZHRoICE9IGRlYnVnQm9yZGVy
V2lkdGgpIHsKKyAgICAgICAgbV9kZWJ1Z0JvcmRlcldpZHRoID0gZGVidWdCb3JkZXJXaWR0aDsK
KyAgICAgICAgbV9sYXllclByb3BlcnR5Q2hhbmdlZCA9IHRydWU7CisgICAgfQorfQorCit2b2lk
IENDTGF5ZXJJbXBsOjpzZXRDb250ZW50Qm91bmRzKGNvbnN0IEludFNpemUmIGNvbnRlbnRCb3Vu
ZHMpCit7CisgICAgaWYgKG1fY29udGVudEJvdW5kcyAhPSBjb250ZW50Qm91bmRzKSB7CisgICAg
ICAgIG1fY29udGVudEJvdW5kcyA9IGNvbnRlbnRCb3VuZHM7CisgICAgICAgIG1fbGF5ZXJQcm9w
ZXJ0eUNoYW5nZWQgPSB0cnVlOworICAgIH0KK30KKwordm9pZCBDQ0xheWVySW1wbDo6c2V0U2Ny
b2xsUG9zaXRpb24oY29uc3QgSW50UG9pbnQmIHNjcm9sbFBvc2l0aW9uKQoreworICAgIGlmICht
X3Njcm9sbFBvc2l0aW9uICE9IHNjcm9sbFBvc2l0aW9uKSB7CisgICAgICAgIG1fc2Nyb2xsUG9z
aXRpb24gPSBzY3JvbGxQb3NpdGlvbjsKKyAgICAgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2Vk
Rm9yU3VidHJlZSgpOworICAgIH0KK30KKwordm9pZCBDQ0xheWVySW1wbDo6c2V0U2Nyb2xsRGVs
dGEoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEpCit7CisgICAgaWYgKG1fc2Nyb2xsRGVsdGEg
IT0gc2Nyb2xsRGVsdGEpIHsKKyAgICAgICAgbV9zY3JvbGxEZWx0YSA9IHNjcm9sbERlbHRhOwor
ICAgICAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWRGb3JTdWJ0cmVlKCk7CisgICAgfQorfQor
Cit2b2lkIENDTGF5ZXJJbXBsOjpzZXREb3VibGVTaWRlZChib29sIGRvdWJsZVNpZGVkKQorewor
ICAgIGlmIChtX2RvdWJsZVNpZGVkICE9IGRvdWJsZVNpZGVkKSB7CisgICAgICAgIG1fZG91Ymxl
U2lkZWQgPSBkb3VibGVTaWRlZDsKKyAgICAgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkRm9y
U3VidHJlZSgpOworICAgIH0KK30KKwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCmluZGV4IDM5
YzZmOGUxMGJhMGY4NzdiOTJhZmExMzBmNDExODQzNGZhNWVjYTQuLmVkYTA3M2RkZGZmNGMxMGUw
NjU1NzExZjI1YzRmMTBjNTRmZDQ2YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaApAQCAtNTgsMTAg
KzU4LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZUZyb21QYXJlbnQoKTsKICAgICB2b2lk
IHJlbW92ZUFsbENoaWxkcmVuKCk7CiAKLSAgICB2b2lkIHNldE1hc2tMYXllcihQYXNzUmVmUHRy
PENDTGF5ZXJJbXBsPiBtYXNrTGF5ZXIpIHsgbV9tYXNrTGF5ZXIgPSBtYXNrTGF5ZXI7IH0KKyAg
ICB2b2lkIHNldE1hc2tMYXllcihQYXNzUmVmUHRyPENDTGF5ZXJJbXBsPik7CiAgICAgQ0NMYXll
ckltcGwqIG1hc2tMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fbWFza0xheWVyLmdldCgpOyB9CiAK
LSAgICB2b2lkIHNldFJlcGxpY2FMYXllcihQYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiByZXBsaWNh
TGF5ZXIpIHsgbV9yZXBsaWNhTGF5ZXIgPSByZXBsaWNhTGF5ZXI7IH0KKyAgICB2b2lkIHNldFJl
cGxpY2FMYXllcihQYXNzUmVmUHRyPENDTGF5ZXJJbXBsPik7CiAgICAgQ0NMYXllckltcGwqIHJl
cGxpY2FMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVwbGljYUxheWVyLmdldCgpOyB9CiAKICAg
ICBpbnQgaWQoKSBjb25zdCB7IHJldHVybiBtX2xheWVySWQ7IH0KQEAgLTc1LDcgKzc1LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBiaW5kQ29udGVudHNUZXh0dXJlKExheWVyUmVuZGVy
ZXJDaHJvbWl1bSopOwogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMgbGF5ZXIgaGFzIGNv
bnRlbnQgdG8gZHJhdy4KLSAgICB2b2lkIHNldERyYXdzQ29udGVudChib29sIGRyYXdzQ29udGVu
dCkgeyBtX2RyYXdzQ29udGVudCA9IGRyYXdzQ29udGVudDsgfQorICAgIHZvaWQgc2V0RHJhd3ND
b250ZW50KGJvb2wpOwogICAgIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3QgeyByZXR1cm4gbV9k
cmF3c0NvbnRlbnQ7IH0KIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBhbnkgb2YgdGhlIGxheWVy
J3MgZGVzY2VuZGFudHMgaGFzIGNvbnRlbnQgdG8gZHJhdy4KQEAgLTgzLDIyICs4MywyMiBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIGNsZWFudXBSZXNvdXJjZXMoKTsKIAotICAgIHZvaWQgc2V0QW5j
aG9yUG9pbnQoY29uc3QgRmxvYXRQb2ludCYgYW5jaG9yUG9pbnQpIHsgbV9hbmNob3JQb2ludCA9
IGFuY2hvclBvaW50OyB9CisgICAgdm9pZCBzZXRBbmNob3JQb2ludChjb25zdCBGbG9hdFBvaW50
Jik7CiAgICAgY29uc3QgRmxvYXRQb2ludCYgYW5jaG9yUG9pbnQoKSBjb25zdCB7IHJldHVybiBt
X2FuY2hvclBvaW50OyB9CiAKLSAgICB2b2lkIHNldEFuY2hvclBvaW50WihmbG9hdCBhbmNob3JQ
b2ludFopIHsgbV9hbmNob3JQb2ludFogPSBhbmNob3JQb2ludFo7IH0KKyAgICB2b2lkIHNldEFu
Y2hvclBvaW50WihmbG9hdCk7CiAgICAgZmxvYXQgYW5jaG9yUG9pbnRaKCkgY29uc3QgeyByZXR1
cm4gbV9hbmNob3JQb2ludFo7IH0KIAotICAgIHZvaWQgc2V0TWFza3NUb0JvdW5kcyhib29sIG1h
c2tzVG9Cb3VuZHMpIHsgbV9tYXNrc1RvQm91bmRzID0gbWFza3NUb0JvdW5kczsgfQorICAgIHZv
aWQgc2V0TWFza3NUb0JvdW5kcyhib29sKTsKICAgICBib29sIG1hc2tzVG9Cb3VuZHMoKSBjb25z
dCB7IHJldHVybiBtX21hc2tzVG9Cb3VuZHM7IH0KIAotICAgIHZvaWQgc2V0T3BhY2l0eShmbG9h
dCBvcGFjaXR5KSB7IG1fb3BhY2l0eSA9IG9wYWNpdHk7IH0KKyAgICB2b2lkIHNldE9wYWNpdHko
ZmxvYXQpOwogICAgIGZsb2F0IG9wYWNpdHkoKSBjb25zdCB7IHJldHVybiBtX29wYWNpdHk7IH0K
IAotICAgIHZvaWQgc2V0UG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24pIHsgbV9w
b3NpdGlvbiA9IHBvc2l0aW9uOyB9CisgICAgdm9pZCBzZXRQb3NpdGlvbihjb25zdCBGbG9hdFBv
aW50Jik7CiAgICAgY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBt
X3Bvc2l0aW9uOyB9CiAKLSAgICB2b2lkIHNldFByZXNlcnZlczNEKGJvb2wgcHJlc2VydmVzM0Qp
IHsgbV9wcmVzZXJ2ZXMzRCA9IHByZXNlcnZlczNEOyB9CisgICAgdm9pZCBzZXRQcmVzZXJ2ZXMz
RChib29sKTsKICAgICBib29sIHByZXNlcnZlczNEKCkgY29uc3QgeyByZXR1cm4gbV9wcmVzZXJ2
ZXMzRDsgfQogCiAgICAgdm9pZCBzZXRVc2VzTGF5ZXJTY2lzc29yKGJvb2wgdXNlc0xheWVyU2Np
c3NvcikgeyBtX3VzZXNMYXllclNjaXNzb3IgPSB1c2VzTGF5ZXJTY2lzc29yOyB9CkBAIC0xMDcs
MTkgKzEwNywxOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJc05vbkNvbXBvc2l0ZWRDb250ZW50
KGJvb2wgaXNOb25Db21wb3NpdGVkQ29udGVudCkgeyBtX2lzTm9uQ29tcG9zaXRlZENvbnRlbnQg
PSBpc05vbkNvbXBvc2l0ZWRDb250ZW50OyB9CiAgICAgYm9vbCBpc05vbkNvbXBvc2l0ZWRDb250
ZW50KCkgY29uc3QgeyByZXR1cm4gbV9pc05vbkNvbXBvc2l0ZWRDb250ZW50OyB9CiAKLSAgICB2
b2lkIHNldFN1YmxheWVyVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBzdWJs
YXllclRyYW5zZm9ybSkgeyBtX3N1YmxheWVyVHJhbnNmb3JtID0gc3VibGF5ZXJUcmFuc2Zvcm07
IH0KKyAgICB2b2lkIHNldFN1YmxheWVyVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4Jik7CiAgICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHN1YmxheWVyVHJhbnNmb3Jt
KCkgY29uc3QgeyByZXR1cm4gbV9zdWJsYXllclRyYW5zZm9ybTsgfQogCi0gICAgdm9pZCBzZXRU
cmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSkgeyBtX3RyYW5z
Zm9ybSA9IHRyYW5zZm9ybTsgfQorICAgIHZvaWQgc2V0VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4Jik7CiAgICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9y
bSgpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNmb3JtOyB9CiAKICAgICB2b2lkIHNldE5hbWUoY29u
c3QgU3RyaW5nJiBuYW1lKSB7IG1fbmFtZSA9IG5hbWU7IH0KICAgICBjb25zdCBTdHJpbmcmIG5h
bWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KIAogICAgIC8vIERlYnVnIGxheWVyIGJvcmRl
ciAtIHZpc3VhbCBlZmZlY3Qgb25seSwgZG8gbm90IGNoYW5nZSBnZW9tZXRyeS9jbGlwcGluZy9l
dGMuCi0gICAgdm9pZCBzZXREZWJ1Z0JvcmRlckNvbG9yKENvbG9yIGMpIHsgbV9kZWJ1Z0JvcmRl
ckNvbG9yID0gYzsgfQorICAgIHZvaWQgc2V0RGVidWdCb3JkZXJDb2xvcihDb2xvcik7CiAgICAg
Q29sb3IgZGVidWdCb3JkZXJDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdCb3JkZXJDb2xv
cjsgfQotICAgIHZvaWQgc2V0RGVidWdCb3JkZXJXaWR0aChmbG9hdCB3aWR0aCkgeyBtX2RlYnVn
Qm9yZGVyV2lkdGggPSB3aWR0aDsgfQorICAgIHZvaWQgc2V0RGVidWdCb3JkZXJXaWR0aChmbG9h
dCk7CiAgICAgZmxvYXQgZGVidWdCb3JkZXJXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdC
b3JkZXJXaWR0aDsgfQogCiAgICAgdm9pZCBkcmF3RGVidWdCb3JkZXIoTGF5ZXJSZW5kZXJlckNo
cm9taXVtKik7CkBAIC0xMzcsMTkgKzEzNywxOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRUYXJn
ZXRSZW5kZXJTdXJmYWNlKENDUmVuZGVyU3VyZmFjZSogc3VyZmFjZSkgeyBtX3RhcmdldFJlbmRl
clN1cmZhY2UgPSBzdXJmYWNlOyB9CiAKICAgICBjb25zdCBJbnRTaXplJiBib3VuZHMoKSBjb25z
dCB7IHJldHVybiBtX2JvdW5kczsgfQotICAgIHZvaWQgc2V0Qm91bmRzKGNvbnN0IEludFNpemUm
IGJvdW5kcykgeyBtX2JvdW5kcyA9IGJvdW5kczsgfQorICAgIHZvaWQgc2V0Qm91bmRzKGNvbnN0
IEludFNpemUmKTsKIAogICAgIGNvbnN0IEludFNpemUmIGNvbnRlbnRCb3VuZHMoKSBjb25zdCB7
IHJldHVybiBtX2NvbnRlbnRCb3VuZHM7IH0KLSAgICB2b2lkIHNldENvbnRlbnRCb3VuZHMoY29u
c3QgSW50U2l6ZSYgY29udGVudEJvdW5kcykgeyBtX2NvbnRlbnRCb3VuZHMgPSBjb250ZW50Qm91
bmRzOyB9CisgICAgdm9pZCBzZXRDb250ZW50Qm91bmRzKGNvbnN0IEludFNpemUmKTsKIAogICAg
IGNvbnN0IEludFBvaW50JiBzY3JvbGxQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xs
UG9zaXRpb247IH0KLSAgICB2b2lkIHNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IEludFBvaW50JiBz
Y3JvbGxQb3NpdGlvbikgeyBtX3Njcm9sbFBvc2l0aW9uID0gc2Nyb2xsUG9zaXRpb247IH0KKyAg
ICB2b2lkIHNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IEludFBvaW50Jik7CiAKICAgICBjb25zdCBJ
bnRTaXplJiBtYXhTY3JvbGxQb3NpdGlvbigpIGNvbnN0IHtyZXR1cm4gbV9tYXhTY3JvbGxQb3Np
dGlvbjsgfQogICAgIHZvaWQgc2V0TWF4U2Nyb2xsUG9zaXRpb24oY29uc3QgSW50U2l6ZSYgbWF4
U2Nyb2xsUG9zaXRpb24pIHsgbV9tYXhTY3JvbGxQb3NpdGlvbiA9IG1heFNjcm9sbFBvc2l0aW9u
OyB9CiAKICAgICBjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSgpIGNvbnN0IHsgcmV0dXJuIG1f
c2Nyb2xsRGVsdGE7IH0KLSAgICB2b2lkIHNldFNjcm9sbERlbHRhKGNvbnN0IEludFNpemUmIHNj
cm9sbERlbHRhKSB7IG1fc2Nyb2xsRGVsdGEgPSBzY3JvbGxEZWx0YTsgfQorICAgIHZvaWQgc2V0
U2Nyb2xsRGVsdGEoY29uc3QgSW50U2l6ZSYpOwogCiAgICAgdm9pZCBzY3JvbGxCeShjb25zdCBJ
bnRTaXplJiBzY3JvbGwpOwogICAgIGJvb2wgc2Nyb2xsYWJsZSgpIGNvbnN0IHsgcmV0dXJuICFt
YXhTY3JvbGxQb3NpdGlvbigpLmlzWmVybygpOyB9CkBAIC0xNTgsNyArMTU4LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0VmlzaWJsZUxheWVyUmVjdChjb25zdCBJbnRSZWN0JiB2aXNpYmxlTGF5
ZXJSZWN0KSB7IG1fdmlzaWJsZUxheWVyUmVjdCA9IHZpc2libGVMYXllclJlY3Q7IH0KIAogICAg
IGJvb2wgZG91YmxlU2lkZWQoKSBjb25zdCB7IHJldHVybiBtX2RvdWJsZVNpZGVkOyB9Ci0gICAg
dm9pZCBzZXREb3VibGVTaWRlZChib29sIGRvdWJsZVNpZGVkKSB7IG1fZG91YmxlU2lkZWQgPSBk
b3VibGVTaWRlZDsgfQorICAgIHZvaWQgc2V0RG91YmxlU2lkZWQoYm9vbCk7CiAKICAgICAvLyBS
ZXR1cm5zIHRoZSByZWN0IGNvbnRhaW50YWluaW5nIHRoaXMgbGF5ZXIgaW4gdGhlIGN1cnJlbnQg
dmlldydzIGNvb3JkaW5hdGUgc3lzdGVtLgogICAgIGNvbnN0IEludFJlY3QgZ2V0RHJhd1JlY3Qo
KSBjb25zdDsKQEAgLTE3NCw2ICsxNzQsOSBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgbGF5ZXJU
cmVlQXNUZXh0KCkgY29uc3Q7CiAKKyAgICBib29sIGxheWVyUHJvcGVydHlDaGFuZ2VkKCkgY29u
c3QgeyByZXR1cm4gbV9sYXllclByb3BlcnR5Q2hhbmdlZDsgfQorICAgIHZvaWQgcmVzZXRMYXll
clByb3BlcnR5Q2hhbmdlZCgpIHsgbV9sYXllclByb3BlcnR5Q2hhbmdlZCA9IGZhbHNlOyB9CisK
IHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBDQ0xheWVySW1wbChpbnQpOwogCkBAIC0xODUsNiAr
MTg4LDExIEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFRyZWVTeW5jaHJvbml6ZXI7CiAg
ICAgdm9pZCBjbGVhckNoaWxkTGlzdCgpOyAvLyBXYXJuaW5nOiBUaGlzIGRvZXMgbm90IHByZXNl
cnZlIHRyZWUgc3RydWN0dXJlIGludmFyaWFudHMgYW5kIHNvIGlzIG9ubHkgZXhwb3NlZCB0byB0
aGUgdHJlZSBzeW5jaHJvbml6ZXIuCiAKKyAgICB2b2lkIG5vdGVMYXllclByb3BlcnR5Q2hhbmdl
ZEZvclN1YnRyZWUoKTsKKworICAgIC8vIE5vdGUgY2FyZWZ1bGx5IHRoaXMgZG9lcyBub3QgYWZm
ZWN0IHRoZSBjdXJyZW50IGxheWVyLgorICAgIHZvaWQgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2Vk
Rm9yRGVzY2VuZGFudHMoKTsKKwogICAgIHZpcnR1YWwgY29uc3QgY2hhciogbGF5ZXJUeXBlQXNT
dHJpbmcoKSBjb25zdCB7IHJldHVybiAiTGF5ZXJDaHJvbWl1bSI7IH0KIAogICAgIHZvaWQgZHVt
cExheWVyKFRleHRTdHJlYW0mLCBpbnQgaW5kZW50KSBjb25zdDsKQEAgLTIwNyw2ICsyMTUsOSBA
QCBwcml2YXRlOgogICAgIC8vIFdoZXRoZXIgdGhlICJiYWNrIiBvZiB0aGlzIGxheWVyIHNob3Vs
ZCBkcmF3LgogICAgIGJvb2wgbV9kb3VibGVTaWRlZDsKIAorICAgIC8vIFRyYWNrcyBpZiBkcmF3
aW5nLXJlbGF0ZWQgcHJvcGVydGllcyBoYXZlIGNoYW5nZWQgc2luY2UgbGFzdCByZWRyYXcuCisg
ICAgYm9vbCBtX2xheWVyUHJvcGVydHlDaGFuZ2VkOworCiAgICAgSW50UmVjdCBtX3Zpc2libGVM
YXllclJlY3Q7CiAgICAgYm9vbCBtX21hc2tzVG9Cb3VuZHM7CiAgICAgZmxvYXQgbV9vcGFjaXR5
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaSBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKaW5kZXggYTQ4OTFmYWIxNzlmMDJhZmQ2NGRm
MWExMGEwMTYyNzQxNDZlY2I2Yi4uMzMzMTM1ZjkzMTUwZmM1NmNjMWE4ODgzMDY0NDYxNDJjM2Nj
MWU3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCkBAIC01NCw2ICs1NCw3IEBACiAg
ICAgICAgICd3ZWJraXRfdW5pdHRlc3RfZmlsZXMnOiBbCiAgICAgICAgICAgICAndGVzdHMvQXJl
bmFUZXN0SGVscGVycy5oJywKICAgICAgICAgICAgICd0ZXN0cy9Bc3NvY2lhdGVkVVJMTG9hZGVy
VGVzdC5jcHAnLAorICAgICAgICAgICAgJ3Rlc3RzL0NDTGF5ZXJJbXBsVGVzdC5jcHAnLAogICAg
ICAgICAgICAgJ3Rlc3RzL0NDTGF5ZXJTb3J0ZXJUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVz
dHMvQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0ND
TGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDTGF5ZXJJbXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDTGF5ZXJJbXBsVGVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzU1MDdhNWM3Zjc2ZTk2Mzc4
YmRhNzIyODQ2M2NmYzcwNGNjY2NmNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NMYXllckltcGxUZXN0LmNwcApAQCAtMCwwICsxLDE2OSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICog
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiY2MvQ0NMYXllcklt
cGwuaCIKKworI2luY2x1ZGUgImNjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCIKKyNpbmNsdWRlIDxn
bW9jay9nbW9jay5oPgorI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisKK3VzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOworCituYW1lc3BhY2UgeworCisjZGVmaW5lIEVYRUNVVEVfQU5EX1ZFUklGWV9T
VUJUUkVFX0NIQU5HRUQoY29kZVRvVGVzdCkgICAgICAgICAgICAgICAgICBcCisgICAgcm9vdC0+
cmVzZXRMYXllclByb3BlcnR5Q2hhbmdlZCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgY2hpbGQtPnJlc2V0TGF5ZXJQcm9wZXJ0eUNoYW5nZWQoKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZ3JhbmRDaGlsZC0+cmVzZXRMYXllclByb3Bl
cnR5Q2hhbmdlZCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY29kZVRvVGVz
dDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgRVhQRUNUX1RSVUUocm9vdC0+bGF5ZXJQcm9wZXJ0eUNoYW5nZWQoKSk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgRVhQRUNUX1RSVUUoY2hpbGQtPmxheWVyUHJvcGVy
dHlDaGFuZ2VkKCkpOyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRVhQRUNUX1RSVUUo
Z3JhbmRDaGlsZC0+bGF5ZXJQcm9wZXJ0eUNoYW5nZWQoKSkKKworI2RlZmluZSBFWEVDVVRFX0FO
RF9WRVJJRllfU1VCVFJFRV9ESURfTk9UX0NIQU5HRShjb2RlVG9UZXN0KSAgICAgICAgICAgXAor
ICAgIHJvb3QtPnJlc2V0TGF5ZXJQcm9wZXJ0eUNoYW5nZWQoKTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgIGNoaWxkLT5yZXNldExheWVyUHJvcGVydHlDaGFuZ2VkKCk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGdyYW5kQ2hpbGQtPnJlc2V0
TGF5ZXJQcm9wZXJ0eUNoYW5nZWQoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
IGNvZGVUb1Rlc3Q7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgIEVYUEVDVF9GQUxTRShyb290LT5sYXllclByb3BlcnR5Q2hhbmdl
ZCgpKTsgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEVYUEVDVF9GQUxTRShjaGlsZC0+
bGF5ZXJQcm9wZXJ0eUNoYW5nZWQoKSk7ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEVY
UEVDVF9GQUxTRShncmFuZENoaWxkLT5sYXllclByb3BlcnR5Q2hhbmdlZCgpKQorCisjZGVmaW5l
IEVYRUNVVEVfQU5EX1ZFUklGWV9PTkxZX0xBWUVSX0NIQU5HRUQoY29kZVRvVGVzdCkgICAgICAg
ICAgICAgICBcCisgICAgcm9vdC0+cmVzZXRMYXllclByb3BlcnR5Q2hhbmdlZCgpOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2hpbGQtPnJlc2V0TGF5ZXJQcm9wZXJ0
eUNoYW5nZWQoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZ3JhbmRD
aGlsZC0+cmVzZXRMYXllclByb3BlcnR5Q2hhbmdlZCgpOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgY29kZVRvVGVzdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRVhQRUNUX1RSVUUocm9vdC0+bGF5ZXJQcm9w
ZXJ0eUNoYW5nZWQoKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRVhQRUNUX0ZB
TFNFKGNoaWxkLT5sYXllclByb3BlcnR5Q2hhbmdlZCgpKTsgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgRVhQRUNUX0ZBTFNFKGdyYW5kQ2hpbGQtPmxheWVyUHJvcGVydHlDaGFuZ2VkKCkp
CisKK1RFU1QoQ0NMYXllckltcGxUZXN0LCB2ZXJpZnlMYXllckNoYW5nZXNBcmVUcmFja2VkUHJv
cGVybHkpCit7CisgICAgLy8KKyAgICAvLyBUaGlzIHRlc3QgY2hlY2tzIHRoYXQgbGF5ZXJQcm9w
ZXJ0eUNoYW5nZWQoKSBoYXMgdGhlIGNvcnJlY3QgYmVoYXZpb3IuCisgICAgLy8KKworICAgIC8v
IFRoZSBjb25zdHJ1Y3RvciBvbiB0aGlzIHdpbGwgZmFrZSB0aGF0IHdlIGFyZSBvbiB0aGUgY29y
cmVjdCB0aHJlYWQuCisgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIHNldEltcGxUaHJlYWQ7
CisKKyAgICAvLyBDcmVhdGUgYSBzaW1wbGUgQ0NMYXllckltcGwgdHJlZToKKyAgICBSZWZQdHI8
Q0NMYXllckltcGw+IHJvb3QgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDEpOworICAgIFJlZlB0cjxD
Q0xheWVySW1wbD4gY2hpbGQgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDIpOworICAgIFJlZlB0cjxD
Q0xheWVySW1wbD4gZ3JhbmRDaGlsZCA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMyk7CisgICAgcm9v
dC0+YWRkQ2hpbGQoY2hpbGQpOworICAgIGNoaWxkLT5hZGRDaGlsZChncmFuZENoaWxkKTsKKwor
ICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gZHVtbXlNYXNrID0gQ0NMYXllckltcGw6OmNyZWF0ZSg0
KTsKKyAgICBSZWZQdHI8Q0NMYXllckltcGw+IGR1bW15UmVwbGljYSA9IENDTGF5ZXJJbXBsOjpj
cmVhdGUoNSk7CisKKyAgICAvLyBBZGRpbmcgY2hpbGRyZW4gaXMgYW4gaW50ZXJuYWwgb3BlcmF0
aW9uIGFuZCBzaG91bGQgbm90IG1hcmsgbGF5ZXJzIGFzIGNoYW5nZWQuCisgICAgRVhQRUNUX0ZB
TFNFKHJvb3QtPmxheWVyUHJvcGVydHlDaGFuZ2VkKCkpOworICAgIEVYUEVDVF9GQUxTRShjaGls
ZC0+bGF5ZXJQcm9wZXJ0eUNoYW5nZWQoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGdyYW5kQ2hpbGQt
PmxheWVyUHJvcGVydHlDaGFuZ2VkKCkpOworCisgICAgRmxvYXRQb2ludCBhcmJpdHJhcnlGbG9h
dFBvaW50ID0gRmxvYXRQb2ludCgwLjEyNWYsIDAuMjVmKTsKKyAgICBmbG9hdCBhcmJpdHJhcnlO
dW1iZXIgPSAwLjM1MmY7CisgICAgSW50U2l6ZSBhcmJpdHJhcnlJbnRTaXplID0gSW50U2l6ZSgx
MTEsIDIyMik7CisgICAgSW50UG9pbnQgYXJiaXRyYXJ5SW50UG9pbnQgPSBJbnRQb2ludCgzMzMs
IDQ0NCk7CisgICAgSW50UmVjdCBhcmJpdHJhcnlJbnRSZWN0ID0gSW50UmVjdChhcmJpdHJhcnlJ
bnRQb2ludCwgYXJiaXRyYXJ5SW50U2l6ZSk7CisgICAgRmxvYXRSZWN0IGFyYml0cmFyeUZsb2F0
UmVjdCA9IEZsb2F0UmVjdChhcmJpdHJhcnlGbG9hdFBvaW50LCBGbG9hdFNpemUoMS4yMzQsIDUu
Njc4KSk7CisgICAgQ29sb3IgYXJiaXRyYXJ5Q29sb3IgPSBDb2xvcigxMCwgMjAsIDMwKTsKKyAg
ICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBhcmJpdHJhcnlUcmFuc2Zvcm07CisgICAgYXJiaXRyYXJ5
VHJhbnNmb3JtLnNjYWxlM2QoMC4xLCAwLjIsIDAuMyk7CisKKyAgICAvLyBDaGFuZ2luZyB0aGVz
ZSBwcm9wZXJ0aWVzIGFmZmVjdHMgdGhlIGVudGlyZSBzdWJ0cmVlIG9mIGxheWVycy4KKyAgICBF
WEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9DSEFOR0VEKHJvb3QtPnNldEFuY2hvclBvaW50KGFy
Yml0cmFyeUZsb2F0UG9pbnQpKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9DSEFO
R0VEKHJvb3QtPnNldEFuY2hvclBvaW50WihhcmJpdHJhcnlOdW1iZXIpKTsKKyAgICBFWEVDVVRF
X0FORF9WRVJJRllfU1VCVFJFRV9DSEFOR0VEKHJvb3QtPnNldE1hc2tMYXllcihkdW1teU1hc2sp
KTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9DSEFOR0VEKHJvb3QtPnNldE1hc2tz
VG9Cb3VuZHModHJ1ZSkpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0NIQU5HRUQo
cm9vdC0+c2V0T3BhY2l0eShhcmJpdHJhcnlOdW1iZXIpKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJ
RllfU1VCVFJFRV9DSEFOR0VEKHJvb3QtPnNldFJlcGxpY2FMYXllcihkdW1teVJlcGxpY2EpKTsK
KyAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9DSEFOR0VEKHJvb3QtPnNldFBvc2l0aW9u
KGFyYml0cmFyeUZsb2F0UG9pbnQpKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9D
SEFOR0VEKHJvb3QtPnNldFByZXNlcnZlczNEKHRydWUpKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJ
RllfU1VCVFJFRV9DSEFOR0VEKHJvb3QtPnNldFRyYW5zZm9ybShhcmJpdHJhcnlUcmFuc2Zvcm0p
KTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9DSEFOR0VEKHJvb3QtPnNldERvdWJs
ZVNpZGVkKGZhbHNlKSk7IC8vIGNvbnN0cnVjdG9yIGluaXRpYWxpemVzIGl0IHRvICJ0cnVlIi4K
KyAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9DSEFOR0VEKHJvb3QtPnNjcm9sbEJ5KGFy
Yml0cmFyeUludFNpemUpKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9DSEFOR0VE
KHJvb3QtPnNldFNjcm9sbERlbHRhKGFyYml0cmFyeUludFNpemUpKTsKKyAgICBFWEVDVVRFX0FO
RF9WRVJJRllfU1VCVFJFRV9DSEFOR0VEKHJvb3QtPnNldFNjcm9sbFBvc2l0aW9uKGFyYml0cmFy
eUludFBvaW50KSk7CisKKyAgICAvLyBDaGFuZ2luZyB0aGVzZSBwcm9wZXJ0aWVzIG9ubHkgYWZm
ZWN0cyB0aGUgbGF5ZXIgaXRzZWxmLgorICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9PTkxZX0xBWUVS
X0NIQU5HRUQocm9vdC0+c2V0Q29udGVudEJvdW5kcyhhcmJpdHJhcnlJbnRTaXplKSk7CisgICAg
RVhFQ1VURV9BTkRfVkVSSUZZX09OTFlfTEFZRVJfQ0hBTkdFRChyb290LT5zZXREZWJ1Z0JvcmRl
ckNvbG9yKGFyYml0cmFyeUNvbG9yKSk7CisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX09OTFlfTEFZ
RVJfQ0hBTkdFRChyb290LT5zZXREZWJ1Z0JvcmRlcldpZHRoKGFyYml0cmFyeU51bWJlcikpOwor
ICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9PTkxZX0xBWUVSX0NIQU5HRUQocm9vdC0+c2V0RHJhd3ND
b250ZW50KHRydWUpKTsKKworICAgIC8vIFNwZWNpYWwgY2FzZTogY2hlY2sgdGhhdCBzdWJsYXll
ciB0cmFuc2Zvcm0gY2hhbmdlcyBhbGwgbGF5ZXIncyBkZXNjZW5kYW50cywgYnV0IG5vdCB0aGUg
bGF5ZXIgaXRzZWxmLgorICAgIHJvb3QtPnJlc2V0TGF5ZXJQcm9wZXJ0eUNoYW5nZWQoKTsKKyAg
ICBjaGlsZC0+cmVzZXRMYXllclByb3BlcnR5Q2hhbmdlZCgpOworICAgIGdyYW5kQ2hpbGQtPnJl
c2V0TGF5ZXJQcm9wZXJ0eUNoYW5nZWQoKTsKKyAgICByb290LT5zZXRTdWJsYXllclRyYW5zZm9y
bShhcmJpdHJhcnlUcmFuc2Zvcm0pOworICAgIEVYUEVDVF9GQUxTRShyb290LT5sYXllclByb3Bl
cnR5Q2hhbmdlZCgpKTsKKyAgICBFWFBFQ1RfVFJVRShjaGlsZC0+bGF5ZXJQcm9wZXJ0eUNoYW5n
ZWQoKSk7CisgICAgRVhQRUNUX1RSVUUoZ3JhbmRDaGlsZC0+bGF5ZXJQcm9wZXJ0eUNoYW5nZWQo
KSk7CisKKyAgICAvLyBTcGVjaWFsIGNhc2U6IGNoZWNrIHRoYXQgc2V0Qm91bmRzIGNoYW5nZXMg
YmVoYXZpb3IgZGVwZW5kaW5nIG9uIG1hc2tzVG9Cb3VuZHMuCisgICAgcm9vdC0+c2V0TWFza3NU
b0JvdW5kcyhmYWxzZSk7CisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX09OTFlfTEFZRVJfQ0hBTkdF
RChyb290LT5zZXRCb3VuZHMoSW50U2l6ZSgxMzUsIDI0NikpKTsKKyAgICByb290LT5zZXRNYXNr
c1RvQm91bmRzKHRydWUpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0NIQU5HRUQo
cm9vdC0+c2V0Qm91bmRzKGFyYml0cmFyeUludFNpemUpKTsgLy8gc2hvdWxkIGJlIGEgZGlmZmVy
ZW50IHNpemUgdGhhbiBwcmV2aW91cyBjYWxsLCB0byBlbnN1cmUgaXQgbWFya3MgdHJlZSBjaGFu
Z2VkLgorCisgICAgLy8gQWZ0ZXIgc2V0dGluZyBhbGwgdGhlc2UgcHJvcGVydGllcyBhbHJlYWR5
LCBzZXR0aW5nIHRvIHRoZSBleGFjdCBzYW1lIHZhbHVlcyBhZ2FpbiBzaG91bGQKKyAgICAvLyBu
b3QgY2F1c2UgYW55IGNoYW5nZS4KKyAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9ESURf
Tk9UX0NIQU5HRShyb290LT5zZXRBbmNob3JQb2ludChhcmJpdHJhcnlGbG9hdFBvaW50KSk7Cisg
ICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfRElEX05PVF9DSEFOR0Uocm9vdC0+c2V0QW5j
aG9yUG9pbnRaKGFyYml0cmFyeU51bWJlcikpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJU
UkVFX0RJRF9OT1RfQ0hBTkdFKHJvb3QtPnNldE1hc2tMYXllcihkdW1teU1hc2spKTsKKyAgICBF
WEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9ESURfTk9UX0NIQU5HRShyb290LT5zZXRNYXNrc1Rv
Qm91bmRzKHRydWUpKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9ESURfTk9UX0NI
QU5HRShyb290LT5zZXRSZXBsaWNhTGF5ZXIoZHVtbXlSZXBsaWNhKSk7CisgICAgRVhFQ1VURV9B
TkRfVkVSSUZZX1NVQlRSRUVfRElEX05PVF9DSEFOR0Uocm9vdC0+c2V0UG9zaXRpb24oYXJiaXRy
YXJ5RmxvYXRQb2ludCkpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0RJRF9OT1Rf
Q0hBTkdFKHJvb3QtPnNldFByZXNlcnZlczNEKHRydWUpKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJ
RllfU1VCVFJFRV9ESURfTk9UX0NIQU5HRShyb290LT5zZXRUcmFuc2Zvcm0oYXJiaXRyYXJ5VHJh
bnNmb3JtKSk7CisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfRElEX05PVF9DSEFOR0Uo
cm9vdC0+c2V0RG91YmxlU2lkZWQoZmFsc2UpKTsgLy8gY29uc3RydWN0b3IgaW5pdGlhbGl6ZXMg
aXQgdG8gInRydWUiLgorICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0RJRF9OT1RfQ0hB
TkdFKHJvb3QtPnNldFNjcm9sbERlbHRhKGFyYml0cmFyeUludFNpemUpKTsKKyAgICBFWEVDVVRF
X0FORF9WRVJJRllfU1VCVFJFRV9ESURfTk9UX0NIQU5HRShyb290LT5zZXRTY3JvbGxQb3NpdGlv
bihhcmJpdHJhcnlJbnRQb2ludCkpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0RJ
RF9OT1RfQ0hBTkdFKHJvb3QtPnNldENvbnRlbnRCb3VuZHMoYXJiaXRyYXJ5SW50U2l6ZSkpOwor
ICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0RJRF9OT1RfQ0hBTkdFKHJvb3QtPnNldE9w
YWNpdHkoYXJiaXRyYXJ5TnVtYmVyKSk7CisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVf
RElEX05PVF9DSEFOR0Uocm9vdC0+c2V0RGVidWdCb3JkZXJDb2xvcihhcmJpdHJhcnlDb2xvcikp
OworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0RJRF9OT1RfQ0hBTkdFKHJvb3QtPnNl
dERlYnVnQm9yZGVyV2lkdGgoYXJiaXRyYXJ5TnVtYmVyKSk7CisgICAgRVhFQ1VURV9BTkRfVkVS
SUZZX1NVQlRSRUVfRElEX05PVF9DSEFOR0Uocm9vdC0+c2V0RHJhd3NDb250ZW50KHRydWUpKTsK
KyAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9ESURfTk9UX0NIQU5HRShyb290LT5zZXRT
dWJsYXllclRyYW5zZm9ybShhcmJpdHJhcnlUcmFuc2Zvcm0pKTsKKyAgICBFWEVDVVRFX0FORF9W
RVJJRllfU1VCVFJFRV9ESURfTk9UX0NIQU5HRShyb290LT5zZXRCb3VuZHMoYXJiaXRyYXJ5SW50
U2l6ZSkpOworCisgICAgLy8gVGhlc2UgcHJvcGVydGllcyBhcmUgaW50ZXJuYWwsIGFuZCBzaG91
bGQgbm90IGJlIGNvbnNpZGVyZWQgImNoYW5nZSIgd2hlbiB0aGV5IGFyZSB1c2VkLgorICAgIEVY
RUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0RJRF9OT1RfQ0hBTkdFKHJvb3QtPnNldElzTm9uQ29t
cG9zaXRlZENvbnRlbnQodHJ1ZSkpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0RJ
RF9OT1RfQ0hBTkdFKHJvb3QtPnNldFNjaXNzb3JSZWN0KGFyYml0cmFyeUludFJlY3QpKTsKKyAg
ICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9ESURfTk9UX0NIQU5HRShyb290LT5zZXRVc2Vz
TGF5ZXJTY2lzc29yKHRydWUpKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9ESURf
Tk9UX0NIQU5HRShyb290LT5zZXREcmF3T3BhY2l0eShhcmJpdHJhcnlOdW1iZXIpKTsKKyAgICBF
WEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9ESURfTk9UX0NIQU5HRShyb290LT5zZXRUYXJnZXRS
ZW5kZXJTdXJmYWNlKDApKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9ESURfTk9U
X0NIQU5HRShyb290LT5zZXREcmF3VHJhbnNmb3JtKGFyYml0cmFyeVRyYW5zZm9ybSkpOworICAg
IEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0RJRF9OT1RfQ0hBTkdFKHJvb3QtPnNldFNjcmVl
blNwYWNlVHJhbnNmb3JtKGFyYml0cmFyeVRyYW5zZm9ybSkpOworICAgIEVYRUNVVEVfQU5EX1ZF
UklGWV9TVUJUUkVFX0RJRF9OT1RfQ0hBTkdFKHJvb3QtPnNldERyYXdhYmxlQ29udGVudFJlY3Qo
YXJiaXRyYXJ5SW50UmVjdCkpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0RJRF9O
T1RfQ0hBTkdFKHJvb3QtPnNldFVwZGF0ZVJlY3QoYXJiaXRyYXJ5RmxvYXRSZWN0KSk7CisgICAg
RVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfRElEX05PVF9DSEFOR0Uocm9vdC0+c2V0VmlzaWJs
ZUxheWVyUmVjdChhcmJpdHJhcnlJbnRSZWN0KSk7CisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NV
QlRSRUVfRElEX05PVF9DSEFOR0Uocm9vdC0+c2V0TWF4U2Nyb2xsUG9zaXRpb24oYXJiaXRyYXJ5
SW50U2l6ZSkpOworfQorCit9IC8vIG5hbWVzcGFjZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112769</attachid>
            <date>2011-10-27 15:35:00 -0700</date>
            <delta_ts>2011-10-27 17:37:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-70442-20111027153459.patch</filename>
            <type>text/plain</type>
            <size>26440</size>
            <attacher name="Shawn Singh">shawnsingh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTg1ODEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjMGQyYTI3NTQ4OTQyZWRh
NWM2NzMzZjA2OWEzYzNlOTBhNDkxY2MxLi4yNmViMzQ4NDAwYWJmMTExNjdlNDg2NDRkNGY0ZGNk
OGNiNGUwYzBhIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcgQEAKKzIwMTEtMTAtMjcgIFNoYXdu
IFNpbmdoICA8c2hhd25zaW5naEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBU
cmFjayB3aGVuIENDTGF5ZXJJbXBsIHByb3BlcnRpZXMgaGF2ZSBjaGFuZ2VkLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA0NDIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUbyBkZXRlcm1pbmUgYSBnb29k
IHNjaXNzb3IgcmVjdCwgd2UgbXVzdCBkZXRlcm1pbmUgd2hhdAorICAgICAgICB3aWxsIGNoYW5n
ZSBvbiB0aGUgc2NyZWVuIG9uIHRoZSBuZXh0IHJlZHJhdy4gIFRoaXMgcGF0Y2gKKyAgICAgICAg
dHJhY2tzIHRoZSBuZWNlc3NhcnkgaW5mb3JtYXRpb24gb24gQ0NMYXllckltcGwgYW5kIG1hcmtz
CisgICAgICAgIGEgZmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgdGhpcyBsYXllciB3aWxsICJkYW1h
Z2UiIHRoZSBzY3JlZW4uCisgICAgICAgIFRoZSBvdGhlciBwb3J0aW9uIG9mICJjaGFuZ2UiLCB0
aGUgdXBkYXRlUmVjdCwgd2FzIGFscmVhZHkKKyAgICAgICAgbGFuZGVkIGluIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTQ0MS4KKworICAgICAgICBOZXcgdW5pdCB0
ZXN0IGFkZGVkIHRvIENDTGF5ZXJJbXBsVGVzdCB0byB0ZXN0IHRoaXMgcGF0Y2guCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6Q0NMYXllckltcGwpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NMYXllckltcGw6OnNjcm9sbEJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBs
Ojpub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWRGb3JTdWJ0cmVlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDTGF5ZXJJbXBsOjpub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWRGb3JEZXNjZW5kYW50cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6c2V0Qm91bmRzKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDTGF5ZXJJbXBsOjpzZXRNYXNrTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXll
ckltcGw6OnNldFJlcGxpY2FMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6
c2V0RHJhd3NDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpzZXRBbmNo
b3JQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6c2V0QW5jaG9yUG9pbnRa
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpzZXRNYXNrc1RvQm91bmRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpzZXRPcGFxdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NMYXllckltcGw6OnNldE9wYWNpdHkpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllcklt
cGw6OnNldFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpzZXRQcmVz
ZXJ2ZXMzRCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6c2V0U3VibGF5ZXJUcmFu
c2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OnNldFRyYW5zZm9ybSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6c2V0RGVidWdCb3JkZXJDb2xvcik6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6c2V0RGVidWdCb3JkZXJXaWR0aCk6CisgICAgICAg
IChXZWJDb3JlOjpDQ0xheWVySW1wbDo6c2V0Q29udGVudEJvdW5kcyk6CisgICAgICAgIChXZWJD
b3JlOjpDQ0xheWVySW1wbDo6c2V0U2Nyb2xsUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
Q0NMYXllckltcGw6OnNldFNjcm9sbERlbHRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJ
bXBsOjpzZXREb3VibGVTaWRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllckltcGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpsYXll
clByb3BlcnR5Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6cmVzZXRM
YXllclByb3BlcnR5Q2hhbmdlZCk6CisKIDIwMTEtMTAtMjcgIERhbmllbCBDaGVuZyAgPGRjaGVu
Z0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQ2xlYW4gdXAgTWljcm9EYXRhSXRlbVZhbHVlIHRv
IHVzZSBjb25zdCBTdHJpbmcmIGluc3RlYWQgb2YgU3RyaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCmluZGV4IDZhMmQ2ZjY1YzIxMDA1YmJkNDJkZDJjNWEzYzI2MWMwMDFlNWU4MjAuLjY1ZjVj
NTVhY2M2NmI1NmVkMDEwMGVlNTFiZjYzYzU5NTdlYTBhZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMTAtMjcgIFNoYXduIFNpbmdoICA8c2hhd25z
aW5naEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBUcmFjayB3aGVuIENDTGF5
ZXJJbXBsIHByb3BlcnRpZXMgaGF2ZSBjaGFuZ2VkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA0NDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdC5neXBpOgorICAgICAgICAqIHRlc3RzL0ND
TGF5ZXJJbXBsVGVzdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VEVTVCk6CisKIDIw
MTEtMTAtMjcgIERhdmUgTWljaGFlbCAgPGRtaWNoYWVsQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBDaHJvbWl1bSB1aV90ZXN0cyBXb3JrZXJUZXN0Lldvcmtlck1lc3NhZ2VQb3J0W0dDXSB3ZXJl
IGJyb2tlbiBieSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9hdHRhY2htZW50LmNnaT9pZD0xMTIz
NDIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcAppbmRleCBlYmI5ZWIxOTgwODFlYmVlM2Y3N2RiYzY1
ZTJmZmU4YjZmMjJkYTA4Li5iM2FmMGZiYmY3ZTAyZTdmNzc2Nzk3ZjgxYTNiZDYyZjE0ZjliZDZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwCkBAIC00Myw2ICs0Myw3IEBAIENDTGF5ZXJJbXBs
OjpDQ0xheWVySW1wbChpbnQgaWQpCiAgICAgLCBtX2FuY2hvclBvaW50KDAuNSwgMC41KQogICAg
ICwgbV9hbmNob3JQb2ludFooMCkKICAgICAsIG1fZG91YmxlU2lkZWQodHJ1ZSkKKyAgICAsIG1f
bGF5ZXJQcm9wZXJ0eUNoYW5nZWQoZmFsc2UpCiAgICAgLCBtX21hc2tzVG9Cb3VuZHMoZmFsc2Up
CiAgICAgLCBtX29wYXF1ZShmYWxzZSkKICAgICAsIG1fb3BhY2l0eSgxLjApCkBAIC0xMjYsNiAr
MTI3LDcgQEAgdm9pZCBDQ0xheWVySW1wbDo6c2Nyb2xsQnkoY29uc3QgSW50U2l6ZSYgc2Nyb2xs
KQogICAgIEludFNpemUgbWF4RGVsdGEgPSBtX21heFNjcm9sbFBvc2l0aW9uIC0gdG9TaXplKG1f
c2Nyb2xsUG9zaXRpb24pOwogICAgIC8vIENsYW1wIG5ld0RlbHRhIHNvIHRoYXQgcG9zaXRpb24g
KyBkZWx0YSBzdGF5cyB3aXRoaW4gc2Nyb2xsIGJvdW5kcy4KICAgICBtX3Njcm9sbERlbHRhID0g
bmV3RGVsdGEuZXhwYW5kZWRUbyhtaW5EZWx0YSkuc2hydW5rVG8obWF4RGVsdGEpOworICAgIG5v
dGVMYXllclByb3BlcnR5Q2hhbmdlZEZvclN1YnRyZWUoKTsKIH0KIAogdm9pZCBDQ0xheWVySW1w
bDo6Y2xlYW51cFJlc291cmNlcygpCkBAIC0yMjMsNiArMjI1LDE3NSBAQCB2b2lkIENDTGF5ZXJJ
bXBsOjpkdW1wTGF5ZXIoVGV4dFN0cmVhbSYgdHMsIGludCBpbmRlbnQpIGNvbnN0CiAgICAgICAg
IG1fY2hpbGRyZW5baV0tPmR1bXBMYXllcih0cywgaW5kZW50KzEpOwogfQogCit2b2lkIENDTGF5
ZXJJbXBsOjpub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWRGb3JTdWJ0cmVlKCkKK3sKKyAgICBtX2xh
eWVyUHJvcGVydHlDaGFuZ2VkID0gdHJ1ZTsKKyAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWRG
b3JEZXNjZW5kYW50cygpOworfQorCit2b2lkIENDTGF5ZXJJbXBsOjpub3RlTGF5ZXJQcm9wZXJ0
eUNoYW5nZWRGb3JEZXNjZW5kYW50cygpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBt
X2NoaWxkcmVuLnNpemUoKTsgKytpKQorICAgICAgICBtX2NoaWxkcmVuW2ldLT5ub3RlTGF5ZXJQ
cm9wZXJ0eUNoYW5nZWRGb3JTdWJ0cmVlKCk7Cit9CisKK3ZvaWQgQ0NMYXllckltcGw6OnNldEJv
dW5kcyhjb25zdCBJbnRTaXplJiBib3VuZHMpCit7CisgICAgaWYgKG1fYm91bmRzICE9IGJvdW5k
cykgeworICAgICAgICBtX2JvdW5kcyA9IGJvdW5kczsKKworICAgICAgICBpZiAobWFza3NUb0Jv
dW5kcygpKQorICAgICAgICAgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkRm9yU3VidHJlZSgp
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2xheWVyUHJvcGVydHlDaGFuZ2VkID0gdHJ1
ZTsKKyAgICB9Cit9CisKK3ZvaWQgQ0NMYXllckltcGw6OnNldE1hc2tMYXllcihQYXNzUmVmUHRy
PENDTGF5ZXJJbXBsPiBtYXNrTGF5ZXIpCit7CisgICAgaWYgKG1fbWFza0xheWVyICE9IG1hc2tM
YXllcikgeworICAgICAgICBtX21hc2tMYXllciA9IG1hc2tMYXllcjsKKyAgICAgICAgbm90ZUxh
eWVyUHJvcGVydHlDaGFuZ2VkRm9yU3VidHJlZSgpOworICAgIH0KK30KKwordm9pZCBDQ0xheWVy
SW1wbDo6c2V0UmVwbGljYUxheWVyKFBhc3NSZWZQdHI8Q0NMYXllckltcGw+IHJlcGxpY2FMYXll
cikKK3sKKyAgICBpZiAobV9yZXBsaWNhTGF5ZXIgIT0gcmVwbGljYUxheWVyKSB7CisgICAgICAg
IG1fcmVwbGljYUxheWVyID0gcmVwbGljYUxheWVyOworICAgICAgICBub3RlTGF5ZXJQcm9wZXJ0
eUNoYW5nZWRGb3JTdWJ0cmVlKCk7CisgICAgfQorfQorCit2b2lkIENDTGF5ZXJJbXBsOjpzZXRE
cmF3c0NvbnRlbnQoYm9vbCBkcmF3c0NvbnRlbnQpCit7CisgICAgaWYgKG1fZHJhd3NDb250ZW50
ICE9IGRyYXdzQ29udGVudCkgeworICAgICAgICBtX2RyYXdzQ29udGVudCA9IGRyYXdzQ29udGVu
dDsKKyAgICAgICAgbV9sYXllclByb3BlcnR5Q2hhbmdlZCA9IHRydWU7CisgICAgfQorfQorCit2
b2lkIENDTGF5ZXJJbXBsOjpzZXRBbmNob3JQb2ludChjb25zdCBGbG9hdFBvaW50JiBhbmNob3JQ
b2ludCkKK3sKKyAgICBpZiAobV9hbmNob3JQb2ludCAhPSBhbmNob3JQb2ludCkgeworICAgICAg
ICBtX2FuY2hvclBvaW50ID0gYW5jaG9yUG9pbnQ7CisgICAgICAgIG5vdGVMYXllclByb3BlcnR5
Q2hhbmdlZEZvclN1YnRyZWUoKTsKKyAgICB9Cit9CisKK3ZvaWQgQ0NMYXllckltcGw6OnNldEFu
Y2hvclBvaW50WihmbG9hdCBhbmNob3JQb2ludFopCit7CisgICAgaWYgKG1fYW5jaG9yUG9pbnRa
ICE9IGFuY2hvclBvaW50WikgeworICAgICAgICBtX2FuY2hvclBvaW50WiA9IGFuY2hvclBvaW50
WjsKKyAgICAgICAgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkRm9yU3VidHJlZSgpOworICAgIH0K
K30KKwordm9pZCBDQ0xheWVySW1wbDo6c2V0TWFza3NUb0JvdW5kcyhib29sIG1hc2tzVG9Cb3Vu
ZHMpCit7CisgICAgaWYgKG1fbWFza3NUb0JvdW5kcyAhPSBtYXNrc1RvQm91bmRzKSB7CisgICAg
ICAgIG1fbWFza3NUb0JvdW5kcyA9IG1hc2tzVG9Cb3VuZHM7CisgICAgICAgIG5vdGVMYXllclBy
b3BlcnR5Q2hhbmdlZEZvclN1YnRyZWUoKTsKKyAgICB9Cit9CisKK3ZvaWQgQ0NMYXllckltcGw6
OnNldE9wYXF1ZShib29sIG9wYXF1ZSkKK3sKKyAgICBpZiAobV9vcGFxdWUgIT0gb3BhcXVlKSB7
CisgICAgICAgIG1fb3BhcXVlID0gb3BhcXVlOworICAgICAgICBub3RlTGF5ZXJQcm9wZXJ0eUNo
YW5nZWRGb3JTdWJ0cmVlKCk7CisgICAgfQorfQorCit2b2lkIENDTGF5ZXJJbXBsOjpzZXRPcGFj
aXR5KGZsb2F0IG9wYWNpdHkpCit7CisgICAgaWYgKG1fb3BhY2l0eSAhPSBvcGFjaXR5KSB7Cisg
ICAgICAgIG1fb3BhY2l0eSA9IG9wYWNpdHk7CisgICAgICAgIG5vdGVMYXllclByb3BlcnR5Q2hh
bmdlZEZvclN1YnRyZWUoKTsKKyAgICB9Cit9CisKK3ZvaWQgQ0NMYXllckltcGw6OnNldFBvc2l0
aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uKQoreworICAgIGlmIChtX3Bvc2l0aW9uICE9
IHBvc2l0aW9uKSB7CisgICAgICAgIG1fcG9zaXRpb24gPSBwb3NpdGlvbjsKKyAgICAgICAgbm90
ZUxheWVyUHJvcGVydHlDaGFuZ2VkRm9yU3VidHJlZSgpOworICAgIH0KK30KKwordm9pZCBDQ0xh
eWVySW1wbDo6c2V0UHJlc2VydmVzM0QoYm9vbCBwcmVzZXJ2ZXMzRCkKK3sKKyAgICBpZiAobV9w
cmVzZXJ2ZXMzRCAhPSBwcmVzZXJ2ZXMzRCkgeworICAgICAgICBtX3ByZXNlcnZlczNEID0gcHJl
c2VydmVzM0Q7CisgICAgICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZEZvclN1YnRyZWUoKTsK
KyAgICB9Cit9CisKK3ZvaWQgQ0NMYXllckltcGw6OnNldFN1YmxheWVyVHJhbnNmb3JtKGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBzdWJsYXllclRyYW5zZm9ybSkKK3sKKyAgICBpZiAobV9z
dWJsYXllclRyYW5zZm9ybSAhPSBzdWJsYXllclRyYW5zZm9ybSkgeworICAgICAgICBtX3N1Ymxh
eWVyVHJhbnNmb3JtID0gc3VibGF5ZXJUcmFuc2Zvcm07CisgICAgICAgIC8vIHN1YmxheWVyIHRy
YW5zZm9ybSBkb2VzIG5vdCBhZmZlY3QgdGhlIGN1cnJlbnQgbGF5ZXI7IGl0IGFmZmVjdHMgb25s
eSBpdHMgY2hpbGRyZW4uCisgICAgICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZEZvckRlc2Nl
bmRhbnRzKCk7CisgICAgfQorfQorCit2b2lkIENDTGF5ZXJJbXBsOjpzZXRUcmFuc2Zvcm0oY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSkKK3sKKyAgICBpZiAobV90cmFuc2Zv
cm0gIT0gdHJhbnNmb3JtKSB7CisgICAgICAgIG1fdHJhbnNmb3JtID0gdHJhbnNmb3JtOworICAg
ICAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWRGb3JTdWJ0cmVlKCk7CisgICAgfQorfQorCit2
b2lkIENDTGF5ZXJJbXBsOjpzZXREZWJ1Z0JvcmRlckNvbG9yKENvbG9yIGRlYnVnQm9yZGVyQ29s
b3IpCit7CisgICAgaWYgKG1fZGVidWdCb3JkZXJDb2xvciAhPSBkZWJ1Z0JvcmRlckNvbG9yKSB7
CisgICAgICAgIG1fZGVidWdCb3JkZXJDb2xvciA9IGRlYnVnQm9yZGVyQ29sb3I7CisgICAgICAg
IG1fbGF5ZXJQcm9wZXJ0eUNoYW5nZWQgPSB0cnVlOworICAgIH0KK30KKwordm9pZCBDQ0xheWVy
SW1wbDo6c2V0RGVidWdCb3JkZXJXaWR0aChmbG9hdCBkZWJ1Z0JvcmRlcldpZHRoKQoreworICAg
IGlmIChtX2RlYnVnQm9yZGVyV2lkdGggIT0gZGVidWdCb3JkZXJXaWR0aCkgeworICAgICAgICBt
X2RlYnVnQm9yZGVyV2lkdGggPSBkZWJ1Z0JvcmRlcldpZHRoOworICAgICAgICBtX2xheWVyUHJv
cGVydHlDaGFuZ2VkID0gdHJ1ZTsKKyAgICB9Cit9CisKK3ZvaWQgQ0NMYXllckltcGw6OnNldENv
bnRlbnRCb3VuZHMoY29uc3QgSW50U2l6ZSYgY29udGVudEJvdW5kcykKK3sKKyAgICBpZiAobV9j
b250ZW50Qm91bmRzICE9IGNvbnRlbnRCb3VuZHMpIHsKKyAgICAgICAgbV9jb250ZW50Qm91bmRz
ID0gY29udGVudEJvdW5kczsKKyAgICAgICAgbV9sYXllclByb3BlcnR5Q2hhbmdlZCA9IHRydWU7
CisgICAgfQorfQorCit2b2lkIENDTGF5ZXJJbXBsOjpzZXRTY3JvbGxQb3NpdGlvbihjb25zdCBJ
bnRQb2ludCYgc2Nyb2xsUG9zaXRpb24pCit7CisgICAgaWYgKG1fc2Nyb2xsUG9zaXRpb24gIT0g
c2Nyb2xsUG9zaXRpb24pIHsKKyAgICAgICAgbV9zY3JvbGxQb3NpdGlvbiA9IHNjcm9sbFBvc2l0
aW9uOworICAgICAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWRGb3JTdWJ0cmVlKCk7CisgICAg
fQorfQorCit2b2lkIENDTGF5ZXJJbXBsOjpzZXRTY3JvbGxEZWx0YShjb25zdCBJbnRTaXplJiBz
Y3JvbGxEZWx0YSkKK3sKKyAgICBpZiAobV9zY3JvbGxEZWx0YSAhPSBzY3JvbGxEZWx0YSkgewor
ICAgICAgICBtX3Njcm9sbERlbHRhID0gc2Nyb2xsRGVsdGE7CisgICAgICAgIG5vdGVMYXllclBy
b3BlcnR5Q2hhbmdlZEZvclN1YnRyZWUoKTsKKyAgICB9Cit9CisKK3ZvaWQgQ0NMYXllckltcGw6
OnNldERvdWJsZVNpZGVkKGJvb2wgZG91YmxlU2lkZWQpCit7CisgICAgaWYgKG1fZG91YmxlU2lk
ZWQgIT0gZG91YmxlU2lkZWQpIHsKKyAgICAgICAgbV9kb3VibGVTaWRlZCA9IGRvdWJsZVNpZGVk
OworICAgICAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWRGb3JTdWJ0cmVlKCk7CisgICAgfQor
fQorCiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKaW5kZXggMzY5ZWU5MWFiZWIyOTYyNzIzOTg5
OTRhZTkxNDkyODFjZWZkN2I2NS4uYzMyZTExN2I3YjVmZDlhMWY5ZTA1MTllOWM4YTllYWY3Y2Zi
NTMwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCkBAIC01OCwxMCArNTgsMTAgQEAgcHVibGljOgog
ICAgIHZvaWQgcmVtb3ZlRnJvbVBhcmVudCgpOwogICAgIHZvaWQgcmVtb3ZlQWxsQ2hpbGRyZW4o
KTsKIAotICAgIHZvaWQgc2V0TWFza0xheWVyKFBhc3NSZWZQdHI8Q0NMYXllckltcGw+IG1hc2tM
YXllcikgeyBtX21hc2tMYXllciA9IG1hc2tMYXllcjsgfQorICAgIHZvaWQgc2V0TWFza0xheWVy
KFBhc3NSZWZQdHI8Q0NMYXllckltcGw+KTsKICAgICBDQ0xheWVySW1wbCogbWFza0xheWVyKCkg
Y29uc3QgeyByZXR1cm4gbV9tYXNrTGF5ZXIuZ2V0KCk7IH0KIAotICAgIHZvaWQgc2V0UmVwbGlj
YUxheWVyKFBhc3NSZWZQdHI8Q0NMYXllckltcGw+IHJlcGxpY2FMYXllcikgeyBtX3JlcGxpY2FM
YXllciA9IHJlcGxpY2FMYXllcjsgfQorICAgIHZvaWQgc2V0UmVwbGljYUxheWVyKFBhc3NSZWZQ
dHI8Q0NMYXllckltcGw+KTsKICAgICBDQ0xheWVySW1wbCogcmVwbGljYUxheWVyKCkgY29uc3Qg
eyByZXR1cm4gbV9yZXBsaWNhTGF5ZXIuZ2V0KCk7IH0KIAogICAgIGludCBpZCgpIGNvbnN0IHsg
cmV0dXJuIG1fbGF5ZXJJZDsgfQpAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGJpbmRDb250ZW50c1RleHR1cmUoTGF5ZXJSZW5kZXJlckNocm9taXVtKik7CiAKICAg
ICAvLyBSZXR1cm5zIHRydWUgaWYgdGhpcyBsYXllciBoYXMgY29udGVudCB0byBkcmF3LgotICAg
IHZvaWQgc2V0RHJhd3NDb250ZW50KGJvb2wgZHJhd3NDb250ZW50KSB7IG1fZHJhd3NDb250ZW50
ID0gZHJhd3NDb250ZW50OyB9CisgICAgdm9pZCBzZXREcmF3c0NvbnRlbnQoYm9vbCk7CiAgICAg
Ym9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX2RyYXdzQ29udGVudDsgfQogCiAg
ICAgLy8gUmV0dXJucyB0cnVlIGlmIGFueSBvZiB0aGUgbGF5ZXIncyBkZXNjZW5kYW50cyBoYXMg
Y29udGVudCB0byBkcmF3LgpAQCAtODMsMjUgKzgzLDI1IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
Y2xlYW51cFJlc291cmNlcygpOwogCi0gICAgdm9pZCBzZXRBbmNob3JQb2ludChjb25zdCBGbG9h
dFBvaW50JiBhbmNob3JQb2ludCkgeyBtX2FuY2hvclBvaW50ID0gYW5jaG9yUG9pbnQ7IH0KKyAg
ICB2b2lkIHNldEFuY2hvclBvaW50KGNvbnN0IEZsb2F0UG9pbnQmKTsKICAgICBjb25zdCBGbG9h
dFBvaW50JiBhbmNob3JQb2ludCgpIGNvbnN0IHsgcmV0dXJuIG1fYW5jaG9yUG9pbnQ7IH0KIAot
ICAgIHZvaWQgc2V0QW5jaG9yUG9pbnRaKGZsb2F0IGFuY2hvclBvaW50WikgeyBtX2FuY2hvclBv
aW50WiA9IGFuY2hvclBvaW50WjsgfQorICAgIHZvaWQgc2V0QW5jaG9yUG9pbnRaKGZsb2F0KTsK
ICAgICBmbG9hdCBhbmNob3JQb2ludFooKSBjb25zdCB7IHJldHVybiBtX2FuY2hvclBvaW50Wjsg
fQogCi0gICAgdm9pZCBzZXRNYXNrc1RvQm91bmRzKGJvb2wgbWFza3NUb0JvdW5kcykgeyBtX21h
c2tzVG9Cb3VuZHMgPSBtYXNrc1RvQm91bmRzOyB9CisgICAgdm9pZCBzZXRNYXNrc1RvQm91bmRz
KGJvb2wpOwogICAgIGJvb2wgbWFza3NUb0JvdW5kcygpIGNvbnN0IHsgcmV0dXJuIG1fbWFza3NU
b0JvdW5kczsgfQogCi0gICAgdm9pZCBzZXRPcGFxdWUoYm9vbCBvcGFxdWUpIHsgbV9vcGFxdWUg
PSBvcGFxdWU7IH0KKyAgICB2b2lkIHNldE9wYXF1ZShib29sKTsKICAgICBib29sIG9wYXF1ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fb3BhcXVlOyB9CiAKLSAgICB2b2lkIHNldE9wYWNpdHkoZmxvYXQg
b3BhY2l0eSkgeyBtX29wYWNpdHkgPSBvcGFjaXR5OyB9CisgICAgdm9pZCBzZXRPcGFjaXR5KGZs
b2F0KTsKICAgICBmbG9hdCBvcGFjaXR5KCkgY29uc3QgeyByZXR1cm4gbV9vcGFjaXR5OyB9CiAK
LSAgICB2b2lkIHNldFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uKSB7IG1fcG9z
aXRpb24gPSBwb3NpdGlvbjsgfQorICAgIHZvaWQgc2V0UG9zaXRpb24oY29uc3QgRmxvYXRQb2lu
dCYpOwogICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9w
b3NpdGlvbjsgfQogCi0gICAgdm9pZCBzZXRQcmVzZXJ2ZXMzRChib29sIHByZXNlcnZlczNEKSB7
IG1fcHJlc2VydmVzM0QgPSBwcmVzZXJ2ZXMzRDsgfQorICAgIHZvaWQgc2V0UHJlc2VydmVzM0Qo
Ym9vbCk7CiAgICAgYm9vbCBwcmVzZXJ2ZXMzRCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlc2VydmVz
M0Q7IH0KIAogICAgIHZvaWQgc2V0VXNlc0xheWVyU2Npc3Nvcihib29sIHVzZXNMYXllclNjaXNz
b3IpIHsgbV91c2VzTGF5ZXJTY2lzc29yID0gdXNlc0xheWVyU2Npc3NvcjsgfQpAQCAtMTEwLDE5
ICsxMTAsMTkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0SXNOb25Db21wb3NpdGVkQ29udGVudChi
b29sIGlzTm9uQ29tcG9zaXRlZENvbnRlbnQpIHsgbV9pc05vbkNvbXBvc2l0ZWRDb250ZW50ID0g
aXNOb25Db21wb3NpdGVkQ29udGVudDsgfQogICAgIGJvb2wgaXNOb25Db21wb3NpdGVkQ29udGVu
dCgpIGNvbnN0IHsgcmV0dXJuIG1faXNOb25Db21wb3NpdGVkQ29udGVudDsgfQogCi0gICAgdm9p
ZCBzZXRTdWJsYXllclRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgc3VibGF5
ZXJUcmFuc2Zvcm0pIHsgbV9zdWJsYXllclRyYW5zZm9ybSA9IHN1YmxheWVyVHJhbnNmb3JtOyB9
CisgICAgdm9pZCBzZXRTdWJsYXllclRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYpOwogICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBzdWJsYXllclRyYW5zZm9ybSgp
IGNvbnN0IHsgcmV0dXJuIG1fc3VibGF5ZXJUcmFuc2Zvcm07IH0KIAotICAgIHZvaWQgc2V0VHJh
bnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0pIHsgbV90cmFuc2Zv
cm0gPSB0cmFuc2Zvcm07IH0KKyAgICB2b2lkIHNldFRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYpOwogICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0o
KSBjb25zdCB7IHJldHVybiBtX3RyYW5zZm9ybTsgfQogCiAgICAgdm9pZCBzZXROYW1lKGNvbnN0
IFN0cmluZyYgbmFtZSkgeyBtX25hbWUgPSBuYW1lOyB9CiAgICAgY29uc3QgU3RyaW5nJiBuYW1l
KCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CiAKICAgICAvLyBEZWJ1ZyBsYXllciBib3JkZXIg
LSB2aXN1YWwgZWZmZWN0IG9ubHksIGRvIG5vdCBjaGFuZ2UgZ2VvbWV0cnkvY2xpcHBpbmcvZXRj
LgotICAgIHZvaWQgc2V0RGVidWdCb3JkZXJDb2xvcihDb2xvciBjKSB7IG1fZGVidWdCb3JkZXJD
b2xvciA9IGM7IH0KKyAgICB2b2lkIHNldERlYnVnQm9yZGVyQ29sb3IoQ29sb3IpOwogICAgIENv
bG9yIGRlYnVnQm9yZGVyQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2RlYnVnQm9yZGVyQ29sb3I7
IH0KLSAgICB2b2lkIHNldERlYnVnQm9yZGVyV2lkdGgoZmxvYXQgd2lkdGgpIHsgbV9kZWJ1Z0Jv
cmRlcldpZHRoID0gd2lkdGg7IH0KKyAgICB2b2lkIHNldERlYnVnQm9yZGVyV2lkdGgoZmxvYXQp
OwogICAgIGZsb2F0IGRlYnVnQm9yZGVyV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2RlYnVnQm9y
ZGVyV2lkdGg7IH0KIAogICAgIHZvaWQgZHJhd0RlYnVnQm9yZGVyKExheWVyUmVuZGVyZXJDaHJv
bWl1bSopOwpAQCAtMTQwLDE5ICsxNDAsMTkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0VGFyZ2V0
UmVuZGVyU3VyZmFjZShDQ1JlbmRlclN1cmZhY2UqIHN1cmZhY2UpIHsgbV90YXJnZXRSZW5kZXJT
dXJmYWNlID0gc3VyZmFjZTsgfQogCiAgICAgY29uc3QgSW50U2l6ZSYgYm91bmRzKCkgY29uc3Qg
eyByZXR1cm4gbV9ib3VuZHM7IH0KLSAgICB2b2lkIHNldEJvdW5kcyhjb25zdCBJbnRTaXplJiBi
b3VuZHMpIHsgbV9ib3VuZHMgPSBib3VuZHM7IH0KKyAgICB2b2lkIHNldEJvdW5kcyhjb25zdCBJ
bnRTaXplJik7CiAKICAgICBjb25zdCBJbnRTaXplJiBjb250ZW50Qm91bmRzKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb250ZW50Qm91bmRzOyB9Ci0gICAgdm9pZCBzZXRDb250ZW50Qm91bmRzKGNvbnN0
IEludFNpemUmIGNvbnRlbnRCb3VuZHMpIHsgbV9jb250ZW50Qm91bmRzID0gY29udGVudEJvdW5k
czsgfQorICAgIHZvaWQgc2V0Q29udGVudEJvdW5kcyhjb25zdCBJbnRTaXplJik7CiAKICAgICBj
b25zdCBJbnRQb2ludCYgc2Nyb2xsUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbFBv
c2l0aW9uOyB9Ci0gICAgdm9pZCBzZXRTY3JvbGxQb3NpdGlvbihjb25zdCBJbnRQb2ludCYgc2Ny
b2xsUG9zaXRpb24pIHsgbV9zY3JvbGxQb3NpdGlvbiA9IHNjcm9sbFBvc2l0aW9uOyB9CisgICAg
dm9pZCBzZXRTY3JvbGxQb3NpdGlvbihjb25zdCBJbnRQb2ludCYpOwogCiAgICAgY29uc3QgSW50
U2l6ZSYgbWF4U2Nyb2xsUG9zaXRpb24oKSBjb25zdCB7cmV0dXJuIG1fbWF4U2Nyb2xsUG9zaXRp
b247IH0KICAgICB2b2lkIHNldE1heFNjcm9sbFBvc2l0aW9uKGNvbnN0IEludFNpemUmIG1heFNj
cm9sbFBvc2l0aW9uKSB7IG1fbWF4U2Nyb2xsUG9zaXRpb24gPSBtYXhTY3JvbGxQb3NpdGlvbjsg
fQogCiAgICAgY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEoKSBjb25zdCB7IHJldHVybiBtX3Nj
cm9sbERlbHRhOyB9Ci0gICAgdm9pZCBzZXRTY3JvbGxEZWx0YShjb25zdCBJbnRTaXplJiBzY3Jv
bGxEZWx0YSkgeyBtX3Njcm9sbERlbHRhID0gc2Nyb2xsRGVsdGE7IH0KKyAgICB2b2lkIHNldFNj
cm9sbERlbHRhKGNvbnN0IEludFNpemUmKTsKIAogICAgIHZvaWQgc2Nyb2xsQnkoY29uc3QgSW50
U2l6ZSYgc2Nyb2xsKTsKICAgICBib29sIHNjcm9sbGFibGUoKSBjb25zdCB7IHJldHVybiAhbWF4
U2Nyb2xsUG9zaXRpb24oKS5pc1plcm8oKTsgfQpAQCAtMTYxLDcgKzE2MSw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldFZpc2libGVMYXllclJlY3QoY29uc3QgSW50UmVjdCYgdmlzaWJsZUxheWVy
UmVjdCkgeyBtX3Zpc2libGVMYXllclJlY3QgPSB2aXNpYmxlTGF5ZXJSZWN0OyB9CiAKICAgICBi
b29sIGRvdWJsZVNpZGVkKCkgY29uc3QgeyByZXR1cm4gbV9kb3VibGVTaWRlZDsgfQotICAgIHZv
aWQgc2V0RG91YmxlU2lkZWQoYm9vbCBkb3VibGVTaWRlZCkgeyBtX2RvdWJsZVNpZGVkID0gZG91
YmxlU2lkZWQ7IH0KKyAgICB2b2lkIHNldERvdWJsZVNpZGVkKGJvb2wpOwogCiAgICAgLy8gUmV0
dXJucyB0aGUgcmVjdCBjb250YWludGFpbmluZyB0aGlzIGxheWVyIGluIHRoZSBjdXJyZW50IHZp
ZXcncyBjb29yZGluYXRlIHN5c3RlbS4KICAgICBjb25zdCBJbnRSZWN0IGdldERyYXdSZWN0KCkg
Y29uc3Q7CkBAIC0xNzcsNiArMTc3LDkgQEAgcHVibGljOgogCiAgICAgU3RyaW5nIGxheWVyVHJl
ZUFzVGV4dCgpIGNvbnN0OwogCisgICAgYm9vbCBsYXllclByb3BlcnR5Q2hhbmdlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fbGF5ZXJQcm9wZXJ0eUNoYW5nZWQ7IH0KKyAgICB2b2lkIHJlc2V0TGF5ZXJQ
cm9wZXJ0eUNoYW5nZWQoKSB7IG1fbGF5ZXJQcm9wZXJ0eUNoYW5nZWQgPSBmYWxzZTsgfQorCiBw
cm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgQ0NMYXllckltcGwoaW50KTsKIApAQCAtMTg4LDYgKzE5
MSwxMSBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBUcmVlU3luY2hyb25pemVyOwogICAg
IHZvaWQgY2xlYXJDaGlsZExpc3QoKTsgLy8gV2FybmluZzogVGhpcyBkb2VzIG5vdCBwcmVzZXJ2
ZSB0cmVlIHN0cnVjdHVyZSBpbnZhcmlhbnRzIGFuZCBzbyBpcyBvbmx5IGV4cG9zZWQgdG8gdGhl
IHRyZWUgc3luY2hyb25pemVyLgogCisgICAgdm9pZCBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWRG
b3JTdWJ0cmVlKCk7CisKKyAgICAvLyBOb3RlIGNhcmVmdWxseSB0aGlzIGRvZXMgbm90IGFmZmVj
dCB0aGUgY3VycmVudCBsYXllci4KKyAgICB2b2lkIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZEZv
ckRlc2NlbmRhbnRzKCk7CisKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIGxheWVyVHlwZUFzU3Ry
aW5nKCkgY29uc3QgeyByZXR1cm4gIkxheWVyQ2hyb21pdW0iOyB9CiAKICAgICB2b2lkIGR1bXBM
YXllcihUZXh0U3RyZWFtJiwgaW50IGluZGVudCkgY29uc3Q7CkBAIC0yMTAsNiArMjE4LDkgQEAg
cHJpdmF0ZToKICAgICAvLyBXaGV0aGVyIHRoZSAiYmFjayIgb2YgdGhpcyBsYXllciBzaG91bGQg
ZHJhdy4KICAgICBib29sIG1fZG91YmxlU2lkZWQ7CiAKKyAgICAvLyBUcmFja3MgaWYgZHJhd2lu
Zy1yZWxhdGVkIHByb3BlcnRpZXMgaGF2ZSBjaGFuZ2VkIHNpbmNlIGxhc3QgcmVkcmF3LgorICAg
IGJvb2wgbV9sYXllclByb3BlcnR5Q2hhbmdlZDsKKwogICAgIEludFJlY3QgbV92aXNpYmxlTGF5
ZXJSZWN0OwogICAgIGJvb2wgbV9tYXNrc1RvQm91bmRzOwogICAgIGJvb2wgbV9vcGFxdWU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQppbmRleCBhNDg5MWZhYjE3OWYwMmFmZDY0ZGYxYTEw
YTAxNjI3NDE0NmVjYjZiLi4zMzMxMzVmOTMxNTBmYzU2Y2MxYTg4ODMwNjQ0NjE0MmMzY2MxZTcw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKQEAgLTU0LDYgKzU0LDcgQEAKICAgICAg
ICAgJ3dlYmtpdF91bml0dGVzdF9maWxlcyc6IFsKICAgICAgICAgICAgICd0ZXN0cy9BcmVuYVRl
c3RIZWxwZXJzLmgnLAogICAgICAgICAgICAgJ3Rlc3RzL0Fzc29jaWF0ZWRVUkxMb2FkZXJUZXN0
LmNwcCcsCisgICAgICAgICAgICAndGVzdHMvQ0NMYXllckltcGxUZXN0LmNwcCcsCiAgICAgICAg
ICAgICAndGVzdHMvQ0NMYXllclNvcnRlclRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9D
Q0xheWVyVHJlZUhvc3RDb21tb25UZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvQ0NMYXll
clRyZWVIb3N0SW1wbFRlc3QuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NMYXllckltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NMYXllckltcGxUZXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZjI2ODZhNDFmODI4MjM3ZDAwMWQ1
YjBkNDE4YmZkZTEzYzA5ODdjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ0xheWVySW1wbFRlc3QuY3BwCkBAIC0wLDAgKzEsMTcxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJjYy9DQ0xheWVySW1wbC5o
IgorCisjaW5jbHVkZSAiY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIgorI2luY2x1ZGUgPGdtb2Nr
L2dtb2NrLmg+CisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CisKK25hbWVzcGFjZSB7CisKKyNkZWZpbmUgRVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRS
RUVfQ0hBTkdFRChjb2RlVG9UZXN0KSAgICAgICAgICAgICAgICAgIFwKKyAgICByb290LT5yZXNl
dExheWVyUHJvcGVydHlDaGFuZ2VkKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICBjaGlsZC0+cmVzZXRMYXllclByb3BlcnR5Q2hhbmdlZCgpOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICBncmFuZENoaWxkLT5yZXNldExheWVyUHJvcGVydHlD
aGFuZ2VkKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjb2RlVG9UZXN0OyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICBFWFBFQ1RfVFJVRShyb290LT5sYXllclByb3BlcnR5Q2hhbmdlZCgpKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICBFWFBFQ1RfVFJVRShjaGlsZC0+bGF5ZXJQcm9wZXJ0eUNo
YW5nZWQoKSk7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBFWFBFQ1RfVFJVRShncmFu
ZENoaWxkLT5sYXllclByb3BlcnR5Q2hhbmdlZCgpKQorCisjZGVmaW5lIEVYRUNVVEVfQU5EX1ZF
UklGWV9TVUJUUkVFX0RJRF9OT1RfQ0hBTkdFKGNvZGVUb1Rlc3QpICAgICAgICAgICBcCisgICAg
cm9vdC0+cmVzZXRMYXllclByb3BlcnR5Q2hhbmdlZCgpOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgY2hpbGQtPnJlc2V0TGF5ZXJQcm9wZXJ0eUNoYW5nZWQoKTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZ3JhbmRDaGlsZC0+cmVzZXRMYXll
clByb3BlcnR5Q2hhbmdlZCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY29k
ZVRvVGVzdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgRVhQRUNUX0ZBTFNFKHJvb3QtPmxheWVyUHJvcGVydHlDaGFuZ2VkKCkp
OyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRVhQRUNUX0ZBTFNFKGNoaWxkLT5sYXll
clByb3BlcnR5Q2hhbmdlZCgpKTsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgRVhQRUNU
X0ZBTFNFKGdyYW5kQ2hpbGQtPmxheWVyUHJvcGVydHlDaGFuZ2VkKCkpCisKKyNkZWZpbmUgRVhF
Q1VURV9BTkRfVkVSSUZZX09OTFlfTEFZRVJfQ0hBTkdFRChjb2RlVG9UZXN0KSAgICAgICAgICAg
ICAgIFwKKyAgICByb290LT5yZXNldExheWVyUHJvcGVydHlDaGFuZ2VkKCk7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBjaGlsZC0+cmVzZXRMYXllclByb3BlcnR5Q2hh
bmdlZCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBncmFuZENoaWxk
LT5yZXNldExheWVyUHJvcGVydHlDaGFuZ2VkKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICBjb2RlVG9UZXN0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICBFWFBFQ1RfVFJVRShyb290LT5sYXllclByb3BlcnR5
Q2hhbmdlZCgpKTsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBFWFBFQ1RfRkFMU0Uo
Y2hpbGQtPmxheWVyUHJvcGVydHlDaGFuZ2VkKCkpOyAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICBFWFBFQ1RfRkFMU0UoZ3JhbmRDaGlsZC0+bGF5ZXJQcm9wZXJ0eUNoYW5nZWQoKSkKKwor
VEVTVChDQ0xheWVySW1wbFRlc3QsIHZlcmlmeUxheWVyQ2hhbmdlc0FyZVRyYWNrZWRQcm9wZXJs
eSkKK3sKKyAgICAvLworICAgIC8vIFRoaXMgdGVzdCBjaGVja3MgdGhhdCBsYXllclByb3BlcnR5
Q2hhbmdlZCgpIGhhcyB0aGUgY29ycmVjdCBiZWhhdmlvci4KKyAgICAvLworCisgICAgLy8gVGhl
IGNvbnN0cnVjdG9yIG9uIHRoaXMgd2lsbCBmYWtlIHRoYXQgd2UgYXJlIG9uIHRoZSBjb3JyZWN0
IHRocmVhZC4KKyAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgc2V0SW1wbFRocmVhZDsKKwor
ICAgIC8vIENyZWF0ZSBhIHNpbXBsZSBDQ0xheWVySW1wbCB0cmVlOgorICAgIFJlZlB0cjxDQ0xh
eWVySW1wbD4gcm9vdCA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMSk7CisgICAgUmVmUHRyPENDTGF5
ZXJJbXBsPiBjaGlsZCA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMik7CisgICAgUmVmUHRyPENDTGF5
ZXJJbXBsPiBncmFuZENoaWxkID0gQ0NMYXllckltcGw6OmNyZWF0ZSgzKTsKKyAgICByb290LT5h
ZGRDaGlsZChjaGlsZCk7CisgICAgY2hpbGQtPmFkZENoaWxkKGdyYW5kQ2hpbGQpOworCisgICAg
UmVmUHRyPENDTGF5ZXJJbXBsPiBkdW1teU1hc2sgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDQpOwor
ICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gZHVtbXlSZXBsaWNhID0gQ0NMYXllckltcGw6OmNyZWF0
ZSg1KTsKKworICAgIC8vIEFkZGluZyBjaGlsZHJlbiBpcyBhbiBpbnRlcm5hbCBvcGVyYXRpb24g
YW5kIHNob3VsZCBub3QgbWFyayBsYXllcnMgYXMgY2hhbmdlZC4KKyAgICBFWFBFQ1RfRkFMU0Uo
cm9vdC0+bGF5ZXJQcm9wZXJ0eUNoYW5nZWQoKSk7CisgICAgRVhQRUNUX0ZBTFNFKGNoaWxkLT5s
YXllclByb3BlcnR5Q2hhbmdlZCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoZ3JhbmRDaGlsZC0+bGF5
ZXJQcm9wZXJ0eUNoYW5nZWQoKSk7CisKKyAgICBGbG9hdFBvaW50IGFyYml0cmFyeUZsb2F0UG9p
bnQgPSBGbG9hdFBvaW50KDAuMTI1ZiwgMC4yNWYpOworICAgIGZsb2F0IGFyYml0cmFyeU51bWJl
ciA9IDAuMzUyZjsKKyAgICBJbnRTaXplIGFyYml0cmFyeUludFNpemUgPSBJbnRTaXplKDExMSwg
MjIyKTsKKyAgICBJbnRQb2ludCBhcmJpdHJhcnlJbnRQb2ludCA9IEludFBvaW50KDMzMywgNDQ0
KTsKKyAgICBJbnRSZWN0IGFyYml0cmFyeUludFJlY3QgPSBJbnRSZWN0KGFyYml0cmFyeUludFBv
aW50LCBhcmJpdHJhcnlJbnRTaXplKTsKKyAgICBGbG9hdFJlY3QgYXJiaXRyYXJ5RmxvYXRSZWN0
ID0gRmxvYXRSZWN0KGFyYml0cmFyeUZsb2F0UG9pbnQsIEZsb2F0U2l6ZSgxLjIzNCwgNS42Nzgp
KTsKKyAgICBDb2xvciBhcmJpdHJhcnlDb2xvciA9IENvbG9yKDEwLCAyMCwgMzApOworICAgIFRy
YW5zZm9ybWF0aW9uTWF0cml4IGFyYml0cmFyeVRyYW5zZm9ybTsKKyAgICBhcmJpdHJhcnlUcmFu
c2Zvcm0uc2NhbGUzZCgwLjEsIDAuMiwgMC4zKTsKKworICAgIC8vIENoYW5naW5nIHRoZXNlIHBy
b3BlcnRpZXMgYWZmZWN0cyB0aGUgZW50aXJlIHN1YnRyZWUgb2YgbGF5ZXJzLgorICAgIEVYRUNV
VEVfQU5EX1ZFUklGWV9TVUJUUkVFX0NIQU5HRUQocm9vdC0+c2V0QW5jaG9yUG9pbnQoYXJiaXRy
YXJ5RmxvYXRQb2ludCkpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0NIQU5HRUQo
cm9vdC0+c2V0QW5jaG9yUG9pbnRaKGFyYml0cmFyeU51bWJlcikpOworICAgIEVYRUNVVEVfQU5E
X1ZFUklGWV9TVUJUUkVFX0NIQU5HRUQocm9vdC0+c2V0TWFza0xheWVyKGR1bW15TWFzaykpOwor
ICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0NIQU5HRUQocm9vdC0+c2V0TWFza3NUb0Jv
dW5kcyh0cnVlKSk7CisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfQ0hBTkdFRChyb290
LT5zZXRPcGFxdWUodHJ1ZSkpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0NIQU5H
RUQocm9vdC0+c2V0T3BhY2l0eShhcmJpdHJhcnlOdW1iZXIpKTsKKyAgICBFWEVDVVRFX0FORF9W
RVJJRllfU1VCVFJFRV9DSEFOR0VEKHJvb3QtPnNldFJlcGxpY2FMYXllcihkdW1teVJlcGxpY2Ep
KTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9DSEFOR0VEKHJvb3QtPnNldFBvc2l0
aW9uKGFyYml0cmFyeUZsb2F0UG9pbnQpKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJF
RV9DSEFOR0VEKHJvb3QtPnNldFByZXNlcnZlczNEKHRydWUpKTsKKyAgICBFWEVDVVRFX0FORF9W
RVJJRllfU1VCVFJFRV9DSEFOR0VEKHJvb3QtPnNldFRyYW5zZm9ybShhcmJpdHJhcnlUcmFuc2Zv
cm0pKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9DSEFOR0VEKHJvb3QtPnNldERv
dWJsZVNpZGVkKGZhbHNlKSk7IC8vIGNvbnN0cnVjdG9yIGluaXRpYWxpemVzIGl0IHRvICJ0cnVl
Ii4KKyAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9DSEFOR0VEKHJvb3QtPnNjcm9sbEJ5
KGFyYml0cmFyeUludFNpemUpKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9DSEFO
R0VEKHJvb3QtPnNldFNjcm9sbERlbHRhKGFyYml0cmFyeUludFNpemUpKTsKKyAgICBFWEVDVVRF
X0FORF9WRVJJRllfU1VCVFJFRV9DSEFOR0VEKHJvb3QtPnNldFNjcm9sbFBvc2l0aW9uKGFyYml0
cmFyeUludFBvaW50KSk7CisKKyAgICAvLyBDaGFuZ2luZyB0aGVzZSBwcm9wZXJ0aWVzIG9ubHkg
YWZmZWN0cyB0aGUgbGF5ZXIgaXRzZWxmLgorICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9PTkxZX0xB
WUVSX0NIQU5HRUQocm9vdC0+c2V0Q29udGVudEJvdW5kcyhhcmJpdHJhcnlJbnRTaXplKSk7Cisg
ICAgRVhFQ1VURV9BTkRfVkVSSUZZX09OTFlfTEFZRVJfQ0hBTkdFRChyb290LT5zZXREZWJ1Z0Jv
cmRlckNvbG9yKGFyYml0cmFyeUNvbG9yKSk7CisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX09OTFlf
TEFZRVJfQ0hBTkdFRChyb290LT5zZXREZWJ1Z0JvcmRlcldpZHRoKGFyYml0cmFyeU51bWJlcikp
OworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9PTkxZX0xBWUVSX0NIQU5HRUQocm9vdC0+c2V0RHJh
d3NDb250ZW50KHRydWUpKTsKKworICAgIC8vIFNwZWNpYWwgY2FzZTogY2hlY2sgdGhhdCBzdWJs
YXllciB0cmFuc2Zvcm0gY2hhbmdlcyBhbGwgbGF5ZXIncyBkZXNjZW5kYW50cywgYnV0IG5vdCB0
aGUgbGF5ZXIgaXRzZWxmLgorICAgIHJvb3QtPnJlc2V0TGF5ZXJQcm9wZXJ0eUNoYW5nZWQoKTsK
KyAgICBjaGlsZC0+cmVzZXRMYXllclByb3BlcnR5Q2hhbmdlZCgpOworICAgIGdyYW5kQ2hpbGQt
PnJlc2V0TGF5ZXJQcm9wZXJ0eUNoYW5nZWQoKTsKKyAgICByb290LT5zZXRTdWJsYXllclRyYW5z
Zm9ybShhcmJpdHJhcnlUcmFuc2Zvcm0pOworICAgIEVYUEVDVF9GQUxTRShyb290LT5sYXllclBy
b3BlcnR5Q2hhbmdlZCgpKTsKKyAgICBFWFBFQ1RfVFJVRShjaGlsZC0+bGF5ZXJQcm9wZXJ0eUNo
YW5nZWQoKSk7CisgICAgRVhQRUNUX1RSVUUoZ3JhbmRDaGlsZC0+bGF5ZXJQcm9wZXJ0eUNoYW5n
ZWQoKSk7CisKKyAgICAvLyBTcGVjaWFsIGNhc2U6IGNoZWNrIHRoYXQgc2V0Qm91bmRzIGNoYW5n
ZXMgYmVoYXZpb3IgZGVwZW5kaW5nIG9uIG1hc2tzVG9Cb3VuZHMuCisgICAgcm9vdC0+c2V0TWFz
a3NUb0JvdW5kcyhmYWxzZSk7CisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX09OTFlfTEFZRVJfQ0hB
TkdFRChyb290LT5zZXRCb3VuZHMoSW50U2l6ZSgxMzUsIDI0NikpKTsKKyAgICByb290LT5zZXRN
YXNrc1RvQm91bmRzKHRydWUpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0NIQU5H
RUQocm9vdC0+c2V0Qm91bmRzKGFyYml0cmFyeUludFNpemUpKTsgLy8gc2hvdWxkIGJlIGEgZGlm
ZmVyZW50IHNpemUgdGhhbiBwcmV2aW91cyBjYWxsLCB0byBlbnN1cmUgaXQgbWFya3MgdHJlZSBj
aGFuZ2VkLgorCisgICAgLy8gQWZ0ZXIgc2V0dGluZyBhbGwgdGhlc2UgcHJvcGVydGllcyBhbHJl
YWR5LCBzZXR0aW5nIHRvIHRoZSBleGFjdCBzYW1lIHZhbHVlcyBhZ2FpbiBzaG91bGQKKyAgICAv
LyBub3QgY2F1c2UgYW55IGNoYW5nZS4KKyAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9E
SURfTk9UX0NIQU5HRShyb290LT5zZXRBbmNob3JQb2ludChhcmJpdHJhcnlGbG9hdFBvaW50KSk7
CisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfRElEX05PVF9DSEFOR0Uocm9vdC0+c2V0
QW5jaG9yUG9pbnRaKGFyYml0cmFyeU51bWJlcikpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9T
VUJUUkVFX0RJRF9OT1RfQ0hBTkdFKHJvb3QtPnNldE1hc2tMYXllcihkdW1teU1hc2spKTsKKyAg
ICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9ESURfTk9UX0NIQU5HRShyb290LT5zZXRNYXNr
c1RvQm91bmRzKHRydWUpKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9ESURfTk9U
X0NIQU5HRShyb290LT5zZXRSZXBsaWNhTGF5ZXIoZHVtbXlSZXBsaWNhKSk7CisgICAgRVhFQ1VU
RV9BTkRfVkVSSUZZX1NVQlRSRUVfRElEX05PVF9DSEFOR0Uocm9vdC0+c2V0UG9zaXRpb24oYXJi
aXRyYXJ5RmxvYXRQb2ludCkpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0RJRF9O
T1RfQ0hBTkdFKHJvb3QtPnNldFByZXNlcnZlczNEKHRydWUpKTsKKyAgICBFWEVDVVRFX0FORF9W
RVJJRllfU1VCVFJFRV9ESURfTk9UX0NIQU5HRShyb290LT5zZXRUcmFuc2Zvcm0oYXJiaXRyYXJ5
VHJhbnNmb3JtKSk7CisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfRElEX05PVF9DSEFO
R0Uocm9vdC0+c2V0RG91YmxlU2lkZWQoZmFsc2UpKTsgLy8gY29uc3RydWN0b3IgaW5pdGlhbGl6
ZXMgaXQgdG8gInRydWUiLgorICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0RJRF9OT1Rf
Q0hBTkdFKHJvb3QtPnNldFNjcm9sbERlbHRhKGFyYml0cmFyeUludFNpemUpKTsKKyAgICBFWEVD
VVRFX0FORF9WRVJJRllfU1VCVFJFRV9ESURfTk9UX0NIQU5HRShyb290LT5zZXRTY3JvbGxQb3Np
dGlvbihhcmJpdHJhcnlJbnRQb2ludCkpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVF
X0RJRF9OT1RfQ0hBTkdFKHJvb3QtPnNldENvbnRlbnRCb3VuZHMoYXJiaXRyYXJ5SW50U2l6ZSkp
OworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0RJRF9OT1RfQ0hBTkdFKHJvb3QtPnNl
dE9wYXF1ZSh0cnVlKSk7CisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfRElEX05PVF9D
SEFOR0Uocm9vdC0+c2V0T3BhY2l0eShhcmJpdHJhcnlOdW1iZXIpKTsKKyAgICBFWEVDVVRFX0FO
RF9WRVJJRllfU1VCVFJFRV9ESURfTk9UX0NIQU5HRShyb290LT5zZXREZWJ1Z0JvcmRlckNvbG9y
KGFyYml0cmFyeUNvbG9yKSk7CisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfRElEX05P
VF9DSEFOR0Uocm9vdC0+c2V0RGVidWdCb3JkZXJXaWR0aChhcmJpdHJhcnlOdW1iZXIpKTsKKyAg
ICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9ESURfTk9UX0NIQU5HRShyb290LT5zZXREcmF3
c0NvbnRlbnQodHJ1ZSkpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0RJRF9OT1Rf
Q0hBTkdFKHJvb3QtPnNldFN1YmxheWVyVHJhbnNmb3JtKGFyYml0cmFyeVRyYW5zZm9ybSkpOwor
ICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0RJRF9OT1RfQ0hBTkdFKHJvb3QtPnNldEJv
dW5kcyhhcmJpdHJhcnlJbnRTaXplKSk7CisKKyAgICAvLyBUaGVzZSBwcm9wZXJ0aWVzIGFyZSBp
bnRlcm5hbCwgYW5kIHNob3VsZCBub3QgYmUgY29uc2lkZXJlZCAiY2hhbmdlIiB3aGVuIHRoZXkg
YXJlIHVzZWQuCisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfRElEX05PVF9DSEFOR0Uo
cm9vdC0+c2V0SXNOb25Db21wb3NpdGVkQ29udGVudCh0cnVlKSk7CisgICAgRVhFQ1VURV9BTkRf
VkVSSUZZX1NVQlRSRUVfRElEX05PVF9DSEFOR0Uocm9vdC0+c2V0U2Npc3NvclJlY3QoYXJiaXRy
YXJ5SW50UmVjdCkpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0RJRF9OT1RfQ0hB
TkdFKHJvb3QtPnNldFVzZXNMYXllclNjaXNzb3IodHJ1ZSkpOworICAgIEVYRUNVVEVfQU5EX1ZF
UklGWV9TVUJUUkVFX0RJRF9OT1RfQ0hBTkdFKHJvb3QtPnNldERyYXdPcGFjaXR5KGFyYml0cmFy
eU51bWJlcikpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0RJRF9OT1RfQ0hBTkdF
KHJvb3QtPnNldFRhcmdldFJlbmRlclN1cmZhY2UoMCkpOworICAgIEVYRUNVVEVfQU5EX1ZFUklG
WV9TVUJUUkVFX0RJRF9OT1RfQ0hBTkdFKHJvb3QtPnNldERyYXdUcmFuc2Zvcm0oYXJiaXRyYXJ5
VHJhbnNmb3JtKSk7CisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfRElEX05PVF9DSEFO
R0Uocm9vdC0+c2V0U2NyZWVuU3BhY2VUcmFuc2Zvcm0oYXJiaXRyYXJ5VHJhbnNmb3JtKSk7Cisg
ICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfRElEX05PVF9DSEFOR0Uocm9vdC0+c2V0RHJh
d2FibGVDb250ZW50UmVjdChhcmJpdHJhcnlJbnRSZWN0KSk7CisgICAgRVhFQ1VURV9BTkRfVkVS
SUZZX1NVQlRSRUVfRElEX05PVF9DSEFOR0Uocm9vdC0+c2V0VXBkYXRlUmVjdChhcmJpdHJhcnlG
bG9hdFJlY3QpKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9ESURfTk9UX0NIQU5H
RShyb290LT5zZXRWaXNpYmxlTGF5ZXJSZWN0KGFyYml0cmFyeUludFJlY3QpKTsKKyAgICBFWEVD
VVRFX0FORF9WRVJJRllfU1VCVFJFRV9ESURfTk9UX0NIQU5HRShyb290LT5zZXRNYXhTY3JvbGxQ
b3NpdGlvbihhcmJpdHJhcnlJbnRTaXplKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>