<?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>238295</bug_id>
          
          <creation_ts>2022-03-23 15:39:15 -0700</creation_ts>
          <short_desc>DOM GPUP: paintSystemPreviewBadge (AR QuickLook element badge)</short_desc>
          <delta_ts>2022-06-23 14:48:16 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antoine Quint">graouts</reporter>
          <assigned_to name="Antoine Quint">graouts</assigned_to>
          <cc>annulen</cc>
    
    <cc>changseok</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1854445</commentid>
    <comment_count>0</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2022-03-23 15:39:15 -0700</bug_when>
    <thetext>DOM GPUP: paintSystemPreviewBadge (AR QuickLook element badge)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854447</commentid>
    <comment_count>1</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2022-03-23 15:43:31 -0700</bug_when>
    <thetext>rdar://89196787</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854448</commentid>
    <comment_count>2</comment_count>
      <attachid>455570</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2022-03-23 15:44:49 -0700</bug_when>
    <thetext>Created attachment 455570
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854450</commentid>
    <comment_count>3</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2022-03-23 15:50:32 -0700</bug_when>
    <thetext>rdar://83580608</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854453</commentid>
    <comment_count>4</comment_count>
      <attachid>455572</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2022-03-23 15:55:07 -0700</bug_when>
    <thetext>Created attachment 455572
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854554</commentid>
    <comment_count>5</comment_count>
      <attachid>455572</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-03-23 20:03:44 -0700</bug_when>
    <thetext>Comment on attachment 455572
Patch

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

&gt; Source/WebCore/Modules/system-preview/ARKitBadgeSystemImage.h:41
&gt; +class WEBCORE_EXPORT ARKitBadgeSystemImage final : public SystemImage {

I am not sure why ARKitBadgeSystemImage should be a super calls of SystemImage or even a superclass of Image. I think all we need to do is to route the drawing of the Image as an ARKitBadgeImage through GraphicsContext. Just follow the pattern of drawNativeImage() or drawPattern():

// RenderThemeIOS.mm
void RenderThemeIOS::paintSystemPreviewBadge(Image&amp; image, const PaintInfo&amp; paintInfo, const FloatRect&amp; rect)
{
    if (auto nativeImage = image.nativeImage())
        paintInfo.context().drawARKitBadgeImage(*nativeImage, rect);
}

// GraphicsContext.h
class GraphicsContext {
public:
    virtual void drawARKitBadgeImage(NativeImage&amp;, const FloatRect&amp;) const { }
}

// GraphicsContextCG.h
class GraphicsContextCG : public GraphicsContext {
private:
    void drawARKitBadgeImage(NativeImage&amp;, const FloatRect&amp; destRect) const final;
}

// GraphicsContextCG.cpp
void GraphicsContextCG::drawARKitBadgeImage(NativeImage&amp; nativeImage, const FloatRect&amp; destRect)
{
     drawARKitBadgeNativeImage(nativeImage, destRect);
}

// ARKitBadgeSystemImage.mm
void drawARKitBadgeNativeImage(NativeImage&amp; nativeImage, const FloatRect&amp; destRect)
{
    // the new code that you added in this file
}

// Alternatively you can implement GraphicsContextCG::drawARKitBadgeImage() in the new file ARKitBadgeSystemImage.mm.

// DisplayListReccorder.h
class Recorder : public GraphicsContext {
protected:
    virtual void recordDrawARKitBadgeImage(RenderingResourceIdentifier imageIdentifier, const FloatRect&amp; destRect) = 0;

private:
    WEBCORE_EXPORT void drawARKitBadgeNativeImage(NativeImage&amp;, const FloatRect&amp; destRect) final;
}

// DisplayListReccorder.cpp
void Recorder:: drawARKitBadgeNativeImage(NativeImage&amp; nativeImage, const FloatRect&amp; destRect)
{
    appendStateChangeItemIfNecessary();
    recordResourceUse(image);
    recordDrawARKitBadgeImage(nativeImage.renderingResourceIdentifier(), destRect);
}

// DisplayListReccorderImp.h
class RecorderImpl : public Recorder {
private:
    void recordDrawARKitBadgeImage(RenderingResourceIdentifier imageIdentifier, const FloatRect&amp; destRect) final;
}

// DisplayListReccorderImp.cpp
void RecorderImpl:: recordDrawARKitBadgeImage(RenderingResourceIdentifier imageIdentifier, const FloatRect&amp; destRect)
{
    append&lt;DrawARKitBadgeImage&gt;(imageIdentifier, destRect);
}

// RemoteDisplayListRecorderProxy.h
class RemoteDisplayListRecorderProxy : public WebCore::DisplayList::Recorder {
private:
    void recordDrawARKitBadgeImage(WebCore::RenderingResourceIdentifier imageIdentifier, const WebCore::FloatRect&amp; destRec) final;
};

// RemoteDisplayListRecorderProxy.cpp
void RemoteDisplayListRecorderProxy:: recordDrawARKitBadgeImage(RenderingResourceIdentifier imageIdentifier, const FloatRect&amp; destRect)
{
    send(Messages::RemoteDisplayListRecorder::DrawARKitBadgeImage(imageIdentifier, destRect));
}

// RemoteDisplayListRecorder.messages.in
messages -&gt; RemoteDisplayListRecorder NotRefCounted Stream {
    DrawARKitBadgeImage(WebCore::RenderingResourceIdentifier imageIdentifier, WebCore::FloatRect destRect)
}

// RemoteDisplayListRecorder.cpp

void RemoteDisplayListRecorder::drawARKitBadgeImage(RenderingResourceIdentifier imageIdentifier, const FloatRect&amp; destRect)
{
    drawNativeImageWithQualifiedIdentifier({ imageIdentifier, m_webProcessIdentifier }, destRect);
}

void RemoteDisplayListRecorder:: drawARKitBadgeImage WithQualifiedIdentifier(QualifiedRenderingResourceIdentifier imageIdentifier, const FloatRect&amp; destRect)
{
    RefPtr image = resourceCache().cachedNativeImage(imageIdentifier);
    if (!image) {
        ASSERT_NOT_REACHED();
        return;
    }

    handleItem(DisplayList::DrawARKitBadgeImage(imageIdentifier.object(), destRect), *image);
}

// DisplayListItems.h
class DrawARKitBadgeImage {
public:
    static constexpr ItemType itemType = ItemType::DrawARKitBadgeImage;
    static constexpr bool isInlineItem = true;
    static constexpr bool isDrawingItem = true;

    DrawARKitBadgeImage(RenderingResourceIdentifier imageIdentifier, const FloatRect&amp; destRect)
        : m_imageIdentifier(imageIdentifier)
        , m_destinationRect(destRect)
    {
    }

    RenderingResourceIdentifier imageIdentifier() const { return m_imageIdentifier; }
    const FloatRect&amp; destinationRect() const { return m_destinationRect; }

    NO_RETURN_DUE_TO_ASSERT void apply(GraphicsContext&amp;) const;
    WEBCORE_EXPORT void apply(GraphicsContext&amp;, NativeImage&amp;) const;

    std::optional&lt;FloatRect&gt; globalBounds() const { return std::nullopt; }
    std::optional&lt;FloatRect&gt; localBounds(const GraphicsContext&amp;) const { return m_destinationRect; }

private:
    RenderingResourceIdentifier m_imageIdentifier;
    FloatRect m_destinationRect;
};

NO_RETURN_DUE_TO_ASSERT void DrawARKitBadgeImage::apply(GraphicsContext&amp;) const
{
    ASSERT_NOT_REACHED();
}

void DrawARKitBadgeImage::apply(GraphicsContext&amp; context, NativeImage&amp; image) const
{
    context.drawARKitBadgeImage(image, m_destinationRect);
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854577</commentid>
    <comment_count>6</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2022-03-23 22:24:45 -0700</bug_when>
    <thetext>(In reply to Said Abou-Hallawa from comment #5)
&gt; Comment on attachment 455572 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=455572&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/system-preview/ARKitBadgeSystemImage.h:41
&gt; &gt; +class WEBCORE_EXPORT ARKitBadgeSystemImage final : public SystemImage {
&gt; 
&gt; I am not sure why ARKitBadgeSystemImage should be a super calls of
&gt; SystemImage or even a superclass of Image. I think all we need to do is to
&gt; route the drawing of the Image as an ARKitBadgeImage through
&gt; GraphicsContext. Just follow the pattern of drawNativeImage() or
&gt; drawPattern():

Said, the whole point of SystemImage is to *avoid* having to add things to GraphicsContext (which is in the deep &quot;platform&quot; layer in the WebKit lasagna and shouldn&apos;t know about high-level things like this) that know about &quot;system preview&quot; or Apple Pay or etc.; see the conversation in the bug that introduced it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854608</commentid>
    <comment_count>7</comment_count>
      <attachid>455572</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-03-24 00:50:45 -0700</bug_when>
    <thetext>Comment on attachment 455572
Patch

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

&gt;&gt;&gt; Source/WebCore/Modules/system-preview/ARKitBadgeSystemImage.h:41
&gt;&gt;&gt; +class WEBCORE_EXPORT ARKitBadgeSystemImage final : public SystemImage {
&gt;&gt; 
&gt;&gt; I am not sure why ARKitBadgeSystemImage should be a super calls of SystemImage or even a superclass of Image. I think all we need to do is to route the drawing of the Image as an ARKitBadgeImage through GraphicsContext. Just follow the pattern of drawNativeImage() or drawPattern():
&gt;&gt; 
&gt;&gt; // RenderThemeIOS.mm
&gt;&gt; void RenderThemeIOS::paintSystemPreviewBadge(Image&amp; image, const PaintInfo&amp; paintInfo, const FloatRect&amp; rect)
&gt;&gt; {
&gt;&gt;     if (auto nativeImage = image.nativeImage())
&gt;&gt;         paintInfo.context().drawARKitBadgeImage(*nativeImage, rect);
&gt;&gt; }
&gt;&gt; 
&gt;&gt; // GraphicsContext.h
&gt;&gt; class GraphicsContext {
&gt;&gt; public:
&gt;&gt;     virtual void drawARKitBadgeImage(NativeImage&amp;, const FloatRect&amp;) const { }
&gt;&gt; }
&gt;&gt; 
&gt;&gt; // GraphicsContextCG.h
&gt;&gt; class GraphicsContextCG : public GraphicsContext {
&gt;&gt; private:
&gt;&gt;     void drawARKitBadgeImage(NativeImage&amp;, const FloatRect&amp; destRect) const final;
&gt;&gt; }
&gt;&gt; 
&gt;&gt; // GraphicsContextCG.cpp
&gt;&gt; void GraphicsContextCG::drawARKitBadgeImage(NativeImage&amp; nativeImage, const FloatRect&amp; destRect)
&gt;&gt; {
&gt;&gt;      drawARKitBadgeNativeImage(nativeImage, destRect);
&gt;&gt; }
&gt;&gt; 
&gt;&gt; // ARKitBadgeSystemImage.mm
&gt;&gt; void drawARKitBadgeNativeImage(NativeImage&amp; nativeImage, const FloatRect&amp; destRect)
&gt;&gt; {
&gt;&gt;     // the new code that you added in this file
&gt;&gt; }
&gt;&gt; 
&gt;&gt; // Alternatively you can implement GraphicsContextCG::drawARKitBadgeImage() in the new file ARKitBadgeSystemImage.mm.
&gt;&gt; 
&gt;&gt; // DisplayListReccorder.h
&gt;&gt; class Recorder : public GraphicsContext {
&gt;&gt; protected:
&gt;&gt;     virtual void recordDrawARKitBadgeImage(RenderingResourceIdentifier imageIdentifier, const FloatRect&amp; destRect) = 0;
&gt;&gt; 
&gt;&gt; private:
&gt;&gt;     WEBCORE_EXPORT void drawARKitBadgeNativeImage(NativeImage&amp;, const FloatRect&amp; destRect) final;
&gt;&gt; }
&gt;&gt; 
&gt;&gt; // DisplayListReccorder.cpp
&gt;&gt; void Recorder:: drawARKitBadgeNativeImage(NativeImage&amp; nativeImage, const FloatRect&amp; destRect)
&gt;&gt; {
&gt;&gt;     appendStateChangeItemIfNecessary();
&gt;&gt;     recordResourceUse(image);
&gt;&gt;     recordDrawARKitBadgeImage(nativeImage.renderingResourceIdentifier(), destRect);
&gt;&gt; }
&gt;&gt; 
&gt;&gt; // DisplayListReccorderImp.h
&gt;&gt; class RecorderImpl : public Recorder {
&gt;&gt; private:
&gt;&gt;     void recordDrawARKitBadgeImage(RenderingResourceIdentifier imageIdentifier, const FloatRect&amp; destRect) final;
&gt;&gt; }
&gt;&gt; 
&gt;&gt; // DisplayListReccorderImp.cpp
&gt;&gt; void RecorderImpl:: recordDrawARKitBadgeImage(RenderingResourceIdentifier imageIdentifier, const FloatRect&amp; destRect)
&gt;&gt; {
&gt;&gt;     append&lt;DrawARKitBadgeImage&gt;(imageIdentifier, destRect);
&gt;&gt; }
&gt;&gt; 
&gt;&gt; // RemoteDisplayListRecorderProxy.h
&gt;&gt; class RemoteDisplayListRecorderProxy : public WebCore::DisplayList::Recorder {
&gt;&gt; private:
&gt;&gt;     void recordDrawARKitBadgeImage(WebCore::RenderingResourceIdentifier imageIdentifier, const WebCore::FloatRect&amp; destRec) final;
&gt;&gt; };
&gt;&gt; 
&gt;&gt; // RemoteDisplayListRecorderProxy.cpp
&gt;&gt; void RemoteDisplayListRecorderProxy:: recordDrawARKitBadgeImage(RenderingResourceIdentifier imageIdentifier, const FloatRect&amp; destRect)
&gt;&gt; {
&gt;&gt;     send(Messages::RemoteDisplayListRecorder::DrawARKitBadgeImage(imageIdentifier, destRect));
&gt;&gt; }
&gt;&gt; 
&gt;&gt; // RemoteDisplayListRecorder.messages.in
&gt;&gt; messages -&gt; RemoteDisplayListRecorder NotRefCounted Stream {
&gt;&gt;     DrawARKitBadgeImage(WebCore::RenderingResourceIdentifier imageIdentifier, WebCore::FloatRect destRect)
&gt;&gt; }
&gt;&gt; 
&gt;&gt; // RemoteDisplayListRecorder.cpp
&gt;&gt; 
&gt;&gt; void RemoteDisplayListRecorder::drawARKitBadgeImage(RenderingResourceIdentifier imageIdentifier, const FloatRect&amp; destRect)
&gt;&gt; {
&gt;&gt;     drawNativeImageWithQualifiedIdentifier({ imageIdentifier, m_webProcessIdentifier }, destRect);
&gt;&gt; }
&gt;&gt; 
&gt;&gt; void RemoteDisplayListRecorder:: drawARKitBadgeImage WithQualifiedIdentifier(QualifiedRenderingResourceIdentifier imageIdentifier, const FloatRect&amp; destRect)
&gt;&gt; {
&gt;&gt;     RefPtr image = resourceCache().cachedNativeImage(imageIdentifier);
&gt;&gt;     if (!image) {
&gt;&gt;         ASSERT_NOT_REACHED();
&gt;&gt;         return;
&gt;&gt;     }
&gt;&gt; 
&gt;&gt;     handleItem(DisplayList::DrawARKitBadgeImage(imageIdentifier.object(), destRect), *image);
&gt;&gt; }
&gt;&gt; 
&gt;&gt; // DisplayListItems.h
&gt;&gt; class DrawARKitBadgeImage {
&gt;&gt; public:
&gt;&gt;     static constexpr ItemType itemType = ItemType::DrawARKitBadgeImage;
&gt;&gt;     static constexpr bool isInlineItem = true;
&gt;&gt;     static constexpr bool isDrawingItem = true;
&gt;&gt; 
&gt;&gt;     DrawARKitBadgeImage(RenderingResourceIdentifier imageIdentifier, const FloatRect&amp; destRect)
&gt;&gt;         : m_imageIdentifier(imageIdentifier)
&gt;&gt;         , m_destinationRect(destRect)
&gt;&gt;     {
&gt;&gt;     }
&gt;&gt; 
&gt;&gt;     RenderingResourceIdentifier imageIdentifier() const { return m_imageIdentifier; }
&gt;&gt;     const FloatRect&amp; destinationRect() const { return m_destinationRect; }
&gt;&gt; 
&gt;&gt;     NO_RETURN_DUE_TO_ASSERT void apply(GraphicsContext&amp;) const;
&gt;&gt;     WEBCORE_EXPORT void apply(GraphicsContext&amp;, NativeImage&amp;) const;
&gt;&gt; 
&gt;&gt;     std::optional&lt;FloatRect&gt; globalBounds() const { return std::nullopt; }
&gt;&gt;     std::optional&lt;FloatRect&gt; localBounds(const GraphicsContext&amp;) const { return m_destinationRect; }
&gt;&gt; 
&gt;&gt; private:
&gt;&gt;     RenderingResourceIdentifier m_imageIdentifier;
&gt;&gt;     FloatRect m_destinationRect;
&gt;&gt; };
&gt;&gt; 
&gt;&gt; NO_RETURN_DUE_TO_ASSERT void DrawARKitBadgeImage::apply(GraphicsContext&amp;) const
&gt;&gt; {
&gt;&gt;     ASSERT_NOT_REACHED();
&gt;&gt; }
&gt;&gt; 
&gt;&gt; void DrawARKitBadgeImage::apply(GraphicsContext&amp; context, NativeImage&amp; image) const
&gt;&gt; {
&gt;&gt;     context.drawARKitBadgeImage(image, m_destinationRect);
&gt;&gt; }
&gt; 
&gt; Said, the whole point of SystemImage is to *avoid* having to add things to GraphicsContext (which is in the deep &quot;platform&quot; layer in the WebKit lasagna and shouldn&apos;t know about high-level things like this) that know about &quot;system preview&quot; or Apple Pay or etc.; see the conversation in the bug that introduced it.

GraphicsContext already has different ways/modes to display the Image, the NativeImage and the ImageBuffer:

Image: (this can be BitmapImage, SVGImage, PDFDocumentImage, ...etc)
drawImage(Image&amp;,...)
drawTiledImage(Image&amp;, ...)
drawPattern(Image&amp;,...)

NativeImage:
drawNativeImage(NativeImage&amp;,...)
drawPattern(NativeImage&amp;, ...)

ImageBuffer:
drawImageBuffer(ImageBuffer&amp;,...)
drawConsumingImageBuffer(RefPtr&lt;ImageBuffer&gt;,...)
drawFilteredImageBuffer(ImageBuffer*,...)

We recently added the SystemImage which seems reasonable since all it takes is a SystemImageType. But ARKitBadgeSystemImage is just a wrapper around an Image. My suggestion above is to add a new way/mode to draw the Image or the NativeImage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854619</commentid>
    <comment_count>8</comment_count>
      <attachid>455621</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2022-03-24 01:25:00 -0700</bug_when>
    <thetext>Created attachment 455621
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854632</commentid>
    <comment_count>9</comment_count>
      <attachid>455625</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2022-03-24 03:04:23 -0700</bug_when>
    <thetext>Created attachment 455625
[fast-cq] Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854883</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-03-24 15:28:32 -0700</bug_when>
    <thetext>Committed r291817 (248844@main): &lt;https://commits.webkit.org/248844@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 455625.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1877890</commentid>
    <comment_count>11</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-06-23 14:48:16 -0700</bug_when>
    <thetext>*** Bug 232877 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455570</attachid>
            <date>2022-03-23 15:44:49 -0700</date>
            <delta_ts>2022-03-23 15:55:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238295-20220323234447.patch</filename>
            <type>text/plain</type>
            <size>51796</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNjA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTA2OGM0ZDU1ODc2NTcy
MzU2OTM0ZTFhODE1MzcwYTM1NDM5MWExMC4uNjg4YzRkYjlhMzc2MjQzNmVlNWE3OTQyY2Q4M2Rk
ZmU5M2M5Mjk4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDIyLTAzLTIzICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgorCisgICAgICAgIERPTSBHUFVQOiBwYWlu
dFN5c3RlbVByZXZpZXdCYWRnZSAoQVIgUXVpY2tMb29rIGVsZW1lbnQgYmFkZ2UpCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgyOTUKKyAgICAgICAg
cmRhcjovLzgzNTgwNjA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIGEgbmV3IFN5c3RlbUltYWdlIHN1YmNsYXNzIHRvIGRlYWwgd2l0aCB0aGUg
QVJLaXQgYmFkZ2UsIG1vdmluZyB0aGUgY3VzdG9tIGRyYXdpbmcgY29kZSB1bmRlcgorICAgICAg
ICBSZW5kZXJUaGVtZUlPUzo6cGFpbnRTeXN0ZW1QcmV2aWV3QmFkZ2UoKSB0byBBUktpdEJhZGdl
U3lzdGVtSW1hZ2U6OmRyYXcoKS4KKworICAgICAgICBUbyBmYWNpbGl0YXRlIHRoaXMsIHdlIG11
c3QgYWxzbyBoYXZlIEFSS2l0QmFkZ2VTeXN0ZW1JbWFnZSB3cmFwIHRoZSBpbnB1dCBJbWFnZSBw
cm92aWRlZCB0bworICAgICAgICBSZW5kZXJUaGVtZUlPUzo6cGFpbnRTeXN0ZW1QcmV2aWV3QmFk
Z2UoKSBzbyB0aGF0IHRoZSBDb3JlSW1hZ2UgZmlsdGVycyBhcmUgYXBwbGllZCBjb3JyZWN0bHku
CisKKyAgICAgICAgRmluYWxseSwgd2UgcmVtb3ZlIHNvbWUgdXNlIG9mIGB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZWAgaW4gV2ViU3BlZWNoUmVjb2duaXplclRhc2sgYW5kCisgICAgICAgIFdlYlNw
ZWVjaFJlY29nbml6ZXJUYXNrTW9jayBzaW5jZSBpdCBjYXVzZWQgc29tZSB1bmlmaWVkIGJ1aWxk
IGZhaWx1cmVzLgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBNb2R1bGVz
L3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25pemVyVGFzay5tbToKKyAgICAgICAgKC1bV2Vi
U3BlZWNoUmVjb2duaXplclRhc2tJbXBsIGluaXRXaXRoSWRlbnRpZmllcjpsb2NhbGU6ZG9NdWx0
aXBsZVJlY29nbml0aW9uczpyZXBvcnRJbnRlcmltUmVzdWx0czptYXhBbHRlcm5hdGl2ZXM6ZGVs
ZWdhdGVDYWxsYmFjazpdKToKKyAgICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2tJbXBs
IGNhbGxiYWNrV2l0aFRyYW5zY3JpcHRpb25zOmlzRmluYWw6XSk6CisgICAgICAgICgtW1dlYlNw
ZWVjaFJlY29nbml6ZXJUYXNrSW1wbCBzZW5kU3BlZWNoU3RhcnRJZk5lZWRlZF0pOgorICAgICAg
ICAoLVtXZWJTcGVlY2hSZWNvZ25pemVyVGFza0ltcGwgc2VuZFNwZWVjaEVuZElmTmVlZGVkXSk6
CisgICAgICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrSW1wbCBzZW5kRW5kSWZOZWVkZWRd
KToKKyAgICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2tJbXBsIHNwZWVjaFJlY29nbml6
ZXI6YXZhaWxhYmlsaXR5RGlkQ2hhbmdlOl0pOgorICAgICAgICAoLVtXZWJTcGVlY2hSZWNvZ25p
emVyVGFza0ltcGwgc3BlZWNoUmVjb2duaXRpb25UYXNrOmRpZEZpbmlzaFN1Y2Nlc3NmdWxseTpd
KToKKyAgICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2sgaW5pdFdpdGhJZGVudGlmaWVy
OmxvY2FsZTpkb011bHRpcGxlUmVjb2duaXRpb25zOnJlcG9ydEludGVyaW1SZXN1bHRzOm1heEFs
dGVybmF0aXZlczpkZWxlZ2F0ZUNhbGxiYWNrOl0pOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNo
L2NvY29hL1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jay5tbToKKyAgICAgICAgKC1bV2ViU3Bl
ZWNoUmVjb2duaXplclRhc2tNb2NrIGluaXRXaXRoSWRlbnRpZmllcjpsb2NhbGU6ZG9NdWx0aXBs
ZVJlY29nbml0aW9uczpyZXBvcnRJbnRlcmltUmVzdWx0czptYXhBbHRlcm5hdGl2ZXM6ZGVsZWdh
dGVDYWxsYmFjazpdKToKKyAgICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2NrIGF1
ZGlvU2FtcGxlc0F2YWlsYWJsZTpdKToKKyAgICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRh
c2tNb2NrIGFib3J0XSk6CisgICAgICAgICogTW9kdWxlcy9zeXN0ZW0tcHJldmlldy9BUktpdEJh
ZGdlU3lzdGVtSW1hZ2UuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBUktpdEJhZGdlU3lz
dGVtSW1hZ2U6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBUktpdEJhZGdlU3lz
dGVtSW1hZ2U6OmRlY29kZSk6CisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAqIE1vZHVsZXMv
c3lzdGVtLXByZXZpZXcvQVJLaXRCYWRnZVN5c3RlbUltYWdlLm1tOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OmFyS2l0QnVuZGxlKToKKyAgICAgICAgKFdlYkNvcmU6OmxvYWRBUktpdFBERlBh
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6c3lzdGVtUHJldmlld0xvZ28pOgorICAgICAgICAoV2Vi
Q29yZTo6QVJLaXRCYWRnZVN5c3RlbUltYWdlOjpkcmF3IGNvbnN0KToKKyAgICAgICAgKiBTb3Vy
Y2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9TeXN0ZW1JbWFnZS5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd1N5c3RlbUltYWdl
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyVGhlbWVJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlP
Uzo6cGFpbnRTeXN0ZW1QcmV2aWV3QmFkZ2UpOgorICAgICAgICAoV2ViQ29yZTo6YXJLaXRCdW5k
bGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6bG9hZEFSS2l0UERGUGFnZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpzeXN0ZW1QcmV2aWV3TG9nbyk6IERlbGV0ZWQuCisKIDIw
MjItMDMtMjIgIEZyw6lkw6lyaWMgV2FuZyAgPGZ3YW5nQGlnYWxpYS5jb20+CiAKICAgICAgICAg
QWRqdXN0IGFuY2hvci9mb2N1cyBub2RlcyBhZnRlciByZW1vdmFsIHdoZW4gTGl2ZVJhbmdlU2Vs
ZWN0aW9uIGlzIGVuYWJsZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMmUyMjhlNDE1YjU5NDc1ZDRkYmI4ZWY5ODhh
YTYwZGEzM2FhMzMxYy4uNTZjYmYzMzAzMDc2MTgzYzA1MTBiNThmZjYwOTFkNTJiYmZjMjM3NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMi0wMy0yMyAgQW50b2luZSBRdWludCAgPGdy
YW91dHNAd2Via2l0Lm9yZz4KKworICAgICAgICBET00gR1BVUDogcGFpbnRTeXN0ZW1QcmV2aWV3
QmFkZ2UgKEFSIFF1aWNrTG9vayBlbGVtZW50IGJhZGdlKQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4Mjk1CisgICAgICAgIHJkYXI6Ly84MzU4MDYw
OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2Ug
c3VyZSB3ZSByZXN0b3JlIHRoZSBJbWFnZSBvbiB0aGUgQVJLaXRCYWRnZVN5c3RlbUltYWdlIGJl
Zm9yZSB3ZSBhdHRlbXB0IHRvIGRyYXcgaXQuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVEaXNwbGF5TGlzdFJlY29yZGVyOjpkcmF3U3lzdGVtSW1hZ2UpOgorICAgICAgICAqIFNoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVy
PFJlZjxTeXN0ZW1JbWFnZT4+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVy
PFJlZjxTeXN0ZW1JbWFnZT4+OjpkZWNvZGUpOgorCiAyMDIyLTAzLTIyICBZb3Vlbm4gRmFibGV0
ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJzaXRlIHBvbGljaWVzIGFyZSBub3Qg
cmVzcGVjdGVkIHdoZW4gZG9pbmcgQ09PUCBiYXNlZCBwcm9jZXNzIHN3YXAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNt
YWtlCmluZGV4IDQwZTE1ZWIxZDdjNjM2YTZhZjhlZmZiZmEwYWM0NDhjNzk1ZmVhNjcuLjNlMDc1
MmQzM2Q1OTFkZTBhZjkwYTQ2NDg3MzNlZjJkZWQ1ZWI1YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpA
QCAtMzMxLDYgKzMzMSw4IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMK
ICAgICBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1TaW5rLmgKICAgICBNb2R1bGVzL3N0
cmVhbXMvUmVhZGFibGVTdHJlYW1Tb3VyY2UuaAogCisgICAgTW9kdWxlcy9zeXN0ZW0tcHJldmll
dy9BUktpdEJhZGdlU3lzdGVtSW1hZ2UuaAorCiAgICAgTW9kdWxlcy93ZWItbG9ja3MvV2ViTG9j
a0lkZW50aWZpZXIuaAogICAgIE1vZHVsZXMvd2ViLWxvY2tzL1dlYkxvY2tNYW5hZ2VyU25hcHNo
b3QuaAogICAgIE1vZHVsZXMvd2ViLWxvY2tzL1dlYkxvY2tNb2RlLmgKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL2NvY29hL1dlYlNwZWVjaFJlY29nbml6ZXJUYXNr
Lm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvY29jb2EvV2ViU3BlZWNoUmVjb2du
aXplclRhc2subW0KaW5kZXggYjYyMjk5MDhlNzRhYzAyNzk5ZDc3NDJiMTQzMjlmZDMzZGM0NzZh
OS4uYTk0MWQ3NmE0Zjc0ODcxOGRmMWUzY2ZmMmE2YzVlMDgyN2Y0ODg5MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvY29jb2EvV2ViU3BlZWNoUmVjb2duaXplclRh
c2subW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvY29jb2EvV2ViU3BlZWNo
UmVjb2duaXplclRhc2subW0KQEAgLTM3LDE0ICszNywxMiBAQAogLy8gU2V0IHRoZSBtYXhpbXVt
IGR1cmF0aW9uIHRvIGJlIGFuIGhvdXI7IHdlIGNhbiBhZGp1c3QgdGhpcyBpZiBuZWVkZWQuCiBz
dGF0aWMgY29uc3RleHByIHNpemVfdCBtYXhpbXVtUmVjb2duaXRpb25EdXJhdGlvbiA9IDYwICog
NjA7CiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCiBOU19BU1NVTUVfTk9OTlVMTF9CRUdJ
TgogCiBAaW50ZXJmYWNlIFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrSW1wbCA6IE5TT2JqZWN0PFNG
U3BlZWNoUmVjb2duaXRpb25UYXNrRGVsZWdhdGUsIFNGU3BlZWNoUmVjb2duaXplckRlbGVnYXRl
PiB7CiBAcHJpdmF0ZQotICAgIFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50
aWZpZXIgX2lkZW50aWZpZXI7Ci0gICAgQmxvY2tQdHI8dm9pZChjb25zdCBTcGVlY2hSZWNvZ25p
dGlvblVwZGF0ZSYpPiBfZGVsZWdhdGVDYWxsYmFjazsKKyAgICBXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyIF9pZGVudGlmaWVyOworICAgIEJsb2Nr
UHRyPHZvaWQoY29uc3QgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGUmKT4gX2RlbGVn
YXRlQ2FsbGJhY2s7CiAgICAgYm9vbCBfZG9NdWx0aXBsZVJlY29nbml0aW9uczsKICAgICB1aW50
NjRfdCBfbWF4QWx0ZXJuYXRpdmVzOwogICAgIFJldGFpblB0cjxTRlNwZWVjaFJlY29nbml6ZXI+
IF9yZWNvZ25pemVyOwpAQCAtNTUsNyArNTMsNyBAQCBAcHJpdmF0ZQogICAgIGJvb2wgX2hhc1Nl
bnRFbmQ7CiB9CiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aElkZW50aWZpZXI6KFNwZWVjaFJl
Y29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpaWRlbnRpZmllciBsb2NhbGU6KE5T
U3RyaW5nKilsb2NhbGVJZGVudGlmaWVyIGRvTXVsdGlwbGVSZWNvZ25pdGlvbnM6KEJPT0wpY29u
dGludW91cyByZXBvcnRJbnRlcmltUmVzdWx0czooQk9PTClpbnRlcmltUmVzdWx0cyBtYXhBbHRl
cm5hdGl2ZXM6KHVuc2lnbmVkIGxvbmcpYWx0ZXJuYXRpdmVzIGRlbGVnYXRlQ2FsbGJhY2s6KHZv
aWQoXikoY29uc3QgU3BlZWNoUmVjb2duaXRpb25VcGRhdGUmKSljYWxsYmFjazsKKy0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aElkZW50aWZpZXI6KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29u
bmVjdGlvbkNsaWVudElkZW50aWZpZXIpaWRlbnRpZmllciBsb2NhbGU6KE5TU3RyaW5nKilsb2Nh
bGVJZGVudGlmaWVyIGRvTXVsdGlwbGVSZWNvZ25pdGlvbnM6KEJPT0wpY29udGludW91cyByZXBv
cnRJbnRlcmltUmVzdWx0czooQk9PTClpbnRlcmltUmVzdWx0cyBtYXhBbHRlcm5hdGl2ZXM6KHVu
c2lnbmVkIGxvbmcpYWx0ZXJuYXRpdmVzIGRlbGVnYXRlQ2FsbGJhY2s6KHZvaWQoXikoY29uc3Qg
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGUmKSljYWxsYmFjazsKIC0gKHZvaWQpY2Fs
bGJhY2tXaXRoVHJhbnNjcmlwdGlvbnM6KE5TQXJyYXk8U0ZUcmFuc2NyaXB0aW9uICo+ICopdHJh
bnNjcmlwdGlvbnMgaXNGaW5hbDooQk9PTClpc0ZpbmFsOwogLSAodm9pZClhdWRpb1NhbXBsZXNB
dmFpbGFibGU6KENNU2FtcGxlQnVmZmVyUmVmKXNhbXBsZUJ1ZmZlcjsKIC0gKHZvaWQpYWJvcnQ7
CkBAIC02OCw3ICs2Niw3IEBAIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdlYlNwZWVjaFJlY29n
bml6ZXJUYXNrSW1wbAogCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhJZGVudGlmaWVyOihTcGVl
Y2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25DbGllbnRJZGVudGlmaWVyKWlkZW50aWZpZXIgbG9jYWxl
OihOU1N0cmluZyopbG9jYWxlSWRlbnRpZmllciBkb011bHRpcGxlUmVjb2duaXRpb25zOihCT09M
KWNvbnRpbnVvdXMgcmVwb3J0SW50ZXJpbVJlc3VsdHM6KEJPT0wpaW50ZXJpbVJlc3VsdHMgbWF4
QWx0ZXJuYXRpdmVzOih1bnNpZ25lZCBsb25nKWFsdGVybmF0aXZlcyBkZWxlZ2F0ZUNhbGxiYWNr
Oih2b2lkKF4pKGNvbnN0IFNwZWVjaFJlY29nbml0aW9uVXBkYXRlJikpY2FsbGJhY2sKKy0gKGlu
c3RhbmNldHlwZSlpbml0V2l0aElkZW50aWZpZXI6KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9u
Q29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpaWRlbnRpZmllciBsb2NhbGU6KE5TU3RyaW5nKils
b2NhbGVJZGVudGlmaWVyIGRvTXVsdGlwbGVSZWNvZ25pdGlvbnM6KEJPT0wpY29udGludW91cyBy
ZXBvcnRJbnRlcmltUmVzdWx0czooQk9PTClpbnRlcmltUmVzdWx0cyBtYXhBbHRlcm5hdGl2ZXM6
KHVuc2lnbmVkIGxvbmcpYWx0ZXJuYXRpdmVzIGRlbGVnYXRlQ2FsbGJhY2s6KHZvaWQoXikoY29u
c3QgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGUmKSljYWxsYmFjawogewogICAgIGlm
ICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwpAQCAtMTE1LDcg
KzExMyw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aElkZW50aWZpZXI6KFNwZWVjaFJlY29n
bml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpCiAKIC0gKHZvaWQpY2FsbGJhY2tXaXRo
VHJhbnNjcmlwdGlvbnM6KE5TQXJyYXk8U0ZUcmFuc2NyaXB0aW9uICo+ICopdHJhbnNjcmlwdGlv
bnMgaXNGaW5hbDooQk9PTClpc0ZpbmFsCiB7Ci0gICAgVmVjdG9yPFNwZWVjaFJlY29nbml0aW9u
QWx0ZXJuYXRpdmVEYXRhPiBhbHRlcm5hdGl2ZXM7CisgICAgVmVjdG9yPFdlYkNvcmU6OlNwZWVj
aFJlY29nbml0aW9uQWx0ZXJuYXRpdmVEYXRhPiBhbHRlcm5hdGl2ZXM7CiAgICAgYWx0ZXJuYXRp
dmVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoX21heEFsdGVybmF0aXZlcyk7CiAgICAgZm9yIChT
RlRyYW5zY3JpcHRpb24qIHRyYW5zY3JpcHRpb24gaW4gdHJhbnNjcmlwdGlvbnMpIHsKICAgICAg
ICAgLy8gRklYTUU6IDxyZGFyOi8vNzM2Mjk1NzM+IGdldCBjb25maWRlbmNlIG9mIFNGVHJhbnNj
cmlwdGlvbiB3aGVuIHBvc3NpYmxlLgpAQCAtMTI0LDExICsxMjIsMTEgQEAgLSAodm9pZCljYWxs
YmFja1dpdGhUcmFuc2NyaXB0aW9uczooTlNBcnJheTxTRlRyYW5zY3JpcHRpb24gKj4gKil0cmFu
c2NyaXB0aW9ucwogICAgICAgICAgICAgZG91YmxlIGNvbmZpZGVuY2UgPSBbc2VnbWVudCBjb25m
aWRlbmNlXTsKICAgICAgICAgICAgIG1heENvbmZpZGVuY2UgPSBtYXhDb25maWRlbmNlIDwgY29u
ZmlkZW5jZSA/IGNvbmZpZGVuY2UgOiBtYXhDb25maWRlbmNlOwogICAgICAgICB9Ci0gICAgICAg
IGFsdGVybmF0aXZlcy51bmNoZWNrZWRBcHBlbmQoU3BlZWNoUmVjb2duaXRpb25BbHRlcm5hdGl2
ZURhdGEgeyBbdHJhbnNjcmlwdGlvbiBmb3JtYXR0ZWRTdHJpbmddLCBtYXhDb25maWRlbmNlIH0p
OworICAgICAgICBhbHRlcm5hdGl2ZXMudW5jaGVja2VkQXBwZW5kKFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uQWx0ZXJuYXRpdmVEYXRhIHsgW3RyYW5zY3JpcHRpb24gZm9ybWF0dGVkU3RyaW5n
XSwgbWF4Q29uZmlkZW5jZSB9KTsKICAgICAgICAgaWYgKGFsdGVybmF0aXZlcy5zaXplKCkgPT0g
X21heEFsdGVybmF0aXZlcykKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBfZGVsZWdh
dGVDYWxsYmFjayhTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlUmVzdWx0KF9pZGVudGlm
aWVyLCB7IFNwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YSB7IFdURk1vdmUoYWx0ZXJuYXRpdmVz
KSwgISFpc0ZpbmFsIH0gfSkpOworICAgIF9kZWxlZ2F0ZUNhbGxiYWNrKFdlYkNvcmU6OlNwZWVj
aFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGVSZXN1bHQoX2lkZW50aWZpZXIsIHsgV2ViQ29yZTo6
U3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhIHsgV1RGTW92ZShhbHRlcm5hdGl2ZXMpLCAhIWlz
RmluYWwgfSB9KSk7CiB9CiAKIC0gKHZvaWQpYXVkaW9TYW1wbGVzQXZhaWxhYmxlOihDTVNhbXBs
ZUJ1ZmZlclJlZilzYW1wbGVCdWZmZXIKQEAgLTE3NSw3ICsxNzMsNyBAQCAtICh2b2lkKXNlbmRT
cGVlY2hTdGFydElmTmVlZGVkCiAgICAgICAgIHJldHVybjsKIAogICAgIF9oYXNTZW50U3BlZWNo
U3RhcnQgPSB0cnVlOwotICAgIF9kZWxlZ2F0ZUNhbGxiYWNrKFNwZWVjaFJlY29nbml0aW9uVXBk
YXRlOjpjcmVhdGUoX2lkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6U3Bl
ZWNoU3RhcnQpKTsKKyAgICBfZGVsZWdhdGVDYWxsYmFjayhXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
dGlvblVwZGF0ZTo6Y3JlYXRlKF9pZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
blVwZGF0ZVR5cGU6OlNwZWVjaFN0YXJ0KSk7CiB9CiAKIC0gKHZvaWQpc2VuZFNwZWVjaEVuZElm
TmVlZGVkCkBAIC0xODQsNyArMTgyLDcgQEAgLSAodm9pZClzZW5kU3BlZWNoRW5kSWZOZWVkZWQK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgX2hhc1NlbnRTcGVlY2hFbmQgPSB0cnVlOwotICAgIF9k
ZWxlZ2F0ZUNhbGxiYWNrKFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUoX2lkZW50aWZp
ZXIsIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6U3BlZWNoRW5kKSk7CisgICAgX2RlbGVn
YXRlQ2FsbGJhY2soV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZShfaWRl
bnRpZmllciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpTcGVlY2hFbmQp
KTsKIH0KIAogLSAodm9pZClzZW5kRW5kSWZOZWVkZWQKQEAgLTE5Myw3ICsxOTEsNyBAQCAtICh2
b2lkKXNlbmRFbmRJZk5lZWRlZAogICAgICAgICByZXR1cm47CiAKICAgICBfaGFzU2VudEVuZCA9
IHRydWU7Ci0gICAgX2RlbGVnYXRlQ2FsbGJhY2soU3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNy
ZWF0ZShfaWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpFbmQpKTsKKyAg
ICBfZGVsZWdhdGVDYWxsYmFjayhXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3Jl
YXRlKF9pZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVu
ZCkpOwogfQogCiAjcHJhZ21hIG1hcmsgU0ZTcGVlY2hSZWNvZ25pemVyRGVsZWdhdGUKQEAgLTIw
NSw4ICsyMDMsOCBAQCAtICh2b2lkKXNwZWVjaFJlY29nbml6ZXI6KFNGU3BlZWNoUmVjb2duaXpl
ciAqKXNwZWVjaFJlY29nbml6ZXIgYXZhaWxhYmlsaXR5RGlkQwogICAgIGlmIChhdmFpbGFibGUg
fHwgIV90YXNrKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGVycm9yID0gU3BlZWNoUmVj
b2duaXRpb25FcnJvciB7IFNwZWVjaFJlY29nbml0aW9uRXJyb3JUeXBlOjpTZXJ2aWNlTm90QWxs
b3dlZCwgIlNwZWVjaCByZWNvZ25pdGlvbiBzZXJ2aWNlIGJlY29tZXMgdW5hdmFpbGFibGUiX3Mg
fTsKLSAgICBfZGVsZWdhdGVDYWxsYmFjayhTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRl
RXJyb3IoX2lkZW50aWZpZXIsIFdURk1vdmUoZXJyb3IpKSk7CisgICAgYXV0byBlcnJvciA9IFdl
YkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3IgeyBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
bkVycm9yVHlwZTo6U2VydmljZU5vdEFsbG93ZWQsICJTcGVlY2ggcmVjb2duaXRpb24gc2Vydmlj
ZSBiZWNvbWVzIHVuYXZhaWxhYmxlIl9zIH07CisgICAgX2RlbGVnYXRlQ2FsbGJhY2soV2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZUVycm9yKF9pZGVudGlmaWVyLCBXVEZN
b3ZlKGVycm9yKSkpOwogfQogCiAjcHJhZ21hIG1hcmsgU0ZTcGVlY2hSZWNvZ25pdGlvblRhc2tE
ZWxlZ2F0ZQpAQCAtMjQzLDggKzI0MSw4IEBAIC0gKHZvaWQpc3BlZWNoUmVjb2duaXRpb25UYXNr
OihTRlNwZWVjaFJlY29nbml0aW9uVGFzayAqKXRhc2sgZGlkRmluaXNoU3VjY2Vzc2Z1CiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgIGlmICghc3VjY2Vzc2Z1bGx5KSB7Ci0gICAg
ICAgIGF1dG8gZXJyb3IgPSBTcGVlY2hSZWNvZ25pdGlvbkVycm9yIHsgU3BlZWNoUmVjb2duaXRp
b25FcnJvclR5cGU6OkFib3J0ZWQsIHRhc2suZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24gfTsK
LSAgICAgICAgX2RlbGVnYXRlQ2FsbGJhY2soU3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0
ZUVycm9yKF9pZGVudGlmaWVyLCBXVEZNb3ZlKGVycm9yKSkpOworICAgICAgICBhdXRvIGVycm9y
ID0gV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvciB7IFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uRXJyb3JUeXBlOjpBYm9ydGVkLCB0YXNrLmVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9u
IH07CisgICAgICAgIF9kZWxlZ2F0ZUNhbGxiYWNrKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9u
VXBkYXRlOjpjcmVhdGVFcnJvcihfaWRlbnRpZmllciwgV1RGTW92ZShlcnJvcikpKTsKICAgICB9
CiAgICAgCiAgICAgW3NlbGYgc2VuZEVuZElmTmVlZGVkXTsKQEAgLTI1NCw3ICsyNTIsNyBAQCBA
ZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJTcGVlY2hSZWNvZ25pemVyVGFzawogCi0tIChpbnN0
YW5jZXR5cGUpaW5pdFdpdGhJZGVudGlmaWVyOihTcGVlY2hSZWNvZ25pdGlvbkNvbm5lY3Rpb25D
bGllbnRJZGVudGlmaWVyKWlkZW50aWZpZXIgbG9jYWxlOihOU1N0cmluZyopbG9jYWxlSWRlbnRp
ZmllciBkb011bHRpcGxlUmVjb2duaXRpb25zOihCT09MKWNvbnRpbnVvdXMgcmVwb3J0SW50ZXJp
bVJlc3VsdHM6KEJPT0wpaW50ZXJpbVJlc3VsdHMgbWF4QWx0ZXJuYXRpdmVzOih1bnNpZ25lZCBs
b25nKWFsdGVybmF0aXZlcyBkZWxlZ2F0ZUNhbGxiYWNrOih2b2lkKF4pKGNvbnN0IFNwZWVjaFJl
Y29nbml0aW9uVXBkYXRlJikpY2FsbGJhY2sKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aElkZW50
aWZpZXI6KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZp
ZXIpaWRlbnRpZmllciBsb2NhbGU6KE5TU3RyaW5nKilsb2NhbGVJZGVudGlmaWVyIGRvTXVsdGlw
bGVSZWNvZ25pdGlvbnM6KEJPT0wpY29udGludW91cyByZXBvcnRJbnRlcmltUmVzdWx0czooQk9P
TClpbnRlcmltUmVzdWx0cyBtYXhBbHRlcm5hdGl2ZXM6KHVuc2lnbmVkIGxvbmcpYWx0ZXJuYXRp
dmVzIGRlbGVnYXRlQ2FsbGJhY2s6KHZvaWQoXikoY29uc3QgV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb25VcGRhdGUmKSljYWxsYmFjawogewogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0p
KQogICAgICAgICByZXR1cm4gbmlsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zcGVlY2gvY29jb2EvV2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2NrLm1tIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9zcGVlY2gvY29jb2EvV2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2NrLm1t
CmluZGV4IGM3Mjc1OWI3NjdhYTk1ODdkNzM3ZWE0MDI5YTMxNjdmOGM5N2YyZTguLjJkMzQ4ZWQy
MGMyMWI1MTAzNDg4NzlkNWMyNjNmYzBlM2NmZWQ4NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3BlZWNoL2NvY29hL1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jay5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25p
emVyVGFza01vY2subW0KQEAgLTI4LDEzICsyOCwxMSBAQAogCiAjaWYgSEFWRShTUEVFQ0hSRUNP
R05JWkVSKQogCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQogTlNfQVNTVU1FX05PTk5VTExf
QkVHSU4KIAogQGltcGxlbWVudGF0aW9uIFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jawogCi0t
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhJZGVudGlmaWVyOihTcGVlY2hSZWNvZ25pdGlvbkNvbm5l
Y3Rpb25DbGllbnRJZGVudGlmaWVyKWlkZW50aWZpZXIgbG9jYWxlOihOU1N0cmluZyopbG9jYWxl
SWRlbnRpZmllciBkb011bHRpcGxlUmVjb2duaXRpb25zOihCT09MKWNvbnRpbnVvdXMgcmVwb3J0
SW50ZXJpbVJlc3VsdHM6KEJPT0wpaW50ZXJpbVJlc3VsdHMgbWF4QWx0ZXJuYXRpdmVzOih1bnNp
Z25lZCBsb25nKWFsdGVybmF0aXZlcyBkZWxlZ2F0ZUNhbGxiYWNrOih2b2lkKF4pKGNvbnN0IFNw
ZWVjaFJlY29nbml0aW9uVXBkYXRlJikpY2FsbGJhY2sKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0
aElkZW50aWZpZXI6KFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElk
ZW50aWZpZXIpaWRlbnRpZmllciBsb2NhbGU6KE5TU3RyaW5nKilsb2NhbGVJZGVudGlmaWVyIGRv
TXVsdGlwbGVSZWNvZ25pdGlvbnM6KEJPT0wpY29udGludW91cyByZXBvcnRJbnRlcmltUmVzdWx0
czooQk9PTClpbnRlcmltUmVzdWx0cyBtYXhBbHRlcm5hdGl2ZXM6KHVuc2lnbmVkIGxvbmcpYWx0
ZXJuYXRpdmVzIGRlbGVnYXRlQ2FsbGJhY2s6KHZvaWQoXikoY29uc3QgV2ViQ29yZTo6U3BlZWNo
UmVjb2duaXRpb25VcGRhdGUmKSljYWxsYmFjawogewogICAgIFVOVVNFRF9QQVJBTShsb2NhbGVJ
ZGVudGlmaWVyKTsKICAgICBVTlVTRURfUEFSQU0oaW50ZXJpbVJlc3VsdHMpOwpAQCAtNTksMTIg
KzU3LDEyIEBAIC0gKHZvaWQpYXVkaW9TYW1wbGVzQXZhaWxhYmxlOihDTVNhbXBsZUJ1ZmZlclJl
ZilzYW1wbGVCdWZmZXIKICAgICAKICAgICBpZiAoIV9oYXNTZW50U3BlZWNoU3RhcnQpIHsKICAg
ICAgICAgX2hhc1NlbnRTcGVlY2hTdGFydCA9IHRydWU7Ci0gICAgICAgIF9kZWxlZ2F0ZUNhbGxi
YWNrKFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUoX2lkZW50aWZpZXIsIFNwZWVjaFJl
Y29nbml0aW9uVXBkYXRlVHlwZTo6U3BlZWNoU3RhcnQpKTsKKyAgICAgICAgX2RlbGVnYXRlQ2Fs
bGJhY2soV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZShfaWRlbnRpZmll
ciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpTcGVlY2hTdGFydCkpOwog
ICAgIH0KIAogICAgIC8vIEZha2Ugc29tZSByZWNvZ25pdGlvbiByZXN1bHRzLgotICAgIFNwZWVj
aFJlY29nbml0aW9uQWx0ZXJuYXRpdmVEYXRhIGFsdGVybmF0aXZlIHsgIlRlc3QiLCAxLjAgfTsK
LSAgICBfZGVsZWdhdGVDYWxsYmFjayhTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlUmVz
dWx0KF9pZGVudGlmaWVyLCB7IFNwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YSB7IHsgV1RGTW92
ZShhbHRlcm5hdGl2ZSkgfSwgdHJ1ZSB9IH0pKTsKKyAgICBXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
dGlvbkFsdGVybmF0aXZlRGF0YSBhbHRlcm5hdGl2ZSB7ICJUZXN0IiwgMS4wIH07CisgICAgX2Rl
bGVnYXRlQ2FsbGJhY2soV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZVJl
c3VsdChfaWRlbnRpZmllciwgeyBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlc3VsdERhdGEg
eyB7IFdURk1vdmUoYWx0ZXJuYXRpdmUpIH0sIHRydWUgfSB9KSk7CiAKICAgICBpZiAoIV9kb011
bHRpcGxlUmVjb2duaXRpb25zKQogICAgICAgICBbc2VsZiBhYm9ydF07CkBAIC03OCwxMCArNzYs
MTAgQEAgLSAodm9pZClhYm9ydAogCiAgICAgaWYgKCFfaGFzU2VudFNwZWVjaEVuZCAmJiBfaGFz
U2VudFNwZWVjaFN0YXJ0KSB7CiAgICAgICAgIF9oYXNTZW50U3BlZWNoRW5kID0gdHJ1ZTsKLSAg
ICAgICAgX2RlbGVnYXRlQ2FsbGJhY2soU3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZShf
aWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpTcGVlY2hFbmQpKTsKKyAg
ICAgICAgX2RlbGVnYXRlQ2FsbGJhY2soV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6
OmNyZWF0ZShfaWRlbnRpZmllciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBl
OjpTcGVlY2hFbmQpKTsKICAgICB9CiAKLSAgICBfZGVsZWdhdGVDYWxsYmFjayhTcGVlY2hSZWNv
Z25pdGlvblVwZGF0ZTo6Y3JlYXRlKF9pZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0
ZVR5cGU6OkVuZCkpOworICAgIF9kZWxlZ2F0ZUNhbGxiYWNrKFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uVXBkYXRlOjpjcmVhdGUoX2lkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0
aW9uVXBkYXRlVHlwZTo6RW5kKSk7CiB9CiAKIC0gKHZvaWQpc3RvcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zeXN0ZW0tcHJldmlldy9BUktpdEJhZGdlU3lzdGVtSW1hZ2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3lzdGVtLXByZXZpZXcvQVJLaXRCYWRnZVN5c3Rl
bUltYWdlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYTkyNzlmOGQ3YTUzNTg0YTAxNWJlYzFjNGI2YzNjMzliNWIy
Y2ZkOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3lzdGVtLXBy
ZXZpZXcvQVJLaXRCYWRnZVN5c3RlbUltYWdlLmgKQEAgLTAsMCArMSwxMTYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIFVTRShTWVNURU1fUFJFVklFVykKKworI2luY2x1ZGUg
Ik5hdGl2ZUltYWdlLmgiCisjaW5jbHVkZSAiU3lzdGVtSW1hZ2UuaCIKKyNpbmNsdWRlIDxvcHRp
b25hbD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK09CSkNfQ0xBU1MgQ0lDb250ZXh0OworCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIEFSS2l0QmFkZ2VTeXN0ZW1JbWFn
ZSBmaW5hbCA6IHB1YmxpYyBTeXN0ZW1JbWFnZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxB
UktpdEJhZGdlU3lzdGVtSW1hZ2U+IGNyZWF0ZShJbWFnZSYgaW1hZ2UpCisgICAgeworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBUktpdEJhZGdlU3lzdGVtSW1hZ2UoaW1hZ2UpKTsKKyAg
ICB9CisKKyAgICBzdGF0aWMgUmVmPEFSS2l0QmFkZ2VTeXN0ZW1JbWFnZT4gY3JlYXRlKFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIEZsb2F0
U2l6ZSBzaXplKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQVJLaXRCYWRn
ZVN5c3RlbUltYWdlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgc2l6ZSkpOworICAgIH0K
KworICAgIHZpcnR1YWwgfkFSS2l0QmFkZ2VTeXN0ZW1JbWFnZSgpID0gZGVmYXVsdDsKKworICAg
IHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBjb25zdCBmaW5h
bDsKKworICAgIEltYWdlKiBpbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2UuZ2V0KCk7IH0K
KyAgICB2b2lkIHNldEltYWdlKEltYWdlJiBpbWFnZSkgeyBtX2ltYWdlID0gJmltYWdlOyB9CisK
KyAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VJZGVudGlmaWVyKCkgY29uc3Qg
eyByZXR1cm4gbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7IH0KKworICAgIHRlbXBsYXRl
PGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxSZWY8QVJLaXRCYWRnZVN5c3Rl
bUltYWdlPj4gZGVjb2RlKERlY29kZXImKTsKKworcHJpdmF0ZToKKyAgICBBUktpdEJhZGdlU3lz
dGVtSW1hZ2UoSW1hZ2UmIGltYWdlKQorICAgICAgICA6IFN5c3RlbUltYWdlKFN5c3RlbUltYWdl
VHlwZTo6QVJLaXRCYWRnZSkKKyAgICAgICAgLCBtX2ltYWdlKCZpbWFnZSkKKyAgICAgICAgLCBt
X2ltYWdlU2l6ZShpbWFnZS5zaXplKCkpCisgICAgeworICAgIH0KKworICAgIEFSS2l0QmFkZ2VT
eXN0ZW1JbWFnZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyLCBGbG9hdFNpemUgc2l6ZSkKKyAgICAgICAgOiBTeXN0ZW1JbWFnZShTeXN0ZW1J
bWFnZVR5cGU6OkFSS2l0QmFkZ2UpCisgICAgICAgICwgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQorICAgICAgICAsIG1faW1hZ2VTaXpl
KHNpemUpCisgICAgeworICAgIH0KKworICAgIFJlZlB0cjxJbWFnZT4gbV9pbWFnZTsKKyAgICBS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7
CisgICAgRmxvYXRTaXplIG1faW1hZ2VTaXplOworfTsKKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4KK3ZvaWQgQVJLaXRCYWRnZVN5c3RlbUltYWdlOjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKK3sKKyAgICBBU1NFUlQobV9pbWFnZSk7CisgICAgQVNTRVJUKG1faW1hZ2UtPm5hdGl2
ZUltYWdlKCkpOworICAgIGVuY29kZXIgPDwgbV9pbWFnZS0+bmF0aXZlSW1hZ2UoKS0+cmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyKCk7CisgICAgZW5jb2RlciA8PCBtX2ltYWdlU2l6ZTsKK30K
KwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK3N0ZDo6b3B0aW9uYWw8UmVmPEFSS2l0QmFkZ2VT
eXN0ZW1JbWFnZT4+IEFSS2l0QmFkZ2VTeXN0ZW1JbWFnZTo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCit7CisgICAgc3RkOjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IHJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsKKyAgICBkZWNvZGVyID4+IHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcjsKKyAgICBpZiAoIXJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRTaXpl
PiBpbWFnZVNpemU7CisgICAgZGVjb2RlciA+PiBpbWFnZVNpemU7CisgICAgaWYgKCFpbWFnZVNp
emUpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gQVJLaXRCYWRn
ZVN5c3RlbUltYWdlOjpjcmVhdGUoV1RGTW92ZSgqcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KSwgV1RGTW92ZSgqaW1hZ2VTaXplKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpBUktpdEJhZGdlU3lzdGVtSW1h
Z2UpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OlN5c3RlbUltYWdlJiBz
eXN0ZW1JbWFnZSkgeyByZXR1cm4gc3lzdGVtSW1hZ2Uuc3lzdGVtSW1hZ2VUeXBlKCkgPT0gV2Vi
Q29yZTo6U3lzdGVtSW1hZ2VUeXBlOjpBUktpdEJhZGdlOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX0VORCgpCisKKyNlbmRpZiAvLyBVU0UoU1lTVEVNX1BSRVZJRVcpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N5c3RlbS1wcmV2aWV3L0FSS2l0QmFkZ2VTeXN0ZW1JbWFn
ZS5tbSBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3lzdGVtLXByZXZpZXcvQVJLaXRCYWRnZVN5
c3RlbUltYWdlLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVhYjUyNjU3ZmJiNTI2MjI4YzMwMGM0NTg1OWRiY2Yy
MTgxMTRjNjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N5c3Rl
bS1wcmV2aWV3L0FSS2l0QmFkZ2VTeXN0ZW1JbWFnZS5tbQpAQCAtMCwwICsxLDIyNyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiQVJLaXRCYWRnZVN5c3RlbUlt
YWdlLmgiCisKKyNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCisKKyNpbXBvcnQgIkNvbG9yU3BhY2VD
Ry5oIgorI2ltcG9ydCAiRmxvYXRSZWN0LmgiCisjaW1wb3J0ICJHZW9tZXRyeVV0aWxpdGllcy5o
IgorI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW1wb3J0ICJJT1N1cmZhY2UuaCIKKyNp
bXBvcnQgPENvcmVHcmFwaGljcy9Db3JlR3JhcGhpY3MuaD4KKyNpbXBvcnQgPENvcmVJbWFnZS9D
b3JlSW1hZ2UuaD4KKyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2ltcG9ydCA8d3Rm
L1JldGFpblB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBOU0J1bmRsZSAq
YXJLaXRCdW5kbGUoKQoreworICAgIHN0YXRpYyBOU0J1bmRsZSAqYXJLaXRCdW5kbGU7CisgICAg
c3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47CisgICAgZGlzcGF0Y2hfb25jZSgmb25j
ZVRva2VuLCBeeworICAgICAgICBhcktpdEJ1bmRsZSA9IFtdKCkgeworI2lmIFBMQVRGT1JNKElP
U19GQU1JTFlfU0lNVUxBVE9SKQorICAgICAgICAgICAgZGxvcGVuKCIvU3lzdGVtL0xpYnJhcnkv
UHJpdmF0ZUZyYW1ld29ya3MvQXNzZXRWaWV3ZXIuZnJhbWV3b3JrL0Fzc2V0Vmlld2VyIiwgUlRM
RF9OT1cpOworICAgICAgICAgICAgcmV0dXJuIFtOU0J1bmRsZSBidW5kbGVGb3JDbGFzczpOU0Ns
YXNzRnJvbVN0cmluZyhAIkFTVlRodW1ibmFpbFZpZXciKV07CisjZWxzZQorICAgICAgICAgICAg
cmV0dXJuIFtOU0J1bmRsZSBidW5kbGVXaXRoVVJMOltOU1VSTCBmaWxlVVJMV2l0aFBhdGg6QCIv
U3lzdGVtL0xpYnJhcnkvUHJpdmF0ZUZyYW1ld29ya3MvQXNzZXRWaWV3ZXIuZnJhbWV3b3JrIl1d
OworI2VuZGlmCisgICAgICAgIH0oKTsKKyAgICB9KTsKKyAgICByZXR1cm4gYXJLaXRCdW5kbGU7
Cit9CisKK3N0YXRpYyBSZXRhaW5QdHI8Q0dQREZQYWdlUmVmPiBsb2FkQVJLaXRQREZQYWdlKE5T
U3RyaW5nICppbWFnZU5hbWUpCit7CisgICAgTlNVUkwgKnVybCA9IFthcktpdEJ1bmRsZSgpIFVS
TEZvclJlc291cmNlOmltYWdlTmFtZSB3aXRoRXh0ZW5zaW9uOkAicGRmIl07CisgICAgaWYgKCF1
cmwpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGF1dG8gZG9jdW1lbnQgPSBhZG9wdENG
KENHUERGRG9jdW1lbnRDcmVhdGVXaXRoVVJMKChDRlVSTFJlZil1cmwpKTsKKyAgICBpZiAoIWRv
Y3VtZW50KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoIUNHUERGRG9jdW1lbnRH
ZXROdW1iZXJPZlBhZ2VzKGRvY3VtZW50LmdldCgpKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgcmV0dXJuIENHUERGRG9jdW1lbnRHZXRQYWdlKGRvY3VtZW50LmdldCgpLCAxKTsKK30K
Kworc3RhdGljIFJldGFpblB0cjxDR1BERlBhZ2VSZWY+IHN5c3RlbVByZXZpZXdMb2dvKCkKK3sK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENHUERGUGFnZVJlZj4+IGxvZ29Q
YWdlOworICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOworICAgIGRpc3BhdGNo
X29uY2UoJm9uY2VUb2tlbiwgXnsKKyAgICAgICAgbG9nb1BhZ2UuZ2V0KCkgPSBsb2FkQVJLaXRQ
REZQYWdlKEAiQVJLaXRCYWRnZSIpOworICAgIH0pOworICAgIHJldHVybiBsb2dvUGFnZTsKK30K
Kwordm9pZCBBUktpdEJhZGdlU3lzdGVtSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBncmFw
aGljc0NvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkgY29uc3QKK3sKKyAgICBhdXRvIHBh
Z2UgPSBzeXN0ZW1QcmV2aWV3TG9nbygpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgc3RhdGljIGNvbnN0IGludCBsYXJnZUJhZGdlRGltZW5zaW9uID0gNzA7CisgICAg
c3RhdGljIGNvbnN0IGludCBsYXJnZUJhZGdlT2Zmc2V0ID0gMjA7CisKKyAgICBzdGF0aWMgY29u
c3QgaW50IHNtYWxsQmFkZ2VEaW1lbnNpb24gPSAzNTsKKyAgICBzdGF0aWMgY29uc3QgaW50IHNt
YWxsQmFkZ2VPZmZzZXQgPSA4OworCisgICAgc3RhdGljIGNvbnN0IGludCBtaW5pbXVtU2l6ZUZv
ckxhcmdlQmFkZ2UgPSAyNDA7CisKKyAgICBib29sIHVzZVNtYWxsQmFkZ2UgPSByZWN0LndpZHRo
KCkgPCBtaW5pbXVtU2l6ZUZvckxhcmdlQmFkZ2UgfHwgcmVjdC5oZWlnaHQoKSA8IG1pbmltdW1T
aXplRm9yTGFyZ2VCYWRnZTsKKyAgICBpbnQgYmFkZ2VPZmZzZXQgPSB1c2VTbWFsbEJhZGdlID8g
c21hbGxCYWRnZU9mZnNldCA6IGxhcmdlQmFkZ2VPZmZzZXQ7CisgICAgaW50IGJhZGdlRGltZW5z
aW9uID0gdXNlU21hbGxCYWRnZSA/IHNtYWxsQmFkZ2VEaW1lbnNpb24gOiBsYXJnZUJhZGdlRGlt
ZW5zaW9uOworCisgICAgaW50IG1pbmltdW1EaW1lbnNpb24gPSBiYWRnZURpbWVuc2lvbiArIDIg
KiBiYWRnZU9mZnNldDsKKyAgICBpZiAocmVjdC53aWR0aCgpIDwgbWluaW11bURpbWVuc2lvbiB8
fCByZWN0LmhlaWdodCgpIDwgbWluaW11bURpbWVuc2lvbikKKyAgICAgICAgcmV0dXJuOworCisg
ICAgQ0dSZWN0IGFic29sdXRlQmFkZ2VSZWN0ID0gQ0dSZWN0TWFrZShyZWN0LngoKSArIHJlY3Qu
d2lkdGgoKSAtIGJhZGdlRGltZW5zaW9uIC0gYmFkZ2VPZmZzZXQsIHJlY3QueSgpICsgYmFkZ2VP
ZmZzZXQsIGJhZGdlRGltZW5zaW9uLCBiYWRnZURpbWVuc2lvbik7CisgICAgQ0dSZWN0IGluc2V0
QmFkZ2VSZWN0ID0gQ0dSZWN0TWFrZShyZWN0LndpZHRoKCkgLSBiYWRnZURpbWVuc2lvbiAtIGJh
ZGdlT2Zmc2V0LCBiYWRnZU9mZnNldCwgYmFkZ2VEaW1lbnNpb24sIGJhZGdlRGltZW5zaW9uKTsK
KyAgICBDR1JlY3QgYmFkZ2VSZWN0ID0gQ0dSZWN0TWFrZSgwLCAwLCBiYWRnZURpbWVuc2lvbiwg
YmFkZ2VEaW1lbnNpb24pOworCisgICAgaWYgKCFtX2ltYWdlIHx8ICFtX2ltYWdlLT5uYXRpdmVJ
bWFnZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBDSUltYWdlICppbnB1dEltYWdlID0gW0NJ
SW1hZ2UgaW1hZ2VXaXRoQ0dJbWFnZTptX2ltYWdlLT5uYXRpdmVJbWFnZSgpLT5wbGF0Zm9ybUlt
YWdlKCkuZ2V0KCldOworCisgICAgLy8gQ3JlYXRlIGEgY2lyY2xlIHRvIGJlIHVzZWQgZm9yIHRo
ZSBjbGlwcGluZyBwYXRoIGluIHRoZSBiYWRnZSwgYXMgd2VsbCBhcyB0aGUgZHJvcCBzaGFkb3cu
CisgICAgUmV0YWluUHRyPENHUGF0aFJlZj4gY2lyY2xlID0gYWRvcHRDRihDR1BhdGhDcmVhdGVX
aXRoUm91bmRlZFJlY3QoYWJzb2x1dGVCYWRnZVJlY3QsIGJhZGdlRGltZW5zaW9uIC8gMiwgYmFk
Z2VEaW1lbnNpb24gLyAyLCBudWxscHRyKSk7CisKKyAgICBpZiAoZ3JhcGhpY3NDb250ZXh0LnBh
aW50aW5nRGlzYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgR3JhcGhpY3NDb250ZXh0
U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGdyYXBoaWNzQ29udGV4dCk7CisKKyAgICBDR0NvbnRleHRS
ZWYgY3R4ID0gZ3JhcGhpY3NDb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpOworICAgIGlmICghY3R4
KQorICAgICAgICByZXR1cm47CisKKyAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGN0eCk7CisKKyAg
ICAvLyBEcmF3IGEgZHJvcCBzaGFkb3cgYXJvdW5kIHRoZSBjaXJjbGUuCisgICAgLy8gVXNlIHRo
ZSBHcmFwaGljc0NvbnRleHQgZnVuY3Rpb24sIGJlY2F1c2UgaXQgY2FsY3VsYXRlcyB0aGUgYmx1
ciByYWRpdXMgaW4gY29udGV4dCBzcGFjZSwKKyAgICAvLyByYXRoZXIgdGhhbiBzY3JlZW4gc3Bh
Y2UuCisgICAgY29uc3RleHByIGF1dG8gc2hhZG93Q29sb3IgPSBDb2xvcjo6YmxhY2suY29sb3JX
aXRoQWxwaGFCeXRlKDI2KTsKKyAgICBncmFwaGljc0NvbnRleHQuc2V0U2hhZG93KEZsb2F0U2l6
ZSB7IH0sIDE2LCBzaGFkb3dDb2xvcik7CisKKyAgICAvLyBUaGUgY2lyY2xlIG11c3QgaGF2ZSBh
biBhbHBoYSBjaGFubmVsIHZhbHVlIG9mIDEgZm9yIHRoZSBzaGFkb3cgY29sb3IgdG8gYXBwZWFy
LgorICAgIENHRmxvYXQgY2lyY2xlQ29sb3JDb21wb25lbnRzWzRdID0geyAwLCAwLCAwLCAxIH07
CisgICAgUmV0YWluUHRyPENHQ29sb3JSZWY+IGNpcmNsZUNvbG9yID0gYWRvcHRDRihDR0NvbG9y
Q3JlYXRlKHNSR0JDb2xvclNwYWNlUmVmKCksIGNpcmNsZUNvbG9yQ29tcG9uZW50cykpOworICAg
IENHQ29udGV4dFNldEZpbGxDb2xvcldpdGhDb2xvcihjdHgsIGNpcmNsZUNvbG9yLmdldCgpKTsK
KworICAgIC8vIENsaXAgb3V0IHRoZSBjaXJjbGUgdG8gb25seSBzaG93IHRoZSBzaGFkb3cuCisg
ICAgQ0dDb250ZXh0QmVnaW5QYXRoKGN0eCk7CisgICAgQ0dDb250ZXh0QWRkUmVjdChjdHgsIHJl
Y3QpOworICAgIENHQ29udGV4dEFkZFBhdGgoY3R4LCBjaXJjbGUuZ2V0KCkpOworICAgIENHQ29u
dGV4dENsb3NlUGF0aChjdHgpOworICAgIENHQ29udGV4dEVPQ2xpcChjdHgpOworCisgICAgLy8g
RHJhdyBhIHNsaWdodGx5IHNtYWxsZXIgY2lyY2xlIHdpdGggYSBzaGFkb3csIG90aGVyd2lzZSB3
ZSdsbCBzZWUgYSBmcmluZ2Ugb2YgdGhlIHNvbGlkCisgICAgLy8gYmxhY2sgY2lyY2xlIGFyb3Vu
ZCB0aGUgZWRnZXMgb2YgdGhlIGNsaXBwZWQgcGF0aCBiZWxvdy4KKyAgICBDR0NvbnRleHRCZWdp
blBhdGgoY3R4KTsKKyAgICBDR1JlY3Qgc2xpZ2h0bHlTbWFsbGVyQWJzb2x1dGVCYWRnZVJlY3Qg
PSBDR1JlY3RNYWtlKGFic29sdXRlQmFkZ2VSZWN0Lm9yaWdpbi54ICsgMC41LCBhYnNvbHV0ZUJh
ZGdlUmVjdC5vcmlnaW4ueSArIDAuNSwgYmFkZ2VEaW1lbnNpb24gLSAxLCBiYWRnZURpbWVuc2lv
biAtIDEpOworICAgIFJldGFpblB0cjxDR1BhdGhSZWY+IHNsaWdodGx5U21hbGxlckNpcmNsZSA9
IGFkb3B0Q0YoQ0dQYXRoQ3JlYXRlV2l0aFJvdW5kZWRSZWN0KHNsaWdodGx5U21hbGxlckFic29s
dXRlQmFkZ2VSZWN0LCBzbGlnaHRseVNtYWxsZXJBYnNvbHV0ZUJhZGdlUmVjdC5zaXplLndpZHRo
IC8gMiwgc2xpZ2h0bHlTbWFsbGVyQWJzb2x1dGVCYWRnZVJlY3Quc2l6ZS5oZWlnaHQgLyAyLCBu
dWxscHRyKSk7CisgICAgQ0dDb250ZXh0QWRkUGF0aChjdHgsIHNsaWdodGx5U21hbGxlckNpcmNs
ZS5nZXQoKSk7CisgICAgQ0dDb250ZXh0Q2xvc2VQYXRoKGN0eCk7CisgICAgQ0dDb250ZXh0Rmls
bFBhdGgoY3R4KTsKKworICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUoY3R4KTsKKworICAgIC8v
IERyYXcgdGhlIGJsdXJyZWQgYmFja2Ryb3AuIFNjYWxlIGZyb20gaW50cmluc2ljIHNpemUgdG8g
cmVuZGVyIHNpemUuCisgICAgQ0dBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtID0gQ0dBZmZpbmVU
cmFuc2Zvcm1JZGVudGl0eTsKKyAgICB0cmFuc2Zvcm0gPSBDR0FmZmluZVRyYW5zZm9ybVNjYWxl
KHRyYW5zZm9ybSwgcmVjdC53aWR0aCgpIC8gbV9pbWFnZVNpemUud2lkdGgoKSwgcmVjdC5oZWln
aHQoKSAvIG1faW1hZ2VTaXplLmhlaWdodCgpKTsKKyAgICBDSUltYWdlICpzY2FsZWRJbWFnZSA9
IFtpbnB1dEltYWdlIGltYWdlQnlBcHBseWluZ1RyYW5zZm9ybTp0cmFuc2Zvcm1dOworCisgICAg
Ly8gQ29yZUltYWdlIGNvb3JkaW5hdGVzIGFyZSB5LXVwLCBzbyB3ZSBuZWVkIHRvIGZsaXAgdGhl
IGJhZGdlIHJlY3RhbmdsZSB3aXRoaW4gdGhlIGltYWdlIGZyYW1lLgorICAgIENHUmVjdCBmbGlw
cGVkSW5zZXRCYWRnZVJlY3QgPSBDR1JlY3RNYWtlKGluc2V0QmFkZ2VSZWN0Lm9yaWdpbi54LCBy
ZWN0LmhlaWdodCgpIC0gaW5zZXRCYWRnZVJlY3Qub3JpZ2luLnkgLSBpbnNldEJhZGdlUmVjdC5z
aXplLmhlaWdodCwgYmFkZ2VEaW1lbnNpb24sIGJhZGdlRGltZW5zaW9uKTsKKworICAgIC8vIENy
ZWF0ZSBhIGNyb3BwZWQgcmVnaW9uIHdpdGggcGl4ZWwgdmFsdWVzIGV4dGVuZGluZyBvdXR3YXJk
cy4KKyAgICBDSUltYWdlICpjbGFtcGVkSW1hZ2UgPSBbc2NhbGVkSW1hZ2UgaW1hZ2VCeUNsYW1w
aW5nVG9SZWN0OmZsaXBwZWRJbnNldEJhZGdlUmVjdF07CisKKyAgICAvLyBCbHVyLgorICAgIENJ
SW1hZ2UgKmJsdXJyZWRJbWFnZSA9IFtjbGFtcGVkSW1hZ2UgaW1hZ2VCeUFwcGx5aW5nR2F1c3Np
YW5CbHVyV2l0aFNpZ21hOjEwXTsKKworICAgIC8vIFNhdHVyYXRlLgorICAgIENJRmlsdGVyICpz
YXR1cmF0aW9uRmlsdGVyID0gW0NJRmlsdGVyIGZpbHRlcldpdGhOYW1lOkAiQ0lDb2xvckNvbnRy
b2xzIl07CisgICAgW3NhdHVyYXRpb25GaWx0ZXIgc2V0VmFsdWU6Ymx1cnJlZEltYWdlIGZvcktl
eTprQ0lJbnB1dEltYWdlS2V5XTsKKyAgICBbc2F0dXJhdGlvbkZpbHRlciBzZXRWYWx1ZTpAMS44
IGZvcktleTprQ0lJbnB1dFNhdHVyYXRpb25LZXldOworCisgICAgLy8gVGludC4KKyAgICBDSUZp
bHRlciAqdGludEZpbHRlcjEgPSBbQ0lGaWx0ZXIgZmlsdGVyV2l0aE5hbWU6QCJDSUNvbnN0YW50
Q29sb3JHZW5lcmF0b3IiXTsKKyAgICBDSUNvbG9yICp0aW50Q29sb3IxID0gW0NJQ29sb3IgY29s
b3JXaXRoUmVkOjEgZ3JlZW46MSBibHVlOjEgYWxwaGE6MC4xOF07CisgICAgW3RpbnRGaWx0ZXIx
IHNldFZhbHVlOnRpbnRDb2xvcjEgZm9yS2V5OmtDSUlucHV0Q29sb3JLZXldOworCisgICAgLy8g
QmxlbmQgdGhlIHRpbnQgd2l0aCB0aGUgc2F0dXJhdGVkIG91dHB1dC4KKyAgICBDSUZpbHRlciAq
c291cmNlT3ZlckZpbHRlciA9IFtDSUZpbHRlciBmaWx0ZXJXaXRoTmFtZTpAIkNJU291cmNlT3Zl
ckNvbXBvc2l0aW5nIl07CisgICAgW3NvdXJjZU92ZXJGaWx0ZXIgc2V0VmFsdWU6dGludEZpbHRl
cjEub3V0cHV0SW1hZ2UgZm9yS2V5OmtDSUlucHV0SW1hZ2VLZXldOworICAgIFtzb3VyY2VPdmVy
RmlsdGVyIHNldFZhbHVlOnNhdHVyYXRpb25GaWx0ZXIub3V0cHV0SW1hZ2UgZm9yS2V5OmtDSUlu
cHV0QmFja2dyb3VuZEltYWdlS2V5XTsKKworICAgIFJldGFpblB0cjxDSUNvbnRleHQ+IGNpQ29u
dGV4dCA9IFtDSUNvbnRleHQgY29udGV4dF07CisKKyAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4g
Y2dJbWFnZTsKKyNpZiBIQVZFKElPU1VSRkFDRV9DT1JFSU1BR0VfU1VQUE9SVCkKKyAgICAvLyBD
cm9wIHRoZSByZXN1bHQgdG8gdGhlIGJhZGdlIGxvY2F0aW9uLgorICAgIENJSW1hZ2UgKmNyb3Bw
ZWRJbWFnZSA9IFtzb3VyY2VPdmVyRmlsdGVyLm91dHB1dEltYWdlIGltYWdlQnlDcm9wcGluZ1Rv
UmVjdDpmbGlwcGVkSW5zZXRCYWRnZVJlY3RdOworICAgIENJSW1hZ2UgKnRyYW5zbGF0ZWRJbWFn
ZSA9IFtjcm9wcGVkSW1hZ2UgaW1hZ2VCeUFwcGx5aW5nVHJhbnNmb3JtOkNHQWZmaW5lVHJhbnNm
b3JtTWFrZVRyYW5zbGF0aW9uKC1mbGlwcGVkSW5zZXRCYWRnZVJlY3Qub3JpZ2luLngsIC1mbGlw
cGVkSW5zZXRCYWRnZVJlY3Qub3JpZ2luLnkpXTsKKworICAgIGF1dG8gc3VyZmFjZURpbWVuc2lv
biA9IHVzZVNtYWxsQmFkZ2UgPyBzbWFsbEJhZGdlRGltZW5zaW9uIDogbGFyZ2VCYWRnZURpbWVu
c2lvbjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBiYWRnZVN1cmZhY2UgPSBJT1N1
cmZhY2U6OmNyZWF0ZSh7IHN1cmZhY2VEaW1lbnNpb24sIHN1cmZhY2VEaW1lbnNpb24gfSwgRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOworICAgIElPU3VyZmFjZVJlZiBzdXJmYWNlID0g
YmFkZ2VTdXJmYWNlLT5zdXJmYWNlKCk7CisgICAgW2NpQ29udGV4dCByZW5kZXI6dHJhbnNsYXRl
ZEltYWdlIHRvSU9TdXJmYWNlOnN1cmZhY2UgYm91bmRzOmJhZGdlUmVjdCBjb2xvclNwYWNlOnNS
R0JDb2xvclNwYWNlUmVmKCldOworICAgIGNnSW1hZ2UgPSB1c2VTbWFsbEJhZGdlID8gYmFkZ2VT
dXJmYWNlLT5jcmVhdGVJbWFnZSgpIDogYmFkZ2VTdXJmYWNlLT5jcmVhdGVJbWFnZSgpOworI2Vs
c2UKKyAgICBjZ0ltYWdlID0gYWRvcHRDRihbY2lDb250ZXh0IGNyZWF0ZUNHSW1hZ2U6c291cmNl
T3ZlckZpbHRlci5vdXRwdXRJbWFnZSBmcm9tUmVjdDpmbGlwcGVkSW5zZXRCYWRnZVJlY3RdKTsK
KyNlbmRpZgorCisgICAgLy8gQmVmb3JlIHdlIHJlbmRlciB0aGUgcmVzdWx0LCB3ZSBzaG91bGQg
Y2xpcCB0byBhIGNpcmNsZSBhcm91bmQgdGhlIGJhZGdlIHJlY3RhbmdsZS4KKyAgICBDR0NvbnRl
eHRTYXZlR1N0YXRlKGN0eCk7CisgICAgQ0dDb250ZXh0QmVnaW5QYXRoKGN0eCk7CisgICAgQ0dD
b250ZXh0QWRkUGF0aChjdHgsIGNpcmNsZS5nZXQoKSk7CisgICAgQ0dDb250ZXh0Q2xvc2VQYXRo
KGN0eCk7CisgICAgQ0dDb250ZXh0Q2xpcChjdHgpOworCisgICAgQ0dDb250ZXh0VHJhbnNsYXRl
Q1RNKGN0eCwgYWJzb2x1dGVCYWRnZVJlY3Qub3JpZ2luLngsIGFic29sdXRlQmFkZ2VSZWN0Lm9y
aWdpbi55KTsKKyAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY3R4LCAwLCBiYWRnZURpbWVuc2lv
bik7CisgICAgQ0dDb250ZXh0U2NhbGVDVE0oY3R4LCAxLCAtMSk7CisgICAgQ0dDb250ZXh0RHJh
d0ltYWdlKGN0eCwgYmFkZ2VSZWN0LCBjZ0ltYWdlLmdldCgpKTsKKworICAgIENHU2l6ZSBwZGZT
aXplID0gQ0dQREZQYWdlR2V0Qm94UmVjdChwYWdlLmdldCgpLCBrQ0dQREZNZWRpYUJveCkuc2l6
ZTsKKyAgICBDR0Zsb2F0IHNjYWxlWCA9IGJhZGdlRGltZW5zaW9uIC8gcGRmU2l6ZS53aWR0aDsK
KyAgICBDR0Zsb2F0IHNjYWxlWSA9IGJhZGdlRGltZW5zaW9uIC8gcGRmU2l6ZS5oZWlnaHQ7Cisg
ICAgQ0dDb250ZXh0U2NhbGVDVE0oY3R4LCBzY2FsZVgsIHNjYWxlWSk7CisgICAgQ0dDb250ZXh0
RHJhd1BERlBhZ2UoY3R4LCBwYWdlLmdldCgpKTsKKworICAgIENHQ29udGV4dEZsdXNoKGN0eCk7
CisgICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0ZShjdHgpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBVU0UoU1lTVEVNX1BSRVZJRVcpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29h
LnR4dAppbmRleCA0NGVjOTZlNjIyMTA4ZjRjYjMzOTUzYjJlNmUwMTY2ZjQ3YzhlZTA4Li5iOTFj
NmI3Mjg0Y2U0NjkwZTRiOTg4Y2Y4MmZhNDFkNTkyYjg1YTExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2Nv
YS50eHQKQEAgLTExOSw2ICsxMTksNyBAQCBNb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJl
cGxhY2VtZW50LmNwcAogTW9kdWxlcy9zcGVlY2gvY29jb2EvU3BlZWNoUmVjb2duaXplckNvY29h
Lm1tCiBNb2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25pemVyVGFzay5tbQogTW9k
dWxlcy9zcGVlY2gvY29jb2EvV2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2NrLm1tCitNb2R1bGVz
L3N5c3RlbS1wcmV2aWV3L0FSS2l0QmFkZ2VTeXN0ZW1JbWFnZS5tbQogTW9kdWxlcy93ZWJkYXRh
YmFzZS9jb2NvYS9EYXRhYmFzZU1hbmFnZXJDb2NvYS5tbQogYWNjZXNzaWJpbGl0eS9pb3MvQVhP
YmplY3RDYWNoZUlPUy5tbQogYWNjZXNzaWJpbGl0eS9pb3MvQWNjZXNzaWJpbGl0eU9iamVjdElP
Uy5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDNkNGRmYjQ3NjgzODcxZjZmMmY5MWYzYThjNjIzNGRhMGQ3NDVhMjYuLjQ5ZGEw
Y2UwZmE5N2ZmYWI3Y2JhMDA4MzVmNmFlZjk3MmU0NDIwZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIzMDksNiArMjMwOSw3
IEBACiAJCTcxNTZCQ0ExMjFDQTM1MEYwMDUzNDM5NyAvKiBCYXNpY0VmZmVjdFRpbWluZy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzE1NkJDOUYyMUNB
MzUwNjAwNTM0Mzk3IC8qIEJhc2ljRWZmZWN0VGltaW5nLmggKi87IH07CiAJCTcxNUFENzIwMjA1
MDUxMzIwMEQ1OTJEQyAvKiBEZWNsYXJhdGl2ZUFuaW1hdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzE1QUQ3MUQyMDUwNTEyNDAwRDU5MkRDIC8q
IERlY2xhcmF0aXZlQW5pbWF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNzE1QUQ3MjEyMDUwNTEzRjAwRDU5MkRDIC8qIENTU1RyYW5zaXRp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxMjND
MTg2MjA0NzM5QkEwMDc4OTM5MiAvKiBDU1NUcmFuc2l0aW9uLmggKi87IH07CisJCTcxNkM0QzM2
MjdFQjYwQzkwMDUzMTQ2NyAvKiBBUktpdEJhZGdlU3lzdGVtSW1hZ2UuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxNkM0QzM1MjdFQjYwOEUwMDUzMTQ2
NyAvKiBBUktpdEJhZGdlU3lzdGVtSW1hZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk3MTcyOUY3QjIwRjNCQTQ5MDA4MDFDRTYgLyogRG9jdW1l
bnRUaW1lbGluZU9wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDcxNzI5RjdBMjBGM0JBM0EwMDgwMUNFNiAvKiBEb2N1bWVudFRpbWVsaW5lT3B0
aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTcxNzI5RjdFMjBGM0JCNDcwMDgwMUNFNiAvKiBKU0RvY3VtZW50VGltZWxpbmVPcHRpb25zLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MTcyOUY3QzIw
RjNCQUI5MDA4MDFDRTYgLyogSlNEb2N1bWVudFRpbWVsaW5lT3B0aW9ucy5oICovOyB9OwogCQk3
MTczNjk0QTI3NUUwQjVFMDAzQURBOUIgLyogQ3VzdG9tRWZmZWN0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MUE3NEIwODI3NTkyOTM2MDBERTgwQkEg
LyogQ3VzdG9tRWZmZWN0LmggKi87IH07CkBAIC0xMTE4NSw2ICsxMTE4Niw4IEBACiAJCTcxNkE1
NUFCMjZGQTM0OUIwMEM5NkQ2OSAvKiByYW5nZS1idXR0b24uY3NzICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5jc3M7IHBhdGggPSAicmFuZ2Ut
YnV0dG9uLmNzcyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxNkE1NUFEMjZGQTM0
OUMwMEM5NkQ2OSAvKiB2b2x1bWUtYnV0dG9uLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gInZv
bHVtZS1idXR0b24uanMiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MTZBNTVBRTI2
RkEzNDlDMDBDOTZENjkgLyogcmFuZ2UtYnV0dG9uLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0g
InJhbmdlLWJ1dHRvbi5qcyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcxNkM0QzM0
MjdFQjYwOEUwMDUzMTQ2NyAvKiBBUktpdEJhZGdlU3lzdGVtSW1hZ2UubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBUktpdEJhZGdlU3lzdGVtSW1hZ2UubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcxNkM0QzM1MjdFQjYwOEUwMDUzMTQ2NyAvKiBB
UktpdEJhZGdlU3lzdGVtSW1hZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
QVJLaXRCYWRnZVN5c3RlbUltYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcx
NkZBMEQ4MURCMjY1OTEwMDczMjNDQyAvKiBhaXJwbGF5LWJ1dHRvbi5jc3MgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0LmNzczsgcGF0aCA9ICJhaXJwbGF5LWJ1dHRvbi5jc3MiOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3MTZGQTBEOTFEQjI2NTkxMDA3MzIzQ0MgLyogYWlycGxheS1idXR0b24uanMg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSAiYWlycGxheS1idXR0b24u
anMiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MTZGQTBEQTFEQjI2NTkxMDA3MzIz
Q0MgLyogYWlycGxheS1wbGFjYXJkLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0
OyBwYXRoID0gImFpcnBsYXktcGxhY2FyZC5qcyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0yNDY2NCw2ICsyNDY2NywxNSBAQAogCQkJcGF0aCA9IGFuaW1hdGlvbjsKIAkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCTcxNkM0QzMzMjdFQjYwOEUwMDUzMTQ2NyAvKiBz
eXN0ZW0tcHJldmlldyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAo
CisJCQkJNzE2QzRDMzUyN0VCNjA4RTAwNTMxNDY3IC8qIEFSS2l0QmFkZ2VTeXN0ZW1JbWFnZS5o
ICovLAorCQkJCTcxNkM0QzM0MjdFQjYwOEUwMDUzMTQ2NyAvKiBBUktpdEJhZGdlU3lzdGVtSW1h
Z2UubW0gKi8sCisJCQkpOworCQkJcGF0aCA9ICJzeXN0ZW0tcHJldmlldyI7CisJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOworCQl9OwogCQk3MTZGQTBENzFEQjI2NTkxMDA3MzIzQ0MgLyogY29u
dHJvbHMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMjYx
NzQsNiArMjYxODYsNyBAQAogCQkJCUFBMkE1QUI3MTZBNDg1QTQwMDk3NUEyNSAvKiBzcGVlY2gg
Ki8sCiAJCQkJOTMwODVEQjMyNkUwMDY4RTAwMEVDNkE3IC8qIHN0b3JhZ2UgKi8sCiAJCQkJNDFB
MDIzRUExQTM5REI3OTAwRjcyMkNGIC8qIHN0cmVhbXMgKi8sCisJCQkJNzE2QzRDMzMyN0VCNjA4
RTAwNTMxNDY3IC8qIHN5c3RlbS1wcmV2aWV3ICovLAogCQkJCTQ2NDRGN0VBMjcyQTFDMTYwMDU1
NTk5RSAvKiB3ZWItbG9ja3MgKi8sCiAJCQkJRkQzMTVGQTIxMkIwMjVCMTAwQzFBMzU5IC8qIHdl
YmF1ZGlvICovLAogCQkJCTU3RDg0NjJBMUZFQUY1N0YwMENBMzY4MiAvKiB3ZWJhdXRobiAqLywK
QEAgLTMzNTk2LDYgKzMzNjA5LDcgQEAKIAkJCQk1MTJERDhGRDBEOTFFNkFGMDAwRjg5RUUgLyog
QXJjaGl2ZUZhY3RvcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMkREOEZDMEQ5MUU2QUYwMDBG
ODlFRSAvKiBBcmNoaXZlUmVzb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMkREOEY4MEQ5
MUU2QUYwMDBGODlFRSAvKiBBcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAq
LywKKwkJCQk3MTZDNEMzNjI3RUI2MEM5MDA1MzE0NjcgLyogQVJLaXRCYWRnZVN5c3RlbUltYWdl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDU2ODZDQTEzQUMxODAyMDBCNjlDNjggLyogQXN5bmNB
dWRpb0RlY29kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxQ0RFOTIyMTUwMTkxNjkwMDg2MkND
NSAvKiBBc3luY0ZpbGVTdHJlYW0uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkQ0RDYxMTg2NTFG
QTMwMDUxMkY2RSAvKiBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmggaW4gSGVhZGVycyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1N5c3RlbUltYWdl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TeXN0ZW1JbWFnZS5oCmluZGV4
IGZlODNkM2E3NDcxNjdkMWY4ZDI2YTA3ZTRmOTI1OTViYmZmMTNkMzYuLmY1YWEyNzU2MDI4NGE2
YTI0NGRkOWQ2ZjI3ZDIwMDIwNDk3NjFkYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1N5c3RlbUltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvU3lzdGVtSW1hZ2UuaApAQCAtMzcsNiArMzcsOSBAQCBlbnVtIGNsYXNzIFN5
c3RlbUltYWdlVHlwZSA6IHVpbnQ4X3QgewogICAgIEFwcGxlUGF5QnV0dG9uLAogICAgIEFwcGxl
UGF5TG9nbywKICNlbmRpZgorI2lmIFVTRShTWVNURU1fUFJFVklFVykKKyAgICBBUktpdEJhZGdl
LAorI2VuZGlmCiB9OwogCiBjbGFzcyBXRUJDT1JFX0VYUE9SVCBTeXN0ZW1JbWFnZSA6IHB1Ymxp
YyBSZWZDb3VudGVkPFN5c3RlbUltYWdlPiB7CkBAIC02OCw2ICs3MSw5IEBAIHRlbXBsYXRlPD4g
c3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6U3lzdGVtSW1hZ2VUeXBlPiB7CiAjaWYgRU5BQkxF
KEFQUExFX1BBWSkKICAgICAgICAgLCBXZWJDb3JlOjpTeXN0ZW1JbWFnZVR5cGU6OkFwcGxlUGF5
QnV0dG9uLAogICAgICAgICBXZWJDb3JlOjpTeXN0ZW1JbWFnZVR5cGU6OkFwcGxlUGF5TG9nbwor
I2VuZGlmCisjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQorICAgICAgICAsIFdlYkNvcmU6OlN5c3Rl
bUltYWdlVHlwZTo6QVJLaXRCYWRnZQogI2VuZGlmCiAgICAgPjsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXggOTM5NDU1MWYzNTllYzFhZjRlYTkyYzdi
M2IxNjg0ZWQyZWVkYTYxNi4uZmRkMTE1NzE2MjU4NDg2ODFlNWIzNDk5MWIwYWZiYjdlMmY5NjBh
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcApAQCAtMjYsNiAr
MjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkRpc3BsYXlMaXN0UmVjb3Jk
ZXIuaCIKIAorI2luY2x1ZGUgIkFSS2l0QmFkZ2VTeXN0ZW1JbWFnZS5oIgogI2luY2x1ZGUgIkRp
c3BsYXlMaXN0LmgiCiAjaW5jbHVkZSAiRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIkRpc3BsYXlMaXN0SXRlbXMuaCIKQEAgLTE4Nyw2ICsxODgsMTEgQEAgdm9pZCBSZWNv
cmRlcjo6ZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRTaXpl
JiBpbWFnZVNpemUsIGMKIAogdm9pZCBSZWNvcmRlcjo6ZHJhd1N5c3RlbUltYWdlKFN5c3RlbUlt
YWdlJiBzeXN0ZW1JbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvblJlY3QpCiB7Cisg
ICAgaWYgKGlzPEFSS2l0QmFkZ2VTeXN0ZW1JbWFnZT4oc3lzdGVtSW1hZ2UpKSB7CisgICAgICAg
IGlmIChhdXRvIGltYWdlID0gZG93bmNhc3Q8QVJLaXRCYWRnZVN5c3RlbUltYWdlPihzeXN0ZW1J
bWFnZSkuaW1hZ2UoKSkKKyAgICAgICAgICAgIHJlY29yZFJlc291cmNlVXNlKCppbWFnZS0+bmF0
aXZlSW1hZ2UoKSk7CisgICAgfQorCiAgICAgcmVjb3JkRHJhd1N5c3RlbUltYWdlKHN5c3RlbUlt
YWdlLCBkZXN0aW5hdGlvblJlY3QpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZUlPUy5oCmluZGV4IGU0NGJkNjgyMjc2MTkyMzY0Yzc2M2I4ZWQ1NmU3NGYzMGQ1NWZh
MTMuLjUyZDcwYWRjODlkYWM2NTVkYmI1MGUzNWI3MDFjMzhiOTYyNDNiMzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5oCkBAIC0zMCwxMiArMzAsNiBAQAogI2lu
Y2x1ZGUgIkNTU1ZhbHVlS2V5LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWVDb2NvYS5oIgogCi0j
aWYgVVNFKFNZU1RFTV9QUkVWSUVXKQotI2luY2x1ZGUgIklPU3VyZmFjZS5oIgotI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KLSNlbmRpZgotCi1PQkpDX0NMQVNTIENJQ29udGV4dDsKIE9CSkNf
Q0xBU1MgVUlJbWFnZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMjE3LDEyICsyMTEsNiBA
QCBwcml2YXRlOgogCiAgICAgdm9pZCBhZGp1c3RTdHlsZUZvckFsdGVybmF0ZUZvcm1Db250cm9s
RGVzaWduVHJhbnNpdGlvbihSZW5kZXJTdHlsZSYsIGNvbnN0IEVsZW1lbnQqKSBjb25zdDsKIAot
I2lmIFVTRShTWVNURU1fUFJFVklFVykKLSAgICBSZXRhaW5QdHI8Q0lDb250ZXh0PiBtX2NpQ29u
dGV4dDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBtX2xhcmdlQmFkZ2VTdXJmYWNl
OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IG1fc21hbGxCYWRnZVN1cmZhY2U7Ci0j
ZW5kaWYKLQogICAgIGJvb2wgbV9zaG91bGRNb2NrQm9sZFN5c3RlbUZvbnRGb3JBY2Nlc3NpYmls
aXR5IHsgZmFsc2UgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZUlPUy5tbQppbmRleCBhZTc4MjQyYjMyY2ZiYjVkYmQ2MjNiYjEyOTYyY2M1MGI1YmQ1YTViLi43
MzkzZDcwOGYwNDE0ZDZkNWNmNzJlMjUyZDUxYWFiNGExNTk5ODg2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogCisjaW1wb3J0ICJBUktpdEJhZGdlU3lzdGVtSW1hZ2UuaCIK
ICNpbXBvcnQgIkJpdG1hcEltYWdlLmgiCiAjaW1wb3J0ICJDU1NQcmltaXRpdmVWYWx1ZS5oIgog
I2ltcG9ydCAiQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YS5oIgpAQCAtMjAwNywxODYgKzIwMDgs
OSBAQCBTdHJpbmcgUmVuZGVyVGhlbWVJT1M6OmV4dHJhRGVmYXVsdFN0eWxlU2hlZXQoKQogI2Vu
ZGlmCiAKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCi1zdGF0aWMgTlNCdW5kbGUgKmFyS2l0QnVu
ZGxlKCkKLXsKLSAgICBzdGF0aWMgTlNCdW5kbGUgKmFyS2l0QnVuZGxlID0gW10oKSB7Ci0jaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWV9TSU1VTEFUT1IpCi0gICAgICAgIGRsb3BlbigiL1N5c3RlbS9M
aWJyYXJ5L1ByaXZhdGVGcmFtZXdvcmtzL0Fzc2V0Vmlld2VyLmZyYW1ld29yay9Bc3NldFZpZXdl
ciIsIFJUTERfTk9XKTsKLSAgICAgICAgcmV0dXJuIFtOU0J1bmRsZSBidW5kbGVGb3JDbGFzczpO
U0NsYXNzRnJvbVN0cmluZyhAIkFTVlRodW1ibmFpbFZpZXciKV07Ci0jZWxzZQotICAgICAgICBy
ZXR1cm4gW05TQnVuZGxlIGJ1bmRsZVdpdGhVUkw6W05TVVJMIGZpbGVVUkxXaXRoUGF0aDpAIi9T
eXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy9Bc3NldFZpZXdlci5mcmFtZXdvcmsiXV07
Ci0jZW5kaWYKLSAgICB9KCk7Ci0KLSAgICByZXR1cm4gYXJLaXRCdW5kbGU7Ci19Ci0KLXN0YXRp
YyBSZXRhaW5QdHI8Q0dQREZQYWdlUmVmPiBsb2FkQVJLaXRQREZQYWdlKE5TU3RyaW5nICppbWFn
ZU5hbWUpCi17Ci0gICAgTlNVUkwgKnVybCA9IFthcktpdEJ1bmRsZSgpIFVSTEZvclJlc291cmNl
OmltYWdlTmFtZSB3aXRoRXh0ZW5zaW9uOkAicGRmIl07Ci0KLSAgICBpZiAoIXVybCkKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBhdXRvIGRvY3VtZW50ID0gYWRvcHRDRihDR1BERkRv
Y3VtZW50Q3JlYXRlV2l0aFVSTCgoQ0ZVUkxSZWYpdXJsKSk7Ci0gICAgaWYgKCFkb2N1bWVudCkK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBpZiAoIUNHUERGRG9jdW1lbnRHZXROdW1i
ZXJPZlBhZ2VzKGRvY3VtZW50LmdldCgpKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAg
ICByZXR1cm4gQ0dQREZEb2N1bWVudEdldFBhZ2UoZG9jdW1lbnQuZ2V0KCksIDEpOwotfQotCi1z
dGF0aWMgQ0dQREZQYWdlUmVmIHN5c3RlbVByZXZpZXdMb2dvKCkKLXsKLSAgICBzdGF0aWMgQ0dQ
REZQYWdlUmVmIGxvZ29QYWdlID0gbG9hZEFSS2l0UERGUGFnZShAIkFSS2l0QmFkZ2UiKS5sZWFr
UmVmKCk7Ci0gICAgcmV0dXJuIGxvZ29QYWdlOwotfQotCiB2b2lkIFJlbmRlclRoZW1lSU9TOjpw
YWludFN5c3RlbVByZXZpZXdCYWRnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGludCBs
YXJnZUJhZGdlRGltZW5zaW9uID0gNzA7Ci0gICAgc3RhdGljIGNvbnN0IGludCBsYXJnZUJhZGdl
T2Zmc2V0ID0gMjA7Ci0KLSAgICBzdGF0aWMgY29uc3QgaW50IHNtYWxsQmFkZ2VEaW1lbnNpb24g
PSAzNTsKLSAgICBzdGF0aWMgY29uc3QgaW50IHNtYWxsQmFkZ2VPZmZzZXQgPSA4OwotCi0gICAg
c3RhdGljIGNvbnN0IGludCBtaW5pbXVtU2l6ZUZvckxhcmdlQmFkZ2UgPSAyNDA7Ci0KLSAgICBi
b29sIHVzZVNtYWxsQmFkZ2UgPSByZWN0LndpZHRoKCkgPCBtaW5pbXVtU2l6ZUZvckxhcmdlQmFk
Z2UgfHwgcmVjdC5oZWlnaHQoKSA8IG1pbmltdW1TaXplRm9yTGFyZ2VCYWRnZTsKLSAgICBpbnQg
YmFkZ2VPZmZzZXQgPSB1c2VTbWFsbEJhZGdlID8gc21hbGxCYWRnZU9mZnNldCA6IGxhcmdlQmFk
Z2VPZmZzZXQ7Ci0gICAgaW50IGJhZGdlRGltZW5zaW9uID0gdXNlU21hbGxCYWRnZSA/IHNtYWxs
QmFkZ2VEaW1lbnNpb24gOiBsYXJnZUJhZGdlRGltZW5zaW9uOwotCi0gICAgaW50IG1pbmltdW1E
aW1lbnNpb24gPSBiYWRnZURpbWVuc2lvbiArIDIgKiBiYWRnZU9mZnNldDsKLSAgICBpZiAocmVj
dC53aWR0aCgpIDwgbWluaW11bURpbWVuc2lvbiB8fCByZWN0LmhlaWdodCgpIDwgbWluaW11bURp
bWVuc2lvbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQ0dSZWN0IGFic29sdXRlQmFkZ2VSZWN0
ID0gQ0dSZWN0TWFrZShyZWN0LngoKSArIHJlY3Qud2lkdGgoKSAtIGJhZGdlRGltZW5zaW9uIC0g
YmFkZ2VPZmZzZXQsIHJlY3QueSgpICsgYmFkZ2VPZmZzZXQsIGJhZGdlRGltZW5zaW9uLCBiYWRn
ZURpbWVuc2lvbik7Ci0gICAgQ0dSZWN0IGluc2V0QmFkZ2VSZWN0ID0gQ0dSZWN0TWFrZShyZWN0
LndpZHRoKCkgLSBiYWRnZURpbWVuc2lvbiAtIGJhZGdlT2Zmc2V0LCBiYWRnZU9mZnNldCwgYmFk
Z2VEaW1lbnNpb24sIGJhZGdlRGltZW5zaW9uKTsKLSAgICBDR1JlY3QgYmFkZ2VSZWN0ID0gQ0dS
ZWN0TWFrZSgwLCAwLCBiYWRnZURpbWVuc2lvbiwgYmFkZ2VEaW1lbnNpb24pOwotCi0gICAgQ0lJ
bWFnZSAqaW5wdXRJbWFnZSA9IFtDSUltYWdlIGltYWdlV2l0aENHSW1hZ2U6aW1hZ2UubmF0aXZl
SW1hZ2UoKS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpXTsKLQotICAgIC8vIENyZWF0ZSBhIGNpcmNs
ZSB0byBiZSB1c2VkIGZvciB0aGUgY2xpcHBpbmcgcGF0aCBpbiB0aGUgYmFkZ2UsIGFzIHdlbGwg
YXMgdGhlIGRyb3Agc2hhZG93LgotICAgIFJldGFpblB0cjxDR1BhdGhSZWY+IGNpcmNsZSA9IGFk
b3B0Q0YoQ0dQYXRoQ3JlYXRlV2l0aFJvdW5kZWRSZWN0KGFic29sdXRlQmFkZ2VSZWN0LCBiYWRn
ZURpbWVuc2lvbiAvIDIsIGJhZGdlRGltZW5zaW9uIC8gMiwgbnVsbHB0cikpOwotCi0gICAgYXV0
byYgZ3JhcGhpY3NDb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKTsKLSAgICBpZiAoZ3JhcGhp
Y3NDb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGdyYXBoaWNzQ29udGV4dCk7Ci0KLSAg
ICBDR0NvbnRleHRSZWYgY3R4ID0gZ3JhcGhpY3NDb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpOwot
ICAgIGlmICghY3R4KQotICAgICAgICByZXR1cm47Ci0KLSAgICBDR0NvbnRleHRTYXZlR1N0YXRl
KGN0eCk7Ci0KLSAgICAvLyBEcmF3IGEgZHJvcCBzaGFkb3cgYXJvdW5kIHRoZSBjaXJjbGUuCi0g
ICAgLy8gVXNlIHRoZSBHcmFwaGljc0NvbnRleHQgZnVuY3Rpb24sIGJlY2F1c2UgaXQgY2FsY3Vs
YXRlcyB0aGUgYmx1ciByYWRpdXMgaW4gY29udGV4dCBzcGFjZSwKLSAgICAvLyByYXRoZXIgdGhh
biBzY3JlZW4gc3BhY2UuCi0gICAgY29uc3RleHByIGF1dG8gc2hhZG93Q29sb3IgPSBDb2xvcjo6
YmxhY2suY29sb3JXaXRoQWxwaGFCeXRlKDI2KTsKLSAgICBncmFwaGljc0NvbnRleHQuc2V0U2hh
ZG93KEZsb2F0U2l6ZSB7IH0sIDE2LCBzaGFkb3dDb2xvcik7Ci0KLSAgICAvLyBUaGUgY2lyY2xl
IG11c3QgaGF2ZSBhbiBhbHBoYSBjaGFubmVsIHZhbHVlIG9mIDEgZm9yIHRoZSBzaGFkb3cgY29s
b3IgdG8gYXBwZWFyLgotICAgIENHRmxvYXQgY2lyY2xlQ29sb3JDb21wb25lbnRzWzRdID0geyAw
LCAwLCAwLCAxIH07Ci0gICAgUmV0YWluUHRyPENHQ29sb3JSZWY+IGNpcmNsZUNvbG9yID0gYWRv
cHRDRihDR0NvbG9yQ3JlYXRlKHNSR0JDb2xvclNwYWNlUmVmKCksIGNpcmNsZUNvbG9yQ29tcG9u
ZW50cykpOwotICAgIENHQ29udGV4dFNldEZpbGxDb2xvcldpdGhDb2xvcihjdHgsIGNpcmNsZUNv
bG9yLmdldCgpKTsKLQotICAgIC8vIENsaXAgb3V0IHRoZSBjaXJjbGUgdG8gb25seSBzaG93IHRo
ZSBzaGFkb3cuCi0gICAgQ0dDb250ZXh0QmVnaW5QYXRoKGN0eCk7Ci0gICAgQ0dDb250ZXh0QWRk
UmVjdChjdHgsIHJlY3QpOwotICAgIENHQ29udGV4dEFkZFBhdGgoY3R4LCBjaXJjbGUuZ2V0KCkp
OwotICAgIENHQ29udGV4dENsb3NlUGF0aChjdHgpOwotICAgIENHQ29udGV4dEVPQ2xpcChjdHgp
OwotCi0gICAgLy8gRHJhdyBhIHNsaWdodGx5IHNtYWxsZXIgY2lyY2xlIHdpdGggYSBzaGFkb3cs
IG90aGVyd2lzZSB3ZSdsbCBzZWUgYSBmcmluZ2Ugb2YgdGhlIHNvbGlkCi0gICAgLy8gYmxhY2sg
Y2lyY2xlIGFyb3VuZCB0aGUgZWRnZXMgb2YgdGhlIGNsaXBwZWQgcGF0aCBiZWxvdy4KLSAgICBD
R0NvbnRleHRCZWdpblBhdGgoY3R4KTsKLSAgICBDR1JlY3Qgc2xpZ2h0bHlTbWFsbGVyQWJzb2x1
dGVCYWRnZVJlY3QgPSBDR1JlY3RNYWtlKGFic29sdXRlQmFkZ2VSZWN0Lm9yaWdpbi54ICsgMC41
LCBhYnNvbHV0ZUJhZGdlUmVjdC5vcmlnaW4ueSArIDAuNSwgYmFkZ2VEaW1lbnNpb24gLSAxLCBi
YWRnZURpbWVuc2lvbiAtIDEpOwotICAgIFJldGFpblB0cjxDR1BhdGhSZWY+IHNsaWdodGx5U21h
bGxlckNpcmNsZSA9IGFkb3B0Q0YoQ0dQYXRoQ3JlYXRlV2l0aFJvdW5kZWRSZWN0KHNsaWdodGx5
U21hbGxlckFic29sdXRlQmFkZ2VSZWN0LCBzbGlnaHRseVNtYWxsZXJBYnNvbHV0ZUJhZGdlUmVj
dC5zaXplLndpZHRoIC8gMiwgc2xpZ2h0bHlTbWFsbGVyQWJzb2x1dGVCYWRnZVJlY3Quc2l6ZS5o
ZWlnaHQgLyAyLCBudWxscHRyKSk7Ci0gICAgQ0dDb250ZXh0QWRkUGF0aChjdHgsIHNsaWdodGx5
U21hbGxlckNpcmNsZS5nZXQoKSk7Ci0gICAgQ0dDb250ZXh0Q2xvc2VQYXRoKGN0eCk7Ci0gICAg
Q0dDb250ZXh0RmlsbFBhdGgoY3R4KTsKLQotICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUoY3R4
KTsKLQotICAgIC8vIERyYXcgdGhlIGJsdXJyZWQgYmFja2Ryb3AuIFNjYWxlIGZyb20gaW50cmlu
c2ljIHNpemUgdG8gcmVuZGVyIHNpemUuCi0gICAgQ0dBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3Jt
ID0gQ0dBZmZpbmVUcmFuc2Zvcm1JZGVudGl0eTsKLSAgICB0cmFuc2Zvcm0gPSBDR0FmZmluZVRy
YW5zZm9ybVNjYWxlKHRyYW5zZm9ybSwgcmVjdC53aWR0aCgpIC8gaW1hZ2Uud2lkdGgoKSwgcmVj
dC5oZWlnaHQoKSAvIGltYWdlLmhlaWdodCgpKTsKLSAgICBDSUltYWdlICpzY2FsZWRJbWFnZSA9
IFtpbnB1dEltYWdlIGltYWdlQnlBcHBseWluZ1RyYW5zZm9ybTp0cmFuc2Zvcm1dOwotCi0gICAg
Ly8gQ29yZUltYWdlIGNvb3JkaW5hdGVzIGFyZSB5LXVwLCBzbyB3ZSBuZWVkIHRvIGZsaXAgdGhl
IGJhZGdlIHJlY3RhbmdsZSB3aXRoaW4gdGhlIGltYWdlIGZyYW1lLgotICAgIENHUmVjdCBmbGlw
cGVkSW5zZXRCYWRnZVJlY3QgPSBDR1JlY3RNYWtlKGluc2V0QmFkZ2VSZWN0Lm9yaWdpbi54LCBy
ZWN0LmhlaWdodCgpIC0gaW5zZXRCYWRnZVJlY3Qub3JpZ2luLnkgLSBpbnNldEJhZGdlUmVjdC5z
aXplLmhlaWdodCwgYmFkZ2VEaW1lbnNpb24sIGJhZGdlRGltZW5zaW9uKTsKLQotICAgIC8vIENy
ZWF0ZSBhIGNyb3BwZWQgcmVnaW9uIHdpdGggcGl4ZWwgdmFsdWVzIGV4dGVuZGluZyBvdXR3YXJk
cy4KLSAgICBDSUltYWdlICpjbGFtcGVkSW1hZ2UgPSBbc2NhbGVkSW1hZ2UgaW1hZ2VCeUNsYW1w
aW5nVG9SZWN0OmZsaXBwZWRJbnNldEJhZGdlUmVjdF07Ci0KLSAgICAvLyBCbHVyLgotICAgIENJ
SW1hZ2UgKmJsdXJyZWRJbWFnZSA9IFtjbGFtcGVkSW1hZ2UgaW1hZ2VCeUFwcGx5aW5nR2F1c3Np
YW5CbHVyV2l0aFNpZ21hOjEwXTsKLQotICAgIC8vIFNhdHVyYXRlLgotICAgIENJRmlsdGVyICpz
YXR1cmF0aW9uRmlsdGVyID0gW0NJRmlsdGVyIGZpbHRlcldpdGhOYW1lOkAiQ0lDb2xvckNvbnRy
b2xzIl07Ci0gICAgW3NhdHVyYXRpb25GaWx0ZXIgc2V0VmFsdWU6Ymx1cnJlZEltYWdlIGZvcktl
eTprQ0lJbnB1dEltYWdlS2V5XTsKLSAgICBbc2F0dXJhdGlvbkZpbHRlciBzZXRWYWx1ZTpAMS44
IGZvcktleTprQ0lJbnB1dFNhdHVyYXRpb25LZXldOwotCi0gICAgLy8gVGludC4KLSAgICBDSUZp
bHRlciAqdGludEZpbHRlcjEgPSBbQ0lGaWx0ZXIgZmlsdGVyV2l0aE5hbWU6QCJDSUNvbnN0YW50
Q29sb3JHZW5lcmF0b3IiXTsKLSAgICBDSUNvbG9yICp0aW50Q29sb3IxID0gW0NJQ29sb3IgY29s
b3JXaXRoUmVkOjEgZ3JlZW46MSBibHVlOjEgYWxwaGE6MC4xOF07Ci0gICAgW3RpbnRGaWx0ZXIx
IHNldFZhbHVlOnRpbnRDb2xvcjEgZm9yS2V5OmtDSUlucHV0Q29sb3JLZXldOwotCi0gICAgLy8g
QmxlbmQgdGhlIHRpbnQgd2l0aCB0aGUgc2F0dXJhdGVkIG91dHB1dC4KLSAgICBDSUZpbHRlciAq
c291cmNlT3ZlckZpbHRlciA9IFtDSUZpbHRlciBmaWx0ZXJXaXRoTmFtZTpAIkNJU291cmNlT3Zl
ckNvbXBvc2l0aW5nIl07Ci0gICAgW3NvdXJjZU92ZXJGaWx0ZXIgc2V0VmFsdWU6dGludEZpbHRl
cjEub3V0cHV0SW1hZ2UgZm9yS2V5OmtDSUlucHV0SW1hZ2VLZXldOwotICAgIFtzb3VyY2VPdmVy
RmlsdGVyIHNldFZhbHVlOnNhdHVyYXRpb25GaWx0ZXIub3V0cHV0SW1hZ2UgZm9yS2V5OmtDSUlu
cHV0QmFja2dyb3VuZEltYWdlS2V5XTsKLQotICAgIGlmICghbV9jaUNvbnRleHQpCi0gICAgICAg
IG1fY2lDb250ZXh0ID0gW0NJQ29udGV4dCBjb250ZXh0XTsKLQotICAgIFJldGFpblB0cjxDR0lt
YWdlUmVmPiBjZ0ltYWdlOwotI2lmIEhBVkUoSU9TVVJGQUNFX0NPUkVJTUFHRV9TVVBQT1JUKQot
ICAgIC8vIENyb3AgdGhlIHJlc3VsdCB0byB0aGUgYmFkZ2UgbG9jYXRpb24uCi0gICAgQ0lJbWFn
ZSAqY3JvcHBlZEltYWdlID0gW3NvdXJjZU92ZXJGaWx0ZXIub3V0cHV0SW1hZ2UgaW1hZ2VCeUNy
b3BwaW5nVG9SZWN0OmZsaXBwZWRJbnNldEJhZGdlUmVjdF07Ci0gICAgQ0lJbWFnZSAqdHJhbnNs
YXRlZEltYWdlID0gW2Nyb3BwZWRJbWFnZSBpbWFnZUJ5QXBwbHlpbmdUcmFuc2Zvcm06Q0dBZmZp
bmVUcmFuc2Zvcm1NYWtlVHJhbnNsYXRpb24oLWZsaXBwZWRJbnNldEJhZGdlUmVjdC5vcmlnaW4u
eCwgLWZsaXBwZWRJbnNldEJhZGdlUmVjdC5vcmlnaW4ueSldOwotICAgIElPU3VyZmFjZVJlZiBz
dXJmYWNlOwotICAgIGlmICh1c2VTbWFsbEJhZGdlKSB7Ci0gICAgICAgIGlmICghbV9zbWFsbEJh
ZGdlU3VyZmFjZSkKLSAgICAgICAgICAgIG1fc21hbGxCYWRnZVN1cmZhY2UgPSBJT1N1cmZhY2U6
OmNyZWF0ZSh7IHNtYWxsQmFkZ2VEaW1lbnNpb24sIHNtYWxsQmFkZ2VEaW1lbnNpb24gfSwgRGVz
dGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwotICAgICAgICBzdXJmYWNlID0gbV9zbWFsbEJh
ZGdlU3VyZmFjZS0+c3VyZmFjZSgpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmICghbV9sYXJn
ZUJhZGdlU3VyZmFjZSkKLSAgICAgICAgICAgIG1fbGFyZ2VCYWRnZVN1cmZhY2UgPSBJT1N1cmZh
Y2U6OmNyZWF0ZSh7IGxhcmdlQmFkZ2VEaW1lbnNpb24sIGxhcmdlQmFkZ2VEaW1lbnNpb24gfSwg
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwotICAgICAgICBzdXJmYWNlID0gbV9sYXJn
ZUJhZGdlU3VyZmFjZS0+c3VyZmFjZSgpOwotICAgIH0KLSAgICBbbV9jaUNvbnRleHQgcmVuZGVy
OnRyYW5zbGF0ZWRJbWFnZSB0b0lPU3VyZmFjZTpzdXJmYWNlIGJvdW5kczpiYWRnZVJlY3QgY29s
b3JTcGFjZTpzUkdCQ29sb3JTcGFjZVJlZigpXTsKLSAgICBjZ0ltYWdlID0gdXNlU21hbGxCYWRn
ZSA/IG1fc21hbGxCYWRnZVN1cmZhY2UtPmNyZWF0ZUltYWdlKCkgOiBtX2xhcmdlQmFkZ2VTdXJm
YWNlLT5jcmVhdGVJbWFnZSgpOwotI2Vsc2UKLSAgICBjZ0ltYWdlID0gYWRvcHRDRihbbV9jaUNv
bnRleHQgY3JlYXRlQ0dJbWFnZTpzb3VyY2VPdmVyRmlsdGVyLm91dHB1dEltYWdlIGZyb21SZWN0
OmZsaXBwZWRJbnNldEJhZGdlUmVjdF0pOwotI2VuZGlmCi0KLSAgICAvLyBCZWZvcmUgd2UgcmVu
ZGVyIHRoZSByZXN1bHQsIHdlIHNob3VsZCBjbGlwIHRvIGEgY2lyY2xlIGFyb3VuZCB0aGUgYmFk
Z2UgcmVjdGFuZ2xlLgotICAgIENHQ29udGV4dFNhdmVHU3RhdGUoY3R4KTsKLSAgICBDR0NvbnRl
eHRCZWdpblBhdGgoY3R4KTsKLSAgICBDR0NvbnRleHRBZGRQYXRoKGN0eCwgY2lyY2xlLmdldCgp
KTsKLSAgICBDR0NvbnRleHRDbG9zZVBhdGgoY3R4KTsKLSAgICBDR0NvbnRleHRDbGlwKGN0eCk7
Ci0KLSAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY3R4LCBhYnNvbHV0ZUJhZGdlUmVjdC5vcmln
aW4ueCwgYWJzb2x1dGVCYWRnZVJlY3Qub3JpZ2luLnkpOwotICAgIENHQ29udGV4dFRyYW5zbGF0
ZUNUTShjdHgsIDAsIGJhZGdlRGltZW5zaW9uKTsKLSAgICBDR0NvbnRleHRTY2FsZUNUTShjdHgs
IDEsIC0xKTsKLSAgICBDR0NvbnRleHREcmF3SW1hZ2UoY3R4LCBiYWRnZVJlY3QsIGNnSW1hZ2Uu
Z2V0KCkpOwotCi0gICAgaWYgKGF1dG8gbG9nbyA9IHN5c3RlbVByZXZpZXdMb2dvKCkpIHsKLSAg
ICAgICAgQ0dTaXplIHBkZlNpemUgPSBDR1BERlBhZ2VHZXRCb3hSZWN0KGxvZ28sIGtDR1BERk1l
ZGlhQm94KS5zaXplOwotICAgICAgICBDR0Zsb2F0IHNjYWxlWCA9IGJhZGdlRGltZW5zaW9uIC8g
cGRmU2l6ZS53aWR0aDsKLSAgICAgICAgQ0dGbG9hdCBzY2FsZVkgPSBiYWRnZURpbWVuc2lvbiAv
IHBkZlNpemUuaGVpZ2h0OwotICAgICAgICBDR0NvbnRleHRTY2FsZUNUTShjdHgsIHNjYWxlWCwg
c2NhbGVZKTsKLSAgICAgICAgQ0dDb250ZXh0RHJhd1BERlBhZ2UoY3R4LCBsb2dvKTsKLSAgICB9
Ci0KLSAgICBDR0NvbnRleHRGbHVzaChjdHgpOwotICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUo
Y3R4KTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdTeXN0ZW1JbWFnZShBUktpdEJhZGdl
U3lzdGVtSW1hZ2U6OmNyZWF0ZShpbWFnZSksIHJlY3QpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJl
Y29yZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNw
bGF5TGlzdFJlY29yZGVyLmNwcAppbmRleCA5ZTM3ODZlMGZkY2RiODlmYjA2NjI4YzhmY2M2ZGM4
N2I3N2MzZTllLi4yMTJkYzFjZWFmNDYzNzQ0OWUyMjA1YWJmZTI1ODJiYTQ2YmE4MjU4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxp
c3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlck1lc3Nh
Z2VzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9BUktpdEJhZGdlU3lzdGVtSW1hZ2UuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0JpdG1hcEltYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GaWx0ZXJSZXN1
bHRzLmg+CiAKQEAgLTI4NSw2ICsyODYsMTYgQEAgdm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29y
ZGVyOjpkcmF3TmF0aXZlSW1hZ2VXaXRoUXVhbGlmaWVkSWRlbnRpZmllcihRdWFsaWZpZWQKIAog
dm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjpkcmF3U3lzdGVtSW1hZ2UoU3lzdGVtSW1h
Z2UmIHN5c3RlbUltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uUmVjdCkKIHsKKyAg
ICBpZiAoaXM8QVJLaXRCYWRnZVN5c3RlbUltYWdlPihzeXN0ZW1JbWFnZSkpIHsKKyAgICAgICAg
QVJLaXRCYWRnZVN5c3RlbUltYWdlJiBiYWRnZSA9IGRvd25jYXN0PEFSS2l0QmFkZ2VTeXN0ZW1J
bWFnZT4oc3lzdGVtSW1hZ2UpOworICAgICAgICBSZWZQdHIgbmF0aXZlSW1hZ2UgPSByZXNvdXJj
ZUNhY2hlKCkuY2FjaGVkTmF0aXZlSW1hZ2UoeyBiYWRnZS5pbWFnZUlkZW50aWZpZXIoKSwgbV93
ZWJQcm9jZXNzSWRlbnRpZmllciB9KTsKKyAgICAgICAgaWYgKCFuYXRpdmVJbWFnZSkgeworICAg
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyAgICAgICAgYmFkZ2Uuc2V0SW1hZ2UoQml0bWFwSW1hZ2U6OmNyZWF0ZShXVEZNb3Zl
KG5hdGl2ZUltYWdlKSkpOworICAgIH0KKwogICAgIGhhbmRsZUl0ZW0oRGlzcGxheUxpc3Q6OkRy
YXdTeXN0ZW1JbWFnZShzeXN0ZW1JbWFnZSwgZGVzdGluYXRpb25SZWN0KSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IGRlYjA4
ZTQzMTIyY2M2Zjc2ZGFjMGY0NDFlNTY4YzQ2NjU1ZDJkNDEuLjUxNmJkYjQ1N2UzYzQ1NjMzZDYz
ZTFmN2FhOGMyM2ZkNjY0MmJlNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIlN0cmVhbUNv
bm5lY3Rpb25FbmNvZGVyLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvR2VuZXJpY1R5cGVk
QXJyYXlWaWV3SW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3SW5saW5lcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQVJLaXRCYWRnZVN5c3Rl
bUltYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9BcHBsZVBheUJ1dHRvblN5c3RlbUltYWdlLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9BcHBsZVBheUxvZ29TeXN0ZW1JbWFnZS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaD4KQEAgLTMxNzIsNiArMzE3MywxMSBA
QCB2b2lkIEFyZ3VtZW50Q29kZXI8UmVmPFN5c3RlbUltYWdlPj46OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyLCBjb25zdCBSZWY8U3lzdGVtSQogICAgIGNhc2UgU3lzdGVtSW1hZ2VUeXBlOjpBcHBs
ZVBheUxvZ286CiAgICAgICAgIGRvd25jYXN0PEFwcGxlUGF5TG9nb1N5c3RlbUltYWdlPihzeXN0
ZW1JbWFnZS5nZXQoKSkuZW5jb2RlKGVuY29kZXIpOwogICAgICAgICByZXR1cm47CisjZW5kaWYK
KyNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCisgICAgY2FzZSBTeXN0ZW1JbWFnZVR5cGU6OkFSS2l0
QmFkZ2U6CisgICAgICAgIGRvd25jYXN0PEFSS2l0QmFkZ2VTeXN0ZW1JbWFnZT4oc3lzdGVtSW1h
Z2UuZ2V0KCkpLmVuY29kZShlbmNvZGVyKTsKKyAgICAgICAgcmV0dXJuOwogI2VuZGlmCiAgICAg
fQogCkBAIC0zMTk3LDYgKzMyMDMsMTAgQEAgc3RkOjpvcHRpb25hbDxSZWY8U3lzdGVtSW1hZ2U+
PiBBcmd1bWVudENvZGVyPFJlZjxTeXN0ZW1JbWFnZT4+OjpkZWNvZGUoRGVjb2RlciYKIAogICAg
IGNhc2UgU3lzdGVtSW1hZ2VUeXBlOjpBcHBsZVBheUxvZ286CiAgICAgICAgIHJldHVybiBBcHBs
ZVBheUxvZ29TeXN0ZW1JbWFnZTo6ZGVjb2RlKGRlY29kZXIpOworI2VuZGlmCisjaWYgVVNFKFNZ
U1RFTV9QUkVWSUVXKQorICAgIGNhc2UgU3lzdGVtSW1hZ2VUeXBlOjpBUktpdEJhZGdlOgorICAg
ICAgICByZXR1cm4gQVJLaXRCYWRnZVN5c3RlbUltYWdlOjpkZWNvZGUoZGVjb2Rlcik7CiAjZW5k
aWYKICAgICB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCA3NzNjMGQyNTVhN2ZhZjA2ZDAyNWU2OTdmOTNmOWVjYTM0MGFj
Mzg1Li4yMGMyZWIyNThlNjA0OWZiYTkxOGI5ODlkNmVhNzc0YjJiZTk1Njc3IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTYgQEAKKzIwMjItMDMtMjMgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgRE9NIEdQVVA6IHBhaW50U3lzdGVtUHJldmlld0JhZGdlIChBUiBRdWlj
a0xvb2sgZWxlbWVudCBiYWRnZSkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzODI5NQorICAgICAgICByZGFyOi8vODM1ODA2MDgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgc3lzdGVtLXByZXZpZXcv
YmFkZ2UuaHRtbCB0ZXN0IG5vdyBwYXNzZXMgcmVsaWFibHkgd2l0aCBET00gR1BVUCBlbmFibGVk
LAorICAgICAgICB3aGljaCBpbmNpZGVudGFsbHkgZml4ZXMgYnVnIDIzNjkyMi4KKworICAgICAg
ICAqIGdwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMjItMDMtMjEgIFNhaWQgQWJv
dS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0dQVSBQcm9jZXNzXSBNYWtl
IEdyYXBoaWNzQ29udGV4dFN0YXRlIGtlZXAgdHJhY2sgb2YgY2hhbmdlcyB0aWxsIHRoZXkgYXJl
IGFwcGxpZWQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3Rh
dGlvbnMgYi9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGI3
YmYxZWRlZDkzYWYyMWQxZmQ0ZGVjNDhjN2YxNTZkOWM4ZGFmYTguLmU1MTIwYzkxMDkyNTEwNGJh
OWJkM2E3YTlmYTI5NzNiZDhiZDQyMDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2dwdS1wcm9j
ZXNzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4
cGVjdGF0aW9ucwpAQCAtNjcsOSArNjcsNiBAQCB3ZWJraXQub3JnL2IvMjM2OTIxIGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy13cml0aW5nLW1vZGVzL3RleHQtcwogd2Vi
a2l0Lm9yZy9iLzIzNjkyMSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
d3JpdGluZy1tb2Rlcy92ZXJ0aWNhbC1hbGlnbm1lbnQtdmxyLTAyMy54aHQgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMzY5MjEgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9jc3MvY3NzLXdyaXRpbmctbW9kZXMvdmVydGljYWwtYWxpZ25tZW50LXZybC0wMjIueGh0
IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKLSMgQ29sb3JzIGFyZSBzaWduaWZpY2FudGx5IGRpZmZl
cmVudCBlbm91Z2gKLXdlYmtpdC5vcmcvYi8yMzY5MjIgc3lzdGVtLXByZXZpZXcvYmFkZ2UuaHRt
bCBbIEltYWdlT25seUZhaWx1cmUgXQotCiAjIE5vL2JhZCBjb2xvcmVkIGJveGVzCiB3ZWJraXQu
b3JnL2IvMjM2OTIzIGZhc3QvY3NzL3BhaW50LW9yZGVyLXNoYWRvdy5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjM2OTIzIGltcG9ydGVkL2JsaW5rL3N2Zy90ZXh0L29i
Yi1wYWludHNlcnZlci5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455572</attachid>
            <date>2022-03-23 15:55:07 -0700</date>
            <delta_ts>2022-03-23 16:32:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238295-20220323235506.patch</filename>
            <type>text/plain</type>
            <size>51901</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNzcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWJjNDAxNTAzMWMyMTcx
MDk2ZTZjNGM5ODQzNTZhYjA1NjczYWE2ZC4uNTY1MTNjODJkYzZkZGI5NDQ5NzNjZGMzYWI1ZjJm
ZTI0ZmI5ZDBhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDIyLTAzLTIzICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgorCisgICAgICAgIERPTSBHUFVQOiBwYWlu
dFN5c3RlbVByZXZpZXdCYWRnZSAoQVIgUXVpY2tMb29rIGVsZW1lbnQgYmFkZ2UpCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgyOTUKKyAgICAgICAg
cmRhcjovLzgzNTgwNjA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIGEgbmV3IFN5c3RlbUltYWdlIHN1YmNsYXNzIHRvIGRlYWwgd2l0aCB0aGUg
QVJLaXQgYmFkZ2UsIG1vdmluZyB0aGUgY3VzdG9tIGRyYXdpbmcgY29kZSB1bmRlcgorICAgICAg
ICBSZW5kZXJUaGVtZUlPUzo6cGFpbnRTeXN0ZW1QcmV2aWV3QmFkZ2UoKSB0byBBUktpdEJhZGdl
U3lzdGVtSW1hZ2U6OmRyYXcoKS4KKworICAgICAgICBUbyBmYWNpbGl0YXRlIHRoaXMsIHdlIG11
c3QgYWxzbyBoYXZlIEFSS2l0QmFkZ2VTeXN0ZW1JbWFnZSB3cmFwIHRoZSBpbnB1dCBJbWFnZSBw
cm92aWRlZCB0bworICAgICAgICBSZW5kZXJUaGVtZUlPUzo6cGFpbnRTeXN0ZW1QcmV2aWV3QmFk
Z2UoKSBzbyB0aGF0IHRoZSBDb3JlSW1hZ2UgZmlsdGVycyBhcmUgYXBwbGllZCBjb3JyZWN0bHku
CisKKyAgICAgICAgRmluYWxseSwgd2UgcmVtb3ZlIHNvbWUgdXNlIG9mIGB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZWAgaW4gV2ViU3BlZWNoUmVjb2duaXplclRhc2sgYW5kCisgICAgICAgIFdlYlNw
ZWVjaFJlY29nbml6ZXJUYXNrTW9jayBzaW5jZSBpdCBjYXVzZWQgc29tZSB1bmlmaWVkIGJ1aWxk
IGZhaWx1cmVzLgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBNb2R1bGVz
L3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25pemVyVGFzay5tbToKKyAgICAgICAgKC1bV2Vi
U3BlZWNoUmVjb2duaXplclRhc2tJbXBsIGluaXRXaXRoSWRlbnRpZmllcjpsb2NhbGU6ZG9NdWx0
aXBsZVJlY29nbml0aW9uczpyZXBvcnRJbnRlcmltUmVzdWx0czptYXhBbHRlcm5hdGl2ZXM6ZGVs
ZWdhdGVDYWxsYmFjazpdKToKKyAgICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2tJbXBs
IGNhbGxiYWNrV2l0aFRyYW5zY3JpcHRpb25zOmlzRmluYWw6XSk6CisgICAgICAgICgtW1dlYlNw
ZWVjaFJlY29nbml6ZXJUYXNrSW1wbCBzZW5kU3BlZWNoU3RhcnRJZk5lZWRlZF0pOgorICAgICAg
ICAoLVtXZWJTcGVlY2hSZWNvZ25pemVyVGFza0ltcGwgc2VuZFNwZWVjaEVuZElmTmVlZGVkXSk6
CisgICAgICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrSW1wbCBzZW5kRW5kSWZOZWVkZWRd
KToKKyAgICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2tJbXBsIHNwZWVjaFJlY29nbml6
ZXI6YXZhaWxhYmlsaXR5RGlkQ2hhbmdlOl0pOgorICAgICAgICAoLVtXZWJTcGVlY2hSZWNvZ25p
emVyVGFza0ltcGwgc3BlZWNoUmVjb2duaXRpb25UYXNrOmRpZEZpbmlzaFN1Y2Nlc3NmdWxseTpd
KToKKyAgICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2sgaW5pdFdpdGhJZGVudGlmaWVy
OmxvY2FsZTpkb011bHRpcGxlUmVjb2duaXRpb25zOnJlcG9ydEludGVyaW1SZXN1bHRzOm1heEFs
dGVybmF0aXZlczpkZWxlZ2F0ZUNhbGxiYWNrOl0pOgorICAgICAgICAqIE1vZHVsZXMvc3BlZWNo
L2NvY29hL1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jay5tbToKKyAgICAgICAgKC1bV2ViU3Bl
ZWNoUmVjb2duaXplclRhc2tNb2NrIGluaXRXaXRoSWRlbnRpZmllcjpsb2NhbGU6ZG9NdWx0aXBs
ZVJlY29nbml0aW9uczpyZXBvcnRJbnRlcmltUmVzdWx0czptYXhBbHRlcm5hdGl2ZXM6ZGVsZWdh
dGVDYWxsYmFjazpdKToKKyAgICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2NrIGF1
ZGlvU2FtcGxlc0F2YWlsYWJsZTpdKToKKyAgICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXplclRh
c2tNb2NrIGFib3J0XSk6CisgICAgICAgICogTW9kdWxlcy9zeXN0ZW0tcHJldmlldy9BUktpdEJh
ZGdlU3lzdGVtSW1hZ2UuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBUktpdEJhZGdlU3lz
dGVtSW1hZ2U6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBUktpdEJhZGdlU3lz
dGVtSW1hZ2U6OmRlY29kZSk6CisgICAgICAgIChpc1R5cGUpOgorICAgICAgICAqIE1vZHVsZXMv
c3lzdGVtLXByZXZpZXcvQVJLaXRCYWRnZVN5c3RlbUltYWdlLm1tOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OmFyS2l0QnVuZGxlKToKKyAgICAgICAgKFdlYkNvcmU6OmxvYWRBUktpdFBERlBh
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6c3lzdGVtUHJldmlld0xvZ28pOgorICAgICAgICAoV2Vi
Q29yZTo6QVJLaXRCYWRnZVN5c3RlbUltYWdlOjpkcmF3IGNvbnN0KToKKyAgICAgICAgKiBTb3Vy
Y2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9TeXN0ZW1JbWFnZS5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd1N5c3RlbUltYWdl
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyVGhlbWVJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUlP
Uzo6cGFpbnRTeXN0ZW1QcmV2aWV3QmFkZ2UpOgorICAgICAgICAoV2ViQ29yZTo6YXJLaXRCdW5k
bGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6bG9hZEFSS2l0UERGUGFnZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpzeXN0ZW1QcmV2aWV3TG9nbyk6IERlbGV0ZWQuCisKIDIw
MjItMDMtMjMgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CiAKICAgICAgICAg
W0dQVSBQcm9jZXNzXSBFbnN1cmUgRGlzcGxheUxpc3Q6OlJlY29yZGVyIGFuZCBpdHMgYmFzZSBj
bGFzcyBhcmUgaW5pdGlhbGl6ZWQgd2l0aCB0aGUgc2FtZSBHcmFwaGljc0NvbnRleHRTdGF0ZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCBjNWVjYjY1ODIwZGE5ODVhYTQyODhhZTU4NjU4NmNmYzIyYzYzNGQ3Li43M2Y4
M2E4YTcwOGEwNmZlOWNmYjAwNTZmMmJiZjIwMzIzMGI1OTZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE5IEBACisyMDIyLTAzLTIzICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgor
CisgICAgICAgIERPTSBHUFVQOiBwYWludFN5c3RlbVByZXZpZXdCYWRnZSAoQVIgUXVpY2tMb29r
IGVsZW1lbnQgYmFkZ2UpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzgyOTUKKyAgICAgICAgcmRhcjovLzgzNTgwNjA4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBzdXJlIHdlIHJlc3RvcmUgdGhl
IEltYWdlIG9uIHRoZSBBUktpdEJhZGdlU3lzdGVtSW1hZ2UgYmVmb3JlIHdlIGF0dGVtcHQgdG8g
ZHJhdyBpdC4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxp
c3RSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZURpc3BsYXlMaXN0UmVjb3Jk
ZXI6OmRyYXdTeXN0ZW1JbWFnZSk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFN5c3RlbUltYWdlPj46
OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVmPFN5c3RlbUltYWdlPj46
OmRlY29kZSk6CisKIDIwMjItMDMtMjMgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBs
ZS5jb20+CiAKICAgICAgICAgW2lPU10gTWFpbCBjb21wb3NlIHdlYiB2aWV3IG5vIGxvbmdlciBz
Y3JvbGxzIHRvIHJldmVhbCBzZWxlY3Rpb24gdXBvbiBzaG93aW5nIHRoZSBrZXlib2FyZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hl
YWRlcnMuY21ha2UKaW5kZXggNDBlMTVlYjFkN2M2MzZhNmFmOGVmZmJmYTBhYzQ0OGM3OTVmZWE2
Ny4uM2UwNzUyZDMzZDU5MWRlMGFmOTBhNDY0ODczM2VmMmRlZDVlYjViOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJz
LmNtYWtlCkBAIC0zMzEsNiArMzMxLDggQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktf
SEVBREVSUwogICAgIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNpbmsuaAogICAgIE1v
ZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNvdXJjZS5oCiAKKyAgICBNb2R1bGVzL3N5c3Rl
bS1wcmV2aWV3L0FSS2l0QmFkZ2VTeXN0ZW1JbWFnZS5oCisKICAgICBNb2R1bGVzL3dlYi1sb2Nr
cy9XZWJMb2NrSWRlbnRpZmllci5oCiAgICAgTW9kdWxlcy93ZWItbG9ja3MvV2ViTG9ja01hbmFn
ZXJTbmFwc2hvdC5oCiAgICAgTW9kdWxlcy93ZWItbG9ja3MvV2ViTG9ja01vZGUuaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvY29jb2EvV2ViU3BlZWNoUmVjb2du
aXplclRhc2subW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVl
Y2hSZWNvZ25pemVyVGFzay5tbQppbmRleCBiNjIyOTkwOGU3NGFjMDI3OTlkNzc0MmIxNDMyOWZk
MzNkYzQ3NmE5Li5hOTQxZDc2YTRmNzQ4NzE4ZGYxZTNjZmYyYTZjNWUwODI3ZjQ4ODkxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNv
Z25pemVyVGFzay5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9jb2NvYS9X
ZWJTcGVlY2hSZWNvZ25pemVyVGFzay5tbQpAQCAtMzcsMTQgKzM3LDEyIEBACiAvLyBTZXQgdGhl
IG1heGltdW0gZHVyYXRpb24gdG8gYmUgYW4gaG91cjsgd2UgY2FuIGFkanVzdCB0aGlzIGlmIG5l
ZWRlZC4KIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1heGltdW1SZWNvZ25pdGlvbkR1cmF0aW9u
ID0gNjAgKiA2MDsKIAotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KIE5TX0FTU1VNRV9OT05O
VUxMX0JFR0lOCiAKIEBpbnRlcmZhY2UgV2ViU3BlZWNoUmVjb2duaXplclRhc2tJbXBsIDogTlNP
YmplY3Q8U0ZTcGVlY2hSZWNvZ25pdGlvblRhc2tEZWxlZ2F0ZSwgU0ZTcGVlY2hSZWNvZ25pemVy
RGVsZWdhdGU+IHsKIEBwcml2YXRlCi0gICAgU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xp
ZW50SWRlbnRpZmllciBfaWRlbnRpZmllcjsKLSAgICBCbG9ja1B0cjx2b2lkKGNvbnN0IFNwZWVj
aFJlY29nbml0aW9uVXBkYXRlJik+IF9kZWxlZ2F0ZUNhbGxiYWNrOworICAgIFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIgX2lkZW50aWZpZXI7Cisg
ICAgQmxvY2tQdHI8dm9pZChjb25zdCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYp
PiBfZGVsZWdhdGVDYWxsYmFjazsKICAgICBib29sIF9kb011bHRpcGxlUmVjb2duaXRpb25zOwog
ICAgIHVpbnQ2NF90IF9tYXhBbHRlcm5hdGl2ZXM7CiAgICAgUmV0YWluUHRyPFNGU3BlZWNoUmVj
b2duaXplcj4gX3JlY29nbml6ZXI7CkBAIC01NSw3ICs1Myw3IEBAIEBwcml2YXRlCiAgICAgYm9v
bCBfaGFzU2VudEVuZDsKIH0KIAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSWRlbnRpZmllcjoo
U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcilpZGVudGlmaWVyIGxv
Y2FsZTooTlNTdHJpbmcqKWxvY2FsZUlkZW50aWZpZXIgZG9NdWx0aXBsZVJlY29nbml0aW9uczoo
Qk9PTCljb250aW51b3VzIHJlcG9ydEludGVyaW1SZXN1bHRzOihCT09MKWludGVyaW1SZXN1bHRz
IG1heEFsdGVybmF0aXZlczoodW5zaWduZWQgbG9uZylhbHRlcm5hdGl2ZXMgZGVsZWdhdGVDYWxs
YmFjazoodm9pZCheKShjb25zdCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYpKWNhbGxiYWNrOwor
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSWRlbnRpZmllcjooV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcilpZGVudGlmaWVyIGxvY2FsZTooTlNTdHJp
bmcqKWxvY2FsZUlkZW50aWZpZXIgZG9NdWx0aXBsZVJlY29nbml0aW9uczooQk9PTCljb250aW51
b3VzIHJlcG9ydEludGVyaW1SZXN1bHRzOihCT09MKWludGVyaW1SZXN1bHRzIG1heEFsdGVybmF0
aXZlczoodW5zaWduZWQgbG9uZylhbHRlcm5hdGl2ZXMgZGVsZWdhdGVDYWxsYmFjazoodm9pZChe
KShjb25zdCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYpKWNhbGxiYWNrOwogLSAo
dm9pZCljYWxsYmFja1dpdGhUcmFuc2NyaXB0aW9uczooTlNBcnJheTxTRlRyYW5zY3JpcHRpb24g
Kj4gKil0cmFuc2NyaXB0aW9ucyBpc0ZpbmFsOihCT09MKWlzRmluYWw7CiAtICh2b2lkKWF1ZGlv
U2FtcGxlc0F2YWlsYWJsZTooQ01TYW1wbGVCdWZmZXJSZWYpc2FtcGxlQnVmZmVyOwogLSAodm9p
ZClhYm9ydDsKQEAgLTY4LDcgKzY2LDcgQEAgQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV2ViU3Bl
ZWNoUmVjb2duaXplclRhc2tJbXBsCiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aElkZW50aWZp
ZXI6KFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpaWRlbnRpZmll
ciBsb2NhbGU6KE5TU3RyaW5nKilsb2NhbGVJZGVudGlmaWVyIGRvTXVsdGlwbGVSZWNvZ25pdGlv
bnM6KEJPT0wpY29udGludW91cyByZXBvcnRJbnRlcmltUmVzdWx0czooQk9PTClpbnRlcmltUmVz
dWx0cyBtYXhBbHRlcm5hdGl2ZXM6KHVuc2lnbmVkIGxvbmcpYWx0ZXJuYXRpdmVzIGRlbGVnYXRl
Q2FsbGJhY2s6KHZvaWQoXikoY29uc3QgU3BlZWNoUmVjb2duaXRpb25VcGRhdGUmKSljYWxsYmFj
aworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSWRlbnRpZmllcjooV2ViQ29yZTo6U3BlZWNoUmVj
b2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcilpZGVudGlmaWVyIGxvY2FsZTooTlNT
dHJpbmcqKWxvY2FsZUlkZW50aWZpZXIgZG9NdWx0aXBsZVJlY29nbml0aW9uczooQk9PTCljb250
aW51b3VzIHJlcG9ydEludGVyaW1SZXN1bHRzOihCT09MKWludGVyaW1SZXN1bHRzIG1heEFsdGVy
bmF0aXZlczoodW5zaWduZWQgbG9uZylhbHRlcm5hdGl2ZXMgZGVsZWdhdGVDYWxsYmFjazoodm9p
ZCheKShjb25zdCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYpKWNhbGxiYWNrCiB7
CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CkBA
IC0xMTUsNyArMTEzLDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSWRlbnRpZmllcjooU3Bl
ZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcikKIAogLSAodm9pZCljYWxs
YmFja1dpdGhUcmFuc2NyaXB0aW9uczooTlNBcnJheTxTRlRyYW5zY3JpcHRpb24gKj4gKil0cmFu
c2NyaXB0aW9ucyBpc0ZpbmFsOihCT09MKWlzRmluYWwKIHsKLSAgICBWZWN0b3I8U3BlZWNoUmVj
b2duaXRpb25BbHRlcm5hdGl2ZURhdGE+IGFsdGVybmF0aXZlczsKKyAgICBWZWN0b3I8V2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXRpb25BbHRlcm5hdGl2ZURhdGE+IGFsdGVybmF0aXZlczsKICAgICBh
bHRlcm5hdGl2ZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShfbWF4QWx0ZXJuYXRpdmVzKTsKICAg
ICBmb3IgKFNGVHJhbnNjcmlwdGlvbiogdHJhbnNjcmlwdGlvbiBpbiB0cmFuc2NyaXB0aW9ucykg
ewogICAgICAgICAvLyBGSVhNRTogPHJkYXI6Ly83MzYyOTU3Mz4gZ2V0IGNvbmZpZGVuY2Ugb2Yg
U0ZUcmFuc2NyaXB0aW9uIHdoZW4gcG9zc2libGUuCkBAIC0xMjQsMTEgKzEyMiwxMSBAQCAtICh2
b2lkKWNhbGxiYWNrV2l0aFRyYW5zY3JpcHRpb25zOihOU0FycmF5PFNGVHJhbnNjcmlwdGlvbiAq
PiAqKXRyYW5zY3JpcHRpb25zCiAgICAgICAgICAgICBkb3VibGUgY29uZmlkZW5jZSA9IFtzZWdt
ZW50IGNvbmZpZGVuY2VdOwogICAgICAgICAgICAgbWF4Q29uZmlkZW5jZSA9IG1heENvbmZpZGVu
Y2UgPCBjb25maWRlbmNlID8gY29uZmlkZW5jZSA6IG1heENvbmZpZGVuY2U7CiAgICAgICAgIH0K
LSAgICAgICAgYWx0ZXJuYXRpdmVzLnVuY2hlY2tlZEFwcGVuZChTcGVlY2hSZWNvZ25pdGlvbkFs
dGVybmF0aXZlRGF0YSB7IFt0cmFuc2NyaXB0aW9uIGZvcm1hdHRlZFN0cmluZ10sIG1heENvbmZp
ZGVuY2UgfSk7CisgICAgICAgIGFsdGVybmF0aXZlcy51bmNoZWNrZWRBcHBlbmQoV2ViQ29yZTo6
U3BlZWNoUmVjb2duaXRpb25BbHRlcm5hdGl2ZURhdGEgeyBbdHJhbnNjcmlwdGlvbiBmb3JtYXR0
ZWRTdHJpbmddLCBtYXhDb25maWRlbmNlIH0pOwogICAgICAgICBpZiAoYWx0ZXJuYXRpdmVzLnNp
emUoKSA9PSBfbWF4QWx0ZXJuYXRpdmVzKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQotICAg
IF9kZWxlZ2F0ZUNhbGxiYWNrKFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGVSZXN1bHQo
X2lkZW50aWZpZXIsIHsgU3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhIHsgV1RGTW92ZShhbHRl
cm5hdGl2ZXMpLCAhIWlzRmluYWwgfSB9KSk7CisgICAgX2RlbGVnYXRlQ2FsbGJhY2soV2ViQ29y
ZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZVJlc3VsdChfaWRlbnRpZmllciwgeyBX
ZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlc3VsdERhdGEgeyBXVEZNb3ZlKGFsdGVybmF0aXZl
cyksICEhaXNGaW5hbCB9IH0pKTsKIH0KIAogLSAodm9pZClhdWRpb1NhbXBsZXNBdmFpbGFibGU6
KENNU2FtcGxlQnVmZmVyUmVmKXNhbXBsZUJ1ZmZlcgpAQCAtMTc1LDcgKzE3Myw3IEBAIC0gKHZv
aWQpc2VuZFNwZWVjaFN0YXJ0SWZOZWVkZWQKICAgICAgICAgcmV0dXJuOwogCiAgICAgX2hhc1Nl
bnRTcGVlY2hTdGFydCA9IHRydWU7Ci0gICAgX2RlbGVnYXRlQ2FsbGJhY2soU3BlZWNoUmVjb2du
aXRpb25VcGRhdGU6OmNyZWF0ZShfaWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVU
eXBlOjpTcGVlY2hTdGFydCkpOworICAgIF9kZWxlZ2F0ZUNhbGxiYWNrKFdlYkNvcmU6OlNwZWVj
aFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUoX2lkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uVXBkYXRlVHlwZTo6U3BlZWNoU3RhcnQpKTsKIH0KIAogLSAodm9pZClzZW5kU3Bl
ZWNoRW5kSWZOZWVkZWQKQEAgLTE4NCw3ICsxODIsNyBAQCAtICh2b2lkKXNlbmRTcGVlY2hFbmRJ
Zk5lZWRlZAogICAgICAgICByZXR1cm47CiAKICAgICBfaGFzU2VudFNwZWVjaEVuZCA9IHRydWU7
Ci0gICAgX2RlbGVnYXRlQ2FsbGJhY2soU3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZShf
aWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpTcGVlY2hFbmQpKTsKKyAg
ICBfZGVsZWdhdGVDYWxsYmFjayhXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3Jl
YXRlKF9pZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OlNw
ZWVjaEVuZCkpOwogfQogCiAtICh2b2lkKXNlbmRFbmRJZk5lZWRlZApAQCAtMTkzLDcgKzE5MSw3
IEBAIC0gKHZvaWQpc2VuZEVuZElmTmVlZGVkCiAgICAgICAgIHJldHVybjsKIAogICAgIF9oYXNT
ZW50RW5kID0gdHJ1ZTsKLSAgICBfZGVsZWdhdGVDYWxsYmFjayhTcGVlY2hSZWNvZ25pdGlvblVw
ZGF0ZTo6Y3JlYXRlKF9pZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OkVu
ZCkpOworICAgIF9kZWxlZ2F0ZUNhbGxiYWNrKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBk
YXRlOjpjcmVhdGUoX2lkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRl
VHlwZTo6RW5kKSk7CiB9CiAKICNwcmFnbWEgbWFyayBTRlNwZWVjaFJlY29nbml6ZXJEZWxlZ2F0
ZQpAQCAtMjA1LDggKzIwMyw4IEBAIC0gKHZvaWQpc3BlZWNoUmVjb2duaXplcjooU0ZTcGVlY2hS
ZWNvZ25pemVyICopc3BlZWNoUmVjb2duaXplciBhdmFpbGFiaWxpdHlEaWRDCiAgICAgaWYgKGF2
YWlsYWJsZSB8fCAhX3Rhc2spCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gZXJyb3IgPSBT
cGVlY2hSZWNvZ25pdGlvbkVycm9yIHsgU3BlZWNoUmVjb2duaXRpb25FcnJvclR5cGU6OlNlcnZp
Y2VOb3RBbGxvd2VkLCAiU3BlZWNoIHJlY29nbml0aW9uIHNlcnZpY2UgYmVjb21lcyB1bmF2YWls
YWJsZSJfcyB9OwotICAgIF9kZWxlZ2F0ZUNhbGxiYWNrKFNwZWVjaFJlY29nbml0aW9uVXBkYXRl
OjpjcmVhdGVFcnJvcihfaWRlbnRpZmllciwgV1RGTW92ZShlcnJvcikpKTsKKyAgICBhdXRvIGVy
cm9yID0gV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvciB7IFdlYkNvcmU6OlNwZWVjaFJl
Y29nbml0aW9uRXJyb3JUeXBlOjpTZXJ2aWNlTm90QWxsb3dlZCwgIlNwZWVjaCByZWNvZ25pdGlv
biBzZXJ2aWNlIGJlY29tZXMgdW5hdmFpbGFibGUiX3MgfTsKKyAgICBfZGVsZWdhdGVDYWxsYmFj
ayhXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlRXJyb3IoX2lkZW50aWZp
ZXIsIFdURk1vdmUoZXJyb3IpKSk7CiB9CiAKICNwcmFnbWEgbWFyayBTRlNwZWVjaFJlY29nbml0
aW9uVGFza0RlbGVnYXRlCkBAIC0yNDMsOCArMjQxLDggQEAgLSAodm9pZClzcGVlY2hSZWNvZ25p
dGlvblRhc2s6KFNGU3BlZWNoUmVjb2duaXRpb25UYXNrICopdGFzayBkaWRGaW5pc2hTdWNjZXNz
ZnUKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAgaWYgKCFzdWNjZXNzZnVsbHkp
IHsKLSAgICAgICAgYXV0byBlcnJvciA9IFNwZWVjaFJlY29nbml0aW9uRXJyb3IgeyBTcGVlY2hS
ZWNvZ25pdGlvbkVycm9yVHlwZTo6QWJvcnRlZCwgdGFzay5lcnJvci5sb2NhbGl6ZWREZXNjcmlw
dGlvbiB9OwotICAgICAgICBfZGVsZWdhdGVDYWxsYmFjayhTcGVlY2hSZWNvZ25pdGlvblVwZGF0
ZTo6Y3JlYXRlRXJyb3IoX2lkZW50aWZpZXIsIFdURk1vdmUoZXJyb3IpKSk7CisgICAgICAgIGF1
dG8gZXJyb3IgPSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvbkVycm9yIHsgV2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXRpb25FcnJvclR5cGU6OkFib3J0ZWQsIHRhc2suZXJyb3IubG9jYWxpemVkRGVz
Y3JpcHRpb24gfTsKKyAgICAgICAgX2RlbGVnYXRlQ2FsbGJhY2soV2ViQ29yZTo6U3BlZWNoUmVj
b2duaXRpb25VcGRhdGU6OmNyZWF0ZUVycm9yKF9pZGVudGlmaWVyLCBXVEZNb3ZlKGVycm9yKSkp
OwogICAgIH0KICAgICAKICAgICBbc2VsZiBzZW5kRW5kSWZOZWVkZWRdOwpAQCAtMjU0LDcgKzI1
Miw3IEBAIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrCiAK
LS0gKGluc3RhbmNldHlwZSlpbml0V2l0aElkZW50aWZpZXI6KFNwZWVjaFJlY29nbml0aW9uQ29u
bmVjdGlvbkNsaWVudElkZW50aWZpZXIpaWRlbnRpZmllciBsb2NhbGU6KE5TU3RyaW5nKilsb2Nh
bGVJZGVudGlmaWVyIGRvTXVsdGlwbGVSZWNvZ25pdGlvbnM6KEJPT0wpY29udGludW91cyByZXBv
cnRJbnRlcmltUmVzdWx0czooQk9PTClpbnRlcmltUmVzdWx0cyBtYXhBbHRlcm5hdGl2ZXM6KHVu
c2lnbmVkIGxvbmcpYWx0ZXJuYXRpdmVzIGRlbGVnYXRlQ2FsbGJhY2s6KHZvaWQoXikoY29uc3Qg
U3BlZWNoUmVjb2duaXRpb25VcGRhdGUmKSljYWxsYmFjaworLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoSWRlbnRpZmllcjooV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50
SWRlbnRpZmllcilpZGVudGlmaWVyIGxvY2FsZTooTlNTdHJpbmcqKWxvY2FsZUlkZW50aWZpZXIg
ZG9NdWx0aXBsZVJlY29nbml0aW9uczooQk9PTCljb250aW51b3VzIHJlcG9ydEludGVyaW1SZXN1
bHRzOihCT09MKWludGVyaW1SZXN1bHRzIG1heEFsdGVybmF0aXZlczoodW5zaWduZWQgbG9uZylh
bHRlcm5hdGl2ZXMgZGVsZWdhdGVDYWxsYmFjazoodm9pZCheKShjb25zdCBXZWJDb3JlOjpTcGVl
Y2hSZWNvZ25pdGlvblVwZGF0ZSYpKWNhbGxiYWNrCiB7CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBl
ciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25pemVyVGFza01vY2subW0gYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25pemVyVGFz
a01vY2subW0KaW5kZXggYzcyNzU5Yjc2N2FhOTU4N2Q3MzdlYTQwMjlhMzE2N2Y4Yzk3ZjJlOC4u
MmQzNDhlZDIwYzIxYjUxMDM0ODg3OWQ1YzI2M2ZjMGUzY2ZlZDg2YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvY29jb2EvV2ViU3BlZWNoUmVjb2duaXplclRhc2tN
b2NrLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL2NvY29hL1dlYlNwZWVj
aFJlY29nbml6ZXJUYXNrTW9jay5tbQpAQCAtMjgsMTMgKzI4LDExIEBACiAKICNpZiBIQVZFKFNQ
RUVDSFJFQ09HTklaRVIpCiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCiBOU19BU1NVTUVf
Tk9OTlVMTF9CRUdJTgogCiBAaW1wbGVtZW50YXRpb24gV2ViU3BlZWNoUmVjb2duaXplclRhc2tN
b2NrCiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aElkZW50aWZpZXI6KFNwZWVjaFJlY29nbml0
aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpaWRlbnRpZmllciBsb2NhbGU6KE5TU3RyaW5n
Kilsb2NhbGVJZGVudGlmaWVyIGRvTXVsdGlwbGVSZWNvZ25pdGlvbnM6KEJPT0wpY29udGludW91
cyByZXBvcnRJbnRlcmltUmVzdWx0czooQk9PTClpbnRlcmltUmVzdWx0cyBtYXhBbHRlcm5hdGl2
ZXM6KHVuc2lnbmVkIGxvbmcpYWx0ZXJuYXRpdmVzIGRlbGVnYXRlQ2FsbGJhY2s6KHZvaWQoXiko
Y29uc3QgU3BlZWNoUmVjb2duaXRpb25VcGRhdGUmKSljYWxsYmFjaworLSAoaW5zdGFuY2V0eXBl
KWluaXRXaXRoSWRlbnRpZmllcjooV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9u
Q2xpZW50SWRlbnRpZmllcilpZGVudGlmaWVyIGxvY2FsZTooTlNTdHJpbmcqKWxvY2FsZUlkZW50
aWZpZXIgZG9NdWx0aXBsZVJlY29nbml0aW9uczooQk9PTCljb250aW51b3VzIHJlcG9ydEludGVy
aW1SZXN1bHRzOihCT09MKWludGVyaW1SZXN1bHRzIG1heEFsdGVybmF0aXZlczoodW5zaWduZWQg
bG9uZylhbHRlcm5hdGl2ZXMgZGVsZWdhdGVDYWxsYmFjazoodm9pZCheKShjb25zdCBXZWJDb3Jl
OjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYpKWNhbGxiYWNrCiB7CiAgICAgVU5VU0VEX1BBUkFN
KGxvY2FsZUlkZW50aWZpZXIpOwogICAgIFVOVVNFRF9QQVJBTShpbnRlcmltUmVzdWx0cyk7CkBA
IC01OSwxMiArNTcsMTIgQEAgLSAodm9pZClhdWRpb1NhbXBsZXNBdmFpbGFibGU6KENNU2FtcGxl
QnVmZmVyUmVmKXNhbXBsZUJ1ZmZlcgogICAgIAogICAgIGlmICghX2hhc1NlbnRTcGVlY2hTdGFy
dCkgewogICAgICAgICBfaGFzU2VudFNwZWVjaFN0YXJ0ID0gdHJ1ZTsKLSAgICAgICAgX2RlbGVn
YXRlQ2FsbGJhY2soU3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZShfaWRlbnRpZmllciwg
U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpTcGVlY2hTdGFydCkpOworICAgICAgICBfZGVs
ZWdhdGVDYWxsYmFjayhXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKF9p
ZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OlNwZWVjaFN0
YXJ0KSk7CiAgICAgfQogCiAgICAgLy8gRmFrZSBzb21lIHJlY29nbml0aW9uIHJlc3VsdHMuCi0g
ICAgU3BlZWNoUmVjb2duaXRpb25BbHRlcm5hdGl2ZURhdGEgYWx0ZXJuYXRpdmUgeyAiVGVzdCIs
IDEuMCB9OwotICAgIF9kZWxlZ2F0ZUNhbGxiYWNrKFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpj
cmVhdGVSZXN1bHQoX2lkZW50aWZpZXIsIHsgU3BlZWNoUmVjb2duaXRpb25SZXN1bHREYXRhIHsg
eyBXVEZNb3ZlKGFsdGVybmF0aXZlKSB9LCB0cnVlIH0gfSkpOworICAgIFdlYkNvcmU6OlNwZWVj
aFJlY29nbml0aW9uQWx0ZXJuYXRpdmVEYXRhIGFsdGVybmF0aXZlIHsgIlRlc3QiLCAxLjAgfTsK
KyAgICBfZGVsZWdhdGVDYWxsYmFjayhXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6
Y3JlYXRlUmVzdWx0KF9pZGVudGlmaWVyLCB7IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uUmVz
dWx0RGF0YSB7IHsgV1RGTW92ZShhbHRlcm5hdGl2ZSkgfSwgdHJ1ZSB9IH0pKTsKIAogICAgIGlm
ICghX2RvTXVsdGlwbGVSZWNvZ25pdGlvbnMpCiAgICAgICAgIFtzZWxmIGFib3J0XTsKQEAgLTc4
LDEwICs3NiwxMCBAQCAtICh2b2lkKWFib3J0CiAKICAgICBpZiAoIV9oYXNTZW50U3BlZWNoRW5k
ICYmIF9oYXNTZW50U3BlZWNoU3RhcnQpIHsKICAgICAgICAgX2hhc1NlbnRTcGVlY2hFbmQgPSB0
cnVlOwotICAgICAgICBfZGVsZWdhdGVDYWxsYmFjayhTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6
Y3JlYXRlKF9pZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OlNwZWVjaEVu
ZCkpOworICAgICAgICBfZGVsZWdhdGVDYWxsYmFjayhXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
blVwZGF0ZTo6Y3JlYXRlKF9pZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVw
ZGF0ZVR5cGU6OlNwZWVjaEVuZCkpOwogICAgIH0KIAotICAgIF9kZWxlZ2F0ZUNhbGxiYWNrKFNw
ZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUoX2lkZW50aWZpZXIsIFNwZWVjaFJlY29nbml0
aW9uVXBkYXRlVHlwZTo6RW5kKSk7CisgICAgX2RlbGVnYXRlQ2FsbGJhY2soV2ViQ29yZTo6U3Bl
ZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZShfaWRlbnRpZmllciwgV2ViQ29yZTo6U3BlZWNo
UmVjb2duaXRpb25VcGRhdGVUeXBlOjpFbmQpKTsKIH0KIAogLSAodm9pZClzdG9wCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N5c3RlbS1wcmV2aWV3L0FSS2l0QmFkZ2VTeXN0
ZW1JbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zeXN0ZW0tcHJldmlldy9BUktpdEJh
ZGdlU3lzdGVtSW1hZ2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hOTI3OWY4ZDdhNTM1ODRhMDE1YmVjMWM0YjZj
M2MzOWI1YjJjZmQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
eXN0ZW0tcHJldmlldy9BUktpdEJhZGdlU3lzdGVtSW1hZ2UuaApAQCAtMCwwICsxLDExNiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQorCisj
aW5jbHVkZSAiTmF0aXZlSW1hZ2UuaCIKKyNpbmNsdWRlICJTeXN0ZW1JbWFnZS5oIgorI2luY2x1
ZGUgPG9wdGlvbmFsPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1Jl
Zi5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworT0JKQ19DTEFTUyBDSUNvbnRleHQ7CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgV0VCQ09SRV9FWFBPUlQgQVJLaXRCYWRnZVN5
c3RlbUltYWdlIGZpbmFsIDogcHVibGljIFN5c3RlbUltYWdlIHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUmVmPEFSS2l0QmFkZ2VTeXN0ZW1JbWFnZT4gY3JlYXRlKEltYWdlJiBpbWFnZSkKKyAgICB7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFSS2l0QmFkZ2VTeXN0ZW1JbWFnZShpbWFn
ZSkpOworICAgIH0KKworICAgIHN0YXRpYyBSZWY8QVJLaXRCYWRnZVN5c3RlbUltYWdlPiBjcmVh
dGUoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciwgRmxvYXRTaXplIHNpemUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBB
UktpdEJhZGdlU3lzdGVtSW1hZ2UocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBzaXplKSk7
CisgICAgfQorCisgICAgdmlydHVhbCB+QVJLaXRCYWRnZVN5c3RlbUltYWdlKCkgPSBkZWZhdWx0
OworCisgICAgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIGNv
bnN0IGZpbmFsOworCisgICAgSW1hZ2UqIGltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZS5n
ZXQoKTsgfQorICAgIHZvaWQgc2V0SW1hZ2UoSW1hZ2UmIGltYWdlKSB7IG1faW1hZ2UgPSAmaW1h
Z2U7IH0KKworICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUlkZW50aWZpZXIo
KSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsgfQorCisgICAg
dGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAg
IHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZjxBUktpdEJh
ZGdlU3lzdGVtSW1hZ2U+PiBkZWNvZGUoRGVjb2RlciYpOworCitwcml2YXRlOgorICAgIEFSS2l0
QmFkZ2VTeXN0ZW1JbWFnZShJbWFnZSYgaW1hZ2UpCisgICAgICAgIDogU3lzdGVtSW1hZ2UoU3lz
dGVtSW1hZ2VUeXBlOjpBUktpdEJhZGdlKQorICAgICAgICAsIG1faW1hZ2UoJmltYWdlKQorICAg
ICAgICAsIG1faW1hZ2VTaXplKGltYWdlLnNpemUoKSkKKyAgICB7CisgICAgfQorCisgICAgQVJL
aXRCYWRnZVN5c3RlbUltYWdlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIsIEZsb2F0U2l6ZSBzaXplKQorICAgICAgICA6IFN5c3RlbUltYWdl
KFN5c3RlbUltYWdlVHlwZTo6QVJLaXRCYWRnZSkKKyAgICAgICAgLCBtX3JlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcihyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCisgICAgICAgICwgbV9p
bWFnZVNpemUoc2l6ZSkKKyAgICB7CisgICAgfQorCisgICAgUmVmUHRyPEltYWdlPiBtX2ltYWdl
OworICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBtX3JlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcjsKKyAgICBGbG9hdFNpemUgbV9pbWFnZVNpemU7Cit9OworCit0ZW1wbGF0ZTxjbGFz
cyBFbmNvZGVyPgordm9pZCBBUktpdEJhZGdlU3lzdGVtSW1hZ2U6OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAoreworICAgIEFTU0VSVChtX2ltYWdlKTsKKyAgICBBU1NFUlQobV9pbWFn
ZS0+bmF0aXZlSW1hZ2UoKSk7CisgICAgZW5jb2RlciA8PCBtX2ltYWdlLT5uYXRpdmVJbWFnZSgp
LT5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKTsKKyAgICBlbmNvZGVyIDw8IG1faW1hZ2VT
aXplOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorc3RkOjpvcHRpb25hbDxSZWY8QVJL
aXRCYWRnZVN5c3RlbUltYWdlPj4gQVJLaXRCYWRnZVN5c3RlbUltYWdlOjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllcj4gcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOworICAgIGRlY29kZXIgPj4gcmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyOworICAgIGlmICghcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDxG
bG9hdFNpemU+IGltYWdlU2l6ZTsKKyAgICBkZWNvZGVyID4+IGltYWdlU2l6ZTsKKyAgICBpZiAo
IWltYWdlU2l6ZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiBB
UktpdEJhZGdlU3lzdGVtSW1hZ2U6OmNyZWF0ZShXVEZNb3ZlKCpyZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIpLCBXVEZNb3ZlKCppbWFnZVNpemUpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OkFSS2l0QmFkZ2VT
eXN0ZW1JbWFnZSkKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6U3lzdGVt
SW1hZ2UmIHN5c3RlbUltYWdlKSB7IHJldHVybiBzeXN0ZW1JbWFnZS5zeXN0ZW1JbWFnZVR5cGUo
KSA9PSBXZWJDb3JlOjpTeXN0ZW1JbWFnZVR5cGU6OkFSS2l0QmFkZ2U7IH0KK1NQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfRU5EKCkKKworI2VuZGlmIC8vIFVTRShTWVNURU1fUFJFVklFVykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3lzdGVtLXByZXZpZXcvQVJLaXRCYWRnZVN5
c3RlbUltYWdlLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zeXN0ZW0tcHJldmlldy9BUktp
dEJhZGdlU3lzdGVtSW1hZ2UubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWFiNTI2NTdmYmI1MjYyMjhjMzAwYzQ1
ODU5ZGJjZjIxODExNGM2MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3lzdGVtLXByZXZpZXcvQVJLaXRCYWRnZVN5c3RlbUltYWdlLm1tCkBAIC0wLDAgKzEsMjI3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJBUktpdEJhZGdl
U3lzdGVtSW1hZ2UuaCIKKworI2lmIFVTRShTWVNURU1fUFJFVklFVykKKworI2ltcG9ydCAiQ29s
b3JTcGFjZUNHLmgiCisjaW1wb3J0ICJGbG9hdFJlY3QuaCIKKyNpbXBvcnQgIkdlb21ldHJ5VXRp
bGl0aWVzLmgiCisjaW1wb3J0ICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbXBvcnQgIklPU3VyZmFj
ZS5oIgorI2ltcG9ydCA8Q29yZUdyYXBoaWNzL0NvcmVHcmFwaGljcy5oPgorI2ltcG9ydCA8Q29y
ZUltYWdlL0NvcmVJbWFnZS5oPgorI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW1w
b3J0IDx3dGYvUmV0YWluUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIE5T
QnVuZGxlICphcktpdEJ1bmRsZSgpCit7CisgICAgc3RhdGljIE5TQnVuZGxlICphcktpdEJ1bmRs
ZTsKKyAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKKyAgICBkaXNwYXRjaF9v
bmNlKCZvbmNlVG9rZW4sIF57CisgICAgICAgIGFyS2l0QnVuZGxlID0gW10oKSB7CisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWV9TSU1VTEFUT1IpCisgICAgICAgICAgICBkbG9wZW4oIi9TeXN0ZW0v
TGlicmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy9Bc3NldFZpZXdlci5mcmFtZXdvcmsvQXNzZXRWaWV3
ZXIiLCBSVExEX05PVyk7CisgICAgICAgICAgICByZXR1cm4gW05TQnVuZGxlIGJ1bmRsZUZvckNs
YXNzOk5TQ2xhc3NGcm9tU3RyaW5nKEAiQVNWVGh1bWJuYWlsVmlldyIpXTsKKyNlbHNlCisgICAg
ICAgICAgICByZXR1cm4gW05TQnVuZGxlIGJ1bmRsZVdpdGhVUkw6W05TVVJMIGZpbGVVUkxXaXRo
UGF0aDpAIi9TeXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy9Bc3NldFZpZXdlci5mcmFt
ZXdvcmsiXV07CisjZW5kaWYKKyAgICAgICAgfSgpOworICAgIH0pOworICAgIHJldHVybiBhcktp
dEJ1bmRsZTsKK30KKworc3RhdGljIFJldGFpblB0cjxDR1BERlBhZ2VSZWY+IGxvYWRBUktpdFBE
RlBhZ2UoTlNTdHJpbmcgKmltYWdlTmFtZSkKK3sKKyAgICBOU1VSTCAqdXJsID0gW2FyS2l0QnVu
ZGxlKCkgVVJMRm9yUmVzb3VyY2U6aW1hZ2VOYW1lIHdpdGhFeHRlbnNpb246QCJwZGYiXTsKKyAg
ICBpZiAoIXVybCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgYXV0byBkb2N1bWVudCA9
IGFkb3B0Q0YoQ0dQREZEb2N1bWVudENyZWF0ZVdpdGhVUkwoKENGVVJMUmVmKXVybCkpOworICAg
IGlmICghZG9jdW1lbnQpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGlmICghQ0dQREZE
b2N1bWVudEdldE51bWJlck9mUGFnZXMoZG9jdW1lbnQuZ2V0KCkpKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICByZXR1cm4gQ0dQREZEb2N1bWVudEdldFBhZ2UoZG9jdW1lbnQuZ2V0KCks
IDEpOworfQorCitzdGF0aWMgUmV0YWluUHRyPENHUERGUGFnZVJlZj4gc3lzdGVtUHJldmlld0xv
Z28oKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0dQREZQYWdlUmVm
Pj4gbG9nb1BhZ2U7CisgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47CisgICAg
ZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeeworICAgICAgICBsb2dvUGFnZS5nZXQoKSA9IGxv
YWRBUktpdFBERlBhZ2UoQCJBUktpdEJhZGdlIik7CisgICAgfSk7CisgICAgcmV0dXJuIGxvZ29Q
YWdlOworfQorCit2b2lkIEFSS2l0QmFkZ2VTeXN0ZW1JbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRl
eHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KSBjb25zdAoreworICAg
IGF1dG8gcGFnZSA9IHN5c3RlbVByZXZpZXdMb2dvKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAg
ICByZXR1cm47CisKKyAgICBzdGF0aWMgY29uc3QgaW50IGxhcmdlQmFkZ2VEaW1lbnNpb24gPSA3
MDsKKyAgICBzdGF0aWMgY29uc3QgaW50IGxhcmdlQmFkZ2VPZmZzZXQgPSAyMDsKKworICAgIHN0
YXRpYyBjb25zdCBpbnQgc21hbGxCYWRnZURpbWVuc2lvbiA9IDM1OworICAgIHN0YXRpYyBjb25z
dCBpbnQgc21hbGxCYWRnZU9mZnNldCA9IDg7CisKKyAgICBzdGF0aWMgY29uc3QgaW50IG1pbmlt
dW1TaXplRm9yTGFyZ2VCYWRnZSA9IDI0MDsKKworICAgIGJvb2wgdXNlU21hbGxCYWRnZSA9IHJl
Y3Qud2lkdGgoKSA8IG1pbmltdW1TaXplRm9yTGFyZ2VCYWRnZSB8fCByZWN0LmhlaWdodCgpIDwg
bWluaW11bVNpemVGb3JMYXJnZUJhZGdlOworICAgIGludCBiYWRnZU9mZnNldCA9IHVzZVNtYWxs
QmFkZ2UgPyBzbWFsbEJhZGdlT2Zmc2V0IDogbGFyZ2VCYWRnZU9mZnNldDsKKyAgICBpbnQgYmFk
Z2VEaW1lbnNpb24gPSB1c2VTbWFsbEJhZGdlID8gc21hbGxCYWRnZURpbWVuc2lvbiA6IGxhcmdl
QmFkZ2VEaW1lbnNpb247CisKKyAgICBpbnQgbWluaW11bURpbWVuc2lvbiA9IGJhZGdlRGltZW5z
aW9uICsgMiAqIGJhZGdlT2Zmc2V0OworICAgIGlmIChyZWN0LndpZHRoKCkgPCBtaW5pbXVtRGlt
ZW5zaW9uIHx8IHJlY3QuaGVpZ2h0KCkgPCBtaW5pbXVtRGltZW5zaW9uKQorICAgICAgICByZXR1
cm47CisKKyAgICBDR1JlY3QgYWJzb2x1dGVCYWRnZVJlY3QgPSBDR1JlY3RNYWtlKHJlY3QueCgp
ICsgcmVjdC53aWR0aCgpIC0gYmFkZ2VEaW1lbnNpb24gLSBiYWRnZU9mZnNldCwgcmVjdC55KCkg
KyBiYWRnZU9mZnNldCwgYmFkZ2VEaW1lbnNpb24sIGJhZGdlRGltZW5zaW9uKTsKKyAgICBDR1Jl
Y3QgaW5zZXRCYWRnZVJlY3QgPSBDR1JlY3RNYWtlKHJlY3Qud2lkdGgoKSAtIGJhZGdlRGltZW5z
aW9uIC0gYmFkZ2VPZmZzZXQsIGJhZGdlT2Zmc2V0LCBiYWRnZURpbWVuc2lvbiwgYmFkZ2VEaW1l
bnNpb24pOworICAgIENHUmVjdCBiYWRnZVJlY3QgPSBDR1JlY3RNYWtlKDAsIDAsIGJhZGdlRGlt
ZW5zaW9uLCBiYWRnZURpbWVuc2lvbik7CisKKyAgICBpZiAoIW1faW1hZ2UgfHwgIW1faW1hZ2Ut
Pm5hdGl2ZUltYWdlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIENJSW1hZ2UgKmlucHV0SW1h
Z2UgPSBbQ0lJbWFnZSBpbWFnZVdpdGhDR0ltYWdlOm1faW1hZ2UtPm5hdGl2ZUltYWdlKCktPnBs
YXRmb3JtSW1hZ2UoKS5nZXQoKV07CisKKyAgICAvLyBDcmVhdGUgYSBjaXJjbGUgdG8gYmUgdXNl
ZCBmb3IgdGhlIGNsaXBwaW5nIHBhdGggaW4gdGhlIGJhZGdlLCBhcyB3ZWxsIGFzIHRoZSBkcm9w
IHNoYWRvdy4KKyAgICBSZXRhaW5QdHI8Q0dQYXRoUmVmPiBjaXJjbGUgPSBhZG9wdENGKENHUGF0
aENyZWF0ZVdpdGhSb3VuZGVkUmVjdChhYnNvbHV0ZUJhZGdlUmVjdCwgYmFkZ2VEaW1lbnNpb24g
LyAyLCBiYWRnZURpbWVuc2lvbiAvIDIsIG51bGxwdHIpKTsKKworICAgIGlmIChncmFwaGljc0Nv
bnRleHQucGFpbnRpbmdEaXNhYmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBHcmFwaGlj
c0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoZ3JhcGhpY3NDb250ZXh0KTsKKworICAgIENH
Q29udGV4dFJlZiBjdHggPSBncmFwaGljc0NvbnRleHQucGxhdGZvcm1Db250ZXh0KCk7CisgICAg
aWYgKCFjdHgpCisgICAgICAgIHJldHVybjsKKworICAgIENHQ29udGV4dFNhdmVHU3RhdGUoY3R4
KTsKKworICAgIC8vIERyYXcgYSBkcm9wIHNoYWRvdyBhcm91bmQgdGhlIGNpcmNsZS4KKyAgICAv
LyBVc2UgdGhlIEdyYXBoaWNzQ29udGV4dCBmdW5jdGlvbiwgYmVjYXVzZSBpdCBjYWxjdWxhdGVz
IHRoZSBibHVyIHJhZGl1cyBpbiBjb250ZXh0IHNwYWNlLAorICAgIC8vIHJhdGhlciB0aGFuIHNj
cmVlbiBzcGFjZS4KKyAgICBjb25zdGV4cHIgYXV0byBzaGFkb3dDb2xvciA9IENvbG9yOjpibGFj
ay5jb2xvcldpdGhBbHBoYUJ5dGUoMjYpOworICAgIGdyYXBoaWNzQ29udGV4dC5zZXRTaGFkb3co
RmxvYXRTaXplIHsgfSwgMTYsIHNoYWRvd0NvbG9yKTsKKworICAgIC8vIFRoZSBjaXJjbGUgbXVz
dCBoYXZlIGFuIGFscGhhIGNoYW5uZWwgdmFsdWUgb2YgMSBmb3IgdGhlIHNoYWRvdyBjb2xvciB0
byBhcHBlYXIuCisgICAgQ0dGbG9hdCBjaXJjbGVDb2xvckNvbXBvbmVudHNbNF0gPSB7IDAsIDAs
IDAsIDEgfTsKKyAgICBSZXRhaW5QdHI8Q0dDb2xvclJlZj4gY2lyY2xlQ29sb3IgPSBhZG9wdENG
KENHQ29sb3JDcmVhdGUoc1JHQkNvbG9yU3BhY2VSZWYoKSwgY2lyY2xlQ29sb3JDb21wb25lbnRz
KSk7CisgICAgQ0dDb250ZXh0U2V0RmlsbENvbG9yV2l0aENvbG9yKGN0eCwgY2lyY2xlQ29sb3Iu
Z2V0KCkpOworCisgICAgLy8gQ2xpcCBvdXQgdGhlIGNpcmNsZSB0byBvbmx5IHNob3cgdGhlIHNo
YWRvdy4KKyAgICBDR0NvbnRleHRCZWdpblBhdGgoY3R4KTsKKyAgICBDR0NvbnRleHRBZGRSZWN0
KGN0eCwgcmVjdCk7CisgICAgQ0dDb250ZXh0QWRkUGF0aChjdHgsIGNpcmNsZS5nZXQoKSk7Cisg
ICAgQ0dDb250ZXh0Q2xvc2VQYXRoKGN0eCk7CisgICAgQ0dDb250ZXh0RU9DbGlwKGN0eCk7CisK
KyAgICAvLyBEcmF3IGEgc2xpZ2h0bHkgc21hbGxlciBjaXJjbGUgd2l0aCBhIHNoYWRvdywgb3Ro
ZXJ3aXNlIHdlJ2xsIHNlZSBhIGZyaW5nZSBvZiB0aGUgc29saWQKKyAgICAvLyBibGFjayBjaXJj
bGUgYXJvdW5kIHRoZSBlZGdlcyBvZiB0aGUgY2xpcHBlZCBwYXRoIGJlbG93LgorICAgIENHQ29u
dGV4dEJlZ2luUGF0aChjdHgpOworICAgIENHUmVjdCBzbGlnaHRseVNtYWxsZXJBYnNvbHV0ZUJh
ZGdlUmVjdCA9IENHUmVjdE1ha2UoYWJzb2x1dGVCYWRnZVJlY3Qub3JpZ2luLnggKyAwLjUsIGFi
c29sdXRlQmFkZ2VSZWN0Lm9yaWdpbi55ICsgMC41LCBiYWRnZURpbWVuc2lvbiAtIDEsIGJhZGdl
RGltZW5zaW9uIC0gMSk7CisgICAgUmV0YWluUHRyPENHUGF0aFJlZj4gc2xpZ2h0bHlTbWFsbGVy
Q2lyY2xlID0gYWRvcHRDRihDR1BhdGhDcmVhdGVXaXRoUm91bmRlZFJlY3Qoc2xpZ2h0bHlTbWFs
bGVyQWJzb2x1dGVCYWRnZVJlY3QsIHNsaWdodGx5U21hbGxlckFic29sdXRlQmFkZ2VSZWN0LnNp
emUud2lkdGggLyAyLCBzbGlnaHRseVNtYWxsZXJBYnNvbHV0ZUJhZGdlUmVjdC5zaXplLmhlaWdo
dCAvIDIsIG51bGxwdHIpKTsKKyAgICBDR0NvbnRleHRBZGRQYXRoKGN0eCwgc2xpZ2h0bHlTbWFs
bGVyQ2lyY2xlLmdldCgpKTsKKyAgICBDR0NvbnRleHRDbG9zZVBhdGgoY3R4KTsKKyAgICBDR0Nv
bnRleHRGaWxsUGF0aChjdHgpOworCisgICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0ZShjdHgpOwor
CisgICAgLy8gRHJhdyB0aGUgYmx1cnJlZCBiYWNrZHJvcC4gU2NhbGUgZnJvbSBpbnRyaW5zaWMg
c2l6ZSB0byByZW5kZXIgc2l6ZS4KKyAgICBDR0FmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm0gPSBD
R0FmZmluZVRyYW5zZm9ybUlkZW50aXR5OworICAgIHRyYW5zZm9ybSA9IENHQWZmaW5lVHJhbnNm
b3JtU2NhbGUodHJhbnNmb3JtLCByZWN0LndpZHRoKCkgLyBtX2ltYWdlU2l6ZS53aWR0aCgpLCBy
ZWN0LmhlaWdodCgpIC8gbV9pbWFnZVNpemUuaGVpZ2h0KCkpOworICAgIENJSW1hZ2UgKnNjYWxl
ZEltYWdlID0gW2lucHV0SW1hZ2UgaW1hZ2VCeUFwcGx5aW5nVHJhbnNmb3JtOnRyYW5zZm9ybV07
CisKKyAgICAvLyBDb3JlSW1hZ2UgY29vcmRpbmF0ZXMgYXJlIHktdXAsIHNvIHdlIG5lZWQgdG8g
ZmxpcCB0aGUgYmFkZ2UgcmVjdGFuZ2xlIHdpdGhpbiB0aGUgaW1hZ2UgZnJhbWUuCisgICAgQ0dS
ZWN0IGZsaXBwZWRJbnNldEJhZGdlUmVjdCA9IENHUmVjdE1ha2UoaW5zZXRCYWRnZVJlY3Qub3Jp
Z2luLngsIHJlY3QuaGVpZ2h0KCkgLSBpbnNldEJhZGdlUmVjdC5vcmlnaW4ueSAtIGluc2V0QmFk
Z2VSZWN0LnNpemUuaGVpZ2h0LCBiYWRnZURpbWVuc2lvbiwgYmFkZ2VEaW1lbnNpb24pOworCisg
ICAgLy8gQ3JlYXRlIGEgY3JvcHBlZCByZWdpb24gd2l0aCBwaXhlbCB2YWx1ZXMgZXh0ZW5kaW5n
IG91dHdhcmRzLgorICAgIENJSW1hZ2UgKmNsYW1wZWRJbWFnZSA9IFtzY2FsZWRJbWFnZSBpbWFn
ZUJ5Q2xhbXBpbmdUb1JlY3Q6ZmxpcHBlZEluc2V0QmFkZ2VSZWN0XTsKKworICAgIC8vIEJsdXIu
CisgICAgQ0lJbWFnZSAqYmx1cnJlZEltYWdlID0gW2NsYW1wZWRJbWFnZSBpbWFnZUJ5QXBwbHlp
bmdHYXVzc2lhbkJsdXJXaXRoU2lnbWE6MTBdOworCisgICAgLy8gU2F0dXJhdGUuCisgICAgQ0lG
aWx0ZXIgKnNhdHVyYXRpb25GaWx0ZXIgPSBbQ0lGaWx0ZXIgZmlsdGVyV2l0aE5hbWU6QCJDSUNv
bG9yQ29udHJvbHMiXTsKKyAgICBbc2F0dXJhdGlvbkZpbHRlciBzZXRWYWx1ZTpibHVycmVkSW1h
Z2UgZm9yS2V5OmtDSUlucHV0SW1hZ2VLZXldOworICAgIFtzYXR1cmF0aW9uRmlsdGVyIHNldFZh
bHVlOkAxLjggZm9yS2V5OmtDSUlucHV0U2F0dXJhdGlvbktleV07CisKKyAgICAvLyBUaW50Lgor
ICAgIENJRmlsdGVyICp0aW50RmlsdGVyMSA9IFtDSUZpbHRlciBmaWx0ZXJXaXRoTmFtZTpAIkNJ
Q29uc3RhbnRDb2xvckdlbmVyYXRvciJdOworICAgIENJQ29sb3IgKnRpbnRDb2xvcjEgPSBbQ0lD
b2xvciBjb2xvcldpdGhSZWQ6MSBncmVlbjoxIGJsdWU6MSBhbHBoYTowLjE4XTsKKyAgICBbdGlu
dEZpbHRlcjEgc2V0VmFsdWU6dGludENvbG9yMSBmb3JLZXk6a0NJSW5wdXRDb2xvcktleV07CisK
KyAgICAvLyBCbGVuZCB0aGUgdGludCB3aXRoIHRoZSBzYXR1cmF0ZWQgb3V0cHV0LgorICAgIENJ
RmlsdGVyICpzb3VyY2VPdmVyRmlsdGVyID0gW0NJRmlsdGVyIGZpbHRlcldpdGhOYW1lOkAiQ0lT
b3VyY2VPdmVyQ29tcG9zaXRpbmciXTsKKyAgICBbc291cmNlT3ZlckZpbHRlciBzZXRWYWx1ZTp0
aW50RmlsdGVyMS5vdXRwdXRJbWFnZSBmb3JLZXk6a0NJSW5wdXRJbWFnZUtleV07CisgICAgW3Nv
dXJjZU92ZXJGaWx0ZXIgc2V0VmFsdWU6c2F0dXJhdGlvbkZpbHRlci5vdXRwdXRJbWFnZSBmb3JL
ZXk6a0NJSW5wdXRCYWNrZ3JvdW5kSW1hZ2VLZXldOworCisgICAgUmV0YWluUHRyPENJQ29udGV4
dD4gY2lDb250ZXh0ID0gW0NJQ29udGV4dCBjb250ZXh0XTsKKworICAgIFJldGFpblB0cjxDR0lt
YWdlUmVmPiBjZ0ltYWdlOworI2lmIEhBVkUoSU9TVVJGQUNFX0NPUkVJTUFHRV9TVVBQT1JUKQor
ICAgIC8vIENyb3AgdGhlIHJlc3VsdCB0byB0aGUgYmFkZ2UgbG9jYXRpb24uCisgICAgQ0lJbWFn
ZSAqY3JvcHBlZEltYWdlID0gW3NvdXJjZU92ZXJGaWx0ZXIub3V0cHV0SW1hZ2UgaW1hZ2VCeUNy
b3BwaW5nVG9SZWN0OmZsaXBwZWRJbnNldEJhZGdlUmVjdF07CisgICAgQ0lJbWFnZSAqdHJhbnNs
YXRlZEltYWdlID0gW2Nyb3BwZWRJbWFnZSBpbWFnZUJ5QXBwbHlpbmdUcmFuc2Zvcm06Q0dBZmZp
bmVUcmFuc2Zvcm1NYWtlVHJhbnNsYXRpb24oLWZsaXBwZWRJbnNldEJhZGdlUmVjdC5vcmlnaW4u
eCwgLWZsaXBwZWRJbnNldEJhZGdlUmVjdC5vcmlnaW4ueSldOworCisgICAgYXV0byBzdXJmYWNl
RGltZW5zaW9uID0gdXNlU21hbGxCYWRnZSA/IHNtYWxsQmFkZ2VEaW1lbnNpb24gOiBsYXJnZUJh
ZGdlRGltZW5zaW9uOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IGJhZGdlU3VyZmFj
ZSA9IElPU3VyZmFjZTo6Y3JlYXRlKHsgc3VyZmFjZURpbWVuc2lvbiwgc3VyZmFjZURpbWVuc2lv
biB9LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7CisgICAgSU9TdXJmYWNlUmVmIHN1
cmZhY2UgPSBiYWRnZVN1cmZhY2UtPnN1cmZhY2UoKTsKKyAgICBbY2lDb250ZXh0IHJlbmRlcjp0
cmFuc2xhdGVkSW1hZ2UgdG9JT1N1cmZhY2U6c3VyZmFjZSBib3VuZHM6YmFkZ2VSZWN0IGNvbG9y
U3BhY2U6c1JHQkNvbG9yU3BhY2VSZWYoKV07CisgICAgY2dJbWFnZSA9IHVzZVNtYWxsQmFkZ2Ug
PyBiYWRnZVN1cmZhY2UtPmNyZWF0ZUltYWdlKCkgOiBiYWRnZVN1cmZhY2UtPmNyZWF0ZUltYWdl
KCk7CisjZWxzZQorICAgIGNnSW1hZ2UgPSBhZG9wdENGKFtjaUNvbnRleHQgY3JlYXRlQ0dJbWFn
ZTpzb3VyY2VPdmVyRmlsdGVyLm91dHB1dEltYWdlIGZyb21SZWN0OmZsaXBwZWRJbnNldEJhZGdl
UmVjdF0pOworI2VuZGlmCisKKyAgICAvLyBCZWZvcmUgd2UgcmVuZGVyIHRoZSByZXN1bHQsIHdl
IHNob3VsZCBjbGlwIHRvIGEgY2lyY2xlIGFyb3VuZCB0aGUgYmFkZ2UgcmVjdGFuZ2xlLgorICAg
IENHQ29udGV4dFNhdmVHU3RhdGUoY3R4KTsKKyAgICBDR0NvbnRleHRCZWdpblBhdGgoY3R4KTsK
KyAgICBDR0NvbnRleHRBZGRQYXRoKGN0eCwgY2lyY2xlLmdldCgpKTsKKyAgICBDR0NvbnRleHRD
bG9zZVBhdGgoY3R4KTsKKyAgICBDR0NvbnRleHRDbGlwKGN0eCk7CisKKyAgICBDR0NvbnRleHRU
cmFuc2xhdGVDVE0oY3R4LCBhYnNvbHV0ZUJhZGdlUmVjdC5vcmlnaW4ueCwgYWJzb2x1dGVCYWRn
ZVJlY3Qub3JpZ2luLnkpOworICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShjdHgsIDAsIGJhZGdl
RGltZW5zaW9uKTsKKyAgICBDR0NvbnRleHRTY2FsZUNUTShjdHgsIDEsIC0xKTsKKyAgICBDR0Nv
bnRleHREcmF3SW1hZ2UoY3R4LCBiYWRnZVJlY3QsIGNnSW1hZ2UuZ2V0KCkpOworCisgICAgQ0dT
aXplIHBkZlNpemUgPSBDR1BERlBhZ2VHZXRCb3hSZWN0KHBhZ2UuZ2V0KCksIGtDR1BERk1lZGlh
Qm94KS5zaXplOworICAgIENHRmxvYXQgc2NhbGVYID0gYmFkZ2VEaW1lbnNpb24gLyBwZGZTaXpl
LndpZHRoOworICAgIENHRmxvYXQgc2NhbGVZID0gYmFkZ2VEaW1lbnNpb24gLyBwZGZTaXplLmhl
aWdodDsKKyAgICBDR0NvbnRleHRTY2FsZUNUTShjdHgsIHNjYWxlWCwgc2NhbGVZKTsKKyAgICBD
R0NvbnRleHREcmF3UERGUGFnZShjdHgsIHBhZ2UuZ2V0KCkpOworCisgICAgQ0dDb250ZXh0Rmx1
c2goY3R4KTsKKyAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGN0eCk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShTWVNURU1fUFJFVklFVykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzQ29jb2EudHh0CmluZGV4IDg5MzNiOWY5NWI0YzMwZGY3NTE0MTc5YjYwMzE3ZTM4OWQxNDI5
MzAuLjIxNjAzNDliMDgzNGRiMDEwNTJjNDk2OTU4Yjk2Y2U5MGQ3MDBhNjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291
cmNlc0NvY29hLnR4dApAQCAtMTE5LDYgKzExOSw3IEBAIE1vZHVsZXMvcGx1Z2lucy9Zb3VUdWJl
UGx1Z2luUmVwbGFjZW1lbnQuY3BwCiBNb2R1bGVzL3NwZWVjaC9jb2NvYS9TcGVlY2hSZWNvZ25p
emVyQ29jb2EubW0KIE1vZHVsZXMvc3BlZWNoL2NvY29hL1dlYlNwZWVjaFJlY29nbml6ZXJUYXNr
Lm1tCiBNb2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25pemVyVGFza01vY2subW0K
K01vZHVsZXMvc3lzdGVtLXByZXZpZXcvQVJLaXRCYWRnZVN5c3RlbUltYWdlLm1tCiBNb2R1bGVz
L3dlYmRhdGFiYXNlL2NvY29hL0RhdGFiYXNlTWFuYWdlckNvY29hLm1tCiBhY2Nlc3NpYmlsaXR5
L2lvcy9BWE9iamVjdENhY2hlSU9TLm1tCiBhY2Nlc3NpYmlsaXR5L2lvcy9BY2Nlc3NpYmlsaXR5
T2JqZWN0SU9TLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggZGQ4ZWU3YmMyMTBjMThiMzg2NjhkMmU2OTk3ZTQ0Mjg4OGFmNTA4
ZS4uOWNlMzg4MDBlOTcwMmZiOWI3YjljNGY5MGU0ZTE0Mzk5ODVhY2ZmMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjMxMCw2
ICsyMzEwLDcgQEAKIAkJNzE1NkJDQTEyMUNBMzUwRjAwNTM0Mzk3IC8qIEJhc2ljRWZmZWN0VGlt
aW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MTU2
QkM5RjIxQ0EzNTA2MDA1MzQzOTcgLyogQmFzaWNFZmZlY3RUaW1pbmcuaCAqLzsgfTsKIAkJNzE1
QUQ3MjAyMDUwNTEzMjAwRDU5MkRDIC8qIERlY2xhcmF0aXZlQW5pbWF0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MTVBRDcxRDIwNTA1MTI0MDBE
NTkyREMgLyogRGVjbGFyYXRpdmVBbmltYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MTVBRDcyMTIwNTA1MTNGMDBENTkyREMgLyogQ1NT
VHJhbnNpdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNzEyM0MxODYyMDQ3MzlCQTAwNzg5MzkyIC8qIENTU1RyYW5zaXRpb24uaCAqLzsgfTsKKwkJ
NzE2QzRDMzYyN0VCNjBDOTAwNTMxNDY3IC8qIEFSS2l0QmFkZ2VTeXN0ZW1JbWFnZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzE2QzRDMzUyN0VCNjA4
RTAwNTMxNDY3IC8qIEFSS2l0QmFkZ2VTeXN0ZW1JbWFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcxNzI5RjdCMjBGM0JBNDkwMDgwMUNFNiAv
KiBEb2N1bWVudFRpbWVsaW5lT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzE3MjlGN0EyMEYzQkEzQTAwODAxQ0U2IC8qIERvY3VtZW50VGlt
ZWxpbmVPcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNzE3MjlGN0UyMEYzQkI0NzAwODAxQ0U2IC8qIEpTRG9jdW1lbnRUaW1lbGluZU9w
dGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcx
NzI5RjdDMjBGM0JBQjkwMDgwMUNFNiAvKiBKU0RvY3VtZW50VGltZWxpbmVPcHRpb25zLmggKi87
IH07CiAJCTcxNzM2OTRBMjc1RTBCNUUwMDNBREE5QiAvKiBDdXN0b21FZmZlY3QuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxQTc0QjA4Mjc1OTI5MzYw
MERFODBCQSAvKiBDdXN0b21FZmZlY3QuaCAqLzsgfTsKQEAgLTExMTg2LDYgKzExMTg3LDggQEAK
IAkJNzE2QTU1QUIyNkZBMzQ5QjAwQzk2RDY5IC8qIHJhbmdlLWJ1dHRvbi5jc3MgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LmNzczsgcGF0aCA9
ICJyYW5nZS1idXR0b24uY3NzIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzE2QTU1
QUQyNkZBMzQ5QzAwQzk2RDY5IC8qIHZvbHVtZS1idXR0b24uanMgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBh
dGggPSAidm9sdW1lLWJ1dHRvbi5qcyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcx
NkE1NUFFMjZGQTM0OUMwMEM5NkQ2OSAvKiByYW5nZS1idXR0b24uanMgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7
IHBhdGggPSAicmFuZ2UtYnV0dG9uLmpzIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NzE2QzRDMzQyN0VCNjA4RTAwNTMxNDY3IC8qIEFSS2l0QmFkZ2VTeXN0ZW1JbWFnZS5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFSS2l0QmFkZ2VTeXN0ZW1JbWFn
ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzE2QzRDMzUyN0VCNjA4RTAwNTMx
NDY3IC8qIEFSS2l0QmFkZ2VTeXN0ZW1JbWFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBBUktpdEJhZGdlU3lzdGVtSW1hZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNzE2RkEwRDgxREIyNjU5MTAwNzMyM0NDIC8qIGFpcnBsYXktYnV0dG9uLmNzcyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQuY3NzOyBwYXRoID0gImFpcnBsYXktYnV0dG9uLmNzcyI7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTcxNkZBMEQ5MURCMjY1OTEwMDczMjNDQyAvKiBhaXJwbGF5LWJ1
dHRvbi5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9ICJhaXJwbGF5
LWJ1dHRvbi5qcyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxNkZBMERBMURCMjY1
OTEwMDczMjNDQyAvKiBhaXJwbGF5LXBsYWNhcmQuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmph
dmFzY3JpcHQ7IHBhdGggPSAiYWlycGxheS1wbGFjYXJkLmpzIjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTI0NjY1LDYgKzI0NjY4LDE1IEBACiAJCQlwYXRoID0gYW5pbWF0aW9uOwog
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJNzE2QzRDMzMyN0VCNjA4RTAwNTMx
NDY3IC8qIHN5c3RlbS1wcmV2aWV3ICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGls
ZHJlbiA9ICgKKwkJCQk3MTZDNEMzNTI3RUI2MDhFMDA1MzE0NjcgLyogQVJLaXRCYWRnZVN5c3Rl
bUltYWdlLmggKi8sCisJCQkJNzE2QzRDMzQyN0VCNjA4RTAwNTMxNDY3IC8qIEFSS2l0QmFkZ2VT
eXN0ZW1JbWFnZS5tbSAqLywKKwkJCSk7CisJCQlwYXRoID0gInN5c3RlbS1wcmV2aWV3IjsKKwkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTcxNkZBMEQ3MURCMjY1OTEwMDczMjND
QyAvKiBjb250cm9scyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CkBAIC0yNjE3NSw2ICsyNjE4Nyw3IEBACiAJCQkJQUEyQTVBQjcxNkE0ODVBNDAwOTc1QTI1IC8q
IHNwZWVjaCAqLywKIAkJCQk5MzA4NURCMzI2RTAwNjhFMDAwRUM2QTcgLyogc3RvcmFnZSAqLywK
IAkJCQk0MUEwMjNFQTFBMzlEQjc5MDBGNzIyQ0YgLyogc3RyZWFtcyAqLywKKwkJCQk3MTZDNEMz
MzI3RUI2MDhFMDA1MzE0NjcgLyogc3lzdGVtLXByZXZpZXcgKi8sCiAJCQkJNDY0NEY3RUEyNzJB
MUMxNjAwNTU1OTlFIC8qIHdlYi1sb2NrcyAqLywKIAkJCQlGRDMxNUZBMjEyQjAyNUIxMDBDMUEz
NTkgLyogd2ViYXVkaW8gKi8sCiAJCQkJNTdEODQ2MkExRkVBRjU3RjAwQ0EzNjgyIC8qIHdlYmF1
dGhuICovLApAQCAtMzM1OTgsNiArMzM2MTEsNyBAQAogCQkJCTUxMkREOEZEMEQ5MUU2QUYwMDBG
ODlFRSAvKiBBcmNoaXZlRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEyREQ4RkMwRDkx
RTZBRjAwMEY4OUVFIC8qIEFyY2hpdmVSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEy
REQ4RjgwRDkxRTZBRjAwMEY4OUVFIC8qIEFyY2hpdmVSZXNvdXJjZUNvbGxlY3Rpb24uaCBpbiBI
ZWFkZXJzICovLAorCQkJCTcxNkM0QzM2MjdFQjYwQzkwMDUzMTQ2NyAvKiBBUktpdEJhZGdlU3lz
dGVtSW1hZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUZENTY4NkNBMTNBQzE4MDIwMEI2OUM2OCAv
KiBBc3luY0F1ZGlvRGVjb2Rlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFDREU5MjIxNTAxOTE2
OTAwODYyQ0M1IC8qIEFzeW5jRmlsZVN0cmVhbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGRDRE
NjExODY1MUZBMzAwNTEyRjZFIC8qIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCBpbiBIZWFk
ZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU3lz
dGVtSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1N5c3RlbUltYWdl
LmgKaW5kZXggZmU4M2QzYTc0NzE2N2QxZjhkMjZhMDdlNGY5MjU5NWJiZmYxM2QzNi4uZjVhYTI3
NTYwMjg0YTZhMjQ0ZGQ5ZDZmMjdkMjAwMjA0OTc2MWRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU3lzdGVtSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9TeXN0ZW1JbWFnZS5oCkBAIC0zNyw2ICszNyw5IEBAIGVudW0g
Y2xhc3MgU3lzdGVtSW1hZ2VUeXBlIDogdWludDhfdCB7CiAgICAgQXBwbGVQYXlCdXR0b24sCiAg
ICAgQXBwbGVQYXlMb2dvLAogI2VuZGlmCisjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQorICAgIEFS
S2l0QmFkZ2UsCisjZW5kaWYKIH07CiAKIGNsYXNzIFdFQkNPUkVfRVhQT1JUIFN5c3RlbUltYWdl
IDogcHVibGljIFJlZkNvdW50ZWQ8U3lzdGVtSW1hZ2U+IHsKQEAgLTY4LDYgKzcxLDkgQEAgdGVt
cGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpTeXN0ZW1JbWFnZVR5cGU+IHsKICNp
ZiBFTkFCTEUoQVBQTEVfUEFZKQogICAgICAgICAsIFdlYkNvcmU6OlN5c3RlbUltYWdlVHlwZTo6
QXBwbGVQYXlCdXR0b24sCiAgICAgICAgIFdlYkNvcmU6OlN5c3RlbUltYWdlVHlwZTo6QXBwbGVQ
YXlMb2dvCisjZW5kaWYKKyNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCisgICAgICAgICwgV2ViQ29y
ZTo6U3lzdGVtSW1hZ2VUeXBlOjpBUktpdEJhZGdlCiAjZW5kaWYKICAgICA+OwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAppbmRleCBmODY1OTZjMGNlNDI0MWZm
YjZkMTc0NDE0YWEyMjQxOWIzOWYxZDFlLi4xMmE2Nzg1NDUxMDg1ODI0MTEwZDljZjhjY2UxN2Fi
YjYxMDFkM2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBA
IC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRGlzcGxheUxp
c3RSZWNvcmRlci5oIgogCisjaW5jbHVkZSAiQVJLaXRCYWRnZVN5c3RlbUltYWdlLmgiCiAjaW5j
bHVkZSAiRGlzcGxheUxpc3QuaCIKICNpbmNsdWRlICJEaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0
LmgiCiAjaW5jbHVkZSAiRGlzcGxheUxpc3RJdGVtcy5oIgpAQCAtMTg4LDYgKzE4OSwxMSBAQCB2
b2lkIFJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmIGltYWdlLCBjb25zdCBG
bG9hdFNpemUmIGltYWdlU2l6ZSwgYwogCiB2b2lkIFJlY29yZGVyOjpkcmF3U3lzdGVtSW1hZ2Uo
U3lzdGVtSW1hZ2UmIHN5c3RlbUltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uUmVj
dCkKIHsKKyAgICBpZiAoaXM8QVJLaXRCYWRnZVN5c3RlbUltYWdlPihzeXN0ZW1JbWFnZSkpIHsK
KyAgICAgICAgaWYgKGF1dG8gaW1hZ2UgPSBkb3duY2FzdDxBUktpdEJhZGdlU3lzdGVtSW1hZ2U+
KHN5c3RlbUltYWdlKS5pbWFnZSgpKQorICAgICAgICAgICAgcmVjb3JkUmVzb3VyY2VVc2UoKmlt
YWdlLT5uYXRpdmVJbWFnZSgpKTsKKyAgICB9CisKICAgICByZWNvcmREcmF3U3lzdGVtSW1hZ2Uo
c3lzdGVtSW1hZ2UsIGRlc3RpbmF0aW9uUmVjdCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lSU9TLmgKaW5kZXggZTQ0YmQ2ODIyNzYxOTIzNjRjNzYzYjhlZDU2ZTc0
ZjMwZDU1ZmExMy4uNTJkNzBhZGM4OWRhYzY1NWRiYjUwZTM1YjcwMWMzOGI5NjI0M2IzOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLmgKQEAgLTMwLDEyICszMCw2
IEBACiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXkuaCIKICNpbmNsdWRlICJSZW5kZXJUaGVtZUNvY29h
LmgiCiAKLSNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCi0jaW5jbHVkZSAiSU9TdXJmYWNlLmgiCi0j
aW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotI2VuZGlmCi0KLU9CSkNfQ0xBU1MgQ0lDb250ZXh0
OwogT0JKQ19DTEFTUyBVSUltYWdlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0yMTcsMTIg
KzIxMSw2IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGFkanVzdFN0eWxlRm9yQWx0ZXJuYXRlRm9y
bUNvbnRyb2xEZXNpZ25UcmFuc2l0aW9uKFJlbmRlclN0eWxlJiwgY29uc3QgRWxlbWVudCopIGNv
bnN0OwogCi0jaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQotICAgIFJldGFpblB0cjxDSUNvbnRleHQ+
IG1fY2lDb250ZXh0OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IG1fbGFyZ2VCYWRn
ZVN1cmZhY2U7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gbV9zbWFsbEJhZGdlU3Vy
ZmFjZTsKLSNlbmRpZgotCiAgICAgYm9vbCBtX3Nob3VsZE1vY2tCb2xkU3lzdGVtRm9udEZvckFj
Y2Vzc2liaWxpdHkgeyBmYWxzZSB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lSU9TLm1tCmluZGV4IGFlNzgyNDJiMzJjZmJiNWRiZDYyM2JiMTI5NjJjYzUwYjVi
ZDVhNWIuLjczOTNkNzA4ZjA0MTRkNmQ1Y2Y3MmUyNTJkNTFhYWI0YTE1OTk4ODYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KQEAgLTI4LDYgKzI4LDcgQEAK
IAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKKyNpbXBvcnQgIkFSS2l0QmFkZ2VTeXN0ZW1J
bWFnZS5oIgogI2ltcG9ydCAiQml0bWFwSW1hZ2UuaCIKICNpbXBvcnQgIkNTU1ByaW1pdGl2ZVZh
bHVlLmgiCiAjaW1wb3J0ICJDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhLmgiCkBAIC0yMDA3LDE4
NiArMjAwOCw5IEBAIFN0cmluZyBSZW5kZXJUaGVtZUlPUzo6ZXh0cmFEZWZhdWx0U3R5bGVTaGVl
dCgpCiAjZW5kaWYKIAogI2lmIFVTRShTWVNURU1fUFJFVklFVykKLXN0YXRpYyBOU0J1bmRsZSAq
YXJLaXRCdW5kbGUoKQotewotICAgIHN0YXRpYyBOU0J1bmRsZSAqYXJLaXRCdW5kbGUgPSBbXSgp
IHsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZX1NJTVVMQVRPUikKLSAgICAgICAgZGxvcGVuKCIv
U3lzdGVtL0xpYnJhcnkvUHJpdmF0ZUZyYW1ld29ya3MvQXNzZXRWaWV3ZXIuZnJhbWV3b3JrL0Fz
c2V0Vmlld2VyIiwgUlRMRF9OT1cpOwotICAgICAgICByZXR1cm4gW05TQnVuZGxlIGJ1bmRsZUZv
ckNsYXNzOk5TQ2xhc3NGcm9tU3RyaW5nKEAiQVNWVGh1bWJuYWlsVmlldyIpXTsKLSNlbHNlCi0g
ICAgICAgIHJldHVybiBbTlNCdW5kbGUgYnVuZGxlV2l0aFVSTDpbTlNVUkwgZmlsZVVSTFdpdGhQ
YXRoOkAiL1N5c3RlbS9MaWJyYXJ5L1ByaXZhdGVGcmFtZXdvcmtzL0Fzc2V0Vmlld2VyLmZyYW1l
d29yayJdXTsKLSNlbmRpZgotICAgIH0oKTsKLQotICAgIHJldHVybiBhcktpdEJ1bmRsZTsKLX0K
LQotc3RhdGljIFJldGFpblB0cjxDR1BERlBhZ2VSZWY+IGxvYWRBUktpdFBERlBhZ2UoTlNTdHJp
bmcgKmltYWdlTmFtZSkKLXsKLSAgICBOU1VSTCAqdXJsID0gW2FyS2l0QnVuZGxlKCkgVVJMRm9y
UmVzb3VyY2U6aW1hZ2VOYW1lIHdpdGhFeHRlbnNpb246QCJwZGYiXTsKLQotICAgIGlmICghdXJs
KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGF1dG8gZG9jdW1lbnQgPSBhZG9wdENG
KENHUERGRG9jdW1lbnRDcmVhdGVXaXRoVVJMKChDRlVSTFJlZil1cmwpKTsKLSAgICBpZiAoIWRv
Y3VtZW50KQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGlmICghQ0dQREZEb2N1bWVu
dEdldE51bWJlck9mUGFnZXMoZG9jdW1lbnQuZ2V0KCkpKQotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLQotICAgIHJldHVybiBDR1BERkRvY3VtZW50R2V0UGFnZShkb2N1bWVudC5nZXQoKSwgMSk7
Ci19Ci0KLXN0YXRpYyBDR1BERlBhZ2VSZWYgc3lzdGVtUHJldmlld0xvZ28oKQotewotICAgIHN0
YXRpYyBDR1BERlBhZ2VSZWYgbG9nb1BhZ2UgPSBsb2FkQVJLaXRQREZQYWdlKEAiQVJLaXRCYWRn
ZSIpLmxlYWtSZWYoKTsKLSAgICByZXR1cm4gbG9nb1BhZ2U7Ci19Ci0KIHZvaWQgUmVuZGVyVGhl
bWVJT1M6OnBhaW50U3lzdGVtUHJldmlld0JhZGdlKEltYWdlJiBpbWFnZSwgY29uc3QgUGFpbnRJ
bmZvJiBwYWludEluZm8sIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKLSAgICBzdGF0aWMgY29u
c3QgaW50IGxhcmdlQmFkZ2VEaW1lbnNpb24gPSA3MDsKLSAgICBzdGF0aWMgY29uc3QgaW50IGxh
cmdlQmFkZ2VPZmZzZXQgPSAyMDsKLQotICAgIHN0YXRpYyBjb25zdCBpbnQgc21hbGxCYWRnZURp
bWVuc2lvbiA9IDM1OwotICAgIHN0YXRpYyBjb25zdCBpbnQgc21hbGxCYWRnZU9mZnNldCA9IDg7
Ci0KLSAgICBzdGF0aWMgY29uc3QgaW50IG1pbmltdW1TaXplRm9yTGFyZ2VCYWRnZSA9IDI0MDsK
LQotICAgIGJvb2wgdXNlU21hbGxCYWRnZSA9IHJlY3Qud2lkdGgoKSA8IG1pbmltdW1TaXplRm9y
TGFyZ2VCYWRnZSB8fCByZWN0LmhlaWdodCgpIDwgbWluaW11bVNpemVGb3JMYXJnZUJhZGdlOwot
ICAgIGludCBiYWRnZU9mZnNldCA9IHVzZVNtYWxsQmFkZ2UgPyBzbWFsbEJhZGdlT2Zmc2V0IDog
bGFyZ2VCYWRnZU9mZnNldDsKLSAgICBpbnQgYmFkZ2VEaW1lbnNpb24gPSB1c2VTbWFsbEJhZGdl
ID8gc21hbGxCYWRnZURpbWVuc2lvbiA6IGxhcmdlQmFkZ2VEaW1lbnNpb247Ci0KLSAgICBpbnQg
bWluaW11bURpbWVuc2lvbiA9IGJhZGdlRGltZW5zaW9uICsgMiAqIGJhZGdlT2Zmc2V0OwotICAg
IGlmIChyZWN0LndpZHRoKCkgPCBtaW5pbXVtRGltZW5zaW9uIHx8IHJlY3QuaGVpZ2h0KCkgPCBt
aW5pbXVtRGltZW5zaW9uKQotICAgICAgICByZXR1cm47Ci0KLSAgICBDR1JlY3QgYWJzb2x1dGVC
YWRnZVJlY3QgPSBDR1JlY3RNYWtlKHJlY3QueCgpICsgcmVjdC53aWR0aCgpIC0gYmFkZ2VEaW1l
bnNpb24gLSBiYWRnZU9mZnNldCwgcmVjdC55KCkgKyBiYWRnZU9mZnNldCwgYmFkZ2VEaW1lbnNp
b24sIGJhZGdlRGltZW5zaW9uKTsKLSAgICBDR1JlY3QgaW5zZXRCYWRnZVJlY3QgPSBDR1JlY3RN
YWtlKHJlY3Qud2lkdGgoKSAtIGJhZGdlRGltZW5zaW9uIC0gYmFkZ2VPZmZzZXQsIGJhZGdlT2Zm
c2V0LCBiYWRnZURpbWVuc2lvbiwgYmFkZ2VEaW1lbnNpb24pOwotICAgIENHUmVjdCBiYWRnZVJl
Y3QgPSBDR1JlY3RNYWtlKDAsIDAsIGJhZGdlRGltZW5zaW9uLCBiYWRnZURpbWVuc2lvbik7Ci0K
LSAgICBDSUltYWdlICppbnB1dEltYWdlID0gW0NJSW1hZ2UgaW1hZ2VXaXRoQ0dJbWFnZTppbWFn
ZS5uYXRpdmVJbWFnZSgpLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCldOwotCi0gICAgLy8gQ3JlYXRl
IGEgY2lyY2xlIHRvIGJlIHVzZWQgZm9yIHRoZSBjbGlwcGluZyBwYXRoIGluIHRoZSBiYWRnZSwg
YXMgd2VsbCBhcyB0aGUgZHJvcCBzaGFkb3cuCi0gICAgUmV0YWluUHRyPENHUGF0aFJlZj4gY2ly
Y2xlID0gYWRvcHRDRihDR1BhdGhDcmVhdGVXaXRoUm91bmRlZFJlY3QoYWJzb2x1dGVCYWRnZVJl
Y3QsIGJhZGdlRGltZW5zaW9uIC8gMiwgYmFkZ2VEaW1lbnNpb24gLyAyLCBudWxscHRyKSk7Ci0K
LSAgICBhdXRvJiBncmFwaGljc0NvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpOwotICAgIGlm
IChncmFwaGljc0NvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoZ3JhcGhpY3NDb250ZXh0
KTsKLQotICAgIENHQ29udGV4dFJlZiBjdHggPSBncmFwaGljc0NvbnRleHQucGxhdGZvcm1Db250
ZXh0KCk7Ci0gICAgaWYgKCFjdHgpCi0gICAgICAgIHJldHVybjsKLQotICAgIENHQ29udGV4dFNh
dmVHU3RhdGUoY3R4KTsKLQotICAgIC8vIERyYXcgYSBkcm9wIHNoYWRvdyBhcm91bmQgdGhlIGNp
cmNsZS4KLSAgICAvLyBVc2UgdGhlIEdyYXBoaWNzQ29udGV4dCBmdW5jdGlvbiwgYmVjYXVzZSBp
dCBjYWxjdWxhdGVzIHRoZSBibHVyIHJhZGl1cyBpbiBjb250ZXh0IHNwYWNlLAotICAgIC8vIHJh
dGhlciB0aGFuIHNjcmVlbiBzcGFjZS4KLSAgICBjb25zdGV4cHIgYXV0byBzaGFkb3dDb2xvciA9
IENvbG9yOjpibGFjay5jb2xvcldpdGhBbHBoYUJ5dGUoMjYpOwotICAgIGdyYXBoaWNzQ29udGV4
dC5zZXRTaGFkb3coRmxvYXRTaXplIHsgfSwgMTYsIHNoYWRvd0NvbG9yKTsKLQotICAgIC8vIFRo
ZSBjaXJjbGUgbXVzdCBoYXZlIGFuIGFscGhhIGNoYW5uZWwgdmFsdWUgb2YgMSBmb3IgdGhlIHNo
YWRvdyBjb2xvciB0byBhcHBlYXIuCi0gICAgQ0dGbG9hdCBjaXJjbGVDb2xvckNvbXBvbmVudHNb
NF0gPSB7IDAsIDAsIDAsIDEgfTsKLSAgICBSZXRhaW5QdHI8Q0dDb2xvclJlZj4gY2lyY2xlQ29s
b3IgPSBhZG9wdENGKENHQ29sb3JDcmVhdGUoc1JHQkNvbG9yU3BhY2VSZWYoKSwgY2lyY2xlQ29s
b3JDb21wb25lbnRzKSk7Ci0gICAgQ0dDb250ZXh0U2V0RmlsbENvbG9yV2l0aENvbG9yKGN0eCwg
Y2lyY2xlQ29sb3IuZ2V0KCkpOwotCi0gICAgLy8gQ2xpcCBvdXQgdGhlIGNpcmNsZSB0byBvbmx5
IHNob3cgdGhlIHNoYWRvdy4KLSAgICBDR0NvbnRleHRCZWdpblBhdGgoY3R4KTsKLSAgICBDR0Nv
bnRleHRBZGRSZWN0KGN0eCwgcmVjdCk7Ci0gICAgQ0dDb250ZXh0QWRkUGF0aChjdHgsIGNpcmNs
ZS5nZXQoKSk7Ci0gICAgQ0dDb250ZXh0Q2xvc2VQYXRoKGN0eCk7Ci0gICAgQ0dDb250ZXh0RU9D
bGlwKGN0eCk7Ci0KLSAgICAvLyBEcmF3IGEgc2xpZ2h0bHkgc21hbGxlciBjaXJjbGUgd2l0aCBh
IHNoYWRvdywgb3RoZXJ3aXNlIHdlJ2xsIHNlZSBhIGZyaW5nZSBvZiB0aGUgc29saWQKLSAgICAv
LyBibGFjayBjaXJjbGUgYXJvdW5kIHRoZSBlZGdlcyBvZiB0aGUgY2xpcHBlZCBwYXRoIGJlbG93
LgotICAgIENHQ29udGV4dEJlZ2luUGF0aChjdHgpOwotICAgIENHUmVjdCBzbGlnaHRseVNtYWxs
ZXJBYnNvbHV0ZUJhZGdlUmVjdCA9IENHUmVjdE1ha2UoYWJzb2x1dGVCYWRnZVJlY3Qub3JpZ2lu
LnggKyAwLjUsIGFic29sdXRlQmFkZ2VSZWN0Lm9yaWdpbi55ICsgMC41LCBiYWRnZURpbWVuc2lv
biAtIDEsIGJhZGdlRGltZW5zaW9uIC0gMSk7Ci0gICAgUmV0YWluUHRyPENHUGF0aFJlZj4gc2xp
Z2h0bHlTbWFsbGVyQ2lyY2xlID0gYWRvcHRDRihDR1BhdGhDcmVhdGVXaXRoUm91bmRlZFJlY3Qo
c2xpZ2h0bHlTbWFsbGVyQWJzb2x1dGVCYWRnZVJlY3QsIHNsaWdodGx5U21hbGxlckFic29sdXRl
QmFkZ2VSZWN0LnNpemUud2lkdGggLyAyLCBzbGlnaHRseVNtYWxsZXJBYnNvbHV0ZUJhZGdlUmVj
dC5zaXplLmhlaWdodCAvIDIsIG51bGxwdHIpKTsKLSAgICBDR0NvbnRleHRBZGRQYXRoKGN0eCwg
c2xpZ2h0bHlTbWFsbGVyQ2lyY2xlLmdldCgpKTsKLSAgICBDR0NvbnRleHRDbG9zZVBhdGgoY3R4
KTsKLSAgICBDR0NvbnRleHRGaWxsUGF0aChjdHgpOwotCi0gICAgQ0dDb250ZXh0UmVzdG9yZUdT
dGF0ZShjdHgpOwotCi0gICAgLy8gRHJhdyB0aGUgYmx1cnJlZCBiYWNrZHJvcC4gU2NhbGUgZnJv
bSBpbnRyaW5zaWMgc2l6ZSB0byByZW5kZXIgc2l6ZS4KLSAgICBDR0FmZmluZVRyYW5zZm9ybSB0
cmFuc2Zvcm0gPSBDR0FmZmluZVRyYW5zZm9ybUlkZW50aXR5OwotICAgIHRyYW5zZm9ybSA9IENH
QWZmaW5lVHJhbnNmb3JtU2NhbGUodHJhbnNmb3JtLCByZWN0LndpZHRoKCkgLyBpbWFnZS53aWR0
aCgpLCByZWN0LmhlaWdodCgpIC8gaW1hZ2UuaGVpZ2h0KCkpOwotICAgIENJSW1hZ2UgKnNjYWxl
ZEltYWdlID0gW2lucHV0SW1hZ2UgaW1hZ2VCeUFwcGx5aW5nVHJhbnNmb3JtOnRyYW5zZm9ybV07
Ci0KLSAgICAvLyBDb3JlSW1hZ2UgY29vcmRpbmF0ZXMgYXJlIHktdXAsIHNvIHdlIG5lZWQgdG8g
ZmxpcCB0aGUgYmFkZ2UgcmVjdGFuZ2xlIHdpdGhpbiB0aGUgaW1hZ2UgZnJhbWUuCi0gICAgQ0dS
ZWN0IGZsaXBwZWRJbnNldEJhZGdlUmVjdCA9IENHUmVjdE1ha2UoaW5zZXRCYWRnZVJlY3Qub3Jp
Z2luLngsIHJlY3QuaGVpZ2h0KCkgLSBpbnNldEJhZGdlUmVjdC5vcmlnaW4ueSAtIGluc2V0QmFk
Z2VSZWN0LnNpemUuaGVpZ2h0LCBiYWRnZURpbWVuc2lvbiwgYmFkZ2VEaW1lbnNpb24pOwotCi0g
ICAgLy8gQ3JlYXRlIGEgY3JvcHBlZCByZWdpb24gd2l0aCBwaXhlbCB2YWx1ZXMgZXh0ZW5kaW5n
IG91dHdhcmRzLgotICAgIENJSW1hZ2UgKmNsYW1wZWRJbWFnZSA9IFtzY2FsZWRJbWFnZSBpbWFn
ZUJ5Q2xhbXBpbmdUb1JlY3Q6ZmxpcHBlZEluc2V0QmFkZ2VSZWN0XTsKLQotICAgIC8vIEJsdXIu
Ci0gICAgQ0lJbWFnZSAqYmx1cnJlZEltYWdlID0gW2NsYW1wZWRJbWFnZSBpbWFnZUJ5QXBwbHlp
bmdHYXVzc2lhbkJsdXJXaXRoU2lnbWE6MTBdOwotCi0gICAgLy8gU2F0dXJhdGUuCi0gICAgQ0lG
aWx0ZXIgKnNhdHVyYXRpb25GaWx0ZXIgPSBbQ0lGaWx0ZXIgZmlsdGVyV2l0aE5hbWU6QCJDSUNv
bG9yQ29udHJvbHMiXTsKLSAgICBbc2F0dXJhdGlvbkZpbHRlciBzZXRWYWx1ZTpibHVycmVkSW1h
Z2UgZm9yS2V5OmtDSUlucHV0SW1hZ2VLZXldOwotICAgIFtzYXR1cmF0aW9uRmlsdGVyIHNldFZh
bHVlOkAxLjggZm9yS2V5OmtDSUlucHV0U2F0dXJhdGlvbktleV07Ci0KLSAgICAvLyBUaW50Lgot
ICAgIENJRmlsdGVyICp0aW50RmlsdGVyMSA9IFtDSUZpbHRlciBmaWx0ZXJXaXRoTmFtZTpAIkNJ
Q29uc3RhbnRDb2xvckdlbmVyYXRvciJdOwotICAgIENJQ29sb3IgKnRpbnRDb2xvcjEgPSBbQ0lD
b2xvciBjb2xvcldpdGhSZWQ6MSBncmVlbjoxIGJsdWU6MSBhbHBoYTowLjE4XTsKLSAgICBbdGlu
dEZpbHRlcjEgc2V0VmFsdWU6dGludENvbG9yMSBmb3JLZXk6a0NJSW5wdXRDb2xvcktleV07Ci0K
LSAgICAvLyBCbGVuZCB0aGUgdGludCB3aXRoIHRoZSBzYXR1cmF0ZWQgb3V0cHV0LgotICAgIENJ
RmlsdGVyICpzb3VyY2VPdmVyRmlsdGVyID0gW0NJRmlsdGVyIGZpbHRlcldpdGhOYW1lOkAiQ0lT
b3VyY2VPdmVyQ29tcG9zaXRpbmciXTsKLSAgICBbc291cmNlT3ZlckZpbHRlciBzZXRWYWx1ZTp0
aW50RmlsdGVyMS5vdXRwdXRJbWFnZSBmb3JLZXk6a0NJSW5wdXRJbWFnZUtleV07Ci0gICAgW3Nv
dXJjZU92ZXJGaWx0ZXIgc2V0VmFsdWU6c2F0dXJhdGlvbkZpbHRlci5vdXRwdXRJbWFnZSBmb3JL
ZXk6a0NJSW5wdXRCYWNrZ3JvdW5kSW1hZ2VLZXldOwotCi0gICAgaWYgKCFtX2NpQ29udGV4dCkK
LSAgICAgICAgbV9jaUNvbnRleHQgPSBbQ0lDb250ZXh0IGNvbnRleHRdOwotCi0gICAgUmV0YWlu
UHRyPENHSW1hZ2VSZWY+IGNnSW1hZ2U7Ci0jaWYgSEFWRShJT1NVUkZBQ0VfQ09SRUlNQUdFX1NV
UFBPUlQpCi0gICAgLy8gQ3JvcCB0aGUgcmVzdWx0IHRvIHRoZSBiYWRnZSBsb2NhdGlvbi4KLSAg
ICBDSUltYWdlICpjcm9wcGVkSW1hZ2UgPSBbc291cmNlT3ZlckZpbHRlci5vdXRwdXRJbWFnZSBp
bWFnZUJ5Q3JvcHBpbmdUb1JlY3Q6ZmxpcHBlZEluc2V0QmFkZ2VSZWN0XTsKLSAgICBDSUltYWdl
ICp0cmFuc2xhdGVkSW1hZ2UgPSBbY3JvcHBlZEltYWdlIGltYWdlQnlBcHBseWluZ1RyYW5zZm9y
bTpDR0FmZmluZVRyYW5zZm9ybU1ha2VUcmFuc2xhdGlvbigtZmxpcHBlZEluc2V0QmFkZ2VSZWN0
Lm9yaWdpbi54LCAtZmxpcHBlZEluc2V0QmFkZ2VSZWN0Lm9yaWdpbi55KV07Ci0gICAgSU9TdXJm
YWNlUmVmIHN1cmZhY2U7Ci0gICAgaWYgKHVzZVNtYWxsQmFkZ2UpIHsKLSAgICAgICAgaWYgKCFt
X3NtYWxsQmFkZ2VTdXJmYWNlKQotICAgICAgICAgICAgbV9zbWFsbEJhZGdlU3VyZmFjZSA9IElP
U3VyZmFjZTo6Y3JlYXRlKHsgc21hbGxCYWRnZURpbWVuc2lvbiwgc21hbGxCYWRnZURpbWVuc2lv
biB9LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7Ci0gICAgICAgIHN1cmZhY2UgPSBt
X3NtYWxsQmFkZ2VTdXJmYWNlLT5zdXJmYWNlKCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYg
KCFtX2xhcmdlQmFkZ2VTdXJmYWNlKQotICAgICAgICAgICAgbV9sYXJnZUJhZGdlU3VyZmFjZSA9
IElPU3VyZmFjZTo6Y3JlYXRlKHsgbGFyZ2VCYWRnZURpbWVuc2lvbiwgbGFyZ2VCYWRnZURpbWVu
c2lvbiB9LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7Ci0gICAgICAgIHN1cmZhY2Ug
PSBtX2xhcmdlQmFkZ2VTdXJmYWNlLT5zdXJmYWNlKCk7Ci0gICAgfQotICAgIFttX2NpQ29udGV4
dCByZW5kZXI6dHJhbnNsYXRlZEltYWdlIHRvSU9TdXJmYWNlOnN1cmZhY2UgYm91bmRzOmJhZGdl
UmVjdCBjb2xvclNwYWNlOnNSR0JDb2xvclNwYWNlUmVmKCldOwotICAgIGNnSW1hZ2UgPSB1c2VT
bWFsbEJhZGdlID8gbV9zbWFsbEJhZGdlU3VyZmFjZS0+Y3JlYXRlSW1hZ2UoKSA6IG1fbGFyZ2VC
YWRnZVN1cmZhY2UtPmNyZWF0ZUltYWdlKCk7Ci0jZWxzZQotICAgIGNnSW1hZ2UgPSBhZG9wdENG
KFttX2NpQ29udGV4dCBjcmVhdGVDR0ltYWdlOnNvdXJjZU92ZXJGaWx0ZXIub3V0cHV0SW1hZ2Ug
ZnJvbVJlY3Q6ZmxpcHBlZEluc2V0QmFkZ2VSZWN0XSk7Ci0jZW5kaWYKLQotICAgIC8vIEJlZm9y
ZSB3ZSByZW5kZXIgdGhlIHJlc3VsdCwgd2Ugc2hvdWxkIGNsaXAgdG8gYSBjaXJjbGUgYXJvdW5k
IHRoZSBiYWRnZSByZWN0YW5nbGUuCi0gICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShjdHgpOwotICAg
IENHQ29udGV4dEJlZ2luUGF0aChjdHgpOwotICAgIENHQ29udGV4dEFkZFBhdGgoY3R4LCBjaXJj
bGUuZ2V0KCkpOwotICAgIENHQ29udGV4dENsb3NlUGF0aChjdHgpOwotICAgIENHQ29udGV4dENs
aXAoY3R4KTsKLQotICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShjdHgsIGFic29sdXRlQmFkZ2VS
ZWN0Lm9yaWdpbi54LCBhYnNvbHV0ZUJhZGdlUmVjdC5vcmlnaW4ueSk7Ci0gICAgQ0dDb250ZXh0
VHJhbnNsYXRlQ1RNKGN0eCwgMCwgYmFkZ2VEaW1lbnNpb24pOwotICAgIENHQ29udGV4dFNjYWxl
Q1RNKGN0eCwgMSwgLTEpOwotICAgIENHQ29udGV4dERyYXdJbWFnZShjdHgsIGJhZGdlUmVjdCwg
Y2dJbWFnZS5nZXQoKSk7Ci0KLSAgICBpZiAoYXV0byBsb2dvID0gc3lzdGVtUHJldmlld0xvZ28o
KSkgewotICAgICAgICBDR1NpemUgcGRmU2l6ZSA9IENHUERGUGFnZUdldEJveFJlY3QobG9nbywg
a0NHUERGTWVkaWFCb3gpLnNpemU7Ci0gICAgICAgIENHRmxvYXQgc2NhbGVYID0gYmFkZ2VEaW1l
bnNpb24gLyBwZGZTaXplLndpZHRoOwotICAgICAgICBDR0Zsb2F0IHNjYWxlWSA9IGJhZGdlRGlt
ZW5zaW9uIC8gcGRmU2l6ZS5oZWlnaHQ7Ci0gICAgICAgIENHQ29udGV4dFNjYWxlQ1RNKGN0eCwg
c2NhbGVYLCBzY2FsZVkpOwotICAgICAgICBDR0NvbnRleHREcmF3UERGUGFnZShjdHgsIGxvZ28p
OwotICAgIH0KLQotICAgIENHQ29udGV4dEZsdXNoKGN0eCk7Ci0gICAgQ0dDb250ZXh0UmVzdG9y
ZUdTdGF0ZShjdHgpOworICAgIHBhaW50SW5mby5jb250ZXh0KCkuZHJhd1N5c3RlbUltYWdlKEFS
S2l0QmFkZ2VTeXN0ZW1JbWFnZTo6Y3JlYXRlKGltYWdlKSwgcmVjdCk7CiB9CiAjZW5kaWYKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3Bs
YXlMaXN0UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCmluZGV4IDlhMjM5ZTY0MjVmZDM5YzRiYzgxMzRm
NWQ1MTk1YmRkYTFkNmFkM2UuLmIyNWY2YTVhNmU0NjViMjI4NTk3NjM4Njc5NWI1NjRkOGY3ZDA4
ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVE
aXNwbGF5TGlzdFJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNp
ZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAKICNpbmNsdWRlICJSZW1vdGVEaXNwbGF5TGlzdFJlY29y
ZGVyTWVzc2FnZXMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0FSS2l0QmFkZ2VTeXN0ZW1JbWFnZS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvQml0bWFwSW1hZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Zp
bHRlclJlc3VsdHMuaD4KIApAQCAtMjg1LDYgKzI4NiwxNiBAQCB2b2lkIFJlbW90ZURpc3BsYXlM
aXN0UmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZVdpdGhRdWFsaWZpZWRJZGVudGlmaWVyKFF1YWxp
ZmllZAogCiB2b2lkIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OmRyYXdTeXN0ZW1JbWFnZShT
eXN0ZW1JbWFnZSYgc3lzdGVtSW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb25SZWN0
KQogeworICAgIGlmIChpczxBUktpdEJhZGdlU3lzdGVtSW1hZ2U+KHN5c3RlbUltYWdlKSkgewor
ICAgICAgICBBUktpdEJhZGdlU3lzdGVtSW1hZ2UmIGJhZGdlID0gZG93bmNhc3Q8QVJLaXRCYWRn
ZVN5c3RlbUltYWdlPihzeXN0ZW1JbWFnZSk7CisgICAgICAgIFJlZlB0ciBuYXRpdmVJbWFnZSA9
IHJlc291cmNlQ2FjaGUoKS5jYWNoZWROYXRpdmVJbWFnZSh7IGJhZGdlLmltYWdlSWRlbnRpZmll
cigpLCBtX3dlYlByb2Nlc3NJZGVudGlmaWVyIH0pOworICAgICAgICBpZiAoIW5hdGl2ZUltYWdl
KSB7CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorICAgICAgICBiYWRnZS5zZXRJbWFnZShCaXRtYXBJbWFnZTo6Y3JlYXRl
KFdURk1vdmUobmF0aXZlSW1hZ2UpKSk7CisgICAgfQorCiAgICAgaGFuZGxlSXRlbShEaXNwbGF5
TGlzdDo6RHJhd1N5c3RlbUltYWdlKHN5c3RlbUltYWdlLCBkZXN0aW5hdGlvblJlY3QpKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5k
ZXggZGViMDhlNDMxMjJjYzZmNzZkYWMwZjQ0MWU1NjhjNDY2NTVkMmQ0MS4uNTE2YmRiNDU3ZTNj
NDU2MzNkNjNlMWY3YWE4YzIzZmQ2NjQyYmU0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAi
U3RyZWFtQ29ubmVjdGlvbkVuY29kZXIuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9HZW5l
cmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9BUktpdEJh
ZGdlU3lzdGVtSW1hZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0FwcGxlUGF5QnV0dG9uU3lzdGVt
SW1hZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0FwcGxlUGF5TG9nb1N5c3RlbUltYWdlLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oPgpAQCAtMzE3Miw2ICsz
MTczLDExIEBAIHZvaWQgQXJndW1lbnRDb2RlcjxSZWY8U3lzdGVtSW1hZ2U+Pjo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIsIGNvbnN0IFJlZjxTeXN0ZW1JCiAgICAgY2FzZSBTeXN0ZW1JbWFnZVR5
cGU6OkFwcGxlUGF5TG9nbzoKICAgICAgICAgZG93bmNhc3Q8QXBwbGVQYXlMb2dvU3lzdGVtSW1h
Z2U+KHN5c3RlbUltYWdlLmdldCgpKS5lbmNvZGUoZW5jb2Rlcik7CiAgICAgICAgIHJldHVybjsK
KyNlbmRpZgorI2lmIFVTRShTWVNURU1fUFJFVklFVykKKyAgICBjYXNlIFN5c3RlbUltYWdlVHlw
ZTo6QVJLaXRCYWRnZToKKyAgICAgICAgZG93bmNhc3Q8QVJLaXRCYWRnZVN5c3RlbUltYWdlPihz
eXN0ZW1JbWFnZS5nZXQoKSkuZW5jb2RlKGVuY29kZXIpOworICAgICAgICByZXR1cm47CiAjZW5k
aWYKICAgICB9CiAKQEAgLTMxOTcsNiArMzIwMywxMCBAQCBzdGQ6Om9wdGlvbmFsPFJlZjxTeXN0
ZW1JbWFnZT4+IEFyZ3VtZW50Q29kZXI8UmVmPFN5c3RlbUltYWdlPj46OmRlY29kZShEZWNvZGVy
JgogCiAgICAgY2FzZSBTeXN0ZW1JbWFnZVR5cGU6OkFwcGxlUGF5TG9nbzoKICAgICAgICAgcmV0
dXJuIEFwcGxlUGF5TG9nb1N5c3RlbUltYWdlOjpkZWNvZGUoZGVjb2Rlcik7CisjZW5kaWYKKyNp
ZiBVU0UoU1lTVEVNX1BSRVZJRVcpCisgICAgY2FzZSBTeXN0ZW1JbWFnZVR5cGU6OkFSS2l0QmFk
Z2U6CisgICAgICAgIHJldHVybiBBUktpdEJhZGdlU3lzdGVtSW1hZ2U6OmRlY29kZShkZWNvZGVy
KTsKICNlbmRpZgogICAgIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDM1OGUyYzNhMGVlNTUxNzI4MGEyNGJiZWQxN2Vk
ZGYwMTJhODY4MTMuLjE1YWRmM2YzOGExY2QzNWQ2ZGE0YmFhY2Y1MWIwMmQ3ODQxNDZhNWQgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMi0wMy0yMyAgQW50b2luZSBRdWludCAgPGdyYW91dHNA
d2Via2l0Lm9yZz4KKworICAgICAgICBET00gR1BVUDogcGFpbnRTeXN0ZW1QcmV2aWV3QmFkZ2Ug
KEFSIFF1aWNrTG9vayBlbGVtZW50IGJhZGdlKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4Mjk1CisgICAgICAgIHJkYXI6Ly84MzU4MDYwOAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBzeXN0ZW0t
cHJldmlldy9iYWRnZS5odG1sIHRlc3Qgbm93IHBhc3NlcyByZWxpYWJseSB3aXRoIERPTSBHUFVQ
IGVuYWJsZWQsCisgICAgICAgIHdoaWNoIGluY2lkZW50YWxseSBmaXhlcyBidWcgMjM2OTIyLgor
CisgICAgICAgICogcGxhdGZvcm0vaW9zLXdrMi9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDIyLTAz
LTIzICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtp
T1NdIE1haWwgY29tcG9zZSB3ZWIgdmlldyBubyBsb25nZXIgc2Nyb2xscyB0byByZXZlYWwgc2Vs
ZWN0aW9uIHVwb24gc2hvd2luZyB0aGUga2V5Ym9hcmQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2lvcy13azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2lvcy13azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAyZTk4ZTE1ODdlOTJkYTgxYjRlNTk4ODM3
ZThkMTBlNTg4OGYzYWYzLi4zMzYyM2Q1YjY0ODRkMTg2NmEyY2E3ZThiNTZiMTgxNmJlMjFlY2M2
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2syL1Rlc3RFeHBlY3RhdGlv
bnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdrMi9UZXN0RXhwZWN0YXRpb25zCkBA
IC0yMjU5LDkgKzIyNTksNiBAQCB3ZWJraXQub3JnL2IvMjM2OTIxIGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy13cml0aW5nLW1vZGVzL3RleHQtcwogd2Via2l0Lm9yZy9i
LzIzNjkyMSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mtd3JpdGluZy1t
b2Rlcy92ZXJ0aWNhbC1hbGlnbm1lbnQtdmxyLTAyMy54aHQgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
IHdlYmtpdC5vcmcvYi8yMzY5MjEgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLXdyaXRpbmctbW9kZXMvdmVydGljYWwtYWxpZ25tZW50LXZybC0wMjIueGh0IFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCiAKLSMgQ29sb3JzIGFyZSBzaWduaWZpY2FudGx5IGRpZmZlcmVudCBlbm91
Z2gKLXdlYmtpdC5vcmcvYi8yMzY5MjIgc3lzdGVtLXByZXZpZXcvYmFkZ2UuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQotCiAjIE5vL2JhZCBjb2xvcmVkIGJveGVzCiB3ZWJraXQub3JnL2IvMjM2
OTIzIGZhc3QvY3NzL3BhaW50LW9yZGVyLXNoYWRvdy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
CiB3ZWJraXQub3JnL2IvMjM2OTIzIGltcG9ydGVkL2JsaW5rL3N2Zy90ZXh0L29iYi1wYWludHNl
cnZlci5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCg==
</data>
<flag name="review"
          id="483606"
          type_id="1"
          status="+"
          setter="dino"
    />
    <flag name="commit-queue"
          id="483616"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455621</attachid>
            <date>2022-03-24 01:25:00 -0700</date>
            <delta_ts>2022-03-24 03:01:19 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-238295-20220324092459.patch</filename>
            <type>text/plain</type>
            <size>51868</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNzg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmZhNzFhMjI1NTUwYzRl
NDZmNTkyNjkzNDQxYjJlNWY5ZTMwNjRkNC4uZWNmMTFmZjRlMmZiZmJmY2EzZGY0NDQ1NGUwODc0
YTE2YjdlNmY2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDIyLTAzLTI0ICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgorCisgICAgICAgIERPTSBHUFVQOiBwYWlu
dFN5c3RlbVByZXZpZXdCYWRnZSAoQVIgUXVpY2tMb29rIGVsZW1lbnQgYmFkZ2UpCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgyOTUKKyAgICAgICAg
cmRhcjovLzgzNTgwNjA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGVhbiBKYWNrc29uLgorCisg
ICAgICAgIEFkZCBhIG5ldyBTeXN0ZW1JbWFnZSBzdWJjbGFzcyB0byBkZWFsIHdpdGggdGhlIEFS
S2l0IGJhZGdlLCBtb3ZpbmcgdGhlIGN1c3RvbSBkcmF3aW5nIGNvZGUgdW5kZXIKKyAgICAgICAg
UmVuZGVyVGhlbWVJT1M6OnBhaW50U3lzdGVtUHJldmlld0JhZGdlKCkgdG8gQVJLaXRCYWRnZVN5
c3RlbUltYWdlOjpkcmF3KCkuCisKKyAgICAgICAgVG8gZmFjaWxpdGF0ZSB0aGlzLCB3ZSBtdXN0
IGFsc28gaGF2ZSBBUktpdEJhZGdlU3lzdGVtSW1hZ2Ugd3JhcCB0aGUgaW5wdXQgSW1hZ2UgcHJv
dmlkZWQgdG8KKyAgICAgICAgUmVuZGVyVGhlbWVJT1M6OnBhaW50U3lzdGVtUHJldmlld0JhZGdl
KCkgc28gdGhhdCB0aGUgQ29yZUltYWdlIGZpbHRlcnMgYXJlIGFwcGxpZWQgY29ycmVjdGx5Lgor
CisgICAgICAgIEZpbmFsbHksIHdlIHJlbW92ZSBzb21lIHVzZSBvZiBgdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmVgIGluIFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrIGFuZAorICAgICAgICBXZWJTcGVl
Y2hSZWNvZ25pemVyVGFza01vY2sgc2luY2UgaXQgY2F1c2VkIHNvbWUgdW5pZmllZCBidWlsZCBm
YWlsdXJlcy4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogTW9kdWxlcy9z
cGVlY2gvY29jb2EvV2ViU3BlZWNoUmVjb2duaXplclRhc2subW06CisgICAgICAgICgtW1dlYlNw
ZWVjaFJlY29nbml6ZXJUYXNrSW1wbCBpbml0V2l0aElkZW50aWZpZXI6bG9jYWxlOmRvTXVsdGlw
bGVSZWNvZ25pdGlvbnM6cmVwb3J0SW50ZXJpbVJlc3VsdHM6bWF4QWx0ZXJuYXRpdmVzOmRlbGVn
YXRlQ2FsbGJhY2s6XSk6CisgICAgICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrSW1wbCBj
YWxsYmFja1dpdGhUcmFuc2NyaXB0aW9uczppc0ZpbmFsOl0pOgorICAgICAgICAoLVtXZWJTcGVl
Y2hSZWNvZ25pemVyVGFza0ltcGwgc2VuZFNwZWVjaFN0YXJ0SWZOZWVkZWRdKToKKyAgICAgICAg
KC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2tJbXBsIHNlbmRTcGVlY2hFbmRJZk5lZWRlZF0pOgor
ICAgICAgICAoLVtXZWJTcGVlY2hSZWNvZ25pemVyVGFza0ltcGwgc2VuZEVuZElmTmVlZGVkXSk6
CisgICAgICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrSW1wbCBzcGVlY2hSZWNvZ25pemVy
OmF2YWlsYWJpbGl0eURpZENoYW5nZTpdKToKKyAgICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXpl
clRhc2tJbXBsIHNwZWVjaFJlY29nbml0aW9uVGFzazpkaWRGaW5pc2hTdWNjZXNzZnVsbHk6XSk6
CisgICAgICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrIGluaXRXaXRoSWRlbnRpZmllcjps
b2NhbGU6ZG9NdWx0aXBsZVJlY29nbml0aW9uczpyZXBvcnRJbnRlcmltUmVzdWx0czptYXhBbHRl
cm5hdGl2ZXM6ZGVsZWdhdGVDYWxsYmFjazpdKToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9j
b2NvYS9XZWJTcGVlY2hSZWNvZ25pemVyVGFza01vY2subW06CisgICAgICAgICgtW1dlYlNwZWVj
aFJlY29nbml6ZXJUYXNrTW9jayBpbml0V2l0aElkZW50aWZpZXI6bG9jYWxlOmRvTXVsdGlwbGVS
ZWNvZ25pdGlvbnM6cmVwb3J0SW50ZXJpbVJlc3VsdHM6bWF4QWx0ZXJuYXRpdmVzOmRlbGVnYXRl
Q2FsbGJhY2s6XSk6CisgICAgICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jayBhdWRp
b1NhbXBsZXNBdmFpbGFibGU6XSk6CisgICAgICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNr
TW9jayBhYm9ydF0pOgorICAgICAgICAqIE1vZHVsZXMvc3lzdGVtLXByZXZpZXcvQVJLaXRCYWRn
ZVN5c3RlbUltYWdlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QVJLaXRCYWRnZVN5c3Rl
bUltYWdlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVJLaXRCYWRnZVN5c3Rl
bUltYWdlOjpkZWNvZGUpOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKiBNb2R1bGVzL3N5
c3RlbS1wcmV2aWV3L0FSS2l0QmFkZ2VTeXN0ZW1JbWFnZS5tbTogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjphcktpdEJ1bmRsZSk6CisgICAgICAgIChXZWJDb3JlOjpsb2FkQVJLaXRQREZQYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OnN5c3RlbVByZXZpZXdMb2dvKToKKyAgICAgICAgKFdlYkNv
cmU6OkFSS2l0QmFkZ2VTeXN0ZW1JbWFnZTo6ZHJhdyBjb25zdCk6CisgICAgICAgICogU291cmNl
c0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU3lzdGVtSW1hZ2UuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmRyYXdTeXN0ZW1JbWFnZSk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLmg6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclRoZW1lSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6
OnBhaW50U3lzdGVtUHJldmlld0JhZGdlKToKKyAgICAgICAgKFdlYkNvcmU6OmFyS2l0QnVuZGxl
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmxvYWRBUktpdFBERlBhZ2UpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6c3lzdGVtUHJldmlld0xvZ28pOiBEZWxldGVkLgorCiAyMDIy
LTAzLTIzICBSb2IgQnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CiAKICAgICAgICAgc2V0TmVlZHNM
YXlvdXQoKSBzaG91bGQgbm90IGJlIGNhbGxlZCB3aGVuIGNoYW5naW5nIHRoZSBTVkcgcHJvcGVy
dGllcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCA0ZTM2NTFkNzA5NTliNzRhYWE2NjZmNTA2ZTQ2ZGJjY2Y2OGZlZmEy
Li5kNmM4OWVmYjg4YWE2NjAzNGU1ZGQ4NWJkMzFkZTVhNTc0NDdkZWZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE5IEBACisyMDIyLTAzLTI0ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQu
b3JnPgorCisgICAgICAgIERPTSBHUFVQOiBwYWludFN5c3RlbVByZXZpZXdCYWRnZSAoQVIgUXVp
Y2tMb29rIGVsZW1lbnQgYmFkZ2UpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzgyOTUKKyAgICAgICAgcmRhcjovLzgzNTgwNjA4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgRGVhbiBKYWNrc29uLgorCisgICAgICAgIE1ha2Ugc3VyZSB3ZSByZXN0b3Jl
IHRoZSBJbWFnZSBvbiB0aGUgQVJLaXRCYWRnZVN5c3RlbUltYWdlIGJlZm9yZSB3ZSBhdHRlbXB0
IHRvIGRyYXcgaXQuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3Bs
YXlMaXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVEaXNwbGF5TGlzdFJl
Y29yZGVyOjpkcmF3U3lzdGVtSW1hZ2UpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxTeXN0ZW1JbWFn
ZT4+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxTeXN0ZW1JbWFn
ZT4+OjpkZWNvZGUpOgorCiAyMDIyLTAzLTIzICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUu
Y29tPgogCiAgICAgICAgIEFkZCBsb2dnaW5nIGZvciBMb2NhbFN0b3JhZ2UgYW5kIEluZGV4ZWRE
QiBkYXRhIG1pZ3JhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFr
ZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggNDBlMTVlYjFkN2M2MzZhNmFm
OGVmZmJmYTBhYzQ0OGM3OTVmZWE2Ny4uM2UwNzUyZDMzZDU5MWRlMGFmOTBhNDY0ODczM2VmMmRl
ZDVlYjViOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9T
b3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0zMzEsNiArMzMxLDggQEAgc2V0KFdlYkNv
cmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJs
ZVN0cmVhbVNpbmsuaAogICAgIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNvdXJjZS5o
CiAKKyAgICBNb2R1bGVzL3N5c3RlbS1wcmV2aWV3L0FSS2l0QmFkZ2VTeXN0ZW1JbWFnZS5oCisK
ICAgICBNb2R1bGVzL3dlYi1sb2Nrcy9XZWJMb2NrSWRlbnRpZmllci5oCiAgICAgTW9kdWxlcy93
ZWItbG9ja3MvV2ViTG9ja01hbmFnZXJTbmFwc2hvdC5oCiAgICAgTW9kdWxlcy93ZWItbG9ja3Mv
V2ViTG9ja01vZGUuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gv
Y29jb2EvV2ViU3BlZWNoUmVjb2duaXplclRhc2subW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25pemVyVGFzay5tbQppbmRleCBiNjIyOTkwOGU3
NGFjMDI3OTlkNzc0MmIxNDMyOWZkMzNkYzQ3NmE5Li5hOTQxZDc2YTRmNzQ4NzE4ZGYxZTNjZmYy
YTZjNWUwODI3ZjQ4ODkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVj
aC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25pemVyVGFzay5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25pemVyVGFzay5tbQpAQCAtMzcsMTQg
KzM3LDEyIEBACiAvLyBTZXQgdGhlIG1heGltdW0gZHVyYXRpb24gdG8gYmUgYW4gaG91cjsgd2Ug
Y2FuIGFkanVzdCB0aGlzIGlmIG5lZWRlZC4KIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1heGlt
dW1SZWNvZ25pdGlvbkR1cmF0aW9uID0gNjAgKiA2MDsKIAotdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7Ci0KIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAKIEBpbnRlcmZhY2UgV2ViU3BlZWNoUmVj
b2duaXplclRhc2tJbXBsIDogTlNPYmplY3Q8U0ZTcGVlY2hSZWNvZ25pdGlvblRhc2tEZWxlZ2F0
ZSwgU0ZTcGVlY2hSZWNvZ25pemVyRGVsZWdhdGU+IHsKIEBwcml2YXRlCi0gICAgU3BlZWNoUmVj
b2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBfaWRlbnRpZmllcjsKLSAgICBCbG9j
a1B0cjx2b2lkKGNvbnN0IFNwZWVjaFJlY29nbml0aW9uVXBkYXRlJik+IF9kZWxlZ2F0ZUNhbGxi
YWNrOworICAgIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50
aWZpZXIgX2lkZW50aWZpZXI7CisgICAgQmxvY2tQdHI8dm9pZChjb25zdCBXZWJDb3JlOjpTcGVl
Y2hSZWNvZ25pdGlvblVwZGF0ZSYpPiBfZGVsZWdhdGVDYWxsYmFjazsKICAgICBib29sIF9kb011
bHRpcGxlUmVjb2duaXRpb25zOwogICAgIHVpbnQ2NF90IF9tYXhBbHRlcm5hdGl2ZXM7CiAgICAg
UmV0YWluUHRyPFNGU3BlZWNoUmVjb2duaXplcj4gX3JlY29nbml6ZXI7CkBAIC01NSw3ICs1Myw3
IEBAIEBwcml2YXRlCiAgICAgYm9vbCBfaGFzU2VudEVuZDsKIH0KIAotLSAoaW5zdGFuY2V0eXBl
KWluaXRXaXRoSWRlbnRpZmllcjooU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRl
bnRpZmllcilpZGVudGlmaWVyIGxvY2FsZTooTlNTdHJpbmcqKWxvY2FsZUlkZW50aWZpZXIgZG9N
dWx0aXBsZVJlY29nbml0aW9uczooQk9PTCljb250aW51b3VzIHJlcG9ydEludGVyaW1SZXN1bHRz
OihCT09MKWludGVyaW1SZXN1bHRzIG1heEFsdGVybmF0aXZlczoodW5zaWduZWQgbG9uZylhbHRl
cm5hdGl2ZXMgZGVsZWdhdGVDYWxsYmFjazoodm9pZCheKShjb25zdCBTcGVlY2hSZWNvZ25pdGlv
blVwZGF0ZSYpKWNhbGxiYWNrOworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSWRlbnRpZmllcjoo
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcilpZGVu
dGlmaWVyIGxvY2FsZTooTlNTdHJpbmcqKWxvY2FsZUlkZW50aWZpZXIgZG9NdWx0aXBsZVJlY29n
bml0aW9uczooQk9PTCljb250aW51b3VzIHJlcG9ydEludGVyaW1SZXN1bHRzOihCT09MKWludGVy
aW1SZXN1bHRzIG1heEFsdGVybmF0aXZlczoodW5zaWduZWQgbG9uZylhbHRlcm5hdGl2ZXMgZGVs
ZWdhdGVDYWxsYmFjazoodm9pZCheKShjb25zdCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVw
ZGF0ZSYpKWNhbGxiYWNrOwogLSAodm9pZCljYWxsYmFja1dpdGhUcmFuc2NyaXB0aW9uczooTlNB
cnJheTxTRlRyYW5zY3JpcHRpb24gKj4gKil0cmFuc2NyaXB0aW9ucyBpc0ZpbmFsOihCT09MKWlz
RmluYWw7CiAtICh2b2lkKWF1ZGlvU2FtcGxlc0F2YWlsYWJsZTooQ01TYW1wbGVCdWZmZXJSZWYp
c2FtcGxlQnVmZmVyOwogLSAodm9pZClhYm9ydDsKQEAgLTY4LDcgKzY2LDcgQEAgQGVuZAogCiBA
aW1wbGVtZW50YXRpb24gV2ViU3BlZWNoUmVjb2duaXplclRhc2tJbXBsCiAKLS0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aElkZW50aWZpZXI6KFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVu
dElkZW50aWZpZXIpaWRlbnRpZmllciBsb2NhbGU6KE5TU3RyaW5nKilsb2NhbGVJZGVudGlmaWVy
IGRvTXVsdGlwbGVSZWNvZ25pdGlvbnM6KEJPT0wpY29udGludW91cyByZXBvcnRJbnRlcmltUmVz
dWx0czooQk9PTClpbnRlcmltUmVzdWx0cyBtYXhBbHRlcm5hdGl2ZXM6KHVuc2lnbmVkIGxvbmcp
YWx0ZXJuYXRpdmVzIGRlbGVnYXRlQ2FsbGJhY2s6KHZvaWQoXikoY29uc3QgU3BlZWNoUmVjb2du
aXRpb25VcGRhdGUmKSljYWxsYmFjaworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSWRlbnRpZmll
cjooV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcilp
ZGVudGlmaWVyIGxvY2FsZTooTlNTdHJpbmcqKWxvY2FsZUlkZW50aWZpZXIgZG9NdWx0aXBsZVJl
Y29nbml0aW9uczooQk9PTCljb250aW51b3VzIHJlcG9ydEludGVyaW1SZXN1bHRzOihCT09MKWlu
dGVyaW1SZXN1bHRzIG1heEFsdGVybmF0aXZlczoodW5zaWduZWQgbG9uZylhbHRlcm5hdGl2ZXMg
ZGVsZWdhdGVDYWxsYmFjazoodm9pZCheKShjb25zdCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
blVwZGF0ZSYpKWNhbGxiYWNrCiB7CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAg
ICAgICAgIHJldHVybiBuaWw7CkBAIC0xMTUsNyArMTEzLDcgQEAgLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoSWRlbnRpZmllcjooU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRp
ZmllcikKIAogLSAodm9pZCljYWxsYmFja1dpdGhUcmFuc2NyaXB0aW9uczooTlNBcnJheTxTRlRy
YW5zY3JpcHRpb24gKj4gKil0cmFuc2NyaXB0aW9ucyBpc0ZpbmFsOihCT09MKWlzRmluYWwKIHsK
LSAgICBWZWN0b3I8U3BlZWNoUmVjb2duaXRpb25BbHRlcm5hdGl2ZURhdGE+IGFsdGVybmF0aXZl
czsKKyAgICBWZWN0b3I8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25BbHRlcm5hdGl2ZURhdGE+
IGFsdGVybmF0aXZlczsKICAgICBhbHRlcm5hdGl2ZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShf
bWF4QWx0ZXJuYXRpdmVzKTsKICAgICBmb3IgKFNGVHJhbnNjcmlwdGlvbiogdHJhbnNjcmlwdGlv
biBpbiB0cmFuc2NyaXB0aW9ucykgewogICAgICAgICAvLyBGSVhNRTogPHJkYXI6Ly83MzYyOTU3
Mz4gZ2V0IGNvbmZpZGVuY2Ugb2YgU0ZUcmFuc2NyaXB0aW9uIHdoZW4gcG9zc2libGUuCkBAIC0x
MjQsMTEgKzEyMiwxMSBAQCAtICh2b2lkKWNhbGxiYWNrV2l0aFRyYW5zY3JpcHRpb25zOihOU0Fy
cmF5PFNGVHJhbnNjcmlwdGlvbiAqPiAqKXRyYW5zY3JpcHRpb25zCiAgICAgICAgICAgICBkb3Vi
bGUgY29uZmlkZW5jZSA9IFtzZWdtZW50IGNvbmZpZGVuY2VdOwogICAgICAgICAgICAgbWF4Q29u
ZmlkZW5jZSA9IG1heENvbmZpZGVuY2UgPCBjb25maWRlbmNlID8gY29uZmlkZW5jZSA6IG1heENv
bmZpZGVuY2U7CiAgICAgICAgIH0KLSAgICAgICAgYWx0ZXJuYXRpdmVzLnVuY2hlY2tlZEFwcGVu
ZChTcGVlY2hSZWNvZ25pdGlvbkFsdGVybmF0aXZlRGF0YSB7IFt0cmFuc2NyaXB0aW9uIGZvcm1h
dHRlZFN0cmluZ10sIG1heENvbmZpZGVuY2UgfSk7CisgICAgICAgIGFsdGVybmF0aXZlcy51bmNo
ZWNrZWRBcHBlbmQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25BbHRlcm5hdGl2ZURhdGEgeyBb
dHJhbnNjcmlwdGlvbiBmb3JtYXR0ZWRTdHJpbmddLCBtYXhDb25maWRlbmNlIH0pOwogICAgICAg
ICBpZiAoYWx0ZXJuYXRpdmVzLnNpemUoKSA9PSBfbWF4QWx0ZXJuYXRpdmVzKQogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgfQotICAgIF9kZWxlZ2F0ZUNhbGxiYWNrKFNwZWVjaFJlY29nbml0aW9u
VXBkYXRlOjpjcmVhdGVSZXN1bHQoX2lkZW50aWZpZXIsIHsgU3BlZWNoUmVjb2duaXRpb25SZXN1
bHREYXRhIHsgV1RGTW92ZShhbHRlcm5hdGl2ZXMpLCAhIWlzRmluYWwgfSB9KSk7CisgICAgX2Rl
bGVnYXRlQ2FsbGJhY2soV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZVJl
c3VsdChfaWRlbnRpZmllciwgeyBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlc3VsdERhdGEg
eyBXVEZNb3ZlKGFsdGVybmF0aXZlcyksICEhaXNGaW5hbCB9IH0pKTsKIH0KIAogLSAodm9pZClh
dWRpb1NhbXBsZXNBdmFpbGFibGU6KENNU2FtcGxlQnVmZmVyUmVmKXNhbXBsZUJ1ZmZlcgpAQCAt
MTc1LDcgKzE3Myw3IEBAIC0gKHZvaWQpc2VuZFNwZWVjaFN0YXJ0SWZOZWVkZWQKICAgICAgICAg
cmV0dXJuOwogCiAgICAgX2hhc1NlbnRTcGVlY2hTdGFydCA9IHRydWU7Ci0gICAgX2RlbGVnYXRl
Q2FsbGJhY2soU3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZShfaWRlbnRpZmllciwgU3Bl
ZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpTcGVlY2hTdGFydCkpOworICAgIF9kZWxlZ2F0ZUNh
bGxiYWNrKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUoX2lkZW50aWZp
ZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6U3BlZWNoU3RhcnQpKTsK
IH0KIAogLSAodm9pZClzZW5kU3BlZWNoRW5kSWZOZWVkZWQKQEAgLTE4NCw3ICsxODIsNyBAQCAt
ICh2b2lkKXNlbmRTcGVlY2hFbmRJZk5lZWRlZAogICAgICAgICByZXR1cm47CiAKICAgICBfaGFz
U2VudFNwZWVjaEVuZCA9IHRydWU7Ci0gICAgX2RlbGVnYXRlQ2FsbGJhY2soU3BlZWNoUmVjb2du
aXRpb25VcGRhdGU6OmNyZWF0ZShfaWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVU
eXBlOjpTcGVlY2hFbmQpKTsKKyAgICBfZGVsZWdhdGVDYWxsYmFjayhXZWJDb3JlOjpTcGVlY2hS
ZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKF9pZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pdGlvblVwZGF0ZVR5cGU6OlNwZWVjaEVuZCkpOwogfQogCiAtICh2b2lkKXNlbmRFbmRJZk5l
ZWRlZApAQCAtMTkzLDcgKzE5MSw3IEBAIC0gKHZvaWQpc2VuZEVuZElmTmVlZGVkCiAgICAgICAg
IHJldHVybjsKIAogICAgIF9oYXNTZW50RW5kID0gdHJ1ZTsKLSAgICBfZGVsZWdhdGVDYWxsYmFj
ayhTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKF9pZGVudGlmaWVyLCBTcGVlY2hSZWNv
Z25pdGlvblVwZGF0ZVR5cGU6OkVuZCkpOworICAgIF9kZWxlZ2F0ZUNhbGxiYWNrKFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUoX2lkZW50aWZpZXIsIFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RW5kKSk7CiB9CiAKICNwcmFnbWEgbWFyayBTRlNw
ZWVjaFJlY29nbml6ZXJEZWxlZ2F0ZQpAQCAtMjA1LDggKzIwMyw4IEBAIC0gKHZvaWQpc3BlZWNo
UmVjb2duaXplcjooU0ZTcGVlY2hSZWNvZ25pemVyICopc3BlZWNoUmVjb2duaXplciBhdmFpbGFi
aWxpdHlEaWRDCiAgICAgaWYgKGF2YWlsYWJsZSB8fCAhX3Rhc2spCiAgICAgICAgIHJldHVybjsK
IAotICAgIGF1dG8gZXJyb3IgPSBTcGVlY2hSZWNvZ25pdGlvbkVycm9yIHsgU3BlZWNoUmVjb2du
aXRpb25FcnJvclR5cGU6OlNlcnZpY2VOb3RBbGxvd2VkLCAiU3BlZWNoIHJlY29nbml0aW9uIHNl
cnZpY2UgYmVjb21lcyB1bmF2YWlsYWJsZSJfcyB9OwotICAgIF9kZWxlZ2F0ZUNhbGxiYWNrKFNw
ZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGVFcnJvcihfaWRlbnRpZmllciwgV1RGTW92ZShl
cnJvcikpKTsKKyAgICBhdXRvIGVycm9yID0gV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJv
ciB7IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3JUeXBlOjpTZXJ2aWNlTm90QWxsb3dl
ZCwgIlNwZWVjaCByZWNvZ25pdGlvbiBzZXJ2aWNlIGJlY29tZXMgdW5hdmFpbGFibGUiX3MgfTsK
KyAgICBfZGVsZWdhdGVDYWxsYmFjayhXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6
Y3JlYXRlRXJyb3IoX2lkZW50aWZpZXIsIFdURk1vdmUoZXJyb3IpKSk7CiB9CiAKICNwcmFnbWEg
bWFyayBTRlNwZWVjaFJlY29nbml0aW9uVGFza0RlbGVnYXRlCkBAIC0yNDMsOCArMjQxLDggQEAg
LSAodm9pZClzcGVlY2hSZWNvZ25pdGlvblRhc2s6KFNGU3BlZWNoUmVjb2duaXRpb25UYXNrICop
dGFzayBkaWRGaW5pc2hTdWNjZXNzZnUKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAg
ICAgaWYgKCFzdWNjZXNzZnVsbHkpIHsKLSAgICAgICAgYXV0byBlcnJvciA9IFNwZWVjaFJlY29n
bml0aW9uRXJyb3IgeyBTcGVlY2hSZWNvZ25pdGlvbkVycm9yVHlwZTo6QWJvcnRlZCwgdGFzay5l
cnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbiB9OwotICAgICAgICBfZGVsZWdhdGVDYWxsYmFjayhT
cGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlRXJyb3IoX2lkZW50aWZpZXIsIFdURk1vdmUo
ZXJyb3IpKSk7CisgICAgICAgIGF1dG8gZXJyb3IgPSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
bkVycm9yIHsgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvclR5cGU6OkFib3J0ZWQsIHRh
c2suZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24gfTsKKyAgICAgICAgX2RlbGVnYXRlQ2FsbGJh
Y2soV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZUVycm9yKF9pZGVudGlm
aWVyLCBXVEZNb3ZlKGVycm9yKSkpOwogICAgIH0KICAgICAKICAgICBbc2VsZiBzZW5kRW5kSWZO
ZWVkZWRdOwpAQCAtMjU0LDcgKzI1Miw3IEBAIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdlYlNw
ZWVjaFJlY29nbml6ZXJUYXNrCiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aElkZW50aWZpZXI6
KFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpaWRlbnRpZmllciBs
b2NhbGU6KE5TU3RyaW5nKilsb2NhbGVJZGVudGlmaWVyIGRvTXVsdGlwbGVSZWNvZ25pdGlvbnM6
KEJPT0wpY29udGludW91cyByZXBvcnRJbnRlcmltUmVzdWx0czooQk9PTClpbnRlcmltUmVzdWx0
cyBtYXhBbHRlcm5hdGl2ZXM6KHVuc2lnbmVkIGxvbmcpYWx0ZXJuYXRpdmVzIGRlbGVnYXRlQ2Fs
bGJhY2s6KHZvaWQoXikoY29uc3QgU3BlZWNoUmVjb2duaXRpb25VcGRhdGUmKSljYWxsYmFjawor
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSWRlbnRpZmllcjooV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcilpZGVudGlmaWVyIGxvY2FsZTooTlNTdHJp
bmcqKWxvY2FsZUlkZW50aWZpZXIgZG9NdWx0aXBsZVJlY29nbml0aW9uczooQk9PTCljb250aW51
b3VzIHJlcG9ydEludGVyaW1SZXN1bHRzOihCT09MKWludGVyaW1SZXN1bHRzIG1heEFsdGVybmF0
aXZlczoodW5zaWduZWQgbG9uZylhbHRlcm5hdGl2ZXMgZGVsZWdhdGVDYWxsYmFjazoodm9pZChe
KShjb25zdCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYpKWNhbGxiYWNrCiB7CiAg
ICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNv
Z25pemVyVGFza01vY2subW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9jb2NvYS9X
ZWJTcGVlY2hSZWNvZ25pemVyVGFza01vY2subW0KaW5kZXggYzcyNzU5Yjc2N2FhOTU4N2Q3Mzdl
YTQwMjlhMzE2N2Y4Yzk3ZjJlOC4uMmQzNDhlZDIwYzIxYjUxMDM0ODg3OWQ1YzI2M2ZjMGUzY2Zl
ZDg2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvY29jb2EvV2Vi
U3BlZWNoUmVjb2duaXplclRhc2tNb2NrLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
c3BlZWNoL2NvY29hL1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jay5tbQpAQCAtMjgsMTMgKzI4
LDExIEBACiAKICNpZiBIQVZFKFNQRUVDSFJFQ09HTklaRVIpCiAKLXVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwotCiBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogCiBAaW1wbGVtZW50YXRpb24gV2Vi
U3BlZWNoUmVjb2duaXplclRhc2tNb2NrCiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aElkZW50
aWZpZXI6KFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpaWRlbnRp
ZmllciBsb2NhbGU6KE5TU3RyaW5nKilsb2NhbGVJZGVudGlmaWVyIGRvTXVsdGlwbGVSZWNvZ25p
dGlvbnM6KEJPT0wpY29udGludW91cyByZXBvcnRJbnRlcmltUmVzdWx0czooQk9PTClpbnRlcmlt
UmVzdWx0cyBtYXhBbHRlcm5hdGl2ZXM6KHVuc2lnbmVkIGxvbmcpYWx0ZXJuYXRpdmVzIGRlbGVn
YXRlQ2FsbGJhY2s6KHZvaWQoXikoY29uc3QgU3BlZWNoUmVjb2duaXRpb25VcGRhdGUmKSljYWxs
YmFjaworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSWRlbnRpZmllcjooV2ViQ29yZTo6U3BlZWNo
UmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcilpZGVudGlmaWVyIGxvY2FsZToo
TlNTdHJpbmcqKWxvY2FsZUlkZW50aWZpZXIgZG9NdWx0aXBsZVJlY29nbml0aW9uczooQk9PTClj
b250aW51b3VzIHJlcG9ydEludGVyaW1SZXN1bHRzOihCT09MKWludGVyaW1SZXN1bHRzIG1heEFs
dGVybmF0aXZlczoodW5zaWduZWQgbG9uZylhbHRlcm5hdGl2ZXMgZGVsZWdhdGVDYWxsYmFjazoo
dm9pZCheKShjb25zdCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYpKWNhbGxiYWNr
CiB7CiAgICAgVU5VU0VEX1BBUkFNKGxvY2FsZUlkZW50aWZpZXIpOwogICAgIFVOVVNFRF9QQVJB
TShpbnRlcmltUmVzdWx0cyk7CkBAIC01OSwxMiArNTcsMTIgQEAgLSAodm9pZClhdWRpb1NhbXBs
ZXNBdmFpbGFibGU6KENNU2FtcGxlQnVmZmVyUmVmKXNhbXBsZUJ1ZmZlcgogICAgIAogICAgIGlm
ICghX2hhc1NlbnRTcGVlY2hTdGFydCkgewogICAgICAgICBfaGFzU2VudFNwZWVjaFN0YXJ0ID0g
dHJ1ZTsKLSAgICAgICAgX2RlbGVnYXRlQ2FsbGJhY2soU3BlZWNoUmVjb2duaXRpb25VcGRhdGU6
OmNyZWF0ZShfaWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpTcGVlY2hT
dGFydCkpOworICAgICAgICBfZGVsZWdhdGVDYWxsYmFjayhXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
dGlvblVwZGF0ZTo6Y3JlYXRlKF9pZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
blVwZGF0ZVR5cGU6OlNwZWVjaFN0YXJ0KSk7CiAgICAgfQogCiAgICAgLy8gRmFrZSBzb21lIHJl
Y29nbml0aW9uIHJlc3VsdHMuCi0gICAgU3BlZWNoUmVjb2duaXRpb25BbHRlcm5hdGl2ZURhdGEg
YWx0ZXJuYXRpdmUgeyAiVGVzdCIsIDEuMCB9OwotICAgIF9kZWxlZ2F0ZUNhbGxiYWNrKFNwZWVj
aFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGVSZXN1bHQoX2lkZW50aWZpZXIsIHsgU3BlZWNoUmVj
b2duaXRpb25SZXN1bHREYXRhIHsgeyBXVEZNb3ZlKGFsdGVybmF0aXZlKSB9LCB0cnVlIH0gfSkp
OworICAgIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQWx0ZXJuYXRpdmVEYXRhIGFsdGVybmF0
aXZlIHsgIlRlc3QiLCAxLjAgfTsKKyAgICBfZGVsZWdhdGVDYWxsYmFjayhXZWJDb3JlOjpTcGVl
Y2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlUmVzdWx0KF9pZGVudGlmaWVyLCB7IFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YSB7IHsgV1RGTW92ZShhbHRlcm5hdGl2ZSkgfSwg
dHJ1ZSB9IH0pKTsKIAogICAgIGlmICghX2RvTXVsdGlwbGVSZWNvZ25pdGlvbnMpCiAgICAgICAg
IFtzZWxmIGFib3J0XTsKQEAgLTc4LDEwICs3NiwxMCBAQCAtICh2b2lkKWFib3J0CiAKICAgICBp
ZiAoIV9oYXNTZW50U3BlZWNoRW5kICYmIF9oYXNTZW50U3BlZWNoU3RhcnQpIHsKICAgICAgICAg
X2hhc1NlbnRTcGVlY2hFbmQgPSB0cnVlOwotICAgICAgICBfZGVsZWdhdGVDYWxsYmFjayhTcGVl
Y2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKF9pZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlv
blVwZGF0ZVR5cGU6OlNwZWVjaEVuZCkpOworICAgICAgICBfZGVsZWdhdGVDYWxsYmFjayhXZWJD
b3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKF9pZGVudGlmaWVyLCBXZWJDb3Jl
OjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OlNwZWVjaEVuZCkpOwogICAgIH0KIAotICAg
IF9kZWxlZ2F0ZUNhbGxiYWNrKFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUoX2lkZW50
aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RW5kKSk7CisgICAgX2RlbGVnYXRl
Q2FsbGJhY2soV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZShfaWRlbnRp
ZmllciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpFbmQpKTsKIH0KIAog
LSAodm9pZClzdG9wCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N5c3RlbS1w
cmV2aWV3L0FSS2l0QmFkZ2VTeXN0ZW1JbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
eXN0ZW0tcHJldmlldy9BUktpdEJhZGdlU3lzdGVtSW1hZ2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hOTI3OWY4
ZDdhNTM1ODRhMDE1YmVjMWM0YjZjM2MzOWI1YjJjZmQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zeXN0ZW0tcHJldmlldy9BUktpdEJhZGdlU3lzdGVtSW1hZ2Uu
aApAQCAtMCwwICsxLDExNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNF
KFNZU1RFTV9QUkVWSUVXKQorCisjaW5jbHVkZSAiTmF0aXZlSW1hZ2UuaCIKKyNpbmNsdWRlICJT
eXN0ZW1JbWFnZS5oIgorI2luY2x1ZGUgPG9wdGlvbmFsPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworT0JK
Q19DTEFTUyBDSUNvbnRleHQ7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgV0VCQ09S
RV9FWFBPUlQgQVJLaXRCYWRnZVN5c3RlbUltYWdlIGZpbmFsIDogcHVibGljIFN5c3RlbUltYWdl
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPEFSS2l0QmFkZ2VTeXN0ZW1JbWFnZT4gY3JlYXRl
KEltYWdlJiBpbWFnZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFSS2l0
QmFkZ2VTeXN0ZW1JbWFnZShpbWFnZSkpOworICAgIH0KKworICAgIHN0YXRpYyBSZWY8QVJLaXRC
YWRnZVN5c3RlbUltYWdlPiBjcmVhdGUoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciwgRmxvYXRTaXplIHNpemUpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBBUktpdEJhZGdlU3lzdGVtSW1hZ2UocmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyLCBzaXplKSk7CisgICAgfQorCisgICAgdmlydHVhbCB+QVJLaXRCYWRnZVN5
c3RlbUltYWdlKCkgPSBkZWZhdWx0OworCisgICAgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYpIGNvbnN0IGZpbmFsOworCisgICAgSW1hZ2UqIGltYWdlKCkgY29u
c3QgeyByZXR1cm4gbV9pbWFnZS5nZXQoKTsgfQorICAgIHZvaWQgc2V0SW1hZ2UoSW1hZ2UmIGlt
YWdlKSB7IG1faW1hZ2UgPSAmaW1hZ2U7IH0KKworICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciBpbWFnZUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcjsgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUo
RW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPFJlZjxBUktpdEJhZGdlU3lzdGVtSW1hZ2U+PiBkZWNvZGUoRGVjb2RlciYpOwor
Citwcml2YXRlOgorICAgIEFSS2l0QmFkZ2VTeXN0ZW1JbWFnZShJbWFnZSYgaW1hZ2UpCisgICAg
ICAgIDogU3lzdGVtSW1hZ2UoU3lzdGVtSW1hZ2VUeXBlOjpBUktpdEJhZGdlKQorICAgICAgICAs
IG1faW1hZ2UoJmltYWdlKQorICAgICAgICAsIG1faW1hZ2VTaXplKGltYWdlLnNpemUoKSkKKyAg
ICB7CisgICAgfQorCisgICAgQVJLaXRCYWRnZVN5c3RlbUltYWdlKFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIEZsb2F0U2l6ZSBzaXplKQor
ICAgICAgICA6IFN5c3RlbUltYWdlKFN5c3RlbUltYWdlVHlwZTo6QVJLaXRCYWRnZSkKKyAgICAg
ICAgLCBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcihyZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpCisgICAgICAgICwgbV9pbWFnZVNpemUoc2l6ZSkKKyAgICB7CisgICAgfQorCisgICAg
UmVmUHRyPEltYWdlPiBtX2ltYWdlOworICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBt
X3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsKKyAgICBGbG9hdFNpemUgbV9pbWFnZVNpemU7
Cit9OworCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBBUktpdEJhZGdlU3lzdGVtSW1h
Z2U6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIEFTU0VSVChtX2ltYWdl
KTsKKyAgICBBU1NFUlQobV9pbWFnZS0+bmF0aXZlSW1hZ2UoKSk7CisgICAgZW5jb2RlciA8PCBt
X2ltYWdlLT5uYXRpdmVJbWFnZSgpLT5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKTsKKyAg
ICBlbmNvZGVyIDw8IG1faW1hZ2VTaXplOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgor
c3RkOjpvcHRpb25hbDxSZWY8QVJLaXRCYWRnZVN5c3RlbUltYWdlPj4gQVJLaXRCYWRnZVN5c3Rl
bUltYWdlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOwor
ICAgIGRlY29kZXIgPj4gcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOworICAgIGlmICghcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFNpemU+IGltYWdlU2l6ZTsKKyAgICBkZWNvZGVyID4+
IGltYWdlU2l6ZTsKKyAgICBpZiAoIWltYWdlU2l6ZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKworICAgIHJldHVybiBBUktpdEJhZGdlU3lzdGVtSW1hZ2U6OmNyZWF0ZShXVEZNb3Zl
KCpyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpLCBXVEZNb3ZlKCppbWFnZVNpemUpKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lO
KFdlYkNvcmU6OkFSS2l0QmFkZ2VTeXN0ZW1JbWFnZSkKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUo
Y29uc3QgV2ViQ29yZTo6U3lzdGVtSW1hZ2UmIHN5c3RlbUltYWdlKSB7IHJldHVybiBzeXN0ZW1J
bWFnZS5zeXN0ZW1JbWFnZVR5cGUoKSA9PSBXZWJDb3JlOjpTeXN0ZW1JbWFnZVR5cGU6OkFSS2l0
QmFkZ2U7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKworI2VuZGlmIC8vIFVTRShT
WVNURU1fUFJFVklFVykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3lzdGVt
LXByZXZpZXcvQVJLaXRCYWRnZVN5c3RlbUltYWdlLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zeXN0ZW0tcHJldmlldy9BUktpdEJhZGdlU3lzdGVtSW1hZ2UubW0KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWFi
NTI2NTdmYmI1MjYyMjhjMzAwYzQ1ODU5ZGJjZjIxODExNGM2MQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3lzdGVtLXByZXZpZXcvQVJLaXRCYWRnZVN5c3RlbUlt
YWdlLm1tCkBAIC0wLDAgKzEsMjI3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgi
CisjaW1wb3J0ICJBUktpdEJhZGdlU3lzdGVtSW1hZ2UuaCIKKworI2lmIFVTRShTWVNURU1fUFJF
VklFVykKKworI2ltcG9ydCAiQ29sb3JTcGFjZUNHLmgiCisjaW1wb3J0ICJGbG9hdFJlY3QuaCIK
KyNpbXBvcnQgIkdlb21ldHJ5VXRpbGl0aWVzLmgiCisjaW1wb3J0ICJHcmFwaGljc0NvbnRleHQu
aCIKKyNpbXBvcnQgIklPU3VyZmFjZS5oIgorI2ltcG9ydCA8Q29yZUdyYXBoaWNzL0NvcmVHcmFw
aGljcy5oPgorI2ltcG9ydCA8Q29yZUltYWdlL0NvcmVJbWFnZS5oPgorI2ltcG9ydCA8d3RmL05l
dmVyRGVzdHJveWVkLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworc3RhdGljIE5TQnVuZGxlICphcktpdEJ1bmRsZSgpCit7CisgICAgc3RhdGlj
IE5TQnVuZGxlICphcktpdEJ1bmRsZTsKKyAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VU
b2tlbjsKKyAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57CisgICAgICAgIGFyS2l0QnVu
ZGxlID0gW10oKSB7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWV9TSU1VTEFUT1IpCisgICAgICAg
ICAgICBkbG9wZW4oIi9TeXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy9Bc3NldFZpZXdl
ci5mcmFtZXdvcmsvQXNzZXRWaWV3ZXIiLCBSVExEX05PVyk7CisgICAgICAgICAgICByZXR1cm4g
W05TQnVuZGxlIGJ1bmRsZUZvckNsYXNzOk5TQ2xhc3NGcm9tU3RyaW5nKEAiQVNWVGh1bWJuYWls
VmlldyIpXTsKKyNlbHNlCisgICAgICAgICAgICByZXR1cm4gW05TQnVuZGxlIGJ1bmRsZVdpdGhV
Ukw6W05TVVJMIGZpbGVVUkxXaXRoUGF0aDpAIi9TeXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3
b3Jrcy9Bc3NldFZpZXdlci5mcmFtZXdvcmsiXV07CisjZW5kaWYKKyAgICAgICAgfSgpOworICAg
IH0pOworICAgIHJldHVybiBhcktpdEJ1bmRsZTsKK30KKworc3RhdGljIFJldGFpblB0cjxDR1BE
RlBhZ2VSZWY+IGxvYWRBUktpdFBERlBhZ2UoTlNTdHJpbmcgKmltYWdlTmFtZSkKK3sKKyAgICBO
U1VSTCAqdXJsID0gW2FyS2l0QnVuZGxlKCkgVVJMRm9yUmVzb3VyY2U6aW1hZ2VOYW1lIHdpdGhF
eHRlbnNpb246QCJwZGYiXTsKKyAgICBpZiAoIXVybCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgYXV0byBkb2N1bWVudCA9IGFkb3B0Q0YoQ0dQREZEb2N1bWVudENyZWF0ZVdpdGhVUkwo
KENGVVJMUmVmKXVybCkpOworICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIGlmICghQ0dQREZEb2N1bWVudEdldE51bWJlck9mUGFnZXMoZG9jdW1lbnQuZ2V0
KCkpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gQ0dQREZEb2N1bWVudEdl
dFBhZ2UoZG9jdW1lbnQuZ2V0KCksIDEpOworfQorCitzdGF0aWMgUmV0YWluUHRyPENHUERGUGFn
ZVJlZj4gc3lzdGVtUHJldmlld0xvZ28oKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxS
ZXRhaW5QdHI8Q0dQREZQYWdlUmVmPj4gbG9nb1BhZ2U7CisgICAgc3RhdGljIGRpc3BhdGNoX29u
Y2VfdCBvbmNlVG9rZW47CisgICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeeworICAgICAg
ICBsb2dvUGFnZS5nZXQoKSA9IGxvYWRBUktpdFBERlBhZ2UoQCJBUktpdEJhZGdlIik7CisgICAg
fSk7CisgICAgcmV0dXJuIGxvZ29QYWdlOworfQorCit2b2lkIEFSS2l0QmFkZ2VTeXN0ZW1JbWFn
ZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiByZWN0KSBjb25zdAoreworICAgIGF1dG8gcGFnZSA9IHN5c3RlbVByZXZpZXdMb2dvKCk7Cisg
ICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBzdGF0aWMgY29uc3QgaW50IGxh
cmdlQmFkZ2VEaW1lbnNpb24gPSA3MDsKKyAgICBzdGF0aWMgY29uc3QgaW50IGxhcmdlQmFkZ2VP
ZmZzZXQgPSAyMDsKKworICAgIHN0YXRpYyBjb25zdCBpbnQgc21hbGxCYWRnZURpbWVuc2lvbiA9
IDM1OworICAgIHN0YXRpYyBjb25zdCBpbnQgc21hbGxCYWRnZU9mZnNldCA9IDg7CisKKyAgICBz
dGF0aWMgY29uc3QgaW50IG1pbmltdW1TaXplRm9yTGFyZ2VCYWRnZSA9IDI0MDsKKworICAgIGJv
b2wgdXNlU21hbGxCYWRnZSA9IHJlY3Qud2lkdGgoKSA8IG1pbmltdW1TaXplRm9yTGFyZ2VCYWRn
ZSB8fCByZWN0LmhlaWdodCgpIDwgbWluaW11bVNpemVGb3JMYXJnZUJhZGdlOworICAgIGludCBi
YWRnZU9mZnNldCA9IHVzZVNtYWxsQmFkZ2UgPyBzbWFsbEJhZGdlT2Zmc2V0IDogbGFyZ2VCYWRn
ZU9mZnNldDsKKyAgICBpbnQgYmFkZ2VEaW1lbnNpb24gPSB1c2VTbWFsbEJhZGdlID8gc21hbGxC
YWRnZURpbWVuc2lvbiA6IGxhcmdlQmFkZ2VEaW1lbnNpb247CisKKyAgICBpbnQgbWluaW11bURp
bWVuc2lvbiA9IGJhZGdlRGltZW5zaW9uICsgMiAqIGJhZGdlT2Zmc2V0OworICAgIGlmIChyZWN0
LndpZHRoKCkgPCBtaW5pbXVtRGltZW5zaW9uIHx8IHJlY3QuaGVpZ2h0KCkgPCBtaW5pbXVtRGlt
ZW5zaW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBDR1JlY3QgYWJzb2x1dGVCYWRnZVJlY3Qg
PSBDR1JlY3RNYWtlKHJlY3QueCgpICsgcmVjdC53aWR0aCgpIC0gYmFkZ2VEaW1lbnNpb24gLSBi
YWRnZU9mZnNldCwgcmVjdC55KCkgKyBiYWRnZU9mZnNldCwgYmFkZ2VEaW1lbnNpb24sIGJhZGdl
RGltZW5zaW9uKTsKKyAgICBDR1JlY3QgaW5zZXRCYWRnZVJlY3QgPSBDR1JlY3RNYWtlKHJlY3Qu
d2lkdGgoKSAtIGJhZGdlRGltZW5zaW9uIC0gYmFkZ2VPZmZzZXQsIGJhZGdlT2Zmc2V0LCBiYWRn
ZURpbWVuc2lvbiwgYmFkZ2VEaW1lbnNpb24pOworICAgIENHUmVjdCBiYWRnZVJlY3QgPSBDR1Jl
Y3RNYWtlKDAsIDAsIGJhZGdlRGltZW5zaW9uLCBiYWRnZURpbWVuc2lvbik7CisKKyAgICBpZiAo
IW1faW1hZ2UgfHwgIW1faW1hZ2UtPm5hdGl2ZUltYWdlKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIENJSW1hZ2UgKmlucHV0SW1hZ2UgPSBbQ0lJbWFnZSBpbWFnZVdpdGhDR0ltYWdlOm1faW1h
Z2UtPm5hdGl2ZUltYWdlKCktPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKV07CisKKyAgICAvLyBDcmVh
dGUgYSBjaXJjbGUgdG8gYmUgdXNlZCBmb3IgdGhlIGNsaXBwaW5nIHBhdGggaW4gdGhlIGJhZGdl
LCBhcyB3ZWxsIGFzIHRoZSBkcm9wIHNoYWRvdy4KKyAgICBSZXRhaW5QdHI8Q0dQYXRoUmVmPiBj
aXJjbGUgPSBhZG9wdENGKENHUGF0aENyZWF0ZVdpdGhSb3VuZGVkUmVjdChhYnNvbHV0ZUJhZGdl
UmVjdCwgYmFkZ2VEaW1lbnNpb24gLyAyLCBiYWRnZURpbWVuc2lvbiAvIDIsIG51bGxwdHIpKTsK
KworICAgIGlmIChncmFwaGljc0NvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoZ3JhcGhp
Y3NDb250ZXh0KTsKKworICAgIENHQ29udGV4dFJlZiBjdHggPSBncmFwaGljc0NvbnRleHQucGxh
dGZvcm1Db250ZXh0KCk7CisgICAgaWYgKCFjdHgpCisgICAgICAgIHJldHVybjsKKworICAgIENH
Q29udGV4dFNhdmVHU3RhdGUoY3R4KTsKKworICAgIC8vIERyYXcgYSBkcm9wIHNoYWRvdyBhcm91
bmQgdGhlIGNpcmNsZS4KKyAgICAvLyBVc2UgdGhlIEdyYXBoaWNzQ29udGV4dCBmdW5jdGlvbiwg
YmVjYXVzZSBpdCBjYWxjdWxhdGVzIHRoZSBibHVyIHJhZGl1cyBpbiBjb250ZXh0IHNwYWNlLAor
ICAgIC8vIHJhdGhlciB0aGFuIHNjcmVlbiBzcGFjZS4KKyAgICBjb25zdGV4cHIgYXV0byBzaGFk
b3dDb2xvciA9IENvbG9yOjpibGFjay5jb2xvcldpdGhBbHBoYUJ5dGUoMjYpOworICAgIGdyYXBo
aWNzQ29udGV4dC5zZXRTaGFkb3coRmxvYXRTaXplIHsgfSwgMTYsIHNoYWRvd0NvbG9yKTsKKwor
ICAgIC8vIFRoZSBjaXJjbGUgbXVzdCBoYXZlIGFuIGFscGhhIGNoYW5uZWwgdmFsdWUgb2YgMSBm
b3IgdGhlIHNoYWRvdyBjb2xvciB0byBhcHBlYXIuCisgICAgQ0dGbG9hdCBjaXJjbGVDb2xvckNv
bXBvbmVudHNbNF0gPSB7IDAsIDAsIDAsIDEgfTsKKyAgICBSZXRhaW5QdHI8Q0dDb2xvclJlZj4g
Y2lyY2xlQ29sb3IgPSBhZG9wdENGKENHQ29sb3JDcmVhdGUoc1JHQkNvbG9yU3BhY2VSZWYoKSwg
Y2lyY2xlQ29sb3JDb21wb25lbnRzKSk7CisgICAgQ0dDb250ZXh0U2V0RmlsbENvbG9yV2l0aENv
bG9yKGN0eCwgY2lyY2xlQ29sb3IuZ2V0KCkpOworCisgICAgLy8gQ2xpcCBvdXQgdGhlIGNpcmNs
ZSB0byBvbmx5IHNob3cgdGhlIHNoYWRvdy4KKyAgICBDR0NvbnRleHRCZWdpblBhdGgoY3R4KTsK
KyAgICBDR0NvbnRleHRBZGRSZWN0KGN0eCwgcmVjdCk7CisgICAgQ0dDb250ZXh0QWRkUGF0aChj
dHgsIGNpcmNsZS5nZXQoKSk7CisgICAgQ0dDb250ZXh0Q2xvc2VQYXRoKGN0eCk7CisgICAgQ0dD
b250ZXh0RU9DbGlwKGN0eCk7CisKKyAgICAvLyBEcmF3IGEgc2xpZ2h0bHkgc21hbGxlciBjaXJj
bGUgd2l0aCBhIHNoYWRvdywgb3RoZXJ3aXNlIHdlJ2xsIHNlZSBhIGZyaW5nZSBvZiB0aGUgc29s
aWQKKyAgICAvLyBibGFjayBjaXJjbGUgYXJvdW5kIHRoZSBlZGdlcyBvZiB0aGUgY2xpcHBlZCBw
YXRoIGJlbG93LgorICAgIENHQ29udGV4dEJlZ2luUGF0aChjdHgpOworICAgIENHUmVjdCBzbGln
aHRseVNtYWxsZXJBYnNvbHV0ZUJhZGdlUmVjdCA9IENHUmVjdE1ha2UoYWJzb2x1dGVCYWRnZVJl
Y3Qub3JpZ2luLnggKyAwLjUsIGFic29sdXRlQmFkZ2VSZWN0Lm9yaWdpbi55ICsgMC41LCBiYWRn
ZURpbWVuc2lvbiAtIDEsIGJhZGdlRGltZW5zaW9uIC0gMSk7CisgICAgUmV0YWluUHRyPENHUGF0
aFJlZj4gc2xpZ2h0bHlTbWFsbGVyQ2lyY2xlID0gYWRvcHRDRihDR1BhdGhDcmVhdGVXaXRoUm91
bmRlZFJlY3Qoc2xpZ2h0bHlTbWFsbGVyQWJzb2x1dGVCYWRnZVJlY3QsIHNsaWdodGx5U21hbGxl
ckFic29sdXRlQmFkZ2VSZWN0LnNpemUud2lkdGggLyAyLCBzbGlnaHRseVNtYWxsZXJBYnNvbHV0
ZUJhZGdlUmVjdC5zaXplLmhlaWdodCAvIDIsIG51bGxwdHIpKTsKKyAgICBDR0NvbnRleHRBZGRQ
YXRoKGN0eCwgc2xpZ2h0bHlTbWFsbGVyQ2lyY2xlLmdldCgpKTsKKyAgICBDR0NvbnRleHRDbG9z
ZVBhdGgoY3R4KTsKKyAgICBDR0NvbnRleHRGaWxsUGF0aChjdHgpOworCisgICAgQ0dDb250ZXh0
UmVzdG9yZUdTdGF0ZShjdHgpOworCisgICAgLy8gRHJhdyB0aGUgYmx1cnJlZCBiYWNrZHJvcC4g
U2NhbGUgZnJvbSBpbnRyaW5zaWMgc2l6ZSB0byByZW5kZXIgc2l6ZS4KKyAgICBDR0FmZmluZVRy
YW5zZm9ybSB0cmFuc2Zvcm0gPSBDR0FmZmluZVRyYW5zZm9ybUlkZW50aXR5OworICAgIHRyYW5z
Zm9ybSA9IENHQWZmaW5lVHJhbnNmb3JtU2NhbGUodHJhbnNmb3JtLCByZWN0LndpZHRoKCkgLyBt
X2ltYWdlU2l6ZS53aWR0aCgpLCByZWN0LmhlaWdodCgpIC8gbV9pbWFnZVNpemUuaGVpZ2h0KCkp
OworICAgIENJSW1hZ2UgKnNjYWxlZEltYWdlID0gW2lucHV0SW1hZ2UgaW1hZ2VCeUFwcGx5aW5n
VHJhbnNmb3JtOnRyYW5zZm9ybV07CisKKyAgICAvLyBDb3JlSW1hZ2UgY29vcmRpbmF0ZXMgYXJl
IHktdXAsIHNvIHdlIG5lZWQgdG8gZmxpcCB0aGUgYmFkZ2UgcmVjdGFuZ2xlIHdpdGhpbiB0aGUg
aW1hZ2UgZnJhbWUuCisgICAgQ0dSZWN0IGZsaXBwZWRJbnNldEJhZGdlUmVjdCA9IENHUmVjdE1h
a2UoaW5zZXRCYWRnZVJlY3Qub3JpZ2luLngsIHJlY3QuaGVpZ2h0KCkgLSBpbnNldEJhZGdlUmVj
dC5vcmlnaW4ueSAtIGluc2V0QmFkZ2VSZWN0LnNpemUuaGVpZ2h0LCBiYWRnZURpbWVuc2lvbiwg
YmFkZ2VEaW1lbnNpb24pOworCisgICAgLy8gQ3JlYXRlIGEgY3JvcHBlZCByZWdpb24gd2l0aCBw
aXhlbCB2YWx1ZXMgZXh0ZW5kaW5nIG91dHdhcmRzLgorICAgIENJSW1hZ2UgKmNsYW1wZWRJbWFn
ZSA9IFtzY2FsZWRJbWFnZSBpbWFnZUJ5Q2xhbXBpbmdUb1JlY3Q6ZmxpcHBlZEluc2V0QmFkZ2VS
ZWN0XTsKKworICAgIC8vIEJsdXIuCisgICAgQ0lJbWFnZSAqYmx1cnJlZEltYWdlID0gW2NsYW1w
ZWRJbWFnZSBpbWFnZUJ5QXBwbHlpbmdHYXVzc2lhbkJsdXJXaXRoU2lnbWE6MTBdOworCisgICAg
Ly8gU2F0dXJhdGUuCisgICAgQ0lGaWx0ZXIgKnNhdHVyYXRpb25GaWx0ZXIgPSBbQ0lGaWx0ZXIg
ZmlsdGVyV2l0aE5hbWU6QCJDSUNvbG9yQ29udHJvbHMiXTsKKyAgICBbc2F0dXJhdGlvbkZpbHRl
ciBzZXRWYWx1ZTpibHVycmVkSW1hZ2UgZm9yS2V5OmtDSUlucHV0SW1hZ2VLZXldOworICAgIFtz
YXR1cmF0aW9uRmlsdGVyIHNldFZhbHVlOkAxLjggZm9yS2V5OmtDSUlucHV0U2F0dXJhdGlvbktl
eV07CisKKyAgICAvLyBUaW50LgorICAgIENJRmlsdGVyICp0aW50RmlsdGVyMSA9IFtDSUZpbHRl
ciBmaWx0ZXJXaXRoTmFtZTpAIkNJQ29uc3RhbnRDb2xvckdlbmVyYXRvciJdOworICAgIENJQ29s
b3IgKnRpbnRDb2xvcjEgPSBbQ0lDb2xvciBjb2xvcldpdGhSZWQ6MSBncmVlbjoxIGJsdWU6MSBh
bHBoYTowLjE4XTsKKyAgICBbdGludEZpbHRlcjEgc2V0VmFsdWU6dGludENvbG9yMSBmb3JLZXk6
a0NJSW5wdXRDb2xvcktleV07CisKKyAgICAvLyBCbGVuZCB0aGUgdGludCB3aXRoIHRoZSBzYXR1
cmF0ZWQgb3V0cHV0LgorICAgIENJRmlsdGVyICpzb3VyY2VPdmVyRmlsdGVyID0gW0NJRmlsdGVy
IGZpbHRlcldpdGhOYW1lOkAiQ0lTb3VyY2VPdmVyQ29tcG9zaXRpbmciXTsKKyAgICBbc291cmNl
T3ZlckZpbHRlciBzZXRWYWx1ZTp0aW50RmlsdGVyMS5vdXRwdXRJbWFnZSBmb3JLZXk6a0NJSW5w
dXRJbWFnZUtleV07CisgICAgW3NvdXJjZU92ZXJGaWx0ZXIgc2V0VmFsdWU6c2F0dXJhdGlvbkZp
bHRlci5vdXRwdXRJbWFnZSBmb3JLZXk6a0NJSW5wdXRCYWNrZ3JvdW5kSW1hZ2VLZXldOworCisg
ICAgUmV0YWluUHRyPENJQ29udGV4dD4gY2lDb250ZXh0ID0gW0NJQ29udGV4dCBjb250ZXh0XTsK
KworICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjZ0ltYWdlOworI2lmIEhBVkUoSU9TVVJGQUNF
X0NPUkVJTUFHRV9TVVBQT1JUKQorICAgIC8vIENyb3AgdGhlIHJlc3VsdCB0byB0aGUgYmFkZ2Ug
bG9jYXRpb24uCisgICAgQ0lJbWFnZSAqY3JvcHBlZEltYWdlID0gW3NvdXJjZU92ZXJGaWx0ZXIu
b3V0cHV0SW1hZ2UgaW1hZ2VCeUNyb3BwaW5nVG9SZWN0OmZsaXBwZWRJbnNldEJhZGdlUmVjdF07
CisgICAgQ0lJbWFnZSAqdHJhbnNsYXRlZEltYWdlID0gW2Nyb3BwZWRJbWFnZSBpbWFnZUJ5QXBw
bHlpbmdUcmFuc2Zvcm06Q0dBZmZpbmVUcmFuc2Zvcm1NYWtlVHJhbnNsYXRpb24oLWZsaXBwZWRJ
bnNldEJhZGdlUmVjdC5vcmlnaW4ueCwgLWZsaXBwZWRJbnNldEJhZGdlUmVjdC5vcmlnaW4ueSld
OworCisgICAgYXV0byBzdXJmYWNlRGltZW5zaW9uID0gdXNlU21hbGxCYWRnZSA/IHNtYWxsQmFk
Z2VEaW1lbnNpb24gOiBsYXJnZUJhZGdlRGltZW5zaW9uOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJ
T1N1cmZhY2U+IGJhZGdlU3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlKHsgc3VyZmFjZURpbWVu
c2lvbiwgc3VyZmFjZURpbWVuc2lvbiB9LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7
CisgICAgSU9TdXJmYWNlUmVmIHN1cmZhY2UgPSBiYWRnZVN1cmZhY2UtPnN1cmZhY2UoKTsKKyAg
ICBbY2lDb250ZXh0IHJlbmRlcjp0cmFuc2xhdGVkSW1hZ2UgdG9JT1N1cmZhY2U6c3VyZmFjZSBi
b3VuZHM6YmFkZ2VSZWN0IGNvbG9yU3BhY2U6c1JHQkNvbG9yU3BhY2VSZWYoKV07CisgICAgY2dJ
bWFnZSA9IHVzZVNtYWxsQmFkZ2UgPyBiYWRnZVN1cmZhY2UtPmNyZWF0ZUltYWdlKCkgOiBiYWRn
ZVN1cmZhY2UtPmNyZWF0ZUltYWdlKCk7CisjZWxzZQorICAgIGNnSW1hZ2UgPSBhZG9wdENGKFtj
aUNvbnRleHQgY3JlYXRlQ0dJbWFnZTpzb3VyY2VPdmVyRmlsdGVyLm91dHB1dEltYWdlIGZyb21S
ZWN0OmZsaXBwZWRJbnNldEJhZGdlUmVjdF0pOworI2VuZGlmCisKKyAgICAvLyBCZWZvcmUgd2Ug
cmVuZGVyIHRoZSByZXN1bHQsIHdlIHNob3VsZCBjbGlwIHRvIGEgY2lyY2xlIGFyb3VuZCB0aGUg
YmFkZ2UgcmVjdGFuZ2xlLgorICAgIENHQ29udGV4dFNhdmVHU3RhdGUoY3R4KTsKKyAgICBDR0Nv
bnRleHRCZWdpblBhdGgoY3R4KTsKKyAgICBDR0NvbnRleHRBZGRQYXRoKGN0eCwgY2lyY2xlLmdl
dCgpKTsKKyAgICBDR0NvbnRleHRDbG9zZVBhdGgoY3R4KTsKKyAgICBDR0NvbnRleHRDbGlwKGN0
eCk7CisKKyAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY3R4LCBhYnNvbHV0ZUJhZGdlUmVjdC5v
cmlnaW4ueCwgYWJzb2x1dGVCYWRnZVJlY3Qub3JpZ2luLnkpOworICAgIENHQ29udGV4dFRyYW5z
bGF0ZUNUTShjdHgsIDAsIGJhZGdlRGltZW5zaW9uKTsKKyAgICBDR0NvbnRleHRTY2FsZUNUTShj
dHgsIDEsIC0xKTsKKyAgICBDR0NvbnRleHREcmF3SW1hZ2UoY3R4LCBiYWRnZVJlY3QsIGNnSW1h
Z2UuZ2V0KCkpOworCisgICAgQ0dTaXplIHBkZlNpemUgPSBDR1BERlBhZ2VHZXRCb3hSZWN0KHBh
Z2UuZ2V0KCksIGtDR1BERk1lZGlhQm94KS5zaXplOworICAgIENHRmxvYXQgc2NhbGVYID0gYmFk
Z2VEaW1lbnNpb24gLyBwZGZTaXplLndpZHRoOworICAgIENHRmxvYXQgc2NhbGVZID0gYmFkZ2VE
aW1lbnNpb24gLyBwZGZTaXplLmhlaWdodDsKKyAgICBDR0NvbnRleHRTY2FsZUNUTShjdHgsIHNj
YWxlWCwgc2NhbGVZKTsKKyAgICBDR0NvbnRleHREcmF3UERGUGFnZShjdHgsIHBhZ2UuZ2V0KCkp
OworCisgICAgQ0dDb250ZXh0Rmx1c2goY3R4KTsKKyAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRl
KGN0eCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShTWVNU
RU1fUFJFVklFVykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDg5MzNiOWY5NWI0YzMwZGY3
NTE0MTc5YjYwMzE3ZTM4OWQxNDI5MzAuLjIxNjAzNDliMDgzNGRiMDEwNTJjNDk2OTU4Yjk2Y2U5
MGQ3MDBhNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysr
IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtMTE5LDYgKzExOSw3IEBAIE1v
ZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwCiBNb2R1bGVzL3NwZWVj
aC9jb2NvYS9TcGVlY2hSZWNvZ25pemVyQ29jb2EubW0KIE1vZHVsZXMvc3BlZWNoL2NvY29hL1dl
YlNwZWVjaFJlY29nbml6ZXJUYXNrLm1tCiBNb2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hS
ZWNvZ25pemVyVGFza01vY2subW0KK01vZHVsZXMvc3lzdGVtLXByZXZpZXcvQVJLaXRCYWRnZVN5
c3RlbUltYWdlLm1tCiBNb2R1bGVzL3dlYmRhdGFiYXNlL2NvY29hL0RhdGFiYXNlTWFuYWdlckNv
Y29hLm1tCiBhY2Nlc3NpYmlsaXR5L2lvcy9BWE9iamVjdENhY2hlSU9TLm1tCiBhY2Nlc3NpYmls
aXR5L2lvcy9BY2Nlc3NpYmlsaXR5T2JqZWN0SU9TLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZGQ4ZWU3YmMyMTBjMThiMzg2
NjhkMmU2OTk3ZTQ0Mjg4OGFmNTA4ZS4uOWNlMzg4MDBlOTcwMmZiOWI3YjljNGY5MGU0ZTE0Mzk5
ODVhY2ZmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMjMxMCw2ICsyMzEwLDcgQEAKIAkJNzE1NkJDQTEyMUNBMzUwRjAwNTM0
Mzk3IC8qIEJhc2ljRWZmZWN0VGltaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3MTU2QkM5RjIxQ0EzNTA2MDA1MzQzOTcgLyogQmFzaWNFZmZlY3RU
aW1pbmcuaCAqLzsgfTsKIAkJNzE1QUQ3MjAyMDUwNTEzMjAwRDU5MkRDIC8qIERlY2xhcmF0aXZl
QW5pbWF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3MTVBRDcxRDIwNTA1MTI0MDBENTkyREMgLyogRGVjbGFyYXRpdmVBbmltYXRpb24uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MTVBRDcyMTIw
NTA1MTNGMDBENTkyREMgLyogQ1NTVHJhbnNpdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzEyM0MxODYyMDQ3MzlCQTAwNzg5MzkyIC8qIENTU1Ry
YW5zaXRpb24uaCAqLzsgfTsKKwkJNzE2QzRDMzYyN0VCNjBDOTAwNTMxNDY3IC8qIEFSS2l0QmFk
Z2VTeXN0ZW1JbWFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzE2QzRDMzUyN0VCNjA4RTAwNTMxNDY3IC8qIEFSS2l0QmFkZ2VTeXN0ZW1JbWFnZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcxNzI5
RjdCMjBGM0JBNDkwMDgwMUNFNiAvKiBEb2N1bWVudFRpbWVsaW5lT3B0aW9ucy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzE3MjlGN0EyMEYzQkEzQTAw
ODAxQ0U2IC8qIERvY3VtZW50VGltZWxpbmVPcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzE3MjlGN0UyMEYzQkI0NzAwODAxQ0U2IC8q
IEpTRG9jdW1lbnRUaW1lbGluZU9wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDcxNzI5RjdDMjBGM0JBQjkwMDgwMUNFNiAvKiBKU0RvY3VtZW50
VGltZWxpbmVPcHRpb25zLmggKi87IH07CiAJCTcxNzM2OTRBMjc1RTBCNUUwMDNBREE5QiAvKiBD
dXN0b21FZmZlY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDcxQTc0QjA4Mjc1OTI5MzYwMERFODBCQSAvKiBDdXN0b21FZmZlY3QuaCAqLzsgfTsKQEAg
LTExMTg2LDYgKzExMTg3LDggQEAKIAkJNzE2QTU1QUIyNkZBMzQ5QjAwQzk2RDY5IC8qIHJhbmdl
LWJ1dHRvbi5jc3MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0LmNzczsgcGF0aCA9ICJyYW5nZS1idXR0b24uY3NzIjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNzE2QTU1QUQyNkZBMzQ5QzAwQzk2RDY5IC8qIHZvbHVtZS1idXR0b24u
anMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSAidm9sdW1lLWJ1dHRvbi5qcyI7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTcxNkE1NUFFMjZGQTM0OUMwMEM5NkQ2OSAvKiByYW5nZS1idXR0
b24uanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSAicmFuZ2UtYnV0dG9uLmpzIjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzE2QzRDMzQyN0VCNjA4RTAwNTMxNDY3IC8qIEFSS2l0QmFk
Z2VTeXN0ZW1JbWFnZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IEFSS2l0QmFkZ2VTeXN0ZW1JbWFnZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NzE2QzRDMzUyN0VCNjA4RTAwNTMxNDY3IC8qIEFSS2l0QmFkZ2VTeXN0ZW1JbWFnZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUktpdEJhZGdlU3lzdGVtSW1hZ2UuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzE2RkEwRDgxREIyNjU5MTAwNzMyM0NDIC8qIGFp
cnBsYXktYnV0dG9uLmNzcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuY3NzOyBwYXRoID0gImFpcnBsYXktYnV0
dG9uLmNzcyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxNkZBMEQ5MURCMjY1OTEw
MDczMjNDQyAvKiBhaXJwbGF5LWJ1dHRvbi5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNj
cmlwdDsgcGF0aCA9ICJhaXJwbGF5LWJ1dHRvbi5qcyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTcxNkZBMERBMURCMjY1OTEwMDczMjNDQyAvKiBhaXJwbGF5LXBsYWNhcmQuanMgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSAiYWlycGxheS1wbGFjYXJkLmpz
Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI0NjY1LDYgKzI0NjY4LDE1IEBACiAJ
CQlwYXRoID0gYW5pbWF0aW9uOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJ
NzE2QzRDMzMyN0VCNjA4RTAwNTMxNDY3IC8qIHN5c3RlbS1wcmV2aWV3ICovID0geworCQkJaXNh
ID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk3MTZDNEMzNTI3RUI2MDhFMDA1MzE0
NjcgLyogQVJLaXRCYWRnZVN5c3RlbUltYWdlLmggKi8sCisJCQkJNzE2QzRDMzQyN0VCNjA4RTAw
NTMxNDY3IC8qIEFSS2l0QmFkZ2VTeXN0ZW1JbWFnZS5tbSAqLywKKwkJCSk7CisJCQlwYXRoID0g
InN5c3RlbS1wcmV2aWV3IjsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTcx
NkZBMEQ3MURCMjY1OTEwMDczMjNDQyAvKiBjb250cm9scyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0yNjE3NSw2ICsyNjE4Nyw3IEBACiAJCQkJQUEyQTVB
QjcxNkE0ODVBNDAwOTc1QTI1IC8qIHNwZWVjaCAqLywKIAkJCQk5MzA4NURCMzI2RTAwNjhFMDAw
RUM2QTcgLyogc3RvcmFnZSAqLywKIAkJCQk0MUEwMjNFQTFBMzlEQjc5MDBGNzIyQ0YgLyogc3Ry
ZWFtcyAqLywKKwkJCQk3MTZDNEMzMzI3RUI2MDhFMDA1MzE0NjcgLyogc3lzdGVtLXByZXZpZXcg
Ki8sCiAJCQkJNDY0NEY3RUEyNzJBMUMxNjAwNTU1OTlFIC8qIHdlYi1sb2NrcyAqLywKIAkJCQlG
RDMxNUZBMjEyQjAyNUIxMDBDMUEzNTkgLyogd2ViYXVkaW8gKi8sCiAJCQkJNTdEODQ2MkExRkVB
RjU3RjAwQ0EzNjgyIC8qIHdlYmF1dGhuICovLApAQCAtMzM1OTgsNiArMzM2MTEsNyBAQAogCQkJ
CTUxMkREOEZEMEQ5MUU2QUYwMDBGODlFRSAvKiBBcmNoaXZlRmFjdG9yeS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTEyREQ4RkMwRDkxRTZBRjAwMEY4OUVFIC8qIEFyY2hpdmVSZXNvdXJjZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTEyREQ4RjgwRDkxRTZBRjAwMEY4OUVFIC8qIEFyY2hpdmVSZXNv
dXJjZUNvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTcxNkM0QzM2MjdFQjYwQzkwMDUz
MTQ2NyAvKiBBUktpdEJhZGdlU3lzdGVtSW1hZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUZENTY4
NkNBMTNBQzE4MDIwMEI2OUM2OCAvKiBBc3luY0F1ZGlvRGVjb2Rlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRTFDREU5MjIxNTAxOTE2OTAwODYyQ0M1IC8qIEFzeW5jRmlsZVN0cmVhbS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZGRDRENjExODY1MUZBMzAwNTEyRjZFIC8qIEFzeW5jU2Nyb2xsaW5n
Q29vcmRpbmF0b3IuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvU3lzdGVtSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1N5c3RlbUltYWdlLmgKaW5kZXggZmU4M2QzYTc0NzE2N2QxZjhkMjZhMDdlNGY5
MjU5NWJiZmYxM2QzNi4uZjVhYTI3NTYwMjg0YTZhMjQ0ZGQ5ZDZmMjdkMjAwMjA0OTc2MWRhYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU3lzdGVtSW1hZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TeXN0ZW1JbWFnZS5oCkBA
IC0zNyw2ICszNyw5IEBAIGVudW0gY2xhc3MgU3lzdGVtSW1hZ2VUeXBlIDogdWludDhfdCB7CiAg
ICAgQXBwbGVQYXlCdXR0b24sCiAgICAgQXBwbGVQYXlMb2dvLAogI2VuZGlmCisjaWYgVVNFKFNZ
U1RFTV9QUkVWSUVXKQorICAgIEFSS2l0QmFkZ2UsCisjZW5kaWYKIH07CiAKIGNsYXNzIFdFQkNP
UkVfRVhQT1JUIFN5c3RlbUltYWdlIDogcHVibGljIFJlZkNvdW50ZWQ8U3lzdGVtSW1hZ2U+IHsK
QEAgLTY4LDYgKzcxLDkgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpT
eXN0ZW1JbWFnZVR5cGU+IHsKICNpZiBFTkFCTEUoQVBQTEVfUEFZKQogICAgICAgICAsIFdlYkNv
cmU6OlN5c3RlbUltYWdlVHlwZTo6QXBwbGVQYXlCdXR0b24sCiAgICAgICAgIFdlYkNvcmU6OlN5
c3RlbUltYWdlVHlwZTo6QXBwbGVQYXlMb2dvCisjZW5kaWYKKyNpZiBVU0UoU1lTVEVNX1BSRVZJ
RVcpCisgICAgICAgICwgV2ViQ29yZTo6U3lzdGVtSW1hZ2VUeXBlOjpBUktpdEJhZGdlCiAjZW5k
aWYKICAgICA+OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcApp
bmRleCBmODY1OTZjMGNlNDI0MWZmYjZkMTc0NDE0YWEyMjQxOWIzOWYxZDFlLi5iY2VmZTMzYThi
NDdhZmI3NDM3MDYwZDg0MzA1NjkzMzZiNmNjNjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVjb3JkZXIuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiRGlzcGxheUxpc3RSZWNvcmRlci5oIgogCisjaW5jbHVkZSAiQVJLaXRCYWRn
ZVN5c3RlbUltYWdlLmgiCiAjaW5jbHVkZSAiRGlzcGxheUxpc3QuaCIKICNpbmNsdWRlICJEaXNw
bGF5TGlzdERyYXdpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiRGlzcGxheUxpc3RJdGVtcy5oIgpA
QCAtMTg4LDYgKzE4OSwxMiBAQCB2b2lkIFJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoTmF0aXZl
SW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgYwogCiB2b2lkIFJlY29y
ZGVyOjpkcmF3U3lzdGVtSW1hZ2UoU3lzdGVtSW1hZ2UmIHN5c3RlbUltYWdlLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RpbmF0aW9uUmVjdCkKIHsKKyNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCisgICAg
aWYgKGlzPEFSS2l0QmFkZ2VTeXN0ZW1JbWFnZT4oc3lzdGVtSW1hZ2UpKSB7CisgICAgICAgIGlm
IChhdXRvIGltYWdlID0gZG93bmNhc3Q8QVJLaXRCYWRnZVN5c3RlbUltYWdlPihzeXN0ZW1JbWFn
ZSkuaW1hZ2UoKSkKKyAgICAgICAgICAgIHJlY29yZFJlc291cmNlVXNlKCppbWFnZS0+bmF0aXZl
SW1hZ2UoKSk7CisgICAgfQorI2VuZGlmCiAgICAgcmVjb3JkRHJhd1N5c3RlbUltYWdlKHN5c3Rl
bUltYWdlLCBkZXN0aW5hdGlvblJlY3QpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZUlPUy5oCmluZGV4IGU0NGJkNjgyMjc2MTkyMzY0Yzc2M2I4ZWQ1NmU3NGYzMGQ1
NWZhMTMuLjUyZDcwYWRjODlkYWM2NTVkYmI1MGUzNWI3MDFjMzhiOTYyNDNiMzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5oCkBAIC0zMCwxMiArMzAsNiBAQAog
I2luY2x1ZGUgIkNTU1ZhbHVlS2V5LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWVDb2NvYS5oIgog
Ci0jaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQotI2luY2x1ZGUgIklPU3VyZmFjZS5oIgotI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLSNlbmRpZgotCi1PQkpDX0NMQVNTIENJQ29udGV4dDsKIE9C
SkNfQ0xBU1MgVUlJbWFnZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMjE3LDEyICsyMTEs
NiBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBhZGp1c3RTdHlsZUZvckFsdGVybmF0ZUZvcm1Db250
cm9sRGVzaWduVHJhbnNpdGlvbihSZW5kZXJTdHlsZSYsIGNvbnN0IEVsZW1lbnQqKSBjb25zdDsK
IAotI2lmIFVTRShTWVNURU1fUFJFVklFVykKLSAgICBSZXRhaW5QdHI8Q0lDb250ZXh0PiBtX2Np
Q29udGV4dDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBtX2xhcmdlQmFkZ2VTdXJm
YWNlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IG1fc21hbGxCYWRnZVN1cmZhY2U7
Ci0jZW5kaWYKLQogICAgIGJvb2wgbV9zaG91bGRNb2NrQm9sZFN5c3RlbUZvbnRGb3JBY2Nlc3Np
YmlsaXR5IHsgZmFsc2UgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZUlPUy5tbQppbmRleCBhZTc4MjQyYjMyY2ZiYjVkYmQ2MjNiYjEyOTYyY2M1MGI1YmQ1YTVi
Li43MzkzZDcwOGYwNDE0ZDZkNWNmNzJlMjUyZDUxYWFiNGExNTk5ODg2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCkBAIC0yOCw2ICsyOCw3IEBACiAKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogCisjaW1wb3J0ICJBUktpdEJhZGdlU3lzdGVtSW1hZ2Uu
aCIKICNpbXBvcnQgIkJpdG1hcEltYWdlLmgiCiAjaW1wb3J0ICJDU1NQcmltaXRpdmVWYWx1ZS5o
IgogI2ltcG9ydCAiQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YS5oIgpAQCAtMjAwNywxODYgKzIw
MDgsOSBAQCBTdHJpbmcgUmVuZGVyVGhlbWVJT1M6OmV4dHJhRGVmYXVsdFN0eWxlU2hlZXQoKQog
I2VuZGlmCiAKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCi1zdGF0aWMgTlNCdW5kbGUgKmFyS2l0
QnVuZGxlKCkKLXsKLSAgICBzdGF0aWMgTlNCdW5kbGUgKmFyS2l0QnVuZGxlID0gW10oKSB7Ci0j
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWV9TSU1VTEFUT1IpCi0gICAgICAgIGRsb3BlbigiL1N5c3Rl
bS9MaWJyYXJ5L1ByaXZhdGVGcmFtZXdvcmtzL0Fzc2V0Vmlld2VyLmZyYW1ld29yay9Bc3NldFZp
ZXdlciIsIFJUTERfTk9XKTsKLSAgICAgICAgcmV0dXJuIFtOU0J1bmRsZSBidW5kbGVGb3JDbGFz
czpOU0NsYXNzRnJvbVN0cmluZyhAIkFTVlRodW1ibmFpbFZpZXciKV07Ci0jZWxzZQotICAgICAg
ICByZXR1cm4gW05TQnVuZGxlIGJ1bmRsZVdpdGhVUkw6W05TVVJMIGZpbGVVUkxXaXRoUGF0aDpA
Ii9TeXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy9Bc3NldFZpZXdlci5mcmFtZXdvcmsi
XV07Ci0jZW5kaWYKLSAgICB9KCk7Ci0KLSAgICByZXR1cm4gYXJLaXRCdW5kbGU7Ci19Ci0KLXN0
YXRpYyBSZXRhaW5QdHI8Q0dQREZQYWdlUmVmPiBsb2FkQVJLaXRQREZQYWdlKE5TU3RyaW5nICpp
bWFnZU5hbWUpCi17Ci0gICAgTlNVUkwgKnVybCA9IFthcktpdEJ1bmRsZSgpIFVSTEZvclJlc291
cmNlOmltYWdlTmFtZSB3aXRoRXh0ZW5zaW9uOkAicGRmIl07Ci0KLSAgICBpZiAoIXVybCkKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBhdXRvIGRvY3VtZW50ID0gYWRvcHRDRihDR1BE
RkRvY3VtZW50Q3JlYXRlV2l0aFVSTCgoQ0ZVUkxSZWYpdXJsKSk7Ci0gICAgaWYgKCFkb2N1bWVu
dCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBpZiAoIUNHUERGRG9jdW1lbnRHZXRO
dW1iZXJPZlBhZ2VzKGRvY3VtZW50LmdldCgpKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0K
LSAgICByZXR1cm4gQ0dQREZEb2N1bWVudEdldFBhZ2UoZG9jdW1lbnQuZ2V0KCksIDEpOwotfQot
Ci1zdGF0aWMgQ0dQREZQYWdlUmVmIHN5c3RlbVByZXZpZXdMb2dvKCkKLXsKLSAgICBzdGF0aWMg
Q0dQREZQYWdlUmVmIGxvZ29QYWdlID0gbG9hZEFSS2l0UERGUGFnZShAIkFSS2l0QmFkZ2UiKS5s
ZWFrUmVmKCk7Ci0gICAgcmV0dXJuIGxvZ29QYWdlOwotfQotCiB2b2lkIFJlbmRlclRoZW1lSU9T
OjpwYWludFN5c3RlbVByZXZpZXdCYWRnZShJbWFnZSYgaW1hZ2UsIGNvbnN0IFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGlu
dCBsYXJnZUJhZGdlRGltZW5zaW9uID0gNzA7Ci0gICAgc3RhdGljIGNvbnN0IGludCBsYXJnZUJh
ZGdlT2Zmc2V0ID0gMjA7Ci0KLSAgICBzdGF0aWMgY29uc3QgaW50IHNtYWxsQmFkZ2VEaW1lbnNp
b24gPSAzNTsKLSAgICBzdGF0aWMgY29uc3QgaW50IHNtYWxsQmFkZ2VPZmZzZXQgPSA4OwotCi0g
ICAgc3RhdGljIGNvbnN0IGludCBtaW5pbXVtU2l6ZUZvckxhcmdlQmFkZ2UgPSAyNDA7Ci0KLSAg
ICBib29sIHVzZVNtYWxsQmFkZ2UgPSByZWN0LndpZHRoKCkgPCBtaW5pbXVtU2l6ZUZvckxhcmdl
QmFkZ2UgfHwgcmVjdC5oZWlnaHQoKSA8IG1pbmltdW1TaXplRm9yTGFyZ2VCYWRnZTsKLSAgICBp
bnQgYmFkZ2VPZmZzZXQgPSB1c2VTbWFsbEJhZGdlID8gc21hbGxCYWRnZU9mZnNldCA6IGxhcmdl
QmFkZ2VPZmZzZXQ7Ci0gICAgaW50IGJhZGdlRGltZW5zaW9uID0gdXNlU21hbGxCYWRnZSA/IHNt
YWxsQmFkZ2VEaW1lbnNpb24gOiBsYXJnZUJhZGdlRGltZW5zaW9uOwotCi0gICAgaW50IG1pbmlt
dW1EaW1lbnNpb24gPSBiYWRnZURpbWVuc2lvbiArIDIgKiBiYWRnZU9mZnNldDsKLSAgICBpZiAo
cmVjdC53aWR0aCgpIDwgbWluaW11bURpbWVuc2lvbiB8fCByZWN0LmhlaWdodCgpIDwgbWluaW11
bURpbWVuc2lvbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQ0dSZWN0IGFic29sdXRlQmFkZ2VS
ZWN0ID0gQ0dSZWN0TWFrZShyZWN0LngoKSArIHJlY3Qud2lkdGgoKSAtIGJhZGdlRGltZW5zaW9u
IC0gYmFkZ2VPZmZzZXQsIHJlY3QueSgpICsgYmFkZ2VPZmZzZXQsIGJhZGdlRGltZW5zaW9uLCBi
YWRnZURpbWVuc2lvbik7Ci0gICAgQ0dSZWN0IGluc2V0QmFkZ2VSZWN0ID0gQ0dSZWN0TWFrZShy
ZWN0LndpZHRoKCkgLSBiYWRnZURpbWVuc2lvbiAtIGJhZGdlT2Zmc2V0LCBiYWRnZU9mZnNldCwg
YmFkZ2VEaW1lbnNpb24sIGJhZGdlRGltZW5zaW9uKTsKLSAgICBDR1JlY3QgYmFkZ2VSZWN0ID0g
Q0dSZWN0TWFrZSgwLCAwLCBiYWRnZURpbWVuc2lvbiwgYmFkZ2VEaW1lbnNpb24pOwotCi0gICAg
Q0lJbWFnZSAqaW5wdXRJbWFnZSA9IFtDSUltYWdlIGltYWdlV2l0aENHSW1hZ2U6aW1hZ2UubmF0
aXZlSW1hZ2UoKS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpXTsKLQotICAgIC8vIENyZWF0ZSBhIGNp
cmNsZSB0byBiZSB1c2VkIGZvciB0aGUgY2xpcHBpbmcgcGF0aCBpbiB0aGUgYmFkZ2UsIGFzIHdl
bGwgYXMgdGhlIGRyb3Agc2hhZG93LgotICAgIFJldGFpblB0cjxDR1BhdGhSZWY+IGNpcmNsZSA9
IGFkb3B0Q0YoQ0dQYXRoQ3JlYXRlV2l0aFJvdW5kZWRSZWN0KGFic29sdXRlQmFkZ2VSZWN0LCBi
YWRnZURpbWVuc2lvbiAvIDIsIGJhZGdlRGltZW5zaW9uIC8gMiwgbnVsbHB0cikpOwotCi0gICAg
YXV0byYgZ3JhcGhpY3NDb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKTsKLSAgICBpZiAoZ3Jh
cGhpY3NDb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
R3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGdyYXBoaWNzQ29udGV4dCk7Ci0K
LSAgICBDR0NvbnRleHRSZWYgY3R4ID0gZ3JhcGhpY3NDb250ZXh0LnBsYXRmb3JtQ29udGV4dCgp
OwotICAgIGlmICghY3R4KQotICAgICAgICByZXR1cm47Ci0KLSAgICBDR0NvbnRleHRTYXZlR1N0
YXRlKGN0eCk7Ci0KLSAgICAvLyBEcmF3IGEgZHJvcCBzaGFkb3cgYXJvdW5kIHRoZSBjaXJjbGUu
Ci0gICAgLy8gVXNlIHRoZSBHcmFwaGljc0NvbnRleHQgZnVuY3Rpb24sIGJlY2F1c2UgaXQgY2Fs
Y3VsYXRlcyB0aGUgYmx1ciByYWRpdXMgaW4gY29udGV4dCBzcGFjZSwKLSAgICAvLyByYXRoZXIg
dGhhbiBzY3JlZW4gc3BhY2UuCi0gICAgY29uc3RleHByIGF1dG8gc2hhZG93Q29sb3IgPSBDb2xv
cjo6YmxhY2suY29sb3JXaXRoQWxwaGFCeXRlKDI2KTsKLSAgICBncmFwaGljc0NvbnRleHQuc2V0
U2hhZG93KEZsb2F0U2l6ZSB7IH0sIDE2LCBzaGFkb3dDb2xvcik7Ci0KLSAgICAvLyBUaGUgY2ly
Y2xlIG11c3QgaGF2ZSBhbiBhbHBoYSBjaGFubmVsIHZhbHVlIG9mIDEgZm9yIHRoZSBzaGFkb3cg
Y29sb3IgdG8gYXBwZWFyLgotICAgIENHRmxvYXQgY2lyY2xlQ29sb3JDb21wb25lbnRzWzRdID0g
eyAwLCAwLCAwLCAxIH07Ci0gICAgUmV0YWluUHRyPENHQ29sb3JSZWY+IGNpcmNsZUNvbG9yID0g
YWRvcHRDRihDR0NvbG9yQ3JlYXRlKHNSR0JDb2xvclNwYWNlUmVmKCksIGNpcmNsZUNvbG9yQ29t
cG9uZW50cykpOwotICAgIENHQ29udGV4dFNldEZpbGxDb2xvcldpdGhDb2xvcihjdHgsIGNpcmNs
ZUNvbG9yLmdldCgpKTsKLQotICAgIC8vIENsaXAgb3V0IHRoZSBjaXJjbGUgdG8gb25seSBzaG93
IHRoZSBzaGFkb3cuCi0gICAgQ0dDb250ZXh0QmVnaW5QYXRoKGN0eCk7Ci0gICAgQ0dDb250ZXh0
QWRkUmVjdChjdHgsIHJlY3QpOwotICAgIENHQ29udGV4dEFkZFBhdGgoY3R4LCBjaXJjbGUuZ2V0
KCkpOwotICAgIENHQ29udGV4dENsb3NlUGF0aChjdHgpOwotICAgIENHQ29udGV4dEVPQ2xpcChj
dHgpOwotCi0gICAgLy8gRHJhdyBhIHNsaWdodGx5IHNtYWxsZXIgY2lyY2xlIHdpdGggYSBzaGFk
b3csIG90aGVyd2lzZSB3ZSdsbCBzZWUgYSBmcmluZ2Ugb2YgdGhlIHNvbGlkCi0gICAgLy8gYmxh
Y2sgY2lyY2xlIGFyb3VuZCB0aGUgZWRnZXMgb2YgdGhlIGNsaXBwZWQgcGF0aCBiZWxvdy4KLSAg
ICBDR0NvbnRleHRCZWdpblBhdGgoY3R4KTsKLSAgICBDR1JlY3Qgc2xpZ2h0bHlTbWFsbGVyQWJz
b2x1dGVCYWRnZVJlY3QgPSBDR1JlY3RNYWtlKGFic29sdXRlQmFkZ2VSZWN0Lm9yaWdpbi54ICsg
MC41LCBhYnNvbHV0ZUJhZGdlUmVjdC5vcmlnaW4ueSArIDAuNSwgYmFkZ2VEaW1lbnNpb24gLSAx
LCBiYWRnZURpbWVuc2lvbiAtIDEpOwotICAgIFJldGFpblB0cjxDR1BhdGhSZWY+IHNsaWdodGx5
U21hbGxlckNpcmNsZSA9IGFkb3B0Q0YoQ0dQYXRoQ3JlYXRlV2l0aFJvdW5kZWRSZWN0KHNsaWdo
dGx5U21hbGxlckFic29sdXRlQmFkZ2VSZWN0LCBzbGlnaHRseVNtYWxsZXJBYnNvbHV0ZUJhZGdl
UmVjdC5zaXplLndpZHRoIC8gMiwgc2xpZ2h0bHlTbWFsbGVyQWJzb2x1dGVCYWRnZVJlY3Quc2l6
ZS5oZWlnaHQgLyAyLCBudWxscHRyKSk7Ci0gICAgQ0dDb250ZXh0QWRkUGF0aChjdHgsIHNsaWdo
dGx5U21hbGxlckNpcmNsZS5nZXQoKSk7Ci0gICAgQ0dDb250ZXh0Q2xvc2VQYXRoKGN0eCk7Ci0g
ICAgQ0dDb250ZXh0RmlsbFBhdGgoY3R4KTsKLQotICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUo
Y3R4KTsKLQotICAgIC8vIERyYXcgdGhlIGJsdXJyZWQgYmFja2Ryb3AuIFNjYWxlIGZyb20gaW50
cmluc2ljIHNpemUgdG8gcmVuZGVyIHNpemUuCi0gICAgQ0dBZmZpbmVUcmFuc2Zvcm0gdHJhbnNm
b3JtID0gQ0dBZmZpbmVUcmFuc2Zvcm1JZGVudGl0eTsKLSAgICB0cmFuc2Zvcm0gPSBDR0FmZmlu
ZVRyYW5zZm9ybVNjYWxlKHRyYW5zZm9ybSwgcmVjdC53aWR0aCgpIC8gaW1hZ2Uud2lkdGgoKSwg
cmVjdC5oZWlnaHQoKSAvIGltYWdlLmhlaWdodCgpKTsKLSAgICBDSUltYWdlICpzY2FsZWRJbWFn
ZSA9IFtpbnB1dEltYWdlIGltYWdlQnlBcHBseWluZ1RyYW5zZm9ybTp0cmFuc2Zvcm1dOwotCi0g
ICAgLy8gQ29yZUltYWdlIGNvb3JkaW5hdGVzIGFyZSB5LXVwLCBzbyB3ZSBuZWVkIHRvIGZsaXAg
dGhlIGJhZGdlIHJlY3RhbmdsZSB3aXRoaW4gdGhlIGltYWdlIGZyYW1lLgotICAgIENHUmVjdCBm
bGlwcGVkSW5zZXRCYWRnZVJlY3QgPSBDR1JlY3RNYWtlKGluc2V0QmFkZ2VSZWN0Lm9yaWdpbi54
LCByZWN0LmhlaWdodCgpIC0gaW5zZXRCYWRnZVJlY3Qub3JpZ2luLnkgLSBpbnNldEJhZGdlUmVj
dC5zaXplLmhlaWdodCwgYmFkZ2VEaW1lbnNpb24sIGJhZGdlRGltZW5zaW9uKTsKLQotICAgIC8v
IENyZWF0ZSBhIGNyb3BwZWQgcmVnaW9uIHdpdGggcGl4ZWwgdmFsdWVzIGV4dGVuZGluZyBvdXR3
YXJkcy4KLSAgICBDSUltYWdlICpjbGFtcGVkSW1hZ2UgPSBbc2NhbGVkSW1hZ2UgaW1hZ2VCeUNs
YW1waW5nVG9SZWN0OmZsaXBwZWRJbnNldEJhZGdlUmVjdF07Ci0KLSAgICAvLyBCbHVyLgotICAg
IENJSW1hZ2UgKmJsdXJyZWRJbWFnZSA9IFtjbGFtcGVkSW1hZ2UgaW1hZ2VCeUFwcGx5aW5nR2F1
c3NpYW5CbHVyV2l0aFNpZ21hOjEwXTsKLQotICAgIC8vIFNhdHVyYXRlLgotICAgIENJRmlsdGVy
ICpzYXR1cmF0aW9uRmlsdGVyID0gW0NJRmlsdGVyIGZpbHRlcldpdGhOYW1lOkAiQ0lDb2xvckNv
bnRyb2xzIl07Ci0gICAgW3NhdHVyYXRpb25GaWx0ZXIgc2V0VmFsdWU6Ymx1cnJlZEltYWdlIGZv
cktleTprQ0lJbnB1dEltYWdlS2V5XTsKLSAgICBbc2F0dXJhdGlvbkZpbHRlciBzZXRWYWx1ZTpA
MS44IGZvcktleTprQ0lJbnB1dFNhdHVyYXRpb25LZXldOwotCi0gICAgLy8gVGludC4KLSAgICBD
SUZpbHRlciAqdGludEZpbHRlcjEgPSBbQ0lGaWx0ZXIgZmlsdGVyV2l0aE5hbWU6QCJDSUNvbnN0
YW50Q29sb3JHZW5lcmF0b3IiXTsKLSAgICBDSUNvbG9yICp0aW50Q29sb3IxID0gW0NJQ29sb3Ig
Y29sb3JXaXRoUmVkOjEgZ3JlZW46MSBibHVlOjEgYWxwaGE6MC4xOF07Ci0gICAgW3RpbnRGaWx0
ZXIxIHNldFZhbHVlOnRpbnRDb2xvcjEgZm9yS2V5OmtDSUlucHV0Q29sb3JLZXldOwotCi0gICAg
Ly8gQmxlbmQgdGhlIHRpbnQgd2l0aCB0aGUgc2F0dXJhdGVkIG91dHB1dC4KLSAgICBDSUZpbHRl
ciAqc291cmNlT3ZlckZpbHRlciA9IFtDSUZpbHRlciBmaWx0ZXJXaXRoTmFtZTpAIkNJU291cmNl
T3ZlckNvbXBvc2l0aW5nIl07Ci0gICAgW3NvdXJjZU92ZXJGaWx0ZXIgc2V0VmFsdWU6dGludEZp
bHRlcjEub3V0cHV0SW1hZ2UgZm9yS2V5OmtDSUlucHV0SW1hZ2VLZXldOwotICAgIFtzb3VyY2VP
dmVyRmlsdGVyIHNldFZhbHVlOnNhdHVyYXRpb25GaWx0ZXIub3V0cHV0SW1hZ2UgZm9yS2V5OmtD
SUlucHV0QmFja2dyb3VuZEltYWdlS2V5XTsKLQotICAgIGlmICghbV9jaUNvbnRleHQpCi0gICAg
ICAgIG1fY2lDb250ZXh0ID0gW0NJQ29udGV4dCBjb250ZXh0XTsKLQotICAgIFJldGFpblB0cjxD
R0ltYWdlUmVmPiBjZ0ltYWdlOwotI2lmIEhBVkUoSU9TVVJGQUNFX0NPUkVJTUFHRV9TVVBQT1JU
KQotICAgIC8vIENyb3AgdGhlIHJlc3VsdCB0byB0aGUgYmFkZ2UgbG9jYXRpb24uCi0gICAgQ0lJ
bWFnZSAqY3JvcHBlZEltYWdlID0gW3NvdXJjZU92ZXJGaWx0ZXIub3V0cHV0SW1hZ2UgaW1hZ2VC
eUNyb3BwaW5nVG9SZWN0OmZsaXBwZWRJbnNldEJhZGdlUmVjdF07Ci0gICAgQ0lJbWFnZSAqdHJh
bnNsYXRlZEltYWdlID0gW2Nyb3BwZWRJbWFnZSBpbWFnZUJ5QXBwbHlpbmdUcmFuc2Zvcm06Q0dB
ZmZpbmVUcmFuc2Zvcm1NYWtlVHJhbnNsYXRpb24oLWZsaXBwZWRJbnNldEJhZGdlUmVjdC5vcmln
aW4ueCwgLWZsaXBwZWRJbnNldEJhZGdlUmVjdC5vcmlnaW4ueSldOwotICAgIElPU3VyZmFjZVJl
ZiBzdXJmYWNlOwotICAgIGlmICh1c2VTbWFsbEJhZGdlKSB7Ci0gICAgICAgIGlmICghbV9zbWFs
bEJhZGdlU3VyZmFjZSkKLSAgICAgICAgICAgIG1fc21hbGxCYWRnZVN1cmZhY2UgPSBJT1N1cmZh
Y2U6OmNyZWF0ZSh7IHNtYWxsQmFkZ2VEaW1lbnNpb24sIHNtYWxsQmFkZ2VEaW1lbnNpb24gfSwg
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwotICAgICAgICBzdXJmYWNlID0gbV9zbWFs
bEJhZGdlU3VyZmFjZS0+c3VyZmFjZSgpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmICghbV9s
YXJnZUJhZGdlU3VyZmFjZSkKLSAgICAgICAgICAgIG1fbGFyZ2VCYWRnZVN1cmZhY2UgPSBJT1N1
cmZhY2U6OmNyZWF0ZSh7IGxhcmdlQmFkZ2VEaW1lbnNpb24sIGxhcmdlQmFkZ2VEaW1lbnNpb24g
fSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkpOwotICAgICAgICBzdXJmYWNlID0gbV9s
YXJnZUJhZGdlU3VyZmFjZS0+c3VyZmFjZSgpOwotICAgIH0KLSAgICBbbV9jaUNvbnRleHQgcmVu
ZGVyOnRyYW5zbGF0ZWRJbWFnZSB0b0lPU3VyZmFjZTpzdXJmYWNlIGJvdW5kczpiYWRnZVJlY3Qg
Y29sb3JTcGFjZTpzUkdCQ29sb3JTcGFjZVJlZigpXTsKLSAgICBjZ0ltYWdlID0gdXNlU21hbGxC
YWRnZSA/IG1fc21hbGxCYWRnZVN1cmZhY2UtPmNyZWF0ZUltYWdlKCkgOiBtX2xhcmdlQmFkZ2VT
dXJmYWNlLT5jcmVhdGVJbWFnZSgpOwotI2Vsc2UKLSAgICBjZ0ltYWdlID0gYWRvcHRDRihbbV9j
aUNvbnRleHQgY3JlYXRlQ0dJbWFnZTpzb3VyY2VPdmVyRmlsdGVyLm91dHB1dEltYWdlIGZyb21S
ZWN0OmZsaXBwZWRJbnNldEJhZGdlUmVjdF0pOwotI2VuZGlmCi0KLSAgICAvLyBCZWZvcmUgd2Ug
cmVuZGVyIHRoZSByZXN1bHQsIHdlIHNob3VsZCBjbGlwIHRvIGEgY2lyY2xlIGFyb3VuZCB0aGUg
YmFkZ2UgcmVjdGFuZ2xlLgotICAgIENHQ29udGV4dFNhdmVHU3RhdGUoY3R4KTsKLSAgICBDR0Nv
bnRleHRCZWdpblBhdGgoY3R4KTsKLSAgICBDR0NvbnRleHRBZGRQYXRoKGN0eCwgY2lyY2xlLmdl
dCgpKTsKLSAgICBDR0NvbnRleHRDbG9zZVBhdGgoY3R4KTsKLSAgICBDR0NvbnRleHRDbGlwKGN0
eCk7Ci0KLSAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY3R4LCBhYnNvbHV0ZUJhZGdlUmVjdC5v
cmlnaW4ueCwgYWJzb2x1dGVCYWRnZVJlY3Qub3JpZ2luLnkpOwotICAgIENHQ29udGV4dFRyYW5z
bGF0ZUNUTShjdHgsIDAsIGJhZGdlRGltZW5zaW9uKTsKLSAgICBDR0NvbnRleHRTY2FsZUNUTShj
dHgsIDEsIC0xKTsKLSAgICBDR0NvbnRleHREcmF3SW1hZ2UoY3R4LCBiYWRnZVJlY3QsIGNnSW1h
Z2UuZ2V0KCkpOwotCi0gICAgaWYgKGF1dG8gbG9nbyA9IHN5c3RlbVByZXZpZXdMb2dvKCkpIHsK
LSAgICAgICAgQ0dTaXplIHBkZlNpemUgPSBDR1BERlBhZ2VHZXRCb3hSZWN0KGxvZ28sIGtDR1BE
Rk1lZGlhQm94KS5zaXplOwotICAgICAgICBDR0Zsb2F0IHNjYWxlWCA9IGJhZGdlRGltZW5zaW9u
IC8gcGRmU2l6ZS53aWR0aDsKLSAgICAgICAgQ0dGbG9hdCBzY2FsZVkgPSBiYWRnZURpbWVuc2lv
biAvIHBkZlNpemUuaGVpZ2h0OwotICAgICAgICBDR0NvbnRleHRTY2FsZUNUTShjdHgsIHNjYWxl
WCwgc2NhbGVZKTsKLSAgICAgICAgQ0dDb250ZXh0RHJhd1BERlBhZ2UoY3R4LCBsb2dvKTsKLSAg
ICB9Ci0KLSAgICBDR0NvbnRleHRGbHVzaChjdHgpOwotICAgIENHQ29udGV4dFJlc3RvcmVHU3Rh
dGUoY3R4KTsKKyAgICBwYWludEluZm8uY29udGV4dCgpLmRyYXdTeXN0ZW1JbWFnZShBUktpdEJh
ZGdlU3lzdGVtSW1hZ2U6OmNyZWF0ZShpbWFnZSksIHJlY3QpOwogfQogI2VuZGlmCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlz
dFJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVE
aXNwbGF5TGlzdFJlY29yZGVyLmNwcAppbmRleCA5YTIzOWU2NDI1ZmQzOWM0YmM4MTM0ZjVkNTE5
NWJkZGExZDZhZDNlLi5mN2RlMjk5ZWZiNzVmZDIwZWQyZjQxNmRiOGQyOWFkNmI4N2ZjM2M1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxh
eUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlck1l
c3NhZ2VzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9BUktpdEJhZGdlU3lzdGVtSW1hZ2UuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0JpdG1hcEltYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GaWx0ZXJS
ZXN1bHRzLmg+CiAKQEAgLTI4NSw2ICsyODYsMTcgQEAgdm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJl
Y29yZGVyOjpkcmF3TmF0aXZlSW1hZ2VXaXRoUXVhbGlmaWVkSWRlbnRpZmllcihRdWFsaWZpZWQK
IAogdm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjpkcmF3U3lzdGVtSW1hZ2UoU3lzdGVt
SW1hZ2UmIHN5c3RlbUltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uUmVjdCkKIHsK
KyNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCisgICAgaWYgKGlzPEFSS2l0QmFkZ2VTeXN0ZW1JbWFn
ZT4oc3lzdGVtSW1hZ2UpKSB7CisgICAgICAgIEFSS2l0QmFkZ2VTeXN0ZW1JbWFnZSYgYmFkZ2Ug
PSBkb3duY2FzdDxBUktpdEJhZGdlU3lzdGVtSW1hZ2U+KHN5c3RlbUltYWdlKTsKKyAgICAgICAg
UmVmUHRyIG5hdGl2ZUltYWdlID0gcmVzb3VyY2VDYWNoZSgpLmNhY2hlZE5hdGl2ZUltYWdlKHsg
YmFkZ2UuaW1hZ2VJZGVudGlmaWVyKCksIG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIgfSk7CisgICAg
ICAgIGlmICghbmF0aXZlSW1hZ2UpIHsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGJhZGdlLnNldEltYWdl
KEJpdG1hcEltYWdlOjpjcmVhdGUoV1RGTW92ZShuYXRpdmVJbWFnZSkpKTsKKyAgICB9CisjZW5k
aWYKICAgICBoYW5kbGVJdGVtKERpc3BsYXlMaXN0OjpEcmF3U3lzdGVtSW1hZ2Uoc3lzdGVtSW1h
Z2UsIGRlc3RpbmF0aW9uUmVjdCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCBkZWIwOGU0MzEyMmNjNmY3NmRhYzBmNDQxZTU2
OGM0NjY1NWQyZDQxLi41MTZiZGI0NTdlM2M0NTYzM2Q2M2UxZjdhYThjMjNmZDY2NDJiZTQ1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAg
LTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJTdHJlYW1Db25uZWN0aW9uRW5jb2Rlci5oIgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL0FSS2l0QmFkZ2VTeXN0ZW1JbWFnZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvQXBwbGVQYXlCdXR0b25TeXN0ZW1JbWFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQXBw
bGVQYXlMb2dvU3lzdGVtSW1hZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlLmg+CkBAIC0zMTcyLDYgKzMxNzMsMTEgQEAgdm9pZCBBcmd1bWVudENvZGVyPFJl
ZjxTeXN0ZW1JbWFnZT4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmPFN5c3Rl
bUkKICAgICBjYXNlIFN5c3RlbUltYWdlVHlwZTo6QXBwbGVQYXlMb2dvOgogICAgICAgICBkb3du
Y2FzdDxBcHBsZVBheUxvZ29TeXN0ZW1JbWFnZT4oc3lzdGVtSW1hZ2UuZ2V0KCkpLmVuY29kZShl
bmNvZGVyKTsKICAgICAgICAgcmV0dXJuOworI2VuZGlmCisjaWYgVVNFKFNZU1RFTV9QUkVWSUVX
KQorICAgIGNhc2UgU3lzdGVtSW1hZ2VUeXBlOjpBUktpdEJhZGdlOgorICAgICAgICBkb3duY2Fz
dDxBUktpdEJhZGdlU3lzdGVtSW1hZ2U+KHN5c3RlbUltYWdlLmdldCgpKS5lbmNvZGUoZW5jb2Rl
cik7CisgICAgICAgIHJldHVybjsKICNlbmRpZgogICAgIH0KIApAQCAtMzE5Nyw2ICszMjAzLDEw
IEBAIHN0ZDo6b3B0aW9uYWw8UmVmPFN5c3RlbUltYWdlPj4gQXJndW1lbnRDb2RlcjxSZWY8U3lz
dGVtSW1hZ2U+Pjo6ZGVjb2RlKERlY29kZXImCiAKICAgICBjYXNlIFN5c3RlbUltYWdlVHlwZTo6
QXBwbGVQYXlMb2dvOgogICAgICAgICByZXR1cm4gQXBwbGVQYXlMb2dvU3lzdGVtSW1hZ2U6OmRl
Y29kZShkZWNvZGVyKTsKKyNlbmRpZgorI2lmIFVTRShTWVNURU1fUFJFVklFVykKKyAgICBjYXNl
IFN5c3RlbUltYWdlVHlwZTo6QVJLaXRCYWRnZToKKyAgICAgICAgcmV0dXJuIEFSS2l0QmFkZ2VT
eXN0ZW1JbWFnZTo6ZGVjb2RlKGRlY29kZXIpOwogI2VuZGlmCiAgICAgfQogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMzU4
ZTJjM2EwZWU1NTE3MjgwYTI0YmJlZDE3ZWRkZjAxMmE4NjgxMy4uMTUwZWY2YTgwZTQxNTJmMjVl
MmRjY2FjNTA1ODIwNzI4NDRhM2VkOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIyLTAzLTI0
ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgorCisgICAgICAgIERPTSBHUFVQ
OiBwYWludFN5c3RlbVByZXZpZXdCYWRnZSAoQVIgUXVpY2tMb29rIGVsZW1lbnQgYmFkZ2UpCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgyOTUKKyAg
ICAgICAgcmRhcjovLzgzNTgwNjA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGVhbiBKYWNrc29u
LgorCisgICAgICAgIFRoZSBzeXN0ZW0tcHJldmlldy9iYWRnZS5odG1sIHRlc3Qgbm93IHBhc3Nl
cyByZWxpYWJseSB3aXRoIERPTSBHUFVQIGVuYWJsZWQsCisgICAgICAgIHdoaWNoIGluY2lkZW50
YWxseSBmaXhlcyBidWcgMjM2OTIyLgorCisgICAgICAgICogcGxhdGZvcm0vaW9zLXdrMi9UZXN0
RXhwZWN0YXRpb25zOgorCiAyMDIyLTAzLTIzICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhA
YXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIE1haWwgY29tcG9zZSB3ZWIgdmlldyBubyBsb25n
ZXIgc2Nyb2xscyB0byByZXZlYWwgc2VsZWN0aW9uIHVwb24gc2hvd2luZyB0aGUga2V5Ym9hcmQK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azIvVGVzdEV4cGVjdGF0aW9u
cyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAy
ZTk4ZTE1ODdlOTJkYTgxYjRlNTk4ODM3ZThkMTBlNTg4OGYzYWYzLi4zMzYyM2Q1YjY0ODRkMTg2
NmEyY2E3ZThiNTZiMTgxNmJlMjFlY2M2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9pb3Mtd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9z
LXdrMi9UZXN0RXhwZWN0YXRpb25zCkBAIC0yMjU5LDkgKzIyNTksNiBAQCB3ZWJraXQub3JnL2Iv
MjM2OTIxIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy13cml0aW5nLW1v
ZGVzL3RleHQtcwogd2Via2l0Lm9yZy9iLzIzNjkyMSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3Mtd3JpdGluZy1tb2Rlcy92ZXJ0aWNhbC1hbGlnbm1lbnQtdmxyLTAyMy54
aHQgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMzY5MjEgaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXdyaXRpbmctbW9kZXMvdmVydGljYWwtYWxpZ25t
ZW50LXZybC0wMjIueGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKLSMgQ29sb3JzIGFyZSBzaWdu
aWZpY2FudGx5IGRpZmZlcmVudCBlbm91Z2gKLXdlYmtpdC5vcmcvYi8yMzY5MjIgc3lzdGVtLXBy
ZXZpZXcvYmFkZ2UuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotCiAjIE5vL2JhZCBjb2xvcmVk
IGJveGVzCiB3ZWJraXQub3JnL2IvMjM2OTIzIGZhc3QvY3NzL3BhaW50LW9yZGVyLXNoYWRvdy5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjM2OTIzIGltcG9ydGVkL2Js
aW5rL3N2Zy90ZXh0L29iYi1wYWludHNlcnZlci5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCg==
</data>
<flag name="commit-queue"
          id="483667"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455625</attachid>
            <date>2022-03-24 03:04:23 -0700</date>
            <delta_ts>2022-03-24 15:28:35 -0700</delta_ts>
            <desc>[fast-cq] Patch for landing</desc>
            <filename>bug-238295-20220324110422.patch</filename>
            <type>text/plain</type>
            <size>51872</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNzg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmZhNzFhMjI1NTUwYzRl
NDZmNTkyNjkzNDQxYjJlNWY5ZTMwNjRkNC4uZWNmMTFmZjRlMmZiZmJmY2EzZGY0NDQ1NGUwODc0
YTE2YjdlNmY2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDIyLTAzLTI0ICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgorCisgICAgICAgIERPTSBHUFVQOiBwYWlu
dFN5c3RlbVByZXZpZXdCYWRnZSAoQVIgUXVpY2tMb29rIGVsZW1lbnQgYmFkZ2UpCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgyOTUKKyAgICAgICAg
cmRhcjovLzgzNTgwNjA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGVhbiBKYWNrc29uLgorCisg
ICAgICAgIEFkZCBhIG5ldyBTeXN0ZW1JbWFnZSBzdWJjbGFzcyB0byBkZWFsIHdpdGggdGhlIEFS
S2l0IGJhZGdlLCBtb3ZpbmcgdGhlIGN1c3RvbSBkcmF3aW5nIGNvZGUgdW5kZXIKKyAgICAgICAg
UmVuZGVyVGhlbWVJT1M6OnBhaW50U3lzdGVtUHJldmlld0JhZGdlKCkgdG8gQVJLaXRCYWRnZVN5
c3RlbUltYWdlOjpkcmF3KCkuCisKKyAgICAgICAgVG8gZmFjaWxpdGF0ZSB0aGlzLCB3ZSBtdXN0
IGFsc28gaGF2ZSBBUktpdEJhZGdlU3lzdGVtSW1hZ2Ugd3JhcCB0aGUgaW5wdXQgSW1hZ2UgcHJv
dmlkZWQgdG8KKyAgICAgICAgUmVuZGVyVGhlbWVJT1M6OnBhaW50U3lzdGVtUHJldmlld0JhZGdl
KCkgc28gdGhhdCB0aGUgQ29yZUltYWdlIGZpbHRlcnMgYXJlIGFwcGxpZWQgY29ycmVjdGx5Lgor
CisgICAgICAgIEZpbmFsbHksIHdlIHJlbW92ZSBzb21lIHVzZSBvZiBgdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmVgIGluIFdlYlNwZWVjaFJlY29nbml6ZXJUYXNrIGFuZAorICAgICAgICBXZWJTcGVl
Y2hSZWNvZ25pemVyVGFza01vY2sgc2luY2UgaXQgY2F1c2VkIHNvbWUgdW5pZmllZCBidWlsZCBm
YWlsdXJlcy4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogTW9kdWxlcy9z
cGVlY2gvY29jb2EvV2ViU3BlZWNoUmVjb2duaXplclRhc2subW06CisgICAgICAgICgtW1dlYlNw
ZWVjaFJlY29nbml6ZXJUYXNrSW1wbCBpbml0V2l0aElkZW50aWZpZXI6bG9jYWxlOmRvTXVsdGlw
bGVSZWNvZ25pdGlvbnM6cmVwb3J0SW50ZXJpbVJlc3VsdHM6bWF4QWx0ZXJuYXRpdmVzOmRlbGVn
YXRlQ2FsbGJhY2s6XSk6CisgICAgICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrSW1wbCBj
YWxsYmFja1dpdGhUcmFuc2NyaXB0aW9uczppc0ZpbmFsOl0pOgorICAgICAgICAoLVtXZWJTcGVl
Y2hSZWNvZ25pemVyVGFza0ltcGwgc2VuZFNwZWVjaFN0YXJ0SWZOZWVkZWRdKToKKyAgICAgICAg
KC1bV2ViU3BlZWNoUmVjb2duaXplclRhc2tJbXBsIHNlbmRTcGVlY2hFbmRJZk5lZWRlZF0pOgor
ICAgICAgICAoLVtXZWJTcGVlY2hSZWNvZ25pemVyVGFza0ltcGwgc2VuZEVuZElmTmVlZGVkXSk6
CisgICAgICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrSW1wbCBzcGVlY2hSZWNvZ25pemVy
OmF2YWlsYWJpbGl0eURpZENoYW5nZTpdKToKKyAgICAgICAgKC1bV2ViU3BlZWNoUmVjb2duaXpl
clRhc2tJbXBsIHNwZWVjaFJlY29nbml0aW9uVGFzazpkaWRGaW5pc2hTdWNjZXNzZnVsbHk6XSk6
CisgICAgICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrIGluaXRXaXRoSWRlbnRpZmllcjps
b2NhbGU6ZG9NdWx0aXBsZVJlY29nbml0aW9uczpyZXBvcnRJbnRlcmltUmVzdWx0czptYXhBbHRl
cm5hdGl2ZXM6ZGVsZWdhdGVDYWxsYmFjazpdKToKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9j
b2NvYS9XZWJTcGVlY2hSZWNvZ25pemVyVGFza01vY2subW06CisgICAgICAgICgtW1dlYlNwZWVj
aFJlY29nbml6ZXJUYXNrTW9jayBpbml0V2l0aElkZW50aWZpZXI6bG9jYWxlOmRvTXVsdGlwbGVS
ZWNvZ25pdGlvbnM6cmVwb3J0SW50ZXJpbVJlc3VsdHM6bWF4QWx0ZXJuYXRpdmVzOmRlbGVnYXRl
Q2FsbGJhY2s6XSk6CisgICAgICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jayBhdWRp
b1NhbXBsZXNBdmFpbGFibGU6XSk6CisgICAgICAgICgtW1dlYlNwZWVjaFJlY29nbml6ZXJUYXNr
TW9jayBhYm9ydF0pOgorICAgICAgICAqIE1vZHVsZXMvc3lzdGVtLXByZXZpZXcvQVJLaXRCYWRn
ZVN5c3RlbUltYWdlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QVJLaXRCYWRnZVN5c3Rl
bUltYWdlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVJLaXRCYWRnZVN5c3Rl
bUltYWdlOjpkZWNvZGUpOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKiBNb2R1bGVzL3N5
c3RlbS1wcmV2aWV3L0FSS2l0QmFkZ2VTeXN0ZW1JbWFnZS5tbTogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjphcktpdEJ1bmRsZSk6CisgICAgICAgIChXZWJDb3JlOjpsb2FkQVJLaXRQREZQYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OnN5c3RlbVByZXZpZXdMb2dvKToKKyAgICAgICAgKFdlYkNv
cmU6OkFSS2l0QmFkZ2VTeXN0ZW1JbWFnZTo6ZHJhdyBjb25zdCk6CisgICAgICAgICogU291cmNl
c0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU3lzdGVtSW1hZ2UuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmRyYXdTeXN0ZW1JbWFnZSk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLmg6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclRoZW1lSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVJT1M6
OnBhaW50U3lzdGVtUHJldmlld0JhZGdlKToKKyAgICAgICAgKFdlYkNvcmU6OmFyS2l0QnVuZGxl
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmxvYWRBUktpdFBERlBhZ2UpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6c3lzdGVtUHJldmlld0xvZ28pOiBEZWxldGVkLgorCiAyMDIy
LTAzLTIzICBSb2IgQnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CiAKICAgICAgICAgc2V0TmVlZHNM
YXlvdXQoKSBzaG91bGQgbm90IGJlIGNhbGxlZCB3aGVuIGNoYW5naW5nIHRoZSBTVkcgcHJvcGVy
dGllcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCA0ZTM2NTFkNzA5NTliNzRhYWE2NjZmNTA2ZTQ2ZGJjY2Y2OGZlZmEy
Li5kNmM4OWVmYjg4YWE2NjAzNGU1ZGQ4NWJkMzFkZTVhNTc0NDdkZWZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE5IEBACisyMDIyLTAzLTI0ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQu
b3JnPgorCisgICAgICAgIERPTSBHUFVQOiBwYWludFN5c3RlbVByZXZpZXdCYWRnZSAoQVIgUXVp
Y2tMb29rIGVsZW1lbnQgYmFkZ2UpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzgyOTUKKyAgICAgICAgcmRhcjovLzgzNTgwNjA4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgRGVhbiBKYWNrc29uLgorCisgICAgICAgIE1ha2Ugc3VyZSB3ZSByZXN0b3Jl
IHRoZSBJbWFnZSBvbiB0aGUgQVJLaXRCYWRnZVN5c3RlbUltYWdlIGJlZm9yZSB3ZSBhdHRlbXB0
IHRvIGRyYXcgaXQuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3Bs
YXlMaXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVEaXNwbGF5TGlzdFJl
Y29yZGVyOjpkcmF3U3lzdGVtSW1hZ2UpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxTeXN0ZW1JbWFn
ZT4+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlZjxTeXN0ZW1JbWFn
ZT4+OjpkZWNvZGUpOgorCiAyMDIyLTAzLTIzICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUu
Y29tPgogCiAgICAgICAgIEFkZCBsb2dnaW5nIGZvciBMb2NhbFN0b3JhZ2UgYW5kIEluZGV4ZWRE
QiBkYXRhIG1pZ3JhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFr
ZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggNDBlMTVlYjFkN2M2MzZhNmFm
OGVmZmJmYTBhYzQ0OGM3OTVmZWE2Ny4uM2UwNzUyZDMzZDU5MWRlMGFmOTBhNDY0ODczM2VmMmRl
ZDVlYjViOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9T
b3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0zMzEsNiArMzMxLDggQEAgc2V0KFdlYkNv
cmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJs
ZVN0cmVhbVNpbmsuaAogICAgIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVNvdXJjZS5o
CiAKKyAgICBNb2R1bGVzL3N5c3RlbS1wcmV2aWV3L0FSS2l0QmFkZ2VTeXN0ZW1JbWFnZS5oCisK
ICAgICBNb2R1bGVzL3dlYi1sb2Nrcy9XZWJMb2NrSWRlbnRpZmllci5oCiAgICAgTW9kdWxlcy93
ZWItbG9ja3MvV2ViTG9ja01hbmFnZXJTbmFwc2hvdC5oCiAgICAgTW9kdWxlcy93ZWItbG9ja3Mv
V2ViTG9ja01vZGUuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gv
Y29jb2EvV2ViU3BlZWNoUmVjb2duaXplclRhc2subW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25pemVyVGFzay5tbQppbmRleCBiNjIyOTkwOGU3
NGFjMDI3OTlkNzc0MmIxNDMyOWZkMzNkYzQ3NmE5Li5hOTQxZDc2YTRmNzQ4NzE4ZGYxZTNjZmYy
YTZjNWUwODI3ZjQ4ODkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVj
aC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25pemVyVGFzay5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25pemVyVGFzay5tbQpAQCAtMzcsMTQg
KzM3LDEyIEBACiAvLyBTZXQgdGhlIG1heGltdW0gZHVyYXRpb24gdG8gYmUgYW4gaG91cjsgd2Ug
Y2FuIGFkanVzdCB0aGlzIGlmIG5lZWRlZC4KIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1heGlt
dW1SZWNvZ25pdGlvbkR1cmF0aW9uID0gNjAgKiA2MDsKIAotdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7Ci0KIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAKIEBpbnRlcmZhY2UgV2ViU3BlZWNoUmVj
b2duaXplclRhc2tJbXBsIDogTlNPYmplY3Q8U0ZTcGVlY2hSZWNvZ25pdGlvblRhc2tEZWxlZ2F0
ZSwgU0ZTcGVlY2hSZWNvZ25pemVyRGVsZWdhdGU+IHsKIEBwcml2YXRlCi0gICAgU3BlZWNoUmVj
b2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllciBfaWRlbnRpZmllcjsKLSAgICBCbG9j
a1B0cjx2b2lkKGNvbnN0IFNwZWVjaFJlY29nbml0aW9uVXBkYXRlJik+IF9kZWxlZ2F0ZUNhbGxi
YWNrOworICAgIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50
aWZpZXIgX2lkZW50aWZpZXI7CisgICAgQmxvY2tQdHI8dm9pZChjb25zdCBXZWJDb3JlOjpTcGVl
Y2hSZWNvZ25pdGlvblVwZGF0ZSYpPiBfZGVsZWdhdGVDYWxsYmFjazsKICAgICBib29sIF9kb011
bHRpcGxlUmVjb2duaXRpb25zOwogICAgIHVpbnQ2NF90IF9tYXhBbHRlcm5hdGl2ZXM7CiAgICAg
UmV0YWluUHRyPFNGU3BlZWNoUmVjb2duaXplcj4gX3JlY29nbml6ZXI7CkBAIC01NSw3ICs1Myw3
IEBAIEBwcml2YXRlCiAgICAgYm9vbCBfaGFzU2VudEVuZDsKIH0KIAotLSAoaW5zdGFuY2V0eXBl
KWluaXRXaXRoSWRlbnRpZmllcjooU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRl
bnRpZmllcilpZGVudGlmaWVyIGxvY2FsZTooTlNTdHJpbmcqKWxvY2FsZUlkZW50aWZpZXIgZG9N
dWx0aXBsZVJlY29nbml0aW9uczooQk9PTCljb250aW51b3VzIHJlcG9ydEludGVyaW1SZXN1bHRz
OihCT09MKWludGVyaW1SZXN1bHRzIG1heEFsdGVybmF0aXZlczoodW5zaWduZWQgbG9uZylhbHRl
cm5hdGl2ZXMgZGVsZWdhdGVDYWxsYmFjazoodm9pZCheKShjb25zdCBTcGVlY2hSZWNvZ25pdGlv
blVwZGF0ZSYpKWNhbGxiYWNrOworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSWRlbnRpZmllcjoo
V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcilpZGVu
dGlmaWVyIGxvY2FsZTooTlNTdHJpbmcqKWxvY2FsZUlkZW50aWZpZXIgZG9NdWx0aXBsZVJlY29n
bml0aW9uczooQk9PTCljb250aW51b3VzIHJlcG9ydEludGVyaW1SZXN1bHRzOihCT09MKWludGVy
aW1SZXN1bHRzIG1heEFsdGVybmF0aXZlczoodW5zaWduZWQgbG9uZylhbHRlcm5hdGl2ZXMgZGVs
ZWdhdGVDYWxsYmFjazoodm9pZCheKShjb25zdCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVw
ZGF0ZSYpKWNhbGxiYWNrOwogLSAodm9pZCljYWxsYmFja1dpdGhUcmFuc2NyaXB0aW9uczooTlNB
cnJheTxTRlRyYW5zY3JpcHRpb24gKj4gKil0cmFuc2NyaXB0aW9ucyBpc0ZpbmFsOihCT09MKWlz
RmluYWw7CiAtICh2b2lkKWF1ZGlvU2FtcGxlc0F2YWlsYWJsZTooQ01TYW1wbGVCdWZmZXJSZWYp
c2FtcGxlQnVmZmVyOwogLSAodm9pZClhYm9ydDsKQEAgLTY4LDcgKzY2LDcgQEAgQGVuZAogCiBA
aW1wbGVtZW50YXRpb24gV2ViU3BlZWNoUmVjb2duaXplclRhc2tJbXBsCiAKLS0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aElkZW50aWZpZXI6KFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVu
dElkZW50aWZpZXIpaWRlbnRpZmllciBsb2NhbGU6KE5TU3RyaW5nKilsb2NhbGVJZGVudGlmaWVy
IGRvTXVsdGlwbGVSZWNvZ25pdGlvbnM6KEJPT0wpY29udGludW91cyByZXBvcnRJbnRlcmltUmVz
dWx0czooQk9PTClpbnRlcmltUmVzdWx0cyBtYXhBbHRlcm5hdGl2ZXM6KHVuc2lnbmVkIGxvbmcp
YWx0ZXJuYXRpdmVzIGRlbGVnYXRlQ2FsbGJhY2s6KHZvaWQoXikoY29uc3QgU3BlZWNoUmVjb2du
aXRpb25VcGRhdGUmKSljYWxsYmFjaworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSWRlbnRpZmll
cjooV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcilp
ZGVudGlmaWVyIGxvY2FsZTooTlNTdHJpbmcqKWxvY2FsZUlkZW50aWZpZXIgZG9NdWx0aXBsZVJl
Y29nbml0aW9uczooQk9PTCljb250aW51b3VzIHJlcG9ydEludGVyaW1SZXN1bHRzOihCT09MKWlu
dGVyaW1SZXN1bHRzIG1heEFsdGVybmF0aXZlczoodW5zaWduZWQgbG9uZylhbHRlcm5hdGl2ZXMg
ZGVsZWdhdGVDYWxsYmFjazoodm9pZCheKShjb25zdCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
blVwZGF0ZSYpKWNhbGxiYWNrCiB7CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAg
ICAgICAgIHJldHVybiBuaWw7CkBAIC0xMTUsNyArMTEzLDcgQEAgLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoSWRlbnRpZmllcjooU3BlZWNoUmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRp
ZmllcikKIAogLSAodm9pZCljYWxsYmFja1dpdGhUcmFuc2NyaXB0aW9uczooTlNBcnJheTxTRlRy
YW5zY3JpcHRpb24gKj4gKil0cmFuc2NyaXB0aW9ucyBpc0ZpbmFsOihCT09MKWlzRmluYWwKIHsK
LSAgICBWZWN0b3I8U3BlZWNoUmVjb2duaXRpb25BbHRlcm5hdGl2ZURhdGE+IGFsdGVybmF0aXZl
czsKKyAgICBWZWN0b3I8V2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25BbHRlcm5hdGl2ZURhdGE+
IGFsdGVybmF0aXZlczsKICAgICBhbHRlcm5hdGl2ZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShf
bWF4QWx0ZXJuYXRpdmVzKTsKICAgICBmb3IgKFNGVHJhbnNjcmlwdGlvbiogdHJhbnNjcmlwdGlv
biBpbiB0cmFuc2NyaXB0aW9ucykgewogICAgICAgICAvLyBGSVhNRTogPHJkYXI6Ly83MzYyOTU3
Mz4gZ2V0IGNvbmZpZGVuY2Ugb2YgU0ZUcmFuc2NyaXB0aW9uIHdoZW4gcG9zc2libGUuCkBAIC0x
MjQsMTEgKzEyMiwxMSBAQCAtICh2b2lkKWNhbGxiYWNrV2l0aFRyYW5zY3JpcHRpb25zOihOU0Fy
cmF5PFNGVHJhbnNjcmlwdGlvbiAqPiAqKXRyYW5zY3JpcHRpb25zCiAgICAgICAgICAgICBkb3Vi
bGUgY29uZmlkZW5jZSA9IFtzZWdtZW50IGNvbmZpZGVuY2VdOwogICAgICAgICAgICAgbWF4Q29u
ZmlkZW5jZSA9IG1heENvbmZpZGVuY2UgPCBjb25maWRlbmNlID8gY29uZmlkZW5jZSA6IG1heENv
bmZpZGVuY2U7CiAgICAgICAgIH0KLSAgICAgICAgYWx0ZXJuYXRpdmVzLnVuY2hlY2tlZEFwcGVu
ZChTcGVlY2hSZWNvZ25pdGlvbkFsdGVybmF0aXZlRGF0YSB7IFt0cmFuc2NyaXB0aW9uIGZvcm1h
dHRlZFN0cmluZ10sIG1heENvbmZpZGVuY2UgfSk7CisgICAgICAgIGFsdGVybmF0aXZlcy51bmNo
ZWNrZWRBcHBlbmQoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25BbHRlcm5hdGl2ZURhdGEgeyBb
dHJhbnNjcmlwdGlvbiBmb3JtYXR0ZWRTdHJpbmddLCBtYXhDb25maWRlbmNlIH0pOwogICAgICAg
ICBpZiAoYWx0ZXJuYXRpdmVzLnNpemUoKSA9PSBfbWF4QWx0ZXJuYXRpdmVzKQogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgfQotICAgIF9kZWxlZ2F0ZUNhbGxiYWNrKFNwZWVjaFJlY29nbml0aW9u
VXBkYXRlOjpjcmVhdGVSZXN1bHQoX2lkZW50aWZpZXIsIHsgU3BlZWNoUmVjb2duaXRpb25SZXN1
bHREYXRhIHsgV1RGTW92ZShhbHRlcm5hdGl2ZXMpLCAhIWlzRmluYWwgfSB9KSk7CisgICAgX2Rl
bGVnYXRlQ2FsbGJhY2soV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZVJl
c3VsdChfaWRlbnRpZmllciwgeyBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblJlc3VsdERhdGEg
eyBXVEZNb3ZlKGFsdGVybmF0aXZlcyksICEhaXNGaW5hbCB9IH0pKTsKIH0KIAogLSAodm9pZClh
dWRpb1NhbXBsZXNBdmFpbGFibGU6KENNU2FtcGxlQnVmZmVyUmVmKXNhbXBsZUJ1ZmZlcgpAQCAt
MTc1LDcgKzE3Myw3IEBAIC0gKHZvaWQpc2VuZFNwZWVjaFN0YXJ0SWZOZWVkZWQKICAgICAgICAg
cmV0dXJuOwogCiAgICAgX2hhc1NlbnRTcGVlY2hTdGFydCA9IHRydWU7Ci0gICAgX2RlbGVnYXRl
Q2FsbGJhY2soU3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZShfaWRlbnRpZmllciwgU3Bl
ZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpTcGVlY2hTdGFydCkpOworICAgIF9kZWxlZ2F0ZUNh
bGxiYWNrKFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUoX2lkZW50aWZp
ZXIsIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6U3BlZWNoU3RhcnQpKTsK
IH0KIAogLSAodm9pZClzZW5kU3BlZWNoRW5kSWZOZWVkZWQKQEAgLTE4NCw3ICsxODIsNyBAQCAt
ICh2b2lkKXNlbmRTcGVlY2hFbmRJZk5lZWRlZAogICAgICAgICByZXR1cm47CiAKICAgICBfaGFz
U2VudFNwZWVjaEVuZCA9IHRydWU7Ci0gICAgX2RlbGVnYXRlQ2FsbGJhY2soU3BlZWNoUmVjb2du
aXRpb25VcGRhdGU6OmNyZWF0ZShfaWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVU
eXBlOjpTcGVlY2hFbmQpKTsKKyAgICBfZGVsZWdhdGVDYWxsYmFjayhXZWJDb3JlOjpTcGVlY2hS
ZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKF9pZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNv
Z25pdGlvblVwZGF0ZVR5cGU6OlNwZWVjaEVuZCkpOwogfQogCiAtICh2b2lkKXNlbmRFbmRJZk5l
ZWRlZApAQCAtMTkzLDcgKzE5MSw3IEBAIC0gKHZvaWQpc2VuZEVuZElmTmVlZGVkCiAgICAgICAg
IHJldHVybjsKIAogICAgIF9oYXNTZW50RW5kID0gdHJ1ZTsKLSAgICBfZGVsZWdhdGVDYWxsYmFj
ayhTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKF9pZGVudGlmaWVyLCBTcGVlY2hSZWNv
Z25pdGlvblVwZGF0ZVR5cGU6OkVuZCkpOworICAgIF9kZWxlZ2F0ZUNhbGxiYWNrKFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUoX2lkZW50aWZpZXIsIFdlYkNvcmU6OlNw
ZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RW5kKSk7CiB9CiAKICNwcmFnbWEgbWFyayBTRlNw
ZWVjaFJlY29nbml6ZXJEZWxlZ2F0ZQpAQCAtMjA1LDggKzIwMyw4IEBAIC0gKHZvaWQpc3BlZWNo
UmVjb2duaXplcjooU0ZTcGVlY2hSZWNvZ25pemVyICopc3BlZWNoUmVjb2duaXplciBhdmFpbGFi
aWxpdHlEaWRDCiAgICAgaWYgKGF2YWlsYWJsZSB8fCAhX3Rhc2spCiAgICAgICAgIHJldHVybjsK
IAotICAgIGF1dG8gZXJyb3IgPSBTcGVlY2hSZWNvZ25pdGlvbkVycm9yIHsgU3BlZWNoUmVjb2du
aXRpb25FcnJvclR5cGU6OlNlcnZpY2VOb3RBbGxvd2VkLCAiU3BlZWNoIHJlY29nbml0aW9uIHNl
cnZpY2UgYmVjb21lcyB1bmF2YWlsYWJsZSJfcyB9OwotICAgIF9kZWxlZ2F0ZUNhbGxiYWNrKFNw
ZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGVFcnJvcihfaWRlbnRpZmllciwgV1RGTW92ZShl
cnJvcikpKTsKKyAgICBhdXRvIGVycm9yID0gV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJv
ciB7IFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uRXJyb3JUeXBlOjpTZXJ2aWNlTm90QWxsb3dl
ZCwgIlNwZWVjaCByZWNvZ25pdGlvbiBzZXJ2aWNlIGJlY29tZXMgdW5hdmFpbGFibGUiX3MgfTsK
KyAgICBfZGVsZWdhdGVDYWxsYmFjayhXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6
Y3JlYXRlRXJyb3IoX2lkZW50aWZpZXIsIFdURk1vdmUoZXJyb3IpKSk7CiB9CiAKICNwcmFnbWEg
bWFyayBTRlNwZWVjaFJlY29nbml0aW9uVGFza0RlbGVnYXRlCkBAIC0yNDMsOCArMjQxLDggQEAg
LSAodm9pZClzcGVlY2hSZWNvZ25pdGlvblRhc2s6KFNGU3BlZWNoUmVjb2duaXRpb25UYXNrICop
dGFzayBkaWRGaW5pc2hTdWNjZXNzZnUKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAg
ICAgaWYgKCFzdWNjZXNzZnVsbHkpIHsKLSAgICAgICAgYXV0byBlcnJvciA9IFNwZWVjaFJlY29n
bml0aW9uRXJyb3IgeyBTcGVlY2hSZWNvZ25pdGlvbkVycm9yVHlwZTo6QWJvcnRlZCwgdGFzay5l
cnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbiB9OwotICAgICAgICBfZGVsZWdhdGVDYWxsYmFjayhT
cGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlRXJyb3IoX2lkZW50aWZpZXIsIFdURk1vdmUo
ZXJyb3IpKSk7CisgICAgICAgIGF1dG8gZXJyb3IgPSBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
bkVycm9yIHsgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25FcnJvclR5cGU6OkFib3J0ZWQsIHRh
c2suZXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24gfTsKKyAgICAgICAgX2RlbGVnYXRlQ2FsbGJh
Y2soV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZUVycm9yKF9pZGVudGlm
aWVyLCBXVEZNb3ZlKGVycm9yKSkpOwogICAgIH0KICAgICAKICAgICBbc2VsZiBzZW5kRW5kSWZO
ZWVkZWRdOwpAQCAtMjU0LDcgKzI1Miw3IEBAIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdlYlNw
ZWVjaFJlY29nbml6ZXJUYXNrCiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aElkZW50aWZpZXI6
KFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpaWRlbnRpZmllciBs
b2NhbGU6KE5TU3RyaW5nKilsb2NhbGVJZGVudGlmaWVyIGRvTXVsdGlwbGVSZWNvZ25pdGlvbnM6
KEJPT0wpY29udGludW91cyByZXBvcnRJbnRlcmltUmVzdWx0czooQk9PTClpbnRlcmltUmVzdWx0
cyBtYXhBbHRlcm5hdGl2ZXM6KHVuc2lnbmVkIGxvbmcpYWx0ZXJuYXRpdmVzIGRlbGVnYXRlQ2Fs
bGJhY2s6KHZvaWQoXikoY29uc3QgU3BlZWNoUmVjb2duaXRpb25VcGRhdGUmKSljYWxsYmFjawor
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSWRlbnRpZmllcjooV2ViQ29yZTo6U3BlZWNoUmVjb2du
aXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcilpZGVudGlmaWVyIGxvY2FsZTooTlNTdHJp
bmcqKWxvY2FsZUlkZW50aWZpZXIgZG9NdWx0aXBsZVJlY29nbml0aW9uczooQk9PTCljb250aW51
b3VzIHJlcG9ydEludGVyaW1SZXN1bHRzOihCT09MKWludGVyaW1SZXN1bHRzIG1heEFsdGVybmF0
aXZlczoodW5zaWduZWQgbG9uZylhbHRlcm5hdGl2ZXMgZGVsZWdhdGVDYWxsYmFjazoodm9pZChe
KShjb25zdCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYpKWNhbGxiYWNrCiB7CiAg
ICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNv
Z25pemVyVGFza01vY2subW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9jb2NvYS9X
ZWJTcGVlY2hSZWNvZ25pemVyVGFza01vY2subW0KaW5kZXggYzcyNzU5Yjc2N2FhOTU4N2Q3Mzdl
YTQwMjlhMzE2N2Y4Yzk3ZjJlOC4uMmQzNDhlZDIwYzIxYjUxMDM0ODg3OWQ1YzI2M2ZjMGUzY2Zl
ZDg2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvY29jb2EvV2Vi
U3BlZWNoUmVjb2duaXplclRhc2tNb2NrLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
c3BlZWNoL2NvY29hL1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jay5tbQpAQCAtMjgsMTMgKzI4
LDExIEBACiAKICNpZiBIQVZFKFNQRUVDSFJFQ09HTklaRVIpCiAKLXVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwotCiBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogCiBAaW1wbGVtZW50YXRpb24gV2Vi
U3BlZWNoUmVjb2duaXplclRhc2tNb2NrCiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aElkZW50
aWZpZXI6KFNwZWVjaFJlY29nbml0aW9uQ29ubmVjdGlvbkNsaWVudElkZW50aWZpZXIpaWRlbnRp
ZmllciBsb2NhbGU6KE5TU3RyaW5nKilsb2NhbGVJZGVudGlmaWVyIGRvTXVsdGlwbGVSZWNvZ25p
dGlvbnM6KEJPT0wpY29udGludW91cyByZXBvcnRJbnRlcmltUmVzdWx0czooQk9PTClpbnRlcmlt
UmVzdWx0cyBtYXhBbHRlcm5hdGl2ZXM6KHVuc2lnbmVkIGxvbmcpYWx0ZXJuYXRpdmVzIGRlbGVn
YXRlQ2FsbGJhY2s6KHZvaWQoXikoY29uc3QgU3BlZWNoUmVjb2duaXRpb25VcGRhdGUmKSljYWxs
YmFjaworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSWRlbnRpZmllcjooV2ViQ29yZTo6U3BlZWNo
UmVjb2duaXRpb25Db25uZWN0aW9uQ2xpZW50SWRlbnRpZmllcilpZGVudGlmaWVyIGxvY2FsZToo
TlNTdHJpbmcqKWxvY2FsZUlkZW50aWZpZXIgZG9NdWx0aXBsZVJlY29nbml0aW9uczooQk9PTClj
b250aW51b3VzIHJlcG9ydEludGVyaW1SZXN1bHRzOihCT09MKWludGVyaW1SZXN1bHRzIG1heEFs
dGVybmF0aXZlczoodW5zaWduZWQgbG9uZylhbHRlcm5hdGl2ZXMgZGVsZWdhdGVDYWxsYmFjazoo
dm9pZCheKShjb25zdCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZSYpKWNhbGxiYWNr
CiB7CiAgICAgVU5VU0VEX1BBUkFNKGxvY2FsZUlkZW50aWZpZXIpOwogICAgIFVOVVNFRF9QQVJB
TShpbnRlcmltUmVzdWx0cyk7CkBAIC01OSwxMiArNTcsMTIgQEAgLSAodm9pZClhdWRpb1NhbXBs
ZXNBdmFpbGFibGU6KENNU2FtcGxlQnVmZmVyUmVmKXNhbXBsZUJ1ZmZlcgogICAgIAogICAgIGlm
ICghX2hhc1NlbnRTcGVlY2hTdGFydCkgewogICAgICAgICBfaGFzU2VudFNwZWVjaFN0YXJ0ID0g
dHJ1ZTsKLSAgICAgICAgX2RlbGVnYXRlQ2FsbGJhY2soU3BlZWNoUmVjb2duaXRpb25VcGRhdGU6
OmNyZWF0ZShfaWRlbnRpZmllciwgU3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpTcGVlY2hT
dGFydCkpOworICAgICAgICBfZGVsZWdhdGVDYWxsYmFjayhXZWJDb3JlOjpTcGVlY2hSZWNvZ25p
dGlvblVwZGF0ZTo6Y3JlYXRlKF9pZGVudGlmaWVyLCBXZWJDb3JlOjpTcGVlY2hSZWNvZ25pdGlv
blVwZGF0ZVR5cGU6OlNwZWVjaFN0YXJ0KSk7CiAgICAgfQogCiAgICAgLy8gRmFrZSBzb21lIHJl
Y29nbml0aW9uIHJlc3VsdHMuCi0gICAgU3BlZWNoUmVjb2duaXRpb25BbHRlcm5hdGl2ZURhdGEg
YWx0ZXJuYXRpdmUgeyAiVGVzdCIsIDEuMCB9OwotICAgIF9kZWxlZ2F0ZUNhbGxiYWNrKFNwZWVj
aFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGVSZXN1bHQoX2lkZW50aWZpZXIsIHsgU3BlZWNoUmVj
b2duaXRpb25SZXN1bHREYXRhIHsgeyBXVEZNb3ZlKGFsdGVybmF0aXZlKSB9LCB0cnVlIH0gfSkp
OworICAgIFdlYkNvcmU6OlNwZWVjaFJlY29nbml0aW9uQWx0ZXJuYXRpdmVEYXRhIGFsdGVybmF0
aXZlIHsgIlRlc3QiLCAxLjAgfTsKKyAgICBfZGVsZWdhdGVDYWxsYmFjayhXZWJDb3JlOjpTcGVl
Y2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlUmVzdWx0KF9pZGVudGlmaWVyLCB7IFdlYkNvcmU6
OlNwZWVjaFJlY29nbml0aW9uUmVzdWx0RGF0YSB7IHsgV1RGTW92ZShhbHRlcm5hdGl2ZSkgfSwg
dHJ1ZSB9IH0pKTsKIAogICAgIGlmICghX2RvTXVsdGlwbGVSZWNvZ25pdGlvbnMpCiAgICAgICAg
IFtzZWxmIGFib3J0XTsKQEAgLTc4LDEwICs3NiwxMCBAQCAtICh2b2lkKWFib3J0CiAKICAgICBp
ZiAoIV9oYXNTZW50U3BlZWNoRW5kICYmIF9oYXNTZW50U3BlZWNoU3RhcnQpIHsKICAgICAgICAg
X2hhc1NlbnRTcGVlY2hFbmQgPSB0cnVlOwotICAgICAgICBfZGVsZWdhdGVDYWxsYmFjayhTcGVl
Y2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKF9pZGVudGlmaWVyLCBTcGVlY2hSZWNvZ25pdGlv
blVwZGF0ZVR5cGU6OlNwZWVjaEVuZCkpOworICAgICAgICBfZGVsZWdhdGVDYWxsYmFjayhXZWJD
b3JlOjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZTo6Y3JlYXRlKF9pZGVudGlmaWVyLCBXZWJDb3Jl
OjpTcGVlY2hSZWNvZ25pdGlvblVwZGF0ZVR5cGU6OlNwZWVjaEVuZCkpOwogICAgIH0KIAotICAg
IF9kZWxlZ2F0ZUNhbGxiYWNrKFNwZWVjaFJlY29nbml0aW9uVXBkYXRlOjpjcmVhdGUoX2lkZW50
aWZpZXIsIFNwZWVjaFJlY29nbml0aW9uVXBkYXRlVHlwZTo6RW5kKSk7CisgICAgX2RlbGVnYXRl
Q2FsbGJhY2soV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGU6OmNyZWF0ZShfaWRlbnRp
ZmllciwgV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRpb25VcGRhdGVUeXBlOjpFbmQpKTsKIH0KIAog
LSAodm9pZClzdG9wCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N5c3RlbS1w
cmV2aWV3L0FSS2l0QmFkZ2VTeXN0ZW1JbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
eXN0ZW0tcHJldmlldy9BUktpdEJhZGdlU3lzdGVtSW1hZ2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hOTI3OWY4
ZDdhNTM1ODRhMDE1YmVjMWM0YjZjM2MzOWI1YjJjZmQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zeXN0ZW0tcHJldmlldy9BUktpdEJhZGdlU3lzdGVtSW1hZ2Uu
aApAQCAtMCwwICsxLDExNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNF
KFNZU1RFTV9QUkVWSUVXKQorCisjaW5jbHVkZSAiTmF0aXZlSW1hZ2UuaCIKKyNpbmNsdWRlICJT
eXN0ZW1JbWFnZS5oIgorI2luY2x1ZGUgPG9wdGlvbmFsPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworT0JK
Q19DTEFTUyBDSUNvbnRleHQ7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgV0VCQ09S
RV9FWFBPUlQgQVJLaXRCYWRnZVN5c3RlbUltYWdlIGZpbmFsIDogcHVibGljIFN5c3RlbUltYWdl
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPEFSS2l0QmFkZ2VTeXN0ZW1JbWFnZT4gY3JlYXRl
KEltYWdlJiBpbWFnZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFSS2l0
QmFkZ2VTeXN0ZW1JbWFnZShpbWFnZSkpOworICAgIH0KKworICAgIHN0YXRpYyBSZWY8QVJLaXRC
YWRnZVN5c3RlbUltYWdlPiBjcmVhdGUoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciwgRmxvYXRTaXplIHNpemUpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBBUktpdEJhZGdlU3lzdGVtSW1hZ2UocmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyLCBzaXplKSk7CisgICAgfQorCisgICAgdmlydHVhbCB+QVJLaXRCYWRnZVN5
c3RlbUltYWdlKCkgPSBkZWZhdWx0OworCisgICAgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYpIGNvbnN0IGZpbmFsOworCisgICAgSW1hZ2UqIGltYWdlKCkgY29u
c3QgeyByZXR1cm4gbV9pbWFnZS5nZXQoKTsgfQorICAgIHZvaWQgc2V0SW1hZ2UoSW1hZ2UmIGlt
YWdlKSB7IG1faW1hZ2UgPSAmaW1hZ2U7IH0KKworICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciBpbWFnZUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcjsgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUo
RW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPFJlZjxBUktpdEJhZGdlU3lzdGVtSW1hZ2U+PiBkZWNvZGUoRGVjb2RlciYpOwor
Citwcml2YXRlOgorICAgIEFSS2l0QmFkZ2VTeXN0ZW1JbWFnZShJbWFnZSYgaW1hZ2UpCisgICAg
ICAgIDogU3lzdGVtSW1hZ2UoU3lzdGVtSW1hZ2VUeXBlOjpBUktpdEJhZGdlKQorICAgICAgICAs
IG1faW1hZ2UoJmltYWdlKQorICAgICAgICAsIG1faW1hZ2VTaXplKGltYWdlLnNpemUoKSkKKyAg
ICB7CisgICAgfQorCisgICAgQVJLaXRCYWRnZVN5c3RlbUltYWdlKFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIEZsb2F0U2l6ZSBzaXplKQor
ICAgICAgICA6IFN5c3RlbUltYWdlKFN5c3RlbUltYWdlVHlwZTo6QVJLaXRCYWRnZSkKKyAgICAg
ICAgLCBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcihyZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpCisgICAgICAgICwgbV9pbWFnZVNpemUoc2l6ZSkKKyAgICB7CisgICAgfQorCisgICAg
UmVmUHRyPEltYWdlPiBtX2ltYWdlOworICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBt
X3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsKKyAgICBGbG9hdFNpemUgbV9pbWFnZVNpemU7
Cit9OworCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBBUktpdEJhZGdlU3lzdGVtSW1h
Z2U6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIEFTU0VSVChtX2ltYWdl
KTsKKyAgICBBU1NFUlQobV9pbWFnZS0+bmF0aXZlSW1hZ2UoKSk7CisgICAgZW5jb2RlciA8PCBt
X2ltYWdlLT5uYXRpdmVJbWFnZSgpLT5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKTsKKyAg
ICBlbmNvZGVyIDw8IG1faW1hZ2VTaXplOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgor
c3RkOjpvcHRpb25hbDxSZWY8QVJLaXRCYWRnZVN5c3RlbUltYWdlPj4gQVJLaXRCYWRnZVN5c3Rl
bUltYWdlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOwor
ICAgIGRlY29kZXIgPj4gcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOworICAgIGlmICghcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFNpemU+IGltYWdlU2l6ZTsKKyAgICBkZWNvZGVyID4+
IGltYWdlU2l6ZTsKKyAgICBpZiAoIWltYWdlU2l6ZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKworICAgIHJldHVybiBBUktpdEJhZGdlU3lzdGVtSW1hZ2U6OmNyZWF0ZShXVEZNb3Zl
KCpyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpLCBXVEZNb3ZlKCppbWFnZVNpemUpKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lO
KFdlYkNvcmU6OkFSS2l0QmFkZ2VTeXN0ZW1JbWFnZSkKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUo
Y29uc3QgV2ViQ29yZTo6U3lzdGVtSW1hZ2UmIHN5c3RlbUltYWdlKSB7IHJldHVybiBzeXN0ZW1J
bWFnZS5zeXN0ZW1JbWFnZVR5cGUoKSA9PSBXZWJDb3JlOjpTeXN0ZW1JbWFnZVR5cGU6OkFSS2l0
QmFkZ2U7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKworI2VuZGlmIC8vIFVTRShT
WVNURU1fUFJFVklFVykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3lzdGVt
LXByZXZpZXcvQVJLaXRCYWRnZVN5c3RlbUltYWdlLm1tIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zeXN0ZW0tcHJldmlldy9BUktpdEJhZGdlU3lzdGVtSW1hZ2UubW0KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWFi
NTI2NTdmYmI1MjYyMjhjMzAwYzQ1ODU5ZGJjZjIxODExNGM2MQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3lzdGVtLXByZXZpZXcvQVJLaXRCYWRnZVN5c3RlbUlt
YWdlLm1tCkBAIC0wLDAgKzEsMjI3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgi
CisjaW1wb3J0ICJBUktpdEJhZGdlU3lzdGVtSW1hZ2UuaCIKKworI2lmIFVTRShTWVNURU1fUFJF
VklFVykKKworI2ltcG9ydCAiQ29sb3JTcGFjZUNHLmgiCisjaW1wb3J0ICJGbG9hdFJlY3QuaCIK
KyNpbXBvcnQgIkdlb21ldHJ5VXRpbGl0aWVzLmgiCisjaW1wb3J0ICJHcmFwaGljc0NvbnRleHQu
aCIKKyNpbXBvcnQgIklPU3VyZmFjZS5oIgorI2ltcG9ydCA8Q29yZUdyYXBoaWNzL0NvcmVHcmFw
aGljcy5oPgorI2ltcG9ydCA8Q29yZUltYWdlL0NvcmVJbWFnZS5oPgorI2ltcG9ydCA8d3RmL05l
dmVyRGVzdHJveWVkLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworc3RhdGljIE5TQnVuZGxlICphcktpdEJ1bmRsZSgpCit7CisgICAgc3RhdGlj
IE5TQnVuZGxlICphcktpdEJ1bmRsZTsKKyAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VU
b2tlbjsKKyAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57CisgICAgICAgIGFyS2l0QnVu
ZGxlID0gW10oKSB7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWV9TSU1VTEFUT1IpCisgICAgICAg
ICAgICBkbG9wZW4oIi9TeXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy9Bc3NldFZpZXdl
ci5mcmFtZXdvcmsvQXNzZXRWaWV3ZXIiLCBSVExEX05PVyk7CisgICAgICAgICAgICByZXR1cm4g
W05TQnVuZGxlIGJ1bmRsZUZvckNsYXNzOk5TQ2xhc3NGcm9tU3RyaW5nKEAiQVNWVGh1bWJuYWls
VmlldyIpXTsKKyNlbHNlCisgICAgICAgICAgICByZXR1cm4gW05TQnVuZGxlIGJ1bmRsZVdpdGhV
Ukw6W05TVVJMIGZpbGVVUkxXaXRoUGF0aDpAIi9TeXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3
b3Jrcy9Bc3NldFZpZXdlci5mcmFtZXdvcmsiXV07CisjZW5kaWYKKyAgICAgICAgfSgpOworICAg
IH0pOworICAgIHJldHVybiBhcktpdEJ1bmRsZTsKK30KKworc3RhdGljIFJldGFpblB0cjxDR1BE
RlBhZ2VSZWY+IGxvYWRBUktpdFBERlBhZ2UoTlNTdHJpbmcgKmltYWdlTmFtZSkKK3sKKyAgICBO
U1VSTCAqdXJsID0gW2FyS2l0QnVuZGxlKCkgVVJMRm9yUmVzb3VyY2U6aW1hZ2VOYW1lIHdpdGhF
eHRlbnNpb246QCJwZGYiXTsKKyAgICBpZiAoIXVybCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgYXV0byBkb2N1bWVudCA9IGFkb3B0Q0YoQ0dQREZEb2N1bWVudENyZWF0ZVdpdGhVUkwo
KENGVVJMUmVmKXVybCkpOworICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIGlmICghQ0dQREZEb2N1bWVudEdldE51bWJlck9mUGFnZXMoZG9jdW1lbnQuZ2V0
KCkpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gQ0dQREZEb2N1bWVudEdl
dFBhZ2UoZG9jdW1lbnQuZ2V0KCksIDEpOworfQorCitzdGF0aWMgUmV0YWluUHRyPENHUERGUGFn
ZVJlZj4gc3lzdGVtUHJldmlld0xvZ28oKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxS
ZXRhaW5QdHI8Q0dQREZQYWdlUmVmPj4gbG9nb1BhZ2U7CisgICAgc3RhdGljIGRpc3BhdGNoX29u
Y2VfdCBvbmNlVG9rZW47CisgICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeeworICAgICAg
ICBsb2dvUGFnZS5nZXQoKSA9IGxvYWRBUktpdFBERlBhZ2UoQCJBUktpdEJhZGdlIik7CisgICAg
fSk7CisgICAgcmV0dXJuIGxvZ29QYWdlOworfQorCit2b2lkIEFSS2l0QmFkZ2VTeXN0ZW1JbWFn
ZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiByZWN0KSBjb25zdAoreworICAgIGF1dG8gcGFnZSA9IHN5c3RlbVByZXZpZXdMb2dvKCk7Cisg
ICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBzdGF0aWMgY29uc3QgaW50IGxh
cmdlQmFkZ2VEaW1lbnNpb24gPSA3MDsKKyAgICBzdGF0aWMgY29uc3QgaW50IGxhcmdlQmFkZ2VP
ZmZzZXQgPSAyMDsKKworICAgIHN0YXRpYyBjb25zdCBpbnQgc21hbGxCYWRnZURpbWVuc2lvbiA9
IDM1OworICAgIHN0YXRpYyBjb25zdCBpbnQgc21hbGxCYWRnZU9mZnNldCA9IDg7CisKKyAgICBz
dGF0aWMgY29uc3QgaW50IG1pbmltdW1TaXplRm9yTGFyZ2VCYWRnZSA9IDI0MDsKKworICAgIGJv
b2wgdXNlU21hbGxCYWRnZSA9IHJlY3Qud2lkdGgoKSA8IG1pbmltdW1TaXplRm9yTGFyZ2VCYWRn
ZSB8fCByZWN0LmhlaWdodCgpIDwgbWluaW11bVNpemVGb3JMYXJnZUJhZGdlOworICAgIGludCBi
YWRnZU9mZnNldCA9IHVzZVNtYWxsQmFkZ2UgPyBzbWFsbEJhZGdlT2Zmc2V0IDogbGFyZ2VCYWRn
ZU9mZnNldDsKKyAgICBpbnQgYmFkZ2VEaW1lbnNpb24gPSB1c2VTbWFsbEJhZGdlID8gc21hbGxC
YWRnZURpbWVuc2lvbiA6IGxhcmdlQmFkZ2VEaW1lbnNpb247CisKKyAgICBpbnQgbWluaW11bURp
bWVuc2lvbiA9IGJhZGdlRGltZW5zaW9uICsgMiAqIGJhZGdlT2Zmc2V0OworICAgIGlmIChyZWN0
LndpZHRoKCkgPCBtaW5pbXVtRGltZW5zaW9uIHx8IHJlY3QuaGVpZ2h0KCkgPCBtaW5pbXVtRGlt
ZW5zaW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBDR1JlY3QgYWJzb2x1dGVCYWRnZVJlY3Qg
PSBDR1JlY3RNYWtlKHJlY3QueCgpICsgcmVjdC53aWR0aCgpIC0gYmFkZ2VEaW1lbnNpb24gLSBi
YWRnZU9mZnNldCwgcmVjdC55KCkgKyBiYWRnZU9mZnNldCwgYmFkZ2VEaW1lbnNpb24sIGJhZGdl
RGltZW5zaW9uKTsKKyAgICBDR1JlY3QgaW5zZXRCYWRnZVJlY3QgPSBDR1JlY3RNYWtlKHJlY3Qu
d2lkdGgoKSAtIGJhZGdlRGltZW5zaW9uIC0gYmFkZ2VPZmZzZXQsIGJhZGdlT2Zmc2V0LCBiYWRn
ZURpbWVuc2lvbiwgYmFkZ2VEaW1lbnNpb24pOworICAgIENHUmVjdCBiYWRnZVJlY3QgPSBDR1Jl
Y3RNYWtlKDAsIDAsIGJhZGdlRGltZW5zaW9uLCBiYWRnZURpbWVuc2lvbik7CisKKyAgICBpZiAo
IW1faW1hZ2UgfHwgIW1faW1hZ2UtPm5hdGl2ZUltYWdlKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIENJSW1hZ2UgKmlucHV0SW1hZ2UgPSBbQ0lJbWFnZSBpbWFnZVdpdGhDR0ltYWdlOm1faW1h
Z2UtPm5hdGl2ZUltYWdlKCktPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKV07CisKKyAgICAvLyBDcmVh
dGUgYSBjaXJjbGUgdG8gYmUgdXNlZCBmb3IgdGhlIGNsaXBwaW5nIHBhdGggaW4gdGhlIGJhZGdl
LCBhcyB3ZWxsIGFzIHRoZSBkcm9wIHNoYWRvdy4KKyAgICBSZXRhaW5QdHI8Q0dQYXRoUmVmPiBj
aXJjbGUgPSBhZG9wdENGKENHUGF0aENyZWF0ZVdpdGhSb3VuZGVkUmVjdChhYnNvbHV0ZUJhZGdl
UmVjdCwgYmFkZ2VEaW1lbnNpb24gLyAyLCBiYWRnZURpbWVuc2lvbiAvIDIsIG51bGxwdHIpKTsK
KworICAgIGlmIChncmFwaGljc0NvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoZ3JhcGhp
Y3NDb250ZXh0KTsKKworICAgIENHQ29udGV4dFJlZiBjdHggPSBncmFwaGljc0NvbnRleHQucGxh
dGZvcm1Db250ZXh0KCk7CisgICAgaWYgKCFjdHgpCisgICAgICAgIHJldHVybjsKKworICAgIENH
Q29udGV4dFNhdmVHU3RhdGUoY3R4KTsKKworICAgIC8vIERyYXcgYSBkcm9wIHNoYWRvdyBhcm91
bmQgdGhlIGNpcmNsZS4KKyAgICAvLyBVc2UgdGhlIEdyYXBoaWNzQ29udGV4dCBmdW5jdGlvbiwg
YmVjYXVzZSBpdCBjYWxjdWxhdGVzIHRoZSBibHVyIHJhZGl1cyBpbiBjb250ZXh0IHNwYWNlLAor
ICAgIC8vIHJhdGhlciB0aGFuIHNjcmVlbiBzcGFjZS4KKyAgICBjb25zdGV4cHIgYXV0byBzaGFk
b3dDb2xvciA9IENvbG9yOjpibGFjay5jb2xvcldpdGhBbHBoYUJ5dGUoMjYpOworICAgIGdyYXBo
aWNzQ29udGV4dC5zZXRTaGFkb3coRmxvYXRTaXplIHsgfSwgMTYsIHNoYWRvd0NvbG9yKTsKKwor
ICAgIC8vIFRoZSBjaXJjbGUgbXVzdCBoYXZlIGFuIGFscGhhIGNoYW5uZWwgdmFsdWUgb2YgMSBm
b3IgdGhlIHNoYWRvdyBjb2xvciB0byBhcHBlYXIuCisgICAgQ0dGbG9hdCBjaXJjbGVDb2xvckNv
bXBvbmVudHNbNF0gPSB7IDAsIDAsIDAsIDEgfTsKKyAgICBSZXRhaW5QdHI8Q0dDb2xvclJlZj4g
Y2lyY2xlQ29sb3IgPSBhZG9wdENGKENHQ29sb3JDcmVhdGUoc1JHQkNvbG9yU3BhY2VSZWYoKSwg
Y2lyY2xlQ29sb3JDb21wb25lbnRzKSk7CisgICAgQ0dDb250ZXh0U2V0RmlsbENvbG9yV2l0aENv
bG9yKGN0eCwgY2lyY2xlQ29sb3IuZ2V0KCkpOworCisgICAgLy8gQ2xpcCBvdXQgdGhlIGNpcmNs
ZSB0byBvbmx5IHNob3cgdGhlIHNoYWRvdy4KKyAgICBDR0NvbnRleHRCZWdpblBhdGgoY3R4KTsK
KyAgICBDR0NvbnRleHRBZGRSZWN0KGN0eCwgcmVjdCk7CisgICAgQ0dDb250ZXh0QWRkUGF0aChj
dHgsIGNpcmNsZS5nZXQoKSk7CisgICAgQ0dDb250ZXh0Q2xvc2VQYXRoKGN0eCk7CisgICAgQ0dD
b250ZXh0RU9DbGlwKGN0eCk7CisKKyAgICAvLyBEcmF3IGEgc2xpZ2h0bHkgc21hbGxlciBjaXJj
bGUgd2l0aCBhIHNoYWRvdywgb3RoZXJ3aXNlIHdlJ2xsIHNlZSBhIGZyaW5nZSBvZiB0aGUgc29s
aWQKKyAgICAvLyBibGFjayBjaXJjbGUgYXJvdW5kIHRoZSBlZGdlcyBvZiB0aGUgY2xpcHBlZCBw
YXRoIGJlbG93LgorICAgIENHQ29udGV4dEJlZ2luUGF0aChjdHgpOworICAgIENHUmVjdCBzbGln
aHRseVNtYWxsZXJBYnNvbHV0ZUJhZGdlUmVjdCA9IENHUmVjdE1ha2UoYWJzb2x1dGVCYWRnZVJl
Y3Qub3JpZ2luLnggKyAwLjUsIGFic29sdXRlQmFkZ2VSZWN0Lm9yaWdpbi55ICsgMC41LCBiYWRn
ZURpbWVuc2lvbiAtIDEsIGJhZGdlRGltZW5zaW9uIC0gMSk7CisgICAgUmV0YWluUHRyPENHUGF0
aFJlZj4gc2xpZ2h0bHlTbWFsbGVyQ2lyY2xlID0gYWRvcHRDRihDR1BhdGhDcmVhdGVXaXRoUm91
bmRlZFJlY3Qoc2xpZ2h0bHlTbWFsbGVyQWJzb2x1dGVCYWRnZVJlY3QsIHNsaWdodGx5U21hbGxl
ckFic29sdXRlQmFkZ2VSZWN0LnNpemUud2lkdGggLyAyLCBzbGlnaHRseVNtYWxsZXJBYnNvbHV0
ZUJhZGdlUmVjdC5zaXplLmhlaWdodCAvIDIsIG51bGxwdHIpKTsKKyAgICBDR0NvbnRleHRBZGRQ
YXRoKGN0eCwgc2xpZ2h0bHlTbWFsbGVyQ2lyY2xlLmdldCgpKTsKKyAgICBDR0NvbnRleHRDbG9z
ZVBhdGgoY3R4KTsKKyAgICBDR0NvbnRleHRGaWxsUGF0aChjdHgpOworCisgICAgQ0dDb250ZXh0
UmVzdG9yZUdTdGF0ZShjdHgpOworCisgICAgLy8gRHJhdyB0aGUgYmx1cnJlZCBiYWNrZHJvcC4g
U2NhbGUgZnJvbSBpbnRyaW5zaWMgc2l6ZSB0byByZW5kZXIgc2l6ZS4KKyAgICBDR0FmZmluZVRy
YW5zZm9ybSB0cmFuc2Zvcm0gPSBDR0FmZmluZVRyYW5zZm9ybUlkZW50aXR5OworICAgIHRyYW5z
Zm9ybSA9IENHQWZmaW5lVHJhbnNmb3JtU2NhbGUodHJhbnNmb3JtLCByZWN0LndpZHRoKCkgLyBt
X2ltYWdlU2l6ZS53aWR0aCgpLCByZWN0LmhlaWdodCgpIC8gbV9pbWFnZVNpemUuaGVpZ2h0KCkp
OworICAgIENJSW1hZ2UgKnNjYWxlZEltYWdlID0gW2lucHV0SW1hZ2UgaW1hZ2VCeUFwcGx5aW5n
VHJhbnNmb3JtOnRyYW5zZm9ybV07CisKKyAgICAvLyBDb3JlSW1hZ2UgY29vcmRpbmF0ZXMgYXJl
IHktdXAsIHNvIHdlIG5lZWQgdG8gZmxpcCB0aGUgYmFkZ2UgcmVjdGFuZ2xlIHdpdGhpbiB0aGUg
aW1hZ2UgZnJhbWUuCisgICAgQ0dSZWN0IGZsaXBwZWRJbnNldEJhZGdlUmVjdCA9IENHUmVjdE1h
a2UoaW5zZXRCYWRnZVJlY3Qub3JpZ2luLngsIHJlY3QuaGVpZ2h0KCkgLSBpbnNldEJhZGdlUmVj
dC5vcmlnaW4ueSAtIGluc2V0QmFkZ2VSZWN0LnNpemUuaGVpZ2h0LCBiYWRnZURpbWVuc2lvbiwg
YmFkZ2VEaW1lbnNpb24pOworCisgICAgLy8gQ3JlYXRlIGEgY3JvcHBlZCByZWdpb24gd2l0aCBw
aXhlbCB2YWx1ZXMgZXh0ZW5kaW5nIG91dHdhcmRzLgorICAgIENJSW1hZ2UgKmNsYW1wZWRJbWFn
ZSA9IFtzY2FsZWRJbWFnZSBpbWFnZUJ5Q2xhbXBpbmdUb1JlY3Q6ZmxpcHBlZEluc2V0QmFkZ2VS
ZWN0XTsKKworICAgIC8vIEJsdXIuCisgICAgQ0lJbWFnZSAqYmx1cnJlZEltYWdlID0gW2NsYW1w
ZWRJbWFnZSBpbWFnZUJ5QXBwbHlpbmdHYXVzc2lhbkJsdXJXaXRoU2lnbWE6MTBdOworCisgICAg
Ly8gU2F0dXJhdGUuCisgICAgQ0lGaWx0ZXIgKnNhdHVyYXRpb25GaWx0ZXIgPSBbQ0lGaWx0ZXIg
ZmlsdGVyV2l0aE5hbWU6QCJDSUNvbG9yQ29udHJvbHMiXTsKKyAgICBbc2F0dXJhdGlvbkZpbHRl
ciBzZXRWYWx1ZTpibHVycmVkSW1hZ2UgZm9yS2V5OmtDSUlucHV0SW1hZ2VLZXldOworICAgIFtz
YXR1cmF0aW9uRmlsdGVyIHNldFZhbHVlOkAxLjggZm9yS2V5OmtDSUlucHV0U2F0dXJhdGlvbktl
eV07CisKKyAgICAvLyBUaW50LgorICAgIENJRmlsdGVyICp0aW50RmlsdGVyMSA9IFtDSUZpbHRl
ciBmaWx0ZXJXaXRoTmFtZTpAIkNJQ29uc3RhbnRDb2xvckdlbmVyYXRvciJdOworICAgIENJQ29s
b3IgKnRpbnRDb2xvcjEgPSBbQ0lDb2xvciBjb2xvcldpdGhSZWQ6MSBncmVlbjoxIGJsdWU6MSBh
bHBoYTowLjE4XTsKKyAgICBbdGludEZpbHRlcjEgc2V0VmFsdWU6dGludENvbG9yMSBmb3JLZXk6
a0NJSW5wdXRDb2xvcktleV07CisKKyAgICAvLyBCbGVuZCB0aGUgdGludCB3aXRoIHRoZSBzYXR1
cmF0ZWQgb3V0cHV0LgorICAgIENJRmlsdGVyICpzb3VyY2VPdmVyRmlsdGVyID0gW0NJRmlsdGVy
IGZpbHRlcldpdGhOYW1lOkAiQ0lTb3VyY2VPdmVyQ29tcG9zaXRpbmciXTsKKyAgICBbc291cmNl
T3ZlckZpbHRlciBzZXRWYWx1ZTp0aW50RmlsdGVyMS5vdXRwdXRJbWFnZSBmb3JLZXk6a0NJSW5w
dXRJbWFnZUtleV07CisgICAgW3NvdXJjZU92ZXJGaWx0ZXIgc2V0VmFsdWU6c2F0dXJhdGlvbkZp
bHRlci5vdXRwdXRJbWFnZSBmb3JLZXk6a0NJSW5wdXRCYWNrZ3JvdW5kSW1hZ2VLZXldOworCisg
ICAgUmV0YWluUHRyPENJQ29udGV4dD4gY2lDb250ZXh0ID0gW0NJQ29udGV4dCBjb250ZXh0XTsK
KworICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBjZ0ltYWdlOworI2lmIEhBVkUoSU9TVVJGQUNF
X0NPUkVJTUFHRV9TVVBQT1JUKQorICAgIC8vIENyb3AgdGhlIHJlc3VsdCB0byB0aGUgYmFkZ2Ug
bG9jYXRpb24uCisgICAgQ0lJbWFnZSAqY3JvcHBlZEltYWdlID0gW3NvdXJjZU92ZXJGaWx0ZXIu
b3V0cHV0SW1hZ2UgaW1hZ2VCeUNyb3BwaW5nVG9SZWN0OmZsaXBwZWRJbnNldEJhZGdlUmVjdF07
CisgICAgQ0lJbWFnZSAqdHJhbnNsYXRlZEltYWdlID0gW2Nyb3BwZWRJbWFnZSBpbWFnZUJ5QXBw
bHlpbmdUcmFuc2Zvcm06Q0dBZmZpbmVUcmFuc2Zvcm1NYWtlVHJhbnNsYXRpb24oLWZsaXBwZWRJ
bnNldEJhZGdlUmVjdC5vcmlnaW4ueCwgLWZsaXBwZWRJbnNldEJhZGdlUmVjdC5vcmlnaW4ueSld
OworCisgICAgYXV0byBzdXJmYWNlRGltZW5zaW9uID0gdXNlU21hbGxCYWRnZSA/IHNtYWxsQmFk
Z2VEaW1lbnNpb24gOiBsYXJnZUJhZGdlRGltZW5zaW9uOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJ
T1N1cmZhY2U+IGJhZGdlU3VyZmFjZSA9IElPU3VyZmFjZTo6Y3JlYXRlKHsgc3VyZmFjZURpbWVu
c2lvbiwgc3VyZmFjZURpbWVuc2lvbiB9LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSk7
CisgICAgSU9TdXJmYWNlUmVmIHN1cmZhY2UgPSBiYWRnZVN1cmZhY2UtPnN1cmZhY2UoKTsKKyAg
ICBbY2lDb250ZXh0IHJlbmRlcjp0cmFuc2xhdGVkSW1hZ2UgdG9JT1N1cmZhY2U6c3VyZmFjZSBi
b3VuZHM6YmFkZ2VSZWN0IGNvbG9yU3BhY2U6c1JHQkNvbG9yU3BhY2VSZWYoKV07CisgICAgY2dJ
bWFnZSA9IHVzZVNtYWxsQmFkZ2UgPyBiYWRnZVN1cmZhY2UtPmNyZWF0ZUltYWdlKCkgOiBiYWRn
ZVN1cmZhY2UtPmNyZWF0ZUltYWdlKCk7CisjZWxzZQorICAgIGNnSW1hZ2UgPSBhZG9wdENGKFtj
aUNvbnRleHQgY3JlYXRlQ0dJbWFnZTpzb3VyY2VPdmVyRmlsdGVyLm91dHB1dEltYWdlIGZyb21S
ZWN0OmZsaXBwZWRJbnNldEJhZGdlUmVjdF0pOworI2VuZGlmCisKKyAgICAvLyBCZWZvcmUgd2Ug
cmVuZGVyIHRoZSByZXN1bHQsIHdlIHNob3VsZCBjbGlwIHRvIGEgY2lyY2xlIGFyb3VuZCB0aGUg
YmFkZ2UgcmVjdGFuZ2xlLgorICAgIENHQ29udGV4dFNhdmVHU3RhdGUoY3R4KTsKKyAgICBDR0Nv
bnRleHRCZWdpblBhdGgoY3R4KTsKKyAgICBDR0NvbnRleHRBZGRQYXRoKGN0eCwgY2lyY2xlLmdl
dCgpKTsKKyAgICBDR0NvbnRleHRDbG9zZVBhdGgoY3R4KTsKKyAgICBDR0NvbnRleHRDbGlwKGN0
eCk7CisKKyAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY3R4LCBhYnNvbHV0ZUJhZGdlUmVjdC5v
cmlnaW4ueCwgYWJzb2x1dGVCYWRnZVJlY3Qub3JpZ2luLnkpOworICAgIENHQ29udGV4dFRyYW5z
bGF0ZUNUTShjdHgsIDAsIGJhZGdlRGltZW5zaW9uKTsKKyAgICBDR0NvbnRleHRTY2FsZUNUTShj
dHgsIDEsIC0xKTsKKyAgICBDR0NvbnRleHREcmF3SW1hZ2UoY3R4LCBiYWRnZVJlY3QsIGNnSW1h
Z2UuZ2V0KCkpOworCisgICAgQ0dTaXplIHBkZlNpemUgPSBDR1BERlBhZ2VHZXRCb3hSZWN0KHBh
Z2UuZ2V0KCksIGtDR1BERk1lZGlhQm94KS5zaXplOworICAgIENHRmxvYXQgc2NhbGVYID0gYmFk
Z2VEaW1lbnNpb24gLyBwZGZTaXplLndpZHRoOworICAgIENHRmxvYXQgc2NhbGVZID0gYmFkZ2VE
aW1lbnNpb24gLyBwZGZTaXplLmhlaWdodDsKKyAgICBDR0NvbnRleHRTY2FsZUNUTShjdHgsIHNj
YWxlWCwgc2NhbGVZKTsKKyAgICBDR0NvbnRleHREcmF3UERGUGFnZShjdHgsIHBhZ2UuZ2V0KCkp
OworCisgICAgQ0dDb250ZXh0Rmx1c2goY3R4KTsKKyAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRl
KGN0eCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShTWVNU
RU1fUFJFVklFVykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDg5MzNiOWY5NWI0YzMwZGY3
NTE0MTc5YjYwMzE3ZTM4OWQxNDI5MzAuLjIxNjAzNDliMDgzNGRiMDEwNTJjNDk2OTU4Yjk2Y2U5
MGQ3MDBhNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysr
IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtMTE5LDYgKzExOSw3IEBAIE1v
ZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwCiBNb2R1bGVzL3NwZWVj
aC9jb2NvYS9TcGVlY2hSZWNvZ25pemVyQ29jb2EubW0KIE1vZHVsZXMvc3BlZWNoL2NvY29hL1dl
YlNwZWVjaFJlY29nbml6ZXJUYXNrLm1tCiBNb2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hS
ZWNvZ25pemVyVGFza01vY2subW0KK01vZHVsZXMvc3lzdGVtLXByZXZpZXcvQVJLaXRCYWRnZVN5
c3RlbUltYWdlLm1tCiBNb2R1bGVzL3dlYmRhdGFiYXNlL2NvY29hL0RhdGFiYXNlTWFuYWdlckNv
Y29hLm1tCiBhY2Nlc3NpYmlsaXR5L2lvcy9BWE9iamVjdENhY2hlSU9TLm1tCiBhY2Nlc3NpYmls
aXR5L2lvcy9BY2Nlc3NpYmlsaXR5T2JqZWN0SU9TLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZGQ4ZWU3YmMyMTBjMThiMzg2
NjhkMmU2OTk3ZTQ0Mjg4OGFmNTA4ZS4uOWNlMzg4MDBlOTcwMmZiOWI3YjljNGY5MGU0ZTE0Mzk5
ODVhY2ZmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMjMxMCw2ICsyMzEwLDcgQEAKIAkJNzE1NkJDQTEyMUNBMzUwRjAwNTM0
Mzk3IC8qIEJhc2ljRWZmZWN0VGltaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3MTU2QkM5RjIxQ0EzNTA2MDA1MzQzOTcgLyogQmFzaWNFZmZlY3RU
aW1pbmcuaCAqLzsgfTsKIAkJNzE1QUQ3MjAyMDUwNTEzMjAwRDU5MkRDIC8qIERlY2xhcmF0aXZl
QW5pbWF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3MTVBRDcxRDIwNTA1MTI0MDBENTkyREMgLyogRGVjbGFyYXRpdmVBbmltYXRpb24uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MTVBRDcyMTIw
NTA1MTNGMDBENTkyREMgLyogQ1NTVHJhbnNpdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzEyM0MxODYyMDQ3MzlCQTAwNzg5MzkyIC8qIENTU1Ry
YW5zaXRpb24uaCAqLzsgfTsKKwkJNzE2QzRDMzYyN0VCNjBDOTAwNTMxNDY3IC8qIEFSS2l0QmFk
Z2VTeXN0ZW1JbWFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzE2QzRDMzUyN0VCNjA4RTAwNTMxNDY3IC8qIEFSS2l0QmFkZ2VTeXN0ZW1JbWFnZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcxNzI5
RjdCMjBGM0JBNDkwMDgwMUNFNiAvKiBEb2N1bWVudFRpbWVsaW5lT3B0aW9ucy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzE3MjlGN0EyMEYzQkEzQTAw
ODAxQ0U2IC8qIERvY3VtZW50VGltZWxpbmVPcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzE3MjlGN0UyMEYzQkI0NzAwODAxQ0U2IC8q
IEpTRG9jdW1lbnRUaW1lbGluZU9wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDcxNzI5RjdDMjBGM0JBQjkwMDgwMUNFNiAvKiBKU0RvY3VtZW50
VGltZWxpbmVPcHRpb25zLmggKi87IH07CiAJCTcxNzM2OTRBMjc1RTBCNUUwMDNBREE5QiAvKiBD
dXN0b21FZmZlY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDcxQTc0QjA4Mjc1OTI5MzYwMERFODBCQSAvKiBDdXN0b21FZmZlY3QuaCAqLzsgfTsKQEAg
LTExMTg2LDYgKzExMTg3LDggQEAKIAkJNzE2QTU1QUIyNkZBMzQ5QjAwQzk2RDY5IC8qIHJhbmdl
LWJ1dHRvbi5jc3MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0LmNzczsgcGF0aCA9ICJyYW5nZS1idXR0b24uY3NzIjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNzE2QTU1QUQyNkZBMzQ5QzAwQzk2RDY5IC8qIHZvbHVtZS1idXR0b24u
anMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSAidm9sdW1lLWJ1dHRvbi5qcyI7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTcxNkE1NUFFMjZGQTM0OUMwMEM5NkQ2OSAvKiByYW5nZS1idXR0
b24uanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSAicmFuZ2UtYnV0dG9uLmpzIjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzE2QzRDMzQyN0VCNjA4RTAwNTMxNDY3IC8qIEFSS2l0QmFk
Z2VTeXN0ZW1JbWFnZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IEFSS2l0QmFkZ2VTeXN0ZW1JbWFnZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NzE2QzRDMzUyN0VCNjA4RTAwNTMxNDY3IC8qIEFSS2l0QmFkZ2VTeXN0ZW1JbWFnZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUktpdEJhZGdlU3lzdGVtSW1hZ2UuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzE2RkEwRDgxREIyNjU5MTAwNzMyM0NDIC8qIGFp
cnBsYXktYnV0dG9uLmNzcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuY3NzOyBwYXRoID0gImFpcnBsYXktYnV0
dG9uLmNzcyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxNkZBMEQ5MURCMjY1OTEw
MDczMjNDQyAvKiBhaXJwbGF5LWJ1dHRvbi5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNj
cmlwdDsgcGF0aCA9ICJhaXJwbGF5LWJ1dHRvbi5qcyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTcxNkZBMERBMURCMjY1OTEwMDczMjNDQyAvKiBhaXJwbGF5LXBsYWNhcmQuanMgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSAiYWlycGxheS1wbGFjYXJkLmpz
Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI0NjY1LDYgKzI0NjY4LDE1IEBACiAJ
CQlwYXRoID0gYW5pbWF0aW9uOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJ
NzE2QzRDMzMyN0VCNjA4RTAwNTMxNDY3IC8qIHN5c3RlbS1wcmV2aWV3ICovID0geworCQkJaXNh
ID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk3MTZDNEMzNTI3RUI2MDhFMDA1MzE0
NjcgLyogQVJLaXRCYWRnZVN5c3RlbUltYWdlLmggKi8sCisJCQkJNzE2QzRDMzQyN0VCNjA4RTAw
NTMxNDY3IC8qIEFSS2l0QmFkZ2VTeXN0ZW1JbWFnZS5tbSAqLywKKwkJCSk7CisJCQlwYXRoID0g
InN5c3RlbS1wcmV2aWV3IjsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTcx
NkZBMEQ3MURCMjY1OTEwMDczMjNDQyAvKiBjb250cm9scyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0yNjE3NSw2ICsyNjE4Nyw3IEBACiAJCQkJQUEyQTVB
QjcxNkE0ODVBNDAwOTc1QTI1IC8qIHNwZWVjaCAqLywKIAkJCQk5MzA4NURCMzI2RTAwNjhFMDAw
RUM2QTcgLyogc3RvcmFnZSAqLywKIAkJCQk0MUEwMjNFQTFBMzlEQjc5MDBGNzIyQ0YgLyogc3Ry
ZWFtcyAqLywKKwkJCQk3MTZDNEMzMzI3RUI2MDhFMDA1MzE0NjcgLyogc3lzdGVtLXByZXZpZXcg
Ki8sCiAJCQkJNDY0NEY3RUEyNzJBMUMxNjAwNTU1OTlFIC8qIHdlYi1sb2NrcyAqLywKIAkJCQlG
RDMxNUZBMjEyQjAyNUIxMDBDMUEzNTkgLyogd2ViYXVkaW8gKi8sCiAJCQkJNTdEODQ2MkExRkVB
RjU3RjAwQ0EzNjgyIC8qIHdlYmF1dGhuICovLApAQCAtMzM1OTgsNiArMzM2MTEsNyBAQAogCQkJ
CTUxMkREOEZEMEQ5MUU2QUYwMDBGODlFRSAvKiBBcmNoaXZlRmFjdG9yeS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTEyREQ4RkMwRDkxRTZBRjAwMEY4OUVFIC8qIEFyY2hpdmVSZXNvdXJjZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTEyREQ4RjgwRDkxRTZBRjAwMEY4OUVFIC8qIEFyY2hpdmVSZXNv
dXJjZUNvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTcxNkM0QzM2MjdFQjYwQzkwMDUz
MTQ2NyAvKiBBUktpdEJhZGdlU3lzdGVtSW1hZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUZENTY4
NkNBMTNBQzE4MDIwMEI2OUM2OCAvKiBBc3luY0F1ZGlvRGVjb2Rlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRTFDREU5MjIxNTAxOTE2OTAwODYyQ0M1IC8qIEFzeW5jRmlsZVN0cmVhbS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZGRDRENjExODY1MUZBMzAwNTEyRjZFIC8qIEFzeW5jU2Nyb2xsaW5n
Q29vcmRpbmF0b3IuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvU3lzdGVtSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1N5c3RlbUltYWdlLmgKaW5kZXggZmU4M2QzYTc0NzE2N2QxZjhkMjZhMDdlNGY5
MjU5NWJiZmYxM2QzNi4uZjVhYTI3NTYwMjg0YTZhMjQ0ZGQ5ZDZmMjdkMjAwMjA0OTc2MWRhYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU3lzdGVtSW1hZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TeXN0ZW1JbWFnZS5oCkBA
IC0zNyw2ICszNyw5IEBAIGVudW0gY2xhc3MgU3lzdGVtSW1hZ2VUeXBlIDogdWludDhfdCB7CiAg
ICAgQXBwbGVQYXlCdXR0b24sCiAgICAgQXBwbGVQYXlMb2dvLAogI2VuZGlmCisjaWYgVVNFKFNZ
U1RFTV9QUkVWSUVXKQorICAgIEFSS2l0QmFkZ2UsCisjZW5kaWYKIH07CiAKIGNsYXNzIFdFQkNP
UkVfRVhQT1JUIFN5c3RlbUltYWdlIDogcHVibGljIFJlZkNvdW50ZWQ8U3lzdGVtSW1hZ2U+IHsK
QEAgLTY4LDYgKzcxLDkgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpT
eXN0ZW1JbWFnZVR5cGU+IHsKICNpZiBFTkFCTEUoQVBQTEVfUEFZKQogICAgICAgICAsIFdlYkNv
cmU6OlN5c3RlbUltYWdlVHlwZTo6QXBwbGVQYXlCdXR0b24sCiAgICAgICAgIFdlYkNvcmU6OlN5
c3RlbUltYWdlVHlwZTo6QXBwbGVQYXlMb2dvCisjZW5kaWYKKyNpZiBVU0UoU1lTVEVNX1BSRVZJ
RVcpCisgICAgICAgICwgV2ViQ29yZTo6U3lzdGVtSW1hZ2VUeXBlOjpBUktpdEJhZGdlCiAjZW5k
aWYKICAgICA+OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcApp
bmRleCBmODY1OTZjMGNlNDI0MWZmYjZkMTc0NDE0YWEyMjQxOWIzOWYxZDFlLi4xMGJjMmM5MDM0
ZTY2ZWFhMDdlZjBiYzRmYjZkOThkYTUyOTE0YTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVjb3JkZXIuY3BwCkBAIC0zOSw2ICszOSwxMCBAQAogI2luY2x1ZGUgPHd0Zi9NYXRo
RXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCisjaWYgVVNFKFNZ
U1RFTV9QUkVWSUVXKQorI2luY2x1ZGUgIkFSS2l0QmFkZ2VTeXN0ZW1JbWFnZS5oIgorI2VuZGlm
CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiAKQEAgLTE4
OCw2ICsxOTIsMTIgQEAgdm9pZCBSZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdl
JiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGMKIAogdm9pZCBSZWNvcmRlcjo6
ZHJhd1N5c3RlbUltYWdlKFN5c3RlbUltYWdlJiBzeXN0ZW1JbWFnZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0aW5hdGlvblJlY3QpCiB7CisjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQorICAgIGlmIChp
czxBUktpdEJhZGdlU3lzdGVtSW1hZ2U+KHN5c3RlbUltYWdlKSkgeworICAgICAgICBpZiAoYXV0
byBpbWFnZSA9IGRvd25jYXN0PEFSS2l0QmFkZ2VTeXN0ZW1JbWFnZT4oc3lzdGVtSW1hZ2UpLmlt
YWdlKCkpCisgICAgICAgICAgICByZWNvcmRSZXNvdXJjZVVzZSgqaW1hZ2UtPm5hdGl2ZUltYWdl
KCkpOworICAgIH0KKyNlbmRpZgogICAgIHJlY29yZERyYXdTeXN0ZW1JbWFnZShzeXN0ZW1JbWFn
ZSwgZGVzdGluYXRpb25SZWN0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lSU9TLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVJT1MuaAppbmRleCBlNDRiZDY4MjI3NjE5MjM2NGM3NjNiOGVkNTZlNzRmMzBkNTVmYTEz
Li41MmQ3MGFkYzg5ZGFjNjU1ZGJiNTBlMzViNzAxYzM4Yjk2MjQzYjM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MuaApAQCAtMzAsMTIgKzMwLDYgQEAKICNpbmNs
dWRlICJDU1NWYWx1ZUtleS5oIgogI2luY2x1ZGUgIlJlbmRlclRoZW1lQ29jb2EuaCIKIAotI2lm
IFVTRShTWVNURU1fUFJFVklFVykKLSNpbmNsdWRlICJJT1N1cmZhY2UuaCIKLSNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+Ci0jZW5kaWYKLQotT0JKQ19DTEFTUyBDSUNvbnRleHQ7CiBPQkpDX0NM
QVNTIFVJSW1hZ2U7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTIxNywxMiArMjExLDYgQEAg
cHJpdmF0ZToKIAogICAgIHZvaWQgYWRqdXN0U3R5bGVGb3JBbHRlcm5hdGVGb3JtQ29udHJvbERl
c2lnblRyYW5zaXRpb24oUmVuZGVyU3R5bGUmLCBjb25zdCBFbGVtZW50KikgY29uc3Q7CiAKLSNp
ZiBVU0UoU1lTVEVNX1BSRVZJRVcpCi0gICAgUmV0YWluUHRyPENJQ29udGV4dD4gbV9jaUNvbnRl
eHQ7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPElPU3VyZmFjZT4gbV9sYXJnZUJhZGdlU3VyZmFjZTsK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBtX3NtYWxsQmFkZ2VTdXJmYWNlOwotI2Vu
ZGlmCi0KICAgICBib29sIG1fc2hvdWxkTW9ja0JvbGRTeXN0ZW1Gb250Rm9yQWNjZXNzaWJpbGl0
eSB7IGZhbHNlIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJ
T1MubW0KaW5kZXggYWU3ODI0MmIzMmNmYmI1ZGJkNjIzYmIxMjk2MmNjNTBiNWJkNWE1Yi4uNzM5
M2Q3MDhmMDQxNGQ2ZDVjZjcyZTI1MmQ1MWFhYjRhMTU5OTg4NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKIAorI2ltcG9ydCAiQVJLaXRCYWRnZVN5c3RlbUltYWdlLmgiCiAj
aW1wb3J0ICJCaXRtYXBJbWFnZS5oIgogI2ltcG9ydCAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKICNp
bXBvcnQgIkNTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEuaCIKQEAgLTIwMDcsMTg2ICsyMDA4LDkg
QEAgU3RyaW5nIFJlbmRlclRoZW1lSU9TOjpleHRyYURlZmF1bHRTdHlsZVNoZWV0KCkKICNlbmRp
ZgogCiAjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQotc3RhdGljIE5TQnVuZGxlICphcktpdEJ1bmRs
ZSgpCi17Ci0gICAgc3RhdGljIE5TQnVuZGxlICphcktpdEJ1bmRsZSA9IFtdKCkgewotI2lmIFBM
QVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9SKQotICAgICAgICBkbG9wZW4oIi9TeXN0ZW0vTGli
cmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy9Bc3NldFZpZXdlci5mcmFtZXdvcmsvQXNzZXRWaWV3ZXIi
LCBSVExEX05PVyk7Ci0gICAgICAgIHJldHVybiBbTlNCdW5kbGUgYnVuZGxlRm9yQ2xhc3M6TlND
bGFzc0Zyb21TdHJpbmcoQCJBU1ZUaHVtYm5haWxWaWV3IildOwotI2Vsc2UKLSAgICAgICAgcmV0
dXJuIFtOU0J1bmRsZSBidW5kbGVXaXRoVVJMOltOU1VSTCBmaWxlVVJMV2l0aFBhdGg6QCIvU3lz
dGVtL0xpYnJhcnkvUHJpdmF0ZUZyYW1ld29ya3MvQXNzZXRWaWV3ZXIuZnJhbWV3b3JrIl1dOwot
I2VuZGlmCi0gICAgfSgpOwotCi0gICAgcmV0dXJuIGFyS2l0QnVuZGxlOwotfQotCi1zdGF0aWMg
UmV0YWluUHRyPENHUERGUGFnZVJlZj4gbG9hZEFSS2l0UERGUGFnZShOU1N0cmluZyAqaW1hZ2VO
YW1lKQotewotICAgIE5TVVJMICp1cmwgPSBbYXJLaXRCdW5kbGUoKSBVUkxGb3JSZXNvdXJjZTpp
bWFnZU5hbWUgd2l0aEV4dGVuc2lvbjpAInBkZiJdOwotCi0gICAgaWYgKCF1cmwpCi0gICAgICAg
IHJldHVybiBudWxscHRyOwotCi0gICAgYXV0byBkb2N1bWVudCA9IGFkb3B0Q0YoQ0dQREZEb2N1
bWVudENyZWF0ZVdpdGhVUkwoKENGVVJMUmVmKXVybCkpOwotICAgIGlmICghZG9jdW1lbnQpCi0g
ICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgaWYgKCFDR1BERkRvY3VtZW50R2V0TnVtYmVy
T2ZQYWdlcyhkb2N1bWVudC5nZXQoKSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAg
cmV0dXJuIENHUERGRG9jdW1lbnRHZXRQYWdlKGRvY3VtZW50LmdldCgpLCAxKTsKLX0KLQotc3Rh
dGljIENHUERGUGFnZVJlZiBzeXN0ZW1QcmV2aWV3TG9nbygpCi17Ci0gICAgc3RhdGljIENHUERG
UGFnZVJlZiBsb2dvUGFnZSA9IGxvYWRBUktpdFBERlBhZ2UoQCJBUktpdEJhZGdlIikubGVha1Jl
ZigpOwotICAgIHJldHVybiBsb2dvUGFnZTsKLX0KLQogdm9pZCBSZW5kZXJUaGVtZUlPUzo6cGFp
bnRTeXN0ZW1QcmV2aWV3QmFkZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBQYWludEluZm8mIHBhaW50
SW5mbywgY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewotICAgIHN0YXRpYyBjb25zdCBpbnQgbGFy
Z2VCYWRnZURpbWVuc2lvbiA9IDcwOwotICAgIHN0YXRpYyBjb25zdCBpbnQgbGFyZ2VCYWRnZU9m
ZnNldCA9IDIwOwotCi0gICAgc3RhdGljIGNvbnN0IGludCBzbWFsbEJhZGdlRGltZW5zaW9uID0g
MzU7Ci0gICAgc3RhdGljIGNvbnN0IGludCBzbWFsbEJhZGdlT2Zmc2V0ID0gODsKLQotICAgIHN0
YXRpYyBjb25zdCBpbnQgbWluaW11bVNpemVGb3JMYXJnZUJhZGdlID0gMjQwOwotCi0gICAgYm9v
bCB1c2VTbWFsbEJhZGdlID0gcmVjdC53aWR0aCgpIDwgbWluaW11bVNpemVGb3JMYXJnZUJhZGdl
IHx8IHJlY3QuaGVpZ2h0KCkgPCBtaW5pbXVtU2l6ZUZvckxhcmdlQmFkZ2U7Ci0gICAgaW50IGJh
ZGdlT2Zmc2V0ID0gdXNlU21hbGxCYWRnZSA/IHNtYWxsQmFkZ2VPZmZzZXQgOiBsYXJnZUJhZGdl
T2Zmc2V0OwotICAgIGludCBiYWRnZURpbWVuc2lvbiA9IHVzZVNtYWxsQmFkZ2UgPyBzbWFsbEJh
ZGdlRGltZW5zaW9uIDogbGFyZ2VCYWRnZURpbWVuc2lvbjsKLQotICAgIGludCBtaW5pbXVtRGlt
ZW5zaW9uID0gYmFkZ2VEaW1lbnNpb24gKyAyICogYmFkZ2VPZmZzZXQ7Ci0gICAgaWYgKHJlY3Qu
d2lkdGgoKSA8IG1pbmltdW1EaW1lbnNpb24gfHwgcmVjdC5oZWlnaHQoKSA8IG1pbmltdW1EaW1l
bnNpb24pCi0gICAgICAgIHJldHVybjsKLQotICAgIENHUmVjdCBhYnNvbHV0ZUJhZGdlUmVjdCA9
IENHUmVjdE1ha2UocmVjdC54KCkgKyByZWN0LndpZHRoKCkgLSBiYWRnZURpbWVuc2lvbiAtIGJh
ZGdlT2Zmc2V0LCByZWN0LnkoKSArIGJhZGdlT2Zmc2V0LCBiYWRnZURpbWVuc2lvbiwgYmFkZ2VE
aW1lbnNpb24pOwotICAgIENHUmVjdCBpbnNldEJhZGdlUmVjdCA9IENHUmVjdE1ha2UocmVjdC53
aWR0aCgpIC0gYmFkZ2VEaW1lbnNpb24gLSBiYWRnZU9mZnNldCwgYmFkZ2VPZmZzZXQsIGJhZGdl
RGltZW5zaW9uLCBiYWRnZURpbWVuc2lvbik7Ci0gICAgQ0dSZWN0IGJhZGdlUmVjdCA9IENHUmVj
dE1ha2UoMCwgMCwgYmFkZ2VEaW1lbnNpb24sIGJhZGdlRGltZW5zaW9uKTsKLQotICAgIENJSW1h
Z2UgKmlucHV0SW1hZ2UgPSBbQ0lJbWFnZSBpbWFnZVdpdGhDR0ltYWdlOmltYWdlLm5hdGl2ZUlt
YWdlKCktPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKV07Ci0KLSAgICAvLyBDcmVhdGUgYSBjaXJjbGUg
dG8gYmUgdXNlZCBmb3IgdGhlIGNsaXBwaW5nIHBhdGggaW4gdGhlIGJhZGdlLCBhcyB3ZWxsIGFz
IHRoZSBkcm9wIHNoYWRvdy4KLSAgICBSZXRhaW5QdHI8Q0dQYXRoUmVmPiBjaXJjbGUgPSBhZG9w
dENGKENHUGF0aENyZWF0ZVdpdGhSb3VuZGVkUmVjdChhYnNvbHV0ZUJhZGdlUmVjdCwgYmFkZ2VE
aW1lbnNpb24gLyAyLCBiYWRnZURpbWVuc2lvbiAvIDIsIG51bGxwdHIpKTsKLQotICAgIGF1dG8m
IGdyYXBoaWNzQ29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0KCk7Ci0gICAgaWYgKGdyYXBoaWNz
Q29udGV4dC5wYWludGluZ0Rpc2FibGVkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIEdyYXBo
aWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihncmFwaGljc0NvbnRleHQpOwotCi0gICAg
Q0dDb250ZXh0UmVmIGN0eCA9IGdyYXBoaWNzQ29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKTsKLSAg
ICBpZiAoIWN0eCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShj
dHgpOwotCi0gICAgLy8gRHJhdyBhIGRyb3Agc2hhZG93IGFyb3VuZCB0aGUgY2lyY2xlLgotICAg
IC8vIFVzZSB0aGUgR3JhcGhpY3NDb250ZXh0IGZ1bmN0aW9uLCBiZWNhdXNlIGl0IGNhbGN1bGF0
ZXMgdGhlIGJsdXIgcmFkaXVzIGluIGNvbnRleHQgc3BhY2UsCi0gICAgLy8gcmF0aGVyIHRoYW4g
c2NyZWVuIHNwYWNlLgotICAgIGNvbnN0ZXhwciBhdXRvIHNoYWRvd0NvbG9yID0gQ29sb3I6OmJs
YWNrLmNvbG9yV2l0aEFscGhhQnl0ZSgyNik7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LnNldFNoYWRv
dyhGbG9hdFNpemUgeyB9LCAxNiwgc2hhZG93Q29sb3IpOwotCi0gICAgLy8gVGhlIGNpcmNsZSBt
dXN0IGhhdmUgYW4gYWxwaGEgY2hhbm5lbCB2YWx1ZSBvZiAxIGZvciB0aGUgc2hhZG93IGNvbG9y
IHRvIGFwcGVhci4KLSAgICBDR0Zsb2F0IGNpcmNsZUNvbG9yQ29tcG9uZW50c1s0XSA9IHsgMCwg
MCwgMCwgMSB9OwotICAgIFJldGFpblB0cjxDR0NvbG9yUmVmPiBjaXJjbGVDb2xvciA9IGFkb3B0
Q0YoQ0dDb2xvckNyZWF0ZShzUkdCQ29sb3JTcGFjZVJlZigpLCBjaXJjbGVDb2xvckNvbXBvbmVu
dHMpKTsKLSAgICBDR0NvbnRleHRTZXRGaWxsQ29sb3JXaXRoQ29sb3IoY3R4LCBjaXJjbGVDb2xv
ci5nZXQoKSk7Ci0KLSAgICAvLyBDbGlwIG91dCB0aGUgY2lyY2xlIHRvIG9ubHkgc2hvdyB0aGUg
c2hhZG93LgotICAgIENHQ29udGV4dEJlZ2luUGF0aChjdHgpOwotICAgIENHQ29udGV4dEFkZFJl
Y3QoY3R4LCByZWN0KTsKLSAgICBDR0NvbnRleHRBZGRQYXRoKGN0eCwgY2lyY2xlLmdldCgpKTsK
LSAgICBDR0NvbnRleHRDbG9zZVBhdGgoY3R4KTsKLSAgICBDR0NvbnRleHRFT0NsaXAoY3R4KTsK
LQotICAgIC8vIERyYXcgYSBzbGlnaHRseSBzbWFsbGVyIGNpcmNsZSB3aXRoIGEgc2hhZG93LCBv
dGhlcndpc2Ugd2UnbGwgc2VlIGEgZnJpbmdlIG9mIHRoZSBzb2xpZAotICAgIC8vIGJsYWNrIGNp
cmNsZSBhcm91bmQgdGhlIGVkZ2VzIG9mIHRoZSBjbGlwcGVkIHBhdGggYmVsb3cuCi0gICAgQ0dD
b250ZXh0QmVnaW5QYXRoKGN0eCk7Ci0gICAgQ0dSZWN0IHNsaWdodGx5U21hbGxlckFic29sdXRl
QmFkZ2VSZWN0ID0gQ0dSZWN0TWFrZShhYnNvbHV0ZUJhZGdlUmVjdC5vcmlnaW4ueCArIDAuNSwg
YWJzb2x1dGVCYWRnZVJlY3Qub3JpZ2luLnkgKyAwLjUsIGJhZGdlRGltZW5zaW9uIC0gMSwgYmFk
Z2VEaW1lbnNpb24gLSAxKTsKLSAgICBSZXRhaW5QdHI8Q0dQYXRoUmVmPiBzbGlnaHRseVNtYWxs
ZXJDaXJjbGUgPSBhZG9wdENGKENHUGF0aENyZWF0ZVdpdGhSb3VuZGVkUmVjdChzbGlnaHRseVNt
YWxsZXJBYnNvbHV0ZUJhZGdlUmVjdCwgc2xpZ2h0bHlTbWFsbGVyQWJzb2x1dGVCYWRnZVJlY3Qu
c2l6ZS53aWR0aCAvIDIsIHNsaWdodGx5U21hbGxlckFic29sdXRlQmFkZ2VSZWN0LnNpemUuaGVp
Z2h0IC8gMiwgbnVsbHB0cikpOwotICAgIENHQ29udGV4dEFkZFBhdGgoY3R4LCBzbGlnaHRseVNt
YWxsZXJDaXJjbGUuZ2V0KCkpOwotICAgIENHQ29udGV4dENsb3NlUGF0aChjdHgpOwotICAgIENH
Q29udGV4dEZpbGxQYXRoKGN0eCk7Ci0KLSAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGN0eCk7
Ci0KLSAgICAvLyBEcmF3IHRoZSBibHVycmVkIGJhY2tkcm9wLiBTY2FsZSBmcm9tIGludHJpbnNp
YyBzaXplIHRvIHJlbmRlciBzaXplLgotICAgIENHQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybSA9
IENHQWZmaW5lVHJhbnNmb3JtSWRlbnRpdHk7Ci0gICAgdHJhbnNmb3JtID0gQ0dBZmZpbmVUcmFu
c2Zvcm1TY2FsZSh0cmFuc2Zvcm0sIHJlY3Qud2lkdGgoKSAvIGltYWdlLndpZHRoKCksIHJlY3Qu
aGVpZ2h0KCkgLyBpbWFnZS5oZWlnaHQoKSk7Ci0gICAgQ0lJbWFnZSAqc2NhbGVkSW1hZ2UgPSBb
aW5wdXRJbWFnZSBpbWFnZUJ5QXBwbHlpbmdUcmFuc2Zvcm06dHJhbnNmb3JtXTsKLQotICAgIC8v
IENvcmVJbWFnZSBjb29yZGluYXRlcyBhcmUgeS11cCwgc28gd2UgbmVlZCB0byBmbGlwIHRoZSBi
YWRnZSByZWN0YW5nbGUgd2l0aGluIHRoZSBpbWFnZSBmcmFtZS4KLSAgICBDR1JlY3QgZmxpcHBl
ZEluc2V0QmFkZ2VSZWN0ID0gQ0dSZWN0TWFrZShpbnNldEJhZGdlUmVjdC5vcmlnaW4ueCwgcmVj
dC5oZWlnaHQoKSAtIGluc2V0QmFkZ2VSZWN0Lm9yaWdpbi55IC0gaW5zZXRCYWRnZVJlY3Quc2l6
ZS5oZWlnaHQsIGJhZGdlRGltZW5zaW9uLCBiYWRnZURpbWVuc2lvbik7Ci0KLSAgICAvLyBDcmVh
dGUgYSBjcm9wcGVkIHJlZ2lvbiB3aXRoIHBpeGVsIHZhbHVlcyBleHRlbmRpbmcgb3V0d2FyZHMu
Ci0gICAgQ0lJbWFnZSAqY2xhbXBlZEltYWdlID0gW3NjYWxlZEltYWdlIGltYWdlQnlDbGFtcGlu
Z1RvUmVjdDpmbGlwcGVkSW5zZXRCYWRnZVJlY3RdOwotCi0gICAgLy8gQmx1ci4KLSAgICBDSUlt
YWdlICpibHVycmVkSW1hZ2UgPSBbY2xhbXBlZEltYWdlIGltYWdlQnlBcHBseWluZ0dhdXNzaWFu
Qmx1cldpdGhTaWdtYToxMF07Ci0KLSAgICAvLyBTYXR1cmF0ZS4KLSAgICBDSUZpbHRlciAqc2F0
dXJhdGlvbkZpbHRlciA9IFtDSUZpbHRlciBmaWx0ZXJXaXRoTmFtZTpAIkNJQ29sb3JDb250cm9s
cyJdOwotICAgIFtzYXR1cmF0aW9uRmlsdGVyIHNldFZhbHVlOmJsdXJyZWRJbWFnZSBmb3JLZXk6
a0NJSW5wdXRJbWFnZUtleV07Ci0gICAgW3NhdHVyYXRpb25GaWx0ZXIgc2V0VmFsdWU6QDEuOCBm
b3JLZXk6a0NJSW5wdXRTYXR1cmF0aW9uS2V5XTsKLQotICAgIC8vIFRpbnQuCi0gICAgQ0lGaWx0
ZXIgKnRpbnRGaWx0ZXIxID0gW0NJRmlsdGVyIGZpbHRlcldpdGhOYW1lOkAiQ0lDb25zdGFudENv
bG9yR2VuZXJhdG9yIl07Ci0gICAgQ0lDb2xvciAqdGludENvbG9yMSA9IFtDSUNvbG9yIGNvbG9y
V2l0aFJlZDoxIGdyZWVuOjEgYmx1ZToxIGFscGhhOjAuMThdOwotICAgIFt0aW50RmlsdGVyMSBz
ZXRWYWx1ZTp0aW50Q29sb3IxIGZvcktleTprQ0lJbnB1dENvbG9yS2V5XTsKLQotICAgIC8vIEJs
ZW5kIHRoZSB0aW50IHdpdGggdGhlIHNhdHVyYXRlZCBvdXRwdXQuCi0gICAgQ0lGaWx0ZXIgKnNv
dXJjZU92ZXJGaWx0ZXIgPSBbQ0lGaWx0ZXIgZmlsdGVyV2l0aE5hbWU6QCJDSVNvdXJjZU92ZXJD
b21wb3NpdGluZyJdOwotICAgIFtzb3VyY2VPdmVyRmlsdGVyIHNldFZhbHVlOnRpbnRGaWx0ZXIx
Lm91dHB1dEltYWdlIGZvcktleTprQ0lJbnB1dEltYWdlS2V5XTsKLSAgICBbc291cmNlT3ZlckZp
bHRlciBzZXRWYWx1ZTpzYXR1cmF0aW9uRmlsdGVyLm91dHB1dEltYWdlIGZvcktleTprQ0lJbnB1
dEJhY2tncm91bmRJbWFnZUtleV07Ci0KLSAgICBpZiAoIW1fY2lDb250ZXh0KQotICAgICAgICBt
X2NpQ29udGV4dCA9IFtDSUNvbnRleHQgY29udGV4dF07Ci0KLSAgICBSZXRhaW5QdHI8Q0dJbWFn
ZVJlZj4gY2dJbWFnZTsKLSNpZiBIQVZFKElPU1VSRkFDRV9DT1JFSU1BR0VfU1VQUE9SVCkKLSAg
ICAvLyBDcm9wIHRoZSByZXN1bHQgdG8gdGhlIGJhZGdlIGxvY2F0aW9uLgotICAgIENJSW1hZ2Ug
KmNyb3BwZWRJbWFnZSA9IFtzb3VyY2VPdmVyRmlsdGVyLm91dHB1dEltYWdlIGltYWdlQnlDcm9w
cGluZ1RvUmVjdDpmbGlwcGVkSW5zZXRCYWRnZVJlY3RdOwotICAgIENJSW1hZ2UgKnRyYW5zbGF0
ZWRJbWFnZSA9IFtjcm9wcGVkSW1hZ2UgaW1hZ2VCeUFwcGx5aW5nVHJhbnNmb3JtOkNHQWZmaW5l
VHJhbnNmb3JtTWFrZVRyYW5zbGF0aW9uKC1mbGlwcGVkSW5zZXRCYWRnZVJlY3Qub3JpZ2luLngs
IC1mbGlwcGVkSW5zZXRCYWRnZVJlY3Qub3JpZ2luLnkpXTsKLSAgICBJT1N1cmZhY2VSZWYgc3Vy
ZmFjZTsKLSAgICBpZiAodXNlU21hbGxCYWRnZSkgewotICAgICAgICBpZiAoIW1fc21hbGxCYWRn
ZVN1cmZhY2UpCi0gICAgICAgICAgICBtX3NtYWxsQmFkZ2VTdXJmYWNlID0gSU9TdXJmYWNlOjpj
cmVhdGUoeyBzbWFsbEJhZGdlRGltZW5zaW9uLCBzbWFsbEJhZGdlRGltZW5zaW9uIH0sIERlc3Rp
bmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKLSAgICAgICAgc3VyZmFjZSA9IG1fc21hbGxCYWRn
ZVN1cmZhY2UtPnN1cmZhY2UoKTsKLSAgICB9IGVsc2UgewotICAgICAgICBpZiAoIW1fbGFyZ2VC
YWRnZVN1cmZhY2UpCi0gICAgICAgICAgICBtX2xhcmdlQmFkZ2VTdXJmYWNlID0gSU9TdXJmYWNl
OjpjcmVhdGUoeyBsYXJnZUJhZGdlRGltZW5zaW9uLCBsYXJnZUJhZGdlRGltZW5zaW9uIH0sIERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKLSAgICAgICAgc3VyZmFjZSA9IG1fbGFyZ2VC
YWRnZVN1cmZhY2UtPnN1cmZhY2UoKTsKLSAgICB9Ci0gICAgW21fY2lDb250ZXh0IHJlbmRlcjp0
cmFuc2xhdGVkSW1hZ2UgdG9JT1N1cmZhY2U6c3VyZmFjZSBib3VuZHM6YmFkZ2VSZWN0IGNvbG9y
U3BhY2U6c1JHQkNvbG9yU3BhY2VSZWYoKV07Ci0gICAgY2dJbWFnZSA9IHVzZVNtYWxsQmFkZ2Ug
PyBtX3NtYWxsQmFkZ2VTdXJmYWNlLT5jcmVhdGVJbWFnZSgpIDogbV9sYXJnZUJhZGdlU3VyZmFj
ZS0+Y3JlYXRlSW1hZ2UoKTsKLSNlbHNlCi0gICAgY2dJbWFnZSA9IGFkb3B0Q0YoW21fY2lDb250
ZXh0IGNyZWF0ZUNHSW1hZ2U6c291cmNlT3ZlckZpbHRlci5vdXRwdXRJbWFnZSBmcm9tUmVjdDpm
bGlwcGVkSW5zZXRCYWRnZVJlY3RdKTsKLSNlbmRpZgotCi0gICAgLy8gQmVmb3JlIHdlIHJlbmRl
ciB0aGUgcmVzdWx0LCB3ZSBzaG91bGQgY2xpcCB0byBhIGNpcmNsZSBhcm91bmQgdGhlIGJhZGdl
IHJlY3RhbmdsZS4KLSAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGN0eCk7Ci0gICAgQ0dDb250ZXh0
QmVnaW5QYXRoKGN0eCk7Ci0gICAgQ0dDb250ZXh0QWRkUGF0aChjdHgsIGNpcmNsZS5nZXQoKSk7
Ci0gICAgQ0dDb250ZXh0Q2xvc2VQYXRoKGN0eCk7Ci0gICAgQ0dDb250ZXh0Q2xpcChjdHgpOwot
Ci0gICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKGN0eCwgYWJzb2x1dGVCYWRnZVJlY3Qub3JpZ2lu
LngsIGFic29sdXRlQmFkZ2VSZWN0Lm9yaWdpbi55KTsKLSAgICBDR0NvbnRleHRUcmFuc2xhdGVD
VE0oY3R4LCAwLCBiYWRnZURpbWVuc2lvbik7Ci0gICAgQ0dDb250ZXh0U2NhbGVDVE0oY3R4LCAx
LCAtMSk7Ci0gICAgQ0dDb250ZXh0RHJhd0ltYWdlKGN0eCwgYmFkZ2VSZWN0LCBjZ0ltYWdlLmdl
dCgpKTsKLQotICAgIGlmIChhdXRvIGxvZ28gPSBzeXN0ZW1QcmV2aWV3TG9nbygpKSB7Ci0gICAg
ICAgIENHU2l6ZSBwZGZTaXplID0gQ0dQREZQYWdlR2V0Qm94UmVjdChsb2dvLCBrQ0dQREZNZWRp
YUJveCkuc2l6ZTsKLSAgICAgICAgQ0dGbG9hdCBzY2FsZVggPSBiYWRnZURpbWVuc2lvbiAvIHBk
ZlNpemUud2lkdGg7Ci0gICAgICAgIENHRmxvYXQgc2NhbGVZID0gYmFkZ2VEaW1lbnNpb24gLyBw
ZGZTaXplLmhlaWdodDsKLSAgICAgICAgQ0dDb250ZXh0U2NhbGVDVE0oY3R4LCBzY2FsZVgsIHNj
YWxlWSk7Ci0gICAgICAgIENHQ29udGV4dERyYXdQREZQYWdlKGN0eCwgbG9nbyk7Ci0gICAgfQot
Ci0gICAgQ0dDb250ZXh0Rmx1c2goY3R4KTsKLSAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGN0
eCk7CisgICAgcGFpbnRJbmZvLmNvbnRleHQoKS5kcmF3U3lzdGVtSW1hZ2UoQVJLaXRCYWRnZVN5
c3RlbUltYWdlOjpjcmVhdGUoaW1hZ2UpLCByZWN0KTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNv
cmRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxh
eUxpc3RSZWNvcmRlci5jcHAKaW5kZXggOWEyMzllNjQyNWZkMzljNGJjODEzNGY1ZDUxOTViZGRh
MWQ2YWQzZS4uNWY5ZGQyYzA4Yjc4YWFjOWEzNmNmMzg5Mjc2YjE4OWM0ZGNkNzkyOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0
UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVEaXNwbGF5TGlzdFJlY29yZGVyLmNwcApAQCAtMzIsNiArMzIsMTAgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL0JpdG1hcEltYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GaWx0ZXJSZXN1bHRzLmg+
CiAKKyNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCisjaW5jbHVkZSA8V2ViQ29yZS9BUktpdEJhZGdl
U3lzdGVtSW1hZ2UuaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCkBAIC0yODUsNiArMjg5LDE3IEBAIHZvaWQgUmVtb3RlRGlzcGxheUxp
c3RSZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlV2l0aFF1YWxpZmllZElkZW50aWZpZXIoUXVhbGlm
aWVkCiAKIHZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlcjo6ZHJhd1N5c3RlbUltYWdlKFN5
c3RlbUltYWdlJiBzeXN0ZW1JbWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvblJlY3Qp
CiB7CisjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQorICAgIGlmIChpczxBUktpdEJhZGdlU3lzdGVt
SW1hZ2U+KHN5c3RlbUltYWdlKSkgeworICAgICAgICBBUktpdEJhZGdlU3lzdGVtSW1hZ2UmIGJh
ZGdlID0gZG93bmNhc3Q8QVJLaXRCYWRnZVN5c3RlbUltYWdlPihzeXN0ZW1JbWFnZSk7CisgICAg
ICAgIFJlZlB0ciBuYXRpdmVJbWFnZSA9IHJlc291cmNlQ2FjaGUoKS5jYWNoZWROYXRpdmVJbWFn
ZSh7IGJhZGdlLmltYWdlSWRlbnRpZmllcigpLCBtX3dlYlByb2Nlc3NJZGVudGlmaWVyIH0pOwor
ICAgICAgICBpZiAoIW5hdGl2ZUltYWdlKSB7CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBiYWRnZS5zZXRJ
bWFnZShCaXRtYXBJbWFnZTo6Y3JlYXRlKFdURk1vdmUobmF0aXZlSW1hZ2UpKSk7CisgICAgfQor
I2VuZGlmCiAgICAgaGFuZGxlSXRlbShEaXNwbGF5TGlzdDo6RHJhd1N5c3RlbUltYWdlKHN5c3Rl
bUltYWdlLCBkZXN0aW5hdGlvblJlY3QpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggZGViMDhlNDMxMjJjYzZmNzZkYWMwZjQ0
MWU1NjhjNDY2NTVkMmQ0MS4uNTE2YmRiNDU3ZTNjNDU2MzNkNjNlMWY3YWE4YzIzZmQ2NjQyYmU0
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
CkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiU3RyZWFtQ29ubmVjdGlvbkVuY29kZXIuaCIK
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVz
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9BUktpdEJhZGdlU3lzdGVtSW1hZ2UuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0FwcGxlUGF5QnV0dG9uU3lzdGVtSW1hZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0FwcGxlUGF5TG9nb1N5c3RlbUltYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9BdXRoZW50aWNh
dGlvbkNoYWxsZW5nZS5oPgpAQCAtMzE3Miw2ICszMTczLDExIEBAIHZvaWQgQXJndW1lbnRDb2Rl
cjxSZWY8U3lzdGVtSW1hZ2U+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlZjxT
eXN0ZW1JCiAgICAgY2FzZSBTeXN0ZW1JbWFnZVR5cGU6OkFwcGxlUGF5TG9nbzoKICAgICAgICAg
ZG93bmNhc3Q8QXBwbGVQYXlMb2dvU3lzdGVtSW1hZ2U+KHN5c3RlbUltYWdlLmdldCgpKS5lbmNv
ZGUoZW5jb2Rlcik7CiAgICAgICAgIHJldHVybjsKKyNlbmRpZgorI2lmIFVTRShTWVNURU1fUFJF
VklFVykKKyAgICBjYXNlIFN5c3RlbUltYWdlVHlwZTo6QVJLaXRCYWRnZToKKyAgICAgICAgZG93
bmNhc3Q8QVJLaXRCYWRnZVN5c3RlbUltYWdlPihzeXN0ZW1JbWFnZS5nZXQoKSkuZW5jb2RlKGVu
Y29kZXIpOworICAgICAgICByZXR1cm47CiAjZW5kaWYKICAgICB9CiAKQEAgLTMxOTcsNiArMzIw
MywxMCBAQCBzdGQ6Om9wdGlvbmFsPFJlZjxTeXN0ZW1JbWFnZT4+IEFyZ3VtZW50Q29kZXI8UmVm
PFN5c3RlbUltYWdlPj46OmRlY29kZShEZWNvZGVyJgogCiAgICAgY2FzZSBTeXN0ZW1JbWFnZVR5
cGU6OkFwcGxlUGF5TG9nbzoKICAgICAgICAgcmV0dXJuIEFwcGxlUGF5TG9nb1N5c3RlbUltYWdl
OjpkZWNvZGUoZGVjb2Rlcik7CisjZW5kaWYKKyNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCisgICAg
Y2FzZSBTeXN0ZW1JbWFnZVR5cGU6OkFSS2l0QmFkZ2U6CisgICAgICAgIHJldHVybiBBUktpdEJh
ZGdlU3lzdGVtSW1hZ2U6OmRlY29kZShkZWNvZGVyKTsKICNlbmRpZgogICAgIH0KIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IDM1OGUyYzNhMGVlNTUxNzI4MGEyNGJiZWQxN2VkZGYwMTJhODY4MTMuLjE1MGVmNmE4MGU0MTUy
ZjI1ZTJkY2NhYzUwNTgyMDcyODQ0YTNlZDggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMi0w
My0yNCAgQW50b2luZSBRdWludCAgPGdyYW91dHNAd2Via2l0Lm9yZz4KKworICAgICAgICBET00g
R1BVUDogcGFpbnRTeXN0ZW1QcmV2aWV3QmFkZ2UgKEFSIFF1aWNrTG9vayBlbGVtZW50IGJhZGdl
KQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4Mjk1
CisgICAgICAgIHJkYXI6Ly84MzU4MDYwOAorCisgICAgICAgIFJldmlld2VkIGJ5IERlYW4gSmFj
a3Nvbi4KKworICAgICAgICBUaGUgc3lzdGVtLXByZXZpZXcvYmFkZ2UuaHRtbCB0ZXN0IG5vdyBw
YXNzZXMgcmVsaWFibHkgd2l0aCBET00gR1BVUCBlbmFibGVkLAorICAgICAgICB3aGljaCBpbmNp
ZGVudGFsbHkgZml4ZXMgYnVnIDIzNjkyMi4KKworICAgICAgICAqIHBsYXRmb3JtL2lvcy13azIv
VGVzdEV4cGVjdGF0aW9uczoKKwogMjAyMi0wMy0yMyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hz
aWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBNYWlsIGNvbXBvc2Ugd2ViIHZpZXcgbm8g
bG9uZ2VyIHNjcm9sbHMgdG8gcmV2ZWFsIHNlbGVjdGlvbiB1cG9uIHNob3dpbmcgdGhlIGtleWJv
YXJkCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2syL1Rlc3RFeHBlY3Rh
dGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5k
ZXggMmU5OGUxNTg3ZTkyZGE4MWI0ZTU5ODgzN2U4ZDEwZTU4ODhmM2FmMy4uMzM2MjNkNWI2NDg0
ZDE4NjZhMmNhN2U4YjU2YjE4MTZiZTIxZWNjNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vaW9zLXdrMi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2lvcy13azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMjI1OSw5ICsyMjU5LDYgQEAgd2Via2l0Lm9y
Zy9iLzIzNjkyMSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mtd3JpdGlu
Zy1tb2Rlcy90ZXh0LXMKIHdlYmtpdC5vcmcvYi8yMzY5MjEgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLXdyaXRpbmctbW9kZXMvdmVydGljYWwtYWxpZ25tZW50LXZsci0w
MjMueGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjM2OTIxIGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy13cml0aW5nLW1vZGVzL3ZlcnRpY2FsLWFs
aWdubWVudC12cmwtMDIyLnhodCBbIEltYWdlT25seUZhaWx1cmUgXQogCi0jIENvbG9ycyBhcmUg
c2lnbmlmaWNhbnRseSBkaWZmZXJlbnQgZW5vdWdoCi13ZWJraXQub3JnL2IvMjM2OTIyIHN5c3Rl
bS1wcmV2aWV3L2JhZGdlLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLQogIyBOby9iYWQgY29s
b3JlZCBib3hlcwogd2Via2l0Lm9yZy9iLzIzNjkyMyBmYXN0L2Nzcy9wYWludC1vcmRlci1zaGFk
b3cuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzIzNjkyMyBpbXBvcnRl
ZC9ibGluay9zdmcvdGV4dC9vYmItcGFpbnRzZXJ2ZXIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUg
XQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>