<?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>235758</bug_id>
          
          <creation_ts>2022-01-28 01:00:17 -0800</creation_ts>
          <short_desc>[GPU Process] Move ImageBuffer::createCompatibleImageBuffer() and SVGRenderingContext::createImageBuffer to GraphicsContext</short_desc>
          <delta_ts>2022-02-11 07:45:24 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>225959</blocked>
    
    <blocked>227748</blocked>
    
    <blocked>236508</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>pdr</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1834852</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-01-28 01:00:17 -0800</bug_when>
    <thetext>GraphicsContext::createCompatibleImageBuffer() will be able to create an ImageBuffer similar to the underlaying ImageBuffer of the GraphicsContext. RecorderImpl and RemoteDisplayListRecorderProxy are superclasses of GraphicsContext, so they can override this method and return the desired type of ImageBuffer.

The goal is to replace all the create() of all the intermediate ImageBuffers by createCompatibleImageBuffer(). So they can be from the same type as the type of the ImageBuffer that they are going to be drawn to eventually. RenderingPurpose should only be used for the top-level ImageBuffers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834853</commentid>
    <comment_count>1</comment_count>
      <attachid>450210</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-01-28 01:05:02 -0800</bug_when>
    <thetext>Created attachment 450210
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835077</commentid>
    <comment_count>2</comment_count>
      <attachid>450261</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-01-28 11:28:37 -0800</bug_when>
    <thetext>Created attachment 450261
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835078</commentid>
    <comment_count>3</comment_count>
      <attachid>450210</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-01-28 11:38:42 -0800</bug_when>
    <thetext>Comment on attachment 450210
Patch

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

&gt; Source/WebCore/platform/graphics/GraphicsContext.h:426
&gt; +    WEBCORE_EXPORT virtual RefPtr&lt;ImageBuffer&gt; createCompatibleImageBuffer(const FloatSize&amp;, float resolutionScale, const DestinationColorSpace&amp; = DestinationColorSpace::SRGB()) const;
&gt; +    WEBCORE_EXPORT RefPtr&lt;ImageBuffer&gt; createCompatibleImageBuffer(const FloatSize&amp;, const DestinationColorSpace&amp; = DestinationColorSpace::SRGB()) const;
&gt; +    RefPtr&lt;ImageBuffer&gt; createCompatibleImageBuffer(ImageBuffer&amp; sourceImage, const FloatRect&amp;, const DestinationColorSpace&amp; = DestinationColorSpace::SRGB()) const;
&gt; +
&gt; +    RefPtr&lt;ImageBuffer&gt; createCompatibleConcreteImageBuffer(const FloatRect&amp;, const DestinationColorSpace&amp; = DestinationColorSpace::SRGB()) const;

Can we collapse these down? When writing code, I wouldn&apos;t know which one to use and how they differ.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835183</commentid>
    <comment_count>4</comment_count>
      <attachid>450288</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-01-28 16:45:56 -0800</bug_when>
    <thetext>Created attachment 450288
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835406</commentid>
    <comment_count>5</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-01-30 14:22:11 -0800</bug_when>
    <thetext>The plan also is to move SVGRenderingContext::createImageBuffer() to GraphicsContext. So all the intermediate image buffers of the SVG resources can be the same type as the type of the underlying ImageBuffer of the GraphicsContext.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835568</commentid>
    <comment_count>6</comment_count>
      <attachid>450288</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-01-31 09:46:57 -0800</bug_when>
    <thetext>Comment on attachment 450288
Patch

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

&gt; Source/WebCore/platform/graphics/GraphicsContext.h:422
&gt; +    WEBCORE_EXPORT virtual RefPtr&lt;ImageBuffer&gt; createImageBuffer(const FloatSize&amp;, float resolutionScale = 1, const DestinationColorSpace&amp; = DestinationColorSpace::SRGB()) const;

Let&apos;s put a blank line under this one

&gt; Source/WebCore/platform/graphics/GraphicsContext.h:425
&gt; +    RefPtr&lt;ImageBuffer&gt; copyRectToCompatibleImageBuffer(ImageBuffer&amp; sourceImage, const FloatRect&amp;, const DestinationColorSpace&amp; = DestinationColorSpace::SRGB()) const;

Do we need this one? The caller can do the same in a few lines of code, and it&apos;s confusing, because I don&apos;t know if the current context is, or has to be the context associated with sourceImage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837225</commentid>
    <comment_count>7</comment_count>
      <attachid>450853</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-02-03 19:28:52 -0800</bug_when>
    <thetext>Created attachment 450853
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837307</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-02-04 01:01:16 -0800</bug_when>
    <thetext>&lt;rdar://problem/88478470&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837519</commentid>
    <comment_count>9</comment_count>
      <attachid>450919</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-02-04 11:21:10 -0800</bug_when>
    <thetext>Created attachment 450919
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837540</commentid>
    <comment_count>10</comment_count>
      <attachid>450919</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-02-04 11:57:36 -0800</bug_when>
    <thetext>Comment on attachment 450919
Patch

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

&gt; Source/WebCore/platform/graphics/GraphicsContext.h:419
&gt; +    enum class CreateMethod : bool { Default, Base };

These names don&apos;t really communicate what they do. I&apos;m not sure from reading this which one I&apos;d choose. Also, no-one outside of GraphicsContext uses this, so it would be nice to keep it internal. Maybe createImageBuffer(...CreateMethod) can be private, with a public createImageBuffer(...) that calls the internal function.

&gt; Source/WebCore/platform/graphics/GraphicsContext.h:421
&gt; +    FloatSize tightImageBufferSize(const FloatSize&amp;, const FloatSize&amp; scale) const;

Not sure what &quot;tight&quot; means here. I think this is integral snapping the scaled size, then returning the size with scale accounted for? I think it should have the word &quot;expanded&quot; in the name, and name should try to clarify if the result is accounting for scale or not.

It looks like this can be static since it doesn&apos;t consult GraphicsContext state. Maybe it can just be moved to the one call site?

&gt; Source/WebCore/platform/graphics/GraphicsContext.h:430
&gt; +    RefPtr&lt;ImageBuffer&gt; createImageBuffer(const FloatSize&amp;, const FloatSize&amp; scale, const DestinationColorSpace&amp; = DestinationColorSpace::SRGB(), std::optional&lt;RenderingMode&gt; = std::nullopt, CreateMethod = CreateMethod::Default) const;
&gt; +    RefPtr&lt;ImageBuffer&gt; createImageBuffer(const FloatRect&amp;, const FloatSize&amp; scale, const DestinationColorSpace&amp; = DestinationColorSpace::SRGB(), std::optional&lt;RenderingMode&gt; = std::nullopt, CreateMethod = CreateMethod::Default) const;
&gt; +
&gt; +    WEBCORE_EXPORT virtual RefPtr&lt;ImageBuffer&gt; createCompatibleImageBuffer(const FloatSize&amp;, const DestinationColorSpace&amp; = DestinationColorSpace::SRGB(), std::optional&lt;RenderingMode&gt; = std::nullopt) const;
&gt; +    WEBCORE_EXPORT virtual RefPtr&lt;ImageBuffer&gt; createCompatibleImageBuffer(const FloatRect&amp;, const DestinationColorSpace&amp; = DestinationColorSpace::SRGB(), std::optional&lt;RenderingMode&gt; = std::nullopt) const;

This is nice and clean but I wonder if we can simplify it further and just have FloatRect versions (FloatRect.location will be 0,0 most of the time).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837709</commentid>
    <comment_count>11</comment_count>
      <attachid>450975</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-02-04 22:06:24 -0800</bug_when>
    <thetext>Created attachment 450975
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837729</commentid>
    <comment_count>12</comment_count>
      <attachid>450919</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-02-05 01:00:34 -0800</bug_when>
    <thetext>Comment on attachment 450919
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/GraphicsContext.h:419
&gt;&gt; +    enum class CreateMethod : bool { Default, Base };
&gt; 
&gt; These names don&apos;t really communicate what they do. I&apos;m not sure from reading this which one I&apos;d choose. Also, no-one outside of GraphicsContext uses this, so it would be nice to keep it internal. Maybe createImageBuffer(...CreateMethod) can be private, with a public createImageBuffer(...) that calls the internal function.

Done. And I made the virtual function createImageBuffer as well to be protected.

&gt;&gt; Source/WebCore/platform/graphics/GraphicsContext.h:421
&gt;&gt; +    FloatSize tightImageBufferSize(const FloatSize&amp;, const FloatSize&amp; scale) const;
&gt; 
&gt; Not sure what &quot;tight&quot; means here. I think this is integral snapping the scaled size, then returning the size with scale accounted for? I think it should have the word &quot;expanded&quot; in the name, and name should try to clarify if the result is accounting for scale or not.
&gt; 
&gt; It looks like this can be static since it doesn&apos;t consult GraphicsContext state. Maybe it can just be moved to the one call site?

I moved this function to RenderSVGResourcePattern::createTileImage(). RenderSVGResourcePattern::createTileImage() was calling a version of SVGRenderingContext::createImageBuffer() which was calling roundedIntSize() not expandedIntSize(). tightImageBufferSize() is supposed to return the outsets which would make expandedIntSize() differs from roundedIntSize(). The goal is to not add a new createImageBuffer() function or an enum to an existing one to preserve this behavior.

&gt;&gt; Source/WebCore/platform/graphics/GraphicsContext.h:430
&gt;&gt; +    WEBCORE_EXPORT virtual RefPtr&lt;ImageBuffer&gt; createCompatibleImageBuffer(const FloatRect&amp;, const DestinationColorSpace&amp; = DestinationColorSpace::SRGB(), std::optional&lt;RenderingMode&gt; = std::nullopt) const;
&gt; 
&gt; This is nice and clean but I wonder if we can simplify it further and just have FloatRect versions (FloatRect.location will be 0,0 most of the time).

I think we have to have both versions of the function.

1. The FloatRect version is used for drawing something we know its location and we want to temporarily draw to an ImageBuffer and then draw it to a destination context. But we have to consider for sub-pixels. So we should exclude the outsets of the expanded rectangle from the scaling and the translation. But we want to allow the drawing to leak to these outsets.
2. The FloatSize version is used for snapshotting for example. We need it to draw contents and then sink it to a NativeImage. So we ignore the sub-pixels at the borders because they are not noticeable in this case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837999</commentid>
    <comment_count>13</comment_count>
      <attachid>450975</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-02-06 20:52:05 -0800</bug_when>
    <thetext>Comment on attachment 450975
Patch

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

Starting reviewing this and then realized it was already landed maybe?

&gt; Source/WebCore/platform/graphics/GraphicsContext.cpp:554
&gt; +static inline IntSize scaledImageBufferSize(const FloatSize&amp; size, const FloatSize&amp; scale)

Not sure const&amp; is a good optimization when the argument is a pair of floats. Also, unnecessary to write &quot;inline&quot;; compiler will likely inline this either way, and it’s not in a header where we need to use &quot;inline&quot; to deal with the one-definition rule.

&gt; Source/WebCore/platform/graphics/GraphicsContext.cpp:561
&gt; +static inline IntRect scaledImageBufferRect(const FloatRect&amp; rect, const FloatSize&amp; scale)

Similar thoughts here.

&gt; Source/WebCore/platform/graphics/GraphicsContext.cpp:571
&gt; +    ImageBuffer::sizeNeedsClamping(size, clampingScale);

This seems like a peculiar function name. It sounds like it would return a boolean indicating whether a size needs clamping.

&gt; Source/WebCore/platform/graphics/GraphicsContext.cpp:610
&gt; +RefPtr&lt;ImageBuffer&gt; GraphicsContext::createImageBuffer(const FloatRect&amp; rect, const FloatSize&amp; scale, const DestinationColorSpace&amp; colorSpace, RenderingMode renderingMode, CreateMethod createMethod) const

There is so much repetition between this and the function above. Would be great at some point figure out how to write them without so much copy and paste. Should be pretty easy with a template.

&gt; Source/WebCore/platform/graphics/ImageBuffer.h:53
&gt; +    RefPtr&lt;ImageBuffer&gt; clone();

Seems like this can be const.

&gt; Source/WebCore/platform/graphics/cg/PDFDocumentImage.cpp:242
&gt; +    // Create in-process ImageBuffer since the deocoding of PDF images has to happen in WebProcess.

Typo: &quot;deocoding&quot;.

&gt; Source/WebCore/platform/graphics/cg/PDFDocumentImage.cpp:243
&gt; +    m_cachedImageBuffer = context.GraphicsContext::createCompatibleImageBuffer(cachedImageSize);

I think a separate named function would be better than calling through to GraphicsContext::createCompatibleImageBuffer. Can just have GraphicsContext::createCompatibleImageBuffer be an inline function that calls that named function. The name of that function would make it clearer what is going on here, with less burden on the comment.

&gt; Source/WebCore/platform/graphics/cg/PDFDocumentImage.cpp:296
&gt; +            if (auto imageBuffer = context.GraphicsContext::createCompatibleImageBuffer(localDestinationRect.size())) {

Ditto.

&gt; Source/WebCore/platform/graphics/coretext/DrawGlyphsRecorderCoreText.cpp:382
&gt; +        // Create in-process ImageBuffer since the deocoding of OT-SVG fonts has to happen in WebProcess.
&gt; +        if (auto imageBuffer = m_owner.GraphicsContext::createCompatibleImageBuffer(bounds)) {

Name would help here too. Same spelling error here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838016</commentid>
    <comment_count>14</comment_count>
      <attachid>451066</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-02-06 23:40:57 -0800</bug_when>
    <thetext>Created attachment 451066
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838046</commentid>
    <comment_count>15</comment_count>
      <attachid>450975</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-02-07 02:57:05 -0800</bug_when>
    <thetext>Comment on attachment 450975
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/GraphicsContext.cpp:554
&gt;&gt; +static inline IntSize scaledImageBufferSize(const FloatSize&amp; size, const FloatSize&amp; scale)
&gt; 
&gt; Not sure const&amp; is a good optimization when the argument is a pair of floats. Also, unnecessary to write &quot;inline&quot;; compiler will likely inline this either way, and it’s not in a header where we need to use &quot;inline&quot; to deal with the one-definition rule.

&apos;inline&apos; was removed.

For passing the FloatSize as const&amp; versus passing it by value, I searched GraphicsContext.h and I found all the FloatSize are passed by references. Here is the list:

WEBCORE_EXPORT void setShadow(const FloatSize&amp;, float blur, const Color&amp;, ShadowRadiusMode = ShadowRadiusMode::Default);
WEBCORE_EXPORT bool getShadow(FloatSize&amp;, float&amp;, Color&amp;) const;
virtual void drawNativeImage(NativeImage&amp;, const FloatSize&amp; selfSize, const FloatRect&amp; destRect, const FloatRect&amp; srcRect, const ImagePaintingOptions&amp; = { }) = 0;
WEBCORE_EXPORT virtual ImageDrawResult drawTiledImage(Image&amp;, const FloatRect&amp; destination, const FloatPoint&amp; source, const FloatSize&amp; tileSize, const FloatSize&amp; spacing, const ImagePaintingOptions&amp; = { });
WEBCORE_EXPORT virtual ImageDrawResult drawTiledImage(Image&amp;, const FloatRect&amp; destination, const FloatRect&amp; source, const FloatSize&amp; tileScaleFactor, Image::TileRule, Image::TileRule, const ImagePaintingOptions&amp; = { });
virtual void drawPattern(NativeImage&amp;, const FloatSize&amp; imageSize, const FloatRect&amp; destRect, const FloatRect&amp; tileRect, const AffineTransform&amp; patternTransform, const FloatPoint&amp; phase, const FloatSize&amp; spacing, const ImagePaintingOptions&amp; = { }) = 0;
virtual void scale(const FloatSize&amp;) = 0;
void translate(const FloatSize&amp; size) { translate(size.width(), size.height()); }

I reached the whole source code for &quot;(FloatSize &quot; and I found 39 hits. I searched the whole source code for &quot;(const FloatSize&amp;&quot; and I found 249 hits.

&gt;&gt; Source/WebCore/platform/graphics/GraphicsContext.cpp:571
&gt;&gt; +    ImageBuffer::sizeNeedsClamping(size, clampingScale);
&gt; 
&gt; This seems like a peculiar function name. It sounds like it would return a boolean indicating whether a size needs clamping.

bool ImageBuffer::sizeNeedsClamping(const FloatSize&amp; size, FloatSize&amp; scale)

It returns this Boolean but it also changes &apos;scale&apos; such that &quot;size * scale&quot; will not need clamping. I can change the name of this function in a operate patch since this one is getting bigger and bigger.

&gt;&gt; Source/WebCore/platform/graphics/ImageBuffer.h:53
&gt;&gt; +    RefPtr&lt;ImageBuffer&gt; clone();
&gt; 
&gt; Seems like this can be const.

Fixed.

&gt;&gt; Source/WebCore/platform/graphics/cg/PDFDocumentImage.cpp:242
&gt;&gt; +    // Create in-process ImageBuffer since the deocoding of PDF images has to happen in WebProcess.
&gt; 
&gt; Typo: &quot;deocoding&quot;.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838188</commentid>
    <comment_count>16</comment_count>
      <attachid>450975</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-02-07 08:52:28 -0800</bug_when>
    <thetext>Comment on attachment 450975
Patch

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

&gt;&gt;&gt; Source/WebCore/platform/graphics/GraphicsContext.cpp:554
&gt;&gt;&gt; +static inline IntSize scaledImageBufferSize(const FloatSize&amp; size, const FloatSize&amp; scale)
&gt;&gt; 
&gt;&gt; Not sure const&amp; is a good optimization when the argument is a pair of floats. Also, unnecessary to write &quot;inline&quot;; compiler will likely inline this either way, and it’s not in a header where we need to use &quot;inline&quot; to deal with the one-definition rule.
&gt; 
&gt; &apos;inline&apos; was removed.
&gt; 
&gt; For passing the FloatSize as const&amp; versus passing it by value, I searched GraphicsContext.h and I found all the FloatSize are passed by references. Here is the list:
&gt; 
&gt; WEBCORE_EXPORT void setShadow(const FloatSize&amp;, float blur, const Color&amp;, ShadowRadiusMode = ShadowRadiusMode::Default);
&gt; WEBCORE_EXPORT bool getShadow(FloatSize&amp;, float&amp;, Color&amp;) const;
&gt; virtual void drawNativeImage(NativeImage&amp;, const FloatSize&amp; selfSize, const FloatRect&amp; destRect, const FloatRect&amp; srcRect, const ImagePaintingOptions&amp; = { }) = 0;
&gt; WEBCORE_EXPORT virtual ImageDrawResult drawTiledImage(Image&amp;, const FloatRect&amp; destination, const FloatPoint&amp; source, const FloatSize&amp; tileSize, const FloatSize&amp; spacing, const ImagePaintingOptions&amp; = { });
&gt; WEBCORE_EXPORT virtual ImageDrawResult drawTiledImage(Image&amp;, const FloatRect&amp; destination, const FloatRect&amp; source, const FloatSize&amp; tileScaleFactor, Image::TileRule, Image::TileRule, const ImagePaintingOptions&amp; = { });
&gt; virtual void drawPattern(NativeImage&amp;, const FloatSize&amp; imageSize, const FloatRect&amp; destRect, const FloatRect&amp; tileRect, const AffineTransform&amp; patternTransform, const FloatPoint&amp; phase, const FloatSize&amp; spacing, const ImagePaintingOptions&amp; = { }) = 0;
&gt; virtual void scale(const FloatSize&amp;) = 0;
&gt; void translate(const FloatSize&amp; size) { translate(size.width(), size.height()); }
&gt; 
&gt; I reached the whole source code for &quot;(FloatSize &quot; and I found 39 hits. I searched the whole source code for &quot;(const FloatSize&amp;&quot; and I found 249 hits.

Yes, I think const FloatSize&amp; has been a long term bad habit. We should do some investigation. I think it’s hurting performance instead of helping it. Now that we are on 64-bit platforms, a FloatSize is the same size as a pointer to a FloatSize. But.I understand if you don}t want to start here.

&gt;&gt;&gt; Source/WebCore/platform/graphics/GraphicsContext.cpp:571
&gt;&gt;&gt; +    ImageBuffer::sizeNeedsClamping(size, clampingScale);
&gt;&gt; 
&gt;&gt; This seems like a peculiar function name. It sounds like it would return a boolean indicating whether a size needs clamping.
&gt; 
&gt; bool ImageBuffer::sizeNeedsClamping(const FloatSize&amp; size, FloatSize&amp; scale)
&gt; 
&gt; It returns this Boolean but it also changes &apos;scale&apos; such that &quot;size * scale&quot; will not need clamping. I can change the name of this function in a operate patch since this one is getting bigger and bigger.

Sounds fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838367</commentid>
    <comment_count>17</comment_count>
      <attachid>451154</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-02-07 14:37:46 -0800</bug_when>
    <thetext>Created attachment 451154
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838371</commentid>
    <comment_count>18</comment_count>
      <attachid>450975</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-02-07 14:42:20 -0800</bug_when>
    <thetext>Comment on attachment 450975
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/cg/PDFDocumentImage.cpp:243
&gt;&gt; +    m_cachedImageBuffer = context.GraphicsContext::createCompatibleImageBuffer(cachedImageSize);
&gt; 
&gt; I think a separate named function would be better than calling through to GraphicsContext::createCompatibleImageBuffer. Can just have GraphicsContext::createCompatibleImageBuffer be an inline function that calls that named function. The name of that function would make it clearer what is going on here, with less burden on the comment.

The function GraphicsContext::createInProcessCompatibleImageBuffer() is added for this purpose and it will be called from this function and will be used for similar cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838778</commentid>
    <comment_count>19</comment_count>
      <attachid>451154</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-02-08 11:14:41 -0800</bug_when>
    <thetext>Comment on attachment 451154
Patch

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

&gt; Source/WebCore/platform/cocoa/ThemeCocoa.mm:114
&gt; +    // Create in-process ImageBuffer since the decoding of PDF images has to happen in WebProcess.
&gt; +    auto imageBuffer = context.createInProcessCompatibleImageBuffer(size);

I don&apos;t know how, as a normal webkit developer, I&apos;d know that I need to use an in-process buffer in some situations. Maybe instead we should have a &quot;purpose&quot; optionset, and if it contains &quot;Purpose::PDF&quot; then we do in-process?

&gt; Source/WebCore/platform/graphics/GraphicsContext.cpp:666
&gt; +RefPtr&lt;ImageBuffer&gt; GraphicsContext::createInProcessCompatibleImageBuffer(const FloatSize&amp; size, const DestinationColorSpace&amp; colorSpace) const
&gt; +{
&gt; +    return createImageBuffer(size, scaleFactor(), colorSpace, RenderingMode::Unaccelerated, CreateMethod::Base);
&gt; +}
&gt; +
&gt; +RefPtr&lt;ImageBuffer&gt; GraphicsContext::createInProcessCompatibleImageBuffer(const FloatRect&amp; rect, const DestinationColorSpace&amp; colorSpace) const
&gt; +{
&gt; +    return createImageBuffer(rect, scaleFactor(), colorSpace, RenderingMode::Unaccelerated, CreateMethod::Base);
&gt; +}

The original meaning of &quot;compatible&quot; was &quot;match accelerated&quot; but that&apos;s no longer true here. Also, this code leaks WebKit-level process stuff down here into WebCore.

Can we instead use CreateMethod::Derived then have the derived class make the determination that it has to be an in-process buffer?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839031</commentid>
    <comment_count>20</comment_count>
      <attachid>451341</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-02-08 23:22:04 -0800</bug_when>
    <thetext>Created attachment 451341
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839279</commentid>
    <comment_count>21</comment_count>
      <attachid>451154</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-02-09 10:48:27 -0800</bug_when>
    <thetext>Comment on attachment 451154
Patch

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

&gt;&gt; Source/WebCore/platform/cocoa/ThemeCocoa.mm:114
&gt;&gt; +    auto imageBuffer = context.createInProcessCompatibleImageBuffer(size);
&gt; 
&gt; I don&apos;t know how, as a normal webkit developer, I&apos;d know that I need to use an in-process buffer in some situations. Maybe instead we should have a &quot;purpose&quot; optionset, and if it contains &quot;Purpose::PDF&quot; then we do in-process?

I added the following enum:

    enum class RenderingMethod : uint8_t {
        Default,
        Local,
        DisplayList
    };

And I added it as an argument to createCompatibleImageBuffer(). For the PDF and SVG font cases, we should pass RenderingMethod::Local. This will indicate the compatible ImageBuffer is in-process or &apos;local&apos; regardless of the type of the underlying ImageBuffer of the GraphicsContext. This call looks like this:

    // Create a local ImageBuffer because decoding the PDF images has to happen in WebProcess.
    auto imageBuffer = context.createCompatibleImageBuffer(size, DestinationColorSpace::SRGB(), RenderingMethod::Local);

&gt;&gt; Source/WebCore/platform/graphics/GraphicsContext.cpp:666
&gt;&gt; +}
&gt; 
&gt; The original meaning of &quot;compatible&quot; was &quot;match accelerated&quot; but that&apos;s no longer true here. Also, this code leaks WebKit-level process stuff down here into WebCore.
&gt; 
&gt; Can we instead use CreateMethod::Derived then have the derived class make the determination that it has to be an in-process buffer?

This function and the enum CreateMethod have been removed. Instead we can use createCompatibleImageBuffer with the new enum RenderingMethod. By default the RenderingMode of the compatible ImageBuffer will match the RenderingMode of the underlying ImageBuffer of the GraphicsContext. So this is the new implementation of this function: 

RefPtr&lt;ImageBuffer&gt; GraphicsContext::createCompatibleImageBuffer(const FloatRect&amp; rect, const DestinationColorSpace&amp; colorSpace, RenderingMethod renderingMethod) const
{
    return createImageBuffer(rect, scaleFactor(), colorSpace, renderingMode(), renderingMethod);
}

So we will allow creating in-process ImageBuffers with IOSurface backend as long as the underlying ImageBuffer of the GraphicsContext itself is in-process. But we will override this behavior for RemoteImageBufferProxy. So the implementation of this function for RemoteDisplayListRecorderProxy will look like this:

RefPtr&lt;ImageBuffer&gt; RemoteDisplayListRecorderProxy::createCompatibleImageBuffer(const FloatRect&amp; rect, const DestinationColorSpace&amp; colorSpace, RenderingMethod renderingMethod) const
{
    auto renderingMode = renderingMethod == RenderingMethod::Default ? this-&gt;renderingMode() : RenderingMode::Unaccelerated;
    return GraphicsContext::createImageBuffer(rect, scaleFactor(), colorSpace, renderingMode, renderingMethod);
}

Since the underlying ImageBuffer of the GraphicsContext is remote and we are asked to create an in-porcess ImageBuffer, it does not make sense to create it with IOSurface backend.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839408</commentid>
    <comment_count>22</comment_count>
      <attachid>451341</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-02-09 14:26:52 -0800</bug_when>
    <thetext>Comment on attachment 451341
Patch

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

&gt; Source/WebCore/rendering/svg/RenderSVGResourceGradient.cpp:70
&gt; +    // Ignore 2D rotation, as it doesn&apos;t affect the size of the mask.
&gt; +    FloatSize scale(absoluteTransform.xScale(), absoluteTransform.yScale());
&gt; +
&gt; +    // Determine scale factor for the clipper. The size of intermediate ImageBuffers shouldn&apos;t be bigger than kMaxFilterSize.
&gt; +    ImageBuffer::sizeNeedsClamping(repaintRect.size(), scale);
&gt; +
&gt; +    auto maskImage = context-&gt;createImageBuffer(repaintRect, scale);

There&apos;s a bit of repeated code here; I wonder if it should be moved into a helper method.

&gt; Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.cpp:482
&gt; +    auto renderingMode = renderingMethod == RenderingMethod::Default ? this-&gt;renderingMode() : RenderingMode::Unaccelerated;

This implicit impact of renderingMethod on renderingMode is a bit subtle.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839522</commentid>
    <comment_count>23</comment_count>
      <attachid>451341</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-02-09 20:47:20 -0800</bug_when>
    <thetext>Comment on attachment 451341
Patch

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

&gt;&gt; Source/WebCore/rendering/svg/RenderSVGResourceGradient.cpp:70
&gt;&gt; +    auto maskImage = context-&gt;createImageBuffer(repaintRect, scale);
&gt; 
&gt; There&apos;s a bit of repeated code here; I wonder if it should be moved into a helper method.

I agree. I will clean it in a separate patch.

&gt;&gt; Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.cpp:482
&gt;&gt; +    auto renderingMode = renderingMethod == RenderingMethod::Default ? this-&gt;renderingMode() : RenderingMode::Unaccelerated;
&gt; 
&gt; This implicit impact of renderingMethod on renderingMode is a bit subtle.

If renderingMethod != RenderingMethod::Default, this means the compatible ImageBuffer is in-process So it does not make sense to be drawing on RemoteImageBufferProxy (which was created many for security reasons) and then allow creating in-process ImageBuffer with IOSurface backend. I will add a comment in the clean-up patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839527</commentid>
    <comment_count>24</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-09 21:19:14 -0800</bug_when>
    <thetext>Committed r289518 (247049@main): &lt;https://commits.webkit.org/247049@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 451341.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839542</commentid>
    <comment_count>25</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-02-10 00:03:05 -0800</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839543</commentid>
    <comment_count>26</comment_count>
      <attachid>451500</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-02-10 00:03:08 -0800</bug_when>
    <thetext>Created attachment 451500
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839544</commentid>
    <comment_count>27</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-02-10 00:04:02 -0800</bug_when>
    <thetext>Oh, somehow webkit-patch upload got very confused.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450210</attachid>
            <date>2022-01-28 01:05:02 -0800</date>
            <delta_ts>2022-01-28 11:28:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235758-20220128010501.patch</filename>
            <type>text/plain</type>
            <size>44985</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NTQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2U1MDRmM2FkYmQ2ZDY5
OTllMzAxNWFlMWIxZTRkNzFlYmQ1MmNhOC4uNTIyMzc3YmFkMDIxNGQ1N2U1MWVkNGNlNzgzODBl
NzAzMmQ3MmY0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDIyLTAxLTI4ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
TW92ZSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyKCkgdG8gR3JhcGhp
Y3NDb250ZXh0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzU3NTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcigpIHdpbGwgYmUg
YWJsZSB0byBjcmVhdGUgYW4KKyAgICAgICAgSW1hZ2VCdWZmZXIgc2ltaWxhciB0byB0aGUgdW5k
ZXJseWluZyBJbWFnZUJ1ZmZlciBvZiB0aGUgR3JhcGhpY3NDb250ZXh0LgorICAgICAgICBSZWNv
cmRlckltcGwgYW5kIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eSBhcmUgc3VwZXIgY2xh
c3NlcyBvZgorICAgICAgICBHcmFwaGljc0NvbnRleHQsIHNvIHRoZXkgY2FuIG92ZXJyaWRlIHRo
aXMgbWV0aG9kIGFuZCByZXR1cm4gdGhlIGRlc2lyZWQKKyAgICAgICAgdHlwZSBvZiBJbWFnZUJ1
ZmZlci4KKworICAgICAgICAqIGh0bWwvQ3VzdG9tUGFpbnRDYW52YXMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q3VzdG9tUGFpbnRDYW52YXM6OnJlcGxheURpc3BsYXlMaXN0IGNvbnN0KToKKyAg
ICAgICAgKiBodG1sL0N1c3RvbVBhaW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3Vz
dG9tUGFpbnRJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIGh0bWwvT2Zmc2NyZWVuQ2Fu
dmFzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9mZnNjcmVlbkNhbnZhczo6dHJhbnNmZXJUb0lt
YWdlQml0bWFwKToKKyAgICAgICAgKFdlYkNvcmU6Ok9mZnNjcmVlbkNhbnZhczo6Y29tbWl0VG9Q
bGFjZWhvbGRlckNhbnZhcyk6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRCYXNlOjpkcmF3SW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1RoZW1lQ29j
b2EubW06CisgICAgICAgIChXZWJDb3JlOjpkcmF3QXBwbGVQYXlCdXR0b24pOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJp
dG1hcEltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
ZGllbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFkaWVudEltYWdlOjpkcmF3UGF0
dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y29tcGF0aWJsZUltYWdlQnVmZmVy
U2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNvbXBhdGli
bGVJbWFnZUJ1ZmZlclJlY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpjcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpjcmVhdGVDb21wYXRpYmxlQ29uY3JldGVJbWFnZUJ1ZmZlciBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsaXBUb0RyYXdpbmdD
b21tYW5kcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNvbXBhdGlibGVCdWZmZXJTaXplKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpjb21wYXRpYmxlQnVmZmVySW5m
byk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y29weVJlY3RUb0J1
ZmZlcik6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3UGF0
dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjp1cGRhdGVDYWNoZWRJbWFn
ZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OmRyYXcpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0RyYXdHbHlwaHNSZWNvcmRlckNv
cmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdHbHlwaHNSZWNvcmRlcjo6ZHJhd09U
U1ZHUnVuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZWNvcmRlckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJl
Y29yZGVySW1wbDo6Y3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZXBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXI6OmFw
cGx5SXRlbSk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tOgorICAgICAgICAo
V2ViQ29yZTo6VGhlbWVNYWM6OmRyYXdDZWxsT3JGb2N1c1JpbmdXaXRoVmlld0ludG9Db250ZXh0
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6cGF0dGVybkZvckRlc2NyaXB0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVGhlbWVDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQ29jb2E6OnBh
aW50QXBwbGVQYXlCdXR0b24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWludExpc3RCdXR0b25Gb3JJ
bnB1dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRQcm9ncmVzc0Jh
cik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlcmluZ0NvbnRleHQ6OmJ1ZmZlckZvcmVncm91bmQpOgor
ICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdJbWFnZTo6ZHJhd1BhdHRlcm5Gb3JDb250YWluZXIpOgorCiAyMDIyLTAxLTI1ICBaaXJhbiBT
dW4gIDx6c3VuQGlnYWxpYS5jb20+CiAKICAgICAgICAgW2Nzcy1ncmlkXSBGaXggZ3JpZCBzaG9y
dGhhbmQgZXhwYW5zaW9uIG9mIGluaXRpYWwgdmFsdWVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDhjMzA4YmMyM2Nl
ZWNiY2EwYTEzOGVkMGU1MTc2M2I1YzE3ZTY5YmQuLjBjYmZjZTZlMmJjYmI3YjU0ZjQwZGE0YWNh
MTQ5YWI2NDZhY2M4YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjItMDEtMjggIFNh
aWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNz
XSBNb3ZlIEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIoKSB0byBHcmFw
aGljc0NvbnRleHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzNTc1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6YmVnaW5DbGlwVG9E
cmF3aW5nQ29tbWFuZHMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZURp
c3BsYXlMaXN0UmVjb3JkZXJQcm94eTo6Y3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyIGNvbnN0
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJl
Y29yZGVyUHJveHkuaDoKKwogMjAyMi0wMS0yNCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4Zmll
bGRAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjI4MjMyMCk6IFtDb2NvYV0gVXNl
ci1pbnN0YWxsZWQgZm9udHMgZG9uJ3Qgd29yayBpbiB0aGUgR1BVIFByb2Nlc3MgKGluIFdLV2Vi
VmlldykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRDYW52YXMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWludENhbnZhcy5jcHAKaW5kZXggMmMx
YTNhYTZjNjU3OTNlYzZmNWQ4NGJkYTRlZjczZWM2OTY5OGVhMy4uNDA0MjkxMWQwN2JjNzc4Mzkw
MzAxMzFkNzhkNzNhNTU3YjYzZDBlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9D
dXN0b21QYWludENhbnZhcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWlu
dENhbnZhcy5jcHAKQEAgLTczLDcgKzczLDcgQEAgdm9pZCBDdXN0b21QYWludENhbnZhczo6cmVw
bGF5RGlzcGxheUxpc3QoR3JhcGhpY3NDb250ZXh0KiBjdHgpIGNvbnN0CiAgICAgLy8gRklYTUU6
IFVzaW5nIGFuIGludGVybWVkaWF0ZSBidWZmZXIgaXMgbm90IG5lZWRlZCBpZiB0aGVyZSBhcmUg
bm8gY29tcG9zaXRlIG9wZXJhdGlvbnMuCiAgICAgYXV0byBjbGlwQm91bmRzID0gY3R4LT5jbGlw
Qm91bmRzKCk7CiAKLSAgICBhdXRvIGltYWdlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGli
bGVCdWZmZXIoY2xpcEJvdW5kcy5zaXplKCksICpjdHgpOworICAgIGF1dG8gaW1hZ2UgPSBjdHgt
PmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihjbGlwQm91bmRzLnNpemUoKSk7CiAgICAgaWYg
KCFpbWFnZSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0N1c3RvbVBhaW50SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWlu
dEltYWdlLmNwcAppbmRleCBmNDcxOTk0NmM1OGUwNTliZTMzZGI3MWQzZjdiNmY2MDkyMGE1Y2Fj
Li5mYjhhZTZiZmQ3MWYzZWY2MWEzNDBlMjcwMDE0MDM4ZTI3NjY5NzBmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0N1c3RvbVBhaW50SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvQ3VzdG9tUGFpbnRJbWFnZS5jcHAKQEAgLTE5OSw3ICsxOTksNyBAQCB2b2lkIEN1
c3RvbVBhaW50SW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdAogICAgIGFkanVzdGVkUGF0dGVybkNUTS5zY2FsZSgxLjAgLyB4U2Nh
bGUsIDEuMCAvIHlTY2FsZSk7CiAgICAgYWRqdXN0ZWRTcmNSZWN0LnNjYWxlKHhTY2FsZSwgeVNj
YWxlKTsKIAotICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVC
dWZmZXIoYWRqdXN0ZWRTaXplLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgZGVzdENv
bnRleHQpOworICAgIGF1dG8gYnVmZmVyID0gZGVzdENvbnRleHQuY3JlYXRlQ29tcGF0aWJsZUlt
YWdlQnVmZmVyKGFkanVzdGVkU2l6ZSk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVy
bjsKICAgICBkb0N1c3RvbVBhaW50KGJ1ZmZlci0+Y29udGV4dCgpLCBhZGp1c3RlZFNpemUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwCmluZGV4IDRjOWM4Y2ZmMThiOWM3
ZWExMmQxNDEzMTJjNjYwNjY2ZGNmMGM4NzkuLmQxYmI4M2FkMzMwNzg3ZmQyODhkNzM0ZWE1YmQw
NjgxODU5ODg2ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2Fu
dmFzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAKQEAg
LTI4Myw3ICsyODMsNyBAQCBFeGNlcHRpb25PcjxSZWZQdHI8SW1hZ2VCaXRtYXA+PiBPZmZzY3Jl
ZW5DYW52YXM6OnRyYW5zZmVyVG9JbWFnZUJpdG1hcCgpCiAgICAgICAgIC8vIEFzIHRoZSBjYW52
YXMgY29udGV4dCBzdGF0ZSBpcyBzdG9yZWQgaW4gR3JhcGhpY3NDb250ZXh0LCB3aGljaCBpcyBv
d25lZAogICAgICAgICAvLyBieSBidWZmZXIoKSwgdG8gYXZvaWQgcmVzZXR0aW5nIHRoZSBjb250
ZXh0IHN0YXRlLCB3ZSBoYXZlIHRvIG1ha2UgYSBjb3B5IGFuZAogICAgICAgICAvLyBjbGVhciB0
aGUgb3JpZ2luYWwgYnVmZmVyIHJhdGhlciB0aGFuIHJldHVybmluZyB0aGUgb3JpZ2luYWwgYnVm
ZmVyLgotICAgICAgICBhdXRvIGJ1ZmZlckNvcHkgPSBidWZmZXIoKS0+Y29weVJlY3RUb0J1ZmZl
cihGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBidWZmZXIoKS0+bG9naWNhbFNpemUoKSksIGJ1ZmZl
cigpLT5jb2xvclNwYWNlKCksICpkcmF3aW5nQ29udGV4dCgpKTsKKyAgICAgICAgYXV0byBidWZm
ZXJDb3B5ID0gZHJhd2luZ0NvbnRleHQoKS0+Y3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyKCpi
dWZmZXIoKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgYnVmZmVyKCktPmxvZ2ljYWxTaXplKCkp
LCBidWZmZXIoKS0+Y29sb3JTcGFjZSgpKTsKICAgICAgICAgZG93bmNhc3Q8T2Zmc2NyZWVuQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEPigqbV9jb250ZXh0KS5jbGVhckNhbnZhcygpOwogICAgICAg
ICBjbGVhckNvcGllZEltYWdlKCk7CiAKQEAgLTQ1MSwxNCArNDUxLDE0IEBAIHZvaWQgT2Zmc2Ny
ZWVuQ2FudmFzOjpjb21taXRUb1BsYWNlaG9sZGVyQ2FudmFzKCkKICAgICAgICAgbV9jb250ZXh0
LT5wYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcygpOwogCiAgICAgaWYgKG1fcGxhY2Vob2xk
ZXJEYXRhLT5idWZmZXJQaXBlU291cmNlKSB7Ci0gICAgICAgIGF1dG8gYnVmZmVyQ29weSA9IGlt
YWdlQnVmZmVyLT5jb3B5UmVjdFRvQnVmZmVyKEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdl
QnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIGlt
YWdlQnVmZmVyLT5jb250ZXh0KCkpOworICAgICAgICBhdXRvIGJ1ZmZlckNvcHkgPSBpbWFnZUJ1
ZmZlci0+Y29udGV4dCgpLmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIs
IEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSk7CiAg
ICAgICAgIGlmIChidWZmZXJDb3B5KQogICAgICAgICAgICAgbV9wbGFjZWhvbGRlckRhdGEtPmJ1
ZmZlclBpcGVTb3VyY2UtPmhhbmRsZShXVEZNb3ZlKGJ1ZmZlckNvcHkpKTsKICAgICB9CiAKICAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9wbGFjZWhvbGRlckRhdGEtPmJ1ZmZlckxvY2sgfTsKICAgICBi
b29sIHNob3VsZFB1c2hCdWZmZXIgPSAhbV9wbGFjZWhvbGRlckRhdGEtPnBlbmRpbmdDb21taXRC
dWZmZXI7Ci0gICAgbV9wbGFjZWhvbGRlckRhdGEtPnBlbmRpbmdDb21taXRCdWZmZXIgPSBpbWFn
ZUJ1ZmZlci0+Y29weVJlY3RUb0J1ZmZlcihGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZUJ1
ZmZlci0+bG9naWNhbFNpemUoKSksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBpbWFn
ZUJ1ZmZlci0+Y29udGV4dCgpKTsKKyAgICBtX3BsYWNlaG9sZGVyRGF0YS0+cGVuZGluZ0NvbW1p
dEJ1ZmZlciA9IGltYWdlQnVmZmVyLT5jb250ZXh0KCkuY3JlYXRlQ29tcGF0aWJsZUltYWdlQnVm
ZmVyKCppbWFnZUJ1ZmZlciwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2VCdWZmZXItPmxv
Z2ljYWxTaXplKCkpKTsKICAgICBpZiAobV9wbGFjZWhvbGRlckRhdGEtPnBlbmRpbmdDb21taXRC
dWZmZXIgJiYgc2hvdWxkUHVzaEJ1ZmZlcikKICAgICAgICAgcHVzaEJ1ZmZlclRvUGxhY2Vob2xk
ZXIoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyREJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKaW5kZXggNTc3ZDU1ZTdmMDQyYTc4NDgyMjBl
MzhhYzMyZDMwNjk4MzZhMzg5ZC4uOTkxMjM2YjE5MTYzNWViYjQ2Mzc1NGEzOTVjNzFlZmE5OGQw
NDlmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKQEAgLTE2MTEsNyArMTYxMSw3IEBAIEV4Y2Vw
dGlvbk9yPHZvaWQ+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRyYXdJbWFnZShDYW52
YXNCYXNlJiBzb3VyY2VDYW52CiAgICAgICAgIHJlcGFpbnRFbnRpcmVDYW52YXMgPSB0cnVlOwog
ICAgIH0gZWxzZSBpZiAoc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUgPT0gQ29tcG9zaXRlT3BlcmF0
b3I6OkNvcHkpIHsKICAgICAgICAgaWYgKCZzb3VyY2VDYW52YXMgPT0gJmNhbnZhc0Jhc2UoKSkg
ewotICAgICAgICAgICAgaWYgKGF1dG8gY29weSA9IGJ1ZmZlci0+Y29weVJlY3RUb0J1ZmZlcihz
cmNSZWN0LCBjb2xvclNwYWNlKCksICpjKSkgeworICAgICAgICAgICAgaWYgKGF1dG8gY29weSA9
IGMtPmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcigqYnVmZmVyLCBzcmNSZWN0LCBjb2xvclNw
YWNlKCkpKSB7CiAgICAgICAgICAgICAgICAgY2xlYXJDYW52YXMoKTsKICAgICAgICAgICAgICAg
ICBjLT5kcmF3SW1hZ2VCdWZmZXIoKmNvcHksIGRzdFJlY3QsIHsgeyB9LCBzcmNSZWN0LnNpemUo
KSB9LCB7IHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlLCBzdGF0ZSgpLmdsb2JhbEJsZW5kIH0pOwog
ICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
VGhlbWVDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1RoZW1lQ29jb2Eu
bW0KaW5kZXggZWNkNTBiNzBmZGJiZjZlOTgzZjNhNzE1NjUyN2IyMTA2ODg0ZmJmZS4uZTJiNDkw
NGQ4Zjg2MjhkMzhiNjE3MGUwYTU4MDdjMzU1NjFjZjE1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvVGhlbWVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9UaGVtZUNvY29hLm1tCkBAIC0xMTAsNyArMTEwLDcgQEAgc3RhdGljIENH
UERGUGFnZVJlZiBhcHBsZVBheUJ1dHRvbkxvZ29XaGl0ZSgpCiAKIHN0YXRpYyB2b2lkIGRyYXdB
cHBsZVBheUJ1dHRvbihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIENHUERGUGFnZVJlZiBwYWdl
LCBjb25zdCBGbG9hdFNpemUmIHNpemUpCiB7Ci0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdl
QnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKHNpemUsIGNvbnRleHQpOworICAgIGF1dG8g
aW1hZ2VCdWZmZXIgPSBjb250ZXh0LmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihzaXplKTsK
ICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAppbmRleCA4MDI3NDM1YWQy
OTQ1NjYyOThhNzkxYjNhZjZhZmE5YmYyNzgxZTY4Li41NzQ1NDQ3YzhjNTRmZjg4YTkzNjZmNTBm
ZWIzNjRkNzc4MGNiMDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9CaXRtYXBJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQml0bWFwSW1hZ2UuY3BwCkBAIC0zNDcsNyArMzQ3LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6
ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LAogICAgIH0KIAogICAgIGlmICghbV9jYWNoZWRJbWFnZSkgewotICAgICAgICBhdXRvIGJ1
ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGV4cGFuZGVkSW50U2l6
ZSh0aWxlUmVjdC5zaXplKCkpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgY3R4dCk7
CisgICAgICAgIGF1dG8gYnVmZmVyID0gY3R4dC5jcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIo
ZXhwYW5kZWRJbnRTaXplKHRpbGVSZWN0LnNpemUoKSkpOwogICAgICAgICBpZiAoIWJ1ZmZlcikK
ICAgICAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFkaWVudEltYWdlLmNwcAppbmRleCBmZWYzNmU1N2E2NWExNDg2OTBkYjMwYTJj
MmE1Njg0ZDAwMGM4YWRjLi5iZGE3MDExMDk4ZmE1MTdhNjQ0MzJhZmVjYmQwNTNjMWY5NTk1YzUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudElt
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudElt
YWdlLmNwcApAQCAtNzIsNyArNzIsNyBAQCB2b2lkIEdyYWRpZW50SW1hZ2U6OmRyYXdQYXR0ZXJu
KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZAogICAgIHVu
c2lnbmVkIGdlbmVyYXRvckhhc2ggPSBtX2dyYWRpZW50LT5oYXNoKCk7CiAKICAgICBpZiAoIW1f
Y2FjaGVkSW1hZ2UgfHwgbV9jYWNoZWRHZW5lcmF0b3JIYXNoICE9IGdlbmVyYXRvckhhc2ggfHwg
bV9jYWNoZWRBZGp1c3RlZFNpemUgIT0gYWRqdXN0ZWRTaXplIHx8ICFhcmVFc3NlbnRpYWxseUVx
dWFsKGRlc3RDb250ZXh0LnNjYWxlRmFjdG9yKCksIG1fY2FjaGVkU2NhbGVGYWN0b3IpKSB7Ci0g
ICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1
ZmZlcihhZGp1c3RlZFNpemUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBkZXN0Q29u
dGV4dCk7CisgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBkZXN0Q29udGV4dC5jcmVhdGVDb21w
YXRpYmxlSW1hZ2VCdWZmZXIoYWRqdXN0ZWRTaXplKTsKICAgICAgICAgaWYgKCFpbWFnZUJ1ZmZl
cikKICAgICAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggYTQ5MmU5OGRhMjgwYzIzZWM3
MzYzMDdhZGUyZGRlZjMyYmZhNGNlZi4uOTlhZmI3YjZkMzZmY2NiZTRmOGI0Zjk0M2NhMmU1Nzc1
MDVhYTgyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuY3BwCkBAIC01NTEsNiArNTUxLDc0IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpkcmF3QmlkaVRleHQoY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IFRleHRSdW4m
IHJ1biwKICAgICBiaWRpUnVucy5jbGVhcigpOwogfQogCitJbnRTaXplIEdyYXBoaWNzQ29udGV4
dDo6Y29tcGF0aWJsZUltYWdlQnVmZmVyU2l6ZShjb25zdCBGbG9hdFNpemUmIHNpemUpIGNvbnN0
Cit7CisgICAgLy8gRW5sYXJnZSB0aGUgYnVmZmVyIHNpemUgaWYgdGhlIGNvbnRleHQncyB0cmFu
c2Zvcm0gaXMgc2NhbGluZyBpdCBzbyB3ZSBuZWVkIGEgaGlnaGVyCisgICAgLy8gcmVzb2x1dGlv
biB0aGFuIG9uZSBwaXhlbCBwZXIgdW5pdC4KKyAgICByZXR1cm4gZXhwYW5kZWRJbnRTaXplKHNp
emUgKiBzY2FsZUZhY3RvcigpKTsKK30KKworSW50UmVjdCBHcmFwaGljc0NvbnRleHQ6OmNvbXBh
dGlibGVJbWFnZUJ1ZmZlclJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KSBjb25zdAoreworICAg
IGF1dG8gc2NhbGVkUmVjdCA9IHJlY3Q7CisgICAgc2NhbGVkUmVjdC5zY2FsZShzY2FsZUZhY3Rv
cigpKTsKKworICAgIEZsb2F0U2l6ZSBzY2FsZSgxLCAxKTsKKyAgICBJbWFnZUJ1ZmZlcjo6c2l6
ZU5lZWRzQ2xhbXBpbmcoc2NhbGVkUmVjdC5zaXplKCksIHNjYWxlKTsKKyAgICBzY2FsZWRSZWN0
LnNjYWxlKHNjYWxlKTsKKworICAgIHJldHVybiBlbmNsb3NpbmdJbnRSZWN0KHNjYWxlZFJlY3Qp
OworfQorCitSZWZQdHI8SW1hZ2VCdWZmZXI+IEdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlQ29tcGF0
aWJsZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNj
YWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgcmVuZGVyaW5nTW9kZSgpLCByZXNv
bHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCk7Cit9CisKK1JlZlB0
cjxJbWFnZUJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0OjpjcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZm
ZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNv
bG9yU3BhY2UpIGNvbnN0Cit7CisgICAgaWYgKHNpemUuaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgIEZsb2F0U2l6ZSBzY2FsZWRTaXplID0gY29tcGF0aWJsZUltYWdl
QnVmZmVyU2l6ZShzaXplKTsKKworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBjcmVhdGVDb21wYXRp
YmxlSW1hZ2VCdWZmZXIoc2NhbGVkU2l6ZSwgMSwgY29sb3JTcGFjZSk7CisgICAgaWYgKCFpbWFn
ZUJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBpbWFnZUJ1ZmZlci0+Y29u
dGV4dCgpLnNjYWxlKHNjYWxlZFNpemUgLyBzaXplKTsKKyAgICByZXR1cm4gaW1hZ2VCdWZmZXI7
Cit9CisKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0OjpjcmVhdGVDb21wYXRp
YmxlSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIHNvdXJjZUltYWdlLCBjb25zdCBGbG9hdFJlY3Qm
IHJlY3QsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSkgY29uc3QKK3sK
KyAgICBpZiAocmVjdC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAg
YXV0byBpbWFnZUJ1ZmZlciA9IGNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihyZWN0LnNpemUo
KSwgY29sb3JTcGFjZSk7CisgICAgaWYgKCFpbWFnZUJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcihzb3Vy
Y2VJbWFnZSwgLXJlY3QubG9jYXRpb24oKSk7CisgICAgcmV0dXJuIGltYWdlQnVmZmVyOworfQor
CitSZWZQdHI8SW1hZ2VCdWZmZXI+IEdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlQ29tcGF0aWJsZUNv
bmNyZXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UpIGNvbnN0Cit7CisgICAgaWYgKHJlY3QuaXNFbXB0eSgp
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIEZsb2F0UmVjdCBzY2FsZWRSZWN0ID0g
Y29tcGF0aWJsZUltYWdlQnVmZmVyUmVjdChyZWN0KTsKKworICAgIGF1dG8gaW1hZ2VCdWZmZXIg
PSBHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihzY2FsZWRSZWN0
LnNpemUoKSwgMSwgY29sb3JTcGFjZSk7CisgICAgaWYgKCFpbWFnZUJ1ZmZlcikKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnNjYWxlKHNjYWxl
ZFJlY3Quc2l6ZSgpIC8gcmVjdC5zaXplKCkpOworICAgIGltYWdlQnVmZmVyLT5jb250ZXh0KCku
dHJhbnNsYXRlKC1lbmNsb3NpbmdJbnRSZWN0KHJlY3QpLmxvY2F0aW9uKCkpOworICAgIHJldHVy
biBpbWFnZUJ1ZmZlcjsKK30KKwogSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6ZHJh
d0ltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKIHsKICAgICByZXR1
cm4gZHJhd0ltYWdlKGltYWdlLCBGbG9hdFJlY3QoZGVzdGluYXRpb24sIGltYWdlLnNpemUoKSks
IEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdlLnNpemUoKSksIGltYWdlUGFpbnRpbmdPcHRp
b25zKTsKQEAgLTY2OCw3ICs3MzYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcE91dFJv
dW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJlY3QpCiAKIEdyYXBoaWNzQ29udGV4
dDo6Q2xpcFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvRHJh
d2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IERlc3RpbmF0
aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQm
KT4mJiBkcmF3aW5nRnVuY3Rpb24pCiB7Ci0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVm
ZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGRlc3RpbmF0aW9uLnNpemUoKSwgY29sb3JTcGFj
ZSwgKnRoaXMpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBjcmVhdGVDb21wYXRpYmxlSW1hZ2VC
dWZmZXIoZGVzdGluYXRpb24uc2l6ZSgpLCBjb2xvclNwYWNlKTsKICAgICBpZiAoIWltYWdlQnVm
ZmVyKQogICAgICAgICByZXR1cm4gQ2xpcFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0OjpGYWlsZWRU
b0NyZWF0ZUltYWdlQnVmZmVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IGNmNzA5MmRlMzNiYzViNzI4YWQ0NjFiMGZj
MDIxNzdmNjllZWZmMzIuLmI1YTNjYjI0ZDg5ZWM0ZTc0ZjAyZWRiMmZkNmY4MWJiMjE2YTBkYmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5oCkBAIC00MTYsNiArNDE2LDE1IEBAIHB1YmxpYzoKIAogICAgIC8vIEltYWdlcywgUGF0
dGVybnMsIGFuZCBNZWRpYQogCisgICAgSW50U2l6ZSBjb21wYXRpYmxlSW1hZ2VCdWZmZXJTaXpl
KGNvbnN0IEZsb2F0U2l6ZSYpIGNvbnN0OworICAgIEludFJlY3QgY29tcGF0aWJsZUltYWdlQnVm
ZmVyUmVjdChjb25zdCBGbG9hdFJlY3QmKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIoY29u
c3QgRmxvYXRTaXplJiwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2UmID0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpIGNvbnN0OworICAgIFdF
QkNPUkVfRVhQT1JUIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlQ29tcGF0aWJsZUltYWdlQnVm
ZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgPSBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSkgY29uc3Q7CisgICAgUmVmUHRyPEltYWdlQnVmZmVy
PiBjcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIHNvdXJjZUltYWdlLCBj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmID0gRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCKCkpIGNvbnN0OworCisgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBj
cmVhdGVDb21wYXRpYmxlQ29uY3JldGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmLCBjb25z
dCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmID0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkp
IGNvbnN0OworCiAgICAgdmlydHVhbCB2b2lkIGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYs
IGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9
KSA9IDA7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBJbWFnZURyYXdSZXN1bHQgZHJhd0ltYWdlKElt
YWdlJiwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiA9IHsgSW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdlIH0pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCmluZGV4IDAxOTNiZmIw
Zjk2YzdkMzQwNTNlNzY4YTBjMjU4ZmMxMjU3ODBmZDMuLjc3MTgyOGI2NDVjYjMxMTNiNTUzODdh
N2EyZTI0YzAyODMxNDc2MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJ1ZmZlci5jcHAKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChD
KSAyMDA5IERpcmsgU2NodWx6ZSA8a3JpdEB3ZWJraXQub3JnPgogICogQ29weXJpZ2h0IChDKSBS
ZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDExLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICog
Q29weXJpZ2h0IChDKSAyMDE2LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03Miw3NSArNzIsNiBAQCBSZWZQ
dHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXpl
LCBSZW5kZXJpbmdNb2RlIHJlbgogICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsKIH0KIAotUmVmUHRy
PEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBG
bG9hdFNpemUmIHNpemUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKLXsKLSAgICBp
ZiAoc2l6ZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgSW50U2l6
ZSBzY2FsZWRTaXplID0gSW1hZ2VCdWZmZXI6OmNvbXBhdGlibGVCdWZmZXJTaXplKHNpemUsIGNv
bnRleHQpOwotCi0gICAgUmVmUHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlcjsKLQotICAgIGlm
IChjb250ZXh0LnJlbmRlcmluZ01vZGUoKSA9PSBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCkK
LSAgICAgICAgaW1hZ2VCdWZmZXIgPSBBY2NlbGVyYXRlZEltYWdlQnVmZmVyOjpjcmVhdGUoc2Nh
bGVkU2l6ZSwgY29udGV4dCk7Ci0gICAgCi0gICAgaWYgKCFpbWFnZUJ1ZmZlcikKLSAgICAgICAg
aW1hZ2VCdWZmZXIgPSBVbmFjY2VsZXJhdGVkSW1hZ2VCdWZmZXI6OmNyZWF0ZShzY2FsZWRTaXpl
LCBjb250ZXh0KTsKLQotICAgIGlmICghaW1hZ2VCdWZmZXIpCi0gICAgICAgIHJldHVybiBudWxs
cHRyOwotCi0gICAgaW1hZ2VCdWZmZXItPmNvbnRleHQoKS5zY2FsZShzY2FsZWRTaXplIC8gc2l6
ZSk7Ci0gICAgcmV0dXJuIGltYWdlQnVmZmVyOwotfQotCi0vLyBUaGlzIGlzIHVzZWZ1bCB3aGVu
IHlvdSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgcGl4ZWwgZ3JpZCBvZiB0aGUgSW1hZ2VCdWZmZXIg
YWxpZ25zIHdpdGggdGhlIHBpeGVsIGdyaWQgb2YgdGhlIGNvbnRleHQuCi0vLyBTaW1wbHkgc2F5
aW5nIGNyZWF0ZUNvbXBhdGlibGVCdWZmZXIocmVjdC5zaXplKCksIGNvbnRleHQpIGlzbid0IHN1
ZmZpY2llbnQgaW4gdGhpcyBzaXR1YXRpb24sIGJlY2F1c2UgcmVjdC5sb2NhdGlvbigpIG1heSBu
b3QgbGllIG9uIGEgcGl4ZWwgYm91bmRhcnkuCi0vLyBJbiB0aGlzIHNpdHVhdGlvbiwgd2UgaGF2
ZSB0byBpbmZsYXRlIGJvdGggdGhlIGxlZnQgc2lkZSBhbmQgdGhlIHJpZ2h0IHNpZGUsIHdoaWNo
IGNhbiBsZWFkIHRvIGRpZmZlcmVudCByZXN1bHRzIHRoYW4KLS8vIGNyZWF0ZUNvbXBhdGlibGVC
dWZmZXIocmVjdC5zaXplKCksIGNvbnRleHQpIHdvdWxkIGhhdmUgcHJvZHVjZWQuCi1hdXRvIElt
YWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwg
Y29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSAtPiBzdGQ6Om9wdGlvbmFsPENvbXBhdGli
bGVCdWZmZXJEZXNjcmlwdGlvbj4KLXsKLSAgICBpZiAocmVjdC5pc0VtcHR5KCkpCi0gICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICBhdXRvIGluZm8gPSBJbWFnZUJ1ZmZlcjo6Y29t
cGF0aWJsZUJ1ZmZlckluZm8ocmVjdCwgY29udGV4dCk7Ci0KLSAgICBSZWZQdHI8SW1hZ2VCdWZm
ZXI+IGltYWdlQnVmZmVyOwotCi0gICAgaWYgKGNvbnRleHQucmVuZGVyaW5nTW9kZSgpID09IFJl
bmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkKQotICAgICAgICBpbWFnZUJ1ZmZlciA9IEFjY2VsZXJh
dGVkSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbmZvLnBoeXNpY2FsU2l6ZUluRGV2aWNlQ29vcmRpbmF0
ZXMsIGNvbnRleHQpOwotICAgIAotICAgIGlmICghaW1hZ2VCdWZmZXIpCi0gICAgICAgIGltYWdl
QnVmZmVyID0gVW5hY2NlbGVyYXRlZEltYWdlQnVmZmVyOjpjcmVhdGUoaW5mby5waHlzaWNhbFNp
emVJbkRldmljZUNvb3JkaW5hdGVzLCBjb250ZXh0KTsKLQotICAgIGlmICghaW1hZ2VCdWZmZXIp
Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICBpbWFnZUJ1ZmZlci0+Y29udGV4
dCgpLnNjYWxlKGluZm8uc2NhbGUpOwotICAgIGltYWdlQnVmZmVyLT5jb250ZXh0KCkudHJhbnNs
YXRlKC1pbmZvLmluZmxhdGVkUmVjdEluVXNlckNvb3JkaW5hdGVzLmxvY2F0aW9uKCkpOwotICAg
IHJldHVybiB7IHsgaW1hZ2VCdWZmZXIucmVsZWFzZU5vbk51bGwoKSwgaW5mby5pbmZsYXRlZFJl
Y3RJblVzZXJDb29yZGluYXRlcyB9IH07Ci19Ci0KLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VC
dWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBjb25z
dCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCkKLXsKLSAgICBpZiAoc2l6ZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBu
dWxscHRyOwotCi0gICAgSW50U2l6ZSBzY2FsZWRTaXplID0gSW1hZ2VCdWZmZXI6OmNvbXBhdGli
bGVCdWZmZXJTaXplKHNpemUsIGNvbnRleHQpOwotCi0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IElt
YWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKHNjYWxlZFNpemUsIDEsIGNvbG9yU3Bh
Y2UsIGNvbnRleHQpOwotICAgIGlmICghaW1hZ2VCdWZmZXIpCi0gICAgICAgIHJldHVybiBudWxs
cHRyOwotCi0gICAgaW1hZ2VCdWZmZXItPmNvbnRleHQoKS5zY2FsZShzY2FsZWRTaXplIC8gc2l6
ZSk7Ci0gICAgcmV0dXJuIGltYWdlQnVmZmVyOwotfQotCi1SZWZQdHI8SW1hZ2VCdWZmZXI+IElt
YWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwg
ZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9y
U3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKLXsKLSAgICByZXR1cm4gSW1h
Z2VCdWZmZXI6OmNyZWF0ZShzaXplLCBjb250ZXh0LnJlbmRlcmluZ01vZGUoKSwgcmVzb2x1dGlv
blNjYWxlLCBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwotfQotCiBib29sIEltYWdl
QnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhjb25zdCBGbG9hdFNpemUmIHNpemUpCiB7CiAgICAg
aWYgKHNpemUuaXNFbXB0eSgpKQpAQCAtMTg1LDU4ICsxMTYsNiBAQCBGbG9hdFJlY3QgSW1hZ2VC
dWZmZXI6OmNsYW1wZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICByZXR1cm4gRmxv
YXRSZWN0KHJlY3QubG9jYXRpb24oKSwgY2xhbXBlZFNpemUocmVjdC5zaXplKCkpKTsKIH0KIAot
SW50U2l6ZSBJbWFnZUJ1ZmZlcjo6Y29tcGF0aWJsZUJ1ZmZlclNpemUoY29uc3QgRmxvYXRTaXpl
JiBzaXplLCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCi17Ci0gICAgLy8gRW5sYXJn
ZSB0aGUgYnVmZmVyIHNpemUgaWYgdGhlIGNvbnRleHQncyB0cmFuc2Zvcm0gaXMgc2NhbGluZyBp
dCBzbyB3ZSBuZWVkIGEgaGlnaGVyCi0gICAgLy8gcmVzb2x1dGlvbiB0aGFuIG9uZSBwaXhlbCBw
ZXIgdW5pdC4KLSAgICByZXR1cm4gZXhwYW5kZWRJbnRTaXplKHNpemUgKiBjb250ZXh0LnNjYWxl
RmFjdG9yKCkpOwotfQotCi1hdXRvIEltYWdlQnVmZmVyOjpjb21wYXRpYmxlQnVmZmVySW5mbyhj
b25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgLT4g
Q29tcGF0aWJsZUJ1ZmZlckluZm8KLXsKLSAgICBhdXRvIHNjYWxlRmFjdG9yID0gY29udGV4dC5z
Y2FsZUZhY3RvcigpOwotICAgIGF1dG8gc2NhbGVkUmVjdCA9IHJlY3Q7Ci0gICAgc2NhbGVkUmVj
dC5zY2FsZShzY2FsZUZhY3Rvcik7Ci0gICAgYXV0byBpbmZsYXRlZFNjYWxlZFJlY3QgPSBlbmNs
b3NpbmdJbnRSZWN0KHNjYWxlZFJlY3QpOwotICAgIGF1dG8gaW5mbGF0ZWRSZWN0SW5Vc2VyQ29v
cmRpbmF0ZXMgPSBGbG9hdFJlY3QoaW5mbGF0ZWRTY2FsZWRSZWN0KTsKLQotICAgIC8vIFdlIGRv
bid0IHdhbnQgdG8gYWxsb2NhdGUgaHVnZSBJbWFnZUJ1ZmZlcnMgYmVjYXVzZSB0aGV5IGNhbiB0
YWtlIGEgbG90IG9mIG1lbW9yeSwKLSAgICAvLyBzbyBpZiB0aGUgc2l6ZSB3b3VsZCBoYXZlIGJl
ZW4gdG9vIGJpZywgZGVjcmVhc2UgcmVzb2x1dGlvbiBhbmQgc2NhbGUgdGhlIHJlc3VsdGluZyBj
b250ZXh0LgotICAgIC8vIFRoaXMgd2lsbCBtZWFuIHRoYXQgdGhlIEltYWdlQnVmZmVyIHdpbGwg
bG9zZSBxdWFsaXR5LCBidXQgd2lsbCBzdGlsbCBnZW5lcmFsbHkgbG9vayBjb3JyZWN0LgotICAg
IGNvbnN0ZXhwciBpbnQgbWF4RGltZW5zaW9uID0gNDA5NjsKLSAgICBpZiAoaW5mbGF0ZWRTY2Fs
ZWRSZWN0LndpZHRoKCkgPiBtYXhEaW1lbnNpb24pIHsKLSAgICAgICAgLy8gVGhlIHBpeGVsIGdy
aWRzIHdvbid0IGFsaWduIGFueSBtb3JlLCBzbyB0aGVyZSdzIG5vIG5lZWQgdG8gdHJ5IHRvIGhh
bmRsZSBmcmFjdGlvbnMgb2YgcGl4ZWxzLgotICAgICAgICBpbmZsYXRlZFNjYWxlZFJlY3Quc2V0
V2lkdGgobWF4RGltZW5zaW9uKTsKLSAgICAgICAgaW5mbGF0ZWRSZWN0SW5Vc2VyQ29vcmRpbmF0
ZXMuc2NhbGUobWF4RGltZW5zaW9uIC8gaW5mbGF0ZWRSZWN0SW5Vc2VyQ29vcmRpbmF0ZXMud2lk
dGgoKSwgMSk7Ci0gICAgICAgIHNjYWxlRmFjdG9yLnNldFdpZHRoKG1heERpbWVuc2lvbiAvIHJl
Y3Qud2lkdGgoKSk7Ci0gICAgfQotICAgIGlmIChpbmZsYXRlZFNjYWxlZFJlY3QuaGVpZ2h0KCkg
PiBtYXhEaW1lbnNpb24pIHsKLSAgICAgICAgLy8gVGhlIHBpeGVsIGdyaWRzIHdvbid0IGFsaWdu
IGFueSBtb3JlLCBzbyB0aGVyZSdzIG5vIG5lZWQgdG8gdHJ5IHRvIGhhbmRsZSBmcmFjdGlvbnMg
b2YgcGl4ZWxzLgotICAgICAgICBpbmZsYXRlZFNjYWxlZFJlY3Quc2V0SGVpZ2h0KG1heERpbWVu
c2lvbik7Ci0gICAgICAgIGluZmxhdGVkUmVjdEluVXNlckNvb3JkaW5hdGVzLnNjYWxlKDEsIG1h
eERpbWVuc2lvbiAvIGluZmxhdGVkUmVjdEluVXNlckNvb3JkaW5hdGVzLmhlaWdodCgpKTsKLSAg
ICAgICAgc2NhbGVGYWN0b3Iuc2V0SGVpZ2h0KG1heERpbWVuc2lvbiAvIHJlY3QuaGVpZ2h0KCkp
OwotICAgIH0KLQotICAgIGF1dG8gcGh5c2ljYWxTaXplSW5EZXZpY2VDb29yZGluYXRlcyA9IGlu
ZmxhdGVkU2NhbGVkUmVjdC5zaXplKCk7Ci0gICAgaW5mbGF0ZWRSZWN0SW5Vc2VyQ29vcmRpbmF0
ZXMuc2NhbGUoMS4wZiAvIHNjYWxlRmFjdG9yKTsKLSAgICByZXR1cm4geyBXVEZNb3ZlKHBoeXNp
Y2FsU2l6ZUluRGV2aWNlQ29vcmRpbmF0ZXMpLCBXVEZNb3ZlKGluZmxhdGVkUmVjdEluVXNlckNv
b3JkaW5hdGVzKSwgc2NhbGVGYWN0b3IgfTsKLX0KLQotUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFn
ZUJ1ZmZlcjo6Y29weVJlY3RUb0J1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IERl
c3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0KQotewotICAgIGlmIChyZWN0LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0KLSAgICBJbnRTaXplIHNjYWxlZFNpemUgPSBJbWFnZUJ1ZmZlcjo6Y29tcGF0aWJsZUJ1
ZmZlclNpemUocmVjdC5zaXplKCksIGNvbnRleHQpOwotCi0gICAgYXV0byBidWZmZXIgPSBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihzY2FsZWRTaXplLCAxLCBjb2xvclNwYWNl
LCBjb250ZXh0KTsKLSAgICBpZiAoIWJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0K
LSAgICBidWZmZXItPmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIoKnRoaXMsIC1yZWN0LmxvY2F0
aW9uKCkpOwotICAgIHJldHVybiBidWZmZXI7Ci19Ci0KIFJlZlB0cjxOYXRpdmVJbWFnZT4gSW1h
Z2VCdWZmZXI6OnNpbmtJbnRvTmF0aXZlSW1hZ2UoUmVmUHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1
ZmZlcikKIHsKICAgICByZXR1cm4gaW1hZ2VCdWZmZXItPnNpbmtJbnRvTmF0aXZlSW1hZ2UoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCmluZGV4
IGQyZDliZTllZjQwMzJmYWEyNWJlNjJjYWNlNDM3ODJkZWZjYjc0MTUuLjUzMDk0OGUyNjE4YzYy
NmNlMjNjOGJjY2NiNWFjNTZhMWM5NDdiZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmln
aHQgKEMpIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+Ci0gKiBD
b3B5cmlnaHQgKEMpIDIwMDctMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDctMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVG9yY2ggTW9iaWxlIChCZWlqaW5nKSBDby4gTHRkLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNTAsMTYgKzUwLDYgQEAg
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNy
ZWF0ZShjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBTaG91bGRVc2VEaXNwbGF5TGlz
dCwgUmVuZGVyaW5nUHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UmLCBQaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRvdyogPSBudWxscHRy
KTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGUo
Y29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBj
b25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBQaXhlbEZvcm1hdCwgY29uc3QgSG9zdFdpbmRv
dyogPSBudWxscHRyKTsKIAotICAgIC8vIENyZWF0ZSBhbiBpbWFnZSBidWZmZXIgY29tcGF0aWJs
ZSB3aXRoIHRoZSBjb250ZXh0LCB3aXRoIHN1aXRhYmxlIHJlc29sdXRpb24gZm9yIGRyYXdpbmcg
aW50byB0aGUgYnVmZmVyIGFuZCB0aGVuIGludG8gdGhpcyBjb250ZXh0LgotICAgIHN0YXRpYyBS
ZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXpl
JiwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7Ci0gICAgc3RydWN0IENvbXBhdGlibGVCdWZmZXJE
ZXNjcmlwdGlvbiB7Ci0gICAgICAgIFJlZjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXI7Ci0gICAg
ICAgIEZsb2F0UmVjdCBpbmZsYXRlZFJlY3RJblVzZXJDb29yZGluYXRlczsKLSAgICB9OwotICAg
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPENvbXBhdGlibGVCdWZmZXJEZXNjcmlwdGlvbj4gY3JlYXRl
Q29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHJlY3RJblVzZXJDb29yZGluYXRlcywg
Y29uc3QgR3JhcGhpY3NDb250ZXh0Jik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0
cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBj
b25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKLSAg
ICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0
IEZsb2F0U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGluYXRpb25Db2xv
clNwYWNlJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7Ci0KICAgICAvLyBUaGVzZSBmdW5jdGlv
bnMgYXJlIHVzZWQgd2hlbiBjbGFtcGluZyB0aGUgSW1hZ2VCdWZmZXIgd2hpY2ggaXMgY3JlYXRl
ZCBmb3IgZmlsdGVyLCBtYXNrZXIgb3IgY2xpcHBlci4KICAgICBzdGF0aWMgYm9vbCBzaXplTmVl
ZHNDbGFtcGluZyhjb25zdCBGbG9hdFNpemUmKTsKICAgICBzdGF0aWMgYm9vbCBzaXplTmVlZHND
bGFtcGluZyhjb25zdCBGbG9hdFNpemUmLCBGbG9hdFNpemUmIHNjYWxlKTsKQEAgLTY3LDE0ICs1
Nyw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgRmxvYXRTaXplIGNsYW1wZWRTaXplKGNvbnN0IEZs
b2F0U2l6ZSYsIEZsb2F0U2l6ZSYgc2NhbGUpOwogICAgIHN0YXRpYyBGbG9hdFJlY3QgY2xhbXBl
ZFJlY3QoY29uc3QgRmxvYXRSZWN0Jik7CiAKLSAgICBzdGF0aWMgSW50U2l6ZSBjb21wYXRpYmxl
QnVmZmVyU2l6ZShjb25zdCBGbG9hdFNpemUmLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKLSAg
ICBzdHJ1Y3QgQ29tcGF0aWJsZUJ1ZmZlckluZm8gewotICAgICAgICBJbnRTaXplIHBoeXNpY2Fs
U2l6ZUluRGV2aWNlQ29vcmRpbmF0ZXM7Ci0gICAgICAgIEZsb2F0UmVjdCBpbmZsYXRlZFJlY3RJ
blVzZXJDb29yZGluYXRlczsKLSAgICAgICAgRmxvYXRTaXplIHNjYWxlOwotICAgIH07Ci0gICAg
c3RhdGljIENvbXBhdGlibGVCdWZmZXJJbmZvIGNvbXBhdGlibGVCdWZmZXJJbmZvKGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOwotICAgIAogICAgIFdFQkNPUkVfRVhQ
T1JUIHZpcnR1YWwgfkltYWdlQnVmZmVyKCkgPSBkZWZhdWx0OwogCiAgICAgdmlydHVhbCB2b2lk
IHNldEJhY2tlbmQoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQmFja2VuZD4mJikgPSAwOwpA
QCAtMTIyLDkgKzEwNCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFJlZlB0cjxJbWFnZT4gY29w
eUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlLCBQcmVzZXJ2ZVJlc29s
dXRpb24gPSBQcmVzZXJ2ZVJlc29sdXRpb246Ok5vKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBS
ZWZQdHI8SW1hZ2U+IGZpbHRlcmVkSW1hZ2UoRmlsdGVyJikgPSAwOwogCi0gICAgLy8gQ3JlYXRl
IGFuIGltYWdlIGJ1ZmZlciBjb21wYXRpYmxlIHdpdGggdGhlIGNvbnRleHQgYW5kIGNvcHkgcmVj
dCBmcm9tIHRoaXMgYnVmZmVyIGludG8gdGhpcyBuZXcgb25lLgotICAgIFJlZlB0cjxJbWFnZUJ1
ZmZlcj4gY29weVJlY3RUb0J1ZmZlcihjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UmLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKLQogICAgIHZpcnR1YWwgdm9p
ZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEpLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRl
cm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0s
IGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdl
LmNwcAppbmRleCA2ZmZjMjgyYjljYzc1MDQwODg4Y2IzNjRmYjMzMDIwMmZjYjAzYmQwLi4zNzBj
N2RjMjg5NmYzOTYyY2IzZWQ1MDk4MmRhYjY5OTc0ZjYzMmM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJ
bWFnZS5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgSW1hZ2VEcmF3UmVzdWx0IE5hbWVkSW1hZ2VHZW5l
cmF0ZWRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEYKIHZvaWQg
TmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9p
bnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiBvcHRpb25zKQogewogI2lmIFVTRShORVdfVEhFTUUpCi0gICAgYXV0byBpbWFnZUJ1
ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKHNpemUoKSwgY29udGV4
dCk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IGNvbnRleHQuY3JlYXRlQ29tcGF0aWJsZUltYWdl
QnVmZmVyKHNpemUoKSk7CiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1
bWVudEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRv
Y3VtZW50SW1hZ2UuY3BwCmluZGV4IDM2NGJjMjNhMzBiMGFiNWIyNWRiZDllZjc1NzY0MDcyNTdh
OGMyNGQuLmZmYzBhOTg3Zjg4YTMxMDQ2ZmM4NTQ0NzQ4M2MzNmM4NmRjMThlZGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50
SW1hZ2UuY3BwCkBAIC0yMzIsMTQgKzIzMiwxNCBAQCB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OnVw
ZGF0ZUNhY2hlZEltYWdlSWZOZWVkZWQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdAog
CiAgICAgLy8gQ2FjaGUgdGhlIFBERiBpbWFnZSBvbmx5IGlmIHRoZSBzaXplIG9mIHRoZSBuZXcg
aW1hZ2Ugd29uJ3QgZXhjZWVkIHRoZSBjYWNoZSB0aHJlc2hvbGQuCiAgICAgaWYgKG1fcGRmSW1h
Z2VDYWNoaW5nUG9saWN5ID09IFBERkltYWdlQ2FjaGluZ1BvbGljeTo6QmVsb3dNZW1vcnlMaW1p
dCkgewotICAgICAgICBJbnRTaXplIHNjYWxlZFNpemUgPSBJbWFnZUJ1ZmZlcjo6Y29tcGF0aWJs
ZUJ1ZmZlclNpemUoY2FjaGVkSW1hZ2VTaXplLCBjb250ZXh0KTsKKyAgICAgICAgYXV0byBzY2Fs
ZWRTaXplID0gY29udGV4dC5jb21wYXRpYmxlSW1hZ2VCdWZmZXJTaXplKGNhY2hlZEltYWdlU2l6
ZSk7CiAgICAgICAgIGlmIChzX2FsbERlY29kZWREYXRhU2l6ZSArIHNjYWxlZFNpemUudW5jbGFt
cGVkQXJlYSgpICogNCAtIG1fY2FjaGVkQnl0ZXMgPiBzX21heERlY29kZWREYXRhU2l6ZSkgewog
ICAgICAgICAgICAgZGVzdHJveURlY29kZWREYXRhKCk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICBtX2NhY2hlZEltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY2FjaGVkSW1hZ2VTaXplLCBjb250ZXh0KTsKKyAgICBt
X2NhY2hlZEltYWdlQnVmZmVyID0gY29udGV4dC5jcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIo
Y2FjaGVkSW1hZ2VTaXplKTsKICAgICBpZiAoIW1fY2FjaGVkSW1hZ2VCdWZmZXIpIHsKICAgICAg
ICAgZGVzdHJveURlY29kZWREYXRhKCk7CiAgICAgICAgIHJldHVybjsKQEAgLTI5Miw3ICsyOTIs
NyBAQCBJbWFnZURyYXdSZXN1bHQgUERGRG9jdW1lbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdAogICAgICAgICAgICAgLy8gc2NhbGFyID0gc3Fy
dChtYXggbnVtYmVyIG9mIHBpeGVscyAvICh3aWR0aCAqIGhlaWdodCkpCiAgICAgICAgICAgICBh
dXRvIHNjYWxhciA9IHN0ZDo6bWluKDEuZiwgc3RkOjpzcXJ0KHN0YXRpY19jYXN0PGZsb2F0Pihz
X21heENhY2hlZEltYWdlQXJlYSkgLyAoZHN0UmVjdC53aWR0aCgpICogZHN0UmVjdC5oZWlnaHQo
KSkpKTsKICAgICAgICAgICAgIEZsb2F0UmVjdCBsb2NhbERlc3RpbmF0aW9uUmVjdChGbG9hdFBv
aW50KCksIGRzdFJlY3Quc2l6ZSgpICogc2NhbGFyKTsKLSAgICAgICAgICAgIGlmIChhdXRvIGlt
YWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIobG9jYWxEZXN0
aW5hdGlvblJlY3Quc2l6ZSgpLCBjb250ZXh0KSkgeworICAgICAgICAgICAgaWYgKGF1dG8gaW1h
Z2VCdWZmZXIgPSBjb250ZXh0LmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihsb2NhbERlc3Rp
bmF0aW9uUmVjdC5zaXplKCkpKSB7CiAgICAgICAgICAgICAgICAgYXV0byYgYnVmZmVyQ29udGV4
dCA9IGltYWdlQnVmZmVyLT5jb250ZXh0KCk7CiAgICAgICAgICAgICAgICAgdHJhbnNmb3JtQ29u
dGV4dEZvclBhaW50aW5nKGJ1ZmZlckNvbnRleHQsIGxvY2FsRGVzdGluYXRpb25SZWN0LCBzcmNS
ZWN0KTsKICAgICAgICAgICAgICAgICBkcmF3UERGUGFnZShidWZmZXJDb250ZXh0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0RyYXdHbHlw
aHNSZWNvcmRlckNvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvcmV0ZXh0L0RyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcAppbmRleCBjMjk1ZWZlODM0
N2IwNDViZTMxZGIzNjc2NzNlZTdmOTk1YjFhNGMzLi44MTJiMWFiNGJmYWEwODEwN2JiMzcyZWFj
Njc0YmRhOWM5MWRhOGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb3JldGV4dC9EcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRHJhd0dseXBoc1JlY29yZGVyQ29y
ZVRleHQuY3BwCkBAIC0zNzYsMTEgKzM3NiwxNCBAQCB2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6
ZHJhd09UU1ZHUnVuKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqCiAg
ICAgRmxvYXRQb2ludCBwZW5Qb3NpdGlvbiA9IHN0YXJ0UG9pbnQ7CiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG51bUdseXBoczsgKytpKSB7CiAgICAgICAgIGF1dG8gYm91bmRzID0gZm9u
dC5ib3VuZHNGb3JHbHlwaChnbHlwaHNbaV0pOwotICAgICAgICBpZiAoYXV0byBpbWFnZUJ1ZmZl
ckRlc2NyaXB0aW9uID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoYm91bmRz
LCBtX293bmVyKSkgewotICAgICAgICAgICAgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMoaW1hZ2VC
dWZmZXJEZXNjcmlwdGlvbi0+aW1hZ2VCdWZmZXItPmNvbnRleHQoKSwgZm9udCwgZ2x5cGhzICsg
aSwgYWR2YW5jZXMgKyBpLCAxLCBGbG9hdFBvaW50KCksIHNtb290aGluZ01vZGUpOwotICAgICAg
ICAgICAgYXV0byBkZXN0aW5hdGlvblJlY3QgPSBpbWFnZUJ1ZmZlckRlc2NyaXB0aW9uLT5pbmZs
YXRlZFJlY3RJblVzZXJDb29yZGluYXRlczsKKworICAgICAgICAvLyBDcmVhdGUgaW4tcHJvY2Vz
cyBJbWFnZUJ1ZmZlciBzaW5jZSB0aGUgZGVvY29kaW5nIG9mIE9ULVNWRyBoYXMgdG8gaGFwcGVu
IGluIFdlYlByb2Nlc3MuCisgICAgICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gbV9vd25lci5j
cmVhdGVDb21wYXRpYmxlQ29uY3JldGVJbWFnZUJ1ZmZlcihib3VuZHMpKSB7CisgICAgICAgICAg
ICBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLCBmb250LCBn
bHlwaHMgKyBpLCBhZHZhbmNlcyArIGksIDEsIEZsb2F0UG9pbnQoKSwgc21vb3RoaW5nTW9kZSk7
CisKKyAgICAgICAgICAgIEZsb2F0UmVjdCBkZXN0aW5hdGlvblJlY3QgPSBlbmNsb3NpbmdJbnRS
ZWN0KGJvdW5kcyk7CiAgICAgICAgICAgICBkZXN0aW5hdGlvblJlY3QubW92ZUJ5KHBlblBvc2l0
aW9uKTsKLSAgICAgICAgICAgIG1fb3duZXIuZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyRGVz
Y3JpcHRpb24tPmltYWdlQnVmZmVyLCBkZXN0aW5hdGlvblJlY3QpOworICAgICAgICAgICAgbV9v
d25lci5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyLCBkZXN0aW5hdGlvblJlY3QpOwogICAg
ICAgICB9CiAgICAgICAgIHBlblBvc2l0aW9uLm1vdmUoc2l6ZShhZHZhbmNlc1tpXSkpOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuY3BwCmluZGV4
IGZlNTE1NThkNzgyMzUzNDE5YTY0YzlhN2Y5Yjg5NzkwM2FhNmY5YTQuLjU0ZDRlOTQ5ZjU2NjI5
ZDE1MGFmMTk3Mzk2NjIzMTc2NmI3NThiM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVjb3JkZXJJbXBsLmNwcApAQCAtNDU2LDYgKzQ1NiwxMSBAQCBib29sIFJlY29yZGVy
SW1wbDo6cmVjb3JkUmVzb3VyY2VVc2UoRm9udCYgZm9udCkKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAorUmVmUHRyPEltYWdlQnVmZmVyPiBSZWNvcmRlckltcGw6OmNyZWF0ZUNvbXBhdGlibGVJbWFn
ZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29u
c3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlKSBjb25zdAoreworICAgIHJldHVy
biBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIHJlbmRlcmluZ01vZGUoKSwgU2hvdWxkVXNlRGlz
cGxheUxpc3Q6OlllcywgUmVuZGVyaW5nUHVycG9zZTo6VW5zcGVjaWZpZWQsIHJlc29sdXRpb25T
Y2FsZSwgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKK30KKwogLy8gRklYTUU6IHNo
YXJlIHdpdGggU2hhZG93RGF0YQogc3RhdGljIGlubGluZSBmbG9hdCBzaGFkb3dQYWludGluZ0V4
dGVudChmbG9hdCBibHVyUmFkaXVzKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZWNvcmRlckltcGwuaAppbmRleCBlZDQ3MTBiM2Q2OTAzYmVkNjI2OWNkYmM2YjI1N2Y1N2ZmZjU4
OGVjLi5kMTlkYTRjMjAwODRlNmUwZjdhYTAxZjE1NzZiZWFjOTZkNDljZDE1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RSZWNvcmRlckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaApAQCAtMTQzLDYgKzE0Myw4IEBA
IHByaXZhdGU6CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiBjcmVhdGVO
ZXN0ZWRDb250ZXh0KGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgaW5pdGlhbENUTSkgZmluYWw7CiAKKyAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNy
ZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBmbG9h
dCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSYg
PSBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSkgY29uc3QgZmluYWw7CisK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBjbGFzcy4uLiBBcmdzPgogICAgIHZvaWQgYXBwZW5k
KEFyZ3MmJi4uLiBhcmdzKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxh
eWVyLmNwcAppbmRleCAyMTg2NTBhZjU4YTRhN2JjZjJjMTQxMGZmMGVmMDA1MDY4MWI2ZWVkLi4y
YzRhZTQ0ZGU5MmNlMjY0OGNkNjg5M2VhY2E2NzFjMmI0Y2YwZTQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBs
YXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCkBAIC0xNzMsNyArMTczLDcgQEAgc3RkOjpwYWly
PHN0ZDo6b3B0aW9uYWw8U3RvcFJlcGxheVJlYXNvbj4sIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5n
UmVzb3VyY2VJZGVudGkKICAgICAgICAgaWYgKG1fbWFza0ltYWdlQnVmZmVyKQogICAgICAgICAg
ICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6SW52YWxpZEl0ZW1PckV4dGVudCwgc3RkOjpu
dWxsb3B0IH07CiAgICAgICAgIGF1dG8mIGNsaXBJdGVtID0gaXRlbS5nZXQ8QmVnaW5DbGlwVG9E
cmF3aW5nQ29tbWFuZHM+KCk7Ci0gICAgICAgIG1fbWFza0ltYWdlQnVmZmVyID0gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY2xpcEl0ZW0uZGVzdGluYXRpb24oKS5zaXplKCks
IGNsaXBJdGVtLmNvbG9yU3BhY2UoKSwgbV9jb250ZXh0KTsKKyAgICAgICAgbV9tYXNrSW1hZ2VC
dWZmZXIgPSBtX2NvbnRleHQuY3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyKGNsaXBJdGVtLmRl
c3RpbmF0aW9uKCkuc2l6ZSgpLCBjbGlwSXRlbS5jb2xvclNwYWNlKCkpOwogICAgICAgICBpZiAo
IW1fbWFza0ltYWdlQnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNv
bjo6T3V0T2ZNZW1vcnksIHN0ZDo6bnVsbG9wdCB9OwogICAgICAgICBpZiAobV9kZWxlZ2F0ZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQppbmRleCBkNzllODVhYTJiYzk3
NTg3MmFmZmIxZDcwNzE5NGRkZWRiZDM5MDlhLi5lMmU5MGM2NGRkMGRmYTlmYjU0MWY5YzU1OGZm
YTQ0Y2IxODFkYzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhl
bWVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCkBA
IC03MzQsNyArNzM0LDcgQEAgYm9vbCBUaGVtZU1hYzo6ZHJhd0NlbGxPckZvY3VzUmluZ1dpdGhW
aWV3SW50b0NvbnRleHQoTlNDZWxsICpjZWxsLCBHcmFwaGljc0NvbnQKIAogICAgIGlmICh1c2VJ
bWFnZUJ1ZmZlcikgewogICAgICAgICBOU1JlY3QgaW1hZ2VCdWZmZXJEcmF3UmVjdCA9IE5TUmVj
dChGbG9hdFJlY3QoYnV0dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRoLCBidXR0b25Gb2N1c1JlY3RP
dXRsaW5lV2lkdGgsIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSkpOwotICAgICAgICBhdXRv
IGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIocmVjdC5z
aXplKCkgKyAyICogRmxvYXRTaXplKGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVXaWR0aCwgYnV0dG9u
Rm9jdXNSZWN0T3V0bGluZVdpZHRoKSwgZGV2aWNlU2NhbGVGYWN0b3IsIERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQigpLCBjb250ZXh0KTsKKyAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IGNv
bnRleHQuY3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyKHJlY3Quc2l6ZSgpICsgMiAqIEZsb2F0
U2l6ZShidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgsIGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVX
aWR0aCksIGRldmljZVNjYWxlRmFjdG9yKTsKICAgICAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAg
ICAgICAgICAgIHJldHVybiBuZWVkc1JlcGFpbnQ7CiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCmluZGV4IDUyOGYwMjIw
NGE2MTg2Zjk4NTFhMzI0YzUwZTliNjFjYjI1MjAzNzQuLjE5YmIwYzQyZmJjNWZjMjEzNTc2MDc4
MjI2NTdmYmI2MmFmODcyODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveE1vZGVsT2JqZWN0LmNwcApAQCAtODk0LDcgKzg5NCw3IEBAIHZvaWQgUmVuZGVyQm94
TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvCiAgICAgICAgIG1hc2tSZWN0LmludGVyc2VjdChzbmFwUmVjdFRvRGV2aWNlUGl4
ZWxzKHBhaW50SW5mby5yZWN0LCBkZXZpY2VTY2FsZUZhY3RvcikpOwogCiAgICAgICAgIC8vIE5v
dyBjcmVhdGUgdGhlIG1hc2suCi0gICAgICAgIG1hc2tJbWFnZSA9IEltYWdlQnVmZmVyOjpjcmVh
dGVDb21wYXRpYmxlQnVmZmVyKG1hc2tSZWN0LnNpemUoKSwgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKCksIGNvbnRleHQpOworICAgICAgICBtYXNrSW1hZ2UgPSBjb250ZXh0LmNyZWF0ZUNv
bXBhdGlibGVJbWFnZUJ1ZmZlcihtYXNrUmVjdC5zaXplKCkpOwogICAgICAgICBpZiAoIW1hc2tJ
bWFnZSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgcGFpbnRNYXNrRm9yVGV4dEZpbGxC
b3gobWFza0ltYWdlLmdldCgpLCBtYXNrUmVjdCwgYm94LCBzY3JvbGxlZFBhaW50UmVjdCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4
IDY4NzljYTVlZTcwZjUxYjdmNDJiNGM1ZjU0Y2YxYjQwYzI5ZTJlYmYuLjdjMjIzMzc0ODQyODE3
MWIxODgyNjI3MGFjNDljODE0NmU5NThkOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0zMzEyLDcgKzMzMTIsNyBAQCBzdGF0aWMg
UmVmUHRyPFBhdHRlcm4+IHBhdHRlcm5Gb3JEZXNjcmlwdGlvbihQYXR0ZXJuRGVzY3JpcHRpb24g
ZGVzY3JpcHRpb24sIEZsbwogewogICAgIGNvbnN0IEZsb2F0U2l6ZSB0aWxlU2l6ZSB7IDMyLCAx
OCB9OwogCi0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRp
YmxlQnVmZmVyKHRpbGVTaXplLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgZGVzdENv
bnRleHQpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBkZXN0Q29udGV4dC5jcmVhdGVDb21wYXRp
YmxlSW1hZ2VCdWZmZXIodGlsZVNpemUpOwogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZUNvY29hLm1tCmluZGV4IDFhNjY3MzIyNzIyYWQzOGZjMTUxNGJiYjExOWVkY2UzYThlZjczZjMu
LmFiZDRjMWRiMTMxNGQ0NDIxYjczMjJhYTg1NzUxYWViMmY1OTNhZGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNvY29hLm1tCkBAIC0xNTQsNyArMTU0LDcgQEAg
Ym9vbCBSZW5kZXJUaGVtZUNvY29hOjpwYWludEFwcGxlUGF5QnV0dG9uKGNvbnN0IFJlbmRlck9i
amVjdCYgcmVuZGVyZXIsIGNvbnN0IFAKIHsKICAgICBhdXRvJiBkZXN0aW5hdGlvbkNvbnRleHQg
PSBwYWludEluZm8uY29udGV4dCgpOwogCi0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVm
ZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKHBhaW50UmVjdC5zaXplKCksIGRlc3RpbmF0aW9u
Q29udGV4dCk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IGRlc3RpbmF0aW9uQ29udGV4dC5jcmVh
dGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIocGFpbnRSZWN0LnNpemUoKSk7CiAgICAgaWYgKCFpbWFn
ZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWVNYWMubW0KaW5kZXggNmM5NGU5MmUwZmZmODQwMTNmMWE2ZWM2ODI5Yzdl
OTAwYTIwMDc4Zi4uYzJiMjg2MTIxMDhhYmM4NmNkOTY3ZDQ0NDcxYzVmOWZiOGY1N2EzMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQpAQCAtOTk2LDcgKzk5
Niw3IEBAIHZvaWQgUmVuZGVyVGhlbWVNYWM6OnBhaW50TGlzdEJ1dHRvbkZvcklucHV0KGNvbnN0
IFJlbmRlck9iamVjdCYgbywgR3JhcGhpY3NDb250CiAKICAgICBmbG9hdCBkZXZpY2VTY2FsZUZh
Y3RvciA9IG8uZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpOwogCi0gICAgYXV0byBjb21i
b0JveEltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29t
Ym9Cb3hTaXplLCBkZXZpY2VTY2FsZUZhY3RvciwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
KCksIGNvbnRleHQpOworICAgIGF1dG8gY29tYm9Cb3hJbWFnZUJ1ZmZlciA9IGNvbnRleHQuY3Jl
YXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyKGNvbWJvQm94U2l6ZSwgZGV2aWNlU2NhbGVGYWN0b3Ip
OwogICAgIGlmICghY29tYm9Cb3hJbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCkBAIC0x
MDIwLDcgKzEwMjAsNyBAQCB2b2lkIFJlbmRlclRoZW1lTWFjOjpwYWludExpc3RCdXR0b25Gb3JJ
bnB1dChjb25zdCBSZW5kZXJPYmplY3QmIG8sIEdyYXBoaWNzQ29udAogICAgICAgICAoX19icmlk
Z2UgTlNTdHJpbmcgKilrQ1VJVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbktleSA6IChfX2Jy
aWRnZSBOU1N0cmluZyAqKWtDVUlVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uTGVmdFRvUmln
aHQsCiAgICAgfV07CiAKLSAgICBhdXRvIGNvbWJvQm94QnV0dG9uSW1hZ2VCdWZmZXIgPSBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihkZXNpcmVkQ29tYm9Cb3hCdXR0b25TaXpl
LCBkZXZpY2VTY2FsZUZhY3RvciwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIGNvbnRl
eHQpOworICAgIGF1dG8gY29tYm9Cb3hCdXR0b25JbWFnZUJ1ZmZlciA9IGNvbnRleHQuY3JlYXRl
Q29tcGF0aWJsZUltYWdlQnVmZmVyKGRlc2lyZWRDb21ib0JveEJ1dHRvblNpemUsIGRldmljZVNj
YWxlRmFjdG9yKTsKICAgICBpZiAoIWNvbWJvQm94QnV0dG9uSW1hZ2VCdWZmZXIpCiAgICAgICAg
IHJldHVybjsKIApAQCAtMTM3OSw3ICsxMzc5LDcgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFp
bnRQcm9ncmVzc0Jhcihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwgY29uc3QgUGEK
ICAgICBjb25zdCBhdXRvJiByZW5kZXJQcm9ncmVzcyA9IGRvd25jYXN0PFJlbmRlclByb2dyZXNz
PihyZW5kZXJPYmplY3QpOwogICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gcmVuZGVyT2Jq
ZWN0LmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKTsKICAgICBib29sIGlzSW5kZXRlcm1p
bmF0ZSA9IHJlbmRlclByb2dyZXNzLnBvc2l0aW9uKCkgPCAwOwotICAgIGF1dG8gaW1hZ2VCdWZm
ZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihpbmZsYXRlZFJlY3Quc2l6
ZSgpLCBkZXZpY2VTY2FsZUZhY3RvciwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIHBh
aW50SW5mby5jb250ZXh0KCkpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBwYWludEluZm8uY29u
dGV4dCgpLmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihpbmZsYXRlZFJlY3Quc2l6ZSgpLCBk
ZXZpY2VTY2FsZUZhY3Rvcik7CiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJu
IHRydWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVu
ZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRl
cmluZ0NvbnRleHQuY3BwCmluZGV4IGYwOGU4NzJkMjg2NmFlNTM0MjQ4NmUzYzlmOTk4ZWRjOTQ0
OTg0YjkuLjQ0OGY5MTY1MmE5MjlkYTg0NDQ0MjIwZGQ5Yzc3MWYwYmE0NTk3ZWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNw
cApAQCAtMzMzLDcgKzMzMyw3IEBAIGJvb2wgU1ZHUmVuZGVyaW5nQ29udGV4dDo6YnVmZmVyRm9y
ZWdyb3VuZChSZWZQdHI8SW1hZ2VCdWZmZXI+JiBpbWFnZUJ1ZmZlcikKIAogICAgIC8vIENyZWF0
ZSBhIG5ldyBidWZmZXIgYW5kIHBhaW50IHRoZSBmb3JlZ3JvdW5kIGludG8gaXQuCiAgICAgaWYg
KCFpbWFnZUJ1ZmZlcikgewotICAgICAgICBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVh
dGVDb21wYXRpYmxlQnVmZmVyKGV4cGFuZGVkSW50U2l6ZShib3VuZGluZ0JveC5zaXplKCkpLCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgbV9wYWludEluZm8tPmNvbnRleHQoKSk7Cisg
ICAgICAgIGltYWdlQnVmZmVyID0gbV9wYWludEluZm8tPmNvbnRleHQoKS5jcmVhdGVDb21wYXRp
YmxlSW1hZ2VCdWZmZXIoZXhwYW5kZWRJbnRTaXplKGJvdW5kaW5nQm94LnNpemUoKSkpOwogICAg
ICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCmluZGV4IGY0MTQwMTIzMzg5
MTkwMzg3YWQyNzY5NmE1MDU0NDU0ZGY4OTAyOGEuLjk4ZGUzODEwMGQxMTA2YmM0MTg4ZDNlYWJk
NWZjNzZjOTNmYmZhNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9T
VkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNw
cApAQCAtMjUwLDcgKzI1MCw3IEBAIHZvaWQgU1ZHSW1hZ2U6OmRyYXdQYXR0ZXJuRm9yQ29udGFp
bmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRTaXplCiAgICAgRmxvYXRS
ZWN0IGltYWdlQnVmZmVyU2l6ZSA9IHpvb21lZENvbnRhaW5lclJlY3Q7CiAgICAgaW1hZ2VCdWZm
ZXJTaXplLnNjYWxlKGltYWdlQnVmZmVyU2NhbGUud2lkdGgoKSwgaW1hZ2VCdWZmZXJTY2FsZS5o
ZWlnaHQoKSk7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRp
YmxlQnVmZmVyKGV4cGFuZGVkSW50U2l6ZShpbWFnZUJ1ZmZlclNpemUuc2l6ZSgpKSwgMSwgRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIGNvbnRleHQpOworICAgIGF1dG8gYnVmZmVyID0g
Y29udGV4dC5jcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIoZXhwYW5kZWRJbnRTaXplKGltYWdl
QnVmZmVyU2l6ZS5zaXplKCkpLCAxKTsKICAgICBpZiAoIWJ1ZmZlcikgLy8gRmFpbGVkIHRvIGFs
bG9jYXRlIGJ1ZmZlci4KICAgICAgICAgcmV0dXJuOwogICAgIGRyYXdGb3JDb250YWluZXIoYnVm
ZmVyLT5jb250ZXh0KCksIGNvbnRhaW5lclNpemUsIGNvbnRhaW5lclpvb20sIGluaXRpYWxGcmFn
bWVudFVSTCwgaW1hZ2VCdWZmZXJTaXplLCB6b29tZWRDb250YWluZXJSZWN0KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJl
Y29yZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNw
bGF5TGlzdFJlY29yZGVyLmNwcAppbmRleCBkOWFmNTg0MGRmNjg0M2Q5ZTYxOWRiNjYyZWM5MGVh
NDgxODU3OTZhLi4xOTM3NDE5ZmViZTY4M2M5NzJiMTcwNDI3OWIzZmZhMThhOTVjMWIzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxp
c3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBAIC0yMDgsNyArMjA4LDcgQEAgdm9pZCBSZW1v
dGVEaXNwbGF5TGlzdFJlY29yZGVyOjpjbGlwUGF0aChjb25zdCBQYXRoJiBwYXRoLCBXaW5kUnVs
ZSBydWxlKQogCiB2b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OmJlZ2luQ2xpcFRvRHJh
d2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IERlc3RpbmF0
aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSkKIHsKLSAgICBtX21hc2tJbWFnZUJ1ZmZlciA9IElt
YWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGRlc3RpbmF0aW9uLnNpemUoKSwgY29s
b3JTcGFjZSwgZHJhd2luZ0NvbnRleHQoKSk7CisgICAgbV9tYXNrSW1hZ2VCdWZmZXIgPSBkcmF3
aW5nQ29udGV4dCgpLmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihkZXN0aW5hdGlvbi5zaXpl
KCksIGNvbG9yU3BhY2UpOwogfQogCiB2b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OmVu
ZENsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNw
bGF5TGlzdFJlY29yZGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuY3BwCmluZGV4IDI0MzNmZGNj
OTc0YWI2Njc5NzFhMjVhZjY0Nzg5MzU2MGEzMzFjOTYuLmRiODBmOGRlYzQ1M2Q1OTRkZWU3ZWQ1
MDQzNWQ0NWQzYTc0ZWRjYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3Jk
ZXJQcm94eS5jcHAKQEAgLTQ2OSw2ICs0NjksMTYgQEAgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNz
Q29udGV4dD4gUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5OjpjcmVhdGVOZXN0ZWRDb24K
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHk+KCp0
aGlzLCBpbml0aWFsQ2xpcCwgaW5pdGlhbENUTSk7CiB9CiAKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4g
UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5OjpjcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZm
ZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERl
c3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSkgY29uc3QKK3sKKyAgICBpZiAoVU5MSUtF
TFkoIW1fcmVuZGVyaW5nQmFja2VuZCkpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIHJldHVybiBtX3JlbmRlcmlu
Z0JhY2tlbmQtPmNyZWF0ZUltYWdlQnVmZmVyKHNpemUsIHJlbmRlcmluZ01vZGUoKSwgcmVzb2x1
dGlvblNjYWxlLCBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlM
aXN0UmVjb3JkZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuaAppbmRleCBhNDE4ZWYyZmIwM2ViM2Uy
MjFjY2Q3ZjVhNjQxNTQ4MmQ3MWMzNDZhLi5kMDhmY2Y2ZDY3NzdiNGI4M2RiOGViNWUwYzYxY2Ni
NmYyMGY3N2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmgK
QEAgLTE0NSw2ICsxNDUsOCBAQCBwcml2YXRlOgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dD4gY3JlYXRlTmVzdGVkQ29udGV4dChjb25zdCBXZWJDb3JlOjpG
bG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mIGlu
aXRpYWxDVE0pIGZpbmFsOwogCisgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBjcmVh
dGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgZmxvYXQg
cmVzb2x1dGlvblNjYWxlLCBjb25zdCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UmID0g
V2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpIGNvbnN0IGZpbmFsOworCiAg
ICAgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIG1fZGVzdGluYXRpb25CdWZm
ZXJJZGVudGlmaWVyOwogICAgIFdlYWtQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IG1faW1hZ2VC
dWZmZXI7CiAgICAgV2Vha1B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk+IG1fcmVuZGVy
aW5nQmFja2VuZDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450261</attachid>
            <date>2022-01-28 11:28:37 -0800</date>
            <delta_ts>2022-01-28 16:45:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235758-20220128112836.patch</filename>
            <type>text/plain</type>
            <size>46781</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NTQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2U1MDRmM2FkYmQ2ZDY5
OTllMzAxNWFlMWIxZTRkNzFlYmQ1MmNhOC4uNTIyMzc3YmFkMDIxNGQ1N2U1MWVkNGNlNzgzODBl
NzAzMmQ3MmY0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDIyLTAxLTI4ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
TW92ZSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyKCkgdG8gR3JhcGhp
Y3NDb250ZXh0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzU3NTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcigpIHdpbGwgYmUg
YWJsZSB0byBjcmVhdGUgYW4KKyAgICAgICAgSW1hZ2VCdWZmZXIgc2ltaWxhciB0byB0aGUgdW5k
ZXJseWluZyBJbWFnZUJ1ZmZlciBvZiB0aGUgR3JhcGhpY3NDb250ZXh0LgorICAgICAgICBSZWNv
cmRlckltcGwgYW5kIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eSBhcmUgc3VwZXIgY2xh
c3NlcyBvZgorICAgICAgICBHcmFwaGljc0NvbnRleHQsIHNvIHRoZXkgY2FuIG92ZXJyaWRlIHRo
aXMgbWV0aG9kIGFuZCByZXR1cm4gdGhlIGRlc2lyZWQKKyAgICAgICAgdHlwZSBvZiBJbWFnZUJ1
ZmZlci4KKworICAgICAgICAqIGh0bWwvQ3VzdG9tUGFpbnRDYW52YXMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q3VzdG9tUGFpbnRDYW52YXM6OnJlcGxheURpc3BsYXlMaXN0IGNvbnN0KToKKyAg
ICAgICAgKiBodG1sL0N1c3RvbVBhaW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3Vz
dG9tUGFpbnRJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIGh0bWwvT2Zmc2NyZWVuQ2Fu
dmFzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9mZnNjcmVlbkNhbnZhczo6dHJhbnNmZXJUb0lt
YWdlQml0bWFwKToKKyAgICAgICAgKFdlYkNvcmU6Ok9mZnNjcmVlbkNhbnZhczo6Y29tbWl0VG9Q
bGFjZWhvbGRlckNhbnZhcyk6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRCYXNlOjpkcmF3SW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1RoZW1lQ29j
b2EubW06CisgICAgICAgIChXZWJDb3JlOjpkcmF3QXBwbGVQYXlCdXR0b24pOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJp
dG1hcEltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
ZGllbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFkaWVudEltYWdlOjpkcmF3UGF0
dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y29tcGF0aWJsZUltYWdlQnVmZmVy
U2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNvbXBhdGli
bGVJbWFnZUJ1ZmZlclJlY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpjcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpjcmVhdGVDb21wYXRpYmxlQ29uY3JldGVJbWFnZUJ1ZmZlciBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsaXBUb0RyYXdpbmdD
b21tYW5kcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNvbXBhdGlibGVCdWZmZXJTaXplKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpjb21wYXRpYmxlQnVmZmVySW5m
byk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y29weVJlY3RUb0J1
ZmZlcik6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3UGF0
dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjp1cGRhdGVDYWNoZWRJbWFn
ZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OmRyYXcpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0RyYXdHbHlwaHNSZWNvcmRlckNv
cmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdHbHlwaHNSZWNvcmRlcjo6ZHJhd09U
U1ZHUnVuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZWNvcmRlckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJl
Y29yZGVySW1wbDo6Y3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZXBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXI6OmFw
cGx5SXRlbSk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tOgorICAgICAgICAo
V2ViQ29yZTo6VGhlbWVNYWM6OmRyYXdDZWxsT3JGb2N1c1JpbmdXaXRoVmlld0ludG9Db250ZXh0
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6cGF0dGVybkZvckRlc2NyaXB0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVGhlbWVDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQ29jb2E6OnBh
aW50QXBwbGVQYXlCdXR0b24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWludExpc3RCdXR0b25Gb3JJ
bnB1dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRQcm9ncmVzc0Jh
cik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlcmluZ0NvbnRleHQ6OmJ1ZmZlckZvcmVncm91bmQpOgor
ICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdJbWFnZTo6ZHJhd1BhdHRlcm5Gb3JDb250YWluZXIpOgorCiAyMDIyLTAxLTI1ICBaaXJhbiBT
dW4gIDx6c3VuQGlnYWxpYS5jb20+CiAKICAgICAgICAgW2Nzcy1ncmlkXSBGaXggZ3JpZCBzaG9y
dGhhbmQgZXhwYW5zaW9uIG9mIGluaXRpYWwgdmFsdWVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDhjMzA4YmMyM2Nl
ZWNiY2EwYTEzOGVkMGU1MTc2M2I1YzE3ZTY5YmQuLjBjYmZjZTZlMmJjYmI3YjU0ZjQwZGE0YWNh
MTQ5YWI2NDZhY2M4YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjItMDEtMjggIFNh
aWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNz
XSBNb3ZlIEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIoKSB0byBHcmFw
aGljc0NvbnRleHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzNTc1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6YmVnaW5DbGlwVG9E
cmF3aW5nQ29tbWFuZHMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZURp
c3BsYXlMaXN0UmVjb3JkZXJQcm94eTo6Y3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyIGNvbnN0
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJl
Y29yZGVyUHJveHkuaDoKKwogMjAyMi0wMS0yNCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4Zmll
bGRAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjI4MjMyMCk6IFtDb2NvYV0gVXNl
ci1pbnN0YWxsZWQgZm9udHMgZG9uJ3Qgd29yayBpbiB0aGUgR1BVIFByb2Nlc3MgKGluIFdLV2Vi
VmlldykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRDYW52YXMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWludENhbnZhcy5jcHAKaW5kZXggMmMx
YTNhYTZjNjU3OTNlYzZmNWQ4NGJkYTRlZjczZWM2OTY5OGVhMy4uNDA0MjkxMWQwN2JjNzc4Mzkw
MzAxMzFkNzhkNzNhNTU3YjYzZDBlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9D
dXN0b21QYWludENhbnZhcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWlu
dENhbnZhcy5jcHAKQEAgLTczLDcgKzczLDcgQEAgdm9pZCBDdXN0b21QYWludENhbnZhczo6cmVw
bGF5RGlzcGxheUxpc3QoR3JhcGhpY3NDb250ZXh0KiBjdHgpIGNvbnN0CiAgICAgLy8gRklYTUU6
IFVzaW5nIGFuIGludGVybWVkaWF0ZSBidWZmZXIgaXMgbm90IG5lZWRlZCBpZiB0aGVyZSBhcmUg
bm8gY29tcG9zaXRlIG9wZXJhdGlvbnMuCiAgICAgYXV0byBjbGlwQm91bmRzID0gY3R4LT5jbGlw
Qm91bmRzKCk7CiAKLSAgICBhdXRvIGltYWdlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGli
bGVCdWZmZXIoY2xpcEJvdW5kcy5zaXplKCksICpjdHgpOworICAgIGF1dG8gaW1hZ2UgPSBjdHgt
PmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihjbGlwQm91bmRzLnNpemUoKSk7CiAgICAgaWYg
KCFpbWFnZSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0N1c3RvbVBhaW50SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWlu
dEltYWdlLmNwcAppbmRleCBmNDcxOTk0NmM1OGUwNTliZTMzZGI3MWQzZjdiNmY2MDkyMGE1Y2Fj
Li5mYjhhZTZiZmQ3MWYzZWY2MWEzNDBlMjcwMDE0MDM4ZTI3NjY5NzBmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0N1c3RvbVBhaW50SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvQ3VzdG9tUGFpbnRJbWFnZS5jcHAKQEAgLTE5OSw3ICsxOTksNyBAQCB2b2lkIEN1
c3RvbVBhaW50SW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQs
IGNvbnN0IEZsb2F0UmVjdAogICAgIGFkanVzdGVkUGF0dGVybkNUTS5zY2FsZSgxLjAgLyB4U2Nh
bGUsIDEuMCAvIHlTY2FsZSk7CiAgICAgYWRqdXN0ZWRTcmNSZWN0LnNjYWxlKHhTY2FsZSwgeVNj
YWxlKTsKIAotICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVC
dWZmZXIoYWRqdXN0ZWRTaXplLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgZGVzdENv
bnRleHQpOworICAgIGF1dG8gYnVmZmVyID0gZGVzdENvbnRleHQuY3JlYXRlQ29tcGF0aWJsZUlt
YWdlQnVmZmVyKGFkanVzdGVkU2l6ZSk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVy
bjsKICAgICBkb0N1c3RvbVBhaW50KGJ1ZmZlci0+Y29udGV4dCgpLCBhZGp1c3RlZFNpemUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwCmluZGV4IDRjOWM4Y2ZmMThiOWM3
ZWExMmQxNDEzMTJjNjYwNjY2ZGNmMGM4NzkuLmQxYmI4M2FkMzMwNzg3ZmQyODhkNzM0ZWE1YmQw
NjgxODU5ODg2ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2Fu
dmFzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAKQEAg
LTI4Myw3ICsyODMsNyBAQCBFeGNlcHRpb25PcjxSZWZQdHI8SW1hZ2VCaXRtYXA+PiBPZmZzY3Jl
ZW5DYW52YXM6OnRyYW5zZmVyVG9JbWFnZUJpdG1hcCgpCiAgICAgICAgIC8vIEFzIHRoZSBjYW52
YXMgY29udGV4dCBzdGF0ZSBpcyBzdG9yZWQgaW4gR3JhcGhpY3NDb250ZXh0LCB3aGljaCBpcyBv
d25lZAogICAgICAgICAvLyBieSBidWZmZXIoKSwgdG8gYXZvaWQgcmVzZXR0aW5nIHRoZSBjb250
ZXh0IHN0YXRlLCB3ZSBoYXZlIHRvIG1ha2UgYSBjb3B5IGFuZAogICAgICAgICAvLyBjbGVhciB0
aGUgb3JpZ2luYWwgYnVmZmVyIHJhdGhlciB0aGFuIHJldHVybmluZyB0aGUgb3JpZ2luYWwgYnVm
ZmVyLgotICAgICAgICBhdXRvIGJ1ZmZlckNvcHkgPSBidWZmZXIoKS0+Y29weVJlY3RUb0J1ZmZl
cihGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBidWZmZXIoKS0+bG9naWNhbFNpemUoKSksIGJ1ZmZl
cigpLT5jb2xvclNwYWNlKCksICpkcmF3aW5nQ29udGV4dCgpKTsKKyAgICAgICAgYXV0byBidWZm
ZXJDb3B5ID0gZHJhd2luZ0NvbnRleHQoKS0+Y3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyKCpi
dWZmZXIoKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgYnVmZmVyKCktPmxvZ2ljYWxTaXplKCkp
LCBidWZmZXIoKS0+Y29sb3JTcGFjZSgpKTsKICAgICAgICAgZG93bmNhc3Q8T2Zmc2NyZWVuQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEPigqbV9jb250ZXh0KS5jbGVhckNhbnZhcygpOwogICAgICAg
ICBjbGVhckNvcGllZEltYWdlKCk7CiAKQEAgLTQ1MSwxNCArNDUxLDE0IEBAIHZvaWQgT2Zmc2Ny
ZWVuQ2FudmFzOjpjb21taXRUb1BsYWNlaG9sZGVyQ2FudmFzKCkKICAgICAgICAgbV9jb250ZXh0
LT5wYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcygpOwogCiAgICAgaWYgKG1fcGxhY2Vob2xk
ZXJEYXRhLT5idWZmZXJQaXBlU291cmNlKSB7Ci0gICAgICAgIGF1dG8gYnVmZmVyQ29weSA9IGlt
YWdlQnVmZmVyLT5jb3B5UmVjdFRvQnVmZmVyKEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdl
QnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIGlt
YWdlQnVmZmVyLT5jb250ZXh0KCkpOworICAgICAgICBhdXRvIGJ1ZmZlckNvcHkgPSBpbWFnZUJ1
ZmZlci0+Y29udGV4dCgpLmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIs
IEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSk7CiAg
ICAgICAgIGlmIChidWZmZXJDb3B5KQogICAgICAgICAgICAgbV9wbGFjZWhvbGRlckRhdGEtPmJ1
ZmZlclBpcGVTb3VyY2UtPmhhbmRsZShXVEZNb3ZlKGJ1ZmZlckNvcHkpKTsKICAgICB9CiAKICAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9wbGFjZWhvbGRlckRhdGEtPmJ1ZmZlckxvY2sgfTsKICAgICBi
b29sIHNob3VsZFB1c2hCdWZmZXIgPSAhbV9wbGFjZWhvbGRlckRhdGEtPnBlbmRpbmdDb21taXRC
dWZmZXI7Ci0gICAgbV9wbGFjZWhvbGRlckRhdGEtPnBlbmRpbmdDb21taXRCdWZmZXIgPSBpbWFn
ZUJ1ZmZlci0+Y29weVJlY3RUb0J1ZmZlcihGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZUJ1
ZmZlci0+bG9naWNhbFNpemUoKSksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBpbWFn
ZUJ1ZmZlci0+Y29udGV4dCgpKTsKKyAgICBtX3BsYWNlaG9sZGVyRGF0YS0+cGVuZGluZ0NvbW1p
dEJ1ZmZlciA9IGltYWdlQnVmZmVyLT5jb250ZXh0KCkuY3JlYXRlQ29tcGF0aWJsZUltYWdlQnVm
ZmVyKCppbWFnZUJ1ZmZlciwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2VCdWZmZXItPmxv
Z2ljYWxTaXplKCkpKTsKICAgICBpZiAobV9wbGFjZWhvbGRlckRhdGEtPnBlbmRpbmdDb21taXRC
dWZmZXIgJiYgc2hvdWxkUHVzaEJ1ZmZlcikKICAgICAgICAgcHVzaEJ1ZmZlclRvUGxhY2Vob2xk
ZXIoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyREJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKaW5kZXggNTc3ZDU1ZTdmMDQyYTc4NDgyMjBl
MzhhYzMyZDMwNjk4MzZhMzg5ZC4uOTkxMjM2YjE5MTYzNWViYjQ2Mzc1NGEzOTVjNzFlZmE5OGQw
NDlmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKQEAgLTE2MTEsNyArMTYxMSw3IEBAIEV4Y2Vw
dGlvbk9yPHZvaWQ+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRyYXdJbWFnZShDYW52
YXNCYXNlJiBzb3VyY2VDYW52CiAgICAgICAgIHJlcGFpbnRFbnRpcmVDYW52YXMgPSB0cnVlOwog
ICAgIH0gZWxzZSBpZiAoc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUgPT0gQ29tcG9zaXRlT3BlcmF0
b3I6OkNvcHkpIHsKICAgICAgICAgaWYgKCZzb3VyY2VDYW52YXMgPT0gJmNhbnZhc0Jhc2UoKSkg
ewotICAgICAgICAgICAgaWYgKGF1dG8gY29weSA9IGJ1ZmZlci0+Y29weVJlY3RUb0J1ZmZlcihz
cmNSZWN0LCBjb2xvclNwYWNlKCksICpjKSkgeworICAgICAgICAgICAgaWYgKGF1dG8gY29weSA9
IGMtPmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcigqYnVmZmVyLCBzcmNSZWN0LCBjb2xvclNw
YWNlKCkpKSB7CiAgICAgICAgICAgICAgICAgY2xlYXJDYW52YXMoKTsKICAgICAgICAgICAgICAg
ICBjLT5kcmF3SW1hZ2VCdWZmZXIoKmNvcHksIGRzdFJlY3QsIHsgeyB9LCBzcmNSZWN0LnNpemUo
KSB9LCB7IHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlLCBzdGF0ZSgpLmdsb2JhbEJsZW5kIH0pOwog
ICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2Ev
VGhlbWVDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1RoZW1lQ29jb2Eu
bW0KaW5kZXggZWNkNTBiNzBmZGJiZjZlOTgzZjNhNzE1NjUyN2IyMTA2ODg0ZmJmZS4uZTJiNDkw
NGQ4Zjg2MjhkMzhiNjE3MGUwYTU4MDdjMzU1NjFjZjE1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvVGhlbWVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9UaGVtZUNvY29hLm1tCkBAIC0xMTAsNyArMTEwLDcgQEAgc3RhdGljIENH
UERGUGFnZVJlZiBhcHBsZVBheUJ1dHRvbkxvZ29XaGl0ZSgpCiAKIHN0YXRpYyB2b2lkIGRyYXdB
cHBsZVBheUJ1dHRvbihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIENHUERGUGFnZVJlZiBwYWdl
LCBjb25zdCBGbG9hdFNpemUmIHNpemUpCiB7Ci0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdl
QnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKHNpemUsIGNvbnRleHQpOworICAgIGF1dG8g
aW1hZ2VCdWZmZXIgPSBjb250ZXh0LmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihzaXplKTsK
ICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAppbmRleCA4MDI3NDM1YWQy
OTQ1NjYyOThhNzkxYjNhZjZhZmE5YmYyNzgxZTY4Li41NzQ1NDQ3YzhjNTRmZjg4YTkzNjZmNTBm
ZWIzNjRkNzc4MGNiMDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9CaXRtYXBJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvQml0bWFwSW1hZ2UuY3BwCkBAIC0zNDcsNyArMzQ3LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6
ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LAogICAgIH0KIAogICAgIGlmICghbV9jYWNoZWRJbWFnZSkgewotICAgICAgICBhdXRvIGJ1
ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGV4cGFuZGVkSW50U2l6
ZSh0aWxlUmVjdC5zaXplKCkpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgY3R4dCk7
CisgICAgICAgIGF1dG8gYnVmZmVyID0gY3R4dC5jcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIo
ZXhwYW5kZWRJbnRTaXplKHRpbGVSZWN0LnNpemUoKSkpOwogICAgICAgICBpZiAoIWJ1ZmZlcikK
ICAgICAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFkaWVudEltYWdlLmNwcAppbmRleCBmZWYzNmU1N2E2NWExNDg2OTBkYjMwYTJj
MmE1Njg0ZDAwMGM4YWRjLi5iZGE3MDExMDk4ZmE1MTdhNjQ0MzJhZmVjYmQwNTNjMWY5NTk1YzUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudElt
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudElt
YWdlLmNwcApAQCAtNzIsNyArNzIsNyBAQCB2b2lkIEdyYWRpZW50SW1hZ2U6OmRyYXdQYXR0ZXJu
KEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZAogICAgIHVu
c2lnbmVkIGdlbmVyYXRvckhhc2ggPSBtX2dyYWRpZW50LT5oYXNoKCk7CiAKICAgICBpZiAoIW1f
Y2FjaGVkSW1hZ2UgfHwgbV9jYWNoZWRHZW5lcmF0b3JIYXNoICE9IGdlbmVyYXRvckhhc2ggfHwg
bV9jYWNoZWRBZGp1c3RlZFNpemUgIT0gYWRqdXN0ZWRTaXplIHx8ICFhcmVFc3NlbnRpYWxseUVx
dWFsKGRlc3RDb250ZXh0LnNjYWxlRmFjdG9yKCksIG1fY2FjaGVkU2NhbGVGYWN0b3IpKSB7Ci0g
ICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1
ZmZlcihhZGp1c3RlZFNpemUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBkZXN0Q29u
dGV4dCk7CisgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBkZXN0Q29udGV4dC5jcmVhdGVDb21w
YXRpYmxlSW1hZ2VCdWZmZXIoYWRqdXN0ZWRTaXplKTsKICAgICAgICAgaWYgKCFpbWFnZUJ1ZmZl
cikKICAgICAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggYTQ5MmU5OGRhMjgwYzIzZWM3
MzYzMDdhZGUyZGRlZjMyYmZhNGNlZi4uMWIyYjZjZmVkNzRmMDdlZDAxNmI3NTMxNDUzYTM5Y2Ji
N2UxOWM4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuY3BwCkBAIC01NTEsNiArNTUxLDk5IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpkcmF3QmlkaVRleHQoY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IFRleHRSdW4m
IHJ1biwKICAgICBiaWRpUnVucy5jbGVhcigpOwogfQogCitJbnRTaXplIEdyYXBoaWNzQ29udGV4
dDo6Y29tcGF0aWJsZUltYWdlQnVmZmVyU2l6ZShjb25zdCBGbG9hdFNpemUmIHNpemUpIGNvbnN0
Cit7CisgICAgLy8gRW5sYXJnZSB0aGUgYnVmZmVyIHNpemUgaWYgdGhlIGNvbnRleHQncyB0cmFu
c2Zvcm0gaXMgc2NhbGluZyBpdCBzbyB3ZSBuZWVkIGEgaGlnaGVyCisgICAgLy8gcmVzb2x1dGlv
biB0aGFuIG9uZSBwaXhlbCBwZXIgdW5pdC4KKyAgICByZXR1cm4gZXhwYW5kZWRJbnRTaXplKHNp
emUgKiBzY2FsZUZhY3RvcigpKTsKK30KKworSW50UmVjdCBHcmFwaGljc0NvbnRleHQ6OmNvbXBh
dGlibGVJbWFnZUJ1ZmZlclJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KSBjb25zdAoreworICAg
IGF1dG8gc2NhbGVkUmVjdCA9IHJlY3Q7CisgICAgc2NhbGVkUmVjdC5zY2FsZShzY2FsZUZhY3Rv
cigpKTsKKworICAgIEZsb2F0U2l6ZSBzY2FsZSgxLCAxKTsKKyAgICBJbWFnZUJ1ZmZlcjo6c2l6
ZU5lZWRzQ2xhbXBpbmcoc2NhbGVkUmVjdC5zaXplKCksIHNjYWxlKTsKKyAgICBzY2FsZWRSZWN0
LnNjYWxlKHNjYWxlKTsKKworICAgIHJldHVybiBlbmNsb3NpbmdJbnRSZWN0KHNjYWxlZFJlY3Qp
OworfQorCitSZWZQdHI8SW1hZ2VCdWZmZXI+IEdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlQ29tcGF0
aWJsZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNj
YWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgcmVuZGVyaW5nTW9kZSgpLCByZXNv
bHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCk7Cit9CisKK1JlZlB0
cjxJbWFnZUJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0OjpjcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZm
ZXIoY29uc3QgRmxvYXRTaXplJiBzY2FsZWRTaXplLCBjb25zdCBGbG9hdFNpemUmIHNpemUsIGNv
bnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSkgY29uc3QKK3sKKyAgICBBU1NF
UlQoIXNjYWxlZFNpemUuaXNFbXB0eSgpICYmICFzaXplLmlzRW1wdHkoKSk7CisKKyAgICBhdXRv
IGltYWdlQnVmZmVyID0gY3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyKHNjYWxlZFNpemUsIDEs
IGNvbG9yU3BhY2UpOworICAgIGlmICghaW1hZ2VCdWZmZXIpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworCisgICAgaW1hZ2VCdWZmZXItPmNvbnRleHQoKS5zY2FsZShzY2FsZWRTaXplIC8gc2l6
ZSk7CisgICAgcmV0dXJuIGltYWdlQnVmZmVyOworfQorCitSZWZQdHI8SW1hZ2VCdWZmZXI+IEdy
YXBoaWNzQ29udGV4dDo6Y3JlYXRlQ29tcGF0aWJsZUNvbmNyZXRlSW1hZ2VCdWZmZXIoY29uc3Qg
RmxvYXRTaXplJiBzY2FsZWRTaXplLCBjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSkgY29uc3QKK3sKKyAgICBBU1NFUlQoIXNjYWxl
ZFNpemUuaXNFbXB0eSgpICYmICFzaXplLmlzRW1wdHkoKSk7CisKKyAgICBhdXRvIGltYWdlQnVm
ZmVyID0gR3JhcGhpY3NDb250ZXh0OjpjcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIoc2NhbGVk
U2l6ZSwgMSwgY29sb3JTcGFjZSk7CisgICAgaWYgKCFpbWFnZUJ1ZmZlcikKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnNjYWxlKHNjYWxlZFNp
emUgLyBzaXplKTsKKyAgICByZXR1cm4gaW1hZ2VCdWZmZXI7Cit9CisKK1JlZlB0cjxJbWFnZUJ1
ZmZlcj4gR3JhcGhpY3NDb250ZXh0OjpjcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIoY29uc3Qg
RmxvYXRTaXplJiBzaXplLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2Up
IGNvbnN0Cit7CisgICAgaWYgKHNpemUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgIGF1dG8gc2NhbGVkU2l6ZSA9IGNvbXBhdGlibGVJbWFnZUJ1ZmZlclNpemUoc2l6
ZSk7CisgICAgcmV0dXJuIGNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihzY2FsZWRTaXplLCBz
aXplLCBjb2xvclNwYWNlKTsKK30KKworUmVmUHRyPEltYWdlQnVmZmVyPiBHcmFwaGljc0NvbnRl
eHQ6OmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgc291cmNlSW1hZ2Us
IGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xv
clNwYWNlKSBjb25zdAoreworICAgIGlmIChyZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gY3JlYXRlQ29tcGF0aWJsZUltYWdl
QnVmZmVyKHJlY3Quc2l6ZSgpLCBjb2xvclNwYWNlKTsKKyAgICBpZiAoIWltYWdlQnVmZmVyKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGltYWdlQnVmZmVyLT5jb250ZXh0KCkuZHJh
d0ltYWdlQnVmZmVyKHNvdXJjZUltYWdlLCAtcmVjdC5sb2NhdGlvbigpKTsKKyAgICByZXR1cm4g
aW1hZ2VCdWZmZXI7Cit9CisKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0Ojpj
cmVhdGVDb21wYXRpYmxlQ29uY3JldGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUs
IGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSkgY29uc3QKK3sKKyAgICBp
ZiAoc2l6ZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byBz
Y2FsZWRTaXplID0gY29tcGF0aWJsZUltYWdlQnVmZmVyU2l6ZShzaXplKTsKKyAgICByZXR1cm4g
Y3JlYXRlQ29tcGF0aWJsZUNvbmNyZXRlSW1hZ2VCdWZmZXIoc2NhbGVkU2l6ZSwgc2l6ZSwgY29s
b3JTcGFjZSk7Cit9CisKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0OjpjcmVh
dGVDb21wYXRpYmxlQ29uY3JldGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNv
bnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSkgY29uc3QKK3sKKyAgICBpZiAo
cmVjdC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byBzY2Fs
ZWRSZWN0ID0gY29tcGF0aWJsZUltYWdlQnVmZmVyUmVjdChyZWN0KTsKKyAgICBhdXRvIGltYWdl
QnVmZmVyID0gY3JlYXRlQ29tcGF0aWJsZUNvbmNyZXRlSW1hZ2VCdWZmZXIoc2NhbGVkUmVjdC5z
aXplKCksIHJlY3Quc2l6ZSgpLCBjb2xvclNwYWNlKTsKKyAgICBpZiAoIWltYWdlQnVmZmVyKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGltYWdlQnVmZmVyLT5jb250ZXh0KCkudHJh
bnNsYXRlKC1lbmNsb3NpbmdJbnRSZWN0KHJlY3QpLmxvY2F0aW9uKCkpOworICAgIHJldHVybiBp
bWFnZUJ1ZmZlcjsKK30KKwogSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6ZHJhd0lt
YWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKIHsKICAgICByZXR1cm4g
ZHJhd0ltYWdlKGltYWdlLCBGbG9hdFJlY3QoZGVzdGluYXRpb24sIGltYWdlLnNpemUoKSksIEZs
b2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdlLnNpemUoKSksIGltYWdlUGFpbnRpbmdPcHRpb25z
KTsKQEAgLTY2OCw3ICs3NjEsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcE91dFJvdW5k
ZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJlY3QpCiAKIEdyYXBoaWNzQ29udGV4dDo6
Q2xpcFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvRHJhd2lu
Z0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IERlc3RpbmF0aW9u
Q29sb3JTcGFjZSYgY29sb3JTcGFjZSwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4m
JiBkcmF3aW5nRnVuY3Rpb24pCiB7Ci0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVy
OjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGRlc3RpbmF0aW9uLnNpemUoKSwgY29sb3JTcGFjZSwg
KnRoaXMpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBjcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZm
ZXIoZGVzdGluYXRpb24uc2l6ZSgpLCBjb2xvclNwYWNlKTsKICAgICBpZiAoIWltYWdlQnVmZmVy
KQogICAgICAgICByZXR1cm4gQ2xpcFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0OjpGYWlsZWRUb0Ny
ZWF0ZUltYWdlQnVmZmVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IGNmNzA5MmRlMzNiYzViNzI4YWQ0NjFiMGZjMDIx
NzdmNjllZWZmMzIuLjMxNDBkYWFmMTYzMmEyZDFmYzhlZTg5YjUwM2Q2NDgwZDE3YjViMTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5oCkBAIC00MTYsNiArNDE2LDE2IEBAIHB1YmxpYzoKIAogICAgIC8vIEltYWdlcywgUGF0dGVy
bnMsIGFuZCBNZWRpYQogCisgICAgSW50U2l6ZSBjb21wYXRpYmxlSW1hZ2VCdWZmZXJTaXplKGNv
bnN0IEZsb2F0U2l6ZSYpIGNvbnN0OworICAgIEludFJlY3QgY29tcGF0aWJsZUltYWdlQnVmZmVy
UmVjdChjb25zdCBGbG9hdFJlY3QmKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1
YWwgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIoY29uc3Qg
RmxvYXRTaXplJiwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UmID0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpIGNvbnN0OworICAgIFdFQkNP
UkVfRVhQT1JUIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVy
KGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgPSBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IoKSkgY29uc3Q7CisgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBj
cmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIHNvdXJjZUltYWdlLCBjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmID0gRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCKCkpIGNvbnN0OworCisgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVh
dGVDb21wYXRpYmxlQ29uY3JldGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBjb25zdCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UmID0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpIGNv
bnN0OworICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlQ29tcGF0aWJsZUNvbmNyZXRlSW1h
Z2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiA9
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKSBjb25zdDsKKwogICAgIHZpcnR1YWwgdm9p
ZCBkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXpl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgPSAwOwogCiAgICAgV0VCQ09SRV9FWFBP
UlQgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UG9pbnQmIGRl
c3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IEltYWdlT3JpZW50YXRp
b246OkZyb21JbWFnZSB9KTsKQEAgLTU0Miw2ICs1NTIsOSBAQCBwdWJsaWM6CiBwcml2YXRlOgog
ICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1RyYW5zcGFyZW5jeUxheWVycygpIGNvbnN0IHsgcmV0
dXJuIHRydWU7IH0KIAorICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlQ29tcGF0aWJsZUlt
YWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2NhbGVkU2l6ZSwgY29uc3QgRmxvYXRTaXplJiwg
Y29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJikgY29uc3Q7CisgICAgUmVmUHRyPEltYWdlQnVm
ZmVyPiBjcmVhdGVDb21wYXRpYmxlQ29uY3JldGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUm
IHNjYWxlZFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSYpIGNvbnN0OworCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaWxsRWxsaXBzZUFzUGF0aChjb25z
dCBGbG9hdFJlY3QmKTsKICAgICB2b2lkIHN0cm9rZUVsbGlwc2VBc1BhdGgoY29uc3QgRmxvYXRS
ZWN0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZl
ci5jcHAKaW5kZXggMDE5M2JmYjBmOTZjN2QzNDA1M2U3NjhhMGMyNThmYzEyNTc4MGZkMy4uNzcx
ODI4YjY0NWNiMzExM2I1NTM4N2E3YTJlMjRjMDI4MzE0NzYzMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcApAQCAtMSw3ICsxLDcgQEAK
IC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgRGlyayBTY2h1bHplIDxrcml0QHdlYmtpdC5vcmc+
CiAgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTEuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTcyLDc1ICs3Miw2IEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShj
b25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVuCiAgICAgcmV0dXJuIGltYWdl
QnVmZmVyOwogfQogCi1SZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGVDb21w
YXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0KQotewotICAgIGlmIChzaXplLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0KLSAgICBJbnRTaXplIHNjYWxlZFNpemUgPSBJbWFnZUJ1ZmZlcjo6Y29tcGF0aWJs
ZUJ1ZmZlclNpemUoc2l6ZSwgY29udGV4dCk7Ci0KLSAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGlt
YWdlQnVmZmVyOwotCi0gICAgaWYgKGNvbnRleHQucmVuZGVyaW5nTW9kZSgpID09IFJlbmRlcmlu
Z01vZGU6OkFjY2VsZXJhdGVkKQotICAgICAgICBpbWFnZUJ1ZmZlciA9IEFjY2VsZXJhdGVkSW1h
Z2VCdWZmZXI6OmNyZWF0ZShzY2FsZWRTaXplLCBjb250ZXh0KTsKLSAgICAKLSAgICBpZiAoIWlt
YWdlQnVmZmVyKQotICAgICAgICBpbWFnZUJ1ZmZlciA9IFVuYWNjZWxlcmF0ZWRJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKHNjYWxlZFNpemUsIGNvbnRleHQpOwotCi0gICAgaWYgKCFpbWFnZUJ1ZmZlcikK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnNj
YWxlKHNjYWxlZFNpemUgLyBzaXplKTsKLSAgICByZXR1cm4gaW1hZ2VCdWZmZXI7Ci19Ci0KLS8v
IFRoaXMgaXMgdXNlZnVsIHdoZW4geW91IG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBwaXhlbCBncmlk
IG9mIHRoZSBJbWFnZUJ1ZmZlciBhbGlnbnMgd2l0aCB0aGUgcGl4ZWwgZ3JpZCBvZiB0aGUgY29u
dGV4dC4KLS8vIFNpbXBseSBzYXlpbmcgY3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihyZWN0LnNpemUo
KSwgY29udGV4dCkgaXNuJ3Qgc3VmZmljaWVudCBpbiB0aGlzIHNpdHVhdGlvbiwgYmVjYXVzZSBy
ZWN0LmxvY2F0aW9uKCkgbWF5IG5vdCBsaWUgb24gYSBwaXhlbCBib3VuZGFyeS4KLS8vIEluIHRo
aXMgc2l0dWF0aW9uLCB3ZSBoYXZlIHRvIGluZmxhdGUgYm90aCB0aGUgbGVmdCBzaWRlIGFuZCB0
aGUgcmlnaHQgc2lkZSwgd2hpY2ggY2FuIGxlYWQgdG8gZGlmZmVyZW50IHJlc3VsdHMgdGhhbgot
Ly8gY3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihyZWN0LnNpemUoKSwgY29udGV4dCkgd291bGQgaGF2
ZSBwcm9kdWNlZC4KLWF1dG8gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29u
c3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIC0+IHN0
ZDo6b3B0aW9uYWw8Q29tcGF0aWJsZUJ1ZmZlckRlc2NyaXB0aW9uPgotewotICAgIGlmIChyZWN0
LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgIGF1dG8gaW5m
byA9IEltYWdlQnVmZmVyOjpjb21wYXRpYmxlQnVmZmVySW5mbyhyZWN0LCBjb250ZXh0KTsKLQot
ICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXI7Ci0KLSAgICBpZiAoY29udGV4dC5y
ZW5kZXJpbmdNb2RlKCkgPT0gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQpCi0gICAgICAgIGlt
YWdlQnVmZmVyID0gQWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGluZm8ucGh5c2ljYWxT
aXplSW5EZXZpY2VDb29yZGluYXRlcywgY29udGV4dCk7Ci0gICAgCi0gICAgaWYgKCFpbWFnZUJ1
ZmZlcikKLSAgICAgICAgaW1hZ2VCdWZmZXIgPSBVbmFjY2VsZXJhdGVkSW1hZ2VCdWZmZXI6OmNy
ZWF0ZShpbmZvLnBoeXNpY2FsU2l6ZUluRGV2aWNlQ29vcmRpbmF0ZXMsIGNvbnRleHQpOwotCi0g
ICAgaWYgKCFpbWFnZUJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAg
IGltYWdlQnVmZmVyLT5jb250ZXh0KCkuc2NhbGUoaW5mby5zY2FsZSk7Ci0gICAgaW1hZ2VCdWZm
ZXItPmNvbnRleHQoKS50cmFuc2xhdGUoLWluZm8uaW5mbGF0ZWRSZWN0SW5Vc2VyQ29vcmRpbmF0
ZXMubG9jYXRpb24oKSk7Ci0gICAgcmV0dXJuIHsgeyBpbWFnZUJ1ZmZlci5yZWxlYXNlTm9uTnVs
bCgpLCBpbmZvLmluZmxhdGVkUmVjdEluVXNlckNvb3JkaW5hdGVzIH0gfTsKLX0KLQotUmVmUHRy
PEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBG
bG9hdFNpemUmIHNpemUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwg
Y29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQotewotICAgIGlmIChzaXplLmlzRW1wdHko
KSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBJbnRTaXplIHNjYWxlZFNpemUgPSBJ
bWFnZUJ1ZmZlcjo6Y29tcGF0aWJsZUJ1ZmZlclNpemUoc2l6ZSwgY29udGV4dCk7Ci0KLSAgICBh
dXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoc2Nh
bGVkU2l6ZSwgMSwgY29sb3JTcGFjZSwgY29udGV4dCk7Ci0gICAgaWYgKCFpbWFnZUJ1ZmZlcikK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnNj
YWxlKHNjYWxlZFNpemUgLyBzaXplKTsKLSAgICByZXR1cm4gaW1hZ2VCdWZmZXI7Ci19Ci0KLVJl
ZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29u
c3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0
aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
KQotewotICAgIHJldHVybiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIGNvbnRleHQucmVuZGVy
aW5nTW9kZSgpLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JB
OCk7Ci19Ci0KIGJvb2wgSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKGNvbnN0IEZsb2F0
U2l6ZSYgc2l6ZSkKIHsKICAgICBpZiAoc2l6ZS5pc0VtcHR5KCkpCkBAIC0xODUsNTggKzExNiw2
IEBAIEZsb2F0UmVjdCBJbWFnZUJ1ZmZlcjo6Y2xhbXBlZFJlY3QoY29uc3QgRmxvYXRSZWN0JiBy
ZWN0KQogICAgIHJldHVybiBGbG9hdFJlY3QocmVjdC5sb2NhdGlvbigpLCBjbGFtcGVkU2l6ZShy
ZWN0LnNpemUoKSkpOwogfQogCi1JbnRTaXplIEltYWdlQnVmZmVyOjpjb21wYXRpYmxlQnVmZmVy
U2l6ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCkKLXsKLSAgICAvLyBFbmxhcmdlIHRoZSBidWZmZXIgc2l6ZSBpZiB0aGUgY29udGV4dCdzIHRy
YW5zZm9ybSBpcyBzY2FsaW5nIGl0IHNvIHdlIG5lZWQgYSBoaWdoZXIKLSAgICAvLyByZXNvbHV0
aW9uIHRoYW4gb25lIHBpeGVsIHBlciB1bml0LgotICAgIHJldHVybiBleHBhbmRlZEludFNpemUo
c2l6ZSAqIGNvbnRleHQuc2NhbGVGYWN0b3IoKSk7Ci19Ci0KLWF1dG8gSW1hZ2VCdWZmZXI6OmNv
bXBhdGlibGVCdWZmZXJJbmZvKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0KSAtPiBDb21wYXRpYmxlQnVmZmVySW5mbwotewotICAgIGF1dG8gc2Nh
bGVGYWN0b3IgPSBjb250ZXh0LnNjYWxlRmFjdG9yKCk7Ci0gICAgYXV0byBzY2FsZWRSZWN0ID0g
cmVjdDsKLSAgICBzY2FsZWRSZWN0LnNjYWxlKHNjYWxlRmFjdG9yKTsKLSAgICBhdXRvIGluZmxh
dGVkU2NhbGVkUmVjdCA9IGVuY2xvc2luZ0ludFJlY3Qoc2NhbGVkUmVjdCk7Ci0gICAgYXV0byBp
bmZsYXRlZFJlY3RJblVzZXJDb29yZGluYXRlcyA9IEZsb2F0UmVjdChpbmZsYXRlZFNjYWxlZFJl
Y3QpOwotCi0gICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBhbGxvY2F0ZSBodWdlIEltYWdlQnVmZmVy
cyBiZWNhdXNlIHRoZXkgY2FuIHRha2UgYSBsb3Qgb2YgbWVtb3J5LAotICAgIC8vIHNvIGlmIHRo
ZSBzaXplIHdvdWxkIGhhdmUgYmVlbiB0b28gYmlnLCBkZWNyZWFzZSByZXNvbHV0aW9uIGFuZCBz
Y2FsZSB0aGUgcmVzdWx0aW5nIGNvbnRleHQuCi0gICAgLy8gVGhpcyB3aWxsIG1lYW4gdGhhdCB0
aGUgSW1hZ2VCdWZmZXIgd2lsbCBsb3NlIHF1YWxpdHksIGJ1dCB3aWxsIHN0aWxsIGdlbmVyYWxs
eSBsb29rIGNvcnJlY3QuCi0gICAgY29uc3RleHByIGludCBtYXhEaW1lbnNpb24gPSA0MDk2Owot
ICAgIGlmIChpbmZsYXRlZFNjYWxlZFJlY3Qud2lkdGgoKSA+IG1heERpbWVuc2lvbikgewotICAg
ICAgICAvLyBUaGUgcGl4ZWwgZ3JpZHMgd29uJ3QgYWxpZ24gYW55IG1vcmUsIHNvIHRoZXJlJ3Mg
bm8gbmVlZCB0byB0cnkgdG8gaGFuZGxlIGZyYWN0aW9ucyBvZiBwaXhlbHMuCi0gICAgICAgIGlu
ZmxhdGVkU2NhbGVkUmVjdC5zZXRXaWR0aChtYXhEaW1lbnNpb24pOwotICAgICAgICBpbmZsYXRl
ZFJlY3RJblVzZXJDb29yZGluYXRlcy5zY2FsZShtYXhEaW1lbnNpb24gLyBpbmZsYXRlZFJlY3RJ
blVzZXJDb29yZGluYXRlcy53aWR0aCgpLCAxKTsKLSAgICAgICAgc2NhbGVGYWN0b3Iuc2V0V2lk
dGgobWF4RGltZW5zaW9uIC8gcmVjdC53aWR0aCgpKTsKLSAgICB9Ci0gICAgaWYgKGluZmxhdGVk
U2NhbGVkUmVjdC5oZWlnaHQoKSA+IG1heERpbWVuc2lvbikgewotICAgICAgICAvLyBUaGUgcGl4
ZWwgZ3JpZHMgd29uJ3QgYWxpZ24gYW55IG1vcmUsIHNvIHRoZXJlJ3Mgbm8gbmVlZCB0byB0cnkg
dG8gaGFuZGxlIGZyYWN0aW9ucyBvZiBwaXhlbHMuCi0gICAgICAgIGluZmxhdGVkU2NhbGVkUmVj
dC5zZXRIZWlnaHQobWF4RGltZW5zaW9uKTsKLSAgICAgICAgaW5mbGF0ZWRSZWN0SW5Vc2VyQ29v
cmRpbmF0ZXMuc2NhbGUoMSwgbWF4RGltZW5zaW9uIC8gaW5mbGF0ZWRSZWN0SW5Vc2VyQ29vcmRp
bmF0ZXMuaGVpZ2h0KCkpOwotICAgICAgICBzY2FsZUZhY3Rvci5zZXRIZWlnaHQobWF4RGltZW5z
aW9uIC8gcmVjdC5oZWlnaHQoKSk7Ci0gICAgfQotCi0gICAgYXV0byBwaHlzaWNhbFNpemVJbkRl
dmljZUNvb3JkaW5hdGVzID0gaW5mbGF0ZWRTY2FsZWRSZWN0LnNpemUoKTsKLSAgICBpbmZsYXRl
ZFJlY3RJblVzZXJDb29yZGluYXRlcy5zY2FsZSgxLjBmIC8gc2NhbGVGYWN0b3IpOwotICAgIHJl
dHVybiB7IFdURk1vdmUocGh5c2ljYWxTaXplSW5EZXZpY2VDb29yZGluYXRlcyksIFdURk1vdmUo
aW5mbGF0ZWRSZWN0SW5Vc2VyQ29vcmRpbmF0ZXMpLCBzY2FsZUZhY3RvciB9OwotfQotCi1SZWZQ
dHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjb3B5UmVjdFRvQnVmZmVyKGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBjb25z
dCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCi17Ci0gICAgaWYgKHJlY3QuaXNFbXB0eSgpKQot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIEludFNpemUgc2NhbGVkU2l6ZSA9IEltYWdl
QnVmZmVyOjpjb21wYXRpYmxlQnVmZmVyU2l6ZShyZWN0LnNpemUoKSwgY29udGV4dCk7Ci0KLSAg
ICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKHNjYWxl
ZFNpemUsIDEsIGNvbG9yU3BhY2UsIGNvbnRleHQpOwotICAgIGlmICghYnVmZmVyKQotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGJ1ZmZlci0+Y29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZl
cigqdGhpcywgLXJlY3QubG9jYXRpb24oKSk7Ci0gICAgcmV0dXJuIGJ1ZmZlcjsKLX0KLQogUmVm
UHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlcjo6c2lua0ludG9OYXRpdmVJbWFnZShSZWZQdHI8
SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyKQogewogICAgIHJldHVybiBpbWFnZUJ1ZmZlci0+c2lu
a0ludG9OYXRpdmVJbWFnZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyLmgKaW5kZXggZDJkOWJlOWVmNDAzMmZhYTI1YmU2MmNhY2U0Mzc4MmRlZmNi
NzQxNS4uNTMwOTQ4ZTI2MThjNjI2Y2UyM2M4YmNjY2I1YWM1NmExYzk0N2JmMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCkBAIC0xLDYgKzEs
NiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1l
cm1hbm5Aa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAwNy0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDIyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMCBUb3JjaCBNb2JpbGUg
KEJlaWppbmcpIENvLiBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CkBAIC01MCwxNiArNTAsNiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUs
IFNob3VsZFVzZURpc3BsYXlMaXN0LCBSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9u
U2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIFBpeGVsRm9ybWF0LCBjb25zdCBI
b3N0V2luZG93KiA9IG51bGxwdHIpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8
SW1hZ2VCdWZmZXI+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBmbG9h
dCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIFBpeGVsRm9y
bWF0LCBjb25zdCBIb3N0V2luZG93KiA9IG51bGxwdHIpOwogCi0gICAgLy8gQ3JlYXRlIGFuIGlt
YWdlIGJ1ZmZlciBjb21wYXRpYmxlIHdpdGggdGhlIGNvbnRleHQsIHdpdGggc3VpdGFibGUgcmVz
b2x1dGlvbiBmb3IgZHJhd2luZyBpbnRvIHRoZSBidWZmZXIgYW5kIHRoZW4gaW50byB0aGlzIGNv
bnRleHQuCi0gICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlQ29tcGF0aWJsZUJ1
ZmZlcihjb25zdCBGbG9hdFNpemUmLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKLSAgICBzdHJ1
Y3QgQ29tcGF0aWJsZUJ1ZmZlckRlc2NyaXB0aW9uIHsKLSAgICAgICAgUmVmPEltYWdlQnVmZmVy
PiBpbWFnZUJ1ZmZlcjsKLSAgICAgICAgRmxvYXRSZWN0IGluZmxhdGVkUmVjdEluVXNlckNvb3Jk
aW5hdGVzOwotICAgIH07Ci0gICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q29tcGF0aWJsZUJ1ZmZl
ckRlc2NyaXB0aW9uPiBjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgcmVj
dEluVXNlckNvb3JkaW5hdGVzLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKLSAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVDb21wYXRpYmxlQnVmZmVy
KGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIGNvbnN0IEdy
YXBoaWNzQ29udGV4dCYpOwotICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUNv
bXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBj
b25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKLQog
ICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyBhcmUgdXNlZCB3aGVuIGNsYW1waW5nIHRoZSBJbWFnZUJ1
ZmZlciB3aGljaCBpcyBjcmVhdGVkIGZvciBmaWx0ZXIsIG1hc2tlciBvciBjbGlwcGVyLgogICAg
IHN0YXRpYyBib29sIHNpemVOZWVkc0NsYW1waW5nKGNvbnN0IEZsb2F0U2l6ZSYpOwogICAgIHN0
YXRpYyBib29sIHNpemVOZWVkc0NsYW1waW5nKGNvbnN0IEZsb2F0U2l6ZSYsIEZsb2F0U2l6ZSYg
c2NhbGUpOwpAQCAtNjcsMTQgKzU3LDYgQEAgcHVibGljOgogICAgIHN0YXRpYyBGbG9hdFNpemUg
Y2xhbXBlZFNpemUoY29uc3QgRmxvYXRTaXplJiwgRmxvYXRTaXplJiBzY2FsZSk7CiAgICAgc3Rh
dGljIEZsb2F0UmVjdCBjbGFtcGVkUmVjdChjb25zdCBGbG9hdFJlY3QmKTsKIAotICAgIHN0YXRp
YyBJbnRTaXplIGNvbXBhdGlibGVCdWZmZXJTaXplKGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEdy
YXBoaWNzQ29udGV4dCYpOwotICAgIHN0cnVjdCBDb21wYXRpYmxlQnVmZmVySW5mbyB7Ci0gICAg
ICAgIEludFNpemUgcGh5c2ljYWxTaXplSW5EZXZpY2VDb29yZGluYXRlczsKLSAgICAgICAgRmxv
YXRSZWN0IGluZmxhdGVkUmVjdEluVXNlckNvb3JkaW5hdGVzOwotICAgICAgICBGbG9hdFNpemUg
c2NhbGU7Ci0gICAgfTsKLSAgICBzdGF0aWMgQ29tcGF0aWJsZUJ1ZmZlckluZm8gY29tcGF0aWJs
ZUJ1ZmZlckluZm8oY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7Ci0g
ICAgCiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+SW1hZ2VCdWZmZXIoKSA9IGRlZmF1bHQ7
CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0QmFja2VuZChzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZm
ZXJCYWNrZW5kPiYmKSA9IDA7CkBAIC0xMjIsOSArMTA0LDYgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgUmVmUHRyPEltYWdlPiBjb3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5n
U3RvcmUsIFByZXNlcnZlUmVzb2x1dGlvbiA9IFByZXNlcnZlUmVzb2x1dGlvbjo6Tm8pIGNvbnN0
ID0gMDsKICAgICB2aXJ0dWFsIFJlZlB0cjxJbWFnZT4gZmlsdGVyZWRJbWFnZShGaWx0ZXImKSA9
IDA7CiAKLSAgICAvLyBDcmVhdGUgYW4gaW1hZ2UgYnVmZmVyIGNvbXBhdGlibGUgd2l0aCB0aGUg
Y29udGV4dCBhbmQgY29weSByZWN0IGZyb20gdGhpcyBidWZmZXIgaW50byB0aGlzIG5ldyBvbmUu
Ci0gICAgUmVmUHRyPEltYWdlQnVmZmVyPiBjb3B5UmVjdFRvQnVmZmVyKGNvbnN0IEZsb2F0UmVj
dCYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYp
OwotCiAgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0ID0gRmxvYXRSZWN0KDAsIDAs
IC0xLCAtMSksIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0
U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSA9IDA7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VH
ZW5lcmF0ZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1l
ZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwCmluZGV4IDZmZmMyODJiOWNjNzUwNDA4ODhjYjM2NGZi
MzMwMjAyZmNiMDNiZDAuLjM3MGM3ZGMyODk2ZjM5NjJjYjNlZDUwOTgyZGFiNjk5NzRmNjMyYzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VH
ZW5lcmF0ZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmNwcApAQCAtNjUsNyArNjUsNyBAQCBJbWFnZURyYXdS
ZXN1bHQgTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgRgogdm9pZCBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJu
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5z
Zm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAjaWYgVVNFKE5FV19USEVN
RSkKLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVC
dWZmZXIoc2l6ZSgpLCBjb250ZXh0KTsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gY29udGV4dC5j
cmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIoc2l6ZSgpKTsKICAgICBpZiAoIWltYWdlQnVmZmVy
KQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKaW5kZXggMzY0YmMyM2EzMGIwYWI1
YjI1ZGJkOWVmNzU3NjQwNzI1N2E4YzI0ZC4uYmNhODg5NmUwZDVlZjQyYTBkOGY2ZTJmMzVmOGMx
YzhkMjg4OTg0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKQEAgLTIzMiwxNCArMjMyLDE1IEBAIHZvaWQg
UERGRG9jdW1lbnRJbWFnZTo6dXBkYXRlQ2FjaGVkSW1hZ2VJZk5lZWRlZChHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0CiAKICAgICAvLyBDYWNoZSB0aGUgUERGIGltYWdlIG9ubHkgaWYg
dGhlIHNpemUgb2YgdGhlIG5ldyBpbWFnZSB3b24ndCBleGNlZWQgdGhlIGNhY2hlIHRocmVzaG9s
ZC4KICAgICBpZiAobV9wZGZJbWFnZUNhY2hpbmdQb2xpY3kgPT0gUERGSW1hZ2VDYWNoaW5nUG9s
aWN5OjpCZWxvd01lbW9yeUxpbWl0KSB7Ci0gICAgICAgIEludFNpemUgc2NhbGVkU2l6ZSA9IElt
YWdlQnVmZmVyOjpjb21wYXRpYmxlQnVmZmVyU2l6ZShjYWNoZWRJbWFnZVNpemUsIGNvbnRleHQp
OworICAgICAgICBhdXRvIHNjYWxlZFNpemUgPSBjb250ZXh0LmNvbXBhdGlibGVJbWFnZUJ1ZmZl
clNpemUoY2FjaGVkSW1hZ2VTaXplKTsKICAgICAgICAgaWYgKHNfYWxsRGVjb2RlZERhdGFTaXpl
ICsgc2NhbGVkU2l6ZS51bmNsYW1wZWRBcmVhKCkgKiA0IC0gbV9jYWNoZWRCeXRlcyA+IHNfbWF4
RGVjb2RlZERhdGFTaXplKSB7CiAgICAgICAgICAgICBkZXN0cm95RGVjb2RlZERhdGEoKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KIAotICAgIG1fY2FjaGVkSW1hZ2VC
dWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjYWNoZWRJbWFnZVNp
emUsIGNvbnRleHQpOworICAgIC8vIENyZWF0ZSBpbi1wcm9jZXNzIEltYWdlQnVmZmVyIHNpbmNl
IHRoZSBkZW9jb2Rpbmcgb2YgUERGIGltYWdlcyBoYXMgdG8gaGFwcGVuIGluIFdlYlByb2Nlc3Mu
CisgICAgbV9jYWNoZWRJbWFnZUJ1ZmZlciA9IGNvbnRleHQuY3JlYXRlQ29tcGF0aWJsZUNvbmNy
ZXRlSW1hZ2VCdWZmZXIoY2FjaGVkSW1hZ2VTaXplKTsKICAgICBpZiAoIW1fY2FjaGVkSW1hZ2VC
dWZmZXIpIHsKICAgICAgICAgZGVzdHJveURlY29kZWREYXRhKCk7CiAgICAgICAgIHJldHVybjsK
QEAgLTI5Miw3ICsyOTMsNyBAQCBJbWFnZURyYXdSZXN1bHQgUERGRG9jdW1lbnRJbWFnZTo6ZHJh
dyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdAogICAgICAgICAgICAg
Ly8gc2NhbGFyID0gc3FydChtYXggbnVtYmVyIG9mIHBpeGVscyAvICh3aWR0aCAqIGhlaWdodCkp
CiAgICAgICAgICAgICBhdXRvIHNjYWxhciA9IHN0ZDo6bWluKDEuZiwgc3RkOjpzcXJ0KHN0YXRp
Y19jYXN0PGZsb2F0PihzX21heENhY2hlZEltYWdlQXJlYSkgLyAoZHN0UmVjdC53aWR0aCgpICog
ZHN0UmVjdC5oZWlnaHQoKSkpKTsKICAgICAgICAgICAgIEZsb2F0UmVjdCBsb2NhbERlc3RpbmF0
aW9uUmVjdChGbG9hdFBvaW50KCksIGRzdFJlY3Quc2l6ZSgpICogc2NhbGFyKTsKLSAgICAgICAg
ICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVC
dWZmZXIobG9jYWxEZXN0aW5hdGlvblJlY3Quc2l6ZSgpLCBjb250ZXh0KSkgeworICAgICAgICAg
ICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBjb250ZXh0LmNyZWF0ZUNvbXBhdGlibGVDb25jcmV0
ZUltYWdlQnVmZmVyKGxvY2FsRGVzdGluYXRpb25SZWN0LnNpemUoKSkpIHsKICAgICAgICAgICAg
ICAgICBhdXRvJiBidWZmZXJDb250ZXh0ID0gaW1hZ2VCdWZmZXItPmNvbnRleHQoKTsKICAgICAg
ICAgICAgICAgICB0cmFuc2Zvcm1Db250ZXh0Rm9yUGFpbnRpbmcoYnVmZmVyQ29udGV4dCwgbG9j
YWxEZXN0aW5hdGlvblJlY3QsIHNyY1JlY3QpOwogICAgICAgICAgICAgICAgIGRyYXdQREZQYWdl
KGJ1ZmZlckNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29yZXRleHQvRHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRHJhd0dseXBoc1JlY29yZGVyQ29yZVRl
eHQuY3BwCmluZGV4IGMyOTVlZmU4MzQ3YjA0NWJlMzFkYjM2NzY3M2VlN2Y5OTViMWE0YzMuLjFm
NDhiYWI3ZjRiMTBhMmQ5MzczMjJiODE1NjEwZGE0YmE1M2E3OTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0RyYXdHbHlwaHNSZWNvcmRlckNv
cmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4
dC9EcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAKQEAgLTM3NiwxMSArMzc2LDE0IEBAIHZv
aWQgRHJhd0dseXBoc1JlY29yZGVyOjpkcmF3T1RTVkdSdW4oY29uc3QgRm9udCYgZm9udCwgY29u
c3QgR2x5cGhCdWZmZXJHbHlwaCoKICAgICBGbG9hdFBvaW50IHBlblBvc2l0aW9uID0gc3RhcnRQ
b2ludDsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtR2x5cGhzOyArK2kpIHsKICAg
ICAgICAgYXV0byBib3VuZHMgPSBmb250LmJvdW5kc0ZvckdseXBoKGdseXBoc1tpXSk7Ci0gICAg
ICAgIGlmIChhdXRvIGltYWdlQnVmZmVyRGVzY3JpcHRpb24gPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
Q29tcGF0aWJsZUJ1ZmZlcihib3VuZHMsIG1fb3duZXIpKSB7Ci0gICAgICAgICAgICBGb250Q2Fz
Y2FkZTo6ZHJhd0dseXBocyhpbWFnZUJ1ZmZlckRlc2NyaXB0aW9uLT5pbWFnZUJ1ZmZlci0+Y29u
dGV4dCgpLCBmb250LCBnbHlwaHMgKyBpLCBhZHZhbmNlcyArIGksIDEsIEZsb2F0UG9pbnQoKSwg
c21vb3RoaW5nTW9kZSk7Ci0gICAgICAgICAgICBhdXRvIGRlc3RpbmF0aW9uUmVjdCA9IGltYWdl
QnVmZmVyRGVzY3JpcHRpb24tPmluZmxhdGVkUmVjdEluVXNlckNvb3JkaW5hdGVzOworCisgICAg
ICAgIC8vIENyZWF0ZSBpbi1wcm9jZXNzIEltYWdlQnVmZmVyIHNpbmNlIHRoZSBkZW9jb2Rpbmcg
b2YgT1QtU1ZHIGZvbnRzIGhhcyB0byBoYXBwZW4gaW4gV2ViUHJvY2Vzcy4KKyAgICAgICAgaWYg
KGF1dG8gaW1hZ2VCdWZmZXIgPSBtX293bmVyLmNyZWF0ZUNvbXBhdGlibGVDb25jcmV0ZUltYWdl
QnVmZmVyKGJvdW5kcykpIHsKKyAgICAgICAgICAgIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKGlt
YWdlQnVmZmVyLT5jb250ZXh0KCksIGZvbnQsIGdseXBocyArIGksIGFkdmFuY2VzICsgaSwgMSwg
RmxvYXRQb2ludCgpLCBzbW9vdGhpbmdNb2RlKTsKKworICAgICAgICAgICAgRmxvYXRSZWN0IGRl
c3RpbmF0aW9uUmVjdCA9IGVuY2xvc2luZ0ludFJlY3QoYm91bmRzKTsKICAgICAgICAgICAgIGRl
c3RpbmF0aW9uUmVjdC5tb3ZlQnkocGVuUG9zaXRpb24pOwotICAgICAgICAgICAgbV9vd25lci5k
cmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXJEZXNjcmlwdGlvbi0+aW1hZ2VCdWZmZXIsIGRlc3Rp
bmF0aW9uUmVjdCk7CisgICAgICAgICAgICBtX293bmVyLmRyYXdJbWFnZUJ1ZmZlcigqaW1hZ2VC
dWZmZXIsIGRlc3RpbmF0aW9uUmVjdCk7CiAgICAgICAgIH0KICAgICAgICAgcGVuUG9zaXRpb24u
bW92ZShzaXplKGFkdmFuY2VzW2ldKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlY29yZGVySW1wbC5jcHAKaW5kZXggZmU1MTU1OGQ3ODIzNTM0MTlhNjRjOWE3Zjli
ODk3OTAzYWE2ZjlhNC4uNTRkNGU5NDlmNTY2MjlkMTUwYWYxOTczOTY2MjMxNzY2Yjc1OGIzYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuY3BwCkBAIC00
NTYsNiArNDU2LDExIEBAIGJvb2wgUmVjb3JkZXJJbXBsOjpyZWNvcmRSZXNvdXJjZVVzZShGb250
JiBmb250KQogICAgIHJldHVybiB0cnVlOwogfQogCitSZWZQdHI8SW1hZ2VCdWZmZXI+IFJlY29y
ZGVySW1wbDo6Y3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6
ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNv
bG9yU3BhY2UpIGNvbnN0Cit7CisgICAgcmV0dXJuIEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwg
cmVuZGVyaW5nTW9kZSgpLCBTaG91bGRVc2VEaXNwbGF5TGlzdDo6WWVzLCBSZW5kZXJpbmdQdXJw
b3NlOjpVbnNwZWNpZmllZCwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBQaXhlbEZvcm1h
dDo6QkdSQTgpOworfQorCiAvLyBGSVhNRTogc2hhcmUgd2l0aCBTaGFkb3dEYXRhCiBzdGF0aWMg
aW5saW5lIGZsb2F0IHNoYWRvd1BhaW50aW5nRXh0ZW50KGZsb2F0IGJsdXJSYWRpdXMpCiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZWNvcmRlckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5oCmluZGV4IGVkNDcxMGIz
ZDY5MDNiZWQ2MjY5Y2RiYzZiMjU3ZjU3ZmZmNTg4ZWMuLmQxOWRhNGMyMDA4NGU2ZTBmN2FhMDFm
MTU3NmJlYWM5NmQ0OWNkMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVySW1wbC5oCkBAIC0xNDMsNiArMTQzLDggQEAgcHJpdmF0ZToKIAogICAgIHN0ZDo6dW5pcXVl
X3B0cjxHcmFwaGljc0NvbnRleHQ+IGNyZWF0ZU5lc3RlZENvbnRleHQoY29uc3QgRmxvYXRSZWN0
JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RNKSBmaW5hbDsK
IAorICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyKGNv
bnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgV2Vi
Q29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlJiA9IFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQigpKSBjb25zdCBmaW5hbDsKKwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIGNs
YXNzLi4uIEFyZ3M+CiAgICAgdm9pZCBhcHBlbmQoQXJncyYmLi4uIGFyZ3MpCiAgICAgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVwbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCmluZGV4IDIxODY1MGFmNThhNGE3
YmNmMmMxNDEwZmYwZWYwMDUwNjgxYjZlZWQuLjJjNGFlNDRkZTkyY2UyNjQ4Y2Q2ODkzZWFjYTY3
MWMyYjRjZjBlNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAK
QEAgLTE3Myw3ICsxNzMsNyBAQCBzdGQ6OnBhaXI8c3RkOjpvcHRpb25hbDxTdG9wUmVwbGF5UmVh
c29uPiwgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aQogICAgICAgICBpZiAo
bV9tYXNrSW1hZ2VCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29u
OjpJbnZhbGlkSXRlbU9yRXh0ZW50LCBzdGQ6Om51bGxvcHQgfTsKICAgICAgICAgYXV0byYgY2xp
cEl0ZW0gPSBpdGVtLmdldDxCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcz4oKTsKLSAgICAgICAg
bV9tYXNrSW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihj
bGlwSXRlbS5kZXN0aW5hdGlvbigpLnNpemUoKSwgY2xpcEl0ZW0uY29sb3JTcGFjZSgpLCBtX2Nv
bnRleHQpOworICAgICAgICBtX21hc2tJbWFnZUJ1ZmZlciA9IG1fY29udGV4dC5jcmVhdGVDb21w
YXRpYmxlSW1hZ2VCdWZmZXIoY2xpcEl0ZW0uZGVzdGluYXRpb24oKS5zaXplKCksIGNsaXBJdGVt
LmNvbG9yU3BhY2UoKSk7CiAgICAgICAgIGlmICghbV9tYXNrSW1hZ2VCdWZmZXIpCiAgICAgICAg
ICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpPdXRPZk1lbW9yeSwgc3RkOjpudWxsb3B0
IH07CiAgICAgICAgIGlmIChtX2RlbGVnYXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Ro
ZW1lTWFjLm1tCmluZGV4IGQ3OWU4NWFhMmJjOTc1ODcyYWZmYjFkNzA3MTk0ZGRlZGJkMzkwOWEu
LmUyZTkwYzY0ZGQwZGZhOWZiNTQxZjljNTU4ZmZhNDRjYjE4MWRjNGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KQEAgLTczNCw3ICs3MzQsNyBAQCBib29sIFRoZW1l
TWFjOjpkcmF3Q2VsbE9yRm9jdXNSaW5nV2l0aFZpZXdJbnRvQ29udGV4dChOU0NlbGwgKmNlbGws
IEdyYXBoaWNzQ29udAogCiAgICAgaWYgKHVzZUltYWdlQnVmZmVyKSB7CiAgICAgICAgIE5TUmVj
dCBpbWFnZUJ1ZmZlckRyYXdSZWN0ID0gTlNSZWN0KEZsb2F0UmVjdChidXR0b25Gb2N1c1JlY3RP
dXRsaW5lV2lkdGgsIGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVXaWR0aCwgcmVjdC53aWR0aCgpLCBy
ZWN0LmhlaWdodCgpKSk7Ci0gICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihyZWN0LnNpemUoKSArIDIgKiBGbG9hdFNpemUoYnV0dG9u
Rm9jdXNSZWN0T3V0bGluZVdpZHRoLCBidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgpLCBkZXZp
Y2VTY2FsZUZhY3RvciwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIGNvbnRleHQpOwor
ICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gY29udGV4dC5jcmVhdGVDb21wYXRpYmxlSW1hZ2VC
dWZmZXIocmVjdC5zaXplKCkgKyAyICogRmxvYXRTaXplKGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVX
aWR0aCwgYnV0dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRoKSwgZGV2aWNlU2NhbGVGYWN0b3IpOwog
ICAgICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuIG5lZWRzUmVwYWlu
dDsKICAgICAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveE1vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hN
b2RlbE9iamVjdC5jcHAKaW5kZXggNTI4ZjAyMjA0YTYxODZmOTg1MWEzMjRjNTBlOWI2MWNiMjUy
MDM3NC4uMTliYjBjNDJmYmM1ZmMyMTM1NzYwNzgyMjY1N2ZiYjYyYWY4NzI4MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCkBAIC04
OTQsNyArODk0LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJF
eHRlbmRlZChjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY28KICAgICAgICAgbWFza1JlY3Qu
aW50ZXJzZWN0KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMocGFpbnRJbmZvLnJlY3QsIGRldmljZVNj
YWxlRmFjdG9yKSk7CiAKICAgICAgICAgLy8gTm93IGNyZWF0ZSB0aGUgbWFzay4KLSAgICAgICAg
bWFza0ltYWdlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIobWFza1JlY3Qu
c2l6ZSgpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgY29udGV4dCk7CisgICAgICAg
IG1hc2tJbWFnZSA9IGNvbnRleHQuY3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyKG1hc2tSZWN0
LnNpemUoKSk7CiAgICAgICAgIGlmICghbWFza0ltYWdlKQogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICBwYWludE1hc2tGb3JUZXh0RmlsbEJveChtYXNrSW1hZ2UuZ2V0KCksIG1hc2tSZWN0
LCBib3gsIHNjcm9sbGVkUGFpbnRSZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggNjg3OWNhNWVlNzBmNTFiN2Y0MmI0YzVmNTRj
ZjFiNDBjMjllMmViZi4uN2MyMjMzNzQ4NDI4MTcxYjE4ODI2MjcwYWM0OWM4MTQ2ZTk1OGQ5ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAK
QEAgLTMzMTIsNyArMzMxMiw3IEBAIHN0YXRpYyBSZWZQdHI8UGF0dGVybj4gcGF0dGVybkZvckRl
c2NyaXB0aW9uKFBhdHRlcm5EZXNjcmlwdGlvbiBkZXNjcmlwdGlvbiwgRmxvCiB7CiAgICAgY29u
c3QgRmxvYXRTaXplIHRpbGVTaXplIHsgMzIsIDE4IH07CiAKLSAgICBhdXRvIGltYWdlQnVmZmVy
ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIodGlsZVNpemUsIERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBkZXN0Q29udGV4dCk7CisgICAgYXV0byBpbWFnZUJ1ZmZl
ciA9IGRlc3RDb250ZXh0LmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcih0aWxlU2l6ZSk7CiAg
ICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNvY29hLm1tIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ29jb2EubW0KaW5kZXggMWE2NjczMjI3MjJh
ZDM4ZmMxNTE0YmJiMTE5ZWRjZTNhOGVmNzNmMy4uYWJkNGMxZGIxMzE0ZDQ0MjFiNzMyMmFhODU3
NTFhZWIyZjU5M2FkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
Q29jb2EubW0KQEAgLTE1NCw3ICsxNTQsNyBAQCBib29sIFJlbmRlclRoZW1lQ29jb2E6OnBhaW50
QXBwbGVQYXlCdXR0b24oY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgY29uc3QgUAogewog
ICAgIGF1dG8mIGRlc3RpbmF0aW9uQ29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCk7CiAKLSAg
ICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIo
cGFpbnRSZWN0LnNpemUoKSwgZGVzdGluYXRpb25Db250ZXh0KTsKKyAgICBhdXRvIGltYWdlQnVm
ZmVyID0gZGVzdGluYXRpb25Db250ZXh0LmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihwYWlu
dFJlY3Quc2l6ZSgpKTsKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQppbmRleCA2
Yzk0ZTkyZTBmZmY4NDAxM2YxYTZlYzY4MjljN2U5MDBhMjAwNzhmLi5jMmIyODYxMjEwOGFiYzg2
Y2Q5NjdkNDQ0NzFjNWY5ZmI4ZjU3YTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lTWFjLm1tCkBAIC05OTYsNyArOTk2LDcgQEAgdm9pZCBSZW5kZXJUaGVtZU1hYzo6
cGFpbnRMaXN0QnV0dG9uRm9ySW5wdXQoY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBHcmFwaGljc0Nv
bnQKIAogICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gby5kb2N1bWVudCgpLmRldmljZVNj
YWxlRmFjdG9yKCk7CiAKLSAgICBhdXRvIGNvbWJvQm94SW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb21ib0JveFNpemUsIGRldmljZVNjYWxlRmFjdG9y
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgY29udGV4dCk7CisgICAgYXV0byBjb21i
b0JveEltYWdlQnVmZmVyID0gY29udGV4dC5jcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIoY29t
Ym9Cb3hTaXplLCBkZXZpY2VTY2FsZUZhY3Rvcik7CiAgICAgaWYgKCFjb21ib0JveEltYWdlQnVm
ZmVyKQogICAgICAgICByZXR1cm47CiAKQEAgLTEwMjAsNyArMTAyMCw3IEBAIHZvaWQgUmVuZGVy
VGhlbWVNYWM6OnBhaW50TGlzdEJ1dHRvbkZvcklucHV0KGNvbnN0IFJlbmRlck9iamVjdCYgbywg
R3JhcGhpY3NDb250CiAgICAgICAgIChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVUlVc2VySW50ZXJm
YWNlTGF5b3V0RGlyZWN0aW9uS2V5IDogKF9fYnJpZGdlIE5TU3RyaW5nICopa0NVSVVzZXJJbnRl
cmZhY2VMYXlvdXREaXJlY3Rpb25MZWZ0VG9SaWdodCwKICAgICB9XTsKIAotICAgIGF1dG8gY29t
Ym9Cb3hCdXR0b25JbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVm
ZmVyKGRlc2lyZWRDb21ib0JveEJ1dHRvblNpemUsIGRldmljZVNjYWxlRmFjdG9yLCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgY29udGV4dCk7CisgICAgYXV0byBjb21ib0JveEJ1dHRv
bkltYWdlQnVmZmVyID0gY29udGV4dC5jcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIoZGVzaXJl
ZENvbWJvQm94QnV0dG9uU2l6ZSwgZGV2aWNlU2NhbGVGYWN0b3IpOwogICAgIGlmICghY29tYm9C
b3hCdXR0b25JbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCkBAIC0xMzc5LDcgKzEzNzks
NyBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludFByb2dyZXNzQmFyKGNvbnN0IFJlbmRlck9i
amVjdCYgcmVuZGVyT2JqZWN0LCBjb25zdCBQYQogICAgIGNvbnN0IGF1dG8mIHJlbmRlclByb2dy
ZXNzID0gZG93bmNhc3Q8UmVuZGVyUHJvZ3Jlc3M+KHJlbmRlck9iamVjdCk7CiAgICAgZmxvYXQg
ZGV2aWNlU2NhbGVGYWN0b3IgPSByZW5kZXJPYmplY3QuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZh
Y3RvcigpOwogICAgIGJvb2wgaXNJbmRldGVybWluYXRlID0gcmVuZGVyUHJvZ3Jlc3MucG9zaXRp
b24oKSA8IDA7Ci0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21w
YXRpYmxlQnVmZmVyKGluZmxhdGVkUmVjdC5zaXplKCksIGRldmljZVNjYWxlRmFjdG9yLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgcGFpbnRJbmZvLmNvbnRleHQoKSk7CisgICAgYXV0
byBpbWFnZUJ1ZmZlciA9IHBhaW50SW5mby5jb250ZXh0KCkuY3JlYXRlQ29tcGF0aWJsZUltYWdl
QnVmZmVyKGluZmxhdGVkUmVjdC5zaXplKCksIGRldmljZVNjYWxlRmFjdG9yKTsKICAgICBpZiAo
IWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggZjA4ZTg3
MmQyODY2YWU1MzQyNDg2ZTNjOWY5OThlZGM5NDQ5ODRiOS4uNDQ4ZjkxNjUyYTkyOWRhODQ0NDQy
MjBkZDljNzcxZjBiYTQ1OTdlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0zMzMsNyArMzMzLDcgQEAgYm9vbCBT
VkdSZW5kZXJpbmdDb250ZXh0OjpidWZmZXJGb3JlZ3JvdW5kKFJlZlB0cjxJbWFnZUJ1ZmZlcj4m
IGltYWdlQnVmZmVyKQogCiAgICAgLy8gQ3JlYXRlIGEgbmV3IGJ1ZmZlciBhbmQgcGFpbnQgdGhl
IGZvcmVncm91bmQgaW50byBpdC4KICAgICBpZiAoIWltYWdlQnVmZmVyKSB7Ci0gICAgICAgIGlt
YWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoZXhwYW5kZWRJ
bnRTaXplKGJvdW5kaW5nQm94LnNpemUoKSksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
LCBtX3BhaW50SW5mby0+Y29udGV4dCgpKTsKKyAgICAgICAgaW1hZ2VCdWZmZXIgPSBtX3BhaW50
SW5mby0+Y29udGV4dCgpLmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihleHBhbmRlZEludFNp
emUoYm91bmRpbmdCb3guc2l6ZSgpKSk7CiAgICAgICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9T
VkdJbWFnZS5jcHAKaW5kZXggZjQxNDAxMjMzODkxOTAzODdhZDI3Njk2YTUwNTQ0NTRkZjg5MDI4
YS4uOThkZTM4MTAwZDExMDZiYzQxODhkM2VhYmQ1ZmM3NmM5M2ZiZmE2NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCkBAIC0yNTAsNyArMjUwLDcgQEAgdm9pZCBT
VkdJbWFnZTo6ZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBGbG9hdFNpemUKICAgICBGbG9hdFJlY3QgaW1hZ2VCdWZmZXJTaXplID0gem9vbWVk
Q29udGFpbmVyUmVjdDsKICAgICBpbWFnZUJ1ZmZlclNpemUuc2NhbGUoaW1hZ2VCdWZmZXJTY2Fs
ZS53aWR0aCgpLCBpbWFnZUJ1ZmZlclNjYWxlLmhlaWdodCgpKTsKIAotICAgIGF1dG8gYnVmZmVy
ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoZXhwYW5kZWRJbnRTaXplKGlt
YWdlQnVmZmVyU2l6ZS5zaXplKCkpLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwg
Y29udGV4dCk7CisgICAgYXV0byBidWZmZXIgPSBjb250ZXh0LmNyZWF0ZUNvbXBhdGlibGVJbWFn
ZUJ1ZmZlcihleHBhbmRlZEludFNpemUoaW1hZ2VCdWZmZXJTaXplLnNpemUoKSksIDEpOwogICAg
IGlmICghYnVmZmVyKSAvLyBGYWlsZWQgdG8gYWxsb2NhdGUgYnVmZmVyLgogICAgICAgICByZXR1
cm47CiAgICAgZHJhd0ZvckNvbnRhaW5lcihidWZmZXItPmNvbnRleHQoKSwgY29udGFpbmVyU2l6
ZSwgY29udGFpbmVyWm9vbSwgaW5pdGlhbEZyYWdtZW50VVJMLCBpbWFnZUJ1ZmZlclNpemUsIHpv
b21lZENvbnRhaW5lclJlY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCmluZGV4IGQ5
YWY1ODQwZGY2ODQzZDllNjE5ZGI2NjJlYzkwZWE0ODE4NTc5NmEuLjE5Mzc0MTlmZWJlNjgzYzk3
MmIxNzA0Mjc5YjNmZmExOGE5NWMxYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHAK
QEAgLTIwOCw3ICsyMDgsNyBAQCB2b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OmNsaXBQ
YXRoKGNvbnN0IFBhdGgmIHBhdGgsIFdpbmRSdWxlIHJ1bGUpCiAKIHZvaWQgUmVtb3RlRGlzcGxh
eUxpc3RSZWNvcmRlcjo6YmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0
JiBkZXN0aW5hdGlvbiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlKQog
ewotICAgIG1fbWFza0ltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVC
dWZmZXIoZGVzdGluYXRpb24uc2l6ZSgpLCBjb2xvclNwYWNlLCBkcmF3aW5nQ29udGV4dCgpKTsK
KyAgICBtX21hc2tJbWFnZUJ1ZmZlciA9IGRyYXdpbmdDb250ZXh0KCkuY3JlYXRlQ29tcGF0aWJs
ZUltYWdlQnVmZmVyKGRlc3RpbmF0aW9uLnNpemUoKSwgY29sb3JTcGFjZSk7CiB9CiAKIHZvaWQg
UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6ZW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0
IEZsb2F0UmVjdCYgZGVzdGluYXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVj
b3JkZXJQcm94eS5jcHAKaW5kZXggMjQzM2ZkY2M5NzRhYjY2Nzk3MWEyNWFmNjQ3ODkzNTYwYTMz
MWM5Ni4uZGI4MGY4ZGVjNDUzZDU5NGRlZTdlZDUwNDM1ZDQ1ZDNhNzRlZGNhNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlz
dFJlY29yZGVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmNwcApAQCAtNDY5LDYgKzQ2OSwx
NiBAQCBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiBSZW1vdGVEaXNwbGF5TGlzdFJl
Y29yZGVyUHJveHk6OmNyZWF0ZU5lc3RlZENvbgogICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90
ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eT4oKnRoaXMsIGluaXRpYWxDbGlwLCBpbml0aWFsQ1RN
KTsKIH0KIAorUmVmUHRyPEltYWdlQnVmZmVyPiBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJv
eHk6OmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGZs
b2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNw
YWNlKSBjb25zdAoreworICAgIGlmIChVTkxJS0VMWSghbV9yZW5kZXJpbmdCYWNrZW5kKSkgewor
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgfQorCisgICAgcmV0dXJuIG1fcmVuZGVyaW5nQmFja2VuZC0+Y3JlYXRlSW1hZ2VCdWZmZXIo
c2l6ZSwgcmVuZGVyaW5nTW9kZSgpLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIFBpeGVs
Rm9ybWF0OjpCR1JBOCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8v
IEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQ
cm94eS5oCmluZGV4IGE0MThlZjJmYjAzZWIzZTIyMWNjZDdmNWE2NDE1NDgyZDcxYzM0NmEuLmQw
OGZjZjZkNjc3N2I0YjgzZGI4ZWI1ZTBjNjFjY2I2ZjIwZjc3YmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRl
clByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuaApAQCAtMTQ1LDYgKzE0NSw4IEBAIHByaXZhdGU6
CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiBjcmVhdGVO
ZXN0ZWRDb250ZXh0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0
IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYgaW5pdGlhbENUTSkgZmluYWw7CiAKKyAgICBSZWZQ
dHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihjb25z
dCBXZWJDb3JlOjpGbG9hdFNpemUmLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IFdlYkNv
cmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSYgPSBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IoKSkgY29uc3QgZmluYWw7CisKICAgICBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIgbV9kZXN0aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXI7CiAgICAgV2Vha1B0cjxX
ZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gbV9pbWFnZUJ1ZmZlcjsKICAgICBXZWFrUHRyPFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eT4gbV9yZW5kZXJpbmdCYWNrZW5kOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450288</attachid>
            <date>2022-01-28 16:45:56 -0800</date>
            <delta_ts>2022-02-03 19:28:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235758-20220128164555.patch</filename>
            <type>text/plain</type>
            <size>48860</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NTQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2U1MDRmM2FkYmQ2ZDY5
OTllMzAxNWFlMWIxZTRkNzFlYmQ1MmNhOC4uZTBjNmJjYjEzZmY4N2JjMjAxODQxZDJjZWIzMmRi
Zjc0ZDIwODM4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMyBAQAorMjAyMi0wMS0yOCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IE1vdmUgSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcigpIHRvIEdyYXBo
aWNzQ29udGV4dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjM1NzU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhlIGdvYWwgb2YgdGhpcyBwYXRjaCBpcyB0byByZWNvcmQgdGhlIGRyYXdpbmcgaWYgdGhl
IGNvbmNyZXRlIHR5cGUgb2YgCisgICAgICAgIHRoZSBHcmFwaGljc0NvbnRleHQgaXMgUmVtb3Rl
RGlzcGxheUxpc3RSZWNvcmRlclByb3h5LiBDdXJyZW50bHkgYWxsIHRoZQorICAgICAgICBpbnRl
cm1lZGlhdGUgY29tcGF0aWJsZSBJbWFnZUJ1ZmZlcnMgYXJlIG9mIHR5cGUgQ29uY3JldGVJbWFn
ZUJ1ZmZlci4KKyAgICAgICAgVGhlIGRyYXdpbmcgdG8gdGhlc2UgSW1hZ2VCdWZmZXJzIHN0aWxs
IGhhcHBlbnMgaW4gdGhlIFdlYlByb2Nlc3MuIE1vcmVvdmVyCisgICAgICAgIHdoZW4gd2UgY2Fs
bCBkcmF3SW1hZ2VCdWZmZXIoKSBmb3Igb25lIG9mIHRoZXNlIGludGVybWVkaWF0ZSBJbWFnZUJ1
ZmZlcnMKKyAgICAgICAgdG8gYSByZW1vdGUgSW1hZ2VCdWZmZXIsIHdlIHNpbmsgdGhlIGludGVy
bWVkaWF0ZSBJbWFnZUJ1ZmZlciB0byBhIE5hdGl2ZUltYWdlCisgICAgICAgIGFuZCBzZW5kIGl0
IHRvIEdQVVByb2Nlc3MuCisKKyAgICAgICAgVG8gZml4IHRoaXMsIEdyYXBoaWNzQ29udGV4dCB3
aWxsIHByb3ZpZGUgdGhyZWUgZnVuY3Rpb25zIGZvciBjcmVhdGluZworICAgICAgICB0aGUgSW1h
Z2VCdWZmZXI6CisKKyAgICAgICAgMS4gR3JhcGhpY3NDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZl
cigpOiBJdCBpcyBhIHZpcnR1YWwgZnVuY3Rpb24uIEl0IHdpbGwgCisgICAgICAgICAgIGNyZWF0
ZSBhbiBJbWFnZUJ1ZmZlciBzaW1pbGFyIHRvIHRoZSB1bmRlcmx5aW5nIEltYWdlQnVmZmVyIG9m
IHRoZQorICAgICAgICAgICBHcmFwaGljc0NvbnRleHQuIEJlY2F1c2UgUmVjb3JkZXJJbXBsIGFu
ZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkKKyAgICAgICAgICAgYXJlIHN1cGVyIGNs
YXNzZXMgb2YgR3JhcGhpY3NDb250ZXh0LCB0aGV5IHdpbGwgb3ZlcnJpZGUgdGhpcyBtZXRob2QK
KyAgICAgICAgICAgYW5kIHJldHVybiB0aGUgZGVzaXJlZCB0eXBlIG9mIEltYWdlQnVmZmVyLgor
CisgICAgICAgIDIuIEdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVy
KCkgd2lsbCB0YWtlIHRoZSBzY2FsZUZhY3RvcigpCisgICAgICAgICAgIGludG8gY29uc2lkZXJh
dGlvbiB3aGVuIGNyZWF0aW5nIHRoZSBJbWFnZUJ1ZmZlci4gVGhlIHR5cGUgb2YgdGhlCisgICAg
ICAgICAgIHJldHVybmVkIEltYWdlQnVmZmVyIHdpbGwgYmUgZWl0aGVyIENvbmNyZXRlSW1hZ2VC
dWZmZXIgb3IgaXQgd2lsbCBiZQorICAgICAgICAgICBzaW1pbGFyIHRvIHRoZSB1bmRlcmx5aW5n
IEltYWdlQnVmZmVyIG9mIHRoZSBHcmFwaGljc0NvbnRleHQuIFRoaXMgd2lsbAorICAgICAgICAg
ICBiZSBjb250cm9sbGVkIGJ5IGEgbmV3IGVudW0gY2FsbGVkIEltYWdlQnVmZmVyVHlwZS4gVHdv
IHZlcnNpb25zIG9mCisgICAgICAgICAgIHRoaXMgZnVuY3Rpb24gd2lsbCBiZSBwcm92aWRlZDog
b25lIHRha2VzIGEgRmxvYXRTaXplIGFuZCB0aGUgb3RoZXIgCisgICAgICAgICAgIHRha2VzIGEg
RmxvYXRSZWNjdC4gVGhlIEZsb2F0UmVjdCB2ZXJzaW9uIGV4cGFuZHMgdGhlIGZvdXIgY29ybmVy
cyAKKyAgICAgICAgICAgb2YgdGhlIHJlY3RhbmdsZSB0byBmdWxsIHBpeGVscy4KKworICAgICAg
ICAzLiBHcmFwaGljc0NvbnRleHQ6OmNvcHlSZWN0VG9Db21wYXRpYmxlSW1hZ2VCdWZmZXIoKSwg
d2lsbCBjcmVhdGUgYW4KKyAgICAgICAgICAgSW1hZ2VCdWZmZXIgY29tcGF0aWJsZSB3aXRoIEdy
YXBoaWNzQ29udGV4dCBhbmQgaXRzIHVuZGVybHlpbmcKKyAgICAgICAgICAgSW1hZ2VCdWZmZXIu
IEl0IHdpbGwgdGhlbiBjb3B5IGEgcmVjdGFuZ2xlIGZyb20gYSAnc291cmNlSW1hZ2UnIHRvCisg
ICAgICAgICAgIHRoZSBuZXdseSBjcmVhdGVkIEltYWdlQnVmZmVyLgorCisgICAgICAgIFNvIGZh
ciB0d28gcGxhY2VzIGluIHRoZSBjb2RlIHdoaWNoIHdhbnQgdG8gY3JlYXRlIENvbmNyZXRlSW1h
Z2VCdWZmZXIKKyAgICAgICAgdGhyb3VnaCBHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZUNvbXBhdGli
bGVJbWFnZUJ1ZmZlcigpOiB0aGUgdGV4dCBydW5zIAorICAgICAgICB3aXRoIFNWRyBmb250cyBh
bmQgdGhlIFBERiBpbWFnZXMuIFRoZSBkZWNvZGluZyBvZiB0aGUgU1ZHIGZvbnRzIGFuZCB0aGUK
KyAgICAgICAgUERGIGltYWdlcyBoYXMgdG8gaGFwcGVuIGluIHRoZSBXZWJQcm9jZXNzLiBTbyBp
biB0aGVzZSBjYXNlcyBhbmQgaW4gdGhlCisgICAgICAgIGNhc2Ugb2YgR1BVIFByb2Nlc3MgYW5k
IGFuZCBhZnRlciByZW5kZXJpbmcgdG8gdGhlc2UgSW1hZ2VCdWZmZXJzLAorICAgICAgICBSZWNv
cmRlcjo6ZHJhd0ltYWdlQnVmZmVyKCkgd2lsbCBjb252ZXJ0IHRoZSBJbWFnZUJ1ZmZlciB0byBh
IE5hdGl2ZUltYWdlCisgICAgICAgIGFuZCBzZW5kIGl0IHRvIEdQVSBQcm9jZXNzLgorCisgICAg
ICAgIFRoZSBwbGFuIGlzIHRvIHJlcGxhY2UgYWxsIGludGVybWVkaWF0ZSBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKCkgd2l0aAorICAgICAgICBHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZUNvbXBhdGlibGVJ
bWFnZUJ1ZmZlcigpLiBUaGUgZXhjZXB0aW9uIHdpbGwgYmUgdGhlCisgICAgICAgIHRvcCBsZXZl
bCBvbmVzOiB0aGUgY2FudmFzIGFuZCB0aGUgcmVuZGVyIGxheWVycy4gVGhlIFJlbmRlcmluZ1B1
cnBvc2UKKyAgICAgICAgd2lsbCBiZSB1c2VkIG9ubHkgaW4gdGhlc2UgdHdvIHBsYWNlcy4KKwor
ICAgICAgICAqIGh0bWwvQ3VzdG9tUGFpbnRDYW52YXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q3VzdG9tUGFpbnRDYW52YXM6OnJlcGxheURpc3BsYXlMaXN0IGNvbnN0KToKKyAgICAgICAgKiBo
dG1sL0N1c3RvbVBhaW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tUGFpbnRJ
bWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIGh0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok9mZnNjcmVlbkNhbnZhczo6dHJhbnNmZXJUb0ltYWdlQml0bWFw
KToKKyAgICAgICAgKFdlYkNvcmU6Ok9mZnNjcmVlbkNhbnZhczo6Y29tbWl0VG9QbGFjZWhvbGRl
ckNhbnZhcyk6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNl
OjpkcmF3SW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1RoZW1lQ29jb2EubW06Cisg
ICAgICAgIChXZWJDb3JlOjpkcmF3QXBwbGVQYXlCdXR0b24pOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdl
OjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFkaWVudEltYWdlOjpkcmF3UGF0dGVybik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y29tcGF0aWJsZUltYWdlQnVmZmVyU2l6ZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNvbXBhdGlibGVJbWFnZUJ1
ZmZlclJlY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjcmVh
dGVJbWFnZUJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVTY2FsZWRJbWFn
ZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZUNvbXBh
dGlibGVJbWFnZUJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OmNvcHlSZWN0VG9Db21wYXRpYmxlSW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVy
OjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlQnVmZmVyOjpjb21wYXRpYmxlQnVmZmVyU2l6ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUJ1ZmZlcjo6Y29tcGF0aWJsZUJ1ZmZlckluZm8pOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNvcHlSZWN0VG9CdWZmZXIpOiBEZWxldGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL1JlbmRlcmluZ01vZGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3Vt
ZW50SW1hZ2U6OnVwZGF0ZUNhY2hlZEltYWdlSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6
UERGRG9jdW1lbnRJbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29y
ZXRleHQvRHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RHJhd0dseXBoc1JlY29yZGVyOjpkcmF3T1RTVkdSdW4pOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpjcmVhdGVJbWFnZUJ1ZmZlciBj
b25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVjb3JkZXJJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OlJlcGxheWVyOjphcHBseUl0ZW0pOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9UaGVtZU1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlRoZW1lTWFjOjpkcmF3Q2VsbE9yRm9jdXNSaW5nV2l0
aFZpZXdJbnRvQ29udGV4dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZp
bGxMYXllckV4dGVuZGVkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5n
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhdHRlcm5Gb3JEZXNjcmlwdGlvbik6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclRoZW1lQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZUNvY29hOjpwYWludEFwcGxlUGF5QnV0dG9uKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyVGhlbWVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFp
bnRMaXN0QnV0dG9uRm9ySW5wdXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6
OnBhaW50UHJvZ3Jlc3NCYXIpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5n
Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0OjpidWZm
ZXJGb3JlZ3JvdW5kKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKToKKwogMjAy
Mi0wMS0yNSAgWmlyYW4gU3VuICA8enN1bkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtjc3MtZ3Jp
ZF0gRml4IGdyaWQgc2hvcnRoYW5kIGV4cGFuc2lvbiBvZiBpbml0aWFsIHZhbHVlcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCA4YzMwOGJjMjNjZWVjYmNhMGExMzhlZDBlNTE3NjNiNWMxN2U2OWJkLi41NDk2ODRjMjRm
MjEyNjJlMWQxOWZmMTVlOWExZDZjODMyMjRjZDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBA
CisyMDIyLTAxLTI4ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAg
ICAgIFtHUFUgUHJvY2Vzc10gTW92ZSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUltYWdl
QnVmZmVyKCkgdG8gR3JhcGhpY3NDb250ZXh0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU3NTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxp
c3RSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZURpc3BsYXlMaXN0UmVjb3Jk
ZXI6OmJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHk6OmNyZWF0ZUltYWdlQnVmZmVy
IGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5
TGlzdFJlY29yZGVyUHJveHkuaDoKKwogMjAyMi0wMS0yNCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxt
bWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjI4MjMyMCk6IFtDb2Nv
YV0gVXNlci1pbnN0YWxsZWQgZm9udHMgZG9uJ3Qgd29yayBpbiB0aGUgR1BVIFByb2Nlc3MgKGlu
IFdLV2ViVmlldykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRD
YW52YXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWludENhbnZhcy5jcHAKaW5k
ZXggMmMxYTNhYTZjNjU3OTNlYzZmNWQ4NGJkYTRlZjczZWM2OTY5OGVhMy4uNDA0MjkxMWQwN2Jj
Nzc4MzkwMzAxMzFkNzhkNzNhNTU3YjYzZDBlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9DdXN0b21QYWludENhbnZhcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0
b21QYWludENhbnZhcy5jcHAKQEAgLTczLDcgKzczLDcgQEAgdm9pZCBDdXN0b21QYWludENhbnZh
czo6cmVwbGF5RGlzcGxheUxpc3QoR3JhcGhpY3NDb250ZXh0KiBjdHgpIGNvbnN0CiAgICAgLy8g
RklYTUU6IFVzaW5nIGFuIGludGVybWVkaWF0ZSBidWZmZXIgaXMgbm90IG5lZWRlZCBpZiB0aGVy
ZSBhcmUgbm8gY29tcG9zaXRlIG9wZXJhdGlvbnMuCiAgICAgYXV0byBjbGlwQm91bmRzID0gY3R4
LT5jbGlwQm91bmRzKCk7CiAKLSAgICBhdXRvIGltYWdlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNv
bXBhdGlibGVCdWZmZXIoY2xpcEJvdW5kcy5zaXplKCksICpjdHgpOworICAgIGF1dG8gaW1hZ2Ug
PSBjdHgtPmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihjbGlwQm91bmRzLnNpemUoKSk7CiAg
ICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0N1c3RvbVBhaW50SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0
b21QYWludEltYWdlLmNwcAppbmRleCBmNDcxOTk0NmM1OGUwNTliZTMzZGI3MWQzZjdiNmY2MDky
MGE1Y2FjLi5mYjhhZTZiZmQ3MWYzZWY2MWEzNDBlMjcwMDE0MDM4ZTI3NjY5NzBmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0N1c3RvbVBhaW50SW1hZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRJbWFnZS5jcHAKQEAgLTE5OSw3ICsxOTksNyBAQCB2
b2lkIEN1c3RvbVBhaW50SW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgZGVzdENv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdAogICAgIGFkanVzdGVkUGF0dGVybkNUTS5zY2FsZSgxLjAg
LyB4U2NhbGUsIDEuMCAvIHlTY2FsZSk7CiAgICAgYWRqdXN0ZWRTcmNSZWN0LnNjYWxlKHhTY2Fs
ZSwgeVNjYWxlKTsKIAotICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBh
dGlibGVCdWZmZXIoYWRqdXN0ZWRTaXplLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwg
ZGVzdENvbnRleHQpOworICAgIGF1dG8gYnVmZmVyID0gZGVzdENvbnRleHQuY3JlYXRlQ29tcGF0
aWJsZUltYWdlQnVmZmVyKGFkanVzdGVkU2l6ZSk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAg
IHJldHVybjsKICAgICBkb0N1c3RvbVBhaW50KGJ1ZmZlci0+Y29udGV4dCgpLCBhZGp1c3RlZFNp
emUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwCmluZGV4IDRjOWM4Y2Zm
MThiOWM3ZWExMmQxNDEzMTJjNjYwNjY2ZGNmMGM4NzkuLmE3ODA1OWVlY2Y2MjQ1YjA0ODNiMmRi
MzA0MjM3NjY1MWViMDc0MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2Ny
ZWVuQ2FudmFzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5j
cHAKQEAgLTI4Myw3ICsyODMsNyBAQCBFeGNlcHRpb25PcjxSZWZQdHI8SW1hZ2VCaXRtYXA+PiBP
ZmZzY3JlZW5DYW52YXM6OnRyYW5zZmVyVG9JbWFnZUJpdG1hcCgpCiAgICAgICAgIC8vIEFzIHRo
ZSBjYW52YXMgY29udGV4dCBzdGF0ZSBpcyBzdG9yZWQgaW4gR3JhcGhpY3NDb250ZXh0LCB3aGlj
aCBpcyBvd25lZAogICAgICAgICAvLyBieSBidWZmZXIoKSwgdG8gYXZvaWQgcmVzZXR0aW5nIHRo
ZSBjb250ZXh0IHN0YXRlLCB3ZSBoYXZlIHRvIG1ha2UgYSBjb3B5IGFuZAogICAgICAgICAvLyBj
bGVhciB0aGUgb3JpZ2luYWwgYnVmZmVyIHJhdGhlciB0aGFuIHJldHVybmluZyB0aGUgb3JpZ2lu
YWwgYnVmZmVyLgotICAgICAgICBhdXRvIGJ1ZmZlckNvcHkgPSBidWZmZXIoKS0+Y29weVJlY3RU
b0J1ZmZlcihGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBidWZmZXIoKS0+bG9naWNhbFNpemUoKSks
IGJ1ZmZlcigpLT5jb2xvclNwYWNlKCksICpkcmF3aW5nQ29udGV4dCgpKTsKKyAgICAgICAgYXV0
byBidWZmZXJDb3B5ID0gZHJhd2luZ0NvbnRleHQoKS0+Y29weVJlY3RUb0NvbXBhdGlibGVJbWFn
ZUJ1ZmZlcigqYnVmZmVyKCksIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGJ1ZmZlcigpLT5sb2dp
Y2FsU2l6ZSgpKSwgYnVmZmVyKCktPmNvbG9yU3BhY2UoKSk7CiAgICAgICAgIGRvd25jYXN0PE9m
ZnNjcmVlbkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRD4oKm1fY29udGV4dCkuY2xlYXJDYW52YXMo
KTsKICAgICAgICAgY2xlYXJDb3BpZWRJbWFnZSgpOwogCkBAIC00NTEsMTQgKzQ1MSwxNCBAQCB2
b2lkIE9mZnNjcmVlbkNhbnZhczo6Y29tbWl0VG9QbGFjZWhvbGRlckNhbnZhcygpCiAgICAgICAg
IG1fY29udGV4dC0+cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoKTsKIAogICAgIGlmICht
X3BsYWNlaG9sZGVyRGF0YS0+YnVmZmVyUGlwZVNvdXJjZSkgewotICAgICAgICBhdXRvIGJ1ZmZl
ckNvcHkgPSBpbWFnZUJ1ZmZlci0+Y29weVJlY3RUb0J1ZmZlcihGbG9hdFJlY3QoRmxvYXRQb2lu
dCgpLCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQigpLCBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpKTsKKyAgICAgICAgYXV0byBidWZmZXJDb3B5
ID0gaW1hZ2VCdWZmZXItPmNvbnRleHQoKS5jb3B5UmVjdFRvQ29tcGF0aWJsZUltYWdlQnVmZmVy
KCppbWFnZUJ1ZmZlciwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2VCdWZmZXItPmxvZ2lj
YWxTaXplKCkpKTsKICAgICAgICAgaWYgKGJ1ZmZlckNvcHkpCiAgICAgICAgICAgICBtX3BsYWNl
aG9sZGVyRGF0YS0+YnVmZmVyUGlwZVNvdXJjZS0+aGFuZGxlKFdURk1vdmUoYnVmZmVyQ29weSkp
OwogICAgIH0KIAogICAgIExvY2tlciBsb2NrZXIgeyBtX3BsYWNlaG9sZGVyRGF0YS0+YnVmZmVy
TG9jayB9OwogICAgIGJvb2wgc2hvdWxkUHVzaEJ1ZmZlciA9ICFtX3BsYWNlaG9sZGVyRGF0YS0+
cGVuZGluZ0NvbW1pdEJ1ZmZlcjsKLSAgICBtX3BsYWNlaG9sZGVyRGF0YS0+cGVuZGluZ0NvbW1p
dEJ1ZmZlciA9IGltYWdlQnVmZmVyLT5jb3B5UmVjdFRvQnVmZmVyKEZsb2F0UmVjdChGbG9hdFBv
aW50KCksIGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKCksIGltYWdlQnVmZmVyLT5jb250ZXh0KCkpOworICAgIG1fcGxhY2Vob2xkZXJEYXRh
LT5wZW5kaW5nQ29tbWl0QnVmZmVyID0gaW1hZ2VCdWZmZXItPmNvbnRleHQoKS5jb3B5UmVjdFRv
Q29tcGF0aWJsZUltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgRmxvYXRSZWN0KEZsb2F0UG9pbnQo
KSwgaW1hZ2VCdWZmZXItPmxvZ2ljYWxTaXplKCkpKTsKICAgICBpZiAobV9wbGFjZWhvbGRlckRh
dGEtPnBlbmRpbmdDb21taXRCdWZmZXIgJiYgc2hvdWxkUHVzaEJ1ZmZlcikKICAgICAgICAgcHVz
aEJ1ZmZlclRvUGxhY2Vob2xkZXIoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKaW5kZXggNTc3
ZDU1ZTdmMDQyYTc4NDgyMjBlMzhhYzMyZDMwNjk4MzZhMzg5ZC4uZWVjYTUyNjg1ODUzYjgwN2I0
YTg1YjZiODk2ZDczMmQyYWE0ODliYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKQEAgLTE2MTEs
NyArMTYxMSw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJh
c2U6OmRyYXdJbWFnZShDYW52YXNCYXNlJiBzb3VyY2VDYW52CiAgICAgICAgIHJlcGFpbnRFbnRp
cmVDYW52YXMgPSB0cnVlOwogICAgIH0gZWxzZSBpZiAoc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUg
PT0gQ29tcG9zaXRlT3BlcmF0b3I6OkNvcHkpIHsKICAgICAgICAgaWYgKCZzb3VyY2VDYW52YXMg
PT0gJmNhbnZhc0Jhc2UoKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gY29weSA9IGJ1ZmZlci0+
Y29weVJlY3RUb0J1ZmZlcihzcmNSZWN0LCBjb2xvclNwYWNlKCksICpjKSkgeworICAgICAgICAg
ICAgaWYgKGF1dG8gY29weSA9IGMtPmNvcHlSZWN0VG9Db21wYXRpYmxlSW1hZ2VCdWZmZXIoKmJ1
ZmZlciwgc3JjUmVjdCwgY29sb3JTcGFjZSgpKSkgewogICAgICAgICAgICAgICAgIGNsZWFyQ2Fu
dmFzKCk7CiAgICAgICAgICAgICAgICAgYy0+ZHJhd0ltYWdlQnVmZmVyKCpjb3B5LCBkc3RSZWN0
LCB7IHsgfSwgc3JjUmVjdC5zaXplKCkgfSwgeyBzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSwgc3Rh
dGUoKS5nbG9iYWxCbGVuZCB9KTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1RoZW1lQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9UaGVtZUNvY29hLm1tCmluZGV4IGVjZDUwYjcwZmRiYmY2ZTk4M2YzYTcxNTY1
MjdiMjEwNjg4NGZiZmUuLmUyYjQ5MDRkOGY4NjI4ZDM4YjYxNzBlMGE1ODA3YzM1NTYxY2YxNTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1RoZW1lQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVGhlbWVDb2NvYS5tbQpAQCAtMTEw
LDcgKzExMCw3IEBAIHN0YXRpYyBDR1BERlBhZ2VSZWYgYXBwbGVQYXlCdXR0b25Mb2dvV2hpdGUo
KQogCiBzdGF0aWMgdm9pZCBkcmF3QXBwbGVQYXlCdXR0b24oR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBDR1BERlBhZ2VSZWYgcGFnZSwgY29uc3QgRmxvYXRTaXplJiBzaXplKQogewotICAgIGF1
dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihzaXpl
LCBjb250ZXh0KTsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gY29udGV4dC5jcmVhdGVDb21wYXRp
YmxlSW1hZ2VCdWZmZXIoc2l6ZSk7CiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0
dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRt
YXBJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFn
ZS5jcHAKaW5kZXggODAyNzQzNWFkMjk0NTY2Mjk4YTc5MWIzYWY2YWZhOWJmMjc4MWU2OC4uNTc0
NTQ0N2M4YzU0ZmY4OGE5MzY2ZjUwZmViMzY0ZDc3ODBjYjA4ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcApAQCAtMzQ3LDcgKzM0Nyw3
IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY3R4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwKICAgICB9CiAKICAgICBpZiAoIW1fY2FjaGVkSW1h
Z2UpIHsKLSAgICAgICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJs
ZUJ1ZmZlcihleHBhbmRlZEludFNpemUodGlsZVJlY3Quc2l6ZSgpKSwgRGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCKCksIGN0eHQpOworICAgICAgICBhdXRvIGJ1ZmZlciA9IGN0eHQuY3JlYXRl
Q29tcGF0aWJsZUltYWdlQnVmZmVyKGV4cGFuZGVkSW50U2l6ZSh0aWxlUmVjdC5zaXplKCkpKTsK
ICAgICAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHAKaW5kZXggZmVm
MzZlNTdhNjVhMTQ4NjkwZGIzMGEyYzJhNTY4NGQwMDBjOGFkYy4uYmRhNzAxMTA5OGZhNTE3YTY0
NDMyYWZlY2JkMDUzYzFmOTU5NWM1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBHcmFk
aWVudEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25z
dCBGbG9hdFJlY3QmIGQKICAgICB1bnNpZ25lZCBnZW5lcmF0b3JIYXNoID0gbV9ncmFkaWVudC0+
aGFzaCgpOwogCiAgICAgaWYgKCFtX2NhY2hlZEltYWdlIHx8IG1fY2FjaGVkR2VuZXJhdG9ySGFz
aCAhPSBnZW5lcmF0b3JIYXNoIHx8IG1fY2FjaGVkQWRqdXN0ZWRTaXplICE9IGFkanVzdGVkU2l6
ZSB8fCAhYXJlRXNzZW50aWFsbHlFcXVhbChkZXN0Q29udGV4dC5zY2FsZUZhY3RvcigpLCBtX2Nh
Y2hlZFNjYWxlRmFjdG9yKSkgewotICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoYWRqdXN0ZWRTaXplLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IoKSwgZGVzdENvbnRleHQpOworICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0g
ZGVzdENvbnRleHQuY3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyKGFkanVzdGVkU2l6ZSk7CiAg
ICAgICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCmlu
ZGV4IGE0OTJlOThkYTI4MGMyM2VjNzM2MzA3YWRlMmRkZWYzMmJmYTRjZWYuLjA2OTdjMzllOGJl
MWU3M2U1ODdiYjliNDFjYmY0ODMwNjYzNDkxMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAtNTUxLDYgKzU1MSw4
NCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0JpZGlUZXh0KGNvbnN0IEZvbnRDYXNjYWRl
JiBmb250LCBjb25zdCBUZXh0UnVuJiBydW4sCiAgICAgYmlkaVJ1bnMuY2xlYXIoKTsKIH0KIAor
SW50U2l6ZSBHcmFwaGljc0NvbnRleHQ6OmNvbXBhdGlibGVJbWFnZUJ1ZmZlclNpemUoY29uc3Qg
RmxvYXRTaXplJiBzaXplKSBjb25zdAoreworICAgIC8vIEVubGFyZ2UgdGhlIGJ1ZmZlciBzaXpl
IGlmIHRoZSBjb250ZXh0J3MgdHJhbnNmb3JtIGlzIHNjYWxpbmcgaXQgc28gd2UgbmVlZCBhIGhp
Z2hlcgorICAgIC8vIHJlc29sdXRpb24gdGhhbiBvbmUgcGl4ZWwgcGVyIHVuaXQuCisgICAgcmV0
dXJuIGV4cGFuZGVkSW50U2l6ZShzaXplICogc2NhbGVGYWN0b3IoKSk7Cit9CisKK0ludFJlY3Qg
R3JhcGhpY3NDb250ZXh0Ojpjb21wYXRpYmxlSW1hZ2VCdWZmZXJSZWN0KGNvbnN0IEZsb2F0UmVj
dCYgcmVjdCkgY29uc3QKK3sKKyAgICBhdXRvIHNjYWxlZFJlY3QgPSByZWN0OworICAgIHNjYWxl
ZFJlY3Quc2NhbGUoc2NhbGVGYWN0b3IoKSk7CisKKyAgICBGbG9hdFNpemUgc2NhbGUoMSwgMSk7
CisgICAgSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKHNjYWxlZFJlY3Quc2l6ZSgpLCBz
Y2FsZSk7CisgICAgc2NhbGVkUmVjdC5zY2FsZShzY2FsZSk7CisKKyAgICByZXR1cm4gZW5jbG9z
aW5nSW50UmVjdChzY2FsZWRSZWN0KTsKK30KKworUmVmUHRyPEltYWdlQnVmZmVyPiBHcmFwaGlj
c0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQg
cmVzb2x1dGlvblNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2Up
IGNvbnN0Cit7CisgICAgcmV0dXJuIEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgcmVuZGVyaW5n
TW9kZSgpLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCk7
Cit9CisKK3N0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZVNjYWxlZEltYWdlQnVmZmVy
KGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRTaXplJiBzY2FsZWRT
aXplLCBjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYg
Y29sb3JTcGFjZSwgSW1hZ2VCdWZmZXJUeXBlIHR5cGUpCit7CisgICAgQVNTRVJUKCFzY2FsZWRT
aXplLmlzRW1wdHkoKSAmJiAhc2l6ZS5pc0VtcHR5KCkpOworCisgICAgUmVmUHRyPEltYWdlQnVm
ZmVyPiBpbWFnZUJ1ZmZlcjsKKyAgICAKKyAgICBpZiAodHlwZSA9PSBJbWFnZUJ1ZmZlclR5cGU6
OkNvbXBhdGlibGUpCisgICAgICAgIGltYWdlQnVmZmVyID0gY29udGV4dC5jcmVhdGVJbWFnZUJ1
ZmZlcihzY2FsZWRTaXplLCAxLCBjb2xvclNwYWNlKTsKKyAgICBlbHNlCisgICAgICAgIGltYWdl
QnVmZmVyID0gY29udGV4dC5HcmFwaGljc0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKHNjYWxl
ZFNpemUsIDEsIGNvbG9yU3BhY2UpOworCisgICAgaWYgKCFpbWFnZUJ1ZmZlcikKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnNjYWxlKHNjYWxl
ZFNpemUgLyBzaXplKTsKKyAgICByZXR1cm4gaW1hZ2VCdWZmZXI7Cit9CisKK1JlZlB0cjxJbWFn
ZUJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0OjpjcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIoY29u
c3QgRmxvYXRTaXplJiBzaXplLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3Bh
Y2UsIEltYWdlQnVmZmVyVHlwZSB0eXBlKSBjb25zdAoreworICAgIGlmIChzaXplLmlzRW1wdHko
KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIHNjYWxlZFNpemUgPSBjb21w
YXRpYmxlSW1hZ2VCdWZmZXJTaXplKHNpemUpOworICAgIHJldHVybiBjcmVhdGVTY2FsZWRJbWFn
ZUJ1ZmZlcigqdGhpcywgc2NhbGVkU2l6ZSwgc2l6ZSwgY29sb3JTcGFjZSwgdHlwZSk7Cit9CisK
K1JlZlB0cjxJbWFnZUJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0OjpjcmVhdGVDb21wYXRpYmxlSW1h
Z2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UmIGNvbG9yU3BhY2UsIEltYWdlQnVmZmVyVHlwZSB0eXBlKSBjb25zdAoreworICAgIGlmIChy
ZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIHNjYWxl
ZFJlY3QgPSBjb21wYXRpYmxlSW1hZ2VCdWZmZXJSZWN0KHJlY3QpOworICAgIGF1dG8gaW1hZ2VC
dWZmZXIgPSBjcmVhdGVTY2FsZWRJbWFnZUJ1ZmZlcigqdGhpcywgc2NhbGVkUmVjdC5zaXplKCks
IHJlY3Quc2l6ZSgpLCBjb2xvclNwYWNlLCB0eXBlKTsKKyAgICBpZiAoIWltYWdlQnVmZmVyKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGltYWdlQnVmZmVyLT5jb250ZXh0KCkudHJh
bnNsYXRlKC1lbmNsb3NpbmdJbnRSZWN0KHJlY3QpLmxvY2F0aW9uKCkpOworICAgIHJldHVybiBp
bWFnZUJ1ZmZlcjsKK30KKworUmVmUHRyPEltYWdlQnVmZmVyPiBHcmFwaGljc0NvbnRleHQ6OmNv
cHlSZWN0VG9Db21wYXRpYmxlSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIHNvdXJjZUltYWdlLCBj
b25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JT
cGFjZSkgY29uc3QKK3sKKyAgICBpZiAocmVjdC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IGNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1
ZmZlcihyZWN0LnNpemUoKSwgY29sb3JTcGFjZSk7CisgICAgaWYgKCFpbWFnZUJ1ZmZlcikKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLmRyYXdJ
bWFnZUJ1ZmZlcihzb3VyY2VJbWFnZSwgLXJlY3QubG9jYXRpb24oKSk7CisgICAgcmV0dXJuIGlt
YWdlQnVmZmVyOworfQorCiBJbWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1h
Z2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25zKQogewogICAgIHJldHVybiBk
cmF3SW1hZ2UoaW1hZ2UsIEZsb2F0UmVjdChkZXN0aW5hdGlvbiwgaW1hZ2Uuc2l6ZSgpKSwgRmxv
YXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2Uuc2l6ZSgpKSwgaW1hZ2VQYWludGluZ09wdGlvbnMp
OwpAQCAtNjY4LDcgKzc0Niw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwT3V0Um91bmRl
ZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcmVjdCkKIAogR3JhcGhpY3NDb250ZXh0OjpD
bGlwVG9EcmF3aW5nQ29tbWFuZHNSZXN1bHQgR3JhcGhpY3NDb250ZXh0OjpjbGlwVG9EcmF3aW5n
Q29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRGVzdGluYXRpb25D
b2xvclNwYWNlJiBjb2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYm
IGRyYXdpbmdGdW5jdGlvbikKIHsKLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoZGVzdGluYXRpb24uc2l6ZSgpLCBjb2xvclNwYWNlLCAq
dGhpcyk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IGNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZl
cihkZXN0aW5hdGlvbi5zaXplKCksIGNvbG9yU3BhY2UpOwogICAgIGlmICghaW1hZ2VCdWZmZXIp
CiAgICAgICAgIHJldHVybiBDbGlwVG9EcmF3aW5nQ29tbWFuZHNSZXN1bHQ6OkZhaWxlZFRvQ3Jl
YXRlSW1hZ2VCdWZmZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggY2Y3MDkyZGUzM2JjNWI3MjhhZDQ2MWIwZmMwMjE3
N2Y2OWVlZmYzMi4uMTc1ZDBiMjExYWFlZTYxYTU2ZGViOWZmYjlkNzljODNmNjM4ODgwZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
LmgKQEAgLTQxNiw2ICs0MTYsMTQgQEAgcHVibGljOgogCiAgICAgLy8gSW1hZ2VzLCBQYXR0ZXJu
cywgYW5kIE1lZGlhCiAKKyAgICBJbnRTaXplIGNvbXBhdGlibGVJbWFnZUJ1ZmZlclNpemUoY29u
c3QgRmxvYXRTaXplJikgY29uc3Q7CisgICAgSW50UmVjdCBjb21wYXRpYmxlSW1hZ2VCdWZmZXJS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYpIGNvbnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVh
bCBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYs
IGZsb2F0IHJlc29sdXRpb25TY2FsZSA9IDEsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYg
PSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBP
UlQgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIoY29uc3Qg
RmxvYXRTaXplJiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiA9IERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQigpLCBJbWFnZUJ1ZmZlclR5cGUgPSBJbWFnZUJ1ZmZlclR5cGU6OkNvbXBh
dGlibGUpIGNvbnN0OworICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlQ29tcGF0aWJsZUlt
YWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYg
PSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgSW1hZ2VCdWZmZXJUeXBlID0gSW1hZ2VC
dWZmZXJUeXBlOjpDb21wYXRpYmxlKSBjb25zdDsKKyAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNv
cHlSZWN0VG9Db21wYXRpYmxlSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIHNvdXJjZUltYWdlLCBj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmID0gRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCKCkpIGNvbnN0OworCiAgICAgdmlydHVhbCB2b2lkIGRyYXdOYXRp
dmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmID0geyB9KSA9IDA7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBJbWFnZURy
YXdSZXN1bHQgZHJhd0ltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24s
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgSW1hZ2VPcmllbnRhdGlvbjo6RnJvbUlt
YWdlIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXIuY3BwCmluZGV4IDAxOTNiZmIwZjk2YzdkMzQwNTNlNzY4YTBjMjU4ZmMxMjU3ODBmZDMuLjc3
MTgyOGI2NDVjYjMxMTNiNTUzODdhN2EyZTI0YzAyODMxNDc2MzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAKQEAgLTEsNyArMSw3IEBA
CiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA5IERpcmsgU2NodWx6ZSA8a3JpdEB3ZWJraXQub3Jn
PgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDExLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC03Miw3NSArNzIsNiBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGUo
Y29uc3QgRmxvYXRTaXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbgogICAgIHJldHVybiBpbWFn
ZUJ1ZmZlcjsKIH0KIAotUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29t
cGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCkKLXsKLSAgICBpZiAoc2l6ZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBu
dWxscHRyOwotCi0gICAgSW50U2l6ZSBzY2FsZWRTaXplID0gSW1hZ2VCdWZmZXI6OmNvbXBhdGli
bGVCdWZmZXJTaXplKHNpemUsIGNvbnRleHQpOwotCi0gICAgUmVmUHRyPEltYWdlQnVmZmVyPiBp
bWFnZUJ1ZmZlcjsKLQotICAgIGlmIChjb250ZXh0LnJlbmRlcmluZ01vZGUoKSA9PSBSZW5kZXJp
bmdNb2RlOjpBY2NlbGVyYXRlZCkKLSAgICAgICAgaW1hZ2VCdWZmZXIgPSBBY2NlbGVyYXRlZElt
YWdlQnVmZmVyOjpjcmVhdGUoc2NhbGVkU2l6ZSwgY29udGV4dCk7Ci0gICAgCi0gICAgaWYgKCFp
bWFnZUJ1ZmZlcikKLSAgICAgICAgaW1hZ2VCdWZmZXIgPSBVbmFjY2VsZXJhdGVkSW1hZ2VCdWZm
ZXI6OmNyZWF0ZShzY2FsZWRTaXplLCBjb250ZXh0KTsKLQotICAgIGlmICghaW1hZ2VCdWZmZXIp
Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgaW1hZ2VCdWZmZXItPmNvbnRleHQoKS5z
Y2FsZShzY2FsZWRTaXplIC8gc2l6ZSk7Ci0gICAgcmV0dXJuIGltYWdlQnVmZmVyOwotfQotCi0v
LyBUaGlzIGlzIHVzZWZ1bCB3aGVuIHlvdSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgcGl4ZWwgZ3Jp
ZCBvZiB0aGUgSW1hZ2VCdWZmZXIgYWxpZ25zIHdpdGggdGhlIHBpeGVsIGdyaWQgb2YgdGhlIGNv
bnRleHQuCi0vLyBTaW1wbHkgc2F5aW5nIGNyZWF0ZUNvbXBhdGlibGVCdWZmZXIocmVjdC5zaXpl
KCksIGNvbnRleHQpIGlzbid0IHN1ZmZpY2llbnQgaW4gdGhpcyBzaXR1YXRpb24sIGJlY2F1c2Ug
cmVjdC5sb2NhdGlvbigpIG1heSBub3QgbGllIG9uIGEgcGl4ZWwgYm91bmRhcnkuCi0vLyBJbiB0
aGlzIHNpdHVhdGlvbiwgd2UgaGF2ZSB0byBpbmZsYXRlIGJvdGggdGhlIGxlZnQgc2lkZSBhbmQg
dGhlIHJpZ2h0IHNpZGUsIHdoaWNoIGNhbiBsZWFkIHRvIGRpZmZlcmVudCByZXN1bHRzIHRoYW4K
LS8vIGNyZWF0ZUNvbXBhdGlibGVCdWZmZXIocmVjdC5zaXplKCksIGNvbnRleHQpIHdvdWxkIGhh
dmUgcHJvZHVjZWQuCi1hdXRvIEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSAtPiBz
dGQ6Om9wdGlvbmFsPENvbXBhdGlibGVCdWZmZXJEZXNjcmlwdGlvbj4KLXsKLSAgICBpZiAocmVj
dC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICBhdXRvIGlu
Zm8gPSBJbWFnZUJ1ZmZlcjo6Y29tcGF0aWJsZUJ1ZmZlckluZm8ocmVjdCwgY29udGV4dCk7Ci0K
LSAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyOwotCi0gICAgaWYgKGNvbnRleHQu
cmVuZGVyaW5nTW9kZSgpID09IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkKQotICAgICAgICBp
bWFnZUJ1ZmZlciA9IEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbmZvLnBoeXNpY2Fs
U2l6ZUluRGV2aWNlQ29vcmRpbmF0ZXMsIGNvbnRleHQpOwotICAgIAotICAgIGlmICghaW1hZ2VC
dWZmZXIpCi0gICAgICAgIGltYWdlQnVmZmVyID0gVW5hY2NlbGVyYXRlZEltYWdlQnVmZmVyOjpj
cmVhdGUoaW5mby5waHlzaWNhbFNpemVJbkRldmljZUNvb3JkaW5hdGVzLCBjb250ZXh0KTsKLQot
ICAgIGlmICghaW1hZ2VCdWZmZXIpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAg
ICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnNjYWxlKGluZm8uc2NhbGUpOwotICAgIGltYWdlQnVm
ZmVyLT5jb250ZXh0KCkudHJhbnNsYXRlKC1pbmZvLmluZmxhdGVkUmVjdEluVXNlckNvb3JkaW5h
dGVzLmxvY2F0aW9uKCkpOwotICAgIHJldHVybiB7IHsgaW1hZ2VCdWZmZXIucmVsZWFzZU5vbk51
bGwoKSwgaW5mby5pbmZsYXRlZFJlY3RJblVzZXJDb29yZGluYXRlcyB9IH07Ci19Ci0KLVJlZlB0
cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3Qg
RmxvYXRTaXplJiBzaXplLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2Us
IGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKLXsKLSAgICBpZiAoc2l6ZS5pc0VtcHR5
KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgSW50U2l6ZSBzY2FsZWRTaXplID0g
SW1hZ2VCdWZmZXI6OmNvbXBhdGlibGVCdWZmZXJTaXplKHNpemUsIGNvbnRleHQpOwotCi0gICAg
YXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKHNj
YWxlZFNpemUsIDEsIGNvbG9yU3BhY2UsIGNvbnRleHQpOwotICAgIGlmICghaW1hZ2VCdWZmZXIp
Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgaW1hZ2VCdWZmZXItPmNvbnRleHQoKS5z
Y2FsZShzY2FsZWRTaXplIC8gc2l6ZSk7Ci0gICAgcmV0dXJuIGltYWdlQnVmZmVyOwotfQotCi1S
ZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNv
bnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCkKLXsKLSAgICByZXR1cm4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBjb250ZXh0LnJlbmRl
cmluZ01vZGUoKSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6QkdS
QTgpOwotfQotCiBib29sIEltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhjb25zdCBGbG9h
dFNpemUmIHNpemUpCiB7CiAgICAgaWYgKHNpemUuaXNFbXB0eSgpKQpAQCAtMTg1LDU4ICsxMTYs
NiBAQCBGbG9hdFJlY3QgSW1hZ2VCdWZmZXI6OmNsYW1wZWRSZWN0KGNvbnN0IEZsb2F0UmVjdCYg
cmVjdCkKICAgICByZXR1cm4gRmxvYXRSZWN0KHJlY3QubG9jYXRpb24oKSwgY2xhbXBlZFNpemUo
cmVjdC5zaXplKCkpKTsKIH0KIAotSW50U2l6ZSBJbWFnZUJ1ZmZlcjo6Y29tcGF0aWJsZUJ1ZmZl
clNpemUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQpCi17Ci0gICAgLy8gRW5sYXJnZSB0aGUgYnVmZmVyIHNpemUgaWYgdGhlIGNvbnRleHQncyB0
cmFuc2Zvcm0gaXMgc2NhbGluZyBpdCBzbyB3ZSBuZWVkIGEgaGlnaGVyCi0gICAgLy8gcmVzb2x1
dGlvbiB0aGFuIG9uZSBwaXhlbCBwZXIgdW5pdC4KLSAgICByZXR1cm4gZXhwYW5kZWRJbnRTaXpl
KHNpemUgKiBjb250ZXh0LnNjYWxlRmFjdG9yKCkpOwotfQotCi1hdXRvIEltYWdlQnVmZmVyOjpj
b21wYXRpYmxlQnVmZmVySW5mbyhjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCkgLT4gQ29tcGF0aWJsZUJ1ZmZlckluZm8KLXsKLSAgICBhdXRvIHNj
YWxlRmFjdG9yID0gY29udGV4dC5zY2FsZUZhY3RvcigpOwotICAgIGF1dG8gc2NhbGVkUmVjdCA9
IHJlY3Q7Ci0gICAgc2NhbGVkUmVjdC5zY2FsZShzY2FsZUZhY3Rvcik7Ci0gICAgYXV0byBpbmZs
YXRlZFNjYWxlZFJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KHNjYWxlZFJlY3QpOwotICAgIGF1dG8g
aW5mbGF0ZWRSZWN0SW5Vc2VyQ29vcmRpbmF0ZXMgPSBGbG9hdFJlY3QoaW5mbGF0ZWRTY2FsZWRS
ZWN0KTsKLQotICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gYWxsb2NhdGUgaHVnZSBJbWFnZUJ1ZmZl
cnMgYmVjYXVzZSB0aGV5IGNhbiB0YWtlIGEgbG90IG9mIG1lbW9yeSwKLSAgICAvLyBzbyBpZiB0
aGUgc2l6ZSB3b3VsZCBoYXZlIGJlZW4gdG9vIGJpZywgZGVjcmVhc2UgcmVzb2x1dGlvbiBhbmQg
c2NhbGUgdGhlIHJlc3VsdGluZyBjb250ZXh0LgotICAgIC8vIFRoaXMgd2lsbCBtZWFuIHRoYXQg
dGhlIEltYWdlQnVmZmVyIHdpbGwgbG9zZSBxdWFsaXR5LCBidXQgd2lsbCBzdGlsbCBnZW5lcmFs
bHkgbG9vayBjb3JyZWN0LgotICAgIGNvbnN0ZXhwciBpbnQgbWF4RGltZW5zaW9uID0gNDA5NjsK
LSAgICBpZiAoaW5mbGF0ZWRTY2FsZWRSZWN0LndpZHRoKCkgPiBtYXhEaW1lbnNpb24pIHsKLSAg
ICAgICAgLy8gVGhlIHBpeGVsIGdyaWRzIHdvbid0IGFsaWduIGFueSBtb3JlLCBzbyB0aGVyZSdz
IG5vIG5lZWQgdG8gdHJ5IHRvIGhhbmRsZSBmcmFjdGlvbnMgb2YgcGl4ZWxzLgotICAgICAgICBp
bmZsYXRlZFNjYWxlZFJlY3Quc2V0V2lkdGgobWF4RGltZW5zaW9uKTsKLSAgICAgICAgaW5mbGF0
ZWRSZWN0SW5Vc2VyQ29vcmRpbmF0ZXMuc2NhbGUobWF4RGltZW5zaW9uIC8gaW5mbGF0ZWRSZWN0
SW5Vc2VyQ29vcmRpbmF0ZXMud2lkdGgoKSwgMSk7Ci0gICAgICAgIHNjYWxlRmFjdG9yLnNldFdp
ZHRoKG1heERpbWVuc2lvbiAvIHJlY3Qud2lkdGgoKSk7Ci0gICAgfQotICAgIGlmIChpbmZsYXRl
ZFNjYWxlZFJlY3QuaGVpZ2h0KCkgPiBtYXhEaW1lbnNpb24pIHsKLSAgICAgICAgLy8gVGhlIHBp
eGVsIGdyaWRzIHdvbid0IGFsaWduIGFueSBtb3JlLCBzbyB0aGVyZSdzIG5vIG5lZWQgdG8gdHJ5
IHRvIGhhbmRsZSBmcmFjdGlvbnMgb2YgcGl4ZWxzLgotICAgICAgICBpbmZsYXRlZFNjYWxlZFJl
Y3Quc2V0SGVpZ2h0KG1heERpbWVuc2lvbik7Ci0gICAgICAgIGluZmxhdGVkUmVjdEluVXNlckNv
b3JkaW5hdGVzLnNjYWxlKDEsIG1heERpbWVuc2lvbiAvIGluZmxhdGVkUmVjdEluVXNlckNvb3Jk
aW5hdGVzLmhlaWdodCgpKTsKLSAgICAgICAgc2NhbGVGYWN0b3Iuc2V0SGVpZ2h0KG1heERpbWVu
c2lvbiAvIHJlY3QuaGVpZ2h0KCkpOwotICAgIH0KLQotICAgIGF1dG8gcGh5c2ljYWxTaXplSW5E
ZXZpY2VDb29yZGluYXRlcyA9IGluZmxhdGVkU2NhbGVkUmVjdC5zaXplKCk7Ci0gICAgaW5mbGF0
ZWRSZWN0SW5Vc2VyQ29vcmRpbmF0ZXMuc2NhbGUoMS4wZiAvIHNjYWxlRmFjdG9yKTsKLSAgICBy
ZXR1cm4geyBXVEZNb3ZlKHBoeXNpY2FsU2l6ZUluRGV2aWNlQ29vcmRpbmF0ZXMpLCBXVEZNb3Zl
KGluZmxhdGVkUmVjdEluVXNlckNvb3JkaW5hdGVzKSwgc2NhbGVGYWN0b3IgfTsKLX0KLQotUmVm
UHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y29weVJlY3RUb0J1ZmZlcihjb25zdCBGbG9h
dFJlY3QmIHJlY3QsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgY29u
c3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQotewotICAgIGlmIChyZWN0LmlzRW1wdHkoKSkK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBJbnRTaXplIHNjYWxlZFNpemUgPSBJbWFn
ZUJ1ZmZlcjo6Y29tcGF0aWJsZUJ1ZmZlclNpemUocmVjdC5zaXplKCksIGNvbnRleHQpOwotCi0g
ICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihzY2Fs
ZWRTaXplLCAxLCBjb2xvclNwYWNlLCBjb250ZXh0KTsKLSAgICBpZiAoIWJ1ZmZlcikKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBidWZmZXItPmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZm
ZXIoKnRoaXMsIC1yZWN0LmxvY2F0aW9uKCkpOwotICAgIHJldHVybiBidWZmZXI7Ci19Ci0KIFJl
ZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXI6OnNpbmtJbnRvTmF0aXZlSW1hZ2UoUmVmUHRy
PEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlcikKIHsKICAgICByZXR1cm4gaW1hZ2VCdWZmZXItPnNp
bmtJbnRvTmF0aXZlSW1hZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUJ1ZmZlci5oCmluZGV4IGQyZDliZTllZjQwMzJmYWEyNWJlNjJjYWNlNDM3ODJkZWZj
Yjc0MTUuLjUzMDk0OGUyNjE4YzYyNmNlMjNjOGJjY2NiNWFjNTZhMWM5NDdiZjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaApAQCAtMSw2ICsx
LDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1t
ZXJtYW5uQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAyMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVG9yY2ggTW9iaWxl
IChCZWlqaW5nKSBDby4gTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dApAQCAtNTAsMTYgKzUwLDYgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBS
ZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2Rl
LCBTaG91bGRVc2VEaXNwbGF5TGlzdCwgUmVuZGVyaW5nUHVycG9zZSwgZmxvYXQgcmVzb2x1dGlv
blNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBQaXhlbEZvcm1hdCwgY29uc3Qg
SG9zdFdpbmRvdyogPSBudWxscHRyKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRy
PEltYWdlQnVmZmVyPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgZmxv
YXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBQaXhlbEZv
cm1hdCwgY29uc3QgSG9zdFdpbmRvdyogPSBudWxscHRyKTsKIAotICAgIC8vIENyZWF0ZSBhbiBp
bWFnZSBidWZmZXIgY29tcGF0aWJsZSB3aXRoIHRoZSBjb250ZXh0LCB3aXRoIHN1aXRhYmxlIHJl
c29sdXRpb24gZm9yIGRyYXdpbmcgaW50byB0aGUgYnVmZmVyIGFuZCB0aGVuIGludG8gdGhpcyBj
b250ZXh0LgotICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUNvbXBhdGlibGVC
dWZmZXIoY29uc3QgRmxvYXRTaXplJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7Ci0gICAgc3Ry
dWN0IENvbXBhdGlibGVCdWZmZXJEZXNjcmlwdGlvbiB7Ci0gICAgICAgIFJlZjxJbWFnZUJ1ZmZl
cj4gaW1hZ2VCdWZmZXI7Ci0gICAgICAgIEZsb2F0UmVjdCBpbmZsYXRlZFJlY3RJblVzZXJDb29y
ZGluYXRlczsKLSAgICB9OwotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPENvbXBhdGlibGVCdWZm
ZXJEZXNjcmlwdGlvbj4gY3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHJl
Y3RJblVzZXJDb29yZGluYXRlcywgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlQ29tcGF0aWJsZUJ1ZmZl
cihjb25zdCBGbG9hdFNpemUmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBjb25zdCBH
cmFwaGljc0NvbnRleHQmKTsKLSAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVD
b21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwg
Y29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7Ci0K
ICAgICAvLyBUaGVzZSBmdW5jdGlvbnMgYXJlIHVzZWQgd2hlbiBjbGFtcGluZyB0aGUgSW1hZ2VC
dWZmZXIgd2hpY2ggaXMgY3JlYXRlZCBmb3IgZmlsdGVyLCBtYXNrZXIgb3IgY2xpcHBlci4KICAg
ICBzdGF0aWMgYm9vbCBzaXplTmVlZHNDbGFtcGluZyhjb25zdCBGbG9hdFNpemUmKTsKICAgICBz
dGF0aWMgYm9vbCBzaXplTmVlZHNDbGFtcGluZyhjb25zdCBGbG9hdFNpemUmLCBGbG9hdFNpemUm
IHNjYWxlKTsKQEAgLTY3LDE0ICs1Nyw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgRmxvYXRTaXpl
IGNsYW1wZWRTaXplKGNvbnN0IEZsb2F0U2l6ZSYsIEZsb2F0U2l6ZSYgc2NhbGUpOwogICAgIHN0
YXRpYyBGbG9hdFJlY3QgY2xhbXBlZFJlY3QoY29uc3QgRmxvYXRSZWN0Jik7CiAKLSAgICBzdGF0
aWMgSW50U2l6ZSBjb21wYXRpYmxlQnVmZmVyU2l6ZShjb25zdCBGbG9hdFNpemUmLCBjb25zdCBH
cmFwaGljc0NvbnRleHQmKTsKLSAgICBzdHJ1Y3QgQ29tcGF0aWJsZUJ1ZmZlckluZm8gewotICAg
ICAgICBJbnRTaXplIHBoeXNpY2FsU2l6ZUluRGV2aWNlQ29vcmRpbmF0ZXM7Ci0gICAgICAgIEZs
b2F0UmVjdCBpbmZsYXRlZFJlY3RJblVzZXJDb29yZGluYXRlczsKLSAgICAgICAgRmxvYXRTaXpl
IHNjYWxlOwotICAgIH07Ci0gICAgc3RhdGljIENvbXBhdGlibGVCdWZmZXJJbmZvIGNvbXBhdGli
bGVCdWZmZXJJbmZvKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOwot
ICAgIAogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfkltYWdlQnVmZmVyKCkgPSBkZWZhdWx0
OwogCiAgICAgdmlydHVhbCB2b2lkIHNldEJhY2tlbmQoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVyQmFja2VuZD4mJikgPSAwOwpAQCAtMTIyLDkgKzEwNCw2IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIFJlZlB0cjxJbWFnZT4gY29weUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFja2lu
Z1N0b3JlLCBQcmVzZXJ2ZVJlc29sdXRpb24gPSBQcmVzZXJ2ZVJlc29sdXRpb246Ok5vKSBjb25z
dCA9IDA7CiAgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2U+IGZpbHRlcmVkSW1hZ2UoRmlsdGVyJikg
PSAwOwogCi0gICAgLy8gQ3JlYXRlIGFuIGltYWdlIGJ1ZmZlciBjb21wYXRpYmxlIHdpdGggdGhl
IGNvbnRleHQgYW5kIGNvcHkgcmVjdCBmcm9tIHRoaXMgYnVmZmVyIGludG8gdGhpcyBuZXcgb25l
LgotICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY29weVJlY3RUb0J1ZmZlcihjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBjb25zdCBHcmFwaGljc0NvbnRleHQm
KTsKLQogICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZsb2F0UmVjdCgwLCAw
LCAtMSwgLTEpLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9h
dFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgPSAwOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdl
R2VuZXJhdGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFt
ZWRJbWFnZUdlbmVyYXRlZEltYWdlLmNwcAppbmRleCA2ZmZjMjgyYjljYzc1MDQwODg4Y2IzNjRm
YjMzMDIwMmZjYjAzYmQwLi4zNzBjN2RjMjg5NmYzOTYyY2IzZWQ1MDk4MmRhYjY5OTc0ZjYzMmM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdl
R2VuZXJhdGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgSW1hZ2VEcmF3
UmVzdWx0IE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEYKIHZvaWQgTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3UGF0dGVy
bihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFu
c2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogI2lmIFVTRShORVdfVEhF
TUUpCi0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxl
QnVmZmVyKHNpemUoKSwgY29udGV4dCk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IGNvbnRleHQu
Y3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyKHNpemUoKSk7CiAgICAgaWYgKCFpbWFnZUJ1ZmZl
cikKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9SZW5kZXJpbmdNb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9SZW5kZXJpbmdNb2RlLmgKaW5kZXggMDUyYmNjYTM4MjFmNjk5MDZkOGRhYzU0NzBmODUx
YmY2OWU0ZmUzNi4uOTZiOGFjZTk2NDc1OTIwMDAwZWYxNmNlMDJhYmE5MWFhMTdjNzRhZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVuZGVyaW5nTW9kZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlbmRlcmluZ01vZGUuaApA
QCAtMzUsNiArMzUsNyBAQCBlbnVtIGNsYXNzIFJlbmRlcmluZ1B1cnBvc2UgOiB1aW50OF90IHsK
IH07CiAKIGVudW0gY2xhc3MgU2hvdWxkVXNlRGlzcGxheUxpc3QgOiBib29sIHsgTm8sIFllcyB9
OworZW51bSBjbGFzcyBJbWFnZUJ1ZmZlclR5cGUgOiBib29sIHsgQ29tcGF0aWJsZSwgQ29uY3Jl
dGUgfTsKIGVudW0gY2xhc3MgUmVuZGVyaW5nTW9kZSA6IGJvb2wgeyBVbmFjY2VsZXJhdGVkLCBB
Y2NlbGVyYXRlZCB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCmlu
ZGV4IDM2NGJjMjNhMzBiMGFiNWIyNWRiZDllZjc1NzY0MDcyNTdhOGMyNGQuLjI5OGQ0YWFmMGRi
NmQ0MjRhYWVjOTE3MjE2ODkwYTM2NTIyMGNmZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCkBAIC0yMzIs
MTQgKzIzMiwxNSBAQCB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OnVwZGF0ZUNhY2hlZEltYWdlSWZO
ZWVkZWQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdAogCiAgICAgLy8gQ2FjaGUgdGhl
IFBERiBpbWFnZSBvbmx5IGlmIHRoZSBzaXplIG9mIHRoZSBuZXcgaW1hZ2Ugd29uJ3QgZXhjZWVk
IHRoZSBjYWNoZSB0aHJlc2hvbGQuCiAgICAgaWYgKG1fcGRmSW1hZ2VDYWNoaW5nUG9saWN5ID09
IFBERkltYWdlQ2FjaGluZ1BvbGljeTo6QmVsb3dNZW1vcnlMaW1pdCkgewotICAgICAgICBJbnRT
aXplIHNjYWxlZFNpemUgPSBJbWFnZUJ1ZmZlcjo6Y29tcGF0aWJsZUJ1ZmZlclNpemUoY2FjaGVk
SW1hZ2VTaXplLCBjb250ZXh0KTsKKyAgICAgICAgYXV0byBzY2FsZWRTaXplID0gY29udGV4dC5j
b21wYXRpYmxlSW1hZ2VCdWZmZXJTaXplKGNhY2hlZEltYWdlU2l6ZSk7CiAgICAgICAgIGlmIChz
X2FsbERlY29kZWREYXRhU2l6ZSArIHNjYWxlZFNpemUudW5jbGFtcGVkQXJlYSgpICogNCAtIG1f
Y2FjaGVkQnl0ZXMgPiBzX21heERlY29kZWREYXRhU2l6ZSkgewogICAgICAgICAgICAgZGVzdHJv
eURlY29kZWREYXRhKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CiAK
LSAgICBtX2NhY2hlZEltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVC
dWZmZXIoY2FjaGVkSW1hZ2VTaXplLCBjb250ZXh0KTsKKyAgICAvLyBDcmVhdGUgaW4tcHJvY2Vz
cyBJbWFnZUJ1ZmZlciBzaW5jZSB0aGUgZGVvY29kaW5nIG9mIFBERiBpbWFnZXMgaGFzIHRvIGhh
cHBlbiBpbiBXZWJQcm9jZXNzLgorICAgIG1fY2FjaGVkSW1hZ2VCdWZmZXIgPSBjb250ZXh0LmNy
ZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihjYWNoZWRJbWFnZVNpemUsIERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQigpLCBJbWFnZUJ1ZmZlclR5cGU6OkNvbmNyZXRlKTsKICAgICBpZiAoIW1f
Y2FjaGVkSW1hZ2VCdWZmZXIpIHsKICAgICAgICAgZGVzdHJveURlY29kZWREYXRhKCk7CiAgICAg
ICAgIHJldHVybjsKQEAgLTI5Miw3ICsyOTMsNyBAQCBJbWFnZURyYXdSZXN1bHQgUERGRG9jdW1l
bnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdAog
ICAgICAgICAgICAgLy8gc2NhbGFyID0gc3FydChtYXggbnVtYmVyIG9mIHBpeGVscyAvICh3aWR0
aCAqIGhlaWdodCkpCiAgICAgICAgICAgICBhdXRvIHNjYWxhciA9IHN0ZDo6bWluKDEuZiwgc3Rk
OjpzcXJ0KHN0YXRpY19jYXN0PGZsb2F0PihzX21heENhY2hlZEltYWdlQXJlYSkgLyAoZHN0UmVj
dC53aWR0aCgpICogZHN0UmVjdC5oZWlnaHQoKSkpKTsKICAgICAgICAgICAgIEZsb2F0UmVjdCBs
b2NhbERlc3RpbmF0aW9uUmVjdChGbG9hdFBvaW50KCksIGRzdFJlY3Quc2l6ZSgpICogc2NhbGFy
KTsKLSAgICAgICAgICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0
ZUNvbXBhdGlibGVCdWZmZXIobG9jYWxEZXN0aW5hdGlvblJlY3Quc2l6ZSgpLCBjb250ZXh0KSkg
eworICAgICAgICAgICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBjb250ZXh0LmNyZWF0ZUNvbXBh
dGlibGVJbWFnZUJ1ZmZlcihsb2NhbERlc3RpbmF0aW9uUmVjdC5zaXplKCksIERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQigpLCBJbWFnZUJ1ZmZlclR5cGU6OkNvbmNyZXRlKSkgewogICAgICAg
ICAgICAgICAgIGF1dG8mIGJ1ZmZlckNvbnRleHQgPSBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpOwog
ICAgICAgICAgICAgICAgIHRyYW5zZm9ybUNvbnRleHRGb3JQYWludGluZyhidWZmZXJDb250ZXh0
LCBsb2NhbERlc3RpbmF0aW9uUmVjdCwgc3JjUmVjdCk7CiAgICAgICAgICAgICAgICAgZHJhd1BE
RlBhZ2UoYnVmZmVyQ29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb3JldGV4dC9EcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9EcmF3R2x5cGhzUmVjb3JkZXJD
b3JlVGV4dC5jcHAKaW5kZXggYzI5NWVmZTgzNDdiMDQ1YmUzMWRiMzY3NjczZWU3Zjk5NWIxYTRj
My4uZjY5MjMyMmE0ZWIwM2ZlNzdhMTg3NWYwNTdjODQ3MTdlZGI3NWQyYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRHJhd0dseXBoc1JlY29y
ZGVyQ29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
cmV0ZXh0L0RyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcApAQCAtMzc2LDExICszNzYsMTQg
QEAgdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OmRyYXdPVFNWR1J1bihjb25zdCBGb250JiBmb250
LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKgogICAgIEZsb2F0UG9pbnQgcGVuUG9zaXRpb24gPSBz
dGFydFBvaW50OwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1HbHlwaHM7ICsraSkg
ewogICAgICAgICBhdXRvIGJvdW5kcyA9IGZvbnQuYm91bmRzRm9yR2x5cGgoZ2x5cGhzW2ldKTsK
LSAgICAgICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXJEZXNjcmlwdGlvbiA9IEltYWdlQnVmZmVyOjpj
cmVhdGVDb21wYXRpYmxlQnVmZmVyKGJvdW5kcywgbV9vd25lcikpIHsKLSAgICAgICAgICAgIEZv
bnRDYXNjYWRlOjpkcmF3R2x5cGhzKGltYWdlQnVmZmVyRGVzY3JpcHRpb24tPmltYWdlQnVmZmVy
LT5jb250ZXh0KCksIGZvbnQsIGdseXBocyArIGksIGFkdmFuY2VzICsgaSwgMSwgRmxvYXRQb2lu
dCgpLCBzbW9vdGhpbmdNb2RlKTsKLSAgICAgICAgICAgIGF1dG8gZGVzdGluYXRpb25SZWN0ID0g
aW1hZ2VCdWZmZXJEZXNjcmlwdGlvbi0+aW5mbGF0ZWRSZWN0SW5Vc2VyQ29vcmRpbmF0ZXM7CisK
KyAgICAgICAgLy8gQ3JlYXRlIGluLXByb2Nlc3MgSW1hZ2VCdWZmZXIgc2luY2UgdGhlIGRlb2Nv
ZGluZyBvZiBPVC1TVkcgZm9udHMgaGFzIHRvIGhhcHBlbiBpbiBXZWJQcm9jZXNzLgorICAgICAg
ICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IG1fb3duZXIuY3JlYXRlQ29tcGF0aWJsZUltYWdlQnVm
ZmVyKGJvdW5kcywgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIEltYWdlQnVmZmVyVHlw
ZTo6Q29uY3JldGUpKSB7CisgICAgICAgICAgICBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhpbWFn
ZUJ1ZmZlci0+Y29udGV4dCgpLCBmb250LCBnbHlwaHMgKyBpLCBhZHZhbmNlcyArIGksIDEsIEZs
b2F0UG9pbnQoKSwgc21vb3RoaW5nTW9kZSk7CisKKyAgICAgICAgICAgIEZsb2F0UmVjdCBkZXN0
aW5hdGlvblJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KGJvdW5kcyk7CiAgICAgICAgICAgICBkZXN0
aW5hdGlvblJlY3QubW92ZUJ5KHBlblBvc2l0aW9uKTsKLSAgICAgICAgICAgIG1fb3duZXIuZHJh
d0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyRGVzY3JpcHRpb24tPmltYWdlQnVmZmVyLCBkZXN0aW5h
dGlvblJlY3QpOworICAgICAgICAgICAgbV9vd25lci5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVm
ZmVyLCBkZXN0aW5hdGlvblJlY3QpOwogICAgICAgICB9CiAgICAgICAgIHBlblBvc2l0aW9uLm1v
dmUoc2l6ZShhZHZhbmNlc1tpXSkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZWNvcmRlckltcGwuY3BwCmluZGV4IGZlNTE1NThkNzgyMzUzNDE5YTY0YzlhN2Y5Yjg5
NzkwM2FhNmY5YTQuLjUwMWRhNjI2MDU2OWVjYWVkNWYxYWE5MGFhM2I2YzNmM2Q4ZjBmYWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlY29yZGVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmNwcApAQCAtNDU2
LDYgKzQ1NiwxMSBAQCBib29sIFJlY29yZGVySW1wbDo6cmVjb3JkUmVzb3VyY2VVc2UoRm9udCYg
Zm9udCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorUmVmUHRyPEltYWdlQnVmZmVyPiBSZWNvcmRl
ckltcGw6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVz
b2x1dGlvblNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UpIGNv
bnN0Cit7CisgICAgcmV0dXJuIEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgcmVuZGVyaW5nTW9k
ZSgpLCBTaG91bGRVc2VEaXNwbGF5TGlzdDo6WWVzLCBSZW5kZXJpbmdQdXJwb3NlOjpVbnNwZWNp
ZmllZCwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwor
fQorCiAvLyBGSVhNRTogc2hhcmUgd2l0aCBTaGFkb3dEYXRhCiBzdGF0aWMgaW5saW5lIGZsb2F0
IHNoYWRvd1BhaW50aW5nRXh0ZW50KGZsb2F0IGJsdXJSYWRpdXMpCiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZWNvcmRlckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5oCmluZGV4IGVkNDcxMGIzZDY5MDNiZWQ2MjY5
Y2RiYzZiMjU3ZjU3ZmZmNTg4ZWMuLmQ3YTdjM2YyMzUyNGUyNmJjN2ZhMjI4NTk0MWI0NjZlMWIz
YzhjNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5oCkBA
IC0xNDMsNiArMTQzLDggQEAgcHJpdmF0ZToKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGlj
c0NvbnRleHQ+IGNyZWF0ZU5lc3RlZENvbnRleHQoY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xp
cCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RNKSBmaW5hbDsKIAorICAgIFJlZlB0
cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXpl
JiwgZmxvYXQgcmVzb2x1dGlvblNjYWxlID0gMSwgY29uc3QgV2ViQ29yZTo6RGVzdGluYXRpb25D
b2xvclNwYWNlJiA9IFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKSBjb25z
dCBmaW5hbDsKKwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIGNsYXNzLi4uIEFyZ3M+CiAgICAg
dm9pZCBhcHBlbmQoQXJncyYmLi4uIGFyZ3MpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVwbGF5ZXIuY3BwCmluZGV4IDIxODY1MGFmNThhNGE3YmNmMmMxNDEwZmYwZWYwMDUw
NjgxYjZlZWQuLjJjNGFlNDRkZTkyY2UyNjQ4Y2Q2ODkzZWFjYTY3MWMyYjRjZjBlNDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlcGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKQEAgLTE3Myw3ICsxNzMsNyBA
QCBzdGQ6OnBhaXI8c3RkOjpvcHRpb25hbDxTdG9wUmVwbGF5UmVhc29uPiwgc3RkOjpvcHRpb25h
bDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aQogICAgICAgICBpZiAobV9tYXNrSW1hZ2VCdWZmZXIp
CiAgICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpJbnZhbGlkSXRlbU9yRXh0
ZW50LCBzdGQ6Om51bGxvcHQgfTsKICAgICAgICAgYXV0byYgY2xpcEl0ZW0gPSBpdGVtLmdldDxC
ZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcz4oKTsKLSAgICAgICAgbV9tYXNrSW1hZ2VCdWZmZXIg
PSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjbGlwSXRlbS5kZXN0aW5hdGlv
bigpLnNpemUoKSwgY2xpcEl0ZW0uY29sb3JTcGFjZSgpLCBtX2NvbnRleHQpOworICAgICAgICBt
X21hc2tJbWFnZUJ1ZmZlciA9IG1fY29udGV4dC5jcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIo
Y2xpcEl0ZW0uZGVzdGluYXRpb24oKS5zaXplKCksIGNsaXBJdGVtLmNvbG9yU3BhY2UoKSk7CiAg
ICAgICAgIGlmICghbV9tYXNrSW1hZ2VCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm4geyBTdG9w
UmVwbGF5UmVhc29uOjpPdXRPZk1lbW9yeSwgc3RkOjpudWxsb3B0IH07CiAgICAgICAgIGlmICht
X2RlbGVnYXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1l
TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCmluZGV4IGQ3
OWU4NWFhMmJjOTc1ODcyYWZmYjFkNzA3MTk0ZGRlZGJkMzkwOWEuLjMwZTAyYzRlMDNiOGFiYmZi
YzFlMzlmZGFmMjI3YjI0ZWI3NTdlNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9UaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhl
bWVNYWMubW0KQEAgLTczNCw3ICs3MzQsNyBAQCBib29sIFRoZW1lTWFjOjpkcmF3Q2VsbE9yRm9j
dXNSaW5nV2l0aFZpZXdJbnRvQ29udGV4dChOU0NlbGwgKmNlbGwsIEdyYXBoaWNzQ29udAogCiAg
ICAgaWYgKHVzZUltYWdlQnVmZmVyKSB7CiAgICAgICAgIE5TUmVjdCBpbWFnZUJ1ZmZlckRyYXdS
ZWN0ID0gTlNSZWN0KEZsb2F0UmVjdChidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgsIGJ1dHRv
bkZvY3VzUmVjdE91dGxpbmVXaWR0aCwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpKSk7Ci0g
ICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1
ZmZlcihyZWN0LnNpemUoKSArIDIgKiBGbG9hdFNpemUoYnV0dG9uRm9jdXNSZWN0T3V0bGluZVdp
ZHRoLCBidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgpLCBkZXZpY2VTY2FsZUZhY3RvciwgRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIGNvbnRleHQpOworICAgICAgICBhdXRvIGltYWdl
QnVmZmVyID0gY29udGV4dC5jcmVhdGVJbWFnZUJ1ZmZlcihyZWN0LnNpemUoKSArIDIgKiBGbG9h
dFNpemUoYnV0dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRoLCBidXR0b25Gb2N1c1JlY3RPdXRsaW5l
V2lkdGgpLCBkZXZpY2VTY2FsZUZhY3Rvcik7CiAgICAgICAgIGlmICghaW1hZ2VCdWZmZXIpCiAg
ICAgICAgICAgICByZXR1cm4gbmVlZHNSZXBhaW50OwogICAgICAgICB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAppbmRleCA1MjhmMDIy
MDRhNjE4NmY5ODUxYTMyNGM1MGU5YjYxY2IyNTIwMzc0Li4xOWJiMGM0MmZiYzVmYzIxMzU3NjA3
ODIyNjU3ZmJiNjJhZjg3MjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKQEAgLTg5NCw3ICs4OTQsNyBAQCB2b2lkIFJlbmRlckJv
eE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBjbwogICAgICAgICBtYXNrUmVjdC5pbnRlcnNlY3Qoc25hcFJlY3RUb0RldmljZVBp
eGVscyhwYWludEluZm8ucmVjdCwgZGV2aWNlU2NhbGVGYWN0b3IpKTsKIAogICAgICAgICAvLyBO
b3cgY3JlYXRlIHRoZSBtYXNrLgotICAgICAgICBtYXNrSW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlQ29tcGF0aWJsZUJ1ZmZlcihtYXNrUmVjdC5zaXplKCksIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQigpLCBjb250ZXh0KTsKKyAgICAgICAgbWFza0ltYWdlID0gY29udGV4dC5jcmVhdGVD
b21wYXRpYmxlSW1hZ2VCdWZmZXIobWFza1JlY3Quc2l6ZSgpKTsKICAgICAgICAgaWYgKCFtYXNr
SW1hZ2UpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHBhaW50TWFza0ZvclRleHRGaWxs
Qm94KG1hc2tJbWFnZS5nZXQoKSwgbWFza1JlY3QsIGJveCwgc2Nyb2xsZWRQYWludFJlY3QpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRl
eCA2ODc5Y2E1ZWU3MGY1MWI3ZjQyYjRjNWY1NGNmMWI0MGMyOWUyZWJmLi43YzIyMzM3NDg0Mjgx
NzFiMTg4MjYyNzBhYzQ5YzgxNDZlOTU4ZDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtMzMxMiw3ICszMzEyLDcgQEAgc3RhdGlj
IFJlZlB0cjxQYXR0ZXJuPiBwYXR0ZXJuRm9yRGVzY3JpcHRpb24oUGF0dGVybkRlc2NyaXB0aW9u
IGRlc2NyaXB0aW9uLCBGbG8KIHsKICAgICBjb25zdCBGbG9hdFNpemUgdGlsZVNpemUgeyAzMiwg
MTggfTsKIAotICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0
aWJsZUJ1ZmZlcih0aWxlU2l6ZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIGRlc3RD
b250ZXh0KTsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gZGVzdENvbnRleHQuY3JlYXRlQ29tcGF0
aWJsZUltYWdlQnVmZmVyKHRpbGVTaXplKTsKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhl
bWVDb2NvYS5tbQppbmRleCAxYTY2NzMyMjcyMmFkMzhmYzE1MTRiYmIxMTllZGNlM2E4ZWY3M2Yz
Li5hYmQ0YzFkYjEzMTRkNDQyMWI3MzIyYWE4NTc1MWFlYjJmNTkzYWRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDb2NvYS5tbQpAQCAtMTU0LDcgKzE1NCw3IEBA
IGJvb2wgUmVuZGVyVGhlbWVDb2NvYTo6cGFpbnRBcHBsZVBheUJ1dHRvbihjb25zdCBSZW5kZXJP
YmplY3QmIHJlbmRlcmVyLCBjb25zdCBQCiB7CiAgICAgYXV0byYgZGVzdGluYXRpb25Db250ZXh0
ID0gcGFpbnRJbmZvLmNvbnRleHQoKTsKIAotICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1
ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihwYWludFJlY3Quc2l6ZSgpLCBkZXN0aW5hdGlv
bkNvbnRleHQpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBkZXN0aW5hdGlvbkNvbnRleHQuY3Jl
YXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyKHBhaW50UmVjdC5zaXplKCkpOwogICAgIGlmICghaW1h
Z2VCdWZmZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lTWFjLm1tCmluZGV4IDZjOTRlOTJlMGZmZjg0MDEzZjFhNmVjNjgyOWM3
ZTkwMGEyMDA3OGYuLjI3YWFlMGVjYTUxNmExYzc4OTE3MGJjYmY0MzBmYzI4MTZkMmMyNmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KQEAgLTk5Niw3ICs5
OTYsNyBAQCB2b2lkIFJlbmRlclRoZW1lTWFjOjpwYWludExpc3RCdXR0b25Gb3JJbnB1dChjb25z
dCBSZW5kZXJPYmplY3QmIG8sIEdyYXBoaWNzQ29udAogCiAgICAgZmxvYXQgZGV2aWNlU2NhbGVG
YWN0b3IgPSBvLmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKTsKIAotICAgIGF1dG8gY29t
Ym9Cb3hJbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNv
bWJvQm94U2l6ZSwgZGV2aWNlU2NhbGVGYWN0b3IsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
QigpLCBjb250ZXh0KTsKKyAgICBhdXRvIGNvbWJvQm94SW1hZ2VCdWZmZXIgPSBjb250ZXh0LmNy
ZWF0ZUltYWdlQnVmZmVyKGNvbWJvQm94U2l6ZSwgZGV2aWNlU2NhbGVGYWN0b3IpOwogICAgIGlm
ICghY29tYm9Cb3hJbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCkBAIC0xMDIwLDcgKzEw
MjAsNyBAQCB2b2lkIFJlbmRlclRoZW1lTWFjOjpwYWludExpc3RCdXR0b25Gb3JJbnB1dChjb25z
dCBSZW5kZXJPYmplY3QmIG8sIEdyYXBoaWNzQ29udAogICAgICAgICAoX19icmlkZ2UgTlNTdHJp
bmcgKilrQ1VJVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbktleSA6IChfX2JyaWRnZSBOU1N0
cmluZyAqKWtDVUlVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uTGVmdFRvUmlnaHQsCiAgICAg
fV07CiAKLSAgICBhdXRvIGNvbWJvQm94QnV0dG9uSW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihkZXNpcmVkQ29tYm9Cb3hCdXR0b25TaXplLCBkZXZpY2VT
Y2FsZUZhY3RvciwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIGNvbnRleHQpOworICAg
IGF1dG8gY29tYm9Cb3hCdXR0b25JbWFnZUJ1ZmZlciA9IGNvbnRleHQuY3JlYXRlSW1hZ2VCdWZm
ZXIoZGVzaXJlZENvbWJvQm94QnV0dG9uU2l6ZSwgZGV2aWNlU2NhbGVGYWN0b3IpOwogICAgIGlm
ICghY29tYm9Cb3hCdXR0b25JbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCkBAIC0xMzc5
LDcgKzEzNzksNyBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludFByb2dyZXNzQmFyKGNvbnN0
IFJlbmRlck9iamVjdCYgcmVuZGVyT2JqZWN0LCBjb25zdCBQYQogICAgIGNvbnN0IGF1dG8mIHJl
bmRlclByb2dyZXNzID0gZG93bmNhc3Q8UmVuZGVyUHJvZ3Jlc3M+KHJlbmRlck9iamVjdCk7CiAg
ICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSByZW5kZXJPYmplY3QuZG9jdW1lbnQoKS5kZXZp
Y2VTY2FsZUZhY3RvcigpOwogICAgIGJvb2wgaXNJbmRldGVybWluYXRlID0gcmVuZGVyUHJvZ3Jl
c3MucG9zaXRpb24oKSA8IDA7Ci0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpj
cmVhdGVDb21wYXRpYmxlQnVmZmVyKGluZmxhdGVkUmVjdC5zaXplKCksIGRldmljZVNjYWxlRmFj
dG9yLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgcGFpbnRJbmZvLmNvbnRleHQoKSk7
CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IHBhaW50SW5mby5jb250ZXh0KCkuY3JlYXRlSW1hZ2VC
dWZmZXIoaW5mbGF0ZWRSZWN0LnNpemUoKSwgZGV2aWNlU2NhbGVGYWN0b3IpOwogICAgIGlmICgh
aW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybiB0cnVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCBmMDhlODcy
ZDI4NjZhZTUzNDI0ODZlM2M5Zjk5OGVkYzk0NDk4NGI5Li40NDhmOTE2NTJhOTI5ZGE4NDQ0NDIy
MGRkOWM3NzFmMGJhNDU5N2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTMzMyw3ICszMzMsNyBAQCBib29sIFNW
R1JlbmRlcmluZ0NvbnRleHQ6OmJ1ZmZlckZvcmVncm91bmQoUmVmUHRyPEltYWdlQnVmZmVyPiYg
aW1hZ2VCdWZmZXIpCiAKICAgICAvLyBDcmVhdGUgYSBuZXcgYnVmZmVyIGFuZCBwYWludCB0aGUg
Zm9yZWdyb3VuZCBpbnRvIGl0LgogICAgIGlmICghaW1hZ2VCdWZmZXIpIHsKLSAgICAgICAgaW1h
Z2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihleHBhbmRlZElu
dFNpemUoYm91bmRpbmdCb3guc2l6ZSgpKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCks
IG1fcGFpbnRJbmZvLT5jb250ZXh0KCkpOworICAgICAgICBpbWFnZUJ1ZmZlciA9IG1fcGFpbnRJ
bmZvLT5jb250ZXh0KCkuY3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyKGV4cGFuZGVkSW50U2l6
ZShib3VuZGluZ0JveC5zaXplKCkpKTsKICAgICAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlLmNwcAppbmRleCBmNDE0MDEyMzM4OTE5MDM4N2FkMjc2OTZhNTA1NDQ1NGRmODkwMjhh
Li42YmZmODk3NmM3OGJjYmYxZjRjMzMwMzdhYmY3YmM1MjViZGY0NGRiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKQEAgLTI1MCw3ICsyNTAsNyBAQCB2b2lkIFNW
R0ltYWdlOjpkcmF3UGF0dGVybkZvckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEZsb2F0U2l6ZQogICAgIEZsb2F0UmVjdCBpbWFnZUJ1ZmZlclNpemUgPSB6b29tZWRD
b250YWluZXJSZWN0OwogICAgIGltYWdlQnVmZmVyU2l6ZS5zY2FsZShpbWFnZUJ1ZmZlclNjYWxl
LndpZHRoKCksIGltYWdlQnVmZmVyU2NhbGUuaGVpZ2h0KCkpOwogCi0gICAgYXV0byBidWZmZXIg
PSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihleHBhbmRlZEludFNpemUoaW1h
Z2VCdWZmZXJTaXplLnNpemUoKSksIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBj
b250ZXh0KTsKKyAgICBhdXRvIGJ1ZmZlciA9IGNvbnRleHQuY3JlYXRlSW1hZ2VCdWZmZXIoZXhw
YW5kZWRJbnRTaXplKGltYWdlQnVmZmVyU2l6ZS5zaXplKCkpKTsKICAgICBpZiAoIWJ1ZmZlcikg
Ly8gRmFpbGVkIHRvIGFsbG9jYXRlIGJ1ZmZlci4KICAgICAgICAgcmV0dXJuOwogICAgIGRyYXdG
b3JDb250YWluZXIoYnVmZmVyLT5jb250ZXh0KCksIGNvbnRhaW5lclNpemUsIGNvbnRhaW5lclpv
b20sIGluaXRpYWxGcmFnbWVudFVSTCwgaW1hZ2VCdWZmZXJTaXplLCB6b29tZWRDb250YWluZXJS
ZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVEaXNwbGF5TGlzdFJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNwcAppbmRleCBkOWFmNTg0MGRmNjg0M2Q5
ZTYxOWRiNjYyZWM5MGVhNDgxODU3OTZhLi4xOTM3NDE5ZmViZTY4M2M5NzJiMTcwNDI3OWIzZmZh
MThhOTVjMWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBAIC0yMDgsNyArMjA4
LDcgQEAgdm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjpjbGlwUGF0aChjb25zdCBQYXRo
JiBwYXRoLCBXaW5kUnVsZSBydWxlKQogCiB2b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6
OmJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24s
IGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSkKIHsKLSAgICBtX21hc2tJ
bWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGRlc3RpbmF0
aW9uLnNpemUoKSwgY29sb3JTcGFjZSwgZHJhd2luZ0NvbnRleHQoKSk7CisgICAgbV9tYXNrSW1h
Z2VCdWZmZXIgPSBkcmF3aW5nQ29udGV4dCgpLmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihk
ZXN0aW5hdGlvbi5zaXplKCksIGNvbG9yU3BhY2UpOwogfQogCiB2b2lkIFJlbW90ZURpc3BsYXlM
aXN0UmVjb3JkZXI6OmVuZENsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRl
c3RpbmF0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuY3Bw
CmluZGV4IDI0MzNmZGNjOTc0YWI2Njc5NzFhMjVhZjY0Nzg5MzU2MGEzMzFjOTYuLjAyN2Y4MmIw
OTI0ZDFiNjBlMzVkZjhmZWMzOGE3ODYxYjM1NjE2NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURp
c3BsYXlMaXN0UmVjb3JkZXJQcm94eS5jcHAKQEAgLTQ2OSw2ICs0NjksMTYgQEAgc3RkOjp1bmlx
dWVfcHRyPEdyYXBoaWNzQ29udGV4dD4gUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5Ojpj
cmVhdGVOZXN0ZWRDb24KICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVEaXNwbGF5TGlzdFJl
Y29yZGVyUHJveHk+KCp0aGlzLCBpbml0aWFsQ2xpcCwgaW5pdGlhbENUTSk7CiB9CiAKK1JlZlB0
cjxJbWFnZUJ1ZmZlcj4gUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5OjpjcmVhdGVJbWFn
ZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29u
c3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlKSBjb25zdAoreworICAgIGlmIChV
TkxJS0VMWSghbV9yZW5kZXJpbmdCYWNrZW5kKSkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgcmV0dXJuIG1fcmVu
ZGVyaW5nQmFja2VuZC0+Y3JlYXRlSW1hZ2VCdWZmZXIoc2l6ZSwgcmVuZGVyaW5nTW9kZSgpLCBy
ZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlz
cGxheUxpc3RSZWNvcmRlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5oCmluZGV4IGE0MThlZjJmYjAz
ZWIzZTIyMWNjZDdmNWE2NDE1NDgyZDcxYzM0NmEuLjA3ZjYzODE4NjI3ZWY5ZmIzMzA2OTFkZGE0
OGJlMmU0NDY3MTViMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJv
eHkuaApAQCAtMTQ1LDYgKzE0NSw4IEBAIHByaXZhdGU6CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiBjcmVhdGVOZXN0ZWRDb250ZXh0KGNvbnN0IFdlYkNv
cmU6OkZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9y
bSYgaW5pdGlhbENUTSkgZmluYWw7CiAKKyAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+
IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIGZsb2F0IHJlc29s
dXRpb25TY2FsZSA9IDEsIGNvbnN0IFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSYgPSBX
ZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSkgY29uc3QgZmluYWw7CisKICAg
ICBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgbV9kZXN0aW5hdGlvbkJ1ZmZl
cklkZW50aWZpZXI7CiAgICAgV2Vha1B0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gbV9pbWFnZUJ1
ZmZlcjsKICAgICBXZWFrUHRyPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eT4gbV9yZW5kZXJp
bmdCYWNrZW5kOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450853</attachid>
            <date>2022-02-03 19:28:52 -0800</date>
            <delta_ts>2022-02-04 11:21:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235758-20220203192851.patch</filename>
            <type>text/plain</type>
            <size>76281</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4OTkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTU5YjJjYWIxYzRmZDc0
MGMyMmYyYWY2YTczY2E1YjdiOWMyOTBlYS4uZTE3MjI5NjBhMWU3YTM1YWE3OTYyM2JlNmFlOWYx
MjMwMjA0NTdhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzNCBAQAorMjAyMi0wMi0wMyAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IE1vdmUgSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcigpIGFuZCBTVkdS
ZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlciB0byBHcmFwaGljc0NvbnRleHQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTc1OAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBnb2FsIG9m
IHRoaXMgcGF0Y2ggaXMgdG8gcmVjb3JkIHRoZSBkcmF3aW5nIGlmIHRoZSBjb25jcmV0ZSB0eXBl
IG9mIAorICAgICAgICB0aGUgR3JhcGhpY3NDb250ZXh0IGlzIFJlbW90ZURpc3BsYXlMaXN0UmVj
b3JkZXJQcm94eS4gQ3VycmVudGx5IGFsbCB0aGUKKyAgICAgICAgaW50ZXJtZWRpYXRlIGNvbXBh
dGlibGUgSW1hZ2VCdWZmZXJzIGFyZSBvZiB0eXBlIENvbmNyZXRlSW1hZ2VCdWZmZXIuCisgICAg
ICAgIFRoZSBkcmF3aW5nIHRvIHRoZXNlIEltYWdlQnVmZmVycyBzdGlsbCBoYXBwZW5zIGluIHRo
ZSBXZWJQcm9jZXNzLiBNb3Jlb3ZlcgorICAgICAgICB3aGVuIHdlIGNhbGwgZHJhd0ltYWdlQnVm
ZmVyKCkgZm9yIG9uZSBvZiB0aGVzZSBpbnRlcm1lZGlhdGUgSW1hZ2VCdWZmZXJzCisgICAgICAg
IHRvIGEgcmVtb3RlIEltYWdlQnVmZmVyLCB3ZSBzaW5rIHRoZSBpbnRlcm1lZGlhdGUgSW1hZ2VC
dWZmZXIgdG8gYSBOYXRpdmVJbWFnZQorICAgICAgICBhbmQgc2VuZCBpdCB0byBHUFVQcm9jZXNz
LgorCisgICAgICAgIFRvIGZpeCB0aGlzLCBHcmFwaGljc0NvbnRleHQgd2lsbCBwcm92aWRlIHRo
cmVlIGZ1bmN0aW9ucyBmb3IgY3JlYXRpbmcKKyAgICAgICAgdGhlIEltYWdlQnVmZmVyOgorCisg
ICAgICAgIDEuIEdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoKSAodmlydHVhbCk6
IENyZWF0ZXMgYW4gSW1hZ2VCdWZmZXIKKyAgICAgICAgICAgc2ltaWxhciB0byB0aGUgdW5kZXJs
eWluZyBJbWFnZUJ1ZmZlciBvZiB0aGUgR3JhcGhpY3NDb250ZXh0LiBCZWNhdXNlCisgICAgICAg
ICAgIFJlY29yZGVySW1wbCBhbmQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5IGFyZSBz
dXBlciBjbGFzc2VzIG9mCisgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dCwgdGhleSB3aWxsIG92
ZXJyaWRlIHRoaXMgbWV0aG9kIGFuZCByZXR1cm4gdGhlIGRlc2lyZWQKKyAgICAgICAgICAgdHlw
ZSBvZiBJbWFnZUJ1ZmZlci4KKworICAgICAgICAyLiBHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZUlt
YWdlQnVmZmVyKCkgKG5vbi12aXJ0dWFsKTogQ3JlYXRlcyBhIHNjYWxlZAorICAgICAgICAgICBJ
bWFnZUJ1ZmZlciBhbmQgc2V0cyB0aGUgY29udGV4dCBhY2NvcmRpbmdseS4gSXQgYWxsb3dzIGFs
c28gZm9yY2luZworICAgICAgICAgICBjcmVhdGluZyBhbiBpbi1wcm9jZXNzIENvbmNyZXRlSW1h
Z2VCdWZmZXIuIFRoaXMgaXMgY29udHJvbGxlZCBieSBhbgorICAgICAgICAgICBleHRyYSBwYXJh
bWV0ZXIgb2YgdGhlIGVudW0gdHlwZSBDcmVhdGVNZXRob2QuCisKKyAgICAgICAgMy4gR3JhcGhp
Y3NDb250ZXh0OjpjcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIoKSAodmlydHVhbCk6IFRha2Vz
IHRoZQorICAgICAgICAgICBzY2FsZUZhY3RvcigpIGludG8gY29uc2lkZXJhdGlvbiB3aGVuIGNy
ZWF0aW5nIHRoZSBJbWFnZUJ1ZmZlci4gQnkgCisgICAgICAgICAgIGRlZmF1bHQgdGhlIHR5cGUg
b2YgdGhlIEltYWdlQnVmZmVyIGlzIHRoZSBDb25jcmV0ZUltYWdlQnVmZmVyLgorICAgICAgICAg
ICBCZWNhdXNlIFJlY29yZCBpbmhlcml0cyBHcmFwaGljc0NvbnRleHQgYW5kIGJlY2F1c2UgaXQg
aXMgdGhlIGJhc2UKKyAgICAgICAgICAgY2xhc3Mgb2YgUmVjb3JkZXJJbXBsIGFuZCBSZW1vdGVE
aXNwbGF5TGlzdFJlY29yZGVyUHJveHksIGl0IHdpbGwgCisgICAgICAgICAgIG92ZXJyaWRlIHRo
aXMgZnVuY3Rpb24gdG8gcmV0dXJuIHRoZSBkZWZhdWx0IEltYWdlQnVmZmVyLgorCisgICAgICAg
IFR3byB2ZXJzaW9ucyBvZiB0aGVzZSBmdW5jdGlvbnMgYXJlIHByb3ZpZGVkOiBvbmUgdGFrZXMg
YSBGbG9hdFNpemUgYW5kCisgICAgICAgIHRoZSBvdGhlciB0YWtlcyBhIEZsb2F0UmVjY3QuIFRo
ZSBGbG9hdFJlY3QgdmVyc2lvbiBleHBhbmRzIHRoZSBmb3VyIGNvcm5lcnMgCisgICAgICAgIG9m
IHRoZSByZWN0YW5nbGUgdG8gZnVsbCBwaXhlbHMuCisKKyAgICAgICAgKiBodG1sL0N1c3RvbVBh
aW50Q2FudmFzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbVBhaW50Q2FudmFzOjpyZXBs
YXlEaXNwbGF5TGlzdCBjb25zdCk6CisgICAgICAgICogaHRtbC9DdXN0b21QYWludEltYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbVBhaW50SW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAg
ICAgICAgKiBodG1sL09mZnNjcmVlbkNhbnZhcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPZmZz
Y3JlZW5DYW52YXM6OnRyYW5zZmVyVG9JbWFnZUJpdG1hcCk6CisgICAgICAgIChXZWJDb3JlOjpP
ZmZzY3JlZW5DYW52YXM6OmNvbW1pdFRvUGxhY2Vob2xkZXJDYW52YXMpOgorICAgICAgICAqIGh0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZHJhd0ltYWdlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9jb2NvYS9UaGVtZUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd0Fw
cGxlUGF5QnV0dG9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3UGF0dGVybik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHcmFkaWVudEltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNjYWxlZEltYWdl
QnVmZmVyU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpzY2FsZWRJbWFnZUJ1ZmZlclJlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Y2xhbXBpbmdTY2FsZUZvckltYWdlQnVmZmVyU2l6ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnRpZ2h0SW1hZ2VCdWZmZXJTaXplIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y29tcGF0aWJsZUltYWdlQnVm
ZmVyU2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNyZWF0
ZUltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
Y3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y2xvbmUp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNvbXBhdGlibGVCdWZm
ZXJTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpjb21wYXRp
YmxlQnVmZmVySW5mbyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6
Y29weVJlY3RUb0J1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2Vu
ZXJhdGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmFtZWRJbWFnZUdlbmVyYXRlZElt
YWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9j
dW1lbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjp1cGRh
dGVDYWNoZWRJbWFnZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1h
Z2U6OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0RyYXdHbHlw
aHNSZWNvcmRlckNvcmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdHbHlwaHNSZWNv
cmRlcjo6ZHJhd09UU1ZHUnVuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVjb3JkZXI6OmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlciBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZWNvcmRlckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVy
SW1wbDo6Y3JlYXRlSW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6YXBwbHlJdGVtKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpUaGVtZU1h
Yzo6ZHJhd0NlbGxPckZvY3VzUmluZ1dpdGhWaWV3SW50b0NvbnRleHQpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpz
ZXR1cEZpbHRlcnMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6cGF0dGVybkZvckRlc2NyaXB0aW9uKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyRmlsdGVyczo6YWxsb2NhdGVCYWNraW5nU3RvcmVJZk5lZWRlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllckZpbHRlcnM6OmJlZ2luRmlsdGVyRWZmZWN0KToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmg6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclRoZW1lQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUNvY29hOjpw
YWludEFwcGxlUGF5QnV0dG9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMu
bW06CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRMaXN0QnV0dG9uRm9y
SW5wdXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50UHJvZ3Jlc3NC
YXIpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6YXBwbHlDbGlw
cGluZ1RvQ29udGV4dCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6
YXBwbHlSZXNvdXJjZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZUdyYWRpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZU1hc2tBbmRTd2FwQ29udGV4
dEZvclRleHRHcmFkaWVudCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZU1hc2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZU1hc2tl
cjo6YXBwbHlSZXNvdXJjZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZVBhdHRlcm4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VQYXR0
ZXJuOjpidWlsZFBhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VQ
YXR0ZXJuOjpjcmVhdGVUaWxlSW1hZ2UgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdS
ZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlcmluZ0NvbnRl
eHQ6OmJ1ZmZlckZvcmVncm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyaW5nQ29u
dGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZH
UmVuZGVyaW5nQ29udGV4dDo6Y2xlYXIyRFJvdGF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVJ
bWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2NhbGVkSW1hZ2VCdWZmZXJSZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OmNsYW1waW5nU2NhbGVGb3JJbWFnZUJ1ZmZlclNpemUpOgor
ICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRkVJbWFnZUVsZW1lbnQ6OmltYWdlQnVmZmVyRm9yRWZmZWN0IGNvbnN0KToKKyAgICAgICAg
KiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6
OmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKToKKwogMjAyMi0wMi0wMiAgU2FpZCBBYm91LUhhbGxh
d2EgIDxzYWlkQGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVIFByb2Nlc3NdIFJlbW92ZSBEaXNw
bGF5TGlzdDo6UmVwbGF5ZXI6OkRlbGVnYXRlIGFuZCBEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBs
OjpEZWxlZ2F0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCBjZGE2NDQwZTlmMGVlNGQzMDZlYjc3NmY2MGYxNTVlMWM2
NmQ2OTYxLi5iMmRlNTYxNDM2MGYyOGQ2MTk1OGQ5MmQ1ZmJhNDQzMGE2YTY2ZTg1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE2IEBACisyMDIyLTAyLTAzICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRA
YXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gTW92ZSBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyKCkgYW5kIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0
ZUltYWdlQnVmZmVyIHRvIEdyYXBoaWNzQ29udGV4dAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NzU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3Bs
YXlMaXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVEaXNwbGF5TGlzdFJl
Y29yZGVyOjpiZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcyk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5OjpjcmVhdGVJbWFnZUJ1
ZmZlciBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlz
cGxheUxpc3RSZWNvcmRlclByb3h5Lmg6CisKIDIwMjItMDItMDIgIFNhaWQgQWJvdS1IYWxsYXdh
ICA8c2FpZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXSBSZW1vdmUgRGlzcGxh
eUxpc3Q6OlJlcGxheWVyOjpEZWxlZ2F0ZSBhbmQgRGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6
RGVsZWdhdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRDYW52
YXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWludENhbnZhcy5jcHAKaW5kZXgg
MmMxYTNhYTZjNjU3OTNlYzZmNWQ4NGJkYTRlZjczZWM2OTY5OGVhMy4uNDA0MjkxMWQwN2JjNzc4
MzkwMzAxMzFkNzhkNzNhNTU3YjYzZDBlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9DdXN0b21QYWludENhbnZhcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21Q
YWludENhbnZhcy5jcHAKQEAgLTczLDcgKzczLDcgQEAgdm9pZCBDdXN0b21QYWludENhbnZhczo6
cmVwbGF5RGlzcGxheUxpc3QoR3JhcGhpY3NDb250ZXh0KiBjdHgpIGNvbnN0CiAgICAgLy8gRklY
TUU6IFVzaW5nIGFuIGludGVybWVkaWF0ZSBidWZmZXIgaXMgbm90IG5lZWRlZCBpZiB0aGVyZSBh
cmUgbm8gY29tcG9zaXRlIG9wZXJhdGlvbnMuCiAgICAgYXV0byBjbGlwQm91bmRzID0gY3R4LT5j
bGlwQm91bmRzKCk7CiAKLSAgICBhdXRvIGltYWdlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBh
dGlibGVCdWZmZXIoY2xpcEJvdW5kcy5zaXplKCksICpjdHgpOworICAgIGF1dG8gaW1hZ2UgPSBj
dHgtPmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihjbGlwQm91bmRzLnNpemUoKSk7CiAgICAg
aWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0N1c3RvbVBhaW50SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21Q
YWludEltYWdlLmNwcAppbmRleCBmNDcxOTk0NmM1OGUwNTliZTMzZGI3MWQzZjdiNmY2MDkyMGE1
Y2FjLi5mYjhhZTZiZmQ3MWYzZWY2MWEzNDBlMjcwMDE0MDM4ZTI3NjY5NzBmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0N1c3RvbVBhaW50SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRJbWFnZS5jcHAKQEAgLTE5OSw3ICsxOTksNyBAQCB2b2lk
IEN1c3RvbVBhaW50SW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdAogICAgIGFkanVzdGVkUGF0dGVybkNUTS5zY2FsZSgxLjAgLyB4
U2NhbGUsIDEuMCAvIHlTY2FsZSk7CiAgICAgYWRqdXN0ZWRTcmNSZWN0LnNjYWxlKHhTY2FsZSwg
eVNjYWxlKTsKIAotICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGli
bGVCdWZmZXIoYWRqdXN0ZWRTaXplLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgZGVz
dENvbnRleHQpOworICAgIGF1dG8gYnVmZmVyID0gZGVzdENvbnRleHQuY3JlYXRlQ29tcGF0aWJs
ZUltYWdlQnVmZmVyKGFkanVzdGVkU2l6ZSk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJl
dHVybjsKICAgICBkb0N1c3RvbVBhaW50KGJ1ZmZlci0+Y29udGV4dCgpLCBhZGp1c3RlZFNpemUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwCmluZGV4IDRjOWM4Y2ZmMThi
OWM3ZWExMmQxNDEzMTJjNjYwNjY2ZGNmMGM4NzkuLjg4ZDlmNzhjOWE1YzljYmIyMjA4Y2RjNzg5
NDExZGU4Mjc2NmMzMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVu
Q2FudmFzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAK
QEAgLTI4Myw3ICsyODMsNyBAQCBFeGNlcHRpb25PcjxSZWZQdHI8SW1hZ2VCaXRtYXA+PiBPZmZz
Y3JlZW5DYW52YXM6OnRyYW5zZmVyVG9JbWFnZUJpdG1hcCgpCiAgICAgICAgIC8vIEFzIHRoZSBj
YW52YXMgY29udGV4dCBzdGF0ZSBpcyBzdG9yZWQgaW4gR3JhcGhpY3NDb250ZXh0LCB3aGljaCBp
cyBvd25lZAogICAgICAgICAvLyBieSBidWZmZXIoKSwgdG8gYXZvaWQgcmVzZXR0aW5nIHRoZSBj
b250ZXh0IHN0YXRlLCB3ZSBoYXZlIHRvIG1ha2UgYSBjb3B5IGFuZAogICAgICAgICAvLyBjbGVh
ciB0aGUgb3JpZ2luYWwgYnVmZmVyIHJhdGhlciB0aGFuIHJldHVybmluZyB0aGUgb3JpZ2luYWwg
YnVmZmVyLgotICAgICAgICBhdXRvIGJ1ZmZlckNvcHkgPSBidWZmZXIoKS0+Y29weVJlY3RUb0J1
ZmZlcihGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBidWZmZXIoKS0+bG9naWNhbFNpemUoKSksIGJ1
ZmZlcigpLT5jb2xvclNwYWNlKCksICpkcmF3aW5nQ29udGV4dCgpKTsKKyAgICAgICAgYXV0byBi
dWZmZXJDb3B5ID0gYnVmZmVyKCktPmNsb25lKCk7CiAgICAgICAgIGRvd25jYXN0PE9mZnNjcmVl
bkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRD4oKm1fY29udGV4dCkuY2xlYXJDYW52YXMoKTsKICAg
ICAgICAgY2xlYXJDb3BpZWRJbWFnZSgpOwogCkBAIC00NTEsMTQgKzQ1MSwxMyBAQCB2b2lkIE9m
ZnNjcmVlbkNhbnZhczo6Y29tbWl0VG9QbGFjZWhvbGRlckNhbnZhcygpCiAgICAgICAgIG1fY29u
dGV4dC0+cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoKTsKIAogICAgIGlmIChtX3BsYWNl
aG9sZGVyRGF0YS0+YnVmZmVyUGlwZVNvdXJjZSkgewotICAgICAgICBhdXRvIGJ1ZmZlckNvcHkg
PSBpbWFnZUJ1ZmZlci0+Y29weVJlY3RUb0J1ZmZlcihGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBp
bWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
LCBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpKTsKLSAgICAgICAgaWYgKGJ1ZmZlckNvcHkpCisgICAg
ICAgIGlmIChhdXRvIGJ1ZmZlckNvcHkgPSBpbWFnZUJ1ZmZlci0+Y2xvbmUoKSkKICAgICAgICAg
ICAgIG1fcGxhY2Vob2xkZXJEYXRhLT5idWZmZXJQaXBlU291cmNlLT5oYW5kbGUoV1RGTW92ZShi
dWZmZXJDb3B5KSk7CiAgICAgfQogCiAgICAgTG9ja2VyIGxvY2tlciB7IG1fcGxhY2Vob2xkZXJE
YXRhLT5idWZmZXJMb2NrIH07CiAgICAgYm9vbCBzaG91bGRQdXNoQnVmZmVyID0gIW1fcGxhY2Vo
b2xkZXJEYXRhLT5wZW5kaW5nQ29tbWl0QnVmZmVyOwotICAgIG1fcGxhY2Vob2xkZXJEYXRhLT5w
ZW5kaW5nQ29tbWl0QnVmZmVyID0gaW1hZ2VCdWZmZXItPmNvcHlSZWN0VG9CdWZmZXIoRmxvYXRS
ZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2VCdWZmZXItPmxvZ2ljYWxTaXplKCkpLCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IoKSwgaW1hZ2VCdWZmZXItPmNvbnRleHQoKSk7CisgICAgbV9wbGFj
ZWhvbGRlckRhdGEtPnBlbmRpbmdDb21taXRCdWZmZXIgPSBpbWFnZUJ1ZmZlci0+Y2xvbmUoKTsK
ICAgICBpZiAobV9wbGFjZWhvbGRlckRhdGEtPnBlbmRpbmdDb21taXRCdWZmZXIgJiYgc2hvdWxk
UHVzaEJ1ZmZlcikKICAgICAgICAgcHVzaEJ1ZmZlclRvUGxhY2Vob2xkZXIoKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
REJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQmFzZS5jcHAKaW5kZXggNTUwZTY4YjI4NzE2MzhkMjA3YWNlYjIzMjc1NDkzZGVhNmI0
MTJjNi4uMjA1ZWU2MjE5ODJhZTFhOThkYmJhOWM2MGJhNjgwNDU2N2NjZjhlMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQmFzZS5jcHAKQEAgLTE2MTEsNyArMTYxMSw4IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRyYXdJbWFnZShDYW52YXNCYXNlJiBzb3VyY2VD
YW52CiAgICAgICAgIHJlcGFpbnRFbnRpcmVDYW52YXMgPSB0cnVlOwogICAgIH0gZWxzZSBpZiAo
c3RhdGUoKS5nbG9iYWxDb21wb3NpdGUgPT0gQ29tcG9zaXRlT3BlcmF0b3I6OkNvcHkpIHsKICAg
ICAgICAgaWYgKCZzb3VyY2VDYW52YXMgPT0gJmNhbnZhc0Jhc2UoKSkgewotICAgICAgICAgICAg
aWYgKGF1dG8gY29weSA9IGJ1ZmZlci0+Y29weVJlY3RUb0J1ZmZlcihzcmNSZWN0LCBjb2xvclNw
YWNlKCksICpjKSkgeworICAgICAgICAgICAgaWYgKGF1dG8gY29weSA9IGMtPmNyZWF0ZUNvbXBh
dGlibGVJbWFnZUJ1ZmZlcihzcmNSZWN0LnNpemUoKSwgY29sb3JTcGFjZSgpKSkgeworICAgICAg
ICAgICAgICAgIGNvcHktPmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIoKmJ1ZmZlciwgLXNyY1Jl
Y3QubG9jYXRpb24oKSk7CiAgICAgICAgICAgICAgICAgY2xlYXJDYW52YXMoKTsKICAgICAgICAg
ICAgICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoKmNvcHksIGRzdFJlY3QsIHsgeyB9LCBzcmNSZWN0
LnNpemUoKSB9LCB7IHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlLCBzdGF0ZSgpLmdsb2JhbEJsZW5k
IH0pOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvVGhlbWVDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1RoZW1l
Q29jb2EubW0KaW5kZXggZWNkNTBiNzBmZGJiZjZlOTgzZjNhNzE1NjUyN2IyMTA2ODg0ZmJmZS4u
ZTJiNDkwNGQ4Zjg2MjhkMzhiNjE3MGUwYTU4MDdjMzU1NjFjZjE1MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVGhlbWVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9UaGVtZUNvY29hLm1tCkBAIC0xMTAsNyArMTEwLDcgQEAgc3Rh
dGljIENHUERGUGFnZVJlZiBhcHBsZVBheUJ1dHRvbkxvZ29XaGl0ZSgpCiAKIHN0YXRpYyB2b2lk
IGRyYXdBcHBsZVBheUJ1dHRvbihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIENHUERGUGFnZVJl
ZiBwYWdlLCBjb25zdCBGbG9hdFNpemUmIHNpemUpCiB7Ci0gICAgYXV0byBpbWFnZUJ1ZmZlciA9
IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKHNpemUsIGNvbnRleHQpOworICAg
IGF1dG8gaW1hZ2VCdWZmZXIgPSBjb250ZXh0LmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihz
aXplKTsKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAppbmRleCA4MDI3
NDM1YWQyOTQ1NjYyOThhNzkxYjNhZjZhZmE5YmYyNzgxZTY4Li41NzQ1NDQ3YzhjNTRmZjg4YTkz
NjZmNTBmZWIzNjRkNzc4MGNiMDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCkBAIC0zNDcsNyArMzQ3LDcgQEAgdm9pZCBCaXRtYXBJ
bWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LAogICAgIH0KIAogICAgIGlmICghbV9jYWNoZWRJbWFnZSkgewotICAgICAgICBh
dXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGV4cGFuZGVk
SW50U2l6ZSh0aWxlUmVjdC5zaXplKCkpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwg
Y3R4dCk7CisgICAgICAgIGF1dG8gYnVmZmVyID0gY3R4dC5jcmVhdGVDb21wYXRpYmxlSW1hZ2VC
dWZmZXIoZXhwYW5kZWRJbnRTaXplKHRpbGVSZWN0LnNpemUoKSkpOwogICAgICAgICBpZiAoIWJ1
ZmZlcikKICAgICAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwCmluZGV4
IDUwZmUwYzQ2NjE0YjcwMmJhMTg2MWU3MzgwM2MxMDAyNWEwODA0YjQuLjYxYTM4MzIzM2NiNmVi
MWE5NGU5MWYxZmZlNDc3ZjJjY2RmMTUxMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAKQEAg
LTEwMyw3ICsxMDMsNyBAQCBJbWFnZURyYXdSZXN1bHQgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6
OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbAogCiB2b2lkIENyb3NzZmFk
ZUdlbmVyYXRlZEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNl
LCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBv
cHRpb25zKQogewotICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNp
emUoKSwgY29udGV4dC5yZW5kZXJpbmdNb2RlKCksIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBjb250
ZXh0LmNyZWF0ZUltYWdlQnVmZmVyKHNpemUoKSk7CiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAg
ICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFkaWVudEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYWRpZW50SW1hZ2UuY3BwCmluZGV4IGZlZjM2ZTU3YTY1YTE0ODY5MGRiMzBhMmMyYTU2ODRk
MDAwYzhhZGMuLmJkYTcwMTEwOThmYTUxN2E2NDQzMmFmZWNiZDA1M2MxZjk1OTVjNTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3Bw
CkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgR3JhZGllbnRJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhp
Y3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkCiAgICAgdW5zaWduZWQg
Z2VuZXJhdG9ySGFzaCA9IG1fZ3JhZGllbnQtPmhhc2goKTsKIAogICAgIGlmICghbV9jYWNoZWRJ
bWFnZSB8fCBtX2NhY2hlZEdlbmVyYXRvckhhc2ggIT0gZ2VuZXJhdG9ySGFzaCB8fCBtX2NhY2hl
ZEFkanVzdGVkU2l6ZSAhPSBhZGp1c3RlZFNpemUgfHwgIWFyZUVzc2VudGlhbGx5RXF1YWwoZGVz
dENvbnRleHQuc2NhbGVGYWN0b3IoKSwgbV9jYWNoZWRTY2FsZUZhY3RvcikpIHsKLSAgICAgICAg
YXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGFk
anVzdGVkU2l6ZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIGRlc3RDb250ZXh0KTsK
KyAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IGRlc3RDb250ZXh0LmNyZWF0ZUNvbXBhdGlibGVJ
bWFnZUJ1ZmZlcihhZGp1c3RlZFNpemUpOwogICAgICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAg
ICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCBhNDkyZTk4ZGEyODBjMjNlYzczNjMwN2Fk
ZTJkZGVmMzJiZmE0Y2VmLi43ZTNiNDY4YTgxNTAzN2Y4ZDQzMzJjYzE1ZjZlZjA1YjA3ZTVlNzA3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5jcHAKQEAgLTU1MSw2ICs1NTEsOTcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdCaWRpVGV4dChjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgVGV4dFJ1biYgcnVuLAog
ICAgIGJpZGlSdW5zLmNsZWFyKCk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgSW50U2l6ZSBzY2FsZWRJ
bWFnZUJ1ZmZlclNpemUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBjb25zdCBGbG9hdFNpemUmIHNj
YWxlKQoreworICAgIC8vIEVubGFyZ2UgdGhlIGJ1ZmZlciBzaXplIGlmIHRoZSBjb250ZXh0J3Mg
dHJhbnNmb3JtIGlzIHNjYWxpbmcgaXQgc28gd2UgbmVlZCBhIGhpZ2hlcgorICAgIC8vIHJlc29s
dXRpb24gdGhhbiBvbmUgcGl4ZWwgcGVyIHVuaXQuCisgICAgcmV0dXJuIGV4cGFuZGVkSW50U2l6
ZShzaXplICogc2NhbGUpOworfQorCitzdGF0aWMgaW5saW5lIEludFJlY3Qgc2NhbGVkSW1hZ2VC
dWZmZXJSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRTaXplJiBzY2FsZSkK
K3sKKyAgICBhdXRvIHNjYWxlZFJlY3QgPSByZWN0OworICAgIHNjYWxlZFJlY3Quc2NhbGUoc2Nh
bGUpOworICAgIHJldHVybiBlbmNsb3NpbmdJbnRSZWN0KHNjYWxlZFJlY3QpOworfQorCitzdGF0
aWMgaW5saW5lIEZsb2F0U2l6ZSBjbGFtcGluZ1NjYWxlRm9ySW1hZ2VCdWZmZXJTaXplKGNvbnN0
IEZsb2F0U2l6ZSYgc2l6ZSkKK3sKKyAgICBGbG9hdFNpemUgY2xhbXBpbmdTY2FsZSgxLCAxKTsK
KyAgICBJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcoc2l6ZSwgY2xhbXBpbmdTY2FsZSk7
CisgICAgcmV0dXJuIGNsYW1waW5nU2NhbGU7Cit9CisKK0Zsb2F0U2l6ZSBHcmFwaGljc0NvbnRl
eHQ6OnRpZ2h0SW1hZ2VCdWZmZXJTaXplKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3QgRmxv
YXRTaXplJiBzY2FsZSkgY29uc3QKK3sKKyAgICBhdXRvIHNjYWxlZFNpemUgPSBzaXplICogc2Nh
bGU7CisgICAgcmV0dXJuIHNpemUgLSAoZXhwYW5kZWRJbnRTaXplKHNjYWxlZFNpemUpIC0gcm91
bmRlZEludFNpemUoc2NhbGVkU2l6ZSkpICogKHNjYWxlZFNpemUgLSBmbG9vcmVkSW50U2l6ZShz
Y2FsZWRTaXplKSkgLyBzY2FsZTsKK30KKworSW50U2l6ZSBHcmFwaGljc0NvbnRleHQ6OmNvbXBh
dGlibGVJbWFnZUJ1ZmZlclNpemUoY29uc3QgRmxvYXRTaXplJiBzaXplKSBjb25zdAoreworICAg
IHJldHVybiBzY2FsZWRJbWFnZUJ1ZmZlclNpemUoc2l6ZSwgc2NhbGVGYWN0b3IoKSk7Cit9CisK
K1JlZlB0cjxJbWFnZUJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihj
b25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JT
cGFjZSwgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdNb2RlPiByZW5kZXJpbmdNb2RlKSBjb25zdAor
eworICAgIHJldHVybiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIHJlbmRlcmluZ01vZGUudmFs
dWVfb3IodGhpcy0+cmVuZGVyaW5nTW9kZSgpKSwgMSwgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6
OkJHUkE4KTsKK30KKworUmVmUHRyPEltYWdlQnVmZmVyPiBHcmFwaGljc0NvbnRleHQ6OmNyZWF0
ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzY2Fs
ZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBzdGQ6Om9wdGlvbmFs
PFJlbmRlcmluZ01vZGU+IHJlbmRlcmluZ01vZGUsIENyZWF0ZU1ldGhvZCBjcmVhdGVNZXRob2Qp
IGNvbnN0Cit7CisgICAgYXV0byBzY2FsZWRTaXplID0gc2NhbGVkSW1hZ2VCdWZmZXJTaXplKHNp
emUsIHNjYWxlKTsKKyAgICBpZiAoc2NhbGVkU2l6ZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgYXV0byBjbGFtcGluZ1NjYWxlID0gY2xhbXBpbmdTY2FsZUZvcklt
YWdlQnVmZmVyU2l6ZShzY2FsZWRTaXplKTsKKworICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gaW1h
Z2VCdWZmZXI7CisgICAgaWYgKGNyZWF0ZU1ldGhvZCA9PSBDcmVhdGVNZXRob2Q6OkJhc2UpCisg
ICAgICAgIGltYWdlQnVmZmVyID0gR3JhcGhpY3NDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihz
Y2FsZWRTaXplICogY2xhbXBpbmdTY2FsZSwgY29sb3JTcGFjZSwgcmVuZGVyaW5nTW9kZSk7Cisg
ICAgZWxzZQorICAgICAgICBpbWFnZUJ1ZmZlciA9IGNyZWF0ZUltYWdlQnVmZmVyKHNjYWxlZFNp
emUgKiBjbGFtcGluZ1NjYWxlLCBjb2xvclNwYWNlLCByZW5kZXJpbmdNb2RlKTsKKworICAgIGlm
ICghaW1hZ2VCdWZmZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgaW1hZ2VCdWZm
ZXItPmNvbnRleHQoKS5zY2FsZShzY2FsZSAqIGNsYW1waW5nU2NhbGUpOworICAgIHJldHVybiBp
bWFnZUJ1ZmZlcjsKK30KKworUmVmUHRyPEltYWdlQnVmZmVyPiBHcmFwaGljc0NvbnRleHQ6OmNy
ZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRTaXplJiBz
Y2FsZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBzdGQ6Om9wdGlv
bmFsPFJlbmRlcmluZ01vZGU+IHJlbmRlcmluZ01vZGUsIENyZWF0ZU1ldGhvZCBjcmVhdGVNZXRo
b2QpIGNvbnN0Cit7CisgICAgYXV0byBzY2FsZWRSZWN0ID0gc2NhbGVkSW1hZ2VCdWZmZXJSZWN0
KHJlY3QsIHNjYWxlKTsKKyAgICBpZiAoc2NhbGVkUmVjdC5pc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworCisgICAgYXV0byBjbGFtcGluZ1NjYWxlID0gY2xhbXBpbmdTY2FsZUZv
ckltYWdlQnVmZmVyU2l6ZShzY2FsZWRSZWN0LnNpemUoKSk7CisKKyAgICBSZWZQdHI8SW1hZ2VC
dWZmZXI+IGltYWdlQnVmZmVyOworICAgIGlmIChjcmVhdGVNZXRob2QgPT0gQ3JlYXRlTWV0aG9k
OjpCYXNlKQorICAgICAgICBpbWFnZUJ1ZmZlciA9IEdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlSW1h
Z2VCdWZmZXIoc2NhbGVkUmVjdC5zaXplKCkgKiBjbGFtcGluZ1NjYWxlLCBjb2xvclNwYWNlLCBy
ZW5kZXJpbmdNb2RlKTsKKyAgICBlbHNlCisgICAgICAgIGltYWdlQnVmZmVyID0gY3JlYXRlSW1h
Z2VCdWZmZXIoc2NhbGVkUmVjdC5zaXplKCkgKiBjbGFtcGluZ1NjYWxlLCBjb2xvclNwYWNlLCBy
ZW5kZXJpbmdNb2RlKTsKKworICAgIGlmICghaW1hZ2VCdWZmZXIpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgaW1hZ2VCdWZmZXItPmNvbnRleHQoKS5zY2FsZShjbGFtcGluZ1NjYWxl
KTsKKyAgICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnRyYW5zbGF0ZSgtc2NhbGVkUmVjdC5sb2Nh
dGlvbigpKTsKKyAgICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnNjYWxlKHNjYWxlKTsKKyAgICBy
ZXR1cm4gaW1hZ2VCdWZmZXI7Cit9CisKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gR3JhcGhpY3NDb250
ZXh0OjpjcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBj
b25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIHN0ZDo6b3B0aW9uYWw8UmVu
ZGVyaW5nTW9kZT4gcmVuZGVyaW5nTW9kZSkgY29uc3QKK3sKKyAgICByZXR1cm4gY3JlYXRlSW1h
Z2VCdWZmZXIoc2l6ZSwgc2NhbGVGYWN0b3IoKSwgY29sb3JTcGFjZSwgcmVuZGVyaW5nTW9kZSwg
Q3JlYXRlTWV0aG9kOjpCYXNlKTsKK30KKworUmVmUHRyPEltYWdlQnVmZmVyPiBHcmFwaGljc0Nv
bnRleHQ6OmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHJlY3Qs
IGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgc3RkOjpvcHRpb25hbDxS
ZW5kZXJpbmdNb2RlPiByZW5kZXJpbmdNb2RlKSBjb25zdAoreworICAgIHJldHVybiBjcmVhdGVJ
bWFnZUJ1ZmZlcihyZWN0LCBzY2FsZUZhY3RvcigpLCBjb2xvclNwYWNlLCByZW5kZXJpbmdNb2Rl
LCBDcmVhdGVNZXRob2Q6OkJhc2UpOworfQorCiBJbWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250
ZXh0OjpkcmF3SW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlv
biwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25zKQogewog
ICAgIHJldHVybiBkcmF3SW1hZ2UoaW1hZ2UsIEZsb2F0UmVjdChkZXN0aW5hdGlvbiwgaW1hZ2Uu
c2l6ZSgpKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2Uuc2l6ZSgpKSwgaW1hZ2VQYWlu
dGluZ09wdGlvbnMpOwpAQCAtNjY4LDcgKzc1OSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpj
bGlwT3V0Um91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcmVjdCkKIAogR3JhcGhp
Y3NDb250ZXh0OjpDbGlwVG9EcmF3aW5nQ29tbWFuZHNSZXN1bHQgR3JhcGhpY3NDb250ZXh0Ojpj
bGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBGdW5jdGlvbjx2b2lkKEdyYXBoaWNz
Q29udGV4dCYpPiYmIGRyYXdpbmdGdW5jdGlvbikKIHsKLSAgICBhdXRvIGltYWdlQnVmZmVyID0g
SW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoZGVzdGluYXRpb24uc2l6ZSgpLCBj
b2xvclNwYWNlLCAqdGhpcyk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IGNyZWF0ZUNvbXBhdGli
bGVJbWFnZUJ1ZmZlcihkZXN0aW5hdGlvbi5zaXplKCksIGNvbG9yU3BhY2UpOwogICAgIGlmICgh
aW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybiBDbGlwVG9EcmF3aW5nQ29tbWFuZHNSZXN1bHQ6
OkZhaWxlZFRvQ3JlYXRlSW1hZ2VCdWZmZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggY2Y3MDkyZGUzM2JjNWI3Mjhh
ZDQ2MWIwZmMwMjE3N2Y2OWVlZmYzMi4uNDk3ZGQxMWZiZjc3ZWMyMzJlMzJkNTc3ODQ0M2NlZWRi
OWI4MmVmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmgKQEAgLTQxNiw2ICs0MTYsMTkgQEAgcHVibGljOgogCiAgICAgLy8gSW1h
Z2VzLCBQYXR0ZXJucywgYW5kIE1lZGlhCiAKKyAgICBlbnVtIGNsYXNzIENyZWF0ZU1ldGhvZCA6
IGJvb2wgeyBEZWZhdWx0LCBCYXNlIH07CisKKyAgICBGbG9hdFNpemUgdGlnaHRJbWFnZUJ1ZmZl
clNpemUoY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRmxvYXRTaXplJiBzY2FsZSkgY29uc3Q7Cisg
ICAgSW50U2l6ZSBjb21wYXRpYmxlSW1hZ2VCdWZmZXJTaXplKGNvbnN0IEZsb2F0U2l6ZSYpIGNv
bnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNy
ZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JT
cGFjZSYgPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgc3RkOjpvcHRpb25hbDxSZW5k
ZXJpbmdNb2RlPiA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7CisKKyAgICBSZWZQdHI8SW1hZ2VCdWZm
ZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0U2l6ZSYg
c2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgPSBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IoKSwgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdNb2RlPiA9IHN0ZDo6bnVsbG9wdCwg
Q3JlYXRlTWV0aG9kID0gQ3JlYXRlTWV0aG9kOjpEZWZhdWx0KSBjb25zdDsKKyAgICBSZWZQdHI8
SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZs
b2F0U2l6ZSYgc2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgPSBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IoKSwgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdNb2RlPiA9IHN0ZDo6
bnVsbG9wdCwgQ3JlYXRlTWV0aG9kID0gQ3JlYXRlTWV0aG9kOjpEZWZhdWx0KSBjb25zdDsKKwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVDb21w
YXRpYmxlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRGVzdGluYXRpb25Db2xv
clNwYWNlJiA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBzdGQ6Om9wdGlvbmFsPFJl
bmRlcmluZ01vZGU+ID0gc3RkOjpudWxsb3B0KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
aXJ0dWFsIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyKGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgPSBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IoKSwgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdNb2RlPiA9IHN0ZDo6
bnVsbG9wdCkgY29uc3Q7CisKICAgICB2aXJ0dWFsIHZvaWQgZHJhd05hdGl2ZUltYWdlKE5hdGl2
ZUltYWdlJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgPSB7IH0pID0gMDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIEltYWdlRHJhd1Jlc3VsdCBkcmF3
SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmID0geyBJbWFnZU9yaWVudGF0aW9uOjpGcm9tSW1hZ2UgfSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAKaW5kZXgg
MDE5M2JmYjBmOTZjN2QzNDA1M2U3NjhhMGMyNThmYzEyNTc4MGZkMy4uNmQxYjI3ZjcyMTNiN2Uy
YThjOGFjMTMxNDM4NGUyYjM2ZDQwOTNiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDkgRGlyayBTY2h1bHplIDxrcml0QHdlYmtpdC5vcmc+CiAgKiBDb3B5cmln
aHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTEuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTcyLDczICs3Miwx
NCBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGUoY29uc3QgRmxvYXRT
aXplJiBzaXplLCBSZW5kZXJpbmdNb2RlIHJlbgogICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsKIH0K
IAotUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZl
cihjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkK
K1JlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNsb25lKCkKIHsKLSAgICBpZiAoc2l6
ZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgSW50U2l6ZSBzY2Fs
ZWRTaXplID0gSW1hZ2VCdWZmZXI6OmNvbXBhdGlibGVCdWZmZXJTaXplKHNpemUsIGNvbnRleHQp
OwotCi0gICAgUmVmUHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlcjsKLQotICAgIGlmIChjb250
ZXh0LnJlbmRlcmluZ01vZGUoKSA9PSBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCkKLSAgICAg
ICAgaW1hZ2VCdWZmZXIgPSBBY2NlbGVyYXRlZEltYWdlQnVmZmVyOjpjcmVhdGUoc2NhbGVkU2l6
ZSwgY29udGV4dCk7Ci0gICAgCi0gICAgaWYgKCFpbWFnZUJ1ZmZlcikKLSAgICAgICAgaW1hZ2VC
dWZmZXIgPSBVbmFjY2VsZXJhdGVkSW1hZ2VCdWZmZXI6OmNyZWF0ZShzY2FsZWRTaXplLCBjb250
ZXh0KTsKLQotICAgIGlmICghaW1hZ2VCdWZmZXIpCi0gICAgICAgIHJldHVybiBudWxscHRyOwot
Ci0gICAgaW1hZ2VCdWZmZXItPmNvbnRleHQoKS5zY2FsZShzY2FsZWRTaXplIC8gc2l6ZSk7Ci0g
ICAgcmV0dXJuIGltYWdlQnVmZmVyOwotfQotCi0vLyBUaGlzIGlzIHVzZWZ1bCB3aGVuIHlvdSBu
ZWVkIHRvIG1ha2Ugc3VyZSB0aGUgcGl4ZWwgZ3JpZCBvZiB0aGUgSW1hZ2VCdWZmZXIgYWxpZ25z
IHdpdGggdGhlIHBpeGVsIGdyaWQgb2YgdGhlIGNvbnRleHQuCi0vLyBTaW1wbHkgc2F5aW5nIGNy
ZWF0ZUNvbXBhdGlibGVCdWZmZXIocmVjdC5zaXplKCksIGNvbnRleHQpIGlzbid0IHN1ZmZpY2ll
bnQgaW4gdGhpcyBzaXR1YXRpb24sIGJlY2F1c2UgcmVjdC5sb2NhdGlvbigpIG1heSBub3QgbGll
IG9uIGEgcGl4ZWwgYm91bmRhcnkuCi0vLyBJbiB0aGlzIHNpdHVhdGlvbiwgd2UgaGF2ZSB0byBp
bmZsYXRlIGJvdGggdGhlIGxlZnQgc2lkZSBhbmQgdGhlIHJpZ2h0IHNpZGUsIHdoaWNoIGNhbiBs
ZWFkIHRvIGRpZmZlcmVudCByZXN1bHRzIHRoYW4KLS8vIGNyZWF0ZUNvbXBhdGlibGVCdWZmZXIo
cmVjdC5zaXplKCksIGNvbnRleHQpIHdvdWxkIGhhdmUgcHJvZHVjZWQuCi1hdXRvIEltYWdlQnVm
ZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3Qg
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSAtPiBzdGQ6Om9wdGlvbmFsPENvbXBhdGlibGVCdWZm
ZXJEZXNjcmlwdGlvbj4KLXsKLSAgICBpZiAocmVjdC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7Ci0KLSAgICBhdXRvIGluZm8gPSBJbWFnZUJ1ZmZlcjo6Y29tcGF0aWJs
ZUJ1ZmZlckluZm8ocmVjdCwgY29udGV4dCk7Ci0KLSAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGlt
YWdlQnVmZmVyOwotCi0gICAgaWYgKGNvbnRleHQucmVuZGVyaW5nTW9kZSgpID09IFJlbmRlcmlu
Z01vZGU6OkFjY2VsZXJhdGVkKQotICAgICAgICBpbWFnZUJ1ZmZlciA9IEFjY2VsZXJhdGVkSW1h
Z2VCdWZmZXI6OmNyZWF0ZShpbmZvLnBoeXNpY2FsU2l6ZUluRGV2aWNlQ29vcmRpbmF0ZXMsIGNv
bnRleHQpOwotICAgIAotICAgIGlmICghaW1hZ2VCdWZmZXIpCi0gICAgICAgIGltYWdlQnVmZmVy
ID0gVW5hY2NlbGVyYXRlZEltYWdlQnVmZmVyOjpjcmVhdGUoaW5mby5waHlzaWNhbFNpemVJbkRl
dmljZUNvb3JkaW5hdGVzLCBjb250ZXh0KTsKLQotICAgIGlmICghaW1hZ2VCdWZmZXIpCi0gICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnNj
YWxlKGluZm8uc2NhbGUpOwotICAgIGltYWdlQnVmZmVyLT5jb250ZXh0KCkudHJhbnNsYXRlKC1p
bmZvLmluZmxhdGVkUmVjdEluVXNlckNvb3JkaW5hdGVzLmxvY2F0aW9uKCkpOwotICAgIHJldHVy
biB7IHsgaW1hZ2VCdWZmZXIucmVsZWFzZU5vbk51bGwoKSwgaW5mby5pbmZsYXRlZFJlY3RJblVz
ZXJDb29yZGluYXRlcyB9IH07Ci19Ci0KLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6
OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBjb25zdCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCkKLXsKLSAgICBpZiAoc2l6ZS5pc0VtcHR5KCkpCisgICAgYXV0byBjbG9uZSA9IGNvbnRl
eHQoKS5jcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIobG9naWNhbFNpemUoKSwgY29sb3JTcGFj
ZSgpKTsKKyAgICBpZiAoIWNsb25lKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIElu
dFNpemUgc2NhbGVkU2l6ZSA9IEltYWdlQnVmZmVyOjpjb21wYXRpYmxlQnVmZmVyU2l6ZShzaXpl
LCBjb250ZXh0KTsKLQotICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
Q29tcGF0aWJsZUJ1ZmZlcihzY2FsZWRTaXplLCAxLCBjb2xvclNwYWNlLCBjb250ZXh0KTsKLSAg
ICBpZiAoIWltYWdlQnVmZmVyKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGltYWdl
QnVmZmVyLT5jb250ZXh0KCkuc2NhbGUoc2NhbGVkU2l6ZSAvIHNpemUpOwotICAgIHJldHVybiBp
bWFnZUJ1ZmZlcjsKLX0KLQotUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
Q29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IHJlc29sdXRpb25T
Y2FsZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBjb25zdCBHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQpCi17Ci0gICAgcmV0dXJuIEltYWdlQnVmZmVyOjpjcmVhdGUo
c2l6ZSwgY29udGV4dC5yZW5kZXJpbmdNb2RlKCksIHJlc29sdXRpb25TY2FsZSwgY29sb3JTcGFj
ZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBjbG9uZS0+Y29udGV4dCgpLmRyYXdJbWFnZUJ1
ZmZlcigqdGhpcywgRmxvYXRQb2ludCgpKTsKKyAgICByZXR1cm4gY2xvbmU7CiB9CiAKIGJvb2wg
SW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKQEAg
LTE4NSw1OCArMTI2LDYgQEAgRmxvYXRSZWN0IEltYWdlQnVmZmVyOjpjbGFtcGVkUmVjdChjb25z
dCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgcmV0dXJuIEZsb2F0UmVjdChyZWN0LmxvY2F0aW9uKCks
IGNsYW1wZWRTaXplKHJlY3Quc2l6ZSgpKSk7CiB9CiAKLUludFNpemUgSW1hZ2VCdWZmZXI6OmNv
bXBhdGlibGVCdWZmZXJTaXplKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3QgR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0KQotewotICAgIC8vIEVubGFyZ2UgdGhlIGJ1ZmZlciBzaXplIGlmIHRo
ZSBjb250ZXh0J3MgdHJhbnNmb3JtIGlzIHNjYWxpbmcgaXQgc28gd2UgbmVlZCBhIGhpZ2hlcgot
ICAgIC8vIHJlc29sdXRpb24gdGhhbiBvbmUgcGl4ZWwgcGVyIHVuaXQuCi0gICAgcmV0dXJuIGV4
cGFuZGVkSW50U2l6ZShzaXplICogY29udGV4dC5zY2FsZUZhY3RvcigpKTsKLX0KLQotYXV0byBJ
bWFnZUJ1ZmZlcjo6Y29tcGF0aWJsZUJ1ZmZlckluZm8oY29uc3QgRmxvYXRSZWN0JiByZWN0LCBj
b25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIC0+IENvbXBhdGlibGVCdWZmZXJJbmZvCi17
Ci0gICAgYXV0byBzY2FsZUZhY3RvciA9IGNvbnRleHQuc2NhbGVGYWN0b3IoKTsKLSAgICBhdXRv
IHNjYWxlZFJlY3QgPSByZWN0OwotICAgIHNjYWxlZFJlY3Quc2NhbGUoc2NhbGVGYWN0b3IpOwot
ICAgIGF1dG8gaW5mbGF0ZWRTY2FsZWRSZWN0ID0gZW5jbG9zaW5nSW50UmVjdChzY2FsZWRSZWN0
KTsKLSAgICBhdXRvIGluZmxhdGVkUmVjdEluVXNlckNvb3JkaW5hdGVzID0gRmxvYXRSZWN0KGlu
ZmxhdGVkU2NhbGVkUmVjdCk7Ci0KLSAgICAvLyBXZSBkb24ndCB3YW50IHRvIGFsbG9jYXRlIGh1
Z2UgSW1hZ2VCdWZmZXJzIGJlY2F1c2UgdGhleSBjYW4gdGFrZSBhIGxvdCBvZiBtZW1vcnksCi0g
ICAgLy8gc28gaWYgdGhlIHNpemUgd291bGQgaGF2ZSBiZWVuIHRvbyBiaWcsIGRlY3JlYXNlIHJl
c29sdXRpb24gYW5kIHNjYWxlIHRoZSByZXN1bHRpbmcgY29udGV4dC4KLSAgICAvLyBUaGlzIHdp
bGwgbWVhbiB0aGF0IHRoZSBJbWFnZUJ1ZmZlciB3aWxsIGxvc2UgcXVhbGl0eSwgYnV0IHdpbGwg
c3RpbGwgZ2VuZXJhbGx5IGxvb2sgY29ycmVjdC4KLSAgICBjb25zdGV4cHIgaW50IG1heERpbWVu
c2lvbiA9IDQwOTY7Ci0gICAgaWYgKGluZmxhdGVkU2NhbGVkUmVjdC53aWR0aCgpID4gbWF4RGlt
ZW5zaW9uKSB7Ci0gICAgICAgIC8vIFRoZSBwaXhlbCBncmlkcyB3b24ndCBhbGlnbiBhbnkgbW9y
ZSwgc28gdGhlcmUncyBubyBuZWVkIHRvIHRyeSB0byBoYW5kbGUgZnJhY3Rpb25zIG9mIHBpeGVs
cy4KLSAgICAgICAgaW5mbGF0ZWRTY2FsZWRSZWN0LnNldFdpZHRoKG1heERpbWVuc2lvbik7Ci0g
ICAgICAgIGluZmxhdGVkUmVjdEluVXNlckNvb3JkaW5hdGVzLnNjYWxlKG1heERpbWVuc2lvbiAv
IGluZmxhdGVkUmVjdEluVXNlckNvb3JkaW5hdGVzLndpZHRoKCksIDEpOwotICAgICAgICBzY2Fs
ZUZhY3Rvci5zZXRXaWR0aChtYXhEaW1lbnNpb24gLyByZWN0LndpZHRoKCkpOwotICAgIH0KLSAg
ICBpZiAoaW5mbGF0ZWRTY2FsZWRSZWN0LmhlaWdodCgpID4gbWF4RGltZW5zaW9uKSB7Ci0gICAg
ICAgIC8vIFRoZSBwaXhlbCBncmlkcyB3b24ndCBhbGlnbiBhbnkgbW9yZSwgc28gdGhlcmUncyBu
byBuZWVkIHRvIHRyeSB0byBoYW5kbGUgZnJhY3Rpb25zIG9mIHBpeGVscy4KLSAgICAgICAgaW5m
bGF0ZWRTY2FsZWRSZWN0LnNldEhlaWdodChtYXhEaW1lbnNpb24pOwotICAgICAgICBpbmZsYXRl
ZFJlY3RJblVzZXJDb29yZGluYXRlcy5zY2FsZSgxLCBtYXhEaW1lbnNpb24gLyBpbmZsYXRlZFJl
Y3RJblVzZXJDb29yZGluYXRlcy5oZWlnaHQoKSk7Ci0gICAgICAgIHNjYWxlRmFjdG9yLnNldEhl
aWdodChtYXhEaW1lbnNpb24gLyByZWN0LmhlaWdodCgpKTsKLSAgICB9Ci0KLSAgICBhdXRvIHBo
eXNpY2FsU2l6ZUluRGV2aWNlQ29vcmRpbmF0ZXMgPSBpbmZsYXRlZFNjYWxlZFJlY3Quc2l6ZSgp
OwotICAgIGluZmxhdGVkUmVjdEluVXNlckNvb3JkaW5hdGVzLnNjYWxlKDEuMGYgLyBzY2FsZUZh
Y3Rvcik7Ci0gICAgcmV0dXJuIHsgV1RGTW92ZShwaHlzaWNhbFNpemVJbkRldmljZUNvb3JkaW5h
dGVzKSwgV1RGTW92ZShpbmZsYXRlZFJlY3RJblVzZXJDb29yZGluYXRlcyksIHNjYWxlRmFjdG9y
IH07Ci19Ci0KLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNvcHlSZWN0VG9CdWZm
ZXIoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNv
bG9yU3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKLXsKLSAgICBpZiAocmVj
dC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgSW50U2l6ZSBzY2Fs
ZWRTaXplID0gSW1hZ2VCdWZmZXI6OmNvbXBhdGlibGVCdWZmZXJTaXplKHJlY3Quc2l6ZSgpLCBj
b250ZXh0KTsKLQotICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGli
bGVCdWZmZXIoc2NhbGVkU2l6ZSwgMSwgY29sb3JTcGFjZSwgY29udGV4dCk7Ci0gICAgaWYgKCFi
dWZmZXIpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgYnVmZmVyLT5jb250ZXh0KCku
ZHJhd0ltYWdlQnVmZmVyKCp0aGlzLCAtcmVjdC5sb2NhdGlvbigpKTsKLSAgICByZXR1cm4gYnVm
ZmVyOwotfQotCiBSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVyOjpzaW5rSW50b05hdGl2
ZUltYWdlKFJlZlB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIpCiB7CiAgICAgcmV0dXJuIGlt
YWdlQnVmZmVyLT5zaW5rSW50b05hdGl2ZUltYWdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAppbmRleCA0YjcxZjIzNTNjOGQwY2Q4ZWRmNGFm
NWU1OTI2YjdkZTI5MmM4YTYyLi5lNWNlZjdiZDE2NzZlOTM1OTQwNTA2OTdhNGNlODZjZjk2ZWYy
NGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVy
LmgKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2IE5pa29sYXMgWmlt
bWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIw
MjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEw
IFRvcmNoIE1vYmlsZSAoQmVpamluZykgQ28uIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKQEAgLTUwLDE1ICs1MCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiwg
UmVuZGVyaW5nTW9kZSwgU2hvdWxkVXNlRGlzcGxheUxpc3QsIFJlbmRlcmluZ1B1cnBvc2UsIGZs
b2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgUGl4ZWxG
b3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqID0gbnVsbHB0cik7CiAgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRl
cmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNw
YWNlJiwgUGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqID0gbnVsbHB0cik7CiAKLSAgICAv
LyBDcmVhdGUgYW4gaW1hZ2UgYnVmZmVyIGNvbXBhdGlibGUgd2l0aCB0aGUgY29udGV4dCwgd2l0
aCBzdWl0YWJsZSByZXNvbHV0aW9uIGZvciBkcmF3aW5nIGludG8gdGhlIGJ1ZmZlciBhbmQgdGhl
biBpbnRvIHRoaXMgY29udGV4dC4KLSAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVh
dGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEdyYXBoaWNzQ29udGV4
dCYpOwotICAgIHN0cnVjdCBDb21wYXRpYmxlQnVmZmVyRGVzY3JpcHRpb24gewotICAgICAgICBS
ZWY8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyOwotICAgICAgICBGbG9hdFJlY3QgaW5mbGF0ZWRS
ZWN0SW5Vc2VyQ29vcmRpbmF0ZXM7Ci0gICAgfTsKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxD
b21wYXRpYmxlQnVmZmVyRGVzY3JpcHRpb24+IGNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3Qg
RmxvYXRSZWN0JiByZWN0SW5Vc2VyQ29vcmRpbmF0ZXMsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYp
OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUNv
bXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNw
YWNlJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7Ci0gICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1
ZmZlcj4gY3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBmbG9hdCByZXNv
bHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIGNvbnN0IEdyYXBoaWNz
Q29udGV4dCYpOworICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY2xvbmUoKTsKIAogICAgIC8vIFRo
ZXNlIGZ1bmN0aW9ucyBhcmUgdXNlZCB3aGVuIGNsYW1waW5nIHRoZSBJbWFnZUJ1ZmZlciB3aGlj
aCBpcyBjcmVhdGVkIGZvciBmaWx0ZXIsIG1hc2tlciBvciBjbGlwcGVyLgogICAgIHN0YXRpYyBi
b29sIHNpemVOZWVkc0NsYW1waW5nKGNvbnN0IEZsb2F0U2l6ZSYpOwpAQCAtNjcsMTUgKzU5LDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBGbG9hdFNpemUgY2xhbXBlZFNpemUoY29uc3QgRmxvYXRT
aXplJiwgRmxvYXRTaXplJiBzY2FsZSk7CiAgICAgc3RhdGljIEZsb2F0UmVjdCBjbGFtcGVkUmVj
dChjb25zdCBGbG9hdFJlY3QmKTsKIAotICAgIHN0YXRpYyBJbnRTaXplIGNvbXBhdGlibGVCdWZm
ZXJTaXplKGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOwotICAgIHN0
cnVjdCBDb21wYXRpYmxlQnVmZmVySW5mbyB7Ci0gICAgICAgIEludFNpemUgcGh5c2ljYWxTaXpl
SW5EZXZpY2VDb29yZGluYXRlczsKLSAgICAgICAgRmxvYXRSZWN0IGluZmxhdGVkUmVjdEluVXNl
ckNvb3JkaW5hdGVzOwotICAgICAgICBGbG9hdFNpemUgc2NhbGU7Ci0gICAgfTsKLSAgICBzdGF0
aWMgQ29tcGF0aWJsZUJ1ZmZlckluZm8gY29tcGF0aWJsZUJ1ZmZlckluZm8oY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7Ci0gICAgCi0gICAgV0VCQ09SRV9FWFBPUlQg
dmlydHVhbCB+SW1hZ2VCdWZmZXIoKSA9IGRlZmF1bHQ7CisgICAgdmlydHVhbCB+SW1hZ2VCdWZm
ZXIoKSA9IGRlZmF1bHQ7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0QmFja2VuZChzdGQ6OnVuaXF1
ZV9wdHI8SW1hZ2VCdWZmZXJCYWNrZW5kPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFy
QmFja2VuZCgpID0gMDsKQEAgLTExOSw5ICsxMDMsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBS
ZWZQdHI8SW1hZ2U+IGNvcHlJbWFnZShCYWNraW5nU3RvcmVDb3B5ID0gQ29weUJhY2tpbmdTdG9y
ZSwgUHJlc2VydmVSZXNvbHV0aW9uID0gUHJlc2VydmVSZXNvbHV0aW9uOjpObykgY29uc3QgPSAw
OwogICAgIHZpcnR1YWwgUmVmUHRyPEltYWdlPiBmaWx0ZXJlZEltYWdlKEZpbHRlciYpID0gMDsK
IAotICAgIC8vIENyZWF0ZSBhbiBpbWFnZSBidWZmZXIgY29tcGF0aWJsZSB3aXRoIHRoZSBjb250
ZXh0IGFuZCBjb3B5IHJlY3QgZnJvbSB0aGlzIGJ1ZmZlciBpbnRvIHRoaXMgbmV3IG9uZS4KLSAg
ICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNvcHlSZWN0VG9CdWZmZXIoY29uc3QgRmxvYXRSZWN0Jiwg
Y29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7Ci0K
ICAgICB2aXJ0dWFsIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QgPSBGbG9hdFJlY3QoMCwgMCwgLTEs
IC0xKSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBw
YXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXpl
JiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pID0gMDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVy
YXRlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1h
Z2VHZW5lcmF0ZWRJbWFnZS5jcHAKaW5kZXggNmZmYzI4MmI5Y2M3NTA0MDg4OGNiMzY0ZmIzMzAy
MDJmY2IwM2JkMC4uMzcwYzdkYzI4OTZmMzk2MmNiM2VkNTA5ODJkYWI2OTk3NGY2MzJjNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVy
YXRlZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1l
ZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwCkBAIC02NSw3ICs2NSw3IEBAIEltYWdlRHJhd1Jlc3Vs
dCBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBGCiB2b2lkIE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6ZHJhd1BhdHRlcm4oR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3Jt
LCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICNpZiBVU0UoTkVXX1RIRU1FKQot
ICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZl
cihzaXplKCksIGNvbnRleHQpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBjb250ZXh0LmNyZWF0
ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihzaXplKCkpOwogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAg
ICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAppbmRleCAwZTA0Y2JiYzQyZTI3YmNjOWE1
MzRmZDBmYWRjMjA3ZmVjZDMxYmQxLi41YTZjY2M4Njc0ZGFkOTIyODVjYmIxNjQ2NGQ1NzY3MmMw
MmI3NjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Q
REZEb2N1bWVudEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9QREZEb2N1bWVudEltYWdlLmNwcApAQCAtMjMyLDE0ICsyMzIsMTUgQEAgdm9pZCBQREZE
b2N1bWVudEltYWdlOjp1cGRhdGVDYWNoZWRJbWFnZUlmTmVlZGVkKEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QKIAogICAgIC8vIENhY2hlIHRoZSBQREYgaW1hZ2Ugb25seSBpZiB0aGUg
c2l6ZSBvZiB0aGUgbmV3IGltYWdlIHdvbid0IGV4Y2VlZCB0aGUgY2FjaGUgdGhyZXNob2xkLgog
ICAgIGlmIChtX3BkZkltYWdlQ2FjaGluZ1BvbGljeSA9PSBQREZJbWFnZUNhY2hpbmdQb2xpY3k6
OkJlbG93TWVtb3J5TGltaXQpIHsKLSAgICAgICAgSW50U2l6ZSBzY2FsZWRTaXplID0gSW1hZ2VC
dWZmZXI6OmNvbXBhdGlibGVCdWZmZXJTaXplKGNhY2hlZEltYWdlU2l6ZSwgY29udGV4dCk7Cisg
ICAgICAgIGF1dG8gc2NhbGVkU2l6ZSA9IGNvbnRleHQuY29tcGF0aWJsZUltYWdlQnVmZmVyU2l6
ZShjYWNoZWRJbWFnZVNpemUpOwogICAgICAgICBpZiAoc19hbGxEZWNvZGVkRGF0YVNpemUgKyBz
Y2FsZWRTaXplLnVuY2xhbXBlZEFyZWEoKSAqIDQgLSBtX2NhY2hlZEJ5dGVzID4gc19tYXhEZWNv
ZGVkRGF0YVNpemUpIHsKICAgICAgICAgICAgIGRlc3Ryb3lEZWNvZGVkRGF0YSgpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQogCi0gICAgbV9jYWNoZWRJbWFnZUJ1ZmZl
ciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNhY2hlZEltYWdlU2l6ZSwg
Y29udGV4dCk7CisgICAgLy8gQ3JlYXRlIGluLXByb2Nlc3MgSW1hZ2VCdWZmZXIgc2luY2UgdGhl
IGRlb2NvZGluZyBvZiBQREYgaW1hZ2VzIGhhcyB0byBoYXBwZW4gaW4gV2ViUHJvY2Vzcy4KKyAg
ICBtX2NhY2hlZEltYWdlQnVmZmVyID0gY29udGV4dC5HcmFwaGljc0NvbnRleHQ6OmNyZWF0ZUNv
bXBhdGlibGVJbWFnZUJ1ZmZlcihjYWNoZWRJbWFnZVNpemUpOwogICAgIGlmICghbV9jYWNoZWRJ
bWFnZUJ1ZmZlcikgewogICAgICAgICBkZXN0cm95RGVjb2RlZERhdGEoKTsKICAgICAgICAgcmV0
dXJuOwpAQCAtMjkyLDcgKzI5Myw3IEBAIEltYWdlRHJhd1Jlc3VsdCBQREZEb2N1bWVudEltYWdl
OjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0CiAgICAgICAg
ICAgICAvLyBzY2FsYXIgPSBzcXJ0KG1heCBudW1iZXIgb2YgcGl4ZWxzIC8gKHdpZHRoICogaGVp
Z2h0KSkKICAgICAgICAgICAgIGF1dG8gc2NhbGFyID0gc3RkOjptaW4oMS5mLCBzdGQ6OnNxcnQo
c3RhdGljX2Nhc3Q8ZmxvYXQ+KHNfbWF4Q2FjaGVkSW1hZ2VBcmVhKSAvIChkc3RSZWN0LndpZHRo
KCkgKiBkc3RSZWN0LmhlaWdodCgpKSkpOwogICAgICAgICAgICAgRmxvYXRSZWN0IGxvY2FsRGVz
dGluYXRpb25SZWN0KEZsb2F0UG9pbnQoKSwgZHN0UmVjdC5zaXplKCkgKiBzY2FsYXIpOwotICAg
ICAgICAgICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0
aWJsZUJ1ZmZlcihsb2NhbERlc3RpbmF0aW9uUmVjdC5zaXplKCksIGNvbnRleHQpKSB7CisgICAg
ICAgICAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlciA9IGNvbnRleHQuR3JhcGhpY3NDb250ZXh0Ojpj
cmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIobG9jYWxEZXN0aW5hdGlvblJlY3Quc2l6ZSgpKSkg
ewogICAgICAgICAgICAgICAgIGF1dG8mIGJ1ZmZlckNvbnRleHQgPSBpbWFnZUJ1ZmZlci0+Y29u
dGV4dCgpOwogICAgICAgICAgICAgICAgIHRyYW5zZm9ybUNvbnRleHRGb3JQYWludGluZyhidWZm
ZXJDb250ZXh0LCBsb2NhbERlc3RpbmF0aW9uUmVjdCwgc3JjUmVjdCk7CiAgICAgICAgICAgICAg
ICAgZHJhd1BERlBhZ2UoYnVmZmVyQ29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9EcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9EcmF3R2x5cGhz
UmVjb3JkZXJDb3JlVGV4dC5jcHAKaW5kZXggYzI5NWVmZTgzNDdiMDQ1YmUzMWRiMzY3NjczZWU3
Zjk5NWIxYTRjMy4uYjk2ZWM3YTE3MGNlZjY0YjMyMzU1YmZlZDMxMjBmZGIwMmExNDQxMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRHJhd0ds
eXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvcmV0ZXh0L0RyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcApAQCAtMzc0LDE0
ICszNzQsMTkgQEAgdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OnJlY29yZERyYXdJbWFnZShDR1Jl
bmRlcmluZ1N0YXRlUmVmLCBDR0dTdGF0ZVJlZiBnc3RhdGUKIHZvaWQgRHJhd0dseXBoc1JlY29y
ZGVyOjpkcmF3T1RTVkdSdW4oY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlw
aCogZ2x5cGhzLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBu
dW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIHN0YXJ0UG9pbnQsIEZvbnRTbW9vdGhpbmdNb2Rl
IHNtb290aGluZ01vZGUpCiB7CiAgICAgRmxvYXRQb2ludCBwZW5Qb3NpdGlvbiA9IHN0YXJ0UG9p
bnQ7CisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtR2x5cGhzOyArK2kpIHsKICAg
ICAgICAgYXV0byBib3VuZHMgPSBmb250LmJvdW5kc0ZvckdseXBoKGdseXBoc1tpXSk7Ci0gICAg
ICAgIGlmIChhdXRvIGltYWdlQnVmZmVyRGVzY3JpcHRpb24gPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
Q29tcGF0aWJsZUJ1ZmZlcihib3VuZHMsIG1fb3duZXIpKSB7Ci0gICAgICAgICAgICBGb250Q2Fz
Y2FkZTo6ZHJhd0dseXBocyhpbWFnZUJ1ZmZlckRlc2NyaXB0aW9uLT5pbWFnZUJ1ZmZlci0+Y29u
dGV4dCgpLCBmb250LCBnbHlwaHMgKyBpLCBhZHZhbmNlcyArIGksIDEsIEZsb2F0UG9pbnQoKSwg
c21vb3RoaW5nTW9kZSk7Ci0gICAgICAgICAgICBhdXRvIGRlc3RpbmF0aW9uUmVjdCA9IGltYWdl
QnVmZmVyRGVzY3JpcHRpb24tPmluZmxhdGVkUmVjdEluVXNlckNvb3JkaW5hdGVzOworCisgICAg
ICAgIC8vIENyZWF0ZSBpbi1wcm9jZXNzIEltYWdlQnVmZmVyIHNpbmNlIHRoZSBkZW9jb2Rpbmcg
b2YgT1QtU1ZHIGZvbnRzIGhhcyB0byBoYXBwZW4gaW4gV2ViUHJvY2Vzcy4KKyAgICAgICAgaWYg
KGF1dG8gaW1hZ2VCdWZmZXIgPSBtX293bmVyLkdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlQ29tcGF0
aWJsZUltYWdlQnVmZmVyKGJvdW5kcykpIHsKKyAgICAgICAgICAgIEZvbnRDYXNjYWRlOjpkcmF3
R2x5cGhzKGltYWdlQnVmZmVyLT5jb250ZXh0KCksIGZvbnQsIGdseXBocyArIGksIGFkdmFuY2Vz
ICsgaSwgMSwgRmxvYXRQb2ludCgpLCBzbW9vdGhpbmdNb2RlKTsKKworICAgICAgICAgICAgRmxv
YXRSZWN0IGRlc3RpbmF0aW9uUmVjdCA9IGVuY2xvc2luZ0ludFJlY3QoYm91bmRzKTsKICAgICAg
ICAgICAgIGRlc3RpbmF0aW9uUmVjdC5tb3ZlQnkocGVuUG9zaXRpb24pOwotICAgICAgICAgICAg
bV9vd25lci5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXJEZXNjcmlwdGlvbi0+aW1hZ2VCdWZm
ZXIsIGRlc3RpbmF0aW9uUmVjdCk7CisgICAgICAgICAgICBtX293bmVyLmRyYXdJbWFnZUJ1ZmZl
cigqaW1hZ2VCdWZmZXIsIGRlc3RpbmF0aW9uUmVjdCk7CiAgICAgICAgIH0KKwogICAgICAgICBw
ZW5Qb3NpdGlvbi5tb3ZlKHNpemUoYWR2YW5jZXNbaV0pKTsKICAgICB9CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXggODlmM2QzNTNkYTdiYjQxNzExOGZm
NzE4OGNlZGMwN2MwOGJjYzg0Ny4uZDNkZDE3NTdlMWM4MDA2MjcwOGI4NWE1MDNmOWQyZjY5Yzdj
MjExYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcApAQCAtNTA3
LDYgKzUwNywxNiBAQCBHcmFwaGljc0NvbnRleHQ6OkNsaXBUb0RyYXdpbmdDb21tYW5kc1Jlc3Vs
dCBSZWNvcmRlcjo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbgogICAgIHJldHVybiBDbGlwVG9E
cmF3aW5nQ29tbWFuZHNSZXN1bHQ6OlN1Y2Nlc3M7CiB9CiAKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4g
UmVjb3JkZXI6OmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNp
emUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgc3RkOjpvcHRpb25h
bDxSZW5kZXJpbmdNb2RlPiByZW5kZXJpbmdNb2RlKSBjb25zdAoreworICAgIHJldHVybiBjcmVh
dGVJbWFnZUJ1ZmZlcihzaXplLCBzY2FsZUZhY3RvcigpLCBjb2xvclNwYWNlLCByZW5kZXJpbmdN
b2RlKTsKK30KKworUmVmUHRyPEltYWdlQnVmZmVyPiBSZWNvcmRlcjo6Y3JlYXRlQ29tcGF0aWJs
ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRGVzdGluYXRpb25Db2xv
clNwYWNlJiBjb2xvclNwYWNlLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ01vZGU+IHJlbmRlcmlu
Z01vZGUpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNyZWF0ZUltYWdlQnVmZmVyKHJlY3QsIHNjYWxl
RmFjdG9yKCksIGNvbG9yU3BhY2UsIHJlbmRlcmluZ01vZGUpOworfQorCiAjaWYgRU5BQkxFKFZJ
REVPKQogdm9pZCBSZWNvcmRlcjo6cGFpbnRGcmFtZUZvck1lZGlhKE1lZGlhUGxheWVyJiBwbGF5
ZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24pCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVjb3JkZXIuaAppbmRleCA0MGU3YTBjMjU2MDM3MTM1OWNhZWRkZmRkNTM5MjA1ZWQx
NTg3ZTk4Li4xMDVlYzIyODY0ZTcwNjhiYWE4ZDQ5YmU0NGI1ZDZiMzUyMGJkZTcxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKQEAgLTI3MSw2ICsyNzEsOSBAQCBwcml2
YXRlOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZm
ZXImLCBjb25zdCBGbG9hdFJlY3QmKSBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCBHcmFwaGlj
c0NvbnRleHQ6OkNsaXBUb0RyYXdpbmdDb21tYW5kc1Jlc3VsdCBjbGlwVG9EcmF3aW5nQ29tbWFu
ZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNw
YWNlJiwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJikgZmluYWw7CiAKKyAgICBX
RUJDT1JFX0VYUE9SVCBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1
ZmZlcihjb25zdCBGbG9hdFNpemUmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmID0gRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nTW9kZT4g
PSBzdGQ6Om51bGxvcHQpIGNvbnN0IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxJ
bWFnZUJ1ZmZlcj4gY3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYs
IGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IoKSwgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdNb2RlPiA9IHN0ZDo6bnVsbG9wdCkgY29uc3Qg
ZmluYWw7CisKICNpZiBFTkFCTEUoVklERU8pCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYWlu
dEZyYW1lRm9yTWVkaWEoTWVkaWFQbGF5ZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9u
KSBmaW5hbDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
SW1wbC5jcHAKaW5kZXggM2VjYmM3YmEzMzM1ZmM3YmJhYmY5MGUxNDdkYzNiYTkzNGY2NDg2NS4u
NTJiMGI4YmQ1NDY1NmJiYjQxMDFmMWVlZmM0MDY2NDkxZGZkNTk1NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuY3BwCkBAIC00MzEsNiArNDMxLDExIEBA
IGJvb2wgUmVjb3JkZXJJbXBsOjpyZWNvcmRSZXNvdXJjZVVzZShGb250JiBmb250KQogICAgIHJl
dHVybiB0cnVlOwogfQogCitSZWZQdHI8SW1hZ2VCdWZmZXI+IFJlY29yZGVySW1wbDo6Y3JlYXRl
SW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UmIGNvbG9yU3BhY2UsIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nTW9kZT4gcmVuZGVyaW5n
TW9kZSkgY29uc3QKK3sKKyAgICByZXR1cm4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCByZW5k
ZXJpbmdNb2RlLnZhbHVlX29yKHRoaXMtPnJlbmRlcmluZ01vZGUoKSksIFNob3VsZFVzZURpc3Bs
YXlMaXN0OjpZZXMsIFJlbmRlcmluZ1B1cnBvc2U6OlVuc3BlY2lmaWVkLCAxLCBjb2xvclNwYWNl
LCBQaXhlbEZvcm1hdDo6QkdSQTgpOworfQorCiAvLyBGSVhNRTogc2hhcmUgd2l0aCBTaGFkb3dE
YXRhCiBzdGF0aWMgaW5saW5lIGZsb2F0IHNoYWRvd1BhaW50aW5nRXh0ZW50KGZsb2F0IGJsdXJS
YWRpdXMpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5oCmlu
ZGV4IDkyNmMzM2IzMTExMjI1NWVjMzJjMjI0NmUzMjkxOWUxOGVjZjU0MDMuLjkyMTk3MGIxNGVk
MDIxNTVmYTAwY2IxZDIwZWI3M2Y4N2U3MDVhMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlY29yZGVySW1wbC5oCkBAIC0xMjcsNiArMTI3LDggQEAgcHJpdmF0ZToKIAogICAg
IHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+IGNyZWF0ZU5lc3RlZENvbnRleHQoY29u
c3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0aWFs
Q1RNKSBmaW5hbDsKIAorICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIo
Y29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgY29uc3QgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xv
clNwYWNlJiA9IFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBzdGQ6Om9w
dGlvbmFsPFJlbmRlcmluZ01vZGU+ID0gc3RkOjpudWxsb3B0KSBjb25zdCBmaW5hbDsKKwogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIGNsYXNzLi4uIEFyZ3M+CiAgICAgdm9pZCBhcHBlbmQoQXJn
cyYmLi4uIGFyZ3MpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIu
Y3BwCmluZGV4IGIxODhjZWFiNDI2OTZmZmUyMDEyMDlhOTAwYWI3MDA5OTUwYjg1ZTUuLmJhZWQx
NGNlMGFkN2M5YzA0Yzk1YjBlNzE1MDUyYTY1MGUwNzlhOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZXBsYXllci5jcHAKQEAgLTE1NCw3ICsxNTQsNyBAQCBzdGQ6OnBhaXI8c3Rk
OjpvcHRpb25hbDxTdG9wUmVwbGF5UmVhc29uPiwgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aQogICAgICAgICBpZiAobV9tYXNrSW1hZ2VCdWZmZXIpCiAgICAgICAgICAgICBy
ZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpJbnZhbGlkSXRlbU9yRXh0ZW50LCBzdGQ6Om51bGxv
cHQgfTsKICAgICAgICAgYXV0byYgY2xpcEl0ZW0gPSBpdGVtLmdldDxCZWdpbkNsaXBUb0RyYXdp
bmdDb21tYW5kcz4oKTsKLSAgICAgICAgbV9tYXNrSW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjbGlwSXRlbS5kZXN0aW5hdGlvbigpLnNpemUoKSwgY2xp
cEl0ZW0uY29sb3JTcGFjZSgpLCBtX2NvbnRleHQpOworICAgICAgICBtX21hc2tJbWFnZUJ1ZmZl
ciA9IG1fY29udGV4dC5jcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIoY2xpcEl0ZW0uZGVzdGlu
YXRpb24oKS5zaXplKCksIGNsaXBJdGVtLmNvbG9yU3BhY2UoKSk7CiAgICAgICAgIGlmICghbV9t
YXNrSW1hZ2VCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpP
dXRPZk1lbW9yeSwgc3RkOjpudWxsb3B0IH07CiAgICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9w
dCwgc3RkOjpudWxsb3B0IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvVGhlbWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0K
aW5kZXggZDc5ZTg1YWEyYmM5NzU4NzJhZmZiMWQ3MDcxOTRkZGVkYmQzOTA5YS4uNzQxOTE1YzBj
MDNkNDFiMzNiNTczOWM5NjQ0YzM3NzI2NWVlMWNmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9UaGVtZU1hYy5tbQpAQCAtNzM0LDcgKzczNCw3IEBAIGJvb2wgVGhlbWVNYWM6OmRyYXdD
ZWxsT3JGb2N1c1JpbmdXaXRoVmlld0ludG9Db250ZXh0KE5TQ2VsbCAqY2VsbCwgR3JhcGhpY3ND
b250CiAKICAgICBpZiAodXNlSW1hZ2VCdWZmZXIpIHsKICAgICAgICAgTlNSZWN0IGltYWdlQnVm
ZmVyRHJhd1JlY3QgPSBOU1JlY3QoRmxvYXRSZWN0KGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVXaWR0
aCwgYnV0dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRoLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0
KCkpKTsKLSAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21w
YXRpYmxlQnVmZmVyKHJlY3Quc2l6ZSgpICsgMiAqIEZsb2F0U2l6ZShidXR0b25Gb2N1c1JlY3RP
dXRsaW5lV2lkdGgsIGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVXaWR0aCksIGRldmljZVNjYWxlRmFj
dG9yLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgY29udGV4dCk7CisgICAgICAgIGF1
dG8gaW1hZ2VCdWZmZXIgPSBjb250ZXh0LmNyZWF0ZUltYWdlQnVmZmVyKHJlY3Quc2l6ZSgpICsg
MiAqIEZsb2F0U2l6ZShidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgsIGJ1dHRvbkZvY3VzUmVj
dE91dGxpbmVXaWR0aCksIHsgZGV2aWNlU2NhbGVGYWN0b3IsIGRldmljZVNjYWxlRmFjdG9yIH0p
OwogICAgICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuIG5lZWRzUmVw
YWludDsKICAgICAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveE1vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3hNb2RlbE9iamVjdC5jcHAKaW5kZXggNTI4ZjAyMjA0YTYxODZmOTg1MWEzMjRjNTBlOWI2MWNi
MjUyMDM3NC4uMTliYjBjNDJmYmM1ZmMyMTM1NzYwNzgyMjY1N2ZiYjYyYWY4NzI4MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCkBA
IC04OTQsNyArODk0LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5
ZXJFeHRlbmRlZChjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY28KICAgICAgICAgbWFza1Jl
Y3QuaW50ZXJzZWN0KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMocGFpbnRJbmZvLnJlY3QsIGRldmlj
ZVNjYWxlRmFjdG9yKSk7CiAKICAgICAgICAgLy8gTm93IGNyZWF0ZSB0aGUgbWFzay4KLSAgICAg
ICAgbWFza0ltYWdlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIobWFza1Jl
Y3Quc2l6ZSgpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgY29udGV4dCk7CisgICAg
ICAgIG1hc2tJbWFnZSA9IGNvbnRleHQuY3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyKG1hc2tS
ZWN0LnNpemUoKSk7CiAgICAgICAgIGlmICghbWFza0ltYWdlKQogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICBwYWludE1hc2tGb3JUZXh0RmlsbEJveChtYXNrSW1hZ2UuZ2V0KCksIG1hc2tS
ZWN0LCBib3gsIHNjcm9sbGVkUGFpbnRSZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuY3BwCmluZGV4IDc3YThhMjc4MTI5MjVhNWE0NjcyYzY1ZGY5OGNmN2FkYjI5NmZk
ZTcuLjk3M2FkYzU4NjJkM2YxNDMyMDJjYmFmZTFjN2FiNjZjNTAzY2E1MTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtMzI0Nyw3ICszMjQ3LDcgQEAgR3Jh
cGhpY3NDb250ZXh0KiBSZW5kZXJMYXllcjo6c2V0dXBGaWx0ZXJzKEdyYXBoaWNzQ29udGV4dCYg
ZGVzdGluYXRpb25Db250ZXh0LAogCiAgICAgYXV0byByb290UmVsYXRpdmVCb3VuZHMgPSBjYWxj
dWxhdGVMYXllckJvdW5kcyhwYWludGluZ0luZm8ucm9vdExheWVyLCBvZmZzZXRGcm9tUm9vdCwg
eyB9KTsKIAotICAgIEdyYXBoaWNzQ29udGV4dCogZmlsdGVyQ29udGV4dCA9IHBhaW50aW5nRmls
dGVycy0+YmVnaW5GaWx0ZXJFZmZlY3QocmVuZGVyZXIoKSwgZW5jbG9zaW5nSW50UmVjdChyb290
UmVsYXRpdmVCb3VuZHMpLCBlbmNsb3NpbmdJbnRSZWN0KHBhaW50aW5nSW5mby5wYWludERpcnR5
UmVjdCksIGVuY2xvc2luZ0ludFJlY3QoZmlsdGVyUmVwYWludFJlY3QpKTsKKyAgICBHcmFwaGlj
c0NvbnRleHQqIGZpbHRlckNvbnRleHQgPSBwYWludGluZ0ZpbHRlcnMtPmJlZ2luRmlsdGVyRWZm
ZWN0KHJlbmRlcmVyKCksIGRlc3RpbmF0aW9uQ29udGV4dCwgZW5jbG9zaW5nSW50UmVjdChyb290
UmVsYXRpdmVCb3VuZHMpLCBlbmNsb3NpbmdJbnRSZWN0KHBhaW50aW5nSW5mby5wYWludERpcnR5
UmVjdCksIGVuY2xvc2luZ0ludFJlY3QoZmlsdGVyUmVwYWludFJlY3QpKTsKICAgICBpZiAoIWZp
bHRlckNvbnRleHQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IDRlZmNmYWI1NTU3YjU1
MzNiZWU5NWM5NDI4MjYxMmExNzVmNjUzMzguLmQyZmYyZTkxYWIxMDlhMDFhOTdkN2Y3ODJmM2Ni
NmEzN2JhMDI2NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckJhY2tpbmcuY3BwCkBAIC0zMzEyLDcgKzMzMTIsNyBAQCBzdGF0aWMgUmVmUHRyPFBhdHRlcm4+
IHBhdHRlcm5Gb3JEZXNjcmlwdGlvbihQYXR0ZXJuRGVzY3JpcHRpb24gZGVzY3JpcHRpb24sIEZs
bwogewogICAgIGNvbnN0IEZsb2F0U2l6ZSB0aWxlU2l6ZSB7IDMyLCAxOCB9OwogCi0gICAgYXV0
byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKHRpbGVT
aXplLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgZGVzdENvbnRleHQpOworICAgIGF1
dG8gaW1hZ2VCdWZmZXIgPSBkZXN0Q29udGV4dC5jcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIo
dGlsZVNpemUpOwogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0
ZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuY3Bw
CmluZGV4IDZkZTRmZjAxN2I5MjU3YTliNmIxMDczNmYxYzRlMTg5MWE4ZTc1YTAuLjQ4NzM3ZWIy
NDE3MjdlMTZiZDUzNWJlNWQzY2Q1YWY3NDllYzU0YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuY3BwCkBAIC0xMjksMTkgKzEyOSwxOSBAQCBH
cmFwaGljc0NvbnRleHQqIFJlbmRlckxheWVyRmlsdGVyczo6aW5wdXRDb250ZXh0KCkKICAgICBy
ZXR1cm4gbV9zb3VyY2VJbWFnZSA/ICZtX3NvdXJjZUltYWdlLT5jb250ZXh0KCkgOiBudWxscHRy
OwogfQogCi12b2lkIFJlbmRlckxheWVyRmlsdGVyczo6YWxsb2NhdGVCYWNraW5nU3RvcmVJZk5l
ZWRlZCgpCit2b2lkIFJlbmRlckxheWVyRmlsdGVyczo6YWxsb2NhdGVCYWNraW5nU3RvcmVJZk5l
ZWRlZChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgYXV0byYgZmlsdGVyID0gKm1f
ZmlsdGVyOwogICAgIGF1dG8gbG9naWNhbFNpemUgPSBmaWx0ZXIuc2NhbGVkQnlGaWx0ZXJTY2Fs
ZShtX2ZpbHRlclJlZ2lvbi5zaXplKCkpOwogCiAgICAgaWYgKCFtX3NvdXJjZUltYWdlIHx8IG1f
c291cmNlSW1hZ2UtPmxvZ2ljYWxTaXplKCkgIT0gbG9naWNhbFNpemUpIHsKLSAgICAgICAgbV9z
b3VyY2VJbWFnZSA9IEltYWdlQnVmZmVyOjpjcmVhdGUobG9naWNhbFNpemUsIGZpbHRlci5yZW5k
ZXJpbmdNb2RlKCksIFNob3VsZFVzZURpc3BsYXlMaXN0OjpObywgUmVuZGVyaW5nUHVycG9zZTo6
RE9NLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4
LCBtX2xheWVyLnJlbmRlcmVyKCkuaG9zdFdpbmRvdygpKTsKLSAgICAgICAgaWYgKGF1dG8gY29u
dGV4dCA9IGlucHV0Q29udGV4dCgpKQotICAgICAgICAgICAgY29udGV4dC0+c2NhbGUoZmlsdGVy
LmZpbHRlclNjYWxlKCkpOworICAgICAgICBtX3NvdXJjZUltYWdlID0gY29udGV4dC5jcmVhdGVJ
bWFnZUJ1ZmZlcihsb2dpY2FsU2l6ZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIGZp
bHRlci5yZW5kZXJpbmdNb2RlKCkpOworICAgICAgICBpZiAobV9zb3VyY2VJbWFnZSkKKyAgICAg
ICAgICAgIGlucHV0Q29udGV4dCgpLT5zY2FsZShmaWx0ZXIuZmlsdGVyU2NhbGUoKSk7CiAgICAg
fQogfQogCi1HcmFwaGljc0NvbnRleHQqIFJlbmRlckxheWVyRmlsdGVyczo6YmVnaW5GaWx0ZXJF
ZmZlY3QoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IExheW91dFJlY3QmIGZpbHRlckJv
eFJlY3QsIGNvbnN0IExheW91dFJlY3QmIGRpcnR5UmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgbGF5
ZXJSZXBhaW50UmVjdCkKK0dyYXBoaWNzQ29udGV4dCogUmVuZGVyTGF5ZXJGaWx0ZXJzOjpiZWdp
bkZpbHRlckVmZmVjdChSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBMYXlvdXRSZWN0JiBmaWx0ZXJCb3hSZWN0LCBjb25zdCBMYXlvdXRSZWN0
JiBkaXJ0eVJlY3QsIGNvbnN0IExheW91dFJlY3QmIGxheWVyUmVwYWludFJlY3QpCiB7CiAgICAg
aWYgKCFtX2ZpbHRlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xOTMsNyArMTkzLDcg
QEAgR3JhcGhpY3NDb250ZXh0KiBSZW5kZXJMYXllckZpbHRlcnM6OmJlZ2luRmlsdGVyRWZmZWN0
KFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLAogICAgIHJlc2V0RGlydHlTb3VyY2VSZWN0KCk7CiAK
ICAgICBmaWx0ZXIuc2V0RmlsdGVyUmVnaW9uKG1fZmlsdGVyUmVnaW9uKTsKLSAgICBhbGxvY2F0
ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKCk7CisgICAgYWxsb2NhdGVCYWNraW5nU3RvcmVJZk5lZWRl
ZChjb250ZXh0KTsKIAogICAgIGF1dG8qIHNvdXJjZUdyYXBoaWNzQ29udGV4dCA9IGlucHV0Q29u
dGV4dCgpOwogICAgIGlmICghc291cmNlR3JhcGhpY3NDb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVycy5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVycy5oCmluZGV4IGIwY2I3N2M4ZTEwNWM0YmUw
N2Y2NmU2OTI0NzE3M2JjOGU1ZTNhOWUuLmUzZjIxNGQ1ODkyZmNkZTA4NWVhMTI2NmFjNzU3YzBm
OWM0NmM4OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckZpbHRlcnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0
ZXJzLmgKQEAgLTYzLDE0ICs2MywxNCBAQCBwdWJsaWM6CiAgICAgLy8gUGVyIHJlbmRlcgogICAg
IExheW91dFJlY3QgcmVwYWludFJlY3QoKSBjb25zdCB7IHJldHVybiBtX3JlcGFpbnRSZWN0OyB9
CiAKLSAgICBHcmFwaGljc0NvbnRleHQqIGJlZ2luRmlsdGVyRWZmZWN0KFJlbmRlckVsZW1lbnQm
LCBjb25zdCBMYXlvdXRSZWN0JiBmaWx0ZXJCb3hSZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBkaXJ0
eVJlY3QsIGNvbnN0IExheW91dFJlY3QmIGxheWVyUmVwYWludFJlY3QpOworICAgIEdyYXBoaWNz
Q29udGV4dCogYmVnaW5GaWx0ZXJFZmZlY3QoUmVuZGVyRWxlbWVudCYsIEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IExheW91dFJlY3QmIGZpbHRlckJveFJlY3QsIGNvbnN0IExheW91dFJlY3QmIGRp
cnR5UmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgbGF5ZXJSZXBhaW50UmVjdCk7CiAgICAgdm9pZCBh
cHBseUZpbHRlckVmZmVjdChHcmFwaGljc0NvbnRleHQmIGRlc3RpbmF0aW9uQ29udGV4dCk7CiAK
IHByaXZhdGU6CiAgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgcmVzZXREaXJ0eVNvdXJjZVJl
Y3QoKSB7IG1fZGlydHlTb3VyY2VSZWN0ID0gTGF5b3V0UmVjdCgpOyB9CiAgICAgR3JhcGhpY3ND
b250ZXh0KiBpbnB1dENvbnRleHQoKTsKLSAgICB2b2lkIGFsbG9jYXRlQmFja2luZ1N0b3JlSWZO
ZWVkZWQoKTsKKyAgICB2b2lkIGFsbG9jYXRlQmFja2luZ1N0b3JlSWZOZWVkZWQoR3JhcGhpY3ND
b250ZXh0Jik7CiAKICAgICBSZW5kZXJMYXllciYgbV9sYXllcjsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDb2NvYS5tbQppbmRleCAxYTY2NzMyMjcyMmFkMzhmYzE1
MTRiYmIxMTllZGNlM2E4ZWY3M2YzLi5hYmQ0YzFkYjEzMTRkNDQyMWI3MzIyYWE4NTc1MWFlYjJm
NTkzYWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDb2NvYS5t
bQpAQCAtMTU0LDcgKzE1NCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVDb2NvYTo6cGFpbnRBcHBsZVBh
eUJ1dHRvbihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBQCiB7CiAgICAgYXV0
byYgZGVzdGluYXRpb25Db250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKTsKIAotICAgIGF1dG8g
aW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihwYWludFJl
Y3Quc2l6ZSgpLCBkZXN0aW5hdGlvbkNvbnRleHQpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBk
ZXN0aW5hdGlvbkNvbnRleHQuY3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyKHBhaW50UmVjdC5z
aXplKCkpOwogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCmluZGV4IDZjOTRlOTJl
MGZmZjg0MDEzZjFhNmVjNjgyOWM3ZTkwMGEyMDA3OGYuLmU0N2E2NmQwZjMwZjJhYTQ3YzA0NDhi
MWQxZGQ0YTQxNmJmYzY2MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhl
bWVNYWMubW0KQEAgLTk5Niw3ICs5OTYsNyBAQCB2b2lkIFJlbmRlclRoZW1lTWFjOjpwYWludExp
c3RCdXR0b25Gb3JJbnB1dChjb25zdCBSZW5kZXJPYmplY3QmIG8sIEdyYXBoaWNzQ29udAogCiAg
ICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSBvLmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0
b3IoKTsKIAotICAgIGF1dG8gY29tYm9Cb3hJbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVh
dGVDb21wYXRpYmxlQnVmZmVyKGNvbWJvQm94U2l6ZSwgZGV2aWNlU2NhbGVGYWN0b3IsIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBjb250ZXh0KTsKKyAgICBhdXRvIGNvbWJvQm94SW1h
Z2VCdWZmZXIgPSBjb250ZXh0LmNyZWF0ZUltYWdlQnVmZmVyKGNvbWJvQm94U2l6ZSwgeyBkZXZp
Y2VTY2FsZUZhY3RvciwgZGV2aWNlU2NhbGVGYWN0b3IgfSk7CiAgICAgaWYgKCFjb21ib0JveElt
YWdlQnVmZmVyKQogICAgICAgICByZXR1cm47CiAKQEAgLTEwMjAsNyArMTAyMCw3IEBAIHZvaWQg
UmVuZGVyVGhlbWVNYWM6OnBhaW50TGlzdEJ1dHRvbkZvcklucHV0KGNvbnN0IFJlbmRlck9iamVj
dCYgbywgR3JhcGhpY3NDb250CiAgICAgICAgIChfX2JyaWRnZSBOU1N0cmluZyAqKWtDVUlVc2Vy
SW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uS2V5IDogKF9fYnJpZGdlIE5TU3RyaW5nICopa0NVSVVz
ZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25MZWZ0VG9SaWdodCwKICAgICB9XTsKIAotICAgIGF1
dG8gY29tYm9Cb3hCdXR0b25JbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRp
YmxlQnVmZmVyKGRlc2lyZWRDb21ib0JveEJ1dHRvblNpemUsIGRldmljZVNjYWxlRmFjdG9yLCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgY29udGV4dCk7CisgICAgYXV0byBjb21ib0Jv
eEJ1dHRvbkltYWdlQnVmZmVyID0gY29udGV4dC5jcmVhdGVJbWFnZUJ1ZmZlcihkZXNpcmVkQ29t
Ym9Cb3hCdXR0b25TaXplLCB7IGRldmljZVNjYWxlRmFjdG9yLCBkZXZpY2VTY2FsZUZhY3RvciB9
KTsKICAgICBpZiAoIWNvbWJvQm94QnV0dG9uSW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybjsK
IApAQCAtMTM3OSw3ICsxMzc5LDcgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRQcm9ncmVz
c0Jhcihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwgY29uc3QgUGEKICAgICBjb25z
dCBhdXRvJiByZW5kZXJQcm9ncmVzcyA9IGRvd25jYXN0PFJlbmRlclByb2dyZXNzPihyZW5kZXJP
YmplY3QpOwogICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gcmVuZGVyT2JqZWN0LmRvY3Vt
ZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKTsKICAgICBib29sIGlzSW5kZXRlcm1pbmF0ZSA9IHJl
bmRlclByb2dyZXNzLnBvc2l0aW9uKCkgPCAwOwotICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihpbmZsYXRlZFJlY3Quc2l6ZSgpLCBkZXZp
Y2VTY2FsZUZhY3RvciwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIHBhaW50SW5mby5j
b250ZXh0KCkpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBwYWludEluZm8uY29udGV4dCgpLmNy
ZWF0ZUltYWdlQnVmZmVyKGluZmxhdGVkUmVjdC5zaXplKCksIHsgZGV2aWNlU2NhbGVGYWN0b3Is
IGRldmljZVNjYWxlRmFjdG9yIH0pOwogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAKaW5kZXggZGEwZDU2Y2QyNzA5MDQ2NDc4ZDAy
MjRlODIzMDQyMGEzMTI2YWRhMC4uNTlhMzE5NjU1MTFmOTNhZmM0NmNmNDk3OWE1Mjk5NTY0ZTky
Y2U2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZUNsaXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcApAQCAtMTUyLDkgKzE1MiwxMyBAQCBib29sIFJlbmRl
clNWR1Jlc291cmNlQ2xpcHBlcjo6YXBwbHlDbGlwcGluZ1RvQ29udGV4dChHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgQWZmaW5lVHJhbnNmb3Jt
IGFic29sdXRlVHJhbnNmb3JtID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2FsY3VsYXRlVHJhbnNm
b3JtYXRpb25Ub091dGVybW9zdENvb3JkaW5hdGVTeXN0ZW0ocmVuZGVyZXIpOworCiAgICAgaWYg
KCFjbGlwcGVyRGF0YS5pc1ZhbGlkRm9yR2VvbWV0cnkob2JqZWN0Qm91bmRpbmdCb3gsIGNsaXBw
ZWRDb250ZW50Qm91bmRzLCBhYnNvbHV0ZVRyYW5zZm9ybSkpIHsKKyAgICAgICAgLy8gSWdub3Jl
IDJEIHJvdGF0aW9uLCBhcyBpdCBkb2Vzbid0IGFmZmVjdCB0aGUgc2l6ZSBvZiB0aGUgbWFzay4K
KyAgICAgICAgRmxvYXRTaXplIHNjYWxlKGFic29sdXRlVHJhbnNmb3JtLnhTY2FsZSgpLCBhYnNv
bHV0ZVRyYW5zZm9ybS55U2NhbGUoKSk7CisKICAgICAgICAgLy8gRklYTUUgKDE0OTQ2OSk6IFRo
aXMgaW1hZ2UgYnVmZmVyIHNob3VsZCBub3QgYmUgdW5jb25kaXRpb25hbGx5IHVuYWNjZWxlcmF0
ZWQuIE1ha2luZyBpdCBtYXRjaCB0aGUgY29udGV4dCBicmVha3MgbmVzdGVkIGNsaXBwaW5nLCB0
aG91Z2guCi0gICAgICAgIGF1dG8gbWFza0ltYWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3Jl
YXRlSW1hZ2VCdWZmZXIoY2xpcHBlZENvbnRlbnRCb3VuZHMsIGFic29sdXRlVHJhbnNmb3JtLCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRl
ZCwgaG9zdFdpbmRvdygpKTsKKyAgICAgICAgYXV0byBtYXNrSW1hZ2UgPSBjb250ZXh0LmNyZWF0
ZUltYWdlQnVmZmVyKGNsaXBwZWRDb250ZW50Qm91bmRzLCBzY2FsZSwgRGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQpOwogICAgICAgICBp
ZiAoIW1hc2tJbWFnZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNw
cAppbmRleCA3ODY1YTU4NWE0N2VmZDgyNDYxNzUxZjlmZmE5YTFkMWIxYjI3MTQ5Li5iYjE4NmJj
ZWI1MDg0MGNjMjgwMzhhY2VhMzRiZGU2ZmZhMzA3NWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcApAQCAt
MTQ2LDIzICsxNDYsMjEgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6YXBwbHlSZXNv
dXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgUmVuZGUKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIAotICAgIC8vIENoYW5nZSB0aGUgY29vcmRpbmF0ZSB0cmFuc2Zvcm1h
dGlvbiBhcHBsaWVkIHRvIHRoZSBmaWx0ZXJlZCBlbGVtZW50IHRvIHJlZmxlY3QgdGhlIHJlc29s
dXRpb24gb2YgdGhlIGZpbHRlci4KLSAgICBhdXRvIGVmZmVjdGl2ZVRyYW5zZm9ybSA9IEFmZmlu
ZVRyYW5zZm9ybShmaWx0ZXJTY2FsZS53aWR0aCgpLCAwLCAwLCBmaWx0ZXJTY2FsZS5oZWlnaHQo
KSwgMCwgMCk7Ci0KICNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfTElORUFSX1NS
R0IpCiAgICAgYXV0byBjb2xvclNwYWNlID0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJT
UkdCKCk7CiAjZWxzZQogICAgIGF1dG8gY29sb3JTcGFjZSA9IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQigpOwogI2VuZGlmCi0gICAgYXV0byBzb3VyY2VHcmFwaGljID0gU1ZHUmVuZGVyaW5n
Q29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoZmlsdGVyRGF0YS0+ZHJhd2luZ1JlZ2lvbiwgZWZm
ZWN0aXZlVHJhbnNmb3JtLCBjb2xvclNwYWNlLCBmaWx0ZXJEYXRhLT5maWx0ZXItPnJlbmRlcmlu
Z01vZGUoKSwgcmVuZGVyZXIuaG9zdFdpbmRvdygpKTsKKworICAgIGF1dG8gc291cmNlR3JhcGhp
YyA9IGNvbnRleHQtPmNyZWF0ZUltYWdlQnVmZmVyKGZpbHRlckRhdGEtPmRyYXdpbmdSZWdpb24s
IGZpbHRlclNjYWxlLCBjb2xvclNwYWNlLCBmaWx0ZXJEYXRhLT5maWx0ZXItPnJlbmRlcmluZ01v
ZGUoKSk7CiAgICAgaWYgKCFzb3VyY2VHcmFwaGljKSB7CiAgICAgICAgIEFTU0VSVChtX3JlbmRl
cmVyRmlsdGVyRGF0YU1hcC5jb250YWlucygmcmVuZGVyZXIpKTsKICAgICAgICAgZmlsdGVyRGF0
YS0+c2F2ZWRDb250ZXh0ID0gY29udGV4dDsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
LSAgICAKKwogICAgIGF1dG8mIHNvdXJjZUdyYXBoaWNDb250ZXh0ID0gc291cmNlR3JhcGhpYy0+
Y29udGV4dCgpOwotICAKKwogICAgIGZpbHRlckRhdGEtPnNvdXJjZUdyYXBoaWNCdWZmZXIgPSBX
VEZNb3ZlKHNvdXJjZUdyYXBoaWMpOwogICAgIGZpbHRlckRhdGEtPnNhdmVkQ29udGV4dCA9IGNv
bnRleHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwCmluZGV4IDQ0NzVhNjlmOGYyYzk2NmY2M2MzMTgz
ZjMyZWYxNTQ4NWE4NGFjMmIuLmIxYzA0NDRhYTkzNjA3NGY1YWU5M2Q1ODlkNWVkNGIxZjgwOTVk
NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VHcmFkaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcApAQCAtNjAsNyArNjAsMTAgQEAgc3RhdGljIGlubGlu
ZSBib29sIGNyZWF0ZU1hc2tBbmRTd2FwQ29udGV4dEZvclRleHRHcmFkaWVudChHcmFwaGljc0Nv
bnRleHQqJiBjb24KICAgICBBZmZpbmVUcmFuc2Zvcm0gYWJzb2x1dGVUcmFuc2Zvcm0gPSBTVkdS
ZW5kZXJpbmdDb250ZXh0OjpjYWxjdWxhdGVUcmFuc2Zvcm1hdGlvblRvT3V0ZXJtb3N0Q29vcmRp
bmF0ZVN5c3RlbSgqdGV4dFJvb3RCbG9jayk7CiAgICAgRmxvYXRSZWN0IHJlcGFpbnRSZWN0ID0g
dGV4dFJvb3RCbG9jay0+cmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKTsKIAotICAgIGF1
dG8gbWFza0ltYWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIocmVw
YWludFJlY3QsIGFic29sdXRlVHJhbnNmb3JtLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSwgY29udGV4dC0+cmVuZGVyaW5nTW9kZSgpLCByZW5kZXJlci5ob3N0V2luZG93KCkpOworICAg
IC8vIElnbm9yZSAyRCByb3RhdGlvbiwgYXMgaXQgZG9lc24ndCBhZmZlY3QgdGhlIHNpemUgb2Yg
dGhlIG1hc2suCisgICAgRmxvYXRTaXplIHNjYWxlKGFic29sdXRlVHJhbnNmb3JtLnhTY2FsZSgp
LCBhYnNvbHV0ZVRyYW5zZm9ybS55U2NhbGUoKSk7CisKKyAgICBhdXRvIG1hc2tJbWFnZSA9IGNv
bnRleHQtPmNyZWF0ZUltYWdlQnVmZmVyKHJlcGFpbnRSZWN0LCBzY2FsZSk7CiAgICAgaWYgKCFt
YXNrSW1hZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNwcAppbmRleCA3
NjRmN2M4ODhmMzJiZjE5NThhZWJlMmI3ZTYxYTUxOTk5YzI5ODUwLi45MDkxNDFiMGMzYzhlOGM0
MGU5YTljZTU4Zjg0N2Y2ZjE3YWU1ZDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNwcApAQCAtODIsOSArODIs
MTEgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6YXBwbHlSZXNvdXJjZShSZW5kZXJF
bGVtZW50JiByZW5kZXJlciwgY29uc3QgUmVuZGUKICAgICAgICAgICAgIGRyYXdDb2xvclNwYWNl
ID0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdCKCk7CiAgICAgICAgIH0KICNlbmRp
ZgorICAgICAgICAvLyBJZ25vcmUgMkQgcm90YXRpb24sIGFzIGl0IGRvZXNuJ3QgYWZmZWN0IHRo
ZSBzaXplIG9mIHRoZSBtYXNrLgorICAgICAgICBGbG9hdFNpemUgc2NhbGUoYWJzb2x1dGVUcmFu
c2Zvcm0ueFNjYWxlKCksIGFic29sdXRlVHJhbnNmb3JtLnlTY2FsZSgpKTsKIAogICAgICAgICAv
LyBGSVhNRSAoMTQ5NDcwKTogVGhpcyBpbWFnZSBidWZmZXIgc2hvdWxkIG5vdCBiZSB1bmNvbmRp
dGlvbmFsbHkgdW5hY2NlbGVyYXRlZC4gTWFraW5nIGl0IG1hdGNoIHRoZSBjb250ZXh0IGJyZWFr
cyBhbHBoYSBtYXNraW5nLCB0aG91Z2guCi0gICAgICAgIG1hc2tlckRhdGEtPm1hc2tJbWFnZSA9
IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKHJlcGFpbnRSZWN0LCBhYnNv
bHV0ZVRyYW5zZm9ybSwgbWFza0NvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0
ZWQsIGhvc3RXaW5kb3coKSk7CisgICAgICAgIG1hc2tlckRhdGEtPm1hc2tJbWFnZSA9IGNvbnRl
eHQtPmNyZWF0ZUltYWdlQnVmZmVyKHJlcGFpbnRSZWN0LCBzY2FsZSwgbWFza0NvbG9yU3BhY2Us
IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQpOwogICAgICAgICBpZiAoIW1hc2tlckRhdGEt
Pm1hc2tJbWFnZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3Bw
CmluZGV4IGU4YjUxY2ZiOTM5NDkyNjM4MWVmM2IwNGEzZTE3YTVmZDE1YzA4NmIuLjFiNzEzZTEz
M2NkNzNmMWJlODVkOTg0NTJiNzY4ODNkZTZjZWZjZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAKQEAg
LTk1LDE5ICs5NSwxNiBAQCBQYXR0ZXJuRGF0YSogUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpi
dWlsZFBhdHRlcm4oUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIE9wdAogICAgIGlmICghYnVpbGRU
aWxlSW1hZ2VUcmFuc2Zvcm0ocmVuZGVyZXIsIG1fYXR0cmlidXRlcywgcGF0dGVybkVsZW1lbnQo
KSwgdGlsZUJvdW5kYXJpZXMsIHRpbGVJbWFnZVRyYW5zZm9ybSkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCi0gICAgQWZmaW5lVHJhbnNmb3JtIGFic29sdXRlVHJhbnNmb3JtSWdub3JpbmdS
b3RhdGlvbiA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNhbGN1bGF0ZVRyYW5zZm9ybWF0aW9uVG9P
dXRlcm1vc3RDb29yZGluYXRlU3lzdGVtKHJlbmRlcmVyKTsKKyAgICBhdXRvIGFic29sdXRlVHJh
bnNmb3JtID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2FsY3VsYXRlVHJhbnNmb3JtYXRpb25Ub091
dGVybW9zdENvb3JkaW5hdGVTeXN0ZW0ocmVuZGVyZXIpOwogCiAgICAgLy8gSWdub3JlIDJEIHJv
dGF0aW9uLCBhcyBpdCBkb2Vzbid0IGFmZmVjdCB0aGUgc2l6ZSBvZiB0aGUgdGlsZS4KLSAgICBT
VkdSZW5kZXJpbmdDb250ZXh0OjpjbGVhcjJEUm90YXRpb24oYWJzb2x1dGVUcmFuc2Zvcm1JZ25v
cmluZ1JvdGF0aW9uKTsKLSAgICBGbG9hdFJlY3QgYWJzb2x1dGVUaWxlQm91bmRhcmllcyA9IGFi
c29sdXRlVHJhbnNmb3JtSWdub3JpbmdSb3RhdGlvbi5tYXBSZWN0KHRpbGVCb3VuZGFyaWVzKTsK
LSAgICBGbG9hdFJlY3QgY2xhbXBlZEFic29sdXRlVGlsZUJvdW5kYXJpZXM7CisgICAgRmxvYXRT
aXplIHRpbGVTY2FsZShhYnNvbHV0ZVRyYW5zZm9ybS54U2NhbGUoKSwgYWJzb2x1dGVUcmFuc2Zv
cm0ueVNjYWxlKCkpOwogCiAgICAgLy8gU2NhbGUgdGhlIHRpbGUgc2l6ZSB0byBtYXRjaCB0aGUg
c2NhbGUgbGV2ZWwgb2YgdGhlIHBhdHRlcm5UcmFuc2Zvcm0uCi0gICAgYWJzb2x1dGVUaWxlQm91
bmRhcmllcy5zY2FsZShzdGF0aWNfY2FzdDxmbG9hdD4obV9hdHRyaWJ1dGVzLnBhdHRlcm5UcmFu
c2Zvcm0oKS54U2NhbGUoKSksCi0gICAgICAgIHN0YXRpY19jYXN0PGZsb2F0PihtX2F0dHJpYnV0
ZXMucGF0dGVyblRyYW5zZm9ybSgpLnlTY2FsZSgpKSk7CisgICAgdGlsZVNjYWxlLnNjYWxlKHN0
YXRpY19jYXN0PGZsb2F0PihtX2F0dHJpYnV0ZXMucGF0dGVyblRyYW5zZm9ybSgpLnhTY2FsZSgp
KSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fYXR0cmlidXRlcy5wYXR0ZXJuVHJhbnNmb3JtKCkueVNj
YWxlKCkpKTsKIAogICAgIC8vIEJ1aWxkIHRpbGUgaW1hZ2UuCi0gICAgYXV0byB0aWxlSW1hZ2Ug
PSBjcmVhdGVUaWxlSW1hZ2UobV9hdHRyaWJ1dGVzLCB0aWxlQm91bmRhcmllcywgYWJzb2x1dGVU
aWxlQm91bmRhcmllcywgdGlsZUltYWdlVHJhbnNmb3JtLCBjbGFtcGVkQWJzb2x1dGVUaWxlQm91
bmRhcmllcywgY29udGV4dC5yZW5kZXJpbmdNb2RlKCkpOworICAgIGF1dG8gdGlsZUltYWdlID0g
Y3JlYXRlVGlsZUltYWdlKGNvbnRleHQsIHRpbGVCb3VuZGFyaWVzLnNpemUoKSwgdGlsZVNjYWxl
LCB0aWxlSW1hZ2VUcmFuc2Zvcm0sIG1fYXR0cmlidXRlcyk7CiAgICAgaWYgKCF0aWxlSW1hZ2Up
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0yMzQsMjUgKzIzMSwyMyBAQCBib29sIFJl
bmRlclNWR1Jlc291cmNlUGF0dGVybjo6YnVpbGRUaWxlSW1hZ2VUcmFuc2Zvcm0oUmVuZGVyRWxl
bWVudCYgcmVuZGVyZXIsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVJlZlB0cjxJbWFnZUJ1ZmZl
cj4gUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpjcmVhdGVUaWxlSW1hZ2UoY29uc3QgUGF0dGVy
bkF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZUJvdW5kYXJpZXMs
IGNvbnN0IEZsb2F0UmVjdCYgYWJzb2x1dGVUaWxlQm91bmRhcmllcywgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiB0aWxlSW1hZ2VUcmFuc2Zvcm0sIEZsb2F0UmVjdCYgY2xhbXBlZEFic29sdXRlVGls
ZUJvdW5kYXJpZXMsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSkgY29uc3QKK1JlZlB0cjxJ
bWFnZUJ1ZmZlcj4gUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpjcmVhdGVUaWxlSW1hZ2UoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IEZsb2F0
U2l6ZSYgc2NhbGUsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtLCBjb25zdCBQYXR0
ZXJuQXR0cmlidXRlcyYgYXR0cmlidXRlcykgY29uc3QKIHsKLSAgICBjbGFtcGVkQWJzb2x1dGVU
aWxlQm91bmRhcmllcyA9IEltYWdlQnVmZmVyOjpjbGFtcGVkUmVjdChhYnNvbHV0ZVRpbGVCb3Vu
ZGFyaWVzKTsKLSAgICBhdXRvIHRpbGVJbWFnZSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0
ZUltYWdlQnVmZmVyKGFic29sdXRlVGlsZUJvdW5kYXJpZXMsIGNsYW1wZWRBYnNvbHV0ZVRpbGVC
b3VuZGFyaWVzLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgcmVuZGVyaW5nTW9kZSwg
aG9zdFdpbmRvdygpKTsKKyAgICBhdXRvIHRpbGVTaXplID0gY29udGV4dC50aWdodEltYWdlQnVm
ZmVyU2l6ZShzaXplLCBzY2FsZSk7CisKKyAgICBhdXRvIHRpbGVJbWFnZSA9IGNvbnRleHQuY3Jl
YXRlSW1hZ2VCdWZmZXIodGlsZVNpemUsIHNjYWxlKTsKICAgICBpZiAoIXRpbGVJbWFnZSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBHcmFwaGljc0NvbnRleHQmIHRpbGVJbWFnZUNv
bnRleHQgPSB0aWxlSW1hZ2UtPmNvbnRleHQoKTsKIAotICAgIC8vIFRoZSBpbWFnZSBidWZmZXIg
cmVwcmVzZW50cyB0aGUgZmluYWwgcmVuZGVyZWQgc2l6ZSwgc28gdGhlIGNvbnRlbnQgaGFzIHRv
IGJlIHNjYWxlZCAodG8gYXZvaWQgcGl4ZWxhdGlvbikuCi0gICAgdGlsZUltYWdlQ29udGV4dC5z
Y2FsZShjbGFtcGVkQWJzb2x1dGVUaWxlQm91bmRhcmllcy5zaXplKCkgLyB0aWxlQm91bmRhcmll
cy5zaXplKCkpOwotCiAgICAgLy8gQXBwbHkgdGlsZSBpbWFnZSB0cmFuc2Zvcm1hdGlvbnMuCi0g
ICAgaWYgKCF0aWxlSW1hZ2VUcmFuc2Zvcm0uaXNJZGVudGl0eSgpKQotICAgICAgICB0aWxlSW1h
Z2VDb250ZXh0LmNvbmNhdENUTSh0aWxlSW1hZ2VUcmFuc2Zvcm0pOworICAgIGlmICghdHJhbnNm
b3JtLmlzSWRlbnRpdHkoKSkKKyAgICAgICAgdGlsZUltYWdlQ29udGV4dC5jb25jYXRDVE0odHJh
bnNmb3JtKTsKIAogICAgIEFmZmluZVRyYW5zZm9ybSBjb250ZW50VHJhbnNmb3JtYXRpb247CiAg
ICAgaWYgKGF0dHJpYnV0ZXMucGF0dGVybkNvbnRlbnRVbml0cygpID09IFNWR1VuaXRUeXBlczo6
U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWCkKLSAgICAgICAgY29udGVudFRyYW5zZm9y
bWF0aW9uID0gdGlsZUltYWdlVHJhbnNmb3JtOworICAgICAgICBjb250ZW50VHJhbnNmb3JtYXRp
b24gPSB0cmFuc2Zvcm07CiAKICAgICAvLyBEcmF3IHRoZSBjb250ZW50IGludG8gdGhlIEltYWdl
QnVmZmVyLgogICAgIGZvciAoYXV0byYgY2hpbGQgOiBjaGlsZHJlbk9mVHlwZTxTVkdFbGVtZW50
PigqYXR0cmlidXRlcy5wYXR0ZXJuQ29udGVudEVsZW1lbnQoKSkpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5oCmlu
ZGV4IDcxMTdmMTI3ZDBkZGQ3M2JhNWViYzU1OTkwMTBjMjRiYjYyZjA4YTYuLjNmNjM2Njk4ODkz
OTFiYWNmNjhhZDViYjEzNWRkYjBiMjdiOGIxM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uaApAQCAtNjEsNyAr
NjEsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBidWlsZFRpbGVJbWFnZVRyYW5zZm9ybShSZW5k
ZXJFbGVtZW50JiwgY29uc3QgUGF0dGVybkF0dHJpYnV0ZXMmLCBjb25zdCBTVkdQYXR0ZXJuRWxl
bWVudCYsIEZsb2F0UmVjdCYgcGF0dGVybkJvdW5kYXJpZXMsIEFmZmluZVRyYW5zZm9ybSYgdGls
ZUltYWdlVHJhbnNmb3JtKSBjb25zdDsKIAotICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRl
VGlsZUltYWdlKGNvbnN0IFBhdHRlcm5BdHRyaWJ1dGVzJiwgY29uc3QgRmxvYXRSZWN0JiB0aWxl
Qm91bmRhcmllcywgY29uc3QgRmxvYXRSZWN0JiBhYnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIHRpbGVJbWFnZVRyYW5zZm9ybSwgRmxvYXRSZWN0JiBjbGFtcGVk
QWJzb2x1dGVUaWxlQm91bmRhcmllcywgUmVuZGVyaW5nTW9kZSkgY29uc3Q7CisgICAgUmVmUHRy
PEltYWdlQnVmZmVyPiBjcmVhdGVUaWxlSW1hZ2UoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxv
YXRTaXplJiwgY29uc3QgRmxvYXRTaXplJiBzY2FsZSwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwg
Y29uc3QgUGF0dGVybkF0dHJpYnV0ZXMmKSBjb25zdDsKIAogICAgIFBhdHRlcm5EYXRhKiBidWls
ZFBhdHRlcm4oUmVuZGVyRWxlbWVudCYsIE9wdGlvblNldDxSZW5kZXJTVkdSZXNvdXJjZU1vZGU+
LCBHcmFwaGljc0NvbnRleHQmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggZjA4ZTg3MmQyODY2YWU1MzQyNDg2
ZTNjOWY5OThlZGM5NDQ5ODRiOS4uOTczY2ZkMzc1MWZlM2U0ZmZlOGIyMDhlM2ExOWNhOThmMjMz
NTRkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJp
bmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRl
cmluZ0NvbnRleHQuY3BwCkBAIC0yMjcsNTIgKzIyNyw2IEBAIEFmZmluZVRyYW5zZm9ybSBTVkdS
ZW5kZXJpbmdDb250ZXh0OjpjYWxjdWxhdGVUcmFuc2Zvcm1hdGlvblRvT3V0ZXJtb3N0Q29vcmRp
bmF0CiAgICAgcmV0dXJuIGFic29sdXRlVHJhbnNmb3JtOwogfQogCi1SZWZQdHI8SW1hZ2VCdWZm
ZXI+IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVj
dCYgdGFyZ2V0UmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwg
Y29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlIHJl
bmRlcmluZ01vZGUsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCi17Ci0gICAgSW50UmVj
dCBwYWludFJlY3QgPSBjYWxjdWxhdGVJbWFnZUJ1ZmZlclJlY3QodGFyZ2V0UmVjdCwgYWJzb2x1
dGVUcmFuc2Zvcm0pOwotICAgIC8vIERvbid0IGNyZWF0ZSBlbXB0eSBJbWFnZUJ1ZmZlcnMuCi0g
ICAgaWYgKHBhaW50UmVjdC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0g
ICAgRmxvYXRTaXplIHNjYWxlKDEsIDEpOwotICAgIEZsb2F0U2l6ZSBjbGFtcGVkU2l6ZSA9IHBh
aW50UmVjdC5zaXplKCk7Ci0gICAgaWYgKEltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhj
bGFtcGVkU2l6ZSwgc2NhbGUpKQotICAgICAgICBjbGFtcGVkU2l6ZSA9IGNsYW1wZWRTaXplICog
c2NhbGU7Ci0KLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjbGFt
cGVkU2l6ZSwgcmVuZGVyaW5nTW9kZSwgU2hvdWxkVXNlRGlzcGxheUxpc3Q6Ok5vLCBSZW5kZXJp
bmdQdXJwb3NlOjpET00sIDEsIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCwgaG9zdFdp
bmRvdyk7Ci0gICAgaWYgKCFpbWFnZUJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0K
LSAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtOwotICAgIHRyYW5zZm9ybS5zY2FsZShzY2Fs
ZSkudHJhbnNsYXRlKC1wYWludFJlY3QubG9jYXRpb24oKSkubXVsdGlwbHkoYWJzb2x1dGVUcmFu
c2Zvcm0pOwotCi0gICAgR3JhcGhpY3NDb250ZXh0JiBpbWFnZUNvbnRleHQgPSBpbWFnZUJ1ZmZl
ci0+Y29udGV4dCgpOwotICAgIGltYWdlQ29udGV4dC5jb25jYXRDVE0odHJhbnNmb3JtKTsKLQot
ICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsKLX0KLQotUmVmUHRyPEltYWdlQnVmZmVyPiBTVkdSZW5k
ZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgY2xhbXBlZFJlY3QsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JT
cGFjZSYgY29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBjb25zdCBIb3N0
V2luZG93KiBob3N0V2luZG93KQotewotICAgIEludFNpemUgY2xhbXBlZFNpemUgPSByb3VuZGVk
SW50U2l6ZShjbGFtcGVkUmVjdC5zaXplKCkpOwotICAgIEZsb2F0U2l6ZSB1bmNsYW1wZWRTaXpl
ID0gcm91bmRlZEludFNpemUodGFyZ2V0UmVjdC5zaXplKCkpOwotCi0gICAgLy8gRG9uJ3QgY3Jl
YXRlIGVtcHR5IEltYWdlQnVmZmVycy4KLSAgICBpZiAoY2xhbXBlZFNpemUuaXNFbXB0eSgpKQot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1
ZmZlcjo6Y3JlYXRlKGNsYW1wZWRTaXplLCByZW5kZXJpbmdNb2RlLCBTaG91bGRVc2VEaXNwbGF5
TGlzdDo6Tm8sIFJlbmRlcmluZ1B1cnBvc2U6OkRPTSwgMSwgY29sb3JTcGFjZSwgUGl4ZWxGb3Jt
YXQ6OkJHUkE4LCBob3N0V2luZG93KTsKLSAgICBpZiAoIWltYWdlQnVmZmVyKQotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLQotICAgIEdyYXBoaWNzQ29udGV4dCYgaW1hZ2VDb250ZXh0ID0gaW1h
Z2VCdWZmZXItPmNvbnRleHQoKTsKLQotICAgIC8vIENvbXBlbnNhdGUgcm91bmRpbmcgZWZmZWN0
cywgYXMgdGhlIGFic29sdXRlIHRhcmdldCByZWN0IGlzIHVzaW5nIGZsb2F0aW5nLXBvaW50IG51
bWJlcnMgYW5kIHRoZSBpbWFnZSBidWZmZXIgc2l6ZSBpcyBpbnRlZ2VyLgotICAgIGltYWdlQ29u
dGV4dC5zY2FsZSh1bmNsYW1wZWRTaXplIC8gdGFyZ2V0UmVjdC5zaXplKCkpOwotCi0gICAgcmV0
dXJuIGltYWdlQnVmZmVyOwotfQotCiB2b2lkIFNWR1JlbmRlcmluZ0NvbnRleHQ6OnJlbmRlclN1
YnRyZWVUb0NvbnRleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBSZW5kZXJFbGVtZW50JiBp
dGVtLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHN1YnRyZWVDb250ZW50VHJhbnNmb3JtYXRpb24p
CiB7CiAgICAgLy8gUmVuZGVyaW5nIGludG8gYSBidWZmZXIgaW1wbGllcyB3ZSdyZSBiZWluZyB1
c2VkIGZvciBtYXNraW5nLCBjbGlwcGluZywgcGF0dGVybnMgb3IgZmlsdGVycy4gSW4gZWFjaCBv
ZiB0aGVzZQpAQCAtMzA4LDE0ICsyNjIsNiBAQCB2b2lkIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNs
aXBUb0ltYWdlQnVmZmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgQWZmaQogICAg
ICAgICBpbWFnZUJ1ZmZlciA9IG51bGxwdHI7CiB9CiAKLXZvaWQgU1ZHUmVuZGVyaW5nQ29udGV4
dDo6Y2xlYXIyRFJvdGF0aW9uKEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtKQotewotICAgIEFm
ZmluZVRyYW5zZm9ybTo6RGVjb21wb3NlZFR5cGUgZGVjb21wb3NpdGlvbjsKLSAgICB0cmFuc2Zv
cm0uZGVjb21wb3NlKGRlY29tcG9zaXRpb24pOwotICAgIGRlY29tcG9zaXRpb24uYW5nbGUgPSAw
OwotICAgIHRyYW5zZm9ybS5yZWNvbXBvc2UoZGVjb21wb3NpdGlvbik7Ci19Ci0KIGJvb2wgU1ZH
UmVuZGVyaW5nQ29udGV4dDo6YnVmZmVyRm9yZWdyb3VuZChSZWZQdHI8SW1hZ2VCdWZmZXI+JiBp
bWFnZUJ1ZmZlcikKIHsKICAgICBBU1NFUlQobV9wYWludEluZm8pOwpAQCAtMzMzLDcgKzI3OSw3
IEBAIGJvb2wgU1ZHUmVuZGVyaW5nQ29udGV4dDo6YnVmZmVyRm9yZWdyb3VuZChSZWZQdHI8SW1h
Z2VCdWZmZXI+JiBpbWFnZUJ1ZmZlcikKIAogICAgIC8vIENyZWF0ZSBhIG5ldyBidWZmZXIgYW5k
IHBhaW50IHRoZSBmb3JlZ3JvdW5kIGludG8gaXQuCiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikgewot
ICAgICAgICBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVy
KGV4cGFuZGVkSW50U2l6ZShib3VuZGluZ0JveC5zaXplKCkpLCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IoKSwgbV9wYWludEluZm8tPmNvbnRleHQoKSk7CisgICAgICAgIGltYWdlQnVmZmVy
ID0gbV9wYWludEluZm8tPmNvbnRleHQoKS5jcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIoZXhw
YW5kZWRJbnRTaXplKGJvdW5kaW5nQm94LnNpemUoKSkpOwogICAgICAgICBpZiAoIWltYWdlQnVm
ZmVyKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmgKaW5kZXggMDQ0Nzk5M2I5
ODdlMmY1MjQ3MzM0MTA1NDZmMGEwZTVmNDM2ZDQyYi4uYzE2YjM0YWI1ODU4ZGEzMzEwYmZhZTdk
MzZjNjViYmQ2MTk5YzQ4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmgKQEAgLTYwLDE1ICs2MCwxMSBAQCBwdWJsaWM6CiAgICAg
dm9pZCBwcmVwYXJlVG9SZW5kZXJTVkdDb250ZW50KFJlbmRlckVsZW1lbnQmLCBQYWludEluZm8m
LCBOZWVkc0dyYXBoaWNzQ29udGV4dFNhdmUgPSBEb250U2F2ZUdyYXBoaWNzQ29udGV4dCk7CiAg
ICAgYm9vbCBpc1JlbmRlcmluZ1ByZXBhcmVkKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJpbmdG
bGFncyAmIFJlbmRlcmluZ1ByZXBhcmVkOyB9CiAKLSAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVm
ZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zvcm0sIGNvbnN0IERlc3RpbmF0aW9uQ29s
b3JTcGFjZSYsIFJlbmRlcmluZ01vZGUsIGNvbnN0IEhvc3RXaW5kb3cqID0gbnVsbHB0cik7Ci0g
ICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxv
YXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGNsYW1wZWRSZWN0LCBjb25zdCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBIb3N0V2luZG93KiA9
IG51bGxwdHIpOwotCiAgICAgc3RhdGljIHZvaWQgcmVuZGVyU3VidHJlZVRvQ29udGV4dChHcmFw
aGljc0NvbnRleHQmLCBSZW5kZXJFbGVtZW50JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJik7CiAg
ICAgc3RhdGljIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgY29uc3QgRmxvYXRSZWN0JiB0YXJn
ZXRSZWN0LCBSZWZQdHI8SW1hZ2VCdWZmZXI+JiwgYm9vbCBzYWZlVG9DbGVhcik7CiAKICAgICBz
dGF0aWMgZmxvYXQgY2FsY3VsYXRlU2NyZWVuRm9udFNpemVTY2FsaW5nRmFjdG9yKGNvbnN0IFJl
bmRlck9iamVjdCYpOwogICAgIHN0YXRpYyBBZmZpbmVUcmFuc2Zvcm0gY2FsY3VsYXRlVHJhbnNm
b3JtYXRpb25Ub091dGVybW9zdENvb3JkaW5hdGVTeXN0ZW0oY29uc3QgUmVuZGVyT2JqZWN0Jik7
Ci0gICAgc3RhdGljIHZvaWQgY2xlYXIyRFJvdGF0aW9uKEFmZmluZVRyYW5zZm9ybSYpOwogCiAg
ICAgc3RhdGljIEludFJlY3QgY2FsY3VsYXRlSW1hZ2VCdWZmZXJSZWN0KGNvbnN0IEZsb2F0UmVj
dCYgdGFyZ2V0UmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSkK
ICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcAppbmRleCA4N2Qy
ZWE2NjhmODA1MDI1NjMyMjllNTBjNGY2MTRkNjczOWMwNGEwLi40YTljM2M0NWE5MjNlYmQyYWJk
ZjVhMWZkMmQ3ZmU1MDYwNzk0ZDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVJbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxl
bWVudC5jcHAKQEAgLTE3Nyw2ICsxNzcsMzggQEAgdm9pZCBTVkdGRUltYWdlRWxlbWVudDo6bm90
aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MKICAg
ICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxp
ZGF0aW9uKCpwYXJlbnRSZW5kZXJlcik7CiB9CiAKK3N0YXRpYyBpbmxpbmUgSW50UmVjdCBzY2Fs
ZWRJbWFnZUJ1ZmZlclJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFNpemUm
IHNjYWxlKQoreworICAgIGF1dG8gc2NhbGVkUmVjdCA9IHJlY3Q7CisgICAgc2NhbGVkUmVjdC5z
Y2FsZShzY2FsZSk7CisgICAgcmV0dXJuIGVuY2xvc2luZ0ludFJlY3Qoc2NhbGVkUmVjdCk7Cit9
CisKK3N0YXRpYyBpbmxpbmUgRmxvYXRTaXplIGNsYW1waW5nU2NhbGVGb3JJbWFnZUJ1ZmZlclNp
emUoY29uc3QgRmxvYXRTaXplJiBzaXplKQoreworICAgIEZsb2F0U2l6ZSBjbGFtcGluZ1NjYWxl
KDEsIDEpOworICAgIEltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhzaXplLCBjbGFtcGlu
Z1NjYWxlKTsKKyAgICByZXR1cm4gY2xhbXBpbmdTY2FsZTsKK30KKworc3RhdGljIFJlZlB0cjxJ
bWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25z
dCBGbG9hdFNpemUmIHNjYWxlLCBIb3N0V2luZG93KiBob3N0V2luZG93KQoreworICAgIGF1dG8g
c2NhbGVkUmVjdCA9IHNjYWxlZEltYWdlQnVmZmVyUmVjdChyZWN0LCBzY2FsZSk7CisgICAgaWYg
KHNjYWxlZFJlY3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1
dG8gY2xhbXBpbmdTY2FsZSA9IGNsYW1waW5nU2NhbGVGb3JJbWFnZUJ1ZmZlclNpemUoc2NhbGVk
UmVjdC5zaXplKCkpOworCisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVh
dGUoc2NhbGVkUmVjdC5zaXplKCkgKiBjbGFtcGluZ1NjYWxlLCBSZW5kZXJpbmdNb2RlOjpVbmFj
Y2VsZXJhdGVkLCBTaG91bGRVc2VEaXNwbGF5TGlzdDo6Tm8sIFJlbmRlcmluZ1B1cnBvc2U6OkRP
TSwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCwg
aG9zdFdpbmRvdyk7CisgICAgaWYgKCFpbWFnZUJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisKKyAgICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnNjYWxlKGNsYW1waW5nU2NhbGUpOwor
ICAgIGltYWdlQnVmZmVyLT5jb250ZXh0KCkudHJhbnNsYXRlKC1zY2FsZWRSZWN0LmxvY2F0aW9u
KCkpOworICAgIGltYWdlQnVmZmVyLT5jb250ZXh0KCkuc2NhbGUoc2NhbGUpOworICAgIHJldHVy
biBpbWFnZUJ1ZmZlcjsKK30KKwogc3RkOjp0dXBsZTxSZWZQdHI8SW1hZ2VCdWZmZXI+LCBGbG9h
dFJlY3Q+IFNWR0ZFSW1hZ2VFbGVtZW50OjppbWFnZUJ1ZmZlckZvckVmZmVjdCgpIGNvbnN0CiB7
CiAgICAgYXV0byB0YXJnZXQgPSBTVkdVUklSZWZlcmVuY2U6OnRhcmdldEVsZW1lbnRGcm9tSVJJ
U3RyaW5nKGhyZWYoKSwgdHJlZVNjb3BlKCkpOwpAQCAtMTk1LDExICsyMjcsMTIgQEAgc3RkOjp0
dXBsZTxSZWZQdHI8SW1hZ2VCdWZmZXI+LCBGbG9hdFJlY3Q+IFNWR0ZFSW1hZ2VFbGVtZW50Ojpp
bWFnZUJ1ZmZlckZvckVmZmUKICAgICBpZiAoIWFic29sdXRlVHJhbnNmb3JtLmlzSW52ZXJ0aWJs
ZSgpKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgYXV0byBzaGVhckZyZWVBYnNvbHV0ZVRy
YW5zZm9ybSA9IEFmZmluZVRyYW5zZm9ybShhYnNvbHV0ZVRyYW5zZm9ybS54U2NhbGUoKSwgMCwg
MCwgYWJzb2x1dGVUcmFuc2Zvcm0ueVNjYWxlKCksIDAsIDApOwotCisgICAgLy8gSWdub3JlIDJE
IHJvdGF0aW9uLCBhcyBpdCBkb2Vzbid0IGFmZmVjdCB0aGUgaW1hZ2Ugc2l6ZS4KKyAgICBGbG9h
dFNpemUgc2NhbGUoYWJzb2x1dGVUcmFuc2Zvcm0ueFNjYWxlKCksIGFic29sdXRlVHJhbnNmb3Jt
LnlTY2FsZSgpKTsKICAgICBhdXRvIGltYWdlUmVjdCA9IHJlbmRlcmVyLT5yZXBhaW50UmVjdElu
TG9jYWxDb29yZGluYXRlcygpOwogCi0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IFNWR1JlbmRlcmlu
Z0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGltYWdlUmVjdCwgc2hlYXJGcmVlQWJzb2x1dGVU
cmFuc2Zvcm0sIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBSZW5kZXJpbmdNb2RlOjpV
bmFjY2VsZXJhdGVkLCByZW5kZXJlci0+aG9zdFdpbmRvdygpKTsKKyAgICAvLyBGSVhNRTogUmVw
bGFjZSB0aGlzIGNhbGwgd2l0aCBHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKCkg
b25jZSB0aGUgZGVzdGluYXRpb24gR3JhcGhpY3NDb250ZXh0IGlzIHBhc3NlZCB0byB0aGlzIGZ1
bmN0aW9uLgorICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBjcmVhdGVJbWFnZUJ1ZmZlcihpbWFnZVJl
Y3QsIHNjYWxlLCByZW5kZXJlci0+aG9zdFdpbmRvdygpKTsKICAgICBpZiAoIWltYWdlQnVmZmVy
KQogICAgICAgICByZXR1cm4geyB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0lt
YWdlLmNwcAppbmRleCBmNDE0MDEyMzM4OTE5MDM4N2FkMjc2OTZhNTA1NDQ1NGRmODkwMjhhLi42
YmZmODk3NmM3OGJjYmYxZjRjMzMwMzdhYmY3YmM1MjViZGY0NGRiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKQEAgLTI1MCw3ICsyNTAsNyBAQCB2b2lkIFNWR0lt
YWdlOjpkcmF3UGF0dGVybkZvckNvbnRhaW5lcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IEZsb2F0U2l6ZQogICAgIEZsb2F0UmVjdCBpbWFnZUJ1ZmZlclNpemUgPSB6b29tZWRDb250
YWluZXJSZWN0OwogICAgIGltYWdlQnVmZmVyU2l6ZS5zY2FsZShpbWFnZUJ1ZmZlclNjYWxlLndp
ZHRoKCksIGltYWdlQnVmZmVyU2NhbGUuaGVpZ2h0KCkpOwogCi0gICAgYXV0byBidWZmZXIgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihleHBhbmRlZEludFNpemUoaW1hZ2VC
dWZmZXJTaXplLnNpemUoKSksIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBjb250
ZXh0KTsKKyAgICBhdXRvIGJ1ZmZlciA9IGNvbnRleHQuY3JlYXRlSW1hZ2VCdWZmZXIoZXhwYW5k
ZWRJbnRTaXplKGltYWdlQnVmZmVyU2l6ZS5zaXplKCkpKTsKICAgICBpZiAoIWJ1ZmZlcikgLy8g
RmFpbGVkIHRvIGFsbG9jYXRlIGJ1ZmZlci4KICAgICAgICAgcmV0dXJuOwogICAgIGRyYXdGb3JD
b250YWluZXIoYnVmZmVyLT5jb250ZXh0KCksIGNvbnRhaW5lclNpemUsIGNvbnRhaW5lclpvb20s
IGluaXRpYWxGcmFnbWVudFVSTCwgaW1hZ2VCdWZmZXJTaXplLCB6b29tZWRDb250YWluZXJSZWN0
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVE
aXNwbGF5TGlzdFJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNwcAppbmRleCA0YTI4YmQ0NmZhMTc3MDUzZTU3
YzMxMjVmMWVlYWQxMGZjZWQ2NWU3Li42MzNiMzVmNTc1N2NmMTgwNzE0MWVmYjAyNDU5YjNjMzhh
M2Y4MzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBAIC0yMDIsNyArMjAyLDcg
QEAgdm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjpjbGlwUGF0aChjb25zdCBQYXRoJiBw
YXRoLCBXaW5kUnVsZSBydWxlKQogCiB2b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OmJl
Z2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNv
bnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSkKIHsKLSAgICBtX21hc2tJbWFn
ZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGRlc3RpbmF0aW9u
LnNpemUoKSwgY29sb3JTcGFjZSwgZHJhd2luZ0NvbnRleHQoKSk7CisgICAgbV9tYXNrSW1hZ2VC
dWZmZXIgPSBkcmF3aW5nQ29udGV4dCgpLmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihkZXN0
aW5hdGlvbi5zaXplKCksIGNvbG9yU3BhY2UpOwogfQogCiB2b2lkIFJlbW90ZURpc3BsYXlMaXN0
UmVjb3JkZXI6OmVuZENsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3Rp
bmF0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuY3BwCmlu
ZGV4IDlkMzQzZmE5YWM0OTRiYWM1ZWE0Y2FkZDAxMTliMDBjZTJjODY3NmMuLmM2ZWE2MmRjMjc3
ZTM4MjJjMzgxMGU1MDhjOGUyYWRkYmNiNWIwNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3Bs
YXlMaXN0UmVjb3JkZXJQcm94eS5jcHAKQEAgLTQ2NCw2ICs0NjQsMTYgQEAgc3RkOjp1bmlxdWVf
cHRyPEdyYXBoaWNzQ29udGV4dD4gUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5OjpjcmVh
dGVOZXN0ZWRDb24KICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSZW1vdGVEaXNwbGF5TGlzdFJlY29y
ZGVyUHJveHk+KCp0aGlzLCBpbml0aWFsQ2xpcCwgaW5pdGlhbENUTSk7CiB9CiAKK1JlZlB0cjxJ
bWFnZUJ1ZmZlcj4gUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5OjpjcmVhdGVJbWFnZUJ1
ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYg
Y29sb3JTcGFjZSwgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdNb2RlPiByZW5kZXJpbmdNb2RlKSBj
b25zdAoreworICAgIGlmIChVTkxJS0VMWSghbV9yZW5kZXJpbmdCYWNrZW5kKSkgeworICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQor
CisgICAgcmV0dXJuIG1fcmVuZGVyaW5nQmFja2VuZC0+Y3JlYXRlSW1hZ2VCdWZmZXIoc2l6ZSwg
cmVuZGVyaW5nTW9kZS52YWx1ZV9vcih0aGlzLT5yZW5kZXJpbmdNb2RlKCkpLCAxLCBjb2xvclNw
YWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlz
dFJlY29yZGVyUHJveHkuaAppbmRleCAzMDA5OGJlYTYxYzFiNjQ0ZTQyMGFjYTMzMzlmOTA0NDkx
ZTRiN2ZmLi44NTBiZjYzOWY2NTcwM2MxODkyY2MxOTdiYWZlN2QxYWE2ZDQ1YmFiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlM
aXN0UmVjb3JkZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmgKQEAgLTE0NCw2ICsxNDQsOCBA
QCBwcml2YXRlOgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dD4gY3JlYXRlTmVzdGVkQ29udGV4dChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGluaXRpYWxD
bGlwLCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0pIGZpbmFsOwog
CisgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25z
dCBXZWJDb3JlOjpGbG9hdFNpemUmLCBjb25zdCBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UmID0gV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6UmVuZGVyaW5nTW9kZT4gPSBzdGQ6Om51bGxvcHQpIGNvbnN0IGZpbmFsOwor
CiAgICAgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIG1fZGVzdGluYXRpb25C
dWZmZXJJZGVudGlmaWVyOwogICAgIFdlYWtQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IG1faW1h
Z2VCdWZmZXI7CiAgICAgV2Vha1B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk+IG1fcmVu
ZGVyaW5nQmFja2VuZDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450919</attachid>
            <date>2022-02-04 11:21:10 -0800</date>
            <delta_ts>2022-02-04 22:06:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235758-20220204112109.patch</filename>
            <type>text/plain</type>
            <size>76810</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4OTkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTU5YjJjYWIxYzRmZDc0
MGMyMmYyYWY2YTczY2E1YjdiOWMyOTBlYS4uZmI1MTBhNzFjMjEwNzNlZTg1ZThiY2U1NTFhZjA0
NmY0ODdmMjlhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzNCBAQAorMjAyMi0wMi0wNCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IE1vdmUgSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcigpIGFuZCBTVkdS
ZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlciB0byBHcmFwaGljc0NvbnRleHQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTc1OAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBnb2FsIG9m
IHRoaXMgcGF0Y2ggaXMgdG8gcmVjb3JkIHRoZSBkcmF3aW5nIGlmIHRoZSBjb25jcmV0ZSB0eXBl
IG9mIAorICAgICAgICB0aGUgR3JhcGhpY3NDb250ZXh0IGlzIFJlbW90ZURpc3BsYXlMaXN0UmVj
b3JkZXJQcm94eS4gQ3VycmVudGx5IGFsbCB0aGUKKyAgICAgICAgaW50ZXJtZWRpYXRlIGNvbXBh
dGlibGUgSW1hZ2VCdWZmZXJzIGFyZSBvZiB0eXBlIENvbmNyZXRlSW1hZ2VCdWZmZXIuCisgICAg
ICAgIFRoZSBkcmF3aW5nIHRvIHRoZXNlIEltYWdlQnVmZmVycyBzdGlsbCBoYXBwZW5zIGluIHRo
ZSBXZWJQcm9jZXNzLiBNb3Jlb3ZlcgorICAgICAgICB3aGVuIHdlIGNhbGwgZHJhd0ltYWdlQnVm
ZmVyKCkgZm9yIG9uZSBvZiB0aGVzZSBpbnRlcm1lZGlhdGUgSW1hZ2VCdWZmZXJzCisgICAgICAg
IHRvIGEgcmVtb3RlIEltYWdlQnVmZmVyLCB3ZSBzaW5rIHRoZSBpbnRlcm1lZGlhdGUgSW1hZ2VC
dWZmZXIgdG8gYSBOYXRpdmVJbWFnZQorICAgICAgICBhbmQgc2VuZCBpdCB0byBHUFVQcm9jZXNz
LgorCisgICAgICAgIFRvIGZpeCB0aGlzLCBHcmFwaGljc0NvbnRleHQgd2lsbCBwcm92aWRlIHRo
cmVlIGZ1bmN0aW9ucyBmb3IgY3JlYXRpbmcKKyAgICAgICAgdGhlIEltYWdlQnVmZmVyOgorCisg
ICAgICAgIDEuIEdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoKSAodmlydHVhbCk6
IENyZWF0ZXMgYW4gSW1hZ2VCdWZmZXIKKyAgICAgICAgICAgc2ltaWxhciB0byB0aGUgdW5kZXJs
eWluZyBJbWFnZUJ1ZmZlciBvZiB0aGUgR3JhcGhpY3NDb250ZXh0LiBCZWNhdXNlCisgICAgICAg
ICAgIFJlY29yZGVySW1wbCBhbmQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5IGFyZSBz
dXBlciBjbGFzc2VzIG9mCisgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dCwgdGhleSB3aWxsIG92
ZXJyaWRlIHRoaXMgbWV0aG9kIGFuZCByZXR1cm4gdGhlIGRlc2lyZWQKKyAgICAgICAgICAgdHlw
ZSBvZiBJbWFnZUJ1ZmZlci4KKworICAgICAgICAyLiBHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZUlt
YWdlQnVmZmVyKCkgKG5vbi12aXJ0dWFsKTogQ3JlYXRlcyBhIHNjYWxlZAorICAgICAgICAgICBJ
bWFnZUJ1ZmZlciBhbmQgc2V0cyB0aGUgY29udGV4dCBhY2NvcmRpbmdseS4gSXQgYWxsb3dzIGFs
c28gZm9yY2luZworICAgICAgICAgICBjcmVhdGluZyBhbiBpbi1wcm9jZXNzIENvbmNyZXRlSW1h
Z2VCdWZmZXIuIFRoaXMgaXMgY29udHJvbGxlZCBieSBhbgorICAgICAgICAgICBleHRyYSBwYXJh
bWV0ZXIgb2YgdGhlIGVudW0gdHlwZSBDcmVhdGVNZXRob2QuCisKKyAgICAgICAgMy4gR3JhcGhp
Y3NDb250ZXh0OjpjcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIoKSAodmlydHVhbCk6IFRha2Vz
IHRoZQorICAgICAgICAgICBzY2FsZUZhY3RvcigpIGludG8gY29uc2lkZXJhdGlvbiB3aGVuIGNy
ZWF0aW5nIHRoZSBJbWFnZUJ1ZmZlci4gQnkgCisgICAgICAgICAgIGRlZmF1bHQgdGhlIHR5cGUg
b2YgdGhlIEltYWdlQnVmZmVyIGlzIHRoZSBDb25jcmV0ZUltYWdlQnVmZmVyLgorICAgICAgICAg
ICBCZWNhdXNlIFJlY29yZCBpbmhlcml0cyBHcmFwaGljc0NvbnRleHQgYW5kIGJlY2F1c2UgaXQg
aXMgdGhlIGJhc2UKKyAgICAgICAgICAgY2xhc3Mgb2YgUmVjb3JkZXJJbXBsIGFuZCBSZW1vdGVE
aXNwbGF5TGlzdFJlY29yZGVyUHJveHksIGl0IHdpbGwgCisgICAgICAgICAgIG92ZXJyaWRlIHRo
aXMgZnVuY3Rpb24gdG8gcmV0dXJuIHRoZSBkZWZhdWx0IEltYWdlQnVmZmVyLgorCisgICAgICAg
IFR3byB2ZXJzaW9ucyBvZiB0aGVzZSBmdW5jdGlvbnMgYXJlIHByb3ZpZGVkOiBvbmUgdGFrZXMg
YSBGbG9hdFNpemUgYW5kCisgICAgICAgIHRoZSBvdGhlciB0YWtlcyBhIEZsb2F0UmVjY3QuIFRo
ZSBGbG9hdFJlY3QgdmVyc2lvbiBleHBhbmRzIHRoZSBmb3VyIGNvcm5lcnMgCisgICAgICAgIG9m
IHRoZSByZWN0YW5nbGUgdG8gZnVsbCBwaXhlbHMuCisKKyAgICAgICAgKiBodG1sL0N1c3RvbVBh
aW50Q2FudmFzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbVBhaW50Q2FudmFzOjpyZXBs
YXlEaXNwbGF5TGlzdCBjb25zdCk6CisgICAgICAgICogaHRtbC9DdXN0b21QYWludEltYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbVBhaW50SW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAg
ICAgICAgKiBodG1sL09mZnNjcmVlbkNhbnZhcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPZmZz
Y3JlZW5DYW52YXM6OnRyYW5zZmVyVG9JbWFnZUJpdG1hcCk6CisgICAgICAgIChXZWJDb3JlOjpP
ZmZzY3JlZW5DYW52YXM6OmNvbW1pdFRvUGxhY2Vob2xkZXJDYW52YXMpOgorICAgICAgICAqIGh0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZHJhd0ltYWdlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9jb2NvYS9UaGVtZUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd0Fw
cGxlUGF5QnV0dG9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3UGF0dGVybik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHcmFkaWVudEltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNjYWxlZEltYWdl
QnVmZmVyU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpzY2FsZWRJbWFnZUJ1ZmZlclJlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Y2xhbXBpbmdTY2FsZUZvckltYWdlQnVmZmVyU2l6ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnRpZ2h0SW1hZ2VCdWZmZXJTaXplIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y29tcGF0aWJsZUltYWdlQnVm
ZmVyU2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNyZWF0
ZUltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
Y3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZUJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y2xvbmUp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNvbXBhdGlibGVCdWZm
ZXJTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpjb21wYXRp
YmxlQnVmZmVySW5mbyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6
Y29weVJlY3RUb0J1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2Vu
ZXJhdGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmFtZWRJbWFnZUdlbmVyYXRlZElt
YWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9j
dW1lbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjp1cGRh
dGVDYWNoZWRJbWFnZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1h
Z2U6OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0RyYXdHbHlw
aHNSZWNvcmRlckNvcmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdHbHlwaHNSZWNv
cmRlcjo6ZHJhd09UU1ZHUnVuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVjb3JkZXI6OmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlciBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZWNvcmRlckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVy
SW1wbDo6Y3JlYXRlSW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6YXBwbHlJdGVtKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpUaGVtZU1h
Yzo6ZHJhd0NlbGxPckZvY3VzUmluZ1dpdGhWaWV3SW50b0NvbnRleHQpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpz
ZXR1cEZpbHRlcnMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6cGF0dGVybkZvckRlc2NyaXB0aW9uKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyRmlsdGVyczo6YWxsb2NhdGVCYWNraW5nU3RvcmVJZk5lZWRlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllckZpbHRlcnM6OmJlZ2luRmlsdGVyRWZmZWN0KToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmg6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclRoZW1lQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUNvY29hOjpw
YWludEFwcGxlUGF5QnV0dG9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMu
bW06CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRMaXN0QnV0dG9uRm9y
SW5wdXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50UHJvZ3Jlc3NC
YXIpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6YXBwbHlDbGlw
cGluZ1RvQ29udGV4dCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6
YXBwbHlSZXNvdXJjZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZUdyYWRpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZU1hc2tBbmRTd2FwQ29udGV4
dEZvclRleHRHcmFkaWVudCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZU1hc2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZU1hc2tl
cjo6YXBwbHlSZXNvdXJjZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZVBhdHRlcm4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VQYXR0
ZXJuOjpidWlsZFBhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VQ
YXR0ZXJuOjpjcmVhdGVUaWxlSW1hZ2UgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdS
ZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlcmluZ0NvbnRl
eHQ6OmJ1ZmZlckZvcmVncm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyaW5nQ29u
dGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZH
UmVuZGVyaW5nQ29udGV4dDo6Y2xlYXIyRFJvdGF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVJ
bWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2NhbGVkSW1hZ2VCdWZmZXJSZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OmNsYW1waW5nU2NhbGVGb3JJbWFnZUJ1ZmZlclNpemUpOgor
ICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRkVJbWFnZUVsZW1lbnQ6OmltYWdlQnVmZmVyRm9yRWZmZWN0IGNvbnN0KToKKyAgICAgICAg
KiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6
OmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVyKToKKwogMjAyMi0wMi0wMiAgU2FpZCBBYm91LUhhbGxh
d2EgIDxzYWlkQGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVIFByb2Nlc3NdIFJlbW92ZSBEaXNw
bGF5TGlzdDo6UmVwbGF5ZXI6OkRlbGVnYXRlIGFuZCBEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBs
OjpEZWxlZ2F0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCBjZGE2NDQwZTlmMGVlNGQzMDZlYjc3NmY2MGYxNTVlMWM2
NmQ2OTYxLi5iNWJiM2U0NjNhMDM3NzM2MGY5ODk2YjRkMjU0NTIxNWY3N2NiMTQzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE2IEBACisyMDIyLTAyLTA0ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRA
YXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gTW92ZSBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyKCkgYW5kIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0
ZUltYWdlQnVmZmVyIHRvIEdyYXBoaWNzQ29udGV4dAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NzU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3Bs
YXlMaXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVEaXNwbGF5TGlzdFJl
Y29yZGVyOjpiZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcyk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5OjpjcmVhdGVJbWFnZUJ1
ZmZlciBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlz
cGxheUxpc3RSZWNvcmRlclByb3h5Lmg6CisKIDIwMjItMDItMDIgIFNhaWQgQWJvdS1IYWxsYXdh
ICA8c2FpZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXSBSZW1vdmUgRGlzcGxh
eUxpc3Q6OlJlcGxheWVyOjpEZWxlZ2F0ZSBhbmQgRGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6
RGVsZWdhdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRDYW52
YXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWludENhbnZhcy5jcHAKaW5kZXgg
MmMxYTNhYTZjNjU3OTNlYzZmNWQ4NGJkYTRlZjczZWM2OTY5OGVhMy4uNDA0MjkxMWQwN2JjNzc4
MzkwMzAxMzFkNzhkNzNhNTU3YjYzZDBlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9DdXN0b21QYWludENhbnZhcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21Q
YWludENhbnZhcy5jcHAKQEAgLTczLDcgKzczLDcgQEAgdm9pZCBDdXN0b21QYWludENhbnZhczo6
cmVwbGF5RGlzcGxheUxpc3QoR3JhcGhpY3NDb250ZXh0KiBjdHgpIGNvbnN0CiAgICAgLy8gRklY
TUU6IFVzaW5nIGFuIGludGVybWVkaWF0ZSBidWZmZXIgaXMgbm90IG5lZWRlZCBpZiB0aGVyZSBh
cmUgbm8gY29tcG9zaXRlIG9wZXJhdGlvbnMuCiAgICAgYXV0byBjbGlwQm91bmRzID0gY3R4LT5j
bGlwQm91bmRzKCk7CiAKLSAgICBhdXRvIGltYWdlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBh
dGlibGVCdWZmZXIoY2xpcEJvdW5kcy5zaXplKCksICpjdHgpOworICAgIGF1dG8gaW1hZ2UgPSBj
dHgtPmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihjbGlwQm91bmRzLnNpemUoKSk7CiAgICAg
aWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0N1c3RvbVBhaW50SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21Q
YWludEltYWdlLmNwcAppbmRleCBmNDcxOTk0NmM1OGUwNTliZTMzZGI3MWQzZjdiNmY2MDkyMGE1
Y2FjLi5mYjhhZTZiZmQ3MWYzZWY2MWEzNDBlMjcwMDE0MDM4ZTI3NjY5NzBmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0N1c3RvbVBhaW50SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRJbWFnZS5jcHAKQEAgLTE5OSw3ICsxOTksNyBAQCB2b2lk
IEN1c3RvbVBhaW50SW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgZGVzdENvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdAogICAgIGFkanVzdGVkUGF0dGVybkNUTS5zY2FsZSgxLjAgLyB4
U2NhbGUsIDEuMCAvIHlTY2FsZSk7CiAgICAgYWRqdXN0ZWRTcmNSZWN0LnNjYWxlKHhTY2FsZSwg
eVNjYWxlKTsKIAotICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGli
bGVCdWZmZXIoYWRqdXN0ZWRTaXplLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgZGVz
dENvbnRleHQpOworICAgIGF1dG8gYnVmZmVyID0gZGVzdENvbnRleHQuY3JlYXRlQ29tcGF0aWJs
ZUltYWdlQnVmZmVyKGFkanVzdGVkU2l6ZSk7CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJl
dHVybjsKICAgICBkb0N1c3RvbVBhaW50KGJ1ZmZlci0+Y29udGV4dCgpLCBhZGp1c3RlZFNpemUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwCmluZGV4IDRjOWM4Y2ZmMThi
OWM3ZWExMmQxNDEzMTJjNjYwNjY2ZGNmMGM4NzkuLjg4ZDlmNzhjOWE1YzljYmIyMjA4Y2RjNzg5
NDExZGU4Mjc2NmMzMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVu
Q2FudmFzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAK
QEAgLTI4Myw3ICsyODMsNyBAQCBFeGNlcHRpb25PcjxSZWZQdHI8SW1hZ2VCaXRtYXA+PiBPZmZz
Y3JlZW5DYW52YXM6OnRyYW5zZmVyVG9JbWFnZUJpdG1hcCgpCiAgICAgICAgIC8vIEFzIHRoZSBj
YW52YXMgY29udGV4dCBzdGF0ZSBpcyBzdG9yZWQgaW4gR3JhcGhpY3NDb250ZXh0LCB3aGljaCBp
cyBvd25lZAogICAgICAgICAvLyBieSBidWZmZXIoKSwgdG8gYXZvaWQgcmVzZXR0aW5nIHRoZSBj
b250ZXh0IHN0YXRlLCB3ZSBoYXZlIHRvIG1ha2UgYSBjb3B5IGFuZAogICAgICAgICAvLyBjbGVh
ciB0aGUgb3JpZ2luYWwgYnVmZmVyIHJhdGhlciB0aGFuIHJldHVybmluZyB0aGUgb3JpZ2luYWwg
YnVmZmVyLgotICAgICAgICBhdXRvIGJ1ZmZlckNvcHkgPSBidWZmZXIoKS0+Y29weVJlY3RUb0J1
ZmZlcihGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBidWZmZXIoKS0+bG9naWNhbFNpemUoKSksIGJ1
ZmZlcigpLT5jb2xvclNwYWNlKCksICpkcmF3aW5nQ29udGV4dCgpKTsKKyAgICAgICAgYXV0byBi
dWZmZXJDb3B5ID0gYnVmZmVyKCktPmNsb25lKCk7CiAgICAgICAgIGRvd25jYXN0PE9mZnNjcmVl
bkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRD4oKm1fY29udGV4dCkuY2xlYXJDYW52YXMoKTsKICAg
ICAgICAgY2xlYXJDb3BpZWRJbWFnZSgpOwogCkBAIC00NTEsMTQgKzQ1MSwxMyBAQCB2b2lkIE9m
ZnNjcmVlbkNhbnZhczo6Y29tbWl0VG9QbGFjZWhvbGRlckNhbnZhcygpCiAgICAgICAgIG1fY29u
dGV4dC0+cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52YXMoKTsKIAogICAgIGlmIChtX3BsYWNl
aG9sZGVyRGF0YS0+YnVmZmVyUGlwZVNvdXJjZSkgewotICAgICAgICBhdXRvIGJ1ZmZlckNvcHkg
PSBpbWFnZUJ1ZmZlci0+Y29weVJlY3RUb0J1ZmZlcihGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBp
bWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
LCBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpKTsKLSAgICAgICAgaWYgKGJ1ZmZlckNvcHkpCisgICAg
ICAgIGlmIChhdXRvIGJ1ZmZlckNvcHkgPSBpbWFnZUJ1ZmZlci0+Y2xvbmUoKSkKICAgICAgICAg
ICAgIG1fcGxhY2Vob2xkZXJEYXRhLT5idWZmZXJQaXBlU291cmNlLT5oYW5kbGUoV1RGTW92ZShi
dWZmZXJDb3B5KSk7CiAgICAgfQogCiAgICAgTG9ja2VyIGxvY2tlciB7IG1fcGxhY2Vob2xkZXJE
YXRhLT5idWZmZXJMb2NrIH07CiAgICAgYm9vbCBzaG91bGRQdXNoQnVmZmVyID0gIW1fcGxhY2Vo
b2xkZXJEYXRhLT5wZW5kaW5nQ29tbWl0QnVmZmVyOwotICAgIG1fcGxhY2Vob2xkZXJEYXRhLT5w
ZW5kaW5nQ29tbWl0QnVmZmVyID0gaW1hZ2VCdWZmZXItPmNvcHlSZWN0VG9CdWZmZXIoRmxvYXRS
ZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2VCdWZmZXItPmxvZ2ljYWxTaXplKCkpLCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IoKSwgaW1hZ2VCdWZmZXItPmNvbnRleHQoKSk7CisgICAgbV9wbGFj
ZWhvbGRlckRhdGEtPnBlbmRpbmdDb21taXRCdWZmZXIgPSBpbWFnZUJ1ZmZlci0+Y2xvbmUoKTsK
ICAgICBpZiAobV9wbGFjZWhvbGRlckRhdGEtPnBlbmRpbmdDb21taXRCdWZmZXIgJiYgc2hvdWxk
UHVzaEJ1ZmZlcikKICAgICAgICAgcHVzaEJ1ZmZlclRvUGxhY2Vob2xkZXIoKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
REJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQmFzZS5jcHAKaW5kZXggNTUwZTY4YjI4NzE2MzhkMjA3YWNlYjIzMjc1NDkzZGVhNmI0
MTJjNi4uMjA1ZWU2MjE5ODJhZTFhOThkYmJhOWM2MGJhNjgwNDU2N2NjZjhlMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQmFzZS5jcHAKQEAgLTE2MTEsNyArMTYxMSw4IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmRyYXdJbWFnZShDYW52YXNCYXNlJiBzb3VyY2VD
YW52CiAgICAgICAgIHJlcGFpbnRFbnRpcmVDYW52YXMgPSB0cnVlOwogICAgIH0gZWxzZSBpZiAo
c3RhdGUoKS5nbG9iYWxDb21wb3NpdGUgPT0gQ29tcG9zaXRlT3BlcmF0b3I6OkNvcHkpIHsKICAg
ICAgICAgaWYgKCZzb3VyY2VDYW52YXMgPT0gJmNhbnZhc0Jhc2UoKSkgewotICAgICAgICAgICAg
aWYgKGF1dG8gY29weSA9IGJ1ZmZlci0+Y29weVJlY3RUb0J1ZmZlcihzcmNSZWN0LCBjb2xvclNw
YWNlKCksICpjKSkgeworICAgICAgICAgICAgaWYgKGF1dG8gY29weSA9IGMtPmNyZWF0ZUNvbXBh
dGlibGVJbWFnZUJ1ZmZlcihzcmNSZWN0LnNpemUoKSwgY29sb3JTcGFjZSgpKSkgeworICAgICAg
ICAgICAgICAgIGNvcHktPmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIoKmJ1ZmZlciwgLXNyY1Jl
Y3QubG9jYXRpb24oKSk7CiAgICAgICAgICAgICAgICAgY2xlYXJDYW52YXMoKTsKICAgICAgICAg
ICAgICAgICBjLT5kcmF3SW1hZ2VCdWZmZXIoKmNvcHksIGRzdFJlY3QsIHsgeyB9LCBzcmNSZWN0
LnNpemUoKSB9LCB7IHN0YXRlKCkuZ2xvYmFsQ29tcG9zaXRlLCBzdGF0ZSgpLmdsb2JhbEJsZW5k
IH0pOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y29jb2EvVGhlbWVDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1RoZW1l
Q29jb2EubW0KaW5kZXggZWNkNTBiNzBmZGJiZjZlOTgzZjNhNzE1NjUyN2IyMTA2ODg0ZmJmZS4u
ZTJiNDkwNGQ4Zjg2MjhkMzhiNjE3MGUwYTU4MDdjMzU1NjFjZjE1MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVGhlbWVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9UaGVtZUNvY29hLm1tCkBAIC0xMTAsNyArMTEwLDcgQEAgc3Rh
dGljIENHUERGUGFnZVJlZiBhcHBsZVBheUJ1dHRvbkxvZ29XaGl0ZSgpCiAKIHN0YXRpYyB2b2lk
IGRyYXdBcHBsZVBheUJ1dHRvbihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIENHUERGUGFnZVJl
ZiBwYWdlLCBjb25zdCBGbG9hdFNpemUmIHNpemUpCiB7Ci0gICAgYXV0byBpbWFnZUJ1ZmZlciA9
IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKHNpemUsIGNvbnRleHQpOworICAg
IGF1dG8gaW1hZ2VCdWZmZXIgPSBjb250ZXh0LmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihz
aXplKTsKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAppbmRleCA4MDI3
NDM1YWQyOTQ1NjYyOThhNzkxYjNhZjZhZmE5YmYyNzgxZTY4Li41NzQ1NDQ3YzhjNTRmZjg4YTkz
NjZmNTBmZWIzNjRkNzc4MGNiMDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCkBAIC0zNDcsNyArMzQ3LDcgQEAgdm9pZCBCaXRtYXBJ
bWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LAogICAgIH0KIAogICAgIGlmICghbV9jYWNoZWRJbWFnZSkgewotICAgICAgICBh
dXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGV4cGFuZGVk
SW50U2l6ZSh0aWxlUmVjdC5zaXplKCkpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwg
Y3R4dCk7CisgICAgICAgIGF1dG8gYnVmZmVyID0gY3R4dC5jcmVhdGVDb21wYXRpYmxlSW1hZ2VC
dWZmZXIoZXhwYW5kZWRJbnRTaXplKHRpbGVSZWN0LnNpemUoKSkpOwogICAgICAgICBpZiAoIWJ1
ZmZlcikKICAgICAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwCmluZGV4
IDUwZmUwYzQ2NjE0YjcwMmJhMTg2MWU3MzgwM2MxMDAyNWEwODA0YjQuLjYxYTM4MzIzM2NiNmVi
MWE5NGU5MWYxZmZlNDc3ZjJjY2RmMTUxMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAKQEAg
LTEwMyw3ICsxMDMsNyBAQCBJbWFnZURyYXdSZXN1bHQgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6
OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbAogCiB2b2lkIENyb3NzZmFk
ZUdlbmVyYXRlZEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNl
LCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBv
cHRpb25zKQogewotICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNp
emUoKSwgY29udGV4dC5yZW5kZXJpbmdNb2RlKCksIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBjb250
ZXh0LmNyZWF0ZUltYWdlQnVmZmVyKHNpemUoKSk7CiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAg
ICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFkaWVudEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYWRpZW50SW1hZ2UuY3BwCmluZGV4IGZlZjM2ZTU3YTY1YTE0ODY5MGRiMzBhMmMyYTU2ODRk
MDAwYzhhZGMuLmJkYTcwMTEwOThmYTUxN2E2NDQzMmFmZWNiZDA1M2MxZjk1OTVjNTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3Bw
CkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgR3JhZGllbnRJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhp
Y3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkCiAgICAgdW5zaWduZWQg
Z2VuZXJhdG9ySGFzaCA9IG1fZ3JhZGllbnQtPmhhc2goKTsKIAogICAgIGlmICghbV9jYWNoZWRJ
bWFnZSB8fCBtX2NhY2hlZEdlbmVyYXRvckhhc2ggIT0gZ2VuZXJhdG9ySGFzaCB8fCBtX2NhY2hl
ZEFkanVzdGVkU2l6ZSAhPSBhZGp1c3RlZFNpemUgfHwgIWFyZUVzc2VudGlhbGx5RXF1YWwoZGVz
dENvbnRleHQuc2NhbGVGYWN0b3IoKSwgbV9jYWNoZWRTY2FsZUZhY3RvcikpIHsKLSAgICAgICAg
YXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGFk
anVzdGVkU2l6ZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIGRlc3RDb250ZXh0KTsK
KyAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IGRlc3RDb250ZXh0LmNyZWF0ZUNvbXBhdGlibGVJ
bWFnZUJ1ZmZlcihhZGp1c3RlZFNpemUpOwogICAgICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAg
ICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCBhNDkyZTk4ZGEyODBjMjNlYzczNjMwN2Fk
ZTJkZGVmMzJiZmE0Y2VmLi4yY2NkYjEwNzMyYjZjNmU3ZTdkYWI4MzE5MTFhZWIwNGIzMmVjY2Y4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5jcHAKQEAgLTU1MSw2ICs1NTEsMTA2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpk
cmF3QmlkaVRleHQoY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1biwK
ICAgICBiaWRpUnVucy5jbGVhcigpOwogfQogCitzdGF0aWMgaW5saW5lIEludFNpemUgc2NhbGVk
SW1hZ2VCdWZmZXJTaXplKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3QgRmxvYXRTaXplJiBz
Y2FsZSkKK3sKKyAgICAvLyBFbmxhcmdlIHRoZSBidWZmZXIgc2l6ZSBpZiB0aGUgY29udGV4dCdz
IHRyYW5zZm9ybSBpcyBzY2FsaW5nIGl0IHNvIHdlIG5lZWQgYSBoaWdoZXIKKyAgICAvLyByZXNv
bHV0aW9uIHRoYW4gb25lIHBpeGVsIHBlciB1bml0LgorICAgIHJldHVybiBleHBhbmRlZEludFNp
emUoc2l6ZSAqIHNjYWxlKTsKK30KKworc3RhdGljIGlubGluZSBJbnRSZWN0IHNjYWxlZEltYWdl
QnVmZmVyUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgc2NhbGUp
Cit7CisgICAgYXV0byBzY2FsZWRSZWN0ID0gcmVjdDsKKyAgICBzY2FsZWRSZWN0LnNjYWxlKHNj
YWxlKTsKKyAgICByZXR1cm4gZW5jbG9zaW5nSW50UmVjdChzY2FsZWRSZWN0KTsKK30KKworc3Rh
dGljIGlubGluZSBGbG9hdFNpemUgY2xhbXBpbmdTY2FsZUZvckltYWdlQnVmZmVyU2l6ZShjb25z
dCBGbG9hdFNpemUmIHNpemUpCit7CisgICAgRmxvYXRTaXplIGNsYW1waW5nU2NhbGUoMSwgMSk7
CisgICAgSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKHNpemUsIGNsYW1waW5nU2NhbGUp
OworICAgIHJldHVybiBjbGFtcGluZ1NjYWxlOworfQorCitGbG9hdFNpemUgR3JhcGhpY3NDb250
ZXh0Ojp0aWdodEltYWdlQnVmZmVyU2l6ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IEZs
b2F0U2l6ZSYgc2NhbGUpIGNvbnN0Cit7CisgICAgYXV0byBzY2FsZWRTaXplID0gc2l6ZSAqIHNj
YWxlOworICAgIHJldHVybiBzaXplIC0gKGV4cGFuZGVkSW50U2l6ZShzY2FsZWRTaXplKSAtIHJv
dW5kZWRJbnRTaXplKHNjYWxlZFNpemUpKSAqIChzY2FsZWRTaXplIC0gZmxvb3JlZEludFNpemUo
c2NhbGVkU2l6ZSkpIC8gc2NhbGU7Cit9CisKK0ludFNpemUgR3JhcGhpY3NDb250ZXh0Ojpjb21w
YXRpYmxlSW1hZ2VCdWZmZXJTaXplKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkgY29uc3QKK3sKKyAg
ICByZXR1cm4gc2NhbGVkSW1hZ2VCdWZmZXJTaXplKHNpemUsIHNjYWxlRmFjdG9yKCkpOworfQor
CitSZWZQdHI8SW1hZ2VCdWZmZXI+IEdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIo
Y29uc3QgRmxvYXRTaXplJiBzaXplLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9y
U3BhY2UsIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nTW9kZT4gcmVuZGVyaW5nTW9kZSkgY29uc3QK
K3sKKyAgICByZXR1cm4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCByZW5kZXJpbmdNb2RlLnZh
bHVlX29yKHRoaXMtPnJlbmRlcmluZ01vZGUoKSksIDEsIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0
OjpCR1JBOCk7Cit9CisKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0OjpjcmVh
dGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc2Nh
bGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgc3RkOjpvcHRpb25h
bDxSZW5kZXJpbmdNb2RlPiByZW5kZXJpbmdNb2RlLCBDcmVhdGVNZXRob2QgY3JlYXRlTWV0aG9k
KSBjb25zdAoreworICAgIGF1dG8gZXhwYW5kZWRTY2FsZWRTaXplID0gc2NhbGVkSW1hZ2VCdWZm
ZXJTaXplKHNpemUsIHNjYWxlKTsKKyAgICBpZiAoZXhwYW5kZWRTY2FsZWRTaXplLmlzRW1wdHko
KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIGNsYW1waW5nU2NhbGUgPSBj
bGFtcGluZ1NjYWxlRm9ySW1hZ2VCdWZmZXJTaXplKGV4cGFuZGVkU2NhbGVkU2l6ZSk7CisKKyAg
ICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyOworICAgIGlmIChjcmVhdGVNZXRob2Qg
PT0gQ3JlYXRlTWV0aG9kOjpCYXNlKQorICAgICAgICBpbWFnZUJ1ZmZlciA9IEdyYXBoaWNzQ29u
dGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoZXhwYW5kZWRTY2FsZWRTaXplICogY2xhbXBpbmdTY2Fs
ZSwgY29sb3JTcGFjZSwgcmVuZGVyaW5nTW9kZSk7CisgICAgZWxzZQorICAgICAgICBpbWFnZUJ1
ZmZlciA9IGNyZWF0ZUltYWdlQnVmZmVyKGV4cGFuZGVkU2NhbGVkU2l6ZSAqIGNsYW1waW5nU2Nh
bGUsIGNvbG9yU3BhY2UsIHJlbmRlcmluZ01vZGUpOworCisgICAgaWYgKCFpbWFnZUJ1ZmZlcikK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnNj
YWxlKGNsYW1waW5nU2NhbGUpOworCisgICAgLy8gJ2V4cGFuZGVkU2NhbGVkU2l6ZScgaXMgbWFw
cGVkIHRvICdzaXplJy4gU28gdXNlICdleHBhbmRlZFNjYWxlZFNpemUgLyBzaXplJworICAgIC8v
IG5vdCAnc2NhbGUnIGJlY2F1c2UgdGhleSBhcmUgbm90IG5lY2Vzc2FyaWx5IGVxdWFsLgorICAg
IGltYWdlQnVmZmVyLT5jb250ZXh0KCkuc2NhbGUoZXhwYW5kZWRTY2FsZWRTaXplIC8gc2l6ZSk7
CisgICAgcmV0dXJuIGltYWdlQnVmZmVyOworfQorCitSZWZQdHI8SW1hZ2VCdWZmZXI+IEdyYXBo
aWNzQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25z
dCBGbG9hdFNpemUmIHNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3Bh
Y2UsIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nTW9kZT4gcmVuZGVyaW5nTW9kZSwgQ3JlYXRlTWV0
aG9kIGNyZWF0ZU1ldGhvZCkgY29uc3QKK3sKKyAgICBhdXRvIGV4cGFuZGVkU2NhbGVkUmVjdCA9
IHNjYWxlZEltYWdlQnVmZmVyUmVjdChyZWN0LCBzY2FsZSk7CisgICAgaWYgKGV4cGFuZGVkU2Nh
bGVkUmVjdC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byBj
bGFtcGluZ1NjYWxlID0gY2xhbXBpbmdTY2FsZUZvckltYWdlQnVmZmVyU2l6ZShleHBhbmRlZFNj
YWxlZFJlY3Quc2l6ZSgpKTsKKworICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXI7
CisgICAgaWYgKGNyZWF0ZU1ldGhvZCA9PSBDcmVhdGVNZXRob2Q6OkJhc2UpCisgICAgICAgIGlt
YWdlQnVmZmVyID0gR3JhcGhpY3NDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihleHBhbmRlZFNj
YWxlZFJlY3Quc2l6ZSgpICogY2xhbXBpbmdTY2FsZSwgY29sb3JTcGFjZSwgcmVuZGVyaW5nTW9k
ZSk7CisgICAgZWxzZQorICAgICAgICBpbWFnZUJ1ZmZlciA9IGNyZWF0ZUltYWdlQnVmZmVyKGV4
cGFuZGVkU2NhbGVkUmVjdC5zaXplKCkgKiBjbGFtcGluZ1NjYWxlLCBjb2xvclNwYWNlLCByZW5k
ZXJpbmdNb2RlKTsKKworICAgIGlmICghaW1hZ2VCdWZmZXIpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworCisgICAgaW1hZ2VCdWZmZXItPmNvbnRleHQoKS5zY2FsZShjbGFtcGluZ1NjYWxlKTsK
KyAgICAKKyAgICAvLyAncmVjdCcgaXMgbWFwcGVkIHRvIGEgcmVjdGFuZ2xlIGluc2lkZSBleHBh
bmRlZFNjYWxlZFJlY3QuCisgICAgaW1hZ2VCdWZmZXItPmNvbnRleHQoKS50cmFuc2xhdGUoLWV4
cGFuZGVkU2NhbGVkUmVjdC5sb2NhdGlvbigpKTsKKyAgICAKKyAgICAvLyBUaGUgc2l6ZSBvZiB0
aGlzIHJlY3RhbmdsZSBpcyBub3QgbmVjZXNzYXJpbHkgZXF1YWwgdG8gZXhwYW5kZWRTY2FsZWRS
ZWN0LnNpemUoKS4KKyAgICAvLyBTbyB1c2UgJ3NjYWxlJyBub3QgJ2V4cGFuZGVkU2NhbGVkUmVj
dC5zaXplKCkgLyByZWN0LnNpemUoKScuCisgICAgaW1hZ2VCdWZmZXItPmNvbnRleHQoKS5zY2Fs
ZShzY2FsZSk7CisgICAgcmV0dXJuIGltYWdlQnVmZmVyOworfQorCitSZWZQdHI8SW1hZ2VCdWZm
ZXI+IEdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyKGNvbnN0IEZs
b2F0U2l6ZSYgc2l6ZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBz
dGQ6Om9wdGlvbmFsPFJlbmRlcmluZ01vZGU+IHJlbmRlcmluZ01vZGUpIGNvbnN0Cit7CisgICAg
cmV0dXJuIGNyZWF0ZUltYWdlQnVmZmVyKHNpemUsIHNjYWxlRmFjdG9yKCksIGNvbG9yU3BhY2Us
IHJlbmRlcmluZ01vZGUsIENyZWF0ZU1ldGhvZDo6QmFzZSk7Cit9CisKK1JlZlB0cjxJbWFnZUJ1
ZmZlcj4gR3JhcGhpY3NDb250ZXh0OjpjcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIoY29uc3Qg
RmxvYXRSZWN0JiByZWN0LCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2Us
IHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nTW9kZT4gcmVuZGVyaW5nTW9kZSkgY29uc3QKK3sKKyAg
ICByZXR1cm4gY3JlYXRlSW1hZ2VCdWZmZXIocmVjdCwgc2NhbGVGYWN0b3IoKSwgY29sb3JTcGFj
ZSwgcmVuZGVyaW5nTW9kZSwgQ3JlYXRlTWV0aG9kOjpCYXNlKTsKK30KKwogSW1hZ2VEcmF3UmVz
dWx0IEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKEltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRQ
b2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBpbWFnZVBhaW50
aW5nT3B0aW9ucykKIHsKICAgICByZXR1cm4gZHJhd0ltYWdlKGltYWdlLCBGbG9hdFJlY3QoZGVz
dGluYXRpb24sIGltYWdlLnNpemUoKSksIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdlLnNp
emUoKSksIGltYWdlUGFpbnRpbmdPcHRpb25zKTsKQEAgLTY2OCw3ICs3NjgsNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6Y2xpcE91dFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3Qm
IHJlY3QpCiAKIEdyYXBoaWNzQ29udGV4dDo6Q2xpcFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0IEdy
YXBoaWNzQ29udGV4dDo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVz
dGluYXRpb24sIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgRnVuY3Rp
b248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJiBkcmF3aW5nRnVuY3Rpb24pCiB7Ci0gICAgYXV0
byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGRlc3Rp
bmF0aW9uLnNpemUoKSwgY29sb3JTcGFjZSwgKnRoaXMpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIg
PSBjcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIoZGVzdGluYXRpb24uc2l6ZSgpLCBjb2xvclNw
YWNlKTsKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm4gQ2xpcFRvRHJhd2lu
Z0NvbW1hbmRzUmVzdWx0OjpGYWlsZWRUb0NyZWF0ZUltYWdlQnVmZmVyOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IGNm
NzA5MmRlMzNiYzViNzI4YWQ0NjFiMGZjMDIxNzdmNjllZWZmMzIuLjQ5N2RkMTFmYmY3N2VjMjMy
ZTMyZDU3Nzg0NDNjZWVkYjliODJlZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC00MTYsNiArNDE2LDE5IEBAIHB1Ymxp
YzoKIAogICAgIC8vIEltYWdlcywgUGF0dGVybnMsIGFuZCBNZWRpYQogCisgICAgZW51bSBjbGFz
cyBDcmVhdGVNZXRob2QgOiBib29sIHsgRGVmYXVsdCwgQmFzZSB9OworCisgICAgRmxvYXRTaXpl
IHRpZ2h0SW1hZ2VCdWZmZXJTaXplKGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0U2l6ZSYg
c2NhbGUpIGNvbnN0OworICAgIEludFNpemUgY29tcGF0aWJsZUltYWdlQnVmZmVyU2l6ZShjb25z
dCBGbG9hdFNpemUmKSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgUmVmUHRy
PEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBjb25zdCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UmID0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIHN0
ZDo6b3B0aW9uYWw8UmVuZGVyaW5nTW9kZT4gPSBzdGQ6Om51bGxvcHQpIGNvbnN0OworCisgICAg
UmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBj
b25zdCBGbG9hdFNpemUmIHNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmID0gRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nTW9kZT4g
PSBzdGQ6Om51bGxvcHQsIENyZWF0ZU1ldGhvZCA9IENyZWF0ZU1ldGhvZDo6RGVmYXVsdCkgY29u
c3Q7CisgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9h
dFJlY3QmLCBjb25zdCBGbG9hdFNpemUmIHNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UmID0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIHN0ZDo6b3B0aW9uYWw8UmVuZGVy
aW5nTW9kZT4gPSBzdGQ6Om51bGxvcHQsIENyZWF0ZU1ldGhvZCA9IENyZWF0ZU1ldGhvZDo6RGVm
YXVsdCkgY29uc3Q7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIFJlZlB0cjxJbWFnZUJ1
ZmZlcj4gY3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0
IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwg
c3RkOjpvcHRpb25hbDxSZW5kZXJpbmdNb2RlPiA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7CisgICAg
V0VCQ09SRV9FWFBPUlQgdmlydHVhbCBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUNvbXBhdGli
bGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UmID0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIHN0ZDo6b3B0aW9uYWw8UmVuZGVy
aW5nTW9kZT4gPSBzdGQ6Om51bGxvcHQpIGNvbnN0OworCiAgICAgdmlydHVhbCB2b2lkIGRyYXdO
YXRpdmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmID0geyB9KSA9IDA7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBJbWFn
ZURyYXdSZXN1bHQgZHJhd0ltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRp
b24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgSW1hZ2VPcmllbnRhdGlvbjo6RnJv
bUltYWdlIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VC
dWZmZXIuY3BwCmluZGV4IDAxOTNiZmIwZjk2YzdkMzQwNTNlNzY4YTBjMjU4ZmMxMjU3ODBmZDMu
LjZkMWIyN2Y3MjEzYjdlMmE4YzhhYzEzMTQzODRlMmIzNmQ0MDkzYjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAKQEAgLTEsNyArMSw3
IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA5IERpcmsgU2NodWx6ZSA8a3JpdEB3ZWJraXQu
b3JnPgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDExLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC03Miw3MyArNzIsMTQgQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSByZW4KICAgICByZXR1cm4g
aW1hZ2VCdWZmZXI7CiB9CiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0
ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBjb25zdCBHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQpCitSZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjbG9uZSgp
CiB7Ci0gICAgaWYgKHNpemUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQot
ICAgIEludFNpemUgc2NhbGVkU2l6ZSA9IEltYWdlQnVmZmVyOjpjb21wYXRpYmxlQnVmZmVyU2l6
ZShzaXplLCBjb250ZXh0KTsKLQotICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXI7
Ci0KLSAgICBpZiAoY29udGV4dC5yZW5kZXJpbmdNb2RlKCkgPT0gUmVuZGVyaW5nTW9kZTo6QWNj
ZWxlcmF0ZWQpCi0gICAgICAgIGltYWdlQnVmZmVyID0gQWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKHNjYWxlZFNpemUsIGNvbnRleHQpOwotICAgIAotICAgIGlmICghaW1hZ2VCdWZmZXIp
Ci0gICAgICAgIGltYWdlQnVmZmVyID0gVW5hY2NlbGVyYXRlZEltYWdlQnVmZmVyOjpjcmVhdGUo
c2NhbGVkU2l6ZSwgY29udGV4dCk7Ci0KLSAgICBpZiAoIWltYWdlQnVmZmVyKQotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLQotICAgIGltYWdlQnVmZmVyLT5jb250ZXh0KCkuc2NhbGUoc2NhbGVk
U2l6ZSAvIHNpemUpOwotICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsKLX0KLQotLy8gVGhpcyBpcyB1
c2VmdWwgd2hlbiB5b3UgbmVlZCB0byBtYWtlIHN1cmUgdGhlIHBpeGVsIGdyaWQgb2YgdGhlIElt
YWdlQnVmZmVyIGFsaWducyB3aXRoIHRoZSBwaXhlbCBncmlkIG9mIHRoZSBjb250ZXh0LgotLy8g
U2ltcGx5IHNheWluZyBjcmVhdGVDb21wYXRpYmxlQnVmZmVyKHJlY3Quc2l6ZSgpLCBjb250ZXh0
KSBpc24ndCBzdWZmaWNpZW50IGluIHRoaXMgc2l0dWF0aW9uLCBiZWNhdXNlIHJlY3QubG9jYXRp
b24oKSBtYXkgbm90IGxpZSBvbiBhIHBpeGVsIGJvdW5kYXJ5LgotLy8gSW4gdGhpcyBzaXR1YXRp
b24sIHdlIGhhdmUgdG8gaW5mbGF0ZSBib3RoIHRoZSBsZWZ0IHNpZGUgYW5kIHRoZSByaWdodCBz
aWRlLCB3aGljaCBjYW4gbGVhZCB0byBkaWZmZXJlbnQgcmVzdWx0cyB0aGFuCi0vLyBjcmVhdGVD
b21wYXRpYmxlQnVmZmVyKHJlY3Quc2l6ZSgpLCBjb250ZXh0KSB3b3VsZCBoYXZlIHByb2R1Y2Vk
LgotYXV0byBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFJl
Y3QmIHJlY3QsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgLT4gc3RkOjpvcHRpb25h
bDxDb21wYXRpYmxlQnVmZmVyRGVzY3JpcHRpb24+Ci17Ci0gICAgaWYgKHJlY3QuaXNFbXB0eSgp
KQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgYXV0byBpbmZvID0gSW1hZ2VC
dWZmZXI6OmNvbXBhdGlibGVCdWZmZXJJbmZvKHJlY3QsIGNvbnRleHQpOwotCi0gICAgUmVmUHRy
PEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlcjsKLQotICAgIGlmIChjb250ZXh0LnJlbmRlcmluZ01v
ZGUoKSA9PSBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCkKLSAgICAgICAgaW1hZ2VCdWZmZXIg
PSBBY2NlbGVyYXRlZEltYWdlQnVmZmVyOjpjcmVhdGUoaW5mby5waHlzaWNhbFNpemVJbkRldmlj
ZUNvb3JkaW5hdGVzLCBjb250ZXh0KTsKLSAgICAKLSAgICBpZiAoIWltYWdlQnVmZmVyKQotICAg
ICAgICBpbWFnZUJ1ZmZlciA9IFVuYWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGluZm8u
cGh5c2ljYWxTaXplSW5EZXZpY2VDb29yZGluYXRlcywgY29udGV4dCk7Ci0KLSAgICBpZiAoIWlt
YWdlQnVmZmVyKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgaW1hZ2VCdWZm
ZXItPmNvbnRleHQoKS5zY2FsZShpbmZvLnNjYWxlKTsKLSAgICBpbWFnZUJ1ZmZlci0+Y29udGV4
dCgpLnRyYW5zbGF0ZSgtaW5mby5pbmZsYXRlZFJlY3RJblVzZXJDb29yZGluYXRlcy5sb2NhdGlv
bigpKTsKLSAgICByZXR1cm4geyB7IGltYWdlQnVmZmVyLnJlbGVhc2VOb25OdWxsKCksIGluZm8u
aW5mbGF0ZWRSZWN0SW5Vc2VyQ29vcmRpbmF0ZXMgfSB9OwotfQotCi1SZWZQdHI8SW1hZ2VCdWZm
ZXI+IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYg
c2l6ZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBjb25zdCBHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQpCi17Ci0gICAgaWYgKHNpemUuaXNFbXB0eSgpKQorICAgIGF1
dG8gY2xvbmUgPSBjb250ZXh0KCkuY3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyKGxvZ2ljYWxT
aXplKCksIGNvbG9yU3BhY2UoKSk7CisgICAgaWYgKCFjbG9uZSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAKLSAgICBJbnRTaXplIHNjYWxlZFNpemUgPSBJbWFnZUJ1ZmZlcjo6Y29tcGF0aWJs
ZUJ1ZmZlclNpemUoc2l6ZSwgY29udGV4dCk7Ci0KLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1h
Z2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoc2NhbGVkU2l6ZSwgMSwgY29sb3JTcGFj
ZSwgY29udGV4dCk7Ci0gICAgaWYgKCFpbWFnZUJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0KLSAgICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnNjYWxlKHNjYWxlZFNpemUgLyBzaXpl
KTsKLSAgICByZXR1cm4gaW1hZ2VCdWZmZXI7Ci19Ci0KLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1h
Z2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBm
bG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JT
cGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQotewotICAgIHJldHVybiBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIGNvbnRleHQucmVuZGVyaW5nTW9kZSgpLCByZXNvbHV0aW9u
U2NhbGUsIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgY2xvbmUtPmNvbnRl
eHQoKS5kcmF3SW1hZ2VCdWZmZXIoKnRoaXMsIEZsb2F0UG9pbnQoKSk7CisgICAgcmV0dXJuIGNs
b25lOwogfQogCiBib29sIEltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhjb25zdCBGbG9h
dFNpemUmIHNpemUpCkBAIC0xODUsNTggKzEyNiw2IEBAIEZsb2F0UmVjdCBJbWFnZUJ1ZmZlcjo6
Y2xhbXBlZFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgIHJldHVybiBGbG9hdFJlY3Qo
cmVjdC5sb2NhdGlvbigpLCBjbGFtcGVkU2l6ZShyZWN0LnNpemUoKSkpOwogfQogCi1JbnRTaXpl
IEltYWdlQnVmZmVyOjpjb21wYXRpYmxlQnVmZmVyU2l6ZShjb25zdCBGbG9hdFNpemUmIHNpemUs
IGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKLXsKLSAgICAvLyBFbmxhcmdlIHRoZSBi
dWZmZXIgc2l6ZSBpZiB0aGUgY29udGV4dCdzIHRyYW5zZm9ybSBpcyBzY2FsaW5nIGl0IHNvIHdl
IG5lZWQgYSBoaWdoZXIKLSAgICAvLyByZXNvbHV0aW9uIHRoYW4gb25lIHBpeGVsIHBlciB1bml0
LgotICAgIHJldHVybiBleHBhbmRlZEludFNpemUoc2l6ZSAqIGNvbnRleHQuc2NhbGVGYWN0b3Io
KSk7Ci19Ci0KLWF1dG8gSW1hZ2VCdWZmZXI6OmNvbXBhdGlibGVCdWZmZXJJbmZvKGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSAtPiBDb21wYXRp
YmxlQnVmZmVySW5mbwotewotICAgIGF1dG8gc2NhbGVGYWN0b3IgPSBjb250ZXh0LnNjYWxlRmFj
dG9yKCk7Ci0gICAgYXV0byBzY2FsZWRSZWN0ID0gcmVjdDsKLSAgICBzY2FsZWRSZWN0LnNjYWxl
KHNjYWxlRmFjdG9yKTsKLSAgICBhdXRvIGluZmxhdGVkU2NhbGVkUmVjdCA9IGVuY2xvc2luZ0lu
dFJlY3Qoc2NhbGVkUmVjdCk7Ci0gICAgYXV0byBpbmZsYXRlZFJlY3RJblVzZXJDb29yZGluYXRl
cyA9IEZsb2F0UmVjdChpbmZsYXRlZFNjYWxlZFJlY3QpOwotCi0gICAgLy8gV2UgZG9uJ3Qgd2Fu
dCB0byBhbGxvY2F0ZSBodWdlIEltYWdlQnVmZmVycyBiZWNhdXNlIHRoZXkgY2FuIHRha2UgYSBs
b3Qgb2YgbWVtb3J5LAotICAgIC8vIHNvIGlmIHRoZSBzaXplIHdvdWxkIGhhdmUgYmVlbiB0b28g
YmlnLCBkZWNyZWFzZSByZXNvbHV0aW9uIGFuZCBzY2FsZSB0aGUgcmVzdWx0aW5nIGNvbnRleHQu
Ci0gICAgLy8gVGhpcyB3aWxsIG1lYW4gdGhhdCB0aGUgSW1hZ2VCdWZmZXIgd2lsbCBsb3NlIHF1
YWxpdHksIGJ1dCB3aWxsIHN0aWxsIGdlbmVyYWxseSBsb29rIGNvcnJlY3QuCi0gICAgY29uc3Rl
eHByIGludCBtYXhEaW1lbnNpb24gPSA0MDk2OwotICAgIGlmIChpbmZsYXRlZFNjYWxlZFJlY3Qu
d2lkdGgoKSA+IG1heERpbWVuc2lvbikgewotICAgICAgICAvLyBUaGUgcGl4ZWwgZ3JpZHMgd29u
J3QgYWxpZ24gYW55IG1vcmUsIHNvIHRoZXJlJ3Mgbm8gbmVlZCB0byB0cnkgdG8gaGFuZGxlIGZy
YWN0aW9ucyBvZiBwaXhlbHMuCi0gICAgICAgIGluZmxhdGVkU2NhbGVkUmVjdC5zZXRXaWR0aCht
YXhEaW1lbnNpb24pOwotICAgICAgICBpbmZsYXRlZFJlY3RJblVzZXJDb29yZGluYXRlcy5zY2Fs
ZShtYXhEaW1lbnNpb24gLyBpbmZsYXRlZFJlY3RJblVzZXJDb29yZGluYXRlcy53aWR0aCgpLCAx
KTsKLSAgICAgICAgc2NhbGVGYWN0b3Iuc2V0V2lkdGgobWF4RGltZW5zaW9uIC8gcmVjdC53aWR0
aCgpKTsKLSAgICB9Ci0gICAgaWYgKGluZmxhdGVkU2NhbGVkUmVjdC5oZWlnaHQoKSA+IG1heERp
bWVuc2lvbikgewotICAgICAgICAvLyBUaGUgcGl4ZWwgZ3JpZHMgd29uJ3QgYWxpZ24gYW55IG1v
cmUsIHNvIHRoZXJlJ3Mgbm8gbmVlZCB0byB0cnkgdG8gaGFuZGxlIGZyYWN0aW9ucyBvZiBwaXhl
bHMuCi0gICAgICAgIGluZmxhdGVkU2NhbGVkUmVjdC5zZXRIZWlnaHQobWF4RGltZW5zaW9uKTsK
LSAgICAgICAgaW5mbGF0ZWRSZWN0SW5Vc2VyQ29vcmRpbmF0ZXMuc2NhbGUoMSwgbWF4RGltZW5z
aW9uIC8gaW5mbGF0ZWRSZWN0SW5Vc2VyQ29vcmRpbmF0ZXMuaGVpZ2h0KCkpOwotICAgICAgICBz
Y2FsZUZhY3Rvci5zZXRIZWlnaHQobWF4RGltZW5zaW9uIC8gcmVjdC5oZWlnaHQoKSk7Ci0gICAg
fQotCi0gICAgYXV0byBwaHlzaWNhbFNpemVJbkRldmljZUNvb3JkaW5hdGVzID0gaW5mbGF0ZWRT
Y2FsZWRSZWN0LnNpemUoKTsKLSAgICBpbmZsYXRlZFJlY3RJblVzZXJDb29yZGluYXRlcy5zY2Fs
ZSgxLjBmIC8gc2NhbGVGYWN0b3IpOwotICAgIHJldHVybiB7IFdURk1vdmUocGh5c2ljYWxTaXpl
SW5EZXZpY2VDb29yZGluYXRlcyksIFdURk1vdmUoaW5mbGF0ZWRSZWN0SW5Vc2VyQ29vcmRpbmF0
ZXMpLCBzY2FsZUZhY3RvciB9OwotfQotCi1SZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVy
Ojpjb3B5UmVjdFRvQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRGVzdGluYXRp
b25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQp
Ci17Ci0gICAgaWYgKHJlY3QuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQot
ICAgIEludFNpemUgc2NhbGVkU2l6ZSA9IEltYWdlQnVmZmVyOjpjb21wYXRpYmxlQnVmZmVyU2l6
ZShyZWN0LnNpemUoKSwgY29udGV4dCk7Ci0KLSAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVy
OjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKHNjYWxlZFNpemUsIDEsIGNvbG9yU3BhY2UsIGNvbnRl
eHQpOwotICAgIGlmICghYnVmZmVyKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGJ1
ZmZlci0+Y29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcigqdGhpcywgLXJlY3QubG9jYXRpb24oKSk7
Ci0gICAgcmV0dXJuIGJ1ZmZlcjsKLX0KLQogUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZl
cjo6c2lua0ludG9OYXRpdmVJbWFnZShSZWZQdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyKQog
ewogICAgIHJldHVybiBpbWFnZUJ1ZmZlci0+c2lua0ludG9OYXRpdmVJbWFnZSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKaW5kZXggNGI3MWYy
MzUzYzhkMGNkOGVkZjRhZjVlNTkyNmI3ZGUyOTJjOGE2Mi4uZTVjZWY3YmQxNjc2ZTkzNTk0MDUw
Njk3YTRjZTg2Y2Y5NmVmMjRiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJ1ZmZlci5oCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykg
MjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KLSAqIENvcHlyaWdo
dCAoQykgMjAwNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwNy0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENv
cHlyaWdodCAoQykgMjAxMCBUb3JjaCBNb2JpbGUgKEJlaWppbmcpIENvLiBMdGQuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC01MCwxNSArNTAsNyBAQCBwdWJsaWM6
CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlKGNv
bnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFNob3VsZFVzZURpc3BsYXlMaXN0LCBSZW5k
ZXJpbmdQdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29s
b3JTcGFjZSYsIFBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93KiA9IG51bGxwdHIpOwogICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZShjb25zdCBG
bG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERl
c3RpbmF0aW9uQ29sb3JTcGFjZSYsIFBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93KiA9IG51
bGxwdHIpOwogCi0gICAgLy8gQ3JlYXRlIGFuIGltYWdlIGJ1ZmZlciBjb21wYXRpYmxlIHdpdGgg
dGhlIGNvbnRleHQsIHdpdGggc3VpdGFibGUgcmVzb2x1dGlvbiBmb3IgZHJhd2luZyBpbnRvIHRo
ZSBidWZmZXIgYW5kIHRoZW4gaW50byB0aGlzIGNvbnRleHQuCi0gICAgc3RhdGljIFJlZlB0cjxJ
bWFnZUJ1ZmZlcj4gY3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBjb25z
dCBHcmFwaGljc0NvbnRleHQmKTsKLSAgICBzdHJ1Y3QgQ29tcGF0aWJsZUJ1ZmZlckRlc2NyaXB0
aW9uIHsKLSAgICAgICAgUmVmPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlcjsKLSAgICAgICAgRmxv
YXRSZWN0IGluZmxhdGVkUmVjdEluVXNlckNvb3JkaW5hdGVzOwotICAgIH07Ci0gICAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8Q29tcGF0aWJsZUJ1ZmZlckRlc2NyaXB0aW9uPiBjcmVhdGVDb21wYXRp
YmxlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgcmVjdEluVXNlckNvb3JkaW5hdGVzLCBjb25zdCBH
cmFwaGljc0NvbnRleHQmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEltYWdl
QnVmZmVyPiBjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IERl
c3RpbmF0aW9uQ29sb3JTcGFjZSYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOwotICAgIHN0YXRp
YyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRT
aXplJiwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2Um
LCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKKyAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNsb25l
KCk7CiAKICAgICAvLyBUaGVzZSBmdW5jdGlvbnMgYXJlIHVzZWQgd2hlbiBjbGFtcGluZyB0aGUg
SW1hZ2VCdWZmZXIgd2hpY2ggaXMgY3JlYXRlZCBmb3IgZmlsdGVyLCBtYXNrZXIgb3IgY2xpcHBl
ci4KICAgICBzdGF0aWMgYm9vbCBzaXplTmVlZHNDbGFtcGluZyhjb25zdCBGbG9hdFNpemUmKTsK
QEAgLTY3LDE1ICs1OSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgRmxvYXRTaXplIGNsYW1wZWRT
aXplKGNvbnN0IEZsb2F0U2l6ZSYsIEZsb2F0U2l6ZSYgc2NhbGUpOwogICAgIHN0YXRpYyBGbG9h
dFJlY3QgY2xhbXBlZFJlY3QoY29uc3QgRmxvYXRSZWN0Jik7CiAKLSAgICBzdGF0aWMgSW50U2l6
ZSBjb21wYXRpYmxlQnVmZmVyU2l6ZShjb25zdCBGbG9hdFNpemUmLCBjb25zdCBHcmFwaGljc0Nv
bnRleHQmKTsKLSAgICBzdHJ1Y3QgQ29tcGF0aWJsZUJ1ZmZlckluZm8gewotICAgICAgICBJbnRT
aXplIHBoeXNpY2FsU2l6ZUluRGV2aWNlQ29vcmRpbmF0ZXM7Ci0gICAgICAgIEZsb2F0UmVjdCBp
bmZsYXRlZFJlY3RJblVzZXJDb29yZGluYXRlczsKLSAgICAgICAgRmxvYXRTaXplIHNjYWxlOwot
ICAgIH07Ci0gICAgc3RhdGljIENvbXBhdGlibGVCdWZmZXJJbmZvIGNvbXBhdGlibGVCdWZmZXJJ
bmZvKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOwotICAgIAotICAg
IFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfkltYWdlQnVmZmVyKCkgPSBkZWZhdWx0OworICAgIHZp
cnR1YWwgfkltYWdlQnVmZmVyKCkgPSBkZWZhdWx0OwogCiAgICAgdmlydHVhbCB2b2lkIHNldEJh
Y2tlbmQoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQmFja2VuZD4mJikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBjbGVhckJhY2tlbmQoKSA9IDA7CkBAIC0xMTksOSArMTAzLDYgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgUmVmUHRyPEltYWdlPiBjb3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9
IENvcHlCYWNraW5nU3RvcmUsIFByZXNlcnZlUmVzb2x1dGlvbiA9IFByZXNlcnZlUmVzb2x1dGlv
bjo6Tm8pIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFJlZlB0cjxJbWFnZT4gZmlsdGVyZWRJbWFn
ZShGaWx0ZXImKSA9IDA7CiAKLSAgICAvLyBDcmVhdGUgYW4gaW1hZ2UgYnVmZmVyIGNvbXBhdGli
bGUgd2l0aCB0aGUgY29udGV4dCBhbmQgY29weSByZWN0IGZyb20gdGhpcyBidWZmZXIgaW50byB0
aGlzIG5ldyBvbmUuCi0gICAgUmVmUHRyPEltYWdlQnVmZmVyPiBjb3B5UmVjdFRvQnVmZmVyKGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIGNvbnN0IEdyYXBo
aWNzQ29udGV4dCYpOwotCiAgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0ID0gRmxv
YXRSZWN0KDAsIDAsIC0xLCAtMSksIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2Us
IGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0g
eyB9KSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwCmluZGV4IDZmZmMyODJiOWNjNzUw
NDA4ODhjYjM2NGZiMzMwMjAyZmNiMDNiZDAuLjM3MGM3ZGMyODk2ZjM5NjJjYjNlZDUwOTgyZGFi
Njk5NzRmNjMyYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmNwcApAQCAtNjUsNyArNjUsNyBA
QCBJbWFnZURyYXdSZXN1bHQgTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3KEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgRgogdm9pZCBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6
OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBk
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
cGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6
ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAjaWYg
VVNFKE5FV19USEVNRSkKLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0
ZUNvbXBhdGlibGVCdWZmZXIoc2l6ZSgpLCBjb250ZXh0KTsKKyAgICBhdXRvIGltYWdlQnVmZmVy
ID0gY29udGV4dC5jcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIoc2l6ZSgpKTsKICAgICBpZiAo
IWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKaW5kZXggMGUw
NGNiYmM0MmUyN2JjYzlhNTM0ZmQwZmFkYzIwN2ZlY2QzMWJkMS4uNWE2Y2NjODY3NGRhZDkyMjg1
Y2JiMTY0NjRkNTc2NzJjMDJiNzY0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKQEAgLTIzMiwxNCArMjMy
LDE1IEBAIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6dXBkYXRlQ2FjaGVkSW1hZ2VJZk5lZWRlZChH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0CiAKICAgICAvLyBDYWNoZSB0aGUgUERGIGlt
YWdlIG9ubHkgaWYgdGhlIHNpemUgb2YgdGhlIG5ldyBpbWFnZSB3b24ndCBleGNlZWQgdGhlIGNh
Y2hlIHRocmVzaG9sZC4KICAgICBpZiAobV9wZGZJbWFnZUNhY2hpbmdQb2xpY3kgPT0gUERGSW1h
Z2VDYWNoaW5nUG9saWN5OjpCZWxvd01lbW9yeUxpbWl0KSB7Ci0gICAgICAgIEludFNpemUgc2Nh
bGVkU2l6ZSA9IEltYWdlQnVmZmVyOjpjb21wYXRpYmxlQnVmZmVyU2l6ZShjYWNoZWRJbWFnZVNp
emUsIGNvbnRleHQpOworICAgICAgICBhdXRvIHNjYWxlZFNpemUgPSBjb250ZXh0LmNvbXBhdGli
bGVJbWFnZUJ1ZmZlclNpemUoY2FjaGVkSW1hZ2VTaXplKTsKICAgICAgICAgaWYgKHNfYWxsRGVj
b2RlZERhdGFTaXplICsgc2NhbGVkU2l6ZS51bmNsYW1wZWRBcmVhKCkgKiA0IC0gbV9jYWNoZWRC
eXRlcyA+IHNfbWF4RGVjb2RlZERhdGFTaXplKSB7CiAgICAgICAgICAgICBkZXN0cm95RGVjb2Rl
ZERhdGEoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KIAotICAgIG1f
Y2FjaGVkSW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihj
YWNoZWRJbWFnZVNpemUsIGNvbnRleHQpOworICAgIC8vIENyZWF0ZSBpbi1wcm9jZXNzIEltYWdl
QnVmZmVyIHNpbmNlIHRoZSBkZW9jb2Rpbmcgb2YgUERGIGltYWdlcyBoYXMgdG8gaGFwcGVuIGlu
IFdlYlByb2Nlc3MuCisgICAgbV9jYWNoZWRJbWFnZUJ1ZmZlciA9IGNvbnRleHQuR3JhcGhpY3ND
b250ZXh0OjpjcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIoY2FjaGVkSW1hZ2VTaXplKTsKICAg
ICBpZiAoIW1fY2FjaGVkSW1hZ2VCdWZmZXIpIHsKICAgICAgICAgZGVzdHJveURlY29kZWREYXRh
KCk7CiAgICAgICAgIHJldHVybjsKQEAgLTI5Miw3ICsyOTMsNyBAQCBJbWFnZURyYXdSZXN1bHQg
UERGRG9jdW1lbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZs
b2F0UmVjdAogICAgICAgICAgICAgLy8gc2NhbGFyID0gc3FydChtYXggbnVtYmVyIG9mIHBpeGVs
cyAvICh3aWR0aCAqIGhlaWdodCkpCiAgICAgICAgICAgICBhdXRvIHNjYWxhciA9IHN0ZDo6bWlu
KDEuZiwgc3RkOjpzcXJ0KHN0YXRpY19jYXN0PGZsb2F0PihzX21heENhY2hlZEltYWdlQXJlYSkg
LyAoZHN0UmVjdC53aWR0aCgpICogZHN0UmVjdC5oZWlnaHQoKSkpKTsKICAgICAgICAgICAgIEZs
b2F0UmVjdCBsb2NhbERlc3RpbmF0aW9uUmVjdChGbG9hdFBvaW50KCksIGRzdFJlY3Quc2l6ZSgp
ICogc2NhbGFyKTsKLSAgICAgICAgICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIobG9jYWxEZXN0aW5hdGlvblJlY3Quc2l6ZSgpLCBj
b250ZXh0KSkgeworICAgICAgICAgICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBjb250ZXh0Lkdy
YXBoaWNzQ29udGV4dDo6Y3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyKGxvY2FsRGVzdGluYXRp
b25SZWN0LnNpemUoKSkpIHsKICAgICAgICAgICAgICAgICBhdXRvJiBidWZmZXJDb250ZXh0ID0g
aW1hZ2VCdWZmZXItPmNvbnRleHQoKTsKICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1Db250ZXh0
Rm9yUGFpbnRpbmcoYnVmZmVyQ29udGV4dCwgbG9jYWxEZXN0aW5hdGlvblJlY3QsIHNyY1JlY3Qp
OwogICAgICAgICAgICAgICAgIGRyYXdQREZQYWdlKGJ1ZmZlckNvbnRleHQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRHJhd0dseXBoc1Jl
Y29yZGVyQ29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29y
ZXRleHQvRHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCmluZGV4IGMyOTVlZmU4MzQ3YjA0
NWJlMzFkYjM2NzY3M2VlN2Y5OTViMWE0YzMuLmI5NmVjN2ExNzBjZWY2NGIzMjM1NWJmZWQzMTIw
ZmRiMDJhMTQ0MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvcmV0ZXh0L0RyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9EcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4
dC5jcHAKQEAgLTM3NCwxNCArMzc0LDE5IEBAIHZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpyZWNv
cmREcmF3SW1hZ2UoQ0dSZW5kZXJpbmdTdGF0ZVJlZiwgQ0dHU3RhdGVSZWYgZ3N0YXRlCiB2b2lk
IERyYXdHbHlwaHNSZWNvcmRlcjo6ZHJhd09UU1ZHUnVuKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0
IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZh
bmNlcywgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBzdGFydFBvaW50LCBG
b250U21vb3RoaW5nTW9kZSBzbW9vdGhpbmdNb2RlKQogewogICAgIEZsb2F0UG9pbnQgcGVuUG9z
aXRpb24gPSBzdGFydFBvaW50OworCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bUds
eXBoczsgKytpKSB7CiAgICAgICAgIGF1dG8gYm91bmRzID0gZm9udC5ib3VuZHNGb3JHbHlwaChn
bHlwaHNbaV0pOwotICAgICAgICBpZiAoYXV0byBpbWFnZUJ1ZmZlckRlc2NyaXB0aW9uID0gSW1h
Z2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoYm91bmRzLCBtX293bmVyKSkgewotICAg
ICAgICAgICAgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMoaW1hZ2VCdWZmZXJEZXNjcmlwdGlvbi0+
aW1hZ2VCdWZmZXItPmNvbnRleHQoKSwgZm9udCwgZ2x5cGhzICsgaSwgYWR2YW5jZXMgKyBpLCAx
LCBGbG9hdFBvaW50KCksIHNtb290aGluZ01vZGUpOwotICAgICAgICAgICAgYXV0byBkZXN0aW5h
dGlvblJlY3QgPSBpbWFnZUJ1ZmZlckRlc2NyaXB0aW9uLT5pbmZsYXRlZFJlY3RJblVzZXJDb29y
ZGluYXRlczsKKworICAgICAgICAvLyBDcmVhdGUgaW4tcHJvY2VzcyBJbWFnZUJ1ZmZlciBzaW5j
ZSB0aGUgZGVvY29kaW5nIG9mIE9ULVNWRyBmb250cyBoYXMgdG8gaGFwcGVuIGluIFdlYlByb2Nl
c3MuCisgICAgICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gbV9vd25lci5HcmFwaGljc0NvbnRl
eHQ6OmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihib3VuZHMpKSB7CisgICAgICAgICAgICBG
b250Q2FzY2FkZTo6ZHJhd0dseXBocyhpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLCBmb250LCBnbHlw
aHMgKyBpLCBhZHZhbmNlcyArIGksIDEsIEZsb2F0UG9pbnQoKSwgc21vb3RoaW5nTW9kZSk7CisK
KyAgICAgICAgICAgIEZsb2F0UmVjdCBkZXN0aW5hdGlvblJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0
KGJvdW5kcyk7CiAgICAgICAgICAgICBkZXN0aW5hdGlvblJlY3QubW92ZUJ5KHBlblBvc2l0aW9u
KTsKLSAgICAgICAgICAgIG1fb3duZXIuZHJhd0ltYWdlQnVmZmVyKGltYWdlQnVmZmVyRGVzY3Jp
cHRpb24tPmltYWdlQnVmZmVyLCBkZXN0aW5hdGlvblJlY3QpOworICAgICAgICAgICAgbV9vd25l
ci5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyLCBkZXN0aW5hdGlvblJlY3QpOwogICAgICAg
ICB9CisKICAgICAgICAgcGVuUG9zaXRpb24ubW92ZShzaXplKGFkdmFuY2VzW2ldKSk7CiAgICAg
fQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCmluZGV4IDg5ZjNk
MzUzZGE3YmI0MTcxMThmZjcxODhjZWRjMDdjMDhiY2M4NDcuLmQzZGQxNzU3ZTFjODAwNjI3MDhi
ODVhNTAzZjlkMmY2OWM3YzIxMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNv
cmRlci5jcHAKQEAgLTUwNyw2ICs1MDcsMTYgQEAgR3JhcGhpY3NDb250ZXh0OjpDbGlwVG9EcmF3
aW5nQ29tbWFuZHNSZXN1bHQgUmVjb3JkZXI6OmNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb24KICAg
ICByZXR1cm4gQ2xpcFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0OjpTdWNjZXNzOwogfQogCitSZWZQ
dHI8SW1hZ2VCdWZmZXI+IFJlY29yZGVyOjpjcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIoY29u
c3QgRmxvYXRTaXplJiBzaXplLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3Bh
Y2UsIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nTW9kZT4gcmVuZGVyaW5nTW9kZSkgY29uc3QKK3sK
KyAgICByZXR1cm4gY3JlYXRlSW1hZ2VCdWZmZXIoc2l6ZSwgc2NhbGVGYWN0b3IoKSwgY29sb3JT
cGFjZSwgcmVuZGVyaW5nTW9kZSk7Cit9CisKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gUmVjb3JkZXI6
OmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0
IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgc3RkOjpvcHRpb25hbDxSZW5kZXJp
bmdNb2RlPiByZW5kZXJpbmdNb2RlKSBjb25zdAoreworICAgIHJldHVybiBjcmVhdGVJbWFnZUJ1
ZmZlcihyZWN0LCBzY2FsZUZhY3RvcigpLCBjb2xvclNwYWNlLCByZW5kZXJpbmdNb2RlKTsKK30K
KwogI2lmIEVOQUJMRShWSURFTykKIHZvaWQgUmVjb3JkZXI6OnBhaW50RnJhbWVGb3JNZWRpYShN
ZWRpYVBsYXllciYgcGxheWVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKQogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKaW5kZXggNDBlN2EwYzI1NjAzNzEzNTlj
YWVkZGZkZDUzOTIwNWVkMTU4N2U5OC4uMTA1ZWMyMjg2NGU3MDY4YmFhOGQ0OWJlNDRiNWQ2YjM1
MjBiZGU3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCkBAIC0yNzEs
NiArMjcxLDkgQEAgcHJpdmF0ZToKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsaXBUb0ltYWdl
QnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JikgZmluYWw7CiAgICAgV0VCQ09S
RV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0OjpDbGlwVG9EcmF3aW5nQ29tbWFuZHNSZXN1bHQgY2xp
cFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IERl
c3RpbmF0aW9uQ29sb3JTcGFjZSYsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYp
IGZpbmFsOwogCisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVD
b21wYXRpYmxlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRGVzdGluYXRpb25D
b2xvclNwYWNlJiA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBzdGQ6Om9wdGlvbmFs
PFJlbmRlcmluZ01vZGU+ID0gc3RkOjpudWxsb3B0KSBjb25zdCBmaW5hbDsKKyAgICBXRUJDT1JF
X0VYUE9SVCBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmID0gRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCKCksIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nTW9kZT4gPSBzdGQ6
Om51bGxvcHQpIGNvbnN0IGZpbmFsOworCiAjaWYgRU5BQkxFKFZJREVPKQogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgcGFpbnRGcmFtZUZvck1lZGlhKE1lZGlhUGxheWVyJiwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0aW5hdGlvbikgZmluYWw7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1w
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZWNvcmRlckltcGwuY3BwCmluZGV4IDNlY2JjN2JhMzMzNWZjN2JiYWJmOTBlMTQ3
ZGMzYmE5MzRmNjQ4NjUuLjUyYjBiOGJkNTQ2NTZiYmI0MTAxZjFlZWZjNDA2NjQ5MWRmZDU5NTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmNwcApAQCAt
NDMxLDYgKzQzMSwxMSBAQCBib29sIFJlY29yZGVySW1wbDo6cmVjb3JkUmVzb3VyY2VVc2UoRm9u
dCYgZm9udCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorUmVmUHRyPEltYWdlQnVmZmVyPiBSZWNv
cmRlckltcGw6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmlu
Z01vZGU+IHJlbmRlcmluZ01vZGUpIGNvbnN0Cit7CisgICAgcmV0dXJuIEltYWdlQnVmZmVyOjpj
cmVhdGUoc2l6ZSwgcmVuZGVyaW5nTW9kZS52YWx1ZV9vcih0aGlzLT5yZW5kZXJpbmdNb2RlKCkp
LCBTaG91bGRVc2VEaXNwbGF5TGlzdDo6WWVzLCBSZW5kZXJpbmdQdXJwb3NlOjpVbnNwZWNpZmll
ZCwgMSwgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKK30KKwogLy8gRklYTUU6IHNo
YXJlIHdpdGggU2hhZG93RGF0YQogc3RhdGljIGlubGluZSBmbG9hdCBzaGFkb3dQYWludGluZ0V4
dGVudChmbG9hdCBibHVyUmFkaXVzKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZWNvcmRlckltcGwuaAppbmRleCA5MjZjMzNiMzExMTIyNTVlYzMyYzIyNDZlMzI5MTllMThlY2Y1
NDAzLi45MjE5NzBiMTRlZDAyMTU1ZmEwMGNiMWQyMGViNzNmODdlNzA1YTAzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RSZWNvcmRlckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaApAQCAtMTI3LDYgKzEyNyw4IEBA
IHByaXZhdGU6CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiBjcmVhdGVO
ZXN0ZWRDb250ZXh0KGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgaW5pdGlhbENUTSkgZmluYWw7CiAKKyAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNy
ZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIGNvbnN0IFdlYkNvcmU6
OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSYgPSBXZWJDb3JlOjpEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IoKSwgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdNb2RlPiA9IHN0ZDo6bnVsbG9wdCkgY29u
c3QgZmluYWw7CisKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBjbGFzcy4uLiBBcmdzPgogICAg
IHZvaWQgYXBwZW5kKEFyZ3MmJi4uLiBhcmdzKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlcGxheWVyLmNwcAppbmRleCBiMTg4Y2VhYjQyNjk2ZmZlMjAxMjA5YTkwMGFiNzAw
OTk1MGI4NWU1Li5iYWVkMTRjZTBhZDdjOWMwNGM5NWIwZTcxNTA1MmE2NTBlMDc5YTllIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZXBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCkBAIC0xNTQsNyArMTU0LDcg
QEAgc3RkOjpwYWlyPHN0ZDo6b3B0aW9uYWw8U3RvcFJlcGxheVJlYXNvbj4sIHN0ZDo6b3B0aW9u
YWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGkKICAgICAgICAgaWYgKG1fbWFza0ltYWdlQnVmZmVy
KQogICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6SW52YWxpZEl0ZW1PckV4
dGVudCwgc3RkOjpudWxsb3B0IH07CiAgICAgICAgIGF1dG8mIGNsaXBJdGVtID0gaXRlbS5nZXQ8
QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM+KCk7Ci0gICAgICAgIG1fbWFza0ltYWdlQnVmZmVy
ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY2xpcEl0ZW0uZGVzdGluYXRp
b24oKS5zaXplKCksIGNsaXBJdGVtLmNvbG9yU3BhY2UoKSwgbV9jb250ZXh0KTsKKyAgICAgICAg
bV9tYXNrSW1hZ2VCdWZmZXIgPSBtX2NvbnRleHQuY3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVy
KGNsaXBJdGVtLmRlc3RpbmF0aW9uKCkuc2l6ZSgpLCBjbGlwSXRlbS5jb2xvclNwYWNlKCkpOwog
ICAgICAgICBpZiAoIW1fbWFza0ltYWdlQnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuIHsgU3Rv
cFJlcGxheVJlYXNvbjo6T3V0T2ZNZW1vcnksIHN0ZDo6bnVsbG9wdCB9OwogICAgICAgICByZXR1
cm4geyBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1RoZW1lTWFjLm1tCmluZGV4IGQ3OWU4NWFhMmJjOTc1ODcyYWZmYjFkNzA3MTk0ZGRlZGJk
MzkwOWEuLjc0MTkxNWMwYzAzZDQxYjMzYjU3MzljOTY0NGMzNzcyNjVlZTFjZjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KQEAgLTczNCw3ICs3MzQsNyBAQCBib29s
IFRoZW1lTWFjOjpkcmF3Q2VsbE9yRm9jdXNSaW5nV2l0aFZpZXdJbnRvQ29udGV4dChOU0NlbGwg
KmNlbGwsIEdyYXBoaWNzQ29udAogCiAgICAgaWYgKHVzZUltYWdlQnVmZmVyKSB7CiAgICAgICAg
IE5TUmVjdCBpbWFnZUJ1ZmZlckRyYXdSZWN0ID0gTlNSZWN0KEZsb2F0UmVjdChidXR0b25Gb2N1
c1JlY3RPdXRsaW5lV2lkdGgsIGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVXaWR0aCwgcmVjdC53aWR0
aCgpLCByZWN0LmhlaWdodCgpKSk7Ci0gICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1
ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihyZWN0LnNpemUoKSArIDIgKiBGbG9hdFNpemUo
YnV0dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRoLCBidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgp
LCBkZXZpY2VTY2FsZUZhY3RvciwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIGNvbnRl
eHQpOworICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gY29udGV4dC5jcmVhdGVJbWFnZUJ1ZmZl
cihyZWN0LnNpemUoKSArIDIgKiBGbG9hdFNpemUoYnV0dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRo
LCBidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgpLCB7IGRldmljZVNjYWxlRmFjdG9yLCBkZXZp
Y2VTY2FsZUZhY3RvciB9KTsKICAgICAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgICAg
IHJldHVybiBuZWVkc1JlcGFpbnQ7CiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCmluZGV4IDUyOGYwMjIwNGE2MTg2Zjk4
NTFhMzI0YzUwZTliNjFjYjI1MjAzNzQuLjE5YmIwYzQyZmJjNWZjMjEzNTc2MDc4MjI2NTdmYmI2
MmFmODcyODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hN
b2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1v
ZGVsT2JqZWN0LmNwcApAQCAtODk0LDcgKzg5NCw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNv
CiAgICAgICAgIG1hc2tSZWN0LmludGVyc2VjdChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKHBhaW50
SW5mby5yZWN0LCBkZXZpY2VTY2FsZUZhY3RvcikpOwogCiAgICAgICAgIC8vIE5vdyBjcmVhdGUg
dGhlIG1hc2suCi0gICAgICAgIG1hc2tJbWFnZSA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRp
YmxlQnVmZmVyKG1hc2tSZWN0LnNpemUoKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCks
IGNvbnRleHQpOworICAgICAgICBtYXNrSW1hZ2UgPSBjb250ZXh0LmNyZWF0ZUNvbXBhdGlibGVJ
bWFnZUJ1ZmZlcihtYXNrUmVjdC5zaXplKCkpOwogICAgICAgICBpZiAoIW1hc2tJbWFnZSkKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgcGFpbnRNYXNrRm9yVGV4dEZpbGxCb3gobWFza0lt
YWdlLmdldCgpLCBtYXNrUmVjdCwgYm94LCBzY3JvbGxlZFBhaW50UmVjdCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCA3N2E4YTI3ODEyOTI1YTVhNDY3MmM2
NWRmOThjZjdhZGIyOTZmZGU3Li45NzNhZGM1ODYyZDNmMTQzMjAyY2JhZmUxYzdhYjY2YzUwM2Nh
NTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTMyNDcs
NyArMzI0Nyw3IEBAIEdyYXBoaWNzQ29udGV4dCogUmVuZGVyTGF5ZXI6OnNldHVwRmlsdGVycyhH
cmFwaGljc0NvbnRleHQmIGRlc3RpbmF0aW9uQ29udGV4dCwKIAogICAgIGF1dG8gcm9vdFJlbGF0
aXZlQm91bmRzID0gY2FsY3VsYXRlTGF5ZXJCb3VuZHMocGFpbnRpbmdJbmZvLnJvb3RMYXllciwg
b2Zmc2V0RnJvbVJvb3QsIHsgfSk7CiAKLSAgICBHcmFwaGljc0NvbnRleHQqIGZpbHRlckNvbnRl
eHQgPSBwYWludGluZ0ZpbHRlcnMtPmJlZ2luRmlsdGVyRWZmZWN0KHJlbmRlcmVyKCksIGVuY2xv
c2luZ0ludFJlY3Qocm9vdFJlbGF0aXZlQm91bmRzKSwgZW5jbG9zaW5nSW50UmVjdChwYWludGlu
Z0luZm8ucGFpbnREaXJ0eVJlY3QpLCBlbmNsb3NpbmdJbnRSZWN0KGZpbHRlclJlcGFpbnRSZWN0
KSk7CisgICAgR3JhcGhpY3NDb250ZXh0KiBmaWx0ZXJDb250ZXh0ID0gcGFpbnRpbmdGaWx0ZXJz
LT5iZWdpbkZpbHRlckVmZmVjdChyZW5kZXJlcigpLCBkZXN0aW5hdGlvbkNvbnRleHQsIGVuY2xv
c2luZ0ludFJlY3Qocm9vdFJlbGF0aXZlQm91bmRzKSwgZW5jbG9zaW5nSW50UmVjdChwYWludGlu
Z0luZm8ucGFpbnREaXJ0eVJlY3QpLCBlbmNsb3NpbmdJbnRSZWN0KGZpbHRlclJlcGFpbnRSZWN0
KSk7CiAgICAgaWYgKCFmaWx0ZXJDb250ZXh0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRl
eCA0ZWZjZmFiNTU1N2I1NTMzYmVlOTVjOTQyODI2MTJhMTc1ZjY1MzM4Li5kMmZmMmU5MWFiMTA5
YTAxYTk3ZDdmNzgyZjNjYjZhMzdiYTAyNjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtMzMxMiw3ICszMzEyLDcgQEAgc3RhdGlj
IFJlZlB0cjxQYXR0ZXJuPiBwYXR0ZXJuRm9yRGVzY3JpcHRpb24oUGF0dGVybkRlc2NyaXB0aW9u
IGRlc2NyaXB0aW9uLCBGbG8KIHsKICAgICBjb25zdCBGbG9hdFNpemUgdGlsZVNpemUgeyAzMiwg
MTggfTsKIAotICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0
aWJsZUJ1ZmZlcih0aWxlU2l6ZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIGRlc3RD
b250ZXh0KTsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gZGVzdENvbnRleHQuY3JlYXRlQ29tcGF0
aWJsZUltYWdlQnVmZmVyKHRpbGVTaXplKTsKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyRmlsdGVycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJGaWx0ZXJzLmNwcAppbmRleCA2ZGU0ZmYwMTdiOTI1N2E5YjZiMTA3MzZmMWM0ZTE4OTFh
OGU3NWEwLi40ODczN2ViMjQxNzI3ZTE2YmQ1MzViZTVkM2NkNWFmNzQ5ZWM1NGE1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmNwcApAQCAtMTI5
LDE5ICsxMjksMTkgQEAgR3JhcGhpY3NDb250ZXh0KiBSZW5kZXJMYXllckZpbHRlcnM6OmlucHV0
Q29udGV4dCgpCiAgICAgcmV0dXJuIG1fc291cmNlSW1hZ2UgPyAmbV9zb3VyY2VJbWFnZS0+Y29u
dGV4dCgpIDogbnVsbHB0cjsKIH0KIAotdm9pZCBSZW5kZXJMYXllckZpbHRlcnM6OmFsbG9jYXRl
QmFja2luZ1N0b3JlSWZOZWVkZWQoKQordm9pZCBSZW5kZXJMYXllckZpbHRlcnM6OmFsbG9jYXRl
QmFja2luZ1N0b3JlSWZOZWVkZWQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewogICAgIGF1
dG8mIGZpbHRlciA9ICptX2ZpbHRlcjsKICAgICBhdXRvIGxvZ2ljYWxTaXplID0gZmlsdGVyLnNj
YWxlZEJ5RmlsdGVyU2NhbGUobV9maWx0ZXJSZWdpb24uc2l6ZSgpKTsKIAogICAgIGlmICghbV9z
b3VyY2VJbWFnZSB8fCBtX3NvdXJjZUltYWdlLT5sb2dpY2FsU2l6ZSgpICE9IGxvZ2ljYWxTaXpl
KSB7Ci0gICAgICAgIG1fc291cmNlSW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGxvZ2ljYWxT
aXplLCBmaWx0ZXIucmVuZGVyaW5nTW9kZSgpLCBTaG91bGRVc2VEaXNwbGF5TGlzdDo6Tm8sIFJl
bmRlcmluZ1B1cnBvc2U6OkRPTSwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBp
eGVsRm9ybWF0OjpCR1JBOCwgbV9sYXllci5yZW5kZXJlcigpLmhvc3RXaW5kb3coKSk7Ci0gICAg
ICAgIGlmIChhdXRvIGNvbnRleHQgPSBpbnB1dENvbnRleHQoKSkKLSAgICAgICAgICAgIGNvbnRl
eHQtPnNjYWxlKGZpbHRlci5maWx0ZXJTY2FsZSgpKTsKKyAgICAgICAgbV9zb3VyY2VJbWFnZSA9
IGNvbnRleHQuY3JlYXRlSW1hZ2VCdWZmZXIobG9naWNhbFNpemUsIERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQigpLCBmaWx0ZXIucmVuZGVyaW5nTW9kZSgpKTsKKyAgICAgICAgaWYgKG1fc291
cmNlSW1hZ2UpCisgICAgICAgICAgICBpbnB1dENvbnRleHQoKS0+c2NhbGUoZmlsdGVyLmZpbHRl
clNjYWxlKCkpOwogICAgIH0KIH0KIAotR3JhcGhpY3NDb250ZXh0KiBSZW5kZXJMYXllckZpbHRl
cnM6OmJlZ2luRmlsdGVyRWZmZWN0KFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBMYXlv
dXRSZWN0JiBmaWx0ZXJCb3hSZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBkaXJ0eVJlY3QsIGNvbnN0
IExheW91dFJlY3QmIGxheWVyUmVwYWludFJlY3QpCitHcmFwaGljc0NvbnRleHQqIFJlbmRlckxh
eWVyRmlsdGVyczo6YmVnaW5GaWx0ZXJFZmZlY3QoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgZmlsdGVyQm94UmVjdCwg
Y29uc3QgTGF5b3V0UmVjdCYgZGlydHlSZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBsYXllclJlcGFp
bnRSZWN0KQogewogICAgIGlmICghbV9maWx0ZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpA
QCAtMTkzLDcgKzE5Myw3IEBAIEdyYXBoaWNzQ29udGV4dCogUmVuZGVyTGF5ZXJGaWx0ZXJzOjpi
ZWdpbkZpbHRlckVmZmVjdChSZW5kZXJFbGVtZW50JiByZW5kZXJlciwKICAgICByZXNldERpcnR5
U291cmNlUmVjdCgpOwogCiAgICAgZmlsdGVyLnNldEZpbHRlclJlZ2lvbihtX2ZpbHRlclJlZ2lv
bik7Ci0gICAgYWxsb2NhdGVCYWNraW5nU3RvcmVJZk5lZWRlZCgpOworICAgIGFsbG9jYXRlQmFj
a2luZ1N0b3JlSWZOZWVkZWQoY29udGV4dCk7CiAKICAgICBhdXRvKiBzb3VyY2VHcmFwaGljc0Nv
bnRleHQgPSBpbnB1dENvbnRleHQoKTsKICAgICBpZiAoIXNvdXJjZUdyYXBoaWNzQ29udGV4dCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuaAppbmRleCBi
MGNiNzdjOGUxMDVjNGJlMDdmNjZlNjkyNDcxNzNiYzhlNWUzYTllLi5lM2YyMTRkNTg5MmZjZGUw
ODVlYTEyNjZhYzc1N2MwZjljNDZjODkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyRmlsdGVycy5oCkBAIC02MywxNCArNjMsMTQgQEAgcHVibGljOgogICAgIC8v
IFBlciByZW5kZXIKICAgICBMYXlvdXRSZWN0IHJlcGFpbnRSZWN0KCkgY29uc3QgeyByZXR1cm4g
bV9yZXBhaW50UmVjdDsgfQogCi0gICAgR3JhcGhpY3NDb250ZXh0KiBiZWdpbkZpbHRlckVmZmVj
dChSZW5kZXJFbGVtZW50JiwgY29uc3QgTGF5b3V0UmVjdCYgZmlsdGVyQm94UmVjdCwgY29uc3Qg
TGF5b3V0UmVjdCYgZGlydHlSZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBsYXllclJlcGFpbnRSZWN0
KTsKKyAgICBHcmFwaGljc0NvbnRleHQqIGJlZ2luRmlsdGVyRWZmZWN0KFJlbmRlckVsZW1lbnQm
LCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXlvdXRSZWN0JiBmaWx0ZXJCb3hSZWN0LCBjb25z
dCBMYXlvdXRSZWN0JiBkaXJ0eVJlY3QsIGNvbnN0IExheW91dFJlY3QmIGxheWVyUmVwYWludFJl
Y3QpOwogICAgIHZvaWQgYXBwbHlGaWx0ZXJFZmZlY3QoR3JhcGhpY3NDb250ZXh0JiBkZXN0aW5h
dGlvbkNvbnRleHQpOwogCiBwcml2YXRlOgogICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVk
UmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIHJl
c2V0RGlydHlTb3VyY2VSZWN0KCkgeyBtX2RpcnR5U291cmNlUmVjdCA9IExheW91dFJlY3QoKTsg
fQogICAgIEdyYXBoaWNzQ29udGV4dCogaW5wdXRDb250ZXh0KCk7Ci0gICAgdm9pZCBhbGxvY2F0
ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKCk7CisgICAgdm9pZCBhbGxvY2F0ZUJhY2tpbmdTdG9yZUlm
TmVlZGVkKEdyYXBoaWNzQ29udGV4dCYpOwogCiAgICAgUmVuZGVyTGF5ZXImIG1fbGF5ZXI7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNvY29hLm1t
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ29jb2EubW0KaW5kZXggMWE2
NjczMjI3MjJhZDM4ZmMxNTE0YmJiMTE5ZWRjZTNhOGVmNzNmMy4uYWJkNGMxZGIxMzE0ZDQ0MjFi
NzMyMmFhODU3NTFhZWIyZjU5M2FkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lQ29jb2EubW0KQEAgLTE1NCw3ICsxNTQsNyBAQCBib29sIFJlbmRlclRoZW1lQ29j
b2E6OnBhaW50QXBwbGVQYXlCdXR0b24oY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgY29u
c3QgUAogewogICAgIGF1dG8mIGRlc3RpbmF0aW9uQ29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0
KCk7CiAKLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGli
bGVCdWZmZXIocGFpbnRSZWN0LnNpemUoKSwgZGVzdGluYXRpb25Db250ZXh0KTsKKyAgICBhdXRv
IGltYWdlQnVmZmVyID0gZGVzdGluYXRpb25Db250ZXh0LmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1
ZmZlcihwYWludFJlY3Quc2l6ZSgpKTsKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5t
bQppbmRleCA2Yzk0ZTkyZTBmZmY4NDAxM2YxYTZlYzY4MjljN2U5MDBhMjAwNzhmLi5lNDdhNjZk
MGYzMGYyYWE0N2MwNDQ4YjFkMWRkNGE0MTZiZmM2NjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCkBAIC05OTYsNyArOTk2LDcgQEAgdm9pZCBSZW5kZXJU
aGVtZU1hYzo6cGFpbnRMaXN0QnV0dG9uRm9ySW5wdXQoY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBH
cmFwaGljc0NvbnQKIAogICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gby5kb2N1bWVudCgp
LmRldmljZVNjYWxlRmFjdG9yKCk7CiAKLSAgICBhdXRvIGNvbWJvQm94SW1hZ2VCdWZmZXIgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb21ib0JveFNpemUsIGRldmljZVNj
YWxlRmFjdG9yLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgY29udGV4dCk7CisgICAg
YXV0byBjb21ib0JveEltYWdlQnVmZmVyID0gY29udGV4dC5jcmVhdGVJbWFnZUJ1ZmZlcihjb21i
b0JveFNpemUsIHsgZGV2aWNlU2NhbGVGYWN0b3IsIGRldmljZVNjYWxlRmFjdG9yIH0pOwogICAg
IGlmICghY29tYm9Cb3hJbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCkBAIC0xMDIwLDcg
KzEwMjAsNyBAQCB2b2lkIFJlbmRlclRoZW1lTWFjOjpwYWludExpc3RCdXR0b25Gb3JJbnB1dChj
b25zdCBSZW5kZXJPYmplY3QmIG8sIEdyYXBoaWNzQ29udAogICAgICAgICAoX19icmlkZ2UgTlNT
dHJpbmcgKilrQ1VJVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbktleSA6IChfX2JyaWRnZSBO
U1N0cmluZyAqKWtDVUlVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uTGVmdFRvUmlnaHQsCiAg
ICAgfV07CiAKLSAgICBhdXRvIGNvbWJvQm94QnV0dG9uSW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihkZXNpcmVkQ29tYm9Cb3hCdXR0b25TaXplLCBkZXZp
Y2VTY2FsZUZhY3RvciwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIGNvbnRleHQpOwor
ICAgIGF1dG8gY29tYm9Cb3hCdXR0b25JbWFnZUJ1ZmZlciA9IGNvbnRleHQuY3JlYXRlSW1hZ2VC
dWZmZXIoZGVzaXJlZENvbWJvQm94QnV0dG9uU2l6ZSwgeyBkZXZpY2VTY2FsZUZhY3RvciwgZGV2
aWNlU2NhbGVGYWN0b3IgfSk7CiAgICAgaWYgKCFjb21ib0JveEJ1dHRvbkltYWdlQnVmZmVyKQog
ICAgICAgICByZXR1cm47CiAKQEAgLTEzNzksNyArMTM3OSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVN
YWM6OnBhaW50UHJvZ3Jlc3NCYXIoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJPYmplY3QsIGNv
bnN0IFBhCiAgICAgY29uc3QgYXV0byYgcmVuZGVyUHJvZ3Jlc3MgPSBkb3duY2FzdDxSZW5kZXJQ
cm9ncmVzcz4ocmVuZGVyT2JqZWN0KTsKICAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IHJl
bmRlck9iamVjdC5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCk7CiAgICAgYm9vbCBpc0lu
ZGV0ZXJtaW5hdGUgPSByZW5kZXJQcm9ncmVzcy5wb3NpdGlvbigpIDwgMDsKLSAgICBhdXRvIGlt
YWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoaW5mbGF0ZWRS
ZWN0LnNpemUoKSwgZGV2aWNlU2NhbGVGYWN0b3IsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
QigpLCBwYWludEluZm8uY29udGV4dCgpKTsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gcGFpbnRJ
bmZvLmNvbnRleHQoKS5jcmVhdGVJbWFnZUJ1ZmZlcihpbmZsYXRlZFJlY3Quc2l6ZSgpLCB7IGRl
dmljZVNjYWxlRmFjdG9yLCBkZXZpY2VTY2FsZUZhY3RvciB9KTsKICAgICBpZiAoIWltYWdlQnVm
ZmVyKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCmluZGV4IGRhMGQ1
NmNkMjcwOTA0NjQ3OGQwMjI0ZTgyMzA0MjBhMzEyNmFkYTAuLjU5YTMxOTY1NTExZjkzYWZjNDZj
ZjQ5NzlhNTI5OTU2NGU5MmNlNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAKQEAgLTE1Miw5ICsxNTIs
MTMgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OmFwcGx5Q2xpcHBpbmdUb0NvbnRl
eHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LAogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAg
IEFmZmluZVRyYW5zZm9ybSBhYnNvbHV0ZVRyYW5zZm9ybSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6
OmNhbGN1bGF0ZVRyYW5zZm9ybWF0aW9uVG9PdXRlcm1vc3RDb29yZGluYXRlU3lzdGVtKHJlbmRl
cmVyKTsKKwogICAgIGlmICghY2xpcHBlckRhdGEuaXNWYWxpZEZvckdlb21ldHJ5KG9iamVjdEJv
dW5kaW5nQm94LCBjbGlwcGVkQ29udGVudEJvdW5kcywgYWJzb2x1dGVUcmFuc2Zvcm0pKSB7Cisg
ICAgICAgIC8vIElnbm9yZSAyRCByb3RhdGlvbiwgYXMgaXQgZG9lc24ndCBhZmZlY3QgdGhlIHNp
emUgb2YgdGhlIG1hc2suCisgICAgICAgIEZsb2F0U2l6ZSBzY2FsZShhYnNvbHV0ZVRyYW5zZm9y
bS54U2NhbGUoKSwgYWJzb2x1dGVUcmFuc2Zvcm0ueVNjYWxlKCkpOworCiAgICAgICAgIC8vIEZJ
WE1FICgxNDk0NjkpOiBUaGlzIGltYWdlIGJ1ZmZlciBzaG91bGQgbm90IGJlIHVuY29uZGl0aW9u
YWxseSB1bmFjY2VsZXJhdGVkLiBNYWtpbmcgaXQgbWF0Y2ggdGhlIGNvbnRleHQgYnJlYWtzIG5l
c3RlZCBjbGlwcGluZywgdGhvdWdoLgotICAgICAgICBhdXRvIG1hc2tJbWFnZSA9IFNWR1JlbmRl
cmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNsaXBwZWRDb250ZW50Qm91bmRzLCBhYnNv
bHV0ZVRyYW5zZm9ybSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFJlbmRlcmluZ01v
ZGU6OlVuYWNjZWxlcmF0ZWQsIGhvc3RXaW5kb3coKSk7CisgICAgICAgIGF1dG8gbWFza0ltYWdl
ID0gY29udGV4dC5jcmVhdGVJbWFnZUJ1ZmZlcihjbGlwcGVkQ29udGVudEJvdW5kcywgc2NhbGUs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJh
dGVkKTsKICAgICAgICAgaWYgKCFtYXNrSW1hZ2UpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZUZpbHRlci5jcHAKaW5kZXggNzg2NWE1ODVhNDdlZmQ4MjQ2MTc1MWY5ZmZhOWExZDFi
MWIyNzE0OS4uYmIxODZiY2ViNTA4NDBjYzI4MDM4YWNlYTM0YmRlNmZmYTMwNzVjZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlci5jcHAKQEAgLTE0NiwyMyArMTQ2LDIxIEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VG
aWx0ZXI6OmFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFJlbmRl
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICAvLyBDaGFuZ2UgdGhlIGNvb3Jk
aW5hdGUgdHJhbnNmb3JtYXRpb24gYXBwbGllZCB0byB0aGUgZmlsdGVyZWQgZWxlbWVudCB0byBy
ZWZsZWN0IHRoZSByZXNvbHV0aW9uIG9mIHRoZSBmaWx0ZXIuCi0gICAgYXV0byBlZmZlY3RpdmVU
cmFuc2Zvcm0gPSBBZmZpbmVUcmFuc2Zvcm0oZmlsdGVyU2NhbGUud2lkdGgoKSwgMCwgMCwgZmls
dGVyU2NhbGUuaGVpZ2h0KCksIDAsIDApOwotCiAjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9S
X1NQQUNFX0xJTkVBUl9TUkdCKQogICAgIGF1dG8gY29sb3JTcGFjZSA9IERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6TGluZWFyU1JHQigpOwogI2Vsc2UKICAgICBhdXRvIGNvbG9yU3BhY2UgPSBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKTsKICNlbmRpZgotICAgIGF1dG8gc291cmNlR3JhcGhp
YyA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGZpbHRlckRhdGEtPmRy
YXdpbmdSZWdpb24sIGVmZmVjdGl2ZVRyYW5zZm9ybSwgY29sb3JTcGFjZSwgZmlsdGVyRGF0YS0+
ZmlsdGVyLT5yZW5kZXJpbmdNb2RlKCksIHJlbmRlcmVyLmhvc3RXaW5kb3coKSk7CisKKyAgICBh
dXRvIHNvdXJjZUdyYXBoaWMgPSBjb250ZXh0LT5jcmVhdGVJbWFnZUJ1ZmZlcihmaWx0ZXJEYXRh
LT5kcmF3aW5nUmVnaW9uLCBmaWx0ZXJTY2FsZSwgY29sb3JTcGFjZSwgZmlsdGVyRGF0YS0+Zmls
dGVyLT5yZW5kZXJpbmdNb2RlKCkpOwogICAgIGlmICghc291cmNlR3JhcGhpYykgewogICAgICAg
ICBBU1NFUlQobV9yZW5kZXJlckZpbHRlckRhdGFNYXAuY29udGFpbnMoJnJlbmRlcmVyKSk7CiAg
ICAgICAgIGZpbHRlckRhdGEtPnNhdmVkQ29udGV4dCA9IGNvbnRleHQ7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9Ci0gICAgCisKICAgICBhdXRvJiBzb3VyY2VHcmFwaGljQ29udGV4dCA9
IHNvdXJjZUdyYXBoaWMtPmNvbnRleHQoKTsKLSAgCisKICAgICBmaWx0ZXJEYXRhLT5zb3VyY2VH
cmFwaGljQnVmZmVyID0gV1RGTW92ZShzb3VyY2VHcmFwaGljKTsKICAgICBmaWx0ZXJEYXRhLT5z
YXZlZENvbnRleHQgPSBjb250ZXh0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcAppbmRleCA0NDc1YTY5
ZjhmMmM5NjZmNjNjMzE4M2YzMmVmMTU0ODVhODRhYzJiLi5iMWMwNDQ0YWE5MzYwNzRmNWFlOTNk
NTg5ZDVlZDRiMWY4MDk1ZDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAKQEAgLTYwLDcgKzYwLDEw
IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBjcmVhdGVNYXNrQW5kU3dhcENvbnRleHRGb3JUZXh0R3Jh
ZGllbnQoR3JhcGhpY3NDb250ZXh0KiYgY29uCiAgICAgQWZmaW5lVHJhbnNmb3JtIGFic29sdXRl
VHJhbnNmb3JtID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2FsY3VsYXRlVHJhbnNmb3JtYXRpb25U
b091dGVybW9zdENvb3JkaW5hdGVTeXN0ZW0oKnRleHRSb290QmxvY2spOwogICAgIEZsb2F0UmVj
dCByZXBhaW50UmVjdCA9IHRleHRSb290QmxvY2stPnJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5h
dGVzKCk7CiAKLSAgICBhdXRvIG1hc2tJbWFnZSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0
ZUltYWdlQnVmZmVyKHJlcGFpbnRSZWN0LCBhYnNvbHV0ZVRyYW5zZm9ybSwgRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCKCksIGNvbnRleHQtPnJlbmRlcmluZ01vZGUoKSwgcmVuZGVyZXIuaG9z
dFdpbmRvdygpKTsKKyAgICAvLyBJZ25vcmUgMkQgcm90YXRpb24sIGFzIGl0IGRvZXNuJ3QgYWZm
ZWN0IHRoZSBzaXplIG9mIHRoZSBtYXNrLgorICAgIEZsb2F0U2l6ZSBzY2FsZShhYnNvbHV0ZVRy
YW5zZm9ybS54U2NhbGUoKSwgYWJzb2x1dGVUcmFuc2Zvcm0ueVNjYWxlKCkpOworCisgICAgYXV0
byBtYXNrSW1hZ2UgPSBjb250ZXh0LT5jcmVhdGVJbWFnZUJ1ZmZlcihyZXBhaW50UmVjdCwgc2Nh
bGUpOwogICAgIGlmICghbWFza0ltYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNr
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1h
c2tlci5jcHAKaW5kZXggNzY0ZjdjODg4ZjMyYmYxOTU4YWViZTJiN2U2MWE1MTk5OWMyOTg1MC4u
OTA5MTQxYjBjM2M4ZThjNDBlOWE5Y2U1OGY4NDdmNmYxN2FlNWQ1YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5j
cHAKQEAgLTgyLDkgKzgyLDExIEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmFwcGx5
UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFJlbmRlCiAgICAgICAgICAg
ICBkcmF3Q29sb3JTcGFjZSA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQigpOwog
ICAgICAgICB9CiAjZW5kaWYKKyAgICAgICAgLy8gSWdub3JlIDJEIHJvdGF0aW9uLCBhcyBpdCBk
b2Vzbid0IGFmZmVjdCB0aGUgc2l6ZSBvZiB0aGUgbWFzay4KKyAgICAgICAgRmxvYXRTaXplIHNj
YWxlKGFic29sdXRlVHJhbnNmb3JtLnhTY2FsZSgpLCBhYnNvbHV0ZVRyYW5zZm9ybS55U2NhbGUo
KSk7CiAKICAgICAgICAgLy8gRklYTUUgKDE0OTQ3MCk6IFRoaXMgaW1hZ2UgYnVmZmVyIHNob3Vs
ZCBub3QgYmUgdW5jb25kaXRpb25hbGx5IHVuYWNjZWxlcmF0ZWQuIE1ha2luZyBpdCBtYXRjaCB0
aGUgY29udGV4dCBicmVha3MgYWxwaGEgbWFza2luZywgdGhvdWdoLgotICAgICAgICBtYXNrZXJE
YXRhLT5tYXNrSW1hZ2UgPSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihy
ZXBhaW50UmVjdCwgYWJzb2x1dGVUcmFuc2Zvcm0sIG1hc2tDb2xvclNwYWNlLCBSZW5kZXJpbmdN
b2RlOjpVbmFjY2VsZXJhdGVkLCBob3N0V2luZG93KCkpOworICAgICAgICBtYXNrZXJEYXRhLT5t
YXNrSW1hZ2UgPSBjb250ZXh0LT5jcmVhdGVJbWFnZUJ1ZmZlcihyZXBhaW50UmVjdCwgc2NhbGUs
IG1hc2tDb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkKTsKICAgICAgICAg
aWYgKCFtYXNrZXJEYXRhLT5tYXNrSW1hZ2UpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VQYXR0ZXJuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VQYXR0ZXJuLmNwcAppbmRleCBlOGI1MWNmYjkzOTQ5MjYzODFlZjNiMDRhM2UxN2E1ZmQx
NWMwODZiLi4xYjcxM2UxMzNjZDczZjFiZTg1ZDk4NDUyYjc2ODgzZGU2Y2VmY2YxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVy
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZVBhdHRlcm4uY3BwCkBAIC05NSwxOSArOTUsMTYgQEAgUGF0dGVybkRhdGEqIFJlbmRlclNWR1Jl
c291cmNlUGF0dGVybjo6YnVpbGRQYXR0ZXJuKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBPcHQK
ICAgICBpZiAoIWJ1aWxkVGlsZUltYWdlVHJhbnNmb3JtKHJlbmRlcmVyLCBtX2F0dHJpYnV0ZXMs
IHBhdHRlcm5FbGVtZW50KCksIHRpbGVCb3VuZGFyaWVzLCB0aWxlSW1hZ2VUcmFuc2Zvcm0pKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIEFmZmluZVRyYW5zZm9ybSBhYnNvbHV0ZVRy
YW5zZm9ybUlnbm9yaW5nUm90YXRpb24gPSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjYWxjdWxhdGVU
cmFuc2Zvcm1hdGlvblRvT3V0ZXJtb3N0Q29vcmRpbmF0ZVN5c3RlbShyZW5kZXJlcik7CisgICAg
YXV0byBhYnNvbHV0ZVRyYW5zZm9ybSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNhbGN1bGF0ZVRy
YW5zZm9ybWF0aW9uVG9PdXRlcm1vc3RDb29yZGluYXRlU3lzdGVtKHJlbmRlcmVyKTsKIAogICAg
IC8vIElnbm9yZSAyRCByb3RhdGlvbiwgYXMgaXQgZG9lc24ndCBhZmZlY3QgdGhlIHNpemUgb2Yg
dGhlIHRpbGUuCi0gICAgU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2xlYXIyRFJvdGF0aW9uKGFic29s
dXRlVHJhbnNmb3JtSWdub3JpbmdSb3RhdGlvbik7Ci0gICAgRmxvYXRSZWN0IGFic29sdXRlVGls
ZUJvdW5kYXJpZXMgPSBhYnNvbHV0ZVRyYW5zZm9ybUlnbm9yaW5nUm90YXRpb24ubWFwUmVjdCh0
aWxlQm91bmRhcmllcyk7Ci0gICAgRmxvYXRSZWN0IGNsYW1wZWRBYnNvbHV0ZVRpbGVCb3VuZGFy
aWVzOworICAgIEZsb2F0U2l6ZSB0aWxlU2NhbGUoYWJzb2x1dGVUcmFuc2Zvcm0ueFNjYWxlKCks
IGFic29sdXRlVHJhbnNmb3JtLnlTY2FsZSgpKTsKIAogICAgIC8vIFNjYWxlIHRoZSB0aWxlIHNp
emUgdG8gbWF0Y2ggdGhlIHNjYWxlIGxldmVsIG9mIHRoZSBwYXR0ZXJuVHJhbnNmb3JtLgotICAg
IGFic29sdXRlVGlsZUJvdW5kYXJpZXMuc2NhbGUoc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fYXR0cmli
dXRlcy5wYXR0ZXJuVHJhbnNmb3JtKCkueFNjYWxlKCkpLAotICAgICAgICBzdGF0aWNfY2FzdDxm
bG9hdD4obV9hdHRyaWJ1dGVzLnBhdHRlcm5UcmFuc2Zvcm0oKS55U2NhbGUoKSkpOworICAgIHRp
bGVTY2FsZS5zY2FsZShzdGF0aWNfY2FzdDxmbG9hdD4obV9hdHRyaWJ1dGVzLnBhdHRlcm5UcmFu
c2Zvcm0oKS54U2NhbGUoKSksIHN0YXRpY19jYXN0PGZsb2F0PihtX2F0dHJpYnV0ZXMucGF0dGVy
blRyYW5zZm9ybSgpLnlTY2FsZSgpKSk7CiAKICAgICAvLyBCdWlsZCB0aWxlIGltYWdlLgotICAg
IGF1dG8gdGlsZUltYWdlID0gY3JlYXRlVGlsZUltYWdlKG1fYXR0cmlidXRlcywgdGlsZUJvdW5k
YXJpZXMsIGFic29sdXRlVGlsZUJvdW5kYXJpZXMsIHRpbGVJbWFnZVRyYW5zZm9ybSwgY2xhbXBl
ZEFic29sdXRlVGlsZUJvdW5kYXJpZXMsIGNvbnRleHQucmVuZGVyaW5nTW9kZSgpKTsKKyAgICBh
dXRvIHRpbGVJbWFnZSA9IGNyZWF0ZVRpbGVJbWFnZShjb250ZXh0LCB0aWxlQm91bmRhcmllcy5z
aXplKCksIHRpbGVTY2FsZSwgdGlsZUltYWdlVHJhbnNmb3JtLCBtX2F0dHJpYnV0ZXMpOwogICAg
IGlmICghdGlsZUltYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMjM0LDI1ICsy
MzEsMjMgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OmJ1aWxkVGlsZUltYWdlVHJh
bnNmb3JtKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLAogICAgIHJldHVybiB0cnVlOwogfQogCi1S
ZWZQdHI8SW1hZ2VCdWZmZXI+IFJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6Y3JlYXRlVGlsZUlt
YWdlKGNvbnN0IFBhdHRlcm5BdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBjb25zdCBGbG9hdFJlY3Qm
IHRpbGVCb3VuZGFyaWVzLCBjb25zdCBGbG9hdFJlY3QmIGFic29sdXRlVGlsZUJvdW5kYXJpZXMs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdGlsZUltYWdlVHJhbnNmb3JtLCBGbG9hdFJlY3QmIGNs
YW1wZWRBYnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUp
IGNvbnN0CitSZWZQdHI8SW1hZ2VCdWZmZXI+IFJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6Y3Jl
YXRlVGlsZUltYWdlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRTaXplJiBz
aXplLCBjb25zdCBGbG9hdFNpemUmIHNjYWxlLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5z
Zm9ybSwgY29uc3QgUGF0dGVybkF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpIGNvbnN0CiB7Ci0gICAg
Y2xhbXBlZEFic29sdXRlVGlsZUJvdW5kYXJpZXMgPSBJbWFnZUJ1ZmZlcjo6Y2xhbXBlZFJlY3Qo
YWJzb2x1dGVUaWxlQm91bmRhcmllcyk7Ci0gICAgYXV0byB0aWxlSW1hZ2UgPSBTVkdSZW5kZXJp
bmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihhYnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCBjbGFt
cGVkQWJzb2x1dGVUaWxlQm91bmRhcmllcywgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCks
IHJlbmRlcmluZ01vZGUsIGhvc3RXaW5kb3coKSk7CisgICAgYXV0byB0aWxlU2l6ZSA9IGNvbnRl
eHQudGlnaHRJbWFnZUJ1ZmZlclNpemUoc2l6ZSwgc2NhbGUpOworCisgICAgYXV0byB0aWxlSW1h
Z2UgPSBjb250ZXh0LmNyZWF0ZUltYWdlQnVmZmVyKHRpbGVTaXplLCBzY2FsZSk7CiAgICAgaWYg
KCF0aWxlSW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgR3JhcGhpY3NDb250
ZXh0JiB0aWxlSW1hZ2VDb250ZXh0ID0gdGlsZUltYWdlLT5jb250ZXh0KCk7CiAKLSAgICAvLyBU
aGUgaW1hZ2UgYnVmZmVyIHJlcHJlc2VudHMgdGhlIGZpbmFsIHJlbmRlcmVkIHNpemUsIHNvIHRo
ZSBjb250ZW50IGhhcyB0byBiZSBzY2FsZWQgKHRvIGF2b2lkIHBpeGVsYXRpb24pLgotICAgIHRp
bGVJbWFnZUNvbnRleHQuc2NhbGUoY2xhbXBlZEFic29sdXRlVGlsZUJvdW5kYXJpZXMuc2l6ZSgp
IC8gdGlsZUJvdW5kYXJpZXMuc2l6ZSgpKTsKLQogICAgIC8vIEFwcGx5IHRpbGUgaW1hZ2UgdHJh
bnNmb3JtYXRpb25zLgotICAgIGlmICghdGlsZUltYWdlVHJhbnNmb3JtLmlzSWRlbnRpdHkoKSkK
LSAgICAgICAgdGlsZUltYWdlQ29udGV4dC5jb25jYXRDVE0odGlsZUltYWdlVHJhbnNmb3JtKTsK
KyAgICBpZiAoIXRyYW5zZm9ybS5pc0lkZW50aXR5KCkpCisgICAgICAgIHRpbGVJbWFnZUNvbnRl
eHQuY29uY2F0Q1RNKHRyYW5zZm9ybSk7CiAKICAgICBBZmZpbmVUcmFuc2Zvcm0gY29udGVudFRy
YW5zZm9ybWF0aW9uOwogICAgIGlmIChhdHRyaWJ1dGVzLnBhdHRlcm5Db250ZW50VW5pdHMoKSA9
PSBTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfT0JKRUNUQk9VTkRJTkdCT1gpCi0gICAgICAg
IGNvbnRlbnRUcmFuc2Zvcm1hdGlvbiA9IHRpbGVJbWFnZVRyYW5zZm9ybTsKKyAgICAgICAgY29u
dGVudFRyYW5zZm9ybWF0aW9uID0gdHJhbnNmb3JtOwogCiAgICAgLy8gRHJhdyB0aGUgY29udGVu
dCBpbnRvIHRoZSBJbWFnZUJ1ZmZlci4KICAgICBmb3IgKGF1dG8mIGNoaWxkIDogY2hpbGRyZW5P
ZlR5cGU8U1ZHRWxlbWVudD4oKmF0dHJpYnV0ZXMucGF0dGVybkNvbnRlbnRFbGVtZW50KCkpKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlUGF0dGVybi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZVBhdHRlcm4uaAppbmRleCA3MTE3ZjEyN2QwZGRkNzNiYTVlYmM1NTk5MDEwYzI0YmI2MmYw
OGE2Li4zZjYzNjY5ODg5MzkxYmFjZjY4YWQ1YmIxMzVkZGIwYjI3YjhiMTNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0
ZXJuLmgKQEAgLTYxLDcgKzYxLDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgYnVpbGRUaWxlSW1h
Z2VUcmFuc2Zvcm0oUmVuZGVyRWxlbWVudCYsIGNvbnN0IFBhdHRlcm5BdHRyaWJ1dGVzJiwgY29u
c3QgU1ZHUGF0dGVybkVsZW1lbnQmLCBGbG9hdFJlY3QmIHBhdHRlcm5Cb3VuZGFyaWVzLCBBZmZp
bmVUcmFuc2Zvcm0mIHRpbGVJbWFnZVRyYW5zZm9ybSkgY29uc3Q7CiAKLSAgICBSZWZQdHI8SW1h
Z2VCdWZmZXI+IGNyZWF0ZVRpbGVJbWFnZShjb25zdCBQYXR0ZXJuQXR0cmlidXRlcyYsIGNvbnN0
IEZsb2F0UmVjdCYgdGlsZUJvdW5kYXJpZXMsIGNvbnN0IEZsb2F0UmVjdCYgYWJzb2x1dGVUaWxl
Qm91bmRhcmllcywgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0aWxlSW1hZ2VUcmFuc2Zvcm0sIEZs
b2F0UmVjdCYgY2xhbXBlZEFic29sdXRlVGlsZUJvdW5kYXJpZXMsIFJlbmRlcmluZ01vZGUpIGNv
bnN0OworICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlVGlsZUltYWdlKEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0U2l6ZSYgc2NhbGUsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYsIGNvbnN0IFBhdHRlcm5BdHRyaWJ1dGVzJikgY29uc3Q7CiAKICAgICBQ
YXR0ZXJuRGF0YSogYnVpbGRQYXR0ZXJuKFJlbmRlckVsZW1lbnQmLCBPcHRpb25TZXQ8UmVuZGVy
U1ZHUmVzb3VyY2VNb2RlPiwgR3JhcGhpY3NDb250ZXh0Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IGYwOGU4
NzJkMjg2NmFlNTM0MjQ4NmUzYzlmOTk4ZWRjOTQ0OTg0YjkuLjk3M2NmZDM3NTFmZTNlNGZmZThi
MjA4ZTNhMTljYTk4ZjIzMzU0ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMjI3LDUyICsyMjcsNiBAQCBBZmZp
bmVUcmFuc2Zvcm0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2FsY3VsYXRlVHJhbnNmb3JtYXRpb25U
b091dGVybW9zdENvb3JkaW5hdAogICAgIHJldHVybiBhYnNvbHV0ZVRyYW5zZm9ybTsKIH0KIAot
UmVmUHRyPEltYWdlQnVmZmVyPiBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZl
cihjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgYWJz
b2x1dGVUcmFuc2Zvcm0sIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwg
UmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93
KQotewotICAgIEludFJlY3QgcGFpbnRSZWN0ID0gY2FsY3VsYXRlSW1hZ2VCdWZmZXJSZWN0KHRh
cmdldFJlY3QsIGFic29sdXRlVHJhbnNmb3JtKTsKLSAgICAvLyBEb24ndCBjcmVhdGUgZW1wdHkg
SW1hZ2VCdWZmZXJzLgotICAgIGlmIChwYWludFJlY3QuaXNFbXB0eSgpKQotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLQotICAgIEZsb2F0U2l6ZSBzY2FsZSgxLCAxKTsKLSAgICBGbG9hdFNpemUg
Y2xhbXBlZFNpemUgPSBwYWludFJlY3Quc2l6ZSgpOwotICAgIGlmIChJbWFnZUJ1ZmZlcjo6c2l6
ZU5lZWRzQ2xhbXBpbmcoY2xhbXBlZFNpemUsIHNjYWxlKSkKLSAgICAgICAgY2xhbXBlZFNpemUg
PSBjbGFtcGVkU2l6ZSAqIHNjYWxlOwotCi0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVm
ZmVyOjpjcmVhdGUoY2xhbXBlZFNpemUsIHJlbmRlcmluZ01vZGUsIFNob3VsZFVzZURpc3BsYXlM
aXN0OjpObywgUmVuZGVyaW5nUHVycG9zZTo6RE9NLCAxLCBjb2xvclNwYWNlLCBQaXhlbEZvcm1h
dDo6QkdSQTgsIGhvc3RXaW5kb3cpOwotICAgIGlmICghaW1hZ2VCdWZmZXIpCi0gICAgICAgIHJl
dHVybiBudWxscHRyOwotCi0gICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybTsKLSAgICB0cmFu
c2Zvcm0uc2NhbGUoc2NhbGUpLnRyYW5zbGF0ZSgtcGFpbnRSZWN0LmxvY2F0aW9uKCkpLm11bHRp
cGx5KGFic29sdXRlVHJhbnNmb3JtKTsKLQotICAgIEdyYXBoaWNzQ29udGV4dCYgaW1hZ2VDb250
ZXh0ID0gaW1hZ2VCdWZmZXItPmNvbnRleHQoKTsKLSAgICBpbWFnZUNvbnRleHQuY29uY2F0Q1RN
KHRyYW5zZm9ybSk7Ci0KLSAgICByZXR1cm4gaW1hZ2VCdWZmZXI7Ci19Ci0KLVJlZlB0cjxJbWFn
ZUJ1ZmZlcj4gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxv
YXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGNsYW1wZWRSZWN0LCBjb25zdCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5n
TW9kZSwgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKLXsKLSAgICBJbnRTaXplIGNsYW1w
ZWRTaXplID0gcm91bmRlZEludFNpemUoY2xhbXBlZFJlY3Quc2l6ZSgpKTsKLSAgICBGbG9hdFNp
emUgdW5jbGFtcGVkU2l6ZSA9IHJvdW5kZWRJbnRTaXplKHRhcmdldFJlY3Quc2l6ZSgpKTsKLQot
ICAgIC8vIERvbid0IGNyZWF0ZSBlbXB0eSBJbWFnZUJ1ZmZlcnMuCi0gICAgaWYgKGNsYW1wZWRT
aXplLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBhdXRvIGltYWdl
QnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjbGFtcGVkU2l6ZSwgcmVuZGVyaW5nTW9kZSwg
U2hvdWxkVXNlRGlzcGxheUxpc3Q6Ok5vLCBSZW5kZXJpbmdQdXJwb3NlOjpET00sIDEsIGNvbG9y
U3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCwgaG9zdFdpbmRvdyk7Ci0gICAgaWYgKCFpbWFnZUJ1
ZmZlcikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBHcmFwaGljc0NvbnRleHQmIGlt
YWdlQ29udGV4dCA9IGltYWdlQnVmZmVyLT5jb250ZXh0KCk7Ci0KLSAgICAvLyBDb21wZW5zYXRl
IHJvdW5kaW5nIGVmZmVjdHMsIGFzIHRoZSBhYnNvbHV0ZSB0YXJnZXQgcmVjdCBpcyB1c2luZyBm
bG9hdGluZy1wb2ludCBudW1iZXJzIGFuZCB0aGUgaW1hZ2UgYnVmZmVyIHNpemUgaXMgaW50ZWdl
ci4KLSAgICBpbWFnZUNvbnRleHQuc2NhbGUodW5jbGFtcGVkU2l6ZSAvIHRhcmdldFJlY3Quc2l6
ZSgpKTsKLQotICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsKLX0KLQogdm9pZCBTVkdSZW5kZXJpbmdD
b250ZXh0OjpyZW5kZXJTdWJ0cmVlVG9Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
UmVuZGVyRWxlbWVudCYgaXRlbSwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBzdWJ0cmVlQ29udGVu
dFRyYW5zZm9ybWF0aW9uKQogewogICAgIC8vIFJlbmRlcmluZyBpbnRvIGEgYnVmZmVyIGltcGxp
ZXMgd2UncmUgYmVpbmcgdXNlZCBmb3IgbWFza2luZywgY2xpcHBpbmcsIHBhdHRlcm5zIG9yIGZp
bHRlcnMuIEluIGVhY2ggb2YgdGhlc2UKQEAgLTMwOCwxNCArMjYyLDYgQEAgdm9pZCBTVkdSZW5k
ZXJpbmdDb250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEFmZmkKICAgICAgICAgaW1hZ2VCdWZmZXIgPSBudWxscHRyOwogfQogCi12b2lkIFNW
R1JlbmRlcmluZ0NvbnRleHQ6OmNsZWFyMkRSb3RhdGlvbihBZmZpbmVUcmFuc2Zvcm0mIHRyYW5z
Zm9ybSkKLXsKLSAgICBBZmZpbmVUcmFuc2Zvcm06OkRlY29tcG9zZWRUeXBlIGRlY29tcG9zaXRp
b247Ci0gICAgdHJhbnNmb3JtLmRlY29tcG9zZShkZWNvbXBvc2l0aW9uKTsKLSAgICBkZWNvbXBv
c2l0aW9uLmFuZ2xlID0gMDsKLSAgICB0cmFuc2Zvcm0ucmVjb21wb3NlKGRlY29tcG9zaXRpb24p
OwotfQotCiBib29sIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmJ1ZmZlckZvcmVncm91bmQoUmVmUHRy
PEltYWdlQnVmZmVyPiYgaW1hZ2VCdWZmZXIpCiB7CiAgICAgQVNTRVJUKG1fcGFpbnRJbmZvKTsK
QEAgLTMzMyw3ICsyNzksNyBAQCBib29sIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmJ1ZmZlckZvcmVn
cm91bmQoUmVmUHRyPEltYWdlQnVmZmVyPiYgaW1hZ2VCdWZmZXIpCiAKICAgICAvLyBDcmVhdGUg
YSBuZXcgYnVmZmVyIGFuZCBwYWludCB0aGUgZm9yZWdyb3VuZCBpbnRvIGl0LgogICAgIGlmICgh
aW1hZ2VCdWZmZXIpIHsKLSAgICAgICAgaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
Q29tcGF0aWJsZUJ1ZmZlcihleHBhbmRlZEludFNpemUoYm91bmRpbmdCb3guc2l6ZSgpKSwgRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIG1fcGFpbnRJbmZvLT5jb250ZXh0KCkpOworICAg
ICAgICBpbWFnZUJ1ZmZlciA9IG1fcGFpbnRJbmZvLT5jb250ZXh0KCkuY3JlYXRlQ29tcGF0aWJs
ZUltYWdlQnVmZmVyKGV4cGFuZGVkSW50U2l6ZShib3VuZGluZ0JveC5zaXplKCkpKTsKICAgICAg
ICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRl
eHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5o
CmluZGV4IDA0NDc5OTNiOTg3ZTJmNTI0NzMzNDEwNTQ2ZjBhMGU1ZjQzNmQ0MmIuLmMxNmIzNGFi
NTg1OGRhMzMxMGJmYWU3ZDM2YzY1YmJkNjE5OWM0ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5oCkBAIC02MCwxNSArNjAsMTEg
QEAgcHVibGljOgogICAgIHZvaWQgcHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVudChSZW5kZXJFbGVt
ZW50JiwgUGFpbnRJbmZvJiwgTmVlZHNHcmFwaGljc0NvbnRleHRTYXZlID0gRG9udFNhdmVHcmFw
aGljc0NvbnRleHQpOwogICAgIGJvb2wgaXNSZW5kZXJpbmdQcmVwYXJlZCgpIGNvbnN0IHsgcmV0
dXJuIG1fcmVuZGVyaW5nRmxhZ3MgJiBSZW5kZXJpbmdQcmVwYXJlZDsgfQogCi0gICAgc3RhdGlj
IFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiB0
YXJnZXRSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtLCBjb25z
dCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBIb3N0V2luZG93
KiA9IG51bGxwdHIpOwotICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdl
QnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBjbGFt
cGVkUmVjdCwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgUmVuZGVyaW5nTW9kZSwgY29u
c3QgSG9zdFdpbmRvdyogPSBudWxscHRyKTsKLQogICAgIHN0YXRpYyB2b2lkIHJlbmRlclN1YnRy
ZWVUb0NvbnRleHQoR3JhcGhpY3NDb250ZXh0JiwgUmVuZGVyRWxlbWVudCYsIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYpOwogICAgIHN0YXRpYyB2b2lkIGNsaXBUb0ltYWdlQnVmZmVyKEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zvcm0sIGNvbnN0
IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgUmVmUHRyPEltYWdlQnVmZmVyPiYsIGJvb2wgc2FmZVRv
Q2xlYXIpOwogCiAgICAgc3RhdGljIGZsb2F0IGNhbGN1bGF0ZVNjcmVlbkZvbnRTaXplU2NhbGlu
Z0ZhY3Rvcihjb25zdCBSZW5kZXJPYmplY3QmKTsKICAgICBzdGF0aWMgQWZmaW5lVHJhbnNmb3Jt
IGNhbGN1bGF0ZVRyYW5zZm9ybWF0aW9uVG9PdXRlcm1vc3RDb29yZGluYXRlU3lzdGVtKGNvbnN0
IFJlbmRlck9iamVjdCYpOwotICAgIHN0YXRpYyB2b2lkIGNsZWFyMkRSb3RhdGlvbihBZmZpbmVU
cmFuc2Zvcm0mKTsKIAogICAgIHN0YXRpYyBJbnRSZWN0IGNhbGN1bGF0ZUltYWdlQnVmZmVyUmVj
dChjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgYWJz
b2x1dGVUcmFuc2Zvcm0pCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVu
dC5jcHAKaW5kZXggODdkMmVhNjY4ZjgwNTAyNTYzMjI5ZTUwYzRmNjE0ZDY3MzljMDRhMC4uNGE5
YzNjNDVhOTIzZWJkMmFiZGY1YTFmZDJkN2ZlNTA2MDc5NGQ0MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCkBAIC0xNzcsNiArMTc3LDM4IEBAIHZvaWQgU1ZHRkVJ
bWFnZUVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzCiAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJl
bnRSZXNvdXJjZUludmFsaWRhdGlvbigqcGFyZW50UmVuZGVyZXIpOwogfQogCitzdGF0aWMgaW5s
aW5lIEludFJlY3Qgc2NhbGVkSW1hZ2VCdWZmZXJSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwg
Y29uc3QgRmxvYXRTaXplJiBzY2FsZSkKK3sKKyAgICBhdXRvIHNjYWxlZFJlY3QgPSByZWN0Owor
ICAgIHNjYWxlZFJlY3Quc2NhbGUoc2NhbGUpOworICAgIHJldHVybiBlbmNsb3NpbmdJbnRSZWN0
KHNjYWxlZFJlY3QpOworfQorCitzdGF0aWMgaW5saW5lIEZsb2F0U2l6ZSBjbGFtcGluZ1NjYWxl
Rm9ySW1hZ2VCdWZmZXJTaXplKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKK3sKKyAgICBGbG9hdFNp
emUgY2xhbXBpbmdTY2FsZSgxLCAxKTsKKyAgICBJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBp
bmcoc2l6ZSwgY2xhbXBpbmdTY2FsZSk7CisgICAgcmV0dXJuIGNsYW1waW5nU2NhbGU7Cit9CisK
K3N0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRTaXplJiBzY2FsZSwgSG9zdFdpbmRvdyogaG9zdFdpbmRv
dykKK3sKKyAgICBhdXRvIHNjYWxlZFJlY3QgPSBzY2FsZWRJbWFnZUJ1ZmZlclJlY3QocmVjdCwg
c2NhbGUpOworICAgIGlmIChzY2FsZWRSZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICBhdXRvIGNsYW1waW5nU2NhbGUgPSBjbGFtcGluZ1NjYWxlRm9ySW1hZ2VC
dWZmZXJTaXplKHNjYWxlZFJlY3Quc2l6ZSgpKTsKKworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKHNjYWxlZFJlY3Quc2l6ZSgpICogY2xhbXBpbmdTY2FsZSwgUmVu
ZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgU2hvdWxkVXNlRGlzcGxheUxpc3Q6Ok5vLCBSZW5k
ZXJpbmdQdXJwb3NlOjpET00sIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhl
bEZvcm1hdDo6QkdSQTgsIGhvc3RXaW5kb3cpOworICAgIGlmICghaW1hZ2VCdWZmZXIpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgaW1hZ2VCdWZmZXItPmNvbnRleHQoKS5zY2FsZShj
bGFtcGluZ1NjYWxlKTsKKyAgICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnRyYW5zbGF0ZSgtc2Nh
bGVkUmVjdC5sb2NhdGlvbigpKTsKKyAgICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnNjYWxlKHNj
YWxlKTsKKyAgICByZXR1cm4gaW1hZ2VCdWZmZXI7Cit9CisKIHN0ZDo6dHVwbGU8UmVmUHRyPElt
YWdlQnVmZmVyPiwgRmxvYXRSZWN0PiBTVkdGRUltYWdlRWxlbWVudDo6aW1hZ2VCdWZmZXJGb3JF
ZmZlY3QoKSBjb25zdAogewogICAgIGF1dG8gdGFyZ2V0ID0gU1ZHVVJJUmVmZXJlbmNlOjp0YXJn
ZXRFbGVtZW50RnJvbUlSSVN0cmluZyhocmVmKCksIHRyZWVTY29wZSgpKTsKQEAgLTE5NSwxMSAr
MjI3LDEyIEBAIHN0ZDo6dHVwbGU8UmVmUHRyPEltYWdlQnVmZmVyPiwgRmxvYXRSZWN0PiBTVkdG
RUltYWdlRWxlbWVudDo6aW1hZ2VCdWZmZXJGb3JFZmZlCiAgICAgaWYgKCFhYnNvbHV0ZVRyYW5z
Zm9ybS5pc0ludmVydGlibGUoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGF1dG8gc2hl
YXJGcmVlQWJzb2x1dGVUcmFuc2Zvcm0gPSBBZmZpbmVUcmFuc2Zvcm0oYWJzb2x1dGVUcmFuc2Zv
cm0ueFNjYWxlKCksIDAsIDAsIGFic29sdXRlVHJhbnNmb3JtLnlTY2FsZSgpLCAwLCAwKTsKLQor
ICAgIC8vIElnbm9yZSAyRCByb3RhdGlvbiwgYXMgaXQgZG9lc24ndCBhZmZlY3QgdGhlIGltYWdl
IHNpemUuCisgICAgRmxvYXRTaXplIHNjYWxlKGFic29sdXRlVHJhbnNmb3JtLnhTY2FsZSgpLCBh
YnNvbHV0ZVRyYW5zZm9ybS55U2NhbGUoKSk7CiAgICAgYXV0byBpbWFnZVJlY3QgPSByZW5kZXJl
ci0+cmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKTsKIAotICAgIGF1dG8gaW1hZ2VCdWZm
ZXIgPSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihpbWFnZVJlY3QsIHNo
ZWFyRnJlZUFic29sdXRlVHJhbnNmb3JtLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwg
UmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgcmVuZGVyZXItPmhvc3RXaW5kb3coKSk7Cisg
ICAgLy8gRklYTUU6IFJlcGxhY2UgdGhpcyBjYWxsIHdpdGggR3JhcGhpY3NDb250ZXh0OjpjcmVh
dGVJbWFnZUJ1ZmZlcigpIG9uY2UgdGhlIGRlc3RpbmF0aW9uIEdyYXBoaWNzQ29udGV4dCBpcyBw
YXNzZWQgdG8gdGhpcyBmdW5jdGlvbi4KKyAgICBhdXRvIGltYWdlQnVmZmVyID0gY3JlYXRlSW1h
Z2VCdWZmZXIoaW1hZ2VSZWN0LCBzY2FsZSwgcmVuZGVyZXItPmhvc3RXaW5kb3coKSk7CiAgICAg
aWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHsgfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKaW5kZXggZjQxNDAxMjMzODkxOTAzODdhZDI3Njk2YTUw
NTQ0NTRkZjg5MDI4YS4uNmJmZjg5NzZjNzhiY2JmMWY0YzMzMDM3YWJmN2JjNTI1YmRmNDRkYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCkBAIC0yNTAsNyArMjUw
LDcgQEAgdm9pZCBTVkdJbWFnZTo6ZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFNpemUKICAgICBGbG9hdFJlY3QgaW1hZ2VCdWZmZXJT
aXplID0gem9vbWVkQ29udGFpbmVyUmVjdDsKICAgICBpbWFnZUJ1ZmZlclNpemUuc2NhbGUoaW1h
Z2VCdWZmZXJTY2FsZS53aWR0aCgpLCBpbWFnZUJ1ZmZlclNjYWxlLmhlaWdodCgpKTsKIAotICAg
IGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoZXhwYW5k
ZWRJbnRTaXplKGltYWdlQnVmZmVyU2l6ZS5zaXplKCkpLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IoKSwgY29udGV4dCk7CisgICAgYXV0byBidWZmZXIgPSBjb250ZXh0LmNyZWF0ZUlt
YWdlQnVmZmVyKGV4cGFuZGVkSW50U2l6ZShpbWFnZUJ1ZmZlclNpemUuc2l6ZSgpKSk7CiAgICAg
aWYgKCFidWZmZXIpIC8vIEZhaWxlZCB0byBhbGxvY2F0ZSBidWZmZXIuCiAgICAgICAgIHJldHVy
bjsKICAgICBkcmF3Rm9yQ29udGFpbmVyKGJ1ZmZlci0+Y29udGV4dCgpLCBjb250YWluZXJTaXpl
LCBjb250YWluZXJab29tLCBpbml0aWFsRnJhZ21lbnRVUkwsIGltYWdlQnVmZmVyU2l6ZSwgem9v
bWVkQ29udGFpbmVyUmVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXggNGEy
OGJkNDZmYTE3NzA1M2U1N2MzMTI1ZjFlZWFkMTBmY2VkNjVlNy4uNjMzYjM1ZjU3NTdjZjE4MDcx
NDFlZmIwMjQ1OWIzYzM4YTNmODM5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNwcApA
QCAtMjAyLDcgKzIwMiw3IEBAIHZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6Y2xpcFBh
dGgoY29uc3QgUGF0aCYgcGF0aCwgV2luZFJ1bGUgcnVsZSkKIAogdm9pZCBSZW1vdGVEaXNwbGF5
TGlzdFJlY29yZGVyOjpiZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3Qm
IGRlc3RpbmF0aW9uLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UpCiB7
Ci0gICAgbV9tYXNrSW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1
ZmZlcihkZXN0aW5hdGlvbi5zaXplKCksIGNvbG9yU3BhY2UsIGRyYXdpbmdDb250ZXh0KCkpOwor
ICAgIG1fbWFza0ltYWdlQnVmZmVyID0gZHJhd2luZ0NvbnRleHQoKS5jcmVhdGVDb21wYXRpYmxl
SW1hZ2VCdWZmZXIoZGVzdGluYXRpb24uc2l6ZSgpLCBjb2xvclNwYWNlKTsKIH0KIAogdm9pZCBS
ZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjplbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3Qg
RmxvYXRSZWN0JiBkZXN0aW5hdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNv
cmRlclByb3h5LmNwcAppbmRleCA5ZDM0M2ZhOWFjNDk0YmFjNWVhNGNhZGQwMTE5YjAwY2UyYzg2
NzZjLi5jNmVhNjJkYzI3N2UzODIyYzM4MTBlNTA4YzhlMmFkZGJjYjViMDZhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0
UmVjb3JkZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuY3BwCkBAIC00NjQsNiArNDY0LDE2
IEBAIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+IFJlbW90ZURpc3BsYXlMaXN0UmVj
b3JkZXJQcm94eTo6Y3JlYXRlTmVzdGVkQ29uCiAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UmVtb3Rl
RGlzcGxheUxpc3RSZWNvcmRlclByb3h5PigqdGhpcywgaW5pdGlhbENsaXAsIGluaXRpYWxDVE0p
OwogfQogCitSZWZQdHI8SW1hZ2VCdWZmZXI+IFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94
eTo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBjb25zdCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nTW9kZT4g
cmVuZGVyaW5nTW9kZSkgY29uc3QKK3sKKyAgICBpZiAoVU5MSUtFTFkoIW1fcmVuZGVyaW5nQmFj
a2VuZCkpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIH0KKworICAgIHJldHVybiBtX3JlbmRlcmluZ0JhY2tlbmQtPmNyZWF0ZUlt
YWdlQnVmZmVyKHNpemUsIHJlbmRlcmluZ01vZGUudmFsdWVfb3IodGhpcy0+cmVuZGVyaW5nTW9k
ZSgpKSwgMSwgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlz
dFJlY29yZGVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmgKaW5kZXggMzAwOThiZWE2MWMxYjY0NGU0
MjBhY2EzMzM5ZjkwNDQ5MWU0YjdmZi4uODUwYmY2MzlmNjU3MDNjMTg5MmNjMTk3YmFmZTdkMWFh
NmQ0NWJhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5oCkBA
IC0xNDQsNiArMTQ0LDggQEAgcHJpdmF0ZToKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ+IGNyZWF0ZU5lc3RlZENvbnRleHQoY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0JiBpbml0aWFsQ2xpcCwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiBpbml0
aWFsQ1RNKSBmaW5hbDsKIAorICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gY3JlYXRl
SW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgY29uc3QgV2ViQ29yZTo6RGVz
dGluYXRpb25Db2xvclNwYWNlJiA9IFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
QigpLCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlJlbmRlcmluZ01vZGU+ID0gc3RkOjpudWxsb3B0
KSBjb25zdCBmaW5hbDsKKwogICAgIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciBtX2Rlc3RpbmF0aW9uQnVmZmVySWRlbnRpZmllcjsKICAgICBXZWFrUHRyPFdlYkNvcmU6Oklt
YWdlQnVmZmVyPiBtX2ltYWdlQnVmZmVyOwogICAgIFdlYWtQdHI8UmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5PiBtX3JlbmRlcmluZ0JhY2tlbmQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450975</attachid>
            <date>2022-02-04 22:06:24 -0800</date>
            <delta_ts>2022-02-06 23:40:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235758-20220204220624.patch</filename>
            <type>text/plain</type>
            <size>81548</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4OTkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTU5YjJjYWIxYzRmZDc0
MGMyMmYyYWY2YTczY2E1YjdiOWMyOTBlYS4uMWMxYTI4MWUyOWNhNjY5OGI5N2FjYWE5M2Q5NDg2
NmUyOTkzNThhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzNSBAQAorMjAyMi0wMi0wNCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IE1vdmUgSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcigpIGFuZCBTVkdS
ZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlciB0byBHcmFwaGljc0NvbnRleHQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTc1OAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBnb2FsIG9m
IHRoaXMgcGF0Y2ggaXMgdG8gcmVjb3JkIHRoZSBkcmF3aW5nIGlmIHRoZSBjb25jcmV0ZSB0eXBl
IG9mIAorICAgICAgICB0aGUgR3JhcGhpY3NDb250ZXh0IGlzIFJlbW90ZURpc3BsYXlMaXN0UmVj
b3JkZXJQcm94eS4gQ3VycmVudGx5IGFsbCB0aGUKKyAgICAgICAgaW50ZXJtZWRpYXRlIGNvbXBh
dGlibGUgSW1hZ2VCdWZmZXJzIGFyZSBvZiB0eXBlIENvbmNyZXRlSW1hZ2VCdWZmZXIuCisgICAg
ICAgIFRoZSBkcmF3aW5nIHRvIHRoZXNlIEltYWdlQnVmZmVycyBzdGlsbCBoYXBwZW5zIGluIHRo
ZSBXZWJQcm9jZXNzLiBNb3Jlb3ZlcgorICAgICAgICB3aGVuIHdlIGNhbGwgZHJhd0ltYWdlQnVm
ZmVyKCkgZm9yIG9uZSBvZiB0aGVzZSBpbnRlcm1lZGlhdGUgSW1hZ2VCdWZmZXJzCisgICAgICAg
IHRvIGEgcmVtb3RlIEltYWdlQnVmZmVyLCB3ZSBzaW5rIHRoZSBpbnRlcm1lZGlhdGUgSW1hZ2VC
dWZmZXIgdG8gYSBOYXRpdmVJbWFnZQorICAgICAgICBhbmQgc2VuZCBpdCB0byBHUFVQcm9jZXNz
LgorCisgICAgICAgIFRvIGZpeCB0aGlzLCBHcmFwaGljc0NvbnRleHQgd2lsbCBwcm92aWRlIHRo
cmVlIGZ1bmN0aW9ucyBmb3IgY3JlYXRpbmcKKyAgICAgICAgdGhlIEltYWdlQnVmZmVyOgorCisg
ICAgICAgIDEuIEdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoKSAodmlydHVhbCk6
IENyZWF0ZXMgYW4gSW1hZ2VCdWZmZXIKKyAgICAgICAgICAgc2ltaWxhciB0byB0aGUgdW5kZXJs
eWluZyBJbWFnZUJ1ZmZlciBvZiB0aGUgR3JhcGhpY3NDb250ZXh0LiBCZWNhdXNlCisgICAgICAg
ICAgIFJlY29yZGVySW1wbCBhbmQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5IGFyZSBz
dXBlciBjbGFzc2VzIG9mCisgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dCwgdGhleSB3aWxsIG92
ZXJyaWRlIHRoaXMgbWV0aG9kIGFuZCByZXR1cm4gdGhlIGRlc2lyZWQKKyAgICAgICAgICAgdHlw
ZSBvZiBJbWFnZUJ1ZmZlci4KKworICAgICAgICAyLiBHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZUlt
YWdlQnVmZmVyKCkgKG5vbi12aXJ0dWFsKTogQ3JlYXRlcyBhIHNjYWxlZAorICAgICAgICAgICBJ
bWFnZUJ1ZmZlciBhbmQgc2V0cyB0aGUgY29udGV4dCBhY2NvcmRpbmdseS4gSXQgYWxsb3dzIGFs
c28gZm9yY2luZworICAgICAgICAgICBjcmVhdGluZyBhbiBpbi1wcm9jZXNzIENvbmNyZXRlSW1h
Z2VCdWZmZXIuIFRoaXMgaXMgY29udHJvbGxlZCBieSBhbgorICAgICAgICAgICBleHRyYSBwYXJh
bWV0ZXIgb2YgdGhlIGVudW0gdHlwZSBDcmVhdGVNZXRob2QuCisKKyAgICAgICAgMy4gR3JhcGhp
Y3NDb250ZXh0OjpjcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIoKSAodmlydHVhbCk6IFRha2Vz
IHRoZQorICAgICAgICAgICBzY2FsZUZhY3RvcigpIGludG8gY29uc2lkZXJhdGlvbiB3aGVuIGNy
ZWF0aW5nIHRoZSBJbWFnZUJ1ZmZlci4gQnkgCisgICAgICAgICAgIGRlZmF1bHQgdGhlIHR5cGUg
b2YgdGhlIEltYWdlQnVmZmVyIGlzIHRoZSBDb25jcmV0ZUltYWdlQnVmZmVyLgorICAgICAgICAg
ICBCZWNhdXNlIFJlY29yZCBpbmhlcml0cyBHcmFwaGljc0NvbnRleHQgYW5kIGJlY2F1c2UgaXQg
aXMgdGhlIGJhc2UKKyAgICAgICAgICAgY2xhc3Mgb2YgUmVjb3JkZXJJbXBsIGFuZCBSZW1vdGVE
aXNwbGF5TGlzdFJlY29yZGVyUHJveHksIGl0IHdpbGwgCisgICAgICAgICAgIG92ZXJyaWRlIHRo
aXMgZnVuY3Rpb24gdG8gcmV0dXJuIHRoZSBkZWZhdWx0IEltYWdlQnVmZmVyLgorCisgICAgICAg
IFR3byB2ZXJzaW9ucyBvZiB0aGVzZSBmdW5jdGlvbnMgYXJlIHByb3ZpZGVkOiBvbmUgdGFrZXMg
YSBGbG9hdFNpemUgYW5kCisgICAgICAgIHRoZSBvdGhlciB0YWtlcyBhIEZsb2F0UmVjY3QuIFRo
ZSBGbG9hdFJlY3QgdmVyc2lvbiBleHBhbmRzIHRoZSBmb3VyIGNvcm5lcnMgCisgICAgICAgIG9m
IHRoZSByZWN0YW5nbGUgdG8gZnVsbCBwaXhlbHMuCisKKyAgICAgICAgKiBodG1sL0N1c3RvbVBh
aW50Q2FudmFzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbVBhaW50Q2FudmFzOjpyZXBs
YXlEaXNwbGF5TGlzdCBjb25zdCk6CisgICAgICAgICogaHRtbC9DdXN0b21QYWludEltYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbVBhaW50SW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAg
ICAgICAgKiBodG1sL09mZnNjcmVlbkNhbnZhcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPZmZz
Y3JlZW5DYW52YXM6OnRyYW5zZmVyVG9JbWFnZUJpdG1hcCk6CisgICAgICAgIChXZWJDb3JlOjpP
ZmZzY3JlZW5DYW52YXM6OmNvbW1pdFRvUGxhY2Vob2xkZXJDYW52YXMpOgorICAgICAgICAqIGh0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZHJhd0ltYWdlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9jb2NvYS9UaGVtZUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd0Fw
cGxlUGF5QnV0dG9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3UGF0dGVybik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHcmFkaWVudEltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNjYWxlZEltYWdl
QnVmZmVyU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpzY2FsZWRJbWFnZUJ1ZmZlclJlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Y2xhbXBpbmdTY2FsZUZvckltYWdlQnVmZmVyU2l6ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNvbXBhdGlibGVJbWFnZUJ1ZmZlclNpemUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjcmVhdGVJbWFnZUJ1
ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZUNv
bXBhdGlibGVJbWFnZUJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OmNsaXBUb0RyYXdpbmdDb21tYW5kcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OmNyZWF0ZUltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y2xvbmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNvbXBhdGlibGVCdWZmZXJTaXplKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpjb21wYXRpYmxlQnVmZmVy
SW5mbyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y29weVJlY3RU
b0J1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1h
Z2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3
UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjp1cGRhdGVDYWNoZWRJ
bWFnZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OmRyYXcp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0RyYXdHbHlwaHNSZWNvcmRl
ckNvcmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdHbHlwaHNSZWNvcmRlcjo6ZHJh
d09UU1ZHUnVuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVj
b3JkZXI6OmNyZWF0ZUltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpSZWNvcmRlcjo6Y3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyIGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRl
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3Jk
ZXJJbXBsOjpjcmVhdGVJbWFnZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheWVyOjphcHBseUl0ZW0pOgorICAg
ICAgICAqIHBsYXRmb3JtL21hYy9UaGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlRoZW1l
TWFjOjpkcmF3Q2VsbE9yRm9jdXNSaW5nV2l0aFZpZXdJbnRvQ29udGV4dCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6
OnNldHVwRmlsdGVycyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpwYXR0ZXJuRm9yRGVzY3JpcHRpb24pOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGF5ZXJGaWx0ZXJzOjphbGxvY2F0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyRmlsdGVyczo6YmVnaW5GaWx0ZXJFZmZlY3QpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyVGhlbWVDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lQ29jb2E6
OnBhaW50QXBwbGVQYXlCdXR0b24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZU1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWludExpc3RCdXR0b25G
b3JJbnB1dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRQcm9ncmVz
c0Jhcik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjphcHBseUNs
aXBwaW5nVG9Db250ZXh0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVy
OjphcHBseVJlc291cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlR3JhZGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlTWFza0FuZFN3YXBDb250
ZXh0Rm9yVGV4dEdyYWRpZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlTWFza2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlTWFz
a2VyOjphcHBseVJlc291cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlUGF0dGVybi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZVBh
dHRlcm46OmJ1aWxkUGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJj
ZVBhdHRlcm46OmNyZWF0ZVRpbGVJbWFnZSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NW
R1JlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyaW5nQ29u
dGV4dDo6YnVmZmVyRm9yZWdyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdD
b250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpT
VkdSZW5kZXJpbmdDb250ZXh0OjpjbGVhcjJEUm90YXRpb24pOiBEZWxldGVkLgorICAgICAgICAq
IHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAqIHN2Zy9TVkdG
RUltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzY2FsZWRJbWFnZUJ1ZmZlclJl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6Y2xhbXBpbmdTY2FsZUZvckltYWdlQnVmZmVyU2l6ZSk6
CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdGRUltYWdlRWxlbWVudDo6aW1hZ2VCdWZmZXJGb3JFZmZlY3QgY29uc3QpOgorICAgICAg
ICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFn
ZTo6ZHJhd1BhdHRlcm5Gb3JDb250YWluZXIpOgorCiAyMDIyLTAyLTAyICBTYWlkIEFib3UtSGFs
bGF3YSAgPHNhaWRAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc10gUmVtb3ZlIERp
c3BsYXlMaXN0OjpSZXBsYXllcjo6RGVsZWdhdGUgYW5kIERpc3BsYXlMaXN0OjpSZWNvcmRlcklt
cGw6OkRlbGVnYXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNkYTY0NDBlOWYwZWU0ZDMwNmViNzc2ZjYwZjE1NWUx
YzY2ZDY5NjEuLmI1YmIzZTQ2M2EwMzc3MzYwZjk4OTZiNGQyNTQ1MjE1Zjc3Y2IxNDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjItMDItMDQgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fp
ZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBNb3ZlIEltYWdlQnVmZmVyOjpj
cmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIoKSBhbmQgU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3Jl
YXRlSW1hZ2VCdWZmZXIgdG8gR3JhcGhpY3NDb250ZXh0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzU3NTgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlz
cGxheUxpc3RSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZURpc3BsYXlMaXN0
UmVjb3JkZXI6OmJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHk6OmNyZWF0ZUltYWdl
QnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVE
aXNwbGF5TGlzdFJlY29yZGVyUHJveHkuaDoKKwogMjAyMi0wMi0wMiAgU2FpZCBBYm91LUhhbGxh
d2EgIDxzYWlkQGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVIFByb2Nlc3NdIFJlbW92ZSBEaXNw
bGF5TGlzdDo6UmVwbGF5ZXI6OkRlbGVnYXRlIGFuZCBEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBs
OjpEZWxlZ2F0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWludENh
bnZhcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0N1c3RvbVBhaW50Q2FudmFzLmNwcAppbmRl
eCAyYzFhM2FhNmM2NTc5M2VjNmY1ZDg0YmRhNGVmNzNlYzY5Njk4ZWEzLi40MDQyOTExZDA3YmM3
NzgzOTAzMDEzMWQ3OGQ3M2E1NTdiNjNkMGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0N1c3RvbVBhaW50Q2FudmFzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0N1c3Rv
bVBhaW50Q2FudmFzLmNwcApAQCAtNzMsNyArNzMsNyBAQCB2b2lkIEN1c3RvbVBhaW50Q2FudmFz
OjpyZXBsYXlEaXNwbGF5TGlzdChHcmFwaGljc0NvbnRleHQqIGN0eCkgY29uc3QKICAgICAvLyBG
SVhNRTogVXNpbmcgYW4gaW50ZXJtZWRpYXRlIGJ1ZmZlciBpcyBub3QgbmVlZGVkIGlmIHRoZXJl
IGFyZSBubyBjb21wb3NpdGUgb3BlcmF0aW9ucy4KICAgICBhdXRvIGNsaXBCb3VuZHMgPSBjdHgt
PmNsaXBCb3VuZHMoKTsKIAotICAgIGF1dG8gaW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29t
cGF0aWJsZUJ1ZmZlcihjbGlwQm91bmRzLnNpemUoKSwgKmN0eCk7CisgICAgYXV0byBpbWFnZSA9
IGN0eC0+Y3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyKGNsaXBCb3VuZHMuc2l6ZSgpKTsKICAg
ICBpZiAoIWltYWdlKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvQ3VzdG9tUGFpbnRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0N1c3Rv
bVBhaW50SW1hZ2UuY3BwCmluZGV4IGY0NzE5OTQ2YzU4ZTA1OWJlMzNkYjcxZDNmN2I2ZjYwOTIw
YTVjYWMuLmZiOGFlNmJmZDcxZjNlZjYxYTM0MGUyNzAwMTQwMzhlMjc2Njk3MGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRJbWFnZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9DdXN0b21QYWludEltYWdlLmNwcApAQCAtMTk5LDcgKzE5OSw3IEBAIHZv
aWQgQ3VzdG9tUGFpbnRJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0CiAgICAgYWRqdXN0ZWRQYXR0ZXJuQ1RNLnNjYWxlKDEuMCAv
IHhTY2FsZSwgMS4wIC8geVNjYWxlKTsKICAgICBhZGp1c3RlZFNyY1JlY3Quc2NhbGUoeFNjYWxl
LCB5U2NhbGUpOwogCi0gICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0
aWJsZUJ1ZmZlcihhZGp1c3RlZFNpemUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBk
ZXN0Q29udGV4dCk7CisgICAgYXV0byBidWZmZXIgPSBkZXN0Q29udGV4dC5jcmVhdGVDb21wYXRp
YmxlSW1hZ2VCdWZmZXIoYWRqdXN0ZWRTaXplKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAg
cmV0dXJuOwogICAgIGRvQ3VzdG9tUGFpbnQoYnVmZmVyLT5jb250ZXh0KCksIGFkanVzdGVkU2l6
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAKaW5kZXggNGM5YzhjZmYx
OGI5YzdlYTEyZDE0MTMxMmM2NjA2NjZkY2YwYzg3OS4uODhkOWY3OGM5YTVjOWNiYjIyMDhjZGM3
ODk0MTFkZTgyNzY2YzMwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3Jl
ZW5DYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNw
cApAQCAtMjgzLDcgKzI4Myw3IEBAIEV4Y2VwdGlvbk9yPFJlZlB0cjxJbWFnZUJpdG1hcD4+IE9m
ZnNjcmVlbkNhbnZhczo6dHJhbnNmZXJUb0ltYWdlQml0bWFwKCkKICAgICAgICAgLy8gQXMgdGhl
IGNhbnZhcyBjb250ZXh0IHN0YXRlIGlzIHN0b3JlZCBpbiBHcmFwaGljc0NvbnRleHQsIHdoaWNo
IGlzIG93bmVkCiAgICAgICAgIC8vIGJ5IGJ1ZmZlcigpLCB0byBhdm9pZCByZXNldHRpbmcgdGhl
IGNvbnRleHQgc3RhdGUsIHdlIGhhdmUgdG8gbWFrZSBhIGNvcHkgYW5kCiAgICAgICAgIC8vIGNs
ZWFyIHRoZSBvcmlnaW5hbCBidWZmZXIgcmF0aGVyIHRoYW4gcmV0dXJuaW5nIHRoZSBvcmlnaW5h
bCBidWZmZXIuCi0gICAgICAgIGF1dG8gYnVmZmVyQ29weSA9IGJ1ZmZlcigpLT5jb3B5UmVjdFRv
QnVmZmVyKEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGJ1ZmZlcigpLT5sb2dpY2FsU2l6ZSgpKSwg
YnVmZmVyKCktPmNvbG9yU3BhY2UoKSwgKmRyYXdpbmdDb250ZXh0KCkpOworICAgICAgICBhdXRv
IGJ1ZmZlckNvcHkgPSBidWZmZXIoKS0+Y2xvbmUoKTsKICAgICAgICAgZG93bmNhc3Q8T2Zmc2Ny
ZWVuQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEPigqbV9jb250ZXh0KS5jbGVhckNhbnZhcygpOwog
ICAgICAgICBjbGVhckNvcGllZEltYWdlKCk7CiAKQEAgLTQ1MSwxNCArNDUxLDEzIEBAIHZvaWQg
T2Zmc2NyZWVuQ2FudmFzOjpjb21taXRUb1BsYWNlaG9sZGVyQ2FudmFzKCkKICAgICAgICAgbV9j
b250ZXh0LT5wYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcygpOwogCiAgICAgaWYgKG1fcGxh
Y2Vob2xkZXJEYXRhLT5idWZmZXJQaXBlU291cmNlKSB7Ci0gICAgICAgIGF1dG8gYnVmZmVyQ29w
eSA9IGltYWdlQnVmZmVyLT5jb3B5UmVjdFRvQnVmZmVyKEZsb2F0UmVjdChGbG9hdFBvaW50KCks
IGltYWdlQnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
KCksIGltYWdlQnVmZmVyLT5jb250ZXh0KCkpOwotICAgICAgICBpZiAoYnVmZmVyQ29weSkKKyAg
ICAgICAgaWYgKGF1dG8gYnVmZmVyQ29weSA9IGltYWdlQnVmZmVyLT5jbG9uZSgpKQogICAgICAg
ICAgICAgbV9wbGFjZWhvbGRlckRhdGEtPmJ1ZmZlclBpcGVTb3VyY2UtPmhhbmRsZShXVEZNb3Zl
KGJ1ZmZlckNvcHkpKTsKICAgICB9CiAKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9wbGFjZWhvbGRl
ckRhdGEtPmJ1ZmZlckxvY2sgfTsKICAgICBib29sIHNob3VsZFB1c2hCdWZmZXIgPSAhbV9wbGFj
ZWhvbGRlckRhdGEtPnBlbmRpbmdDb21taXRCdWZmZXI7Ci0gICAgbV9wbGFjZWhvbGRlckRhdGEt
PnBlbmRpbmdDb21taXRCdWZmZXIgPSBpbWFnZUJ1ZmZlci0+Y29weVJlY3RUb0J1ZmZlcihGbG9h
dFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSksIERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpKTsKKyAgICBtX3Bs
YWNlaG9sZGVyRGF0YS0+cGVuZGluZ0NvbW1pdEJ1ZmZlciA9IGltYWdlQnVmZmVyLT5jbG9uZSgp
OwogICAgIGlmIChtX3BsYWNlaG9sZGVyRGF0YS0+cGVuZGluZ0NvbW1pdEJ1ZmZlciAmJiBzaG91
bGRQdXNoQnVmZmVyKQogICAgICAgICBwdXNoQnVmZmVyVG9QbGFjZWhvbGRlcigpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkRCYXNlLmNwcAppbmRleCA1NTBlNjhiMjg3MTYzOGQyMDdhY2ViMjMyNzU0OTNkZWE2
YjQxMmM2Li4yMDVlZTYyMTk4MmFlMWE5OGRiYmE5YzYwYmE2ODA0NTY3Y2NmOGUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRC
YXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkRCYXNlLmNwcApAQCAtMTYxMSw3ICsxNjExLDggQEAgRXhjZXB0aW9uT3I8dm9pZD4g
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZHJhd0ltYWdlKENhbnZhc0Jhc2UmIHNvdXJj
ZUNhbnYKICAgICAgICAgcmVwYWludEVudGlyZUNhbnZhcyA9IHRydWU7CiAgICAgfSBlbHNlIGlm
IChzdGF0ZSgpLmdsb2JhbENvbXBvc2l0ZSA9PSBDb21wb3NpdGVPcGVyYXRvcjo6Q29weSkgewog
ICAgICAgICBpZiAoJnNvdXJjZUNhbnZhcyA9PSAmY2FudmFzQmFzZSgpKSB7Ci0gICAgICAgICAg
ICBpZiAoYXV0byBjb3B5ID0gYnVmZmVyLT5jb3B5UmVjdFRvQnVmZmVyKHNyY1JlY3QsIGNvbG9y
U3BhY2UoKSwgKmMpKSB7CisgICAgICAgICAgICBpZiAoYXV0byBjb3B5ID0gYy0+Y3JlYXRlQ29t
cGF0aWJsZUltYWdlQnVmZmVyKHNyY1JlY3Quc2l6ZSgpLCBjb2xvclNwYWNlKCkpKSB7CisgICAg
ICAgICAgICAgICAgY29weS0+Y29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcigqYnVmZmVyLCAtc3Jj
UmVjdC5sb2NhdGlvbigpKTsKICAgICAgICAgICAgICAgICBjbGVhckNhbnZhcygpOwogICAgICAg
ICAgICAgICAgIGMtPmRyYXdJbWFnZUJ1ZmZlcigqY29weSwgZHN0UmVjdCwgeyB7IH0sIHNyY1Jl
Y3Quc2l6ZSgpIH0sIHsgc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUsIHN0YXRlKCkuZ2xvYmFsQmxl
bmQgfSk7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9UaGVtZUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVGhl
bWVDb2NvYS5tbQppbmRleCBlY2Q1MGI3MGZkYmJmNmU5ODNmM2E3MTU2NTI3YjIxMDY4ODRmYmZl
Li5lMmI0OTA0ZDhmODYyOGQzOGI2MTcwZTBhNTgwN2MzNTU2MWNmMTUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9UaGVtZUNvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1RoZW1lQ29jb2EubW0KQEAgLTExMCw3ICsxMTAsNyBAQCBz
dGF0aWMgQ0dQREZQYWdlUmVmIGFwcGxlUGF5QnV0dG9uTG9nb1doaXRlKCkKIAogc3RhdGljIHZv
aWQgZHJhd0FwcGxlUGF5QnV0dG9uKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgQ0dQREZQYWdl
UmVmIHBhZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKIHsKLSAgICBhdXRvIGltYWdlQnVmZmVy
ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoc2l6ZSwgY29udGV4dCk7Cisg
ICAgYXV0byBpbWFnZUJ1ZmZlciA9IGNvbnRleHQuY3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVy
KHNpemUpOwogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCmluZGV4IDgw
Mjc0MzVhZDI5NDU2NjI5OGE3OTFiM2FmNmFmYTliZjI3ODFlNjguLjU3NDU0NDdjOGM1NGZmODhh
OTM2NmY1MGZlYjM2NGQ3NzgwY2IwOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKQEAgLTM0Nyw3ICszNDcsNyBAQCB2b2lkIEJpdG1h
cEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsCiAgICAgfQogCiAgICAgaWYgKCFtX2NhY2hlZEltYWdlKSB7Ci0gICAgICAg
IGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoZXhwYW5k
ZWRJbnRTaXplKHRpbGVSZWN0LnNpemUoKSksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
LCBjdHh0KTsKKyAgICAgICAgYXV0byBidWZmZXIgPSBjdHh0LmNyZWF0ZUNvbXBhdGlibGVJbWFn
ZUJ1ZmZlcihleHBhbmRlZEludFNpemUodGlsZVJlY3Quc2l6ZSgpKSk7CiAgICAgICAgIGlmICgh
YnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAKaW5k
ZXggNTBmZTBjNDY2MTRiNzAyYmExODYxZTczODAzYzEwMDI1YTA4MDRiNC4uNjFhMzgzMjMzY2I2
ZWIxYTk0ZTkxZjFmZmU0NzdmMmNjZGYxNTExNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcApA
QCAtMTAzLDcgKzEwMyw3IEBAIEltYWdlRHJhd1Jlc3VsdCBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFn
ZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsCiAKIHZvaWQgQ3Jvc3Nm
YWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhh
c2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
IG9wdGlvbnMpCiB7Ci0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUo
c2l6ZSgpLCBjb250ZXh0LnJlbmRlcmluZ01vZGUoKSwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IGNv
bnRleHQuY3JlYXRlSW1hZ2VCdWZmZXIoc2l6ZSgpKTsKICAgICBpZiAoIWltYWdlQnVmZmVyKQog
ICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhZGllbnRJbWFnZS5jcHAKaW5kZXggZmVmMzZlNTdhNjVhMTQ4NjkwZGIzMGEyYzJhNTY4
NGQwMDBjOGFkYy4uYmRhNzAxMTA5OGZhNTE3YTY0NDMyYWZlY2JkMDUzYzFmOTU5NWM1MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5j
cHAKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBHcmFkaWVudEltYWdlOjpkcmF3UGF0dGVybihHcmFw
aGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGQKICAgICB1bnNpZ25l
ZCBnZW5lcmF0b3JIYXNoID0gbV9ncmFkaWVudC0+aGFzaCgpOwogCiAgICAgaWYgKCFtX2NhY2hl
ZEltYWdlIHx8IG1fY2FjaGVkR2VuZXJhdG9ySGFzaCAhPSBnZW5lcmF0b3JIYXNoIHx8IG1fY2Fj
aGVkQWRqdXN0ZWRTaXplICE9IGFkanVzdGVkU2l6ZSB8fCAhYXJlRXNzZW50aWFsbHlFcXVhbChk
ZXN0Q29udGV4dC5zY2FsZUZhY3RvcigpLCBtX2NhY2hlZFNjYWxlRmFjdG9yKSkgewotICAgICAg
ICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIo
YWRqdXN0ZWRTaXplLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgZGVzdENvbnRleHQp
OworICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gZGVzdENvbnRleHQuY3JlYXRlQ29tcGF0aWJs
ZUltYWdlQnVmZmVyKGFkanVzdGVkU2l6ZSk7CiAgICAgICAgIGlmICghaW1hZ2VCdWZmZXIpCiAg
ICAgICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCmluZGV4IGE0OTJlOThkYTI4MGMyM2VjNzM2MzA3
YWRlMmRkZWYzMmJmYTRjZWYuLmU2YjJlNjg5ZWI1MjEwNzcyNmE5MzYxMzNkMjcxYWVkZjBjMGRj
NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmNwcApAQCAtNTUxLDYgKzU1MSwxMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6
OmRyYXdCaWRpVGV4dChjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgVGV4dFJ1biYgcnVu
LAogICAgIGJpZGlSdW5zLmNsZWFyKCk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgSW50U2l6ZSBzY2Fs
ZWRJbWFnZUJ1ZmZlclNpemUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBjb25zdCBGbG9hdFNpemUm
IHNjYWxlKQoreworICAgIC8vIEVubGFyZ2UgdGhlIGJ1ZmZlciBzaXplIGlmIHRoZSBjb250ZXh0
J3MgdHJhbnNmb3JtIGlzIHNjYWxpbmcgaXQgc28gd2UgbmVlZCBhIGhpZ2hlcgorICAgIC8vIHJl
c29sdXRpb24gdGhhbiBvbmUgcGl4ZWwgcGVyIHVuaXQuCisgICAgcmV0dXJuIGV4cGFuZGVkSW50
U2l6ZShzaXplICogc2NhbGUpOworfQorCitzdGF0aWMgaW5saW5lIEludFJlY3Qgc2NhbGVkSW1h
Z2VCdWZmZXJSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRTaXplJiBzY2Fs
ZSkKK3sKKyAgICBhdXRvIHNjYWxlZFJlY3QgPSByZWN0OworICAgIHNjYWxlZFJlY3Quc2NhbGUo
c2NhbGUpOworICAgIHJldHVybiBlbmNsb3NpbmdJbnRSZWN0KHNjYWxlZFJlY3QpOworfQorCitz
dGF0aWMgaW5saW5lIEZsb2F0U2l6ZSBjbGFtcGluZ1NjYWxlRm9ySW1hZ2VCdWZmZXJTaXplKGNv
bnN0IEZsb2F0U2l6ZSYgc2l6ZSkKK3sKKyAgICBGbG9hdFNpemUgY2xhbXBpbmdTY2FsZSgxLCAx
KTsKKyAgICBJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcoc2l6ZSwgY2xhbXBpbmdTY2Fs
ZSk7CisgICAgcmV0dXJuIGNsYW1waW5nU2NhbGU7Cit9CisKK0ludFNpemUgR3JhcGhpY3NDb250
ZXh0Ojpjb21wYXRpYmxlSW1hZ2VCdWZmZXJTaXplKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkgY29u
c3QKK3sKKyAgICByZXR1cm4gc2NhbGVkSW1hZ2VCdWZmZXJTaXplKHNpemUsIHNjYWxlRmFjdG9y
KCkpOworfQorCitSZWZQdHI8SW1hZ2VCdWZmZXI+IEdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlSW1h
Z2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UmIGNvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSkgY29uc3QKK3sKKyAg
ICByZXR1cm4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCByZW5kZXJpbmdNb2RlLCAxLCBjb2xv
clNwYWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworfQorCitSZWZQdHI8SW1hZ2VCdWZmZXI+IEdy
YXBoaWNzQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBj
b25zdCBGbG9hdFNpemUmIHNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9y
U3BhY2UsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgQ3JlYXRlTWV0aG9kIGNyZWF0ZU1l
dGhvZCkgY29uc3QKK3sKKyAgICBhdXRvIGV4cGFuZGVkU2NhbGVkU2l6ZSA9IHNjYWxlZEltYWdl
QnVmZmVyU2l6ZShzaXplLCBzY2FsZSk7CisgICAgaWYgKGV4cGFuZGVkU2NhbGVkU2l6ZS5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byBjbGFtcGluZ1NjYWxl
ID0gY2xhbXBpbmdTY2FsZUZvckltYWdlQnVmZmVyU2l6ZShleHBhbmRlZFNjYWxlZFNpemUpOwor
CisgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlcjsKKyAgICBpZiAoY3JlYXRlTWV0
aG9kID09IENyZWF0ZU1ldGhvZDo6QmFzZSkKKyAgICAgICAgaW1hZ2VCdWZmZXIgPSBHcmFwaGlj
c0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGV4cGFuZGVkU2NhbGVkU2l6ZSAqIGNsYW1waW5n
U2NhbGUsIGNvbG9yU3BhY2UsIHJlbmRlcmluZ01vZGUpOworICAgIGVsc2UKKyAgICAgICAgaW1h
Z2VCdWZmZXIgPSBjcmVhdGVJbWFnZUJ1ZmZlcihleHBhbmRlZFNjYWxlZFNpemUgKiBjbGFtcGlu
Z1NjYWxlLCBjb2xvclNwYWNlLCByZW5kZXJpbmdNb2RlKTsKKworICAgIGlmICghaW1hZ2VCdWZm
ZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgaW1hZ2VCdWZmZXItPmNvbnRleHQo
KS5zY2FsZShjbGFtcGluZ1NjYWxlKTsKKworICAgIC8vICdleHBhbmRlZFNjYWxlZFNpemUnIGlz
IG1hcHBlZCB0byAnc2l6ZScuIFNvIHVzZSAnZXhwYW5kZWRTY2FsZWRTaXplIC8gc2l6ZScKKyAg
ICAvLyBub3QgJ3NjYWxlJyBiZWNhdXNlIHRoZXkgYXJlIG5vdCBuZWNlc3NhcmlseSBlcXVhbC4K
KyAgICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnNjYWxlKGV4cGFuZGVkU2NhbGVkU2l6ZSAvIHNp
emUpOworICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsKK30KKworUmVmUHRyPEltYWdlQnVmZmVyPiBH
cmFwaGljc0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwg
Y29uc3QgRmxvYXRTaXplJiBzY2FsZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xv
clNwYWNlLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIENyZWF0ZU1ldGhvZCBjcmVhdGVN
ZXRob2QpIGNvbnN0Cit7CisgICAgYXV0byBleHBhbmRlZFNjYWxlZFJlY3QgPSBzY2FsZWRJbWFn
ZUJ1ZmZlclJlY3QocmVjdCwgc2NhbGUpOworICAgIGlmIChleHBhbmRlZFNjYWxlZFJlY3QuaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gY2xhbXBpbmdTY2Fs
ZSA9IGNsYW1waW5nU2NhbGVGb3JJbWFnZUJ1ZmZlclNpemUoZXhwYW5kZWRTY2FsZWRSZWN0LnNp
emUoKSk7CisKKyAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyOworICAgIGlmIChj
cmVhdGVNZXRob2QgPT0gQ3JlYXRlTWV0aG9kOjpCYXNlKQorICAgICAgICBpbWFnZUJ1ZmZlciA9
IEdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoZXhwYW5kZWRTY2FsZWRSZWN0LnNp
emUoKSAqIGNsYW1waW5nU2NhbGUsIGNvbG9yU3BhY2UsIHJlbmRlcmluZ01vZGUpOworICAgIGVs
c2UKKyAgICAgICAgaW1hZ2VCdWZmZXIgPSBjcmVhdGVJbWFnZUJ1ZmZlcihleHBhbmRlZFNjYWxl
ZFJlY3Quc2l6ZSgpICogY2xhbXBpbmdTY2FsZSwgY29sb3JTcGFjZSwgcmVuZGVyaW5nTW9kZSk7
CisKKyAgICBpZiAoIWltYWdlQnVmZmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAg
IGltYWdlQnVmZmVyLT5jb250ZXh0KCkuc2NhbGUoY2xhbXBpbmdTY2FsZSk7CisgICAgCisgICAg
Ly8gJ3JlY3QnIGlzIG1hcHBlZCB0byBhIHJlY3RhbmdsZSBpbnNpZGUgZXhwYW5kZWRTY2FsZWRS
ZWN0LgorICAgIGltYWdlQnVmZmVyLT5jb250ZXh0KCkudHJhbnNsYXRlKC1leHBhbmRlZFNjYWxl
ZFJlY3QubG9jYXRpb24oKSk7CisgICAgCisgICAgLy8gVGhlIHNpemUgb2YgdGhpcyByZWN0YW5n
bGUgaXMgbm90IG5lY2Vzc2FyaWx5IGVxdWFsIHRvIGV4cGFuZGVkU2NhbGVkUmVjdC5zaXplKCku
CisgICAgLy8gU28gdXNlICdzY2FsZScgbm90ICdleHBhbmRlZFNjYWxlZFJlY3Quc2l6ZSgpIC8g
cmVjdC5zaXplKCknLgorICAgIGltYWdlQnVmZmVyLT5jb250ZXh0KCkuc2NhbGUoc2NhbGUpOwor
ICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsKK30KKworUmVmUHRyPEltYWdlQnVmZmVyPiBHcmFwaGlj
c0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3Qg
RmxvYXRTaXplJiBzY2FsZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNl
LCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ01vZGU+IHJlbmRlcmluZ01vZGUpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIGNyZWF0ZUltYWdlQnVmZmVyKHNpemUsIHNjYWxlLCBjb2xvclNwYWNlLCByZW5k
ZXJpbmdNb2RlLnZhbHVlX29yKHRoaXMtPnJlbmRlcmluZ01vZGUoKSksIENyZWF0ZU1ldGhvZDo6
QmFzZSk7Cit9CisKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0OjpjcmVhdGVJ
bWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgc2NhbGUs
IGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgc3RkOjpvcHRpb25hbDxS
ZW5kZXJpbmdNb2RlPiByZW5kZXJpbmdNb2RlKSBjb25zdAoreworICAgIHJldHVybiBjcmVhdGVJ
bWFnZUJ1ZmZlcihyZWN0LCBzY2FsZSwgY29sb3JTcGFjZSwgcmVuZGVyaW5nTW9kZS52YWx1ZV9v
cih0aGlzLT5yZW5kZXJpbmdNb2RlKCkpLCBDcmVhdGVNZXRob2Q6OkJhc2UpOworfQorCitSZWZQ
dHI8SW1hZ2VCdWZmZXI+IEdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlQ29tcGF0aWJsZUltYWdlQnVm
ZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBj
b2xvclNwYWNlLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ01vZGU+IHJlbmRlcmluZ01vZGUpIGNv
bnN0Cit7CisgICAgcmV0dXJuIGNyZWF0ZUltYWdlQnVmZmVyKHNpemUsIHNjYWxlRmFjdG9yKCks
IGNvbG9yU3BhY2UsIHJlbmRlcmluZ01vZGUudmFsdWVfb3IodGhpcy0+cmVuZGVyaW5nTW9kZSgp
KSwgQ3JlYXRlTWV0aG9kOjpCYXNlKTsKK30KKworUmVmUHRyPEltYWdlQnVmZmVyPiBHcmFwaGlj
c0NvbnRleHQ6OmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHJl
Y3QsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgc3RkOjpvcHRpb25h
bDxSZW5kZXJpbmdNb2RlPiByZW5kZXJpbmdNb2RlKSBjb25zdAoreworICAgIHJldHVybiBjcmVh
dGVJbWFnZUJ1ZmZlcihyZWN0LCBzY2FsZUZhY3RvcigpLCBjb2xvclNwYWNlLCByZW5kZXJpbmdN
b2RlLnZhbHVlX29yKHRoaXMtPnJlbmRlcmluZ01vZGUoKSksIENyZWF0ZU1ldGhvZDo6QmFzZSk7
Cit9CisKIEltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFnZSYg
aW1hZ2UsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCiB7CiAgICAgcmV0dXJuIGRyYXdJbWFnZShp
bWFnZSwgRmxvYXRSZWN0KGRlc3RpbmF0aW9uLCBpbWFnZS5zaXplKCkpLCBGbG9hdFJlY3QoRmxv
YXRQb2ludCgpLCBpbWFnZS5zaXplKCkpLCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7CkBAIC02Njgs
NyArNzcyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBPdXRSb3VuZGVkUmVjdChjb25z
dCBGbG9hdFJvdW5kZWRSZWN0JiByZWN0KQogCiBHcmFwaGljc0NvbnRleHQ6OkNsaXBUb0RyYXdp
bmdDb21tYW5kc1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmNsaXBUb0RyYXdpbmdDb21tYW5kcyhj
b25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2Um
IGNvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3NDb250ZXh0Jik+JiYgZHJhd2luZ0Z1
bmN0aW9uKQogewotICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29t
cGF0aWJsZUJ1ZmZlcihkZXN0aW5hdGlvbi5zaXplKCksIGNvbG9yU3BhY2UsICp0aGlzKTsKKyAg
ICBhdXRvIGltYWdlQnVmZmVyID0gY3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyKGRlc3RpbmF0
aW9uLnNpemUoKSwgY29sb3JTcGFjZSk7CiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAg
cmV0dXJuIENsaXBUb0RyYXdpbmdDb21tYW5kc1Jlc3VsdDo6RmFpbGVkVG9DcmVhdGVJbWFnZUJ1
ZmZlcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuaAppbmRleCBjZjcwOTJkZTMzYmM1YjcyOGFkNDYxYjBmYzAyMTc3ZjY5ZWVmZjMy
Li5lZTRhNjk0ZDI0MTY4ZTAwZmViOWEzMTE0NjNiMDZmZDFlMDc2MTUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtNDE2
LDYgKzQxNiwxNCBAQCBwdWJsaWM6CiAKICAgICAvLyBJbWFnZXMsIFBhdHRlcm5zLCBhbmQgTWVk
aWEKIAorICAgIEludFNpemUgY29tcGF0aWJsZUltYWdlQnVmZmVyU2l6ZShjb25zdCBGbG9hdFNp
emUmKSBjb25zdDsKKworICAgIHZpcnR1YWwgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFn
ZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBjb25zdCBGbG9hdFNpemUmIHNjYWxlID0geyAxLCAx
IH0sIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IoKSwgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdNb2RlPiA9IHN0ZDo6bnVsbG9wdCkgY29u
c3Q7CisgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0U2l6ZSYgc2NhbGUgPSB7IDEsIDEgfSwgY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJiA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBz
dGQ6Om9wdGlvbmFsPFJlbmRlcmluZ01vZGU+ID0gc3RkOjpudWxsb3B0KSBjb25zdDsKKworICAg
IFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVDb21wYXRp
YmxlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNw
YWNlJiA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBzdGQ6Om9wdGlvbmFsPFJlbmRl
cmluZ01vZGU+ID0gc3RkOjpudWxsb3B0KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0
dWFsIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyKGNvbnN0
IEZsb2F0UmVjdCYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgPSBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IoKSwgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdNb2RlPiA9IHN0ZDo6bnVs
bG9wdCkgY29uc3Q7CisKICAgICB2aXJ0dWFsIHZvaWQgZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUlt
YWdlJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
PSB7IH0pID0gMDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1h
Z2UoSW1hZ2UmLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmID0geyBJbWFnZU9yaWVudGF0aW9uOjpGcm9tSW1hZ2UgfSk7CkBAIC01NDYs
NiArNTU0LDEzIEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGZpbGxFbGxpcHNlQXNQYXRoKGNvbnN0
IEZsb2F0UmVjdCYpOwogICAgIHZvaWQgc3Ryb2tlRWxsaXBzZUFzUGF0aChjb25zdCBGbG9hdFJl
Y3QmKTsKIAorICAgIGVudW0gY2xhc3MgQ3JlYXRlTWV0aG9kIDogYm9vbCB7IERlZmF1bHQsIEJh
c2UgfTsKKworICAgIHZpcnR1YWwgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZl
cihjb25zdCBGbG9hdFNpemUmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBSZW5kZXJp
bmdNb2RlKSBjb25zdDsKKworICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZm
ZXIoY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRmxvYXRTaXplJiBzY2FsZSwgY29uc3QgRGVzdGlu
YXRpb25Db2xvclNwYWNlJiwgUmVuZGVyaW5nTW9kZSwgQ3JlYXRlTWV0aG9kKSBjb25zdDsKKyAg
ICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYs
IGNvbnN0IEZsb2F0U2l6ZSYgc2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIFJl
bmRlcmluZ01vZGUsIENyZWF0ZU1ldGhvZCkgY29uc3Q7CisKICAgICBGbG9hdFJlY3QgY29tcHV0
ZUxpbmVCb3VuZHNBbmRBbnRpYWxpYXNpbmdNb2RlRm9yVGV4dChjb25zdCBGbG9hdFJlY3QmLCBi
b29sIHByaW50aW5nLCBDb2xvciYpOwogCiAgICAgZmxvYXQgZGFzaGVkTGluZUNvcm5lcldpZHRo
Rm9yU3Ryb2tlV2lkdGgoZmxvYXQpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCmluZGV4IDAxOTNiZmIwZjk2YzdkMzQwNTNlNzY4
YTBjMjU4ZmMxMjU3ODBmZDMuLjZkMWIyN2Y3MjEzYjdlMmE4YzhhYzEzMTQzODRlMmIzNmQ0MDkz
YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZl
ci5jcHAKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA5IERpcmsgU2No
dWx6ZSA8a3JpdEB3ZWJraXQub3JnPgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rp
b24gTGltaXRlZCAyMDExLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAy
MDE2LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE2LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC03Miw3MyArNzIsMTQgQEAgUmVmUHRyPEltYWdlQnVmZmVy
PiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9k
ZSByZW4KICAgICByZXR1cm4gaW1hZ2VCdWZmZXI7CiB9CiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4g
SW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXpl
LCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCitSZWZQdHI8SW1hZ2VCdWZmZXI+IElt
YWdlQnVmZmVyOjpjbG9uZSgpCiB7Ci0gICAgaWYgKHNpemUuaXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLQotICAgIEludFNpemUgc2NhbGVkU2l6ZSA9IEltYWdlQnVmZmVyOjpj
b21wYXRpYmxlQnVmZmVyU2l6ZShzaXplLCBjb250ZXh0KTsKLQotICAgIFJlZlB0cjxJbWFnZUJ1
ZmZlcj4gaW1hZ2VCdWZmZXI7Ci0KLSAgICBpZiAoY29udGV4dC5yZW5kZXJpbmdNb2RlKCkgPT0g
UmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQpCi0gICAgICAgIGltYWdlQnVmZmVyID0gQWNjZWxl
cmF0ZWRJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNjYWxlZFNpemUsIGNvbnRleHQpOwotICAgIAotICAg
IGlmICghaW1hZ2VCdWZmZXIpCi0gICAgICAgIGltYWdlQnVmZmVyID0gVW5hY2NlbGVyYXRlZElt
YWdlQnVmZmVyOjpjcmVhdGUoc2NhbGVkU2l6ZSwgY29udGV4dCk7Ci0KLSAgICBpZiAoIWltYWdl
QnVmZmVyKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGltYWdlQnVmZmVyLT5jb250
ZXh0KCkuc2NhbGUoc2NhbGVkU2l6ZSAvIHNpemUpOwotICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsK
LX0KLQotLy8gVGhpcyBpcyB1c2VmdWwgd2hlbiB5b3UgbmVlZCB0byBtYWtlIHN1cmUgdGhlIHBp
eGVsIGdyaWQgb2YgdGhlIEltYWdlQnVmZmVyIGFsaWducyB3aXRoIHRoZSBwaXhlbCBncmlkIG9m
IHRoZSBjb250ZXh0LgotLy8gU2ltcGx5IHNheWluZyBjcmVhdGVDb21wYXRpYmxlQnVmZmVyKHJl
Y3Quc2l6ZSgpLCBjb250ZXh0KSBpc24ndCBzdWZmaWNpZW50IGluIHRoaXMgc2l0dWF0aW9uLCBi
ZWNhdXNlIHJlY3QubG9jYXRpb24oKSBtYXkgbm90IGxpZSBvbiBhIHBpeGVsIGJvdW5kYXJ5Lgot
Ly8gSW4gdGhpcyBzaXR1YXRpb24sIHdlIGhhdmUgdG8gaW5mbGF0ZSBib3RoIHRoZSBsZWZ0IHNp
ZGUgYW5kIHRoZSByaWdodCBzaWRlLCB3aGljaCBjYW4gbGVhZCB0byBkaWZmZXJlbnQgcmVzdWx0
cyB0aGFuCi0vLyBjcmVhdGVDb21wYXRpYmxlQnVmZmVyKHJlY3Quc2l6ZSgpLCBjb250ZXh0KSB3
b3VsZCBoYXZlIHByb2R1Y2VkLgotYXV0byBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1
ZmZlcihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCkgLT4gc3RkOjpvcHRpb25hbDxDb21wYXRpYmxlQnVmZmVyRGVzY3JpcHRpb24+Ci17Ci0gICAg
aWYgKHJlY3QuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAg
YXV0byBpbmZvID0gSW1hZ2VCdWZmZXI6OmNvbXBhdGlibGVCdWZmZXJJbmZvKHJlY3QsIGNvbnRl
eHQpOwotCi0gICAgUmVmUHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlcjsKLQotICAgIGlmIChj
b250ZXh0LnJlbmRlcmluZ01vZGUoKSA9PSBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCkKLSAg
ICAgICAgaW1hZ2VCdWZmZXIgPSBBY2NlbGVyYXRlZEltYWdlQnVmZmVyOjpjcmVhdGUoaW5mby5w
aHlzaWNhbFNpemVJbkRldmljZUNvb3JkaW5hdGVzLCBjb250ZXh0KTsKLSAgICAKLSAgICBpZiAo
IWltYWdlQnVmZmVyKQotICAgICAgICBpbWFnZUJ1ZmZlciA9IFVuYWNjZWxlcmF0ZWRJbWFnZUJ1
ZmZlcjo6Y3JlYXRlKGluZm8ucGh5c2ljYWxTaXplSW5EZXZpY2VDb29yZGluYXRlcywgY29udGV4
dCk7Ci0KLSAgICBpZiAoIWltYWdlQnVmZmVyKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwotCi0gICAgaW1hZ2VCdWZmZXItPmNvbnRleHQoKS5zY2FsZShpbmZvLnNjYWxlKTsKLSAgICBp
bWFnZUJ1ZmZlci0+Y29udGV4dCgpLnRyYW5zbGF0ZSgtaW5mby5pbmZsYXRlZFJlY3RJblVzZXJD
b29yZGluYXRlcy5sb2NhdGlvbigpKTsKLSAgICByZXR1cm4geyB7IGltYWdlQnVmZmVyLnJlbGVh
c2VOb25OdWxsKCksIGluZm8uaW5mbGF0ZWRSZWN0SW5Vc2VyQ29vcmRpbmF0ZXMgfSB9OwotfQot
Ci1SZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVy
KGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xv
clNwYWNlLCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCi17Ci0gICAgaWYgKHNpemUu
aXNFbXB0eSgpKQorICAgIGF1dG8gY2xvbmUgPSBjb250ZXh0KCkuY3JlYXRlQ29tcGF0aWJsZUlt
YWdlQnVmZmVyKGxvZ2ljYWxTaXplKCksIGNvbG9yU3BhY2UoKSk7CisgICAgaWYgKCFjbG9uZSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBJbnRTaXplIHNjYWxlZFNpemUgPSBJbWFn
ZUJ1ZmZlcjo6Y29tcGF0aWJsZUJ1ZmZlclNpemUoc2l6ZSwgY29udGV4dCk7Ci0KLSAgICBhdXRv
IGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoc2NhbGVk
U2l6ZSwgMSwgY29sb3JTcGFjZSwgY29udGV4dCk7Ci0gICAgaWYgKCFpbWFnZUJ1ZmZlcikKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnNjYWxl
KHNjYWxlZFNpemUgLyBzaXplKTsKLSAgICByZXR1cm4gaW1hZ2VCdWZmZXI7Ci19Ci0KLVJlZlB0
cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3Qg
RmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9u
Q29sb3JTcGFjZSYgY29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQot
ewotICAgIHJldHVybiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIGNvbnRleHQucmVuZGVyaW5n
TW9kZSgpLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCk7
CisgICAgY2xvbmUtPmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIoKnRoaXMsIEZsb2F0UG9pbnQo
KSk7CisgICAgcmV0dXJuIGNsb25lOwogfQogCiBib29sIEltYWdlQnVmZmVyOjpzaXplTmVlZHND
bGFtcGluZyhjb25zdCBGbG9hdFNpemUmIHNpemUpCkBAIC0xODUsNTggKzEyNiw2IEBAIEZsb2F0
UmVjdCBJbWFnZUJ1ZmZlcjo6Y2xhbXBlZFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAg
IHJldHVybiBGbG9hdFJlY3QocmVjdC5sb2NhdGlvbigpLCBjbGFtcGVkU2l6ZShyZWN0LnNpemUo
KSkpOwogfQogCi1JbnRTaXplIEltYWdlQnVmZmVyOjpjb21wYXRpYmxlQnVmZmVyU2l6ZShjb25z
dCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKLXsKLSAg
ICAvLyBFbmxhcmdlIHRoZSBidWZmZXIgc2l6ZSBpZiB0aGUgY29udGV4dCdzIHRyYW5zZm9ybSBp
cyBzY2FsaW5nIGl0IHNvIHdlIG5lZWQgYSBoaWdoZXIKLSAgICAvLyByZXNvbHV0aW9uIHRoYW4g
b25lIHBpeGVsIHBlciB1bml0LgotICAgIHJldHVybiBleHBhbmRlZEludFNpemUoc2l6ZSAqIGNv
bnRleHQuc2NhbGVGYWN0b3IoKSk7Ci19Ci0KLWF1dG8gSW1hZ2VCdWZmZXI6OmNvbXBhdGlibGVC
dWZmZXJJbmZvKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0KSAtPiBDb21wYXRpYmxlQnVmZmVySW5mbwotewotICAgIGF1dG8gc2NhbGVGYWN0b3Ig
PSBjb250ZXh0LnNjYWxlRmFjdG9yKCk7Ci0gICAgYXV0byBzY2FsZWRSZWN0ID0gcmVjdDsKLSAg
ICBzY2FsZWRSZWN0LnNjYWxlKHNjYWxlRmFjdG9yKTsKLSAgICBhdXRvIGluZmxhdGVkU2NhbGVk
UmVjdCA9IGVuY2xvc2luZ0ludFJlY3Qoc2NhbGVkUmVjdCk7Ci0gICAgYXV0byBpbmZsYXRlZFJl
Y3RJblVzZXJDb29yZGluYXRlcyA9IEZsb2F0UmVjdChpbmZsYXRlZFNjYWxlZFJlY3QpOwotCi0g
ICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBhbGxvY2F0ZSBodWdlIEltYWdlQnVmZmVycyBiZWNhdXNl
IHRoZXkgY2FuIHRha2UgYSBsb3Qgb2YgbWVtb3J5LAotICAgIC8vIHNvIGlmIHRoZSBzaXplIHdv
dWxkIGhhdmUgYmVlbiB0b28gYmlnLCBkZWNyZWFzZSByZXNvbHV0aW9uIGFuZCBzY2FsZSB0aGUg
cmVzdWx0aW5nIGNvbnRleHQuCi0gICAgLy8gVGhpcyB3aWxsIG1lYW4gdGhhdCB0aGUgSW1hZ2VC
dWZmZXIgd2lsbCBsb3NlIHF1YWxpdHksIGJ1dCB3aWxsIHN0aWxsIGdlbmVyYWxseSBsb29rIGNv
cnJlY3QuCi0gICAgY29uc3RleHByIGludCBtYXhEaW1lbnNpb24gPSA0MDk2OwotICAgIGlmIChp
bmZsYXRlZFNjYWxlZFJlY3Qud2lkdGgoKSA+IG1heERpbWVuc2lvbikgewotICAgICAgICAvLyBU
aGUgcGl4ZWwgZ3JpZHMgd29uJ3QgYWxpZ24gYW55IG1vcmUsIHNvIHRoZXJlJ3Mgbm8gbmVlZCB0
byB0cnkgdG8gaGFuZGxlIGZyYWN0aW9ucyBvZiBwaXhlbHMuCi0gICAgICAgIGluZmxhdGVkU2Nh
bGVkUmVjdC5zZXRXaWR0aChtYXhEaW1lbnNpb24pOwotICAgICAgICBpbmZsYXRlZFJlY3RJblVz
ZXJDb29yZGluYXRlcy5zY2FsZShtYXhEaW1lbnNpb24gLyBpbmZsYXRlZFJlY3RJblVzZXJDb29y
ZGluYXRlcy53aWR0aCgpLCAxKTsKLSAgICAgICAgc2NhbGVGYWN0b3Iuc2V0V2lkdGgobWF4RGlt
ZW5zaW9uIC8gcmVjdC53aWR0aCgpKTsKLSAgICB9Ci0gICAgaWYgKGluZmxhdGVkU2NhbGVkUmVj
dC5oZWlnaHQoKSA+IG1heERpbWVuc2lvbikgewotICAgICAgICAvLyBUaGUgcGl4ZWwgZ3JpZHMg
d29uJ3QgYWxpZ24gYW55IG1vcmUsIHNvIHRoZXJlJ3Mgbm8gbmVlZCB0byB0cnkgdG8gaGFuZGxl
IGZyYWN0aW9ucyBvZiBwaXhlbHMuCi0gICAgICAgIGluZmxhdGVkU2NhbGVkUmVjdC5zZXRIZWln
aHQobWF4RGltZW5zaW9uKTsKLSAgICAgICAgaW5mbGF0ZWRSZWN0SW5Vc2VyQ29vcmRpbmF0ZXMu
c2NhbGUoMSwgbWF4RGltZW5zaW9uIC8gaW5mbGF0ZWRSZWN0SW5Vc2VyQ29vcmRpbmF0ZXMuaGVp
Z2h0KCkpOwotICAgICAgICBzY2FsZUZhY3Rvci5zZXRIZWlnaHQobWF4RGltZW5zaW9uIC8gcmVj
dC5oZWlnaHQoKSk7Ci0gICAgfQotCi0gICAgYXV0byBwaHlzaWNhbFNpemVJbkRldmljZUNvb3Jk
aW5hdGVzID0gaW5mbGF0ZWRTY2FsZWRSZWN0LnNpemUoKTsKLSAgICBpbmZsYXRlZFJlY3RJblVz
ZXJDb29yZGluYXRlcy5zY2FsZSgxLjBmIC8gc2NhbGVGYWN0b3IpOwotICAgIHJldHVybiB7IFdU
Rk1vdmUocGh5c2ljYWxTaXplSW5EZXZpY2VDb29yZGluYXRlcyksIFdURk1vdmUoaW5mbGF0ZWRS
ZWN0SW5Vc2VyQ29vcmRpbmF0ZXMpLCBzY2FsZUZhY3RvciB9OwotfQotCi1SZWZQdHI8SW1hZ2VC
dWZmZXI+IEltYWdlQnVmZmVyOjpjb3B5UmVjdFRvQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBjb25zdCBHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQpCi17Ci0gICAgaWYgKHJlY3QuaXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLQotICAgIEludFNpemUgc2NhbGVkU2l6ZSA9IEltYWdlQnVmZmVyOjpj
b21wYXRpYmxlQnVmZmVyU2l6ZShyZWN0LnNpemUoKSwgY29udGV4dCk7Ci0KLSAgICBhdXRvIGJ1
ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKHNjYWxlZFNpemUsIDEs
IGNvbG9yU3BhY2UsIGNvbnRleHQpOwotICAgIGlmICghYnVmZmVyKQotICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLQotICAgIGJ1ZmZlci0+Y29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcigqdGhpcywg
LXJlY3QubG9jYXRpb24oKSk7Ci0gICAgcmV0dXJuIGJ1ZmZlcjsKLX0KLQogUmVmUHRyPE5hdGl2
ZUltYWdlPiBJbWFnZUJ1ZmZlcjo6c2lua0ludG9OYXRpdmVJbWFnZShSZWZQdHI8SW1hZ2VCdWZm
ZXI+IGltYWdlQnVmZmVyKQogewogICAgIHJldHVybiBpbWFnZUJ1ZmZlci0+c2lua0ludG9OYXRp
dmVJbWFnZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyLmgKaW5kZXggNGI3MWYyMzUzYzhkMGNkOGVkZjRhZjVlNTkyNmI3ZGUyOTJjOGE2Mi4uZTVj
ZWY3YmQxNjc2ZTkzNTk0MDUwNjk3YTRjZTg2Y2Y5NmVmMjRiNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCkBAIC0xLDYgKzEsNiBAQAogLyoK
ICAqIENvcHlyaWdodCAoQykgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2Rl
Lm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAwNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMCBUb3JjaCBNb2JpbGUgKEJlaWppbmcp
IENvLiBMdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC01MCwx
NSArNTAsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFn
ZUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFNob3VsZFVz
ZURpc3BsYXlMaXN0LCBSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNv
bnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIFBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93
KiA9IG51bGxwdHIpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZm
ZXI+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmLCBSZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0
aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIFBpeGVsRm9ybWF0LCBjb25z
dCBIb3N0V2luZG93KiA9IG51bGxwdHIpOwogCi0gICAgLy8gQ3JlYXRlIGFuIGltYWdlIGJ1ZmZl
ciBjb21wYXRpYmxlIHdpdGggdGhlIGNvbnRleHQsIHdpdGggc3VpdGFibGUgcmVzb2x1dGlvbiBm
b3IgZHJhd2luZyBpbnRvIHRoZSBidWZmZXIgYW5kIHRoZW4gaW50byB0aGlzIGNvbnRleHQuCi0g
ICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25z
dCBGbG9hdFNpemUmLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKLSAgICBzdHJ1Y3QgQ29tcGF0
aWJsZUJ1ZmZlckRlc2NyaXB0aW9uIHsKLSAgICAgICAgUmVmPEltYWdlQnVmZmVyPiBpbWFnZUJ1
ZmZlcjsKLSAgICAgICAgRmxvYXRSZWN0IGluZmxhdGVkUmVjdEluVXNlckNvb3JkaW5hdGVzOwot
ICAgIH07Ci0gICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q29tcGF0aWJsZUJ1ZmZlckRlc2NyaXB0
aW9uPiBjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgcmVjdEluVXNlckNv
b3JkaW5hdGVzLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZs
b2F0U2l6ZSYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIGNvbnN0IEdyYXBoaWNzQ29u
dGV4dCYpOwotICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUNvbXBhdGlibGVC
dWZmZXIoY29uc3QgRmxvYXRTaXplJiwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UmLCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKKyAgICBSZWZQdHI8
SW1hZ2VCdWZmZXI+IGNsb25lKCk7CiAKICAgICAvLyBUaGVzZSBmdW5jdGlvbnMgYXJlIHVzZWQg
d2hlbiBjbGFtcGluZyB0aGUgSW1hZ2VCdWZmZXIgd2hpY2ggaXMgY3JlYXRlZCBmb3IgZmlsdGVy
LCBtYXNrZXIgb3IgY2xpcHBlci4KICAgICBzdGF0aWMgYm9vbCBzaXplTmVlZHNDbGFtcGluZyhj
b25zdCBGbG9hdFNpemUmKTsKQEAgLTY3LDE1ICs1OSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
RmxvYXRTaXplIGNsYW1wZWRTaXplKGNvbnN0IEZsb2F0U2l6ZSYsIEZsb2F0U2l6ZSYgc2NhbGUp
OwogICAgIHN0YXRpYyBGbG9hdFJlY3QgY2xhbXBlZFJlY3QoY29uc3QgRmxvYXRSZWN0Jik7CiAK
LSAgICBzdGF0aWMgSW50U2l6ZSBjb21wYXRpYmxlQnVmZmVyU2l6ZShjb25zdCBGbG9hdFNpemUm
LCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKLSAgICBzdHJ1Y3QgQ29tcGF0aWJsZUJ1ZmZlcklu
Zm8gewotICAgICAgICBJbnRTaXplIHBoeXNpY2FsU2l6ZUluRGV2aWNlQ29vcmRpbmF0ZXM7Ci0g
ICAgICAgIEZsb2F0UmVjdCBpbmZsYXRlZFJlY3RJblVzZXJDb29yZGluYXRlczsKLSAgICAgICAg
RmxvYXRTaXplIHNjYWxlOwotICAgIH07Ci0gICAgc3RhdGljIENvbXBhdGlibGVCdWZmZXJJbmZv
IGNvbXBhdGlibGVCdWZmZXJJbmZvKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEdyYXBoaWNzQ29u
dGV4dCYpOwotICAgIAotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfkltYWdlQnVmZmVyKCkg
PSBkZWZhdWx0OworICAgIHZpcnR1YWwgfkltYWdlQnVmZmVyKCkgPSBkZWZhdWx0OwogCiAgICAg
dmlydHVhbCB2b2lkIHNldEJhY2tlbmQoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQmFja2Vu
ZD4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhckJhY2tlbmQoKSA9IDA7CkBAIC0xMTks
OSArMTAzLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUmVmUHRyPEltYWdlPiBjb3B5SW1hZ2Uo
QmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5nU3RvcmUsIFByZXNlcnZlUmVzb2x1dGlvbiA9
IFByZXNlcnZlUmVzb2x1dGlvbjo6Tm8pIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFJlZlB0cjxJ
bWFnZT4gZmlsdGVyZWRJbWFnZShGaWx0ZXImKSA9IDA7CiAKLSAgICAvLyBDcmVhdGUgYW4gaW1h
Z2UgYnVmZmVyIGNvbXBhdGlibGUgd2l0aCB0aGUgY29udGV4dCBhbmQgY29weSByZWN0IGZyb20g
dGhpcyBidWZmZXIgaW50byB0aGlzIG5ldyBvbmUuCi0gICAgUmVmUHRyPEltYWdlQnVmZmVyPiBj
b3B5UmVjdFRvQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JT
cGFjZSYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOwotCiAgICAgdmlydHVhbCB2b2lkIGRyYXco
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0ID0gRmxvYXRSZWN0KDAsIDAsIC0xLCAtMSksIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiA9IHsgfSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3Qg
RmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmID0geyB9KSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwCmlu
ZGV4IDZmZmMyODJiOWNjNzUwNDA4ODhjYjM2NGZiMzMwMjAyZmNiMDNiZDAuLjM3MGM3ZGMyODk2
ZjM5NjJjYjNlZDUwOTgyZGFiNjk5NzRmNjMyYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmNw
cApAQCAtNjUsNyArNjUsNyBAQCBJbWFnZURyYXdSZXN1bHQgTmFtZWRJbWFnZUdlbmVyYXRlZElt
YWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRgogdm9pZCBOYW1lZElt
YWdlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhh
c2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
IG9wdGlvbnMpCiB7CiAjaWYgVVNFKE5FV19USEVNRSkKLSAgICBhdXRvIGltYWdlQnVmZmVyID0g
SW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoc2l6ZSgpLCBjb250ZXh0KTsKKyAg
ICBhdXRvIGltYWdlQnVmZmVyID0gY29udGV4dC5jcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIo
c2l6ZSgpKTsKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm47CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1h
Z2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJ
bWFnZS5jcHAKaW5kZXggMGUwNGNiYmM0MmUyN2JjYzlhNTM0ZmQwZmFkYzIwN2ZlY2QzMWJkMS4u
NWE2Y2NjODY3NGRhZDkyMjg1Y2JiMTY0NjRkNTc2NzJjMDJiNzY0ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5j
cHAKQEAgLTIzMiwxNCArMjMyLDE1IEBAIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6dXBkYXRlQ2Fj
aGVkSW1hZ2VJZk5lZWRlZChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0CiAKICAgICAv
LyBDYWNoZSB0aGUgUERGIGltYWdlIG9ubHkgaWYgdGhlIHNpemUgb2YgdGhlIG5ldyBpbWFnZSB3
b24ndCBleGNlZWQgdGhlIGNhY2hlIHRocmVzaG9sZC4KICAgICBpZiAobV9wZGZJbWFnZUNhY2hp
bmdQb2xpY3kgPT0gUERGSW1hZ2VDYWNoaW5nUG9saWN5OjpCZWxvd01lbW9yeUxpbWl0KSB7Ci0g
ICAgICAgIEludFNpemUgc2NhbGVkU2l6ZSA9IEltYWdlQnVmZmVyOjpjb21wYXRpYmxlQnVmZmVy
U2l6ZShjYWNoZWRJbWFnZVNpemUsIGNvbnRleHQpOworICAgICAgICBhdXRvIHNjYWxlZFNpemUg
PSBjb250ZXh0LmNvbXBhdGlibGVJbWFnZUJ1ZmZlclNpemUoY2FjaGVkSW1hZ2VTaXplKTsKICAg
ICAgICAgaWYgKHNfYWxsRGVjb2RlZERhdGFTaXplICsgc2NhbGVkU2l6ZS51bmNsYW1wZWRBcmVh
KCkgKiA0IC0gbV9jYWNoZWRCeXRlcyA+IHNfbWF4RGVjb2RlZERhdGFTaXplKSB7CiAgICAgICAg
ICAgICBkZXN0cm95RGVjb2RlZERhdGEoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogICAgIH0KIAotICAgIG1fY2FjaGVkSW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRl
Q29tcGF0aWJsZUJ1ZmZlcihjYWNoZWRJbWFnZVNpemUsIGNvbnRleHQpOworICAgIC8vIENyZWF0
ZSBpbi1wcm9jZXNzIEltYWdlQnVmZmVyIHNpbmNlIHRoZSBkZW9jb2Rpbmcgb2YgUERGIGltYWdl
cyBoYXMgdG8gaGFwcGVuIGluIFdlYlByb2Nlc3MuCisgICAgbV9jYWNoZWRJbWFnZUJ1ZmZlciA9
IGNvbnRleHQuR3JhcGhpY3NDb250ZXh0OjpjcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIoY2Fj
aGVkSW1hZ2VTaXplKTsKICAgICBpZiAoIW1fY2FjaGVkSW1hZ2VCdWZmZXIpIHsKICAgICAgICAg
ZGVzdHJveURlY29kZWREYXRhKCk7CiAgICAgICAgIHJldHVybjsKQEAgLTI5Miw3ICsyOTMsNyBA
QCBJbWFnZURyYXdSZXN1bHQgUERGRG9jdW1lbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdAogICAgICAgICAgICAgLy8gc2NhbGFyID0gc3FydCht
YXggbnVtYmVyIG9mIHBpeGVscyAvICh3aWR0aCAqIGhlaWdodCkpCiAgICAgICAgICAgICBhdXRv
IHNjYWxhciA9IHN0ZDo6bWluKDEuZiwgc3RkOjpzcXJ0KHN0YXRpY19jYXN0PGZsb2F0PihzX21h
eENhY2hlZEltYWdlQXJlYSkgLyAoZHN0UmVjdC53aWR0aCgpICogZHN0UmVjdC5oZWlnaHQoKSkp
KTsKICAgICAgICAgICAgIEZsb2F0UmVjdCBsb2NhbERlc3RpbmF0aW9uUmVjdChGbG9hdFBvaW50
KCksIGRzdFJlY3Quc2l6ZSgpICogc2NhbGFyKTsKLSAgICAgICAgICAgIGlmIChhdXRvIGltYWdl
QnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIobG9jYWxEZXN0aW5h
dGlvblJlY3Quc2l6ZSgpLCBjb250ZXh0KSkgeworICAgICAgICAgICAgaWYgKGF1dG8gaW1hZ2VC
dWZmZXIgPSBjb250ZXh0LkdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlQ29tcGF0aWJsZUltYWdlQnVm
ZmVyKGxvY2FsRGVzdGluYXRpb25SZWN0LnNpemUoKSkpIHsKICAgICAgICAgICAgICAgICBhdXRv
JiBidWZmZXJDb250ZXh0ID0gaW1hZ2VCdWZmZXItPmNvbnRleHQoKTsKICAgICAgICAgICAgICAg
ICB0cmFuc2Zvcm1Db250ZXh0Rm9yUGFpbnRpbmcoYnVmZmVyQ29udGV4dCwgbG9jYWxEZXN0aW5h
dGlvblJlY3QsIHNyY1JlY3QpOwogICAgICAgICAgICAgICAgIGRyYXdQREZQYWdlKGJ1ZmZlckNv
bnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29y
ZXRleHQvRHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCmlu
ZGV4IGMyOTVlZmU4MzQ3YjA0NWJlMzFkYjM2NzY3M2VlN2Y5OTViMWE0YzMuLmI5NmVjN2ExNzBj
ZWY2NGIzMjM1NWJmZWQzMTIwZmRiMDJhMTQ0MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0RyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9EcmF3R2x5
cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAKQEAgLTM3NCwxNCArMzc0LDE5IEBAIHZvaWQgRHJhd0ds
eXBoc1JlY29yZGVyOjpyZWNvcmREcmF3SW1hZ2UoQ0dSZW5kZXJpbmdTdGF0ZVJlZiwgQ0dHU3Rh
dGVSZWYgZ3N0YXRlCiB2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6ZHJhd09UU1ZHUnVuKGNvbnN0
IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgY29uc3QgR2x5cGhC
dWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBv
aW50JiBzdGFydFBvaW50LCBGb250U21vb3RoaW5nTW9kZSBzbW9vdGhpbmdNb2RlKQogewogICAg
IEZsb2F0UG9pbnQgcGVuUG9zaXRpb24gPSBzdGFydFBvaW50OworCiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG51bUdseXBoczsgKytpKSB7CiAgICAgICAgIGF1dG8gYm91bmRzID0gZm9u
dC5ib3VuZHNGb3JHbHlwaChnbHlwaHNbaV0pOwotICAgICAgICBpZiAoYXV0byBpbWFnZUJ1ZmZl
ckRlc2NyaXB0aW9uID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoYm91bmRz
LCBtX293bmVyKSkgewotICAgICAgICAgICAgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMoaW1hZ2VC
dWZmZXJEZXNjcmlwdGlvbi0+aW1hZ2VCdWZmZXItPmNvbnRleHQoKSwgZm9udCwgZ2x5cGhzICsg
aSwgYWR2YW5jZXMgKyBpLCAxLCBGbG9hdFBvaW50KCksIHNtb290aGluZ01vZGUpOwotICAgICAg
ICAgICAgYXV0byBkZXN0aW5hdGlvblJlY3QgPSBpbWFnZUJ1ZmZlckRlc2NyaXB0aW9uLT5pbmZs
YXRlZFJlY3RJblVzZXJDb29yZGluYXRlczsKKworICAgICAgICAvLyBDcmVhdGUgaW4tcHJvY2Vz
cyBJbWFnZUJ1ZmZlciBzaW5jZSB0aGUgZGVvY29kaW5nIG9mIE9ULVNWRyBmb250cyBoYXMgdG8g
aGFwcGVuIGluIFdlYlByb2Nlc3MuCisgICAgICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gbV9v
d25lci5HcmFwaGljc0NvbnRleHQ6OmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihib3VuZHMp
KSB7CisgICAgICAgICAgICBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhpbWFnZUJ1ZmZlci0+Y29u
dGV4dCgpLCBmb250LCBnbHlwaHMgKyBpLCBhZHZhbmNlcyArIGksIDEsIEZsb2F0UG9pbnQoKSwg
c21vb3RoaW5nTW9kZSk7CisKKyAgICAgICAgICAgIEZsb2F0UmVjdCBkZXN0aW5hdGlvblJlY3Qg
PSBlbmNsb3NpbmdJbnRSZWN0KGJvdW5kcyk7CiAgICAgICAgICAgICBkZXN0aW5hdGlvblJlY3Qu
bW92ZUJ5KHBlblBvc2l0aW9uKTsKLSAgICAgICAgICAgIG1fb3duZXIuZHJhd0ltYWdlQnVmZmVy
KGltYWdlQnVmZmVyRGVzY3JpcHRpb24tPmltYWdlQnVmZmVyLCBkZXN0aW5hdGlvblJlY3QpOwor
ICAgICAgICAgICAgbV9vd25lci5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyLCBkZXN0aW5h
dGlvblJlY3QpOwogICAgICAgICB9CisKICAgICAgICAgcGVuUG9zaXRpb24ubW92ZShzaXplKGFk
dmFuY2VzW2ldKSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3Jk
ZXIuY3BwCmluZGV4IDg5ZjNkMzUzZGE3YmI0MTcxMThmZjcxODhjZWRjMDdjMDhiY2M4NDcuLjU0
NzNiYWMxMDA4ZTRhZDUwNTA0YmM1OTEzMzhjNTliMDEyZWEyZDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTUwNyw2ICs1MDcsMjYgQEAgR3JhcGhpY3ND
b250ZXh0OjpDbGlwVG9EcmF3aW5nQ29tbWFuZHNSZXN1bHQgUmVjb3JkZXI6OmNsaXBUb0RyYXdp
bmdDb21tYW5kcyhjb24KICAgICByZXR1cm4gQ2xpcFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0OjpT
dWNjZXNzOwogfQogCitSZWZQdHI8SW1hZ2VCdWZmZXI+IFJlY29yZGVyOjpjcmVhdGVJbWFnZUJ1
ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc2NhbGUsIGNvbnN0
IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgc3RkOjpvcHRpb25hbDxSZW5kZXJp
bmdNb2RlPiByZW5kZXJpbmdNb2RlKSBjb25zdAoreworICAgIHJldHVybiBHcmFwaGljc0NvbnRl
eHQ6OmNyZWF0ZUltYWdlQnVmZmVyKHNpemUsIHNjYWxlLCBjb2xvclNwYWNlLCByZW5kZXJpbmdN
b2RlLnZhbHVlX29yKHRoaXMtPnJlbmRlcmluZ01vZGUoKSksIENyZWF0ZU1ldGhvZDo6RGVmYXVs
dCk7Cit9CisKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gUmVjb3JkZXI6OmNyZWF0ZUltYWdlQnVmZmVy
KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRTaXplJiBzY2FsZSwgY29uc3QgRGVz
dGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ01v
ZGU+IHJlbmRlcmluZ01vZGUpIGNvbnN0Cit7CisgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDo6
Y3JlYXRlSW1hZ2VCdWZmZXIocmVjdCwgc2NhbGUsIGNvbG9yU3BhY2UsIHJlbmRlcmluZ01vZGUu
dmFsdWVfb3IodGhpcy0+cmVuZGVyaW5nTW9kZSgpKSwgQ3JlYXRlTWV0aG9kOjpEZWZhdWx0KTsK
K30KKworUmVmUHRyPEltYWdlQnVmZmVyPiBSZWNvcmRlcjo6Y3JlYXRlQ29tcGF0aWJsZUltYWdl
QnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNl
JiBjb2xvclNwYWNlLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ01vZGU+IHJlbmRlcmluZ01vZGUp
IGNvbnN0Cit7CisgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIo
c2l6ZSwgc2NhbGVGYWN0b3IoKSwgY29sb3JTcGFjZSwgcmVuZGVyaW5nTW9kZS52YWx1ZV9vcih0
aGlzLT5yZW5kZXJpbmdNb2RlKCkpLCBDcmVhdGVNZXRob2Q6OkRlZmF1bHQpOworfQorCitSZWZQ
dHI8SW1hZ2VCdWZmZXI+IFJlY29yZGVyOjpjcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIoY29u
c3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3Bh
Y2UsIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nTW9kZT4gcmVuZGVyaW5nTW9kZSkgY29uc3QKK3sK
KyAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihyZWN0LCBzY2Fs
ZUZhY3RvcigpLCBjb2xvclNwYWNlLCByZW5kZXJpbmdNb2RlLnZhbHVlX29yKHRoaXMtPnJlbmRl
cmluZ01vZGUoKSksIENyZWF0ZU1ldGhvZDo6RGVmYXVsdCk7Cit9CisKICNpZiBFTkFCTEUoVklE
RU8pCiB2b2lkIFJlY29yZGVyOjpwYWludEZyYW1lRm9yTWVkaWEoTWVkaWFQbGF5ZXImIHBsYXll
ciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZWNvcmRlci5oCmluZGV4IDQwZTdhMGMyNTYwMzcxMzU5Y2FlZGRmZGQ1MzkyMDVlZDE1
ODdlOTguLjQyM2Q2MTY0ZGI0ZDJlMTRjMzQxOTUwZGU3MmM1ZThlNjU3YWY4OWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaApAQCAtMTg1LDYgKzE4NSwxMiBAQCBwcm90
ZWN0ZWQ6CiAgICAgY29uc3QgQ29udGV4dFN0YXRlJiBjdXJyZW50U3RhdGUoKSBjb25zdDsKICAg
ICBDb250ZXh0U3RhdGUmIGN1cnJlbnRTdGF0ZSgpOwogCisgICAgV0VCQ09SRV9FWFBPUlQgUmVm
UHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBjb25z
dCBGbG9hdFNpemUmIHNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmID0gRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKCksIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nTW9kZT4gPSBz
dGQ6Om51bGxvcHQpIGNvbnN0IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxJbWFn
ZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRT
aXplJiBzY2FsZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiA9IERlc3RpbmF0aW9uQ29s
b3JTcGFjZTo6U1JHQigpLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ01vZGU+ID0gc3RkOjpudWxs
b3B0KSBjb25zdCBmaW5hbDsKKworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxJbWFnZUJ1ZmZl
cj4gY3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IERl
c3RpbmF0aW9uQ29sb3JTcGFjZSYgPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgc3Rk
OjpvcHRpb25hbDxSZW5kZXJpbmdNb2RlPiA9IHN0ZDo6bnVsbG9wdCkgY29uc3QgZmluYWw7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVDb21wYXRpYmxlSW1h
Z2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiA9
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ01v
ZGU+ID0gc3RkOjpudWxsb3B0KSBjb25zdCBmaW5hbDsKKwogcHJpdmF0ZToKICAgICBib29sIGhh
c1BsYXRmb3JtQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgUGxh
dGZvcm1HcmFwaGljc0NvbnRleHQqIHBsYXRmb3JtQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG51bGxwdHI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlcklt
cGwuY3BwCmluZGV4IDNlY2JjN2JhMzMzNWZjN2JiYWJmOTBlMTQ3ZGMzYmE5MzRmNjQ4NjUuLjIw
Y2JlMDAyNWVkYjYwYjA4ZGJiODJlYzM0ZTdjZGY0Y2Q4YzNmYTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmNwcApAQCAtNDMxLDYgKzQzMSwxMSBAQCBi
b29sIFJlY29yZGVySW1wbDo6cmVjb3JkUmVzb3VyY2VVc2UoRm9udCYgZm9udCkKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAorUmVmUHRyPEltYWdlQnVmZmVyPiBSZWNvcmRlckltcGw6OmNyZWF0ZUlt
YWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNw
YWNlJiBjb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgcmVuZGVyaW5nTW9kZSwgU2hvdWxk
VXNlRGlzcGxheUxpc3Q6OlllcywgUmVuZGVyaW5nUHVycG9zZTo6VW5zcGVjaWZpZWQsIDEsIGNv
bG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCk7Cit9CisKIC8vIEZJWE1FOiBzaGFyZSB3aXRo
IFNoYWRvd0RhdGEKIHN0YXRpYyBpbmxpbmUgZmxvYXQgc2hhZG93UGFpbnRpbmdFeHRlbnQoZmxv
YXQgYmx1clJhZGl1cykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJ
bXBsLmgKaW5kZXggOTI2YzMzYjMxMTEyMjU1ZWMzMmMyMjQ2ZTMyOTE5ZTE4ZWNmNTQwMy4uYTk2
MWY2ZmY3MjZjZjY2Njk2MTEyODgxMWEzZDc5YmVjOGJkZTU3YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3Jk
ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmgKQEAgLTEyNyw2ICsxMjcsOSBAQCBwcml2YXRl
OgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4gY3JlYXRlTmVzdGVkQ29u
dGV4dChjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IGluaXRpYWxDVE0pIGZpbmFsOwogCisgICAgdXNpbmcgUmVjb3JkZXI6OmNyZWF0ZUltYWdlQnVm
ZmVyOworICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxv
YXRTaXplJiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgUmVuZGVyaW5nTW9kZSkgY29u
c3QgZmluYWw7CisKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBjbGFzcy4uLiBBcmdzPgogICAg
IHZvaWQgYXBwZW5kKEFyZ3MmJi4uLiBhcmdzKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlcGxheWVyLmNwcAppbmRleCBiMTg4Y2VhYjQyNjk2ZmZlMjAxMjA5YTkwMGFiNzAw
OTk1MGI4NWU1Li5iYWVkMTRjZTBhZDdjOWMwNGM5NWIwZTcxNTA1MmE2NTBlMDc5YTllIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZXBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCkBAIC0xNTQsNyArMTU0LDcg
QEAgc3RkOjpwYWlyPHN0ZDo6b3B0aW9uYWw8U3RvcFJlcGxheVJlYXNvbj4sIHN0ZDo6b3B0aW9u
YWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGkKICAgICAgICAgaWYgKG1fbWFza0ltYWdlQnVmZmVy
KQogICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6SW52YWxpZEl0ZW1PckV4
dGVudCwgc3RkOjpudWxsb3B0IH07CiAgICAgICAgIGF1dG8mIGNsaXBJdGVtID0gaXRlbS5nZXQ8
QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM+KCk7Ci0gICAgICAgIG1fbWFza0ltYWdlQnVmZmVy
ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY2xpcEl0ZW0uZGVzdGluYXRp
b24oKS5zaXplKCksIGNsaXBJdGVtLmNvbG9yU3BhY2UoKSwgbV9jb250ZXh0KTsKKyAgICAgICAg
bV9tYXNrSW1hZ2VCdWZmZXIgPSBtX2NvbnRleHQuY3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVy
KGNsaXBJdGVtLmRlc3RpbmF0aW9uKCkuc2l6ZSgpLCBjbGlwSXRlbS5jb2xvclNwYWNlKCkpOwog
ICAgICAgICBpZiAoIW1fbWFza0ltYWdlQnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuIHsgU3Rv
cFJlcGxheVJlYXNvbjo6T3V0T2ZNZW1vcnksIHN0ZDo6bnVsbG9wdCB9OwogICAgICAgICByZXR1
cm4geyBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1RoZW1lTWFjLm1tCmluZGV4IGQ3OWU4NWFhMmJjOTc1ODcyYWZmYjFkNzA3MTk0ZGRlZGJk
MzkwOWEuLjc0MTkxNWMwYzAzZDQxYjMzYjU3MzljOTY0NGMzNzcyNjVlZTFjZjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KQEAgLTczNCw3ICs3MzQsNyBAQCBib29s
IFRoZW1lTWFjOjpkcmF3Q2VsbE9yRm9jdXNSaW5nV2l0aFZpZXdJbnRvQ29udGV4dChOU0NlbGwg
KmNlbGwsIEdyYXBoaWNzQ29udAogCiAgICAgaWYgKHVzZUltYWdlQnVmZmVyKSB7CiAgICAgICAg
IE5TUmVjdCBpbWFnZUJ1ZmZlckRyYXdSZWN0ID0gTlNSZWN0KEZsb2F0UmVjdChidXR0b25Gb2N1
c1JlY3RPdXRsaW5lV2lkdGgsIGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVXaWR0aCwgcmVjdC53aWR0
aCgpLCByZWN0LmhlaWdodCgpKSk7Ci0gICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1
ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihyZWN0LnNpemUoKSArIDIgKiBGbG9hdFNpemUo
YnV0dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRoLCBidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgp
LCBkZXZpY2VTY2FsZUZhY3RvciwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIGNvbnRl
eHQpOworICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gY29udGV4dC5jcmVhdGVJbWFnZUJ1ZmZl
cihyZWN0LnNpemUoKSArIDIgKiBGbG9hdFNpemUoYnV0dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRo
LCBidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgpLCB7IGRldmljZVNjYWxlRmFjdG9yLCBkZXZp
Y2VTY2FsZUZhY3RvciB9KTsKICAgICAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgICAg
IHJldHVybiBuZWVkc1JlcGFpbnQ7CiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCmluZGV4IDUyOGYwMjIwNGE2MTg2Zjk4
NTFhMzI0YzUwZTliNjFjYjI1MjAzNzQuLjE5YmIwYzQyZmJjNWZjMjEzNTc2MDc4MjI2NTdmYmI2
MmFmODcyODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hN
b2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1v
ZGVsT2JqZWN0LmNwcApAQCAtODk0LDcgKzg5NCw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNv
CiAgICAgICAgIG1hc2tSZWN0LmludGVyc2VjdChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKHBhaW50
SW5mby5yZWN0LCBkZXZpY2VTY2FsZUZhY3RvcikpOwogCiAgICAgICAgIC8vIE5vdyBjcmVhdGUg
dGhlIG1hc2suCi0gICAgICAgIG1hc2tJbWFnZSA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRp
YmxlQnVmZmVyKG1hc2tSZWN0LnNpemUoKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCks
IGNvbnRleHQpOworICAgICAgICBtYXNrSW1hZ2UgPSBjb250ZXh0LmNyZWF0ZUNvbXBhdGlibGVJ
bWFnZUJ1ZmZlcihtYXNrUmVjdC5zaXplKCkpOwogICAgICAgICBpZiAoIW1hc2tJbWFnZSkKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgcGFpbnRNYXNrRm9yVGV4dEZpbGxCb3gobWFza0lt
YWdlLmdldCgpLCBtYXNrUmVjdCwgYm94LCBzY3JvbGxlZFBhaW50UmVjdCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCA3N2E4YTI3ODEyOTI1YTVhNDY3MmM2
NWRmOThjZjdhZGIyOTZmZGU3Li45NzNhZGM1ODYyZDNmMTQzMjAyY2JhZmUxYzdhYjY2YzUwM2Nh
NTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTMyNDcs
NyArMzI0Nyw3IEBAIEdyYXBoaWNzQ29udGV4dCogUmVuZGVyTGF5ZXI6OnNldHVwRmlsdGVycyhH
cmFwaGljc0NvbnRleHQmIGRlc3RpbmF0aW9uQ29udGV4dCwKIAogICAgIGF1dG8gcm9vdFJlbGF0
aXZlQm91bmRzID0gY2FsY3VsYXRlTGF5ZXJCb3VuZHMocGFpbnRpbmdJbmZvLnJvb3RMYXllciwg
b2Zmc2V0RnJvbVJvb3QsIHsgfSk7CiAKLSAgICBHcmFwaGljc0NvbnRleHQqIGZpbHRlckNvbnRl
eHQgPSBwYWludGluZ0ZpbHRlcnMtPmJlZ2luRmlsdGVyRWZmZWN0KHJlbmRlcmVyKCksIGVuY2xv
c2luZ0ludFJlY3Qocm9vdFJlbGF0aXZlQm91bmRzKSwgZW5jbG9zaW5nSW50UmVjdChwYWludGlu
Z0luZm8ucGFpbnREaXJ0eVJlY3QpLCBlbmNsb3NpbmdJbnRSZWN0KGZpbHRlclJlcGFpbnRSZWN0
KSk7CisgICAgR3JhcGhpY3NDb250ZXh0KiBmaWx0ZXJDb250ZXh0ID0gcGFpbnRpbmdGaWx0ZXJz
LT5iZWdpbkZpbHRlckVmZmVjdChyZW5kZXJlcigpLCBkZXN0aW5hdGlvbkNvbnRleHQsIGVuY2xv
c2luZ0ludFJlY3Qocm9vdFJlbGF0aXZlQm91bmRzKSwgZW5jbG9zaW5nSW50UmVjdChwYWludGlu
Z0luZm8ucGFpbnREaXJ0eVJlY3QpLCBlbmNsb3NpbmdJbnRSZWN0KGZpbHRlclJlcGFpbnRSZWN0
KSk7CiAgICAgaWYgKCFmaWx0ZXJDb250ZXh0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRl
eCA0ZWZjZmFiNTU1N2I1NTMzYmVlOTVjOTQyODI2MTJhMTc1ZjY1MzM4Li5kMmZmMmU5MWFiMTA5
YTAxYTk3ZDdmNzgyZjNjYjZhMzdiYTAyNjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtMzMxMiw3ICszMzEyLDcgQEAgc3RhdGlj
IFJlZlB0cjxQYXR0ZXJuPiBwYXR0ZXJuRm9yRGVzY3JpcHRpb24oUGF0dGVybkRlc2NyaXB0aW9u
IGRlc2NyaXB0aW9uLCBGbG8KIHsKICAgICBjb25zdCBGbG9hdFNpemUgdGlsZVNpemUgeyAzMiwg
MTggfTsKIAotICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0
aWJsZUJ1ZmZlcih0aWxlU2l6ZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIGRlc3RD
b250ZXh0KTsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gZGVzdENvbnRleHQuY3JlYXRlQ29tcGF0
aWJsZUltYWdlQnVmZmVyKHRpbGVTaXplKTsKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyRmlsdGVycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJGaWx0ZXJzLmNwcAppbmRleCA2ZGU0ZmYwMTdiOTI1N2E5YjZiMTA3MzZmMWM0ZTE4OTFh
OGU3NWEwLi41YmE5NGNmZDVkYmIxZTQ0YjVmYmQzYzViYzExYWQxOWFlYWY4ZjVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmNwcApAQCAtMSw2
ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQWRvYmUgU3lzdGVtcyBJbmNvcnBv
cmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0xMjksMTkgKzEyOSwxNiBAQCBHcmFwaGljc0NvbnRleHQqIFJlbmRlckxheWVyRmls
dGVyczo6aW5wdXRDb250ZXh0KCkKICAgICByZXR1cm4gbV9zb3VyY2VJbWFnZSA/ICZtX3NvdXJj
ZUltYWdlLT5jb250ZXh0KCkgOiBudWxscHRyOwogfQogCi12b2lkIFJlbmRlckxheWVyRmlsdGVy
czo6YWxsb2NhdGVCYWNraW5nU3RvcmVJZk5lZWRlZCgpCit2b2lkIFJlbmRlckxheWVyRmlsdGVy
czo6YWxsb2NhdGVCYWNraW5nU3RvcmVJZk5lZWRlZChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQp
CiB7CiAgICAgYXV0byYgZmlsdGVyID0gKm1fZmlsdGVyOwogICAgIGF1dG8gbG9naWNhbFNpemUg
PSBmaWx0ZXIuc2NhbGVkQnlGaWx0ZXJTY2FsZShtX2ZpbHRlclJlZ2lvbi5zaXplKCkpOwogCi0g
ICAgaWYgKCFtX3NvdXJjZUltYWdlIHx8IG1fc291cmNlSW1hZ2UtPmxvZ2ljYWxTaXplKCkgIT0g
bG9naWNhbFNpemUpIHsKLSAgICAgICAgbV9zb3VyY2VJbWFnZSA9IEltYWdlQnVmZmVyOjpjcmVh
dGUobG9naWNhbFNpemUsIGZpbHRlci5yZW5kZXJpbmdNb2RlKCksIFNob3VsZFVzZURpc3BsYXlM
aXN0OjpObywgUmVuZGVyaW5nUHVycG9zZTo6RE9NLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBtX2xheWVyLnJlbmRlcmVyKCkuaG9zdFdpbmRv
dygpKTsKLSAgICAgICAgaWYgKGF1dG8gY29udGV4dCA9IGlucHV0Q29udGV4dCgpKQotICAgICAg
ICAgICAgY29udGV4dC0+c2NhbGUoZmlsdGVyLmZpbHRlclNjYWxlKCkpOwotICAgIH0KKyAgICBp
ZiAoIW1fc291cmNlSW1hZ2UgfHwgbV9zb3VyY2VJbWFnZS0+bG9naWNhbFNpemUoKSAhPSBsb2dp
Y2FsU2l6ZSkKKyAgICAgICAgbV9zb3VyY2VJbWFnZSA9IGNvbnRleHQuY3JlYXRlSW1hZ2VCdWZm
ZXIobV9maWx0ZXJSZWdpb24uc2l6ZSgpLCBmaWx0ZXIuZmlsdGVyU2NhbGUoKSwgRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCKCksIGZpbHRlci5yZW5kZXJpbmdNb2RlKCkpOwogfQogCi1HcmFw
aGljc0NvbnRleHQqIFJlbmRlckxheWVyRmlsdGVyczo6YmVnaW5GaWx0ZXJFZmZlY3QoUmVuZGVy
RWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IExheW91dFJlY3QmIGZpbHRlckJveFJlY3QsIGNvbnN0
IExheW91dFJlY3QmIGRpcnR5UmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgbGF5ZXJSZXBhaW50UmVj
dCkKK0dyYXBoaWNzQ29udGV4dCogUmVuZGVyTGF5ZXJGaWx0ZXJzOjpiZWdpbkZpbHRlckVmZmVj
dChSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBMYXlvdXRSZWN0JiBmaWx0ZXJCb3hSZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBkaXJ0eVJlY3Qs
IGNvbnN0IExheW91dFJlY3QmIGxheWVyUmVwYWludFJlY3QpCiB7CiAgICAgaWYgKCFtX2ZpbHRl
cikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xOTMsNyArMTkwLDcgQEAgR3JhcGhpY3ND
b250ZXh0KiBSZW5kZXJMYXllckZpbHRlcnM6OmJlZ2luRmlsdGVyRWZmZWN0KFJlbmRlckVsZW1l
bnQmIHJlbmRlcmVyLAogICAgIHJlc2V0RGlydHlTb3VyY2VSZWN0KCk7CiAKICAgICBmaWx0ZXIu
c2V0RmlsdGVyUmVnaW9uKG1fZmlsdGVyUmVnaW9uKTsKLSAgICBhbGxvY2F0ZUJhY2tpbmdTdG9y
ZUlmTmVlZGVkKCk7CisgICAgYWxsb2NhdGVCYWNraW5nU3RvcmVJZk5lZWRlZChjb250ZXh0KTsK
IAogICAgIGF1dG8qIHNvdXJjZUdyYXBoaWNzQ29udGV4dCA9IGlucHV0Q29udGV4dCgpOwogICAg
IGlmICghc291cmNlR3JhcGhpY3NDb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVycy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyRmlsdGVycy5oCmluZGV4IGIwY2I3N2M4ZTEwNWM0YmUwN2Y2NmU2OTI0NzE3
M2JjOGU1ZTNhOWUuLjA1MTNjODg1YjQwYjc1ZTAxMzJmM2VhZGZlZjYwYzc4Njc4OWI5ZDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmgKQEAgLTEs
NiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEyIEFkb2JlIFN5c3RlbXMgSW5jb3Jw
b3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtNjMsMTQgKzYzLDE0IEBAIHB1YmxpYzoKICAgICAvLyBQZXIgcmVuZGVyCiAgICAg
TGF5b3V0UmVjdCByZXBhaW50UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVwYWludFJlY3Q7IH0K
IAotICAgIEdyYXBoaWNzQ29udGV4dCogYmVnaW5GaWx0ZXJFZmZlY3QoUmVuZGVyRWxlbWVudCYs
IGNvbnN0IExheW91dFJlY3QmIGZpbHRlckJveFJlY3QsIGNvbnN0IExheW91dFJlY3QmIGRpcnR5
UmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgbGF5ZXJSZXBhaW50UmVjdCk7CisgICAgR3JhcGhpY3ND
b250ZXh0KiBiZWdpbkZpbHRlckVmZmVjdChSZW5kZXJFbGVtZW50JiwgR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgTGF5b3V0UmVjdCYgZmlsdGVyQm94UmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgZGly
dHlSZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBsYXllclJlcGFpbnRSZWN0KTsKICAgICB2b2lkIGFw
cGx5RmlsdGVyRWZmZWN0KEdyYXBoaWNzQ29udGV4dCYgZGVzdGluYXRpb25Db250ZXh0KTsKIAog
cHJpdmF0ZToKICAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCByZXNldERpcnR5U291cmNlUmVj
dCgpIHsgbV9kaXJ0eVNvdXJjZVJlY3QgPSBMYXlvdXRSZWN0KCk7IH0KICAgICBHcmFwaGljc0Nv
bnRleHQqIGlucHV0Q29udGV4dCgpOwotICAgIHZvaWQgYWxsb2NhdGVCYWNraW5nU3RvcmVJZk5l
ZWRlZCgpOworICAgIHZvaWQgYWxsb2NhdGVCYWNraW5nU3RvcmVJZk5lZWRlZChHcmFwaGljc0Nv
bnRleHQmKTsKIAogICAgIFJlbmRlckxheWVyJiBtX2xheWVyOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZUNvY29hLm1tCmluZGV4IDFhNjY3MzIyNzIyYWQzOGZjMTUx
NGJiYjExOWVkY2UzYThlZjczZjMuLmFiZDRjMWRiMTMxNGQ0NDIxYjczMjJhYTg1NzUxYWViMmY1
OTNhZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNvY29hLm1t
CkBAIC0xNTQsNyArMTU0LDcgQEAgYm9vbCBSZW5kZXJUaGVtZUNvY29hOjpwYWludEFwcGxlUGF5
QnV0dG9uKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIGNvbnN0IFAKIHsKICAgICBhdXRv
JiBkZXN0aW5hdGlvbkNvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpOwogCi0gICAgYXV0byBp
bWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKHBhaW50UmVj
dC5zaXplKCksIGRlc3RpbmF0aW9uQ29udGV4dCk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IGRl
c3RpbmF0aW9uQ29udGV4dC5jcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIocGFpbnRSZWN0LnNp
emUoKSk7CiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KaW5kZXggNmM5NGU5MmUw
ZmZmODQwMTNmMWE2ZWM2ODI5YzdlOTAwYTIwMDc4Zi4uZTQ3YTY2ZDBmMzBmMmFhNDdjMDQ0OGIx
ZDFkZDRhNDE2YmZjNjYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZU1hYy5tbQpAQCAtOTk2LDcgKzk5Niw3IEBAIHZvaWQgUmVuZGVyVGhlbWVNYWM6OnBhaW50TGlz
dEJ1dHRvbkZvcklucHV0KGNvbnN0IFJlbmRlck9iamVjdCYgbywgR3JhcGhpY3NDb250CiAKICAg
ICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IG8uZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3Rv
cigpOwogCi0gICAgYXV0byBjb21ib0JveEltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0
ZUNvbXBhdGlibGVCdWZmZXIoY29tYm9Cb3hTaXplLCBkZXZpY2VTY2FsZUZhY3RvciwgRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKCksIGNvbnRleHQpOworICAgIGF1dG8gY29tYm9Cb3hJbWFn
ZUJ1ZmZlciA9IGNvbnRleHQuY3JlYXRlSW1hZ2VCdWZmZXIoY29tYm9Cb3hTaXplLCB7IGRldmlj
ZVNjYWxlRmFjdG9yLCBkZXZpY2VTY2FsZUZhY3RvciB9KTsKICAgICBpZiAoIWNvbWJvQm94SW1h
Z2VCdWZmZXIpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTAyMCw3ICsxMDIwLDcgQEAgdm9pZCBS
ZW5kZXJUaGVtZU1hYzo6cGFpbnRMaXN0QnV0dG9uRm9ySW5wdXQoY29uc3QgUmVuZGVyT2JqZWN0
JiBvLCBHcmFwaGljc0NvbnQKICAgICAgICAgKF9fYnJpZGdlIE5TU3RyaW5nICopa0NVSVVzZXJJ
bnRlcmZhY2VMYXlvdXREaXJlY3Rpb25LZXkgOiAoX19icmlkZ2UgTlNTdHJpbmcgKilrQ1VJVXNl
ckludGVyZmFjZUxheW91dERpcmVjdGlvbkxlZnRUb1JpZ2h0LAogICAgIH1dOwogCi0gICAgYXV0
byBjb21ib0JveEJ1dHRvbkltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGli
bGVCdWZmZXIoZGVzaXJlZENvbWJvQm94QnV0dG9uU2l6ZSwgZGV2aWNlU2NhbGVGYWN0b3IsIERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBjb250ZXh0KTsKKyAgICBhdXRvIGNvbWJvQm94
QnV0dG9uSW1hZ2VCdWZmZXIgPSBjb250ZXh0LmNyZWF0ZUltYWdlQnVmZmVyKGRlc2lyZWRDb21i
b0JveEJ1dHRvblNpemUsIHsgZGV2aWNlU2NhbGVGYWN0b3IsIGRldmljZVNjYWxlRmFjdG9yIH0p
OwogICAgIGlmICghY29tYm9Cb3hCdXR0b25JbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwog
CkBAIC0xMzc5LDcgKzEzNzksNyBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludFByb2dyZXNz
QmFyKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyT2JqZWN0LCBjb25zdCBQYQogICAgIGNvbnN0
IGF1dG8mIHJlbmRlclByb2dyZXNzID0gZG93bmNhc3Q8UmVuZGVyUHJvZ3Jlc3M+KHJlbmRlck9i
amVjdCk7CiAgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSByZW5kZXJPYmplY3QuZG9jdW1l
bnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpOwogICAgIGJvb2wgaXNJbmRldGVybWluYXRlID0gcmVu
ZGVyUHJvZ3Jlc3MucG9zaXRpb24oKSA8IDA7Ci0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdl
QnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGluZmxhdGVkUmVjdC5zaXplKCksIGRldmlj
ZVNjYWxlRmFjdG9yLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgcGFpbnRJbmZvLmNv
bnRleHQoKSk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IHBhaW50SW5mby5jb250ZXh0KCkuY3Jl
YXRlSW1hZ2VCdWZmZXIoaW5mbGF0ZWRSZWN0LnNpemUoKSwgeyBkZXZpY2VTY2FsZUZhY3Rvciwg
ZGV2aWNlU2NhbGVGYWN0b3IgfSk7CiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0
dXJuIHRydWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcAppbmRleCBkYTBkNTZjZDI3MDkwNDY0NzhkMDIy
NGU4MjMwNDIwYTMxMjZhZGEwLi5jNDE1ZTM2OTBhYjE1MGFjNGNhYmJiMjQ4NjgwZjJmZTBlYTMy
NTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlQ2xpcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCkBAIC0zLDYgKzMsNyBAQAogICogQ29weXJpZ2h0IChD
KSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAg
KiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMDktMjAxMC4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMSBEaXJrIFNjaHVsemUgPGty
aXRAd2Via2l0Lm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTE1Miw5ICsxNTMsMTMgQEAgYm9v
bCBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OmFwcGx5Q2xpcHBpbmdUb0NvbnRleHQoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LAogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIEFmZmluZVRy
YW5zZm9ybSBhYnNvbHV0ZVRyYW5zZm9ybSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNhbGN1bGF0
ZVRyYW5zZm9ybWF0aW9uVG9PdXRlcm1vc3RDb29yZGluYXRlU3lzdGVtKHJlbmRlcmVyKTsKKwog
ICAgIGlmICghY2xpcHBlckRhdGEuaXNWYWxpZEZvckdlb21ldHJ5KG9iamVjdEJvdW5kaW5nQm94
LCBjbGlwcGVkQ29udGVudEJvdW5kcywgYWJzb2x1dGVUcmFuc2Zvcm0pKSB7CisgICAgICAgIC8v
IElnbm9yZSAyRCByb3RhdGlvbiwgYXMgaXQgZG9lc24ndCBhZmZlY3QgdGhlIHNpemUgb2YgdGhl
IG1hc2suCisgICAgICAgIEZsb2F0U2l6ZSBzY2FsZShhYnNvbHV0ZVRyYW5zZm9ybS54U2NhbGUo
KSwgYWJzb2x1dGVUcmFuc2Zvcm0ueVNjYWxlKCkpOworCiAgICAgICAgIC8vIEZJWE1FICgxNDk0
NjkpOiBUaGlzIGltYWdlIGJ1ZmZlciBzaG91bGQgbm90IGJlIHVuY29uZGl0aW9uYWxseSB1bmFj
Y2VsZXJhdGVkLiBNYWtpbmcgaXQgbWF0Y2ggdGhlIGNvbnRleHQgYnJlYWtzIG5lc3RlZCBjbGlw
cGluZywgdGhvdWdoLgotICAgICAgICBhdXRvIG1hc2tJbWFnZSA9IFNWR1JlbmRlcmluZ0NvbnRl
eHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNsaXBwZWRDb250ZW50Qm91bmRzLCBhYnNvbHV0ZVRyYW5z
Zm9ybSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFJlbmRlcmluZ01vZGU6OlVuYWNj
ZWxlcmF0ZWQsIGhvc3RXaW5kb3coKSk7CisgICAgICAgIGF1dG8gbWFza0ltYWdlID0gY29udGV4
dC5jcmVhdGVJbWFnZUJ1ZmZlcihjbGlwcGVkQ29udGVudEJvdW5kcywgc2NhbGUsIERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkKTsKICAg
ICAgICAgaWYgKCFtYXNrSW1hZ2UpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZp
bHRlci5jcHAKaW5kZXggNzg2NWE1ODVhNDdlZmQ4MjQ2MTc1MWY5ZmZhOWExZDFiMWIyNzE0OS4u
Yjk2MzYyYzk3YTNiNDAzZDVlNDA0YjJjY2YzODcwNGQ5YTk2MjQ4NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5j
cHAKQEAgLTQsNiArNCw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDUgRXJpYyBTZWlkZWwgPGVy
aWNAd2Via2l0Lm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwOSBEaXJrIFNjaHVsemUgPGtyaXRA
d2Via2l0Lm9yZz4KICAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQg
MjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMS0yMDIyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMTQ2
LDIzICsxNDcsMjEgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6YXBwbHlSZXNvdXJj
ZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgUmVuZGUKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KIAotICAgIC8vIENoYW5nZSB0aGUgY29vcmRpbmF0ZSB0cmFuc2Zvcm1hdGlv
biBhcHBsaWVkIHRvIHRoZSBmaWx0ZXJlZCBlbGVtZW50IHRvIHJlZmxlY3QgdGhlIHJlc29sdXRp
b24gb2YgdGhlIGZpbHRlci4KLSAgICBhdXRvIGVmZmVjdGl2ZVRyYW5zZm9ybSA9IEFmZmluZVRy
YW5zZm9ybShmaWx0ZXJTY2FsZS53aWR0aCgpLCAwLCAwLCBmaWx0ZXJTY2FsZS5oZWlnaHQoKSwg
MCwgMCk7Ci0KICNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfTElORUFSX1NSR0Ip
CiAgICAgYXV0byBjb2xvclNwYWNlID0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdC
KCk7CiAjZWxzZQogICAgIGF1dG8gY29sb3JTcGFjZSA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQigpOwogI2VuZGlmCi0gICAgYXV0byBzb3VyY2VHcmFwaGljID0gU1ZHUmVuZGVyaW5nQ29u
dGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoZmlsdGVyRGF0YS0+ZHJhd2luZ1JlZ2lvbiwgZWZmZWN0
aXZlVHJhbnNmb3JtLCBjb2xvclNwYWNlLCBmaWx0ZXJEYXRhLT5maWx0ZXItPnJlbmRlcmluZ01v
ZGUoKSwgcmVuZGVyZXIuaG9zdFdpbmRvdygpKTsKKworICAgIGF1dG8gc291cmNlR3JhcGhpYyA9
IGNvbnRleHQtPmNyZWF0ZUltYWdlQnVmZmVyKGZpbHRlckRhdGEtPmRyYXdpbmdSZWdpb24sIGZp
bHRlclNjYWxlLCBjb2xvclNwYWNlLCBmaWx0ZXJEYXRhLT5maWx0ZXItPnJlbmRlcmluZ01vZGUo
KSk7CiAgICAgaWYgKCFzb3VyY2VHcmFwaGljKSB7CiAgICAgICAgIEFTU0VSVChtX3JlbmRlcmVy
RmlsdGVyRGF0YU1hcC5jb250YWlucygmcmVuZGVyZXIpKTsKICAgICAgICAgZmlsdGVyRGF0YS0+
c2F2ZWRDb250ZXh0ID0gY29udGV4dDsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAg
ICAKKwogICAgIGF1dG8mIHNvdXJjZUdyYXBoaWNDb250ZXh0ID0gc291cmNlR3JhcGhpYy0+Y29u
dGV4dCgpOwotICAKKwogICAgIGZpbHRlckRhdGEtPnNvdXJjZUdyYXBoaWNCdWZmZXIgPSBXVEZN
b3ZlKHNvdXJjZUdyYXBoaWMpOwogICAgIGZpbHRlckRhdGEtPnNhdmVkQ29udGV4dCA9IGNvbnRl
eHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VHcmFkaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlR3JhZGllbnQuY3BwCmluZGV4IDQ0NzVhNjlmOGYyYzk2NmY2M2MzMTgzZjMy
ZWYxNTQ4NWE4NGFjMmIuLmIxYzA0NDRhYTkzNjA3NGY1YWU5M2Q1ODlkNWVkNGIxZjgwOTVkNjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VHcmFkaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZUdyYWRpZW50LmNwcApAQCAtNjAsNyArNjAsMTAgQEAgc3RhdGljIGlubGluZSBi
b29sIGNyZWF0ZU1hc2tBbmRTd2FwQ29udGV4dEZvclRleHRHcmFkaWVudChHcmFwaGljc0NvbnRl
eHQqJiBjb24KICAgICBBZmZpbmVUcmFuc2Zvcm0gYWJzb2x1dGVUcmFuc2Zvcm0gPSBTVkdSZW5k
ZXJpbmdDb250ZXh0OjpjYWxjdWxhdGVUcmFuc2Zvcm1hdGlvblRvT3V0ZXJtb3N0Q29vcmRpbmF0
ZVN5c3RlbSgqdGV4dFJvb3RCbG9jayk7CiAgICAgRmxvYXRSZWN0IHJlcGFpbnRSZWN0ID0gdGV4
dFJvb3RCbG9jay0+cmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKTsKIAotICAgIGF1dG8g
bWFza0ltYWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIocmVwYWlu
dFJlY3QsIGFic29sdXRlVHJhbnNmb3JtLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwg
Y29udGV4dC0+cmVuZGVyaW5nTW9kZSgpLCByZW5kZXJlci5ob3N0V2luZG93KCkpOworICAgIC8v
IElnbm9yZSAyRCByb3RhdGlvbiwgYXMgaXQgZG9lc24ndCBhZmZlY3QgdGhlIHNpemUgb2YgdGhl
IG1hc2suCisgICAgRmxvYXRTaXplIHNjYWxlKGFic29sdXRlVHJhbnNmb3JtLnhTY2FsZSgpLCBh
YnNvbHV0ZVRyYW5zZm9ybS55U2NhbGUoKSk7CisKKyAgICBhdXRvIG1hc2tJbWFnZSA9IGNvbnRl
eHQtPmNyZWF0ZUltYWdlQnVmZmVyKHJlcGFpbnRSZWN0LCBzY2FsZSk7CiAgICAgaWYgKCFtYXNr
SW1hZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNwcAppbmRleCA3NjRm
N2M4ODhmMzJiZjE5NThhZWJlMmI3ZTYxYTUxOTk5YzI5ODUwLi5lMDYxZjUwM2MxNjBlMjdlYjJi
YWUwY2U0ODYzMzZiNTJhMmFjNDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNwcApAQCAtMSw1ICsxLDYgQEAK
IC8qCiAgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMDktMjAx
MC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTgyLDkgKzgzLDEx
IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmFwcGx5UmVzb3VyY2UoUmVuZGVyRWxl
bWVudCYgcmVuZGVyZXIsIGNvbnN0IFJlbmRlCiAgICAgICAgICAgICBkcmF3Q29sb3JTcGFjZSA9
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQigpOwogICAgICAgICB9CiAjZW5kaWYK
KyAgICAgICAgLy8gSWdub3JlIDJEIHJvdGF0aW9uLCBhcyBpdCBkb2Vzbid0IGFmZmVjdCB0aGUg
c2l6ZSBvZiB0aGUgbWFzay4KKyAgICAgICAgRmxvYXRTaXplIHNjYWxlKGFic29sdXRlVHJhbnNm
b3JtLnhTY2FsZSgpLCBhYnNvbHV0ZVRyYW5zZm9ybS55U2NhbGUoKSk7CiAKICAgICAgICAgLy8g
RklYTUUgKDE0OTQ3MCk6IFRoaXMgaW1hZ2UgYnVmZmVyIHNob3VsZCBub3QgYmUgdW5jb25kaXRp
b25hbGx5IHVuYWNjZWxlcmF0ZWQuIE1ha2luZyBpdCBtYXRjaCB0aGUgY29udGV4dCBicmVha3Mg
YWxwaGEgbWFza2luZywgdGhvdWdoLgotICAgICAgICBtYXNrZXJEYXRhLT5tYXNrSW1hZ2UgPSBT
VkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihyZXBhaW50UmVjdCwgYWJzb2x1
dGVUcmFuc2Zvcm0sIG1hc2tDb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVk
LCBob3N0V2luZG93KCkpOworICAgICAgICBtYXNrZXJEYXRhLT5tYXNrSW1hZ2UgPSBjb250ZXh0
LT5jcmVhdGVJbWFnZUJ1ZmZlcihyZXBhaW50UmVjdCwgc2NhbGUsIG1hc2tDb2xvclNwYWNlLCBS
ZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkKTsKICAgICAgICAgaWYgKCFtYXNrZXJEYXRhLT5t
YXNrSW1hZ2UpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcApp
bmRleCBlOGI1MWNmYjkzOTQ5MjYzODFlZjNiMDRhM2UxN2E1ZmQxNWMwODZiLi44MDBiNWI1NTU2
M2E5ZDg3NzU4OTZmNDVlYzI3Y2EyNDk2YmNhMmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCkBAIC0x
LDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4g
PHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9u
IExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAy
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAg
LTk1LDE5ICs5NiwxNiBAQCBQYXR0ZXJuRGF0YSogUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpi
dWlsZFBhdHRlcm4oUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIE9wdAogICAgIGlmICghYnVpbGRU
aWxlSW1hZ2VUcmFuc2Zvcm0ocmVuZGVyZXIsIG1fYXR0cmlidXRlcywgcGF0dGVybkVsZW1lbnQo
KSwgdGlsZUJvdW5kYXJpZXMsIHRpbGVJbWFnZVRyYW5zZm9ybSkpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCi0gICAgQWZmaW5lVHJhbnNmb3JtIGFic29sdXRlVHJhbnNmb3JtSWdub3JpbmdS
b3RhdGlvbiA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNhbGN1bGF0ZVRyYW5zZm9ybWF0aW9uVG9P
dXRlcm1vc3RDb29yZGluYXRlU3lzdGVtKHJlbmRlcmVyKTsKKyAgICBhdXRvIGFic29sdXRlVHJh
bnNmb3JtID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2FsY3VsYXRlVHJhbnNmb3JtYXRpb25Ub091
dGVybW9zdENvb3JkaW5hdGVTeXN0ZW0ocmVuZGVyZXIpOwogCiAgICAgLy8gSWdub3JlIDJEIHJv
dGF0aW9uLCBhcyBpdCBkb2Vzbid0IGFmZmVjdCB0aGUgc2l6ZSBvZiB0aGUgdGlsZS4KLSAgICBT
VkdSZW5kZXJpbmdDb250ZXh0OjpjbGVhcjJEUm90YXRpb24oYWJzb2x1dGVUcmFuc2Zvcm1JZ25v
cmluZ1JvdGF0aW9uKTsKLSAgICBGbG9hdFJlY3QgYWJzb2x1dGVUaWxlQm91bmRhcmllcyA9IGFi
c29sdXRlVHJhbnNmb3JtSWdub3JpbmdSb3RhdGlvbi5tYXBSZWN0KHRpbGVCb3VuZGFyaWVzKTsK
LSAgICBGbG9hdFJlY3QgY2xhbXBlZEFic29sdXRlVGlsZUJvdW5kYXJpZXM7CisgICAgRmxvYXRT
aXplIHRpbGVTY2FsZShhYnNvbHV0ZVRyYW5zZm9ybS54U2NhbGUoKSwgYWJzb2x1dGVUcmFuc2Zv
cm0ueVNjYWxlKCkpOwogCiAgICAgLy8gU2NhbGUgdGhlIHRpbGUgc2l6ZSB0byBtYXRjaCB0aGUg
c2NhbGUgbGV2ZWwgb2YgdGhlIHBhdHRlcm5UcmFuc2Zvcm0uCi0gICAgYWJzb2x1dGVUaWxlQm91
bmRhcmllcy5zY2FsZShzdGF0aWNfY2FzdDxmbG9hdD4obV9hdHRyaWJ1dGVzLnBhdHRlcm5UcmFu
c2Zvcm0oKS54U2NhbGUoKSksCi0gICAgICAgIHN0YXRpY19jYXN0PGZsb2F0PihtX2F0dHJpYnV0
ZXMucGF0dGVyblRyYW5zZm9ybSgpLnlTY2FsZSgpKSk7CisgICAgdGlsZVNjYWxlLnNjYWxlKHN0
YXRpY19jYXN0PGZsb2F0PihtX2F0dHJpYnV0ZXMucGF0dGVyblRyYW5zZm9ybSgpLnhTY2FsZSgp
KSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fYXR0cmlidXRlcy5wYXR0ZXJuVHJhbnNmb3JtKCkueVNj
YWxlKCkpKTsKIAogICAgIC8vIEJ1aWxkIHRpbGUgaW1hZ2UuCi0gICAgYXV0byB0aWxlSW1hZ2Ug
PSBjcmVhdGVUaWxlSW1hZ2UobV9hdHRyaWJ1dGVzLCB0aWxlQm91bmRhcmllcywgYWJzb2x1dGVU
aWxlQm91bmRhcmllcywgdGlsZUltYWdlVHJhbnNmb3JtLCBjbGFtcGVkQWJzb2x1dGVUaWxlQm91
bmRhcmllcywgY29udGV4dC5yZW5kZXJpbmdNb2RlKCkpOworICAgIGF1dG8gdGlsZUltYWdlID0g
Y3JlYXRlVGlsZUltYWdlKGNvbnRleHQsIHRpbGVCb3VuZGFyaWVzLnNpemUoKSwgdGlsZVNjYWxl
LCB0aWxlSW1hZ2VUcmFuc2Zvcm0sIG1fYXR0cmlidXRlcyk7CiAgICAgaWYgKCF0aWxlSW1hZ2Up
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0yMzQsMjUgKzIzMiwzMCBAQCBib29sIFJl
bmRlclNWR1Jlc291cmNlUGF0dGVybjo6YnVpbGRUaWxlSW1hZ2VUcmFuc2Zvcm0oUmVuZGVyRWxl
bWVudCYgcmVuZGVyZXIsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVJlZlB0cjxJbWFnZUJ1ZmZl
cj4gUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpjcmVhdGVUaWxlSW1hZ2UoY29uc3QgUGF0dGVy
bkF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZUJvdW5kYXJpZXMs
IGNvbnN0IEZsb2F0UmVjdCYgYWJzb2x1dGVUaWxlQm91bmRhcmllcywgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiB0aWxlSW1hZ2VUcmFuc2Zvcm0sIEZsb2F0UmVjdCYgY2xhbXBlZEFic29sdXRlVGls
ZUJvdW5kYXJpZXMsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSkgY29uc3QKK1JlZlB0cjxJ
bWFnZUJ1ZmZlcj4gUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpjcmVhdGVUaWxlSW1hZ2UoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IEZsb2F0
U2l6ZSYgc2NhbGUsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtLCBjb25zdCBQYXR0
ZXJuQXR0cmlidXRlcyYgYXR0cmlidXRlcykgY29uc3QKIHsKLSAgICBjbGFtcGVkQWJzb2x1dGVU
aWxlQm91bmRhcmllcyA9IEltYWdlQnVmZmVyOjpjbGFtcGVkUmVjdChhYnNvbHV0ZVRpbGVCb3Vu
ZGFyaWVzKTsKLSAgICBhdXRvIHRpbGVJbWFnZSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0
ZUltYWdlQnVmZmVyKGFic29sdXRlVGlsZUJvdW5kYXJpZXMsIGNsYW1wZWRBYnNvbHV0ZVRpbGVC
b3VuZGFyaWVzLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgcmVuZGVyaW5nTW9kZSwg
aG9zdFdpbmRvdygpKTsKKyAgICAvLyBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gbWFraW5nIGNyZWF0
ZUltYWdlQnVmZmVyKCkgdXNlIHJvdW5kZWRJbnRTaXplKCkuCisgICAgYXV0byByb3VuZGVkVW5z
Y2FsZWRJbWFnZUJ1ZmZlclNpemUgPSBbXShjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IEZs
b2F0U2l6ZSYgc2NhbGUpIC0+IEZsb2F0U2l6ZSB7CisgICAgICAgIGF1dG8gc2NhbGVkU2l6ZSA9
IHNpemUgKiBzY2FsZTsKKyAgICAgICAgcmV0dXJuIHNpemUgLSAoZXhwYW5kZWRJbnRTaXplKHNj
YWxlZFNpemUpIC0gcm91bmRlZEludFNpemUoc2NhbGVkU2l6ZSkpICogKHNjYWxlZFNpemUgLSBm
bG9vcmVkSW50U2l6ZShzY2FsZWRTaXplKSkgLyBzY2FsZTsKKyAgICB9OworCisgICAgYXV0byB0
aWxlU2l6ZSA9IHJvdW5kZWRVbnNjYWxlZEltYWdlQnVmZmVyU2l6ZShzaXplLCBzY2FsZSk7CisK
KyAgICAvLyBGSVhNRTogVXNlIGNyZWF0ZUltYWdlQnVmZmVyKHJlY3QsIHNjYWxlKSwgZGVsZXRl
IHRoZSBhYm92ZSBjYWxjdWxhdGlvbnMgYW5kIGZpeCAndHJhbnNmb3JtJworICAgIGF1dG8gdGls
ZUltYWdlID0gY29udGV4dC5jcmVhdGVJbWFnZUJ1ZmZlcih0aWxlU2l6ZSwgc2NhbGUpOwogICAg
IGlmICghdGlsZUltYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEdyYXBoaWNz
Q29udGV4dCYgdGlsZUltYWdlQ29udGV4dCA9IHRpbGVJbWFnZS0+Y29udGV4dCgpOwogCi0gICAg
Ly8gVGhlIGltYWdlIGJ1ZmZlciByZXByZXNlbnRzIHRoZSBmaW5hbCByZW5kZXJlZCBzaXplLCBz
byB0aGUgY29udGVudCBoYXMgdG8gYmUgc2NhbGVkICh0byBhdm9pZCBwaXhlbGF0aW9uKS4KLSAg
ICB0aWxlSW1hZ2VDb250ZXh0LnNjYWxlKGNsYW1wZWRBYnNvbHV0ZVRpbGVCb3VuZGFyaWVzLnNp
emUoKSAvIHRpbGVCb3VuZGFyaWVzLnNpemUoKSk7Ci0KICAgICAvLyBBcHBseSB0aWxlIGltYWdl
IHRyYW5zZm9ybWF0aW9ucy4KLSAgICBpZiAoIXRpbGVJbWFnZVRyYW5zZm9ybS5pc0lkZW50aXR5
KCkpCi0gICAgICAgIHRpbGVJbWFnZUNvbnRleHQuY29uY2F0Q1RNKHRpbGVJbWFnZVRyYW5zZm9y
bSk7CisgICAgaWYgKCF0cmFuc2Zvcm0uaXNJZGVudGl0eSgpKQorICAgICAgICB0aWxlSW1hZ2VD
b250ZXh0LmNvbmNhdENUTSh0cmFuc2Zvcm0pOwogCiAgICAgQWZmaW5lVHJhbnNmb3JtIGNvbnRl
bnRUcmFuc2Zvcm1hdGlvbjsKICAgICBpZiAoYXR0cmlidXRlcy5wYXR0ZXJuQ29udGVudFVuaXRz
KCkgPT0gU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YKQotICAg
ICAgICBjb250ZW50VHJhbnNmb3JtYXRpb24gPSB0aWxlSW1hZ2VUcmFuc2Zvcm07CisgICAgICAg
IGNvbnRlbnRUcmFuc2Zvcm1hdGlvbiA9IHRyYW5zZm9ybTsKIAogICAgIC8vIERyYXcgdGhlIGNv
bnRlbnQgaW50byB0aGUgSW1hZ2VCdWZmZXIuCiAgICAgZm9yIChhdXRvJiBjaGlsZCA6IGNoaWxk
cmVuT2ZUeXBlPFNWR0VsZW1lbnQ+KCphdHRyaWJ1dGVzLnBhdHRlcm5Db250ZW50RWxlbWVudCgp
KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZVBhdHRlcm4uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VQYXR0ZXJuLmgKaW5kZXggNzExN2YxMjdkMGRkZDczYmE1ZWJjNTU5OTAxMGMyNGJi
NjJmMDhhNi4uOWMzMjAxZWI5YzI0MWFmNWNlYWQxZTcwMWY5YWUxNDJhNjJiYTFjZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRl
cm4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
UGF0dGVybi5oCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNiBOaWtv
bGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgUmVz
ZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKQEAgLTYxLDcgKzYyLDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgYnVpbGRU
aWxlSW1hZ2VUcmFuc2Zvcm0oUmVuZGVyRWxlbWVudCYsIGNvbnN0IFBhdHRlcm5BdHRyaWJ1dGVz
JiwgY29uc3QgU1ZHUGF0dGVybkVsZW1lbnQmLCBGbG9hdFJlY3QmIHBhdHRlcm5Cb3VuZGFyaWVz
LCBBZmZpbmVUcmFuc2Zvcm0mIHRpbGVJbWFnZVRyYW5zZm9ybSkgY29uc3Q7CiAKLSAgICBSZWZQ
dHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZVRpbGVJbWFnZShjb25zdCBQYXR0ZXJuQXR0cmlidXRlcyYs
IGNvbnN0IEZsb2F0UmVjdCYgdGlsZUJvdW5kYXJpZXMsIGNvbnN0IEZsb2F0UmVjdCYgYWJzb2x1
dGVUaWxlQm91bmRhcmllcywgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0aWxlSW1hZ2VUcmFuc2Zv
cm0sIEZsb2F0UmVjdCYgY2xhbXBlZEFic29sdXRlVGlsZUJvdW5kYXJpZXMsIFJlbmRlcmluZ01v
ZGUpIGNvbnN0OworICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlVGlsZUltYWdlKEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0U2l6ZSYgc2NhbGUsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IFBhdHRlcm5BdHRyaWJ1dGVzJikgY29uc3Q7CiAK
ICAgICBQYXR0ZXJuRGF0YSogYnVpbGRQYXR0ZXJuKFJlbmRlckVsZW1lbnQmLCBPcHRpb25TZXQ8
UmVuZGVyU1ZHUmVzb3VyY2VNb2RlPiwgR3JhcGhpY3NDb250ZXh0Jik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4
IGYwOGU4NzJkMjg2NmFlNTM0MjQ4NmUzYzlmOTk4ZWRjOTQ0OTg0YjkuLjk3M2NmZDM3NTFmZTNl
NGZmZThiMjA4ZTNhMTljYTk4ZjIzMzU0ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMjI3LDUyICsyMjcsNiBA
QCBBZmZpbmVUcmFuc2Zvcm0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2FsY3VsYXRlVHJhbnNmb3Jt
YXRpb25Ub091dGVybW9zdENvb3JkaW5hdAogICAgIHJldHVybiBhYnNvbHV0ZVRyYW5zZm9ybTsK
IH0KIAotUmVmUHRyPEltYWdlQnVmZmVyPiBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFn
ZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgYWJzb2x1dGVUcmFuc2Zvcm0sIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JT
cGFjZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlLCBjb25zdCBIb3N0V2luZG93KiBob3N0
V2luZG93KQotewotICAgIEludFJlY3QgcGFpbnRSZWN0ID0gY2FsY3VsYXRlSW1hZ2VCdWZmZXJS
ZWN0KHRhcmdldFJlY3QsIGFic29sdXRlVHJhbnNmb3JtKTsKLSAgICAvLyBEb24ndCBjcmVhdGUg
ZW1wdHkgSW1hZ2VCdWZmZXJzLgotICAgIGlmIChwYWludFJlY3QuaXNFbXB0eSgpKQotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLQotICAgIEZsb2F0U2l6ZSBzY2FsZSgxLCAxKTsKLSAgICBGbG9h
dFNpemUgY2xhbXBlZFNpemUgPSBwYWludFJlY3Quc2l6ZSgpOwotICAgIGlmIChJbWFnZUJ1ZmZl
cjo6c2l6ZU5lZWRzQ2xhbXBpbmcoY2xhbXBlZFNpemUsIHNjYWxlKSkKLSAgICAgICAgY2xhbXBl
ZFNpemUgPSBjbGFtcGVkU2l6ZSAqIHNjYWxlOwotCi0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IElt
YWdlQnVmZmVyOjpjcmVhdGUoY2xhbXBlZFNpemUsIHJlbmRlcmluZ01vZGUsIFNob3VsZFVzZURp
c3BsYXlMaXN0OjpObywgUmVuZGVyaW5nUHVycG9zZTo6RE9NLCAxLCBjb2xvclNwYWNlLCBQaXhl
bEZvcm1hdDo6QkdSQTgsIGhvc3RXaW5kb3cpOwotICAgIGlmICghaW1hZ2VCdWZmZXIpCi0gICAg
ICAgIHJldHVybiBudWxscHRyOwotCi0gICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybTsKLSAg
ICB0cmFuc2Zvcm0uc2NhbGUoc2NhbGUpLnRyYW5zbGF0ZSgtcGFpbnRSZWN0LmxvY2F0aW9uKCkp
Lm11bHRpcGx5KGFic29sdXRlVHJhbnNmb3JtKTsKLQotICAgIEdyYXBoaWNzQ29udGV4dCYgaW1h
Z2VDb250ZXh0ID0gaW1hZ2VCdWZmZXItPmNvbnRleHQoKTsKLSAgICBpbWFnZUNvbnRleHQuY29u
Y2F0Q1RNKHRyYW5zZm9ybSk7Ci0KLSAgICByZXR1cm4gaW1hZ2VCdWZmZXI7Ci19Ci0KLVJlZlB0
cjxJbWFnZUJ1ZmZlcj4gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29u
c3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGNsYW1wZWRSZWN0LCBj
b25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUgcmVu
ZGVyaW5nTW9kZSwgY29uc3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKLXsKLSAgICBJbnRTaXpl
IGNsYW1wZWRTaXplID0gcm91bmRlZEludFNpemUoY2xhbXBlZFJlY3Quc2l6ZSgpKTsKLSAgICBG
bG9hdFNpemUgdW5jbGFtcGVkU2l6ZSA9IHJvdW5kZWRJbnRTaXplKHRhcmdldFJlY3Quc2l6ZSgp
KTsKLQotICAgIC8vIERvbid0IGNyZWF0ZSBlbXB0eSBJbWFnZUJ1ZmZlcnMuCi0gICAgaWYgKGNs
YW1wZWRTaXplLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBhdXRv
IGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjbGFtcGVkU2l6ZSwgcmVuZGVyaW5n
TW9kZSwgU2hvdWxkVXNlRGlzcGxheUxpc3Q6Ok5vLCBSZW5kZXJpbmdQdXJwb3NlOjpET00sIDEs
IGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCwgaG9zdFdpbmRvdyk7Ci0gICAgaWYgKCFp
bWFnZUJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBHcmFwaGljc0NvbnRl
eHQmIGltYWdlQ29udGV4dCA9IGltYWdlQnVmZmVyLT5jb250ZXh0KCk7Ci0KLSAgICAvLyBDb21w
ZW5zYXRlIHJvdW5kaW5nIGVmZmVjdHMsIGFzIHRoZSBhYnNvbHV0ZSB0YXJnZXQgcmVjdCBpcyB1
c2luZyBmbG9hdGluZy1wb2ludCBudW1iZXJzIGFuZCB0aGUgaW1hZ2UgYnVmZmVyIHNpemUgaXMg
aW50ZWdlci4KLSAgICBpbWFnZUNvbnRleHQuc2NhbGUodW5jbGFtcGVkU2l6ZSAvIHRhcmdldFJl
Y3Quc2l6ZSgpKTsKLQotICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsKLX0KLQogdm9pZCBTVkdSZW5k
ZXJpbmdDb250ZXh0OjpyZW5kZXJTdWJ0cmVlVG9Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgUmVuZGVyRWxlbWVudCYgaXRlbSwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBzdWJ0cmVl
Q29udGVudFRyYW5zZm9ybWF0aW9uKQogewogICAgIC8vIFJlbmRlcmluZyBpbnRvIGEgYnVmZmVy
IGltcGxpZXMgd2UncmUgYmVpbmcgdXNlZCBmb3IgbWFza2luZywgY2xpcHBpbmcsIHBhdHRlcm5z
IG9yIGZpbHRlcnMuIEluIGVhY2ggb2YgdGhlc2UKQEAgLTMwOCwxNCArMjYyLDYgQEAgdm9pZCBT
VkdSZW5kZXJpbmdDb250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcihHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEFmZmkKICAgICAgICAgaW1hZ2VCdWZmZXIgPSBudWxscHRyOwogfQogCi12
b2lkIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNsZWFyMkRSb3RhdGlvbihBZmZpbmVUcmFuc2Zvcm0m
IHRyYW5zZm9ybSkKLXsKLSAgICBBZmZpbmVUcmFuc2Zvcm06OkRlY29tcG9zZWRUeXBlIGRlY29t
cG9zaXRpb247Ci0gICAgdHJhbnNmb3JtLmRlY29tcG9zZShkZWNvbXBvc2l0aW9uKTsKLSAgICBk
ZWNvbXBvc2l0aW9uLmFuZ2xlID0gMDsKLSAgICB0cmFuc2Zvcm0ucmVjb21wb3NlKGRlY29tcG9z
aXRpb24pOwotfQotCiBib29sIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmJ1ZmZlckZvcmVncm91bmQo
UmVmUHRyPEltYWdlQnVmZmVyPiYgaW1hZ2VCdWZmZXIpCiB7CiAgICAgQVNTRVJUKG1fcGFpbnRJ
bmZvKTsKQEAgLTMzMyw3ICsyNzksNyBAQCBib29sIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmJ1ZmZl
ckZvcmVncm91bmQoUmVmUHRyPEltYWdlQnVmZmVyPiYgaW1hZ2VCdWZmZXIpCiAKICAgICAvLyBD
cmVhdGUgYSBuZXcgYnVmZmVyIGFuZCBwYWludCB0aGUgZm9yZWdyb3VuZCBpbnRvIGl0LgogICAg
IGlmICghaW1hZ2VCdWZmZXIpIHsKLSAgICAgICAgaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihleHBhbmRlZEludFNpemUoYm91bmRpbmdCb3guc2l6ZSgp
KSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIG1fcGFpbnRJbmZvLT5jb250ZXh0KCkp
OworICAgICAgICBpbWFnZUJ1ZmZlciA9IG1fcGFpbnRJbmZvLT5jb250ZXh0KCkuY3JlYXRlQ29t
cGF0aWJsZUltYWdlQnVmZmVyKGV4cGFuZGVkSW50U2l6ZShib3VuZGluZ0JveC5zaXplKCkpKTsK
ICAgICAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmlu
Z0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29u
dGV4dC5oCmluZGV4IDA0NDc5OTNiOTg3ZTJmNTI0NzMzNDEwNTQ2ZjBhMGU1ZjQzNmQ0MmIuLmMx
NmIzNGFiNTg1OGRhMzMxMGJmYWU3ZDM2YzY1YmJkNjE5OWM0ODggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5oCkBAIC02MCwxNSAr
NjAsMTEgQEAgcHVibGljOgogICAgIHZvaWQgcHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVudChSZW5k
ZXJFbGVtZW50JiwgUGFpbnRJbmZvJiwgTmVlZHNHcmFwaGljc0NvbnRleHRTYXZlID0gRG9udFNh
dmVHcmFwaGljc0NvbnRleHQpOwogICAgIGJvb2wgaXNSZW5kZXJpbmdQcmVwYXJlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fcmVuZGVyaW5nRmxhZ3MgJiBSZW5kZXJpbmdQcmVwYXJlZDsgfQogCi0gICAg
c3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRS
ZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3Jt
LCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBIb3N0
V2luZG93KiA9IG51bGxwdHIpOwotICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0
ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBjbGFtcGVkUmVjdCwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgUmVuZGVyaW5nTW9k
ZSwgY29uc3QgSG9zdFdpbmRvdyogPSBudWxscHRyKTsKLQogICAgIHN0YXRpYyB2b2lkIHJlbmRl
clN1YnRyZWVUb0NvbnRleHQoR3JhcGhpY3NDb250ZXh0JiwgUmVuZGVyRWxlbWVudCYsIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYpOwogICAgIHN0YXRpYyB2b2lkIGNsaXBUb0ltYWdlQnVmZmVyKEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zvcm0s
IGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgUmVmUHRyPEltYWdlQnVmZmVyPiYsIGJvb2wg
c2FmZVRvQ2xlYXIpOwogCiAgICAgc3RhdGljIGZsb2F0IGNhbGN1bGF0ZVNjcmVlbkZvbnRTaXpl
U2NhbGluZ0ZhY3Rvcihjb25zdCBSZW5kZXJPYmplY3QmKTsKICAgICBzdGF0aWMgQWZmaW5lVHJh
bnNmb3JtIGNhbGN1bGF0ZVRyYW5zZm9ybWF0aW9uVG9PdXRlcm1vc3RDb29yZGluYXRlU3lzdGVt
KGNvbnN0IFJlbmRlck9iamVjdCYpOwotICAgIHN0YXRpYyB2b2lkIGNsZWFyMkRSb3RhdGlvbihB
ZmZpbmVUcmFuc2Zvcm0mKTsKIAogICAgIHN0YXRpYyBJbnRSZWN0IGNhbGN1bGF0ZUltYWdlQnVm
ZmVyUmVjdChjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgYWJzb2x1dGVUcmFuc2Zvcm0pCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdl
RWxlbWVudC5jcHAKaW5kZXggODdkMmVhNjY4ZjgwNTAyNTYzMjI5ZTUwYzRmNjE0ZDY3MzljMDRh
MC4uNGE5YzNjNDVhOTIzZWJkMmFiZGY1YTFmZDJkN2ZlNTA2MDc5NGQ0MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCkBAIC0xNzcsNiArMTc3LDM4IEBAIHZvaWQg
U1ZHRkVJbWFnZUVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzCiAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRB
bmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcGFyZW50UmVuZGVyZXIpOwogfQogCitzdGF0
aWMgaW5saW5lIEludFJlY3Qgc2NhbGVkSW1hZ2VCdWZmZXJSZWN0KGNvbnN0IEZsb2F0UmVjdCYg
cmVjdCwgY29uc3QgRmxvYXRTaXplJiBzY2FsZSkKK3sKKyAgICBhdXRvIHNjYWxlZFJlY3QgPSBy
ZWN0OworICAgIHNjYWxlZFJlY3Quc2NhbGUoc2NhbGUpOworICAgIHJldHVybiBlbmNsb3NpbmdJ
bnRSZWN0KHNjYWxlZFJlY3QpOworfQorCitzdGF0aWMgaW5saW5lIEZsb2F0U2l6ZSBjbGFtcGlu
Z1NjYWxlRm9ySW1hZ2VCdWZmZXJTaXplKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKK3sKKyAgICBG
bG9hdFNpemUgY2xhbXBpbmdTY2FsZSgxLCAxKTsKKyAgICBJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRz
Q2xhbXBpbmcoc2l6ZSwgY2xhbXBpbmdTY2FsZSk7CisgICAgcmV0dXJuIGNsYW1waW5nU2NhbGU7
Cit9CisKK3N0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRTaXplJiBzY2FsZSwgSG9zdFdpbmRvdyogaG9z
dFdpbmRvdykKK3sKKyAgICBhdXRvIHNjYWxlZFJlY3QgPSBzY2FsZWRJbWFnZUJ1ZmZlclJlY3Qo
cmVjdCwgc2NhbGUpOworICAgIGlmIChzY2FsZWRSZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIGNsYW1waW5nU2NhbGUgPSBjbGFtcGluZ1NjYWxlRm9y
SW1hZ2VCdWZmZXJTaXplKHNjYWxlZFJlY3Quc2l6ZSgpKTsKKworICAgIGF1dG8gaW1hZ2VCdWZm
ZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNjYWxlZFJlY3Quc2l6ZSgpICogY2xhbXBpbmdTY2Fs
ZSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgU2hvdWxkVXNlRGlzcGxheUxpc3Q6Ok5v
LCBSZW5kZXJpbmdQdXJwb3NlOjpET00sIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
LCBQaXhlbEZvcm1hdDo6QkdSQTgsIGhvc3RXaW5kb3cpOworICAgIGlmICghaW1hZ2VCdWZmZXIp
CisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgaW1hZ2VCdWZmZXItPmNvbnRleHQoKS5z
Y2FsZShjbGFtcGluZ1NjYWxlKTsKKyAgICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnRyYW5zbGF0
ZSgtc2NhbGVkUmVjdC5sb2NhdGlvbigpKTsKKyAgICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnNj
YWxlKHNjYWxlKTsKKyAgICByZXR1cm4gaW1hZ2VCdWZmZXI7Cit9CisKIHN0ZDo6dHVwbGU8UmVm
UHRyPEltYWdlQnVmZmVyPiwgRmxvYXRSZWN0PiBTVkdGRUltYWdlRWxlbWVudDo6aW1hZ2VCdWZm
ZXJGb3JFZmZlY3QoKSBjb25zdAogewogICAgIGF1dG8gdGFyZ2V0ID0gU1ZHVVJJUmVmZXJlbmNl
Ojp0YXJnZXRFbGVtZW50RnJvbUlSSVN0cmluZyhocmVmKCksIHRyZWVTY29wZSgpKTsKQEAgLTE5
NSwxMSArMjI3LDEyIEBAIHN0ZDo6dHVwbGU8UmVmUHRyPEltYWdlQnVmZmVyPiwgRmxvYXRSZWN0
PiBTVkdGRUltYWdlRWxlbWVudDo6aW1hZ2VCdWZmZXJGb3JFZmZlCiAgICAgaWYgKCFhYnNvbHV0
ZVRyYW5zZm9ybS5pc0ludmVydGlibGUoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGF1
dG8gc2hlYXJGcmVlQWJzb2x1dGVUcmFuc2Zvcm0gPSBBZmZpbmVUcmFuc2Zvcm0oYWJzb2x1dGVU
cmFuc2Zvcm0ueFNjYWxlKCksIDAsIDAsIGFic29sdXRlVHJhbnNmb3JtLnlTY2FsZSgpLCAwLCAw
KTsKLQorICAgIC8vIElnbm9yZSAyRCByb3RhdGlvbiwgYXMgaXQgZG9lc24ndCBhZmZlY3QgdGhl
IGltYWdlIHNpemUuCisgICAgRmxvYXRTaXplIHNjYWxlKGFic29sdXRlVHJhbnNmb3JtLnhTY2Fs
ZSgpLCBhYnNvbHV0ZVRyYW5zZm9ybS55U2NhbGUoKSk7CiAgICAgYXV0byBpbWFnZVJlY3QgPSBy
ZW5kZXJlci0+cmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKTsKIAotICAgIGF1dG8gaW1h
Z2VCdWZmZXIgPSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihpbWFnZVJl
Y3QsIHNoZWFyRnJlZUFic29sdXRlVHJhbnNmb3JtLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgcmVuZGVyZXItPmhvc3RXaW5kb3co
KSk7CisgICAgLy8gRklYTUU6IFJlcGxhY2UgdGhpcyBjYWxsIHdpdGggR3JhcGhpY3NDb250ZXh0
OjpjcmVhdGVJbWFnZUJ1ZmZlcigpIG9uY2UgdGhlIGRlc3RpbmF0aW9uIEdyYXBoaWNzQ29udGV4
dCBpcyBwYXNzZWQgdG8gdGhpcyBmdW5jdGlvbi4KKyAgICBhdXRvIGltYWdlQnVmZmVyID0gY3Jl
YXRlSW1hZ2VCdWZmZXIoaW1hZ2VSZWN0LCBzY2FsZSwgcmVuZGVyZXItPmhvc3RXaW5kb3coKSk7
CiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHsgfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKaW5kZXggZjQxNDAxMjMzODkxOTAzODdhZDI3
Njk2YTUwNTQ0NTRkZjg5MDI4YS4uNmJmZjg5NzZjNzhiY2JmMWY0YzMzMDM3YWJmN2JjNTI1YmRm
NDRkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCkBAIC0yNTAs
NyArMjUwLDcgQEAgdm9pZCBTVkdJbWFnZTo6ZHJhd1BhdHRlcm5Gb3JDb250YWluZXIoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFNpemUKICAgICBGbG9hdFJlY3QgaW1hZ2VC
dWZmZXJTaXplID0gem9vbWVkQ29udGFpbmVyUmVjdDsKICAgICBpbWFnZUJ1ZmZlclNpemUuc2Nh
bGUoaW1hZ2VCdWZmZXJTY2FsZS53aWR0aCgpLCBpbWFnZUJ1ZmZlclNjYWxlLmhlaWdodCgpKTsK
IAotICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIo
ZXhwYW5kZWRJbnRTaXplKGltYWdlQnVmZmVyU2l6ZS5zaXplKCkpLCAxLCBEZXN0aW5hdGlvbkNv
bG9yU3BhY2U6OlNSR0IoKSwgY29udGV4dCk7CisgICAgYXV0byBidWZmZXIgPSBjb250ZXh0LmNy
ZWF0ZUltYWdlQnVmZmVyKGV4cGFuZGVkSW50U2l6ZShpbWFnZUJ1ZmZlclNpemUuc2l6ZSgpKSk7
CiAgICAgaWYgKCFidWZmZXIpIC8vIEZhaWxlZCB0byBhbGxvY2F0ZSBidWZmZXIuCiAgICAgICAg
IHJldHVybjsKICAgICBkcmF3Rm9yQ29udGFpbmVyKGJ1ZmZlci0+Y29udGV4dCgpLCBjb250YWlu
ZXJTaXplLCBjb250YWluZXJab29tLCBpbml0aWFsRnJhZ21lbnRVUkwsIGltYWdlQnVmZmVyU2l6
ZSwgem9vbWVkQ29udGFpbmVyUmVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5k
ZXggNGEyOGJkNDZmYTE3NzA1M2U1N2MzMTI1ZjFlZWFkMTBmY2VkNjVlNy4uNjMzYjM1ZjU3NTdj
ZjE4MDcxNDFlZmIwMjQ1OWIzYzM4YTNmODM5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVy
LmNwcApAQCAtMjAyLDcgKzIwMiw3IEBAIHZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6
Y2xpcFBhdGgoY29uc3QgUGF0aCYgcGF0aCwgV2luZFJ1bGUgcnVsZSkKIAogdm9pZCBSZW1vdGVE
aXNwbGF5TGlzdFJlY29yZGVyOjpiZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9h
dFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3Bh
Y2UpCiB7Ci0gICAgbV9tYXNrSW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0
aWJsZUJ1ZmZlcihkZXN0aW5hdGlvbi5zaXplKCksIGNvbG9yU3BhY2UsIGRyYXdpbmdDb250ZXh0
KCkpOworICAgIG1fbWFza0ltYWdlQnVmZmVyID0gZHJhd2luZ0NvbnRleHQoKS5jcmVhdGVDb21w
YXRpYmxlSW1hZ2VCdWZmZXIoZGVzdGluYXRpb24uc2l6ZSgpLCBjb2xvclNwYWNlKTsKIH0KIAog
dm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjplbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHMo
Y29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxp
c3RSZWNvcmRlclByb3h5LmNwcAppbmRleCA5ZDM0M2ZhOWFjNDk0YmFjNWVhNGNhZGQwMTE5YjAw
Y2UyYzg2NzZjLi44MmUzNDU5OWNkYzMyOWYyMzA5ZmU5M2ZlYjA3Nzk1MjIxZTAxYzJhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3Bs
YXlMaXN0UmVjb3JkZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuY3BwCkBAIC00NjQsNiAr
NDY0LDE2IEBAIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+IFJlbW90ZURpc3BsYXlM
aXN0UmVjb3JkZXJQcm94eTo6Y3JlYXRlTmVzdGVkQ29uCiAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5PigqdGhpcywgaW5pdGlhbENsaXAsIGluaXRp
YWxDVE0pOwogfQogCitSZWZQdHI8SW1hZ2VCdWZmZXI+IFJlbW90ZURpc3BsYXlMaXN0UmVjb3Jk
ZXJQcm94eTo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBjb25zdCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5n
TW9kZSkgY29uc3QKK3sKKyAgICBpZiAoVU5MSUtFTFkoIW1fcmVuZGVyaW5nQmFja2VuZCkpIHsK
KyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIH0KKworICAgIHJldHVybiBtX3JlbmRlcmluZ0JhY2tlbmQtPmNyZWF0ZUltYWdlQnVmZmVy
KHNpemUsIHJlbmRlcmluZ01vZGUsIDEsIGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJP
Q0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5oCmluZGV4IDMw
MDk4YmVhNjFjMWI2NDRlNDIwYWNhMzMzOWY5MDQ0OTFlNGI3ZmYuLmI4MTM5MDE5ZTFjNDlhOGE5
MDEzNTgzZDAxNjlmZWJiZTQ0NzcyYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJl
Y29yZGVyUHJveHkuaApAQCAtMTQ0LDYgKzE0NCw5IEBAIHByaXZhdGU6CiAKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiBjcmVhdGVOZXN0ZWRDb250ZXh0KGNv
bnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0IFdlYkNvcmU6OkFmZmlu
ZVRyYW5zZm9ybSYgaW5pdGlhbENUTSkgZmluYWw7CiAKKyAgICB1c2luZyBXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6UmVjb3JkZXI6OmNyZWF0ZUltYWdlQnVmZmVyOworICAgIFJlZlB0cjxXZWJDb3Jl
OjpJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXpl
JiwgY29uc3QgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlJiwgV2ViQ29yZTo6UmVuZGVy
aW5nTW9kZSkgY29uc3QgZmluYWw7CisKICAgICBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgbV9kZXN0aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXI7CiAgICAgV2Vha1B0cjxXZWJD
b3JlOjpJbWFnZUJ1ZmZlcj4gbV9pbWFnZUJ1ZmZlcjsKICAgICBXZWFrUHRyPFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eT4gbV9yZW5kZXJpbmdCYWNrZW5kOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451066</attachid>
            <date>2022-02-06 23:40:57 -0800</date>
            <delta_ts>2022-02-07 14:37:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235758-20220206234056.patch</filename>
            <type>text/plain</type>
            <size>86058</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4OTkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTU5YjJjYWIxYzRmZDc0
MGMyMmYyYWY2YTczY2E1YjdiOWMyOTBlYS4uYWI4YjI1OTc3ODU0OWI4YWU0YWIwMjBmYTgzYTUw
NjRjY2JmYmY2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzNyBAQAorMjAyMi0wMi0wNiAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IE1vdmUgSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcigpIGFuZCBTVkdS
ZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlciB0byBHcmFwaGljc0NvbnRleHQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTc1OAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBnb2FsIG9m
IHRoaXMgcGF0Y2ggaXMgdG8gcmVjb3JkIHRoZSBkcmF3aW5nIGlmIHRoZSBjb25jcmV0ZSB0eXBl
IG9mIAorICAgICAgICB0aGUgR3JhcGhpY3NDb250ZXh0IGlzIFJlbW90ZURpc3BsYXlMaXN0UmVj
b3JkZXJQcm94eS4gQ3VycmVudGx5IGFsbCB0aGUKKyAgICAgICAgaW50ZXJtZWRpYXRlIGNvbXBh
dGlibGUgSW1hZ2VCdWZmZXJzIGFyZSBvZiB0eXBlIENvbmNyZXRlSW1hZ2VCdWZmZXIuCisgICAg
ICAgIFRoZSBkcmF3aW5nIHRvIHRoZXNlIEltYWdlQnVmZmVycyBzdGlsbCBoYXBwZW5zIGluIHRo
ZSBXZWJQcm9jZXNzLiBNb3Jlb3ZlcgorICAgICAgICB3aGVuIHdlIGNhbGwgZHJhd0ltYWdlQnVm
ZmVyKCkgZm9yIG9uZSBvZiB0aGVzZSBpbnRlcm1lZGlhdGUgSW1hZ2VCdWZmZXJzCisgICAgICAg
IHRvIGEgcmVtb3RlIEltYWdlQnVmZmVyLCB3ZSBzaW5rIHRoZSBpbnRlcm1lZGlhdGUgSW1hZ2VC
dWZmZXIgdG8gYSBOYXRpdmVJbWFnZQorICAgICAgICBhbmQgc2VuZCBpdCB0byBHUFVQcm9jZXNz
LgorCisgICAgICAgIFRvIGZpeCB0aGlzLCBHcmFwaGljc0NvbnRleHQgd2lsbCBwcm92aWRlIHRo
cmVlIGZ1bmN0aW9ucyBmb3IgY3JlYXRpbmcKKyAgICAgICAgdGhlIEltYWdlQnVmZmVyOgorCisg
ICAgICAgIDEuIEdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoKSAodmlydHVhbCk6
IENyZWF0ZXMgYW4gSW1hZ2VCdWZmZXIKKyAgICAgICAgICAgc2ltaWxhciB0byB0aGUgdW5kZXJs
eWluZyBJbWFnZUJ1ZmZlciBvZiB0aGUgR3JhcGhpY3NDb250ZXh0LiBCZWNhdXNlCisgICAgICAg
ICAgIFJlY29yZGVySW1wbCBhbmQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5IGFyZSBz
dXBlciBjbGFzc2VzIG9mCisgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dCwgdGhleSB3aWxsIG92
ZXJyaWRlIHRoaXMgbWV0aG9kIGFuZCByZXR1cm4gdGhlIGRlc2lyZWQKKyAgICAgICAgICAgdHlw
ZSBvZiBJbWFnZUJ1ZmZlci4KKworICAgICAgICAyLiBHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZUlt
YWdlQnVmZmVyKCkgKG5vbi12aXJ0dWFsKTogQ3JlYXRlcyBhIHNjYWxlZAorICAgICAgICAgICBJ
bWFnZUJ1ZmZlciBhbmQgc2V0cyB0aGUgY29udGV4dCBhY2NvcmRpbmdseS4gSXQgYWxsb3dzIGFs
c28gZm9yY2luZworICAgICAgICAgICBjcmVhdGluZyBhbiBpbi1wcm9jZXNzIENvbmNyZXRlSW1h
Z2VCdWZmZXIuIFRoaXMgaXMgY29udHJvbGxlZCBieSBhbgorICAgICAgICAgICBleHRyYSBwYXJh
bWV0ZXIgb2YgdGhlIGVudW0gdHlwZSBDcmVhdGVNZXRob2QuCisKKyAgICAgICAgMy4gR3JhcGhp
Y3NDb250ZXh0OjpjcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIoKSAodmlydHVhbCk6IFRha2Vz
IHRoZQorICAgICAgICAgICBzY2FsZUZhY3RvcigpIGludG8gY29uc2lkZXJhdGlvbiB3aGVuIGNy
ZWF0aW5nIHRoZSBJbWFnZUJ1ZmZlci4gQnkgCisgICAgICAgICAgIGRlZmF1bHQgdGhlIHR5cGUg
b2YgdGhlIEltYWdlQnVmZmVyIGlzIHRoZSBDb25jcmV0ZUltYWdlQnVmZmVyLgorICAgICAgICAg
ICBCZWNhdXNlIFJlY29yZCBpbmhlcml0cyBHcmFwaGljc0NvbnRleHQgYW5kIGJlY2F1c2UgaXQg
aXMgdGhlIGJhc2UKKyAgICAgICAgICAgY2xhc3Mgb2YgUmVjb3JkZXJJbXBsIGFuZCBSZW1vdGVE
aXNwbGF5TGlzdFJlY29yZGVyUHJveHksIGl0IHdpbGwgCisgICAgICAgICAgIG92ZXJyaWRlIHRo
aXMgZnVuY3Rpb24gdG8gcmV0dXJuIHRoZSBkZWZhdWx0IEltYWdlQnVmZmVyLgorCisgICAgICAg
IFR3byB2ZXJzaW9ucyBvZiB0aGVzZSBmdW5jdGlvbnMgYXJlIHByb3ZpZGVkOiBvbmUgdGFrZXMg
YSBGbG9hdFNpemUgYW5kCisgICAgICAgIHRoZSBvdGhlciB0YWtlcyBhIEZsb2F0UmVjY3QuIFRo
ZSBGbG9hdFJlY3QgdmVyc2lvbiBleHBhbmRzIHRoZSBmb3VyIGNvcm5lcnMgCisgICAgICAgIG9m
IHRoZSByZWN0YW5nbGUgdG8gZnVsbCBwaXhlbHMuCisKKyAgICAgICAgKiBodG1sL0N1c3RvbVBh
aW50Q2FudmFzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbVBhaW50Q2FudmFzOjpyZXBs
YXlEaXNwbGF5TGlzdCBjb25zdCk6CisgICAgICAgICogaHRtbC9DdXN0b21QYWludEltYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbVBhaW50SW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAg
ICAgICAgKiBodG1sL09mZnNjcmVlbkNhbnZhcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPZmZz
Y3JlZW5DYW52YXM6OnRyYW5zZmVyVG9JbWFnZUJpdG1hcCk6CisgICAgICAgIChXZWJDb3JlOjpP
ZmZzY3JlZW5DYW52YXM6OmNvbW1pdFRvUGxhY2Vob2xkZXJDYW52YXMpOgorICAgICAgICAqIGh0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZHJhd0ltYWdlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9jb2NvYS9UaGVtZUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd0Fw
cGxlUGF5QnV0dG9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhd1BhdHRlcm4pOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3UGF0dGVybik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHcmFkaWVudEltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNjYWxlZEltYWdl
QnVmZmVyU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpzY2FsZWRJbWFnZUJ1ZmZlclJlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Y2xhbXBpbmdTY2FsZUZvckltYWdlQnVmZmVyU2l6ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNvbXBhdGlibGVJbWFnZUJ1ZmZlclNpemUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjcmVhdGVJbWFnZUJ1
ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZUNv
bXBhdGlibGVJbWFnZUJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OmNsaXBUb0RyYXdpbmdDb21tYW5kcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OmNyZWF0ZUltYWdlQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y2xvbmUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNvbXBhdGlibGVCdWZmZXJT
aXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpjb21wYXRpYmxl
QnVmZmVySW5mbyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y29w
eVJlY3RUb0J1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJh
dGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmFtZWRJbWFnZUdlbmVyYXRlZEltYWdl
OjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1l
bnRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjp1cGRhdGVD
YWNoZWRJbWFnZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6
OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0RyYXdHbHlwaHNS
ZWNvcmRlckNvcmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdHbHlwaHNSZWNvcmRl
cjo6ZHJhd09UU1ZHUnVuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6UmVjb3JkZXI6OmNyZWF0ZUltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6Y3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyIGNvbnN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZWNvcmRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlY29yZGVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
UmVjb3JkZXJJbXBsOjpjcmVhdGVJbWFnZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlcGxheWVyOjphcHBseUl0ZW0p
OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9UaGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OlRoZW1lTWFjOjpkcmF3Q2VsbE9yRm9jdXNSaW5nV2l0aFZpZXdJbnRvQ29udGV4dCk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXI6OnNldHVwRmlsdGVycyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFj
a2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXR0ZXJuRm9yRGVzY3JpcHRpb24pOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXJGaWx0ZXJzOjphbGxvY2F0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyRmlsdGVyczo6YmVnaW5GaWx0ZXJFZmZlY3QpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyVGhlbWVDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1l
Q29jb2E6OnBhaW50QXBwbGVQYXlCdXR0b24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJU
aGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWludExpc3RC
dXR0b25Gb3JJbnB1dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRQ
cm9ncmVzc0Jhcik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNs
aXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjph
cHBseUNsaXBwaW5nVG9Db250ZXh0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNl
RmlsdGVyOjphcHBseVJlc291cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlR3JhZGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlTWFza0FuZFN3
YXBDb250ZXh0Rm9yVGV4dEdyYWRpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmNsaXBUb1RleHRN
YXNrKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlTWFza2VyOjphcHBseVJlc291
cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OmJ1aWxkUGF0
dGVybik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OmNyZWF0
ZVRpbGVJbWFnZSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZVBhdHRlcm4uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2xpcFRvSW1h
Z2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyaW5nQ29udGV4dDo6YnVmZmVy
Rm9yZWdyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVh
dGVJbWFnZUJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdD
b250ZXh0OjpjbGVhcjJEUm90YXRpb24pOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAqIHN2Zy9TVkdGRUltYWdlRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzY2FsZWRJbWFnZUJ1ZmZlclJlY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Y2xhbXBpbmdTY2FsZUZvckltYWdlQnVmZmVyU2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpjcmVhdGVJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUltYWdl
RWxlbWVudDo6aW1hZ2VCdWZmZXJGb3JFZmZlY3QgY29uc3QpOgorICAgICAgICAqIHN2Zy9ncmFw
aGljcy9TVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZHJhd1BhdHRl
cm5Gb3JDb250YWluZXIpOgorCiAyMDIyLTAyLTAyICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRA
YXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc10gUmVtb3ZlIERpc3BsYXlMaXN0OjpS
ZXBsYXllcjo6RGVsZWdhdGUgYW5kIERpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OkRlbGVnYXRl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IGNkYTY0NDBlOWYwZWU0ZDMwNmViNzc2ZjYwZjE1NWUxYzY2ZDY5NjEuLjk4
MDc0Yzg3NGVlZTcyMTEwNTIxMDdhOGQ1ZTU1NDU5Mjg4YzNiMDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTYgQEAKKzIwMjItMDItMDYgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+
CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBNb3ZlIEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRp
YmxlSW1hZ2VCdWZmZXIoKSBhbmQgU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZm
ZXIgdG8gR3JhcGhpY3NDb250ZXh0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzU3NTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNv
cmRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OmJl
Z2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHk6OmNyZWF0ZUltYWdlQnVmZmVyIGNvbnN0
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJl
Y29yZGVyUHJveHkuaDoKKwogMjAyMi0wMi0wMiAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFw
cGxlLmNvbT4KIAogICAgICAgICBbR1BVIFByb2Nlc3NdIFJlbW92ZSBEaXNwbGF5TGlzdDo6UmVw
bGF5ZXI6OkRlbGVnYXRlIGFuZCBEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpEZWxlZ2F0ZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWludENhbnZhcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0N1c3RvbVBhaW50Q2FudmFzLmNwcAppbmRleCAyYzFhM2FhNmM2
NTc5M2VjNmY1ZDg0YmRhNGVmNzNlYzY5Njk4ZWEzLi40MDQyOTExZDA3YmM3NzgzOTAzMDEzMWQ3
OGQ3M2E1NTdiNjNkMGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0N1c3RvbVBh
aW50Q2FudmFzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0N1c3RvbVBhaW50Q2FudmFz
LmNwcApAQCAtNzMsNyArNzMsNyBAQCB2b2lkIEN1c3RvbVBhaW50Q2FudmFzOjpyZXBsYXlEaXNw
bGF5TGlzdChHcmFwaGljc0NvbnRleHQqIGN0eCkgY29uc3QKICAgICAvLyBGSVhNRTogVXNpbmcg
YW4gaW50ZXJtZWRpYXRlIGJ1ZmZlciBpcyBub3QgbmVlZGVkIGlmIHRoZXJlIGFyZSBubyBjb21w
b3NpdGUgb3BlcmF0aW9ucy4KICAgICBhdXRvIGNsaXBCb3VuZHMgPSBjdHgtPmNsaXBCb3VuZHMo
KTsKIAotICAgIGF1dG8gaW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZl
cihjbGlwQm91bmRzLnNpemUoKSwgKmN0eCk7CisgICAgYXV0byBpbWFnZSA9IGN0eC0+Y3JlYXRl
Q29tcGF0aWJsZUltYWdlQnVmZmVyKGNsaXBCb3VuZHMuc2l6ZSgpKTsKICAgICBpZiAoIWltYWdl
KQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ3Vz
dG9tUGFpbnRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0N1c3RvbVBhaW50SW1hZ2Uu
Y3BwCmluZGV4IGY0NzE5OTQ2YzU4ZTA1OWJlMzNkYjcxZDNmN2I2ZjYwOTIwYTVjYWMuLmZiOGFl
NmJmZDcxZjNlZjYxYTM0MGUyNzAwMTQwMzhlMjc2Njk3MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9DdXN0b21QYWludEltYWdlLmNwcApAQCAtMTk5LDcgKzE5OSw3IEBAIHZvaWQgQ3VzdG9tUGFp
bnRJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3Qg
RmxvYXRSZWN0CiAgICAgYWRqdXN0ZWRQYXR0ZXJuQ1RNLnNjYWxlKDEuMCAvIHhTY2FsZSwgMS4w
IC8geVNjYWxlKTsKICAgICBhZGp1c3RlZFNyY1JlY3Quc2NhbGUoeFNjYWxlLCB5U2NhbGUpOwog
Ci0gICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihh
ZGp1c3RlZFNpemUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBkZXN0Q29udGV4dCk7
CisgICAgYXV0byBidWZmZXIgPSBkZXN0Q29udGV4dC5jcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZm
ZXIoYWRqdXN0ZWRTaXplKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogICAg
IGRvQ3VzdG9tUGFpbnQoYnVmZmVyLT5jb250ZXh0KCksIGFkanVzdGVkU2l6ZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAKaW5kZXggNGM5YzhjZmYxOGI5YzdlYTEyZDE0
MTMxMmM2NjA2NjZkY2YwYzg3OS4uODhkOWY3OGM5YTVjOWNiYjIyMDhjZGM3ODk0MTFkZTgyNzY2
YzMwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcApAQCAtMjgzLDcg
KzI4Myw3IEBAIEV4Y2VwdGlvbk9yPFJlZlB0cjxJbWFnZUJpdG1hcD4+IE9mZnNjcmVlbkNhbnZh
czo6dHJhbnNmZXJUb0ltYWdlQml0bWFwKCkKICAgICAgICAgLy8gQXMgdGhlIGNhbnZhcyBjb250
ZXh0IHN0YXRlIGlzIHN0b3JlZCBpbiBHcmFwaGljc0NvbnRleHQsIHdoaWNoIGlzIG93bmVkCiAg
ICAgICAgIC8vIGJ5IGJ1ZmZlcigpLCB0byBhdm9pZCByZXNldHRpbmcgdGhlIGNvbnRleHQgc3Rh
dGUsIHdlIGhhdmUgdG8gbWFrZSBhIGNvcHkgYW5kCiAgICAgICAgIC8vIGNsZWFyIHRoZSBvcmln
aW5hbCBidWZmZXIgcmF0aGVyIHRoYW4gcmV0dXJuaW5nIHRoZSBvcmlnaW5hbCBidWZmZXIuCi0g
ICAgICAgIGF1dG8gYnVmZmVyQ29weSA9IGJ1ZmZlcigpLT5jb3B5UmVjdFRvQnVmZmVyKEZsb2F0
UmVjdChGbG9hdFBvaW50KCksIGJ1ZmZlcigpLT5sb2dpY2FsU2l6ZSgpKSwgYnVmZmVyKCktPmNv
bG9yU3BhY2UoKSwgKmRyYXdpbmdDb250ZXh0KCkpOworICAgICAgICBhdXRvIGJ1ZmZlckNvcHkg
PSBidWZmZXIoKS0+Y2xvbmUoKTsKICAgICAgICAgZG93bmNhc3Q8T2Zmc2NyZWVuQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEPigqbV9jb250ZXh0KS5jbGVhckNhbnZhcygpOwogICAgICAgICBjbGVh
ckNvcGllZEltYWdlKCk7CiAKQEAgLTQ1MSwxNCArNDUxLDEzIEBAIHZvaWQgT2Zmc2NyZWVuQ2Fu
dmFzOjpjb21taXRUb1BsYWNlaG9sZGVyQ2FudmFzKCkKICAgICAgICAgbV9jb250ZXh0LT5wYWlu
dFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcygpOwogCiAgICAgaWYgKG1fcGxhY2Vob2xkZXJEYXRh
LT5idWZmZXJQaXBlU291cmNlKSB7Ci0gICAgICAgIGF1dG8gYnVmZmVyQ29weSA9IGltYWdlQnVm
ZmVyLT5jb3B5UmVjdFRvQnVmZmVyKEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdlQnVmZmVy
LT5sb2dpY2FsU2l6ZSgpKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIGltYWdlQnVm
ZmVyLT5jb250ZXh0KCkpOwotICAgICAgICBpZiAoYnVmZmVyQ29weSkKKyAgICAgICAgaWYgKGF1
dG8gYnVmZmVyQ29weSA9IGltYWdlQnVmZmVyLT5jbG9uZSgpKQogICAgICAgICAgICAgbV9wbGFj
ZWhvbGRlckRhdGEtPmJ1ZmZlclBpcGVTb3VyY2UtPmhhbmRsZShXVEZNb3ZlKGJ1ZmZlckNvcHkp
KTsKICAgICB9CiAKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9wbGFjZWhvbGRlckRhdGEtPmJ1ZmZl
ckxvY2sgfTsKICAgICBib29sIHNob3VsZFB1c2hCdWZmZXIgPSAhbV9wbGFjZWhvbGRlckRhdGEt
PnBlbmRpbmdDb21taXRCdWZmZXI7Ci0gICAgbV9wbGFjZWhvbGRlckRhdGEtPnBlbmRpbmdDb21t
aXRCdWZmZXIgPSBpbWFnZUJ1ZmZlci0+Y29weVJlY3RUb0J1ZmZlcihGbG9hdFJlY3QoRmxvYXRQ
b2ludCgpLCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSksIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQigpLCBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpKTsKKyAgICBtX3BsYWNlaG9sZGVyRGF0
YS0+cGVuZGluZ0NvbW1pdEJ1ZmZlciA9IGltYWdlQnVmZmVyLT5jbG9uZSgpOwogICAgIGlmICht
X3BsYWNlaG9sZGVyRGF0YS0+cGVuZGluZ0NvbW1pdEJ1ZmZlciAmJiBzaG91bGRQdXNoQnVmZmVy
KQogICAgICAgICBwdXNoQnVmZmVyVG9QbGFjZWhvbGRlcigpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNl
LmNwcAppbmRleCA1NTBlNjhiMjg3MTYzOGQyMDdhY2ViMjMyNzU0OTNkZWE2YjQxMmM2Li4yMDVl
ZTYyMTk4MmFlMWE5OGRiYmE5YzYwYmE2ODA0NTY3Y2NmOGUzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNl
LmNwcApAQCAtMTYxMSw3ICsxNjExLDggQEAgRXhjZXB0aW9uT3I8dm9pZD4gQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQmFzZTo6ZHJhd0ltYWdlKENhbnZhc0Jhc2UmIHNvdXJjZUNhbnYKICAgICAg
ICAgcmVwYWludEVudGlyZUNhbnZhcyA9IHRydWU7CiAgICAgfSBlbHNlIGlmIChzdGF0ZSgpLmds
b2JhbENvbXBvc2l0ZSA9PSBDb21wb3NpdGVPcGVyYXRvcjo6Q29weSkgewogICAgICAgICBpZiAo
JnNvdXJjZUNhbnZhcyA9PSAmY2FudmFzQmFzZSgpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBj
b3B5ID0gYnVmZmVyLT5jb3B5UmVjdFRvQnVmZmVyKHNyY1JlY3QsIGNvbG9yU3BhY2UoKSwgKmMp
KSB7CisgICAgICAgICAgICBpZiAoYXV0byBjb3B5ID0gYy0+Y3JlYXRlQ29tcGF0aWJsZUltYWdl
QnVmZmVyKHNyY1JlY3Quc2l6ZSgpLCBjb2xvclNwYWNlKCkpKSB7CisgICAgICAgICAgICAgICAg
Y29weS0+Y29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcigqYnVmZmVyLCAtc3JjUmVjdC5sb2NhdGlv
bigpKTsKICAgICAgICAgICAgICAgICBjbGVhckNhbnZhcygpOwogICAgICAgICAgICAgICAgIGMt
PmRyYXdJbWFnZUJ1ZmZlcigqY29weSwgZHN0UmVjdCwgeyB7IH0sIHNyY1JlY3Quc2l6ZSgpIH0s
IHsgc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUsIHN0YXRlKCkuZ2xvYmFsQmxlbmQgfSk7CiAgICAg
ICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9UaGVt
ZUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVGhlbWVDb2NvYS5tbQpp
bmRleCBlY2Q1MGI3MGZkYmJmNmU5ODNmM2E3MTU2NTI3YjIxMDY4ODRmYmZlLi5lMmI0OTA0ZDhm
ODYyOGQzOGI2MTcwZTBhNTgwN2MzNTU2MWNmMTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jb2NvYS9UaGVtZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NvY29hL1RoZW1lQ29jb2EubW0KQEAgLTExMCw3ICsxMTAsNyBAQCBzdGF0aWMgQ0dQREZQ
YWdlUmVmIGFwcGxlUGF5QnV0dG9uTG9nb1doaXRlKCkKIAogc3RhdGljIHZvaWQgZHJhd0FwcGxl
UGF5QnV0dG9uKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgQ0dQREZQYWdlUmVmIHBhZ2UsIGNv
bnN0IEZsb2F0U2l6ZSYgc2l6ZSkKIHsKLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoc2l6ZSwgY29udGV4dCk7CisgICAgYXV0byBpbWFn
ZUJ1ZmZlciA9IGNvbnRleHQuY3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyKHNpemUpOwogICAg
IGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCmluZGV4IDgwMjc0MzVhZDI5NDU2
NjI5OGE3OTFiM2FmNmFmYTliZjI3ODFlNjguLjU3NDU0NDdjOGM1NGZmODhhOTM2NmY1MGZlYjM2
NGQ3NzgwY2IwOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0JpdG1hcEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9C
aXRtYXBJbWFnZS5jcHAKQEAgLTM0Nyw3ICszNDcsNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3
UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
CiAgICAgfQogCiAgICAgaWYgKCFtX2NhY2hlZEltYWdlKSB7Ci0gICAgICAgIGF1dG8gYnVmZmVy
ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoZXhwYW5kZWRJbnRTaXplKHRp
bGVSZWN0LnNpemUoKSksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBjdHh0KTsKKyAg
ICAgICAgYXV0byBidWZmZXIgPSBjdHh0LmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihleHBh
bmRlZEludFNpemUodGlsZVJlY3Quc2l6ZSgpKSk7CiAgICAgICAgIGlmICghYnVmZmVyKQogICAg
ICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAKaW5kZXggNTBmZTBjNDY2
MTRiNzAyYmExODYxZTczODAzYzEwMDI1YTA4MDRiNC4uNjFhMzgzMjMzY2I2ZWIxYTk0ZTkxZjFm
ZmU0NzdmMmNjZGYxNTExNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcApAQCAtMTAzLDcgKzEw
Myw3IEBAIEltYWdlRHJhd1Jlc3VsdCBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZTo6ZHJhdyhHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsCiAKIHZvaWQgQ3Jvc3NmYWRlR2VuZXJhdGVk
SW1hZ2U6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRS
ZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZs
b2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7
Ci0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSgpLCBjb250
ZXh0LnJlbmRlcmluZ01vZGUoKSwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBp
eGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IGNvbnRleHQuY3JlYXRl
SW1hZ2VCdWZmZXIoc2l6ZSgpKTsKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1
cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRp
ZW50SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJ
bWFnZS5jcHAKaW5kZXggZmVmMzZlNTdhNjVhMTQ4NjkwZGIzMGEyYzJhNTY4NGQwMDBjOGFkYy4u
YmRhNzAxMTA5OGZhNTE3YTY0NDMyYWZlY2JkMDUzYzFmOTU5NWM1MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFnZS5jcHAKQEAgLTcyLDcg
KzcyLDcgQEAgdm9pZCBHcmFkaWVudEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQm
IGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGQKICAgICB1bnNpZ25lZCBnZW5lcmF0b3JI
YXNoID0gbV9ncmFkaWVudC0+aGFzaCgpOwogCiAgICAgaWYgKCFtX2NhY2hlZEltYWdlIHx8IG1f
Y2FjaGVkR2VuZXJhdG9ySGFzaCAhPSBnZW5lcmF0b3JIYXNoIHx8IG1fY2FjaGVkQWRqdXN0ZWRT
aXplICE9IGFkanVzdGVkU2l6ZSB8fCAhYXJlRXNzZW50aWFsbHlFcXVhbChkZXN0Q29udGV4dC5z
Y2FsZUZhY3RvcigpLCBtX2NhY2hlZFNjYWxlRmFjdG9yKSkgewotICAgICAgICBhdXRvIGltYWdl
QnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoYWRqdXN0ZWRTaXpl
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgZGVzdENvbnRleHQpOworICAgICAgICBh
dXRvIGltYWdlQnVmZmVyID0gZGVzdENvbnRleHQuY3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVy
KGFkanVzdGVkU2l6ZSk7CiAgICAgICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgICAgICBy
ZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuY3BwCmluZGV4IGE0OTJlOThkYTI4MGMyM2VjNzM2MzA3YWRlMmRkZWYzMmJm
YTRjZWYuLjUyMWEwMjc5YzdjZTVlODIzZWMxOGYxN2I5ZGUzODE3NDQzMzE4M2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNw
cApAQCAtNTUxLDYgKzU1MSwxMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdCaWRpVGV4
dChjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgY29uc3QgVGV4dFJ1biYgcnVuLAogICAgIGJpZGlS
dW5zLmNsZWFyKCk7CiB9CiAKK3N0YXRpYyBJbnRTaXplIHNjYWxlZEltYWdlQnVmZmVyU2l6ZShj
b25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc2NhbGUpCit7CisgICAgLy8g
RW5sYXJnZSB0aGUgYnVmZmVyIHNpemUgaWYgdGhlIGNvbnRleHQncyB0cmFuc2Zvcm0gaXMgc2Nh
bGluZyBpdCBzbyB3ZSBuZWVkIGEgaGlnaGVyCisgICAgLy8gcmVzb2x1dGlvbiB0aGFuIG9uZSBw
aXhlbCBwZXIgdW5pdC4KKyAgICByZXR1cm4gZXhwYW5kZWRJbnRTaXplKHNpemUgKiBzY2FsZSk7
Cit9CisKK3N0YXRpYyBJbnRSZWN0IHNjYWxlZEltYWdlQnVmZmVyUmVjdChjb25zdCBGbG9hdFJl
Y3QmIHJlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgc2NhbGUpCit7CisgICAgYXV0byBzY2FsZWRSZWN0
ID0gcmVjdDsKKyAgICBzY2FsZWRSZWN0LnNjYWxlKHNjYWxlKTsKKyAgICByZXR1cm4gZW5jbG9z
aW5nSW50UmVjdChzY2FsZWRSZWN0KTsKK30KKworc3RhdGljIEZsb2F0U2l6ZSBjbGFtcGluZ1Nj
YWxlRm9ySW1hZ2VCdWZmZXJTaXplKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKK3sKKyAgICBGbG9h
dFNpemUgY2xhbXBpbmdTY2FsZSgxLCAxKTsKKyAgICBJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xh
bXBpbmcoc2l6ZSwgY2xhbXBpbmdTY2FsZSk7CisgICAgcmV0dXJuIGNsYW1waW5nU2NhbGU7Cit9
CisKK0ludFNpemUgR3JhcGhpY3NDb250ZXh0Ojpjb21wYXRpYmxlSW1hZ2VCdWZmZXJTaXplKGNv
bnN0IEZsb2F0U2l6ZSYgc2l6ZSkgY29uc3QKK3sKKyAgICByZXR1cm4gc2NhbGVkSW1hZ2VCdWZm
ZXJTaXplKHNpemUsIHNjYWxlRmFjdG9yKCkpOworfQorCitSZWZQdHI8SW1hZ2VCdWZmZXI+IEdy
YXBoaWNzQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBj
b25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUgcmVu
ZGVyaW5nTW9kZSkgY29uc3QKK3sKKyAgICByZXR1cm4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXpl
LCByZW5kZXJpbmdNb2RlLCAxLCBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworfQor
CitSZWZQdHI8SW1hZ2VCdWZmZXI+IEdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIo
Y29uc3QgRmxvYXRTaXplJiBzaXplLCBjb25zdCBGbG9hdFNpemUmIHNjYWxlLCBjb25zdCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9k
ZSwgQ3JlYXRlTWV0aG9kIGNyZWF0ZU1ldGhvZCkgY29uc3QKK3sKKyAgICBhdXRvIGV4cGFuZGVk
U2NhbGVkU2l6ZSA9IHNjYWxlZEltYWdlQnVmZmVyU2l6ZShzaXplLCBzY2FsZSk7CisgICAgaWYg
KGV4cGFuZGVkU2NhbGVkU2l6ZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgYXV0byBjbGFtcGluZ1NjYWxlID0gY2xhbXBpbmdTY2FsZUZvckltYWdlQnVmZmVyU2l6
ZShleHBhbmRlZFNjYWxlZFNpemUpOworCisgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBpbWFnZUJ1
ZmZlcjsKKyAgICBpZiAoY3JlYXRlTWV0aG9kID09IENyZWF0ZU1ldGhvZDo6QmFzZSkKKyAgICAg
ICAgaW1hZ2VCdWZmZXIgPSBHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGV4cGFu
ZGVkU2NhbGVkU2l6ZSAqIGNsYW1waW5nU2NhbGUsIGNvbG9yU3BhY2UsIHJlbmRlcmluZ01vZGUp
OworICAgIGVsc2UKKyAgICAgICAgaW1hZ2VCdWZmZXIgPSBjcmVhdGVJbWFnZUJ1ZmZlcihleHBh
bmRlZFNjYWxlZFNpemUgKiBjbGFtcGluZ1NjYWxlLCBjb2xvclNwYWNlLCByZW5kZXJpbmdNb2Rl
KTsKKworICAgIGlmICghaW1hZ2VCdWZmZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgaW1hZ2VCdWZmZXItPmNvbnRleHQoKS5zY2FsZShjbGFtcGluZ1NjYWxlKTsKKworICAgIC8v
ICdleHBhbmRlZFNjYWxlZFNpemUnIGlzIG1hcHBlZCB0byAnc2l6ZScuIFNvIHVzZSAnZXhwYW5k
ZWRTY2FsZWRTaXplIC8gc2l6ZScKKyAgICAvLyBub3QgJ3NjYWxlJyBiZWNhdXNlIHRoZXkgYXJl
IG5vdCBuZWNlc3NhcmlseSBlcXVhbC4KKyAgICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnNjYWxl
KGV4cGFuZGVkU2NhbGVkU2l6ZSAvIHNpemUpOworICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsKK30K
KworUmVmUHRyPEltYWdlQnVmZmVyPiBHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVy
KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRTaXplJiBzY2FsZSwgY29uc3QgRGVz
dGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01v
ZGUsIENyZWF0ZU1ldGhvZCBjcmVhdGVNZXRob2QpIGNvbnN0Cit7CisgICAgYXV0byBleHBhbmRl
ZFNjYWxlZFJlY3QgPSBzY2FsZWRJbWFnZUJ1ZmZlclJlY3QocmVjdCwgc2NhbGUpOworICAgIGlm
IChleHBhbmRlZFNjYWxlZFJlY3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgIGF1dG8gY2xhbXBpbmdTY2FsZSA9IGNsYW1waW5nU2NhbGVGb3JJbWFnZUJ1ZmZlclNp
emUoZXhwYW5kZWRTY2FsZWRSZWN0LnNpemUoKSk7CisKKyAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+
IGltYWdlQnVmZmVyOworICAgIGlmIChjcmVhdGVNZXRob2QgPT0gQ3JlYXRlTWV0aG9kOjpCYXNl
KQorICAgICAgICBpbWFnZUJ1ZmZlciA9IEdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZm
ZXIoZXhwYW5kZWRTY2FsZWRSZWN0LnNpemUoKSAqIGNsYW1waW5nU2NhbGUsIGNvbG9yU3BhY2Us
IHJlbmRlcmluZ01vZGUpOworICAgIGVsc2UKKyAgICAgICAgaW1hZ2VCdWZmZXIgPSBjcmVhdGVJ
bWFnZUJ1ZmZlcihleHBhbmRlZFNjYWxlZFJlY3Quc2l6ZSgpICogY2xhbXBpbmdTY2FsZSwgY29s
b3JTcGFjZSwgcmVuZGVyaW5nTW9kZSk7CisKKyAgICBpZiAoIWltYWdlQnVmZmVyKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKworICAgIGltYWdlQnVmZmVyLT5jb250ZXh0KCkuc2NhbGUoY2xh
bXBpbmdTY2FsZSk7CisgICAgCisgICAgLy8gJ3JlY3QnIGlzIG1hcHBlZCB0byBhIHJlY3Rhbmds
ZSBpbnNpZGUgZXhwYW5kZWRTY2FsZWRSZWN0LgorICAgIGltYWdlQnVmZmVyLT5jb250ZXh0KCku
dHJhbnNsYXRlKC1leHBhbmRlZFNjYWxlZFJlY3QubG9jYXRpb24oKSk7CisgICAgCisgICAgLy8g
VGhlIHNpemUgb2YgdGhpcyByZWN0YW5nbGUgaXMgbm90IG5lY2Vzc2FyaWx5IGVxdWFsIHRvIGV4
cGFuZGVkU2NhbGVkUmVjdC5zaXplKCkuCisgICAgLy8gU28gdXNlICdzY2FsZScgbm90ICdleHBh
bmRlZFNjYWxlZFJlY3Quc2l6ZSgpIC8gcmVjdC5zaXplKCknLgorICAgIGltYWdlQnVmZmVyLT5j
b250ZXh0KCkuc2NhbGUoc2NhbGUpOworICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsKK30KKworUmVm
UHRyPEltYWdlQnVmZmVyPiBHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0
IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzY2FsZSwgY29uc3QgRGVzdGluYXRp
b25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ01vZGU+IHJl
bmRlcmluZ01vZGUpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNyZWF0ZUltYWdlQnVmZmVyKHNpemUs
IHNjYWxlLCBjb2xvclNwYWNlLCByZW5kZXJpbmdNb2RlLnZhbHVlX29yKHRoaXMtPnJlbmRlcmlu
Z01vZGUoKSksIENyZWF0ZU1ldGhvZDo6QmFzZSk7Cit9CisKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4g
R3JhcGhpY3NDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHJlY3Qs
IGNvbnN0IEZsb2F0U2l6ZSYgc2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29s
b3JTcGFjZSwgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdNb2RlPiByZW5kZXJpbmdNb2RlKSBjb25z
dAoreworICAgIHJldHVybiBjcmVhdGVJbWFnZUJ1ZmZlcihyZWN0LCBzY2FsZSwgY29sb3JTcGFj
ZSwgcmVuZGVyaW5nTW9kZS52YWx1ZV9vcih0aGlzLT5yZW5kZXJpbmdNb2RlKCkpLCBDcmVhdGVN
ZXRob2Q6OkJhc2UpOworfQorCitSZWZQdHI8SW1hZ2VCdWZmZXI+IEdyYXBoaWNzQ29udGV4dDo6
Y3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmlu
Z01vZGU+IHJlbmRlcmluZ01vZGUpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNyZWF0ZUltYWdlQnVm
ZmVyKHNpemUsIHNjYWxlRmFjdG9yKCksIGNvbG9yU3BhY2UsIHJlbmRlcmluZ01vZGUudmFsdWVf
b3IodGhpcy0+cmVuZGVyaW5nTW9kZSgpKSwgQ3JlYXRlTWV0aG9kOjpCYXNlKTsKK30KKworUmVm
UHRyPEltYWdlQnVmZmVyPiBHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1
ZmZlcihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYg
Y29sb3JTcGFjZSwgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdNb2RlPiByZW5kZXJpbmdNb2RlKSBj
b25zdAoreworICAgIHJldHVybiBjcmVhdGVJbWFnZUJ1ZmZlcihyZWN0LCBzY2FsZUZhY3Rvcigp
LCBjb2xvclNwYWNlLCByZW5kZXJpbmdNb2RlLnZhbHVlX29yKHRoaXMtPnJlbmRlcmluZ01vZGUo
KSksIENyZWF0ZU1ldGhvZDo6QmFzZSk7Cit9CisKIEltYWdlRHJhd1Jlc3VsdCBHcmFwaGljc0Nv
bnRleHQ6OmRyYXdJbWFnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0
aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgaW1hZ2VQYWludGluZ09wdGlvbnMpCiB7
CiAgICAgcmV0dXJuIGRyYXdJbWFnZShpbWFnZSwgRmxvYXRSZWN0KGRlc3RpbmF0aW9uLCBpbWFn
ZS5zaXplKCkpLCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBpbWFnZS5zaXplKCkpLCBpbWFnZVBh
aW50aW5nT3B0aW9ucyk7CkBAIC02NjgsNyArNzcyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6
OmNsaXBPdXRSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByZWN0KQogCiBHcmFw
aGljc0NvbnRleHQ6OkNsaXBUb0RyYXdpbmdDb21tYW5kc1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6
OmNsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25z
dCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhp
Y3NDb250ZXh0Jik+JiYgZHJhd2luZ0Z1bmN0aW9uKQogewotICAgIGF1dG8gaW1hZ2VCdWZmZXIg
PSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihkZXN0aW5hdGlvbi5zaXplKCks
IGNvbG9yU3BhY2UsICp0aGlzKTsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gY3JlYXRlQ29tcGF0
aWJsZUltYWdlQnVmZmVyKGRlc3RpbmF0aW9uLnNpemUoKSwgY29sb3JTcGFjZSk7CiAgICAgaWYg
KCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIENsaXBUb0RyYXdpbmdDb21tYW5kc1Jlc3Vs
dDo6RmFpbGVkVG9DcmVhdGVJbWFnZUJ1ZmZlcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCBjZjcwOTJkZTMzYmM1Yjcy
OGFkNDYxYjBmYzAyMTc3ZjY5ZWVmZjMyLi5lZTRhNjk0ZDI0MTY4ZTAwZmViOWEzMTE0NjNiMDZm
ZDFlMDc2MTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuaApAQCAtNDE2LDYgKzQxNiwxNCBAQCBwdWJsaWM6CiAKICAgICAvLyBJ
bWFnZXMsIFBhdHRlcm5zLCBhbmQgTWVkaWEKIAorICAgIEludFNpemUgY29tcGF0aWJsZUltYWdl
QnVmZmVyU2l6ZShjb25zdCBGbG9hdFNpemUmKSBjb25zdDsKKworICAgIHZpcnR1YWwgUmVmUHRy
PEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBjb25zdCBG
bG9hdFNpemUmIHNjYWxlID0geyAxLCAxIH0sIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYg
PSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdN
b2RlPiA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7CisgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2VCdWZm
ZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0U2l6ZSYg
c2NhbGUgPSB7IDEsIDEgfSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiA9IERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ01vZGU+ID0gc3Rk
OjpudWxsb3B0KSBjb25zdDsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgUmVmUHRyPElt
YWdlQnVmZmVyPiBjcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwg
Y29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
QigpLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ01vZGU+ID0gc3RkOjpudWxsb3B0KSBjb25zdDsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlQ29t
cGF0aWJsZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IERlc3RpbmF0aW9uQ29s
b3JTcGFjZSYgPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgc3RkOjpvcHRpb25hbDxS
ZW5kZXJpbmdNb2RlPiA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7CisKICAgICB2aXJ0dWFsIHZvaWQg
ZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pID0gMDsKIAogICAgIFdFQkNPUkVfRVhQT1JU
IEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0
aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyBJbWFnZU9yaWVudGF0aW9u
OjpGcm9tSW1hZ2UgfSk7CkBAIC01NDYsNiArNTU0LDEzIEBAIHByb3RlY3RlZDoKICAgICB2b2lk
IGZpbGxFbGxpcHNlQXNQYXRoKGNvbnN0IEZsb2F0UmVjdCYpOwogICAgIHZvaWQgc3Ryb2tlRWxs
aXBzZUFzUGF0aChjb25zdCBGbG9hdFJlY3QmKTsKIAorICAgIGVudW0gY2xhc3MgQ3JlYXRlTWV0
aG9kIDogYm9vbCB7IERlZmF1bHQsIEJhc2UgfTsKKworICAgIHZpcnR1YWwgUmVmUHRyPEltYWdl
QnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBjb25zdCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UmLCBSZW5kZXJpbmdNb2RlKSBjb25zdDsKKworICAgIFJlZlB0cjxJbWFn
ZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRmxvYXRT
aXplJiBzY2FsZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgUmVuZGVyaW5nTW9kZSwg
Q3JlYXRlTWV0aG9kKSBjb25zdDsKKyAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdl
QnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0U2l6ZSYgc2NhbGUsIGNvbnN0IERl
c3RpbmF0aW9uQ29sb3JTcGFjZSYsIFJlbmRlcmluZ01vZGUsIENyZWF0ZU1ldGhvZCkgY29uc3Q7
CisKICAgICBGbG9hdFJlY3QgY29tcHV0ZUxpbmVCb3VuZHNBbmRBbnRpYWxpYXNpbmdNb2RlRm9y
VGV4dChjb25zdCBGbG9hdFJlY3QmLCBib29sIHByaW50aW5nLCBDb2xvciYpOwogCiAgICAgZmxv
YXQgZGFzaGVkTGluZUNvcm5lcldpZHRoRm9yU3Ryb2tlV2lkdGgoZmxvYXQpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCmluZGV4
IDAxOTNiZmIwZjk2YzdkMzQwNTNlNzY4YTBjMjU4ZmMxMjU3ODBmZDMuLmM1ZWYzMGEyYjBiMDc4
NjQ5Njg3ZTBkZTE3NjdmMDVlMzc5YTMyNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHAKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29w
eXJpZ2h0IChDKSAyMDA5IERpcmsgU2NodWx6ZSA8a3JpdEB3ZWJraXQub3JnPgogICogQ29weXJp
Z2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDExLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03Miw3MyArNzIs
MTQgQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IEZsb2F0
U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSByZW4KICAgICByZXR1cm4gaW1hZ2VCdWZmZXI7CiB9
CiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZm
ZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQp
CitSZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjbG9uZSgpIGNvbnN0CiB7Ci0gICAg
aWYgKHNpemUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIEludFNp
emUgc2NhbGVkU2l6ZSA9IEltYWdlQnVmZmVyOjpjb21wYXRpYmxlQnVmZmVyU2l6ZShzaXplLCBj
b250ZXh0KTsKLQotICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXI7Ci0KLSAgICBp
ZiAoY29udGV4dC5yZW5kZXJpbmdNb2RlKCkgPT0gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQp
Ci0gICAgICAgIGltYWdlQnVmZmVyID0gQWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNj
YWxlZFNpemUsIGNvbnRleHQpOwotICAgIAotICAgIGlmICghaW1hZ2VCdWZmZXIpCi0gICAgICAg
IGltYWdlQnVmZmVyID0gVW5hY2NlbGVyYXRlZEltYWdlQnVmZmVyOjpjcmVhdGUoc2NhbGVkU2l6
ZSwgY29udGV4dCk7Ci0KLSAgICBpZiAoIWltYWdlQnVmZmVyKQotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLQotICAgIGltYWdlQnVmZmVyLT5jb250ZXh0KCkuc2NhbGUoc2NhbGVkU2l6ZSAvIHNp
emUpOwotICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsKLX0KLQotLy8gVGhpcyBpcyB1c2VmdWwgd2hl
biB5b3UgbmVlZCB0byBtYWtlIHN1cmUgdGhlIHBpeGVsIGdyaWQgb2YgdGhlIEltYWdlQnVmZmVy
IGFsaWducyB3aXRoIHRoZSBwaXhlbCBncmlkIG9mIHRoZSBjb250ZXh0LgotLy8gU2ltcGx5IHNh
eWluZyBjcmVhdGVDb21wYXRpYmxlQnVmZmVyKHJlY3Quc2l6ZSgpLCBjb250ZXh0KSBpc24ndCBz
dWZmaWNpZW50IGluIHRoaXMgc2l0dWF0aW9uLCBiZWNhdXNlIHJlY3QubG9jYXRpb24oKSBtYXkg
bm90IGxpZSBvbiBhIHBpeGVsIGJvdW5kYXJ5LgotLy8gSW4gdGhpcyBzaXR1YXRpb24sIHdlIGhh
dmUgdG8gaW5mbGF0ZSBib3RoIHRoZSBsZWZ0IHNpZGUgYW5kIHRoZSByaWdodCBzaWRlLCB3aGlj
aCBjYW4gbGVhZCB0byBkaWZmZXJlbnQgcmVzdWx0cyB0aGFuCi0vLyBjcmVhdGVDb21wYXRpYmxl
QnVmZmVyKHJlY3Quc2l6ZSgpLCBjb250ZXh0KSB3b3VsZCBoYXZlIHByb2R1Y2VkLgotYXV0byBJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHJlY3Qs
IGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgLT4gc3RkOjpvcHRpb25hbDxDb21wYXRp
YmxlQnVmZmVyRGVzY3JpcHRpb24+Ci17Ci0gICAgaWYgKHJlY3QuaXNFbXB0eSgpKQotICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgYXV0byBpbmZvID0gSW1hZ2VCdWZmZXI6OmNv
bXBhdGlibGVCdWZmZXJJbmZvKHJlY3QsIGNvbnRleHQpOwotCi0gICAgUmVmUHRyPEltYWdlQnVm
ZmVyPiBpbWFnZUJ1ZmZlcjsKLQotICAgIGlmIChjb250ZXh0LnJlbmRlcmluZ01vZGUoKSA9PSBS
ZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCkKLSAgICAgICAgaW1hZ2VCdWZmZXIgPSBBY2NlbGVy
YXRlZEltYWdlQnVmZmVyOjpjcmVhdGUoaW5mby5waHlzaWNhbFNpemVJbkRldmljZUNvb3JkaW5h
dGVzLCBjb250ZXh0KTsKLSAgICAKLSAgICBpZiAoIWltYWdlQnVmZmVyKQotICAgICAgICBpbWFn
ZUJ1ZmZlciA9IFVuYWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGluZm8ucGh5c2ljYWxT
aXplSW5EZXZpY2VDb29yZGluYXRlcywgY29udGV4dCk7Ci0KLSAgICBpZiAoIWltYWdlQnVmZmVy
KQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgaW1hZ2VCdWZmZXItPmNvbnRl
eHQoKS5zY2FsZShpbmZvLnNjYWxlKTsKLSAgICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnRyYW5z
bGF0ZSgtaW5mby5pbmZsYXRlZFJlY3RJblVzZXJDb29yZGluYXRlcy5sb2NhdGlvbigpKTsKLSAg
ICByZXR1cm4geyB7IGltYWdlQnVmZmVyLnJlbGVhc2VOb25OdWxsKCksIGluZm8uaW5mbGF0ZWRS
ZWN0SW5Vc2VyQ29vcmRpbmF0ZXMgfSB9OwotfQotCi1SZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdl
QnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29u
c3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBjb25zdCBHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQpCi17Ci0gICAgaWYgKHNpemUuaXNFbXB0eSgpKQorICAgIGF1dG8gY2xvbmUg
PSBjb250ZXh0KCkuY3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyKGxvZ2ljYWxTaXplKCksIGNv
bG9yU3BhY2UoKSk7CisgICAgaWYgKCFjbG9uZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
LSAgICBJbnRTaXplIHNjYWxlZFNpemUgPSBJbWFnZUJ1ZmZlcjo6Y29tcGF0aWJsZUJ1ZmZlclNp
emUoc2l6ZSwgY29udGV4dCk7Ci0KLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoc2NhbGVkU2l6ZSwgMSwgY29sb3JTcGFjZSwgY29udGV4
dCk7Ci0gICAgaWYgKCFpbWFnZUJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAg
ICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnNjYWxlKHNjYWxlZFNpemUgLyBzaXplKTsKLSAgICBy
ZXR1cm4gaW1hZ2VCdWZmZXI7Ci19Ci0KLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6
OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNv
bHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgY29u
c3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQotewotICAgIHJldHVybiBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKHNpemUsIGNvbnRleHQucmVuZGVyaW5nTW9kZSgpLCByZXNvbHV0aW9uU2NhbGUsIGNv
bG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgY2xvbmUtPmNvbnRleHQoKS5kcmF3
SW1hZ2VCdWZmZXIoY29uc3RfY2FzdDxJbWFnZUJ1ZmZlciY+KCp0aGlzKSwgRmxvYXRQb2ludCgp
KTsKKyAgICByZXR1cm4gY2xvbmU7CiB9CiAKIGJvb2wgSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0Ns
YW1waW5nKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKQEAgLTE4NSw1OCArMTI2LDYgQEAgRmxvYXRS
ZWN0IEltYWdlQnVmZmVyOjpjbGFtcGVkUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAg
cmV0dXJuIEZsb2F0UmVjdChyZWN0LmxvY2F0aW9uKCksIGNsYW1wZWRTaXplKHJlY3Quc2l6ZSgp
KSk7CiB9CiAKLUludFNpemUgSW1hZ2VCdWZmZXI6OmNvbXBhdGlibGVCdWZmZXJTaXplKGNvbnN0
IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQotewotICAg
IC8vIEVubGFyZ2UgdGhlIGJ1ZmZlciBzaXplIGlmIHRoZSBjb250ZXh0J3MgdHJhbnNmb3JtIGlz
IHNjYWxpbmcgaXQgc28gd2UgbmVlZCBhIGhpZ2hlcgotICAgIC8vIHJlc29sdXRpb24gdGhhbiBv
bmUgcGl4ZWwgcGVyIHVuaXQuCi0gICAgcmV0dXJuIGV4cGFuZGVkSW50U2l6ZShzaXplICogY29u
dGV4dC5zY2FsZUZhY3RvcigpKTsKLX0KLQotYXV0byBJbWFnZUJ1ZmZlcjo6Y29tcGF0aWJsZUJ1
ZmZlckluZm8oY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQpIC0+IENvbXBhdGlibGVCdWZmZXJJbmZvCi17Ci0gICAgYXV0byBzY2FsZUZhY3RvciA9
IGNvbnRleHQuc2NhbGVGYWN0b3IoKTsKLSAgICBhdXRvIHNjYWxlZFJlY3QgPSByZWN0OwotICAg
IHNjYWxlZFJlY3Quc2NhbGUoc2NhbGVGYWN0b3IpOwotICAgIGF1dG8gaW5mbGF0ZWRTY2FsZWRS
ZWN0ID0gZW5jbG9zaW5nSW50UmVjdChzY2FsZWRSZWN0KTsKLSAgICBhdXRvIGluZmxhdGVkUmVj
dEluVXNlckNvb3JkaW5hdGVzID0gRmxvYXRSZWN0KGluZmxhdGVkU2NhbGVkUmVjdCk7Ci0KLSAg
ICAvLyBXZSBkb24ndCB3YW50IHRvIGFsbG9jYXRlIGh1Z2UgSW1hZ2VCdWZmZXJzIGJlY2F1c2Ug
dGhleSBjYW4gdGFrZSBhIGxvdCBvZiBtZW1vcnksCi0gICAgLy8gc28gaWYgdGhlIHNpemUgd291
bGQgaGF2ZSBiZWVuIHRvbyBiaWcsIGRlY3JlYXNlIHJlc29sdXRpb24gYW5kIHNjYWxlIHRoZSBy
ZXN1bHRpbmcgY29udGV4dC4KLSAgICAvLyBUaGlzIHdpbGwgbWVhbiB0aGF0IHRoZSBJbWFnZUJ1
ZmZlciB3aWxsIGxvc2UgcXVhbGl0eSwgYnV0IHdpbGwgc3RpbGwgZ2VuZXJhbGx5IGxvb2sgY29y
cmVjdC4KLSAgICBjb25zdGV4cHIgaW50IG1heERpbWVuc2lvbiA9IDQwOTY7Ci0gICAgaWYgKGlu
ZmxhdGVkU2NhbGVkUmVjdC53aWR0aCgpID4gbWF4RGltZW5zaW9uKSB7Ci0gICAgICAgIC8vIFRo
ZSBwaXhlbCBncmlkcyB3b24ndCBhbGlnbiBhbnkgbW9yZSwgc28gdGhlcmUncyBubyBuZWVkIHRv
IHRyeSB0byBoYW5kbGUgZnJhY3Rpb25zIG9mIHBpeGVscy4KLSAgICAgICAgaW5mbGF0ZWRTY2Fs
ZWRSZWN0LnNldFdpZHRoKG1heERpbWVuc2lvbik7Ci0gICAgICAgIGluZmxhdGVkUmVjdEluVXNl
ckNvb3JkaW5hdGVzLnNjYWxlKG1heERpbWVuc2lvbiAvIGluZmxhdGVkUmVjdEluVXNlckNvb3Jk
aW5hdGVzLndpZHRoKCksIDEpOwotICAgICAgICBzY2FsZUZhY3Rvci5zZXRXaWR0aChtYXhEaW1l
bnNpb24gLyByZWN0LndpZHRoKCkpOwotICAgIH0KLSAgICBpZiAoaW5mbGF0ZWRTY2FsZWRSZWN0
LmhlaWdodCgpID4gbWF4RGltZW5zaW9uKSB7Ci0gICAgICAgIC8vIFRoZSBwaXhlbCBncmlkcyB3
b24ndCBhbGlnbiBhbnkgbW9yZSwgc28gdGhlcmUncyBubyBuZWVkIHRvIHRyeSB0byBoYW5kbGUg
ZnJhY3Rpb25zIG9mIHBpeGVscy4KLSAgICAgICAgaW5mbGF0ZWRTY2FsZWRSZWN0LnNldEhlaWdo
dChtYXhEaW1lbnNpb24pOwotICAgICAgICBpbmZsYXRlZFJlY3RJblVzZXJDb29yZGluYXRlcy5z
Y2FsZSgxLCBtYXhEaW1lbnNpb24gLyBpbmZsYXRlZFJlY3RJblVzZXJDb29yZGluYXRlcy5oZWln
aHQoKSk7Ci0gICAgICAgIHNjYWxlRmFjdG9yLnNldEhlaWdodChtYXhEaW1lbnNpb24gLyByZWN0
LmhlaWdodCgpKTsKLSAgICB9Ci0KLSAgICBhdXRvIHBoeXNpY2FsU2l6ZUluRGV2aWNlQ29vcmRp
bmF0ZXMgPSBpbmZsYXRlZFNjYWxlZFJlY3Quc2l6ZSgpOwotICAgIGluZmxhdGVkUmVjdEluVXNl
ckNvb3JkaW5hdGVzLnNjYWxlKDEuMGYgLyBzY2FsZUZhY3Rvcik7Ci0gICAgcmV0dXJuIHsgV1RG
TW92ZShwaHlzaWNhbFNpemVJbkRldmljZUNvb3JkaW5hdGVzKSwgV1RGTW92ZShpbmZsYXRlZFJl
Y3RJblVzZXJDb29yZGluYXRlcyksIHNjYWxlRmFjdG9yIH07Ci19Ci0KLVJlZlB0cjxJbWFnZUJ1
ZmZlcj4gSW1hZ2VCdWZmZXI6OmNvcHlSZWN0VG9CdWZmZXIoY29uc3QgRmxvYXRSZWN0JiByZWN0
LCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIGNvbnN0IEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCkKLXsKLSAgICBpZiAocmVjdC5pc0VtcHR5KCkpCi0gICAgICAgIHJl
dHVybiBudWxscHRyOwotCi0gICAgSW50U2l6ZSBzY2FsZWRTaXplID0gSW1hZ2VCdWZmZXI6OmNv
bXBhdGlibGVCdWZmZXJTaXplKHJlY3Quc2l6ZSgpLCBjb250ZXh0KTsKLQotICAgIGF1dG8gYnVm
ZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoc2NhbGVkU2l6ZSwgMSwg
Y29sb3JTcGFjZSwgY29udGV4dCk7Ci0gICAgaWYgKCFidWZmZXIpCi0gICAgICAgIHJldHVybiBu
dWxscHRyOwotCi0gICAgYnVmZmVyLT5jb250ZXh0KCkuZHJhd0ltYWdlQnVmZmVyKCp0aGlzLCAt
cmVjdC5sb2NhdGlvbigpKTsKLSAgICByZXR1cm4gYnVmZmVyOwotfQotCiBSZWZQdHI8TmF0aXZl
SW1hZ2U+IEltYWdlQnVmZmVyOjpzaW5rSW50b05hdGl2ZUltYWdlKFJlZlB0cjxJbWFnZUJ1ZmZl
cj4gaW1hZ2VCdWZmZXIpCiB7CiAgICAgcmV0dXJuIGltYWdlQnVmZmVyLT5zaW5rSW50b05hdGl2
ZUltYWdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXIuaAppbmRleCA0YjcxZjIzNTNjOGQwY2Q4ZWRmNGFmNWU1OTI2YjdkZTI5MmM4YTYyLi5hZTY0
MjFhMWYzZTQ5MTliZjMxMDhhMzdmNGZjN2FhMzY1OGIxMDZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKQEAgLTEsNiArMSw2IEBACiAvKgog
ICogQ29weXJpZ2h0IChDKSAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUu
b3JnPgotICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEwIFRvcmNoIE1vYmlsZSAoQmVpamluZykg
Q28uIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTUwLDE1
ICs1MCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEltYWdl
QnVmZmVyPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgU2hvdWxkVXNl
RGlzcGxheUxpc3QsIFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29u
c3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgUGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cq
ID0gbnVsbHB0cik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZl
cj4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRp
b25TY2FsZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgUGl4ZWxGb3JtYXQsIGNvbnN0
IEhvc3RXaW5kb3cqID0gbnVsbHB0cik7CiAKLSAgICAvLyBDcmVhdGUgYW4gaW1hZ2UgYnVmZmVy
IGNvbXBhdGlibGUgd2l0aCB0aGUgY29udGV4dCwgd2l0aCBzdWl0YWJsZSByZXNvbHV0aW9uIGZv
ciBkcmF3aW5nIGludG8gdGhlIGJ1ZmZlciBhbmQgdGhlbiBpbnRvIHRoaXMgY29udGV4dC4KLSAg
ICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0
IEZsb2F0U2l6ZSYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOwotICAgIHN0cnVjdCBDb21wYXRp
YmxlQnVmZmVyRGVzY3JpcHRpb24gewotICAgICAgICBSZWY8SW1hZ2VCdWZmZXI+IGltYWdlQnVm
ZmVyOwotICAgICAgICBGbG9hdFJlY3QgaW5mbGF0ZWRSZWN0SW5Vc2VyQ29vcmRpbmF0ZXM7Ci0g
ICAgfTsKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxDb21wYXRpYmxlQnVmZmVyRGVzY3JpcHRp
b24+IGNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiByZWN0SW5Vc2VyQ29v
cmRpbmF0ZXMsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxv
YXRTaXplJiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgY29uc3QgR3JhcGhpY3NDb250
ZXh0Jik7Ci0gICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlQ29tcGF0aWJsZUJ1
ZmZlcihjb25zdCBGbG9hdFNpemUmLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOworICAgIFJlZlB0cjxJ
bWFnZUJ1ZmZlcj4gY2xvbmUoKSBjb25zdDsKIAogICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyBhcmUg
dXNlZCB3aGVuIGNsYW1waW5nIHRoZSBJbWFnZUJ1ZmZlciB3aGljaCBpcyBjcmVhdGVkIGZvciBm
aWx0ZXIsIG1hc2tlciBvciBjbGlwcGVyLgogICAgIHN0YXRpYyBib29sIHNpemVOZWVkc0NsYW1w
aW5nKGNvbnN0IEZsb2F0U2l6ZSYpOwpAQCAtNjcsMTUgKzU5LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBGbG9hdFNpemUgY2xhbXBlZFNpemUoY29uc3QgRmxvYXRTaXplJiwgRmxvYXRTaXplJiBz
Y2FsZSk7CiAgICAgc3RhdGljIEZsb2F0UmVjdCBjbGFtcGVkUmVjdChjb25zdCBGbG9hdFJlY3Qm
KTsKIAotICAgIHN0YXRpYyBJbnRTaXplIGNvbXBhdGlibGVCdWZmZXJTaXplKGNvbnN0IEZsb2F0
U2l6ZSYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOwotICAgIHN0cnVjdCBDb21wYXRpYmxlQnVm
ZmVySW5mbyB7Ci0gICAgICAgIEludFNpemUgcGh5c2ljYWxTaXplSW5EZXZpY2VDb29yZGluYXRl
czsKLSAgICAgICAgRmxvYXRSZWN0IGluZmxhdGVkUmVjdEluVXNlckNvb3JkaW5hdGVzOwotICAg
ICAgICBGbG9hdFNpemUgc2NhbGU7Ci0gICAgfTsKLSAgICBzdGF0aWMgQ29tcGF0aWJsZUJ1ZmZl
ckluZm8gY29tcGF0aWJsZUJ1ZmZlckluZm8oY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgR3JhcGhp
Y3NDb250ZXh0Jik7Ci0gICAgCi0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+SW1hZ2VCdWZm
ZXIoKSA9IGRlZmF1bHQ7CisgICAgdmlydHVhbCB+SW1hZ2VCdWZmZXIoKSA9IGRlZmF1bHQ7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0QmFja2VuZChzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJC
YWNrZW5kPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyQmFja2VuZCgpID0gMDsKQEAg
LTExOSw5ICsxMDMsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2U+IGNvcHlJ
bWFnZShCYWNraW5nU3RvcmVDb3B5ID0gQ29weUJhY2tpbmdTdG9yZSwgUHJlc2VydmVSZXNvbHV0
aW9uID0gUHJlc2VydmVSZXNvbHV0aW9uOjpObykgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUmVm
UHRyPEltYWdlPiBmaWx0ZXJlZEltYWdlKEZpbHRlciYpID0gMDsKIAotICAgIC8vIENyZWF0ZSBh
biBpbWFnZSBidWZmZXIgY29tcGF0aWJsZSB3aXRoIHRoZSBjb250ZXh0IGFuZCBjb3B5IHJlY3Qg
ZnJvbSB0aGlzIGJ1ZmZlciBpbnRvIHRoaXMgbmV3IG9uZS4KLSAgICBSZWZQdHI8SW1hZ2VCdWZm
ZXI+IGNvcHlSZWN0VG9CdWZmZXIoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRGVzdGluYXRpb25D
b2xvclNwYWNlJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7Ci0KICAgICB2aXJ0dWFsIHZvaWQg
ZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QgPSBGbG9hdFJlY3QoMCwgMCwgLTEsIC0xKSwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmID0geyB9KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0ZXJu
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBj
b25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5j
cHAKaW5kZXggNmZmYzI4MmI5Y2M3NTA0MDg4OGNiMzY0ZmIzMzAyMDJmY2IwM2JkMC4uMzcwYzdk
YzI4OTZmMzk2MmNiM2VkNTA5ODJkYWI2OTk3NGY2MzJjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1h
Z2UuY3BwCkBAIC02NSw3ICs2NSw3IEBAIEltYWdlRHJhd1Jlc3VsdCBOYW1lZEltYWdlR2VuZXJh
dGVkSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGCiB2b2lkIE5h
bWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50
JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgb3B0aW9ucykKIHsKICNpZiBVU0UoTkVXX1RIRU1FKQotICAgIGF1dG8gaW1hZ2VCdWZm
ZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihzaXplKCksIGNvbnRleHQp
OworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBjb250ZXh0LmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1
ZmZlcihzaXplKCkpOwogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybjsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1l
bnRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1
bWVudEltYWdlLmNwcAppbmRleCAwZTA0Y2JiYzQyZTI3YmNjOWE1MzRmZDBmYWRjMjA3ZmVjZDMx
YmQxLi44NzVmN2YyMTMxYzk2MTQ5ZTQzOTQ3ZDQ4OTFjYWQ5MjRhZTcxYzYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudElt
YWdlLmNwcApAQCAtMjMyLDE0ICsyMzIsMTUgQEAgdm9pZCBQREZEb2N1bWVudEltYWdlOjp1cGRh
dGVDYWNoZWRJbWFnZUlmTmVlZGVkKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QKIAog
ICAgIC8vIENhY2hlIHRoZSBQREYgaW1hZ2Ugb25seSBpZiB0aGUgc2l6ZSBvZiB0aGUgbmV3IGlt
YWdlIHdvbid0IGV4Y2VlZCB0aGUgY2FjaGUgdGhyZXNob2xkLgogICAgIGlmIChtX3BkZkltYWdl
Q2FjaGluZ1BvbGljeSA9PSBQREZJbWFnZUNhY2hpbmdQb2xpY3k6OkJlbG93TWVtb3J5TGltaXQp
IHsKLSAgICAgICAgSW50U2l6ZSBzY2FsZWRTaXplID0gSW1hZ2VCdWZmZXI6OmNvbXBhdGlibGVC
dWZmZXJTaXplKGNhY2hlZEltYWdlU2l6ZSwgY29udGV4dCk7CisgICAgICAgIGF1dG8gc2NhbGVk
U2l6ZSA9IGNvbnRleHQuY29tcGF0aWJsZUltYWdlQnVmZmVyU2l6ZShjYWNoZWRJbWFnZVNpemUp
OwogICAgICAgICBpZiAoc19hbGxEZWNvZGVkRGF0YVNpemUgKyBzY2FsZWRTaXplLnVuY2xhbXBl
ZEFyZWEoKSAqIDQgLSBtX2NhY2hlZEJ5dGVzID4gc19tYXhEZWNvZGVkRGF0YVNpemUpIHsKICAg
ICAgICAgICAgIGRlc3Ryb3lEZWNvZGVkRGF0YSgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAgICAgfQogCi0gICAgbV9jYWNoZWRJbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpj
cmVhdGVDb21wYXRpYmxlQnVmZmVyKGNhY2hlZEltYWdlU2l6ZSwgY29udGV4dCk7CisgICAgLy8g
Q3JlYXRlIGluLXByb2Nlc3MgSW1hZ2VCdWZmZXIgc2luY2UgdGhlIGRlY29kaW5nIG9mIFBERiBp
bWFnZXMgaGFzIHRvIGhhcHBlbiBpbiBXZWJQcm9jZXNzLgorICAgIG1fY2FjaGVkSW1hZ2VCdWZm
ZXIgPSBjb250ZXh0LkdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVy
KGNhY2hlZEltYWdlU2l6ZSk7CiAgICAgaWYgKCFtX2NhY2hlZEltYWdlQnVmZmVyKSB7CiAgICAg
ICAgIGRlc3Ryb3lEZWNvZGVkRGF0YSgpOwogICAgICAgICByZXR1cm47CkBAIC0yOTIsNyArMjkz
LDcgQEAgSW1hZ2VEcmF3UmVzdWx0IFBERkRvY3VtZW50SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QKICAgICAgICAgICAgIC8vIHNjYWxhciA9IHNx
cnQobWF4IG51bWJlciBvZiBwaXhlbHMgLyAod2lkdGggKiBoZWlnaHQpKQogICAgICAgICAgICAg
YXV0byBzY2FsYXIgPSBzdGQ6Om1pbigxLmYsIHN0ZDo6c3FydChzdGF0aWNfY2FzdDxmbG9hdD4o
c19tYXhDYWNoZWRJbWFnZUFyZWEpIC8gKGRzdFJlY3Qud2lkdGgoKSAqIGRzdFJlY3QuaGVpZ2h0
KCkpKSk7CiAgICAgICAgICAgICBGbG9hdFJlY3QgbG9jYWxEZXN0aW5hdGlvblJlY3QoRmxvYXRQ
b2ludCgpLCBkc3RSZWN0LnNpemUoKSAqIHNjYWxhcik7Ci0gICAgICAgICAgICBpZiAoYXV0byBp
bWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGxvY2FsRGVz
dGluYXRpb25SZWN0LnNpemUoKSwgY29udGV4dCkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIGlt
YWdlQnVmZmVyID0gY29udGV4dC5HcmFwaGljc0NvbnRleHQ6OmNyZWF0ZUNvbXBhdGlibGVJbWFn
ZUJ1ZmZlcihsb2NhbERlc3RpbmF0aW9uUmVjdC5zaXplKCkpKSB7CiAgICAgICAgICAgICAgICAg
YXV0byYgYnVmZmVyQ29udGV4dCA9IGltYWdlQnVmZmVyLT5jb250ZXh0KCk7CiAgICAgICAgICAg
ICAgICAgdHJhbnNmb3JtQ29udGV4dEZvclBhaW50aW5nKGJ1ZmZlckNvbnRleHQsIGxvY2FsRGVz
dGluYXRpb25SZWN0LCBzcmNSZWN0KTsKICAgICAgICAgICAgICAgICBkcmF3UERGUGFnZShidWZm
ZXJDb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvcmV0ZXh0L0RyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0RyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNw
cAppbmRleCBjMjk1ZWZlODM0N2IwNDViZTMxZGIzNjc2NzNlZTdmOTk1YjFhNGMzLi5lZjFlNDZl
NTIyODM0NGExZWU5NWU5OWUyNDUxMTZlMDAwNjNjZGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9EcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRHJh
d0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCkBAIC0zNzQsMTQgKzM3NCwxOSBAQCB2b2lkIERy
YXdHbHlwaHNSZWNvcmRlcjo6cmVjb3JkRHJhd0ltYWdlKENHUmVuZGVyaW5nU3RhdGVSZWYsIENH
R1N0YXRlUmVmIGdzdGF0ZQogdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OmRyYXdPVFNWR1J1bihj
b25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNvbnN0IEds
eXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxv
YXRQb2ludCYgc3RhcnRQb2ludCwgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5nTW9kZSkKIHsK
ICAgICBGbG9hdFBvaW50IHBlblBvc2l0aW9uID0gc3RhcnRQb2ludDsKKwogICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBudW1HbHlwaHM7ICsraSkgewogICAgICAgICBhdXRvIGJvdW5kcyA9
IGZvbnQuYm91bmRzRm9yR2x5cGgoZ2x5cGhzW2ldKTsKLSAgICAgICAgaWYgKGF1dG8gaW1hZ2VC
dWZmZXJEZXNjcmlwdGlvbiA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGJv
dW5kcywgbV9vd25lcikpIHsKLSAgICAgICAgICAgIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKGlt
YWdlQnVmZmVyRGVzY3JpcHRpb24tPmltYWdlQnVmZmVyLT5jb250ZXh0KCksIGZvbnQsIGdseXBo
cyArIGksIGFkdmFuY2VzICsgaSwgMSwgRmxvYXRQb2ludCgpLCBzbW9vdGhpbmdNb2RlKTsKLSAg
ICAgICAgICAgIGF1dG8gZGVzdGluYXRpb25SZWN0ID0gaW1hZ2VCdWZmZXJEZXNjcmlwdGlvbi0+
aW5mbGF0ZWRSZWN0SW5Vc2VyQ29vcmRpbmF0ZXM7CisKKyAgICAgICAgLy8gQ3JlYXRlIGluLXBy
b2Nlc3MgSW1hZ2VCdWZmZXIgc2luY2UgdGhlIGRlY29kaW5nIG9mIE9ULVNWRyBmb250cyBoYXMg
dG8gaGFwcGVuIGluIFdlYlByb2Nlc3MuCisgICAgICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0g
bV9vd25lci5HcmFwaGljc0NvbnRleHQ6OmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihib3Vu
ZHMpKSB7CisgICAgICAgICAgICBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhpbWFnZUJ1ZmZlci0+
Y29udGV4dCgpLCBmb250LCBnbHlwaHMgKyBpLCBhZHZhbmNlcyArIGksIDEsIEZsb2F0UG9pbnQo
KSwgc21vb3RoaW5nTW9kZSk7CisKKyAgICAgICAgICAgIEZsb2F0UmVjdCBkZXN0aW5hdGlvblJl
Y3QgPSBlbmNsb3NpbmdJbnRSZWN0KGJvdW5kcyk7CiAgICAgICAgICAgICBkZXN0aW5hdGlvblJl
Y3QubW92ZUJ5KHBlblBvc2l0aW9uKTsKLSAgICAgICAgICAgIG1fb3duZXIuZHJhd0ltYWdlQnVm
ZmVyKGltYWdlQnVmZmVyRGVzY3JpcHRpb24tPmltYWdlQnVmZmVyLCBkZXN0aW5hdGlvblJlY3Qp
OworICAgICAgICAgICAgbV9vd25lci5kcmF3SW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyLCBkZXN0
aW5hdGlvblJlY3QpOwogICAgICAgICB9CisKICAgICAgICAgcGVuUG9zaXRpb24ubW92ZShzaXpl
KGFkdmFuY2VzW2ldKSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXIuY3BwCmluZGV4IDg5ZjNkMzUzZGE3YmI0MTcxMThmZjcxODhjZWRjMDdjMDhiY2M4NDcu
LjU0NzNiYWMxMDA4ZTRhZDUwNTA0YmM1OTEzMzhjNTliMDEyZWEyZDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJl
Y29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTUwNyw2ICs1MDcsMjYgQEAgR3JhcGhp
Y3NDb250ZXh0OjpDbGlwVG9EcmF3aW5nQ29tbWFuZHNSZXN1bHQgUmVjb3JkZXI6OmNsaXBUb0Ry
YXdpbmdDb21tYW5kcyhjb24KICAgICByZXR1cm4gQ2xpcFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0
OjpTdWNjZXNzOwogfQogCitSZWZQdHI8SW1hZ2VCdWZmZXI+IFJlY29yZGVyOjpjcmVhdGVJbWFn
ZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc2NhbGUsIGNv
bnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgc3RkOjpvcHRpb25hbDxSZW5k
ZXJpbmdNb2RlPiByZW5kZXJpbmdNb2RlKSBjb25zdAoreworICAgIHJldHVybiBHcmFwaGljc0Nv
bnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKHNpemUsIHNjYWxlLCBjb2xvclNwYWNlLCByZW5kZXJp
bmdNb2RlLnZhbHVlX29yKHRoaXMtPnJlbmRlcmluZ01vZGUoKSksIENyZWF0ZU1ldGhvZDo6RGVm
YXVsdCk7Cit9CisKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gUmVjb3JkZXI6OmNyZWF0ZUltYWdlQnVm
ZmVyKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRTaXplJiBzY2FsZSwgY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmlu
Z01vZGU+IHJlbmRlcmluZ01vZGUpIGNvbnN0Cit7CisgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4
dDo6Y3JlYXRlSW1hZ2VCdWZmZXIocmVjdCwgc2NhbGUsIGNvbG9yU3BhY2UsIHJlbmRlcmluZ01v
ZGUudmFsdWVfb3IodGhpcy0+cmVuZGVyaW5nTW9kZSgpKSwgQ3JlYXRlTWV0aG9kOjpEZWZhdWx0
KTsKK30KKworUmVmUHRyPEltYWdlQnVmZmVyPiBSZWNvcmRlcjo6Y3JlYXRlQ29tcGF0aWJsZUlt
YWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNw
YWNlJiBjb2xvclNwYWNlLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ01vZGU+IHJlbmRlcmluZ01v
ZGUpIGNvbnN0Cit7CisgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZm
ZXIoc2l6ZSwgc2NhbGVGYWN0b3IoKSwgY29sb3JTcGFjZSwgcmVuZGVyaW5nTW9kZS52YWx1ZV9v
cih0aGlzLT5yZW5kZXJpbmdNb2RlKCkpLCBDcmVhdGVNZXRob2Q6OkRlZmF1bHQpOworfQorCitS
ZWZQdHI8SW1hZ2VCdWZmZXI+IFJlY29yZGVyOjpjcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIo
Y29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9y
U3BhY2UsIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nTW9kZT4gcmVuZGVyaW5nTW9kZSkgY29uc3QK
K3sKKyAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihyZWN0LCBz
Y2FsZUZhY3RvcigpLCBjb2xvclNwYWNlLCByZW5kZXJpbmdNb2RlLnZhbHVlX29yKHRoaXMtPnJl
bmRlcmluZ01vZGUoKSksIENyZWF0ZU1ldGhvZDo6RGVmYXVsdCk7Cit9CisKICNpZiBFTkFCTEUo
VklERU8pCiB2b2lkIFJlY29yZGVyOjpwYWludEZyYW1lRm9yTWVkaWEoTWVkaWFQbGF5ZXImIHBs
YXllciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbikKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZWNvcmRlci5oCmluZGV4IDQwZTdhMGMyNTYwMzcxMzU5Y2FlZGRmZGQ1MzkyMDVl
ZDE1ODdlOTguLjQyM2Q2MTY0ZGI0ZDJlMTRjMzQxOTUwZGU3MmM1ZThlNjU3YWY4OWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaApAQCAtMTg1LDYgKzE4NSwxMiBAQCBw
cm90ZWN0ZWQ6CiAgICAgY29uc3QgQ29udGV4dFN0YXRlJiBjdXJyZW50U3RhdGUoKSBjb25zdDsK
ICAgICBDb250ZXh0U3RhdGUmIGN1cnJlbnRTdGF0ZSgpOwogCisgICAgV0VCQ09SRV9FWFBPUlQg
UmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBj
b25zdCBGbG9hdFNpemUmIHNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmID0gRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nTW9kZT4g
PSBzdGQ6Om51bGxvcHQpIGNvbnN0IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxJ
bWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxv
YXRTaXplJiBzY2FsZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiA9IERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQigpLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ01vZGU+ID0gc3RkOjpu
dWxsb3B0KSBjb25zdCBmaW5hbDsKKworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxJbWFnZUJ1
ZmZlcj4gY3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0
IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwg
c3RkOjpvcHRpb25hbDxSZW5kZXJpbmdNb2RlPiA9IHN0ZDo6bnVsbG9wdCkgY29uc3QgZmluYWw7
CisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVDb21wYXRpYmxl
SW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNl
JiA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmlu
Z01vZGU+ID0gc3RkOjpudWxsb3B0KSBjb25zdCBmaW5hbDsKKwogcHJpdmF0ZToKICAgICBib29s
IGhhc1BsYXRmb3JtQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
UGxhdGZvcm1HcmFwaGljc0NvbnRleHQqIHBsYXRmb3JtQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIG51bGxwdHI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRl
ckltcGwuY3BwCmluZGV4IDNlY2JjN2JhMzMzNWZjN2JiYWJmOTBlMTQ3ZGMzYmE5MzRmNjQ4NjUu
LjIwY2JlMDAyNWVkYjYwYjA4ZGJiODJlYzM0ZTdjZGY0Y2Q4YzNmYTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJl
Y29yZGVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmNwcApAQCAtNDMxLDYgKzQzMSwxMSBA
QCBib29sIFJlY29yZGVySW1wbDo6cmVjb3JkUmVzb3VyY2VVc2UoRm9udCYgZm9udCkKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAorUmVmUHRyPEltYWdlQnVmZmVyPiBSZWNvcmRlckltcGw6OmNyZWF0
ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3QgRGVzdGluYXRpb25Db2xv
clNwYWNlJiBjb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUpIGNvbnN0Cit7
CisgICAgcmV0dXJuIEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgcmVuZGVyaW5nTW9kZSwgU2hv
dWxkVXNlRGlzcGxheUxpc3Q6OlllcywgUmVuZGVyaW5nUHVycG9zZTo6VW5zcGVjaWZpZWQsIDEs
IGNvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCk7Cit9CisKIC8vIEZJWE1FOiBzaGFyZSB3
aXRoIFNoYWRvd0RhdGEKIHN0YXRpYyBpbmxpbmUgZmxvYXQgc2hhZG93UGFpbnRpbmdFeHRlbnQo
ZmxvYXQgYmx1clJhZGl1cykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3Jk
ZXJJbXBsLmgKaW5kZXggOTI2YzMzYjMxMTEyMjU1ZWMzMmMyMjQ2ZTMyOTE5ZTE4ZWNmNTQwMy4u
YTk2MWY2ZmY3MjZjZjY2Njk2MTEyODgxMWEzZDc5YmVjOGJkZTU3YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmgKQEAgLTEyNyw2ICsxMjcsOSBAQCBwcml2
YXRlOgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4gY3JlYXRlTmVzdGVk
Q29udGV4dChjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mIGluaXRpYWxDVE0pIGZpbmFsOwogCisgICAgdXNpbmcgUmVjb3JkZXI6OmNyZWF0ZUltYWdl
QnVmZmVyOworICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3Qg
RmxvYXRTaXplJiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgUmVuZGVyaW5nTW9kZSkg
Y29uc3QgZmluYWw7CisKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBjbGFzcy4uLiBBcmdzPgog
ICAgIHZvaWQgYXBwZW5kKEFyZ3MmJi4uLiBhcmdzKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxh
eWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlcGxheWVyLmNwcAppbmRleCBiMTg4Y2VhYjQyNjk2ZmZlMjAxMjA5YTkwMGFi
NzAwOTk1MGI4NWU1Li5iYWVkMTRjZTBhZDdjOWMwNGM5NWIwZTcxNTA1MmE2NTBlMDc5YTllIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZXBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCkBAIC0xNTQsNyArMTU0
LDcgQEAgc3RkOjpwYWlyPHN0ZDo6b3B0aW9uYWw8U3RvcFJlcGxheVJlYXNvbj4sIHN0ZDo6b3B0
aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGkKICAgICAgICAgaWYgKG1fbWFza0ltYWdlQnVm
ZmVyKQogICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6SW52YWxpZEl0ZW1P
ckV4dGVudCwgc3RkOjpudWxsb3B0IH07CiAgICAgICAgIGF1dG8mIGNsaXBJdGVtID0gaXRlbS5n
ZXQ8QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM+KCk7Ci0gICAgICAgIG1fbWFza0ltYWdlQnVm
ZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY2xpcEl0ZW0uZGVzdGlu
YXRpb24oKS5zaXplKCksIGNsaXBJdGVtLmNvbG9yU3BhY2UoKSwgbV9jb250ZXh0KTsKKyAgICAg
ICAgbV9tYXNrSW1hZ2VCdWZmZXIgPSBtX2NvbnRleHQuY3JlYXRlQ29tcGF0aWJsZUltYWdlQnVm
ZmVyKGNsaXBJdGVtLmRlc3RpbmF0aW9uKCkuc2l6ZSgpLCBjbGlwSXRlbS5jb2xvclNwYWNlKCkp
OwogICAgICAgICBpZiAoIW1fbWFza0ltYWdlQnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuIHsg
U3RvcFJlcGxheVJlYXNvbjo6T3V0T2ZNZW1vcnksIHN0ZDo6bnVsbG9wdCB9OwogICAgICAgICBy
ZXR1cm4geyBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1RoZW1lTWFjLm1tCmluZGV4IGQ3OWU4NWFhMmJjOTc1ODcyYWZmYjFkNzA3MTk0ZGRl
ZGJkMzkwOWEuLjc0MTkxNWMwYzAzZDQxYjMzYjU3MzljOTY0NGMzNzcyNjVlZTFjZjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KQEAgLTczNCw3ICs3MzQsNyBAQCBi
b29sIFRoZW1lTWFjOjpkcmF3Q2VsbE9yRm9jdXNSaW5nV2l0aFZpZXdJbnRvQ29udGV4dChOU0Nl
bGwgKmNlbGwsIEdyYXBoaWNzQ29udAogCiAgICAgaWYgKHVzZUltYWdlQnVmZmVyKSB7CiAgICAg
ICAgIE5TUmVjdCBpbWFnZUJ1ZmZlckRyYXdSZWN0ID0gTlNSZWN0KEZsb2F0UmVjdChidXR0b25G
b2N1c1JlY3RPdXRsaW5lV2lkdGgsIGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVXaWR0aCwgcmVjdC53
aWR0aCgpLCByZWN0LmhlaWdodCgpKSk7Ci0gICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihyZWN0LnNpemUoKSArIDIgKiBGbG9hdFNp
emUoYnV0dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRoLCBidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lk
dGgpLCBkZXZpY2VTY2FsZUZhY3RvciwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIGNv
bnRleHQpOworICAgICAgICBhdXRvIGltYWdlQnVmZmVyID0gY29udGV4dC5jcmVhdGVJbWFnZUJ1
ZmZlcihyZWN0LnNpemUoKSArIDIgKiBGbG9hdFNpemUoYnV0dG9uRm9jdXNSZWN0T3V0bGluZVdp
ZHRoLCBidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgpLCB7IGRldmljZVNjYWxlRmFjdG9yLCBk
ZXZpY2VTY2FsZUZhY3RvciB9KTsKICAgICAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAg
ICAgIHJldHVybiBuZWVkc1JlcGFpbnQ7CiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCmluZGV4IDUyOGYwMjIwNGE2MTg2
Zjk4NTFhMzI0YzUwZTliNjFjYjI1MjAzNzQuLjE5YmIwYzQyZmJjNWZjMjEzNTc2MDc4MjI2NTdm
YmI2MmFmODcyODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3hNb2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eE1vZGVsT2JqZWN0LmNwcApAQCAtODk0LDcgKzg5NCw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxP
YmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvCiAgICAgICAgIG1hc2tSZWN0LmludGVyc2VjdChzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKHBh
aW50SW5mby5yZWN0LCBkZXZpY2VTY2FsZUZhY3RvcikpOwogCiAgICAgICAgIC8vIE5vdyBjcmVh
dGUgdGhlIG1hc2suCi0gICAgICAgIG1hc2tJbWFnZSA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21w
YXRpYmxlQnVmZmVyKG1hc2tSZWN0LnNpemUoKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
KCksIGNvbnRleHQpOworICAgICAgICBtYXNrSW1hZ2UgPSBjb250ZXh0LmNyZWF0ZUNvbXBhdGli
bGVJbWFnZUJ1ZmZlcihtYXNrUmVjdC5zaXplKCkpOwogICAgICAgICBpZiAoIW1hc2tJbWFnZSkK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgcGFpbnRNYXNrRm9yVGV4dEZpbGxCb3gobWFz
a0ltYWdlLmdldCgpLCBtYXNrUmVjdCwgYm94LCBzY3JvbGxlZFBhaW50UmVjdCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCA3N2E4YTI3ODEyOTI1YTVhNDY3
MmM2NWRmOThjZjdhZGIyOTZmZGU3Li45NzNhZGM1ODYyZDNmMTQzMjAyY2JhZmUxYzdhYjY2YzUw
M2NhNTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTMy
NDcsNyArMzI0Nyw3IEBAIEdyYXBoaWNzQ29udGV4dCogUmVuZGVyTGF5ZXI6OnNldHVwRmlsdGVy
cyhHcmFwaGljc0NvbnRleHQmIGRlc3RpbmF0aW9uQ29udGV4dCwKIAogICAgIGF1dG8gcm9vdFJl
bGF0aXZlQm91bmRzID0gY2FsY3VsYXRlTGF5ZXJCb3VuZHMocGFpbnRpbmdJbmZvLnJvb3RMYXll
ciwgb2Zmc2V0RnJvbVJvb3QsIHsgfSk7CiAKLSAgICBHcmFwaGljc0NvbnRleHQqIGZpbHRlckNv
bnRleHQgPSBwYWludGluZ0ZpbHRlcnMtPmJlZ2luRmlsdGVyRWZmZWN0KHJlbmRlcmVyKCksIGVu
Y2xvc2luZ0ludFJlY3Qocm9vdFJlbGF0aXZlQm91bmRzKSwgZW5jbG9zaW5nSW50UmVjdChwYWlu
dGluZ0luZm8ucGFpbnREaXJ0eVJlY3QpLCBlbmNsb3NpbmdJbnRSZWN0KGZpbHRlclJlcGFpbnRS
ZWN0KSk7CisgICAgR3JhcGhpY3NDb250ZXh0KiBmaWx0ZXJDb250ZXh0ID0gcGFpbnRpbmdGaWx0
ZXJzLT5iZWdpbkZpbHRlckVmZmVjdChyZW5kZXJlcigpLCBkZXN0aW5hdGlvbkNvbnRleHQsIGVu
Y2xvc2luZ0ludFJlY3Qocm9vdFJlbGF0aXZlQm91bmRzKSwgZW5jbG9zaW5nSW50UmVjdChwYWlu
dGluZ0luZm8ucGFpbnREaXJ0eVJlY3QpLCBlbmNsb3NpbmdJbnRSZWN0KGZpbHRlclJlcGFpbnRS
ZWN0KSk7CiAgICAgaWYgKCFmaWx0ZXJDb250ZXh0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2lu
Zy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApp
bmRleCA0ZWZjZmFiNTU1N2I1NTMzYmVlOTVjOTQyODI2MTJhMTc1ZjY1MzM4Li5kMmZmMmU5MWFi
MTA5YTAxYTk3ZDdmNzgyZjNjYjZhMzdiYTAyNjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtMzMxMiw3ICszMzEyLDcgQEAgc3Rh
dGljIFJlZlB0cjxQYXR0ZXJuPiBwYXR0ZXJuRm9yRGVzY3JpcHRpb24oUGF0dGVybkRlc2NyaXB0
aW9uIGRlc2NyaXB0aW9uLCBGbG8KIHsKICAgICBjb25zdCBGbG9hdFNpemUgdGlsZVNpemUgeyAz
MiwgMTggfTsKIAotICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29t
cGF0aWJsZUJ1ZmZlcih0aWxlU2l6ZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIGRl
c3RDb250ZXh0KTsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gZGVzdENvbnRleHQuY3JlYXRlQ29t
cGF0aWJsZUltYWdlQnVmZmVyKHRpbGVTaXplKTsKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyRmlsdGVycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJGaWx0ZXJzLmNwcAppbmRleCA2ZGU0ZmYwMTdiOTI1N2E5YjZiMTA3MzZmMWM0ZTE4
OTFhOGU3NWEwLi41YmE5NGNmZDVkYmIxZTQ0YjVmYmQzYzViYzExYWQxOWFlYWY4ZjVkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmNwcApAQCAt
MSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQWRvYmUgU3lzdGVtcyBJbmNv
cnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0xMjksMTkgKzEyOSwxNiBAQCBHcmFwaGljc0NvbnRleHQqIFJlbmRlckxheWVy
RmlsdGVyczo6aW5wdXRDb250ZXh0KCkKICAgICByZXR1cm4gbV9zb3VyY2VJbWFnZSA/ICZtX3Nv
dXJjZUltYWdlLT5jb250ZXh0KCkgOiBudWxscHRyOwogfQogCi12b2lkIFJlbmRlckxheWVyRmls
dGVyczo6YWxsb2NhdGVCYWNraW5nU3RvcmVJZk5lZWRlZCgpCit2b2lkIFJlbmRlckxheWVyRmls
dGVyczo6YWxsb2NhdGVCYWNraW5nU3RvcmVJZk5lZWRlZChHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQpCiB7CiAgICAgYXV0byYgZmlsdGVyID0gKm1fZmlsdGVyOwogICAgIGF1dG8gbG9naWNhbFNp
emUgPSBmaWx0ZXIuc2NhbGVkQnlGaWx0ZXJTY2FsZShtX2ZpbHRlclJlZ2lvbi5zaXplKCkpOwog
Ci0gICAgaWYgKCFtX3NvdXJjZUltYWdlIHx8IG1fc291cmNlSW1hZ2UtPmxvZ2ljYWxTaXplKCkg
IT0gbG9naWNhbFNpemUpIHsKLSAgICAgICAgbV9zb3VyY2VJbWFnZSA9IEltYWdlQnVmZmVyOjpj
cmVhdGUobG9naWNhbFNpemUsIGZpbHRlci5yZW5kZXJpbmdNb2RlKCksIFNob3VsZFVzZURpc3Bs
YXlMaXN0OjpObywgUmVuZGVyaW5nUHVycG9zZTo6RE9NLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBtX2xheWVyLnJlbmRlcmVyKCkuaG9zdFdp
bmRvdygpKTsKLSAgICAgICAgaWYgKGF1dG8gY29udGV4dCA9IGlucHV0Q29udGV4dCgpKQotICAg
ICAgICAgICAgY29udGV4dC0+c2NhbGUoZmlsdGVyLmZpbHRlclNjYWxlKCkpOwotICAgIH0KKyAg
ICBpZiAoIW1fc291cmNlSW1hZ2UgfHwgbV9zb3VyY2VJbWFnZS0+bG9naWNhbFNpemUoKSAhPSBs
b2dpY2FsU2l6ZSkKKyAgICAgICAgbV9zb3VyY2VJbWFnZSA9IGNvbnRleHQuY3JlYXRlSW1hZ2VC
dWZmZXIobV9maWx0ZXJSZWdpb24uc2l6ZSgpLCBmaWx0ZXIuZmlsdGVyU2NhbGUoKSwgRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKCksIGZpbHRlci5yZW5kZXJpbmdNb2RlKCkpOwogfQogCi1H
cmFwaGljc0NvbnRleHQqIFJlbmRlckxheWVyRmlsdGVyczo6YmVnaW5GaWx0ZXJFZmZlY3QoUmVu
ZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IExheW91dFJlY3QmIGZpbHRlckJveFJlY3QsIGNv
bnN0IExheW91dFJlY3QmIGRpcnR5UmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgbGF5ZXJSZXBhaW50
UmVjdCkKK0dyYXBoaWNzQ29udGV4dCogUmVuZGVyTGF5ZXJGaWx0ZXJzOjpiZWdpbkZpbHRlckVm
ZmVjdChSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBMYXlvdXRSZWN0JiBmaWx0ZXJCb3hSZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBkaXJ0eVJl
Y3QsIGNvbnN0IExheW91dFJlY3QmIGxheWVyUmVwYWludFJlY3QpCiB7CiAgICAgaWYgKCFtX2Zp
bHRlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xOTMsNyArMTkwLDcgQEAgR3JhcGhp
Y3NDb250ZXh0KiBSZW5kZXJMYXllckZpbHRlcnM6OmJlZ2luRmlsdGVyRWZmZWN0KFJlbmRlckVs
ZW1lbnQmIHJlbmRlcmVyLAogICAgIHJlc2V0RGlydHlTb3VyY2VSZWN0KCk7CiAKICAgICBmaWx0
ZXIuc2V0RmlsdGVyUmVnaW9uKG1fZmlsdGVyUmVnaW9uKTsKLSAgICBhbGxvY2F0ZUJhY2tpbmdT
dG9yZUlmTmVlZGVkKCk7CisgICAgYWxsb2NhdGVCYWNraW5nU3RvcmVJZk5lZWRlZChjb250ZXh0
KTsKIAogICAgIGF1dG8qIHNvdXJjZUdyYXBoaWNzQ29udGV4dCA9IGlucHV0Q29udGV4dCgpOwog
ICAgIGlmICghc291cmNlR3JhcGhpY3NDb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVycy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyRmlsdGVycy5oCmluZGV4IGIwY2I3N2M4ZTEwNWM0YmUwN2Y2NmU2OTI0
NzE3M2JjOGU1ZTNhOWUuLjA1MTNjODg1YjQwYjc1ZTAxMzJmM2VhZGZlZjYwYzc4Njc4OWI5ZDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmgKQEAg
LTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEyIEFkb2JlIFN5c3RlbXMgSW5j
b3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNjMsMTQgKzYzLDE0IEBAIHB1YmxpYzoKICAgICAvLyBQZXIgcmVuZGVyCiAg
ICAgTGF5b3V0UmVjdCByZXBhaW50UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVwYWludFJlY3Q7
IH0KIAotICAgIEdyYXBoaWNzQ29udGV4dCogYmVnaW5GaWx0ZXJFZmZlY3QoUmVuZGVyRWxlbWVu
dCYsIGNvbnN0IExheW91dFJlY3QmIGZpbHRlckJveFJlY3QsIGNvbnN0IExheW91dFJlY3QmIGRp
cnR5UmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgbGF5ZXJSZXBhaW50UmVjdCk7CisgICAgR3JhcGhp
Y3NDb250ZXh0KiBiZWdpbkZpbHRlckVmZmVjdChSZW5kZXJFbGVtZW50JiwgR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgTGF5b3V0UmVjdCYgZmlsdGVyQm94UmVjdCwgY29uc3QgTGF5b3V0UmVjdCYg
ZGlydHlSZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBsYXllclJlcGFpbnRSZWN0KTsKICAgICB2b2lk
IGFwcGx5RmlsdGVyRWZmZWN0KEdyYXBoaWNzQ29udGV4dCYgZGVzdGluYXRpb25Db250ZXh0KTsK
IAogcHJpdmF0ZToKICAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAgICAgdm9pZCByZXNldERpcnR5U291cmNl
UmVjdCgpIHsgbV9kaXJ0eVNvdXJjZVJlY3QgPSBMYXlvdXRSZWN0KCk7IH0KICAgICBHcmFwaGlj
c0NvbnRleHQqIGlucHV0Q29udGV4dCgpOwotICAgIHZvaWQgYWxsb2NhdGVCYWNraW5nU3RvcmVJ
Zk5lZWRlZCgpOworICAgIHZvaWQgYWxsb2NhdGVCYWNraW5nU3RvcmVJZk5lZWRlZChHcmFwaGlj
c0NvbnRleHQmKTsKIAogICAgIFJlbmRlckxheWVyJiBtX2xheWVyOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDb2NvYS5tbSBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNvY29hLm1tCmluZGV4IDFhNjY3MzIyNzIyYWQzOGZj
MTUxNGJiYjExOWVkY2UzYThlZjczZjMuLmFiZDRjMWRiMTMxNGQ0NDIxYjczMjJhYTg1NzUxYWVi
MmY1OTNhZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNvY29h
Lm1tCkBAIC0xNTQsNyArMTU0LDcgQEAgYm9vbCBSZW5kZXJUaGVtZUNvY29hOjpwYWludEFwcGxl
UGF5QnV0dG9uKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIGNvbnN0IFAKIHsKICAgICBh
dXRvJiBkZXN0aW5hdGlvbkNvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpOwogCi0gICAgYXV0
byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKHBhaW50
UmVjdC5zaXplKCksIGRlc3RpbmF0aW9uQ29udGV4dCk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9
IGRlc3RpbmF0aW9uQ29udGV4dC5jcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIocGFpbnRSZWN0
LnNpemUoKSk7CiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KaW5kZXggNmM5NGU5
MmUwZmZmODQwMTNmMWE2ZWM2ODI5YzdlOTAwYTIwMDc4Zi4uZTQ3YTY2ZDBmMzBmMmFhNDdjMDQ0
OGIxZDFkZDRhNDE2YmZjNjYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZU1hYy5tbQpAQCAtOTk2LDcgKzk5Niw3IEBAIHZvaWQgUmVuZGVyVGhlbWVNYWM6OnBhaW50
TGlzdEJ1dHRvbkZvcklucHV0KGNvbnN0IFJlbmRlck9iamVjdCYgbywgR3JhcGhpY3NDb250CiAK
ICAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IG8uZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZh
Y3RvcigpOwogCi0gICAgYXV0byBjb21ib0JveEltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNy
ZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29tYm9Cb3hTaXplLCBkZXZpY2VTY2FsZUZhY3RvciwgRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIGNvbnRleHQpOworICAgIGF1dG8gY29tYm9Cb3hJ
bWFnZUJ1ZmZlciA9IGNvbnRleHQuY3JlYXRlSW1hZ2VCdWZmZXIoY29tYm9Cb3hTaXplLCB7IGRl
dmljZVNjYWxlRmFjdG9yLCBkZXZpY2VTY2FsZUZhY3RvciB9KTsKICAgICBpZiAoIWNvbWJvQm94
SW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTAyMCw3ICsxMDIwLDcgQEAgdm9p
ZCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRMaXN0QnV0dG9uRm9ySW5wdXQoY29uc3QgUmVuZGVyT2Jq
ZWN0JiBvLCBHcmFwaGljc0NvbnQKICAgICAgICAgKF9fYnJpZGdlIE5TU3RyaW5nICopa0NVSVVz
ZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25LZXkgOiAoX19icmlkZ2UgTlNTdHJpbmcgKilrQ1VJ
VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbkxlZnRUb1JpZ2h0LAogICAgIH1dOwogCi0gICAg
YXV0byBjb21ib0JveEJ1dHRvbkltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBh
dGlibGVCdWZmZXIoZGVzaXJlZENvbWJvQm94QnV0dG9uU2l6ZSwgZGV2aWNlU2NhbGVGYWN0b3Is
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBjb250ZXh0KTsKKyAgICBhdXRvIGNvbWJv
Qm94QnV0dG9uSW1hZ2VCdWZmZXIgPSBjb250ZXh0LmNyZWF0ZUltYWdlQnVmZmVyKGRlc2lyZWRD
b21ib0JveEJ1dHRvblNpemUsIHsgZGV2aWNlU2NhbGVGYWN0b3IsIGRldmljZVNjYWxlRmFjdG9y
IH0pOwogICAgIGlmICghY29tYm9Cb3hCdXR0b25JbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJu
OwogCkBAIC0xMzc5LDcgKzEzNzksNyBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludFByb2dy
ZXNzQmFyKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyT2JqZWN0LCBjb25zdCBQYQogICAgIGNv
bnN0IGF1dG8mIHJlbmRlclByb2dyZXNzID0gZG93bmNhc3Q8UmVuZGVyUHJvZ3Jlc3M+KHJlbmRl
ck9iamVjdCk7CiAgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSByZW5kZXJPYmplY3QuZG9j
dW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpOwogICAgIGJvb2wgaXNJbmRldGVybWluYXRlID0g
cmVuZGVyUHJvZ3Jlc3MucG9zaXRpb24oKSA8IDA7Ci0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IElt
YWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGluZmxhdGVkUmVjdC5zaXplKCksIGRl
dmljZVNjYWxlRmFjdG9yLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgcGFpbnRJbmZv
LmNvbnRleHQoKSk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IHBhaW50SW5mby5jb250ZXh0KCku
Y3JlYXRlSW1hZ2VCdWZmZXIoaW5mbGF0ZWRSZWN0LnNpemUoKSwgeyBkZXZpY2VTY2FsZUZhY3Rv
ciwgZGV2aWNlU2NhbGVGYWN0b3IgfSk7CiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAg
cmV0dXJuIHRydWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcAppbmRleCBkYTBkNTZjZDI3MDkwNDY0Nzhk
MDIyNGU4MjMwNDIwYTMxMjZhZGEwLi44N2ExYWU1OTFhNTcwMmQ3OTI3Y2I4YzY4ZTU5NWY0Y2Iw
ZjBjYjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlQ2xpcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCkBAIC0zLDYgKzMsNyBAQAogICogQ29weXJpZ2h0
IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+
CiAgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMDktMjAxMC4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMSBEaXJrIFNjaHVsemUg
PGtyaXRAd2Via2l0Lm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTE1Miw5ICsxNTMsMTYgQEAg
Ym9vbCBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OmFwcGx5Q2xpcHBpbmdUb0NvbnRleHQoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LAogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIEFmZmlu
ZVRyYW5zZm9ybSBhYnNvbHV0ZVRyYW5zZm9ybSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNhbGN1
bGF0ZVRyYW5zZm9ybWF0aW9uVG9PdXRlcm1vc3RDb29yZGluYXRlU3lzdGVtKHJlbmRlcmVyKTsK
KworICAgIC8vIElnbm9yZSAyRCByb3RhdGlvbiwgYXMgaXQgZG9lc24ndCBhZmZlY3QgdGhlIHNp
emUgb2YgdGhlIG1hc2suCisgICAgRmxvYXRTaXplIHNjYWxlKGFic29sdXRlVHJhbnNmb3JtLnhT
Y2FsZSgpLCBhYnNvbHV0ZVRyYW5zZm9ybS55U2NhbGUoKSk7CisKKyAgICAvLyBEZXRlcm1pbmUg
c2NhbGUgZmFjdG9yIGZvciB0aGUgY2xpcHBlci4gVGhlIHNpemUgb2YgaW50ZXJtZWRpYXRlIElt
YWdlQnVmZmVycyBzaG91bGRuJ3QgYmUgYmlnZ2VyIHRoYW4ga01heEZpbHRlclNpemUuCisgICAg
SW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKG9iamVjdEJvdW5kaW5nQm94LnNpemUoKSwg
c2NhbGUpOworCiAgICAgaWYgKCFjbGlwcGVyRGF0YS5pc1ZhbGlkRm9yR2VvbWV0cnkob2JqZWN0
Qm91bmRpbmdCb3gsIGNsaXBwZWRDb250ZW50Qm91bmRzLCBhYnNvbHV0ZVRyYW5zZm9ybSkpIHsK
ICAgICAgICAgLy8gRklYTUUgKDE0OTQ2OSk6IFRoaXMgaW1hZ2UgYnVmZmVyIHNob3VsZCBub3Qg
YmUgdW5jb25kaXRpb25hbGx5IHVuYWNjZWxlcmF0ZWQuIE1ha2luZyBpdCBtYXRjaCB0aGUgY29u
dGV4dCBicmVha3MgbmVzdGVkIGNsaXBwaW5nLCB0aG91Z2guCi0gICAgICAgIGF1dG8gbWFza0lt
YWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY2xpcHBlZENvbnRl
bnRCb3VuZHMsIGFic29sdXRlVHJhbnNmb3JtLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgaG9zdFdpbmRvdygpKTsKKyAgICAgICAg
YXV0byBtYXNrSW1hZ2UgPSBjb250ZXh0LmNyZWF0ZUltYWdlQnVmZmVyKGNsaXBwZWRDb250ZW50
Qm91bmRzLCBzY2FsZSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFJlbmRlcmluZ01v
ZGU6OlVuYWNjZWxlcmF0ZWQpOwogICAgICAgICBpZiAoIW1hc2tJbWFnZSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKIApAQCAtMTg1LDcgKzE5Myw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3Vy
Y2VDbGlwcGVyOjphcHBseUNsaXBwaW5nVG9Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwKICAgICBpZiAoIWNsaXBwZXJEYXRhLmltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBTVkdSZW5kZXJpbmdDb250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcihjb250ZXh0
LCBhYnNvbHV0ZVRyYW5zZm9ybSwgY2xpcHBlZENvbnRlbnRCb3VuZHMsIGNsaXBwZXJEYXRhLmlt
YWdlQnVmZmVyLCB0cnVlKTsKKyAgICBTVkdSZW5kZXJpbmdDb250ZXh0OjpjbGlwVG9JbWFnZUJ1
ZmZlcihjb250ZXh0LCBjbGlwcGVkQ29udGVudEJvdW5kcywgc2NhbGUsIGNsaXBwZXJEYXRhLmlt
YWdlQnVmZmVyLCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcApp
bmRleCA3ODY1YTU4NWE0N2VmZDgyNDYxNzUxZjlmZmE5YTFkMWIxYjI3MTQ5Li5iOTYzNjJjOTdh
M2I0MDNkNWU0MDRiMmNjZjM4NzA0ZDlhOTYyNDg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcApAQCAtNCw2
ICs0LDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwNSBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQu
b3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA5IERpcmsgU2NodWx6ZSA8a3JpdEB3ZWJraXQub3Jn
PgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIxLTIwMjIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0xNDYsMjMgKzE0Nywy
MSBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291cmNlKFJlbmRlckVs
ZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBSZW5kZQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogCi0gICAgLy8gQ2hhbmdlIHRoZSBjb29yZGluYXRlIHRyYW5zZm9ybWF0aW9uIGFwcGxpZWQg
dG8gdGhlIGZpbHRlcmVkIGVsZW1lbnQgdG8gcmVmbGVjdCB0aGUgcmVzb2x1dGlvbiBvZiB0aGUg
ZmlsdGVyLgotICAgIGF1dG8gZWZmZWN0aXZlVHJhbnNmb3JtID0gQWZmaW5lVHJhbnNmb3JtKGZp
bHRlclNjYWxlLndpZHRoKCksIDAsIDAsIGZpbHRlclNjYWxlLmhlaWdodCgpLCAwLCAwKTsKLQog
I2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JHQikKICAgICBhdXRv
IGNvbG9yU3BhY2UgPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNSR0IoKTsKICNlbHNl
CiAgICAgYXV0byBjb2xvclNwYWNlID0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCk7CiAj
ZW5kaWYKLSAgICBhdXRvIHNvdXJjZUdyYXBoaWMgPSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVh
dGVJbWFnZUJ1ZmZlcihmaWx0ZXJEYXRhLT5kcmF3aW5nUmVnaW9uLCBlZmZlY3RpdmVUcmFuc2Zv
cm0sIGNvbG9yU3BhY2UsIGZpbHRlckRhdGEtPmZpbHRlci0+cmVuZGVyaW5nTW9kZSgpLCByZW5k
ZXJlci5ob3N0V2luZG93KCkpOworCisgICAgYXV0byBzb3VyY2VHcmFwaGljID0gY29udGV4dC0+
Y3JlYXRlSW1hZ2VCdWZmZXIoZmlsdGVyRGF0YS0+ZHJhd2luZ1JlZ2lvbiwgZmlsdGVyU2NhbGUs
IGNvbG9yU3BhY2UsIGZpbHRlckRhdGEtPmZpbHRlci0+cmVuZGVyaW5nTW9kZSgpKTsKICAgICBp
ZiAoIXNvdXJjZUdyYXBoaWMpIHsKICAgICAgICAgQVNTRVJUKG1fcmVuZGVyZXJGaWx0ZXJEYXRh
TWFwLmNvbnRhaW5zKCZyZW5kZXJlcikpOwogICAgICAgICBmaWx0ZXJEYXRhLT5zYXZlZENvbnRl
eHQgPSBjb250ZXh0OwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIAorCiAgICAg
YXV0byYgc291cmNlR3JhcGhpY0NvbnRleHQgPSBzb3VyY2VHcmFwaGljLT5jb250ZXh0KCk7Ci0g
IAorCiAgICAgZmlsdGVyRGF0YS0+c291cmNlR3JhcGhpY0J1ZmZlciA9IFdURk1vdmUoc291cmNl
R3JhcGhpYyk7CiAgICAgZmlsdGVyRGF0YS0+c2F2ZWRDb250ZXh0ID0gY29udGV4dDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdy
YWRpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VHcmFkaWVudC5jcHAKaW5kZXggNDQ3NWE2OWY4ZjJjOTY2ZjYzYzMxODNmMzJlZjE1NDg1YTg0
YWMyYi4uY2RhMmYzMjc5OWIyMGNkYTNhMDkxZWQ3YTMzZWI3MmU4NzYwM2I3NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
R3JhZGllbnQuY3BwCkBAIC02MCw3ICs2MCwxMyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgY3JlYXRl
TWFza0FuZFN3YXBDb250ZXh0Rm9yVGV4dEdyYWRpZW50KEdyYXBoaWNzQ29udGV4dComIGNvbgog
ICAgIEFmZmluZVRyYW5zZm9ybSBhYnNvbHV0ZVRyYW5zZm9ybSA9IFNWR1JlbmRlcmluZ0NvbnRl
eHQ6OmNhbGN1bGF0ZVRyYW5zZm9ybWF0aW9uVG9PdXRlcm1vc3RDb29yZGluYXRlU3lzdGVtKCp0
ZXh0Um9vdEJsb2NrKTsKICAgICBGbG9hdFJlY3QgcmVwYWludFJlY3QgPSB0ZXh0Um9vdEJsb2Nr
LT5yZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpOwogCi0gICAgYXV0byBtYXNrSW1hZ2Ug
PSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihyZXBhaW50UmVjdCwgYWJz
b2x1dGVUcmFuc2Zvcm0sIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBjb250ZXh0LT5y
ZW5kZXJpbmdNb2RlKCksIHJlbmRlcmVyLmhvc3RXaW5kb3coKSk7CisgICAgLy8gSWdub3JlIDJE
IHJvdGF0aW9uLCBhcyBpdCBkb2Vzbid0IGFmZmVjdCB0aGUgc2l6ZSBvZiB0aGUgbWFzay4KKyAg
ICBGbG9hdFNpemUgc2NhbGUoYWJzb2x1dGVUcmFuc2Zvcm0ueFNjYWxlKCksIGFic29sdXRlVHJh
bnNmb3JtLnlTY2FsZSgpKTsKKworICAgIC8vIERldGVybWluZSBzY2FsZSBmYWN0b3IgZm9yIHRo
ZSBjbGlwcGVyLiBUaGUgc2l6ZSBvZiBpbnRlcm1lZGlhdGUgSW1hZ2VCdWZmZXJzIHNob3VsZG4n
dCBiZSBiaWdnZXIgdGhhbiBrTWF4RmlsdGVyU2l6ZS4KKyAgICBJbWFnZUJ1ZmZlcjo6c2l6ZU5l
ZWRzQ2xhbXBpbmcocmVwYWludFJlY3Quc2l6ZSgpLCBzY2FsZSk7CisKKyAgICBhdXRvIG1hc2tJ
bWFnZSA9IGNvbnRleHQtPmNyZWF0ZUltYWdlQnVmZmVyKHJlcGFpbnRSZWN0LCBzY2FsZSk7CiAg
ICAgaWYgKCFtYXNrSW1hZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtODAsOCArODYs
MTQgQEAgc3RhdGljIGlubGluZSBBZmZpbmVUcmFuc2Zvcm0gY2xpcFRvVGV4dE1hc2soR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBSZWZQdHI8SW0KICAgICBBZmZpbmVUcmFuc2Zvcm0gYWJzb2x1
dGVUcmFuc2Zvcm0gPSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjYWxjdWxhdGVUcmFuc2Zvcm1hdGlv
blRvT3V0ZXJtb3N0Q29vcmRpbmF0ZVN5c3RlbSgqdGV4dFJvb3RCbG9jayk7CiAKICAgICB0YXJn
ZXRSZWN0ID0gdGV4dFJvb3RCbG9jay0+cmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKTsK
KyAgICAKKyAgICAvLyBJZ25vcmUgMkQgcm90YXRpb24sIGFzIGl0IGRvZXNuJ3QgYWZmZWN0IHRo
ZSBzaXplIG9mIHRoZSBtYXNrLgorICAgIEZsb2F0U2l6ZSBzY2FsZShhYnNvbHV0ZVRyYW5zZm9y
bS54U2NhbGUoKSwgYWJzb2x1dGVUcmFuc2Zvcm0ueVNjYWxlKCkpOworCisgICAgLy8gRGV0ZXJt
aW5lIHNjYWxlIGZhY3RvciBmb3IgdGhlIGNsaXBwZXIuIFRoZSBzaXplIG9mIGludGVybWVkaWF0
ZSBJbWFnZUJ1ZmZlcnMgc2hvdWxkbid0IGJlIGJpZ2dlciB0aGFuIGtNYXhGaWx0ZXJTaXplLgor
ICAgIEltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyh0YXJnZXRSZWN0LnNpemUoKSwgc2Nh
bGUpOwogCi0gICAgU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIoY29udGV4
dCwgYWJzb2x1dGVUcmFuc2Zvcm0sIHRhcmdldFJlY3QsIGltYWdlQnVmZmVyLCBmYWxzZSk7Cisg
ICAgU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIoY29udGV4dCwgdGFyZ2V0
UmVjdCwgc2NhbGUsIGltYWdlQnVmZmVyLCBmYWxzZSk7CiAKICAgICBBZmZpbmVUcmFuc2Zvcm0g
bWF0cml4OwogICAgIGlmIChib3VuZGluZ0JveE1vZGUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAKaW5kZXgg
NzY0ZjdjODg4ZjMyYmYxOTU4YWViZTJiN2U2MWE1MTk5OWMyOTg1MC4uM2RiMDEzMTFkZjViNWM5
NDdlMDdiNDZjNThhZWRhNzQ3MmYyZjI1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAKQEAgLTEsNSArMSw2
IEBACiAvKgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDA5
LTIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC02OCw2ICs2
OSwxMiBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlTWFza2VyOjphcHBseVJlc291cmNlKFJlbmRl
ckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBSZW5kZQogICAgIEFmZmluZVRyYW5zZm9ybSBhYnNv
bHV0ZVRyYW5zZm9ybSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNhbGN1bGF0ZVRyYW5zZm9ybWF0
aW9uVG9PdXRlcm1vc3RDb29yZGluYXRlU3lzdGVtKHJlbmRlcmVyKTsKICAgICBGbG9hdFJlY3Qg
cmVwYWludFJlY3QgPSByZW5kZXJlci5yZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpOwog
CisgICAgLy8gSWdub3JlIDJEIHJvdGF0aW9uLCBhcyBpdCBkb2Vzbid0IGFmZmVjdCB0aGUgc2l6
ZSBvZiB0aGUgbWFzay4KKyAgICBGbG9hdFNpemUgc2NhbGUoYWJzb2x1dGVUcmFuc2Zvcm0ueFNj
YWxlKCksIGFic29sdXRlVHJhbnNmb3JtLnlTY2FsZSgpKTsKKworICAgIC8vIERldGVybWluZSBz
Y2FsZSBmYWN0b3IgZm9yIHRoZSBtYXNrLiBUaGUgc2l6ZSBvZiBpbnRlcm1lZGlhdGUgSW1hZ2VC
dWZmZXJzIHNob3VsZG4ndCBiZSBiaWdnZXIgdGhhbiBrTWF4RmlsdGVyU2l6ZS4KKyAgICBJbWFn
ZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcocmVwYWludFJlY3Quc2l6ZSgpLCBzY2FsZSk7CisK
ICAgICBpZiAoIW1hc2tlckRhdGEtPm1hc2tJbWFnZSAmJiAhcmVwYWludFJlY3QuaXNFbXB0eSgp
KSB7CiAgICAgICAgIGNvbnN0IFNWR1JlbmRlclN0eWxlJiBzdmdTdHlsZSA9IHN0eWxlKCkuc3Zn
U3R5bGUoKTsKIApAQCAtODIsOSArODksOCBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlTWFza2Vy
OjphcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBSZW5kZQogICAg
ICAgICAgICAgZHJhd0NvbG9yU3BhY2UgPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OkxpbmVhclNS
R0IoKTsKICAgICAgICAgfQogI2VuZGlmCi0KICAgICAgICAgLy8gRklYTUUgKDE0OTQ3MCk6IFRo
aXMgaW1hZ2UgYnVmZmVyIHNob3VsZCBub3QgYmUgdW5jb25kaXRpb25hbGx5IHVuYWNjZWxlcmF0
ZWQuIE1ha2luZyBpdCBtYXRjaCB0aGUgY29udGV4dCBicmVha3MgYWxwaGEgbWFza2luZywgdGhv
dWdoLgotICAgICAgICBtYXNrZXJEYXRhLT5tYXNrSW1hZ2UgPSBTVkdSZW5kZXJpbmdDb250ZXh0
OjpjcmVhdGVJbWFnZUJ1ZmZlcihyZXBhaW50UmVjdCwgYWJzb2x1dGVUcmFuc2Zvcm0sIG1hc2tD
b2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCBob3N0V2luZG93KCkpOwor
ICAgICAgICBtYXNrZXJEYXRhLT5tYXNrSW1hZ2UgPSBjb250ZXh0LT5jcmVhdGVJbWFnZUJ1ZmZl
cihyZXBhaW50UmVjdCwgc2NhbGUsIG1hc2tDb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlOjpVbmFj
Y2VsZXJhdGVkKTsKICAgICAgICAgaWYgKCFtYXNrZXJEYXRhLT5tYXNrSW1hZ2UpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTk1LDcgKzEwMSw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVz
b3VyY2VNYXNrZXI6OmFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0
IFJlbmRlCiAgICAgaWYgKCFtYXNrZXJEYXRhLT5tYXNrSW1hZ2UpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKCpjb250
ZXh0LCBhYnNvbHV0ZVRyYW5zZm9ybSwgcmVwYWludFJlY3QsIG1hc2tlckRhdGEtPm1hc2tJbWFn
ZSwgbWlzc2luZ01hc2tlckRhdGEpOworICAgIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNsaXBUb0lt
YWdlQnVmZmVyKCpjb250ZXh0LCByZXBhaW50UmVjdCwgc2NhbGUsIG1hc2tlckRhdGEtPm1hc2tJ
bWFnZSwgbWlzc2luZ01hc2tlckRhdGEpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVy
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0
dGVybi5jcHAKaW5kZXggZThiNTFjZmI5Mzk0OTI2MzgxZWYzYjA0YTNlMTdhNWZkMTVjMDg2Yi4u
ODAwYjViNTU1NjNhOWQ4Nzc1ODk2ZjQ1ZWMyN2NhMjQ5NmJjYTJmMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJu
LmNwcApAQCAtMSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgTmlrb2xhcyBa
aW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNo
IEluIE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
ICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCkBAIC05NSwxOSArOTYsMTYgQEAgUGF0dGVybkRhdGEqIFJlbmRlclNWR1Jlc291cmNl
UGF0dGVybjo6YnVpbGRQYXR0ZXJuKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBPcHQKICAgICBp
ZiAoIWJ1aWxkVGlsZUltYWdlVHJhbnNmb3JtKHJlbmRlcmVyLCBtX2F0dHJpYnV0ZXMsIHBhdHRl
cm5FbGVtZW50KCksIHRpbGVCb3VuZGFyaWVzLCB0aWxlSW1hZ2VUcmFuc2Zvcm0pKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgIEFmZmluZVRyYW5zZm9ybSBhYnNvbHV0ZVRyYW5zZm9y
bUlnbm9yaW5nUm90YXRpb24gPSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjYWxjdWxhdGVUcmFuc2Zv
cm1hdGlvblRvT3V0ZXJtb3N0Q29vcmRpbmF0ZVN5c3RlbShyZW5kZXJlcik7CisgICAgYXV0byBh
YnNvbHV0ZVRyYW5zZm9ybSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNhbGN1bGF0ZVRyYW5zZm9y
bWF0aW9uVG9PdXRlcm1vc3RDb29yZGluYXRlU3lzdGVtKHJlbmRlcmVyKTsKIAogICAgIC8vIEln
bm9yZSAyRCByb3RhdGlvbiwgYXMgaXQgZG9lc24ndCBhZmZlY3QgdGhlIHNpemUgb2YgdGhlIHRp
bGUuCi0gICAgU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2xlYXIyRFJvdGF0aW9uKGFic29sdXRlVHJh
bnNmb3JtSWdub3JpbmdSb3RhdGlvbik7Ci0gICAgRmxvYXRSZWN0IGFic29sdXRlVGlsZUJvdW5k
YXJpZXMgPSBhYnNvbHV0ZVRyYW5zZm9ybUlnbm9yaW5nUm90YXRpb24ubWFwUmVjdCh0aWxlQm91
bmRhcmllcyk7Ci0gICAgRmxvYXRSZWN0IGNsYW1wZWRBYnNvbHV0ZVRpbGVCb3VuZGFyaWVzOwor
ICAgIEZsb2F0U2l6ZSB0aWxlU2NhbGUoYWJzb2x1dGVUcmFuc2Zvcm0ueFNjYWxlKCksIGFic29s
dXRlVHJhbnNmb3JtLnlTY2FsZSgpKTsKIAogICAgIC8vIFNjYWxlIHRoZSB0aWxlIHNpemUgdG8g
bWF0Y2ggdGhlIHNjYWxlIGxldmVsIG9mIHRoZSBwYXR0ZXJuVHJhbnNmb3JtLgotICAgIGFic29s
dXRlVGlsZUJvdW5kYXJpZXMuc2NhbGUoc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fYXR0cmlidXRlcy5w
YXR0ZXJuVHJhbnNmb3JtKCkueFNjYWxlKCkpLAotICAgICAgICBzdGF0aWNfY2FzdDxmbG9hdD4o
bV9hdHRyaWJ1dGVzLnBhdHRlcm5UcmFuc2Zvcm0oKS55U2NhbGUoKSkpOworICAgIHRpbGVTY2Fs
ZS5zY2FsZShzdGF0aWNfY2FzdDxmbG9hdD4obV9hdHRyaWJ1dGVzLnBhdHRlcm5UcmFuc2Zvcm0o
KS54U2NhbGUoKSksIHN0YXRpY19jYXN0PGZsb2F0PihtX2F0dHJpYnV0ZXMucGF0dGVyblRyYW5z
Zm9ybSgpLnlTY2FsZSgpKSk7CiAKICAgICAvLyBCdWlsZCB0aWxlIGltYWdlLgotICAgIGF1dG8g
dGlsZUltYWdlID0gY3JlYXRlVGlsZUltYWdlKG1fYXR0cmlidXRlcywgdGlsZUJvdW5kYXJpZXMs
IGFic29sdXRlVGlsZUJvdW5kYXJpZXMsIHRpbGVJbWFnZVRyYW5zZm9ybSwgY2xhbXBlZEFic29s
dXRlVGlsZUJvdW5kYXJpZXMsIGNvbnRleHQucmVuZGVyaW5nTW9kZSgpKTsKKyAgICBhdXRvIHRp
bGVJbWFnZSA9IGNyZWF0ZVRpbGVJbWFnZShjb250ZXh0LCB0aWxlQm91bmRhcmllcy5zaXplKCks
IHRpbGVTY2FsZSwgdGlsZUltYWdlVHJhbnNmb3JtLCBtX2F0dHJpYnV0ZXMpOwogICAgIGlmICgh
dGlsZUltYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMjM0LDI1ICsyMzIsMzAg
QEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OmJ1aWxkVGlsZUltYWdlVHJhbnNmb3Jt
KFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLAogICAgIHJldHVybiB0cnVlOwogfQogCi1SZWZQdHI8
SW1hZ2VCdWZmZXI+IFJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6Y3JlYXRlVGlsZUltYWdlKGNv
bnN0IFBhdHRlcm5BdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBjb25zdCBGbG9hdFJlY3QmIHRpbGVC
b3VuZGFyaWVzLCBjb25zdCBGbG9hdFJlY3QmIGFic29sdXRlVGlsZUJvdW5kYXJpZXMsIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYgdGlsZUltYWdlVHJhbnNmb3JtLCBGbG9hdFJlY3QmIGNsYW1wZWRB
YnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUpIGNvbnN0
CitSZWZQdHI8SW1hZ2VCdWZmZXI+IFJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6Y3JlYXRlVGls
ZUltYWdlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRTaXplJiBzaXplLCBj
b25zdCBGbG9hdFNpemUmIHNjYWxlLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSwg
Y29uc3QgUGF0dGVybkF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpIGNvbnN0CiB7Ci0gICAgY2xhbXBl
ZEFic29sdXRlVGlsZUJvdW5kYXJpZXMgPSBJbWFnZUJ1ZmZlcjo6Y2xhbXBlZFJlY3QoYWJzb2x1
dGVUaWxlQm91bmRhcmllcyk7Ci0gICAgYXV0byB0aWxlSW1hZ2UgPSBTVkdSZW5kZXJpbmdDb250
ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihhYnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCBjbGFtcGVkQWJz
b2x1dGVUaWxlQm91bmRhcmllcywgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIHJlbmRl
cmluZ01vZGUsIGhvc3RXaW5kb3coKSk7CisgICAgLy8gVGhpcyBpcyBlcXVpdmFsZW50IHRvIG1h
a2luZyBjcmVhdGVJbWFnZUJ1ZmZlcigpIHVzZSByb3VuZGVkSW50U2l6ZSgpLgorICAgIGF1dG8g
cm91bmRlZFVuc2NhbGVkSW1hZ2VCdWZmZXJTaXplID0gW10oY29uc3QgRmxvYXRTaXplJiBzaXpl
LCBjb25zdCBGbG9hdFNpemUmIHNjYWxlKSAtPiBGbG9hdFNpemUgeworICAgICAgICBhdXRvIHNj
YWxlZFNpemUgPSBzaXplICogc2NhbGU7CisgICAgICAgIHJldHVybiBzaXplIC0gKGV4cGFuZGVk
SW50U2l6ZShzY2FsZWRTaXplKSAtIHJvdW5kZWRJbnRTaXplKHNjYWxlZFNpemUpKSAqIChzY2Fs
ZWRTaXplIC0gZmxvb3JlZEludFNpemUoc2NhbGVkU2l6ZSkpIC8gc2NhbGU7CisgICAgfTsKKwor
ICAgIGF1dG8gdGlsZVNpemUgPSByb3VuZGVkVW5zY2FsZWRJbWFnZUJ1ZmZlclNpemUoc2l6ZSwg
c2NhbGUpOworCisgICAgLy8gRklYTUU6IFVzZSBjcmVhdGVJbWFnZUJ1ZmZlcihyZWN0LCBzY2Fs
ZSksIGRlbGV0ZSB0aGUgYWJvdmUgY2FsY3VsYXRpb25zIGFuZCBmaXggJ3RyYW5zZm9ybScKKyAg
ICBhdXRvIHRpbGVJbWFnZSA9IGNvbnRleHQuY3JlYXRlSW1hZ2VCdWZmZXIodGlsZVNpemUsIHNj
YWxlKTsKICAgICBpZiAoIXRpbGVJbWFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAg
ICBHcmFwaGljc0NvbnRleHQmIHRpbGVJbWFnZUNvbnRleHQgPSB0aWxlSW1hZ2UtPmNvbnRleHQo
KTsKIAotICAgIC8vIFRoZSBpbWFnZSBidWZmZXIgcmVwcmVzZW50cyB0aGUgZmluYWwgcmVuZGVy
ZWQgc2l6ZSwgc28gdGhlIGNvbnRlbnQgaGFzIHRvIGJlIHNjYWxlZCAodG8gYXZvaWQgcGl4ZWxh
dGlvbikuCi0gICAgdGlsZUltYWdlQ29udGV4dC5zY2FsZShjbGFtcGVkQWJzb2x1dGVUaWxlQm91
bmRhcmllcy5zaXplKCkgLyB0aWxlQm91bmRhcmllcy5zaXplKCkpOwotCiAgICAgLy8gQXBwbHkg
dGlsZSBpbWFnZSB0cmFuc2Zvcm1hdGlvbnMuCi0gICAgaWYgKCF0aWxlSW1hZ2VUcmFuc2Zvcm0u
aXNJZGVudGl0eSgpKQotICAgICAgICB0aWxlSW1hZ2VDb250ZXh0LmNvbmNhdENUTSh0aWxlSW1h
Z2VUcmFuc2Zvcm0pOworICAgIGlmICghdHJhbnNmb3JtLmlzSWRlbnRpdHkoKSkKKyAgICAgICAg
dGlsZUltYWdlQ29udGV4dC5jb25jYXRDVE0odHJhbnNmb3JtKTsKIAogICAgIEFmZmluZVRyYW5z
Zm9ybSBjb250ZW50VHJhbnNmb3JtYXRpb247CiAgICAgaWYgKGF0dHJpYnV0ZXMucGF0dGVybkNv
bnRlbnRVbml0cygpID09IFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElO
R0JPWCkKLSAgICAgICAgY29udGVudFRyYW5zZm9ybWF0aW9uID0gdGlsZUltYWdlVHJhbnNmb3Jt
OworICAgICAgICBjb250ZW50VHJhbnNmb3JtYXRpb24gPSB0cmFuc2Zvcm07CiAKICAgICAvLyBE
cmF3IHRoZSBjb250ZW50IGludG8gdGhlIEltYWdlQnVmZmVyLgogICAgIGZvciAoYXV0byYgY2hp
bGQgOiBjaGlsZHJlbk9mVHlwZTxTVkdFbGVtZW50PigqYXR0cmlidXRlcy5wYXR0ZXJuQ29udGVu
dEVsZW1lbnQoKSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5oCmluZGV4IDcxMTdmMTI3ZDBkZGQ3M2JhNWViYzU1
OTkwMTBjMjRiYjYyZjA4YTYuLjljMzIwMWViOWMyNDFhZjVjZWFkMWU3MDFmOWFlMTQyYTYyYmEx
Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VQYXR0ZXJuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZVBhdHRlcm4uaApAQCAtMSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmln
aHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC02MSw3ICs2Miw3IEBAIHByaXZhdGU6CiAKICAgICBi
b29sIGJ1aWxkVGlsZUltYWdlVHJhbnNmb3JtKFJlbmRlckVsZW1lbnQmLCBjb25zdCBQYXR0ZXJu
QXR0cmlidXRlcyYsIGNvbnN0IFNWR1BhdHRlcm5FbGVtZW50JiwgRmxvYXRSZWN0JiBwYXR0ZXJu
Qm91bmRhcmllcywgQWZmaW5lVHJhbnNmb3JtJiB0aWxlSW1hZ2VUcmFuc2Zvcm0pIGNvbnN0Owog
Ci0gICAgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVUaWxlSW1hZ2UoY29uc3QgUGF0dGVybkF0
dHJpYnV0ZXMmLCBjb25zdCBGbG9hdFJlY3QmIHRpbGVCb3VuZGFyaWVzLCBjb25zdCBGbG9hdFJl
Y3QmIGFic29sdXRlVGlsZUJvdW5kYXJpZXMsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdGlsZUlt
YWdlVHJhbnNmb3JtLCBGbG9hdFJlY3QmIGNsYW1wZWRBYnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCBS
ZW5kZXJpbmdNb2RlKSBjb25zdDsKKyAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZVRpbGVJ
bWFnZShHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBGbG9hdFNpemUm
IHNjYWxlLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBQYXR0ZXJuQXR0cmlidXRlcyYp
IGNvbnN0OwogCiAgICAgUGF0dGVybkRhdGEqIGJ1aWxkUGF0dGVybihSZW5kZXJFbGVtZW50Jiwg
T3B0aW9uU2V0PFJlbmRlclNWR1Jlc291cmNlTW9kZT4sIEdyYXBoaWNzQ29udGV4dCYpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRl
eHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0
LmNwcAppbmRleCBmMDhlODcyZDI4NjZhZTUzNDI0ODZlM2M5Zjk5OGVkYzk0NDk4NGI5Li45NGJj
NmY1M2JmYzBkODhlZTg0Y2ZjMTBkYzk5NDAyZDI1ODExZmQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTIyNyw1
MiArMjI3LDYgQEAgQWZmaW5lVHJhbnNmb3JtIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNhbGN1bGF0
ZVRyYW5zZm9ybWF0aW9uVG9PdXRlcm1vc3RDb29yZGluYXQKICAgICByZXR1cm4gYWJzb2x1dGVU
cmFuc2Zvcm07CiB9CiAKLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gU1ZHUmVuZGVyaW5nQ29udGV4dDo6
Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UmIGNvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgY29uc3QgSG9zdFdp
bmRvdyogaG9zdFdpbmRvdykKLXsKLSAgICBJbnRSZWN0IHBhaW50UmVjdCA9IGNhbGN1bGF0ZUlt
YWdlQnVmZmVyUmVjdCh0YXJnZXRSZWN0LCBhYnNvbHV0ZVRyYW5zZm9ybSk7Ci0gICAgLy8gRG9u
J3QgY3JlYXRlIGVtcHR5IEltYWdlQnVmZmVycy4KLSAgICBpZiAocGFpbnRSZWN0LmlzRW1wdHko
KSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBGbG9hdFNpemUgc2NhbGUoMSwgMSk7
Ci0gICAgRmxvYXRTaXplIGNsYW1wZWRTaXplID0gcGFpbnRSZWN0LnNpemUoKTsKLSAgICBpZiAo
SW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKGNsYW1wZWRTaXplLCBzY2FsZSkpCi0gICAg
ICAgIGNsYW1wZWRTaXplID0gY2xhbXBlZFNpemUgKiBzY2FsZTsKLQotICAgIGF1dG8gaW1hZ2VC
dWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNsYW1wZWRTaXplLCByZW5kZXJpbmdNb2RlLCBT
aG91bGRVc2VEaXNwbGF5TGlzdDo6Tm8sIFJlbmRlcmluZ1B1cnBvc2U6OkRPTSwgMSwgY29sb3JT
cGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBob3N0V2luZG93KTsKLSAgICBpZiAoIWltYWdlQnVm
ZmVyKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIEFmZmluZVRyYW5zZm9ybSB0cmFu
c2Zvcm07Ci0gICAgdHJhbnNmb3JtLnNjYWxlKHNjYWxlKS50cmFuc2xhdGUoLXBhaW50UmVjdC5s
b2NhdGlvbigpKS5tdWx0aXBseShhYnNvbHV0ZVRyYW5zZm9ybSk7Ci0KLSAgICBHcmFwaGljc0Nv
bnRleHQmIGltYWdlQ29udGV4dCA9IGltYWdlQnVmZmVyLT5jb250ZXh0KCk7Ci0gICAgaW1hZ2VD
b250ZXh0LmNvbmNhdENUTSh0cmFuc2Zvcm0pOwotCi0gICAgcmV0dXJuIGltYWdlQnVmZmVyOwot
fQotCi1SZWZQdHI8SW1hZ2VCdWZmZXI+IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdl
QnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBjbGFt
cGVkUmVjdCwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBSZW5kZXJp
bmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCi17Ci0g
ICAgSW50U2l6ZSBjbGFtcGVkU2l6ZSA9IHJvdW5kZWRJbnRTaXplKGNsYW1wZWRSZWN0LnNpemUo
KSk7Ci0gICAgRmxvYXRTaXplIHVuY2xhbXBlZFNpemUgPSByb3VuZGVkSW50U2l6ZSh0YXJnZXRS
ZWN0LnNpemUoKSk7Ci0KLSAgICAvLyBEb24ndCBjcmVhdGUgZW1wdHkgSW1hZ2VCdWZmZXJzLgot
ICAgIGlmIChjbGFtcGVkU2l6ZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwot
Ci0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY2xhbXBlZFNpemUs
IHJlbmRlcmluZ01vZGUsIFNob3VsZFVzZURpc3BsYXlMaXN0OjpObywgUmVuZGVyaW5nUHVycG9z
ZTo6RE9NLCAxLCBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgsIGhvc3RXaW5kb3cpOwot
ICAgIGlmICghaW1hZ2VCdWZmZXIpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgR3Jh
cGhpY3NDb250ZXh0JiBpbWFnZUNvbnRleHQgPSBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpOwotCi0g
ICAgLy8gQ29tcGVuc2F0ZSByb3VuZGluZyBlZmZlY3RzLCBhcyB0aGUgYWJzb2x1dGUgdGFyZ2V0
IHJlY3QgaXMgdXNpbmcgZmxvYXRpbmctcG9pbnQgbnVtYmVycyBhbmQgdGhlIGltYWdlIGJ1ZmZl
ciBzaXplIGlzIGludGVnZXIuCi0gICAgaW1hZ2VDb250ZXh0LnNjYWxlKHVuY2xhbXBlZFNpemUg
LyB0YXJnZXRSZWN0LnNpemUoKSk7Ci0KLSAgICByZXR1cm4gaW1hZ2VCdWZmZXI7Ci19Ci0KIHZv
aWQgU1ZHUmVuZGVyaW5nQ29udGV4dDo6cmVuZGVyU3VidHJlZVRvQ29udGV4dChHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIFJlbmRlckVsZW1lbnQmIGl0ZW0sIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgc3VidHJlZUNvbnRlbnRUcmFuc2Zvcm1hdGlvbikKIHsKICAgICAvLyBSZW5kZXJpbmcgaW50
byBhIGJ1ZmZlciBpbXBsaWVzIHdlJ3JlIGJlaW5nIHVzZWQgZm9yIG1hc2tpbmcsIGNsaXBwaW5n
LCBwYXR0ZXJucyBvciBmaWx0ZXJzLiBJbiBlYWNoIG9mIHRoZXNlCkBAIC0yODksMTggKzI0Mywx
OSBAQCB2b2lkIFNWR1JlbmRlcmluZ0NvbnRleHQ6OnJlbmRlclN1YnRyZWVUb0NvbnRleHQoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBSZW5kZQogICAgIGNvbnRlbnRUcmFuc2Zvcm1hdGlvbiA9
IHNhdmVkQ29udGVudFRyYW5zZm9ybWF0aW9uOwogfQogCi12b2lkIFNWR1JlbmRlcmluZ0NvbnRl
eHQ6OmNsaXBUb0ltYWdlQnVmZmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRS
ZWN0LCBSZWZQdHI8SW1hZ2VCdWZmZXI+JiBpbWFnZUJ1ZmZlciwgYm9vbCBzYWZlVG9DbGVhcikK
K3ZvaWQgU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEZsb2F0U2l6
ZSYgc2NhbGUsIFJlZlB0cjxJbWFnZUJ1ZmZlcj4mIGltYWdlQnVmZmVyLCBib29sIHNhZmVUb0Ns
ZWFyKQogewogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIEZs
b2F0UmVjdCBhYnNvbHV0ZVRhcmdldFJlY3QgPSBjYWxjdWxhdGVJbWFnZUJ1ZmZlclJlY3QodGFy
Z2V0UmVjdCwgYWJzb2x1dGVUcmFuc2Zvcm0pOworICAgIGF1dG8gYWJzb2x1dGVUYXJnZXRSZWN0
ID0gdGFyZ2V0UmVjdDsKKyAgICBhYnNvbHV0ZVRhcmdldFJlY3Quc2NhbGUoc2NhbGUpOwogCiAg
ICAgLy8gVGhlIG1hc2sgaW1hZ2UgaGFzIGJlZW4gY3JlYXRlZCBpbiB0aGUgYWJzb2x1dGUgY29v
cmRpbmF0ZSBzcGFjZSwgYXMgdGhlIGltYWdlIHNob3VsZCBub3QgYmUgc2NhbGVkLgogICAgIC8v
IFNvIHRoZSBhY3R1YWwgbWFza2luZyBwcm9jZXNzIGhhcyB0byBiZSBkb25lIGluIHRoZSBhYnNv
bHV0ZSBjb29yZGluYXRlIHNwYWNlIGFzIHdlbGwuCi0gICAgY29udGV4dC5jb25jYXRDVE0odmFs
dWVPckRlZmF1bHQoYWJzb2x1dGVUcmFuc2Zvcm0uaW52ZXJzZSgpKSk7Ci0gICAgY29udGV4dC5j
bGlwVG9JbWFnZUJ1ZmZlcigqaW1hZ2VCdWZmZXIsIGFic29sdXRlVGFyZ2V0UmVjdCk7Ci0gICAg
Y29udGV4dC5jb25jYXRDVE0oYWJzb2x1dGVUcmFuc2Zvcm0pOworICAgIGNvbnRleHQuc2NhbGUo
eyAxIC8gc2NhbGUud2lkdGgoKSwgMSAvIHNjYWxlLmhlaWdodCgpIH0pOworICAgIGNvbnRleHQu
Y2xpcFRvSW1hZ2VCdWZmZXIoKmltYWdlQnVmZmVyLCBlbmNsb3NpbmdJbnRSZWN0KGFic29sdXRl
VGFyZ2V0UmVjdCkpOworICAgIGNvbnRleHQuc2NhbGUoc2NhbGUpOwogCiAgICAgLy8gV2hlbiBu
ZXN0aW5nIHJlc291cmNlcywgd2l0aCBvYmplY3RCb3VuZGluZ0JveCBhcyBjb250ZW50IHVuaXQg
dHlwZXMsIHRoZXJlJ3Mgbm8gdXNlIGluIGNhY2hpbmcgdGhlCiAgICAgLy8gcmVzdWx0aW5nIGlt
YWdlIGJ1ZmZlciBhcyB0aGUgcGFyZW50IHJlc291cmNlIGFscmVhZHkgY2FjaGVzIHRoZSByZXN1
bHQuCkBAIC0zMDgsMTQgKzI2Myw2IEBAIHZvaWQgU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2xpcFRv
SW1hZ2VCdWZmZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBBZmZpCiAgICAgICAg
IGltYWdlQnVmZmVyID0gbnVsbHB0cjsKIH0KIAotdm9pZCBTVkdSZW5kZXJpbmdDb250ZXh0Ojpj
bGVhcjJEUm90YXRpb24oQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0pCi17Ci0gICAgQWZmaW5l
VHJhbnNmb3JtOjpEZWNvbXBvc2VkVHlwZSBkZWNvbXBvc2l0aW9uOwotICAgIHRyYW5zZm9ybS5k
ZWNvbXBvc2UoZGVjb21wb3NpdGlvbik7Ci0gICAgZGVjb21wb3NpdGlvbi5hbmdsZSA9IDA7Ci0g
ICAgdHJhbnNmb3JtLnJlY29tcG9zZShkZWNvbXBvc2l0aW9uKTsKLX0KLQogYm9vbCBTVkdSZW5k
ZXJpbmdDb250ZXh0OjpidWZmZXJGb3JlZ3JvdW5kKFJlZlB0cjxJbWFnZUJ1ZmZlcj4mIGltYWdl
QnVmZmVyKQogewogICAgIEFTU0VSVChtX3BhaW50SW5mbyk7CkBAIC0zMzMsNyArMjgwLDcgQEAg
Ym9vbCBTVkdSZW5kZXJpbmdDb250ZXh0OjpidWZmZXJGb3JlZ3JvdW5kKFJlZlB0cjxJbWFnZUJ1
ZmZlcj4mIGltYWdlQnVmZmVyKQogCiAgICAgLy8gQ3JlYXRlIGEgbmV3IGJ1ZmZlciBhbmQgcGFp
bnQgdGhlIGZvcmVncm91bmQgaW50byBpdC4KICAgICBpZiAoIWltYWdlQnVmZmVyKSB7Ci0gICAg
ICAgIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoZXhw
YW5kZWRJbnRTaXplKGJvdW5kaW5nQm94LnNpemUoKSksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQigpLCBtX3BhaW50SW5mby0+Y29udGV4dCgpKTsKKyAgICAgICAgaW1hZ2VCdWZmZXIgPSBt
X3BhaW50SW5mby0+Y29udGV4dCgpLmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihleHBhbmRl
ZEludFNpemUoYm91bmRpbmdCb3guc2l6ZSgpKSk7CiAgICAgICAgIGlmICghaW1hZ2VCdWZmZXIp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuaAppbmRleCAwNDQ3OTkzYjk4N2Uy
ZjUyNDczMzQxMDU0NmYwYTBlNWY0MzZkNDJiLi5iYWUyYWNlNTE2YjM1ZjY3OTYxM2NjYjgxZTYy
OTAzNDZlYzQxNmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R1JlbmRlcmluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R1JlbmRlcmluZ0NvbnRleHQuaApAQCAtNjAsMTUgKzYwLDExIEBAIHB1YmxpYzoKICAgICB2b2lk
IHByZXBhcmVUb1JlbmRlclNWR0NvbnRlbnQoUmVuZGVyRWxlbWVudCYsIFBhaW50SW5mbyYsIE5l
ZWRzR3JhcGhpY3NDb250ZXh0U2F2ZSA9IERvbnRTYXZlR3JhcGhpY3NDb250ZXh0KTsKICAgICBi
b29sIGlzUmVuZGVyaW5nUHJlcGFyZWQoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmluZ0ZsYWdz
ICYgUmVuZGVyaW5nUHJlcGFyZWQ7IH0KIAotICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+
IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNw
YWNlJiwgUmVuZGVyaW5nTW9kZSwgY29uc3QgSG9zdFdpbmRvdyogPSBudWxscHRyKTsKLSAgICBz
dGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJl
Y3QmIHRhcmdldFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgY2xhbXBlZFJlY3QsIGNvbnN0IERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSYsIFJlbmRlcmluZ01vZGUsIGNvbnN0IEhvc3RXaW5kb3cqID0gbnVs
bHB0cik7Ci0KICAgICBzdGF0aWMgdm9pZCByZW5kZXJTdWJ0cmVlVG9Db250ZXh0KEdyYXBoaWNz
Q29udGV4dCYsIFJlbmRlckVsZW1lbnQmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKLSAgICBz
dGF0aWMgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJl
Y3QsIFJlZlB0cjxJbWFnZUJ1ZmZlcj4mLCBib29sIHNhZmVUb0NsZWFyKTsKKyAgICBzdGF0aWMg
dm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3Qm
IHRhcmdldFJlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgc2NhbGUsIFJlZlB0cjxJbWFnZUJ1ZmZlcj4m
LCBib29sIHNhZmVUb0NsZWFyKTsKIAogICAgIHN0YXRpYyBmbG9hdCBjYWxjdWxhdGVTY3JlZW5G
b250U2l6ZVNjYWxpbmdGYWN0b3IoY29uc3QgUmVuZGVyT2JqZWN0Jik7CiAgICAgc3RhdGljIEFm
ZmluZVRyYW5zZm9ybSBjYWxjdWxhdGVUcmFuc2Zvcm1hdGlvblRvT3V0ZXJtb3N0Q29vcmRpbmF0
ZVN5c3RlbShjb25zdCBSZW5kZXJPYmplY3QmKTsKLSAgICBzdGF0aWMgdm9pZCBjbGVhcjJEUm90
YXRpb24oQWZmaW5lVHJhbnNmb3JtJik7CiAKICAgICBzdGF0aWMgSW50UmVjdCBjYWxjdWxhdGVJ
bWFnZUJ1ZmZlclJlY3QoY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVJbWFnZUVsZW1lbnQuY3BwCmluZGV4IDg3ZDJlYTY2OGY4MDUwMjU2MzIyOWU1MGM0ZjYxNGQ2
NzM5YzA0YTAuLjRhOWMzYzQ1YTkyM2ViZDJhYmRmNWExZmQyZDdmZTUwNjA3OTRkNDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcApAQCAtMTc3LDYgKzE3NywzOCBA
QCB2b2lkIFNWR0ZFSW1hZ2VFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYs
IGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcwogICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9y
TGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnBhcmVudFJlbmRlcmVyKTsKIH0K
IAorc3RhdGljIGlubGluZSBJbnRSZWN0IHNjYWxlZEltYWdlQnVmZmVyUmVjdChjb25zdCBGbG9h
dFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgc2NhbGUpCit7CisgICAgYXV0byBzY2FsZWRS
ZWN0ID0gcmVjdDsKKyAgICBzY2FsZWRSZWN0LnNjYWxlKHNjYWxlKTsKKyAgICByZXR1cm4gZW5j
bG9zaW5nSW50UmVjdChzY2FsZWRSZWN0KTsKK30KKworc3RhdGljIGlubGluZSBGbG9hdFNpemUg
Y2xhbXBpbmdTY2FsZUZvckltYWdlQnVmZmVyU2l6ZShjb25zdCBGbG9hdFNpemUmIHNpemUpCit7
CisgICAgRmxvYXRTaXplIGNsYW1waW5nU2NhbGUoMSwgMSk7CisgICAgSW1hZ2VCdWZmZXI6OnNp
emVOZWVkc0NsYW1waW5nKHNpemUsIGNsYW1waW5nU2NhbGUpOworICAgIHJldHVybiBjbGFtcGlu
Z1NjYWxlOworfQorCitzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZl
cihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgc2NhbGUsIEhvc3RXaW5k
b3cqIGhvc3RXaW5kb3cpCit7CisgICAgYXV0byBzY2FsZWRSZWN0ID0gc2NhbGVkSW1hZ2VCdWZm
ZXJSZWN0KHJlY3QsIHNjYWxlKTsKKyAgICBpZiAoc2NhbGVkUmVjdC5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byBjbGFtcGluZ1NjYWxlID0gY2xhbXBpbmdT
Y2FsZUZvckltYWdlQnVmZmVyU2l6ZShzY2FsZWRSZWN0LnNpemUoKSk7CisKKyAgICBhdXRvIGlt
YWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzY2FsZWRSZWN0LnNpemUoKSAqIGNsYW1w
aW5nU2NhbGUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIFNob3VsZFVzZURpc3BsYXlM
aXN0OjpObywgUmVuZGVyaW5nUHVycG9zZTo6RE9NLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBob3N0V2luZG93KTsKKyAgICBpZiAoIWltYWdl
QnVmZmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGltYWdlQnVmZmVyLT5jb250
ZXh0KCkuc2NhbGUoY2xhbXBpbmdTY2FsZSk7CisgICAgaW1hZ2VCdWZmZXItPmNvbnRleHQoKS50
cmFuc2xhdGUoLXNjYWxlZFJlY3QubG9jYXRpb24oKSk7CisgICAgaW1hZ2VCdWZmZXItPmNvbnRl
eHQoKS5zY2FsZShzY2FsZSk7CisgICAgcmV0dXJuIGltYWdlQnVmZmVyOworfQorCiBzdGQ6OnR1
cGxlPFJlZlB0cjxJbWFnZUJ1ZmZlcj4sIEZsb2F0UmVjdD4gU1ZHRkVJbWFnZUVsZW1lbnQ6Omlt
YWdlQnVmZmVyRm9yRWZmZWN0KCkgY29uc3QKIHsKICAgICBhdXRvIHRhcmdldCA9IFNWR1VSSVJl
ZmVyZW5jZTo6dGFyZ2V0RWxlbWVudEZyb21JUklTdHJpbmcoaHJlZigpLCB0cmVlU2NvcGUoKSk7
CkBAIC0xOTUsMTEgKzIyNywxMiBAQCBzdGQ6OnR1cGxlPFJlZlB0cjxJbWFnZUJ1ZmZlcj4sIEZs
b2F0UmVjdD4gU1ZHRkVJbWFnZUVsZW1lbnQ6OmltYWdlQnVmZmVyRm9yRWZmZQogICAgIGlmICgh
YWJzb2x1dGVUcmFuc2Zvcm0uaXNJbnZlcnRpYmxlKCkpCiAgICAgICAgIHJldHVybiB7IH07CiAK
LSAgICBhdXRvIHNoZWFyRnJlZUFic29sdXRlVHJhbnNmb3JtID0gQWZmaW5lVHJhbnNmb3JtKGFi
c29sdXRlVHJhbnNmb3JtLnhTY2FsZSgpLCAwLCAwLCBhYnNvbHV0ZVRyYW5zZm9ybS55U2NhbGUo
KSwgMCwgMCk7Ci0KKyAgICAvLyBJZ25vcmUgMkQgcm90YXRpb24sIGFzIGl0IGRvZXNuJ3QgYWZm
ZWN0IHRoZSBpbWFnZSBzaXplLgorICAgIEZsb2F0U2l6ZSBzY2FsZShhYnNvbHV0ZVRyYW5zZm9y
bS54U2NhbGUoKSwgYWJzb2x1dGVUcmFuc2Zvcm0ueVNjYWxlKCkpOwogICAgIGF1dG8gaW1hZ2VS
ZWN0ID0gcmVuZGVyZXItPnJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCk7CiAKLSAgICBh
dXRvIGltYWdlQnVmZmVyID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIo
aW1hZ2VSZWN0LCBzaGVhckZyZWVBYnNvbHV0ZVRyYW5zZm9ybSwgRGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIHJlbmRlcmVyLT5ob3N0
V2luZG93KCkpOworICAgIC8vIEZJWE1FOiBSZXBsYWNlIHRoaXMgY2FsbCB3aXRoIEdyYXBoaWNz
Q29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoKSBvbmNlIHRoZSBkZXN0aW5hdGlvbiBHcmFwaGlj
c0NvbnRleHQgaXMgcGFzc2VkIHRvIHRoaXMgZnVuY3Rpb24uCisgICAgYXV0byBpbWFnZUJ1ZmZl
ciA9IGNyZWF0ZUltYWdlQnVmZmVyKGltYWdlUmVjdCwgc2NhbGUsIHJlbmRlcmVyLT5ob3N0V2lu
ZG93KCkpOwogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybiB7IH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCmluZGV4IGY0MTQwMTIzMzg5MTkw
Mzg3YWQyNzY5NmE1MDU0NDU0ZGY4OTAyOGEuLjZiZmY4OTc2Yzc4YmNiZjFmNGMzMzAzN2FiZjdi
YzUyNWJkZjQ0ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJ
bWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcApA
QCAtMjUwLDcgKzI1MCw3IEBAIHZvaWQgU1ZHSW1hZ2U6OmRyYXdQYXR0ZXJuRm9yQ29udGFpbmVy
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRTaXplCiAgICAgRmxvYXRSZWN0
IGltYWdlQnVmZmVyU2l6ZSA9IHpvb21lZENvbnRhaW5lclJlY3Q7CiAgICAgaW1hZ2VCdWZmZXJT
aXplLnNjYWxlKGltYWdlQnVmZmVyU2NhbGUud2lkdGgoKSwgaW1hZ2VCdWZmZXJTY2FsZS5oZWln
aHQoKSk7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxl
QnVmZmVyKGV4cGFuZGVkSW50U2l6ZShpbWFnZUJ1ZmZlclNpemUuc2l6ZSgpKSwgMSwgRGVzdGlu
YXRpb25Db2xvclNwYWNlOjpTUkdCKCksIGNvbnRleHQpOworICAgIGF1dG8gYnVmZmVyID0gY29u
dGV4dC5jcmVhdGVJbWFnZUJ1ZmZlcihleHBhbmRlZEludFNpemUoaW1hZ2VCdWZmZXJTaXplLnNp
emUoKSkpOwogICAgIGlmICghYnVmZmVyKSAvLyBGYWlsZWQgdG8gYWxsb2NhdGUgYnVmZmVyLgog
ICAgICAgICByZXR1cm47CiAgICAgZHJhd0ZvckNvbnRhaW5lcihidWZmZXItPmNvbnRleHQoKSwg
Y29udGFpbmVyU2l6ZSwgY29udGFpbmVyWm9vbSwgaW5pdGlhbEZyYWdtZW50VVJMLCBpbWFnZUJ1
ZmZlclNpemUsIHpvb21lZENvbnRhaW5lclJlY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIu
Y3BwCmluZGV4IDRhMjhiZDQ2ZmExNzcwNTNlNTdjMzEyNWYxZWVhZDEwZmNlZDY1ZTcuLjYzM2Iz
NWY1NzU3Y2YxODA3MTQxZWZiMDI0NTliM2MzOGEzZjgzOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RS
ZWNvcmRlci5jcHAKQEAgLTIwMiw3ICsyMDIsNyBAQCB2b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVj
b3JkZXI6OmNsaXBQYXRoKGNvbnN0IFBhdGgmIHBhdGgsIFdpbmRSdWxlIHJ1bGUpCiAKIHZvaWQg
UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6YmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29u
c3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBj
b2xvclNwYWNlKQogewotICAgIG1fbWFza0ltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0
ZUNvbXBhdGlibGVCdWZmZXIoZGVzdGluYXRpb24uc2l6ZSgpLCBjb2xvclNwYWNlLCBkcmF3aW5n
Q29udGV4dCgpKTsKKyAgICBtX21hc2tJbWFnZUJ1ZmZlciA9IGRyYXdpbmdDb250ZXh0KCkuY3Jl
YXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyKGRlc3RpbmF0aW9uLnNpemUoKSwgY29sb3JTcGFjZSk7
CiB9CiAKIHZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6ZW5kQ2xpcFRvRHJhd2luZ0Nv
bW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURp
c3BsYXlMaXN0UmVjb3JkZXJQcm94eS5jcHAKaW5kZXggOWQzNDNmYTlhYzQ5NGJhYzVlYTRjYWRk
MDExOWIwMGNlMmM4Njc2Yy4uODJlMzQ1OTljZGMzMjlmMjMwOWZlOTNmZWIwNzc5NTIyMWUwMWMy
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmNwcApAQCAt
NDY0LDYgKzQ2NCwxNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiBSZW1vdGVE
aXNwbGF5TGlzdFJlY29yZGVyUHJveHk6OmNyZWF0ZU5lc3RlZENvbgogICAgIHJldHVybiBtYWtl
VW5pcXVlPFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eT4oKnRoaXMsIGluaXRpYWxDbGlw
LCBpbml0aWFsQ1RNKTsKIH0KIAorUmVmUHRyPEltYWdlQnVmZmVyPiBSZW1vdGVEaXNwbGF5TGlz
dFJlY29yZGVyUHJveHk6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwg
Y29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlIHJl
bmRlcmluZ01vZGUpIGNvbnN0Cit7CisgICAgaWYgKFVOTElLRUxZKCFtX3JlbmRlcmluZ0JhY2tl
bmQpKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICB9CisKKyAgICByZXR1cm4gbV9yZW5kZXJpbmdCYWNrZW5kLT5jcmVhdGVJbWFn
ZUJ1ZmZlcihzaXplLCByZW5kZXJpbmdNb2RlLCAxLCBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6
QkdSQTgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUo
R1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuaApp
bmRleCAzMDA5OGJlYTYxYzFiNjQ0ZTQyMGFjYTMzMzlmOTA0NDkxZTRiN2ZmLi5iODEzOTAxOWUx
YzQ5YThhOTAxMzU4M2QwMTY5ZmViYmU0NDc3MmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxh
eUxpc3RSZWNvcmRlclByb3h5LmgKQEAgLTE0NCw2ICsxNDQsOSBAQCBwcml2YXRlOgogCiAgICAg
c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4gY3JlYXRlTmVzdGVkQ29u
dGV4dChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBXZWJDb3Jl
OjpBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0pIGZpbmFsOwogCisgICAgdXNpbmcgV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpjcmVhdGVJbWFnZUJ1ZmZlcjsKKyAgICBSZWZQdHI8
V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkZs
b2F0U2l6ZSYsIGNvbnN0IFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIFdlYkNvcmU6
OlJlbmRlcmluZ01vZGUpIGNvbnN0IGZpbmFsOworCiAgICAgV2ViQ29yZTo6UmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyIG1fZGVzdGluYXRpb25CdWZmZXJJZGVudGlmaWVyOwogICAgIFdlYWtQ
dHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IG1faW1hZ2VCdWZmZXI7CiAgICAgV2Vha1B0cjxSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHk+IG1fcmVuZGVyaW5nQmFja2VuZDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451154</attachid>
            <date>2022-02-07 14:37:46 -0800</date>
            <delta_ts>2022-02-08 23:22:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235758-20220207143745.patch</filename>
            <type>text/plain</type>
            <size>87558</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4OTkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTU5YjJjYWIxYzRmZDc0
MGMyMmYyYWY2YTczY2E1YjdiOWMyOTBlYS4uZTQ1YWJiZWVhMTJmNTgxY2Q2ZmJhZGY0MTdhMTY5
YWRkYjk0ZTQzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0NiBAQAorMjAyMi0wMi0wNyAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IE1vdmUgSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcigpIGFuZCBTVkdS
ZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlciB0byBHcmFwaGljc0NvbnRleHQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTc1OAorICAg
ICAgICByZGFyOi8vODg0Nzg0NzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGUgZ29hbCBvZiB0aGlzIHBhdGNoIGlzIHRvIHJlY29yZCB0aGUgZHJh
d2luZyBpZiB0aGUgY29uY3JldGUgdHlwZSBvZiAKKyAgICAgICAgdGhlIEdyYXBoaWNzQ29udGV4
dCBpcyBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuIEN1cnJlbnRseSBhbGwgdGhlCisg
ICAgICAgIGludGVybWVkaWF0ZSBjb21wYXRpYmxlIEltYWdlQnVmZmVycyBhcmUgb2YgdHlwZSBD
b25jcmV0ZUltYWdlQnVmZmVyLgorICAgICAgICBUaGUgZHJhd2luZyB0byB0aGVzZSBJbWFnZUJ1
ZmZlcnMgc3RpbGwgaGFwcGVucyBpbiB0aGUgV2ViUHJvY2Vzcy4gTW9yZW92ZXIKKyAgICAgICAg
d2hlbiB3ZSBjYWxsIGRyYXdJbWFnZUJ1ZmZlcigpIG9yIGNsaXBUb0ltYWdlQnVmZmVyKCkgZm9y
IG9uZSBvZiB0aGVzZQorICAgICAgICBpbnRlcm1lZGlhdGUgSW1hZ2VCdWZmZXJzIHRvIGEgcmVt
b3RlIEltYWdlQnVmZmVyLCB3ZSBoYXZlIHRvIHNpbmsgdGhlCisgICAgICAgIGludGVybWVkaWF0
ZSBJbWFnZUJ1ZmZlciB0byBhIE5hdGl2ZUltYWdlIGFuZCBzZW5kIGl0IHRvIEdQVVByb2Nlc3Mu
CisKKyAgICAgICAgVG8gZml4IHRoaXMsIEdyYXBoaWNzQ29udGV4dCB3aWxsIHByb3ZpZGUgdGhl
c2UgZnVuY3Rpb25zIGZvciBjcmVhdGluZworICAgICAgICB0aGUgSW1hZ2VCdWZmZXI6CisKKyAg
ICAgICAgMS4gR3JhcGhpY3NDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcigpICh2aXJ0dWFsKTog
Q3JlYXRlcyBhbiBJbWFnZUJ1ZmZlcgorICAgICAgICAgICBzaW1pbGFyIHRvIHRoZSB1bmRlcmx5
aW5nIEltYWdlQnVmZmVyIG9mIHRoZSBHcmFwaGljc0NvbnRleHQuIEJlY2F1c2UKKyAgICAgICAg
ICAgUmVjb3JkZXJJbXBsIGFuZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkgYXJlIHN1
cGVyIGNsYXNzZXMgb2YKKyAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0LCB0aGV5IHdpbGwgb3Zl
cnJpZGUgdGhpcyBtZXRob2QgYW5kIHJldHVybiB0aGUgZGVzaXJlZAorICAgICAgICAgICB0eXBl
IG9mIEltYWdlQnVmZmVyLiBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkgaGFzIGFjY2Vz
cyB0byB0aGUKKyAgICAgICAgICAgUmVtb3RSZW5kZXJpbmdCYWNrZW5kUHJveHkgc28gaXQgY2Fu
IGNhbGwgaXRzIGNyZWF0ZUltYWdlQnVmZmVyKCkuCisKKyAgICAgICAgMi4gR3JhcGhpY3NDb250
ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcigpIChub24tdmlydHVhbCk6IENyZWF0ZXMgYSBzY2FsZWQK
KyAgICAgICAgICAgSW1hZ2VCdWZmZXIgYW5kIHNldHMgdGhlIGNvbnRleHQgYWNjb3JkaW5nbHku
IEl0IGFsbG93cyBhbHNvIGZvcmNpbmcKKyAgICAgICAgICAgY3JlYXRpbmcgYW4gaW4tcHJvY2Vz
cyBDb25jcmV0ZUltYWdlQnVmZmVyLiBUaGlzIGlzIGNvbnRyb2xsZWQgYnkgYW4KKyAgICAgICAg
ICAgZXh0cmEgcGFyYW1ldGVyIG9mIHRoZSBlbnVtIHR5cGUgQ3JlYXRlTWV0aG9kLgorCisgICAg
ICAgIDMuIEdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyKCkgKHZp
cnR1YWwpOiBUYWtlcyB0aGUKKyAgICAgICAgICAgc2NhbGVGYWN0b3IoKSBpbnRvIGNvbnNpZGVy
YXRpb24gd2hlbiBjcmVhdGluZyB0aGUgSW1hZ2VCdWZmZXIuIEJ5IAorICAgICAgICAgICBkZWZh
dWx0IHRoZSB0eXBlIG9mIHRoZSBJbWFnZUJ1ZmZlciBpcyB0aGUgQ29uY3JldGVJbWFnZUJ1ZmZl
ci4KKyAgICAgICAgICAgQmVjYXVzZSBSZWNvcmQgaW5oZXJpdHMgR3JhcGhpY3NDb250ZXh0IGFu
ZCBiZWNhdXNlIGl0IGlzIHRoZSBiYXNlCisgICAgICAgICAgIGNsYXNzIG9mIFJlY29yZGVySW1w
bCBhbmQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LCBpdCB3aWxsIAorICAgICAgICAg
ICBvdmVycmlkZSB0aGlzIGZ1bmN0aW9uIHRvIHJldHVybiB0aGUgZGVmYXVsdCBJbWFnZUJ1ZmZl
ci4KKworICAgICAgICA0LiBHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZUluUHJvY2Vzc0NvbXBhdGli
bGVJbWFnZUJ1ZmZlcigpOiBUaGlzIGFsd2F5cworICAgICAgICAgICByZXR1cm5zIGFuIGluLXBy
b2Nlc3MgSW1hZ2VCdWZmZXIgcmVnYXJkbGVzcyBvZiB0aGUgdHlwZSBvZiB0aGUKKyAgICAgICAg
ICAgdW5kZXJseWluZyBJbWFnZUJ1ZmZlciBvZiB0aGUgR3JhcGhpY3NDb250ZXh0LiBUaGlzIHdp
bGwgYmUgdXNlZCB3aGVuCisgICAgICAgICAgIGRyYXdpbmcgaGFzIHRvIGhhcHBlbiBpbiBXZWJQ
b3JjZXNzOiBQREYgaW1hZ2VzIGFuZCBTVkcgZm9udHMgZm9yCisgICAgICAgICAgIGV4YW1wbGUu
CisKKyAgICAgICAgVHdvIHZlcnNpb25zIG9mIHRoZXNlIGZ1bmN0aW9ucyBhcmUgcHJvdmlkZWQ6
IG9uZSB0YWtlcyBhIEZsb2F0U2l6ZSBhbmQKKyAgICAgICAgdGhlIG90aGVyIHRha2VzIGEgRmxv
YXRSZWNjdC4gVGhlIEZsb2F0UmVjdCB2ZXJzaW9uIGV4cGFuZHMgdGhlIGZvdXIgY29ybmVycyAK
KyAgICAgICAgb2YgdGhlIHJlY3RhbmdsZSB0byBmdWxsIHBpeGVscy4KKworICAgICAgICAqIGh0
bWwvQ3VzdG9tUGFpbnRDYW52YXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tUGFpbnRD
YW52YXM6OnJlcGxheURpc3BsYXlMaXN0IGNvbnN0KToKKyAgICAgICAgKiBodG1sL0N1c3RvbVBh
aW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tUGFpbnRJbWFnZTo6ZHJhd1Bh
dHRlcm4pOgorICAgICAgICAqIGh0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok9mZnNjcmVlbkNhbnZhczo6dHJhbnNmZXJUb0ltYWdlQml0bWFwKToKKyAgICAgICAg
KFdlYkNvcmU6Ok9mZnNjcmVlbkNhbnZhczo6Y29tbWl0VG9QbGFjZWhvbGRlckNhbnZhcyk6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3SW1hZ2Up
OgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL1RoZW1lQ29jb2EubW06CisgICAgICAgIChXZWJD
b3JlOjpkcmF3QXBwbGVQYXlCdXR0b24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Jp
dG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3UGF0dGVy
bik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0
ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYWRpZW50SW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
c2NhbGVkSW1hZ2VCdWZmZXJTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OnNjYWxlZEltYWdlQnVm
ZmVyUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpjbGFtcGluZ1NjYWxlRm9ySW1hZ2VCdWZmZXJT
aXplKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y29tcGF0aWJsZUltYWdl
QnVmZmVyU2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNy
ZWF0ZUltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDo6Y3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlSW5Qcm9jZXNzQ29tcGF0aWJsZUltYWdlQnVmZmVyIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvRHJhd2luZ0Nv
bW1hbmRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlQnVmZmVyOjpjbG9uZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUJ1ZmZlcjo6Y29tcGF0aWJsZUJ1ZmZlclNpemUpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNvbXBhdGlibGVCdWZmZXJJbmZvKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpjb3B5UmVjdFRvQnVmZmVyKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OnVwZGF0ZUNhY2hlZEltYWdlSWZOZWVkZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RHJhd0dseXBoc1JlY29yZGVyOjpkcmF3T1RTVkdSdW4pOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6Y3JlYXRlSW1h
Z2VCdWZmZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVy
OjpjcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlckltcGw6OmNyZWF0ZUlt
YWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXI6OmFwcGx5SXRlbSk6CisgICAgICAgICogcGxhdGZvcm0v
bWFjL1RoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6VGhlbWVNYWM6OmRyYXdDZWxsT3JG
b2N1c1JpbmdXaXRoVmlld0ludG9Db250ZXh0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
Qm94TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJM
YXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c2V0dXBGaWx0ZXJzKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnBhdHRlcm5Gb3JEZXNjcmlwdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckxheWVyRmlsdGVycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckZpbHRlcnM6
OmFsbG9jYXRlQmFja2luZ1N0b3JlSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXJGaWx0ZXJzOjpiZWdpbkZpbHRlckVmZmVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckxheWVyRmlsdGVycy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUNvY29h
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVDb2NvYTo6cGFpbnRBcHBsZVBheUJ1
dHRvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBhaW50TGlzdEJ1dHRvbkZvcklucHV0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWludFByb2dyZXNzQmFyKToKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OmFwcGx5Q2xpcHBpbmdUb0NvbnRleHQp
OgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3VyY2Up
OgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVNYXNrQW5kU3dhcENvbnRleHRGb3JUZXh0R3JhZGll
bnQpOgorICAgICAgICAoV2ViQ29yZTo6Y2xpcFRvVGV4dE1hc2spOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmFwcGx5UmVzb3VyY2UpOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6YnVpbGRQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6Y3JlYXRlVGlsZUltYWdlIGNvbnN0KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0OjpidWZmZXJGb3JlZ3JvdW5kKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlcmluZ0NvbnRleHQ6OmNsZWFyMkRSb3RhdGlv
bik6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0
Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnNjYWxlZEltYWdlQnVmZmVyUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpjbGFtcGluZ1Nj
YWxlRm9ySW1hZ2VCdWZmZXJTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUltYWdlQnVm
ZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFSW1hZ2VFbGVtZW50OjppbWFnZUJ1ZmZlckZv
ckVmZmVjdCBjb25zdCk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpkcmF3UGF0dGVybkZvckNvbnRhaW5lcik6CisKIDIw
MjItMDItMDIgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CiAKICAgICAgICAg
W0dQVSBQcm9jZXNzXSBSZW1vdmUgRGlzcGxheUxpc3Q6OlJlcGxheWVyOjpEZWxlZ2F0ZSBhbmQg
RGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbDo6RGVsZWdhdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggY2RhNjQ0MGU5
ZjBlZTRkMzA2ZWI3NzZmNjBmMTU1ZTFjNjZkNjk2MS4uODQwMmQ4MmI5MjdiMTdiN2ExODhiNzZh
OThlMGVjMjI1NWM3ODVhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMi0wMi0wNyAg
U2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nl
c3NdIE1vdmUgSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcigpIGFuZCBT
VkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlciB0byBHcmFwaGljc0NvbnRleHQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTc1OAor
ICAgICAgICByZGFyOi8vODg0Nzg0NzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RS
ZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6
OmJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHk6OmNyZWF0ZUltYWdlQnVmZmVyIGNv
bnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlz
dFJlY29yZGVyUHJveHkuaDoKKwogMjAyMi0wMi0wMiAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlk
QGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVIFByb2Nlc3NdIFJlbW92ZSBEaXNwbGF5TGlzdDo6
UmVwbGF5ZXI6OkRlbGVnYXRlIGFuZCBEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpEZWxlZ2F0
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWludENhbnZhcy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0N1c3RvbVBhaW50Q2FudmFzLmNwcAppbmRleCAyYzFhM2Fh
NmM2NTc5M2VjNmY1ZDg0YmRhNGVmNzNlYzY5Njk4ZWEzLi40MDQyOTExZDA3YmM3NzgzOTAzMDEz
MWQ3OGQ3M2E1NTdiNjNkMGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0N1c3Rv
bVBhaW50Q2FudmFzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0N1c3RvbVBhaW50Q2Fu
dmFzLmNwcApAQCAtNzMsNyArNzMsNyBAQCB2b2lkIEN1c3RvbVBhaW50Q2FudmFzOjpyZXBsYXlE
aXNwbGF5TGlzdChHcmFwaGljc0NvbnRleHQqIGN0eCkgY29uc3QKICAgICAvLyBGSVhNRTogVXNp
bmcgYW4gaW50ZXJtZWRpYXRlIGJ1ZmZlciBpcyBub3QgbmVlZGVkIGlmIHRoZXJlIGFyZSBubyBj
b21wb3NpdGUgb3BlcmF0aW9ucy4KICAgICBhdXRvIGNsaXBCb3VuZHMgPSBjdHgtPmNsaXBCb3Vu
ZHMoKTsKIAotICAgIGF1dG8gaW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1
ZmZlcihjbGlwQm91bmRzLnNpemUoKSwgKmN0eCk7CisgICAgYXV0byBpbWFnZSA9IGN0eC0+Y3Jl
YXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyKGNsaXBCb3VuZHMuc2l6ZSgpKTsKICAgICBpZiAoIWlt
YWdlKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Q3VzdG9tUGFpbnRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0N1c3RvbVBhaW50SW1h
Z2UuY3BwCmluZGV4IGY0NzE5OTQ2YzU4ZTA1OWJlMzNkYjcxZDNmN2I2ZjYwOTIwYTVjYWMuLmZi
OGFlNmJmZDcxZjNlZjYxYTM0MGUyNzAwMTQwMzhlMjc2Njk3MGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvQ3VzdG9tUGFpbnRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9DdXN0b21QYWludEltYWdlLmNwcApAQCAtMTk5LDcgKzE5OSw3IEBAIHZvaWQgQ3VzdG9t
UGFpbnRJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29u
c3QgRmxvYXRSZWN0CiAgICAgYWRqdXN0ZWRQYXR0ZXJuQ1RNLnNjYWxlKDEuMCAvIHhTY2FsZSwg
MS4wIC8geVNjYWxlKTsKICAgICBhZGp1c3RlZFNyY1JlY3Quc2NhbGUoeFNjYWxlLCB5U2NhbGUp
OwogCi0gICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZl
cihhZGp1c3RlZFNpemUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBkZXN0Q29udGV4
dCk7CisgICAgYXV0byBidWZmZXIgPSBkZXN0Q29udGV4dC5jcmVhdGVDb21wYXRpYmxlSW1hZ2VC
dWZmZXIoYWRqdXN0ZWRTaXplKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwog
ICAgIGRvQ3VzdG9tUGFpbnQoYnVmZmVyLT5jb250ZXh0KCksIGFkanVzdGVkU2l6ZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAKaW5kZXggNGM5YzhjZmYxOGI5YzdlYTEy
ZDE0MTMxMmM2NjA2NjZkY2YwYzg3OS4uODhkOWY3OGM5YTVjOWNiYjIyMDhjZGM3ODk0MTFkZTgy
NzY2YzMwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcApAQCAtMjgz
LDcgKzI4Myw3IEBAIEV4Y2VwdGlvbk9yPFJlZlB0cjxJbWFnZUJpdG1hcD4+IE9mZnNjcmVlbkNh
bnZhczo6dHJhbnNmZXJUb0ltYWdlQml0bWFwKCkKICAgICAgICAgLy8gQXMgdGhlIGNhbnZhcyBj
b250ZXh0IHN0YXRlIGlzIHN0b3JlZCBpbiBHcmFwaGljc0NvbnRleHQsIHdoaWNoIGlzIG93bmVk
CiAgICAgICAgIC8vIGJ5IGJ1ZmZlcigpLCB0byBhdm9pZCByZXNldHRpbmcgdGhlIGNvbnRleHQg
c3RhdGUsIHdlIGhhdmUgdG8gbWFrZSBhIGNvcHkgYW5kCiAgICAgICAgIC8vIGNsZWFyIHRoZSBv
cmlnaW5hbCBidWZmZXIgcmF0aGVyIHRoYW4gcmV0dXJuaW5nIHRoZSBvcmlnaW5hbCBidWZmZXIu
Ci0gICAgICAgIGF1dG8gYnVmZmVyQ29weSA9IGJ1ZmZlcigpLT5jb3B5UmVjdFRvQnVmZmVyKEZs
b2F0UmVjdChGbG9hdFBvaW50KCksIGJ1ZmZlcigpLT5sb2dpY2FsU2l6ZSgpKSwgYnVmZmVyKCkt
PmNvbG9yU3BhY2UoKSwgKmRyYXdpbmdDb250ZXh0KCkpOworICAgICAgICBhdXRvIGJ1ZmZlckNv
cHkgPSBidWZmZXIoKS0+Y2xvbmUoKTsKICAgICAgICAgZG93bmNhc3Q8T2Zmc2NyZWVuQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEPigqbV9jb250ZXh0KS5jbGVhckNhbnZhcygpOwogICAgICAgICBj
bGVhckNvcGllZEltYWdlKCk7CiAKQEAgLTQ1MSwxNCArNDUxLDEzIEBAIHZvaWQgT2Zmc2NyZWVu
Q2FudmFzOjpjb21taXRUb1BsYWNlaG9sZGVyQ2FudmFzKCkKICAgICAgICAgbV9jb250ZXh0LT5w
YWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcygpOwogCiAgICAgaWYgKG1fcGxhY2Vob2xkZXJE
YXRhLT5idWZmZXJQaXBlU291cmNlKSB7Ci0gICAgICAgIGF1dG8gYnVmZmVyQ29weSA9IGltYWdl
QnVmZmVyLT5jb3B5UmVjdFRvQnVmZmVyKEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdlQnVm
ZmVyLT5sb2dpY2FsU2l6ZSgpKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIGltYWdl
QnVmZmVyLT5jb250ZXh0KCkpOwotICAgICAgICBpZiAoYnVmZmVyQ29weSkKKyAgICAgICAgaWYg
KGF1dG8gYnVmZmVyQ29weSA9IGltYWdlQnVmZmVyLT5jbG9uZSgpKQogICAgICAgICAgICAgbV9w
bGFjZWhvbGRlckRhdGEtPmJ1ZmZlclBpcGVTb3VyY2UtPmhhbmRsZShXVEZNb3ZlKGJ1ZmZlckNv
cHkpKTsKICAgICB9CiAKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9wbGFjZWhvbGRlckRhdGEtPmJ1
ZmZlckxvY2sgfTsKICAgICBib29sIHNob3VsZFB1c2hCdWZmZXIgPSAhbV9wbGFjZWhvbGRlckRh
dGEtPnBlbmRpbmdDb21taXRCdWZmZXI7Ci0gICAgbV9wbGFjZWhvbGRlckRhdGEtPnBlbmRpbmdD
b21taXRCdWZmZXIgPSBpbWFnZUJ1ZmZlci0+Y29weVJlY3RUb0J1ZmZlcihGbG9hdFJlY3QoRmxv
YXRQb2ludCgpLCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSksIERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQigpLCBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpKTsKKyAgICBtX3BsYWNlaG9sZGVy
RGF0YS0+cGVuZGluZ0NvbW1pdEJ1ZmZlciA9IGltYWdlQnVmZmVyLT5jbG9uZSgpOwogICAgIGlm
IChtX3BsYWNlaG9sZGVyRGF0YS0+cGVuZGluZ0NvbW1pdEJ1ZmZlciAmJiBzaG91bGRQdXNoQnVm
ZmVyKQogICAgICAgICBwdXNoQnVmZmVyVG9QbGFjZWhvbGRlcigpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRC
YXNlLmNwcAppbmRleCA1NTBlNjhiMjg3MTYzOGQyMDdhY2ViMjMyNzU0OTNkZWE2YjQxMmM2Li4y
MDVlZTYyMTk4MmFlMWE5OGRiYmE5YzYwYmE2ODA0NTY3Y2NmOGUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRC
YXNlLmNwcApAQCAtMTYxMSw3ICsxNjExLDggQEAgRXhjZXB0aW9uT3I8dm9pZD4gQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEQmFzZTo6ZHJhd0ltYWdlKENhbnZhc0Jhc2UmIHNvdXJjZUNhbnYKICAg
ICAgICAgcmVwYWludEVudGlyZUNhbnZhcyA9IHRydWU7CiAgICAgfSBlbHNlIGlmIChzdGF0ZSgp
Lmdsb2JhbENvbXBvc2l0ZSA9PSBDb21wb3NpdGVPcGVyYXRvcjo6Q29weSkgewogICAgICAgICBp
ZiAoJnNvdXJjZUNhbnZhcyA9PSAmY2FudmFzQmFzZSgpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0
byBjb3B5ID0gYnVmZmVyLT5jb3B5UmVjdFRvQnVmZmVyKHNyY1JlY3QsIGNvbG9yU3BhY2UoKSwg
KmMpKSB7CisgICAgICAgICAgICBpZiAoYXV0byBjb3B5ID0gYy0+Y3JlYXRlQ29tcGF0aWJsZUlt
YWdlQnVmZmVyKHNyY1JlY3Quc2l6ZSgpLCBjb2xvclNwYWNlKCkpKSB7CisgICAgICAgICAgICAg
ICAgY29weS0+Y29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcigqYnVmZmVyLCAtc3JjUmVjdC5sb2Nh
dGlvbigpKTsKICAgICAgICAgICAgICAgICBjbGVhckNhbnZhcygpOwogICAgICAgICAgICAgICAg
IGMtPmRyYXdJbWFnZUJ1ZmZlcigqY29weSwgZHN0UmVjdCwgeyB7IH0sIHNyY1JlY3Quc2l6ZSgp
IH0sIHsgc3RhdGUoKS5nbG9iYWxDb21wb3NpdGUsIHN0YXRlKCkuZ2xvYmFsQmxlbmQgfSk7CiAg
ICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9U
aGVtZUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVGhlbWVDb2NvYS5t
bQppbmRleCBlY2Q1MGI3MGZkYmJmNmU5ODNmM2E3MTU2NTI3YjIxMDY4ODRmYmZlLi45ZDRhNmU5
OTAzZmZlMzQ1YTg3OGQ3ZjQzNzA0OTVhZWExMGRmYmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jb2NvYS9UaGVtZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL1RoZW1lQ29jb2EubW0KQEAgLTExMCw3ICsxMTAsOCBAQCBzdGF0aWMgQ0dQ
REZQYWdlUmVmIGFwcGxlUGF5QnV0dG9uTG9nb1doaXRlKCkKIAogc3RhdGljIHZvaWQgZHJhd0Fw
cGxlUGF5QnV0dG9uKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgQ0dQREZQYWdlUmVmIHBhZ2Us
IGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKIHsKLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VC
dWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoc2l6ZSwgY29udGV4dCk7CisgICAgLy8gQ3Jl
YXRlIGluLXByb2Nlc3MgSW1hZ2VCdWZmZXIgc2luY2UgdGhlIGRlY29kaW5nIG9mIFBERiBpbWFn
ZXMgaGFzIHRvIGhhcHBlbiBpbiBXZWJQcm9jZXNzLgorICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBj
b250ZXh0LmNyZWF0ZUluUHJvY2Vzc0NvbXBhdGlibGVJbWFnZUJ1ZmZlcihzaXplKTsKICAgICBp
ZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAppbmRleCA4MDI3NDM1YWQyOTQ1NjYy
OThhNzkxYjNhZjZhZmE5YmYyNzgxZTY4Li41NzQ1NDQ3YzhjNTRmZjg4YTkzNjZmNTBmZWIzNjRk
Nzc4MGNiMDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9C
aXRtYXBJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0
bWFwSW1hZ2UuY3BwCkBAIC0zNDcsNyArMzQ3LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd1Bh
dHRlcm4oR3JhcGhpY3NDb250ZXh0JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LAog
ICAgIH0KIAogICAgIGlmICghbV9jYWNoZWRJbWFnZSkgewotICAgICAgICBhdXRvIGJ1ZmZlciA9
IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGV4cGFuZGVkSW50U2l6ZSh0aWxl
UmVjdC5zaXplKCkpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgY3R4dCk7CisgICAg
ICAgIGF1dG8gYnVmZmVyID0gY3R4dC5jcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIoZXhwYW5k
ZWRJbnRTaXplKHRpbGVSZWN0LnNpemUoKSkpOwogICAgICAgICBpZiAoIWJ1ZmZlcikKICAgICAg
ICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwCmluZGV4IDUwZmUwYzQ2NjE0
YjcwMmJhMTg2MWU3MzgwM2MxMDAyNWEwODA0YjQuLjYxYTM4MzIzM2NiNmViMWE5NGU5MWYxZmZl
NDc3ZjJjY2RmMTUxMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5jcHAKQEAgLTEwMyw3ICsxMDMs
NyBAQCBJbWFnZURyYXdSZXN1bHQgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXcoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbAogCiB2b2lkIENyb3NzZmFkZUdlbmVyYXRlZElt
YWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9h
dFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewot
ICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgY29udGV4
dC5yZW5kZXJpbmdNb2RlKCksIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhl
bEZvcm1hdDo6QkdSQTgpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBjb250ZXh0LmNyZWF0ZUlt
YWdlQnVmZmVyKHNpemUoKSk7CiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJu
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVu
dEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1h
Z2UuY3BwCmluZGV4IGZlZjM2ZTU3YTY1YTE0ODY5MGRiMzBhMmMyYTU2ODRkMDAwYzhhZGMuLmJk
YTcwMTEwOThmYTUxN2E2NDQzMmFmZWNiZDA1M2MxZjk1OTVjNTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwCkBAIC03Miw3ICs3
Miw3IEBAIHZvaWQgR3JhZGllbnRJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBk
ZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkCiAgICAgdW5zaWduZWQgZ2VuZXJhdG9ySGFz
aCA9IG1fZ3JhZGllbnQtPmhhc2goKTsKIAogICAgIGlmICghbV9jYWNoZWRJbWFnZSB8fCBtX2Nh
Y2hlZEdlbmVyYXRvckhhc2ggIT0gZ2VuZXJhdG9ySGFzaCB8fCBtX2NhY2hlZEFkanVzdGVkU2l6
ZSAhPSBhZGp1c3RlZFNpemUgfHwgIWFyZUVzc2VudGlhbGx5RXF1YWwoZGVzdENvbnRleHQuc2Nh
bGVGYWN0b3IoKSwgbV9jYWNoZWRTY2FsZUZhY3RvcikpIHsKLSAgICAgICAgYXV0byBpbWFnZUJ1
ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGFkanVzdGVkU2l6ZSwg
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIGRlc3RDb250ZXh0KTsKKyAgICAgICAgYXV0
byBpbWFnZUJ1ZmZlciA9IGRlc3RDb250ZXh0LmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihh
ZGp1c3RlZFNpemUpOwogICAgICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICAgICAgcmV0
dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmNwcAppbmRleCBhNDkyZTk4ZGEyODBjMjNlYzczNjMwN2FkZTJkZGVmMzJiZmE0
Y2VmLi5lMWMyN2JjMTZhZGRiNGFhMGQ2YTNhYTQ4ODM4MDc4ZDY0NTg3MGQ2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAK
QEAgLTU1MSw2ICs1NTEsMTIwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3QmlkaVRleHQo
Y29uc3QgRm9udENhc2NhZGUmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1biwKICAgICBiaWRpUnVu
cy5jbGVhcigpOwogfQogCitzdGF0aWMgSW50U2l6ZSBzY2FsZWRJbWFnZUJ1ZmZlclNpemUoY29u
c3QgRmxvYXRTaXplJiBzaXplLCBjb25zdCBGbG9hdFNpemUmIHNjYWxlKQoreworICAgIC8vIEVu
bGFyZ2UgdGhlIGJ1ZmZlciBzaXplIGlmIHRoZSBjb250ZXh0J3MgdHJhbnNmb3JtIGlzIHNjYWxp
bmcgaXQgc28gd2UgbmVlZCBhIGhpZ2hlcgorICAgIC8vIHJlc29sdXRpb24gdGhhbiBvbmUgcGl4
ZWwgcGVyIHVuaXQuCisgICAgcmV0dXJuIGV4cGFuZGVkSW50U2l6ZShzaXplICogc2NhbGUpOwor
fQorCitzdGF0aWMgSW50UmVjdCBzY2FsZWRJbWFnZUJ1ZmZlclJlY3QoY29uc3QgRmxvYXRSZWN0
JiByZWN0LCBjb25zdCBGbG9hdFNpemUmIHNjYWxlKQoreworICAgIGF1dG8gc2NhbGVkUmVjdCA9
IHJlY3Q7CisgICAgc2NhbGVkUmVjdC5zY2FsZShzY2FsZSk7CisgICAgcmV0dXJuIGVuY2xvc2lu
Z0ludFJlY3Qoc2NhbGVkUmVjdCk7Cit9CisKK3N0YXRpYyBGbG9hdFNpemUgY2xhbXBpbmdTY2Fs
ZUZvckltYWdlQnVmZmVyU2l6ZShjb25zdCBGbG9hdFNpemUmIHNpemUpCit7CisgICAgRmxvYXRT
aXplIGNsYW1waW5nU2NhbGUoMSwgMSk7CisgICAgSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1w
aW5nKHNpemUsIGNsYW1waW5nU2NhbGUpOworICAgIHJldHVybiBjbGFtcGluZ1NjYWxlOworfQor
CitJbnRTaXplIEdyYXBoaWNzQ29udGV4dDo6Y29tcGF0aWJsZUltYWdlQnVmZmVyU2l6ZShjb25z
dCBGbG9hdFNpemUmIHNpemUpIGNvbnN0Cit7CisgICAgcmV0dXJuIHNjYWxlZEltYWdlQnVmZmVy
U2l6ZShzaXplLCBzY2FsZUZhY3RvcigpKTsKK30KKworUmVmUHRyPEltYWdlQnVmZmVyPiBHcmFw
aGljc0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29u
c3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlIHJlbmRl
cmluZ01vZGUpIGNvbnN0Cit7CisgICAgcmV0dXJuIEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwg
cmVuZGVyaW5nTW9kZSwgMSwgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKK30KKwor
UmVmUHRyPEltYWdlQnVmZmVyPiBHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNv
bnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzY2FsZSwgY29uc3QgRGVzdGlu
YXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUs
IENyZWF0ZU1ldGhvZCBjcmVhdGVNZXRob2QpIGNvbnN0Cit7CisgICAgYXV0byBleHBhbmRlZFNj
YWxlZFNpemUgPSBzY2FsZWRJbWFnZUJ1ZmZlclNpemUoc2l6ZSwgc2NhbGUpOworICAgIGlmIChl
eHBhbmRlZFNjYWxlZFNpemUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIGF1dG8gY2xhbXBpbmdTY2FsZSA9IGNsYW1waW5nU2NhbGVGb3JJbWFnZUJ1ZmZlclNpemUo
ZXhwYW5kZWRTY2FsZWRTaXplKTsKKworICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZm
ZXI7CisgICAgaWYgKGNyZWF0ZU1ldGhvZCA9PSBDcmVhdGVNZXRob2Q6OkJhc2UpCisgICAgICAg
IGltYWdlQnVmZmVyID0gR3JhcGhpY3NDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihleHBhbmRl
ZFNjYWxlZFNpemUgKiBjbGFtcGluZ1NjYWxlLCBjb2xvclNwYWNlLCByZW5kZXJpbmdNb2RlKTsK
KyAgICBlbHNlCisgICAgICAgIGltYWdlQnVmZmVyID0gY3JlYXRlSW1hZ2VCdWZmZXIoZXhwYW5k
ZWRTY2FsZWRTaXplICogY2xhbXBpbmdTY2FsZSwgY29sb3JTcGFjZSwgcmVuZGVyaW5nTW9kZSk7
CisKKyAgICBpZiAoIWltYWdlQnVmZmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAg
IGltYWdlQnVmZmVyLT5jb250ZXh0KCkuc2NhbGUoY2xhbXBpbmdTY2FsZSk7CisKKyAgICAvLyAn
ZXhwYW5kZWRTY2FsZWRTaXplJyBpcyBtYXBwZWQgdG8gJ3NpemUnLiBTbyB1c2UgJ2V4cGFuZGVk
U2NhbGVkU2l6ZSAvIHNpemUnCisgICAgLy8gbm90ICdzY2FsZScgYmVjYXVzZSB0aGV5IGFyZSBu
b3QgbmVjZXNzYXJpbHkgZXF1YWwuCisgICAgaW1hZ2VCdWZmZXItPmNvbnRleHQoKS5zY2FsZShl
eHBhbmRlZFNjYWxlZFNpemUgLyBzaXplKTsKKyAgICByZXR1cm4gaW1hZ2VCdWZmZXI7Cit9CisK
K1JlZlB0cjxJbWFnZUJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihj
b25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgc2NhbGUsIGNvbnN0IERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2Rl
LCBDcmVhdGVNZXRob2QgY3JlYXRlTWV0aG9kKSBjb25zdAoreworICAgIGF1dG8gZXhwYW5kZWRT
Y2FsZWRSZWN0ID0gc2NhbGVkSW1hZ2VCdWZmZXJSZWN0KHJlY3QsIHNjYWxlKTsKKyAgICBpZiAo
ZXhwYW5kZWRTY2FsZWRSZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICBhdXRvIGNsYW1waW5nU2NhbGUgPSBjbGFtcGluZ1NjYWxlRm9ySW1hZ2VCdWZmZXJTaXpl
KGV4cGFuZGVkU2NhbGVkUmVjdC5zaXplKCkpOworCisgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBp
bWFnZUJ1ZmZlcjsKKyAgICBpZiAoY3JlYXRlTWV0aG9kID09IENyZWF0ZU1ldGhvZDo6QmFzZSkK
KyAgICAgICAgaW1hZ2VCdWZmZXIgPSBHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVy
KGV4cGFuZGVkU2NhbGVkUmVjdC5zaXplKCkgKiBjbGFtcGluZ1NjYWxlLCBjb2xvclNwYWNlLCBy
ZW5kZXJpbmdNb2RlKTsKKyAgICBlbHNlCisgICAgICAgIGltYWdlQnVmZmVyID0gY3JlYXRlSW1h
Z2VCdWZmZXIoZXhwYW5kZWRTY2FsZWRSZWN0LnNpemUoKSAqIGNsYW1waW5nU2NhbGUsIGNvbG9y
U3BhY2UsIHJlbmRlcmluZ01vZGUpOworCisgICAgaWYgKCFpbWFnZUJ1ZmZlcikKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnNjYWxlKGNsYW1w
aW5nU2NhbGUpOworICAgIAorICAgIC8vICdyZWN0JyBpcyBtYXBwZWQgdG8gYSByZWN0YW5nbGUg
aW5zaWRlIGV4cGFuZGVkU2NhbGVkUmVjdC4KKyAgICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnRy
YW5zbGF0ZSgtZXhwYW5kZWRTY2FsZWRSZWN0LmxvY2F0aW9uKCkpOworICAgIAorICAgIC8vIFRo
ZSBzaXplIG9mIHRoaXMgcmVjdGFuZ2xlIGlzIG5vdCBuZWNlc3NhcmlseSBlcXVhbCB0byBleHBh
bmRlZFNjYWxlZFJlY3Quc2l6ZSgpLgorICAgIC8vIFNvIHVzZSAnc2NhbGUnIG5vdCAnZXhwYW5k
ZWRTY2FsZWRSZWN0LnNpemUoKSAvIHJlY3Quc2l6ZSgpJy4KKyAgICBpbWFnZUJ1ZmZlci0+Y29u
dGV4dCgpLnNjYWxlKHNjYWxlKTsKKyAgICByZXR1cm4gaW1hZ2VCdWZmZXI7Cit9CisKK1JlZlB0
cjxJbWFnZUJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBG
bG9hdFNpemUmIHNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc2NhbGUsIGNvbnN0IERlc3RpbmF0aW9u
Q29sb3JTcGFjZSYgY29sb3JTcGFjZSwgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdNb2RlPiByZW5k
ZXJpbmdNb2RlKSBjb25zdAoreworICAgIHJldHVybiBjcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCBz
Y2FsZSwgY29sb3JTcGFjZSwgcmVuZGVyaW5nTW9kZS52YWx1ZV9vcih0aGlzLT5yZW5kZXJpbmdN
b2RlKCkpLCBDcmVhdGVNZXRob2Q6OkJhc2UpOworfQorCitSZWZQdHI8SW1hZ2VCdWZmZXI+IEdy
YXBoaWNzQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBj
b25zdCBGbG9hdFNpemUmIHNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9y
U3BhY2UsIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nTW9kZT4gcmVuZGVyaW5nTW9kZSkgY29uc3QK
K3sKKyAgICByZXR1cm4gY3JlYXRlSW1hZ2VCdWZmZXIocmVjdCwgc2NhbGUsIGNvbG9yU3BhY2Us
IHJlbmRlcmluZ01vZGUudmFsdWVfb3IodGhpcy0+cmVuZGVyaW5nTW9kZSgpKSwgQ3JlYXRlTWV0
aG9kOjpCYXNlKTsKK30KKworUmVmUHRyPEltYWdlQnVmZmVyPiBHcmFwaGljc0NvbnRleHQ6OmNy
ZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IERl
c3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdN
b2RlPiByZW5kZXJpbmdNb2RlKSBjb25zdAoreworICAgIHJldHVybiBjcmVhdGVJbWFnZUJ1ZmZl
cihzaXplLCBzY2FsZUZhY3RvcigpLCBjb2xvclNwYWNlLCByZW5kZXJpbmdNb2RlLnZhbHVlX29y
KHRoaXMtPnJlbmRlcmluZ01vZGUoKSksIENyZWF0ZU1ldGhvZDo6QmFzZSk7Cit9CisKK1JlZlB0
cjxJbWFnZUJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0OjpjcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZm
ZXIoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNv
bG9yU3BhY2UsIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nTW9kZT4gcmVuZGVyaW5nTW9kZSkgY29u
c3QKK3sKKyAgICByZXR1cm4gY3JlYXRlSW1hZ2VCdWZmZXIocmVjdCwgc2NhbGVGYWN0b3IoKSwg
Y29sb3JTcGFjZSwgcmVuZGVyaW5nTW9kZS52YWx1ZV9vcih0aGlzLT5yZW5kZXJpbmdNb2RlKCkp
LCBDcmVhdGVNZXRob2Q6OkJhc2UpOworfQorCitSZWZQdHI8SW1hZ2VCdWZmZXI+IEdyYXBoaWNz
Q29udGV4dDo6Y3JlYXRlSW5Qcm9jZXNzQ29tcGF0aWJsZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0
U2l6ZSYgc2l6ZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlKSBjb25z
dAoreworICAgIHJldHVybiBjcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCBzY2FsZUZhY3RvcigpLCBj
b2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCBDcmVhdGVNZXRob2Q6OkJh
c2UpOworfQorCitSZWZQdHI8SW1hZ2VCdWZmZXI+IEdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlSW5Q
cm9jZXNzQ29tcGF0aWJsZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlKSBjb25zdAoreworICAgIHJldHVybiBj
cmVhdGVJbWFnZUJ1ZmZlcihyZWN0LCBzY2FsZUZhY3RvcigpLCBjb2xvclNwYWNlLCBSZW5kZXJp
bmdNb2RlOjpVbmFjY2VsZXJhdGVkLCBDcmVhdGVNZXRob2Q6OkJhc2UpOworfQorCiBJbWFnZURy
YXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBG
bG9hdFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdl
UGFpbnRpbmdPcHRpb25zKQogewogICAgIHJldHVybiBkcmF3SW1hZ2UoaW1hZ2UsIEZsb2F0UmVj
dChkZXN0aW5hdGlvbiwgaW1hZ2Uuc2l6ZSgpKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1h
Z2Uuc2l6ZSgpKSwgaW1hZ2VQYWludGluZ09wdGlvbnMpOwpAQCAtNjY4LDcgKzc4Miw3IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpjbGlwT3V0Um91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVk
UmVjdCYgcmVjdCkKIAogR3JhcGhpY3NDb250ZXh0OjpDbGlwVG9EcmF3aW5nQ29tbWFuZHNSZXN1
bHQgR3JhcGhpY3NDb250ZXh0OjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0
JiBkZXN0aW5hdGlvbiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBG
dW5jdGlvbjx2b2lkKEdyYXBoaWNzQ29udGV4dCYpPiYmIGRyYXdpbmdGdW5jdGlvbikKIHsKLSAg
ICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIo
ZGVzdGluYXRpb24uc2l6ZSgpLCBjb2xvclNwYWNlLCAqdGhpcyk7CisgICAgYXV0byBpbWFnZUJ1
ZmZlciA9IGNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihkZXN0aW5hdGlvbi5zaXplKCksIGNv
bG9yU3BhY2UpOwogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybiBDbGlwVG9E
cmF3aW5nQ29tbWFuZHNSZXN1bHQ6OkZhaWxlZFRvQ3JlYXRlSW1hZ2VCdWZmZXI7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5k
ZXggY2Y3MDkyZGUzM2JjNWI3MjhhZDQ2MWIwZmMwMjE3N2Y2OWVlZmYzMi4uYjdhY2NhZTI5OTFh
MTBhMWEyM2VjMjFhZmNmNWE5NzVhNzQwZjU4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTQxNiw2ICs0MTYsMTcgQEAg
cHVibGljOgogCiAgICAgLy8gSW1hZ2VzLCBQYXR0ZXJucywgYW5kIE1lZGlhCiAKKyAgICBJbnRT
aXplIGNvbXBhdGlibGVJbWFnZUJ1ZmZlclNpemUoY29uc3QgRmxvYXRTaXplJikgY29uc3Q7CisK
KyAgICB2aXJ0dWFsIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3Qg
RmxvYXRTaXplJiwgY29uc3QgRmxvYXRTaXplJiBzY2FsZSA9IHsgMSwgMSB9LCBjb25zdCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UmID0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIHN0ZDo6
b3B0aW9uYWw8UmVuZGVyaW5nTW9kZT4gPSBzdGQ6Om51bGxvcHQpIGNvbnN0OworICAgIHZpcnR1
YWwgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBGbG9hdFNpemUmIHNjYWxlID0geyAxLCAxIH0sIGNvbnN0IERlc3RpbmF0aW9uQ29s
b3JTcGFjZSYgPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgc3RkOjpvcHRpb25hbDxS
ZW5kZXJpbmdNb2RlPiA9IHN0ZDo6bnVsbG9wdCkgY29uc3Q7CisKKyAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVy
KGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgPSBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdNb2RlPiA9IHN0
ZDo6bnVsbG9wdCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBSZWZQdHI8SW1h
Z2VCdWZmZXI+IGNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmLCBj
b25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmID0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
KCksIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nTW9kZT4gPSBzdGQ6Om51bGxvcHQpIGNvbnN0Owor
CisgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJblByb2Nlc3NDb21wYXRpYmxlSW1hZ2VC
dWZmZXIoY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiA9IERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKSBjb25zdDsKKyAgICBSZWZQdHI8SW1hZ2VCdWZm
ZXI+IGNyZWF0ZUluUHJvY2Vzc0NvbXBhdGlibGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmID0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCKCkpIGNvbnN0OworCiAgICAgdmlydHVhbCB2b2lkIGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJ
bWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
ID0geyB9KSA9IDA7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBJbWFnZURyYXdSZXN1bHQgZHJhd0lt
YWdlKEltYWdlJiwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJiA9IHsgSW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdlIH0pOwpAQCAtNTQ2
LDYgKzU1NywxMyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaWxsRWxsaXBzZUFzUGF0aChjb25z
dCBGbG9hdFJlY3QmKTsKICAgICB2b2lkIHN0cm9rZUVsbGlwc2VBc1BhdGgoY29uc3QgRmxvYXRS
ZWN0Jik7CiAKKyAgICBlbnVtIGNsYXNzIENyZWF0ZU1ldGhvZCA6IGJvb2wgeyBEZWZhdWx0LCBC
YXNlIH07CisKKyAgICB2aXJ0dWFsIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZm
ZXIoY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgUmVuZGVy
aW5nTW9kZSkgY29uc3Q7CisKKyAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVm
ZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0U2l6ZSYgc2NhbGUsIGNvbnN0IERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSYsIFJlbmRlcmluZ01vZGUsIENyZWF0ZU1ldGhvZCkgY29uc3Q7Cisg
ICAgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBGbG9hdFNpemUmIHNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBS
ZW5kZXJpbmdNb2RlLCBDcmVhdGVNZXRob2QpIGNvbnN0OworCiAgICAgRmxvYXRSZWN0IGNvbXB1
dGVMaW5lQm91bmRzQW5kQW50aWFsaWFzaW5nTW9kZUZvclRleHQoY29uc3QgRmxvYXRSZWN0Jiwg
Ym9vbCBwcmludGluZywgQ29sb3ImKTsKIAogICAgIGZsb2F0IGRhc2hlZExpbmVDb3JuZXJXaWR0
aEZvclN0cm9rZVdpZHRoKGZsb2F0KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAppbmRleCAwMTkzYmZiMGY5NmM3ZDM0MDUzZTc2
OGEwYzI1OGZjMTI1NzgwZmQzLi5jNWVmMzBhMmIwYjA3ODY0OTY4N2UwZGUxNzY3ZjA1ZTM3OWEz
MjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXIuY3BwCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwOSBEaXJrIFNj
aHVsemUgPGtyaXRAd2Via2l0Lm9yZz4KICAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90
aW9uIExpbWl0ZWQgMjAxMS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykg
MjAxNi0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNi0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzIsNzMgKzcyLDE0IEBAIFJlZlB0cjxJbWFnZUJ1ZmZl
cj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIFJlbmRlcmluZ01v
ZGUgcmVuCiAgICAgcmV0dXJuIGltYWdlQnVmZmVyOwogfQogCi1SZWZQdHI8SW1hZ2VCdWZmZXI+
IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6
ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQorUmVmUHRyPEltYWdlQnVmZmVyPiBJ
bWFnZUJ1ZmZlcjo6Y2xvbmUoKSBjb25zdAogewotICAgIGlmIChzaXplLmlzRW1wdHkoKSkKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBJbnRTaXplIHNjYWxlZFNpemUgPSBJbWFnZUJ1
ZmZlcjo6Y29tcGF0aWJsZUJ1ZmZlclNpemUoc2l6ZSwgY29udGV4dCk7Ci0KLSAgICBSZWZQdHI8
SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyOwotCi0gICAgaWYgKGNvbnRleHQucmVuZGVyaW5nTW9k
ZSgpID09IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkKQotICAgICAgICBpbWFnZUJ1ZmZlciA9
IEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXI6OmNyZWF0ZShzY2FsZWRTaXplLCBjb250ZXh0KTsKLSAg
ICAKLSAgICBpZiAoIWltYWdlQnVmZmVyKQotICAgICAgICBpbWFnZUJ1ZmZlciA9IFVuYWNjZWxl
cmF0ZWRJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNjYWxlZFNpemUsIGNvbnRleHQpOwotCi0gICAgaWYg
KCFpbWFnZUJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBpbWFnZUJ1ZmZl
ci0+Y29udGV4dCgpLnNjYWxlKHNjYWxlZFNpemUgLyBzaXplKTsKLSAgICByZXR1cm4gaW1hZ2VC
dWZmZXI7Ci19Ci0KLS8vIFRoaXMgaXMgdXNlZnVsIHdoZW4geW91IG5lZWQgdG8gbWFrZSBzdXJl
IHRoZSBwaXhlbCBncmlkIG9mIHRoZSBJbWFnZUJ1ZmZlciBhbGlnbnMgd2l0aCB0aGUgcGl4ZWwg
Z3JpZCBvZiB0aGUgY29udGV4dC4KLS8vIFNpbXBseSBzYXlpbmcgY3JlYXRlQ29tcGF0aWJsZUJ1
ZmZlcihyZWN0LnNpemUoKSwgY29udGV4dCkgaXNuJ3Qgc3VmZmljaWVudCBpbiB0aGlzIHNpdHVh
dGlvbiwgYmVjYXVzZSByZWN0LmxvY2F0aW9uKCkgbWF5IG5vdCBsaWUgb24gYSBwaXhlbCBib3Vu
ZGFyeS4KLS8vIEluIHRoaXMgc2l0dWF0aW9uLCB3ZSBoYXZlIHRvIGluZmxhdGUgYm90aCB0aGUg
bGVmdCBzaWRlIGFuZCB0aGUgcmlnaHQgc2lkZSwgd2hpY2ggY2FuIGxlYWQgdG8gZGlmZmVyZW50
IHJlc3VsdHMgdGhhbgotLy8gY3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihyZWN0LnNpemUoKSwgY29u
dGV4dCkgd291bGQgaGF2ZSBwcm9kdWNlZC4KLWF1dG8gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBh
dGlibGVCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQpIC0+IHN0ZDo6b3B0aW9uYWw8Q29tcGF0aWJsZUJ1ZmZlckRlc2NyaXB0aW9uPgot
ewotICAgIGlmIChyZWN0LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
LQotICAgIGF1dG8gaW5mbyA9IEltYWdlQnVmZmVyOjpjb21wYXRpYmxlQnVmZmVySW5mbyhyZWN0
LCBjb250ZXh0KTsKLQotICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXI7Ci0KLSAg
ICBpZiAoY29udGV4dC5yZW5kZXJpbmdNb2RlKCkgPT0gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0
ZWQpCi0gICAgICAgIGltYWdlQnVmZmVyID0gQWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlcjo6Y3JlYXRl
KGluZm8ucGh5c2ljYWxTaXplSW5EZXZpY2VDb29yZGluYXRlcywgY29udGV4dCk7Ci0gICAgCi0g
ICAgaWYgKCFpbWFnZUJ1ZmZlcikKLSAgICAgICAgaW1hZ2VCdWZmZXIgPSBVbmFjY2VsZXJhdGVk
SW1hZ2VCdWZmZXI6OmNyZWF0ZShpbmZvLnBoeXNpY2FsU2l6ZUluRGV2aWNlQ29vcmRpbmF0ZXMs
IGNvbnRleHQpOwotCi0gICAgaWYgKCFpbWFnZUJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKLQotICAgIGltYWdlQnVmZmVyLT5jb250ZXh0KCkuc2NhbGUoaW5mby5zY2FsZSk7
Ci0gICAgaW1hZ2VCdWZmZXItPmNvbnRleHQoKS50cmFuc2xhdGUoLWluZm8uaW5mbGF0ZWRSZWN0
SW5Vc2VyQ29vcmRpbmF0ZXMubG9jYXRpb24oKSk7Ci0gICAgcmV0dXJuIHsgeyBpbWFnZUJ1ZmZl
ci5yZWxlYXNlTm9uTnVsbCgpLCBpbmZvLmluZmxhdGVkUmVjdEluVXNlckNvb3JkaW5hdGVzIH0g
fTsKLX0KLQotUmVmUHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJs
ZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSYgY29sb3JTcGFjZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQotewotICAgIGlm
IChzaXplLmlzRW1wdHkoKSkKKyAgICBhdXRvIGNsb25lID0gY29udGV4dCgpLmNyZWF0ZUNvbXBh
dGlibGVJbWFnZUJ1ZmZlcihsb2dpY2FsU2l6ZSgpLCBjb2xvclNwYWNlKCkpOworICAgIGlmICgh
Y2xvbmUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgSW50U2l6ZSBzY2FsZWRTaXpl
ID0gSW1hZ2VCdWZmZXI6OmNvbXBhdGlibGVCdWZmZXJTaXplKHNpemUsIGNvbnRleHQpOwotCi0g
ICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVy
KHNjYWxlZFNpemUsIDEsIGNvbG9yU3BhY2UsIGNvbnRleHQpOwotICAgIGlmICghaW1hZ2VCdWZm
ZXIpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgaW1hZ2VCdWZmZXItPmNvbnRleHQo
KS5zY2FsZShzY2FsZWRTaXplIC8gc2l6ZSk7Ci0gICAgcmV0dXJuIGltYWdlQnVmZmVyOwotfQot
Ci1SZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVy
KGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCkKLXsKLSAgICByZXR1cm4gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaXplLCBjb250ZXh0LnJl
bmRlcmluZ01vZGUoKSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6
QkdSQTgpOworICAgIGNsb25lLT5jb250ZXh0KCkuZHJhd0ltYWdlQnVmZmVyKGNvbnN0X2Nhc3Q8
SW1hZ2VCdWZmZXImPigqdGhpcyksIEZsb2F0UG9pbnQoKSk7CisgICAgcmV0dXJuIGNsb25lOwog
fQogCiBib29sIEltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhjb25zdCBGbG9hdFNpemUm
IHNpemUpCkBAIC0xODUsNTggKzEyNiw2IEBAIEZsb2F0UmVjdCBJbWFnZUJ1ZmZlcjo6Y2xhbXBl
ZFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgIHJldHVybiBGbG9hdFJlY3QocmVjdC5s
b2NhdGlvbigpLCBjbGFtcGVkU2l6ZShyZWN0LnNpemUoKSkpOwogfQogCi1JbnRTaXplIEltYWdl
QnVmZmVyOjpjb21wYXRpYmxlQnVmZmVyU2l6ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0
IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKLXsKLSAgICAvLyBFbmxhcmdlIHRoZSBidWZmZXIg
c2l6ZSBpZiB0aGUgY29udGV4dCdzIHRyYW5zZm9ybSBpcyBzY2FsaW5nIGl0IHNvIHdlIG5lZWQg
YSBoaWdoZXIKLSAgICAvLyByZXNvbHV0aW9uIHRoYW4gb25lIHBpeGVsIHBlciB1bml0LgotICAg
IHJldHVybiBleHBhbmRlZEludFNpemUoc2l6ZSAqIGNvbnRleHQuc2NhbGVGYWN0b3IoKSk7Ci19
Ci0KLWF1dG8gSW1hZ2VCdWZmZXI6OmNvbXBhdGlibGVCdWZmZXJJbmZvKGNvbnN0IEZsb2F0UmVj
dCYgcmVjdCwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSAtPiBDb21wYXRpYmxlQnVm
ZmVySW5mbwotewotICAgIGF1dG8gc2NhbGVGYWN0b3IgPSBjb250ZXh0LnNjYWxlRmFjdG9yKCk7
Ci0gICAgYXV0byBzY2FsZWRSZWN0ID0gcmVjdDsKLSAgICBzY2FsZWRSZWN0LnNjYWxlKHNjYWxl
RmFjdG9yKTsKLSAgICBhdXRvIGluZmxhdGVkU2NhbGVkUmVjdCA9IGVuY2xvc2luZ0ludFJlY3Qo
c2NhbGVkUmVjdCk7Ci0gICAgYXV0byBpbmZsYXRlZFJlY3RJblVzZXJDb29yZGluYXRlcyA9IEZs
b2F0UmVjdChpbmZsYXRlZFNjYWxlZFJlY3QpOwotCi0gICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBh
bGxvY2F0ZSBodWdlIEltYWdlQnVmZmVycyBiZWNhdXNlIHRoZXkgY2FuIHRha2UgYSBsb3Qgb2Yg
bWVtb3J5LAotICAgIC8vIHNvIGlmIHRoZSBzaXplIHdvdWxkIGhhdmUgYmVlbiB0b28gYmlnLCBk
ZWNyZWFzZSByZXNvbHV0aW9uIGFuZCBzY2FsZSB0aGUgcmVzdWx0aW5nIGNvbnRleHQuCi0gICAg
Ly8gVGhpcyB3aWxsIG1lYW4gdGhhdCB0aGUgSW1hZ2VCdWZmZXIgd2lsbCBsb3NlIHF1YWxpdHks
IGJ1dCB3aWxsIHN0aWxsIGdlbmVyYWxseSBsb29rIGNvcnJlY3QuCi0gICAgY29uc3RleHByIGlu
dCBtYXhEaW1lbnNpb24gPSA0MDk2OwotICAgIGlmIChpbmZsYXRlZFNjYWxlZFJlY3Qud2lkdGgo
KSA+IG1heERpbWVuc2lvbikgewotICAgICAgICAvLyBUaGUgcGl4ZWwgZ3JpZHMgd29uJ3QgYWxp
Z24gYW55IG1vcmUsIHNvIHRoZXJlJ3Mgbm8gbmVlZCB0byB0cnkgdG8gaGFuZGxlIGZyYWN0aW9u
cyBvZiBwaXhlbHMuCi0gICAgICAgIGluZmxhdGVkU2NhbGVkUmVjdC5zZXRXaWR0aChtYXhEaW1l
bnNpb24pOwotICAgICAgICBpbmZsYXRlZFJlY3RJblVzZXJDb29yZGluYXRlcy5zY2FsZShtYXhE
aW1lbnNpb24gLyBpbmZsYXRlZFJlY3RJblVzZXJDb29yZGluYXRlcy53aWR0aCgpLCAxKTsKLSAg
ICAgICAgc2NhbGVGYWN0b3Iuc2V0V2lkdGgobWF4RGltZW5zaW9uIC8gcmVjdC53aWR0aCgpKTsK
LSAgICB9Ci0gICAgaWYgKGluZmxhdGVkU2NhbGVkUmVjdC5oZWlnaHQoKSA+IG1heERpbWVuc2lv
bikgewotICAgICAgICAvLyBUaGUgcGl4ZWwgZ3JpZHMgd29uJ3QgYWxpZ24gYW55IG1vcmUsIHNv
IHRoZXJlJ3Mgbm8gbmVlZCB0byB0cnkgdG8gaGFuZGxlIGZyYWN0aW9ucyBvZiBwaXhlbHMuCi0g
ICAgICAgIGluZmxhdGVkU2NhbGVkUmVjdC5zZXRIZWlnaHQobWF4RGltZW5zaW9uKTsKLSAgICAg
ICAgaW5mbGF0ZWRSZWN0SW5Vc2VyQ29vcmRpbmF0ZXMuc2NhbGUoMSwgbWF4RGltZW5zaW9uIC8g
aW5mbGF0ZWRSZWN0SW5Vc2VyQ29vcmRpbmF0ZXMuaGVpZ2h0KCkpOwotICAgICAgICBzY2FsZUZh
Y3Rvci5zZXRIZWlnaHQobWF4RGltZW5zaW9uIC8gcmVjdC5oZWlnaHQoKSk7Ci0gICAgfQotCi0g
ICAgYXV0byBwaHlzaWNhbFNpemVJbkRldmljZUNvb3JkaW5hdGVzID0gaW5mbGF0ZWRTY2FsZWRS
ZWN0LnNpemUoKTsKLSAgICBpbmZsYXRlZFJlY3RJblVzZXJDb29yZGluYXRlcy5zY2FsZSgxLjBm
IC8gc2NhbGVGYWN0b3IpOwotICAgIHJldHVybiB7IFdURk1vdmUocGh5c2ljYWxTaXplSW5EZXZp
Y2VDb29yZGluYXRlcyksIFdURk1vdmUoaW5mbGF0ZWRSZWN0SW5Vc2VyQ29vcmRpbmF0ZXMpLCBz
Y2FsZUZhY3RvciB9OwotfQotCi1SZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjb3B5
UmVjdFRvQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRGVzdGluYXRpb25Db2xv
clNwYWNlJiBjb2xvclNwYWNlLCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCi17Ci0g
ICAgaWYgKHJlY3QuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIElu
dFNpemUgc2NhbGVkU2l6ZSA9IEltYWdlQnVmZmVyOjpjb21wYXRpYmxlQnVmZmVyU2l6ZShyZWN0
LnNpemUoKSwgY29udGV4dCk7Ci0KLSAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVh
dGVDb21wYXRpYmxlQnVmZmVyKHNjYWxlZFNpemUsIDEsIGNvbG9yU3BhY2UsIGNvbnRleHQpOwot
ICAgIGlmICghYnVmZmVyKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGJ1ZmZlci0+
Y29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcigqdGhpcywgLXJlY3QubG9jYXRpb24oKSk7Ci0gICAg
cmV0dXJuIGJ1ZmZlcjsKLX0KLQogUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlcjo6c2lu
a0ludG9OYXRpdmVJbWFnZShSZWZQdHI8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyKQogewogICAg
IHJldHVybiBpbWFnZUJ1ZmZlci0+c2lua0ludG9OYXRpdmVJbWFnZSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKaW5kZXggNGI3MWYyMzUzYzhk
MGNkOGVkZjRhZjVlNTkyNmI3ZGUyOTJjOGE2Mi4uYWU2NDIxYTFmM2U0OTE5YmYzMTA4YTM3ZjRm
YzdhYTM2NThiMTA2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUJ1ZmZlci5oCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNiBO
aWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykg
MjAwNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwNy0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdo
dCAoQykgMjAxMCBUb3JjaCBNb2JpbGUgKEJlaWppbmcpIENvLiBMdGQuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC01MCwxNSArNTAsNyBAQCBwdWJsaWM6CiAgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IEZs
b2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIFNob3VsZFVzZURpc3BsYXlMaXN0LCBSZW5kZXJpbmdQ
dXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSYsIFBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93KiA9IG51bGxwdHIpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZShjb25zdCBGbG9hdFNp
emUmLCBSZW5kZXJpbmdNb2RlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0
aW9uQ29sb3JTcGFjZSYsIFBpeGVsRm9ybWF0LCBjb25zdCBIb3N0V2luZG93KiA9IG51bGxwdHIp
OwogCi0gICAgLy8gQ3JlYXRlIGFuIGltYWdlIGJ1ZmZlciBjb21wYXRpYmxlIHdpdGggdGhlIGNv
bnRleHQsIHdpdGggc3VpdGFibGUgcmVzb2x1dGlvbiBmb3IgZHJhd2luZyBpbnRvIHRoZSBidWZm
ZXIgYW5kIHRoZW4gaW50byB0aGlzIGNvbnRleHQuCi0gICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1
ZmZlcj4gY3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBjb25zdCBHcmFw
aGljc0NvbnRleHQmKTsKLSAgICBzdHJ1Y3QgQ29tcGF0aWJsZUJ1ZmZlckRlc2NyaXB0aW9uIHsK
LSAgICAgICAgUmVmPEltYWdlQnVmZmVyPiBpbWFnZUJ1ZmZlcjsKLSAgICAgICAgRmxvYXRSZWN0
IGluZmxhdGVkUmVjdEluVXNlckNvb3JkaW5hdGVzOwotICAgIH07Ci0gICAgc3RhdGljIHN0ZDo6
b3B0aW9uYWw8Q29tcGF0aWJsZUJ1ZmZlckRlc2NyaXB0aW9uPiBjcmVhdGVDb21wYXRpYmxlQnVm
ZmVyKGNvbnN0IEZsb2F0UmVjdCYgcmVjdEluVXNlckNvb3JkaW5hdGVzLCBjb25zdCBHcmFwaGlj
c0NvbnRleHQmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVy
PiBjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IERlc3RpbmF0
aW9uQ29sb3JTcGFjZSYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOwotICAgIHN0YXRpYyBSZWZQ
dHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwg
ZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmLCBjb25z
dCBHcmFwaGljc0NvbnRleHQmKTsKKyAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNsb25lKCkgY29u
c3Q7CiAKICAgICAvLyBUaGVzZSBmdW5jdGlvbnMgYXJlIHVzZWQgd2hlbiBjbGFtcGluZyB0aGUg
SW1hZ2VCdWZmZXIgd2hpY2ggaXMgY3JlYXRlZCBmb3IgZmlsdGVyLCBtYXNrZXIgb3IgY2xpcHBl
ci4KICAgICBzdGF0aWMgYm9vbCBzaXplTmVlZHNDbGFtcGluZyhjb25zdCBGbG9hdFNpemUmKTsK
QEAgLTY3LDE1ICs1OSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgRmxvYXRTaXplIGNsYW1wZWRT
aXplKGNvbnN0IEZsb2F0U2l6ZSYsIEZsb2F0U2l6ZSYgc2NhbGUpOwogICAgIHN0YXRpYyBGbG9h
dFJlY3QgY2xhbXBlZFJlY3QoY29uc3QgRmxvYXRSZWN0Jik7CiAKLSAgICBzdGF0aWMgSW50U2l6
ZSBjb21wYXRpYmxlQnVmZmVyU2l6ZShjb25zdCBGbG9hdFNpemUmLCBjb25zdCBHcmFwaGljc0Nv
bnRleHQmKTsKLSAgICBzdHJ1Y3QgQ29tcGF0aWJsZUJ1ZmZlckluZm8gewotICAgICAgICBJbnRT
aXplIHBoeXNpY2FsU2l6ZUluRGV2aWNlQ29vcmRpbmF0ZXM7Ci0gICAgICAgIEZsb2F0UmVjdCBp
bmZsYXRlZFJlY3RJblVzZXJDb29yZGluYXRlczsKLSAgICAgICAgRmxvYXRTaXplIHNjYWxlOwot
ICAgIH07Ci0gICAgc3RhdGljIENvbXBhdGlibGVCdWZmZXJJbmZvIGNvbXBhdGlibGVCdWZmZXJJ
bmZvKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOwotICAgIAotICAg
IFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfkltYWdlQnVmZmVyKCkgPSBkZWZhdWx0OworICAgIHZp
cnR1YWwgfkltYWdlQnVmZmVyKCkgPSBkZWZhdWx0OwogCiAgICAgdmlydHVhbCB2b2lkIHNldEJh
Y2tlbmQoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQmFja2VuZD4mJikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBjbGVhckJhY2tlbmQoKSA9IDA7CkBAIC0xMTksOSArMTAzLDYgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgUmVmUHRyPEltYWdlPiBjb3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9
IENvcHlCYWNraW5nU3RvcmUsIFByZXNlcnZlUmVzb2x1dGlvbiA9IFByZXNlcnZlUmVzb2x1dGlv
bjo6Tm8pIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFJlZlB0cjxJbWFnZT4gZmlsdGVyZWRJbWFn
ZShGaWx0ZXImKSA9IDA7CiAKLSAgICAvLyBDcmVhdGUgYW4gaW1hZ2UgYnVmZmVyIGNvbXBhdGli
bGUgd2l0aCB0aGUgY29udGV4dCBhbmQgY29weSByZWN0IGZyb20gdGhpcyBidWZmZXIgaW50byB0
aGlzIG5ldyBvbmUuCi0gICAgUmVmUHRyPEltYWdlQnVmZmVyPiBjb3B5UmVjdFRvQnVmZmVyKGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIGNvbnN0IEdyYXBo
aWNzQ29udGV4dCYpOwotCiAgICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0ID0gRmxv
YXRSZWN0KDAsIDAsIC0xLCAtMSksIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2Us
IGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0g
eyB9KSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwCmluZGV4IDZmZmMyODJiOWNjNzUw
NDA4ODhjYjM2NGZiMzMwMjAyZmNiMDNiZDAuLjM3MGM3ZGMyODk2ZjM5NjJjYjNlZDUwOTgyZGFi
Njk5NzRmNjMyYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmNwcApAQCAtNjUsNyArNjUsNyBA
QCBJbWFnZURyYXdSZXN1bHQgTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3KEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgRgogdm9pZCBOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2U6
OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBk
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
cGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6
ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAjaWYg
VVNFKE5FV19USEVNRSkKLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0
ZUNvbXBhdGlibGVCdWZmZXIoc2l6ZSgpLCBjb250ZXh0KTsKKyAgICBhdXRvIGltYWdlQnVmZmVy
ID0gY29udGV4dC5jcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIoc2l6ZSgpKTsKICAgICBpZiAo
IWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKaW5kZXggMGUw
NGNiYmM0MmUyN2JjYzlhNTM0ZmQwZmFkYzIwN2ZlY2QzMWJkMS4uZWE3ZTEyNTY3NmVlM2U1ZGEx
ZjZkMWQ5MDFjZDc4OWRiOTczNTk1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKQEAgLTIzMiwxNCArMjMy
LDE1IEBAIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6dXBkYXRlQ2FjaGVkSW1hZ2VJZk5lZWRlZChH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0CiAKICAgICAvLyBDYWNoZSB0aGUgUERGIGlt
YWdlIG9ubHkgaWYgdGhlIHNpemUgb2YgdGhlIG5ldyBpbWFnZSB3b24ndCBleGNlZWQgdGhlIGNh
Y2hlIHRocmVzaG9sZC4KICAgICBpZiAobV9wZGZJbWFnZUNhY2hpbmdQb2xpY3kgPT0gUERGSW1h
Z2VDYWNoaW5nUG9saWN5OjpCZWxvd01lbW9yeUxpbWl0KSB7Ci0gICAgICAgIEludFNpemUgc2Nh
bGVkU2l6ZSA9IEltYWdlQnVmZmVyOjpjb21wYXRpYmxlQnVmZmVyU2l6ZShjYWNoZWRJbWFnZVNp
emUsIGNvbnRleHQpOworICAgICAgICBhdXRvIHNjYWxlZFNpemUgPSBjb250ZXh0LmNvbXBhdGli
bGVJbWFnZUJ1ZmZlclNpemUoY2FjaGVkSW1hZ2VTaXplKTsKICAgICAgICAgaWYgKHNfYWxsRGVj
b2RlZERhdGFTaXplICsgc2NhbGVkU2l6ZS51bmNsYW1wZWRBcmVhKCkgKiA0IC0gbV9jYWNoZWRC
eXRlcyA+IHNfbWF4RGVjb2RlZERhdGFTaXplKSB7CiAgICAgICAgICAgICBkZXN0cm95RGVjb2Rl
ZERhdGEoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KIAotICAgIG1f
Y2FjaGVkSW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihj
YWNoZWRJbWFnZVNpemUsIGNvbnRleHQpOworICAgIC8vIENyZWF0ZSBpbi1wcm9jZXNzIEltYWdl
QnVmZmVyIHNpbmNlIHRoZSBkZWNvZGluZyBvZiBQREYgaW1hZ2VzIGhhcyB0byBoYXBwZW4gaW4g
V2ViUHJvY2Vzcy4KKyAgICBtX2NhY2hlZEltYWdlQnVmZmVyID0gY29udGV4dC5jcmVhdGVJblBy
b2Nlc3NDb21wYXRpYmxlSW1hZ2VCdWZmZXIoY2FjaGVkSW1hZ2VTaXplKTsKICAgICBpZiAoIW1f
Y2FjaGVkSW1hZ2VCdWZmZXIpIHsKICAgICAgICAgZGVzdHJveURlY29kZWREYXRhKCk7CiAgICAg
ICAgIHJldHVybjsKQEAgLTI5Miw3ICsyOTMsNyBAQCBJbWFnZURyYXdSZXN1bHQgUERGRG9jdW1l
bnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdAog
ICAgICAgICAgICAgLy8gc2NhbGFyID0gc3FydChtYXggbnVtYmVyIG9mIHBpeGVscyAvICh3aWR0
aCAqIGhlaWdodCkpCiAgICAgICAgICAgICBhdXRvIHNjYWxhciA9IHN0ZDo6bWluKDEuZiwgc3Rk
OjpzcXJ0KHN0YXRpY19jYXN0PGZsb2F0PihzX21heENhY2hlZEltYWdlQXJlYSkgLyAoZHN0UmVj
dC53aWR0aCgpICogZHN0UmVjdC5oZWlnaHQoKSkpKTsKICAgICAgICAgICAgIEZsb2F0UmVjdCBs
b2NhbERlc3RpbmF0aW9uUmVjdChGbG9hdFBvaW50KCksIGRzdFJlY3Quc2l6ZSgpICogc2NhbGFy
KTsKLSAgICAgICAgICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0
ZUNvbXBhdGlibGVCdWZmZXIobG9jYWxEZXN0aW5hdGlvblJlY3Quc2l6ZSgpLCBjb250ZXh0KSkg
eworICAgICAgICAgICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXIgPSBjb250ZXh0LmNyZWF0ZUluUHJv
Y2Vzc0NvbXBhdGlibGVJbWFnZUJ1ZmZlcihsb2NhbERlc3RpbmF0aW9uUmVjdC5zaXplKCkpKSB7
CiAgICAgICAgICAgICAgICAgYXV0byYgYnVmZmVyQ29udGV4dCA9IGltYWdlQnVmZmVyLT5jb250
ZXh0KCk7CiAgICAgICAgICAgICAgICAgdHJhbnNmb3JtQ29udGV4dEZvclBhaW50aW5nKGJ1ZmZl
ckNvbnRleHQsIGxvY2FsRGVzdGluYXRpb25SZWN0LCBzcmNSZWN0KTsKICAgICAgICAgICAgICAg
ICBkcmF3UERGUGFnZShidWZmZXJDb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0RyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0RyYXdHbHlwaHNS
ZWNvcmRlckNvcmVUZXh0LmNwcAppbmRleCBjMjk1ZWZlODM0N2IwNDViZTMxZGIzNjc2NzNlZTdm
OTk1YjFhNGMzLi41NGI3ZmI0NjRhOWQ4NDdlMjMyNDY3YzdkMGQ5NGFjNDI2ZTI4YTMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9EcmF3R2x5
cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29yZXRleHQvRHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCkBAIC0zNzQsMTQg
KzM3NCwxOSBAQCB2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6cmVjb3JkRHJhd0ltYWdlKENHUmVu
ZGVyaW5nU3RhdGVSZWYsIENHR1N0YXRlUmVmIGdzdGF0ZQogdm9pZCBEcmF3R2x5cGhzUmVjb3Jk
ZXI6OmRyYXdPVFNWR1J1bihjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBo
KiBnbHlwaHMsIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVkIG51
bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgc3RhcnRQb2ludCwgRm9udFNtb290aGluZ01vZGUg
c21vb3RoaW5nTW9kZSkKIHsKICAgICBGbG9hdFBvaW50IHBlblBvc2l0aW9uID0gc3RhcnRQb2lu
dDsKKwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1HbHlwaHM7ICsraSkgewogICAg
ICAgICBhdXRvIGJvdW5kcyA9IGZvbnQuYm91bmRzRm9yR2x5cGgoZ2x5cGhzW2ldKTsKLSAgICAg
ICAgaWYgKGF1dG8gaW1hZ2VCdWZmZXJEZXNjcmlwdGlvbiA9IEltYWdlQnVmZmVyOjpjcmVhdGVD
b21wYXRpYmxlQnVmZmVyKGJvdW5kcywgbV9vd25lcikpIHsKLSAgICAgICAgICAgIEZvbnRDYXNj
YWRlOjpkcmF3R2x5cGhzKGltYWdlQnVmZmVyRGVzY3JpcHRpb24tPmltYWdlQnVmZmVyLT5jb250
ZXh0KCksIGZvbnQsIGdseXBocyArIGksIGFkdmFuY2VzICsgaSwgMSwgRmxvYXRQb2ludCgpLCBz
bW9vdGhpbmdNb2RlKTsKLSAgICAgICAgICAgIGF1dG8gZGVzdGluYXRpb25SZWN0ID0gaW1hZ2VC
dWZmZXJEZXNjcmlwdGlvbi0+aW5mbGF0ZWRSZWN0SW5Vc2VyQ29vcmRpbmF0ZXM7CisKKyAgICAg
ICAgLy8gQ3JlYXRlIGluLXByb2Nlc3MgSW1hZ2VCdWZmZXIgc2luY2UgdGhlIGRlY29kaW5nIG9m
IE9ULVNWRyBmb250cyBoYXMgdG8gaGFwcGVuIGluIFdlYlByb2Nlc3MuCisgICAgICAgIGlmIChh
dXRvIGltYWdlQnVmZmVyID0gbV9vd25lci5jcmVhdGVJblByb2Nlc3NDb21wYXRpYmxlSW1hZ2VC
dWZmZXIoYm91bmRzKSkgeworICAgICAgICAgICAgRm9udENhc2NhZGU6OmRyYXdHbHlwaHMoaW1h
Z2VCdWZmZXItPmNvbnRleHQoKSwgZm9udCwgZ2x5cGhzICsgaSwgYWR2YW5jZXMgKyBpLCAxLCBG
bG9hdFBvaW50KCksIHNtb290aGluZ01vZGUpOworCisgICAgICAgICAgICBGbG9hdFJlY3QgZGVz
dGluYXRpb25SZWN0ID0gZW5jbG9zaW5nSW50UmVjdChib3VuZHMpOwogICAgICAgICAgICAgZGVz
dGluYXRpb25SZWN0Lm1vdmVCeShwZW5Qb3NpdGlvbik7Ci0gICAgICAgICAgICBtX293bmVyLmRy
YXdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlckRlc2NyaXB0aW9uLT5pbWFnZUJ1ZmZlciwgZGVzdGlu
YXRpb25SZWN0KTsKKyAgICAgICAgICAgIG1fb3duZXIuZHJhd0ltYWdlQnVmZmVyKCppbWFnZUJ1
ZmZlciwgZGVzdGluYXRpb25SZWN0KTsKICAgICAgICAgfQorCiAgICAgICAgIHBlblBvc2l0aW9u
Lm1vdmUoc2l6ZShhZHZhbmNlc1tpXSkpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlY29yZGVyLmNwcAppbmRleCA4OWYzZDM1M2RhN2JiNDE3MTE4ZmY3MTg4Y2VkYzA3
YzA4YmNjODQ3Li41NDczYmFjMTAwOGU0YWQ1MDUwNGJjNTkxMzM4YzU5YjAxMmVhMmQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBAIC01MDcsNiArNTA3LDI2
IEBAIEdyYXBoaWNzQ29udGV4dDo6Q2xpcFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0IFJlY29yZGVy
OjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uCiAgICAgcmV0dXJuIENsaXBUb0RyYXdpbmdDb21t
YW5kc1Jlc3VsdDo6U3VjY2VzczsKIH0KIAorUmVmUHRyPEltYWdlQnVmZmVyPiBSZWNvcmRlcjo6
Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBjb25zdCBGbG9hdFNpemUm
IHNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIHN0ZDo6b3B0
aW9uYWw8UmVuZGVyaW5nTW9kZT4gcmVuZGVyaW5nTW9kZSkgY29uc3QKK3sKKyAgICByZXR1cm4g
R3JhcGhpY3NDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCBzY2FsZSwgY29sb3JTcGFj
ZSwgcmVuZGVyaW5nTW9kZS52YWx1ZV9vcih0aGlzLT5yZW5kZXJpbmdNb2RlKCkpLCBDcmVhdGVN
ZXRob2Q6OkRlZmF1bHQpOworfQorCitSZWZQdHI8SW1hZ2VCdWZmZXI+IFJlY29yZGVyOjpjcmVh
dGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgc2Nh
bGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgc3RkOjpvcHRpb25h
bDxSZW5kZXJpbmdNb2RlPiByZW5kZXJpbmdNb2RlKSBjb25zdAoreworICAgIHJldHVybiBHcmFw
aGljc0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKHJlY3QsIHNjYWxlLCBjb2xvclNwYWNlLCBy
ZW5kZXJpbmdNb2RlLnZhbHVlX29yKHRoaXMtPnJlbmRlcmluZ01vZGUoKSksIENyZWF0ZU1ldGhv
ZDo6RGVmYXVsdCk7Cit9CisKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gUmVjb3JkZXI6OmNyZWF0ZUNv
bXBhdGlibGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IERlc3RpbmF0
aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdNb2RlPiBy
ZW5kZXJpbmdNb2RlKSBjb25zdAoreworICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQ6OmNyZWF0
ZUltYWdlQnVmZmVyKHNpemUsIHNjYWxlRmFjdG9yKCksIGNvbG9yU3BhY2UsIHJlbmRlcmluZ01v
ZGUudmFsdWVfb3IodGhpcy0+cmVuZGVyaW5nTW9kZSgpKSwgQ3JlYXRlTWV0aG9kOjpEZWZhdWx0
KTsKK30KKworUmVmUHRyPEltYWdlQnVmZmVyPiBSZWNvcmRlcjo6Y3JlYXRlQ29tcGF0aWJsZUlt
YWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRGVzdGluYXRpb25Db2xvclNw
YWNlJiBjb2xvclNwYWNlLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ01vZGU+IHJlbmRlcmluZ01v
ZGUpIGNvbnN0Cit7CisgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZm
ZXIocmVjdCwgc2NhbGVGYWN0b3IoKSwgY29sb3JTcGFjZSwgcmVuZGVyaW5nTW9kZS52YWx1ZV9v
cih0aGlzLT5yZW5kZXJpbmdNb2RlKCkpLCBDcmVhdGVNZXRob2Q6OkRlZmF1bHQpOworfQorCiAj
aWYgRU5BQkxFKFZJREVPKQogdm9pZCBSZWNvcmRlcjo6cGFpbnRGcmFtZUZvck1lZGlhKE1lZGlh
UGxheWVyJiBwbGF5ZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24pCiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZWNvcmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAppbmRleCA0MGU3YTBjMjU2MDM3MTM1OWNhZWRk
ZmRkNTM5MjA1ZWQxNTg3ZTk4Li40MjNkNjE2NGRiNGQyZTE0YzM0MTk1MGRlNzJjNWU4ZTY1N2Fm
ODlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKQEAgLTE4NSw2ICsx
ODUsMTIgQEAgcHJvdGVjdGVkOgogICAgIGNvbnN0IENvbnRleHRTdGF0ZSYgY3VycmVudFN0YXRl
KCkgY29uc3Q7CiAgICAgQ29udGV4dFN0YXRlJiBjdXJyZW50U3RhdGUoKTsKIAorICAgIFdFQkNP
UkVfRVhQT1JUIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxv
YXRTaXplJiwgY29uc3QgRmxvYXRTaXplJiBzY2FsZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNw
YWNlJiA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBzdGQ6Om9wdGlvbmFsPFJlbmRl
cmluZ01vZGU+ID0gc3RkOjpudWxsb3B0KSBjb25zdCBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9S
VCBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYs
IGNvbnN0IEZsb2F0U2l6ZSYgc2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgPSBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdNb2Rl
PiA9IHN0ZDo6bnVsbG9wdCkgY29uc3QgZmluYWw7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQ
dHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNp
emUmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmID0gRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKCksIHN0ZDo6b3B0aW9uYWw8UmVuZGVyaW5nTW9kZT4gPSBzdGQ6Om51bGxvcHQpIGNv
bnN0IGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRl
Q29tcGF0aWJsZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IERlc3RpbmF0aW9u
Q29sb3JTcGFjZSYgPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgc3RkOjpvcHRpb25h
bDxSZW5kZXJpbmdNb2RlPiA9IHN0ZDo6bnVsbG9wdCkgY29uc3QgZmluYWw7CisKIHByaXZhdGU6
CiAgICAgYm9vbCBoYXNQbGF0Zm9ybUNvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxz
ZTsgfQogICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KiBwbGF0Zm9ybUNvbnRleHQoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVjb3JkZXJJbXBsLmNwcAppbmRleCAzZWNiYzdiYTMzMzVmYzdiYmFiZjkwZTE0N2RjM2Jh
OTM0ZjY0ODY1Li4yMGNiZTAwMjVlZGI2MGIwOGRiYjgyZWMzNGU3Y2RmNGNkOGMzZmEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZWNvcmRlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5jcHAKQEAgLTQzMSw2
ICs0MzEsMTEgQEAgYm9vbCBSZWNvcmRlckltcGw6OnJlY29yZFJlc291cmNlVXNlKEZvbnQmIGZv
bnQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gUmVjb3JkZXJJ
bXBsOjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2Rl
KSBjb25zdAoreworICAgIHJldHVybiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUsIHJlbmRlcmlu
Z01vZGUsIFNob3VsZFVzZURpc3BsYXlMaXN0OjpZZXMsIFJlbmRlcmluZ1B1cnBvc2U6OlVuc3Bl
Y2lmaWVkLCAxLCBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworfQorCiAvLyBGSVhN
RTogc2hhcmUgd2l0aCBTaGFkb3dEYXRhCiBzdGF0aWMgaW5saW5lIGZsb2F0IHNoYWRvd1BhaW50
aW5nRXh0ZW50KGZsb2F0IGJsdXJSYWRpdXMpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlY29yZGVySW1wbC5oCmluZGV4IDkyNmMzM2IzMTExMjI1NWVjMzJjMjI0NmUzMjkxOWUx
OGVjZjU0MDMuLmE5NjFmNmZmNzI2Y2Y2NjY5NjExMjg4MTFhM2Q3OWJlYzhiZGU1N2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlY29yZGVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5oCkBAIC0xMjcsNiArMTI3
LDkgQEAgcHJpdmF0ZToKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+IGNy
ZWF0ZU5lc3RlZENvbnRleHQoY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RNKSBmaW5hbDsKIAorICAgIHVzaW5nIFJlY29yZGVyOjpj
cmVhdGVJbWFnZUJ1ZmZlcjsKKyAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVm
ZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIFJlbmRl
cmluZ01vZGUpIGNvbnN0IGZpbmFsOworCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgY2xhc3Mu
Li4gQXJncz4KICAgICB2b2lkIGFwcGVuZChBcmdzJiYuLi4gYXJncykKICAgICB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZXBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKaW5kZXggYjE4OGNlYWI0MjY5NmZmZTIw
MTIwOWE5MDBhYjcwMDk5NTBiODVlNS4uYmFlZDE0Y2UwYWQ3YzljMDRjOTViMGU3MTUwNTJhNjUw
ZTA3OWE5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcApAQCAt
MTU0LDcgKzE1NCw3IEBAIHN0ZDo6cGFpcjxzdGQ6Om9wdGlvbmFsPFN0b3BSZXBsYXlSZWFzb24+
LCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpCiAgICAgICAgIGlmIChtX21h
c2tJbWFnZUJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246Oklu
dmFsaWRJdGVtT3JFeHRlbnQsIHN0ZDo6bnVsbG9wdCB9OwogICAgICAgICBhdXRvJiBjbGlwSXRl
bSA9IGl0ZW0uZ2V0PEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPigpOwotICAgICAgICBtX21h
c2tJbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNsaXBJ
dGVtLmRlc3RpbmF0aW9uKCkuc2l6ZSgpLCBjbGlwSXRlbS5jb2xvclNwYWNlKCksIG1fY29udGV4
dCk7CisgICAgICAgIG1fbWFza0ltYWdlQnVmZmVyID0gbV9jb250ZXh0LmNyZWF0ZUNvbXBhdGli
bGVJbWFnZUJ1ZmZlcihjbGlwSXRlbS5kZXN0aW5hdGlvbigpLnNpemUoKSwgY2xpcEl0ZW0uY29s
b3JTcGFjZSgpKTsKICAgICAgICAgaWYgKCFtX21hc2tJbWFnZUJ1ZmZlcikKICAgICAgICAgICAg
IHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok91dE9mTWVtb3J5LCBzdGQ6Om51bGxvcHQgfTsK
ICAgICAgICAgcmV0dXJuIHsgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQppbmRleCBkNzllODVhYTJiYzk3NTg3MmFmZmIx
ZDcwNzE5NGRkZWRiZDM5MDlhLi43NDE5MTVjMGMwM2Q0MWIzM2I1NzM5Yzk2NDRjMzc3MjY1ZWUx
Y2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCkBAIC03MzQsNyAr
NzM0LDcgQEAgYm9vbCBUaGVtZU1hYzo6ZHJhd0NlbGxPckZvY3VzUmluZ1dpdGhWaWV3SW50b0Nv
bnRleHQoTlNDZWxsICpjZWxsLCBHcmFwaGljc0NvbnQKIAogICAgIGlmICh1c2VJbWFnZUJ1ZmZl
cikgewogICAgICAgICBOU1JlY3QgaW1hZ2VCdWZmZXJEcmF3UmVjdCA9IE5TUmVjdChGbG9hdFJl
Y3QoYnV0dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRoLCBidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lk
dGgsIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSkpOwotICAgICAgICBhdXRvIGltYWdlQnVm
ZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIocmVjdC5zaXplKCkgKyAy
ICogRmxvYXRTaXplKGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVXaWR0aCwgYnV0dG9uRm9jdXNSZWN0
T3V0bGluZVdpZHRoKSwgZGV2aWNlU2NhbGVGYWN0b3IsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQigpLCBjb250ZXh0KTsKKyAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IGNvbnRleHQuY3Jl
YXRlSW1hZ2VCdWZmZXIocmVjdC5zaXplKCkgKyAyICogRmxvYXRTaXplKGJ1dHRvbkZvY3VzUmVj
dE91dGxpbmVXaWR0aCwgYnV0dG9uRm9jdXNSZWN0T3V0bGluZVdpZHRoKSwgeyBkZXZpY2VTY2Fs
ZUZhY3RvciwgZGV2aWNlU2NhbGVGYWN0b3IgfSk7CiAgICAgICAgIGlmICghaW1hZ2VCdWZmZXIp
CiAgICAgICAgICAgICByZXR1cm4gbmVlZHNSZXBhaW50OwogICAgICAgICB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAppbmRleCA1Mjhm
MDIyMDRhNjE4NmY5ODUxYTMyNGM1MGU5YjYxY2IyNTIwMzc0Li4xOWJiMGM0MmZiYzVmYzIxMzU3
NjA3ODIyNjU3ZmJiNjJhZjg3MjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKQEAgLTg5NCw3ICs4OTQsNyBAQCB2b2lkIFJlbmRl
ckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBjbwogICAgICAgICBtYXNrUmVjdC5pbnRlcnNlY3Qoc25hcFJlY3RUb0Rldmlj
ZVBpeGVscyhwYWludEluZm8ucmVjdCwgZGV2aWNlU2NhbGVGYWN0b3IpKTsKIAogICAgICAgICAv
LyBOb3cgY3JlYXRlIHRoZSBtYXNrLgotICAgICAgICBtYXNrSW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihtYXNrUmVjdC5zaXplKCksIERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQigpLCBjb250ZXh0KTsKKyAgICAgICAgbWFza0ltYWdlID0gY29udGV4dC5jcmVh
dGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIobWFza1JlY3Quc2l6ZSgpKTsKICAgICAgICAgaWYgKCFt
YXNrSW1hZ2UpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHBhaW50TWFza0ZvclRleHRG
aWxsQm94KG1hc2tJbWFnZS5nZXQoKSwgbWFza1JlY3QsIGJveCwgc2Nyb2xsZWRQYWludFJlY3Qp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggNzdhOGEyNzgx
MjkyNWE1YTQ2NzJjNjVkZjk4Y2Y3YWRiMjk2ZmRlNy4uOTczYWRjNTg2MmQzZjE0MzIwMmNiYWZl
MWM3YWI2NmM1MDNjYTUxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
Y3BwCkBAIC0zMjQ3LDcgKzMyNDcsNyBAQCBHcmFwaGljc0NvbnRleHQqIFJlbmRlckxheWVyOjpz
ZXR1cEZpbHRlcnMoR3JhcGhpY3NDb250ZXh0JiBkZXN0aW5hdGlvbkNvbnRleHQsCiAKICAgICBh
dXRvIHJvb3RSZWxhdGl2ZUJvdW5kcyA9IGNhbGN1bGF0ZUxheWVyQm91bmRzKHBhaW50aW5nSW5m
by5yb290TGF5ZXIsIG9mZnNldEZyb21Sb290LCB7IH0pOwogCi0gICAgR3JhcGhpY3NDb250ZXh0
KiBmaWx0ZXJDb250ZXh0ID0gcGFpbnRpbmdGaWx0ZXJzLT5iZWdpbkZpbHRlckVmZmVjdChyZW5k
ZXJlcigpLCBlbmNsb3NpbmdJbnRSZWN0KHJvb3RSZWxhdGl2ZUJvdW5kcyksIGVuY2xvc2luZ0lu
dFJlY3QocGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0KSwgZW5jbG9zaW5nSW50UmVjdChmaWx0
ZXJSZXBhaW50UmVjdCkpOworICAgIEdyYXBoaWNzQ29udGV4dCogZmlsdGVyQ29udGV4dCA9IHBh
aW50aW5nRmlsdGVycy0+YmVnaW5GaWx0ZXJFZmZlY3QocmVuZGVyZXIoKSwgZGVzdGluYXRpb25D
b250ZXh0LCBlbmNsb3NpbmdJbnRSZWN0KHJvb3RSZWxhdGl2ZUJvdW5kcyksIGVuY2xvc2luZ0lu
dFJlY3QocGFpbnRpbmdJbmZvLnBhaW50RGlydHlSZWN0KSwgZW5jbG9zaW5nSW50UmVjdChmaWx0
ZXJSZXBhaW50UmVjdCkpOwogICAgIGlmICghZmlsdGVyQ29udGV4dCkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFj
a2luZy5jcHAKaW5kZXggNGVmY2ZhYjU1NTdiNTUzM2JlZTk1Yzk0MjgyNjEyYTE3NWY2NTMzOC4u
ZDJmZjJlOTFhYjEwOWEwMWE5N2Q3Zjc4MmYzY2I2YTM3YmEwMjY0ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKQEAgLTMzMTIsNyArMzMx
Miw3IEBAIHN0YXRpYyBSZWZQdHI8UGF0dGVybj4gcGF0dGVybkZvckRlc2NyaXB0aW9uKFBhdHRl
cm5EZXNjcmlwdGlvbiBkZXNjcmlwdGlvbiwgRmxvCiB7CiAgICAgY29uc3QgRmxvYXRTaXplIHRp
bGVTaXplIHsgMzIsIDE4IH07CiAKLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIodGlsZVNpemUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQigpLCBkZXN0Q29udGV4dCk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IGRlc3RDb250ZXh0
LmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcih0aWxlU2l6ZSk7CiAgICAgaWYgKCFpbWFnZUJ1
ZmZlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyRmlsdGVycy5jcHAKaW5kZXggNmRlNGZmMDE3YjkyNTdhOWI2YjEw
NzM2ZjFjNGUxODkxYThlNzVhMC4uNWJhOTRjZmQ1ZGJiMWU0NGI1ZmJkM2M1YmMxMWFkMTlhZWFm
OGY1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyRmls
dGVycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVy
cy5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEyIEFkb2JlIFN5
c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChD
KSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMy0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMTI5LDE5ICsxMjksMTYgQEAgR3JhcGhpY3NDb250ZXh0KiBS
ZW5kZXJMYXllckZpbHRlcnM6OmlucHV0Q29udGV4dCgpCiAgICAgcmV0dXJuIG1fc291cmNlSW1h
Z2UgPyAmbV9zb3VyY2VJbWFnZS0+Y29udGV4dCgpIDogbnVsbHB0cjsKIH0KIAotdm9pZCBSZW5k
ZXJMYXllckZpbHRlcnM6OmFsbG9jYXRlQmFja2luZ1N0b3JlSWZOZWVkZWQoKQordm9pZCBSZW5k
ZXJMYXllckZpbHRlcnM6OmFsbG9jYXRlQmFja2luZ1N0b3JlSWZOZWVkZWQoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0KQogewogICAgIGF1dG8mIGZpbHRlciA9ICptX2ZpbHRlcjsKICAgICBhdXRv
IGxvZ2ljYWxTaXplID0gZmlsdGVyLnNjYWxlZEJ5RmlsdGVyU2NhbGUobV9maWx0ZXJSZWdpb24u
c2l6ZSgpKTsKIAotICAgIGlmICghbV9zb3VyY2VJbWFnZSB8fCBtX3NvdXJjZUltYWdlLT5sb2dp
Y2FsU2l6ZSgpICE9IGxvZ2ljYWxTaXplKSB7Ci0gICAgICAgIG1fc291cmNlSW1hZ2UgPSBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlKGxvZ2ljYWxTaXplLCBmaWx0ZXIucmVuZGVyaW5nTW9kZSgpLCBTaG91
bGRVc2VEaXNwbGF5TGlzdDo6Tm8sIFJlbmRlcmluZ1B1cnBvc2U6OkRPTSwgMSwgRGVzdGluYXRp
b25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCwgbV9sYXllci5yZW5kZXJl
cigpLmhvc3RXaW5kb3coKSk7Ci0gICAgICAgIGlmIChhdXRvIGNvbnRleHQgPSBpbnB1dENvbnRl
eHQoKSkKLSAgICAgICAgICAgIGNvbnRleHQtPnNjYWxlKGZpbHRlci5maWx0ZXJTY2FsZSgpKTsK
LSAgICB9CisgICAgaWYgKCFtX3NvdXJjZUltYWdlIHx8IG1fc291cmNlSW1hZ2UtPmxvZ2ljYWxT
aXplKCkgIT0gbG9naWNhbFNpemUpCisgICAgICAgIG1fc291cmNlSW1hZ2UgPSBjb250ZXh0LmNy
ZWF0ZUltYWdlQnVmZmVyKG1fZmlsdGVyUmVnaW9uLnNpemUoKSwgZmlsdGVyLmZpbHRlclNjYWxl
KCksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBmaWx0ZXIucmVuZGVyaW5nTW9kZSgp
KTsKIH0KIAotR3JhcGhpY3NDb250ZXh0KiBSZW5kZXJMYXllckZpbHRlcnM6OmJlZ2luRmlsdGVy
RWZmZWN0KFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBMYXlvdXRSZWN0JiBmaWx0ZXJC
b3hSZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBkaXJ0eVJlY3QsIGNvbnN0IExheW91dFJlY3QmIGxh
eWVyUmVwYWludFJlY3QpCitHcmFwaGljc0NvbnRleHQqIFJlbmRlckxheWVyRmlsdGVyczo6YmVn
aW5GaWx0ZXJFZmZlY3QoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgZmlsdGVyQm94UmVjdCwgY29uc3QgTGF5b3V0UmVj
dCYgZGlydHlSZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBsYXllclJlcGFpbnRSZWN0KQogewogICAg
IGlmICghbV9maWx0ZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTkzLDcgKzE5MCw3
IEBAIEdyYXBoaWNzQ29udGV4dCogUmVuZGVyTGF5ZXJGaWx0ZXJzOjpiZWdpbkZpbHRlckVmZmVj
dChSZW5kZXJFbGVtZW50JiByZW5kZXJlciwKICAgICByZXNldERpcnR5U291cmNlUmVjdCgpOwog
CiAgICAgZmlsdGVyLnNldEZpbHRlclJlZ2lvbihtX2ZpbHRlclJlZ2lvbik7Ci0gICAgYWxsb2Nh
dGVCYWNraW5nU3RvcmVJZk5lZWRlZCgpOworICAgIGFsbG9jYXRlQmFja2luZ1N0b3JlSWZOZWVk
ZWQoY29udGV4dCk7CiAKICAgICBhdXRvKiBzb3VyY2VHcmFwaGljc0NvbnRleHQgPSBpbnB1dENv
bnRleHQoKTsKICAgICBpZiAoIXNvdXJjZUdyYXBoaWNzQ29udGV4dCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuaAppbmRleCBiMGNiNzdjOGUxMDVjNGJl
MDdmNjZlNjkyNDcxNzNiYzhlNWUzYTllLi4wNTEzYzg4NWI0MGI3NWUwMTMyZjNlYWRmZWY2MGM3
ODY3ODliOWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJGaWx0ZXJzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyRmls
dGVycy5oCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMiBBZG9iZSBT
eXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAo
QykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTYzLDE0ICs2MywxNCBAQCBwdWJsaWM6CiAgICAgLy8gUGVy
IHJlbmRlcgogICAgIExheW91dFJlY3QgcmVwYWludFJlY3QoKSBjb25zdCB7IHJldHVybiBtX3Jl
cGFpbnRSZWN0OyB9CiAKLSAgICBHcmFwaGljc0NvbnRleHQqIGJlZ2luRmlsdGVyRWZmZWN0KFJl
bmRlckVsZW1lbnQmLCBjb25zdCBMYXlvdXRSZWN0JiBmaWx0ZXJCb3hSZWN0LCBjb25zdCBMYXlv
dXRSZWN0JiBkaXJ0eVJlY3QsIGNvbnN0IExheW91dFJlY3QmIGxheWVyUmVwYWludFJlY3QpOwor
ICAgIEdyYXBoaWNzQ29udGV4dCogYmVnaW5GaWx0ZXJFZmZlY3QoUmVuZGVyRWxlbWVudCYsIEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IExheW91dFJlY3QmIGZpbHRlckJveFJlY3QsIGNvbnN0IExh
eW91dFJlY3QmIGRpcnR5UmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgbGF5ZXJSZXBhaW50UmVjdCk7
CiAgICAgdm9pZCBhcHBseUZpbHRlckVmZmVjdChHcmFwaGljc0NvbnRleHQmIGRlc3RpbmF0aW9u
Q29udGV4dCk7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNv
dXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogICAgIHZvaWQgcmVzZXRE
aXJ0eVNvdXJjZVJlY3QoKSB7IG1fZGlydHlTb3VyY2VSZWN0ID0gTGF5b3V0UmVjdCgpOyB9CiAg
ICAgR3JhcGhpY3NDb250ZXh0KiBpbnB1dENvbnRleHQoKTsKLSAgICB2b2lkIGFsbG9jYXRlQmFj
a2luZ1N0b3JlSWZOZWVkZWQoKTsKKyAgICB2b2lkIGFsbG9jYXRlQmFja2luZ1N0b3JlSWZOZWVk
ZWQoR3JhcGhpY3NDb250ZXh0Jik7CiAKICAgICBSZW5kZXJMYXllciYgbV9sYXllcjsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ29jb2EubW0gYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDb2NvYS5tbQppbmRleCAxYTY2NzMy
MjcyMmFkMzhmYzE1MTRiYmIxMTllZGNlM2E4ZWY3M2YzLi5hYmQ0YzFkYjEzMTRkNDQyMWI3MzIy
YWE4NTc1MWFlYjJmNTkzYWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVDb2NvYS5tbQpAQCAtMTU0LDcgKzE1NCw3IEBAIGJvb2wgUmVuZGVyVGhlbWVDb2NvYTo6
cGFpbnRBcHBsZVBheUJ1dHRvbihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBQ
CiB7CiAgICAgYXV0byYgZGVzdGluYXRpb25Db250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKTsK
IAotICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1
ZmZlcihwYWludFJlY3Quc2l6ZSgpLCBkZXN0aW5hdGlvbkNvbnRleHQpOworICAgIGF1dG8gaW1h
Z2VCdWZmZXIgPSBkZXN0aW5hdGlvbkNvbnRleHQuY3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVy
KHBhaW50UmVjdC5zaXplKCkpOwogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCmlu
ZGV4IDZjOTRlOTJlMGZmZjg0MDEzZjFhNmVjNjgyOWM3ZTkwMGEyMDA3OGYuLmU0N2E2NmQwZjMw
ZjJhYTQ3YzA0NDhiMWQxZGQ0YTQxNmJmYzY2MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWVNYWMubW0KQEAgLTk5Niw3ICs5OTYsNyBAQCB2b2lkIFJlbmRlclRoZW1l
TWFjOjpwYWludExpc3RCdXR0b25Gb3JJbnB1dChjb25zdCBSZW5kZXJPYmplY3QmIG8sIEdyYXBo
aWNzQ29udAogCiAgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSBvLmRvY3VtZW50KCkuZGV2
aWNlU2NhbGVGYWN0b3IoKTsKIAotICAgIGF1dG8gY29tYm9Cb3hJbWFnZUJ1ZmZlciA9IEltYWdl
QnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbWJvQm94U2l6ZSwgZGV2aWNlU2NhbGVG
YWN0b3IsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBjb250ZXh0KTsKKyAgICBhdXRv
IGNvbWJvQm94SW1hZ2VCdWZmZXIgPSBjb250ZXh0LmNyZWF0ZUltYWdlQnVmZmVyKGNvbWJvQm94
U2l6ZSwgeyBkZXZpY2VTY2FsZUZhY3RvciwgZGV2aWNlU2NhbGVGYWN0b3IgfSk7CiAgICAgaWYg
KCFjb21ib0JveEltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm47CiAKQEAgLTEwMjAsNyArMTAy
MCw3IEBAIHZvaWQgUmVuZGVyVGhlbWVNYWM6OnBhaW50TGlzdEJ1dHRvbkZvcklucHV0KGNvbnN0
IFJlbmRlck9iamVjdCYgbywgR3JhcGhpY3NDb250CiAgICAgICAgIChfX2JyaWRnZSBOU1N0cmlu
ZyAqKWtDVUlVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uS2V5IDogKF9fYnJpZGdlIE5TU3Ry
aW5nICopa0NVSVVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25MZWZ0VG9SaWdodCwKICAgICB9
XTsKIAotICAgIGF1dG8gY29tYm9Cb3hCdXR0b25JbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpj
cmVhdGVDb21wYXRpYmxlQnVmZmVyKGRlc2lyZWRDb21ib0JveEJ1dHRvblNpemUsIGRldmljZVNj
YWxlRmFjdG9yLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgY29udGV4dCk7CisgICAg
YXV0byBjb21ib0JveEJ1dHRvbkltYWdlQnVmZmVyID0gY29udGV4dC5jcmVhdGVJbWFnZUJ1ZmZl
cihkZXNpcmVkQ29tYm9Cb3hCdXR0b25TaXplLCB7IGRldmljZVNjYWxlRmFjdG9yLCBkZXZpY2VT
Y2FsZUZhY3RvciB9KTsKICAgICBpZiAoIWNvbWJvQm94QnV0dG9uSW1hZ2VCdWZmZXIpCiAgICAg
ICAgIHJldHVybjsKIApAQCAtMTM3OSw3ICsxMzc5LDcgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6
cGFpbnRQcm9ncmVzc0Jhcihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlck9iamVjdCwgY29uc3Qg
UGEKICAgICBjb25zdCBhdXRvJiByZW5kZXJQcm9ncmVzcyA9IGRvd25jYXN0PFJlbmRlclByb2dy
ZXNzPihyZW5kZXJPYmplY3QpOwogICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gcmVuZGVy
T2JqZWN0LmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKTsKICAgICBib29sIGlzSW5kZXRl
cm1pbmF0ZSA9IHJlbmRlclByb2dyZXNzLnBvc2l0aW9uKCkgPCAwOwotICAgIGF1dG8gaW1hZ2VC
dWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihpbmZsYXRlZFJlY3Qu
c2l6ZSgpLCBkZXZpY2VTY2FsZUZhY3RvciwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCks
IHBhaW50SW5mby5jb250ZXh0KCkpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBwYWludEluZm8u
Y29udGV4dCgpLmNyZWF0ZUltYWdlQnVmZmVyKGluZmxhdGVkUmVjdC5zaXplKCksIHsgZGV2aWNl
U2NhbGVGYWN0b3IsIGRldmljZVNjYWxlRmFjdG9yIH0pOwogICAgIGlmICghaW1hZ2VCdWZmZXIp
CiAgICAgICAgIHJldHVybiB0cnVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAKaW5kZXggZGEwZDU2Y2Qy
NzA5MDQ2NDc4ZDAyMjRlODIzMDQyMGEzMTI2YWRhMC4uODdhMWFlNTkxYTU3MDJkNzkyN2NiOGM2
OGU1OTVmNGNiMGYwY2I2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcApAQCAtMyw2ICszLDcgQEAKICAq
IENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBSb2IgQnVpcyA8YnVp
c0BrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAy
MDA5LTIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgRGly
ayBTY2h1bHplIDxrcml0QHdlYmtpdC5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0xNTIsOSAr
MTUzLDE2IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjphcHBseUNsaXBwaW5nVG9D
b250ZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwKICAgICAgICAgcmV0dXJuIHRydWU7CiAK
ICAgICBBZmZpbmVUcmFuc2Zvcm0gYWJzb2x1dGVUcmFuc2Zvcm0gPSBTVkdSZW5kZXJpbmdDb250
ZXh0OjpjYWxjdWxhdGVUcmFuc2Zvcm1hdGlvblRvT3V0ZXJtb3N0Q29vcmRpbmF0ZVN5c3RlbShy
ZW5kZXJlcik7CisKKyAgICAvLyBJZ25vcmUgMkQgcm90YXRpb24sIGFzIGl0IGRvZXNuJ3QgYWZm
ZWN0IHRoZSBzaXplIG9mIHRoZSBtYXNrLgorICAgIEZsb2F0U2l6ZSBzY2FsZShhYnNvbHV0ZVRy
YW5zZm9ybS54U2NhbGUoKSwgYWJzb2x1dGVUcmFuc2Zvcm0ueVNjYWxlKCkpOworCisgICAgLy8g
RGV0ZXJtaW5lIHNjYWxlIGZhY3RvciBmb3IgdGhlIGNsaXBwZXIuIFRoZSBzaXplIG9mIGludGVy
bWVkaWF0ZSBJbWFnZUJ1ZmZlcnMgc2hvdWxkbid0IGJlIGJpZ2dlciB0aGFuIGtNYXhGaWx0ZXJT
aXplLgorICAgIEltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhvYmplY3RCb3VuZGluZ0Jv
eC5zaXplKCksIHNjYWxlKTsKKwogICAgIGlmICghY2xpcHBlckRhdGEuaXNWYWxpZEZvckdlb21l
dHJ5KG9iamVjdEJvdW5kaW5nQm94LCBjbGlwcGVkQ29udGVudEJvdW5kcywgYWJzb2x1dGVUcmFu
c2Zvcm0pKSB7CiAgICAgICAgIC8vIEZJWE1FICgxNDk0NjkpOiBUaGlzIGltYWdlIGJ1ZmZlciBz
aG91bGQgbm90IGJlIHVuY29uZGl0aW9uYWxseSB1bmFjY2VsZXJhdGVkLiBNYWtpbmcgaXQgbWF0
Y2ggdGhlIGNvbnRleHQgYnJlYWtzIG5lc3RlZCBjbGlwcGluZywgdGhvdWdoLgotICAgICAgICBh
dXRvIG1hc2tJbWFnZSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNs
aXBwZWRDb250ZW50Qm91bmRzLCBhYnNvbHV0ZVRyYW5zZm9ybSwgRGVzdGluYXRpb25Db2xvclNw
YWNlOjpTUkdCKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIGhvc3RXaW5kb3coKSk7
CisgICAgICAgIGF1dG8gbWFza0ltYWdlID0gY29udGV4dC5jcmVhdGVJbWFnZUJ1ZmZlcihjbGlw
cGVkQ29udGVudEJvdW5kcywgc2NhbGUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBS
ZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkKTsKICAgICAgICAgaWYgKCFtYXNrSW1hZ2UpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTE4NSw3ICsxOTMsNyBAQCBib29sIFJlbmRl
clNWR1Jlc291cmNlQ2xpcHBlcjo6YXBwbHlDbGlwcGluZ1RvQ29udGV4dChHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsCiAgICAgaWYgKCFjbGlwcGVyRGF0YS5pbWFnZUJ1ZmZlcikKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZm
ZXIoY29udGV4dCwgYWJzb2x1dGVUcmFuc2Zvcm0sIGNsaXBwZWRDb250ZW50Qm91bmRzLCBjbGlw
cGVyRGF0YS5pbWFnZUJ1ZmZlciwgdHJ1ZSk7CisgICAgU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2xp
cFRvSW1hZ2VCdWZmZXIoY29udGV4dCwgY2xpcHBlZENvbnRlbnRCb3VuZHMsIHNjYWxlLCBjbGlw
cGVyRGF0YS5pbWFnZUJ1ZmZlciwgdHJ1ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZp
bHRlci5jcHAKaW5kZXggNzg2NWE1ODVhNDdlZmQ4MjQ2MTc1MWY5ZmZhOWExZDFiMWIyNzE0OS4u
Yjk2MzYyYzk3YTNiNDAzZDVlNDA0YjJjY2YzODcwNGQ5YTk2MjQ4NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5j
cHAKQEAgLTQsNiArNCw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDUgRXJpYyBTZWlkZWwgPGVy
aWNAd2Via2l0Lm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwOSBEaXJrIFNjaHVsemUgPGtyaXRA
d2Via2l0Lm9yZz4KICAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQg
MjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMS0yMDIyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMTQ2
LDIzICsxNDcsMjEgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6YXBwbHlSZXNvdXJj
ZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgUmVuZGUKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KIAotICAgIC8vIENoYW5nZSB0aGUgY29vcmRpbmF0ZSB0cmFuc2Zvcm1hdGlv
biBhcHBsaWVkIHRvIHRoZSBmaWx0ZXJlZCBlbGVtZW50IHRvIHJlZmxlY3QgdGhlIHJlc29sdXRp
b24gb2YgdGhlIGZpbHRlci4KLSAgICBhdXRvIGVmZmVjdGl2ZVRyYW5zZm9ybSA9IEFmZmluZVRy
YW5zZm9ybShmaWx0ZXJTY2FsZS53aWR0aCgpLCAwLCAwLCBmaWx0ZXJTY2FsZS5oZWlnaHQoKSwg
MCwgMCk7Ci0KICNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfTElORUFSX1NSR0Ip
CiAgICAgYXV0byBjb2xvclNwYWNlID0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdC
KCk7CiAjZWxzZQogICAgIGF1dG8gY29sb3JTcGFjZSA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQigpOwogI2VuZGlmCi0gICAgYXV0byBzb3VyY2VHcmFwaGljID0gU1ZHUmVuZGVyaW5nQ29u
dGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoZmlsdGVyRGF0YS0+ZHJhd2luZ1JlZ2lvbiwgZWZmZWN0
aXZlVHJhbnNmb3JtLCBjb2xvclNwYWNlLCBmaWx0ZXJEYXRhLT5maWx0ZXItPnJlbmRlcmluZ01v
ZGUoKSwgcmVuZGVyZXIuaG9zdFdpbmRvdygpKTsKKworICAgIGF1dG8gc291cmNlR3JhcGhpYyA9
IGNvbnRleHQtPmNyZWF0ZUltYWdlQnVmZmVyKGZpbHRlckRhdGEtPmRyYXdpbmdSZWdpb24sIGZp
bHRlclNjYWxlLCBjb2xvclNwYWNlLCBmaWx0ZXJEYXRhLT5maWx0ZXItPnJlbmRlcmluZ01vZGUo
KSk7CiAgICAgaWYgKCFzb3VyY2VHcmFwaGljKSB7CiAgICAgICAgIEFTU0VSVChtX3JlbmRlcmVy
RmlsdGVyRGF0YU1hcC5jb250YWlucygmcmVuZGVyZXIpKTsKICAgICAgICAgZmlsdGVyRGF0YS0+
c2F2ZWRDb250ZXh0ID0gY29udGV4dDsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAg
ICAKKwogICAgIGF1dG8mIHNvdXJjZUdyYXBoaWNDb250ZXh0ID0gc291cmNlR3JhcGhpYy0+Y29u
dGV4dCgpOwotICAKKwogICAgIGZpbHRlckRhdGEtPnNvdXJjZUdyYXBoaWNCdWZmZXIgPSBXVEZN
b3ZlKHNvdXJjZUdyYXBoaWMpOwogICAgIGZpbHRlckRhdGEtPnNhdmVkQ29udGV4dCA9IGNvbnRl
eHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VHcmFkaWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlR3JhZGllbnQuY3BwCmluZGV4IDQ0NzVhNjlmOGYyYzk2NmY2M2MzMTgzZjMy
ZWYxNTQ4NWE4NGFjMmIuLjRhZTdjY2UzM2E3NzUzMmE0N2JlMGJmMzA0YTgyNGMxMjIzMjcyMjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VHcmFkaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZUdyYWRpZW50LmNwcApAQCAtMyw2ICszLDcgQEAKICAqIENvcHlyaWdodCAoQykg
MjAwOCBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA4
IERpcmsgU2NodWx6ZSA8a3JpdEB3ZWJraXQub3JnPgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJj
aCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwpAQCAtNjAsNyArNjEsMTMgQEAgc3RhdGljIGlubGluZSBib29sIGNyZWF0ZU1hc2tB
bmRTd2FwQ29udGV4dEZvclRleHRHcmFkaWVudChHcmFwaGljc0NvbnRleHQqJiBjb24KICAgICBB
ZmZpbmVUcmFuc2Zvcm0gYWJzb2x1dGVUcmFuc2Zvcm0gPSBTVkdSZW5kZXJpbmdDb250ZXh0Ojpj
YWxjdWxhdGVUcmFuc2Zvcm1hdGlvblRvT3V0ZXJtb3N0Q29vcmRpbmF0ZVN5c3RlbSgqdGV4dFJv
b3RCbG9jayk7CiAgICAgRmxvYXRSZWN0IHJlcGFpbnRSZWN0ID0gdGV4dFJvb3RCbG9jay0+cmVw
YWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKTsKIAotICAgIGF1dG8gbWFza0ltYWdlID0gU1ZH
UmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIocmVwYWludFJlY3QsIGFic29sdXRl
VHJhbnNmb3JtLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgY29udGV4dC0+cmVuZGVy
aW5nTW9kZSgpLCByZW5kZXJlci5ob3N0V2luZG93KCkpOworICAgIC8vIElnbm9yZSAyRCByb3Rh
dGlvbiwgYXMgaXQgZG9lc24ndCBhZmZlY3QgdGhlIHNpemUgb2YgdGhlIG1hc2suCisgICAgRmxv
YXRTaXplIHNjYWxlKGFic29sdXRlVHJhbnNmb3JtLnhTY2FsZSgpLCBhYnNvbHV0ZVRyYW5zZm9y
bS55U2NhbGUoKSk7CisKKyAgICAvLyBEZXRlcm1pbmUgc2NhbGUgZmFjdG9yIGZvciB0aGUgY2xp
cHBlci4gVGhlIHNpemUgb2YgaW50ZXJtZWRpYXRlIEltYWdlQnVmZmVycyBzaG91bGRuJ3QgYmUg
YmlnZ2VyIHRoYW4ga01heEZpbHRlclNpemUuCisgICAgSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0Ns
YW1waW5nKHJlcGFpbnRSZWN0LnNpemUoKSwgc2NhbGUpOworCisgICAgYXV0byBtYXNrSW1hZ2Ug
PSBjb250ZXh0LT5jcmVhdGVJbWFnZUJ1ZmZlcihyZXBhaW50UmVjdCwgc2NhbGUpOwogICAgIGlm
ICghbWFza0ltYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTgwLDggKzg3LDE0IEBA
IHN0YXRpYyBpbmxpbmUgQWZmaW5lVHJhbnNmb3JtIGNsaXBUb1RleHRNYXNrKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgUmVmUHRyPEltCiAgICAgQWZmaW5lVHJhbnNmb3JtIGFic29sdXRlVHJh
bnNmb3JtID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2FsY3VsYXRlVHJhbnNmb3JtYXRpb25Ub091
dGVybW9zdENvb3JkaW5hdGVTeXN0ZW0oKnRleHRSb290QmxvY2spOwogCiAgICAgdGFyZ2V0UmVj
dCA9IHRleHRSb290QmxvY2stPnJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCk7CisgICAg
CisgICAgLy8gSWdub3JlIDJEIHJvdGF0aW9uLCBhcyBpdCBkb2Vzbid0IGFmZmVjdCB0aGUgc2l6
ZSBvZiB0aGUgbWFzay4KKyAgICBGbG9hdFNpemUgc2NhbGUoYWJzb2x1dGVUcmFuc2Zvcm0ueFNj
YWxlKCksIGFic29sdXRlVHJhbnNmb3JtLnlTY2FsZSgpKTsKKworICAgIC8vIERldGVybWluZSBz
Y2FsZSBmYWN0b3IgZm9yIHRoZSBjbGlwcGVyLiBUaGUgc2l6ZSBvZiBpbnRlcm1lZGlhdGUgSW1h
Z2VCdWZmZXJzIHNob3VsZG4ndCBiZSBiaWdnZXIgdGhhbiBrTWF4RmlsdGVyU2l6ZS4KKyAgICBJ
bWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcodGFyZ2V0UmVjdC5zaXplKCksIHNjYWxlKTsK
IAotICAgIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKGNvbnRleHQsIGFi
c29sdXRlVHJhbnNmb3JtLCB0YXJnZXRSZWN0LCBpbWFnZUJ1ZmZlciwgZmFsc2UpOworICAgIFNW
R1JlbmRlcmluZ0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKGNvbnRleHQsIHRhcmdldFJlY3Qs
IHNjYWxlLCBpbWFnZUJ1ZmZlciwgZmFsc2UpOwogCiAgICAgQWZmaW5lVHJhbnNmb3JtIG1hdHJp
eDsKICAgICBpZiAoYm91bmRpbmdCb3hNb2RlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwCmluZGV4IDc2NGY3
Yzg4OGYzMmJmMTk1OGFlYmUyYjdlNjFhNTE5OTljMjk4NTAuLjNkYjAxMzExZGY1YjVjOTQ3ZTA3
YjQ2YzU4YWVkYTc0NzJmMmYyNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwCkBAIC0xLDUgKzEsNiBAQAog
LyoKICAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAwOS0yMDEw
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtNjgsNiArNjksMTIg
QEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6YXBwbHlSZXNvdXJjZShSZW5kZXJFbGVt
ZW50JiByZW5kZXJlciwgY29uc3QgUmVuZGUKICAgICBBZmZpbmVUcmFuc2Zvcm0gYWJzb2x1dGVU
cmFuc2Zvcm0gPSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjYWxjdWxhdGVUcmFuc2Zvcm1hdGlvblRv
T3V0ZXJtb3N0Q29vcmRpbmF0ZVN5c3RlbShyZW5kZXJlcik7CiAgICAgRmxvYXRSZWN0IHJlcGFp
bnRSZWN0ID0gcmVuZGVyZXIucmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKTsKIAorICAg
IC8vIElnbm9yZSAyRCByb3RhdGlvbiwgYXMgaXQgZG9lc24ndCBhZmZlY3QgdGhlIHNpemUgb2Yg
dGhlIG1hc2suCisgICAgRmxvYXRTaXplIHNjYWxlKGFic29sdXRlVHJhbnNmb3JtLnhTY2FsZSgp
LCBhYnNvbHV0ZVRyYW5zZm9ybS55U2NhbGUoKSk7CisKKyAgICAvLyBEZXRlcm1pbmUgc2NhbGUg
ZmFjdG9yIGZvciB0aGUgbWFzay4gVGhlIHNpemUgb2YgaW50ZXJtZWRpYXRlIEltYWdlQnVmZmVy
cyBzaG91bGRuJ3QgYmUgYmlnZ2VyIHRoYW4ga01heEZpbHRlclNpemUuCisgICAgSW1hZ2VCdWZm
ZXI6OnNpemVOZWVkc0NsYW1waW5nKHJlcGFpbnRSZWN0LnNpemUoKSwgc2NhbGUpOworCiAgICAg
aWYgKCFtYXNrZXJEYXRhLT5tYXNrSW1hZ2UgJiYgIXJlcGFpbnRSZWN0LmlzRW1wdHkoKSkgewog
ICAgICAgICBjb25zdCBTVkdSZW5kZXJTdHlsZSYgc3ZnU3R5bGUgPSBzdHlsZSgpLnN2Z1N0eWxl
KCk7CiAKQEAgLTgyLDkgKzg5LDggQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6YXBw
bHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgUmVuZGUKICAgICAgICAg
ICAgIGRyYXdDb2xvclNwYWNlID0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpMaW5lYXJTUkdCKCk7
CiAgICAgICAgIH0KICNlbmRpZgotCiAgICAgICAgIC8vIEZJWE1FICgxNDk0NzApOiBUaGlzIGlt
YWdlIGJ1ZmZlciBzaG91bGQgbm90IGJlIHVuY29uZGl0aW9uYWxseSB1bmFjY2VsZXJhdGVkLiBN
YWtpbmcgaXQgbWF0Y2ggdGhlIGNvbnRleHQgYnJlYWtzIGFscGhhIG1hc2tpbmcsIHRob3VnaC4K
LSAgICAgICAgbWFza2VyRGF0YS0+bWFza0ltYWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3Jl
YXRlSW1hZ2VCdWZmZXIocmVwYWludFJlY3QsIGFic29sdXRlVHJhbnNmb3JtLCBtYXNrQ29sb3JT
cGFjZSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgaG9zdFdpbmRvdygpKTsKKyAgICAg
ICAgbWFza2VyRGF0YS0+bWFza0ltYWdlID0gY29udGV4dC0+Y3JlYXRlSW1hZ2VCdWZmZXIocmVw
YWludFJlY3QsIHNjYWxlLCBtYXNrQ29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVy
YXRlZCk7CiAgICAgICAgIGlmICghbWFza2VyRGF0YS0+bWFza0ltYWdlKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCkBAIC05NSw3ICsxMDEsNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNl
TWFza2VyOjphcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBSZW5k
ZQogICAgIGlmICghbWFza2VyRGF0YS0+bWFza0ltYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBTVkdSZW5kZXJpbmdDb250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcigqY29udGV4dCwg
YWJzb2x1dGVUcmFuc2Zvcm0sIHJlcGFpbnRSZWN0LCBtYXNrZXJEYXRhLT5tYXNrSW1hZ2UsIG1p
c3NpbmdNYXNrZXJEYXRhKTsKKyAgICBTVkdSZW5kZXJpbmdDb250ZXh0OjpjbGlwVG9JbWFnZUJ1
ZmZlcigqY29udGV4dCwgcmVwYWludFJlY3QsIHNjYWxlLCBtYXNrZXJEYXRhLT5tYXNrSW1hZ2Us
IG1pc3NpbmdNYXNrZXJEYXRhKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4u
Y3BwCmluZGV4IGU4YjUxY2ZiOTM5NDkyNjM4MWVmM2IwNGEzZTE3YTVmZDE1YzA4NmIuLjgwMGI1
YjU1NTYzYTlkODc3NTg5NmY0NWVjMjdjYTI0OTZiY2EyZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAK
QEAgLTEsNiArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2IE5pa29sYXMgWmltbWVy
bWFubiA8emltbWVybWFubkBrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBN
b3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YwpAQCAtOTUsMTkgKzk2LDE2IEBAIFBhdHRlcm5EYXRhKiBSZW5kZXJTVkdSZXNvdXJjZVBhdHRl
cm46OmJ1aWxkUGF0dGVybihSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgT3B0CiAgICAgaWYgKCFi
dWlsZFRpbGVJbWFnZVRyYW5zZm9ybShyZW5kZXJlciwgbV9hdHRyaWJ1dGVzLCBwYXR0ZXJuRWxl
bWVudCgpLCB0aWxlQm91bmRhcmllcywgdGlsZUltYWdlVHJhbnNmb3JtKSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICBBZmZpbmVUcmFuc2Zvcm0gYWJzb2x1dGVUcmFuc2Zvcm1JZ25v
cmluZ1JvdGF0aW9uID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2FsY3VsYXRlVHJhbnNmb3JtYXRp
b25Ub091dGVybW9zdENvb3JkaW5hdGVTeXN0ZW0ocmVuZGVyZXIpOworICAgIGF1dG8gYWJzb2x1
dGVUcmFuc2Zvcm0gPSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjYWxjdWxhdGVUcmFuc2Zvcm1hdGlv
blRvT3V0ZXJtb3N0Q29vcmRpbmF0ZVN5c3RlbShyZW5kZXJlcik7CiAKICAgICAvLyBJZ25vcmUg
MkQgcm90YXRpb24sIGFzIGl0IGRvZXNuJ3QgYWZmZWN0IHRoZSBzaXplIG9mIHRoZSB0aWxlLgot
ICAgIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNsZWFyMkRSb3RhdGlvbihhYnNvbHV0ZVRyYW5zZm9y
bUlnbm9yaW5nUm90YXRpb24pOwotICAgIEZsb2F0UmVjdCBhYnNvbHV0ZVRpbGVCb3VuZGFyaWVz
ID0gYWJzb2x1dGVUcmFuc2Zvcm1JZ25vcmluZ1JvdGF0aW9uLm1hcFJlY3QodGlsZUJvdW5kYXJp
ZXMpOwotICAgIEZsb2F0UmVjdCBjbGFtcGVkQWJzb2x1dGVUaWxlQm91bmRhcmllczsKKyAgICBG
bG9hdFNpemUgdGlsZVNjYWxlKGFic29sdXRlVHJhbnNmb3JtLnhTY2FsZSgpLCBhYnNvbHV0ZVRy
YW5zZm9ybS55U2NhbGUoKSk7CiAKICAgICAvLyBTY2FsZSB0aGUgdGlsZSBzaXplIHRvIG1hdGNo
IHRoZSBzY2FsZSBsZXZlbCBvZiB0aGUgcGF0dGVyblRyYW5zZm9ybS4KLSAgICBhYnNvbHV0ZVRp
bGVCb3VuZGFyaWVzLnNjYWxlKHN0YXRpY19jYXN0PGZsb2F0PihtX2F0dHJpYnV0ZXMucGF0dGVy
blRyYW5zZm9ybSgpLnhTY2FsZSgpKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fYXR0
cmlidXRlcy5wYXR0ZXJuVHJhbnNmb3JtKCkueVNjYWxlKCkpKTsKKyAgICB0aWxlU2NhbGUuc2Nh
bGUoc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fYXR0cmlidXRlcy5wYXR0ZXJuVHJhbnNmb3JtKCkueFNj
YWxlKCkpLCBzdGF0aWNfY2FzdDxmbG9hdD4obV9hdHRyaWJ1dGVzLnBhdHRlcm5UcmFuc2Zvcm0o
KS55U2NhbGUoKSkpOwogCiAgICAgLy8gQnVpbGQgdGlsZSBpbWFnZS4KLSAgICBhdXRvIHRpbGVJ
bWFnZSA9IGNyZWF0ZVRpbGVJbWFnZShtX2F0dHJpYnV0ZXMsIHRpbGVCb3VuZGFyaWVzLCBhYnNv
bHV0ZVRpbGVCb3VuZGFyaWVzLCB0aWxlSW1hZ2VUcmFuc2Zvcm0sIGNsYW1wZWRBYnNvbHV0ZVRp
bGVCb3VuZGFyaWVzLCBjb250ZXh0LnJlbmRlcmluZ01vZGUoKSk7CisgICAgYXV0byB0aWxlSW1h
Z2UgPSBjcmVhdGVUaWxlSW1hZ2UoY29udGV4dCwgdGlsZUJvdW5kYXJpZXMuc2l6ZSgpLCB0aWxl
U2NhbGUsIHRpbGVJbWFnZVRyYW5zZm9ybSwgbV9hdHRyaWJ1dGVzKTsKICAgICBpZiAoIXRpbGVJ
bWFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTIzNCwyNSArMjMyLDMwIEBAIGJv
b2wgUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpidWlsZFRpbGVJbWFnZVRyYW5zZm9ybShSZW5k
ZXJFbGVtZW50JiByZW5kZXJlciwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUmVmUHRyPEltYWdl
QnVmZmVyPiBSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OmNyZWF0ZVRpbGVJbWFnZShjb25zdCBQ
YXR0ZXJuQXR0cmlidXRlcyYgYXR0cmlidXRlcywgY29uc3QgRmxvYXRSZWN0JiB0aWxlQm91bmRh
cmllcywgY29uc3QgRmxvYXRSZWN0JiBhYnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIHRpbGVJbWFnZVRyYW5zZm9ybSwgRmxvYXRSZWN0JiBjbGFtcGVkQWJzb2x1
dGVUaWxlQm91bmRhcmllcywgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlKSBjb25zdAorUmVm
UHRyPEltYWdlQnVmZmVyPiBSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OmNyZWF0ZVRpbGVJbWFn
ZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3Qg
RmxvYXRTaXplJiBzY2FsZSwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGNvbnN0
IFBhdHRlcm5BdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKSBjb25zdAogewotICAgIGNsYW1wZWRBYnNv
bHV0ZVRpbGVCb3VuZGFyaWVzID0gSW1hZ2VCdWZmZXI6OmNsYW1wZWRSZWN0KGFic29sdXRlVGls
ZUJvdW5kYXJpZXMpOwotICAgIGF1dG8gdGlsZUltYWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6
Y3JlYXRlSW1hZ2VCdWZmZXIoYWJzb2x1dGVUaWxlQm91bmRhcmllcywgY2xhbXBlZEFic29sdXRl
VGlsZUJvdW5kYXJpZXMsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCByZW5kZXJpbmdN
b2RlLCBob3N0V2luZG93KCkpOworICAgIC8vIFRoaXMgaXMgZXF1aXZhbGVudCB0byBtYWtpbmcg
Y3JlYXRlSW1hZ2VCdWZmZXIoKSB1c2Ugcm91bmRlZEludFNpemUoKS4KKyAgICBhdXRvIHJvdW5k
ZWRVbnNjYWxlZEltYWdlQnVmZmVyU2l6ZSA9IFtdKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29u
c3QgRmxvYXRTaXplJiBzY2FsZSkgLT4gRmxvYXRTaXplIHsKKyAgICAgICAgYXV0byBzY2FsZWRT
aXplID0gc2l6ZSAqIHNjYWxlOworICAgICAgICByZXR1cm4gc2l6ZSAtIChleHBhbmRlZEludFNp
emUoc2NhbGVkU2l6ZSkgLSByb3VuZGVkSW50U2l6ZShzY2FsZWRTaXplKSkgKiAoc2NhbGVkU2l6
ZSAtIGZsb29yZWRJbnRTaXplKHNjYWxlZFNpemUpKSAvIHNjYWxlOworICAgIH07CisKKyAgICBh
dXRvIHRpbGVTaXplID0gcm91bmRlZFVuc2NhbGVkSW1hZ2VCdWZmZXJTaXplKHNpemUsIHNjYWxl
KTsKKworICAgIC8vIEZJWE1FOiBVc2UgY3JlYXRlSW1hZ2VCdWZmZXIocmVjdCwgc2NhbGUpLCBk
ZWxldGUgdGhlIGFib3ZlIGNhbGN1bGF0aW9ucyBhbmQgZml4ICd0cmFuc2Zvcm0nCisgICAgYXV0
byB0aWxlSW1hZ2UgPSBjb250ZXh0LmNyZWF0ZUltYWdlQnVmZmVyKHRpbGVTaXplLCBzY2FsZSk7
CiAgICAgaWYgKCF0aWxlSW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgR3Jh
cGhpY3NDb250ZXh0JiB0aWxlSW1hZ2VDb250ZXh0ID0gdGlsZUltYWdlLT5jb250ZXh0KCk7CiAK
LSAgICAvLyBUaGUgaW1hZ2UgYnVmZmVyIHJlcHJlc2VudHMgdGhlIGZpbmFsIHJlbmRlcmVkIHNp
emUsIHNvIHRoZSBjb250ZW50IGhhcyB0byBiZSBzY2FsZWQgKHRvIGF2b2lkIHBpeGVsYXRpb24p
LgotICAgIHRpbGVJbWFnZUNvbnRleHQuc2NhbGUoY2xhbXBlZEFic29sdXRlVGlsZUJvdW5kYXJp
ZXMuc2l6ZSgpIC8gdGlsZUJvdW5kYXJpZXMuc2l6ZSgpKTsKLQogICAgIC8vIEFwcGx5IHRpbGUg
aW1hZ2UgdHJhbnNmb3JtYXRpb25zLgotICAgIGlmICghdGlsZUltYWdlVHJhbnNmb3JtLmlzSWRl
bnRpdHkoKSkKLSAgICAgICAgdGlsZUltYWdlQ29udGV4dC5jb25jYXRDVE0odGlsZUltYWdlVHJh
bnNmb3JtKTsKKyAgICBpZiAoIXRyYW5zZm9ybS5pc0lkZW50aXR5KCkpCisgICAgICAgIHRpbGVJ
bWFnZUNvbnRleHQuY29uY2F0Q1RNKHRyYW5zZm9ybSk7CiAKICAgICBBZmZpbmVUcmFuc2Zvcm0g
Y29udGVudFRyYW5zZm9ybWF0aW9uOwogICAgIGlmIChhdHRyaWJ1dGVzLnBhdHRlcm5Db250ZW50
VW5pdHMoKSA9PSBTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfT0JKRUNUQk9VTkRJTkdCT1gp
Ci0gICAgICAgIGNvbnRlbnRUcmFuc2Zvcm1hdGlvbiA9IHRpbGVJbWFnZVRyYW5zZm9ybTsKKyAg
ICAgICAgY29udGVudFRyYW5zZm9ybWF0aW9uID0gdHJhbnNmb3JtOwogCiAgICAgLy8gRHJhdyB0
aGUgY29udGVudCBpbnRvIHRoZSBJbWFnZUJ1ZmZlci4KICAgICBmb3IgKGF1dG8mIGNoaWxkIDog
Y2hpbGRyZW5PZlR5cGU8U1ZHRWxlbWVudD4oKmF0dHJpYnV0ZXMucGF0dGVybkNvbnRlbnRFbGVt
ZW50KCkpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlUGF0dGVybi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZVBhdHRlcm4uaAppbmRleCA3MTE3ZjEyN2QwZGRkNzNiYTVlYmM1NTk5MDEw
YzI0YmI2MmYwOGE2Li45YzMyMDFlYjljMjQxYWY1Y2VhZDFlNzAxZjlhZTE0MmE2MmJhMWNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
UGF0dGVybi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VQYXR0ZXJuLmgKQEAgLTEsNiArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2
IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICogQ29weXJpZ2h0IChD
KSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYwpAQCAtNjEsNyArNjIsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBi
dWlsZFRpbGVJbWFnZVRyYW5zZm9ybShSZW5kZXJFbGVtZW50JiwgY29uc3QgUGF0dGVybkF0dHJp
YnV0ZXMmLCBjb25zdCBTVkdQYXR0ZXJuRWxlbWVudCYsIEZsb2F0UmVjdCYgcGF0dGVybkJvdW5k
YXJpZXMsIEFmZmluZVRyYW5zZm9ybSYgdGlsZUltYWdlVHJhbnNmb3JtKSBjb25zdDsKIAotICAg
IFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlVGlsZUltYWdlKGNvbnN0IFBhdHRlcm5BdHRyaWJ1
dGVzJiwgY29uc3QgRmxvYXRSZWN0JiB0aWxlQm91bmRhcmllcywgY29uc3QgRmxvYXRSZWN0JiBh
YnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRpbGVJbWFnZVRy
YW5zZm9ybSwgRmxvYXRSZWN0JiBjbGFtcGVkQWJzb2x1dGVUaWxlQm91bmRhcmllcywgUmVuZGVy
aW5nTW9kZSkgY29uc3Q7CisgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVUaWxlSW1hZ2Uo
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRmxvYXRTaXplJiBzY2Fs
ZSwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgUGF0dGVybkF0dHJpYnV0ZXMmKSBjb25z
dDsKIAogICAgIFBhdHRlcm5EYXRhKiBidWlsZFBhdHRlcm4oUmVuZGVyRWxlbWVudCYsIE9wdGlv
blNldDxSZW5kZXJTVkdSZXNvdXJjZU1vZGU+LCBHcmFwaGljc0NvbnRleHQmKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAK
aW5kZXggZjA4ZTg3MmQyODY2YWU1MzQyNDg2ZTNjOWY5OThlZGM5NDQ5ODRiOS4uNjM4MDI0ZDdk
Mjc4MTBmYmUwNWY3OTQyZGFiZmMwYTA4MThhY2I5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0yMjcsNTIgKzIy
Nyw2IEBAIEFmZmluZVRyYW5zZm9ybSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjYWxjdWxhdGVUcmFu
c2Zvcm1hdGlvblRvT3V0ZXJtb3N0Q29vcmRpbmF0CiAgICAgcmV0dXJuIGFic29sdXRlVHJhbnNm
b3JtOwogfQogCi1SZWZQdHI8SW1hZ2VCdWZmZXI+IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0
ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBj
b2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUsIGNvbnN0IEhvc3RXaW5kb3cq
IGhvc3RXaW5kb3cpCi17Ci0gICAgSW50UmVjdCBwYWludFJlY3QgPSBjYWxjdWxhdGVJbWFnZUJ1
ZmZlclJlY3QodGFyZ2V0UmVjdCwgYWJzb2x1dGVUcmFuc2Zvcm0pOwotICAgIC8vIERvbid0IGNy
ZWF0ZSBlbXB0eSBJbWFnZUJ1ZmZlcnMuCi0gICAgaWYgKHBhaW50UmVjdC5pc0VtcHR5KCkpCi0g
ICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgRmxvYXRTaXplIHNjYWxlKDEsIDEpOwotICAg
IEZsb2F0U2l6ZSBjbGFtcGVkU2l6ZSA9IHBhaW50UmVjdC5zaXplKCk7Ci0gICAgaWYgKEltYWdl
QnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhjbGFtcGVkU2l6ZSwgc2NhbGUpKQotICAgICAgICBj
bGFtcGVkU2l6ZSA9IGNsYW1wZWRTaXplICogc2NhbGU7Ci0KLSAgICBhdXRvIGltYWdlQnVmZmVy
ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjbGFtcGVkU2l6ZSwgcmVuZGVyaW5nTW9kZSwgU2hvdWxk
VXNlRGlzcGxheUxpc3Q6Ok5vLCBSZW5kZXJpbmdQdXJwb3NlOjpET00sIDEsIGNvbG9yU3BhY2Us
IFBpeGVsRm9ybWF0OjpCR1JBOCwgaG9zdFdpbmRvdyk7Ci0gICAgaWYgKCFpbWFnZUJ1ZmZlcikK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3Jt
OwotICAgIHRyYW5zZm9ybS5zY2FsZShzY2FsZSkudHJhbnNsYXRlKC1wYWludFJlY3QubG9jYXRp
b24oKSkubXVsdGlwbHkoYWJzb2x1dGVUcmFuc2Zvcm0pOwotCi0gICAgR3JhcGhpY3NDb250ZXh0
JiBpbWFnZUNvbnRleHQgPSBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpOwotICAgIGltYWdlQ29udGV4
dC5jb25jYXRDVE0odHJhbnNmb3JtKTsKLQotICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsKLX0KLQot
UmVmUHRyPEltYWdlQnVmZmVyPiBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZl
cihjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgY2xhbXBlZFJl
Y3QsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgUmVuZGVyaW5nTW9k
ZSByZW5kZXJpbmdNb2RlLCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93KQotewotICAgIElu
dFNpemUgY2xhbXBlZFNpemUgPSByb3VuZGVkSW50U2l6ZShjbGFtcGVkUmVjdC5zaXplKCkpOwot
ICAgIEZsb2F0U2l6ZSB1bmNsYW1wZWRTaXplID0gcm91bmRlZEludFNpemUodGFyZ2V0UmVjdC5z
aXplKCkpOwotCi0gICAgLy8gRG9uJ3QgY3JlYXRlIGVtcHR5IEltYWdlQnVmZmVycy4KLSAgICBp
ZiAoY2xhbXBlZFNpemUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAg
IGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNsYW1wZWRTaXplLCByZW5k
ZXJpbmdNb2RlLCBTaG91bGRVc2VEaXNwbGF5TGlzdDo6Tm8sIFJlbmRlcmluZ1B1cnBvc2U6OkRP
TSwgMSwgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBob3N0V2luZG93KTsKLSAgICBp
ZiAoIWltYWdlQnVmZmVyKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIEdyYXBoaWNz
Q29udGV4dCYgaW1hZ2VDb250ZXh0ID0gaW1hZ2VCdWZmZXItPmNvbnRleHQoKTsKLQotICAgIC8v
IENvbXBlbnNhdGUgcm91bmRpbmcgZWZmZWN0cywgYXMgdGhlIGFic29sdXRlIHRhcmdldCByZWN0
IGlzIHVzaW5nIGZsb2F0aW5nLXBvaW50IG51bWJlcnMgYW5kIHRoZSBpbWFnZSBidWZmZXIgc2l6
ZSBpcyBpbnRlZ2VyLgotICAgIGltYWdlQ29udGV4dC5zY2FsZSh1bmNsYW1wZWRTaXplIC8gdGFy
Z2V0UmVjdC5zaXplKCkpOwotCi0gICAgcmV0dXJuIGltYWdlQnVmZmVyOwotfQotCiB2b2lkIFNW
R1JlbmRlcmluZ0NvbnRleHQ6OnJlbmRlclN1YnRyZWVUb0NvbnRleHQoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBSZW5kZXJFbGVtZW50JiBpdGVtLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHN1
YnRyZWVDb250ZW50VHJhbnNmb3JtYXRpb24pCiB7CiAgICAgLy8gUmVuZGVyaW5nIGludG8gYSBi
dWZmZXIgaW1wbGllcyB3ZSdyZSBiZWluZyB1c2VkIGZvciBtYXNraW5nLCBjbGlwcGluZywgcGF0
dGVybnMgb3IgZmlsdGVycy4gSW4gZWFjaCBvZiB0aGVzZQpAQCAtMjg5LDEyICsyNDMsMTUgQEAg
dm9pZCBTVkdSZW5kZXJpbmdDb250ZXh0OjpyZW5kZXJTdWJ0cmVlVG9Db250ZXh0KEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgUmVuZGUKICAgICBjb250ZW50VHJhbnNmb3JtYXRpb24gPSBzYXZl
ZENvbnRlbnRUcmFuc2Zvcm1hdGlvbjsKIH0KIAotdm9pZCBTVkdSZW5kZXJpbmdDb250ZXh0Ojpj
bGlwVG9JbWFnZUJ1ZmZlcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwg
UmVmUHRyPEltYWdlQnVmZmVyPiYgaW1hZ2VCdWZmZXIsIGJvb2wgc2FmZVRvQ2xlYXIpCit2b2lk
IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVmZmVyKEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBGbG9hdFNpemUmIHNj
YWxlLCBSZWZQdHI8SW1hZ2VCdWZmZXI+JiBpbWFnZUJ1ZmZlciwgYm9vbCBzYWZlVG9DbGVhcikK
IHsKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBGbG9hdFJl
Y3QgYWJzb2x1dGVUYXJnZXRSZWN0ID0gY2FsY3VsYXRlSW1hZ2VCdWZmZXJSZWN0KHRhcmdldFJl
Y3QsIGFic29sdXRlVHJhbnNmb3JtKTsKKyAgICBBZmZpbmVUcmFuc2Zvcm0gYWJzb2x1dGVUcmFu
c2Zvcm07CisgICAgYWJzb2x1dGVUcmFuc2Zvcm0uc2NhbGUoc2NhbGUud2lkdGgoKSwgc2NhbGUu
aGVpZ2h0KCkpOworCisgICAgYXV0byBhYnNvbHV0ZVRhcmdldFJlY3QgPSBjYWxjdWxhdGVJbWFn
ZUJ1ZmZlclJlY3QodGFyZ2V0UmVjdCwgYWJzb2x1dGVUcmFuc2Zvcm0pOwogCiAgICAgLy8gVGhl
IG1hc2sgaW1hZ2UgaGFzIGJlZW4gY3JlYXRlZCBpbiB0aGUgYWJzb2x1dGUgY29vcmRpbmF0ZSBz
cGFjZSwgYXMgdGhlIGltYWdlIHNob3VsZCBub3QgYmUgc2NhbGVkLgogICAgIC8vIFNvIHRoZSBh
Y3R1YWwgbWFza2luZyBwcm9jZXNzIGhhcyB0byBiZSBkb25lIGluIHRoZSBhYnNvbHV0ZSBjb29y
ZGluYXRlIHNwYWNlIGFzIHdlbGwuCkBAIC0zMDgsMTQgKzI2NSw2IEBAIHZvaWQgU1ZHUmVuZGVy
aW5nQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBBZmZpCiAgICAgICAgIGltYWdlQnVmZmVyID0gbnVsbHB0cjsKIH0KIAotdm9pZCBTVkdS
ZW5kZXJpbmdDb250ZXh0OjpjbGVhcjJEUm90YXRpb24oQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zv
cm0pCi17Ci0gICAgQWZmaW5lVHJhbnNmb3JtOjpEZWNvbXBvc2VkVHlwZSBkZWNvbXBvc2l0aW9u
OwotICAgIHRyYW5zZm9ybS5kZWNvbXBvc2UoZGVjb21wb3NpdGlvbik7Ci0gICAgZGVjb21wb3Np
dGlvbi5hbmdsZSA9IDA7Ci0gICAgdHJhbnNmb3JtLnJlY29tcG9zZShkZWNvbXBvc2l0aW9uKTsK
LX0KLQogYm9vbCBTVkdSZW5kZXJpbmdDb250ZXh0OjpidWZmZXJGb3JlZ3JvdW5kKFJlZlB0cjxJ
bWFnZUJ1ZmZlcj4mIGltYWdlQnVmZmVyKQogewogICAgIEFTU0VSVChtX3BhaW50SW5mbyk7CkBA
IC0zMzMsNyArMjgyLDcgQEAgYm9vbCBTVkdSZW5kZXJpbmdDb250ZXh0OjpidWZmZXJGb3JlZ3Jv
dW5kKFJlZlB0cjxJbWFnZUJ1ZmZlcj4mIGltYWdlQnVmZmVyKQogCiAgICAgLy8gQ3JlYXRlIGEg
bmV3IGJ1ZmZlciBhbmQgcGFpbnQgdGhlIGZvcmVncm91bmQgaW50byBpdC4KICAgICBpZiAoIWlt
YWdlQnVmZmVyKSB7Ci0gICAgICAgIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNv
bXBhdGlibGVCdWZmZXIoZXhwYW5kZWRJbnRTaXplKGJvdW5kaW5nQm94LnNpemUoKSksIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBtX3BhaW50SW5mby0+Y29udGV4dCgpKTsKKyAgICAg
ICAgaW1hZ2VCdWZmZXIgPSBtX3BhaW50SW5mby0+Y29udGV4dCgpLmNyZWF0ZUNvbXBhdGlibGVJ
bWFnZUJ1ZmZlcihleHBhbmRlZEludFNpemUoYm91bmRpbmdCb3guc2l6ZSgpKSk7CiAgICAgICAg
IGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuaApp
bmRleCAwNDQ3OTkzYjk4N2UyZjUyNDczMzQxMDU0NmYwYTBlNWY0MzZkNDJiLi5iYWUyYWNlNTE2
YjM1ZjY3OTYxM2NjYjgxZTYyOTAzNDZlYzQxNmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuaApAQCAtNjAsMTUgKzYwLDExIEBA
IHB1YmxpYzoKICAgICB2b2lkIHByZXBhcmVUb1JlbmRlclNWR0NvbnRlbnQoUmVuZGVyRWxlbWVu
dCYsIFBhaW50SW5mbyYsIE5lZWRzR3JhcGhpY3NDb250ZXh0U2F2ZSA9IERvbnRTYXZlR3JhcGhp
Y3NDb250ZXh0KTsKICAgICBib29sIGlzUmVuZGVyaW5nUHJlcGFyZWQoKSBjb25zdCB7IHJldHVy
biBtX3JlbmRlcmluZ0ZsYWdzICYgUmVuZGVyaW5nUHJlcGFyZWQ7IH0KIAotICAgIHN0YXRpYyBS
ZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgdGFy
Z2V0UmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJiwgUmVuZGVyaW5nTW9kZSwgY29uc3QgSG9zdFdpbmRvdyog
PSBudWxscHRyKTsKLSAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1
ZmZlcihjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgY2xhbXBl
ZFJlY3QsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYsIFJlbmRlcmluZ01vZGUsIGNvbnN0
IEhvc3RXaW5kb3cqID0gbnVsbHB0cik7Ci0KICAgICBzdGF0aWMgdm9pZCByZW5kZXJTdWJ0cmVl
VG9Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYsIFJlbmRlckVsZW1lbnQmLCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mKTsKLSAgICBzdGF0aWMgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtLCBjb25zdCBG
bG9hdFJlY3QmIHRhcmdldFJlY3QsIFJlZlB0cjxJbWFnZUJ1ZmZlcj4mLCBib29sIHNhZmVUb0Ns
ZWFyKTsKKyAgICBzdGF0aWMgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgc2NhbGUsIFJl
ZlB0cjxJbWFnZUJ1ZmZlcj4mLCBib29sIHNhZmVUb0NsZWFyKTsKIAogICAgIHN0YXRpYyBmbG9h
dCBjYWxjdWxhdGVTY3JlZW5Gb250U2l6ZVNjYWxpbmdGYWN0b3IoY29uc3QgUmVuZGVyT2JqZWN0
Jik7CiAgICAgc3RhdGljIEFmZmluZVRyYW5zZm9ybSBjYWxjdWxhdGVUcmFuc2Zvcm1hdGlvblRv
T3V0ZXJtb3N0Q29vcmRpbmF0ZVN5c3RlbShjb25zdCBSZW5kZXJPYmplY3QmKTsKLSAgICBzdGF0
aWMgdm9pZCBjbGVhcjJEUm90YXRpb24oQWZmaW5lVHJhbnNmb3JtJik7CiAKICAgICBzdGF0aWMg
SW50UmVjdCBjYWxjdWxhdGVJbWFnZUJ1ZmZlclJlY3QoY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRS
ZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtKQogICAgIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCmluZGV4IDg3ZDJlYTY2OGY4MDUw
MjU2MzIyOWU1MGM0ZjYxNGQ2NzM5YzA0YTAuLjRhOWMzYzQ1YTkyM2ViZDJhYmRmNWExZmQyZDdm
ZTUwNjA3OTRkNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcApA
QCAtMTc3LDYgKzE3NywzOCBAQCB2b2lkIFNWR0ZFSW1hZ2VFbGVtZW50Ojpub3RpZnlGaW5pc2hl
ZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcwogICAgIFJlbmRlclNW
R1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnBh
cmVudFJlbmRlcmVyKTsKIH0KIAorc3RhdGljIGlubGluZSBJbnRSZWN0IHNjYWxlZEltYWdlQnVm
ZmVyUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgc2NhbGUpCit7
CisgICAgYXV0byBzY2FsZWRSZWN0ID0gcmVjdDsKKyAgICBzY2FsZWRSZWN0LnNjYWxlKHNjYWxl
KTsKKyAgICByZXR1cm4gZW5jbG9zaW5nSW50UmVjdChzY2FsZWRSZWN0KTsKK30KKworc3RhdGlj
IGlubGluZSBGbG9hdFNpemUgY2xhbXBpbmdTY2FsZUZvckltYWdlQnVmZmVyU2l6ZShjb25zdCBG
bG9hdFNpemUmIHNpemUpCit7CisgICAgRmxvYXRTaXplIGNsYW1waW5nU2NhbGUoMSwgMSk7Cisg
ICAgSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKHNpemUsIGNsYW1waW5nU2NhbGUpOwor
ICAgIHJldHVybiBjbGFtcGluZ1NjYWxlOworfQorCitzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVy
PiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0U2l6
ZSYgc2NhbGUsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3cpCit7CisgICAgYXV0byBzY2FsZWRSZWN0
ID0gc2NhbGVkSW1hZ2VCdWZmZXJSZWN0KHJlY3QsIHNjYWxlKTsKKyAgICBpZiAoc2NhbGVkUmVj
dC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byBjbGFtcGlu
Z1NjYWxlID0gY2xhbXBpbmdTY2FsZUZvckltYWdlQnVmZmVyU2l6ZShzY2FsZWRSZWN0LnNpemUo
KSk7CisKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzY2FsZWRS
ZWN0LnNpemUoKSAqIGNsYW1waW5nU2NhbGUsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQs
IFNob3VsZFVzZURpc3BsYXlMaXN0OjpObywgUmVuZGVyaW5nUHVycG9zZTo6RE9NLCAxLCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBob3N0V2luZG93
KTsKKyAgICBpZiAoIWltYWdlQnVmZmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAg
IGltYWdlQnVmZmVyLT5jb250ZXh0KCkuc2NhbGUoY2xhbXBpbmdTY2FsZSk7CisgICAgaW1hZ2VC
dWZmZXItPmNvbnRleHQoKS50cmFuc2xhdGUoLXNjYWxlZFJlY3QubG9jYXRpb24oKSk7CisgICAg
aW1hZ2VCdWZmZXItPmNvbnRleHQoKS5zY2FsZShzY2FsZSk7CisgICAgcmV0dXJuIGltYWdlQnVm
ZmVyOworfQorCiBzdGQ6OnR1cGxlPFJlZlB0cjxJbWFnZUJ1ZmZlcj4sIEZsb2F0UmVjdD4gU1ZH
RkVJbWFnZUVsZW1lbnQ6OmltYWdlQnVmZmVyRm9yRWZmZWN0KCkgY29uc3QKIHsKICAgICBhdXRv
IHRhcmdldCA9IFNWR1VSSVJlZmVyZW5jZTo6dGFyZ2V0RWxlbWVudEZyb21JUklTdHJpbmcoaHJl
ZigpLCB0cmVlU2NvcGUoKSk7CkBAIC0xOTUsMTEgKzIyNywxMiBAQCBzdGQ6OnR1cGxlPFJlZlB0
cjxJbWFnZUJ1ZmZlcj4sIEZsb2F0UmVjdD4gU1ZHRkVJbWFnZUVsZW1lbnQ6OmltYWdlQnVmZmVy
Rm9yRWZmZQogICAgIGlmICghYWJzb2x1dGVUcmFuc2Zvcm0uaXNJbnZlcnRpYmxlKCkpCiAgICAg
ICAgIHJldHVybiB7IH07CiAKLSAgICBhdXRvIHNoZWFyRnJlZUFic29sdXRlVHJhbnNmb3JtID0g
QWZmaW5lVHJhbnNmb3JtKGFic29sdXRlVHJhbnNmb3JtLnhTY2FsZSgpLCAwLCAwLCBhYnNvbHV0
ZVRyYW5zZm9ybS55U2NhbGUoKSwgMCwgMCk7Ci0KKyAgICAvLyBJZ25vcmUgMkQgcm90YXRpb24s
IGFzIGl0IGRvZXNuJ3QgYWZmZWN0IHRoZSBpbWFnZSBzaXplLgorICAgIEZsb2F0U2l6ZSBzY2Fs
ZShhYnNvbHV0ZVRyYW5zZm9ybS54U2NhbGUoKSwgYWJzb2x1dGVUcmFuc2Zvcm0ueVNjYWxlKCkp
OwogICAgIGF1dG8gaW1hZ2VSZWN0ID0gcmVuZGVyZXItPnJlcGFpbnRSZWN0SW5Mb2NhbENvb3Jk
aW5hdGVzKCk7CiAKLSAgICBhdXRvIGltYWdlQnVmZmVyID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6
Y3JlYXRlSW1hZ2VCdWZmZXIoaW1hZ2VSZWN0LCBzaGVhckZyZWVBYnNvbHV0ZVRyYW5zZm9ybSwg
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0
ZWQsIHJlbmRlcmVyLT5ob3N0V2luZG93KCkpOworICAgIC8vIEZJWE1FOiBSZXBsYWNlIHRoaXMg
Y2FsbCB3aXRoIEdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoKSBvbmNlIHRoZSBk
ZXN0aW5hdGlvbiBHcmFwaGljc0NvbnRleHQgaXMgcGFzc2VkIHRvIHRoaXMgZnVuY3Rpb24uCisg
ICAgYXV0byBpbWFnZUJ1ZmZlciA9IGNyZWF0ZUltYWdlQnVmZmVyKGltYWdlUmVjdCwgc2NhbGUs
IHJlbmRlcmVyLT5ob3N0V2luZG93KCkpOwogICAgIGlmICghaW1hZ2VCdWZmZXIpCiAgICAgICAg
IHJldHVybiB7IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9T
VkdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCmlu
ZGV4IGY0MTQwMTIzMzg5MTkwMzg3YWQyNzY5NmE1MDU0NDU0ZGY4OTAyOGEuLjZiZmY4OTc2Yzc4
YmNiZjFmNGMzMzAzN2FiZjdiYzUyNWJkZjQ0ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlLmNwcApAQCAtMjUwLDcgKzI1MCw3IEBAIHZvaWQgU1ZHSW1hZ2U6OmRyYXdQ
YXR0ZXJuRm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRT
aXplCiAgICAgRmxvYXRSZWN0IGltYWdlQnVmZmVyU2l6ZSA9IHpvb21lZENvbnRhaW5lclJlY3Q7
CiAgICAgaW1hZ2VCdWZmZXJTaXplLnNjYWxlKGltYWdlQnVmZmVyU2NhbGUud2lkdGgoKSwgaW1h
Z2VCdWZmZXJTY2FsZS5oZWlnaHQoKSk7CiAKLSAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVy
OjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGV4cGFuZGVkSW50U2l6ZShpbWFnZUJ1ZmZlclNpemUu
c2l6ZSgpKSwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIGNvbnRleHQpOworICAg
IGF1dG8gYnVmZmVyID0gY29udGV4dC5jcmVhdGVJbWFnZUJ1ZmZlcihleHBhbmRlZEludFNpemUo
aW1hZ2VCdWZmZXJTaXplLnNpemUoKSkpOwogICAgIGlmICghYnVmZmVyKSAvLyBGYWlsZWQgdG8g
YWxsb2NhdGUgYnVmZmVyLgogICAgICAgICByZXR1cm47CiAgICAgZHJhd0ZvckNvbnRhaW5lcihi
dWZmZXItPmNvbnRleHQoKSwgY29udGFpbmVyU2l6ZSwgY29udGFpbmVyWm9vbSwgaW5pdGlhbEZy
YWdtZW50VVJMLCBpbWFnZUJ1ZmZlclNpemUsIHpvb21lZENvbnRhaW5lclJlY3QpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0
UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURp
c3BsYXlMaXN0UmVjb3JkZXIuY3BwCmluZGV4IDRhMjhiZDQ2ZmExNzcwNTNlNTdjMzEyNWYxZWVh
ZDEwZmNlZDY1ZTcuLjYzM2IzNWY1NzU3Y2YxODA3MTQxZWZiMDI0NTliM2MzOGEzZjgzOTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5
TGlzdFJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTIwMiw3ICsyMDIsNyBAQCB2b2lkIFJl
bW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OmNsaXBQYXRoKGNvbnN0IFBhdGgmIHBhdGgsIFdpbmRS
dWxlIHJ1bGUpCiAKIHZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6YmVnaW5DbGlwVG9E
cmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRGVzdGlu
YXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlKQogewotICAgIG1fbWFza0ltYWdlQnVmZmVyID0g
SW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoZGVzdGluYXRpb24uc2l6ZSgpLCBj
b2xvclNwYWNlLCBkcmF3aW5nQ29udGV4dCgpKTsKKyAgICBtX21hc2tJbWFnZUJ1ZmZlciA9IGRy
YXdpbmdDb250ZXh0KCkuY3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyKGRlc3RpbmF0aW9uLnNp
emUoKSwgY29sb3JTcGFjZSk7CiB9CiAKIHZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6
ZW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURp
c3BsYXlMaXN0UmVjb3JkZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5jcHAKaW5kZXggOWQzNDNm
YTlhYzQ5NGJhYzVlYTRjYWRkMDExOWIwMGNlMmM4Njc2Yy4uODJlMzQ1OTljZGMzMjlmMjMwOWZl
OTNmZWIwNzc5NTIyMWUwMWMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNv
cmRlclByb3h5LmNwcApAQCAtNDY0LDYgKzQ2NCwxNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhp
Y3NDb250ZXh0PiBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHk6OmNyZWF0ZU5lc3RlZENv
bgogICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eT4o
KnRoaXMsIGluaXRpYWxDbGlwLCBpbml0aWFsQ1RNKTsKIH0KIAorUmVmUHRyPEltYWdlQnVmZmVy
PiBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHk6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0
IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNl
LCBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUpIGNvbnN0Cit7CisgICAgaWYgKFVOTElLRUxZ
KCFtX3JlbmRlcmluZ0JhY2tlbmQpKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICByZXR1cm4gbV9yZW5kZXJpbmdC
YWNrZW5kLT5jcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCByZW5kZXJpbmdNb2RlLCAxLCBjb2xvclNw
YWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlz
dFJlY29yZGVyUHJveHkuaAppbmRleCAzMDA5OGJlYTYxYzFiNjQ0ZTQyMGFjYTMzMzlmOTA0NDkx
ZTRiN2ZmLi5iODEzOTAxOWUxYzQ5YThhOTAxMzU4M2QwMTY5ZmViYmU0NDc3MmMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlM
aXN0UmVjb3JkZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmgKQEAgLTE0NCw2ICsxNDQsOSBA
QCBwcml2YXRlOgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dD4gY3JlYXRlTmVzdGVkQ29udGV4dChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGluaXRpYWxD
bGlwLCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0pIGZpbmFsOwog
CisgICAgdXNpbmcgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpjcmVhdGVJbWFnZUJ1
ZmZlcjsKKyAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVmZmVy
KGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIGNvbnN0IFdlYkNvcmU6OkRlc3RpbmF0aW9uQ29s
b3JTcGFjZSYsIFdlYkNvcmU6OlJlbmRlcmluZ01vZGUpIGNvbnN0IGZpbmFsOworCiAgICAgV2Vi
Q29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIG1fZGVzdGluYXRpb25CdWZmZXJJZGVu
dGlmaWVyOwogICAgIFdlYWtQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IG1faW1hZ2VCdWZmZXI7
CiAgICAgV2Vha1B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk+IG1fcmVuZGVyaW5nQmFj
a2VuZDsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451341</attachid>
            <date>2022-02-08 23:22:04 -0800</date>
            <delta_ts>2022-02-10 00:04:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235758-20220208232203.patch</filename>
            <type>text/plain</type>
            <size>84078</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NDUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzQwMmVkOTA3ZmUzM2Mx
NzdkZjFjNmI4ZTcwOWZkMzIxNTFkZTMwMy4uOWI2YzA3NDA4NjhmMWI5ZTk3MjViOTE4MmVmOGM1
YjU3ZjVmMzlkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0OSBAQAorMjAyMi0wMi0wOCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IE1vdmUgSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcigpIGFuZCBTVkdS
ZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlciB0byBHcmFwaGljc0NvbnRleHQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTc1OAorICAg
ICAgICByZGFyOi8vODg0Nzg0NzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGUgZ29hbCBvZiB0aGlzIHBhdGNoIGlzIHRvIHJlY29yZCB0aGUgZHJh
d2luZyBpZiB0aGUgY29uY3JldGUgdHlwZSBvZiAKKyAgICAgICAgdGhlIEdyYXBoaWNzQ29udGV4
dCBpcyBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuIEN1cnJlbnRseSBhbGwgdGhlCisg
ICAgICAgIGludGVybWVkaWF0ZSBjb21wYXRpYmxlIEltYWdlQnVmZmVycyBhcmUgb2YgdHlwZSBD
b25jcmV0ZUltYWdlQnVmZmVyLgorICAgICAgICBUaGUgZHJhd2luZyB0byB0aGVzZSBJbWFnZUJ1
ZmZlcnMgc3RpbGwgaGFwcGVucyBpbiB0aGUgV2ViUHJvY2Vzcy4gTW9yZW92ZXIKKyAgICAgICAg
d2hlbiB3ZSBjYWxsIGRyYXdJbWFnZUJ1ZmZlcigpIG9yIGNsaXBUb0ltYWdlQnVmZmVyKCkgZm9y
IG9uZSBvZiB0aGVzZQorICAgICAgICBpbnRlcm1lZGlhdGUgSW1hZ2VCdWZmZXJzIHRvIGEgcmVt
b3RlIEltYWdlQnVmZmVyLCB3ZSBoYXZlIHRvIHNpbmsgdGhlCisgICAgICAgIGludGVybWVkaWF0
ZSBJbWFnZUJ1ZmZlciB0byBhIE5hdGl2ZUltYWdlIGFuZCBzZW5kIGl0IHRvIEdQVVByb2Nlc3Mu
CisKKyAgICAgICAgVG8gZml4IHRoaXMsIHRoZSBuZXcgZW51bSAnUmVuZGVyaW5nTWV0aG9kJyB3
aWxsIGJlIHVzZWQgd2hlbiBjcmVhdGluZworICAgICAgICB0aGUgSW1hZ2VCdWZmZXIgbWV0aG9k
cy4gVGhlIHZhbHVlIG9mIFJlbmRlcmluZ01ldGhvZCBjYW4gYmUgb25lIG9mIHRoZSAKKyAgICAg
ICAgZm9sbG93aW5nIGNvbnN0YW50czoKKworICAgICAgICAxLiBEZWZhdWx0OiBUaGUgdHlwZSBv
ZiB0aGUgY3JlYXRlZCBJbWFnZUJ1ZmZlciB3aWxsIG1hdGNoIHRoZSB0eXBlIG9mCisgICAgICAg
ICAgIHRoZSB1bmRlcmx5aW5nIEltYWdlQnVmZmVyIG9mIHRoZSBHcmFwaGljc0NvbnRleHQuCisK
KyAgICAgICAgMi4gRGlzcGxheUxpc3Q6IEEgRGlzcGxheUxpc3Q6OkltYWdlQnVmZmVyIHdpbGwg
YmUgY3JlYXRlZCB3aG9zZQorICAgICAgICAgICBHcmFwaGljc0NvbnRleHQgd2lsbCBiZSBvZiB0
eXBlIERpc3BsYXlMaXN0OjpSZWNvcmRlckltcGwuCisKKyAgICAgICAgMy4gTG9jYWw6IFRoZSBJ
bWFnZUJ1ZmZlciB3aWxsIGJlIG9mIHR5cGUgQ29uY3JldGVJbWFnZUJ1ZmZlciBhbmQgaXQgd2ls
bAorICAgICAgICAgICBob2xkIGEgcGxhdGZvcm0gR3JhcGhpY3NDb250ZXh0LgorCisgICAgICAg
IEFsc28gR3JhcGhpY3NDb250ZXh0IHdpbGwgcHJvdmlkZSB0aGVzZSBmdW5jdGlvbnMgZm9yIGNy
ZWF0aW5nIGFuIAorICAgICAgICBJbWFnZUJ1ZmZlcjoKKworICAgICAgICAxLiBHcmFwaGljc0Nv
bnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKCkgKHZpcnR1YWwpOiBDcmVhdGVzIGEgCisgICAgICAg
ICAgIENvbmNyZXRlSW1hZ2VCdWZmZXIgb3IgYSBEaXNwbGF5TGlzdDo6SW1hZ2VCdWZmZXIuIFRo
ZSB0eXBlIG9mIHRoZSBjcmVhdGVkCisgICAgICAgICAgIEltYWdlQnVmZmVyIGlzIGNvbnRyb2xs
ZWQgYnkgdGhlIGFyZ3VtZW50ICdyZW5kZXJpbmdNZXRob2QnLiBCZWNhdXNlCisgICAgICAgICAg
IFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eSBpcyBhIHN1cGVyIGNsYXNzIG9mIEdyYXBo
aWNzQ29udGV4dCwKKyAgICAgICAgICAgaXQgb3ZlcnJpZGVzIHRoaXMgbWV0aG9kIGFuZCByZXR1
cm5zIHRoZSBkZXNpcmVkIFJlbW90ZUltYWdlQnVmZmVyLgorICAgICAgICAgICBSZW1vdGVEaXNw
bGF5TGlzdFJlY29yZGVyUHJveHkgaGFzIGFjY2VzcyB0byBSZW1vdFJlbmRlcmluZ0JhY2tlbmRQ
cm94eQorICAgICAgICAgICBzbyBpdCBjYW4gY2FsbCBpdHMgY3JlYXRlSW1hZ2VCdWZmZXIoKS4K
KworICAgICAgICAyLiBHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKCkgKG5vbi12
aXJ0dWFsKTogQ3JlYXRlcyBhIHNjYWxlZAorICAgICAgICAgICBJbWFnZUJ1ZmZlciBhbmQgc2V0
cyB0aGUgY29udGV4dCBhY2NvcmRpbmdseS4gVGhlIHR5cGUgb2YgdGhlIGNyZWF0ZWQKKyAgICAg
ICAgICAgSW1hZ2VCdWZmZXIgaXMgY29udHJvbGxlZCBieSB0aGUgYXJndW1lbnQgJ3JlbmRlcmlu
Z01ldGhvZCcuCisKKyAgICAgICAgMy4gR3JhcGhpY3NDb250ZXh0OjpjcmVhdGVDb21wYXRpYmxl
SW1hZ2VCdWZmZXIoKSAodmlydHVhbCk6IFRha2VzIHRoZQorICAgICAgICAgICBzY2FsZUZhY3Rv
cigpIGludG8gY29uc2lkZXJhdGlvbiB3aGVuIGNyZWF0aW5nIHRoZSBJbWFnZUJ1ZmZlci4gCisg
ICAgICAgICAgIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eSB3aWxsIG92ZXJyaWRlIHRo
aXMgZnVuY3Rpb24gdG8gcmV0dXJuCisgICAgICAgICAgIGFuIFVuYWNjZWxlcmF0ZWQgSW1hZ2VC
dWZmZXIgaWYgJ3JlbmRlcmluZ01ldGhvZCAhPSBEZWZhdWx0Jy4gVGhpcyBpcworICAgICAgICAg
ICB0byBlbnN1cmUgdGhhdCBmb3IgR1BVUHJvY2VzcyBkcmF3aW5nLCBubyBpbnRlcm1lZGlhdGUg
bG9jYWwKKyAgICAgICAgICAgSW1hZ2VCdWZmZXJzIHdpbGwgZHJhdyB0byBhbiBJT1N1cmZhY2Ug
aW4gV2ViUHJvY2Vzcy4KKworICAgICAgICBUd28gdmVyc2lvbnMgb2YgdGhlc2UgZnVuY3Rpb25z
IGFyZSBwcm92aWRlZDogb25lIHRha2VzIGEgRmxvYXRTaXplIGFuZAorICAgICAgICB0aGUgb3Ro
ZXIgdGFrZXMgYSBGbG9hdFJlY2N0LiBUaGUgRmxvYXRSZWN0IHZlcnNpb24gZXhwYW5kcyB0aGUg
Zm91cgorICAgICAgICBjb3JuZXJzIG9mIHRoZSByZWN0YW5nbGUgdG8gZnVsbCBwaXhlbHMuCisK
KyAgICAgICAgKiBodG1sL0N1c3RvbVBhaW50Q2FudmFzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkN1c3RvbVBhaW50Q2FudmFzOjpyZXBsYXlEaXNwbGF5TGlzdCBjb25zdCk6CisgICAgICAgICog
aHRtbC9DdXN0b21QYWludEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbVBhaW50
SW1hZ2U6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBodG1sL09mZnNjcmVlbkNhbnZhcy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpPZmZzY3JlZW5DYW52YXM6OnRyYW5zZmVyVG9JbWFnZUJpdG1h
cCk6CisgICAgICAgIChXZWJDb3JlOjpPZmZzY3JlZW5DYW52YXM6OmNvbW1pdFRvUGxhY2Vob2xk
ZXJDYW52YXMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
REJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZTo6ZHJhd0ltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9UaGVtZUNvY29hLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6ZHJhd0FwcGxlUGF5QnV0dG9uKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFn
ZTo6ZHJhd1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdl
bmVyYXRlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyb3NzZmFkZUdlbmVyYXRlZElt
YWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJ
bWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFkaWVudEltYWdlOjpkcmF3UGF0dGVybik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnNjYWxlZEltYWdlQnVmZmVyU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpz
Y2FsZWRJbWFnZUJ1ZmZlclJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Y2xhbXBpbmdTY2FsZUZv
ckltYWdlQnVmZmVyU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNv
bXBhdGlibGVJbWFnZUJ1ZmZlclNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ6OmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlciBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsaXBUb0RyYXdpbmdDb21tYW5kcyk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUJ1ZmZlcjo6Y2xvbmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmNy
ZWF0ZUNvbXBhdGlibGVCdWZmZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VC
dWZmZXI6OmNvbXBhdGlibGVCdWZmZXJTaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlQnVmZmVyOjpjb21wYXRpYmxlQnVmZmVySW5mbyk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Y29weVJlY3RUb0J1ZmZlcik6IERlbGV0ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlOjpkcmF3UGF0dGVybik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvUmVuZGVyaW5nTW9kZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJ
bWFnZTo6dXBkYXRlQ2FjaGVkSW1hZ2VJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpQREZE
b2N1bWVudEltYWdlOjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4
dC9EcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmF3
R2x5cGhzUmVjb3JkZXI6OmRyYXdPVFNWR1J1bik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpjcmVhdGVJbWFnZUJ1ZmZlciBjb25zdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZXBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXI6OmFw
cGx5SXRlbSk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tOgorICAgICAgICAo
V2ViQ29yZTo6VGhlbWVNYWM6OmRyYXdDZWxsT3JGb2N1c1JpbmdXaXRoVmlld0ludG9Db250ZXh0
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllcjo6c2V0dXBGaWx0ZXJzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhdHRlcm5Gb3JEZXNjcmlwdGlv
bik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVycy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllckZpbHRlcnM6OmFsbG9jYXRlQmFja2luZ1N0b3JlSWZOZWVk
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJGaWx0ZXJzOjpiZWdpbkZpbHRlckVm
ZmVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVycy5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVDb2NvYTo6cGFpbnRBcHBsZVBheUJ1dHRvbik6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclRoZW1lTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBh
aW50TGlzdEJ1dHRvbkZvcklucHV0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFj
OjpwYWludFByb2dyZXNzQmFyKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlQ2xpcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUNs
aXBwZXI6OmFwcGx5Q2xpcHBpbmdUb0NvbnRleHQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZH
UmVzb3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3VyY2UpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVN
YXNrQW5kU3dhcENvbnRleHRGb3JUZXh0R3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6Y2xp
cFRvVGV4dE1hc2spOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VN
YXNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmFw
cGx5UmVzb3VyY2UpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQ
YXR0ZXJuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6
YnVpbGRQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlUGF0dGVy
bjo6Y3JlYXRlVGlsZUltYWdlIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlUGF0dGVybi5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVy
aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0Ojpj
bGlwVG9JbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0
OjpidWZmZXJGb3JlZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlcmluZ0NvbnRl
eHQ6OmNyZWF0ZUltYWdlQnVmZmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jl
bmRlcmluZ0NvbnRleHQ6OmNsZWFyMkRSb3RhdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogcmVu
ZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFSW1h
Z2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNjYWxlZEltYWdlQnVmZmVyUmVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpjbGFtcGluZ1NjYWxlRm9ySW1hZ2VCdWZmZXJTaXplKToKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZUltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ZFSW1hZ2VFbGVtZW50OjppbWFnZUJ1ZmZlckZvckVmZmVjdCBjb25zdCk6CisgICAgICAgICog
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpk
cmF3UGF0dGVybkZvckNvbnRhaW5lcik6CisKIDIwMjItMDItMDggIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBGaWxlUmVhZGVyU3luYyBzaG91bGQgYmUgZXhwb3Nl
ZCB0byBzaGFyZWQgd29ya2VycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBhNDQxYmY3NTQwZmE5ZWMwMGRiMGQyZDQy
NjA3ZDE5OGM3Y2Q1YWVmLi4zYWQwYWRhODlhZTU1YzM4YWYyOTc4MzQ0ODIxMWVkZDZjM2JlMWUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIyLTAyLTA4ICBTYWlkIEFib3UtSGFsbGF3
YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gTW92ZSBJbWFnZUJ1
ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyKCkgYW5kIFNWR1JlbmRlcmluZ0NvbnRl
eHQ6OmNyZWF0ZUltYWdlQnVmZmVyIHRvIEdyYXBoaWNzQ29udGV4dAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM1NzU4CisgICAgICAgIHJkYXI6Ly84
ODQ3ODQ3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6YmVnaW5DbGlwVG9EcmF3
aW5nQ29tbWFuZHMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURp
c3BsYXlMaXN0UmVjb3JkZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZURpc3Bs
YXlMaXN0UmVjb3JkZXJQcm94eTo6Y3JlYXRlSW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHk6OmNyZWF0ZUNvbXBhdGlibGVJ
bWFnZUJ1ZmZlciBjb25zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5Lmg6CisKIDIwMjItMDItMDggIEppZ2VuIFpob3Ug
IDxqaWdlbi56aG91QHNvbnkuY29tPgogCiAgICAgICAgIFtQbGF5c3RhdGlvbl0gRml4IGJ1aWxk
IGJyZWFrIGFmdGVyIHIyODkyNDcgaWYgRU5BQkxFX1NFUlZJQ0VfV09SS0VSIGlzIG9mZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9DdXN0b21QYWludENhbnZhcy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0N1c3RvbVBhaW50Q2FudmFzLmNwcAppbmRleCAyYzFhM2FhNmM2NTc5
M2VjNmY1ZDg0YmRhNGVmNzNlYzY5Njk4ZWEzLi40MDQyOTExZDA3YmM3NzgzOTAzMDEzMWQ3OGQ3
M2E1NTdiNjNkMGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0N1c3RvbVBhaW50
Q2FudmFzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0N1c3RvbVBhaW50Q2FudmFzLmNw
cApAQCAtNzMsNyArNzMsNyBAQCB2b2lkIEN1c3RvbVBhaW50Q2FudmFzOjpyZXBsYXlEaXNwbGF5
TGlzdChHcmFwaGljc0NvbnRleHQqIGN0eCkgY29uc3QKICAgICAvLyBGSVhNRTogVXNpbmcgYW4g
aW50ZXJtZWRpYXRlIGJ1ZmZlciBpcyBub3QgbmVlZGVkIGlmIHRoZXJlIGFyZSBubyBjb21wb3Np
dGUgb3BlcmF0aW9ucy4KICAgICBhdXRvIGNsaXBCb3VuZHMgPSBjdHgtPmNsaXBCb3VuZHMoKTsK
IAotICAgIGF1dG8gaW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihj
bGlwQm91bmRzLnNpemUoKSwgKmN0eCk7CisgICAgYXV0byBpbWFnZSA9IGN0eC0+Y3JlYXRlQ29t
cGF0aWJsZUltYWdlQnVmZmVyKGNsaXBCb3VuZHMuc2l6ZSgpKTsKICAgICBpZiAoIWltYWdlKQog
ICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ3VzdG9t
UGFpbnRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0N1c3RvbVBhaW50SW1hZ2UuY3Bw
CmluZGV4IGY0NzE5OTQ2YzU4ZTA1OWJlMzNkYjcxZDNmN2I2ZjYwOTIwYTVjYWMuLmZiOGFlNmJm
ZDcxZjNlZjYxYTM0MGUyNzAwMTQwMzhlMjc2Njk3MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvQ3VzdG9tUGFpbnRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9D
dXN0b21QYWludEltYWdlLmNwcApAQCAtMTk5LDcgKzE5OSw3IEBAIHZvaWQgQ3VzdG9tUGFpbnRJ
bWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxv
YXRSZWN0CiAgICAgYWRqdXN0ZWRQYXR0ZXJuQ1RNLnNjYWxlKDEuMCAvIHhTY2FsZSwgMS4wIC8g
eVNjYWxlKTsKICAgICBhZGp1c3RlZFNyY1JlY3Quc2NhbGUoeFNjYWxlLCB5U2NhbGUpOwogCi0g
ICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihhZGp1
c3RlZFNpemUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBkZXN0Q29udGV4dCk7Cisg
ICAgYXV0byBidWZmZXIgPSBkZXN0Q29udGV4dC5jcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIo
YWRqdXN0ZWRTaXplKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogICAgIGRv
Q3VzdG9tUGFpbnQoYnVmZmVyLT5jb250ZXh0KCksIGFkanVzdGVkU2l6ZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAKaW5kZXggNGM5YzhjZmYxOGI5YzdlYTEyZDE0MTMx
MmM2NjA2NjZkY2YwYzg3OS4uODhkOWY3OGM5YTVjOWNiYjIyMDhjZGM3ODk0MTFkZTgyNzY2YzMw
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcApAQCAtMjgzLDcgKzI4
Myw3IEBAIEV4Y2VwdGlvbk9yPFJlZlB0cjxJbWFnZUJpdG1hcD4+IE9mZnNjcmVlbkNhbnZhczo6
dHJhbnNmZXJUb0ltYWdlQml0bWFwKCkKICAgICAgICAgLy8gQXMgdGhlIGNhbnZhcyBjb250ZXh0
IHN0YXRlIGlzIHN0b3JlZCBpbiBHcmFwaGljc0NvbnRleHQsIHdoaWNoIGlzIG93bmVkCiAgICAg
ICAgIC8vIGJ5IGJ1ZmZlcigpLCB0byBhdm9pZCByZXNldHRpbmcgdGhlIGNvbnRleHQgc3RhdGUs
IHdlIGhhdmUgdG8gbWFrZSBhIGNvcHkgYW5kCiAgICAgICAgIC8vIGNsZWFyIHRoZSBvcmlnaW5h
bCBidWZmZXIgcmF0aGVyIHRoYW4gcmV0dXJuaW5nIHRoZSBvcmlnaW5hbCBidWZmZXIuCi0gICAg
ICAgIGF1dG8gYnVmZmVyQ29weSA9IGJ1ZmZlcigpLT5jb3B5UmVjdFRvQnVmZmVyKEZsb2F0UmVj
dChGbG9hdFBvaW50KCksIGJ1ZmZlcigpLT5sb2dpY2FsU2l6ZSgpKSwgYnVmZmVyKCktPmNvbG9y
U3BhY2UoKSwgKmRyYXdpbmdDb250ZXh0KCkpOworICAgICAgICBhdXRvIGJ1ZmZlckNvcHkgPSBi
dWZmZXIoKS0+Y2xvbmUoKTsKICAgICAgICAgZG93bmNhc3Q8T2Zmc2NyZWVuQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEPigqbV9jb250ZXh0KS5jbGVhckNhbnZhcygpOwogICAgICAgICBjbGVhckNv
cGllZEltYWdlKCk7CiAKQEAgLTQ1MSwxNCArNDUxLDEzIEBAIHZvaWQgT2Zmc2NyZWVuQ2FudmFz
Ojpjb21taXRUb1BsYWNlaG9sZGVyQ2FudmFzKCkKICAgICAgICAgbV9jb250ZXh0LT5wYWludFJl
bmRlcmluZ1Jlc3VsdHNUb0NhbnZhcygpOwogCiAgICAgaWYgKG1fcGxhY2Vob2xkZXJEYXRhLT5i
dWZmZXJQaXBlU291cmNlKSB7Ci0gICAgICAgIGF1dG8gYnVmZmVyQ29weSA9IGltYWdlQnVmZmVy
LT5jb3B5UmVjdFRvQnVmZmVyKEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdlQnVmZmVyLT5s
b2dpY2FsU2l6ZSgpKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIGltYWdlQnVmZmVy
LT5jb250ZXh0KCkpOwotICAgICAgICBpZiAoYnVmZmVyQ29weSkKKyAgICAgICAgaWYgKGF1dG8g
YnVmZmVyQ29weSA9IGltYWdlQnVmZmVyLT5jbG9uZSgpKQogICAgICAgICAgICAgbV9wbGFjZWhv
bGRlckRhdGEtPmJ1ZmZlclBpcGVTb3VyY2UtPmhhbmRsZShXVEZNb3ZlKGJ1ZmZlckNvcHkpKTsK
ICAgICB9CiAKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9wbGFjZWhvbGRlckRhdGEtPmJ1ZmZlckxv
Y2sgfTsKICAgICBib29sIHNob3VsZFB1c2hCdWZmZXIgPSAhbV9wbGFjZWhvbGRlckRhdGEtPnBl
bmRpbmdDb21taXRCdWZmZXI7Ci0gICAgbV9wbGFjZWhvbGRlckRhdGEtPnBlbmRpbmdDb21taXRC
dWZmZXIgPSBpbWFnZUJ1ZmZlci0+Y29weVJlY3RUb0J1ZmZlcihGbG9hdFJlY3QoRmxvYXRQb2lu
dCgpLCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQigpLCBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpKTsKKyAgICBtX3BsYWNlaG9sZGVyRGF0YS0+
cGVuZGluZ0NvbW1pdEJ1ZmZlciA9IGltYWdlQnVmZmVyLT5jbG9uZSgpOwogICAgIGlmIChtX3Bs
YWNlaG9sZGVyRGF0YS0+cGVuZGluZ0NvbW1pdEJ1ZmZlciAmJiBzaG91bGRQdXNoQnVmZmVyKQog
ICAgICAgICBwdXNoQnVmZmVyVG9QbGFjZWhvbGRlcigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNw
cAppbmRleCA1NTBlNjhiMjg3MTYzOGQyMDdhY2ViMjMyNzU0OTNkZWE2YjQxMmM2Li4yMDVlZTYy
MTk4MmFlMWE5OGRiYmE5YzYwYmE2ODA0NTY3Y2NmOGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNw
cApAQCAtMTYxMSw3ICsxNjExLDggQEAgRXhjZXB0aW9uT3I8dm9pZD4gQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQmFzZTo6ZHJhd0ltYWdlKENhbnZhc0Jhc2UmIHNvdXJjZUNhbnYKICAgICAgICAg
cmVwYWludEVudGlyZUNhbnZhcyA9IHRydWU7CiAgICAgfSBlbHNlIGlmIChzdGF0ZSgpLmdsb2Jh
bENvbXBvc2l0ZSA9PSBDb21wb3NpdGVPcGVyYXRvcjo6Q29weSkgewogICAgICAgICBpZiAoJnNv
dXJjZUNhbnZhcyA9PSAmY2FudmFzQmFzZSgpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBjb3B5
ID0gYnVmZmVyLT5jb3B5UmVjdFRvQnVmZmVyKHNyY1JlY3QsIGNvbG9yU3BhY2UoKSwgKmMpKSB7
CisgICAgICAgICAgICBpZiAoYXV0byBjb3B5ID0gYy0+Y3JlYXRlQ29tcGF0aWJsZUltYWdlQnVm
ZmVyKHNyY1JlY3Quc2l6ZSgpLCBjb2xvclNwYWNlKCkpKSB7CisgICAgICAgICAgICAgICAgY29w
eS0+Y29udGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcigqYnVmZmVyLCAtc3JjUmVjdC5sb2NhdGlvbigp
KTsKICAgICAgICAgICAgICAgICBjbGVhckNhbnZhcygpOwogICAgICAgICAgICAgICAgIGMtPmRy
YXdJbWFnZUJ1ZmZlcigqY29weSwgZHN0UmVjdCwgeyB7IH0sIHNyY1JlY3Quc2l6ZSgpIH0sIHsg
c3RhdGUoKS5nbG9iYWxDb21wb3NpdGUsIHN0YXRlKCkuZ2xvYmFsQmxlbmQgfSk7CiAgICAgICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9UaGVtZUNv
Y29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVGhlbWVDb2NvYS5tbQppbmRl
eCBlY2Q1MGI3MGZkYmJmNmU5ODNmM2E3MTU2NTI3YjIxMDY4ODRmYmZlLi45MTJhYjZhOWUxNjhi
MDU4ZTBmMzg2MTdkODFjYzQ0OWFjM2IwNWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9UaGVtZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL1RoZW1lQ29jb2EubW0KQEAgLTExMCw3ICsxMTAsOCBAQCBzdGF0aWMgQ0dQREZQYWdl
UmVmIGFwcGxlUGF5QnV0dG9uTG9nb1doaXRlKCkKIAogc3RhdGljIHZvaWQgZHJhd0FwcGxlUGF5
QnV0dG9uKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgQ0dQREZQYWdlUmVmIHBhZ2UsIGNvbnN0
IEZsb2F0U2l6ZSYgc2l6ZSkKIHsKLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoc2l6ZSwgY29udGV4dCk7CisgICAgLy8gQ3JlYXRlIGEg
bG9jYWwgSW1hZ2VCdWZmZXIgYmVjYXVzZSBkZWNvZGluZyB0aGUgUERGIGltYWdlcyBoYXMgdG8g
aGFwcGVuIGluIFdlYlByb2Nlc3MuCisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IGNvbnRleHQuY3Jl
YXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyKHNpemUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
QigpLCBSZW5kZXJpbmdNZXRob2Q6OkxvY2FsKTsKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAg
ICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0JpdG1hcEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Jp
dG1hcEltYWdlLmNwcAppbmRleCA4MDI3NDM1YWQyOTQ1NjYyOThhNzkxYjNhZjZhZmE5YmYyNzgx
ZTY4Li41NzQ1NDQ3YzhjNTRmZjg4YTkzNjZmNTBmZWIzNjRkNzc4MGNiMDhkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCkBAIC0zNDcs
NyArMzQ3LDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0
JiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LAogICAgIH0KIAogICAgIGlmICghbV9j
YWNoZWRJbWFnZSkgewotICAgICAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVD
b21wYXRpYmxlQnVmZmVyKGV4cGFuZGVkSW50U2l6ZSh0aWxlUmVjdC5zaXplKCkpLCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgY3R4dCk7CisgICAgICAgIGF1dG8gYnVmZmVyID0gY3R4
dC5jcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIoZXhwYW5kZWRJbnRTaXplKHRpbGVSZWN0LnNp
emUoKSkpOwogICAgICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybjsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRlR2VuZXJh
dGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3Jvc3NmYWRl
R2VuZXJhdGVkSW1hZ2UuY3BwCmluZGV4IDUwZmUwYzQ2NjE0YjcwMmJhMTg2MWU3MzgwM2MxMDAy
NWEwODA0YjQuLjYxYTM4MzIzM2NiNmViMWE5NGU5MWYxZmZlNDc3ZjJjY2RmMTUxMTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Nyb3NzZmFkZUdlbmVyYXRl
ZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Dcm9zc2Zh
ZGVHZW5lcmF0ZWRJbWFnZS5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCBJbWFnZURyYXdSZXN1bHQg
Q3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBGbAogCiB2b2lkIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOjpkcmF3UGF0dGVybihHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0s
IGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewotICAgIGF1dG8gaW1hZ2VCdWZmZXIg
PSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUoKSwgY29udGV4dC5yZW5kZXJpbmdNb2RlKCksIDEs
IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOworICAg
IGF1dG8gaW1hZ2VCdWZmZXIgPSBjb250ZXh0LmNyZWF0ZUltYWdlQnVmZmVyKHNpemUoKSk7CiAg
ICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwCmluZGV4IGZlZjM2ZTU3
YTY1YTE0ODY5MGRiMzBhMmMyYTU2ODRkMDAwYzhhZGMuLmJkYTcwMTEwOThmYTUxN2E2NDQzMmFm
ZWNiZDA1M2MxZjk1OTVjNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwCkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgR3JhZGllbnRJ
bWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxv
YXRSZWN0JiBkCiAgICAgdW5zaWduZWQgZ2VuZXJhdG9ySGFzaCA9IG1fZ3JhZGllbnQtPmhhc2go
KTsKIAogICAgIGlmICghbV9jYWNoZWRJbWFnZSB8fCBtX2NhY2hlZEdlbmVyYXRvckhhc2ggIT0g
Z2VuZXJhdG9ySGFzaCB8fCBtX2NhY2hlZEFkanVzdGVkU2l6ZSAhPSBhZGp1c3RlZFNpemUgfHwg
IWFyZUVzc2VudGlhbGx5RXF1YWwoZGVzdENvbnRleHQuc2NhbGVGYWN0b3IoKSwgbV9jYWNoZWRT
Y2FsZUZhY3RvcikpIHsKLSAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpj
cmVhdGVDb21wYXRpYmxlQnVmZmVyKGFkanVzdGVkU2l6ZSwgRGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKCksIGRlc3RDb250ZXh0KTsKKyAgICAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IGRlc3RD
b250ZXh0LmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihhZGp1c3RlZFNpemUpOwogICAgICAg
ICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCBh
NDkyZTk4ZGEyODBjMjNlYzczNjMwN2FkZTJkZGVmMzJiZmE0Y2VmLi5lYjA2YzcwOTExYWUxOTkz
YWU1N2E5MGIyYTNiN2NjNWE0MjhjODdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTU1MSw2ICs1NTEsOTMgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdCaWRpVGV4dChjb25zdCBGb250Q2FzY2FkZSYgZm9u
dCwgY29uc3QgVGV4dFJ1biYgcnVuLAogICAgIGJpZGlSdW5zLmNsZWFyKCk7CiB9CiAKK3N0YXRp
YyBJbnRTaXplIHNjYWxlZEltYWdlQnVmZmVyU2l6ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGNv
bnN0IEZsb2F0U2l6ZSYgc2NhbGUpCit7CisgICAgLy8gRW5sYXJnZSB0aGUgYnVmZmVyIHNpemUg
aWYgdGhlIGNvbnRleHQncyB0cmFuc2Zvcm0gaXMgc2NhbGluZyBpdCBzbyB3ZSBuZWVkIGEgaGln
aGVyCisgICAgLy8gcmVzb2x1dGlvbiB0aGFuIG9uZSBwaXhlbCBwZXIgdW5pdC4KKyAgICByZXR1
cm4gZXhwYW5kZWRJbnRTaXplKHNpemUgKiBzY2FsZSk7Cit9CisKK3N0YXRpYyBJbnRSZWN0IHNj
YWxlZEltYWdlQnVmZmVyUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0U2l6
ZSYgc2NhbGUpCit7CisgICAgYXV0byBzY2FsZWRSZWN0ID0gcmVjdDsKKyAgICBzY2FsZWRSZWN0
LnNjYWxlKHNjYWxlKTsKKyAgICByZXR1cm4gZW5jbG9zaW5nSW50UmVjdChzY2FsZWRSZWN0KTsK
K30KKworc3RhdGljIEZsb2F0U2l6ZSBjbGFtcGluZ1NjYWxlRm9ySW1hZ2VCdWZmZXJTaXplKGNv
bnN0IEZsb2F0U2l6ZSYgc2l6ZSkKK3sKKyAgICBGbG9hdFNpemUgY2xhbXBpbmdTY2FsZSgxLCAx
KTsKKyAgICBJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcoc2l6ZSwgY2xhbXBpbmdTY2Fs
ZSk7CisgICAgcmV0dXJuIGNsYW1waW5nU2NhbGU7Cit9CisKK0ludFNpemUgR3JhcGhpY3NDb250
ZXh0Ojpjb21wYXRpYmxlSW1hZ2VCdWZmZXJTaXplKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkgY29u
c3QKK3sKKyAgICByZXR1cm4gc2NhbGVkSW1hZ2VCdWZmZXJTaXplKHNpemUsIHNjYWxlRmFjdG9y
KCkpOworfQorCitSZWZQdHI8SW1hZ2VCdWZmZXI+IEdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlSW1h
Z2VCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UmIGNvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgUmVuZGVyaW5nTWV0
aG9kIHJlbmRlcmluZ01ldGhvZCkgY29uc3QKK3sKKyAgICBpZiAocmVuZGVyaW5nTWV0aG9kID09
IFJlbmRlcmluZ01ldGhvZDo6RGlzcGxheUxpc3QpCisgICAgICAgIHJldHVybiBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKHNpemUsIHJlbmRlcmluZ01vZGUsIFNob3VsZFVzZURpc3BsYXlMaXN0OjpZZXMs
IFJlbmRlcmluZ1B1cnBvc2U6OlVuc3BlY2lmaWVkLCAxLCBjb2xvclNwYWNlLCBQaXhlbEZvcm1h
dDo6QkdSQTgpOworCisgICAgcmV0dXJuIEltYWdlQnVmZmVyOjpjcmVhdGUoc2l6ZSwgcmVuZGVy
aW5nTW9kZSwgMSwgY29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKK30KKworUmVmUHRy
PEltYWdlQnVmZmVyPiBHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZs
b2F0U2l6ZSYgc2l6ZSwgY29uc3QgRmxvYXRTaXplJiBzY2FsZSwgY29uc3QgRGVzdGluYXRpb25D
b2xvclNwYWNlJiBjb2xvclNwYWNlLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ01vZGU+IHJlbmRl
cmluZ01vZGUsIFJlbmRlcmluZ01ldGhvZCByZW5kZXJpbmdNZXRob2QpIGNvbnN0Cit7CisgICAg
YXV0byBleHBhbmRlZFNjYWxlZFNpemUgPSBzY2FsZWRJbWFnZUJ1ZmZlclNpemUoc2l6ZSwgc2Nh
bGUpOworICAgIGlmIChleHBhbmRlZFNjYWxlZFNpemUuaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgIGF1dG8gY2xhbXBpbmdTY2FsZSA9IGNsYW1waW5nU2NhbGVGb3JJ
bWFnZUJ1ZmZlclNpemUoZXhwYW5kZWRTY2FsZWRTaXplKTsKKworICAgIGF1dG8gaW1hZ2VCdWZm
ZXIgPSBjcmVhdGVJbWFnZUJ1ZmZlcihleHBhbmRlZFNjYWxlZFNpemUgKiBjbGFtcGluZ1NjYWxl
LCBjb2xvclNwYWNlLCByZW5kZXJpbmdNb2RlLnZhbHVlX29yKHRoaXMtPnJlbmRlcmluZ01vZGUo
KSksIHJlbmRlcmluZ01ldGhvZCk7CisgICAgaWYgKCFpbWFnZUJ1ZmZlcikKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnNjYWxlKGNsYW1waW5n
U2NhbGUpOworCisgICAgLy8gJ2V4cGFuZGVkU2NhbGVkU2l6ZScgaXMgbWFwcGVkIHRvICdzaXpl
Jy4gU28gdXNlICdleHBhbmRlZFNjYWxlZFNpemUgLyBzaXplJworICAgIC8vIG5vdCAnc2NhbGUn
IGJlY2F1c2UgdGhleSBhcmUgbm90IG5lY2Vzc2FyaWx5IGVxdWFsLgorICAgIGltYWdlQnVmZmVy
LT5jb250ZXh0KCkuc2NhbGUoZXhwYW5kZWRTY2FsZWRTaXplIC8gc2l6ZSk7CisgICAgcmV0dXJu
IGltYWdlQnVmZmVyOworfQorCitSZWZQdHI8SW1hZ2VCdWZmZXI+IEdyYXBoaWNzQ29udGV4dDo6
Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFNpemUm
IHNjYWxlLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIHN0ZDo6b3B0
aW9uYWw8UmVuZGVyaW5nTW9kZT4gcmVuZGVyaW5nTW9kZSwgUmVuZGVyaW5nTWV0aG9kIHJlbmRl
cmluZ01ldGhvZCkgY29uc3QKK3sKKyAgICBhdXRvIGV4cGFuZGVkU2NhbGVkUmVjdCA9IHNjYWxl
ZEltYWdlQnVmZmVyUmVjdChyZWN0LCBzY2FsZSk7CisgICAgaWYgKGV4cGFuZGVkU2NhbGVkUmVj
dC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byBjbGFtcGlu
Z1NjYWxlID0gY2xhbXBpbmdTY2FsZUZvckltYWdlQnVmZmVyU2l6ZShleHBhbmRlZFNjYWxlZFJl
Y3Quc2l6ZSgpKTsKKworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBjcmVhdGVJbWFnZUJ1ZmZlcihl
eHBhbmRlZFNjYWxlZFJlY3Quc2l6ZSgpICogY2xhbXBpbmdTY2FsZSwgY29sb3JTcGFjZSwgcmVu
ZGVyaW5nTW9kZS52YWx1ZV9vcih0aGlzLT5yZW5kZXJpbmdNb2RlKCkpLCByZW5kZXJpbmdNZXRo
b2QpOworICAgIGlmICghaW1hZ2VCdWZmZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgaW1hZ2VCdWZmZXItPmNvbnRleHQoKS5zY2FsZShjbGFtcGluZ1NjYWxlKTsKKyAgICAKKyAg
ICAvLyAncmVjdCcgaXMgbWFwcGVkIHRvIGEgcmVjdGFuZ2xlIGluc2lkZSBleHBhbmRlZFNjYWxl
ZFJlY3QuCisgICAgaW1hZ2VCdWZmZXItPmNvbnRleHQoKS50cmFuc2xhdGUoLWV4cGFuZGVkU2Nh
bGVkUmVjdC5sb2NhdGlvbigpKTsKKyAgICAKKyAgICAvLyBUaGUgc2l6ZSBvZiB0aGlzIHJlY3Rh
bmdsZSBpcyBub3QgbmVjZXNzYXJpbHkgZXF1YWwgdG8gZXhwYW5kZWRTY2FsZWRSZWN0LnNpemUo
KS4KKyAgICAvLyBTbyB1c2UgJ3NjYWxlJyBub3QgJ2V4cGFuZGVkU2NhbGVkUmVjdC5zaXplKCkg
LyByZWN0LnNpemUoKScuCisgICAgaW1hZ2VCdWZmZXItPmNvbnRleHQoKS5zY2FsZShzY2FsZSk7
CisgICAgcmV0dXJuIGltYWdlQnVmZmVyOworfQorCitSZWZQdHI8SW1hZ2VCdWZmZXI+IEdyYXBo
aWNzQ29udGV4dDo6Y3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYg
c2l6ZSwgY29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBSZW5kZXJpbmdN
ZXRob2QgcmVuZGVyaW5nTWV0aG9kKSBjb25zdAoreworICAgIHJldHVybiBjcmVhdGVJbWFnZUJ1
ZmZlcihzaXplLCBzY2FsZUZhY3RvcigpLCBjb2xvclNwYWNlLCByZW5kZXJpbmdNb2RlKCksIHJl
bmRlcmluZ01ldGhvZCk7Cit9CisKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0
OjpjcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25z
dCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFJlbmRlcmluZ01ldGhvZCByZW5k
ZXJpbmdNZXRob2QpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNyZWF0ZUltYWdlQnVmZmVyKHJlY3Qs
IHNjYWxlRmFjdG9yKCksIGNvbG9yU3BhY2UsIHJlbmRlcmluZ01vZGUoKSwgcmVuZGVyaW5nTWV0
aG9kKTsKK30KKwogSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKElt
YWdlJiBpbWFnZSwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKIHsKICAgICByZXR1cm4gZHJhd0lt
YWdlKGltYWdlLCBGbG9hdFJlY3QoZGVzdGluYXRpb24sIGltYWdlLnNpemUoKSksIEZsb2F0UmVj
dChGbG9hdFBvaW50KCksIGltYWdlLnNpemUoKSksIGltYWdlUGFpbnRpbmdPcHRpb25zKTsKQEAg
LTY2OCw3ICs3NTUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcE91dFJvdW5kZWRSZWN0
KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJlY3QpCiAKIEdyYXBoaWNzQ29udGV4dDo6Q2xpcFRv
RHJhd2luZ0NvbW1hbmRzUmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6Y2xpcFRvRHJhd2luZ0NvbW1h
bmRzKGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JT
cGFjZSYgY29sb3JTcGFjZSwgRnVuY3Rpb248dm9pZChHcmFwaGljc0NvbnRleHQmKT4mJiBkcmF3
aW5nRnVuY3Rpb24pCiB7Ci0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVh
dGVDb21wYXRpYmxlQnVmZmVyKGRlc3RpbmF0aW9uLnNpemUoKSwgY29sb3JTcGFjZSwgKnRoaXMp
OworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBjcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIoZGVz
dGluYXRpb24uc2l6ZSgpLCBjb2xvclNwYWNlKTsKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAg
ICAgICByZXR1cm4gQ2xpcFRvRHJhd2luZ0NvbW1hbmRzUmVzdWx0OjpGYWlsZWRUb0NyZWF0ZUlt
YWdlQnVmZmVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5oCmluZGV4IGNmNzA5MmRlMzNiYzViNzI4YWQ0NjFiMGZjMDIxNzdmNjll
ZWZmMzIuLmM5YzUyZmMyMDg5MTNhNDU1Y2I2MDFlMWFmYWYwNGJhNzlmZWY2YWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBA
IC00MTYsNiArNDE2LDE0IEBAIHB1YmxpYzoKIAogICAgIC8vIEltYWdlcywgUGF0dGVybnMsIGFu
ZCBNZWRpYQogCisgICAgSW50U2l6ZSBjb21wYXRpYmxlSW1hZ2VCdWZmZXJTaXplKGNvbnN0IEZs
b2F0U2l6ZSYpIGNvbnN0OworCisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEltYWdlQnVmZmVy
PiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBjb25zdCBGbG9hdFNpemUmIHNj
YWxlID0geyAxLCAxIH0sIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgPSBEZXN0aW5hdGlv
bkNvbG9yU3BhY2U6OlNSR0IoKSwgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdNb2RlPiA9IHN0ZDo6
bnVsbG9wdCwgUmVuZGVyaW5nTWV0aG9kID0gUmVuZGVyaW5nTWV0aG9kOjpEZWZhdWx0KSBjb25z
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUltYWdlQnVm
ZmVyKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0U2l6ZSYgc2NhbGUgPSB7IDEsIDEgfSwg
Y29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
QigpLCBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ01vZGU+ID0gc3RkOjpudWxsb3B0LCBSZW5kZXJp
bmdNZXRob2QgPSBSZW5kZXJpbmdNZXRob2Q6OkRlZmF1bHQpIGNvbnN0OworCisgICAgdmlydHVh
bCBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihjb25zdCBG
bG9hdFNpemUmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmID0gRGVzdGluYXRpb25Db2xv
clNwYWNlOjpTUkdCKCksIFJlbmRlcmluZ01ldGhvZCA9IFJlbmRlcmluZ01ldGhvZDo6RGVmYXVs
dCkgY29uc3Q7CisgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUNvbXBhdGli
bGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3Bh
Y2UmID0gRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFJlbmRlcmluZ01ldGhvZCA9IFJl
bmRlcmluZ01ldGhvZDo6RGVmYXVsdCkgY29uc3Q7CisKICAgICB2aXJ0dWFsIHZvaWQgZHJhd05h
dGl2ZUltYWdlKE5hdGl2ZUltYWdlJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pID0gMDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIEltYWdl
RHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlv
biwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyBJbWFnZU9yaWVudGF0aW9uOjpGcm9t
SW1hZ2UgfSk7CkBAIC01NDYsNiArNTU0LDggQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgZmlsbEVs
bGlwc2VBc1BhdGgoY29uc3QgRmxvYXRSZWN0Jik7CiAgICAgdm9pZCBzdHJva2VFbGxpcHNlQXNQ
YXRoKGNvbnN0IEZsb2F0UmVjdCYpOwogCisgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2VCdWZmZXI+
IGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IERlc3RpbmF0aW9uQ29s
b3JTcGFjZSYsIFJlbmRlcmluZ01vZGUsIFJlbmRlcmluZ01ldGhvZCkgY29uc3Q7CisKICAgICBG
bG9hdFJlY3QgY29tcHV0ZUxpbmVCb3VuZHNBbmRBbnRpYWxpYXNpbmdNb2RlRm9yVGV4dChjb25z
dCBGbG9hdFJlY3QmLCBib29sIHByaW50aW5nLCBDb2xvciYpOwogCiAgICAgZmxvYXQgZGFzaGVk
TGluZUNvcm5lcldpZHRoRm9yU3Ryb2tlV2lkdGgoZmxvYXQpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCmluZGV4IDAxOTNiZmIw
Zjk2YzdkMzQwNTNlNzY4YTBjMjU4ZmMxMjU3ODBmZDMuLmM1ZWYzMGEyYjBiMDc4NjQ5Njg3ZTBk
ZTE3NjdmMDVlMzc5YTMyNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJ1ZmZlci5jcHAKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChD
KSAyMDA5IERpcmsgU2NodWx6ZSA8a3JpdEB3ZWJraXQub3JnPgogICogQ29weXJpZ2h0IChDKSBS
ZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDExLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICog
Q29weXJpZ2h0IChDKSAyMDE2LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03Miw3MyArNzIsMTQgQEAgUmVm
UHRyPEltYWdlQnVmZmVyPiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6
ZSwgUmVuZGVyaW5nTW9kZSByZW4KICAgICByZXR1cm4gaW1hZ2VCdWZmZXI7CiB9CiAKLVJlZlB0
cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3Qg
RmxvYXRTaXplJiBzaXplLCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCitSZWZQdHI8
SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpjbG9uZSgpIGNvbnN0CiB7Ci0gICAgaWYgKHNpemUu
aXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIEludFNpemUgc2NhbGVk
U2l6ZSA9IEltYWdlQnVmZmVyOjpjb21wYXRpYmxlQnVmZmVyU2l6ZShzaXplLCBjb250ZXh0KTsK
LQotICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXI7Ci0KLSAgICBpZiAoY29udGV4
dC5yZW5kZXJpbmdNb2RlKCkgPT0gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQpCi0gICAgICAg
IGltYWdlQnVmZmVyID0gQWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNjYWxlZFNpemUs
IGNvbnRleHQpOwotICAgIAotICAgIGlmICghaW1hZ2VCdWZmZXIpCi0gICAgICAgIGltYWdlQnVm
ZmVyID0gVW5hY2NlbGVyYXRlZEltYWdlQnVmZmVyOjpjcmVhdGUoc2NhbGVkU2l6ZSwgY29udGV4
dCk7Ci0KLSAgICBpZiAoIWltYWdlQnVmZmVyKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQot
ICAgIGltYWdlQnVmZmVyLT5jb250ZXh0KCkuc2NhbGUoc2NhbGVkU2l6ZSAvIHNpemUpOwotICAg
IHJldHVybiBpbWFnZUJ1ZmZlcjsKLX0KLQotLy8gVGhpcyBpcyB1c2VmdWwgd2hlbiB5b3UgbmVl
ZCB0byBtYWtlIHN1cmUgdGhlIHBpeGVsIGdyaWQgb2YgdGhlIEltYWdlQnVmZmVyIGFsaWducyB3
aXRoIHRoZSBwaXhlbCBncmlkIG9mIHRoZSBjb250ZXh0LgotLy8gU2ltcGx5IHNheWluZyBjcmVh
dGVDb21wYXRpYmxlQnVmZmVyKHJlY3Quc2l6ZSgpLCBjb250ZXh0KSBpc24ndCBzdWZmaWNpZW50
IGluIHRoaXMgc2l0dWF0aW9uLCBiZWNhdXNlIHJlY3QubG9jYXRpb24oKSBtYXkgbm90IGxpZSBv
biBhIHBpeGVsIGJvdW5kYXJ5LgotLy8gSW4gdGhpcyBzaXR1YXRpb24sIHdlIGhhdmUgdG8gaW5m
bGF0ZSBib3RoIHRoZSBsZWZ0IHNpZGUgYW5kIHRoZSByaWdodCBzaWRlLCB3aGljaCBjYW4gbGVh
ZCB0byBkaWZmZXJlbnQgcmVzdWx0cyB0aGFuCi0vLyBjcmVhdGVDb21wYXRpYmxlQnVmZmVyKHJl
Y3Quc2l6ZSgpLCBjb250ZXh0KSB3b3VsZCBoYXZlIHByb2R1Y2VkLgotYXV0byBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCkgLT4gc3RkOjpvcHRpb25hbDxDb21wYXRpYmxlQnVmZmVy
RGVzY3JpcHRpb24+Ci17Ci0gICAgaWYgKHJlY3QuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwotCi0gICAgYXV0byBpbmZvID0gSW1hZ2VCdWZmZXI6OmNvbXBhdGlibGVC
dWZmZXJJbmZvKHJlY3QsIGNvbnRleHQpOwotCi0gICAgUmVmUHRyPEltYWdlQnVmZmVyPiBpbWFn
ZUJ1ZmZlcjsKLQotICAgIGlmIChjb250ZXh0LnJlbmRlcmluZ01vZGUoKSA9PSBSZW5kZXJpbmdN
b2RlOjpBY2NlbGVyYXRlZCkKLSAgICAgICAgaW1hZ2VCdWZmZXIgPSBBY2NlbGVyYXRlZEltYWdl
QnVmZmVyOjpjcmVhdGUoaW5mby5waHlzaWNhbFNpemVJbkRldmljZUNvb3JkaW5hdGVzLCBjb250
ZXh0KTsKLSAgICAKLSAgICBpZiAoIWltYWdlQnVmZmVyKQotICAgICAgICBpbWFnZUJ1ZmZlciA9
IFVuYWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGluZm8ucGh5c2ljYWxTaXplSW5EZXZp
Y2VDb29yZGluYXRlcywgY29udGV4dCk7Ci0KLSAgICBpZiAoIWltYWdlQnVmZmVyKQotICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgaW1hZ2VCdWZmZXItPmNvbnRleHQoKS5zY2Fs
ZShpbmZvLnNjYWxlKTsKLSAgICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLnRyYW5zbGF0ZSgtaW5m
by5pbmZsYXRlZFJlY3RJblVzZXJDb29yZGluYXRlcy5sb2NhdGlvbigpKTsKLSAgICByZXR1cm4g
eyB7IGltYWdlQnVmZmVyLnJlbGVhc2VOb25OdWxsKCksIGluZm8uaW5mbGF0ZWRSZWN0SW5Vc2Vy
Q29vcmRpbmF0ZXMgfSB9OwotfQotCi1SZWZQdHI8SW1hZ2VCdWZmZXI+IEltYWdlQnVmZmVyOjpj
cmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3QgRGVzdGlu
YXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQpCi17Ci0gICAgaWYgKHNpemUuaXNFbXB0eSgpKQorICAgIGF1dG8gY2xvbmUgPSBjb250ZXh0
KCkuY3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyKGxvZ2ljYWxTaXplKCksIGNvbG9yU3BhY2Uo
KSk7CisgICAgaWYgKCFjbG9uZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBJbnRT
aXplIHNjYWxlZFNpemUgPSBJbWFnZUJ1ZmZlcjo6Y29tcGF0aWJsZUJ1ZmZlclNpemUoc2l6ZSwg
Y29udGV4dCk7Ci0KLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNv
bXBhdGlibGVCdWZmZXIoc2NhbGVkU2l6ZSwgMSwgY29sb3JTcGFjZSwgY29udGV4dCk7Ci0gICAg
aWYgKCFpbWFnZUJ1ZmZlcikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBpbWFnZUJ1
ZmZlci0+Y29udGV4dCgpLnNjYWxlKHNjYWxlZFNpemUgLyBzaXplKTsKLSAgICByZXR1cm4gaW1h
Z2VCdWZmZXI7Ci19Ci0KLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNv
bXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCByZXNvbHV0aW9uU2Nh
bGUsIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgY29uc3QgR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0KQotewotICAgIHJldHVybiBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNp
emUsIGNvbnRleHQucmVuZGVyaW5nTW9kZSgpLCByZXNvbHV0aW9uU2NhbGUsIGNvbG9yU3BhY2Us
IFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgY2xvbmUtPmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZm
ZXIoY29uc3RfY2FzdDxJbWFnZUJ1ZmZlciY+KCp0aGlzKSwgRmxvYXRQb2ludCgpKTsKKyAgICBy
ZXR1cm4gY2xvbmU7CiB9CiAKIGJvb2wgSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKGNv
bnN0IEZsb2F0U2l6ZSYgc2l6ZSkKQEAgLTE4NSw1OCArMTI2LDYgQEAgRmxvYXRSZWN0IEltYWdl
QnVmZmVyOjpjbGFtcGVkUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgcmV0dXJuIEZs
b2F0UmVjdChyZWN0LmxvY2F0aW9uKCksIGNsYW1wZWRTaXplKHJlY3Quc2l6ZSgpKSk7CiB9CiAK
LUludFNpemUgSW1hZ2VCdWZmZXI6OmNvbXBhdGlibGVCdWZmZXJTaXplKGNvbnN0IEZsb2F0U2l6
ZSYgc2l6ZSwgY29uc3QgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQotewotICAgIC8vIEVubGFy
Z2UgdGhlIGJ1ZmZlciBzaXplIGlmIHRoZSBjb250ZXh0J3MgdHJhbnNmb3JtIGlzIHNjYWxpbmcg
aXQgc28gd2UgbmVlZCBhIGhpZ2hlcgotICAgIC8vIHJlc29sdXRpb24gdGhhbiBvbmUgcGl4ZWwg
cGVyIHVuaXQuCi0gICAgcmV0dXJuIGV4cGFuZGVkSW50U2l6ZShzaXplICogY29udGV4dC5zY2Fs
ZUZhY3RvcigpKTsKLX0KLQotYXV0byBJbWFnZUJ1ZmZlcjo6Y29tcGF0aWJsZUJ1ZmZlckluZm8o
Y29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIC0+
IENvbXBhdGlibGVCdWZmZXJJbmZvCi17Ci0gICAgYXV0byBzY2FsZUZhY3RvciA9IGNvbnRleHQu
c2NhbGVGYWN0b3IoKTsKLSAgICBhdXRvIHNjYWxlZFJlY3QgPSByZWN0OwotICAgIHNjYWxlZFJl
Y3Quc2NhbGUoc2NhbGVGYWN0b3IpOwotICAgIGF1dG8gaW5mbGF0ZWRTY2FsZWRSZWN0ID0gZW5j
bG9zaW5nSW50UmVjdChzY2FsZWRSZWN0KTsKLSAgICBhdXRvIGluZmxhdGVkUmVjdEluVXNlckNv
b3JkaW5hdGVzID0gRmxvYXRSZWN0KGluZmxhdGVkU2NhbGVkUmVjdCk7Ci0KLSAgICAvLyBXZSBk
b24ndCB3YW50IHRvIGFsbG9jYXRlIGh1Z2UgSW1hZ2VCdWZmZXJzIGJlY2F1c2UgdGhleSBjYW4g
dGFrZSBhIGxvdCBvZiBtZW1vcnksCi0gICAgLy8gc28gaWYgdGhlIHNpemUgd291bGQgaGF2ZSBi
ZWVuIHRvbyBiaWcsIGRlY3JlYXNlIHJlc29sdXRpb24gYW5kIHNjYWxlIHRoZSByZXN1bHRpbmcg
Y29udGV4dC4KLSAgICAvLyBUaGlzIHdpbGwgbWVhbiB0aGF0IHRoZSBJbWFnZUJ1ZmZlciB3aWxs
IGxvc2UgcXVhbGl0eSwgYnV0IHdpbGwgc3RpbGwgZ2VuZXJhbGx5IGxvb2sgY29ycmVjdC4KLSAg
ICBjb25zdGV4cHIgaW50IG1heERpbWVuc2lvbiA9IDQwOTY7Ci0gICAgaWYgKGluZmxhdGVkU2Nh
bGVkUmVjdC53aWR0aCgpID4gbWF4RGltZW5zaW9uKSB7Ci0gICAgICAgIC8vIFRoZSBwaXhlbCBn
cmlkcyB3b24ndCBhbGlnbiBhbnkgbW9yZSwgc28gdGhlcmUncyBubyBuZWVkIHRvIHRyeSB0byBo
YW5kbGUgZnJhY3Rpb25zIG9mIHBpeGVscy4KLSAgICAgICAgaW5mbGF0ZWRTY2FsZWRSZWN0LnNl
dFdpZHRoKG1heERpbWVuc2lvbik7Ci0gICAgICAgIGluZmxhdGVkUmVjdEluVXNlckNvb3JkaW5h
dGVzLnNjYWxlKG1heERpbWVuc2lvbiAvIGluZmxhdGVkUmVjdEluVXNlckNvb3JkaW5hdGVzLndp
ZHRoKCksIDEpOwotICAgICAgICBzY2FsZUZhY3Rvci5zZXRXaWR0aChtYXhEaW1lbnNpb24gLyBy
ZWN0LndpZHRoKCkpOwotICAgIH0KLSAgICBpZiAoaW5mbGF0ZWRTY2FsZWRSZWN0LmhlaWdodCgp
ID4gbWF4RGltZW5zaW9uKSB7Ci0gICAgICAgIC8vIFRoZSBwaXhlbCBncmlkcyB3b24ndCBhbGln
biBhbnkgbW9yZSwgc28gdGhlcmUncyBubyBuZWVkIHRvIHRyeSB0byBoYW5kbGUgZnJhY3Rpb25z
IG9mIHBpeGVscy4KLSAgICAgICAgaW5mbGF0ZWRTY2FsZWRSZWN0LnNldEhlaWdodChtYXhEaW1l
bnNpb24pOwotICAgICAgICBpbmZsYXRlZFJlY3RJblVzZXJDb29yZGluYXRlcy5zY2FsZSgxLCBt
YXhEaW1lbnNpb24gLyBpbmZsYXRlZFJlY3RJblVzZXJDb29yZGluYXRlcy5oZWlnaHQoKSk7Ci0g
ICAgICAgIHNjYWxlRmFjdG9yLnNldEhlaWdodChtYXhEaW1lbnNpb24gLyByZWN0LmhlaWdodCgp
KTsKLSAgICB9Ci0KLSAgICBhdXRvIHBoeXNpY2FsU2l6ZUluRGV2aWNlQ29vcmRpbmF0ZXMgPSBp
bmZsYXRlZFNjYWxlZFJlY3Quc2l6ZSgpOwotICAgIGluZmxhdGVkUmVjdEluVXNlckNvb3JkaW5h
dGVzLnNjYWxlKDEuMGYgLyBzY2FsZUZhY3Rvcik7Ci0gICAgcmV0dXJuIHsgV1RGTW92ZShwaHlz
aWNhbFNpemVJbkRldmljZUNvb3JkaW5hdGVzKSwgV1RGTW92ZShpbmZsYXRlZFJlY3RJblVzZXJD
b29yZGluYXRlcyksIHNjYWxlRmFjdG9yIH07Ci19Ci0KLVJlZlB0cjxJbWFnZUJ1ZmZlcj4gSW1h
Z2VCdWZmZXI6OmNvcHlSZWN0VG9CdWZmZXIoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCkKLXsKLSAgICBpZiAocmVjdC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBudWxs
cHRyOwotCi0gICAgSW50U2l6ZSBzY2FsZWRTaXplID0gSW1hZ2VCdWZmZXI6OmNvbXBhdGlibGVC
dWZmZXJTaXplKHJlY3Quc2l6ZSgpLCBjb250ZXh0KTsKLQotICAgIGF1dG8gYnVmZmVyID0gSW1h
Z2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoc2NhbGVkU2l6ZSwgMSwgY29sb3JTcGFj
ZSwgY29udGV4dCk7Ci0gICAgaWYgKCFidWZmZXIpCi0gICAgICAgIHJldHVybiBudWxscHRyOwot
Ci0gICAgYnVmZmVyLT5jb250ZXh0KCkuZHJhd0ltYWdlQnVmZmVyKCp0aGlzLCAtcmVjdC5sb2Nh
dGlvbigpKTsKLSAgICByZXR1cm4gYnVmZmVyOwotfQotCiBSZWZQdHI8TmF0aXZlSW1hZ2U+IElt
YWdlQnVmZmVyOjpzaW5rSW50b05hdGl2ZUltYWdlKFJlZlB0cjxJbWFnZUJ1ZmZlcj4gaW1hZ2VC
dWZmZXIpCiB7CiAgICAgcmV0dXJuIGltYWdlQnVmZmVyLT5zaW5rSW50b05hdGl2ZUltYWdlKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaAppbmRl
eCAwOGQwMjFjZDY4NGUwNjI3M2ZlMWQ3MWFiY2RlOGE0YjQ4M2Y1ZjZjLi44YmY1MjgwYWRmNTQw
Mzg4ODgwY2JmMzY4MGMzNWE2OTg1NTBkNDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJp
Z2h0IChDKSAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgotICog
Q29weXJpZ2h0IChDKSAyMDA3LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICogQ29weXJpZ2h0IChDKSAyMDEwIFRvcmNoIE1vYmlsZSAoQmVpamluZykgQ28uIEx0ZC4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTQ0LDE1ICs0NCw3IEBA
IHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBj
cmVhdGUoY29uc3QgRmxvYXRTaXplJiwgUmVuZGVyaW5nTW9kZSwgU2hvdWxkVXNlRGlzcGxheUxp
c3QsIFJlbmRlcmluZ1B1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwgY29uc3QgRGVzdGlu
YXRpb25Db2xvclNwYWNlJiwgUGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5kb3cqID0gbnVsbHB0
cik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRl
KGNvbnN0IEZsb2F0U2l6ZSYsIFJlbmRlcmluZ01vZGUsIGZsb2F0IHJlc29sdXRpb25TY2FsZSwg
Y29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgUGl4ZWxGb3JtYXQsIGNvbnN0IEhvc3RXaW5k
b3cqID0gbnVsbHB0cik7CiAKLSAgICAvLyBDcmVhdGUgYW4gaW1hZ2UgYnVmZmVyIGNvbXBhdGli
bGUgd2l0aCB0aGUgY29udGV4dCwgd2l0aCBzdWl0YWJsZSByZXNvbHV0aW9uIGZvciBkcmF3aW5n
IGludG8gdGhlIGJ1ZmZlciBhbmQgdGhlbiBpbnRvIHRoaXMgY29udGV4dC4KLSAgICBzdGF0aWMg
UmVmUHRyPEltYWdlQnVmZmVyPiBjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNvbnN0IEZsb2F0U2l6
ZSYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOwotICAgIHN0cnVjdCBDb21wYXRpYmxlQnVmZmVy
RGVzY3JpcHRpb24gewotICAgICAgICBSZWY8SW1hZ2VCdWZmZXI+IGltYWdlQnVmZmVyOwotICAg
ICAgICBGbG9hdFJlY3QgaW5mbGF0ZWRSZWN0SW5Vc2VyQ29vcmRpbmF0ZXM7Ci0gICAgfTsKLSAg
ICBzdGF0aWMgc3RkOjpvcHRpb25hbDxDb21wYXRpYmxlQnVmZmVyRGVzY3JpcHRpb24+IGNyZWF0
ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiByZWN0SW5Vc2VyQ29vcmRpbmF0ZXMs
IGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQ
dHI8SW1hZ2VCdWZmZXI+IGNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY29uc3QgRmxvYXRTaXplJiwg
Y29uc3QgRGVzdGluYXRpb25Db2xvclNwYWNlJiwgY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7Ci0g
ICAgc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb25z
dCBGbG9hdFNpemUmLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIGNvbnN0IERlc3RpbmF0aW9uQ29s
b3JTcGFjZSYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpOworICAgIFJlZlB0cjxJbWFnZUJ1ZmZl
cj4gY2xvbmUoKSBjb25zdDsKIAogICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyBhcmUgdXNlZCB3aGVu
IGNsYW1waW5nIHRoZSBJbWFnZUJ1ZmZlciB3aGljaCBpcyBjcmVhdGVkIGZvciBmaWx0ZXIsIG1h
c2tlciBvciBjbGlwcGVyLgogICAgIHN0YXRpYyBib29sIHNpemVOZWVkc0NsYW1waW5nKGNvbnN0
IEZsb2F0U2l6ZSYpOwpAQCAtNjEsMTUgKzUzLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBGbG9h
dFNpemUgY2xhbXBlZFNpemUoY29uc3QgRmxvYXRTaXplJiwgRmxvYXRTaXplJiBzY2FsZSk7CiAg
ICAgc3RhdGljIEZsb2F0UmVjdCBjbGFtcGVkUmVjdChjb25zdCBGbG9hdFJlY3QmKTsKIAotICAg
IHN0YXRpYyBJbnRTaXplIGNvbXBhdGlibGVCdWZmZXJTaXplKGNvbnN0IEZsb2F0U2l6ZSYsIGNv
bnN0IEdyYXBoaWNzQ29udGV4dCYpOwotICAgIHN0cnVjdCBDb21wYXRpYmxlQnVmZmVySW5mbyB7
Ci0gICAgICAgIEludFNpemUgcGh5c2ljYWxTaXplSW5EZXZpY2VDb29yZGluYXRlczsKLSAgICAg
ICAgRmxvYXRSZWN0IGluZmxhdGVkUmVjdEluVXNlckNvb3JkaW5hdGVzOwotICAgICAgICBGbG9h
dFNpemUgc2NhbGU7Ci0gICAgfTsKLSAgICBzdGF0aWMgQ29tcGF0aWJsZUJ1ZmZlckluZm8gY29t
cGF0aWJsZUJ1ZmZlckluZm8oY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgR3JhcGhpY3NDb250ZXh0
Jik7Ci0gICAgCi0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+SW1hZ2VCdWZmZXIoKSA9IGRl
ZmF1bHQ7CisgICAgdmlydHVhbCB+SW1hZ2VCdWZmZXIoKSA9IGRlZmF1bHQ7CiAKICAgICB2aXJ0
dWFsIHZvaWQgc2V0QmFja2VuZChzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJCYWNrZW5kPiYm
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyQmFja2VuZCgpID0gMDsKQEAgLTExMyw5ICs5
Nyw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFJlZlB0cjxJbWFnZT4gY29weUltYWdlKEJhY2tp
bmdTdG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlLCBQcmVzZXJ2ZVJlc29sdXRpb24gPSBQcmVz
ZXJ2ZVJlc29sdXRpb246Ok5vKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2U+
IGZpbHRlcmVkSW1hZ2UoRmlsdGVyJikgPSAwOwogCi0gICAgLy8gQ3JlYXRlIGFuIGltYWdlIGJ1
ZmZlciBjb21wYXRpYmxlIHdpdGggdGhlIGNvbnRleHQgYW5kIGNvcHkgcmVjdCBmcm9tIHRoaXMg
YnVmZmVyIGludG8gdGhpcyBuZXcgb25lLgotICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY29weVJl
Y3RUb0J1ZmZlcihjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2Um
LCBjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKLQogICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCA9IEZsb2F0UmVjdCgwLCAwLCAtMSwgLTEpLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgPSB7IH0pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0
UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiA9IHsgfSkgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmNwcAppbmRleCA2
ZmZjMjgyYjljYzc1MDQwODg4Y2IzNjRmYjMzMDIwMmZjYjAzYmQwLi4zNzBjN2RjMjg5NmYzOTYy
Y2IzZWQ1MDk4MmRhYjY5OTc0ZjYzMmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHAKQEAg
LTY1LDcgKzY1LDcgQEAgSW1hZ2VEcmF3UmVzdWx0IE5hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZTo6
ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEYKIHZvaWQgTmFtZWRJbWFnZUdl
bmVyYXRlZEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBj
b25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRp
b25zKQogewogI2lmIFVTRShORVdfVEhFTUUpCi0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdl
QnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKHNpemUoKSwgY29udGV4dCk7CisgICAgYXV0
byBpbWFnZUJ1ZmZlciA9IGNvbnRleHQuY3JlYXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyKHNpemUo
KSk7CiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW5kZXJpbmdNb2RlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZW5kZXJpbmdNb2RlLmgKaW5kZXggMDUyYmNj
YTM4MjFmNjk5MDZkOGRhYzU0NzBmODUxYmY2OWU0ZmUzNi4uOTdmMzEzNGVkYWFkMTlhYzExNjdm
ZGI2NTY2YTU2NDg3OWY0MDQ2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUmVuZGVyaW5nTW9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1JlbmRlcmluZ01vZGUuaApAQCAtMzcsNCArMzcsMTAgQEAgZW51bSBjbGFzcyBSZW5k
ZXJpbmdQdXJwb3NlIDogdWludDhfdCB7CiBlbnVtIGNsYXNzIFNob3VsZFVzZURpc3BsYXlMaXN0
IDogYm9vbCB7IE5vLCBZZXMgfTsKIGVudW0gY2xhc3MgUmVuZGVyaW5nTW9kZSA6IGJvb2wgeyBV
bmFjY2VsZXJhdGVkLCBBY2NlbGVyYXRlZCB9OwogCitlbnVtIGNsYXNzIFJlbmRlcmluZ01ldGhv
ZCA6IHVpbnQ4X3QgeworICAgIERlZmF1bHQsCisgICAgTG9jYWwsCisgICAgRGlzcGxheUxpc3QK
K307CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKaW5kZXggMGUwNGNi
YmM0MmUyN2JjYzlhNTM0ZmQwZmFkYzIwN2ZlY2QzMWJkMS4uZDE5MGNhOTQyNDdmMTkyYjZlYmJl
ZmExMWVkZWViYjcwMjQ1NDk0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKQEAgLTIzMiwxNCArMjMyLDE1
IEBAIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6dXBkYXRlQ2FjaGVkSW1hZ2VJZk5lZWRlZChHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0CiAKICAgICAvLyBDYWNoZSB0aGUgUERGIGltYWdl
IG9ubHkgaWYgdGhlIHNpemUgb2YgdGhlIG5ldyBpbWFnZSB3b24ndCBleGNlZWQgdGhlIGNhY2hl
IHRocmVzaG9sZC4KICAgICBpZiAobV9wZGZJbWFnZUNhY2hpbmdQb2xpY3kgPT0gUERGSW1hZ2VD
YWNoaW5nUG9saWN5OjpCZWxvd01lbW9yeUxpbWl0KSB7Ci0gICAgICAgIEludFNpemUgc2NhbGVk
U2l6ZSA9IEltYWdlQnVmZmVyOjpjb21wYXRpYmxlQnVmZmVyU2l6ZShjYWNoZWRJbWFnZVNpemUs
IGNvbnRleHQpOworICAgICAgICBhdXRvIHNjYWxlZFNpemUgPSBjb250ZXh0LmNvbXBhdGlibGVJ
bWFnZUJ1ZmZlclNpemUoY2FjaGVkSW1hZ2VTaXplKTsKICAgICAgICAgaWYgKHNfYWxsRGVjb2Rl
ZERhdGFTaXplICsgc2NhbGVkU2l6ZS51bmNsYW1wZWRBcmVhKCkgKiA0IC0gbV9jYWNoZWRCeXRl
cyA+IHNfbWF4RGVjb2RlZERhdGFTaXplKSB7CiAgICAgICAgICAgICBkZXN0cm95RGVjb2RlZERh
dGEoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KIAotICAgIG1fY2Fj
aGVkSW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjYWNo
ZWRJbWFnZVNpemUsIGNvbnRleHQpOworICAgIC8vIENyZWF0ZSBhIGxvY2FsIEltYWdlQnVmZmVy
IGJlY2F1c2UgZGVjb2RpbmcgdGhlIFBERiBpbWFnZXMgaGFzIHRvIGhhcHBlbiBpbiBXZWJQcm9j
ZXNzLgorICAgIG1fY2FjaGVkSW1hZ2VCdWZmZXIgPSBjb250ZXh0LmNyZWF0ZUNvbXBhdGlibGVJ
bWFnZUJ1ZmZlcihjYWNoZWRJbWFnZVNpemUsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
LCBSZW5kZXJpbmdNZXRob2Q6OkxvY2FsKTsKICAgICBpZiAoIW1fY2FjaGVkSW1hZ2VCdWZmZXIp
IHsKICAgICAgICAgZGVzdHJveURlY29kZWREYXRhKCk7CiAgICAgICAgIHJldHVybjsKQEAgLTI5
Miw3ICsyOTMsNyBAQCBJbWFnZURyYXdSZXN1bHQgUERGRG9jdW1lbnRJbWFnZTo6ZHJhdyhHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdAogICAgICAgICAgICAgLy8gc2Nh
bGFyID0gc3FydChtYXggbnVtYmVyIG9mIHBpeGVscyAvICh3aWR0aCAqIGhlaWdodCkpCiAgICAg
ICAgICAgICBhdXRvIHNjYWxhciA9IHN0ZDo6bWluKDEuZiwgc3RkOjpzcXJ0KHN0YXRpY19jYXN0
PGZsb2F0PihzX21heENhY2hlZEltYWdlQXJlYSkgLyAoZHN0UmVjdC53aWR0aCgpICogZHN0UmVj
dC5oZWlnaHQoKSkpKTsKICAgICAgICAgICAgIEZsb2F0UmVjdCBsb2NhbERlc3RpbmF0aW9uUmVj
dChGbG9hdFBvaW50KCksIGRzdFJlY3Quc2l6ZSgpICogc2NhbGFyKTsKLSAgICAgICAgICAgIGlm
IChhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIo
bG9jYWxEZXN0aW5hdGlvblJlY3Quc2l6ZSgpLCBjb250ZXh0KSkgeworICAgICAgICAgICAgaWYg
KGF1dG8gaW1hZ2VCdWZmZXIgPSBjb250ZXh0LmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihs
b2NhbERlc3RpbmF0aW9uUmVjdC5zaXplKCksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
LCBSZW5kZXJpbmdNZXRob2Q6OkxvY2FsKSkgewogICAgICAgICAgICAgICAgIGF1dG8mIGJ1ZmZl
ckNvbnRleHQgPSBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpOwogICAgICAgICAgICAgICAgIHRyYW5z
Zm9ybUNvbnRleHRGb3JQYWludGluZyhidWZmZXJDb250ZXh0LCBsb2NhbERlc3RpbmF0aW9uUmVj
dCwgc3JjUmVjdCk7CiAgICAgICAgICAgICAgICAgZHJhd1BERlBhZ2UoYnVmZmVyQ29udGV4dCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9E
cmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb3JldGV4dC9EcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAKaW5kZXggYzI5
NWVmZTgzNDdiMDQ1YmUzMWRiMzY3NjczZWU3Zjk5NWIxYTRjMy4uYWI5N2EzZjdkODM3YzQ3NjE0
NjA4ODY2ODRjYjJhMDUyZmE4Yjc4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29yZXRleHQvRHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0RyYXdHbHlwaHNSZWNv
cmRlckNvcmVUZXh0LmNwcApAQCAtMzc0LDE0ICszNzQsMTkgQEAgdm9pZCBEcmF3R2x5cGhzUmVj
b3JkZXI6OnJlY29yZERyYXdJbWFnZShDR1JlbmRlcmluZ1N0YXRlUmVmLCBDR0dTdGF0ZVJlZiBn
c3RhdGUKIHZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpkcmF3T1RTVkdSdW4oY29uc3QgRm9udCYg
Zm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBHbHlwaEJ1ZmZlckFk
dmFuY2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIHN0
YXJ0UG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUpCiB7CiAgICAgRmxvYXRQ
b2ludCBwZW5Qb3NpdGlvbiA9IHN0YXJ0UG9pbnQ7CisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbnVtR2x5cGhzOyArK2kpIHsKICAgICAgICAgYXV0byBib3VuZHMgPSBmb250LmJvdW5k
c0ZvckdseXBoKGdseXBoc1tpXSk7Ci0gICAgICAgIGlmIChhdXRvIGltYWdlQnVmZmVyRGVzY3Jp
cHRpb24gPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihib3VuZHMsIG1fb3du
ZXIpKSB7Ci0gICAgICAgICAgICBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhpbWFnZUJ1ZmZlckRl
c2NyaXB0aW9uLT5pbWFnZUJ1ZmZlci0+Y29udGV4dCgpLCBmb250LCBnbHlwaHMgKyBpLCBhZHZh
bmNlcyArIGksIDEsIEZsb2F0UG9pbnQoKSwgc21vb3RoaW5nTW9kZSk7Ci0gICAgICAgICAgICBh
dXRvIGRlc3RpbmF0aW9uUmVjdCA9IGltYWdlQnVmZmVyRGVzY3JpcHRpb24tPmluZmxhdGVkUmVj
dEluVXNlckNvb3JkaW5hdGVzOworCisgICAgICAgIC8vIENyZWF0ZSBhIGxvY2FsIEltYWdlQnVm
ZmVyIGJlY2F1c2UgZGVjb2RpbmcgdGhlIFNWRyBmb250cyBoYXMgdG8gaGFwcGVuIGluIFdlYlBy
b2Nlc3MuCisgICAgICAgIGlmIChhdXRvIGltYWdlQnVmZmVyID0gbV9vd25lci5jcmVhdGVDb21w
YXRpYmxlSW1hZ2VCdWZmZXIoYm91bmRzLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwg
UmVuZGVyaW5nTWV0aG9kOjpMb2NhbCkpIHsKKyAgICAgICAgICAgIEZvbnRDYXNjYWRlOjpkcmF3
R2x5cGhzKGltYWdlQnVmZmVyLT5jb250ZXh0KCksIGZvbnQsIGdseXBocyArIGksIGFkdmFuY2Vz
ICsgaSwgMSwgRmxvYXRQb2ludCgpLCBzbW9vdGhpbmdNb2RlKTsKKworICAgICAgICAgICAgRmxv
YXRSZWN0IGRlc3RpbmF0aW9uUmVjdCA9IGVuY2xvc2luZ0ludFJlY3QoYm91bmRzKTsKICAgICAg
ICAgICAgIGRlc3RpbmF0aW9uUmVjdC5tb3ZlQnkocGVuUG9zaXRpb24pOwotICAgICAgICAgICAg
bV9vd25lci5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXJEZXNjcmlwdGlvbi0+aW1hZ2VCdWZm
ZXIsIGRlc3RpbmF0aW9uUmVjdCk7CisgICAgICAgICAgICBtX293bmVyLmRyYXdJbWFnZUJ1ZmZl
cigqaW1hZ2VCdWZmZXIsIGRlc3RpbmF0aW9uUmVjdCk7CiAgICAgICAgIH0KKwogICAgICAgICBw
ZW5Qb3NpdGlvbi5tb3ZlKHNpemUoYWR2YW5jZXNbaV0pKTsKICAgICB9CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXggODlmM2QzNTNkYTdiYjQxNzExOGZm
NzE4OGNlZGMwN2MwOGJjYzg0Ny4uOGYyNmU1NzM1ZWQ1OTRiOWM3ZTA4YjZhZDRmMGVjYWJkOTc3
NmJjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcApAQCAtNTA3
LDYgKzUwNywxNCBAQCBHcmFwaGljc0NvbnRleHQ6OkNsaXBUb0RyYXdpbmdDb21tYW5kc1Jlc3Vs
dCBSZWNvcmRlcjo6Y2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbgogICAgIHJldHVybiBDbGlwVG9E
cmF3aW5nQ29tbWFuZHNSZXN1bHQ6OlN1Y2Nlc3M7CiB9CiAKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4g
UmVjb3JkZXI6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3Qg
RGVzdGluYXRpb25Db2xvclNwYWNlJiBjb2xvclNwYWNlLCBSZW5kZXJpbmdNb2RlIHJlbmRlcmlu
Z01vZGUsIFJlbmRlcmluZ01ldGhvZCByZW5kZXJpbmdNZXRob2QpIGNvbnN0Cit7CisgICAgaWYg
KHJlbmRlcmluZ01ldGhvZCA9PSBSZW5kZXJpbmdNZXRob2Q6OkRlZmF1bHQpCisgICAgICAgIHJl
bmRlcmluZ01ldGhvZCA9IFJlbmRlcmluZ01ldGhvZDo6RGlzcGxheUxpc3Q7CisKKyAgICByZXR1
cm4gR3JhcGhpY3NDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCBjb2xvclNwYWNlLCBy
ZW5kZXJpbmdNb2RlLCByZW5kZXJpbmdNZXRob2QpOworfQorCiAjaWYgRU5BQkxFKFZJREVPKQog
dm9pZCBSZWNvcmRlcjo6cGFpbnRGcmFtZUZvck1lZGlhKE1lZGlhUGxheWVyJiBwbGF5ZXIsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24pCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVjb3JkZXIuaAppbmRleCA0MGU3YTBjMjU2MDM3MTM1OWNhZWRkZmRkNTM5MjA1ZWQxNTg3ZTk4
Li5kODhjNjZkYjEwNGM2NGRkYWU4MjFhNWQxNzAzMDg0YmZjMjk3ZmQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKQEAgLTE4NSw2ICsxODUsOCBAQCBwcm90ZWN0ZWQ6
CiAgICAgY29uc3QgQ29udGV4dFN0YXRlJiBjdXJyZW50U3RhdGUoKSBjb25zdDsKICAgICBDb250
ZXh0U3RhdGUmIGN1cnJlbnRTdGF0ZSgpOwogCisgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPElt
YWdlQnVmZmVyPiBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmLCBjb25zdCBEZXN0
aW5hdGlvbkNvbG9yU3BhY2UmLCBSZW5kZXJpbmdNb2RlLCBSZW5kZXJpbmdNZXRob2QpIGNvbnN0
IG92ZXJyaWRlOworCiBwcml2YXRlOgogICAgIGJvb2wgaGFzUGxhdGZvcm1Db250ZXh0KCkgY29u
c3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCog
cGxhdGZvcm1Db250ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVwbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCmluZGV4IGIxODhjZWFiNDI2OTZmZmUy
MDEyMDlhOTAwYWI3MDA5OTUwYjg1ZTUuLmJhZWQxNGNlMGFkN2M5YzA0Yzk1YjBlNzE1MDUyYTY1
MGUwNzlhOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKQEAg
LTE1NCw3ICsxNTQsNyBAQCBzdGQ6OnBhaXI8c3RkOjpvcHRpb25hbDxTdG9wUmVwbGF5UmVhc29u
Piwgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aQogICAgICAgICBpZiAobV9t
YXNrSW1hZ2VCdWZmZXIpCiAgICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpJ
bnZhbGlkSXRlbU9yRXh0ZW50LCBzdGQ6Om51bGxvcHQgfTsKICAgICAgICAgYXV0byYgY2xpcEl0
ZW0gPSBpdGVtLmdldDxCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcz4oKTsKLSAgICAgICAgbV9t
YXNrSW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjbGlw
SXRlbS5kZXN0aW5hdGlvbigpLnNpemUoKSwgY2xpcEl0ZW0uY29sb3JTcGFjZSgpLCBtX2NvbnRl
eHQpOworICAgICAgICBtX21hc2tJbWFnZUJ1ZmZlciA9IG1fY29udGV4dC5jcmVhdGVDb21wYXRp
YmxlSW1hZ2VCdWZmZXIoY2xpcEl0ZW0uZGVzdGluYXRpb24oKS5zaXplKCksIGNsaXBJdGVtLmNv
bG9yU3BhY2UoKSk7CiAgICAgICAgIGlmICghbV9tYXNrSW1hZ2VCdWZmZXIpCiAgICAgICAgICAg
ICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpPdXRPZk1lbW9yeSwgc3RkOjpudWxsb3B0IH07
CiAgICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KaW5kZXggZDc5ZTg1YWEyYmM5NzU4NzJhZmZi
MWQ3MDcxOTRkZGVkYmQzOTA5YS4uNzQxOTE1YzBjMDNkNDFiMzNiNTczOWM5NjQ0YzM3NzI2NWVl
MWNmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQpAQCAtNzM0LDcg
KzczNCw3IEBAIGJvb2wgVGhlbWVNYWM6OmRyYXdDZWxsT3JGb2N1c1JpbmdXaXRoVmlld0ludG9D
b250ZXh0KE5TQ2VsbCAqY2VsbCwgR3JhcGhpY3NDb250CiAKICAgICBpZiAodXNlSW1hZ2VCdWZm
ZXIpIHsKICAgICAgICAgTlNSZWN0IGltYWdlQnVmZmVyRHJhd1JlY3QgPSBOU1JlY3QoRmxvYXRS
ZWN0KGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVXaWR0aCwgYnV0dG9uRm9jdXNSZWN0T3V0bGluZVdp
ZHRoLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpKTsKLSAgICAgICAgYXV0byBpbWFnZUJ1
ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKHJlY3Quc2l6ZSgpICsg
MiAqIEZsb2F0U2l6ZShidXR0b25Gb2N1c1JlY3RPdXRsaW5lV2lkdGgsIGJ1dHRvbkZvY3VzUmVj
dE91dGxpbmVXaWR0aCksIGRldmljZVNjYWxlRmFjdG9yLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IoKSwgY29udGV4dCk7CisgICAgICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBjb250ZXh0LmNy
ZWF0ZUltYWdlQnVmZmVyKHJlY3Quc2l6ZSgpICsgMiAqIEZsb2F0U2l6ZShidXR0b25Gb2N1c1Jl
Y3RPdXRsaW5lV2lkdGgsIGJ1dHRvbkZvY3VzUmVjdE91dGxpbmVXaWR0aCksIHsgZGV2aWNlU2Nh
bGVGYWN0b3IsIGRldmljZVNjYWxlRmFjdG9yIH0pOwogICAgICAgICBpZiAoIWltYWdlQnVmZmVy
KQogICAgICAgICAgICAgcmV0dXJuIG5lZWRzUmVwYWludDsKICAgICAgICAgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKaW5kZXggNTI4
ZjAyMjA0YTYxODZmOTg1MWEzMjRjNTBlOWI2MWNiMjUyMDM3NC4uMTliYjBjNDJmYmM1ZmMyMTM1
NzYwNzgyMjY1N2ZiYjYyYWY4NzI4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCkBAIC04OTQsNyArODk0LDcgQEAgdm9pZCBSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQYWludEluZm8m
IHBhaW50SW5mbywgY28KICAgICAgICAgbWFza1JlY3QuaW50ZXJzZWN0KHNuYXBSZWN0VG9EZXZp
Y2VQaXhlbHMocGFpbnRJbmZvLnJlY3QsIGRldmljZVNjYWxlRmFjdG9yKSk7CiAKICAgICAgICAg
Ly8gTm93IGNyZWF0ZSB0aGUgbWFzay4KLSAgICAgICAgbWFza0ltYWdlID0gSW1hZ2VCdWZmZXI6
OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIobWFza1JlY3Quc2l6ZSgpLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IoKSwgY29udGV4dCk7CisgICAgICAgIG1hc2tJbWFnZSA9IGNvbnRleHQuY3Jl
YXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyKG1hc2tSZWN0LnNpemUoKSk7CiAgICAgICAgIGlmICgh
bWFza0ltYWdlKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBwYWludE1hc2tGb3JUZXh0
RmlsbEJveChtYXNrSW1hZ2UuZ2V0KCksIG1hc2tSZWN0LCBib3gsIHNjcm9sbGVkUGFpbnRSZWN0
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IGZmYWRkMDFk
ZjRkMGNiNWM1MWE5YjIxNThhMzI5OGNmMDU0YmQwMTMuLjYzMDczZTljMWNlMzVmNzcxZjk4NDll
Y2RiYjU0NTk2ZDBlYzg5MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcApAQCAtMzI3Niw3ICszMjc2LDcgQEAgR3JhcGhpY3NDb250ZXh0KiBSZW5kZXJMYXllcjo6
c2V0dXBGaWx0ZXJzKEdyYXBoaWNzQ29udGV4dCYgZGVzdGluYXRpb25Db250ZXh0LAogCiAgICAg
YXV0byByb290UmVsYXRpdmVCb3VuZHMgPSBjYWxjdWxhdGVMYXllckJvdW5kcyhwYWludGluZ0lu
Zm8ucm9vdExheWVyLCBvZmZzZXRGcm9tUm9vdCwgeyB9KTsKIAotICAgIEdyYXBoaWNzQ29udGV4
dCogZmlsdGVyQ29udGV4dCA9IHBhaW50aW5nRmlsdGVycy0+YmVnaW5GaWx0ZXJFZmZlY3QocmVu
ZGVyZXIoKSwgZW5jbG9zaW5nSW50UmVjdChyb290UmVsYXRpdmVCb3VuZHMpLCBlbmNsb3NpbmdJ
bnRSZWN0KHBhaW50aW5nSW5mby5wYWludERpcnR5UmVjdCksIGVuY2xvc2luZ0ludFJlY3QoZmls
dGVyUmVwYWludFJlY3QpKTsKKyAgICBHcmFwaGljc0NvbnRleHQqIGZpbHRlckNvbnRleHQgPSBw
YWludGluZ0ZpbHRlcnMtPmJlZ2luRmlsdGVyRWZmZWN0KHJlbmRlcmVyKCksIGRlc3RpbmF0aW9u
Q29udGV4dCwgZW5jbG9zaW5nSW50UmVjdChyb290UmVsYXRpdmVCb3VuZHMpLCBlbmNsb3NpbmdJ
bnRSZWN0KHBhaW50aW5nSW5mby5wYWludERpcnR5UmVjdCksIGVuY2xvc2luZ0ludFJlY3QoZmls
dGVyUmVwYWludFJlY3QpKTsKICAgICBpZiAoIWZpbHRlckNvbnRleHQpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJh
Y2tpbmcuY3BwCmluZGV4IDlhZjVmYjA1ZDEzNjFiYmUzMDFiZmE4MjZjMjIzOWZjNTFjNzgxMWIu
Ljg3NjFjNWYwMGJiZWVmZDU3YTJjODBiMzYzZGNiOWQ0ZDU1Y2ZhNWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0zMzMyLDcgKzMz
MzIsNyBAQCBzdGF0aWMgUmVmUHRyPFBhdHRlcm4+IHBhdHRlcm5Gb3JEZXNjcmlwdGlvbihQYXR0
ZXJuRGVzY3JpcHRpb24gZGVzY3JpcHRpb24sIEZsbwogewogICAgIGNvbnN0IEZsb2F0U2l6ZSB0
aWxlU2l6ZSB7IDMyLCAxOCB9OwogCi0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVy
OjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKHRpbGVTaXplLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IoKSwgZGVzdENvbnRleHQpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBkZXN0Q29udGV4
dC5jcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIodGlsZVNpemUpOwogICAgIGlmICghaW1hZ2VC
dWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuY3BwCmluZGV4IDZkZTRmZjAxN2I5MjU3YTliNmIx
MDczNmYxYzRlMTg5MWE4ZTc1YTAuLjViYTk0Y2ZkNWRiYjFlNDRiNWZiZDNjNWJjMTFhZDE5YWVh
ZjhmNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZp
bHRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRl
cnMuY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMiBBZG9iZSBT
eXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAo
QykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTEyOSwxOSArMTI5LDE2IEBAIEdyYXBoaWNzQ29udGV4dCog
UmVuZGVyTGF5ZXJGaWx0ZXJzOjppbnB1dENvbnRleHQoKQogICAgIHJldHVybiBtX3NvdXJjZUlt
YWdlID8gJm1fc291cmNlSW1hZ2UtPmNvbnRleHQoKSA6IG51bGxwdHI7CiB9CiAKLXZvaWQgUmVu
ZGVyTGF5ZXJGaWx0ZXJzOjphbGxvY2F0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKCkKK3ZvaWQgUmVu
ZGVyTGF5ZXJGaWx0ZXJzOjphbGxvY2F0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCkKIHsKICAgICBhdXRvJiBmaWx0ZXIgPSAqbV9maWx0ZXI7CiAgICAgYXV0
byBsb2dpY2FsU2l6ZSA9IGZpbHRlci5zY2FsZWRCeUZpbHRlclNjYWxlKG1fZmlsdGVyUmVnaW9u
LnNpemUoKSk7CiAKLSAgICBpZiAoIW1fc291cmNlSW1hZ2UgfHwgbV9zb3VyY2VJbWFnZS0+bG9n
aWNhbFNpemUoKSAhPSBsb2dpY2FsU2l6ZSkgewotICAgICAgICBtX3NvdXJjZUltYWdlID0gSW1h
Z2VCdWZmZXI6OmNyZWF0ZShsb2dpY2FsU2l6ZSwgZmlsdGVyLnJlbmRlcmluZ01vZGUoKSwgU2hv
dWxkVXNlRGlzcGxheUxpc3Q6Ok5vLCBSZW5kZXJpbmdQdXJwb3NlOjpET00sIDEsIERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgsIG1fbGF5ZXIucmVuZGVy
ZXIoKS5ob3N0V2luZG93KCkpOwotICAgICAgICBpZiAoYXV0byBjb250ZXh0ID0gaW5wdXRDb250
ZXh0KCkpCi0gICAgICAgICAgICBjb250ZXh0LT5zY2FsZShmaWx0ZXIuZmlsdGVyU2NhbGUoKSk7
Ci0gICAgfQorICAgIGlmICghbV9zb3VyY2VJbWFnZSB8fCBtX3NvdXJjZUltYWdlLT5sb2dpY2Fs
U2l6ZSgpICE9IGxvZ2ljYWxTaXplKQorICAgICAgICBtX3NvdXJjZUltYWdlID0gY29udGV4dC5j
cmVhdGVJbWFnZUJ1ZmZlcihtX2ZpbHRlclJlZ2lvbi5zaXplKCksIGZpbHRlci5maWx0ZXJTY2Fs
ZSgpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgZmlsdGVyLnJlbmRlcmluZ01vZGUo
KSk7CiB9CiAKLUdyYXBoaWNzQ29udGV4dCogUmVuZGVyTGF5ZXJGaWx0ZXJzOjpiZWdpbkZpbHRl
ckVmZmVjdChSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgTGF5b3V0UmVjdCYgZmlsdGVy
Qm94UmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgZGlydHlSZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBs
YXllclJlcGFpbnRSZWN0KQorR3JhcGhpY3NDb250ZXh0KiBSZW5kZXJMYXllckZpbHRlcnM6OmJl
Z2luRmlsdGVyRWZmZWN0KFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IExheW91dFJlY3QmIGZpbHRlckJveFJlY3QsIGNvbnN0IExheW91dFJl
Y3QmIGRpcnR5UmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgbGF5ZXJSZXBhaW50UmVjdCkKIHsKICAg
ICBpZiAoIW1fZmlsdGVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE5Myw3ICsxOTAs
NyBAQCBHcmFwaGljc0NvbnRleHQqIFJlbmRlckxheWVyRmlsdGVyczo6YmVnaW5GaWx0ZXJFZmZl
Y3QoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsCiAgICAgcmVzZXREaXJ0eVNvdXJjZVJlY3QoKTsK
IAogICAgIGZpbHRlci5zZXRGaWx0ZXJSZWdpb24obV9maWx0ZXJSZWdpb24pOwotICAgIGFsbG9j
YXRlQmFja2luZ1N0b3JlSWZOZWVkZWQoKTsKKyAgICBhbGxvY2F0ZUJhY2tpbmdTdG9yZUlmTmVl
ZGVkKGNvbnRleHQpOwogCiAgICAgYXV0byogc291cmNlR3JhcGhpY3NDb250ZXh0ID0gaW5wdXRD
b250ZXh0KCk7CiAgICAgaWYgKCFzb3VyY2VHcmFwaGljc0NvbnRleHQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmgKaW5kZXggYjBjYjc3YzhlMTA1YzRi
ZTA3ZjY2ZTY5MjQ3MTczYmM4ZTVlM2E5ZS4uMDUxM2M4ODViNDBiNzVlMDEzMmYzZWFkZmVmNjBj
Nzg2Nzg5YjlkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyRmlsdGVycy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZp
bHRlcnMuaApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQWRvYmUg
U3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEzLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC02MywxNCArNjMsMTQgQEAgcHVibGljOgogICAgIC8vIFBl
ciByZW5kZXIKICAgICBMYXlvdXRSZWN0IHJlcGFpbnRSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9y
ZXBhaW50UmVjdDsgfQogCi0gICAgR3JhcGhpY3NDb250ZXh0KiBiZWdpbkZpbHRlckVmZmVjdChS
ZW5kZXJFbGVtZW50JiwgY29uc3QgTGF5b3V0UmVjdCYgZmlsdGVyQm94UmVjdCwgY29uc3QgTGF5
b3V0UmVjdCYgZGlydHlSZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBsYXllclJlcGFpbnRSZWN0KTsK
KyAgICBHcmFwaGljc0NvbnRleHQqIGJlZ2luRmlsdGVyRWZmZWN0KFJlbmRlckVsZW1lbnQmLCBH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBMYXlvdXRSZWN0JiBmaWx0ZXJCb3hSZWN0LCBjb25zdCBM
YXlvdXRSZWN0JiBkaXJ0eVJlY3QsIGNvbnN0IExheW91dFJlY3QmIGxheWVyUmVwYWludFJlY3Qp
OwogICAgIHZvaWQgYXBwbHlGaWx0ZXJFZmZlY3QoR3JhcGhpY3NDb250ZXh0JiBkZXN0aW5hdGlv
bkNvbnRleHQpOwogCiBwcml2YXRlOgogICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVz
b3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKICAgICB2b2lkIHJlc2V0
RGlydHlTb3VyY2VSZWN0KCkgeyBtX2RpcnR5U291cmNlUmVjdCA9IExheW91dFJlY3QoKTsgfQog
ICAgIEdyYXBoaWNzQ29udGV4dCogaW5wdXRDb250ZXh0KCk7Ci0gICAgdm9pZCBhbGxvY2F0ZUJh
Y2tpbmdTdG9yZUlmTmVlZGVkKCk7CisgICAgdm9pZCBhbGxvY2F0ZUJhY2tpbmdTdG9yZUlmTmVl
ZGVkKEdyYXBoaWNzQ29udGV4dCYpOwogCiAgICAgUmVuZGVyTGF5ZXImIG1fbGF5ZXI7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNvY29hLm1tIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQ29jb2EubW0KaW5kZXggMWE2Njcz
MjI3MjJhZDM4ZmMxNTE0YmJiMTE5ZWRjZTNhOGVmNzNmMy4uYWJkNGMxZGIxMzE0ZDQ0MjFiNzMy
MmFhODU3NTFhZWIyZjU5M2FkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lQ29jb2EubW0KQEAgLTE1NCw3ICsxNTQsNyBAQCBib29sIFJlbmRlclRoZW1lQ29jb2E6
OnBhaW50QXBwbGVQYXlCdXR0b24oY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgY29uc3Qg
UAogewogICAgIGF1dG8mIGRlc3RpbmF0aW9uQ29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCk7
CiAKLSAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVC
dWZmZXIocGFpbnRSZWN0LnNpemUoKSwgZGVzdGluYXRpb25Db250ZXh0KTsKKyAgICBhdXRvIGlt
YWdlQnVmZmVyID0gZGVzdGluYXRpb25Db250ZXh0LmNyZWF0ZUNvbXBhdGlibGVJbWFnZUJ1ZmZl
cihwYWludFJlY3Quc2l6ZSgpKTsKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQpp
bmRleCA2Yzk0ZTkyZTBmZmY4NDAxM2YxYTZlYzY4MjljN2U5MDBhMjAwNzhmLi5lNDdhNjZkMGYz
MGYyYWE0N2MwNDQ4YjFkMWRkNGE0MTZiZmM2NjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lTWFjLm1tCkBAIC05OTYsNyArOTk2LDcgQEAgdm9pZCBSZW5kZXJUaGVt
ZU1hYzo6cGFpbnRMaXN0QnV0dG9uRm9ySW5wdXQoY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBHcmFw
aGljc0NvbnQKIAogICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gby5kb2N1bWVudCgpLmRl
dmljZVNjYWxlRmFjdG9yKCk7CiAKLSAgICBhdXRvIGNvbWJvQm94SW1hZ2VCdWZmZXIgPSBJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjb21ib0JveFNpemUsIGRldmljZVNjYWxl
RmFjdG9yLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgY29udGV4dCk7CisgICAgYXV0
byBjb21ib0JveEltYWdlQnVmZmVyID0gY29udGV4dC5jcmVhdGVJbWFnZUJ1ZmZlcihjb21ib0Jv
eFNpemUsIHsgZGV2aWNlU2NhbGVGYWN0b3IsIGRldmljZVNjYWxlRmFjdG9yIH0pOwogICAgIGlm
ICghY29tYm9Cb3hJbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCkBAIC0xMDIwLDcgKzEw
MjAsNyBAQCB2b2lkIFJlbmRlclRoZW1lTWFjOjpwYWludExpc3RCdXR0b25Gb3JJbnB1dChjb25z
dCBSZW5kZXJPYmplY3QmIG8sIEdyYXBoaWNzQ29udAogICAgICAgICAoX19icmlkZ2UgTlNTdHJp
bmcgKilrQ1VJVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbktleSA6IChfX2JyaWRnZSBOU1N0
cmluZyAqKWtDVUlVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uTGVmdFRvUmlnaHQsCiAgICAg
fV07CiAKLSAgICBhdXRvIGNvbWJvQm94QnV0dG9uSW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihkZXNpcmVkQ29tYm9Cb3hCdXR0b25TaXplLCBkZXZpY2VT
Y2FsZUZhY3RvciwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIGNvbnRleHQpOworICAg
IGF1dG8gY29tYm9Cb3hCdXR0b25JbWFnZUJ1ZmZlciA9IGNvbnRleHQuY3JlYXRlSW1hZ2VCdWZm
ZXIoZGVzaXJlZENvbWJvQm94QnV0dG9uU2l6ZSwgeyBkZXZpY2VTY2FsZUZhY3RvciwgZGV2aWNl
U2NhbGVGYWN0b3IgfSk7CiAgICAgaWYgKCFjb21ib0JveEJ1dHRvbkltYWdlQnVmZmVyKQogICAg
ICAgICByZXR1cm47CiAKQEAgLTEzNzksNyArMTM3OSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVNYWM6
OnBhaW50UHJvZ3Jlc3NCYXIoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJPYmplY3QsIGNvbnN0
IFBhCiAgICAgY29uc3QgYXV0byYgcmVuZGVyUHJvZ3Jlc3MgPSBkb3duY2FzdDxSZW5kZXJQcm9n
cmVzcz4ocmVuZGVyT2JqZWN0KTsKICAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IHJlbmRl
ck9iamVjdC5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCk7CiAgICAgYm9vbCBpc0luZGV0
ZXJtaW5hdGUgPSByZW5kZXJQcm9ncmVzcy5wb3NpdGlvbigpIDwgMDsKLSAgICBhdXRvIGltYWdl
QnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoaW5mbGF0ZWRSZWN0
LnNpemUoKSwgZGV2aWNlU2NhbGVGYWN0b3IsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigp
LCBwYWludEluZm8uY29udGV4dCgpKTsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gcGFpbnRJbmZv
LmNvbnRleHQoKS5jcmVhdGVJbWFnZUJ1ZmZlcihpbmZsYXRlZFJlY3Quc2l6ZSgpLCB7IGRldmlj
ZVNjYWxlRmFjdG9yLCBkZXZpY2VTY2FsZUZhY3RvciB9KTsKICAgICBpZiAoIWltYWdlQnVmZmVy
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCmluZGV4IGRhMGQ1NmNk
MjcwOTA0NjQ3OGQwMjI0ZTgyMzA0MjBhMzEyNmFkYTAuLjg3YTFhZTU5MWE1NzAyZDc5MjdjYjhj
NjhlNTk1ZjRjYjBmMGNiNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAKQEAgLTMsNiArMyw3IEBACiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggUm9iIEJ1aXMgPGJ1
aXNAa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQg
MjAwOS0yMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDExIERp
cmsgU2NodWx6ZSA8a3JpdEB3ZWJraXQub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMTUyLDkg
KzE1MywxNiBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6YXBwbHlDbGlwcGluZ1Rv
Q29udGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAgICAgICAgIHJldHVybiB0cnVlOwog
CiAgICAgQWZmaW5lVHJhbnNmb3JtIGFic29sdXRlVHJhbnNmb3JtID0gU1ZHUmVuZGVyaW5nQ29u
dGV4dDo6Y2FsY3VsYXRlVHJhbnNmb3JtYXRpb25Ub091dGVybW9zdENvb3JkaW5hdGVTeXN0ZW0o
cmVuZGVyZXIpOworCisgICAgLy8gSWdub3JlIDJEIHJvdGF0aW9uLCBhcyBpdCBkb2Vzbid0IGFm
ZmVjdCB0aGUgc2l6ZSBvZiB0aGUgbWFzay4KKyAgICBGbG9hdFNpemUgc2NhbGUoYWJzb2x1dGVU
cmFuc2Zvcm0ueFNjYWxlKCksIGFic29sdXRlVHJhbnNmb3JtLnlTY2FsZSgpKTsKKworICAgIC8v
IERldGVybWluZSBzY2FsZSBmYWN0b3IgZm9yIHRoZSBjbGlwcGVyLiBUaGUgc2l6ZSBvZiBpbnRl
cm1lZGlhdGUgSW1hZ2VCdWZmZXJzIHNob3VsZG4ndCBiZSBiaWdnZXIgdGhhbiBrTWF4RmlsdGVy
U2l6ZS4KKyAgICBJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcob2JqZWN0Qm91bmRpbmdC
b3guc2l6ZSgpLCBzY2FsZSk7CisKICAgICBpZiAoIWNsaXBwZXJEYXRhLmlzVmFsaWRGb3JHZW9t
ZXRyeShvYmplY3RCb3VuZGluZ0JveCwgY2xpcHBlZENvbnRlbnRCb3VuZHMsIGFic29sdXRlVHJh
bnNmb3JtKSkgewogICAgICAgICAvLyBGSVhNRSAoMTQ5NDY5KTogVGhpcyBpbWFnZSBidWZmZXIg
c2hvdWxkIG5vdCBiZSB1bmNvbmRpdGlvbmFsbHkgdW5hY2NlbGVyYXRlZC4gTWFraW5nIGl0IG1h
dGNoIHRoZSBjb250ZXh0IGJyZWFrcyBuZXN0ZWQgY2xpcHBpbmcsIHRob3VnaC4KLSAgICAgICAg
YXV0byBtYXNrSW1hZ2UgPSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihj
bGlwcGVkQ29udGVudEJvdW5kcywgYWJzb2x1dGVUcmFuc2Zvcm0sIERlc3RpbmF0aW9uQ29sb3JT
cGFjZTo6U1JHQigpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCBob3N0V2luZG93KCkp
OworICAgICAgICBhdXRvIG1hc2tJbWFnZSA9IGNvbnRleHQuY3JlYXRlSW1hZ2VCdWZmZXIoY2xp
cHBlZENvbnRlbnRCb3VuZHMsIHNjYWxlLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwg
UmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCk7CiAgICAgICAgIGlmICghbWFza0ltYWdlKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xODUsNyArMTkzLDcgQEAgYm9vbCBSZW5k
ZXJTVkdSZXNvdXJjZUNsaXBwZXI6OmFwcGx5Q2xpcHBpbmdUb0NvbnRleHQoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LAogICAgIGlmICghY2xpcHBlckRhdGEuaW1hZ2VCdWZmZXIpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNsaXBUb0ltYWdlQnVm
ZmVyKGNvbnRleHQsIGFic29sdXRlVHJhbnNmb3JtLCBjbGlwcGVkQ29udGVudEJvdW5kcywgY2xp
cHBlckRhdGEuaW1hZ2VCdWZmZXIsIHRydWUpOworICAgIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNs
aXBUb0ltYWdlQnVmZmVyKGNvbnRleHQsIGNsaXBwZWRDb250ZW50Qm91bmRzLCBzY2FsZSwgY2xp
cHBlckRhdGEuaW1hZ2VCdWZmZXIsIHRydWUpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmls
dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VG
aWx0ZXIuY3BwCmluZGV4IDc4NjVhNTg1YTQ3ZWZkODI0NjE3NTFmOWZmYTlhMWQxYjFiMjcxNDku
LmI5NjM2MmM5N2EzYjQwM2Q1ZTQwNGIyY2NmMzg3MDRkOWE5NjI0ODUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIu
Y3BwCkBAIC00LDYgKzQsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDA1IEVyaWMgU2VpZGVsIDxl
cmljQHdlYmtpdC5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgRGlyayBTY2h1bHplIDxrcml0
QHdlYmtpdC5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVk
IDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEtMjAyMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTE0
NiwyMyArMTQ3LDIxIEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3Vy
Y2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFJlbmRlCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAKLSAgICAvLyBDaGFuZ2UgdGhlIGNvb3JkaW5hdGUgdHJhbnNmb3JtYXRp
b24gYXBwbGllZCB0byB0aGUgZmlsdGVyZWQgZWxlbWVudCB0byByZWZsZWN0IHRoZSByZXNvbHV0
aW9uIG9mIHRoZSBmaWx0ZXIuCi0gICAgYXV0byBlZmZlY3RpdmVUcmFuc2Zvcm0gPSBBZmZpbmVU
cmFuc2Zvcm0oZmlsdGVyU2NhbGUud2lkdGgoKSwgMCwgMCwgZmlsdGVyU2NhbGUuaGVpZ2h0KCks
IDAsIDApOwotCiAjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0xJTkVBUl9TUkdC
KQogICAgIGF1dG8gY29sb3JTcGFjZSA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JH
QigpOwogI2Vsc2UKICAgICBhdXRvIGNvbG9yU3BhY2UgPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6
OlNSR0IoKTsKICNlbmRpZgotICAgIGF1dG8gc291cmNlR3JhcGhpYyA9IFNWR1JlbmRlcmluZ0Nv
bnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGZpbHRlckRhdGEtPmRyYXdpbmdSZWdpb24sIGVmZmVj
dGl2ZVRyYW5zZm9ybSwgY29sb3JTcGFjZSwgZmlsdGVyRGF0YS0+ZmlsdGVyLT5yZW5kZXJpbmdN
b2RlKCksIHJlbmRlcmVyLmhvc3RXaW5kb3coKSk7CisKKyAgICBhdXRvIHNvdXJjZUdyYXBoaWMg
PSBjb250ZXh0LT5jcmVhdGVJbWFnZUJ1ZmZlcihmaWx0ZXJEYXRhLT5kcmF3aW5nUmVnaW9uLCBm
aWx0ZXJTY2FsZSwgY29sb3JTcGFjZSwgZmlsdGVyRGF0YS0+ZmlsdGVyLT5yZW5kZXJpbmdNb2Rl
KCkpOwogICAgIGlmICghc291cmNlR3JhcGhpYykgewogICAgICAgICBBU1NFUlQobV9yZW5kZXJl
ckZpbHRlckRhdGFNYXAuY29udGFpbnMoJnJlbmRlcmVyKSk7CiAgICAgICAgIGZpbHRlckRhdGEt
PnNhdmVkQ29udGV4dCA9IGNvbnRleHQ7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0g
ICAgCisKICAgICBhdXRvJiBzb3VyY2VHcmFwaGljQ29udGV4dCA9IHNvdXJjZUdyYXBoaWMtPmNv
bnRleHQoKTsKLSAgCisKICAgICBmaWx0ZXJEYXRhLT5zb3VyY2VHcmFwaGljQnVmZmVyID0gV1RG
TW92ZShzb3VyY2VHcmFwaGljKTsKICAgICBmaWx0ZXJEYXRhLT5zYXZlZENvbnRleHQgPSBjb250
ZXh0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlR3JhZGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcAppbmRleCA0NDc1YTY5ZjhmMmM5NjZmNjNjMzE4M2Yz
MmVmMTU0ODVhODRhYzJiLi40YWU3Y2NlMzNhNzc1MzJhNDdiZTBiZjMwNGE4MjRjMTIyMzI3MjI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlR3JhZGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAKQEAgLTMsNiArMyw3IEBACiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDggRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAw
OCBEaXJrIFNjaHVsemUgPGtyaXRAd2Via2l0Lm9yZz4KICAqIENvcHlyaWdodCAoQykgUmVzZWFy
Y2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKQEAgLTYwLDcgKzYxLDEzIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBjcmVhdGVNYXNr
QW5kU3dhcENvbnRleHRGb3JUZXh0R3JhZGllbnQoR3JhcGhpY3NDb250ZXh0KiYgY29uCiAgICAg
QWZmaW5lVHJhbnNmb3JtIGFic29sdXRlVHJhbnNmb3JtID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6
Y2FsY3VsYXRlVHJhbnNmb3JtYXRpb25Ub091dGVybW9zdENvb3JkaW5hdGVTeXN0ZW0oKnRleHRS
b290QmxvY2spOwogICAgIEZsb2F0UmVjdCByZXBhaW50UmVjdCA9IHRleHRSb290QmxvY2stPnJl
cGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCk7CiAKLSAgICBhdXRvIG1hc2tJbWFnZSA9IFNW
R1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKHJlcGFpbnRSZWN0LCBhYnNvbHV0
ZVRyYW5zZm9ybSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIGNvbnRleHQtPnJlbmRl
cmluZ01vZGUoKSwgcmVuZGVyZXIuaG9zdFdpbmRvdygpKTsKKyAgICAvLyBJZ25vcmUgMkQgcm90
YXRpb24sIGFzIGl0IGRvZXNuJ3QgYWZmZWN0IHRoZSBzaXplIG9mIHRoZSBtYXNrLgorICAgIEZs
b2F0U2l6ZSBzY2FsZShhYnNvbHV0ZVRyYW5zZm9ybS54U2NhbGUoKSwgYWJzb2x1dGVUcmFuc2Zv
cm0ueVNjYWxlKCkpOworCisgICAgLy8gRGV0ZXJtaW5lIHNjYWxlIGZhY3RvciBmb3IgdGhlIGNs
aXBwZXIuIFRoZSBzaXplIG9mIGludGVybWVkaWF0ZSBJbWFnZUJ1ZmZlcnMgc2hvdWxkbid0IGJl
IGJpZ2dlciB0aGFuIGtNYXhGaWx0ZXJTaXplLgorICAgIEltYWdlQnVmZmVyOjpzaXplTmVlZHND
bGFtcGluZyhyZXBhaW50UmVjdC5zaXplKCksIHNjYWxlKTsKKworICAgIGF1dG8gbWFza0ltYWdl
ID0gY29udGV4dC0+Y3JlYXRlSW1hZ2VCdWZmZXIocmVwYWludFJlY3QsIHNjYWxlKTsKICAgICBp
ZiAoIW1hc2tJbWFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC04MCw4ICs4NywxNCBA
QCBzdGF0aWMgaW5saW5lIEFmZmluZVRyYW5zZm9ybSBjbGlwVG9UZXh0TWFzayhHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIFJlZlB0cjxJbQogICAgIEFmZmluZVRyYW5zZm9ybSBhYnNvbHV0ZVRy
YW5zZm9ybSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNhbGN1bGF0ZVRyYW5zZm9ybWF0aW9uVG9P
dXRlcm1vc3RDb29yZGluYXRlU3lzdGVtKCp0ZXh0Um9vdEJsb2NrKTsKIAogICAgIHRhcmdldFJl
Y3QgPSB0ZXh0Um9vdEJsb2NrLT5yZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpOworICAg
IAorICAgIC8vIElnbm9yZSAyRCByb3RhdGlvbiwgYXMgaXQgZG9lc24ndCBhZmZlY3QgdGhlIHNp
emUgb2YgdGhlIG1hc2suCisgICAgRmxvYXRTaXplIHNjYWxlKGFic29sdXRlVHJhbnNmb3JtLnhT
Y2FsZSgpLCBhYnNvbHV0ZVRyYW5zZm9ybS55U2NhbGUoKSk7CisKKyAgICAvLyBEZXRlcm1pbmUg
c2NhbGUgZmFjdG9yIGZvciB0aGUgY2xpcHBlci4gVGhlIHNpemUgb2YgaW50ZXJtZWRpYXRlIElt
YWdlQnVmZmVycyBzaG91bGRuJ3QgYmUgYmlnZ2VyIHRoYW4ga01heEZpbHRlclNpemUuCisgICAg
SW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKHRhcmdldFJlY3Quc2l6ZSgpLCBzY2FsZSk7
CiAKLSAgICBTVkdSZW5kZXJpbmdDb250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcihjb250ZXh0LCBh
YnNvbHV0ZVRyYW5zZm9ybSwgdGFyZ2V0UmVjdCwgaW1hZ2VCdWZmZXIsIGZhbHNlKTsKKyAgICBT
VkdSZW5kZXJpbmdDb250ZXh0OjpjbGlwVG9JbWFnZUJ1ZmZlcihjb250ZXh0LCB0YXJnZXRSZWN0
LCBzY2FsZSwgaW1hZ2VCdWZmZXIsIGZhbHNlKTsKIAogICAgIEFmZmluZVRyYW5zZm9ybSBtYXRy
aXg7CiAgICAgaWYgKGJvdW5kaW5nQm94TW9kZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNwcAppbmRleCA3NjRm
N2M4ODhmMzJiZjE5NThhZWJlMmI3ZTYxYTUxOTk5YzI5ODUwLi4zZGIwMTMxMWRmNWI1Yzk0N2Uw
N2I0NmM1OGFlZGE3NDcyZjJmMjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNwcApAQCAtMSw1ICsxLDYgQEAK
IC8qCiAgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMDktMjAx
MC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTY4LDYgKzY5LDEy
IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmFwcGx5UmVzb3VyY2UoUmVuZGVyRWxl
bWVudCYgcmVuZGVyZXIsIGNvbnN0IFJlbmRlCiAgICAgQWZmaW5lVHJhbnNmb3JtIGFic29sdXRl
VHJhbnNmb3JtID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2FsY3VsYXRlVHJhbnNmb3JtYXRpb25U
b091dGVybW9zdENvb3JkaW5hdGVTeXN0ZW0ocmVuZGVyZXIpOwogICAgIEZsb2F0UmVjdCByZXBh
aW50UmVjdCA9IHJlbmRlcmVyLnJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCk7CiAKKyAg
ICAvLyBJZ25vcmUgMkQgcm90YXRpb24sIGFzIGl0IGRvZXNuJ3QgYWZmZWN0IHRoZSBzaXplIG9m
IHRoZSBtYXNrLgorICAgIEZsb2F0U2l6ZSBzY2FsZShhYnNvbHV0ZVRyYW5zZm9ybS54U2NhbGUo
KSwgYWJzb2x1dGVUcmFuc2Zvcm0ueVNjYWxlKCkpOworCisgICAgLy8gRGV0ZXJtaW5lIHNjYWxl
IGZhY3RvciBmb3IgdGhlIG1hc2suIFRoZSBzaXplIG9mIGludGVybWVkaWF0ZSBJbWFnZUJ1ZmZl
cnMgc2hvdWxkbid0IGJlIGJpZ2dlciB0aGFuIGtNYXhGaWx0ZXJTaXplLgorICAgIEltYWdlQnVm
ZmVyOjpzaXplTmVlZHNDbGFtcGluZyhyZXBhaW50UmVjdC5zaXplKCksIHNjYWxlKTsKKwogICAg
IGlmICghbWFza2VyRGF0YS0+bWFza0ltYWdlICYmICFyZXBhaW50UmVjdC5pc0VtcHR5KCkpIHsK
ICAgICAgICAgY29uc3QgU1ZHUmVuZGVyU3R5bGUmIHN2Z1N0eWxlID0gc3R5bGUoKS5zdmdTdHls
ZSgpOwogCkBAIC04Miw5ICs4OSw4IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmFw
cGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFJlbmRlCiAgICAgICAg
ICAgICBkcmF3Q29sb3JTcGFjZSA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6TGluZWFyU1JHQigp
OwogICAgICAgICB9CiAjZW5kaWYKLQogICAgICAgICAvLyBGSVhNRSAoMTQ5NDcwKTogVGhpcyBp
bWFnZSBidWZmZXIgc2hvdWxkIG5vdCBiZSB1bmNvbmRpdGlvbmFsbHkgdW5hY2NlbGVyYXRlZC4g
TWFraW5nIGl0IG1hdGNoIHRoZSBjb250ZXh0IGJyZWFrcyBhbHBoYSBtYXNraW5nLCB0aG91Z2gu
Ci0gICAgICAgIG1hc2tlckRhdGEtPm1hc2tJbWFnZSA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNy
ZWF0ZUltYWdlQnVmZmVyKHJlcGFpbnRSZWN0LCBhYnNvbHV0ZVRyYW5zZm9ybSwgbWFza0NvbG9y
U3BhY2UsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQsIGhvc3RXaW5kb3coKSk7CisgICAg
ICAgIG1hc2tlckRhdGEtPm1hc2tJbWFnZSA9IGNvbnRleHQtPmNyZWF0ZUltYWdlQnVmZmVyKHJl
cGFpbnRSZWN0LCBzY2FsZSwgbWFza0NvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGU6OlVuYWNjZWxl
cmF0ZWQpOwogICAgICAgICBpZiAoIW1hc2tlckRhdGEtPm1hc2tJbWFnZSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKIApAQCAtOTUsNyArMTAxLDcgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJj
ZU1hc2tlcjo6YXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgUmVu
ZGUKICAgICBpZiAoIW1hc2tlckRhdGEtPm1hc2tJbWFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIoKmNvbnRleHQs
IGFic29sdXRlVHJhbnNmb3JtLCByZXBhaW50UmVjdCwgbWFza2VyRGF0YS0+bWFza0ltYWdlLCBt
aXNzaW5nTWFza2VyRGF0YSk7CisgICAgU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2xpcFRvSW1hZ2VC
dWZmZXIoKmNvbnRleHQsIHJlcGFpbnRSZWN0LCBzY2FsZSwgbWFza2VyRGF0YS0+bWFza0ltYWdl
LCBtaXNzaW5nTWFza2VyRGF0YSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJu
LmNwcAppbmRleCBlOGI1MWNmYjkzOTQ5MjYzODFlZjNiMDRhM2UxN2E1ZmQxNWMwODZiLi5iY2Vm
ZTU3NWZjNWIyNGE5MWRmYjZhMzI2ZDYwYzhkOTFjNTJhYjZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3Bw
CkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNiBOaWtvbGFzIFppbW1l
cm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4g
TW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKQEAgLTk1LDE5ICs5NiwxNiBAQCBQYXR0ZXJuRGF0YSogUmVuZGVyU1ZHUmVzb3VyY2VQYXR0
ZXJuOjpidWlsZFBhdHRlcm4oUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIE9wdAogICAgIGlmICgh
YnVpbGRUaWxlSW1hZ2VUcmFuc2Zvcm0ocmVuZGVyZXIsIG1fYXR0cmlidXRlcywgcGF0dGVybkVs
ZW1lbnQoKSwgdGlsZUJvdW5kYXJpZXMsIHRpbGVJbWFnZVRyYW5zZm9ybSkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgQWZmaW5lVHJhbnNmb3JtIGFic29sdXRlVHJhbnNmb3JtSWdu
b3JpbmdSb3RhdGlvbiA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNhbGN1bGF0ZVRyYW5zZm9ybWF0
aW9uVG9PdXRlcm1vc3RDb29yZGluYXRlU3lzdGVtKHJlbmRlcmVyKTsKKyAgICBhdXRvIGFic29s
dXRlVHJhbnNmb3JtID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2FsY3VsYXRlVHJhbnNmb3JtYXRp
b25Ub091dGVybW9zdENvb3JkaW5hdGVTeXN0ZW0ocmVuZGVyZXIpOwogCiAgICAgLy8gSWdub3Jl
IDJEIHJvdGF0aW9uLCBhcyBpdCBkb2Vzbid0IGFmZmVjdCB0aGUgc2l6ZSBvZiB0aGUgdGlsZS4K
LSAgICBTVkdSZW5kZXJpbmdDb250ZXh0OjpjbGVhcjJEUm90YXRpb24oYWJzb2x1dGVUcmFuc2Zv
cm1JZ25vcmluZ1JvdGF0aW9uKTsKLSAgICBGbG9hdFJlY3QgYWJzb2x1dGVUaWxlQm91bmRhcmll
cyA9IGFic29sdXRlVHJhbnNmb3JtSWdub3JpbmdSb3RhdGlvbi5tYXBSZWN0KHRpbGVCb3VuZGFy
aWVzKTsKLSAgICBGbG9hdFJlY3QgY2xhbXBlZEFic29sdXRlVGlsZUJvdW5kYXJpZXM7CisgICAg
RmxvYXRTaXplIHRpbGVTY2FsZShhYnNvbHV0ZVRyYW5zZm9ybS54U2NhbGUoKSwgYWJzb2x1dGVU
cmFuc2Zvcm0ueVNjYWxlKCkpOwogCiAgICAgLy8gU2NhbGUgdGhlIHRpbGUgc2l6ZSB0byBtYXRj
aCB0aGUgc2NhbGUgbGV2ZWwgb2YgdGhlIHBhdHRlcm5UcmFuc2Zvcm0uCi0gICAgYWJzb2x1dGVU
aWxlQm91bmRhcmllcy5zY2FsZShzdGF0aWNfY2FzdDxmbG9hdD4obV9hdHRyaWJ1dGVzLnBhdHRl
cm5UcmFuc2Zvcm0oKS54U2NhbGUoKSksCi0gICAgICAgIHN0YXRpY19jYXN0PGZsb2F0PihtX2F0
dHJpYnV0ZXMucGF0dGVyblRyYW5zZm9ybSgpLnlTY2FsZSgpKSk7CisgICAgdGlsZVNjYWxlLnNj
YWxlKHN0YXRpY19jYXN0PGZsb2F0PihtX2F0dHJpYnV0ZXMucGF0dGVyblRyYW5zZm9ybSgpLnhT
Y2FsZSgpKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fYXR0cmlidXRlcy5wYXR0ZXJuVHJhbnNmb3Jt
KCkueVNjYWxlKCkpKTsKIAogICAgIC8vIEJ1aWxkIHRpbGUgaW1hZ2UuCi0gICAgYXV0byB0aWxl
SW1hZ2UgPSBjcmVhdGVUaWxlSW1hZ2UobV9hdHRyaWJ1dGVzLCB0aWxlQm91bmRhcmllcywgYWJz
b2x1dGVUaWxlQm91bmRhcmllcywgdGlsZUltYWdlVHJhbnNmb3JtLCBjbGFtcGVkQWJzb2x1dGVU
aWxlQm91bmRhcmllcywgY29udGV4dC5yZW5kZXJpbmdNb2RlKCkpOworICAgIGF1dG8gdGlsZUlt
YWdlID0gY3JlYXRlVGlsZUltYWdlKGNvbnRleHQsIHRpbGVCb3VuZGFyaWVzLnNpemUoKSwgdGls
ZVNjYWxlLCB0aWxlSW1hZ2VUcmFuc2Zvcm0sIG1fYXR0cmlidXRlcyk7CiAgICAgaWYgKCF0aWxl
SW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0yMzQsMTggKzIzMiwyMyBAQCBi
b29sIFJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6YnVpbGRUaWxlSW1hZ2VUcmFuc2Zvcm0oUmVu
ZGVyRWxlbWVudCYgcmVuZGVyZXIsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVJlZlB0cjxJbWFn
ZUJ1ZmZlcj4gUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpjcmVhdGVUaWxlSW1hZ2UoY29uc3Qg
UGF0dGVybkF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZUJvdW5k
YXJpZXMsIGNvbnN0IEZsb2F0UmVjdCYgYWJzb2x1dGVUaWxlQm91bmRhcmllcywgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiB0aWxlSW1hZ2VUcmFuc2Zvcm0sIEZsb2F0UmVjdCYgY2xhbXBlZEFic29s
dXRlVGlsZUJvdW5kYXJpZXMsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSkgY29uc3QKK1Jl
ZlB0cjxJbWFnZUJ1ZmZlcj4gUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpjcmVhdGVUaWxlSW1h
Z2UoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0
IEZsb2F0U2l6ZSYgc2NhbGUsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdGlsZUltYWdlVHJhbnNm
b3JtLCBjb25zdCBQYXR0ZXJuQXR0cmlidXRlcyYgYXR0cmlidXRlcykgY29uc3QKIHsKLSAgICBj
bGFtcGVkQWJzb2x1dGVUaWxlQm91bmRhcmllcyA9IEltYWdlQnVmZmVyOjpjbGFtcGVkUmVjdChh
YnNvbHV0ZVRpbGVCb3VuZGFyaWVzKTsKLSAgICBhdXRvIHRpbGVJbWFnZSA9IFNWR1JlbmRlcmlu
Z0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGFic29sdXRlVGlsZUJvdW5kYXJpZXMsIGNsYW1w
ZWRBYnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwg
cmVuZGVyaW5nTW9kZSwgaG9zdFdpbmRvdygpKTsKKyAgICAvLyBUaGlzIGlzIGVxdWl2YWxlbnQg
dG8gbWFraW5nIGNyZWF0ZUltYWdlQnVmZmVyKCkgdXNlIHJvdW5kZWRJbnRTaXplKCkuCisgICAg
YXV0byByb3VuZGVkVW5zY2FsZWRJbWFnZUJ1ZmZlclNpemUgPSBbXShjb25zdCBGbG9hdFNpemUm
IHNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc2NhbGUpIC0+IEZsb2F0U2l6ZSB7CisgICAgICAgIGF1
dG8gc2NhbGVkU2l6ZSA9IHNpemUgKiBzY2FsZTsKKyAgICAgICAgcmV0dXJuIHNpemUgLSAoZXhw
YW5kZWRJbnRTaXplKHNjYWxlZFNpemUpIC0gcm91bmRlZEludFNpemUoc2NhbGVkU2l6ZSkpICog
KHNjYWxlZFNpemUgLSBmbG9vcmVkSW50U2l6ZShzY2FsZWRTaXplKSkgLyBzY2FsZTsKKyAgICB9
OworCisgICAgYXV0byB0aWxlU2l6ZSA9IHJvdW5kZWRVbnNjYWxlZEltYWdlQnVmZmVyU2l6ZShz
aXplLCBzY2FsZSk7CisKKyAgICAvLyBGSVhNRTogVXNlIGNyZWF0ZUltYWdlQnVmZmVyKHJlY3Qs
IHNjYWxlKSwgZGVsZXRlIHRoZSBhYm92ZSBjYWxjdWxhdGlvbnMgYW5kIGZpeCAndGlsZUltYWdl
VHJhbnNmb3JtJworICAgIGF1dG8gdGlsZUltYWdlID0gY29udGV4dC5jcmVhdGVJbWFnZUJ1ZmZl
cih0aWxlU2l6ZSwgc2NhbGUpOwogICAgIGlmICghdGlsZUltYWdlKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgIEdyYXBoaWNzQ29udGV4dCYgdGlsZUltYWdlQ29udGV4dCA9IHRpbGVJ
bWFnZS0+Y29udGV4dCgpOwogCi0gICAgLy8gVGhlIGltYWdlIGJ1ZmZlciByZXByZXNlbnRzIHRo
ZSBmaW5hbCByZW5kZXJlZCBzaXplLCBzbyB0aGUgY29udGVudCBoYXMgdG8gYmUgc2NhbGVkICh0
byBhdm9pZCBwaXhlbGF0aW9uKS4KLSAgICB0aWxlSW1hZ2VDb250ZXh0LnNjYWxlKGNsYW1wZWRB
YnNvbHV0ZVRpbGVCb3VuZGFyaWVzLnNpemUoKSAvIHRpbGVCb3VuZGFyaWVzLnNpemUoKSk7Ci0K
ICAgICAvLyBBcHBseSB0aWxlIGltYWdlIHRyYW5zZm9ybWF0aW9ucy4KICAgICBpZiAoIXRpbGVJ
bWFnZVRyYW5zZm9ybS5pc0lkZW50aXR5KCkpCiAgICAgICAgIHRpbGVJbWFnZUNvbnRleHQuY29u
Y2F0Q1RNKHRpbGVJbWFnZVRyYW5zZm9ybSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uaAppbmRleCA3MTE3ZjEyN2Qw
ZGRkNzNiYTVlYmM1NTk5MDEwYzI0YmI2MmYwOGE2Li5mNmNmMjI2MGZjM2YyNjY1NWUwZDFmZjI0
ZmFjMzhhYTg3ZWI2NThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmgKQEAgLTEsNiArMSw3IEBACiAvKgogICog
Q29weXJpZ2h0IChDKSAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3Jn
PgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtNjEsNyArNjIsNyBAQCBwcml2
YXRlOgogCiAgICAgYm9vbCBidWlsZFRpbGVJbWFnZVRyYW5zZm9ybShSZW5kZXJFbGVtZW50Jiwg
Y29uc3QgUGF0dGVybkF0dHJpYnV0ZXMmLCBjb25zdCBTVkdQYXR0ZXJuRWxlbWVudCYsIEZsb2F0
UmVjdCYgcGF0dGVybkJvdW5kYXJpZXMsIEFmZmluZVRyYW5zZm9ybSYgdGlsZUltYWdlVHJhbnNm
b3JtKSBjb25zdDsKIAotICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlVGlsZUltYWdlKGNv
bnN0IFBhdHRlcm5BdHRyaWJ1dGVzJiwgY29uc3QgRmxvYXRSZWN0JiB0aWxlQm91bmRhcmllcywg
Y29uc3QgRmxvYXRSZWN0JiBhYnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHRpbGVJbWFnZVRyYW5zZm9ybSwgRmxvYXRSZWN0JiBjbGFtcGVkQWJzb2x1dGVUaWxl
Qm91bmRhcmllcywgUmVuZGVyaW5nTW9kZSkgY29uc3Q7CisgICAgUmVmUHRyPEltYWdlQnVmZmVy
PiBjcmVhdGVUaWxlSW1hZ2UoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRTaXplJiwgY29u
c3QgRmxvYXRTaXplJiBzY2FsZSwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0aWxlSW1hZ2VUcmFu
c2Zvcm0sIGNvbnN0IFBhdHRlcm5BdHRyaWJ1dGVzJikgY29uc3Q7CiAKICAgICBQYXR0ZXJuRGF0
YSogYnVpbGRQYXR0ZXJuKFJlbmRlckVsZW1lbnQmLCBPcHRpb25TZXQ8UmVuZGVyU1ZHUmVzb3Vy
Y2VNb2RlPiwgR3JhcGhpY3NDb250ZXh0Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IGYwOGU4NzJkMjg2NmFl
NTM0MjQ4NmUzYzlmOTk4ZWRjOTQ0OTg0YjkuLjYzODAyNGQ3ZDI3ODEwZmJlMDVmNzk0MmRhYmZj
MGEwODE4YWNiOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZH
UmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMjI3LDUyICsyMjcsNiBAQCBBZmZpbmVUcmFuc2Zv
cm0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2FsY3VsYXRlVHJhbnNmb3JtYXRpb25Ub091dGVybW9z
dENvb3JkaW5hdAogICAgIHJldHVybiBhYnNvbHV0ZVRyYW5zZm9ybTsKIH0KIAotUmVmUHRyPElt
YWdlQnVmZmVyPiBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBG
bG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgYWJzb2x1dGVUcmFu
c2Zvcm0sIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgUmVuZGVyaW5n
TW9kZSByZW5kZXJpbmdNb2RlLCBjb25zdCBIb3N0V2luZG93KiBob3N0V2luZG93KQotewotICAg
IEludFJlY3QgcGFpbnRSZWN0ID0gY2FsY3VsYXRlSW1hZ2VCdWZmZXJSZWN0KHRhcmdldFJlY3Qs
IGFic29sdXRlVHJhbnNmb3JtKTsKLSAgICAvLyBEb24ndCBjcmVhdGUgZW1wdHkgSW1hZ2VCdWZm
ZXJzLgotICAgIGlmIChwYWludFJlY3QuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLQotICAgIEZsb2F0U2l6ZSBzY2FsZSgxLCAxKTsKLSAgICBGbG9hdFNpemUgY2xhbXBlZFNp
emUgPSBwYWludFJlY3Quc2l6ZSgpOwotICAgIGlmIChJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xh
bXBpbmcoY2xhbXBlZFNpemUsIHNjYWxlKSkKLSAgICAgICAgY2xhbXBlZFNpemUgPSBjbGFtcGVk
U2l6ZSAqIHNjYWxlOwotCi0gICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVh
dGUoY2xhbXBlZFNpemUsIHJlbmRlcmluZ01vZGUsIFNob3VsZFVzZURpc3BsYXlMaXN0OjpObywg
UmVuZGVyaW5nUHVycG9zZTo6RE9NLCAxLCBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgs
IGhvc3RXaW5kb3cpOwotICAgIGlmICghaW1hZ2VCdWZmZXIpCi0gICAgICAgIHJldHVybiBudWxs
cHRyOwotCi0gICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybTsKLSAgICB0cmFuc2Zvcm0uc2Nh
bGUoc2NhbGUpLnRyYW5zbGF0ZSgtcGFpbnRSZWN0LmxvY2F0aW9uKCkpLm11bHRpcGx5KGFic29s
dXRlVHJhbnNmb3JtKTsKLQotICAgIEdyYXBoaWNzQ29udGV4dCYgaW1hZ2VDb250ZXh0ID0gaW1h
Z2VCdWZmZXItPmNvbnRleHQoKTsKLSAgICBpbWFnZUNvbnRleHQuY29uY2F0Q1RNKHRyYW5zZm9y
bSk7Ci0KLSAgICByZXR1cm4gaW1hZ2VCdWZmZXI7Ci19Ci0KLVJlZlB0cjxJbWFnZUJ1ZmZlcj4g
U1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0JiB0
YXJnZXRSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGNsYW1wZWRSZWN0LCBjb25zdCBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgY29u
c3QgSG9zdFdpbmRvdyogaG9zdFdpbmRvdykKLXsKLSAgICBJbnRTaXplIGNsYW1wZWRTaXplID0g
cm91bmRlZEludFNpemUoY2xhbXBlZFJlY3Quc2l6ZSgpKTsKLSAgICBGbG9hdFNpemUgdW5jbGFt
cGVkU2l6ZSA9IHJvdW5kZWRJbnRTaXplKHRhcmdldFJlY3Quc2l6ZSgpKTsKLQotICAgIC8vIERv
bid0IGNyZWF0ZSBlbXB0eSBJbWFnZUJ1ZmZlcnMuCi0gICAgaWYgKGNsYW1wZWRTaXplLmlzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBhdXRvIGltYWdlQnVmZmVyID0g
SW1hZ2VCdWZmZXI6OmNyZWF0ZShjbGFtcGVkU2l6ZSwgcmVuZGVyaW5nTW9kZSwgU2hvdWxkVXNl
RGlzcGxheUxpc3Q6Ok5vLCBSZW5kZXJpbmdQdXJwb3NlOjpET00sIDEsIGNvbG9yU3BhY2UsIFBp
eGVsRm9ybWF0OjpCR1JBOCwgaG9zdFdpbmRvdyk7Ci0gICAgaWYgKCFpbWFnZUJ1ZmZlcikKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBHcmFwaGljc0NvbnRleHQmIGltYWdlQ29udGV4
dCA9IGltYWdlQnVmZmVyLT5jb250ZXh0KCk7Ci0KLSAgICAvLyBDb21wZW5zYXRlIHJvdW5kaW5n
IGVmZmVjdHMsIGFzIHRoZSBhYnNvbHV0ZSB0YXJnZXQgcmVjdCBpcyB1c2luZyBmbG9hdGluZy1w
b2ludCBudW1iZXJzIGFuZCB0aGUgaW1hZ2UgYnVmZmVyIHNpemUgaXMgaW50ZWdlci4KLSAgICBp
bWFnZUNvbnRleHQuc2NhbGUodW5jbGFtcGVkU2l6ZSAvIHRhcmdldFJlY3Quc2l6ZSgpKTsKLQot
ICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsKLX0KLQogdm9pZCBTVkdSZW5kZXJpbmdDb250ZXh0Ojpy
ZW5kZXJTdWJ0cmVlVG9Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUmVuZGVyRWxl
bWVudCYgaXRlbSwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBzdWJ0cmVlQ29udGVudFRyYW5zZm9y
bWF0aW9uKQogewogICAgIC8vIFJlbmRlcmluZyBpbnRvIGEgYnVmZmVyIGltcGxpZXMgd2UncmUg
YmVpbmcgdXNlZCBmb3IgbWFza2luZywgY2xpcHBpbmcsIHBhdHRlcm5zIG9yIGZpbHRlcnMuIElu
IGVhY2ggb2YgdGhlc2UKQEAgLTI4OSwxMiArMjQzLDE1IEBAIHZvaWQgU1ZHUmVuZGVyaW5nQ29u
dGV4dDo6cmVuZGVyU3VidHJlZVRvQ29udGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFJl
bmRlCiAgICAgY29udGVudFRyYW5zZm9ybWF0aW9uID0gc2F2ZWRDb250ZW50VHJhbnNmb3JtYXRp
b247CiB9CiAKLXZvaWQgU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2xpcFRvSW1hZ2VCdWZmZXIoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFic29sdXRlVHJh
bnNmb3JtLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIFJlZlB0cjxJbWFnZUJ1ZmZlcj4m
IGltYWdlQnVmZmVyLCBib29sIHNhZmVUb0NsZWFyKQordm9pZCBTVkdSZW5kZXJpbmdDb250ZXh0
OjpjbGlwVG9JbWFnZUJ1ZmZlcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgRmxvYXRTaXplJiBzY2FsZSwgUmVmUHRyPEltYWdlQnVm
ZmVyPiYgaW1hZ2VCdWZmZXIsIGJvb2wgc2FmZVRvQ2xlYXIpCiB7CiAgICAgaWYgKCFpbWFnZUJ1
ZmZlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgRmxvYXRSZWN0IGFic29sdXRlVGFyZ2V0UmVj
dCA9IGNhbGN1bGF0ZUltYWdlQnVmZmVyUmVjdCh0YXJnZXRSZWN0LCBhYnNvbHV0ZVRyYW5zZm9y
bSk7CisgICAgQWZmaW5lVHJhbnNmb3JtIGFic29sdXRlVHJhbnNmb3JtOworICAgIGFic29sdXRl
VHJhbnNmb3JtLnNjYWxlKHNjYWxlLndpZHRoKCksIHNjYWxlLmhlaWdodCgpKTsKKworICAgIGF1
dG8gYWJzb2x1dGVUYXJnZXRSZWN0ID0gY2FsY3VsYXRlSW1hZ2VCdWZmZXJSZWN0KHRhcmdldFJl
Y3QsIGFic29sdXRlVHJhbnNmb3JtKTsKIAogICAgIC8vIFRoZSBtYXNrIGltYWdlIGhhcyBiZWVu
IGNyZWF0ZWQgaW4gdGhlIGFic29sdXRlIGNvb3JkaW5hdGUgc3BhY2UsIGFzIHRoZSBpbWFnZSBz
aG91bGQgbm90IGJlIHNjYWxlZC4KICAgICAvLyBTbyB0aGUgYWN0dWFsIG1hc2tpbmcgcHJvY2Vz
cyBoYXMgdG8gYmUgZG9uZSBpbiB0aGUgYWJzb2x1dGUgY29vcmRpbmF0ZSBzcGFjZSBhcyB3ZWxs
LgpAQCAtMzA4LDE0ICsyNjUsNiBAQCB2b2lkIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNsaXBUb0lt
YWdlQnVmZmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgQWZmaQogICAgICAgICBp
bWFnZUJ1ZmZlciA9IG51bGxwdHI7CiB9CiAKLXZvaWQgU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y2xl
YXIyRFJvdGF0aW9uKEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtKQotewotICAgIEFmZmluZVRy
YW5zZm9ybTo6RGVjb21wb3NlZFR5cGUgZGVjb21wb3NpdGlvbjsKLSAgICB0cmFuc2Zvcm0uZGVj
b21wb3NlKGRlY29tcG9zaXRpb24pOwotICAgIGRlY29tcG9zaXRpb24uYW5nbGUgPSAwOwotICAg
IHRyYW5zZm9ybS5yZWNvbXBvc2UoZGVjb21wb3NpdGlvbik7Ci19Ci0KIGJvb2wgU1ZHUmVuZGVy
aW5nQ29udGV4dDo6YnVmZmVyRm9yZWdyb3VuZChSZWZQdHI8SW1hZ2VCdWZmZXI+JiBpbWFnZUJ1
ZmZlcikKIHsKICAgICBBU1NFUlQobV9wYWludEluZm8pOwpAQCAtMzMzLDcgKzI4Miw3IEBAIGJv
b2wgU1ZHUmVuZGVyaW5nQ29udGV4dDo6YnVmZmVyRm9yZWdyb3VuZChSZWZQdHI8SW1hZ2VCdWZm
ZXI+JiBpbWFnZUJ1ZmZlcikKIAogICAgIC8vIENyZWF0ZSBhIG5ldyBidWZmZXIgYW5kIHBhaW50
IHRoZSBmb3JlZ3JvdW5kIGludG8gaXQuCiAgICAgaWYgKCFpbWFnZUJ1ZmZlcikgewotICAgICAg
ICBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGV4cGFu
ZGVkSW50U2l6ZShib3VuZGluZ0JveC5zaXplKCkpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNS
R0IoKSwgbV9wYWludEluZm8tPmNvbnRleHQoKSk7CisgICAgICAgIGltYWdlQnVmZmVyID0gbV9w
YWludEluZm8tPmNvbnRleHQoKS5jcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIoZXhwYW5kZWRJ
bnRTaXplKGJvdW5kaW5nQm94LnNpemUoKSkpOwogICAgICAgICBpZiAoIWltYWdlQnVmZmVyKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmgKaW5kZXggMDQ0Nzk5M2I5ODdlMmY1
MjQ3MzM0MTA1NDZmMGEwZTVmNDM2ZDQyYi4uYmFlMmFjZTUxNmIzNWY2Nzk2MTNjY2I4MWU2Mjkw
MzQ2ZWM0MTZjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdS
ZW5kZXJpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdS
ZW5kZXJpbmdDb250ZXh0LmgKQEAgLTYwLDE1ICs2MCwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBw
cmVwYXJlVG9SZW5kZXJTVkdDb250ZW50KFJlbmRlckVsZW1lbnQmLCBQYWludEluZm8mLCBOZWVk
c0dyYXBoaWNzQ29udGV4dFNhdmUgPSBEb250U2F2ZUdyYXBoaWNzQ29udGV4dCk7CiAgICAgYm9v
bCBpc1JlbmRlcmluZ1ByZXBhcmVkKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJpbmdGbGFncyAm
IFJlbmRlcmluZ1ByZXBhcmVkOyB9CiAKLSAgICBzdGF0aWMgUmVmUHRyPEltYWdlQnVmZmVyPiBj
cmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zvcm0sIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFj
ZSYsIFJlbmRlcmluZ01vZGUsIGNvbnN0IEhvc3RXaW5kb3cqID0gbnVsbHB0cik7Ci0gICAgc3Rh
dGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgRmxvYXRSZWN0
JiB0YXJnZXRSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGNsYW1wZWRSZWN0LCBjb25zdCBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UmLCBSZW5kZXJpbmdNb2RlLCBjb25zdCBIb3N0V2luZG93KiA9IG51bGxw
dHIpOwotCiAgICAgc3RhdGljIHZvaWQgcmVuZGVyU3VidHJlZVRvQ29udGV4dChHcmFwaGljc0Nv
bnRleHQmLCBSZW5kZXJFbGVtZW50JiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJik7Ci0gICAgc3Rh
dGljIHZvaWQgY2xpcFRvSW1hZ2VCdWZmZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0
LCBSZWZQdHI8SW1hZ2VCdWZmZXI+JiwgYm9vbCBzYWZlVG9DbGVhcik7CisgICAgc3RhdGljIHZv
aWQgY2xpcFRvSW1hZ2VCdWZmZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiB0
YXJnZXRSZWN0LCBjb25zdCBGbG9hdFNpemUmIHNjYWxlLCBSZWZQdHI8SW1hZ2VCdWZmZXI+Jiwg
Ym9vbCBzYWZlVG9DbGVhcik7CiAKICAgICBzdGF0aWMgZmxvYXQgY2FsY3VsYXRlU2NyZWVuRm9u
dFNpemVTY2FsaW5nRmFjdG9yKGNvbnN0IFJlbmRlck9iamVjdCYpOwogICAgIHN0YXRpYyBBZmZp
bmVUcmFuc2Zvcm0gY2FsY3VsYXRlVHJhbnNmb3JtYXRpb25Ub091dGVybW9zdENvb3JkaW5hdGVT
eXN0ZW0oY29uc3QgUmVuZGVyT2JqZWN0Jik7Ci0gICAgc3RhdGljIHZvaWQgY2xlYXIyRFJvdGF0
aW9uKEFmZmluZVRyYW5zZm9ybSYpOwogCiAgICAgc3RhdGljIEludFJlY3QgY2FsY3VsYXRlSW1h
Z2VCdWZmZXJSZWN0KGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
SW1hZ2VFbGVtZW50LmNwcAppbmRleCA4N2QyZWE2NjhmODA1MDI1NjMyMjllNTBjNGY2MTRkNjcz
OWMwNGEwLi40YTljM2M0NWE5MjNlYmQyYWJkZjVhMWZkMmQ3ZmU1MDYwNzk0ZDQzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAKQEAgLTE3Nyw2ICsxNzcsMzggQEAg
dm9pZCBTVkdGRUltYWdlRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBj
b25zdCBOZXR3b3JrTG9hZE1ldHJpY3MKICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0Zvckxh
eW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpwYXJlbnRSZW5kZXJlcik7CiB9CiAK
K3N0YXRpYyBpbmxpbmUgSW50UmVjdCBzY2FsZWRJbWFnZUJ1ZmZlclJlY3QoY29uc3QgRmxvYXRS
ZWN0JiByZWN0LCBjb25zdCBGbG9hdFNpemUmIHNjYWxlKQoreworICAgIGF1dG8gc2NhbGVkUmVj
dCA9IHJlY3Q7CisgICAgc2NhbGVkUmVjdC5zY2FsZShzY2FsZSk7CisgICAgcmV0dXJuIGVuY2xv
c2luZ0ludFJlY3Qoc2NhbGVkUmVjdCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgRmxvYXRTaXplIGNs
YW1waW5nU2NhbGVGb3JJbWFnZUJ1ZmZlclNpemUoY29uc3QgRmxvYXRTaXplJiBzaXplKQorewor
ICAgIEZsb2F0U2l6ZSBjbGFtcGluZ1NjYWxlKDEsIDEpOworICAgIEltYWdlQnVmZmVyOjpzaXpl
TmVlZHNDbGFtcGluZyhzaXplLCBjbGFtcGluZ1NjYWxlKTsKKyAgICByZXR1cm4gY2xhbXBpbmdT
Y2FsZTsKK30KKworc3RhdGljIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIo
Y29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFNpemUmIHNjYWxlLCBIb3N0V2luZG93
KiBob3N0V2luZG93KQoreworICAgIGF1dG8gc2NhbGVkUmVjdCA9IHNjYWxlZEltYWdlQnVmZmVy
UmVjdChyZWN0LCBzY2FsZSk7CisgICAgaWYgKHNjYWxlZFJlY3QuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gY2xhbXBpbmdTY2FsZSA9IGNsYW1waW5nU2Nh
bGVGb3JJbWFnZUJ1ZmZlclNpemUoc2NhbGVkUmVjdC5zaXplKCkpOworCisgICAgYXV0byBpbWFn
ZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2NhbGVkUmVjdC5zaXplKCkgKiBjbGFtcGlu
Z1NjYWxlLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCBTaG91bGRVc2VEaXNwbGF5TGlz
dDo6Tm8sIFJlbmRlcmluZ1B1cnBvc2U6OkRPTSwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpT
UkdCKCksIFBpeGVsRm9ybWF0OjpCR1JBOCwgaG9zdFdpbmRvdyk7CisgICAgaWYgKCFpbWFnZUJ1
ZmZlcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBpbWFnZUJ1ZmZlci0+Y29udGV4
dCgpLnNjYWxlKGNsYW1waW5nU2NhbGUpOworICAgIGltYWdlQnVmZmVyLT5jb250ZXh0KCkudHJh
bnNsYXRlKC1zY2FsZWRSZWN0LmxvY2F0aW9uKCkpOworICAgIGltYWdlQnVmZmVyLT5jb250ZXh0
KCkuc2NhbGUoc2NhbGUpOworICAgIHJldHVybiBpbWFnZUJ1ZmZlcjsKK30KKwogc3RkOjp0dXBs
ZTxSZWZQdHI8SW1hZ2VCdWZmZXI+LCBGbG9hdFJlY3Q+IFNWR0ZFSW1hZ2VFbGVtZW50OjppbWFn
ZUJ1ZmZlckZvckVmZmVjdCgpIGNvbnN0CiB7CiAgICAgYXV0byB0YXJnZXQgPSBTVkdVUklSZWZl
cmVuY2U6OnRhcmdldEVsZW1lbnRGcm9tSVJJU3RyaW5nKGhyZWYoKSwgdHJlZVNjb3BlKCkpOwpA
QCAtMTk1LDExICsyMjcsMTIgQEAgc3RkOjp0dXBsZTxSZWZQdHI8SW1hZ2VCdWZmZXI+LCBGbG9h
dFJlY3Q+IFNWR0ZFSW1hZ2VFbGVtZW50OjppbWFnZUJ1ZmZlckZvckVmZmUKICAgICBpZiAoIWFi
c29sdXRlVHJhbnNmb3JtLmlzSW52ZXJ0aWJsZSgpKQogICAgICAgICByZXR1cm4geyB9OwogCi0g
ICAgYXV0byBzaGVhckZyZWVBYnNvbHV0ZVRyYW5zZm9ybSA9IEFmZmluZVRyYW5zZm9ybShhYnNv
bHV0ZVRyYW5zZm9ybS54U2NhbGUoKSwgMCwgMCwgYWJzb2x1dGVUcmFuc2Zvcm0ueVNjYWxlKCks
IDAsIDApOwotCisgICAgLy8gSWdub3JlIDJEIHJvdGF0aW9uLCBhcyBpdCBkb2Vzbid0IGFmZmVj
dCB0aGUgaW1hZ2Ugc2l6ZS4KKyAgICBGbG9hdFNpemUgc2NhbGUoYWJzb2x1dGVUcmFuc2Zvcm0u
eFNjYWxlKCksIGFic29sdXRlVHJhbnNmb3JtLnlTY2FsZSgpKTsKICAgICBhdXRvIGltYWdlUmVj
dCA9IHJlbmRlcmVyLT5yZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpOwogCi0gICAgYXV0
byBpbWFnZUJ1ZmZlciA9IFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKGlt
YWdlUmVjdCwgc2hlYXJGcmVlQWJzb2x1dGVUcmFuc2Zvcm0sIERlc3RpbmF0aW9uQ29sb3JTcGFj
ZTo6U1JHQigpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkLCByZW5kZXJlci0+aG9zdFdp
bmRvdygpKTsKKyAgICAvLyBGSVhNRTogUmVwbGFjZSB0aGlzIGNhbGwgd2l0aCBHcmFwaGljc0Nv
bnRleHQ6OmNyZWF0ZUltYWdlQnVmZmVyKCkgb25jZSB0aGUgZGVzdGluYXRpb24gR3JhcGhpY3ND
b250ZXh0IGlzIHBhc3NlZCB0byB0aGlzIGZ1bmN0aW9uLgorICAgIGF1dG8gaW1hZ2VCdWZmZXIg
PSBjcmVhdGVJbWFnZUJ1ZmZlcihpbWFnZVJlY3QsIHNjYWxlLCByZW5kZXJlci0+aG9zdFdpbmRv
dygpKTsKICAgICBpZiAoIWltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm4geyB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAppbmRleCBmNDE0MDEyMzM4OTE5MDM4
N2FkMjc2OTZhNTA1NDQ1NGRmODkwMjhhLi42YmZmODk3NmM3OGJjYmYxZjRjMzMwMzdhYmY3YmM1
MjViZGY0NGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1h
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKQEAg
LTI1MCw3ICsyNTAsNyBAQCB2b2lkIFNWR0ltYWdlOjpkcmF3UGF0dGVybkZvckNvbnRhaW5lcihH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZQogICAgIEZsb2F0UmVjdCBp
bWFnZUJ1ZmZlclNpemUgPSB6b29tZWRDb250YWluZXJSZWN0OwogICAgIGltYWdlQnVmZmVyU2l6
ZS5zY2FsZShpbWFnZUJ1ZmZlclNjYWxlLndpZHRoKCksIGltYWdlQnVmZmVyU2NhbGUuaGVpZ2h0
KCkpOwogCi0gICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1
ZmZlcihleHBhbmRlZEludFNpemUoaW1hZ2VCdWZmZXJTaXplLnNpemUoKSksIDEsIERlc3RpbmF0
aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBjb250ZXh0KTsKKyAgICBhdXRvIGJ1ZmZlciA9IGNvbnRl
eHQuY3JlYXRlSW1hZ2VCdWZmZXIoZXhwYW5kZWRJbnRTaXplKGltYWdlQnVmZmVyU2l6ZS5zaXpl
KCkpKTsKICAgICBpZiAoIWJ1ZmZlcikgLy8gRmFpbGVkIHRvIGFsbG9jYXRlIGJ1ZmZlci4KICAg
ICAgICAgcmV0dXJuOwogICAgIGRyYXdGb3JDb250YWluZXIoYnVmZmVyLT5jb250ZXh0KCksIGNv
bnRhaW5lclNpemUsIGNvbnRhaW5lclpvb20sIGluaXRpYWxGcmFnbWVudFVSTCwgaW1hZ2VCdWZm
ZXJTaXplLCB6b29tZWRDb250YWluZXJSZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNw
cAppbmRleCA0YTI4YmQ0NmZhMTc3MDUzZTU3YzMxMjVmMWVlYWQxMGZjZWQ2NWU3Li42MzNiMzVm
NTc1N2NmMTgwNzE0MWVmYjAyNDU5YjNjMzhhM2Y4MzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVj
b3JkZXIuY3BwCkBAIC0yMDIsNyArMjAyLDcgQEAgdm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29y
ZGVyOjpjbGlwUGF0aChjb25zdCBQYXRoJiBwYXRoLCBXaW5kUnVsZSBydWxlKQogCiB2b2lkIFJl
bW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OmJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKGNvbnN0
IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29s
b3JTcGFjZSkKIHsKLSAgICBtX21hc2tJbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVD
b21wYXRpYmxlQnVmZmVyKGRlc3RpbmF0aW9uLnNpemUoKSwgY29sb3JTcGFjZSwgZHJhd2luZ0Nv
bnRleHQoKSk7CisgICAgbV9tYXNrSW1hZ2VCdWZmZXIgPSBkcmF3aW5nQ29udGV4dCgpLmNyZWF0
ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihkZXN0aW5hdGlvbi5zaXplKCksIGNvbG9yU3BhY2UpOwog
fQogCiB2b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OmVuZENsaXBUb0RyYXdpbmdDb21t
YW5kcyhjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNw
bGF5TGlzdFJlY29yZGVyUHJveHkuY3BwCmluZGV4IDlkMzQzZmE5YWM0OTRiYWM1ZWE0Y2FkZDAx
MTliMDBjZTJjODY3NmMuLjU5ZGQzYjYwMDRkYWU2MTg5ODUwM2I4MGE1OTI4ZWU5ZTdiZjEzNTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
RGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5jcHAKQEAgLTQ2
NCw2ICs0NjQsMzEgQEAgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4gUmVtb3RlRGlz
cGxheUxpc3RSZWNvcmRlclByb3h5OjpjcmVhdGVOZXN0ZWRDb24KICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHk+KCp0aGlzLCBpbml0aWFsQ2xpcCwg
aW5pdGlhbENUTSk7CiB9CiAKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gUmVtb3RlRGlzcGxheUxpc3RS
ZWNvcmRlclByb3h5OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNpemUmIHNpemUsIGNv
bnN0IERlc3RpbmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSByZW5k
ZXJpbmdNb2RlLCBSZW5kZXJpbmdNZXRob2QgcmVuZGVyaW5nTWV0aG9kKSBjb25zdAoreworICAg
IGlmIChVTkxJS0VMWSghbV9yZW5kZXJpbmdCYWNrZW5kKSkgeworICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgaWYgKHJl
bmRlcmluZ01ldGhvZCAhPSBSZW5kZXJpbmdNZXRob2Q6OkRlZmF1bHQpCisgICAgICAgIHJldHVy
biBSZWNvcmRlcjo6Y3JlYXRlSW1hZ2VCdWZmZXIoc2l6ZSwgY29sb3JTcGFjZSwgcmVuZGVyaW5n
TW9kZSwgcmVuZGVyaW5nTWV0aG9kKTsKKworICAgIHJldHVybiBtX3JlbmRlcmluZ0JhY2tlbmQt
PmNyZWF0ZUltYWdlQnVmZmVyKHNpemUsIHJlbmRlcmluZ01vZGUsIDEsIGNvbG9yU3BhY2UsIFBp
eGVsRm9ybWF0OjpCR1JBOCk7Cit9CisKK1JlZlB0cjxJbWFnZUJ1ZmZlcj4gUmVtb3RlRGlzcGxh
eUxpc3RSZWNvcmRlclByb3h5OjpjcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIoY29uc3QgRmxv
YXRTaXplJiBzaXplLCBjb25zdCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UmIGNvbG9yU3BhY2UsIFJl
bmRlcmluZ01ldGhvZCByZW5kZXJpbmdNZXRob2QpIGNvbnN0Cit7CisgICAgYXV0byByZW5kZXJp
bmdNb2RlID0gcmVuZGVyaW5nTWV0aG9kID09IFJlbmRlcmluZ01ldGhvZDo6RGVmYXVsdCA/IHRo
aXMtPnJlbmRlcmluZ01vZGUoKSA6IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQ7CisgICAg
cmV0dXJuIEdyYXBoaWNzQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIoc2l6ZSwgc2NhbGVGYWN0
b3IoKSwgY29sb3JTcGFjZSwgcmVuZGVyaW5nTW9kZSwgcmVuZGVyaW5nTWV0aG9kKTsKK30KKwor
UmVmUHRyPEltYWdlQnVmZmVyPiBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHk6OmNyZWF0
ZUNvbXBhdGlibGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IERlc3Rp
bmF0aW9uQ29sb3JTcGFjZSYgY29sb3JTcGFjZSwgUmVuZGVyaW5nTWV0aG9kIHJlbmRlcmluZ01l
dGhvZCkgY29uc3QKK3sKKyAgICBhdXRvIHJlbmRlcmluZ01vZGUgPSByZW5kZXJpbmdNZXRob2Qg
PT0gUmVuZGVyaW5nTWV0aG9kOjpEZWZhdWx0ID8gdGhpcy0+cmVuZGVyaW5nTW9kZSgpIDogUmVu
ZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZDsKKyAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0Ojpj
cmVhdGVJbWFnZUJ1ZmZlcihyZWN0LCBzY2FsZUZhY3RvcigpLCBjb2xvclNwYWNlLCByZW5kZXJp
bmdNb2RlLCByZW5kZXJpbmdNZXRob2QpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlz
dFJlY29yZGVyUHJveHkuaAppbmRleCAzMDA5OGJlYTYxYzFiNjQ0ZTQyMGFjYTMzMzlmOTA0NDkx
ZTRiN2ZmLi41ZThmNWM1ZjExNDdkYzlhMTNhNzg2OTdmOTc3ZDk2ZWZkYzAxOTk3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlM
aXN0UmVjb3JkZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmgKQEAgLTE0NCw2ICsxNDQsMTAg
QEAgcHJpdmF0ZToKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ+IGNyZWF0ZU5lc3RlZENvbnRleHQoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBpbml0aWFs
Q2xpcCwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RNKSBmaW5hbDsK
IAorICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29u
c3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgY29uc3QgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNw
YWNlJiwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwgV2ViQ29yZTo6UmVuZGVyaW5nTWV0aG9kKSBj
b25zdCBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IGNyZWF0ZUNvbXBh
dGlibGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBjb25zdCBXZWJDb3Jl
OjpEZXN0aW5hdGlvbkNvbG9yU3BhY2UmID0gV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNl
OjpTUkdCKCksIFdlYkNvcmU6OlJlbmRlcmluZ01ldGhvZCA9IFdlYkNvcmU6OlJlbmRlcmluZ01l
dGhvZDo6RGVmYXVsdCkgY29uc3QgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVm
ZmVyPiBjcmVhdGVDb21wYXRpYmxlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0
JiwgY29uc3QgV2ViQ29yZTo6RGVzdGluYXRpb25Db2xvclNwYWNlJiA9IFdlYkNvcmU6OkRlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBXZWJDb3JlOjpSZW5kZXJpbmdNZXRob2QgPSBXZWJD
b3JlOjpSZW5kZXJpbmdNZXRob2Q6OkRlZmF1bHQpIGNvbnN0IGZpbmFsOworCiAgICAgV2ViQ29y
ZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIG1fZGVzdGluYXRpb25CdWZmZXJJZGVudGlm
aWVyOwogICAgIFdlYWtQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IG1faW1hZ2VCdWZmZXI7CiAg
ICAgV2Vha1B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk+IG1fcmVuZGVyaW5nQmFja2Vu
ZDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451500</attachid>
            <date>2022-02-10 00:03:08 -0800</date>
            <delta_ts>2022-02-10 00:04:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235758-20220210000307.patch</filename>
            <type>text/plain</type>
            <size>22556</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NTE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2JhNWM4NWZjZDI4Yzc0
NmEyOTA4YzM1NTJkMTJiZTUxYWM3ZDg0Yy4uN2FhOTRmYjExNzJkNWViZmQ1MDEyZjUyZjcxY2E2
YzExNjM5YzMyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDIyLTAyLTA5ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgVGFiIGNoYXJh
Y3RlcnMgYW5kIGNoIHVuaXRzIGRvIG5vdCBvYmV5IHN5bnRoZXRpYyBib2xkIHdpZHRoIGFkanVz
dG1lbnRzIGNvcnJlY3RseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjM2MTcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgSXQgdHVybnMgb3V0IHdlIGhhdmUgYSBsb3Qgb2YgcGxhY2VzIHdoZXJlIGNvZGUg
d2FudHMgdG8ga25vdyB0aGUgc3ludGhldGljLWJvbGQtZXhwYW5kZWQKKyAgICAgICAgd2lkdGgg
b2YgY2hhcmFjdGVycy4gT25lIHBsYWNlIGlzICd0YWItd2lkdGg6IDxpbnRlZ2VyPicgYW5kIGFu
b3RoZXIgaXMgdGhlICdjaCcgdW5pdC4KKyAgICAgICAgSG93ZXZlciwgV2lkdGhJdGVyYXRvciBh
bmQgQ29tcGxleFRleHRDb250cm9sbGVyIGRvbid0IHdhbnQgdGhlIHN5bnRoZXRpYy1ib2xkLWV4
cGFuZGVkCisgICAgICAgIHdpZHRocywgYmVjYXVzZSB0aGV5IGV4cGxpY2l0bHkgYXBwbHkgc3lu
dGhldGljIGJvbGQgYWZ0ZXIgc2hhcGluZy4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgYSAy
LXZhbHVlIGVudW0gYXJndW1lbnQgdG8gdGhlIEZvbnQ6OndpZHRoRm9yR2x5cGgoKSBmdW5jdGlv
biwgc28gY2FsbGVycworICAgICAgICBjYW4gcGFzcyBpbiB3aGljaCBiZWhhdmlvciB0aGV5IHdh
bnQuIFRoZSBmdW5jdGlvbiBoYXMgYSBkZWZhdWx0IHZhbHVlIHRvIGluY2x1ZGUgdGhlCisgICAg
ICAgIHN5bnRoZXRpYyBib2xkIGV4cGFuc2lvbi4KKworICAgICAgICBJIHRoZW4gYXVkaXRlZCBl
dmVyeSBjYWxsIHNpdGUgb2YgdGhpcyBmdW5jdGlvbiwgYW5kIHBhc3NlZCBpbiB0aGUgY29ycmVj
dCBlbnVtIHZhbHVlLgorICAgICAgICBEb2luZyB0aGlzIGxlZCBtZSB0byBkaXNjb3ZlciB0d28g
YnVncyB3aGVyZSB0aGUgd3JvbmcgYmVoYXZpb3Igd2FzIGJlaW5nIHVzZWQsIGFuZCB0aGlzCisg
ICAgICAgIHBhdGNoIGZpeGVzIHRoZW0gYW5kIGFkZHMgdGVzdHMgZm9yIHRoZW0uCisKKyAgICAg
ICAgVGVzdHM6IGZhc3QvdGV4dC9jaC11bml0LXN5bnRoZXRpYy1ib2xkLmh0bWwKKyAgICAgICAg
ICAgICAgIGZhc3QvdGV4dC90YWItd2lkdGgtc3ludGhldGljLWJvbGQtY29tcGxleC5odG1sCisg
ICAgICAgICAgICAgICBmYXN0L3RleHQvdGFiLXdpZHRoLXN5bnRoZXRpYy1ib2xkLmh0bWwKKwor
ICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL3RleHQvVGV4dFV0aWwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpmYWxsYmFja0ZvbnRzRm9yUnVuV2l0aEl0
ZXJhdG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcGxleFRleHRDb250cm9sbGVyOjphZGp1c3RH
bHlwaHNBbmRBZHZhbmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpDb21wbGV4VGV4dENvbnRyb2xs
ZXI6OkNvbXBsZXhUZXh0UnVuOjpDb21wbGV4VGV4dFJ1bik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udC5oOgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6c3BhY2VXaWR0aCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpGb250Ojp3aWR0aEZvckdseXBoIGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGb250Q2FzY2FkZTo6d2lkdGhGb3JTaW1wbGVUZXh0IGNvbnN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhc2Nh
ZGU6OnRhYldpZHRoIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0
ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldpZHRoSXRlcmF0b3I6OmFkdmFuY2VJbnRl
cm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpXaWR0aEl0ZXJhdG9yOjpjYWxjdWxhdGVBZGRpdGlv
bmFsV2lkdGggY29uc3QpOgorCiAyMDIyLTAyLTA5ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRA
YXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUgUHJvY2Vzc10gTW92ZSBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlQ29tcGF0aWJsZUltYWdlQnVmZmVyKCkgYW5kIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmNyZWF0
ZUltYWdlQnVmZmVyIHRvIEdyYXBoaWNzQ29udGV4dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvdGV4dC9UZXh0VXRpbC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS90ZXh0L1RleHRV
dGlsLmNwcAppbmRleCAxZGRiZmZlMDdhYjk2NDJkYTYwMTFkNTVkY2NlYjEyYWVmMzA4MTkzLi4w
NWYzYjQ2NDlkNjNiY2EzMjY3MWI3YTkxYzU0M2I0NDlmNTMwMjJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS90ZXh0L1RleHRVdGls
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGlu
ZS90ZXh0L1RleHRVdGlsLmNwcApAQCAtMTIxLDcgKzEyMSw4IEBAIHN0YXRpYyB2b2lkIGZhbGxi
YWNrRm9udHNGb3JSdW5XaXRoSXRlcmF0b3IoSGFzaFNldDxjb25zdCBGb250Kj4mIGZhbGxiYWNr
Rm9udHMsCiAgICAgICAgICAgICBhdXRvIGdseXBoRGF0YSA9IGZvbnRDYXNjYWRlLmdseXBoRGF0
YUZvckNoYXJhY3RlcihjaGFyYWN0ZXIsIGlzUlRMKTsKICAgICAgICAgICAgIGlmIChnbHlwaERh
dGEuZ2x5cGggJiYgZ2x5cGhEYXRhLmZvbnQgJiYgZ2x5cGhEYXRhLmZvbnQgIT0gJnByaW1hcnlG
b250KSB7CiAgICAgICAgICAgICAgICAgYXV0byBpc05vblNwYWNpbmdNYXJrID0gVV9NQVNLKHVf
Y2hhclR5cGUoY2hhcmFjdGVyKSkgJiBVX0dDX01OX01BU0s7Ci0gICAgICAgICAgICAgICAgaWYg
KGlzTm9uU3BhY2luZ01hcmsgfHwgZ2x5cGhEYXRhLmZvbnQtPndpZHRoRm9yR2x5cGgoZ2x5cGhE
YXRhLmdseXBoKSkKKyAgICAgICAgICAgICAgICAvLyBJZiB3ZSBpbmNsdWRlIHRoZSBzeW50aGV0
aWMgYm9sZCBleHBhbnNpb24sIHRoZW4gZXZlbiB6ZXJvLXdpZHRoIGdseXBocyB3aWxsIGhhdmUg
dGhlaXIgZm9udHMgYWRkZWQuCisgICAgICAgICAgICAgICAgaWYgKGlzTm9uU3BhY2luZ01hcmsg
fHwgZ2x5cGhEYXRhLmZvbnQtPndpZHRoRm9yR2x5cGgoZ2x5cGhEYXRhLmdseXBoLCBGb250OjpT
eW50aGV0aWNCb2xkSW5jbHVzaW9uOjpFeGNsdWRlKSkKICAgICAgICAgICAgICAgICAgICAgZmFs
bGJhY2tGb250cy5hZGQoZ2x5cGhEYXRhLmZvbnQpOwogICAgICAgICAgICAgfQogICAgICAgICB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRl
eHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbXBs
ZXhUZXh0Q29udHJvbGxlci5jcHAKaW5kZXggZDNjNzU2ZmE4M2RmMDY4YzBkZTc1ZjQwYmJlNjgy
Njc3NzM2NDdlNy4uMTQwZTY4ZTZkZDE4MzcxNTUyNWE5ZmQ5OTI0ODNiMzE4NWFiMDZiOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250
cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4
VGV4dENvbnRyb2xsZXIuY3BwCkBAIC02OTMsNyArNjkzLDggQEAgdm9pZCBDb21wbGV4VGV4dENv
bnRyb2xsZXI6OmFkanVzdEdseXBoc0FuZEFkdmFuY2VzKCkKICAgICAgICAgY29uc3QgQ0dHbHlw
aCogZ2x5cGhzID0gY29tcGxleFRleHRSdW4uZ2x5cGhzKCk7CiAgICAgICAgIGNvbnN0IEZsb2F0
U2l6ZSogYWR2YW5jZXMgPSBjb21wbGV4VGV4dFJ1bi5iYXNlQWR2YW5jZXMoKTsKIAotICAgICAg
ICBmbG9hdCBzcGFjZVdpZHRoID0gZm9udC5zcGFjZVdpZHRoKCk7CisgICAgICAgIC8vIExvd2Vy
IGluIHRoaXMgZnVuY3Rpb24sIHN5bnRoZXRpYyBib2xkIGlzIGJsYW5rZXQtYXBwbGllZCB0byBl
dmVyeXRoaW5nLCBzbyBubyBuZWVkIHRvIGRvdWJsZS1hcHBseSBpdCBoZXJlLgorICAgICAgICBm
bG9hdCBzcGFjZVdpZHRoID0gZm9udC5zcGFjZVdpZHRoKEZvbnQ6OlN5bnRoZXRpY0JvbGRJbmNs
dXNpb246OkV4Y2x1ZGUpOwogICAgICAgICBjb25zdCBVQ2hhciogY3AgPSBjb21wbGV4VGV4dFJ1
bi5jaGFyYWN0ZXJzKCk7CiAgICAgICAgIEZsb2F0UG9pbnQgZ2x5cGhPcmlnaW47CiAgICAgICAg
IHVuc2lnbmVkIGxhc3RDaGFyYWN0ZXJJbmRleCA9IG1fcnVuLmx0cigpID8gc3RkOjpudW1lcmlj
X2xpbWl0czx1bnNpZ25lZD46Om1pbigpIDogc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46
Om1heCgpOwpAQCAtNzE0LDggKzcxNSw4IEBAIHZvaWQgQ29tcGxleFRleHRDb250cm9sbGVyOjph
ZGp1c3RHbHlwaHNBbmRBZHZhbmNlcygpCiAgICAgICAgICAgICBDR0dseXBoIGdseXBoID0gZ2x5
cGhzW2ldOwogICAgICAgICAgICAgRmxvYXRTaXplIGFkdmFuY2UgPSB0cmVhdEFzU3BhY2UgPyBG
bG9hdFNpemUoc3BhY2VXaWR0aCwgYWR2YW5jZXNbaV0uaGVpZ2h0KCkpIDogYWR2YW5jZXNbaV07
CiAKLSAgICAgICAgICAgIGlmIChjaCA9PSAnXHQnICYmIG1fcnVuLmFsbG93VGFicygpKQotICAg
ICAgICAgICAgICAgIGFkdmFuY2Uuc2V0V2lkdGgobV9mb250LnRhYldpZHRoKGZvbnQsIG1fcnVu
LnRhYlNpemUoKSwgbV9ydW4ueFBvcygpICsgbV90b3RhbEFkdmFuY2Uud2lkdGgoKSkpOworICAg
ICAgICAgICAgaWYgKGNoID09IHRhYkNoYXJhY3RlciAmJiBtX3J1bi5hbGxvd1RhYnMoKSkKKyAg
ICAgICAgICAgICAgICBhZHZhbmNlLnNldFdpZHRoKG1fZm9udC50YWJXaWR0aChmb250LCBtX3J1
bi50YWJTaXplKCksIG1fcnVuLnhQb3MoKSArIG1fdG90YWxBZHZhbmNlLndpZHRoKCksIEZvbnQ6
OlN5bnRoZXRpY0JvbGRJbmNsdXNpb246OkV4Y2x1ZGUpKTsKICAgICAgICAgICAgIGVsc2UgaWYg
KEZvbnRDYXNjYWRlOjp0cmVhdEFzWmVyb1dpZHRoU3BhY2UoY2gpICYmICF0cmVhdEFzU3BhY2Up
IHsKICAgICAgICAgICAgICAgICBhZHZhbmNlLnNldFdpZHRoKDApOwogICAgICAgICAgICAgICAg
IGdseXBoID0gZm9udC5zcGFjZUdseXBoKCk7CkBAIC04NDQsNyArODQ1LDggQEAgQ29tcGxleFRl
eHRDb250cm9sbGVyOjpDb21wbGV4VGV4dFJ1bjo6Q29tcGxleFRleHRSdW4oY29uc3QgRm9udCYg
Zm9udCwgY29uc3QgVUMKIAogICAgIC8vIFN5bnRoZXNpemUgYSBydW4gb2YgbWlzc2luZyBnbHlw
aHMuCiAgICAgbV9nbHlwaHMuZmlsbCgwLCBtX2dseXBoQ291bnQpOwotICAgIG1fYmFzZUFkdmFu
Y2VzLmZpbGwoRmxvYXRTaXplKG1fZm9udC53aWR0aEZvckdseXBoKDApLCAwKSwgbV9nbHlwaENv
dW50KTsKKyAgICAvLyBTeW50aGV0aWMgYm9sZCB3aWxsIGJlIGhhbmRsZWQgbGF0ZXIgaW4gYWRq
dXN0R2x5cGhzQW5kQWR2YW5jZXMoKS4KKyAgICBtX2Jhc2VBZHZhbmNlcy5maWxsKEZsb2F0U2l6
ZShtX2ZvbnQud2lkdGhGb3JHbHlwaCgwLCBGb250OjpTeW50aGV0aWNCb2xkSW5jbHVzaW9uOjpF
eGNsdWRlKSwgMCksIG1fZ2x5cGhDb3VudCk7CiB9CiAKIENvbXBsZXhUZXh0Q29udHJvbGxlcjo6
Q29tcGxleFRleHRSdW46OkNvbXBsZXhUZXh0UnVuKGNvbnN0IFZlY3RvcjxGbG9hdFNpemU+JiBh
ZHZhbmNlcywgY29uc3QgVmVjdG9yPEZsb2F0UG9pbnQ+JiBvcmlnaW5zLCBjb25zdCBWZWN0b3I8
R2x5cGg+JiBnbHlwaHMsIGNvbnN0IFZlY3Rvcjx1bnNpZ25lZD4mIHN0cmluZ0luZGljZXMsIEZs
b2F0U2l6ZSBpbml0aWFsQWR2YW5jZSwgY29uc3QgRm9udCYgZm9udCwgY29uc3QgVUNoYXIqIGNo
YXJhY3RlcnMsIHVuc2lnbmVkIHN0cmluZ0xvY2F0aW9uLCB1bnNpZ25lZCBzdHJpbmdMZW5ndGgs
IHVuc2lnbmVkIGluZGV4QmVnaW4sIHVuc2lnbmVkIGluZGV4RW5kLCBib29sIGx0cikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKaW5kZXggZGI5OWQ0MDExODU5ODEx
Mjc3ZDA5ZjBjZGNiNDQ0OTU2NDhmNzQzYi4uYzQ1MDhiZDc1YWIyODVlMjA1Mjk0MWIzM2IyYTQ1
YjQ1ZDA1ZmI4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAK
QEAgLTE2NSwxNSArMTY1LDExIEBAIHZvaWQgRm9udDo6cGxhdGZvcm1HbHlwaEluaXQoKQogICAg
IH0gZWxzZQogICAgICAgICBtX2ZvbnRNZXRyaWNzLnNldElkZW9ncmFtV2lkdGgocGxhdGZvcm1E
YXRhKCkuc2l6ZSgpKTsKIAotICAgIG1fc3BhY2VXaWR0aCA9IHdpZHRoRm9yR2x5cGgobV9zcGFj
ZUdseXBoKTsKKyAgICBtX3NwYWNlV2lkdGggPSB3aWR0aEZvckdseXBoKG1fc3BhY2VHbHlwaCwg
U3ludGhldGljQm9sZEluY2x1c2lvbjo6RXhjbHVkZSk7IC8vIHNwYWNlV2lkdGgoKSBoYW5kbGVz
IGFkZGluZyBpbiB0aGUgc3ludGhldGljIGJvbGQuCiAgICAgYXV0byBhbW91bnRUb0FkanVzdExp
bmVHYXAgPSBzdGQ6Om1pbihtX2ZvbnRNZXRyaWNzLmZsb2F0TGluZUdhcCgpLCAwLjBmKTsKICAg
ICBtX2ZvbnRNZXRyaWNzLnNldExpbmVHYXAobV9mb250TWV0cmljcy5mbG9hdExpbmVHYXAoKSAt
IGFtb3VudFRvQWRqdXN0TGluZUdhcCk7CiAgICAgbV9mb250TWV0cmljcy5zZXRMaW5lU3BhY2lu
ZyhtX2ZvbnRNZXRyaWNzLmZsb2F0TGluZVNwYWNpbmcoKSAtIGFtb3VudFRvQWRqdXN0TGluZUdh
cCk7CiAgICAgZGV0ZXJtaW5lUGl0Y2goKTsKLSAgICAvLyBOYXN0eSBoYWNrIHRvIGRldGVybWlu
ZSBpZiB3ZSBzaG91bGQgcm91bmQgb3IgY2VpbCBzcGFjZSB3aWR0aHMuCi0gICAgLy8gSWYgdGhl
IGZvbnQgaXMgbW9ub3NwYWNlIG9yIGZha2UgbW9ub3NwYWNlIHdlIGNlaWwgdG8gZW5zdXJlIHRo
YXQKLSAgICAvLyBldmVyeSBjaGFyYWN0ZXIgYW5kIHRoZSBzcGFjZSBhcmUgdGhlIHNhbWUgd2lk
dGguIE90aGVyd2lzZSB3ZSByb3VuZC4KLSAgICBtX2FkanVzdGVkU3BhY2VXaWR0aCA9IG1fdHJl
YXRBc0ZpeGVkUGl0Y2ggPyBjZWlsZihtX3NwYWNlV2lkdGgpIDogcm91bmRmKG1fc3BhY2VXaWR0
aCk7CiB9CiAKIEZvbnQ6On5Gb250KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnQuaAppbmRleCA3OTUzOWExNTFiMDViMTgwYjMwOTkxMzVjNDE1NzA0NDhiMDUwNjg5Li5iODkz
YjM4MDFiYjA1MzIwZDQ1ZjJhMzlmMDhiZmMxZDg0Mzg1NmU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udC5oCkBAIC0xMzgsMjIgKzEzOCwxOSBAQCBwdWJsaWM6CiAKICAg
ICBGbG9hdFJlY3QgYm91bmRzRm9yR2x5cGgoR2x5cGgpIGNvbnN0OwogCi0gICAgLy8gSWYgeW91
J3JlIGNhbGxpbmcgdGhpcywgeW91IG5lZWQgdG8gY2FyZSBhYm91dCBzeW50aGV0aWMgYm9sZC4K
LSAgICAvLyBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHdpZHRoIGJlZm9yZSBhZGRpbmcgaW4g
dGhlIHN5bnRoZXRpYyBib2xkIG9mZnNldC4KLSAgICAvLyBUaGlzIGlzIGJlY2F1c2UgdGhlc2Ug
d2lkdGhzIGFyZSBmZWQgYXMgYW4gaW5wdXQgdG8gc2hhcGluZywgd2hpY2ggbmVlZHMgdG8gY29u
c3VtZSB0aGUgdHJ1ZSB3aWR0aHMuCi0gICAgLy8gVGhlbiwgdGhlIHN5bnRoZXRpYyBib2xkIG9m
ZnNldCBpcyBhcHBsaWVkIGFmdGVyIHNoYXBpbmcuCi0gICAgLy8gSWYgeW91J3JlIG5vdCBnb2lu
ZyB0aHJvdWdoIFdpZHRoSXRlcmF0b3Igb3IgQ29tcGxleFRleHRDb250cm9sbGVyIChhbmQgdGh1
cyBwb3RlbnRpYWxseSBleGVjdXRpbmcgc2hhcGluZyB5b3Vyc2VsZiksCi0gICAgLy8gdGhlbiB5
b3UgbmVlZCB0byBkZWNpZGUgd2hldGhlciBvciBub3QgeW91IG5lZWQgdG8gYWRkIHN5bnRoZXRp
Y0JvbGRPZmZzZXQoKSB0byB0aGUgcmVzdWx0IG9mIHlvdXIgd2lkdGhGb3JHbHlwaCgpIGNhbGwu
Ci0gICAgZmxvYXQgd2lkdGhGb3JHbHlwaChHbHlwaCkgY29uc3Q7CisgICAgLy8gU2hvdWxkIHRo
ZSByZXN1bHQgb2YgdGhpcyBmdW5jdGlvbiBpbmNsdWRlIHRoZSByZXN1bHRzIG9mIHN5bnRoZXRp
YyBib2xkPworICAgIGVudW0gY2xhc3MgU3ludGhldGljQm9sZEluY2x1c2lvbiB7CisgICAgICAg
IEluY29ycG9yYXRlLAorICAgICAgICBFeGNsdWRlCisgICAgfTsKKyAgICBmbG9hdCB3aWR0aEZv
ckdseXBoKEdseXBoLCBTeW50aGV0aWNCb2xkSW5jbHVzaW9uID0gU3ludGhldGljQm9sZEluY2x1
c2lvbjo6SW5jb3Jwb3JhdGUpIGNvbnN0OwogCiAgICAgY29uc3QgUGF0aCYgcGF0aEZvckdseXBo
KEdseXBoKSBjb25zdDsgLy8gRG9uJ3Qgc3RvcmUgdGhlIHJlc3VsdCBvZiB0aGlzISBUaGUgaGFz
aCBtYXAgaXMgZnJlZSB0byByZWhhc2ggYXQgYW55IHBvaW50LCBsZWF2aW5nIHRoaXMgcmVmZXJl
bmNlIGRhbmdsaW5nLgotICAgIEZsb2F0UmVjdCBwbGF0Zm9ybUJvdW5kc0ZvckdseXBoKEdseXBo
KSBjb25zdDsKLSAgICBmbG9hdCBwbGF0Zm9ybVdpZHRoRm9yR2x5cGgoR2x5cGgpIGNvbnN0Owot
ICAgIFBhdGggcGxhdGZvcm1QYXRoRm9yR2x5cGgoR2x5cGgpIGNvbnN0OwogCi0gICAgLy8gSWYg
eW91J3JlIGNhbGxpbmcgdGhpcywgeW91IG5lZWQgdG8gY2FyZSBhYm91dCBzeW50aGV0aWMgYm9s
ZC4KLSAgICAvLyBTZWUgdGhlIGNvbW1lbnQganVzdCBhYm92ZSB3aWR0aEZvckdseXBoKCkuCi0g
ICAgZmxvYXQgc3BhY2VXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3BhY2VXaWR0aDsgfQorICAg
IGZsb2F0IHNwYWNlV2lkdGgoU3ludGhldGljQm9sZEluY2x1c2lvbiBTeW50aGV0aWNCb2xkSW5j
bHVzaW9uID0gU3ludGhldGljQm9sZEluY2x1c2lvbjo6SW5jb3Jwb3JhdGUpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gbV9zcGFjZVdpZHRoICsgKFN5bnRoZXRpY0JvbGRJbmNsdXNpb24g
PT0gU3ludGhldGljQm9sZEluY2x1c2lvbjo6SW5jb3Jwb3JhdGUgPyBzeW50aGV0aWNCb2xkT2Zm
c2V0KCkgOiAwKTsKKyAgICB9CiAKICAgICBmbG9hdCBzeW50aGV0aWNCb2xkT2Zmc2V0KCkgY29u
c3QgeyByZXR1cm4gbV9zeW50aGV0aWNCb2xkT2Zmc2V0OyB9CiAKQEAgLTIzNiw2ICsyMzMsMTAg
QEAgcHJpdmF0ZToKICAgICBmbG9hdCB3aWR0aEZvckdESUdseXBoKEdseXBoKSBjb25zdDsKICNl
bmRpZgogCisgICAgRmxvYXRSZWN0IHBsYXRmb3JtQm91bmRzRm9yR2x5cGgoR2x5cGgpIGNvbnN0
OworICAgIGZsb2F0IHBsYXRmb3JtV2lkdGhGb3JHbHlwaChHbHlwaCkgY29uc3Q7CisgICAgUGF0
aCBwbGF0Zm9ybVBhdGhGb3JHbHlwaChHbHlwaCkgY29uc3Q7CisKICNpZiBQTEFURk9STShDT0NP
QSkKICAgICBjbGFzcyBDb21wbGV4Q29sb3JGb3JtYXRHbHlwaHMgewogICAgIHB1YmxpYzoKQEAg
LTMyNCw3ICszMjUsNiBAQCBwcml2YXRlOgogICAgIFZpc2liaWxpdHkgbV92aXNpYmlsaXR5OyAv
LyBAZm9udC1mYWNlJ3MgaW50ZXJuYWwgdGltZXIgY2FuIGNhdXNlIHVzIHRvIHNob3cgZm9udHMg
ZXZlbiB3aGVuIGEgZm9udCBpcyBiZWluZyBkb3dubG9hZGVkLgogCiAgICAgZmxvYXQgbV9zcGFj
ZVdpZHRoIHsgMCB9OwotICAgIGZsb2F0IG1fYWRqdXN0ZWRTcGFjZVdpZHRoIHsgMCB9OwogCiAg
ICAgZmxvYXQgbV9zeW50aGV0aWNCb2xkT2Zmc2V0IHsgMCB9OwogCkBAIC0zNjksNyArMzY5LDcg
QEAgQUxXQVlTX0lOTElORSBGbG9hdFJlY3QgRm9udDo6Ym91bmRzRm9yR2x5cGgoR2x5cGggZ2x5
cGgpIGNvbnN0CiAgICAgcmV0dXJuIGJvdW5kczsKIH0KIAotQUxXQVlTX0lOTElORSBmbG9hdCBG
b250Ojp3aWR0aEZvckdseXBoKEdseXBoIGdseXBoKSBjb25zdAorQUxXQVlTX0lOTElORSBmbG9h
dCBGb250Ojp3aWR0aEZvckdseXBoKEdseXBoIGdseXBoLCBTeW50aGV0aWNCb2xkSW5jbHVzaW9u
IFN5bnRoZXRpY0JvbGRJbmNsdXNpb24pIGNvbnN0CiB7CiAgICAgLy8gVGhlIG9wdGltaXphdGlv
biBvZiByZXR1cm5pbmcgMCBmb3IgdGhlIHplcm8td2lkdGgtc3BhY2UgZ2x5cGggaXMgaW5jb3Jy
ZWN0IGZvciB0aGUgTGFzdFJlc29ydCBmb250LAogICAgIC8vIHVzZWQgaW4gcGxhY2Ugb2YgdGhl
IGFjdHVhbCBmb250IHdoZW4gaXNMb2FkaW5nKCkgaXMgdHJ1ZSBvbiBib3RoIG1hY09TIGFuZCBp
T1MuCkBAIC0zODAsNyArMzgwLDcgQEAgQUxXQVlTX0lOTElORSBmbG9hdCBGb250Ojp3aWR0aEZv
ckdseXBoKEdseXBoIGdseXBoKSBjb25zdAogCiAgICAgZmxvYXQgd2lkdGggPSBtX2dseXBoVG9X
aWR0aE1hcC5tZXRyaWNzRm9yR2x5cGgoZ2x5cGgpOwogICAgIGlmICh3aWR0aCAhPSBjR2x5cGhT
aXplVW5rbm93bikKLSAgICAgICAgcmV0dXJuIHdpZHRoOworICAgICAgICByZXR1cm4gd2lkdGgg
KyAoU3ludGhldGljQm9sZEluY2x1c2lvbiA9PSBTeW50aGV0aWNCb2xkSW5jbHVzaW9uOjpJbmNv
cnBvcmF0ZSA/IHN5bnRoZXRpY0JvbGRPZmZzZXQoKSA6IDApOwogCiAjaWYgRU5BQkxFKE9QRU5U
WVBFX1ZFUlRJQ0FMKQogICAgIGlmIChtX3ZlcnRpY2FsRGF0YSkKQEAgLTM5MCw3ICszOTAsNyBA
QCBBTFdBWVNfSU5MSU5FIGZsb2F0IEZvbnQ6OndpZHRoRm9yR2x5cGgoR2x5cGggZ2x5cGgpIGNv
bnN0CiAgICAgICAgIHdpZHRoID0gcGxhdGZvcm1XaWR0aEZvckdseXBoKGdseXBoKTsKIAogICAg
IG1fZ2x5cGhUb1dpZHRoTWFwLnNldE1ldHJpY3NGb3JHbHlwaChnbHlwaCwgd2lkdGgpOwotICAg
IHJldHVybiB3aWR0aDsKKyAgICByZXR1cm4gd2lkdGggKyAoU3ludGhldGljQm9sZEluY2x1c2lv
biA9PSBTeW50aGV0aWNCb2xkSW5jbHVzaW9uOjpJbmNvcnBvcmF0ZSA/IHN5bnRoZXRpY0JvbGRP
ZmZzZXQoKSA6IDApOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKaW5kZXggM2M4ZTI0OTc3
NTk5M2E5ZmY5NjllMmQwODZhODBmMGRmMWI0ZDNmMS4uODUxODBhZDEwOWZkODE4ZTliYjE1ODhj
ZTk2MmFiNDYzMDgxNmEwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udENhc2NhZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRDYXNjYWRlLmNwcApAQCAtMzE2LDYgKzMxNiw3IEBAIGZsb2F0IEZvbnRDYXNjYWRl
Ojp3aWR0aEZvclNpbXBsZVRleHQoU3RyaW5nVmlldyB0ZXh0LCBUZXh0RGlyZWN0aW9uIHRleHRE
aXJlY3RpCiAgICAgYXV0byYgZm9udCA9IHByaW1hcnlGb250KCk7CiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IHRleHQubGVuZ3RoKCk7ICsraSkgewogICAgICAgICBhdXRvIGdseXBoID0g
Z2x5cGhEYXRhRm9yQ2hhcmFjdGVyKHRleHRbaV0sIGZhbHNlKS5nbHlwaDsKKyAgICAgICAgQVNT
RVJUKCFmb250LnN5bnRoZXRpY0JvbGRPZmZzZXQoKSk7IC8vIFRoaXMgZnVuY3Rpb24gc2hvdWxk
IG9ubHkgYmUgY2FsbGVkIHdoZW4gUmVuZGVyVGV4dDo6Y29tcHV0ZUNhblVzZVNpbXBsaWZpZWRU
ZXh0TWVhc3VyaW5nKCkgcmV0dXJucyB0cnVlLCBhbmQgdGhhdCBmdW5jdGlvbiByZXF1aXJlcyBu
byBzeW50aGV0aWMgYm9sZC4KICAgICAgICAgYXV0byBnbHlwaFdpZHRoID0gZm9udC53aWR0aEZv
ckdseXBoKGdseXBoKTsKICAgICAgICAgYmVmb3JlV2lkdGggKz0gZ2x5cGhXaWR0aDsKICAgICAg
ICAgZ2x5cGhCdWZmZXIuYWRkKGdseXBoLCBmb250LCBnbHlwaFdpZHRoLCBpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oCmluZGV4IDI0Y2ZiNzEz
NzQzMWE3N2VjYjAxZmVkYWE0NDczYzY5Nzg0NDc2YzMuLjA5ZjQxZDYwMWQ2MGNiMTBmYjk5NjU0
MDE0OWExYmM2NTJmY2U4MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnRDYXNjYWRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udENhc2NhZGUuaApAQCAtMTY4LDggKzE2OCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlz
UGxhdGZvcm1Gb250KCkgY29uc3QgeyByZXR1cm4gbV9mb250cy0+aXNGb3JQbGF0Zm9ybUZvbnQo
KTsgfQogCiAgICAgY29uc3QgRm9udE1ldHJpY3MmIG1ldHJpY3NPZlByaW1hcnlGb250KCkgY29u
c3QgeyByZXR1cm4gcHJpbWFyeUZvbnQoKS5mb250TWV0cmljcygpOyB9Ci0gICAgZmxvYXQgdGFi
V2lkdGgoY29uc3QgRm9udCYsIGNvbnN0IFRhYlNpemUmLCBmbG9hdCkgY29uc3Q7Ci0gICAgZmxv
YXQgdGFiV2lkdGgoY29uc3QgVGFiU2l6ZSYgdGFiU2l6ZSwgZmxvYXQgcG9zaXRpb24pIGNvbnN0
IHsgcmV0dXJuIHRhYldpZHRoKHByaW1hcnlGb250KCksIHRhYlNpemUsIHBvc2l0aW9uKTsgfQor
ICAgIGZsb2F0IHRhYldpZHRoKGNvbnN0IEZvbnQmLCBjb25zdCBUYWJTaXplJiwgZmxvYXQsIEZv
bnQ6OlN5bnRoZXRpY0JvbGRJbmNsdXNpb24pIGNvbnN0OwogICAgIGJvb2wgaGFzVmFsaWRBdmVy
YWdlQ2hhcldpZHRoKCkgY29uc3Q7CiAgICAgYm9vbCBmYXN0QXZlcmFnZUNoYXJXaWR0aElmQXZh
aWxhYmxlKGZsb2F0ICZ3aWR0aCkgY29uc3Q7IC8vIHJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzCiAK
QEAgLTM3MywxMyArMzcyLDIwIEBAIGlubGluZSBGb250U2VsZWN0b3IqIEZvbnRDYXNjYWRlOjpm
b250U2VsZWN0b3IoKSBjb25zdAogICAgIHJldHVybiBtX2ZvbnRzID8gbV9mb250cy0+Zm9udFNl
bGVjdG9yKCkgOiBudWxscHRyOwogfQogCi1pbmxpbmUgZmxvYXQgRm9udENhc2NhZGU6OnRhYldp
ZHRoKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IFRhYlNpemUmIHRhYlNpemUsIGZsb2F0IHBvc2l0
aW9uKSBjb25zdAoraW5saW5lIGZsb2F0IEZvbnRDYXNjYWRlOjp0YWJXaWR0aChjb25zdCBGb250
JiBmb250LCBjb25zdCBUYWJTaXplJiB0YWJTaXplLCBmbG9hdCBwb3NpdGlvbiwgRm9udDo6U3lu
dGhldGljQm9sZEluY2x1c2lvbiBzeW50aGV0aWNCb2xkSW5jbHVzaW9uKSBjb25zdAogewogICAg
IGZsb2F0IGJhc2VUYWJXaWR0aCA9IHRhYlNpemUud2lkdGhJblBpeGVscyhmb250LnNwYWNlV2lk
dGgoKSk7CisgICAgZmxvYXQgcmVzdWx0ID0gMDsKICAgICBpZiAoIWJhc2VUYWJXaWR0aCkKLSAg
ICAgICAgcmV0dXJuIGxldHRlclNwYWNpbmcoKTsKLSAgICBmbG9hdCB0YWJEZWx0YVdpZHRoID0g
YmFzZVRhYldpZHRoIC0gZm1vZGYocG9zaXRpb24sIGJhc2VUYWJXaWR0aCk7Ci0gICAgcmV0dXJu
ICh0YWJEZWx0YVdpZHRoIDwgZm9udC5zcGFjZVdpZHRoKCkgLyAyKSA/IGJhc2VUYWJXaWR0aCA6
IHRhYkRlbHRhV2lkdGg7CisgICAgICAgIHJlc3VsdCA9IGxldHRlclNwYWNpbmcoKTsKKyAgICBl
bHNlIHsKKyAgICAgICAgZmxvYXQgdGFiRGVsdGFXaWR0aCA9IGJhc2VUYWJXaWR0aCAtIGZtb2Rm
KHBvc2l0aW9uLCBiYXNlVGFiV2lkdGgpOworICAgICAgICByZXN1bHQgPSAodGFiRGVsdGFXaWR0
aCA8IGZvbnQuc3BhY2VXaWR0aCgpIC8gMikgPyBiYXNlVGFiV2lkdGggOiB0YWJEZWx0YVdpZHRo
OworICAgIH0KKyAgICAvLyBJZiBvdXIgY2FsbGVyIHBhc3NlcyBpbiBTeW50aGV0aWNCb2xkSW5j
bHVzaW9uOjpFeGNsdWRlLCB0aGF0IG1lYW5zIHRoZXkncmUgZ29pbmcgdG8gYXBwbHkgc3ludGhl
dGljIGJvbGQgdGhlbXNlbHZlcyBsYXRlci4KKyAgICAvLyBIb3dldmVyLCByZWdhcmRsZXNzIG9m
IHRoYXQsIHRoZSBzcGFjZSBjaGFyYWN0ZXJzIHRoYXQgYXJlIGZlZCBpbnRvIHRoZSB3aWR0aCBj
YWxjdWxhdGlvbiBuZWVkIHRvIGhhdmUgdGhlaXIgY29ycmVjdCB3aWR0aCwgaW5jbHVkaW5nIHRo
ZSBzeW50aGV0aWMgYm9sZC4KKyAgICAvLyBTbywgd2UndmUgYWxyZWFkeSBnb3Qgc3ludGhldGlj
IGJvbGQgYXBwbGllZCwgc28gaWYgd2UncmUgc3VwcG9zZWQgdG8gZXhjbHVkZSBpdCwgd2UgbmVl
ZCB0byBzdWJ0cmFjdCBpdCBvdXQgaGVyZS4KKyAgICByZXR1cm4gcmVzdWx0IC0gKHN5bnRoZXRp
Y0JvbGRJbmNsdXNpb24gPT0gRm9udDo6U3ludGhldGljQm9sZEluY2x1c2lvbjo6RXhjbHVkZSA/
IGZvbnQuc3ludGhldGljQm9sZE9mZnNldCgpIDogMCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAKaW5kZXggZjhjZTY3
NWFjYmI1ODU0OWRlODQ5ODA2YmU1NDdkYmNlODVjNDY5OC4uZTg2MGJiMTI4YzJmMTYwYjEyMjMw
YjRiYTRmYmQwNjAxMTNmZWUyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAKQEAgLTMwNiw3ICszMDYsNyBAQCBpbmxpbmUgdm9p
ZCBXaWR0aEl0ZXJhdG9yOjphZHZhbmNlSW50ZXJuYWwoVGV4dEl0ZXJhdG9yJiB0ZXh0SXRlcmF0
b3IsIEdseXBoQnVmZgogICAgICAgICBjb25zdCBGb250JiBmb250ID0gZ2x5cGhEYXRhLmZvbnQg
PyAqZ2x5cGhEYXRhLmZvbnQgOiBwcmltYXJ5Rm9udDsKIAogICAgICAgICBwcmV2aW91c1dpZHRo
ID0gd2lkdGg7Ci0gICAgICAgIHdpZHRoID0gZm9udC53aWR0aEZvckdseXBoKGdseXBoKTsKKyAg
ICAgICAgd2lkdGggPSBmb250LndpZHRoRm9yR2x5cGgoZ2x5cGgsIEZvbnQ6OlN5bnRoZXRpY0Jv
bGRJbmNsdXNpb246OkV4Y2x1ZGUpOyAvLyBXZSBhcHBseSBzeW50aGV0aWMgYm9sZCBhZnRlciBz
aGFwaW5nLCBpbiBhcHBseUNTU1Zpc2liaWxpdHlSdWxlcygpLgogCiAgICAgICAgIGlmICgmZm9u
dCAhPSBsYXN0Rm9udERhdGEpCiAgICAgICAgICAgICBjb21taXRDdXJyZW50Rm9udFJhbmdlKGds
eXBoQnVmZmVyLCBsYXN0R2x5cGhDb3VudCwgY3VycmVudENoYXJhY3RlckluZGV4LCBsYXN0Rm9u
dERhdGEsIGZvbnQsIHByaW1hcnlGb250LCBjaGFyYWN0ZXIsIHdpZHRoT2ZDdXJyZW50Rm9udFJh
bmdlLCB3aWR0aCwgY2hhcmFjdGVyc1RyZWF0ZWRBc1NwYWNlKTsKQEAgLTMxNCw3ICszMTQsNyBA
QCBpbmxpbmUgdm9pZCBXaWR0aEl0ZXJhdG9yOjphZHZhbmNlSW50ZXJuYWwoVGV4dEl0ZXJhdG9y
JiB0ZXh0SXRlcmF0b3IsIEdseXBoQnVmZgogICAgICAgICAgICAgd2lkdGhPZkN1cnJlbnRGb250
UmFuZ2UgKz0gd2lkdGg7CiAKICAgICAgICAgaWYgKEZvbnRDYXNjYWRlOjp0cmVhdEFzU3BhY2Uo
Y2hhcmFjdGVyKSkKLSAgICAgICAgICAgIGNoYXJhY3RlcnNUcmVhdGVkQXNTcGFjZS5jb25zdHJ1
Y3RBbmRBcHBlbmQoY3VycmVudENoYXJhY3RlckluZGV4LCBjaGFyYWN0ZXIgPT0gc3BhY2UsIHBy
ZXZpb3VzV2lkdGgsIGNoYXJhY3RlciA9PSB0YWJDaGFyYWN0ZXIgPyB3aWR0aCA6IGZvbnQuc3Bh
Y2VXaWR0aCgpKTsKKyAgICAgICAgICAgIGNoYXJhY3RlcnNUcmVhdGVkQXNTcGFjZS5jb25zdHJ1
Y3RBbmRBcHBlbmQoY3VycmVudENoYXJhY3RlckluZGV4LCBjaGFyYWN0ZXIgPT0gc3BhY2UsIHBy
ZXZpb3VzV2lkdGgsIGNoYXJhY3RlciA9PSB0YWJDaGFyYWN0ZXIgPyB3aWR0aCA6IGZvbnQuc3Bh
Y2VXaWR0aChGb250OjpTeW50aGV0aWNCb2xkSW5jbHVzaW9uOjpFeGNsdWRlKSk7CiAKICAgICAg
ICAgaWYgKG1fYWNjb3VudEZvckdseXBoQm91bmRzKSB7CiAgICAgICAgICAgICBib3VuZHMgPSBm
b250LmJvdW5kc0ZvckdseXBoKGdseXBoKTsKQEAgLTM1NCw3ICszNTQsOCBAQCBhdXRvIFdpZHRo
SXRlcmF0b3I6OmNhbGN1bGF0ZUFkZGl0aW9uYWxXaWR0aChHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZm
ZXIsIEdseXBoQnVmZgogCiAgICAgaWYgKGNoYXJhY3RlciA9PSB0YWJDaGFyYWN0ZXIgJiYgbV9y
dW4uYWxsb3dUYWJzKCkpIHsKICAgICAgICAgYXV0byYgZm9udCA9IGdseXBoQnVmZmVyLmZvbnRB
dCh0cmFpbGluZ0dseXBoSW5kZXgpOwotICAgICAgICBhdXRvIG5ld1dpZHRoID0gbV9mb250LnRh
YldpZHRoKGZvbnQsIG1fcnVuLnRhYlNpemUoKSwgcG9zaXRpb24pOworICAgICAgICAvLyBTeW50
aGV0aWMgYm9sZCB3aWxsIGJlIGhhbmRsZWQgaW4gYXBwbHlDU1NWaXNpYmlsaXR5UnVsZXMoKSBs
YXRlci4KKyAgICAgICAgYXV0byBuZXdXaWR0aCA9IG1fZm9udC50YWJXaWR0aChmb250LCBtX3J1
bi50YWJTaXplKCksIHBvc2l0aW9uLCBGb250OjpTeW50aGV0aWNCb2xkSW5jbHVzaW9uOjpFeGNs
dWRlKTsKICAgICAgICAgYXV0byBjdXJyZW50V2lkdGggPSB3aWR0aChnbHlwaEJ1ZmZlci5hZHZh
bmNlQXQodHJhaWxpbmdHbHlwaEluZGV4KSk7CiAgICAgICAgIHJpZ2h0QWRkaXRpb25hbFdpZHRo
ICs9IG5ld1dpZHRoIC0gY3VycmVudFdpZHRoOwogICAgIH0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBlYTFlM2Q4YWRhZmY5
ZThhMTYxMDcxNWYxNWUxYTcxYjAyM2I0YjE2Li43MmI4ZjMxYWJiOWQ4YmZhMzUwYTk0NjZiMmE3
OGQ4Y2Q1ZDY2ZmU1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjItMDItMDkgIE15bGVzIEMu
IE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBUYWIgY2hhcmFjdGVy
cyBhbmQgY2ggdW5pdHMgZG8gbm90IG9iZXkgc3ludGhldGljIGJvbGQgd2lkdGggYWRqdXN0bWVu
dHMgY29ycmVjdGx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzYxNzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGZhc3QvdGV4dC9jaC11bml0LXN5bnRoZXRpYy1ib2xkLWV4cGVjdGVkLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvdGV4dC9jaC11bml0LXN5bnRoZXRpYy1ib2xkLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvdGV4dC90YWItd2lkdGgtc3ludGhldGljLWJvbGQtY29tcGxl
eC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3RleHQvdGFiLXdpZHRoLXN5
bnRoZXRpYy1ib2xkLWNvbXBsZXguaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC90ZXh0L3Rh
Yi13aWR0aC1zeW50aGV0aWMtYm9sZC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L3RleHQvdGFiLXdpZHRoLXN5bnRoZXRpYy1ib2xkLmh0bWw6IEFkZGVkLgorCiAyMDIyLTAy
LTA5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmVzeW5jIHdl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzIGZyb20gdXBzdHJlYW0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvdGV4dC9jaC11bml0LXN5bnRoZXRpYy1ib2xkLWV4cGVjdGVkLmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQvY2gtdW5pdC1zeW50aGV0aWMtYm9sZC1leHBlY3Rl
ZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjg3NzAxNWQ1MTI2ZmNmOThiZDk4ZWMzZGRkODRjYTAwM2Q4NjEy
YTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQvY2gtdW5pdC1zeW50
aGV0aWMtYm9sZC1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTEgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzwvaGVhZD4KKzxib2R5PgorVGhpcyB0ZXN0IG1ha2VzIHN1cmUg
dGhhdCB0aGUgPGNvZGU+Y2g8L2NvZGU+IHVuaXQsIHdoaWNoIGlzIHN1cHBvc2VkIHRvIGJlIGFz
IHdpZGUgYXMgdGhlIDxjb2RlPjA8L2NvZGU+IGNoYXJhY3RlciwgaXMgaW4gZmFjdCB0aGF0IHdp
ZGUsIGV2ZW4gaWYgdGhlIGZvbnQgaXMgdXNpbmcgc3ludGhldGljIGJvbGQuIFRoZSB0ZXN0IHBh
c3NlcyBpZiB0aGUgd2lkdGggb2YgdGhlIGdyZWVuIGJveCBtYXRjaGVzIGluIGJvdGggY2FzZXMu
Cis8ZGl2PgorPGRpdiBzdHlsZT0iZm9udDogYm9sZCAxNnB4ICdNb25hY28nOyBkaXNwbGF5OiBp
bmxpbmUtYmxvY2s7IGJhY2tncm91bmQ6IGdyZWVuOyBjb2xvcjogdHJhbnNwYXJlbnQ7Ij4wMDAw
MDAwMDAwPC9kaXY+Cis8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvdGV4dC9jaC11bml0LXN5bnRoZXRpYy1ib2xkLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L3RleHQvY2gtdW5pdC1zeW50aGV0aWMtYm9sZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNlNzE1
Y2FhMTBmMGIzOGI2YmFlZjQ1MWRiOWZlYWVlMjE0ZTJlMTUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L3RleHQvY2gtdW5pdC1zeW50aGV0aWMtYm9sZC5odG1sCkBAIC0wLDAg
KzEsOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPC9oZWFkPgorPGJvZHk+
CitUaGlzIHRlc3QgbWFrZXMgc3VyZSB0aGF0IHRoZSA8Y29kZT5jaDwvY29kZT4gdW5pdCwgd2hp
Y2ggaXMgc3VwcG9zZWQgdG8gYmUgYXMgd2lkZSBhcyB0aGUgPGNvZGU+MDwvY29kZT4gY2hhcmFj
dGVyLCBpcyBpbiBmYWN0IHRoYXQgd2lkZSwgZXZlbiBpZiB0aGUgZm9udCBpcyB1c2luZyBzeW50
aGV0aWMgYm9sZC4gVGhlIHRlc3QgcGFzc2VzIGlmIHRoZSB3aWR0aCBvZiB0aGUgZ3JlZW4gYm94
IG1hdGNoZXMgaW4gYm90aCBjYXNlcy4KKzxkaXYgc3R5bGU9ImZvbnQ6IGJvbGQgMTZweCAnTW9u
YWNvJzsgYmFja2dyb3VuZDogZ3JlZW47IHdpZHRoOiAxMGNoOyBjb2xvcjogdHJhbnNwYXJlbnQ7
Ij5hPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L3RleHQvdGFiLXdpZHRoLXN5bnRoZXRpYy1ib2xkLWNvbXBsZXgtZXhwZWN0ZWQuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvdGV4dC90YWItd2lkdGgtc3ludGhldGljLWJvbGQtY29tcGxleC1leHBl
Y3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjViYzUzMTgyZjM5MzIyN2EzZTFhNGQzODljOGJlMTZmZDVl
MjA5OGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3RleHQvdGFiLXdpZHRo
LXN5bnRoZXRpYy1ib2xkLWNvbXBsZXgtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDExIEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8L2hlYWQ+Cis8Ym9keT4KK1RoaXMgdGVz
dCBtYWtlcyBzdXJlIHRoYXQsIHdoZW4gdGhlIHdpZHRoIG9mIGEgdGFiIGlzIHNldCB0byBiZSBh
IG11bHRpcGxlIG9mIHRoZSBzcGFjZSB3aWR0aCwgdGhhdCB0aGUgc3BhY2Ugd2lkdGggaW5jbHVk
ZXMgdGhlIHN5bnRoZXRpYyBib2xkIGV4cGFuc2lvbi4gVGhlIHRlc3QgcGFzc2VzIGlmIHRoZSB3
aWR0aCBvZiB0aGUgZ3JlZW4gYm94IG1hdGNoZXMgaW4gYm90aCBjYXNlcy4KKzxkaXY+Cis8cHJl
IHN0eWxlPSJmb250OiBib2xkIDE2cHggJ01vbmFjbyc7IGRpc3BsYXk6IGlubGluZS1ibG9jazsg
YmFja2dyb3VuZDogZ3JlZW47IHRhYi1zaXplOiAxNjsiPiAgICAgICAgICAgICAgICA8L3ByZT4K
KzwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC90
ZXh0L3RhYi13aWR0aC1zeW50aGV0aWMtYm9sZC1jb21wbGV4Lmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L3RleHQvdGFiLXdpZHRoLXN5bnRoZXRpYy1ib2xkLWNvbXBsZXguaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5kZjI0NjFmYzQ4YTAwNTAzOTlkMzAzZGY3ODc3NmQ5MTVkYTlhNzE0Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L3RhYi13aWR0aC1zeW50aGV0aWMtYm9sZC1jb21w
bGV4Lmh0bWwKQEAgLTAsMCArMSwxMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorPC9oZWFkPgorPGJvZHk+CitUaGlzIHRlc3QgbWFrZXMgc3VyZSB0aGF0LCB3aGVuIHRoZSB3
aWR0aCBvZiBhIHRhYiBpcyBzZXQgdG8gYmUgYSBtdWx0aXBsZSBvZiB0aGUgc3BhY2Ugd2lkdGgs
IHRoYXQgdGhlIHNwYWNlIHdpZHRoIGluY2x1ZGVzIHRoZSBzeW50aGV0aWMgYm9sZCBleHBhbnNp
b24uIFRoZSB0ZXN0IHBhc3NlcyBpZiB0aGUgd2lkdGggb2YgdGhlIGdyZWVuIGJveCBtYXRjaGVz
IGluIGJvdGggY2FzZXMuCis8ZGl2PgorPHByZSBzdHlsZT0iZm9udDogYm9sZCAxNnB4ICdNb25h
Y28nOyBmb250LWZlYXR1cmUtc2V0dGluZ3M6ICdBQkNEJzsgZGlzcGxheTogaW5saW5lLWJsb2Nr
OyBiYWNrZ3JvdW5kOiBncmVlbjsgdGFiLXNpemU6IDE2OyI+JiN4OTs8L3ByZT4KKzwvZGl2Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L3RhYi13
aWR0aC1zeW50aGV0aWMtYm9sZC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0
L3RhYi13aWR0aC1zeW50aGV0aWMtYm9sZC1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjViYzUz
MTgyZjM5MzIyN2EzZTFhNGQzODljOGJlMTZmZDVlMjA5OGUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L3RleHQvdGFiLXdpZHRoLXN5bnRoZXRpYy1ib2xkLWV4cGVjdGVkLmh0
bWwKQEAgLTAsMCArMSwxMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPC9o
ZWFkPgorPGJvZHk+CitUaGlzIHRlc3QgbWFrZXMgc3VyZSB0aGF0LCB3aGVuIHRoZSB3aWR0aCBv
ZiBhIHRhYiBpcyBzZXQgdG8gYmUgYSBtdWx0aXBsZSBvZiB0aGUgc3BhY2Ugd2lkdGgsIHRoYXQg
dGhlIHNwYWNlIHdpZHRoIGluY2x1ZGVzIHRoZSBzeW50aGV0aWMgYm9sZCBleHBhbnNpb24uIFRo
ZSB0ZXN0IHBhc3NlcyBpZiB0aGUgd2lkdGggb2YgdGhlIGdyZWVuIGJveCBtYXRjaGVzIGluIGJv
dGggY2FzZXMuCis8ZGl2PgorPHByZSBzdHlsZT0iZm9udDogYm9sZCAxNnB4ICdNb25hY28nOyBk
aXNwbGF5OiBpbmxpbmUtYmxvY2s7IGJhY2tncm91bmQ6IGdyZWVuOyB0YWItc2l6ZTogMTY7Ij4g
ICAgICAgICAgICAgICAgPC9wcmU+Cis8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvdGV4dC90YWItd2lkdGgtc3ludGhldGljLWJvbGQuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvdGV4dC90YWItd2lkdGgtc3ludGhldGljLWJvbGQuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5hZmIxMDQ0ZmI0ZjhjOGMzNjhkYmE5MDI3YmVjMzI2NmQ1ZGViYjVjCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC90ZXh0L3RhYi13aWR0aC1zeW50aGV0aWMtYm9s
ZC5odG1sCkBAIC0wLDAgKzEsMTEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KzwvaGVhZD4KKzxib2R5PgorVGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCwgd2hlbiB0aGUgd2lk
dGggb2YgYSB0YWIgaXMgc2V0IHRvIGJlIGEgbXVsdGlwbGUgb2YgdGhlIHNwYWNlIHdpZHRoLCB0
aGF0IHRoZSBzcGFjZSB3aWR0aCBpbmNsdWRlcyB0aGUgc3ludGhldGljIGJvbGQgZXhwYW5zaW9u
LiBUaGUgdGVzdCBwYXNzZXMgaWYgdGhlIHdpZHRoIG9mIHRoZSBncmVlbiBib3ggbWF0Y2hlcyBp
biBib3RoIGNhc2VzLgorPGRpdj4KKzxwcmUgc3R5bGU9ImZvbnQ6IGJvbGQgMTZweCAnTW9uYWNv
JzsgZGlzcGxheTogaW5saW5lLWJsb2NrOyBiYWNrZ3JvdW5kOiBncmVlbjsgdGFiLXNpemU6IDE2
OyI+JiN4OTs8L3ByZT4KKzwvZGl2PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>