<?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>116643</bug_id>
          
          <creation_ts>2013-05-22 15:52:45 -0700</creation_ts>
          <short_desc>[CSS Exclusions] Minimal support for using an image to define a shape</short_desc>
          <delta_ts>2013-08-14 18:39:54 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>117610</dependson>
    
    <dependson>119634</dependson>
    
    <dependson>119690</dependson>
          <blocked>116348</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Hans Muller">giles_joplin</reporter>
          <assigned_to name="Hans Muller">giles_joplin</assigned_to>
          <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>krit</cc>
    
    <cc>rakuco</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-ews</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>892582</commentid>
    <comment_count>0</comment_count>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2013-05-22 15:52:45 -0700</bug_when>
    <thetext>An initial cut at supporting shapes defined by an image at a threshold: correctly compute the included/excluded line segment intervals.

- No support for shape-image-threshold, will use 0 (applied to the image&apos;s alpha channel) for now.
- No support for computing ExclusionShape::firstIncludedIntervalLogicalTop().  Will assume that the first interval fits at shapeLogicalTop.
- No support for shape-margin or shape-padding.
- No native image processing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>898838</commentid>
    <comment_count>1</comment_count>
      <attachid>204227</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2013-06-10 16:54:17 -0700</bug_when>
    <thetext>Created attachment 204227
Patch

ChangeLogs are incomplete.  Just giving the bots a shot at this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>898843</commentid>
    <comment_count>2</comment_count>
      <attachid>204227</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-06-10 17:01:31 -0700</bug_when>
    <thetext>Comment on attachment 204227
Patch

Attachment 204227 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/816144</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>898845</commentid>
    <comment_count>3</comment_count>
      <attachid>204227</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-06-10 17:05:40 -0700</bug_when>
    <thetext>Comment on attachment 204227
Patch

Attachment 204227 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/828011</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>898850</commentid>
    <comment_count>4</comment_count>
      <attachid>204227</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-06-10 17:29:39 -0700</bug_when>
    <thetext>Comment on attachment 204227
Patch

Attachment 204227 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/816147</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>898959</commentid>
    <comment_count>5</comment_count>
      <attachid>204227</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-06-10 18:40:56 -0700</bug_when>
    <thetext>Comment on attachment 204227
Patch

Attachment 204227 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/766186</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>898970</commentid>
    <comment_count>6</comment_count>
      <attachid>204227</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-06-10 19:15:06 -0700</bug_when>
    <thetext>Comment on attachment 204227
Patch

Attachment 204227 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/778246</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>899022</commentid>
    <comment_count>7</comment_count>
      <attachid>204227</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-06-10 22:11:11 -0700</bug_when>
    <thetext>Comment on attachment 204227
Patch

Attachment 204227 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/807257</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>899195</commentid>
    <comment_count>8</comment_count>
      <attachid>204336</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2013-06-11 07:28:50 -0700</bug_when>
    <thetext>Created attachment 204336
Patch

Use GraphicsContext3D::packImageData() return value outside of an ASSERT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>899287</commentid>
    <comment_count>9</comment_count>
      <attachid>204336</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2013-06-11 13:59:19 -0700</bug_when>
    <thetext>Comment on attachment 204336
Patch

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

Looks good, just a couple of comments. I would like to see bug numbers next to each Fixme, so that we are tracking that correctly.

I think that we also need to start the discussions about CORS and getting access to the pixels. One could use shapes to get access to the alpha channel of a cross-domain image and that is usually a red flag for security. Moreover, an image could be analyzed by just loading an SVG that loads the image inside and applies a color matrix filter on it to move color channels to the alpha channel.

&gt; LayoutTests/ChangeLog:6
&gt; +        One test to verify that the initial implementation of shape valued images is working

You have a couple of edge cases that I&apos;m not sure you check in here:
1. What happens if the last pixel on the line is below the threshold?
2. What happens if the last pixel on the line is above the threshold?
3. What happens if there&apos;s no alpha information in the image?

&gt; LayoutTests/fast/exclusions/shape-inside/shape-inside-image-001-expected.html:7
&gt; +&lt;script&gt;
&gt; +    if (window.internals)
&gt; +        window.internals.settings.setCSSShapesEnabled(true);
&gt; +&lt;/script&gt;

You don&apos;t need to enable shapes in the ref test.

&gt; LayoutTests/fast/exclusions/shape-inside/shape-inside-image-001.html:15
&gt; +        -webkit-shape-inside: url(&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAASklEQVRYCe3XIQ4AMAhD0XXh/lfuMkeCJjUfhSt5YJDtk6ybDP/ZDFBjBdLuUdjqmawAAQQQQAABBBBAAAEE4gLiN+xfSqKP38ADuQMJO6LNbr4AAAAASUVORK5CYII=&quot;);

Add a comment that the threshold is supposed to be zero, so that when we implement that property, we know what the test is expecting. Maybe link to the bug number for that property too.

&gt; Source/WebCore/WebCore.vcxproj/WebCore.vcxproj:-1
&gt; -ï»¿&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;

nit: You might need to revert this change manually.

&gt; Source/WebCore/rendering/RenderBlock.cpp:1442
&gt; +    if (!parent())

When can this happen?

&gt; Source/WebCore/rendering/RenderBlock.cpp:1446
&gt; +    if (shapeValue  &amp;&amp; shapeValue-&gt;image() &amp;&amp; shapeValue-&gt;image()-&gt;data() == image) {

nit: extra space between &quot;shapeValue&quot; and &quot;&amp;&amp;&quot;

&gt; Source/WebCore/rendering/RenderObject.cpp:1849
&gt; +    updateShapeImage(oldStyle ? oldStyle-&gt;shapeOutside() : 0, m_style ? m_style-&gt;shapeOutside() : 0);

In the changelog you said you are only doing the shapeInside.

&gt; Source/WebCore/rendering/RenderObject.cpp:2628
&gt; +static inline void removeShapeImageClient(RenderObject *thisRenderObject, ShapeValue* shapeValue)

This looks like a good candidate for a RenderObject method. Function will end up unused if ENABLE(CSS_SHAPES) is false.

&gt; Source/WebCore/rendering/RenderObject.cpp:2657
&gt; +        removeShapeImageClient(this, m_style-&gt;shapeOutside());

ditto, the changelog only talks about shape inside.

&gt; Source/WebCore/rendering/shapes/RasterShape.cpp:2
&gt; + * Copyright (C) 2012 Adobe Systems Incorporated. All rights reserved.

nit: 2013 :)

&gt; Source/WebCore/rendering/shapes/RasterShape.cpp:65
&gt; +    // FIXME: if lineRegion.isRect() .. we&apos;re done

nit: Comments should be phrases. Also add bugs that will track these issues.

&gt; Source/WebCore/rendering/shapes/RasterShape.cpp:67
&gt; +    Vector&lt;IntRect&gt; lineRects = lineRegion.rects(); // FIXME: add a non-copying Region::rects() method

nit: the fixmes are usually on the previous line.

&gt; Source/WebCore/rendering/shapes/RasterShape.cpp:87
&gt; +    Region segmentsRegion(lineRect);
&gt; +    Region intervalsRegion;
&gt; +
&gt; +    int lineY = lineRects[0].y();
&gt; +    for (unsigned i = 0; i &lt; lineRects.size(); i++) {
&gt; +        if (lineRects[i].y() != lineY) {
&gt; +            segmentsRegion.intersect(intervalsRegion);
&gt; +            intervalsRegion = Region(); // FIXME: add a region clear() method
&gt; +        }
&gt; +        intervalsRegion.unite(Region(alignedRect(lineRects[i], y1, y2)));
&gt; +        lineY = lineRects[i].y();
&gt; +    }
&gt; +    if (!intervalsRegion.isEmpty())
&gt; +        segmentsRegion.intersect(intervalsRegion);
&gt; +
&gt; +    Vector&lt;IntRect&gt; segmentRects = segmentsRegion.rects();
&gt; +    for (unsigned i = 0; i &lt; segmentRects.size(); i++)
&gt; +        result.append(LineSegment(segmentRects[i].x(), segmentRects[i].maxX()));

If I understand correctly, all you need to do here is to find the spaces that are not intersecting any of the lineRects. Looks like that should be doable in one pass without using regions.

&gt; Source/WebCore/rendering/shapes/RasterShape.cpp:92
&gt; +    ASSERT(shapeMargin() &gt;= 0);

What code is making sure that the shapeMargin is always bigger or equal to 0? Looks like the input is always converted from Length. I think the assert should be in the constructor. This object is immutable, so it&apos;s better to catch the problem as soon as it happens.

&gt; Source/WebCore/rendering/shapes/RasterShape.cpp:102
&gt; +    ASSERT(shapePadding() &gt;= 0);

ditto

&gt; Source/WebCore/rendering/shapes/RasterShape.h:2
&gt; + * Copyright (C) 2012 Adobe Systems Incorporated. All rights reserved.

nit: 2012 - &gt; 2013

&gt; Source/WebCore/rendering/shapes/Shape.cpp:204
&gt; +    Image* image = styleImage-&gt;cachedImage()-&gt;image();

WebGL would check access with CORS before accessing the pixels of an image. I suppose we will need to do the same. Add a fixme for that too.

&gt; Source/WebCore/rendering/shapes/Shape.cpp:205
&gt; +    GraphicsContext3D::ImageExtractor imageExtractor(image, GraphicsContext3D::HtmlDomNone, false, true);

Let&apos;s add a FIXME to move ImageExtractor out of the GC3D. Add a bug for it too.

Is there any WebGL compile-time flag that would make the ImageExtractor unavailable when Shapes are enabled?

&gt; Source/WebCore/rendering/shapes/Shape.cpp:234
&gt; +                } else if (startX != -1 &amp;&amp; (alpha &lt;= alphaPixelThreshold || x == imageWidth - 1)) {

Not sure how the region would work in this case, but you actually have two cases in here:
alpha &lt;= alphaPixelThreshold =&gt; the pixel at &quot;x&quot; should NOT BE included in the interval.
x == imageWidth - 1 =&gt; the pixel at &quot;x&quot; should BE included in the interval.

&gt; Source/WebCore/rendering/shapes/Shape.cpp:245
&gt; +    rasterShape-&gt;m_writingMode = writingMode;
&gt; +    rasterShape-&gt;m_margin = floatValueForLength(margin, 0);
&gt; +    rasterShape-&gt;m_padding = floatValueForLength(padding, 0);

Why not put these in the constructor?

&gt; Source/WebCore/rendering/style/ShapeValue.h:69
&gt;      StyleImage* image() const { return m_image.get(); }
&gt; +    bool isImageValid() const { return image() &amp;&amp; image()-&gt;cachedImage() &amp;&amp; image()-&gt;cachedImage()-&gt;hasImage(); }
&gt;      void setImage(PassRefPtr&lt;StyleImage&gt; image)

nit: these functions should have an ASSERT for the type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>899325</commentid>
    <comment_count>10</comment_count>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2013-06-11 15:59:08 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 204336 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=204336&amp;action=review
&gt; 
&gt; Looks good, just a couple of comments. I would like to see bug numbers next to each Fixme, so that we are tracking that correctly.

I&apos;d prefer to list all of the related work in the &quot;master&quot; bug, https://bugs.webkit.org/show_bug.cgi?id=116348.  Would that be OK?

&gt; I think that we also need to start the discussions about CORS and getting access to the pixels. One could use shapes to get access to the alpha channel of a cross-domain image and that is usually a red flag for security. Moreover, an image could be analyzed by just loading an SVG that loads the image inside and applies a color matrix filter on it to move color channels to the alpha channel.

Definitely.  

&gt; &gt; LayoutTests/ChangeLog:6
&gt; &gt; +        One test to verify that the initial implementation of shape valued images is working
&gt; 
&gt; You have a couple of edge cases that I&apos;m not sure you check in here:
&gt; 1. What happens if the last pixel on the line is below the threshold?
&gt; 2. What happens if the last pixel on the line is above the threshold?
&gt; 3. What happens if there&apos;s no alpha information in the image?

The current test case covers #1, I&apos;ll add tests for the other two.

&gt; &gt; Source/WebCore/rendering/RenderBlock.cpp:1442
&gt; &gt; +    if (!parent())
&gt; 
&gt; When can this happen?

I included this check because RenderBox::imageChanged() does, and I assume that it exists to guard against handling a notification that occurs after the node has been removed from its parent.

&gt; &gt; Source/WebCore/rendering/RenderObject.cpp:1849
&gt; &gt; +    updateShapeImage(oldStyle ? oldStyle-&gt;shapeOutside() : 0, m_style ? m_style-&gt;shapeOutside() : 0);
&gt; 
&gt; In the changelog you said you are only doing the shapeInside.

I&apos;ve only completed the initial support for shape-inside.  I did do some of the work for shape-outside, just where there was an obvious inside/outside symmetry in the code.  I&apos;ll be finishing the shape-outside support next.

&gt; &gt; Source/WebCore/rendering/RenderObject.cpp:2628
&gt; &gt; +static inline void removeShapeImageClient(RenderObject *thisRenderObject, ShapeValue* shapeValue)
&gt; 
&gt; This looks like a good candidate for a RenderObject method. Function will end up unused if ENABLE(CSS_SHAPES) is false.

My mistake: the function should have been #ifdef&apos;d.

&gt; &gt; Source/WebCore/rendering/shapes/RasterShape.cpp:87
&gt; &gt; +    Region segmentsRegion(lineRect);
&gt; &gt; +    Region intervalsRegion;
&gt; &gt; +
&gt; &gt; +    int lineY = lineRects[0].y();
&gt; &gt; +    for (unsigned i = 0; i &lt; lineRects.size(); i++) {
&gt; &gt; +        if (lineRects[i].y() != lineY) {
&gt; &gt; +            segmentsRegion.intersect(intervalsRegion);
&gt; &gt; +            intervalsRegion = Region(); // FIXME: add a region clear() method
&gt; &gt; +        }
&gt; &gt; +        intervalsRegion.unite(Region(alignedRect(lineRects[i], y1, y2)));
&gt; &gt; +        lineY = lineRects[i].y();
&gt; &gt; +    }
&gt; &gt; +    if (!intervalsRegion.isEmpty())
&gt; &gt; +        segmentsRegion.intersect(intervalsRegion);
&gt; &gt; +
&gt; &gt; +    Vector&lt;IntRect&gt; segmentRects = segmentsRegion.rects();
&gt; &gt; +    for (unsigned i = 0; i &lt; segmentRects.size(); i++)
&gt; &gt; +        result.append(LineSegment(segmentRects[i].x(), segmentRects[i].maxX()));
&gt; 
&gt; If I understand correctly, all you need to do here is to find the spaces that are not intersecting any of the lineRects. Looks like that should be doable in one pass without using regions.

Yes, this could be done more efficiently.  If it&apos;s OK, I&apos;d like to make performance improvements in subsequent patches.

&gt; &gt; Source/WebCore/rendering/shapes/RasterShape.cpp:92
&gt; &gt; +    ASSERT(shapeMargin() &gt;= 0);
&gt; 
&gt; What code is making sure that the shapeMargin is always bigger or equal to 0? Looks like the input is always converted from Length. I think the assert should be in the constructor. This object is immutable, so it&apos;s better to catch the problem as soon as it happens.
&gt; 
&gt; &gt; Source/WebCore/rendering/shapes/RasterShape.cpp:102
&gt; &gt; +    ASSERT(shapePadding() &gt;= 0);
&gt; 
&gt; ditto

The Shape invariants like this are guaranteed by the createShape() functions, not by the constructors.  In this case I could make the constructor check the invariants, but I wanted to be consistent with the existing code.

&gt; Is there any WebGL compile-time flag that would make the ImageExtractor unavailable when Shapes are enabled?

As far as I can tell, ImageExtractor et al are included in the build unconditionally. We can insulate ourselves from WebGL by separating the ImageExtractor code as noted earlier.

&gt; &gt; Source/WebCore/rendering/shapes/Shape.cpp:234
&gt; &gt; +                } else if (startX != -1 &amp;&amp; (alpha &lt;= alphaPixelThreshold || x == imageWidth - 1)) {
&gt; 
&gt; Not sure how the region would work in this case, but you actually have two cases in here:
&gt; alpha &lt;= alphaPixelThreshold =&gt; the pixel at &quot;x&quot; should NOT BE included in the interval.
&gt; x == imageWidth - 1 =&gt; the pixel at &quot;x&quot; should BE included in the interval.

If we&apos;re accumulating an interval then startX != -1.  If we&apos;re accumulating an interval and the current pixel is below threshold OR we reach the end of the row, then the interval ends.

&gt; &gt; Source/WebCore/rendering/shapes/Shape.cpp:245
&gt; &gt; +    rasterShape-&gt;m_writingMode = writingMode;
&gt; &gt; +    rasterShape-&gt;m_margin = floatValueForLength(margin, 0);
&gt; &gt; +    rasterShape-&gt;m_padding = floatValueForLength(padding, 0);
&gt; 
&gt; Why not put these in the constructor?

I just structured the code this way to be consistent with the other createShape() method. In that case it was simpler to just initialize these fields at the end. In this case it&apos;s useful to easily be able to see the similarity between the ends of the two methods.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>899336</commentid>
    <comment_count>11</comment_count>
      <attachid>204371</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2013-06-11 16:59:04 -0700</bug_when>
    <thetext>Created attachment 204371
Patch

Made all of the corrections per Alex&apos;s review that I didn&apos;t ask to defer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>899338</commentid>
    <comment_count>12</comment_count>
      <attachid>204372</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2013-06-11 17:10:19 -0700</bug_when>
    <thetext>Created attachment 204372
Patch

Fixed some whitespace-Os.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>899572</commentid>
    <comment_count>13</comment_count>
      <attachid>204446</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2013-06-12 09:09:58 -0700</bug_when>
    <thetext>Created attachment 204446
Patch

Removed many noisy FIXMEs and consolidated the pending work list in https://bugs.webkit.org/show_bug.cgi?id=116348#c1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>899574</commentid>
    <comment_count>14</comment_count>
      <attachid>204447</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2013-06-12 09:11:46 -0700</bug_when>
    <thetext>Created attachment 204447
Patch

Included ChangeLog updates.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>899636</commentid>
    <comment_count>15</comment_count>
      <attachid>204462</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2013-06-12 11:22:14 -0700</bug_when>
    <thetext>Created attachment 204462
Patch

Added a comment about the Region algorithm used to compute shape intervals.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>899638</commentid>
    <comment_count>16</comment_count>
      <attachid>204463</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2013-06-12 11:23:52 -0700</bug_when>
    <thetext>Created attachment 204463
Patch

Added a comment about the shape interval algorithm&apos;s implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>899821</commentid>
    <comment_count>17</comment_count>
      <attachid>204536</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2013-06-12 15:02:41 -0700</bug_when>
    <thetext>Created attachment 204536
Patch

Removed incomplete shape-outside support. Conditionally included code that depends on 3DGraphics.  Made removeShapeImageClient() a RenderObject method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>902371</commentid>
    <comment_count>18</comment_count>
      <attachid>205132</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2013-06-20 17:38:51 -0700</bug_when>
    <thetext>Created attachment 205132
Patch

Renamed RasterShapeIntervals::getIntervals() to getIncludedIntervals().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>902431</commentid>
    <comment_count>19</comment_count>
      <attachid>205132</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-06-20 21:58:55 -0700</bug_when>
    <thetext>Comment on attachment 205132
Patch

Attachment 205132 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/906782</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>902970</commentid>
    <comment_count>20</comment_count>
      <attachid>205300</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2013-06-24 09:13:07 -0700</bug_when>
    <thetext>Created attachment 205300
Patch

Resync&apos;d.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>903526</commentid>
    <comment_count>21</comment_count>
      <attachid>205300</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2013-06-25 21:44:46 -0700</bug_when>
    <thetext>Comment on attachment 205300
Patch

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

I just looked over the patch and did not read previous comments. Sorry if I missed something. Would be great if you can answer some questions.

&gt; Source/WebCore/rendering/shapes/RasterShape.cpp:42
&gt; +        m_bounds = adoptPtr(new IntRect(m_region.bounds()));
&gt; +    return *m_bounds;

Why is m_bounds a pointer? Seems strange that you don&apos;t return a copy of the IntRect. Where is this used?

&gt; Source/WebCore/rendering/shapes/RasterShape.cpp:74
&gt; +

Remove the empty line.

&gt; Source/WebCore/rendering/shapes/RasterShape.cpp:76
&gt; +    for (unsigned i = 0; i &lt; lineRects.size(); i++) {

++i

&gt; Source/WebCore/rendering/shapes/RasterShape.cpp:88
&gt; +    for (unsigned i = 0; i &lt; segmentRects.size(); i++)

++i

&gt; Source/WebCore/rendering/shapes/RasterShape.cpp:98
&gt; +    // FIXME: add support for non-zero margin

Real sentences and, if possible, a link to the bug.

&gt; Source/WebCore/rendering/shapes/RasterShape.cpp:108
&gt; +    // FIXME: add support for non-zero padding

Ditto.

&gt; Source/WebCore/rendering/shapes/RasterShape.cpp:114
&gt; +void RasterShape::getExcludedIntervals(LayoutUnit logicalTop, LayoutUnit logicalHeight, SegmentList&amp; result) const
&gt; +{
&gt; +    UNUSED_PARAM(result);

Just don&apos;t define result. The call of UNUSED_PARAM is not needed.

&gt; Source/WebCore/rendering/shapes/RasterShape.cpp:121
&gt; +    float y1 = logicalTop;
&gt; +    float y2 = logicalTop + logicalHeight;

Seems to be unnecessary if it is just used once.

&gt; Source/WebCore/rendering/shapes/RasterShape.cpp:135
&gt; +

no empty line here.

&gt; Source/WebCore/rendering/shapes/RasterShape.cpp:158
&gt; +    // FIXME: complete this method

See comment above.

&gt; Source/WebCore/rendering/shapes/RasterShape.h:52
&gt; +    mutable OwnPtr&lt;IntRect&gt; m_bounds; // Cached value of m_region.bounds().

Why does it need to be a pointer? Do you create it on the fly and fear that it takes to much memory?

&gt; Source/WebCore/rendering/shapes/Shape.cpp:36
&gt; +#include &quot;GraphicsContext3D.h&quot;

Why do you need GC3D for reading an image?

&gt; Source/WebCore/rendering/shapes/Shape.cpp:210
&gt; +    // FIXME: Should clip shape to logical box.
&gt; +    UNUSED_PARAM(logicalBoxSize);

don&apos;t define logicalBoxSize

&gt; Source/WebCore/rendering/shapes/Shape.cpp:215
&gt; +    Image* image = styleImage-&gt;cachedImage()-&gt;image();
&gt; +    GraphicsContext3D::ImageExtractor imageExtractor(image, GraphicsContext3D::HtmlDomNone, false, true);

What does it do? Can you add a comment?

&gt; Source/WebCore/rendering/shapes/Shape.cpp:236
&gt; +        for (int y = 0; y &lt; imageHeight; y++) {

++y

&gt; Source/WebCore/rendering/shapes/Shape.cpp:238
&gt; +            for (int x = 0; x &lt; imageWidth; x++) {

++x

&gt; Source/WebCore/rendering/shapes/Shape.cpp:263
&gt; +    UNUSED_PARAM(styleImage);
&gt; +    UNUSED_PARAM(threshold);
&gt; +    UNUSED_PARAM(logicalBoxSize);
&gt; +

Don&apos;t define the arguments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>903703</commentid>
    <comment_count>22</comment_count>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2013-06-26 07:36:29 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; (From update of attachment 205300 [details])
&gt; &gt; Source/WebCore/rendering/shapes/RasterShape.cpp:42
&gt; &gt; +        m_bounds = adoptPtr(new IntRect(m_region.bounds()));
&gt; &gt; +    return *m_bounds;
&gt; 
&gt; Why is m_bounds a pointer? Seems strange that you don&apos;t return a copy of the IntRect. Where is this used?

It&apos;s computed lazily and cached.  I&apos;m using !m_bounds to indicate that the value hasn&apos;t been computed yet, instead of a separate flag.

The value is used by the RasterShape::getIncludedIntervals() and RasterShapeIntervals::getExcludedIntervals() methods. It&apos;s also
used by RasterShape::shapeMarginLogicalBoundingBox() and RasterShape::shapePaddingLogicalBoundingBox().

&gt; &gt; Source/WebCore/rendering/shapes/RasterShape.cpp:135
&gt; &gt; +
&gt; 
&gt; no empty line here.
&gt; 
&gt; &gt; Source/WebCore/rendering/shapes/RasterShape.h:52
&gt; &gt; +    mutable OwnPtr&lt;IntRect&gt; m_bounds; // Cached value of m_region.bounds().
&gt; 
&gt; Why does it need to be a pointer? Do you create it on the fly and fear that it takes to much memory?

No. As with RasterShapeIntervals::m_bounds, I&apos;m using a pointer because the value is lazily computed and cached.

&gt; &gt; Source/WebCore/rendering/shapes/Shape.cpp:36
&gt; &gt; +#include &quot;GraphicsContext3D.h&quot;
&gt; 
&gt; Why do you need GC3D for reading an image?

I&apos;m using GraphicsContext3D::ImageExtractor().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>903732</commentid>
    <comment_count>23</comment_count>
      <attachid>205499</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2013-06-26 08:36:02 -0700</bug_when>
    <thetext>Created attachment 205499
Patch

Made the suggested changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>903738</commentid>
    <comment_count>24</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2013-06-26 08:45:48 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; (In reply to comment #21)
&gt; &gt; (From update of attachment 205300 [details] [details])
&gt; &gt; &gt; Source/WebCore/rendering/shapes/RasterShape.cpp:42
&gt; &gt; &gt; +        m_bounds = adoptPtr(new IntRect(m_region.bounds()));
&gt; &gt; &gt; +    return *m_bounds;
&gt; &gt; 
&gt; &gt; Why is m_bounds a pointer? Seems strange that you don&apos;t return a copy of the IntRect. Where is this used?
&gt; 
&gt; It&apos;s computed lazily and cached.  I&apos;m using !m_bounds to indicate that the value hasn&apos;t been computed yet, instead of a separate flag.
&gt; 
&gt; The value is used by the RasterShape::getIncludedIntervals() and RasterShapeIntervals::getExcludedIntervals() methods. It&apos;s also
&gt; used by RasterShape::shapeMarginLogicalBoundingBox() and RasterShape::shapePaddingLogicalBoundingBox().


The question is more: How often do you expect that the class gets initiated? If it is 100s or thousands of times, I can understand it. It would be a waste of memory to have 4 floats instead of one pointer. If it is just a couple of times, it is over-engineered. And I would be in favor for replacing it with a &quot;physical&quot; IntRect.

&gt; 
&gt; &gt; &gt; Source/WebCore/rendering/shapes/RasterShape.cpp:135
&gt; &gt; &gt; +
&gt; &gt; 
&gt; &gt; no empty line here.
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/rendering/shapes/RasterShape.h:52
&gt; &gt; &gt; +    mutable OwnPtr&lt;IntRect&gt; m_bounds; // Cached value of m_region.bounds().
&gt; &gt; 
&gt; &gt; Why does it need to be a pointer? Do you create it on the fly and fear that it takes to much memory?
&gt; 
&gt; No. As with RasterShapeIntervals::m_bounds, I&apos;m using a pointer because the value is lazily computed and cached.

See above.

&gt; 
&gt; &gt; &gt; Source/WebCore/rendering/shapes/Shape.cpp:36
&gt; &gt; &gt; +#include &quot;GraphicsContext3D.h&quot;
&gt; &gt; 
&gt; &gt; Why do you need GC3D for reading an image?
&gt; 
&gt; I&apos;m using GraphicsContext3D::ImageExtractor().

Why this? What does it do? Why not ImageBuffer::imageData? What is the difference?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>903753</commentid>
    <comment_count>25</comment_count>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2013-06-26 09:00:57 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; (In reply to comment #22)
&gt; &gt; (In reply to comment #21)
&gt; &gt; &gt; (From update of attachment 205300 [details] [details] [details])
&gt; &gt; &gt; &gt; Source/WebCore/rendering/shapes/RasterShape.cpp:42
&gt; &gt; &gt; &gt; +        m_bounds = adoptPtr(new IntRect(m_region.bounds()));
&gt; &gt; &gt; &gt; +    return *m_bounds;
&gt; &gt; &gt; 
&gt; &gt; &gt; Why is m_bounds a pointer? Seems strange that you don&apos;t return a copy of the IntRect. Where is this used?
&gt; &gt; 
&gt; &gt; It&apos;s computed lazily and cached.  I&apos;m using !m_bounds to indicate that the value hasn&apos;t been computed yet, instead of a separate flag.
&gt; &gt; 
&gt; &gt; The value is used by the RasterShape::getIncludedIntervals() and RasterShapeIntervals::getExcludedIntervals() methods. It&apos;s also
&gt; &gt; used by RasterShape::shapeMarginLogicalBoundingBox() and RasterShape::shapePaddingLogicalBoundingBox().
&gt; 
&gt; 
&gt; The question is more: How often do you expect that the class gets initiated? If it is 100s or thousands of times, I can understand it. It would be a waste of memory to have 4 floats instead of one pointer. If it is just a couple of times, it is over-engineered. And I would be in favor for replacing it with a &quot;physical&quot; IntRect.

It&apos;s not a question of saving memory, I&apos;m avoiding the cost of calling m_region.bounds() until the value is needed.

&gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebCore/rendering/shapes/Shape.cpp:36
&gt; &gt; &gt; &gt; +#include &quot;GraphicsContext3D.h&quot;
&gt; &gt; &gt; 
&gt; &gt; &gt; Why do you need GC3D for reading an image?
&gt; &gt; 
&gt; &gt; I&apos;m using GraphicsContext3D::ImageExtractor().
&gt; 
&gt; Why this? What does it do? Why not ImageBuffer::imageData? What is the difference?

I&apos;ve got a CachedImage and I want to extract its alpha channel. ImageExtractor and packImageData() provide away to do this.  To insert an ImageBuffer into the process, I&apos;d have to render the image first?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>915221</commentid>
    <comment_count>26</comment_count>
      <attachid>208286</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2013-08-07 11:12:18 -0700</bug_when>
    <thetext>Created attachment 208286
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>915861</commentid>
    <comment_count>27</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2013-08-09 10:06:55 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; (In reply to comment #24)
&gt; &gt; (In reply to comment #22)
&gt; &gt; &gt; (In reply to comment #21)
&gt; &gt; &gt; &gt; (From update of attachment 205300 [details] [details] [details] [details])
&gt; &gt; &gt; &gt; &gt; Source/WebCore/rendering/shapes/RasterShape.cpp:42
&gt; &gt; &gt; &gt; &gt; +        m_bounds = adoptPtr(new IntRect(m_region.bounds()));
&gt; &gt; &gt; &gt; &gt; +    return *m_bounds;
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Why is m_bounds a pointer? Seems strange that you don&apos;t return a copy of the IntRect. Where is this used?
&gt; &gt; &gt; 
&gt; &gt; &gt; It&apos;s computed lazily and cached.  I&apos;m using !m_bounds to indicate that the value hasn&apos;t been computed yet, instead of a separate flag.
&gt; &gt; &gt; 
&gt; &gt; &gt; The value is used by the RasterShape::getIncludedIntervals() and RasterShapeIntervals::getExcludedIntervals() methods. It&apos;s also
&gt; &gt; &gt; used by RasterShape::shapeMarginLogicalBoundingBox() and RasterShape::shapePaddingLogicalBoundingBox().
&gt; &gt; 
&gt; &gt; 
&gt; &gt; The question is more: How often do you expect that the class gets initiated? If it is 100s or thousands of times, I can understand it. It would be a waste of memory to have 4 floats instead of one pointer. If it is just a couple of times, it is over-engineered. And I would be in favor for replacing it with a &quot;physical&quot; IntRect.
&gt; 
&gt; It&apos;s not a question of saving memory, I&apos;m avoiding the cost of calling m_region.bounds() until the value is needed.

And it is a questions of balance between maintenance and performance if we add things like that. I leave it up to Alex to do the final review and decision.

&gt; 
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; Source/WebCore/rendering/shapes/Shape.cpp:36
&gt; &gt; &gt; &gt; &gt; +#include &quot;GraphicsContext3D.h&quot;
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Why do you need GC3D for reading an image?
&gt; &gt; &gt; 
&gt; &gt; &gt; I&apos;m using GraphicsContext3D::ImageExtractor().
&gt; &gt; 
&gt; &gt; Why this? What does it do? Why not ImageBuffer::imageData? What is the difference?
&gt; 
&gt; I&apos;ve got a CachedImage and I want to extract its alpha channel. ImageExtractor and packImageData() provide away to do this.  To insert an ImageBuffer into the process, I&apos;d have to render the image first?

I would still prefer that you refactor this code first so that we do not need to reference 3D classes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>916448</commentid>
    <comment_count>28</comment_count>
      <attachid>208573</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2013-08-12 16:36:43 -0700</bug_when>
    <thetext>Created attachment 208573
Patch

I&apos;ve replaced the GraphicsContext3D dependent Shape::createShape() function with one that renders the StyleImage to an ImageBuffer and uses getUnmultipliedImageData() to access the ImageBuffer&apos;s raw pixels.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>917162</commentid>
    <comment_count>29</comment_count>
      <attachid>208573</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2013-08-14 09:58:23 -0700</bug_when>
    <thetext>Comment on attachment 208573
Patch

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

&gt; Source/WebCore/ChangeLog:11
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=116348 for the current list.

nit: You should note that there&apos;s no cross-domain check yet. Might be worth having a bug for it already.

&gt; Source/WebCore/rendering/RenderBlock.cpp:1449
&gt; +        ShapeInsideInfo* shapeInsideInfo = ensureShapeInsideInfo();
&gt; +        shapeInsideInfo-&gt;dirtyShapeSize();

nit: there&apos;s a lot of &quot;shapeInsideInfo&quot; on these two lines :)

&gt; Source/WebCore/rendering/shapes/RasterShape.cpp:113
&gt; +    // FIXME: this method is only a stub, see https://code.google.com/p/chromium/issues/detail?id=252737.

nit: you may need to update this to a webkit bug instead.

&gt; Source/WebCore/rendering/shapes/Shape.cpp:228
&gt; +            for (int x = 0; x &lt; imageSize.width() &amp;&amp; pixelArrayOffset &lt; pixelArrayLength; ++x, pixelArrayOffset += 4) {

nit: You don&apos;t need to check pixelArrayOffset &lt; pixelArrayLength. You already have an assert for it.

&gt; Source/WebCore/rendering/shapes/Shape.cpp:230
&gt; +                if ((startX == -1) &amp;&amp; alpha &gt; alphaPixelThreshold) {

nit: I would extract alpha &gt; alphaPixelThreshold as a local variable. You have the same expression in both branches.
nit: There&apos;s no need for the first set of parentheses around startX. One line if block-statements do not need the brackets around them.

&gt; Source/WebCore/rendering/shapes/ShapeOutsideInfo.cpp:49
&gt; +        return false;

Is there a bug added for this case? We should have a fixme in here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>917266</commentid>
    <comment_count>30</comment_count>
      <attachid>208755</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2013-08-14 13:37:22 -0700</bug_when>
    <thetext>Created attachment 208755
Patch

Made the suggested changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>917267</commentid>
    <comment_count>31</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-08-14 13:40:05 -0700</bug_when>
    <thetext>Attachment 208755 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast/shapes/shape-inside/shape-inside-image-001-expected.html&apos;, u&apos;LayoutTests/fast/shapes/shape-inside/shape-inside-image-001.html&apos;, u&apos;LayoutTests/fast/shapes/shape-inside/shape-inside-image-002-expected.html&apos;, u&apos;LayoutTests/fast/shapes/shape-inside/shape-inside-image-002.html&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Source/WebCore/Target.pri&apos;, u&apos;Source/WebCore/WebCore.vcxproj/WebCore.vcxproj&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebCore/rendering/RenderBlock.cpp&apos;, u&apos;Source/WebCore/rendering/RenderBlock.h&apos;, u&apos;Source/WebCore/rendering/RenderObject.cpp&apos;, u&apos;Source/WebCore/rendering/RenderObject.h&apos;, u&apos;Source/WebCore/rendering/shapes/RasterShape.cpp&apos;, u&apos;Source/WebCore/rendering/shapes/RasterShape.h&apos;, u&apos;Source/WebCore/rendering/shapes/Shape.cpp&apos;, u&apos;Source/WebCore/rendering/shapes/Shape.h&apos;, u&apos;Source/WebCore/rendering/shapes/ShapeInfo.cpp&apos;, u&apos;Source/WebCore/rendering/shapes/ShapeInsideInfo.cpp&apos;, u&apos;Source/WebCore/rendering/shapes/ShapeOutsideInfo.cpp&apos;, u&apos;Source/WebCore/rendering/style/ShapeValue.h&apos;]&quot; exit_code: 1
Source/WebCore/rendering/shapes/Shape.cpp:224:  One space before end of line comments  [whitespace/comments] [5]
Total errors found: 1 in 23 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>917274</commentid>
    <comment_count>32</comment_count>
      <attachid>208757</attachid>
    <who name="Hans Muller">giles_joplin</who>
    <bug_when>2013-08-14 13:51:14 -0700</bug_when>
    <thetext>Created attachment 208757
Patch

Fixed a style-o and added the ChangeLog &quot;reviewed by&quot; entries.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>917332</commentid>
    <comment_count>33</comment_count>
      <attachid>208757</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-08-14 16:23:40 -0700</bug_when>
    <thetext>Comment on attachment 208757
Patch

Clearing flags on attachment: 208757

Committed r154081: &lt;http://trac.webkit.org/changeset/154081&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>917333</commentid>
    <comment_count>34</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-08-14 16:23:46 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>917385</commentid>
    <comment_count>35</comment_count>
      <attachid>208757</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-08-14 18:39:54 -0700</bug_when>
    <thetext>Comment on attachment 208757
Patch

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

&gt; Source/WebCore/rendering/shapes/RasterShape.cpp:51
&gt; +static inline IntRect alignedRect(IntRect r, int y1, int y2)

Should be const IntRect&amp;

&gt; Source/WebCore/rendering/shapes/Shape.cpp:236
&gt; +                for (int x = 0; x &lt; imageSize.width(); ++x, pixelArrayOffset += 4) {
&gt; +                    uint8_t alpha = pixelArray-&gt;item(pixelArrayOffset);
&gt; +                    bool alphaAboveThreshold = alpha &gt; alphaPixelThreshold;
&gt; +                    if (startX == -1 &amp;&amp; alphaAboveThreshold) {
&gt; +                        startX = x;
&gt; +                    } else if (startX != -1 &amp;&amp; (!alphaAboveThreshold || x == imageSize.width() - 1)) {
&gt; +                        intervals-&gt;addInterval(y, startX, x);
&gt; +                        startX = -1;
&gt; +                    }
&gt; +                }

This seems pretty expensive; it runs for every pixel. Wouldn&apos;t it better to work in for each side until you see a non-alpha pixel?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>204227</attachid>
            <date>2013-06-10 16:54:17 -0700</date>
            <delta_ts>2013-06-11 07:28:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>tmp.patch</filename>
            <type>text/plain</type>
            <size>36108</size>
            <attacher name="Hans Muller">giles_joplin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5ZTE3YjE3Li41MjRmZjc1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMtMDYt
MTAgIEhhbnMgTXVsbGVyICA8aG11bGxlckBhZG9iZS5jb20+CisKKyAgICAgICAgW0NTUyBFeGNs
dXNpb25zXSBNaW5pbWFsIHN1cHBvcnQgZm9yIHVzaW5nIGFuIGltYWdlIHRvIGRlZmluZSBhIHNo
YXBlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTY2
NDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZh
c3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAwMS1leHBlY3Rl
ZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3No
YXBlLWluc2lkZS1pbWFnZS0wMDEuaHRtbDogQWRkZWQuCisKIDIwMTMtMDYtMTAgIE1paG5lYSBP
dmlkZW5pZSAgPG1paG5lYUBhZG9iZS5jb20+CiAKICAgICAgICAgW0NTU1JlZ2lvbnNdIEFTU0VS
VElPTiBGQUlMRUQ6IHJvdW5kZWRJbnRQb2ludChyZW5kZXJlck1hcHBlZFJlc3VsdCkgPT0gcm91
bmRlZEludFBvaW50KHJlc3VsdCkgaW4gUmVuZGVyR2VvbWV0cnlNYXA6Om1hcFRvQ29udGFpbmVy
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3No
YXBlLWluc2lkZS1pbWFnZS0wMDEtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXhj
bHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAwMS1leHBlY3RlZC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhZWQyMzUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWlu
c2lkZS1pbWFnZS0wMDEtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDI4IEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorICAgIGlmICh3aW5kb3cuaW50ZXJuYWxz
KQorICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldENTU1NoYXBlc0VuYWJsZWQo
dHJ1ZSk7Cis8L3NjcmlwdD4KKzxzdHlsZT4KKyAgICAjaW1hZ2Utc2hhcGUgeworICAgICAgICBi
b3JkZXI6IHNvbGlkIGJsYWNrIDFweDsKKyAgICAgICAgZm9udDogMTJweC8xIEFoZW0sIHNhbnMt
c2VyaWY7CisgICAgICAgIHBhZGRpbmc6IDRweDsKKyAgICAgICAgY29sb3I6IGdyZWVuOworICAg
ICAgICB3aWR0aDogMjRweDsKKyAgICAgICAgaGVpZ2h0OiAyNHB4OworICAgICAgICBiYWNrZ3Jv
dW5kLWltYWdlOiB1cmwoImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1Vo
RVVnQUFBQ0FBQUFBZ0NBWUFBQUJ6ZW5yMEFBQUFTa2xFUVZSWUNlM1hJUTRBTUFoRDBYWGgvbGZ1
TWtlQ0pqVWZoU3Q1WUpEdGs2eWJEUC9aREZCakJkTHVVZGpxbWF3QUFRUVFRQUFCQkJCQUFBRUU0
Z0xpTit4ZlNxS1AzOEFEdVFNSk82TE5icjRBQUFBQVNVVk9SSzVDWUlJPSIpOworICAgICAgICBi
YWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OworICAgIH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8
Ym9keT4KKyAgPHAgaWQ9ImluZm9ybWF0aXZlLXRleHQiPgorICAgICAgVGhpcyB0ZXN0IHJlcXVp
cmVzIHRoZSBBaGVtIGZvbnQuIEl0IHVzZXMgYSAzMngzMiBQTkcgaW1hZ2Ugd2l0aCBhIDI0eDI0
IHJlZCBzcXVhcmUgaW4gdGhlIGNlbnRlcgorICAgICAgdG8gZGVmaW5lIGEgc2hhcGUtaW5zaWRl
LiBUaGUgY29udGVudCBzaG91bGQganVzdCBjb3ZlciB0aGUgc2hhcGUgd2l0aCBzb2xpZCBncmVl
bi48L3A+CisKKyAgPGRpdiBpZD0iaW1hZ2Utc2hhcGUiPlhYPGJyLz5YWDwvZGl2PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBl
LWluc2lkZS9zaGFwZS1pbnNpZGUtaW1hZ2UtMDAxLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V4
Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1pbWFnZS0wMDEuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzQ5Nzc3Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtaW1h
Z2UtMDAxLmh0bWwKQEAgLTAsMCArMSwyOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdD4KKyAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgd2luZG93
LmludGVybmFscy5zZXR0aW5ncy5zZXRDU1NTaGFwZXNFbmFibGVkKHRydWUpOworPC9zY3JpcHQ+
Cis8c3R5bGU+CisgICAgI2ltYWdlLXNoYXBlIHsKKyAgICAgICAgYm9yZGVyOiBzb2xpZCBibGFj
ayAxcHg7CisgICAgICAgIGZvbnQ6IDEycHgvMSBBaGVtLCBzYW5zLXNlcmlmOworICAgICAgICBj
b2xvcjogZ3JlZW47CisgICAgICAgIHdpZHRoOiAzMnB4OworICAgICAgICBoZWlnaHQ6IDMycHg7
CisgICAgICAgIC13ZWJraXQtc2hhcGUtaW5zaWRlOiB1cmwoImRhdGE6aW1hZ2UvcG5nO2Jhc2U2
NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZ0NBWUFBQUJ6ZW5yMEFBQUFTa2xFUVZS
WUNlM1hJUTRBTUFoRDBYWGgvbGZ1TWtlQ0pqVWZoU3Q1WUpEdGs2eWJEUC9aREZCakJkTHVVZGpx
bWF3QUFRUVFRQUFCQkJCQUFBRUU0Z0xpTit4ZlNxS1AzOEFEdVFNSk82TE5icjRBQUFBQVNVVk9S
SzVDWUlJPSIpOworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImRhdGE6aW1hZ2UvcG5n
O2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZ0NBWUFBQUJ6ZW5yMEFBQUFT
a2xFUVZSWUNlM1hJUTRBTUFoRDBYWGgvbGZ1TWtlQ0pqVWZoU3Q1WUpEdGs2eWJEUC9aREZCakJk
THVVZGpxbWF3QUFRUVFRQUFCQkJCQUFBRUU0Z0xpTit4ZlNxS1AzOEFEdVFNSk82TE5icjRBQUFB
QVNVVk9SSzVDWUlJPSIpOworICAgICAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0Owor
ICAgIH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPHAgaWQ9ImluZm9ybWF0aXZlLXRl
eHQiPgorICAgICAgVGhpcyB0ZXN0IHJlcXVpcmVzIHRoZSBBaGVtIGZvbnQuIEl0IHVzZXMgYSAz
MngzMiBQTkcgaW1hZ2Ugd2l0aCBhIDI0eDI0IHJlZCBzcXVhcmUgaW4gdGhlIGNlbnRlcgorICAg
ICAgdG8gZGVmaW5lIGEgc2hhcGUtaW5zaWRlLiBUaGUgY29udGVudCBzaG91bGQganVzdCBjb3Zl
ciB0aGUgc2hhcGUgd2l0aCBzb2xpZCBncmVlbi48L3A+CisKKyAgPGRpdiBpZD0iaW1hZ2Utc2hh
cGUiPlhYIFhYPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4
IDc4NWE2YTcuLjVjZTIzOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0yMjA5LDYgKzIyMDks
NyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxVbmRlck92ZXIuY3BwCiAKICAgICByZW5kZXJpbmcvc2hhcGVzL1BvbHlnb25TaGFwZS5jcHAK
KyAgICByZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNwcAogICAgIHJlbmRlcmluZy9zaGFw
ZXMvUmVjdGFuZ2xlU2hhcGUuY3BwCiAgICAgcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKICAg
ICByZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW5mby5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiMzI1MTYyLi4y
YmZlODdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjIgQEAKKzIwMTMtMDYtMTAgIEhhbnMgTXVs
bGVyICA8aG11bGxlckBhZG9iZS5jb20+CisKKyAgICAgICAgW0NTUyBFeGNsdXNpb25zXSBNaW5p
bWFsIHN1cHBvcnQgZm9yIHVzaW5nIGFuIGltYWdlIHRvIGRlZmluZSBhIHNoYXBlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTY2NDMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIGEgZmlyc3Qg
c21hbGwgc3RlcCB0b3dhcmRzIHN1cHBvcnRpbmcgQ1NTIHNoYXBlcyBkZWZpbmVkIGJ5IGFuCisg
ICAgICAgIGltYWdlIFVSTCBhbmQgYSBhbHBoYSBjaGFubmVsIHRocmVzaG9sZC4gVG8ga2VlcCB0
aGUgcGF0Y2ggYXMgc21hbGwgYXMKKyAgICAgICAgcG9zc2libGUsIHRoZXJlIGFyZSBtYW55IGxp
bWl0YXRpb25zOgorICAgICAgICAtIFRoZSBDU1Mgc2hhcGUtaW1hZ2UtdGhyZXNob2xkIHByb3Bl
cnR5IGlzbid0IHN1cHBvcnRlZCwgY3VycmVudGx5IHRoZSB0aHJlc2hvbGQgaXMgYWx3YXlzIDAu
CisgICAgICAgIC0gSW1hZ2Ugc2hhcGUgdmFsdWVzIGNhbiBvbmx5IGJlIHVzZWQgd2l0aCBzaGFw
ZS1pbnNpZGUgKG5vdCBzaGFwZS1vdXRzaWRlKS4KKyAgICAgICAgLSBUaGUgUmFzdGVyU2hhcGUg
aW50ZXJuYWwgcmVwcmVzZW50YXRpb24gb2YgYW4gaW1hZ2Ugc2hhcGUgc2hvdWxkIGJlIG1vcmUg
ZWZmaWNpZW50LgorICAgICAgICAtIEdJRnMgYXJlbid0IHN1cHBvcnRlZCBjb3JyZWN0bHksIG9u
bHkgZnJhbWUwIHNob3VsZCBiZSB1c2VkLgorICAgICAgICAtIFRoZSBmaXJzdCBsYXlvdXQgcG9z
aXRpb24gaXNuJ3QgY29tcHV0ZWQsIGl0J3MgYXNzdW1lZCB0aGF0IGxheW91dCBjYW4gYmVnaW4g
YXQgdGhlIHRvcCBvZiB0aGUgc2hhcGUuCisgICAgICAgIC0gVGhlcmUncyBubyBzdXBwb3J0IGZv
ciBzaGFwZS1tYXJnaW4gYW5kIHNoYXBlLXBhZGRpbmcuCisKKyAgICAgICAgVGVzdDogZmFzdC9l
eGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtaW1hZ2UtMDAxLmh0bWwKKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06Cisg
ICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQmxvY2s6OmltYWdlQ2hhbmdlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2Nr
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJPYmplY3Q6OnNldFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9i
amVjdDo6dXBkYXRlU2hhcGVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpyZW1vdmVTaGFwZUlt
YWdlQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6YXJlbmFEZWxldGUp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSYXN0
ZXJTaGFwZUludGVydmFsczo6Ym91bmRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJhc3RlclNoYXBl
SW50ZXJ2YWxzOjphZGRJbnRlcnZhbCk6CisgICAgICAgIChXZWJDb3JlOjphbGlnbmVkUmVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpSYXN0ZXJTaGFwZUludGVydmFsczo6Z2V0SW50ZXJ2YWxzKToK
KyAgICAgICAgKFdlYkNvcmU6OlJhc3RlclNoYXBlOjptYXJnaW5JbnRlcnZhbHMpOgorICAgICAg
ICAoV2ViQ29yZTo6UmFzdGVyU2hhcGU6OnBhZGRpbmdJbnRlcnZhbHMpOgorICAgICAgICAoV2Vi
Q29yZTo6UmFzdGVyU2hhcGU6OmdldEV4Y2x1ZGVkSW50ZXJ2YWxzKToKKyAgICAgICAgKFdlYkNv
cmU6OlJhc3RlclNoYXBlOjpnZXRJbmNsdWRlZEludGVydmFscyk6CisgICAgICAgIChXZWJDb3Jl
OjpSYXN0ZXJTaGFwZTo6Zmlyc3RJbmNsdWRlZEludGVydmFsTG9naWNhbFRvcCk6CisgICAgICAg
ICogcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmFz
dGVyU2hhcGVJbnRlcnZhbHM6OlJhc3RlclNoYXBlSW50ZXJ2YWxzKToKKyAgICAgICAgKFdlYkNv
cmU6OlJhc3RlclNoYXBlSW50ZXJ2YWxzOjppc0VtcHR5KToKKyAgICAgICAgKFdlYkNvcmU6OlJh
c3RlclNoYXBlOjpSYXN0ZXJTaGFwZSk6CisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFw
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZTo6Y3JlYXRlU2hhcGUpOgorICAgICAgICAq
IHJlbmRlcmluZy9zaGFwZXMvU2hhcGUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1No
YXBlSW5mby5jcHA6CisgICAgICAgIChXZWJDb3JlOjo6OmNvbXB1dGVkU2hhcGUpOgorICAgICAg
ICAqIHJlbmRlcmluZy9zaGFwZXMvU2hhcGVJbnNpZGVJbmZvLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNoYXBlSW5zaWRlSW5mbzo6aXNFbmFibGVkRm9yKToKKyAgICAgICAgKiByZW5kZXJpbmcv
c2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGVPdXRz
aWRlSW5mbzo6aXNFbmFibGVkRm9yKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU2hhcGVW
YWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGVWYWx1ZTo6aXNJbWFnZVZhbGlkKToKKwog
MjAxMy0wNi0xMCAgQmVhciBUcmF2aXMgIDxiZXRyYXZpc0BhZG9iZS5jb20+CiAKICAgICAgICAg
W0NTUyBTaGFwZXNdW0NTUyBFeGNsdXNpb25zXSBTcGxpdCBDU1MgRXhjbHVzaW9ucyBhbmQgQ1NT
IFNoYXBlcyBjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA3OGJkNjE4Li40
MDMzYWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTQ2MjEsNiArNDYyMSw4
IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3No
YXBlcy9Qb2x5Z29uU2hhcGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVz
L1BvbHlnb25TaGFwZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3Rl
clNoYXBlLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFw
ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1JlY3RhbmdsZVNoYXBlLmNw
cCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SZWN0YW5nbGVTaGFwZS5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcCBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpp
bmRleCAwN2JhOGJkLi4wZDk0NTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQu
cHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTEyMzksNiArMTIzOSw3IEBA
IFNPVVJDRVMgKz0gXAogICAgIHJlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcCBcCiAgICAgcmVu
ZGVyaW5nL1Njcm9sbEJlaGF2aW9yLmNwcCBcCiAgICAgcmVuZGVyaW5nL3NoYXBlcy9Qb2x5Z29u
U2hhcGUuY3BwIFwKKyAgICByZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNwcCBcCiAgICAg
cmVuZGVyaW5nL3NoYXBlcy9SZWN0YW5nbGVTaGFwZS5jcHAgXAogICAgIHJlbmRlcmluZy9zaGFw
ZXMvU2hhcGUuY3BwIFwKICAgICByZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW5mby5jcHAgXApAQCAt
MjUwNyw2ICsyNTA4LDcgQEAgSEVBREVSUyArPSBcCiAgICAgcmVuZGVyaW5nL1Jvb3RJbmxpbmVC
b3guaCBcCiAgICAgcmVuZGVyaW5nL1Njcm9sbEJlaGF2aW9yLmggXAogICAgIHJlbmRlcmluZy9z
aGFwZXMvUG9seWdvblNoYXBlLmggXAorICAgIHJlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUu
aCBcCiAgICAgcmVuZGVyaW5nL3NoYXBlcy9SZWN0YW5nbGVTaGFwZS5oIFwKICAgICByZW5kZXJp
bmcvc2hhcGVzL1NoYXBlLmggXAogICAgIHJlbmRlcmluZy9zaGFwZXMvU2hhcGVJbmZvLmggXApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKaW5kZXgg
MGQ5NWEyMi4uNjRlZjhiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hw
cm9qL1dlYkNvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ov
V2ViQ29yZS52Y3hwcm9qCkBAIC0xLDQgKzEsNCBAQAot77u/PD94bWwgdmVyc2lvbj0iMS4wIiBl
bmNvZGluZz0idXRmLTgiPz4KKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+
CiA8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxu
cz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4K
ICAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KICAgICA8UHJvamVj
dENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWdTdWZmaXh8V2luMzIiPgpAQCAtNjMwMSw2ICs2
MzAxLDcgQEAKICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZy
b21CdWlsZD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJl
bmRlcmluZ1xzaGFwZXNcUG9seWdvblNoYXBlLmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXHJlbmRlcmluZ1xzaGFwZXNcUmFzdGVyU2hhcGUuY3BwIiAvPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXHNoYXBlc1xSZWN0YW5nbGVTaGFwZS5jcHAiIC8+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcc2hhcGVzXFNoYXBlLmNwcCIgLz4K
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xzaGFwZXNcU2hhcGVJbnNpZGVJ
bmZvLmNwcCIgLz4KQEAgLTEyMTkzLDYgKzEyMTk0LDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHJlbmRlcmluZ1xSZW5kZXJTbGlkZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHJlbmRlcmluZ1xSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXHNoYXBlc1xQb2x5Z29uU2hhcGUuaCIgLz4KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xzaGFwZXNcUmFzdGVyU2hhcGUuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xzaGFwZXNcUmVjdGFuZ2xl
U2hhcGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xzaGFwZXNc
U2hhcGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xzaGFwZXNc
U2hhcGVJbnNpZGVJbmZvLmgiIC8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNGM0ODdlYS4uZjQ3MmY3OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTgzNSw2
ICsxODM1LDggQEAKIAkJNkU2N0QyQTYxMjgwRThBNDAwODc1OEY3IC8qIEV4dGVuc2lvbnMzRE9w
ZW5HTC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2
RTY3RDJBNDEyODBFOEE0MDA4NzU4RjcgLyogRXh0ZW5zaW9uczNET3BlbkdMLmNwcCAqLzsgfTsK
IAkJNkU2N0QyQTcxMjgwRThBNDAwODc1OEY3IC8qIEV4dGVuc2lvbnMzRE9wZW5HTC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU2N0QyQTUxMjgwRThB
NDAwODc1OEY3IC8qIEV4dGVuc2lvbnMzRE9wZW5HTC5oICovOyB9OwogCQk2RTY3RDJBOTEyODBF
OEJEMDA4NzU4RjcgLyogRXh0ZW5zaW9uczNELmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA2RTY3RDJBODEyODBFOEJEMDA4NzU4RjcgLyogRXh0ZW5zaW9u
czNELmggKi87IH07CisJCTZFODRFOUUwMTc2NjhCRUUwMDgxNUI2OCAvKiBSYXN0ZXJTaGFwZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTg0RTlE
RTE3NjY4QkFEMDA4MTVCNjggLyogUmFzdGVyU2hhcGUuY3BwICovOyB9OworCQk2RTg0RTlFMTE3
NjY4QkYxMDA4MTVCNjggLyogUmFzdGVyU2hhcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFODRFOURGMTc2NjhCQUQwMDgxNUI2OCAvKiBSYXN0ZXJT
aGFwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTZFQkM1RUFGMTM4QjUwRjIwMEEwQ0Y4QSAvKiBKU0Zsb2F0NjRBcnJheS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RUJDNUVBRDEzOEI1MEYyMDBB
MENGOEEgLyogSlNGbG9hdDY0QXJyYXkuY3BwICovOyB9OwogCQk2RUJDNUVCMDEzOEI1MEYyMDBB
MENGOEEgLyogSlNGbG9hdDY0QXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDZFQkM1RUFFMTM4QjUwRjIwMEEwQ0Y4QSAvKiBKU0Zsb2F0NjRBcnJh
eS5oICovOyB9OwogCQk2RUJGMEU0ODEyQTg5MjYxMDBEQjE3MDkgLyogT0VTVGV4dHVyZUZsb2F0
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFQkYw
RTQ1MTJBODkyNjEwMERCMTcwOSAvKiBPRVNUZXh0dXJlRmxvYXQuY3BwICovOyB9OwpAQCAtODIy
OCw2ICs4MjMwLDggQEAKIAkJNkU2N0QyQTQxMjgwRThBNDAwODc1OEY3IC8qIEV4dGVuc2lvbnMz
RE9wZW5HTC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeHRlbnNp
b25zM0RPcGVuR0wuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RTY3RDJBNTEy
ODBFOEE0MDA4NzU4RjcgLyogRXh0ZW5zaW9uczNET3BlbkdMLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEV4dGVuc2lvbnMzRE9wZW5HTC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk2RTY3RDJBODEyODBFOEJEMDA4NzU4RjcgLyogRXh0ZW5zaW9uczNELmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4dGVuc2lvbnMzRC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk2RTg0RTlERTE3NjY4QkFEMDA4MTVCNjggLyogUmFzdGVyU2hh
cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmFzdGVyU2hhcGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2RTg0RTlERjE3NjY4QkFEMDA4MTVC
NjggLyogUmFzdGVyU2hhcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmFz
dGVyU2hhcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkVCQzVEODAxMzhCNEM0
RTAwQTBDRjhBIC8qIEZsb2F0NjRBcnJheS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gRmxv
YXQ2NEFycmF5LmlkbDsgcGF0aCA9IGNhbnZhcy9GbG9hdDY0QXJyYXkuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk2RUJDNUVBRDEzOEI1MEYyMDBBMENGOEEgLyogSlNGbG9hdDY0
QXJyYXkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNGbG9hdDY0
QXJyYXkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RUJDNUVBRTEzOEI1MEYy
MDBBMENGOEEgLyogSlNGbG9hdDY0QXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNGbG9hdDY0QXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIw
NTQ0LDYgKzIwNTQ4LDggQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCUZEMDhBODdBMTc1RDM5MjYw
MDJDRDM2MCAvKiBQb2x5Z29uU2hhcGUuY3BwICovLAogCQkJCUZEMDhBODdCMTc1RDM5MjYwMDJD
RDM2MCAvKiBQb2x5Z29uU2hhcGUuaCAqLywKKwkJCQk2RTg0RTlERTE3NjY4QkFEMDA4MTVCNjgg
LyogUmFzdGVyU2hhcGUuY3BwICovLAorCQkJCTZFODRFOURGMTc2NjhCQUQwMDgxNUI2OCAvKiBS
YXN0ZXJTaGFwZS5oICovLAogCQkJCUZEMDhBODdDMTc1RDM5MjYwMDJDRDM2MCAvKiBSZWN0YW5n
bGVTaGFwZS5jcHAgKi8sCiAJCQkJRkQwOEE4N0QxNzVEMzkyNjAwMkNEMzYwIC8qIFJlY3Rhbmds
ZVNoYXBlLmggKi8sCiAJCQkJRkQwOEE4N0UxNzVEMzkyNjAwMkNEMzYwIC8qIFNoYXBlLmNwcCAq
LywKQEAgLTIwODY0LDYgKzIwODcwLDcgQEAKIAkJCWZpbGVzID0gKAogCQkJCUZFMTE1RkFCMTY3
OTg4Q0QwMDI0OTEzNCAvKiBBYnN0cmFjdERhdGFiYXNlU2VydmVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlGRTRBQURFRTE2RDJDMzc0MDAwMjZGRkMgLyogQWJzdHJhY3RTUUxTdGF0ZW1lbnQuaCBp
biBIZWFkZXJzICovLAorCQkJCTZFODRFOUUxMTc2NjhCRjEwMDgxNUI2OCAvKiBSYXN0ZXJTaGFw
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkU0QUFERUYxNkQyQzM3NDAwMDI2RkZDIC8qIEFic3Ry
YWN0U1FMU3RhdGVtZW50QmFja2VuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFFMUIxRDEwRkY1
OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0V29ya2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkyOUE4
MTIyRTBGQkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5oIGluIEhl
YWRlcnMgKi8sCkBAIC0yNjk1NSw2ICsyNjk2Miw3IEBACiAJCQkJQkU2REY3MTExNzFDQTJEQTAw
REQ1MkI4IC8qIEpTQXVkaW9UcmFja0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCRTZE
RjcxMzE3MUNBMkRBMDBERDUyQjggLyogSlNBdWRpb1RyYWNrTGlzdEN1c3RvbS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlGQjcxOUM0MDE3MjM4Q0FFMDAyMkRFMzQgLyogV2ViS2l0Q1NTTWF0RnVu
Y3Rpb25WYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk2RTg0RTlFMDE3NjY4QkVFMDA4MTVC
NjggLyogUmFzdGVyU2hhcGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCBmYWI2OWE4Li43YjRmNGFhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTE0MzUsNiArMTQzNSwyMSBAQCB2b2lk
IFJlbmRlckJsb2NrOjpsYXlvdXQoKQogfQogCiAjaWYgRU5BQkxFKENTU19TSEFQRVMpCit2b2lk
IFJlbmRlckJsb2NrOjppbWFnZUNoYW5nZWQoV3JhcHBlZEltYWdlUHRyIGltYWdlLCBjb25zdCBJ
bnRSZWN0KikKK3sKKyAgICBSZW5kZXJCb3g6OmltYWdlQ2hhbmdlZChpbWFnZSk7CisKKyAgICBp
ZiAoIXBhcmVudCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBTaGFwZVZhbHVlKiBzaGFwZVZh
bHVlID0gc3R5bGUoKS0+c2hhcGVJbnNpZGUoKTsKKyAgICBpZiAoc2hhcGVWYWx1ZSAgJiYgc2hh
cGVWYWx1ZS0+aW1hZ2UoKSAmJiBzaGFwZVZhbHVlLT5pbWFnZSgpLT5kYXRhKCkgPT0gaW1hZ2Up
IHsKKyAgICAgICAgU2hhcGVJbnNpZGVJbmZvKiBzaGFwZUluc2lkZUluZm8gPSBlbnN1cmVTaGFw
ZUluc2lkZUluZm8oKTsKKyAgICAgICAgc2hhcGVJbnNpZGVJbmZvLT5kaXJ0eVNoYXBlU2l6ZSgp
OworICAgICAgICBtYXJrU2hhcGVJbnNpZGVEZXNjZW5kYW50c0ZvckxheW91dCgpOworICAgIH0K
K30KKwogdm9pZCBSZW5kZXJCbG9jazo6dXBkYXRlU2hhcGVJbnNpZGVJbmZvQWZ0ZXJTdHlsZUNo
YW5nZShjb25zdCBTaGFwZVZhbHVlKiBzaGFwZUluc2lkZSwgY29uc3QgU2hhcGVWYWx1ZSogb2xk
U2hhcGVJbnNpZGUpCiB7CiAgICAgLy8gRklYTUU6IEEgZnV0dXJlIG9wdGltaXphdGlvbiB3b3Vs
ZCBkbyBhIGRlZXAgY29tcGFyaXNvbiBmb3IgZXF1YWxpdHkuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5oCmluZGV4IGJkMTBjOTguLjNmZmE3YmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9jay5oCkBAIC00NjgsNiArNDY4LDcgQEAgcHVibGljOgogICAgIHZv
aWQgbWFya1NoYXBlSW5zaWRlRGVzY2VuZGFudHNGb3JMYXlvdXQoKTsKICAgICBTaGFwZUluc2lk
ZUluZm8qIGxheW91dFNoYXBlSW5zaWRlSW5mbygpIGNvbnN0OwogICAgIGJvb2wgYWxsb3dzU2hh
cGVJbnNpZGVJbmZvU2hhcmluZygpIGNvbnN0IHsgcmV0dXJuICFpc0lubGluZSgpICYmICFpc0Zs
b2F0aW5nKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgaW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0
ciwgY29uc3QgSW50UmVjdCogPSAwKSBPVkVSUklERTsKICNlbmRpZgogCiBwcm90ZWN0ZWQ6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IDI0MmVkNTQuLjM5
OTI3NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC0x
ODQ3LDYgKzE4NDcsMTEgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OnNldFN0eWxlKFBhc3NSZWZQdHI8
UmVuZGVyU3R5bGU+IHN0eWxlKQogICAgIHVwZGF0ZUltYWdlKG9sZFN0eWxlID8gb2xkU3R5bGUt
PmJvcmRlckltYWdlKCkuaW1hZ2UoKSA6IDAsIG1fc3R5bGUgPyBtX3N0eWxlLT5ib3JkZXJJbWFn
ZSgpLmltYWdlKCkgOiAwKTsKICAgICB1cGRhdGVJbWFnZShvbGRTdHlsZSA/IG9sZFN0eWxlLT5t
YXNrQm94SW1hZ2UoKS5pbWFnZSgpIDogMCwgbV9zdHlsZSA/IG1fc3R5bGUtPm1hc2tCb3hJbWFn
ZSgpLmltYWdlKCkgOiAwKTsKIAorI2lmIEVOQUJMRShDU1NfU0hBUEVTKQorICAgIHVwZGF0ZVNo
YXBlSW1hZ2Uob2xkU3R5bGUgPyBvbGRTdHlsZS0+c2hhcGVJbnNpZGUoKSA6IDAsIG1fc3R5bGUg
PyBtX3N0eWxlLT5zaGFwZUluc2lkZSgpIDogMCk7CisgICAgdXBkYXRlU2hhcGVJbWFnZShvbGRT
dHlsZSA/IG9sZFN0eWxlLT5zaGFwZU91dHNpZGUoKSA6IDAsIG1fc3R5bGUgPyBtX3N0eWxlLT5z
aGFwZU91dHNpZGUoKSA6IDApOworI2VuZGlmCisKICAgICAvLyBXZSBuZWVkIHRvIGVuc3VyZSB0
aGF0IHZpZXctPm1heGltYWxPdXRsaW5lU2l6ZSgpIGlzIHZhbGlkIGZvciBhbnkgcmVwYWludHMg
dGhhdCBoYXBwZW4KICAgICAvLyBkdXJpbmcgc3R5bGVEaWRDaGFuZ2UgKGl0J3MgdXNlZCBieSBj
bGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCgpKS4KICAgICBpZiAobV9zdHlsZS0+b3V0bGlu
ZVdpZHRoKCkgPiAwICYmIG1fc3R5bGUtPm91dGxpbmVTaXplKCkgPiBtYXhpbWFsT3V0bGluZVNp
emUoUGFpbnRQaGFzZU91dGxpbmUpKQpAQCAtMjA5OSw2ICsyMTA0LDE0IEBAIHZvaWQgUmVuZGVy
T2JqZWN0Ojp1cGRhdGVJbWFnZShTdHlsZUltYWdlKiBvbGRJbWFnZSwgU3R5bGVJbWFnZSogbmV3
SW1hZ2UpCiAgICAgfQogfQogCisjaWYgRU5BQkxFKENTU19TSEFQRVMpCit2b2lkIFJlbmRlck9i
amVjdDo6dXBkYXRlU2hhcGVJbWFnZShjb25zdCBTaGFwZVZhbHVlKiBvbGRTaGFwZVZhbHVlLCBj
b25zdCBTaGFwZVZhbHVlKiBuZXdTaGFwZVZhbHVlKQoreworICAgIGlmIChvbGRTaGFwZVZhbHVl
IHx8IG5ld1NoYXBlVmFsdWUpCisgICAgICAgIHVwZGF0ZUltYWdlKG9sZFNoYXBlVmFsdWUgPyBv
bGRTaGFwZVZhbHVlLT5pbWFnZSgpIDogMCwgbmV3U2hhcGVWYWx1ZSA/IG5ld1NoYXBlVmFsdWUt
PmltYWdlKCkgOiAwKTsKK30KKyNlbmRpZgorCiBMYXlvdXRSZWN0IFJlbmRlck9iamVjdDo6dmll
d1JlY3QoKSBjb25zdAogewogICAgIHJldHVybiB2aWV3KCktPnZpZXdSZWN0KCk7CkBAIC0yNjE1
LDYgKzI2MjgsMTQgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OmRlc3Ryb3koKQogICAgIGFyZW5hRGVs
ZXRlKHJlbmRlckFyZW5hKCksIHRoaXMpOwogfQogCitzdGF0aWMgaW5saW5lIHZvaWQgcmVtb3Zl
U2hhcGVJbWFnZUNsaWVudChSZW5kZXJPYmplY3QgKnRoaXNSZW5kZXJPYmplY3QsIFNoYXBlVmFs
dWUqIHNoYXBlVmFsdWUpCit7CisgICAgaWYgKCFzaGFwZVZhbHVlKQorICAgICAgICByZXR1cm47
CisgICAgaWYgKFN0eWxlSW1hZ2UqIHNoYXBlSW1hZ2UgPSBzaGFwZVZhbHVlLT5pbWFnZSgpKQor
ICAgICAgICBzaGFwZUltYWdlLT5yZW1vdmVDbGllbnQodGhpc1JlbmRlck9iamVjdCk7Cit9CisK
IHZvaWQgUmVuZGVyT2JqZWN0OjphcmVuYURlbGV0ZShSZW5kZXJBcmVuYSogYXJlbmEsIHZvaWQq
IGJhc2UpCiB7CiAgICAgaWYgKG1fc3R5bGUpIHsKQEAgLTI2MzMsNiArMjY1NCwxMSBAQCB2b2lk
IFJlbmRlck9iamVjdDo6YXJlbmFEZWxldGUoUmVuZGVyQXJlbmEqIGFyZW5hLCB2b2lkKiBiYXNl
KQogCiAgICAgICAgIGlmIChTdHlsZUltYWdlKiBtYXNrQm94SW1hZ2UgPSBtX3N0eWxlLT5tYXNr
Qm94SW1hZ2UoKS5pbWFnZSgpKQogICAgICAgICAgICAgbWFza0JveEltYWdlLT5yZW1vdmVDbGll
bnQodGhpcyk7CisKKyNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKKyAgICAgICAgcmVtb3ZlU2hhcGVJ
bWFnZUNsaWVudCh0aGlzLCBtX3N0eWxlLT5zaGFwZUluc2lkZSgpKTsKKyAgICAgICAgcmVtb3Zl
U2hhcGVJbWFnZUNsaWVudCh0aGlzLCBtX3N0eWxlLT5zaGFwZU91dHNpZGUoKSk7CisjZW5kaWYK
ICAgICB9CiAKICNpZm5kZWYgTkRFQlVHCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmgKaW5kZXggOTM1N2FjNS4uZmI4ODk0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3QuaApAQCAtNzAzLDYgKzcwMyw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdXBk
YXRlRmlsbEltYWdlcyhjb25zdCBGaWxsTGF5ZXIqLCBjb25zdCBGaWxsTGF5ZXIqKTsKICAgICB2
b2lkIHVwZGF0ZUltYWdlKFN0eWxlSW1hZ2UqLCBTdHlsZUltYWdlKik7CisjaWYgRU5BQkxFKENT
U19TSEFQRVMpCisgICAgdm9pZCB1cGRhdGVTaGFwZUltYWdlKGNvbnN0IFNoYXBlVmFsdWUqLCBj
b25zdCBTaGFwZVZhbHVlKik7CisjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWlu
dEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjBlY2ZjNjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNwcApAQCAtMCwwICsxLDE2MSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
CisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZworICogICAgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNj
bGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKKyAqICAg
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorICogQ09QWVJJR0hUIEhPTERFUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULAorICogSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULAorICogU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRAorICogT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSYXN0ZXJTaGFwZS5oIgorCisjaW5jbHVkZSAiU2hh
cGVJbnRlcnZhbC5oIgorI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworSW50UmVjdCBSYXN0ZXJTaGFwZUludGVydmFsczo6Ym91bmRzKCkgY29uc3QK
K3sKKyAgICBpZiAoIW1fYm91bmRzKQorICAgICAgICBtX2JvdW5kcyA9IGFkb3B0UHRyKG5ldyBJ
bnRSZWN0KG1fcmVnaW9uLmJvdW5kcygpKSk7CisgICAgcmV0dXJuICptX2JvdW5kczsKK30KKwor
dm9pZCBSYXN0ZXJTaGFwZUludGVydmFsczo6YWRkSW50ZXJ2YWwoaW50IHksIGludCB4MSwgaW50
IHgyKQoreworICAgIG1fcmVnaW9uLnVuaXRlKFJlZ2lvbihJbnRSZWN0KHgxLCB5LCB4MiAtIHgx
LCAxKSkpOworICAgIG1fYm91bmRzLmNsZWFyKCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgSW50UmVj
dCBhbGlnbmVkUmVjdChJbnRSZWN0IHIsIGludCB5MSwgaW50IHkyKQoreworICAgIHJldHVybiBJ
bnRSZWN0KHIueCgpLCB5MSwgci53aWR0aCgpLCB5MiAtIHkxKTsKK30KKwordm9pZCBSYXN0ZXJT
aGFwZUludGVydmFsczo6Z2V0SW50ZXJ2YWxzKGludCB5MSwgaW50IHkyLCBTZWdtZW50TGlzdCYg
cmVzdWx0KSBjb25zdAoreworICAgIEFTU0VSVCh5MiA+PSB5MSk7CisKKyAgICBJbnRSZWN0IGxp
bmVSZWN0KGJvdW5kcygpLngoKSwgeTEsIGJvdW5kcygpLndpZHRoKCksIHkyIC0geTEpOworICAg
IFJlZ2lvbiBsaW5lUmVnaW9uKGxpbmVSZWN0KTsKKyAgICBsaW5lUmVnaW9uLmludGVyc2VjdCht
X3JlZ2lvbik7CisgICAgaWYgKGxpbmVSZWdpb24uaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47
CisgICAgLy8gRklYTUU6IGlmIGxpbmVSZWdpb24uaXNSZWN0KCkgLi4gd2UncmUgZG9uZQorCisg
ICAgVmVjdG9yPEludFJlY3Q+IGxpbmVSZWN0cyA9IGxpbmVSZWdpb24ucmVjdHMoKTsgLy8gRklY
TUU6IGFkZCBhIG5vbi1jb3B5aW5nIFJlZ2lvbjo6cmVjdHMoKSBtZXRob2QKKyAgICBBU1NFUlQo
bGluZVJlY3RzLnNpemUoKSA+IDApOworCisgICAgUmVnaW9uIHNlZ21lbnRzUmVnaW9uKGxpbmVS
ZWN0KTsKKyAgICBSZWdpb24gaW50ZXJ2YWxzUmVnaW9uOworCisgICAgaW50IGxpbmVZID0gbGlu
ZVJlY3RzWzBdLnkoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGluZVJlY3RzLnNp
emUoKTsgaSsrKSB7CisgICAgICAgIGlmIChsaW5lUmVjdHNbaV0ueSgpICE9IGxpbmVZKSB7Cisg
ICAgICAgICAgICBzZWdtZW50c1JlZ2lvbi5pbnRlcnNlY3QoaW50ZXJ2YWxzUmVnaW9uKTsKKyAg
ICAgICAgICAgIGludGVydmFsc1JlZ2lvbiA9IFJlZ2lvbigpOyAvLyBGSVhNRTogYWRkIGEgcmVn
aW9uIGNsZWFyKCkgbWV0aG9kCisgICAgICAgIH0KKyAgICAgICAgaW50ZXJ2YWxzUmVnaW9uLnVu
aXRlKFJlZ2lvbihhbGlnbmVkUmVjdChsaW5lUmVjdHNbaV0sIHkxLCB5MikpKTsKKyAgICAgICAg
bGluZVkgPSBsaW5lUmVjdHNbaV0ueSgpOworICAgIH0KKyAgICBpZiAoIWludGVydmFsc1JlZ2lv
bi5pc0VtcHR5KCkpCisgICAgICAgIHNlZ21lbnRzUmVnaW9uLmludGVyc2VjdChpbnRlcnZhbHNS
ZWdpb24pOworCisgICAgVmVjdG9yPEludFJlY3Q+IHNlZ21lbnRSZWN0cyA9IHNlZ21lbnRzUmVn
aW9uLnJlY3RzKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNlZ21lbnRSZWN0cy5z
aXplKCk7IGkrKykKKyAgICAgICAgcmVzdWx0LmFwcGVuZChMaW5lU2VnbWVudChzZWdtZW50UmVj
dHNbaV0ueCgpLCBzZWdtZW50UmVjdHNbaV0ubWF4WCgpKSk7Cit9CisKK2NvbnN0IFJhc3RlclNo
YXBlSW50ZXJ2YWxzJiBSYXN0ZXJTaGFwZTo6bWFyZ2luSW50ZXJ2YWxzKCkgY29uc3QKK3sKKyAg
ICBBU1NFUlQoc2hhcGVNYXJnaW4oKSA+PSAwKTsKKyAgICBpZiAoIXNoYXBlTWFyZ2luKCkpCisg
ICAgICAgIHJldHVybiAqbV9pbnRlcnZhbHM7CisKKyAgICAvLyBGSVhNRTogYWRkIHN1cHBvcnQg
Zm9yIG5vbi16ZXJvIG1hcmdpbgorICAgIHJldHVybiAqbV9pbnRlcnZhbHM7Cit9CisKK2NvbnN0
IFJhc3RlclNoYXBlSW50ZXJ2YWxzJiBSYXN0ZXJTaGFwZTo6cGFkZGluZ0ludGVydmFscygpIGNv
bnN0Cit7CisgICAgQVNTRVJUKHNoYXBlUGFkZGluZygpID49IDApOworICAgIGlmICghc2hhcGVQ
YWRkaW5nKCkpCisgICAgICAgIHJldHVybiAqbV9pbnRlcnZhbHM7CisKKyAgICAvLyBGSVhNRTog
YWRkIHN1cHBvcnQgZm9yIG5vbi16ZXJvIHBhZGRpbmcKKyAgICByZXR1cm4gKm1faW50ZXJ2YWxz
OworfQorCit2b2lkIFJhc3RlclNoYXBlOjpnZXRFeGNsdWRlZEludGVydmFscyhMYXlvdXRVbml0
IGxvZ2ljYWxUb3AsIExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgU2VnbWVudExpc3QmIHJlc3Vs
dCkgY29uc3QKK3sKKyAgICBjb25zdCBSYXN0ZXJTaGFwZUludGVydmFscyYgaW50ZXJ2YWxzID0g
bWFyZ2luSW50ZXJ2YWxzKCk7CisgICAgaWYgKGludGVydmFscy5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybjsKKworICAgIGZsb2F0IHkxID0gbG9naWNhbFRvcDsKKyAgICBmbG9hdCB5MiA9IGxv
Z2ljYWxUb3AgKyBsb2dpY2FsSGVpZ2h0OworCisgICAgaWYgKHkyIDwgaW50ZXJ2YWxzLmJvdW5k
cygpLnkoKSB8fCB5MSA+PSBpbnRlcnZhbHMuYm91bmRzKCkubWF4WSgpKQorICAgICAgICByZXR1
cm47CisKKyAgICBpbnRlcnZhbHMuZ2V0SW50ZXJ2YWxzKHkxLCB5MiwgcmVzdWx0KTsKK30KKwor
dm9pZCBSYXN0ZXJTaGFwZTo6Z2V0SW5jbHVkZWRJbnRlcnZhbHMoTGF5b3V0VW5pdCBsb2dpY2Fs
VG9wLCBMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIFNlZ21lbnRMaXN0JiByZXN1bHQpIGNvbnN0
Cit7CisgICAgY29uc3QgUmFzdGVyU2hhcGVJbnRlcnZhbHMmIGludGVydmFscyA9IHBhZGRpbmdJ
bnRlcnZhbHMoKTsKKyAgICBpZiAoaW50ZXJ2YWxzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgZmxvYXQgeTEgPSBsb2dpY2FsVG9wOworICAgIGZsb2F0IHkyID0gbG9naWNhbFRv
cCArIGxvZ2ljYWxIZWlnaHQ7CisKKyAgICBpZiAoeTEgPCBpbnRlcnZhbHMuYm91bmRzKCkueSgp
IHx8IHkyID4gaW50ZXJ2YWxzLmJvdW5kcygpLm1heFkoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgaW50ZXJ2YWxzLmdldEludGVydmFscyh5MSwgeTIsIHJlc3VsdCk7Cit9CisKK2Jvb2wgUmFz
dGVyU2hhcGU6OmZpcnN0SW5jbHVkZWRJbnRlcnZhbExvZ2ljYWxUb3AoTGF5b3V0VW5pdCBtaW5M
b2dpY2FsSW50ZXJ2YWxUb3AsIGNvbnN0IExheW91dFNpemUmIG1pbkxvZ2ljYWxJbnRlcnZhbFNp
emUsIExheW91dFVuaXQmIHJlc3VsdCkgY29uc3QKK3sKKyAgICBmbG9hdCBtaW5JbnRlcnZhbFRv
cCA9IG1pbkxvZ2ljYWxJbnRlcnZhbFRvcDsKKyAgICBmbG9hdCBtaW5JbnRlcnZhbEhlaWdodCA9
IG1pbkxvZ2ljYWxJbnRlcnZhbFNpemUuaGVpZ2h0KCk7CisgICAgZmxvYXQgbWluSW50ZXJ2YWxX
aWR0aCA9IG1pbkxvZ2ljYWxJbnRlcnZhbFNpemUud2lkdGgoKTsKKworICAgIGNvbnN0IFJhc3Rl
clNoYXBlSW50ZXJ2YWxzJiBpbnRlcnZhbHMgPSBwYWRkaW5nSW50ZXJ2YWxzKCk7CisgICAgaWYg
KGludGVydmFscy5pc0VtcHR5KCkgfHwgbWluSW50ZXJ2YWxXaWR0aCA+IGludGVydmFscy5ib3Vu
ZHMoKS53aWR0aCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBmbG9hdCBtaW5ZID0g
c3RkOjptYXg8ZmxvYXQ+KGludGVydmFscy5ib3VuZHMoKS55KCksIG1pbkludGVydmFsVG9wKTsK
KyAgICBmbG9hdCBtYXhZID0gbWluWSArIG1pbkludGVydmFsSGVpZ2h0OworCisgICAgaWYgKG1h
eFkgPiBpbnRlcnZhbHMuYm91bmRzKCkubWF4WSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICAvLyBGSVhNRTogY29tcGxldGUgdGhpcyBtZXRob2QKKyAgICByZXN1bHQgPSBtaW5ZOwor
ICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uYzRmNzE2ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuaApAQCAtMCwwICsxLDgwIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAq
ICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cworICogICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MKKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisgKiBDT1BZUklHSFQgSE9M
REVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsCisgKiBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCisgKiBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VECisgKiBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBSYXN0ZXJTaGFwZV9oCisjZGVmaW5lIFJhc3RlclNoYXBlX2gKKworI2luY2x1
ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1ZGUgIlJlZ2lvbi5oIgorI2luY2x1ZGUgIlNoYXBlLmgi
CisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUmFzdGVyU2hhcGVJbnRlcnZhbHMgeworcHVi
bGljOgorICAgIFJhc3RlclNoYXBlSW50ZXJ2YWxzKCkgeyB9CisKKyAgICBJbnRSZWN0IGJvdW5k
cygpIGNvbnN0OworICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0ICB7IHJldHVybiBtX3JlZ2lvbi5p
c0VtcHR5KCk7IH0KKyAgICB2b2lkIGFkZEludGVydmFsKGludCB5LCBpbnQgeDEsIGludCB4Mik7
CisgICAgdm9pZCBnZXRJbnRlcnZhbHMoaW50IHkxLCBpbnQgeTIsIFNlZ21lbnRMaXN0JikgY29u
c3Q7CisKK3ByaXZhdGU6CisgICAgUmVnaW9uIG1fcmVnaW9uOworICAgIG11dGFibGUgT3duUHRy
PEludFJlY3Q+IG1fYm91bmRzOyAvLyBDYWNoZWQgdmFsdWUgb2YgbV9yZWdpb24uYm91bmRzKCku
Cit9OworCitjbGFzcyBSYXN0ZXJTaGFwZSA6IHB1YmxpYyBTaGFwZSB7CisgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoUmFzdGVyU2hhcGUpOworcHVibGljOgorICAgIFJhc3RlclNoYXBlKFBhc3NP
d25QdHI8UmFzdGVyU2hhcGVJbnRlcnZhbHM+IGludGVydmFscykKKyAgICAgICAgOiBTaGFwZSgp
CisgICAgICAgICwgbV9pbnRlcnZhbHMoaW50ZXJ2YWxzKQorICAgIHsKKyAgICB9CisKKyAgICB2
aXJ0dWFsIExheW91dFJlY3Qgc2hhcGVNYXJnaW5Mb2dpY2FsQm91bmRpbmdCb3goKSBjb25zdCBP
VkVSUklERSB7IHJldHVybiBzdGF0aWNfY2FzdDxMYXlvdXRSZWN0PihtYXJnaW5JbnRlcnZhbHMo
KS5ib3VuZHMoKSk7IH0KKyAgICB2aXJ0dWFsIExheW91dFJlY3Qgc2hhcGVQYWRkaW5nTG9naWNh
bEJvdW5kaW5nQm94KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gc3RhdGljX2Nhc3Q8TGF5b3V0
UmVjdD4ocGFkZGluZ0ludGVydmFscygpLmJvdW5kcygpKTsgfQorICAgIHZpcnR1YWwgYm9vbCBp
c0VtcHR5KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9pbnRlcnZhbHMtPmlzRW1wdHkoKTsg
fQorICAgIHZpcnR1YWwgdm9pZCBnZXRFeGNsdWRlZEludGVydmFscyhMYXlvdXRVbml0IGxvZ2lj
YWxUb3AsIExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgU2VnbWVudExpc3QmKSBjb25zdCBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0SW5jbHVkZWRJbnRlcnZhbHMoTGF5b3V0VW5pdCBs
b2dpY2FsVG9wLCBMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIFNlZ21lbnRMaXN0JikgY29uc3Qg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGZpcnN0SW5jbHVkZWRJbnRlcnZhbExvZ2ljYWxU
b3AoTGF5b3V0VW5pdCBtaW5Mb2dpY2FsSW50ZXJ2YWxUb3AsIGNvbnN0IExheW91dFNpemUmIG1p
bkxvZ2ljYWxJbnRlcnZhbFNpemUsIExheW91dFVuaXQmKSBjb25zdCBPVkVSUklERTsKKworcHJp
dmF0ZToKKyAgICBjb25zdCBSYXN0ZXJTaGFwZUludGVydmFscyYgbWFyZ2luSW50ZXJ2YWxzKCkg
Y29uc3Q7CisgICAgY29uc3QgUmFzdGVyU2hhcGVJbnRlcnZhbHMmIHBhZGRpbmdJbnRlcnZhbHMo
KSBjb25zdDsKKworICAgIE93blB0cjxSYXN0ZXJTaGFwZUludGVydmFscz4gbV9pbnRlcnZhbHM7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBSYXN0ZXJTaGFwZV9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCmluZGV4IGI3OTIwY2Mu
LjU0YzM3ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hh
cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCkBA
IC0zMSw5ICszMSwxMiBAQAogI2luY2x1ZGUgIlNoYXBlLmgiCiAKICNpbmNsdWRlICJCYXNpY1No
YXBlRnVuY3Rpb25zLmgiCisjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRlICJGbG9h
dFNpemUuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkxlbmd0
aEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIlBvbHlnb25TaGFwZS5oIgorI2luY2x1ZGUgIlJhc3Rl
clNoYXBlLmgiCiAjaW5jbHVkZSAiUmVjdGFuZ2xlU2hhcGUuaCIKICNpbmNsdWRlICJXaW5kUnVs
ZS5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CkBAIC0xOTEsNCArMTk0LDU2IEBAIFBh
c3NPd25QdHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVTaGFwZShjb25zdCBCYXNpY1NoYXBlKiBiYXNp
Y1NoYXBlLCBjb25zdCBMYXlvdXRTCiAgICAgcmV0dXJuIHNoYXBlLnJlbGVhc2UoKTsKIH0KIAor
UGFzc093blB0cjxTaGFwZT4gU2hhcGU6OmNyZWF0ZVNoYXBlKGNvbnN0IFN0eWxlSW1hZ2UqIHN0
eWxlSW1hZ2UsIGZsb2F0IHRocmVzaG9sZCwgY29uc3QgTGF5b3V0U2l6ZSYgbG9naWNhbEJveFNp
emUsIFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBMZW5ndGggbWFyZ2luLCBMZW5ndGggcGFkZGlu
ZykKK3sKKyAgICAvLyBGSVhNRTogU2hvdWxkIGNsaXAgc2hhcGUgdG8gbG9naWNhbCBib3gKKyAg
ICBVTlVTRURfUEFSQU0obG9naWNhbEJveFNpemUpOworCisgICAgQVNTRVJUKHN0eWxlSW1hZ2Ug
JiYgc3R5bGVJbWFnZS0+aXNDYWNoZWRJbWFnZSgpICYmIHN0eWxlSW1hZ2UtPmNhY2hlZEltYWdl
KCkgJiYgc3R5bGVJbWFnZS0+Y2FjaGVkSW1hZ2UoKS0+aW1hZ2UoKSk7CisKKyAgICBJbWFnZSog
aW1hZ2UgPSBzdHlsZUltYWdlLT5jYWNoZWRJbWFnZSgpLT5pbWFnZSgpOworICAgIEdyYXBoaWNz
Q29udGV4dDNEOjpJbWFnZUV4dHJhY3RvciBpbWFnZUV4dHJhY3RvcihpbWFnZSwgR3JhcGhpY3ND
b250ZXh0M0Q6Okh0bWxEb21Ob25lLCBmYWxzZSwgdHJ1ZSk7CisgICAgLy8gRklYTUU6IGNsaXAg
aW1hZ2Ugc2l6ZSB0byBMYXlvdXRTaXplIGhlcmUsIGFmdGVyIGRlYWxpbmcgd2l0aCB3cml0aW5n
LW1vZGUgdHJhbnNmb3JtLgorICAgIGludCBpbWFnZVdpZHRoID0gc3RhdGljX2Nhc3Q8aW50Pihp
bWFnZUV4dHJhY3Rvci5pbWFnZVdpZHRoKCkpOworICAgIGludCBpbWFnZUhlaWdodCA9IHN0YXRp
Y19jYXN0PGludD4oaW1hZ2VFeHRyYWN0b3IuaW1hZ2VIZWlnaHQoKSk7CisKKyAgICBWZWN0b3I8
dWludDhfdD4gYWxwaGFQaXhlbHM7CisgICAgYm9vbCBwYWNrSW1hZ2VEYXRhT0sgPSBHcmFwaGlj
c0NvbnRleHQzRDo6cGFja0ltYWdlRGF0YShpbWFnZSwgaW1hZ2VFeHRyYWN0b3IuaW1hZ2VQaXhl
bERhdGEoKSwKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0M0Q6OkFMUEhBLAorICAgICAgICBHcmFw
aGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwKKyAgICAgICAgZmFsc2UsIC8qIGZsaXBZICov
CisgICAgICAgIEdyYXBoaWNzQ29udGV4dDNEOjpBbHBoYURvTm90aGluZywKKyAgICAgICAgaW1h
Z2VFeHRyYWN0b3IuaW1hZ2VTb3VyY2VGb3JtYXQoKSwKKyAgICAgICAgaW1hZ2VXaWR0aCwKKyAg
ICAgICAgaW1hZ2VIZWlnaHQsCisgICAgICAgIGltYWdlRXh0cmFjdG9yLmltYWdlU291cmNlVW5w
YWNrQWxpZ25tZW50KCksCisgICAgICAgIGFscGhhUGl4ZWxzKTsKKworICAgIEFTU0VSVChwYWNr
SW1hZ2VEYXRhT0sgJiYgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGltYWdlV2lkdGggKiBpbWFnZUhl
aWdodCkgPT0gYWxwaGFQaXhlbHMuc2l6ZSgpKTsKKworICAgIE93blB0cjxSYXN0ZXJTaGFwZUlu
dGVydmFscz4gaW50ZXJ2YWxzID0gYWRvcHRQdHIobmV3IFJhc3RlclNoYXBlSW50ZXJ2YWxzKCkp
OworICAgIHVpbnQ4X3QgYWxwaGFQaXhlbFRocmVzaG9sZCA9IHRocmVzaG9sZCAqIDI1NTsKKwor
ICAgIC8vIEZJWE1FOiBmbGlwIGludGVydmFscyBwZXIgd3JpdGluZy1tb2RlCisgICAgZm9yIChp
bnQgeSA9IDA7IHkgPCBpbWFnZUhlaWdodDsgeSsrKSB7CisgICAgICAgIGludCBzdGFydFggPSAt
MTsKKyAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCBpbWFnZVdpZHRoOyB4KyspIHsKKyAgICAg
ICAgICAgIHVpbnQ4X3QgYWxwaGEgPSBhbHBoYVBpeGVsc1t4ICsgeSAqIGltYWdlV2lkdGhdOwor
ICAgICAgICAgICAgaWYgKChzdGFydFggPT0gLTEpICYmIGFscGhhID4gYWxwaGFQaXhlbFRocmVz
aG9sZCkgeworICAgICAgICAgICAgICAgIHN0YXJ0WCA9IHg7CisgICAgICAgICAgICB9IGVsc2Ug
aWYgKHN0YXJ0WCAhPSAtMSAmJiAoYWxwaGEgPD0gYWxwaGFQaXhlbFRocmVzaG9sZCB8fCB4ID09
IGltYWdlV2lkdGggLSAxKSkgeworICAgICAgICAgICAgICAgIGludGVydmFscy0+YWRkSW50ZXJ2
YWwoeSwgc3RhcnRYLCB4KTsKKyAgICAgICAgICAgICAgICBzdGFydFggPSAtMTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIE93blB0cjxSYXN0ZXJTaGFwZT4gcmFzdGVy
U2hhcGUgPSBhZG9wdFB0cihuZXcgUmFzdGVyU2hhcGUoaW50ZXJ2YWxzLnJlbGVhc2UoKSkpOwor
ICAgIHJhc3RlclNoYXBlLT5tX3dyaXRpbmdNb2RlID0gd3JpdGluZ01vZGU7CisgICAgcmFzdGVy
U2hhcGUtPm1fbWFyZ2luID0gZmxvYXRWYWx1ZUZvckxlbmd0aChtYXJnaW4sIDApOworICAgIHJh
c3RlclNoYXBlLT5tX3BhZGRpbmcgPSBmbG9hdFZhbHVlRm9yTGVuZ3RoKHBhZGRpbmcsIDApOwor
CisgICAgcmV0dXJuIHJhc3RlclNoYXBlLnJlbGVhc2UoKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFw
ZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5oCmluZGV4IDBkOWVj
ZmQuLmY3NzVlNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMv
U2hhcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmgKQEAg
LTMyLDYgKzMyLDcgQEAKIAogI2luY2x1ZGUgIkJhc2ljU2hhcGVzLmgiCiAjaW5jbHVkZSAiTGF5
b3V0UmVjdC5oIgorI2luY2x1ZGUgIlN0eWxlSW1hZ2UuaCIKICNpbmNsdWRlICJXcml0aW5nTW9k
ZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgpAQCAtNjAsNiArNjEsNyBAQCB0eXBlZGVmIFZlY3RvcjxMaW5lU2VnbWVudD4gU2VnbWVudExp
c3Q7CiBjbGFzcyBTaGFwZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8U2hhcGU+
IGNyZWF0ZVNoYXBlKGNvbnN0IEJhc2ljU2hhcGUqLCBjb25zdCBMYXlvdXRTaXplJiBsb2dpY2Fs
Qm94U2l6ZSwgV3JpdGluZ01vZGUsIExlbmd0aCBtYXJnaW4sIExlbmd0aCBwYWRkaW5nKTsKKyAg
ICBzdGF0aWMgUGFzc093blB0cjxTaGFwZT4gY3JlYXRlU2hhcGUoY29uc3QgU3R5bGVJbWFnZSos
IGZsb2F0IHRocmVzaG9sZCwgY29uc3QgTGF5b3V0U2l6ZSYgbG9naWNhbEJveFNpemUsIFdyaXRp
bmdNb2RlLCBMZW5ndGggbWFyZ2luLCBMZW5ndGggcGFkZGluZyk7CiAKICAgICB2aXJ0dWFsIH5T
aGFwZSgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVz
L1NoYXBlSW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW5m
by5jcHAKaW5kZXggZTExNTU4My4uYmY5NGU0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3NoYXBlcy9TaGFwZUluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zaGFwZXMvU2hhcGVJbmZvLmNwcApAQCAtNDUsMTIgKzQ1LDI2IEBAIGNvbnN0IFNoYXBl
KiBTaGFwZUluZm88UmVuZGVyVHlwZSwgc2hhcGVHZXR0ZXIsIGludGVydmFsR2V0dGVyPjo6Y29t
cHV0ZWRTaGFwZSgpCiAgICAgaWYgKFNoYXBlKiBzaGFwZSA9IG1fc2hhcGUuZ2V0KCkpCiAgICAg
ICAgIHJldHVybiBzaGFwZTsKIAotICAgIFNoYXBlVmFsdWUqIHNoYXBlVmFsdWUgPSAobV9yZW5k
ZXJlci0+c3R5bGUoKS0+KnNoYXBlR2V0dGVyKSgpOwotICAgIEJhc2ljU2hhcGUqIHNoYXBlID0g
KHNoYXBlVmFsdWUgJiYgc2hhcGVWYWx1ZS0+dHlwZSgpID09IFNoYXBlVmFsdWU6OlNoYXBlKSA/
IHNoYXBlVmFsdWUtPnNoYXBlKCkgOiAwOworICAgIGNvbnN0IExheW91dFNpemUgbG9naWNhbEJv
eFNpemUobV9zaGFwZUxvZ2ljYWxXaWR0aCwgbV9zaGFwZUxvZ2ljYWxIZWlnaHQpOworICAgIFdy
aXRpbmdNb2RlIHdyaXRpbmdNb2RlID0gbV9yZW5kZXJlci0+c3R5bGUoKS0+d3JpdGluZ01vZGUo
KTsKKyAgICBMZW5ndGggbWFyZ2luID0gbV9yZW5kZXJlci0+c3R5bGUoKS0+c2hhcGVNYXJnaW4o
KTsKKyAgICBMZW5ndGggcGFkZGluZyA9IG1fcmVuZGVyZXItPnN0eWxlKCktPnNoYXBlUGFkZGlu
ZygpOworICAgIGNvbnN0IFNoYXBlVmFsdWUqIHNoYXBlVmFsdWUgPSAobV9yZW5kZXJlci0+c3R5
bGUoKS0+KnNoYXBlR2V0dGVyKSgpOworICAgIEFTU0VSVChzaGFwZVZhbHVlKTsKIAotICAgIEFT
U0VSVChzaGFwZSk7CisgICAgc3dpdGNoIChzaGFwZVZhbHVlLT50eXBlKCkpIHsKKyAgICBjYXNl
IFNoYXBlVmFsdWU6OlNoYXBlOgorICAgICAgICBBU1NFUlQoc2hhcGVWYWx1ZS0+c2hhcGUoKSk7
CisgICAgICAgIG1fc2hhcGUgPSBTaGFwZTo6Y3JlYXRlU2hhcGUoc2hhcGVWYWx1ZS0+c2hhcGUo
KSwgbG9naWNhbEJveFNpemUsIHdyaXRpbmdNb2RlLCBtYXJnaW4sIHBhZGRpbmcpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFNoYXBlVmFsdWU6OkltYWdlOgorICAgICAgICBBU1NFUlQoc2hh
cGVWYWx1ZS0+aW1hZ2UoKSk7CisgICAgICAgIG1fc2hhcGUgPSBTaGFwZTo6Y3JlYXRlU2hhcGUo
c2hhcGVWYWx1ZS0+aW1hZ2UoKSwgMCwgbG9naWNhbEJveFNpemUsIHdyaXRpbmdNb2RlLCBtYXJn
aW4sIHBhZGRpbmcpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CiAKLSAgICBtX3NoYXBlID0gU2hhcGU6OmNyZWF0ZVNo
YXBlKHNoYXBlLCBMYXlvdXRTaXplKG1fc2hhcGVMb2dpY2FsV2lkdGgsIG1fc2hhcGVMb2dpY2Fs
SGVpZ2h0KSwgbV9yZW5kZXJlci0+c3R5bGUoKS0+d3JpdGluZ01vZGUoKSwgbV9yZW5kZXJlci0+
c3R5bGUoKS0+c2hhcGVNYXJnaW4oKSwgbV9yZW5kZXJlci0+c3R5bGUoKS0+c2hhcGVQYWRkaW5n
KCkpOwogICAgIEFTU0VSVChtX3NoYXBlKTsKICAgICByZXR1cm4gbV9zaGFwZS5nZXQoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVJbnNpZGVJ
bmZvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVJbnNpZGVJbmZv
LmNwcAppbmRleCBkMTI5NWQwLi4xYzhlMTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW5zaWRlSW5mby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3NoYXBlcy9TaGFwZUluc2lkZUluZm8uY3BwCkBAIC00NiwxMSArNDYsMTcgQEAg
TGluZVNlZ21lbnRSYW5nZTo6TGluZVNlZ21lbnRSYW5nZShjb25zdCBJbmxpbmVJdGVyYXRvciYg
c3RhcnQsIGNvbnN0IElubGluZUl0ZXIKIGJvb2wgU2hhcGVJbnNpZGVJbmZvOjppc0VuYWJsZWRG
b3IoY29uc3QgUmVuZGVyQmxvY2sqIHJlbmRlcmVyKQogewogICAgIFNoYXBlVmFsdWUqIHNoYXBl
VmFsdWUgPSByZW5kZXJlci0+c3R5bGUoKS0+cmVzb2x2ZWRTaGFwZUluc2lkZSgpOwotICAgIGlm
ICghc2hhcGVWYWx1ZSB8fCBzaGFwZVZhbHVlLT50eXBlKCkgIT0gU2hhcGVWYWx1ZTo6U2hhcGUp
CisgICAgaWYgKCFzaGFwZVZhbHVlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBCYXNp
Y1NoYXBlKiBzaGFwZSA9IHNoYXBlVmFsdWUtPnNoYXBlKCk7Ci0gICAgcmV0dXJuIHNoYXBlICYm
IHNoYXBlLT50eXBlKCkgIT0gQmFzaWNTaGFwZTo6QmFzaWNTaGFwZUluc2V0UmVjdGFuZ2xlVHlw
ZTsKKyAgICBzd2l0Y2ggKHNoYXBlVmFsdWUtPnR5cGUoKSkgeworICAgIGNhc2UgU2hhcGVWYWx1
ZTo6U2hhcGU6CisgICAgICAgIHJldHVybiBzaGFwZVZhbHVlLT5zaGFwZSgpICYmIHNoYXBlVmFs
dWUtPnNoYXBlKCktPnR5cGUoKSAhPSBCYXNpY1NoYXBlOjpCYXNpY1NoYXBlSW5zZXRSZWN0YW5n
bGVUeXBlOworICAgIGNhc2UgU2hhcGVWYWx1ZTo6SW1hZ2U6CisgICAgICAgIHJldHVybiBzaGFw
ZVZhbHVlLT5pc0ltYWdlVmFsaWQoKTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQogfQogCiBib29sIFNoYXBlSW5zaWRlSW5mbzo6YWRqdXN0TG9naWNhbExpbmVU
b3AoZmxvYXQgbWluU2VnbWVudFdpZHRoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5jcHAKaW5kZXggZTE5MmY2NS4uZjEyZWQ3NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJ
bmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lk
ZUluZm8uY3BwCkBAIC0zOCw4ICszOCwxOCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogYm9vbCBT
aGFwZU91dHNpZGVJbmZvOjppc0VuYWJsZWRGb3IoY29uc3QgUmVuZGVyQm94KiBib3gpCiB7Ci0g
ICAgU2hhcGVWYWx1ZSogdmFsdWUgPSBib3gtPnN0eWxlKCktPnNoYXBlT3V0c2lkZSgpOwotICAg
IHJldHVybiBib3gtPmlzRmxvYXRpbmdXaXRoU2hhcGVPdXRzaWRlKCkgJiYgdmFsdWUtPnR5cGUo
KSA9PSBTaGFwZVZhbHVlOjpTaGFwZSAmJiB2YWx1ZS0+c2hhcGUoKTsKKyAgICBTaGFwZVZhbHVl
KiBzaGFwZVZhbHVlID0gYm94LT5zdHlsZSgpLT5zaGFwZU91dHNpZGUoKTsKKyAgICBpZiAoIWJv
eC0+aXNGbG9hdGluZ1dpdGhTaGFwZU91dHNpZGUoKSB8fCAhc2hhcGVWYWx1ZSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgc3dpdGNoIChzaGFwZVZhbHVlLT50eXBlKCkpIHsKKyAgICBj
YXNlIFNoYXBlVmFsdWU6OlNoYXBlOgorICAgICAgICByZXR1cm4gc2hhcGVWYWx1ZS0+c2hhcGUo
KTsKKyAgICBjYXNlIFNoYXBlVmFsdWU6OkltYWdlOgorICAgICAgICByZXR1cm4gc2hhcGVWYWx1
ZS0+aXNJbWFnZVZhbGlkKCk7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KIH0KIAogYm9vbCBTaGFwZU91dHNpZGVJbmZvOjpjb21wdXRlU2VnbWVudHNGb3JMaW5l
KExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lSGVpZ2h0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYXBlVmFsdWUuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TaGFwZVZhbHVlLmgKaW5kZXggNjc0YWVlYi4uMGI3ZGRmNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYXBlVmFsdWUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhcGVWYWx1ZS5oCkBAIC0zMSw2
ICszMSw3IEBACiAjZGVmaW5lIFNoYXBlVmFsdWVfaAogCiAjaW5jbHVkZSAiQmFzaWNTaGFwZXMu
aCIKKyNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUgIlN0eWxlSW1hZ2UuaCIKICNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCkBAIC02Miw3ICs2Myw5IEBAIHB1YmxpYzoKIAog
ICAgIFNoYXBlVmFsdWVUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KICAgICBC
YXNpY1NoYXBlKiBzaGFwZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcGUuZ2V0KCk7IH0KKwogICAg
IFN0eWxlSW1hZ2UqIGltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZS5nZXQoKTsgfQorICAg
IGJvb2wgaXNJbWFnZVZhbGlkKCkgY29uc3QgeyByZXR1cm4gaW1hZ2UoKSAmJiBpbWFnZSgpLT5j
YWNoZWRJbWFnZSgpICYmIGltYWdlKCktPmNhY2hlZEltYWdlKCktPmhhc0ltYWdlKCk7IH0KICAg
ICB2b2lkIHNldEltYWdlKFBhc3NSZWZQdHI8U3R5bGVJbWFnZT4gaW1hZ2UpCiAgICAgewogICAg
ICAgICBpZiAobV9pbWFnZSAhPSBpbWFnZSkK
</data>
<flag name="commit-queue"
          id="225728"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>204336</attachid>
            <date>2013-06-11 07:28:50 -0700</date>
            <delta_ts>2013-06-11 16:59:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>tmp.patch</filename>
            <type>text/plain</type>
            <size>37039</size>
            <attacher name="Hans Muller">giles_joplin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhMDMzNTdmLi44MDM0YzExIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTMtMDYt
MTAgIEhhbnMgTXVsbGVyICA8aG11bGxlckBhZG9iZS5jb20+CisKKyAgICAgICAgW0NTUyBFeGNs
dXNpb25zXSBNaW5pbWFsIHN1cHBvcnQgZm9yIHVzaW5nIGFuIGltYWdlIHRvIGRlZmluZSBhIHNo
YXBlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTY2
NDMKKworICAgICAgICBPbmUgdGVzdCB0byB2ZXJpZnkgdGhhdCB0aGUgaW5pdGlhbCBpbXBsZW1l
bnRhdGlvbiBvZiBzaGFwZSB2YWx1ZWQgaW1hZ2VzIGlzIHdvcmtpbmcKKyAgICAgICAgZm9yIHNo
YXBlLWluc2lkZS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGZhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAw
MS1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V4Y2x1c2lvbnMvc2hhcGUt
aW5zaWRlL3NoYXBlLWluc2lkZS1pbWFnZS0wMDEuaHRtbDogQWRkZWQuCisKIDIwMTMtMDYtMTEg
IE1paG5lYSBPdmlkZW5pZSAgPG1paG5lYUBhZG9iZS5jb20+CiAKICAgICAgICAgW1F0XVtFRkxd
W0dUS11mYXN0L3JlZ2lvbnMvb3ZlcmZsb3ctc2l6ZS1jaGFuZ2Utd2l0aC1zdGFja2luZy1jb250
ZXh0LXJ0bC5odG1sIGZhaWxzIGFmdGVyIHIxNTEyMDIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAwMS1leHBl
Y3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFw
ZS1pbnNpZGUtaW1hZ2UtMDAxLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uMmFlZDIzNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAwMS1leHBlY3RlZC5o
dG1sCkBAIC0wLDAgKzEsMjggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxz
Y3JpcHQ+CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIHdpbmRvdy5pbnRlcm5h
bHMuc2V0dGluZ3Muc2V0Q1NTU2hhcGVzRW5hYmxlZCh0cnVlKTsKKzwvc2NyaXB0PgorPHN0eWxl
PgorICAgICNpbWFnZS1zaGFwZSB7CisgICAgICAgIGJvcmRlcjogc29saWQgYmxhY2sgMXB4Owor
ICAgICAgICBmb250OiAxMnB4LzEgQWhlbSwgc2Fucy1zZXJpZjsKKyAgICAgICAgcGFkZGluZzog
NHB4OworICAgICAgICBjb2xvcjogZ3JlZW47CisgICAgICAgIHdpZHRoOiAyNHB4OworICAgICAg
ICBoZWlnaHQ6IDI0cHg7CisgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFn
ZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFnQ0FZQUFBQnplbnIw
QUFBQVNrbEVRVlJZQ2UzWElRNEFNQWhEMFhYaC9sZnVNa2VDSmpVZmhTdDVZSkR0azZ5YkRQL1pE
RkJqQmRMdVVkanFtYXdBQVFRUVFBQUJCQkJBQUFFRTRnTGlOK3hmU3FLUDM4QUR1UU1KTzZMTmJy
NEFBQUFBU1VWT1JLNUNZSUk9Iik7CisgICAgICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBl
YXQ7CisgICAgfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICA8cCBpZD0iaW5mb3JtYXRp
dmUtdGV4dCI+CisgICAgICBUaGlzIHRlc3QgcmVxdWlyZXMgdGhlIEFoZW0gZm9udC4gSXQgdXNl
cyBhIDMyeDMyIFBORyBpbWFnZSB3aXRoIGEgMjR4MjQgcmVkIHNxdWFyZSBpbiB0aGUgY2VudGVy
CisgICAgICB0byBkZWZpbmUgYSBzaGFwZS1pbnNpZGUuIFRoZSBjb250ZW50IHNob3VsZCBqdXN0
IGNvdmVyIHRoZSBzaGFwZSB3aXRoIHNvbGlkIGdyZWVuLjwvcD4KKworICA8ZGl2IGlkPSJpbWFn
ZS1zaGFwZSI+WFg8YnIvPlhYPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1pbWFn
ZS0wMDEuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hh
cGUtaW5zaWRlLWltYWdlLTAwMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjgzNDk3NzcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lv
bnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1pbWFnZS0wMDEuaHRtbApAQCAtMCwwICsxLDI4
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorICAgIGlmICh3
aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldENT
U1NoYXBlc0VuYWJsZWQodHJ1ZSk7Cis8L3NjcmlwdD4KKzxzdHlsZT4KKyAgICAjaW1hZ2Utc2hh
cGUgeworICAgICAgICBib3JkZXI6IHNvbGlkIGJsYWNrIDFweDsKKyAgICAgICAgZm9udDogMTJw
eC8xIEFoZW0sIHNhbnMtc2VyaWY7CisgICAgICAgIGNvbG9yOiBncmVlbjsKKyAgICAgICAgd2lk
dGg6IDMycHg7CisgICAgICAgIGhlaWdodDogMzJweDsKKyAgICAgICAgLXdlYmtpdC1zaGFwZS1p
bnNpZGU6IHVybCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdB
QUFDQUFBQUFnQ0FZQUFBQnplbnIwQUFBQVNrbEVRVlJZQ2UzWElRNEFNQWhEMFhYaC9sZnVNa2VD
SmpVZmhTdDVZSkR0azZ5YkRQL1pERkJqQmRMdVVkanFtYXdBQVFRUVFBQUJCQkJBQUFFRTRnTGlO
K3hmU3FLUDM4QUR1UU1KTzZMTmJyNEFBQUFBU1VWT1JLNUNZSUk9Iik7CisgICAgICAgIGJhY2tn
cm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5T
VWhFVWdBQUFDQUFBQUFnQ0FZQUFBQnplbnIwQUFBQVNrbEVRVlJZQ2UzWElRNEFNQWhEMFhYaC9s
ZnVNa2VDSmpVZmhTdDVZSkR0azZ5YkRQL1pERkJqQmRMdVVkanFtYXdBQVFRUVFBQUJCQkJBQUFF
RTRnTGlOK3hmU3FLUDM4QUR1UU1KTzZMTmJyNEFBQUFBU1VWT1JLNUNZSUk9Iik7CisgICAgICAg
IGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CisgICAgfQorPC9zdHlsZT4KKzwvaGVhZD4K
Kzxib2R5PgorICA8cCBpZD0iaW5mb3JtYXRpdmUtdGV4dCI+CisgICAgICBUaGlzIHRlc3QgcmVx
dWlyZXMgdGhlIEFoZW0gZm9udC4gSXQgdXNlcyBhIDMyeDMyIFBORyBpbWFnZSB3aXRoIGEgMjR4
MjQgcmVkIHNxdWFyZSBpbiB0aGUgY2VudGVyCisgICAgICB0byBkZWZpbmUgYSBzaGFwZS1pbnNp
ZGUuIFRoZSBjb250ZW50IHNob3VsZCBqdXN0IGNvdmVyIHRoZSBzaGFwZSB3aXRoIHNvbGlkIGdy
ZWVuLjwvcD4KKworICA8ZGl2IGlkPSJpbWFnZS1zaGFwZSI+WFggWFg8L2Rpdj4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNzg1YTZhNy4uNWNlMjM5MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQKQEAgLTIyMDksNiArMjIwOSw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMK
ICAgICByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFVuZGVyT3Zlci5jcHAKIAogICAgIHJl
bmRlcmluZy9zaGFwZXMvUG9seWdvblNoYXBlLmNwcAorICAgIHJlbmRlcmluZy9zaGFwZXMvUmFz
dGVyU2hhcGUuY3BwCiAgICAgcmVuZGVyaW5nL3NoYXBlcy9SZWN0YW5nbGVTaGFwZS5jcHAKICAg
ICByZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcAogICAgIHJlbmRlcmluZy9zaGFwZXMvU2hhcGVJ
bmZvLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IDdmMGQ2MDYuLjVmNTAyOGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MiBAQAorMjAxMy0wNi0xMCAgSGFucyBNdWxsZXIgIDxobXVsbGVyQGFkb2JlLmNvbT4K
KworICAgICAgICBbQ1NTIEV4Y2x1c2lvbnNdIE1pbmltYWwgc3VwcG9ydCBmb3IgdXNpbmcgYW4g
aW1hZ2UgdG8gZGVmaW5lIGEgc2hhcGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTExNjY0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoaXMgaXMgYSBmaXJzdCBzbWFsbCBzdGVwIHRvd2FyZHMgc3VwcG9y
dGluZyBDU1Mgc2hhcGVzIGRlZmluZWQgYnkgYW4KKyAgICAgICAgaW1hZ2UgVVJMIGFuZCBhIGFs
cGhhIGNoYW5uZWwgdGhyZXNob2xkLiBUbyBrZWVwIHRoZSBwYXRjaCBhcyBzbWFsbCBhcworICAg
ICAgICBwb3NzaWJsZSwgdGhlcmUgYXJlIG1hbnkgbGltaXRhdGlvbnM6CisgICAgICAgIC0gSW1h
Z2Ugc2hhcGUgdmFsdWVzIGNhbiBvbmx5IGJlIHVzZWQgd2l0aCBzaGFwZS1pbnNpZGUgKG5vdCBz
aGFwZS1vdXRzaWRlKS4KKyAgICAgICAgLSBUaGUgQ1NTIHNoYXBlLWltYWdlLXRocmVzaG9sZCBw
cm9wZXJ0eSBpc24ndCBzdXBwb3J0ZWQsIGN1cnJlbnRseSB0aGUgdGhyZXNob2xkIGlzIGFsd2F5
cyAwLgorICAgICAgICAtIFRoZSBSYXN0ZXJTaGFwZSBpbnRlcm5hbCByZXByZXNlbnRhdGlvbiBv
ZiBhbiBpbWFnZSBzaGFwZSBzaG91bGQgYmUgbW9yZSBlZmZpY2llbnQuCisgICAgICAgIC0gR0lG
cyBhcmVuJ3Qgc3VwcG9ydGVkIGNvcnJlY3RseSwgb25seSBmcmFtZTAgc2hvdWxkIGJlIHVzZWQu
CisgICAgICAgIC0gVGhlIGZpcnN0IGxheW91dCBwb3NpdGlvbiBpc24ndCBjb21wdXRlZCwgaXQn
cyBhc3N1bWVkIHRoYXQgbGF5b3V0IGNhbiBiZWdpbiBhdCB0aGUgdG9wIG9mIHRoZSBzaGFwZS4K
KyAgICAgICAgLSBUaGVyZSdzIG5vIHN1cHBvcnQgZm9yIHNoYXBlLW1hcmdpbiBhbmQgc2hhcGUt
cGFkZGluZy4KKworICAgICAgICBUZXN0OiBmYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3No
YXBlLWluc2lkZS1pbWFnZS0wMDEuaHRtbAorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6Cisg
ICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAg
ICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2o6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJC
bG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6aW1hZ2VDaGFuZ2VkKTog
V2hlbiB0aGUgaW1hZ2UgaGFzIGZpbmlzaGVkIGxvYWRpbmcsIHJlcXVlc3QgYSBsYXlvdXQuCisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmg6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnNldFN0eWxl
KTogQWRkIG5vdGlmeSBjbGllbnRzIGZvciBzaGFwZSBpbWFnZXMuCisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJPYmplY3Q6OnVwZGF0ZVNoYXBlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6cmVt
b3ZlU2hhcGVJbWFnZUNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmFy
ZW5hRGVsZXRlKTogUmVtb3ZlIG5vdGlmeSBjbGllbnRzIGZvciBzaGFwZSBpbWFnZXMuCisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFw
ZXMvUmFzdGVyU2hhcGUuY3BwOiBBZGRlZC4gQSBTaGFwZSBkZWZpbmVkIGJ5IHRocmVzaG9sZGlu
ZyBhbiBpbWFnZSdzIGFscGhhIGNoYW5uZWwuCisgICAgICAgIChXZWJDb3JlOjpSYXN0ZXJTaGFw
ZUludGVydmFsczo6Ym91bmRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJhc3RlclNoYXBlSW50ZXJ2
YWxzOjphZGRJbnRlcnZhbCk6IEFkZCBhIHNpbmdsZSBydW4gdG8gdGhlIHNoYXBlLgorICAgICAg
ICAoV2ViQ29yZTo6YWxpZ25lZFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmFzdGVyU2hhcGVJ
bnRlcnZhbHM6OmdldEludGVydmFscyk6IFJldHVybiB0aGUgc2hhcGUncyBydW5zIHRoYXQgZmFs
bCB3aXRoaW4gYSBob3Jpem9uYWwgYm94LgorICAgICAgICAoV2ViQ29yZTo6UmFzdGVyU2hhcGU6
Om1hcmdpbkludGVydmFscyk6IEludGVybmFsIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBzaGFwZSB3
aXRoIHNoYXBlLW1hcmdpbiBmYWN0b3JlZCBpbi4gIEN1cnJlbnRseSBvbmx5IGEgc3R1Yi4KKyAg
ICAgICAgKFdlYkNvcmU6OlJhc3RlclNoYXBlOjpwYWRkaW5nSW50ZXJ2YWxzKTogSW50ZXJuYWwg
cmVwcmVzZW50YXRpb24gb2YgdGhlIHNoYXBlIHdpdGggc2hhcGUtcGFkZGluZyBmYWN0b3JlZCBp
bi4gIEN1cnJlbnRseSBvbmx5IGEgc3R1Yi4KKyAgICAgICAgKFdlYkNvcmU6OlJhc3RlclNoYXBl
OjpnZXRFeGNsdWRlZEludGVydmFscyk6CisgICAgICAgIChXZWJDb3JlOjpSYXN0ZXJTaGFwZTo6
Z2V0SW5jbHVkZWRJbnRlcnZhbHMpOgorICAgICAgICAoV2ViQ29yZTo6UmFzdGVyU2hhcGU6OmZp
cnN0SW5jbHVkZWRJbnRlcnZhbExvZ2ljYWxUb3ApOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFw
ZXMvUmFzdGVyU2hhcGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJhc3RlclNoYXBlSW50ZXJ2YWxz
OjpSYXN0ZXJTaGFwZUludGVydmFscyk6IEludGVybmFsIHJ1biBsZW5ndGggZW5jb2RlZCByZXBy
ZXNlbnRhdGlvbiBvZiBhIFJhc3RlclNoYXBlLgorICAgICAgICAoV2ViQ29yZTo6UmFzdGVyU2hh
cGVJbnRlcnZhbHM6OmlzRW1wdHkpOgorICAgICAgICAoV2ViQ29yZTo6UmFzdGVyU2hhcGU6OlJh
c3RlclNoYXBlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYXBlOjpjcmVhdGVTaGFwZSk6IFN1cHBvcnQgZm9yIGNyZWF0aW5nIGEg
U2hhcGUgYmFzZWQgb24gYSBSYXN0ZXJTaGFwZUludGVydmFscyBvYmplY3QuCisgICAgICAgICog
cmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvU2hh
cGVJbmZvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ojo6Y29tcHV0ZWRTaGFwZSk6IEFkZGVkIHN1
cHBvcnQgZm9yIHRoZSBJbWFnZSBTaGFwZVZhbHVlIHR5cGUuCisgICAgICAgICogcmVuZGVyaW5n
L3NoYXBlcy9TaGFwZUluc2lkZUluZm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGVJbnNp
ZGVJbmZvOjppc0VuYWJsZWRGb3IpOiBBZGRlZCBzdXBwb3J0IGZvciB0aGUgSW1hZ2UgU2hhcGVW
YWx1ZSB0eXBlLgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZU91dHNpZGVJbmZvOjppc0VuYWJsZWRGb3IpOiBB
ZGRlZCBzdXBwb3J0IGZvciB0aGUgSW1hZ2UgU2hhcGVWYWx1ZSB0eXBlLgorICAgICAgICAqIHJl
bmRlcmluZy9zdHlsZS9TaGFwZVZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZVZhbHVl
Ojppc0ltYWdlVmFsaWQpOiBUcnVlIGlmIHRoZSBzaGFwZSdzIGltYWdlIGlzIHJlYWR5IHRvIGJl
IGJlIHByb2Nlc3NlZC4KKwogMjAxMy0wNi0xMSAgQ2hyaXN0b3BoZSBEdW1leiAgPGNoLmR1bWV6
QHNpc2Euc2Ftc3VuZy5jb20+CiAKICAgICAgICAgU3VwcG9ydCBsYXRlc3QgV2ViIElETCBuYW1l
ZCBwcm9wZXJ0eSBnZXR0ZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA3OGJk
NjE4Li40MDMzYWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTQ2MjEsNiAr
NDYyMSw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3NoYXBlcy9Qb2x5Z29uU2hhcGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c2hhcGVzL1BvbHlnb25TaGFwZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVz
L1Jhc3RlclNoYXBlLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SYXN0
ZXJTaGFwZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1JlY3RhbmdsZVNo
YXBlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SZWN0YW5nbGVTaGFw
ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcCBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0
LnByaQppbmRleCAwN2JhOGJkLi4wZDk0NTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9U
YXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTEyMzksNiArMTIz
OSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHJlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcCBcCiAg
ICAgcmVuZGVyaW5nL1Njcm9sbEJlaGF2aW9yLmNwcCBcCiAgICAgcmVuZGVyaW5nL3NoYXBlcy9Q
b2x5Z29uU2hhcGUuY3BwIFwKKyAgICByZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNwcCBc
CiAgICAgcmVuZGVyaW5nL3NoYXBlcy9SZWN0YW5nbGVTaGFwZS5jcHAgXAogICAgIHJlbmRlcmlu
Zy9zaGFwZXMvU2hhcGUuY3BwIFwKICAgICByZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW5mby5jcHAg
XApAQCAtMjUwNyw2ICsyNTA4LDcgQEAgSEVBREVSUyArPSBcCiAgICAgcmVuZGVyaW5nL1Jvb3RJ
bmxpbmVCb3guaCBcCiAgICAgcmVuZGVyaW5nL1Njcm9sbEJlaGF2aW9yLmggXAogICAgIHJlbmRl
cmluZy9zaGFwZXMvUG9seWdvblNoYXBlLmggXAorICAgIHJlbmRlcmluZy9zaGFwZXMvUmFzdGVy
U2hhcGUuaCBcCiAgICAgcmVuZGVyaW5nL3NoYXBlcy9SZWN0YW5nbGVTaGFwZS5oIFwKICAgICBy
ZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmggXAogICAgIHJlbmRlcmluZy9zaGFwZXMvU2hhcGVJbmZv
LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUu
dmN4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oK
aW5kZXggMGQ5NWEyMi4uNjRlZjhiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
eHByb2ovV2ViQ29yZS52Y3hwcm9qCkBAIC0xLDQgKzEsNCBAQAot77u/PD94bWwgdmVyc2lvbj0i
MS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0
Zi04Ij8+CiA8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4w
IiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8y
MDAzIj4KICAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KICAgICA8
UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWdTdWZmaXh8V2luMzIiPgpAQCAtNjMw
MSw2ICs2MzAxLDcgQEAKICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNs
dWRlZEZyb21CdWlsZD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXHJlbmRlcmluZ1xzaGFwZXNcUG9seWdvblNoYXBlLmNwcCIgLz4KKyAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xzaGFwZXNcUmFzdGVyU2hhcGUuY3BwIiAvPgogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXHNoYXBlc1xSZWN0YW5nbGVTaGFwZS5jcHAi
IC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcc2hhcGVzXFNoYXBlLmNw
cCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xzaGFwZXNcU2hhcGVJ
bnNpZGVJbmZvLmNwcCIgLz4KQEAgLTEyMTkzLDYgKzEyMTk0LDcgQEAKICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xSZW5kZXJTbGlkZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXHNoYXBlc1xQb2x5Z29uU2hhcGUuaCIg
Lz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xzaGFwZXNcUmFzdGVyU2hh
cGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xzaGFwZXNcUmVj
dGFuZ2xlU2hhcGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xz
aGFwZXNcU2hhcGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xz
aGFwZXNcU2hhcGVJbnNpZGVJbmZvLmgiIC8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNGM0ODdlYS4uZjQ3MmY3OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MTgzNSw2ICsxODM1LDggQEAKIAkJNkU2N0QyQTYxMjgwRThBNDAwODc1OEY3IC8qIEV4dGVuc2lv
bnMzRE9wZW5HTC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA2RTY3RDJBNDEyODBFOEE0MDA4NzU4RjcgLyogRXh0ZW5zaW9uczNET3BlbkdMLmNwcCAq
LzsgfTsKIAkJNkU2N0QyQTcxMjgwRThBNDAwODc1OEY3IC8qIEV4dGVuc2lvbnMzRE9wZW5HTC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU2N0QyQTUx
MjgwRThBNDAwODc1OEY3IC8qIEV4dGVuc2lvbnMzRE9wZW5HTC5oICovOyB9OwogCQk2RTY3RDJB
OTEyODBFOEJEMDA4NzU4RjcgLyogRXh0ZW5zaW9uczNELmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTY3RDJBODEyODBFOEJEMDA4NzU4RjcgLyogRXh0
ZW5zaW9uczNELmggKi87IH07CisJCTZFODRFOUUwMTc2NjhCRUUwMDgxNUI2OCAvKiBSYXN0ZXJT
aGFwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2
RTg0RTlERTE3NjY4QkFEMDA4MTVCNjggLyogUmFzdGVyU2hhcGUuY3BwICovOyB9OworCQk2RTg0
RTlFMTE3NjY4QkYxMDA4MTVCNjggLyogUmFzdGVyU2hhcGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFODRFOURGMTc2NjhCQUQwMDgxNUI2OCAvKiBS
YXN0ZXJTaGFwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTZFQkM1RUFGMTM4QjUwRjIwMEEwQ0Y4QSAvKiBKU0Zsb2F0NjRBcnJheS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RUJDNUVBRDEzOEI1
MEYyMDBBMENGOEEgLyogSlNGbG9hdDY0QXJyYXkuY3BwICovOyB9OwogCQk2RUJDNUVCMDEzOEI1
MEYyMDBBMENGOEEgLyogSlNGbG9hdDY0QXJyYXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFQkM1RUFFMTM4QjUwRjIwMEEwQ0Y4QSAvKiBKU0Zsb2F0
NjRBcnJheS5oICovOyB9OwogCQk2RUJGMEU0ODEyQTg5MjYxMDBEQjE3MDkgLyogT0VTVGV4dHVy
ZUZsb2F0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDZFQkYwRTQ1MTJBODkyNjEwMERCMTcwOSAvKiBPRVNUZXh0dXJlRmxvYXQuY3BwICovOyB9OwpA
QCAtODIyOCw2ICs4MjMwLDggQEAKIAkJNkU2N0QyQTQxMjgwRThBNDAwODc1OEY3IC8qIEV4dGVu
c2lvbnMzRE9wZW5HTC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBF
eHRlbnNpb25zM0RPcGVuR0wuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RTY3
RDJBNTEyODBFOEE0MDA4NzU4RjcgLyogRXh0ZW5zaW9uczNET3BlbkdMLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4dGVuc2lvbnMzRE9wZW5HTC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk2RTY3RDJBODEyODBFOEJEMDA4NzU4RjcgLyogRXh0ZW5zaW9uczNE
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4dGVuc2lvbnMzRC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2RTg0RTlERTE3NjY4QkFEMDA4MTVCNjggLyogUmFz
dGVyU2hhcGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmFzdGVy
U2hhcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2RTg0RTlERjE3NjY4QkFE
MDA4MTVCNjggLyogUmFzdGVyU2hhcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmFzdGVyU2hhcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkVCQzVEODAx
MzhCNEM0RTAwQTBDRjhBIC8qIEZsb2F0NjRBcnJheS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1l
ID0gRmxvYXQ2NEFycmF5LmlkbDsgcGF0aCA9IGNhbnZhcy9GbG9hdDY0QXJyYXkuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RUJDNUVBRDEzOEI1MEYyMDBBMENGOEEgLyogSlNG
bG9hdDY0QXJyYXkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNG
bG9hdDY0QXJyYXkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RUJDNUVBRTEz
OEI1MEYyMDBBMENGOEEgLyogSlNGbG9hdDY0QXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNGbG9hdDY0QXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTIwNTQ0LDYgKzIwNTQ4LDggQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCUZEMDhBODdBMTc1
RDM5MjYwMDJDRDM2MCAvKiBQb2x5Z29uU2hhcGUuY3BwICovLAogCQkJCUZEMDhBODdCMTc1RDM5
MjYwMDJDRDM2MCAvKiBQb2x5Z29uU2hhcGUuaCAqLywKKwkJCQk2RTg0RTlERTE3NjY4QkFEMDA4
MTVCNjggLyogUmFzdGVyU2hhcGUuY3BwICovLAorCQkJCTZFODRFOURGMTc2NjhCQUQwMDgxNUI2
OCAvKiBSYXN0ZXJTaGFwZS5oICovLAogCQkJCUZEMDhBODdDMTc1RDM5MjYwMDJDRDM2MCAvKiBS
ZWN0YW5nbGVTaGFwZS5jcHAgKi8sCiAJCQkJRkQwOEE4N0QxNzVEMzkyNjAwMkNEMzYwIC8qIFJl
Y3RhbmdsZVNoYXBlLmggKi8sCiAJCQkJRkQwOEE4N0UxNzVEMzkyNjAwMkNEMzYwIC8qIFNoYXBl
LmNwcCAqLywKQEAgLTIwODY0LDYgKzIwODcwLDcgQEAKIAkJCWZpbGVzID0gKAogCQkJCUZFMTE1
RkFCMTY3OTg4Q0QwMDI0OTEzNCAvKiBBYnN0cmFjdERhdGFiYXNlU2VydmVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlGRTRBQURFRTE2RDJDMzc0MDAwMjZGRkMgLyogQWJzdHJhY3RTUUxTdGF0ZW1l
bnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTZFODRFOUUxMTc2NjhCRjEwMDgxNUI2OCAvKiBSYXN0
ZXJTaGFwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkU0QUFERUYxNkQyQzM3NDAwMDI2RkZDIC8q
IEFic3RyYWN0U1FMU3RhdGVtZW50QmFja2VuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFFMUIx
RDEwRkY1OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0V29ya2VyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkyOUE4MTIyRTBGQkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5o
IGluIEhlYWRlcnMgKi8sCkBAIC0yNjk1NSw2ICsyNjk2Miw3IEBACiAJCQkJQkU2REY3MTExNzFD
QTJEQTAwREQ1MkI4IC8qIEpTQXVkaW9UcmFja0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCRTZERjcxMzE3MUNBMkRBMDBERDUyQjggLyogSlNBdWRpb1RyYWNrTGlzdEN1c3RvbS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlGQjcxOUM0MDE3MjM4Q0FFMDAyMkRFMzQgLyogV2ViS2l0Q1NT
TWF0RnVuY3Rpb25WYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk2RTg0RTlFMDE3NjY4QkVF
MDA4MTVCNjggLyogUmFzdGVyU2hhcGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCBmYWI2OWE4Li43YjRmNGFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTE0MzUsNiArMTQzNSwyMSBA
QCB2b2lkIFJlbmRlckJsb2NrOjpsYXlvdXQoKQogfQogCiAjaWYgRU5BQkxFKENTU19TSEFQRVMp
Cit2b2lkIFJlbmRlckJsb2NrOjppbWFnZUNoYW5nZWQoV3JhcHBlZEltYWdlUHRyIGltYWdlLCBj
b25zdCBJbnRSZWN0KikKK3sKKyAgICBSZW5kZXJCb3g6OmltYWdlQ2hhbmdlZChpbWFnZSk7CisK
KyAgICBpZiAoIXBhcmVudCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBTaGFwZVZhbHVlKiBz
aGFwZVZhbHVlID0gc3R5bGUoKS0+c2hhcGVJbnNpZGUoKTsKKyAgICBpZiAoc2hhcGVWYWx1ZSAg
JiYgc2hhcGVWYWx1ZS0+aW1hZ2UoKSAmJiBzaGFwZVZhbHVlLT5pbWFnZSgpLT5kYXRhKCkgPT0g
aW1hZ2UpIHsKKyAgICAgICAgU2hhcGVJbnNpZGVJbmZvKiBzaGFwZUluc2lkZUluZm8gPSBlbnN1
cmVTaGFwZUluc2lkZUluZm8oKTsKKyAgICAgICAgc2hhcGVJbnNpZGVJbmZvLT5kaXJ0eVNoYXBl
U2l6ZSgpOworICAgICAgICBtYXJrU2hhcGVJbnNpZGVEZXNjZW5kYW50c0ZvckxheW91dCgpOwor
ICAgIH0KK30KKwogdm9pZCBSZW5kZXJCbG9jazo6dXBkYXRlU2hhcGVJbnNpZGVJbmZvQWZ0ZXJT
dHlsZUNoYW5nZShjb25zdCBTaGFwZVZhbHVlKiBzaGFwZUluc2lkZSwgY29uc3QgU2hhcGVWYWx1
ZSogb2xkU2hhcGVJbnNpZGUpCiB7CiAgICAgLy8gRklYTUU6IEEgZnV0dXJlIG9wdGltaXphdGlv
biB3b3VsZCBkbyBhIGRlZXAgY29tcGFyaXNvbiBmb3IgZXF1YWxpdHkuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9jay5oCmluZGV4IGJkMTBjOTguLjNmZmE3YmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCkBAIC00NjgsNiArNDY4LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgbWFya1NoYXBlSW5zaWRlRGVzY2VuZGFudHNGb3JMYXlvdXQoKTsKICAgICBTaGFw
ZUluc2lkZUluZm8qIGxheW91dFNoYXBlSW5zaWRlSW5mbygpIGNvbnN0OwogICAgIGJvb2wgYWxs
b3dzU2hhcGVJbnNpZGVJbmZvU2hhcmluZygpIGNvbnN0IHsgcmV0dXJuICFpc0lubGluZSgpICYm
ICFpc0Zsb2F0aW5nKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgaW1hZ2VDaGFuZ2VkKFdyYXBwZWRJ
bWFnZVB0ciwgY29uc3QgSW50UmVjdCogPSAwKSBPVkVSUklERTsKICNlbmRpZgogCiBwcm90ZWN0
ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IDJkM2Fj
MDQuLjNmNjI3NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3Bw
CkBAIC0xODQ0LDYgKzE4NDQsMTEgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OnNldFN0eWxlKFBhc3NS
ZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxlKQogICAgIHVwZGF0ZUltYWdlKG9sZFN0eWxlID8gb2xk
U3R5bGUtPmJvcmRlckltYWdlKCkuaW1hZ2UoKSA6IDAsIG1fc3R5bGUgPyBtX3N0eWxlLT5ib3Jk
ZXJJbWFnZSgpLmltYWdlKCkgOiAwKTsKICAgICB1cGRhdGVJbWFnZShvbGRTdHlsZSA/IG9sZFN0
eWxlLT5tYXNrQm94SW1hZ2UoKS5pbWFnZSgpIDogMCwgbV9zdHlsZSA/IG1fc3R5bGUtPm1hc2tC
b3hJbWFnZSgpLmltYWdlKCkgOiAwKTsKIAorI2lmIEVOQUJMRShDU1NfU0hBUEVTKQorICAgIHVw
ZGF0ZVNoYXBlSW1hZ2Uob2xkU3R5bGUgPyBvbGRTdHlsZS0+c2hhcGVJbnNpZGUoKSA6IDAsIG1f
c3R5bGUgPyBtX3N0eWxlLT5zaGFwZUluc2lkZSgpIDogMCk7CisgICAgdXBkYXRlU2hhcGVJbWFn
ZShvbGRTdHlsZSA/IG9sZFN0eWxlLT5zaGFwZU91dHNpZGUoKSA6IDAsIG1fc3R5bGUgPyBtX3N0
eWxlLT5zaGFwZU91dHNpZGUoKSA6IDApOworI2VuZGlmCisKICAgICAvLyBXZSBuZWVkIHRvIGVu
c3VyZSB0aGF0IHZpZXctPm1heGltYWxPdXRsaW5lU2l6ZSgpIGlzIHZhbGlkIGZvciBhbnkgcmVw
YWludHMgdGhhdCBoYXBwZW4KICAgICAvLyBkdXJpbmcgc3R5bGVEaWRDaGFuZ2UgKGl0J3MgdXNl
ZCBieSBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCgpKS4KICAgICBpZiAobV9zdHlsZS0+
b3V0bGluZVdpZHRoKCkgPiAwICYmIG1fc3R5bGUtPm91dGxpbmVTaXplKCkgPiBtYXhpbWFsT3V0
bGluZVNpemUoUGFpbnRQaGFzZU91dGxpbmUpKQpAQCAtMjA5Niw2ICsyMTAxLDE0IEBAIHZvaWQg
UmVuZGVyT2JqZWN0Ojp1cGRhdGVJbWFnZShTdHlsZUltYWdlKiBvbGRJbWFnZSwgU3R5bGVJbWFn
ZSogbmV3SW1hZ2UpCiAgICAgfQogfQogCisjaWYgRU5BQkxFKENTU19TSEFQRVMpCit2b2lkIFJl
bmRlck9iamVjdDo6dXBkYXRlU2hhcGVJbWFnZShjb25zdCBTaGFwZVZhbHVlKiBvbGRTaGFwZVZh
bHVlLCBjb25zdCBTaGFwZVZhbHVlKiBuZXdTaGFwZVZhbHVlKQoreworICAgIGlmIChvbGRTaGFw
ZVZhbHVlIHx8IG5ld1NoYXBlVmFsdWUpCisgICAgICAgIHVwZGF0ZUltYWdlKG9sZFNoYXBlVmFs
dWUgPyBvbGRTaGFwZVZhbHVlLT5pbWFnZSgpIDogMCwgbmV3U2hhcGVWYWx1ZSA/IG5ld1NoYXBl
VmFsdWUtPmltYWdlKCkgOiAwKTsKK30KKyNlbmRpZgorCiBMYXlvdXRSZWN0IFJlbmRlck9iamVj
dDo6dmlld1JlY3QoKSBjb25zdAogewogICAgIHJldHVybiB2aWV3KCktPnZpZXdSZWN0KCk7CkBA
IC0yNjEyLDYgKzI2MjUsMTQgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OmRlc3Ryb3koKQogICAgIGFy
ZW5hRGVsZXRlKHJlbmRlckFyZW5hKCksIHRoaXMpOwogfQogCitzdGF0aWMgaW5saW5lIHZvaWQg
cmVtb3ZlU2hhcGVJbWFnZUNsaWVudChSZW5kZXJPYmplY3QgKnRoaXNSZW5kZXJPYmplY3QsIFNo
YXBlVmFsdWUqIHNoYXBlVmFsdWUpCit7CisgICAgaWYgKCFzaGFwZVZhbHVlKQorICAgICAgICBy
ZXR1cm47CisgICAgaWYgKFN0eWxlSW1hZ2UqIHNoYXBlSW1hZ2UgPSBzaGFwZVZhbHVlLT5pbWFn
ZSgpKQorICAgICAgICBzaGFwZUltYWdlLT5yZW1vdmVDbGllbnQodGhpc1JlbmRlck9iamVjdCk7
Cit9CisKIHZvaWQgUmVuZGVyT2JqZWN0OjphcmVuYURlbGV0ZShSZW5kZXJBcmVuYSogYXJlbmEs
IHZvaWQqIGJhc2UpCiB7CiAgICAgaWYgKG1fc3R5bGUpIHsKQEAgLTI2MzAsNiArMjY1MSwxMSBA
QCB2b2lkIFJlbmRlck9iamVjdDo6YXJlbmFEZWxldGUoUmVuZGVyQXJlbmEqIGFyZW5hLCB2b2lk
KiBiYXNlKQogCiAgICAgICAgIGlmIChTdHlsZUltYWdlKiBtYXNrQm94SW1hZ2UgPSBtX3N0eWxl
LT5tYXNrQm94SW1hZ2UoKS5pbWFnZSgpKQogICAgICAgICAgICAgbWFza0JveEltYWdlLT5yZW1v
dmVDbGllbnQodGhpcyk7CisKKyNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKKyAgICAgICAgcmVtb3Zl
U2hhcGVJbWFnZUNsaWVudCh0aGlzLCBtX3N0eWxlLT5zaGFwZUluc2lkZSgpKTsKKyAgICAgICAg
cmVtb3ZlU2hhcGVJbWFnZUNsaWVudCh0aGlzLCBtX3N0eWxlLT5zaGFwZU91dHNpZGUoKSk7Cisj
ZW5kaWYKICAgICB9CiAKICNpZm5kZWYgTkRFQlVHCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmgKaW5kZXggOTM1N2FjNS4uZmI4ODk0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuaApAQCAtNzAzLDYgKzcwMyw5IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgdXBkYXRlRmlsbEltYWdlcyhjb25zdCBGaWxsTGF5ZXIqLCBjb25zdCBGaWxsTGF5ZXIqKTsK
ICAgICB2b2lkIHVwZGF0ZUltYWdlKFN0eWxlSW1hZ2UqLCBTdHlsZUltYWdlKik7CisjaWYgRU5B
QkxFKENTU19TSEFQRVMpCisgICAgdm9pZCB1cGRhdGVTaGFwZUltYWdlKGNvbnN0IFNoYXBlVmFs
dWUqLCBjb25zdCBTaGFwZVZhbHVlKik7CisjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBwYWlu
dChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjBlY2ZjNjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNwcApAQCAtMCwwICsxLDE2MSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAg
ICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMK
KyAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorICogQ09QWVJJR0hUIEhPTERF
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULAorICogSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULAorICogU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRAorICogT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSYXN0ZXJTaGFwZS5oIgorCisjaW5jbHVk
ZSAiU2hhcGVJbnRlcnZhbC5oIgorI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworSW50UmVjdCBSYXN0ZXJTaGFwZUludGVydmFsczo6Ym91bmRzKCkg
Y29uc3QKK3sKKyAgICBpZiAoIW1fYm91bmRzKQorICAgICAgICBtX2JvdW5kcyA9IGFkb3B0UHRy
KG5ldyBJbnRSZWN0KG1fcmVnaW9uLmJvdW5kcygpKSk7CisgICAgcmV0dXJuICptX2JvdW5kczsK
K30KKwordm9pZCBSYXN0ZXJTaGFwZUludGVydmFsczo6YWRkSW50ZXJ2YWwoaW50IHksIGludCB4
MSwgaW50IHgyKQoreworICAgIG1fcmVnaW9uLnVuaXRlKFJlZ2lvbihJbnRSZWN0KHgxLCB5LCB4
MiAtIHgxLCAxKSkpOworICAgIG1fYm91bmRzLmNsZWFyKCk7Cit9CisKK3N0YXRpYyBpbmxpbmUg
SW50UmVjdCBhbGlnbmVkUmVjdChJbnRSZWN0IHIsIGludCB5MSwgaW50IHkyKQoreworICAgIHJl
dHVybiBJbnRSZWN0KHIueCgpLCB5MSwgci53aWR0aCgpLCB5MiAtIHkxKTsKK30KKwordm9pZCBS
YXN0ZXJTaGFwZUludGVydmFsczo6Z2V0SW50ZXJ2YWxzKGludCB5MSwgaW50IHkyLCBTZWdtZW50
TGlzdCYgcmVzdWx0KSBjb25zdAoreworICAgIEFTU0VSVCh5MiA+PSB5MSk7CisKKyAgICBJbnRS
ZWN0IGxpbmVSZWN0KGJvdW5kcygpLngoKSwgeTEsIGJvdW5kcygpLndpZHRoKCksIHkyIC0geTEp
OworICAgIFJlZ2lvbiBsaW5lUmVnaW9uKGxpbmVSZWN0KTsKKyAgICBsaW5lUmVnaW9uLmludGVy
c2VjdChtX3JlZ2lvbik7CisgICAgaWYgKGxpbmVSZWdpb24uaXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm47CisgICAgLy8gRklYTUU6IGlmIGxpbmVSZWdpb24uaXNSZWN0KCkgLi4gd2UncmUgZG9u
ZQorCisgICAgVmVjdG9yPEludFJlY3Q+IGxpbmVSZWN0cyA9IGxpbmVSZWdpb24ucmVjdHMoKTsg
Ly8gRklYTUU6IGFkZCBhIG5vbi1jb3B5aW5nIFJlZ2lvbjo6cmVjdHMoKSBtZXRob2QKKyAgICBB
U1NFUlQobGluZVJlY3RzLnNpemUoKSA+IDApOworCisgICAgUmVnaW9uIHNlZ21lbnRzUmVnaW9u
KGxpbmVSZWN0KTsKKyAgICBSZWdpb24gaW50ZXJ2YWxzUmVnaW9uOworCisgICAgaW50IGxpbmVZ
ID0gbGluZVJlY3RzWzBdLnkoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGluZVJl
Y3RzLnNpemUoKTsgaSsrKSB7CisgICAgICAgIGlmIChsaW5lUmVjdHNbaV0ueSgpICE9IGxpbmVZ
KSB7CisgICAgICAgICAgICBzZWdtZW50c1JlZ2lvbi5pbnRlcnNlY3QoaW50ZXJ2YWxzUmVnaW9u
KTsKKyAgICAgICAgICAgIGludGVydmFsc1JlZ2lvbiA9IFJlZ2lvbigpOyAvLyBGSVhNRTogYWRk
IGEgcmVnaW9uIGNsZWFyKCkgbWV0aG9kCisgICAgICAgIH0KKyAgICAgICAgaW50ZXJ2YWxzUmVn
aW9uLnVuaXRlKFJlZ2lvbihhbGlnbmVkUmVjdChsaW5lUmVjdHNbaV0sIHkxLCB5MikpKTsKKyAg
ICAgICAgbGluZVkgPSBsaW5lUmVjdHNbaV0ueSgpOworICAgIH0KKyAgICBpZiAoIWludGVydmFs
c1JlZ2lvbi5pc0VtcHR5KCkpCisgICAgICAgIHNlZ21lbnRzUmVnaW9uLmludGVyc2VjdChpbnRl
cnZhbHNSZWdpb24pOworCisgICAgVmVjdG9yPEludFJlY3Q+IHNlZ21lbnRSZWN0cyA9IHNlZ21l
bnRzUmVnaW9uLnJlY3RzKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNlZ21lbnRS
ZWN0cy5zaXplKCk7IGkrKykKKyAgICAgICAgcmVzdWx0LmFwcGVuZChMaW5lU2VnbWVudChzZWdt
ZW50UmVjdHNbaV0ueCgpLCBzZWdtZW50UmVjdHNbaV0ubWF4WCgpKSk7Cit9CisKK2NvbnN0IFJh
c3RlclNoYXBlSW50ZXJ2YWxzJiBSYXN0ZXJTaGFwZTo6bWFyZ2luSW50ZXJ2YWxzKCkgY29uc3QK
K3sKKyAgICBBU1NFUlQoc2hhcGVNYXJnaW4oKSA+PSAwKTsKKyAgICBpZiAoIXNoYXBlTWFyZ2lu
KCkpCisgICAgICAgIHJldHVybiAqbV9pbnRlcnZhbHM7CisKKyAgICAvLyBGSVhNRTogYWRkIHN1
cHBvcnQgZm9yIG5vbi16ZXJvIG1hcmdpbgorICAgIHJldHVybiAqbV9pbnRlcnZhbHM7Cit9CisK
K2NvbnN0IFJhc3RlclNoYXBlSW50ZXJ2YWxzJiBSYXN0ZXJTaGFwZTo6cGFkZGluZ0ludGVydmFs
cygpIGNvbnN0Cit7CisgICAgQVNTRVJUKHNoYXBlUGFkZGluZygpID49IDApOworICAgIGlmICgh
c2hhcGVQYWRkaW5nKCkpCisgICAgICAgIHJldHVybiAqbV9pbnRlcnZhbHM7CisKKyAgICAvLyBG
SVhNRTogYWRkIHN1cHBvcnQgZm9yIG5vbi16ZXJvIHBhZGRpbmcKKyAgICByZXR1cm4gKm1faW50
ZXJ2YWxzOworfQorCit2b2lkIFJhc3RlclNoYXBlOjpnZXRFeGNsdWRlZEludGVydmFscyhMYXlv
dXRVbml0IGxvZ2ljYWxUb3AsIExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgU2VnbWVudExpc3Qm
IHJlc3VsdCkgY29uc3QKK3sKKyAgICBjb25zdCBSYXN0ZXJTaGFwZUludGVydmFscyYgaW50ZXJ2
YWxzID0gbWFyZ2luSW50ZXJ2YWxzKCk7CisgICAgaWYgKGludGVydmFscy5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIGZsb2F0IHkxID0gbG9naWNhbFRvcDsKKyAgICBmbG9hdCB5
MiA9IGxvZ2ljYWxUb3AgKyBsb2dpY2FsSGVpZ2h0OworCisgICAgaWYgKHkyIDwgaW50ZXJ2YWxz
LmJvdW5kcygpLnkoKSB8fCB5MSA+PSBpbnRlcnZhbHMuYm91bmRzKCkubWF4WSgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBpbnRlcnZhbHMuZ2V0SW50ZXJ2YWxzKHkxLCB5MiwgcmVzdWx0KTsK
K30KKwordm9pZCBSYXN0ZXJTaGFwZTo6Z2V0SW5jbHVkZWRJbnRlcnZhbHMoTGF5b3V0VW5pdCBs
b2dpY2FsVG9wLCBMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIFNlZ21lbnRMaXN0JiByZXN1bHQp
IGNvbnN0Cit7CisgICAgY29uc3QgUmFzdGVyU2hhcGVJbnRlcnZhbHMmIGludGVydmFscyA9IHBh
ZGRpbmdJbnRlcnZhbHMoKTsKKyAgICBpZiAoaW50ZXJ2YWxzLmlzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgZmxvYXQgeTEgPSBsb2dpY2FsVG9wOworICAgIGZsb2F0IHkyID0gbG9n
aWNhbFRvcCArIGxvZ2ljYWxIZWlnaHQ7CisKKyAgICBpZiAoeTEgPCBpbnRlcnZhbHMuYm91bmRz
KCkueSgpIHx8IHkyID4gaW50ZXJ2YWxzLmJvdW5kcygpLm1heFkoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgaW50ZXJ2YWxzLmdldEludGVydmFscyh5MSwgeTIsIHJlc3VsdCk7Cit9CisKK2Jv
b2wgUmFzdGVyU2hhcGU6OmZpcnN0SW5jbHVkZWRJbnRlcnZhbExvZ2ljYWxUb3AoTGF5b3V0VW5p
dCBtaW5Mb2dpY2FsSW50ZXJ2YWxUb3AsIGNvbnN0IExheW91dFNpemUmIG1pbkxvZ2ljYWxJbnRl
cnZhbFNpemUsIExheW91dFVuaXQmIHJlc3VsdCkgY29uc3QKK3sKKyAgICBmbG9hdCBtaW5JbnRl
cnZhbFRvcCA9IG1pbkxvZ2ljYWxJbnRlcnZhbFRvcDsKKyAgICBmbG9hdCBtaW5JbnRlcnZhbEhl
aWdodCA9IG1pbkxvZ2ljYWxJbnRlcnZhbFNpemUuaGVpZ2h0KCk7CisgICAgZmxvYXQgbWluSW50
ZXJ2YWxXaWR0aCA9IG1pbkxvZ2ljYWxJbnRlcnZhbFNpemUud2lkdGgoKTsKKworICAgIGNvbnN0
IFJhc3RlclNoYXBlSW50ZXJ2YWxzJiBpbnRlcnZhbHMgPSBwYWRkaW5nSW50ZXJ2YWxzKCk7Cisg
ICAgaWYgKGludGVydmFscy5pc0VtcHR5KCkgfHwgbWluSW50ZXJ2YWxXaWR0aCA+IGludGVydmFs
cy5ib3VuZHMoKS53aWR0aCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBmbG9hdCBt
aW5ZID0gc3RkOjptYXg8ZmxvYXQ+KGludGVydmFscy5ib3VuZHMoKS55KCksIG1pbkludGVydmFs
VG9wKTsKKyAgICBmbG9hdCBtYXhZID0gbWluWSArIG1pbkludGVydmFsSGVpZ2h0OworCisgICAg
aWYgKG1heFkgPiBpbnRlcnZhbHMuYm91bmRzKCkubWF4WSgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICAvLyBGSVhNRTogY29tcGxldGUgdGhpcyBtZXRob2QKKyAgICByZXN1bHQgPSBt
aW5ZOworICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzRmNzE2ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuaApAQCAtMCwwICsxLDgwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAg
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscworICogICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MKKyAqIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisgKiBDT1BZUklH
SFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsCisgKiBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCisgKiBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VECisgKiBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBSYXN0ZXJTaGFwZV9oCisjZGVmaW5lIFJhc3RlclNoYXBlX2gKKwor
I2luY2x1ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1ZGUgIlJlZ2lvbi5oIgorI2luY2x1ZGUgIlNo
YXBlLmgiCisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUmFzdGVyU2hhcGVJbnRlcnZhbHMg
eworcHVibGljOgorICAgIFJhc3RlclNoYXBlSW50ZXJ2YWxzKCkgeyB9CisKKyAgICBJbnRSZWN0
IGJvdW5kcygpIGNvbnN0OworICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0ICB7IHJldHVybiBtX3Jl
Z2lvbi5pc0VtcHR5KCk7IH0KKyAgICB2b2lkIGFkZEludGVydmFsKGludCB5LCBpbnQgeDEsIGlu
dCB4Mik7CisgICAgdm9pZCBnZXRJbnRlcnZhbHMoaW50IHkxLCBpbnQgeTIsIFNlZ21lbnRMaXN0
JikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgUmVnaW9uIG1fcmVnaW9uOworICAgIG11dGFibGUg
T3duUHRyPEludFJlY3Q+IG1fYm91bmRzOyAvLyBDYWNoZWQgdmFsdWUgb2YgbV9yZWdpb24uYm91
bmRzKCkuCit9OworCitjbGFzcyBSYXN0ZXJTaGFwZSA6IHB1YmxpYyBTaGFwZSB7CisgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoUmFzdGVyU2hhcGUpOworcHVibGljOgorICAgIFJhc3RlclNoYXBl
KFBhc3NPd25QdHI8UmFzdGVyU2hhcGVJbnRlcnZhbHM+IGludGVydmFscykKKyAgICAgICAgOiBT
aGFwZSgpCisgICAgICAgICwgbV9pbnRlcnZhbHMoaW50ZXJ2YWxzKQorICAgIHsKKyAgICB9CisK
KyAgICB2aXJ0dWFsIExheW91dFJlY3Qgc2hhcGVNYXJnaW5Mb2dpY2FsQm91bmRpbmdCb3goKSBj
b25zdCBPVkVSUklERSB7IHJldHVybiBzdGF0aWNfY2FzdDxMYXlvdXRSZWN0PihtYXJnaW5JbnRl
cnZhbHMoKS5ib3VuZHMoKSk7IH0KKyAgICB2aXJ0dWFsIExheW91dFJlY3Qgc2hhcGVQYWRkaW5n
TG9naWNhbEJvdW5kaW5nQm94KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
TGF5b3V0UmVjdD4ocGFkZGluZ0ludGVydmFscygpLmJvdW5kcygpKTsgfQorICAgIHZpcnR1YWwg
Ym9vbCBpc0VtcHR5KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9pbnRlcnZhbHMtPmlzRW1w
dHkoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBnZXRFeGNsdWRlZEludGVydmFscyhMYXlvdXRVbml0
IGxvZ2ljYWxUb3AsIExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgU2VnbWVudExpc3QmKSBjb25z
dCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0SW5jbHVkZWRJbnRlcnZhbHMoTGF5b3V0
VW5pdCBsb2dpY2FsVG9wLCBMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIFNlZ21lbnRMaXN0Jikg
Y29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGZpcnN0SW5jbHVkZWRJbnRlcnZhbExv
Z2ljYWxUb3AoTGF5b3V0VW5pdCBtaW5Mb2dpY2FsSW50ZXJ2YWxUb3AsIGNvbnN0IExheW91dFNp
emUmIG1pbkxvZ2ljYWxJbnRlcnZhbFNpemUsIExheW91dFVuaXQmKSBjb25zdCBPVkVSUklERTsK
KworcHJpdmF0ZToKKyAgICBjb25zdCBSYXN0ZXJTaGFwZUludGVydmFscyYgbWFyZ2luSW50ZXJ2
YWxzKCkgY29uc3Q7CisgICAgY29uc3QgUmFzdGVyU2hhcGVJbnRlcnZhbHMmIHBhZGRpbmdJbnRl
cnZhbHMoKSBjb25zdDsKKworICAgIE93blB0cjxSYXN0ZXJTaGFwZUludGVydmFscz4gbV9pbnRl
cnZhbHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBSYXN0ZXJT
aGFwZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCmluZGV4IGI3
OTIwY2MuLmQ2MDhlYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFw
ZXMvU2hhcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUu
Y3BwCkBAIC0zMSw5ICszMSwxMiBAQAogI2luY2x1ZGUgIlNoYXBlLmgiCiAKICNpbmNsdWRlICJC
YXNpY1NoYXBlRnVuY3Rpb25zLmgiCisjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRl
ICJGbG9hdFNpemUuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUg
Ikxlbmd0aEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIlBvbHlnb25TaGFwZS5oIgorI2luY2x1ZGUg
IlJhc3RlclNoYXBlLmgiCiAjaW5jbHVkZSAiUmVjdGFuZ2xlU2hhcGUuaCIKICNpbmNsdWRlICJX
aW5kUnVsZS5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CkBAIC0xOTEsNCArMTk0LDU3
IEBAIFBhc3NPd25QdHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVTaGFwZShjb25zdCBCYXNpY1NoYXBl
KiBiYXNpY1NoYXBlLCBjb25zdCBMYXlvdXRTCiAgICAgcmV0dXJuIHNoYXBlLnJlbGVhc2UoKTsK
IH0KIAorUGFzc093blB0cjxTaGFwZT4gU2hhcGU6OmNyZWF0ZVNoYXBlKGNvbnN0IFN0eWxlSW1h
Z2UqIHN0eWxlSW1hZ2UsIGZsb2F0IHRocmVzaG9sZCwgY29uc3QgTGF5b3V0U2l6ZSYgbG9naWNh
bEJveFNpemUsIFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBMZW5ndGggbWFyZ2luLCBMZW5ndGgg
cGFkZGluZykKK3sKKyAgICAvLyBGSVhNRTogU2hvdWxkIGNsaXAgc2hhcGUgdG8gbG9naWNhbCBi
b3gKKyAgICBVTlVTRURfUEFSQU0obG9naWNhbEJveFNpemUpOworCisgICAgQVNTRVJUKHN0eWxl
SW1hZ2UgJiYgc3R5bGVJbWFnZS0+aXNDYWNoZWRJbWFnZSgpICYmIHN0eWxlSW1hZ2UtPmNhY2hl
ZEltYWdlKCkgJiYgc3R5bGVJbWFnZS0+Y2FjaGVkSW1hZ2UoKS0+aW1hZ2UoKSk7CisKKyAgICBJ
bWFnZSogaW1hZ2UgPSBzdHlsZUltYWdlLT5jYWNoZWRJbWFnZSgpLT5pbWFnZSgpOworICAgIEdy
YXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3RvciBpbWFnZUV4dHJhY3RvcihpbWFnZSwgR3Jh
cGhpY3NDb250ZXh0M0Q6Okh0bWxEb21Ob25lLCBmYWxzZSwgdHJ1ZSk7CisgICAgLy8gRklYTUU6
IGNsaXAgaW1hZ2Ugc2l6ZSB0byBMYXlvdXRTaXplIGhlcmUsIGFmdGVyIGRlYWxpbmcgd2l0aCB3
cml0aW5nLW1vZGUgdHJhbnNmb3JtLgorICAgIGludCBpbWFnZVdpZHRoID0gc3RhdGljX2Nhc3Q8
aW50PihpbWFnZUV4dHJhY3Rvci5pbWFnZVdpZHRoKCkpOworICAgIGludCBpbWFnZUhlaWdodCA9
IHN0YXRpY19jYXN0PGludD4oaW1hZ2VFeHRyYWN0b3IuaW1hZ2VIZWlnaHQoKSk7CisKKyAgICBW
ZWN0b3I8dWludDhfdD4gYWxwaGFQaXhlbHM7CisgICAgYm9vbCBwYWNrSW1hZ2VEYXRhT0sgPSBH
cmFwaGljc0NvbnRleHQzRDo6cGFja0ltYWdlRGF0YShpbWFnZSwgaW1hZ2VFeHRyYWN0b3IuaW1h
Z2VQaXhlbERhdGEoKSwKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0M0Q6OkFMUEhBLAorICAgICAg
ICBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwKKyAgICAgICAgZmFsc2UsIC8qIGZs
aXBZICovCisgICAgICAgIEdyYXBoaWNzQ29udGV4dDNEOjpBbHBoYURvTm90aGluZywKKyAgICAg
ICAgaW1hZ2VFeHRyYWN0b3IuaW1hZ2VTb3VyY2VGb3JtYXQoKSwKKyAgICAgICAgaW1hZ2VXaWR0
aCwKKyAgICAgICAgaW1hZ2VIZWlnaHQsCisgICAgICAgIGltYWdlRXh0cmFjdG9yLmltYWdlU291
cmNlVW5wYWNrQWxpZ25tZW50KCksCisgICAgICAgIGFscGhhUGl4ZWxzKTsKKworICAgIE93blB0
cjxSYXN0ZXJTaGFwZUludGVydmFscz4gaW50ZXJ2YWxzID0gYWRvcHRQdHIobmV3IFJhc3RlclNo
YXBlSW50ZXJ2YWxzKCkpOworICAgIHVpbnQ4X3QgYWxwaGFQaXhlbFRocmVzaG9sZCA9IHRocmVz
aG9sZCAqIDI1NTsKKworICAgIGlmIChwYWNrSW1hZ2VEYXRhT0spIHsKKyAgICAgICAgQVNTRVJU
KHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbWFnZVdpZHRoICogaW1hZ2VIZWlnaHQpID09IGFscGhh
UGl4ZWxzLnNpemUoKSk7CisgICAgICAgIC8vIEZJWE1FOiBmbGlwIGludGVydmFscyBwZXIgd3Jp
dGluZy1tb2RlCisgICAgICAgIGZvciAoaW50IHkgPSAwOyB5IDwgaW1hZ2VIZWlnaHQ7IHkrKykg
eworICAgICAgICAgICAgaW50IHN0YXJ0WCA9IC0xOworICAgICAgICAgICAgZm9yIChpbnQgeCA9
IDA7IHggPCBpbWFnZVdpZHRoOyB4KyspIHsKKyAgICAgICAgICAgICAgICB1aW50OF90IGFscGhh
ID0gYWxwaGFQaXhlbHNbeCArIHkgKiBpbWFnZVdpZHRoXTsKKyAgICAgICAgICAgICAgICBpZiAo
KHN0YXJ0WCA9PSAtMSkgJiYgYWxwaGEgPiBhbHBoYVBpeGVsVGhyZXNob2xkKSB7CisgICAgICAg
ICAgICAgICAgICAgIHN0YXJ0WCA9IHg7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzdGFy
dFggIT0gLTEgJiYgKGFscGhhIDw9IGFscGhhUGl4ZWxUaHJlc2hvbGQgfHwgeCA9PSBpbWFnZVdp
ZHRoIC0gMSkpIHsKKyAgICAgICAgICAgICAgICAgICAgaW50ZXJ2YWxzLT5hZGRJbnRlcnZhbCh5
LCBzdGFydFgsIHgpOworICAgICAgICAgICAgICAgICAgICBzdGFydFggPSAtMTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBPd25QdHI8
UmFzdGVyU2hhcGU+IHJhc3RlclNoYXBlID0gYWRvcHRQdHIobmV3IFJhc3RlclNoYXBlKGludGVy
dmFscy5yZWxlYXNlKCkpKTsKKyAgICByYXN0ZXJTaGFwZS0+bV93cml0aW5nTW9kZSA9IHdyaXRp
bmdNb2RlOworICAgIHJhc3RlclNoYXBlLT5tX21hcmdpbiA9IGZsb2F0VmFsdWVGb3JMZW5ndGgo
bWFyZ2luLCAwKTsKKyAgICByYXN0ZXJTaGFwZS0+bV9wYWRkaW5nID0gZmxvYXRWYWx1ZUZvckxl
bmd0aChwYWRkaW5nLCAwKTsKKworICAgIHJldHVybiByYXN0ZXJTaGFwZS5yZWxlYXNlKCk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zaGFwZXMvU2hhcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMv
U2hhcGUuaAppbmRleCAwZDllY2ZkLi5mNzc1ZTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3NoYXBlcy9TaGFwZS5oCkBAIC0zMiw2ICszMiw3IEBACiAKICNpbmNsdWRlICJCYXNpY1NoYXBl
cy5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKKyNpbmNsdWRlICJTdHlsZUltYWdlLmgiCiAj
aW5jbHVkZSAiV3JpdGluZ01vZGUuaCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTYwLDYgKzYxLDcgQEAgdHlwZWRlZiBWZWN0b3I8TGlu
ZVNlZ21lbnQ+IFNlZ21lbnRMaXN0OwogY2xhc3MgU2hhcGUgewogcHVibGljOgogICAgIHN0YXRp
YyBQYXNzT3duUHRyPFNoYXBlPiBjcmVhdGVTaGFwZShjb25zdCBCYXNpY1NoYXBlKiwgY29uc3Qg
TGF5b3V0U2l6ZSYgbG9naWNhbEJveFNpemUsIFdyaXRpbmdNb2RlLCBMZW5ndGggbWFyZ2luLCBM
ZW5ndGggcGFkZGluZyk7CisgICAgc3RhdGljIFBhc3NPd25QdHI8U2hhcGU+IGNyZWF0ZVNoYXBl
KGNvbnN0IFN0eWxlSW1hZ2UqLCBmbG9hdCB0aHJlc2hvbGQsIGNvbnN0IExheW91dFNpemUmIGxv
Z2ljYWxCb3hTaXplLCBXcml0aW5nTW9kZSwgTGVuZ3RoIG1hcmdpbiwgTGVuZ3RoIHBhZGRpbmcp
OwogCiAgICAgdmlydHVhbCB+U2hhcGUoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3NoYXBlcy9TaGFwZUluZm8uY3BwCmluZGV4IGUxMTU1ODMuLmJmOTRlNDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVJbmZvLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW5mby5jcHAKQEAgLTQ1LDEyICs0
NSwyNiBAQCBjb25zdCBTaGFwZSogU2hhcGVJbmZvPFJlbmRlclR5cGUsIHNoYXBlR2V0dGVyLCBp
bnRlcnZhbEdldHRlcj46OmNvbXB1dGVkU2hhcGUoKQogICAgIGlmIChTaGFwZSogc2hhcGUgPSBt
X3NoYXBlLmdldCgpKQogICAgICAgICByZXR1cm4gc2hhcGU7CiAKLSAgICBTaGFwZVZhbHVlKiBz
aGFwZVZhbHVlID0gKG1fcmVuZGVyZXItPnN0eWxlKCktPipzaGFwZUdldHRlcikoKTsKLSAgICBC
YXNpY1NoYXBlKiBzaGFwZSA9IChzaGFwZVZhbHVlICYmIHNoYXBlVmFsdWUtPnR5cGUoKSA9PSBT
aGFwZVZhbHVlOjpTaGFwZSkgPyBzaGFwZVZhbHVlLT5zaGFwZSgpIDogMDsKKyAgICBjb25zdCBM
YXlvdXRTaXplIGxvZ2ljYWxCb3hTaXplKG1fc2hhcGVMb2dpY2FsV2lkdGgsIG1fc2hhcGVMb2dp
Y2FsSGVpZ2h0KTsKKyAgICBXcml0aW5nTW9kZSB3cml0aW5nTW9kZSA9IG1fcmVuZGVyZXItPnN0
eWxlKCktPndyaXRpbmdNb2RlKCk7CisgICAgTGVuZ3RoIG1hcmdpbiA9IG1fcmVuZGVyZXItPnN0
eWxlKCktPnNoYXBlTWFyZ2luKCk7CisgICAgTGVuZ3RoIHBhZGRpbmcgPSBtX3JlbmRlcmVyLT5z
dHlsZSgpLT5zaGFwZVBhZGRpbmcoKTsKKyAgICBjb25zdCBTaGFwZVZhbHVlKiBzaGFwZVZhbHVl
ID0gKG1fcmVuZGVyZXItPnN0eWxlKCktPipzaGFwZUdldHRlcikoKTsKKyAgICBBU1NFUlQoc2hh
cGVWYWx1ZSk7CiAKLSAgICBBU1NFUlQoc2hhcGUpOworICAgIHN3aXRjaCAoc2hhcGVWYWx1ZS0+
dHlwZSgpKSB7CisgICAgY2FzZSBTaGFwZVZhbHVlOjpTaGFwZToKKyAgICAgICAgQVNTRVJUKHNo
YXBlVmFsdWUtPnNoYXBlKCkpOworICAgICAgICBtX3NoYXBlID0gU2hhcGU6OmNyZWF0ZVNoYXBl
KHNoYXBlVmFsdWUtPnNoYXBlKCksIGxvZ2ljYWxCb3hTaXplLCB3cml0aW5nTW9kZSwgbWFyZ2lu
LCBwYWRkaW5nKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTaGFwZVZhbHVlOjpJbWFnZToK
KyAgICAgICAgQVNTRVJUKHNoYXBlVmFsdWUtPmltYWdlKCkpOworICAgICAgICBtX3NoYXBlID0g
U2hhcGU6OmNyZWF0ZVNoYXBlKHNoYXBlVmFsdWUtPmltYWdlKCksIDAsIGxvZ2ljYWxCb3hTaXpl
LCB3cml0aW5nTW9kZSwgbWFyZ2luLCBwYWRkaW5nKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVm
YXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQogCi0gICAgbV9zaGFw
ZSA9IFNoYXBlOjpjcmVhdGVTaGFwZShzaGFwZSwgTGF5b3V0U2l6ZShtX3NoYXBlTG9naWNhbFdp
ZHRoLCBtX3NoYXBlTG9naWNhbEhlaWdodCksIG1fcmVuZGVyZXItPnN0eWxlKCktPndyaXRpbmdN
b2RlKCksIG1fcmVuZGVyZXItPnN0eWxlKCktPnNoYXBlTWFyZ2luKCksIG1fcmVuZGVyZXItPnN0
eWxlKCktPnNoYXBlUGFkZGluZygpKTsKICAgICBBU1NFUlQobV9zaGFwZSk7CiAgICAgcmV0dXJu
IG1fc2hhcGUuZ2V0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c2hhcGVzL1NoYXBlSW5zaWRlSW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hh
cGVzL1NoYXBlSW5zaWRlSW5mby5jcHAKaW5kZXggZDEyOTVkMC4uMWM4ZTExMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUluc2lkZUluZm8uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVJbnNpZGVJbmZvLmNwcApA
QCAtNDYsMTEgKzQ2LDE3IEBAIExpbmVTZWdtZW50UmFuZ2U6OkxpbmVTZWdtZW50UmFuZ2UoY29u
c3QgSW5saW5lSXRlcmF0b3ImIHN0YXJ0LCBjb25zdCBJbmxpbmVJdGVyCiBib29sIFNoYXBlSW5z
aWRlSW5mbzo6aXNFbmFibGVkRm9yKGNvbnN0IFJlbmRlckJsb2NrKiByZW5kZXJlcikKIHsKICAg
ICBTaGFwZVZhbHVlKiBzaGFwZVZhbHVlID0gcmVuZGVyZXItPnN0eWxlKCktPnJlc29sdmVkU2hh
cGVJbnNpZGUoKTsKLSAgICBpZiAoIXNoYXBlVmFsdWUgfHwgc2hhcGVWYWx1ZS0+dHlwZSgpICE9
IFNoYXBlVmFsdWU6OlNoYXBlKQorICAgIGlmICghc2hhcGVWYWx1ZSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgQmFzaWNTaGFwZSogc2hhcGUgPSBzaGFwZVZhbHVlLT5zaGFwZSgpOwot
ICAgIHJldHVybiBzaGFwZSAmJiBzaGFwZS0+dHlwZSgpICE9IEJhc2ljU2hhcGU6OkJhc2ljU2hh
cGVJbnNldFJlY3RhbmdsZVR5cGU7CisgICAgc3dpdGNoIChzaGFwZVZhbHVlLT50eXBlKCkpIHsK
KyAgICBjYXNlIFNoYXBlVmFsdWU6OlNoYXBlOgorICAgICAgICByZXR1cm4gc2hhcGVWYWx1ZS0+
c2hhcGUoKSAmJiBzaGFwZVZhbHVlLT5zaGFwZSgpLT50eXBlKCkgIT0gQmFzaWNTaGFwZTo6QmFz
aWNTaGFwZUluc2V0UmVjdGFuZ2xlVHlwZTsKKyAgICBjYXNlIFNoYXBlVmFsdWU6OkltYWdlOgor
ICAgICAgICByZXR1cm4gc2hhcGVWYWx1ZS0+aXNJbWFnZVZhbGlkKCk7CisgICAgZGVmYXVsdDoK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KIH0KIAogYm9vbCBTaGFwZUluc2lkZUluZm86
OmFkanVzdExvZ2ljYWxMaW5lVG9wKGZsb2F0IG1pblNlZ21lbnRXaWR0aCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uY3BwCmluZGV4
IGUxOTJmNjUuLmYxMmVkNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
aGFwZXMvU2hhcGVPdXRzaWRlSW5mby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmNwcApAQCAtMzgsOCArMzgsMTggQEAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGJvb2wgU2hhcGVPdXRzaWRlSW5mbzo6aXNFbmFibGVkRm9yKGNvbnN0IFJl
bmRlckJveCogYm94KQogewotICAgIFNoYXBlVmFsdWUqIHZhbHVlID0gYm94LT5zdHlsZSgpLT5z
aGFwZU91dHNpZGUoKTsKLSAgICByZXR1cm4gYm94LT5pc0Zsb2F0aW5nV2l0aFNoYXBlT3V0c2lk
ZSgpICYmIHZhbHVlLT50eXBlKCkgPT0gU2hhcGVWYWx1ZTo6U2hhcGUgJiYgdmFsdWUtPnNoYXBl
KCk7CisgICAgU2hhcGVWYWx1ZSogc2hhcGVWYWx1ZSA9IGJveC0+c3R5bGUoKS0+c2hhcGVPdXRz
aWRlKCk7CisgICAgaWYgKCFib3gtPmlzRmxvYXRpbmdXaXRoU2hhcGVPdXRzaWRlKCkgfHwgIXNo
YXBlVmFsdWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHN3aXRjaCAoc2hhcGVWYWx1
ZS0+dHlwZSgpKSB7CisgICAgY2FzZSBTaGFwZVZhbHVlOjpTaGFwZToKKyAgICAgICAgcmV0dXJu
IHNoYXBlVmFsdWUtPnNoYXBlKCk7CisgICAgY2FzZSBTaGFwZVZhbHVlOjpJbWFnZToKKyAgICAg
ICAgcmV0dXJuIHNoYXBlVmFsdWUtPmlzSW1hZ2VWYWxpZCgpOworICAgIGRlZmF1bHQ6CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiB9CiAKIGJvb2wgU2hhcGVPdXRzaWRlSW5mbzo6Y29t
cHV0ZVNlZ21lbnRzRm9yTGluZShMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUhl
aWdodCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFwZVZh
bHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhcGVWYWx1ZS5oCmluZGV4
IDY3NGFlZWIuLjBiN2RkZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TaGFwZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1No
YXBlVmFsdWUuaApAQCAtMzEsNiArMzEsNyBAQAogI2RlZmluZSBTaGFwZVZhbHVlX2gKIAogI2lu
Y2x1ZGUgIkJhc2ljU2hhcGVzLmgiCisjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRl
ICJTdHlsZUltYWdlLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIApAQCAtNjIsNyAr
NjMsOSBAQCBwdWJsaWM6CiAKICAgICBTaGFwZVZhbHVlVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1
cm4gbV90eXBlOyB9CiAgICAgQmFzaWNTaGFwZSogc2hhcGUoKSBjb25zdCB7IHJldHVybiBtX3No
YXBlLmdldCgpOyB9CisKICAgICBTdHlsZUltYWdlKiBpbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1f
aW1hZ2UuZ2V0KCk7IH0KKyAgICBib29sIGlzSW1hZ2VWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIGlt
YWdlKCkgJiYgaW1hZ2UoKS0+Y2FjaGVkSW1hZ2UoKSAmJiBpbWFnZSgpLT5jYWNoZWRJbWFnZSgp
LT5oYXNJbWFnZSgpOyB9CiAgICAgdm9pZCBzZXRJbWFnZShQYXNzUmVmUHRyPFN0eWxlSW1hZ2U+
IGltYWdlKQogICAgIHsKICAgICAgICAgaWYgKG1faW1hZ2UgIT0gaW1hZ2UpCg==
</data>
<flag name="review"
          id="225793"
          type_id="1"
          status="-"
          setter="achicu"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>204371</attachid>
            <date>2013-06-11 16:59:04 -0700</date>
            <delta_ts>2013-06-11 17:10:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>tmp.patch</filename>
            <type>text/plain</type>
            <size>39373</size>
            <attacher name="Hans Muller">giles_joplin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhMDMzNTdmLi44MDM0YzExIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTMtMDYt
MTAgIEhhbnMgTXVsbGVyICA8aG11bGxlckBhZG9iZS5jb20+CisKKyAgICAgICAgW0NTUyBFeGNs
dXNpb25zXSBNaW5pbWFsIHN1cHBvcnQgZm9yIHVzaW5nIGFuIGltYWdlIHRvIGRlZmluZSBhIHNo
YXBlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTY2
NDMKKworICAgICAgICBPbmUgdGVzdCB0byB2ZXJpZnkgdGhhdCB0aGUgaW5pdGlhbCBpbXBsZW1l
bnRhdGlvbiBvZiBzaGFwZSB2YWx1ZWQgaW1hZ2VzIGlzIHdvcmtpbmcKKyAgICAgICAgZm9yIHNo
YXBlLWluc2lkZS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGZhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAw
MS1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V4Y2x1c2lvbnMvc2hhcGUt
aW5zaWRlL3NoYXBlLWluc2lkZS1pbWFnZS0wMDEuaHRtbDogQWRkZWQuCisKIDIwMTMtMDYtMTEg
IE1paG5lYSBPdmlkZW5pZSAgPG1paG5lYUBhZG9iZS5jb20+CiAKICAgICAgICAgW1F0XVtFRkxd
W0dUS11mYXN0L3JlZ2lvbnMvb3ZlcmZsb3ctc2l6ZS1jaGFuZ2Utd2l0aC1zdGFja2luZy1jb250
ZXh0LXJ0bC5odG1sIGZhaWxzIGFmdGVyIHIxNTEyMDIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAwMS1leHBl
Y3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFw
ZS1pbnNpZGUtaW1hZ2UtMDAxLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uMmFlZDIzNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAwMS1leHBlY3RlZC5o
dG1sCkBAIC0wLDAgKzEsMjggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxz
Y3JpcHQ+CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIHdpbmRvdy5pbnRlcm5h
bHMuc2V0dGluZ3Muc2V0Q1NTU2hhcGVzRW5hYmxlZCh0cnVlKTsKKzwvc2NyaXB0PgorPHN0eWxl
PgorICAgICNpbWFnZS1zaGFwZSB7CisgICAgICAgIGJvcmRlcjogc29saWQgYmxhY2sgMXB4Owor
ICAgICAgICBmb250OiAxMnB4LzEgQWhlbSwgc2Fucy1zZXJpZjsKKyAgICAgICAgcGFkZGluZzog
NHB4OworICAgICAgICBjb2xvcjogZ3JlZW47CisgICAgICAgIHdpZHRoOiAyNHB4OworICAgICAg
ICBoZWlnaHQ6IDI0cHg7CisgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFn
ZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFnQ0FZQUFBQnplbnIw
QUFBQVNrbEVRVlJZQ2UzWElRNEFNQWhEMFhYaC9sZnVNa2VDSmpVZmhTdDVZSkR0azZ5YkRQL1pE
RkJqQmRMdVVkanFtYXdBQVFRUVFBQUJCQkJBQUFFRTRnTGlOK3hmU3FLUDM4QUR1UU1KTzZMTmJy
NEFBQUFBU1VWT1JLNUNZSUk9Iik7CisgICAgICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBl
YXQ7CisgICAgfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICA8cCBpZD0iaW5mb3JtYXRp
dmUtdGV4dCI+CisgICAgICBUaGlzIHRlc3QgcmVxdWlyZXMgdGhlIEFoZW0gZm9udC4gSXQgdXNl
cyBhIDMyeDMyIFBORyBpbWFnZSB3aXRoIGEgMjR4MjQgcmVkIHNxdWFyZSBpbiB0aGUgY2VudGVy
CisgICAgICB0byBkZWZpbmUgYSBzaGFwZS1pbnNpZGUuIFRoZSBjb250ZW50IHNob3VsZCBqdXN0
IGNvdmVyIHRoZSBzaGFwZSB3aXRoIHNvbGlkIGdyZWVuLjwvcD4KKworICA8ZGl2IGlkPSJpbWFn
ZS1zaGFwZSI+WFg8YnIvPlhYPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1pbWFn
ZS0wMDEuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hh
cGUtaW5zaWRlLWltYWdlLTAwMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjQ2ZWM3YjEyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNp
b25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtaW1hZ2UtMDAxLmh0bWwKQEAgLTAsMCArMSwy
NSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorICAgICNpbWFn
ZS1zaGFwZSB7CisgICAgICAgIGJvcmRlcjogc29saWQgYmxhY2sgMXB4OworICAgICAgICBmb250
OiAxMnB4LzEgQWhlbSwgc2Fucy1zZXJpZjsKKyAgICAgICAgY29sb3I6IGdyZWVuOworICAgICAg
ICB3aWR0aDogMzJweDsKKyAgICAgICAgaGVpZ2h0OiAzMnB4OworICAgICAgICAtd2Via2l0LXNo
YXBlLWluc2lkZTogdXJsKCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNV
aEVVZ0FBQUNBQUFBQWdDQVlBQUFCemVucjBBQUFBU2tsRVFWUllDZTNYSVE0QU1BaEQwWFhoL2xm
dU1rZUNKalVmaFN0NVlKRHRrNnliRFAvWkRGQmpCZEx1VWRqcW1hd0FBUVFRUUFBQkJCQkFBQUVF
NGdMaU4reGZTcUtQMzhBRHVRTUpPNkxOYnI0QUFBQUFTVVZPUks1Q1lJST0iKTsKKyAgICAgICAg
LXdlYmtpdC1zaGFwZS1pbWFnZS10aHJlc2hvbGQ6IDA7CisgICAgICAgIGJhY2tncm91bmQtaW1h
Z2U6IHVybCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFD
QUFBQUFnQ0FZQUFBQnplbnIwQUFBQVNrbEVRVlJZQ2UzWElRNEFNQWhEMFhYaC9sZnVNa2VDSmpV
ZmhTdDVZSkR0azZ5YkRQL1pERkJqQmRMdVVkanFtYXdBQVFRUVFBQUJCQkJBQUFFRTRnTGlOK3hm
U3FLUDM4QUR1UU1KTzZMTmJyNEFBQUFBU1VWT1JLNUNZSUk9Iik7CisgICAgICAgIGJhY2tncm91
bmQtcmVwZWF0OiBuby1yZXBlYXQ7CisgICAgfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5Pgor
ICA8cCBpZD0iaW5mb3JtYXRpdmUtdGV4dCI+CisgICAgICBUaGlzIHRlc3QgcmVxdWlyZXMgdGhl
IEFoZW0gZm9udC4gSXQgdXNlcyBhIDMyeDMyIFBORyBpbWFnZSB3aXRoIGEgMjR4MjQgcmVkIHNx
dWFyZSBpbiB0aGUgY2VudGVyCisgICAgICB0byBkZWZpbmUgYSBzaGFwZS1pbnNpZGUuIFRoZSBj
b250ZW50IHNob3VsZCBqdXN0IGNvdmVyIHRoZSBzaGFwZSB3aXRoIHNvbGlkIGdyZWVuLjwvcD4K
KworICA8ZGl2IGlkPSJpbWFnZS1zaGFwZSI+WFggWFg8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hh
cGUtaW5zaWRlLWltYWdlLTAwMi1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNs
dXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtaW1hZ2UtMDAyLWV4cGVjdGVkLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWE1M2ZlOAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5z
aWRlLWltYWdlLTAwMi1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMjEgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KKyAgICAjaW1hZ2Utc2hhcGUgeworICAgICAg
ICBmb250OiAxMnB4LzEgQWhlbSwgc2Fucy1zZXJpZjsKKyAgICAgICAgY29sb3I6IGdyZWVuOwor
ICAgICAgICB3aWR0aDogMjRweDsKKyAgICAgICAgaGVpZ2h0OiAyNHB4OworICAgICAgICBiYWNr
Z3JvdW5kLWltYWdlOiB1cmwoImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFO
U1VoRVVnQUFBQ0FBQUFBZ0NBWUFBQUJ6ZW5yMEFBQUFSRWxFUVZSWUNlM1hzUTBBSUFnRVFISC9u
VjhuMEFwdGp0Q1JFSEkwVUJsaloyTWtkZW8rVDhVWE5RTVFJRUNBQUFFQ0JBZ1FJRkJKNzF0d08r
MnRnQUNCN3dJTG9JOEhPYU9tekZzQUFBQUFTVVZPUks1Q1lJST0iKTsKKyAgICAgICAgYmFja2dy
b3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKKyAgICB9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+
CisgIDxwIGlkPSJpbmZvcm1hdGl2ZS10ZXh0Ij4KKyAgICAgIFRoaXMgdGVzdCByZXF1aXJlcyB0
aGUgQWhlbSBmb250LiBJdCB1c2VzIGEgMjR4MjQgc3F1YXJlIFBORyBpbWFnZSB3aGVyZSBhbGwg
cGl4ZWxzIGFyZSByZWQsCisgICAgICB0byBkZWZpbmUgYSBzaGFwZS1pbnNpZGUuIFRoZSBjb250
ZW50IHNob3VsZCBqdXN0IGNvdmVyIHRoZSBzaGFwZSB3aXRoIHNvbGlkIGdyZWVuLjwvcD4KKyAg
PGRpdiBpZD0iaW1hZ2Utc2hhcGUiPlhYPGJyLz5YWDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFw
ZS1pbnNpZGUtaW1hZ2UtMDAyLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hh
cGUtaW5zaWRlL3NoYXBlLWluc2lkZS1pbWFnZS0wMDIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi4wNzk4NGUwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtaW1hZ2UtMDAyLmh0bWwK
QEAgLTAsMCArMSwyNCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxl
PgorICAgICNpbWFnZS1zaGFwZSB7CisgICAgICAgIGZvbnQ6IDEycHgvMSBBaGVtLCBzYW5zLXNl
cmlmOworICAgICAgICBjb2xvcjogZ3JlZW47CisgICAgICAgIHdpZHRoOiAyNHB4OworICAgICAg
ICBoZWlnaHQ6IDI0cHg7CisgICAgICAgIC13ZWJraXQtc2hhcGUtaW5zaWRlOiB1cmwoImRhdGE6
aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZ0NBWUFBQUJ6
ZW5yMEFBQUFSRWxFUVZSWUNlM1hzUTBBSUFnRVFISC9uVjhuMEFwdGp0Q1JFSEkwVUJsaloyTWtk
ZW8rVDhVWE5RTVFJRUNBQUFFQ0JBZ1FJRkJKNzF0d08rMnRnQUNCN3dJTG9JOEhPYU9tekZzQUFB
QUFTVVZPUks1Q1lJST0iKTsKKyAgICAgICAgLXdlYmtpdC1zaGFwZS1pbWFnZS10aHJlc2hvbGQ6
IDA7CisgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0
LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFnQ0FZQUFBQnplbnIwQUFBQVJFbEVRVlJZ
Q2UzWHNRMEFJQWdFUUhIL25WOG4wQXB0anRDUkVISTBVQmxqWjJNa2RlbytUOFVYTlFNUUlFQ0FB
QUVDQkFnUUlGQko3MXR3TysydGdBQ0I3d0lMb0k4SE9hT216RnNBQUFBQVNVVk9SSzVDWUlJPSIp
OworICAgICAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OworICAgIH0KKzwvc3R5bGU+
Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPHAgaWQ9ImluZm9ybWF0aXZlLXRleHQiPgorICAgICAgVGhp
cyB0ZXN0IHJlcXVpcmVzIHRoZSBBaGVtIGZvbnQuIEl0IHVzZXMgYSAyNHgyNCBzcXVhcmUgUE5H
IGltYWdlIHdoZXJlIGFsbCBwaXhlbHMgYXJlIHJlZCwKKyAgICAgIHRvIGRlZmluZSBhIHNoYXBl
LWluc2lkZS4gVGhlIGNvbnRlbnQgc2hvdWxkIGp1c3QgY292ZXIgdGhlIHNoYXBlIHdpdGggc29s
aWQgZ3JlZW4uPC9wPgorCisgIDxkaXYgaWQ9ImltYWdlLXNoYXBlIj5YWCBYWDwvZGl2PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQg
Yi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA3ODVhNmE3Li41Y2UyMzkzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMjIwOSw2ICsyMjA5LDcgQEAgc2V0KFdlYkNvcmVfU09V
UkNFUwogICAgIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmNwcAogCiAg
ICAgcmVuZGVyaW5nL3NoYXBlcy9Qb2x5Z29uU2hhcGUuY3BwCisgICAgcmVuZGVyaW5nL3NoYXBl
cy9SYXN0ZXJTaGFwZS5jcHAKICAgICByZW5kZXJpbmcvc2hhcGVzL1JlY3RhbmdsZVNoYXBlLmNw
cAogICAgIHJlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCiAgICAgcmVuZGVyaW5nL3NoYXBlcy9T
aGFwZUluZm8uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2YwZDYwNi4uNWY1MDI4ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDYyIEBACisyMDEzLTA2LTEwICBIYW5zIE11bGxlciAgPGhtdWxsZXJAYWRvYmUu
Y29tPgorCisgICAgICAgIFtDU1MgRXhjbHVzaW9uc10gTWluaW1hbCBzdXBwb3J0IGZvciB1c2lu
ZyBhbiBpbWFnZSB0byBkZWZpbmUgYSBzaGFwZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE2NjQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBhIGZpcnN0IHNtYWxsIHN0ZXAgdG93YXJkcyBz
dXBwb3J0aW5nIENTUyBzaGFwZXMgZGVmaW5lZCBieSBhbgorICAgICAgICBpbWFnZSBVUkwgYW5k
IGEgYWxwaGEgY2hhbm5lbCB0aHJlc2hvbGQuIFRvIGtlZXAgdGhlIHBhdGNoIGFzIHNtYWxsIGFz
CisgICAgICAgIHBvc3NpYmxlLCB0aGVyZSBhcmUgbWFueSBsaW1pdGF0aW9uczoKKyAgICAgICAg
LSBJbWFnZSBzaGFwZSB2YWx1ZXMgY2FuIG9ubHkgYmUgdXNlZCB3aXRoIHNoYXBlLWluc2lkZSAo
bm90IHNoYXBlLW91dHNpZGUpLgorICAgICAgICAtIFRoZSBDU1Mgc2hhcGUtaW1hZ2UtdGhyZXNo
b2xkIHByb3BlcnR5IGlzbid0IHN1cHBvcnRlZCwgY3VycmVudGx5IHRoZSB0aHJlc2hvbGQgaXMg
YWx3YXlzIDAuCisgICAgICAgIC0gVGhlIFJhc3RlclNoYXBlIGludGVybmFsIHJlcHJlc2VudGF0
aW9uIG9mIGFuIGltYWdlIHNoYXBlIHNob3VsZCBiZSBtb3JlIGVmZmljaWVudC4KKyAgICAgICAg
LSBHSUZzIGFyZW4ndCBzdXBwb3J0ZWQgY29ycmVjdGx5LCBvbmx5IGZyYW1lMCBzaG91bGQgYmUg
dXNlZC4KKyAgICAgICAgLSBUaGUgZmlyc3QgbGF5b3V0IHBvc2l0aW9uIGlzbid0IGNvbXB1dGVk
LCBpdCdzIGFzc3VtZWQgdGhhdCBsYXlvdXQgY2FuIGJlZ2luIGF0IHRoZSB0b3Agb2YgdGhlIHNo
YXBlLgorICAgICAgICAtIFRoZXJlJ3Mgbm8gc3VwcG9ydCBmb3Igc2hhcGUtbWFyZ2luIGFuZCBz
aGFwZS1wYWRkaW5nLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNp
ZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAwMS5odG1sCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFRhcmdldC5wcmk6
CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvajoKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjppbWFnZUNoYW5n
ZWQpOiBXaGVuIHRoZSBpbWFnZSBoYXMgZmluaXNoZWQgbG9hZGluZywgcmVxdWVzdCBhIGxheW91
dC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6c2V0
U3R5bGUpOiBBZGQgbm90aWZ5IGNsaWVudHMgZm9yIHNoYXBlIGltYWdlcy4KKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlck9iamVjdDo6dXBkYXRlU2hhcGVJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpyZW1vdmVTaGFwZUltYWdlQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVj
dDo6YXJlbmFEZWxldGUpOiBSZW1vdmUgbm90aWZ5IGNsaWVudHMgZm9yIHNoYXBlIGltYWdlcy4K
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAgICogcmVuZGVyaW5n
L3NoYXBlcy9SYXN0ZXJTaGFwZS5jcHA6IEFkZGVkLiBBIFNoYXBlIGRlZmluZWQgYnkgdGhyZXNo
b2xkaW5nIGFuIGltYWdlJ3MgYWxwaGEgY2hhbm5lbC4KKyAgICAgICAgKFdlYkNvcmU6OlJhc3Rl
clNoYXBlSW50ZXJ2YWxzOjpib3VuZHMpOgorICAgICAgICAoV2ViQ29yZTo6UmFzdGVyU2hhcGVJ
bnRlcnZhbHM6OmFkZEludGVydmFsKTogQWRkIGEgc2luZ2xlIHJ1biB0byB0aGUgc2hhcGUuCisg
ICAgICAgIChXZWJDb3JlOjphbGlnbmVkUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSYXN0ZXJT
aGFwZUludGVydmFsczo6Z2V0SW50ZXJ2YWxzKTogUmV0dXJuIHRoZSBzaGFwZSdzIHJ1bnMgdGhh
dCBmYWxsIHdpdGhpbiBhIGhvcml6b25hbCBib3guCisgICAgICAgIChXZWJDb3JlOjpSYXN0ZXJT
aGFwZTo6bWFyZ2luSW50ZXJ2YWxzKTogSW50ZXJuYWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIHNo
YXBlIHdpdGggc2hhcGUtbWFyZ2luIGZhY3RvcmVkIGluLiAgQ3VycmVudGx5IG9ubHkgYSBzdHVi
LgorICAgICAgICAoV2ViQ29yZTo6UmFzdGVyU2hhcGU6OnBhZGRpbmdJbnRlcnZhbHMpOiBJbnRl
cm5hbCByZXByZXNlbnRhdGlvbiBvZiB0aGUgc2hhcGUgd2l0aCBzaGFwZS1wYWRkaW5nIGZhY3Rv
cmVkIGluLiAgQ3VycmVudGx5IG9ubHkgYSBzdHViLgorICAgICAgICAoV2ViQ29yZTo6UmFzdGVy
U2hhcGU6OmdldEV4Y2x1ZGVkSW50ZXJ2YWxzKToKKyAgICAgICAgKFdlYkNvcmU6OlJhc3RlclNo
YXBlOjpnZXRJbmNsdWRlZEludGVydmFscyk6CisgICAgICAgIChXZWJDb3JlOjpSYXN0ZXJTaGFw
ZTo6Zmlyc3RJbmNsdWRlZEludGVydmFsTG9naWNhbFRvcCk6CisgICAgICAgICogcmVuZGVyaW5n
L3NoYXBlcy9SYXN0ZXJTaGFwZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmFzdGVyU2hhcGVJbnRl
cnZhbHM6OlJhc3RlclNoYXBlSW50ZXJ2YWxzKTogSW50ZXJuYWwgcnVuIGxlbmd0aCBlbmNvZGVk
IHJlcHJlc2VudGF0aW9uIG9mIGEgUmFzdGVyU2hhcGUuCisgICAgICAgIChXZWJDb3JlOjpSYXN0
ZXJTaGFwZUludGVydmFsczo6aXNFbXB0eSk6CisgICAgICAgIChXZWJDb3JlOjpSYXN0ZXJTaGFw
ZTo6UmFzdGVyU2hhcGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcGU6OmNyZWF0ZVNoYXBlKTogU3VwcG9ydCBmb3IgY3JlYXRp
bmcgYSBTaGFwZSBiYXNlZCBvbiBhIFJhc3RlclNoYXBlSW50ZXJ2YWxzIG9iamVjdC4KKyAgICAg
ICAgKiByZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmg6CisgICAgICAgICogcmVuZGVyaW5nL3NoYXBl
cy9TaGFwZUluZm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Ojpjb21wdXRlZFNoYXBlKTogQWRk
ZWQgc3VwcG9ydCBmb3IgdGhlIEltYWdlIFNoYXBlVmFsdWUgdHlwZS4KKyAgICAgICAgKiByZW5k
ZXJpbmcvc2hhcGVzL1NoYXBlSW5zaWRlSW5mby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFw
ZUluc2lkZUluZm86OmlzRW5hYmxlZEZvcik6IEFkZGVkIHN1cHBvcnQgZm9yIHRoZSBJbWFnZSBT
aGFwZVZhbHVlIHR5cGUuCisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJ
bmZvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXBlT3V0c2lkZUluZm86OmlzRW5hYmxlZEZv
cik6IEFkZGVkIHN1cHBvcnQgZm9yIHRoZSBJbWFnZSBTaGFwZVZhbHVlIHR5cGUuCisgICAgICAg
ICogcmVuZGVyaW5nL3N0eWxlL1NoYXBlVmFsdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXBl
VmFsdWU6OmlzSW1hZ2VWYWxpZCk6IFRydWUgaWYgdGhlIHNoYXBlJ3MgaW1hZ2UgaXMgcmVhZHkg
dG8gYmUgYmUgcHJvY2Vzc2VkLgorCiAyMDEzLTA2LTExICBDaHJpc3RvcGhlIER1bWV6ICA8Y2gu
ZHVtZXpAc2lzYS5zYW1zdW5nLmNvbT4KIAogICAgICAgICBTdXBwb3J0IGxhdGVzdCBXZWIgSURM
IG5hbWVkIHByb3BlcnR5IGdldHRlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4
IDc4YmQ2MTguLjQwMzNhZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNDYy
MSw2ICs0NjIxLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFVuZGVyT3Zlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc2hhcGVzL1BvbHlnb25TaGFwZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zaGFwZXMvUG9seWdvblNoYXBlLmggXAorCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
aGFwZXMvUmFzdGVyU2hhcGUuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVz
L1Jhc3RlclNoYXBlLmggXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmVjdGFu
Z2xlU2hhcGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1JlY3Rhbmds
ZVNoYXBlLmggXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9U
YXJnZXQucHJpCmluZGV4IDA3YmE4YmQuLjBkOTQ1MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtMTIzOSw2
ICsxMjM5LDcgQEAgU09VUkNFUyArPSBcCiAgICAgcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3Bw
IFwKICAgICByZW5kZXJpbmcvU2Nyb2xsQmVoYXZpb3IuY3BwIFwKICAgICByZW5kZXJpbmcvc2hh
cGVzL1BvbHlnb25TaGFwZS5jcHAgXAorICAgIHJlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUu
Y3BwIFwKICAgICByZW5kZXJpbmcvc2hhcGVzL1JlY3RhbmdsZVNoYXBlLmNwcCBcCiAgICAgcmVu
ZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAgXAogICAgIHJlbmRlcmluZy9zaGFwZXMvU2hhcGVJbmZv
LmNwcCBcCkBAIC0yNTA3LDYgKzI1MDgsNyBAQCBIRUFERVJTICs9IFwKICAgICByZW5kZXJpbmcv
Um9vdElubGluZUJveC5oIFwKICAgICByZW5kZXJpbmcvU2Nyb2xsQmVoYXZpb3IuaCBcCiAgICAg
cmVuZGVyaW5nL3NoYXBlcy9Qb2x5Z29uU2hhcGUuaCBcCisgICAgcmVuZGVyaW5nL3NoYXBlcy9S
YXN0ZXJTaGFwZS5oIFwKICAgICByZW5kZXJpbmcvc2hhcGVzL1JlY3RhbmdsZVNoYXBlLmggXAog
ICAgIHJlbmRlcmluZy9zaGFwZXMvU2hhcGUuaCBcCiAgICAgcmVuZGVyaW5nL3NoYXBlcy9TaGFw
ZUluZm8uaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2Vi
Q29yZS52Y3hwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4
cHJvagppbmRleCAwZDk1YTIyLi44YjEzYzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKQEAgLTYzMDEsNiArNjMwMSw3IEBACiAgICAgICA8
RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgPC9D
bENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcc2hhcGVzXFBv
bHlnb25TaGFwZS5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdc
c2hhcGVzXFJhc3RlclNoYXBlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJl
bmRlcmluZ1xzaGFwZXNcUmVjdGFuZ2xlU2hhcGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5ccmVuZGVyaW5nXHNoYXBlc1xTaGFwZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxyZW5kZXJpbmdcc2hhcGVzXFNoYXBlSW5zaWRlSW5mby5jcHAiIC8+CkBAIC0x
MjE5Myw2ICsxMjE5NCw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdc
UmVuZGVyU2xpZGVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdc
UmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHJlbmRlcmluZ1xzaGFwZXNcUG9seWdvblNoYXBlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxyZW5kZXJpbmdcc2hhcGVzXFJhc3RlclNoYXBlLmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcc2hhcGVzXFJlY3RhbmdsZVNoYXBlLmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcc2hhcGVzXFNoYXBlLmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcc2hhcGVzXFNoYXBlSW5zaWRlSW5mby5o
IiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDRjNDg3ZWEuLmY0NzJmNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE4MzUsNiArMTgzNSw4IEBACiAJCTZF
NjdEMkE2MTI4MEU4QTQwMDg3NThGNyAvKiBFeHRlbnNpb25zM0RPcGVuR0wuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU2N0QyQTQxMjgwRThBNDAw
ODc1OEY3IC8qIEV4dGVuc2lvbnMzRE9wZW5HTC5jcHAgKi87IH07CiAJCTZFNjdEMkE3MTI4MEU4
QTQwMDg3NThGNyAvKiBFeHRlbnNpb25zM0RPcGVuR0wuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNjdEMkE1MTI4MEU4QTQwMDg3NThGNyAvKiBFeHRl
bnNpb25zM0RPcGVuR0wuaCAqLzsgfTsKIAkJNkU2N0QyQTkxMjgwRThCRDAwODc1OEY3IC8qIEV4
dGVuc2lvbnMzRC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNkU2N0QyQTgxMjgwRThCRDAwODc1OEY3IC8qIEV4dGVuc2lvbnMzRC5oICovOyB9OworCQk2
RTg0RTlFMDE3NjY4QkVFMDA4MTVCNjggLyogUmFzdGVyU2hhcGUuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU4NEU5REUxNzY2OEJBRDAwODE1QjY4
IC8qIFJhc3RlclNoYXBlLmNwcCAqLzsgfTsKKwkJNkU4NEU5RTExNzY2OEJGMTAwODE1QjY4IC8q
IFJhc3RlclNoYXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA2RTg0RTlERjE3NjY4QkFEMDA4MTVCNjggLyogUmFzdGVyU2hhcGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2RUJDNUVBRjEzOEI1MEYy
MDBBMENGOEEgLyogSlNGbG9hdDY0QXJyYXkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNkVCQzVFQUQxMzhCNTBGMjAwQTBDRjhBIC8qIEpTRmxvYXQ2
NEFycmF5LmNwcCAqLzsgfTsKIAkJNkVCQzVFQjAxMzhCNTBGMjAwQTBDRjhBIC8qIEpTRmxvYXQ2
NEFycmF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2
RUJDNUVBRTEzOEI1MEYyMDBBMENGOEEgLyogSlNGbG9hdDY0QXJyYXkuaCAqLzsgfTsKIAkJNkVC
RjBFNDgxMkE4OTI2MTAwREIxNzA5IC8qIE9FU1RleHR1cmVGbG9hdC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RUJGMEU0NTEyQTg5MjYxMDBEQjE3
MDkgLyogT0VTVGV4dHVyZUZsb2F0LmNwcCAqLzsgfTsKQEAgLTgyMjgsNiArODIzMCw4IEBACiAJ
CTZFNjdEMkE0MTI4MEU4QTQwMDg3NThGNyAvKiBFeHRlbnNpb25zM0RPcGVuR0wuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXh0ZW5zaW9uczNET3BlbkdMLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkU2N0QyQTUxMjgwRThBNDAwODc1OEY3IC8q
IEV4dGVuc2lvbnMzRE9wZW5HTC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBF
eHRlbnNpb25zM0RPcGVuR0wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkU2N0Qy
QTgxMjgwRThCRDAwODc1OEY3IC8qIEV4dGVuc2lvbnMzRC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBFeHRlbnNpb25zM0QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNkU4NEU5REUxNzY2OEJBRDAwODE1QjY4IC8qIFJhc3RlclNoYXBlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJhc3RlclNoYXBlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNkU4NEU5REYxNzY2OEJBRDAwODE1QjY4IC8qIFJhc3RlclNoYXBl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJhc3RlclNoYXBlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFQkM1RDgwMTM4QjRDNEUwMEEwQ0Y4QSAvKiBGbG9h
dDY0QXJyYXkuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IEZsb2F0NjRBcnJheS5pZGw7IHBh
dGggPSBjYW52YXMvRmxvYXQ2NEFycmF5LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNkVCQzVFQUQxMzhCNTBGMjAwQTBDRjhBIC8qIEpTRmxvYXQ2NEFycmF5LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRmxvYXQ2NEFycmF5LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkVCQzVFQUUxMzhCNTBGMjAwQTBDRjhBIC8qIEpTRmxv
YXQ2NEFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRmxvYXQ2NEFy
cmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDU0NCw2ICsyMDU0OCw4IEBA
CiAJCQljaGlsZHJlbiA9ICgKIAkJCQlGRDA4QTg3QTE3NUQzOTI2MDAyQ0QzNjAgLyogUG9seWdv
blNoYXBlLmNwcCAqLywKIAkJCQlGRDA4QTg3QjE3NUQzOTI2MDAyQ0QzNjAgLyogUG9seWdvblNo
YXBlLmggKi8sCisJCQkJNkU4NEU5REUxNzY2OEJBRDAwODE1QjY4IC8qIFJhc3RlclNoYXBlLmNw
cCAqLywKKwkJCQk2RTg0RTlERjE3NjY4QkFEMDA4MTVCNjggLyogUmFzdGVyU2hhcGUuaCAqLywK
IAkJCQlGRDA4QTg3QzE3NUQzOTI2MDAyQ0QzNjAgLyogUmVjdGFuZ2xlU2hhcGUuY3BwICovLAog
CQkJCUZEMDhBODdEMTc1RDM5MjYwMDJDRDM2MCAvKiBSZWN0YW5nbGVTaGFwZS5oICovLAogCQkJ
CUZEMDhBODdFMTc1RDM5MjYwMDJDRDM2MCAvKiBTaGFwZS5jcHAgKi8sCkBAIC0yMDg2NCw2ICsy
MDg3MCw3IEBACiAJCQlmaWxlcyA9ICgKIAkJCQlGRTExNUZBQjE2Nzk4OENEMDAyNDkxMzQgLyog
QWJzdHJhY3REYXRhYmFzZVNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkU0QUFERUUxNkQy
QzM3NDAwMDI2RkZDIC8qIEFic3RyYWN0U1FMU3RhdGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJ
CQk2RTg0RTlFMTE3NjY4QkYxMDA4MTVCNjggLyogUmFzdGVyU2hhcGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUZFNEFBREVGMTZEMkMzNzQwMDAyNkZGQyAvKiBBYnN0cmFjdFNRTFN0YXRlbWVudEJh
Y2tlbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRTFCMUQxMEZGNTk4NjkwMDU3NkIzQiAvKiBB
YnN0cmFjdFdvcmtlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjlBODEyMkUwRkJCOUMxRDAwNTEw
MjkzIC8qIEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuaCBpbiBIZWFkZXJzICovLApAQCAtMjY5
NTUsNiArMjY5NjIsNyBAQAogCQkJCUJFNkRGNzExMTcxQ0EyREEwMERENTJCOCAvKiBKU0F1ZGlv
VHJhY2tDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkU2REY3MTMxNzFDQTJEQTAwREQ1
MkI4IC8qIEpTQXVkaW9UcmFja0xpc3RDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkI3
MTlDNDAxNzIzOENBRTAwMjJERTM0IC8qIFdlYktpdENTU01hdEZ1bmN0aW9uVmFsdWUuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJNkU4NEU5RTAxNzY2OEJFRTAwODE1QjY4IC8qIFJhc3RlclNoYXBl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5j
cHAKaW5kZXggZmFiNjlhOC4uZDM4YmIwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suY3BwCkBAIC0xNDM1LDYgKzE0MzUsMjEgQEAgdm9pZCBSZW5kZXJCbG9jazo6bGF5
b3V0KCkKIH0KIAogI2lmIEVOQUJMRShDU1NfU0hBUEVTKQordm9pZCBSZW5kZXJCbG9jazo6aW1h
Z2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciBpbWFnZSwgY29uc3QgSW50UmVjdCopCit7CisgICAg
UmVuZGVyQm94OjppbWFnZUNoYW5nZWQoaW1hZ2UpOworCisgICAgaWYgKCFwYXJlbnQoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgU2hhcGVWYWx1ZSogc2hhcGVWYWx1ZSA9IHN0eWxlKCktPnNo
YXBlSW5zaWRlKCk7CisgICAgaWYgKHNoYXBlVmFsdWUgJiYgc2hhcGVWYWx1ZS0+aW1hZ2UoKSAm
JiBzaGFwZVZhbHVlLT5pbWFnZSgpLT5kYXRhKCkgPT0gaW1hZ2UpIHsKKyAgICAgICAgU2hhcGVJ
bnNpZGVJbmZvKiBzaGFwZUluc2lkZUluZm8gPSBlbnN1cmVTaGFwZUluc2lkZUluZm8oKTsKKyAg
ICAgICAgc2hhcGVJbnNpZGVJbmZvLT5kaXJ0eVNoYXBlU2l6ZSgpOworICAgICAgICBtYXJrU2hh
cGVJbnNpZGVEZXNjZW5kYW50c0ZvckxheW91dCgpOworICAgIH0KK30KKwogdm9pZCBSZW5kZXJC
bG9jazo6dXBkYXRlU2hhcGVJbnNpZGVJbmZvQWZ0ZXJTdHlsZUNoYW5nZShjb25zdCBTaGFwZVZh
bHVlKiBzaGFwZUluc2lkZSwgY29uc3QgU2hhcGVWYWx1ZSogb2xkU2hhcGVJbnNpZGUpCiB7CiAg
ICAgLy8gRklYTUU6IEEgZnV0dXJlIG9wdGltaXphdGlvbiB3b3VsZCBkbyBhIGRlZXAgY29tcGFy
aXNvbiBmb3IgZXF1YWxpdHkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCmlu
ZGV4IGJkMTBjOTguLjNmZmE3YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
ay5oCkBAIC00NjgsNiArNDY4LDcgQEAgcHVibGljOgogICAgIHZvaWQgbWFya1NoYXBlSW5zaWRl
RGVzY2VuZGFudHNGb3JMYXlvdXQoKTsKICAgICBTaGFwZUluc2lkZUluZm8qIGxheW91dFNoYXBl
SW5zaWRlSW5mbygpIGNvbnN0OwogICAgIGJvb2wgYWxsb3dzU2hhcGVJbnNpZGVJbmZvU2hhcmlu
ZygpIGNvbnN0IHsgcmV0dXJuICFpc0lubGluZSgpICYmICFpc0Zsb2F0aW5nKCk7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgaW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciwgY29uc3QgSW50UmVjdCog
PSAwKSBPVkVSUklERTsKICNlbmRpZgogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IDJkM2FjMDQuLmVkMTI3OWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC0xODQ0LDYgKzE4NDQsMTEgQEAg
dm9pZCBSZW5kZXJPYmplY3Q6OnNldFN0eWxlKFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxl
KQogICAgIHVwZGF0ZUltYWdlKG9sZFN0eWxlID8gb2xkU3R5bGUtPmJvcmRlckltYWdlKCkuaW1h
Z2UoKSA6IDAsIG1fc3R5bGUgPyBtX3N0eWxlLT5ib3JkZXJJbWFnZSgpLmltYWdlKCkgOiAwKTsK
ICAgICB1cGRhdGVJbWFnZShvbGRTdHlsZSA/IG9sZFN0eWxlLT5tYXNrQm94SW1hZ2UoKS5pbWFn
ZSgpIDogMCwgbV9zdHlsZSA/IG1fc3R5bGUtPm1hc2tCb3hJbWFnZSgpLmltYWdlKCkgOiAwKTsK
IAorI2lmIEVOQUJMRShDU1NfU0hBUEVTKQorICAgIHVwZGF0ZVNoYXBlSW1hZ2Uob2xkU3R5bGUg
PyBvbGRTdHlsZS0+c2hhcGVJbnNpZGUoKSA6IDAsIG1fc3R5bGUgPyBtX3N0eWxlLT5zaGFwZUlu
c2lkZSgpIDogMCk7CisgICAgdXBkYXRlU2hhcGVJbWFnZShvbGRTdHlsZSA/IG9sZFN0eWxlLT5z
aGFwZU91dHNpZGUoKSA6IDAsIG1fc3R5bGUgPyBtX3N0eWxlLT5zaGFwZU91dHNpZGUoKSA6IDAp
OworI2VuZGlmCisKICAgICAvLyBXZSBuZWVkIHRvIGVuc3VyZSB0aGF0IHZpZXctPm1heGltYWxP
dXRsaW5lU2l6ZSgpIGlzIHZhbGlkIGZvciBhbnkgcmVwYWludHMgdGhhdCBoYXBwZW4KICAgICAv
LyBkdXJpbmcgc3R5bGVEaWRDaGFuZ2UgKGl0J3MgdXNlZCBieSBjbGlwcGVkT3ZlcmZsb3dSZWN0
Rm9yUmVwYWludCgpKS4KICAgICBpZiAobV9zdHlsZS0+b3V0bGluZVdpZHRoKCkgPiAwICYmIG1f
c3R5bGUtPm91dGxpbmVTaXplKCkgPiBtYXhpbWFsT3V0bGluZVNpemUoUGFpbnRQaGFzZU91dGxp
bmUpKQpAQCAtMjA5Niw2ICsyMTAxLDE0IEBAIHZvaWQgUmVuZGVyT2JqZWN0Ojp1cGRhdGVJbWFn
ZShTdHlsZUltYWdlKiBvbGRJbWFnZSwgU3R5bGVJbWFnZSogbmV3SW1hZ2UpCiAgICAgfQogfQog
CisjaWYgRU5BQkxFKENTU19TSEFQRVMpCit2b2lkIFJlbmRlck9iamVjdDo6dXBkYXRlU2hhcGVJ
bWFnZShjb25zdCBTaGFwZVZhbHVlKiBvbGRTaGFwZVZhbHVlLCBjb25zdCBTaGFwZVZhbHVlKiBu
ZXdTaGFwZVZhbHVlKQoreworICAgIGlmIChvbGRTaGFwZVZhbHVlIHx8IG5ld1NoYXBlVmFsdWUp
CisgICAgICAgIHVwZGF0ZUltYWdlKG9sZFNoYXBlVmFsdWUgPyBvbGRTaGFwZVZhbHVlLT5pbWFn
ZSgpIDogMCwgbmV3U2hhcGVWYWx1ZSA/IG5ld1NoYXBlVmFsdWUtPmltYWdlKCkgOiAwKTsKK30K
KyNlbmRpZgorCiBMYXlvdXRSZWN0IFJlbmRlck9iamVjdDo6dmlld1JlY3QoKSBjb25zdAogewog
ICAgIHJldHVybiB2aWV3KCktPnZpZXdSZWN0KCk7CkBAIC0yNjEyLDYgKzI2MjUsMTYgQEAgdm9p
ZCBSZW5kZXJPYmplY3Q6OmRlc3Ryb3koKQogICAgIGFyZW5hRGVsZXRlKHJlbmRlckFyZW5hKCks
IHRoaXMpOwogfQogCisjaWYgRU5BQkxFKENTU19TSEFQRVMpCitzdGF0aWMgaW5saW5lIHZvaWQg
cmVtb3ZlU2hhcGVJbWFnZUNsaWVudChSZW5kZXJPYmplY3QgKnRoaXNSZW5kZXJPYmplY3QsIFNo
YXBlVmFsdWUqIHNoYXBlVmFsdWUpCit7CisgICAgaWYgKCFzaGFwZVZhbHVlKQorICAgICAgICBy
ZXR1cm47CisgICAgaWYgKFN0eWxlSW1hZ2UqIHNoYXBlSW1hZ2UgPSBzaGFwZVZhbHVlLT5pbWFn
ZSgpKQorICAgICAgICBzaGFwZUltYWdlLT5yZW1vdmVDbGllbnQodGhpc1JlbmRlck9iamVjdCk7
Cit9CisjZW5kaWYKKwogdm9pZCBSZW5kZXJPYmplY3Q6OmFyZW5hRGVsZXRlKFJlbmRlckFyZW5h
KiBhcmVuYSwgdm9pZCogYmFzZSkKIHsKICAgICBpZiAobV9zdHlsZSkgewpAQCAtMjYzMCw2ICsy
NjUzLDExIEBAIHZvaWQgUmVuZGVyT2JqZWN0OjphcmVuYURlbGV0ZShSZW5kZXJBcmVuYSogYXJl
bmEsIHZvaWQqIGJhc2UpCiAKICAgICAgICAgaWYgKFN0eWxlSW1hZ2UqIG1hc2tCb3hJbWFnZSA9
IG1fc3R5bGUtPm1hc2tCb3hJbWFnZSgpLmltYWdlKCkpCiAgICAgICAgICAgICBtYXNrQm94SW1h
Z2UtPnJlbW92ZUNsaWVudCh0aGlzKTsKKworI2lmIEVOQUJMRShDU1NfU0hBUEVTKQorICAgICAg
ICByZW1vdmVTaGFwZUltYWdlQ2xpZW50KHRoaXMsIG1fc3R5bGUtPnNoYXBlSW5zaWRlKCkpOwor
ICAgICAgICByZW1vdmVTaGFwZUltYWdlQ2xpZW50KHRoaXMsIG1fc3R5bGUtPnNoYXBlT3V0c2lk
ZSgpKTsKKyNlbmRpZgogICAgIH0KIAogI2lmbmRlZiBOREVCVUcKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuaAppbmRleCA5MzU3YWM1Li5mYjg4OTQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCkBAIC03MDMsNiArNzAzLDkgQEAgcHVibGljOgog
CiAgICAgdm9pZCB1cGRhdGVGaWxsSW1hZ2VzKGNvbnN0IEZpbGxMYXllciosIGNvbnN0IEZpbGxM
YXllciopOwogICAgIHZvaWQgdXBkYXRlSW1hZ2UoU3R5bGVJbWFnZSosIFN0eWxlSW1hZ2UqKTsK
KyNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKKyAgICB2b2lkIHVwZGF0ZVNoYXBlSW1hZ2UoY29uc3Qg
U2hhcGVWYWx1ZSosIGNvbnN0IFNoYXBlVmFsdWUqKTsKKyNlbmRpZgogCiAgICAgdmlydHVhbCB2
b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uMzkzNzIyOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuY3BwCkBAIC0wLDAgKzEsMTYzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAg
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscworICogICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MKKyAqIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisgKiBDT1BZUklH
SFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsCisgKiBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCisgKiBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VECisgKiBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJhc3RlclNoYXBlLmgiCisK
KyNpbmNsdWRlICJTaGFwZUludGVydmFsLmgiCisjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitJbnRSZWN0IFJhc3RlclNoYXBlSW50ZXJ2YWxzOjpi
b3VuZHMoKSBjb25zdAoreworICAgIGlmICghbV9ib3VuZHMpCisgICAgICAgIG1fYm91bmRzID0g
YWRvcHRQdHIobmV3IEludFJlY3QobV9yZWdpb24uYm91bmRzKCkpKTsKKyAgICByZXR1cm4gKm1f
Ym91bmRzOworfQorCit2b2lkIFJhc3RlclNoYXBlSW50ZXJ2YWxzOjphZGRJbnRlcnZhbChpbnQg
eSwgaW50IHgxLCBpbnQgeDIpCit7CisgICAgbV9yZWdpb24udW5pdGUoUmVnaW9uKEludFJlY3Qo
eDEsIHksIHgyIC0geDEsIDEpKSk7CisgICAgbV9ib3VuZHMuY2xlYXIoKTsKK30KKworc3RhdGlj
IGlubGluZSBJbnRSZWN0IGFsaWduZWRSZWN0KEludFJlY3QgciwgaW50IHkxLCBpbnQgeTIpCit7
CisgICAgcmV0dXJuIEludFJlY3Qoci54KCksIHkxLCByLndpZHRoKCksIHkyIC0geTEpOworfQor
Cit2b2lkIFJhc3RlclNoYXBlSW50ZXJ2YWxzOjpnZXRJbnRlcnZhbHMoaW50IHkxLCBpbnQgeTIs
IFNlZ21lbnRMaXN0JiByZXN1bHQpIGNvbnN0Cit7CisgICAgQVNTRVJUKHkyID49IHkxKTsKKwor
ICAgIEludFJlY3QgbGluZVJlY3QoYm91bmRzKCkueCgpLCB5MSwgYm91bmRzKCkud2lkdGgoKSwg
eTIgLSB5MSk7CisgICAgUmVnaW9uIGxpbmVSZWdpb24obGluZVJlY3QpOworICAgIGxpbmVSZWdp
b24uaW50ZXJzZWN0KG1fcmVnaW9uKTsKKyAgICBpZiAobGluZVJlZ2lvbi5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybjsKKyAgICAvLyBGSVhNRTogaWYgbGluZVJlZ2lvbi5pc1JlY3QoKSB0aGVu
IHdlJ3JlIGRvbmUuCisKKyAgICAvLyBGSVhNRTogYWRkIGEgbm9uLWNvcHlpbmcgUmVnaW9uOjpy
ZWN0cygpIG1ldGhvZAorICAgIFZlY3RvcjxJbnRSZWN0PiBsaW5lUmVjdHMgPSBsaW5lUmVnaW9u
LnJlY3RzKCk7IAorICAgIEFTU0VSVChsaW5lUmVjdHMuc2l6ZSgpID4gMCk7CisKKyAgICBSZWdp
b24gc2VnbWVudHNSZWdpb24obGluZVJlY3QpOworICAgIFJlZ2lvbiBpbnRlcnZhbHNSZWdpb247
CisKKyAgICAvLyBGSVhNRTogYWRkIGEgcmVnaW9uIGNsZWFyKCkgbWV0aG9kCisgICAgaW50IGxp
bmVZID0gbGluZVJlY3RzWzBdLnkoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGlu
ZVJlY3RzLnNpemUoKTsgaSsrKSB7CisgICAgICAgIGlmIChsaW5lUmVjdHNbaV0ueSgpICE9IGxp
bmVZKSB7CisgICAgICAgICAgICBzZWdtZW50c1JlZ2lvbi5pbnRlcnNlY3QoaW50ZXJ2YWxzUmVn
aW9uKTsKKyAgICAgICAgICAgIGludGVydmFsc1JlZ2lvbiA9IFJlZ2lvbigpOyAKKyAgICAgICAg
fQorICAgICAgICBpbnRlcnZhbHNSZWdpb24udW5pdGUoUmVnaW9uKGFsaWduZWRSZWN0KGxpbmVS
ZWN0c1tpXSwgeTEsIHkyKSkpOworICAgICAgICBsaW5lWSA9IGxpbmVSZWN0c1tpXS55KCk7Cisg
ICAgfQorICAgIGlmICghaW50ZXJ2YWxzUmVnaW9uLmlzRW1wdHkoKSkKKyAgICAgICAgc2VnbWVu
dHNSZWdpb24uaW50ZXJzZWN0KGludGVydmFsc1JlZ2lvbik7CisKKyAgICBWZWN0b3I8SW50UmVj
dD4gc2VnbWVudFJlY3RzID0gc2VnbWVudHNSZWdpb24ucmVjdHMoKTsKKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgc2VnbWVudFJlY3RzLnNpemUoKTsgaSsrKQorICAgICAgICByZXN1bHQu
YXBwZW5kKExpbmVTZWdtZW50KHNlZ21lbnRSZWN0c1tpXS54KCksIHNlZ21lbnRSZWN0c1tpXS5t
YXhYKCkpKTsKK30KKworY29uc3QgUmFzdGVyU2hhcGVJbnRlcnZhbHMmIFJhc3RlclNoYXBlOjpt
YXJnaW5JbnRlcnZhbHMoKSBjb25zdAoreworICAgIEFTU0VSVChzaGFwZU1hcmdpbigpID49IDAp
OworICAgIGlmICghc2hhcGVNYXJnaW4oKSkKKyAgICAgICAgcmV0dXJuICptX2ludGVydmFsczsK
KworICAgIC8vIEZJWE1FOiBhZGQgc3VwcG9ydCBmb3Igbm9uLXplcm8gbWFyZ2luCisgICAgcmV0
dXJuICptX2ludGVydmFsczsKK30KKworY29uc3QgUmFzdGVyU2hhcGVJbnRlcnZhbHMmIFJhc3Rl
clNoYXBlOjpwYWRkaW5nSW50ZXJ2YWxzKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoc2hhcGVQYWRk
aW5nKCkgPj0gMCk7CisgICAgaWYgKCFzaGFwZVBhZGRpbmcoKSkKKyAgICAgICAgcmV0dXJuICpt
X2ludGVydmFsczsKKworICAgIC8vIEZJWE1FOiBhZGQgc3VwcG9ydCBmb3Igbm9uLXplcm8gcGFk
ZGluZworICAgIHJldHVybiAqbV9pbnRlcnZhbHM7Cit9CisKK3ZvaWQgUmFzdGVyU2hhcGU6Omdl
dEV4Y2x1ZGVkSW50ZXJ2YWxzKExheW91dFVuaXQgbG9naWNhbFRvcCwgTGF5b3V0VW5pdCBsb2dp
Y2FsSGVpZ2h0LCBTZWdtZW50TGlzdCYgcmVzdWx0KSBjb25zdAoreworICAgIGNvbnN0IFJhc3Rl
clNoYXBlSW50ZXJ2YWxzJiBpbnRlcnZhbHMgPSBtYXJnaW5JbnRlcnZhbHMoKTsKKyAgICBpZiAo
aW50ZXJ2YWxzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZmxvYXQgeTEgPSBs
b2dpY2FsVG9wOworICAgIGZsb2F0IHkyID0gbG9naWNhbFRvcCArIGxvZ2ljYWxIZWlnaHQ7CisK
KyAgICBpZiAoeTIgPCBpbnRlcnZhbHMuYm91bmRzKCkueSgpIHx8IHkxID49IGludGVydmFscy5i
b3VuZHMoKS5tYXhZKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGludGVydmFscy5nZXRJbnRl
cnZhbHMoeTEsIHkyLCByZXN1bHQpOworfQorCit2b2lkIFJhc3RlclNoYXBlOjpnZXRJbmNsdWRl
ZEludGVydmFscyhMYXlvdXRVbml0IGxvZ2ljYWxUb3AsIExheW91dFVuaXQgbG9naWNhbEhlaWdo
dCwgU2VnbWVudExpc3QmIHJlc3VsdCkgY29uc3QKK3sKKyAgICBjb25zdCBSYXN0ZXJTaGFwZUlu
dGVydmFscyYgaW50ZXJ2YWxzID0gcGFkZGluZ0ludGVydmFscygpOworICAgIGlmIChpbnRlcnZh
bHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBmbG9hdCB5MSA9IGxvZ2ljYWxU
b3A7CisgICAgZmxvYXQgeTIgPSBsb2dpY2FsVG9wICsgbG9naWNhbEhlaWdodDsKKworICAgIGlm
ICh5MSA8IGludGVydmFscy5ib3VuZHMoKS55KCkgfHwgeTIgPiBpbnRlcnZhbHMuYm91bmRzKCku
bWF4WSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpbnRlcnZhbHMuZ2V0SW50ZXJ2YWxzKHkx
LCB5MiwgcmVzdWx0KTsKK30KKworYm9vbCBSYXN0ZXJTaGFwZTo6Zmlyc3RJbmNsdWRlZEludGVy
dmFsTG9naWNhbFRvcChMYXlvdXRVbml0IG1pbkxvZ2ljYWxJbnRlcnZhbFRvcCwgY29uc3QgTGF5
b3V0U2l6ZSYgbWluTG9naWNhbEludGVydmFsU2l6ZSwgTGF5b3V0VW5pdCYgcmVzdWx0KSBjb25z
dAoreworICAgIGZsb2F0IG1pbkludGVydmFsVG9wID0gbWluTG9naWNhbEludGVydmFsVG9wOwor
ICAgIGZsb2F0IG1pbkludGVydmFsSGVpZ2h0ID0gbWluTG9naWNhbEludGVydmFsU2l6ZS5oZWln
aHQoKTsKKyAgICBmbG9hdCBtaW5JbnRlcnZhbFdpZHRoID0gbWluTG9naWNhbEludGVydmFsU2l6
ZS53aWR0aCgpOworCisgICAgY29uc3QgUmFzdGVyU2hhcGVJbnRlcnZhbHMmIGludGVydmFscyA9
IHBhZGRpbmdJbnRlcnZhbHMoKTsKKyAgICBpZiAoaW50ZXJ2YWxzLmlzRW1wdHkoKSB8fCBtaW5J
bnRlcnZhbFdpZHRoID4gaW50ZXJ2YWxzLmJvdW5kcygpLndpZHRoKCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGZsb2F0IG1pblkgPSBzdGQ6Om1heDxmbG9hdD4oaW50ZXJ2YWxzLmJv
dW5kcygpLnkoKSwgbWluSW50ZXJ2YWxUb3ApOworICAgIGZsb2F0IG1heFkgPSBtaW5ZICsgbWlu
SW50ZXJ2YWxIZWlnaHQ7CisKKyAgICBpZiAobWF4WSA+IGludGVydmFscy5ib3VuZHMoKS5tYXhZ
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIEZJWE1FOiBjb21wbGV0ZSB0aGlz
IG1ldGhvZAorICAgIHJlc3VsdCA9IG1pblk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
aGFwZXMvUmFzdGVyU2hhcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmFz
dGVyU2hhcGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZGU5ODE3Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJT
aGFwZS5oCkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQWRvYmUg
U3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisgKiAgICBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UworICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUKKyAqIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwKKyAqIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwKKyAqIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQKKyAqIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFJhc3RlclNoYXBlX2gKKyNk
ZWZpbmUgUmFzdGVyU2hhcGVfaAorCisjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAi
UmVnaW9uLmgiCisjaW5jbHVkZSAiU2hhcGUuaCIKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5o
PgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBSYXN0ZXJTaGFwZUludGVydmFscyB7CitwdWJsaWM6CisgICAgUmFzdGVyU2hhcGVJbnRlcnZh
bHMoKSB7IH0KKworICAgIEludFJlY3QgYm91bmRzKCkgY29uc3Q7CisgICAgYm9vbCBpc0VtcHR5
KCkgY29uc3QgIHsgcmV0dXJuIG1fcmVnaW9uLmlzRW1wdHkoKTsgfQorICAgIHZvaWQgYWRkSW50
ZXJ2YWwoaW50IHksIGludCB4MSwgaW50IHgyKTsKKyAgICB2b2lkIGdldEludGVydmFscyhpbnQg
eTEsIGludCB5MiwgU2VnbWVudExpc3QmKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBSZWdpb24g
bV9yZWdpb247CisgICAgbXV0YWJsZSBPd25QdHI8SW50UmVjdD4gbV9ib3VuZHM7IC8vIENhY2hl
ZCB2YWx1ZSBvZiBtX3JlZ2lvbi5ib3VuZHMoKS4KK307CisKK2NsYXNzIFJhc3RlclNoYXBlIDog
cHVibGljIFNoYXBlIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSYXN0ZXJTaGFwZSk7Citw
dWJsaWM6CisgICAgUmFzdGVyU2hhcGUoUGFzc093blB0cjxSYXN0ZXJTaGFwZUludGVydmFscz4g
aW50ZXJ2YWxzKQorICAgICAgICA6IFNoYXBlKCkKKyAgICAgICAgLCBtX2ludGVydmFscyhpbnRl
cnZhbHMpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBzaGFwZU1hcmdp
bkxvZ2ljYWxCb3VuZGluZ0JveCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHN0YXRpY19jYXN0
PExheW91dFJlY3Q+KG1hcmdpbkludGVydmFscygpLmJvdW5kcygpKTsgfQorICAgIHZpcnR1YWwg
TGF5b3V0UmVjdCBzaGFwZVBhZGRpbmdMb2dpY2FsQm91bmRpbmdCb3goKSBjb25zdCBPVkVSUklE
RSB7IHJldHVybiBzdGF0aWNfY2FzdDxMYXlvdXRSZWN0PihwYWRkaW5nSW50ZXJ2YWxzKCkuYm91
bmRzKCkpOyB9CisgICAgdmlydHVhbCBib29sIGlzRW1wdHkoKSBjb25zdCBPVkVSUklERSB7IHJl
dHVybiBtX2ludGVydmFscy0+aXNFbXB0eSgpOyB9CisgICAgdmlydHVhbCB2b2lkIGdldEV4Y2x1
ZGVkSW50ZXJ2YWxzKExheW91dFVuaXQgbG9naWNhbFRvcCwgTGF5b3V0VW5pdCBsb2dpY2FsSGVp
Z2h0LCBTZWdtZW50TGlzdCYpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBnZXRJ
bmNsdWRlZEludGVydmFscyhMYXlvdXRVbml0IGxvZ2ljYWxUb3AsIExheW91dFVuaXQgbG9naWNh
bEhlaWdodCwgU2VnbWVudExpc3QmKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wg
Zmlyc3RJbmNsdWRlZEludGVydmFsTG9naWNhbFRvcChMYXlvdXRVbml0IG1pbkxvZ2ljYWxJbnRl
cnZhbFRvcCwgY29uc3QgTGF5b3V0U2l6ZSYgbWluTG9naWNhbEludGVydmFsU2l6ZSwgTGF5b3V0
VW5pdCYpIGNvbnN0IE9WRVJSSURFOworCitwcml2YXRlOgorICAgIGNvbnN0IFJhc3RlclNoYXBl
SW50ZXJ2YWxzJiBtYXJnaW5JbnRlcnZhbHMoKSBjb25zdDsKKyAgICBjb25zdCBSYXN0ZXJTaGFw
ZUludGVydmFscyYgcGFkZGluZ0ludGVydmFscygpIGNvbnN0OworCisgICAgT3duUHRyPFJhc3Rl
clNoYXBlSW50ZXJ2YWxzPiBtX2ludGVydmFsczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIFJhc3RlclNoYXBlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3No
YXBlcy9TaGFwZS5jcHAKaW5kZXggYjc5MjBjYy4uY2FiMWQ2YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKQEAgLTMxLDkgKzMxLDEyIEBACiAjaW5jbHVkZSAi
U2hhcGUuaCIKIAogI2luY2x1ZGUgIkJhc2ljU2hhcGVGdW5jdGlvbnMuaCIKKyNpbmNsdWRlICJD
YWNoZWRJbWFnZS5oIgogI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgorI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dDNELmgiCiAjaW5jbHVkZSAiTGVuZ3RoRnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiUG9s
eWdvblNoYXBlLmgiCisjaW5jbHVkZSAiUmFzdGVyU2hhcGUuaCIKICNpbmNsdWRlICJSZWN0YW5n
bGVTaGFwZS5oIgogI2luY2x1ZGUgIldpbmRSdWxlLmgiCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRy
YXMuaD4KQEAgLTE5MSw0ICsxOTQsNTggQEAgUGFzc093blB0cjxTaGFwZT4gU2hhcGU6OmNyZWF0
ZVNoYXBlKGNvbnN0IEJhc2ljU2hhcGUqIGJhc2ljU2hhcGUsIGNvbnN0IExheW91dFMKICAgICBy
ZXR1cm4gc2hhcGUucmVsZWFzZSgpOwogfQogCitQYXNzT3duUHRyPFNoYXBlPiBTaGFwZTo6Y3Jl
YXRlU2hhcGUoY29uc3QgU3R5bGVJbWFnZSogc3R5bGVJbWFnZSwgZmxvYXQgdGhyZXNob2xkLCBj
b25zdCBMYXlvdXRTaXplJiBsb2dpY2FsQm94U2l6ZSwgV3JpdGluZ01vZGUgd3JpdGluZ01vZGUs
IExlbmd0aCBtYXJnaW4sIExlbmd0aCBwYWRkaW5nKQoreworICAgIC8vIEZJWE1FOiBTaG91bGQg
Y2xpcCBzaGFwZSB0byBsb2dpY2FsIGJveAorICAgIFVOVVNFRF9QQVJBTShsb2dpY2FsQm94U2l6
ZSk7CisKKyAgICBBU1NFUlQoc3R5bGVJbWFnZSAmJiBzdHlsZUltYWdlLT5pc0NhY2hlZEltYWdl
KCkgJiYgc3R5bGVJbWFnZS0+Y2FjaGVkSW1hZ2UoKSAmJiBzdHlsZUltYWdlLT5jYWNoZWRJbWFn
ZSgpLT5pbWFnZSgpKTsKKworICAgIEltYWdlKiBpbWFnZSA9IHN0eWxlSW1hZ2UtPmNhY2hlZElt
YWdlKCktPmltYWdlKCk7CisgICAgR3JhcGhpY3NDb250ZXh0M0Q6OkltYWdlRXh0cmFjdG9yIGlt
YWdlRXh0cmFjdG9yKGltYWdlLCBHcmFwaGljc0NvbnRleHQzRDo6SHRtbERvbU5vbmUsIGZhbHNl
LCB0cnVlKTsKKyAgICAvLyBGSVhNRTogY2xpcCBpbWFnZSBzaXplIHRvIExheW91dFNpemUgaGVy
ZSwgYWZ0ZXIgZGVhbGluZyB3aXRoIHdyaXRpbmctbW9kZSB0cmFuc2Zvcm0uCisgICAgaW50IGlt
YWdlV2lkdGggPSBzdGF0aWNfY2FzdDxpbnQ+KGltYWdlRXh0cmFjdG9yLmltYWdlV2lkdGgoKSk7
CisgICAgaW50IGltYWdlSGVpZ2h0ID0gc3RhdGljX2Nhc3Q8aW50PihpbWFnZUV4dHJhY3Rvci5p
bWFnZUhlaWdodCgpKTsKKworICAgIC8vIEZJWE1FOiBUaGUgaW1hZ2UgZXhyYWN0aW9uIHN1cHBv
cnQgc2hvdWxkIGJlIGxpZnRlZCBvdXQgb2YgR3JhcGhpY3NDb250ZXh0M0QKKyAgICBWZWN0b3I8
dWludDhfdD4gYWxwaGFQaXhlbHM7CisgICAgYm9vbCBwYWNrSW1hZ2VEYXRhT0sgPSBHcmFwaGlj
c0NvbnRleHQzRDo6cGFja0ltYWdlRGF0YShpbWFnZSwgaW1hZ2VFeHRyYWN0b3IuaW1hZ2VQaXhl
bERhdGEoKSwKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0M0Q6OkFMUEhBLAorICAgICAgICBHcmFw
aGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwKKyAgICAgICAgZmFsc2UsIC8qIGZsaXBZICov
CisgICAgICAgIEdyYXBoaWNzQ29udGV4dDNEOjpBbHBoYURvTm90aGluZywKKyAgICAgICAgaW1h
Z2VFeHRyYWN0b3IuaW1hZ2VTb3VyY2VGb3JtYXQoKSwKKyAgICAgICAgaW1hZ2VXaWR0aCwKKyAg
ICAgICAgaW1hZ2VIZWlnaHQsCisgICAgICAgIGltYWdlRXh0cmFjdG9yLmltYWdlU291cmNlVW5w
YWNrQWxpZ25tZW50KCksCisgICAgICAgIGFscGhhUGl4ZWxzKTsKKworICAgIE93blB0cjxSYXN0
ZXJTaGFwZUludGVydmFscz4gaW50ZXJ2YWxzID0gYWRvcHRQdHIobmV3IFJhc3RlclNoYXBlSW50
ZXJ2YWxzKCkpOworICAgIHVpbnQ4X3QgYWxwaGFQaXhlbFRocmVzaG9sZCA9IHRocmVzaG9sZCAq
IDI1NTsKKworICAgIGlmIChwYWNrSW1hZ2VEYXRhT0spIHsKKyAgICAgICAgQVNTRVJUKHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihpbWFnZVdpZHRoICogaW1hZ2VIZWlnaHQpID09IGFscGhhUGl4ZWxz
LnNpemUoKSk7CisgICAgICAgIC8vIEZJWE1FOiBmbGlwIGludGVydmFscyBwZXIgd3JpdGluZy1t
b2RlCisgICAgICAgIGZvciAoaW50IHkgPSAwOyB5IDwgaW1hZ2VIZWlnaHQ7IHkrKykgeworICAg
ICAgICAgICAgaW50IHN0YXJ0WCA9IC0xOworICAgICAgICAgICAgZm9yIChpbnQgeCA9IDA7IHgg
PCBpbWFnZVdpZHRoOyB4KyspIHsKKyAgICAgICAgICAgICAgICB1aW50OF90IGFscGhhID0gYWxw
aGFQaXhlbHNbeCArIHkgKiBpbWFnZVdpZHRoXTsKKyAgICAgICAgICAgICAgICBpZiAoKHN0YXJ0
WCA9PSAtMSkgJiYgYWxwaGEgPiBhbHBoYVBpeGVsVGhyZXNob2xkKSB7CisgICAgICAgICAgICAg
ICAgICAgIHN0YXJ0WCA9IHg7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzdGFydFggIT0g
LTEgJiYgKGFscGhhIDw9IGFscGhhUGl4ZWxUaHJlc2hvbGQgfHwgeCA9PSBpbWFnZVdpZHRoIC0g
MSkpIHsKKyAgICAgICAgICAgICAgICAgICAgaW50ZXJ2YWxzLT5hZGRJbnRlcnZhbCh5LCBzdGFy
dFgsIHgpOworICAgICAgICAgICAgICAgICAgICBzdGFydFggPSAtMTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBPd25QdHI8UmFzdGVy
U2hhcGU+IHJhc3RlclNoYXBlID0gYWRvcHRQdHIobmV3IFJhc3RlclNoYXBlKGludGVydmFscy5y
ZWxlYXNlKCkpKTsKKyAgICByYXN0ZXJTaGFwZS0+bV93cml0aW5nTW9kZSA9IHdyaXRpbmdNb2Rl
OworICAgIHJhc3RlclNoYXBlLT5tX21hcmdpbiA9IGZsb2F0VmFsdWVGb3JMZW5ndGgobWFyZ2lu
LCAwKTsKKyAgICByYXN0ZXJTaGFwZS0+bV9wYWRkaW5nID0gZmxvYXRWYWx1ZUZvckxlbmd0aChw
YWRkaW5nLCAwKTsKKworICAgIHJldHVybiByYXN0ZXJTaGFwZS5yZWxlYXNlKCk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zaGFwZXMvU2hhcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUu
aAppbmRleCAwZDllY2ZkLi5mNzc1ZTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc2hhcGVzL1NoYXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBl
cy9TaGFwZS5oCkBAIC0zMiw2ICszMiw3IEBACiAKICNpbmNsdWRlICJCYXNpY1NoYXBlcy5oIgog
I2luY2x1ZGUgIkxheW91dFJlY3QuaCIKKyNpbmNsdWRlICJTdHlsZUltYWdlLmgiCiAjaW5jbHVk
ZSAiV3JpdGluZ01vZGUuaCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KQEAgLTYwLDYgKzYxLDcgQEAgdHlwZWRlZiBWZWN0b3I8TGluZVNlZ21l
bnQ+IFNlZ21lbnRMaXN0OwogY2xhc3MgU2hhcGUgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNz
T3duUHRyPFNoYXBlPiBjcmVhdGVTaGFwZShjb25zdCBCYXNpY1NoYXBlKiwgY29uc3QgTGF5b3V0
U2l6ZSYgbG9naWNhbEJveFNpemUsIFdyaXRpbmdNb2RlLCBMZW5ndGggbWFyZ2luLCBMZW5ndGgg
cGFkZGluZyk7CisgICAgc3RhdGljIFBhc3NPd25QdHI8U2hhcGU+IGNyZWF0ZVNoYXBlKGNvbnN0
IFN0eWxlSW1hZ2UqLCBmbG9hdCB0aHJlc2hvbGQsIGNvbnN0IExheW91dFNpemUmIGxvZ2ljYWxC
b3hTaXplLCBXcml0aW5nTW9kZSwgTGVuZ3RoIG1hcmdpbiwgTGVuZ3RoIHBhZGRpbmcpOwogCiAg
ICAgdmlydHVhbCB+U2hhcGUoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3NoYXBlcy9TaGFwZUluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3No
YXBlcy9TaGFwZUluZm8uY3BwCmluZGV4IGUxMTU1ODMuLmJmOTRlNDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVJbmZvLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW5mby5jcHAKQEAgLTQ1LDEyICs0NSwyNiBA
QCBjb25zdCBTaGFwZSogU2hhcGVJbmZvPFJlbmRlclR5cGUsIHNoYXBlR2V0dGVyLCBpbnRlcnZh
bEdldHRlcj46OmNvbXB1dGVkU2hhcGUoKQogICAgIGlmIChTaGFwZSogc2hhcGUgPSBtX3NoYXBl
LmdldCgpKQogICAgICAgICByZXR1cm4gc2hhcGU7CiAKLSAgICBTaGFwZVZhbHVlKiBzaGFwZVZh
bHVlID0gKG1fcmVuZGVyZXItPnN0eWxlKCktPipzaGFwZUdldHRlcikoKTsKLSAgICBCYXNpY1No
YXBlKiBzaGFwZSA9IChzaGFwZVZhbHVlICYmIHNoYXBlVmFsdWUtPnR5cGUoKSA9PSBTaGFwZVZh
bHVlOjpTaGFwZSkgPyBzaGFwZVZhbHVlLT5zaGFwZSgpIDogMDsKKyAgICBjb25zdCBMYXlvdXRT
aXplIGxvZ2ljYWxCb3hTaXplKG1fc2hhcGVMb2dpY2FsV2lkdGgsIG1fc2hhcGVMb2dpY2FsSGVp
Z2h0KTsKKyAgICBXcml0aW5nTW9kZSB3cml0aW5nTW9kZSA9IG1fcmVuZGVyZXItPnN0eWxlKCkt
PndyaXRpbmdNb2RlKCk7CisgICAgTGVuZ3RoIG1hcmdpbiA9IG1fcmVuZGVyZXItPnN0eWxlKCkt
PnNoYXBlTWFyZ2luKCk7CisgICAgTGVuZ3RoIHBhZGRpbmcgPSBtX3JlbmRlcmVyLT5zdHlsZSgp
LT5zaGFwZVBhZGRpbmcoKTsKKyAgICBjb25zdCBTaGFwZVZhbHVlKiBzaGFwZVZhbHVlID0gKG1f
cmVuZGVyZXItPnN0eWxlKCktPipzaGFwZUdldHRlcikoKTsKKyAgICBBU1NFUlQoc2hhcGVWYWx1
ZSk7CiAKLSAgICBBU1NFUlQoc2hhcGUpOworICAgIHN3aXRjaCAoc2hhcGVWYWx1ZS0+dHlwZSgp
KSB7CisgICAgY2FzZSBTaGFwZVZhbHVlOjpTaGFwZToKKyAgICAgICAgQVNTRVJUKHNoYXBlVmFs
dWUtPnNoYXBlKCkpOworICAgICAgICBtX3NoYXBlID0gU2hhcGU6OmNyZWF0ZVNoYXBlKHNoYXBl
VmFsdWUtPnNoYXBlKCksIGxvZ2ljYWxCb3hTaXplLCB3cml0aW5nTW9kZSwgbWFyZ2luLCBwYWRk
aW5nKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTaGFwZVZhbHVlOjpJbWFnZToKKyAgICAg
ICAgQVNTRVJUKHNoYXBlVmFsdWUtPmltYWdlKCkpOworICAgICAgICBtX3NoYXBlID0gU2hhcGU6
OmNyZWF0ZVNoYXBlKHNoYXBlVmFsdWUtPmltYWdlKCksIDAsIGxvZ2ljYWxCb3hTaXplLCB3cml0
aW5nTW9kZSwgbWFyZ2luLCBwYWRkaW5nKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoK
KyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQogCi0gICAgbV9zaGFwZSA9IFNo
YXBlOjpjcmVhdGVTaGFwZShzaGFwZSwgTGF5b3V0U2l6ZShtX3NoYXBlTG9naWNhbFdpZHRoLCBt
X3NoYXBlTG9naWNhbEhlaWdodCksIG1fcmVuZGVyZXItPnN0eWxlKCktPndyaXRpbmdNb2RlKCks
IG1fcmVuZGVyZXItPnN0eWxlKCktPnNoYXBlTWFyZ2luKCksIG1fcmVuZGVyZXItPnN0eWxlKCkt
PnNoYXBlUGFkZGluZygpKTsKICAgICBBU1NFUlQobV9zaGFwZSk7CiAgICAgcmV0dXJuIG1fc2hh
cGUuZ2V0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVz
L1NoYXBlSW5zaWRlSW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1No
YXBlSW5zaWRlSW5mby5jcHAKaW5kZXggZDEyOTVkMC4uMWM4ZTExMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUluc2lkZUluZm8uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVJbnNpZGVJbmZvLmNwcApAQCAtNDYs
MTEgKzQ2LDE3IEBAIExpbmVTZWdtZW50UmFuZ2U6OkxpbmVTZWdtZW50UmFuZ2UoY29uc3QgSW5s
aW5lSXRlcmF0b3ImIHN0YXJ0LCBjb25zdCBJbmxpbmVJdGVyCiBib29sIFNoYXBlSW5zaWRlSW5m
bzo6aXNFbmFibGVkRm9yKGNvbnN0IFJlbmRlckJsb2NrKiByZW5kZXJlcikKIHsKICAgICBTaGFw
ZVZhbHVlKiBzaGFwZVZhbHVlID0gcmVuZGVyZXItPnN0eWxlKCktPnJlc29sdmVkU2hhcGVJbnNp
ZGUoKTsKLSAgICBpZiAoIXNoYXBlVmFsdWUgfHwgc2hhcGVWYWx1ZS0+dHlwZSgpICE9IFNoYXBl
VmFsdWU6OlNoYXBlKQorICAgIGlmICghc2hhcGVWYWx1ZSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgQmFzaWNTaGFwZSogc2hhcGUgPSBzaGFwZVZhbHVlLT5zaGFwZSgpOwotICAgIHJl
dHVybiBzaGFwZSAmJiBzaGFwZS0+dHlwZSgpICE9IEJhc2ljU2hhcGU6OkJhc2ljU2hhcGVJbnNl
dFJlY3RhbmdsZVR5cGU7CisgICAgc3dpdGNoIChzaGFwZVZhbHVlLT50eXBlKCkpIHsKKyAgICBj
YXNlIFNoYXBlVmFsdWU6OlNoYXBlOgorICAgICAgICByZXR1cm4gc2hhcGVWYWx1ZS0+c2hhcGUo
KSAmJiBzaGFwZVZhbHVlLT5zaGFwZSgpLT50eXBlKCkgIT0gQmFzaWNTaGFwZTo6QmFzaWNTaGFw
ZUluc2V0UmVjdGFuZ2xlVHlwZTsKKyAgICBjYXNlIFNoYXBlVmFsdWU6OkltYWdlOgorICAgICAg
ICByZXR1cm4gc2hhcGVWYWx1ZS0+aXNJbWFnZVZhbGlkKCk7CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KIH0KIAogYm9vbCBTaGFwZUluc2lkZUluZm86OmFkanVz
dExvZ2ljYWxMaW5lVG9wKGZsb2F0IG1pblNlZ21lbnRXaWR0aCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uY3BwCmluZGV4IGUxOTJm
NjUuLmYxMmVkNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMv
U2hhcGVPdXRzaWRlSW5mby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBl
cy9TaGFwZU91dHNpZGVJbmZvLmNwcApAQCAtMzgsOCArMzgsMTggQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGJvb2wgU2hhcGVPdXRzaWRlSW5mbzo6aXNFbmFibGVkRm9yKGNvbnN0IFJlbmRlckJv
eCogYm94KQogewotICAgIFNoYXBlVmFsdWUqIHZhbHVlID0gYm94LT5zdHlsZSgpLT5zaGFwZU91
dHNpZGUoKTsKLSAgICByZXR1cm4gYm94LT5pc0Zsb2F0aW5nV2l0aFNoYXBlT3V0c2lkZSgpICYm
IHZhbHVlLT50eXBlKCkgPT0gU2hhcGVWYWx1ZTo6U2hhcGUgJiYgdmFsdWUtPnNoYXBlKCk7Cisg
ICAgU2hhcGVWYWx1ZSogc2hhcGVWYWx1ZSA9IGJveC0+c3R5bGUoKS0+c2hhcGVPdXRzaWRlKCk7
CisgICAgaWYgKCFib3gtPmlzRmxvYXRpbmdXaXRoU2hhcGVPdXRzaWRlKCkgfHwgIXNoYXBlVmFs
dWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHN3aXRjaCAoc2hhcGVWYWx1ZS0+dHlw
ZSgpKSB7CisgICAgY2FzZSBTaGFwZVZhbHVlOjpTaGFwZToKKyAgICAgICAgcmV0dXJuIHNoYXBl
VmFsdWUtPnNoYXBlKCk7CisgICAgY2FzZSBTaGFwZVZhbHVlOjpJbWFnZToKKyAgICAgICAgcmV0
dXJuIHNoYXBlVmFsdWUtPmlzSW1hZ2VWYWxpZCgpOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CiB9CiAKIGJvb2wgU2hhcGVPdXRzaWRlSW5mbzo6Y29tcHV0ZVNl
Z21lbnRzRm9yTGluZShMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUhlaWdodCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFwZVZhbHVlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhcGVWYWx1ZS5oCmluZGV4IDY3NGFl
ZWIuLmE0N2VkMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
aGFwZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYXBlVmFs
dWUuaApAQCAtMzEsNiArMzEsNyBAQAogI2RlZmluZSBTaGFwZVZhbHVlX2gKIAogI2luY2x1ZGUg
IkJhc2ljU2hhcGVzLmgiCisjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRlICJTdHls
ZUltYWdlLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIApAQCAtNjIsMTIgKzYzLDE2
IEBAIHB1YmxpYzoKIAogICAgIFNoYXBlVmFsdWVUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBt
X3R5cGU7IH0KICAgICBCYXNpY1NoYXBlKiBzaGFwZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcGUu
Z2V0KCk7IH0KKwogICAgIFN0eWxlSW1hZ2UqIGltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9pbWFn
ZS5nZXQoKTsgfQorICAgIGJvb2wgaXNJbWFnZVZhbGlkKCkgY29uc3QgeyByZXR1cm4gaW1hZ2Uo
KSAmJiBpbWFnZSgpLT5jYWNoZWRJbWFnZSgpICYmIGltYWdlKCktPmNhY2hlZEltYWdlKCktPmhh
c0ltYWdlKCk7IH0KICAgICB2b2lkIHNldEltYWdlKFBhc3NSZWZQdHI8U3R5bGVJbWFnZT4gaW1h
Z2UpCiAgICAgeworICAgICAgICBBU1NFUlQodHlwZSgpID09IEltYWdlKTsKICAgICAgICAgaWYg
KG1faW1hZ2UgIT0gaW1hZ2UpCiAgICAgICAgICAgICBtX2ltYWdlID0gaW1hZ2U7CiAgICAgfQor
CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNoYXBlVmFsdWUmIG90aGVyKSBjb25zdCB7IHJl
dHVybiB0eXBlKCkgPT0gb3RoZXIudHlwZSgpOyB9CiAKIHByaXZhdGU6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>204372</attachid>
            <date>2013-06-11 17:10:19 -0700</date>
            <delta_ts>2013-06-12 09:09:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>tmp.patch</filename>
            <type>text/plain</type>
            <size>39261</size>
            <attacher name="Hans Muller">giles_joplin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhMDMzNTdmLi44MDM0YzExIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTMtMDYt
MTAgIEhhbnMgTXVsbGVyICA8aG11bGxlckBhZG9iZS5jb20+CisKKyAgICAgICAgW0NTUyBFeGNs
dXNpb25zXSBNaW5pbWFsIHN1cHBvcnQgZm9yIHVzaW5nIGFuIGltYWdlIHRvIGRlZmluZSBhIHNo
YXBlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTY2
NDMKKworICAgICAgICBPbmUgdGVzdCB0byB2ZXJpZnkgdGhhdCB0aGUgaW5pdGlhbCBpbXBsZW1l
bnRhdGlvbiBvZiBzaGFwZSB2YWx1ZWQgaW1hZ2VzIGlzIHdvcmtpbmcKKyAgICAgICAgZm9yIHNo
YXBlLWluc2lkZS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGZhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAw
MS1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V4Y2x1c2lvbnMvc2hhcGUt
aW5zaWRlL3NoYXBlLWluc2lkZS1pbWFnZS0wMDEuaHRtbDogQWRkZWQuCisKIDIwMTMtMDYtMTEg
IE1paG5lYSBPdmlkZW5pZSAgPG1paG5lYUBhZG9iZS5jb20+CiAKICAgICAgICAgW1F0XVtFRkxd
W0dUS11mYXN0L3JlZ2lvbnMvb3ZlcmZsb3ctc2l6ZS1jaGFuZ2Utd2l0aC1zdGFja2luZy1jb250
ZXh0LXJ0bC5odG1sIGZhaWxzIGFmdGVyIHIxNTEyMDIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAwMS1leHBl
Y3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFw
ZS1pbnNpZGUtaW1hZ2UtMDAxLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uZmRiYWE3MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAwMS1leHBlY3RlZC5o
dG1sCkBAIC0wLDAgKzEsMjQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxz
dHlsZT4KKyAgICAjaW1hZ2Utc2hhcGUgeworICAgICAgICBib3JkZXI6IHNvbGlkIGJsYWNrIDFw
eDsKKyAgICAgICAgZm9udDogMTJweC8xIEFoZW0sIHNhbnMtc2VyaWY7CisgICAgICAgIHBhZGRp
bmc6IDRweDsKKyAgICAgICAgY29sb3I6IGdyZWVuOworICAgICAgICB3aWR0aDogMjRweDsKKyAg
ICAgICAgaGVpZ2h0OiAyNHB4OworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImRhdGE6
aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZ0NBWUFBQUJ6
ZW5yMEFBQUFTa2xFUVZSWUNlM1hJUTRBTUFoRDBYWGgvbGZ1TWtlQ0pqVWZoU3Q1WUpEdGs2eWJE
UC9aREZCakJkTHVVZGpxbWF3QUFRUVFRQUFCQkJCQUFBRUU0Z0xpTit4ZlNxS1AzOEFEdVFNSk82
TE5icjRBQUFBQVNVVk9SSzVDWUlJPSIpOworICAgICAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8t
cmVwZWF0OworICAgIH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPHAgaWQ9ImluZm9y
bWF0aXZlLXRleHQiPgorICAgICAgVGhpcyB0ZXN0IHJlcXVpcmVzIHRoZSBBaGVtIGZvbnQuIEl0
IHVzZXMgYSAzMngzMiBQTkcgaW1hZ2Ugd2l0aCBhIDI0eDI0IHJlZCBzcXVhcmUgaW4gdGhlIGNl
bnRlcgorICAgICAgdG8gZGVmaW5lIGEgc2hhcGUtaW5zaWRlLiBUaGUgY29udGVudCBzaG91bGQg
anVzdCBjb3ZlciB0aGUgc2hhcGUgd2l0aCBzb2xpZCBncmVlbi48L3A+CisKKyAgPGRpdiBpZD0i
aW1hZ2Utc2hhcGUiPlhYPGJyLz5YWDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUt
aW1hZ2UtMDAxLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRl
L3NoYXBlLWluc2lkZS1pbWFnZS0wMDEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi40NmVjN2IxMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXhj
bHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAwMS5odG1sCkBAIC0wLDAg
KzEsMjUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KKyAgICAj
aW1hZ2Utc2hhcGUgeworICAgICAgICBib3JkZXI6IHNvbGlkIGJsYWNrIDFweDsKKyAgICAgICAg
Zm9udDogMTJweC8xIEFoZW0sIHNhbnMtc2VyaWY7CisgICAgICAgIGNvbG9yOiBncmVlbjsKKyAg
ICAgICAgd2lkdGg6IDMycHg7CisgICAgICAgIGhlaWdodDogMzJweDsKKyAgICAgICAgLXdlYmtp
dC1zaGFwZS1pbnNpZGU6IHVybCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFB
QU5TVWhFVWdBQUFDQUFBQUFnQ0FZQUFBQnplbnIwQUFBQVNrbEVRVlJZQ2UzWElRNEFNQWhEMFhY
aC9sZnVNa2VDSmpVZmhTdDVZSkR0azZ5YkRQL1pERkJqQmRMdVVkanFtYXdBQVFRUVFBQUJCQkJB
QUFFRTRnTGlOK3hmU3FLUDM4QUR1UU1KTzZMTmJyNEFBQUFBU1VWT1JLNUNZSUk9Iik7CisgICAg
ICAgIC13ZWJraXQtc2hhcGUtaW1hZ2UtdGhyZXNob2xkOiAwOworICAgICAgICBiYWNrZ3JvdW5k
LWltYWdlOiB1cmwoImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVn
QUFBQ0FBQUFBZ0NBWUFBQUJ6ZW5yMEFBQUFTa2xFUVZSWUNlM1hJUTRBTUFoRDBYWGgvbGZ1TWtl
Q0pqVWZoU3Q1WUpEdGs2eWJEUC9aREZCakJkTHVVZGpxbWF3QUFRUVFRQUFCQkJCQUFBRUU0Z0xp
Tit4ZlNxS1AzOEFEdVFNSk82TE5icjRBQUFBQVNVVk9SSzVDWUlJPSIpOworICAgICAgICBiYWNr
Z3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OworICAgIH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9k
eT4KKyAgPHAgaWQ9ImluZm9ybWF0aXZlLXRleHQiPgorICAgICAgVGhpcyB0ZXN0IHJlcXVpcmVz
IHRoZSBBaGVtIGZvbnQuIEl0IHVzZXMgYSAzMngzMiBQTkcgaW1hZ2Ugd2l0aCBhIDI0eDI0IHJl
ZCBzcXVhcmUgaW4gdGhlIGNlbnRlcgorICAgICAgdG8gZGVmaW5lIGEgc2hhcGUtaW5zaWRlLiBU
aGUgY29udGVudCBzaG91bGQganVzdCBjb3ZlciB0aGUgc2hhcGUgd2l0aCBzb2xpZCBncmVlbi48
L3A+CisKKyAgPGRpdiBpZD0iaW1hZ2Utc2hhcGUiPlhYIFhYPC9kaXY+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRl
L3NoYXBlLWluc2lkZS1pbWFnZS0wMDItZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
ZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAwMi1leHBlY3RlZC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhNTNmZTgKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBl
LWluc2lkZS1pbWFnZS0wMDItZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDIxIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+CisgICAgI2ltYWdlLXNoYXBlIHsKKyAg
ICAgICAgZm9udDogMTJweC8xIEFoZW0sIHNhbnMtc2VyaWY7CisgICAgICAgIGNvbG9yOiBncmVl
bjsKKyAgICAgICAgd2lkdGg6IDI0cHg7CisgICAgICAgIGhlaWdodDogMjRweDsKKyAgICAgICAg
YmFja2dyb3VuZC1pbWFnZTogdXJsKCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29B
QUFBTlNVaEVVZ0FBQUNBQUFBQWdDQVlBQUFCemVucjBBQUFBUkVsRVFWUllDZTNYc1EwQUlBZ0VR
SEgvblY4bjBBcHRqdENSRUhJMFVCbGpaMk1rZGVvK1Q4VVhOUU1RSUVDQUFBRUNCQWdRSUZCSjcx
dHdPKzJ0Z0FDQjd3SUxvSThIT2FPbXpGc0FBQUFBU1VWT1JLNUNZSUk9Iik7CisgICAgICAgIGJh
Y2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CisgICAgfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxi
b2R5PgorICA8cCBpZD0iaW5mb3JtYXRpdmUtdGV4dCI+CisgICAgICBUaGlzIHRlc3QgcmVxdWly
ZXMgdGhlIEFoZW0gZm9udC4gSXQgdXNlcyBhIDI0eDI0IHNxdWFyZSBQTkcgaW1hZ2Ugd2hlcmUg
YWxsIHBpeGVscyBhcmUgcmVkLAorICAgICAgdG8gZGVmaW5lIGEgc2hhcGUtaW5zaWRlLiBUaGUg
Y29udGVudCBzaG91bGQganVzdCBjb3ZlciB0aGUgc2hhcGUgd2l0aCBzb2xpZCBncmVlbi48L3A+
CisgIDxkaXYgaWQ9ImltYWdlLXNoYXBlIj5YWDxici8+WFg8L2Rpdj4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUv
c2hhcGUtaW5zaWRlLWltYWdlLTAwMi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25z
L3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtaW1hZ2UtMDAyLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uMDc5ODRlMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAwMi5o
dG1sCkBAIC0wLDAgKzEsMjQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxz
dHlsZT4KKyAgICAjaW1hZ2Utc2hhcGUgeworICAgICAgICBmb250OiAxMnB4LzEgQWhlbSwgc2Fu
cy1zZXJpZjsKKyAgICAgICAgY29sb3I6IGdyZWVuOworICAgICAgICB3aWR0aDogMjRweDsKKyAg
ICAgICAgaGVpZ2h0OiAyNHB4OworICAgICAgICAtd2Via2l0LXNoYXBlLWluc2lkZTogdXJsKCJk
YXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWdDQVlB
QUFCemVucjBBQUFBUkVsRVFWUllDZTNYc1EwQUlBZ0VRSEgvblY4bjBBcHRqdENSRUhJMFVCbGpa
Mk1rZGVvK1Q4VVhOUU1RSUVDQUFBRUNCQWdRSUZCSjcxdHdPKzJ0Z0FDQjd3SUxvSThIT2FPbXpG
c0FBQUFBU1VWT1JLNUNZSUk9Iik7CisgICAgICAgIC13ZWJraXQtc2hhcGUtaW1hZ2UtdGhyZXNo
b2xkOiAwOworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImRhdGE6aW1hZ2UvcG5nO2Jh
c2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZ0NBWUFBQUJ6ZW5yMEFBQUFSRWxF
UVZSWUNlM1hzUTBBSUFnRVFISC9uVjhuMEFwdGp0Q1JFSEkwVUJsaloyTWtkZW8rVDhVWE5RTVFJ
RUNBQUFFQ0JBZ1FJRkJKNzF0d08rMnRnQUNCN3dJTG9JOEhPYU9tekZzQUFBQUFTVVZPUks1Q1lJ
ST0iKTsKKyAgICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKKyAgICB9Cis8L3N0
eWxlPgorPC9oZWFkPgorPGJvZHk+CisgIDxwIGlkPSJpbmZvcm1hdGl2ZS10ZXh0Ij4KKyAgICAg
IFRoaXMgdGVzdCByZXF1aXJlcyB0aGUgQWhlbSBmb250LiBJdCB1c2VzIGEgMjR4MjQgc3F1YXJl
IFBORyBpbWFnZSB3aGVyZSBhbGwgcGl4ZWxzIGFyZSByZWQsCisgICAgICB0byBkZWZpbmUgYSBz
aGFwZS1pbnNpZGUuIFRoZSBjb250ZW50IHNob3VsZCBqdXN0IGNvdmVyIHRoZSBzaGFwZSB3aXRo
IHNvbGlkIGdyZWVuLjwvcD4KKworICA8ZGl2IGlkPSJpbWFnZS1zaGFwZSI+WFggWFg8L2Rpdj4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNzg1YTZhNy4uNWNlMjM5
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTIyMDksNiArMjIwOSw3IEBAIHNldChXZWJDb3Jl
X1NPVVJDRVMKICAgICByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFVuZGVyT3Zlci5jcHAK
IAogICAgIHJlbmRlcmluZy9zaGFwZXMvUG9seWdvblNoYXBlLmNwcAorICAgIHJlbmRlcmluZy9z
aGFwZXMvUmFzdGVyU2hhcGUuY3BwCiAgICAgcmVuZGVyaW5nL3NoYXBlcy9SZWN0YW5nbGVTaGFw
ZS5jcHAKICAgICByZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcAogICAgIHJlbmRlcmluZy9zaGFw
ZXMvU2hhcGVJbmZvLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDdmMGQ2MDYuLjVmNTAyOGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw2MiBAQAorMjAxMy0wNi0xMCAgSGFucyBNdWxsZXIgIDxobXVsbGVyQGFk
b2JlLmNvbT4KKworICAgICAgICBbQ1NTIEV4Y2x1c2lvbnNdIE1pbmltYWwgc3VwcG9ydCBmb3Ig
dXNpbmcgYW4gaW1hZ2UgdG8gZGVmaW5lIGEgc2hhcGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNjY0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgYSBmaXJzdCBzbWFsbCBzdGVwIHRvd2Fy
ZHMgc3VwcG9ydGluZyBDU1Mgc2hhcGVzIGRlZmluZWQgYnkgYW4KKyAgICAgICAgaW1hZ2UgVVJM
IGFuZCBhIGFscGhhIGNoYW5uZWwgdGhyZXNob2xkLiBUbyBrZWVwIHRoZSBwYXRjaCBhcyBzbWFs
bCBhcworICAgICAgICBwb3NzaWJsZSwgdGhlcmUgYXJlIG1hbnkgbGltaXRhdGlvbnM6CisgICAg
ICAgIC0gSW1hZ2Ugc2hhcGUgdmFsdWVzIGNhbiBvbmx5IGJlIHVzZWQgd2l0aCBzaGFwZS1pbnNp
ZGUgKG5vdCBzaGFwZS1vdXRzaWRlKS4KKyAgICAgICAgLSBUaGUgQ1NTIHNoYXBlLWltYWdlLXRo
cmVzaG9sZCBwcm9wZXJ0eSBpc24ndCBzdXBwb3J0ZWQsIGN1cnJlbnRseSB0aGUgdGhyZXNob2xk
IGlzIGFsd2F5cyAwLgorICAgICAgICAtIFRoZSBSYXN0ZXJTaGFwZSBpbnRlcm5hbCByZXByZXNl
bnRhdGlvbiBvZiBhbiBpbWFnZSBzaGFwZSBzaG91bGQgYmUgbW9yZSBlZmZpY2llbnQuCisgICAg
ICAgIC0gR0lGcyBhcmVuJ3Qgc3VwcG9ydGVkIGNvcnJlY3RseSwgb25seSBmcmFtZTAgc2hvdWxk
IGJlIHVzZWQuCisgICAgICAgIC0gVGhlIGZpcnN0IGxheW91dCBwb3NpdGlvbiBpc24ndCBjb21w
dXRlZCwgaXQncyBhc3N1bWVkIHRoYXQgbGF5b3V0IGNhbiBiZWdpbiBhdCB0aGUgdG9wIG9mIHRo
ZSBzaGFwZS4KKyAgICAgICAgLSBUaGVyZSdzIG5vIHN1cHBvcnQgZm9yIHNoYXBlLW1hcmdpbiBh
bmQgc2hhcGUtcGFkZGluZy4KKworICAgICAgICBUZXN0OiBmYXN0L2V4Y2x1c2lvbnMvc2hhcGUt
aW5zaWRlL3NoYXBlLWluc2lkZS1pbWFnZS0wMDEuaHRtbAorCisgICAgICAgICogQ01ha2VMaXN0
cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQu
cHJpOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2o6CisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6aW1hZ2VD
aGFuZ2VkKTogV2hlbiB0aGUgaW1hZ2UgaGFzIGZpbmlzaGVkIGxvYWRpbmcsIHJlcXVlc3QgYSBs
YXlvdXQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6
OnNldFN0eWxlKTogQWRkIG5vdGlmeSBjbGllbnRzIGZvciBzaGFwZSBpbWFnZXMuCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnVwZGF0ZVNoYXBlSW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6cmVtb3ZlU2hhcGVJbWFnZUNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJP
YmplY3Q6OmFyZW5hRGVsZXRlKTogUmVtb3ZlIG5vdGlmeSBjbGllbnRzIGZvciBzaGFwZSBpbWFn
ZXMuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oOgorICAgICAgICAqIHJlbmRl
cmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuY3BwOiBBZGRlZC4gQSBTaGFwZSBkZWZpbmVkIGJ5IHRo
cmVzaG9sZGluZyBhbiBpbWFnZSdzIGFscGhhIGNoYW5uZWwuCisgICAgICAgIChXZWJDb3JlOjpS
YXN0ZXJTaGFwZUludGVydmFsczo6Ym91bmRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJhc3RlclNo
YXBlSW50ZXJ2YWxzOjphZGRJbnRlcnZhbCk6IEFkZCBhIHNpbmdsZSBydW4gdG8gdGhlIHNoYXBl
LgorICAgICAgICAoV2ViQ29yZTo6YWxpZ25lZFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmFz
dGVyU2hhcGVJbnRlcnZhbHM6OmdldEludGVydmFscyk6IFJldHVybiB0aGUgc2hhcGUncyBydW5z
IHRoYXQgZmFsbCB3aXRoaW4gYSBob3Jpem9uYWwgYm94LgorICAgICAgICAoV2ViQ29yZTo6UmFz
dGVyU2hhcGU6Om1hcmdpbkludGVydmFscyk6IEludGVybmFsIHJlcHJlc2VudGF0aW9uIG9mIHRo
ZSBzaGFwZSB3aXRoIHNoYXBlLW1hcmdpbiBmYWN0b3JlZCBpbi4gIEN1cnJlbnRseSBvbmx5IGEg
c3R1Yi4KKyAgICAgICAgKFdlYkNvcmU6OlJhc3RlclNoYXBlOjpwYWRkaW5nSW50ZXJ2YWxzKTog
SW50ZXJuYWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIHNoYXBlIHdpdGggc2hhcGUtcGFkZGluZyBm
YWN0b3JlZCBpbi4gIEN1cnJlbnRseSBvbmx5IGEgc3R1Yi4KKyAgICAgICAgKFdlYkNvcmU6OlJh
c3RlclNoYXBlOjpnZXRFeGNsdWRlZEludGVydmFscyk6CisgICAgICAgIChXZWJDb3JlOjpSYXN0
ZXJTaGFwZTo6Z2V0SW5jbHVkZWRJbnRlcnZhbHMpOgorICAgICAgICAoV2ViQ29yZTo6UmFzdGVy
U2hhcGU6OmZpcnN0SW5jbHVkZWRJbnRlcnZhbExvZ2ljYWxUb3ApOgorICAgICAgICAqIHJlbmRl
cmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJhc3RlclNoYXBl
SW50ZXJ2YWxzOjpSYXN0ZXJTaGFwZUludGVydmFscyk6IEludGVybmFsIHJ1biBsZW5ndGggZW5j
b2RlZCByZXByZXNlbnRhdGlvbiBvZiBhIFJhc3RlclNoYXBlLgorICAgICAgICAoV2ViQ29yZTo6
UmFzdGVyU2hhcGVJbnRlcnZhbHM6OmlzRW1wdHkpOgorICAgICAgICAoV2ViQ29yZTo6UmFzdGVy
U2hhcGU6OlJhc3RlclNoYXBlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXBlOjpjcmVhdGVTaGFwZSk6IFN1cHBvcnQgZm9yIGNy
ZWF0aW5nIGEgU2hhcGUgYmFzZWQgb24gYSBSYXN0ZXJTaGFwZUludGVydmFscyBvYmplY3QuCisg
ICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9z
aGFwZXMvU2hhcGVJbmZvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ojo6Y29tcHV0ZWRTaGFwZSk6
IEFkZGVkIHN1cHBvcnQgZm9yIHRoZSBJbWFnZSBTaGFwZVZhbHVlIHR5cGUuCisgICAgICAgICog
cmVuZGVyaW5nL3NoYXBlcy9TaGFwZUluc2lkZUluZm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2hhcGVJbnNpZGVJbmZvOjppc0VuYWJsZWRGb3IpOiBBZGRlZCBzdXBwb3J0IGZvciB0aGUgSW1h
Z2UgU2hhcGVWYWx1ZSB0eXBlLgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRz
aWRlSW5mby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZU91dHNpZGVJbmZvOjppc0VuYWJs
ZWRGb3IpOiBBZGRlZCBzdXBwb3J0IGZvciB0aGUgSW1hZ2UgU2hhcGVWYWx1ZSB0eXBlLgorICAg
ICAgICAqIHJlbmRlcmluZy9zdHlsZS9TaGFwZVZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpT
aGFwZVZhbHVlOjppc0ltYWdlVmFsaWQpOiBUcnVlIGlmIHRoZSBzaGFwZSdzIGltYWdlIGlzIHJl
YWR5IHRvIGJlIGJlIHByb2Nlc3NlZC4KKwogMjAxMy0wNi0xMSAgQ2hyaXN0b3BoZSBEdW1leiAg
PGNoLmR1bWV6QHNpc2Euc2Ftc3VuZy5jb20+CiAKICAgICAgICAgU3VwcG9ydCBsYXRlc3QgV2Vi
IElETCBuYW1lZCBwcm9wZXJ0eSBnZXR0ZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpp
bmRleCA3OGJkNjE4Li40MDMzYWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAg
LTQ2MjEsNiArNDYyMSw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuaCBcCiAJU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3NoYXBlcy9Qb2x5Z29uU2hhcGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc2hhcGVzL1BvbHlnb25TaGFwZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3No
YXBlcy9SYXN0ZXJTaGFwZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jl
Y3RhbmdsZVNoYXBlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SZWN0
YW5nbGVTaGFwZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNw
cCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNv
cmUvVGFyZ2V0LnByaQppbmRleCAwN2JhOGJkLi4wZDk0NTJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTEy
MzksNiArMTIzOSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHJlbmRlcmluZy9Sb290SW5saW5lQm94
LmNwcCBcCiAgICAgcmVuZGVyaW5nL1Njcm9sbEJlaGF2aW9yLmNwcCBcCiAgICAgcmVuZGVyaW5n
L3NoYXBlcy9Qb2x5Z29uU2hhcGUuY3BwIFwKKyAgICByZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNo
YXBlLmNwcCBcCiAgICAgcmVuZGVyaW5nL3NoYXBlcy9SZWN0YW5nbGVTaGFwZS5jcHAgXAogICAg
IHJlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwIFwKICAgICByZW5kZXJpbmcvc2hhcGVzL1NoYXBl
SW5mby5jcHAgXApAQCAtMjUwNyw2ICsyNTA4LDcgQEAgSEVBREVSUyArPSBcCiAgICAgcmVuZGVy
aW5nL1Jvb3RJbmxpbmVCb3guaCBcCiAgICAgcmVuZGVyaW5nL1Njcm9sbEJlaGF2aW9yLmggXAog
ICAgIHJlbmRlcmluZy9zaGFwZXMvUG9seWdvblNoYXBlLmggXAorICAgIHJlbmRlcmluZy9zaGFw
ZXMvUmFzdGVyU2hhcGUuaCBcCiAgICAgcmVuZGVyaW5nL3NoYXBlcy9SZWN0YW5nbGVTaGFwZS5o
IFwKICAgICByZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmggXAogICAgIHJlbmRlcmluZy9zaGFwZXMv
U2hhcGVJbmZvLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9q
L1dlYkNvcmUudmN4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3Jl
LnZjeHByb2oKaW5kZXggMGQ5NWEyMi4uOGIxM2MzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCkBAIC02MzAxLDYgKzYzMDEsNyBAQAogICAg
ICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAg
IDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXHNoYXBl
c1xQb2x5Z29uU2hhcGUuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccmVuZGVy
aW5nXHNoYXBlc1xSYXN0ZXJTaGFwZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxyZW5kZXJpbmdcc2hhcGVzXFJlY3RhbmdsZVNoYXBlLmNwcCIgLz4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xzaGFwZXNcU2hhcGUuY3BwIiAvPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXHNoYXBlc1xTaGFwZUluc2lkZUluZm8uY3BwIiAvPgpA
QCAtMTIxOTMsNiArMTIxOTQsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVy
aW5nXFJlbmRlclNsaWRlci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVy
aW5nXFJlbmRlclNuYXBzaG90dGVkUGx1Z0luLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxyZW5kZXJpbmdcc2hhcGVzXFBvbHlnb25TaGFwZS5oIiAvPgorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccmVuZGVyaW5nXHNoYXBlc1xSYXN0ZXJTaGFwZS5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXHNoYXBlc1xSZWN0YW5nbGVTaGFwZS5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXHNoYXBlc1xTaGFwZS5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXHNoYXBlc1xTaGFwZUluc2lkZUlu
Zm8uaCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCA0YzQ4N2VhLi5mNDcyZjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xODM1LDYgKzE4MzUsOCBAQAog
CQk2RTY3RDJBNjEyODBFOEE0MDA4NzU4RjcgLyogRXh0ZW5zaW9uczNET3BlbkdMLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNjdEMkE0MTI4MEU4
QTQwMDg3NThGNyAvKiBFeHRlbnNpb25zM0RPcGVuR0wuY3BwICovOyB9OwogCQk2RTY3RDJBNzEy
ODBFOEE0MDA4NzU4RjcgLyogRXh0ZW5zaW9uczNET3BlbkdMLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTY3RDJBNTEyODBFOEE0MDA4NzU4RjcgLyog
RXh0ZW5zaW9uczNET3BlbkdMLmggKi87IH07CiAJCTZFNjdEMkE5MTI4MEU4QkQwMDg3NThGNyAv
KiBFeHRlbnNpb25zM0QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDZFNjdEMkE4MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25zM0QuaCAqLzsgfTsK
KwkJNkU4NEU5RTAxNzY2OEJFRTAwODE1QjY4IC8qIFJhc3RlclNoYXBlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFODRFOURFMTc2NjhCQUQwMDgx
NUI2OCAvKiBSYXN0ZXJTaGFwZS5jcHAgKi87IH07CisJCTZFODRFOUUxMTc2NjhCRjEwMDgxNUI2
OCAvKiBSYXN0ZXJTaGFwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNkU4NEU5REYxNzY2OEJBRDAwODE1QjY4IC8qIFJhc3RlclNoYXBlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNkVCQzVFQUYxMzhC
NTBGMjAwQTBDRjhBIC8qIEpTRmxvYXQ2NEFycmF5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFQkM1RUFEMTM4QjUwRjIwMEEwQ0Y4QSAvKiBKU0Zs
b2F0NjRBcnJheS5jcHAgKi87IH07CiAJCTZFQkM1RUIwMTM4QjUwRjIwMEEwQ0Y4QSAvKiBKU0Zs
b2F0NjRBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNkVCQzVFQUUxMzhCNTBGMjAwQTBDRjhBIC8qIEpTRmxvYXQ2NEFycmF5LmggKi87IH07CiAJ
CTZFQkYwRTQ4MTJBODkyNjEwMERCMTcwOSAvKiBPRVNUZXh0dXJlRmxvYXQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkVCRjBFNDUxMkE4OTI2MTAw
REIxNzA5IC8qIE9FU1RleHR1cmVGbG9hdC5jcHAgKi87IH07CkBAIC04MjI4LDYgKzgyMzAsOCBA
QAogCQk2RTY3RDJBNDEyODBFOEE0MDA4NzU4RjcgLyogRXh0ZW5zaW9uczNET3BlbkdMLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV4dGVuc2lvbnMzRE9wZW5HTC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFNjdEMkE1MTI4MEU4QTQwMDg3NThG
NyAvKiBFeHRlbnNpb25zM0RPcGVuR0wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRXh0ZW5zaW9uczNET3BlbkdMLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZF
NjdEMkE4MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25zM0QuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRXh0ZW5zaW9uczNELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTZFODRFOURFMTc2NjhCQUQwMDgxNUI2OCAvKiBSYXN0ZXJTaGFwZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSYXN0ZXJTaGFwZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTZFODRFOURGMTc2NjhCQUQwMDgxNUI2OCAvKiBSYXN0ZXJT
aGFwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSYXN0ZXJTaGFwZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RUJDNUQ4MDEzOEI0QzRFMDBBMENGOEEgLyog
RmxvYXQ2NEFycmF5LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBGbG9hdDY0QXJyYXkuaWRs
OyBwYXRoID0gY2FudmFzL0Zsb2F0NjRBcnJheS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTZFQkM1RUFEMTM4QjUwRjIwMEEwQ0Y4QSAvKiBKU0Zsb2F0NjRBcnJheS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0Zsb2F0NjRBcnJheS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFQkM1RUFFMTM4QjUwRjIwMEEwQ0Y4QSAvKiBK
U0Zsb2F0NjRBcnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0Zsb2F0
NjRBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjA1NDQsNiArMjA1NDgs
OCBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJRkQwOEE4N0ExNzVEMzkyNjAwMkNEMzYwIC8qIFBv
bHlnb25TaGFwZS5jcHAgKi8sCiAJCQkJRkQwOEE4N0IxNzVEMzkyNjAwMkNEMzYwIC8qIFBvbHln
b25TaGFwZS5oICovLAorCQkJCTZFODRFOURFMTc2NjhCQUQwMDgxNUI2OCAvKiBSYXN0ZXJTaGFw
ZS5jcHAgKi8sCisJCQkJNkU4NEU5REYxNzY2OEJBRDAwODE1QjY4IC8qIFJhc3RlclNoYXBlLmgg
Ki8sCiAJCQkJRkQwOEE4N0MxNzVEMzkyNjAwMkNEMzYwIC8qIFJlY3RhbmdsZVNoYXBlLmNwcCAq
LywKIAkJCQlGRDA4QTg3RDE3NUQzOTI2MDAyQ0QzNjAgLyogUmVjdGFuZ2xlU2hhcGUuaCAqLywK
IAkJCQlGRDA4QTg3RTE3NUQzOTI2MDAyQ0QzNjAgLyogU2hhcGUuY3BwICovLApAQCAtMjA4NjQs
NiArMjA4NzAsNyBAQAogCQkJZmlsZXMgPSAoCiAJCQkJRkUxMTVGQUIxNjc5ODhDRDAwMjQ5MTM0
IC8qIEFic3RyYWN0RGF0YWJhc2VTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFNEFBREVF
MTZEMkMzNzQwMDAyNkZGQyAvKiBBYnN0cmFjdFNRTFN0YXRlbWVudC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNkU4NEU5RTExNzY2OEJGMTAwODE1QjY4IC8qIFJhc3RlclNoYXBlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlGRTRBQURFRjE2RDJDMzc0MDAwMjZGRkMgLyogQWJzdHJhY3RTUUxTdGF0ZW1l
bnRCYWNrZW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUUxQjFEMTBGRjU5ODY5MDA1NzZCM0Ig
LyogQWJzdHJhY3RXb3JrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5QTgxMjJFMEZCQjlDMUQw
MDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmggaW4gSGVhZGVycyAqLywKQEAg
LTI2OTU1LDYgKzI2OTYyLDcgQEAKIAkJCQlCRTZERjcxMTE3MUNBMkRBMDBERDUyQjggLyogSlNB
dWRpb1RyYWNrQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJFNkRGNzEzMTcxQ0EyREEw
MERENTJCOCAvKiBKU0F1ZGlvVHJhY2tMaXN0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUZCNzE5QzQwMTcyMzhDQUUwMDIyREUzNCAvKiBXZWJLaXRDU1NNYXRGdW5jdGlvblZhbHVlLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTZFODRFOUUwMTc2NjhCRUUwMDgxNUI2OCAvKiBSYXN0ZXJT
aGFwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2suY3BwCmluZGV4IGZhYjY5YTguLmQzOGJiMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmNwcApAQCAtMTQzNSw2ICsxNDM1LDIxIEBAIHZvaWQgUmVuZGVyQmxvY2s6
OmxheW91dCgpCiB9CiAKICNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKK3ZvaWQgUmVuZGVyQmxvY2s6
OmltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIgaW1hZ2UsIGNvbnN0IEludFJlY3QqKQorewor
ICAgIFJlbmRlckJveDo6aW1hZ2VDaGFuZ2VkKGltYWdlKTsKKworICAgIGlmICghcGFyZW50KCkp
CisgICAgICAgIHJldHVybjsKKworICAgIFNoYXBlVmFsdWUqIHNoYXBlVmFsdWUgPSBzdHlsZSgp
LT5zaGFwZUluc2lkZSgpOworICAgIGlmIChzaGFwZVZhbHVlICYmIHNoYXBlVmFsdWUtPmltYWdl
KCkgJiYgc2hhcGVWYWx1ZS0+aW1hZ2UoKS0+ZGF0YSgpID09IGltYWdlKSB7CisgICAgICAgIFNo
YXBlSW5zaWRlSW5mbyogc2hhcGVJbnNpZGVJbmZvID0gZW5zdXJlU2hhcGVJbnNpZGVJbmZvKCk7
CisgICAgICAgIHNoYXBlSW5zaWRlSW5mby0+ZGlydHlTaGFwZVNpemUoKTsKKyAgICAgICAgbWFy
a1NoYXBlSW5zaWRlRGVzY2VuZGFudHNGb3JMYXlvdXQoKTsKKyAgICB9Cit9CisKIHZvaWQgUmVu
ZGVyQmxvY2s6OnVwZGF0ZVNoYXBlSW5zaWRlSW5mb0FmdGVyU3R5bGVDaGFuZ2UoY29uc3QgU2hh
cGVWYWx1ZSogc2hhcGVJbnNpZGUsIGNvbnN0IFNoYXBlVmFsdWUqIG9sZFNoYXBlSW5zaWRlKQog
ewogICAgIC8vIEZJWE1FOiBBIGZ1dHVyZSBvcHRpbWl6YXRpb24gd291bGQgZG8gYSBkZWVwIGNv
bXBhcmlzb24gZm9yIGVxdWFsaXR5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2su
aAppbmRleCBiZDEwYzk4Li4zZmZhN2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2suaApAQCAtNDY4LDYgKzQ2OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG1hcmtTaGFwZUlu
c2lkZURlc2NlbmRhbnRzRm9yTGF5b3V0KCk7CiAgICAgU2hhcGVJbnNpZGVJbmZvKiBsYXlvdXRT
aGFwZUluc2lkZUluZm8oKSBjb25zdDsKICAgICBib29sIGFsbG93c1NoYXBlSW5zaWRlSW5mb1No
YXJpbmcoKSBjb25zdCB7IHJldHVybiAhaXNJbmxpbmUoKSAmJiAhaXNGbG9hdGluZygpOyB9Cisg
ICAgdmlydHVhbCB2b2lkIGltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIsIGNvbnN0IEludFJl
Y3QqID0gMCkgT1ZFUlJJREU7CiAjZW5kaWYKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCAyZDNhYzA0Li5lZDEyNzllIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMTg0NCw2ICsxODQ0LDEx
IEBAIHZvaWQgUmVuZGVyT2JqZWN0OjpzZXRTdHlsZShQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBz
dHlsZSkKICAgICB1cGRhdGVJbWFnZShvbGRTdHlsZSA/IG9sZFN0eWxlLT5ib3JkZXJJbWFnZSgp
LmltYWdlKCkgOiAwLCBtX3N0eWxlID8gbV9zdHlsZS0+Ym9yZGVySW1hZ2UoKS5pbWFnZSgpIDog
MCk7CiAgICAgdXBkYXRlSW1hZ2Uob2xkU3R5bGUgPyBvbGRTdHlsZS0+bWFza0JveEltYWdlKCku
aW1hZ2UoKSA6IDAsIG1fc3R5bGUgPyBtX3N0eWxlLT5tYXNrQm94SW1hZ2UoKS5pbWFnZSgpIDog
MCk7CiAKKyNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKKyAgICB1cGRhdGVTaGFwZUltYWdlKG9sZFN0
eWxlID8gb2xkU3R5bGUtPnNoYXBlSW5zaWRlKCkgOiAwLCBtX3N0eWxlID8gbV9zdHlsZS0+c2hh
cGVJbnNpZGUoKSA6IDApOworICAgIHVwZGF0ZVNoYXBlSW1hZ2Uob2xkU3R5bGUgPyBvbGRTdHls
ZS0+c2hhcGVPdXRzaWRlKCkgOiAwLCBtX3N0eWxlID8gbV9zdHlsZS0+c2hhcGVPdXRzaWRlKCkg
OiAwKTsKKyNlbmRpZgorCiAgICAgLy8gV2UgbmVlZCB0byBlbnN1cmUgdGhhdCB2aWV3LT5tYXhp
bWFsT3V0bGluZVNpemUoKSBpcyB2YWxpZCBmb3IgYW55IHJlcGFpbnRzIHRoYXQgaGFwcGVuCiAg
ICAgLy8gZHVyaW5nIHN0eWxlRGlkQ2hhbmdlIChpdCdzIHVzZWQgYnkgY2xpcHBlZE92ZXJmbG93
UmVjdEZvclJlcGFpbnQoKSkuCiAgICAgaWYgKG1fc3R5bGUtPm91dGxpbmVXaWR0aCgpID4gMCAm
JiBtX3N0eWxlLT5vdXRsaW5lU2l6ZSgpID4gbWF4aW1hbE91dGxpbmVTaXplKFBhaW50UGhhc2VP
dXRsaW5lKSkKQEAgLTIwOTYsNiArMjEwMSwxNCBAQCB2b2lkIFJlbmRlck9iamVjdDo6dXBkYXRl
SW1hZ2UoU3R5bGVJbWFnZSogb2xkSW1hZ2UsIFN0eWxlSW1hZ2UqIG5ld0ltYWdlKQogICAgIH0K
IH0KIAorI2lmIEVOQUJMRShDU1NfU0hBUEVTKQordm9pZCBSZW5kZXJPYmplY3Q6OnVwZGF0ZVNo
YXBlSW1hZ2UoY29uc3QgU2hhcGVWYWx1ZSogb2xkU2hhcGVWYWx1ZSwgY29uc3QgU2hhcGVWYWx1
ZSogbmV3U2hhcGVWYWx1ZSkKK3sKKyAgICBpZiAob2xkU2hhcGVWYWx1ZSB8fCBuZXdTaGFwZVZh
bHVlKQorICAgICAgICB1cGRhdGVJbWFnZShvbGRTaGFwZVZhbHVlID8gb2xkU2hhcGVWYWx1ZS0+
aW1hZ2UoKSA6IDAsIG5ld1NoYXBlVmFsdWUgPyBuZXdTaGFwZVZhbHVlLT5pbWFnZSgpIDogMCk7
Cit9CisjZW5kaWYKKwogTGF5b3V0UmVjdCBSZW5kZXJPYmplY3Q6OnZpZXdSZWN0KCkgY29uc3QK
IHsKICAgICByZXR1cm4gdmlldygpLT52aWV3UmVjdCgpOwpAQCAtMjYxMiw2ICsyNjI1LDE2IEBA
IHZvaWQgUmVuZGVyT2JqZWN0OjpkZXN0cm95KCkKICAgICBhcmVuYURlbGV0ZShyZW5kZXJBcmVu
YSgpLCB0aGlzKTsKIH0KIAorI2lmIEVOQUJMRShDU1NfU0hBUEVTKQorc3RhdGljIGlubGluZSB2
b2lkIHJlbW92ZVNoYXBlSW1hZ2VDbGllbnQoUmVuZGVyT2JqZWN0ICp0aGlzUmVuZGVyT2JqZWN0
LCBTaGFwZVZhbHVlKiBzaGFwZVZhbHVlKQoreworICAgIGlmICghc2hhcGVWYWx1ZSkKKyAgICAg
ICAgcmV0dXJuOworICAgIGlmIChTdHlsZUltYWdlKiBzaGFwZUltYWdlID0gc2hhcGVWYWx1ZS0+
aW1hZ2UoKSkKKyAgICAgICAgc2hhcGVJbWFnZS0+cmVtb3ZlQ2xpZW50KHRoaXNSZW5kZXJPYmpl
Y3QpOworfQorI2VuZGlmCisKIHZvaWQgUmVuZGVyT2JqZWN0OjphcmVuYURlbGV0ZShSZW5kZXJB
cmVuYSogYXJlbmEsIHZvaWQqIGJhc2UpCiB7CiAgICAgaWYgKG1fc3R5bGUpIHsKQEAgLTI2MzAs
NiArMjY1MywxMSBAQCB2b2lkIFJlbmRlck9iamVjdDo6YXJlbmFEZWxldGUoUmVuZGVyQXJlbmEq
IGFyZW5hLCB2b2lkKiBiYXNlKQogCiAgICAgICAgIGlmIChTdHlsZUltYWdlKiBtYXNrQm94SW1h
Z2UgPSBtX3N0eWxlLT5tYXNrQm94SW1hZ2UoKS5pbWFnZSgpKQogICAgICAgICAgICAgbWFza0Jv
eEltYWdlLT5yZW1vdmVDbGllbnQodGhpcyk7CisKKyNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKKyAg
ICAgICAgcmVtb3ZlU2hhcGVJbWFnZUNsaWVudCh0aGlzLCBtX3N0eWxlLT5zaGFwZUluc2lkZSgp
KTsKKyAgICAgICAgcmVtb3ZlU2hhcGVJbWFnZUNsaWVudCh0aGlzLCBtX3N0eWxlLT5zaGFwZU91
dHNpZGUoKSk7CisjZW5kaWYKICAgICB9CiAKICNpZm5kZWYgTkRFQlVHCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKaW5kZXggOTM1N2FjNS4uZmI4ODk0MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaApAQCAtNzAzLDYgKzcwMyw5IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgdXBkYXRlRmlsbEltYWdlcyhjb25zdCBGaWxsTGF5ZXIqLCBjb25zdCBG
aWxsTGF5ZXIqKTsKICAgICB2b2lkIHVwZGF0ZUltYWdlKFN0eWxlSW1hZ2UqLCBTdHlsZUltYWdl
Kik7CisjaWYgRU5BQkxFKENTU19TSEFQRVMpCisgICAgdm9pZCB1cGRhdGVTaGFwZUltYWdlKGNv
bnN0IFNoYXBlVmFsdWUqLCBjb25zdCBTaGFwZVZhbHVlKik7CisjZW5kaWYKIAogICAgIHZpcnR1
YWwgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkYzk1ODcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNwcApAQCAtMCwwICsxLDE2
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRl
ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
ICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMKKyAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTCisgKiBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorICogQ09Q
WVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULAor
ICogSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULAor
ICogU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRAorICogT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSYXN0ZXJTaGFwZS5o
IgorCisjaW5jbHVkZSAiU2hhcGVJbnRlcnZhbC5oIgorI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFz
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworSW50UmVjdCBSYXN0ZXJTaGFwZUludGVydmFs
czo6Ym91bmRzKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fYm91bmRzKQorICAgICAgICBtX2JvdW5k
cyA9IGFkb3B0UHRyKG5ldyBJbnRSZWN0KG1fcmVnaW9uLmJvdW5kcygpKSk7CisgICAgcmV0dXJu
ICptX2JvdW5kczsKK30KKwordm9pZCBSYXN0ZXJTaGFwZUludGVydmFsczo6YWRkSW50ZXJ2YWwo
aW50IHksIGludCB4MSwgaW50IHgyKQoreworICAgIG1fcmVnaW9uLnVuaXRlKFJlZ2lvbihJbnRS
ZWN0KHgxLCB5LCB4MiAtIHgxLCAxKSkpOworICAgIG1fYm91bmRzLmNsZWFyKCk7Cit9CisKK3N0
YXRpYyBpbmxpbmUgSW50UmVjdCBhbGlnbmVkUmVjdChJbnRSZWN0IHIsIGludCB5MSwgaW50IHky
KQoreworICAgIHJldHVybiBJbnRSZWN0KHIueCgpLCB5MSwgci53aWR0aCgpLCB5MiAtIHkxKTsK
K30KKwordm9pZCBSYXN0ZXJTaGFwZUludGVydmFsczo6Z2V0SW50ZXJ2YWxzKGludCB5MSwgaW50
IHkyLCBTZWdtZW50TGlzdCYgcmVzdWx0KSBjb25zdAoreworICAgIEFTU0VSVCh5MiA+PSB5MSk7
CisKKyAgICBJbnRSZWN0IGxpbmVSZWN0KGJvdW5kcygpLngoKSwgeTEsIGJvdW5kcygpLndpZHRo
KCksIHkyIC0geTEpOworICAgIFJlZ2lvbiBsaW5lUmVnaW9uKGxpbmVSZWN0KTsKKyAgICBsaW5l
UmVnaW9uLmludGVyc2VjdChtX3JlZ2lvbik7CisgICAgaWYgKGxpbmVSZWdpb24uaXNFbXB0eSgp
KQorICAgICAgICByZXR1cm47CisgICAgLy8gRklYTUU6IGlmIGxpbmVSZWdpb24uaXNSZWN0KCkg
dGhlbiB3ZSdyZSBkb25lLgorCisgICAgLy8gRklYTUU6IGFkZCBhIG5vbi1jb3B5aW5nIFJlZ2lv
bjo6cmVjdHMoKSBtZXRob2QKKyAgICBWZWN0b3I8SW50UmVjdD4gbGluZVJlY3RzID0gbGluZVJl
Z2lvbi5yZWN0cygpOworICAgIEFTU0VSVChsaW5lUmVjdHMuc2l6ZSgpID4gMCk7CisKKyAgICBS
ZWdpb24gc2VnbWVudHNSZWdpb24obGluZVJlY3QpOworICAgIFJlZ2lvbiBpbnRlcnZhbHNSZWdp
b247CisKKyAgICAvLyBGSVhNRTogYWRkIGEgcmVnaW9uIGNsZWFyKCkgbWV0aG9kCisgICAgaW50
IGxpbmVZID0gbGluZVJlY3RzWzBdLnkoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bGluZVJlY3RzLnNpemUoKTsgaSsrKSB7CisgICAgICAgIGlmIChsaW5lUmVjdHNbaV0ueSgpICE9
IGxpbmVZKSB7CisgICAgICAgICAgICBzZWdtZW50c1JlZ2lvbi5pbnRlcnNlY3QoaW50ZXJ2YWxz
UmVnaW9uKTsKKyAgICAgICAgICAgIGludGVydmFsc1JlZ2lvbiA9IFJlZ2lvbigpOworICAgICAg
ICB9CisgICAgICAgIGludGVydmFsc1JlZ2lvbi51bml0ZShSZWdpb24oYWxpZ25lZFJlY3QobGlu
ZVJlY3RzW2ldLCB5MSwgeTIpKSk7CisgICAgICAgIGxpbmVZID0gbGluZVJlY3RzW2ldLnkoKTsK
KyAgICB9CisgICAgaWYgKCFpbnRlcnZhbHNSZWdpb24uaXNFbXB0eSgpKQorICAgICAgICBzZWdt
ZW50c1JlZ2lvbi5pbnRlcnNlY3QoaW50ZXJ2YWxzUmVnaW9uKTsKKworICAgIFZlY3RvcjxJbnRS
ZWN0PiBzZWdtZW50UmVjdHMgPSBzZWdtZW50c1JlZ2lvbi5yZWN0cygpOworICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBzZWdtZW50UmVjdHMuc2l6ZSgpOyBpKyspCisgICAgICAgIHJlc3Vs
dC5hcHBlbmQoTGluZVNlZ21lbnQoc2VnbWVudFJlY3RzW2ldLngoKSwgc2VnbWVudFJlY3RzW2ld
Lm1heFgoKSkpOworfQorCitjb25zdCBSYXN0ZXJTaGFwZUludGVydmFscyYgUmFzdGVyU2hhcGU6
Om1hcmdpbkludGVydmFscygpIGNvbnN0Cit7CisgICAgQVNTRVJUKHNoYXBlTWFyZ2luKCkgPj0g
MCk7CisgICAgaWYgKCFzaGFwZU1hcmdpbigpKQorICAgICAgICByZXR1cm4gKm1faW50ZXJ2YWxz
OworCisgICAgLy8gRklYTUU6IGFkZCBzdXBwb3J0IGZvciBub24temVybyBtYXJnaW4KKyAgICBy
ZXR1cm4gKm1faW50ZXJ2YWxzOworfQorCitjb25zdCBSYXN0ZXJTaGFwZUludGVydmFscyYgUmFz
dGVyU2hhcGU6OnBhZGRpbmdJbnRlcnZhbHMoKSBjb25zdAoreworICAgIEFTU0VSVChzaGFwZVBh
ZGRpbmcoKSA+PSAwKTsKKyAgICBpZiAoIXNoYXBlUGFkZGluZygpKQorICAgICAgICByZXR1cm4g
Km1faW50ZXJ2YWxzOworCisgICAgLy8gRklYTUU6IGFkZCBzdXBwb3J0IGZvciBub24temVybyBw
YWRkaW5nCisgICAgcmV0dXJuICptX2ludGVydmFsczsKK30KKwordm9pZCBSYXN0ZXJTaGFwZTo6
Z2V0RXhjbHVkZWRJbnRlcnZhbHMoTGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBMYXlvdXRVbml0IGxv
Z2ljYWxIZWlnaHQsIFNlZ21lbnRMaXN0JiByZXN1bHQpIGNvbnN0Cit7CisgICAgY29uc3QgUmFz
dGVyU2hhcGVJbnRlcnZhbHMmIGludGVydmFscyA9IG1hcmdpbkludGVydmFscygpOworICAgIGlm
IChpbnRlcnZhbHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBmbG9hdCB5MSA9
IGxvZ2ljYWxUb3A7CisgICAgZmxvYXQgeTIgPSBsb2dpY2FsVG9wICsgbG9naWNhbEhlaWdodDsK
KworICAgIGlmICh5MiA8IGludGVydmFscy5ib3VuZHMoKS55KCkgfHwgeTEgPj0gaW50ZXJ2YWxz
LmJvdW5kcygpLm1heFkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaW50ZXJ2YWxzLmdldElu
dGVydmFscyh5MSwgeTIsIHJlc3VsdCk7Cit9CisKK3ZvaWQgUmFzdGVyU2hhcGU6OmdldEluY2x1
ZGVkSW50ZXJ2YWxzKExheW91dFVuaXQgbG9naWNhbFRvcCwgTGF5b3V0VW5pdCBsb2dpY2FsSGVp
Z2h0LCBTZWdtZW50TGlzdCYgcmVzdWx0KSBjb25zdAoreworICAgIGNvbnN0IFJhc3RlclNoYXBl
SW50ZXJ2YWxzJiBpbnRlcnZhbHMgPSBwYWRkaW5nSW50ZXJ2YWxzKCk7CisgICAgaWYgKGludGVy
dmFscy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGZsb2F0IHkxID0gbG9naWNh
bFRvcDsKKyAgICBmbG9hdCB5MiA9IGxvZ2ljYWxUb3AgKyBsb2dpY2FsSGVpZ2h0OworCisgICAg
aWYgKHkxIDwgaW50ZXJ2YWxzLmJvdW5kcygpLnkoKSB8fCB5MiA+IGludGVydmFscy5ib3VuZHMo
KS5tYXhZKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGludGVydmFscy5nZXRJbnRlcnZhbHMo
eTEsIHkyLCByZXN1bHQpOworfQorCitib29sIFJhc3RlclNoYXBlOjpmaXJzdEluY2x1ZGVkSW50
ZXJ2YWxMb2dpY2FsVG9wKExheW91dFVuaXQgbWluTG9naWNhbEludGVydmFsVG9wLCBjb25zdCBM
YXlvdXRTaXplJiBtaW5Mb2dpY2FsSW50ZXJ2YWxTaXplLCBMYXlvdXRVbml0JiByZXN1bHQpIGNv
bnN0Cit7CisgICAgZmxvYXQgbWluSW50ZXJ2YWxUb3AgPSBtaW5Mb2dpY2FsSW50ZXJ2YWxUb3A7
CisgICAgZmxvYXQgbWluSW50ZXJ2YWxIZWlnaHQgPSBtaW5Mb2dpY2FsSW50ZXJ2YWxTaXplLmhl
aWdodCgpOworICAgIGZsb2F0IG1pbkludGVydmFsV2lkdGggPSBtaW5Mb2dpY2FsSW50ZXJ2YWxT
aXplLndpZHRoKCk7CisKKyAgICBjb25zdCBSYXN0ZXJTaGFwZUludGVydmFscyYgaW50ZXJ2YWxz
ID0gcGFkZGluZ0ludGVydmFscygpOworICAgIGlmIChpbnRlcnZhbHMuaXNFbXB0eSgpIHx8IG1p
bkludGVydmFsV2lkdGggPiBpbnRlcnZhbHMuYm91bmRzKCkud2lkdGgoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgZmxvYXQgbWluWSA9IHN0ZDo6bWF4PGZsb2F0PihpbnRlcnZhbHMu
Ym91bmRzKCkueSgpLCBtaW5JbnRlcnZhbFRvcCk7CisgICAgZmxvYXQgbWF4WSA9IG1pblkgKyBt
aW5JbnRlcnZhbEhlaWdodDsKKworICAgIGlmIChtYXhZID4gaW50ZXJ2YWxzLmJvdW5kcygpLm1h
eFkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gRklYTUU6IGNvbXBsZXRlIHRo
aXMgbWV0aG9kCisgICAgcmVzdWx0ID0gbWluWTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3NoYXBlcy9SYXN0ZXJTaGFwZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9S
YXN0ZXJTaGFwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkZTk4MTcK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3Rl
clNoYXBlLmgKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBZG9i
ZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKKyAqICAgIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRQorICogQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULAorICogSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULAorICogU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRAorICogT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUmFzdGVyU2hhcGVfaAor
I2RlZmluZSBSYXN0ZXJTaGFwZV9oCisKKyNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRl
ICJSZWdpb24uaCIKKyNpbmNsdWRlICJTaGFwZS5oIgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25z
Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIFJhc3RlclNoYXBlSW50ZXJ2YWxzIHsKK3B1YmxpYzoKKyAgICBSYXN0ZXJTaGFwZUludGVy
dmFscygpIHsgfQorCisgICAgSW50UmVjdCBib3VuZHMoKSBjb25zdDsKKyAgICBib29sIGlzRW1w
dHkoKSBjb25zdCAgeyByZXR1cm4gbV9yZWdpb24uaXNFbXB0eSgpOyB9CisgICAgdm9pZCBhZGRJ
bnRlcnZhbChpbnQgeSwgaW50IHgxLCBpbnQgeDIpOworICAgIHZvaWQgZ2V0SW50ZXJ2YWxzKGlu
dCB5MSwgaW50IHkyLCBTZWdtZW50TGlzdCYpIGNvbnN0OworCitwcml2YXRlOgorICAgIFJlZ2lv
biBtX3JlZ2lvbjsKKyAgICBtdXRhYmxlIE93blB0cjxJbnRSZWN0PiBtX2JvdW5kczsgLy8gQ2Fj
aGVkIHZhbHVlIG9mIG1fcmVnaW9uLmJvdW5kcygpLgorfTsKKworY2xhc3MgUmFzdGVyU2hhcGUg
OiBwdWJsaWMgU2hhcGUgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJhc3RlclNoYXBlKTsK
K3B1YmxpYzoKKyAgICBSYXN0ZXJTaGFwZShQYXNzT3duUHRyPFJhc3RlclNoYXBlSW50ZXJ2YWxz
PiBpbnRlcnZhbHMpCisgICAgICAgIDogU2hhcGUoKQorICAgICAgICAsIG1faW50ZXJ2YWxzKGlu
dGVydmFscykKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCBMYXlvdXRSZWN0IHNoYXBlTWFy
Z2luTG9naWNhbEJvdW5kaW5nQm94KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8TGF5b3V0UmVjdD4obWFyZ2luSW50ZXJ2YWxzKCkuYm91bmRzKCkpOyB9CisgICAgdmlydHVh
bCBMYXlvdXRSZWN0IHNoYXBlUGFkZGluZ0xvZ2ljYWxCb3VuZGluZ0JveCgpIGNvbnN0IE9WRVJS
SURFIHsgcmV0dXJuIHN0YXRpY19jYXN0PExheW91dFJlY3Q+KHBhZGRpbmdJbnRlcnZhbHMoKS5i
b3VuZHMoKSk7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNFbXB0eSgpIGNvbnN0IE9WRVJSSURFIHsg
cmV0dXJuIG1faW50ZXJ2YWxzLT5pc0VtcHR5KCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZ2V0RXhj
bHVkZWRJbnRlcnZhbHMoTGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBMYXlvdXRVbml0IGxvZ2ljYWxI
ZWlnaHQsIFNlZ21lbnRMaXN0JikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGdl
dEluY2x1ZGVkSW50ZXJ2YWxzKExheW91dFVuaXQgbG9naWNhbFRvcCwgTGF5b3V0VW5pdCBsb2dp
Y2FsSGVpZ2h0LCBTZWdtZW50TGlzdCYpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9v
bCBmaXJzdEluY2x1ZGVkSW50ZXJ2YWxMb2dpY2FsVG9wKExheW91dFVuaXQgbWluTG9naWNhbElu
dGVydmFsVG9wLCBjb25zdCBMYXlvdXRTaXplJiBtaW5Mb2dpY2FsSW50ZXJ2YWxTaXplLCBMYXlv
dXRVbml0JikgY29uc3QgT1ZFUlJJREU7CisKK3ByaXZhdGU6CisgICAgY29uc3QgUmFzdGVyU2hh
cGVJbnRlcnZhbHMmIG1hcmdpbkludGVydmFscygpIGNvbnN0OworICAgIGNvbnN0IFJhc3RlclNo
YXBlSW50ZXJ2YWxzJiBwYWRkaW5nSW50ZXJ2YWxzKCkgY29uc3Q7CisKKyAgICBPd25QdHI8UmFz
dGVyU2hhcGVJbnRlcnZhbHM+IG1faW50ZXJ2YWxzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gUmFzdGVyU2hhcGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c2hhcGVzL1NoYXBlLmNwcAppbmRleCBiNzkyMGNjLi5jYWIxZDZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcApAQCAtMzEsOSArMzEsMTIgQEAKICNpbmNsdWRl
ICJTaGFwZS5oIgogCiAjaW5jbHVkZSAiQmFzaWNTaGFwZUZ1bmN0aW9ucy5oIgorI2luY2x1ZGUg
IkNhY2hlZEltYWdlLmgiCiAjaW5jbHVkZSAiRmxvYXRTaXplLmgiCisjaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJMZW5ndGhGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJQ
b2x5Z29uU2hhcGUuaCIKKyNpbmNsdWRlICJSYXN0ZXJTaGFwZS5oIgogI2luY2x1ZGUgIlJlY3Rh
bmdsZVNoYXBlLmgiCiAjaW5jbHVkZSAiV2luZFJ1bGUuaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4
dHJhcy5oPgpAQCAtMTkxLDQgKzE5NCw1OCBAQCBQYXNzT3duUHRyPFNoYXBlPiBTaGFwZTo6Y3Jl
YXRlU2hhcGUoY29uc3QgQmFzaWNTaGFwZSogYmFzaWNTaGFwZSwgY29uc3QgTGF5b3V0UwogICAg
IHJldHVybiBzaGFwZS5yZWxlYXNlKCk7CiB9CiAKK1Bhc3NPd25QdHI8U2hhcGU+IFNoYXBlOjpj
cmVhdGVTaGFwZShjb25zdCBTdHlsZUltYWdlKiBzdHlsZUltYWdlLCBmbG9hdCB0aHJlc2hvbGQs
IGNvbnN0IExheW91dFNpemUmIGxvZ2ljYWxCb3hTaXplLCBXcml0aW5nTW9kZSB3cml0aW5nTW9k
ZSwgTGVuZ3RoIG1hcmdpbiwgTGVuZ3RoIHBhZGRpbmcpCit7CisgICAgLy8gRklYTUU6IFNob3Vs
ZCBjbGlwIHNoYXBlIHRvIGxvZ2ljYWwgYm94CisgICAgVU5VU0VEX1BBUkFNKGxvZ2ljYWxCb3hT
aXplKTsKKworICAgIEFTU0VSVChzdHlsZUltYWdlICYmIHN0eWxlSW1hZ2UtPmlzQ2FjaGVkSW1h
Z2UoKSAmJiBzdHlsZUltYWdlLT5jYWNoZWRJbWFnZSgpICYmIHN0eWxlSW1hZ2UtPmNhY2hlZElt
YWdlKCktPmltYWdlKCkpOworCisgICAgSW1hZ2UqIGltYWdlID0gc3R5bGVJbWFnZS0+Y2FjaGVk
SW1hZ2UoKS0+aW1hZ2UoKTsKKyAgICBHcmFwaGljc0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3Ig
aW1hZ2VFeHRyYWN0b3IoaW1hZ2UsIEdyYXBoaWNzQ29udGV4dDNEOjpIdG1sRG9tTm9uZSwgZmFs
c2UsIHRydWUpOworICAgIC8vIEZJWE1FOiBjbGlwIGltYWdlIHNpemUgdG8gTGF5b3V0U2l6ZSBo
ZXJlLCBhZnRlciBkZWFsaW5nIHdpdGggd3JpdGluZy1tb2RlIHRyYW5zZm9ybS4KKyAgICBpbnQg
aW1hZ2VXaWR0aCA9IHN0YXRpY19jYXN0PGludD4oaW1hZ2VFeHRyYWN0b3IuaW1hZ2VXaWR0aCgp
KTsKKyAgICBpbnQgaW1hZ2VIZWlnaHQgPSBzdGF0aWNfY2FzdDxpbnQ+KGltYWdlRXh0cmFjdG9y
LmltYWdlSGVpZ2h0KCkpOworCisgICAgLy8gRklYTUU6IFRoZSBpbWFnZSBleHJhY3Rpb24gc3Vw
cG9ydCBzaG91bGQgYmUgbGlmdGVkIG91dCBvZiBHcmFwaGljc0NvbnRleHQzRAorICAgIFZlY3Rv
cjx1aW50OF90PiBhbHBoYVBpeGVsczsKKyAgICBib29sIHBhY2tJbWFnZURhdGFPSyA9IEdyYXBo
aWNzQ29udGV4dDNEOjpwYWNrSW1hZ2VEYXRhKGltYWdlLCBpbWFnZUV4dHJhY3Rvci5pbWFnZVBp
eGVsRGF0YSgpLAorICAgICAgICBHcmFwaGljc0NvbnRleHQzRDo6QUxQSEEsCisgICAgICAgIEdy
YXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLAorICAgICAgICBmYWxzZSwgLyogZmxpcFkg
Ki8KKyAgICAgICAgR3JhcGhpY3NDb250ZXh0M0Q6OkFscGhhRG9Ob3RoaW5nLAorICAgICAgICBp
bWFnZUV4dHJhY3Rvci5pbWFnZVNvdXJjZUZvcm1hdCgpLAorICAgICAgICBpbWFnZVdpZHRoLAor
ICAgICAgICBpbWFnZUhlaWdodCwKKyAgICAgICAgaW1hZ2VFeHRyYWN0b3IuaW1hZ2VTb3VyY2VV
bnBhY2tBbGlnbm1lbnQoKSwKKyAgICAgICAgYWxwaGFQaXhlbHMpOworCisgICAgT3duUHRyPFJh
c3RlclNoYXBlSW50ZXJ2YWxzPiBpbnRlcnZhbHMgPSBhZG9wdFB0cihuZXcgUmFzdGVyU2hhcGVJ
bnRlcnZhbHMoKSk7CisgICAgdWludDhfdCBhbHBoYVBpeGVsVGhyZXNob2xkID0gdGhyZXNob2xk
ICogMjU1OworCisgICAgaWYgKHBhY2tJbWFnZURhdGFPSykgeworICAgICAgICBBU1NFUlQoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGltYWdlV2lkdGggKiBpbWFnZUhlaWdodCkgPT0gYWxwaGFQaXhl
bHMuc2l6ZSgpKTsKKyAgICAgICAgLy8gRklYTUU6IGZsaXAgaW50ZXJ2YWxzIHBlciB3cml0aW5n
LW1vZGUKKyAgICAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBpbWFnZUhlaWdodDsgeSsrKSB7Cisg
ICAgICAgICAgICBpbnQgc3RhcnRYID0gLTE7CisgICAgICAgICAgICBmb3IgKGludCB4ID0gMDsg
eCA8IGltYWdlV2lkdGg7IHgrKykgeworICAgICAgICAgICAgICAgIHVpbnQ4X3QgYWxwaGEgPSBh
bHBoYVBpeGVsc1t4ICsgeSAqIGltYWdlV2lkdGhdOworICAgICAgICAgICAgICAgIGlmICgoc3Rh
cnRYID09IC0xKSAmJiBhbHBoYSA+IGFscGhhUGl4ZWxUaHJlc2hvbGQpIHsKKyAgICAgICAgICAg
ICAgICAgICAgc3RhcnRYID0geDsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHN0YXJ0WCAh
PSAtMSAmJiAoYWxwaGEgPD0gYWxwaGFQaXhlbFRocmVzaG9sZCB8fCB4ID09IGltYWdlV2lkdGgg
LSAxKSkgeworICAgICAgICAgICAgICAgICAgICBpbnRlcnZhbHMtPmFkZEludGVydmFsKHksIHN0
YXJ0WCwgeCk7CisgICAgICAgICAgICAgICAgICAgIHN0YXJ0WCA9IC0xOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIE93blB0cjxSYXN0
ZXJTaGFwZT4gcmFzdGVyU2hhcGUgPSBhZG9wdFB0cihuZXcgUmFzdGVyU2hhcGUoaW50ZXJ2YWxz
LnJlbGVhc2UoKSkpOworICAgIHJhc3RlclNoYXBlLT5tX3dyaXRpbmdNb2RlID0gd3JpdGluZ01v
ZGU7CisgICAgcmFzdGVyU2hhcGUtPm1fbWFyZ2luID0gZmxvYXRWYWx1ZUZvckxlbmd0aChtYXJn
aW4sIDApOworICAgIHJhc3RlclNoYXBlLT5tX3BhZGRpbmcgPSBmbG9hdFZhbHVlRm9yTGVuZ3Ro
KHBhZGRpbmcsIDApOworCisgICAgcmV0dXJuIHJhc3RlclNoYXBlLnJlbGVhc2UoKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3NoYXBlcy9TaGFwZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFw
ZS5oCmluZGV4IDBkOWVjZmQuLmY3NzVlNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zaGFwZXMvU2hhcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hh
cGVzL1NoYXBlLmgKQEAgLTMyLDYgKzMyLDcgQEAKIAogI2luY2x1ZGUgIkJhc2ljU2hhcGVzLmgi
CiAjaW5jbHVkZSAiTGF5b3V0UmVjdC5oIgorI2luY2x1ZGUgIlN0eWxlSW1hZ2UuaCIKICNpbmNs
dWRlICJXcml0aW5nTW9kZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgpAQCAtNjAsNiArNjEsNyBAQCB0eXBlZGVmIFZlY3RvcjxMaW5lU2Vn
bWVudD4gU2VnbWVudExpc3Q7CiBjbGFzcyBTaGFwZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBh
c3NPd25QdHI8U2hhcGU+IGNyZWF0ZVNoYXBlKGNvbnN0IEJhc2ljU2hhcGUqLCBjb25zdCBMYXlv
dXRTaXplJiBsb2dpY2FsQm94U2l6ZSwgV3JpdGluZ01vZGUsIExlbmd0aCBtYXJnaW4sIExlbmd0
aCBwYWRkaW5nKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxTaGFwZT4gY3JlYXRlU2hhcGUoY29u
c3QgU3R5bGVJbWFnZSosIGZsb2F0IHRocmVzaG9sZCwgY29uc3QgTGF5b3V0U2l6ZSYgbG9naWNh
bEJveFNpemUsIFdyaXRpbmdNb2RlLCBMZW5ndGggbWFyZ2luLCBMZW5ndGggcGFkZGluZyk7CiAK
ICAgICB2aXJ0dWFsIH5TaGFwZSgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c2hhcGVzL1NoYXBlSW5mby5jcHAKaW5kZXggZTExNTU4My4uYmY5NGU0MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUluZm8uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVJbmZvLmNwcApAQCAtNDUsMTIgKzQ1LDI2
IEBAIGNvbnN0IFNoYXBlKiBTaGFwZUluZm88UmVuZGVyVHlwZSwgc2hhcGVHZXR0ZXIsIGludGVy
dmFsR2V0dGVyPjo6Y29tcHV0ZWRTaGFwZSgpCiAgICAgaWYgKFNoYXBlKiBzaGFwZSA9IG1fc2hh
cGUuZ2V0KCkpCiAgICAgICAgIHJldHVybiBzaGFwZTsKIAotICAgIFNoYXBlVmFsdWUqIHNoYXBl
VmFsdWUgPSAobV9yZW5kZXJlci0+c3R5bGUoKS0+KnNoYXBlR2V0dGVyKSgpOwotICAgIEJhc2lj
U2hhcGUqIHNoYXBlID0gKHNoYXBlVmFsdWUgJiYgc2hhcGVWYWx1ZS0+dHlwZSgpID09IFNoYXBl
VmFsdWU6OlNoYXBlKSA/IHNoYXBlVmFsdWUtPnNoYXBlKCkgOiAwOworICAgIGNvbnN0IExheW91
dFNpemUgbG9naWNhbEJveFNpemUobV9zaGFwZUxvZ2ljYWxXaWR0aCwgbV9zaGFwZUxvZ2ljYWxI
ZWlnaHQpOworICAgIFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlID0gbV9yZW5kZXJlci0+c3R5bGUo
KS0+d3JpdGluZ01vZGUoKTsKKyAgICBMZW5ndGggbWFyZ2luID0gbV9yZW5kZXJlci0+c3R5bGUo
KS0+c2hhcGVNYXJnaW4oKTsKKyAgICBMZW5ndGggcGFkZGluZyA9IG1fcmVuZGVyZXItPnN0eWxl
KCktPnNoYXBlUGFkZGluZygpOworICAgIGNvbnN0IFNoYXBlVmFsdWUqIHNoYXBlVmFsdWUgPSAo
bV9yZW5kZXJlci0+c3R5bGUoKS0+KnNoYXBlR2V0dGVyKSgpOworICAgIEFTU0VSVChzaGFwZVZh
bHVlKTsKIAotICAgIEFTU0VSVChzaGFwZSk7CisgICAgc3dpdGNoIChzaGFwZVZhbHVlLT50eXBl
KCkpIHsKKyAgICBjYXNlIFNoYXBlVmFsdWU6OlNoYXBlOgorICAgICAgICBBU1NFUlQoc2hhcGVW
YWx1ZS0+c2hhcGUoKSk7CisgICAgICAgIG1fc2hhcGUgPSBTaGFwZTo6Y3JlYXRlU2hhcGUoc2hh
cGVWYWx1ZS0+c2hhcGUoKSwgbG9naWNhbEJveFNpemUsIHdyaXRpbmdNb2RlLCBtYXJnaW4sIHBh
ZGRpbmcpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNoYXBlVmFsdWU6OkltYWdlOgorICAg
ICAgICBBU1NFUlQoc2hhcGVWYWx1ZS0+aW1hZ2UoKSk7CisgICAgICAgIG1fc2hhcGUgPSBTaGFw
ZTo6Y3JlYXRlU2hhcGUoc2hhcGVWYWx1ZS0+aW1hZ2UoKSwgMCwgbG9naWNhbEJveFNpemUsIHdy
aXRpbmdNb2RlLCBtYXJnaW4sIHBhZGRpbmcpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0
OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CiAKLSAgICBtX3NoYXBlID0g
U2hhcGU6OmNyZWF0ZVNoYXBlKHNoYXBlLCBMYXlvdXRTaXplKG1fc2hhcGVMb2dpY2FsV2lkdGgs
IG1fc2hhcGVMb2dpY2FsSGVpZ2h0KSwgbV9yZW5kZXJlci0+c3R5bGUoKS0+d3JpdGluZ01vZGUo
KSwgbV9yZW5kZXJlci0+c3R5bGUoKS0+c2hhcGVNYXJnaW4oKSwgbV9yZW5kZXJlci0+c3R5bGUo
KS0+c2hhcGVQYWRkaW5nKCkpOwogICAgIEFTU0VSVChtX3NoYXBlKTsKICAgICByZXR1cm4gbV9z
aGFwZS5nZXQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFw
ZXMvU2hhcGVJbnNpZGVJbmZvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMv
U2hhcGVJbnNpZGVJbmZvLmNwcAppbmRleCBkMTI5NWQwLi4xYzhlMTEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW5zaWRlSW5mby5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUluc2lkZUluZm8uY3BwCkBAIC00
NiwxMSArNDYsMTcgQEAgTGluZVNlZ21lbnRSYW5nZTo6TGluZVNlZ21lbnRSYW5nZShjb25zdCBJ
bmxpbmVJdGVyYXRvciYgc3RhcnQsIGNvbnN0IElubGluZUl0ZXIKIGJvb2wgU2hhcGVJbnNpZGVJ
bmZvOjppc0VuYWJsZWRGb3IoY29uc3QgUmVuZGVyQmxvY2sqIHJlbmRlcmVyKQogewogICAgIFNo
YXBlVmFsdWUqIHNoYXBlVmFsdWUgPSByZW5kZXJlci0+c3R5bGUoKS0+cmVzb2x2ZWRTaGFwZUlu
c2lkZSgpOwotICAgIGlmICghc2hhcGVWYWx1ZSB8fCBzaGFwZVZhbHVlLT50eXBlKCkgIT0gU2hh
cGVWYWx1ZTo6U2hhcGUpCisgICAgaWYgKCFzaGFwZVZhbHVlKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBCYXNpY1NoYXBlKiBzaGFwZSA9IHNoYXBlVmFsdWUtPnNoYXBlKCk7Ci0gICAg
cmV0dXJuIHNoYXBlICYmIHNoYXBlLT50eXBlKCkgIT0gQmFzaWNTaGFwZTo6QmFzaWNTaGFwZUlu
c2V0UmVjdGFuZ2xlVHlwZTsKKyAgICBzd2l0Y2ggKHNoYXBlVmFsdWUtPnR5cGUoKSkgeworICAg
IGNhc2UgU2hhcGVWYWx1ZTo6U2hhcGU6CisgICAgICAgIHJldHVybiBzaGFwZVZhbHVlLT5zaGFw
ZSgpICYmIHNoYXBlVmFsdWUtPnNoYXBlKCktPnR5cGUoKSAhPSBCYXNpY1NoYXBlOjpCYXNpY1No
YXBlSW5zZXRSZWN0YW5nbGVUeXBlOworICAgIGNhc2UgU2hhcGVWYWx1ZTo6SW1hZ2U6CisgICAg
ICAgIHJldHVybiBzaGFwZVZhbHVlLT5pc0ltYWdlVmFsaWQoKTsKKyAgICBkZWZhdWx0OgorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogfQogCiBib29sIFNoYXBlSW5zaWRlSW5mbzo6YWRq
dXN0TG9naWNhbExpbmVUb3AoZmxvYXQgbWluU2VnbWVudFdpZHRoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5jcHAKaW5kZXggZTE5
MmY2NS4uZjEyZWQ3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBl
cy9TaGFwZU91dHNpZGVJbmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hh
cGVzL1NoYXBlT3V0c2lkZUluZm8uY3BwCkBAIC0zOCw4ICszOCwxOCBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogYm9vbCBTaGFwZU91dHNpZGVJbmZvOjppc0VuYWJsZWRGb3IoY29uc3QgUmVuZGVy
Qm94KiBib3gpCiB7Ci0gICAgU2hhcGVWYWx1ZSogdmFsdWUgPSBib3gtPnN0eWxlKCktPnNoYXBl
T3V0c2lkZSgpOwotICAgIHJldHVybiBib3gtPmlzRmxvYXRpbmdXaXRoU2hhcGVPdXRzaWRlKCkg
JiYgdmFsdWUtPnR5cGUoKSA9PSBTaGFwZVZhbHVlOjpTaGFwZSAmJiB2YWx1ZS0+c2hhcGUoKTsK
KyAgICBTaGFwZVZhbHVlKiBzaGFwZVZhbHVlID0gYm94LT5zdHlsZSgpLT5zaGFwZU91dHNpZGUo
KTsKKyAgICBpZiAoIWJveC0+aXNGbG9hdGluZ1dpdGhTaGFwZU91dHNpZGUoKSB8fCAhc2hhcGVW
YWx1ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgc3dpdGNoIChzaGFwZVZhbHVlLT50
eXBlKCkpIHsKKyAgICBjYXNlIFNoYXBlVmFsdWU6OlNoYXBlOgorICAgICAgICByZXR1cm4gc2hh
cGVWYWx1ZS0+c2hhcGUoKTsKKyAgICBjYXNlIFNoYXBlVmFsdWU6OkltYWdlOgorICAgICAgICBy
ZXR1cm4gc2hhcGVWYWx1ZS0+aXNJbWFnZVZhbGlkKCk7CisgICAgZGVmYXVsdDoKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KIH0KIAogYm9vbCBTaGFwZU91dHNpZGVJbmZvOjpjb21wdXRl
U2VnbWVudHNGb3JMaW5lKExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lSGVpZ2h0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYXBlVmFsdWUu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFwZVZhbHVlLmgKaW5kZXggNjc0
YWVlYi4uYTQ3ZWQwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1NoYXBlVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhcGVW
YWx1ZS5oCkBAIC0zMSw2ICszMSw3IEBACiAjZGVmaW5lIFNoYXBlVmFsdWVfaAogCiAjaW5jbHVk
ZSAiQmFzaWNTaGFwZXMuaCIKKyNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUgIlN0
eWxlSW1hZ2UuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCkBAIC02MiwxMiArNjMs
MTYgQEAgcHVibGljOgogCiAgICAgU2hhcGVWYWx1ZVR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdHlwZTsgfQogICAgIEJhc2ljU2hhcGUqIHNoYXBlKCkgY29uc3QgeyByZXR1cm4gbV9zaGFw
ZS5nZXQoKTsgfQorCiAgICAgU3R5bGVJbWFnZSogaW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2lt
YWdlLmdldCgpOyB9CisgICAgYm9vbCBpc0ltYWdlVmFsaWQoKSBjb25zdCB7IHJldHVybiBpbWFn
ZSgpICYmIGltYWdlKCktPmNhY2hlZEltYWdlKCkgJiYgaW1hZ2UoKS0+Y2FjaGVkSW1hZ2UoKS0+
aGFzSW1hZ2UoKTsgfQogICAgIHZvaWQgc2V0SW1hZ2UoUGFzc1JlZlB0cjxTdHlsZUltYWdlPiBp
bWFnZSkKICAgICB7CisgICAgICAgIEFTU0VSVCh0eXBlKCkgPT0gSW1hZ2UpOwogICAgICAgICBp
ZiAobV9pbWFnZSAhPSBpbWFnZSkKICAgICAgICAgICAgIG1faW1hZ2UgPSBpbWFnZTsKICAgICB9
CisKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU2hhcGVWYWx1ZSYgb3RoZXIpIGNvbnN0IHsg
cmV0dXJuIHR5cGUoKSA9PSBvdGhlci50eXBlKCk7IH0KIAogcHJpdmF0ZToK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>204446</attachid>
            <date>2013-06-12 09:09:58 -0700</date>
            <delta_ts>2013-06-12 09:11:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>tmp.patch</filename>
            <type>text/plain</type>
            <size>38832</size>
            <attacher name="Hans Muller">giles_joplin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0NWJkYmU4MC4uN2JkMDhhYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEzLTA2
LTEwICBIYW5zIE11bGxlciAgPGhtdWxsZXJAYWRvYmUuY29tPgorCisgICAgICAgIFtDU1MgRXhj
bHVzaW9uc10gTWluaW1hbCBzdXBwb3J0IGZvciB1c2luZyBhbiBpbWFnZSB0byBkZWZpbmUgYSBz
aGFwZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE2
NjQzCisKKyAgICAgICAgT25lIHRlc3QgdG8gdmVyaWZ5IHRoYXQgdGhlIGluaXRpYWwgaW1wbGVt
ZW50YXRpb24gb2Ygc2hhcGUgdmFsdWVkIGltYWdlcyBpcyB3b3JraW5nCisgICAgICAgIGZvciBz
aGFwZS1pbnNpZGUuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBmYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1pbWFnZS0w
MDEtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9leGNsdXNpb25zL3NoYXBl
LWluc2lkZS9zaGFwZS1pbnNpZGUtaW1hZ2UtMDAxLmh0bWw6IEFkZGVkLgorCiAyMDEzLTA2LTEy
ICBLd2FuZyBZdWwgU2VvICA8c2t5dWxAY29tcGFueTEwMC5uZXQ+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCBnYXJkZW5pbmcuIFVuc2tpcHBpbmcgcGFzc2luZyB0ZXN0cy4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdl
LTAwMS1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWlu
c2lkZS9zaGFwZS1pbnNpZGUtaW1hZ2UtMDAxLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uZmRiYWE3MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAwMS1l
eHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMjQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxzdHlsZT4KKyAgICAjaW1hZ2Utc2hhcGUgeworICAgICAgICBib3JkZXI6IHNvbGlk
IGJsYWNrIDFweDsKKyAgICAgICAgZm9udDogMTJweC8xIEFoZW0sIHNhbnMtc2VyaWY7CisgICAg
ICAgIHBhZGRpbmc6IDRweDsKKyAgICAgICAgY29sb3I6IGdyZWVuOworICAgICAgICB3aWR0aDog
MjRweDsKKyAgICAgICAgaGVpZ2h0OiAyNHB4OworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1
cmwoImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFB
Z0NBWUFBQUJ6ZW5yMEFBQUFTa2xFUVZSWUNlM1hJUTRBTUFoRDBYWGgvbGZ1TWtlQ0pqVWZoU3Q1
WUpEdGs2eWJEUC9aREZCakJkTHVVZGpxbWF3QUFRUVFRQUFCQkJCQUFBRUU0Z0xpTit4ZlNxS1Az
OEFEdVFNSk82TE5icjRBQUFBQVNVVk9SSzVDWUlJPSIpOworICAgICAgICBiYWNrZ3JvdW5kLXJl
cGVhdDogbm8tcmVwZWF0OworICAgIH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPHAg
aWQ9ImluZm9ybWF0aXZlLXRleHQiPgorICAgICAgVGhpcyB0ZXN0IHJlcXVpcmVzIHRoZSBBaGVt
IGZvbnQuIEl0IHVzZXMgYSAzMngzMiBQTkcgaW1hZ2Ugd2l0aCBhIDI0eDI0IHJlZCBzcXVhcmUg
aW4gdGhlIGNlbnRlcgorICAgICAgdG8gZGVmaW5lIGEgc2hhcGUtaW5zaWRlLiBUaGUgY29udGVu
dCBzaG91bGQganVzdCBjb3ZlciB0aGUgc2hhcGUgd2l0aCBzb2xpZCBncmVlbi48L3A+CisKKyAg
PGRpdiBpZD0iaW1hZ2Utc2hhcGUiPlhYPGJyLz5YWDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFw
ZS1pbnNpZGUtaW1hZ2UtMDAxLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hh
cGUtaW5zaWRlL3NoYXBlLWluc2lkZS1pbWFnZS0wMDEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi40NmVjN2IxMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAwMS5odG1s
CkBAIC0wLDAgKzEsMjUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzdHls
ZT4KKyAgICAjaW1hZ2Utc2hhcGUgeworICAgICAgICBib3JkZXI6IHNvbGlkIGJsYWNrIDFweDsK
KyAgICAgICAgZm9udDogMTJweC8xIEFoZW0sIHNhbnMtc2VyaWY7CisgICAgICAgIGNvbG9yOiBn
cmVlbjsKKyAgICAgICAgd2lkdGg6IDMycHg7CisgICAgICAgIGhlaWdodDogMzJweDsKKyAgICAg
ICAgLXdlYmtpdC1zaGFwZS1pbnNpZGU6IHVybCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9S
dzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFnQ0FZQUFBQnplbnIwQUFBQVNrbEVRVlJZQ2UzWElR
NEFNQWhEMFhYaC9sZnVNa2VDSmpVZmhTdDVZSkR0azZ5YkRQL1pERkJqQmRMdVVkanFtYXdBQVFR
UVFBQUJCQkJBQUFFRTRnTGlOK3hmU3FLUDM4QUR1UU1KTzZMTmJyNEFBQUFBU1VWT1JLNUNZSUk9
Iik7CisgICAgICAgIC13ZWJraXQtc2hhcGUtaW1hZ2UtdGhyZXNob2xkOiAwOworICAgICAgICBi
YWNrZ3JvdW5kLWltYWdlOiB1cmwoImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FB
QUFOU1VoRVVnQUFBQ0FBQUFBZ0NBWUFBQUJ6ZW5yMEFBQUFTa2xFUVZSWUNlM1hJUTRBTUFoRDBY
WGgvbGZ1TWtlQ0pqVWZoU3Q1WUpEdGs2eWJEUC9aREZCakJkTHVVZGpxbWF3QUFRUVFRQUFCQkJC
QUFBRUU0Z0xpTit4ZlNxS1AzOEFEdVFNSk82TE5icjRBQUFBQVNVVk9SSzVDWUlJPSIpOworICAg
ICAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OworICAgIH0KKzwvc3R5bGU+Cis8L2hl
YWQ+Cis8Ym9keT4KKyAgPHAgaWQ9ImluZm9ybWF0aXZlLXRleHQiPgorICAgICAgVGhpcyB0ZXN0
IHJlcXVpcmVzIHRoZSBBaGVtIGZvbnQuIEl0IHVzZXMgYSAzMngzMiBQTkcgaW1hZ2Ugd2l0aCBh
IDI0eDI0IHJlZCBzcXVhcmUgaW4gdGhlIGNlbnRlcgorICAgICAgdG8gZGVmaW5lIGEgc2hhcGUt
aW5zaWRlLiBUaGUgY29udGVudCBzaG91bGQganVzdCBjb3ZlciB0aGUgc2hhcGUgd2l0aCBzb2xp
ZCBncmVlbi48L3A+CisKKyAgPGRpdiBpZD0iaW1hZ2Utc2hhcGUiPlhYIFhYPC9kaXY+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hh
cGUtaW5zaWRlL3NoYXBlLWluc2lkZS1pbWFnZS0wMDItZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAwMi1l
eHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhNTNmZTgK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5z
aWRlL3NoYXBlLWluc2lkZS1pbWFnZS0wMDItZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDIxIEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+CisgICAgI2ltYWdlLXNo
YXBlIHsKKyAgICAgICAgZm9udDogMTJweC8xIEFoZW0sIHNhbnMtc2VyaWY7CisgICAgICAgIGNv
bG9yOiBncmVlbjsKKyAgICAgICAgd2lkdGg6IDI0cHg7CisgICAgICAgIGhlaWdodDogMjRweDsK
KyAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZC
T1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWdDQVlBQUFCemVucjBBQUFBUkVsRVFWUllDZTNY
c1EwQUlBZ0VRSEgvblY4bjBBcHRqdENSRUhJMFVCbGpaMk1rZGVvK1Q4VVhOUU1RSUVDQUFBRUNC
QWdRSUZCSjcxdHdPKzJ0Z0FDQjd3SUxvSThIT2FPbXpGc0FBQUFBU1VWT1JLNUNZSUk9Iik7Cisg
ICAgICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CisgICAgfQorPC9zdHlsZT4KKzwv
aGVhZD4KKzxib2R5PgorICA8cCBpZD0iaW5mb3JtYXRpdmUtdGV4dCI+CisgICAgICBUaGlzIHRl
c3QgcmVxdWlyZXMgdGhlIEFoZW0gZm9udC4gSXQgdXNlcyBhIDI0eDI0IHNxdWFyZSBQTkcgaW1h
Z2Ugd2hlcmUgYWxsIHBpeGVscyBhcmUgcmVkLAorICAgICAgdG8gZGVmaW5lIGEgc2hhcGUtaW5z
aWRlLiBUaGUgY29udGVudCBzaG91bGQganVzdCBjb3ZlciB0aGUgc2hhcGUgd2l0aCBzb2xpZCBn
cmVlbi48L3A+CisgIDxkaXYgaWQ9ImltYWdlLXNoYXBlIj5YWDxici8+WFg8L2Rpdj4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFw
ZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAwMi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9l
eGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtaW1hZ2UtMDAyLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDc5ODRlMAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWlt
YWdlLTAwMi5odG1sCkBAIC0wLDAgKzEsMjQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxzdHlsZT4KKyAgICAjaW1hZ2Utc2hhcGUgeworICAgICAgICBmb250OiAxMnB4LzEg
QWhlbSwgc2Fucy1zZXJpZjsKKyAgICAgICAgY29sb3I6IGdyZWVuOworICAgICAgICB3aWR0aDog
MjRweDsKKyAgICAgICAgaGVpZ2h0OiAyNHB4OworICAgICAgICAtd2Via2l0LXNoYXBlLWluc2lk
ZTogdXJsKCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNB
QUFBQWdDQVlBQUFCemVucjBBQUFBUkVsRVFWUllDZTNYc1EwQUlBZ0VRSEgvblY4bjBBcHRqdENS
RUhJMFVCbGpaMk1rZGVvK1Q4VVhOUU1RSUVDQUFBRUNCQWdRSUZCSjcxdHdPKzJ0Z0FDQjd3SUxv
SThIT2FPbXpGc0FBQUFBU1VWT1JLNUNZSUk9Iik7CisgICAgICAgIC13ZWJraXQtc2hhcGUtaW1h
Z2UtdGhyZXNob2xkOiAwOworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImRhdGE6aW1h
Z2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZ0NBWUFBQUJ6ZW5y
MEFBQUFSRWxFUVZSWUNlM1hzUTBBSUFnRVFISC9uVjhuMEFwdGp0Q1JFSEkwVUJsaloyTWtkZW8r
VDhVWE5RTVFJRUNBQUFFQ0JBZ1FJRkJKNzF0d08rMnRnQUNCN3dJTG9JOEhPYU9tekZzQUFBQUFT
VVZPUks1Q1lJST0iKTsKKyAgICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKKyAg
ICB9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgIDxwIGlkPSJpbmZvcm1hdGl2ZS10ZXh0
Ij4KKyAgICAgIFRoaXMgdGVzdCByZXF1aXJlcyB0aGUgQWhlbSBmb250LiBJdCB1c2VzIGEgMjR4
MjQgc3F1YXJlIFBORyBpbWFnZSB3aGVyZSBhbGwgcGl4ZWxzIGFyZSByZWQsCisgICAgICB0byBk
ZWZpbmUgYSBzaGFwZS1pbnNpZGUuIFRoZSBjb250ZW50IHNob3VsZCBqdXN0IGNvdmVyIHRoZSBz
aGFwZSB3aXRoIHNvbGlkIGdyZWVuLjwvcD4KKworICA8ZGl2IGlkPSJpbWFnZS1zaGFwZSI+WFgg
WFg8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNzg1YTZh
Ny4uNWNlMjM5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysr
IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTIyMDksNiArMjIwOSw3IEBAIHNl
dChXZWJDb3JlX1NPVVJDRVMKICAgICByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFVuZGVy
T3Zlci5jcHAKIAogICAgIHJlbmRlcmluZy9zaGFwZXMvUG9seWdvblNoYXBlLmNwcAorICAgIHJl
bmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuY3BwCiAgICAgcmVuZGVyaW5nL3NoYXBlcy9SZWN0
YW5nbGVTaGFwZS5jcHAKICAgICByZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcAogICAgIHJlbmRl
cmluZy9zaGFwZXMvU2hhcGVJbmZvLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDI4MzhmMmUuLjIxYzdmMDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MiBAQAorMjAxMy0wNi0xMCAgSGFucyBNdWxsZXIgIDxo
bXVsbGVyQGFkb2JlLmNvbT4KKworICAgICAgICBbQ1NTIEV4Y2x1c2lvbnNdIE1pbmltYWwgc3Vw
cG9ydCBmb3IgdXNpbmcgYW4gaW1hZ2UgdG8gZGVmaW5lIGEgc2hhcGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNjY0MworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgYSBmaXJzdCBzbWFsbCBz
dGVwIHRvd2FyZHMgc3VwcG9ydGluZyBDU1Mgc2hhcGVzIGRlZmluZWQgYnkgYW4KKyAgICAgICAg
aW1hZ2UgVVJMIGFuZCBhIGFscGhhIGNoYW5uZWwgdGhyZXNob2xkLiBUbyBrZWVwIHRoZSBwYXRj
aCBhcyBzbWFsbCBhcworICAgICAgICBwb3NzaWJsZSwgdGhlcmUgYXJlIG1hbnkgbGltaXRhdGlv
bnM6CisgICAgICAgIC0gSW1hZ2Ugc2hhcGUgdmFsdWVzIGNhbiBvbmx5IGJlIHVzZWQgd2l0aCBz
aGFwZS1pbnNpZGUgKG5vdCBzaGFwZS1vdXRzaWRlKS4KKyAgICAgICAgLSBUaGUgQ1NTIHNoYXBl
LWltYWdlLXRocmVzaG9sZCBwcm9wZXJ0eSBpc24ndCBzdXBwb3J0ZWQsIGN1cnJlbnRseSB0aGUg
dGhyZXNob2xkIGlzIGFsd2F5cyAwLgorICAgICAgICAtIFRoZSBSYXN0ZXJTaGFwZSBpbnRlcm5h
bCByZXByZXNlbnRhdGlvbiBvZiBhbiBpbWFnZSBzaGFwZSBzaG91bGQgYmUgbW9yZSBlZmZpY2ll
bnQuCisgICAgICAgIC0gR0lGcyBhcmVuJ3Qgc3VwcG9ydGVkIGNvcnJlY3RseSwgb25seSBmcmFt
ZTAgc2hvdWxkIGJlIHVzZWQuCisgICAgICAgIC0gVGhlIGZpcnN0IGxheW91dCBwb3NpdGlvbiBp
c24ndCBjb21wdXRlZCwgaXQncyBhc3N1bWVkIHRoYXQgbGF5b3V0IGNhbiBiZWdpbiBhdCB0aGUg
dG9wIG9mIHRoZSBzaGFwZS4KKyAgICAgICAgLSBUaGVyZSdzIG5vIHN1cHBvcnQgZm9yIHNoYXBl
LW1hcmdpbiBhbmQgc2hhcGUtcGFkZGluZy4KKworICAgICAgICBUZXN0OiBmYXN0L2V4Y2x1c2lv
bnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1pbWFnZS0wMDEuaHRtbAorCisgICAgICAgICog
Q01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAg
KiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2o6
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9j
azo6aW1hZ2VDaGFuZ2VkKTogV2hlbiB0aGUgaW1hZ2UgaGFzIGZpbmlzaGVkIGxvYWRpbmcsIHJl
cXVlc3QgYSBsYXlvdXQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJPYmplY3Q6OnNldFN0eWxlKTogQWRkIG5vdGlmeSBjbGllbnRzIGZvciBzaGFwZSBpbWFnZXMu
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnVwZGF0ZVNoYXBlSW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6cmVtb3ZlU2hhcGVJbWFnZUNsaWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJPYmplY3Q6OmFyZW5hRGVsZXRlKTogUmVtb3ZlIG5vdGlmeSBjbGllbnRzIGZvciBz
aGFwZSBpbWFnZXMuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuY3BwOiBBZGRlZC4gQSBTaGFwZSBkZWZp
bmVkIGJ5IHRocmVzaG9sZGluZyBhbiBpbWFnZSdzIGFscGhhIGNoYW5uZWwuCisgICAgICAgIChX
ZWJDb3JlOjpSYXN0ZXJTaGFwZUludGVydmFsczo6Ym91bmRzKToKKyAgICAgICAgKFdlYkNvcmU6
OlJhc3RlclNoYXBlSW50ZXJ2YWxzOjphZGRJbnRlcnZhbCk6IEFkZCBhIHNpbmdsZSBydW4gdG8g
dGhlIHNoYXBlLgorICAgICAgICAoV2ViQ29yZTo6YWxpZ25lZFJlY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmFzdGVyU2hhcGVJbnRlcnZhbHM6OmdldEludGVydmFscyk6IFJldHVybiB0aGUgc2hh
cGUncyBydW5zIHRoYXQgZmFsbCB3aXRoaW4gYSBob3Jpem9uYWwgYm94LgorICAgICAgICAoV2Vi
Q29yZTo6UmFzdGVyU2hhcGU6Om1hcmdpbkludGVydmFscyk6IEludGVybmFsIHJlcHJlc2VudGF0
aW9uIG9mIHRoZSBzaGFwZSB3aXRoIHNoYXBlLW1hcmdpbiBmYWN0b3JlZCBpbi4gIEN1cnJlbnRs
eSBvbmx5IGEgc3R1Yi4KKyAgICAgICAgKFdlYkNvcmU6OlJhc3RlclNoYXBlOjpwYWRkaW5nSW50
ZXJ2YWxzKTogSW50ZXJuYWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIHNoYXBlIHdpdGggc2hhcGUt
cGFkZGluZyBmYWN0b3JlZCBpbi4gIEN1cnJlbnRseSBvbmx5IGEgc3R1Yi4KKyAgICAgICAgKFdl
YkNvcmU6OlJhc3RlclNoYXBlOjpnZXRFeGNsdWRlZEludGVydmFscyk6CisgICAgICAgIChXZWJD
b3JlOjpSYXN0ZXJTaGFwZTo6Z2V0SW5jbHVkZWRJbnRlcnZhbHMpOgorICAgICAgICAoV2ViQ29y
ZTo6UmFzdGVyU2hhcGU6OmZpcnN0SW5jbHVkZWRJbnRlcnZhbExvZ2ljYWxUb3ApOgorICAgICAg
ICAqIHJlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJh
c3RlclNoYXBlSW50ZXJ2YWxzOjpSYXN0ZXJTaGFwZUludGVydmFscyk6IEludGVybmFsIHJ1biBs
ZW5ndGggZW5jb2RlZCByZXByZXNlbnRhdGlvbiBvZiBhIFJhc3RlclNoYXBlLgorICAgICAgICAo
V2ViQ29yZTo6UmFzdGVyU2hhcGVJbnRlcnZhbHM6OmlzRW1wdHkpOgorICAgICAgICAoV2ViQ29y
ZTo6UmFzdGVyU2hhcGU6OlJhc3RlclNoYXBlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVz
L1NoYXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXBlOjpjcmVhdGVTaGFwZSk6IFN1cHBv
cnQgZm9yIGNyZWF0aW5nIGEgU2hhcGUgYmFzZWQgb24gYSBSYXN0ZXJTaGFwZUludGVydmFscyBv
YmplY3QuCisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5oOgorICAgICAgICAqIHJl
bmRlcmluZy9zaGFwZXMvU2hhcGVJbmZvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ojo6Y29tcHV0
ZWRTaGFwZSk6IEFkZGVkIHN1cHBvcnQgZm9yIHRoZSBJbWFnZSBTaGFwZVZhbHVlIHR5cGUuCisg
ICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUluc2lkZUluZm8uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcGVJbnNpZGVJbmZvOjppc0VuYWJsZWRGb3IpOiBBZGRlZCBzdXBwb3J0IGZv
ciB0aGUgSW1hZ2UgU2hhcGVWYWx1ZSB0eXBlLgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMv
U2hhcGVPdXRzaWRlSW5mby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZU91dHNpZGVJbmZv
Ojppc0VuYWJsZWRGb3IpOiBBZGRlZCBzdXBwb3J0IGZvciB0aGUgSW1hZ2UgU2hhcGVWYWx1ZSB0
eXBlLgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TaGFwZVZhbHVlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFwZVZhbHVlOjppc0ltYWdlVmFsaWQpOiBUcnVlIGlmIHRoZSBzaGFwZSdzIGlt
YWdlIGlzIHJlYWR5IHRvIGJlIGJlIHByb2Nlc3NlZC4KKwogMjAxMy0wNi0xMiAgQ2hyaXN0b3Bo
ZSBEdW1leiAgPGNoLmR1bWV6QHNpc2Euc2Ftc3VuZy5jb20+CiAKICAgICAgICAgU3VwcG9ydCBs
YXRlc3QgV2ViIElETCBpbmRleGVkIHByb3BlcnR5IGdldHRlcnMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCmluZGV4IDc4YmQ2MTguLjQwMzNhZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQpAQCAtNDYyMSw2ICs0NjIxLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFVuZGVyT3Zlci5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1BvbHlnb25TaGFwZS5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUG9seWdvblNoYXBlLmggXAorCVNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmggXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zaGFwZXMvUmVjdGFuZ2xlU2hhcGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c2hhcGVzL1JlY3RhbmdsZVNoYXBlLmggXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFw
ZXMvU2hhcGUuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9T
b3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IDA3YmE4YmQuLjBkOTQ1MmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0
LnByaQpAQCAtMTIzOSw2ICsxMjM5LDcgQEAgU09VUkNFUyArPSBcCiAgICAgcmVuZGVyaW5nL1Jv
b3RJbmxpbmVCb3guY3BwIFwKICAgICByZW5kZXJpbmcvU2Nyb2xsQmVoYXZpb3IuY3BwIFwKICAg
ICByZW5kZXJpbmcvc2hhcGVzL1BvbHlnb25TaGFwZS5jcHAgXAorICAgIHJlbmRlcmluZy9zaGFw
ZXMvUmFzdGVyU2hhcGUuY3BwIFwKICAgICByZW5kZXJpbmcvc2hhcGVzL1JlY3RhbmdsZVNoYXBl
LmNwcCBcCiAgICAgcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAgXAogICAgIHJlbmRlcmluZy9z
aGFwZXMvU2hhcGVJbmZvLmNwcCBcCkBAIC0yNTA3LDYgKzI1MDgsNyBAQCBIRUFERVJTICs9IFwK
ICAgICByZW5kZXJpbmcvUm9vdElubGluZUJveC5oIFwKICAgICByZW5kZXJpbmcvU2Nyb2xsQmVo
YXZpb3IuaCBcCiAgICAgcmVuZGVyaW5nL3NoYXBlcy9Qb2x5Z29uU2hhcGUuaCBcCisgICAgcmVu
ZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5oIFwKICAgICByZW5kZXJpbmcvc2hhcGVzL1JlY3Rh
bmdsZVNoYXBlLmggXAogICAgIHJlbmRlcmluZy9zaGFwZXMvU2hhcGUuaCBcCiAgICAgcmVuZGVy
aW5nL3NoYXBlcy9TaGFwZUluZm8uaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hw
cm9qL1dlYkNvcmUudmN4cHJvagppbmRleCA1NWEzNzA0Li5iNDNmZDg0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKQEAgLTYzMDIsNiArNjMw
Miw3IEBACiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9t
QnVpbGQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxyZW5k
ZXJpbmdcc2hhcGVzXFBvbHlnb25TaGFwZS5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxyZW5kZXJpbmdcc2hhcGVzXFJhc3RlclNoYXBlLmNwcCIgLz4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xzaGFwZXNcUmVjdGFuZ2xlU2hhcGUuY3BwIiAvPgogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXHNoYXBlc1xTaGFwZS5jcHAiIC8+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcc2hhcGVzXFNoYXBlSW5zaWRlSW5m
by5jcHAiIC8+CkBAIC0xMjE5NCw2ICsxMjE5NSw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxyZW5kZXJpbmdcUmVuZGVyU2xpZGVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxyZW5kZXJpbmdcUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xzaGFwZXNcUG9seWdvblNoYXBlLmgiIC8+CisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcc2hhcGVzXFJhc3RlclNoYXBlLmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcc2hhcGVzXFJlY3RhbmdsZVNo
YXBlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcc2hhcGVzXFNo
YXBlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcc2hhcGVzXFNo
YXBlSW5zaWRlSW5mby5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDRjNDg3ZWEuLmY0NzJmNzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE4MzUsNiAr
MTgzNSw4IEBACiAJCTZFNjdEMkE2MTI4MEU4QTQwMDg3NThGNyAvKiBFeHRlbnNpb25zM0RPcGVu
R0wuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU2
N0QyQTQxMjgwRThBNDAwODc1OEY3IC8qIEV4dGVuc2lvbnMzRE9wZW5HTC5jcHAgKi87IH07CiAJ
CTZFNjdEMkE3MTI4MEU4QTQwMDg3NThGNyAvKiBFeHRlbnNpb25zM0RPcGVuR0wuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNjdEMkE1MTI4MEU4QTQw
MDg3NThGNyAvKiBFeHRlbnNpb25zM0RPcGVuR0wuaCAqLzsgfTsKIAkJNkU2N0QyQTkxMjgwRThC
RDAwODc1OEY3IC8qIEV4dGVuc2lvbnMzRC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNkU2N0QyQTgxMjgwRThCRDAwODc1OEY3IC8qIEV4dGVuc2lvbnMz
RC5oICovOyB9OworCQk2RTg0RTlFMDE3NjY4QkVFMDA4MTVCNjggLyogUmFzdGVyU2hhcGUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU4NEU5REUx
NzY2OEJBRDAwODE1QjY4IC8qIFJhc3RlclNoYXBlLmNwcCAqLzsgfTsKKwkJNkU4NEU5RTExNzY2
OEJGMTAwODE1QjY4IC8qIFJhc3RlclNoYXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA2RTg0RTlERjE3NjY4QkFEMDA4MTVCNjggLyogUmFzdGVyU2hh
cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2
RUJDNUVBRjEzOEI1MEYyMDBBMENGOEEgLyogSlNGbG9hdDY0QXJyYXkuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkVCQzVFQUQxMzhCNTBGMjAwQTBD
RjhBIC8qIEpTRmxvYXQ2NEFycmF5LmNwcCAqLzsgfTsKIAkJNkVCQzVFQjAxMzhCNTBGMjAwQTBD
RjhBIC8qIEpTRmxvYXQ2NEFycmF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA2RUJDNUVBRTEzOEI1MEYyMDBBMENGOEEgLyogSlNGbG9hdDY0QXJyYXku
aCAqLzsgfTsKIAkJNkVCRjBFNDgxMkE4OTI2MTAwREIxNzA5IC8qIE9FU1RleHR1cmVGbG9hdC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RUJGMEU0
NTEyQTg5MjYxMDBEQjE3MDkgLyogT0VTVGV4dHVyZUZsb2F0LmNwcCAqLzsgfTsKQEAgLTgyMjgs
NiArODIzMCw4IEBACiAJCTZFNjdEMkE0MTI4MEU4QTQwMDg3NThGNyAvKiBFeHRlbnNpb25zM0RP
cGVuR0wuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXh0ZW5zaW9u
czNET3BlbkdMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkU2N0QyQTUxMjgw
RThBNDAwODc1OEY3IC8qIEV4dGVuc2lvbnMzRE9wZW5HTC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBFeHRlbnNpb25zM0RPcGVuR0wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNkU2N0QyQTgxMjgwRThCRDAwODc1OEY3IC8qIEV4dGVuc2lvbnMzRC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeHRlbnNpb25zM0QuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNkU4NEU5REUxNzY2OEJBRDAwODE1QjY4IC8qIFJhc3RlclNoYXBl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJhc3RlclNoYXBlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkU4NEU5REYxNzY2OEJBRDAwODE1QjY4
IC8qIFJhc3RlclNoYXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJhc3Rl
clNoYXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFQkM1RDgwMTM4QjRDNEUw
MEEwQ0Y4QSAvKiBGbG9hdDY0QXJyYXkuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IEZsb2F0
NjRBcnJheS5pZGw7IHBhdGggPSBjYW52YXMvRmxvYXQ2NEFycmF5LmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNkVCQzVFQUQxMzhCNTBGMjAwQTBDRjhBIC8qIEpTRmxvYXQ2NEFy
cmF5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRmxvYXQ2NEFy
cmF5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkVCQzVFQUUxMzhCNTBGMjAw
QTBDRjhBIC8qIEpTRmxvYXQ2NEFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTRmxvYXQ2NEFycmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDU0
NCw2ICsyMDU0OCw4IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQlGRDA4QTg3QTE3NUQzOTI2MDAy
Q0QzNjAgLyogUG9seWdvblNoYXBlLmNwcCAqLywKIAkJCQlGRDA4QTg3QjE3NUQzOTI2MDAyQ0Qz
NjAgLyogUG9seWdvblNoYXBlLmggKi8sCisJCQkJNkU4NEU5REUxNzY2OEJBRDAwODE1QjY4IC8q
IFJhc3RlclNoYXBlLmNwcCAqLywKKwkJCQk2RTg0RTlERjE3NjY4QkFEMDA4MTVCNjggLyogUmFz
dGVyU2hhcGUuaCAqLywKIAkJCQlGRDA4QTg3QzE3NUQzOTI2MDAyQ0QzNjAgLyogUmVjdGFuZ2xl
U2hhcGUuY3BwICovLAogCQkJCUZEMDhBODdEMTc1RDM5MjYwMDJDRDM2MCAvKiBSZWN0YW5nbGVT
aGFwZS5oICovLAogCQkJCUZEMDhBODdFMTc1RDM5MjYwMDJDRDM2MCAvKiBTaGFwZS5jcHAgKi8s
CkBAIC0yMDg2NCw2ICsyMDg3MCw3IEBACiAJCQlmaWxlcyA9ICgKIAkJCQlGRTExNUZBQjE2Nzk4
OENEMDAyNDkxMzQgLyogQWJzdHJhY3REYXRhYmFzZVNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRkU0QUFERUUxNkQyQzM3NDAwMDI2RkZDIC8qIEFic3RyYWN0U1FMU3RhdGVtZW50LmggaW4g
SGVhZGVycyAqLywKKwkJCQk2RTg0RTlFMTE3NjY4QkYxMDA4MTVCNjggLyogUmFzdGVyU2hhcGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCUZFNEFBREVGMTZEMkMzNzQwMDAyNkZGQyAvKiBBYnN0cmFj
dFNRTFN0YXRlbWVudEJhY2tlbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRTFCMUQxMEZGNTk4
NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjlBODEy
MkUwRkJCOUMxRDAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuaCBpbiBIZWFk
ZXJzICovLApAQCAtMjY5NTUsNiArMjY5NjIsNyBAQAogCQkJCUJFNkRGNzExMTcxQ0EyREEwMERE
NTJCOCAvKiBKU0F1ZGlvVHJhY2tDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkU2REY3
MTMxNzFDQTJEQTAwREQ1MkI4IC8qIEpTQXVkaW9UcmFja0xpc3RDdXN0b20uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRkI3MTlDNDAxNzIzOENBRTAwMjJERTM0IC8qIFdlYktpdENTU01hdEZ1bmN0
aW9uVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNkU4NEU5RTAxNzY2OEJFRTAwODE1QjY4
IC8qIFJhc3RlclNoYXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5jcHAKaW5kZXggZTdkN2QzZC4uNjlhZDIzMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC0xNDM1LDYgKzE0MzUsMjEgQEAgdm9pZCBS
ZW5kZXJCbG9jazo6bGF5b3V0KCkKIH0KIAogI2lmIEVOQUJMRShDU1NfU0hBUEVTKQordm9pZCBS
ZW5kZXJCbG9jazo6aW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciBpbWFnZSwgY29uc3QgSW50
UmVjdCopCit7CisgICAgUmVuZGVyQm94OjppbWFnZUNoYW5nZWQoaW1hZ2UpOworCisgICAgaWYg
KCFwYXJlbnQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgU2hhcGVWYWx1ZSogc2hhcGVWYWx1
ZSA9IHN0eWxlKCktPnNoYXBlSW5zaWRlKCk7CisgICAgaWYgKHNoYXBlVmFsdWUgJiYgc2hhcGVW
YWx1ZS0+aW1hZ2UoKSAmJiBzaGFwZVZhbHVlLT5pbWFnZSgpLT5kYXRhKCkgPT0gaW1hZ2UpIHsK
KyAgICAgICAgU2hhcGVJbnNpZGVJbmZvKiBzaGFwZUluc2lkZUluZm8gPSBlbnN1cmVTaGFwZUlu
c2lkZUluZm8oKTsKKyAgICAgICAgc2hhcGVJbnNpZGVJbmZvLT5kaXJ0eVNoYXBlU2l6ZSgpOwor
ICAgICAgICBtYXJrU2hhcGVJbnNpZGVEZXNjZW5kYW50c0ZvckxheW91dCgpOworICAgIH0KK30K
Kwogdm9pZCBSZW5kZXJCbG9jazo6dXBkYXRlU2hhcGVJbnNpZGVJbmZvQWZ0ZXJTdHlsZUNoYW5n
ZShjb25zdCBTaGFwZVZhbHVlKiBzaGFwZUluc2lkZSwgY29uc3QgU2hhcGVWYWx1ZSogb2xkU2hh
cGVJbnNpZGUpCiB7CiAgICAgLy8gRklYTUU6IEEgZnV0dXJlIG9wdGltaXphdGlvbiB3b3VsZCBk
byBhIGRlZXAgY29tcGFyaXNvbiBmb3IgZXF1YWxpdHkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9jay5oCmluZGV4IGJkMTBjOTguLjNmZmE3YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9jay5oCkBAIC00NjgsNiArNDY4LDcgQEAgcHVibGljOgogICAgIHZvaWQg
bWFya1NoYXBlSW5zaWRlRGVzY2VuZGFudHNGb3JMYXlvdXQoKTsKICAgICBTaGFwZUluc2lkZUlu
Zm8qIGxheW91dFNoYXBlSW5zaWRlSW5mbygpIGNvbnN0OwogICAgIGJvb2wgYWxsb3dzU2hhcGVJ
bnNpZGVJbmZvU2hhcmluZygpIGNvbnN0IHsgcmV0dXJuICFpc0lubGluZSgpICYmICFpc0Zsb2F0
aW5nKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgaW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciwg
Y29uc3QgSW50UmVjdCogPSAwKSBPVkVSUklERTsKICNlbmRpZgogCiBwcm90ZWN0ZWQ6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IDJkM2FjMDQuLmVkMTI3
OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC0xODQ0
LDYgKzE4NDQsMTEgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OnNldFN0eWxlKFBhc3NSZWZQdHI8UmVu
ZGVyU3R5bGU+IHN0eWxlKQogICAgIHVwZGF0ZUltYWdlKG9sZFN0eWxlID8gb2xkU3R5bGUtPmJv
cmRlckltYWdlKCkuaW1hZ2UoKSA6IDAsIG1fc3R5bGUgPyBtX3N0eWxlLT5ib3JkZXJJbWFnZSgp
LmltYWdlKCkgOiAwKTsKICAgICB1cGRhdGVJbWFnZShvbGRTdHlsZSA/IG9sZFN0eWxlLT5tYXNr
Qm94SW1hZ2UoKS5pbWFnZSgpIDogMCwgbV9zdHlsZSA/IG1fc3R5bGUtPm1hc2tCb3hJbWFnZSgp
LmltYWdlKCkgOiAwKTsKIAorI2lmIEVOQUJMRShDU1NfU0hBUEVTKQorICAgIHVwZGF0ZVNoYXBl
SW1hZ2Uob2xkU3R5bGUgPyBvbGRTdHlsZS0+c2hhcGVJbnNpZGUoKSA6IDAsIG1fc3R5bGUgPyBt
X3N0eWxlLT5zaGFwZUluc2lkZSgpIDogMCk7CisgICAgdXBkYXRlU2hhcGVJbWFnZShvbGRTdHls
ZSA/IG9sZFN0eWxlLT5zaGFwZU91dHNpZGUoKSA6IDAsIG1fc3R5bGUgPyBtX3N0eWxlLT5zaGFw
ZU91dHNpZGUoKSA6IDApOworI2VuZGlmCisKICAgICAvLyBXZSBuZWVkIHRvIGVuc3VyZSB0aGF0
IHZpZXctPm1heGltYWxPdXRsaW5lU2l6ZSgpIGlzIHZhbGlkIGZvciBhbnkgcmVwYWludHMgdGhh
dCBoYXBwZW4KICAgICAvLyBkdXJpbmcgc3R5bGVEaWRDaGFuZ2UgKGl0J3MgdXNlZCBieSBjbGlw
cGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCgpKS4KICAgICBpZiAobV9zdHlsZS0+b3V0bGluZVdp
ZHRoKCkgPiAwICYmIG1fc3R5bGUtPm91dGxpbmVTaXplKCkgPiBtYXhpbWFsT3V0bGluZVNpemUo
UGFpbnRQaGFzZU91dGxpbmUpKQpAQCAtMjA5Niw2ICsyMTAxLDE0IEBAIHZvaWQgUmVuZGVyT2Jq
ZWN0Ojp1cGRhdGVJbWFnZShTdHlsZUltYWdlKiBvbGRJbWFnZSwgU3R5bGVJbWFnZSogbmV3SW1h
Z2UpCiAgICAgfQogfQogCisjaWYgRU5BQkxFKENTU19TSEFQRVMpCit2b2lkIFJlbmRlck9iamVj
dDo6dXBkYXRlU2hhcGVJbWFnZShjb25zdCBTaGFwZVZhbHVlKiBvbGRTaGFwZVZhbHVlLCBjb25z
dCBTaGFwZVZhbHVlKiBuZXdTaGFwZVZhbHVlKQoreworICAgIGlmIChvbGRTaGFwZVZhbHVlIHx8
IG5ld1NoYXBlVmFsdWUpCisgICAgICAgIHVwZGF0ZUltYWdlKG9sZFNoYXBlVmFsdWUgPyBvbGRT
aGFwZVZhbHVlLT5pbWFnZSgpIDogMCwgbmV3U2hhcGVWYWx1ZSA/IG5ld1NoYXBlVmFsdWUtPmlt
YWdlKCkgOiAwKTsKK30KKyNlbmRpZgorCiBMYXlvdXRSZWN0IFJlbmRlck9iamVjdDo6dmlld1Jl
Y3QoKSBjb25zdAogewogICAgIHJldHVybiB2aWV3KCktPnZpZXdSZWN0KCk7CkBAIC0yNjEyLDYg
KzI2MjUsMTYgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OmRlc3Ryb3koKQogICAgIGFyZW5hRGVsZXRl
KHJlbmRlckFyZW5hKCksIHRoaXMpOwogfQogCisjaWYgRU5BQkxFKENTU19TSEFQRVMpCitzdGF0
aWMgaW5saW5lIHZvaWQgcmVtb3ZlU2hhcGVJbWFnZUNsaWVudChSZW5kZXJPYmplY3QgKnRoaXNS
ZW5kZXJPYmplY3QsIFNoYXBlVmFsdWUqIHNoYXBlVmFsdWUpCit7CisgICAgaWYgKCFzaGFwZVZh
bHVlKQorICAgICAgICByZXR1cm47CisgICAgaWYgKFN0eWxlSW1hZ2UqIHNoYXBlSW1hZ2UgPSBz
aGFwZVZhbHVlLT5pbWFnZSgpKQorICAgICAgICBzaGFwZUltYWdlLT5yZW1vdmVDbGllbnQodGhp
c1JlbmRlck9iamVjdCk7Cit9CisjZW5kaWYKKwogdm9pZCBSZW5kZXJPYmplY3Q6OmFyZW5hRGVs
ZXRlKFJlbmRlckFyZW5hKiBhcmVuYSwgdm9pZCogYmFzZSkKIHsKICAgICBpZiAobV9zdHlsZSkg
ewpAQCAtMjYzMCw2ICsyNjUzLDExIEBAIHZvaWQgUmVuZGVyT2JqZWN0OjphcmVuYURlbGV0ZShS
ZW5kZXJBcmVuYSogYXJlbmEsIHZvaWQqIGJhc2UpCiAKICAgICAgICAgaWYgKFN0eWxlSW1hZ2Uq
IG1hc2tCb3hJbWFnZSA9IG1fc3R5bGUtPm1hc2tCb3hJbWFnZSgpLmltYWdlKCkpCiAgICAgICAg
ICAgICBtYXNrQm94SW1hZ2UtPnJlbW92ZUNsaWVudCh0aGlzKTsKKworI2lmIEVOQUJMRShDU1Nf
U0hBUEVTKQorICAgICAgICByZW1vdmVTaGFwZUltYWdlQ2xpZW50KHRoaXMsIG1fc3R5bGUtPnNo
YXBlSW5zaWRlKCkpOworICAgICAgICByZW1vdmVTaGFwZUltYWdlQ2xpZW50KHRoaXMsIG1fc3R5
bGUtPnNoYXBlT3V0c2lkZSgpKTsKKyNlbmRpZgogICAgIH0KIAogI2lmbmRlZiBOREVCVUcKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAppbmRleCA5MzU3YWM1Li5mYjg4OTQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCkBAIC03MDMsNiArNzAz
LDkgQEAgcHVibGljOgogCiAgICAgdm9pZCB1cGRhdGVGaWxsSW1hZ2VzKGNvbnN0IEZpbGxMYXll
ciosIGNvbnN0IEZpbGxMYXllciopOwogICAgIHZvaWQgdXBkYXRlSW1hZ2UoU3R5bGVJbWFnZSos
IFN0eWxlSW1hZ2UqKTsKKyNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKKyAgICB2b2lkIHVwZGF0ZVNo
YXBlSW1hZ2UoY29uc3QgU2hhcGVWYWx1ZSosIGNvbnN0IFNoYXBlVmFsdWUqKTsKKyNlbmRpZgog
CiAgICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hh
cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjdiNWQ3NwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuY3BwCkBA
IC0wLDAgKzEsMTYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFkb2JlIFN5c3RlbXMg
SW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscworICogICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MKKyAqIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFCisgKiBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsCisgKiBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsCisgKiBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VECisgKiBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJh
c3RlclNoYXBlLmgiCisKKyNpbmNsdWRlICJTaGFwZUludGVydmFsLmgiCisjaW5jbHVkZSA8d3Rm
L01hdGhFeHRyYXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitJbnRSZWN0IFJhc3RlclNo
YXBlSW50ZXJ2YWxzOjpib3VuZHMoKSBjb25zdAoreworICAgIGlmICghbV9ib3VuZHMpCisgICAg
ICAgIG1fYm91bmRzID0gYWRvcHRQdHIobmV3IEludFJlY3QobV9yZWdpb24uYm91bmRzKCkpKTsK
KyAgICByZXR1cm4gKm1fYm91bmRzOworfQorCit2b2lkIFJhc3RlclNoYXBlSW50ZXJ2YWxzOjph
ZGRJbnRlcnZhbChpbnQgeSwgaW50IHgxLCBpbnQgeDIpCit7CisgICAgbV9yZWdpb24udW5pdGUo
UmVnaW9uKEludFJlY3QoeDEsIHksIHgyIC0geDEsIDEpKSk7CisgICAgbV9ib3VuZHMuY2xlYXIo
KTsKK30KKworc3RhdGljIGlubGluZSBJbnRSZWN0IGFsaWduZWRSZWN0KEludFJlY3QgciwgaW50
IHkxLCBpbnQgeTIpCit7CisgICAgcmV0dXJuIEludFJlY3Qoci54KCksIHkxLCByLndpZHRoKCks
IHkyIC0geTEpOworfQorCit2b2lkIFJhc3RlclNoYXBlSW50ZXJ2YWxzOjpnZXRJbnRlcnZhbHMo
aW50IHkxLCBpbnQgeTIsIFNlZ21lbnRMaXN0JiByZXN1bHQpIGNvbnN0Cit7CisgICAgQVNTRVJU
KHkyID49IHkxKTsKKworICAgIEludFJlY3QgbGluZVJlY3QoYm91bmRzKCkueCgpLCB5MSwgYm91
bmRzKCkud2lkdGgoKSwgeTIgLSB5MSk7CisgICAgUmVnaW9uIGxpbmVSZWdpb24obGluZVJlY3Qp
OworICAgIGxpbmVSZWdpb24uaW50ZXJzZWN0KG1fcmVnaW9uKTsKKyAgICBpZiAobGluZVJlZ2lv
bi5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIFZlY3RvcjxJbnRSZWN0PiBsaW5l
UmVjdHMgPSBsaW5lUmVnaW9uLnJlY3RzKCk7CisgICAgQVNTRVJUKGxpbmVSZWN0cy5zaXplKCkg
PiAwKTsKKworICAgIFJlZ2lvbiBzZWdtZW50c1JlZ2lvbihsaW5lUmVjdCk7CisgICAgUmVnaW9u
IGludGVydmFsc1JlZ2lvbjsKKworICAgIGludCBsaW5lWSA9IGxpbmVSZWN0c1swXS55KCk7Cisg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxpbmVSZWN0cy5zaXplKCk7IGkrKykgeworICAg
ICAgICBpZiAobGluZVJlY3RzW2ldLnkoKSAhPSBsaW5lWSkgeworICAgICAgICAgICAgc2VnbWVu
dHNSZWdpb24uaW50ZXJzZWN0KGludGVydmFsc1JlZ2lvbik7CisgICAgICAgICAgICBpbnRlcnZh
bHNSZWdpb24gPSBSZWdpb24oKTsKKyAgICAgICAgfQorICAgICAgICBpbnRlcnZhbHNSZWdpb24u
dW5pdGUoUmVnaW9uKGFsaWduZWRSZWN0KGxpbmVSZWN0c1tpXSwgeTEsIHkyKSkpOworICAgICAg
ICBsaW5lWSA9IGxpbmVSZWN0c1tpXS55KCk7CisgICAgfQorICAgIGlmICghaW50ZXJ2YWxzUmVn
aW9uLmlzRW1wdHkoKSkKKyAgICAgICAgc2VnbWVudHNSZWdpb24uaW50ZXJzZWN0KGludGVydmFs
c1JlZ2lvbik7CisKKyAgICBWZWN0b3I8SW50UmVjdD4gc2VnbWVudFJlY3RzID0gc2VnbWVudHNS
ZWdpb24ucmVjdHMoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2VnbWVudFJlY3Rz
LnNpemUoKTsgaSsrKQorICAgICAgICByZXN1bHQuYXBwZW5kKExpbmVTZWdtZW50KHNlZ21lbnRS
ZWN0c1tpXS54KCksIHNlZ21lbnRSZWN0c1tpXS5tYXhYKCkpKTsKK30KKworY29uc3QgUmFzdGVy
U2hhcGVJbnRlcnZhbHMmIFJhc3RlclNoYXBlOjptYXJnaW5JbnRlcnZhbHMoKSBjb25zdAorewor
ICAgIEFTU0VSVChzaGFwZU1hcmdpbigpID49IDApOworICAgIGlmICghc2hhcGVNYXJnaW4oKSkK
KyAgICAgICAgcmV0dXJuICptX2ludGVydmFsczsKKworICAgIC8vIEZJWE1FOiBhZGQgc3VwcG9y
dCBmb3Igbm9uLXplcm8gbWFyZ2luCisgICAgcmV0dXJuICptX2ludGVydmFsczsKK30KKworY29u
c3QgUmFzdGVyU2hhcGVJbnRlcnZhbHMmIFJhc3RlclNoYXBlOjpwYWRkaW5nSW50ZXJ2YWxzKCkg
Y29uc3QKK3sKKyAgICBBU1NFUlQoc2hhcGVQYWRkaW5nKCkgPj0gMCk7CisgICAgaWYgKCFzaGFw
ZVBhZGRpbmcoKSkKKyAgICAgICAgcmV0dXJuICptX2ludGVydmFsczsKKworICAgIC8vIEZJWE1F
OiBhZGQgc3VwcG9ydCBmb3Igbm9uLXplcm8gcGFkZGluZworICAgIHJldHVybiAqbV9pbnRlcnZh
bHM7Cit9CisKK3ZvaWQgUmFzdGVyU2hhcGU6OmdldEV4Y2x1ZGVkSW50ZXJ2YWxzKExheW91dFVu
aXQgbG9naWNhbFRvcCwgTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBTZWdtZW50TGlzdCYgcmVz
dWx0KSBjb25zdAoreworICAgIGNvbnN0IFJhc3RlclNoYXBlSW50ZXJ2YWxzJiBpbnRlcnZhbHMg
PSBtYXJnaW5JbnRlcnZhbHMoKTsKKyAgICBpZiAoaW50ZXJ2YWxzLmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgZmxvYXQgeTEgPSBsb2dpY2FsVG9wOworICAgIGZsb2F0IHkyID0g
bG9naWNhbFRvcCArIGxvZ2ljYWxIZWlnaHQ7CisKKyAgICBpZiAoeTIgPCBpbnRlcnZhbHMuYm91
bmRzKCkueSgpIHx8IHkxID49IGludGVydmFscy5ib3VuZHMoKS5tYXhZKCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIGludGVydmFscy5nZXRJbnRlcnZhbHMoeTEsIHkyLCByZXN1bHQpOworfQor
Cit2b2lkIFJhc3RlclNoYXBlOjpnZXRJbmNsdWRlZEludGVydmFscyhMYXlvdXRVbml0IGxvZ2lj
YWxUb3AsIExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgU2VnbWVudExpc3QmIHJlc3VsdCkgY29u
c3QKK3sKKyAgICBjb25zdCBSYXN0ZXJTaGFwZUludGVydmFscyYgaW50ZXJ2YWxzID0gcGFkZGlu
Z0ludGVydmFscygpOworICAgIGlmIChpbnRlcnZhbHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm47CisKKyAgICBmbG9hdCB5MSA9IGxvZ2ljYWxUb3A7CisgICAgZmxvYXQgeTIgPSBsb2dpY2Fs
VG9wICsgbG9naWNhbEhlaWdodDsKKworICAgIGlmICh5MSA8IGludGVydmFscy5ib3VuZHMoKS55
KCkgfHwgeTIgPiBpbnRlcnZhbHMuYm91bmRzKCkubWF4WSgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBpbnRlcnZhbHMuZ2V0SW50ZXJ2YWxzKHkxLCB5MiwgcmVzdWx0KTsKK30KKworYm9vbCBS
YXN0ZXJTaGFwZTo6Zmlyc3RJbmNsdWRlZEludGVydmFsTG9naWNhbFRvcChMYXlvdXRVbml0IG1p
bkxvZ2ljYWxJbnRlcnZhbFRvcCwgY29uc3QgTGF5b3V0U2l6ZSYgbWluTG9naWNhbEludGVydmFs
U2l6ZSwgTGF5b3V0VW5pdCYgcmVzdWx0KSBjb25zdAoreworICAgIGZsb2F0IG1pbkludGVydmFs
VG9wID0gbWluTG9naWNhbEludGVydmFsVG9wOworICAgIGZsb2F0IG1pbkludGVydmFsSGVpZ2h0
ID0gbWluTG9naWNhbEludGVydmFsU2l6ZS5oZWlnaHQoKTsKKyAgICBmbG9hdCBtaW5JbnRlcnZh
bFdpZHRoID0gbWluTG9naWNhbEludGVydmFsU2l6ZS53aWR0aCgpOworCisgICAgY29uc3QgUmFz
dGVyU2hhcGVJbnRlcnZhbHMmIGludGVydmFscyA9IHBhZGRpbmdJbnRlcnZhbHMoKTsKKyAgICBp
ZiAoaW50ZXJ2YWxzLmlzRW1wdHkoKSB8fCBtaW5JbnRlcnZhbFdpZHRoID4gaW50ZXJ2YWxzLmJv
dW5kcygpLndpZHRoKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGZsb2F0IG1pblkg
PSBzdGQ6Om1heDxmbG9hdD4oaW50ZXJ2YWxzLmJvdW5kcygpLnkoKSwgbWluSW50ZXJ2YWxUb3Ap
OworICAgIGZsb2F0IG1heFkgPSBtaW5ZICsgbWluSW50ZXJ2YWxIZWlnaHQ7CisKKyAgICBpZiAo
bWF4WSA+IGludGVydmFscy5ib3VuZHMoKS5tYXhZKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIC8vIEZJWE1FOiBjb21wbGV0ZSB0aGlzIG1ldGhvZAorICAgIHJlc3VsdCA9IG1pblk7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi45ZGU5ODE3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5oCkBAIC0wLDAgKzEsODAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAgICBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZwor
ICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzCisgKiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUworICogRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKyAqIENPUFlSSUdIVCBI
T0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwKKyAqIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwKKyAqIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQKKyAqIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFJhc3RlclNoYXBlX2gKKyNkZWZpbmUgUmFzdGVyU2hhcGVfaAorCisjaW5j
bHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiUmVnaW9uLmgiCisjaW5jbHVkZSAiU2hhcGUu
aCIKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBSYXN0ZXJTaGFwZUludGVydmFscyB7Citw
dWJsaWM6CisgICAgUmFzdGVyU2hhcGVJbnRlcnZhbHMoKSB7IH0KKworICAgIEludFJlY3QgYm91
bmRzKCkgY29uc3Q7CisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgIHsgcmV0dXJuIG1fcmVnaW9u
LmlzRW1wdHkoKTsgfQorICAgIHZvaWQgYWRkSW50ZXJ2YWwoaW50IHksIGludCB4MSwgaW50IHgy
KTsKKyAgICB2b2lkIGdldEludGVydmFscyhpbnQgeTEsIGludCB5MiwgU2VnbWVudExpc3QmKSBj
b25zdDsKKworcHJpdmF0ZToKKyAgICBSZWdpb24gbV9yZWdpb247CisgICAgbXV0YWJsZSBPd25Q
dHI8SW50UmVjdD4gbV9ib3VuZHM7IC8vIENhY2hlZCB2YWx1ZSBvZiBtX3JlZ2lvbi5ib3VuZHMo
KS4KK307CisKK2NsYXNzIFJhc3RlclNoYXBlIDogcHVibGljIFNoYXBlIHsKKyAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShSYXN0ZXJTaGFwZSk7CitwdWJsaWM6CisgICAgUmFzdGVyU2hhcGUoUGFz
c093blB0cjxSYXN0ZXJTaGFwZUludGVydmFscz4gaW50ZXJ2YWxzKQorICAgICAgICA6IFNoYXBl
KCkKKyAgICAgICAgLCBtX2ludGVydmFscyhpbnRlcnZhbHMpCisgICAgeworICAgIH0KKworICAg
IHZpcnR1YWwgTGF5b3V0UmVjdCBzaGFwZU1hcmdpbkxvZ2ljYWxCb3VuZGluZ0JveCgpIGNvbnN0
IE9WRVJSSURFIHsgcmV0dXJuIHN0YXRpY19jYXN0PExheW91dFJlY3Q+KG1hcmdpbkludGVydmFs
cygpLmJvdW5kcygpKTsgfQorICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBzaGFwZVBhZGRpbmdMb2dp
Y2FsQm91bmRpbmdCb3goKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBzdGF0aWNfY2FzdDxMYXlv
dXRSZWN0PihwYWRkaW5nSW50ZXJ2YWxzKCkuYm91bmRzKCkpOyB9CisgICAgdmlydHVhbCBib29s
IGlzRW1wdHkoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2ludGVydmFscy0+aXNFbXB0eSgp
OyB9CisgICAgdmlydHVhbCB2b2lkIGdldEV4Y2x1ZGVkSW50ZXJ2YWxzKExheW91dFVuaXQgbG9n
aWNhbFRvcCwgTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBTZWdtZW50TGlzdCYpIGNvbnN0IE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBnZXRJbmNsdWRlZEludGVydmFscyhMYXlvdXRVbml0
IGxvZ2ljYWxUb3AsIExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgU2VnbWVudExpc3QmKSBjb25z
dCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgZmlyc3RJbmNsdWRlZEludGVydmFsTG9naWNh
bFRvcChMYXlvdXRVbml0IG1pbkxvZ2ljYWxJbnRlcnZhbFRvcCwgY29uc3QgTGF5b3V0U2l6ZSYg
bWluTG9naWNhbEludGVydmFsU2l6ZSwgTGF5b3V0VW5pdCYpIGNvbnN0IE9WRVJSSURFOworCitw
cml2YXRlOgorICAgIGNvbnN0IFJhc3RlclNoYXBlSW50ZXJ2YWxzJiBtYXJnaW5JbnRlcnZhbHMo
KSBjb25zdDsKKyAgICBjb25zdCBSYXN0ZXJTaGFwZUludGVydmFscyYgcGFkZGluZ0ludGVydmFs
cygpIGNvbnN0OworCisgICAgT3duUHRyPFJhc3RlclNoYXBlSW50ZXJ2YWxzPiBtX2ludGVydmFs
czsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFJhc3RlclNoYXBl
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKaW5kZXggYjc5MjBj
Yy4uMWM5OWI5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9T
aGFwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAK
QEAgLTMxLDkgKzMxLDEyIEBACiAjaW5jbHVkZSAiU2hhcGUuaCIKIAogI2luY2x1ZGUgIkJhc2lj
U2hhcGVGdW5jdGlvbnMuaCIKKyNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUgIkZs
b2F0U2l6ZS5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiTGVu
Z3RoRnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiUG9seWdvblNoYXBlLmgiCisjaW5jbHVkZSAiUmFz
dGVyU2hhcGUuaCIKICNpbmNsdWRlICJSZWN0YW5nbGVTaGFwZS5oIgogI2luY2x1ZGUgIldpbmRS
dWxlLmgiCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KQEAgLTE5MSw0ICsxOTQsNTUgQEAg
UGFzc093blB0cjxTaGFwZT4gU2hhcGU6OmNyZWF0ZVNoYXBlKGNvbnN0IEJhc2ljU2hhcGUqIGJh
c2ljU2hhcGUsIGNvbnN0IExheW91dFMKICAgICByZXR1cm4gc2hhcGUucmVsZWFzZSgpOwogfQog
CitQYXNzT3duUHRyPFNoYXBlPiBTaGFwZTo6Y3JlYXRlU2hhcGUoY29uc3QgU3R5bGVJbWFnZSog
c3R5bGVJbWFnZSwgZmxvYXQgdGhyZXNob2xkLCBjb25zdCBMYXlvdXRTaXplJiBsb2dpY2FsQm94
U2l6ZSwgV3JpdGluZ01vZGUgd3JpdGluZ01vZGUsIExlbmd0aCBtYXJnaW4sIExlbmd0aCBwYWRk
aW5nKQoreworICAgIC8vIEZJWE1FOiBTaG91bGQgY2xpcCBzaGFwZSB0byBsb2dpY2FsIGJveC4K
KyAgICBVTlVTRURfUEFSQU0obG9naWNhbEJveFNpemUpOworCisgICAgQVNTRVJUKHN0eWxlSW1h
Z2UgJiYgc3R5bGVJbWFnZS0+aXNDYWNoZWRJbWFnZSgpICYmIHN0eWxlSW1hZ2UtPmNhY2hlZElt
YWdlKCkgJiYgc3R5bGVJbWFnZS0+Y2FjaGVkSW1hZ2UoKS0+aW1hZ2UoKSk7CisKKyAgICBJbWFn
ZSogaW1hZ2UgPSBzdHlsZUltYWdlLT5jYWNoZWRJbWFnZSgpLT5pbWFnZSgpOworICAgIEdyYXBo
aWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3RvciBpbWFnZUV4dHJhY3RvcihpbWFnZSwgR3JhcGhp
Y3NDb250ZXh0M0Q6Okh0bWxEb21Ob25lLCBmYWxzZSwgdHJ1ZSk7CisgICAgaW50IGltYWdlV2lk
dGggPSBzdGF0aWNfY2FzdDxpbnQ+KGltYWdlRXh0cmFjdG9yLmltYWdlV2lkdGgoKSk7CisgICAg
aW50IGltYWdlSGVpZ2h0ID0gc3RhdGljX2Nhc3Q8aW50PihpbWFnZUV4dHJhY3Rvci5pbWFnZUhl
aWdodCgpKTsKKworICAgIFZlY3Rvcjx1aW50OF90PiBhbHBoYVBpeGVsczsKKyAgICBib29sIHBh
Y2tJbWFnZURhdGFPSyA9IEdyYXBoaWNzQ29udGV4dDNEOjpwYWNrSW1hZ2VEYXRhKGltYWdlLCBp
bWFnZUV4dHJhY3Rvci5pbWFnZVBpeGVsRGF0YSgpLAorICAgICAgICBHcmFwaGljc0NvbnRleHQz
RDo6QUxQSEEsCisgICAgICAgIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLAorICAg
ICAgICBmYWxzZSwgLyogZmxpcFkgKi8KKyAgICAgICAgR3JhcGhpY3NDb250ZXh0M0Q6OkFscGhh
RG9Ob3RoaW5nLAorICAgICAgICBpbWFnZUV4dHJhY3Rvci5pbWFnZVNvdXJjZUZvcm1hdCgpLAor
ICAgICAgICBpbWFnZVdpZHRoLAorICAgICAgICBpbWFnZUhlaWdodCwKKyAgICAgICAgaW1hZ2VF
eHRyYWN0b3IuaW1hZ2VTb3VyY2VVbnBhY2tBbGlnbm1lbnQoKSwKKyAgICAgICAgYWxwaGFQaXhl
bHMpOworCisgICAgT3duUHRyPFJhc3RlclNoYXBlSW50ZXJ2YWxzPiBpbnRlcnZhbHMgPSBhZG9w
dFB0cihuZXcgUmFzdGVyU2hhcGVJbnRlcnZhbHMoKSk7CisgICAgdWludDhfdCBhbHBoYVBpeGVs
VGhyZXNob2xkID0gdGhyZXNob2xkICogMjU1OworCisgICAgaWYgKHBhY2tJbWFnZURhdGFPSykg
eworICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGltYWdlV2lkdGggKiBpbWFn
ZUhlaWdodCkgPT0gYWxwaGFQaXhlbHMuc2l6ZSgpKTsKKyAgICAgICAgZm9yIChpbnQgeSA9IDA7
IHkgPCBpbWFnZUhlaWdodDsgeSsrKSB7CisgICAgICAgICAgICBpbnQgc3RhcnRYID0gLTE7Cisg
ICAgICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IGltYWdlV2lkdGg7IHgrKykgeworICAgICAg
ICAgICAgICAgIHVpbnQ4X3QgYWxwaGEgPSBhbHBoYVBpeGVsc1t4ICsgeSAqIGltYWdlV2lkdGhd
OworICAgICAgICAgICAgICAgIGlmICgoc3RhcnRYID09IC0xKSAmJiBhbHBoYSA+IGFscGhhUGl4
ZWxUaHJlc2hvbGQpIHsKKyAgICAgICAgICAgICAgICAgICAgc3RhcnRYID0geDsKKyAgICAgICAg
ICAgICAgICB9IGVsc2UgaWYgKHN0YXJ0WCAhPSAtMSAmJiAoYWxwaGEgPD0gYWxwaGFQaXhlbFRo
cmVzaG9sZCB8fCB4ID09IGltYWdlV2lkdGggLSAxKSkgeworICAgICAgICAgICAgICAgICAgICBp
bnRlcnZhbHMtPmFkZEludGVydmFsKHksIHN0YXJ0WCwgeCk7CisgICAgICAgICAgICAgICAgICAg
IHN0YXJ0WCA9IC0xOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KKworICAgIE93blB0cjxSYXN0ZXJTaGFwZT4gcmFzdGVyU2hhcGUgPSBhZG9wdFB0
cihuZXcgUmFzdGVyU2hhcGUoaW50ZXJ2YWxzLnJlbGVhc2UoKSkpOworICAgIHJhc3RlclNoYXBl
LT5tX3dyaXRpbmdNb2RlID0gd3JpdGluZ01vZGU7CisgICAgcmFzdGVyU2hhcGUtPm1fbWFyZ2lu
ID0gZmxvYXRWYWx1ZUZvckxlbmd0aChtYXJnaW4sIDApOworICAgIHJhc3RlclNoYXBlLT5tX3Bh
ZGRpbmcgPSBmbG9hdFZhbHVlRm9yTGVuZ3RoKHBhZGRpbmcsIDApOworCisgICAgcmV0dXJuIHJh
c3RlclNoYXBlLnJlbGVhc2UoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5oCmluZGV4IDBkOWVjZmQuLmY3NzVlNWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmgKQEAgLTMyLDYgKzMyLDcgQEAK
IAogI2luY2x1ZGUgIkJhc2ljU2hhcGVzLmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVjdC5oIgorI2lu
Y2x1ZGUgIlN0eWxlSW1hZ2UuaCIKICNpbmNsdWRlICJXcml0aW5nTW9kZS5oIgogI2luY2x1ZGUg
PHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtNjAsNiArNjEs
NyBAQCB0eXBlZGVmIFZlY3RvcjxMaW5lU2VnbWVudD4gU2VnbWVudExpc3Q7CiBjbGFzcyBTaGFw
ZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8U2hhcGU+IGNyZWF0ZVNoYXBlKGNv
bnN0IEJhc2ljU2hhcGUqLCBjb25zdCBMYXlvdXRTaXplJiBsb2dpY2FsQm94U2l6ZSwgV3JpdGlu
Z01vZGUsIExlbmd0aCBtYXJnaW4sIExlbmd0aCBwYWRkaW5nKTsKKyAgICBzdGF0aWMgUGFzc093
blB0cjxTaGFwZT4gY3JlYXRlU2hhcGUoY29uc3QgU3R5bGVJbWFnZSosIGZsb2F0IHRocmVzaG9s
ZCwgY29uc3QgTGF5b3V0U2l6ZSYgbG9naWNhbEJveFNpemUsIFdyaXRpbmdNb2RlLCBMZW5ndGgg
bWFyZ2luLCBMZW5ndGggcGFkZGluZyk7CiAKICAgICB2aXJ0dWFsIH5TaGFwZSgpIHsgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW5mby5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW5mby5jcHAKaW5kZXggZTEx
NTU4My4uYmY5NGU0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBl
cy9TaGFwZUluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hh
cGVJbmZvLmNwcApAQCAtNDUsMTIgKzQ1LDI2IEBAIGNvbnN0IFNoYXBlKiBTaGFwZUluZm88UmVu
ZGVyVHlwZSwgc2hhcGVHZXR0ZXIsIGludGVydmFsR2V0dGVyPjo6Y29tcHV0ZWRTaGFwZSgpCiAg
ICAgaWYgKFNoYXBlKiBzaGFwZSA9IG1fc2hhcGUuZ2V0KCkpCiAgICAgICAgIHJldHVybiBzaGFw
ZTsKIAotICAgIFNoYXBlVmFsdWUqIHNoYXBlVmFsdWUgPSAobV9yZW5kZXJlci0+c3R5bGUoKS0+
KnNoYXBlR2V0dGVyKSgpOwotICAgIEJhc2ljU2hhcGUqIHNoYXBlID0gKHNoYXBlVmFsdWUgJiYg
c2hhcGVWYWx1ZS0+dHlwZSgpID09IFNoYXBlVmFsdWU6OlNoYXBlKSA/IHNoYXBlVmFsdWUtPnNo
YXBlKCkgOiAwOworICAgIGNvbnN0IExheW91dFNpemUgbG9naWNhbEJveFNpemUobV9zaGFwZUxv
Z2ljYWxXaWR0aCwgbV9zaGFwZUxvZ2ljYWxIZWlnaHQpOworICAgIFdyaXRpbmdNb2RlIHdyaXRp
bmdNb2RlID0gbV9yZW5kZXJlci0+c3R5bGUoKS0+d3JpdGluZ01vZGUoKTsKKyAgICBMZW5ndGgg
bWFyZ2luID0gbV9yZW5kZXJlci0+c3R5bGUoKS0+c2hhcGVNYXJnaW4oKTsKKyAgICBMZW5ndGgg
cGFkZGluZyA9IG1fcmVuZGVyZXItPnN0eWxlKCktPnNoYXBlUGFkZGluZygpOworICAgIGNvbnN0
IFNoYXBlVmFsdWUqIHNoYXBlVmFsdWUgPSAobV9yZW5kZXJlci0+c3R5bGUoKS0+KnNoYXBlR2V0
dGVyKSgpOworICAgIEFTU0VSVChzaGFwZVZhbHVlKTsKIAotICAgIEFTU0VSVChzaGFwZSk7Cisg
ICAgc3dpdGNoIChzaGFwZVZhbHVlLT50eXBlKCkpIHsKKyAgICBjYXNlIFNoYXBlVmFsdWU6OlNo
YXBlOgorICAgICAgICBBU1NFUlQoc2hhcGVWYWx1ZS0+c2hhcGUoKSk7CisgICAgICAgIG1fc2hh
cGUgPSBTaGFwZTo6Y3JlYXRlU2hhcGUoc2hhcGVWYWx1ZS0+c2hhcGUoKSwgbG9naWNhbEJveFNp
emUsIHdyaXRpbmdNb2RlLCBtYXJnaW4sIHBhZGRpbmcpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFNoYXBlVmFsdWU6OkltYWdlOgorICAgICAgICBBU1NFUlQoc2hhcGVWYWx1ZS0+aW1hZ2Uo
KSk7CisgICAgICAgIG1fc2hhcGUgPSBTaGFwZTo6Y3JlYXRlU2hhcGUoc2hhcGVWYWx1ZS0+aW1h
Z2UoKSwgMCwgbG9naWNhbEJveFNpemUsIHdyaXRpbmdNb2RlLCBtYXJnaW4sIHBhZGRpbmcpOwor
ICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICB9CiAKLSAgICBtX3NoYXBlID0gU2hhcGU6OmNyZWF0ZVNoYXBlKHNoYXBlLCBMYXlv
dXRTaXplKG1fc2hhcGVMb2dpY2FsV2lkdGgsIG1fc2hhcGVMb2dpY2FsSGVpZ2h0KSwgbV9yZW5k
ZXJlci0+c3R5bGUoKS0+d3JpdGluZ01vZGUoKSwgbV9yZW5kZXJlci0+c3R5bGUoKS0+c2hhcGVN
YXJnaW4oKSwgbV9yZW5kZXJlci0+c3R5bGUoKS0+c2hhcGVQYWRkaW5nKCkpOwogICAgIEFTU0VS
VChtX3NoYXBlKTsKICAgICByZXR1cm4gbV9zaGFwZS5nZXQoKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVJbnNpZGVJbmZvLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVJbnNpZGVJbmZvLmNwcAppbmRleCBkMTI5
NWQwLi4xYzhlMTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVz
L1NoYXBlSW5zaWRlSW5mby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBl
cy9TaGFwZUluc2lkZUluZm8uY3BwCkBAIC00NiwxMSArNDYsMTcgQEAgTGluZVNlZ21lbnRSYW5n
ZTo6TGluZVNlZ21lbnRSYW5nZShjb25zdCBJbmxpbmVJdGVyYXRvciYgc3RhcnQsIGNvbnN0IElu
bGluZUl0ZXIKIGJvb2wgU2hhcGVJbnNpZGVJbmZvOjppc0VuYWJsZWRGb3IoY29uc3QgUmVuZGVy
QmxvY2sqIHJlbmRlcmVyKQogewogICAgIFNoYXBlVmFsdWUqIHNoYXBlVmFsdWUgPSByZW5kZXJl
ci0+c3R5bGUoKS0+cmVzb2x2ZWRTaGFwZUluc2lkZSgpOwotICAgIGlmICghc2hhcGVWYWx1ZSB8
fCBzaGFwZVZhbHVlLT50eXBlKCkgIT0gU2hhcGVWYWx1ZTo6U2hhcGUpCisgICAgaWYgKCFzaGFw
ZVZhbHVlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBCYXNpY1NoYXBlKiBzaGFwZSA9
IHNoYXBlVmFsdWUtPnNoYXBlKCk7Ci0gICAgcmV0dXJuIHNoYXBlICYmIHNoYXBlLT50eXBlKCkg
IT0gQmFzaWNTaGFwZTo6QmFzaWNTaGFwZUluc2V0UmVjdGFuZ2xlVHlwZTsKKyAgICBzd2l0Y2gg
KHNoYXBlVmFsdWUtPnR5cGUoKSkgeworICAgIGNhc2UgU2hhcGVWYWx1ZTo6U2hhcGU6CisgICAg
ICAgIHJldHVybiBzaGFwZVZhbHVlLT5zaGFwZSgpICYmIHNoYXBlVmFsdWUtPnNoYXBlKCktPnR5
cGUoKSAhPSBCYXNpY1NoYXBlOjpCYXNpY1NoYXBlSW5zZXRSZWN0YW5nbGVUeXBlOworICAgIGNh
c2UgU2hhcGVWYWx1ZTo6SW1hZ2U6CisgICAgICAgIHJldHVybiBzaGFwZVZhbHVlLT5pc0ltYWdl
VmFsaWQoKTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogfQog
CiBib29sIFNoYXBlSW5zaWRlSW5mbzo6YWRqdXN0TG9naWNhbExpbmVUb3AoZmxvYXQgbWluU2Vn
bWVudFdpZHRoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9T
aGFwZU91dHNpZGVJbmZvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hh
cGVPdXRzaWRlSW5mby5jcHAKaW5kZXggZTE5MmY2NS4uZjEyZWQ3NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uY3BwCkBAIC0z
OCw4ICszOCwxOCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogYm9vbCBTaGFwZU91dHNpZGVJbmZv
Ojppc0VuYWJsZWRGb3IoY29uc3QgUmVuZGVyQm94KiBib3gpCiB7Ci0gICAgU2hhcGVWYWx1ZSog
dmFsdWUgPSBib3gtPnN0eWxlKCktPnNoYXBlT3V0c2lkZSgpOwotICAgIHJldHVybiBib3gtPmlz
RmxvYXRpbmdXaXRoU2hhcGVPdXRzaWRlKCkgJiYgdmFsdWUtPnR5cGUoKSA9PSBTaGFwZVZhbHVl
OjpTaGFwZSAmJiB2YWx1ZS0+c2hhcGUoKTsKKyAgICBTaGFwZVZhbHVlKiBzaGFwZVZhbHVlID0g
Ym94LT5zdHlsZSgpLT5zaGFwZU91dHNpZGUoKTsKKyAgICBpZiAoIWJveC0+aXNGbG9hdGluZ1dp
dGhTaGFwZU91dHNpZGUoKSB8fCAhc2hhcGVWYWx1ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgc3dpdGNoIChzaGFwZVZhbHVlLT50eXBlKCkpIHsKKyAgICBjYXNlIFNoYXBlVmFsdWU6
OlNoYXBlOgorICAgICAgICByZXR1cm4gc2hhcGVWYWx1ZS0+c2hhcGUoKTsKKyAgICBjYXNlIFNo
YXBlVmFsdWU6OkltYWdlOgorICAgICAgICByZXR1cm4gc2hhcGVWYWx1ZS0+aXNJbWFnZVZhbGlk
KCk7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KIH0KIAogYm9v
bCBTaGFwZU91dHNpZGVJbmZvOjpjb21wdXRlU2VnbWVudHNGb3JMaW5lKExheW91dFVuaXQgbGlu
ZVRvcCwgTGF5b3V0VW5pdCBsaW5lSGVpZ2h0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1NoYXBlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TaGFwZVZhbHVlLmgKaW5kZXggNjc0YWVlYi4uYTQ3ZWQwYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYXBlVmFsdWUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhcGVWYWx1ZS5oCkBAIC0zMSw2ICszMSw3IEBACiAjZGVm
aW5lIFNoYXBlVmFsdWVfaAogCiAjaW5jbHVkZSAiQmFzaWNTaGFwZXMuaCIKKyNpbmNsdWRlICJD
YWNoZWRJbWFnZS5oIgogI2luY2x1ZGUgIlN0eWxlSW1hZ2UuaCIKICNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgogCkBAIC02MiwxMiArNjMsMTYgQEAgcHVibGljOgogCiAgICAgU2hhcGVWYWx1
ZVR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogICAgIEJhc2ljU2hhcGUqIHNo
YXBlKCkgY29uc3QgeyByZXR1cm4gbV9zaGFwZS5nZXQoKTsgfQorCiAgICAgU3R5bGVJbWFnZSog
aW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlLmdldCgpOyB9CisgICAgYm9vbCBpc0ltYWdl
VmFsaWQoKSBjb25zdCB7IHJldHVybiBpbWFnZSgpICYmIGltYWdlKCktPmNhY2hlZEltYWdlKCkg
JiYgaW1hZ2UoKS0+Y2FjaGVkSW1hZ2UoKS0+aGFzSW1hZ2UoKTsgfQogICAgIHZvaWQgc2V0SW1h
Z2UoUGFzc1JlZlB0cjxTdHlsZUltYWdlPiBpbWFnZSkKICAgICB7CisgICAgICAgIEFTU0VSVCh0
eXBlKCkgPT0gSW1hZ2UpOwogICAgICAgICBpZiAobV9pbWFnZSAhPSBpbWFnZSkKICAgICAgICAg
ICAgIG1faW1hZ2UgPSBpbWFnZTsKICAgICB9CisKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
U2hhcGVWYWx1ZSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBvdGhlci50eXBlKCk7
IH0KIAogcHJpdmF0ZToK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>204447</attachid>
            <date>2013-06-12 09:11:46 -0700</date>
            <delta_ts>2013-06-12 11:22:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>tmp.patch</filename>
            <type>text/plain</type>
            <size>38638</size>
            <attacher name="Hans Muller">giles_joplin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0NWJkYmU4MC4uYmY1ZGUzMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEzLTA2
LTEwICBIYW5zIE11bGxlciAgPGhtdWxsZXJAYWRvYmUuY29tPgorCisgICAgICAgIFtDU1MgRXhj
bHVzaW9uc10gTWluaW1hbCBzdXBwb3J0IGZvciB1c2luZyBhbiBpbWFnZSB0byBkZWZpbmUgYSBz
aGFwZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE2
NjQzCisKKyAgICAgICAgVHdvIHRlc3RzIHRvIHZlcmlmeSB0aGF0IHRoZSBpbml0aWFsIGltcGxl
bWVudGF0aW9uIG9mIHNoYXBlIHZhbHVlZCBpbWFnZXMgaXMgd29ya2luZworICAgICAgICBmb3Ig
c2hhcGUtaW5zaWRlLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtaW1hZ2Ut
MDAxLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXhjbHVzaW9ucy9zaGFw
ZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAwMS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1pbWFnZS0wMDItZXhwZWN0
ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9z
aGFwZS1pbnNpZGUtaW1hZ2UtMDAyLmh0bWw6IEFkZGVkLgorCiAyMDEzLTA2LTEyICBLd2FuZyBZ
dWwgU2VvICA8c2t5dWxAY29tcGFueTEwMC5uZXQ+CiAKICAgICAgICAgVW5yZXZpZXdlZCBnYXJk
ZW5pbmcuIFVuc2tpcHBpbmcgcGFzc2luZyB0ZXN0cy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAwMS1leHBl
Y3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFw
ZS1pbnNpZGUtaW1hZ2UtMDAxLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uZmRiYWE3MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAwMS1leHBlY3RlZC5o
dG1sCkBAIC0wLDAgKzEsMjQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxz
dHlsZT4KKyAgICAjaW1hZ2Utc2hhcGUgeworICAgICAgICBib3JkZXI6IHNvbGlkIGJsYWNrIDFw
eDsKKyAgICAgICAgZm9udDogMTJweC8xIEFoZW0sIHNhbnMtc2VyaWY7CisgICAgICAgIHBhZGRp
bmc6IDRweDsKKyAgICAgICAgY29sb3I6IGdyZWVuOworICAgICAgICB3aWR0aDogMjRweDsKKyAg
ICAgICAgaGVpZ2h0OiAyNHB4OworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImRhdGE6
aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZ0NBWUFBQUJ6
ZW5yMEFBQUFTa2xFUVZSWUNlM1hJUTRBTUFoRDBYWGgvbGZ1TWtlQ0pqVWZoU3Q1WUpEdGs2eWJE
UC9aREZCakJkTHVVZGpxbWF3QUFRUVFRQUFCQkJCQUFBRUU0Z0xpTit4ZlNxS1AzOEFEdVFNSk82
TE5icjRBQUFBQVNVVk9SSzVDWUlJPSIpOworICAgICAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8t
cmVwZWF0OworICAgIH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPHAgaWQ9ImluZm9y
bWF0aXZlLXRleHQiPgorICAgICAgVGhpcyB0ZXN0IHJlcXVpcmVzIHRoZSBBaGVtIGZvbnQuIEl0
IHVzZXMgYSAzMngzMiBQTkcgaW1hZ2Ugd2l0aCBhIDI0eDI0IHJlZCBzcXVhcmUgaW4gdGhlIGNl
bnRlcgorICAgICAgdG8gZGVmaW5lIGEgc2hhcGUtaW5zaWRlLiBUaGUgY29udGVudCBzaG91bGQg
anVzdCBjb3ZlciB0aGUgc2hhcGUgd2l0aCBzb2xpZCBncmVlbi48L3A+CisKKyAgPGRpdiBpZD0i
aW1hZ2Utc2hhcGUiPlhYPGJyLz5YWDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUt
aW1hZ2UtMDAxLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRl
L3NoYXBlLWluc2lkZS1pbWFnZS0wMDEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi40NmVjN2IxMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXhj
bHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAwMS5odG1sCkBAIC0wLDAg
KzEsMjUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KKyAgICAj
aW1hZ2Utc2hhcGUgeworICAgICAgICBib3JkZXI6IHNvbGlkIGJsYWNrIDFweDsKKyAgICAgICAg
Zm9udDogMTJweC8xIEFoZW0sIHNhbnMtc2VyaWY7CisgICAgICAgIGNvbG9yOiBncmVlbjsKKyAg
ICAgICAgd2lkdGg6IDMycHg7CisgICAgICAgIGhlaWdodDogMzJweDsKKyAgICAgICAgLXdlYmtp
dC1zaGFwZS1pbnNpZGU6IHVybCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFB
QU5TVWhFVWdBQUFDQUFBQUFnQ0FZQUFBQnplbnIwQUFBQVNrbEVRVlJZQ2UzWElRNEFNQWhEMFhY
aC9sZnVNa2VDSmpVZmhTdDVZSkR0azZ5YkRQL1pERkJqQmRMdVVkanFtYXdBQVFRUVFBQUJCQkJB
QUFFRTRnTGlOK3hmU3FLUDM4QUR1UU1KTzZMTmJyNEFBQUFBU1VWT1JLNUNZSUk9Iik7CisgICAg
ICAgIC13ZWJraXQtc2hhcGUtaW1hZ2UtdGhyZXNob2xkOiAwOworICAgICAgICBiYWNrZ3JvdW5k
LWltYWdlOiB1cmwoImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVn
QUFBQ0FBQUFBZ0NBWUFBQUJ6ZW5yMEFBQUFTa2xFUVZSWUNlM1hJUTRBTUFoRDBYWGgvbGZ1TWtl
Q0pqVWZoU3Q1WUpEdGs2eWJEUC9aREZCakJkTHVVZGpxbWF3QUFRUVFRQUFCQkJCQUFBRUU0Z0xp
Tit4ZlNxS1AzOEFEdVFNSk82TE5icjRBQUFBQVNVVk9SSzVDWUlJPSIpOworICAgICAgICBiYWNr
Z3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OworICAgIH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9k
eT4KKyAgPHAgaWQ9ImluZm9ybWF0aXZlLXRleHQiPgorICAgICAgVGhpcyB0ZXN0IHJlcXVpcmVz
IHRoZSBBaGVtIGZvbnQuIEl0IHVzZXMgYSAzMngzMiBQTkcgaW1hZ2Ugd2l0aCBhIDI0eDI0IHJl
ZCBzcXVhcmUgaW4gdGhlIGNlbnRlcgorICAgICAgdG8gZGVmaW5lIGEgc2hhcGUtaW5zaWRlLiBU
aGUgY29udGVudCBzaG91bGQganVzdCBjb3ZlciB0aGUgc2hhcGUgd2l0aCBzb2xpZCBncmVlbi48
L3A+CisKKyAgPGRpdiBpZD0iaW1hZ2Utc2hhcGUiPlhYIFhYPC9kaXY+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRl
L3NoYXBlLWluc2lkZS1pbWFnZS0wMDItZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
ZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAwMi1leHBlY3RlZC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhNTNmZTgKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBl
LWluc2lkZS1pbWFnZS0wMDItZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDIxIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+CisgICAgI2ltYWdlLXNoYXBlIHsKKyAg
ICAgICAgZm9udDogMTJweC8xIEFoZW0sIHNhbnMtc2VyaWY7CisgICAgICAgIGNvbG9yOiBncmVl
bjsKKyAgICAgICAgd2lkdGg6IDI0cHg7CisgICAgICAgIGhlaWdodDogMjRweDsKKyAgICAgICAg
YmFja2dyb3VuZC1pbWFnZTogdXJsKCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29B
QUFBTlNVaEVVZ0FBQUNBQUFBQWdDQVlBQUFCemVucjBBQUFBUkVsRVFWUllDZTNYc1EwQUlBZ0VR
SEgvblY4bjBBcHRqdENSRUhJMFVCbGpaMk1rZGVvK1Q4VVhOUU1RSUVDQUFBRUNCQWdRSUZCSjcx
dHdPKzJ0Z0FDQjd3SUxvSThIT2FPbXpGc0FBQUFBU1VWT1JLNUNZSUk9Iik7CisgICAgICAgIGJh
Y2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CisgICAgfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxi
b2R5PgorICA8cCBpZD0iaW5mb3JtYXRpdmUtdGV4dCI+CisgICAgICBUaGlzIHRlc3QgcmVxdWly
ZXMgdGhlIEFoZW0gZm9udC4gSXQgdXNlcyBhIDI0eDI0IHNxdWFyZSBQTkcgaW1hZ2Ugd2hlcmUg
YWxsIHBpeGVscyBhcmUgcmVkLAorICAgICAgdG8gZGVmaW5lIGEgc2hhcGUtaW5zaWRlLiBUaGUg
Y29udGVudCBzaG91bGQganVzdCBjb3ZlciB0aGUgc2hhcGUgd2l0aCBzb2xpZCBncmVlbi48L3A+
CisgIDxkaXYgaWQ9ImltYWdlLXNoYXBlIj5YWDxici8+WFg8L2Rpdj4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUv
c2hhcGUtaW5zaWRlLWltYWdlLTAwMi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25z
L3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtaW1hZ2UtMDAyLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uMDc5ODRlMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAwMi5o
dG1sCkBAIC0wLDAgKzEsMjQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxz
dHlsZT4KKyAgICAjaW1hZ2Utc2hhcGUgeworICAgICAgICBmb250OiAxMnB4LzEgQWhlbSwgc2Fu
cy1zZXJpZjsKKyAgICAgICAgY29sb3I6IGdyZWVuOworICAgICAgICB3aWR0aDogMjRweDsKKyAg
ICAgICAgaGVpZ2h0OiAyNHB4OworICAgICAgICAtd2Via2l0LXNoYXBlLWluc2lkZTogdXJsKCJk
YXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWdDQVlB
QUFCemVucjBBQUFBUkVsRVFWUllDZTNYc1EwQUlBZ0VRSEgvblY4bjBBcHRqdENSRUhJMFVCbGpa
Mk1rZGVvK1Q4VVhOUU1RSUVDQUFBRUNCQWdRSUZCSjcxdHdPKzJ0Z0FDQjd3SUxvSThIT2FPbXpG
c0FBQUFBU1VWT1JLNUNZSUk9Iik7CisgICAgICAgIC13ZWJraXQtc2hhcGUtaW1hZ2UtdGhyZXNo
b2xkOiAwOworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImRhdGE6aW1hZ2UvcG5nO2Jh
c2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZ0NBWUFBQUJ6ZW5yMEFBQUFSRWxF
UVZSWUNlM1hzUTBBSUFnRVFISC9uVjhuMEFwdGp0Q1JFSEkwVUJsaloyTWtkZW8rVDhVWE5RTVFJ
RUNBQUFFQ0JBZ1FJRkJKNzF0d08rMnRnQUNCN3dJTG9JOEhPYU9tekZzQUFBQUFTVVZPUks1Q1lJ
ST0iKTsKKyAgICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKKyAgICB9Cis8L3N0
eWxlPgorPC9oZWFkPgorPGJvZHk+CisgIDxwIGlkPSJpbmZvcm1hdGl2ZS10ZXh0Ij4KKyAgICAg
IFRoaXMgdGVzdCByZXF1aXJlcyB0aGUgQWhlbSBmb250LiBJdCB1c2VzIGEgMjR4MjQgc3F1YXJl
IFBORyBpbWFnZSB3aGVyZSBhbGwgcGl4ZWxzIGFyZSByZWQsCisgICAgICB0byBkZWZpbmUgYSBz
aGFwZS1pbnNpZGUuIFRoZSBjb250ZW50IHNob3VsZCBqdXN0IGNvdmVyIHRoZSBzaGFwZSB3aXRo
IHNvbGlkIGdyZWVuLjwvcD4KKworICA8ZGl2IGlkPSJpbWFnZS1zaGFwZSI+WFggWFg8L2Rpdj4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNzg1YTZhNy4uNWNlMjM5
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTIyMDksNiArMjIwOSw3IEBAIHNldChXZWJDb3Jl
X1NPVVJDRVMKICAgICByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFVuZGVyT3Zlci5jcHAK
IAogICAgIHJlbmRlcmluZy9zaGFwZXMvUG9seWdvblNoYXBlLmNwcAorICAgIHJlbmRlcmluZy9z
aGFwZXMvUmFzdGVyU2hhcGUuY3BwCiAgICAgcmVuZGVyaW5nL3NoYXBlcy9SZWN0YW5nbGVTaGFw
ZS5jcHAKICAgICByZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcAogICAgIHJlbmRlcmluZy9zaGFw
ZXMvU2hhcGVJbmZvLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDI4MzhmMmUuLjk4NGE1NTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw1OCBAQAorMjAxMy0wNi0xMCAgSGFucyBNdWxsZXIgIDxobXVsbGVyQGFk
b2JlLmNvbT4KKworICAgICAgICBbQ1NTIEV4Y2x1c2lvbnNdIE1pbmltYWwgc3VwcG9ydCBmb3Ig
dXNpbmcgYW4gaW1hZ2UgdG8gZGVmaW5lIGEgc2hhcGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNjY0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgYSBmaXJzdCBzbWFsbCBzdGVwIHRvd2Fy
ZHMgc3VwcG9ydGluZyBDU1Mgc2hhcGVzIGRlZmluZWQgYnkgYW4KKyAgICAgICAgaW1hZ2UgVVJM
IGFuZCBhIGFscGhhIGNoYW5uZWwgdGhyZXNob2xkLiBUbyBrZWVwIHRoZSBwYXRjaCBhcyBzbWFs
bCBhcworICAgICAgICBwb3NzaWJsZSwgdGhlcmUgYXJlIG1hbnkgbGltaXRhdGlvbnMgYW5kIHJl
bWFpbmluZyB3b3JrIGl0ZW1zLiAgU2VlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMTYzNDggZm9yIHRoZSBjdXJyZW50IGxpc3QuCisKKyAgICAgICAg
VGVzdDogZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtaW1hZ2UtMDAx
Lmh0bWwKKyAgICAgICAgVGVzdDogZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1p
bnNpZGUtaW1hZ2UtMDAyLmh0bWwKKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAg
ICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAg
KiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2su
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmltYWdlQ2hhbmdlZCk6IFdoZW4g
dGhlIGltYWdlIGhhcyBmaW5pc2hlZCBsb2FkaW5nLCByZXF1ZXN0IGEgbGF5b3V0LgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJP
YmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpzZXRTdHlsZSk6IEFk
ZCBub3RpZnkgY2xpZW50cyBmb3Igc2hhcGUgaW1hZ2VzLgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyT2JqZWN0Ojp1cGRhdGVTaGFwZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OnJlbW92ZVNo
YXBlSW1hZ2VDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjphcmVuYURl
bGV0ZSk6IFJlbW92ZSBub3RpZnkgY2xpZW50cyBmb3Igc2hhcGUgaW1hZ2VzLgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1Jh
c3RlclNoYXBlLmNwcDogQWRkZWQuIEEgU2hhcGUgZGVmaW5lZCBieSB0aHJlc2hvbGRpbmcgYW4g
aW1hZ2UncyBhbHBoYSBjaGFubmVsLgorICAgICAgICAoV2ViQ29yZTo6UmFzdGVyU2hhcGVJbnRl
cnZhbHM6OmJvdW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpSYXN0ZXJTaGFwZUludGVydmFsczo6
YWRkSW50ZXJ2YWwpOiBBZGQgYSBzaW5nbGUgcnVuIHRvIHRoZSBzaGFwZS4KKyAgICAgICAgKFdl
YkNvcmU6OmFsaWduZWRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJhc3RlclNoYXBlSW50ZXJ2
YWxzOjpnZXRJbnRlcnZhbHMpOiBSZXR1cm4gdGhlIHNoYXBlJ3MgcnVucyB0aGF0IGZhbGwgd2l0
aGluIGEgaG9yaXpvbmFsIGJveC4KKyAgICAgICAgKFdlYkNvcmU6OlJhc3RlclNoYXBlOjptYXJn
aW5JbnRlcnZhbHMpOiBJbnRlcm5hbCByZXByZXNlbnRhdGlvbiBvZiB0aGUgc2hhcGUgd2l0aCBz
aGFwZS1tYXJnaW4gZmFjdG9yZWQgaW4uICBDdXJyZW50bHkgb25seSBhIHN0dWIuCisgICAgICAg
IChXZWJDb3JlOjpSYXN0ZXJTaGFwZTo6cGFkZGluZ0ludGVydmFscyk6IEludGVybmFsIHJlcHJl
c2VudGF0aW9uIG9mIHRoZSBzaGFwZSB3aXRoIHNoYXBlLXBhZGRpbmcgZmFjdG9yZWQgaW4uICBD
dXJyZW50bHkgb25seSBhIHN0dWIuCisgICAgICAgIChXZWJDb3JlOjpSYXN0ZXJTaGFwZTo6Z2V0
RXhjbHVkZWRJbnRlcnZhbHMpOgorICAgICAgICAoV2ViQ29yZTo6UmFzdGVyU2hhcGU6OmdldElu
Y2x1ZGVkSW50ZXJ2YWxzKToKKyAgICAgICAgKFdlYkNvcmU6OlJhc3RlclNoYXBlOjpmaXJzdElu
Y2x1ZGVkSW50ZXJ2YWxMb2dpY2FsVG9wKToKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1Jh
c3RlclNoYXBlLmg6CisgICAgICAgIChXZWJDb3JlOjpSYXN0ZXJTaGFwZUludGVydmFsczo6UmFz
dGVyU2hhcGVJbnRlcnZhbHMpOiBJbnRlcm5hbCBydW4gbGVuZ3RoIGVuY29kZWQgcmVwcmVzZW50
YXRpb24gb2YgYSBSYXN0ZXJTaGFwZS4KKyAgICAgICAgKFdlYkNvcmU6OlJhc3RlclNoYXBlSW50
ZXJ2YWxzOjppc0VtcHR5KToKKyAgICAgICAgKFdlYkNvcmU6OlJhc3RlclNoYXBlOjpSYXN0ZXJT
aGFwZSk6CisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFwZTo6Y3JlYXRlU2hhcGUpOiBTdXBwb3J0IGZvciBjcmVhdGluZyBhIFNoYXBl
IGJhc2VkIG9uIGEgUmFzdGVyU2hhcGVJbnRlcnZhbHMgb2JqZWN0LgorICAgICAgICAqIHJlbmRl
cmluZy9zaGFwZXMvU2hhcGUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW5m
by5jcHA6CisgICAgICAgIChXZWJDb3JlOjo6OmNvbXB1dGVkU2hhcGUpOiBBZGRlZCBzdXBwb3J0
IGZvciB0aGUgSW1hZ2UgU2hhcGVWYWx1ZSB0eXBlLgorICAgICAgICAqIHJlbmRlcmluZy9zaGFw
ZXMvU2hhcGVJbnNpZGVJbmZvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXBlSW5zaWRlSW5m
bzo6aXNFbmFibGVkRm9yKTogQWRkZWQgc3VwcG9ydCBmb3IgdGhlIEltYWdlIFNoYXBlVmFsdWUg
dHlwZS4KKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcGVPdXRzaWRlSW5mbzo6aXNFbmFibGVkRm9yKTogQWRkZWQg
c3VwcG9ydCBmb3IgdGhlIEltYWdlIFNoYXBlVmFsdWUgdHlwZS4KKyAgICAgICAgKiByZW5kZXJp
bmcvc3R5bGUvU2hhcGVWYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGVWYWx1ZTo6aXNJ
bWFnZVZhbGlkKTogVHJ1ZSBpZiB0aGUgc2hhcGUncyBpbWFnZSBpcyByZWFkeSB0byBiZSBiZSBw
cm9jZXNzZWQuCisKIDIwMTMtMDYtMTIgIENocmlzdG9waGUgRHVtZXogIDxjaC5kdW1lekBzaXNh
LnNhbXN1bmcuY29tPgogCiAgICAgICAgIFN1cHBvcnQgbGF0ZXN0IFdlYiBJREwgaW5kZXhlZCBw
cm9wZXJ0eSBnZXR0ZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA3OGJkNjE4
Li40MDMzYWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTQ2MjEsNiArNDYy
MSw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3NoYXBlcy9Qb2x5Z29uU2hhcGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hh
cGVzL1BvbHlnb25TaGFwZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jh
c3RlclNoYXBlLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJT
aGFwZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1JlY3RhbmdsZVNoYXBl
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SZWN0YW5nbGVTaGFwZS5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcCBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnBy
aQppbmRleCAwN2JhOGJkLi4wZDk0NTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJn
ZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTEyMzksNiArMTIzOSw3
IEBAIFNPVVJDRVMgKz0gXAogICAgIHJlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcCBcCiAgICAg
cmVuZGVyaW5nL1Njcm9sbEJlaGF2aW9yLmNwcCBcCiAgICAgcmVuZGVyaW5nL3NoYXBlcy9Qb2x5
Z29uU2hhcGUuY3BwIFwKKyAgICByZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNwcCBcCiAg
ICAgcmVuZGVyaW5nL3NoYXBlcy9SZWN0YW5nbGVTaGFwZS5jcHAgXAogICAgIHJlbmRlcmluZy9z
aGFwZXMvU2hhcGUuY3BwIFwKICAgICByZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW5mby5jcHAgXApA
QCAtMjUwNyw2ICsyNTA4LDcgQEAgSEVBREVSUyArPSBcCiAgICAgcmVuZGVyaW5nL1Jvb3RJbmxp
bmVCb3guaCBcCiAgICAgcmVuZGVyaW5nL1Njcm9sbEJlaGF2aW9yLmggXAogICAgIHJlbmRlcmlu
Zy9zaGFwZXMvUG9seWdvblNoYXBlLmggXAorICAgIHJlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hh
cGUuaCBcCiAgICAgcmVuZGVyaW5nL3NoYXBlcy9SZWN0YW5nbGVTaGFwZS5oIFwKICAgICByZW5k
ZXJpbmcvc2hhcGVzL1NoYXBlLmggXAogICAgIHJlbmRlcmluZy9zaGFwZXMvU2hhcGVJbmZvLmgg
XApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKaW5k
ZXggNTVhMzcwNC4uYjQzZmQ4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3hwcm9qL1dlYkNvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHBy
b2ovV2ViQ29yZS52Y3hwcm9qCkBAIC02MzAyLDYgKzYzMDIsNyBAQAogICAgICAgPEV4Y2x1ZGVk
RnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJv
ZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgIDwvQ2xDb21waWxl
PgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXHNoYXBlc1xQb2x5Z29uU2hh
cGUuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXHNoYXBlc1xS
YXN0ZXJTaGFwZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdc
c2hhcGVzXFJlY3RhbmdsZVNoYXBlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHJlbmRlcmluZ1xzaGFwZXNcU2hhcGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccmVuZGVyaW5nXHNoYXBlc1xTaGFwZUluc2lkZUluZm8uY3BwIiAvPgpAQCAtMTIxOTQsNiAr
MTIxOTUsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXFJlbmRlclNs
aWRlci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXFJlbmRlclNu
YXBzaG90dGVkUGx1Z0luLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJp
bmdcc2hhcGVzXFBvbHlnb25TaGFwZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cmVuZGVyaW5nXHNoYXBlc1xSYXN0ZXJTaGFwZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5ccmVuZGVyaW5nXHNoYXBlc1xSZWN0YW5nbGVTaGFwZS5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXHNoYXBlc1xTaGFwZS5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXHNoYXBlc1xTaGFwZUluc2lkZUluZm8uaCIgLz4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA0YzQ4N2VhLi5mNDcyZjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xODM1LDYgKzE4MzUsOCBAQAogCQk2RTY3RDJBNjEy
ODBFOEE0MDA4NzU4RjcgLyogRXh0ZW5zaW9uczNET3BlbkdMLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNjdEMkE0MTI4MEU4QTQwMDg3NThGNyAv
KiBFeHRlbnNpb25zM0RPcGVuR0wuY3BwICovOyB9OwogCQk2RTY3RDJBNzEyODBFOEE0MDA4NzU4
RjcgLyogRXh0ZW5zaW9uczNET3BlbkdMLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA2RTY3RDJBNTEyODBFOEE0MDA4NzU4RjcgLyogRXh0ZW5zaW9uczNE
T3BlbkdMLmggKi87IH07CiAJCTZFNjdEMkE5MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25z
M0QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNjdE
MkE4MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25zM0QuaCAqLzsgfTsKKwkJNkU4NEU5RTAx
NzY2OEJFRTAwODE1QjY4IC8qIFJhc3RlclNoYXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFODRFOURFMTc2NjhCQUQwMDgxNUI2OCAvKiBSYXN0
ZXJTaGFwZS5jcHAgKi87IH07CisJCTZFODRFOUUxMTc2NjhCRjEwMDgxNUI2OCAvKiBSYXN0ZXJT
aGFwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU4
NEU5REYxNzY2OEJBRDAwODE1QjY4IC8qIFJhc3RlclNoYXBlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNkVCQzVFQUYxMzhCNTBGMjAwQTBDRjhB
IC8qIEpTRmxvYXQ2NEFycmF5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDZFQkM1RUFEMTM4QjUwRjIwMEEwQ0Y4QSAvKiBKU0Zsb2F0NjRBcnJheS5j
cHAgKi87IH07CiAJCTZFQkM1RUIwMTM4QjUwRjIwMEEwQ0Y4QSAvKiBKU0Zsb2F0NjRBcnJheS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkVCQzVFQUUx
MzhCNTBGMjAwQTBDRjhBIC8qIEpTRmxvYXQ2NEFycmF5LmggKi87IH07CiAJCTZFQkYwRTQ4MTJB
ODkyNjEwMERCMTcwOSAvKiBPRVNUZXh0dXJlRmxvYXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkVCRjBFNDUxMkE4OTI2MTAwREIxNzA5IC8qIE9F
U1RleHR1cmVGbG9hdC5jcHAgKi87IH07CkBAIC04MjI4LDYgKzgyMzAsOCBAQAogCQk2RTY3RDJB
NDEyODBFOEE0MDA4NzU4RjcgLyogRXh0ZW5zaW9uczNET3BlbkdMLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV4dGVuc2lvbnMzRE9wZW5HTC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFNjdEMkE1MTI4MEU4QTQwMDg3NThGNyAvKiBFeHRlbnNp
b25zM0RPcGVuR0wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXh0ZW5zaW9u
czNET3BlbkdMLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFNjdEMkE4MTI4MEU4
QkQwMDg3NThGNyAvKiBFeHRlbnNpb25zM0QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRXh0ZW5zaW9uczNELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZFODRF
OURFMTc2NjhCQUQwMDgxNUI2OCAvKiBSYXN0ZXJTaGFwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSYXN0ZXJTaGFwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTZFODRFOURGMTc2NjhCQUQwMDgxNUI2OCAvKiBSYXN0ZXJTaGFwZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSYXN0ZXJTaGFwZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk2RUJDNUQ4MDEzOEI0QzRFMDBBMENGOEEgLyogRmxvYXQ2NEFycmF5
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBGbG9hdDY0QXJyYXkuaWRsOyBwYXRoID0gY2Fu
dmFzL0Zsb2F0NjRBcnJheS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFQkM1
RUFEMTM4QjUwRjIwMEEwQ0Y4QSAvKiBKU0Zsb2F0NjRBcnJheS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0Zsb2F0NjRBcnJheS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTZFQkM1RUFFMTM4QjUwRjIwMEEwQ0Y4QSAvKiBKU0Zsb2F0NjRBcnJh
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0Zsb2F0NjRBcnJheS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjA1NDQsNiArMjA1NDgsOCBAQAogCQkJY2hp
bGRyZW4gPSAoCiAJCQkJRkQwOEE4N0ExNzVEMzkyNjAwMkNEMzYwIC8qIFBvbHlnb25TaGFwZS5j
cHAgKi8sCiAJCQkJRkQwOEE4N0IxNzVEMzkyNjAwMkNEMzYwIC8qIFBvbHlnb25TaGFwZS5oICov
LAorCQkJCTZFODRFOURFMTc2NjhCQUQwMDgxNUI2OCAvKiBSYXN0ZXJTaGFwZS5jcHAgKi8sCisJ
CQkJNkU4NEU5REYxNzY2OEJBRDAwODE1QjY4IC8qIFJhc3RlclNoYXBlLmggKi8sCiAJCQkJRkQw
OEE4N0MxNzVEMzkyNjAwMkNEMzYwIC8qIFJlY3RhbmdsZVNoYXBlLmNwcCAqLywKIAkJCQlGRDA4
QTg3RDE3NUQzOTI2MDAyQ0QzNjAgLyogUmVjdGFuZ2xlU2hhcGUuaCAqLywKIAkJCQlGRDA4QTg3
RTE3NUQzOTI2MDAyQ0QzNjAgLyogU2hhcGUuY3BwICovLApAQCAtMjA4NjQsNiArMjA4NzAsNyBA
QAogCQkJZmlsZXMgPSAoCiAJCQkJRkUxMTVGQUIxNjc5ODhDRDAwMjQ5MTM0IC8qIEFic3RyYWN0
RGF0YWJhc2VTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFNEFBREVFMTZEMkMzNzQwMDAy
NkZGQyAvKiBBYnN0cmFjdFNRTFN0YXRlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkU4NEU5
RTExNzY2OEJGMTAwODE1QjY4IC8qIFJhc3RlclNoYXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlG
RTRBQURFRjE2RDJDMzc0MDAwMjZGRkMgLyogQWJzdHJhY3RTUUxTdGF0ZW1lbnRCYWNrZW5kLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0MUUxQjFEMTBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RX
b3JrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5QTgxMjJFMEZCQjlDMUQwMDUxMDI5MyAvKiBB
Y2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmggaW4gSGVhZGVycyAqLywKQEAgLTI2OTU1LDYgKzI2
OTYyLDcgQEAKIAkJCQlCRTZERjcxMTE3MUNBMkRBMDBERDUyQjggLyogSlNBdWRpb1RyYWNrQ3Vz
dG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJFNkRGNzEzMTcxQ0EyREEwMERENTJCOCAvKiBK
U0F1ZGlvVHJhY2tMaXN0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZCNzE5QzQwMTcy
MzhDQUUwMDIyREUzNCAvKiBXZWJLaXRDU1NNYXRGdW5jdGlvblZhbHVlLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTZFODRFOUUwMTc2NjhCRUUwMDgxNUI2OCAvKiBSYXN0ZXJTaGFwZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4
IGU3ZDdkM2QuLjY5YWQyMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2Nr
LmNwcApAQCAtMTQzNSw2ICsxNDM1LDIxIEBAIHZvaWQgUmVuZGVyQmxvY2s6OmxheW91dCgpCiB9
CiAKICNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKK3ZvaWQgUmVuZGVyQmxvY2s6OmltYWdlQ2hhbmdl
ZChXcmFwcGVkSW1hZ2VQdHIgaW1hZ2UsIGNvbnN0IEludFJlY3QqKQoreworICAgIFJlbmRlckJv
eDo6aW1hZ2VDaGFuZ2VkKGltYWdlKTsKKworICAgIGlmICghcGFyZW50KCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIFNoYXBlVmFsdWUqIHNoYXBlVmFsdWUgPSBzdHlsZSgpLT5zaGFwZUluc2lk
ZSgpOworICAgIGlmIChzaGFwZVZhbHVlICYmIHNoYXBlVmFsdWUtPmltYWdlKCkgJiYgc2hhcGVW
YWx1ZS0+aW1hZ2UoKS0+ZGF0YSgpID09IGltYWdlKSB7CisgICAgICAgIFNoYXBlSW5zaWRlSW5m
byogc2hhcGVJbnNpZGVJbmZvID0gZW5zdXJlU2hhcGVJbnNpZGVJbmZvKCk7CisgICAgICAgIHNo
YXBlSW5zaWRlSW5mby0+ZGlydHlTaGFwZVNpemUoKTsKKyAgICAgICAgbWFya1NoYXBlSW5zaWRl
RGVzY2VuZGFudHNGb3JMYXlvdXQoKTsKKyAgICB9Cit9CisKIHZvaWQgUmVuZGVyQmxvY2s6OnVw
ZGF0ZVNoYXBlSW5zaWRlSW5mb0FmdGVyU3R5bGVDaGFuZ2UoY29uc3QgU2hhcGVWYWx1ZSogc2hh
cGVJbnNpZGUsIGNvbnN0IFNoYXBlVmFsdWUqIG9sZFNoYXBlSW5zaWRlKQogewogICAgIC8vIEZJ
WE1FOiBBIGZ1dHVyZSBvcHRpbWl6YXRpb24gd291bGQgZG8gYSBkZWVwIGNvbXBhcmlzb24gZm9y
IGVxdWFsaXR5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAppbmRleCBiZDEw
Yzk4Li4zZmZhN2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaApAQCAt
NDY4LDYgKzQ2OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG1hcmtTaGFwZUluc2lkZURlc2NlbmRh
bnRzRm9yTGF5b3V0KCk7CiAgICAgU2hhcGVJbnNpZGVJbmZvKiBsYXlvdXRTaGFwZUluc2lkZUlu
Zm8oKSBjb25zdDsKICAgICBib29sIGFsbG93c1NoYXBlSW5zaWRlSW5mb1NoYXJpbmcoKSBjb25z
dCB7IHJldHVybiAhaXNJbmxpbmUoKSAmJiAhaXNGbG9hdGluZygpOyB9CisgICAgdmlydHVhbCB2
b2lkIGltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIsIGNvbnN0IEludFJlY3QqID0gMCkgT1ZF
UlJJREU7CiAjZW5kaWYKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmNwcAppbmRleCAyZDNhYzA0Li5lZDEyNzllIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMTg0NCw2ICsxODQ0LDExIEBAIHZvaWQgUmVu
ZGVyT2JqZWN0OjpzZXRTdHlsZShQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKICAgICB1
cGRhdGVJbWFnZShvbGRTdHlsZSA/IG9sZFN0eWxlLT5ib3JkZXJJbWFnZSgpLmltYWdlKCkgOiAw
LCBtX3N0eWxlID8gbV9zdHlsZS0+Ym9yZGVySW1hZ2UoKS5pbWFnZSgpIDogMCk7CiAgICAgdXBk
YXRlSW1hZ2Uob2xkU3R5bGUgPyBvbGRTdHlsZS0+bWFza0JveEltYWdlKCkuaW1hZ2UoKSA6IDAs
IG1fc3R5bGUgPyBtX3N0eWxlLT5tYXNrQm94SW1hZ2UoKS5pbWFnZSgpIDogMCk7CiAKKyNpZiBF
TkFCTEUoQ1NTX1NIQVBFUykKKyAgICB1cGRhdGVTaGFwZUltYWdlKG9sZFN0eWxlID8gb2xkU3R5
bGUtPnNoYXBlSW5zaWRlKCkgOiAwLCBtX3N0eWxlID8gbV9zdHlsZS0+c2hhcGVJbnNpZGUoKSA6
IDApOworICAgIHVwZGF0ZVNoYXBlSW1hZ2Uob2xkU3R5bGUgPyBvbGRTdHlsZS0+c2hhcGVPdXRz
aWRlKCkgOiAwLCBtX3N0eWxlID8gbV9zdHlsZS0+c2hhcGVPdXRzaWRlKCkgOiAwKTsKKyNlbmRp
ZgorCiAgICAgLy8gV2UgbmVlZCB0byBlbnN1cmUgdGhhdCB2aWV3LT5tYXhpbWFsT3V0bGluZVNp
emUoKSBpcyB2YWxpZCBmb3IgYW55IHJlcGFpbnRzIHRoYXQgaGFwcGVuCiAgICAgLy8gZHVyaW5n
IHN0eWxlRGlkQ2hhbmdlIChpdCdzIHVzZWQgYnkgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFp
bnQoKSkuCiAgICAgaWYgKG1fc3R5bGUtPm91dGxpbmVXaWR0aCgpID4gMCAmJiBtX3N0eWxlLT5v
dXRsaW5lU2l6ZSgpID4gbWF4aW1hbE91dGxpbmVTaXplKFBhaW50UGhhc2VPdXRsaW5lKSkKQEAg
LTIwOTYsNiArMjEwMSwxNCBAQCB2b2lkIFJlbmRlck9iamVjdDo6dXBkYXRlSW1hZ2UoU3R5bGVJ
bWFnZSogb2xkSW1hZ2UsIFN0eWxlSW1hZ2UqIG5ld0ltYWdlKQogICAgIH0KIH0KIAorI2lmIEVO
QUJMRShDU1NfU0hBUEVTKQordm9pZCBSZW5kZXJPYmplY3Q6OnVwZGF0ZVNoYXBlSW1hZ2UoY29u
c3QgU2hhcGVWYWx1ZSogb2xkU2hhcGVWYWx1ZSwgY29uc3QgU2hhcGVWYWx1ZSogbmV3U2hhcGVW
YWx1ZSkKK3sKKyAgICBpZiAob2xkU2hhcGVWYWx1ZSB8fCBuZXdTaGFwZVZhbHVlKQorICAgICAg
ICB1cGRhdGVJbWFnZShvbGRTaGFwZVZhbHVlID8gb2xkU2hhcGVWYWx1ZS0+aW1hZ2UoKSA6IDAs
IG5ld1NoYXBlVmFsdWUgPyBuZXdTaGFwZVZhbHVlLT5pbWFnZSgpIDogMCk7Cit9CisjZW5kaWYK
KwogTGF5b3V0UmVjdCBSZW5kZXJPYmplY3Q6OnZpZXdSZWN0KCkgY29uc3QKIHsKICAgICByZXR1
cm4gdmlldygpLT52aWV3UmVjdCgpOwpAQCAtMjYxMiw2ICsyNjI1LDE2IEBAIHZvaWQgUmVuZGVy
T2JqZWN0OjpkZXN0cm95KCkKICAgICBhcmVuYURlbGV0ZShyZW5kZXJBcmVuYSgpLCB0aGlzKTsK
IH0KIAorI2lmIEVOQUJMRShDU1NfU0hBUEVTKQorc3RhdGljIGlubGluZSB2b2lkIHJlbW92ZVNo
YXBlSW1hZ2VDbGllbnQoUmVuZGVyT2JqZWN0ICp0aGlzUmVuZGVyT2JqZWN0LCBTaGFwZVZhbHVl
KiBzaGFwZVZhbHVlKQoreworICAgIGlmICghc2hhcGVWYWx1ZSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIGlmIChTdHlsZUltYWdlKiBzaGFwZUltYWdlID0gc2hhcGVWYWx1ZS0+aW1hZ2UoKSkKKyAg
ICAgICAgc2hhcGVJbWFnZS0+cmVtb3ZlQ2xpZW50KHRoaXNSZW5kZXJPYmplY3QpOworfQorI2Vu
ZGlmCisKIHZvaWQgUmVuZGVyT2JqZWN0OjphcmVuYURlbGV0ZShSZW5kZXJBcmVuYSogYXJlbmEs
IHZvaWQqIGJhc2UpCiB7CiAgICAgaWYgKG1fc3R5bGUpIHsKQEAgLTI2MzAsNiArMjY1MywxMSBA
QCB2b2lkIFJlbmRlck9iamVjdDo6YXJlbmFEZWxldGUoUmVuZGVyQXJlbmEqIGFyZW5hLCB2b2lk
KiBiYXNlKQogCiAgICAgICAgIGlmIChTdHlsZUltYWdlKiBtYXNrQm94SW1hZ2UgPSBtX3N0eWxl
LT5tYXNrQm94SW1hZ2UoKS5pbWFnZSgpKQogICAgICAgICAgICAgbWFza0JveEltYWdlLT5yZW1v
dmVDbGllbnQodGhpcyk7CisKKyNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKKyAgICAgICAgcmVtb3Zl
U2hhcGVJbWFnZUNsaWVudCh0aGlzLCBtX3N0eWxlLT5zaGFwZUluc2lkZSgpKTsKKyAgICAgICAg
cmVtb3ZlU2hhcGVJbWFnZUNsaWVudCh0aGlzLCBtX3N0eWxlLT5zaGFwZU91dHNpZGUoKSk7Cisj
ZW5kaWYKICAgICB9CiAKICNpZm5kZWYgTkRFQlVHCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmgKaW5kZXggOTM1N2FjNS4uZmI4ODk0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuaApAQCAtNzAzLDYgKzcwMyw5IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgdXBkYXRlRmlsbEltYWdlcyhjb25zdCBGaWxsTGF5ZXIqLCBjb25zdCBGaWxsTGF5ZXIqKTsK
ICAgICB2b2lkIHVwZGF0ZUltYWdlKFN0eWxlSW1hZ2UqLCBTdHlsZUltYWdlKik7CisjaWYgRU5B
QkxFKENTU19TSEFQRVMpCisgICAgdm9pZCB1cGRhdGVTaGFwZUltYWdlKGNvbnN0IFNoYXBlVmFs
dWUqLCBjb25zdCBTaGFwZVZhbHVlKik7CisjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBwYWlu
dChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmI3YjVkNzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNwcApAQCAtMCwwICsxLDE2MCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMyBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAg
ICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMK
KyAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorICogQ09QWVJJR0hUIEhPTERF
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULAorICogSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULAorICogU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRAorICogT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSYXN0ZXJTaGFwZS5oIgorCisjaW5jbHVk
ZSAiU2hhcGVJbnRlcnZhbC5oIgorI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworSW50UmVjdCBSYXN0ZXJTaGFwZUludGVydmFsczo6Ym91bmRzKCkg
Y29uc3QKK3sKKyAgICBpZiAoIW1fYm91bmRzKQorICAgICAgICBtX2JvdW5kcyA9IGFkb3B0UHRy
KG5ldyBJbnRSZWN0KG1fcmVnaW9uLmJvdW5kcygpKSk7CisgICAgcmV0dXJuICptX2JvdW5kczsK
K30KKwordm9pZCBSYXN0ZXJTaGFwZUludGVydmFsczo6YWRkSW50ZXJ2YWwoaW50IHksIGludCB4
MSwgaW50IHgyKQoreworICAgIG1fcmVnaW9uLnVuaXRlKFJlZ2lvbihJbnRSZWN0KHgxLCB5LCB4
MiAtIHgxLCAxKSkpOworICAgIG1fYm91bmRzLmNsZWFyKCk7Cit9CisKK3N0YXRpYyBpbmxpbmUg
SW50UmVjdCBhbGlnbmVkUmVjdChJbnRSZWN0IHIsIGludCB5MSwgaW50IHkyKQoreworICAgIHJl
dHVybiBJbnRSZWN0KHIueCgpLCB5MSwgci53aWR0aCgpLCB5MiAtIHkxKTsKK30KKwordm9pZCBS
YXN0ZXJTaGFwZUludGVydmFsczo6Z2V0SW50ZXJ2YWxzKGludCB5MSwgaW50IHkyLCBTZWdtZW50
TGlzdCYgcmVzdWx0KSBjb25zdAoreworICAgIEFTU0VSVCh5MiA+PSB5MSk7CisKKyAgICBJbnRS
ZWN0IGxpbmVSZWN0KGJvdW5kcygpLngoKSwgeTEsIGJvdW5kcygpLndpZHRoKCksIHkyIC0geTEp
OworICAgIFJlZ2lvbiBsaW5lUmVnaW9uKGxpbmVSZWN0KTsKKyAgICBsaW5lUmVnaW9uLmludGVy
c2VjdChtX3JlZ2lvbik7CisgICAgaWYgKGxpbmVSZWdpb24uaXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBWZWN0b3I8SW50UmVjdD4gbGluZVJlY3RzID0gbGluZVJlZ2lvbi5yZWN0
cygpOworICAgIEFTU0VSVChsaW5lUmVjdHMuc2l6ZSgpID4gMCk7CisKKyAgICBSZWdpb24gc2Vn
bWVudHNSZWdpb24obGluZVJlY3QpOworICAgIFJlZ2lvbiBpbnRlcnZhbHNSZWdpb247CisKKyAg
ICBpbnQgbGluZVkgPSBsaW5lUmVjdHNbMF0ueSgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBsaW5lUmVjdHMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgaWYgKGxpbmVSZWN0c1tpXS55
KCkgIT0gbGluZVkpIHsKKyAgICAgICAgICAgIHNlZ21lbnRzUmVnaW9uLmludGVyc2VjdChpbnRl
cnZhbHNSZWdpb24pOworICAgICAgICAgICAgaW50ZXJ2YWxzUmVnaW9uID0gUmVnaW9uKCk7Cisg
ICAgICAgIH0KKyAgICAgICAgaW50ZXJ2YWxzUmVnaW9uLnVuaXRlKFJlZ2lvbihhbGlnbmVkUmVj
dChsaW5lUmVjdHNbaV0sIHkxLCB5MikpKTsKKyAgICAgICAgbGluZVkgPSBsaW5lUmVjdHNbaV0u
eSgpOworICAgIH0KKyAgICBpZiAoIWludGVydmFsc1JlZ2lvbi5pc0VtcHR5KCkpCisgICAgICAg
IHNlZ21lbnRzUmVnaW9uLmludGVyc2VjdChpbnRlcnZhbHNSZWdpb24pOworCisgICAgVmVjdG9y
PEludFJlY3Q+IHNlZ21lbnRSZWN0cyA9IHNlZ21lbnRzUmVnaW9uLnJlY3RzKCk7CisgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHNlZ21lbnRSZWN0cy5zaXplKCk7IGkrKykKKyAgICAgICAg
cmVzdWx0LmFwcGVuZChMaW5lU2VnbWVudChzZWdtZW50UmVjdHNbaV0ueCgpLCBzZWdtZW50UmVj
dHNbaV0ubWF4WCgpKSk7Cit9CisKK2NvbnN0IFJhc3RlclNoYXBlSW50ZXJ2YWxzJiBSYXN0ZXJT
aGFwZTo6bWFyZ2luSW50ZXJ2YWxzKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoc2hhcGVNYXJnaW4o
KSA+PSAwKTsKKyAgICBpZiAoIXNoYXBlTWFyZ2luKCkpCisgICAgICAgIHJldHVybiAqbV9pbnRl
cnZhbHM7CisKKyAgICAvLyBGSVhNRTogYWRkIHN1cHBvcnQgZm9yIG5vbi16ZXJvIG1hcmdpbgor
ICAgIHJldHVybiAqbV9pbnRlcnZhbHM7Cit9CisKK2NvbnN0IFJhc3RlclNoYXBlSW50ZXJ2YWxz
JiBSYXN0ZXJTaGFwZTo6cGFkZGluZ0ludGVydmFscygpIGNvbnN0Cit7CisgICAgQVNTRVJUKHNo
YXBlUGFkZGluZygpID49IDApOworICAgIGlmICghc2hhcGVQYWRkaW5nKCkpCisgICAgICAgIHJl
dHVybiAqbV9pbnRlcnZhbHM7CisKKyAgICAvLyBGSVhNRTogYWRkIHN1cHBvcnQgZm9yIG5vbi16
ZXJvIHBhZGRpbmcKKyAgICByZXR1cm4gKm1faW50ZXJ2YWxzOworfQorCit2b2lkIFJhc3RlclNo
YXBlOjpnZXRFeGNsdWRlZEludGVydmFscyhMYXlvdXRVbml0IGxvZ2ljYWxUb3AsIExheW91dFVu
aXQgbG9naWNhbEhlaWdodCwgU2VnbWVudExpc3QmIHJlc3VsdCkgY29uc3QKK3sKKyAgICBjb25z
dCBSYXN0ZXJTaGFwZUludGVydmFscyYgaW50ZXJ2YWxzID0gbWFyZ2luSW50ZXJ2YWxzKCk7Cisg
ICAgaWYgKGludGVydmFscy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGZsb2F0
IHkxID0gbG9naWNhbFRvcDsKKyAgICBmbG9hdCB5MiA9IGxvZ2ljYWxUb3AgKyBsb2dpY2FsSGVp
Z2h0OworCisgICAgaWYgKHkyIDwgaW50ZXJ2YWxzLmJvdW5kcygpLnkoKSB8fCB5MSA+PSBpbnRl
cnZhbHMuYm91bmRzKCkubWF4WSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpbnRlcnZhbHMu
Z2V0SW50ZXJ2YWxzKHkxLCB5MiwgcmVzdWx0KTsKK30KKwordm9pZCBSYXN0ZXJTaGFwZTo6Z2V0
SW5jbHVkZWRJbnRlcnZhbHMoTGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBMYXlvdXRVbml0IGxvZ2lj
YWxIZWlnaHQsIFNlZ21lbnRMaXN0JiByZXN1bHQpIGNvbnN0Cit7CisgICAgY29uc3QgUmFzdGVy
U2hhcGVJbnRlcnZhbHMmIGludGVydmFscyA9IHBhZGRpbmdJbnRlcnZhbHMoKTsKKyAgICBpZiAo
aW50ZXJ2YWxzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZmxvYXQgeTEgPSBs
b2dpY2FsVG9wOworICAgIGZsb2F0IHkyID0gbG9naWNhbFRvcCArIGxvZ2ljYWxIZWlnaHQ7CisK
KyAgICBpZiAoeTEgPCBpbnRlcnZhbHMuYm91bmRzKCkueSgpIHx8IHkyID4gaW50ZXJ2YWxzLmJv
dW5kcygpLm1heFkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaW50ZXJ2YWxzLmdldEludGVy
dmFscyh5MSwgeTIsIHJlc3VsdCk7Cit9CisKK2Jvb2wgUmFzdGVyU2hhcGU6OmZpcnN0SW5jbHVk
ZWRJbnRlcnZhbExvZ2ljYWxUb3AoTGF5b3V0VW5pdCBtaW5Mb2dpY2FsSW50ZXJ2YWxUb3AsIGNv
bnN0IExheW91dFNpemUmIG1pbkxvZ2ljYWxJbnRlcnZhbFNpemUsIExheW91dFVuaXQmIHJlc3Vs
dCkgY29uc3QKK3sKKyAgICBmbG9hdCBtaW5JbnRlcnZhbFRvcCA9IG1pbkxvZ2ljYWxJbnRlcnZh
bFRvcDsKKyAgICBmbG9hdCBtaW5JbnRlcnZhbEhlaWdodCA9IG1pbkxvZ2ljYWxJbnRlcnZhbFNp
emUuaGVpZ2h0KCk7CisgICAgZmxvYXQgbWluSW50ZXJ2YWxXaWR0aCA9IG1pbkxvZ2ljYWxJbnRl
cnZhbFNpemUud2lkdGgoKTsKKworICAgIGNvbnN0IFJhc3RlclNoYXBlSW50ZXJ2YWxzJiBpbnRl
cnZhbHMgPSBwYWRkaW5nSW50ZXJ2YWxzKCk7CisgICAgaWYgKGludGVydmFscy5pc0VtcHR5KCkg
fHwgbWluSW50ZXJ2YWxXaWR0aCA+IGludGVydmFscy5ib3VuZHMoKS53aWR0aCgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBmbG9hdCBtaW5ZID0gc3RkOjptYXg8ZmxvYXQ+KGludGVy
dmFscy5ib3VuZHMoKS55KCksIG1pbkludGVydmFsVG9wKTsKKyAgICBmbG9hdCBtYXhZID0gbWlu
WSArIG1pbkludGVydmFsSGVpZ2h0OworCisgICAgaWYgKG1heFkgPiBpbnRlcnZhbHMuYm91bmRz
KCkubWF4WSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBGSVhNRTogY29tcGxl
dGUgdGhpcyBtZXRob2QKKyAgICByZXN1bHQgPSBtaW5ZOworICAgIHJldHVybiB0cnVlOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hh
cGVzL1Jhc3RlclNoYXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWRl
OTgxNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMv
UmFzdGVyU2hhcGUuaApAQCAtMCwwICsxLDgwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEz
IEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKKyAqICAgIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisg
KiAgICBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscworICogICAgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MKKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFCisgKiBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsCisgKiBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICog
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCisgKiBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VECisgKiBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBSYXN0ZXJTaGFw
ZV9oCisjZGVmaW5lIFJhc3RlclNoYXBlX2gKKworI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgorI2lu
Y2x1ZGUgIlJlZ2lvbi5oIgorI2luY2x1ZGUgIlNoYXBlLmgiCisjaW5jbHVkZSA8d3RmL0Fzc2Vy
dGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgUmFzdGVyU2hhcGVJbnRlcnZhbHMgeworcHVibGljOgorICAgIFJhc3RlclNoYXBl
SW50ZXJ2YWxzKCkgeyB9CisKKyAgICBJbnRSZWN0IGJvdW5kcygpIGNvbnN0OworICAgIGJvb2wg
aXNFbXB0eSgpIGNvbnN0ICB7IHJldHVybiBtX3JlZ2lvbi5pc0VtcHR5KCk7IH0KKyAgICB2b2lk
IGFkZEludGVydmFsKGludCB5LCBpbnQgeDEsIGludCB4Mik7CisgICAgdm9pZCBnZXRJbnRlcnZh
bHMoaW50IHkxLCBpbnQgeTIsIFNlZ21lbnRMaXN0JikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAg
UmVnaW9uIG1fcmVnaW9uOworICAgIG11dGFibGUgT3duUHRyPEludFJlY3Q+IG1fYm91bmRzOyAv
LyBDYWNoZWQgdmFsdWUgb2YgbV9yZWdpb24uYm91bmRzKCkuCit9OworCitjbGFzcyBSYXN0ZXJT
aGFwZSA6IHB1YmxpYyBTaGFwZSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmFzdGVyU2hh
cGUpOworcHVibGljOgorICAgIFJhc3RlclNoYXBlKFBhc3NPd25QdHI8UmFzdGVyU2hhcGVJbnRl
cnZhbHM+IGludGVydmFscykKKyAgICAgICAgOiBTaGFwZSgpCisgICAgICAgICwgbV9pbnRlcnZh
bHMoaW50ZXJ2YWxzKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIExheW91dFJlY3Qgc2hh
cGVNYXJnaW5Mb2dpY2FsQm91bmRpbmdCb3goKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBzdGF0
aWNfY2FzdDxMYXlvdXRSZWN0PihtYXJnaW5JbnRlcnZhbHMoKS5ib3VuZHMoKSk7IH0KKyAgICB2
aXJ0dWFsIExheW91dFJlY3Qgc2hhcGVQYWRkaW5nTG9naWNhbEJvdW5kaW5nQm94KCkgY29uc3Qg
T1ZFUlJJREUgeyByZXR1cm4gc3RhdGljX2Nhc3Q8TGF5b3V0UmVjdD4ocGFkZGluZ0ludGVydmFs
cygpLmJvdW5kcygpKTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0VtcHR5KCkgY29uc3QgT1ZFUlJJ
REUgeyByZXR1cm4gbV9pbnRlcnZhbHMtPmlzRW1wdHkoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBn
ZXRFeGNsdWRlZEludGVydmFscyhMYXlvdXRVbml0IGxvZ2ljYWxUb3AsIExheW91dFVuaXQgbG9n
aWNhbEhlaWdodCwgU2VnbWVudExpc3QmKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgZ2V0SW5jbHVkZWRJbnRlcnZhbHMoTGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBMYXlvdXRVbml0
IGxvZ2ljYWxIZWlnaHQsIFNlZ21lbnRMaXN0JikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVh
bCBib29sIGZpcnN0SW5jbHVkZWRJbnRlcnZhbExvZ2ljYWxUb3AoTGF5b3V0VW5pdCBtaW5Mb2dp
Y2FsSW50ZXJ2YWxUb3AsIGNvbnN0IExheW91dFNpemUmIG1pbkxvZ2ljYWxJbnRlcnZhbFNpemUs
IExheW91dFVuaXQmKSBjb25zdCBPVkVSUklERTsKKworcHJpdmF0ZToKKyAgICBjb25zdCBSYXN0
ZXJTaGFwZUludGVydmFscyYgbWFyZ2luSW50ZXJ2YWxzKCkgY29uc3Q7CisgICAgY29uc3QgUmFz
dGVyU2hhcGVJbnRlcnZhbHMmIHBhZGRpbmdJbnRlcnZhbHMoKSBjb25zdDsKKworICAgIE93blB0
cjxSYXN0ZXJTaGFwZUludGVydmFscz4gbV9pbnRlcnZhbHM7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBSYXN0ZXJTaGFwZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zaGFwZXMvU2hhcGUuY3BwCmluZGV4IGI3OTIwY2MuLjFjOTliOTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCkBAIC0zMSw5ICszMSwxMiBAQAogI2lu
Y2x1ZGUgIlNoYXBlLmgiCiAKICNpbmNsdWRlICJCYXNpY1NoYXBlRnVuY3Rpb25zLmgiCisjaW5j
bHVkZSAiQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRlICJGbG9hdFNpemUuaCIKKyNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkxlbmd0aEZ1bmN0aW9ucy5oIgogI2luY2x1
ZGUgIlBvbHlnb25TaGFwZS5oIgorI2luY2x1ZGUgIlJhc3RlclNoYXBlLmgiCiAjaW5jbHVkZSAi
UmVjdGFuZ2xlU2hhcGUuaCIKICNpbmNsdWRlICJXaW5kUnVsZS5oIgogI2luY2x1ZGUgPHd0Zi9N
YXRoRXh0cmFzLmg+CkBAIC0xOTEsNCArMTk0LDU1IEBAIFBhc3NPd25QdHI8U2hhcGU+IFNoYXBl
OjpjcmVhdGVTaGFwZShjb25zdCBCYXNpY1NoYXBlKiBiYXNpY1NoYXBlLCBjb25zdCBMYXlvdXRT
CiAgICAgcmV0dXJuIHNoYXBlLnJlbGVhc2UoKTsKIH0KIAorUGFzc093blB0cjxTaGFwZT4gU2hh
cGU6OmNyZWF0ZVNoYXBlKGNvbnN0IFN0eWxlSW1hZ2UqIHN0eWxlSW1hZ2UsIGZsb2F0IHRocmVz
aG9sZCwgY29uc3QgTGF5b3V0U2l6ZSYgbG9naWNhbEJveFNpemUsIFdyaXRpbmdNb2RlIHdyaXRp
bmdNb2RlLCBMZW5ndGggbWFyZ2luLCBMZW5ndGggcGFkZGluZykKK3sKKyAgICAvLyBGSVhNRTog
U2hvdWxkIGNsaXAgc2hhcGUgdG8gbG9naWNhbCBib3guCisgICAgVU5VU0VEX1BBUkFNKGxvZ2lj
YWxCb3hTaXplKTsKKworICAgIEFTU0VSVChzdHlsZUltYWdlICYmIHN0eWxlSW1hZ2UtPmlzQ2Fj
aGVkSW1hZ2UoKSAmJiBzdHlsZUltYWdlLT5jYWNoZWRJbWFnZSgpICYmIHN0eWxlSW1hZ2UtPmNh
Y2hlZEltYWdlKCktPmltYWdlKCkpOworCisgICAgSW1hZ2UqIGltYWdlID0gc3R5bGVJbWFnZS0+
Y2FjaGVkSW1hZ2UoKS0+aW1hZ2UoKTsKKyAgICBHcmFwaGljc0NvbnRleHQzRDo6SW1hZ2VFeHRy
YWN0b3IgaW1hZ2VFeHRyYWN0b3IoaW1hZ2UsIEdyYXBoaWNzQ29udGV4dDNEOjpIdG1sRG9tTm9u
ZSwgZmFsc2UsIHRydWUpOworICAgIGludCBpbWFnZVdpZHRoID0gc3RhdGljX2Nhc3Q8aW50Pihp
bWFnZUV4dHJhY3Rvci5pbWFnZVdpZHRoKCkpOworICAgIGludCBpbWFnZUhlaWdodCA9IHN0YXRp
Y19jYXN0PGludD4oaW1hZ2VFeHRyYWN0b3IuaW1hZ2VIZWlnaHQoKSk7CisKKyAgICBWZWN0b3I8
dWludDhfdD4gYWxwaGFQaXhlbHM7CisgICAgYm9vbCBwYWNrSW1hZ2VEYXRhT0sgPSBHcmFwaGlj
c0NvbnRleHQzRDo6cGFja0ltYWdlRGF0YShpbWFnZSwgaW1hZ2VFeHRyYWN0b3IuaW1hZ2VQaXhl
bERhdGEoKSwKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0M0Q6OkFMUEhBLAorICAgICAgICBHcmFw
aGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwKKyAgICAgICAgZmFsc2UsIC8qIGZsaXBZICov
CisgICAgICAgIEdyYXBoaWNzQ29udGV4dDNEOjpBbHBoYURvTm90aGluZywKKyAgICAgICAgaW1h
Z2VFeHRyYWN0b3IuaW1hZ2VTb3VyY2VGb3JtYXQoKSwKKyAgICAgICAgaW1hZ2VXaWR0aCwKKyAg
ICAgICAgaW1hZ2VIZWlnaHQsCisgICAgICAgIGltYWdlRXh0cmFjdG9yLmltYWdlU291cmNlVW5w
YWNrQWxpZ25tZW50KCksCisgICAgICAgIGFscGhhUGl4ZWxzKTsKKworICAgIE93blB0cjxSYXN0
ZXJTaGFwZUludGVydmFscz4gaW50ZXJ2YWxzID0gYWRvcHRQdHIobmV3IFJhc3RlclNoYXBlSW50
ZXJ2YWxzKCkpOworICAgIHVpbnQ4X3QgYWxwaGFQaXhlbFRocmVzaG9sZCA9IHRocmVzaG9sZCAq
IDI1NTsKKworICAgIGlmIChwYWNrSW1hZ2VEYXRhT0spIHsKKyAgICAgICAgQVNTRVJUKHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihpbWFnZVdpZHRoICogaW1hZ2VIZWlnaHQpID09IGFscGhhUGl4ZWxz
LnNpemUoKSk7CisgICAgICAgIGZvciAoaW50IHkgPSAwOyB5IDwgaW1hZ2VIZWlnaHQ7IHkrKykg
eworICAgICAgICAgICAgaW50IHN0YXJ0WCA9IC0xOworICAgICAgICAgICAgZm9yIChpbnQgeCA9
IDA7IHggPCBpbWFnZVdpZHRoOyB4KyspIHsKKyAgICAgICAgICAgICAgICB1aW50OF90IGFscGhh
ID0gYWxwaGFQaXhlbHNbeCArIHkgKiBpbWFnZVdpZHRoXTsKKyAgICAgICAgICAgICAgICBpZiAo
KHN0YXJ0WCA9PSAtMSkgJiYgYWxwaGEgPiBhbHBoYVBpeGVsVGhyZXNob2xkKSB7CisgICAgICAg
ICAgICAgICAgICAgIHN0YXJ0WCA9IHg7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzdGFy
dFggIT0gLTEgJiYgKGFscGhhIDw9IGFscGhhUGl4ZWxUaHJlc2hvbGQgfHwgeCA9PSBpbWFnZVdp
ZHRoIC0gMSkpIHsKKyAgICAgICAgICAgICAgICAgICAgaW50ZXJ2YWxzLT5hZGRJbnRlcnZhbCh5
LCBzdGFydFgsIHgpOworICAgICAgICAgICAgICAgICAgICBzdGFydFggPSAtMTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBPd25QdHI8
UmFzdGVyU2hhcGU+IHJhc3RlclNoYXBlID0gYWRvcHRQdHIobmV3IFJhc3RlclNoYXBlKGludGVy
dmFscy5yZWxlYXNlKCkpKTsKKyAgICByYXN0ZXJTaGFwZS0+bV93cml0aW5nTW9kZSA9IHdyaXRp
bmdNb2RlOworICAgIHJhc3RlclNoYXBlLT5tX21hcmdpbiA9IGZsb2F0VmFsdWVGb3JMZW5ndGgo
bWFyZ2luLCAwKTsKKyAgICByYXN0ZXJTaGFwZS0+bV9wYWRkaW5nID0gZmxvYXRWYWx1ZUZvckxl
bmd0aChwYWRkaW5nLCAwKTsKKworICAgIHJldHVybiByYXN0ZXJTaGFwZS5yZWxlYXNlKCk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zaGFwZXMvU2hhcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMv
U2hhcGUuaAppbmRleCAwZDllY2ZkLi5mNzc1ZTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3NoYXBlcy9TaGFwZS5oCkBAIC0zMiw2ICszMiw3IEBACiAKICNpbmNsdWRlICJCYXNpY1NoYXBl
cy5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKKyNpbmNsdWRlICJTdHlsZUltYWdlLmgiCiAj
aW5jbHVkZSAiV3JpdGluZ01vZGUuaCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTYwLDYgKzYxLDcgQEAgdHlwZWRlZiBWZWN0b3I8TGlu
ZVNlZ21lbnQ+IFNlZ21lbnRMaXN0OwogY2xhc3MgU2hhcGUgewogcHVibGljOgogICAgIHN0YXRp
YyBQYXNzT3duUHRyPFNoYXBlPiBjcmVhdGVTaGFwZShjb25zdCBCYXNpY1NoYXBlKiwgY29uc3Qg
TGF5b3V0U2l6ZSYgbG9naWNhbEJveFNpemUsIFdyaXRpbmdNb2RlLCBMZW5ndGggbWFyZ2luLCBM
ZW5ndGggcGFkZGluZyk7CisgICAgc3RhdGljIFBhc3NPd25QdHI8U2hhcGU+IGNyZWF0ZVNoYXBl
KGNvbnN0IFN0eWxlSW1hZ2UqLCBmbG9hdCB0aHJlc2hvbGQsIGNvbnN0IExheW91dFNpemUmIGxv
Z2ljYWxCb3hTaXplLCBXcml0aW5nTW9kZSwgTGVuZ3RoIG1hcmdpbiwgTGVuZ3RoIHBhZGRpbmcp
OwogCiAgICAgdmlydHVhbCB+U2hhcGUoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3NoYXBlcy9TaGFwZUluZm8uY3BwCmluZGV4IGUxMTU1ODMuLmJmOTRlNDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVJbmZvLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW5mby5jcHAKQEAgLTQ1LDEyICs0
NSwyNiBAQCBjb25zdCBTaGFwZSogU2hhcGVJbmZvPFJlbmRlclR5cGUsIHNoYXBlR2V0dGVyLCBp
bnRlcnZhbEdldHRlcj46OmNvbXB1dGVkU2hhcGUoKQogICAgIGlmIChTaGFwZSogc2hhcGUgPSBt
X3NoYXBlLmdldCgpKQogICAgICAgICByZXR1cm4gc2hhcGU7CiAKLSAgICBTaGFwZVZhbHVlKiBz
aGFwZVZhbHVlID0gKG1fcmVuZGVyZXItPnN0eWxlKCktPipzaGFwZUdldHRlcikoKTsKLSAgICBC
YXNpY1NoYXBlKiBzaGFwZSA9IChzaGFwZVZhbHVlICYmIHNoYXBlVmFsdWUtPnR5cGUoKSA9PSBT
aGFwZVZhbHVlOjpTaGFwZSkgPyBzaGFwZVZhbHVlLT5zaGFwZSgpIDogMDsKKyAgICBjb25zdCBM
YXlvdXRTaXplIGxvZ2ljYWxCb3hTaXplKG1fc2hhcGVMb2dpY2FsV2lkdGgsIG1fc2hhcGVMb2dp
Y2FsSGVpZ2h0KTsKKyAgICBXcml0aW5nTW9kZSB3cml0aW5nTW9kZSA9IG1fcmVuZGVyZXItPnN0
eWxlKCktPndyaXRpbmdNb2RlKCk7CisgICAgTGVuZ3RoIG1hcmdpbiA9IG1fcmVuZGVyZXItPnN0
eWxlKCktPnNoYXBlTWFyZ2luKCk7CisgICAgTGVuZ3RoIHBhZGRpbmcgPSBtX3JlbmRlcmVyLT5z
dHlsZSgpLT5zaGFwZVBhZGRpbmcoKTsKKyAgICBjb25zdCBTaGFwZVZhbHVlKiBzaGFwZVZhbHVl
ID0gKG1fcmVuZGVyZXItPnN0eWxlKCktPipzaGFwZUdldHRlcikoKTsKKyAgICBBU1NFUlQoc2hh
cGVWYWx1ZSk7CiAKLSAgICBBU1NFUlQoc2hhcGUpOworICAgIHN3aXRjaCAoc2hhcGVWYWx1ZS0+
dHlwZSgpKSB7CisgICAgY2FzZSBTaGFwZVZhbHVlOjpTaGFwZToKKyAgICAgICAgQVNTRVJUKHNo
YXBlVmFsdWUtPnNoYXBlKCkpOworICAgICAgICBtX3NoYXBlID0gU2hhcGU6OmNyZWF0ZVNoYXBl
KHNoYXBlVmFsdWUtPnNoYXBlKCksIGxvZ2ljYWxCb3hTaXplLCB3cml0aW5nTW9kZSwgbWFyZ2lu
LCBwYWRkaW5nKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTaGFwZVZhbHVlOjpJbWFnZToK
KyAgICAgICAgQVNTRVJUKHNoYXBlVmFsdWUtPmltYWdlKCkpOworICAgICAgICBtX3NoYXBlID0g
U2hhcGU6OmNyZWF0ZVNoYXBlKHNoYXBlVmFsdWUtPmltYWdlKCksIDAsIGxvZ2ljYWxCb3hTaXpl
LCB3cml0aW5nTW9kZSwgbWFyZ2luLCBwYWRkaW5nKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVm
YXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQogCi0gICAgbV9zaGFw
ZSA9IFNoYXBlOjpjcmVhdGVTaGFwZShzaGFwZSwgTGF5b3V0U2l6ZShtX3NoYXBlTG9naWNhbFdp
ZHRoLCBtX3NoYXBlTG9naWNhbEhlaWdodCksIG1fcmVuZGVyZXItPnN0eWxlKCktPndyaXRpbmdN
b2RlKCksIG1fcmVuZGVyZXItPnN0eWxlKCktPnNoYXBlTWFyZ2luKCksIG1fcmVuZGVyZXItPnN0
eWxlKCktPnNoYXBlUGFkZGluZygpKTsKICAgICBBU1NFUlQobV9zaGFwZSk7CiAgICAgcmV0dXJu
IG1fc2hhcGUuZ2V0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c2hhcGVzL1NoYXBlSW5zaWRlSW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hh
cGVzL1NoYXBlSW5zaWRlSW5mby5jcHAKaW5kZXggZDEyOTVkMC4uMWM4ZTExMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUluc2lkZUluZm8uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVJbnNpZGVJbmZvLmNwcApA
QCAtNDYsMTEgKzQ2LDE3IEBAIExpbmVTZWdtZW50UmFuZ2U6OkxpbmVTZWdtZW50UmFuZ2UoY29u
c3QgSW5saW5lSXRlcmF0b3ImIHN0YXJ0LCBjb25zdCBJbmxpbmVJdGVyCiBib29sIFNoYXBlSW5z
aWRlSW5mbzo6aXNFbmFibGVkRm9yKGNvbnN0IFJlbmRlckJsb2NrKiByZW5kZXJlcikKIHsKICAg
ICBTaGFwZVZhbHVlKiBzaGFwZVZhbHVlID0gcmVuZGVyZXItPnN0eWxlKCktPnJlc29sdmVkU2hh
cGVJbnNpZGUoKTsKLSAgICBpZiAoIXNoYXBlVmFsdWUgfHwgc2hhcGVWYWx1ZS0+dHlwZSgpICE9
IFNoYXBlVmFsdWU6OlNoYXBlKQorICAgIGlmICghc2hhcGVWYWx1ZSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgQmFzaWNTaGFwZSogc2hhcGUgPSBzaGFwZVZhbHVlLT5zaGFwZSgpOwot
ICAgIHJldHVybiBzaGFwZSAmJiBzaGFwZS0+dHlwZSgpICE9IEJhc2ljU2hhcGU6OkJhc2ljU2hh
cGVJbnNldFJlY3RhbmdsZVR5cGU7CisgICAgc3dpdGNoIChzaGFwZVZhbHVlLT50eXBlKCkpIHsK
KyAgICBjYXNlIFNoYXBlVmFsdWU6OlNoYXBlOgorICAgICAgICByZXR1cm4gc2hhcGVWYWx1ZS0+
c2hhcGUoKSAmJiBzaGFwZVZhbHVlLT5zaGFwZSgpLT50eXBlKCkgIT0gQmFzaWNTaGFwZTo6QmFz
aWNTaGFwZUluc2V0UmVjdGFuZ2xlVHlwZTsKKyAgICBjYXNlIFNoYXBlVmFsdWU6OkltYWdlOgor
ICAgICAgICByZXR1cm4gc2hhcGVWYWx1ZS0+aXNJbWFnZVZhbGlkKCk7CisgICAgZGVmYXVsdDoK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KIH0KIAogYm9vbCBTaGFwZUluc2lkZUluZm86
OmFkanVzdExvZ2ljYWxMaW5lVG9wKGZsb2F0IG1pblNlZ21lbnRXaWR0aCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uY3BwCmluZGV4
IGUxOTJmNjUuLmYxMmVkNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
aGFwZXMvU2hhcGVPdXRzaWRlSW5mby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmNwcApAQCAtMzgsOCArMzgsMTggQEAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGJvb2wgU2hhcGVPdXRzaWRlSW5mbzo6aXNFbmFibGVkRm9yKGNvbnN0IFJl
bmRlckJveCogYm94KQogewotICAgIFNoYXBlVmFsdWUqIHZhbHVlID0gYm94LT5zdHlsZSgpLT5z
aGFwZU91dHNpZGUoKTsKLSAgICByZXR1cm4gYm94LT5pc0Zsb2F0aW5nV2l0aFNoYXBlT3V0c2lk
ZSgpICYmIHZhbHVlLT50eXBlKCkgPT0gU2hhcGVWYWx1ZTo6U2hhcGUgJiYgdmFsdWUtPnNoYXBl
KCk7CisgICAgU2hhcGVWYWx1ZSogc2hhcGVWYWx1ZSA9IGJveC0+c3R5bGUoKS0+c2hhcGVPdXRz
aWRlKCk7CisgICAgaWYgKCFib3gtPmlzRmxvYXRpbmdXaXRoU2hhcGVPdXRzaWRlKCkgfHwgIXNo
YXBlVmFsdWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHN3aXRjaCAoc2hhcGVWYWx1
ZS0+dHlwZSgpKSB7CisgICAgY2FzZSBTaGFwZVZhbHVlOjpTaGFwZToKKyAgICAgICAgcmV0dXJu
IHNoYXBlVmFsdWUtPnNoYXBlKCk7CisgICAgY2FzZSBTaGFwZVZhbHVlOjpJbWFnZToKKyAgICAg
ICAgcmV0dXJuIHNoYXBlVmFsdWUtPmlzSW1hZ2VWYWxpZCgpOworICAgIGRlZmF1bHQ6CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiB9CiAKIGJvb2wgU2hhcGVPdXRzaWRlSW5mbzo6Y29t
cHV0ZVNlZ21lbnRzRm9yTGluZShMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUhl
aWdodCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFwZVZh
bHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhcGVWYWx1ZS5oCmluZGV4
IDY3NGFlZWIuLmE0N2VkMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TaGFwZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1No
YXBlVmFsdWUuaApAQCAtMzEsNiArMzEsNyBAQAogI2RlZmluZSBTaGFwZVZhbHVlX2gKIAogI2lu
Y2x1ZGUgIkJhc2ljU2hhcGVzLmgiCisjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRl
ICJTdHlsZUltYWdlLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIApAQCAtNjIsMTIg
KzYzLDE2IEBAIHB1YmxpYzoKIAogICAgIFNoYXBlVmFsdWVUeXBlIHR5cGUoKSBjb25zdCB7IHJl
dHVybiBtX3R5cGU7IH0KICAgICBCYXNpY1NoYXBlKiBzaGFwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c2hhcGUuZ2V0KCk7IH0KKwogICAgIFN0eWxlSW1hZ2UqIGltYWdlKCkgY29uc3QgeyByZXR1cm4g
bV9pbWFnZS5nZXQoKTsgfQorICAgIGJvb2wgaXNJbWFnZVZhbGlkKCkgY29uc3QgeyByZXR1cm4g
aW1hZ2UoKSAmJiBpbWFnZSgpLT5jYWNoZWRJbWFnZSgpICYmIGltYWdlKCktPmNhY2hlZEltYWdl
KCktPmhhc0ltYWdlKCk7IH0KICAgICB2b2lkIHNldEltYWdlKFBhc3NSZWZQdHI8U3R5bGVJbWFn
ZT4gaW1hZ2UpCiAgICAgeworICAgICAgICBBU1NFUlQodHlwZSgpID09IEltYWdlKTsKICAgICAg
ICAgaWYgKG1faW1hZ2UgIT0gaW1hZ2UpCiAgICAgICAgICAgICBtX2ltYWdlID0gaW1hZ2U7CiAg
ICAgfQorCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNoYXBlVmFsdWUmIG90aGVyKSBjb25z
dCB7IHJldHVybiB0eXBlKCkgPT0gb3RoZXIudHlwZSgpOyB9CiAKIHByaXZhdGU6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>204462</attachid>
            <date>2013-06-12 11:22:14 -0700</date>
            <delta_ts>2013-06-12 11:23:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>tmp.patch</filename>
            <type>text/plain</type>
            <size>38779</size>
            <attacher name="Hans Muller">giles_joplin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0NWJkYmU4MC4uYmY1ZGUzMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEzLTA2
LTEwICBIYW5zIE11bGxlciAgPGhtdWxsZXJAYWRvYmUuY29tPgorCisgICAgICAgIFtDU1MgRXhj
bHVzaW9uc10gTWluaW1hbCBzdXBwb3J0IGZvciB1c2luZyBhbiBpbWFnZSB0byBkZWZpbmUgYSBz
aGFwZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE2
NjQzCisKKyAgICAgICAgVHdvIHRlc3RzIHRvIHZlcmlmeSB0aGF0IHRoZSBpbml0aWFsIGltcGxl
bWVudGF0aW9uIG9mIHNoYXBlIHZhbHVlZCBpbWFnZXMgaXMgd29ya2luZworICAgICAgICBmb3Ig
c2hhcGUtaW5zaWRlLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtaW1hZ2Ut
MDAxLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXhjbHVzaW9ucy9zaGFw
ZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAwMS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1pbWFnZS0wMDItZXhwZWN0
ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9z
aGFwZS1pbnNpZGUtaW1hZ2UtMDAyLmh0bWw6IEFkZGVkLgorCiAyMDEzLTA2LTEyICBLd2FuZyBZ
dWwgU2VvICA8c2t5dWxAY29tcGFueTEwMC5uZXQ+CiAKICAgICAgICAgVW5yZXZpZXdlZCBnYXJk
ZW5pbmcuIFVuc2tpcHBpbmcgcGFzc2luZyB0ZXN0cy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAwMS1leHBl
Y3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFw
ZS1pbnNpZGUtaW1hZ2UtMDAxLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uZmRiYWE3MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAwMS1leHBlY3RlZC5o
dG1sCkBAIC0wLDAgKzEsMjQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxz
dHlsZT4KKyAgICAjaW1hZ2Utc2hhcGUgeworICAgICAgICBib3JkZXI6IHNvbGlkIGJsYWNrIDFw
eDsKKyAgICAgICAgZm9udDogMTJweC8xIEFoZW0sIHNhbnMtc2VyaWY7CisgICAgICAgIHBhZGRp
bmc6IDRweDsKKyAgICAgICAgY29sb3I6IGdyZWVuOworICAgICAgICB3aWR0aDogMjRweDsKKyAg
ICAgICAgaGVpZ2h0OiAyNHB4OworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImRhdGE6
aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZ0NBWUFBQUJ6
ZW5yMEFBQUFTa2xFUVZSWUNlM1hJUTRBTUFoRDBYWGgvbGZ1TWtlQ0pqVWZoU3Q1WUpEdGs2eWJE
UC9aREZCakJkTHVVZGpxbWF3QUFRUVFRQUFCQkJCQUFBRUU0Z0xpTit4ZlNxS1AzOEFEdVFNSk82
TE5icjRBQUFBQVNVVk9SSzVDWUlJPSIpOworICAgICAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8t
cmVwZWF0OworICAgIH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPHAgaWQ9ImluZm9y
bWF0aXZlLXRleHQiPgorICAgICAgVGhpcyB0ZXN0IHJlcXVpcmVzIHRoZSBBaGVtIGZvbnQuIEl0
IHVzZXMgYSAzMngzMiBQTkcgaW1hZ2Ugd2l0aCBhIDI0eDI0IHJlZCBzcXVhcmUgaW4gdGhlIGNl
bnRlcgorICAgICAgdG8gZGVmaW5lIGEgc2hhcGUtaW5zaWRlLiBUaGUgY29udGVudCBzaG91bGQg
anVzdCBjb3ZlciB0aGUgc2hhcGUgd2l0aCBzb2xpZCBncmVlbi48L3A+CisKKyAgPGRpdiBpZD0i
aW1hZ2Utc2hhcGUiPlhYPGJyLz5YWDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUt
aW1hZ2UtMDAxLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRl
L3NoYXBlLWluc2lkZS1pbWFnZS0wMDEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi40NmVjN2IxMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXhj
bHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAwMS5odG1sCkBAIC0wLDAg
KzEsMjUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KKyAgICAj
aW1hZ2Utc2hhcGUgeworICAgICAgICBib3JkZXI6IHNvbGlkIGJsYWNrIDFweDsKKyAgICAgICAg
Zm9udDogMTJweC8xIEFoZW0sIHNhbnMtc2VyaWY7CisgICAgICAgIGNvbG9yOiBncmVlbjsKKyAg
ICAgICAgd2lkdGg6IDMycHg7CisgICAgICAgIGhlaWdodDogMzJweDsKKyAgICAgICAgLXdlYmtp
dC1zaGFwZS1pbnNpZGU6IHVybCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFB
QU5TVWhFVWdBQUFDQUFBQUFnQ0FZQUFBQnplbnIwQUFBQVNrbEVRVlJZQ2UzWElRNEFNQWhEMFhY
aC9sZnVNa2VDSmpVZmhTdDVZSkR0azZ5YkRQL1pERkJqQmRMdVVkanFtYXdBQVFRUVFBQUJCQkJB
QUFFRTRnTGlOK3hmU3FLUDM4QUR1UU1KTzZMTmJyNEFBQUFBU1VWT1JLNUNZSUk9Iik7CisgICAg
ICAgIC13ZWJraXQtc2hhcGUtaW1hZ2UtdGhyZXNob2xkOiAwOworICAgICAgICBiYWNrZ3JvdW5k
LWltYWdlOiB1cmwoImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVn
QUFBQ0FBQUFBZ0NBWUFBQUJ6ZW5yMEFBQUFTa2xFUVZSWUNlM1hJUTRBTUFoRDBYWGgvbGZ1TWtl
Q0pqVWZoU3Q1WUpEdGs2eWJEUC9aREZCakJkTHVVZGpxbWF3QUFRUVFRQUFCQkJCQUFBRUU0Z0xp
Tit4ZlNxS1AzOEFEdVFNSk82TE5icjRBQUFBQVNVVk9SSzVDWUlJPSIpOworICAgICAgICBiYWNr
Z3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OworICAgIH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9k
eT4KKyAgPHAgaWQ9ImluZm9ybWF0aXZlLXRleHQiPgorICAgICAgVGhpcyB0ZXN0IHJlcXVpcmVz
IHRoZSBBaGVtIGZvbnQuIEl0IHVzZXMgYSAzMngzMiBQTkcgaW1hZ2Ugd2l0aCBhIDI0eDI0IHJl
ZCBzcXVhcmUgaW4gdGhlIGNlbnRlcgorICAgICAgdG8gZGVmaW5lIGEgc2hhcGUtaW5zaWRlLiBU
aGUgY29udGVudCBzaG91bGQganVzdCBjb3ZlciB0aGUgc2hhcGUgd2l0aCBzb2xpZCBncmVlbi48
L3A+CisKKyAgPGRpdiBpZD0iaW1hZ2Utc2hhcGUiPlhYIFhYPC9kaXY+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRl
L3NoYXBlLWluc2lkZS1pbWFnZS0wMDItZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
ZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAwMi1leHBlY3RlZC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhNTNmZTgKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBl
LWluc2lkZS1pbWFnZS0wMDItZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDIxIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+CisgICAgI2ltYWdlLXNoYXBlIHsKKyAg
ICAgICAgZm9udDogMTJweC8xIEFoZW0sIHNhbnMtc2VyaWY7CisgICAgICAgIGNvbG9yOiBncmVl
bjsKKyAgICAgICAgd2lkdGg6IDI0cHg7CisgICAgICAgIGhlaWdodDogMjRweDsKKyAgICAgICAg
YmFja2dyb3VuZC1pbWFnZTogdXJsKCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29B
QUFBTlNVaEVVZ0FBQUNBQUFBQWdDQVlBQUFCemVucjBBQUFBUkVsRVFWUllDZTNYc1EwQUlBZ0VR
SEgvblY4bjBBcHRqdENSRUhJMFVCbGpaMk1rZGVvK1Q4VVhOUU1RSUVDQUFBRUNCQWdRSUZCSjcx
dHdPKzJ0Z0FDQjd3SUxvSThIT2FPbXpGc0FBQUFBU1VWT1JLNUNZSUk9Iik7CisgICAgICAgIGJh
Y2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CisgICAgfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxi
b2R5PgorICA8cCBpZD0iaW5mb3JtYXRpdmUtdGV4dCI+CisgICAgICBUaGlzIHRlc3QgcmVxdWly
ZXMgdGhlIEFoZW0gZm9udC4gSXQgdXNlcyBhIDI0eDI0IHNxdWFyZSBQTkcgaW1hZ2Ugd2hlcmUg
YWxsIHBpeGVscyBhcmUgcmVkLAorICAgICAgdG8gZGVmaW5lIGEgc2hhcGUtaW5zaWRlLiBUaGUg
Y29udGVudCBzaG91bGQganVzdCBjb3ZlciB0aGUgc2hhcGUgd2l0aCBzb2xpZCBncmVlbi48L3A+
CisgIDxkaXYgaWQ9ImltYWdlLXNoYXBlIj5YWDxici8+WFg8L2Rpdj4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUv
c2hhcGUtaW5zaWRlLWltYWdlLTAwMi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25z
L3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtaW1hZ2UtMDAyLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uMDc5ODRlMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAwMi5o
dG1sCkBAIC0wLDAgKzEsMjQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxz
dHlsZT4KKyAgICAjaW1hZ2Utc2hhcGUgeworICAgICAgICBmb250OiAxMnB4LzEgQWhlbSwgc2Fu
cy1zZXJpZjsKKyAgICAgICAgY29sb3I6IGdyZWVuOworICAgICAgICB3aWR0aDogMjRweDsKKyAg
ICAgICAgaGVpZ2h0OiAyNHB4OworICAgICAgICAtd2Via2l0LXNoYXBlLWluc2lkZTogdXJsKCJk
YXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWdDQVlB
QUFCemVucjBBQUFBUkVsRVFWUllDZTNYc1EwQUlBZ0VRSEgvblY4bjBBcHRqdENSRUhJMFVCbGpa
Mk1rZGVvK1Q4VVhOUU1RSUVDQUFBRUNCQWdRSUZCSjcxdHdPKzJ0Z0FDQjd3SUxvSThIT2FPbXpG
c0FBQUFBU1VWT1JLNUNZSUk9Iik7CisgICAgICAgIC13ZWJraXQtc2hhcGUtaW1hZ2UtdGhyZXNo
b2xkOiAwOworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImRhdGE6aW1hZ2UvcG5nO2Jh
c2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZ0NBWUFBQUJ6ZW5yMEFBQUFSRWxF
UVZSWUNlM1hzUTBBSUFnRVFISC9uVjhuMEFwdGp0Q1JFSEkwVUJsaloyTWtkZW8rVDhVWE5RTVFJ
RUNBQUFFQ0JBZ1FJRkJKNzF0d08rMnRnQUNCN3dJTG9JOEhPYU9tekZzQUFBQUFTVVZPUks1Q1lJ
ST0iKTsKKyAgICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKKyAgICB9Cis8L3N0
eWxlPgorPC9oZWFkPgorPGJvZHk+CisgIDxwIGlkPSJpbmZvcm1hdGl2ZS10ZXh0Ij4KKyAgICAg
IFRoaXMgdGVzdCByZXF1aXJlcyB0aGUgQWhlbSBmb250LiBJdCB1c2VzIGEgMjR4MjQgc3F1YXJl
IFBORyBpbWFnZSB3aGVyZSBhbGwgcGl4ZWxzIGFyZSByZWQsCisgICAgICB0byBkZWZpbmUgYSBz
aGFwZS1pbnNpZGUuIFRoZSBjb250ZW50IHNob3VsZCBqdXN0IGNvdmVyIHRoZSBzaGFwZSB3aXRo
IHNvbGlkIGdyZWVuLjwvcD4KKworICA8ZGl2IGlkPSJpbWFnZS1zaGFwZSI+WFggWFg8L2Rpdj4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNzg1YTZhNy4uNWNlMjM5
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTIyMDksNiArMjIwOSw3IEBAIHNldChXZWJDb3Jl
X1NPVVJDRVMKICAgICByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFVuZGVyT3Zlci5jcHAK
IAogICAgIHJlbmRlcmluZy9zaGFwZXMvUG9seWdvblNoYXBlLmNwcAorICAgIHJlbmRlcmluZy9z
aGFwZXMvUmFzdGVyU2hhcGUuY3BwCiAgICAgcmVuZGVyaW5nL3NoYXBlcy9SZWN0YW5nbGVTaGFw
ZS5jcHAKICAgICByZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcAogICAgIHJlbmRlcmluZy9zaGFw
ZXMvU2hhcGVJbmZvLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDI4MzhmMmUuLjk4NGE1NTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw1OCBAQAorMjAxMy0wNi0xMCAgSGFucyBNdWxsZXIgIDxobXVsbGVyQGFk
b2JlLmNvbT4KKworICAgICAgICBbQ1NTIEV4Y2x1c2lvbnNdIE1pbmltYWwgc3VwcG9ydCBmb3Ig
dXNpbmcgYW4gaW1hZ2UgdG8gZGVmaW5lIGEgc2hhcGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNjY0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgYSBmaXJzdCBzbWFsbCBzdGVwIHRvd2Fy
ZHMgc3VwcG9ydGluZyBDU1Mgc2hhcGVzIGRlZmluZWQgYnkgYW4KKyAgICAgICAgaW1hZ2UgVVJM
IGFuZCBhIGFscGhhIGNoYW5uZWwgdGhyZXNob2xkLiBUbyBrZWVwIHRoZSBwYXRjaCBhcyBzbWFs
bCBhcworICAgICAgICBwb3NzaWJsZSwgdGhlcmUgYXJlIG1hbnkgbGltaXRhdGlvbnMgYW5kIHJl
bWFpbmluZyB3b3JrIGl0ZW1zLiAgU2VlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMTYzNDggZm9yIHRoZSBjdXJyZW50IGxpc3QuCisKKyAgICAgICAg
VGVzdDogZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtaW1hZ2UtMDAx
Lmh0bWwKKyAgICAgICAgVGVzdDogZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1p
bnNpZGUtaW1hZ2UtMDAyLmh0bWwKKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAg
ICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAg
KiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2su
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmltYWdlQ2hhbmdlZCk6IFdoZW4g
dGhlIGltYWdlIGhhcyBmaW5pc2hlZCBsb2FkaW5nLCByZXF1ZXN0IGEgbGF5b3V0LgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJP
YmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpzZXRTdHlsZSk6IEFk
ZCBub3RpZnkgY2xpZW50cyBmb3Igc2hhcGUgaW1hZ2VzLgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyT2JqZWN0Ojp1cGRhdGVTaGFwZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OnJlbW92ZVNo
YXBlSW1hZ2VDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjphcmVuYURl
bGV0ZSk6IFJlbW92ZSBub3RpZnkgY2xpZW50cyBmb3Igc2hhcGUgaW1hZ2VzLgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1Jh
c3RlclNoYXBlLmNwcDogQWRkZWQuIEEgU2hhcGUgZGVmaW5lZCBieSB0aHJlc2hvbGRpbmcgYW4g
aW1hZ2UncyBhbHBoYSBjaGFubmVsLgorICAgICAgICAoV2ViQ29yZTo6UmFzdGVyU2hhcGVJbnRl
cnZhbHM6OmJvdW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpSYXN0ZXJTaGFwZUludGVydmFsczo6
YWRkSW50ZXJ2YWwpOiBBZGQgYSBzaW5nbGUgcnVuIHRvIHRoZSBzaGFwZS4KKyAgICAgICAgKFdl
YkNvcmU6OmFsaWduZWRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJhc3RlclNoYXBlSW50ZXJ2
YWxzOjpnZXRJbnRlcnZhbHMpOiBSZXR1cm4gdGhlIHNoYXBlJ3MgcnVucyB0aGF0IGZhbGwgd2l0
aGluIGEgaG9yaXpvbmFsIGJveC4KKyAgICAgICAgKFdlYkNvcmU6OlJhc3RlclNoYXBlOjptYXJn
aW5JbnRlcnZhbHMpOiBJbnRlcm5hbCByZXByZXNlbnRhdGlvbiBvZiB0aGUgc2hhcGUgd2l0aCBz
aGFwZS1tYXJnaW4gZmFjdG9yZWQgaW4uICBDdXJyZW50bHkgb25seSBhIHN0dWIuCisgICAgICAg
IChXZWJDb3JlOjpSYXN0ZXJTaGFwZTo6cGFkZGluZ0ludGVydmFscyk6IEludGVybmFsIHJlcHJl
c2VudGF0aW9uIG9mIHRoZSBzaGFwZSB3aXRoIHNoYXBlLXBhZGRpbmcgZmFjdG9yZWQgaW4uICBD
dXJyZW50bHkgb25seSBhIHN0dWIuCisgICAgICAgIChXZWJDb3JlOjpSYXN0ZXJTaGFwZTo6Z2V0
RXhjbHVkZWRJbnRlcnZhbHMpOgorICAgICAgICAoV2ViQ29yZTo6UmFzdGVyU2hhcGU6OmdldElu
Y2x1ZGVkSW50ZXJ2YWxzKToKKyAgICAgICAgKFdlYkNvcmU6OlJhc3RlclNoYXBlOjpmaXJzdElu
Y2x1ZGVkSW50ZXJ2YWxMb2dpY2FsVG9wKToKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1Jh
c3RlclNoYXBlLmg6CisgICAgICAgIChXZWJDb3JlOjpSYXN0ZXJTaGFwZUludGVydmFsczo6UmFz
dGVyU2hhcGVJbnRlcnZhbHMpOiBJbnRlcm5hbCBydW4gbGVuZ3RoIGVuY29kZWQgcmVwcmVzZW50
YXRpb24gb2YgYSBSYXN0ZXJTaGFwZS4KKyAgICAgICAgKFdlYkNvcmU6OlJhc3RlclNoYXBlSW50
ZXJ2YWxzOjppc0VtcHR5KToKKyAgICAgICAgKFdlYkNvcmU6OlJhc3RlclNoYXBlOjpSYXN0ZXJT
aGFwZSk6CisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFwZTo6Y3JlYXRlU2hhcGUpOiBTdXBwb3J0IGZvciBjcmVhdGluZyBhIFNoYXBl
IGJhc2VkIG9uIGEgUmFzdGVyU2hhcGVJbnRlcnZhbHMgb2JqZWN0LgorICAgICAgICAqIHJlbmRl
cmluZy9zaGFwZXMvU2hhcGUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW5m
by5jcHA6CisgICAgICAgIChXZWJDb3JlOjo6OmNvbXB1dGVkU2hhcGUpOiBBZGRlZCBzdXBwb3J0
IGZvciB0aGUgSW1hZ2UgU2hhcGVWYWx1ZSB0eXBlLgorICAgICAgICAqIHJlbmRlcmluZy9zaGFw
ZXMvU2hhcGVJbnNpZGVJbmZvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXBlSW5zaWRlSW5m
bzo6aXNFbmFibGVkRm9yKTogQWRkZWQgc3VwcG9ydCBmb3IgdGhlIEltYWdlIFNoYXBlVmFsdWUg
dHlwZS4KKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcGVPdXRzaWRlSW5mbzo6aXNFbmFibGVkRm9yKTogQWRkZWQg
c3VwcG9ydCBmb3IgdGhlIEltYWdlIFNoYXBlVmFsdWUgdHlwZS4KKyAgICAgICAgKiByZW5kZXJp
bmcvc3R5bGUvU2hhcGVWYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGVWYWx1ZTo6aXNJ
bWFnZVZhbGlkKTogVHJ1ZSBpZiB0aGUgc2hhcGUncyBpbWFnZSBpcyByZWFkeSB0byBiZSBiZSBw
cm9jZXNzZWQuCisKIDIwMTMtMDYtMTIgIENocmlzdG9waGUgRHVtZXogIDxjaC5kdW1lekBzaXNh
LnNhbXN1bmcuY29tPgogCiAgICAgICAgIFN1cHBvcnQgbGF0ZXN0IFdlYiBJREwgaW5kZXhlZCBw
cm9wZXJ0eSBnZXR0ZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA3OGJkNjE4
Li40MDMzYWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTQ2MjEsNiArNDYy
MSw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3NoYXBlcy9Qb2x5Z29uU2hhcGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hh
cGVzL1BvbHlnb25TaGFwZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jh
c3RlclNoYXBlLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJT
aGFwZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1JlY3RhbmdsZVNoYXBl
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SZWN0YW5nbGVTaGFwZS5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcCBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnBy
aQppbmRleCAwN2JhOGJkLi4wZDk0NTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJn
ZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTEyMzksNiArMTIzOSw3
IEBAIFNPVVJDRVMgKz0gXAogICAgIHJlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcCBcCiAgICAg
cmVuZGVyaW5nL1Njcm9sbEJlaGF2aW9yLmNwcCBcCiAgICAgcmVuZGVyaW5nL3NoYXBlcy9Qb2x5
Z29uU2hhcGUuY3BwIFwKKyAgICByZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNwcCBcCiAg
ICAgcmVuZGVyaW5nL3NoYXBlcy9SZWN0YW5nbGVTaGFwZS5jcHAgXAogICAgIHJlbmRlcmluZy9z
aGFwZXMvU2hhcGUuY3BwIFwKICAgICByZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW5mby5jcHAgXApA
QCAtMjUwNyw2ICsyNTA4LDcgQEAgSEVBREVSUyArPSBcCiAgICAgcmVuZGVyaW5nL1Jvb3RJbmxp
bmVCb3guaCBcCiAgICAgcmVuZGVyaW5nL1Njcm9sbEJlaGF2aW9yLmggXAogICAgIHJlbmRlcmlu
Zy9zaGFwZXMvUG9seWdvblNoYXBlLmggXAorICAgIHJlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hh
cGUuaCBcCiAgICAgcmVuZGVyaW5nL3NoYXBlcy9SZWN0YW5nbGVTaGFwZS5oIFwKICAgICByZW5k
ZXJpbmcvc2hhcGVzL1NoYXBlLmggXAogICAgIHJlbmRlcmluZy9zaGFwZXMvU2hhcGVJbmZvLmgg
XApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKaW5k
ZXggNTVhMzcwNC4uYjQzZmQ4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3hwcm9qL1dlYkNvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHBy
b2ovV2ViQ29yZS52Y3hwcm9qCkBAIC02MzAyLDYgKzYzMDIsNyBAQAogICAgICAgPEV4Y2x1ZGVk
RnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJv
ZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgIDwvQ2xDb21waWxl
PgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXHNoYXBlc1xQb2x5Z29uU2hh
cGUuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXHNoYXBlc1xS
YXN0ZXJTaGFwZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdc
c2hhcGVzXFJlY3RhbmdsZVNoYXBlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHJlbmRlcmluZ1xzaGFwZXNcU2hhcGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccmVuZGVyaW5nXHNoYXBlc1xTaGFwZUluc2lkZUluZm8uY3BwIiAvPgpAQCAtMTIxOTQsNiAr
MTIxOTUsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXFJlbmRlclNs
aWRlci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXFJlbmRlclNu
YXBzaG90dGVkUGx1Z0luLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJp
bmdcc2hhcGVzXFBvbHlnb25TaGFwZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cmVuZGVyaW5nXHNoYXBlc1xSYXN0ZXJTaGFwZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5ccmVuZGVyaW5nXHNoYXBlc1xSZWN0YW5nbGVTaGFwZS5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXHNoYXBlc1xTaGFwZS5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXHNoYXBlc1xTaGFwZUluc2lkZUluZm8uaCIgLz4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA0YzQ4N2VhLi5mNDcyZjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xODM1LDYgKzE4MzUsOCBAQAogCQk2RTY3RDJBNjEy
ODBFOEE0MDA4NzU4RjcgLyogRXh0ZW5zaW9uczNET3BlbkdMLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNjdEMkE0MTI4MEU4QTQwMDg3NThGNyAv
KiBFeHRlbnNpb25zM0RPcGVuR0wuY3BwICovOyB9OwogCQk2RTY3RDJBNzEyODBFOEE0MDA4NzU4
RjcgLyogRXh0ZW5zaW9uczNET3BlbkdMLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA2RTY3RDJBNTEyODBFOEE0MDA4NzU4RjcgLyogRXh0ZW5zaW9uczNE
T3BlbkdMLmggKi87IH07CiAJCTZFNjdEMkE5MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25z
M0QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNjdE
MkE4MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25zM0QuaCAqLzsgfTsKKwkJNkU4NEU5RTAx
NzY2OEJFRTAwODE1QjY4IC8qIFJhc3RlclNoYXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFODRFOURFMTc2NjhCQUQwMDgxNUI2OCAvKiBSYXN0
ZXJTaGFwZS5jcHAgKi87IH07CisJCTZFODRFOUUxMTc2NjhCRjEwMDgxNUI2OCAvKiBSYXN0ZXJT
aGFwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU4
NEU5REYxNzY2OEJBRDAwODE1QjY4IC8qIFJhc3RlclNoYXBlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNkVCQzVFQUYxMzhCNTBGMjAwQTBDRjhB
IC8qIEpTRmxvYXQ2NEFycmF5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDZFQkM1RUFEMTM4QjUwRjIwMEEwQ0Y4QSAvKiBKU0Zsb2F0NjRBcnJheS5j
cHAgKi87IH07CiAJCTZFQkM1RUIwMTM4QjUwRjIwMEEwQ0Y4QSAvKiBKU0Zsb2F0NjRBcnJheS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkVCQzVFQUUx
MzhCNTBGMjAwQTBDRjhBIC8qIEpTRmxvYXQ2NEFycmF5LmggKi87IH07CiAJCTZFQkYwRTQ4MTJB
ODkyNjEwMERCMTcwOSAvKiBPRVNUZXh0dXJlRmxvYXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkVCRjBFNDUxMkE4OTI2MTAwREIxNzA5IC8qIE9F
U1RleHR1cmVGbG9hdC5jcHAgKi87IH07CkBAIC04MjI4LDYgKzgyMzAsOCBAQAogCQk2RTY3RDJB
NDEyODBFOEE0MDA4NzU4RjcgLyogRXh0ZW5zaW9uczNET3BlbkdMLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV4dGVuc2lvbnMzRE9wZW5HTC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFNjdEMkE1MTI4MEU4QTQwMDg3NThGNyAvKiBFeHRlbnNp
b25zM0RPcGVuR0wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXh0ZW5zaW9u
czNET3BlbkdMLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFNjdEMkE4MTI4MEU4
QkQwMDg3NThGNyAvKiBFeHRlbnNpb25zM0QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRXh0ZW5zaW9uczNELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZFODRF
OURFMTc2NjhCQUQwMDgxNUI2OCAvKiBSYXN0ZXJTaGFwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSYXN0ZXJTaGFwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTZFODRFOURGMTc2NjhCQUQwMDgxNUI2OCAvKiBSYXN0ZXJTaGFwZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSYXN0ZXJTaGFwZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk2RUJDNUQ4MDEzOEI0QzRFMDBBMENGOEEgLyogRmxvYXQ2NEFycmF5
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBGbG9hdDY0QXJyYXkuaWRsOyBwYXRoID0gY2Fu
dmFzL0Zsb2F0NjRBcnJheS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFQkM1
RUFEMTM4QjUwRjIwMEEwQ0Y4QSAvKiBKU0Zsb2F0NjRBcnJheS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0Zsb2F0NjRBcnJheS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTZFQkM1RUFFMTM4QjUwRjIwMEEwQ0Y4QSAvKiBKU0Zsb2F0NjRBcnJh
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0Zsb2F0NjRBcnJheS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjA1NDQsNiArMjA1NDgsOCBAQAogCQkJY2hp
bGRyZW4gPSAoCiAJCQkJRkQwOEE4N0ExNzVEMzkyNjAwMkNEMzYwIC8qIFBvbHlnb25TaGFwZS5j
cHAgKi8sCiAJCQkJRkQwOEE4N0IxNzVEMzkyNjAwMkNEMzYwIC8qIFBvbHlnb25TaGFwZS5oICov
LAorCQkJCTZFODRFOURFMTc2NjhCQUQwMDgxNUI2OCAvKiBSYXN0ZXJTaGFwZS5jcHAgKi8sCisJ
CQkJNkU4NEU5REYxNzY2OEJBRDAwODE1QjY4IC8qIFJhc3RlclNoYXBlLmggKi8sCiAJCQkJRkQw
OEE4N0MxNzVEMzkyNjAwMkNEMzYwIC8qIFJlY3RhbmdsZVNoYXBlLmNwcCAqLywKIAkJCQlGRDA4
QTg3RDE3NUQzOTI2MDAyQ0QzNjAgLyogUmVjdGFuZ2xlU2hhcGUuaCAqLywKIAkJCQlGRDA4QTg3
RTE3NUQzOTI2MDAyQ0QzNjAgLyogU2hhcGUuY3BwICovLApAQCAtMjA4NjQsNiArMjA4NzAsNyBA
QAogCQkJZmlsZXMgPSAoCiAJCQkJRkUxMTVGQUIxNjc5ODhDRDAwMjQ5MTM0IC8qIEFic3RyYWN0
RGF0YWJhc2VTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFNEFBREVFMTZEMkMzNzQwMDAy
NkZGQyAvKiBBYnN0cmFjdFNRTFN0YXRlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkU4NEU5
RTExNzY2OEJGMTAwODE1QjY4IC8qIFJhc3RlclNoYXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlG
RTRBQURFRjE2RDJDMzc0MDAwMjZGRkMgLyogQWJzdHJhY3RTUUxTdGF0ZW1lbnRCYWNrZW5kLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0MUUxQjFEMTBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RX
b3JrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5QTgxMjJFMEZCQjlDMUQwMDUxMDI5MyAvKiBB
Y2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmggaW4gSGVhZGVycyAqLywKQEAgLTI2OTU1LDYgKzI2
OTYyLDcgQEAKIAkJCQlCRTZERjcxMTE3MUNBMkRBMDBERDUyQjggLyogSlNBdWRpb1RyYWNrQ3Vz
dG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJFNkRGNzEzMTcxQ0EyREEwMERENTJCOCAvKiBK
U0F1ZGlvVHJhY2tMaXN0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZCNzE5QzQwMTcy
MzhDQUUwMDIyREUzNCAvKiBXZWJLaXRDU1NNYXRGdW5jdGlvblZhbHVlLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTZFODRFOUUwMTc2NjhCRUUwMDgxNUI2OCAvKiBSYXN0ZXJTaGFwZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4
IGU3ZDdkM2QuLjY5YWQyMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2Nr
LmNwcApAQCAtMTQzNSw2ICsxNDM1LDIxIEBAIHZvaWQgUmVuZGVyQmxvY2s6OmxheW91dCgpCiB9
CiAKICNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKK3ZvaWQgUmVuZGVyQmxvY2s6OmltYWdlQ2hhbmdl
ZChXcmFwcGVkSW1hZ2VQdHIgaW1hZ2UsIGNvbnN0IEludFJlY3QqKQoreworICAgIFJlbmRlckJv
eDo6aW1hZ2VDaGFuZ2VkKGltYWdlKTsKKworICAgIGlmICghcGFyZW50KCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIFNoYXBlVmFsdWUqIHNoYXBlVmFsdWUgPSBzdHlsZSgpLT5zaGFwZUluc2lk
ZSgpOworICAgIGlmIChzaGFwZVZhbHVlICYmIHNoYXBlVmFsdWUtPmltYWdlKCkgJiYgc2hhcGVW
YWx1ZS0+aW1hZ2UoKS0+ZGF0YSgpID09IGltYWdlKSB7CisgICAgICAgIFNoYXBlSW5zaWRlSW5m
byogc2hhcGVJbnNpZGVJbmZvID0gZW5zdXJlU2hhcGVJbnNpZGVJbmZvKCk7CisgICAgICAgIHNo
YXBlSW5zaWRlSW5mby0+ZGlydHlTaGFwZVNpemUoKTsKKyAgICAgICAgbWFya1NoYXBlSW5zaWRl
RGVzY2VuZGFudHNGb3JMYXlvdXQoKTsKKyAgICB9Cit9CisKIHZvaWQgUmVuZGVyQmxvY2s6OnVw
ZGF0ZVNoYXBlSW5zaWRlSW5mb0FmdGVyU3R5bGVDaGFuZ2UoY29uc3QgU2hhcGVWYWx1ZSogc2hh
cGVJbnNpZGUsIGNvbnN0IFNoYXBlVmFsdWUqIG9sZFNoYXBlSW5zaWRlKQogewogICAgIC8vIEZJ
WE1FOiBBIGZ1dHVyZSBvcHRpbWl6YXRpb24gd291bGQgZG8gYSBkZWVwIGNvbXBhcmlzb24gZm9y
IGVxdWFsaXR5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAppbmRleCBiZDEw
Yzk4Li4zZmZhN2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaApAQCAt
NDY4LDYgKzQ2OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG1hcmtTaGFwZUluc2lkZURlc2NlbmRh
bnRzRm9yTGF5b3V0KCk7CiAgICAgU2hhcGVJbnNpZGVJbmZvKiBsYXlvdXRTaGFwZUluc2lkZUlu
Zm8oKSBjb25zdDsKICAgICBib29sIGFsbG93c1NoYXBlSW5zaWRlSW5mb1NoYXJpbmcoKSBjb25z
dCB7IHJldHVybiAhaXNJbmxpbmUoKSAmJiAhaXNGbG9hdGluZygpOyB9CisgICAgdmlydHVhbCB2
b2lkIGltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIsIGNvbnN0IEludFJlY3QqID0gMCkgT1ZF
UlJJREU7CiAjZW5kaWYKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmNwcAppbmRleCAyZDNhYzA0Li5lZDEyNzllIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMTg0NCw2ICsxODQ0LDExIEBAIHZvaWQgUmVu
ZGVyT2JqZWN0OjpzZXRTdHlsZShQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKICAgICB1
cGRhdGVJbWFnZShvbGRTdHlsZSA/IG9sZFN0eWxlLT5ib3JkZXJJbWFnZSgpLmltYWdlKCkgOiAw
LCBtX3N0eWxlID8gbV9zdHlsZS0+Ym9yZGVySW1hZ2UoKS5pbWFnZSgpIDogMCk7CiAgICAgdXBk
YXRlSW1hZ2Uob2xkU3R5bGUgPyBvbGRTdHlsZS0+bWFza0JveEltYWdlKCkuaW1hZ2UoKSA6IDAs
IG1fc3R5bGUgPyBtX3N0eWxlLT5tYXNrQm94SW1hZ2UoKS5pbWFnZSgpIDogMCk7CiAKKyNpZiBF
TkFCTEUoQ1NTX1NIQVBFUykKKyAgICB1cGRhdGVTaGFwZUltYWdlKG9sZFN0eWxlID8gb2xkU3R5
bGUtPnNoYXBlSW5zaWRlKCkgOiAwLCBtX3N0eWxlID8gbV9zdHlsZS0+c2hhcGVJbnNpZGUoKSA6
IDApOworICAgIHVwZGF0ZVNoYXBlSW1hZ2Uob2xkU3R5bGUgPyBvbGRTdHlsZS0+c2hhcGVPdXRz
aWRlKCkgOiAwLCBtX3N0eWxlID8gbV9zdHlsZS0+c2hhcGVPdXRzaWRlKCkgOiAwKTsKKyNlbmRp
ZgorCiAgICAgLy8gV2UgbmVlZCB0byBlbnN1cmUgdGhhdCB2aWV3LT5tYXhpbWFsT3V0bGluZVNp
emUoKSBpcyB2YWxpZCBmb3IgYW55IHJlcGFpbnRzIHRoYXQgaGFwcGVuCiAgICAgLy8gZHVyaW5n
IHN0eWxlRGlkQ2hhbmdlIChpdCdzIHVzZWQgYnkgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFp
bnQoKSkuCiAgICAgaWYgKG1fc3R5bGUtPm91dGxpbmVXaWR0aCgpID4gMCAmJiBtX3N0eWxlLT5v
dXRsaW5lU2l6ZSgpID4gbWF4aW1hbE91dGxpbmVTaXplKFBhaW50UGhhc2VPdXRsaW5lKSkKQEAg
LTIwOTYsNiArMjEwMSwxNCBAQCB2b2lkIFJlbmRlck9iamVjdDo6dXBkYXRlSW1hZ2UoU3R5bGVJ
bWFnZSogb2xkSW1hZ2UsIFN0eWxlSW1hZ2UqIG5ld0ltYWdlKQogICAgIH0KIH0KIAorI2lmIEVO
QUJMRShDU1NfU0hBUEVTKQordm9pZCBSZW5kZXJPYmplY3Q6OnVwZGF0ZVNoYXBlSW1hZ2UoY29u
c3QgU2hhcGVWYWx1ZSogb2xkU2hhcGVWYWx1ZSwgY29uc3QgU2hhcGVWYWx1ZSogbmV3U2hhcGVW
YWx1ZSkKK3sKKyAgICBpZiAob2xkU2hhcGVWYWx1ZSB8fCBuZXdTaGFwZVZhbHVlKQorICAgICAg
ICB1cGRhdGVJbWFnZShvbGRTaGFwZVZhbHVlID8gb2xkU2hhcGVWYWx1ZS0+aW1hZ2UoKSA6IDAs
IG5ld1NoYXBlVmFsdWUgPyBuZXdTaGFwZVZhbHVlLT5pbWFnZSgpIDogMCk7Cit9CisjZW5kaWYK
KwogTGF5b3V0UmVjdCBSZW5kZXJPYmplY3Q6OnZpZXdSZWN0KCkgY29uc3QKIHsKICAgICByZXR1
cm4gdmlldygpLT52aWV3UmVjdCgpOwpAQCAtMjYxMiw2ICsyNjI1LDE2IEBAIHZvaWQgUmVuZGVy
T2JqZWN0OjpkZXN0cm95KCkKICAgICBhcmVuYURlbGV0ZShyZW5kZXJBcmVuYSgpLCB0aGlzKTsK
IH0KIAorI2lmIEVOQUJMRShDU1NfU0hBUEVTKQorc3RhdGljIGlubGluZSB2b2lkIHJlbW92ZVNo
YXBlSW1hZ2VDbGllbnQoUmVuZGVyT2JqZWN0ICp0aGlzUmVuZGVyT2JqZWN0LCBTaGFwZVZhbHVl
KiBzaGFwZVZhbHVlKQoreworICAgIGlmICghc2hhcGVWYWx1ZSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIGlmIChTdHlsZUltYWdlKiBzaGFwZUltYWdlID0gc2hhcGVWYWx1ZS0+aW1hZ2UoKSkKKyAg
ICAgICAgc2hhcGVJbWFnZS0+cmVtb3ZlQ2xpZW50KHRoaXNSZW5kZXJPYmplY3QpOworfQorI2Vu
ZGlmCisKIHZvaWQgUmVuZGVyT2JqZWN0OjphcmVuYURlbGV0ZShSZW5kZXJBcmVuYSogYXJlbmEs
IHZvaWQqIGJhc2UpCiB7CiAgICAgaWYgKG1fc3R5bGUpIHsKQEAgLTI2MzAsNiArMjY1MywxMSBA
QCB2b2lkIFJlbmRlck9iamVjdDo6YXJlbmFEZWxldGUoUmVuZGVyQXJlbmEqIGFyZW5hLCB2b2lk
KiBiYXNlKQogCiAgICAgICAgIGlmIChTdHlsZUltYWdlKiBtYXNrQm94SW1hZ2UgPSBtX3N0eWxl
LT5tYXNrQm94SW1hZ2UoKS5pbWFnZSgpKQogICAgICAgICAgICAgbWFza0JveEltYWdlLT5yZW1v
dmVDbGllbnQodGhpcyk7CisKKyNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKKyAgICAgICAgcmVtb3Zl
U2hhcGVJbWFnZUNsaWVudCh0aGlzLCBtX3N0eWxlLT5zaGFwZUluc2lkZSgpKTsKKyAgICAgICAg
cmVtb3ZlU2hhcGVJbWFnZUNsaWVudCh0aGlzLCBtX3N0eWxlLT5zaGFwZU91dHNpZGUoKSk7Cisj
ZW5kaWYKICAgICB9CiAKICNpZm5kZWYgTkRFQlVHCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmgKaW5kZXggOTM1N2FjNS4uZmI4ODk0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuaApAQCAtNzAzLDYgKzcwMyw5IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgdXBkYXRlRmlsbEltYWdlcyhjb25zdCBGaWxsTGF5ZXIqLCBjb25zdCBGaWxsTGF5ZXIqKTsK
ICAgICB2b2lkIHVwZGF0ZUltYWdlKFN0eWxlSW1hZ2UqLCBTdHlsZUltYWdlKik7CisjaWYgRU5B
QkxFKENTU19TSEFQRVMpCisgICAgdm9pZCB1cGRhdGVTaGFwZUltYWdlKGNvbnN0IFNoYXBlVmFs
dWUqLCBjb25zdCBTaGFwZVZhbHVlKik7CisjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBwYWlu
dChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmYzNTg1ZmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNwcApAQCAtMCwwICsxLDE2MyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMyBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAg
ICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMK
KyAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorICogQ09QWVJJR0hUIEhPTERF
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULAorICogSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULAorICogU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRAorICogT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSYXN0ZXJTaGFwZS5oIgorCisjaW5jbHVk
ZSAiU2hhcGVJbnRlcnZhbC5oIgorI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworSW50UmVjdCBSYXN0ZXJTaGFwZUludGVydmFsczo6Ym91bmRzKCkg
Y29uc3QKK3sKKyAgICBpZiAoIW1fYm91bmRzKQorICAgICAgICBtX2JvdW5kcyA9IGFkb3B0UHRy
KG5ldyBJbnRSZWN0KG1fcmVnaW9uLmJvdW5kcygpKSk7CisgICAgcmV0dXJuICptX2JvdW5kczsK
K30KKwordm9pZCBSYXN0ZXJTaGFwZUludGVydmFsczo6YWRkSW50ZXJ2YWwoaW50IHksIGludCB4
MSwgaW50IHgyKQoreworICAgIG1fcmVnaW9uLnVuaXRlKFJlZ2lvbihJbnRSZWN0KHgxLCB5LCB4
MiAtIHgxLCAxKSkpOworICAgIG1fYm91bmRzLmNsZWFyKCk7Cit9CisKK3N0YXRpYyBpbmxpbmUg
SW50UmVjdCBhbGlnbmVkUmVjdChJbnRSZWN0IHIsIGludCB5MSwgaW50IHkyKQoreworICAgIHJl
dHVybiBJbnRSZWN0KHIueCgpLCB5MSwgci53aWR0aCgpLCB5MiAtIHkxKTsKK30KKwordm9pZCBS
YXN0ZXJTaGFwZUludGVydmFsczo6Z2V0SW50ZXJ2YWxzKGludCB5MSwgaW50IHkyLCBTZWdtZW50
TGlzdCYgcmVzdWx0KSBjb25zdAoreworICAgIEFTU0VSVCh5MiA+PSB5MSk7CisKKyAgICBJbnRS
ZWN0IGxpbmVSZWN0KGJvdW5kcygpLngoKSwgeTEsIGJvdW5kcygpLndpZHRoKCksIHkyIC0geTEp
OworICAgIFJlZ2lvbiBsaW5lUmVnaW9uKGxpbmVSZWN0KTsKKyAgICBsaW5lUmVnaW9uLmludGVy
c2VjdChtX3JlZ2lvbik7CisgICAgaWYgKGxpbmVSZWdpb24uaXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBWZWN0b3I8SW50UmVjdD4gbGluZVJlY3RzID0gbGluZVJlZ2lvbi5yZWN0
cygpOworICAgIEFTU0VSVChsaW5lUmVjdHMuc2l6ZSgpID4gMCk7CisKKyAgICBSZWdpb24gc2Vn
bWVudHNSZWdpb24obGluZVJlY3QpOworICAgIFJlZ2lvbiBpbnRlcnZhbHNSZWdpb247CisKKyAg
ICAvLyBUaGUgbG9vcCBiZWxvdyB1c2VzIFJlZ2lvbnMgdG8gY29tcHV0ZSB0aGUgaW50ZXJzZWN0
aW9uIG9mIHRoZSBob3Jpem9udGFsCisgICAgLy8gc2hhcGUgaW50ZXJ2YWxzIHRoYXQgZmFsbCB3
aXRoaW4gdGhlIGxpbmUncyBib3guCisKKyAgICBpbnQgbGluZVkgPSBsaW5lUmVjdHNbMF0ueSgp
OworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsaW5lUmVjdHMuc2l6ZSgpOyBpKyspIHsK
KyAgICAgICAgaWYgKGxpbmVSZWN0c1tpXS55KCkgIT0gbGluZVkpIHsKKyAgICAgICAgICAgIHNl
Z21lbnRzUmVnaW9uLmludGVyc2VjdChpbnRlcnZhbHNSZWdpb24pOworICAgICAgICAgICAgaW50
ZXJ2YWxzUmVnaW9uID0gUmVnaW9uKCk7CisgICAgICAgIH0KKyAgICAgICAgaW50ZXJ2YWxzUmVn
aW9uLnVuaXRlKFJlZ2lvbihhbGlnbmVkUmVjdChsaW5lUmVjdHNbaV0sIHkxLCB5MikpKTsKKyAg
ICAgICAgbGluZVkgPSBsaW5lUmVjdHNbaV0ueSgpOworICAgIH0KKyAgICBpZiAoIWludGVydmFs
c1JlZ2lvbi5pc0VtcHR5KCkpCisgICAgICAgIHNlZ21lbnRzUmVnaW9uLmludGVyc2VjdChpbnRl
cnZhbHNSZWdpb24pOworCisgICAgVmVjdG9yPEludFJlY3Q+IHNlZ21lbnRSZWN0cyA9IHNlZ21l
bnRzUmVnaW9uLnJlY3RzKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNlZ21lbnRS
ZWN0cy5zaXplKCk7IGkrKykKKyAgICAgICAgcmVzdWx0LmFwcGVuZChMaW5lU2VnbWVudChzZWdt
ZW50UmVjdHNbaV0ueCgpLCBzZWdtZW50UmVjdHNbaV0ubWF4WCgpKSk7Cit9CisKK2NvbnN0IFJh
c3RlclNoYXBlSW50ZXJ2YWxzJiBSYXN0ZXJTaGFwZTo6bWFyZ2luSW50ZXJ2YWxzKCkgY29uc3QK
K3sKKyAgICBBU1NFUlQoc2hhcGVNYXJnaW4oKSA+PSAwKTsKKyAgICBpZiAoIXNoYXBlTWFyZ2lu
KCkpCisgICAgICAgIHJldHVybiAqbV9pbnRlcnZhbHM7CisKKyAgICAvLyBGSVhNRTogYWRkIHN1
cHBvcnQgZm9yIG5vbi16ZXJvIG1hcmdpbgorICAgIHJldHVybiAqbV9pbnRlcnZhbHM7Cit9CisK
K2NvbnN0IFJhc3RlclNoYXBlSW50ZXJ2YWxzJiBSYXN0ZXJTaGFwZTo6cGFkZGluZ0ludGVydmFs
cygpIGNvbnN0Cit7CisgICAgQVNTRVJUKHNoYXBlUGFkZGluZygpID49IDApOworICAgIGlmICgh
c2hhcGVQYWRkaW5nKCkpCisgICAgICAgIHJldHVybiAqbV9pbnRlcnZhbHM7CisKKyAgICAvLyBG
SVhNRTogYWRkIHN1cHBvcnQgZm9yIG5vbi16ZXJvIHBhZGRpbmcKKyAgICByZXR1cm4gKm1faW50
ZXJ2YWxzOworfQorCit2b2lkIFJhc3RlclNoYXBlOjpnZXRFeGNsdWRlZEludGVydmFscyhMYXlv
dXRVbml0IGxvZ2ljYWxUb3AsIExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgU2VnbWVudExpc3Qm
IHJlc3VsdCkgY29uc3QKK3sKKyAgICBjb25zdCBSYXN0ZXJTaGFwZUludGVydmFscyYgaW50ZXJ2
YWxzID0gbWFyZ2luSW50ZXJ2YWxzKCk7CisgICAgaWYgKGludGVydmFscy5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIGZsb2F0IHkxID0gbG9naWNhbFRvcDsKKyAgICBmbG9hdCB5
MiA9IGxvZ2ljYWxUb3AgKyBsb2dpY2FsSGVpZ2h0OworCisgICAgaWYgKHkyIDwgaW50ZXJ2YWxz
LmJvdW5kcygpLnkoKSB8fCB5MSA+PSBpbnRlcnZhbHMuYm91bmRzKCkubWF4WSgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBpbnRlcnZhbHMuZ2V0SW50ZXJ2YWxzKHkxLCB5MiwgcmVzdWx0KTsK
K30KKwordm9pZCBSYXN0ZXJTaGFwZTo6Z2V0SW5jbHVkZWRJbnRlcnZhbHMoTGF5b3V0VW5pdCBs
b2dpY2FsVG9wLCBMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIFNlZ21lbnRMaXN0JiByZXN1bHQp
IGNvbnN0Cit7CisgICAgY29uc3QgUmFzdGVyU2hhcGVJbnRlcnZhbHMmIGludGVydmFscyA9IHBh
ZGRpbmdJbnRlcnZhbHMoKTsKKyAgICBpZiAoaW50ZXJ2YWxzLmlzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgZmxvYXQgeTEgPSBsb2dpY2FsVG9wOworICAgIGZsb2F0IHkyID0gbG9n
aWNhbFRvcCArIGxvZ2ljYWxIZWlnaHQ7CisKKyAgICBpZiAoeTEgPCBpbnRlcnZhbHMuYm91bmRz
KCkueSgpIHx8IHkyID4gaW50ZXJ2YWxzLmJvdW5kcygpLm1heFkoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgaW50ZXJ2YWxzLmdldEludGVydmFscyh5MSwgeTIsIHJlc3VsdCk7Cit9CisKK2Jv
b2wgUmFzdGVyU2hhcGU6OmZpcnN0SW5jbHVkZWRJbnRlcnZhbExvZ2ljYWxUb3AoTGF5b3V0VW5p
dCBtaW5Mb2dpY2FsSW50ZXJ2YWxUb3AsIGNvbnN0IExheW91dFNpemUmIG1pbkxvZ2ljYWxJbnRl
cnZhbFNpemUsIExheW91dFVuaXQmIHJlc3VsdCkgY29uc3QKK3sKKyAgICBmbG9hdCBtaW5JbnRl
cnZhbFRvcCA9IG1pbkxvZ2ljYWxJbnRlcnZhbFRvcDsKKyAgICBmbG9hdCBtaW5JbnRlcnZhbEhl
aWdodCA9IG1pbkxvZ2ljYWxJbnRlcnZhbFNpemUuaGVpZ2h0KCk7CisgICAgZmxvYXQgbWluSW50
ZXJ2YWxXaWR0aCA9IG1pbkxvZ2ljYWxJbnRlcnZhbFNpemUud2lkdGgoKTsKKworICAgIGNvbnN0
IFJhc3RlclNoYXBlSW50ZXJ2YWxzJiBpbnRlcnZhbHMgPSBwYWRkaW5nSW50ZXJ2YWxzKCk7Cisg
ICAgaWYgKGludGVydmFscy5pc0VtcHR5KCkgfHwgbWluSW50ZXJ2YWxXaWR0aCA+IGludGVydmFs
cy5ib3VuZHMoKS53aWR0aCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBmbG9hdCBt
aW5ZID0gc3RkOjptYXg8ZmxvYXQ+KGludGVydmFscy5ib3VuZHMoKS55KCksIG1pbkludGVydmFs
VG9wKTsKKyAgICBmbG9hdCBtYXhZID0gbWluWSArIG1pbkludGVydmFsSGVpZ2h0OworCisgICAg
aWYgKG1heFkgPiBpbnRlcnZhbHMuYm91bmRzKCkubWF4WSgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICAvLyBGSVhNRTogY29tcGxldGUgdGhpcyBtZXRob2QKKyAgICByZXN1bHQgPSBt
aW5ZOworICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWRlOTgxNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuaApAQCAtMCwwICsxLDgwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAg
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscworICogICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MKKyAqIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisgKiBDT1BZUklH
SFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsCisgKiBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCisgKiBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VECisgKiBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBSYXN0ZXJTaGFwZV9oCisjZGVmaW5lIFJhc3RlclNoYXBlX2gKKwor
I2luY2x1ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1ZGUgIlJlZ2lvbi5oIgorI2luY2x1ZGUgIlNo
YXBlLmgiCisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUmFzdGVyU2hhcGVJbnRlcnZhbHMg
eworcHVibGljOgorICAgIFJhc3RlclNoYXBlSW50ZXJ2YWxzKCkgeyB9CisKKyAgICBJbnRSZWN0
IGJvdW5kcygpIGNvbnN0OworICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0ICB7IHJldHVybiBtX3Jl
Z2lvbi5pc0VtcHR5KCk7IH0KKyAgICB2b2lkIGFkZEludGVydmFsKGludCB5LCBpbnQgeDEsIGlu
dCB4Mik7CisgICAgdm9pZCBnZXRJbnRlcnZhbHMoaW50IHkxLCBpbnQgeTIsIFNlZ21lbnRMaXN0
JikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgUmVnaW9uIG1fcmVnaW9uOworICAgIG11dGFibGUg
T3duUHRyPEludFJlY3Q+IG1fYm91bmRzOyAvLyBDYWNoZWQgdmFsdWUgb2YgbV9yZWdpb24uYm91
bmRzKCkuCit9OworCitjbGFzcyBSYXN0ZXJTaGFwZSA6IHB1YmxpYyBTaGFwZSB7CisgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoUmFzdGVyU2hhcGUpOworcHVibGljOgorICAgIFJhc3RlclNoYXBl
KFBhc3NPd25QdHI8UmFzdGVyU2hhcGVJbnRlcnZhbHM+IGludGVydmFscykKKyAgICAgICAgOiBT
aGFwZSgpCisgICAgICAgICwgbV9pbnRlcnZhbHMoaW50ZXJ2YWxzKQorICAgIHsKKyAgICB9CisK
KyAgICB2aXJ0dWFsIExheW91dFJlY3Qgc2hhcGVNYXJnaW5Mb2dpY2FsQm91bmRpbmdCb3goKSBj
b25zdCBPVkVSUklERSB7IHJldHVybiBzdGF0aWNfY2FzdDxMYXlvdXRSZWN0PihtYXJnaW5JbnRl
cnZhbHMoKS5ib3VuZHMoKSk7IH0KKyAgICB2aXJ0dWFsIExheW91dFJlY3Qgc2hhcGVQYWRkaW5n
TG9naWNhbEJvdW5kaW5nQm94KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
TGF5b3V0UmVjdD4ocGFkZGluZ0ludGVydmFscygpLmJvdW5kcygpKTsgfQorICAgIHZpcnR1YWwg
Ym9vbCBpc0VtcHR5KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9pbnRlcnZhbHMtPmlzRW1w
dHkoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBnZXRFeGNsdWRlZEludGVydmFscyhMYXlvdXRVbml0
IGxvZ2ljYWxUb3AsIExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgU2VnbWVudExpc3QmKSBjb25z
dCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0SW5jbHVkZWRJbnRlcnZhbHMoTGF5b3V0
VW5pdCBsb2dpY2FsVG9wLCBMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIFNlZ21lbnRMaXN0Jikg
Y29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGZpcnN0SW5jbHVkZWRJbnRlcnZhbExv
Z2ljYWxUb3AoTGF5b3V0VW5pdCBtaW5Mb2dpY2FsSW50ZXJ2YWxUb3AsIGNvbnN0IExheW91dFNp
emUmIG1pbkxvZ2ljYWxJbnRlcnZhbFNpemUsIExheW91dFVuaXQmKSBjb25zdCBPVkVSUklERTsK
KworcHJpdmF0ZToKKyAgICBjb25zdCBSYXN0ZXJTaGFwZUludGVydmFscyYgbWFyZ2luSW50ZXJ2
YWxzKCkgY29uc3Q7CisgICAgY29uc3QgUmFzdGVyU2hhcGVJbnRlcnZhbHMmIHBhZGRpbmdJbnRl
cnZhbHMoKSBjb25zdDsKKworICAgIE93blB0cjxSYXN0ZXJTaGFwZUludGVydmFscz4gbV9pbnRl
cnZhbHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBSYXN0ZXJT
aGFwZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCmluZGV4IGI3
OTIwY2MuLjFjOTliOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFw
ZXMvU2hhcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUu
Y3BwCkBAIC0zMSw5ICszMSwxMiBAQAogI2luY2x1ZGUgIlNoYXBlLmgiCiAKICNpbmNsdWRlICJC
YXNpY1NoYXBlRnVuY3Rpb25zLmgiCisjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRl
ICJGbG9hdFNpemUuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUg
Ikxlbmd0aEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIlBvbHlnb25TaGFwZS5oIgorI2luY2x1ZGUg
IlJhc3RlclNoYXBlLmgiCiAjaW5jbHVkZSAiUmVjdGFuZ2xlU2hhcGUuaCIKICNpbmNsdWRlICJX
aW5kUnVsZS5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CkBAIC0xOTEsNCArMTk0LDU1
IEBAIFBhc3NPd25QdHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVTaGFwZShjb25zdCBCYXNpY1NoYXBl
KiBiYXNpY1NoYXBlLCBjb25zdCBMYXlvdXRTCiAgICAgcmV0dXJuIHNoYXBlLnJlbGVhc2UoKTsK
IH0KIAorUGFzc093blB0cjxTaGFwZT4gU2hhcGU6OmNyZWF0ZVNoYXBlKGNvbnN0IFN0eWxlSW1h
Z2UqIHN0eWxlSW1hZ2UsIGZsb2F0IHRocmVzaG9sZCwgY29uc3QgTGF5b3V0U2l6ZSYgbG9naWNh
bEJveFNpemUsIFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBMZW5ndGggbWFyZ2luLCBMZW5ndGgg
cGFkZGluZykKK3sKKyAgICAvLyBGSVhNRTogU2hvdWxkIGNsaXAgc2hhcGUgdG8gbG9naWNhbCBi
b3guCisgICAgVU5VU0VEX1BBUkFNKGxvZ2ljYWxCb3hTaXplKTsKKworICAgIEFTU0VSVChzdHls
ZUltYWdlICYmIHN0eWxlSW1hZ2UtPmlzQ2FjaGVkSW1hZ2UoKSAmJiBzdHlsZUltYWdlLT5jYWNo
ZWRJbWFnZSgpICYmIHN0eWxlSW1hZ2UtPmNhY2hlZEltYWdlKCktPmltYWdlKCkpOworCisgICAg
SW1hZ2UqIGltYWdlID0gc3R5bGVJbWFnZS0+Y2FjaGVkSW1hZ2UoKS0+aW1hZ2UoKTsKKyAgICBH
cmFwaGljc0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3IgaW1hZ2VFeHRyYWN0b3IoaW1hZ2UsIEdy
YXBoaWNzQ29udGV4dDNEOjpIdG1sRG9tTm9uZSwgZmFsc2UsIHRydWUpOworICAgIGludCBpbWFn
ZVdpZHRoID0gc3RhdGljX2Nhc3Q8aW50PihpbWFnZUV4dHJhY3Rvci5pbWFnZVdpZHRoKCkpOwor
ICAgIGludCBpbWFnZUhlaWdodCA9IHN0YXRpY19jYXN0PGludD4oaW1hZ2VFeHRyYWN0b3IuaW1h
Z2VIZWlnaHQoKSk7CisKKyAgICBWZWN0b3I8dWludDhfdD4gYWxwaGFQaXhlbHM7CisgICAgYm9v
bCBwYWNrSW1hZ2VEYXRhT0sgPSBHcmFwaGljc0NvbnRleHQzRDo6cGFja0ltYWdlRGF0YShpbWFn
ZSwgaW1hZ2VFeHRyYWN0b3IuaW1hZ2VQaXhlbERhdGEoKSwKKyAgICAgICAgR3JhcGhpY3NDb250
ZXh0M0Q6OkFMUEhBLAorICAgICAgICBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwK
KyAgICAgICAgZmFsc2UsIC8qIGZsaXBZICovCisgICAgICAgIEdyYXBoaWNzQ29udGV4dDNEOjpB
bHBoYURvTm90aGluZywKKyAgICAgICAgaW1hZ2VFeHRyYWN0b3IuaW1hZ2VTb3VyY2VGb3JtYXQo
KSwKKyAgICAgICAgaW1hZ2VXaWR0aCwKKyAgICAgICAgaW1hZ2VIZWlnaHQsCisgICAgICAgIGlt
YWdlRXh0cmFjdG9yLmltYWdlU291cmNlVW5wYWNrQWxpZ25tZW50KCksCisgICAgICAgIGFscGhh
UGl4ZWxzKTsKKworICAgIE93blB0cjxSYXN0ZXJTaGFwZUludGVydmFscz4gaW50ZXJ2YWxzID0g
YWRvcHRQdHIobmV3IFJhc3RlclNoYXBlSW50ZXJ2YWxzKCkpOworICAgIHVpbnQ4X3QgYWxwaGFQ
aXhlbFRocmVzaG9sZCA9IHRocmVzaG9sZCAqIDI1NTsKKworICAgIGlmIChwYWNrSW1hZ2VEYXRh
T0spIHsKKyAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbWFnZVdpZHRoICog
aW1hZ2VIZWlnaHQpID09IGFscGhhUGl4ZWxzLnNpemUoKSk7CisgICAgICAgIGZvciAoaW50IHkg
PSAwOyB5IDwgaW1hZ2VIZWlnaHQ7IHkrKykgeworICAgICAgICAgICAgaW50IHN0YXJ0WCA9IC0x
OworICAgICAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCBpbWFnZVdpZHRoOyB4KyspIHsKKyAg
ICAgICAgICAgICAgICB1aW50OF90IGFscGhhID0gYWxwaGFQaXhlbHNbeCArIHkgKiBpbWFnZVdp
ZHRoXTsKKyAgICAgICAgICAgICAgICBpZiAoKHN0YXJ0WCA9PSAtMSkgJiYgYWxwaGEgPiBhbHBo
YVBpeGVsVGhyZXNob2xkKSB7CisgICAgICAgICAgICAgICAgICAgIHN0YXJ0WCA9IHg7CisgICAg
ICAgICAgICAgICAgfSBlbHNlIGlmIChzdGFydFggIT0gLTEgJiYgKGFscGhhIDw9IGFscGhhUGl4
ZWxUaHJlc2hvbGQgfHwgeCA9PSBpbWFnZVdpZHRoIC0gMSkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgaW50ZXJ2YWxzLT5hZGRJbnRlcnZhbCh5LCBzdGFydFgsIHgpOworICAgICAgICAgICAgICAg
ICAgICBzdGFydFggPSAtMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBPd25QdHI8UmFzdGVyU2hhcGU+IHJhc3RlclNoYXBlID0gYWRv
cHRQdHIobmV3IFJhc3RlclNoYXBlKGludGVydmFscy5yZWxlYXNlKCkpKTsKKyAgICByYXN0ZXJT
aGFwZS0+bV93cml0aW5nTW9kZSA9IHdyaXRpbmdNb2RlOworICAgIHJhc3RlclNoYXBlLT5tX21h
cmdpbiA9IGZsb2F0VmFsdWVGb3JMZW5ndGgobWFyZ2luLCAwKTsKKyAgICByYXN0ZXJTaGFwZS0+
bV9wYWRkaW5nID0gZmxvYXRWYWx1ZUZvckxlbmd0aChwYWRkaW5nLCAwKTsKKworICAgIHJldHVy
biByYXN0ZXJTaGFwZS5yZWxlYXNlKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuaAppbmRleCAwZDllY2ZkLi5mNzc1ZTVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5oCkBAIC0zMiw2ICszMiw3
IEBACiAKICNpbmNsdWRlICJCYXNpY1NoYXBlcy5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIK
KyNpbmNsdWRlICJTdHlsZUltYWdlLmgiCiAjaW5jbHVkZSAiV3JpdGluZ01vZGUuaCIKICNpbmNs
dWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTYwLDYg
KzYxLDcgQEAgdHlwZWRlZiBWZWN0b3I8TGluZVNlZ21lbnQ+IFNlZ21lbnRMaXN0OwogY2xhc3Mg
U2hhcGUgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPFNoYXBlPiBjcmVhdGVTaGFw
ZShjb25zdCBCYXNpY1NoYXBlKiwgY29uc3QgTGF5b3V0U2l6ZSYgbG9naWNhbEJveFNpemUsIFdy
aXRpbmdNb2RlLCBMZW5ndGggbWFyZ2luLCBMZW5ndGggcGFkZGluZyk7CisgICAgc3RhdGljIFBh
c3NPd25QdHI8U2hhcGU+IGNyZWF0ZVNoYXBlKGNvbnN0IFN0eWxlSW1hZ2UqLCBmbG9hdCB0aHJl
c2hvbGQsIGNvbnN0IExheW91dFNpemUmIGxvZ2ljYWxCb3hTaXplLCBXcml0aW5nTW9kZSwgTGVu
Z3RoIG1hcmdpbiwgTGVuZ3RoIHBhZGRpbmcpOwogCiAgICAgdmlydHVhbCB+U2hhcGUoKSB7IH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUluZm8u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUluZm8uY3BwCmluZGV4
IGUxMTU1ODMuLmJmOTRlNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
aGFwZXMvU2hhcGVJbmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVz
L1NoYXBlSW5mby5jcHAKQEAgLTQ1LDEyICs0NSwyNiBAQCBjb25zdCBTaGFwZSogU2hhcGVJbmZv
PFJlbmRlclR5cGUsIHNoYXBlR2V0dGVyLCBpbnRlcnZhbEdldHRlcj46OmNvbXB1dGVkU2hhcGUo
KQogICAgIGlmIChTaGFwZSogc2hhcGUgPSBtX3NoYXBlLmdldCgpKQogICAgICAgICByZXR1cm4g
c2hhcGU7CiAKLSAgICBTaGFwZVZhbHVlKiBzaGFwZVZhbHVlID0gKG1fcmVuZGVyZXItPnN0eWxl
KCktPipzaGFwZUdldHRlcikoKTsKLSAgICBCYXNpY1NoYXBlKiBzaGFwZSA9IChzaGFwZVZhbHVl
ICYmIHNoYXBlVmFsdWUtPnR5cGUoKSA9PSBTaGFwZVZhbHVlOjpTaGFwZSkgPyBzaGFwZVZhbHVl
LT5zaGFwZSgpIDogMDsKKyAgICBjb25zdCBMYXlvdXRTaXplIGxvZ2ljYWxCb3hTaXplKG1fc2hh
cGVMb2dpY2FsV2lkdGgsIG1fc2hhcGVMb2dpY2FsSGVpZ2h0KTsKKyAgICBXcml0aW5nTW9kZSB3
cml0aW5nTW9kZSA9IG1fcmVuZGVyZXItPnN0eWxlKCktPndyaXRpbmdNb2RlKCk7CisgICAgTGVu
Z3RoIG1hcmdpbiA9IG1fcmVuZGVyZXItPnN0eWxlKCktPnNoYXBlTWFyZ2luKCk7CisgICAgTGVu
Z3RoIHBhZGRpbmcgPSBtX3JlbmRlcmVyLT5zdHlsZSgpLT5zaGFwZVBhZGRpbmcoKTsKKyAgICBj
b25zdCBTaGFwZVZhbHVlKiBzaGFwZVZhbHVlID0gKG1fcmVuZGVyZXItPnN0eWxlKCktPipzaGFw
ZUdldHRlcikoKTsKKyAgICBBU1NFUlQoc2hhcGVWYWx1ZSk7CiAKLSAgICBBU1NFUlQoc2hhcGUp
OworICAgIHN3aXRjaCAoc2hhcGVWYWx1ZS0+dHlwZSgpKSB7CisgICAgY2FzZSBTaGFwZVZhbHVl
OjpTaGFwZToKKyAgICAgICAgQVNTRVJUKHNoYXBlVmFsdWUtPnNoYXBlKCkpOworICAgICAgICBt
X3NoYXBlID0gU2hhcGU6OmNyZWF0ZVNoYXBlKHNoYXBlVmFsdWUtPnNoYXBlKCksIGxvZ2ljYWxC
b3hTaXplLCB3cml0aW5nTW9kZSwgbWFyZ2luLCBwYWRkaW5nKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBTaGFwZVZhbHVlOjpJbWFnZToKKyAgICAgICAgQVNTRVJUKHNoYXBlVmFsdWUtPmlt
YWdlKCkpOworICAgICAgICBtX3NoYXBlID0gU2hhcGU6OmNyZWF0ZVNoYXBlKHNoYXBlVmFsdWUt
PmltYWdlKCksIDAsIGxvZ2ljYWxCb3hTaXplLCB3cml0aW5nTW9kZSwgbWFyZ2luLCBwYWRkaW5n
KTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgfQogCi0gICAgbV9zaGFwZSA9IFNoYXBlOjpjcmVhdGVTaGFwZShzaGFwZSwg
TGF5b3V0U2l6ZShtX3NoYXBlTG9naWNhbFdpZHRoLCBtX3NoYXBlTG9naWNhbEhlaWdodCksIG1f
cmVuZGVyZXItPnN0eWxlKCktPndyaXRpbmdNb2RlKCksIG1fcmVuZGVyZXItPnN0eWxlKCktPnNo
YXBlTWFyZ2luKCksIG1fcmVuZGVyZXItPnN0eWxlKCktPnNoYXBlUGFkZGluZygpKTsKICAgICBB
U1NFUlQobV9zaGFwZSk7CiAgICAgcmV0dXJuIG1fc2hhcGUuZ2V0KCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW5zaWRlSW5mby5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW5zaWRlSW5mby5jcHAKaW5kZXgg
ZDEyOTVkMC4uMWM4ZTExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3No
YXBlcy9TaGFwZUluc2lkZUluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
aGFwZXMvU2hhcGVJbnNpZGVJbmZvLmNwcApAQCAtNDYsMTEgKzQ2LDE3IEBAIExpbmVTZWdtZW50
UmFuZ2U6OkxpbmVTZWdtZW50UmFuZ2UoY29uc3QgSW5saW5lSXRlcmF0b3ImIHN0YXJ0LCBjb25z
dCBJbmxpbmVJdGVyCiBib29sIFNoYXBlSW5zaWRlSW5mbzo6aXNFbmFibGVkRm9yKGNvbnN0IFJl
bmRlckJsb2NrKiByZW5kZXJlcikKIHsKICAgICBTaGFwZVZhbHVlKiBzaGFwZVZhbHVlID0gcmVu
ZGVyZXItPnN0eWxlKCktPnJlc29sdmVkU2hhcGVJbnNpZGUoKTsKLSAgICBpZiAoIXNoYXBlVmFs
dWUgfHwgc2hhcGVWYWx1ZS0+dHlwZSgpICE9IFNoYXBlVmFsdWU6OlNoYXBlKQorICAgIGlmICgh
c2hhcGVWYWx1ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgQmFzaWNTaGFwZSogc2hh
cGUgPSBzaGFwZVZhbHVlLT5zaGFwZSgpOwotICAgIHJldHVybiBzaGFwZSAmJiBzaGFwZS0+dHlw
ZSgpICE9IEJhc2ljU2hhcGU6OkJhc2ljU2hhcGVJbnNldFJlY3RhbmdsZVR5cGU7CisgICAgc3dp
dGNoIChzaGFwZVZhbHVlLT50eXBlKCkpIHsKKyAgICBjYXNlIFNoYXBlVmFsdWU6OlNoYXBlOgor
ICAgICAgICByZXR1cm4gc2hhcGVWYWx1ZS0+c2hhcGUoKSAmJiBzaGFwZVZhbHVlLT5zaGFwZSgp
LT50eXBlKCkgIT0gQmFzaWNTaGFwZTo6QmFzaWNTaGFwZUluc2V0UmVjdGFuZ2xlVHlwZTsKKyAg
ICBjYXNlIFNoYXBlVmFsdWU6OkltYWdlOgorICAgICAgICByZXR1cm4gc2hhcGVWYWx1ZS0+aXNJ
bWFnZVZhbGlkKCk7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
IH0KIAogYm9vbCBTaGFwZUluc2lkZUluZm86OmFkanVzdExvZ2ljYWxMaW5lVG9wKGZsb2F0IG1p
blNlZ21lbnRXaWR0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFw
ZXMvU2hhcGVPdXRzaWRlSW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVz
L1NoYXBlT3V0c2lkZUluZm8uY3BwCmluZGV4IGUxOTJmNjUuLmYxMmVkNzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmNwcApA
QCAtMzgsOCArMzgsMTggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGJvb2wgU2hhcGVPdXRzaWRl
SW5mbzo6aXNFbmFibGVkRm9yKGNvbnN0IFJlbmRlckJveCogYm94KQogewotICAgIFNoYXBlVmFs
dWUqIHZhbHVlID0gYm94LT5zdHlsZSgpLT5zaGFwZU91dHNpZGUoKTsKLSAgICByZXR1cm4gYm94
LT5pc0Zsb2F0aW5nV2l0aFNoYXBlT3V0c2lkZSgpICYmIHZhbHVlLT50eXBlKCkgPT0gU2hhcGVW
YWx1ZTo6U2hhcGUgJiYgdmFsdWUtPnNoYXBlKCk7CisgICAgU2hhcGVWYWx1ZSogc2hhcGVWYWx1
ZSA9IGJveC0+c3R5bGUoKS0+c2hhcGVPdXRzaWRlKCk7CisgICAgaWYgKCFib3gtPmlzRmxvYXRp
bmdXaXRoU2hhcGVPdXRzaWRlKCkgfHwgIXNoYXBlVmFsdWUpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIHN3aXRjaCAoc2hhcGVWYWx1ZS0+dHlwZSgpKSB7CisgICAgY2FzZSBTaGFwZVZh
bHVlOjpTaGFwZToKKyAgICAgICAgcmV0dXJuIHNoYXBlVmFsdWUtPnNoYXBlKCk7CisgICAgY2Fz
ZSBTaGFwZVZhbHVlOjpJbWFnZToKKyAgICAgICAgcmV0dXJuIHNoYXBlVmFsdWUtPmlzSW1hZ2VW
YWxpZCgpOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiB9CiAK
IGJvb2wgU2hhcGVPdXRzaWRlSW5mbzo6Y29tcHV0ZVNlZ21lbnRzRm9yTGluZShMYXlvdXRVbml0
IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUhlaWdodCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TaGFwZVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU2hhcGVWYWx1ZS5oCmluZGV4IDY3NGFlZWIuLmE0N2VkMGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFwZVZhbHVlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYXBlVmFsdWUuaApAQCAtMzEsNiArMzEsNyBAQAog
I2RlZmluZSBTaGFwZVZhbHVlX2gKIAogI2luY2x1ZGUgIkJhc2ljU2hhcGVzLmgiCisjaW5jbHVk
ZSAiQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRlICJTdHlsZUltYWdlLmgiCiAjaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KIApAQCAtNjIsMTIgKzYzLDE2IEBAIHB1YmxpYzoKIAogICAgIFNoYXBl
VmFsdWVUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KICAgICBCYXNpY1NoYXBl
KiBzaGFwZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcGUuZ2V0KCk7IH0KKwogICAgIFN0eWxlSW1h
Z2UqIGltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZS5nZXQoKTsgfQorICAgIGJvb2wgaXNJ
bWFnZVZhbGlkKCkgY29uc3QgeyByZXR1cm4gaW1hZ2UoKSAmJiBpbWFnZSgpLT5jYWNoZWRJbWFn
ZSgpICYmIGltYWdlKCktPmNhY2hlZEltYWdlKCktPmhhc0ltYWdlKCk7IH0KICAgICB2b2lkIHNl
dEltYWdlKFBhc3NSZWZQdHI8U3R5bGVJbWFnZT4gaW1hZ2UpCiAgICAgeworICAgICAgICBBU1NF
UlQodHlwZSgpID09IEltYWdlKTsKICAgICAgICAgaWYgKG1faW1hZ2UgIT0gaW1hZ2UpCiAgICAg
ICAgICAgICBtX2ltYWdlID0gaW1hZ2U7CiAgICAgfQorCiAgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFNoYXBlVmFsdWUmIG90aGVyKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gb3RoZXIudHlw
ZSgpOyB9CiAKIHByaXZhdGU6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>204463</attachid>
            <date>2013-06-12 11:23:52 -0700</date>
            <delta_ts>2013-06-12 15:03:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>tmp.patch</filename>
            <type>text/plain</type>
            <size>38779</size>
            <attacher name="Hans Muller">giles_joplin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0NWJkYmU4MC4uYmY1ZGUzMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEzLTA2
LTEwICBIYW5zIE11bGxlciAgPGhtdWxsZXJAYWRvYmUuY29tPgorCisgICAgICAgIFtDU1MgRXhj
bHVzaW9uc10gTWluaW1hbCBzdXBwb3J0IGZvciB1c2luZyBhbiBpbWFnZSB0byBkZWZpbmUgYSBz
aGFwZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE2
NjQzCisKKyAgICAgICAgVHdvIHRlc3RzIHRvIHZlcmlmeSB0aGF0IHRoZSBpbml0aWFsIGltcGxl
bWVudGF0aW9uIG9mIHNoYXBlIHZhbHVlZCBpbWFnZXMgaXMgd29ya2luZworICAgICAgICBmb3Ig
c2hhcGUtaW5zaWRlLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtaW1hZ2Ut
MDAxLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXhjbHVzaW9ucy9zaGFw
ZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAwMS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1pbWFnZS0wMDItZXhwZWN0
ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9z
aGFwZS1pbnNpZGUtaW1hZ2UtMDAyLmh0bWw6IEFkZGVkLgorCiAyMDEzLTA2LTEyICBLd2FuZyBZ
dWwgU2VvICA8c2t5dWxAY29tcGFueTEwMC5uZXQ+CiAKICAgICAgICAgVW5yZXZpZXdlZCBnYXJk
ZW5pbmcuIFVuc2tpcHBpbmcgcGFzc2luZyB0ZXN0cy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAwMS1leHBl
Y3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFw
ZS1pbnNpZGUtaW1hZ2UtMDAxLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uZmRiYWE3MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAwMS1leHBlY3RlZC5o
dG1sCkBAIC0wLDAgKzEsMjQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxz
dHlsZT4KKyAgICAjaW1hZ2Utc2hhcGUgeworICAgICAgICBib3JkZXI6IHNvbGlkIGJsYWNrIDFw
eDsKKyAgICAgICAgZm9udDogMTJweC8xIEFoZW0sIHNhbnMtc2VyaWY7CisgICAgICAgIHBhZGRp
bmc6IDRweDsKKyAgICAgICAgY29sb3I6IGdyZWVuOworICAgICAgICB3aWR0aDogMjRweDsKKyAg
ICAgICAgaGVpZ2h0OiAyNHB4OworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImRhdGE6
aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZ0NBWUFBQUJ6
ZW5yMEFBQUFTa2xFUVZSWUNlM1hJUTRBTUFoRDBYWGgvbGZ1TWtlQ0pqVWZoU3Q1WUpEdGs2eWJE
UC9aREZCakJkTHVVZGpxbWF3QUFRUVFRQUFCQkJCQUFBRUU0Z0xpTit4ZlNxS1AzOEFEdVFNSk82
TE5icjRBQUFBQVNVVk9SSzVDWUlJPSIpOworICAgICAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8t
cmVwZWF0OworICAgIH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPHAgaWQ9ImluZm9y
bWF0aXZlLXRleHQiPgorICAgICAgVGhpcyB0ZXN0IHJlcXVpcmVzIHRoZSBBaGVtIGZvbnQuIEl0
IHVzZXMgYSAzMngzMiBQTkcgaW1hZ2Ugd2l0aCBhIDI0eDI0IHJlZCBzcXVhcmUgaW4gdGhlIGNl
bnRlcgorICAgICAgdG8gZGVmaW5lIGEgc2hhcGUtaW5zaWRlLiBUaGUgY29udGVudCBzaG91bGQg
anVzdCBjb3ZlciB0aGUgc2hhcGUgd2l0aCBzb2xpZCBncmVlbi48L3A+CisKKyAgPGRpdiBpZD0i
aW1hZ2Utc2hhcGUiPlhYPGJyLz5YWDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUt
aW1hZ2UtMDAxLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRl
L3NoYXBlLWluc2lkZS1pbWFnZS0wMDEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi40NmVjN2IxMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXhj
bHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAwMS5odG1sCkBAIC0wLDAg
KzEsMjUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KKyAgICAj
aW1hZ2Utc2hhcGUgeworICAgICAgICBib3JkZXI6IHNvbGlkIGJsYWNrIDFweDsKKyAgICAgICAg
Zm9udDogMTJweC8xIEFoZW0sIHNhbnMtc2VyaWY7CisgICAgICAgIGNvbG9yOiBncmVlbjsKKyAg
ICAgICAgd2lkdGg6IDMycHg7CisgICAgICAgIGhlaWdodDogMzJweDsKKyAgICAgICAgLXdlYmtp
dC1zaGFwZS1pbnNpZGU6IHVybCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFB
QU5TVWhFVWdBQUFDQUFBQUFnQ0FZQUFBQnplbnIwQUFBQVNrbEVRVlJZQ2UzWElRNEFNQWhEMFhY
aC9sZnVNa2VDSmpVZmhTdDVZSkR0azZ5YkRQL1pERkJqQmRMdVVkanFtYXdBQVFRUVFBQUJCQkJB
QUFFRTRnTGlOK3hmU3FLUDM4QUR1UU1KTzZMTmJyNEFBQUFBU1VWT1JLNUNZSUk9Iik7CisgICAg
ICAgIC13ZWJraXQtc2hhcGUtaW1hZ2UtdGhyZXNob2xkOiAwOworICAgICAgICBiYWNrZ3JvdW5k
LWltYWdlOiB1cmwoImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVn
QUFBQ0FBQUFBZ0NBWUFBQUJ6ZW5yMEFBQUFTa2xFUVZSWUNlM1hJUTRBTUFoRDBYWGgvbGZ1TWtl
Q0pqVWZoU3Q1WUpEdGs2eWJEUC9aREZCakJkTHVVZGpxbWF3QUFRUVFRQUFCQkJCQUFBRUU0Z0xp
Tit4ZlNxS1AzOEFEdVFNSk82TE5icjRBQUFBQVNVVk9SSzVDWUlJPSIpOworICAgICAgICBiYWNr
Z3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OworICAgIH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9k
eT4KKyAgPHAgaWQ9ImluZm9ybWF0aXZlLXRleHQiPgorICAgICAgVGhpcyB0ZXN0IHJlcXVpcmVz
IHRoZSBBaGVtIGZvbnQuIEl0IHVzZXMgYSAzMngzMiBQTkcgaW1hZ2Ugd2l0aCBhIDI0eDI0IHJl
ZCBzcXVhcmUgaW4gdGhlIGNlbnRlcgorICAgICAgdG8gZGVmaW5lIGEgc2hhcGUtaW5zaWRlLiBU
aGUgY29udGVudCBzaG91bGQganVzdCBjb3ZlciB0aGUgc2hhcGUgd2l0aCBzb2xpZCBncmVlbi48
L3A+CisKKyAgPGRpdiBpZD0iaW1hZ2Utc2hhcGUiPlhYIFhYPC9kaXY+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRl
L3NoYXBlLWluc2lkZS1pbWFnZS0wMDItZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
ZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAwMi1leHBlY3RlZC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhNTNmZTgKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBl
LWluc2lkZS1pbWFnZS0wMDItZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDIxIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+CisgICAgI2ltYWdlLXNoYXBlIHsKKyAg
ICAgICAgZm9udDogMTJweC8xIEFoZW0sIHNhbnMtc2VyaWY7CisgICAgICAgIGNvbG9yOiBncmVl
bjsKKyAgICAgICAgd2lkdGg6IDI0cHg7CisgICAgICAgIGhlaWdodDogMjRweDsKKyAgICAgICAg
YmFja2dyb3VuZC1pbWFnZTogdXJsKCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29B
QUFBTlNVaEVVZ0FBQUNBQUFBQWdDQVlBQUFCemVucjBBQUFBUkVsRVFWUllDZTNYc1EwQUlBZ0VR
SEgvblY4bjBBcHRqdENSRUhJMFVCbGpaMk1rZGVvK1Q4VVhOUU1RSUVDQUFBRUNCQWdRSUZCSjcx
dHdPKzJ0Z0FDQjd3SUxvSThIT2FPbXpGc0FBQUFBU1VWT1JLNUNZSUk9Iik7CisgICAgICAgIGJh
Y2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CisgICAgfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxi
b2R5PgorICA8cCBpZD0iaW5mb3JtYXRpdmUtdGV4dCI+CisgICAgICBUaGlzIHRlc3QgcmVxdWly
ZXMgdGhlIEFoZW0gZm9udC4gSXQgdXNlcyBhIDI0eDI0IHNxdWFyZSBQTkcgaW1hZ2Ugd2hlcmUg
YWxsIHBpeGVscyBhcmUgcmVkLAorICAgICAgdG8gZGVmaW5lIGEgc2hhcGUtaW5zaWRlLiBUaGUg
Y29udGVudCBzaG91bGQganVzdCBjb3ZlciB0aGUgc2hhcGUgd2l0aCBzb2xpZCBncmVlbi48L3A+
CisgIDxkaXYgaWQ9ImltYWdlLXNoYXBlIj5YWDxici8+WFg8L2Rpdj4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUv
c2hhcGUtaW5zaWRlLWltYWdlLTAwMi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25z
L3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtaW1hZ2UtMDAyLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uMDc5ODRlMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAwMi5o
dG1sCkBAIC0wLDAgKzEsMjQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxz
dHlsZT4KKyAgICAjaW1hZ2Utc2hhcGUgeworICAgICAgICBmb250OiAxMnB4LzEgQWhlbSwgc2Fu
cy1zZXJpZjsKKyAgICAgICAgY29sb3I6IGdyZWVuOworICAgICAgICB3aWR0aDogMjRweDsKKyAg
ICAgICAgaGVpZ2h0OiAyNHB4OworICAgICAgICAtd2Via2l0LXNoYXBlLWluc2lkZTogdXJsKCJk
YXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWdDQVlB
QUFCemVucjBBQUFBUkVsRVFWUllDZTNYc1EwQUlBZ0VRSEgvblY4bjBBcHRqdENSRUhJMFVCbGpa
Mk1rZGVvK1Q4VVhOUU1RSUVDQUFBRUNCQWdRSUZCSjcxdHdPKzJ0Z0FDQjd3SUxvSThIT2FPbXpG
c0FBQUFBU1VWT1JLNUNZSUk9Iik7CisgICAgICAgIC13ZWJraXQtc2hhcGUtaW1hZ2UtdGhyZXNo
b2xkOiAwOworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImRhdGE6aW1hZ2UvcG5nO2Jh
c2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZ0NBWUFBQUJ6ZW5yMEFBQUFSRWxF
UVZSWUNlM1hzUTBBSUFnRVFISC9uVjhuMEFwdGp0Q1JFSEkwVUJsaloyTWtkZW8rVDhVWE5RTVFJ
RUNBQUFFQ0JBZ1FJRkJKNzF0d08rMnRnQUNCN3dJTG9JOEhPYU9tekZzQUFBQUFTVVZPUks1Q1lJ
ST0iKTsKKyAgICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKKyAgICB9Cis8L3N0
eWxlPgorPC9oZWFkPgorPGJvZHk+CisgIDxwIGlkPSJpbmZvcm1hdGl2ZS10ZXh0Ij4KKyAgICAg
IFRoaXMgdGVzdCByZXF1aXJlcyB0aGUgQWhlbSBmb250LiBJdCB1c2VzIGEgMjR4MjQgc3F1YXJl
IFBORyBpbWFnZSB3aGVyZSBhbGwgcGl4ZWxzIGFyZSByZWQsCisgICAgICB0byBkZWZpbmUgYSBz
aGFwZS1pbnNpZGUuIFRoZSBjb250ZW50IHNob3VsZCBqdXN0IGNvdmVyIHRoZSBzaGFwZSB3aXRo
IHNvbGlkIGdyZWVuLjwvcD4KKworICA8ZGl2IGlkPSJpbWFnZS1zaGFwZSI+WFggWFg8L2Rpdj4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNzg1YTZhNy4uNWNlMjM5
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTIyMDksNiArMjIwOSw3IEBAIHNldChXZWJDb3Jl
X1NPVVJDRVMKICAgICByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFVuZGVyT3Zlci5jcHAK
IAogICAgIHJlbmRlcmluZy9zaGFwZXMvUG9seWdvblNoYXBlLmNwcAorICAgIHJlbmRlcmluZy9z
aGFwZXMvUmFzdGVyU2hhcGUuY3BwCiAgICAgcmVuZGVyaW5nL3NoYXBlcy9SZWN0YW5nbGVTaGFw
ZS5jcHAKICAgICByZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcAogICAgIHJlbmRlcmluZy9zaGFw
ZXMvU2hhcGVJbmZvLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDI4MzhmMmUuLjk4NGE1NTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw1OCBAQAorMjAxMy0wNi0xMCAgSGFucyBNdWxsZXIgIDxobXVsbGVyQGFk
b2JlLmNvbT4KKworICAgICAgICBbQ1NTIEV4Y2x1c2lvbnNdIE1pbmltYWwgc3VwcG9ydCBmb3Ig
dXNpbmcgYW4gaW1hZ2UgdG8gZGVmaW5lIGEgc2hhcGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNjY0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgYSBmaXJzdCBzbWFsbCBzdGVwIHRvd2Fy
ZHMgc3VwcG9ydGluZyBDU1Mgc2hhcGVzIGRlZmluZWQgYnkgYW4KKyAgICAgICAgaW1hZ2UgVVJM
IGFuZCBhIGFscGhhIGNoYW5uZWwgdGhyZXNob2xkLiBUbyBrZWVwIHRoZSBwYXRjaCBhcyBzbWFs
bCBhcworICAgICAgICBwb3NzaWJsZSwgdGhlcmUgYXJlIG1hbnkgbGltaXRhdGlvbnMgYW5kIHJl
bWFpbmluZyB3b3JrIGl0ZW1zLiAgU2VlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMTYzNDggZm9yIHRoZSBjdXJyZW50IGxpc3QuCisKKyAgICAgICAg
VGVzdDogZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtaW1hZ2UtMDAx
Lmh0bWwKKyAgICAgICAgVGVzdDogZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1p
bnNpZGUtaW1hZ2UtMDAyLmh0bWwKKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAg
ICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAg
KiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2su
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmltYWdlQ2hhbmdlZCk6IFdoZW4g
dGhlIGltYWdlIGhhcyBmaW5pc2hlZCBsb2FkaW5nLCByZXF1ZXN0IGEgbGF5b3V0LgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJP
YmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpzZXRTdHlsZSk6IEFk
ZCBub3RpZnkgY2xpZW50cyBmb3Igc2hhcGUgaW1hZ2VzLgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyT2JqZWN0Ojp1cGRhdGVTaGFwZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OnJlbW92ZVNo
YXBlSW1hZ2VDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjphcmVuYURl
bGV0ZSk6IFJlbW92ZSBub3RpZnkgY2xpZW50cyBmb3Igc2hhcGUgaW1hZ2VzLgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1Jh
c3RlclNoYXBlLmNwcDogQWRkZWQuIEEgU2hhcGUgZGVmaW5lZCBieSB0aHJlc2hvbGRpbmcgYW4g
aW1hZ2UncyBhbHBoYSBjaGFubmVsLgorICAgICAgICAoV2ViQ29yZTo6UmFzdGVyU2hhcGVJbnRl
cnZhbHM6OmJvdW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpSYXN0ZXJTaGFwZUludGVydmFsczo6
YWRkSW50ZXJ2YWwpOiBBZGQgYSBzaW5nbGUgcnVuIHRvIHRoZSBzaGFwZS4KKyAgICAgICAgKFdl
YkNvcmU6OmFsaWduZWRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJhc3RlclNoYXBlSW50ZXJ2
YWxzOjpnZXRJbnRlcnZhbHMpOiBSZXR1cm4gdGhlIHNoYXBlJ3MgcnVucyB0aGF0IGZhbGwgd2l0
aGluIGEgaG9yaXpvbmFsIGJveC4KKyAgICAgICAgKFdlYkNvcmU6OlJhc3RlclNoYXBlOjptYXJn
aW5JbnRlcnZhbHMpOiBJbnRlcm5hbCByZXByZXNlbnRhdGlvbiBvZiB0aGUgc2hhcGUgd2l0aCBz
aGFwZS1tYXJnaW4gZmFjdG9yZWQgaW4uICBDdXJyZW50bHkgb25seSBhIHN0dWIuCisgICAgICAg
IChXZWJDb3JlOjpSYXN0ZXJTaGFwZTo6cGFkZGluZ0ludGVydmFscyk6IEludGVybmFsIHJlcHJl
c2VudGF0aW9uIG9mIHRoZSBzaGFwZSB3aXRoIHNoYXBlLXBhZGRpbmcgZmFjdG9yZWQgaW4uICBD
dXJyZW50bHkgb25seSBhIHN0dWIuCisgICAgICAgIChXZWJDb3JlOjpSYXN0ZXJTaGFwZTo6Z2V0
RXhjbHVkZWRJbnRlcnZhbHMpOgorICAgICAgICAoV2ViQ29yZTo6UmFzdGVyU2hhcGU6OmdldElu
Y2x1ZGVkSW50ZXJ2YWxzKToKKyAgICAgICAgKFdlYkNvcmU6OlJhc3RlclNoYXBlOjpmaXJzdElu
Y2x1ZGVkSW50ZXJ2YWxMb2dpY2FsVG9wKToKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1Jh
c3RlclNoYXBlLmg6CisgICAgICAgIChXZWJDb3JlOjpSYXN0ZXJTaGFwZUludGVydmFsczo6UmFz
dGVyU2hhcGVJbnRlcnZhbHMpOiBJbnRlcm5hbCBydW4gbGVuZ3RoIGVuY29kZWQgcmVwcmVzZW50
YXRpb24gb2YgYSBSYXN0ZXJTaGFwZS4KKyAgICAgICAgKFdlYkNvcmU6OlJhc3RlclNoYXBlSW50
ZXJ2YWxzOjppc0VtcHR5KToKKyAgICAgICAgKFdlYkNvcmU6OlJhc3RlclNoYXBlOjpSYXN0ZXJT
aGFwZSk6CisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFwZTo6Y3JlYXRlU2hhcGUpOiBTdXBwb3J0IGZvciBjcmVhdGluZyBhIFNoYXBl
IGJhc2VkIG9uIGEgUmFzdGVyU2hhcGVJbnRlcnZhbHMgb2JqZWN0LgorICAgICAgICAqIHJlbmRl
cmluZy9zaGFwZXMvU2hhcGUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW5m
by5jcHA6CisgICAgICAgIChXZWJDb3JlOjo6OmNvbXB1dGVkU2hhcGUpOiBBZGRlZCBzdXBwb3J0
IGZvciB0aGUgSW1hZ2UgU2hhcGVWYWx1ZSB0eXBlLgorICAgICAgICAqIHJlbmRlcmluZy9zaGFw
ZXMvU2hhcGVJbnNpZGVJbmZvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXBlSW5zaWRlSW5m
bzo6aXNFbmFibGVkRm9yKTogQWRkZWQgc3VwcG9ydCBmb3IgdGhlIEltYWdlIFNoYXBlVmFsdWUg
dHlwZS4KKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcGVPdXRzaWRlSW5mbzo6aXNFbmFibGVkRm9yKTogQWRkZWQg
c3VwcG9ydCBmb3IgdGhlIEltYWdlIFNoYXBlVmFsdWUgdHlwZS4KKyAgICAgICAgKiByZW5kZXJp
bmcvc3R5bGUvU2hhcGVWYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGVWYWx1ZTo6aXNJ
bWFnZVZhbGlkKTogVHJ1ZSBpZiB0aGUgc2hhcGUncyBpbWFnZSBpcyByZWFkeSB0byBiZSBiZSBw
cm9jZXNzZWQuCisKIDIwMTMtMDYtMTIgIENocmlzdG9waGUgRHVtZXogIDxjaC5kdW1lekBzaXNh
LnNhbXN1bmcuY29tPgogCiAgICAgICAgIFN1cHBvcnQgbGF0ZXN0IFdlYiBJREwgaW5kZXhlZCBw
cm9wZXJ0eSBnZXR0ZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA3OGJkNjE4
Li40MDMzYWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTQ2MjEsNiArNDYy
MSw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3NoYXBlcy9Qb2x5Z29uU2hhcGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hh
cGVzL1BvbHlnb25TaGFwZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jh
c3RlclNoYXBlLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJT
aGFwZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1JlY3RhbmdsZVNoYXBl
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SZWN0YW5nbGVTaGFwZS5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcCBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnBy
aQppbmRleCAwN2JhOGJkLi4wZDk0NTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJn
ZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTEyMzksNiArMTIzOSw3
IEBAIFNPVVJDRVMgKz0gXAogICAgIHJlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcCBcCiAgICAg
cmVuZGVyaW5nL1Njcm9sbEJlaGF2aW9yLmNwcCBcCiAgICAgcmVuZGVyaW5nL3NoYXBlcy9Qb2x5
Z29uU2hhcGUuY3BwIFwKKyAgICByZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNwcCBcCiAg
ICAgcmVuZGVyaW5nL3NoYXBlcy9SZWN0YW5nbGVTaGFwZS5jcHAgXAogICAgIHJlbmRlcmluZy9z
aGFwZXMvU2hhcGUuY3BwIFwKICAgICByZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW5mby5jcHAgXApA
QCAtMjUwNyw2ICsyNTA4LDcgQEAgSEVBREVSUyArPSBcCiAgICAgcmVuZGVyaW5nL1Jvb3RJbmxp
bmVCb3guaCBcCiAgICAgcmVuZGVyaW5nL1Njcm9sbEJlaGF2aW9yLmggXAogICAgIHJlbmRlcmlu
Zy9zaGFwZXMvUG9seWdvblNoYXBlLmggXAorICAgIHJlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hh
cGUuaCBcCiAgICAgcmVuZGVyaW5nL3NoYXBlcy9SZWN0YW5nbGVTaGFwZS5oIFwKICAgICByZW5k
ZXJpbmcvc2hhcGVzL1NoYXBlLmggXAogICAgIHJlbmRlcmluZy9zaGFwZXMvU2hhcGVJbmZvLmgg
XApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKaW5k
ZXggNTVhMzcwNC4uYjQzZmQ4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3hwcm9qL1dlYkNvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHBy
b2ovV2ViQ29yZS52Y3hwcm9qCkBAIC02MzAyLDYgKzYzMDIsNyBAQAogICAgICAgPEV4Y2x1ZGVk
RnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJv
ZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgIDwvQ2xDb21waWxl
PgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXHNoYXBlc1xQb2x5Z29uU2hh
cGUuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXHNoYXBlc1xS
YXN0ZXJTaGFwZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdc
c2hhcGVzXFJlY3RhbmdsZVNoYXBlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHJlbmRlcmluZ1xzaGFwZXNcU2hhcGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccmVuZGVyaW5nXHNoYXBlc1xTaGFwZUluc2lkZUluZm8uY3BwIiAvPgpAQCAtMTIxOTQsNiAr
MTIxOTUsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXFJlbmRlclNs
aWRlci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXFJlbmRlclNu
YXBzaG90dGVkUGx1Z0luLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJp
bmdcc2hhcGVzXFBvbHlnb25TaGFwZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cmVuZGVyaW5nXHNoYXBlc1xSYXN0ZXJTaGFwZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5ccmVuZGVyaW5nXHNoYXBlc1xSZWN0YW5nbGVTaGFwZS5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXHNoYXBlc1xTaGFwZS5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXHNoYXBlc1xTaGFwZUluc2lkZUluZm8uaCIgLz4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA0YzQ4N2VhLi5mNDcyZjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xODM1LDYgKzE4MzUsOCBAQAogCQk2RTY3RDJBNjEy
ODBFOEE0MDA4NzU4RjcgLyogRXh0ZW5zaW9uczNET3BlbkdMLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNjdEMkE0MTI4MEU4QTQwMDg3NThGNyAv
KiBFeHRlbnNpb25zM0RPcGVuR0wuY3BwICovOyB9OwogCQk2RTY3RDJBNzEyODBFOEE0MDA4NzU4
RjcgLyogRXh0ZW5zaW9uczNET3BlbkdMLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA2RTY3RDJBNTEyODBFOEE0MDA4NzU4RjcgLyogRXh0ZW5zaW9uczNE
T3BlbkdMLmggKi87IH07CiAJCTZFNjdEMkE5MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25z
M0QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNjdE
MkE4MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25zM0QuaCAqLzsgfTsKKwkJNkU4NEU5RTAx
NzY2OEJFRTAwODE1QjY4IC8qIFJhc3RlclNoYXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFODRFOURFMTc2NjhCQUQwMDgxNUI2OCAvKiBSYXN0
ZXJTaGFwZS5jcHAgKi87IH07CisJCTZFODRFOUUxMTc2NjhCRjEwMDgxNUI2OCAvKiBSYXN0ZXJT
aGFwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU4
NEU5REYxNzY2OEJBRDAwODE1QjY4IC8qIFJhc3RlclNoYXBlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNkVCQzVFQUYxMzhCNTBGMjAwQTBDRjhB
IC8qIEpTRmxvYXQ2NEFycmF5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDZFQkM1RUFEMTM4QjUwRjIwMEEwQ0Y4QSAvKiBKU0Zsb2F0NjRBcnJheS5j
cHAgKi87IH07CiAJCTZFQkM1RUIwMTM4QjUwRjIwMEEwQ0Y4QSAvKiBKU0Zsb2F0NjRBcnJheS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkVCQzVFQUUx
MzhCNTBGMjAwQTBDRjhBIC8qIEpTRmxvYXQ2NEFycmF5LmggKi87IH07CiAJCTZFQkYwRTQ4MTJB
ODkyNjEwMERCMTcwOSAvKiBPRVNUZXh0dXJlRmxvYXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkVCRjBFNDUxMkE4OTI2MTAwREIxNzA5IC8qIE9F
U1RleHR1cmVGbG9hdC5jcHAgKi87IH07CkBAIC04MjI4LDYgKzgyMzAsOCBAQAogCQk2RTY3RDJB
NDEyODBFOEE0MDA4NzU4RjcgLyogRXh0ZW5zaW9uczNET3BlbkdMLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV4dGVuc2lvbnMzRE9wZW5HTC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFNjdEMkE1MTI4MEU4QTQwMDg3NThGNyAvKiBFeHRlbnNp
b25zM0RPcGVuR0wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXh0ZW5zaW9u
czNET3BlbkdMLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFNjdEMkE4MTI4MEU4
QkQwMDg3NThGNyAvKiBFeHRlbnNpb25zM0QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRXh0ZW5zaW9uczNELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZFODRF
OURFMTc2NjhCQUQwMDgxNUI2OCAvKiBSYXN0ZXJTaGFwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSYXN0ZXJTaGFwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTZFODRFOURGMTc2NjhCQUQwMDgxNUI2OCAvKiBSYXN0ZXJTaGFwZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSYXN0ZXJTaGFwZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk2RUJDNUQ4MDEzOEI0QzRFMDBBMENGOEEgLyogRmxvYXQ2NEFycmF5
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBGbG9hdDY0QXJyYXkuaWRsOyBwYXRoID0gY2Fu
dmFzL0Zsb2F0NjRBcnJheS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFQkM1
RUFEMTM4QjUwRjIwMEEwQ0Y4QSAvKiBKU0Zsb2F0NjRBcnJheS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0Zsb2F0NjRBcnJheS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTZFQkM1RUFFMTM4QjUwRjIwMEEwQ0Y4QSAvKiBKU0Zsb2F0NjRBcnJh
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0Zsb2F0NjRBcnJheS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjA1NDQsNiArMjA1NDgsOCBAQAogCQkJY2hp
bGRyZW4gPSAoCiAJCQkJRkQwOEE4N0ExNzVEMzkyNjAwMkNEMzYwIC8qIFBvbHlnb25TaGFwZS5j
cHAgKi8sCiAJCQkJRkQwOEE4N0IxNzVEMzkyNjAwMkNEMzYwIC8qIFBvbHlnb25TaGFwZS5oICov
LAorCQkJCTZFODRFOURFMTc2NjhCQUQwMDgxNUI2OCAvKiBSYXN0ZXJTaGFwZS5jcHAgKi8sCisJ
CQkJNkU4NEU5REYxNzY2OEJBRDAwODE1QjY4IC8qIFJhc3RlclNoYXBlLmggKi8sCiAJCQkJRkQw
OEE4N0MxNzVEMzkyNjAwMkNEMzYwIC8qIFJlY3RhbmdsZVNoYXBlLmNwcCAqLywKIAkJCQlGRDA4
QTg3RDE3NUQzOTI2MDAyQ0QzNjAgLyogUmVjdGFuZ2xlU2hhcGUuaCAqLywKIAkJCQlGRDA4QTg3
RTE3NUQzOTI2MDAyQ0QzNjAgLyogU2hhcGUuY3BwICovLApAQCAtMjA4NjQsNiArMjA4NzAsNyBA
QAogCQkJZmlsZXMgPSAoCiAJCQkJRkUxMTVGQUIxNjc5ODhDRDAwMjQ5MTM0IC8qIEFic3RyYWN0
RGF0YWJhc2VTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFNEFBREVFMTZEMkMzNzQwMDAy
NkZGQyAvKiBBYnN0cmFjdFNRTFN0YXRlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkU4NEU5
RTExNzY2OEJGMTAwODE1QjY4IC8qIFJhc3RlclNoYXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlG
RTRBQURFRjE2RDJDMzc0MDAwMjZGRkMgLyogQWJzdHJhY3RTUUxTdGF0ZW1lbnRCYWNrZW5kLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0MUUxQjFEMTBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RX
b3JrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5QTgxMjJFMEZCQjlDMUQwMDUxMDI5MyAvKiBB
Y2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmggaW4gSGVhZGVycyAqLywKQEAgLTI2OTU1LDYgKzI2
OTYyLDcgQEAKIAkJCQlCRTZERjcxMTE3MUNBMkRBMDBERDUyQjggLyogSlNBdWRpb1RyYWNrQ3Vz
dG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJFNkRGNzEzMTcxQ0EyREEwMERENTJCOCAvKiBK
U0F1ZGlvVHJhY2tMaXN0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZCNzE5QzQwMTcy
MzhDQUUwMDIyREUzNCAvKiBXZWJLaXRDU1NNYXRGdW5jdGlvblZhbHVlLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTZFODRFOUUwMTc2NjhCRUUwMDgxNUI2OCAvKiBSYXN0ZXJTaGFwZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4
IGU3ZDdkM2QuLjY5YWQyMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2Nr
LmNwcApAQCAtMTQzNSw2ICsxNDM1LDIxIEBAIHZvaWQgUmVuZGVyQmxvY2s6OmxheW91dCgpCiB9
CiAKICNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKK3ZvaWQgUmVuZGVyQmxvY2s6OmltYWdlQ2hhbmdl
ZChXcmFwcGVkSW1hZ2VQdHIgaW1hZ2UsIGNvbnN0IEludFJlY3QqKQoreworICAgIFJlbmRlckJv
eDo6aW1hZ2VDaGFuZ2VkKGltYWdlKTsKKworICAgIGlmICghcGFyZW50KCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIFNoYXBlVmFsdWUqIHNoYXBlVmFsdWUgPSBzdHlsZSgpLT5zaGFwZUluc2lk
ZSgpOworICAgIGlmIChzaGFwZVZhbHVlICYmIHNoYXBlVmFsdWUtPmltYWdlKCkgJiYgc2hhcGVW
YWx1ZS0+aW1hZ2UoKS0+ZGF0YSgpID09IGltYWdlKSB7CisgICAgICAgIFNoYXBlSW5zaWRlSW5m
byogc2hhcGVJbnNpZGVJbmZvID0gZW5zdXJlU2hhcGVJbnNpZGVJbmZvKCk7CisgICAgICAgIHNo
YXBlSW5zaWRlSW5mby0+ZGlydHlTaGFwZVNpemUoKTsKKyAgICAgICAgbWFya1NoYXBlSW5zaWRl
RGVzY2VuZGFudHNGb3JMYXlvdXQoKTsKKyAgICB9Cit9CisKIHZvaWQgUmVuZGVyQmxvY2s6OnVw
ZGF0ZVNoYXBlSW5zaWRlSW5mb0FmdGVyU3R5bGVDaGFuZ2UoY29uc3QgU2hhcGVWYWx1ZSogc2hh
cGVJbnNpZGUsIGNvbnN0IFNoYXBlVmFsdWUqIG9sZFNoYXBlSW5zaWRlKQogewogICAgIC8vIEZJ
WE1FOiBBIGZ1dHVyZSBvcHRpbWl6YXRpb24gd291bGQgZG8gYSBkZWVwIGNvbXBhcmlzb24gZm9y
IGVxdWFsaXR5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAppbmRleCBiZDEw
Yzk4Li4zZmZhN2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaApAQCAt
NDY4LDYgKzQ2OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG1hcmtTaGFwZUluc2lkZURlc2NlbmRh
bnRzRm9yTGF5b3V0KCk7CiAgICAgU2hhcGVJbnNpZGVJbmZvKiBsYXlvdXRTaGFwZUluc2lkZUlu
Zm8oKSBjb25zdDsKICAgICBib29sIGFsbG93c1NoYXBlSW5zaWRlSW5mb1NoYXJpbmcoKSBjb25z
dCB7IHJldHVybiAhaXNJbmxpbmUoKSAmJiAhaXNGbG9hdGluZygpOyB9CisgICAgdmlydHVhbCB2
b2lkIGltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIsIGNvbnN0IEludFJlY3QqID0gMCkgT1ZF
UlJJREU7CiAjZW5kaWYKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmNwcAppbmRleCAyZDNhYzA0Li5lZDEyNzllIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMTg0NCw2ICsxODQ0LDExIEBAIHZvaWQgUmVu
ZGVyT2JqZWN0OjpzZXRTdHlsZShQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKICAgICB1
cGRhdGVJbWFnZShvbGRTdHlsZSA/IG9sZFN0eWxlLT5ib3JkZXJJbWFnZSgpLmltYWdlKCkgOiAw
LCBtX3N0eWxlID8gbV9zdHlsZS0+Ym9yZGVySW1hZ2UoKS5pbWFnZSgpIDogMCk7CiAgICAgdXBk
YXRlSW1hZ2Uob2xkU3R5bGUgPyBvbGRTdHlsZS0+bWFza0JveEltYWdlKCkuaW1hZ2UoKSA6IDAs
IG1fc3R5bGUgPyBtX3N0eWxlLT5tYXNrQm94SW1hZ2UoKS5pbWFnZSgpIDogMCk7CiAKKyNpZiBF
TkFCTEUoQ1NTX1NIQVBFUykKKyAgICB1cGRhdGVTaGFwZUltYWdlKG9sZFN0eWxlID8gb2xkU3R5
bGUtPnNoYXBlSW5zaWRlKCkgOiAwLCBtX3N0eWxlID8gbV9zdHlsZS0+c2hhcGVJbnNpZGUoKSA6
IDApOworICAgIHVwZGF0ZVNoYXBlSW1hZ2Uob2xkU3R5bGUgPyBvbGRTdHlsZS0+c2hhcGVPdXRz
aWRlKCkgOiAwLCBtX3N0eWxlID8gbV9zdHlsZS0+c2hhcGVPdXRzaWRlKCkgOiAwKTsKKyNlbmRp
ZgorCiAgICAgLy8gV2UgbmVlZCB0byBlbnN1cmUgdGhhdCB2aWV3LT5tYXhpbWFsT3V0bGluZVNp
emUoKSBpcyB2YWxpZCBmb3IgYW55IHJlcGFpbnRzIHRoYXQgaGFwcGVuCiAgICAgLy8gZHVyaW5n
IHN0eWxlRGlkQ2hhbmdlIChpdCdzIHVzZWQgYnkgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFp
bnQoKSkuCiAgICAgaWYgKG1fc3R5bGUtPm91dGxpbmVXaWR0aCgpID4gMCAmJiBtX3N0eWxlLT5v
dXRsaW5lU2l6ZSgpID4gbWF4aW1hbE91dGxpbmVTaXplKFBhaW50UGhhc2VPdXRsaW5lKSkKQEAg
LTIwOTYsNiArMjEwMSwxNCBAQCB2b2lkIFJlbmRlck9iamVjdDo6dXBkYXRlSW1hZ2UoU3R5bGVJ
bWFnZSogb2xkSW1hZ2UsIFN0eWxlSW1hZ2UqIG5ld0ltYWdlKQogICAgIH0KIH0KIAorI2lmIEVO
QUJMRShDU1NfU0hBUEVTKQordm9pZCBSZW5kZXJPYmplY3Q6OnVwZGF0ZVNoYXBlSW1hZ2UoY29u
c3QgU2hhcGVWYWx1ZSogb2xkU2hhcGVWYWx1ZSwgY29uc3QgU2hhcGVWYWx1ZSogbmV3U2hhcGVW
YWx1ZSkKK3sKKyAgICBpZiAob2xkU2hhcGVWYWx1ZSB8fCBuZXdTaGFwZVZhbHVlKQorICAgICAg
ICB1cGRhdGVJbWFnZShvbGRTaGFwZVZhbHVlID8gb2xkU2hhcGVWYWx1ZS0+aW1hZ2UoKSA6IDAs
IG5ld1NoYXBlVmFsdWUgPyBuZXdTaGFwZVZhbHVlLT5pbWFnZSgpIDogMCk7Cit9CisjZW5kaWYK
KwogTGF5b3V0UmVjdCBSZW5kZXJPYmplY3Q6OnZpZXdSZWN0KCkgY29uc3QKIHsKICAgICByZXR1
cm4gdmlldygpLT52aWV3UmVjdCgpOwpAQCAtMjYxMiw2ICsyNjI1LDE2IEBAIHZvaWQgUmVuZGVy
T2JqZWN0OjpkZXN0cm95KCkKICAgICBhcmVuYURlbGV0ZShyZW5kZXJBcmVuYSgpLCB0aGlzKTsK
IH0KIAorI2lmIEVOQUJMRShDU1NfU0hBUEVTKQorc3RhdGljIGlubGluZSB2b2lkIHJlbW92ZVNo
YXBlSW1hZ2VDbGllbnQoUmVuZGVyT2JqZWN0ICp0aGlzUmVuZGVyT2JqZWN0LCBTaGFwZVZhbHVl
KiBzaGFwZVZhbHVlKQoreworICAgIGlmICghc2hhcGVWYWx1ZSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIGlmIChTdHlsZUltYWdlKiBzaGFwZUltYWdlID0gc2hhcGVWYWx1ZS0+aW1hZ2UoKSkKKyAg
ICAgICAgc2hhcGVJbWFnZS0+cmVtb3ZlQ2xpZW50KHRoaXNSZW5kZXJPYmplY3QpOworfQorI2Vu
ZGlmCisKIHZvaWQgUmVuZGVyT2JqZWN0OjphcmVuYURlbGV0ZShSZW5kZXJBcmVuYSogYXJlbmEs
IHZvaWQqIGJhc2UpCiB7CiAgICAgaWYgKG1fc3R5bGUpIHsKQEAgLTI2MzAsNiArMjY1MywxMSBA
QCB2b2lkIFJlbmRlck9iamVjdDo6YXJlbmFEZWxldGUoUmVuZGVyQXJlbmEqIGFyZW5hLCB2b2lk
KiBiYXNlKQogCiAgICAgICAgIGlmIChTdHlsZUltYWdlKiBtYXNrQm94SW1hZ2UgPSBtX3N0eWxl
LT5tYXNrQm94SW1hZ2UoKS5pbWFnZSgpKQogICAgICAgICAgICAgbWFza0JveEltYWdlLT5yZW1v
dmVDbGllbnQodGhpcyk7CisKKyNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKKyAgICAgICAgcmVtb3Zl
U2hhcGVJbWFnZUNsaWVudCh0aGlzLCBtX3N0eWxlLT5zaGFwZUluc2lkZSgpKTsKKyAgICAgICAg
cmVtb3ZlU2hhcGVJbWFnZUNsaWVudCh0aGlzLCBtX3N0eWxlLT5zaGFwZU91dHNpZGUoKSk7Cisj
ZW5kaWYKICAgICB9CiAKICNpZm5kZWYgTkRFQlVHCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmgKaW5kZXggOTM1N2FjNS4uZmI4ODk0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuaApAQCAtNzAzLDYgKzcwMyw5IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgdXBkYXRlRmlsbEltYWdlcyhjb25zdCBGaWxsTGF5ZXIqLCBjb25zdCBGaWxsTGF5ZXIqKTsK
ICAgICB2b2lkIHVwZGF0ZUltYWdlKFN0eWxlSW1hZ2UqLCBTdHlsZUltYWdlKik7CisjaWYgRU5B
QkxFKENTU19TSEFQRVMpCisgICAgdm9pZCB1cGRhdGVTaGFwZUltYWdlKGNvbnN0IFNoYXBlVmFs
dWUqLCBjb25zdCBTaGFwZVZhbHVlKik7CisjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBwYWlu
dChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmYzNTg1ZmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNwcApAQCAtMCwwICsxLDE2MyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMyBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAg
ICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMK
KyAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorICogQ09QWVJJR0hUIEhPTERF
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULAorICogSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULAorICogU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRAorICogT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSYXN0ZXJTaGFwZS5oIgorCisjaW5jbHVk
ZSAiU2hhcGVJbnRlcnZhbC5oIgorI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworSW50UmVjdCBSYXN0ZXJTaGFwZUludGVydmFsczo6Ym91bmRzKCkg
Y29uc3QKK3sKKyAgICBpZiAoIW1fYm91bmRzKQorICAgICAgICBtX2JvdW5kcyA9IGFkb3B0UHRy
KG5ldyBJbnRSZWN0KG1fcmVnaW9uLmJvdW5kcygpKSk7CisgICAgcmV0dXJuICptX2JvdW5kczsK
K30KKwordm9pZCBSYXN0ZXJTaGFwZUludGVydmFsczo6YWRkSW50ZXJ2YWwoaW50IHksIGludCB4
MSwgaW50IHgyKQoreworICAgIG1fcmVnaW9uLnVuaXRlKFJlZ2lvbihJbnRSZWN0KHgxLCB5LCB4
MiAtIHgxLCAxKSkpOworICAgIG1fYm91bmRzLmNsZWFyKCk7Cit9CisKK3N0YXRpYyBpbmxpbmUg
SW50UmVjdCBhbGlnbmVkUmVjdChJbnRSZWN0IHIsIGludCB5MSwgaW50IHkyKQoreworICAgIHJl
dHVybiBJbnRSZWN0KHIueCgpLCB5MSwgci53aWR0aCgpLCB5MiAtIHkxKTsKK30KKwordm9pZCBS
YXN0ZXJTaGFwZUludGVydmFsczo6Z2V0SW50ZXJ2YWxzKGludCB5MSwgaW50IHkyLCBTZWdtZW50
TGlzdCYgcmVzdWx0KSBjb25zdAoreworICAgIEFTU0VSVCh5MiA+PSB5MSk7CisKKyAgICBJbnRS
ZWN0IGxpbmVSZWN0KGJvdW5kcygpLngoKSwgeTEsIGJvdW5kcygpLndpZHRoKCksIHkyIC0geTEp
OworICAgIFJlZ2lvbiBsaW5lUmVnaW9uKGxpbmVSZWN0KTsKKyAgICBsaW5lUmVnaW9uLmludGVy
c2VjdChtX3JlZ2lvbik7CisgICAgaWYgKGxpbmVSZWdpb24uaXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBWZWN0b3I8SW50UmVjdD4gbGluZVJlY3RzID0gbGluZVJlZ2lvbi5yZWN0
cygpOworICAgIEFTU0VSVChsaW5lUmVjdHMuc2l6ZSgpID4gMCk7CisKKyAgICBSZWdpb24gc2Vn
bWVudHNSZWdpb24obGluZVJlY3QpOworICAgIFJlZ2lvbiBpbnRlcnZhbHNSZWdpb247CisKKyAg
ICAvLyBUaGUgbG9vcCBiZWxvdyB1c2VzIFJlZ2lvbnMgdG8gY29tcHV0ZSB0aGUgaW50ZXJzZWN0
aW9uIG9mIHRoZSBob3Jpem9udGFsCisgICAgLy8gc2hhcGUgaW50ZXJ2YWxzIHRoYXQgZmFsbCB3
aXRoaW4gdGhlIGxpbmUncyBib3guCisKKyAgICBpbnQgbGluZVkgPSBsaW5lUmVjdHNbMF0ueSgp
OworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsaW5lUmVjdHMuc2l6ZSgpOyBpKyspIHsK
KyAgICAgICAgaWYgKGxpbmVSZWN0c1tpXS55KCkgIT0gbGluZVkpIHsKKyAgICAgICAgICAgIHNl
Z21lbnRzUmVnaW9uLmludGVyc2VjdChpbnRlcnZhbHNSZWdpb24pOworICAgICAgICAgICAgaW50
ZXJ2YWxzUmVnaW9uID0gUmVnaW9uKCk7CisgICAgICAgIH0KKyAgICAgICAgaW50ZXJ2YWxzUmVn
aW9uLnVuaXRlKFJlZ2lvbihhbGlnbmVkUmVjdChsaW5lUmVjdHNbaV0sIHkxLCB5MikpKTsKKyAg
ICAgICAgbGluZVkgPSBsaW5lUmVjdHNbaV0ueSgpOworICAgIH0KKyAgICBpZiAoIWludGVydmFs
c1JlZ2lvbi5pc0VtcHR5KCkpCisgICAgICAgIHNlZ21lbnRzUmVnaW9uLmludGVyc2VjdChpbnRl
cnZhbHNSZWdpb24pOworCisgICAgVmVjdG9yPEludFJlY3Q+IHNlZ21lbnRSZWN0cyA9IHNlZ21l
bnRzUmVnaW9uLnJlY3RzKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNlZ21lbnRS
ZWN0cy5zaXplKCk7IGkrKykKKyAgICAgICAgcmVzdWx0LmFwcGVuZChMaW5lU2VnbWVudChzZWdt
ZW50UmVjdHNbaV0ueCgpLCBzZWdtZW50UmVjdHNbaV0ubWF4WCgpKSk7Cit9CisKK2NvbnN0IFJh
c3RlclNoYXBlSW50ZXJ2YWxzJiBSYXN0ZXJTaGFwZTo6bWFyZ2luSW50ZXJ2YWxzKCkgY29uc3QK
K3sKKyAgICBBU1NFUlQoc2hhcGVNYXJnaW4oKSA+PSAwKTsKKyAgICBpZiAoIXNoYXBlTWFyZ2lu
KCkpCisgICAgICAgIHJldHVybiAqbV9pbnRlcnZhbHM7CisKKyAgICAvLyBGSVhNRTogYWRkIHN1
cHBvcnQgZm9yIG5vbi16ZXJvIG1hcmdpbgorICAgIHJldHVybiAqbV9pbnRlcnZhbHM7Cit9CisK
K2NvbnN0IFJhc3RlclNoYXBlSW50ZXJ2YWxzJiBSYXN0ZXJTaGFwZTo6cGFkZGluZ0ludGVydmFs
cygpIGNvbnN0Cit7CisgICAgQVNTRVJUKHNoYXBlUGFkZGluZygpID49IDApOworICAgIGlmICgh
c2hhcGVQYWRkaW5nKCkpCisgICAgICAgIHJldHVybiAqbV9pbnRlcnZhbHM7CisKKyAgICAvLyBG
SVhNRTogYWRkIHN1cHBvcnQgZm9yIG5vbi16ZXJvIHBhZGRpbmcKKyAgICByZXR1cm4gKm1faW50
ZXJ2YWxzOworfQorCit2b2lkIFJhc3RlclNoYXBlOjpnZXRFeGNsdWRlZEludGVydmFscyhMYXlv
dXRVbml0IGxvZ2ljYWxUb3AsIExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgU2VnbWVudExpc3Qm
IHJlc3VsdCkgY29uc3QKK3sKKyAgICBjb25zdCBSYXN0ZXJTaGFwZUludGVydmFscyYgaW50ZXJ2
YWxzID0gbWFyZ2luSW50ZXJ2YWxzKCk7CisgICAgaWYgKGludGVydmFscy5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIGZsb2F0IHkxID0gbG9naWNhbFRvcDsKKyAgICBmbG9hdCB5
MiA9IGxvZ2ljYWxUb3AgKyBsb2dpY2FsSGVpZ2h0OworCisgICAgaWYgKHkyIDwgaW50ZXJ2YWxz
LmJvdW5kcygpLnkoKSB8fCB5MSA+PSBpbnRlcnZhbHMuYm91bmRzKCkubWF4WSgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBpbnRlcnZhbHMuZ2V0SW50ZXJ2YWxzKHkxLCB5MiwgcmVzdWx0KTsK
K30KKwordm9pZCBSYXN0ZXJTaGFwZTo6Z2V0SW5jbHVkZWRJbnRlcnZhbHMoTGF5b3V0VW5pdCBs
b2dpY2FsVG9wLCBMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIFNlZ21lbnRMaXN0JiByZXN1bHQp
IGNvbnN0Cit7CisgICAgY29uc3QgUmFzdGVyU2hhcGVJbnRlcnZhbHMmIGludGVydmFscyA9IHBh
ZGRpbmdJbnRlcnZhbHMoKTsKKyAgICBpZiAoaW50ZXJ2YWxzLmlzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgZmxvYXQgeTEgPSBsb2dpY2FsVG9wOworICAgIGZsb2F0IHkyID0gbG9n
aWNhbFRvcCArIGxvZ2ljYWxIZWlnaHQ7CisKKyAgICBpZiAoeTEgPCBpbnRlcnZhbHMuYm91bmRz
KCkueSgpIHx8IHkyID4gaW50ZXJ2YWxzLmJvdW5kcygpLm1heFkoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgaW50ZXJ2YWxzLmdldEludGVydmFscyh5MSwgeTIsIHJlc3VsdCk7Cit9CisKK2Jv
b2wgUmFzdGVyU2hhcGU6OmZpcnN0SW5jbHVkZWRJbnRlcnZhbExvZ2ljYWxUb3AoTGF5b3V0VW5p
dCBtaW5Mb2dpY2FsSW50ZXJ2YWxUb3AsIGNvbnN0IExheW91dFNpemUmIG1pbkxvZ2ljYWxJbnRl
cnZhbFNpemUsIExheW91dFVuaXQmIHJlc3VsdCkgY29uc3QKK3sKKyAgICBmbG9hdCBtaW5JbnRl
cnZhbFRvcCA9IG1pbkxvZ2ljYWxJbnRlcnZhbFRvcDsKKyAgICBmbG9hdCBtaW5JbnRlcnZhbEhl
aWdodCA9IG1pbkxvZ2ljYWxJbnRlcnZhbFNpemUuaGVpZ2h0KCk7CisgICAgZmxvYXQgbWluSW50
ZXJ2YWxXaWR0aCA9IG1pbkxvZ2ljYWxJbnRlcnZhbFNpemUud2lkdGgoKTsKKworICAgIGNvbnN0
IFJhc3RlclNoYXBlSW50ZXJ2YWxzJiBpbnRlcnZhbHMgPSBwYWRkaW5nSW50ZXJ2YWxzKCk7Cisg
ICAgaWYgKGludGVydmFscy5pc0VtcHR5KCkgfHwgbWluSW50ZXJ2YWxXaWR0aCA+IGludGVydmFs
cy5ib3VuZHMoKS53aWR0aCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBmbG9hdCBt
aW5ZID0gc3RkOjptYXg8ZmxvYXQ+KGludGVydmFscy5ib3VuZHMoKS55KCksIG1pbkludGVydmFs
VG9wKTsKKyAgICBmbG9hdCBtYXhZID0gbWluWSArIG1pbkludGVydmFsSGVpZ2h0OworCisgICAg
aWYgKG1heFkgPiBpbnRlcnZhbHMuYm91bmRzKCkubWF4WSgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICAvLyBGSVhNRTogY29tcGxldGUgdGhpcyBtZXRob2QKKyAgICByZXN1bHQgPSBt
aW5ZOworICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWRlOTgxNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuaApAQCAtMCwwICsxLDgwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAg
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscworICogICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MKKyAqIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisgKiBDT1BZUklH
SFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsCisgKiBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCisgKiBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VECisgKiBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBSYXN0ZXJTaGFwZV9oCisjZGVmaW5lIFJhc3RlclNoYXBlX2gKKwor
I2luY2x1ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1ZGUgIlJlZ2lvbi5oIgorI2luY2x1ZGUgIlNo
YXBlLmgiCisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUmFzdGVyU2hhcGVJbnRlcnZhbHMg
eworcHVibGljOgorICAgIFJhc3RlclNoYXBlSW50ZXJ2YWxzKCkgeyB9CisKKyAgICBJbnRSZWN0
IGJvdW5kcygpIGNvbnN0OworICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0ICB7IHJldHVybiBtX3Jl
Z2lvbi5pc0VtcHR5KCk7IH0KKyAgICB2b2lkIGFkZEludGVydmFsKGludCB5LCBpbnQgeDEsIGlu
dCB4Mik7CisgICAgdm9pZCBnZXRJbnRlcnZhbHMoaW50IHkxLCBpbnQgeTIsIFNlZ21lbnRMaXN0
JikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgUmVnaW9uIG1fcmVnaW9uOworICAgIG11dGFibGUg
T3duUHRyPEludFJlY3Q+IG1fYm91bmRzOyAvLyBDYWNoZWQgdmFsdWUgb2YgbV9yZWdpb24uYm91
bmRzKCkuCit9OworCitjbGFzcyBSYXN0ZXJTaGFwZSA6IHB1YmxpYyBTaGFwZSB7CisgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoUmFzdGVyU2hhcGUpOworcHVibGljOgorICAgIFJhc3RlclNoYXBl
KFBhc3NPd25QdHI8UmFzdGVyU2hhcGVJbnRlcnZhbHM+IGludGVydmFscykKKyAgICAgICAgOiBT
aGFwZSgpCisgICAgICAgICwgbV9pbnRlcnZhbHMoaW50ZXJ2YWxzKQorICAgIHsKKyAgICB9CisK
KyAgICB2aXJ0dWFsIExheW91dFJlY3Qgc2hhcGVNYXJnaW5Mb2dpY2FsQm91bmRpbmdCb3goKSBj
b25zdCBPVkVSUklERSB7IHJldHVybiBzdGF0aWNfY2FzdDxMYXlvdXRSZWN0PihtYXJnaW5JbnRl
cnZhbHMoKS5ib3VuZHMoKSk7IH0KKyAgICB2aXJ0dWFsIExheW91dFJlY3Qgc2hhcGVQYWRkaW5n
TG9naWNhbEJvdW5kaW5nQm94KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
TGF5b3V0UmVjdD4ocGFkZGluZ0ludGVydmFscygpLmJvdW5kcygpKTsgfQorICAgIHZpcnR1YWwg
Ym9vbCBpc0VtcHR5KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9pbnRlcnZhbHMtPmlzRW1w
dHkoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBnZXRFeGNsdWRlZEludGVydmFscyhMYXlvdXRVbml0
IGxvZ2ljYWxUb3AsIExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgU2VnbWVudExpc3QmKSBjb25z
dCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0SW5jbHVkZWRJbnRlcnZhbHMoTGF5b3V0
VW5pdCBsb2dpY2FsVG9wLCBMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIFNlZ21lbnRMaXN0Jikg
Y29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGZpcnN0SW5jbHVkZWRJbnRlcnZhbExv
Z2ljYWxUb3AoTGF5b3V0VW5pdCBtaW5Mb2dpY2FsSW50ZXJ2YWxUb3AsIGNvbnN0IExheW91dFNp
emUmIG1pbkxvZ2ljYWxJbnRlcnZhbFNpemUsIExheW91dFVuaXQmKSBjb25zdCBPVkVSUklERTsK
KworcHJpdmF0ZToKKyAgICBjb25zdCBSYXN0ZXJTaGFwZUludGVydmFscyYgbWFyZ2luSW50ZXJ2
YWxzKCkgY29uc3Q7CisgICAgY29uc3QgUmFzdGVyU2hhcGVJbnRlcnZhbHMmIHBhZGRpbmdJbnRl
cnZhbHMoKSBjb25zdDsKKworICAgIE93blB0cjxSYXN0ZXJTaGFwZUludGVydmFscz4gbV9pbnRl
cnZhbHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBSYXN0ZXJT
aGFwZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCmluZGV4IGI3
OTIwY2MuLjFjOTliOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFw
ZXMvU2hhcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUu
Y3BwCkBAIC0zMSw5ICszMSwxMiBAQAogI2luY2x1ZGUgIlNoYXBlLmgiCiAKICNpbmNsdWRlICJC
YXNpY1NoYXBlRnVuY3Rpb25zLmgiCisjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRl
ICJGbG9hdFNpemUuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUg
Ikxlbmd0aEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIlBvbHlnb25TaGFwZS5oIgorI2luY2x1ZGUg
IlJhc3RlclNoYXBlLmgiCiAjaW5jbHVkZSAiUmVjdGFuZ2xlU2hhcGUuaCIKICNpbmNsdWRlICJX
aW5kUnVsZS5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CkBAIC0xOTEsNCArMTk0LDU1
IEBAIFBhc3NPd25QdHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVTaGFwZShjb25zdCBCYXNpY1NoYXBl
KiBiYXNpY1NoYXBlLCBjb25zdCBMYXlvdXRTCiAgICAgcmV0dXJuIHNoYXBlLnJlbGVhc2UoKTsK
IH0KIAorUGFzc093blB0cjxTaGFwZT4gU2hhcGU6OmNyZWF0ZVNoYXBlKGNvbnN0IFN0eWxlSW1h
Z2UqIHN0eWxlSW1hZ2UsIGZsb2F0IHRocmVzaG9sZCwgY29uc3QgTGF5b3V0U2l6ZSYgbG9naWNh
bEJveFNpemUsIFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBMZW5ndGggbWFyZ2luLCBMZW5ndGgg
cGFkZGluZykKK3sKKyAgICAvLyBGSVhNRTogU2hvdWxkIGNsaXAgc2hhcGUgdG8gbG9naWNhbCBi
b3guCisgICAgVU5VU0VEX1BBUkFNKGxvZ2ljYWxCb3hTaXplKTsKKworICAgIEFTU0VSVChzdHls
ZUltYWdlICYmIHN0eWxlSW1hZ2UtPmlzQ2FjaGVkSW1hZ2UoKSAmJiBzdHlsZUltYWdlLT5jYWNo
ZWRJbWFnZSgpICYmIHN0eWxlSW1hZ2UtPmNhY2hlZEltYWdlKCktPmltYWdlKCkpOworCisgICAg
SW1hZ2UqIGltYWdlID0gc3R5bGVJbWFnZS0+Y2FjaGVkSW1hZ2UoKS0+aW1hZ2UoKTsKKyAgICBH
cmFwaGljc0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3IgaW1hZ2VFeHRyYWN0b3IoaW1hZ2UsIEdy
YXBoaWNzQ29udGV4dDNEOjpIdG1sRG9tTm9uZSwgZmFsc2UsIHRydWUpOworICAgIGludCBpbWFn
ZVdpZHRoID0gc3RhdGljX2Nhc3Q8aW50PihpbWFnZUV4dHJhY3Rvci5pbWFnZVdpZHRoKCkpOwor
ICAgIGludCBpbWFnZUhlaWdodCA9IHN0YXRpY19jYXN0PGludD4oaW1hZ2VFeHRyYWN0b3IuaW1h
Z2VIZWlnaHQoKSk7CisKKyAgICBWZWN0b3I8dWludDhfdD4gYWxwaGFQaXhlbHM7CisgICAgYm9v
bCBwYWNrSW1hZ2VEYXRhT0sgPSBHcmFwaGljc0NvbnRleHQzRDo6cGFja0ltYWdlRGF0YShpbWFn
ZSwgaW1hZ2VFeHRyYWN0b3IuaW1hZ2VQaXhlbERhdGEoKSwKKyAgICAgICAgR3JhcGhpY3NDb250
ZXh0M0Q6OkFMUEhBLAorICAgICAgICBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwK
KyAgICAgICAgZmFsc2UsIC8qIGZsaXBZICovCisgICAgICAgIEdyYXBoaWNzQ29udGV4dDNEOjpB
bHBoYURvTm90aGluZywKKyAgICAgICAgaW1hZ2VFeHRyYWN0b3IuaW1hZ2VTb3VyY2VGb3JtYXQo
KSwKKyAgICAgICAgaW1hZ2VXaWR0aCwKKyAgICAgICAgaW1hZ2VIZWlnaHQsCisgICAgICAgIGlt
YWdlRXh0cmFjdG9yLmltYWdlU291cmNlVW5wYWNrQWxpZ25tZW50KCksCisgICAgICAgIGFscGhh
UGl4ZWxzKTsKKworICAgIE93blB0cjxSYXN0ZXJTaGFwZUludGVydmFscz4gaW50ZXJ2YWxzID0g
YWRvcHRQdHIobmV3IFJhc3RlclNoYXBlSW50ZXJ2YWxzKCkpOworICAgIHVpbnQ4X3QgYWxwaGFQ
aXhlbFRocmVzaG9sZCA9IHRocmVzaG9sZCAqIDI1NTsKKworICAgIGlmIChwYWNrSW1hZ2VEYXRh
T0spIHsKKyAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbWFnZVdpZHRoICog
aW1hZ2VIZWlnaHQpID09IGFscGhhUGl4ZWxzLnNpemUoKSk7CisgICAgICAgIGZvciAoaW50IHkg
PSAwOyB5IDwgaW1hZ2VIZWlnaHQ7IHkrKykgeworICAgICAgICAgICAgaW50IHN0YXJ0WCA9IC0x
OworICAgICAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCBpbWFnZVdpZHRoOyB4KyspIHsKKyAg
ICAgICAgICAgICAgICB1aW50OF90IGFscGhhID0gYWxwaGFQaXhlbHNbeCArIHkgKiBpbWFnZVdp
ZHRoXTsKKyAgICAgICAgICAgICAgICBpZiAoKHN0YXJ0WCA9PSAtMSkgJiYgYWxwaGEgPiBhbHBo
YVBpeGVsVGhyZXNob2xkKSB7CisgICAgICAgICAgICAgICAgICAgIHN0YXJ0WCA9IHg7CisgICAg
ICAgICAgICAgICAgfSBlbHNlIGlmIChzdGFydFggIT0gLTEgJiYgKGFscGhhIDw9IGFscGhhUGl4
ZWxUaHJlc2hvbGQgfHwgeCA9PSBpbWFnZVdpZHRoIC0gMSkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgaW50ZXJ2YWxzLT5hZGRJbnRlcnZhbCh5LCBzdGFydFgsIHgpOworICAgICAgICAgICAgICAg
ICAgICBzdGFydFggPSAtMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBPd25QdHI8UmFzdGVyU2hhcGU+IHJhc3RlclNoYXBlID0gYWRv
cHRQdHIobmV3IFJhc3RlclNoYXBlKGludGVydmFscy5yZWxlYXNlKCkpKTsKKyAgICByYXN0ZXJT
aGFwZS0+bV93cml0aW5nTW9kZSA9IHdyaXRpbmdNb2RlOworICAgIHJhc3RlclNoYXBlLT5tX21h
cmdpbiA9IGZsb2F0VmFsdWVGb3JMZW5ndGgobWFyZ2luLCAwKTsKKyAgICByYXN0ZXJTaGFwZS0+
bV9wYWRkaW5nID0gZmxvYXRWYWx1ZUZvckxlbmd0aChwYWRkaW5nLCAwKTsKKworICAgIHJldHVy
biByYXN0ZXJTaGFwZS5yZWxlYXNlKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuaAppbmRleCAwZDllY2ZkLi5mNzc1ZTVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5oCkBAIC0zMiw2ICszMiw3
IEBACiAKICNpbmNsdWRlICJCYXNpY1NoYXBlcy5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIK
KyNpbmNsdWRlICJTdHlsZUltYWdlLmgiCiAjaW5jbHVkZSAiV3JpdGluZ01vZGUuaCIKICNpbmNs
dWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTYwLDYg
KzYxLDcgQEAgdHlwZWRlZiBWZWN0b3I8TGluZVNlZ21lbnQ+IFNlZ21lbnRMaXN0OwogY2xhc3Mg
U2hhcGUgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPFNoYXBlPiBjcmVhdGVTaGFw
ZShjb25zdCBCYXNpY1NoYXBlKiwgY29uc3QgTGF5b3V0U2l6ZSYgbG9naWNhbEJveFNpemUsIFdy
aXRpbmdNb2RlLCBMZW5ndGggbWFyZ2luLCBMZW5ndGggcGFkZGluZyk7CisgICAgc3RhdGljIFBh
c3NPd25QdHI8U2hhcGU+IGNyZWF0ZVNoYXBlKGNvbnN0IFN0eWxlSW1hZ2UqLCBmbG9hdCB0aHJl
c2hvbGQsIGNvbnN0IExheW91dFNpemUmIGxvZ2ljYWxCb3hTaXplLCBXcml0aW5nTW9kZSwgTGVu
Z3RoIG1hcmdpbiwgTGVuZ3RoIHBhZGRpbmcpOwogCiAgICAgdmlydHVhbCB+U2hhcGUoKSB7IH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUluZm8u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUluZm8uY3BwCmluZGV4
IGUxMTU1ODMuLmJmOTRlNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
aGFwZXMvU2hhcGVJbmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVz
L1NoYXBlSW5mby5jcHAKQEAgLTQ1LDEyICs0NSwyNiBAQCBjb25zdCBTaGFwZSogU2hhcGVJbmZv
PFJlbmRlclR5cGUsIHNoYXBlR2V0dGVyLCBpbnRlcnZhbEdldHRlcj46OmNvbXB1dGVkU2hhcGUo
KQogICAgIGlmIChTaGFwZSogc2hhcGUgPSBtX3NoYXBlLmdldCgpKQogICAgICAgICByZXR1cm4g
c2hhcGU7CiAKLSAgICBTaGFwZVZhbHVlKiBzaGFwZVZhbHVlID0gKG1fcmVuZGVyZXItPnN0eWxl
KCktPipzaGFwZUdldHRlcikoKTsKLSAgICBCYXNpY1NoYXBlKiBzaGFwZSA9IChzaGFwZVZhbHVl
ICYmIHNoYXBlVmFsdWUtPnR5cGUoKSA9PSBTaGFwZVZhbHVlOjpTaGFwZSkgPyBzaGFwZVZhbHVl
LT5zaGFwZSgpIDogMDsKKyAgICBjb25zdCBMYXlvdXRTaXplIGxvZ2ljYWxCb3hTaXplKG1fc2hh
cGVMb2dpY2FsV2lkdGgsIG1fc2hhcGVMb2dpY2FsSGVpZ2h0KTsKKyAgICBXcml0aW5nTW9kZSB3
cml0aW5nTW9kZSA9IG1fcmVuZGVyZXItPnN0eWxlKCktPndyaXRpbmdNb2RlKCk7CisgICAgTGVu
Z3RoIG1hcmdpbiA9IG1fcmVuZGVyZXItPnN0eWxlKCktPnNoYXBlTWFyZ2luKCk7CisgICAgTGVu
Z3RoIHBhZGRpbmcgPSBtX3JlbmRlcmVyLT5zdHlsZSgpLT5zaGFwZVBhZGRpbmcoKTsKKyAgICBj
b25zdCBTaGFwZVZhbHVlKiBzaGFwZVZhbHVlID0gKG1fcmVuZGVyZXItPnN0eWxlKCktPipzaGFw
ZUdldHRlcikoKTsKKyAgICBBU1NFUlQoc2hhcGVWYWx1ZSk7CiAKLSAgICBBU1NFUlQoc2hhcGUp
OworICAgIHN3aXRjaCAoc2hhcGVWYWx1ZS0+dHlwZSgpKSB7CisgICAgY2FzZSBTaGFwZVZhbHVl
OjpTaGFwZToKKyAgICAgICAgQVNTRVJUKHNoYXBlVmFsdWUtPnNoYXBlKCkpOworICAgICAgICBt
X3NoYXBlID0gU2hhcGU6OmNyZWF0ZVNoYXBlKHNoYXBlVmFsdWUtPnNoYXBlKCksIGxvZ2ljYWxC
b3hTaXplLCB3cml0aW5nTW9kZSwgbWFyZ2luLCBwYWRkaW5nKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBTaGFwZVZhbHVlOjpJbWFnZToKKyAgICAgICAgQVNTRVJUKHNoYXBlVmFsdWUtPmlt
YWdlKCkpOworICAgICAgICBtX3NoYXBlID0gU2hhcGU6OmNyZWF0ZVNoYXBlKHNoYXBlVmFsdWUt
PmltYWdlKCksIDAsIGxvZ2ljYWxCb3hTaXplLCB3cml0aW5nTW9kZSwgbWFyZ2luLCBwYWRkaW5n
KTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgfQogCi0gICAgbV9zaGFwZSA9IFNoYXBlOjpjcmVhdGVTaGFwZShzaGFwZSwg
TGF5b3V0U2l6ZShtX3NoYXBlTG9naWNhbFdpZHRoLCBtX3NoYXBlTG9naWNhbEhlaWdodCksIG1f
cmVuZGVyZXItPnN0eWxlKCktPndyaXRpbmdNb2RlKCksIG1fcmVuZGVyZXItPnN0eWxlKCktPnNo
YXBlTWFyZ2luKCksIG1fcmVuZGVyZXItPnN0eWxlKCktPnNoYXBlUGFkZGluZygpKTsKICAgICBB
U1NFUlQobV9zaGFwZSk7CiAgICAgcmV0dXJuIG1fc2hhcGUuZ2V0KCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW5zaWRlSW5mby5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW5zaWRlSW5mby5jcHAKaW5kZXgg
ZDEyOTVkMC4uMWM4ZTExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3No
YXBlcy9TaGFwZUluc2lkZUluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
aGFwZXMvU2hhcGVJbnNpZGVJbmZvLmNwcApAQCAtNDYsMTEgKzQ2LDE3IEBAIExpbmVTZWdtZW50
UmFuZ2U6OkxpbmVTZWdtZW50UmFuZ2UoY29uc3QgSW5saW5lSXRlcmF0b3ImIHN0YXJ0LCBjb25z
dCBJbmxpbmVJdGVyCiBib29sIFNoYXBlSW5zaWRlSW5mbzo6aXNFbmFibGVkRm9yKGNvbnN0IFJl
bmRlckJsb2NrKiByZW5kZXJlcikKIHsKICAgICBTaGFwZVZhbHVlKiBzaGFwZVZhbHVlID0gcmVu
ZGVyZXItPnN0eWxlKCktPnJlc29sdmVkU2hhcGVJbnNpZGUoKTsKLSAgICBpZiAoIXNoYXBlVmFs
dWUgfHwgc2hhcGVWYWx1ZS0+dHlwZSgpICE9IFNoYXBlVmFsdWU6OlNoYXBlKQorICAgIGlmICgh
c2hhcGVWYWx1ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgQmFzaWNTaGFwZSogc2hh
cGUgPSBzaGFwZVZhbHVlLT5zaGFwZSgpOwotICAgIHJldHVybiBzaGFwZSAmJiBzaGFwZS0+dHlw
ZSgpICE9IEJhc2ljU2hhcGU6OkJhc2ljU2hhcGVJbnNldFJlY3RhbmdsZVR5cGU7CisgICAgc3dp
dGNoIChzaGFwZVZhbHVlLT50eXBlKCkpIHsKKyAgICBjYXNlIFNoYXBlVmFsdWU6OlNoYXBlOgor
ICAgICAgICByZXR1cm4gc2hhcGVWYWx1ZS0+c2hhcGUoKSAmJiBzaGFwZVZhbHVlLT5zaGFwZSgp
LT50eXBlKCkgIT0gQmFzaWNTaGFwZTo6QmFzaWNTaGFwZUluc2V0UmVjdGFuZ2xlVHlwZTsKKyAg
ICBjYXNlIFNoYXBlVmFsdWU6OkltYWdlOgorICAgICAgICByZXR1cm4gc2hhcGVWYWx1ZS0+aXNJ
bWFnZVZhbGlkKCk7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
IH0KIAogYm9vbCBTaGFwZUluc2lkZUluZm86OmFkanVzdExvZ2ljYWxMaW5lVG9wKGZsb2F0IG1p
blNlZ21lbnRXaWR0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFw
ZXMvU2hhcGVPdXRzaWRlSW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVz
L1NoYXBlT3V0c2lkZUluZm8uY3BwCmluZGV4IGUxOTJmNjUuLmYxMmVkNzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmNwcApA
QCAtMzgsOCArMzgsMTggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGJvb2wgU2hhcGVPdXRzaWRl
SW5mbzo6aXNFbmFibGVkRm9yKGNvbnN0IFJlbmRlckJveCogYm94KQogewotICAgIFNoYXBlVmFs
dWUqIHZhbHVlID0gYm94LT5zdHlsZSgpLT5zaGFwZU91dHNpZGUoKTsKLSAgICByZXR1cm4gYm94
LT5pc0Zsb2F0aW5nV2l0aFNoYXBlT3V0c2lkZSgpICYmIHZhbHVlLT50eXBlKCkgPT0gU2hhcGVW
YWx1ZTo6U2hhcGUgJiYgdmFsdWUtPnNoYXBlKCk7CisgICAgU2hhcGVWYWx1ZSogc2hhcGVWYWx1
ZSA9IGJveC0+c3R5bGUoKS0+c2hhcGVPdXRzaWRlKCk7CisgICAgaWYgKCFib3gtPmlzRmxvYXRp
bmdXaXRoU2hhcGVPdXRzaWRlKCkgfHwgIXNoYXBlVmFsdWUpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIHN3aXRjaCAoc2hhcGVWYWx1ZS0+dHlwZSgpKSB7CisgICAgY2FzZSBTaGFwZVZh
bHVlOjpTaGFwZToKKyAgICAgICAgcmV0dXJuIHNoYXBlVmFsdWUtPnNoYXBlKCk7CisgICAgY2Fz
ZSBTaGFwZVZhbHVlOjpJbWFnZToKKyAgICAgICAgcmV0dXJuIHNoYXBlVmFsdWUtPmlzSW1hZ2VW
YWxpZCgpOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiB9CiAK
IGJvb2wgU2hhcGVPdXRzaWRlSW5mbzo6Y29tcHV0ZVNlZ21lbnRzRm9yTGluZShMYXlvdXRVbml0
IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUhlaWdodCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TaGFwZVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU2hhcGVWYWx1ZS5oCmluZGV4IDY3NGFlZWIuLmE0N2VkMGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFwZVZhbHVlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYXBlVmFsdWUuaApAQCAtMzEsNiArMzEsNyBAQAog
I2RlZmluZSBTaGFwZVZhbHVlX2gKIAogI2luY2x1ZGUgIkJhc2ljU2hhcGVzLmgiCisjaW5jbHVk
ZSAiQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRlICJTdHlsZUltYWdlLmgiCiAjaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KIApAQCAtNjIsMTIgKzYzLDE2IEBAIHB1YmxpYzoKIAogICAgIFNoYXBl
VmFsdWVUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KICAgICBCYXNpY1NoYXBl
KiBzaGFwZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcGUuZ2V0KCk7IH0KKwogICAgIFN0eWxlSW1h
Z2UqIGltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZS5nZXQoKTsgfQorICAgIGJvb2wgaXNJ
bWFnZVZhbGlkKCkgY29uc3QgeyByZXR1cm4gaW1hZ2UoKSAmJiBpbWFnZSgpLT5jYWNoZWRJbWFn
ZSgpICYmIGltYWdlKCktPmNhY2hlZEltYWdlKCktPmhhc0ltYWdlKCk7IH0KICAgICB2b2lkIHNl
dEltYWdlKFBhc3NSZWZQdHI8U3R5bGVJbWFnZT4gaW1hZ2UpCiAgICAgeworICAgICAgICBBU1NF
UlQodHlwZSgpID09IEltYWdlKTsKICAgICAgICAgaWYgKG1faW1hZ2UgIT0gaW1hZ2UpCiAgICAg
ICAgICAgICBtX2ltYWdlID0gaW1hZ2U7CiAgICAgfQorCiAgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFNoYXBlVmFsdWUmIG90aGVyKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gb3RoZXIudHlw
ZSgpOyB9CiAKIHByaXZhdGU6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>204536</attachid>
            <date>2013-06-12 15:02:41 -0700</date>
            <delta_ts>2013-06-20 17:38:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>tmp.patch</filename>
            <type>text/plain</type>
            <size>39413</size>
            <attacher name="Hans Muller">giles_joplin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0NWJkYmU4MC4uYmY1ZGUzMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEzLTA2
LTEwICBIYW5zIE11bGxlciAgPGhtdWxsZXJAYWRvYmUuY29tPgorCisgICAgICAgIFtDU1MgRXhj
bHVzaW9uc10gTWluaW1hbCBzdXBwb3J0IGZvciB1c2luZyBhbiBpbWFnZSB0byBkZWZpbmUgYSBz
aGFwZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE2
NjQzCisKKyAgICAgICAgVHdvIHRlc3RzIHRvIHZlcmlmeSB0aGF0IHRoZSBpbml0aWFsIGltcGxl
bWVudGF0aW9uIG9mIHNoYXBlIHZhbHVlZCBpbWFnZXMgaXMgd29ya2luZworICAgICAgICBmb3Ig
c2hhcGUtaW5zaWRlLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtaW1hZ2Ut
MDAxLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXhjbHVzaW9ucy9zaGFw
ZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAwMS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1pbWFnZS0wMDItZXhwZWN0
ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9z
aGFwZS1pbnNpZGUtaW1hZ2UtMDAyLmh0bWw6IEFkZGVkLgorCiAyMDEzLTA2LTEyICBLd2FuZyBZ
dWwgU2VvICA8c2t5dWxAY29tcGFueTEwMC5uZXQ+CiAKICAgICAgICAgVW5yZXZpZXdlZCBnYXJk
ZW5pbmcuIFVuc2tpcHBpbmcgcGFzc2luZyB0ZXN0cy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAwMS1leHBl
Y3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFw
ZS1pbnNpZGUtaW1hZ2UtMDAxLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uZmRiYWE3MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAwMS1leHBlY3RlZC5o
dG1sCkBAIC0wLDAgKzEsMjQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxz
dHlsZT4KKyAgICAjaW1hZ2Utc2hhcGUgeworICAgICAgICBib3JkZXI6IHNvbGlkIGJsYWNrIDFw
eDsKKyAgICAgICAgZm9udDogMTJweC8xIEFoZW0sIHNhbnMtc2VyaWY7CisgICAgICAgIHBhZGRp
bmc6IDRweDsKKyAgICAgICAgY29sb3I6IGdyZWVuOworICAgICAgICB3aWR0aDogMjRweDsKKyAg
ICAgICAgaGVpZ2h0OiAyNHB4OworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImRhdGE6
aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZ0NBWUFBQUJ6
ZW5yMEFBQUFTa2xFUVZSWUNlM1hJUTRBTUFoRDBYWGgvbGZ1TWtlQ0pqVWZoU3Q1WUpEdGs2eWJE
UC9aREZCakJkTHVVZGpxbWF3QUFRUVFRQUFCQkJCQUFBRUU0Z0xpTit4ZlNxS1AzOEFEdVFNSk82
TE5icjRBQUFBQVNVVk9SSzVDWUlJPSIpOworICAgICAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8t
cmVwZWF0OworICAgIH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPHAgaWQ9ImluZm9y
bWF0aXZlLXRleHQiPgorICAgICAgVGhpcyB0ZXN0IHJlcXVpcmVzIHRoZSBBaGVtIGZvbnQuIEl0
IHVzZXMgYSAzMngzMiBQTkcgaW1hZ2Ugd2l0aCBhIDI0eDI0IHJlZCBzcXVhcmUgaW4gdGhlIGNl
bnRlcgorICAgICAgdG8gZGVmaW5lIGEgc2hhcGUtaW5zaWRlLiBUaGUgY29udGVudCBzaG91bGQg
anVzdCBjb3ZlciB0aGUgc2hhcGUgd2l0aCBzb2xpZCBncmVlbi48L3A+CisKKyAgPGRpdiBpZD0i
aW1hZ2Utc2hhcGUiPlhYPGJyLz5YWDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUt
aW1hZ2UtMDAxLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRl
L3NoYXBlLWluc2lkZS1pbWFnZS0wMDEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi40NmVjN2IxMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXhj
bHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAwMS5odG1sCkBAIC0wLDAg
KzEsMjUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KKyAgICAj
aW1hZ2Utc2hhcGUgeworICAgICAgICBib3JkZXI6IHNvbGlkIGJsYWNrIDFweDsKKyAgICAgICAg
Zm9udDogMTJweC8xIEFoZW0sIHNhbnMtc2VyaWY7CisgICAgICAgIGNvbG9yOiBncmVlbjsKKyAg
ICAgICAgd2lkdGg6IDMycHg7CisgICAgICAgIGhlaWdodDogMzJweDsKKyAgICAgICAgLXdlYmtp
dC1zaGFwZS1pbnNpZGU6IHVybCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFB
QU5TVWhFVWdBQUFDQUFBQUFnQ0FZQUFBQnplbnIwQUFBQVNrbEVRVlJZQ2UzWElRNEFNQWhEMFhY
aC9sZnVNa2VDSmpVZmhTdDVZSkR0azZ5YkRQL1pERkJqQmRMdVVkanFtYXdBQVFRUVFBQUJCQkJB
QUFFRTRnTGlOK3hmU3FLUDM4QUR1UU1KTzZMTmJyNEFBQUFBU1VWT1JLNUNZSUk9Iik7CisgICAg
ICAgIC13ZWJraXQtc2hhcGUtaW1hZ2UtdGhyZXNob2xkOiAwOworICAgICAgICBiYWNrZ3JvdW5k
LWltYWdlOiB1cmwoImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVn
QUFBQ0FBQUFBZ0NBWUFBQUJ6ZW5yMEFBQUFTa2xFUVZSWUNlM1hJUTRBTUFoRDBYWGgvbGZ1TWtl
Q0pqVWZoU3Q1WUpEdGs2eWJEUC9aREZCakJkTHVVZGpxbWF3QUFRUVFRQUFCQkJCQUFBRUU0Z0xp
Tit4ZlNxS1AzOEFEdVFNSk82TE5icjRBQUFBQVNVVk9SSzVDWUlJPSIpOworICAgICAgICBiYWNr
Z3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OworICAgIH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9k
eT4KKyAgPHAgaWQ9ImluZm9ybWF0aXZlLXRleHQiPgorICAgICAgVGhpcyB0ZXN0IHJlcXVpcmVz
IHRoZSBBaGVtIGZvbnQuIEl0IHVzZXMgYSAzMngzMiBQTkcgaW1hZ2Ugd2l0aCBhIDI0eDI0IHJl
ZCBzcXVhcmUgaW4gdGhlIGNlbnRlcgorICAgICAgdG8gZGVmaW5lIGEgc2hhcGUtaW5zaWRlLiBU
aGUgY29udGVudCBzaG91bGQganVzdCBjb3ZlciB0aGUgc2hhcGUgd2l0aCBzb2xpZCBncmVlbi48
L3A+CisKKyAgPGRpdiBpZD0iaW1hZ2Utc2hhcGUiPlhYIFhYPC9kaXY+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRl
L3NoYXBlLWluc2lkZS1pbWFnZS0wMDItZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
ZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAwMi1leHBlY3RlZC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhNTNmZTgKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBl
LWluc2lkZS1pbWFnZS0wMDItZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDIxIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+CisgICAgI2ltYWdlLXNoYXBlIHsKKyAg
ICAgICAgZm9udDogMTJweC8xIEFoZW0sIHNhbnMtc2VyaWY7CisgICAgICAgIGNvbG9yOiBncmVl
bjsKKyAgICAgICAgd2lkdGg6IDI0cHg7CisgICAgICAgIGhlaWdodDogMjRweDsKKyAgICAgICAg
YmFja2dyb3VuZC1pbWFnZTogdXJsKCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29B
QUFBTlNVaEVVZ0FBQUNBQUFBQWdDQVlBQUFCemVucjBBQUFBUkVsRVFWUllDZTNYc1EwQUlBZ0VR
SEgvblY4bjBBcHRqdENSRUhJMFVCbGpaMk1rZGVvK1Q4VVhOUU1RSUVDQUFBRUNCQWdRSUZCSjcx
dHdPKzJ0Z0FDQjd3SUxvSThIT2FPbXpGc0FBQUFBU1VWT1JLNUNZSUk9Iik7CisgICAgICAgIGJh
Y2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CisgICAgfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxi
b2R5PgorICA8cCBpZD0iaW5mb3JtYXRpdmUtdGV4dCI+CisgICAgICBUaGlzIHRlc3QgcmVxdWly
ZXMgdGhlIEFoZW0gZm9udC4gSXQgdXNlcyBhIDI0eDI0IHNxdWFyZSBQTkcgaW1hZ2Ugd2hlcmUg
YWxsIHBpeGVscyBhcmUgcmVkLAorICAgICAgdG8gZGVmaW5lIGEgc2hhcGUtaW5zaWRlLiBUaGUg
Y29udGVudCBzaG91bGQganVzdCBjb3ZlciB0aGUgc2hhcGUgd2l0aCBzb2xpZCBncmVlbi48L3A+
CisgIDxkaXYgaWQ9ImltYWdlLXNoYXBlIj5YWDxici8+WFg8L2Rpdj4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUv
c2hhcGUtaW5zaWRlLWltYWdlLTAwMi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25z
L3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtaW1hZ2UtMDAyLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uMDc5ODRlMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAwMi5o
dG1sCkBAIC0wLDAgKzEsMjQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxz
dHlsZT4KKyAgICAjaW1hZ2Utc2hhcGUgeworICAgICAgICBmb250OiAxMnB4LzEgQWhlbSwgc2Fu
cy1zZXJpZjsKKyAgICAgICAgY29sb3I6IGdyZWVuOworICAgICAgICB3aWR0aDogMjRweDsKKyAg
ICAgICAgaGVpZ2h0OiAyNHB4OworICAgICAgICAtd2Via2l0LXNoYXBlLWluc2lkZTogdXJsKCJk
YXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWdDQVlB
QUFCemVucjBBQUFBUkVsRVFWUllDZTNYc1EwQUlBZ0VRSEgvblY4bjBBcHRqdENSRUhJMFVCbGpa
Mk1rZGVvK1Q4VVhOUU1RSUVDQUFBRUNCQWdRSUZCSjcxdHdPKzJ0Z0FDQjd3SUxvSThIT2FPbXpG
c0FBQUFBU1VWT1JLNUNZSUk9Iik7CisgICAgICAgIC13ZWJraXQtc2hhcGUtaW1hZ2UtdGhyZXNo
b2xkOiAwOworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImRhdGE6aW1hZ2UvcG5nO2Jh
c2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZ0NBWUFBQUJ6ZW5yMEFBQUFSRWxF
UVZSWUNlM1hzUTBBSUFnRVFISC9uVjhuMEFwdGp0Q1JFSEkwVUJsaloyTWtkZW8rVDhVWE5RTVFJ
RUNBQUFFQ0JBZ1FJRkJKNzF0d08rMnRnQUNCN3dJTG9JOEhPYU9tekZzQUFBQUFTVVZPUks1Q1lJ
ST0iKTsKKyAgICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKKyAgICB9Cis8L3N0
eWxlPgorPC9oZWFkPgorPGJvZHk+CisgIDxwIGlkPSJpbmZvcm1hdGl2ZS10ZXh0Ij4KKyAgICAg
IFRoaXMgdGVzdCByZXF1aXJlcyB0aGUgQWhlbSBmb250LiBJdCB1c2VzIGEgMjR4MjQgc3F1YXJl
IFBORyBpbWFnZSB3aGVyZSBhbGwgcGl4ZWxzIGFyZSByZWQsCisgICAgICB0byBkZWZpbmUgYSBz
aGFwZS1pbnNpZGUuIFRoZSBjb250ZW50IHNob3VsZCBqdXN0IGNvdmVyIHRoZSBzaGFwZSB3aXRo
IHNvbGlkIGdyZWVuLjwvcD4KKworICA8ZGl2IGlkPSJpbWFnZS1zaGFwZSI+WFggWFg8L2Rpdj4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNzg1YTZhNy4uNWNlMjM5
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTIyMDksNiArMjIwOSw3IEBAIHNldChXZWJDb3Jl
X1NPVVJDRVMKICAgICByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFVuZGVyT3Zlci5jcHAK
IAogICAgIHJlbmRlcmluZy9zaGFwZXMvUG9seWdvblNoYXBlLmNwcAorICAgIHJlbmRlcmluZy9z
aGFwZXMvUmFzdGVyU2hhcGUuY3BwCiAgICAgcmVuZGVyaW5nL3NoYXBlcy9SZWN0YW5nbGVTaGFw
ZS5jcHAKICAgICByZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcAogICAgIHJlbmRlcmluZy9zaGFw
ZXMvU2hhcGVJbmZvLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDI4MzhmMmUuLjk4NGE1NTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw1OCBAQAorMjAxMy0wNi0xMCAgSGFucyBNdWxsZXIgIDxobXVsbGVyQGFk
b2JlLmNvbT4KKworICAgICAgICBbQ1NTIEV4Y2x1c2lvbnNdIE1pbmltYWwgc3VwcG9ydCBmb3Ig
dXNpbmcgYW4gaW1hZ2UgdG8gZGVmaW5lIGEgc2hhcGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNjY0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgYSBmaXJzdCBzbWFsbCBzdGVwIHRvd2Fy
ZHMgc3VwcG9ydGluZyBDU1Mgc2hhcGVzIGRlZmluZWQgYnkgYW4KKyAgICAgICAgaW1hZ2UgVVJM
IGFuZCBhIGFscGhhIGNoYW5uZWwgdGhyZXNob2xkLiBUbyBrZWVwIHRoZSBwYXRjaCBhcyBzbWFs
bCBhcworICAgICAgICBwb3NzaWJsZSwgdGhlcmUgYXJlIG1hbnkgbGltaXRhdGlvbnMgYW5kIHJl
bWFpbmluZyB3b3JrIGl0ZW1zLiAgU2VlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMTYzNDggZm9yIHRoZSBjdXJyZW50IGxpc3QuCisKKyAgICAgICAg
VGVzdDogZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtaW1hZ2UtMDAx
Lmh0bWwKKyAgICAgICAgVGVzdDogZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1p
bnNpZGUtaW1hZ2UtMDAyLmh0bWwKKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAg
ICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAg
KiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2su
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmltYWdlQ2hhbmdlZCk6IFdoZW4g
dGhlIGltYWdlIGhhcyBmaW5pc2hlZCBsb2FkaW5nLCByZXF1ZXN0IGEgbGF5b3V0LgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJP
YmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpzZXRTdHlsZSk6IEFk
ZCBub3RpZnkgY2xpZW50cyBmb3Igc2hhcGUgaW1hZ2VzLgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyT2JqZWN0Ojp1cGRhdGVTaGFwZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OnJlbW92ZVNo
YXBlSW1hZ2VDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjphcmVuYURl
bGV0ZSk6IFJlbW92ZSBub3RpZnkgY2xpZW50cyBmb3Igc2hhcGUgaW1hZ2VzLgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1Jh
c3RlclNoYXBlLmNwcDogQWRkZWQuIEEgU2hhcGUgZGVmaW5lZCBieSB0aHJlc2hvbGRpbmcgYW4g
aW1hZ2UncyBhbHBoYSBjaGFubmVsLgorICAgICAgICAoV2ViQ29yZTo6UmFzdGVyU2hhcGVJbnRl
cnZhbHM6OmJvdW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpSYXN0ZXJTaGFwZUludGVydmFsczo6
YWRkSW50ZXJ2YWwpOiBBZGQgYSBzaW5nbGUgcnVuIHRvIHRoZSBzaGFwZS4KKyAgICAgICAgKFdl
YkNvcmU6OmFsaWduZWRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJhc3RlclNoYXBlSW50ZXJ2
YWxzOjpnZXRJbnRlcnZhbHMpOiBSZXR1cm4gdGhlIHNoYXBlJ3MgcnVucyB0aGF0IGZhbGwgd2l0
aGluIGEgaG9yaXpvbmFsIGJveC4KKyAgICAgICAgKFdlYkNvcmU6OlJhc3RlclNoYXBlOjptYXJn
aW5JbnRlcnZhbHMpOiBJbnRlcm5hbCByZXByZXNlbnRhdGlvbiBvZiB0aGUgc2hhcGUgd2l0aCBz
aGFwZS1tYXJnaW4gZmFjdG9yZWQgaW4uICBDdXJyZW50bHkgb25seSBhIHN0dWIuCisgICAgICAg
IChXZWJDb3JlOjpSYXN0ZXJTaGFwZTo6cGFkZGluZ0ludGVydmFscyk6IEludGVybmFsIHJlcHJl
c2VudGF0aW9uIG9mIHRoZSBzaGFwZSB3aXRoIHNoYXBlLXBhZGRpbmcgZmFjdG9yZWQgaW4uICBD
dXJyZW50bHkgb25seSBhIHN0dWIuCisgICAgICAgIChXZWJDb3JlOjpSYXN0ZXJTaGFwZTo6Z2V0
RXhjbHVkZWRJbnRlcnZhbHMpOgorICAgICAgICAoV2ViQ29yZTo6UmFzdGVyU2hhcGU6OmdldElu
Y2x1ZGVkSW50ZXJ2YWxzKToKKyAgICAgICAgKFdlYkNvcmU6OlJhc3RlclNoYXBlOjpmaXJzdElu
Y2x1ZGVkSW50ZXJ2YWxMb2dpY2FsVG9wKToKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1Jh
c3RlclNoYXBlLmg6CisgICAgICAgIChXZWJDb3JlOjpSYXN0ZXJTaGFwZUludGVydmFsczo6UmFz
dGVyU2hhcGVJbnRlcnZhbHMpOiBJbnRlcm5hbCBydW4gbGVuZ3RoIGVuY29kZWQgcmVwcmVzZW50
YXRpb24gb2YgYSBSYXN0ZXJTaGFwZS4KKyAgICAgICAgKFdlYkNvcmU6OlJhc3RlclNoYXBlSW50
ZXJ2YWxzOjppc0VtcHR5KToKKyAgICAgICAgKFdlYkNvcmU6OlJhc3RlclNoYXBlOjpSYXN0ZXJT
aGFwZSk6CisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFwZTo6Y3JlYXRlU2hhcGUpOiBTdXBwb3J0IGZvciBjcmVhdGluZyBhIFNoYXBl
IGJhc2VkIG9uIGEgUmFzdGVyU2hhcGVJbnRlcnZhbHMgb2JqZWN0LgorICAgICAgICAqIHJlbmRl
cmluZy9zaGFwZXMvU2hhcGUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW5m
by5jcHA6CisgICAgICAgIChXZWJDb3JlOjo6OmNvbXB1dGVkU2hhcGUpOiBBZGRlZCBzdXBwb3J0
IGZvciB0aGUgSW1hZ2UgU2hhcGVWYWx1ZSB0eXBlLgorICAgICAgICAqIHJlbmRlcmluZy9zaGFw
ZXMvU2hhcGVJbnNpZGVJbmZvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXBlSW5zaWRlSW5m
bzo6aXNFbmFibGVkRm9yKTogQWRkZWQgc3VwcG9ydCBmb3IgdGhlIEltYWdlIFNoYXBlVmFsdWUg
dHlwZS4KKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcGVPdXRzaWRlSW5mbzo6aXNFbmFibGVkRm9yKTogQWRkZWQg
c3VwcG9ydCBmb3IgdGhlIEltYWdlIFNoYXBlVmFsdWUgdHlwZS4KKyAgICAgICAgKiByZW5kZXJp
bmcvc3R5bGUvU2hhcGVWYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGVWYWx1ZTo6aXNJ
bWFnZVZhbGlkKTogVHJ1ZSBpZiB0aGUgc2hhcGUncyBpbWFnZSBpcyByZWFkeSB0byBiZSBiZSBw
cm9jZXNzZWQuCisKIDIwMTMtMDYtMTIgIENocmlzdG9waGUgRHVtZXogIDxjaC5kdW1lekBzaXNh
LnNhbXN1bmcuY29tPgogCiAgICAgICAgIFN1cHBvcnQgbGF0ZXN0IFdlYiBJREwgaW5kZXhlZCBw
cm9wZXJ0eSBnZXR0ZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA3OGJkNjE4
Li40MDMzYWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTQ2MjEsNiArNDYy
MSw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3NoYXBlcy9Qb2x5Z29uU2hhcGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hh
cGVzL1BvbHlnb25TaGFwZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jh
c3RlclNoYXBlLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJT
aGFwZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1JlY3RhbmdsZVNoYXBl
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SZWN0YW5nbGVTaGFwZS5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcCBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnBy
aQppbmRleCAwN2JhOGJkLi4wZDk0NTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJn
ZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTEyMzksNiArMTIzOSw3
IEBAIFNPVVJDRVMgKz0gXAogICAgIHJlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcCBcCiAgICAg
cmVuZGVyaW5nL1Njcm9sbEJlaGF2aW9yLmNwcCBcCiAgICAgcmVuZGVyaW5nL3NoYXBlcy9Qb2x5
Z29uU2hhcGUuY3BwIFwKKyAgICByZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNwcCBcCiAg
ICAgcmVuZGVyaW5nL3NoYXBlcy9SZWN0YW5nbGVTaGFwZS5jcHAgXAogICAgIHJlbmRlcmluZy9z
aGFwZXMvU2hhcGUuY3BwIFwKICAgICByZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW5mby5jcHAgXApA
QCAtMjUwNyw2ICsyNTA4LDcgQEAgSEVBREVSUyArPSBcCiAgICAgcmVuZGVyaW5nL1Jvb3RJbmxp
bmVCb3guaCBcCiAgICAgcmVuZGVyaW5nL1Njcm9sbEJlaGF2aW9yLmggXAogICAgIHJlbmRlcmlu
Zy9zaGFwZXMvUG9seWdvblNoYXBlLmggXAorICAgIHJlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hh
cGUuaCBcCiAgICAgcmVuZGVyaW5nL3NoYXBlcy9SZWN0YW5nbGVTaGFwZS5oIFwKICAgICByZW5k
ZXJpbmcvc2hhcGVzL1NoYXBlLmggXAogICAgIHJlbmRlcmluZy9zaGFwZXMvU2hhcGVJbmZvLmgg
XApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKaW5k
ZXggNTVhMzcwNC4uYjQzZmQ4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3hwcm9qL1dlYkNvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHBy
b2ovV2ViQ29yZS52Y3hwcm9qCkBAIC02MzAyLDYgKzYzMDIsNyBAQAogICAgICAgPEV4Y2x1ZGVk
RnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJv
ZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgIDwvQ2xDb21waWxl
PgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXHNoYXBlc1xQb2x5Z29uU2hh
cGUuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXHNoYXBlc1xS
YXN0ZXJTaGFwZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdc
c2hhcGVzXFJlY3RhbmdsZVNoYXBlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHJlbmRlcmluZ1xzaGFwZXNcU2hhcGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccmVuZGVyaW5nXHNoYXBlc1xTaGFwZUluc2lkZUluZm8uY3BwIiAvPgpAQCAtMTIxOTQsNiAr
MTIxOTUsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXFJlbmRlclNs
aWRlci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXFJlbmRlclNu
YXBzaG90dGVkUGx1Z0luLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJp
bmdcc2hhcGVzXFBvbHlnb25TaGFwZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cmVuZGVyaW5nXHNoYXBlc1xSYXN0ZXJTaGFwZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5ccmVuZGVyaW5nXHNoYXBlc1xSZWN0YW5nbGVTaGFwZS5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXHNoYXBlc1xTaGFwZS5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXHNoYXBlc1xTaGFwZUluc2lkZUluZm8uaCIgLz4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA0YzQ4N2VhLi5mNDcyZjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xODM1LDYgKzE4MzUsOCBAQAogCQk2RTY3RDJBNjEy
ODBFOEE0MDA4NzU4RjcgLyogRXh0ZW5zaW9uczNET3BlbkdMLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNjdEMkE0MTI4MEU4QTQwMDg3NThGNyAv
KiBFeHRlbnNpb25zM0RPcGVuR0wuY3BwICovOyB9OwogCQk2RTY3RDJBNzEyODBFOEE0MDA4NzU4
RjcgLyogRXh0ZW5zaW9uczNET3BlbkdMLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA2RTY3RDJBNTEyODBFOEE0MDA4NzU4RjcgLyogRXh0ZW5zaW9uczNE
T3BlbkdMLmggKi87IH07CiAJCTZFNjdEMkE5MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25z
M0QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNjdE
MkE4MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25zM0QuaCAqLzsgfTsKKwkJNkU4NEU5RTAx
NzY2OEJFRTAwODE1QjY4IC8qIFJhc3RlclNoYXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFODRFOURFMTc2NjhCQUQwMDgxNUI2OCAvKiBSYXN0
ZXJTaGFwZS5jcHAgKi87IH07CisJCTZFODRFOUUxMTc2NjhCRjEwMDgxNUI2OCAvKiBSYXN0ZXJT
aGFwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU4
NEU5REYxNzY2OEJBRDAwODE1QjY4IC8qIFJhc3RlclNoYXBlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNkVCQzVFQUYxMzhCNTBGMjAwQTBDRjhB
IC8qIEpTRmxvYXQ2NEFycmF5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDZFQkM1RUFEMTM4QjUwRjIwMEEwQ0Y4QSAvKiBKU0Zsb2F0NjRBcnJheS5j
cHAgKi87IH07CiAJCTZFQkM1RUIwMTM4QjUwRjIwMEEwQ0Y4QSAvKiBKU0Zsb2F0NjRBcnJheS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkVCQzVFQUUx
MzhCNTBGMjAwQTBDRjhBIC8qIEpTRmxvYXQ2NEFycmF5LmggKi87IH07CiAJCTZFQkYwRTQ4MTJB
ODkyNjEwMERCMTcwOSAvKiBPRVNUZXh0dXJlRmxvYXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkVCRjBFNDUxMkE4OTI2MTAwREIxNzA5IC8qIE9F
U1RleHR1cmVGbG9hdC5jcHAgKi87IH07CkBAIC04MjI4LDYgKzgyMzAsOCBAQAogCQk2RTY3RDJB
NDEyODBFOEE0MDA4NzU4RjcgLyogRXh0ZW5zaW9uczNET3BlbkdMLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV4dGVuc2lvbnMzRE9wZW5HTC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFNjdEMkE1MTI4MEU4QTQwMDg3NThGNyAvKiBFeHRlbnNp
b25zM0RPcGVuR0wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXh0ZW5zaW9u
czNET3BlbkdMLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFNjdEMkE4MTI4MEU4
QkQwMDg3NThGNyAvKiBFeHRlbnNpb25zM0QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRXh0ZW5zaW9uczNELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZFODRF
OURFMTc2NjhCQUQwMDgxNUI2OCAvKiBSYXN0ZXJTaGFwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSYXN0ZXJTaGFwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTZFODRFOURGMTc2NjhCQUQwMDgxNUI2OCAvKiBSYXN0ZXJTaGFwZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSYXN0ZXJTaGFwZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk2RUJDNUQ4MDEzOEI0QzRFMDBBMENGOEEgLyogRmxvYXQ2NEFycmF5
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBGbG9hdDY0QXJyYXkuaWRsOyBwYXRoID0gY2Fu
dmFzL0Zsb2F0NjRBcnJheS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFQkM1
RUFEMTM4QjUwRjIwMEEwQ0Y4QSAvKiBKU0Zsb2F0NjRBcnJheS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0Zsb2F0NjRBcnJheS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTZFQkM1RUFFMTM4QjUwRjIwMEEwQ0Y4QSAvKiBKU0Zsb2F0NjRBcnJh
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0Zsb2F0NjRBcnJheS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjA1NDQsNiArMjA1NDgsOCBAQAogCQkJY2hp
bGRyZW4gPSAoCiAJCQkJRkQwOEE4N0ExNzVEMzkyNjAwMkNEMzYwIC8qIFBvbHlnb25TaGFwZS5j
cHAgKi8sCiAJCQkJRkQwOEE4N0IxNzVEMzkyNjAwMkNEMzYwIC8qIFBvbHlnb25TaGFwZS5oICov
LAorCQkJCTZFODRFOURFMTc2NjhCQUQwMDgxNUI2OCAvKiBSYXN0ZXJTaGFwZS5jcHAgKi8sCisJ
CQkJNkU4NEU5REYxNzY2OEJBRDAwODE1QjY4IC8qIFJhc3RlclNoYXBlLmggKi8sCiAJCQkJRkQw
OEE4N0MxNzVEMzkyNjAwMkNEMzYwIC8qIFJlY3RhbmdsZVNoYXBlLmNwcCAqLywKIAkJCQlGRDA4
QTg3RDE3NUQzOTI2MDAyQ0QzNjAgLyogUmVjdGFuZ2xlU2hhcGUuaCAqLywKIAkJCQlGRDA4QTg3
RTE3NUQzOTI2MDAyQ0QzNjAgLyogU2hhcGUuY3BwICovLApAQCAtMjA4NjQsNiArMjA4NzAsNyBA
QAogCQkJZmlsZXMgPSAoCiAJCQkJRkUxMTVGQUIxNjc5ODhDRDAwMjQ5MTM0IC8qIEFic3RyYWN0
RGF0YWJhc2VTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFNEFBREVFMTZEMkMzNzQwMDAy
NkZGQyAvKiBBYnN0cmFjdFNRTFN0YXRlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkU4NEU5
RTExNzY2OEJGMTAwODE1QjY4IC8qIFJhc3RlclNoYXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlG
RTRBQURFRjE2RDJDMzc0MDAwMjZGRkMgLyogQWJzdHJhY3RTUUxTdGF0ZW1lbnRCYWNrZW5kLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0MUUxQjFEMTBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RX
b3JrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5QTgxMjJFMEZCQjlDMUQwMDUxMDI5MyAvKiBB
Y2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmggaW4gSGVhZGVycyAqLywKQEAgLTI2OTU1LDYgKzI2
OTYyLDcgQEAKIAkJCQlCRTZERjcxMTE3MUNBMkRBMDBERDUyQjggLyogSlNBdWRpb1RyYWNrQ3Vz
dG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJFNkRGNzEzMTcxQ0EyREEwMERENTJCOCAvKiBK
U0F1ZGlvVHJhY2tMaXN0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZCNzE5QzQwMTcy
MzhDQUUwMDIyREUzNCAvKiBXZWJLaXRDU1NNYXRGdW5jdGlvblZhbHVlLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTZFODRFOUUwMTc2NjhCRUUwMDgxNUI2OCAvKiBSYXN0ZXJTaGFwZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4
IGU3ZDdkM2QuLjY5YWQyMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2Nr
LmNwcApAQCAtMTQzNSw2ICsxNDM1LDIxIEBAIHZvaWQgUmVuZGVyQmxvY2s6OmxheW91dCgpCiB9
CiAKICNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKK3ZvaWQgUmVuZGVyQmxvY2s6OmltYWdlQ2hhbmdl
ZChXcmFwcGVkSW1hZ2VQdHIgaW1hZ2UsIGNvbnN0IEludFJlY3QqKQoreworICAgIFJlbmRlckJv
eDo6aW1hZ2VDaGFuZ2VkKGltYWdlKTsKKworICAgIGlmICghcGFyZW50KCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIFNoYXBlVmFsdWUqIHNoYXBlVmFsdWUgPSBzdHlsZSgpLT5zaGFwZUluc2lk
ZSgpOworICAgIGlmIChzaGFwZVZhbHVlICYmIHNoYXBlVmFsdWUtPmltYWdlKCkgJiYgc2hhcGVW
YWx1ZS0+aW1hZ2UoKS0+ZGF0YSgpID09IGltYWdlKSB7CisgICAgICAgIFNoYXBlSW5zaWRlSW5m
byogc2hhcGVJbnNpZGVJbmZvID0gZW5zdXJlU2hhcGVJbnNpZGVJbmZvKCk7CisgICAgICAgIHNo
YXBlSW5zaWRlSW5mby0+ZGlydHlTaGFwZVNpemUoKTsKKyAgICAgICAgbWFya1NoYXBlSW5zaWRl
RGVzY2VuZGFudHNGb3JMYXlvdXQoKTsKKyAgICB9Cit9CisKIHZvaWQgUmVuZGVyQmxvY2s6OnVw
ZGF0ZVNoYXBlSW5zaWRlSW5mb0FmdGVyU3R5bGVDaGFuZ2UoY29uc3QgU2hhcGVWYWx1ZSogc2hh
cGVJbnNpZGUsIGNvbnN0IFNoYXBlVmFsdWUqIG9sZFNoYXBlSW5zaWRlKQogewogICAgIC8vIEZJ
WE1FOiBBIGZ1dHVyZSBvcHRpbWl6YXRpb24gd291bGQgZG8gYSBkZWVwIGNvbXBhcmlzb24gZm9y
IGVxdWFsaXR5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAppbmRleCBiZDEw
Yzk4Li4zZmZhN2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaApAQCAt
NDY4LDYgKzQ2OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG1hcmtTaGFwZUluc2lkZURlc2NlbmRh
bnRzRm9yTGF5b3V0KCk7CiAgICAgU2hhcGVJbnNpZGVJbmZvKiBsYXlvdXRTaGFwZUluc2lkZUlu
Zm8oKSBjb25zdDsKICAgICBib29sIGFsbG93c1NoYXBlSW5zaWRlSW5mb1NoYXJpbmcoKSBjb25z
dCB7IHJldHVybiAhaXNJbmxpbmUoKSAmJiAhaXNGbG9hdGluZygpOyB9CisgICAgdmlydHVhbCB2
b2lkIGltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIsIGNvbnN0IEludFJlY3QqID0gMCkgT1ZF
UlJJREU7CiAjZW5kaWYKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmNwcAppbmRleCAyZDNhYzA0Li43NmE5ZWRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMTg0NCw2ICsxODQ0LDEwIEBAIHZvaWQgUmVu
ZGVyT2JqZWN0OjpzZXRTdHlsZShQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBzdHlsZSkKICAgICB1
cGRhdGVJbWFnZShvbGRTdHlsZSA/IG9sZFN0eWxlLT5ib3JkZXJJbWFnZSgpLmltYWdlKCkgOiAw
LCBtX3N0eWxlID8gbV9zdHlsZS0+Ym9yZGVySW1hZ2UoKS5pbWFnZSgpIDogMCk7CiAgICAgdXBk
YXRlSW1hZ2Uob2xkU3R5bGUgPyBvbGRTdHlsZS0+bWFza0JveEltYWdlKCkuaW1hZ2UoKSA6IDAs
IG1fc3R5bGUgPyBtX3N0eWxlLT5tYXNrQm94SW1hZ2UoKS5pbWFnZSgpIDogMCk7CiAKKyNpZiBF
TkFCTEUoQ1NTX1NIQVBFUykKKyAgICB1cGRhdGVTaGFwZUltYWdlKG9sZFN0eWxlID8gb2xkU3R5
bGUtPnNoYXBlSW5zaWRlKCkgOiAwLCBtX3N0eWxlID8gbV9zdHlsZS0+c2hhcGVJbnNpZGUoKSA6
IDApOworI2VuZGlmCisKICAgICAvLyBXZSBuZWVkIHRvIGVuc3VyZSB0aGF0IHZpZXctPm1heGlt
YWxPdXRsaW5lU2l6ZSgpIGlzIHZhbGlkIGZvciBhbnkgcmVwYWludHMgdGhhdCBoYXBwZW4KICAg
ICAvLyBkdXJpbmcgc3R5bGVEaWRDaGFuZ2UgKGl0J3MgdXNlZCBieSBjbGlwcGVkT3ZlcmZsb3dS
ZWN0Rm9yUmVwYWludCgpKS4KICAgICBpZiAobV9zdHlsZS0+b3V0bGluZVdpZHRoKCkgPiAwICYm
IG1fc3R5bGUtPm91dGxpbmVTaXplKCkgPiBtYXhpbWFsT3V0bGluZVNpemUoUGFpbnRQaGFzZU91
dGxpbmUpKQpAQCAtMjA5Niw2ICsyMTAwLDE0IEBAIHZvaWQgUmVuZGVyT2JqZWN0Ojp1cGRhdGVJ
bWFnZShTdHlsZUltYWdlKiBvbGRJbWFnZSwgU3R5bGVJbWFnZSogbmV3SW1hZ2UpCiAgICAgfQog
fQogCisjaWYgRU5BQkxFKENTU19TSEFQRVMpCit2b2lkIFJlbmRlck9iamVjdDo6dXBkYXRlU2hh
cGVJbWFnZShjb25zdCBTaGFwZVZhbHVlKiBvbGRTaGFwZVZhbHVlLCBjb25zdCBTaGFwZVZhbHVl
KiBuZXdTaGFwZVZhbHVlKQoreworICAgIGlmIChvbGRTaGFwZVZhbHVlIHx8IG5ld1NoYXBlVmFs
dWUpCisgICAgICAgIHVwZGF0ZUltYWdlKG9sZFNoYXBlVmFsdWUgPyBvbGRTaGFwZVZhbHVlLT5p
bWFnZSgpIDogMCwgbmV3U2hhcGVWYWx1ZSA/IG5ld1NoYXBlVmFsdWUtPmltYWdlKCkgOiAwKTsK
K30KKyNlbmRpZgorCiBMYXlvdXRSZWN0IFJlbmRlck9iamVjdDo6dmlld1JlY3QoKSBjb25zdAog
ewogICAgIHJldHVybiB2aWV3KCktPnZpZXdSZWN0KCk7CkBAIC0yNjEyLDYgKzI2MjQsMTYgQEAg
dm9pZCBSZW5kZXJPYmplY3Q6OmRlc3Ryb3koKQogICAgIGFyZW5hRGVsZXRlKHJlbmRlckFyZW5h
KCksIHRoaXMpOwogfQogCisjaWYgRU5BQkxFKENTU19TSEFQRVMpCit2b2lkIFJlbmRlck9iamVj
dDo6cmVtb3ZlU2hhcGVJbWFnZUNsaWVudChTaGFwZVZhbHVlKiBzaGFwZVZhbHVlKQoreworICAg
IGlmICghc2hhcGVWYWx1ZSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChTdHlsZUltYWdlKiBz
aGFwZUltYWdlID0gc2hhcGVWYWx1ZS0+aW1hZ2UoKSkKKyAgICAgICAgc2hhcGVJbWFnZS0+cmVt
b3ZlQ2xpZW50KHRoaXMpOworfQorI2VuZGlmCisKIHZvaWQgUmVuZGVyT2JqZWN0OjphcmVuYURl
bGV0ZShSZW5kZXJBcmVuYSogYXJlbmEsIHZvaWQqIGJhc2UpCiB7CiAgICAgaWYgKG1fc3R5bGUp
IHsKQEAgLTI2MzAsNiArMjY1MiwxMCBAQCB2b2lkIFJlbmRlck9iamVjdDo6YXJlbmFEZWxldGUo
UmVuZGVyQXJlbmEqIGFyZW5hLCB2b2lkKiBiYXNlKQogCiAgICAgICAgIGlmIChTdHlsZUltYWdl
KiBtYXNrQm94SW1hZ2UgPSBtX3N0eWxlLT5tYXNrQm94SW1hZ2UoKS5pbWFnZSgpKQogICAgICAg
ICAgICAgbWFza0JveEltYWdlLT5yZW1vdmVDbGllbnQodGhpcyk7CisKKyNpZiBFTkFCTEUoQ1NT
X1NIQVBFUykKKyAgICAgICAgcmVtb3ZlU2hhcGVJbWFnZUNsaWVudChtX3N0eWxlLT5zaGFwZUlu
c2lkZSgpKTsKKyNlbmRpZgogICAgIH0KIAogI2lmbmRlZiBOREVCVUcKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJPYmplY3QuaAppbmRleCA5MzU3YWM1Li4zYzA3Njc4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCkBAIC03MDMsNiArNzAzLDkgQEAgcHVibGlj
OgogCiAgICAgdm9pZCB1cGRhdGVGaWxsSW1hZ2VzKGNvbnN0IEZpbGxMYXllciosIGNvbnN0IEZp
bGxMYXllciopOwogICAgIHZvaWQgdXBkYXRlSW1hZ2UoU3R5bGVJbWFnZSosIFN0eWxlSW1hZ2Uq
KTsKKyNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKKyAgICB2b2lkIHVwZGF0ZVNoYXBlSW1hZ2UoY29u
c3QgU2hhcGVWYWx1ZSosIGNvbnN0IFNoYXBlVmFsdWUqKTsKKyNlbmRpZgogCiAgICAgdmlydHVh
bCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7CiAKQEAgLTEwMzMs
NiArMTAzNiwxMCBAQCBwcml2YXRlOgogCiAgICAgQ29sb3Igc2VsZWN0aW9uQ29sb3IoaW50IGNv
bG9yUHJvcGVydHkpIGNvbnN0OwogCisjaWYgRU5BQkxFKENTU19TSEFQRVMpCisgICAgdm9pZCBy
ZW1vdmVTaGFwZUltYWdlQ2xpZW50KFNoYXBlVmFsdWUqKTsKKyNlbmRpZgorCiAjaWZuZGVmIE5E
RUJVRwogICAgIHZvaWQgY2hlY2tCbG9ja1Bvc2l0aW9uZWRPYmplY3RzTmVlZExheW91dCgpOwog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3Rl
clNoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzNTg1ZmYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNw
cApAQCAtMCwwICsxLDE2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBZG9iZSBTeXN0
ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKKyAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTCisg
KiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRQorICogQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULAorICogSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQor
ICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULAorICogU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRAorICogT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJSYXN0ZXJTaGFwZS5oIgorCisjaW5jbHVkZSAiU2hhcGVJbnRlcnZhbC5oIgorI2luY2x1ZGUg
PHd0Zi9NYXRoRXh0cmFzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworSW50UmVjdCBSYXN0
ZXJTaGFwZUludGVydmFsczo6Ym91bmRzKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fYm91bmRzKQor
ICAgICAgICBtX2JvdW5kcyA9IGFkb3B0UHRyKG5ldyBJbnRSZWN0KG1fcmVnaW9uLmJvdW5kcygp
KSk7CisgICAgcmV0dXJuICptX2JvdW5kczsKK30KKwordm9pZCBSYXN0ZXJTaGFwZUludGVydmFs
czo6YWRkSW50ZXJ2YWwoaW50IHksIGludCB4MSwgaW50IHgyKQoreworICAgIG1fcmVnaW9uLnVu
aXRlKFJlZ2lvbihJbnRSZWN0KHgxLCB5LCB4MiAtIHgxLCAxKSkpOworICAgIG1fYm91bmRzLmNs
ZWFyKCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgSW50UmVjdCBhbGlnbmVkUmVjdChJbnRSZWN0IHIs
IGludCB5MSwgaW50IHkyKQoreworICAgIHJldHVybiBJbnRSZWN0KHIueCgpLCB5MSwgci53aWR0
aCgpLCB5MiAtIHkxKTsKK30KKwordm9pZCBSYXN0ZXJTaGFwZUludGVydmFsczo6Z2V0SW50ZXJ2
YWxzKGludCB5MSwgaW50IHkyLCBTZWdtZW50TGlzdCYgcmVzdWx0KSBjb25zdAoreworICAgIEFT
U0VSVCh5MiA+PSB5MSk7CisKKyAgICBJbnRSZWN0IGxpbmVSZWN0KGJvdW5kcygpLngoKSwgeTEs
IGJvdW5kcygpLndpZHRoKCksIHkyIC0geTEpOworICAgIFJlZ2lvbiBsaW5lUmVnaW9uKGxpbmVS
ZWN0KTsKKyAgICBsaW5lUmVnaW9uLmludGVyc2VjdChtX3JlZ2lvbik7CisgICAgaWYgKGxpbmVS
ZWdpb24uaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBWZWN0b3I8SW50UmVjdD4g
bGluZVJlY3RzID0gbGluZVJlZ2lvbi5yZWN0cygpOworICAgIEFTU0VSVChsaW5lUmVjdHMuc2l6
ZSgpID4gMCk7CisKKyAgICBSZWdpb24gc2VnbWVudHNSZWdpb24obGluZVJlY3QpOworICAgIFJl
Z2lvbiBpbnRlcnZhbHNSZWdpb247CisKKyAgICAvLyBUaGUgbG9vcCBiZWxvdyB1c2VzIFJlZ2lv
bnMgdG8gY29tcHV0ZSB0aGUgaW50ZXJzZWN0aW9uIG9mIHRoZSBob3Jpem9udGFsCisgICAgLy8g
c2hhcGUgaW50ZXJ2YWxzIHRoYXQgZmFsbCB3aXRoaW4gdGhlIGxpbmUncyBib3guCisKKyAgICBp
bnQgbGluZVkgPSBsaW5lUmVjdHNbMF0ueSgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBsaW5lUmVjdHMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgaWYgKGxpbmVSZWN0c1tpXS55KCkg
IT0gbGluZVkpIHsKKyAgICAgICAgICAgIHNlZ21lbnRzUmVnaW9uLmludGVyc2VjdChpbnRlcnZh
bHNSZWdpb24pOworICAgICAgICAgICAgaW50ZXJ2YWxzUmVnaW9uID0gUmVnaW9uKCk7CisgICAg
ICAgIH0KKyAgICAgICAgaW50ZXJ2YWxzUmVnaW9uLnVuaXRlKFJlZ2lvbihhbGlnbmVkUmVjdChs
aW5lUmVjdHNbaV0sIHkxLCB5MikpKTsKKyAgICAgICAgbGluZVkgPSBsaW5lUmVjdHNbaV0ueSgp
OworICAgIH0KKyAgICBpZiAoIWludGVydmFsc1JlZ2lvbi5pc0VtcHR5KCkpCisgICAgICAgIHNl
Z21lbnRzUmVnaW9uLmludGVyc2VjdChpbnRlcnZhbHNSZWdpb24pOworCisgICAgVmVjdG9yPElu
dFJlY3Q+IHNlZ21lbnRSZWN0cyA9IHNlZ21lbnRzUmVnaW9uLnJlY3RzKCk7CisgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHNlZ21lbnRSZWN0cy5zaXplKCk7IGkrKykKKyAgICAgICAgcmVz
dWx0LmFwcGVuZChMaW5lU2VnbWVudChzZWdtZW50UmVjdHNbaV0ueCgpLCBzZWdtZW50UmVjdHNb
aV0ubWF4WCgpKSk7Cit9CisKK2NvbnN0IFJhc3RlclNoYXBlSW50ZXJ2YWxzJiBSYXN0ZXJTaGFw
ZTo6bWFyZ2luSW50ZXJ2YWxzKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoc2hhcGVNYXJnaW4oKSA+
PSAwKTsKKyAgICBpZiAoIXNoYXBlTWFyZ2luKCkpCisgICAgICAgIHJldHVybiAqbV9pbnRlcnZh
bHM7CisKKyAgICAvLyBGSVhNRTogYWRkIHN1cHBvcnQgZm9yIG5vbi16ZXJvIG1hcmdpbgorICAg
IHJldHVybiAqbV9pbnRlcnZhbHM7Cit9CisKK2NvbnN0IFJhc3RlclNoYXBlSW50ZXJ2YWxzJiBS
YXN0ZXJTaGFwZTo6cGFkZGluZ0ludGVydmFscygpIGNvbnN0Cit7CisgICAgQVNTRVJUKHNoYXBl
UGFkZGluZygpID49IDApOworICAgIGlmICghc2hhcGVQYWRkaW5nKCkpCisgICAgICAgIHJldHVy
biAqbV9pbnRlcnZhbHM7CisKKyAgICAvLyBGSVhNRTogYWRkIHN1cHBvcnQgZm9yIG5vbi16ZXJv
IHBhZGRpbmcKKyAgICByZXR1cm4gKm1faW50ZXJ2YWxzOworfQorCit2b2lkIFJhc3RlclNoYXBl
OjpnZXRFeGNsdWRlZEludGVydmFscyhMYXlvdXRVbml0IGxvZ2ljYWxUb3AsIExheW91dFVuaXQg
bG9naWNhbEhlaWdodCwgU2VnbWVudExpc3QmIHJlc3VsdCkgY29uc3QKK3sKKyAgICBjb25zdCBS
YXN0ZXJTaGFwZUludGVydmFscyYgaW50ZXJ2YWxzID0gbWFyZ2luSW50ZXJ2YWxzKCk7CisgICAg
aWYgKGludGVydmFscy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGZsb2F0IHkx
ID0gbG9naWNhbFRvcDsKKyAgICBmbG9hdCB5MiA9IGxvZ2ljYWxUb3AgKyBsb2dpY2FsSGVpZ2h0
OworCisgICAgaWYgKHkyIDwgaW50ZXJ2YWxzLmJvdW5kcygpLnkoKSB8fCB5MSA+PSBpbnRlcnZh
bHMuYm91bmRzKCkubWF4WSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpbnRlcnZhbHMuZ2V0
SW50ZXJ2YWxzKHkxLCB5MiwgcmVzdWx0KTsKK30KKwordm9pZCBSYXN0ZXJTaGFwZTo6Z2V0SW5j
bHVkZWRJbnRlcnZhbHMoTGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBMYXlvdXRVbml0IGxvZ2ljYWxI
ZWlnaHQsIFNlZ21lbnRMaXN0JiByZXN1bHQpIGNvbnN0Cit7CisgICAgY29uc3QgUmFzdGVyU2hh
cGVJbnRlcnZhbHMmIGludGVydmFscyA9IHBhZGRpbmdJbnRlcnZhbHMoKTsKKyAgICBpZiAoaW50
ZXJ2YWxzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZmxvYXQgeTEgPSBsb2dp
Y2FsVG9wOworICAgIGZsb2F0IHkyID0gbG9naWNhbFRvcCArIGxvZ2ljYWxIZWlnaHQ7CisKKyAg
ICBpZiAoeTEgPCBpbnRlcnZhbHMuYm91bmRzKCkueSgpIHx8IHkyID4gaW50ZXJ2YWxzLmJvdW5k
cygpLm1heFkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaW50ZXJ2YWxzLmdldEludGVydmFs
cyh5MSwgeTIsIHJlc3VsdCk7Cit9CisKK2Jvb2wgUmFzdGVyU2hhcGU6OmZpcnN0SW5jbHVkZWRJ
bnRlcnZhbExvZ2ljYWxUb3AoTGF5b3V0VW5pdCBtaW5Mb2dpY2FsSW50ZXJ2YWxUb3AsIGNvbnN0
IExheW91dFNpemUmIG1pbkxvZ2ljYWxJbnRlcnZhbFNpemUsIExheW91dFVuaXQmIHJlc3VsdCkg
Y29uc3QKK3sKKyAgICBmbG9hdCBtaW5JbnRlcnZhbFRvcCA9IG1pbkxvZ2ljYWxJbnRlcnZhbFRv
cDsKKyAgICBmbG9hdCBtaW5JbnRlcnZhbEhlaWdodCA9IG1pbkxvZ2ljYWxJbnRlcnZhbFNpemUu
aGVpZ2h0KCk7CisgICAgZmxvYXQgbWluSW50ZXJ2YWxXaWR0aCA9IG1pbkxvZ2ljYWxJbnRlcnZh
bFNpemUud2lkdGgoKTsKKworICAgIGNvbnN0IFJhc3RlclNoYXBlSW50ZXJ2YWxzJiBpbnRlcnZh
bHMgPSBwYWRkaW5nSW50ZXJ2YWxzKCk7CisgICAgaWYgKGludGVydmFscy5pc0VtcHR5KCkgfHwg
bWluSW50ZXJ2YWxXaWR0aCA+IGludGVydmFscy5ib3VuZHMoKS53aWR0aCgpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBmbG9hdCBtaW5ZID0gc3RkOjptYXg8ZmxvYXQ+KGludGVydmFs
cy5ib3VuZHMoKS55KCksIG1pbkludGVydmFsVG9wKTsKKyAgICBmbG9hdCBtYXhZID0gbWluWSAr
IG1pbkludGVydmFsSGVpZ2h0OworCisgICAgaWYgKG1heFkgPiBpbnRlcnZhbHMuYm91bmRzKCku
bWF4WSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBGSVhNRTogY29tcGxldGUg
dGhpcyBtZXRob2QKKyAgICByZXN1bHQgPSBtaW5ZOworICAgIHJldHVybiB0cnVlOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc2hhcGVzL1Jhc3RlclNoYXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVz
L1Jhc3RlclNoYXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWRlOTgx
NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmFz
dGVyU2hhcGUuaApAQCAtMCwwICsxLDgwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFk
b2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAg
ICBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscworICogICAgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MKKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFCisgKiBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsCisgKiBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsCisgKiBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VECisgKiBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBSYXN0ZXJTaGFwZV9o
CisjZGVmaW5lIFJhc3RlclNoYXBlX2gKKworI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1
ZGUgIlJlZ2lvbi5oIgorI2luY2x1ZGUgIlNoYXBlLmgiCisjaW5jbHVkZSA8d3RmL0Fzc2VydGlv
bnMuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgUmFzdGVyU2hhcGVJbnRlcnZhbHMgeworcHVibGljOgorICAgIFJhc3RlclNoYXBlSW50
ZXJ2YWxzKCkgeyB9CisKKyAgICBJbnRSZWN0IGJvdW5kcygpIGNvbnN0OworICAgIGJvb2wgaXNF
bXB0eSgpIGNvbnN0ICB7IHJldHVybiBtX3JlZ2lvbi5pc0VtcHR5KCk7IH0KKyAgICB2b2lkIGFk
ZEludGVydmFsKGludCB5LCBpbnQgeDEsIGludCB4Mik7CisgICAgdm9pZCBnZXRJbnRlcnZhbHMo
aW50IHkxLCBpbnQgeTIsIFNlZ21lbnRMaXN0JikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgUmVn
aW9uIG1fcmVnaW9uOworICAgIG11dGFibGUgT3duUHRyPEludFJlY3Q+IG1fYm91bmRzOyAvLyBD
YWNoZWQgdmFsdWUgb2YgbV9yZWdpb24uYm91bmRzKCkuCit9OworCitjbGFzcyBSYXN0ZXJTaGFw
ZSA6IHB1YmxpYyBTaGFwZSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmFzdGVyU2hhcGUp
OworcHVibGljOgorICAgIFJhc3RlclNoYXBlKFBhc3NPd25QdHI8UmFzdGVyU2hhcGVJbnRlcnZh
bHM+IGludGVydmFscykKKyAgICAgICAgOiBTaGFwZSgpCisgICAgICAgICwgbV9pbnRlcnZhbHMo
aW50ZXJ2YWxzKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIExheW91dFJlY3Qgc2hhcGVN
YXJnaW5Mb2dpY2FsQm91bmRpbmdCb3goKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBzdGF0aWNf
Y2FzdDxMYXlvdXRSZWN0PihtYXJnaW5JbnRlcnZhbHMoKS5ib3VuZHMoKSk7IH0KKyAgICB2aXJ0
dWFsIExheW91dFJlY3Qgc2hhcGVQYWRkaW5nTG9naWNhbEJvdW5kaW5nQm94KCkgY29uc3QgT1ZF
UlJJREUgeyByZXR1cm4gc3RhdGljX2Nhc3Q8TGF5b3V0UmVjdD4ocGFkZGluZ0ludGVydmFscygp
LmJvdW5kcygpKTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0VtcHR5KCkgY29uc3QgT1ZFUlJJREUg
eyByZXR1cm4gbV9pbnRlcnZhbHMtPmlzRW1wdHkoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBnZXRF
eGNsdWRlZEludGVydmFscyhMYXlvdXRVbml0IGxvZ2ljYWxUb3AsIExheW91dFVuaXQgbG9naWNh
bEhlaWdodCwgU2VnbWVudExpc3QmKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
Z2V0SW5jbHVkZWRJbnRlcnZhbHMoTGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBMYXlvdXRVbml0IGxv
Z2ljYWxIZWlnaHQsIFNlZ21lbnRMaXN0JikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBi
b29sIGZpcnN0SW5jbHVkZWRJbnRlcnZhbExvZ2ljYWxUb3AoTGF5b3V0VW5pdCBtaW5Mb2dpY2Fs
SW50ZXJ2YWxUb3AsIGNvbnN0IExheW91dFNpemUmIG1pbkxvZ2ljYWxJbnRlcnZhbFNpemUsIExh
eW91dFVuaXQmKSBjb25zdCBPVkVSUklERTsKKworcHJpdmF0ZToKKyAgICBjb25zdCBSYXN0ZXJT
aGFwZUludGVydmFscyYgbWFyZ2luSW50ZXJ2YWxzKCkgY29uc3Q7CisgICAgY29uc3QgUmFzdGVy
U2hhcGVJbnRlcnZhbHMmIHBhZGRpbmdJbnRlcnZhbHMoKSBjb25zdDsKKworICAgIE93blB0cjxS
YXN0ZXJTaGFwZUludGVydmFscz4gbV9pbnRlcnZhbHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBSYXN0ZXJTaGFwZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zaGFwZXMvU2hhcGUuY3BwCmluZGV4IGI3OTIwY2MuLmRmYWEzZmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCkBAIC0zMSw5ICszMSwxMiBAQAogI2luY2x1
ZGUgIlNoYXBlLmgiCiAKICNpbmNsdWRlICJCYXNpY1NoYXBlRnVuY3Rpb25zLmgiCisjaW5jbHVk
ZSAiQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRlICJGbG9hdFNpemUuaCIKKyNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkxlbmd0aEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUg
IlBvbHlnb25TaGFwZS5oIgorI2luY2x1ZGUgIlJhc3RlclNoYXBlLmgiCiAjaW5jbHVkZSAiUmVj
dGFuZ2xlU2hhcGUuaCIKICNpbmNsdWRlICJXaW5kUnVsZS5oIgogI2luY2x1ZGUgPHd0Zi9NYXRo
RXh0cmFzLmg+CkBAIC0xOTEsNCArMTk0LDcxIEBAIFBhc3NPd25QdHI8U2hhcGU+IFNoYXBlOjpj
cmVhdGVTaGFwZShjb25zdCBCYXNpY1NoYXBlKiBiYXNpY1NoYXBlLCBjb25zdCBMYXlvdXRTCiAg
ICAgcmV0dXJuIHNoYXBlLnJlbGVhc2UoKTsKIH0KIAorI2lmIFVTRSgzRF9HUkFQSElDUykKK1Bh
c3NPd25QdHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVTaGFwZShjb25zdCBTdHlsZUltYWdlKiBzdHls
ZUltYWdlLCBmbG9hdCB0aHJlc2hvbGQsIGNvbnN0IExheW91dFNpemUmIGxvZ2ljYWxCb3hTaXpl
LCBXcml0aW5nTW9kZSB3cml0aW5nTW9kZSwgTGVuZ3RoIG1hcmdpbiwgTGVuZ3RoIHBhZGRpbmcp
Cit7CisgICAgLy8gRklYTUU6IFNob3VsZCBjbGlwIHNoYXBlIHRvIGxvZ2ljYWwgYm94LgorICAg
IFVOVVNFRF9QQVJBTShsb2dpY2FsQm94U2l6ZSk7CisKKyAgICBBU1NFUlQoc3R5bGVJbWFnZSAm
JiBzdHlsZUltYWdlLT5pc0NhY2hlZEltYWdlKCkgJiYgc3R5bGVJbWFnZS0+Y2FjaGVkSW1hZ2Uo
KSAmJiBzdHlsZUltYWdlLT5jYWNoZWRJbWFnZSgpLT5pbWFnZSgpKTsKKworICAgIEltYWdlKiBp
bWFnZSA9IHN0eWxlSW1hZ2UtPmNhY2hlZEltYWdlKCktPmltYWdlKCk7CisgICAgR3JhcGhpY3ND
b250ZXh0M0Q6OkltYWdlRXh0cmFjdG9yIGltYWdlRXh0cmFjdG9yKGltYWdlLCBHcmFwaGljc0Nv
bnRleHQzRDo6SHRtbERvbU5vbmUsIGZhbHNlLCB0cnVlKTsKKyAgICBpbnQgaW1hZ2VXaWR0aCA9
IHN0YXRpY19jYXN0PGludD4oaW1hZ2VFeHRyYWN0b3IuaW1hZ2VXaWR0aCgpKTsKKyAgICBpbnQg
aW1hZ2VIZWlnaHQgPSBzdGF0aWNfY2FzdDxpbnQ+KGltYWdlRXh0cmFjdG9yLmltYWdlSGVpZ2h0
KCkpOworCisgICAgVmVjdG9yPHVpbnQ4X3Q+IGFscGhhUGl4ZWxzOworICAgIGJvb2wgcGFja0lt
YWdlRGF0YU9LID0gR3JhcGhpY3NDb250ZXh0M0Q6OnBhY2tJbWFnZURhdGEoaW1hZ2UsIGltYWdl
RXh0cmFjdG9yLmltYWdlUGl4ZWxEYXRhKCksCisgICAgICAgIEdyYXBoaWNzQ29udGV4dDNEOjpB
TFBIQSwKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsCisgICAgICAg
IGZhbHNlLCAvKiBmbGlwWSAqLworICAgICAgICBHcmFwaGljc0NvbnRleHQzRDo6QWxwaGFEb05v
dGhpbmcsCisgICAgICAgIGltYWdlRXh0cmFjdG9yLmltYWdlU291cmNlRm9ybWF0KCksCisgICAg
ICAgIGltYWdlV2lkdGgsCisgICAgICAgIGltYWdlSGVpZ2h0LAorICAgICAgICBpbWFnZUV4dHJh
Y3Rvci5pbWFnZVNvdXJjZVVucGFja0FsaWdubWVudCgpLAorICAgICAgICBhbHBoYVBpeGVscyk7
CisKKyAgICBPd25QdHI8UmFzdGVyU2hhcGVJbnRlcnZhbHM+IGludGVydmFscyA9IGFkb3B0UHRy
KG5ldyBSYXN0ZXJTaGFwZUludGVydmFscygpKTsKKyAgICB1aW50OF90IGFscGhhUGl4ZWxUaHJl
c2hvbGQgPSB0aHJlc2hvbGQgKiAyNTU7CisKKyAgICBpZiAocGFja0ltYWdlRGF0YU9LKSB7Cisg
ICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW1hZ2VXaWR0aCAqIGltYWdlSGVp
Z2h0KSA9PSBhbHBoYVBpeGVscy5zaXplKCkpOworICAgICAgICBmb3IgKGludCB5ID0gMDsgeSA8
IGltYWdlSGVpZ2h0OyB5KyspIHsKKyAgICAgICAgICAgIGludCBzdGFydFggPSAtMTsKKyAgICAg
ICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgaW1hZ2VXaWR0aDsgeCsrKSB7CisgICAgICAgICAg
ICAgICAgdWludDhfdCBhbHBoYSA9IGFscGhhUGl4ZWxzW3ggKyB5ICogaW1hZ2VXaWR0aF07Cisg
ICAgICAgICAgICAgICAgaWYgKChzdGFydFggPT0gLTEpICYmIGFscGhhID4gYWxwaGFQaXhlbFRo
cmVzaG9sZCkgeworICAgICAgICAgICAgICAgICAgICBzdGFydFggPSB4OworICAgICAgICAgICAg
ICAgIH0gZWxzZSBpZiAoc3RhcnRYICE9IC0xICYmIChhbHBoYSA8PSBhbHBoYVBpeGVsVGhyZXNo
b2xkIHx8IHggPT0gaW1hZ2VXaWR0aCAtIDEpKSB7CisgICAgICAgICAgICAgICAgICAgIGludGVy
dmFscy0+YWRkSW50ZXJ2YWwoeSwgc3RhcnRYLCB4KTsKKyAgICAgICAgICAgICAgICAgICAgc3Rh
cnRYID0gLTE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgfQorCisgICAgT3duUHRyPFJhc3RlclNoYXBlPiByYXN0ZXJTaGFwZSA9IGFkb3B0UHRyKG5l
dyBSYXN0ZXJTaGFwZShpbnRlcnZhbHMucmVsZWFzZSgpKSk7CisgICAgcmFzdGVyU2hhcGUtPm1f
d3JpdGluZ01vZGUgPSB3cml0aW5nTW9kZTsKKyAgICByYXN0ZXJTaGFwZS0+bV9tYXJnaW4gPSBm
bG9hdFZhbHVlRm9yTGVuZ3RoKG1hcmdpbiwgMCk7CisgICAgcmFzdGVyU2hhcGUtPm1fcGFkZGlu
ZyA9IGZsb2F0VmFsdWVGb3JMZW5ndGgocGFkZGluZywgMCk7CisKKyAgICByZXR1cm4gcmFzdGVy
U2hhcGUucmVsZWFzZSgpOworfQorI2Vsc2UKK1Bhc3NPd25QdHI8U2hhcGU+IFNoYXBlOjpjcmVh
dGVTaGFwZShjb25zdCBTdHlsZUltYWdlKiBzdHlsZUltYWdlLCBmbG9hdCB0aHJlc2hvbGQsIGNv
bnN0IExheW91dFNpemUmIGxvZ2ljYWxCb3hTaXplLCBXcml0aW5nTW9kZSB3cml0aW5nTW9kZSwg
TGVuZ3RoIG1hcmdpbiwgTGVuZ3RoIHBhZGRpbmcpCit7CisgICAgVU5VU0VEX1BBUkFNKHN0eWxl
SW1hZ2UpOworICAgIFVOVVNFRF9QQVJBTSh0aHJlc2hvbGQpOworICAgIFVOVVNFRF9QQVJBTShs
b2dpY2FsQm94U2l6ZSk7CisKKyAgICBPd25QdHI8UmFzdGVyU2hhcGU+IHJhc3RlclNoYXBlID0g
YWRvcHRQdHIobmV3IFJhc3RlclNoYXBlKGFkb3B0UHRyKG5ldyBSYXN0ZXJTaGFwZUludGVydmFs
cygpKSkpOworICAgIHJhc3RlclNoYXBlLT5tX3dyaXRpbmdNb2RlID0gd3JpdGluZ01vZGU7Cisg
ICAgcmFzdGVyU2hhcGUtPm1fbWFyZ2luID0gZmxvYXRWYWx1ZUZvckxlbmd0aChtYXJnaW4sIDAp
OworICAgIHJhc3RlclNoYXBlLT5tX3BhZGRpbmcgPSBmbG9hdFZhbHVlRm9yTGVuZ3RoKHBhZGRp
bmcsIDApOworCisgICAgcmV0dXJuIHJhc3RlclNoYXBlLnJlbGVhc2UoKTsKK30KKyNlbmRpZgor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc2hhcGVzL1NoYXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1No
YXBlLmgKaW5kZXggMGQ5ZWNmZC4uZjc3NWU1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
aGFwZXMvU2hhcGUuaApAQCAtMzIsNiArMzIsNyBAQAogCiAjaW5jbHVkZSAiQmFzaWNTaGFwZXMu
aCIKICNpbmNsdWRlICJMYXlvdXRSZWN0LmgiCisjaW5jbHVkZSAiU3R5bGVJbWFnZS5oIgogI2lu
Y2x1ZGUgIldyaXRpbmdNb2RlLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CkBAIC02MCw2ICs2MSw3IEBAIHR5cGVkZWYgVmVjdG9yPExpbmVT
ZWdtZW50PiBTZWdtZW50TGlzdDsKIGNsYXNzIFNoYXBlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
UGFzc093blB0cjxTaGFwZT4gY3JlYXRlU2hhcGUoY29uc3QgQmFzaWNTaGFwZSosIGNvbnN0IExh
eW91dFNpemUmIGxvZ2ljYWxCb3hTaXplLCBXcml0aW5nTW9kZSwgTGVuZ3RoIG1hcmdpbiwgTGVu
Z3RoIHBhZGRpbmcpOworICAgIHN0YXRpYyBQYXNzT3duUHRyPFNoYXBlPiBjcmVhdGVTaGFwZShj
b25zdCBTdHlsZUltYWdlKiwgZmxvYXQgdGhyZXNob2xkLCBjb25zdCBMYXlvdXRTaXplJiBsb2dp
Y2FsQm94U2l6ZSwgV3JpdGluZ01vZGUsIExlbmd0aCBtYXJnaW4sIExlbmd0aCBwYWRkaW5nKTsK
IAogICAgIHZpcnR1YWwgflNoYXBlKCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zaGFwZXMvU2hhcGVJbmZvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zaGFwZXMvU2hhcGVJbmZvLmNwcAppbmRleCBlMTE1NTgzLi5iZjk0ZTQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW5mby5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUluZm8uY3BwCkBAIC00NSwxMiArNDUs
MjYgQEAgY29uc3QgU2hhcGUqIFNoYXBlSW5mbzxSZW5kZXJUeXBlLCBzaGFwZUdldHRlciwgaW50
ZXJ2YWxHZXR0ZXI+Ojpjb21wdXRlZFNoYXBlKCkKICAgICBpZiAoU2hhcGUqIHNoYXBlID0gbV9z
aGFwZS5nZXQoKSkKICAgICAgICAgcmV0dXJuIHNoYXBlOwogCi0gICAgU2hhcGVWYWx1ZSogc2hh
cGVWYWx1ZSA9IChtX3JlbmRlcmVyLT5zdHlsZSgpLT4qc2hhcGVHZXR0ZXIpKCk7Ci0gICAgQmFz
aWNTaGFwZSogc2hhcGUgPSAoc2hhcGVWYWx1ZSAmJiBzaGFwZVZhbHVlLT50eXBlKCkgPT0gU2hh
cGVWYWx1ZTo6U2hhcGUpID8gc2hhcGVWYWx1ZS0+c2hhcGUoKSA6IDA7CisgICAgY29uc3QgTGF5
b3V0U2l6ZSBsb2dpY2FsQm94U2l6ZShtX3NoYXBlTG9naWNhbFdpZHRoLCBtX3NoYXBlTG9naWNh
bEhlaWdodCk7CisgICAgV3JpdGluZ01vZGUgd3JpdGluZ01vZGUgPSBtX3JlbmRlcmVyLT5zdHls
ZSgpLT53cml0aW5nTW9kZSgpOworICAgIExlbmd0aCBtYXJnaW4gPSBtX3JlbmRlcmVyLT5zdHls
ZSgpLT5zaGFwZU1hcmdpbigpOworICAgIExlbmd0aCBwYWRkaW5nID0gbV9yZW5kZXJlci0+c3R5
bGUoKS0+c2hhcGVQYWRkaW5nKCk7CisgICAgY29uc3QgU2hhcGVWYWx1ZSogc2hhcGVWYWx1ZSA9
IChtX3JlbmRlcmVyLT5zdHlsZSgpLT4qc2hhcGVHZXR0ZXIpKCk7CisgICAgQVNTRVJUKHNoYXBl
VmFsdWUpOwogCi0gICAgQVNTRVJUKHNoYXBlKTsKKyAgICBzd2l0Y2ggKHNoYXBlVmFsdWUtPnR5
cGUoKSkgeworICAgIGNhc2UgU2hhcGVWYWx1ZTo6U2hhcGU6CisgICAgICAgIEFTU0VSVChzaGFw
ZVZhbHVlLT5zaGFwZSgpKTsKKyAgICAgICAgbV9zaGFwZSA9IFNoYXBlOjpjcmVhdGVTaGFwZShz
aGFwZVZhbHVlLT5zaGFwZSgpLCBsb2dpY2FsQm94U2l6ZSwgd3JpdGluZ01vZGUsIG1hcmdpbiwg
cGFkZGluZyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU2hhcGVWYWx1ZTo6SW1hZ2U6Cisg
ICAgICAgIEFTU0VSVChzaGFwZVZhbHVlLT5pbWFnZSgpKTsKKyAgICAgICAgbV9zaGFwZSA9IFNo
YXBlOjpjcmVhdGVTaGFwZShzaGFwZVZhbHVlLT5pbWFnZSgpLCAwLCBsb2dpY2FsQm94U2l6ZSwg
d3JpdGluZ01vZGUsIG1hcmdpbiwgcGFkZGluZyk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1
bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KIAotICAgIG1fc2hhcGUg
PSBTaGFwZTo6Y3JlYXRlU2hhcGUoc2hhcGUsIExheW91dFNpemUobV9zaGFwZUxvZ2ljYWxXaWR0
aCwgbV9zaGFwZUxvZ2ljYWxIZWlnaHQpLCBtX3JlbmRlcmVyLT5zdHlsZSgpLT53cml0aW5nTW9k
ZSgpLCBtX3JlbmRlcmVyLT5zdHlsZSgpLT5zaGFwZU1hcmdpbigpLCBtX3JlbmRlcmVyLT5zdHls
ZSgpLT5zaGFwZVBhZGRpbmcoKSk7CiAgICAgQVNTRVJUKG1fc2hhcGUpOwogICAgIHJldHVybiBt
X3NoYXBlLmdldCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3No
YXBlcy9TaGFwZUluc2lkZUluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBl
cy9TaGFwZUluc2lkZUluZm8uY3BwCmluZGV4IGQxMjk1ZDAuLjFjOGUxMTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVJbnNpZGVJbmZvLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW5zaWRlSW5mby5jcHAKQEAg
LTQ2LDExICs0NiwxNyBAQCBMaW5lU2VnbWVudFJhbmdlOjpMaW5lU2VnbWVudFJhbmdlKGNvbnN0
IElubGluZUl0ZXJhdG9yJiBzdGFydCwgY29uc3QgSW5saW5lSXRlcgogYm9vbCBTaGFwZUluc2lk
ZUluZm86OmlzRW5hYmxlZEZvcihjb25zdCBSZW5kZXJCbG9jayogcmVuZGVyZXIpCiB7CiAgICAg
U2hhcGVWYWx1ZSogc2hhcGVWYWx1ZSA9IHJlbmRlcmVyLT5zdHlsZSgpLT5yZXNvbHZlZFNoYXBl
SW5zaWRlKCk7Ci0gICAgaWYgKCFzaGFwZVZhbHVlIHx8IHNoYXBlVmFsdWUtPnR5cGUoKSAhPSBT
aGFwZVZhbHVlOjpTaGFwZSkKKyAgICBpZiAoIXNoYXBlVmFsdWUpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIEJhc2ljU2hhcGUqIHNoYXBlID0gc2hhcGVWYWx1ZS0+c2hhcGUoKTsKLSAg
ICByZXR1cm4gc2hhcGUgJiYgc2hhcGUtPnR5cGUoKSAhPSBCYXNpY1NoYXBlOjpCYXNpY1NoYXBl
SW5zZXRSZWN0YW5nbGVUeXBlOworICAgIHN3aXRjaCAoc2hhcGVWYWx1ZS0+dHlwZSgpKSB7Cisg
ICAgY2FzZSBTaGFwZVZhbHVlOjpTaGFwZToKKyAgICAgICAgcmV0dXJuIHNoYXBlVmFsdWUtPnNo
YXBlKCkgJiYgc2hhcGVWYWx1ZS0+c2hhcGUoKS0+dHlwZSgpICE9IEJhc2ljU2hhcGU6OkJhc2lj
U2hhcGVJbnNldFJlY3RhbmdsZVR5cGU7CisgICAgY2FzZSBTaGFwZVZhbHVlOjpJbWFnZToKKyAg
ICAgICAgcmV0dXJuIHNoYXBlVmFsdWUtPmlzSW1hZ2VWYWxpZCgpOworICAgIGRlZmF1bHQ6Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiB9CiAKIGJvb2wgU2hhcGVJbnNpZGVJbmZvOjph
ZGp1c3RMb2dpY2FsTGluZVRvcChmbG9hdCBtaW5TZWdtZW50V2lkdGgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmNwcAppbmRleCBl
MTkyZjY1Li5jM2IwM2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hh
cGVzL1NoYXBlT3V0c2lkZUluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
aGFwZXMvU2hhcGVPdXRzaWRlSW5mby5jcHAKQEAgLTM4LDggKzM4LDE4IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBib29sIFNoYXBlT3V0c2lkZUluZm86OmlzRW5hYmxlZEZvcihjb25zdCBSZW5k
ZXJCb3gqIGJveCkKIHsKLSAgICBTaGFwZVZhbHVlKiB2YWx1ZSA9IGJveC0+c3R5bGUoKS0+c2hh
cGVPdXRzaWRlKCk7Ci0gICAgcmV0dXJuIGJveC0+aXNGbG9hdGluZ1dpdGhTaGFwZU91dHNpZGUo
KSAmJiB2YWx1ZS0+dHlwZSgpID09IFNoYXBlVmFsdWU6OlNoYXBlICYmIHZhbHVlLT5zaGFwZSgp
OworICAgIFNoYXBlVmFsdWUqIHNoYXBlVmFsdWUgPSBib3gtPnN0eWxlKCktPnNoYXBlT3V0c2lk
ZSgpOworICAgIGlmICghYm94LT5pc0Zsb2F0aW5nV2l0aFNoYXBlT3V0c2lkZSgpIHx8ICFzaGFw
ZVZhbHVlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzd2l0Y2ggKHNoYXBlVmFsdWUt
PnR5cGUoKSkgeworICAgIGNhc2UgU2hhcGVWYWx1ZTo6U2hhcGU6CisgICAgICAgIHJldHVybiBz
aGFwZVZhbHVlLT5zaGFwZSgpOworICAgIGNhc2UgU2hhcGVWYWx1ZTo6SW1hZ2U6CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQogfQogCiBib29sIFNoYXBlT3V0c2lkZUluZm86OmNvbXB1dGVTZWdtZW50c0ZvckxpbmUoTGF5
b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVIZWlnaHQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhcGVWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1NoYXBlVmFsdWUuaAppbmRleCA2NzRhZWViLi5hNDdlZDBhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhcGVWYWx1ZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFwZVZhbHVlLmgKQEAgLTMxLDYgKzMx
LDcgQEAKICNkZWZpbmUgU2hhcGVWYWx1ZV9oCiAKICNpbmNsdWRlICJCYXNpY1NoYXBlcy5oIgor
I2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCiAjaW5jbHVkZSAiU3R5bGVJbWFnZS5oIgogI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKQEAgLTYyLDEyICs2MywxNiBAQCBwdWJsaWM6CiAKICAg
ICBTaGFwZVZhbHVlVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAgICAgQmFz
aWNTaGFwZSogc2hhcGUoKSBjb25zdCB7IHJldHVybiBtX3NoYXBlLmdldCgpOyB9CisKICAgICBT
dHlsZUltYWdlKiBpbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2UuZ2V0KCk7IH0KKyAgICBi
b29sIGlzSW1hZ2VWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIGltYWdlKCkgJiYgaW1hZ2UoKS0+Y2Fj
aGVkSW1hZ2UoKSAmJiBpbWFnZSgpLT5jYWNoZWRJbWFnZSgpLT5oYXNJbWFnZSgpOyB9CiAgICAg
dm9pZCBzZXRJbWFnZShQYXNzUmVmUHRyPFN0eWxlSW1hZ2U+IGltYWdlKQogICAgIHsKKyAgICAg
ICAgQVNTRVJUKHR5cGUoKSA9PSBJbWFnZSk7CiAgICAgICAgIGlmIChtX2ltYWdlICE9IGltYWdl
KQogICAgICAgICAgICAgbV9pbWFnZSA9IGltYWdlOwogICAgIH0KKwogICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBTaGFwZVZhbHVlJiBvdGhlcikgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IG90
aGVyLnR5cGUoKTsgfQogCiBwcml2YXRlOgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>205132</attachid>
            <date>2013-06-20 17:38:51 -0700</date>
            <delta_ts>2013-06-24 09:13:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>tmp.patch</filename>
            <type>text/plain</type>
            <size>39427</size>
            <attacher name="Hans Muller">giles_joplin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxNzU3MzQ3Li40Njg2YzNjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTMtMDYt
MTAgIEhhbnMgTXVsbGVyICA8aG11bGxlckBhZG9iZS5jb20+CisKKyAgICAgICAgW0NTUyBFeGNs
dXNpb25zXSBNaW5pbWFsIHN1cHBvcnQgZm9yIHVzaW5nIGFuIGltYWdlIHRvIGRlZmluZSBhIHNo
YXBlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTY2
NDMKKworICAgICAgICBUd28gdGVzdHMgdG8gdmVyaWZ5IHRoYXQgdGhlIGluaXRpYWwgaW1wbGVt
ZW50YXRpb24gb2Ygc2hhcGUgdmFsdWVkIGltYWdlcyBpcyB3b3JraW5nCisgICAgICAgIGZvciBz
aGFwZS1pbnNpZGUuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBmYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1pbWFnZS0w
MDEtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9leGNsdXNpb25zL3NoYXBl
LWluc2lkZS9zaGFwZS1pbnNpZGUtaW1hZ2UtMDAxLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAwMi1leHBlY3Rl
ZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3No
YXBlLWluc2lkZS1pbWFnZS0wMDIuaHRtbDogQWRkZWQuCisKIDIwMTMtMDYtMjAgIEVucmljYSBD
YXN1Y2NpICA8ZW5yaWNhQGFwcGxlLmNvbT4KIAogICAgICAgICBJbml0aWFsIGFkdmFuY2Ugb24g
dGhlIGZpcnN0IGdseXBoIG9mIHRoZSBydW4gaXMgbm90IGNvcnJlY3RseSBzZXQgZm9yIHJ0bCB0
ZXh0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lk
ZS9zaGFwZS1pbnNpZGUtaW1hZ2UtMDAxLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1pbWFnZS0wMDEtZXhwZWN0ZWQu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZGJhYTcyCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFw
ZS1pbnNpZGUtaW1hZ2UtMDAxLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwyNCBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorICAgICNpbWFnZS1zaGFwZSB7Cisg
ICAgICAgIGJvcmRlcjogc29saWQgYmxhY2sgMXB4OworICAgICAgICBmb250OiAxMnB4LzEgQWhl
bSwgc2Fucy1zZXJpZjsKKyAgICAgICAgcGFkZGluZzogNHB4OworICAgICAgICBjb2xvcjogZ3Jl
ZW47CisgICAgICAgIHdpZHRoOiAyNHB4OworICAgICAgICBoZWlnaHQ6IDI0cHg7CisgICAgICAg
IGJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dv
QUFBQU5TVWhFVWdBQUFDQUFBQUFnQ0FZQUFBQnplbnIwQUFBQVNrbEVRVlJZQ2UzWElRNEFNQWhE
MFhYaC9sZnVNa2VDSmpVZmhTdDVZSkR0azZ5YkRQL1pERkJqQmRMdVVkanFtYXdBQVFRUVFBQUJC
QkJBQUFFRTRnTGlOK3hmU3FLUDM4QUR1UU1KTzZMTmJyNEFBQUFBU1VWT1JLNUNZSUk9Iik7Cisg
ICAgICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CisgICAgfQorPC9zdHlsZT4KKzwv
aGVhZD4KKzxib2R5PgorICA8cCBpZD0iaW5mb3JtYXRpdmUtdGV4dCI+CisgICAgICBUaGlzIHRl
c3QgcmVxdWlyZXMgdGhlIEFoZW0gZm9udC4gSXQgdXNlcyBhIDMyeDMyIFBORyBpbWFnZSB3aXRo
IGEgMjR4MjQgcmVkIHNxdWFyZSBpbiB0aGUgY2VudGVyCisgICAgICB0byBkZWZpbmUgYSBzaGFw
ZS1pbnNpZGUuIFRoZSBjb250ZW50IHNob3VsZCBqdXN0IGNvdmVyIHRoZSBzaGFwZSB3aXRoIHNv
bGlkIGdyZWVuLjwvcD4KKworICA8ZGl2IGlkPSJpbWFnZS1zaGFwZSI+WFg8YnIvPlhYPC9kaXY+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lv
bnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1pbWFnZS0wMDEuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAwMS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2ZWM3YjEyCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1p
bnNpZGUtaW1hZ2UtMDAxLmh0bWwKQEAgLTAsMCArMSwyNSBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorICAgICNpbWFnZS1zaGFwZSB7CisgICAgICAgIGJvcmRl
cjogc29saWQgYmxhY2sgMXB4OworICAgICAgICBmb250OiAxMnB4LzEgQWhlbSwgc2Fucy1zZXJp
ZjsKKyAgICAgICAgY29sb3I6IGdyZWVuOworICAgICAgICB3aWR0aDogMzJweDsKKyAgICAgICAg
aGVpZ2h0OiAzMnB4OworICAgICAgICAtd2Via2l0LXNoYXBlLWluc2lkZTogdXJsKCJkYXRhOmlt
YWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWdDQVlBQUFCemVu
cjBBQUFBU2tsRVFWUllDZTNYSVE0QU1BaEQwWFhoL2xmdU1rZUNKalVmaFN0NVlKRHRrNnliRFAv
WkRGQmpCZEx1VWRqcW1hd0FBUVFRUUFBQkJCQkFBQUVFNGdMaU4reGZTcUtQMzhBRHVRTUpPNkxO
YnI0QUFBQUFTVVZPUks1Q1lJST0iKTsKKyAgICAgICAgLXdlYmtpdC1zaGFwZS1pbWFnZS10aHJl
c2hvbGQ6IDA7CisgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9wbmc7
YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFnQ0FZQUFBQnplbnIwQUFBQVNr
bEVRVlJZQ2UzWElRNEFNQWhEMFhYaC9sZnVNa2VDSmpVZmhTdDVZSkR0azZ5YkRQL1pERkJqQmRM
dVVkanFtYXdBQVFRUVFBQUJCQkJBQUFFRTRnTGlOK3hmU3FLUDM4QUR1UU1KTzZMTmJyNEFBQUFB
U1VWT1JLNUNZSUk9Iik7CisgICAgICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7Cisg
ICAgfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICA8cCBpZD0iaW5mb3JtYXRpdmUtdGV4
dCI+CisgICAgICBUaGlzIHRlc3QgcmVxdWlyZXMgdGhlIEFoZW0gZm9udC4gSXQgdXNlcyBhIDMy
eDMyIFBORyBpbWFnZSB3aXRoIGEgMjR4MjQgcmVkIHNxdWFyZSBpbiB0aGUgY2VudGVyCisgICAg
ICB0byBkZWZpbmUgYSBzaGFwZS1pbnNpZGUuIFRoZSBjb250ZW50IHNob3VsZCBqdXN0IGNvdmVy
IHRoZSBzaGFwZSB3aXRoIHNvbGlkIGdyZWVuLjwvcD4KKworICA8ZGl2IGlkPSJpbWFnZS1zaGFw
ZSI+WFggWFg8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAwMi1leHBl
Y3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFw
ZS1pbnNpZGUtaW1hZ2UtMDAyLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uNWE1M2ZlOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAwMi1leHBlY3RlZC5o
dG1sCkBAIC0wLDAgKzEsMjEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxz
dHlsZT4KKyAgICAjaW1hZ2Utc2hhcGUgeworICAgICAgICBmb250OiAxMnB4LzEgQWhlbSwgc2Fu
cy1zZXJpZjsKKyAgICAgICAgY29sb3I6IGdyZWVuOworICAgICAgICB3aWR0aDogMjRweDsKKyAg
ICAgICAgaGVpZ2h0OiAyNHB4OworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImRhdGE6
aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZ0NBWUFBQUJ6
ZW5yMEFBQUFSRWxFUVZSWUNlM1hzUTBBSUFnRVFISC9uVjhuMEFwdGp0Q1JFSEkwVUJsaloyTWtk
ZW8rVDhVWE5RTVFJRUNBQUFFQ0JBZ1FJRkJKNzF0d08rMnRnQUNCN3dJTG9JOEhPYU9tekZzQUFB
QUFTVVZPUks1Q1lJST0iKTsKKyAgICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsK
KyAgICB9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgIDxwIGlkPSJpbmZvcm1hdGl2ZS10
ZXh0Ij4KKyAgICAgIFRoaXMgdGVzdCByZXF1aXJlcyB0aGUgQWhlbSBmb250LiBJdCB1c2VzIGEg
MjR4MjQgc3F1YXJlIFBORyBpbWFnZSB3aGVyZSBhbGwgcGl4ZWxzIGFyZSByZWQsCisgICAgICB0
byBkZWZpbmUgYSBzaGFwZS1pbnNpZGUuIFRoZSBjb250ZW50IHNob3VsZCBqdXN0IGNvdmVyIHRo
ZSBzaGFwZSB3aXRoIHNvbGlkIGdyZWVuLjwvcD4KKyAgPGRpdiBpZD0iaW1hZ2Utc2hhcGUiPlhY
PGJyLz5YWDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtaW1hZ2UtMDAyLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1p
bWFnZS0wMDIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNzk4NGUw
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWlu
c2lkZS9zaGFwZS1pbnNpZGUtaW1hZ2UtMDAyLmh0bWwKQEAgLTAsMCArMSwyNCBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorICAgICNpbWFnZS1zaGFwZSB7Cisg
ICAgICAgIGZvbnQ6IDEycHgvMSBBaGVtLCBzYW5zLXNlcmlmOworICAgICAgICBjb2xvcjogZ3Jl
ZW47CisgICAgICAgIHdpZHRoOiAyNHB4OworICAgICAgICBoZWlnaHQ6IDI0cHg7CisgICAgICAg
IC13ZWJraXQtc2hhcGUtaW5zaWRlOiB1cmwoImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncw
S0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZ0NBWUFBQUJ6ZW5yMEFBQUFSRWxFUVZSWUNlM1hzUTBB
SUFnRVFISC9uVjhuMEFwdGp0Q1JFSEkwVUJsaloyTWtkZW8rVDhVWE5RTVFJRUNBQUFFQ0JBZ1FJ
RkJKNzF0d08rMnRnQUNCN3dJTG9JOEhPYU9tekZzQUFBQUFTVVZPUks1Q1lJST0iKTsKKyAgICAg
ICAgLXdlYmtpdC1zaGFwZS1pbWFnZS10aHJlc2hvbGQ6IDA7CisgICAgICAgIGJhY2tncm91bmQt
aW1hZ2U6IHVybCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdB
QUFDQUFBQUFnQ0FZQUFBQnplbnIwQUFBQVJFbEVRVlJZQ2UzWHNRMEFJQWdFUUhIL25WOG4wQXB0
anRDUkVISTBVQmxqWjJNa2RlbytUOFVYTlFNUUlFQ0FBQUVDQkFnUUlGQko3MXR3TysydGdBQ0I3
d0lMb0k4SE9hT216RnNBQUFBQVNVVk9SSzVDWUlJPSIpOworICAgICAgICBiYWNrZ3JvdW5kLXJl
cGVhdDogbm8tcmVwZWF0OworICAgIH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPHAg
aWQ9ImluZm9ybWF0aXZlLXRleHQiPgorICAgICAgVGhpcyB0ZXN0IHJlcXVpcmVzIHRoZSBBaGVt
IGZvbnQuIEl0IHVzZXMgYSAyNHgyNCBzcXVhcmUgUE5HIGltYWdlIHdoZXJlIGFsbCBwaXhlbHMg
YXJlIHJlZCwKKyAgICAgIHRvIGRlZmluZSBhIHNoYXBlLWluc2lkZS4gVGhlIGNvbnRlbnQgc2hv
dWxkIGp1c3QgY292ZXIgdGhlIHNoYXBlIHdpdGggc29saWQgZ3JlZW4uPC9wPgorCisgIDxkaXYg
aWQ9ImltYWdlLXNoYXBlIj5YWCBYWDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAppbmRleCBiNWI3ZTQ2Li5lNDhmZTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAt
MjIxNSw2ICsyMjE1LDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHJlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmNwcAogCiAgICAgcmVuZGVyaW5nL3NoYXBlcy9Qb2x5
Z29uU2hhcGUuY3BwCisgICAgcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5jcHAKICAgICBy
ZW5kZXJpbmcvc2hhcGVzL1JlY3RhbmdsZVNoYXBlLmNwcAogICAgIHJlbmRlcmluZy9zaGFwZXMv
U2hhcGUuY3BwCiAgICAgcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUluZm8uY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggMDk2YmVkMy4uYzM5ZjVkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDEzLTA2
LTEwICBIYW5zIE11bGxlciAgPGhtdWxsZXJAYWRvYmUuY29tPgorCisgICAgICAgIFtDU1MgRXhj
bHVzaW9uc10gTWluaW1hbCBzdXBwb3J0IGZvciB1c2luZyBhbiBpbWFnZSB0byBkZWZpbmUgYSBz
aGFwZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE2
NjQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBpcyBhIGZpcnN0IHNtYWxsIHN0ZXAgdG93YXJkcyBzdXBwb3J0aW5nIENTUyBzaGFwZXMgZGVm
aW5lZCBieSBhbgorICAgICAgICBpbWFnZSBVUkwgYW5kIGEgYWxwaGEgY2hhbm5lbCB0aHJlc2hv
bGQuIFRvIGtlZXAgdGhlIHBhdGNoIGFzIHNtYWxsIGFzCisgICAgICAgIHBvc3NpYmxlLCB0aGVy
ZSBhcmUgbWFueSBsaW1pdGF0aW9ucyBhbmQgcmVtYWluaW5nIHdvcmsgaXRlbXMuICBTZWUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNjM0OCBmb3Ig
dGhlIGN1cnJlbnQgbGlzdC4KKworICAgICAgICBUZXN0OiBmYXN0L2V4Y2x1c2lvbnMvc2hhcGUt
aW5zaWRlL3NoYXBlLWluc2lkZS1pbWFnZS0wMDEuaHRtbAorICAgICAgICBUZXN0OiBmYXN0L2V4
Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1pbWFnZS0wMDIuaHRtbAorCisgICAg
ICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAg
ICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZj
eHByb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCbG9jazo6aW1hZ2VDaGFuZ2VkKTogV2hlbiB0aGUgaW1hZ2UgaGFzIGZpbmlzaGVkIGxvYWRp
bmcsIHJlcXVlc3QgYSBsYXlvdXQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmg6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJPYmplY3Q6OnNldFN0eWxlKTogQWRkIG5vdGlmeSBjbGllbnRzIGZvciBzaGFwZSBp
bWFnZXMuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnVwZGF0ZVNoYXBlSW1hZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6cmVtb3ZlU2hhcGVJbWFnZUNsaWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmFyZW5hRGVsZXRlKTogUmVtb3ZlIG5vdGlmeSBjbGllbnRz
IGZvciBzaGFwZSBpbWFnZXMuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuY3BwOiBBZGRlZC4gQSBTaGFw
ZSBkZWZpbmVkIGJ5IHRocmVzaG9sZGluZyBhbiBpbWFnZSdzIGFscGhhIGNoYW5uZWwuCisgICAg
ICAgIChXZWJDb3JlOjpSYXN0ZXJTaGFwZUludGVydmFsczo6Ym91bmRzKToKKyAgICAgICAgKFdl
YkNvcmU6OlJhc3RlclNoYXBlSW50ZXJ2YWxzOjphZGRJbnRlcnZhbCk6IEFkZCBhIHNpbmdsZSBy
dW4gdG8gdGhlIHNoYXBlLgorICAgICAgICAoV2ViQ29yZTo6YWxpZ25lZFJlY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UmFzdGVyU2hhcGVJbnRlcnZhbHM6OmdldEludGVydmFscyk6IFJldHVybiB0
aGUgc2hhcGUncyBydW5zIHRoYXQgZmFsbCB3aXRoaW4gYSBob3Jpem9uYWwgYm94LgorICAgICAg
ICAoV2ViQ29yZTo6UmFzdGVyU2hhcGU6Om1hcmdpbkludGVydmFscyk6IEludGVybmFsIHJlcHJl
c2VudGF0aW9uIG9mIHRoZSBzaGFwZSB3aXRoIHNoYXBlLW1hcmdpbiBmYWN0b3JlZCBpbi4gIEN1
cnJlbnRseSBvbmx5IGEgc3R1Yi4KKyAgICAgICAgKFdlYkNvcmU6OlJhc3RlclNoYXBlOjpwYWRk
aW5nSW50ZXJ2YWxzKTogSW50ZXJuYWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIHNoYXBlIHdpdGgg
c2hhcGUtcGFkZGluZyBmYWN0b3JlZCBpbi4gIEN1cnJlbnRseSBvbmx5IGEgc3R1Yi4KKyAgICAg
ICAgKFdlYkNvcmU6OlJhc3RlclNoYXBlOjpnZXRFeGNsdWRlZEludGVydmFscyk6CisgICAgICAg
IChXZWJDb3JlOjpSYXN0ZXJTaGFwZTo6Z2V0SW5jbHVkZWRJbnRlcnZhbHMpOgorICAgICAgICAo
V2ViQ29yZTo6UmFzdGVyU2hhcGU6OmZpcnN0SW5jbHVkZWRJbnRlcnZhbExvZ2ljYWxUb3ApOgor
ICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlJhc3RlclNoYXBlSW50ZXJ2YWxzOjpSYXN0ZXJTaGFwZUludGVydmFscyk6IEludGVybmFs
IHJ1biBsZW5ndGggZW5jb2RlZCByZXByZXNlbnRhdGlvbiBvZiBhIFJhc3RlclNoYXBlLgorICAg
ICAgICAoV2ViQ29yZTo6UmFzdGVyU2hhcGVJbnRlcnZhbHM6OmlzRW1wdHkpOgorICAgICAgICAo
V2ViQ29yZTo6UmFzdGVyU2hhcGU6OlJhc3RlclNoYXBlKToKKyAgICAgICAgKiByZW5kZXJpbmcv
c2hhcGVzL1NoYXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXBlOjpjcmVhdGVTaGFwZSk6
IFN1cHBvcnQgZm9yIGNyZWF0aW5nIGEgU2hhcGUgYmFzZWQgb24gYSBSYXN0ZXJTaGFwZUludGVy
dmFscyBvYmplY3QuCisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9zaGFwZXMvU2hhcGVJbmZvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ojo6
Y29tcHV0ZWRTaGFwZSk6IEFkZGVkIHN1cHBvcnQgZm9yIHRoZSBJbWFnZSBTaGFwZVZhbHVlIHR5
cGUuCisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUluc2lkZUluZm8uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcGVJbnNpZGVJbmZvOjppc0VuYWJsZWRGb3IpOiBBZGRlZCBzdXBw
b3J0IGZvciB0aGUgSW1hZ2UgU2hhcGVWYWx1ZSB0eXBlLgorICAgICAgICAqIHJlbmRlcmluZy9z
aGFwZXMvU2hhcGVPdXRzaWRlSW5mby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZU91dHNp
ZGVJbmZvOjppc0VuYWJsZWRGb3IpOiBBZGRlZCBzdXBwb3J0IGZvciB0aGUgSW1hZ2UgU2hhcGVW
YWx1ZSB0eXBlLgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TaGFwZVZhbHVlLmg6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFwZVZhbHVlOjppc0ltYWdlVmFsaWQpOiBUcnVlIGlmIHRoZSBzaGFw
ZSdzIGltYWdlIGlzIHJlYWR5IHRvIGJlIGJlIHByb2Nlc3NlZC4KKwogMjAxMy0wNi0yMCAgUm9n
ZXIgRm9uZyAgPHJvZ2VyX2ZvbmdAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIFJv
bGwgb3V0IHBhcnQgb2YgcjE1MDYxOC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4
IDA4ZTMyODMuLjJjN2E1YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNDYw
NSw2ICs0NjA1LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFVuZGVyT3Zlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc2hhcGVzL1BvbHlnb25TaGFwZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zaGFwZXMvUG9seWdvblNoYXBlLmggXAorCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
aGFwZXMvUmFzdGVyU2hhcGUuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVz
L1Jhc3RlclNoYXBlLmggXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmVjdGFu
Z2xlU2hhcGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1JlY3Rhbmds
ZVNoYXBlLmggXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9U
YXJnZXQucHJpCmluZGV4IGNiYTQyNmMuLjIyZjZiYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtMTIzOSw2
ICsxMjM5LDcgQEAgU09VUkNFUyArPSBcCiAgICAgcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3Bw
IFwKICAgICByZW5kZXJpbmcvU2Nyb2xsQmVoYXZpb3IuY3BwIFwKICAgICByZW5kZXJpbmcvc2hh
cGVzL1BvbHlnb25TaGFwZS5jcHAgXAorICAgIHJlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUu
Y3BwIFwKICAgICByZW5kZXJpbmcvc2hhcGVzL1JlY3RhbmdsZVNoYXBlLmNwcCBcCiAgICAgcmVu
ZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAgXAogICAgIHJlbmRlcmluZy9zaGFwZXMvU2hhcGVJbmZv
LmNwcCBcCkBAIC0yNTAxLDYgKzI1MDIsNyBAQCBIRUFERVJTICs9IFwKICAgICByZW5kZXJpbmcv
Um9vdElubGluZUJveC5oIFwKICAgICByZW5kZXJpbmcvU2Nyb2xsQmVoYXZpb3IuaCBcCiAgICAg
cmVuZGVyaW5nL3NoYXBlcy9Qb2x5Z29uU2hhcGUuaCBcCisgICAgcmVuZGVyaW5nL3NoYXBlcy9S
YXN0ZXJTaGFwZS5oIFwKICAgICByZW5kZXJpbmcvc2hhcGVzL1JlY3RhbmdsZVNoYXBlLmggXAog
ICAgIHJlbmRlcmluZy9zaGFwZXMvU2hhcGUuaCBcCiAgICAgcmVuZGVyaW5nL3NoYXBlcy9TaGFw
ZUluZm8uaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2Vi
Q29yZS52Y3hwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4
cHJvagppbmRleCBkY2I3MDc2Li4wMWYzZjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKQEAgLTY1MTgsNiArNjUxOCw3IEBACiAgICAgICA8
RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgPC9D
bENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcc2hhcGVzXFBv
bHlnb25TaGFwZS5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdc
c2hhcGVzXFJhc3RlclNoYXBlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJl
bmRlcmluZ1xzaGFwZXNcUmVjdGFuZ2xlU2hhcGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5ccmVuZGVyaW5nXHNoYXBlc1xTaGFwZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxyZW5kZXJpbmdcc2hhcGVzXFNoYXBlSW5zaWRlSW5mby5jcHAiIC8+CkBAIC0x
MjQzNyw2ICsxMjQzOCw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdc
UmVuZGVyU2xpZGVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdc
UmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHJlbmRlcmluZ1xzaGFwZXNcUG9seWdvblNoYXBlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxyZW5kZXJpbmdcc2hhcGVzXFJhc3RlclNoYXBlLmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcc2hhcGVzXFJlY3RhbmdsZVNoYXBlLmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcc2hhcGVzXFNoYXBlLmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcc2hhcGVzXFNoYXBlSW5zaWRlSW5mby5o
IiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IGI4MWE4YzguLmY3MGZiOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE4MzYsNiArMTgzNiw4IEBACiAJCTZF
NjdEMkE2MTI4MEU4QTQwMDg3NThGNyAvKiBFeHRlbnNpb25zM0RPcGVuR0wuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU2N0QyQTQxMjgwRThBNDAw
ODc1OEY3IC8qIEV4dGVuc2lvbnMzRE9wZW5HTC5jcHAgKi87IH07CiAJCTZFNjdEMkE3MTI4MEU4
QTQwMDg3NThGNyAvKiBFeHRlbnNpb25zM0RPcGVuR0wuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNjdEMkE1MTI4MEU4QTQwMDg3NThGNyAvKiBFeHRl
bnNpb25zM0RPcGVuR0wuaCAqLzsgfTsKIAkJNkU2N0QyQTkxMjgwRThCRDAwODc1OEY3IC8qIEV4
dGVuc2lvbnMzRC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNkU2N0QyQTgxMjgwRThCRDAwODc1OEY3IC8qIEV4dGVuc2lvbnMzRC5oICovOyB9OworCQk2
RTg0RTlFMDE3NjY4QkVFMDA4MTVCNjggLyogUmFzdGVyU2hhcGUuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU4NEU5REUxNzY2OEJBRDAwODE1QjY4
IC8qIFJhc3RlclNoYXBlLmNwcCAqLzsgfTsKKwkJNkU4NEU5RTExNzY2OEJGMTAwODE1QjY4IC8q
IFJhc3RlclNoYXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA2RTg0RTlERjE3NjY4QkFEMDA4MTVCNjggLyogUmFzdGVyU2hhcGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2RUJDNUVBRjEzOEI1MEYy
MDBBMENGOEEgLyogSlNGbG9hdDY0QXJyYXkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNkVCQzVFQUQxMzhCNTBGMjAwQTBDRjhBIC8qIEpTRmxvYXQ2
NEFycmF5LmNwcCAqLzsgfTsKIAkJNkVCQzVFQjAxMzhCNTBGMjAwQTBDRjhBIC8qIEpTRmxvYXQ2
NEFycmF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2
RUJDNUVBRTEzOEI1MEYyMDBBMENGOEEgLyogSlNGbG9hdDY0QXJyYXkuaCAqLzsgfTsKIAkJNkVC
RjBFNDgxMkE4OTI2MTAwREIxNzA5IC8qIE9FU1RleHR1cmVGbG9hdC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RUJGMEU0NTEyQTg5MjYxMDBEQjE3
MDkgLyogT0VTVGV4dHVyZUZsb2F0LmNwcCAqLzsgfTsKQEAgLTgyMjgsNiArODIzMCw4IEBACiAJ
CTZFNjdEMkE0MTI4MEU4QTQwMDg3NThGNyAvKiBFeHRlbnNpb25zM0RPcGVuR0wuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXh0ZW5zaW9uczNET3BlbkdMLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkU2N0QyQTUxMjgwRThBNDAwODc1OEY3IC8q
IEV4dGVuc2lvbnMzRE9wZW5HTC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBF
eHRlbnNpb25zM0RPcGVuR0wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkU2N0Qy
QTgxMjgwRThCRDAwODc1OEY3IC8qIEV4dGVuc2lvbnMzRC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBFeHRlbnNpb25zM0QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNkU4NEU5REUxNzY2OEJBRDAwODE1QjY4IC8qIFJhc3RlclNoYXBlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJhc3RlclNoYXBlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNkU4NEU5REYxNzY2OEJBRDAwODE1QjY4IC8qIFJhc3RlclNoYXBl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJhc3RlclNoYXBlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFQkM1RDgwMTM4QjRDNEUwMEEwQ0Y4QSAvKiBGbG9h
dDY0QXJyYXkuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IEZsb2F0NjRBcnJheS5pZGw7IHBh
dGggPSBjYW52YXMvRmxvYXQ2NEFycmF5LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNkVCQzVFQUQxMzhCNTBGMjAwQTBDRjhBIC8qIEpTRmxvYXQ2NEFycmF5LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRmxvYXQ2NEFycmF5LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkVCQzVFQUUxMzhCNTBGMjAwQTBDRjhBIC8qIEpTRmxv
YXQ2NEFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRmxvYXQ2NEFy
cmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDUzOCw2ICsyMDU0Miw4IEBA
CiAJCQljaGlsZHJlbiA9ICgKIAkJCQlGRDA4QTg3QTE3NUQzOTI2MDAyQ0QzNjAgLyogUG9seWdv
blNoYXBlLmNwcCAqLywKIAkJCQlGRDA4QTg3QjE3NUQzOTI2MDAyQ0QzNjAgLyogUG9seWdvblNo
YXBlLmggKi8sCisJCQkJNkU4NEU5REUxNzY2OEJBRDAwODE1QjY4IC8qIFJhc3RlclNoYXBlLmNw
cCAqLywKKwkJCQk2RTg0RTlERjE3NjY4QkFEMDA4MTVCNjggLyogUmFzdGVyU2hhcGUuaCAqLywK
IAkJCQlGRDA4QTg3QzE3NUQzOTI2MDAyQ0QzNjAgLyogUmVjdGFuZ2xlU2hhcGUuY3BwICovLAog
CQkJCUZEMDhBODdEMTc1RDM5MjYwMDJDRDM2MCAvKiBSZWN0YW5nbGVTaGFwZS5oICovLAogCQkJ
CUZEMDhBODdFMTc1RDM5MjYwMDJDRDM2MCAvKiBTaGFwZS5jcHAgKi8sCkBAIC0yMDg1OCw2ICsy
MDg2NCw3IEBACiAJCQlmaWxlcyA9ICgKIAkJCQlGRTExNUZBQjE2Nzk4OENEMDAyNDkxMzQgLyog
QWJzdHJhY3REYXRhYmFzZVNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkU0QUFERUUxNkQy
QzM3NDAwMDI2RkZDIC8qIEFic3RyYWN0U1FMU3RhdGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJ
CQk2RTg0RTlFMTE3NjY4QkYxMDA4MTVCNjggLyogUmFzdGVyU2hhcGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUZFNEFBREVGMTZEMkMzNzQwMDAyNkZGQyAvKiBBYnN0cmFjdFNRTFN0YXRlbWVudEJh
Y2tlbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRTFCMUQxMEZGNTk4NjkwMDU3NkIzQiAvKiBB
YnN0cmFjdFdvcmtlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjlBODEyMkUwRkJCOUMxRDAwNTEw
MjkzIC8qIEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuaCBpbiBIZWFkZXJzICovLApAQCAtMjY5
NDcsNiArMjY5NTQsNyBAQAogCQkJCUJFNkRGNzExMTcxQ0EyREEwMERENTJCOCAvKiBKU0F1ZGlv
VHJhY2tDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkU2REY3MTMxNzFDQTJEQTAwREQ1
MkI4IC8qIEpTQXVkaW9UcmFja0xpc3RDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkI3
MTlDNDAxNzIzOENBRTAwMjJERTM0IC8qIFdlYktpdENTU01hdEZ1bmN0aW9uVmFsdWUuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJNkU4NEU5RTAxNzY2OEJFRTAwODE1QjY4IC8qIFJhc3RlclNoYXBl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5j
cHAKaW5kZXggNmUwMTQwMS4uNWQyM2M2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suY3BwCkBAIC0xNDM1LDYgKzE0MzUsMjEgQEAgdm9pZCBSZW5kZXJCbG9jazo6bGF5
b3V0KCkKIH0KIAogI2lmIEVOQUJMRShDU1NfU0hBUEVTKQordm9pZCBSZW5kZXJCbG9jazo6aW1h
Z2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciBpbWFnZSwgY29uc3QgSW50UmVjdCopCit7CisgICAg
UmVuZGVyQm94OjppbWFnZUNoYW5nZWQoaW1hZ2UpOworCisgICAgaWYgKCFwYXJlbnQoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgU2hhcGVWYWx1ZSogc2hhcGVWYWx1ZSA9IHN0eWxlKCktPnNo
YXBlSW5zaWRlKCk7CisgICAgaWYgKHNoYXBlVmFsdWUgJiYgc2hhcGVWYWx1ZS0+aW1hZ2UoKSAm
JiBzaGFwZVZhbHVlLT5pbWFnZSgpLT5kYXRhKCkgPT0gaW1hZ2UpIHsKKyAgICAgICAgU2hhcGVJ
bnNpZGVJbmZvKiBzaGFwZUluc2lkZUluZm8gPSBlbnN1cmVTaGFwZUluc2lkZUluZm8oKTsKKyAg
ICAgICAgc2hhcGVJbnNpZGVJbmZvLT5kaXJ0eVNoYXBlU2l6ZSgpOworICAgICAgICBtYXJrU2hh
cGVJbnNpZGVEZXNjZW5kYW50c0ZvckxheW91dCgpOworICAgIH0KK30KKwogdm9pZCBSZW5kZXJC
bG9jazo6dXBkYXRlU2hhcGVJbnNpZGVJbmZvQWZ0ZXJTdHlsZUNoYW5nZShjb25zdCBTaGFwZVZh
bHVlKiBzaGFwZUluc2lkZSwgY29uc3QgU2hhcGVWYWx1ZSogb2xkU2hhcGVJbnNpZGUpCiB7CiAg
ICAgLy8gRklYTUU6IEEgZnV0dXJlIG9wdGltaXphdGlvbiB3b3VsZCBkbyBhIGRlZXAgY29tcGFy
aXNvbiBmb3IgZXF1YWxpdHkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCmlu
ZGV4IDMzZWMxYzkuLjNkYWZhOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
ay5oCkBAIC00NjgsNiArNDY4LDcgQEAgcHVibGljOgogICAgIHZvaWQgbWFya1NoYXBlSW5zaWRl
RGVzY2VuZGFudHNGb3JMYXlvdXQoKTsKICAgICBTaGFwZUluc2lkZUluZm8qIGxheW91dFNoYXBl
SW5zaWRlSW5mbygpIGNvbnN0OwogICAgIGJvb2wgYWxsb3dzU2hhcGVJbnNpZGVJbmZvU2hhcmlu
ZygpIGNvbnN0IHsgcmV0dXJuICFpc0lubGluZSgpICYmICFpc0Zsb2F0aW5nKCk7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgaW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciwgY29uc3QgSW50UmVjdCog
PSAwKSBPVkVSUklERTsKICNlbmRpZgogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IDBjODNjY2EuLjE0MTEwNjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC0xODQ0LDYgKzE4NDQsMTAgQEAg
dm9pZCBSZW5kZXJPYmplY3Q6OnNldFN0eWxlKFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxl
KQogICAgIHVwZGF0ZUltYWdlKG9sZFN0eWxlID8gb2xkU3R5bGUtPmJvcmRlckltYWdlKCkuaW1h
Z2UoKSA6IDAsIG1fc3R5bGUgPyBtX3N0eWxlLT5ib3JkZXJJbWFnZSgpLmltYWdlKCkgOiAwKTsK
ICAgICB1cGRhdGVJbWFnZShvbGRTdHlsZSA/IG9sZFN0eWxlLT5tYXNrQm94SW1hZ2UoKS5pbWFn
ZSgpIDogMCwgbV9zdHlsZSA/IG1fc3R5bGUtPm1hc2tCb3hJbWFnZSgpLmltYWdlKCkgOiAwKTsK
IAorI2lmIEVOQUJMRShDU1NfU0hBUEVTKQorICAgIHVwZGF0ZVNoYXBlSW1hZ2Uob2xkU3R5bGUg
PyBvbGRTdHlsZS0+c2hhcGVJbnNpZGUoKSA6IDAsIG1fc3R5bGUgPyBtX3N0eWxlLT5zaGFwZUlu
c2lkZSgpIDogMCk7CisjZW5kaWYKKwogICAgIC8vIFdlIG5lZWQgdG8gZW5zdXJlIHRoYXQgdmll
dy0+bWF4aW1hbE91dGxpbmVTaXplKCkgaXMgdmFsaWQgZm9yIGFueSByZXBhaW50cyB0aGF0IGhh
cHBlbgogICAgIC8vIGR1cmluZyBzdHlsZURpZENoYW5nZSAoaXQncyB1c2VkIGJ5IGNsaXBwZWRP
dmVyZmxvd1JlY3RGb3JSZXBhaW50KCkpLgogICAgIGlmIChtX3N0eWxlLT5vdXRsaW5lV2lkdGgo
KSA+IDAgJiYgbV9zdHlsZS0+b3V0bGluZVNpemUoKSA+IG1heGltYWxPdXRsaW5lU2l6ZShQYWlu
dFBoYXNlT3V0bGluZSkpCkBAIC0yMDk2LDYgKzIxMDAsMTQgQEAgdm9pZCBSZW5kZXJPYmplY3Q6
OnVwZGF0ZUltYWdlKFN0eWxlSW1hZ2UqIG9sZEltYWdlLCBTdHlsZUltYWdlKiBuZXdJbWFnZSkK
ICAgICB9CiB9CiAKKyNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKK3ZvaWQgUmVuZGVyT2JqZWN0Ojp1
cGRhdGVTaGFwZUltYWdlKGNvbnN0IFNoYXBlVmFsdWUqIG9sZFNoYXBlVmFsdWUsIGNvbnN0IFNo
YXBlVmFsdWUqIG5ld1NoYXBlVmFsdWUpCit7CisgICAgaWYgKG9sZFNoYXBlVmFsdWUgfHwgbmV3
U2hhcGVWYWx1ZSkKKyAgICAgICAgdXBkYXRlSW1hZ2Uob2xkU2hhcGVWYWx1ZSA/IG9sZFNoYXBl
VmFsdWUtPmltYWdlKCkgOiAwLCBuZXdTaGFwZVZhbHVlID8gbmV3U2hhcGVWYWx1ZS0+aW1hZ2Uo
KSA6IDApOworfQorI2VuZGlmCisKIExheW91dFJlY3QgUmVuZGVyT2JqZWN0Ojp2aWV3UmVjdCgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIHZpZXcoKS0+dmlld1JlY3QoKTsKQEAgLTI2MTQsNiArMjYy
NiwxNiBAQCB2b2lkIFJlbmRlck9iamVjdDo6ZGVzdHJveSgpCiAgICAgYXJlbmFEZWxldGUocmVu
ZGVyQXJlbmEoKSwgdGhpcyk7CiB9CiAKKyNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKK3ZvaWQgUmVu
ZGVyT2JqZWN0OjpyZW1vdmVTaGFwZUltYWdlQ2xpZW50KFNoYXBlVmFsdWUqIHNoYXBlVmFsdWUp
Cit7CisgICAgaWYgKCFzaGFwZVZhbHVlKQorICAgICAgICByZXR1cm47CisgICAgaWYgKFN0eWxl
SW1hZ2UqIHNoYXBlSW1hZ2UgPSBzaGFwZVZhbHVlLT5pbWFnZSgpKQorICAgICAgICBzaGFwZUlt
YWdlLT5yZW1vdmVDbGllbnQodGhpcyk7Cit9CisjZW5kaWYKKwogdm9pZCBSZW5kZXJPYmplY3Q6
OmFyZW5hRGVsZXRlKFJlbmRlckFyZW5hKiBhcmVuYSwgdm9pZCogYmFzZSkKIHsKICAgICBpZiAo
bV9zdHlsZSkgewpAQCAtMjYzMiw2ICsyNjU0LDEwIEBAIHZvaWQgUmVuZGVyT2JqZWN0OjphcmVu
YURlbGV0ZShSZW5kZXJBcmVuYSogYXJlbmEsIHZvaWQqIGJhc2UpCiAKICAgICAgICAgaWYgKFN0
eWxlSW1hZ2UqIG1hc2tCb3hJbWFnZSA9IG1fc3R5bGUtPm1hc2tCb3hJbWFnZSgpLmltYWdlKCkp
CiAgICAgICAgICAgICBtYXNrQm94SW1hZ2UtPnJlbW92ZUNsaWVudCh0aGlzKTsKKworI2lmIEVO
QUJMRShDU1NfU0hBUEVTKQorICAgICAgICByZW1vdmVTaGFwZUltYWdlQ2xpZW50KG1fc3R5bGUt
PnNoYXBlSW5zaWRlKCkpOworI2VuZGlmCiAgICAgfQogCiAjaWZuZGVmIE5ERUJVRwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCmluZGV4IDgwODA5MjMuLjg0MzcyNWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKQEAgLTcwMyw2ICs3MDMsOSBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIHVwZGF0ZUZpbGxJbWFnZXMoY29uc3QgRmlsbExheWVyKiwg
Y29uc3QgRmlsbExheWVyKik7CiAgICAgdm9pZCB1cGRhdGVJbWFnZShTdHlsZUltYWdlKiwgU3R5
bGVJbWFnZSopOworI2lmIEVOQUJMRShDU1NfU0hBUEVTKQorICAgIHZvaWQgdXBkYXRlU2hhcGVJ
bWFnZShjb25zdCBTaGFwZVZhbHVlKiwgY29uc3QgU2hhcGVWYWx1ZSopOworI2VuZGlmCiAKICAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKIApA
QCAtMTAzMyw2ICsxMDM2LDEwIEBAIHByaXZhdGU6CiAKICAgICBDb2xvciBzZWxlY3Rpb25Db2xv
cihpbnQgY29sb3JQcm9wZXJ0eSkgY29uc3Q7CiAKKyNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKKyAg
ICB2b2lkIHJlbW92ZVNoYXBlSW1hZ2VDbGllbnQoU2hhcGVWYWx1ZSopOworI2VuZGlmCisKICNp
Zm5kZWYgTkRFQlVHCiAgICAgdm9pZCBjaGVja0Jsb2NrUG9zaXRpb25lZE9iamVjdHNOZWVkTGF5
b3V0KCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFw
ZXMvUmFzdGVyU2hhcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SYXN0
ZXJTaGFwZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGM4NjAzMQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmFzdGVy
U2hhcGUuY3BwCkBAIC0wLDAgKzEsMTYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFk
b2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAg
ICBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscworICogICAgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MKKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFCisgKiBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsCisgKiBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICogU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsCisgKiBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VECisgKiBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlJhc3RlclNoYXBlLmgiCisKKyNpbmNsdWRlICJTaGFwZUludGVydmFsLmgiCisj
aW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitJbnRS
ZWN0IFJhc3RlclNoYXBlSW50ZXJ2YWxzOjpib3VuZHMoKSBjb25zdAoreworICAgIGlmICghbV9i
b3VuZHMpCisgICAgICAgIG1fYm91bmRzID0gYWRvcHRQdHIobmV3IEludFJlY3QobV9yZWdpb24u
Ym91bmRzKCkpKTsKKyAgICByZXR1cm4gKm1fYm91bmRzOworfQorCit2b2lkIFJhc3RlclNoYXBl
SW50ZXJ2YWxzOjphZGRJbnRlcnZhbChpbnQgeSwgaW50IHgxLCBpbnQgeDIpCit7CisgICAgbV9y
ZWdpb24udW5pdGUoUmVnaW9uKEludFJlY3QoeDEsIHksIHgyIC0geDEsIDEpKSk7CisgICAgbV9i
b3VuZHMuY2xlYXIoKTsKK30KKworc3RhdGljIGlubGluZSBJbnRSZWN0IGFsaWduZWRSZWN0KElu
dFJlY3QgciwgaW50IHkxLCBpbnQgeTIpCit7CisgICAgcmV0dXJuIEludFJlY3Qoci54KCksIHkx
LCByLndpZHRoKCksIHkyIC0geTEpOworfQorCit2b2lkIFJhc3RlclNoYXBlSW50ZXJ2YWxzOjpn
ZXRJbmNsdWRlZEludGVydmFscyhpbnQgeTEsIGludCB5MiwgU2VnbWVudExpc3QmIHJlc3VsdCkg
Y29uc3QKK3sKKyAgICBBU1NFUlQoeTIgPj0geTEpOworCisgICAgSW50UmVjdCBsaW5lUmVjdChi
b3VuZHMoKS54KCksIHkxLCBib3VuZHMoKS53aWR0aCgpLCB5MiAtIHkxKTsKKyAgICBSZWdpb24g
bGluZVJlZ2lvbihsaW5lUmVjdCk7CisgICAgbGluZVJlZ2lvbi5pbnRlcnNlY3QobV9yZWdpb24p
OworICAgIGlmIChsaW5lUmVnaW9uLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
VmVjdG9yPEludFJlY3Q+IGxpbmVSZWN0cyA9IGxpbmVSZWdpb24ucmVjdHMoKTsKKyAgICBBU1NF
UlQobGluZVJlY3RzLnNpemUoKSA+IDApOworCisgICAgUmVnaW9uIHNlZ21lbnRzUmVnaW9uKGxp
bmVSZWN0KTsKKyAgICBSZWdpb24gaW50ZXJ2YWxzUmVnaW9uOworCisgICAgLy8gVGhlIGxvb3Ag
YmVsb3cgdXNlcyBSZWdpb25zIHRvIGNvbXB1dGUgdGhlIGludGVyc2VjdGlvbiBvZiB0aGUgaG9y
aXpvbnRhbAorICAgIC8vIHNoYXBlIGludGVydmFscyB0aGF0IGZhbGwgd2l0aGluIHRoZSBsaW5l
J3MgYm94LgorCisgICAgaW50IGxpbmVZID0gbGluZVJlY3RzWzBdLnkoKTsKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbGluZVJlY3RzLnNpemUoKTsgaSsrKSB7CisgICAgICAgIGlmIChs
aW5lUmVjdHNbaV0ueSgpICE9IGxpbmVZKSB7CisgICAgICAgICAgICBzZWdtZW50c1JlZ2lvbi5p
bnRlcnNlY3QoaW50ZXJ2YWxzUmVnaW9uKTsKKyAgICAgICAgICAgIGludGVydmFsc1JlZ2lvbiA9
IFJlZ2lvbigpOworICAgICAgICB9CisgICAgICAgIGludGVydmFsc1JlZ2lvbi51bml0ZShSZWdp
b24oYWxpZ25lZFJlY3QobGluZVJlY3RzW2ldLCB5MSwgeTIpKSk7CisgICAgICAgIGxpbmVZID0g
bGluZVJlY3RzW2ldLnkoKTsKKyAgICB9CisgICAgaWYgKCFpbnRlcnZhbHNSZWdpb24uaXNFbXB0
eSgpKQorICAgICAgICBzZWdtZW50c1JlZ2lvbi5pbnRlcnNlY3QoaW50ZXJ2YWxzUmVnaW9uKTsK
KworICAgIFZlY3RvcjxJbnRSZWN0PiBzZWdtZW50UmVjdHMgPSBzZWdtZW50c1JlZ2lvbi5yZWN0
cygpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzZWdtZW50UmVjdHMuc2l6ZSgpOyBp
KyspCisgICAgICAgIHJlc3VsdC5hcHBlbmQoTGluZVNlZ21lbnQoc2VnbWVudFJlY3RzW2ldLngo
KSwgc2VnbWVudFJlY3RzW2ldLm1heFgoKSkpOworfQorCitjb25zdCBSYXN0ZXJTaGFwZUludGVy
dmFscyYgUmFzdGVyU2hhcGU6Om1hcmdpbkludGVydmFscygpIGNvbnN0Cit7CisgICAgQVNTRVJU
KHNoYXBlTWFyZ2luKCkgPj0gMCk7CisgICAgaWYgKCFzaGFwZU1hcmdpbigpKQorICAgICAgICBy
ZXR1cm4gKm1faW50ZXJ2YWxzOworCisgICAgLy8gRklYTUU6IGFkZCBzdXBwb3J0IGZvciBub24t
emVybyBtYXJnaW4KKyAgICByZXR1cm4gKm1faW50ZXJ2YWxzOworfQorCitjb25zdCBSYXN0ZXJT
aGFwZUludGVydmFscyYgUmFzdGVyU2hhcGU6OnBhZGRpbmdJbnRlcnZhbHMoKSBjb25zdAorewor
ICAgIEFTU0VSVChzaGFwZVBhZGRpbmcoKSA+PSAwKTsKKyAgICBpZiAoIXNoYXBlUGFkZGluZygp
KQorICAgICAgICByZXR1cm4gKm1faW50ZXJ2YWxzOworCisgICAgLy8gRklYTUU6IGFkZCBzdXBw
b3J0IGZvciBub24temVybyBwYWRkaW5nCisgICAgcmV0dXJuICptX2ludGVydmFsczsKK30KKwor
dm9pZCBSYXN0ZXJTaGFwZTo6Z2V0RXhjbHVkZWRJbnRlcnZhbHMoTGF5b3V0VW5pdCBsb2dpY2Fs
VG9wLCBMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIFNlZ21lbnRMaXN0JiByZXN1bHQpIGNvbnN0
Cit7CisgICAgVU5VU0VEX1BBUkFNKHJlc3VsdCk7CisKKyAgICBjb25zdCBSYXN0ZXJTaGFwZUlu
dGVydmFscyYgaW50ZXJ2YWxzID0gbWFyZ2luSW50ZXJ2YWxzKCk7CisgICAgaWYgKGludGVydmFs
cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGZsb2F0IHkxID0gbG9naWNhbFRv
cDsKKyAgICBmbG9hdCB5MiA9IGxvZ2ljYWxUb3AgKyBsb2dpY2FsSGVpZ2h0OworCisgICAgaWYg
KHkyIDwgaW50ZXJ2YWxzLmJvdW5kcygpLnkoKSB8fCB5MSA+PSBpbnRlcnZhbHMuYm91bmRzKCku
bWF4WSgpKQorICAgICAgICByZXR1cm47Cit9CisKK3ZvaWQgUmFzdGVyU2hhcGU6OmdldEluY2x1
ZGVkSW50ZXJ2YWxzKExheW91dFVuaXQgbG9naWNhbFRvcCwgTGF5b3V0VW5pdCBsb2dpY2FsSGVp
Z2h0LCBTZWdtZW50TGlzdCYgcmVzdWx0KSBjb25zdAoreworICAgIGNvbnN0IFJhc3RlclNoYXBl
SW50ZXJ2YWxzJiBpbnRlcnZhbHMgPSBwYWRkaW5nSW50ZXJ2YWxzKCk7CisgICAgaWYgKGludGVy
dmFscy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGZsb2F0IHkxID0gbG9naWNh
bFRvcDsKKyAgICBmbG9hdCB5MiA9IGxvZ2ljYWxUb3AgKyBsb2dpY2FsSGVpZ2h0OworCisgICAg
aWYgKHkxIDwgaW50ZXJ2YWxzLmJvdW5kcygpLnkoKSB8fCB5MiA+IGludGVydmFscy5ib3VuZHMo
KS5tYXhZKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGludGVydmFscy5nZXRJbmNsdWRlZElu
dGVydmFscyh5MSwgeTIsIHJlc3VsdCk7Cit9CisKK2Jvb2wgUmFzdGVyU2hhcGU6OmZpcnN0SW5j
bHVkZWRJbnRlcnZhbExvZ2ljYWxUb3AoTGF5b3V0VW5pdCBtaW5Mb2dpY2FsSW50ZXJ2YWxUb3As
IGNvbnN0IExheW91dFNpemUmIG1pbkxvZ2ljYWxJbnRlcnZhbFNpemUsIExheW91dFVuaXQmIHJl
c3VsdCkgY29uc3QKK3sKKyAgICBmbG9hdCBtaW5JbnRlcnZhbFRvcCA9IG1pbkxvZ2ljYWxJbnRl
cnZhbFRvcDsKKyAgICBmbG9hdCBtaW5JbnRlcnZhbEhlaWdodCA9IG1pbkxvZ2ljYWxJbnRlcnZh
bFNpemUuaGVpZ2h0KCk7CisgICAgZmxvYXQgbWluSW50ZXJ2YWxXaWR0aCA9IG1pbkxvZ2ljYWxJ
bnRlcnZhbFNpemUud2lkdGgoKTsKKworICAgIGNvbnN0IFJhc3RlclNoYXBlSW50ZXJ2YWxzJiBp
bnRlcnZhbHMgPSBwYWRkaW5nSW50ZXJ2YWxzKCk7CisgICAgaWYgKGludGVydmFscy5pc0VtcHR5
KCkgfHwgbWluSW50ZXJ2YWxXaWR0aCA+IGludGVydmFscy5ib3VuZHMoKS53aWR0aCgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBmbG9hdCBtaW5ZID0gc3RkOjptYXg8ZmxvYXQ+KGlu
dGVydmFscy5ib3VuZHMoKS55KCksIG1pbkludGVydmFsVG9wKTsKKyAgICBmbG9hdCBtYXhZID0g
bWluWSArIG1pbkludGVydmFsSGVpZ2h0OworCisgICAgaWYgKG1heFkgPiBpbnRlcnZhbHMuYm91
bmRzKCkubWF4WSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBGSVhNRTogY29t
cGxldGUgdGhpcyBtZXRob2QKKyAgICByZXN1bHQgPSBtaW5ZOworICAgIHJldHVybiB0cnVlOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c2hhcGVzL1Jhc3RlclNoYXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
YTMwNWQ0MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFw
ZXMvUmFzdGVyU2hhcGUuaApAQCAtMCwwICsxLDgwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEzIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKKyAqICAgIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
CisgKiAgICBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscworICogICAgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MKKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFCisgKiBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsCisgKiBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgor
ICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCisgKiBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VECisgKiBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBSYXN0ZXJT
aGFwZV9oCisjZGVmaW5lIFJhc3RlclNoYXBlX2gKKworI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgor
I2luY2x1ZGUgIlJlZ2lvbi5oIgorI2luY2x1ZGUgIlNoYXBlLmgiCisjaW5jbHVkZSA8d3RmL0Fz
c2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgUmFzdGVyU2hhcGVJbnRlcnZhbHMgeworcHVibGljOgorICAgIFJhc3RlclNo
YXBlSW50ZXJ2YWxzKCkgeyB9CisKKyAgICBJbnRSZWN0IGJvdW5kcygpIGNvbnN0OworICAgIGJv
b2wgaXNFbXB0eSgpIGNvbnN0ICB7IHJldHVybiBtX3JlZ2lvbi5pc0VtcHR5KCk7IH0KKyAgICB2
b2lkIGFkZEludGVydmFsKGludCB5LCBpbnQgeDEsIGludCB4Mik7CisgICAgdm9pZCBnZXRJbmNs
dWRlZEludGVydmFscyhpbnQgeTEsIGludCB5MiwgU2VnbWVudExpc3QmKSBjb25zdDsKKworcHJp
dmF0ZToKKyAgICBSZWdpb24gbV9yZWdpb247CisgICAgbXV0YWJsZSBPd25QdHI8SW50UmVjdD4g
bV9ib3VuZHM7IC8vIENhY2hlZCB2YWx1ZSBvZiBtX3JlZ2lvbi5ib3VuZHMoKS4KK307CisKK2Ns
YXNzIFJhc3RlclNoYXBlIDogcHVibGljIFNoYXBlIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShSYXN0ZXJTaGFwZSk7CitwdWJsaWM6CisgICAgUmFzdGVyU2hhcGUoUGFzc093blB0cjxSYXN0
ZXJTaGFwZUludGVydmFscz4gaW50ZXJ2YWxzKQorICAgICAgICA6IFNoYXBlKCkKKyAgICAgICAg
LCBtX2ludGVydmFscyhpbnRlcnZhbHMpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgTGF5
b3V0UmVjdCBzaGFwZU1hcmdpbkxvZ2ljYWxCb3VuZGluZ0JveCgpIGNvbnN0IE9WRVJSSURFIHsg
cmV0dXJuIHN0YXRpY19jYXN0PExheW91dFJlY3Q+KG1hcmdpbkludGVydmFscygpLmJvdW5kcygp
KTsgfQorICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBzaGFwZVBhZGRpbmdMb2dpY2FsQm91bmRpbmdC
b3goKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBzdGF0aWNfY2FzdDxMYXlvdXRSZWN0PihwYWRk
aW5nSW50ZXJ2YWxzKCkuYm91bmRzKCkpOyB9CisgICAgdmlydHVhbCBib29sIGlzRW1wdHkoKSBj
b25zdCBPVkVSUklERSB7IHJldHVybiBtX2ludGVydmFscy0+aXNFbXB0eSgpOyB9CisgICAgdmly
dHVhbCB2b2lkIGdldEV4Y2x1ZGVkSW50ZXJ2YWxzKExheW91dFVuaXQgbG9naWNhbFRvcCwgTGF5
b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBTZWdtZW50TGlzdCYpIGNvbnN0IE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBnZXRJbmNsdWRlZEludGVydmFscyhMYXlvdXRVbml0IGxvZ2ljYWxUb3As
IExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgU2VnbWVudExpc3QmKSBjb25zdCBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIGJvb2wgZmlyc3RJbmNsdWRlZEludGVydmFsTG9naWNhbFRvcChMYXlvdXRV
bml0IG1pbkxvZ2ljYWxJbnRlcnZhbFRvcCwgY29uc3QgTGF5b3V0U2l6ZSYgbWluTG9naWNhbElu
dGVydmFsU2l6ZSwgTGF5b3V0VW5pdCYpIGNvbnN0IE9WRVJSSURFOworCitwcml2YXRlOgorICAg
IGNvbnN0IFJhc3RlclNoYXBlSW50ZXJ2YWxzJiBtYXJnaW5JbnRlcnZhbHMoKSBjb25zdDsKKyAg
ICBjb25zdCBSYXN0ZXJTaGFwZUludGVydmFscyYgcGFkZGluZ0ludGVydmFscygpIGNvbnN0Owor
CisgICAgT3duUHRyPFJhc3RlclNoYXBlSW50ZXJ2YWxzPiBtX2ludGVydmFsczsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFJhc3RlclNoYXBlX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKaW5kZXggODEwYWM1NS4uYWI2YTgwNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKQEAgLTMxLDkgKzMx
LDEyIEBACiAjaW5jbHVkZSAiU2hhcGUuaCIKIAogI2luY2x1ZGUgIkJhc2ljU2hhcGVGdW5jdGlv
bnMuaCIKKyNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgor
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiTGVuZ3RoRnVuY3Rpb25z
LmgiCiAjaW5jbHVkZSAiUG9seWdvblNoYXBlLmgiCisjaW5jbHVkZSAiUmFzdGVyU2hhcGUuaCIK
ICNpbmNsdWRlICJSZWN0YW5nbGVTaGFwZS5oIgogI2luY2x1ZGUgIldpbmRSdWxlLmgiCiAjaW5j
bHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KQEAgLTIwMCw0ICsyMDMsNzEgQEAgUGFzc093blB0cjxT
aGFwZT4gU2hhcGU6OmNyZWF0ZVNoYXBlKGNvbnN0IEJhc2ljU2hhcGUqIGJhc2ljU2hhcGUsIGNv
bnN0IExheW91dFMKICAgICByZXR1cm4gc2hhcGUucmVsZWFzZSgpOwogfQogCisjaWYgVVNFKDNE
X0dSQVBISUNTKQorUGFzc093blB0cjxTaGFwZT4gU2hhcGU6OmNyZWF0ZVNoYXBlKGNvbnN0IFN0
eWxlSW1hZ2UqIHN0eWxlSW1hZ2UsIGZsb2F0IHRocmVzaG9sZCwgY29uc3QgTGF5b3V0U2l6ZSYg
bG9naWNhbEJveFNpemUsIFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBMZW5ndGggbWFyZ2luLCBM
ZW5ndGggcGFkZGluZykKK3sKKyAgICAvLyBGSVhNRTogU2hvdWxkIGNsaXAgc2hhcGUgdG8gbG9n
aWNhbCBib3guCisgICAgVU5VU0VEX1BBUkFNKGxvZ2ljYWxCb3hTaXplKTsKKworICAgIEFTU0VS
VChzdHlsZUltYWdlICYmIHN0eWxlSW1hZ2UtPmlzQ2FjaGVkSW1hZ2UoKSAmJiBzdHlsZUltYWdl
LT5jYWNoZWRJbWFnZSgpICYmIHN0eWxlSW1hZ2UtPmNhY2hlZEltYWdlKCktPmltYWdlKCkpOwor
CisgICAgSW1hZ2UqIGltYWdlID0gc3R5bGVJbWFnZS0+Y2FjaGVkSW1hZ2UoKS0+aW1hZ2UoKTsK
KyAgICBHcmFwaGljc0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3IgaW1hZ2VFeHRyYWN0b3IoaW1h
Z2UsIEdyYXBoaWNzQ29udGV4dDNEOjpIdG1sRG9tTm9uZSwgZmFsc2UsIHRydWUpOworICAgIGlu
dCBpbWFnZVdpZHRoID0gc3RhdGljX2Nhc3Q8aW50PihpbWFnZUV4dHJhY3Rvci5pbWFnZVdpZHRo
KCkpOworICAgIGludCBpbWFnZUhlaWdodCA9IHN0YXRpY19jYXN0PGludD4oaW1hZ2VFeHRyYWN0
b3IuaW1hZ2VIZWlnaHQoKSk7CisKKyAgICBWZWN0b3I8dWludDhfdD4gYWxwaGFQaXhlbHM7Cisg
ICAgYm9vbCBwYWNrSW1hZ2VEYXRhT0sgPSBHcmFwaGljc0NvbnRleHQzRDo6cGFja0ltYWdlRGF0
YShpbWFnZSwgaW1hZ2VFeHRyYWN0b3IuaW1hZ2VQaXhlbERhdGEoKSwKKyAgICAgICAgR3JhcGhp
Y3NDb250ZXh0M0Q6OkFMUEhBLAorICAgICAgICBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURf
QllURSwKKyAgICAgICAgZmFsc2UsIC8qIGZsaXBZICovCisgICAgICAgIEdyYXBoaWNzQ29udGV4
dDNEOjpBbHBoYURvTm90aGluZywKKyAgICAgICAgaW1hZ2VFeHRyYWN0b3IuaW1hZ2VTb3VyY2VG
b3JtYXQoKSwKKyAgICAgICAgaW1hZ2VXaWR0aCwKKyAgICAgICAgaW1hZ2VIZWlnaHQsCisgICAg
ICAgIGltYWdlRXh0cmFjdG9yLmltYWdlU291cmNlVW5wYWNrQWxpZ25tZW50KCksCisgICAgICAg
IGFscGhhUGl4ZWxzKTsKKworICAgIE93blB0cjxSYXN0ZXJTaGFwZUludGVydmFscz4gaW50ZXJ2
YWxzID0gYWRvcHRQdHIobmV3IFJhc3RlclNoYXBlSW50ZXJ2YWxzKCkpOworICAgIHVpbnQ4X3Qg
YWxwaGFQaXhlbFRocmVzaG9sZCA9IHRocmVzaG9sZCAqIDI1NTsKKworICAgIGlmIChwYWNrSW1h
Z2VEYXRhT0spIHsKKyAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbWFnZVdp
ZHRoICogaW1hZ2VIZWlnaHQpID09IGFscGhhUGl4ZWxzLnNpemUoKSk7CisgICAgICAgIGZvciAo
aW50IHkgPSAwOyB5IDwgaW1hZ2VIZWlnaHQ7IHkrKykgeworICAgICAgICAgICAgaW50IHN0YXJ0
WCA9IC0xOworICAgICAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCBpbWFnZVdpZHRoOyB4Kysp
IHsKKyAgICAgICAgICAgICAgICB1aW50OF90IGFscGhhID0gYWxwaGFQaXhlbHNbeCArIHkgKiBp
bWFnZVdpZHRoXTsKKyAgICAgICAgICAgICAgICBpZiAoKHN0YXJ0WCA9PSAtMSkgJiYgYWxwaGEg
PiBhbHBoYVBpeGVsVGhyZXNob2xkKSB7CisgICAgICAgICAgICAgICAgICAgIHN0YXJ0WCA9IHg7
CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzdGFydFggIT0gLTEgJiYgKGFscGhhIDw9IGFs
cGhhUGl4ZWxUaHJlc2hvbGQgfHwgeCA9PSBpbWFnZVdpZHRoIC0gMSkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgaW50ZXJ2YWxzLT5hZGRJbnRlcnZhbCh5LCBzdGFydFgsIHgpOworICAgICAgICAg
ICAgICAgICAgICBzdGFydFggPSAtMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBPd25QdHI8UmFzdGVyU2hhcGU+IHJhc3RlclNoYXBl
ID0gYWRvcHRQdHIobmV3IFJhc3RlclNoYXBlKGludGVydmFscy5yZWxlYXNlKCkpKTsKKyAgICBy
YXN0ZXJTaGFwZS0+bV93cml0aW5nTW9kZSA9IHdyaXRpbmdNb2RlOworICAgIHJhc3RlclNoYXBl
LT5tX21hcmdpbiA9IGZsb2F0VmFsdWVGb3JMZW5ndGgobWFyZ2luLCAwKTsKKyAgICByYXN0ZXJT
aGFwZS0+bV9wYWRkaW5nID0gZmxvYXRWYWx1ZUZvckxlbmd0aChwYWRkaW5nLCAwKTsKKworICAg
IHJldHVybiByYXN0ZXJTaGFwZS5yZWxlYXNlKCk7Cit9CisjZWxzZQorUGFzc093blB0cjxTaGFw
ZT4gU2hhcGU6OmNyZWF0ZVNoYXBlKGNvbnN0IFN0eWxlSW1hZ2UqIHN0eWxlSW1hZ2UsIGZsb2F0
IHRocmVzaG9sZCwgY29uc3QgTGF5b3V0U2l6ZSYgbG9naWNhbEJveFNpemUsIFdyaXRpbmdNb2Rl
IHdyaXRpbmdNb2RlLCBMZW5ndGggbWFyZ2luLCBMZW5ndGggcGFkZGluZykKK3sKKyAgICBVTlVT
RURfUEFSQU0oc3R5bGVJbWFnZSk7CisgICAgVU5VU0VEX1BBUkFNKHRocmVzaG9sZCk7CisgICAg
VU5VU0VEX1BBUkFNKGxvZ2ljYWxCb3hTaXplKTsKKworICAgIE93blB0cjxSYXN0ZXJTaGFwZT4g
cmFzdGVyU2hhcGUgPSBhZG9wdFB0cihuZXcgUmFzdGVyU2hhcGUoYWRvcHRQdHIobmV3IFJhc3Rl
clNoYXBlSW50ZXJ2YWxzKCkpKSk7CisgICAgcmFzdGVyU2hhcGUtPm1fd3JpdGluZ01vZGUgPSB3
cml0aW5nTW9kZTsKKyAgICByYXN0ZXJTaGFwZS0+bV9tYXJnaW4gPSBmbG9hdFZhbHVlRm9yTGVu
Z3RoKG1hcmdpbiwgMCk7CisgICAgcmFzdGVyU2hhcGUtPm1fcGFkZGluZyA9IGZsb2F0VmFsdWVG
b3JMZW5ndGgocGFkZGluZywgMCk7CisKKyAgICByZXR1cm4gcmFzdGVyU2hhcGUucmVsZWFzZSgp
OworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zaGFwZXMvU2hhcGUuaAppbmRleCAwZDllY2ZkLi5mNzc1ZTVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5oCkBAIC0zMiw2ICszMiw3IEBACiAKICNpbmNsdWRl
ICJCYXNpY1NoYXBlcy5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKKyNpbmNsdWRlICJTdHls
ZUltYWdlLmgiCiAjaW5jbHVkZSAiV3JpdGluZ01vZGUuaCIKICNpbmNsdWRlIDx3dGYvUGFzc093
blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTYwLDYgKzYxLDcgQEAgdHlwZWRl
ZiBWZWN0b3I8TGluZVNlZ21lbnQ+IFNlZ21lbnRMaXN0OwogY2xhc3MgU2hhcGUgewogcHVibGlj
OgogICAgIHN0YXRpYyBQYXNzT3duUHRyPFNoYXBlPiBjcmVhdGVTaGFwZShjb25zdCBCYXNpY1No
YXBlKiwgY29uc3QgTGF5b3V0U2l6ZSYgbG9naWNhbEJveFNpemUsIFdyaXRpbmdNb2RlLCBMZW5n
dGggbWFyZ2luLCBMZW5ndGggcGFkZGluZyk7CisgICAgc3RhdGljIFBhc3NPd25QdHI8U2hhcGU+
IGNyZWF0ZVNoYXBlKGNvbnN0IFN0eWxlSW1hZ2UqLCBmbG9hdCB0aHJlc2hvbGQsIGNvbnN0IExh
eW91dFNpemUmIGxvZ2ljYWxCb3hTaXplLCBXcml0aW5nTW9kZSwgTGVuZ3RoIG1hcmdpbiwgTGVu
Z3RoIHBhZGRpbmcpOwogCiAgICAgdmlydHVhbCB+U2hhcGUoKSB7IH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUluZm8uY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUluZm8uY3BwCmluZGV4IGUxMTU1ODMuLmJmOTRl
NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVJbmZv
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW5mby5jcHAK
QEAgLTQ1LDEyICs0NSwyNiBAQCBjb25zdCBTaGFwZSogU2hhcGVJbmZvPFJlbmRlclR5cGUsIHNo
YXBlR2V0dGVyLCBpbnRlcnZhbEdldHRlcj46OmNvbXB1dGVkU2hhcGUoKQogICAgIGlmIChTaGFw
ZSogc2hhcGUgPSBtX3NoYXBlLmdldCgpKQogICAgICAgICByZXR1cm4gc2hhcGU7CiAKLSAgICBT
aGFwZVZhbHVlKiBzaGFwZVZhbHVlID0gKG1fcmVuZGVyZXItPnN0eWxlKCktPipzaGFwZUdldHRl
cikoKTsKLSAgICBCYXNpY1NoYXBlKiBzaGFwZSA9IChzaGFwZVZhbHVlICYmIHNoYXBlVmFsdWUt
PnR5cGUoKSA9PSBTaGFwZVZhbHVlOjpTaGFwZSkgPyBzaGFwZVZhbHVlLT5zaGFwZSgpIDogMDsK
KyAgICBjb25zdCBMYXlvdXRTaXplIGxvZ2ljYWxCb3hTaXplKG1fc2hhcGVMb2dpY2FsV2lkdGgs
IG1fc2hhcGVMb2dpY2FsSGVpZ2h0KTsKKyAgICBXcml0aW5nTW9kZSB3cml0aW5nTW9kZSA9IG1f
cmVuZGVyZXItPnN0eWxlKCktPndyaXRpbmdNb2RlKCk7CisgICAgTGVuZ3RoIG1hcmdpbiA9IG1f
cmVuZGVyZXItPnN0eWxlKCktPnNoYXBlTWFyZ2luKCk7CisgICAgTGVuZ3RoIHBhZGRpbmcgPSBt
X3JlbmRlcmVyLT5zdHlsZSgpLT5zaGFwZVBhZGRpbmcoKTsKKyAgICBjb25zdCBTaGFwZVZhbHVl
KiBzaGFwZVZhbHVlID0gKG1fcmVuZGVyZXItPnN0eWxlKCktPipzaGFwZUdldHRlcikoKTsKKyAg
ICBBU1NFUlQoc2hhcGVWYWx1ZSk7CiAKLSAgICBBU1NFUlQoc2hhcGUpOworICAgIHN3aXRjaCAo
c2hhcGVWYWx1ZS0+dHlwZSgpKSB7CisgICAgY2FzZSBTaGFwZVZhbHVlOjpTaGFwZToKKyAgICAg
ICAgQVNTRVJUKHNoYXBlVmFsdWUtPnNoYXBlKCkpOworICAgICAgICBtX3NoYXBlID0gU2hhcGU6
OmNyZWF0ZVNoYXBlKHNoYXBlVmFsdWUtPnNoYXBlKCksIGxvZ2ljYWxCb3hTaXplLCB3cml0aW5n
TW9kZSwgbWFyZ2luLCBwYWRkaW5nKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTaGFwZVZh
bHVlOjpJbWFnZToKKyAgICAgICAgQVNTRVJUKHNoYXBlVmFsdWUtPmltYWdlKCkpOworICAgICAg
ICBtX3NoYXBlID0gU2hhcGU6OmNyZWF0ZVNoYXBlKHNoYXBlVmFsdWUtPmltYWdlKCksIDAsIGxv
Z2ljYWxCb3hTaXplLCB3cml0aW5nTW9kZSwgbWFyZ2luLCBwYWRkaW5nKTsKKyAgICAgICAgYnJl
YWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQog
Ci0gICAgbV9zaGFwZSA9IFNoYXBlOjpjcmVhdGVTaGFwZShzaGFwZSwgTGF5b3V0U2l6ZShtX3No
YXBlTG9naWNhbFdpZHRoLCBtX3NoYXBlTG9naWNhbEhlaWdodCksIG1fcmVuZGVyZXItPnN0eWxl
KCktPndyaXRpbmdNb2RlKCksIG1fcmVuZGVyZXItPnN0eWxlKCktPnNoYXBlTWFyZ2luKCksIG1f
cmVuZGVyZXItPnN0eWxlKCktPnNoYXBlUGFkZGluZygpKTsKICAgICBBU1NFUlQobV9zaGFwZSk7
CiAgICAgcmV0dXJuIG1fc2hhcGUuZ2V0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW5zaWRlSW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW5zaWRlSW5mby5jcHAKaW5kZXggZDEyOTVkMC4uMWM4ZTEx
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUluc2lk
ZUluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVJbnNp
ZGVJbmZvLmNwcApAQCAtNDYsMTEgKzQ2LDE3IEBAIExpbmVTZWdtZW50UmFuZ2U6OkxpbmVTZWdt
ZW50UmFuZ2UoY29uc3QgSW5saW5lSXRlcmF0b3ImIHN0YXJ0LCBjb25zdCBJbmxpbmVJdGVyCiBi
b29sIFNoYXBlSW5zaWRlSW5mbzo6aXNFbmFibGVkRm9yKGNvbnN0IFJlbmRlckJsb2NrKiByZW5k
ZXJlcikKIHsKICAgICBTaGFwZVZhbHVlKiBzaGFwZVZhbHVlID0gcmVuZGVyZXItPnN0eWxlKCkt
PnJlc29sdmVkU2hhcGVJbnNpZGUoKTsKLSAgICBpZiAoIXNoYXBlVmFsdWUgfHwgc2hhcGVWYWx1
ZS0+dHlwZSgpICE9IFNoYXBlVmFsdWU6OlNoYXBlKQorICAgIGlmICghc2hhcGVWYWx1ZSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgQmFzaWNTaGFwZSogc2hhcGUgPSBzaGFwZVZhbHVl
LT5zaGFwZSgpOwotICAgIHJldHVybiBzaGFwZSAmJiBzaGFwZS0+dHlwZSgpICE9IEJhc2ljU2hh
cGU6OkJhc2ljU2hhcGVJbnNldFJlY3RhbmdsZVR5cGU7CisgICAgc3dpdGNoIChzaGFwZVZhbHVl
LT50eXBlKCkpIHsKKyAgICBjYXNlIFNoYXBlVmFsdWU6OlNoYXBlOgorICAgICAgICByZXR1cm4g
c2hhcGVWYWx1ZS0+c2hhcGUoKSAmJiBzaGFwZVZhbHVlLT5zaGFwZSgpLT50eXBlKCkgIT0gQmFz
aWNTaGFwZTo6QmFzaWNTaGFwZUluc2V0UmVjdGFuZ2xlVHlwZTsKKyAgICBjYXNlIFNoYXBlVmFs
dWU6OkltYWdlOgorICAgICAgICByZXR1cm4gc2hhcGVWYWx1ZS0+aXNJbWFnZVZhbGlkKCk7Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KIH0KIAogYm9vbCBTaGFw
ZUluc2lkZUluZm86OmFkanVzdExvZ2ljYWxMaW5lVG9wKGZsb2F0IG1pblNlZ21lbnRXaWR0aCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRl
SW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUlu
Zm8uY3BwCmluZGV4IGUxOTJmNjUuLmMzYjAzYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmNwcApAQCAtMzgsOCArMzgsMTgg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGJvb2wgU2hhcGVPdXRzaWRlSW5mbzo6aXNFbmFibGVk
Rm9yKGNvbnN0IFJlbmRlckJveCogYm94KQogewotICAgIFNoYXBlVmFsdWUqIHZhbHVlID0gYm94
LT5zdHlsZSgpLT5zaGFwZU91dHNpZGUoKTsKLSAgICByZXR1cm4gYm94LT5pc0Zsb2F0aW5nV2l0
aFNoYXBlT3V0c2lkZSgpICYmIHZhbHVlLT50eXBlKCkgPT0gU2hhcGVWYWx1ZTo6U2hhcGUgJiYg
dmFsdWUtPnNoYXBlKCk7CisgICAgU2hhcGVWYWx1ZSogc2hhcGVWYWx1ZSA9IGJveC0+c3R5bGUo
KS0+c2hhcGVPdXRzaWRlKCk7CisgICAgaWYgKCFib3gtPmlzRmxvYXRpbmdXaXRoU2hhcGVPdXRz
aWRlKCkgfHwgIXNoYXBlVmFsdWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHN3aXRj
aCAoc2hhcGVWYWx1ZS0+dHlwZSgpKSB7CisgICAgY2FzZSBTaGFwZVZhbHVlOjpTaGFwZToKKyAg
ICAgICAgcmV0dXJuIHNoYXBlVmFsdWUtPnNoYXBlKCk7CisgICAgY2FzZSBTaGFwZVZhbHVlOjpJ
bWFnZToKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CiB9CiAKIGJvb2wgU2hhcGVPdXRzaWRlSW5mbzo6Y29tcHV0ZVNlZ21l
bnRzRm9yTGluZShMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUhlaWdodCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFwZVZhbHVlLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhcGVWYWx1ZS5oCmluZGV4IDY3NGFlZWIu
LmE0N2VkMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFw
ZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYXBlVmFsdWUu
aApAQCAtMzEsNiArMzEsNyBAQAogI2RlZmluZSBTaGFwZVZhbHVlX2gKIAogI2luY2x1ZGUgIkJh
c2ljU2hhcGVzLmgiCisjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRlICJTdHlsZUlt
YWdlLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIApAQCAtNjIsMTIgKzYzLDE2IEBA
IHB1YmxpYzoKIAogICAgIFNoYXBlVmFsdWVUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5
cGU7IH0KICAgICBCYXNpY1NoYXBlKiBzaGFwZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcGUuZ2V0
KCk7IH0KKwogICAgIFN0eWxlSW1hZ2UqIGltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZS5n
ZXQoKTsgfQorICAgIGJvb2wgaXNJbWFnZVZhbGlkKCkgY29uc3QgeyByZXR1cm4gaW1hZ2UoKSAm
JiBpbWFnZSgpLT5jYWNoZWRJbWFnZSgpICYmIGltYWdlKCktPmNhY2hlZEltYWdlKCktPmhhc0lt
YWdlKCk7IH0KICAgICB2b2lkIHNldEltYWdlKFBhc3NSZWZQdHI8U3R5bGVJbWFnZT4gaW1hZ2Up
CiAgICAgeworICAgICAgICBBU1NFUlQodHlwZSgpID09IEltYWdlKTsKICAgICAgICAgaWYgKG1f
aW1hZ2UgIT0gaW1hZ2UpCiAgICAgICAgICAgICBtX2ltYWdlID0gaW1hZ2U7CiAgICAgfQorCiAg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNoYXBlVmFsdWUmIG90aGVyKSBjb25zdCB7IHJldHVy
biB0eXBlKCkgPT0gb3RoZXIudHlwZSgpOyB9CiAKIHByaXZhdGU6Cg==
</data>
<flag name="commit-queue"
          id="226620"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>205300</attachid>
            <date>2013-06-24 09:13:07 -0700</date>
            <delta_ts>2013-06-26 08:36:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>tmp.patch</filename>
            <type>text/plain</type>
            <size>39434</size>
            <attacher name="Hans Muller">giles_joplin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5MmUxNTRmLi5jYjQwNGRiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTMtMDYt
MTAgIEhhbnMgTXVsbGVyICA8aG11bGxlckBhZG9iZS5jb20+CisKKyAgICAgICAgW0NTUyBFeGNs
dXNpb25zXSBNaW5pbWFsIHN1cHBvcnQgZm9yIHVzaW5nIGFuIGltYWdlIHRvIGRlZmluZSBhIHNo
YXBlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTY2
NDMKKworICAgICAgICBUd28gdGVzdHMgdG8gdmVyaWZ5IHRoYXQgdGhlIGluaXRpYWwgaW1wbGVt
ZW50YXRpb24gb2Ygc2hhcGUgdmFsdWVkIGltYWdlcyBpcyB3b3JraW5nCisgICAgICAgIGZvciBz
aGFwZS1pbnNpZGUuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBmYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1pbWFnZS0w
MDEtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9leGNsdXNpb25zL3NoYXBl
LWluc2lkZS9zaGFwZS1pbnNpZGUtaW1hZ2UtMDAxLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAwMi1leHBlY3Rl
ZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3No
YXBlLWluc2lkZS1pbWFnZS0wMDIuaHRtbDogQWRkZWQuCisKIDIwMTMtMDYtMjQgIEdhYm9yIEFi
cmFoYW0gIDxhYnJobUBpbmYudS1zemVnZWQuaHU+CiAKICAgICAgICAgW1F0XSBVbnJldmlld2Vk
IGdhcmRlbmluZy4gU2tpcHBpbmcgdGhlIGNyYXNoaW5nIHRlc3RzIG9uIGRlYnVnIGJvdHMuCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBl
LWluc2lkZS1pbWFnZS0wMDEtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVz
aW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAwMS1leHBlY3RlZC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkYmFhNzIKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lk
ZS1pbWFnZS0wMDEtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDI0IEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+CisgICAgI2ltYWdlLXNoYXBlIHsKKyAgICAgICAg
Ym9yZGVyOiBzb2xpZCBibGFjayAxcHg7CisgICAgICAgIGZvbnQ6IDEycHgvMSBBaGVtLCBzYW5z
LXNlcmlmOworICAgICAgICBwYWRkaW5nOiA0cHg7CisgICAgICAgIGNvbG9yOiBncmVlbjsKKyAg
ICAgICAgd2lkdGg6IDI0cHg7CisgICAgICAgIGhlaWdodDogMjRweDsKKyAgICAgICAgYmFja2dy
b3VuZC1pbWFnZTogdXJsKCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNV
aEVVZ0FBQUNBQUFBQWdDQVlBQUFCemVucjBBQUFBU2tsRVFWUllDZTNYSVE0QU1BaEQwWFhoL2xm
dU1rZUNKalVmaFN0NVlKRHRrNnliRFAvWkRGQmpCZEx1VWRqcW1hd0FBUVFRUUFBQkJCQkFBQUVF
NGdMaU4reGZTcUtQMzhBRHVRTUpPNkxOYnI0QUFBQUFTVVZPUks1Q1lJST0iKTsKKyAgICAgICAg
YmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKKyAgICB9Cis8L3N0eWxlPgorPC9oZWFkPgor
PGJvZHk+CisgIDxwIGlkPSJpbmZvcm1hdGl2ZS10ZXh0Ij4KKyAgICAgIFRoaXMgdGVzdCByZXF1
aXJlcyB0aGUgQWhlbSBmb250LiBJdCB1c2VzIGEgMzJ4MzIgUE5HIGltYWdlIHdpdGggYSAyNHgy
NCByZWQgc3F1YXJlIGluIHRoZSBjZW50ZXIKKyAgICAgIHRvIGRlZmluZSBhIHNoYXBlLWluc2lk
ZS4gVGhlIGNvbnRlbnQgc2hvdWxkIGp1c3QgY292ZXIgdGhlIHNoYXBlIHdpdGggc29saWQgZ3Jl
ZW4uPC9wPgorCisgIDxkaXYgaWQ9ImltYWdlLXNoYXBlIj5YWDxici8+WFg8L2Rpdj4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFw
ZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAwMS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9l
eGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtaW1hZ2UtMDAxLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDZlYzdiMTIKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1p
bWFnZS0wMDEuaHRtbApAQCAtMCwwICsxLDI1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8c3R5bGU+CisgICAgI2ltYWdlLXNoYXBlIHsKKyAgICAgICAgYm9yZGVyOiBzb2xp
ZCBibGFjayAxcHg7CisgICAgICAgIGZvbnQ6IDEycHgvMSBBaGVtLCBzYW5zLXNlcmlmOworICAg
ICAgICBjb2xvcjogZ3JlZW47CisgICAgICAgIHdpZHRoOiAzMnB4OworICAgICAgICBoZWlnaHQ6
IDMycHg7CisgICAgICAgIC13ZWJraXQtc2hhcGUtaW5zaWRlOiB1cmwoImRhdGE6aW1hZ2UvcG5n
O2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZ0NBWUFBQUJ6ZW5yMEFBQUFT
a2xFUVZSWUNlM1hJUTRBTUFoRDBYWGgvbGZ1TWtlQ0pqVWZoU3Q1WUpEdGs2eWJEUC9aREZCakJk
THVVZGpxbWF3QUFRUVFRQUFCQkJCQUFBRUU0Z0xpTit4ZlNxS1AzOEFEdVFNSk82TE5icjRBQUFB
QVNVVk9SSzVDWUlJPSIpOworICAgICAgICAtd2Via2l0LXNoYXBlLWltYWdlLXRocmVzaG9sZDog
MDsKKyAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJkYXRhOmltYWdlL3BuZztiYXNlNjQs
aVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWdDQVlBQUFCemVucjBBQUFBU2tsRVFWUllD
ZTNYSVE0QU1BaEQwWFhoL2xmdU1rZUNKalVmaFN0NVlKRHRrNnliRFAvWkRGQmpCZEx1VWRqcW1h
d0FBUVFRUUFBQkJCQkFBQUVFNGdMaU4reGZTcUtQMzhBRHVRTUpPNkxOYnI0QUFBQUFTVVZPUks1
Q1lJST0iKTsKKyAgICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKKyAgICB9Cis8
L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgIDxwIGlkPSJpbmZvcm1hdGl2ZS10ZXh0Ij4KKyAg
ICAgIFRoaXMgdGVzdCByZXF1aXJlcyB0aGUgQWhlbSBmb250LiBJdCB1c2VzIGEgMzJ4MzIgUE5H
IGltYWdlIHdpdGggYSAyNHgyNCByZWQgc3F1YXJlIGluIHRoZSBjZW50ZXIKKyAgICAgIHRvIGRl
ZmluZSBhIHNoYXBlLWluc2lkZS4gVGhlIGNvbnRlbnQgc2hvdWxkIGp1c3QgY292ZXIgdGhlIHNo
YXBlIHdpdGggc29saWQgZ3JlZW4uPC9wPgorCisgIDxkaXYgaWQ9ImltYWdlLXNoYXBlIj5YWCBY
WDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9l
eGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtaW1hZ2UtMDAyLWV4cGVjdGVkLmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lk
ZS1pbWFnZS0wMDItZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi41YTUzZmU4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNp
b25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtaW1hZ2UtMDAyLWV4cGVjdGVkLmh0bWwKQEAg
LTAsMCArMSwyMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgor
ICAgICNpbWFnZS1zaGFwZSB7CisgICAgICAgIGZvbnQ6IDEycHgvMSBBaGVtLCBzYW5zLXNlcmlm
OworICAgICAgICBjb2xvcjogZ3JlZW47CisgICAgICAgIHdpZHRoOiAyNHB4OworICAgICAgICBo
ZWlnaHQ6IDI0cHg7CisgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9w
bmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFnQ0FZQUFBQnplbnIwQUFB
QVJFbEVRVlJZQ2UzWHNRMEFJQWdFUUhIL25WOG4wQXB0anRDUkVISTBVQmxqWjJNa2RlbytUOFVY
TlFNUUlFQ0FBQUVDQkFnUUlGQko3MXR3TysydGdBQ0I3d0lMb0k4SE9hT216RnNBQUFBQVNVVk9S
SzVDWUlJPSIpOworICAgICAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OworICAgIH0K
Kzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPHAgaWQ9ImluZm9ybWF0aXZlLXRleHQiPgor
ICAgICAgVGhpcyB0ZXN0IHJlcXVpcmVzIHRoZSBBaGVtIGZvbnQuIEl0IHVzZXMgYSAyNHgyNCBz
cXVhcmUgUE5HIGltYWdlIHdoZXJlIGFsbCBwaXhlbHMgYXJlIHJlZCwKKyAgICAgIHRvIGRlZmlu
ZSBhIHNoYXBlLWluc2lkZS4gVGhlIGNvbnRlbnQgc2hvdWxkIGp1c3QgY292ZXIgdGhlIHNoYXBl
IHdpdGggc29saWQgZ3JlZW4uPC9wPgorICA8ZGl2IGlkPSJpbWFnZS1zaGFwZSI+WFg8YnIvPlhY
PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V4
Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1pbWFnZS0wMDIuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAw
Mi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3OTg0ZTAKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3No
YXBlLWluc2lkZS1pbWFnZS0wMDIuaHRtbApAQCAtMCwwICsxLDI0IEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+CisgICAgI2ltYWdlLXNoYXBlIHsKKyAgICAgICAg
Zm9udDogMTJweC8xIEFoZW0sIHNhbnMtc2VyaWY7CisgICAgICAgIGNvbG9yOiBncmVlbjsKKyAg
ICAgICAgd2lkdGg6IDI0cHg7CisgICAgICAgIGhlaWdodDogMjRweDsKKyAgICAgICAgLXdlYmtp
dC1zaGFwZS1pbnNpZGU6IHVybCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFB
QU5TVWhFVWdBQUFDQUFBQUFnQ0FZQUFBQnplbnIwQUFBQVJFbEVRVlJZQ2UzWHNRMEFJQWdFUUhI
L25WOG4wQXB0anRDUkVISTBVQmxqWjJNa2RlbytUOFVYTlFNUUlFQ0FBQUVDQkFnUUlGQko3MXR3
TysydGdBQ0I3d0lMb0k4SE9hT216RnNBQUFBQVNVVk9SSzVDWUlJPSIpOworICAgICAgICAtd2Vi
a2l0LXNoYXBlLWltYWdlLXRocmVzaG9sZDogMDsKKyAgICAgICAgYmFja2dyb3VuZC1pbWFnZTog
dXJsKCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFB
QWdDQVlBQUFCemVucjBBQUFBUkVsRVFWUllDZTNYc1EwQUlBZ0VRSEgvblY4bjBBcHRqdENSRUhJ
MFVCbGpaMk1rZGVvK1Q4VVhOUU1RSUVDQUFBRUNCQWdRSUZCSjcxdHdPKzJ0Z0FDQjd3SUxvSThI
T2FPbXpGc0FBQUFBU1VWT1JLNUNZSUk9Iik7CisgICAgICAgIGJhY2tncm91bmQtcmVwZWF0OiBu
by1yZXBlYXQ7CisgICAgfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICA8cCBpZD0iaW5m
b3JtYXRpdmUtdGV4dCI+CisgICAgICBUaGlzIHRlc3QgcmVxdWlyZXMgdGhlIEFoZW0gZm9udC4g
SXQgdXNlcyBhIDI0eDI0IHNxdWFyZSBQTkcgaW1hZ2Ugd2hlcmUgYWxsIHBpeGVscyBhcmUgcmVk
LAorICAgICAgdG8gZGVmaW5lIGEgc2hhcGUtaW5zaWRlLiBUaGUgY29udGVudCBzaG91bGQganVz
dCBjb3ZlciB0aGUgc2hhcGUgd2l0aCBzb2xpZCBncmVlbi48L3A+CisKKyAgPGRpdiBpZD0iaW1h
Z2Utc2hhcGUiPlhYIFhYPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CmluZGV4IGFmZTk0MjIuLjg2YWFhODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0yMjE4LDYg
KzIyMTgsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxVbmRlck92ZXIuY3BwCiAKICAgICByZW5kZXJpbmcvc2hhcGVzL1BvbHlnb25TaGFw
ZS5jcHAKKyAgICByZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNwcAogICAgIHJlbmRlcmlu
Zy9zaGFwZXMvUmVjdGFuZ2xlU2hhcGUuY3BwCiAgICAgcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5j
cHAKICAgICByZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW5mby5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2Mjg1
ODdjLi45YmM3MzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTggQEAKKzIwMTMtMDYtMTAgIEhh
bnMgTXVsbGVyICA8aG11bGxlckBhZG9iZS5jb20+CisKKyAgICAgICAgW0NTUyBFeGNsdXNpb25z
XSBNaW5pbWFsIHN1cHBvcnQgZm9yIHVzaW5nIGFuIGltYWdlIHRvIGRlZmluZSBhIHNoYXBlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTY2NDMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIGEg
Zmlyc3Qgc21hbGwgc3RlcCB0b3dhcmRzIHN1cHBvcnRpbmcgQ1NTIHNoYXBlcyBkZWZpbmVkIGJ5
IGFuCisgICAgICAgIGltYWdlIFVSTCBhbmQgYSBhbHBoYSBjaGFubmVsIHRocmVzaG9sZC4gVG8g
a2VlcCB0aGUgcGF0Y2ggYXMgc21hbGwgYXMKKyAgICAgICAgcG9zc2libGUsIHRoZXJlIGFyZSBt
YW55IGxpbWl0YXRpb25zIGFuZCByZW1haW5pbmcgd29yayBpdGVtcy4gIFNlZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE2MzQ4IGZvciB0aGUgY3Vy
cmVudCBsaXN0LgorCisgICAgICAgIFRlc3Q6IGZhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUv
c2hhcGUtaW5zaWRlLWltYWdlLTAwMS5odG1sCisgICAgICAgIFRlc3Q6IGZhc3QvZXhjbHVzaW9u
cy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAwMi5odG1sCisKKyAgICAgICAgKiBD
TWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAq
IFRhcmdldC5wcmk6CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvajoK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2Nr
OjppbWFnZUNoYW5nZWQpOiBXaGVuIHRoZSBpbWFnZSBoYXMgZmluaXNoZWQgbG9hZGluZywgcmVx
dWVzdCBhIGxheW91dC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ck9iamVjdDo6c2V0U3R5bGUpOiBBZGQgbm90aWZ5IGNsaWVudHMgZm9yIHNoYXBlIGltYWdlcy4K
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6dXBkYXRlU2hhcGVJbWFnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpyZW1vdmVTaGFwZUltYWdlQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck9iamVjdDo6YXJlbmFEZWxldGUpOiBSZW1vdmUgbm90aWZ5IGNsaWVudHMgZm9yIHNo
YXBlIGltYWdlcy4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAg
ICogcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5jcHA6IEFkZGVkLiBBIFNoYXBlIGRlZmlu
ZWQgYnkgdGhyZXNob2xkaW5nIGFuIGltYWdlJ3MgYWxwaGEgY2hhbm5lbC4KKyAgICAgICAgKFdl
YkNvcmU6OlJhc3RlclNoYXBlSW50ZXJ2YWxzOjpib3VuZHMpOgorICAgICAgICAoV2ViQ29yZTo6
UmFzdGVyU2hhcGVJbnRlcnZhbHM6OmFkZEludGVydmFsKTogQWRkIGEgc2luZ2xlIHJ1biB0byB0
aGUgc2hhcGUuCisgICAgICAgIChXZWJDb3JlOjphbGlnbmVkUmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpSYXN0ZXJTaGFwZUludGVydmFsczo6Z2V0SW50ZXJ2YWxzKTogUmV0dXJuIHRoZSBzaGFw
ZSdzIHJ1bnMgdGhhdCBmYWxsIHdpdGhpbiBhIGhvcml6b25hbCBib3guCisgICAgICAgIChXZWJD
b3JlOjpSYXN0ZXJTaGFwZTo6bWFyZ2luSW50ZXJ2YWxzKTogSW50ZXJuYWwgcmVwcmVzZW50YXRp
b24gb2YgdGhlIHNoYXBlIHdpdGggc2hhcGUtbWFyZ2luIGZhY3RvcmVkIGluLiAgQ3VycmVudGx5
IG9ubHkgYSBzdHViLgorICAgICAgICAoV2ViQ29yZTo6UmFzdGVyU2hhcGU6OnBhZGRpbmdJbnRl
cnZhbHMpOiBJbnRlcm5hbCByZXByZXNlbnRhdGlvbiBvZiB0aGUgc2hhcGUgd2l0aCBzaGFwZS1w
YWRkaW5nIGZhY3RvcmVkIGluLiAgQ3VycmVudGx5IG9ubHkgYSBzdHViLgorICAgICAgICAoV2Vi
Q29yZTo6UmFzdGVyU2hhcGU6OmdldEV4Y2x1ZGVkSW50ZXJ2YWxzKToKKyAgICAgICAgKFdlYkNv
cmU6OlJhc3RlclNoYXBlOjpnZXRJbmNsdWRlZEludGVydmFscyk6CisgICAgICAgIChXZWJDb3Jl
OjpSYXN0ZXJTaGFwZTo6Zmlyc3RJbmNsdWRlZEludGVydmFsTG9naWNhbFRvcCk6CisgICAgICAg
ICogcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmFz
dGVyU2hhcGVJbnRlcnZhbHM6OlJhc3RlclNoYXBlSW50ZXJ2YWxzKTogSW50ZXJuYWwgcnVuIGxl
bmd0aCBlbmNvZGVkIHJlcHJlc2VudGF0aW9uIG9mIGEgUmFzdGVyU2hhcGUuCisgICAgICAgIChX
ZWJDb3JlOjpSYXN0ZXJTaGFwZUludGVydmFsczo6aXNFbXB0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpSYXN0ZXJTaGFwZTo6UmFzdGVyU2hhcGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMv
U2hhcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGU6OmNyZWF0ZVNoYXBlKTogU3VwcG9y
dCBmb3IgY3JlYXRpbmcgYSBTaGFwZSBiYXNlZCBvbiBhIFJhc3RlclNoYXBlSW50ZXJ2YWxzIG9i
amVjdC4KKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL3NoYXBlcy9TaGFwZUluZm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Ojpjb21wdXRl
ZFNoYXBlKTogQWRkZWQgc3VwcG9ydCBmb3IgdGhlIEltYWdlIFNoYXBlVmFsdWUgdHlwZS4KKyAg
ICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW5zaWRlSW5mby5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFwZUluc2lkZUluZm86OmlzRW5hYmxlZEZvcik6IEFkZGVkIHN1cHBvcnQgZm9y
IHRoZSBJbWFnZSBTaGFwZVZhbHVlIHR5cGUuCisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9T
aGFwZU91dHNpZGVJbmZvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXBlT3V0c2lkZUluZm86
OmlzRW5hYmxlZEZvcik6IEFkZGVkIHN1cHBvcnQgZm9yIHRoZSBJbWFnZSBTaGFwZVZhbHVlIHR5
cGUuCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1NoYXBlVmFsdWUuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXBlVmFsdWU6OmlzSW1hZ2VWYWxpZCk6IFRydWUgaWYgdGhlIHNoYXBlJ3MgaW1h
Z2UgaXMgcmVhZHkgdG8gYmUgYmUgcHJvY2Vzc2VkLgorCiAyMDEzLTA2LTI0ICBDaHJpc3RvcGhl
IER1bWV6ICA8Y2guZHVtZXpAc2lzYS5zYW1zdW5nLmNvbT4KIAogICAgICAgICBDb21tZW50ZWQg
SURMIGltcGxlbWVudHMgc3RhdGVtZW50cyBzaG91bGQgbm90IGltcGFjdCBjb2RlIGdlbmVyYXRp
b24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGExMWYzNTUuLjcwOTEzNmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNDYwNiw2ICs0NjA2LDggQEAgd2ViY29y
ZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTFVuZGVyT3Zlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1BvbHln
b25TaGFwZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUG9seWdvblNo
YXBlLmggXAorCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuY3Bw
IFwKKwlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmggXAogCVNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmVjdGFuZ2xlU2hhcGUuY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1JlY3RhbmdsZVNoYXBlLmggXAogCVNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IGNiYTQy
NmMuLjIyZjZiYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIv
U291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtMTIzOSw2ICsxMjM5LDcgQEAgU09VUkNFUyAr
PSBcCiAgICAgcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwIFwKICAgICByZW5kZXJpbmcvU2Ny
b2xsQmVoYXZpb3IuY3BwIFwKICAgICByZW5kZXJpbmcvc2hhcGVzL1BvbHlnb25TaGFwZS5jcHAg
XAorICAgIHJlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuY3BwIFwKICAgICByZW5kZXJpbmcv
c2hhcGVzL1JlY3RhbmdsZVNoYXBlLmNwcCBcCiAgICAgcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5j
cHAgXAogICAgIHJlbmRlcmluZy9zaGFwZXMvU2hhcGVJbmZvLmNwcCBcCkBAIC0yNTAxLDYgKzI1
MDIsNyBAQCBIRUFERVJTICs9IFwKICAgICByZW5kZXJpbmcvUm9vdElubGluZUJveC5oIFwKICAg
ICByZW5kZXJpbmcvU2Nyb2xsQmVoYXZpb3IuaCBcCiAgICAgcmVuZGVyaW5nL3NoYXBlcy9Qb2x5
Z29uU2hhcGUuaCBcCisgICAgcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5oIFwKICAgICBy
ZW5kZXJpbmcvc2hhcGVzL1JlY3RhbmdsZVNoYXBlLmggXAogICAgIHJlbmRlcmluZy9zaGFwZXMv
U2hhcGUuaCBcCiAgICAgcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUluZm8uaCBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagppbmRleCA4YzYxYjdiLi5l
YTJlNTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29y
ZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZj
eHByb2oKQEAgLTY1NzUsNiArNjU3NSw3IEBACiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMy
JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcc2hhcGVzXFBvbHlnb25TaGFwZS5jcHAiIC8+Cisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcc2hhcGVzXFJhc3RlclNoYXBlLmNw
cCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xzaGFwZXNcUmVjdGFu
Z2xlU2hhcGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXHNo
YXBlc1xTaGFwZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdc
c2hhcGVzXFNoYXBlSW5zaWRlSW5mby5jcHAiIC8+CkBAIC0xMjU1MCw2ICsxMjU1MSw3IEBACiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcUmVuZGVyU2xpZGVyLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcUmVuZGVyU25hcHNob3R0ZWRQbHVn
SW4uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xzaGFwZXNcUG9s
eWdvblNoYXBlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcc2hh
cGVzXFJhc3RlclNoYXBlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJp
bmdcc2hhcGVzXFJlY3RhbmdsZVNoYXBlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxyZW5kZXJpbmdcc2hhcGVzXFNoYXBlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxyZW5kZXJpbmdcc2hhcGVzXFNoYXBlSW5zaWRlSW5mby5oIiAvPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGJmZDJiOGMuLjU0
YjFiODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTE4MzcsNiArMTgzNyw4IEBACiAJCTZFNjdEMkE2MTI4MEU4QTQwMDg3NThG
NyAvKiBFeHRlbnNpb25zM0RPcGVuR0wuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNkU2N0QyQTQxMjgwRThBNDAwODc1OEY3IC8qIEV4dGVuc2lvbnMz
RE9wZW5HTC5jcHAgKi87IH07CiAJCTZFNjdEMkE3MTI4MEU4QTQwMDg3NThGNyAvKiBFeHRlbnNp
b25zM0RPcGVuR0wuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDZFNjdEMkE1MTI4MEU4QTQwMDg3NThGNyAvKiBFeHRlbnNpb25zM0RPcGVuR0wuaCAqLzsg
fTsKIAkJNkU2N0QyQTkxMjgwRThCRDAwODc1OEY3IC8qIEV4dGVuc2lvbnMzRC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU2N0QyQTgxMjgwRThCRDAw
ODc1OEY3IC8qIEV4dGVuc2lvbnMzRC5oICovOyB9OworCQk2RTg0RTlFMDE3NjY4QkVFMDA4MTVC
NjggLyogUmFzdGVyU2hhcGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNkU4NEU5REUxNzY2OEJBRDAwODE1QjY4IC8qIFJhc3RlclNoYXBlLmNwcCAq
LzsgfTsKKwkJNkU4NEU5RTExNzY2OEJGMTAwODE1QjY4IC8qIFJhc3RlclNoYXBlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTg0RTlERjE3NjY4QkFE
MDA4MTVCNjggLyogUmFzdGVyU2hhcGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk2RUJDNUVBRjEzOEI1MEYyMDBBMENGOEEgLyogSlNGbG9hdDY0
QXJyYXkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NkVCQzVFQUQxMzhCNTBGMjAwQTBDRjhBIC8qIEpTRmxvYXQ2NEFycmF5LmNwcCAqLzsgfTsKIAkJ
NkVCQzVFQjAxMzhCNTBGMjAwQTBDRjhBIC8qIEpTRmxvYXQ2NEFycmF5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RUJDNUVBRTEzOEI1MEYyMDBBMENG
OEEgLyogSlNGbG9hdDY0QXJyYXkuaCAqLzsgfTsKIAkJNkVCRjBFNDgxMkE4OTI2MTAwREIxNzA5
IC8qIE9FU1RleHR1cmVGbG9hdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA2RUJGMEU0NTEyQTg5MjYxMDBEQjE3MDkgLyogT0VTVGV4dHVyZUZsb2F0
LmNwcCAqLzsgfTsKQEAgLTgyMzQsNiArODIzNiw4IEBACiAJCTZFNjdEMkE0MTI4MEU4QTQwMDg3
NThGNyAvKiBFeHRlbnNpb25zM0RPcGVuR0wuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gRXh0ZW5zaW9uczNET3BlbkdMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNkU2N0QyQTUxMjgwRThBNDAwODc1OEY3IC8qIEV4dGVuc2lvbnMzRE9wZW5HTC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeHRlbnNpb25zM0RPcGVuR0wuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkU2N0QyQTgxMjgwRThCRDAwODc1OEY3IC8q
IEV4dGVuc2lvbnMzRC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeHRlbnNp
b25zM0QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkU4NEU5REUxNzY2OEJBRDAw
ODE1QjY4IC8qIFJhc3RlclNoYXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFJhc3RlclNoYXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkU4
NEU5REYxNzY2OEJBRDAwODE1QjY4IC8qIFJhc3RlclNoYXBlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJhc3RlclNoYXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTZFQkM1RDgwMTM4QjRDNEUwMEEwQ0Y4QSAvKiBGbG9hdDY0QXJyYXkuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgbmFtZSA9IEZsb2F0NjRBcnJheS5pZGw7IHBhdGggPSBjYW52YXMvRmxvYXQ2NEFy
cmF5LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkVCQzVFQUQxMzhCNTBGMjAw
QTBDRjhBIC8qIEpTRmxvYXQ2NEFycmF5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTRmxvYXQ2NEFycmF5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNkVCQzVFQUUxMzhCNTBGMjAwQTBDRjhBIC8qIEpTRmxvYXQ2NEFycmF5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRmxvYXQ2NEFycmF5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0yMDU3MSw2ICsyMDU3NSw4IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJ
CQlGRDA4QTg3QTE3NUQzOTI2MDAyQ0QzNjAgLyogUG9seWdvblNoYXBlLmNwcCAqLywKIAkJCQlG
RDA4QTg3QjE3NUQzOTI2MDAyQ0QzNjAgLyogUG9seWdvblNoYXBlLmggKi8sCisJCQkJNkU4NEU5
REUxNzY2OEJBRDAwODE1QjY4IC8qIFJhc3RlclNoYXBlLmNwcCAqLywKKwkJCQk2RTg0RTlERjE3
NjY4QkFEMDA4MTVCNjggLyogUmFzdGVyU2hhcGUuaCAqLywKIAkJCQlGRDA4QTg3QzE3NUQzOTI2
MDAyQ0QzNjAgLyogUmVjdGFuZ2xlU2hhcGUuY3BwICovLAogCQkJCUZEMDhBODdEMTc1RDM5MjYw
MDJDRDM2MCAvKiBSZWN0YW5nbGVTaGFwZS5oICovLAogCQkJCUZEMDhBODdFMTc1RDM5MjYwMDJD
RDM2MCAvKiBTaGFwZS5jcHAgKi8sCkBAIC0yMDg5MSw2ICsyMDg5Nyw3IEBACiAJCQlmaWxlcyA9
ICgKIAkJCQlGRTExNUZBQjE2Nzk4OENEMDAyNDkxMzQgLyogQWJzdHJhY3REYXRhYmFzZVNlcnZl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkU0QUFERUUxNkQyQzM3NDAwMDI2RkZDIC8qIEFic3Ry
YWN0U1FMU3RhdGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk2RTg0RTlFMTE3NjY4QkYxMDA4
MTVCNjggLyogUmFzdGVyU2hhcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFNEFBREVGMTZEMkMz
NzQwMDAyNkZGQyAvKiBBYnN0cmFjdFNRTFN0YXRlbWVudEJhY2tlbmQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTQxRTFCMUQxMEZGNTk4NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMjlBODEyMkUwRkJCOUMxRDAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlB
UklBR3JpZENlbGwuaCBpbiBIZWFkZXJzICovLApAQCAtMjY5ODUsNiArMjY5OTIsNyBAQAogCQkJ
CTk3N0UyRTBFMTJGMEZDOUMwMEMxMzM3OSAvKiBYU1NBdWRpdG9yLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTk3N0UyRTBFMTJGMEZDOUMwMEMxMzM4MCAvKiBYU1NBdWRpdG9yRGVsZWdhdGUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRkQ1MzczNTIxMzdCNjUxODAwMDA4RENFIC8qIFplcm9Qb2xl
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTZFODRFOUUwMTc2NjhCRUUwMDgxNUI2OCAvKiBSYXN0
ZXJTaGFwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2suY3BwCmluZGV4IGU0Zjc4YWYuLjQxMDM3OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmNwcApAQCAtMTQzNSw2ICsxNDM1LDIxIEBAIHZvaWQgUmVuZGVyQmxv
Y2s6OmxheW91dCgpCiB9CiAKICNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKK3ZvaWQgUmVuZGVyQmxv
Y2s6OmltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIgaW1hZ2UsIGNvbnN0IEludFJlY3QqKQor
eworICAgIFJlbmRlckJveDo6aW1hZ2VDaGFuZ2VkKGltYWdlKTsKKworICAgIGlmICghcGFyZW50
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIFNoYXBlVmFsdWUqIHNoYXBlVmFsdWUgPSBzdHls
ZSgpLT5zaGFwZUluc2lkZSgpOworICAgIGlmIChzaGFwZVZhbHVlICYmIHNoYXBlVmFsdWUtPmlt
YWdlKCkgJiYgc2hhcGVWYWx1ZS0+aW1hZ2UoKS0+ZGF0YSgpID09IGltYWdlKSB7CisgICAgICAg
IFNoYXBlSW5zaWRlSW5mbyogc2hhcGVJbnNpZGVJbmZvID0gZW5zdXJlU2hhcGVJbnNpZGVJbmZv
KCk7CisgICAgICAgIHNoYXBlSW5zaWRlSW5mby0+ZGlydHlTaGFwZVNpemUoKTsKKyAgICAgICAg
bWFya1NoYXBlSW5zaWRlRGVzY2VuZGFudHNGb3JMYXlvdXQoKTsKKyAgICB9Cit9CisKIHZvaWQg
UmVuZGVyQmxvY2s6OnVwZGF0ZVNoYXBlSW5zaWRlSW5mb0FmdGVyU3R5bGVDaGFuZ2UoY29uc3Qg
U2hhcGVWYWx1ZSogc2hhcGVJbnNpZGUsIGNvbnN0IFNoYXBlVmFsdWUqIG9sZFNoYXBlSW5zaWRl
KQogewogICAgIC8vIEZJWE1FOiBBIGZ1dHVyZSBvcHRpbWl6YXRpb24gd291bGQgZG8gYSBkZWVw
IGNvbXBhcmlzb24gZm9yIGVxdWFsaXR5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2suaAppbmRleCAzM2VjMWM5Li4zZGFmYTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suaApAQCAtNDY4LDYgKzQ2OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG1hcmtTaGFw
ZUluc2lkZURlc2NlbmRhbnRzRm9yTGF5b3V0KCk7CiAgICAgU2hhcGVJbnNpZGVJbmZvKiBsYXlv
dXRTaGFwZUluc2lkZUluZm8oKSBjb25zdDsKICAgICBib29sIGFsbG93c1NoYXBlSW5zaWRlSW5m
b1NoYXJpbmcoKSBjb25zdCB7IHJldHVybiAhaXNJbmxpbmUoKSAmJiAhaXNGbG9hdGluZygpOyB9
CisgICAgdmlydHVhbCB2b2lkIGltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIsIGNvbnN0IElu
dFJlY3QqID0gMCkgT1ZFUlJJREU7CiAjZW5kaWYKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCAwYzgzY2NhLi4xNDExMDY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMTg0NCw2ICsxODQ0
LDEwIEBAIHZvaWQgUmVuZGVyT2JqZWN0OjpzZXRTdHlsZShQYXNzUmVmUHRyPFJlbmRlclN0eWxl
PiBzdHlsZSkKICAgICB1cGRhdGVJbWFnZShvbGRTdHlsZSA/IG9sZFN0eWxlLT5ib3JkZXJJbWFn
ZSgpLmltYWdlKCkgOiAwLCBtX3N0eWxlID8gbV9zdHlsZS0+Ym9yZGVySW1hZ2UoKS5pbWFnZSgp
IDogMCk7CiAgICAgdXBkYXRlSW1hZ2Uob2xkU3R5bGUgPyBvbGRTdHlsZS0+bWFza0JveEltYWdl
KCkuaW1hZ2UoKSA6IDAsIG1fc3R5bGUgPyBtX3N0eWxlLT5tYXNrQm94SW1hZ2UoKS5pbWFnZSgp
IDogMCk7CiAKKyNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKKyAgICB1cGRhdGVTaGFwZUltYWdlKG9s
ZFN0eWxlID8gb2xkU3R5bGUtPnNoYXBlSW5zaWRlKCkgOiAwLCBtX3N0eWxlID8gbV9zdHlsZS0+
c2hhcGVJbnNpZGUoKSA6IDApOworI2VuZGlmCisKICAgICAvLyBXZSBuZWVkIHRvIGVuc3VyZSB0
aGF0IHZpZXctPm1heGltYWxPdXRsaW5lU2l6ZSgpIGlzIHZhbGlkIGZvciBhbnkgcmVwYWludHMg
dGhhdCBoYXBwZW4KICAgICAvLyBkdXJpbmcgc3R5bGVEaWRDaGFuZ2UgKGl0J3MgdXNlZCBieSBj
bGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCgpKS4KICAgICBpZiAobV9zdHlsZS0+b3V0bGlu
ZVdpZHRoKCkgPiAwICYmIG1fc3R5bGUtPm91dGxpbmVTaXplKCkgPiBtYXhpbWFsT3V0bGluZVNp
emUoUGFpbnRQaGFzZU91dGxpbmUpKQpAQCAtMjA5Niw2ICsyMTAwLDE0IEBAIHZvaWQgUmVuZGVy
T2JqZWN0Ojp1cGRhdGVJbWFnZShTdHlsZUltYWdlKiBvbGRJbWFnZSwgU3R5bGVJbWFnZSogbmV3
SW1hZ2UpCiAgICAgfQogfQogCisjaWYgRU5BQkxFKENTU19TSEFQRVMpCit2b2lkIFJlbmRlck9i
amVjdDo6dXBkYXRlU2hhcGVJbWFnZShjb25zdCBTaGFwZVZhbHVlKiBvbGRTaGFwZVZhbHVlLCBj
b25zdCBTaGFwZVZhbHVlKiBuZXdTaGFwZVZhbHVlKQoreworICAgIGlmIChvbGRTaGFwZVZhbHVl
IHx8IG5ld1NoYXBlVmFsdWUpCisgICAgICAgIHVwZGF0ZUltYWdlKG9sZFNoYXBlVmFsdWUgPyBv
bGRTaGFwZVZhbHVlLT5pbWFnZSgpIDogMCwgbmV3U2hhcGVWYWx1ZSA/IG5ld1NoYXBlVmFsdWUt
PmltYWdlKCkgOiAwKTsKK30KKyNlbmRpZgorCiBMYXlvdXRSZWN0IFJlbmRlck9iamVjdDo6dmll
d1JlY3QoKSBjb25zdAogewogICAgIHJldHVybiB2aWV3KCktPnZpZXdSZWN0KCk7CkBAIC0yNjE0
LDYgKzI2MjYsMTYgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OmRlc3Ryb3koKQogICAgIGFyZW5hRGVs
ZXRlKHJlbmRlckFyZW5hKCksIHRoaXMpOwogfQogCisjaWYgRU5BQkxFKENTU19TSEFQRVMpCit2
b2lkIFJlbmRlck9iamVjdDo6cmVtb3ZlU2hhcGVJbWFnZUNsaWVudChTaGFwZVZhbHVlKiBzaGFw
ZVZhbHVlKQoreworICAgIGlmICghc2hhcGVWYWx1ZSkKKyAgICAgICAgcmV0dXJuOworICAgIGlm
IChTdHlsZUltYWdlKiBzaGFwZUltYWdlID0gc2hhcGVWYWx1ZS0+aW1hZ2UoKSkKKyAgICAgICAg
c2hhcGVJbWFnZS0+cmVtb3ZlQ2xpZW50KHRoaXMpOworfQorI2VuZGlmCisKIHZvaWQgUmVuZGVy
T2JqZWN0OjphcmVuYURlbGV0ZShSZW5kZXJBcmVuYSogYXJlbmEsIHZvaWQqIGJhc2UpCiB7CiAg
ICAgaWYgKG1fc3R5bGUpIHsKQEAgLTI2MzIsNiArMjY1NCwxMCBAQCB2b2lkIFJlbmRlck9iamVj
dDo6YXJlbmFEZWxldGUoUmVuZGVyQXJlbmEqIGFyZW5hLCB2b2lkKiBiYXNlKQogCiAgICAgICAg
IGlmIChTdHlsZUltYWdlKiBtYXNrQm94SW1hZ2UgPSBtX3N0eWxlLT5tYXNrQm94SW1hZ2UoKS5p
bWFnZSgpKQogICAgICAgICAgICAgbWFza0JveEltYWdlLT5yZW1vdmVDbGllbnQodGhpcyk7CisK
KyNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKKyAgICAgICAgcmVtb3ZlU2hhcGVJbWFnZUNsaWVudCht
X3N0eWxlLT5zaGFwZUluc2lkZSgpKTsKKyNlbmRpZgogICAgIH0KIAogI2lmbmRlZiBOREVCVUcK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAppbmRleCA4MDgwOTIzLi44NDM3
MjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCkBAIC03MDMsNiAr
NzAzLDkgQEAgcHVibGljOgogCiAgICAgdm9pZCB1cGRhdGVGaWxsSW1hZ2VzKGNvbnN0IEZpbGxM
YXllciosIGNvbnN0IEZpbGxMYXllciopOwogICAgIHZvaWQgdXBkYXRlSW1hZ2UoU3R5bGVJbWFn
ZSosIFN0eWxlSW1hZ2UqKTsKKyNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKKyAgICB2b2lkIHVwZGF0
ZVNoYXBlSW1hZ2UoY29uc3QgU2hhcGVWYWx1ZSosIGNvbnN0IFNoYXBlVmFsdWUqKTsKKyNlbmRp
ZgogCiAgICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50
Jik7CiAKQEAgLTEwMzMsNiArMTAzNiwxMCBAQCBwcml2YXRlOgogCiAgICAgQ29sb3Igc2VsZWN0
aW9uQ29sb3IoaW50IGNvbG9yUHJvcGVydHkpIGNvbnN0OwogCisjaWYgRU5BQkxFKENTU19TSEFQ
RVMpCisgICAgdm9pZCByZW1vdmVTaGFwZUltYWdlQ2xpZW50KFNoYXBlVmFsdWUqKTsKKyNlbmRp
ZgorCiAjaWZuZGVmIE5ERUJVRwogICAgIHZvaWQgY2hlY2tCbG9ja1Bvc2l0aW9uZWRPYmplY3Rz
TmVlZExheW91dCgpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFw
ZXMvUmFzdGVyU2hhcGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBj
ODYwMzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVz
L1Jhc3RlclNoYXBlLmNwcApAQCAtMCwwICsxLDE2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMyBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCisgKiAgICBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZworICogICAgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKKyAqICAgIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRQorICogQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULAorICogSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IK
KyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULAorICogU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRAorICog
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJSYXN0ZXJTaGFwZS5oIgorCisjaW5jbHVkZSAiU2hhcGVJbnRlcnZh
bC5oIgorI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworSW50UmVjdCBSYXN0ZXJTaGFwZUludGVydmFsczo6Ym91bmRzKCkgY29uc3QKK3sKKyAgICBp
ZiAoIW1fYm91bmRzKQorICAgICAgICBtX2JvdW5kcyA9IGFkb3B0UHRyKG5ldyBJbnRSZWN0KG1f
cmVnaW9uLmJvdW5kcygpKSk7CisgICAgcmV0dXJuICptX2JvdW5kczsKK30KKwordm9pZCBSYXN0
ZXJTaGFwZUludGVydmFsczo6YWRkSW50ZXJ2YWwoaW50IHksIGludCB4MSwgaW50IHgyKQorewor
ICAgIG1fcmVnaW9uLnVuaXRlKFJlZ2lvbihJbnRSZWN0KHgxLCB5LCB4MiAtIHgxLCAxKSkpOwor
ICAgIG1fYm91bmRzLmNsZWFyKCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgSW50UmVjdCBhbGlnbmVk
UmVjdChJbnRSZWN0IHIsIGludCB5MSwgaW50IHkyKQoreworICAgIHJldHVybiBJbnRSZWN0KHIu
eCgpLCB5MSwgci53aWR0aCgpLCB5MiAtIHkxKTsKK30KKwordm9pZCBSYXN0ZXJTaGFwZUludGVy
dmFsczo6Z2V0SW5jbHVkZWRJbnRlcnZhbHMoaW50IHkxLCBpbnQgeTIsIFNlZ21lbnRMaXN0JiBy
ZXN1bHQpIGNvbnN0Cit7CisgICAgQVNTRVJUKHkyID49IHkxKTsKKworICAgIEludFJlY3QgbGlu
ZVJlY3QoYm91bmRzKCkueCgpLCB5MSwgYm91bmRzKCkud2lkdGgoKSwgeTIgLSB5MSk7CisgICAg
UmVnaW9uIGxpbmVSZWdpb24obGluZVJlY3QpOworICAgIGxpbmVSZWdpb24uaW50ZXJzZWN0KG1f
cmVnaW9uKTsKKyAgICBpZiAobGluZVJlZ2lvbi5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsK
KworICAgIFZlY3RvcjxJbnRSZWN0PiBsaW5lUmVjdHMgPSBsaW5lUmVnaW9uLnJlY3RzKCk7Cisg
ICAgQVNTRVJUKGxpbmVSZWN0cy5zaXplKCkgPiAwKTsKKworICAgIFJlZ2lvbiBzZWdtZW50c1Jl
Z2lvbihsaW5lUmVjdCk7CisgICAgUmVnaW9uIGludGVydmFsc1JlZ2lvbjsKKworICAgIC8vIFRo
ZSBsb29wIGJlbG93IHVzZXMgUmVnaW9ucyB0byBjb21wdXRlIHRoZSBpbnRlcnNlY3Rpb24gb2Yg
dGhlIGhvcml6b250YWwKKyAgICAvLyBzaGFwZSBpbnRlcnZhbHMgdGhhdCBmYWxsIHdpdGhpbiB0
aGUgbGluZSdzIGJveC4KKworICAgIGludCBsaW5lWSA9IGxpbmVSZWN0c1swXS55KCk7CisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxpbmVSZWN0cy5zaXplKCk7IGkrKykgeworICAgICAg
ICBpZiAobGluZVJlY3RzW2ldLnkoKSAhPSBsaW5lWSkgeworICAgICAgICAgICAgc2VnbWVudHNS
ZWdpb24uaW50ZXJzZWN0KGludGVydmFsc1JlZ2lvbik7CisgICAgICAgICAgICBpbnRlcnZhbHNS
ZWdpb24gPSBSZWdpb24oKTsKKyAgICAgICAgfQorICAgICAgICBpbnRlcnZhbHNSZWdpb24udW5p
dGUoUmVnaW9uKGFsaWduZWRSZWN0KGxpbmVSZWN0c1tpXSwgeTEsIHkyKSkpOworICAgICAgICBs
aW5lWSA9IGxpbmVSZWN0c1tpXS55KCk7CisgICAgfQorICAgIGlmICghaW50ZXJ2YWxzUmVnaW9u
LmlzRW1wdHkoKSkKKyAgICAgICAgc2VnbWVudHNSZWdpb24uaW50ZXJzZWN0KGludGVydmFsc1Jl
Z2lvbik7CisKKyAgICBWZWN0b3I8SW50UmVjdD4gc2VnbWVudFJlY3RzID0gc2VnbWVudHNSZWdp
b24ucmVjdHMoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2VnbWVudFJlY3RzLnNp
emUoKTsgaSsrKQorICAgICAgICByZXN1bHQuYXBwZW5kKExpbmVTZWdtZW50KHNlZ21lbnRSZWN0
c1tpXS54KCksIHNlZ21lbnRSZWN0c1tpXS5tYXhYKCkpKTsKK30KKworY29uc3QgUmFzdGVyU2hh
cGVJbnRlcnZhbHMmIFJhc3RlclNoYXBlOjptYXJnaW5JbnRlcnZhbHMoKSBjb25zdAoreworICAg
IEFTU0VSVChzaGFwZU1hcmdpbigpID49IDApOworICAgIGlmICghc2hhcGVNYXJnaW4oKSkKKyAg
ICAgICAgcmV0dXJuICptX2ludGVydmFsczsKKworICAgIC8vIEZJWE1FOiBhZGQgc3VwcG9ydCBm
b3Igbm9uLXplcm8gbWFyZ2luCisgICAgcmV0dXJuICptX2ludGVydmFsczsKK30KKworY29uc3Qg
UmFzdGVyU2hhcGVJbnRlcnZhbHMmIFJhc3RlclNoYXBlOjpwYWRkaW5nSW50ZXJ2YWxzKCkgY29u
c3QKK3sKKyAgICBBU1NFUlQoc2hhcGVQYWRkaW5nKCkgPj0gMCk7CisgICAgaWYgKCFzaGFwZVBh
ZGRpbmcoKSkKKyAgICAgICAgcmV0dXJuICptX2ludGVydmFsczsKKworICAgIC8vIEZJWE1FOiBh
ZGQgc3VwcG9ydCBmb3Igbm9uLXplcm8gcGFkZGluZworICAgIHJldHVybiAqbV9pbnRlcnZhbHM7
Cit9CisKK3ZvaWQgUmFzdGVyU2hhcGU6OmdldEV4Y2x1ZGVkSW50ZXJ2YWxzKExheW91dFVuaXQg
bG9naWNhbFRvcCwgTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBTZWdtZW50TGlzdCYgcmVzdWx0
KSBjb25zdAoreworICAgIFVOVVNFRF9QQVJBTShyZXN1bHQpOworCisgICAgY29uc3QgUmFzdGVy
U2hhcGVJbnRlcnZhbHMmIGludGVydmFscyA9IG1hcmdpbkludGVydmFscygpOworICAgIGlmIChp
bnRlcnZhbHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBmbG9hdCB5MSA9IGxv
Z2ljYWxUb3A7CisgICAgZmxvYXQgeTIgPSBsb2dpY2FsVG9wICsgbG9naWNhbEhlaWdodDsKKwor
ICAgIGlmICh5MiA8IGludGVydmFscy5ib3VuZHMoKS55KCkgfHwgeTEgPj0gaW50ZXJ2YWxzLmJv
dW5kcygpLm1heFkoKSkKKyAgICAgICAgcmV0dXJuOworfQorCit2b2lkIFJhc3RlclNoYXBlOjpn
ZXRJbmNsdWRlZEludGVydmFscyhMYXlvdXRVbml0IGxvZ2ljYWxUb3AsIExheW91dFVuaXQgbG9n
aWNhbEhlaWdodCwgU2VnbWVudExpc3QmIHJlc3VsdCkgY29uc3QKK3sKKyAgICBjb25zdCBSYXN0
ZXJTaGFwZUludGVydmFscyYgaW50ZXJ2YWxzID0gcGFkZGluZ0ludGVydmFscygpOworICAgIGlm
IChpbnRlcnZhbHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBmbG9hdCB5MSA9
IGxvZ2ljYWxUb3A7CisgICAgZmxvYXQgeTIgPSBsb2dpY2FsVG9wICsgbG9naWNhbEhlaWdodDsK
KworICAgIGlmICh5MSA8IGludGVydmFscy5ib3VuZHMoKS55KCkgfHwgeTIgPiBpbnRlcnZhbHMu
Ym91bmRzKCkubWF4WSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpbnRlcnZhbHMuZ2V0SW5j
bHVkZWRJbnRlcnZhbHMoeTEsIHkyLCByZXN1bHQpOworfQorCitib29sIFJhc3RlclNoYXBlOjpm
aXJzdEluY2x1ZGVkSW50ZXJ2YWxMb2dpY2FsVG9wKExheW91dFVuaXQgbWluTG9naWNhbEludGVy
dmFsVG9wLCBjb25zdCBMYXlvdXRTaXplJiBtaW5Mb2dpY2FsSW50ZXJ2YWxTaXplLCBMYXlvdXRV
bml0JiByZXN1bHQpIGNvbnN0Cit7CisgICAgZmxvYXQgbWluSW50ZXJ2YWxUb3AgPSBtaW5Mb2dp
Y2FsSW50ZXJ2YWxUb3A7CisgICAgZmxvYXQgbWluSW50ZXJ2YWxIZWlnaHQgPSBtaW5Mb2dpY2Fs
SW50ZXJ2YWxTaXplLmhlaWdodCgpOworICAgIGZsb2F0IG1pbkludGVydmFsV2lkdGggPSBtaW5M
b2dpY2FsSW50ZXJ2YWxTaXplLndpZHRoKCk7CisKKyAgICBjb25zdCBSYXN0ZXJTaGFwZUludGVy
dmFscyYgaW50ZXJ2YWxzID0gcGFkZGluZ0ludGVydmFscygpOworICAgIGlmIChpbnRlcnZhbHMu
aXNFbXB0eSgpIHx8IG1pbkludGVydmFsV2lkdGggPiBpbnRlcnZhbHMuYm91bmRzKCkud2lkdGgo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZmxvYXQgbWluWSA9IHN0ZDo6bWF4PGZs
b2F0PihpbnRlcnZhbHMuYm91bmRzKCkueSgpLCBtaW5JbnRlcnZhbFRvcCk7CisgICAgZmxvYXQg
bWF4WSA9IG1pblkgKyBtaW5JbnRlcnZhbEhlaWdodDsKKworICAgIGlmIChtYXhZID4gaW50ZXJ2
YWxzLmJvdW5kcygpLm1heFkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gRklY
TUU6IGNvbXBsZXRlIHRoaXMgbWV0aG9kCisgICAgcmVzdWx0ID0gbWluWTsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmEzMDVkNDMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc2hhcGVzL1Jhc3RlclNoYXBlLmgKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMyBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCisg
KiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZworICogICAgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFp
bWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKKyAqICAgIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorICogQ09QWVJJR0hUIEhPTERFUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULAorICogSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULAorICogU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RAorICogT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
UmFzdGVyU2hhcGVfaAorI2RlZmluZSBSYXN0ZXJTaGFwZV9oCisKKyNpbmNsdWRlICJGbG9hdFJl
Y3QuaCIKKyNpbmNsdWRlICJSZWdpb24uaCIKKyNpbmNsdWRlICJTaGFwZS5oIgorI2luY2x1ZGUg
PHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIFJhc3RlclNoYXBlSW50ZXJ2YWxzIHsKK3B1YmxpYzoKKyAgICBS
YXN0ZXJTaGFwZUludGVydmFscygpIHsgfQorCisgICAgSW50UmVjdCBib3VuZHMoKSBjb25zdDsK
KyAgICBib29sIGlzRW1wdHkoKSBjb25zdCAgeyByZXR1cm4gbV9yZWdpb24uaXNFbXB0eSgpOyB9
CisgICAgdm9pZCBhZGRJbnRlcnZhbChpbnQgeSwgaW50IHgxLCBpbnQgeDIpOworICAgIHZvaWQg
Z2V0SW5jbHVkZWRJbnRlcnZhbHMoaW50IHkxLCBpbnQgeTIsIFNlZ21lbnRMaXN0JikgY29uc3Q7
CisKK3ByaXZhdGU6CisgICAgUmVnaW9uIG1fcmVnaW9uOworICAgIG11dGFibGUgT3duUHRyPElu
dFJlY3Q+IG1fYm91bmRzOyAvLyBDYWNoZWQgdmFsdWUgb2YgbV9yZWdpb24uYm91bmRzKCkuCit9
OworCitjbGFzcyBSYXN0ZXJTaGFwZSA6IHB1YmxpYyBTaGFwZSB7CisgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoUmFzdGVyU2hhcGUpOworcHVibGljOgorICAgIFJhc3RlclNoYXBlKFBhc3NPd25Q
dHI8UmFzdGVyU2hhcGVJbnRlcnZhbHM+IGludGVydmFscykKKyAgICAgICAgOiBTaGFwZSgpCisg
ICAgICAgICwgbV9pbnRlcnZhbHMoaW50ZXJ2YWxzKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0
dWFsIExheW91dFJlY3Qgc2hhcGVNYXJnaW5Mb2dpY2FsQm91bmRpbmdCb3goKSBjb25zdCBPVkVS
UklERSB7IHJldHVybiBzdGF0aWNfY2FzdDxMYXlvdXRSZWN0PihtYXJnaW5JbnRlcnZhbHMoKS5i
b3VuZHMoKSk7IH0KKyAgICB2aXJ0dWFsIExheW91dFJlY3Qgc2hhcGVQYWRkaW5nTG9naWNhbEJv
dW5kaW5nQm94KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gc3RhdGljX2Nhc3Q8TGF5b3V0UmVj
dD4ocGFkZGluZ0ludGVydmFscygpLmJvdW5kcygpKTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0Vt
cHR5KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9pbnRlcnZhbHMtPmlzRW1wdHkoKTsgfQor
ICAgIHZpcnR1YWwgdm9pZCBnZXRFeGNsdWRlZEludGVydmFscyhMYXlvdXRVbml0IGxvZ2ljYWxU
b3AsIExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgU2VnbWVudExpc3QmKSBjb25zdCBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0SW5jbHVkZWRJbnRlcnZhbHMoTGF5b3V0VW5pdCBsb2dp
Y2FsVG9wLCBMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIFNlZ21lbnRMaXN0JikgY29uc3QgT1ZF
UlJJREU7CisgICAgdmlydHVhbCBib29sIGZpcnN0SW5jbHVkZWRJbnRlcnZhbExvZ2ljYWxUb3Ao
TGF5b3V0VW5pdCBtaW5Mb2dpY2FsSW50ZXJ2YWxUb3AsIGNvbnN0IExheW91dFNpemUmIG1pbkxv
Z2ljYWxJbnRlcnZhbFNpemUsIExheW91dFVuaXQmKSBjb25zdCBPVkVSUklERTsKKworcHJpdmF0
ZToKKyAgICBjb25zdCBSYXN0ZXJTaGFwZUludGVydmFscyYgbWFyZ2luSW50ZXJ2YWxzKCkgY29u
c3Q7CisgICAgY29uc3QgUmFzdGVyU2hhcGVJbnRlcnZhbHMmIHBhZGRpbmdJbnRlcnZhbHMoKSBj
b25zdDsKKworICAgIE93blB0cjxSYXN0ZXJTaGFwZUludGVydmFscz4gbV9pbnRlcnZhbHM7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBSYXN0ZXJTaGFwZV9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCmluZGV4IDgxMGFjNTUuLmFi
NmE4MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCkBAIC0z
MSw5ICszMSwxMiBAQAogI2luY2x1ZGUgIlNoYXBlLmgiCiAKICNpbmNsdWRlICJCYXNpY1NoYXBl
RnVuY3Rpb25zLmgiCisjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRlICJGbG9hdFNp
emUuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkxlbmd0aEZ1
bmN0aW9ucy5oIgogI2luY2x1ZGUgIlBvbHlnb25TaGFwZS5oIgorI2luY2x1ZGUgIlJhc3RlclNo
YXBlLmgiCiAjaW5jbHVkZSAiUmVjdGFuZ2xlU2hhcGUuaCIKICNpbmNsdWRlICJXaW5kUnVsZS5o
IgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CkBAIC0yMDAsNCArMjAzLDcxIEBAIFBhc3NP
d25QdHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVTaGFwZShjb25zdCBCYXNpY1NoYXBlKiBiYXNpY1No
YXBlLCBjb25zdCBMYXlvdXRTCiAgICAgcmV0dXJuIHNoYXBlLnJlbGVhc2UoKTsKIH0KIAorI2lm
IFVTRSgzRF9HUkFQSElDUykKK1Bhc3NPd25QdHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVTaGFwZShj
b25zdCBTdHlsZUltYWdlKiBzdHlsZUltYWdlLCBmbG9hdCB0aHJlc2hvbGQsIGNvbnN0IExheW91
dFNpemUmIGxvZ2ljYWxCb3hTaXplLCBXcml0aW5nTW9kZSB3cml0aW5nTW9kZSwgTGVuZ3RoIG1h
cmdpbiwgTGVuZ3RoIHBhZGRpbmcpCit7CisgICAgLy8gRklYTUU6IFNob3VsZCBjbGlwIHNoYXBl
IHRvIGxvZ2ljYWwgYm94LgorICAgIFVOVVNFRF9QQVJBTShsb2dpY2FsQm94U2l6ZSk7CisKKyAg
ICBBU1NFUlQoc3R5bGVJbWFnZSAmJiBzdHlsZUltYWdlLT5pc0NhY2hlZEltYWdlKCkgJiYgc3R5
bGVJbWFnZS0+Y2FjaGVkSW1hZ2UoKSAmJiBzdHlsZUltYWdlLT5jYWNoZWRJbWFnZSgpLT5pbWFn
ZSgpKTsKKworICAgIEltYWdlKiBpbWFnZSA9IHN0eWxlSW1hZ2UtPmNhY2hlZEltYWdlKCktPmlt
YWdlKCk7CisgICAgR3JhcGhpY3NDb250ZXh0M0Q6OkltYWdlRXh0cmFjdG9yIGltYWdlRXh0cmFj
dG9yKGltYWdlLCBHcmFwaGljc0NvbnRleHQzRDo6SHRtbERvbU5vbmUsIGZhbHNlLCB0cnVlKTsK
KyAgICBpbnQgaW1hZ2VXaWR0aCA9IHN0YXRpY19jYXN0PGludD4oaW1hZ2VFeHRyYWN0b3IuaW1h
Z2VXaWR0aCgpKTsKKyAgICBpbnQgaW1hZ2VIZWlnaHQgPSBzdGF0aWNfY2FzdDxpbnQ+KGltYWdl
RXh0cmFjdG9yLmltYWdlSGVpZ2h0KCkpOworCisgICAgVmVjdG9yPHVpbnQ4X3Q+IGFscGhhUGl4
ZWxzOworICAgIGJvb2wgcGFja0ltYWdlRGF0YU9LID0gR3JhcGhpY3NDb250ZXh0M0Q6OnBhY2tJ
bWFnZURhdGEoaW1hZ2UsIGltYWdlRXh0cmFjdG9yLmltYWdlUGl4ZWxEYXRhKCksCisgICAgICAg
IEdyYXBoaWNzQ29udGV4dDNEOjpBTFBIQSwKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0M0Q6OlVO
U0lHTkVEX0JZVEUsCisgICAgICAgIGZhbHNlLCAvKiBmbGlwWSAqLworICAgICAgICBHcmFwaGlj
c0NvbnRleHQzRDo6QWxwaGFEb05vdGhpbmcsCisgICAgICAgIGltYWdlRXh0cmFjdG9yLmltYWdl
U291cmNlRm9ybWF0KCksCisgICAgICAgIGltYWdlV2lkdGgsCisgICAgICAgIGltYWdlSGVpZ2h0
LAorICAgICAgICBpbWFnZUV4dHJhY3Rvci5pbWFnZVNvdXJjZVVucGFja0FsaWdubWVudCgpLAor
ICAgICAgICBhbHBoYVBpeGVscyk7CisKKyAgICBPd25QdHI8UmFzdGVyU2hhcGVJbnRlcnZhbHM+
IGludGVydmFscyA9IGFkb3B0UHRyKG5ldyBSYXN0ZXJTaGFwZUludGVydmFscygpKTsKKyAgICB1
aW50OF90IGFscGhhUGl4ZWxUaHJlc2hvbGQgPSB0aHJlc2hvbGQgKiAyNTU7CisKKyAgICBpZiAo
cGFja0ltYWdlRGF0YU9LKSB7CisgICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
aW1hZ2VXaWR0aCAqIGltYWdlSGVpZ2h0KSA9PSBhbHBoYVBpeGVscy5zaXplKCkpOworICAgICAg
ICBmb3IgKGludCB5ID0gMDsgeSA8IGltYWdlSGVpZ2h0OyB5KyspIHsKKyAgICAgICAgICAgIGlu
dCBzdGFydFggPSAtMTsKKyAgICAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgaW1hZ2VXaWR0
aDsgeCsrKSB7CisgICAgICAgICAgICAgICAgdWludDhfdCBhbHBoYSA9IGFscGhhUGl4ZWxzW3gg
KyB5ICogaW1hZ2VXaWR0aF07CisgICAgICAgICAgICAgICAgaWYgKChzdGFydFggPT0gLTEpICYm
IGFscGhhID4gYWxwaGFQaXhlbFRocmVzaG9sZCkgeworICAgICAgICAgICAgICAgICAgICBzdGFy
dFggPSB4OworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RhcnRYICE9IC0xICYmIChhbHBo
YSA8PSBhbHBoYVBpeGVsVGhyZXNob2xkIHx8IHggPT0gaW1hZ2VXaWR0aCAtIDEpKSB7CisgICAg
ICAgICAgICAgICAgICAgIGludGVydmFscy0+YWRkSW50ZXJ2YWwoeSwgc3RhcnRYLCB4KTsKKyAg
ICAgICAgICAgICAgICAgICAgc3RhcnRYID0gLTE7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgT3duUHRyPFJhc3RlclNoYXBlPiByYXN0
ZXJTaGFwZSA9IGFkb3B0UHRyKG5ldyBSYXN0ZXJTaGFwZShpbnRlcnZhbHMucmVsZWFzZSgpKSk7
CisgICAgcmFzdGVyU2hhcGUtPm1fd3JpdGluZ01vZGUgPSB3cml0aW5nTW9kZTsKKyAgICByYXN0
ZXJTaGFwZS0+bV9tYXJnaW4gPSBmbG9hdFZhbHVlRm9yTGVuZ3RoKG1hcmdpbiwgMCk7CisgICAg
cmFzdGVyU2hhcGUtPm1fcGFkZGluZyA9IGZsb2F0VmFsdWVGb3JMZW5ndGgocGFkZGluZywgMCk7
CisKKyAgICByZXR1cm4gcmFzdGVyU2hhcGUucmVsZWFzZSgpOworfQorI2Vsc2UKK1Bhc3NPd25Q
dHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVTaGFwZShjb25zdCBTdHlsZUltYWdlKiBzdHlsZUltYWdl
LCBmbG9hdCB0aHJlc2hvbGQsIGNvbnN0IExheW91dFNpemUmIGxvZ2ljYWxCb3hTaXplLCBXcml0
aW5nTW9kZSB3cml0aW5nTW9kZSwgTGVuZ3RoIG1hcmdpbiwgTGVuZ3RoIHBhZGRpbmcpCit7Cisg
ICAgVU5VU0VEX1BBUkFNKHN0eWxlSW1hZ2UpOworICAgIFVOVVNFRF9QQVJBTSh0aHJlc2hvbGQp
OworICAgIFVOVVNFRF9QQVJBTShsb2dpY2FsQm94U2l6ZSk7CisKKyAgICBPd25QdHI8UmFzdGVy
U2hhcGU+IHJhc3RlclNoYXBlID0gYWRvcHRQdHIobmV3IFJhc3RlclNoYXBlKGFkb3B0UHRyKG5l
dyBSYXN0ZXJTaGFwZUludGVydmFscygpKSkpOworICAgIHJhc3RlclNoYXBlLT5tX3dyaXRpbmdN
b2RlID0gd3JpdGluZ01vZGU7CisgICAgcmFzdGVyU2hhcGUtPm1fbWFyZ2luID0gZmxvYXRWYWx1
ZUZvckxlbmd0aChtYXJnaW4sIDApOworICAgIHJhc3RlclNoYXBlLT5tX3BhZGRpbmcgPSBmbG9h
dFZhbHVlRm9yTGVuZ3RoKHBhZGRpbmcsIDApOworCisgICAgcmV0dXJuIHJhc3RlclNoYXBlLnJl
bGVhc2UoKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmgKaW5kZXggMGQ5ZWNmZC4uZjc3NWU1ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuaApAQCAtMzIsNiArMzIsNyBAQAogCiAj
aW5jbHVkZSAiQmFzaWNTaGFwZXMuaCIKICNpbmNsdWRlICJMYXlvdXRSZWN0LmgiCisjaW5jbHVk
ZSAiU3R5bGVJbWFnZS5oIgogI2luY2x1ZGUgIldyaXRpbmdNb2RlLmgiCiAjaW5jbHVkZSA8d3Rm
L1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC02MCw2ICs2MSw3IEBA
IHR5cGVkZWYgVmVjdG9yPExpbmVTZWdtZW50PiBTZWdtZW50TGlzdDsKIGNsYXNzIFNoYXBlIHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxTaGFwZT4gY3JlYXRlU2hhcGUoY29uc3Qg
QmFzaWNTaGFwZSosIGNvbnN0IExheW91dFNpemUmIGxvZ2ljYWxCb3hTaXplLCBXcml0aW5nTW9k
ZSwgTGVuZ3RoIG1hcmdpbiwgTGVuZ3RoIHBhZGRpbmcpOworICAgIHN0YXRpYyBQYXNzT3duUHRy
PFNoYXBlPiBjcmVhdGVTaGFwZShjb25zdCBTdHlsZUltYWdlKiwgZmxvYXQgdGhyZXNob2xkLCBj
b25zdCBMYXlvdXRTaXplJiBsb2dpY2FsQm94U2l6ZSwgV3JpdGluZ01vZGUsIExlbmd0aCBtYXJn
aW4sIExlbmd0aCBwYWRkaW5nKTsKIAogICAgIHZpcnR1YWwgflNoYXBlKCkgeyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVJbmZvLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVJbmZvLmNwcAppbmRleCBlMTE1NTgz
Li5iZjk0ZTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1No
YXBlSW5mby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUlu
Zm8uY3BwCkBAIC00NSwxMiArNDUsMjYgQEAgY29uc3QgU2hhcGUqIFNoYXBlSW5mbzxSZW5kZXJU
eXBlLCBzaGFwZUdldHRlciwgaW50ZXJ2YWxHZXR0ZXI+Ojpjb21wdXRlZFNoYXBlKCkKICAgICBp
ZiAoU2hhcGUqIHNoYXBlID0gbV9zaGFwZS5nZXQoKSkKICAgICAgICAgcmV0dXJuIHNoYXBlOwog
Ci0gICAgU2hhcGVWYWx1ZSogc2hhcGVWYWx1ZSA9IChtX3JlbmRlcmVyLT5zdHlsZSgpLT4qc2hh
cGVHZXR0ZXIpKCk7Ci0gICAgQmFzaWNTaGFwZSogc2hhcGUgPSAoc2hhcGVWYWx1ZSAmJiBzaGFw
ZVZhbHVlLT50eXBlKCkgPT0gU2hhcGVWYWx1ZTo6U2hhcGUpID8gc2hhcGVWYWx1ZS0+c2hhcGUo
KSA6IDA7CisgICAgY29uc3QgTGF5b3V0U2l6ZSBsb2dpY2FsQm94U2l6ZShtX3NoYXBlTG9naWNh
bFdpZHRoLCBtX3NoYXBlTG9naWNhbEhlaWdodCk7CisgICAgV3JpdGluZ01vZGUgd3JpdGluZ01v
ZGUgPSBtX3JlbmRlcmVyLT5zdHlsZSgpLT53cml0aW5nTW9kZSgpOworICAgIExlbmd0aCBtYXJn
aW4gPSBtX3JlbmRlcmVyLT5zdHlsZSgpLT5zaGFwZU1hcmdpbigpOworICAgIExlbmd0aCBwYWRk
aW5nID0gbV9yZW5kZXJlci0+c3R5bGUoKS0+c2hhcGVQYWRkaW5nKCk7CisgICAgY29uc3QgU2hh
cGVWYWx1ZSogc2hhcGVWYWx1ZSA9IChtX3JlbmRlcmVyLT5zdHlsZSgpLT4qc2hhcGVHZXR0ZXIp
KCk7CisgICAgQVNTRVJUKHNoYXBlVmFsdWUpOwogCi0gICAgQVNTRVJUKHNoYXBlKTsKKyAgICBz
d2l0Y2ggKHNoYXBlVmFsdWUtPnR5cGUoKSkgeworICAgIGNhc2UgU2hhcGVWYWx1ZTo6U2hhcGU6
CisgICAgICAgIEFTU0VSVChzaGFwZVZhbHVlLT5zaGFwZSgpKTsKKyAgICAgICAgbV9zaGFwZSA9
IFNoYXBlOjpjcmVhdGVTaGFwZShzaGFwZVZhbHVlLT5zaGFwZSgpLCBsb2dpY2FsQm94U2l6ZSwg
d3JpdGluZ01vZGUsIG1hcmdpbiwgcGFkZGluZyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
U2hhcGVWYWx1ZTo6SW1hZ2U6CisgICAgICAgIEFTU0VSVChzaGFwZVZhbHVlLT5pbWFnZSgpKTsK
KyAgICAgICAgbV9zaGFwZSA9IFNoYXBlOjpjcmVhdGVTaGFwZShzaGFwZVZhbHVlLT5pbWFnZSgp
LCAwLCBsb2dpY2FsQm94U2l6ZSwgd3JpdGluZ01vZGUsIG1hcmdpbiwgcGFkZGluZyk7CisgICAg
ICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIH0KIAotICAgIG1fc2hhcGUgPSBTaGFwZTo6Y3JlYXRlU2hhcGUoc2hhcGUsIExheW91dFNp
emUobV9zaGFwZUxvZ2ljYWxXaWR0aCwgbV9zaGFwZUxvZ2ljYWxIZWlnaHQpLCBtX3JlbmRlcmVy
LT5zdHlsZSgpLT53cml0aW5nTW9kZSgpLCBtX3JlbmRlcmVyLT5zdHlsZSgpLT5zaGFwZU1hcmdp
bigpLCBtX3JlbmRlcmVyLT5zdHlsZSgpLT5zaGFwZVBhZGRpbmcoKSk7CiAgICAgQVNTRVJUKG1f
c2hhcGUpOwogICAgIHJldHVybiBtX3NoYXBlLmdldCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUluc2lkZUluZm8uY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUluc2lkZUluZm8uY3BwCmluZGV4IGQxMjk1ZDAu
LjFjOGUxMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hh
cGVJbnNpZGVJbmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1No
YXBlSW5zaWRlSW5mby5jcHAKQEAgLTQ2LDExICs0NiwxNyBAQCBMaW5lU2VnbWVudFJhbmdlOjpM
aW5lU2VnbWVudFJhbmdlKGNvbnN0IElubGluZUl0ZXJhdG9yJiBzdGFydCwgY29uc3QgSW5saW5l
SXRlcgogYm9vbCBTaGFwZUluc2lkZUluZm86OmlzRW5hYmxlZEZvcihjb25zdCBSZW5kZXJCbG9j
ayogcmVuZGVyZXIpCiB7CiAgICAgU2hhcGVWYWx1ZSogc2hhcGVWYWx1ZSA9IHJlbmRlcmVyLT5z
dHlsZSgpLT5yZXNvbHZlZFNoYXBlSW5zaWRlKCk7Ci0gICAgaWYgKCFzaGFwZVZhbHVlIHx8IHNo
YXBlVmFsdWUtPnR5cGUoKSAhPSBTaGFwZVZhbHVlOjpTaGFwZSkKKyAgICBpZiAoIXNoYXBlVmFs
dWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEJhc2ljU2hhcGUqIHNoYXBlID0gc2hh
cGVWYWx1ZS0+c2hhcGUoKTsKLSAgICByZXR1cm4gc2hhcGUgJiYgc2hhcGUtPnR5cGUoKSAhPSBC
YXNpY1NoYXBlOjpCYXNpY1NoYXBlSW5zZXRSZWN0YW5nbGVUeXBlOworICAgIHN3aXRjaCAoc2hh
cGVWYWx1ZS0+dHlwZSgpKSB7CisgICAgY2FzZSBTaGFwZVZhbHVlOjpTaGFwZToKKyAgICAgICAg
cmV0dXJuIHNoYXBlVmFsdWUtPnNoYXBlKCkgJiYgc2hhcGVWYWx1ZS0+c2hhcGUoKS0+dHlwZSgp
ICE9IEJhc2ljU2hhcGU6OkJhc2ljU2hhcGVJbnNldFJlY3RhbmdsZVR5cGU7CisgICAgY2FzZSBT
aGFwZVZhbHVlOjpJbWFnZToKKyAgICAgICAgcmV0dXJuIHNoYXBlVmFsdWUtPmlzSW1hZ2VWYWxp
ZCgpOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiB9CiAKIGJv
b2wgU2hhcGVJbnNpZGVJbmZvOjphZGp1c3RMb2dpY2FsTGluZVRvcChmbG9hdCBtaW5TZWdtZW50
V2lkdGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBl
T3V0c2lkZUluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91
dHNpZGVJbmZvLmNwcAppbmRleCBlMTkyZjY1Li5jM2IwM2IwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5jcHAKQEAgLTM4LDgg
KzM4LDE4IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBib29sIFNoYXBlT3V0c2lkZUluZm86Omlz
RW5hYmxlZEZvcihjb25zdCBSZW5kZXJCb3gqIGJveCkKIHsKLSAgICBTaGFwZVZhbHVlKiB2YWx1
ZSA9IGJveC0+c3R5bGUoKS0+c2hhcGVPdXRzaWRlKCk7Ci0gICAgcmV0dXJuIGJveC0+aXNGbG9h
dGluZ1dpdGhTaGFwZU91dHNpZGUoKSAmJiB2YWx1ZS0+dHlwZSgpID09IFNoYXBlVmFsdWU6OlNo
YXBlICYmIHZhbHVlLT5zaGFwZSgpOworICAgIFNoYXBlVmFsdWUqIHNoYXBlVmFsdWUgPSBib3gt
PnN0eWxlKCktPnNoYXBlT3V0c2lkZSgpOworICAgIGlmICghYm94LT5pc0Zsb2F0aW5nV2l0aFNo
YXBlT3V0c2lkZSgpIHx8ICFzaGFwZVZhbHVlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBzd2l0Y2ggKHNoYXBlVmFsdWUtPnR5cGUoKSkgeworICAgIGNhc2UgU2hhcGVWYWx1ZTo6U2hh
cGU6CisgICAgICAgIHJldHVybiBzaGFwZVZhbHVlLT5zaGFwZSgpOworICAgIGNhc2UgU2hhcGVW
YWx1ZTo6SW1hZ2U6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBkZWZhdWx0OgorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQogfQogCiBib29sIFNoYXBlT3V0c2lkZUluZm86OmNvbXB1
dGVTZWdtZW50c0ZvckxpbmUoTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVIZWln
aHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhcGVWYWx1
ZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYXBlVmFsdWUuaAppbmRleCA2
NzRhZWViLi5hNDdlZDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU2hhcGVWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFw
ZVZhbHVlLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNkZWZpbmUgU2hhcGVWYWx1ZV9oCiAKICNpbmNs
dWRlICJCYXNpY1NoYXBlcy5oIgorI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCiAjaW5jbHVkZSAi
U3R5bGVJbWFnZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKQEAgLTYyLDEyICs2
MywxNiBAQCBwdWJsaWM6CiAKICAgICBTaGFwZVZhbHVlVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1
cm4gbV90eXBlOyB9CiAgICAgQmFzaWNTaGFwZSogc2hhcGUoKSBjb25zdCB7IHJldHVybiBtX3No
YXBlLmdldCgpOyB9CisKICAgICBTdHlsZUltYWdlKiBpbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1f
aW1hZ2UuZ2V0KCk7IH0KKyAgICBib29sIGlzSW1hZ2VWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIGlt
YWdlKCkgJiYgaW1hZ2UoKS0+Y2FjaGVkSW1hZ2UoKSAmJiBpbWFnZSgpLT5jYWNoZWRJbWFnZSgp
LT5oYXNJbWFnZSgpOyB9CiAgICAgdm9pZCBzZXRJbWFnZShQYXNzUmVmUHRyPFN0eWxlSW1hZ2U+
IGltYWdlKQogICAgIHsKKyAgICAgICAgQVNTRVJUKHR5cGUoKSA9PSBJbWFnZSk7CiAgICAgICAg
IGlmIChtX2ltYWdlICE9IGltYWdlKQogICAgICAgICAgICAgbV9pbWFnZSA9IGltYWdlOwogICAg
IH0KKwogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTaGFwZVZhbHVlJiBvdGhlcikgY29uc3Qg
eyByZXR1cm4gdHlwZSgpID09IG90aGVyLnR5cGUoKTsgfQogCiBwcml2YXRlOgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>205499</attachid>
            <date>2013-06-26 08:36:02 -0700</date>
            <delta_ts>2013-08-07 11:12:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>tmp.patch</filename>
            <type>text/plain</type>
            <size>39397</size>
            <attacher name="Hans Muller">giles_joplin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1OWQxNTJkLi4yNzFjYTQyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTMtMDYt
MTAgIEhhbnMgTXVsbGVyICA8aG11bGxlckBhZG9iZS5jb20+CisKKyAgICAgICAgW0NTUyBFeGNs
dXNpb25zXSBNaW5pbWFsIHN1cHBvcnQgZm9yIHVzaW5nIGFuIGltYWdlIHRvIGRlZmluZSBhIHNo
YXBlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTY2
NDMKKworICAgICAgICBUd28gdGVzdHMgdG8gdmVyaWZ5IHRoYXQgdGhlIGluaXRpYWwgaW1wbGVt
ZW50YXRpb24gb2Ygc2hhcGUgdmFsdWVkIGltYWdlcyBpcyB3b3JraW5nCisgICAgICAgIGZvciBz
aGFwZS1pbnNpZGUuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBmYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1pbWFnZS0w
MDEtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9leGNsdXNpb25zL3NoYXBl
LWluc2lkZS9zaGFwZS1pbnNpZGUtaW1hZ2UtMDAxLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAwMi1leHBlY3Rl
ZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3No
YXBlLWluc2lkZS1pbWFnZS0wMDIuaHRtbDogQWRkZWQuCisKIDIwMTMtMDYtMjYgIENocmlzdG9w
aGUgRHVtZXogIDxjaC5kdW1lekBzaXNhLnNhbXN1bmcuY29tPgogCiAgICAgICAgIEdldCByaWQg
b2YgbXVsdGlwbGUgaW5oZXJpdGVuY2UgZm9yIFNWR1ZpZXdFbGVtZW50IGludGVyZmFjZQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1p
bnNpZGUtaW1hZ2UtMDAxLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lv
bnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1pbWFnZS0wMDEtZXhwZWN0ZWQuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZGJhYTcyCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUt
aW1hZ2UtMDAxLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwyNCBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorICAgICNpbWFnZS1zaGFwZSB7CisgICAgICAgIGJv
cmRlcjogc29saWQgYmxhY2sgMXB4OworICAgICAgICBmb250OiAxMnB4LzEgQWhlbSwgc2Fucy1z
ZXJpZjsKKyAgICAgICAgcGFkZGluZzogNHB4OworICAgICAgICBjb2xvcjogZ3JlZW47CisgICAg
ICAgIHdpZHRoOiAyNHB4OworICAgICAgICBoZWlnaHQ6IDI0cHg7CisgICAgICAgIGJhY2tncm91
bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhF
VWdBQUFDQUFBQUFnQ0FZQUFBQnplbnIwQUFBQVNrbEVRVlJZQ2UzWElRNEFNQWhEMFhYaC9sZnVN
a2VDSmpVZmhTdDVZSkR0azZ5YkRQL1pERkJqQmRMdVVkanFtYXdBQVFRUVFBQUJCQkJBQUFFRTRn
TGlOK3hmU3FLUDM4QUR1UU1KTzZMTmJyNEFBQUFBU1VWT1JLNUNZSUk9Iik7CisgICAgICAgIGJh
Y2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CisgICAgfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxi
b2R5PgorICA8cCBpZD0iaW5mb3JtYXRpdmUtdGV4dCI+CisgICAgICBUaGlzIHRlc3QgcmVxdWly
ZXMgdGhlIEFoZW0gZm9udC4gSXQgdXNlcyBhIDMyeDMyIFBORyBpbWFnZSB3aXRoIGEgMjR4MjQg
cmVkIHNxdWFyZSBpbiB0aGUgY2VudGVyCisgICAgICB0byBkZWZpbmUgYSBzaGFwZS1pbnNpZGUu
IFRoZSBjb250ZW50IHNob3VsZCBqdXN0IGNvdmVyIHRoZSBzaGFwZSB3aXRoIHNvbGlkIGdyZWVu
LjwvcD4KKworICA8ZGl2IGlkPSJpbWFnZS1zaGFwZSI+WFg8YnIvPlhYPC9kaXY+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUt
aW5zaWRlL3NoYXBlLWluc2lkZS1pbWFnZS0wMDEuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXhj
bHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAwMS5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2ZWM3YjEyCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtaW1h
Z2UtMDAxLmh0bWwKQEAgLTAsMCArMSwyNSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPHN0eWxlPgorICAgICNpbWFnZS1zaGFwZSB7CisgICAgICAgIGJvcmRlcjogc29saWQg
YmxhY2sgMXB4OworICAgICAgICBmb250OiAxMnB4LzEgQWhlbSwgc2Fucy1zZXJpZjsKKyAgICAg
ICAgY29sb3I6IGdyZWVuOworICAgICAgICB3aWR0aDogMzJweDsKKyAgICAgICAgaGVpZ2h0OiAz
MnB4OworICAgICAgICAtd2Via2l0LXNoYXBlLWluc2lkZTogdXJsKCJkYXRhOmltYWdlL3BuZzti
YXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWdDQVlBQUFCemVucjBBQUFBU2ts
RVFWUllDZTNYSVE0QU1BaEQwWFhoL2xmdU1rZUNKalVmaFN0NVlKRHRrNnliRFAvWkRGQmpCZEx1
VWRqcW1hd0FBUVFRUUFBQkJCQkFBQUVFNGdMaU4reGZTcUtQMzhBRHVRTUpPNkxOYnI0QUFBQUFT
VVZPUks1Q1lJST0iKTsKKyAgICAgICAgLXdlYmtpdC1zaGFwZS1pbWFnZS10aHJlc2hvbGQ6IDA7
CisgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlW
Qk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFnQ0FZQUFBQnplbnIwQUFBQVNrbEVRVlJZQ2Uz
WElRNEFNQWhEMFhYaC9sZnVNa2VDSmpVZmhTdDVZSkR0azZ5YkRQL1pERkJqQmRMdVVkanFtYXdB
QVFRUVFBQUJCQkJBQUFFRTRnTGlOK3hmU3FLUDM4QUR1UU1KTzZMTmJyNEFBQUFBU1VWT1JLNUNZ
SUk9Iik7CisgICAgICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CisgICAgfQorPC9z
dHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICA8cCBpZD0iaW5mb3JtYXRpdmUtdGV4dCI+CisgICAg
ICBUaGlzIHRlc3QgcmVxdWlyZXMgdGhlIEFoZW0gZm9udC4gSXQgdXNlcyBhIDMyeDMyIFBORyBp
bWFnZSB3aXRoIGEgMjR4MjQgcmVkIHNxdWFyZSBpbiB0aGUgY2VudGVyCisgICAgICB0byBkZWZp
bmUgYSBzaGFwZS1pbnNpZGUuIFRoZSBjb250ZW50IHNob3VsZCBqdXN0IGNvdmVyIHRoZSBzaGFw
ZSB3aXRoIHNvbGlkIGdyZWVuLjwvcD4KKworICA8ZGl2IGlkPSJpbWFnZS1zaGFwZSI+WFggWFg8
L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXhj
bHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAwMi1leHBlY3RlZC5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUt
aW1hZ2UtMDAyLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uNWE1M2ZlOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXhjbHVzaW9u
cy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAwMi1leHBlY3RlZC5odG1sCkBAIC0w
LDAgKzEsMjEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KKyAg
ICAjaW1hZ2Utc2hhcGUgeworICAgICAgICBmb250OiAxMnB4LzEgQWhlbSwgc2Fucy1zZXJpZjsK
KyAgICAgICAgY29sb3I6IGdyZWVuOworICAgICAgICB3aWR0aDogMjRweDsKKyAgICAgICAgaGVp
Z2h0OiAyNHB4OworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImRhdGE6aW1hZ2UvcG5n
O2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZ0NBWUFBQUJ6ZW5yMEFBQUFS
RWxFUVZSWUNlM1hzUTBBSUFnRVFISC9uVjhuMEFwdGp0Q1JFSEkwVUJsaloyTWtkZW8rVDhVWE5R
TVFJRUNBQUFFQ0JBZ1FJRkJKNzF0d08rMnRnQUNCN3dJTG9JOEhPYU9tekZzQUFBQUFTVVZPUks1
Q1lJST0iKTsKKyAgICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKKyAgICB9Cis8
L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgIDxwIGlkPSJpbmZvcm1hdGl2ZS10ZXh0Ij4KKyAg
ICAgIFRoaXMgdGVzdCByZXF1aXJlcyB0aGUgQWhlbSBmb250LiBJdCB1c2VzIGEgMjR4MjQgc3F1
YXJlIFBORyBpbWFnZSB3aGVyZSBhbGwgcGl4ZWxzIGFyZSByZWQsCisgICAgICB0byBkZWZpbmUg
YSBzaGFwZS1pbnNpZGUuIFRoZSBjb250ZW50IHNob3VsZCBqdXN0IGNvdmVyIHRoZSBzaGFwZSB3
aXRoIHNvbGlkIGdyZWVuLjwvcD4KKyAgPGRpdiBpZD0iaW1hZ2Utc2hhcGUiPlhYPGJyLz5YWDwv
ZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9leGNs
dXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtaW1hZ2UtMDAyLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1pbWFnZS0wMDIu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNzk4NGUwCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFw
ZS1pbnNpZGUtaW1hZ2UtMDAyLmh0bWwKQEAgLTAsMCArMSwyNCBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorICAgICNpbWFnZS1zaGFwZSB7CisgICAgICAgIGZv
bnQ6IDEycHgvMSBBaGVtLCBzYW5zLXNlcmlmOworICAgICAgICBjb2xvcjogZ3JlZW47CisgICAg
ICAgIHdpZHRoOiAyNHB4OworICAgICAgICBoZWlnaHQ6IDI0cHg7CisgICAgICAgIC13ZWJraXQt
c2hhcGUtaW5zaWRlOiB1cmwoImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFO
U1VoRVVnQUFBQ0FBQUFBZ0NBWUFBQUJ6ZW5yMEFBQUFSRWxFUVZSWUNlM1hzUTBBSUFnRVFISC9u
VjhuMEFwdGp0Q1JFSEkwVUJsaloyTWtkZW8rVDhVWE5RTVFJRUNBQUFFQ0JBZ1FJRkJKNzF0d08r
MnRnQUNCN3dJTG9JOEhPYU9tekZzQUFBQUFTVVZPUks1Q1lJST0iKTsKKyAgICAgICAgLXdlYmtp
dC1zaGFwZS1pbWFnZS10aHJlc2hvbGQ6IDA7CisgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVy
bCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFn
Q0FZQUFBQnplbnIwQUFBQVJFbEVRVlJZQ2UzWHNRMEFJQWdFUUhIL25WOG4wQXB0anRDUkVISTBV
QmxqWjJNa2RlbytUOFVYTlFNUUlFQ0FBQUVDQkFnUUlGQko3MXR3TysydGdBQ0I3d0lMb0k4SE9h
T216RnNBQUFBQVNVVk9SSzVDWUlJPSIpOworICAgICAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8t
cmVwZWF0OworICAgIH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPHAgaWQ9ImluZm9y
bWF0aXZlLXRleHQiPgorICAgICAgVGhpcyB0ZXN0IHJlcXVpcmVzIHRoZSBBaGVtIGZvbnQuIEl0
IHVzZXMgYSAyNHgyNCBzcXVhcmUgUE5HIGltYWdlIHdoZXJlIGFsbCBwaXhlbHMgYXJlIHJlZCwK
KyAgICAgIHRvIGRlZmluZSBhIHNoYXBlLWluc2lkZS4gVGhlIGNvbnRlbnQgc2hvdWxkIGp1c3Qg
Y292ZXIgdGhlIHNoYXBlIHdpdGggc29saWQgZ3JlZW4uPC9wPgorCisgIDxkaXYgaWQ9ImltYWdl
LXNoYXBlIj5YWCBYWDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApp
bmRleCBkN2U3MWNjLi5kNDAzODllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMjIyMCw2ICsy
MjIwLDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHJlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MVW5kZXJPdmVyLmNwcAogCiAgICAgcmVuZGVyaW5nL3NoYXBlcy9Qb2x5Z29uU2hhcGUu
Y3BwCisgICAgcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5jcHAKICAgICByZW5kZXJpbmcv
c2hhcGVzL1JlY3RhbmdsZVNoYXBlLmNwcAogICAgIHJlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3Bw
CiAgICAgcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUluZm8uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmRmNGI2
Zi4uYzZhZjJkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDEzLTA2LTEwICBIYW5z
IE11bGxlciAgPGhtdWxsZXJAYWRvYmUuY29tPgorCisgICAgICAgIFtDU1MgRXhjbHVzaW9uc10g
TWluaW1hbCBzdXBwb3J0IGZvciB1c2luZyBhbiBpbWFnZSB0byBkZWZpbmUgYSBzaGFwZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE2NjQzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBhIGZp
cnN0IHNtYWxsIHN0ZXAgdG93YXJkcyBzdXBwb3J0aW5nIENTUyBzaGFwZXMgZGVmaW5lZCBieSBh
bgorICAgICAgICBpbWFnZSBVUkwgYW5kIGEgYWxwaGEgY2hhbm5lbCB0aHJlc2hvbGQuIFRvIGtl
ZXAgdGhlIHBhdGNoIGFzIHNtYWxsIGFzCisgICAgICAgIHBvc3NpYmxlLCB0aGVyZSBhcmUgbWFu
eSBsaW1pdGF0aW9ucyBhbmQgcmVtYWluaW5nIHdvcmsgaXRlbXMuICBTZWUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNjM0OCBmb3IgdGhlIGN1cnJl
bnQgbGlzdC4KKworICAgICAgICBUZXN0OiBmYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3No
YXBlLWluc2lkZS1pbWFnZS0wMDEuaHRtbAorICAgICAgICBUZXN0OiBmYXN0L2V4Y2x1c2lvbnMv
c2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1pbWFnZS0wMDIuaHRtbAorCisgICAgICAgICogQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBU
YXJnZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2o6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6
aW1hZ2VDaGFuZ2VkKTogV2hlbiB0aGUgaW1hZ2UgaGFzIGZpbmlzaGVkIGxvYWRpbmcsIHJlcXVl
c3QgYSBsYXlvdXQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJP
YmplY3Q6OnNldFN0eWxlKTogQWRkIG5vdGlmeSBjbGllbnRzIGZvciBzaGFwZSBpbWFnZXMuCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnVwZGF0ZVNoYXBlSW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6cmVtb3ZlU2hhcGVJbWFnZUNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJPYmplY3Q6OmFyZW5hRGVsZXRlKTogUmVtb3ZlIG5vdGlmeSBjbGllbnRzIGZvciBzaGFw
ZSBpbWFnZXMuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oOgorICAgICAgICAq
IHJlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuY3BwOiBBZGRlZC4gQSBTaGFwZSBkZWZpbmVk
IGJ5IHRocmVzaG9sZGluZyBhbiBpbWFnZSdzIGFscGhhIGNoYW5uZWwuCisgICAgICAgIChXZWJD
b3JlOjpSYXN0ZXJTaGFwZUludGVydmFsczo6Ym91bmRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJh
c3RlclNoYXBlSW50ZXJ2YWxzOjphZGRJbnRlcnZhbCk6IEFkZCBhIHNpbmdsZSBydW4gdG8gdGhl
IHNoYXBlLgorICAgICAgICAoV2ViQ29yZTo6YWxpZ25lZFJlY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UmFzdGVyU2hhcGVJbnRlcnZhbHM6OmdldEludGVydmFscyk6IFJldHVybiB0aGUgc2hhcGUn
cyBydW5zIHRoYXQgZmFsbCB3aXRoaW4gYSBob3Jpem9uYWwgYm94LgorICAgICAgICAoV2ViQ29y
ZTo6UmFzdGVyU2hhcGU6Om1hcmdpbkludGVydmFscyk6IEludGVybmFsIHJlcHJlc2VudGF0aW9u
IG9mIHRoZSBzaGFwZSB3aXRoIHNoYXBlLW1hcmdpbiBmYWN0b3JlZCBpbi4gIEN1cnJlbnRseSBv
bmx5IGEgc3R1Yi4KKyAgICAgICAgKFdlYkNvcmU6OlJhc3RlclNoYXBlOjpwYWRkaW5nSW50ZXJ2
YWxzKTogSW50ZXJuYWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIHNoYXBlIHdpdGggc2hhcGUtcGFk
ZGluZyBmYWN0b3JlZCBpbi4gIEN1cnJlbnRseSBvbmx5IGEgc3R1Yi4KKyAgICAgICAgKFdlYkNv
cmU6OlJhc3RlclNoYXBlOjpnZXRFeGNsdWRlZEludGVydmFscyk6CisgICAgICAgIChXZWJDb3Jl
OjpSYXN0ZXJTaGFwZTo6Z2V0SW5jbHVkZWRJbnRlcnZhbHMpOgorICAgICAgICAoV2ViQ29yZTo6
UmFzdGVyU2hhcGU6OmZpcnN0SW5jbHVkZWRJbnRlcnZhbExvZ2ljYWxUb3ApOgorICAgICAgICAq
IHJlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJhc3Rl
clNoYXBlSW50ZXJ2YWxzOjpSYXN0ZXJTaGFwZUludGVydmFscyk6IEludGVybmFsIHJ1biBsZW5n
dGggZW5jb2RlZCByZXByZXNlbnRhdGlvbiBvZiBhIFJhc3RlclNoYXBlLgorICAgICAgICAoV2Vi
Q29yZTo6UmFzdGVyU2hhcGVJbnRlcnZhbHM6OmlzRW1wdHkpOgorICAgICAgICAoV2ViQ29yZTo6
UmFzdGVyU2hhcGU6OlJhc3RlclNoYXBlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1No
YXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXBlOjpjcmVhdGVTaGFwZSk6IFN1cHBvcnQg
Zm9yIGNyZWF0aW5nIGEgU2hhcGUgYmFzZWQgb24gYSBSYXN0ZXJTaGFwZUludGVydmFscyBvYmpl
Y3QuCisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5oOgorICAgICAgICAqIHJlbmRl
cmluZy9zaGFwZXMvU2hhcGVJbmZvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ojo6Y29tcHV0ZWRT
aGFwZSk6IEFkZGVkIHN1cHBvcnQgZm9yIHRoZSBJbWFnZSBTaGFwZVZhbHVlIHR5cGUuCisgICAg
ICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUluc2lkZUluZm8uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhcGVJbnNpZGVJbmZvOjppc0VuYWJsZWRGb3IpOiBBZGRlZCBzdXBwb3J0IGZvciB0
aGUgSW1hZ2UgU2hhcGVWYWx1ZSB0eXBlLgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvU2hh
cGVPdXRzaWRlSW5mby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZU91dHNpZGVJbmZvOjpp
c0VuYWJsZWRGb3IpOiBBZGRlZCBzdXBwb3J0IGZvciB0aGUgSW1hZ2UgU2hhcGVWYWx1ZSB0eXBl
LgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TaGFwZVZhbHVlLmg6CisgICAgICAgIChXZWJD
b3JlOjpTaGFwZVZhbHVlOjppc0ltYWdlVmFsaWQpOiBUcnVlIGlmIHRoZSBzaGFwZSdzIGltYWdl
IGlzIHJlYWR5IHRvIGJlIGJlIHByb2Nlc3NlZC4KKwogMjAxMy0wNi0yNiAgUnlvc3VrZSBOaXdh
ICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBVc2UtYWZ0ZXItZnJlZSBpbiBSYWRpb0lu
cHV0VHlwZTo6aGFuZGxlS2V5ZG93bkV2ZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpp
bmRleCAzZDI1ZGNmLi5hOGYzZjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAg
LTQ2MDgsNiArNDYwOCw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuaCBcCiAJU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3NoYXBlcy9Qb2x5Z29uU2hhcGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc2hhcGVzL1BvbHlnb25TaGFwZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3No
YXBlcy9SYXN0ZXJTaGFwZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jl
Y3RhbmdsZVNoYXBlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SZWN0
YW5nbGVTaGFwZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNw
cCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNv
cmUvVGFyZ2V0LnByaQppbmRleCBlZTllZGRmLi4wOTFjMGQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTEy
MzksNiArMTIzOSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHJlbmRlcmluZy9Sb290SW5saW5lQm94
LmNwcCBcCiAgICAgcmVuZGVyaW5nL1Njcm9sbEJlaGF2aW9yLmNwcCBcCiAgICAgcmVuZGVyaW5n
L3NoYXBlcy9Qb2x5Z29uU2hhcGUuY3BwIFwKKyAgICByZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNo
YXBlLmNwcCBcCiAgICAgcmVuZGVyaW5nL3NoYXBlcy9SZWN0YW5nbGVTaGFwZS5jcHAgXAogICAg
IHJlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwIFwKICAgICByZW5kZXJpbmcvc2hhcGVzL1NoYXBl
SW5mby5jcHAgXApAQCAtMjUwMSw2ICsyNTAyLDcgQEAgSEVBREVSUyArPSBcCiAgICAgcmVuZGVy
aW5nL1Jvb3RJbmxpbmVCb3guaCBcCiAgICAgcmVuZGVyaW5nL1Njcm9sbEJlaGF2aW9yLmggXAog
ICAgIHJlbmRlcmluZy9zaGFwZXMvUG9seWdvblNoYXBlLmggXAorICAgIHJlbmRlcmluZy9zaGFw
ZXMvUmFzdGVyU2hhcGUuaCBcCiAgICAgcmVuZGVyaW5nL3NoYXBlcy9SZWN0YW5nbGVTaGFwZS5o
IFwKICAgICByZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmggXAogICAgIHJlbmRlcmluZy9zaGFwZXMv
U2hhcGVJbmZvLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9q
L1dlYkNvcmUudmN4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3Jl
LnZjeHByb2oKaW5kZXggOGM2MWI3Yi4uZWEyZTUzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCkBAIC02NTc1LDYgKzY1NzUsNyBAQAogICAg
ICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAg
IDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXHNoYXBl
c1xQb2x5Z29uU2hhcGUuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccmVuZGVy
aW5nXHNoYXBlc1xSYXN0ZXJTaGFwZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxyZW5kZXJpbmdcc2hhcGVzXFJlY3RhbmdsZVNoYXBlLmNwcCIgLz4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xzaGFwZXNcU2hhcGUuY3BwIiAvPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXHNoYXBlc1xTaGFwZUluc2lkZUluZm8uY3BwIiAvPgpA
QCAtMTI1NTAsNiArMTI1NTEsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVy
aW5nXFJlbmRlclNsaWRlci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVy
aW5nXFJlbmRlclNuYXBzaG90dGVkUGx1Z0luLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxyZW5kZXJpbmdcc2hhcGVzXFBvbHlnb25TaGFwZS5oIiAvPgorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccmVuZGVyaW5nXHNoYXBlc1xSYXN0ZXJTaGFwZS5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXHNoYXBlc1xSZWN0YW5nbGVTaGFwZS5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXHNoYXBlc1xTaGFwZS5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXHNoYXBlc1xTaGFwZUluc2lkZUlu
Zm8uaCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCA2MjExZTI4Li5lZGZjMDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xODM2LDYgKzE4MzYsOCBAQAog
CQk2RTY3RDJBNjEyODBFOEE0MDA4NzU4RjcgLyogRXh0ZW5zaW9uczNET3BlbkdMLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNjdEMkE0MTI4MEU4
QTQwMDg3NThGNyAvKiBFeHRlbnNpb25zM0RPcGVuR0wuY3BwICovOyB9OwogCQk2RTY3RDJBNzEy
ODBFOEE0MDA4NzU4RjcgLyogRXh0ZW5zaW9uczNET3BlbkdMLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTY3RDJBNTEyODBFOEE0MDA4NzU4RjcgLyog
RXh0ZW5zaW9uczNET3BlbkdMLmggKi87IH07CiAJCTZFNjdEMkE5MTI4MEU4QkQwMDg3NThGNyAv
KiBFeHRlbnNpb25zM0QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDZFNjdEMkE4MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25zM0QuaCAqLzsgfTsK
KwkJNkU4NEU5RTAxNzY2OEJFRTAwODE1QjY4IC8qIFJhc3RlclNoYXBlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFODRFOURFMTc2NjhCQUQwMDgx
NUI2OCAvKiBSYXN0ZXJTaGFwZS5jcHAgKi87IH07CisJCTZFODRFOUUxMTc2NjhCRjEwMDgxNUI2
OCAvKiBSYXN0ZXJTaGFwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNkU4NEU5REYxNzY2OEJBRDAwODE1QjY4IC8qIFJhc3RlclNoYXBlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNkVCQzVFQUYxMzhC
NTBGMjAwQTBDRjhBIC8qIEpTRmxvYXQ2NEFycmF5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFQkM1RUFEMTM4QjUwRjIwMEEwQ0Y4QSAvKiBKU0Zs
b2F0NjRBcnJheS5jcHAgKi87IH07CiAJCTZFQkM1RUIwMTM4QjUwRjIwMEEwQ0Y4QSAvKiBKU0Zs
b2F0NjRBcnJheS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNkVCQzVFQUUxMzhCNTBGMjAwQTBDRjhBIC8qIEpTRmxvYXQ2NEFycmF5LmggKi87IH07CiAJ
CTZFQkYwRTQ4MTJBODkyNjEwMERCMTcwOSAvKiBPRVNUZXh0dXJlRmxvYXQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkVCRjBFNDUxMkE4OTI2MTAw
REIxNzA5IC8qIE9FU1RleHR1cmVGbG9hdC5jcHAgKi87IH07CkBAIC04MjMyLDYgKzgyMzQsOCBA
QAogCQk2RTY3RDJBNDEyODBFOEE0MDA4NzU4RjcgLyogRXh0ZW5zaW9uczNET3BlbkdMLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV4dGVuc2lvbnMzRE9wZW5HTC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFNjdEMkE1MTI4MEU4QTQwMDg3NThG
NyAvKiBFeHRlbnNpb25zM0RPcGVuR0wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRXh0ZW5zaW9uczNET3BlbkdMLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZF
NjdEMkE4MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25zM0QuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRXh0ZW5zaW9uczNELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTZFODRFOURFMTc2NjhCQUQwMDgxNUI2OCAvKiBSYXN0ZXJTaGFwZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSYXN0ZXJTaGFwZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTZFODRFOURGMTc2NjhCQUQwMDgxNUI2OCAvKiBSYXN0ZXJT
aGFwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSYXN0ZXJTaGFwZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RUJDNUQ4MDEzOEI0QzRFMDBBMENGOEEgLyog
RmxvYXQ2NEFycmF5LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBGbG9hdDY0QXJyYXkuaWRs
OyBwYXRoID0gY2FudmFzL0Zsb2F0NjRBcnJheS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTZFQkM1RUFEMTM4QjUwRjIwMEEwQ0Y4QSAvKiBKU0Zsb2F0NjRBcnJheS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0Zsb2F0NjRBcnJheS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFQkM1RUFFMTM4QjUwRjIwMEEwQ0Y4QSAvKiBK
U0Zsb2F0NjRBcnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0Zsb2F0
NjRBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjA1NjgsNiArMjA1NzIs
OCBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJRkQwOEE4N0ExNzVEMzkyNjAwMkNEMzYwIC8qIFBv
bHlnb25TaGFwZS5jcHAgKi8sCiAJCQkJRkQwOEE4N0IxNzVEMzkyNjAwMkNEMzYwIC8qIFBvbHln
b25TaGFwZS5oICovLAorCQkJCTZFODRFOURFMTc2NjhCQUQwMDgxNUI2OCAvKiBSYXN0ZXJTaGFw
ZS5jcHAgKi8sCisJCQkJNkU4NEU5REYxNzY2OEJBRDAwODE1QjY4IC8qIFJhc3RlclNoYXBlLmgg
Ki8sCiAJCQkJRkQwOEE4N0MxNzVEMzkyNjAwMkNEMzYwIC8qIFJlY3RhbmdsZVNoYXBlLmNwcCAq
LywKIAkJCQlGRDA4QTg3RDE3NUQzOTI2MDAyQ0QzNjAgLyogUmVjdGFuZ2xlU2hhcGUuaCAqLywK
IAkJCQlGRDA4QTg3RTE3NUQzOTI2MDAyQ0QzNjAgLyogU2hhcGUuY3BwICovLApAQCAtMjA4ODgs
NiArMjA4OTQsNyBAQAogCQkJZmlsZXMgPSAoCiAJCQkJRkUxMTVGQUIxNjc5ODhDRDAwMjQ5MTM0
IC8qIEFic3RyYWN0RGF0YWJhc2VTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFNEFBREVF
MTZEMkMzNzQwMDAyNkZGQyAvKiBBYnN0cmFjdFNRTFN0YXRlbWVudC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNkU4NEU5RTExNzY2OEJGMTAwODE1QjY4IC8qIFJhc3RlclNoYXBlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlGRTRBQURFRjE2RDJDMzc0MDAwMjZGRkMgLyogQWJzdHJhY3RTUUxTdGF0ZW1l
bnRCYWNrZW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUUxQjFEMTBGRjU5ODY5MDA1NzZCM0Ig
LyogQWJzdHJhY3RXb3JrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5QTgxMjJFMEZCQjlDMUQw
MDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmggaW4gSGVhZGVycyAqLywKQEAg
LTI2OTgxLDYgKzI2OTg4LDcgQEAKIAkJCQk5NzdFMkUwRTEyRjBGQzlDMDBDMTMzNzkgLyogWFNT
QXVkaXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzdFMkUwRTEyRjBGQzlDMDBDMTMzODAg
LyogWFNTQXVkaXRvckRlbGVnYXRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZENTM3MzUyMTM3
QjY1MTgwMDAwOERDRSAvKiBaZXJvUG9sZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk2RTg0RTlF
MDE3NjY4QkVFMDA4MTVCNjggLyogUmFzdGVyU2hhcGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkp
OwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCBiMzcwNGVkLi5lY2Y1NTkw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTE0MzUsNiAr
MTQzNSwyMSBAQCB2b2lkIFJlbmRlckJsb2NrOjpsYXlvdXQoKQogfQogCiAjaWYgRU5BQkxFKENT
U19TSEFQRVMpCit2b2lkIFJlbmRlckJsb2NrOjppbWFnZUNoYW5nZWQoV3JhcHBlZEltYWdlUHRy
IGltYWdlLCBjb25zdCBJbnRSZWN0KikKK3sKKyAgICBSZW5kZXJCb3g6OmltYWdlQ2hhbmdlZChp
bWFnZSk7CisKKyAgICBpZiAoIXBhcmVudCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBTaGFw
ZVZhbHVlKiBzaGFwZVZhbHVlID0gc3R5bGUoKS0+c2hhcGVJbnNpZGUoKTsKKyAgICBpZiAoc2hh
cGVWYWx1ZSAmJiBzaGFwZVZhbHVlLT5pbWFnZSgpICYmIHNoYXBlVmFsdWUtPmltYWdlKCktPmRh
dGEoKSA9PSBpbWFnZSkgeworICAgICAgICBTaGFwZUluc2lkZUluZm8qIHNoYXBlSW5zaWRlSW5m
byA9IGVuc3VyZVNoYXBlSW5zaWRlSW5mbygpOworICAgICAgICBzaGFwZUluc2lkZUluZm8tPmRp
cnR5U2hhcGVTaXplKCk7CisgICAgICAgIG1hcmtTaGFwZUluc2lkZURlc2NlbmRhbnRzRm9yTGF5
b3V0KCk7CisgICAgfQorfQorCiB2b2lkIFJlbmRlckJsb2NrOjp1cGRhdGVTaGFwZUluc2lkZUlu
Zm9BZnRlclN0eWxlQ2hhbmdlKGNvbnN0IFNoYXBlVmFsdWUqIHNoYXBlSW5zaWRlLCBjb25zdCBT
aGFwZVZhbHVlKiBvbGRTaGFwZUluc2lkZSkKIHsKICAgICAvLyBGSVhNRTogQSBmdXR1cmUgb3B0
aW1pemF0aW9uIHdvdWxkIGRvIGEgZGVlcCBjb21wYXJpc29uIGZvciBlcXVhbGl0eS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKaW5kZXggMzNlYzFjOS4uM2RhZmE5NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKQEAgLTQ2OCw2ICs0NjgsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBtYXJrU2hhcGVJbnNpZGVEZXNjZW5kYW50c0ZvckxheW91dCgpOwog
ICAgIFNoYXBlSW5zaWRlSW5mbyogbGF5b3V0U2hhcGVJbnNpZGVJbmZvKCkgY29uc3Q7CiAgICAg
Ym9vbCBhbGxvd3NTaGFwZUluc2lkZUluZm9TaGFyaW5nKCkgY29uc3QgeyByZXR1cm4gIWlzSW5s
aW5lKCkgJiYgIWlzRmxvYXRpbmcoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBpbWFnZUNoYW5nZWQo
V3JhcHBlZEltYWdlUHRyLCBjb25zdCBJbnRSZWN0KiA9IDApIE9WRVJSSURFOwogI2VuZGlmCiAK
IHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5k
ZXggNmQ4ZGJiNi4uODU4ZDllZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5jcHAKQEAgLTE4NDUsNiArMTg0NSwxMCBAQCB2b2lkIFJlbmRlck9iamVjdDo6c2V0U3R5
bGUoUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCiAgICAgdXBkYXRlSW1hZ2Uob2xkU3R5
bGUgPyBvbGRTdHlsZS0+Ym9yZGVySW1hZ2UoKS5pbWFnZSgpIDogMCwgbV9zdHlsZSA/IG1fc3R5
bGUtPmJvcmRlckltYWdlKCkuaW1hZ2UoKSA6IDApOwogICAgIHVwZGF0ZUltYWdlKG9sZFN0eWxl
ID8gb2xkU3R5bGUtPm1hc2tCb3hJbWFnZSgpLmltYWdlKCkgOiAwLCBtX3N0eWxlID8gbV9zdHls
ZS0+bWFza0JveEltYWdlKCkuaW1hZ2UoKSA6IDApOwogCisjaWYgRU5BQkxFKENTU19TSEFQRVMp
CisgICAgdXBkYXRlU2hhcGVJbWFnZShvbGRTdHlsZSA/IG9sZFN0eWxlLT5zaGFwZUluc2lkZSgp
IDogMCwgbV9zdHlsZSA/IG1fc3R5bGUtPnNoYXBlSW5zaWRlKCkgOiAwKTsKKyNlbmRpZgorCiAg
ICAgLy8gV2UgbmVlZCB0byBlbnN1cmUgdGhhdCB2aWV3LT5tYXhpbWFsT3V0bGluZVNpemUoKSBp
cyB2YWxpZCBmb3IgYW55IHJlcGFpbnRzIHRoYXQgaGFwcGVuCiAgICAgLy8gZHVyaW5nIHN0eWxl
RGlkQ2hhbmdlIChpdCdzIHVzZWQgYnkgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoKSku
CiAgICAgaWYgKG1fc3R5bGUtPm91dGxpbmVXaWR0aCgpID4gMCAmJiBtX3N0eWxlLT5vdXRsaW5l
U2l6ZSgpID4gbWF4aW1hbE91dGxpbmVTaXplKFBhaW50UGhhc2VPdXRsaW5lKSkKQEAgLTIwOTcs
NiArMjEwMSwxNCBAQCB2b2lkIFJlbmRlck9iamVjdDo6dXBkYXRlSW1hZ2UoU3R5bGVJbWFnZSog
b2xkSW1hZ2UsIFN0eWxlSW1hZ2UqIG5ld0ltYWdlKQogICAgIH0KIH0KIAorI2lmIEVOQUJMRShD
U1NfU0hBUEVTKQordm9pZCBSZW5kZXJPYmplY3Q6OnVwZGF0ZVNoYXBlSW1hZ2UoY29uc3QgU2hh
cGVWYWx1ZSogb2xkU2hhcGVWYWx1ZSwgY29uc3QgU2hhcGVWYWx1ZSogbmV3U2hhcGVWYWx1ZSkK
K3sKKyAgICBpZiAob2xkU2hhcGVWYWx1ZSB8fCBuZXdTaGFwZVZhbHVlKQorICAgICAgICB1cGRh
dGVJbWFnZShvbGRTaGFwZVZhbHVlID8gb2xkU2hhcGVWYWx1ZS0+aW1hZ2UoKSA6IDAsIG5ld1No
YXBlVmFsdWUgPyBuZXdTaGFwZVZhbHVlLT5pbWFnZSgpIDogMCk7Cit9CisjZW5kaWYKKwogTGF5
b3V0UmVjdCBSZW5kZXJPYmplY3Q6OnZpZXdSZWN0KCkgY29uc3QKIHsKICAgICByZXR1cm4gdmll
dygpLT52aWV3UmVjdCgpOwpAQCAtMjYxNSw2ICsyNjI3LDE2IEBAIHZvaWQgUmVuZGVyT2JqZWN0
OjpkZXN0cm95KCkKICAgICBhcmVuYURlbGV0ZShyZW5kZXJBcmVuYSgpLCB0aGlzKTsKIH0KIAor
I2lmIEVOQUJMRShDU1NfU0hBUEVTKQordm9pZCBSZW5kZXJPYmplY3Q6OnJlbW92ZVNoYXBlSW1h
Z2VDbGllbnQoU2hhcGVWYWx1ZSogc2hhcGVWYWx1ZSkKK3sKKyAgICBpZiAoIXNoYXBlVmFsdWUp
CisgICAgICAgIHJldHVybjsKKyAgICBpZiAoU3R5bGVJbWFnZSogc2hhcGVJbWFnZSA9IHNoYXBl
VmFsdWUtPmltYWdlKCkpCisgICAgICAgIHNoYXBlSW1hZ2UtPnJlbW92ZUNsaWVudCh0aGlzKTsK
K30KKyNlbmRpZgorCiB2b2lkIFJlbmRlck9iamVjdDo6YXJlbmFEZWxldGUoUmVuZGVyQXJlbmEq
IGFyZW5hLCB2b2lkKiBiYXNlKQogewogICAgIGlmIChtX3N0eWxlKSB7CkBAIC0yNjMzLDYgKzI2
NTUsMTAgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OmFyZW5hRGVsZXRlKFJlbmRlckFyZW5hKiBhcmVu
YSwgdm9pZCogYmFzZSkKIAogICAgICAgICBpZiAoU3R5bGVJbWFnZSogbWFza0JveEltYWdlID0g
bV9zdHlsZS0+bWFza0JveEltYWdlKCkuaW1hZ2UoKSkKICAgICAgICAgICAgIG1hc2tCb3hJbWFn
ZS0+cmVtb3ZlQ2xpZW50KHRoaXMpOworCisjaWYgRU5BQkxFKENTU19TSEFQRVMpCisgICAgICAg
IHJlbW92ZVNoYXBlSW1hZ2VDbGllbnQobV9zdHlsZS0+c2hhcGVJbnNpZGUoKSk7CisjZW5kaWYK
ICAgICB9CiAKICNpZm5kZWYgTkRFQlVHCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmgKaW5kZXggODA4MDkyMy4uODQzNzI1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3QuaApAQCAtNzAzLDYgKzcwMyw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdXBk
YXRlRmlsbEltYWdlcyhjb25zdCBGaWxsTGF5ZXIqLCBjb25zdCBGaWxsTGF5ZXIqKTsKICAgICB2
b2lkIHVwZGF0ZUltYWdlKFN0eWxlSW1hZ2UqLCBTdHlsZUltYWdlKik7CisjaWYgRU5BQkxFKENT
U19TSEFQRVMpCisgICAgdm9pZCB1cGRhdGVTaGFwZUltYWdlKGNvbnN0IFNoYXBlVmFsdWUqLCBj
b25zdCBTaGFwZVZhbHVlKik7CisjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWlu
dEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOwogCkBAIC0xMDMzLDYgKzEwMzYsMTAgQEAgcHJp
dmF0ZToKIAogICAgIENvbG9yIHNlbGVjdGlvbkNvbG9yKGludCBjb2xvclByb3BlcnR5KSBjb25z
dDsKIAorI2lmIEVOQUJMRShDU1NfU0hBUEVTKQorICAgIHZvaWQgcmVtb3ZlU2hhcGVJbWFnZUNs
aWVudChTaGFwZVZhbHVlKik7CisjZW5kaWYKKwogI2lmbmRlZiBOREVCVUcKICAgICB2b2lkIGNo
ZWNrQmxvY2tQb3NpdGlvbmVkT2JqZWN0c05lZWRMYXlvdXQoKTsKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZjg2YzVjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5jcHAKQEAgLTAsMCArMSwxNTcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiAg
ICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzCisgKiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUworICogRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKyAqIENPUFlS
SUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwKKyAq
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwKKyAq
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQKKyAqIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmFzdGVyU2hhcGUuaCIK
KworI2luY2x1ZGUgIlNoYXBlSW50ZXJ2YWwuaCIKKyNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0ludFJlY3QgUmFzdGVyU2hhcGVJbnRlcnZhbHM6
OmJvdW5kcygpIGNvbnN0Cit7CisgICAgaWYgKCFtX2JvdW5kcykKKyAgICAgICAgbV9ib3VuZHMg
PSBhZG9wdFB0cihuZXcgSW50UmVjdChtX3JlZ2lvbi5ib3VuZHMoKSkpOworICAgIHJldHVybiAq
bV9ib3VuZHM7Cit9CisKK3ZvaWQgUmFzdGVyU2hhcGVJbnRlcnZhbHM6OmFkZEludGVydmFsKGlu
dCB5LCBpbnQgeDEsIGludCB4MikKK3sKKyAgICBtX3JlZ2lvbi51bml0ZShSZWdpb24oSW50UmVj
dCh4MSwgeSwgeDIgLSB4MSwgMSkpKTsKKyAgICBtX2JvdW5kcy5jbGVhcigpOworfQorCitzdGF0
aWMgaW5saW5lIEludFJlY3QgYWxpZ25lZFJlY3QoSW50UmVjdCByLCBpbnQgeTEsIGludCB5MikK
K3sKKyAgICByZXR1cm4gSW50UmVjdChyLngoKSwgeTEsIHIud2lkdGgoKSwgeTIgLSB5MSk7Cit9
CisKK3ZvaWQgUmFzdGVyU2hhcGVJbnRlcnZhbHM6OmdldEluY2x1ZGVkSW50ZXJ2YWxzKGludCB5
MSwgaW50IHkyLCBTZWdtZW50TGlzdCYgcmVzdWx0KSBjb25zdAoreworICAgIEFTU0VSVCh5MiA+
PSB5MSk7CisKKyAgICBJbnRSZWN0IGxpbmVSZWN0KGJvdW5kcygpLngoKSwgeTEsIGJvdW5kcygp
LndpZHRoKCksIHkyIC0geTEpOworICAgIFJlZ2lvbiBsaW5lUmVnaW9uKGxpbmVSZWN0KTsKKyAg
ICBsaW5lUmVnaW9uLmludGVyc2VjdChtX3JlZ2lvbik7CisgICAgaWYgKGxpbmVSZWdpb24uaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBWZWN0b3I8SW50UmVjdD4gbGluZVJlY3Rz
ID0gbGluZVJlZ2lvbi5yZWN0cygpOworICAgIEFTU0VSVChsaW5lUmVjdHMuc2l6ZSgpID4gMCk7
CisKKyAgICBSZWdpb24gc2VnbWVudHNSZWdpb24obGluZVJlY3QpOworICAgIFJlZ2lvbiBpbnRl
cnZhbHNSZWdpb247CisKKyAgICAvLyBUaGUgbG9vcCBiZWxvdyB1c2VzIFJlZ2lvbnMgdG8gY29t
cHV0ZSB0aGUgaW50ZXJzZWN0aW9uIG9mIHRoZSBob3Jpem9udGFsCisgICAgLy8gc2hhcGUgaW50
ZXJ2YWxzIHRoYXQgZmFsbCB3aXRoaW4gdGhlIGxpbmUncyBib3guCisgICAgaW50IGxpbmVZID0g
bGluZVJlY3RzWzBdLnkoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGluZVJlY3Rz
LnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChsaW5lUmVjdHNbaV0ueSgpICE9IGxpbmVZKSB7
CisgICAgICAgICAgICBzZWdtZW50c1JlZ2lvbi5pbnRlcnNlY3QoaW50ZXJ2YWxzUmVnaW9uKTsK
KyAgICAgICAgICAgIGludGVydmFsc1JlZ2lvbiA9IFJlZ2lvbigpOworICAgICAgICB9CisgICAg
ICAgIGludGVydmFsc1JlZ2lvbi51bml0ZShSZWdpb24oYWxpZ25lZFJlY3QobGluZVJlY3RzW2ld
LCB5MSwgeTIpKSk7CisgICAgICAgIGxpbmVZID0gbGluZVJlY3RzW2ldLnkoKTsKKyAgICB9Cisg
ICAgaWYgKCFpbnRlcnZhbHNSZWdpb24uaXNFbXB0eSgpKQorICAgICAgICBzZWdtZW50c1JlZ2lv
bi5pbnRlcnNlY3QoaW50ZXJ2YWxzUmVnaW9uKTsKKworICAgIFZlY3RvcjxJbnRSZWN0PiBzZWdt
ZW50UmVjdHMgPSBzZWdtZW50c1JlZ2lvbi5yZWN0cygpOworICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBzZWdtZW50UmVjdHMuc2l6ZSgpOyArK2kpCisgICAgICAgIHJlc3VsdC5hcHBlbmQo
TGluZVNlZ21lbnQoc2VnbWVudFJlY3RzW2ldLngoKSwgc2VnbWVudFJlY3RzW2ldLm1heFgoKSkp
OworfQorCitjb25zdCBSYXN0ZXJTaGFwZUludGVydmFscyYgUmFzdGVyU2hhcGU6Om1hcmdpbklu
dGVydmFscygpIGNvbnN0Cit7CisgICAgQVNTRVJUKHNoYXBlTWFyZ2luKCkgPj0gMCk7CisgICAg
aWYgKCFzaGFwZU1hcmdpbigpKQorICAgICAgICByZXR1cm4gKm1faW50ZXJ2YWxzOworCisgICAg
Ly8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBub24temVybyBtYXJnaW4sIHNlZSBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE2MzQ4LgorICAgIHJldHVybiAqbV9pbnRl
cnZhbHM7Cit9CisKK2NvbnN0IFJhc3RlclNoYXBlSW50ZXJ2YWxzJiBSYXN0ZXJTaGFwZTo6cGFk
ZGluZ0ludGVydmFscygpIGNvbnN0Cit7CisgICAgQVNTRVJUKHNoYXBlUGFkZGluZygpID49IDAp
OworICAgIGlmICghc2hhcGVQYWRkaW5nKCkpCisgICAgICAgIHJldHVybiAqbV9pbnRlcnZhbHM7
CisKKyAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIG5vbi16ZXJvIHBhZGRpbmcsIHNlZSBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE2MzQ4LgorICAgIHJldHVy
biAqbV9pbnRlcnZhbHM7Cit9CisKK3ZvaWQgUmFzdGVyU2hhcGU6OmdldEV4Y2x1ZGVkSW50ZXJ2
YWxzKExheW91dFVuaXQgbG9naWNhbFRvcCwgTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBTZWdt
ZW50TGlzdCYpIGNvbnN0Cit7CisgICAgY29uc3QgUmFzdGVyU2hhcGVJbnRlcnZhbHMmIGludGVy
dmFscyA9IG1hcmdpbkludGVydmFscygpOworICAgIGlmIChpbnRlcnZhbHMuaXNFbXB0eSgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBpZiAobG9naWNhbFRvcCArIGxvZ2ljYWxIZWlnaHQgPCBp
bnRlcnZhbHMuYm91bmRzKCkueSgpIHx8IGxvZ2ljYWxUb3AgPj0gaW50ZXJ2YWxzLmJvdW5kcygp
Lm1heFkoKSkKKyAgICAgICAgcmV0dXJuOworfQorCit2b2lkIFJhc3RlclNoYXBlOjpnZXRJbmNs
dWRlZEludGVydmFscyhMYXlvdXRVbml0IGxvZ2ljYWxUb3AsIExheW91dFVuaXQgbG9naWNhbEhl
aWdodCwgU2VnbWVudExpc3QmIHJlc3VsdCkgY29uc3QKK3sKKyAgICBjb25zdCBSYXN0ZXJTaGFw
ZUludGVydmFscyYgaW50ZXJ2YWxzID0gcGFkZGluZ0ludGVydmFscygpOworICAgIGlmIChpbnRl
cnZhbHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBmbG9hdCB5MSA9IGxvZ2lj
YWxUb3A7CisgICAgZmxvYXQgeTIgPSBsb2dpY2FsVG9wICsgbG9naWNhbEhlaWdodDsKKworICAg
IGlmICh5MSA8IGludGVydmFscy5ib3VuZHMoKS55KCkgfHwgeTIgPiBpbnRlcnZhbHMuYm91bmRz
KCkubWF4WSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpbnRlcnZhbHMuZ2V0SW5jbHVkZWRJ
bnRlcnZhbHMoeTEsIHkyLCByZXN1bHQpOworfQorCitib29sIFJhc3RlclNoYXBlOjpmaXJzdElu
Y2x1ZGVkSW50ZXJ2YWxMb2dpY2FsVG9wKExheW91dFVuaXQgbWluTG9naWNhbEludGVydmFsVG9w
LCBjb25zdCBMYXlvdXRTaXplJiBtaW5Mb2dpY2FsSW50ZXJ2YWxTaXplLCBMYXlvdXRVbml0JiBy
ZXN1bHQpIGNvbnN0Cit7CisgICAgZmxvYXQgbWluSW50ZXJ2YWxUb3AgPSBtaW5Mb2dpY2FsSW50
ZXJ2YWxUb3A7CisgICAgZmxvYXQgbWluSW50ZXJ2YWxIZWlnaHQgPSBtaW5Mb2dpY2FsSW50ZXJ2
YWxTaXplLmhlaWdodCgpOworICAgIGZsb2F0IG1pbkludGVydmFsV2lkdGggPSBtaW5Mb2dpY2Fs
SW50ZXJ2YWxTaXplLndpZHRoKCk7CisKKyAgICBjb25zdCBSYXN0ZXJTaGFwZUludGVydmFscyYg
aW50ZXJ2YWxzID0gcGFkZGluZ0ludGVydmFscygpOworICAgIGlmIChpbnRlcnZhbHMuaXNFbXB0
eSgpIHx8IG1pbkludGVydmFsV2lkdGggPiBpbnRlcnZhbHMuYm91bmRzKCkud2lkdGgoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZmxvYXQgbWluWSA9IHN0ZDo6bWF4PGZsb2F0Pihp
bnRlcnZhbHMuYm91bmRzKCkueSgpLCBtaW5JbnRlcnZhbFRvcCk7CisgICAgZmxvYXQgbWF4WSA9
IG1pblkgKyBtaW5JbnRlcnZhbEhlaWdodDsKKworICAgIGlmIChtYXhZID4gaW50ZXJ2YWxzLmJv
dW5kcygpLm1heFkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gRklYTUU6IENv
bXBsZXRlIHRoaXMgbWV0aG9kLCBzZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTExNjM0OC4KKyAgICByZXN1bHQgPSBtaW5ZOworICAgIHJldHVybiB0cnVlOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hh
cGVzL1Jhc3RlclNoYXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTMw
NWQ0MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMv
UmFzdGVyU2hhcGUuaApAQCAtMCwwICsxLDgwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEz
IEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKKyAqICAgIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisg
KiAgICBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscworICogICAgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MKKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFCisgKiBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsCisgKiBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICog
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCisgKiBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VECisgKiBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBSYXN0ZXJTaGFw
ZV9oCisjZGVmaW5lIFJhc3RlclNoYXBlX2gKKworI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgorI2lu
Y2x1ZGUgIlJlZ2lvbi5oIgorI2luY2x1ZGUgIlNoYXBlLmgiCisjaW5jbHVkZSA8d3RmL0Fzc2Vy
dGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgUmFzdGVyU2hhcGVJbnRlcnZhbHMgeworcHVibGljOgorICAgIFJhc3RlclNoYXBl
SW50ZXJ2YWxzKCkgeyB9CisKKyAgICBJbnRSZWN0IGJvdW5kcygpIGNvbnN0OworICAgIGJvb2wg
aXNFbXB0eSgpIGNvbnN0ICB7IHJldHVybiBtX3JlZ2lvbi5pc0VtcHR5KCk7IH0KKyAgICB2b2lk
IGFkZEludGVydmFsKGludCB5LCBpbnQgeDEsIGludCB4Mik7CisgICAgdm9pZCBnZXRJbmNsdWRl
ZEludGVydmFscyhpbnQgeTEsIGludCB5MiwgU2VnbWVudExpc3QmKSBjb25zdDsKKworcHJpdmF0
ZToKKyAgICBSZWdpb24gbV9yZWdpb247CisgICAgbXV0YWJsZSBPd25QdHI8SW50UmVjdD4gbV9i
b3VuZHM7IC8vIENhY2hlZCB2YWx1ZSBvZiBtX3JlZ2lvbi5ib3VuZHMoKS4KK307CisKK2NsYXNz
IFJhc3RlclNoYXBlIDogcHVibGljIFNoYXBlIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShS
YXN0ZXJTaGFwZSk7CitwdWJsaWM6CisgICAgUmFzdGVyU2hhcGUoUGFzc093blB0cjxSYXN0ZXJT
aGFwZUludGVydmFscz4gaW50ZXJ2YWxzKQorICAgICAgICA6IFNoYXBlKCkKKyAgICAgICAgLCBt
X2ludGVydmFscyhpbnRlcnZhbHMpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgTGF5b3V0
UmVjdCBzaGFwZU1hcmdpbkxvZ2ljYWxCb3VuZGluZ0JveCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0
dXJuIHN0YXRpY19jYXN0PExheW91dFJlY3Q+KG1hcmdpbkludGVydmFscygpLmJvdW5kcygpKTsg
fQorICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBzaGFwZVBhZGRpbmdMb2dpY2FsQm91bmRpbmdCb3go
KSBjb25zdCBPVkVSUklERSB7IHJldHVybiBzdGF0aWNfY2FzdDxMYXlvdXRSZWN0PihwYWRkaW5n
SW50ZXJ2YWxzKCkuYm91bmRzKCkpOyB9CisgICAgdmlydHVhbCBib29sIGlzRW1wdHkoKSBjb25z
dCBPVkVSUklERSB7IHJldHVybiBtX2ludGVydmFscy0+aXNFbXB0eSgpOyB9CisgICAgdmlydHVh
bCB2b2lkIGdldEV4Y2x1ZGVkSW50ZXJ2YWxzKExheW91dFVuaXQgbG9naWNhbFRvcCwgTGF5b3V0
VW5pdCBsb2dpY2FsSGVpZ2h0LCBTZWdtZW50TGlzdCYpIGNvbnN0IE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCBnZXRJbmNsdWRlZEludGVydmFscyhMYXlvdXRVbml0IGxvZ2ljYWxUb3AsIExh
eW91dFVuaXQgbG9naWNhbEhlaWdodCwgU2VnbWVudExpc3QmKSBjb25zdCBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIGJvb2wgZmlyc3RJbmNsdWRlZEludGVydmFsTG9naWNhbFRvcChMYXlvdXRVbml0
IG1pbkxvZ2ljYWxJbnRlcnZhbFRvcCwgY29uc3QgTGF5b3V0U2l6ZSYgbWluTG9naWNhbEludGVy
dmFsU2l6ZSwgTGF5b3V0VW5pdCYpIGNvbnN0IE9WRVJSSURFOworCitwcml2YXRlOgorICAgIGNv
bnN0IFJhc3RlclNoYXBlSW50ZXJ2YWxzJiBtYXJnaW5JbnRlcnZhbHMoKSBjb25zdDsKKyAgICBj
b25zdCBSYXN0ZXJTaGFwZUludGVydmFscyYgcGFkZGluZ0ludGVydmFscygpIGNvbnN0OworCisg
ICAgT3duUHRyPFJhc3RlclNoYXBlSW50ZXJ2YWxzPiBtX2ludGVydmFsczsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFJhc3RlclNoYXBlX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKaW5kZXggODEwYWM1NS4uZjg3Y2MyMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKQEAgLTMxLDkgKzMxLDEy
IEBACiAjaW5jbHVkZSAiU2hhcGUuaCIKIAogI2luY2x1ZGUgIkJhc2ljU2hhcGVGdW5jdGlvbnMu
aCIKKyNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgorI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiTGVuZ3RoRnVuY3Rpb25zLmgi
CiAjaW5jbHVkZSAiUG9seWdvblNoYXBlLmgiCisjaW5jbHVkZSAiUmFzdGVyU2hhcGUuaCIKICNp
bmNsdWRlICJSZWN0YW5nbGVTaGFwZS5oIgogI2luY2x1ZGUgIldpbmRSdWxlLmgiCiAjaW5jbHVk
ZSA8d3RmL01hdGhFeHRyYXMuaD4KQEAgLTIwMCw0ICsyMDMsNjcgQEAgUGFzc093blB0cjxTaGFw
ZT4gU2hhcGU6OmNyZWF0ZVNoYXBlKGNvbnN0IEJhc2ljU2hhcGUqIGJhc2ljU2hhcGUsIGNvbnN0
IExheW91dFMKICAgICByZXR1cm4gc2hhcGUucmVsZWFzZSgpOwogfQogCisjaWYgVVNFKDNEX0dS
QVBISUNTKQorUGFzc093blB0cjxTaGFwZT4gU2hhcGU6OmNyZWF0ZVNoYXBlKGNvbnN0IFN0eWxl
SW1hZ2UqIHN0eWxlSW1hZ2UsIGZsb2F0IHRocmVzaG9sZCwgY29uc3QgTGF5b3V0U2l6ZSYgbG9n
aWNhbEJveFNpemUsIFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBMZW5ndGggbWFyZ2luLCBMZW5n
dGggcGFkZGluZykKK3sKKyAgICAvLyBGSVhNRTogU2hvdWxkIGNsaXAgc2hhcGUgdG8gbG9naWNh
bCBib3guCisgICAgVU5VU0VEX1BBUkFNKGxvZ2ljYWxCb3hTaXplKTsKKworICAgIEFTU0VSVChz
dHlsZUltYWdlICYmIHN0eWxlSW1hZ2UtPmlzQ2FjaGVkSW1hZ2UoKSAmJiBzdHlsZUltYWdlLT5j
YWNoZWRJbWFnZSgpICYmIHN0eWxlSW1hZ2UtPmNhY2hlZEltYWdlKCktPmltYWdlKCkpOworCisg
ICAgSW1hZ2UqIGltYWdlID0gc3R5bGVJbWFnZS0+Y2FjaGVkSW1hZ2UoKS0+aW1hZ2UoKTsKKyAg
ICBHcmFwaGljc0NvbnRleHQzRDo6SW1hZ2VFeHRyYWN0b3IgaW1hZ2VFeHRyYWN0b3IoaW1hZ2Us
IEdyYXBoaWNzQ29udGV4dDNEOjpIdG1sRG9tTm9uZSwgZmFsc2UsIHRydWUpOyAvLyBHZXQgYSBw
b2ludGVyIHRvIHRoZSByYXcgcGl4ZWwgZGF0YSBmb3IgaW1hZ2UuCisgICAgaW50IGltYWdlV2lk
dGggPSBzdGF0aWNfY2FzdDxpbnQ+KGltYWdlRXh0cmFjdG9yLmltYWdlV2lkdGgoKSk7CisgICAg
aW50IGltYWdlSGVpZ2h0ID0gc3RhdGljX2Nhc3Q8aW50PihpbWFnZUV4dHJhY3Rvci5pbWFnZUhl
aWdodCgpKTsKKworICAgIFZlY3Rvcjx1aW50OF90PiBhbHBoYVBpeGVsczsKKyAgICBib29sIHBh
Y2tJbWFnZURhdGFPSyA9IEdyYXBoaWNzQ29udGV4dDNEOjpwYWNrSW1hZ2VEYXRhKGltYWdlLCBp
bWFnZUV4dHJhY3Rvci5pbWFnZVBpeGVsRGF0YSgpLAorICAgICAgICBHcmFwaGljc0NvbnRleHQz
RDo6QUxQSEEsCisgICAgICAgIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLAorICAg
ICAgICBmYWxzZSwgLyogZmxpcFkgKi8KKyAgICAgICAgR3JhcGhpY3NDb250ZXh0M0Q6OkFscGhh
RG9Ob3RoaW5nLAorICAgICAgICBpbWFnZUV4dHJhY3Rvci5pbWFnZVNvdXJjZUZvcm1hdCgpLAor
ICAgICAgICBpbWFnZVdpZHRoLAorICAgICAgICBpbWFnZUhlaWdodCwKKyAgICAgICAgaW1hZ2VF
eHRyYWN0b3IuaW1hZ2VTb3VyY2VVbnBhY2tBbGlnbm1lbnQoKSwKKyAgICAgICAgYWxwaGFQaXhl
bHMpOworCisgICAgT3duUHRyPFJhc3RlclNoYXBlSW50ZXJ2YWxzPiBpbnRlcnZhbHMgPSBhZG9w
dFB0cihuZXcgUmFzdGVyU2hhcGVJbnRlcnZhbHMoKSk7CisgICAgdWludDhfdCBhbHBoYVBpeGVs
VGhyZXNob2xkID0gdGhyZXNob2xkICogMjU1OworCisgICAgaWYgKHBhY2tJbWFnZURhdGFPSykg
eworICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGltYWdlV2lkdGggKiBpbWFn
ZUhlaWdodCkgPT0gYWxwaGFQaXhlbHMuc2l6ZSgpKTsKKyAgICAgICAgZm9yIChpbnQgeSA9IDA7
IHkgPCBpbWFnZUhlaWdodDsgKyt5KSB7CisgICAgICAgICAgICBpbnQgc3RhcnRYID0gLTE7Cisg
ICAgICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IGltYWdlV2lkdGg7ICsreCkgeworICAgICAg
ICAgICAgICAgIHVpbnQ4X3QgYWxwaGEgPSBhbHBoYVBpeGVsc1t4ICsgeSAqIGltYWdlV2lkdGhd
OworICAgICAgICAgICAgICAgIGlmICgoc3RhcnRYID09IC0xKSAmJiBhbHBoYSA+IGFscGhhUGl4
ZWxUaHJlc2hvbGQpIHsKKyAgICAgICAgICAgICAgICAgICAgc3RhcnRYID0geDsKKyAgICAgICAg
ICAgICAgICB9IGVsc2UgaWYgKHN0YXJ0WCAhPSAtMSAmJiAoYWxwaGEgPD0gYWxwaGFQaXhlbFRo
cmVzaG9sZCB8fCB4ID09IGltYWdlV2lkdGggLSAxKSkgeworICAgICAgICAgICAgICAgICAgICBp
bnRlcnZhbHMtPmFkZEludGVydmFsKHksIHN0YXJ0WCwgeCk7CisgICAgICAgICAgICAgICAgICAg
IHN0YXJ0WCA9IC0xOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KKworICAgIE93blB0cjxSYXN0ZXJTaGFwZT4gcmFzdGVyU2hhcGUgPSBhZG9wdFB0
cihuZXcgUmFzdGVyU2hhcGUoaW50ZXJ2YWxzLnJlbGVhc2UoKSkpOworICAgIHJhc3RlclNoYXBl
LT5tX3dyaXRpbmdNb2RlID0gd3JpdGluZ01vZGU7CisgICAgcmFzdGVyU2hhcGUtPm1fbWFyZ2lu
ID0gZmxvYXRWYWx1ZUZvckxlbmd0aChtYXJnaW4sIDApOworICAgIHJhc3RlclNoYXBlLT5tX3Bh
ZGRpbmcgPSBmbG9hdFZhbHVlRm9yTGVuZ3RoKHBhZGRpbmcsIDApOworCisgICAgcmV0dXJuIHJh
c3RlclNoYXBlLnJlbGVhc2UoKTsKK30KKyNlbHNlCitQYXNzT3duUHRyPFNoYXBlPiBTaGFwZTo6
Y3JlYXRlU2hhcGUoY29uc3QgU3R5bGVJbWFnZSosIGZsb2F0LCBjb25zdCBMYXlvdXRTaXplJiwg
V3JpdGluZ01vZGUgd3JpdGluZ01vZGUsIExlbmd0aCBtYXJnaW4sIExlbmd0aCBwYWRkaW5nKQor
eworICAgIE93blB0cjxSYXN0ZXJTaGFwZT4gcmFzdGVyU2hhcGUgPSBhZG9wdFB0cihuZXcgUmFz
dGVyU2hhcGUoYWRvcHRQdHIobmV3IFJhc3RlclNoYXBlSW50ZXJ2YWxzKCkpKSk7CisgICAgcmFz
dGVyU2hhcGUtPm1fd3JpdGluZ01vZGUgPSB3cml0aW5nTW9kZTsKKyAgICByYXN0ZXJTaGFwZS0+
bV9tYXJnaW4gPSBmbG9hdFZhbHVlRm9yTGVuZ3RoKG1hcmdpbiwgMCk7CisgICAgcmFzdGVyU2hh
cGUtPm1fcGFkZGluZyA9IGZsb2F0VmFsdWVGb3JMZW5ndGgocGFkZGluZywgMCk7CisKKyAgICBy
ZXR1cm4gcmFzdGVyU2hhcGUucmVsZWFzZSgpOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hh
cGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuaAppbmRleCAwZDll
Y2ZkLi5mNzc1ZTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVz
L1NoYXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5oCkBA
IC0zMiw2ICszMiw3IEBACiAKICNpbmNsdWRlICJCYXNpY1NoYXBlcy5oIgogI2luY2x1ZGUgIkxh
eW91dFJlY3QuaCIKKyNpbmNsdWRlICJTdHlsZUltYWdlLmgiCiAjaW5jbHVkZSAiV3JpdGluZ01v
ZGUuaCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KQEAgLTYwLDYgKzYxLDcgQEAgdHlwZWRlZiBWZWN0b3I8TGluZVNlZ21lbnQ+IFNlZ21lbnRM
aXN0OwogY2xhc3MgU2hhcGUgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPFNoYXBl
PiBjcmVhdGVTaGFwZShjb25zdCBCYXNpY1NoYXBlKiwgY29uc3QgTGF5b3V0U2l6ZSYgbG9naWNh
bEJveFNpemUsIFdyaXRpbmdNb2RlLCBMZW5ndGggbWFyZ2luLCBMZW5ndGggcGFkZGluZyk7Cisg
ICAgc3RhdGljIFBhc3NPd25QdHI8U2hhcGU+IGNyZWF0ZVNoYXBlKGNvbnN0IFN0eWxlSW1hZ2Uq
LCBmbG9hdCB0aHJlc2hvbGQsIGNvbnN0IExheW91dFNpemUmIGxvZ2ljYWxCb3hTaXplLCBXcml0
aW5nTW9kZSwgTGVuZ3RoIG1hcmdpbiwgTGVuZ3RoIHBhZGRpbmcpOwogCiAgICAgdmlydHVhbCB+
U2hhcGUoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBl
cy9TaGFwZUluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUlu
Zm8uY3BwCmluZGV4IGUxMTU1ODMuLmJmOTRlNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zaGFwZXMvU2hhcGVJbmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc2hhcGVzL1NoYXBlSW5mby5jcHAKQEAgLTQ1LDEyICs0NSwyNiBAQCBjb25zdCBTaGFw
ZSogU2hhcGVJbmZvPFJlbmRlclR5cGUsIHNoYXBlR2V0dGVyLCBpbnRlcnZhbEdldHRlcj46OmNv
bXB1dGVkU2hhcGUoKQogICAgIGlmIChTaGFwZSogc2hhcGUgPSBtX3NoYXBlLmdldCgpKQogICAg
ICAgICByZXR1cm4gc2hhcGU7CiAKLSAgICBTaGFwZVZhbHVlKiBzaGFwZVZhbHVlID0gKG1fcmVu
ZGVyZXItPnN0eWxlKCktPipzaGFwZUdldHRlcikoKTsKLSAgICBCYXNpY1NoYXBlKiBzaGFwZSA9
IChzaGFwZVZhbHVlICYmIHNoYXBlVmFsdWUtPnR5cGUoKSA9PSBTaGFwZVZhbHVlOjpTaGFwZSkg
PyBzaGFwZVZhbHVlLT5zaGFwZSgpIDogMDsKKyAgICBjb25zdCBMYXlvdXRTaXplIGxvZ2ljYWxC
b3hTaXplKG1fc2hhcGVMb2dpY2FsV2lkdGgsIG1fc2hhcGVMb2dpY2FsSGVpZ2h0KTsKKyAgICBX
cml0aW5nTW9kZSB3cml0aW5nTW9kZSA9IG1fcmVuZGVyZXItPnN0eWxlKCktPndyaXRpbmdNb2Rl
KCk7CisgICAgTGVuZ3RoIG1hcmdpbiA9IG1fcmVuZGVyZXItPnN0eWxlKCktPnNoYXBlTWFyZ2lu
KCk7CisgICAgTGVuZ3RoIHBhZGRpbmcgPSBtX3JlbmRlcmVyLT5zdHlsZSgpLT5zaGFwZVBhZGRp
bmcoKTsKKyAgICBjb25zdCBTaGFwZVZhbHVlKiBzaGFwZVZhbHVlID0gKG1fcmVuZGVyZXItPnN0
eWxlKCktPipzaGFwZUdldHRlcikoKTsKKyAgICBBU1NFUlQoc2hhcGVWYWx1ZSk7CiAKLSAgICBB
U1NFUlQoc2hhcGUpOworICAgIHN3aXRjaCAoc2hhcGVWYWx1ZS0+dHlwZSgpKSB7CisgICAgY2Fz
ZSBTaGFwZVZhbHVlOjpTaGFwZToKKyAgICAgICAgQVNTRVJUKHNoYXBlVmFsdWUtPnNoYXBlKCkp
OworICAgICAgICBtX3NoYXBlID0gU2hhcGU6OmNyZWF0ZVNoYXBlKHNoYXBlVmFsdWUtPnNoYXBl
KCksIGxvZ2ljYWxCb3hTaXplLCB3cml0aW5nTW9kZSwgbWFyZ2luLCBwYWRkaW5nKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBTaGFwZVZhbHVlOjpJbWFnZToKKyAgICAgICAgQVNTRVJUKHNo
YXBlVmFsdWUtPmltYWdlKCkpOworICAgICAgICBtX3NoYXBlID0gU2hhcGU6OmNyZWF0ZVNoYXBl
KHNoYXBlVmFsdWUtPmltYWdlKCksIDAsIGxvZ2ljYWxCb3hTaXplLCB3cml0aW5nTW9kZSwgbWFy
Z2luLCBwYWRkaW5nKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQogCi0gICAgbV9zaGFwZSA9IFNoYXBlOjpjcmVhdGVT
aGFwZShzaGFwZSwgTGF5b3V0U2l6ZShtX3NoYXBlTG9naWNhbFdpZHRoLCBtX3NoYXBlTG9naWNh
bEhlaWdodCksIG1fcmVuZGVyZXItPnN0eWxlKCktPndyaXRpbmdNb2RlKCksIG1fcmVuZGVyZXIt
PnN0eWxlKCktPnNoYXBlTWFyZ2luKCksIG1fcmVuZGVyZXItPnN0eWxlKCktPnNoYXBlUGFkZGlu
ZygpKTsKICAgICBBU1NFUlQobV9zaGFwZSk7CiAgICAgcmV0dXJuIG1fc2hhcGUuZ2V0KCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW5zaWRl
SW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW5zaWRlSW5m
by5jcHAKaW5kZXggZDEyOTVkMC4uMWM4ZTExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3NoYXBlcy9TaGFwZUluc2lkZUluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zaGFwZXMvU2hhcGVJbnNpZGVJbmZvLmNwcApAQCAtNDYsMTEgKzQ2LDE3IEBA
IExpbmVTZWdtZW50UmFuZ2U6OkxpbmVTZWdtZW50UmFuZ2UoY29uc3QgSW5saW5lSXRlcmF0b3Im
IHN0YXJ0LCBjb25zdCBJbmxpbmVJdGVyCiBib29sIFNoYXBlSW5zaWRlSW5mbzo6aXNFbmFibGVk
Rm9yKGNvbnN0IFJlbmRlckJsb2NrKiByZW5kZXJlcikKIHsKICAgICBTaGFwZVZhbHVlKiBzaGFw
ZVZhbHVlID0gcmVuZGVyZXItPnN0eWxlKCktPnJlc29sdmVkU2hhcGVJbnNpZGUoKTsKLSAgICBp
ZiAoIXNoYXBlVmFsdWUgfHwgc2hhcGVWYWx1ZS0+dHlwZSgpICE9IFNoYXBlVmFsdWU6OlNoYXBl
KQorICAgIGlmICghc2hhcGVWYWx1ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgQmFz
aWNTaGFwZSogc2hhcGUgPSBzaGFwZVZhbHVlLT5zaGFwZSgpOwotICAgIHJldHVybiBzaGFwZSAm
JiBzaGFwZS0+dHlwZSgpICE9IEJhc2ljU2hhcGU6OkJhc2ljU2hhcGVJbnNldFJlY3RhbmdsZVR5
cGU7CisgICAgc3dpdGNoIChzaGFwZVZhbHVlLT50eXBlKCkpIHsKKyAgICBjYXNlIFNoYXBlVmFs
dWU6OlNoYXBlOgorICAgICAgICByZXR1cm4gc2hhcGVWYWx1ZS0+c2hhcGUoKSAmJiBzaGFwZVZh
bHVlLT5zaGFwZSgpLT50eXBlKCkgIT0gQmFzaWNTaGFwZTo6QmFzaWNTaGFwZUluc2V0UmVjdGFu
Z2xlVHlwZTsKKyAgICBjYXNlIFNoYXBlVmFsdWU6OkltYWdlOgorICAgICAgICByZXR1cm4gc2hh
cGVWYWx1ZS0+aXNJbWFnZVZhbGlkKCk7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KIH0KIAogYm9vbCBTaGFwZUluc2lkZUluZm86OmFkanVzdExvZ2ljYWxMaW5l
VG9wKGZsb2F0IG1pblNlZ21lbnRXaWR0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uY3BwCmluZGV4IGUxOTJmNjUuLmMzYjAzYjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRl
SW5mby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNp
ZGVJbmZvLmNwcApAQCAtMzgsOCArMzgsMTggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGJvb2wg
U2hhcGVPdXRzaWRlSW5mbzo6aXNFbmFibGVkRm9yKGNvbnN0IFJlbmRlckJveCogYm94KQogewot
ICAgIFNoYXBlVmFsdWUqIHZhbHVlID0gYm94LT5zdHlsZSgpLT5zaGFwZU91dHNpZGUoKTsKLSAg
ICByZXR1cm4gYm94LT5pc0Zsb2F0aW5nV2l0aFNoYXBlT3V0c2lkZSgpICYmIHZhbHVlLT50eXBl
KCkgPT0gU2hhcGVWYWx1ZTo6U2hhcGUgJiYgdmFsdWUtPnNoYXBlKCk7CisgICAgU2hhcGVWYWx1
ZSogc2hhcGVWYWx1ZSA9IGJveC0+c3R5bGUoKS0+c2hhcGVPdXRzaWRlKCk7CisgICAgaWYgKCFi
b3gtPmlzRmxvYXRpbmdXaXRoU2hhcGVPdXRzaWRlKCkgfHwgIXNoYXBlVmFsdWUpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIHN3aXRjaCAoc2hhcGVWYWx1ZS0+dHlwZSgpKSB7CisgICAg
Y2FzZSBTaGFwZVZhbHVlOjpTaGFwZToKKyAgICAgICAgcmV0dXJuIHNoYXBlVmFsdWUtPnNoYXBl
KCk7CisgICAgY2FzZSBTaGFwZVZhbHVlOjpJbWFnZToKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiB9CiAKIGJvb2wgU2hh
cGVPdXRzaWRlSW5mbzo6Y29tcHV0ZVNlZ21lbnRzRm9yTGluZShMYXlvdXRVbml0IGxpbmVUb3As
IExheW91dFVuaXQgbGluZUhlaWdodCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TaGFwZVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U2hhcGVWYWx1ZS5oCmluZGV4IDY3NGFlZWIuLmE0N2VkMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFwZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1NoYXBlVmFsdWUuaApAQCAtMzEsNiArMzEsNyBAQAogI2RlZmluZSBT
aGFwZVZhbHVlX2gKIAogI2luY2x1ZGUgIkJhc2ljU2hhcGVzLmgiCisjaW5jbHVkZSAiQ2FjaGVk
SW1hZ2UuaCIKICNpbmNsdWRlICJTdHlsZUltYWdlLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KIApAQCAtNjIsMTIgKzYzLDE2IEBAIHB1YmxpYzoKIAogICAgIFNoYXBlVmFsdWVUeXBl
IHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KICAgICBCYXNpY1NoYXBlKiBzaGFwZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc2hhcGUuZ2V0KCk7IH0KKwogICAgIFN0eWxlSW1hZ2UqIGltYWdl
KCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZS5nZXQoKTsgfQorICAgIGJvb2wgaXNJbWFnZVZhbGlk
KCkgY29uc3QgeyByZXR1cm4gaW1hZ2UoKSAmJiBpbWFnZSgpLT5jYWNoZWRJbWFnZSgpICYmIGlt
YWdlKCktPmNhY2hlZEltYWdlKCktPmhhc0ltYWdlKCk7IH0KICAgICB2b2lkIHNldEltYWdlKFBh
c3NSZWZQdHI8U3R5bGVJbWFnZT4gaW1hZ2UpCiAgICAgeworICAgICAgICBBU1NFUlQodHlwZSgp
ID09IEltYWdlKTsKICAgICAgICAgaWYgKG1faW1hZ2UgIT0gaW1hZ2UpCiAgICAgICAgICAgICBt
X2ltYWdlID0gaW1hZ2U7CiAgICAgfQorCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNoYXBl
VmFsdWUmIG90aGVyKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gb3RoZXIudHlwZSgpOyB9CiAK
IHByaXZhdGU6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>208286</attachid>
            <date>2013-08-07 11:12:18 -0700</date>
            <delta_ts>2013-08-12 16:36:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>tmp.patch</filename>
            <type>text/plain</type>
            <size>39171</size>
            <attacher name="Hans Muller">giles_joplin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiZWNlNTZiLi43MTc0ZTIxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTMtMDYt
MTAgIEhhbnMgTXVsbGVyICA8aG11bGxlckBhZG9iZS5jb20+CisKKyAgICAgICAgW0NTUyBFeGNs
dXNpb25zXSBNaW5pbWFsIHN1cHBvcnQgZm9yIHVzaW5nIGFuIGltYWdlIHRvIGRlZmluZSBhIHNo
YXBlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTY2
NDMKKworICAgICAgICBUd28gdGVzdHMgdG8gdmVyaWZ5IHRoYXQgdGhlIGluaXRpYWwgaW1wbGVt
ZW50YXRpb24gb2Ygc2hhcGUgdmFsdWVkIGltYWdlcyBpcyB3b3JraW5nCisgICAgICAgIGZvciBz
aGFwZS1pbnNpZGUuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBmYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1pbWFnZS0w
MDEtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9leGNsdXNpb25zL3NoYXBl
LWluc2lkZS9zaGFwZS1pbnNpZGUtaW1hZ2UtMDAxLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAwMi1leHBlY3Rl
ZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3No
YXBlLWluc2lkZS1pbWFnZS0wMDIuaHRtbDogQWRkZWQuCisKIDIwMTMtMDgtMDcgIEFudHRpIEtv
aXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIDIuNSUgcmVncmVzc2lvbiBvbiBw
YWdlIGN5Y2xlciBtb3oKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2hhcGVzL3NoYXBl
LWluc2lkZS9zaGFwZS1pbnNpZGUtaW1hZ2UtMDAxLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L3NoYXBlcy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAwMS1leHBlY3Rl
ZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkYmFhNzIKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3NoYXBlcy9zaGFwZS1pbnNpZGUvc2hhcGUt
aW5zaWRlLWltYWdlLTAwMS1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMjQgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KKyAgICAjaW1hZ2Utc2hhcGUgeworICAg
ICAgICBib3JkZXI6IHNvbGlkIGJsYWNrIDFweDsKKyAgICAgICAgZm9udDogMTJweC8xIEFoZW0s
IHNhbnMtc2VyaWY7CisgICAgICAgIHBhZGRpbmc6IDRweDsKKyAgICAgICAgY29sb3I6IGdyZWVu
OworICAgICAgICB3aWR0aDogMjRweDsKKyAgICAgICAgaGVpZ2h0OiAyNHB4OworICAgICAgICBi
YWNrZ3JvdW5kLWltYWdlOiB1cmwoImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FB
QUFOU1VoRVVnQUFBQ0FBQUFBZ0NBWUFBQUJ6ZW5yMEFBQUFTa2xFUVZSWUNlM1hJUTRBTUFoRDBY
WGgvbGZ1TWtlQ0pqVWZoU3Q1WUpEdGs2eWJEUC9aREZCakJkTHVVZGpxbWF3QUFRUVFRQUFCQkJC
QUFBRUU0Z0xpTit4ZlNxS1AzOEFEdVFNSk82TE5icjRBQUFBQVNVVk9SSzVDWUlJPSIpOworICAg
ICAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OworICAgIH0KKzwvc3R5bGU+Cis8L2hl
YWQ+Cis8Ym9keT4KKyAgPHAgaWQ9ImluZm9ybWF0aXZlLXRleHQiPgorICAgICAgVGhpcyB0ZXN0
IHJlcXVpcmVzIHRoZSBBaGVtIGZvbnQuIEl0IHVzZXMgYSAzMngzMiBQTkcgaW1hZ2Ugd2l0aCBh
IDI0eDI0IHJlZCBzcXVhcmUgaW4gdGhlIGNlbnRlcgorICAgICAgdG8gZGVmaW5lIGEgc2hhcGUt
aW5zaWRlLiBUaGUgY29udGVudCBzaG91bGQganVzdCBjb3ZlciB0aGUgc2hhcGUgd2l0aCBzb2xp
ZCBncmVlbi48L3A+CisKKyAgPGRpdiBpZD0iaW1hZ2Utc2hhcGUiPlhYPGJyLz5YWDwvZGl2Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zaGFwZXMvc2hh
cGUtaW5zaWRlL3NoYXBlLWluc2lkZS1pbWFnZS0wMDEuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
c2hhcGVzL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtaW1hZ2UtMDAxLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDZlYzdiMTIKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L3NoYXBlcy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAw
MS5odG1sCkBAIC0wLDAgKzEsMjUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KzxzdHlsZT4KKyAgICAjaW1hZ2Utc2hhcGUgeworICAgICAgICBib3JkZXI6IHNvbGlkIGJsYWNr
IDFweDsKKyAgICAgICAgZm9udDogMTJweC8xIEFoZW0sIHNhbnMtc2VyaWY7CisgICAgICAgIGNv
bG9yOiBncmVlbjsKKyAgICAgICAgd2lkdGg6IDMycHg7CisgICAgICAgIGhlaWdodDogMzJweDsK
KyAgICAgICAgLXdlYmtpdC1zaGFwZS1pbnNpZGU6IHVybCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0
LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFnQ0FZQUFBQnplbnIwQUFBQVNrbEVRVlJZ
Q2UzWElRNEFNQWhEMFhYaC9sZnVNa2VDSmpVZmhTdDVZSkR0azZ5YkRQL1pERkJqQmRMdVVkanFt
YXdBQVFRUVFBQUJCQkJBQUFFRTRnTGlOK3hmU3FLUDM4QUR1UU1KTzZMTmJyNEFBQUFBU1VWT1JL
NUNZSUk9Iik7CisgICAgICAgIC13ZWJraXQtc2hhcGUtaW1hZ2UtdGhyZXNob2xkOiAwOworICAg
ICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncw
S0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZ0NBWUFBQUJ6ZW5yMEFBQUFTa2xFUVZSWUNlM1hJUTRB
TUFoRDBYWGgvbGZ1TWtlQ0pqVWZoU3Q1WUpEdGs2eWJEUC9aREZCakJkTHVVZGpxbWF3QUFRUVFR
QUFCQkJCQUFBRUU0Z0xpTit4ZlNxS1AzOEFEdVFNSk82TE5icjRBQUFBQVNVVk9SSzVDWUlJPSIp
OworICAgICAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OworICAgIH0KKzwvc3R5bGU+
Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPHAgaWQ9ImluZm9ybWF0aXZlLXRleHQiPgorICAgICAgVGhp
cyB0ZXN0IHJlcXVpcmVzIHRoZSBBaGVtIGZvbnQuIEl0IHVzZXMgYSAzMngzMiBQTkcgaW1hZ2Ug
d2l0aCBhIDI0eDI0IHJlZCBzcXVhcmUgaW4gdGhlIGNlbnRlcgorICAgICAgdG8gZGVmaW5lIGEg
c2hhcGUtaW5zaWRlLiBUaGUgY29udGVudCBzaG91bGQganVzdCBjb3ZlciB0aGUgc2hhcGUgd2l0
aCBzb2xpZCBncmVlbi48L3A+CisKKyAgPGRpdiBpZD0iaW1hZ2Utc2hhcGUiPlhYIFhYPC9kaXY+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NoYXBlcy9z
aGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAwMi1leHBlY3RlZC5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9zaGFwZXMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1pbWFnZS0wMDItZXhw
ZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YTUzZmU4Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zaGFwZXMvc2hhcGUtaW5zaWRlL3No
YXBlLWluc2lkZS1pbWFnZS0wMDItZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDIxIEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+CisgICAgI2ltYWdlLXNoYXBlIHsK
KyAgICAgICAgZm9udDogMTJweC8xIEFoZW0sIHNhbnMtc2VyaWY7CisgICAgICAgIGNvbG9yOiBn
cmVlbjsKKyAgICAgICAgd2lkdGg6IDI0cHg7CisgICAgICAgIGhlaWdodDogMjRweDsKKyAgICAg
ICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtH
Z29BQUFBTlNVaEVVZ0FBQUNBQUFBQWdDQVlBQUFCemVucjBBQUFBUkVsRVFWUllDZTNYc1EwQUlB
Z0VRSEgvblY4bjBBcHRqdENSRUhJMFVCbGpaMk1rZGVvK1Q4VVhOUU1RSUVDQUFBRUNCQWdRSUZC
SjcxdHdPKzJ0Z0FDQjd3SUxvSThIT2FPbXpGc0FBQUFBU1VWT1JLNUNZSUk9Iik7CisgICAgICAg
IGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CisgICAgfQorPC9zdHlsZT4KKzwvaGVhZD4K
Kzxib2R5PgorICA8cCBpZD0iaW5mb3JtYXRpdmUtdGV4dCI+CisgICAgICBUaGlzIHRlc3QgcmVx
dWlyZXMgdGhlIEFoZW0gZm9udC4gSXQgdXNlcyBhIDI0eDI0IHNxdWFyZSBQTkcgaW1hZ2Ugd2hl
cmUgYWxsIHBpeGVscyBhcmUgcmVkLAorICAgICAgdG8gZGVmaW5lIGEgc2hhcGUtaW5zaWRlLiBU
aGUgY29udGVudCBzaG91bGQganVzdCBjb3ZlciB0aGUgc2hhcGUgd2l0aCBzb2xpZCBncmVlbi48
L3A+CisgIDxkaXYgaWQ9ImltYWdlLXNoYXBlIj5YWDxici8+WFg8L2Rpdj4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2hhcGVzL3NoYXBlLWluc2lkZS9z
aGFwZS1pbnNpZGUtaW1hZ2UtMDAyLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3NoYXBlcy9zaGFw
ZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAwMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjA3OTg0ZTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L3NoYXBlcy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAwMi5odG1sCkBAIC0w
LDAgKzEsMjQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KKyAg
ICAjaW1hZ2Utc2hhcGUgeworICAgICAgICBmb250OiAxMnB4LzEgQWhlbSwgc2Fucy1zZXJpZjsK
KyAgICAgICAgY29sb3I6IGdyZWVuOworICAgICAgICB3aWR0aDogMjRweDsKKyAgICAgICAgaGVp
Z2h0OiAyNHB4OworICAgICAgICAtd2Via2l0LXNoYXBlLWluc2lkZTogdXJsKCJkYXRhOmltYWdl
L3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWdDQVlBQUFCemVucjBB
QUFBUkVsRVFWUllDZTNYc1EwQUlBZ0VRSEgvblY4bjBBcHRqdENSRUhJMFVCbGpaMk1rZGVvK1Q4
VVhOUU1RSUVDQUFBRUNCQWdRSUZCSjcxdHdPKzJ0Z0FDQjd3SUxvSThIT2FPbXpGc0FBQUFBU1VW
T1JLNUNZSUk9Iik7CisgICAgICAgIC13ZWJraXQtc2hhcGUtaW1hZ2UtdGhyZXNob2xkOiAwOwor
ICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJP
UncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZ0NBWUFBQUJ6ZW5yMEFBQUFSRWxFUVZSWUNlM1hz
UTBBSUFnRVFISC9uVjhuMEFwdGp0Q1JFSEkwVUJsaloyTWtkZW8rVDhVWE5RTVFJRUNBQUFFQ0JB
Z1FJRkJKNzF0d08rMnRnQUNCN3dJTG9JOEhPYU9tekZzQUFBQUFTVVZPUks1Q1lJST0iKTsKKyAg
ICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKKyAgICB9Cis8L3N0eWxlPgorPC9o
ZWFkPgorPGJvZHk+CisgIDxwIGlkPSJpbmZvcm1hdGl2ZS10ZXh0Ij4KKyAgICAgIFRoaXMgdGVz
dCByZXF1aXJlcyB0aGUgQWhlbSBmb250LiBJdCB1c2VzIGEgMjR4MjQgc3F1YXJlIFBORyBpbWFn
ZSB3aGVyZSBhbGwgcGl4ZWxzIGFyZSByZWQsCisgICAgICB0byBkZWZpbmUgYSBzaGFwZS1pbnNp
ZGUuIFRoZSBjb250ZW50IHNob3VsZCBqdXN0IGNvdmVyIHRoZSBzaGFwZSB3aXRoIHNvbGlkIGdy
ZWVuLjwvcD4KKworICA8ZGl2IGlkPSJpbWFnZS1zaGFwZSI+WFggWFg8L2Rpdj4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOWMyNmY5OS4uMDU0OGE1NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQKQEAgLTIyMjEsNiArMjIyMSw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMK
ICAgICByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFVuZGVyT3Zlci5jcHAKIAogICAgIHJl
bmRlcmluZy9zaGFwZXMvUG9seWdvblNoYXBlLmNwcAorICAgIHJlbmRlcmluZy9zaGFwZXMvUmFz
dGVyU2hhcGUuY3BwCiAgICAgcmVuZGVyaW5nL3NoYXBlcy9SZWN0YW5nbGVTaGFwZS5jcHAKICAg
ICByZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcAogICAgIHJlbmRlcmluZy9zaGFwZXMvU2hhcGVJ
bmZvLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IDgxNTM5ODguLmJhYjFmMGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1OCBAQAorMjAxMy0wNi0xMCAgSGFucyBNdWxsZXIgIDxobXVsbGVyQGFkb2JlLmNvbT4K
KworICAgICAgICBbQ1NTIEV4Y2x1c2lvbnNdIE1pbmltYWwgc3VwcG9ydCBmb3IgdXNpbmcgYW4g
aW1hZ2UgdG8gZGVmaW5lIGEgc2hhcGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTExNjY0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoaXMgaXMgYSBmaXJzdCBzbWFsbCBzdGVwIHRvd2FyZHMgc3VwcG9y
dGluZyBDU1Mgc2hhcGVzIGRlZmluZWQgYnkgYW4KKyAgICAgICAgaW1hZ2UgVVJMIGFuZCBhIGFs
cGhhIGNoYW5uZWwgdGhyZXNob2xkLiBUbyBrZWVwIHRoZSBwYXRjaCBhcyBzbWFsbCBhcworICAg
ICAgICBwb3NzaWJsZSwgdGhlcmUgYXJlIG1hbnkgbGltaXRhdGlvbnMgYW5kIHJlbWFpbmluZyB3
b3JrIGl0ZW1zLiAgU2VlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMTYzNDggZm9yIHRoZSBjdXJyZW50IGxpc3QuCisKKyAgICAgICAgVGVzdDogZmFz
dC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtaW1hZ2UtMDAxLmh0bWwKKyAg
ICAgICAgVGVzdDogZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtaW1h
Z2UtMDAyLmh0bWwKKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1h
a2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3Jl
LnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmltYWdlQ2hhbmdlZCk6IFdoZW4gdGhlIGltYWdl
IGhhcyBmaW5pc2hlZCBsb2FkaW5nLCByZXF1ZXN0IGEgbGF5b3V0LgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJCbG9jay5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpzZXRTdHlsZSk6IEFkZCBub3RpZnkg
Y2xpZW50cyBmb3Igc2hhcGUgaW1hZ2VzLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0
Ojp1cGRhdGVTaGFwZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OnJlbW92ZVNoYXBlSW1hZ2VD
bGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjphcmVuYURlbGV0ZSk6IFJl
bW92ZSBub3RpZnkgY2xpZW50cyBmb3Igc2hhcGUgaW1hZ2VzLgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBl
LmNwcDogQWRkZWQuIEEgU2hhcGUgZGVmaW5lZCBieSB0aHJlc2hvbGRpbmcgYW4gaW1hZ2UncyBh
bHBoYSBjaGFubmVsLgorICAgICAgICAoV2ViQ29yZTo6UmFzdGVyU2hhcGVJbnRlcnZhbHM6OmJv
dW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpSYXN0ZXJTaGFwZUludGVydmFsczo6YWRkSW50ZXJ2
YWwpOiBBZGQgYSBzaW5nbGUgcnVuIHRvIHRoZSBzaGFwZS4KKyAgICAgICAgKFdlYkNvcmU6OmFs
aWduZWRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJhc3RlclNoYXBlSW50ZXJ2YWxzOjpnZXRJ
bnRlcnZhbHMpOiBSZXR1cm4gdGhlIHNoYXBlJ3MgcnVucyB0aGF0IGZhbGwgd2l0aGluIGEgaG9y
aXpvbmFsIGJveC4KKyAgICAgICAgKFdlYkNvcmU6OlJhc3RlclNoYXBlOjptYXJnaW5JbnRlcnZh
bHMpOiBJbnRlcm5hbCByZXByZXNlbnRhdGlvbiBvZiB0aGUgc2hhcGUgd2l0aCBzaGFwZS1tYXJn
aW4gZmFjdG9yZWQgaW4uICBDdXJyZW50bHkgb25seSBhIHN0dWIuCisgICAgICAgIChXZWJDb3Jl
OjpSYXN0ZXJTaGFwZTo6cGFkZGluZ0ludGVydmFscyk6IEludGVybmFsIHJlcHJlc2VudGF0aW9u
IG9mIHRoZSBzaGFwZSB3aXRoIHNoYXBlLXBhZGRpbmcgZmFjdG9yZWQgaW4uICBDdXJyZW50bHkg
b25seSBhIHN0dWIuCisgICAgICAgIChXZWJDb3JlOjpSYXN0ZXJTaGFwZTo6Z2V0RXhjbHVkZWRJ
bnRlcnZhbHMpOgorICAgICAgICAoV2ViQ29yZTo6UmFzdGVyU2hhcGU6OmdldEluY2x1ZGVkSW50
ZXJ2YWxzKToKKyAgICAgICAgKFdlYkNvcmU6OlJhc3RlclNoYXBlOjpmaXJzdEluY2x1ZGVkSW50
ZXJ2YWxMb2dpY2FsVG9wKToKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpSYXN0ZXJTaGFwZUludGVydmFsczo6UmFzdGVyU2hhcGVJ
bnRlcnZhbHMpOiBJbnRlcm5hbCBydW4gbGVuZ3RoIGVuY29kZWQgcmVwcmVzZW50YXRpb24gb2Yg
YSBSYXN0ZXJTaGFwZS4KKyAgICAgICAgKFdlYkNvcmU6OlJhc3RlclNoYXBlSW50ZXJ2YWxzOjpp
c0VtcHR5KToKKyAgICAgICAgKFdlYkNvcmU6OlJhc3RlclNoYXBlOjpSYXN0ZXJTaGFwZSk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
aGFwZTo6Y3JlYXRlU2hhcGUpOiBTdXBwb3J0IGZvciBjcmVhdGluZyBhIFNoYXBlIGJhc2VkIG9u
IGEgUmFzdGVyU2hhcGVJbnRlcnZhbHMgb2JqZWN0LgorICAgICAgICAqIHJlbmRlcmluZy9zaGFw
ZXMvU2hhcGUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW5mby5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjo6OmNvbXB1dGVkU2hhcGUpOiBBZGRlZCBzdXBwb3J0IGZvciB0aGUg
SW1hZ2UgU2hhcGVWYWx1ZSB0eXBlLgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvU2hhcGVJ
bnNpZGVJbmZvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXBlSW5zaWRlSW5mbzo6aXNFbmFi
bGVkRm9yKTogQWRkZWQgc3VwcG9ydCBmb3IgdGhlIEltYWdlIFNoYXBlVmFsdWUgdHlwZS4KKyAg
ICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcGVPdXRzaWRlSW5mbzo6aXNFbmFibGVkRm9yKTogQWRkZWQgc3VwcG9ydCBm
b3IgdGhlIEltYWdlIFNoYXBlVmFsdWUgdHlwZS4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
U2hhcGVWYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGVWYWx1ZTo6aXNJbWFnZVZhbGlk
KTogVHJ1ZSBpZiB0aGUgc2hhcGUncyBpbWFnZSBpcyByZWFkeSB0byBiZSBiZSBwcm9jZXNzZWQu
CisKIDIwMTMtMDgtMDcgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAg
ICAgIDIuNSUgcmVncmVzc2lvbiBvbiBwYWdlIGN5Y2xlciBtb3oKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCmluZGV4IDA0ZDRkZjEuLjQyNWQ3NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQpAQCAtNDU5NSw2ICs0NTk1LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFVuZGVyT3Zlci5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1BvbHlnb25TaGFwZS5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUG9seWdvblNoYXBlLmggXAorCVNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmggXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zaGFwZXMvUmVjdGFuZ2xlU2hhcGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c2hhcGVzL1JlY3RhbmdsZVNoYXBlLmggXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFw
ZXMvU2hhcGUuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9T
b3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IGQ5NTYyMTUuLjRlMDY1MDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0
LnByaQpAQCAtMTIzMyw2ICsxMjMzLDcgQEAgU09VUkNFUyArPSBcCiAgICAgcmVuZGVyaW5nL1Jv
b3RJbmxpbmVCb3guY3BwIFwKICAgICByZW5kZXJpbmcvU2Nyb2xsQmVoYXZpb3IuY3BwIFwKICAg
ICByZW5kZXJpbmcvc2hhcGVzL1BvbHlnb25TaGFwZS5jcHAgXAorICAgIHJlbmRlcmluZy9zaGFw
ZXMvUmFzdGVyU2hhcGUuY3BwIFwKICAgICByZW5kZXJpbmcvc2hhcGVzL1JlY3RhbmdsZVNoYXBl
LmNwcCBcCiAgICAgcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAgXAogICAgIHJlbmRlcmluZy9z
aGFwZXMvU2hhcGVJbmZvLmNwcCBcCkBAIC0yNDkxLDYgKzI0OTIsNyBAQCBIRUFERVJTICs9IFwK
ICAgICByZW5kZXJpbmcvUm9vdElubGluZUJveC5oIFwKICAgICByZW5kZXJpbmcvU2Nyb2xsQmVo
YXZpb3IuaCBcCiAgICAgcmVuZGVyaW5nL3NoYXBlcy9Qb2x5Z29uU2hhcGUuaCBcCisgICAgcmVu
ZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5oIFwKICAgICByZW5kZXJpbmcvc2hhcGVzL1JlY3Rh
bmdsZVNoYXBlLmggXAogICAgIHJlbmRlcmluZy9zaGFwZXMvU2hhcGUuaCBcCiAgICAgcmVuZGVy
aW5nL3NoYXBlcy9TaGFwZUluZm8uaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hw
cm9qL1dlYkNvcmUudmN4cHJvagppbmRleCBlMmFhY2FlLi5mMzc4YmUzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKQEAgLTEwOTcyLDYgKzEw
OTcyLDcgQEAKICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9t
QnVpbGQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxyZW5k
ZXJpbmdcc2hhcGVzXFBvbHlnb25TaGFwZS5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxyZW5kZXJpbmdcc2hhcGVzXFJhc3RlclNoYXBlLmNwcCIgLz4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xzaGFwZXNcUmVjdGFuZ2xlU2hhcGUuY3BwIiAvPgogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXHNoYXBlc1xTaGFwZS5jcHAiIC8+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcc2hhcGVzXFNoYXBlSW5zaWRlSW5m
by5jcHAiIC8+CkBAIC0xOTk3NSw2ICsxOTk3Niw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxyZW5kZXJpbmdcUmVuZGVyU2xpZGVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxyZW5kZXJpbmdcUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xzaGFwZXNcUG9seWdvblNoYXBlLmgiIC8+CisgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcc2hhcGVzXFJhc3RlclNoYXBlLmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcc2hhcGVzXFJlY3RhbmdsZVNo
YXBlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcc2hhcGVzXFNo
YXBlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcc2hhcGVzXFNo
YXBlSW5zaWRlSW5mby5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDRiYWNhMGQuLmJmMWIzMTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE4MjcsNiAr
MTgyNyw4IEBACiAJCTZFNjdEMkE2MTI4MEU4QTQwMDg3NThGNyAvKiBFeHRlbnNpb25zM0RPcGVu
R0wuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU2
N0QyQTQxMjgwRThBNDAwODc1OEY3IC8qIEV4dGVuc2lvbnMzRE9wZW5HTC5jcHAgKi87IH07CiAJ
CTZFNjdEMkE3MTI4MEU4QTQwMDg3NThGNyAvKiBFeHRlbnNpb25zM0RPcGVuR0wuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNjdEMkE1MTI4MEU4QTQw
MDg3NThGNyAvKiBFeHRlbnNpb25zM0RPcGVuR0wuaCAqLzsgfTsKIAkJNkU2N0QyQTkxMjgwRThC
RDAwODc1OEY3IC8qIEV4dGVuc2lvbnMzRC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNkU2N0QyQTgxMjgwRThCRDAwODc1OEY3IC8qIEV4dGVuc2lvbnMz
RC5oICovOyB9OworCQk2RTg0RTlFMDE3NjY4QkVFMDA4MTVCNjggLyogUmFzdGVyU2hhcGUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU4NEU5REUx
NzY2OEJBRDAwODE1QjY4IC8qIFJhc3RlclNoYXBlLmNwcCAqLzsgfTsKKwkJNkU4NEU5RTExNzY2
OEJGMTAwODE1QjY4IC8qIFJhc3RlclNoYXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA2RTg0RTlERjE3NjY4QkFEMDA4MTVCNjggLyogUmFzdGVyU2hh
cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk2
RUJDNUVBRjEzOEI1MEYyMDBBMENGOEEgLyogSlNGbG9hdDY0QXJyYXkuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkVCQzVFQUQxMzhCNTBGMjAwQTBD
RjhBIC8qIEpTRmxvYXQ2NEFycmF5LmNwcCAqLzsgfTsKIAkJNkVCQzVFQjAxMzhCNTBGMjAwQTBD
RjhBIC8qIEpTRmxvYXQ2NEFycmF5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA2RUJDNUVBRTEzOEI1MEYyMDBBMENGOEEgLyogSlNGbG9hdDY0QXJyYXku
aCAqLzsgfTsKIAkJNkVCRjBFNDgxMkE4OTI2MTAwREIxNzA5IC8qIE9FU1RleHR1cmVGbG9hdC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RUJGMEU0
NTEyQTg5MjYxMDBEQjE3MDkgLyogT0VTVGV4dHVyZUZsb2F0LmNwcCAqLzsgfTsKQEAgLTgyMzIs
NiArODIzNCw4IEBACiAJCTZFNjdEMkE0MTI4MEU4QTQwMDg3NThGNyAvKiBFeHRlbnNpb25zM0RP
cGVuR0wuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXh0ZW5zaW9u
czNET3BlbkdMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkU2N0QyQTUxMjgw
RThBNDAwODc1OEY3IC8qIEV4dGVuc2lvbnMzRE9wZW5HTC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBFeHRlbnNpb25zM0RPcGVuR0wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNkU2N0QyQTgxMjgwRThCRDAwODc1OEY3IC8qIEV4dGVuc2lvbnMzRC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeHRlbnNpb25zM0QuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNkU4NEU5REUxNzY2OEJBRDAwODE1QjY4IC8qIFJhc3RlclNoYXBl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJhc3RlclNoYXBlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkU4NEU5REYxNzY2OEJBRDAwODE1QjY4
IC8qIFJhc3RlclNoYXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJhc3Rl
clNoYXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFQkM1RDgwMTM4QjRDNEUw
MEEwQ0Y4QSAvKiBGbG9hdDY0QXJyYXkuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IEZsb2F0
NjRBcnJheS5pZGw7IHBhdGggPSBjYW52YXMvRmxvYXQ2NEFycmF5LmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNkVCQzVFQUQxMzhCNTBGMjAwQTBDRjhBIC8qIEpTRmxvYXQ2NEFy
cmF5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRmxvYXQ2NEFy
cmF5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkVCQzVFQUUxMzhCNTBGMjAw
QTBDRjhBIC8qIEpTRmxvYXQ2NEFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTRmxvYXQ2NEFycmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDU5
MSw2ICsyMDU5NSw4IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQlGRDA4QTg3QTE3NUQzOTI2MDAy
Q0QzNjAgLyogUG9seWdvblNoYXBlLmNwcCAqLywKIAkJCQlGRDA4QTg3QjE3NUQzOTI2MDAyQ0Qz
NjAgLyogUG9seWdvblNoYXBlLmggKi8sCisJCQkJNkU4NEU5REUxNzY2OEJBRDAwODE1QjY4IC8q
IFJhc3RlclNoYXBlLmNwcCAqLywKKwkJCQk2RTg0RTlERjE3NjY4QkFEMDA4MTVCNjggLyogUmFz
dGVyU2hhcGUuaCAqLywKIAkJCQlGRDA4QTg3QzE3NUQzOTI2MDAyQ0QzNjAgLyogUmVjdGFuZ2xl
U2hhcGUuY3BwICovLAogCQkJCUZEMDhBODdEMTc1RDM5MjYwMDJDRDM2MCAvKiBSZWN0YW5nbGVT
aGFwZS5oICovLAogCQkJCUZEMDhBODdFMTc1RDM5MjYwMDJDRDM2MCAvKiBTaGFwZS5jcHAgKi8s
CkBAIC0yMDkxNSw2ICsyMDkyMSw3IEBACiAJCQlmaWxlcyA9ICgKIAkJCQlGRTExNUZBQjE2Nzk4
OENEMDAyNDkxMzQgLyogQWJzdHJhY3REYXRhYmFzZVNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRkU0QUFERUUxNkQyQzM3NDAwMDI2RkZDIC8qIEFic3RyYWN0U1FMU3RhdGVtZW50LmggaW4g
SGVhZGVycyAqLywKKwkJCQk2RTg0RTlFMTE3NjY4QkYxMDA4MTVCNjggLyogUmFzdGVyU2hhcGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCUZFNEFBREVGMTZEMkMzNzQwMDAyNkZGQyAvKiBBYnN0cmFj
dFNRTFN0YXRlbWVudEJhY2tlbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRTFCMUQxMEZGNTk4
NjkwMDU3NkIzQiAvKiBBYnN0cmFjdFdvcmtlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjlBODEy
MkUwRkJCOUMxRDAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuaCBpbiBIZWFk
ZXJzICovLApAQCAtMjcwMTksNiArMjcwMjYsNyBAQAogCQkJCUZENTM3MzUyMTM3QjY1MTgwMDAw
OERDRSAvKiBaZXJvUG9sZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDE3NjJERjE3NjY4NkQ5
MDBEODM2QTggLyogVXBTYW1wbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEMTc2MkUzMTc2
Njg2RUEwMEQ4MzZBOCAvKiBEb3duU2FtcGxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk2RTg0
RTlFMDE3NjY4QkVFMDA4MTVCNjggLyogUmFzdGVyU2hhcGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCBlNmE3MmRlLi40YTE3
MzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTE0MzYs
NiArMTQzNiwyMSBAQCB2b2lkIFJlbmRlckJsb2NrOjpsYXlvdXQoKQogfQogCiAjaWYgRU5BQkxF
KENTU19TSEFQRVMpCit2b2lkIFJlbmRlckJsb2NrOjppbWFnZUNoYW5nZWQoV3JhcHBlZEltYWdl
UHRyIGltYWdlLCBjb25zdCBJbnRSZWN0KikKK3sKKyAgICBSZW5kZXJCb3g6OmltYWdlQ2hhbmdl
ZChpbWFnZSk7CisKKyAgICBpZiAoIXBhcmVudCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBT
aGFwZVZhbHVlKiBzaGFwZVZhbHVlID0gc3R5bGUoKS0+c2hhcGVJbnNpZGUoKTsKKyAgICBpZiAo
c2hhcGVWYWx1ZSAmJiBzaGFwZVZhbHVlLT5pbWFnZSgpICYmIHNoYXBlVmFsdWUtPmltYWdlKCkt
PmRhdGEoKSA9PSBpbWFnZSkgeworICAgICAgICBTaGFwZUluc2lkZUluZm8qIHNoYXBlSW5zaWRl
SW5mbyA9IGVuc3VyZVNoYXBlSW5zaWRlSW5mbygpOworICAgICAgICBzaGFwZUluc2lkZUluZm8t
PmRpcnR5U2hhcGVTaXplKCk7CisgICAgICAgIG1hcmtTaGFwZUluc2lkZURlc2NlbmRhbnRzRm9y
TGF5b3V0KCk7CisgICAgfQorfQorCiB2b2lkIFJlbmRlckJsb2NrOjp1cGRhdGVTaGFwZUluc2lk
ZUluZm9BZnRlclN0eWxlQ2hhbmdlKGNvbnN0IFNoYXBlVmFsdWUqIHNoYXBlSW5zaWRlLCBjb25z
dCBTaGFwZVZhbHVlKiBvbGRTaGFwZUluc2lkZSkKIHsKICAgICAvLyBGSVhNRTogQSBmdXR1cmUg
b3B0aW1pemF0aW9uIHdvdWxkIGRvIGEgZGVlcCBjb21wYXJpc29uIGZvciBlcXVhbGl0eS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKaW5kZXggYmE5M2JiYi4uMmJjMTlmNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKQEAgLTQ3MCw2ICs0NzAsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBtYXJrU2hhcGVJbnNpZGVEZXNjZW5kYW50c0ZvckxheW91dCgp
OwogICAgIFNoYXBlSW5zaWRlSW5mbyogbGF5b3V0U2hhcGVJbnNpZGVJbmZvKCkgY29uc3Q7CiAg
ICAgYm9vbCBhbGxvd3NTaGFwZUluc2lkZUluZm9TaGFyaW5nKCkgY29uc3QgeyByZXR1cm4gIWlz
SW5saW5lKCkgJiYgIWlzRmxvYXRpbmcoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBpbWFnZUNoYW5n
ZWQoV3JhcHBlZEltYWdlUHRyLCBjb25zdCBJbnRSZWN0KiA9IDApIE9WRVJSSURFOwogI2VuZGlm
CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAK
aW5kZXggYjkzNzY0OC4uN2U1MjBiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5jcHAKQEAgLTE4NTAsNiArMTg1MCwxMCBAQCB2b2lkIFJlbmRlck9iamVjdDo6c2V0
U3R5bGUoUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gc3R5bGUpCiAgICAgdXBkYXRlSW1hZ2Uob2xk
U3R5bGUgPyBvbGRTdHlsZS0+Ym9yZGVySW1hZ2UoKS5pbWFnZSgpIDogMCwgbV9zdHlsZSA/IG1f
c3R5bGUtPmJvcmRlckltYWdlKCkuaW1hZ2UoKSA6IDApOwogICAgIHVwZGF0ZUltYWdlKG9sZFN0
eWxlID8gb2xkU3R5bGUtPm1hc2tCb3hJbWFnZSgpLmltYWdlKCkgOiAwLCBtX3N0eWxlID8gbV9z
dHlsZS0+bWFza0JveEltYWdlKCkuaW1hZ2UoKSA6IDApOwogCisjaWYgRU5BQkxFKENTU19TSEFQ
RVMpCisgICAgdXBkYXRlU2hhcGVJbWFnZShvbGRTdHlsZSA/IG9sZFN0eWxlLT5zaGFwZUluc2lk
ZSgpIDogMCwgbV9zdHlsZSA/IG1fc3R5bGUtPnNoYXBlSW5zaWRlKCkgOiAwKTsKKyNlbmRpZgor
CiAgICAgLy8gV2UgbmVlZCB0byBlbnN1cmUgdGhhdCB2aWV3LT5tYXhpbWFsT3V0bGluZVNpemUo
KSBpcyB2YWxpZCBmb3IgYW55IHJlcGFpbnRzIHRoYXQgaGFwcGVuCiAgICAgLy8gZHVyaW5nIHN0
eWxlRGlkQ2hhbmdlIChpdCdzIHVzZWQgYnkgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQo
KSkuCiAgICAgaWYgKG1fc3R5bGUtPm91dGxpbmVXaWR0aCgpID4gMCAmJiBtX3N0eWxlLT5vdXRs
aW5lU2l6ZSgpID4gbWF4aW1hbE91dGxpbmVTaXplKFBhaW50UGhhc2VPdXRsaW5lKSkKQEAgLTIx
MDIsNiArMjEwNiwxNCBAQCB2b2lkIFJlbmRlck9iamVjdDo6dXBkYXRlSW1hZ2UoU3R5bGVJbWFn
ZSogb2xkSW1hZ2UsIFN0eWxlSW1hZ2UqIG5ld0ltYWdlKQogICAgIH0KIH0KIAorI2lmIEVOQUJM
RShDU1NfU0hBUEVTKQordm9pZCBSZW5kZXJPYmplY3Q6OnVwZGF0ZVNoYXBlSW1hZ2UoY29uc3Qg
U2hhcGVWYWx1ZSogb2xkU2hhcGVWYWx1ZSwgY29uc3QgU2hhcGVWYWx1ZSogbmV3U2hhcGVWYWx1
ZSkKK3sKKyAgICBpZiAob2xkU2hhcGVWYWx1ZSB8fCBuZXdTaGFwZVZhbHVlKQorICAgICAgICB1
cGRhdGVJbWFnZShvbGRTaGFwZVZhbHVlID8gb2xkU2hhcGVWYWx1ZS0+aW1hZ2UoKSA6IDAsIG5l
d1NoYXBlVmFsdWUgPyBuZXdTaGFwZVZhbHVlLT5pbWFnZSgpIDogMCk7Cit9CisjZW5kaWYKKwog
TGF5b3V0UmVjdCBSZW5kZXJPYmplY3Q6OnZpZXdSZWN0KCkgY29uc3QKIHsKICAgICByZXR1cm4g
dmlldygpLT52aWV3UmVjdCgpOwpAQCAtMjYyMCw2ICsyNjMyLDE2IEBAIHZvaWQgUmVuZGVyT2Jq
ZWN0OjpkZXN0cm95KCkKICAgICBhcmVuYURlbGV0ZShyZW5kZXJBcmVuYSgpLCB0aGlzKTsKIH0K
IAorI2lmIEVOQUJMRShDU1NfU0hBUEVTKQordm9pZCBSZW5kZXJPYmplY3Q6OnJlbW92ZVNoYXBl
SW1hZ2VDbGllbnQoU2hhcGVWYWx1ZSogc2hhcGVWYWx1ZSkKK3sKKyAgICBpZiAoIXNoYXBlVmFs
dWUpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoU3R5bGVJbWFnZSogc2hhcGVJbWFnZSA9IHNo
YXBlVmFsdWUtPmltYWdlKCkpCisgICAgICAgIHNoYXBlSW1hZ2UtPnJlbW92ZUNsaWVudCh0aGlz
KTsKK30KKyNlbmRpZgorCiB2b2lkIFJlbmRlck9iamVjdDo6YXJlbmFEZWxldGUoUmVuZGVyQXJl
bmEqIGFyZW5hLCB2b2lkKiBiYXNlKQogewogICAgIGlmIChtX3N0eWxlKSB7CkBAIC0yNjM4LDYg
KzI2NjAsMTAgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OmFyZW5hRGVsZXRlKFJlbmRlckFyZW5hKiBh
cmVuYSwgdm9pZCogYmFzZSkKIAogICAgICAgICBpZiAoU3R5bGVJbWFnZSogbWFza0JveEltYWdl
ID0gbV9zdHlsZS0+bWFza0JveEltYWdlKCkuaW1hZ2UoKSkKICAgICAgICAgICAgIG1hc2tCb3hJ
bWFnZS0+cmVtb3ZlQ2xpZW50KHRoaXMpOworCisjaWYgRU5BQkxFKENTU19TSEFQRVMpCisgICAg
ICAgIHJlbW92ZVNoYXBlSW1hZ2VDbGllbnQobV9zdHlsZS0+c2hhcGVJbnNpZGUoKSk7CisjZW5k
aWYKICAgICB9CiAKICNpZm5kZWYgTkRFQlVHCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmgKaW5kZXggM2ExMzUwYS4uZWVkMDNkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuaApAQCAtNjk0LDYgKzY5NCw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
dXBkYXRlRmlsbEltYWdlcyhjb25zdCBGaWxsTGF5ZXIqLCBjb25zdCBGaWxsTGF5ZXIqKTsKICAg
ICB2b2lkIHVwZGF0ZUltYWdlKFN0eWxlSW1hZ2UqLCBTdHlsZUltYWdlKik7CisjaWYgRU5BQkxF
KENTU19TSEFQRVMpCisgICAgdm9pZCB1cGRhdGVTaGFwZUltYWdlKGNvbnN0IFNoYXBlVmFsdWUq
LCBjb25zdCBTaGFwZVZhbHVlKik7CisjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBwYWludChQ
YWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOwogCkBAIC0xMDI2LDYgKzEwMjksMTAgQEAg
cHJpdmF0ZToKIAogICAgIENvbG9yIHNlbGVjdGlvbkNvbG9yKGludCBjb2xvclByb3BlcnR5KSBj
b25zdDsKIAorI2lmIEVOQUJMRShDU1NfU0hBUEVTKQorICAgIHZvaWQgcmVtb3ZlU2hhcGVJbWFn
ZUNsaWVudChTaGFwZVZhbHVlKik7CisjZW5kaWYKKwogI2lmbmRlZiBOREVCVUcKICAgICB2b2lk
IGNoZWNrQmxvY2tQb3NpdGlvbmVkT2JqZWN0c05lZWRMYXlvdXQoKTsKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xY2UyNjBlCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5jcHAKQEAgLTAsMCArMSwx
NTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0
ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzCisgKiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUworICogRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKyAqIENP
UFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwK
KyAqIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwK
KyAqIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQKKyAqIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmFzdGVyU2hhcGUu
aCIKKworI2luY2x1ZGUgIlNoYXBlSW50ZXJ2YWwuaCIKKyNpbmNsdWRlIDx3dGYvTWF0aEV4dHJh
cy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0ludFJlY3QgUmFzdGVyU2hhcGVJbnRlcnZh
bHM6OmJvdW5kcygpIGNvbnN0Cit7CisgICAgaWYgKCFtX2JvdW5kcykKKyAgICAgICAgbV9ib3Vu
ZHMgPSBhZG9wdFB0cihuZXcgSW50UmVjdChtX3JlZ2lvbi5ib3VuZHMoKSkpOworICAgIHJldHVy
biAqbV9ib3VuZHM7Cit9CisKK3ZvaWQgUmFzdGVyU2hhcGVJbnRlcnZhbHM6OmFkZEludGVydmFs
KGludCB5LCBpbnQgeDEsIGludCB4MikKK3sKKyAgICBtX3JlZ2lvbi51bml0ZShSZWdpb24oSW50
UmVjdCh4MSwgeSwgeDIgLSB4MSwgMSkpKTsKKyAgICBtX2JvdW5kcy5jbGVhcigpOworfQorCitz
dGF0aWMgaW5saW5lIEludFJlY3QgYWxpZ25lZFJlY3QoSW50UmVjdCByLCBpbnQgeTEsIGludCB5
MikKK3sKKyAgICByZXR1cm4gSW50UmVjdChyLngoKSwgeTEsIHIud2lkdGgoKSwgeTIgLSB5MSk7
Cit9CisKK3ZvaWQgUmFzdGVyU2hhcGVJbnRlcnZhbHM6OmdldEluY2x1ZGVkSW50ZXJ2YWxzKGlu
dCB5MSwgaW50IHkyLCBTZWdtZW50TGlzdCYgcmVzdWx0KSBjb25zdAoreworICAgIEFTU0VSVCh5
MiA+PSB5MSk7CisKKyAgICBJbnRSZWN0IGxpbmVSZWN0KGJvdW5kcygpLngoKSwgeTEsIGJvdW5k
cygpLndpZHRoKCksIHkyIC0geTEpOworICAgIFJlZ2lvbiBsaW5lUmVnaW9uKGxpbmVSZWN0KTsK
KyAgICBsaW5lUmVnaW9uLmludGVyc2VjdChtX3JlZ2lvbik7CisgICAgaWYgKGxpbmVSZWdpb24u
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBWZWN0b3I8SW50UmVjdD4gbGluZVJl
Y3RzID0gbGluZVJlZ2lvbi5yZWN0cygpOworICAgIEFTU0VSVChsaW5lUmVjdHMuc2l6ZSgpID4g
MCk7CisKKyAgICBSZWdpb24gc2VnbWVudHNSZWdpb24obGluZVJlY3QpOworICAgIFJlZ2lvbiBp
bnRlcnZhbHNSZWdpb247CisKKyAgICAvLyBUaGUgbG9vcCBiZWxvdyB1c2VzIFJlZ2lvbnMgdG8g
Y29tcHV0ZSB0aGUgaW50ZXJzZWN0aW9uIG9mIHRoZSBob3Jpem9udGFsCisgICAgLy8gc2hhcGUg
aW50ZXJ2YWxzIHRoYXQgZmFsbCB3aXRoaW4gdGhlIGxpbmUncyBib3guCisgICAgaW50IGxpbmVZ
ID0gbGluZVJlY3RzWzBdLnkoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGluZVJl
Y3RzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChsaW5lUmVjdHNbaV0ueSgpICE9IGxpbmVZ
KSB7CisgICAgICAgICAgICBzZWdtZW50c1JlZ2lvbi5pbnRlcnNlY3QoaW50ZXJ2YWxzUmVnaW9u
KTsKKyAgICAgICAgICAgIGludGVydmFsc1JlZ2lvbiA9IFJlZ2lvbigpOworICAgICAgICB9Cisg
ICAgICAgIGludGVydmFsc1JlZ2lvbi51bml0ZShSZWdpb24oYWxpZ25lZFJlY3QobGluZVJlY3Rz
W2ldLCB5MSwgeTIpKSk7CisgICAgICAgIGxpbmVZID0gbGluZVJlY3RzW2ldLnkoKTsKKyAgICB9
CisgICAgaWYgKCFpbnRlcnZhbHNSZWdpb24uaXNFbXB0eSgpKQorICAgICAgICBzZWdtZW50c1Jl
Z2lvbi5pbnRlcnNlY3QoaW50ZXJ2YWxzUmVnaW9uKTsKKworICAgIFZlY3RvcjxJbnRSZWN0PiBz
ZWdtZW50UmVjdHMgPSBzZWdtZW50c1JlZ2lvbi5yZWN0cygpOworICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBzZWdtZW50UmVjdHMuc2l6ZSgpOyArK2kpCisgICAgICAgIHJlc3VsdC5hcHBl
bmQoTGluZVNlZ21lbnQoc2VnbWVudFJlY3RzW2ldLngoKSwgc2VnbWVudFJlY3RzW2ldLm1heFgo
KSkpOworfQorCitjb25zdCBSYXN0ZXJTaGFwZUludGVydmFscyYgUmFzdGVyU2hhcGU6Om1hcmdp
bkludGVydmFscygpIGNvbnN0Cit7CisgICAgQVNTRVJUKHNoYXBlTWFyZ2luKCkgPj0gMCk7Cisg
ICAgaWYgKCFzaGFwZU1hcmdpbigpKQorICAgICAgICByZXR1cm4gKm1faW50ZXJ2YWxzOworCisg
ICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBub24temVybyBtYXJnaW4sIHNlZSBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE2MzQ4LgorICAgIHJldHVybiAqbV9p
bnRlcnZhbHM7Cit9CisKK2NvbnN0IFJhc3RlclNoYXBlSW50ZXJ2YWxzJiBSYXN0ZXJTaGFwZTo6
cGFkZGluZ0ludGVydmFscygpIGNvbnN0Cit7CisgICAgQVNTRVJUKHNoYXBlUGFkZGluZygpID49
IDApOworICAgIGlmICghc2hhcGVQYWRkaW5nKCkpCisgICAgICAgIHJldHVybiAqbV9pbnRlcnZh
bHM7CisKKyAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIG5vbi16ZXJvIHBhZGRpbmcsIHNl
ZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE2MzQ4LgorICAgIHJl
dHVybiAqbV9pbnRlcnZhbHM7Cit9CisKK3ZvaWQgUmFzdGVyU2hhcGU6OmdldEV4Y2x1ZGVkSW50
ZXJ2YWxzKExheW91dFVuaXQsIExheW91dFVuaXQsIFNlZ21lbnRMaXN0JikgY29uc3QKK3sKKyAg
ICAvLyBGSVhNRTogdGhpcyBtZXRob2QgaXMgb25seSBhIHN0dWIsIHNlZSBodHRwczovL2NvZGUu
Z29vZ2xlLmNvbS9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9MjUyNzM3LgorfQorCit2b2lk
IFJhc3RlclNoYXBlOjpnZXRJbmNsdWRlZEludGVydmFscyhMYXlvdXRVbml0IGxvZ2ljYWxUb3As
IExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgU2VnbWVudExpc3QmIHJlc3VsdCkgY29uc3QKK3sK
KyAgICBjb25zdCBSYXN0ZXJTaGFwZUludGVydmFscyYgaW50ZXJ2YWxzID0gcGFkZGluZ0ludGVy
dmFscygpOworICAgIGlmIChpbnRlcnZhbHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBmbG9hdCB5MSA9IGxvZ2ljYWxUb3A7CisgICAgZmxvYXQgeTIgPSBsb2dpY2FsVG9wICsg
bG9naWNhbEhlaWdodDsKKworICAgIGlmICh5MSA8IGludGVydmFscy5ib3VuZHMoKS55KCkgfHwg
eTIgPiBpbnRlcnZhbHMuYm91bmRzKCkubWF4WSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBp
bnRlcnZhbHMuZ2V0SW5jbHVkZWRJbnRlcnZhbHMoeTEsIHkyLCByZXN1bHQpOworfQorCitib29s
IFJhc3RlclNoYXBlOjpmaXJzdEluY2x1ZGVkSW50ZXJ2YWxMb2dpY2FsVG9wKExheW91dFVuaXQg
bWluTG9naWNhbEludGVydmFsVG9wLCBjb25zdCBMYXlvdXRTaXplJiBtaW5Mb2dpY2FsSW50ZXJ2
YWxTaXplLCBMYXlvdXRVbml0JiByZXN1bHQpIGNvbnN0Cit7CisgICAgZmxvYXQgbWluSW50ZXJ2
YWxUb3AgPSBtaW5Mb2dpY2FsSW50ZXJ2YWxUb3A7CisgICAgZmxvYXQgbWluSW50ZXJ2YWxIZWln
aHQgPSBtaW5Mb2dpY2FsSW50ZXJ2YWxTaXplLmhlaWdodCgpOworICAgIGZsb2F0IG1pbkludGVy
dmFsV2lkdGggPSBtaW5Mb2dpY2FsSW50ZXJ2YWxTaXplLndpZHRoKCk7CisKKyAgICBjb25zdCBS
YXN0ZXJTaGFwZUludGVydmFscyYgaW50ZXJ2YWxzID0gcGFkZGluZ0ludGVydmFscygpOworICAg
IGlmIChpbnRlcnZhbHMuaXNFbXB0eSgpIHx8IG1pbkludGVydmFsV2lkdGggPiBpbnRlcnZhbHMu
Ym91bmRzKCkud2lkdGgoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZmxvYXQgbWlu
WSA9IHN0ZDo6bWF4PGZsb2F0PihpbnRlcnZhbHMuYm91bmRzKCkueSgpLCBtaW5JbnRlcnZhbFRv
cCk7CisgICAgZmxvYXQgbWF4WSA9IG1pblkgKyBtaW5JbnRlcnZhbEhlaWdodDsKKworICAgIGlm
IChtYXhZID4gaW50ZXJ2YWxzLmJvdW5kcygpLm1heFkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgLy8gRklYTUU6IENvbXBsZXRlIHRoaXMgbWV0aG9kLCBzZWUgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNjM0OC4KKyAgICByZXN1bHQgPSBtaW5ZOwor
ICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uYTMwNWQ0MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuaApAQCAtMCwwICsxLDgwIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEzIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAq
ICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cworICogICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MKKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisgKiBDT1BZUklHSFQgSE9M
REVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsCisgKiBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCisgKiBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VECisgKiBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBSYXN0ZXJTaGFwZV9oCisjZGVmaW5lIFJhc3RlclNoYXBlX2gKKworI2luY2x1
ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1ZGUgIlJlZ2lvbi5oIgorI2luY2x1ZGUgIlNoYXBlLmgi
CisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUmFzdGVyU2hhcGVJbnRlcnZhbHMgeworcHVi
bGljOgorICAgIFJhc3RlclNoYXBlSW50ZXJ2YWxzKCkgeyB9CisKKyAgICBJbnRSZWN0IGJvdW5k
cygpIGNvbnN0OworICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0ICB7IHJldHVybiBtX3JlZ2lvbi5p
c0VtcHR5KCk7IH0KKyAgICB2b2lkIGFkZEludGVydmFsKGludCB5LCBpbnQgeDEsIGludCB4Mik7
CisgICAgdm9pZCBnZXRJbmNsdWRlZEludGVydmFscyhpbnQgeTEsIGludCB5MiwgU2VnbWVudExp
c3QmKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBSZWdpb24gbV9yZWdpb247CisgICAgbXV0YWJs
ZSBPd25QdHI8SW50UmVjdD4gbV9ib3VuZHM7IC8vIENhY2hlZCB2YWx1ZSBvZiBtX3JlZ2lvbi5i
b3VuZHMoKS4KK307CisKK2NsYXNzIFJhc3RlclNoYXBlIDogcHVibGljIFNoYXBlIHsKKyAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShSYXN0ZXJTaGFwZSk7CitwdWJsaWM6CisgICAgUmFzdGVyU2hh
cGUoUGFzc093blB0cjxSYXN0ZXJTaGFwZUludGVydmFscz4gaW50ZXJ2YWxzKQorICAgICAgICA6
IFNoYXBlKCkKKyAgICAgICAgLCBtX2ludGVydmFscyhpbnRlcnZhbHMpCisgICAgeworICAgIH0K
KworICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBzaGFwZU1hcmdpbkxvZ2ljYWxCb3VuZGluZ0JveCgp
IGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHN0YXRpY19jYXN0PExheW91dFJlY3Q+KG1hcmdpbklu
dGVydmFscygpLmJvdW5kcygpKTsgfQorICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBzaGFwZVBhZGRp
bmdMb2dpY2FsQm91bmRpbmdCb3goKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBzdGF0aWNfY2Fz
dDxMYXlvdXRSZWN0PihwYWRkaW5nSW50ZXJ2YWxzKCkuYm91bmRzKCkpOyB9CisgICAgdmlydHVh
bCBib29sIGlzRW1wdHkoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2ludGVydmFscy0+aXNF
bXB0eSgpOyB9CisgICAgdmlydHVhbCB2b2lkIGdldEV4Y2x1ZGVkSW50ZXJ2YWxzKExheW91dFVu
aXQgbG9naWNhbFRvcCwgTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBTZWdtZW50TGlzdCYpIGNv
bnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBnZXRJbmNsdWRlZEludGVydmFscyhMYXlv
dXRVbml0IGxvZ2ljYWxUb3AsIExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgU2VnbWVudExpc3Qm
KSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgZmlyc3RJbmNsdWRlZEludGVydmFs
TG9naWNhbFRvcChMYXlvdXRVbml0IG1pbkxvZ2ljYWxJbnRlcnZhbFRvcCwgY29uc3QgTGF5b3V0
U2l6ZSYgbWluTG9naWNhbEludGVydmFsU2l6ZSwgTGF5b3V0VW5pdCYpIGNvbnN0IE9WRVJSSURF
OworCitwcml2YXRlOgorICAgIGNvbnN0IFJhc3RlclNoYXBlSW50ZXJ2YWxzJiBtYXJnaW5JbnRl
cnZhbHMoKSBjb25zdDsKKyAgICBjb25zdCBSYXN0ZXJTaGFwZUludGVydmFscyYgcGFkZGluZ0lu
dGVydmFscygpIGNvbnN0OworCisgICAgT3duUHRyPFJhc3RlclNoYXBlSW50ZXJ2YWxzPiBtX2lu
dGVydmFsczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFJhc3Rl
clNoYXBlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hh
cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKaW5kZXgg
ODEwYWM1NS4uZGZjZDFiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3No
YXBlcy9TaGFwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFw
ZS5jcHAKQEAgLTMxLDkgKzMxLDEyIEBACiAjaW5jbHVkZSAiU2hhcGUuaCIKIAogI2luY2x1ZGUg
IkJhc2ljU2hhcGVGdW5jdGlvbnMuaCIKKyNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgogI2luY2x1
ZGUgIkZsb2F0U2l6ZS5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVk
ZSAiTGVuZ3RoRnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiUG9seWdvblNoYXBlLmgiCisjaW5jbHVk
ZSAiUmFzdGVyU2hhcGUuaCIKICNpbmNsdWRlICJSZWN0YW5nbGVTaGFwZS5oIgogI2luY2x1ZGUg
IldpbmRSdWxlLmgiCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KQEAgLTIwMCw0ICsyMDMs
NjYgQEAgUGFzc093blB0cjxTaGFwZT4gU2hhcGU6OmNyZWF0ZVNoYXBlKGNvbnN0IEJhc2ljU2hh
cGUqIGJhc2ljU2hhcGUsIGNvbnN0IExheW91dFMKICAgICByZXR1cm4gc2hhcGUucmVsZWFzZSgp
OwogfQogCisjaWYgVVNFKDNEX0dSQVBISUNTKQorUGFzc093blB0cjxTaGFwZT4gU2hhcGU6OmNy
ZWF0ZVNoYXBlKGNvbnN0IFN0eWxlSW1hZ2UqIHN0eWxlSW1hZ2UsIGZsb2F0IHRocmVzaG9sZCwg
Y29uc3QgTGF5b3V0U2l6ZSYsIFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBMZW5ndGggbWFyZ2lu
LCBMZW5ndGggcGFkZGluZykKK3sKKyAgICAvLyBGSVhNRTogU2hvdWxkIGNsaXAgc2hhcGUgdG8g
bG9naWNhbCBib3gsIHNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTE2MzQ4LgorCisgICAgQVNTRVJUKHN0eWxlSW1hZ2UgJiYgc3R5bGVJbWFnZS0+aXNDYWNoZWRJ
bWFnZSgpICYmIHN0eWxlSW1hZ2UtPmNhY2hlZEltYWdlKCkgJiYgc3R5bGVJbWFnZS0+Y2FjaGVk
SW1hZ2UoKS0+aW1hZ2UoKSk7CisKKyAgICBJbWFnZSogaW1hZ2UgPSBzdHlsZUltYWdlLT5jYWNo
ZWRJbWFnZSgpLT5pbWFnZSgpOworICAgIEdyYXBoaWNzQ29udGV4dDNEOjpJbWFnZUV4dHJhY3Rv
ciBpbWFnZUV4dHJhY3RvcihpbWFnZSwgR3JhcGhpY3NDb250ZXh0M0Q6Okh0bWxEb21Ob25lLCBm
YWxzZSwgdHJ1ZSk7IC8vIEdldCBhIHBvaW50ZXIgdG8gdGhlIHJhdyBwaXhlbCBkYXRhIGZvciBp
bWFnZS4KKyAgICBpbnQgaW1hZ2VXaWR0aCA9IHN0YXRpY19jYXN0PGludD4oaW1hZ2VFeHRyYWN0
b3IuaW1hZ2VXaWR0aCgpKTsKKyAgICBpbnQgaW1hZ2VIZWlnaHQgPSBzdGF0aWNfY2FzdDxpbnQ+
KGltYWdlRXh0cmFjdG9yLmltYWdlSGVpZ2h0KCkpOworCisgICAgVmVjdG9yPHVpbnQ4X3Q+IGFs
cGhhUGl4ZWxzOworICAgIGJvb2wgcGFja0ltYWdlRGF0YU9LID0gR3JhcGhpY3NDb250ZXh0M0Q6
OnBhY2tJbWFnZURhdGEoaW1hZ2UsIGltYWdlRXh0cmFjdG9yLmltYWdlUGl4ZWxEYXRhKCksCisg
ICAgICAgIEdyYXBoaWNzQ29udGV4dDNEOjpBTFBIQSwKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0
M0Q6OlVOU0lHTkVEX0JZVEUsCisgICAgICAgIGZhbHNlLCAvKiBmbGlwWSAqLworICAgICAgICBH
cmFwaGljc0NvbnRleHQzRDo6QWxwaGFEb05vdGhpbmcsCisgICAgICAgIGltYWdlRXh0cmFjdG9y
LmltYWdlU291cmNlRm9ybWF0KCksCisgICAgICAgIGltYWdlV2lkdGgsCisgICAgICAgIGltYWdl
SGVpZ2h0LAorICAgICAgICBpbWFnZUV4dHJhY3Rvci5pbWFnZVNvdXJjZVVucGFja0FsaWdubWVu
dCgpLAorICAgICAgICBhbHBoYVBpeGVscyk7CisKKyAgICBPd25QdHI8UmFzdGVyU2hhcGVJbnRl
cnZhbHM+IGludGVydmFscyA9IGFkb3B0UHRyKG5ldyBSYXN0ZXJTaGFwZUludGVydmFscygpKTsK
KyAgICB1aW50OF90IGFscGhhUGl4ZWxUaHJlc2hvbGQgPSB0aHJlc2hvbGQgKiAyNTU7CisKKyAg
ICBpZiAocGFja0ltYWdlRGF0YU9LKSB7CisgICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oaW1hZ2VXaWR0aCAqIGltYWdlSGVpZ2h0KSA9PSBhbHBoYVBpeGVscy5zaXplKCkpOwor
ICAgICAgICBmb3IgKGludCB5ID0gMDsgeSA8IGltYWdlSGVpZ2h0OyArK3kpIHsKKyAgICAgICAg
ICAgIGludCBzdGFydFggPSAtMTsKKyAgICAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgaW1h
Z2VXaWR0aDsgKyt4KSB7CisgICAgICAgICAgICAgICAgdWludDhfdCBhbHBoYSA9IGFscGhhUGl4
ZWxzW3ggKyB5ICogaW1hZ2VXaWR0aF07CisgICAgICAgICAgICAgICAgaWYgKChzdGFydFggPT0g
LTEpICYmIGFscGhhID4gYWxwaGFQaXhlbFRocmVzaG9sZCkgeworICAgICAgICAgICAgICAgICAg
ICBzdGFydFggPSB4OworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RhcnRYICE9IC0xICYm
IChhbHBoYSA8PSBhbHBoYVBpeGVsVGhyZXNob2xkIHx8IHggPT0gaW1hZ2VXaWR0aCAtIDEpKSB7
CisgICAgICAgICAgICAgICAgICAgIGludGVydmFscy0+YWRkSW50ZXJ2YWwoeSwgc3RhcnRYLCB4
KTsKKyAgICAgICAgICAgICAgICAgICAgc3RhcnRYID0gLTE7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgT3duUHRyPFJhc3RlclNoYXBl
PiByYXN0ZXJTaGFwZSA9IGFkb3B0UHRyKG5ldyBSYXN0ZXJTaGFwZShpbnRlcnZhbHMucmVsZWFz
ZSgpKSk7CisgICAgcmFzdGVyU2hhcGUtPm1fd3JpdGluZ01vZGUgPSB3cml0aW5nTW9kZTsKKyAg
ICByYXN0ZXJTaGFwZS0+bV9tYXJnaW4gPSBmbG9hdFZhbHVlRm9yTGVuZ3RoKG1hcmdpbiwgMCk7
CisgICAgcmFzdGVyU2hhcGUtPm1fcGFkZGluZyA9IGZsb2F0VmFsdWVGb3JMZW5ndGgocGFkZGlu
ZywgMCk7CisKKyAgICByZXR1cm4gcmFzdGVyU2hhcGUucmVsZWFzZSgpOworfQorI2Vsc2UKK1Bh
c3NPd25QdHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVTaGFwZShjb25zdCBTdHlsZUltYWdlKiwgZmxv
YXQsIGNvbnN0IExheW91dFNpemUmLCBXcml0aW5nTW9kZSB3cml0aW5nTW9kZSwgTGVuZ3RoIG1h
cmdpbiwgTGVuZ3RoIHBhZGRpbmcpCit7CisgICAgT3duUHRyPFJhc3RlclNoYXBlPiByYXN0ZXJT
aGFwZSA9IGFkb3B0UHRyKG5ldyBSYXN0ZXJTaGFwZShhZG9wdFB0cihuZXcgUmFzdGVyU2hhcGVJ
bnRlcnZhbHMoKSkpKTsKKyAgICByYXN0ZXJTaGFwZS0+bV93cml0aW5nTW9kZSA9IHdyaXRpbmdN
b2RlOworICAgIHJhc3RlclNoYXBlLT5tX21hcmdpbiA9IGZsb2F0VmFsdWVGb3JMZW5ndGgobWFy
Z2luLCAwKTsKKyAgICByYXN0ZXJTaGFwZS0+bV9wYWRkaW5nID0gZmxvYXRWYWx1ZUZvckxlbmd0
aChwYWRkaW5nLCAwKTsKKworICAgIHJldHVybiByYXN0ZXJTaGFwZS5yZWxlYXNlKCk7Cit9Cisj
ZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3No
YXBlcy9TaGFwZS5oCmluZGV4IDBkOWVjZmQuLmY3NzVlNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc2hhcGVzL1NoYXBlLmgKQEAgLTMyLDYgKzMyLDcgQEAKIAogI2luY2x1ZGUgIkJhc2lj
U2hhcGVzLmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVjdC5oIgorI2luY2x1ZGUgIlN0eWxlSW1hZ2Uu
aCIKICNpbmNsdWRlICJXcml0aW5nTW9kZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtNjAsNiArNjEsNyBAQCB0eXBlZGVmIFZlY3Rv
cjxMaW5lU2VnbWVudD4gU2VnbWVudExpc3Q7CiBjbGFzcyBTaGFwZSB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIFBhc3NPd25QdHI8U2hhcGU+IGNyZWF0ZVNoYXBlKGNvbnN0IEJhc2ljU2hhcGUqLCBj
b25zdCBMYXlvdXRTaXplJiBsb2dpY2FsQm94U2l6ZSwgV3JpdGluZ01vZGUsIExlbmd0aCBtYXJn
aW4sIExlbmd0aCBwYWRkaW5nKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxTaGFwZT4gY3JlYXRl
U2hhcGUoY29uc3QgU3R5bGVJbWFnZSosIGZsb2F0IHRocmVzaG9sZCwgY29uc3QgTGF5b3V0U2l6
ZSYgbG9naWNhbEJveFNpemUsIFdyaXRpbmdNb2RlLCBMZW5ndGggbWFyZ2luLCBMZW5ndGggcGFk
ZGluZyk7CiAKICAgICB2aXJ0dWFsIH5TaGFwZSgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW5mby5jcHAKaW5kZXggZTExNTU4My4uYmY5NGU0MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUluZm8uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVJbmZvLmNwcApAQCAtNDUs
MTIgKzQ1LDI2IEBAIGNvbnN0IFNoYXBlKiBTaGFwZUluZm88UmVuZGVyVHlwZSwgc2hhcGVHZXR0
ZXIsIGludGVydmFsR2V0dGVyPjo6Y29tcHV0ZWRTaGFwZSgpCiAgICAgaWYgKFNoYXBlKiBzaGFw
ZSA9IG1fc2hhcGUuZ2V0KCkpCiAgICAgICAgIHJldHVybiBzaGFwZTsKIAotICAgIFNoYXBlVmFs
dWUqIHNoYXBlVmFsdWUgPSAobV9yZW5kZXJlci0+c3R5bGUoKS0+KnNoYXBlR2V0dGVyKSgpOwot
ICAgIEJhc2ljU2hhcGUqIHNoYXBlID0gKHNoYXBlVmFsdWUgJiYgc2hhcGVWYWx1ZS0+dHlwZSgp
ID09IFNoYXBlVmFsdWU6OlNoYXBlKSA/IHNoYXBlVmFsdWUtPnNoYXBlKCkgOiAwOworICAgIGNv
bnN0IExheW91dFNpemUgbG9naWNhbEJveFNpemUobV9zaGFwZUxvZ2ljYWxXaWR0aCwgbV9zaGFw
ZUxvZ2ljYWxIZWlnaHQpOworICAgIFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlID0gbV9yZW5kZXJl
ci0+c3R5bGUoKS0+d3JpdGluZ01vZGUoKTsKKyAgICBMZW5ndGggbWFyZ2luID0gbV9yZW5kZXJl
ci0+c3R5bGUoKS0+c2hhcGVNYXJnaW4oKTsKKyAgICBMZW5ndGggcGFkZGluZyA9IG1fcmVuZGVy
ZXItPnN0eWxlKCktPnNoYXBlUGFkZGluZygpOworICAgIGNvbnN0IFNoYXBlVmFsdWUqIHNoYXBl
VmFsdWUgPSAobV9yZW5kZXJlci0+c3R5bGUoKS0+KnNoYXBlR2V0dGVyKSgpOworICAgIEFTU0VS
VChzaGFwZVZhbHVlKTsKIAotICAgIEFTU0VSVChzaGFwZSk7CisgICAgc3dpdGNoIChzaGFwZVZh
bHVlLT50eXBlKCkpIHsKKyAgICBjYXNlIFNoYXBlVmFsdWU6OlNoYXBlOgorICAgICAgICBBU1NF
UlQoc2hhcGVWYWx1ZS0+c2hhcGUoKSk7CisgICAgICAgIG1fc2hhcGUgPSBTaGFwZTo6Y3JlYXRl
U2hhcGUoc2hhcGVWYWx1ZS0+c2hhcGUoKSwgbG9naWNhbEJveFNpemUsIHdyaXRpbmdNb2RlLCBt
YXJnaW4sIHBhZGRpbmcpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNoYXBlVmFsdWU6Oklt
YWdlOgorICAgICAgICBBU1NFUlQoc2hhcGVWYWx1ZS0+aW1hZ2UoKSk7CisgICAgICAgIG1fc2hh
cGUgPSBTaGFwZTo6Y3JlYXRlU2hhcGUoc2hhcGVWYWx1ZS0+aW1hZ2UoKSwgMCwgbG9naWNhbEJv
eFNpemUsIHdyaXRpbmdNb2RlLCBtYXJnaW4sIHBhZGRpbmcpOworICAgICAgICBicmVhazsKKyAg
ICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CiAKLSAgICBt
X3NoYXBlID0gU2hhcGU6OmNyZWF0ZVNoYXBlKHNoYXBlLCBMYXlvdXRTaXplKG1fc2hhcGVMb2dp
Y2FsV2lkdGgsIG1fc2hhcGVMb2dpY2FsSGVpZ2h0KSwgbV9yZW5kZXJlci0+c3R5bGUoKS0+d3Jp
dGluZ01vZGUoKSwgbV9yZW5kZXJlci0+c3R5bGUoKS0+c2hhcGVNYXJnaW4oKSwgbV9yZW5kZXJl
ci0+c3R5bGUoKS0+c2hhcGVQYWRkaW5nKCkpOwogICAgIEFTU0VSVChtX3NoYXBlKTsKICAgICBy
ZXR1cm4gbV9zaGFwZS5nZXQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zaGFwZXMvU2hhcGVJbnNpZGVJbmZvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zaGFwZXMvU2hhcGVJbnNpZGVJbmZvLmNwcAppbmRleCBkMTI5NWQwLi4xYzhlMTEzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW5zaWRlSW5mby5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUluc2lkZUluZm8u
Y3BwCkBAIC00NiwxMSArNDYsMTcgQEAgTGluZVNlZ21lbnRSYW5nZTo6TGluZVNlZ21lbnRSYW5n
ZShjb25zdCBJbmxpbmVJdGVyYXRvciYgc3RhcnQsIGNvbnN0IElubGluZUl0ZXIKIGJvb2wgU2hh
cGVJbnNpZGVJbmZvOjppc0VuYWJsZWRGb3IoY29uc3QgUmVuZGVyQmxvY2sqIHJlbmRlcmVyKQog
ewogICAgIFNoYXBlVmFsdWUqIHNoYXBlVmFsdWUgPSByZW5kZXJlci0+c3R5bGUoKS0+cmVzb2x2
ZWRTaGFwZUluc2lkZSgpOwotICAgIGlmICghc2hhcGVWYWx1ZSB8fCBzaGFwZVZhbHVlLT50eXBl
KCkgIT0gU2hhcGVWYWx1ZTo6U2hhcGUpCisgICAgaWYgKCFzaGFwZVZhbHVlKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBCYXNpY1NoYXBlKiBzaGFwZSA9IHNoYXBlVmFsdWUtPnNoYXBl
KCk7Ci0gICAgcmV0dXJuIHNoYXBlICYmIHNoYXBlLT50eXBlKCkgIT0gQmFzaWNTaGFwZTo6QmFz
aWNTaGFwZUluc2V0UmVjdGFuZ2xlVHlwZTsKKyAgICBzd2l0Y2ggKHNoYXBlVmFsdWUtPnR5cGUo
KSkgeworICAgIGNhc2UgU2hhcGVWYWx1ZTo6U2hhcGU6CisgICAgICAgIHJldHVybiBzaGFwZVZh
bHVlLT5zaGFwZSgpICYmIHNoYXBlVmFsdWUtPnNoYXBlKCktPnR5cGUoKSAhPSBCYXNpY1NoYXBl
OjpCYXNpY1NoYXBlSW5zZXRSZWN0YW5nbGVUeXBlOworICAgIGNhc2UgU2hhcGVWYWx1ZTo6SW1h
Z2U6CisgICAgICAgIHJldHVybiBzaGFwZVZhbHVlLT5pc0ltYWdlVmFsaWQoKTsKKyAgICBkZWZh
dWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogfQogCiBib29sIFNoYXBlSW5zaWRl
SW5mbzo6YWRqdXN0TG9naWNhbExpbmVUb3AoZmxvYXQgbWluU2VnbWVudFdpZHRoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5jcHAK
aW5kZXggOWZmZTdkYy4uNzliNjEyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uY3BwCkBAIC0zOCw4ICszOCwxOCBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogYm9vbCBTaGFwZU91dHNpZGVJbmZvOjppc0VuYWJsZWRGb3IoY29u
c3QgUmVuZGVyQm94KiBib3gpCiB7Ci0gICAgU2hhcGVWYWx1ZSogdmFsdWUgPSBib3gtPnN0eWxl
KCktPnNoYXBlT3V0c2lkZSgpOwotICAgIHJldHVybiBib3gtPmlzRmxvYXRpbmdXaXRoU2hhcGVP
dXRzaWRlKCkgJiYgdmFsdWUtPnR5cGUoKSA9PSBTaGFwZVZhbHVlOjpTaGFwZSAmJiB2YWx1ZS0+
c2hhcGUoKTsKKyAgICBTaGFwZVZhbHVlKiBzaGFwZVZhbHVlID0gYm94LT5zdHlsZSgpLT5zaGFw
ZU91dHNpZGUoKTsKKyAgICBpZiAoIWJveC0+aXNGbG9hdGluZ1dpdGhTaGFwZU91dHNpZGUoKSB8
fCAhc2hhcGVWYWx1ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgc3dpdGNoIChzaGFw
ZVZhbHVlLT50eXBlKCkpIHsKKyAgICBjYXNlIFNoYXBlVmFsdWU6OlNoYXBlOgorICAgICAgICBy
ZXR1cm4gc2hhcGVWYWx1ZS0+c2hhcGUoKTsKKyAgICBjYXNlIFNoYXBlVmFsdWU6OkltYWdlOgor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KIH0KIAogYm9vbCBTaGFwZU91dHNpZGVJbmZvOjpjb21wdXRlU2VnbWVudHNGb3JD
b250YWluaW5nQmxvY2tMaW5lKExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBmbG9hdFRv
cCwgTGF5b3V0VW5pdCBsaW5lSGVpZ2h0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1NoYXBlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TaGFwZVZhbHVlLmgKaW5kZXggNjc0YWVlYi4uYTQ3ZWQwYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NoYXBlVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU2hhcGVWYWx1ZS5oCkBAIC0zMSw2ICszMSw3IEBACiAjZGVmaW5l
IFNoYXBlVmFsdWVfaAogCiAjaW5jbHVkZSAiQmFzaWNTaGFwZXMuaCIKKyNpbmNsdWRlICJDYWNo
ZWRJbWFnZS5oIgogI2luY2x1ZGUgIlN0eWxlSW1hZ2UuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgogCkBAIC02MiwxMiArNjMsMTYgQEAgcHVibGljOgogCiAgICAgU2hhcGVWYWx1ZVR5
cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogICAgIEJhc2ljU2hhcGUqIHNoYXBl
KCkgY29uc3QgeyByZXR1cm4gbV9zaGFwZS5nZXQoKTsgfQorCiAgICAgU3R5bGVJbWFnZSogaW1h
Z2UoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlLmdldCgpOyB9CisgICAgYm9vbCBpc0ltYWdlVmFs
aWQoKSBjb25zdCB7IHJldHVybiBpbWFnZSgpICYmIGltYWdlKCktPmNhY2hlZEltYWdlKCkgJiYg
aW1hZ2UoKS0+Y2FjaGVkSW1hZ2UoKS0+aGFzSW1hZ2UoKTsgfQogICAgIHZvaWQgc2V0SW1hZ2Uo
UGFzc1JlZlB0cjxTdHlsZUltYWdlPiBpbWFnZSkKICAgICB7CisgICAgICAgIEFTU0VSVCh0eXBl
KCkgPT0gSW1hZ2UpOwogICAgICAgICBpZiAobV9pbWFnZSAhPSBpbWFnZSkKICAgICAgICAgICAg
IG1faW1hZ2UgPSBpbWFnZTsKICAgICB9CisKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU2hh
cGVWYWx1ZSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBvdGhlci50eXBlKCk7IH0K
IAogcHJpdmF0ZToK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>208573</attachid>
            <date>2013-08-12 16:36:43 -0700</date>
            <delta_ts>2013-08-14 13:37:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>tmp.patch</filename>
            <type>text/plain</type>
            <size>38473</size>
            <attacher name="Hans Muller">giles_joplin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0NTU4NWJjLi45YmQ1OTNhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTMtMDYt
MTAgIEhhbnMgTXVsbGVyICA8aG11bGxlckBhZG9iZS5jb20+CisKKyAgICAgICAgW0NTUyBFeGNs
dXNpb25zXSBNaW5pbWFsIHN1cHBvcnQgZm9yIHVzaW5nIGFuIGltYWdlIHRvIGRlZmluZSBhIHNo
YXBlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTY2
NDMKKworICAgICAgICBUd28gdGVzdHMgdG8gdmVyaWZ5IHRoYXQgdGhlIGluaXRpYWwgaW1wbGVt
ZW50YXRpb24gb2Ygc2hhcGUgdmFsdWVkIGltYWdlcyBpcyB3b3JraW5nCisgICAgICAgIGZvciBz
aGFwZS1pbnNpZGUuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBmYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1pbWFnZS0w
MDEtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9leGNsdXNpb25zL3NoYXBl
LWluc2lkZS9zaGFwZS1pbnNpZGUtaW1hZ2UtMDAxLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAwMi1leHBlY3Rl
ZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3No
YXBlLWluc2lkZS1pbWFnZS0wMDIuaHRtbDogQWRkZWQuCisKIDIwMTMtMDgtMTIgIEFsbGFuIFNh
bmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5jb20+CiAKICAgICAgICAgW1F0XSBB
ZGQgU3VwcG9ydCBmb3IgY2FudmFzIGJsZW5kIG1vZGVzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L3NoYXBlcy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAwMS1leHBlY3Rl
ZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zaGFwZXMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lk
ZS1pbWFnZS0wMDEtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5mZGJhYTcyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zaGFwZXMv
c2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1pbWFnZS0wMDEtZXhwZWN0ZWQuaHRtbApAQCAtMCww
ICsxLDI0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+CisgICAg
I2ltYWdlLXNoYXBlIHsKKyAgICAgICAgYm9yZGVyOiBzb2xpZCBibGFjayAxcHg7CisgICAgICAg
IGZvbnQ6IDEycHgvMSBBaGVtLCBzYW5zLXNlcmlmOworICAgICAgICBwYWRkaW5nOiA0cHg7Cisg
ICAgICAgIGNvbG9yOiBncmVlbjsKKyAgICAgICAgd2lkdGg6IDI0cHg7CisgICAgICAgIGhlaWdo
dDogMjRweDsKKyAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJkYXRhOmltYWdlL3BuZzti
YXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWdDQVlBQUFCemVucjBBQUFBU2ts
RVFWUllDZTNYSVE0QU1BaEQwWFhoL2xmdU1rZUNKalVmaFN0NVlKRHRrNnliRFAvWkRGQmpCZEx1
VWRqcW1hd0FBUVFRUUFBQkJCQkFBQUVFNGdMaU4reGZTcUtQMzhBRHVRTUpPNkxOYnI0QUFBQUFT
VVZPUks1Q1lJST0iKTsKKyAgICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKKyAg
ICB9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgIDxwIGlkPSJpbmZvcm1hdGl2ZS10ZXh0
Ij4KKyAgICAgIFRoaXMgdGVzdCByZXF1aXJlcyB0aGUgQWhlbSBmb250LiBJdCB1c2VzIGEgMzJ4
MzIgUE5HIGltYWdlIHdpdGggYSAyNHgyNCByZWQgc3F1YXJlIGluIHRoZSBjZW50ZXIKKyAgICAg
IHRvIGRlZmluZSBhIHNoYXBlLWluc2lkZS4gVGhlIGNvbnRlbnQgc2hvdWxkIGp1c3QgY292ZXIg
dGhlIHNoYXBlIHdpdGggc29saWQgZ3JlZW4uPC9wPgorCisgIDxkaXYgaWQ9ImltYWdlLXNoYXBl
Ij5YWDxici8+WFg8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3Qvc2hhcGVzL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtaW1hZ2UtMDAxLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L3NoYXBlcy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdl
LTAwMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2ZWM3YjEyCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zaGFwZXMvc2hhcGUtaW5zaWRlL3No
YXBlLWluc2lkZS1pbWFnZS0wMDEuaHRtbApAQCAtMCwwICsxLDI1IEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+CisgICAgI2ltYWdlLXNoYXBlIHsKKyAgICAgICAg
Ym9yZGVyOiBzb2xpZCBibGFjayAxcHg7CisgICAgICAgIGZvbnQ6IDEycHgvMSBBaGVtLCBzYW5z
LXNlcmlmOworICAgICAgICBjb2xvcjogZ3JlZW47CisgICAgICAgIHdpZHRoOiAzMnB4OworICAg
ICAgICBoZWlnaHQ6IDMycHg7CisgICAgICAgIC13ZWJraXQtc2hhcGUtaW5zaWRlOiB1cmwoImRh
dGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZ0NBWUFB
QUJ6ZW5yMEFBQUFTa2xFUVZSWUNlM1hJUTRBTUFoRDBYWGgvbGZ1TWtlQ0pqVWZoU3Q1WUpEdGs2
eWJEUC9aREZCakJkTHVVZGpxbWF3QUFRUVFRQUFCQkJCQUFBRUU0Z0xpTit4ZlNxS1AzOEFEdVFN
Sk82TE5icjRBQUFBQVNVVk9SSzVDWUlJPSIpOworICAgICAgICAtd2Via2l0LXNoYXBlLWltYWdl
LXRocmVzaG9sZDogMDsKKyAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJkYXRhOmltYWdl
L3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWdDQVlBQUFCemVucjBB
QUFBU2tsRVFWUllDZTNYSVE0QU1BaEQwWFhoL2xmdU1rZUNKalVmaFN0NVlKRHRrNnliRFAvWkRG
QmpCZEx1VWRqcW1hd0FBUVFRUUFBQkJCQkFBQUVFNGdMaU4reGZTcUtQMzhBRHVRTUpPNkxOYnI0
QUFBQUFTVVZPUks1Q1lJST0iKTsKKyAgICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVh
dDsKKyAgICB9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgIDxwIGlkPSJpbmZvcm1hdGl2
ZS10ZXh0Ij4KKyAgICAgIFRoaXMgdGVzdCByZXF1aXJlcyB0aGUgQWhlbSBmb250LiBJdCB1c2Vz
IGEgMzJ4MzIgUE5HIGltYWdlIHdpdGggYSAyNHgyNCByZWQgc3F1YXJlIGluIHRoZSBjZW50ZXIK
KyAgICAgIHRvIGRlZmluZSBhIHNoYXBlLWluc2lkZS4gVGhlIGNvbnRlbnQgc2hvdWxkIGp1c3Qg
Y292ZXIgdGhlIHNoYXBlIHdpdGggc29saWQgZ3JlZW4uPC9wPgorCisgIDxkaXYgaWQ9ImltYWdl
LXNoYXBlIj5YWCBYWDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9zaGFwZXMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1pbWFnZS0wMDItZXhw
ZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc2hhcGVzL3NoYXBlLWluc2lkZS9zaGFwZS1p
bnNpZGUtaW1hZ2UtMDAyLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uNWE1M2ZlOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2hh
cGVzL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtaW1hZ2UtMDAyLWV4cGVjdGVkLmh0bWwKQEAg
LTAsMCArMSwyMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgor
ICAgICNpbWFnZS1zaGFwZSB7CisgICAgICAgIGZvbnQ6IDEycHgvMSBBaGVtLCBzYW5zLXNlcmlm
OworICAgICAgICBjb2xvcjogZ3JlZW47CisgICAgICAgIHdpZHRoOiAyNHB4OworICAgICAgICBo
ZWlnaHQ6IDI0cHg7CisgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9w
bmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFBQUFnQ0FZQUFBQnplbnIwQUFB
QVJFbEVRVlJZQ2UzWHNRMEFJQWdFUUhIL25WOG4wQXB0anRDUkVISTBVQmxqWjJNa2RlbytUOFVY
TlFNUUlFQ0FBQUVDQkFnUUlGQko3MXR3TysydGdBQ0I3d0lMb0k4SE9hT216RnNBQUFBQVNVVk9S
SzVDWUlJPSIpOworICAgICAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OworICAgIH0K
Kzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPHAgaWQ9ImluZm9ybWF0aXZlLXRleHQiPgor
ICAgICAgVGhpcyB0ZXN0IHJlcXVpcmVzIHRoZSBBaGVtIGZvbnQuIEl0IHVzZXMgYSAyNHgyNCBz
cXVhcmUgUE5HIGltYWdlIHdoZXJlIGFsbCBwaXhlbHMgYXJlIHJlZCwKKyAgICAgIHRvIGRlZmlu
ZSBhIHNoYXBlLWluc2lkZS4gVGhlIGNvbnRlbnQgc2hvdWxkIGp1c3QgY292ZXIgdGhlIHNoYXBl
IHdpdGggc29saWQgZ3JlZW4uPC9wPgorICA8ZGl2IGlkPSJpbWFnZS1zaGFwZSI+WFg8YnIvPlhY
PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3No
YXBlcy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAwMi5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9zaGFwZXMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1pbWFnZS0wMDIuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNzk4NGUwCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zaGFwZXMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1p
bWFnZS0wMDIuaHRtbApAQCAtMCwwICsxLDI0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8c3R5bGU+CisgICAgI2ltYWdlLXNoYXBlIHsKKyAgICAgICAgZm9udDogMTJweC8x
IEFoZW0sIHNhbnMtc2VyaWY7CisgICAgICAgIGNvbG9yOiBncmVlbjsKKyAgICAgICAgd2lkdGg6
IDI0cHg7CisgICAgICAgIGhlaWdodDogMjRweDsKKyAgICAgICAgLXdlYmtpdC1zaGFwZS1pbnNp
ZGU6IHVybCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFD
QUFBQUFnQ0FZQUFBQnplbnIwQUFBQVJFbEVRVlJZQ2UzWHNRMEFJQWdFUUhIL25WOG4wQXB0anRD
UkVISTBVQmxqWjJNa2RlbytUOFVYTlFNUUlFQ0FBQUVDQkFnUUlGQko3MXR3TysydGdBQ0I3d0lM
b0k4SE9hT216RnNBQUFBQVNVVk9SSzVDWUlJPSIpOworICAgICAgICAtd2Via2l0LXNoYXBlLWlt
YWdlLXRocmVzaG9sZDogMDsKKyAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJkYXRhOmlt
YWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFBQWdDQVlBQUFCemVu
cjBBQUFBUkVsRVFWUllDZTNYc1EwQUlBZ0VRSEgvblY4bjBBcHRqdENSRUhJMFVCbGpaMk1rZGVv
K1Q4VVhOUU1RSUVDQUFBRUNCQWdRSUZCSjcxdHdPKzJ0Z0FDQjd3SUxvSThIT2FPbXpGc0FBQUFB
U1VWT1JLNUNZSUk9Iik7CisgICAgICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7Cisg
ICAgfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICA8cCBpZD0iaW5mb3JtYXRpdmUtdGV4
dCI+CisgICAgICBUaGlzIHRlc3QgcmVxdWlyZXMgdGhlIEFoZW0gZm9udC4gSXQgdXNlcyBhIDI0
eDI0IHNxdWFyZSBQTkcgaW1hZ2Ugd2hlcmUgYWxsIHBpeGVscyBhcmUgcmVkLAorICAgICAgdG8g
ZGVmaW5lIGEgc2hhcGUtaW5zaWRlLiBUaGUgY29udGVudCBzaG91bGQganVzdCBjb3ZlciB0aGUg
c2hhcGUgd2l0aCBzb2xpZCBncmVlbi48L3A+CisKKyAgPGRpdiBpZD0iaW1hZ2Utc2hhcGUiPlhY
IFhYPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDUwZGU0
NzguLmJkMzZlN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0yMjIxLDYgKzIyMjEsNyBAQCBz
ZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxVbmRl
ck92ZXIuY3BwCiAKICAgICByZW5kZXJpbmcvc2hhcGVzL1BvbHlnb25TaGFwZS5jcHAKKyAgICBy
ZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNwcAogICAgIHJlbmRlcmluZy9zaGFwZXMvUmVj
dGFuZ2xlU2hhcGUuY3BwCiAgICAgcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAKICAgICByZW5k
ZXJpbmcvc2hhcGVzL1NoYXBlSW5mby5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmYzZhYjJkLi5jNTBjYzg1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTggQEAKKzIwMTMtMDYtMTAgIEhhbnMgTXVsbGVyICA8
aG11bGxlckBhZG9iZS5jb20+CisKKyAgICAgICAgW0NTUyBFeGNsdXNpb25zXSBNaW5pbWFsIHN1
cHBvcnQgZm9yIHVzaW5nIGFuIGltYWdlIHRvIGRlZmluZSBhIHNoYXBlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTY2NDMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIGEgZmlyc3Qgc21hbGwg
c3RlcCB0b3dhcmRzIHN1cHBvcnRpbmcgQ1NTIHNoYXBlcyBkZWZpbmVkIGJ5IGFuCisgICAgICAg
IGltYWdlIFVSTCBhbmQgYSBhbHBoYSBjaGFubmVsIHRocmVzaG9sZC4gVG8ga2VlcCB0aGUgcGF0
Y2ggYXMgc21hbGwgYXMKKyAgICAgICAgcG9zc2libGUsIHRoZXJlIGFyZSBtYW55IGxpbWl0YXRp
b25zIGFuZCByZW1haW5pbmcgd29yayBpdGVtcy4gIFNlZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE2MzQ4IGZvciB0aGUgY3VycmVudCBsaXN0Lgor
CisgICAgICAgIFRlc3Q6IGZhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRl
LWltYWdlLTAwMS5odG1sCisgICAgICAgIFRlc3Q6IGZhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNp
ZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAwMi5odG1sCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFRhcmdldC5wcmk6
CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvajoKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjppbWFnZUNoYW5n
ZWQpOiBXaGVuIHRoZSBpbWFnZSBoYXMgZmluaXNoZWQgbG9hZGluZywgcmVxdWVzdCBhIGxheW91
dC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6c2V0
U3R5bGUpOiBBZGQgbm90aWZ5IGNsaWVudHMgZm9yIHNoYXBlIGltYWdlcy4KKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlck9iamVjdDo6dXBkYXRlU2hhcGVJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpyZW1vdmVTaGFwZUltYWdlQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVj
dDo6YXJlbmFEZWxldGUpOiBSZW1vdmUgbm90aWZ5IGNsaWVudHMgZm9yIHNoYXBlIGltYWdlcy4K
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAgICogcmVuZGVyaW5n
L3NoYXBlcy9SYXN0ZXJTaGFwZS5jcHA6IEFkZGVkLiBBIFNoYXBlIGRlZmluZWQgYnkgdGhyZXNo
b2xkaW5nIGFuIGltYWdlJ3MgYWxwaGEgY2hhbm5lbC4KKyAgICAgICAgKFdlYkNvcmU6OlJhc3Rl
clNoYXBlSW50ZXJ2YWxzOjpib3VuZHMpOgorICAgICAgICAoV2ViQ29yZTo6UmFzdGVyU2hhcGVJ
bnRlcnZhbHM6OmFkZEludGVydmFsKTogQWRkIGEgc2luZ2xlIHJ1biB0byB0aGUgc2hhcGUuCisg
ICAgICAgIChXZWJDb3JlOjphbGlnbmVkUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSYXN0ZXJT
aGFwZUludGVydmFsczo6Z2V0SW50ZXJ2YWxzKTogUmV0dXJuIHRoZSBzaGFwZSdzIHJ1bnMgdGhh
dCBmYWxsIHdpdGhpbiBhIGhvcml6b25hbCBib3guCisgICAgICAgIChXZWJDb3JlOjpSYXN0ZXJT
aGFwZTo6bWFyZ2luSW50ZXJ2YWxzKTogSW50ZXJuYWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIHNo
YXBlIHdpdGggc2hhcGUtbWFyZ2luIGZhY3RvcmVkIGluLiAgQ3VycmVudGx5IG9ubHkgYSBzdHVi
LgorICAgICAgICAoV2ViQ29yZTo6UmFzdGVyU2hhcGU6OnBhZGRpbmdJbnRlcnZhbHMpOiBJbnRl
cm5hbCByZXByZXNlbnRhdGlvbiBvZiB0aGUgc2hhcGUgd2l0aCBzaGFwZS1wYWRkaW5nIGZhY3Rv
cmVkIGluLiAgQ3VycmVudGx5IG9ubHkgYSBzdHViLgorICAgICAgICAoV2ViQ29yZTo6UmFzdGVy
U2hhcGU6OmdldEV4Y2x1ZGVkSW50ZXJ2YWxzKToKKyAgICAgICAgKFdlYkNvcmU6OlJhc3RlclNo
YXBlOjpnZXRJbmNsdWRlZEludGVydmFscyk6CisgICAgICAgIChXZWJDb3JlOjpSYXN0ZXJTaGFw
ZTo6Zmlyc3RJbmNsdWRlZEludGVydmFsTG9naWNhbFRvcCk6CisgICAgICAgICogcmVuZGVyaW5n
L3NoYXBlcy9SYXN0ZXJTaGFwZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmFzdGVyU2hhcGVJbnRl
cnZhbHM6OlJhc3RlclNoYXBlSW50ZXJ2YWxzKTogSW50ZXJuYWwgcnVuIGxlbmd0aCBlbmNvZGVk
IHJlcHJlc2VudGF0aW9uIG9mIGEgUmFzdGVyU2hhcGUuCisgICAgICAgIChXZWJDb3JlOjpSYXN0
ZXJTaGFwZUludGVydmFsczo6aXNFbXB0eSk6CisgICAgICAgIChXZWJDb3JlOjpSYXN0ZXJTaGFw
ZTo6UmFzdGVyU2hhcGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcGU6OmNyZWF0ZVNoYXBlKTogU3VwcG9ydCBmb3IgY3JlYXRp
bmcgYSBTaGFwZSBiYXNlZCBvbiBhIFJhc3RlclNoYXBlSW50ZXJ2YWxzIG9iamVjdC4KKyAgICAg
ICAgKiByZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmg6CisgICAgICAgICogcmVuZGVyaW5nL3NoYXBl
cy9TaGFwZUluZm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Ojpjb21wdXRlZFNoYXBlKTogQWRk
ZWQgc3VwcG9ydCBmb3IgdGhlIEltYWdlIFNoYXBlVmFsdWUgdHlwZS4KKyAgICAgICAgKiByZW5k
ZXJpbmcvc2hhcGVzL1NoYXBlSW5zaWRlSW5mby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFw
ZUluc2lkZUluZm86OmlzRW5hYmxlZEZvcik6IEFkZGVkIHN1cHBvcnQgZm9yIHRoZSBJbWFnZSBT
aGFwZVZhbHVlIHR5cGUuCisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJ
bmZvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXBlT3V0c2lkZUluZm86OmlzRW5hYmxlZEZv
cik6IEFkZGVkIHN1cHBvcnQgZm9yIHRoZSBJbWFnZSBTaGFwZVZhbHVlIHR5cGUuCisgICAgICAg
ICogcmVuZGVyaW5nL3N0eWxlL1NoYXBlVmFsdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXBl
VmFsdWU6OmlzSW1hZ2VWYWxpZCk6IFRydWUgaWYgdGhlIHNoYXBlJ3MgaW1hZ2UgaXMgcmVhZHkg
dG8gYmUgYmUgcHJvY2Vzc2VkLgorCiAyMDEzLTA4LTEyICBwZWF2b0BvdXRsb29rLmNvbSAgPHBl
YXZvQG91dGxvb2suY29tPgogCiAgICAgICAgIFtDdXJsXSBDcmFzaCB3aGVuIHN0YXJ0aW5nIHNl
Y29uZCBkb3dubG9hZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGZjN2E2MzIu
LmQ1N2Y0YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0K
KysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNDU5OCw2ICs0NTk4
LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFVuZGVyT3Zlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c2hhcGVzL1BvbHlnb25TaGFwZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFw
ZXMvUG9seWdvblNoYXBlLmggXAorCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmFz
dGVyU2hhcGUuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNo
YXBlLmggXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmVjdGFuZ2xlU2hhcGUu
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1JlY3RhbmdsZVNoYXBlLmgg
XAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJp
CmluZGV4IGFkMDFhNTEuLjYzNGRhMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Rhcmdl
dC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtMTIzMiw2ICsxMjMyLDcg
QEAgU09VUkNFUyArPSBcCiAgICAgcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwIFwKICAgICBy
ZW5kZXJpbmcvU2Nyb2xsQmVoYXZpb3IuY3BwIFwKICAgICByZW5kZXJpbmcvc2hhcGVzL1BvbHln
b25TaGFwZS5jcHAgXAorICAgIHJlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuY3BwIFwKICAg
ICByZW5kZXJpbmcvc2hhcGVzL1JlY3RhbmdsZVNoYXBlLmNwcCBcCiAgICAgcmVuZGVyaW5nL3No
YXBlcy9TaGFwZS5jcHAgXAogICAgIHJlbmRlcmluZy9zaGFwZXMvU2hhcGVJbmZvLmNwcCBcCkBA
IC0yNDkzLDYgKzI0OTQsNyBAQCBIRUFERVJTICs9IFwKICAgICByZW5kZXJpbmcvUm9vdElubGlu
ZUJveC5oIFwKICAgICByZW5kZXJpbmcvU2Nyb2xsQmVoYXZpb3IuaCBcCiAgICAgcmVuZGVyaW5n
L3NoYXBlcy9Qb2x5Z29uU2hhcGUuaCBcCisgICAgcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFw
ZS5oIFwKICAgICByZW5kZXJpbmcvc2hhcGVzL1JlY3RhbmdsZVNoYXBlLmggXAogICAgIHJlbmRl
cmluZy9zaGFwZXMvU2hhcGUuaCBcCiAgICAgcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUluZm8uaCBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagppbmRl
eCA1YTQ4OGIwLi44YmM1YTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
eHByb2ovV2ViQ29yZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJv
ai9XZWJDb3JlLnZjeHByb2oKQEAgLTEwOTY0LDYgKzEwOTY0LDcgQEAKICAgICAgIDxFeGNsdWRl
ZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1By
b2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgPC9DbENvbXBpbGU+
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcc2hhcGVzXFBvbHlnb25TaGFw
ZS5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcc2hhcGVzXFJh
c3RlclNoYXBlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xz
aGFwZXNcUmVjdGFuZ2xlU2hhcGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cmVuZGVyaW5nXHNoYXBlc1xTaGFwZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxyZW5kZXJpbmdcc2hhcGVzXFNoYXBlSW5zaWRlSW5mby5jcHAiIC8+CkBAIC0xOTk3MCw2ICsx
OTk3MSw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcUmVuZGVyU2xp
ZGVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcUmVuZGVyU25h
cHNob3R0ZWRQbHVnSW4uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmlu
Z1xzaGFwZXNcUG9seWdvblNoYXBlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxy
ZW5kZXJpbmdcc2hhcGVzXFJhc3RlclNoYXBlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxyZW5kZXJpbmdcc2hhcGVzXFJlY3RhbmdsZVNoYXBlLmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcc2hhcGVzXFNoYXBlLmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcc2hhcGVzXFNoYXBlSW5zaWRlSW5mby5oIiAvPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IGU3YzQ0NjM0Li5lYmM1Y2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xODI3LDYgKzE4MjcsOCBAQAogCQk2RTY3RDJBNjEy
ODBFOEE0MDA4NzU4RjcgLyogRXh0ZW5zaW9uczNET3BlbkdMLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNjdEMkE0MTI4MEU4QTQwMDg3NThGNyAv
KiBFeHRlbnNpb25zM0RPcGVuR0wuY3BwICovOyB9OwogCQk2RTY3RDJBNzEyODBFOEE0MDA4NzU4
RjcgLyogRXh0ZW5zaW9uczNET3BlbkdMLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA2RTY3RDJBNTEyODBFOEE0MDA4NzU4RjcgLyogRXh0ZW5zaW9uczNE
T3BlbkdMLmggKi87IH07CiAJCTZFNjdEMkE5MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25z
M0QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNjdE
MkE4MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25zM0QuaCAqLzsgfTsKKwkJNkU4NEU5RTAx
NzY2OEJFRTAwODE1QjY4IC8qIFJhc3RlclNoYXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFODRFOURFMTc2NjhCQUQwMDgxNUI2OCAvKiBSYXN0
ZXJTaGFwZS5jcHAgKi87IH07CisJCTZFODRFOUUxMTc2NjhCRjEwMDgxNUI2OCAvKiBSYXN0ZXJT
aGFwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU4
NEU5REYxNzY2OEJBRDAwODE1QjY4IC8qIFJhc3RlclNoYXBlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNkVCQzVFQUYxMzhCNTBGMjAwQTBDRjhB
IC8qIEpTRmxvYXQ2NEFycmF5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDZFQkM1RUFEMTM4QjUwRjIwMEEwQ0Y4QSAvKiBKU0Zsb2F0NjRBcnJheS5j
cHAgKi87IH07CiAJCTZFQkM1RUIwMTM4QjUwRjIwMEEwQ0Y4QSAvKiBKU0Zsb2F0NjRBcnJheS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkVCQzVFQUUx
MzhCNTBGMjAwQTBDRjhBIC8qIEpTRmxvYXQ2NEFycmF5LmggKi87IH07CiAJCTZFQkYwRTQ4MTJB
ODkyNjEwMERCMTcwOSAvKiBPRVNUZXh0dXJlRmxvYXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkVCRjBFNDUxMkE4OTI2MTAwREIxNzA5IC8qIE9F
U1RleHR1cmVGbG9hdC5jcHAgKi87IH07CkBAIC04MjM4LDYgKzgyNDAsOCBAQAogCQk2RTY3RDJB
NDEyODBFOEE0MDA4NzU4RjcgLyogRXh0ZW5zaW9uczNET3BlbkdMLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV4dGVuc2lvbnMzRE9wZW5HTC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFNjdEMkE1MTI4MEU4QTQwMDg3NThGNyAvKiBFeHRlbnNp
b25zM0RPcGVuR0wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXh0ZW5zaW9u
czNET3BlbkdMLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFNjdEMkE4MTI4MEU4
QkQwMDg3NThGNyAvKiBFeHRlbnNpb25zM0QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRXh0ZW5zaW9uczNELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZFODRF
OURFMTc2NjhCQUQwMDgxNUI2OCAvKiBSYXN0ZXJTaGFwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSYXN0ZXJTaGFwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTZFODRFOURGMTc2NjhCQUQwMDgxNUI2OCAvKiBSYXN0ZXJTaGFwZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSYXN0ZXJTaGFwZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk2RUJDNUQ4MDEzOEI0QzRFMDBBMENGOEEgLyogRmxvYXQ2NEFycmF5
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBGbG9hdDY0QXJyYXkuaWRsOyBwYXRoID0gY2Fu
dmFzL0Zsb2F0NjRBcnJheS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFQkM1
RUFEMTM4QjUwRjIwMEEwQ0Y4QSAvKiBKU0Zsb2F0NjRBcnJheS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0Zsb2F0NjRBcnJheS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTZFQkM1RUFFMTM4QjUwRjIwMEEwQ0Y4QSAvKiBKU0Zsb2F0NjRBcnJh
eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0Zsb2F0NjRBcnJheS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjA2MDksNiArMjA2MTMsOCBAQAogCQkJY2hp
bGRyZW4gPSAoCiAJCQkJRkQwOEE4N0ExNzVEMzkyNjAwMkNEMzYwIC8qIFBvbHlnb25TaGFwZS5j
cHAgKi8sCiAJCQkJRkQwOEE4N0IxNzVEMzkyNjAwMkNEMzYwIC8qIFBvbHlnb25TaGFwZS5oICov
LAorCQkJCTZFODRFOURFMTc2NjhCQUQwMDgxNUI2OCAvKiBSYXN0ZXJTaGFwZS5jcHAgKi8sCisJ
CQkJNkU4NEU5REYxNzY2OEJBRDAwODE1QjY4IC8qIFJhc3RlclNoYXBlLmggKi8sCiAJCQkJRkQw
OEE4N0MxNzVEMzkyNjAwMkNEMzYwIC8qIFJlY3RhbmdsZVNoYXBlLmNwcCAqLywKIAkJCQlGRDA4
QTg3RDE3NUQzOTI2MDAyQ0QzNjAgLyogUmVjdGFuZ2xlU2hhcGUuaCAqLywKIAkJCQlGRDA4QTg3
RTE3NUQzOTI2MDAyQ0QzNjAgLyogU2hhcGUuY3BwICovLApAQCAtMjA5MzMsNiArMjA5MzksNyBA
QAogCQkJZmlsZXMgPSAoCiAJCQkJRkUxMTVGQUIxNjc5ODhDRDAwMjQ5MTM0IC8qIEFic3RyYWN0
RGF0YWJhc2VTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFNEFBREVFMTZEMkMzNzQwMDAy
NkZGQyAvKiBBYnN0cmFjdFNRTFN0YXRlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkU4NEU5
RTExNzY2OEJGMTAwODE1QjY4IC8qIFJhc3RlclNoYXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlG
RTRBQURFRjE2RDJDMzc0MDAwMjZGRkMgLyogQWJzdHJhY3RTUUxTdGF0ZW1lbnRCYWNrZW5kLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0MUUxQjFEMTBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RX
b3JrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5QTgxMjJFMEZCQjlDMUQwMDUxMDI5MyAvKiBB
Y2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmggaW4gSGVhZGVycyAqLywKQEAgLTI3MDQzLDYgKzI3
MDUwLDcgQEAKIAkJCQlGRDUzNzM1MjEzN0I2NTE4MDAwMDhEQ0UgLyogWmVyb1BvbGUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRkQxNzYyREYxNzY2ODZEOTAwRDgzNkE4IC8qIFVwU2FtcGxlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDE3NjJFMzE3NjY4NkVBMDBEODM2QTggLyogRG93blNh
bXBsZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNkU4NEU5RTAxNzY2OEJFRTAwODE1QjY4IC8q
IFJhc3RlclNoYXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9jay5jcHAKaW5kZXggNDI0ODUzMy4uN2Q5YjRhYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC0xNDM2LDYgKzE0MzYsMjEgQEAgdm9pZCBSZW5k
ZXJCbG9jazo6bGF5b3V0KCkKIH0KIAogI2lmIEVOQUJMRShDU1NfU0hBUEVTKQordm9pZCBSZW5k
ZXJCbG9jazo6aW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciBpbWFnZSwgY29uc3QgSW50UmVj
dCopCit7CisgICAgUmVuZGVyQm94OjppbWFnZUNoYW5nZWQoaW1hZ2UpOworCisgICAgaWYgKCFw
YXJlbnQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgU2hhcGVWYWx1ZSogc2hhcGVWYWx1ZSA9
IHN0eWxlKCktPnNoYXBlSW5zaWRlKCk7CisgICAgaWYgKHNoYXBlVmFsdWUgJiYgc2hhcGVWYWx1
ZS0+aW1hZ2UoKSAmJiBzaGFwZVZhbHVlLT5pbWFnZSgpLT5kYXRhKCkgPT0gaW1hZ2UpIHsKKyAg
ICAgICAgU2hhcGVJbnNpZGVJbmZvKiBzaGFwZUluc2lkZUluZm8gPSBlbnN1cmVTaGFwZUluc2lk
ZUluZm8oKTsKKyAgICAgICAgc2hhcGVJbnNpZGVJbmZvLT5kaXJ0eVNoYXBlU2l6ZSgpOworICAg
ICAgICBtYXJrU2hhcGVJbnNpZGVEZXNjZW5kYW50c0ZvckxheW91dCgpOworICAgIH0KK30KKwog
dm9pZCBSZW5kZXJCbG9jazo6dXBkYXRlU2hhcGVJbnNpZGVJbmZvQWZ0ZXJTdHlsZUNoYW5nZShj
b25zdCBTaGFwZVZhbHVlKiBzaGFwZUluc2lkZSwgY29uc3QgU2hhcGVWYWx1ZSogb2xkU2hhcGVJ
bnNpZGUpCiB7CiAgICAgLy8gRklYTUU6IEEgZnV0dXJlIG9wdGltaXphdGlvbiB3b3VsZCBkbyBh
IGRlZXAgY29tcGFyaXNvbiBmb3IgZXF1YWxpdHkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9jay5oCmluZGV4IGJhOTNiYmIuLjJiYzE5ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5oCkBAIC00NzAsNiArNDcwLDcgQEAgcHVibGljOgogICAgIHZvaWQgbWFy
a1NoYXBlSW5zaWRlRGVzY2VuZGFudHNGb3JMYXlvdXQoKTsKICAgICBTaGFwZUluc2lkZUluZm8q
IGxheW91dFNoYXBlSW5zaWRlSW5mbygpIGNvbnN0OwogICAgIGJvb2wgYWxsb3dzU2hhcGVJbnNp
ZGVJbmZvU2hhcmluZygpIGNvbnN0IHsgcmV0dXJuICFpc0lubGluZSgpICYmICFpc0Zsb2F0aW5n
KCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgaW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciwgY29u
c3QgSW50UmVjdCogPSAwKSBPVkVSUklERTsKICNlbmRpZgogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IDk3NDkyODQuLjY1MzZhODcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC0xODUwLDYg
KzE4NTAsMTAgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OnNldFN0eWxlKFBhc3NSZWZQdHI8UmVuZGVy
U3R5bGU+IHN0eWxlKQogICAgIHVwZGF0ZUltYWdlKG9sZFN0eWxlID8gb2xkU3R5bGUtPmJvcmRl
ckltYWdlKCkuaW1hZ2UoKSA6IDAsIG1fc3R5bGUgPyBtX3N0eWxlLT5ib3JkZXJJbWFnZSgpLmlt
YWdlKCkgOiAwKTsKICAgICB1cGRhdGVJbWFnZShvbGRTdHlsZSA/IG9sZFN0eWxlLT5tYXNrQm94
SW1hZ2UoKS5pbWFnZSgpIDogMCwgbV9zdHlsZSA/IG1fc3R5bGUtPm1hc2tCb3hJbWFnZSgpLmlt
YWdlKCkgOiAwKTsKIAorI2lmIEVOQUJMRShDU1NfU0hBUEVTKQorICAgIHVwZGF0ZVNoYXBlSW1h
Z2Uob2xkU3R5bGUgPyBvbGRTdHlsZS0+c2hhcGVJbnNpZGUoKSA6IDAsIG1fc3R5bGUgPyBtX3N0
eWxlLT5zaGFwZUluc2lkZSgpIDogMCk7CisjZW5kaWYKKwogICAgIC8vIFdlIG5lZWQgdG8gZW5z
dXJlIHRoYXQgdmlldy0+bWF4aW1hbE91dGxpbmVTaXplKCkgaXMgdmFsaWQgZm9yIGFueSByZXBh
aW50cyB0aGF0IGhhcHBlbgogICAgIC8vIGR1cmluZyBzdHlsZURpZENoYW5nZSAoaXQncyB1c2Vk
IGJ5IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KCkpLgogICAgIGlmIChtX3N0eWxlLT5v
dXRsaW5lV2lkdGgoKSA+IDAgJiYgbV9zdHlsZS0+b3V0bGluZVNpemUoKSA+IG1heGltYWxPdXRs
aW5lU2l6ZShQYWludFBoYXNlT3V0bGluZSkpCkBAIC0yMTAyLDYgKzIxMDYsMTQgQEAgdm9pZCBS
ZW5kZXJPYmplY3Q6OnVwZGF0ZUltYWdlKFN0eWxlSW1hZ2UqIG9sZEltYWdlLCBTdHlsZUltYWdl
KiBuZXdJbWFnZSkKICAgICB9CiB9CiAKKyNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKK3ZvaWQgUmVu
ZGVyT2JqZWN0Ojp1cGRhdGVTaGFwZUltYWdlKGNvbnN0IFNoYXBlVmFsdWUqIG9sZFNoYXBlVmFs
dWUsIGNvbnN0IFNoYXBlVmFsdWUqIG5ld1NoYXBlVmFsdWUpCit7CisgICAgaWYgKG9sZFNoYXBl
VmFsdWUgfHwgbmV3U2hhcGVWYWx1ZSkKKyAgICAgICAgdXBkYXRlSW1hZ2Uob2xkU2hhcGVWYWx1
ZSA/IG9sZFNoYXBlVmFsdWUtPmltYWdlKCkgOiAwLCBuZXdTaGFwZVZhbHVlID8gbmV3U2hhcGVW
YWx1ZS0+aW1hZ2UoKSA6IDApOworfQorI2VuZGlmCisKIExheW91dFJlY3QgUmVuZGVyT2JqZWN0
Ojp2aWV3UmVjdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHZpZXcoKS0+dmlld1JlY3QoKTsKQEAg
LTI2MjAsNiArMjYzMiwxNiBAQCB2b2lkIFJlbmRlck9iamVjdDo6ZGVzdHJveSgpCiAgICAgYXJl
bmFEZWxldGUocmVuZGVyQXJlbmEoKSwgdGhpcyk7CiB9CiAKKyNpZiBFTkFCTEUoQ1NTX1NIQVBF
UykKK3ZvaWQgUmVuZGVyT2JqZWN0OjpyZW1vdmVTaGFwZUltYWdlQ2xpZW50KFNoYXBlVmFsdWUq
IHNoYXBlVmFsdWUpCit7CisgICAgaWYgKCFzaGFwZVZhbHVlKQorICAgICAgICByZXR1cm47Cisg
ICAgaWYgKFN0eWxlSW1hZ2UqIHNoYXBlSW1hZ2UgPSBzaGFwZVZhbHVlLT5pbWFnZSgpKQorICAg
ICAgICBzaGFwZUltYWdlLT5yZW1vdmVDbGllbnQodGhpcyk7Cit9CisjZW5kaWYKKwogdm9pZCBS
ZW5kZXJPYmplY3Q6OmFyZW5hRGVsZXRlKFJlbmRlckFyZW5hKiBhcmVuYSwgdm9pZCogYmFzZSkK
IHsKICAgICBpZiAobV9zdHlsZSkgewpAQCAtMjYzOCw2ICsyNjYwLDEwIEBAIHZvaWQgUmVuZGVy
T2JqZWN0OjphcmVuYURlbGV0ZShSZW5kZXJBcmVuYSogYXJlbmEsIHZvaWQqIGJhc2UpCiAKICAg
ICAgICAgaWYgKFN0eWxlSW1hZ2UqIG1hc2tCb3hJbWFnZSA9IG1fc3R5bGUtPm1hc2tCb3hJbWFn
ZSgpLmltYWdlKCkpCiAgICAgICAgICAgICBtYXNrQm94SW1hZ2UtPnJlbW92ZUNsaWVudCh0aGlz
KTsKKworI2lmIEVOQUJMRShDU1NfU0hBUEVTKQorICAgICAgICByZW1vdmVTaGFwZUltYWdlQ2xp
ZW50KG1fc3R5bGUtPnNoYXBlSW5zaWRlKCkpOworI2VuZGlmCiAgICAgfQogCiAjaWZuZGVmIE5E
RUJVRwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCmluZGV4IDNhMTM1MGEu
LmVlZDAzZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKQEAgLTY5
NCw2ICs2OTQsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHVwZGF0ZUZpbGxJbWFnZXMoY29uc3Qg
RmlsbExheWVyKiwgY29uc3QgRmlsbExheWVyKik7CiAgICAgdm9pZCB1cGRhdGVJbWFnZShTdHls
ZUltYWdlKiwgU3R5bGVJbWFnZSopOworI2lmIEVOQUJMRShDU1NfU0hBUEVTKQorICAgIHZvaWQg
dXBkYXRlU2hhcGVJbWFnZShjb25zdCBTaGFwZVZhbHVlKiwgY29uc3QgU2hhcGVWYWx1ZSopOwor
I2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0
UG9pbnQmKTsKIApAQCAtMTAyNiw2ICsxMDI5LDEwIEBAIHByaXZhdGU6CiAKICAgICBDb2xvciBz
ZWxlY3Rpb25Db2xvcihpbnQgY29sb3JQcm9wZXJ0eSkgY29uc3Q7CiAKKyNpZiBFTkFCTEUoQ1NT
X1NIQVBFUykKKyAgICB2b2lkIHJlbW92ZVNoYXBlSW1hZ2VDbGllbnQoU2hhcGVWYWx1ZSopOwor
I2VuZGlmCisKICNpZm5kZWYgTkRFQlVHCiAgICAgdm9pZCBjaGVja0Jsb2NrUG9zaXRpb25lZE9i
amVjdHNOZWVkTGF5b3V0KCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3NoYXBlcy9SYXN0ZXJTaGFwZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uMWNlMjYwZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
aGFwZXMvUmFzdGVyU2hhcGUuY3BwCkBAIC0wLDAgKzEsMTUyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEzIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKKyAq
ICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nCisgKiAgICBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWlt
ZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscworICogICAgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MKKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisgKiBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsCisgKiBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCisgKiBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
CisgKiBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlJhc3RlclNoYXBlLmgiCisKKyNpbmNsdWRlICJTaGFwZUlu
dGVydmFsLmgiCisjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitJbnRSZWN0IFJhc3RlclNoYXBlSW50ZXJ2YWxzOjpib3VuZHMoKSBjb25zdAorewor
ICAgIGlmICghbV9ib3VuZHMpCisgICAgICAgIG1fYm91bmRzID0gYWRvcHRQdHIobmV3IEludFJl
Y3QobV9yZWdpb24uYm91bmRzKCkpKTsKKyAgICByZXR1cm4gKm1fYm91bmRzOworfQorCit2b2lk
IFJhc3RlclNoYXBlSW50ZXJ2YWxzOjphZGRJbnRlcnZhbChpbnQgeSwgaW50IHgxLCBpbnQgeDIp
Cit7CisgICAgbV9yZWdpb24udW5pdGUoUmVnaW9uKEludFJlY3QoeDEsIHksIHgyIC0geDEsIDEp
KSk7CisgICAgbV9ib3VuZHMuY2xlYXIoKTsKK30KKworc3RhdGljIGlubGluZSBJbnRSZWN0IGFs
aWduZWRSZWN0KEludFJlY3QgciwgaW50IHkxLCBpbnQgeTIpCit7CisgICAgcmV0dXJuIEludFJl
Y3Qoci54KCksIHkxLCByLndpZHRoKCksIHkyIC0geTEpOworfQorCit2b2lkIFJhc3RlclNoYXBl
SW50ZXJ2YWxzOjpnZXRJbmNsdWRlZEludGVydmFscyhpbnQgeTEsIGludCB5MiwgU2VnbWVudExp
c3QmIHJlc3VsdCkgY29uc3QKK3sKKyAgICBBU1NFUlQoeTIgPj0geTEpOworCisgICAgSW50UmVj
dCBsaW5lUmVjdChib3VuZHMoKS54KCksIHkxLCBib3VuZHMoKS53aWR0aCgpLCB5MiAtIHkxKTsK
KyAgICBSZWdpb24gbGluZVJlZ2lvbihsaW5lUmVjdCk7CisgICAgbGluZVJlZ2lvbi5pbnRlcnNl
Y3QobV9yZWdpb24pOworICAgIGlmIChsaW5lUmVnaW9uLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgVmVjdG9yPEludFJlY3Q+IGxpbmVSZWN0cyA9IGxpbmVSZWdpb24ucmVjdHMo
KTsKKyAgICBBU1NFUlQobGluZVJlY3RzLnNpemUoKSA+IDApOworCisgICAgUmVnaW9uIHNlZ21l
bnRzUmVnaW9uKGxpbmVSZWN0KTsKKyAgICBSZWdpb24gaW50ZXJ2YWxzUmVnaW9uOworCisgICAg
Ly8gVGhlIGxvb3AgYmVsb3cgdXNlcyBSZWdpb25zIHRvIGNvbXB1dGUgdGhlIGludGVyc2VjdGlv
biBvZiB0aGUgaG9yaXpvbnRhbAorICAgIC8vIHNoYXBlIGludGVydmFscyB0aGF0IGZhbGwgd2l0
aGluIHRoZSBsaW5lJ3MgYm94LgorICAgIGludCBsaW5lWSA9IGxpbmVSZWN0c1swXS55KCk7Cisg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxpbmVSZWN0cy5zaXplKCk7ICsraSkgeworICAg
ICAgICBpZiAobGluZVJlY3RzW2ldLnkoKSAhPSBsaW5lWSkgeworICAgICAgICAgICAgc2VnbWVu
dHNSZWdpb24uaW50ZXJzZWN0KGludGVydmFsc1JlZ2lvbik7CisgICAgICAgICAgICBpbnRlcnZh
bHNSZWdpb24gPSBSZWdpb24oKTsKKyAgICAgICAgfQorICAgICAgICBpbnRlcnZhbHNSZWdpb24u
dW5pdGUoUmVnaW9uKGFsaWduZWRSZWN0KGxpbmVSZWN0c1tpXSwgeTEsIHkyKSkpOworICAgICAg
ICBsaW5lWSA9IGxpbmVSZWN0c1tpXS55KCk7CisgICAgfQorICAgIGlmICghaW50ZXJ2YWxzUmVn
aW9uLmlzRW1wdHkoKSkKKyAgICAgICAgc2VnbWVudHNSZWdpb24uaW50ZXJzZWN0KGludGVydmFs
c1JlZ2lvbik7CisKKyAgICBWZWN0b3I8SW50UmVjdD4gc2VnbWVudFJlY3RzID0gc2VnbWVudHNS
ZWdpb24ucmVjdHMoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2VnbWVudFJlY3Rz
LnNpemUoKTsgKytpKQorICAgICAgICByZXN1bHQuYXBwZW5kKExpbmVTZWdtZW50KHNlZ21lbnRS
ZWN0c1tpXS54KCksIHNlZ21lbnRSZWN0c1tpXS5tYXhYKCkpKTsKK30KKworY29uc3QgUmFzdGVy
U2hhcGVJbnRlcnZhbHMmIFJhc3RlclNoYXBlOjptYXJnaW5JbnRlcnZhbHMoKSBjb25zdAorewor
ICAgIEFTU0VSVChzaGFwZU1hcmdpbigpID49IDApOworICAgIGlmICghc2hhcGVNYXJnaW4oKSkK
KyAgICAgICAgcmV0dXJuICptX2ludGVydmFsczsKKworICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9y
dCBmb3Igbm9uLXplcm8gbWFyZ2luLCBzZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTExNjM0OC4KKyAgICByZXR1cm4gKm1faW50ZXJ2YWxzOworfQorCitjb25zdCBS
YXN0ZXJTaGFwZUludGVydmFscyYgUmFzdGVyU2hhcGU6OnBhZGRpbmdJbnRlcnZhbHMoKSBjb25z
dAoreworICAgIEFTU0VSVChzaGFwZVBhZGRpbmcoKSA+PSAwKTsKKyAgICBpZiAoIXNoYXBlUGFk
ZGluZygpKQorICAgICAgICByZXR1cm4gKm1faW50ZXJ2YWxzOworCisgICAgLy8gRklYTUU6IEFk
ZCBzdXBwb3J0IGZvciBub24temVybyBwYWRkaW5nLCBzZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTExNjM0OC4KKyAgICByZXR1cm4gKm1faW50ZXJ2YWxzOworfQor
Cit2b2lkIFJhc3RlclNoYXBlOjpnZXRFeGNsdWRlZEludGVydmFscyhMYXlvdXRVbml0LCBMYXlv
dXRVbml0LCBTZWdtZW50TGlzdCYpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IHRoaXMgbWV0aG9k
IGlzIG9ubHkgYSBzdHViLCBzZWUgaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9jaHJvbWl1bS9p
c3N1ZXMvZGV0YWlsP2lkPTI1MjczNy4KK30KKwordm9pZCBSYXN0ZXJTaGFwZTo6Z2V0SW5jbHVk
ZWRJbnRlcnZhbHMoTGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBMYXlvdXRVbml0IGxvZ2ljYWxIZWln
aHQsIFNlZ21lbnRMaXN0JiByZXN1bHQpIGNvbnN0Cit7CisgICAgY29uc3QgUmFzdGVyU2hhcGVJ
bnRlcnZhbHMmIGludGVydmFscyA9IHBhZGRpbmdJbnRlcnZhbHMoKTsKKyAgICBpZiAoaW50ZXJ2
YWxzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZmxvYXQgeTEgPSBsb2dpY2Fs
VG9wOworICAgIGZsb2F0IHkyID0gbG9naWNhbFRvcCArIGxvZ2ljYWxIZWlnaHQ7CisKKyAgICBp
ZiAoeTEgPCBpbnRlcnZhbHMuYm91bmRzKCkueSgpIHx8IHkyID4gaW50ZXJ2YWxzLmJvdW5kcygp
Lm1heFkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaW50ZXJ2YWxzLmdldEluY2x1ZGVkSW50
ZXJ2YWxzKHkxLCB5MiwgcmVzdWx0KTsKK30KKworYm9vbCBSYXN0ZXJTaGFwZTo6Zmlyc3RJbmNs
dWRlZEludGVydmFsTG9naWNhbFRvcChMYXlvdXRVbml0IG1pbkxvZ2ljYWxJbnRlcnZhbFRvcCwg
Y29uc3QgTGF5b3V0U2l6ZSYgbWluTG9naWNhbEludGVydmFsU2l6ZSwgTGF5b3V0VW5pdCYgcmVz
dWx0KSBjb25zdAoreworICAgIGZsb2F0IG1pbkludGVydmFsVG9wID0gbWluTG9naWNhbEludGVy
dmFsVG9wOworICAgIGZsb2F0IG1pbkludGVydmFsSGVpZ2h0ID0gbWluTG9naWNhbEludGVydmFs
U2l6ZS5oZWlnaHQoKTsKKyAgICBmbG9hdCBtaW5JbnRlcnZhbFdpZHRoID0gbWluTG9naWNhbElu
dGVydmFsU2l6ZS53aWR0aCgpOworCisgICAgY29uc3QgUmFzdGVyU2hhcGVJbnRlcnZhbHMmIGlu
dGVydmFscyA9IHBhZGRpbmdJbnRlcnZhbHMoKTsKKyAgICBpZiAoaW50ZXJ2YWxzLmlzRW1wdHko
KSB8fCBtaW5JbnRlcnZhbFdpZHRoID4gaW50ZXJ2YWxzLmJvdW5kcygpLndpZHRoKCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIGZsb2F0IG1pblkgPSBzdGQ6Om1heDxmbG9hdD4oaW50
ZXJ2YWxzLmJvdW5kcygpLnkoKSwgbWluSW50ZXJ2YWxUb3ApOworICAgIGZsb2F0IG1heFkgPSBt
aW5ZICsgbWluSW50ZXJ2YWxIZWlnaHQ7CisKKyAgICBpZiAobWF4WSA+IGludGVydmFscy5ib3Vu
ZHMoKS5tYXhZKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIEZJWE1FOiBDb21w
bGV0ZSB0aGlzIG1ldGhvZCwgc2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMTYzNDguCisgICAgcmVzdWx0ID0gbWluWTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBl
cy9SYXN0ZXJTaGFwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEzMDVk
NDMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jh
c3RlclNoYXBlLmgKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBB
ZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCisgKiAgICBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICog
ICAgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKKyAqICAgIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRQorICogQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULAorICogSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULAorICogU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRAorICogT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUmFzdGVyU2hhcGVf
aAorI2RlZmluZSBSYXN0ZXJTaGFwZV9oCisKKyNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNs
dWRlICJSZWdpb24uaCIKKyNpbmNsdWRlICJTaGFwZS5oIgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRp
b25zLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIFJhc3RlclNoYXBlSW50ZXJ2YWxzIHsKK3B1YmxpYzoKKyAgICBSYXN0ZXJTaGFwZUlu
dGVydmFscygpIHsgfQorCisgICAgSW50UmVjdCBib3VuZHMoKSBjb25zdDsKKyAgICBib29sIGlz
RW1wdHkoKSBjb25zdCAgeyByZXR1cm4gbV9yZWdpb24uaXNFbXB0eSgpOyB9CisgICAgdm9pZCBh
ZGRJbnRlcnZhbChpbnQgeSwgaW50IHgxLCBpbnQgeDIpOworICAgIHZvaWQgZ2V0SW5jbHVkZWRJ
bnRlcnZhbHMoaW50IHkxLCBpbnQgeTIsIFNlZ21lbnRMaXN0JikgY29uc3Q7CisKK3ByaXZhdGU6
CisgICAgUmVnaW9uIG1fcmVnaW9uOworICAgIG11dGFibGUgT3duUHRyPEludFJlY3Q+IG1fYm91
bmRzOyAvLyBDYWNoZWQgdmFsdWUgb2YgbV9yZWdpb24uYm91bmRzKCkuCit9OworCitjbGFzcyBS
YXN0ZXJTaGFwZSA6IHB1YmxpYyBTaGFwZSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmFz
dGVyU2hhcGUpOworcHVibGljOgorICAgIFJhc3RlclNoYXBlKFBhc3NPd25QdHI8UmFzdGVyU2hh
cGVJbnRlcnZhbHM+IGludGVydmFscykKKyAgICAgICAgOiBTaGFwZSgpCisgICAgICAgICwgbV9p
bnRlcnZhbHMoaW50ZXJ2YWxzKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIExheW91dFJl
Y3Qgc2hhcGVNYXJnaW5Mb2dpY2FsQm91bmRpbmdCb3goKSBjb25zdCBPVkVSUklERSB7IHJldHVy
biBzdGF0aWNfY2FzdDxMYXlvdXRSZWN0PihtYXJnaW5JbnRlcnZhbHMoKS5ib3VuZHMoKSk7IH0K
KyAgICB2aXJ0dWFsIExheW91dFJlY3Qgc2hhcGVQYWRkaW5nTG9naWNhbEJvdW5kaW5nQm94KCkg
Y29uc3QgT1ZFUlJJREUgeyByZXR1cm4gc3RhdGljX2Nhc3Q8TGF5b3V0UmVjdD4ocGFkZGluZ0lu
dGVydmFscygpLmJvdW5kcygpKTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0VtcHR5KCkgY29uc3Qg
T1ZFUlJJREUgeyByZXR1cm4gbV9pbnRlcnZhbHMtPmlzRW1wdHkoKTsgfQorICAgIHZpcnR1YWwg
dm9pZCBnZXRFeGNsdWRlZEludGVydmFscyhMYXlvdXRVbml0IGxvZ2ljYWxUb3AsIExheW91dFVu
aXQgbG9naWNhbEhlaWdodCwgU2VnbWVudExpc3QmKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgZ2V0SW5jbHVkZWRJbnRlcnZhbHMoTGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBMYXlv
dXRVbml0IGxvZ2ljYWxIZWlnaHQsIFNlZ21lbnRMaXN0JikgY29uc3QgT1ZFUlJJREU7CisgICAg
dmlydHVhbCBib29sIGZpcnN0SW5jbHVkZWRJbnRlcnZhbExvZ2ljYWxUb3AoTGF5b3V0VW5pdCBt
aW5Mb2dpY2FsSW50ZXJ2YWxUb3AsIGNvbnN0IExheW91dFNpemUmIG1pbkxvZ2ljYWxJbnRlcnZh
bFNpemUsIExheW91dFVuaXQmKSBjb25zdCBPVkVSUklERTsKKworcHJpdmF0ZToKKyAgICBjb25z
dCBSYXN0ZXJTaGFwZUludGVydmFscyYgbWFyZ2luSW50ZXJ2YWxzKCkgY29uc3Q7CisgICAgY29u
c3QgUmFzdGVyU2hhcGVJbnRlcnZhbHMmIHBhZGRpbmdJbnRlcnZhbHMoKSBjb25zdDsKKworICAg
IE93blB0cjxSYXN0ZXJTaGFwZUludGVydmFscz4gbV9pbnRlcnZhbHM7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBSYXN0ZXJTaGFwZV9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCmluZGV4IDgxMGFjNTUuLjFkYWY1YjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCkBAIC0zMSw5ICszMSwxMiBA
QAogI2luY2x1ZGUgIlNoYXBlLmgiCiAKICNpbmNsdWRlICJCYXNpY1NoYXBlRnVuY3Rpb25zLmgi
CisjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRlICJGbG9hdFNpemUuaCIKKyNpbmNs
dWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIkxlbmd0aEZ1bmN0aW9ucy5oIgogI2luY2x1
ZGUgIlBvbHlnb25TaGFwZS5oIgorI2luY2x1ZGUgIlJhc3RlclNoYXBlLmgiCiAjaW5jbHVkZSAi
UmVjdGFuZ2xlU2hhcGUuaCIKICNpbmNsdWRlICJXaW5kUnVsZS5oIgogI2luY2x1ZGUgPHd0Zi9N
YXRoRXh0cmFzLmg+CkBAIC0yMDAsNCArMjAzLDQ1IEBAIFBhc3NPd25QdHI8U2hhcGU+IFNoYXBl
OjpjcmVhdGVTaGFwZShjb25zdCBCYXNpY1NoYXBlKiBiYXNpY1NoYXBlLCBjb25zdCBMYXlvdXRT
CiAgICAgcmV0dXJuIHNoYXBlLnJlbGVhc2UoKTsKIH0KIAorUGFzc093blB0cjxTaGFwZT4gU2hh
cGU6OmNyZWF0ZVNoYXBlKGNvbnN0IFN0eWxlSW1hZ2UqIHN0eWxlSW1hZ2UsIGZsb2F0IHRocmVz
aG9sZCwgY29uc3QgTGF5b3V0U2l6ZSYsIFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBMZW5ndGgg
bWFyZ2luLCBMZW5ndGggcGFkZGluZykKK3sKKyAgICBBU1NFUlQoc3R5bGVJbWFnZSAmJiBzdHls
ZUltYWdlLT5pc0NhY2hlZEltYWdlKCkgJiYgc3R5bGVJbWFnZS0+Y2FjaGVkSW1hZ2UoKSAmJiBz
dHlsZUltYWdlLT5jYWNoZWRJbWFnZSgpLT5pbWFnZSgpKTsKKworICAgIE93blB0cjxSYXN0ZXJT
aGFwZUludGVydmFscz4gaW50ZXJ2YWxzID0gYWRvcHRQdHIobmV3IFJhc3RlclNoYXBlSW50ZXJ2
YWxzKCkpOworCisgICAgSW1hZ2UqIGltYWdlID0gc3R5bGVJbWFnZS0+Y2FjaGVkSW1hZ2UoKS0+
aW1hZ2UoKTsKKyAgICBjb25zdCBJbnRTaXplJiBpbWFnZVNpemUgPSBpbWFnZS0+c2l6ZSgpOwor
ICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
KGltYWdlU2l6ZSk7CisgICAgaWYgKGltYWdlQnVmZmVyKSB7CisgICAgICAgIEdyYXBoaWNzQ29u
dGV4dCogZ3JhcGhpY3NDb250ZXh0ID0gaW1hZ2VCdWZmZXItPmNvbnRleHQoKTsKKyAgICAgICAg
Z3JhcGhpY3NDb250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIElu
dFBvaW50KCkpOworCisgICAgICAgIFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gcGl4ZWxBcnJh
eSA9IGltYWdlQnVmZmVyLT5nZXRVbm11bHRpcGxpZWRJbWFnZURhdGEoSW50UmVjdChJbnRQb2lu
dCgpLCBpbWFnZVNpemUpKTsKKyAgICAgICAgdW5zaWduZWQgcGl4ZWxBcnJheUxlbmd0aCA9IHBp
eGVsQXJyYXktPmxlbmd0aCgpOworICAgICAgICB1bnNpZ25lZCBwaXhlbEFycmF5T2Zmc2V0ID0g
MzsgLy8gRWFjaCBwaXhlbCBpcyBmb3VyIGJ5dGVzOiBSR0JBLgorICAgICAgICB1aW50OF90IGFs
cGhhUGl4ZWxUaHJlc2hvbGQgPSB0aHJlc2hvbGQgKiAyNTU7CisKKyAgICAgICAgQVNTRVJUKHN0
YXRpY19jYXN0PHVuc2lnbmVkPihpbWFnZVNpemUud2lkdGgoKSAqIGltYWdlU2l6ZS5oZWlnaHQo
KSAqIDQpID09IHBpeGVsQXJyYXlMZW5ndGgpOworCisgICAgICAgIGZvciAoaW50IHkgPSAwOyB5
IDwgaW1hZ2VTaXplLmhlaWdodCgpOyArK3kpIHsKKyAgICAgICAgICAgIGludCBzdGFydFggPSAt
MTsKKyAgICAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgaW1hZ2VTaXplLndpZHRoKCkgJiYg
cGl4ZWxBcnJheU9mZnNldCA8IHBpeGVsQXJyYXlMZW5ndGg7ICsreCwgcGl4ZWxBcnJheU9mZnNl
dCArPSA0KSB7CisgICAgICAgICAgICAgICAgdWludDhfdCBhbHBoYSA9IHBpeGVsQXJyYXktPml0
ZW0ocGl4ZWxBcnJheU9mZnNldCk7CisgICAgICAgICAgICAgICAgaWYgKChzdGFydFggPT0gLTEp
ICYmIGFscGhhID4gYWxwaGFQaXhlbFRocmVzaG9sZCkgeworICAgICAgICAgICAgICAgICAgICBz
dGFydFggPSB4OworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RhcnRYICE9IC0xICYmIChh
bHBoYSA8PSBhbHBoYVBpeGVsVGhyZXNob2xkIHx8IHggPT0gaW1hZ2VTaXplLndpZHRoKCkgLSAx
KSkgeworICAgICAgICAgICAgICAgICAgICBpbnRlcnZhbHMtPmFkZEludGVydmFsKHksIHN0YXJ0
WCwgeCk7CisgICAgICAgICAgICAgICAgICAgIHN0YXJ0WCA9IC0xOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIE93blB0cjxSYXN0ZXJT
aGFwZT4gcmFzdGVyU2hhcGUgPSBhZG9wdFB0cihuZXcgUmFzdGVyU2hhcGUoaW50ZXJ2YWxzLnJl
bGVhc2UoKSkpOworICAgIHJhc3RlclNoYXBlLT5tX3dyaXRpbmdNb2RlID0gd3JpdGluZ01vZGU7
CisgICAgcmFzdGVyU2hhcGUtPm1fbWFyZ2luID0gZmxvYXRWYWx1ZUZvckxlbmd0aChtYXJnaW4s
IDApOworICAgIHJhc3RlclNoYXBlLT5tX3BhZGRpbmcgPSBmbG9hdFZhbHVlRm9yTGVuZ3RoKHBh
ZGRpbmcsIDApOworICAgIHJldHVybiByYXN0ZXJTaGFwZS5yZWxlYXNlKCk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
aGFwZXMvU2hhcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuaApp
bmRleCAwZDllY2ZkLi5mNzc1ZTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc2hhcGVzL1NoYXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9T
aGFwZS5oCkBAIC0zMiw2ICszMiw3IEBACiAKICNpbmNsdWRlICJCYXNpY1NoYXBlcy5oIgogI2lu
Y2x1ZGUgIkxheW91dFJlY3QuaCIKKyNpbmNsdWRlICJTdHlsZUltYWdlLmgiCiAjaW5jbHVkZSAi
V3JpdGluZ01vZGUuaCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KQEAgLTYwLDYgKzYxLDcgQEAgdHlwZWRlZiBWZWN0b3I8TGluZVNlZ21lbnQ+
IFNlZ21lbnRMaXN0OwogY2xhc3MgU2hhcGUgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3du
UHRyPFNoYXBlPiBjcmVhdGVTaGFwZShjb25zdCBCYXNpY1NoYXBlKiwgY29uc3QgTGF5b3V0U2l6
ZSYgbG9naWNhbEJveFNpemUsIFdyaXRpbmdNb2RlLCBMZW5ndGggbWFyZ2luLCBMZW5ndGggcGFk
ZGluZyk7CisgICAgc3RhdGljIFBhc3NPd25QdHI8U2hhcGU+IGNyZWF0ZVNoYXBlKGNvbnN0IFN0
eWxlSW1hZ2UqLCBmbG9hdCB0aHJlc2hvbGQsIGNvbnN0IExheW91dFNpemUmIGxvZ2ljYWxCb3hT
aXplLCBXcml0aW5nTW9kZSwgTGVuZ3RoIG1hcmdpbiwgTGVuZ3RoIHBhZGRpbmcpOwogCiAgICAg
dmlydHVhbCB+U2hhcGUoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3NoYXBlcy9TaGFwZUluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBl
cy9TaGFwZUluZm8uY3BwCmluZGV4IGUxMTU1ODMuLmJmOTRlNDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVJbmZvLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW5mby5jcHAKQEAgLTQ1LDEyICs0NSwyNiBAQCBj
b25zdCBTaGFwZSogU2hhcGVJbmZvPFJlbmRlclR5cGUsIHNoYXBlR2V0dGVyLCBpbnRlcnZhbEdl
dHRlcj46OmNvbXB1dGVkU2hhcGUoKQogICAgIGlmIChTaGFwZSogc2hhcGUgPSBtX3NoYXBlLmdl
dCgpKQogICAgICAgICByZXR1cm4gc2hhcGU7CiAKLSAgICBTaGFwZVZhbHVlKiBzaGFwZVZhbHVl
ID0gKG1fcmVuZGVyZXItPnN0eWxlKCktPipzaGFwZUdldHRlcikoKTsKLSAgICBCYXNpY1NoYXBl
KiBzaGFwZSA9IChzaGFwZVZhbHVlICYmIHNoYXBlVmFsdWUtPnR5cGUoKSA9PSBTaGFwZVZhbHVl
OjpTaGFwZSkgPyBzaGFwZVZhbHVlLT5zaGFwZSgpIDogMDsKKyAgICBjb25zdCBMYXlvdXRTaXpl
IGxvZ2ljYWxCb3hTaXplKG1fc2hhcGVMb2dpY2FsV2lkdGgsIG1fc2hhcGVMb2dpY2FsSGVpZ2h0
KTsKKyAgICBXcml0aW5nTW9kZSB3cml0aW5nTW9kZSA9IG1fcmVuZGVyZXItPnN0eWxlKCktPndy
aXRpbmdNb2RlKCk7CisgICAgTGVuZ3RoIG1hcmdpbiA9IG1fcmVuZGVyZXItPnN0eWxlKCktPnNo
YXBlTWFyZ2luKCk7CisgICAgTGVuZ3RoIHBhZGRpbmcgPSBtX3JlbmRlcmVyLT5zdHlsZSgpLT5z
aGFwZVBhZGRpbmcoKTsKKyAgICBjb25zdCBTaGFwZVZhbHVlKiBzaGFwZVZhbHVlID0gKG1fcmVu
ZGVyZXItPnN0eWxlKCktPipzaGFwZUdldHRlcikoKTsKKyAgICBBU1NFUlQoc2hhcGVWYWx1ZSk7
CiAKLSAgICBBU1NFUlQoc2hhcGUpOworICAgIHN3aXRjaCAoc2hhcGVWYWx1ZS0+dHlwZSgpKSB7
CisgICAgY2FzZSBTaGFwZVZhbHVlOjpTaGFwZToKKyAgICAgICAgQVNTRVJUKHNoYXBlVmFsdWUt
PnNoYXBlKCkpOworICAgICAgICBtX3NoYXBlID0gU2hhcGU6OmNyZWF0ZVNoYXBlKHNoYXBlVmFs
dWUtPnNoYXBlKCksIGxvZ2ljYWxCb3hTaXplLCB3cml0aW5nTW9kZSwgbWFyZ2luLCBwYWRkaW5n
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTaGFwZVZhbHVlOjpJbWFnZToKKyAgICAgICAg
QVNTRVJUKHNoYXBlVmFsdWUtPmltYWdlKCkpOworICAgICAgICBtX3NoYXBlID0gU2hhcGU6OmNy
ZWF0ZVNoYXBlKHNoYXBlVmFsdWUtPmltYWdlKCksIDAsIGxvZ2ljYWxCb3hTaXplLCB3cml0aW5n
TW9kZSwgbWFyZ2luLCBwYWRkaW5nKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQogCi0gICAgbV9zaGFwZSA9IFNoYXBl
OjpjcmVhdGVTaGFwZShzaGFwZSwgTGF5b3V0U2l6ZShtX3NoYXBlTG9naWNhbFdpZHRoLCBtX3No
YXBlTG9naWNhbEhlaWdodCksIG1fcmVuZGVyZXItPnN0eWxlKCktPndyaXRpbmdNb2RlKCksIG1f
cmVuZGVyZXItPnN0eWxlKCktPnNoYXBlTWFyZ2luKCksIG1fcmVuZGVyZXItPnN0eWxlKCktPnNo
YXBlUGFkZGluZygpKTsKICAgICBBU1NFUlQobV9zaGFwZSk7CiAgICAgcmV0dXJuIG1fc2hhcGUu
Z2V0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1No
YXBlSW5zaWRlSW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBl
SW5zaWRlSW5mby5jcHAKaW5kZXggZDEyOTVkMC4uMWM4ZTExMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUluc2lkZUluZm8uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVJbnNpZGVJbmZvLmNwcApAQCAtNDYsMTEg
KzQ2LDE3IEBAIExpbmVTZWdtZW50UmFuZ2U6OkxpbmVTZWdtZW50UmFuZ2UoY29uc3QgSW5saW5l
SXRlcmF0b3ImIHN0YXJ0LCBjb25zdCBJbmxpbmVJdGVyCiBib29sIFNoYXBlSW5zaWRlSW5mbzo6
aXNFbmFibGVkRm9yKGNvbnN0IFJlbmRlckJsb2NrKiByZW5kZXJlcikKIHsKICAgICBTaGFwZVZh
bHVlKiBzaGFwZVZhbHVlID0gcmVuZGVyZXItPnN0eWxlKCktPnJlc29sdmVkU2hhcGVJbnNpZGUo
KTsKLSAgICBpZiAoIXNoYXBlVmFsdWUgfHwgc2hhcGVWYWx1ZS0+dHlwZSgpICE9IFNoYXBlVmFs
dWU6OlNoYXBlKQorICAgIGlmICghc2hhcGVWYWx1ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgQmFzaWNTaGFwZSogc2hhcGUgPSBzaGFwZVZhbHVlLT5zaGFwZSgpOwotICAgIHJldHVy
biBzaGFwZSAmJiBzaGFwZS0+dHlwZSgpICE9IEJhc2ljU2hhcGU6OkJhc2ljU2hhcGVJbnNldFJl
Y3RhbmdsZVR5cGU7CisgICAgc3dpdGNoIChzaGFwZVZhbHVlLT50eXBlKCkpIHsKKyAgICBjYXNl
IFNoYXBlVmFsdWU6OlNoYXBlOgorICAgICAgICByZXR1cm4gc2hhcGVWYWx1ZS0+c2hhcGUoKSAm
JiBzaGFwZVZhbHVlLT5zaGFwZSgpLT50eXBlKCkgIT0gQmFzaWNTaGFwZTo6QmFzaWNTaGFwZUlu
c2V0UmVjdGFuZ2xlVHlwZTsKKyAgICBjYXNlIFNoYXBlVmFsdWU6OkltYWdlOgorICAgICAgICBy
ZXR1cm4gc2hhcGVWYWx1ZS0+aXNJbWFnZVZhbGlkKCk7CisgICAgZGVmYXVsdDoKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KIH0KIAogYm9vbCBTaGFwZUluc2lkZUluZm86OmFkanVzdExv
Z2ljYWxMaW5lVG9wKGZsb2F0IG1pblNlZ21lbnRXaWR0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uY3BwCmluZGV4IDlmZmU3ZGMu
Ljc5YjYxMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hh
cGVPdXRzaWRlSW5mby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9T
aGFwZU91dHNpZGVJbmZvLmNwcApAQCAtMzgsOCArMzgsMTggQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGJvb2wgU2hhcGVPdXRzaWRlSW5mbzo6aXNFbmFibGVkRm9yKGNvbnN0IFJlbmRlckJveCog
Ym94KQogewotICAgIFNoYXBlVmFsdWUqIHZhbHVlID0gYm94LT5zdHlsZSgpLT5zaGFwZU91dHNp
ZGUoKTsKLSAgICByZXR1cm4gYm94LT5pc0Zsb2F0aW5nV2l0aFNoYXBlT3V0c2lkZSgpICYmIHZh
bHVlLT50eXBlKCkgPT0gU2hhcGVWYWx1ZTo6U2hhcGUgJiYgdmFsdWUtPnNoYXBlKCk7CisgICAg
U2hhcGVWYWx1ZSogc2hhcGVWYWx1ZSA9IGJveC0+c3R5bGUoKS0+c2hhcGVPdXRzaWRlKCk7Cisg
ICAgaWYgKCFib3gtPmlzRmxvYXRpbmdXaXRoU2hhcGVPdXRzaWRlKCkgfHwgIXNoYXBlVmFsdWUp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHN3aXRjaCAoc2hhcGVWYWx1ZS0+dHlwZSgp
KSB7CisgICAgY2FzZSBTaGFwZVZhbHVlOjpTaGFwZToKKyAgICAgICAgcmV0dXJuIHNoYXBlVmFs
dWUtPnNoYXBlKCk7CisgICAgY2FzZSBTaGFwZVZhbHVlOjpJbWFnZToKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiB9CiAK
IGJvb2wgU2hhcGVPdXRzaWRlSW5mbzo6Y29tcHV0ZVNlZ21lbnRzRm9yQ29udGFpbmluZ0Jsb2Nr
TGluZShMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgZmxvYXRUb3AsIExheW91dFVuaXQg
bGluZUhlaWdodCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
aGFwZVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhcGVWYWx1ZS5o
CmluZGV4IDY3NGFlZWIuLmE0N2VkMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TaGFwZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1NoYXBlVmFsdWUuaApAQCAtMzEsNiArMzEsNyBAQAogI2RlZmluZSBTaGFwZVZhbHVlX2gK
IAogI2luY2x1ZGUgIkJhc2ljU2hhcGVzLmgiCisjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKICNp
bmNsdWRlICJTdHlsZUltYWdlLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIApAQCAt
NjIsMTIgKzYzLDE2IEBAIHB1YmxpYzoKIAogICAgIFNoYXBlVmFsdWVUeXBlIHR5cGUoKSBjb25z
dCB7IHJldHVybiBtX3R5cGU7IH0KICAgICBCYXNpY1NoYXBlKiBzaGFwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc2hhcGUuZ2V0KCk7IH0KKwogICAgIFN0eWxlSW1hZ2UqIGltYWdlKCkgY29uc3QgeyBy
ZXR1cm4gbV9pbWFnZS5nZXQoKTsgfQorICAgIGJvb2wgaXNJbWFnZVZhbGlkKCkgY29uc3QgeyBy
ZXR1cm4gaW1hZ2UoKSAmJiBpbWFnZSgpLT5jYWNoZWRJbWFnZSgpICYmIGltYWdlKCktPmNhY2hl
ZEltYWdlKCktPmhhc0ltYWdlKCk7IH0KICAgICB2b2lkIHNldEltYWdlKFBhc3NSZWZQdHI8U3R5
bGVJbWFnZT4gaW1hZ2UpCiAgICAgeworICAgICAgICBBU1NFUlQodHlwZSgpID09IEltYWdlKTsK
ICAgICAgICAgaWYgKG1faW1hZ2UgIT0gaW1hZ2UpCiAgICAgICAgICAgICBtX2ltYWdlID0gaW1h
Z2U7CiAgICAgfQorCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNoYXBlVmFsdWUmIG90aGVy
KSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gb3RoZXIudHlwZSgpOyB9CiAKIHByaXZhdGU6Cg==
</data>
<flag name="review"
          id="230545"
          type_id="1"
          status="+"
          setter="achicu"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>208755</attachid>
            <date>2013-08-14 13:37:22 -0700</date>
            <delta_ts>2013-08-14 13:51:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>tmp.patch</filename>
            <type>text/plain</type>
            <size>38777</size>
            <attacher name="Hans Muller">giles_joplin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3MjgwZTBjLi4yMDI3OTg3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTMtMDYt
MTAgIEhhbnMgTXVsbGVyICA8aG11bGxlckBhZG9iZS5jb20+CisKKyAgICAgICAgW0NTUyBFeGNs
dXNpb25zXSBNaW5pbWFsIHN1cHBvcnQgZm9yIHVzaW5nIGFuIGltYWdlIHRvIGRlZmluZSBhIHNo
YXBlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTY2
NDMKKworICAgICAgICBUd28gdGVzdHMgdG8gdmVyaWZ5IHRoYXQgdGhlIGluaXRpYWwgaW1wbGVt
ZW50YXRpb24gb2Ygc2hhcGUgdmFsdWVkIGltYWdlcyBpcyB3b3JraW5nCisgICAgICAgIGZvciBz
aGFwZS1pbnNpZGUuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBmYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1pbWFnZS0w
MDEtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9leGNsdXNpb25zL3NoYXBl
LWluc2lkZS9zaGFwZS1pbnNpZGUtaW1hZ2UtMDAxLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAwMi1leHBlY3Rl
ZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3No
YXBlLWluc2lkZS1pbWFnZS0wMDIuaHRtbDogQWRkZWQuCisKIDIwMTMtMDgtMTQgIEFuZHJlYXMg
S2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjE1MzgxNSk6
IGZhc3QvcmVwYWludC9jYXJldC1qdW1wLWJldHdlZW4tbm9kZXMuaHRtbCBzdWNrcy4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2hhcGVzL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUt
aW1hZ2UtMDAxLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3NoYXBlcy9zaGFwZS1p
bnNpZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAwMS1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkYmFhNzIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L3NoYXBlcy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAwMS1leHBl
Y3RlZC5odG1sCkBAIC0wLDAgKzEsMjQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKzxzdHlsZT4KKyAgICAjaW1hZ2Utc2hhcGUgeworICAgICAgICBib3JkZXI6IHNvbGlkIGJs
YWNrIDFweDsKKyAgICAgICAgZm9udDogMTJweC8xIEFoZW0sIHNhbnMtc2VyaWY7CisgICAgICAg
IHBhZGRpbmc6IDRweDsKKyAgICAgICAgY29sb3I6IGdyZWVuOworICAgICAgICB3aWR0aDogMjRw
eDsKKyAgICAgICAgaGVpZ2h0OiAyNHB4OworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwo
ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZ0NB
WUFBQUJ6ZW5yMEFBQUFTa2xFUVZSWUNlM1hJUTRBTUFoRDBYWGgvbGZ1TWtlQ0pqVWZoU3Q1WUpE
dGs2eWJEUC9aREZCakJkTHVVZGpxbWF3QUFRUVFRQUFCQkJCQUFBRUU0Z0xpTit4ZlNxS1AzOEFE
dVFNSk82TE5icjRBQUFBQVNVVk9SSzVDWUlJPSIpOworICAgICAgICBiYWNrZ3JvdW5kLXJlcGVh
dDogbm8tcmVwZWF0OworICAgIH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPHAgaWQ9
ImluZm9ybWF0aXZlLXRleHQiPgorICAgICAgVGhpcyB0ZXN0IHJlcXVpcmVzIHRoZSBBaGVtIGZv
bnQuIEl0IHVzZXMgYSAzMngzMiBQTkcgaW1hZ2Ugd2l0aCBhIDI0eDI0IHJlZCBzcXVhcmUgaW4g
dGhlIGNlbnRlcgorICAgICAgdG8gZGVmaW5lIGEgc2hhcGUtaW5zaWRlLiBUaGUgY29udGVudCBz
aG91bGQganVzdCBjb3ZlciB0aGUgc2hhcGUgd2l0aCBzb2xpZCBncmVlbi48L3A+CisKKyAgPGRp
diBpZD0iaW1hZ2Utc2hhcGUiPlhYPGJyLz5YWDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zaGFwZXMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lk
ZS1pbWFnZS0wMDEuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc2hhcGVzL3NoYXBlLWluc2lkZS9z
aGFwZS1pbnNpZGUtaW1hZ2UtMDAxLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uNDZlYzdiMTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3NoYXBl
cy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAwMS5odG1sCkBAIC0wLDAgKzEsMjUg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KKyAgICAjaW1hZ2Ut
c2hhcGUgeworICAgICAgICBib3JkZXI6IHNvbGlkIGJsYWNrIDFweDsKKyAgICAgICAgZm9udDog
MTJweC8xIEFoZW0sIHNhbnMtc2VyaWY7CisgICAgICAgIGNvbG9yOiBncmVlbjsKKyAgICAgICAg
d2lkdGg6IDMycHg7CisgICAgICAgIGhlaWdodDogMzJweDsKKyAgICAgICAgLXdlYmtpdC1zaGFw
ZS1pbnNpZGU6IHVybCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhF
VWdBQUFDQUFBQUFnQ0FZQUFBQnplbnIwQUFBQVNrbEVRVlJZQ2UzWElRNEFNQWhEMFhYaC9sZnVN
a2VDSmpVZmhTdDVZSkR0azZ5YkRQL1pERkJqQmRMdVVkanFtYXdBQVFRUVFBQUJCQkJBQUFFRTRn
TGlOK3hmU3FLUDM4QUR1UU1KTzZMTmJyNEFBQUFBU1VWT1JLNUNZSUk9Iik7CisgICAgICAgIC13
ZWJraXQtc2hhcGUtaW1hZ2UtdGhyZXNob2xkOiAwOworICAgICAgICBiYWNrZ3JvdW5kLWltYWdl
OiB1cmwoImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FB
QUFBZ0NBWUFBQUJ6ZW5yMEFBQUFTa2xFUVZSWUNlM1hJUTRBTUFoRDBYWGgvbGZ1TWtlQ0pqVWZo
U3Q1WUpEdGs2eWJEUC9aREZCakJkTHVVZGpxbWF3QUFRUVFRQUFCQkJCQUFBRUU0Z0xpTit4ZlNx
S1AzOEFEdVFNSk82TE5icjRBQUFBQVNVVk9SSzVDWUlJPSIpOworICAgICAgICBiYWNrZ3JvdW5k
LXJlcGVhdDogbm8tcmVwZWF0OworICAgIH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAg
PHAgaWQ9ImluZm9ybWF0aXZlLXRleHQiPgorICAgICAgVGhpcyB0ZXN0IHJlcXVpcmVzIHRoZSBB
aGVtIGZvbnQuIEl0IHVzZXMgYSAzMngzMiBQTkcgaW1hZ2Ugd2l0aCBhIDI0eDI0IHJlZCBzcXVh
cmUgaW4gdGhlIGNlbnRlcgorICAgICAgdG8gZGVmaW5lIGEgc2hhcGUtaW5zaWRlLiBUaGUgY29u
dGVudCBzaG91bGQganVzdCBjb3ZlciB0aGUgc2hhcGUgd2l0aCBzb2xpZCBncmVlbi48L3A+CisK
KyAgPGRpdiBpZD0iaW1hZ2Utc2hhcGUiPlhYIFhYPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NoYXBlcy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5z
aWRlLWltYWdlLTAwMi1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zaGFwZXMvc2hh
cGUtaW5zaWRlL3NoYXBlLWluc2lkZS1pbWFnZS0wMDItZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YTUzZmU4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9zaGFwZXMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1pbWFnZS0wMDIt
ZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDIxIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8c3R5bGU+CisgICAgI2ltYWdlLXNoYXBlIHsKKyAgICAgICAgZm9udDogMTJweC8x
IEFoZW0sIHNhbnMtc2VyaWY7CisgICAgICAgIGNvbG9yOiBncmVlbjsKKyAgICAgICAgd2lkdGg6
IDI0cHg7CisgICAgICAgIGhlaWdodDogMjRweDsKKyAgICAgICAgYmFja2dyb3VuZC1pbWFnZTog
dXJsKCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUNBQUFB
QWdDQVlBQUFCemVucjBBQUFBUkVsRVFWUllDZTNYc1EwQUlBZ0VRSEgvblY4bjBBcHRqdENSRUhJ
MFVCbGpaMk1rZGVvK1Q4VVhOUU1RSUVDQUFBRUNCQWdRSUZCSjcxdHdPKzJ0Z0FDQjd3SUxvSThI
T2FPbXpGc0FBQUFBU1VWT1JLNUNZSUk9Iik7CisgICAgICAgIGJhY2tncm91bmQtcmVwZWF0OiBu
by1yZXBlYXQ7CisgICAgfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICA8cCBpZD0iaW5m
b3JtYXRpdmUtdGV4dCI+CisgICAgICBUaGlzIHRlc3QgcmVxdWlyZXMgdGhlIEFoZW0gZm9udC4g
SXQgdXNlcyBhIDI0eDI0IHNxdWFyZSBQTkcgaW1hZ2Ugd2hlcmUgYWxsIHBpeGVscyBhcmUgcmVk
LAorICAgICAgdG8gZGVmaW5lIGEgc2hhcGUtaW5zaWRlLiBUaGUgY29udGVudCBzaG91bGQganVz
dCBjb3ZlciB0aGUgc2hhcGUgd2l0aCBzb2xpZCBncmVlbi48L3A+CisgIDxkaXYgaWQ9ImltYWdl
LXNoYXBlIj5YWDxici8+WFg8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3Qvc2hhcGVzL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtaW1hZ2UtMDAy
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3NoYXBlcy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRl
LWltYWdlLTAwMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3OTg0
ZTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3NoYXBlcy9zaGFwZS1pbnNp
ZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAwMi5odG1sCkBAIC0wLDAgKzEsMjQgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KKyAgICAjaW1hZ2Utc2hhcGUgeworICAg
ICAgICBmb250OiAxMnB4LzEgQWhlbSwgc2Fucy1zZXJpZjsKKyAgICAgICAgY29sb3I6IGdyZWVu
OworICAgICAgICB3aWR0aDogMjRweDsKKyAgICAgICAgaGVpZ2h0OiAyNHB4OworICAgICAgICAt
d2Via2l0LXNoYXBlLWluc2lkZTogdXJsKCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtH
Z29BQUFBTlNVaEVVZ0FBQUNBQUFBQWdDQVlBQUFCemVucjBBQUFBUkVsRVFWUllDZTNYc1EwQUlB
Z0VRSEgvblY4bjBBcHRqdENSRUhJMFVCbGpaMk1rZGVvK1Q4VVhOUU1RSUVDQUFBRUNCQWdRSUZC
SjcxdHdPKzJ0Z0FDQjd3SUxvSThIT2FPbXpGc0FBQUFBU1VWT1JLNUNZSUk9Iik7CisgICAgICAg
IC13ZWJraXQtc2hhcGUtaW1hZ2UtdGhyZXNob2xkOiAwOworICAgICAgICBiYWNrZ3JvdW5kLWlt
YWdlOiB1cmwoImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFB
Q0FBQUFBZ0NBWUFBQUJ6ZW5yMEFBQUFSRWxFUVZSWUNlM1hzUTBBSUFnRVFISC9uVjhuMEFwdGp0
Q1JFSEkwVUJsaloyTWtkZW8rVDhVWE5RTVFJRUNBQUFFQ0JBZ1FJRkJKNzF0d08rMnRnQUNCN3dJ
TG9JOEhPYU9tekZzQUFBQUFTVVZPUks1Q1lJST0iKTsKKyAgICAgICAgYmFja2dyb3VuZC1yZXBl
YXQ6IG5vLXJlcGVhdDsKKyAgICB9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgIDxwIGlk
PSJpbmZvcm1hdGl2ZS10ZXh0Ij4KKyAgICAgIFRoaXMgdGVzdCByZXF1aXJlcyB0aGUgQWhlbSBm
b250LiBJdCB1c2VzIGEgMjR4MjQgc3F1YXJlIFBORyBpbWFnZSB3aGVyZSBhbGwgcGl4ZWxzIGFy
ZSByZWQsCisgICAgICB0byBkZWZpbmUgYSBzaGFwZS1pbnNpZGUuIFRoZSBjb250ZW50IHNob3Vs
ZCBqdXN0IGNvdmVyIHRoZSBzaGFwZSB3aXRoIHNvbGlkIGdyZWVuLjwvcD4KKworICA8ZGl2IGlk
PSJpbWFnZS1zaGFwZSI+WFggWFg8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKaW5kZXggZGFkZTc2Zi4uMGZhNmNkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTIy
MjEsNiArMjIyMSw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICByZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTFVuZGVyT3Zlci5jcHAKIAogICAgIHJlbmRlcmluZy9zaGFwZXMvUG9seWdv
blNoYXBlLmNwcAorICAgIHJlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuY3BwCiAgICAgcmVu
ZGVyaW5nL3NoYXBlcy9SZWN0YW5nbGVTaGFwZS5jcHAKICAgICByZW5kZXJpbmcvc2hhcGVzL1No
YXBlLmNwcAogICAgIHJlbmRlcmluZy9zaGFwZXMvU2hhcGVJbmZvLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IGUyZjhmMzEuLjkyOTBjNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MCBAQAorMjAxMy0wNi0x
MCAgSGFucyBNdWxsZXIgIDxobXVsbGVyQGFkb2JlLmNvbT4KKworICAgICAgICBbQ1NTIEV4Y2x1
c2lvbnNdIE1pbmltYWwgc3VwcG9ydCBmb3IgdXNpbmcgYW4gaW1hZ2UgdG8gZGVmaW5lIGEgc2hh
cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNjY0
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
aXMgYSBmaXJzdCBzbWFsbCBzdGVwIHRvd2FyZHMgc3VwcG9ydGluZyBDU1Mgc2hhcGVzIGRlZmlu
ZWQgYnkgYW4KKyAgICAgICAgaW1hZ2UgVVJMIGFuZCBhIGFscGhhIGNoYW5uZWwgdGhyZXNob2xk
LiBUbyBrZWVwIHRoZSBwYXRjaCBhcyBzbWFsbCBhcworICAgICAgICBwb3NzaWJsZSwgdGhlcmUg
YXJlIG1hbnkgbGltaXRhdGlvbnMgYW5kIHJlbWFpbmluZyB3b3JrIGl0ZW1zLiBGb3IKKyAgICAg
ICAgZXhhbXBsZSBpbWFnZXMgYXJlIGN1cnJlbnRseSByZXN0cmljdGVkIHRvIHNhbWUtb3JpZ2lu
LCBhbHRob3VnaCBDT1JTCisgICAgICAgIHNob3VsZCBiZSBzdXBwb3J0ZWQuIFNlZSBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE2MzQ4CisgICAgICAgIGZvciB0aGUg
Y3VycmVudCBsaXN0LgorCisgICAgICAgIFRlc3Q6IGZhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNp
ZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAwMS5odG1sCisgICAgICAgIFRlc3Q6IGZhc3QvZXhjbHVz
aW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAwMi5odG1sCisKKyAgICAgICAg
KiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAg
ICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJv
ajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJs
b2NrOjppbWFnZUNoYW5nZWQpOiBXaGVuIHRoZSBpbWFnZSBoYXMgZmluaXNoZWQgbG9hZGluZywg
cmVxdWVzdCBhIGxheW91dC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlck9iamVjdDo6c2V0U3R5bGUpOiBBZGQgbm90aWZ5IGNsaWVudHMgZm9yIHNoYXBlIGltYWdl
cy4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6dXBkYXRlU2hhcGVJbWFnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpyZW1vdmVTaGFwZUltYWdlQ2xpZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlck9iamVjdDo6YXJlbmFEZWxldGUpOiBSZW1vdmUgbm90aWZ5IGNsaWVudHMgZm9y
IHNoYXBlIGltYWdlcy4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAg
ICAgICogcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5jcHA6IEFkZGVkLiBBIFNoYXBlIGRl
ZmluZWQgYnkgdGhyZXNob2xkaW5nIGFuIGltYWdlJ3MgYWxwaGEgY2hhbm5lbC4KKyAgICAgICAg
KFdlYkNvcmU6OlJhc3RlclNoYXBlSW50ZXJ2YWxzOjpib3VuZHMpOgorICAgICAgICAoV2ViQ29y
ZTo6UmFzdGVyU2hhcGVJbnRlcnZhbHM6OmFkZEludGVydmFsKTogQWRkIGEgc2luZ2xlIHJ1biB0
byB0aGUgc2hhcGUuCisgICAgICAgIChXZWJDb3JlOjphbGlnbmVkUmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSYXN0ZXJTaGFwZUludGVydmFsczo6Z2V0SW50ZXJ2YWxzKTogUmV0dXJuIHRoZSBz
aGFwZSdzIHJ1bnMgdGhhdCBmYWxsIHdpdGhpbiBhIGhvcml6b25hbCBib3guCisgICAgICAgIChX
ZWJDb3JlOjpSYXN0ZXJTaGFwZTo6bWFyZ2luSW50ZXJ2YWxzKTogSW50ZXJuYWwgcmVwcmVzZW50
YXRpb24gb2YgdGhlIHNoYXBlIHdpdGggc2hhcGUtbWFyZ2luIGZhY3RvcmVkIGluLiAgQ3VycmVu
dGx5IG9ubHkgYSBzdHViLgorICAgICAgICAoV2ViQ29yZTo6UmFzdGVyU2hhcGU6OnBhZGRpbmdJ
bnRlcnZhbHMpOiBJbnRlcm5hbCByZXByZXNlbnRhdGlvbiBvZiB0aGUgc2hhcGUgd2l0aCBzaGFw
ZS1wYWRkaW5nIGZhY3RvcmVkIGluLiAgQ3VycmVudGx5IG9ubHkgYSBzdHViLgorICAgICAgICAo
V2ViQ29yZTo6UmFzdGVyU2hhcGU6OmdldEV4Y2x1ZGVkSW50ZXJ2YWxzKToKKyAgICAgICAgKFdl
YkNvcmU6OlJhc3RlclNoYXBlOjpnZXRJbmNsdWRlZEludGVydmFscyk6CisgICAgICAgIChXZWJD
b3JlOjpSYXN0ZXJTaGFwZTo6Zmlyc3RJbmNsdWRlZEludGVydmFsTG9naWNhbFRvcCk6CisgICAg
ICAgICogcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5oOgorICAgICAgICAoV2ViQ29yZTo6
UmFzdGVyU2hhcGVJbnRlcnZhbHM6OlJhc3RlclNoYXBlSW50ZXJ2YWxzKTogSW50ZXJuYWwgcnVu
IGxlbmd0aCBlbmNvZGVkIHJlcHJlc2VudGF0aW9uIG9mIGEgUmFzdGVyU2hhcGUuCisgICAgICAg
IChXZWJDb3JlOjpSYXN0ZXJTaGFwZUludGVydmFsczo6aXNFbXB0eSk6CisgICAgICAgIChXZWJD
b3JlOjpSYXN0ZXJTaGFwZTo6UmFzdGVyU2hhcGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFw
ZXMvU2hhcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGU6OmNyZWF0ZVNoYXBlKTogU3Vw
cG9ydCBmb3IgY3JlYXRpbmcgYSBTaGFwZSBiYXNlZCBvbiBhIFJhc3RlclNoYXBlSW50ZXJ2YWxz
IG9iamVjdC4KKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmg6CisgICAgICAgICog
cmVuZGVyaW5nL3NoYXBlcy9TaGFwZUluZm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Ojpjb21w
dXRlZFNoYXBlKTogQWRkZWQgc3VwcG9ydCBmb3IgdGhlIEltYWdlIFNoYXBlVmFsdWUgdHlwZS4K
KyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW5zaWRlSW5mby5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTaGFwZUluc2lkZUluZm86OmlzRW5hYmxlZEZvcik6IEFkZGVkIHN1cHBvcnQg
Zm9yIHRoZSBJbWFnZSBTaGFwZVZhbHVlIHR5cGUuCisgICAgICAgICogcmVuZGVyaW5nL3NoYXBl
cy9TaGFwZU91dHNpZGVJbmZvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXBlT3V0c2lkZUlu
Zm86OmlzRW5hYmxlZEZvcik6IEFkZGVkIHN1cHBvcnQgZm9yIHRoZSBJbWFnZSBTaGFwZVZhbHVl
IHR5cGUuCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1NoYXBlVmFsdWUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXBlVmFsdWU6OmlzSW1hZ2VWYWxpZCk6IFRydWUgaWYgdGhlIHNoYXBlJ3Mg
aW1hZ2UgaXMgcmVhZHkgdG8gYmUgYmUgcHJvY2Vzc2VkLgorCiAyMDEzLTA4LTEzICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAKICAgICAgICAgQVg6IEhlYWRpbmdzIG5v
dCBsb25nZXIgaGF2ZSBhbiBBWFRpdGxlIGlmIHRoZXkgaGF2ZSBhIGxpbmsgYXMgdGhlIG9ubHkg
Y2hpbGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9T
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGZjN2E2MzIuLmQ1N2Y0YzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291
cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNDU5OCw2ICs0NTk4LDggQEAgd2Vi
Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTFVuZGVyT3Zlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Bv
bHlnb25TaGFwZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUG9seWdv
blNoYXBlLmggXAorCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUu
Y3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmggXAog
CVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmVjdGFuZ2xlU2hhcGUuY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1JlY3RhbmdsZVNoYXBlLmggXAogCVNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IGFk
MDFhNTEuLjYzNGRhMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysr
IGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtMTIzMiw2ICsxMjMyLDcgQEAgU09VUkNF
UyArPSBcCiAgICAgcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwIFwKICAgICByZW5kZXJpbmcv
U2Nyb2xsQmVoYXZpb3IuY3BwIFwKICAgICByZW5kZXJpbmcvc2hhcGVzL1BvbHlnb25TaGFwZS5j
cHAgXAorICAgIHJlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuY3BwIFwKICAgICByZW5kZXJp
bmcvc2hhcGVzL1JlY3RhbmdsZVNoYXBlLmNwcCBcCiAgICAgcmVuZGVyaW5nL3NoYXBlcy9TaGFw
ZS5jcHAgXAogICAgIHJlbmRlcmluZy9zaGFwZXMvU2hhcGVJbmZvLmNwcCBcCkBAIC0yNDkzLDYg
KzI0OTQsNyBAQCBIRUFERVJTICs9IFwKICAgICByZW5kZXJpbmcvUm9vdElubGluZUJveC5oIFwK
ICAgICByZW5kZXJpbmcvU2Nyb2xsQmVoYXZpb3IuaCBcCiAgICAgcmVuZGVyaW5nL3NoYXBlcy9Q
b2x5Z29uU2hhcGUuaCBcCisgICAgcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5oIFwKICAg
ICByZW5kZXJpbmcvc2hhcGVzL1JlY3RhbmdsZVNoYXBlLmggXAogICAgIHJlbmRlcmluZy9zaGFw
ZXMvU2hhcGUuaCBcCiAgICAgcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUluZm8uaCBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagppbmRleCA1YTQ4OGIw
Li44YmM1YTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2Vi
Q29yZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3Jl
LnZjeHByb2oKQEAgLTEwOTY0LDYgKzEwOTY0LDcgQEAKICAgICAgIDxFeGNsdWRlZEZyb21CdWls
ZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258
eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcc2hhcGVzXFBvbHlnb25TaGFwZS5jcHAiIC8+
CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcc2hhcGVzXFJhc3RlclNoYXBl
LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xzaGFwZXNcUmVj
dGFuZ2xlU2hhcGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5n
XHNoYXBlc1xTaGFwZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxyZW5kZXJp
bmdcc2hhcGVzXFNoYXBlSW5zaWRlSW5mby5jcHAiIC8+CkBAIC0xOTk3MCw2ICsxOTk3MSw3IEBA
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcUmVuZGVyU2xpZGVyLmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcUmVuZGVyU25hcHNob3R0ZWRQ
bHVnSW4uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xzaGFwZXNc
UG9seWdvblNoYXBlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdc
c2hhcGVzXFJhc3RlclNoYXBlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5k
ZXJpbmdcc2hhcGVzXFJlY3RhbmdsZVNoYXBlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxyZW5kZXJpbmdcc2hhcGVzXFNoYXBlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxyZW5kZXJpbmdcc2hhcGVzXFNoYXBlSW5zaWRlSW5mby5oIiAvPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGU3YzQ0NjM0
Li5lYmM1Y2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0xODI3LDYgKzE4MjcsOCBAQAogCQk2RTY3RDJBNjEyODBFOEE0MDA4
NzU4RjcgLyogRXh0ZW5zaW9uczNET3BlbkdMLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNjdEMkE0MTI4MEU4QTQwMDg3NThGNyAvKiBFeHRlbnNp
b25zM0RPcGVuR0wuY3BwICovOyB9OwogCQk2RTY3RDJBNzEyODBFOEE0MDA4NzU4RjcgLyogRXh0
ZW5zaW9uczNET3BlbkdMLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2RTY3RDJBNTEyODBFOEE0MDA4NzU4RjcgLyogRXh0ZW5zaW9uczNET3BlbkdMLmgg
Ki87IH07CiAJCTZFNjdEMkE5MTI4MEU4QkQwMDg3NThGNyAvKiBFeHRlbnNpb25zM0QuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFNjdEMkE4MTI4MEU4
QkQwMDg3NThGNyAvKiBFeHRlbnNpb25zM0QuaCAqLzsgfTsKKwkJNkU4NEU5RTAxNzY2OEJFRTAw
ODE1QjY4IC8qIFJhc3RlclNoYXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDZFODRFOURFMTc2NjhCQUQwMDgxNUI2OCAvKiBSYXN0ZXJTaGFwZS5j
cHAgKi87IH07CisJCTZFODRFOUUxMTc2NjhCRjEwMDgxNUI2OCAvKiBSYXN0ZXJTaGFwZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkU4NEU5REYxNzY2
OEJBRDAwODE1QjY4IC8qIFJhc3RlclNoYXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNkVCQzVFQUYxMzhCNTBGMjAwQTBDRjhBIC8qIEpTRmxv
YXQ2NEFycmF5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDZFQkM1RUFEMTM4QjUwRjIwMEEwQ0Y4QSAvKiBKU0Zsb2F0NjRBcnJheS5jcHAgKi87IH07
CiAJCTZFQkM1RUIwMTM4QjUwRjIwMEEwQ0Y4QSAvKiBKU0Zsb2F0NjRBcnJheS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkVCQzVFQUUxMzhCNTBGMjAw
QTBDRjhBIC8qIEpTRmxvYXQ2NEFycmF5LmggKi87IH07CiAJCTZFQkYwRTQ4MTJBODkyNjEwMERC
MTcwOSAvKiBPRVNUZXh0dXJlRmxvYXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNkVCRjBFNDUxMkE4OTI2MTAwREIxNzA5IC8qIE9FU1RleHR1cmVG
bG9hdC5jcHAgKi87IH07CkBAIC04MjM4LDYgKzgyNDAsOCBAQAogCQk2RTY3RDJBNDEyODBFOEE0
MDA4NzU4RjcgLyogRXh0ZW5zaW9uczNET3BlbkdMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEV4dGVuc2lvbnMzRE9wZW5HTC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTZFNjdEMkE1MTI4MEU4QTQwMDg3NThGNyAvKiBFeHRlbnNpb25zM0RPcGVu
R0wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXh0ZW5zaW9uczNET3BlbkdM
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFNjdEMkE4MTI4MEU4QkQwMDg3NThG
NyAvKiBFeHRlbnNpb25zM0QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXh0
ZW5zaW9uczNELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZFODRFOURFMTc2NjhC
QUQwMDgxNUI2OCAvKiBSYXN0ZXJTaGFwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBSYXN0ZXJTaGFwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTZFODRFOURGMTc2NjhCQUQwMDgxNUI2OCAvKiBSYXN0ZXJTaGFwZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSYXN0ZXJTaGFwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk2RUJDNUQ4MDEzOEI0QzRFMDBBMENGOEEgLyogRmxvYXQ2NEFycmF5LmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IG5hbWUgPSBGbG9hdDY0QXJyYXkuaWRsOyBwYXRoID0gY2FudmFzL0Zsb2F0
NjRBcnJheS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZFQkM1RUFEMTM4QjUw
RjIwMEEwQ0Y4QSAvKiBKU0Zsb2F0NjRBcnJheS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU0Zsb2F0NjRBcnJheS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTZFQkM1RUFFMTM4QjUwRjIwMEEwQ0Y4QSAvKiBKU0Zsb2F0NjRBcnJheS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0Zsb2F0NjRBcnJheS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMjA2MDksNiArMjA2MTMsOCBAQAogCQkJY2hpbGRyZW4gPSAo
CiAJCQkJRkQwOEE4N0ExNzVEMzkyNjAwMkNEMzYwIC8qIFBvbHlnb25TaGFwZS5jcHAgKi8sCiAJ
CQkJRkQwOEE4N0IxNzVEMzkyNjAwMkNEMzYwIC8qIFBvbHlnb25TaGFwZS5oICovLAorCQkJCTZF
ODRFOURFMTc2NjhCQUQwMDgxNUI2OCAvKiBSYXN0ZXJTaGFwZS5jcHAgKi8sCisJCQkJNkU4NEU5
REYxNzY2OEJBRDAwODE1QjY4IC8qIFJhc3RlclNoYXBlLmggKi8sCiAJCQkJRkQwOEE4N0MxNzVE
MzkyNjAwMkNEMzYwIC8qIFJlY3RhbmdsZVNoYXBlLmNwcCAqLywKIAkJCQlGRDA4QTg3RDE3NUQz
OTI2MDAyQ0QzNjAgLyogUmVjdGFuZ2xlU2hhcGUuaCAqLywKIAkJCQlGRDA4QTg3RTE3NUQzOTI2
MDAyQ0QzNjAgLyogU2hhcGUuY3BwICovLApAQCAtMjA5MzMsNiArMjA5MzksNyBAQAogCQkJZmls
ZXMgPSAoCiAJCQkJRkUxMTVGQUIxNjc5ODhDRDAwMjQ5MTM0IC8qIEFic3RyYWN0RGF0YWJhc2VT
ZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFNEFBREVFMTZEMkMzNzQwMDAyNkZGQyAvKiBB
YnN0cmFjdFNRTFN0YXRlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkU4NEU5RTExNzY2OEJG
MTAwODE1QjY4IC8qIFJhc3RlclNoYXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTRBQURFRjE2
RDJDMzc0MDAwMjZGRkMgLyogQWJzdHJhY3RTUUxTdGF0ZW1lbnRCYWNrZW5kLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0MUUxQjFEMTBGRjU5ODY5MDA1NzZCM0IgLyogQWJzdHJhY3RXb3JrZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTI5QTgxMjJFMEZCQjlDMUQwMDUxMDI5MyAvKiBBY2Nlc3NpYmls
aXR5QVJJQUdyaWRDZWxsLmggaW4gSGVhZGVycyAqLywKQEAgLTI3MDQzLDYgKzI3MDUwLDcgQEAK
IAkJCQlGRDUzNzM1MjEzN0I2NTE4MDAwMDhEQ0UgLyogWmVyb1BvbGUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRkQxNzYyREYxNzY2ODZEOTAwRDgzNkE4IC8qIFVwU2FtcGxlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlGRDE3NjJFMzE3NjY4NkVBMDBEODM2QTggLyogRG93blNhbXBsZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJNkU4NEU5RTAxNzY2OEJFRTAwODE1QjY4IC8qIFJhc3RlclNo
YXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
ay5jcHAKaW5kZXggNGE3YjkyZS4uNDNhYWJkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2suY3BwCkBAIC0xNDM2LDYgKzE0MzYsMjEgQEAgdm9pZCBSZW5kZXJCbG9jazo6
bGF5b3V0KCkKIH0KIAogI2lmIEVOQUJMRShDU1NfU0hBUEVTKQordm9pZCBSZW5kZXJCbG9jazo6
aW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciBpbWFnZSwgY29uc3QgSW50UmVjdCopCit7Cisg
ICAgUmVuZGVyQm94OjppbWFnZUNoYW5nZWQoaW1hZ2UpOworCisgICAgaWYgKCFwYXJlbnQoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgU2hhcGVWYWx1ZSogc2hhcGVWYWx1ZSA9IHN0eWxlKCkt
PnNoYXBlSW5zaWRlKCk7CisgICAgaWYgKHNoYXBlVmFsdWUgJiYgc2hhcGVWYWx1ZS0+aW1hZ2Uo
KSAmJiBzaGFwZVZhbHVlLT5pbWFnZSgpLT5kYXRhKCkgPT0gaW1hZ2UpIHsKKyAgICAgICAgU2hh
cGVJbnNpZGVJbmZvKiBzaGFwZUluc2lkZUluZm8gPSBlbnN1cmVTaGFwZUluc2lkZUluZm8oKTsK
KyAgICAgICAgc2hhcGVJbnNpZGVJbmZvLT5kaXJ0eVNoYXBlU2l6ZSgpOworICAgICAgICBtYXJr
U2hhcGVJbnNpZGVEZXNjZW5kYW50c0ZvckxheW91dCgpOworICAgIH0KK30KKwogdm9pZCBSZW5k
ZXJCbG9jazo6dXBkYXRlU2hhcGVJbnNpZGVJbmZvQWZ0ZXJTdHlsZUNoYW5nZShjb25zdCBTaGFw
ZVZhbHVlKiBzaGFwZUluc2lkZSwgY29uc3QgU2hhcGVWYWx1ZSogb2xkU2hhcGVJbnNpZGUpCiB7
CiAgICAgLy8gRklYTUU6IEEgZnV0dXJlIG9wdGltaXphdGlvbiB3b3VsZCBkbyBhIGRlZXAgY29t
cGFyaXNvbiBmb3IgZXF1YWxpdHkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5o
CmluZGV4IGM5NjRiZWQuLjRjYWY0NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9jay5oCkBAIC00NzAsNiArNDcwLDcgQEAgcHVibGljOgogICAgIHZvaWQgbWFya1NoYXBlSW5z
aWRlRGVzY2VuZGFudHNGb3JMYXlvdXQoKTsKICAgICBTaGFwZUluc2lkZUluZm8qIGxheW91dFNo
YXBlSW5zaWRlSW5mbygpIGNvbnN0OwogICAgIGJvb2wgYWxsb3dzU2hhcGVJbnNpZGVJbmZvU2hh
cmluZygpIGNvbnN0IHsgcmV0dXJuICFpc0lubGluZSgpICYmICFpc0Zsb2F0aW5nKCk7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgaW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciwgY29uc3QgSW50UmVj
dCogPSAwKSBPVkVSUklERTsKICNlbmRpZgogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IDk4MTkxNzUuLjE3MmVlN2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC0xODUwLDYgKzE4NTAsMTAg
QEAgdm9pZCBSZW5kZXJPYmplY3Q6OnNldFN0eWxlKFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IHN0
eWxlKQogICAgIHVwZGF0ZUltYWdlKG9sZFN0eWxlID8gb2xkU3R5bGUtPmJvcmRlckltYWdlKCku
aW1hZ2UoKSA6IDAsIG1fc3R5bGUgPyBtX3N0eWxlLT5ib3JkZXJJbWFnZSgpLmltYWdlKCkgOiAw
KTsKICAgICB1cGRhdGVJbWFnZShvbGRTdHlsZSA/IG9sZFN0eWxlLT5tYXNrQm94SW1hZ2UoKS5p
bWFnZSgpIDogMCwgbV9zdHlsZSA/IG1fc3R5bGUtPm1hc2tCb3hJbWFnZSgpLmltYWdlKCkgOiAw
KTsKIAorI2lmIEVOQUJMRShDU1NfU0hBUEVTKQorICAgIHVwZGF0ZVNoYXBlSW1hZ2Uob2xkU3R5
bGUgPyBvbGRTdHlsZS0+c2hhcGVJbnNpZGUoKSA6IDAsIG1fc3R5bGUgPyBtX3N0eWxlLT5zaGFw
ZUluc2lkZSgpIDogMCk7CisjZW5kaWYKKwogICAgIC8vIFdlIG5lZWQgdG8gZW5zdXJlIHRoYXQg
dmlldy0+bWF4aW1hbE91dGxpbmVTaXplKCkgaXMgdmFsaWQgZm9yIGFueSByZXBhaW50cyB0aGF0
IGhhcHBlbgogICAgIC8vIGR1cmluZyBzdHlsZURpZENoYW5nZSAoaXQncyB1c2VkIGJ5IGNsaXBw
ZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KCkpLgogICAgIGlmIChtX3N0eWxlLT5vdXRsaW5lV2lk
dGgoKSA+IDAgJiYgbV9zdHlsZS0+b3V0bGluZVNpemUoKSA+IG1heGltYWxPdXRsaW5lU2l6ZShQ
YWludFBoYXNlT3V0bGluZSkpCkBAIC0yMTAyLDYgKzIxMDYsMTQgQEAgdm9pZCBSZW5kZXJPYmpl
Y3Q6OnVwZGF0ZUltYWdlKFN0eWxlSW1hZ2UqIG9sZEltYWdlLCBTdHlsZUltYWdlKiBuZXdJbWFn
ZSkKICAgICB9CiB9CiAKKyNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKK3ZvaWQgUmVuZGVyT2JqZWN0
Ojp1cGRhdGVTaGFwZUltYWdlKGNvbnN0IFNoYXBlVmFsdWUqIG9sZFNoYXBlVmFsdWUsIGNvbnN0
IFNoYXBlVmFsdWUqIG5ld1NoYXBlVmFsdWUpCit7CisgICAgaWYgKG9sZFNoYXBlVmFsdWUgfHwg
bmV3U2hhcGVWYWx1ZSkKKyAgICAgICAgdXBkYXRlSW1hZ2Uob2xkU2hhcGVWYWx1ZSA/IG9sZFNo
YXBlVmFsdWUtPmltYWdlKCkgOiAwLCBuZXdTaGFwZVZhbHVlID8gbmV3U2hhcGVWYWx1ZS0+aW1h
Z2UoKSA6IDApOworfQorI2VuZGlmCisKIExheW91dFJlY3QgUmVuZGVyT2JqZWN0Ojp2aWV3UmVj
dCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHZpZXcoKS0+dmlld1JlY3QoKTsKQEAgLTI2MjAsNiAr
MjYzMiwxNiBAQCB2b2lkIFJlbmRlck9iamVjdDo6ZGVzdHJveSgpCiAgICAgYXJlbmFEZWxldGUo
cmVuZGVyQXJlbmEoKSwgdGhpcyk7CiB9CiAKKyNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKK3ZvaWQg
UmVuZGVyT2JqZWN0OjpyZW1vdmVTaGFwZUltYWdlQ2xpZW50KFNoYXBlVmFsdWUqIHNoYXBlVmFs
dWUpCit7CisgICAgaWYgKCFzaGFwZVZhbHVlKQorICAgICAgICByZXR1cm47CisgICAgaWYgKFN0
eWxlSW1hZ2UqIHNoYXBlSW1hZ2UgPSBzaGFwZVZhbHVlLT5pbWFnZSgpKQorICAgICAgICBzaGFw
ZUltYWdlLT5yZW1vdmVDbGllbnQodGhpcyk7Cit9CisjZW5kaWYKKwogdm9pZCBSZW5kZXJPYmpl
Y3Q6OmFyZW5hRGVsZXRlKFJlbmRlckFyZW5hKiBhcmVuYSwgdm9pZCogYmFzZSkKIHsKICAgICBp
ZiAobV9zdHlsZSkgewpAQCAtMjYzOCw2ICsyNjYwLDEwIEBAIHZvaWQgUmVuZGVyT2JqZWN0Ojph
cmVuYURlbGV0ZShSZW5kZXJBcmVuYSogYXJlbmEsIHZvaWQqIGJhc2UpCiAKICAgICAgICAgaWYg
KFN0eWxlSW1hZ2UqIG1hc2tCb3hJbWFnZSA9IG1fc3R5bGUtPm1hc2tCb3hJbWFnZSgpLmltYWdl
KCkpCiAgICAgICAgICAgICBtYXNrQm94SW1hZ2UtPnJlbW92ZUNsaWVudCh0aGlzKTsKKworI2lm
IEVOQUJMRShDU1NfU0hBUEVTKQorICAgICAgICByZW1vdmVTaGFwZUltYWdlQ2xpZW50KG1fc3R5
bGUtPnNoYXBlSW5zaWRlKCkpOworI2VuZGlmCiAgICAgfQogCiAjaWZuZGVmIE5ERUJVRwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCmluZGV4IDNhMTM1MGEuLmVlZDAzZGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKQEAgLTY5NCw2ICs2OTQs
OSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHVwZGF0ZUZpbGxJbWFnZXMoY29uc3QgRmlsbExheWVy
KiwgY29uc3QgRmlsbExheWVyKik7CiAgICAgdm9pZCB1cGRhdGVJbWFnZShTdHlsZUltYWdlKiwg
U3R5bGVJbWFnZSopOworI2lmIEVOQUJMRShDU1NfU0hBUEVTKQorICAgIHZvaWQgdXBkYXRlU2hh
cGVJbWFnZShjb25zdCBTaGFwZVZhbHVlKiwgY29uc3QgU2hhcGVWYWx1ZSopOworI2VuZGlmCiAK
ICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsK
IApAQCAtMTAyNiw2ICsxMDI5LDEwIEBAIHByaXZhdGU6CiAKICAgICBDb2xvciBzZWxlY3Rpb25D
b2xvcihpbnQgY29sb3JQcm9wZXJ0eSkgY29uc3Q7CiAKKyNpZiBFTkFCTEUoQ1NTX1NIQVBFUykK
KyAgICB2b2lkIHJlbW92ZVNoYXBlSW1hZ2VDbGllbnQoU2hhcGVWYWx1ZSopOworI2VuZGlmCisK
ICNpZm5kZWYgTkRFQlVHCiAgICAgdm9pZCBjaGVja0Jsb2NrUG9zaXRpb25lZE9iamVjdHNOZWVk
TGF5b3V0KCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
aGFwZXMvUmFzdGVyU2hhcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9S
YXN0ZXJTaGFwZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODZhZTI1
MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmFz
dGVyU2hhcGUuY3BwCkBAIC0wLDAgKzEsMTUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEz
IEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKKyAqICAgIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisg
KiAgICBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscworICogICAgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MKKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFCisgKiBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsCisgKiBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorICog
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCisgKiBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VECisgKiBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIlJhc3RlclNoYXBlLmgiCisKKyNpbmNsdWRlICJTaGFwZUludGVydmFsLmgi
CisjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitJ
bnRSZWN0IFJhc3RlclNoYXBlSW50ZXJ2YWxzOjpib3VuZHMoKSBjb25zdAoreworICAgIGlmICgh
bV9ib3VuZHMpCisgICAgICAgIG1fYm91bmRzID0gYWRvcHRQdHIobmV3IEludFJlY3QobV9yZWdp
b24uYm91bmRzKCkpKTsKKyAgICByZXR1cm4gKm1fYm91bmRzOworfQorCit2b2lkIFJhc3RlclNo
YXBlSW50ZXJ2YWxzOjphZGRJbnRlcnZhbChpbnQgeSwgaW50IHgxLCBpbnQgeDIpCit7CisgICAg
bV9yZWdpb24udW5pdGUoUmVnaW9uKEludFJlY3QoeDEsIHksIHgyIC0geDEsIDEpKSk7CisgICAg
bV9ib3VuZHMuY2xlYXIoKTsKK30KKworc3RhdGljIGlubGluZSBJbnRSZWN0IGFsaWduZWRSZWN0
KEludFJlY3QgciwgaW50IHkxLCBpbnQgeTIpCit7CisgICAgcmV0dXJuIEludFJlY3Qoci54KCks
IHkxLCByLndpZHRoKCksIHkyIC0geTEpOworfQorCit2b2lkIFJhc3RlclNoYXBlSW50ZXJ2YWxz
OjpnZXRJbmNsdWRlZEludGVydmFscyhpbnQgeTEsIGludCB5MiwgU2VnbWVudExpc3QmIHJlc3Vs
dCkgY29uc3QKK3sKKyAgICBBU1NFUlQoeTIgPj0geTEpOworCisgICAgSW50UmVjdCBsaW5lUmVj
dChib3VuZHMoKS54KCksIHkxLCBib3VuZHMoKS53aWR0aCgpLCB5MiAtIHkxKTsKKyAgICBSZWdp
b24gbGluZVJlZ2lvbihsaW5lUmVjdCk7CisgICAgbGluZVJlZ2lvbi5pbnRlcnNlY3QobV9yZWdp
b24pOworICAgIGlmIChsaW5lUmVnaW9uLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgVmVjdG9yPEludFJlY3Q+IGxpbmVSZWN0cyA9IGxpbmVSZWdpb24ucmVjdHMoKTsKKyAgICBB
U1NFUlQobGluZVJlY3RzLnNpemUoKSA+IDApOworCisgICAgUmVnaW9uIHNlZ21lbnRzUmVnaW9u
KGxpbmVSZWN0KTsKKyAgICBSZWdpb24gaW50ZXJ2YWxzUmVnaW9uOworCisgICAgLy8gVGhlIGxv
b3AgYmVsb3cgdXNlcyBSZWdpb25zIHRvIGNvbXB1dGUgdGhlIGludGVyc2VjdGlvbiBvZiB0aGUg
aG9yaXpvbnRhbAorICAgIC8vIHNoYXBlIGludGVydmFscyB0aGF0IGZhbGwgd2l0aGluIHRoZSBs
aW5lJ3MgYm94LgorICAgIGludCBsaW5lWSA9IGxpbmVSZWN0c1swXS55KCk7CisgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGxpbmVSZWN0cy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAo
bGluZVJlY3RzW2ldLnkoKSAhPSBsaW5lWSkgeworICAgICAgICAgICAgc2VnbWVudHNSZWdpb24u
aW50ZXJzZWN0KGludGVydmFsc1JlZ2lvbik7CisgICAgICAgICAgICBpbnRlcnZhbHNSZWdpb24g
PSBSZWdpb24oKTsKKyAgICAgICAgfQorICAgICAgICBpbnRlcnZhbHNSZWdpb24udW5pdGUoUmVn
aW9uKGFsaWduZWRSZWN0KGxpbmVSZWN0c1tpXSwgeTEsIHkyKSkpOworICAgICAgICBsaW5lWSA9
IGxpbmVSZWN0c1tpXS55KCk7CisgICAgfQorICAgIGlmICghaW50ZXJ2YWxzUmVnaW9uLmlzRW1w
dHkoKSkKKyAgICAgICAgc2VnbWVudHNSZWdpb24uaW50ZXJzZWN0KGludGVydmFsc1JlZ2lvbik7
CisKKyAgICBWZWN0b3I8SW50UmVjdD4gc2VnbWVudFJlY3RzID0gc2VnbWVudHNSZWdpb24ucmVj
dHMoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2VnbWVudFJlY3RzLnNpemUoKTsg
KytpKQorICAgICAgICByZXN1bHQuYXBwZW5kKExpbmVTZWdtZW50KHNlZ21lbnRSZWN0c1tpXS54
KCksIHNlZ21lbnRSZWN0c1tpXS5tYXhYKCkpKTsKK30KKworY29uc3QgUmFzdGVyU2hhcGVJbnRl
cnZhbHMmIFJhc3RlclNoYXBlOjptYXJnaW5JbnRlcnZhbHMoKSBjb25zdAoreworICAgIEFTU0VS
VChzaGFwZU1hcmdpbigpID49IDApOworICAgIGlmICghc2hhcGVNYXJnaW4oKSkKKyAgICAgICAg
cmV0dXJuICptX2ludGVydmFsczsKKworICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3Igbm9u
LXplcm8gbWFyZ2luLCBzZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTExNjM0OC4KKyAgICByZXR1cm4gKm1faW50ZXJ2YWxzOworfQorCitjb25zdCBSYXN0ZXJTaGFw
ZUludGVydmFscyYgUmFzdGVyU2hhcGU6OnBhZGRpbmdJbnRlcnZhbHMoKSBjb25zdAoreworICAg
IEFTU0VSVChzaGFwZVBhZGRpbmcoKSA+PSAwKTsKKyAgICBpZiAoIXNoYXBlUGFkZGluZygpKQor
ICAgICAgICByZXR1cm4gKm1faW50ZXJ2YWxzOworCisgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0
IGZvciBub24temVybyBwYWRkaW5nLCBzZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTExNjM0OC4KKyAgICByZXR1cm4gKm1faW50ZXJ2YWxzOworfQorCit2b2lkIFJh
c3RlclNoYXBlOjpnZXRFeGNsdWRlZEludGVydmFscyhMYXlvdXRVbml0LCBMYXlvdXRVbml0LCBT
ZWdtZW50TGlzdCYpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IHRoaXMgbWV0aG9kIGlzIG9ubHkg
YSBzdHViLCBzZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExOTgw
OS4KK30KKwordm9pZCBSYXN0ZXJTaGFwZTo6Z2V0SW5jbHVkZWRJbnRlcnZhbHMoTGF5b3V0VW5p
dCBsb2dpY2FsVG9wLCBMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIFNlZ21lbnRMaXN0JiByZXN1
bHQpIGNvbnN0Cit7CisgICAgY29uc3QgUmFzdGVyU2hhcGVJbnRlcnZhbHMmIGludGVydmFscyA9
IHBhZGRpbmdJbnRlcnZhbHMoKTsKKyAgICBpZiAoaW50ZXJ2YWxzLmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgZmxvYXQgeTEgPSBsb2dpY2FsVG9wOworICAgIGZsb2F0IHkyID0g
bG9naWNhbFRvcCArIGxvZ2ljYWxIZWlnaHQ7CisKKyAgICBpZiAoeTEgPCBpbnRlcnZhbHMuYm91
bmRzKCkueSgpIHx8IHkyID4gaW50ZXJ2YWxzLmJvdW5kcygpLm1heFkoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgaW50ZXJ2YWxzLmdldEluY2x1ZGVkSW50ZXJ2YWxzKHkxLCB5MiwgcmVzdWx0
KTsKK30KKworYm9vbCBSYXN0ZXJTaGFwZTo6Zmlyc3RJbmNsdWRlZEludGVydmFsTG9naWNhbFRv
cChMYXlvdXRVbml0IG1pbkxvZ2ljYWxJbnRlcnZhbFRvcCwgY29uc3QgTGF5b3V0U2l6ZSYgbWlu
TG9naWNhbEludGVydmFsU2l6ZSwgTGF5b3V0VW5pdCYgcmVzdWx0KSBjb25zdAoreworICAgIGZs
b2F0IG1pbkludGVydmFsVG9wID0gbWluTG9naWNhbEludGVydmFsVG9wOworICAgIGZsb2F0IG1p
bkludGVydmFsSGVpZ2h0ID0gbWluTG9naWNhbEludGVydmFsU2l6ZS5oZWlnaHQoKTsKKyAgICBm
bG9hdCBtaW5JbnRlcnZhbFdpZHRoID0gbWluTG9naWNhbEludGVydmFsU2l6ZS53aWR0aCgpOwor
CisgICAgY29uc3QgUmFzdGVyU2hhcGVJbnRlcnZhbHMmIGludGVydmFscyA9IHBhZGRpbmdJbnRl
cnZhbHMoKTsKKyAgICBpZiAoaW50ZXJ2YWxzLmlzRW1wdHkoKSB8fCBtaW5JbnRlcnZhbFdpZHRo
ID4gaW50ZXJ2YWxzLmJvdW5kcygpLndpZHRoKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGZsb2F0IG1pblkgPSBzdGQ6Om1heDxmbG9hdD4oaW50ZXJ2YWxzLmJvdW5kcygpLnkoKSwg
bWluSW50ZXJ2YWxUb3ApOworICAgIGZsb2F0IG1heFkgPSBtaW5ZICsgbWluSW50ZXJ2YWxIZWln
aHQ7CisKKyAgICBpZiAobWF4WSA+IGludGVydmFscy5ib3VuZHMoKS5tYXhZKCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIC8vIEZJWE1FOiBDb21wbGV0ZSB0aGlzIG1ldGhvZCwgc2Vl
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTYzNDguCisgICAgcmVz
dWx0ID0gbWluWTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFw
ZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEzMDVkNDMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmgKQEAgLTAsMCAr
MSw4MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBZG9iZSBTeXN0ZW1zIEluY29ycG9y
YXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMKKyAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
IAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTCisgKiBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorICog
Q09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LAorICogSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LAorICogU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRAorICogT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgUmFzdGVyU2hhcGVfaAorI2RlZmluZSBSYXN0ZXJTaGFw
ZV9oCisKKyNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJSZWdpb24uaCIKKyNpbmNs
dWRlICJTaGFwZS5oIgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJhc3RlclNoYXBlSW50
ZXJ2YWxzIHsKK3B1YmxpYzoKKyAgICBSYXN0ZXJTaGFwZUludGVydmFscygpIHsgfQorCisgICAg
SW50UmVjdCBib3VuZHMoKSBjb25zdDsKKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCAgeyByZXR1
cm4gbV9yZWdpb24uaXNFbXB0eSgpOyB9CisgICAgdm9pZCBhZGRJbnRlcnZhbChpbnQgeSwgaW50
IHgxLCBpbnQgeDIpOworICAgIHZvaWQgZ2V0SW5jbHVkZWRJbnRlcnZhbHMoaW50IHkxLCBpbnQg
eTIsIFNlZ21lbnRMaXN0JikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgUmVnaW9uIG1fcmVnaW9u
OworICAgIG11dGFibGUgT3duUHRyPEludFJlY3Q+IG1fYm91bmRzOyAvLyBDYWNoZWQgdmFsdWUg
b2YgbV9yZWdpb24uYm91bmRzKCkuCit9OworCitjbGFzcyBSYXN0ZXJTaGFwZSA6IHB1YmxpYyBT
aGFwZSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmFzdGVyU2hhcGUpOworcHVibGljOgor
ICAgIFJhc3RlclNoYXBlKFBhc3NPd25QdHI8UmFzdGVyU2hhcGVJbnRlcnZhbHM+IGludGVydmFs
cykKKyAgICAgICAgOiBTaGFwZSgpCisgICAgICAgICwgbV9pbnRlcnZhbHMoaW50ZXJ2YWxzKQor
ICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIExheW91dFJlY3Qgc2hhcGVNYXJnaW5Mb2dpY2Fs
Qm91bmRpbmdCb3goKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBzdGF0aWNfY2FzdDxMYXlvdXRS
ZWN0PihtYXJnaW5JbnRlcnZhbHMoKS5ib3VuZHMoKSk7IH0KKyAgICB2aXJ0dWFsIExheW91dFJl
Y3Qgc2hhcGVQYWRkaW5nTG9naWNhbEJvdW5kaW5nQm94KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8TGF5b3V0UmVjdD4ocGFkZGluZ0ludGVydmFscygpLmJvdW5kcygpKTsg
fQorICAgIHZpcnR1YWwgYm9vbCBpc0VtcHR5KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9p
bnRlcnZhbHMtPmlzRW1wdHkoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBnZXRFeGNsdWRlZEludGVy
dmFscyhMYXlvdXRVbml0IGxvZ2ljYWxUb3AsIExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgU2Vn
bWVudExpc3QmKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0SW5jbHVkZWRJ
bnRlcnZhbHMoTGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQs
IFNlZ21lbnRMaXN0JikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGZpcnN0SW5j
bHVkZWRJbnRlcnZhbExvZ2ljYWxUb3AoTGF5b3V0VW5pdCBtaW5Mb2dpY2FsSW50ZXJ2YWxUb3As
IGNvbnN0IExheW91dFNpemUmIG1pbkxvZ2ljYWxJbnRlcnZhbFNpemUsIExheW91dFVuaXQmKSBj
b25zdCBPVkVSUklERTsKKworcHJpdmF0ZToKKyAgICBjb25zdCBSYXN0ZXJTaGFwZUludGVydmFs
cyYgbWFyZ2luSW50ZXJ2YWxzKCkgY29uc3Q7CisgICAgY29uc3QgUmFzdGVyU2hhcGVJbnRlcnZh
bHMmIHBhZGRpbmdJbnRlcnZhbHMoKSBjb25zdDsKKworICAgIE93blB0cjxSYXN0ZXJTaGFwZUlu
dGVydmFscz4gbV9pbnRlcnZhbHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBSYXN0ZXJTaGFwZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc2hhcGVzL1NoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hh
cGUuY3BwCmluZGV4IDgxMGFjNTUuLjJkMDU2OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zaGFwZXMvU2hhcGUuY3BwCkBAIC0zMSw5ICszMSwxMiBAQAogI2luY2x1ZGUgIlNoYXBlLmgi
CiAKICNpbmNsdWRlICJCYXNpY1NoYXBlRnVuY3Rpb25zLmgiCisjaW5jbHVkZSAiQ2FjaGVkSW1h
Z2UuaCIKICNpbmNsdWRlICJGbG9hdFNpemUuaCIKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgog
I2luY2x1ZGUgIkxlbmd0aEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIlBvbHlnb25TaGFwZS5oIgor
I2luY2x1ZGUgIlJhc3RlclNoYXBlLmgiCiAjaW5jbHVkZSAiUmVjdGFuZ2xlU2hhcGUuaCIKICNp
bmNsdWRlICJXaW5kUnVsZS5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CkBAIC0yMDAs
NCArMjAzLDQ2IEBAIFBhc3NPd25QdHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVTaGFwZShjb25zdCBC
YXNpY1NoYXBlKiBiYXNpY1NoYXBlLCBjb25zdCBMYXlvdXRTCiAgICAgcmV0dXJuIHNoYXBlLnJl
bGVhc2UoKTsKIH0KIAorUGFzc093blB0cjxTaGFwZT4gU2hhcGU6OmNyZWF0ZVNoYXBlKGNvbnN0
IFN0eWxlSW1hZ2UqIHN0eWxlSW1hZ2UsIGZsb2F0IHRocmVzaG9sZCwgY29uc3QgTGF5b3V0U2l6
ZSYsIFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBMZW5ndGggbWFyZ2luLCBMZW5ndGggcGFkZGlu
ZykKK3sKKyAgICBBU1NFUlQoc3R5bGVJbWFnZSAmJiBzdHlsZUltYWdlLT5pc0NhY2hlZEltYWdl
KCkgJiYgc3R5bGVJbWFnZS0+Y2FjaGVkSW1hZ2UoKSAmJiBzdHlsZUltYWdlLT5jYWNoZWRJbWFn
ZSgpLT5pbWFnZSgpKTsKKworICAgIE93blB0cjxSYXN0ZXJTaGFwZUludGVydmFscz4gaW50ZXJ2
YWxzID0gYWRvcHRQdHIobmV3IFJhc3RlclNoYXBlSW50ZXJ2YWxzKCkpOworCisgICAgSW1hZ2Uq
IGltYWdlID0gc3R5bGVJbWFnZS0+Y2FjaGVkSW1hZ2UoKS0+aW1hZ2UoKTsKKyAgICBjb25zdCBJ
bnRTaXplJiBpbWFnZVNpemUgPSBpbWFnZS0+c2l6ZSgpOworICAgIE93blB0cjxJbWFnZUJ1ZmZl
cj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGltYWdlU2l6ZSk7CisgICAgaWYg
KGltYWdlQnVmZmVyKSB7CisgICAgICAgIEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0
ID0gaW1hZ2VCdWZmZXItPmNvbnRleHQoKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3
SW1hZ2UoaW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIEludFBvaW50KCkpOworCisgICAgICAg
IFJlZlB0cjxVaW50OENsYW1wZWRBcnJheT4gcGl4ZWxBcnJheSA9IGltYWdlQnVmZmVyLT5nZXRV
bm11bHRpcGxpZWRJbWFnZURhdGEoSW50UmVjdChJbnRQb2ludCgpLCBpbWFnZVNpemUpKTsKKyAg
ICAgICAgdW5zaWduZWQgcGl4ZWxBcnJheUxlbmd0aCA9IHBpeGVsQXJyYXktPmxlbmd0aCgpOwor
ICAgICAgICB1bnNpZ25lZCBwaXhlbEFycmF5T2Zmc2V0ID0gMzsgLy8gRWFjaCBwaXhlbCBpcyBm
b3VyIGJ5dGVzOiBSR0JBLgorICAgICAgICB1aW50OF90IGFscGhhUGl4ZWxUaHJlc2hvbGQgPSB0
aHJlc2hvbGQgKiAyNTU7CisKKyAgICAgICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbWFn
ZVNpemUud2lkdGgoKSAqIGltYWdlU2l6ZS5oZWlnaHQoKSAqIDQpID09IHBpeGVsQXJyYXlMZW5n
dGgpIHsgIC8vIHNhbml0eSBjaGVjaworICAgICAgICAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBp
bWFnZVNpemUuaGVpZ2h0KCk7ICsreSkgeworICAgICAgICAgICAgICAgIGludCBzdGFydFggPSAt
MTsKKyAgICAgICAgICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IGltYWdlU2l6ZS53aWR0aCgp
OyArK3gsIHBpeGVsQXJyYXlPZmZzZXQgKz0gNCkgeworICAgICAgICAgICAgICAgICAgICB1aW50
OF90IGFscGhhID0gcGl4ZWxBcnJheS0+aXRlbShwaXhlbEFycmF5T2Zmc2V0KTsKKyAgICAgICAg
ICAgICAgICAgICAgYm9vbCBhbHBoYUFib3ZlVGhyZXNob2xkID0gYWxwaGEgPiBhbHBoYVBpeGVs
VGhyZXNob2xkOworICAgICAgICAgICAgICAgICAgICBpZiAoc3RhcnRYID09IC0xICYmIGFscGhh
QWJvdmVUaHJlc2hvbGQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0WCA9IHg7Cisg
ICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RhcnRYICE9IC0xICYmICghYWxwaGFBYm92
ZVRocmVzaG9sZCB8fCB4ID09IGltYWdlU2l6ZS53aWR0aCgpIC0gMSkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGludGVydmFscy0+YWRkSW50ZXJ2YWwoeSwgc3RhcnRYLCB4KTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHN0YXJ0WCA9IC0xOworICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAg
T3duUHRyPFJhc3RlclNoYXBlPiByYXN0ZXJTaGFwZSA9IGFkb3B0UHRyKG5ldyBSYXN0ZXJTaGFw
ZShpbnRlcnZhbHMucmVsZWFzZSgpKSk7CisgICAgcmFzdGVyU2hhcGUtPm1fd3JpdGluZ01vZGUg
PSB3cml0aW5nTW9kZTsKKyAgICByYXN0ZXJTaGFwZS0+bV9tYXJnaW4gPSBmbG9hdFZhbHVlRm9y
TGVuZ3RoKG1hcmdpbiwgMCk7CisgICAgcmFzdGVyU2hhcGUtPm1fcGFkZGluZyA9IGZsb2F0VmFs
dWVGb3JMZW5ndGgocGFkZGluZywgMCk7CisgICAgcmV0dXJuIHJhc3RlclNoYXBlLnJlbGVhc2Uo
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3No
YXBlcy9TaGFwZS5oCmluZGV4IDBkOWVjZmQuLmY3NzVlNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc2hhcGVzL1NoYXBlLmgKQEAgLTMyLDYgKzMyLDcgQEAKIAogI2luY2x1ZGUgIkJhc2lj
U2hhcGVzLmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVjdC5oIgorI2luY2x1ZGUgIlN0eWxlSW1hZ2Uu
aCIKICNpbmNsdWRlICJXcml0aW5nTW9kZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtNjAsNiArNjEsNyBAQCB0eXBlZGVmIFZlY3Rv
cjxMaW5lU2VnbWVudD4gU2VnbWVudExpc3Q7CiBjbGFzcyBTaGFwZSB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIFBhc3NPd25QdHI8U2hhcGU+IGNyZWF0ZVNoYXBlKGNvbnN0IEJhc2ljU2hhcGUqLCBj
b25zdCBMYXlvdXRTaXplJiBsb2dpY2FsQm94U2l6ZSwgV3JpdGluZ01vZGUsIExlbmd0aCBtYXJn
aW4sIExlbmd0aCBwYWRkaW5nKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxTaGFwZT4gY3JlYXRl
U2hhcGUoY29uc3QgU3R5bGVJbWFnZSosIGZsb2F0IHRocmVzaG9sZCwgY29uc3QgTGF5b3V0U2l6
ZSYgbG9naWNhbEJveFNpemUsIFdyaXRpbmdNb2RlLCBMZW5ndGggbWFyZ2luLCBMZW5ndGggcGFk
ZGluZyk7CiAKICAgICB2aXJ0dWFsIH5TaGFwZSgpIHsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW5mby5jcHAKaW5kZXggZTExNTU4My4uYmY5NGU0MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUluZm8uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVJbmZvLmNwcApAQCAtNDUs
MTIgKzQ1LDI2IEBAIGNvbnN0IFNoYXBlKiBTaGFwZUluZm88UmVuZGVyVHlwZSwgc2hhcGVHZXR0
ZXIsIGludGVydmFsR2V0dGVyPjo6Y29tcHV0ZWRTaGFwZSgpCiAgICAgaWYgKFNoYXBlKiBzaGFw
ZSA9IG1fc2hhcGUuZ2V0KCkpCiAgICAgICAgIHJldHVybiBzaGFwZTsKIAotICAgIFNoYXBlVmFs
dWUqIHNoYXBlVmFsdWUgPSAobV9yZW5kZXJlci0+c3R5bGUoKS0+KnNoYXBlR2V0dGVyKSgpOwot
ICAgIEJhc2ljU2hhcGUqIHNoYXBlID0gKHNoYXBlVmFsdWUgJiYgc2hhcGVWYWx1ZS0+dHlwZSgp
ID09IFNoYXBlVmFsdWU6OlNoYXBlKSA/IHNoYXBlVmFsdWUtPnNoYXBlKCkgOiAwOworICAgIGNv
bnN0IExheW91dFNpemUgbG9naWNhbEJveFNpemUobV9zaGFwZUxvZ2ljYWxXaWR0aCwgbV9zaGFw
ZUxvZ2ljYWxIZWlnaHQpOworICAgIFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlID0gbV9yZW5kZXJl
ci0+c3R5bGUoKS0+d3JpdGluZ01vZGUoKTsKKyAgICBMZW5ndGggbWFyZ2luID0gbV9yZW5kZXJl
ci0+c3R5bGUoKS0+c2hhcGVNYXJnaW4oKTsKKyAgICBMZW5ndGggcGFkZGluZyA9IG1fcmVuZGVy
ZXItPnN0eWxlKCktPnNoYXBlUGFkZGluZygpOworICAgIGNvbnN0IFNoYXBlVmFsdWUqIHNoYXBl
VmFsdWUgPSAobV9yZW5kZXJlci0+c3R5bGUoKS0+KnNoYXBlR2V0dGVyKSgpOworICAgIEFTU0VS
VChzaGFwZVZhbHVlKTsKIAotICAgIEFTU0VSVChzaGFwZSk7CisgICAgc3dpdGNoIChzaGFwZVZh
bHVlLT50eXBlKCkpIHsKKyAgICBjYXNlIFNoYXBlVmFsdWU6OlNoYXBlOgorICAgICAgICBBU1NF
UlQoc2hhcGVWYWx1ZS0+c2hhcGUoKSk7CisgICAgICAgIG1fc2hhcGUgPSBTaGFwZTo6Y3JlYXRl
U2hhcGUoc2hhcGVWYWx1ZS0+c2hhcGUoKSwgbG9naWNhbEJveFNpemUsIHdyaXRpbmdNb2RlLCBt
YXJnaW4sIHBhZGRpbmcpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNoYXBlVmFsdWU6Oklt
YWdlOgorICAgICAgICBBU1NFUlQoc2hhcGVWYWx1ZS0+aW1hZ2UoKSk7CisgICAgICAgIG1fc2hh
cGUgPSBTaGFwZTo6Y3JlYXRlU2hhcGUoc2hhcGVWYWx1ZS0+aW1hZ2UoKSwgMCwgbG9naWNhbEJv
eFNpemUsIHdyaXRpbmdNb2RlLCBtYXJnaW4sIHBhZGRpbmcpOworICAgICAgICBicmVhazsKKyAg
ICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CiAKLSAgICBt
X3NoYXBlID0gU2hhcGU6OmNyZWF0ZVNoYXBlKHNoYXBlLCBMYXlvdXRTaXplKG1fc2hhcGVMb2dp
Y2FsV2lkdGgsIG1fc2hhcGVMb2dpY2FsSGVpZ2h0KSwgbV9yZW5kZXJlci0+c3R5bGUoKS0+d3Jp
dGluZ01vZGUoKSwgbV9yZW5kZXJlci0+c3R5bGUoKS0+c2hhcGVNYXJnaW4oKSwgbV9yZW5kZXJl
ci0+c3R5bGUoKS0+c2hhcGVQYWRkaW5nKCkpOwogICAgIEFTU0VSVChtX3NoYXBlKTsKICAgICBy
ZXR1cm4gbV9zaGFwZS5nZXQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zaGFwZXMvU2hhcGVJbnNpZGVJbmZvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zaGFwZXMvU2hhcGVJbnNpZGVJbmZvLmNwcAppbmRleCBkMTI5NWQwLi4xYzhlMTEzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW5zaWRlSW5mby5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUluc2lkZUluZm8u
Y3BwCkBAIC00NiwxMSArNDYsMTcgQEAgTGluZVNlZ21lbnRSYW5nZTo6TGluZVNlZ21lbnRSYW5n
ZShjb25zdCBJbmxpbmVJdGVyYXRvciYgc3RhcnQsIGNvbnN0IElubGluZUl0ZXIKIGJvb2wgU2hh
cGVJbnNpZGVJbmZvOjppc0VuYWJsZWRGb3IoY29uc3QgUmVuZGVyQmxvY2sqIHJlbmRlcmVyKQog
ewogICAgIFNoYXBlVmFsdWUqIHNoYXBlVmFsdWUgPSByZW5kZXJlci0+c3R5bGUoKS0+cmVzb2x2
ZWRTaGFwZUluc2lkZSgpOwotICAgIGlmICghc2hhcGVWYWx1ZSB8fCBzaGFwZVZhbHVlLT50eXBl
KCkgIT0gU2hhcGVWYWx1ZTo6U2hhcGUpCisgICAgaWYgKCFzaGFwZVZhbHVlKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBCYXNpY1NoYXBlKiBzaGFwZSA9IHNoYXBlVmFsdWUtPnNoYXBl
KCk7Ci0gICAgcmV0dXJuIHNoYXBlICYmIHNoYXBlLT50eXBlKCkgIT0gQmFzaWNTaGFwZTo6QmFz
aWNTaGFwZUluc2V0UmVjdGFuZ2xlVHlwZTsKKyAgICBzd2l0Y2ggKHNoYXBlVmFsdWUtPnR5cGUo
KSkgeworICAgIGNhc2UgU2hhcGVWYWx1ZTo6U2hhcGU6CisgICAgICAgIHJldHVybiBzaGFwZVZh
bHVlLT5zaGFwZSgpICYmIHNoYXBlVmFsdWUtPnNoYXBlKCktPnR5cGUoKSAhPSBCYXNpY1NoYXBl
OjpCYXNpY1NoYXBlSW5zZXRSZWN0YW5nbGVUeXBlOworICAgIGNhc2UgU2hhcGVWYWx1ZTo6SW1h
Z2U6CisgICAgICAgIHJldHVybiBzaGFwZVZhbHVlLT5pc0ltYWdlVmFsaWQoKTsKKyAgICBkZWZh
dWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogfQogCiBib29sIFNoYXBlSW5zaWRl
SW5mbzo6YWRqdXN0TG9naWNhbExpbmVUb3AoZmxvYXQgbWluU2VnbWVudFdpZHRoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5jcHAK
aW5kZXggOWZmZTdkYy4uM2RjNGFmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uY3BwCkBAIC0zOCw4ICszOCwxOCBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogYm9vbCBTaGFwZU91dHNpZGVJbmZvOjppc0VuYWJsZWRGb3IoY29u
c3QgUmVuZGVyQm94KiBib3gpCiB7Ci0gICAgU2hhcGVWYWx1ZSogdmFsdWUgPSBib3gtPnN0eWxl
KCktPnNoYXBlT3V0c2lkZSgpOwotICAgIHJldHVybiBib3gtPmlzRmxvYXRpbmdXaXRoU2hhcGVP
dXRzaWRlKCkgJiYgdmFsdWUtPnR5cGUoKSA9PSBTaGFwZVZhbHVlOjpTaGFwZSAmJiB2YWx1ZS0+
c2hhcGUoKTsKKyAgICBTaGFwZVZhbHVlKiBzaGFwZVZhbHVlID0gYm94LT5zdHlsZSgpLT5zaGFw
ZU91dHNpZGUoKTsKKyAgICBpZiAoIWJveC0+aXNGbG9hdGluZ1dpdGhTaGFwZU91dHNpZGUoKSB8
fCAhc2hhcGVWYWx1ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgc3dpdGNoIChzaGFw
ZVZhbHVlLT50eXBlKCkpIHsKKyAgICBjYXNlIFNoYXBlVmFsdWU6OlNoYXBlOgorICAgICAgICBy
ZXR1cm4gc2hhcGVWYWx1ZS0+c2hhcGUoKTsKKyAgICBjYXNlIFNoYXBlVmFsdWU6OkltYWdlOgor
ICAgICAgICByZXR1cm4gZmFsc2U7IC8vIEZJWE1FLCBzZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTExOTgwOS4KKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQogfQogCiBib29sIFNoYXBlT3V0c2lkZUluZm86OmNvbXB1dGVTZWdtZW50
c0ZvckNvbnRhaW5pbmdCbG9ja0xpbmUoTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGZs
b2F0VG9wLCBMYXlvdXRVbml0IGxpbmVIZWlnaHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU2hhcGVWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1NoYXBlVmFsdWUuaAppbmRleCA2NzRhZWViLi5hNDdlZDBhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhcGVWYWx1ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFwZVZhbHVlLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNk
ZWZpbmUgU2hhcGVWYWx1ZV9oCiAKICNpbmNsdWRlICJCYXNpY1NoYXBlcy5oIgorI2luY2x1ZGUg
IkNhY2hlZEltYWdlLmgiCiAjaW5jbHVkZSAiU3R5bGVJbWFnZS5oIgogI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+CiAKQEAgLTYyLDEyICs2MywxNiBAQCBwdWJsaWM6CiAKICAgICBTaGFwZVZh
bHVlVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAgICAgQmFzaWNTaGFwZSog
c2hhcGUoKSBjb25zdCB7IHJldHVybiBtX3NoYXBlLmdldCgpOyB9CisKICAgICBTdHlsZUltYWdl
KiBpbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2UuZ2V0KCk7IH0KKyAgICBib29sIGlzSW1h
Z2VWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIGltYWdlKCkgJiYgaW1hZ2UoKS0+Y2FjaGVkSW1hZ2Uo
KSAmJiBpbWFnZSgpLT5jYWNoZWRJbWFnZSgpLT5oYXNJbWFnZSgpOyB9CiAgICAgdm9pZCBzZXRJ
bWFnZShQYXNzUmVmUHRyPFN0eWxlSW1hZ2U+IGltYWdlKQogICAgIHsKKyAgICAgICAgQVNTRVJU
KHR5cGUoKSA9PSBJbWFnZSk7CiAgICAgICAgIGlmIChtX2ltYWdlICE9IGltYWdlKQogICAgICAg
ICAgICAgbV9pbWFnZSA9IGltYWdlOwogICAgIH0KKwogICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBTaGFwZVZhbHVlJiBvdGhlcikgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IG90aGVyLnR5cGUo
KTsgfQogCiBwcml2YXRlOgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>208757</attachid>
            <date>2013-08-14 13:51:14 -0700</date>
            <delta_ts>2013-08-14 18:39:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>tmp.patch</filename>
            <type>text/plain</type>
            <size>38786</size>
            <attacher name="Hans Muller">giles_joplin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3MjgwZTBjLi4zNzg4ZjBmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTMtMDYt
MTAgIEhhbnMgTXVsbGVyICA8aG11bGxlckBhZG9iZS5jb20+CisKKyAgICAgICAgW0NTUyBFeGNs
dXNpb25zXSBNaW5pbWFsIHN1cHBvcnQgZm9yIHVzaW5nIGFuIGltYWdlIHRvIGRlZmluZSBhIHNo
YXBlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTY2
NDMKKworICAgICAgICBUd28gdGVzdHMgdG8gdmVyaWZ5IHRoYXQgdGhlIGluaXRpYWwgaW1wbGVt
ZW50YXRpb24gb2Ygc2hhcGUgdmFsdWVkIGltYWdlcyBpcyB3b3JraW5nCisgICAgICAgIGZvciBz
aGFwZS1pbnNpZGUuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGFuZHJ1IENoaWN1bGl0YS4K
KworICAgICAgICAqIGZhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWlt
YWdlLTAwMS1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V4Y2x1c2lvbnMv
c2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1pbWFnZS0wMDEuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9leGNsdXNpb25zL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtaW1hZ2UtMDAyLWV4
cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXhjbHVzaW9ucy9zaGFwZS1pbnNp
ZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAwMi5odG1sOiBBZGRlZC4KKwogMjAxMy0wOC0xNCAgQW5k
cmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMTUz
ODE1KTogZmFzdC9yZXBhaW50L2NhcmV0LWp1bXAtYmV0d2Vlbi1ub2Rlcy5odG1sIHN1Y2tzLgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zaGFwZXMvc2hhcGUtaW5zaWRlL3NoYXBlLWlu
c2lkZS1pbWFnZS0wMDEtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc2hhcGVzL3No
YXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtaW1hZ2UtMDAxLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmRiYWE3MgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3Qvc2hhcGVzL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtaW1hZ2UtMDAx
LWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwyNCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPHN0eWxlPgorICAgICNpbWFnZS1zaGFwZSB7CisgICAgICAgIGJvcmRlcjogc29s
aWQgYmxhY2sgMXB4OworICAgICAgICBmb250OiAxMnB4LzEgQWhlbSwgc2Fucy1zZXJpZjsKKyAg
ICAgICAgcGFkZGluZzogNHB4OworICAgICAgICBjb2xvcjogZ3JlZW47CisgICAgICAgIHdpZHRo
OiAyNHB4OworICAgICAgICBoZWlnaHQ6IDI0cHg7CisgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6
IHVybCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFDQUFB
QUFnQ0FZQUFBQnplbnIwQUFBQVNrbEVRVlJZQ2UzWElRNEFNQWhEMFhYaC9sZnVNa2VDSmpVZmhT
dDVZSkR0azZ5YkRQL1pERkJqQmRMdVVkanFtYXdBQVFRUVFBQUJCQkJBQUFFRTRnTGlOK3hmU3FL
UDM4QUR1UU1KTzZMTmJyNEFBQUFBU1VWT1JLNUNZSUk9Iik7CisgICAgICAgIGJhY2tncm91bmQt
cmVwZWF0OiBuby1yZXBlYXQ7CisgICAgfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorICA8
cCBpZD0iaW5mb3JtYXRpdmUtdGV4dCI+CisgICAgICBUaGlzIHRlc3QgcmVxdWlyZXMgdGhlIEFo
ZW0gZm9udC4gSXQgdXNlcyBhIDMyeDMyIFBORyBpbWFnZSB3aXRoIGEgMjR4MjQgcmVkIHNxdWFy
ZSBpbiB0aGUgY2VudGVyCisgICAgICB0byBkZWZpbmUgYSBzaGFwZS1pbnNpZGUuIFRoZSBjb250
ZW50IHNob3VsZCBqdXN0IGNvdmVyIHRoZSBzaGFwZSB3aXRoIHNvbGlkIGdyZWVuLjwvcD4KKwor
ICA8ZGl2IGlkPSJpbWFnZS1zaGFwZSI+WFg8YnIvPlhYPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NoYXBlcy9zaGFwZS1pbnNpZGUvc2hhcGUt
aW5zaWRlLWltYWdlLTAwMS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zaGFwZXMvc2hhcGUtaW5z
aWRlL3NoYXBlLWluc2lkZS1pbWFnZS0wMDEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi40NmVjN2IxMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
c2hhcGVzL3NoYXBlLWluc2lkZS9zaGFwZS1pbnNpZGUtaW1hZ2UtMDAxLmh0bWwKQEAgLTAsMCAr
MSwyNSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorICAgICNp
bWFnZS1zaGFwZSB7CisgICAgICAgIGJvcmRlcjogc29saWQgYmxhY2sgMXB4OworICAgICAgICBm
b250OiAxMnB4LzEgQWhlbSwgc2Fucy1zZXJpZjsKKyAgICAgICAgY29sb3I6IGdyZWVuOworICAg
ICAgICB3aWR0aDogMzJweDsKKyAgICAgICAgaGVpZ2h0OiAzMnB4OworICAgICAgICAtd2Via2l0
LXNoYXBlLWluc2lkZTogdXJsKCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFB
TlNVaEVVZ0FBQUNBQUFBQWdDQVlBQUFCemVucjBBQUFBU2tsRVFWUllDZTNYSVE0QU1BaEQwWFho
L2xmdU1rZUNKalVmaFN0NVlKRHRrNnliRFAvWkRGQmpCZEx1VWRqcW1hd0FBUVFRUUFBQkJCQkFB
QUVFNGdMaU4reGZTcUtQMzhBRHVRTUpPNkxOYnI0QUFBQUFTVVZPUks1Q1lJST0iKTsKKyAgICAg
ICAgLXdlYmtpdC1zaGFwZS1pbWFnZS10aHJlc2hvbGQ6IDA7CisgICAgICAgIGJhY2tncm91bmQt
aW1hZ2U6IHVybCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdB
QUFDQUFBQUFnQ0FZQUFBQnplbnIwQUFBQVNrbEVRVlJZQ2UzWElRNEFNQWhEMFhYaC9sZnVNa2VD
SmpVZmhTdDVZSkR0azZ5YkRQL1pERkJqQmRMdVVkanFtYXdBQVFRUVFBQUJCQkJBQUFFRTRnTGlO
K3hmU3FLUDM4QUR1UU1KTzZMTmJyNEFBQUFBU1VWT1JLNUNZSUk9Iik7CisgICAgICAgIGJhY2tn
cm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CisgICAgfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5
PgorICA8cCBpZD0iaW5mb3JtYXRpdmUtdGV4dCI+CisgICAgICBUaGlzIHRlc3QgcmVxdWlyZXMg
dGhlIEFoZW0gZm9udC4gSXQgdXNlcyBhIDMyeDMyIFBORyBpbWFnZSB3aXRoIGEgMjR4MjQgcmVk
IHNxdWFyZSBpbiB0aGUgY2VudGVyCisgICAgICB0byBkZWZpbmUgYSBzaGFwZS1pbnNpZGUuIFRo
ZSBjb250ZW50IHNob3VsZCBqdXN0IGNvdmVyIHRoZSBzaGFwZSB3aXRoIHNvbGlkIGdyZWVuLjwv
cD4KKworICA8ZGl2IGlkPSJpbWFnZS1zaGFwZSI+WFggWFg8L2Rpdj4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2hhcGVzL3NoYXBlLWluc2lkZS9zaGFw
ZS1pbnNpZGUtaW1hZ2UtMDAyLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3NoYXBl
cy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdlLTAwMi1leHBlY3RlZC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhNTNmZTgKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L3NoYXBlcy9zaGFwZS1pbnNpZGUvc2hhcGUtaW5zaWRlLWltYWdl
LTAwMi1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMjEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxzdHlsZT4KKyAgICAjaW1hZ2Utc2hhcGUgeworICAgICAgICBmb250OiAx
MnB4LzEgQWhlbSwgc2Fucy1zZXJpZjsKKyAgICAgICAgY29sb3I6IGdyZWVuOworICAgICAgICB3
aWR0aDogMjRweDsKKyAgICAgICAgaGVpZ2h0OiAyNHB4OworICAgICAgICBiYWNrZ3JvdW5kLWlt
YWdlOiB1cmwoImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFB
Q0FBQUFBZ0NBWUFBQUJ6ZW5yMEFBQUFSRWxFUVZSWUNlM1hzUTBBSUFnRVFISC9uVjhuMEFwdGp0
Q1JFSEkwVUJsaloyTWtkZW8rVDhVWE5RTVFJRUNBQUFFQ0JBZ1FJRkJKNzF0d08rMnRnQUNCN3dJ
TG9JOEhPYU9tekZzQUFBQUFTVVZPUks1Q1lJST0iKTsKKyAgICAgICAgYmFja2dyb3VuZC1yZXBl
YXQ6IG5vLXJlcGVhdDsKKyAgICB9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgIDxwIGlk
PSJpbmZvcm1hdGl2ZS10ZXh0Ij4KKyAgICAgIFRoaXMgdGVzdCByZXF1aXJlcyB0aGUgQWhlbSBm
b250LiBJdCB1c2VzIGEgMjR4MjQgc3F1YXJlIFBORyBpbWFnZSB3aGVyZSBhbGwgcGl4ZWxzIGFy
ZSByZWQsCisgICAgICB0byBkZWZpbmUgYSBzaGFwZS1pbnNpZGUuIFRoZSBjb250ZW50IHNob3Vs
ZCBqdXN0IGNvdmVyIHRoZSBzaGFwZSB3aXRoIHNvbGlkIGdyZWVuLjwvcD4KKyAgPGRpdiBpZD0i
aW1hZ2Utc2hhcGUiPlhYPGJyLz5YWDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9zaGFwZXMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1pbWFn
ZS0wMDIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc2hhcGVzL3NoYXBlLWluc2lkZS9zaGFwZS1p
bnNpZGUtaW1hZ2UtMDAyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
MDc5ODRlMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2hhcGVzL3NoYXBl
LWluc2lkZS9zaGFwZS1pbnNpZGUtaW1hZ2UtMDAyLmh0bWwKQEAgLTAsMCArMSwyNCBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorICAgICNpbWFnZS1zaGFwZSB7
CisgICAgICAgIGZvbnQ6IDEycHgvMSBBaGVtLCBzYW5zLXNlcmlmOworICAgICAgICBjb2xvcjog
Z3JlZW47CisgICAgICAgIHdpZHRoOiAyNHB4OworICAgICAgICBoZWlnaHQ6IDI0cHg7CisgICAg
ICAgIC13ZWJraXQtc2hhcGUtaW5zaWRlOiB1cmwoImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJP
UncwS0dnb0FBQUFOU1VoRVVnQUFBQ0FBQUFBZ0NBWUFBQUJ6ZW5yMEFBQUFSRWxFUVZSWUNlM1hz
UTBBSUFnRVFISC9uVjhuMEFwdGp0Q1JFSEkwVUJsaloyTWtkZW8rVDhVWE5RTVFJRUNBQUFFQ0JB
Z1FJRkJKNzF0d08rMnRnQUNCN3dJTG9JOEhPYU9tekZzQUFBQUFTVVZPUks1Q1lJST0iKTsKKyAg
ICAgICAgLXdlYmtpdC1zaGFwZS1pbWFnZS10aHJlc2hvbGQ6IDA7CisgICAgICAgIGJhY2tncm91
bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhF
VWdBQUFDQUFBQUFnQ0FZQUFBQnplbnIwQUFBQVJFbEVRVlJZQ2UzWHNRMEFJQWdFUUhIL25WOG4w
QXB0anRDUkVISTBVQmxqWjJNa2RlbytUOFVYTlFNUUlFQ0FBQUVDQkFnUUlGQko3MXR3TysydGdB
Q0I3d0lMb0k4SE9hT216RnNBQUFBQVNVVk9SSzVDWUlJPSIpOworICAgICAgICBiYWNrZ3JvdW5k
LXJlcGVhdDogbm8tcmVwZWF0OworICAgIH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAg
PHAgaWQ9ImluZm9ybWF0aXZlLXRleHQiPgorICAgICAgVGhpcyB0ZXN0IHJlcXVpcmVzIHRoZSBB
aGVtIGZvbnQuIEl0IHVzZXMgYSAyNHgyNCBzcXVhcmUgUE5HIGltYWdlIHdoZXJlIGFsbCBwaXhl
bHMgYXJlIHJlZCwKKyAgICAgIHRvIGRlZmluZSBhIHNoYXBlLWluc2lkZS4gVGhlIGNvbnRlbnQg
c2hvdWxkIGp1c3QgY292ZXIgdGhlIHNoYXBlIHdpdGggc29saWQgZ3JlZW4uPC9wPgorCisgIDxk
aXYgaWQ9ImltYWdlLXNoYXBlIj5YWCBYWDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dAppbmRleCBkYWRlNzZmLi4wZmE2Y2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApA
QCAtMjIyMSw2ICsyMjIxLDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHJlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmNwcAogCiAgICAgcmVuZGVyaW5nL3NoYXBlcy9Q
b2x5Z29uU2hhcGUuY3BwCisgICAgcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5jcHAKICAg
ICByZW5kZXJpbmcvc2hhcGVzL1JlY3RhbmdsZVNoYXBlLmNwcAogICAgIHJlbmRlcmluZy9zaGFw
ZXMvU2hhcGUuY3BwCiAgICAgcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUluZm8uY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggZTJmOGYzMS4uM2FlZmJjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDEz
LTA2LTEwICBIYW5zIE11bGxlciAgPGhtdWxsZXJAYWRvYmUuY29tPgorCisgICAgICAgIFtDU1Mg
RXhjbHVzaW9uc10gTWluaW1hbCBzdXBwb3J0IGZvciB1c2luZyBhbiBpbWFnZSB0byBkZWZpbmUg
YSBzaGFwZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTE2NjQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGFuZHJ1IENoaWN1bGl0YS4KKworICAg
ICAgICBUaGlzIGlzIGEgZmlyc3Qgc21hbGwgc3RlcCB0b3dhcmRzIHN1cHBvcnRpbmcgQ1NTIHNo
YXBlcyBkZWZpbmVkIGJ5IGFuCisgICAgICAgIGltYWdlIFVSTCBhbmQgYSBhbHBoYSBjaGFubmVs
IHRocmVzaG9sZC4gVG8ga2VlcCB0aGUgcGF0Y2ggYXMgc21hbGwgYXMKKyAgICAgICAgcG9zc2li
bGUsIHRoZXJlIGFyZSBtYW55IGxpbWl0YXRpb25zIGFuZCByZW1haW5pbmcgd29yayBpdGVtcy4g
Rm9yCisgICAgICAgIGV4YW1wbGUgaW1hZ2VzIGFyZSBjdXJyZW50bHkgcmVzdHJpY3RlZCB0byBz
YW1lLW9yaWdpbiwgYWx0aG91Z2ggQ09SUworICAgICAgICBzaG91bGQgYmUgc3VwcG9ydGVkLiBT
ZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNjM0OAorICAgICAg
ICBmb3IgdGhlIGN1cnJlbnQgbGlzdC4KKworICAgICAgICBUZXN0OiBmYXN0L2V4Y2x1c2lvbnMv
c2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1pbWFnZS0wMDEuaHRtbAorICAgICAgICBUZXN0OiBm
YXN0L2V4Y2x1c2lvbnMvc2hhcGUtaW5zaWRlL3NoYXBlLWluc2lkZS1pbWFnZS0wMDIuaHRtbAor
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5h
bToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJD
b3JlLnZjeHByb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCbG9jazo6aW1hZ2VDaGFuZ2VkKTogV2hlbiB0aGUgaW1hZ2UgaGFzIGZpbmlzaGVk
IGxvYWRpbmcsIHJlcXVlc3QgYSBsYXlvdXQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnNldFN0eWxlKTogQWRkIG5vdGlmeSBjbGllbnRzIGZvciBz
aGFwZSBpbWFnZXMuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnVwZGF0ZVNoYXBl
SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6cmVtb3ZlU2hhcGVJbWFnZUNsaWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmFyZW5hRGVsZXRlKTogUmVtb3ZlIG5vdGlmeSBj
bGllbnRzIGZvciBzaGFwZSBpbWFnZXMuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5oOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuY3BwOiBBZGRlZC4g
QSBTaGFwZSBkZWZpbmVkIGJ5IHRocmVzaG9sZGluZyBhbiBpbWFnZSdzIGFscGhhIGNoYW5uZWwu
CisgICAgICAgIChXZWJDb3JlOjpSYXN0ZXJTaGFwZUludGVydmFsczo6Ym91bmRzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJhc3RlclNoYXBlSW50ZXJ2YWxzOjphZGRJbnRlcnZhbCk6IEFkZCBhIHNp
bmdsZSBydW4gdG8gdGhlIHNoYXBlLgorICAgICAgICAoV2ViQ29yZTo6YWxpZ25lZFJlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmFzdGVyU2hhcGVJbnRlcnZhbHM6OmdldEludGVydmFscyk6IFJl
dHVybiB0aGUgc2hhcGUncyBydW5zIHRoYXQgZmFsbCB3aXRoaW4gYSBob3Jpem9uYWwgYm94Lgor
ICAgICAgICAoV2ViQ29yZTo6UmFzdGVyU2hhcGU6Om1hcmdpbkludGVydmFscyk6IEludGVybmFs
IHJlcHJlc2VudGF0aW9uIG9mIHRoZSBzaGFwZSB3aXRoIHNoYXBlLW1hcmdpbiBmYWN0b3JlZCBp
bi4gIEN1cnJlbnRseSBvbmx5IGEgc3R1Yi4KKyAgICAgICAgKFdlYkNvcmU6OlJhc3RlclNoYXBl
OjpwYWRkaW5nSW50ZXJ2YWxzKTogSW50ZXJuYWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIHNoYXBl
IHdpdGggc2hhcGUtcGFkZGluZyBmYWN0b3JlZCBpbi4gIEN1cnJlbnRseSBvbmx5IGEgc3R1Yi4K
KyAgICAgICAgKFdlYkNvcmU6OlJhc3RlclNoYXBlOjpnZXRFeGNsdWRlZEludGVydmFscyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSYXN0ZXJTaGFwZTo6Z2V0SW5jbHVkZWRJbnRlcnZhbHMpOgorICAg
ICAgICAoV2ViQ29yZTo6UmFzdGVyU2hhcGU6OmZpcnN0SW5jbHVkZWRJbnRlcnZhbExvZ2ljYWxU
b3ApOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlJhc3RlclNoYXBlSW50ZXJ2YWxzOjpSYXN0ZXJTaGFwZUludGVydmFscyk6IElu
dGVybmFsIHJ1biBsZW5ndGggZW5jb2RlZCByZXByZXNlbnRhdGlvbiBvZiBhIFJhc3RlclNoYXBl
LgorICAgICAgICAoV2ViQ29yZTo6UmFzdGVyU2hhcGVJbnRlcnZhbHM6OmlzRW1wdHkpOgorICAg
ICAgICAoV2ViQ29yZTo6UmFzdGVyU2hhcGU6OlJhc3RlclNoYXBlKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvc2hhcGVzL1NoYXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXBlOjpjcmVhdGVT
aGFwZSk6IFN1cHBvcnQgZm9yIGNyZWF0aW5nIGEgU2hhcGUgYmFzZWQgb24gYSBSYXN0ZXJTaGFw
ZUludGVydmFscyBvYmplY3QuCisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvU2hhcGVJbmZvLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ojo6Y29tcHV0ZWRTaGFwZSk6IEFkZGVkIHN1cHBvcnQgZm9yIHRoZSBJbWFnZSBTaGFwZVZh
bHVlIHR5cGUuCisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUluc2lkZUluZm8uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2hhcGVJbnNpZGVJbmZvOjppc0VuYWJsZWRGb3IpOiBBZGRl
ZCBzdXBwb3J0IGZvciB0aGUgSW1hZ2UgU2hhcGVWYWx1ZSB0eXBlLgorICAgICAgICAqIHJlbmRl
cmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFw
ZU91dHNpZGVJbmZvOjppc0VuYWJsZWRGb3IpOiBBZGRlZCBzdXBwb3J0IGZvciB0aGUgSW1hZ2Ug
U2hhcGVWYWx1ZSB0eXBlLgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TaGFwZVZhbHVlLmg6
CisgICAgICAgIChXZWJDb3JlOjpTaGFwZVZhbHVlOjppc0ltYWdlVmFsaWQpOiBUcnVlIGlmIHRo
ZSBzaGFwZSdzIGltYWdlIGlzIHJlYWR5IHRvIGJlIGJlIHByb2Nlc3NlZC4KKwogMjAxMy0wOC0x
MyAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIEFYOiBI
ZWFkaW5ncyBub3QgbG9uZ2VyIGhhdmUgYW4gQVhUaXRsZSBpZiB0aGV5IGhhdmUgYSBsaW5rIGFz
IHRoZSBvbmx5IGNoaWxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBmYzdhNjMy
Li5kNTdmNGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTQ1OTgsNiArNDU5
OCw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3NoYXBlcy9Qb2x5Z29uU2hhcGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hh
cGVzL1BvbHlnb25TaGFwZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jh
c3RlclNoYXBlLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJT
aGFwZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1JlY3RhbmdsZVNoYXBl
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SZWN0YW5nbGVTaGFwZS5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcCBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnBy
aQppbmRleCBhZDAxYTUxLi42MzRkYTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJn
ZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTEyMzIsNiArMTIzMiw3
IEBAIFNPVVJDRVMgKz0gXAogICAgIHJlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcCBcCiAgICAg
cmVuZGVyaW5nL1Njcm9sbEJlaGF2aW9yLmNwcCBcCiAgICAgcmVuZGVyaW5nL3NoYXBlcy9Qb2x5
Z29uU2hhcGUuY3BwIFwKKyAgICByZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNwcCBcCiAg
ICAgcmVuZGVyaW5nL3NoYXBlcy9SZWN0YW5nbGVTaGFwZS5jcHAgXAogICAgIHJlbmRlcmluZy9z
aGFwZXMvU2hhcGUuY3BwIFwKICAgICByZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW5mby5jcHAgXApA
QCAtMjQ5Myw2ICsyNDk0LDcgQEAgSEVBREVSUyArPSBcCiAgICAgcmVuZGVyaW5nL1Jvb3RJbmxp
bmVCb3guaCBcCiAgICAgcmVuZGVyaW5nL1Njcm9sbEJlaGF2aW9yLmggXAogICAgIHJlbmRlcmlu
Zy9zaGFwZXMvUG9seWdvblNoYXBlLmggXAorICAgIHJlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hh
cGUuaCBcCiAgICAgcmVuZGVyaW5nL3NoYXBlcy9SZWN0YW5nbGVTaGFwZS5oIFwKICAgICByZW5k
ZXJpbmcvc2hhcGVzL1NoYXBlLmggXAogICAgIHJlbmRlcmluZy9zaGFwZXMvU2hhcGVJbmZvLmgg
XApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKaW5k
ZXggNWE0ODhiMC4uOGJjNWE4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3hwcm9qL1dlYkNvcmUudmN4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHBy
b2ovV2ViQ29yZS52Y3hwcm9qCkBAIC0xMDk2NCw2ICsxMDk2NCw3IEBACiAgICAgICA8RXhjbHVk
ZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQ
cm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgIDwvQ2xDb21waWxl
PgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXHNoYXBlc1xQb2x5Z29uU2hh
cGUuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXHNoYXBlc1xS
YXN0ZXJTaGFwZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdc
c2hhcGVzXFJlY3RhbmdsZVNoYXBlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHJlbmRlcmluZ1xzaGFwZXNcU2hhcGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccmVuZGVyaW5nXHNoYXBlc1xTaGFwZUluc2lkZUluZm8uY3BwIiAvPgpAQCAtMTk5NzAsNiAr
MTk5NzEsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXFJlbmRlclNs
aWRlci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXFJlbmRlclNu
YXBzaG90dGVkUGx1Z0luLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJp
bmdcc2hhcGVzXFBvbHlnb25TaGFwZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cmVuZGVyaW5nXHNoYXBlc1xSYXN0ZXJTaGFwZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5ccmVuZGVyaW5nXHNoYXBlc1xSZWN0YW5nbGVTaGFwZS5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXHNoYXBlc1xTaGFwZS5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXHNoYXBlc1xTaGFwZUluc2lkZUluZm8uaCIgLz4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCBlN2M0NDYzNC4uZWJjNWNjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTgyNyw2ICsxODI3LDggQEAKIAkJNkU2N0QyQTYx
MjgwRThBNDAwODc1OEY3IC8qIEV4dGVuc2lvbnMzRE9wZW5HTC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTY3RDJBNDEyODBFOEE0MDA4NzU4Rjcg
LyogRXh0ZW5zaW9uczNET3BlbkdMLmNwcCAqLzsgfTsKIAkJNkU2N0QyQTcxMjgwRThBNDAwODc1
OEY3IC8qIEV4dGVuc2lvbnMzRE9wZW5HTC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNkU2N0QyQTUxMjgwRThBNDAwODc1OEY3IC8qIEV4dGVuc2lvbnMz
RE9wZW5HTC5oICovOyB9OwogCQk2RTY3RDJBOTEyODBFOEJEMDA4NzU4RjcgLyogRXh0ZW5zaW9u
czNELmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTY3
RDJBODEyODBFOEJEMDA4NzU4RjcgLyogRXh0ZW5zaW9uczNELmggKi87IH07CisJCTZFODRFOUUw
MTc2NjhCRUUwMDgxNUI2OCAvKiBSYXN0ZXJTaGFwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RTg0RTlERTE3NjY4QkFEMDA4MTVCNjggLyogUmFz
dGVyU2hhcGUuY3BwICovOyB9OworCQk2RTg0RTlFMTE3NjY4QkYxMDA4MTVCNjggLyogUmFzdGVy
U2hhcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZF
ODRFOURGMTc2NjhCQUQwMDgxNUI2OCAvKiBSYXN0ZXJTaGFwZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTZFQkM1RUFGMTM4QjUwRjIwMEEwQ0Y4
QSAvKiBKU0Zsb2F0NjRBcnJheS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA2RUJDNUVBRDEzOEI1MEYyMDBBMENGOEEgLyogSlNGbG9hdDY0QXJyYXku
Y3BwICovOyB9OwogCQk2RUJDNUVCMDEzOEI1MEYyMDBBMENGOEEgLyogSlNGbG9hdDY0QXJyYXku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFQkM1RUFF
MTM4QjUwRjIwMEEwQ0Y4QSAvKiBKU0Zsb2F0NjRBcnJheS5oICovOyB9OwogCQk2RUJGMEU0ODEy
QTg5MjYxMDBEQjE3MDkgLyogT0VTVGV4dHVyZUZsb2F0LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZFQkYwRTQ1MTJBODkyNjEwMERCMTcwOSAvKiBP
RVNUZXh0dXJlRmxvYXQuY3BwICovOyB9OwpAQCAtODIzOCw2ICs4MjQwLDggQEAKIAkJNkU2N0Qy
QTQxMjgwRThBNDAwODc1OEY3IC8qIEV4dGVuc2lvbnMzRE9wZW5HTC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeHRlbnNpb25zM0RPcGVuR0wuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk2RTY3RDJBNTEyODBFOEE0MDA4NzU4RjcgLyogRXh0ZW5z
aW9uczNET3BlbkdMLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4dGVuc2lv
bnMzRE9wZW5HTC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RTY3RDJBODEyODBF
OEJEMDA4NzU4RjcgLyogRXh0ZW5zaW9uczNELmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEV4dGVuc2lvbnMzRC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2RTg0
RTlERTE3NjY4QkFEMDA4MTVCNjggLyogUmFzdGVyU2hhcGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUmFzdGVyU2hhcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk2RTg0RTlERjE3NjY4QkFEMDA4MTVCNjggLyogUmFzdGVyU2hhcGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmFzdGVyU2hhcGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNkVCQzVEODAxMzhCNEM0RTAwQTBDRjhBIC8qIEZsb2F0NjRBcnJh
eS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gRmxvYXQ2NEFycmF5LmlkbDsgcGF0aCA9IGNh
bnZhcy9GbG9hdDY0QXJyYXkuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RUJD
NUVBRDEzOEI1MEYyMDBBMENGOEEgLyogSlNGbG9hdDY0QXJyYXkuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNGbG9hdDY0QXJyYXkuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk2RUJDNUVBRTEzOEI1MEYyMDBBMENGOEEgLyogSlNGbG9hdDY0QXJy
YXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNGbG9hdDY0QXJyYXkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNjA5LDYgKzIwNjEzLDggQEAKIAkJCWNo
aWxkcmVuID0gKAogCQkJCUZEMDhBODdBMTc1RDM5MjYwMDJDRDM2MCAvKiBQb2x5Z29uU2hhcGUu
Y3BwICovLAogCQkJCUZEMDhBODdCMTc1RDM5MjYwMDJDRDM2MCAvKiBQb2x5Z29uU2hhcGUuaCAq
LywKKwkJCQk2RTg0RTlERTE3NjY4QkFEMDA4MTVCNjggLyogUmFzdGVyU2hhcGUuY3BwICovLAor
CQkJCTZFODRFOURGMTc2NjhCQUQwMDgxNUI2OCAvKiBSYXN0ZXJTaGFwZS5oICovLAogCQkJCUZE
MDhBODdDMTc1RDM5MjYwMDJDRDM2MCAvKiBSZWN0YW5nbGVTaGFwZS5jcHAgKi8sCiAJCQkJRkQw
OEE4N0QxNzVEMzkyNjAwMkNEMzYwIC8qIFJlY3RhbmdsZVNoYXBlLmggKi8sCiAJCQkJRkQwOEE4
N0UxNzVEMzkyNjAwMkNEMzYwIC8qIFNoYXBlLmNwcCAqLywKQEAgLTIwOTMzLDYgKzIwOTM5LDcg
QEAKIAkJCWZpbGVzID0gKAogCQkJCUZFMTE1RkFCMTY3OTg4Q0QwMDI0OTEzNCAvKiBBYnN0cmFj
dERhdGFiYXNlU2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRTRBQURFRTE2RDJDMzc0MDAw
MjZGRkMgLyogQWJzdHJhY3RTUUxTdGF0ZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTZFODRF
OUUxMTc2NjhCRjEwMDgxNUI2OCAvKiBSYXN0ZXJTaGFwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RkU0QUFERUYxNkQyQzM3NDAwMDI2RkZDIC8qIEFic3RyYWN0U1FMU3RhdGVtZW50QmFja2VuZC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDFFMUIxRDEwRkY1OTg2OTAwNTc2QjNCIC8qIEFic3RyYWN0
V29ya2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkyOUE4MTIyRTBGQkI5QzFEMDA1MTAyOTMgLyog
QWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzA0Myw2ICsy
NzA1MCw3IEBACiAJCQkJRkQ1MzczNTIxMzdCNjUxODAwMDA4RENFIC8qIFplcm9Qb2xlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUZEMTc2MkRGMTc2Njg2RDkwMEQ4MzZBOCAvKiBVcFNhbXBsZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQxNzYyRTMxNzY2ODZFQTAwRDgzNkE4IC8qIERvd25T
YW1wbGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTZFODRFOUUwMTc2NjhCRUUwMDgxNUI2OCAv
KiBSYXN0ZXJTaGFwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2suY3BwCmluZGV4IDRhN2I5MmUuLjQzYWFiZGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAtMTQzNiw2ICsxNDM2LDIxIEBAIHZvaWQgUmVu
ZGVyQmxvY2s6OmxheW91dCgpCiB9CiAKICNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKK3ZvaWQgUmVu
ZGVyQmxvY2s6OmltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIgaW1hZ2UsIGNvbnN0IEludFJl
Y3QqKQoreworICAgIFJlbmRlckJveDo6aW1hZ2VDaGFuZ2VkKGltYWdlKTsKKworICAgIGlmICgh
cGFyZW50KCkpCisgICAgICAgIHJldHVybjsKKworICAgIFNoYXBlVmFsdWUqIHNoYXBlVmFsdWUg
PSBzdHlsZSgpLT5zaGFwZUluc2lkZSgpOworICAgIGlmIChzaGFwZVZhbHVlICYmIHNoYXBlVmFs
dWUtPmltYWdlKCkgJiYgc2hhcGVWYWx1ZS0+aW1hZ2UoKS0+ZGF0YSgpID09IGltYWdlKSB7Cisg
ICAgICAgIFNoYXBlSW5zaWRlSW5mbyogc2hhcGVJbnNpZGVJbmZvID0gZW5zdXJlU2hhcGVJbnNp
ZGVJbmZvKCk7CisgICAgICAgIHNoYXBlSW5zaWRlSW5mby0+ZGlydHlTaGFwZVNpemUoKTsKKyAg
ICAgICAgbWFya1NoYXBlSW5zaWRlRGVzY2VuZGFudHNGb3JMYXlvdXQoKTsKKyAgICB9Cit9CisK
IHZvaWQgUmVuZGVyQmxvY2s6OnVwZGF0ZVNoYXBlSW5zaWRlSW5mb0FmdGVyU3R5bGVDaGFuZ2Uo
Y29uc3QgU2hhcGVWYWx1ZSogc2hhcGVJbnNpZGUsIGNvbnN0IFNoYXBlVmFsdWUqIG9sZFNoYXBl
SW5zaWRlKQogewogICAgIC8vIEZJWE1FOiBBIGZ1dHVyZSBvcHRpbWl6YXRpb24gd291bGQgZG8g
YSBkZWVwIGNvbXBhcmlzb24gZm9yIGVxdWFsaXR5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suaAppbmRleCBjOTY0YmVkLi40Y2FmNDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2suaApAQCAtNDcwLDYgKzQ3MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG1h
cmtTaGFwZUluc2lkZURlc2NlbmRhbnRzRm9yTGF5b3V0KCk7CiAgICAgU2hhcGVJbnNpZGVJbmZv
KiBsYXlvdXRTaGFwZUluc2lkZUluZm8oKSBjb25zdDsKICAgICBib29sIGFsbG93c1NoYXBlSW5z
aWRlSW5mb1NoYXJpbmcoKSBjb25zdCB7IHJldHVybiAhaXNJbmxpbmUoKSAmJiAhaXNGbG9hdGlu
ZygpOyB9CisgICAgdmlydHVhbCB2b2lkIGltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIsIGNv
bnN0IEludFJlY3QqID0gMCkgT1ZFUlJJREU7CiAjZW5kaWYKIAogcHJvdGVjdGVkOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCA5ODE5MTc1Li4xNzJlZTdk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMTg1MCw2
ICsxODUwLDEwIEBAIHZvaWQgUmVuZGVyT2JqZWN0OjpzZXRTdHlsZShQYXNzUmVmUHRyPFJlbmRl
clN0eWxlPiBzdHlsZSkKICAgICB1cGRhdGVJbWFnZShvbGRTdHlsZSA/IG9sZFN0eWxlLT5ib3Jk
ZXJJbWFnZSgpLmltYWdlKCkgOiAwLCBtX3N0eWxlID8gbV9zdHlsZS0+Ym9yZGVySW1hZ2UoKS5p
bWFnZSgpIDogMCk7CiAgICAgdXBkYXRlSW1hZ2Uob2xkU3R5bGUgPyBvbGRTdHlsZS0+bWFza0Jv
eEltYWdlKCkuaW1hZ2UoKSA6IDAsIG1fc3R5bGUgPyBtX3N0eWxlLT5tYXNrQm94SW1hZ2UoKS5p
bWFnZSgpIDogMCk7CiAKKyNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKKyAgICB1cGRhdGVTaGFwZUlt
YWdlKG9sZFN0eWxlID8gb2xkU3R5bGUtPnNoYXBlSW5zaWRlKCkgOiAwLCBtX3N0eWxlID8gbV9z
dHlsZS0+c2hhcGVJbnNpZGUoKSA6IDApOworI2VuZGlmCisKICAgICAvLyBXZSBuZWVkIHRvIGVu
c3VyZSB0aGF0IHZpZXctPm1heGltYWxPdXRsaW5lU2l6ZSgpIGlzIHZhbGlkIGZvciBhbnkgcmVw
YWludHMgdGhhdCBoYXBwZW4KICAgICAvLyBkdXJpbmcgc3R5bGVEaWRDaGFuZ2UgKGl0J3MgdXNl
ZCBieSBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCgpKS4KICAgICBpZiAobV9zdHlsZS0+
b3V0bGluZVdpZHRoKCkgPiAwICYmIG1fc3R5bGUtPm91dGxpbmVTaXplKCkgPiBtYXhpbWFsT3V0
bGluZVNpemUoUGFpbnRQaGFzZU91dGxpbmUpKQpAQCAtMjEwMiw2ICsyMTA2LDE0IEBAIHZvaWQg
UmVuZGVyT2JqZWN0Ojp1cGRhdGVJbWFnZShTdHlsZUltYWdlKiBvbGRJbWFnZSwgU3R5bGVJbWFn
ZSogbmV3SW1hZ2UpCiAgICAgfQogfQogCisjaWYgRU5BQkxFKENTU19TSEFQRVMpCit2b2lkIFJl
bmRlck9iamVjdDo6dXBkYXRlU2hhcGVJbWFnZShjb25zdCBTaGFwZVZhbHVlKiBvbGRTaGFwZVZh
bHVlLCBjb25zdCBTaGFwZVZhbHVlKiBuZXdTaGFwZVZhbHVlKQoreworICAgIGlmIChvbGRTaGFw
ZVZhbHVlIHx8IG5ld1NoYXBlVmFsdWUpCisgICAgICAgIHVwZGF0ZUltYWdlKG9sZFNoYXBlVmFs
dWUgPyBvbGRTaGFwZVZhbHVlLT5pbWFnZSgpIDogMCwgbmV3U2hhcGVWYWx1ZSA/IG5ld1NoYXBl
VmFsdWUtPmltYWdlKCkgOiAwKTsKK30KKyNlbmRpZgorCiBMYXlvdXRSZWN0IFJlbmRlck9iamVj
dDo6dmlld1JlY3QoKSBjb25zdAogewogICAgIHJldHVybiB2aWV3KCktPnZpZXdSZWN0KCk7CkBA
IC0yNjIwLDYgKzI2MzIsMTYgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OmRlc3Ryb3koKQogICAgIGFy
ZW5hRGVsZXRlKHJlbmRlckFyZW5hKCksIHRoaXMpOwogfQogCisjaWYgRU5BQkxFKENTU19TSEFQ
RVMpCit2b2lkIFJlbmRlck9iamVjdDo6cmVtb3ZlU2hhcGVJbWFnZUNsaWVudChTaGFwZVZhbHVl
KiBzaGFwZVZhbHVlKQoreworICAgIGlmICghc2hhcGVWYWx1ZSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIGlmIChTdHlsZUltYWdlKiBzaGFwZUltYWdlID0gc2hhcGVWYWx1ZS0+aW1hZ2UoKSkKKyAg
ICAgICAgc2hhcGVJbWFnZS0+cmVtb3ZlQ2xpZW50KHRoaXMpOworfQorI2VuZGlmCisKIHZvaWQg
UmVuZGVyT2JqZWN0OjphcmVuYURlbGV0ZShSZW5kZXJBcmVuYSogYXJlbmEsIHZvaWQqIGJhc2Up
CiB7CiAgICAgaWYgKG1fc3R5bGUpIHsKQEAgLTI2MzgsNiArMjY2MCwxMCBAQCB2b2lkIFJlbmRl
ck9iamVjdDo6YXJlbmFEZWxldGUoUmVuZGVyQXJlbmEqIGFyZW5hLCB2b2lkKiBiYXNlKQogCiAg
ICAgICAgIGlmIChTdHlsZUltYWdlKiBtYXNrQm94SW1hZ2UgPSBtX3N0eWxlLT5tYXNrQm94SW1h
Z2UoKS5pbWFnZSgpKQogICAgICAgICAgICAgbWFza0JveEltYWdlLT5yZW1vdmVDbGllbnQodGhp
cyk7CisKKyNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKKyAgICAgICAgcmVtb3ZlU2hhcGVJbWFnZUNs
aWVudChtX3N0eWxlLT5zaGFwZUluc2lkZSgpKTsKKyNlbmRpZgogICAgIH0KIAogI2lmbmRlZiBO
REVCVUcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAppbmRleCAzYTEzNTBh
Li5lZWQwM2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCkBAIC02
OTQsNiArNjk0LDkgQEAgcHVibGljOgogCiAgICAgdm9pZCB1cGRhdGVGaWxsSW1hZ2VzKGNvbnN0
IEZpbGxMYXllciosIGNvbnN0IEZpbGxMYXllciopOwogICAgIHZvaWQgdXBkYXRlSW1hZ2UoU3R5
bGVJbWFnZSosIFN0eWxlSW1hZ2UqKTsKKyNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKKyAgICB2b2lk
IHVwZGF0ZVNoYXBlSW1hZ2UoY29uc3QgU2hhcGVWYWx1ZSosIGNvbnN0IFNoYXBlVmFsdWUqKTsK
KyNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91
dFBvaW50Jik7CiAKQEAgLTEwMjYsNiArMTAyOSwxMCBAQCBwcml2YXRlOgogCiAgICAgQ29sb3Ig
c2VsZWN0aW9uQ29sb3IoaW50IGNvbG9yUHJvcGVydHkpIGNvbnN0OwogCisjaWYgRU5BQkxFKENT
U19TSEFQRVMpCisgICAgdm9pZCByZW1vdmVTaGFwZUltYWdlQ2xpZW50KFNoYXBlVmFsdWUqKTsK
KyNlbmRpZgorCiAjaWZuZGVmIE5ERUJVRwogICAgIHZvaWQgY2hlY2tCbG9ja1Bvc2l0aW9uZWRP
YmplY3RzTmVlZExheW91dCgpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc2hhcGVzL1Jhc3RlclNoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zaGFwZXMvUmFzdGVyU2hhcGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjg2YWUyNTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c2hhcGVzL1Jhc3RlclNoYXBlLmNwcApAQCAtMCwwICsxLDE1MiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMyBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCisg
KiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZworICogICAgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFp
bWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKKyAqICAgIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorICogQ09QWVJJR0hUIEhPTERFUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULAorICogSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULAorICogU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RAorICogT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJSYXN0ZXJTaGFwZS5oIgorCisjaW5jbHVkZSAiU2hhcGVJ
bnRlcnZhbC5oIgorI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworSW50UmVjdCBSYXN0ZXJTaGFwZUludGVydmFsczo6Ym91bmRzKCkgY29uc3QKK3sK
KyAgICBpZiAoIW1fYm91bmRzKQorICAgICAgICBtX2JvdW5kcyA9IGFkb3B0UHRyKG5ldyBJbnRS
ZWN0KG1fcmVnaW9uLmJvdW5kcygpKSk7CisgICAgcmV0dXJuICptX2JvdW5kczsKK30KKwordm9p
ZCBSYXN0ZXJTaGFwZUludGVydmFsczo6YWRkSW50ZXJ2YWwoaW50IHksIGludCB4MSwgaW50IHgy
KQoreworICAgIG1fcmVnaW9uLnVuaXRlKFJlZ2lvbihJbnRSZWN0KHgxLCB5LCB4MiAtIHgxLCAx
KSkpOworICAgIG1fYm91bmRzLmNsZWFyKCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgSW50UmVjdCBh
bGlnbmVkUmVjdChJbnRSZWN0IHIsIGludCB5MSwgaW50IHkyKQoreworICAgIHJldHVybiBJbnRS
ZWN0KHIueCgpLCB5MSwgci53aWR0aCgpLCB5MiAtIHkxKTsKK30KKwordm9pZCBSYXN0ZXJTaGFw
ZUludGVydmFsczo6Z2V0SW5jbHVkZWRJbnRlcnZhbHMoaW50IHkxLCBpbnQgeTIsIFNlZ21lbnRM
aXN0JiByZXN1bHQpIGNvbnN0Cit7CisgICAgQVNTRVJUKHkyID49IHkxKTsKKworICAgIEludFJl
Y3QgbGluZVJlY3QoYm91bmRzKCkueCgpLCB5MSwgYm91bmRzKCkud2lkdGgoKSwgeTIgLSB5MSk7
CisgICAgUmVnaW9uIGxpbmVSZWdpb24obGluZVJlY3QpOworICAgIGxpbmVSZWdpb24uaW50ZXJz
ZWN0KG1fcmVnaW9uKTsKKyAgICBpZiAobGluZVJlZ2lvbi5pc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIFZlY3RvcjxJbnRSZWN0PiBsaW5lUmVjdHMgPSBsaW5lUmVnaW9uLnJlY3Rz
KCk7CisgICAgQVNTRVJUKGxpbmVSZWN0cy5zaXplKCkgPiAwKTsKKworICAgIFJlZ2lvbiBzZWdt
ZW50c1JlZ2lvbihsaW5lUmVjdCk7CisgICAgUmVnaW9uIGludGVydmFsc1JlZ2lvbjsKKworICAg
IC8vIFRoZSBsb29wIGJlbG93IHVzZXMgUmVnaW9ucyB0byBjb21wdXRlIHRoZSBpbnRlcnNlY3Rp
b24gb2YgdGhlIGhvcml6b250YWwKKyAgICAvLyBzaGFwZSBpbnRlcnZhbHMgdGhhdCBmYWxsIHdp
dGhpbiB0aGUgbGluZSdzIGJveC4KKyAgICBpbnQgbGluZVkgPSBsaW5lUmVjdHNbMF0ueSgpOwor
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsaW5lUmVjdHMuc2l6ZSgpOyArK2kpIHsKKyAg
ICAgICAgaWYgKGxpbmVSZWN0c1tpXS55KCkgIT0gbGluZVkpIHsKKyAgICAgICAgICAgIHNlZ21l
bnRzUmVnaW9uLmludGVyc2VjdChpbnRlcnZhbHNSZWdpb24pOworICAgICAgICAgICAgaW50ZXJ2
YWxzUmVnaW9uID0gUmVnaW9uKCk7CisgICAgICAgIH0KKyAgICAgICAgaW50ZXJ2YWxzUmVnaW9u
LnVuaXRlKFJlZ2lvbihhbGlnbmVkUmVjdChsaW5lUmVjdHNbaV0sIHkxLCB5MikpKTsKKyAgICAg
ICAgbGluZVkgPSBsaW5lUmVjdHNbaV0ueSgpOworICAgIH0KKyAgICBpZiAoIWludGVydmFsc1Jl
Z2lvbi5pc0VtcHR5KCkpCisgICAgICAgIHNlZ21lbnRzUmVnaW9uLmludGVyc2VjdChpbnRlcnZh
bHNSZWdpb24pOworCisgICAgVmVjdG9yPEludFJlY3Q+IHNlZ21lbnRSZWN0cyA9IHNlZ21lbnRz
UmVnaW9uLnJlY3RzKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNlZ21lbnRSZWN0
cy5zaXplKCk7ICsraSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZChMaW5lU2VnbWVudChzZWdtZW50
UmVjdHNbaV0ueCgpLCBzZWdtZW50UmVjdHNbaV0ubWF4WCgpKSk7Cit9CisKK2NvbnN0IFJhc3Rl
clNoYXBlSW50ZXJ2YWxzJiBSYXN0ZXJTaGFwZTo6bWFyZ2luSW50ZXJ2YWxzKCkgY29uc3QKK3sK
KyAgICBBU1NFUlQoc2hhcGVNYXJnaW4oKSA+PSAwKTsKKyAgICBpZiAoIXNoYXBlTWFyZ2luKCkp
CisgICAgICAgIHJldHVybiAqbV9pbnRlcnZhbHM7CisKKyAgICAvLyBGSVhNRTogQWRkIHN1cHBv
cnQgZm9yIG5vbi16ZXJvIG1hcmdpbiwgc2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMTYzNDguCisgICAgcmV0dXJuICptX2ludGVydmFsczsKK30KKworY29uc3Qg
UmFzdGVyU2hhcGVJbnRlcnZhbHMmIFJhc3RlclNoYXBlOjpwYWRkaW5nSW50ZXJ2YWxzKCkgY29u
c3QKK3sKKyAgICBBU1NFUlQoc2hhcGVQYWRkaW5nKCkgPj0gMCk7CisgICAgaWYgKCFzaGFwZVBh
ZGRpbmcoKSkKKyAgICAgICAgcmV0dXJuICptX2ludGVydmFsczsKKworICAgIC8vIEZJWE1FOiBB
ZGQgc3VwcG9ydCBmb3Igbm9uLXplcm8gcGFkZGluZywgc2VlIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMTYzNDguCisgICAgcmV0dXJuICptX2ludGVydmFsczsKK30K
Kwordm9pZCBSYXN0ZXJTaGFwZTo6Z2V0RXhjbHVkZWRJbnRlcnZhbHMoTGF5b3V0VW5pdCwgTGF5
b3V0VW5pdCwgU2VnbWVudExpc3QmKSBjb25zdAoreworICAgIC8vIEZJWE1FOiB0aGlzIG1ldGhv
ZCBpcyBvbmx5IGEgc3R1Yiwgc2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMTk4MDkuCit9CisKK3ZvaWQgUmFzdGVyU2hhcGU6OmdldEluY2x1ZGVkSW50ZXJ2YWxz
KExheW91dFVuaXQgbG9naWNhbFRvcCwgTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBTZWdtZW50
TGlzdCYgcmVzdWx0KSBjb25zdAoreworICAgIGNvbnN0IFJhc3RlclNoYXBlSW50ZXJ2YWxzJiBp
bnRlcnZhbHMgPSBwYWRkaW5nSW50ZXJ2YWxzKCk7CisgICAgaWYgKGludGVydmFscy5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGZsb2F0IHkxID0gbG9naWNhbFRvcDsKKyAgICBm
bG9hdCB5MiA9IGxvZ2ljYWxUb3AgKyBsb2dpY2FsSGVpZ2h0OworCisgICAgaWYgKHkxIDwgaW50
ZXJ2YWxzLmJvdW5kcygpLnkoKSB8fCB5MiA+IGludGVydmFscy5ib3VuZHMoKS5tYXhZKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIGludGVydmFscy5nZXRJbmNsdWRlZEludGVydmFscyh5MSwg
eTIsIHJlc3VsdCk7Cit9CisKK2Jvb2wgUmFzdGVyU2hhcGU6OmZpcnN0SW5jbHVkZWRJbnRlcnZh
bExvZ2ljYWxUb3AoTGF5b3V0VW5pdCBtaW5Mb2dpY2FsSW50ZXJ2YWxUb3AsIGNvbnN0IExheW91
dFNpemUmIG1pbkxvZ2ljYWxJbnRlcnZhbFNpemUsIExheW91dFVuaXQmIHJlc3VsdCkgY29uc3QK
K3sKKyAgICBmbG9hdCBtaW5JbnRlcnZhbFRvcCA9IG1pbkxvZ2ljYWxJbnRlcnZhbFRvcDsKKyAg
ICBmbG9hdCBtaW5JbnRlcnZhbEhlaWdodCA9IG1pbkxvZ2ljYWxJbnRlcnZhbFNpemUuaGVpZ2h0
KCk7CisgICAgZmxvYXQgbWluSW50ZXJ2YWxXaWR0aCA9IG1pbkxvZ2ljYWxJbnRlcnZhbFNpemUu
d2lkdGgoKTsKKworICAgIGNvbnN0IFJhc3RlclNoYXBlSW50ZXJ2YWxzJiBpbnRlcnZhbHMgPSBw
YWRkaW5nSW50ZXJ2YWxzKCk7CisgICAgaWYgKGludGVydmFscy5pc0VtcHR5KCkgfHwgbWluSW50
ZXJ2YWxXaWR0aCA+IGludGVydmFscy5ib3VuZHMoKS53aWR0aCgpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBmbG9hdCBtaW5ZID0gc3RkOjptYXg8ZmxvYXQ+KGludGVydmFscy5ib3Vu
ZHMoKS55KCksIG1pbkludGVydmFsVG9wKTsKKyAgICBmbG9hdCBtYXhZID0gbWluWSArIG1pbklu
dGVydmFsSGVpZ2h0OworCisgICAgaWYgKG1heFkgPiBpbnRlcnZhbHMuYm91bmRzKCkubWF4WSgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBGSVhNRTogQ29tcGxldGUgdGhpcyBt
ZXRob2QsIHNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE2MzQ4
LgorICAgIHJlc3VsdCA9IG1pblk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMv
UmFzdGVyU2hhcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUmFzdGVyU2hh
cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMzA1ZDQzCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5o
CkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQWRvYmUgU3lzdGVt
cyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisgKiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUworICog
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUKKyAqIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwKKyAqIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisgKiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAq
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwKKyAqIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQKKyAqIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFJhc3RlclNoYXBlX2gKKyNkZWZpbmUg
UmFzdGVyU2hhcGVfaAorCisjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiUmVnaW9u
LmgiCisjaW5jbHVkZSAiU2hhcGUuaCIKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBSYXN0
ZXJTaGFwZUludGVydmFscyB7CitwdWJsaWM6CisgICAgUmFzdGVyU2hhcGVJbnRlcnZhbHMoKSB7
IH0KKworICAgIEludFJlY3QgYm91bmRzKCkgY29uc3Q7CisgICAgYm9vbCBpc0VtcHR5KCkgY29u
c3QgIHsgcmV0dXJuIG1fcmVnaW9uLmlzRW1wdHkoKTsgfQorICAgIHZvaWQgYWRkSW50ZXJ2YWwo
aW50IHksIGludCB4MSwgaW50IHgyKTsKKyAgICB2b2lkIGdldEluY2x1ZGVkSW50ZXJ2YWxzKGlu
dCB5MSwgaW50IHkyLCBTZWdtZW50TGlzdCYpIGNvbnN0OworCitwcml2YXRlOgorICAgIFJlZ2lv
biBtX3JlZ2lvbjsKKyAgICBtdXRhYmxlIE93blB0cjxJbnRSZWN0PiBtX2JvdW5kczsgLy8gQ2Fj
aGVkIHZhbHVlIG9mIG1fcmVnaW9uLmJvdW5kcygpLgorfTsKKworY2xhc3MgUmFzdGVyU2hhcGUg
OiBwdWJsaWMgU2hhcGUgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJhc3RlclNoYXBlKTsK
K3B1YmxpYzoKKyAgICBSYXN0ZXJTaGFwZShQYXNzT3duUHRyPFJhc3RlclNoYXBlSW50ZXJ2YWxz
PiBpbnRlcnZhbHMpCisgICAgICAgIDogU2hhcGUoKQorICAgICAgICAsIG1faW50ZXJ2YWxzKGlu
dGVydmFscykKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCBMYXlvdXRSZWN0IHNoYXBlTWFy
Z2luTG9naWNhbEJvdW5kaW5nQm94KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8TGF5b3V0UmVjdD4obWFyZ2luSW50ZXJ2YWxzKCkuYm91bmRzKCkpOyB9CisgICAgdmlydHVh
bCBMYXlvdXRSZWN0IHNoYXBlUGFkZGluZ0xvZ2ljYWxCb3VuZGluZ0JveCgpIGNvbnN0IE9WRVJS
SURFIHsgcmV0dXJuIHN0YXRpY19jYXN0PExheW91dFJlY3Q+KHBhZGRpbmdJbnRlcnZhbHMoKS5i
b3VuZHMoKSk7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNFbXB0eSgpIGNvbnN0IE9WRVJSSURFIHsg
cmV0dXJuIG1faW50ZXJ2YWxzLT5pc0VtcHR5KCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZ2V0RXhj
bHVkZWRJbnRlcnZhbHMoTGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBMYXlvdXRVbml0IGxvZ2ljYWxI
ZWlnaHQsIFNlZ21lbnRMaXN0JikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGdl
dEluY2x1ZGVkSW50ZXJ2YWxzKExheW91dFVuaXQgbG9naWNhbFRvcCwgTGF5b3V0VW5pdCBsb2dp
Y2FsSGVpZ2h0LCBTZWdtZW50TGlzdCYpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9v
bCBmaXJzdEluY2x1ZGVkSW50ZXJ2YWxMb2dpY2FsVG9wKExheW91dFVuaXQgbWluTG9naWNhbElu
dGVydmFsVG9wLCBjb25zdCBMYXlvdXRTaXplJiBtaW5Mb2dpY2FsSW50ZXJ2YWxTaXplLCBMYXlv
dXRVbml0JikgY29uc3QgT1ZFUlJJREU7CisKK3ByaXZhdGU6CisgICAgY29uc3QgUmFzdGVyU2hh
cGVJbnRlcnZhbHMmIG1hcmdpbkludGVydmFscygpIGNvbnN0OworICAgIGNvbnN0IFJhc3RlclNo
YXBlSW50ZXJ2YWxzJiBwYWRkaW5nSW50ZXJ2YWxzKCkgY29uc3Q7CisKKyAgICBPd25QdHI8UmFz
dGVyU2hhcGVJbnRlcnZhbHM+IG1faW50ZXJ2YWxzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gUmFzdGVyU2hhcGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c2hhcGVzL1NoYXBlLmNwcAppbmRleCA4MTBhYzU1Li5iM2I5ZDZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcApAQCAtMzEsOSArMzEsMTIgQEAKICNpbmNsdWRl
ICJTaGFwZS5oIgogCiAjaW5jbHVkZSAiQmFzaWNTaGFwZUZ1bmN0aW9ucy5oIgorI2luY2x1ZGUg
IkNhY2hlZEltYWdlLmgiCiAjaW5jbHVkZSAiRmxvYXRTaXplLmgiCisjaW5jbHVkZSAiSW1hZ2VC
dWZmZXIuaCIKICNpbmNsdWRlICJMZW5ndGhGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJQb2x5Z29u
U2hhcGUuaCIKKyNpbmNsdWRlICJSYXN0ZXJTaGFwZS5oIgogI2luY2x1ZGUgIlJlY3RhbmdsZVNo
YXBlLmgiCiAjaW5jbHVkZSAiV2luZFJ1bGUuaCIKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5o
PgpAQCAtMjAwLDQgKzIwMyw0NiBAQCBQYXNzT3duUHRyPFNoYXBlPiBTaGFwZTo6Y3JlYXRlU2hh
cGUoY29uc3QgQmFzaWNTaGFwZSogYmFzaWNTaGFwZSwgY29uc3QgTGF5b3V0UwogICAgIHJldHVy
biBzaGFwZS5yZWxlYXNlKCk7CiB9CiAKK1Bhc3NPd25QdHI8U2hhcGU+IFNoYXBlOjpjcmVhdGVT
aGFwZShjb25zdCBTdHlsZUltYWdlKiBzdHlsZUltYWdlLCBmbG9hdCB0aHJlc2hvbGQsIGNvbnN0
IExheW91dFNpemUmLCBXcml0aW5nTW9kZSB3cml0aW5nTW9kZSwgTGVuZ3RoIG1hcmdpbiwgTGVu
Z3RoIHBhZGRpbmcpCit7CisgICAgQVNTRVJUKHN0eWxlSW1hZ2UgJiYgc3R5bGVJbWFnZS0+aXND
YWNoZWRJbWFnZSgpICYmIHN0eWxlSW1hZ2UtPmNhY2hlZEltYWdlKCkgJiYgc3R5bGVJbWFnZS0+
Y2FjaGVkSW1hZ2UoKS0+aW1hZ2UoKSk7CisKKyAgICBPd25QdHI8UmFzdGVyU2hhcGVJbnRlcnZh
bHM+IGludGVydmFscyA9IGFkb3B0UHRyKG5ldyBSYXN0ZXJTaGFwZUludGVydmFscygpKTsKKwor
ICAgIEltYWdlKiBpbWFnZSA9IHN0eWxlSW1hZ2UtPmNhY2hlZEltYWdlKCktPmltYWdlKCk7Cisg
ICAgY29uc3QgSW50U2l6ZSYgaW1hZ2VTaXplID0gaW1hZ2UtPnNpemUoKTsKKyAgICBPd25QdHI8
SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFnZVNpemUp
OworICAgIGlmIChpbWFnZUJ1ZmZlcikgeworICAgICAgICBHcmFwaGljc0NvbnRleHQqIGdyYXBo
aWNzQ29udGV4dCA9IGltYWdlQnVmZmVyLT5jb250ZXh0KCk7CisgICAgICAgIGdyYXBoaWNzQ29u
dGV4dC0+ZHJhd0ltYWdlKGltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBJbnRQb2ludCgpKTsK
KworICAgICAgICBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IHBpeGVsQXJyYXkgPSBpbWFnZUJ1
ZmZlci0+Z2V0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKEludFJlY3QoSW50UG9pbnQoKSwgaW1hZ2VT
aXplKSk7CisgICAgICAgIHVuc2lnbmVkIHBpeGVsQXJyYXlMZW5ndGggPSBwaXhlbEFycmF5LT5s
ZW5ndGgoKTsKKyAgICAgICAgdW5zaWduZWQgcGl4ZWxBcnJheU9mZnNldCA9IDM7IC8vIEVhY2gg
cGl4ZWwgaXMgZm91ciBieXRlczogUkdCQS4KKyAgICAgICAgdWludDhfdCBhbHBoYVBpeGVsVGhy
ZXNob2xkID0gdGhyZXNob2xkICogMjU1OworCisgICAgICAgIGlmIChzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oaW1hZ2VTaXplLndpZHRoKCkgKiBpbWFnZVNpemUuaGVpZ2h0KCkgKiA0KSA9PSBwaXhl
bEFycmF5TGVuZ3RoKSB7IC8vIHNhbml0eSBjaGVjaworICAgICAgICAgICAgZm9yIChpbnQgeSA9
IDA7IHkgPCBpbWFnZVNpemUuaGVpZ2h0KCk7ICsreSkgeworICAgICAgICAgICAgICAgIGludCBz
dGFydFggPSAtMTsKKyAgICAgICAgICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IGltYWdlU2l6
ZS53aWR0aCgpOyArK3gsIHBpeGVsQXJyYXlPZmZzZXQgKz0gNCkgeworICAgICAgICAgICAgICAg
ICAgICB1aW50OF90IGFscGhhID0gcGl4ZWxBcnJheS0+aXRlbShwaXhlbEFycmF5T2Zmc2V0KTsK
KyAgICAgICAgICAgICAgICAgICAgYm9vbCBhbHBoYUFib3ZlVGhyZXNob2xkID0gYWxwaGEgPiBh
bHBoYVBpeGVsVGhyZXNob2xkOworICAgICAgICAgICAgICAgICAgICBpZiAoc3RhcnRYID09IC0x
ICYmIGFscGhhQWJvdmVUaHJlc2hvbGQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0
WCA9IHg7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RhcnRYICE9IC0xICYmICgh
YWxwaGFBYm92ZVRocmVzaG9sZCB8fCB4ID09IGltYWdlU2l6ZS53aWR0aCgpIC0gMSkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGludGVydmFscy0+YWRkSW50ZXJ2YWwoeSwgc3RhcnRYLCB4
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0WCA9IC0xOworICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fQorCisgICAgT3duUHRyPFJhc3RlclNoYXBlPiByYXN0ZXJTaGFwZSA9IGFkb3B0UHRyKG5ldyBS
YXN0ZXJTaGFwZShpbnRlcnZhbHMucmVsZWFzZSgpKSk7CisgICAgcmFzdGVyU2hhcGUtPm1fd3Jp
dGluZ01vZGUgPSB3cml0aW5nTW9kZTsKKyAgICByYXN0ZXJTaGFwZS0+bV9tYXJnaW4gPSBmbG9h
dFZhbHVlRm9yTGVuZ3RoKG1hcmdpbiwgMCk7CisgICAgcmFzdGVyU2hhcGUtPm1fcGFkZGluZyA9
IGZsb2F0VmFsdWVGb3JMZW5ndGgocGFkZGluZywgMCk7CisgICAgcmV0dXJuIHJhc3RlclNoYXBl
LnJlbGVhc2UoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3NoYXBlcy9TaGFwZS5oCmluZGV4IDBkOWVjZmQuLmY3NzVlNWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmgKQEAgLTMyLDYgKzMyLDcgQEAKIAogI2luY2x1
ZGUgIkJhc2ljU2hhcGVzLmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVjdC5oIgorI2luY2x1ZGUgIlN0
eWxlSW1hZ2UuaCIKICNpbmNsdWRlICJXcml0aW5nTW9kZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNz
T3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtNjAsNiArNjEsNyBAQCB0eXBl
ZGVmIFZlY3RvcjxMaW5lU2VnbWVudD4gU2VnbWVudExpc3Q7CiBjbGFzcyBTaGFwZSB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8U2hhcGU+IGNyZWF0ZVNoYXBlKGNvbnN0IEJhc2lj
U2hhcGUqLCBjb25zdCBMYXlvdXRTaXplJiBsb2dpY2FsQm94U2l6ZSwgV3JpdGluZ01vZGUsIExl
bmd0aCBtYXJnaW4sIExlbmd0aCBwYWRkaW5nKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxTaGFw
ZT4gY3JlYXRlU2hhcGUoY29uc3QgU3R5bGVJbWFnZSosIGZsb2F0IHRocmVzaG9sZCwgY29uc3Qg
TGF5b3V0U2l6ZSYgbG9naWNhbEJveFNpemUsIFdyaXRpbmdNb2RlLCBMZW5ndGggbWFyZ2luLCBM
ZW5ndGggcGFkZGluZyk7CiAKICAgICB2aXJ0dWFsIH5TaGFwZSgpIHsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW5mby5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW5mby5jcHAKaW5kZXggZTExNTU4My4uYmY5
NGU0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUlu
Zm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVJbmZvLmNw
cApAQCAtNDUsMTIgKzQ1LDI2IEBAIGNvbnN0IFNoYXBlKiBTaGFwZUluZm88UmVuZGVyVHlwZSwg
c2hhcGVHZXR0ZXIsIGludGVydmFsR2V0dGVyPjo6Y29tcHV0ZWRTaGFwZSgpCiAgICAgaWYgKFNo
YXBlKiBzaGFwZSA9IG1fc2hhcGUuZ2V0KCkpCiAgICAgICAgIHJldHVybiBzaGFwZTsKIAotICAg
IFNoYXBlVmFsdWUqIHNoYXBlVmFsdWUgPSAobV9yZW5kZXJlci0+c3R5bGUoKS0+KnNoYXBlR2V0
dGVyKSgpOwotICAgIEJhc2ljU2hhcGUqIHNoYXBlID0gKHNoYXBlVmFsdWUgJiYgc2hhcGVWYWx1
ZS0+dHlwZSgpID09IFNoYXBlVmFsdWU6OlNoYXBlKSA/IHNoYXBlVmFsdWUtPnNoYXBlKCkgOiAw
OworICAgIGNvbnN0IExheW91dFNpemUgbG9naWNhbEJveFNpemUobV9zaGFwZUxvZ2ljYWxXaWR0
aCwgbV9zaGFwZUxvZ2ljYWxIZWlnaHQpOworICAgIFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlID0g
bV9yZW5kZXJlci0+c3R5bGUoKS0+d3JpdGluZ01vZGUoKTsKKyAgICBMZW5ndGggbWFyZ2luID0g
bV9yZW5kZXJlci0+c3R5bGUoKS0+c2hhcGVNYXJnaW4oKTsKKyAgICBMZW5ndGggcGFkZGluZyA9
IG1fcmVuZGVyZXItPnN0eWxlKCktPnNoYXBlUGFkZGluZygpOworICAgIGNvbnN0IFNoYXBlVmFs
dWUqIHNoYXBlVmFsdWUgPSAobV9yZW5kZXJlci0+c3R5bGUoKS0+KnNoYXBlR2V0dGVyKSgpOwor
ICAgIEFTU0VSVChzaGFwZVZhbHVlKTsKIAotICAgIEFTU0VSVChzaGFwZSk7CisgICAgc3dpdGNo
IChzaGFwZVZhbHVlLT50eXBlKCkpIHsKKyAgICBjYXNlIFNoYXBlVmFsdWU6OlNoYXBlOgorICAg
ICAgICBBU1NFUlQoc2hhcGVWYWx1ZS0+c2hhcGUoKSk7CisgICAgICAgIG1fc2hhcGUgPSBTaGFw
ZTo6Y3JlYXRlU2hhcGUoc2hhcGVWYWx1ZS0+c2hhcGUoKSwgbG9naWNhbEJveFNpemUsIHdyaXRp
bmdNb2RlLCBtYXJnaW4sIHBhZGRpbmcpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNoYXBl
VmFsdWU6OkltYWdlOgorICAgICAgICBBU1NFUlQoc2hhcGVWYWx1ZS0+aW1hZ2UoKSk7CisgICAg
ICAgIG1fc2hhcGUgPSBTaGFwZTo6Y3JlYXRlU2hhcGUoc2hhcGVWYWx1ZS0+aW1hZ2UoKSwgMCwg
bG9naWNhbEJveFNpemUsIHdyaXRpbmdNb2RlLCBtYXJnaW4sIHBhZGRpbmcpOworICAgICAgICBi
cmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9
CiAKLSAgICBtX3NoYXBlID0gU2hhcGU6OmNyZWF0ZVNoYXBlKHNoYXBlLCBMYXlvdXRTaXplKG1f
c2hhcGVMb2dpY2FsV2lkdGgsIG1fc2hhcGVMb2dpY2FsSGVpZ2h0KSwgbV9yZW5kZXJlci0+c3R5
bGUoKS0+d3JpdGluZ01vZGUoKSwgbV9yZW5kZXJlci0+c3R5bGUoKS0+c2hhcGVNYXJnaW4oKSwg
bV9yZW5kZXJlci0+c3R5bGUoKS0+c2hhcGVQYWRkaW5nKCkpOwogICAgIEFTU0VSVChtX3NoYXBl
KTsKICAgICByZXR1cm4gbV9zaGFwZS5nZXQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVJbnNpZGVJbmZvLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zaGFwZXMvU2hhcGVJbnNpZGVJbmZvLmNwcAppbmRleCBkMTI5NWQwLi4xYzhl
MTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlSW5z
aWRlSW5mby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZUlu
c2lkZUluZm8uY3BwCkBAIC00NiwxMSArNDYsMTcgQEAgTGluZVNlZ21lbnRSYW5nZTo6TGluZVNl
Z21lbnRSYW5nZShjb25zdCBJbmxpbmVJdGVyYXRvciYgc3RhcnQsIGNvbnN0IElubGluZUl0ZXIK
IGJvb2wgU2hhcGVJbnNpZGVJbmZvOjppc0VuYWJsZWRGb3IoY29uc3QgUmVuZGVyQmxvY2sqIHJl
bmRlcmVyKQogewogICAgIFNoYXBlVmFsdWUqIHNoYXBlVmFsdWUgPSByZW5kZXJlci0+c3R5bGUo
KS0+cmVzb2x2ZWRTaGFwZUluc2lkZSgpOwotICAgIGlmICghc2hhcGVWYWx1ZSB8fCBzaGFwZVZh
bHVlLT50eXBlKCkgIT0gU2hhcGVWYWx1ZTo6U2hhcGUpCisgICAgaWYgKCFzaGFwZVZhbHVlKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBCYXNpY1NoYXBlKiBzaGFwZSA9IHNoYXBlVmFs
dWUtPnNoYXBlKCk7Ci0gICAgcmV0dXJuIHNoYXBlICYmIHNoYXBlLT50eXBlKCkgIT0gQmFzaWNT
aGFwZTo6QmFzaWNTaGFwZUluc2V0UmVjdGFuZ2xlVHlwZTsKKyAgICBzd2l0Y2ggKHNoYXBlVmFs
dWUtPnR5cGUoKSkgeworICAgIGNhc2UgU2hhcGVWYWx1ZTo6U2hhcGU6CisgICAgICAgIHJldHVy
biBzaGFwZVZhbHVlLT5zaGFwZSgpICYmIHNoYXBlVmFsdWUtPnNoYXBlKCktPnR5cGUoKSAhPSBC
YXNpY1NoYXBlOjpCYXNpY1NoYXBlSW5zZXRSZWN0YW5nbGVUeXBlOworICAgIGNhc2UgU2hhcGVW
YWx1ZTo6SW1hZ2U6CisgICAgICAgIHJldHVybiBzaGFwZVZhbHVlLT5pc0ltYWdlVmFsaWQoKTsK
KyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogfQogCiBib29sIFNo
YXBlSW5zaWRlSW5mbzo6YWRqdXN0TG9naWNhbExpbmVUb3AoZmxvYXQgbWluU2VnbWVudFdpZHRo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNp
ZGVJbmZvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRl
SW5mby5jcHAKaW5kZXggOWZmZTdkYy4uM2RjNGFmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uY3BwCkBAIC0zOCw4ICszOCwx
OCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogYm9vbCBTaGFwZU91dHNpZGVJbmZvOjppc0VuYWJs
ZWRGb3IoY29uc3QgUmVuZGVyQm94KiBib3gpCiB7Ci0gICAgU2hhcGVWYWx1ZSogdmFsdWUgPSBi
b3gtPnN0eWxlKCktPnNoYXBlT3V0c2lkZSgpOwotICAgIHJldHVybiBib3gtPmlzRmxvYXRpbmdX
aXRoU2hhcGVPdXRzaWRlKCkgJiYgdmFsdWUtPnR5cGUoKSA9PSBTaGFwZVZhbHVlOjpTaGFwZSAm
JiB2YWx1ZS0+c2hhcGUoKTsKKyAgICBTaGFwZVZhbHVlKiBzaGFwZVZhbHVlID0gYm94LT5zdHls
ZSgpLT5zaGFwZU91dHNpZGUoKTsKKyAgICBpZiAoIWJveC0+aXNGbG9hdGluZ1dpdGhTaGFwZU91
dHNpZGUoKSB8fCAhc2hhcGVWYWx1ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgc3dp
dGNoIChzaGFwZVZhbHVlLT50eXBlKCkpIHsKKyAgICBjYXNlIFNoYXBlVmFsdWU6OlNoYXBlOgor
ICAgICAgICByZXR1cm4gc2hhcGVWYWx1ZS0+c2hhcGUoKTsKKyAgICBjYXNlIFNoYXBlVmFsdWU6
OkltYWdlOgorICAgICAgICByZXR1cm4gZmFsc2U7IC8vIEZJWE1FLCBzZWUgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExOTgwOS4KKyAgICBkZWZhdWx0OgorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQogfQogCiBib29sIFNoYXBlT3V0c2lkZUluZm86OmNvbXB1
dGVTZWdtZW50c0ZvckNvbnRhaW5pbmdCbG9ja0xpbmUoTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlv
dXRVbml0IGZsb2F0VG9wLCBMYXlvdXRVbml0IGxpbmVIZWlnaHQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhcGVWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1NoYXBlVmFsdWUuaAppbmRleCA2NzRhZWViLi5hNDdlZDBhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU2hhcGVWYWx1ZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TaGFwZVZhbHVlLmgKQEAgLTMxLDYgKzMx
LDcgQEAKICNkZWZpbmUgU2hhcGVWYWx1ZV9oCiAKICNpbmNsdWRlICJCYXNpY1NoYXBlcy5oIgor
I2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCiAjaW5jbHVkZSAiU3R5bGVJbWFnZS5oIgogI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKQEAgLTYyLDEyICs2MywxNiBAQCBwdWJsaWM6CiAKICAg
ICBTaGFwZVZhbHVlVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAgICAgQmFz
aWNTaGFwZSogc2hhcGUoKSBjb25zdCB7IHJldHVybiBtX3NoYXBlLmdldCgpOyB9CisKICAgICBT
dHlsZUltYWdlKiBpbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2UuZ2V0KCk7IH0KKyAgICBi
b29sIGlzSW1hZ2VWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIGltYWdlKCkgJiYgaW1hZ2UoKS0+Y2Fj
aGVkSW1hZ2UoKSAmJiBpbWFnZSgpLT5jYWNoZWRJbWFnZSgpLT5oYXNJbWFnZSgpOyB9CiAgICAg
dm9pZCBzZXRJbWFnZShQYXNzUmVmUHRyPFN0eWxlSW1hZ2U+IGltYWdlKQogICAgIHsKKyAgICAg
ICAgQVNTRVJUKHR5cGUoKSA9PSBJbWFnZSk7CiAgICAgICAgIGlmIChtX2ltYWdlICE9IGltYWdl
KQogICAgICAgICAgICAgbV9pbWFnZSA9IGltYWdlOwogICAgIH0KKwogICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBTaGFwZVZhbHVlJiBvdGhlcikgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IG90
aGVyLnR5cGUoKTsgfQogCiBwcml2YXRlOgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>