<?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>218871</bug_id>
          
          <creation_ts>2020-11-12 14:16:23 -0800</creation_ts>
          <short_desc>[GPU Process] Support rendering PDFDocumentImage in GPU Process</short_desc>
          <delta_ts>2021-03-05 10:27:53 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Canvas</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>219705</dup_id>
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=219705</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>217342</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>annulen</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1707012</commentid>
    <comment_count>0</comment_count>
      <attachid>413975</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-12 14:16:23 -0800</bug_when>
    <thetext>Created attachment 413975
test-pdf

Open the attached test case.

Result: WebKit crashes with the calls stack below.

Note: Currently we do not record drawing the PDFDocumentImage. We need to ensure that drawing the PDFDocumentImage to a the ImageBuffer happens in the GPU Process.

#0	0x00000001f283a8ec in WTF::RetainPtr&lt;CGContext*&gt;::operator!() const at /Volumes/Data/WebKit/OpenSource/WebKitBuild/Debug/usr/local/include/wtf/RetainPtr.h:107
#1	0x00000001f283a0c6 in WebCore::GraphicsContext::platformContext() const at /Volumes/Data/WebKit/OpenSource/Source/WebCore/platform/graphics/cg/GraphicsContextCG.cpp:253
#2	0x00000001f2855b5a in WebCore::ImageBufferCGBackend::contextColorSpace(WebCore::GraphicsContext const&amp;) at /Volumes/Data/WebKit/OpenSource/Source/WebCore/platform/graphics/cg/ImageBufferCGBackend.cpp:49
#3	0x00000001f2858302 in WebCore::ImageBufferCGBitmapBackend::create(WebCore::FloatSize const&amp;, WebCore::GraphicsContext const&amp;) at /Volumes/Data/WebKit/OpenSource/Source/WebCore/platform/graphics/cg/ImageBufferCGBitmapBackend.cpp:78
#4	0x00000001f277bbc6 in WTF::RefPtr&lt;WebCore::ConcreteImageBuffer&lt;WebCore::ImageBufferCGBitmapBackend&gt;, WTF::RawPtrTraits&lt;WebCore::ConcreteImageBuffer&lt;WebCore::ImageBufferCGBitmapBackend&gt; &gt;, WTF::DefaultRefDerefTraits&lt;WebCore::ConcreteImageBuffer&lt;WebCore::ImageBufferCGBitmapBackend&gt; &gt; &gt; WebCore::ConcreteImageBuffer&lt;WebCore::ImageBufferCGBitmapBackend&gt;::create&lt;WebCore::ConcreteImageBuffer&lt;WebCore::ImageBufferCGBitmapBackend&gt; &gt;(WebCore::FloatSize const&amp;, WebCore::GraphicsContext const&amp;) at /Volumes/Data/WebKit/OpenSource/Source/WebCore/platform/graphics/ConcreteImageBuffer.h:48
#5	0x00000001f277ba92 in WebCore::ImageBuffer::create(WebCore::FloatSize const&amp;, WebCore::GraphicsContext const&amp;) at /Volumes/Data/WebKit/OpenSource/Source/WebCore/platform/graphics/ImageBuffer.cpp:82
#6	0x00000001f277bccc in WebCore::ImageBuffer::createCompatibleBuffer(WebCore::FloatSize const&amp;, WebCore::GraphicsContext const&amp;) at /Volumes/Data/WebKit/OpenSource/Source/WebCore/platform/graphics/ImageBuffer.cpp:94
#7	0x00000001f2861164 in WebCore::PDFDocumentImage::updateCachedImageIfNeeded(WebCore::GraphicsContext&amp;, WebCore::FloatRect const&amp;, WebCore::FloatRect const&amp;) at /Volumes/Data/WebKit/OpenSource/Source/WebCore/platform/graphics/cg/PDFDocumentImage.cpp:239
#8	0x00000001f2861793 in WebCore::PDFDocumentImage::draw(WebCore::GraphicsContext&amp;, WebCore::FloatRect const&amp;, WebCore::FloatRect const&amp;, WebCore::ImagePaintingOptions const&amp;) at /Volumes/Data/WebKit/OpenSource/Source/WebCore/platform/graphics/cg/PDFDocumentImage.cpp:266
#9	0x00000001f2754372 in WebCore::GraphicsContext::drawImage(WebCore::Image&amp;, WebCore::FloatRect const&amp;, WebCore::FloatRect const&amp;, WebCore::ImagePaintingOptions const&amp;) at /Volumes/Data/WebKit/OpenSource/Source/WebCore/platform/graphics/GraphicsContext.cpp:764
#10	0x00000001f1c675b4 in WebCore::CanvasRenderingContext2DBase::drawImage(WebCore::Document&amp;, WebCore::CachedImage*, WebCore::RenderObject const*, WebCore::FloatRect const&amp;, WebCore::FloatRect const&amp;, WebCore::FloatRect const&amp;, WebCore::CompositeOperator const&amp;, WebCore::BlendMode const&amp;, WebCore::ImageOrientation) at /Volumes/Data/WebKit/OpenSource/Source/WebCore/html/canvas/CanvasRenderingContext2DBase.cpp:1552
#11	0x00000001f1c66bc3 in WebCore::CanvasRenderingContext2DBase::drawImage(WebCore::HTMLImageElement&amp;, WebCore::FloatRect const&amp;, WebCore::FloatRect const&amp;, WebCore::CompositeOperator const&amp;, WebCore::BlendMode const&amp;) at /Volumes/Data/WebKit/OpenSource/Source/WebCore/html/canvas/CanvasRenderingContext2DBase.cpp:1460
#12	0x00000001f1c6695c in WebCore::CanvasRenderingContext2DBase::drawImage(WebCore::HTMLImageElement&amp;, WebCore::FloatRect const&amp;, WebCore::FloatRect const&amp;) at /Volumes/Data/WebKit/OpenSource/Source/WebCore/html/canvas/CanvasRenderingContext2DBase.cpp:1443
#13	0x00000001f1c7ece4 in WebCore::ExceptionOr&lt;void&gt; WebCore::CanvasRenderingContext2DBase::drawImage(WTF::Variant&lt;WTF::RefPtr&lt;WebCore::HTMLImageElement, WTF::RawPtrTraits&lt;WebCore::HTMLImageElement&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::HTMLImageElement&gt; &gt;, WTF::RefPtr&lt;WebCore::HTMLCanvasElement, WTF::RawPtrTraits&lt;WebCore::HTMLCanvasElement&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::HTMLCanvasElement&gt; &gt;, WTF::RefPtr&lt;WebCore::ImageBitmap, WTF::RawPtrTraits&lt;WebCore::ImageBitmap&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::ImageBitmap&gt; &gt;, WTF::RefPtr&lt;WebCore::TypedOMCSSImageValue, WTF::RawPtrTraits&lt;WebCore::TypedOMCSSImageValue&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::TypedOMCSSImageValue&gt; &gt;, WTF::RefPtr&lt;WebCore::HTMLVideoElement, WTF::RawPtrTraits&lt;WebCore::HTMLVideoElement&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::HTMLVideoElement&gt; &gt; &gt;&amp;&amp;, float, float, float, float)::$_4::operator()&lt;WTF::RefPtr&lt;WebCore::HTMLImageElement, WTF::RawPtrTraits&lt;WebCore::HTMLImageElement&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::HTMLImageElement&gt; &gt; &gt;(WTF::RefPtr&lt;WebCore::HTMLImageElement, WTF::RawPtrTraits&lt;WebCore::HTMLImageElement&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::HTMLImageElement&gt; &gt;&amp;) const at /Volumes/Data/WebKit/OpenSource/Source/WebCore/html/canvas/CanvasRenderingContext2DBase.cpp:1427
#14	0x00000001f1c7eab6 in WebCore::ExceptionOr&lt;void&gt; WTF::__visitor_table&lt;WTF::Visitor&lt;WebCore::CanvasRenderingContext2DBase::drawImage(WTF::Variant&lt;WTF::RefPtr&lt;WebCore::HTMLImageElement, WTF::RawPtrTraits&lt;WebCore::HTMLImageElement&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::HTMLImageElement&gt; &gt;, WTF::RefPtr&lt;WebCore::HTMLCanvasElement, WTF::RawPtrTraits&lt;WebCore::HTMLCanvasElement&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::HTMLCanvasElement&gt; &gt;, WTF::RefPtr&lt;WebCore::ImageBitmap, WTF::RawPtrTraits&lt;WebCore::ImageBitmap&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::ImageBitmap&gt; &gt;, WTF::RefPtr&lt;WebCore::TypedOMCSSImageValue, WTF::RawPtrTraits&lt;WebCore::TypedOMCSSImageValue&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::TypedOMCSSImageValue&gt; &gt;, WTF::RefPtr&lt;WebCore::HTMLVideoElement, WTF::RawPtrTraits&lt;WebCore::HTMLVideoElement&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::HTMLVideoElement&gt; &gt; &gt;&amp;&amp;, float, float, float, float)::$_4&gt;, WTF::RefPtr&lt;WebCore::HTMLImageElement, WTF::RawPtrTraits&lt;WebCore::HTMLImageElement&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::HTMLImageElement&gt; &gt;, WTF::RefPtr&lt;WebCore::HTMLCanvasElement, WTF::RawPtrTraits&lt;WebCore::HTMLCanvasElement&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::HTMLCanvasElement&gt; &gt;, WTF::RefPtr&lt;WebCore::ImageBitmap, WTF::RawPtrTraits&lt;WebCore::ImageBitmap&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::ImageBitmap&gt; &gt;, WTF::RefPtr&lt;WebCore::TypedOMCSSImageValue, WTF::RawPtrTraits&lt;WebCore::TypedOMCSSImageValue&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::TypedOMCSSImageValue&gt; &gt;, WTF::RefPtr&lt;WebCore::HTMLVideoElement, WTF::RawPtrTraits&lt;WebCore::HTMLVideoElement&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::HTMLVideoElement&gt; &gt; &gt;::__trampoline_func&lt;WTF::RefPtr&lt;WebCore::HTMLImageElement, WTF::RawPtrTraits&lt;WebCore::HTMLImageElement&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::HTMLImageElement&gt; &gt; &gt;(WTF::Visitor&lt;WebCore::CanvasRenderingContext2DBase::drawImage(WTF::Variant&lt;WTF::RefPtr&lt;WebCore::HTMLImageElement, WTF::RawPtrTraits&lt;WebCore::HTMLImageElement&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::HTMLImageElement&gt; &gt;, WTF::RefPtr&lt;WebCore::HTMLCanvasElement, WTF::RawPtrTraits&lt;WebCore::HTMLCanvasElement&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::HTMLCanvasElement&gt; &gt;, WTF::RefPtr&lt;WebCore::ImageBitmap, WTF::RawPtrTraits&lt;WebCore::ImageBitmap&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::ImageBitmap&gt; &gt;, WTF::RefPtr&lt;WebCore::TypedOMCSSImageValue, WTF::RawPtrTraits&lt;WebCore::TypedOMCSSImageValue&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::TypedOMCSSImageValue&gt; &gt;, WTF::RefPtr&lt;WebCore::HTMLVideoElement, WTF::RawPtrTraits&lt;WebCore::HTMLVideoElement&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::HTMLVideoElement&gt; &gt; &gt;&amp;&amp;, float, float, float, float)::$_4&gt;&amp;, WTF::Variant&lt;WTF::RefPtr&lt;WebCore::HTMLImageElement, WTF::RawPtrTraits&lt;WebCore::HTMLImageElement&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::HTMLImageElement&gt; &gt;, WTF::RefPtr&lt;WebCore::HTMLCanvasElement, WTF::RawPtrTraits&lt;WebCore::HTMLCanvasElement&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::HTMLCanvasElement&gt; &gt;, WTF::RefPtr&lt;WebCore::ImageBitmap, WTF::RawPtrTraits&lt;WebCore::ImageBitmap&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::ImageBitmap&gt; &gt;, WTF::RefPtr&lt;WebCore::TypedOMCSSImageValue, WTF::RawPtrTraits&lt;WebCore::TypedOMCSSImageValue&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::TypedOMCSSImageValue&gt; &gt;, WTF::RefPtr&lt;WebCore::HTMLVideoElement, WTF::RawPtrTraits&lt;WebCore::HTMLVideoElement&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::HTMLVideoElement&gt; &gt; &gt;&amp;) at /Volumes/Data/WebKit/OpenSource/WebKitBuild/Debug/usr/local/include/wtf/Variant.h:1870
#15	0x00000001f1c7e9dd in WTF::__visitor_return_type&lt;WTF::Visitor&lt;WebCore::CanvasRenderingContext2DBase::drawImage(WTF::Variant&lt;WTF::RefPtr&lt;WebCore::HTMLImageElement, WTF::RawPtrTraits&lt;WebCore::HTMLImageElement&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::HTMLImageElement&gt; &gt;, WTF::RefPtr&lt;WebCore::HTMLCanvasElement, WTF::RawPtrTraits&lt;WebCore::HTMLCanvasElement&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::HTMLCanvasElement&gt; &gt;, WTF::RefPtr&lt;WebCore::ImageBitmap, WTF::RawPtrTraits&lt;WebCore::ImageBitmap&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::ImageBitmap&gt; &gt;, WTF::RefPtr&lt;WebCore::TypedOMCSSImageValue, WTF::RawPtrTraits&lt;WebCore::TypedOMCSSImageValue&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::TypedOMCSSImageValue&gt; &gt;, WTF::RefPtr&lt;WebCore::HTMLVideoElement, WTF::RawPtrTraits&lt;WebCore::HTMLVideoElement&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::HTMLVideoElement&gt; &gt; &gt;&amp;&amp;, float, float, float, float)::$_4&gt;, WTF::RefPtr&lt;WebCore::HTMLImageElement, WTF::RawPtrTraits&lt;WebCore::HTMLImageElement&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::HTMLImageElement&gt; &gt;, WTF::RefPtr&lt;WebCore::HTMLCanvasElement, WTF::RawPtrTraits&lt;WebCore::HTMLCanvasElement&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::HTMLCanvasElement&gt; &gt;, WTF::RefPtr&lt;WebCore::ImageBitmap, WTF::RawPtrTraits&lt;WebCore::ImageBitmap&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::ImageBitmap&gt; &gt;, WTF::RefPtr&lt;WebCore::TypedOMCSSImageValue, WTF::RawPtrTraits&lt;WebCore::TypedOMCSSImageValue&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::TypedOMCSSImageValue&gt; &gt;, WTF::RefPtr&lt;WebCore::HTMLVideoElement, WTF::RawPtrTraits&lt;WebCore::HTMLVideoElement&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::HTMLVideoElement&gt; &gt; &gt;::__type WTF::visit&lt;WTF::Visitor&lt;WebCore::CanvasRenderingContext2DBase::drawImage(WTF::Variant&lt;WTF::RefPtr&lt;WebCore::HTMLImageElement, WTF::RawPtrTraits&lt;WebCore::HTMLImageElement&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::HTMLImageElement&gt; &gt;, WTF::RefPtr&lt;WebCore::HTMLCanvasElement, WTF::RawPtrTraits&lt;WebCore::HTMLCanvasElement&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::HTMLCanvasElement&gt; &gt;, WTF::RefPtr&lt;WebCore::ImageBitmap, WTF::RawPtrTraits&lt;WebCore::ImageBitmap&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::ImageBitmap&gt; &gt;, WTF::RefPtr&lt;WebCore::TypedOMCSSImageValue, WTF::RawPtrTraits&lt;WebCore::TypedOMCSSImageValue&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::TypedOMCSSImageValue&gt; &gt;, WTF::RefPtr&lt;WebCore::HTMLVideoElement, WTF::RawPtrTraits&lt;WebCore::HTMLVideoElement&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::HTMLVideoElement&gt; &gt; &gt;&amp;&amp;, float, float, float, float)::$_4&gt;, WTF::RefPtr&lt;WebCore::HTMLImageElement, WTF::RawPtrTraits&lt;WebCore::HTMLImageElement&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::HTMLImageElement&gt; &gt;, WTF::RefPtr&lt;WebCore::HTMLCanvasElement, WTF::RawPtrTraits&lt;WebCore::HTMLCanvasElement&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::HTMLCanvasElement&gt; &gt;, WTF::RefPtr&lt;WebCore::ImageBitmap, WTF::RawPtrTraits&lt;WebCore::ImageBitmap&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::ImageBitmap&gt; &gt;, WTF::RefPtr&lt;WebCore::TypedOMCSSImageValue, WTF::RawPtrTraits&lt;WebCore::TypedOMCSSImageValue&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::TypedOMCSSImageValue&gt; &gt;, WTF::RefPtr&lt;WebCore::HTMLVideoElement, WTF::RawPtrTraits&lt;WebCore::HTMLVideoElement&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::HTMLVideoElement&gt; &gt; &gt;(WTF::Visitor&lt;WebCore::CanvasRenderingContext2DBase::drawImage(WTF::Variant&lt;WTF::RefPtr&lt;WebCore::HTMLImageElement, WTF::RawPtrTraits&lt;WebCore::HTMLImageElement&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::HTMLImageElement&gt; &gt;, WTF::RefPtr&lt;WebCore::HTMLCanvasElement, WTF::RawPtrTraits&lt;WebCore::HTMLCanvasElement&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::HTMLCanvasElement&gt; &gt;, WTF::RefPtr&lt;WebCore::ImageBitmap, WTF::RawPtrTraits&lt;WebCore::ImageBitmap&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::ImageBitmap&gt; &gt;, WTF::RefPtr&lt;WebCore::TypedOMCSSImageValue, WTF::RawPtrTraits&lt;WebCore::TypedOMCSSImageValue&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::TypedOMCSSImageValue&gt; &gt;, WTF::RefPtr&lt;WebCore::HTMLVideoElement, WTF::RawPtrTraits&lt;WebCore::HTMLVideoElement&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::HTMLVideoElement&gt; &gt; &gt;&amp;&amp;, float, float, float, float)::$_4&gt;&amp;&amp;, WTF::Variant&lt;WTF::RefPtr&lt;WebCore::HTMLImageElement, WTF::RawPtrTraits&lt;WebCore::HTMLImageElement&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::HTMLImageElement&gt; &gt;, WTF::RefPtr&lt;WebCore::HTMLCanvasElement, WTF::RawPtrTraits&lt;WebCore::HTMLCanvasElement&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::HTMLCanvasElement&gt; &gt;, WTF::RefPtr&lt;WebCore::ImageBitmap, WTF::RawPtrTraits&lt;WebCore::ImageBitmap&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::ImageBitmap&gt; &gt;, WTF::RefPtr&lt;WebCore::TypedOMCSSImageValue, WTF::RawPtrTraits&lt;WebCore::TypedOMCSSImageValue&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::TypedOMCSSImageValue&gt; &gt;, WTF::RefPtr&lt;WebCore::HTMLVideoElement, WTF::RawPtrTraits&lt;WebCore::HTMLVideoElement&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::HTMLVideoElement&gt; &gt; &gt;&amp;) at /Volumes/Data/WebKit/OpenSource/WebKitBuild/Debug/usr/local/include/wtf/Variant.h:1886
#16	0x00000001f1c66761 in decltype(WTF::visit(makeVisitor(std::forward&lt;WebCore::CanvasRenderingContext2DBase::drawImage(WTF::Variant&lt;WTF::RefPtr&lt;WebCore::HTMLImageElement, WTF::RawPtrTraits&lt;WebCore::HTMLImageElement&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::HTMLImageElement&gt; &gt;, WTF::RefPtr&lt;WebCore::HTMLCanvasElement, WTF::RawPtrTraits&lt;WebCore::HTMLCanvasElement&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::HTMLCanvasElement&gt; &gt;, WTF::RefPtr&lt;WebCore::ImageBitmap, WTF::RawPtrTraits&lt;WebCore::ImageBitmap&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::ImageBitmap&gt; &gt;, WTF::RefPtr&lt;WebCore::TypedOMCSSImageValue, WTF::RawPtrTraits&lt;WebCore::TypedOMCSSImageValue&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::TypedOMCSSImageValue&gt; &gt;, WTF::RefPtr&lt;WebCore::HTMLVideoElement, WTF::RawPtrTraits&lt;WebCore::HTMLVideoElement&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::HTMLVideoElement&gt; &gt; &gt;&amp;&amp;, float, float, float, float)::$_4&gt;(fp0)), std::forward&lt;WTF::Variant&lt;WTF::RefPtr&lt;WebCore::HTMLImageElement, WTF::RawPtrTraits&lt;WebCore::HTMLImageElement&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::HTMLImageElement&gt; &gt;, WTF::RefPtr&lt;WebCore::HTMLCanvasElement, WTF::RawPtrTraits&lt;WebCore::HTMLCanvasElement&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::HTMLCanvasElement&gt; &gt;, WTF::RefPtr&lt;WebCore::ImageBitmap, WTF::RawPtrTraits&lt;WebCore::ImageBitmap&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::ImageBitmap&gt; &gt;, WTF::RefPtr&lt;WebCore::TypedOMCSSImageValue, WTF::RawPtrTraits&lt;WebCore::TypedOMCSSImageValue&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::TypedOMCSSImageValue&gt; &gt;, WTF::RefPtr&lt;WebCore::HTMLVideoElement, WTF::RawPtrTraits&lt;WebCore::HTMLVideoElement&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::HTMLVideoElement&gt; &gt; &gt;&amp;&gt;(fp))) WTF::switchOn&lt;WTF::Variant&lt;WTF::RefPtr&lt;WebCore::HTMLImageElement, WTF::RawPtrTraits&lt;WebCore::HTMLImageElement&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::HTMLImageElement&gt; &gt;, WTF::RefPtr&lt;WebCore::HTMLCanvasElement, WTF::RawPtrTraits&lt;WebCore::HTMLCanvasElement&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::HTMLCanvasElement&gt; &gt;, WTF::RefPtr&lt;WebCore::ImageBitmap, WTF::RawPtrTraits&lt;WebCore::ImageBitmap&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::ImageBitmap&gt; &gt;, WTF::RefPtr&lt;WebCore::TypedOMCSSImageValue, WTF::RawPtrTraits&lt;WebCore::TypedOMCSSImageValue&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::TypedOMCSSImageValue&gt; &gt;, WTF::RefPtr&lt;WebCore::HTMLVideoElement, WTF::RawPtrTraits&lt;WebCore::HTMLVideoElement&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::HTMLVideoElement&gt; &gt; &gt;&amp;, WebCore::CanvasRenderingContext2DBase::drawImage(WTF::Variant&lt;WTF::RefPtr&lt;WebCore::HTMLImageElement, WTF::RawPtrTraits&lt;WebCore::HTMLImageElement&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::HTMLImageElement&gt; &gt;, WTF::RefPtr&lt;WebCore::HTMLCanvasElement, WTF::RawPtrTraits&lt;WebCore::HTMLCanvasElement&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::HTMLCanvasElement&gt; &gt;, WTF::RefPtr&lt;WebCore::ImageBitmap, WTF::RawPtrTraits&lt;WebCore::ImageBitmap&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::ImageBitmap&gt; &gt;, WTF::RefPtr&lt;WebCore::TypedOMCSSImageValue, WTF::RawPtrTraits&lt;WebCore::TypedOMCSSImageValue&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::TypedOMCSSImageValue&gt; &gt;, WTF::RefPtr&lt;WebCore::HTMLVideoElement, WTF::RawPtrTraits&lt;WebCore::HTMLVideoElement&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::HTMLVideoElement&gt; &gt; &gt;&amp;&amp;, float, float, float, float)::$_4&gt;(WTF::Variant&lt;WTF::RefPtr&lt;WebCore::HTMLImageElement, WTF::RawPtrTraits&lt;WebCore::HTMLImageElement&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::HTMLImageElement&gt; &gt;, WTF::RefPtr&lt;WebCore::HTMLCanvasElement, WTF::RawPtrTraits&lt;WebCore::HTMLCanvasElement&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::HTMLCanvasElement&gt; &gt;, WTF::RefPtr&lt;WebCore::ImageBitmap, WTF::RawPtrTraits&lt;WebCore::ImageBitmap&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::ImageBitmap&gt; &gt;, WTF::RefPtr&lt;WebCore::TypedOMCSSImageValue, WTF::RawPtrTraits&lt;WebCore::TypedOMCSSImageValue&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::TypedOMCSSImageValue&gt; &gt;, WTF::RefPtr&lt;WebCore::HTMLVideoElement, WTF::RawPtrTraits&lt;WebCore::HTMLVideoElement&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::HTMLVideoElement&gt; &gt; &gt;&amp;, WebCore::CanvasRenderingContext2DBase::drawImage(WTF::Variant&lt;WTF::RefPtr&lt;WebCore::HTMLImageElement, WTF::RawPtrTraits&lt;WebCore::HTMLImageElement&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::HTMLImageElement&gt; &gt;, WTF::RefPtr&lt;WebCore::HTMLCanvasElement, WTF::RawPtrTraits&lt;WebCore::HTMLCanvasElement&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::HTMLCanvasElement&gt; &gt;, WTF::RefPtr&lt;WebCore::ImageBitmap, WTF::RawPtrTraits&lt;WebCore::ImageBitmap&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::ImageBitmap&gt; &gt;, WTF::RefPtr&lt;WebCore::TypedOMCSSImageValue, WTF::RawPtrTraits&lt;WebCore::TypedOMCSSImageValue&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::TypedOMCSSImageValue&gt; &gt;, WTF::RefPtr&lt;WebCore::HTMLVideoElement, WTF::RawPtrTraits&lt;WebCore::HTMLVideoElement&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::HTMLVideoElement&gt; &gt; &gt;&amp;&amp;, float, float, float, float)::$_4&amp;&amp;) at /Volumes/Data/WebKit/OpenSource/WebKitBuild/Debug/usr/local/include/wtf/Variant.h:2051
#17	0x00000001f1c666b7 in WebCore::CanvasRenderingContext2DBase::drawImage(WTF::Variant&lt;WTF::RefPtr&lt;WebCore::HTMLImageElement, WTF::RawPtrTraits&lt;WebCore::HTMLImageElement&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::HTMLImageElement&gt; &gt;, WTF::RefPtr&lt;WebCore::HTMLCanvasElement, WTF::RawPtrTraits&lt;WebCore::HTMLCanvasElement&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::HTMLCanvasElement&gt; &gt;, WTF::RefPtr&lt;WebCore::ImageBitmap, WTF::RawPtrTraits&lt;WebCore::ImageBitmap&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::ImageBitmap&gt; &gt;, WTF::RefPtr&lt;WebCore::TypedOMCSSImageValue, WTF::RawPtrTraits&lt;WebCore::TypedOMCSSImageValue&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::TypedOMCSSImageValue&gt; &gt;, WTF::RefPtr&lt;WebCore::HTMLVideoElement, WTF::RawPtrTraits&lt;WebCore::HTMLVideoElement&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::HTMLVideoElement&gt; &gt; &gt;&amp;&amp;, float, float, float, float) at /Volumes/Data/WebKit/OpenSource/Source/WebCore/html/canvas/CanvasRenderingContext2DBase.cpp:1424
#18	0x00000001eef7aa71 in WebCore::jsCanvasRenderingContext2DPrototypeFunction_drawImage2Body(JSC::JSGlobalObject*, JSC::CallFrame*, WebCore::JSCanvasRenderingContext2D*) at /Volumes/Data/WebKit/OpenSource/WebKitBuild/Debug/DerivedSources/WebCore/JSCanvasRenderingContext2D.cpp:1915
#19	0x00000001eef79d2b in WebCore::jsCanvasRenderingContext2DPrototypeFunction_drawImageOverloadDispatcher(JSC::JSGlobalObject*, JSC::CallFrame*, WebCore::JSCanvasRenderingContext2D*) at /Volumes/Data/WebKit/OpenSource/WebKitBuild/Debug/DerivedSources/WebCore/JSCanvasRenderingContext2D.cpp:1971
#20	0x00000001eef79bcc in long long WebCore::IDLOperation&lt;WebCore::JSCanvasRenderingContext2D&gt;::call&lt;&amp;(WebCore::jsCanvasRenderingContext2DPrototypeFunction_drawImageOverloadDispatcher(JSC::JSGlobalObject*, JSC::CallFrame*, WebCore::JSCanvasRenderingContext2D*)), (WebCore::CastedThisErrorBehavior)0&gt;(JSC::JSGlobalObject&amp;, JSC::CallFrame&amp;, char const*) at /Volumes/Data/WebKit/OpenSource/Source/WebCore/bindings/js/JSDOMOperation.h:53
#21	0x00000001eef2d274 in WebCore::jsCanvasRenderingContext2DPrototypeFunction_drawImage(JSC::JSGlobalObject*, JSC::CallFrame*) at /Volumes/Data/WebKit/OpenSource/WebKitBuild/Debug/DerivedSources/WebCore/JSCanvasRenderingContext2D.cpp:1981</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709276</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-11-19 14:17:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/71601787&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709362</commentid>
    <comment_count>2</comment_count>
      <attachid>414643</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-19 19:46:36 -0800</bug_when>
    <thetext>Created attachment 414643
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709366</commentid>
    <comment_count>3</comment_count>
      <attachid>414645</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-19 20:23:06 -0800</bug_when>
    <thetext>Created attachment 414645
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709386</commentid>
    <comment_count>4</comment_count>
      <attachid>414652</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-19 22:42:20 -0800</bug_when>
    <thetext>Created attachment 414652
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709388</commentid>
    <comment_count>5</comment_count>
      <attachid>414653</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-19 23:09:27 -0800</bug_when>
    <thetext>Created attachment 414653
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709391</commentid>
    <comment_count>6</comment_count>
      <attachid>414654</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-19 23:18:08 -0800</bug_when>
    <thetext>Created attachment 414654
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709401</commentid>
    <comment_count>7</comment_count>
      <attachid>414656</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-20 00:26:58 -0800</bug_when>
    <thetext>Created attachment 414656
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710550</commentid>
    <comment_count>8</comment_count>
      <attachid>415008</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-11-30 02:08:11 -0800</bug_when>
    <thetext>Created attachment 415008
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710949</commentid>
    <comment_count>9</comment_count>
      <attachid>415103</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-12-01 00:02:22 -0800</bug_when>
    <thetext>Created attachment 415103
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724360</commentid>
    <comment_count>10</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-02-01 12:24:31 -0800</bug_when>
    <thetext>The PDF is decoded and converted to a NativeImage in WebP and the NativeImage is drawn in GPUP since r270605.

We can consider this bug is fixed, unless we want to integrate the clean-up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1736407</commentid>
    <comment_count>11</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-03-05 10:27:53 -0800</bug_when>
    <thetext>I do not think this clean up will be needed soon. So resolve this bug for now.

*** This bug has been marked as a duplicate of bug 219705 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>413975</attachid>
            <date>2020-11-12 14:16:23 -0800</date>
            <delta_ts>2020-11-12 14:16:23 -0800</delta_ts>
            <desc>test-pdf</desc>
            <filename>test-pdf.zip</filename>
            <type>application/zip</type>
            <size>2728</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">UEsDBBQAAAAAAOdqbFEAAAAAAAAAAAAAAAAJACAAdGVzdC1wZGYvVVQNAAfDp61fw6etX8OnrV91
eAsAAQT1AQAABFAAAABQSwMEFAAIAAgAIWtsUQAAAAAAAAAAHwEAABIAIAB0ZXN0LXBkZi90ZXN0
Lmh0bWxVVA0ABy6orV8wqK1fLqitX3V4CwABBPUBAAAEUAAAADWQzwrCMAzGz/Mpyi6toN30avWg
eNhj1DaWwZaOrvMP4rubrg5C+Mj3S0Kibt6+T6tCGY0PPbLWHsssy5Oqskr2aEI7RFLFQwf2h4/M
ejP1gFE6iNcOkjy/Gyt4Jvj6sHTEF+G5muCLxwivKPjeJuhPtb0jCuHJml47EHM7FeUYDBncBQDc
BjBRo+tADvbOF8Rj57Ul6j6hia1HsWYf8gpaLW3QzzyS0A2r59jVOc1bvpRUtZypqvyXH1BLBwgI
CrTpugAAAB8BAABQSwMEFAAIAAgAxWpsUQAAAAAAAAAAsgkAABwAIAB0ZXN0LXBkZi9ncmVlbi1y
ZWN0YW5nbGUucGRmVVQNAAeCp61fJ6itX4KnrV91eAsAAQT1AQAABFAAAACtVmtQE1cUjoivLUrB
FzoKt2ogjEp28w5oLElEY+UNgiNgQ7KElSQLm40ilJZCsWqpFbSg2FicASuKCjqDVh1EQa0ITmR8
MiJiwaqUKjpoWyh081LapfqndyZ7b74973PuOcsMkwctRPy4ELOh63lX9w8vSs0NFyEOgAGeuA5a
tAiwV6J6DZkMeBQUAdhBmJZECWrXKklUjqpwNQokEshAEqhSB6W3zo8aH8WKMrsuX7giZCHLN7gp
nNXoDHnM9GBlg/yQq9HmV038qNTL4w66OjMKeyd2QKhebWemThadPLtuPuxAkGHWRG1MRQE7TKmx
PglUTwKhzbII1IAbCRVqAFwbIMP1JPXeADi2/8GoGlNK8XRoDUwBCGz9xVust+vhDtMTRuCqSJQE
a6ijPAiwFTpKpdS+y+y7AsQDdmxo4jpURQILl0KHAL5FGySRDBPMp4dTYLPJ5o5DBDvSmEhaEat4
wI7B1BStxVT2chTTJJOQ9SzDtTgRmapUoUBkk6OgXCVScUtSAEkYKdbIYKUhBYhtr6UYaQhDCRmu
S8X1VEwg0bsz2XMecWMwXEbvK054zC9w23YkKvota7rXe61bPOnZFDiyyXMgYnowEPh/igZbjq7H
VOgyQrlxpJj8OwzgdRig/w7DuVETGQzG+dLBCnySsJThWPfbGTVzu+fTPbY6Yy0n7msIGcFne1WG
UOXKDrTYoLcYavcgYpn03RnKKgxdPiV81qWzx5nSyjGod8SzkJpxMWN7Pp6d39aHN9ZUpuwff+xq
7Z3ZJpPpXpOe6Snd7Bd4EzkVe03hv2mc62wnV7ecxPg5j1gznHOKt/cIuad/29yaK3zKPTt0tj3z
w3iWriQje9TG+mmXB1mnAyTnngjDvhzrHDj/cGzSvAKP9bu1aeqerLzO7/Z0/Nw3FD8xx93JPTr7
YuWlW7P2vkyv6+ivwSaH+ld2tsxI3HEyuKwQeRDToDku2fsybdMaqJfTG3xhyhSf7XM8Wb6rfR5O
qtaqebmdxVtOc4oKfbzb6yI10xJ2v3zfnDVG1Pej956q7K4NdeU3SxZcd4mbNXqVf8qxtrIArwqs
LSIgIK5gSr6TcUljV9uq0sExVUNn4gb7T8Xd+0wmrh3tZSxnrfh2hqJlel13ffzXf929L43cZVg7
ITyMb+oPyjjT2n3rq2V9zEOkeyY3LWZ6lfwVvH6sR4bLmYEJcVmucb8z5s3Mvm509tx3SjdY1zx5
/i7XvKLmO5WyooDY22L/1V8kjNdUS+8taI2rCpRhuAqL1xypuOB84iSrd2XA84zq1qfi1kB9/jaz
4gV04O6Tw1W8HYpX5rZSU/rc+swM04bAMwfWZeVezTMPlm2tDf+m/EXJ4l3PRWbdo94OqJ7VgGci
1arWa2p+bfTMx4cbNS0n3Mma7QMXtcqfqrE57eY4P/7D6p0lVy48mJpwQUSmJsOPUrI/2PKp3G3T
hM+dolqS1fsKdp4W5Nw+/2t1kb+7JKms3ft73a1fPLd29qS3BfK25dXkjl856D1UdKKT+cfhgZTq
co+D2LSGnfsrl/TL0kxNN05O1ZV7s2ulG+eW3ShgYoOlPldiKo7634jVViwliGc+vYvXFt8t9s3H
hC2Veyo6nyz4M+iTOyElnneONB8V3CJ0poTdd12ONHuVRHcsjxkoPVQ/xA84u2RoXHPVqOQR7o5j
8AhhgQMT2SGqEytkMqnSgKqB9UJFgHgHjXDECWF40/PBP3s+1TOM1PVHAPsjTG2gmrxd3rCejXBp
MmVKUqnFNQ7h9rmzCiUMGK4HbMSPN5yfN4xfRjlJUkRyyxVnyf05MCxAOBwhjPC5XM5CWOADwz6+
lLm4+u0kkGUwqY0qqi2wgpUqEBoJYimX/Hh+IhBuVBJkBqDGlXXypZO+w8xJJ9AkiPKeD8GvF7A9
9cCBIQIeDYM5HBrGEYjovDwBDePyhTRMANN4ESGXphcRiOk6BBy6DhGf7odIIKbLE9L1ihCafYhI
hLzBSEKJaanpYMlhJJaBUvGjPjRwnCodrmPwJuEAsX8cKeRUKS3i8ZQwl5fIU6pEQiHKoTyGRQiC
JsFcWKwWoyIJ9G4SWykaSCqj1sxxYA4PYjKXhgZBfwNQSwcI/7WA0zAGAACyCQAAUEsDBBQACAAI
AMVqbFEAAAAAAAAAAOkAAAAnACAAX19NQUNPU1gvdGVzdC1wZGYvLl9ncmVlbi1yZWN0YW5nbGUu
cGRmVVQNAAeCp61fJ6itXx60rV91eAsAAQT1AQAABFAAAABjYBVjZ2BiYPBNTFbwD1aIUIACkBgD
JxAbAfF2IAbxXzIQBRxDQoKgTJCOA0CsiaaECSouwMAglZyfq5dYUJCTqpeTWFxSWpyakpJYkqoc
EAxVewGIJRkYRBHqCksTixLzSjLzUhmylq6NBylK9rNVA9GF+gYGFkbWpmmJKYmmZknWAUWpZZmp
5dYMAFBLBwhnRUp4jAAAAOkAAABQSwECFAMUAAAAAADnamxRAAAAAAAAAAAAAAAACQAgAAAAAAAA
AAAA7UEAAAAAdGVzdC1wZGYvVVQNAAfDp61fw6etX8OnrV91eAsAAQT1AQAABFAAAABQSwECFAMU
AAgACAAha2xRCAq06boAAAAfAQAAEgAgAAAAAAAAAAAApIFHAAAAdGVzdC1wZGYvdGVzdC5odG1s
VVQNAAcuqK1fMKitXy6orV91eAsAAQT1AQAABFAAAABQSwECFAMUAAgACADFamxR/7WA0zAGAACy
CQAAHAAgAAAAAAAAAAAApIFhAQAAdGVzdC1wZGYvZ3JlZW4tcmVjdGFuZ2xlLnBkZlVUDQAHgqet
XyeorV+Cp61fdXgLAAEE9QEAAARQAAAAUEsBAhQDFAAIAAgAxWpsUWdFSniMAAAA6QAAACcAIAAA
AAAAAAAAAKSB+wcAAF9fTUFDT1NYL3Rlc3QtcGRmLy5fZ3JlZW4tcmVjdGFuZ2xlLnBkZlVUDQAH
gqetXyeorV8etK1fdXgLAAEE9QEAAARQAAAAUEsFBgAAAAAEAAQAlgEAAPwIAAAAAA==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414643</attachid>
            <date>2020-11-19 19:46:36 -0800</date>
            <delta_ts>2020-11-19 20:23:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218871-20201119194635.patch</filename>
            <type>text/plain</type>
            <size>124238</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5OTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGY3NjllMTU5MzYzMWJjNWFmZGZjNzgx
MTY0ZDEyOTI0Zjg1Njk1MDAuLmIyNTg3MTk1ZTc2NGQ3ZDFlOGZiNWQ5Y2YxNGRiYjAzNTNhNzhj
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjAtMTEtMTkgIFNhaWQgQWJvdS1IYWxsYXdhICA8
c2FpZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBTdXBwb3J0IHJlbmRlcmlu
ZyBQREZEb2N1bWVudEltYWdlIGluIEdQVSBQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg4NzEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybUVuYWJsZS5oOgorCiAyMDIw
LTExLTE3ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAg
QnVpbGQgZmFpbHMgb24gaW50ZXJuYWwgc2ltdWxhdG9yIGJ1aWxkcyBkdWUgdG8gbWlzc2luZyBl
bnVtIGtDVlBpeGVsRm9ybWF0VHlwZV9BR1hfNDIwWXBDYkNyOEJpUGxhbmFyVmlkZW9SYW5nZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IDBjMjQxMDYwYzA2OGQxMzI2OWE2MDA4NTNlNzBmZmRmNTM0ZmQ5N2YuLjEy
YmM2NGIyNTYxYjQ3M2FkNzRkYTlkMTgzYzMzNDgyZmMyYTVkNjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTYgQEAKKzIwMjAtMTEtMTkgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5j
b20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBTdXBwb3J0IHJlbmRlcmluZyBQREZEb2N1bWVu
dEltYWdlIGluIEdQVSBQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTg4NzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJ
bWFnZTo6Y29udmVydGVkRGF0YUlmTmVlZGVkIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpkcmF3TmF0aXZlUERGRG9jdW1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpkcmF3TmF0aXZlUERGRG9jdW1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dEltcGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9OYXRpdmVQREZEb2N1bWVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6TmF0aXZlUERGRG9jdW1lbnQ6Ok5hdGl2ZVBERkRvY3VtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6Ok5hdGl2ZVBERkRvY3VtZW50Ojp+TmF0aXZlUERGRG9jdW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6TmF0aXZlUERGRG9jdW1lbnQ6OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
dHJhbnNmb3JtQ29udGV4dEZvclBhaW50aW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZVBE
RkRvY3VtZW50Ojp1cGRhdGVTbmFwc2hvdElmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok5h
dGl2ZVBERkRvY3VtZW50OjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZVBERkRvY3Vt
ZW50OjpkdW1wIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZVBERkRvY3VtZW50OjpT
bmFwc2hvdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZVBERkRvY3VtZW50OjpT
bmFwc2hvdDo6U25hcHNob3QpOgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlUERGRG9jdW1lbnQ6
OlNuYXBzaG90Ojp+U25hcHNob3QpOgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlUERGRG9jdW1l
bnQ6OlNuYXBzaG90OjpjYWxjdWxhdGVTbmFwc2hvdFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6
TmF0aXZlUERGRG9jdW1lbnQ6OlNuYXBzaG90OjpjYW5DcmVhdGVTbmFwc2hvdCk6CisgICAgICAg
IChXZWJDb3JlOjpOYXRpdmVQREZEb2N1bWVudDo6U25hcHNob3Q6OmNhbkJlUmV1c2VkIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZVBERkRvY3VtZW50OjpTbmFwc2hvdDo6bWVtb3J5
Q29zdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVQREZEb2N1bWVudDo6U25hcHNo
b3Q6OnRyYW5zZmVyVmlld3BvcnQpOgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlUERGRG9jdW1l
bnQ6OlNuYXBzaG90OjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVQ
REZEb2N1bWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZVBERkRvY3VtZW50
OjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZVBERkRvY3VtZW50OjpyZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZl
UERGRG9jdW1lbnQ6OnNldE9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZVBERkRv
Y3VtZW50OjpwZGZJbWFnZUNhY2hpbmdQb2xpY3kgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
TmF0aXZlUERGRG9jdW1lbnQ6OnNldFBERkltYWdlQ2FjaGluZ1BvbGljeSk6CisgICAgICAgIChX
ZWJDb3JlOjpOYXRpdmVQREZEb2N1bWVudDo6Y2FjaGluZ0NvdW50Rm9yVGVzdGluZyBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVQREZEb2N1bWVudDo6c25hcHNob3RNZW1vcnlDb3N0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZVBERkRvY3VtZW50OjpjbGVhclNuYXBz
aG90KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QREZEb2N1bWVudEltYWdlLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjpQREZEb2N1bWVudElt
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6On5QREZEb2N1bWVudElt
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OmZpbGVuYW1lRXh0ZW5z
aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OnNpemUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFnZTo6Y2FjaGluZ0NvdW50Rm9y
VGVzdGluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjpzZXRQ
ZGZJbWFnZUNhY2hpbmdQb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFn
ZTo6ZGF0YUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFnZTo6ZGVz
dHJveURlY29kZWREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OmRl
Y29kZWRTaXplQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjpj
b21wdXRlSW50cmluc2ljRGltZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVu
dEltYWdlOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OmR1bXAg
Y29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BERkRvY3VtZW50SW1hZ2UuaDog
UmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3Vt
ZW50SW1hZ2UuaC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVBERkRvY3Vt
ZW50Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVSZXNvdXJjZUNhY2hlLmguCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZl
UERGRG9jdW1lbnRDRy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlUERGRG9j
dW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVQREZEb2N1bWVudDo6Y29t
cHV0ZUJvdW5kc0ZvckN1cnJlbnRQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZVBERkRv
Y3VtZW50OjpwYWdlQ291bnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6YXBwbHlSb3RhdGlv
bkZvclBhaW50aW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZVBERkRvY3VtZW50OjpkcmF3
UERGUGFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFn
ZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0Zp
bHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RGlzcGxheUxpc3Q6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6RGlzcGxheUxpc3Q6Om5hdGl2ZVBERkRvY3VtZW50cyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6OmNhY2hlTmF0aXZlUERGRG9jdW1lbnQp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1CdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU6
OmFwcGx5KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlOjpkZXN0
cm95KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlOjpjb3B5VG8g
Y29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1UeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpzaXplT2ZJ
dGVtSW5CeXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6aXNEcmF3aW5nSXRl
bSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6aXNJbmxpbmVJdGVtKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlUERGRG9j
dW1lbnQ6OmFwcGx5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpvcGVy
YXRvcjw8KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtcy5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVQ
REZEb2N1bWVudDo6RHJhd05hdGl2ZVBERkRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpEcmF3TmF0aXZlUERGRG9jdW1lbnQ6OnBkZkRvY3VtZW50SWRlbnRpZmllciBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZVBERkRvY3Vt
ZW50Ojpzb3VyY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdO
YXRpdmVQREZEb2N1bWVudDo6ZGVzdGluYXRpb25SZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlUERGRG9jdW1lbnQ6Omdsb2JhbEJvdW5kcyBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZVBERkRvY3VtZW50
Ojpsb2NhbEJvdW5kcyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OlJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlJlY29yZGVyOjpkcmF3TmF0aXZlUERGRG9jdW1lbnQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OkRlbGVnYXRlOjpjYWNoZU5hdGl2
ZVBERkRvY3VtZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZXBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
UmVwbGF5ZXI6OlJlcGxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjphcHBs
eURyYXdOYXRpdmVQREZEb2N1bWVudEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OlJlcGxheWVyOjphcHBseUl0ZW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL05hdGl2ZVBERkRvY3VtZW50TWFjLm1tOiBSZW5hbWVkIGZyb20gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0uCisgICAg
ICAgIChXZWJDb3JlOjpOYXRpdmVQREZEb2N1bWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok5hdGl2ZVBERkRvY3VtZW50Ojpjb21wdXRlQm91bmRzRm9yQ3VycmVudFBhZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6TmF0aXZlUERGRG9jdW1lbnQ6OnBhZ2VDb3VudCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpOYXRpdmVQREZEb2N1bWVudDo6ZHJhd1BERlBhZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6TmF0aXZlUERGRG9jdW1lbnQ6OmNvbnZlcnRQb3N0U2NyaXB0RGF0YVRvUERGKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVySW1hZ2U6OnBhaW50SW50b1JlY3QpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6cGRmRG9jdW1lbnRDYWNoaW5nQ291
bnQpOgorCiAyMDIwLTExLTE3ICBBZHJpYW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxp
YS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXggZm9yIG5vbi11bmlmaWVkIGJ1
aWxkcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggNzU3MzhlOWU4NTVhYzgxYmU3OTM4Y2I1MzAyZjZmZGUzMjM5ZmI3
Ny4uNTIzOGY5ZjlkMzQyOGJmMDZjZTYzNDM5YjJkNjliMmIyZTdlMzQwMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwzMiBAQAorMjAyMC0xMS0xOSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxl
LmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdIFN1cHBvcnQgcmVuZGVyaW5nIFBERkRvY3Vt
ZW50SW1hZ2UgaW4gR1BVIFByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxODg3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5o
OgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNhY2hlTmF0aXZl
UERGRG9jdW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpk
ZWNvZGVJdGVtKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQubWVzc2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVSZXNvdXJjZUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNo
ZTo6Y2FjaGVOYXRpdmVQREZEb2N1bWVudCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291
cmNlQ2FjaGU6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmg6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJl
c291cmNlQ2FjaGU6Om5hdGl2ZVBERkRvY3VtZW50cyBjb25zdCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y2FjaGVOYXRpdmVQ
REZEb2N1bWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVz
b3VyY2VDYWNoZVByb3h5OjpjYWNoZU5hdGl2ZVBERkRvY3VtZW50KToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpyZWxlYXNlTmF0aXZlUERGRG9jdW1lbnQpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94
eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tOgorICAg
ICAgICAoV2ViS2l0OjpQREZQbHVnaW46OmNvbnZlcnRQb3N0U2NyaXB0RGF0YUlmTmVlZGVkKToK
KwogMjAyMC0xMS0xNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAg
IFttYWNPU10gU3RvcCB1c2luZyBSdW5Mb29wVHlwZT1fV2ViS2l0IHN0YXJ0aW5nIGluIEJpZyBT
dXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmggYi9Tb3VyY2Uv
V1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCmluZGV4IGE4ZDEzM2JjNDk1N2VjZTRmNzYxMTFmY2Ez
YTliYWI2NzNmZWY5NTYuLjllZDEzNDZjZDQ5YzljZTMxM2IzYjE0OGVjOGFkYzI3NjkwMzY1ZTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmgKKysrIGIvU291cmNl
L1dURi93dGYvUGxhdGZvcm1FbmFibGUuaApAQCAtMjI1LDYgKzIyNSwxNCBAQAogI2RlZmluZSBF
TkFCTEVfQ1NTX0NPTklDX0dSQURJRU5UUyAwCiAjZW5kaWYKIAorI2lmICFkZWZpbmVkKEVOQUJM
RV9QREZET0NVTUVOVElNQUdFKSAmJiBVU0UoQ0cpCisjZGVmaW5lIEVOQUJMRV9QREZET0NVTUVO
VElNQUdFIDEKKyNlbmRpZgorCisjaWYgIWRlZmluZWQoRU5BQkxFX1BERktJVF9GT1JfUERGRE9D
VU1FTlRJTUFHRSkgJiYgUExBVEZPUk0oTUFDKQorI2RlZmluZSBFTkFCTEVfUERGS0lUX0ZPUl9Q
REZET0NVTUVOVElNQUdFIDEKKyNlbmRpZgorCiAjaWYgIWRlZmluZWQoRU5BQkxFX0NVU1RPTV9D
VVJTT1JfU1VQUE9SVCkKICNkZWZpbmUgRU5BQkxFX0NVU1RPTV9DVVJTT1JfU1VQUE9SVCAxCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKaW5kZXggOTZiZmQ1NWIxNDUwNjIzMDBhMjM1YzljZTJiMzRmMDM5
ZTlhMGU4ZS4uNTlmMTVmZjk1NDdiODBmMjk0YWZhMjhlMjBlY2NiYjI5MTlhOTNmOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQKQEAgLTE5NTIsMTAgKzE5NTIsMTIgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvTUlNRVR5
cGVDYWNoZS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAogcGxhdGZvcm0v
Z3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mv
TmF0aXZlSW1hZ2UuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVQREZEb2N1bWVudC5jcHAK
IHBsYXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVHJhdmVy
c2FsU3RhdGUuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcAogcGxhdGZv
cm0vZ3JhcGhpY3MvUGF0dGVybi5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL1BERkRvY3VtZW50SW1h
Z2UuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVRpbWVSYW5nZXMuY3BwCiBwbGF0Zm9y
bS9ncmFwaGljcy9SZWdpb24uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBs
ZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDJiMzNjNGJjZTc0ZGRlYWQ4MThiYTNj
YjJhNDQ5MzE1NDZiNTlhNjAuLjA0MzU5ZGUwODk5NjhkY2IwYWQ3YzA5MDQzNjZjMDJjNjcxZGFl
OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291
cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtMzQwLDcgKzM0MCw3IEBAIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ludFBvaW50Q0cuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbnRSZWN0
Q0cuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbnRTaXplQ0cuY3BwCiBwbGF0Zm9ybS9ncmFw
aGljcy9jZy9OYXRpdmVJbWFnZUNHLmNwcAotcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1l
bnRJbWFnZS5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZVBERkRvY3VtZW50Q0cuY3Bw
CiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXRoQ0cuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9Q
YXR0ZXJuQ0cuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9TdWJpbWFnZUNhY2hlV2l0aFRpbWVy
LmNwcApAQCAtNDEzLDcgKzQxMyw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9JY29uTWFjLm1t
CiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW0KIHBsYXRmb3JtL2dyYXBoaWNzL21h
Yy9JbnRQb2ludE1hYy5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ludFNpemVNYWMubW0KLXBs
YXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tCitwbGF0Zm9ybS9ncmFw
aGljcy9tYWMvTmF0aXZlUERGRG9jdW1lbnRNYWMubW0KIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9T
aW1wbGVGb250RGF0YUNvcmVUZXh0LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1N3aXRjaGlu
Z0dQVUNsaWVudC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJLaXROU0ltYWdlRXh0cmFz
Lm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggNmUxYzVmOTVjMWE5NzIwYjYxODU2ZTMxNWUyMWQzNGU2OThjNjg5Yi4uMWYzOTQx
ZWM4NGVhOWI3NWFjMmRjM2FmMTQ4YmIzNzhkM2E0MTUyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjE3Nyw2ICsyMTc3LDgg
QEAKIAkJNzI3QTdGM0EyNDA3OEI4NDAwNEQyOTMxIC8qIEltYWdlQnVmZmVySU9TdXJmYWNlQmFj
a2VuZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJC
QUMzQUIyM0UxRTU0NDAwOEQ3NDFDIC8qIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyOTlCQzY3
MjNENkE1MzIwMENDNjg4MyAvKiBBbHBoYVByZW11bHRpcGxpY2F0aW9uLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Mjk5QkM2NDIzRDY4NkE2MDBDQzY4
ODMgLyogQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyOTlCQzY4MjNENkE1M0UwMENDNjg4MyAvKiBSZW5k
ZXJpbmdNb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3Mjk5QkM2NjIzRDY4NkM2MDBDQzY4ODMgLyogUmVuZGVyaW5nTW9kZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTcyOUM0NUNEMjU2NjA1MzQw
MDA0MDdDRiAvKiBOYXRpdmVQREZEb2N1bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNzI5QzQ1Q0EyNTY0RjgxQjAwMDQwN0NGIC8qIE5hdGl2ZVBE
RkRvY3VtZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJNzI5QzQ1Q0UyNTY2MDU2QzAwMDQwN0NGIC8qIFBsYXRmb3JtUERGRG9jdW1lbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyOUM0NUNDMjU2
NUQ2QzcwMDA0MDdDRiAvKiBQbGF0Zm9ybVBERkRvY3VtZW50LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzI5RDA1MzAyNTMxNDI0MzAwNDIyMDk4
IC8qIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI5RDA1MkUyNTMxM0UyNjAwNDIyMDk4IC8qIFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTcyQTczQkVGMjQ1QTNGOTAwMDFDOUQwMyAvKiBBbmltYXRpb25G
cmFtZVJhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDcyMkE4MTVDMjM4RkQ1MDUwMEMwMDU4MyAvKiBBbmltYXRpb25GcmFtZVJhdGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MkFCOUEyMTI1NUE5
RkRFMDBFNkVCRjEgLyogTmF0aXZlSW1hZ2VSZWZlcmVuY2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyQUI5QTFGMjU1QTlFQTYwMEU2RUJGMSAvKiBO
YXRpdmVJbWFnZVJlZmVyZW5jZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC03MDUzLDcgKzcwNTUsNyBAQAogCQkyRDVDOUNGQzE5QzdCNTJFMDBC
M0M1QzEgLyogUGFnZU92ZXJsYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UGFnZU92ZXJsYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ1QzlDRkQxOUM3
QjUyRTAwQjNDNUMxIC8qIFBhZ2VPdmVybGF5Q29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYWdlT3ZlcmxheUNvbnRyb2xsZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkyRDVDOUNGRTE5QzdCNTJFMDBCM0M1QzEgLyogUGFnZU92
ZXJsYXlDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhZ2VP
dmVybGF5Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkyRDZFNDY4
MjE3RDY2MEY1MDBFQ0Y4QkIgLyogUERGRG9jdW1lbnRJbWFnZU1hYy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBERkRvY3VtZW50SW1hZ2VNYWMubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJENkU0NjgyMTdENjYwRjUwMEVDRjhCQiAvKiBOYXRp
dmVQREZEb2N1bWVudE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IE5hdGl2ZVBERkRvY3VtZW50TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkyRDZGM0U4QTFDMUVDQjFDMDA2MURCRDQgLyogTW9ja1BhZ2VPdmVybGF5LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vY2tQYWdlT3ZlcmxheS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJENkYzRThCMUMxRUNCMUMwMDYxREJENCAvKiBNb2Nr
UGFnZU92ZXJsYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9ja1BhZ2VP
dmVybGF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJENkYzRThDMUMxRUNCMUMw
MDYxREJENCAvKiBNb2NrUGFnZU92ZXJsYXkuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE1v
Y2tQYWdlT3ZlcmxheS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDAyOCw2
ICsxMDAzMCwxMCBAQAogCQk3MjdBRkVEMzFBMkVBNkEwMDAwNDQyRTggLyogRVhUc1JHQi5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRVhUc1JHQi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTcyOTlCQzY0MjNENjg2QTYwMENDNjg4MyAvKiBBbHBoYVByZW11bHRpcGxpY2F0
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFscGhhUHJlbXVsdGlwbGljYXRpb24uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI5OUJDNjYyM0Q2ODZDNjAwQ0M2ODgzIC8qIFJlbmRlcmlu
Z01vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyaW5nTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk3MjlDNDVDNzI1NjRGMEUxMDAwNDA3Q0YgLyogTmF0aXZlUERGRG9jdW1l
bnRDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOYXRpdmVQREZEb2N1bWVudENHLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI5QzQ1QzkyNTY0RjgxQjAwMDQwN0NGIC8qIE5h
dGl2ZVBERkRvY3VtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5hdGl2ZVBERkRvY3VtZW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI5QzQ1Q0EyNTY0RjgxQjAwMDQw
N0NGIC8qIE5hdGl2ZVBERkRvY3VtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5hdGl2ZVBERkRvY3Vt
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyOUM0NUNDMjU2NUQ2QzcwMDA0
MDdDRiAvKiBQbGF0Zm9ybVBERkRvY3VtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtUERG
RG9jdW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI5RDA1MkUyNTMxM0Uy
NjAwNDIyMDk4IC8qIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNzJBQjlBMUYyNTVBOUVBNjAwRTZFQkYxIC8qIE5hdGl2ZUltYWdlUmVmZXJlbmNlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE5hdGl2ZUltYWdlUmVmZXJlbmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTcyQkFDM0E0MjNFMTczMjcwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlckJhY2tl
bmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VCdWZmZXJC
YWNrZW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI2Mjc2LDEwICsyNjI4
Miw5IEBACiAJCQkJMUMyMUU1N0ExODNFRDFGRjAwMUMyODlEIC8qIElPU3VyZmFjZVBvb2wuY3Bw
ICovLAogCQkJCTFDMjFFNTdCMTgzRUQxRkYwMDFDMjg5RCAvKiBJT1N1cmZhY2VQb29sLmggKi8s
CiAJCQkJMzc3QTNBOEYxNUVGQ0U5QTAwNTlGNUM3IC8qIE5hdGl2ZUltYWdlQ0cuY3BwICovLAor
CQkJCTcyOUM0NUM3MjU2NEYwRTEwMDA0MDdDRiAvKiBOYXRpdmVQREZEb2N1bWVudENHLmNwcCAq
LywKIAkJCQlCMjc1MzUzNTBCMDUzODE0MDAyQ0U2NEYgLyogUGF0aENHLmNwcCAqLywKIAkJCQlB
ODBBMzhGRDBFNTBDQzgyMDBBMjVFQkMgLyogUGF0dGVybkNHLmNwcCAqLywKLQkJCQlCMjc1MzUz
NjBCMDUzODE0MDAyQ0U2NEYgLyogUERGRG9jdW1lbnRJbWFnZS5jcHAgKi8sCi0JCQkJQjI3NTM1
MzcwQjA1MzgxNDAwMkNFNjRGIC8qIFBERkRvY3VtZW50SW1hZ2UuaCAqLywKIAkJCQkxRkM0MEZC
ODE2NTVDNTkxMDA0MEYyOUUgLyogU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5jcHAgKi8sCiAJCQkJ
MUZDNDBGQjcxNjU1QzU5MTAwNDBGMjlFIC8qIFN1YmltYWdlQ2FjaGVXaXRoVGltZXIuaCAqLywK
IAkJCQlCMjc1MzUyQTBCMDUzODE0MDAyQ0U2NEYgLyogVHJhbnNmb3JtYXRpb25NYXRyaXhDRy5j
cHAgKi8sCkBAIC0yNjMwNSw3ICsyNjMxMCw3IEBACiAJCQkJQjI3NTM1NEUwQjA1MzgxNDAwMkNF
NjRGIC8qIEltYWdlTWFjLm1tICovLAogCQkJCUIyNzUzNTRGMEIwNTM4MTQwMDJDRTY0RiAvKiBJ
bnRQb2ludE1hYy5tbSAqLywKIAkJCQlCMjc1MzU1MTBCMDUzODE0MDAyQ0U2NEYgLyogSW50U2l6
ZU1hYy5tbSAqLywKLQkJCQkyRDZFNDY4MjE3RDY2MEY1MDBFQ0Y4QkIgLyogUERGRG9jdW1lbnRJ
bWFnZU1hYy5tbSAqLywKKwkJCQkyRDZFNDY4MjE3RDY2MEY1MDBFQ0Y4QkIgLyogTmF0aXZlUERG
RG9jdW1lbnRNYWMubW0gKi8sCiAJCQkJMTYzRTg4RjUxMThBMzlEMjAwRUQ5MjMxIC8qIFNpbXBs
ZUZvbnREYXRhQ29yZVRleHQuY3BwICovLAogCQkJCUMxMUE5RUQyMjE0MDU3OEIwMENGQjIwQSAv
KiBTd2l0Y2hpbmdHUFVDbGllbnQuY3BwICovLAogCQkJCUMxMUE5RUNEMjE0MDNBNUMwMENGQjIw
QSAvKiBTd2l0Y2hpbmdHUFVDbGllbnQuaCAqLywKQEAgLTI2NTIyLDYgKzI2NTI3LDggQEAKIAkJ
CQk3MjUyMzk2QjI1NENBREMyMDBGNUZCMTUgLyogTmF0aXZlSW1hZ2UuY3BwICovLAogCQkJCTU1
QTMzNkY2MUQ4MjA5RjQwMDIyQzRDNyAvKiBOYXRpdmVJbWFnZS5oICovLAogCQkJCTcyQUI5QTFG
MjU1QTlFQTYwMEU2RUJGMSAvKiBOYXRpdmVJbWFnZVJlZmVyZW5jZS5oICovLAorCQkJCTcyOUM0
NUM5MjU2NEY4MUIwMDA0MDdDRiAvKiBOYXRpdmVQREZEb2N1bWVudC5jcHAgKi8sCisJCQkJNzI5
QzQ1Q0EyNTY0RjgxQjAwMDQwN0NGIC8qIE5hdGl2ZVBERkRvY3VtZW50LmggKi8sCiAJCQkJQjI3
NTM1NTIwQjA1MzgxNDAwMkNFNjRGIC8qIFBhdGguY3BwICovLAogCQkJCUIyNzUzNTUzMEIwNTM4
MTQwMDJDRTY0RiAvKiBQYXRoLmggKi8sCiAJCQkJQTg4REQ0ODgwQjQ2MjlCMDAwQzAyOTkwIC8q
IFBhdGhUcmF2ZXJzYWxTdGF0ZS5jcHAgKi8sCkBAIC0yNjUzMCwxMSArMjY1MzcsMTQgQEAKIAkJ
CQkyRDUwMDJGQTFCNTZENzk5MDAyMEFBRjcgLyogUGF0aFV0aWxpdGllcy5oICovLAogCQkJCUE4
RkE2RTVDMEU0Q0ZERUQwMEQ1Q0Y0OSAvKiBQYXR0ZXJuLmNwcCAqLywKIAkJCQlBOEZBNkU1QjBF
NENGREVEMDBENUNGNDkgLyogUGF0dGVybi5oICovLAorCQkJCUIyNzUzNTM2MEIwNTM4MTQwMDJD
RTY0RiAvKiBQREZEb2N1bWVudEltYWdlLmNwcCAqLywKKwkJCQlCMjc1MzUzNzBCMDUzODE0MDAy
Q0U2NEYgLyogUERGRG9jdW1lbnRJbWFnZS5oICovLAogCQkJCTcyNkQ1NkUxMjUzQUUwNDMwMDAy
RUY5MCAvKiBQbGF0Zm9ybUltYWdlLmggKi8sCiAJCQkJNzJCQUMzQTYyM0UxNzMyODAwOEQ3NDFD
IC8qIFBsYXRmb3JtSW1hZ2VCdWZmZXIuaCAqLywKIAkJCQk1NTA2NDBBRDI0MDc1NkRBMDBBQUUw
NDUgLyogUGxhdGZvcm1JbWFnZUJ1ZmZlckJhY2tlbmQuaCAqLywKIAkJCQkwNTYyRjk2MDE1NzNG
ODhGMDAzMUNBMTYgLyogUGxhdGZvcm1MYXllci5oICovLAogCQkJCUNFRUZDRDdCMTlEQjMzREMw
MDM4NzZENyAvKiBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaCAqLywKKwkJCQk3MjlDNDVD
QzI1NjVENkM3MDAwNDA3Q0YgLyogUGxhdGZvcm1QREZEb2N1bWVudC5oICovLAogCQkJCTA3Mjg0
N0UyMTZFQkM1QjAwMDQzQ0ZBNCAvKiBQbGF0Zm9ybVRleHRUcmFjay5oICovLAogCQkJCTA3NEU4
MkI4MThBNjlGMEUwMDdFRjU0QyAvKiBQbGF0Zm9ybVRpbWVSYW5nZXMuY3BwICovLAogCQkJCTA3
NEU4MkI5MThBNjlGMEUwMDdFRjU0QyAvKiBQbGF0Zm9ybVRpbWVSYW5nZXMuaCAqLywKQEAgLTMz
NTc0LDYgKzMzNTg0LDcgQEAKIAkJCQk3MjZENTZFMzI1M0FFMzY2MDAwMkVGOTAgLyogTmF0aXZl
SW1hZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTcyQUI5QTIxMjU1QTlGREUwMEU2RUJGMSAvKiBO
YXRpdmVJbWFnZVJlZmVyZW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNCMkQxNzUxQjhCQ0Q2
QTAwQTAyRTQ3IC8qIE5hdGl2ZU5vZGVGaWx0ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTcyOUM0
NUNEMjU2NjA1MzQwMDA0MDdDRiAvKiBOYXRpdmVQREZEb2N1bWVudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRTEwQjlCNkMwQjc0NzU5OTAwM0VEODkwIC8qIE5hdGl2ZVhQYXRoTlNSZXNvbHZlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTNDQ0YwMjcwQUY2QzUyOTAwMDE4RTg5IC8qIE5hdmlnYXRp
b25BY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTk3OUY0M0Q0MTA3NUU0NEEwMDAwRjgzQiAv
KiBOYXZpZ2F0aW9uU2NoZWR1bGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTMzODA5LDYgKzMzODIw
LDcgQEAKIAkJCQkwN0Y5NDQxNjE4NjREMDQ2MDA1RDMxQ0IgLyogUGxhdGZvcm1NZWRpYVNlc3Np
b25NYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzVDNDc2OTA5QUM0RDQzMDBBNkFBQjQg
LyogUGxhdGZvcm1Nb3VzZUV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlDNTk4OTA1ODE0RTlD
Mjk5MDBFOEQxOEIgLyogUGxhdGZvcm1QYXN0ZWJvYXJkLmggaW4gSGVhZGVycyAqLywKKwkJCQk3
MjlDNDVDRTI1NjYwNTZDMDAwNDA3Q0YgLyogUGxhdGZvcm1QREZEb2N1bWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkNFQzAxRDcwQzI3NEVCNDAwOUY0RUM5IC8qIFBsYXRmb3JtU2NyZWVuLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkyOTdCRTNENTE2QzAzQzA4MDAzMzE2QkQgLyogUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5N0JFM0Q2MTZD
MDNDMEIwMDMzMTZCRCAvKiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmggaW4gSGVhZGVy
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCmluZGV4
IDVjYzkzMzgzMjU3NGRjYmViZWQ4MmMyYzBiY2U4ZjAwYzJiY2E3MmUuLjY2YjY1MGM2MmFhMDUy
NjU5MDdjMDg5MjlkMjU3NGZiYjc5MmZmYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEltYWdlLmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkZyYW1lVmll
dy5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJNZW1vcnlDYWNo
ZS5oIgorI2luY2x1ZGUgIk5hdGl2ZVBERkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyRWxl
bWVudC5oIgogI2luY2x1ZGUgIlNWR0ltYWdlLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4u
aCIKQEAgLTQ5LDEwICs1MCw2IEBACiAjaW5jbHVkZSAiU3lzdGVtTWVtb3J5LmgiCiAjZW5kaWYK
IAotI2lmIFVTRShDRykKLSNpbmNsdWRlICJQREZEb2N1bWVudEltYWdlLmgiCi0jZW5kaWYKLQog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBDYWNoZWRJbWFnZTo6Q2FjaGVkSW1hZ2UoQ2FjaGVkUmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUEFMOjpTZXNzaW9uSUQmIHNlc3Npb25JRCwg
Y29uc3QgQ29va2llSmFyKiBjb29raWVKYXIpCkBAIC01MjYsOCArNTIzLDggQEAgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZm
ZXIqIGRhdGEpIGNvbnMKIHsKICAgICBpZiAoIWRhdGEgfHwgIWlzUG9zdFNjcmlwdFJlc291cmNl
KCkpCiAgICAgICAgIHJldHVybiBkYXRhOwotI2lmIFBMQVRGT1JNKE1BQykgJiYgIVVTRShXRUJL
SVRfSU1BR0VfREVDT0RFUlMpCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFBERkRv
Y3VtZW50SW1hZ2U6OmNvbnZlcnRQb3N0U2NyaXB0RGF0YVRvUERGKGRhdGEtPmNyZWF0ZUNGRGF0
YSgpKS5nZXQoKSk7CisjaWYgRU5BQkxFKFBERkRPQ1VNRU5USU1BR0UpICYmIEVOQUJMRShQREZL
SVRfRk9SX1BERkRPQ1VNRU5USU1BR0UpCisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KE5hdGl2ZVBERkRvY3VtZW50Ojpjb252ZXJ0UG9zdFNjcmlwdERhdGFUb1BERihkYXRhLT5jcmVh
dGVDRkRhdGEoKSkuZ2V0KCkpOwogI2Vsc2UKICAgICAvLyBMb2FkaW5nIHRoZSBpbWFnZSBzaG91
bGQgaGF2ZSBiZWVuIGNhbmNlbGVkIGlmIHRoZSBzeXN0ZW0gZG9lcyBub3Qgc3VwcG9ydCBjb252
ZXJ0aW5nIFBvc3RTY3JpcHQgdG8gUERGLgogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5j
cHAKaW5kZXggNWNhY2E4NTQ1MmMxYTY5OGI5NWU0ZGY0NDAwODU4Yzk2MzQ1ZWNlNS4uY2E0ODlm
MDgwN2ViNTAyYTU3NzVlNmZjN2QwYjNmMDA5ODY4ZTYyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC0zNSw2ICsz
NSw3IEBACiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCiAj
aW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlLmgiCisjaW5jbHVkZSAiTmF0aXZlUERGRG9jdW1l
bnQuaCIKICNpbmNsdWRlICJSb3VuZGVkUmVjdC5oIgogI2luY2x1ZGUgIlRleHRSdW4uaCIKICNp
bmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CkBAIC03NDQsNiArNzQ1LDE5IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmIGltYWdlLCBjb25z
dCBGbG9hdFNpemUmIGltYWdlCiAgICAgZHJhd1BsYXRmb3JtSW1hZ2UoaW1hZ2UucGxhdGZvcm1J
bWFnZSgpLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKIH0KIAordm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVQREZEb2N1bWVudChOYXRpdmVQREZEb2N1bWVu
dCYgcGRmRG9jdW1lbnQsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiBvcHRpb25zKQoreworICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT5kcmF3TmF0
aXZlUERGRG9jdW1lbnQocGRmRG9jdW1lbnQsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3Qs
IG9wdGlvbnMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgcGRmRG9jdW1lbnQuZHJh
dygqdGhpcywgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7Cit9CisKIElt
YWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFnZSYgaW1hZ2UsIGNv
bnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
aW1hZ2VQYWludGluZ09wdGlvbnMpCiB7CiAgICAgcmV0dXJuIGRyYXdJbWFnZShpbWFnZSwgRmxv
YXRSZWN0KGRlc3RpbmF0aW9uLCBpbWFnZS5zaXplKCkpLCBGbG9hdFJlY3QoRmxvYXRQb2ludCgp
LCBpbWFnZS5zaXplKCkpLCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IDQ1MzlmYmI2
ZGJmM2VjNzgzYzYxMzM4NmVhMjU0OTRmNGViNmIxYTQuLjdlYjA1YzAyYzlkNjk1ZmEwN2Q3ODc3
Y2UzYmM2ODEyNDkyM2Y0ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC05Myw2ICs5Myw4IEBAIGNsYXNzIEdyYXBoaWNz
Q29udGV4dFBsYXRmb3JtUHJpdmF0ZTsKIGNsYXNzIEltYWdlQnVmZmVyOwogY2xhc3MgSW50UmVj
dDsKIGNsYXNzIE1lZGlhUGxheWVyOworY2xhc3MgTmF0aXZlSW1hZ2U7CitjbGFzcyBOYXRpdmVQ
REZEb2N1bWVudDsKIGNsYXNzIFJvdW5kZWRSZWN0OwogY2xhc3MgR3JhcGhpY3NDb250ZXh0R0w7
CiBjbGFzcyBQYXRoOwpAQCAtMzgwLDYgKzM4Miw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHN0cm9rZVJlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQgbGluZVdpZHRoKTsK
IAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiwg
Y29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0p
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd05hdGl2ZVBERkRvY3VtZW50KE5hdGl2ZVBE
RkRvY3VtZW50JiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmID0geyB9KTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIEltYWdlRHJhd1Jlc3VsdCBkcmF3
SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmID0geyBJbWFnZU9yaWVudGF0aW9uOjpGcm9tSW1hZ2UgfSk7CiAgICAg
V0VCQ09SRV9FWFBPUlQgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFnZShJbWFnZSYsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgSW1h
Z2VPcmllbnRhdGlvbjo6RnJvbUltYWdlIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCmluZGV4IDVjODI1ZjdkNDFi
OTg2MTZkMTdmZGI4ZWJlN2NmZmQ3ZDJiZmNjOGMuLjk1MTNmMTg3OTRjZjM2ZDFlNDNhM2QwZWRj
YmFiMjRlNWRjZGQyZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgKQEAgLTcxLDYgKzcxLDcgQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd05hdGl2ZUltYWdl
KE5hdGl2ZUltYWdlJiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRyYXdOYXRpdmVQREZEb2N1bWVudChO
YXRpdmVQREZEb2N1bWVudCYsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihOYXRpdmVJ
bWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNv
bnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdSZWN0KGNv
bnN0IEZsb2F0UmVjdCYsIGZsb2F0IGJvcmRlclRoaWNrbmVzcykgPSAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCmluZGV4IDkzN2FhNGQzNTkzZDFkMjM5MTcz
M2YwYzAyNzc0YTIxMTEzMzY1ZTEuLmU1Y2IxZTIwZGEyMWU3Y2UwYmM1NTJmZWU5MjgwYTc2Mzlh
NDhkMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKQEAg
LTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJJbWFnZU9ic2VydmVyLmgiCiAjaW5jbHVkZSAiTGVu
Z3RoLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgorI2luY2x1ZGUgIlBERkRvY3Vt
ZW50SW1hZ2UuaCIKICNpbmNsdWRlICJTVkdJbWFnZS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZl
ci5oIgogI2luY2x1ZGUgPG1hdGguaD4KQEAgLTQyLDcgKzQzLDYgQEAKICNpbmNsdWRlIDx3dGYv
dGV4dC9UZXh0U3RyZWFtLmg+CiAKICNpZiBVU0UoQ0cpCi0jaW5jbHVkZSAiUERGRG9jdW1lbnRJ
bWFnZS5oIgogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CiAjZW5k
aWYKIApAQCAtNzAsNyArNzAsNyBAQCBSZWZQdHI8SW1hZ2U+IEltYWdlOjpjcmVhdGUoSW1hZ2VP
YnNlcnZlciYgb2JzZXJ2ZXIpCiAKICAgICBhdXRvIHVybCA9IG9ic2VydmVyLnNvdXJjZVVybCgp
OwogICAgIGlmIChpc1BERlJlc291cmNlKG1pbWVUeXBlLCB1cmwpIHx8IGlzUG9zdFNjcmlwdFJl
c291cmNlKG1pbWVUeXBlLCB1cmwpKSB7Ci0jaWYgVVNFKENHKSAmJiAhVVNFKFdFQktJVF9JTUFH
RV9ERUNPREVSUykKKyNpZiBFTkFCTEUoUERGRE9DVU1FTlRJTUFHRSkKICAgICAgICAgcmV0dXJu
IFBERkRvY3VtZW50SW1hZ2U6OmNyZWF0ZSgmb2JzZXJ2ZXIpOwogI2Vsc2UKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9OYXRpdmVQREZEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9OYXRpdmVQREZEb2N1bWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2M5YmVkYmJjNDdkNmQ5MGM0MmVm
Yzc0NDE4YWMwNTc0YzE1OTRjNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL05hdGl2ZVBERkRvY3VtZW50LmNwcApAQCAtMCwwICsxLDI0OSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiTmF0aXZlUERGRG9jdW1lbnQuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitOYXRpdmVQREZEb2N1bWVudDo6TmF0aXZlUERGRG9jdW1lbnQoU2hhcmVkQnVm
ZmVyJiBkYXRhLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyLCBQbGF0Zm9ybVBERkRvY3VtZW50UHRyJiYgcGxhdGZvcm1QREZEb2N1bWVudCkK
KyAgICA6IG1fZGF0YShtYWtlUmVmKGRhdGEpKQorICAgICwgbV9yZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQorICAgICwgbV9wbGF0Zm9ybVBE
RkRvY3VtZW50KFdURk1vdmUocGxhdGZvcm1QREZEb2N1bWVudCkpCit7CisgICAgaWYgKHBhZ2VD
b3VudCgpKQorICAgICAgICBjb21wdXRlQm91bmRzRm9yQ3VycmVudFBhZ2UoKTsKK30KKworTmF0
aXZlUERGRG9jdW1lbnQ6On5OYXRpdmVQREZEb2N1bWVudCgpCit7CisgICAgaWYgKG1fb2JzZXJ2
ZXIpCisgICAgICAgIG1fb2JzZXJ2ZXItPnJlbGVhc2VOYXRpdmVQREZEb2N1bWVudChtX3JlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcik7Cit9CisKK0Zsb2F0U2l6ZSBOYXRpdmVQREZEb2N1bWVu
dDo6c2l6ZSgpIGNvbnN0Cit7CisgICAgRmxvYXRTaXplIGV4cGFuZGVkQ3JvcEJveFNpemUgPSBG
bG9hdFNpemUoZXhwYW5kZWRJbnRTaXplKG1fY3JvcEJveC5zaXplKCkpKTsKKworICAgIGlmICht
X3JvdGF0aW9uRGVncmVlcyA9PSA5MCB8fCBtX3JvdGF0aW9uRGVncmVlcyA9PSAyNzApCisgICAg
ICAgIHJldHVybiBleHBhbmRlZENyb3BCb3hTaXplLnRyYW5zcG9zZWRTaXplKCk7CisgICAgcmV0
dXJuIGV4cGFuZGVkQ3JvcEJveFNpemU7Cit9CisKK3N0YXRpYyB2b2lkIHRyYW5zZm9ybUNvbnRl
eHRGb3JQYWludGluZyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCkKK3sKKyAgICBmbG9hdCBoU2NhbGUg
PSBkZXN0UmVjdC53aWR0aCgpIC8gc3JjUmVjdC53aWR0aCgpOworICAgIGZsb2F0IHZTY2FsZSA9
IGRlc3RSZWN0LmhlaWdodCgpIC8gc3JjUmVjdC5oZWlnaHQoKTsKKworICAgIGlmIChoU2NhbGUg
IT0gdlNjYWxlKSB7CisgICAgICAgIGZsb2F0IG1pbmltdW1TY2FsZSA9IHN0ZDo6bWF4KChkZXN0
UmVjdC53aWR0aCgpIC0gMC41KSAvIHNyY1JlY3Qud2lkdGgoKSwgKGRlc3RSZWN0LmhlaWdodCgp
IC0gMC41KSAvIHNyY1JlY3QuaGVpZ2h0KCkpOworICAgICAgICBmbG9hdCBtYXhpbXVtU2NhbGUg
PSBzdGQ6Om1pbigoZGVzdFJlY3Qud2lkdGgoKSArIDAuNSkgLyBzcmNSZWN0LndpZHRoKCksIChk
ZXN0UmVjdC5oZWlnaHQoKSArIDAuNSkgLyBzcmNSZWN0LmhlaWdodCgpKTsKKworICAgICAgICAv
LyBJZiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSB0d28gc2NhbGVzIGlzIGR1ZSB0byBpbnRl
Z2VyIHJvdW5kaW5nIG9mIGltYWdlIHNpemVzLAorICAgICAgICAvLyB1c2UgdGhlIHNtYWxsZXIg
b2YgdGhlIHR3byBvcmlnaW5hbCBzY2FsZXMgdG8gZW5zdXJlIHRoYXQgdGhlIGltYWdlIGZpdHMg
aW5zaWRlIHRoZQorICAgICAgICAvLyBzcGFjZSBvcmlnaW5hbGx5IGFsbG9jYXRlZCBmb3IgaXQu
CisgICAgICAgIGlmIChtaW5pbXVtU2NhbGUgPD0gbWF4aW11bVNjYWxlKSB7CisgICAgICAgICAg
ICBoU2NhbGUgPSBzdGQ6Om1pbihoU2NhbGUsIHZTY2FsZSk7CisgICAgICAgICAgICB2U2NhbGUg
PSBoU2NhbGU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBkcmF3UERGUGFnZSgpIHJlbGll
cyBvbiBkcmF3aW5nIHRoZSB3aG9sZSBQREYgaW50byBhIGNvbnRleHQgc3RhcnRpbmcgYXQgKDAs
IDApLiBXZSBuZWVkCisgICAgLy8gdG8gdHJhbnNmb3JtIHRoZSBkZXN0aW5hdGlvbiBjb250ZXh0
IHN1Y2ggdGhhdCBzcmNSZWN0IG9mIHRoZSBzb3VyY2UgY29udGV4dCB3aWxsIGJlIGRyYXduCisg
ICAgLy8gaW4gZGVzdFJlY3Qgb2YgZGVzdGluYXRpb24gY29udGV4dC4KKyAgICBjb250ZXh0LnRy
YW5zbGF0ZShkZXN0UmVjdC5sb2NhdGlvbigpIC0gc3JjUmVjdC5sb2NhdGlvbigpKTsKKyAgICBj
b250ZXh0LnNjYWxlKEZsb2F0U2l6ZShoU2NhbGUsIC12U2NhbGUpKTsKKyAgICBjb250ZXh0LnRy
YW5zbGF0ZSgwLCAtc3JjUmVjdC5oZWlnaHQoKSk7Cit9CisKK3ZvaWQgTmF0aXZlUERGRG9jdW1l
bnQ6OnVwZGF0ZVNuYXBzaG90SWZOZWVkZWQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0KQoreworICAgIC8vIENsaXBwZWQgb3B0aW9uIGlzIGZvciB0ZXN0
aW5nIG9ubHkgYW5kIGl0IHJlcXVpcmVzIHRoZSBQREYgdG8gYmUgcmUtY2FjaGVkIHdpdGggZWFj
aCBkcmF3LgorICAgIGJvb2wgZm9yY2VVcGRhdGVTbmFwc2hvdCA9IG1fcGRmSW1hZ2VDYWNoaW5n
UG9saWN5ID09IFBERkltYWdlQ2FjaGluZ1BvbGljeTo6Q2xpcEJvdW5kc09ubHk7CisgICAgaWYg
KCFmb3JjZVVwZGF0ZVNuYXBzaG90ICYmIG1fc25hcHNob3QpIHsKKyAgICAgICAgLy8gQWRqdXN0
IHRoZSB2aWV3LXBvcnQgcmVjdGFuZ2xlcyBpZiBubyByZS1jYWNoaW5nIHdpbGwgaGFwcGVuLgor
ICAgICAgICBpZiAobV9zbmFwc2hvdC0+dHJhbnNmZXJWaWV3cG9ydChjb250ZXh0LCBkZXN0UmVj
dCwgc3JjUmVjdCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9zbmFwc2hv
dCA9IG51bGxwdHI7CisgICAgCisgICAgRmxvYXRSZWN0IHNuYXBzaG90UmVjdDsKKyAgICBzd2l0
Y2ggKG1fcGRmSW1hZ2VDYWNoaW5nUG9saWN5KSB7CisgICAgY2FzZSBQREZJbWFnZUNhY2hpbmdQ
b2xpY3k6OkRpc2FibGVkOgorICAgICAgICByZXR1cm47CisgICAgY2FzZSBQREZJbWFnZUNhY2hp
bmdQb2xpY3k6OkJlbG93TWVtb3J5TGltaXQ6CisgICAgICAgIC8vIEtlZXAgdGhlIG1lbW9yeSB1
c2VkIGJ5IHRoZSBjYWNoZWQgaW1hZ2UgYmVsb3cgc29tZSB0aHJlc2hvbGQsIG90aGVyd2lzZSBX
ZWJLaXQgcHJvY2VzcworICAgICAgICAvLyB3aWxsIGpldHNhbSBpZiBpdCBleGNlZWRzIGl0cyBt
ZW1vcnkgbGltaXQuIE9ubHkgYSByZWN0YW5nbGUgZnJvbSB0aGUgUERGIG1heSBiZSBjYWNoZWQu
CisgICAgICAgIHNuYXBzaG90UmVjdCA9IFNuYXBzaG90OjpjYWxjdWxhdGVTbmFwc2hvdFJlY3Qo
Y29udGV4dCwgZGVzdFJlY3QpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBERkltYWdlQ2Fj
aGluZ1BvbGljeTo6Q2xpcEJvdW5kc09ubHk6CisgICAgICAgIHNuYXBzaG90UmVjdCA9IGludGVy
c2VjdGlvbihjb250ZXh0LmNsaXBCb3VuZHMoKSwgZGVzdFJlY3QpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIFBERkltYWdlQ2FjaGluZ1BvbGljeTo6RW5hYmxlZDoKKyAgICAgICAgc25hcHNo
b3RSZWN0ID0gZGVzdFJlY3Q7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIEZsb2F0U2l6
ZSBzbmFwc2hvdFNpemUgPSBGbG9hdFJlY3QoZW5jbG9zaW5nSW50UmVjdChzbmFwc2hvdFJlY3Qp
KS5zaXplKCk7CisgICAgCisgICAgLy8gQ2FjaGUgdGhlIFBERiBpbWFnZSBvbmx5IGlmIHRoZSBz
aXplIG9mIHRoZSBuZXcgaW1hZ2Ugd29uJ3QgZXhjZWVkIHRoZSBjYWNoZSB0aHJlc2hvbGQuCisg
ICAgaWYgKG1fcGRmSW1hZ2VDYWNoaW5nUG9saWN5ID09IFBERkltYWdlQ2FjaGluZ1BvbGljeTo6
QmVsb3dNZW1vcnlMaW1pdCkgeworICAgICAgICBpZiAoIVNuYXBzaG90OjpjYW5DcmVhdGVTbmFw
c2hvdChjb250ZXh0LCBzbmFwc2hvdFNpemUpKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICAKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGli
bGVCdWZmZXIoc25hcHNob3RTaXplLCBjb250ZXh0KTsKKyAgICBpZiAoIWltYWdlQnVmZmVyKQor
ICAgICAgICByZXR1cm47CisKKyAgICBhdXRvJiBidWZmZXJDb250ZXh0ID0gaW1hZ2VCdWZmZXIt
PmNvbnRleHQoKTsKKworICAgIC8vIFdlIG5lZWQgdG8gdHJhbnNmb3JtIHRoZSBjb29yZGluYXRl
IHN5c3RlbSBzdWNoIHRoYXQgdG9wLWxlZnQgb2YgYWRqdXN0ZWREZXN0UmVjdCB3aWxsIGJlIG1h
cHBlZCB0byB0aGUKKyAgICAvLyB0b3AtbGVmdCBvZiBkZXN0UmVjdC4gQWx0aG91Z2ggb25seSBp
bWFnZUJ1ZmZlclJlY3Quc2l6ZSgpIG9mIHRoZSBpbWFnZSBjb3BpZWQsIHRoZSBzaXplcyBvZiBz
cmNSZWN0CisgICAgLy8gYW5kIGRlc3RSZWN0IHNob3VsZCBiZSBwYXNzZWQgdG8gdGhpcyBmdW5j
dGlvbiBiZWNhdXNlIHRoZXkgYXJlIHVzZWQgdG8gY2FsY3VsYXRlIHRoZSBpbWFnZSBzY2FsaW5n
LgorICAgIHRyYW5zZm9ybUNvbnRleHRGb3JQYWludGluZyhidWZmZXJDb250ZXh0LCBkZXN0UmVj
dCwgRmxvYXRSZWN0KHNuYXBzaG90UmVjdC5sb2NhdGlvbigpLCBzcmNSZWN0LnNpemUoKSkpOwor
ICAgIGRyYXdQREZQYWdlKGJ1ZmZlckNvbnRleHQsIGltYWdlU2l6ZSk7CisKKyAgICBhdXRvIHRy
YW5zZm9ybSA9IGNvbnRleHQuZ2V0Q1RNKEdyYXBoaWNzQ29udGV4dDo6RGVmaW5pdGVseUluY2x1
ZGVEZXZpY2VTY2FsZSk7CisgICAgbV9zbmFwc2hvdCA9IFNuYXBzaG90OjpjcmVhdGUobWFrZVJl
ZigqaW1hZ2VCdWZmZXIpLCBzbmFwc2hvdFJlY3QsIGRlc3RSZWN0LCBzcmNSZWN0LCB0cmFuc2Zv
cm0pOworICAgIAorICAgIEFTU0VSVChtX3NuYXBzaG90KTsKKyAgICArK21fY2FjaGluZ0NvdW50
Rm9yVGVzdGluZzsKK30KKwordm9pZCBOYXRpdmVQREZEb2N1bWVudDo6ZHJhdyhHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiBvcHRpb25zKQoreworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3Rh
dGVTYXZlcihjb250ZXh0KTsKKyAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihvcHRp
b25zLmNvbXBvc2l0ZU9wZXJhdG9yKCkpOworCisgICAgdXBkYXRlU25hcHNob3RJZk5lZWRlZChj
b250ZXh0LCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0KTsKKworICAgIGlmIChtX3NuYXBz
aG90KQorICAgICAgICBtX3NuYXBzaG90LT5kcmF3KGNvbnRleHQpOworICAgIGVsc2UgeworICAg
ICAgICB0cmFuc2Zvcm1Db250ZXh0Rm9yUGFpbnRpbmcoY29udGV4dCwgZGVzdFJlY3QsIHNyY1Jl
Y3QpOworICAgICAgICBkcmF3UERGUGFnZShjb250ZXh0LCBpbWFnZVNpemUpOworICAgIH0KK30K
Kwordm9pZCBOYXRpdmVQREZEb2N1bWVudDo6ZHVtcChXVEY6OlRleHRTdHJlYW0mIHRzKSBjb25z
dAoreworICAgIHRzLmR1bXBQcm9wZXJ0eSgicGFnZS1jb3VudCIsIHBhZ2VDb3VudCgpKTsKKyAg
ICB0cy5kdW1wUHJvcGVydHkoImNyb3AtYm94IiwgbV9jcm9wQm94KTsKKyAgICBpZiAobV9yb3Rh
dGlvbkRlZ3JlZXMpCisgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgicm90YXRpb24iLCBtX3JvdGF0
aW9uRGVncmVlcyk7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxOYXRpdmVQREZEb2N1bWVudDo6U25h
cHNob3Q+IE5hdGl2ZVBERkRvY3VtZW50OjpTbmFwc2hvdDo6Y3JlYXRlKFJlZjxJbWFnZUJ1ZmZl
cj4mJiBpbWFnZUJ1ZmZlciwgY29uc3QgRmxvYXRSZWN0JiBpbWFnZUJ1ZmZlclJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0pCit7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxT
bmFwc2hvdD4obmV3IFNuYXBzaG90KFdURk1vdmUoaW1hZ2VCdWZmZXIpLCBpbWFnZUJ1ZmZlclJl
Y3QsIGRlc3RSZWN0LCBzcmNSZWN0LCB0cmFuc2Zvcm0pKTsKK30KKworTmF0aXZlUERGRG9jdW1l
bnQ6OlNuYXBzaG90OjpTbmFwc2hvdChSZWY8SW1hZ2VCdWZmZXI+JiYgaW1hZ2VCdWZmZXIsIGNv
bnN0IEZsb2F0UmVjdCYgc25hcHNob3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3Jt
KQorICAgIDogbV9pbWFnZUJ1ZmZlcihXVEZNb3ZlKGltYWdlQnVmZmVyKSkKKyAgICAsIG1fc25h
cHNob3RSZWN0KHNuYXBzaG90UmVjdCkKKyAgICAsIG1fZGVzdFJlY3QoZGVzdFJlY3QpCisgICAg
LCBtX3NyY1JlY3Qoc3JjUmVjdCkKKyAgICAsIG1fdHJhbnNmb3JtKHRyYW5zZm9ybSkKK3sKKyAg
ICBBU1NFUlQobWF4U25hcHNob3RzTWVtb3J5Q29zdCAtIG1fYWxsU25hcHNob3RzTWVtb3J5Q29z
dCA+PSBtZW1vcnlDb3N0KCkpOworICAgIG1fYWxsU25hcHNob3RzTWVtb3J5Q29zdCArPSBtZW1v
cnlDb3N0KCk7Cit9CisKK05hdGl2ZVBERkRvY3VtZW50OjpTbmFwc2hvdDo6flNuYXBzaG90KCkK
K3sKKyAgICBBU1NFUlQobV9hbGxTbmFwc2hvdHNNZW1vcnlDb3N0ID49IG1lbW9yeUNvc3QoKSk7
CisgICAgbV9hbGxTbmFwc2hvdHNNZW1vcnlDb3N0IC09IG1lbW9yeUNvc3QoKTsKK30KKworRmxv
YXRSZWN0IE5hdGl2ZVBERkRvY3VtZW50OjpTbmFwc2hvdDo6Y2FsY3VsYXRlU25hcHNob3RSZWN0
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkKK3sK
KyAgICBGbG9hdFJlY3QgZGlydHlSZWN0ID0gY29udGV4dC5jbGlwQm91bmRzKCk7CisKKyAgICAv
LyBDYWxjdWxhdGUgdGhlIG1heGltdW0gcmVjdGFuZ2xlIHdlIGNhbiBjYWNoZSBhcm91bmQgdGhl
IGNlbnRlciBvZiB0aGUgY2xpcHBpbmcgYm91bmRzLgorICAgIEZsb2F0U2l6ZSBtYXhTaXplID0g
bWF4U25hcHNob3RTaWRlIC8gY29udGV4dC5zY2FsZUZhY3RvcigpOworICAgIEZsb2F0UG9pbnQg
bWluTG9jYXRpb24gPSBGbG9hdFBvaW50KGRpcnR5UmVjdC5jZW50ZXIoKSAtIG1heFNpemUgLyAy
KTsKKworICAgIC8vIEVuc3VyZSB0aGUgY2xpcHBpbmcgYm91bmRzIGFyZSBhbGwgaW5jbHVkZWQg
YnV0IHdpdGhpbiB0aGUgYm91bmRzIG9mIHRoZSBkc3RSZWN0CisgICAgcmV0dXJuIGludGVyc2Vj
dGlvbih1bmlvblJlY3QoZGlydHlSZWN0LCBGbG9hdFJlY3QobWluTG9jYXRpb24sIG1heFNpemUp
KSwgZGVzdFJlY3QpOworfQorCitib29sIE5hdGl2ZVBERkRvY3VtZW50OjpTbmFwc2hvdDo6Y2Fu
Q3JlYXRlU25hcHNob3QoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFNpemUm
IGltYWdlQnVmZmVyU2l6ZSkKK3sKKyAgICBhdXRvIG1lbW9yeUNvc3QgPSBJbWFnZUJ1ZmZlcjo6
Y29tcGF0aWJsZUJ1ZmZlclNpemUoaW1hZ2VCdWZmZXJTaXplLCBjb250ZXh0KS51bmNsYW1wZWRB
cmVhKCkgKiA0OworICAgIHJldHVybiBtYXhTbmFwc2hvdHNNZW1vcnlDb3N0IC0gbV9hbGxTbmFw
c2hvdHNNZW1vcnlDb3N0ID49IG1lbW9yeUNvc3Q7Cit9CisKK2Jvb2wgTmF0aXZlUERGRG9jdW1l
bnQ6OlNuYXBzaG90OjpjYW5CZVJldXNlZChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCkgY29uc3QKK3sK
KyAgICAvLyBPbGQgYW5kIG5ldyBzb3VyY2UgcmVjdGFuZ2xlcyBoYXZlIHRvIG1hdGNoLgorICAg
IGlmIChzcmNSZWN0ICE9IG1fc3JjUmVjdCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
Ly8gT2xkIGFuZCBuZXcgc2NhbGluZyBmYWN0b3JzICJkZXN0IC8gc3JjIiBoYXZlIHRvIG1hdGNo
LgorICAgIGlmIChkZXN0UmVjdC5zaXplKCkgIT0gbV9kZXN0UmVjdC5zaXplKCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIC8vIG1fc25hcHNob3RSZWN0dCBjYW4gYmUgbW92ZWQgaWYg
c3JjUmVjdCBhbmQgZGVzdFJlY3Quc2l6ZSgpIGRpZCBub3QgY2hhbmdlLgorICAgIEZsb2F0UmVj
dCBtb3ZlZFNuYXBzaG90UmVjdCA9IG1fc25hcHNob3RSZWN0OworICAgIG1vdmVkU25hcHNob3RS
ZWN0Lm1vdmUoRmxvYXRTaXplKGRlc3RSZWN0LmxvY2F0aW9uKCkgLSBtX2Rlc3RSZWN0LmxvY2F0
aW9uKCkpKTsKKworICAgIC8vIG1vdmVkQ2FjaGVkSW1hZ2VSZWN0IGhhcyB0byBjb250YWluIHRo
ZSB3aG9sZSBkaXJ0eSByZWN0YW5nbGUuCisgICAgRmxvYXRSZWN0IGRpcnR5UmVjdCA9IGludGVy
c2VjdGlvbihjb250ZXh0LmNsaXBCb3VuZHMoKSwgZGVzdFJlY3QpOworICAgIGlmICghbW92ZWRT
bmFwc2hvdFJlY3QuY29udGFpbnMoZGlydHlSZWN0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgLy8gT2xkIGFuZCBuZXcgY29udGV4dCBzY2FsaW5nIGZhY3RvcnMgaGF2ZSB0byBtYXRj
aCBhcyB3ZWxsLgorICAgIEFmZmluZVRyYW5zZm9ybTo6RGVjb21wb3NlZFR5cGUgZGVjb21wb3Nl
ZFRyYW5zZm9ybTsKKyAgICBjb250ZXh0LmdldENUTShHcmFwaGljc0NvbnRleHQ6OkRlZmluaXRl
bHlJbmNsdWRlRGV2aWNlU2NhbGUpLmRlY29tcG9zZShkZWNvbXBvc2VkVHJhbnNmb3JtKTsKKwor
ICAgIEFmZmluZVRyYW5zZm9ybTo6RGVjb21wb3NlZFR5cGUgY2FjaGVkRGVjb21wb3NlZFRyYW5z
Zm9ybTsKKyAgICBtX3RyYW5zZm9ybS5kZWNvbXBvc2UoY2FjaGVkRGVjb21wb3NlZFRyYW5zZm9y
bSk7CisgICAgCisgICAgcmV0dXJuIGRlY29tcG9zZWRUcmFuc2Zvcm0uc2NhbGVYID09IGNhY2hl
ZERlY29tcG9zZWRUcmFuc2Zvcm0uc2NhbGVYICYmIGRlY29tcG9zZWRUcmFuc2Zvcm0uc2NhbGVZ
ID09IGNhY2hlZERlY29tcG9zZWRUcmFuc2Zvcm0uc2NhbGVZOworfQorCitzaXplX3QgTmF0aXZl
UERGRG9jdW1lbnQ6OlNuYXBzaG90OjptZW1vcnlDb3N0KCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9pbWFnZUJ1ZmZlci0+YmFja2VuZFNpemUoKS51bmNsYW1wZWRBcmVhKCkgKiA0OworfQorCiti
b29sIE5hdGl2ZVBERkRvY3VtZW50OjpTbmFwc2hvdDo6dHJhbnNmZXJWaWV3cG9ydChHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCkKK3sKKyAgICBpZiAoIWNhbkJlUmV1c2VkKGNvbnRleHQsIGRlc3RSZWN0
LCBzcmNSZWN0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbV9zbmFwc2hvdFJlY3Qu
bW92ZShGbG9hdFNpemUoZGVzdFJlY3QubG9jYXRpb24oKSAtIG1fZGVzdFJlY3QubG9jYXRpb24o
KSkpOworICAgIG1fZGVzdFJlY3QgPSBkZXN0UmVjdDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
dm9pZCBOYXRpdmVQREZEb2N1bWVudDo6U25hcHNob3Q6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0KQoreworICAgIGNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKG1faW1hZ2VCdWZmZXIsIG1f
ZGVzdFJlY3QpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVQREZEb2N1bWVudC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlUERGRG9jdW1lbnQuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5hZjBmNDY3ZjM4MjFlNDYxODMxNjNlY2I4YmEwMTFmZWFiOWM1NzBjCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlUERGRG9jdW1lbnQu
aApAQCAtMCwwICsxLDEyOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgor
I2luY2x1ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1ZGUgIlBERkltYWdlQ2FjaGluZ1BvbGljeS5o
IgorI2luY2x1ZGUgIlBsYXRmb3JtUERGRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBJbWFn
ZUJ1ZmZlcjsKK3N0cnVjdCBJbWFnZVBhaW50aW5nT3B0aW9uczsKKworY2xhc3MgTmF0aXZlUERG
RG9jdW1lbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxOYXRpdmVQREZEb2N1bWVudD4geworcHVibGlj
OgorICAgIGNsYXNzIE9ic2VydmVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgfk9i
c2VydmVyKCkgPSBkZWZhdWx0OworICAgICAgICB2aXJ0dWFsIHZvaWQgcmVsZWFzZU5hdGl2ZVBE
RkRvY3VtZW50KFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgPSAwOworICAgIHByb3RlY3Rl
ZDoKKyAgICAgICAgT2JzZXJ2ZXIoKSA9IGRlZmF1bHQ7CisgICAgfTsKKworICAgIHN0YXRpYyBX
RUJDT1JFX0VYUE9SVCBSZWZQdHI8TmF0aXZlUERGRG9jdW1lbnQ+IGNyZWF0ZShTaGFyZWRCdWZm
ZXImLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgPSBSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXI6OmdlbmVyYXRlKCkpOworCisgICAgV0VCQ09SRV9FWFBPUlQgfk5hdGl2ZVBERkRvY3Vt
ZW50KCk7CisKKyAgICBjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEoKSBjb25zdCB7IHJldHVybiBt
X2RhdGEuZ2V0KCk7IH0KKyAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXI7IH0KKyAgICB2b2lkIHNldE9ic2VydmVyKE9ic2VydmVyKiBvYnNlcnZlcikgeyBt
X29ic2VydmVyID0gb2JzZXJ2ZXI7IH0KKworICAgIEZsb2F0U2l6ZSBzaXplKCkgY29uc3Q7Cisg
ICAgdW5zaWduZWQgcGFnZUNvdW50KCkgY29uc3Q7CisKKyAgICBQREZJbWFnZUNhY2hpbmdQb2xp
Y3kgcGRmSW1hZ2VDYWNoaW5nUG9saWN5KCkgY29uc3QgeyByZXR1cm4gbV9wZGZJbWFnZUNhY2hp
bmdQb2xpY3k7IH0KKyAgICB2b2lkIHNldFBERkltYWdlQ2FjaGluZ1BvbGljeShQREZJbWFnZUNh
Y2hpbmdQb2xpY3kgcGRmSW1hZ2VDYWNoaW5nUG9saWN5KSB7IG1fcGRmSW1hZ2VDYWNoaW5nUG9s
aWN5ID0gcGRmSW1hZ2VDYWNoaW5nUG9saWN5OyB9CisKKyAgICB2b2lkIGNvbXB1dGVCb3VuZHNG
b3JDdXJyZW50UGFnZSgpOworICAgIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBG
bG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOworCisgICAgdW5z
aWduZWQgY2FjaGluZ0NvdW50Rm9yVGVzdGluZygpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGluZ0Nv
dW50Rm9yVGVzdGluZzsgfQorICAgIHNpemVfdCBzbmFwc2hvdE1lbW9yeUNvc3QoKSBjb25zdCB7
IHJldHVybiBtX3NuYXBzaG90ID8gbV9zbmFwc2hvdC0+bWVtb3J5Q29zdCgpIDogMDsgfQorICAg
IHZvaWQgY2xlYXJTbmFwc2hvdCgpIHsgbV9zbmFwc2hvdCA9IG51bGxwdHI7IH0KKyAgICAKKyAg
ICB2b2lkIGR1bXAoV1RGOjpUZXh0U3RyZWFtJikgY29uc3Q7CisKKyNpZiBFTkFCTEUoUERGS0lU
X0ZPUl9QREZET0NVTUVOVElNQUdFKQorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZXRhaW5Q
dHI8Q0ZNdXRhYmxlRGF0YVJlZj4gY29udmVydFBvc3RTY3JpcHREYXRhVG9QREYoUmV0YWluUHRy
PENGRGF0YVJlZj4mJiBwb3N0U2NyaXB0RGF0YSk7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBj
bGFzcyBTbmFwc2hvdCB7CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPFNuYXBzaG90PiBjcmVhdGUoUmVmPEltYWdlQnVmZmVyPiYmLCBjb25zdCBGbG9hdFJlY3Qm
IGltYWdlQnVmZmVyUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKKworICAgICAgICB+U25hcHNo
b3QoKTsKKyAgICAgICAgCisgICAgICAgIC8vIFRvIGF2b2lkIHRoZSBqZXRzYW0gb24gaU9TLCB3
ZSBhcmUgZ29pbmcgdG8gbGltaXQgdGhlIHNpemUgb2YgYWxsIHRoZSBQREYgc25hcHNob3RzIHRv
IGJlIDY0TUIuCisgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1heFNuYXBzaG90U2lk
ZSA9IDQgKiAxMDI0OworICAgICAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBtYXhTbmFwc2hv
dEFyZWEgPSBtYXhTbmFwc2hvdFNpZGUgKiBtYXhTbmFwc2hvdFNpZGU7CisgICAgICAgIHN0YXRp
YyBjb25zdGV4cHIgc2l6ZV90IG1heFNuYXBzaG90c01lbW9yeUNvc3QgPSBtYXhTbmFwc2hvdEFy
ZWEgKiA0OworCisgICAgICAgIHN0YXRpYyBGbG9hdFJlY3QgY2FsY3VsYXRlU25hcHNob3RSZWN0
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpOworICAgICAgICBz
dGF0aWMgYm9vbCBjYW5DcmVhdGVTbmFwc2hvdChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9h
dFNpemUmIGltYWdlQnVmZmVyU2l6ZSk7CisKKyAgICAgICAgc2l6ZV90IG1lbW9yeUNvc3QoKSBj
b25zdDsKKyAgICAgICAgYm9vbCB0cmFuc2ZlclZpZXdwb3J0KEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCk7CisgICAg
ICAgIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQmKTsKKworICAgIHByaXZhdGU6CisgICAgICAg
IFNuYXBzaG90KFJlZjxJbWFnZUJ1ZmZlcj4mJiwgY29uc3QgRmxvYXRSZWN0JiBpbWFnZUJ1ZmZl
clJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJik7CisgICAgICAgIGJvb2wgY2FuQmVSZXVzZWQoR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0KSBjb25zdDsKKworICAgICAgICBSZWY8SW1hZ2VCdWZmZXI+IG1faW1hZ2VCdWZm
ZXI7CisgICAgICAgIEZsb2F0UmVjdCBtX3NuYXBzaG90UmVjdDsKKyAgICAgICAgRmxvYXRSZWN0
IG1fZGVzdFJlY3Q7CisgICAgICAgIEZsb2F0UmVjdCBtX3NyY1JlY3Q7CisgICAgICAgIEFmZmlu
ZVRyYW5zZm9ybSBtX3RyYW5zZm9ybTsKKyAgICAgICAgaW5saW5lIHN0YXRpYyBzaXplX3QgbV9h
bGxTbmFwc2hvdHNNZW1vcnlDb3N0IHsgMCB9OworICAgIH07CisKKyAgICBOYXRpdmVQREZEb2N1
bWVudChTaGFyZWRCdWZmZXImLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFBsYXRmb3Jt
UERGRG9jdW1lbnRQdHImJik7CisKKyAgICB2b2lkIHVwZGF0ZVNuYXBzaG90SWZOZWVkZWQoR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCk7CisgICAgdm9pZCBkcmF3UERG
UGFnZShHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSk7CisKKyAg
ICBSZWY8U2hhcmVkQnVmZmVyPiBtX2RhdGE7CisgICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOworCisgICAgT2JzZXJ2ZXIqIG1fb2Jz
ZXJ2ZXIgeyBudWxscHRyIH07CisgICAgUGxhdGZvcm1QREZEb2N1bWVudFB0ciBtX3BsYXRmb3Jt
UERGRG9jdW1lbnQ7CisKKyAgICBGbG9hdFJlY3QgbV9jcm9wQm94OworICAgIGludCBtX3JvdGF0
aW9uRGVncmVlcyB7IDAgfTsgLy8gQ2FuIG9ubHkgYmUgMCwgOTAsIDE4MCwgb3IgMjcwIGRlZ3Jl
ZXMuCisKKyAgICBQREZJbWFnZUNhY2hpbmdQb2xpY3kgbV9wZGZJbWFnZUNhY2hpbmdQb2xpY3kg
eyBQREZJbWFnZUNhY2hpbmdQb2xpY3k6OkRlZmF1bHQgfTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
U25hcHNob3Q+IG1fc25hcHNob3Q7CisgICAgdW5zaWduZWQgbV9jYWNoaW5nQ291bnRGb3JUZXN0
aW5nIHsgMCB9OworfTsKKwordXNpbmcgTmF0aXZlUERGRG9jdW1lbnRIYXNoTWFwID0gSGFzaE1h
cDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFJlZjxOYXRpdmVQREZEb2N1bWVudD4+Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9QREZEb2N1bWVudEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BERkRvY3VtZW50SW1hZ2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc3ODVmNjQwNTIx
Zjg0ZThlZWRkYjgxYWI2NjZmZTIwOTJkNDFlZjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QREZEb2N1bWVudEltYWdlLmNwcApAQCAtMCwwICsx
LDEzMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIwIEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUERGRG9jdW1lbnRJbWFnZS5oIgor
CisjaWYgRU5BQkxFKFBERkRPQ1VNRU5USU1BR0UpCisKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHQuaCIKKyNpbmNsdWRlICJJbWFnZU9ic2VydmVyLmgiCisjaW5jbHVkZSAiTmF0aXZlUERGRG9j
dW1lbnQuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworUERGRG9jdW1lbnRJbWFnZTo6UERGRG9jdW1lbnRJbWFnZShJbWFnZU9ic2Vy
dmVyKiBvYnNlcnZlcikKKyAgICA6IEltYWdlKG9ic2VydmVyKQoreworfQorCitQREZEb2N1bWVu
dEltYWdlOjp+UERGRG9jdW1lbnRJbWFnZSgpCit7CisgICAgZGVzdHJveURlY29kZWREYXRhKHRy
dWUpOworfQorCitTdHJpbmcgUERGRG9jdW1lbnRJbWFnZTo6ZmlsZW5hbWVFeHRlbnNpb24oKSBj
b25zdAoreworICAgIHJldHVybiAicGRmIjsKK30KKworRmxvYXRTaXplIFBERkRvY3VtZW50SW1h
Z2U6OnNpemUoSW1hZ2VPcmllbnRhdGlvbikgY29uc3QKK3sKKyAgICByZXR1cm4gbV9uYXRpdmVQ
REZEb2N1bWVudCA/IG1fbmF0aXZlUERGRG9jdW1lbnQtPnNpemUoKSA6IEZsb2F0U2l6ZSgpOwor
fQorCit1bnNpZ25lZCBQREZEb2N1bWVudEltYWdlOjpjYWNoaW5nQ291bnRGb3JUZXN0aW5nKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9uYXRpdmVQREZEb2N1bWVudCA/IG1fbmF0aXZlUERGRG9j
dW1lbnQtPmNhY2hpbmdDb3VudEZvclRlc3RpbmcoKSA6IDA7Cit9CisKK3ZvaWQgUERGRG9jdW1l
bnRJbWFnZTo6c2V0UGRmSW1hZ2VDYWNoaW5nUG9saWN5KFBERkltYWdlQ2FjaGluZ1BvbGljeSBw
ZGZJbWFnZUNhY2hpbmdQb2xpY3kpCit7CisgICAgaWYgKCFtX25hdGl2ZVBERkRvY3VtZW50IHx8
IG1fbmF0aXZlUERGRG9jdW1lbnQtPnBkZkltYWdlQ2FjaGluZ1BvbGljeSgpID09IHBkZkltYWdl
Q2FjaGluZ1BvbGljeSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9uYXRpdmVQREZEb2N1bWVu
dC0+c2V0UERGSW1hZ2VDYWNoaW5nUG9saWN5KHBkZkltYWdlQ2FjaGluZ1BvbGljeSk7CisgICAg
ZGVzdHJveURlY29kZWREYXRhKCk7Cit9CisKK0VuY29kZWREYXRhU3RhdHVzIFBERkRvY3VtZW50
SW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxsRGF0YVJlY2VpdmVkKQoreworICAgIEFTU0VSVCgh
bV9uYXRpdmVQREZEb2N1bWVudCk7CisKKyAgICBpZiAoYWxsRGF0YVJlY2VpdmVkICYmICFtX25h
dGl2ZVBERkRvY3VtZW50KQorICAgICAgICBtX25hdGl2ZVBERkRvY3VtZW50ID0gTmF0aXZlUERG
RG9jdW1lbnQ6OmNyZWF0ZSgqZGF0YSgpKTsKKworICAgIHJldHVybiBtX25hdGl2ZVBERkRvY3Vt
ZW50ID8gRW5jb2RlZERhdGFTdGF0dXM6OkNvbXBsZXRlIDogRW5jb2RlZERhdGFTdGF0dXM6OlVu
a25vd247Cit9CisKK3ZvaWQgUERGRG9jdW1lbnRJbWFnZTo6ZGVzdHJveURlY29kZWREYXRhKGJv
b2wpCit7CisgICAgaWYgKG1fbmF0aXZlUERGRG9jdW1lbnQpCisgICAgICAgIG1fbmF0aXZlUERG
RG9jdW1lbnQtPmNsZWFyU25hcHNob3QoKTsKKyAgICBkZWNvZGVkU2l6ZUNoYW5nZWQoKTsKK30K
Kwordm9pZCBQREZEb2N1bWVudEltYWdlOjpkZWNvZGVkU2l6ZUNoYW5nZWQoKQoreworICAgIHNp
emVfdCBuZXdNZW1vcnlDb3N0ID0gbV9uYXRpdmVQREZEb2N1bWVudCA/IG1fbmF0aXZlUERGRG9j
dW1lbnQtPnNuYXBzaG90TWVtb3J5Q29zdCgpIDogMDsKKyAgICBpZiAobV9tZW1vcnlDb3N0ID09
IG5ld01lbW9yeUNvc3QpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChpbWFnZU9ic2VydmVy
KCkpCisgICAgICAgIGltYWdlT2JzZXJ2ZXIoKS0+ZGVjb2RlZFNpemVDaGFuZ2VkKCp0aGlzLCAt
c3RhdGljX2Nhc3Q8bG9uZyBsb25nPihtX21lbW9yeUNvc3QpICsgbmV3TWVtb3J5Q29zdCk7CisK
KyAgICBtX21lbW9yeUNvc3QgPSBuZXdNZW1vcnlDb3N0OworfQorCit2b2lkIFBERkRvY3VtZW50
SW1hZ2U6OmNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKExlbmd0aCYgaW50cmluc2ljV2lkdGgs
IExlbmd0aCYgaW50cmluc2ljSGVpZ2h0LCBGbG9hdFNpemUmIGludHJpbnNpY1JhdGlvKQorewor
ICAgIC8vIEZJWE1FOiBJZiB3ZSB3YW50IHNpemUgbmVnb3RpYXRpb24gd2l0aCBQREYgZG9jdW1l
bnRzIGFzLWltYWdlLCB0aGlzIGlzIHRoZSBwbGFjZSB0byBpbXBsZW1lbnQgaXQgKGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjA5NSkuCisgICAgSW1hZ2U6OmNvbXB1
dGVJbnRyaW5zaWNEaW1lbnNpb25zKGludHJpbnNpY1dpZHRoLCBpbnRyaW5zaWNIZWlnaHQsIGlu
dHJpbnNpY1JhdGlvKTsKKyAgICBpbnRyaW5zaWNSYXRpbyA9IEZsb2F0U2l6ZSgpOworfQorCitJ
bWFnZURyYXdSZXN1bHQgUERGRG9jdW1lbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3sKKyAgICBpZiAoIW1fbmF0
aXZlUERGRG9jdW1lbnQgfHwgIW1fbmF0aXZlUERGRG9jdW1lbnQtPnBhZ2VDb3VudCgpKQorICAg
ICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOworCisgICAgY29udGV4dC5k
cmF3TmF0aXZlUERGRG9jdW1lbnQoKm1fbmF0aXZlUERGRG9jdW1lbnQsIHNpemUoKSwgZHN0UmVj
dCwgc3JjUmVjdCwgb3B0aW9ucyk7CisgICAgZGVjb2RlZFNpemVDaGFuZ2VkKCk7CisKKyAgICBp
ZiAoaW1hZ2VPYnNlcnZlcigpKQorICAgICAgICBpbWFnZU9ic2VydmVyKCktPmRpZERyYXcoKnRo
aXMpOworCisgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkRHJhdzsKK30KKwordm9pZCBQ
REZEb2N1bWVudEltYWdlOjpkdW1wKFRleHRTdHJlYW0mIHRzKSBjb25zdAoreworICAgIEltYWdl
OjpkdW1wKHRzKTsKKyAgICBpZiAobV9uYXRpdmVQREZEb2N1bWVudCkKKyAgICAgICAgbV9uYXRp
dmVQREZEb2N1bWVudC0+ZHVtcCh0cyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEVOQUJMRShQREZET0NVTUVOVElNQUdFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUERGRG9jdW1lbnRJbWFnZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUERGRG9jdW1lbnRJbWFnZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyYzZj
YzAxZjk3OTAxN2QxYWIyYzE0NWFkZmJhODA2MDVkYzBiMmMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QREZEb2N1bWVudEltYWdlLmgKQEAgLTAs
MCArMSw4MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIwIEFwcGxlIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShQREZET0NVTUVOVElNQUdFKQorCisj
aW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NUeXBlcy5oIgorI2luY2x1
ZGUgIkltYWdlLmgiCisjaW5jbHVkZSAiUERGSW1hZ2VDYWNoaW5nUG9saWN5LmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR3JhcGhpY3NDb250ZXh0OworY2xhc3MgTmF0aXZlUERG
RG9jdW1lbnQ7CisKK2NsYXNzIFBERkRvY3VtZW50SW1hZ2UgZmluYWwgOiBwdWJsaWMgSW1hZ2Ug
eworcHVibGljOgorICAgIHN0YXRpYyBSZWY8UERGRG9jdW1lbnRJbWFnZT4gY3JlYXRlKEltYWdl
T2JzZXJ2ZXIqIG9ic2VydmVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
UERGRG9jdW1lbnRJbWFnZShvYnNlcnZlcikpOworICAgIH0KKworICAgIFdFQkNPUkVfRVhQT1JU
IHVuc2lnbmVkIGNhY2hpbmdDb3VudEZvclRlc3RpbmcoKSBjb25zdDsKKyAgICB2b2lkIHNldFBk
ZkltYWdlQ2FjaGluZ1BvbGljeShQREZJbWFnZUNhY2hpbmdQb2xpY3kpOworCitwcml2YXRlOgor
ICAgIFBERkRvY3VtZW50SW1hZ2UoSW1hZ2VPYnNlcnZlciopOworICAgIHZpcnR1YWwgflBERkRv
Y3VtZW50SW1hZ2UoKTsKKworICAgIGJvb2wgaXNQREZEb2N1bWVudEltYWdlKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgaGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4o
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisKKyAgICAvLyBGSVhNRTogSW1wbGVt
ZW50IHRoaXMgdG8gYmUgbGVzcyBjb25zZXJ2YXRpdmUuCisgICAgYm9vbCBjdXJyZW50RnJhbWVL
bm93blRvQmVPcGFxdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorCisgICAg
U3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgRmxvYXRTaXpl
IHNpemUoSW1hZ2VPcmllbnRhdGlvbiA9IEltYWdlT3JpZW50YXRpb246OkZyb21JbWFnZSkgY29u
c3Qgb3ZlcnJpZGU7CisKKyAgICBFbmNvZGVkRGF0YVN0YXR1cyBkYXRhQ2hhbmdlZChib29sIGFs
bERhdGFSZWNlaXZlZCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoYm9v
bCAvKmRlc3Ryb3lBbGwqLyA9IHRydWUpIG92ZXJyaWRlOworICAgIHZvaWQgZGVjb2RlZFNpemVD
aGFuZ2VkKCk7CisKKyAgICB2b2lkIGNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKExlbmd0aCYg
aW50cmluc2ljV2lkdGgsIExlbmd0aCYgaW50cmluc2ljSGVpZ2h0LCBGbG9hdFNpemUmIGludHJp
bnNpY1JhdGlvKSBvdmVycmlkZTsKKyAgICBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSBvdmVycmlkZTsKKworICAgIHZv
aWQgZHVtcChXVEY6OlRleHRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKKworICAgIFJlZlB0cjxO
YXRpdmVQREZEb2N1bWVudD4gbV9uYXRpdmVQREZEb2N1bWVudDsKKyAgICBzaXplX3QgbV9tZW1v
cnlDb3N0IHsgMCB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCitTUEVDSUFMSVpF
X1RZUEVfVFJBSVRTX0lNQUdFKFBERkRvY3VtZW50SW1hZ2UpCisKKyNlbmRpZiAvLyBFTkFCTEUo
UERGRE9DVU1FTlRJTUFHRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1BsYXRmb3JtUERGRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1BsYXRmb3JtUERGRG9jdW1lbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYTg3YTE3NmU3ZjkxM2Uw
MzBkNGI4MjBjYjgyMzEzOTg2MDY0MjQxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1QREZEb2N1bWVudC5oCkBAIC0wLDAgKzEsNTMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBVU0UoQ0cpCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2lmIEVO
QUJMRShQREZLSVRfRk9SX1BERkRPQ1VNRU5USU1BR0UpCitPQkpDX0NMQVNTIFBERkRvY3VtZW50
OworI2Vsc2UKK3VzaW5nIENHUERGRG9jdW1lbnRSZWYgPSBzdHJ1Y3QgQ0dQREZEb2N1bWVudCAq
OworI2VuZGlmCisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisjaWYgVVNFKENHKQor
I2lmIEVOQUJMRShQREZLSVRfRk9SX1BERkRPQ1VNRU5USU1BR0UpCit1c2luZyBQbGF0Zm9ybVBE
RkRvY3VtZW50UHRyID0gUmV0YWluUHRyPFBERkRvY3VtZW50PjsKKyNlbHNlCit1c2luZyBQbGF0
Zm9ybVBERkRvY3VtZW50UHRyID0gUmV0YWluUHRyPENHUERGRG9jdW1lbnRSZWY+OworI2VuZGlm
CisjZWxzZQordXNpbmcgUGxhdGZvcm1QREZEb2N1bWVudFB0ciA9IHZvaWQqOworI2VuZGlmCisK
KyNpZiBFTkFCTEUoUERGS0lUX0ZPUl9QREZET0NVTUVOVElNQUdFKQorV0VCQ09SRV9FWFBPUlQg
UmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+IGNvbnZlcnRQb3N0U2NyaXB0RGF0YVRvUERGKFJl
dGFpblB0cjxDRkRhdGFSZWY+JiYgcG9zdFNjcmlwdERhdGEpOworI2VuZGlmCisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL05hdGl2ZVBERkRvY3VtZW50Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvTmF0aXZlUERGRG9jdW1lbnRDRy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTk0NWVhNTk1
NzBjMGU4ZTU4NGRjN2E5YjlhZDk5NjFjZDk3N2NkNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZVBERkRvY3VtZW50Q0cuY3BwCkBA
IC0wLDAgKzEsMTAxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOYXRpdmVQREZEb2N1bWVudC5o
IgorCisjaWYgIUVOQUJMRShQREZLSVRfRk9SX1BERkRPQ1VNRU5USU1BR0UpCisKKyNpbmNsdWRl
IDxDb3JlR3JhcGhpY3MvQ0dQREZEb2N1bWVudC5oPgorI2lmIFBMQVRGT1JNKENPQ09BKQorI2lu
Y2x1ZGUgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CisjZWxzZQorI2luY2x1ZGUgPENv
cmVHcmFwaGljcy9DR0NvbnRleHQuaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K1JlZlB0cjxOYXRpdmVQREZEb2N1bWVudD4gTmF0aXZlUERGRG9jdW1lbnQ6OmNyZWF0ZShTaGFy
ZWRCdWZmZXImIGRhdGEsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIpCit7CisgICAgYXV0byBkYXRhUHJvdmlkZXIgPSBhZG9wdENGKENHRGF0
YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YShkYXRhLmNyZWF0ZUNGRGF0YSgpLmdldCgpKSk7Cisg
ICAgaWYgKCFkYXRhUHJvdmlkZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIAorICAg
IGF1dG8gZG9jdW1lbnQgPSBhZG9wdENGKENHUERGRG9jdW1lbnRDcmVhdGVXaXRoUHJvdmlkZXIo
ZGF0YVByb3ZpZGVyLmdldCgpKSk7CisgICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE5hdGl2ZVBERkRvY3VtZW50KGRh
dGEsIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgV1RGTW92ZShkb2N1bWVudCkpKTsKK30K
Kwordm9pZCBOYXRpdmVQREZEb2N1bWVudDo6Y29tcHV0ZUJvdW5kc0ZvckN1cnJlbnRQYWdlKCkK
K3sKKyAgICBBU1NFUlQocGFnZUNvdW50KCkgPiAwKTsKKyAgICBDR1BERlBhZ2VSZWYgY2dQYWdl
ID0gQ0dQREZEb2N1bWVudEdldFBhZ2UobV9wbGF0Zm9ybVBERkRvY3VtZW50LmdldCgpLCAxKTsK
KyAgICBDR1JlY3QgbWVkaWFCb3ggPSBDR1BERlBhZ2VHZXRCb3hSZWN0KGNnUGFnZSwga0NHUERG
TWVkaWFCb3gpOworCisgICAgLy8gR2V0IGNyb3AgYm94IChub3QgYWx3YXlzIHRoZXJlKS4gSWYg
bm90LCB1c2UgbWVkaWEgYm94LgorICAgIENHUmVjdCByID0gQ0dQREZQYWdlR2V0Qm94UmVjdChj
Z1BhZ2UsIGtDR1BERkNyb3BCb3gpOworICAgIGlmICghQ0dSZWN0SXNFbXB0eShyKSkKKyAgICAg
ICAgbV9jcm9wQm94ID0gcjsKKyAgICBlbHNlCisgICAgICAgIG1fY3JvcEJveCA9IG1lZGlhQm94
OworCisgICAgbV9yb3RhdGlvbkRlZ3JlZXMgPSBDR1BERlBhZ2VHZXRSb3RhdGlvbkFuZ2xlKGNn
UGFnZSk7Cit9CisKK3Vuc2lnbmVkIE5hdGl2ZVBERkRvY3VtZW50OjpwYWdlQ291bnQoKSBjb25z
dAoreworICAgIHJldHVybiBDR1BERkRvY3VtZW50R2V0TnVtYmVyT2ZQYWdlcyhtX3BsYXRmb3Jt
UERGRG9jdW1lbnQuZ2V0KCkpOworfQorCitzdGF0aWMgdm9pZCBhcHBseVJvdGF0aW9uRm9yUGFp
bnRpbmcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBGbG9hdFNpemUgc2l6ZSwgaW50IHJvdGF0
aW9uRGVncmVlcykKK3sKKyAgICBpZiAocm90YXRpb25EZWdyZWVzID09IDkwKQorICAgICAgICBj
b250ZXh0LnRyYW5zbGF0ZSgwLCBzaXplLmhlaWdodCgpKTsKKyAgICBlbHNlIGlmIChyb3RhdGlv
bkRlZ3JlZXMgPT0gMTgwKQorICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZShzaXplKTsKKyAgICBl
bHNlIGlmIChyb3RhdGlvbkRlZ3JlZXMgPT0gMjcwKQorICAgICAgICBjb250ZXh0LnRyYW5zbGF0
ZShzaXplLndpZHRoKCksIDApOworCisgICAgY29udGV4dC5yb3RhdGUoLWRlZzJyYWQoc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KHJvdGF0aW9uRGVncmVlcykpKTsKK30KKwordm9pZCBOYXRpdmVQREZEb2N1
bWVudDo6ZHJhd1BERlBhZ2UoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFNp
emUmIGltYWdlU2l6ZSkKK3sKKyAgICBhcHBseVJvdGF0aW9uRm9yUGFpbnRpbmcoY29udGV4dCwg
aW1hZ2VTaXplLCBtX3JvdGF0aW9uRGVncmVlcyk7CisKKyAgICBjb250ZXh0LnRyYW5zbGF0ZSgt
bV9jcm9wQm94LmxvY2F0aW9uKCkpOworCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgQ0dDb250
ZXh0RHJhd1BERlBhZ2VXaXRoQW5ub3RhdGlvbnMoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwg
Q0dQREZEb2N1bWVudEdldFBhZ2UobV9wbGF0Zm9ybVBERkRvY3VtZW50LmdldCgpLCAxKSwgbnVs
bHB0cik7CisjZWxzZQorICAgIENHQ29udGV4dERyYXdQREZQYWdlKGNvbnRleHQucGxhdGZvcm1D
b250ZXh0KCksIENHUERGRG9jdW1lbnRHZXRQYWdlKG1fcGxhdGZvcm1QREZEb2N1bWVudC5nZXQo
KSwgMSkpOworI2VuZGlmCit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
ICFFTkFCTEUoUERGS0lUX0ZPUl9QREZET0NVTUVOVElNQUdFKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGM0OTg1ZjljNTlhYWFjZDNkZjViNWRjNTZiOWQ4
OTA4NDgxYmY5Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDM4OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA1LCAyMDA2LCAyMDEzIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiUERGRG9jdW1lbnRJbWFnZS5oIgotCi0jaWYgVVNFKENHKQotCi0j
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBo
aWNzLmg+Ci0jaW5jbHVkZSA8SW1hZ2VJTy9JbWFnZUlPLmg+Ci0jZW5kaWYKLQotI2luY2x1ZGUg
IkdyYXBoaWNzQ29udGV4dC5oIgotI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCi0jaW5jbHVkZSAi
SW1hZ2VPYnNlcnZlci5oIgotI2luY2x1ZGUgIkludFJlY3QuaCIKLSNpbmNsdWRlICJMZW5ndGgu
aCIKLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5o
IgotI2luY2x1ZGUgPENvcmVHcmFwaGljcy9DR0NvbnRleHQuaD4KLSNpbmNsdWRlIDxDb3JlR3Jh
cGhpY3MvQ0dQREZEb2N1bWVudC5oPgotI2luY2x1ZGUgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNz
U1BJLmg+Ci0jaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KLSNpbmNsdWRlIDx3dGYvUkFNU2l6
ZS5oPgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLSNpbmNsdWRlIDx3dGYvU3RkTGliRXh0
cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgotCi0jaWYgIVBMQVRGT1JN
KENPQ09BKQotI2luY2x1ZGUgIkltYWdlU291cmNlQ0cuaCIKLSNlbmRpZgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLVBERkRvY3VtZW50SW1hZ2U6OlBERkRvY3VtZW50SW1hZ2UoSW1hZ2VPYnNl
cnZlciogb2JzZXJ2ZXIpCi0gICAgOiBJbWFnZShvYnNlcnZlcikKLXsKLX0KLQotUERGRG9jdW1l
bnRJbWFnZTo6flBERkRvY3VtZW50SW1hZ2UoKSA9IGRlZmF1bHQ7Ci0KLVN0cmluZyBQREZEb2N1
bWVudEltYWdlOjpmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICJwZGYi
OwotfQotCi1GbG9hdFNpemUgUERGRG9jdW1lbnRJbWFnZTo6c2l6ZShJbWFnZU9yaWVudGF0aW9u
KSBjb25zdAotewotICAgIEZsb2F0U2l6ZSBleHBhbmRlZENyb3BCb3hTaXplID0gRmxvYXRTaXpl
KGV4cGFuZGVkSW50U2l6ZShtX2Nyb3BCb3guc2l6ZSgpKSk7Ci0KLSAgICBpZiAobV9yb3RhdGlv
bkRlZ3JlZXMgPT0gOTAgfHwgbV9yb3RhdGlvbkRlZ3JlZXMgPT0gMjcwKQotICAgICAgICByZXR1
cm4gZXhwYW5kZWRDcm9wQm94U2l6ZS50cmFuc3Bvc2VkU2l6ZSgpOwotICAgIHJldHVybiBleHBh
bmRlZENyb3BCb3hTaXplOwotfQotCi12b2lkIFBERkRvY3VtZW50SW1hZ2U6OmNvbXB1dGVJbnRy
aW5zaWNEaW1lbnNpb25zKExlbmd0aCYgaW50cmluc2ljV2lkdGgsIExlbmd0aCYgaW50cmluc2lj
SGVpZ2h0LCBGbG9hdFNpemUmIGludHJpbnNpY1JhdGlvKQotewotICAgIC8vIEZJWE1FOiBJZiB3
ZSB3YW50IHNpemUgbmVnb3RpYXRpb24gd2l0aCBQREYgZG9jdW1lbnRzIGFzLWltYWdlLCB0aGlz
IGlzIHRoZSBwbGFjZSB0byBpbXBsZW1lbnQgaXQgKGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMjA5NSkuCi0gICAgSW1hZ2U6OmNvbXB1dGVJbnRyaW5zaWNEaW1lbnNp
b25zKGludHJpbnNpY1dpZHRoLCBpbnRyaW5zaWNIZWlnaHQsIGludHJpbnNpY1JhdGlvKTsKLSAg
ICBpbnRyaW5zaWNSYXRpbyA9IEZsb2F0U2l6ZSgpOwotfQotCi1FbmNvZGVkRGF0YVN0YXR1cyBQ
REZEb2N1bWVudEltYWdlOjpkYXRhQ2hhbmdlZChib29sIGFsbERhdGFSZWNlaXZlZCkKLXsKLSAg
ICBBU1NFUlQoIW1fZG9jdW1lbnQpOwotICAgIGlmIChhbGxEYXRhUmVjZWl2ZWQgJiYgIW1fZG9j
dW1lbnQpIHsKLSAgICAgICAgY3JlYXRlUERGRG9jdW1lbnQoKTsKLQotICAgICAgICBpZiAocGFn
ZUNvdW50KCkpIHsKLSAgICAgICAgICAgIG1faGFzUGFnZSA9IHRydWU7Ci0gICAgICAgICAgICBj
b21wdXRlQm91bmRzRm9yQ3VycmVudFBhZ2UoKTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1
cm4gbV9kb2N1bWVudCA/IEVuY29kZWREYXRhU3RhdHVzOjpDb21wbGV0ZSA6IEVuY29kZWREYXRh
U3RhdHVzOjpVbmtub3duOwotfQotCi12b2lkIFBERkRvY3VtZW50SW1hZ2U6OnNldFBkZkltYWdl
Q2FjaGluZ1BvbGljeShQREZJbWFnZUNhY2hpbmdQb2xpY3kgcGRmSW1hZ2VDYWNoaW5nUG9saWN5
KQotewotICAgIGlmIChtX3BkZkltYWdlQ2FjaGluZ1BvbGljeSA9PSBwZGZJbWFnZUNhY2hpbmdQ
b2xpY3kpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fcGRmSW1hZ2VDYWNoaW5nUG9saWN5ID0g
cGRmSW1hZ2VDYWNoaW5nUG9saWN5OwotICAgIGRlc3Ryb3lEZWNvZGVkRGF0YSgpOwotfQotCi1i
b29sIFBERkRvY3VtZW50SW1hZ2U6OmNhY2hlUGFyYW1ldGVyc01hdGNoKEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QpIGNvbnN0Ci17Ci0gICAgLy8gT2xkIGFuZCBuZXcgc291cmNlIHJlY3RhbmdsZXMgaGF2
ZSB0byBtYXRjaC4KLSAgICBpZiAoc3JjUmVjdCAhPSBtX2NhY2hlZFNvdXJjZVJlY3QpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIE9sZCBhbmQgbmV3IHNjYWxpbmcgZmFjdG9ycyAi
ZGVzdCAvIHNyYyIgaGF2ZSB0byBtYXRjaC4KLSAgICBpZiAoZHN0UmVjdC5zaXplKCkgIT0gbV9j
YWNoZWREZXN0aW5hdGlvblJlY3Quc2l6ZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICAvLyBtX2NhY2hlZEltYWdlUmVjdCBjYW4gYmUgbW92ZWQgaWYgc3JjUmVjdCBhbmQgZHN0UmVj
dC5zaXplKCkgZGlkIG5vdCBjaGFuZ2UuCi0gICAgRmxvYXRSZWN0IG1vdmVkQ2FjaGVkSW1hZ2VS
ZWN0ID0gbV9jYWNoZWRJbWFnZVJlY3Q7Ci0gICAgbW92ZWRDYWNoZWRJbWFnZVJlY3QubW92ZShG
bG9hdFNpemUoZHN0UmVjdC5sb2NhdGlvbigpIC0gbV9jYWNoZWREZXN0aW5hdGlvblJlY3QubG9j
YXRpb24oKSkpOwotCi0gICAgLy8gbW92ZWRDYWNoZWRJbWFnZVJlY3QgaGFzIHRvIGNvbnRhaW4g
dGhlIHdob2xlIGRpcnR5IHJlY3RhbmdsZS4KLSAgICBGbG9hdFJlY3QgZGlydHlSZWN0ID0gaW50
ZXJzZWN0aW9uKGNvbnRleHQuY2xpcEJvdW5kcygpLCBkc3RSZWN0KTsKLSAgICBpZiAoIW1vdmVk
Q2FjaGVkSW1hZ2VSZWN0LmNvbnRhaW5zKGRpcnR5UmVjdCkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIC8vIE9sZCBhbmQgbmV3IGNvbnRleHQgc2NhbGluZyBmYWN0b3JzIGhhdmUgdG8g
bWF0Y2ggYXMgd2VsbC4KLSAgICBBZmZpbmVUcmFuc2Zvcm06OkRlY29tcG9zZWRUeXBlIGRlY29t
cG9zZWRUcmFuc2Zvcm07Ci0gICAgY29udGV4dC5nZXRDVE0oR3JhcGhpY3NDb250ZXh0OjpEZWZp
bml0ZWx5SW5jbHVkZURldmljZVNjYWxlKS5kZWNvbXBvc2UoZGVjb21wb3NlZFRyYW5zZm9ybSk7
Ci0KLSAgICBBZmZpbmVUcmFuc2Zvcm06OkRlY29tcG9zZWRUeXBlIGNhY2hlZERlY29tcG9zZWRU
cmFuc2Zvcm07Ci0gICAgbV9jYWNoZWRUcmFuc2Zvcm0uZGVjb21wb3NlKGNhY2hlZERlY29tcG9z
ZWRUcmFuc2Zvcm0pOwotICAgIGlmIChkZWNvbXBvc2VkVHJhbnNmb3JtLnNjYWxlWCAhPSBjYWNo
ZWREZWNvbXBvc2VkVHJhbnNmb3JtLnNjYWxlWCB8fCBkZWNvbXBvc2VkVHJhbnNmb3JtLnNjYWxl
WSAhPSBjYWNoZWREZWNvbXBvc2VkVHJhbnNmb3JtLnNjYWxlWSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXN0YXRpYyB2b2lkIHRyYW5zZm9ybUNvbnRl
eHRGb3JQYWludGluZyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0KQotewotICAgIGZsb2F0IGhTY2FsZSA9
IGRzdFJlY3Qud2lkdGgoKSAvIHNyY1JlY3Qud2lkdGgoKTsKLSAgICBmbG9hdCB2U2NhbGUgPSBk
c3RSZWN0LmhlaWdodCgpIC8gc3JjUmVjdC5oZWlnaHQoKTsKLQotICAgIGlmIChoU2NhbGUgIT0g
dlNjYWxlKSB7Ci0gICAgICAgIGZsb2F0IG1pbmltdW1TY2FsZSA9IHN0ZDo6bWF4KChkc3RSZWN0
LndpZHRoKCkgLSAwLjUpIC8gc3JjUmVjdC53aWR0aCgpLCAoZHN0UmVjdC5oZWlnaHQoKSAtIDAu
NSkgLyBzcmNSZWN0LmhlaWdodCgpKTsKLSAgICAgICAgZmxvYXQgbWF4aW11bVNjYWxlID0gc3Rk
OjptaW4oKGRzdFJlY3Qud2lkdGgoKSArIDAuNSkgLyBzcmNSZWN0LndpZHRoKCksIChkc3RSZWN0
LmhlaWdodCgpICsgMC41KSAvIHNyY1JlY3QuaGVpZ2h0KCkpOwotCi0gICAgICAgIC8vIElmIHRo
ZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIHR3byBzY2FsZXMgaXMgZHVlIHRvIGludGVnZXIgcm91
bmRpbmcgb2YgaW1hZ2Ugc2l6ZXMsCi0gICAgICAgIC8vIHVzZSB0aGUgc21hbGxlciBvZiB0aGUg
dHdvIG9yaWdpbmFsIHNjYWxlcyB0byBlbnN1cmUgdGhhdCB0aGUgaW1hZ2UgZml0cyBpbnNpZGUg
dGhlCi0gICAgICAgIC8vIHNwYWNlIG9yaWdpbmFsbHkgYWxsb2NhdGVkIGZvciBpdC4KLSAgICAg
ICAgaWYgKG1pbmltdW1TY2FsZSA8PSBtYXhpbXVtU2NhbGUpIHsKLSAgICAgICAgICAgIGhTY2Fs
ZSA9IHN0ZDo6bWluKGhTY2FsZSwgdlNjYWxlKTsKLSAgICAgICAgICAgIHZTY2FsZSA9IGhTY2Fs
ZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIGRyYXdQREZQYWdlKCkgcmVsaWVzIG9uIGRy
YXdpbmcgdGhlIHdob2xlIFBERiBpbnRvIGEgY29udGV4dCBzdGFydGluZyBhdCAoMCwgMCkuIFdl
IG5lZWQKLSAgICAvLyB0byB0cmFuc2Zvcm0gdGhlIGRlc3RpbmF0aW9uIGNvbnRleHQgc3VjaCB0
aGF0IHNyY1JlY3Qgb2YgdGhlIHNvdXJjZSBjb250ZXh0IHdpbGwgYmUgZHJhd24KLSAgICAvLyBp
biBkc3RSZWN0IG9mIGRlc3RpbmF0aW9uIGNvbnRleHQuCi0gICAgY29udGV4dC50cmFuc2xhdGUo
ZHN0UmVjdC5sb2NhdGlvbigpIC0gc3JjUmVjdC5sb2NhdGlvbigpKTsKLSAgICBjb250ZXh0LnNj
YWxlKEZsb2F0U2l6ZShoU2NhbGUsIC12U2NhbGUpKTsKLSAgICBjb250ZXh0LnRyYW5zbGF0ZSgw
LCAtc3JjUmVjdC5oZWlnaHQoKSk7Ci19Ci0KLS8vIFRvIGF2b2lkIHRoZSBqZXRzYW0gb24gaU9T
LCB3ZSBhcmUgZ29pbmcgdG8gbGltaXQgdGhlIHNpemUgb2YgYWxsIHRoZSBQREYgY2FjaGVkSW1h
Z2VzIHRvIGJlIDY0TUIuCi1zdGF0aWMgY29uc3Qgc2l6ZV90IHNfbWF4Q2FjaGVkSW1hZ2VTaWRl
ID0gNCAqIDEwMjQ7Ci1zdGF0aWMgY29uc3Qgc2l6ZV90IHNfbWF4Q2FjaGVkSW1hZ2VBcmVhID0g
c19tYXhDYWNoZWRJbWFnZVNpZGUgKiBzX21heENhY2hlZEltYWdlU2lkZTsKLQotc3RhdGljIGNv
bnN0IHNpemVfdCBzX21heERlY29kZWREYXRhU2l6ZSA9IHNfbWF4Q2FjaGVkSW1hZ2VBcmVhICog
NDsKLXN0YXRpYyBzaXplX3Qgc19hbGxEZWNvZGVkRGF0YVNpemUgPSAwOwotCi1zdGF0aWMgRmxv
YXRSZWN0IGNhY2hlZEltYWdlUmVjdChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZs
b2F0UmVjdCYgZHN0UmVjdCkKLXsKLSAgICBGbG9hdFJlY3QgZGlydHlSZWN0ID0gY29udGV4dC5j
bGlwQm91bmRzKCk7Ci0KLSAgICAvLyBDYWxjdWxhdGUgdGhlIG1heGltdW0gcmVjdGFuZ2xlIHdl
IGNhbiBjYWNoZSBhcm91bmQgdGhlIGNlbnRlciBvZiB0aGUgY2xpcHBpbmcgYm91bmRzLgotICAg
IEZsb2F0U2l6ZSBtYXhTaXplID0gc19tYXhDYWNoZWRJbWFnZVNpZGUgLyBjb250ZXh0LnNjYWxl
RmFjdG9yKCk7Ci0gICAgRmxvYXRQb2ludCBtaW5Mb2NhdGlvbiA9IEZsb2F0UG9pbnQoZGlydHlS
ZWN0LmNlbnRlcigpIC0gbWF4U2l6ZSAvIDIpOwotCi0gICAgLy8gRW5zdXJlIHRoZSBjbGlwcGlu
ZyBib3VuZHMgYXJlIGFsbCBpbmNsdWRlZCBidXQgd2l0aGluIHRoZSBib3VuZHMgb2YgdGhlIGRz
dFJlY3QKLSAgICByZXR1cm4gaW50ZXJzZWN0aW9uKHVuaW9uUmVjdChkaXJ0eVJlY3QsIEZsb2F0
UmVjdChtaW5Mb2NhdGlvbiwgbWF4U2l6ZSkpLCBkc3RSZWN0KTsKLX0KLQotdm9pZCBQREZEb2N1
bWVudEltYWdlOjpkZWNvZGVkU2l6ZUNoYW5nZWQoc2l6ZV90IG5ld0NhY2hlZEJ5dGVzKQotewot
ICAgIGlmICghbV9jYWNoZWRCeXRlcyAmJiAhbmV3Q2FjaGVkQnl0ZXMpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGlmIChpbWFnZU9ic2VydmVyKCkpCi0gICAgICAgIGltYWdlT2JzZXJ2ZXIoKS0+
ZGVjb2RlZFNpemVDaGFuZ2VkKCp0aGlzLCAtc3RhdGljX2Nhc3Q8bG9uZyBsb25nPihtX2NhY2hl
ZEJ5dGVzKSArIG5ld0NhY2hlZEJ5dGVzKTsKLQotICAgIEFTU0VSVChzX2FsbERlY29kZWREYXRh
U2l6ZSA+PSBtX2NhY2hlZEJ5dGVzKTsKLSAgICAvLyBVcGRhdGUgd2l0aCB0aGUgZGlmZmVyZW5j
ZSBpbiB0d28gc3RlcHMgdG8gYXZvaWQgdW5zaWduZWQgdW5kZXJmbG93IHN1YnRyYWN0aW9uLgot
ICAgIHNfYWxsRGVjb2RlZERhdGFTaXplIC09IG1fY2FjaGVkQnl0ZXM7Ci0gICAgc19hbGxEZWNv
ZGVkRGF0YVNpemUgKz0gbmV3Q2FjaGVkQnl0ZXM7Ci0KLSAgICBtX2NhY2hlZEJ5dGVzID0gbmV3
Q2FjaGVkQnl0ZXM7Ci19Ci0KLXZvaWQgUERGRG9jdW1lbnRJbWFnZTo6dXBkYXRlQ2FjaGVkSW1h
Z2VJZk5lZWRlZChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0KQotewotICAgIC8vIENsaXBwZWQgb3B0aW9u
IGlzIGZvciB0ZXN0aW5nIG9ubHkuIEZvcmNlIHJlLWNhY2hpbmcgdGhlIFBERiB3aXRoIGVhY2gg
ZHJhdy4KLSAgICBib29sIGZvcmNlVXBkYXRlQ2FjaGVkSW1hZ2UgPSBtX3BkZkltYWdlQ2FjaGlu
Z1BvbGljeSA9PSBQREZJbWFnZUNhY2hpbmdQb2xpY3k6OkNsaXBCb3VuZHNPbmx5IHx8ICFtX2Nh
Y2hlZEltYWdlQnVmZmVyOwotICAgIGlmICghZm9yY2VVcGRhdGVDYWNoZWRJbWFnZSAmJiBjYWNo
ZVBhcmFtZXRlcnNNYXRjaChjb250ZXh0LCBkc3RSZWN0LCBzcmNSZWN0KSkgewotICAgICAgICAv
LyBBZGp1c3QgdGhlIHZpZXctcG9ydCByZWN0YW5nbGVzIGlmIG5vIHJlLWNhY2hpbmcgd2lsbCBo
YXBwZW4uCi0gICAgICAgIG1fY2FjaGVkSW1hZ2VSZWN0Lm1vdmUoRmxvYXRTaXplKGRzdFJlY3Qu
bG9jYXRpb24oKSAtIG1fY2FjaGVkRGVzdGluYXRpb25SZWN0LmxvY2F0aW9uKCkpKTsKLSAgICAg
ICAgbV9jYWNoZWREZXN0aW5hdGlvblJlY3QgPSBkc3RSZWN0OwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgc3dpdGNoIChtX3BkZkltYWdlQ2FjaGluZ1BvbGljeSkgewotICAgIGNhc2Ug
UERGSW1hZ2VDYWNoaW5nUG9saWN5OjpEaXNhYmxlZDoKLSAgICAgICAgcmV0dXJuOwotICAgIGNh
c2UgUERGSW1hZ2VDYWNoaW5nUG9saWN5OjpCZWxvd01lbW9yeUxpbWl0OgotICAgICAgICAvLyBL
ZWVwIHRoZSBtZW1vcnkgdXNlZCBieSB0aGUgY2FjaGVkIGltYWdlIGJlbG93IHNvbWUgdGhyZXNo
b2xkLCBvdGhlcndpc2UgV2ViS2l0IHByb2Nlc3MKLSAgICAgICAgLy8gd2lsbCBqZXRzYW0gaWYg
aXQgZXhjZWVkcyBpdHMgbWVtb3J5IGxpbWl0LiBPbmx5IGEgcmVjdGFuZ2xlIGZyb20gdGhlIFBE
RiBtYXkgYmUgY2FjaGVkLgotICAgICAgICBtX2NhY2hlZEltYWdlUmVjdCA9IGNhY2hlZEltYWdl
UmVjdChjb250ZXh0LCBkc3RSZWN0KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQREZJbWFn
ZUNhY2hpbmdQb2xpY3k6OkNsaXBCb3VuZHNPbmx5OgotICAgICAgICBtX2NhY2hlZEltYWdlUmVj
dCA9IGludGVyc2VjdGlvbihjb250ZXh0LmNsaXBCb3VuZHMoKSwgZHN0UmVjdCk7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgUERGSW1hZ2VDYWNoaW5nUG9saWN5OjpFbmFibGVkOgotICAgICAg
ICBtX2NhY2hlZEltYWdlUmVjdCA9IGRzdFJlY3Q7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQot
ICAgIEZsb2F0U2l6ZSBjYWNoZWRJbWFnZVNpemUgPSBGbG9hdFJlY3QoZW5jbG9zaW5nSW50UmVj
dChtX2NhY2hlZEltYWdlUmVjdCkpLnNpemUoKTsKLQotICAgIC8vIENhY2hlIHRoZSBQREYgaW1h
Z2Ugb25seSBpZiB0aGUgc2l6ZSBvZiB0aGUgbmV3IGltYWdlIHdvbid0IGV4Y2VlZCB0aGUgY2Fj
aGUgdGhyZXNob2xkLgotICAgIGlmIChtX3BkZkltYWdlQ2FjaGluZ1BvbGljeSA9PSBQREZJbWFn
ZUNhY2hpbmdQb2xpY3k6OkJlbG93TWVtb3J5TGltaXQpIHsKLSAgICAgICAgSW50U2l6ZSBzY2Fs
ZWRTaXplID0gSW1hZ2VCdWZmZXI6OmNvbXBhdGlibGVCdWZmZXJTaXplKGNhY2hlZEltYWdlU2l6
ZSwgY29udGV4dCk7Ci0gICAgICAgIGlmIChzX2FsbERlY29kZWREYXRhU2l6ZSArIHNjYWxlZFNp
emUudW5jbGFtcGVkQXJlYSgpICogNCAtIG1fY2FjaGVkQnl0ZXMgPiBzX21heERlY29kZWREYXRh
U2l6ZSkgewotICAgICAgICAgICAgZGVzdHJveURlY29kZWREYXRhKCk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBtX2NhY2hlZEltYWdlQnVmZmVyID0gSW1h
Z2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY2FjaGVkSW1hZ2VTaXplLCBjb250ZXh0
KTsKLSAgICBpZiAoIW1fY2FjaGVkSW1hZ2VCdWZmZXIpIHsKLSAgICAgICAgZGVzdHJveURlY29k
ZWREYXRhKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBhdXRvJiBidWZmZXJDb250
ZXh0ID0gbV9jYWNoZWRJbWFnZUJ1ZmZlci0+Y29udGV4dCgpOwotICAgIC8vIFdlIG5lZWQgdG8g
dHJhbnNmb3JtIHRoZSBjb29yZGluYXRlIHN5c3RlbSBzdWNoIHRoYXQgdG9wLWxlZnQgb2YgbV9j
YWNoZWRJbWFnZVJlY3Qgd2lsbCBiZSBtYXBwZWQgdG8gdGhlCi0gICAgLy8gdG9wLWxlZnQgb2Yg
ZHN0UmVjdC4gQWx0aG91Z2ggb25seSBtX2NhY2hlZEltYWdlUmVjdC5zaXplKCkgb2YgdGhlIGlt
YWdlIGNvcGllZCwgdGhlIHNpemVzIG9mIHNyY1JlY3QKLSAgICAvLyBhbmQgZHN0UmVjdCBzaG91
bGQgYmUgcGFzc2VkIHRvIHRoaXMgZnVuY3Rpb24gYmVjYXVzZSB0aGV5IGFyZSB1c2VkIHRvIGNh
bGN1bGF0ZSB0aGUgaW1hZ2Ugc2NhbGluZy4KLSAgICB0cmFuc2Zvcm1Db250ZXh0Rm9yUGFpbnRp
bmcoYnVmZmVyQ29udGV4dCwgZHN0UmVjdCwgRmxvYXRSZWN0KG1fY2FjaGVkSW1hZ2VSZWN0Lmxv
Y2F0aW9uKCksIHNyY1JlY3Quc2l6ZSgpKSk7Ci0gICAgZHJhd1BERlBhZ2UoYnVmZmVyQ29udGV4
dCk7Ci0KLSAgICBtX2NhY2hlZFRyYW5zZm9ybSA9IGNvbnRleHQuZ2V0Q1RNKEdyYXBoaWNzQ29u
dGV4dDo6RGVmaW5pdGVseUluY2x1ZGVEZXZpY2VTY2FsZSk7Ci0gICAgbV9jYWNoZWREZXN0aW5h
dGlvblJlY3QgPSBkc3RSZWN0OwotICAgIG1fY2FjaGVkU291cmNlUmVjdCA9IHNyY1JlY3Q7Ci0g
ICAgKyttX2NhY2hpbmdDb3VudEZvclRlc3Rpbmc7Ci0KLSAgICBJbnRTaXplIGJhY2tlbmRTaXpl
ID0gbV9jYWNoZWRJbWFnZUJ1ZmZlci0+YmFja2VuZFNpemUoKTsKLSAgICBkZWNvZGVkU2l6ZUNo
YW5nZWQoYmFja2VuZFNpemUudW5jbGFtcGVkQXJlYSgpICogNCk7Ci19Ci0KLUltYWdlRHJhd1Jl
c3VsdCBQREZEb2N1bWVudEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQotewotICAgIGlmICghbV9kb2N1bWVudCB8fCAh
bV9oYXNQYWdlKQotICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOwot
Ci0gICAgdXBkYXRlQ2FjaGVkSW1hZ2VJZk5lZWRlZChjb250ZXh0LCBkc3RSZWN0LCBzcmNSZWN0
KTsKLQotICAgIHsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVy
KGNvbnRleHQpOwotICAgICAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihvcHRpb25z
LmNvbXBvc2l0ZU9wZXJhdG9yKCkpOwotCi0gICAgICAgIGlmIChtX2NhY2hlZEltYWdlQnVmZmVy
KSB7Ci0gICAgICAgICAgICAvLyBEcmF3IHRoZSBJbWFnZUJ1ZmZlciAnbV9jYWNoZWRJbWFnZUJ1
ZmZlcicgdG8gdGhlIHJlY3RhbmdsZSAnbV9jYWNoZWRJbWFnZVJlY3QnCi0gICAgICAgICAgICAv
LyBvbiB0aGUgZGVzdGluYXRpb24gY29udGV4dC4gU2luY2UgdGhlIHBpeGVscyBvZiB0aGUgcmVj
dGFuZ2xlICdtX2NhY2hlZEltYWdlUmVjdCcKLSAgICAgICAgICAgIC8vIG9mIHRoZSBzb3VyY2Ug
UERGIHdhcyBjb3BpZWQgdG8gJ21fY2FjaGVkSW1hZ2VCdWZmZXInLCB0aGUgc2l6ZXMgb2YgdGhl
IHNvdXJjZQotICAgICAgICAgICAgLy8gYW5kIHRoZSBkZXN0aW5hdGlvbiByZWN0YW5nbGVzIHdp
bGwgYmUgZXF1YWwgYW5kIG5vIHNjYWxpbmcgd2lsbCBiZSBuZWVkZWQgaGVyZS4KLSAgICAgICAg
ICAgIGNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCptX2NhY2hlZEltYWdlQnVmZmVyLCBtX2NhY2hl
ZEltYWdlUmVjdCk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICB0cmFu
c2Zvcm1Db250ZXh0Rm9yUGFpbnRpbmcoY29udGV4dCwgZHN0UmVjdCwgc3JjUmVjdCk7Ci0gICAg
ICAgICAgICBkcmF3UERGUGFnZShjb250ZXh0KTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlm
IChpbWFnZU9ic2VydmVyKCkpCi0gICAgICAgIGltYWdlT2JzZXJ2ZXIoKS0+ZGlkRHJhdygqdGhp
cyk7Ci0KLSAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWREcmF3OwotfQotCi12b2lkIFBE
RkRvY3VtZW50SW1hZ2U6OmRlc3Ryb3lEZWNvZGVkRGF0YShib29sKQotewotICAgIG1fY2FjaGVk
SW1hZ2VCdWZmZXIgPSBudWxscHRyOwotICAgIG1fY2FjaGVkSW1hZ2VSZWN0ID0gRmxvYXRSZWN0
KCk7Ci0gICAgZGVjb2RlZFNpemVDaGFuZ2VkKDApOwotfQotCi0jaWYgIVVTRShQREZLSVRfRk9S
X1BERkRPQ1VNRU5USU1BR0UpCi0KLXZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9j
dW1lbnQoKQotewotICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVy
ID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoZGF0YSgpLT5jcmVhdGVD
RkRhdGEoKS5nZXQoKSkpOwotICAgIG1fZG9jdW1lbnQgPSBhZG9wdENGKENHUERGRG9jdW1lbnRD
cmVhdGVXaXRoUHJvdmlkZXIoZGF0YVByb3ZpZGVyLmdldCgpKSk7Ci19Ci0KLXZvaWQgUERGRG9j
dW1lbnRJbWFnZTo6Y29tcHV0ZUJvdW5kc0ZvckN1cnJlbnRQYWdlKCkKLXsKLSAgICBBU1NFUlQo
cGFnZUNvdW50KCkgPiAwKTsKLSAgICBDR1BERlBhZ2VSZWYgY2dQYWdlID0gQ0dQREZEb2N1bWVu
dEdldFBhZ2UobV9kb2N1bWVudC5nZXQoKSwgMSk7Ci0gICAgQ0dSZWN0IG1lZGlhQm94ID0gQ0dQ
REZQYWdlR2V0Qm94UmVjdChjZ1BhZ2UsIGtDR1BERk1lZGlhQm94KTsKLQotICAgIC8vIEdldCBj
cm9wIGJveCAobm90IGFsd2F5cyB0aGVyZSkuIElmIG5vdCwgdXNlIG1lZGlhIGJveC4KLSAgICBD
R1JlY3QgciA9IENHUERGUGFnZUdldEJveFJlY3QoY2dQYWdlLCBrQ0dQREZDcm9wQm94KTsKLSAg
ICBpZiAoIUNHUmVjdElzRW1wdHkocikpCi0gICAgICAgIG1fY3JvcEJveCA9IHI7Ci0gICAgZWxz
ZQotICAgICAgICBtX2Nyb3BCb3ggPSBtZWRpYUJveDsKLQotICAgIG1fcm90YXRpb25EZWdyZWVz
ID0gQ0dQREZQYWdlR2V0Um90YXRpb25BbmdsZShjZ1BhZ2UpOwotfQotCi11bnNpZ25lZCBQREZE
b2N1bWVudEltYWdlOjpwYWdlQ291bnQoKSBjb25zdAotewotICAgIHJldHVybiBDR1BERkRvY3Vt
ZW50R2V0TnVtYmVyT2ZQYWdlcyhtX2RvY3VtZW50LmdldCgpKTsKLX0KLQotc3RhdGljIHZvaWQg
YXBwbHlSb3RhdGlvbkZvclBhaW50aW5nKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgRmxvYXRT
aXplIHNpemUsIGludCByb3RhdGlvbkRlZ3JlZXMpCi17Ci0gICAgaWYgKHJvdGF0aW9uRGVncmVl
cyA9PSA5MCkKLSAgICAgICAgY29udGV4dC50cmFuc2xhdGUoMCwgc2l6ZS5oZWlnaHQoKSk7Ci0g
ICAgZWxzZSBpZiAocm90YXRpb25EZWdyZWVzID09IDE4MCkKLSAgICAgICAgY29udGV4dC50cmFu
c2xhdGUoc2l6ZSk7Ci0gICAgZWxzZSBpZiAocm90YXRpb25EZWdyZWVzID09IDI3MCkKLSAgICAg
ICAgY29udGV4dC50cmFuc2xhdGUoc2l6ZS53aWR0aCgpLCAwKTsKLQotICAgIGNvbnRleHQucm90
YXRlKC1kZWcycmFkKHN0YXRpY19jYXN0PGZsb2F0Pihyb3RhdGlvbkRlZ3JlZXMpKSk7Ci19Ci0K
LXZvaWQgUERGRG9jdW1lbnRJbWFnZTo6ZHJhd1BERlBhZ2UoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0KQotewotICAgIGFwcGx5Um90YXRpb25Gb3JQYWludGluZyhjb250ZXh0LCBzaXplKCksIG1f
cm90YXRpb25EZWdyZWVzKTsKLQotICAgIGNvbnRleHQudHJhbnNsYXRlKC1tX2Nyb3BCb3gubG9j
YXRpb24oKSk7Ci0KLSNpZiBVU0UoRElSRUNUMkQpCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSNl
bHNlCi0gICAgLy8gQ0dQREYgcGFnZXMgYXJlIGluZGV4ZWQgZnJvbSAxLgotI2lmIFBMQVRGT1JN
KENPQ09BKQotICAgIENHQ29udGV4dERyYXdQREZQYWdlV2l0aEFubm90YXRpb25zKGNvbnRleHQu
cGxhdGZvcm1Db250ZXh0KCksIENHUERGRG9jdW1lbnRHZXRQYWdlKG1fZG9jdW1lbnQuZ2V0KCks
IDEpLCBudWxscHRyKTsKLSNlbHNlCi0gICAgQ0dDb250ZXh0RHJhd1BERlBhZ2UoY29udGV4dC5w
bGF0Zm9ybUNvbnRleHQoKSwgQ0dQREZEb2N1bWVudEdldFBhZ2UobV9kb2N1bWVudC5nZXQoKSwg
MSkpOwotI2VuZGlmCi0jZW5kaWYKLX0KLQotI2VuZGlmIC8vICFVU0UoUERGS0lUX0ZPUl9QREZE
T0NVTUVOVElNQUdFKQotCi0jaWYgUExBVEZPUk0oTUFDKQotCi1SZXRhaW5QdHI8Q0ZNdXRhYmxl
RGF0YVJlZj4gUERGRG9jdW1lbnRJbWFnZTo6Y29udmVydFBvc3RTY3JpcHREYXRhVG9QREYoUmV0
YWluUHRyPENGRGF0YVJlZj4mJiBwb3N0U2NyaXB0RGF0YSkKLXsKLSAgICAvLyBDb252ZXJ0IFBv
c3RTY3JpcHQgdG8gUERGIHVzaW5nIHRoZSBRdWFydHogMkQgQVBJLgotICAgIC8vIGh0dHA6Ly9k
ZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24vR3JhcGhpY3NJbWFnaW5nL0NvbmNlcHR1
YWwvZHJhd2luZ3dpdGhxdWFydHoyZC9kcV9wc19jb252ZXJ0L2NoYXB0ZXJfMTZfc2VjdGlvbl8x
Lmh0bWwKLQotICAgIENHUFNDb252ZXJ0ZXJDYWxsYmFja3MgY2FsbGJhY2tzID0geyB9OwotICAg
IGF1dG8gY29udmVydGVyID0gYWRvcHRDRihDR1BTQ29udmVydGVyQ3JlYXRlKDAsICZjYWxsYmFj
a3MsIDApKTsKLSAgICBhdXRvIHByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0
ZVdpdGhDRkRhdGEocG9zdFNjcmlwdERhdGEuZ2V0KCkpKTsKLSAgICBhdXRvIHBkZkRhdGEgPSBh
ZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCkpOwotICAg
IGF1dG8gY29uc3VtZXIgPSBhZG9wdENGKENHRGF0YUNvbnN1bWVyQ3JlYXRlV2l0aENGRGF0YShw
ZGZEYXRhLmdldCgpKSk7Ci0KLSAgICBDR1BTQ29udmVydGVyQ29udmVydChjb252ZXJ0ZXIuZ2V0
KCksIHByb3ZpZGVyLmdldCgpLCBjb25zdW1lci5nZXQoKSwgMCk7Ci0gICAgcmV0dXJuIHBkZkRh
dGE7Ci19Ci0KLSNlbmRpZgotCi12b2lkIFBERkRvY3VtZW50SW1hZ2U6OmR1bXAoVGV4dFN0cmVh
bSYgdHMpIGNvbnN0Ci17Ci0gICAgSW1hZ2U6OmR1bXAodHMpOwotICAgIHRzLmR1bXBQcm9wZXJ0
eSgicGFnZS1jb3VudCIsIHBhZ2VDb3VudCgpKTsKLSAgICB0cy5kdW1wUHJvcGVydHkoImNyb3At
Ym94IiwgbV9jcm9wQm94KTsKLSAgICBpZiAobV9yb3RhdGlvbkRlZ3JlZXMpCi0gICAgICAgIHRz
LmR1bXBQcm9wZXJ0eSgicm90YXRpb24iLCBtX3JvdGF0aW9uRGVncmVlcyk7Ci19Ci0KLX0KLQot
I2VuZGlmIC8vIFVTRShDRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggOTVkMzYwYWUwOTgyOGU0NDk1NDI2ODZjNmI3NzE5YzQ4NzdkNjIwMy4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMjQg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAxMyBBcHBs
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBQREZEb2N1bWVudEltYWdlX2gKLSNkZWZpbmUgUERG
RG9jdW1lbnRJbWFnZV9oCi0KLSNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKLSNpbmNsdWRl
ICJGbG9hdFJlY3QuaCIKLSNpbmNsdWRlICJHcmFwaGljc1R5cGVzLmgiCi0jaW5jbHVkZSAiSW1h
Z2UuaCIKLSNpbmNsdWRlICJTZXR0aW5ncy5oIgotCi0jaWYgVVNFKENHKQotCi0jaWYgUExBVEZP
Uk0oTUFDKQotI2RlZmluZSBVU0VfUERGS0lUX0ZPUl9QREZET0NVTUVOVElNQUdFIDEKLSNlbmRp
ZgotCi10eXBlZGVmIHN0cnVjdCBDR1BERkRvY3VtZW50ICpDR1BERkRvY3VtZW50UmVmOwotT0JK
Q19DTEFTUyBQREZEb2N1bWVudDsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHcmFw
aGljc0NvbnRleHQ7Ci1jbGFzcyBJbWFnZUJ1ZmZlcjsKLQotY2xhc3MgUERGRG9jdW1lbnRJbWFn
ZSBmaW5hbCA6IHB1YmxpYyBJbWFnZSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxQREZEb2N1
bWVudEltYWdlPiBjcmVhdGUoSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCi0gICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQREZEb2N1bWVudEltYWdlKG9ic2VydmVyKSk7Ci0gICAg
fQotCi0gICAgdm9pZCBzZXRQZGZJbWFnZUNhY2hpbmdQb2xpY3koUERGSW1hZ2VDYWNoaW5nUG9s
aWN5KTsKLSAgICAKLSNpZiBQTEFURk9STShNQUMpCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFJldGFpblB0cjxDRk11dGFibGVEYXRhUmVmPiBjb252ZXJ0UG9zdFNjcmlwdERhdGFUb1BERihS
ZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIHBvc3RTY3JpcHREYXRhKTsKLSNlbmRpZgotCi0gICAgdW5z
aWduZWQgY2FjaGluZ0NvdW50Rm9yVGVzdGluZygpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGluZ0Nv
dW50Rm9yVGVzdGluZzsgfQotCi1wcml2YXRlOgotICAgIFBERkRvY3VtZW50SW1hZ2UoSW1hZ2VP
YnNlcnZlciopOwotICAgIHZpcnR1YWwgflBERkRvY3VtZW50SW1hZ2UoKTsKLQotICAgIGJvb2wg
aXNQREZEb2N1bWVudEltYWdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCi0g
ICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3Qgb3ZlcnJpZGU7Ci0KLSAgICBib29s
IGhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQotCi0gICAgRW5jb2RlZERhdGFTdGF0dXMgZGF0YUNoYW5nZWQoYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpIG92ZXJyaWRlOwotCi0gICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoYm9vbCAvKmRlc3Ry
b3lBbGwqLyA9IHRydWUpIG92ZXJyaWRlOwotCi0gICAgdm9pZCBjb21wdXRlSW50cmluc2ljRGlt
ZW5zaW9ucyhMZW5ndGgmIGludHJpbnNpY1dpZHRoLCBMZW5ndGgmIGludHJpbnNpY0hlaWdodCwg
RmxvYXRTaXplJiBpbnRyaW5zaWNSYXRpbykgb3ZlcnJpZGU7Ci0gICAgRmxvYXRTaXplIHNpemUo
SW1hZ2VPcmllbnRhdGlvbiA9IEltYWdlT3JpZW50YXRpb246OkZyb21JbWFnZSkgY29uc3Qgb3Zl
cnJpZGU7Ci0KLSAgICBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmID0geyB9KSBvdmVycmlkZTsKLQotICAgIC8vIEZJWE1FOiBJbXBs
ZW1lbnQgdGhpcyB0byBiZSBsZXNzIGNvbnNlcnZhdGl2ZS4KLSAgICBib29sIGN1cnJlbnRGcmFt
ZUtub3duVG9CZU9wYXF1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0KLSAg
ICB2b2lkIGR1bXAoV1RGOjpUZXh0U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7Ci0KLSAgICB2b2lk
IGNyZWF0ZVBERkRvY3VtZW50KCk7Ci0gICAgdm9pZCBjb21wdXRlQm91bmRzRm9yQ3VycmVudFBh
Z2UoKTsKLSAgICB1bnNpZ25lZCBwYWdlQ291bnQoKSBjb25zdDsKLSAgICB2b2lkIGRyYXdQREZQ
YWdlKEdyYXBoaWNzQ29udGV4dCYpOwotCi0gICAgdm9pZCBkZWNvZGVkU2l6ZUNoYW5nZWQoc2l6
ZV90IG5ld0NhY2hlZEJ5dGVzKTsKLSAgICB2b2lkIHVwZGF0ZUNhY2hlZEltYWdlSWZOZWVkZWQo
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QpOwotICAgIGJvb2wgY2FjaGVQYXJhbWV0ZXJzTWF0Y2goR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qp
IGNvbnN0OwotCi0gICAgUERGSW1hZ2VDYWNoaW5nUG9saWN5IG1fcGRmSW1hZ2VDYWNoaW5nUG9s
aWN5IHsgUERGSW1hZ2VDYWNoaW5nUG9saWN5OjpEZWZhdWx0IH07Ci0KLSNpZiBVU0UoUERGS0lU
X0ZPUl9QREZET0NVTUVOVElNQUdFKQotICAgIFJldGFpblB0cjxQREZEb2N1bWVudD4gbV9kb2N1
bWVudDsKLSNlbHNlCi0gICAgUmV0YWluUHRyPENHUERGRG9jdW1lbnRSZWY+IG1fZG9jdW1lbnQ7
Ci0jZW5kaWYKLQotICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gbV9jYWNoZWRJbWFnZUJ1ZmZlcjsK
LSAgICBGbG9hdFJlY3QgbV9jYWNoZWRJbWFnZVJlY3Q7Ci0gICAgQWZmaW5lVHJhbnNmb3JtIG1f
Y2FjaGVkVHJhbnNmb3JtOwotICAgIEZsb2F0UmVjdCBtX2NhY2hlZERlc3RpbmF0aW9uUmVjdDsK
LSAgICBGbG9hdFJlY3QgbV9jYWNoZWRTb3VyY2VSZWN0OwotICAgIHNpemVfdCBtX2NhY2hlZEJ5
dGVzIHsgMCB9OwotICAgIHVuc2lnbmVkIG1fY2FjaGluZ0NvdW50Rm9yVGVzdGluZyB7IDAgfTsK
LQotICAgIEZsb2F0UmVjdCBtX2Nyb3BCb3g7Ci0gICAgaW50IG1fcm90YXRpb25EZWdyZWVzIHsg
MCB9OyAvLyBDYW4gb25seSBiZSAwLCA5MCwgMTgwLCBvciAyNzAgZGVncmVlcy4KLSAgICBib29s
IG1faGFzUGFnZSB7IGZhbHNlIH07Ci19OwotCi19Ci0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
SU1BR0UoUERGRG9jdW1lbnRJbWFnZSkKLQotI2VuZGlmIC8vIFVTRShDRykKLQotI2VuZGlmIC8v
IFBERkRvY3VtZW50SW1hZ2VfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRl
cmVyQ29yZUltYWdlLm1tCmluZGV4IDM4ZGU4NTUyZjFlNDZhMWQzNzBhZTZkYzI3ODlhMWVjNjY3
NGJhMTIuLmViNzlkZGEzZTc2YTRlMGFmZWZhOWRkNmQxNmYxN2YzZGJjMTM4NzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZl
Y3RSZW5kZXJlckNvcmVJbWFnZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW0KQEAgLTM2LDEy
ICszNiwxNCBAQAogI2ltcG9ydCAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW1wb3J0ICJHcmFwaGlj
c0NvbnRleHRDRy5oIgogI2ltcG9ydCAiSW1hZ2VCdWZmZXIuaCIKKyNpbXBvcnQgIkxvZ2dpbmcu
aCIKICNpbXBvcnQgIlBsYXRmb3JtSW1hZ2VCdWZmZXIuaCIKICNpbXBvcnQgIlNvdXJjZUdyYXBo
aWMuaCIKICNpbXBvcnQgPENvcmVJbWFnZS9DSUNvbnRleHQuaD4KICNpbXBvcnQgPENvcmVJbWFn
ZS9DSUZpbHRlci5oPgogI2ltcG9ydCA8Q29yZUltYWdlL0NvcmVJbWFnZS5oPgogI2ltcG9ydCA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKaW5kZXggYmJm
Yzg1NWQ1ZDZlZjY4OTE1OWI0YTVmMjI4MTQ4NTFhNDZhYzc1OC4uZjE2OTY1NTE3NzQ2NzE3NjFk
YzUzYzliYWJhOTkwMjY2YThhMDM5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCkBAIC0y
MzgsNiArMjM4LDggQEAgdm9pZCBEaXNwbGF5TGlzdDo6YXBwZW5kKEl0ZW1IYW5kbGUgaXRlbSkK
ICAgICAgICAgcmV0dXJuIGFwcGVuZDxEcmF3SW1hZ2VCdWZmZXI+KGl0ZW0uZ2V0PERyYXdJbWFn
ZUJ1ZmZlcj4oKSk7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOgogICAgICAg
ICByZXR1cm4gYXBwZW5kPERyYXdOYXRpdmVJbWFnZT4oaXRlbS5nZXQ8RHJhd05hdGl2ZUltYWdl
PigpKTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlUERGRG9jdW1lbnQ6CisgICAgICAg
IHJldHVybiBhcHBlbmQ8RHJhd05hdGl2ZVBERkRvY3VtZW50PihpdGVtLmdldDxEcmF3TmF0aXZl
UERGRG9jdW1lbnQ+KCkpOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgogICAgICAg
ICByZXR1cm4gYXBwZW5kPERyYXdQYXR0ZXJuPihpdGVtLmdldDxEcmF3UGF0dGVybj4oKSk7CiAg
ICAgY2FzZSBJdGVtVHlwZTo6RHJhd1JlY3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCmluZGV4IDdm
NjA3OGY4ODRmYzM1YzRmNWE4Mzg0ZTVmMjg4ZTM3MTg4NGExN2UuLmNlMGFlMjgwNzNmZjQ1NjY1
YWRhN2IwNmQ5ZjcwMGM3YzFjZTY1YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCkBAIC0zMCw2
ICszMCw3IEBACiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0LmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKKyNpbmNsdWRlICJOYXRpdmVQREZEb2N1
bWVudC5oIgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hT
ZXQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KQEAgLTc4LDYgKzc5LDcgQEAgcHVi
bGljOgogCiAgICAgY29uc3QgSW1hZ2VCdWZmZXJIYXNoTWFwJiBpbWFnZUJ1ZmZlcnMoKSBjb25z
dCB7IHJldHVybiBtX2ltYWdlQnVmZmVyczsgfQogICAgIGNvbnN0IE5hdGl2ZUltYWdlSGFzaE1h
cCYgbmF0aXZlSW1hZ2VzKCkgY29uc3QgeyByZXR1cm4gbV9uYXRpdmVJbWFnZXM7IH0KKyAgICBj
b25zdCBOYXRpdmVQREZEb2N1bWVudEhhc2hNYXAmIG5hdGl2ZVBERkRvY3VtZW50cygpIGNvbnN0
IHsgcmV0dXJuIG1fbmF0aXZlUERGRG9jdW1lbnRzOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldEl0ZW1CdWZmZXJDbGllbnQoSXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQqKTsKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldEl0ZW1CdWZmZXJDbGllbnQoSXRlbUJ1ZmZlcldyaXRpbmdD
bGllbnQqKTsKQEAgLTE2NywxMSArMTY5LDE5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1
cm4gbWFrZVJlZihpbWFnZSk7CiAgICAgICAgIH0pOwogICAgIH0KLSAgICAKKworICAgIHZvaWQg
Y2FjaGVOYXRpdmVQREZEb2N1bWVudChOYXRpdmVQREZEb2N1bWVudCYgcGRmRG9jdW1lbnQpCisg
ICAgeworICAgICAgICBtX25hdGl2ZVBERkRvY3VtZW50cy5lbnN1cmUocGRmRG9jdW1lbnQucmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCksIFsmXSgpIHsKKyAgICAgICAgICAgIHJldHVybiBt
YWtlUmVmKHBkZkRvY3VtZW50KTsKKyAgICAgICAgfSk7CisgICAgfQorCiAgICAgc3RhdGljIGJv
b2wgc2hvdWxkRHVtcEZvckZsYWdzKEFzVGV4dEZsYWdzLCBJdGVtSGFuZGxlKTsKIAogICAgIElt
YWdlQnVmZmVySGFzaE1hcCBtX2ltYWdlQnVmZmVyczsKICAgICBOYXRpdmVJbWFnZUhhc2hNYXAg
bV9uYXRpdmVJbWFnZXM7CisgICAgTmF0aXZlUERGRG9jdW1lbnRIYXNoTWFwIG1fbmF0aXZlUERG
RG9jdW1lbnRzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJdGVtQnVmZmVyPiBtX2l0ZW1zOwogICAg
IFZlY3RvcjxPcHRpb25hbDxGbG9hdFJlY3Q+PiBtX2RyYXdpbmdJdGVtRXh0ZW50czsKICAgICBi
b29sIG1fdHJhY2tzRHJhd2luZ0l0ZW1FeHRlbnRzIHsgdHJ1ZSB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAppbmRleCBlNTI5MjRiMWEwMWUzZDMzNTM1MTU5
YTc5ZWNmNTJlZjc4MWZmZjY4Li4yZmU4ZDE5MjZlZGI3NzkzOTQxY2JiZTIyYjUxZTc3YzQ3ZDAw
NzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcApAQCAt
MTQ4LDYgKzE0OCwxMCBAQCB2b2lkIEl0ZW1IYW5kbGU6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCkKICAgICAgICAgZ2V0PERyYXdOYXRpdmVJbWFnZT4oKS5hcHBseShjb250ZXh0KTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlUERG
RG9jdW1lbnQ6IHsKKyAgICAgICAgZ2V0PERyYXdOYXRpdmVQREZEb2N1bWVudD4oKS5hcHBseShj
b250ZXh0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3
UGF0dGVybjogewogICAgICAgICBnZXQ8RHJhd1BhdHRlcm4+KCkuYXBwbHkoY29udGV4dCk7CiAg
ICAgICAgIHJldHVybjsKQEAgLTQyMCw2ICs0MjQsMTAgQEAgdm9pZCBJdGVtSGFuZGxlOjpkZXN0
cm95KCkKICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGli
bGU8RHJhd05hdGl2ZUltYWdlPjo6dmFsdWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAg
IGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVQREZEb2N1bWVudDogeworICAgICAgICBzdGF0aWNf
YXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxEcmF3TmF0aXZlUERGRG9jdW1l
bnQ+Ojp2YWx1ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgY2FzZSBJdGVtVHlwZTo6
RHJhd1BhdHRlcm46IHsKICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9k
ZXN0cnVjdGlibGU8RHJhd1BhdHRlcm4+Ojp2YWx1ZSk7CiAgICAgICAgIHJldHVybjsKQEAgLTU3
Nyw2ICs1ODUsMTAgQEAgdm9pZCBJdGVtSGFuZGxlOjpjb3B5VG8oSXRlbUhhbmRsZSBkZXN0aW5h
dGlvbikgY29uc3QKICAgICAgICAgbmV3IChpdGVtT2Zmc2V0KSBEcmF3TmF0aXZlSW1hZ2UoZ2V0
PERyYXdOYXRpdmVJbWFnZT4oKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgY2FzZSBJ
dGVtVHlwZTo6RHJhd05hdGl2ZVBERkRvY3VtZW50OiB7CisgICAgICAgIG5ldyAoaXRlbU9mZnNl
dCkgRHJhd05hdGl2ZVBERkRvY3VtZW50KGdldDxEcmF3TmF0aXZlUERGRG9jdW1lbnQ+KCkpOwor
ICAgICAgICByZXR1cm47CisgICAgfQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOiB7
CiAgICAgICAgIG5ldyAoaXRlbU9mZnNldCkgRHJhd1BhdHRlcm4oZ2V0PERyYXdQYXR0ZXJuPigp
KTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUu
Y3BwCmluZGV4IDc3YzljZDQxY2RkZGU2ZjczNWUzYzk4MzExMWJjODk4MTQ3Y2MzY2YuLmI1MDEw
N2M5OTdiY2U0YTllNjI0MGU2MmM3NzJhMWQxZjNlMDgyYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtVHlwZS5jcHAKQEAgLTg2LDYgKzg2LDggQEAgc3RhdGljIHNpemVfdCBz
aXplT2ZJdGVtSW5CeXRlcyhJdGVtVHlwZSB0eXBlKQogICAgICAgICByZXR1cm4gc2l6ZW9mKERy
YXdJbWFnZUJ1ZmZlcik7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOgogICAg
ICAgICByZXR1cm4gc2l6ZW9mKERyYXdOYXRpdmVJbWFnZSk7CisgICAgY2FzZSBJdGVtVHlwZTo6
RHJhd05hdGl2ZVBERkRvY3VtZW50OgorICAgICAgICByZXR1cm4gc2l6ZW9mKERyYXdOYXRpdmVQ
REZEb2N1bWVudCk7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46CiAgICAgICAgIHJl
dHVybiBzaXplb2YoRHJhd1BhdHRlcm4pOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdSZWN0OgpA
QCAtMjA4LDYgKzIxMCw3IEBAIGJvb2wgaXNEcmF3aW5nSXRlbShJdGVtVHlwZSB0eXBlKQogICAg
IGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lOgogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lc0Zv
clRleHQ6CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOgorICAgIGNhc2UgSXRl
bVR5cGU6OkRyYXdOYXRpdmVQREZEb2N1bWVudDoKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0
dGVybjoKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0aDoKICAgICBjYXNlIEl0ZW1UeXBlOjpE
cmF3UmVjdDoKQEAgLTI4MSw2ICsyODQsNyBAQCBib29sIGlzSW5saW5lSXRlbShJdGVtVHlwZSB0
eXBlKQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdFbGxpcHNlOgogICAgIGNhc2UgSXRlbVR5cGU6
OkRyYXdJbWFnZUJ1ZmZlcjoKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6Cisg
ICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZVBERkRvY3VtZW50OgogICAgIGNhc2UgSXRlbVR5
cGU6OkRyYXdQYXR0ZXJuOgogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lOgogICAgIGNhc2Ug
SXRlbVR5cGU6OkRyYXdSZWN0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmgK
aW5kZXggNzE3ODg3N2I1ZGQxMjhlZWYzMzBiM2ZjMmRkNjk2MzZiZGUzMjQ0OS4uNGJkMjJmNzBh
YzllOTQ5NGIyMmRiZTk2MzBjNzQ0ZjQ5YzU0MzQ5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtVHlwZS5oCkBAIC01NSw2ICs1NSw3IEBAIGVudW0gY2xhc3MgSXRlbVR5cGUgOiB1
aW50OF90IHsKICAgICBEcmF3R2x5cGhzLAogICAgIERyYXdJbWFnZUJ1ZmZlciwKICAgICBEcmF3
TmF0aXZlSW1hZ2UsCisgICAgRHJhd05hdGl2ZVBERkRvY3VtZW50LAogICAgIERyYXdQYXR0ZXJu
LAogICAgIERyYXdSZWN0LAogICAgIERyYXdMaW5lLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbXMuY3BwCmluZGV4IDljMWUzYjVmYjZhZWJiMDY0Y2I0MjM3YTRkYTJlZmJmZTk5MDg0ZDAu
LjA5ZmY2YjEyNzBmZTg4MzdmM2M2NmVjNDk3NzNiNDVlMzA4NTYzYWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKQEAgLTQ1OCw2ICs0NTgsMjUgQEAgc3RhdGljIFRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdOYXRpdmVJbWFnZSYg
aXRlbSkKICAgICByZXR1cm4gdHM7CiB9CiAKK05PX1JFVFVSTl9EVUVfVE9fQVNTRVJUIHZvaWQg
RHJhd05hdGl2ZVBERkRvY3VtZW50OjphcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdAorewor
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit2b2lkIERyYXdOYXRpdmVQREZEb2N1bWVu
dDo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBOYXRpdmVQREZEb2N1bWVudCYgcGRm
RG9jdW1lbnQpIGNvbnN0Cit7CisgICAgcGRmRG9jdW1lbnQuZHJhdyhjb250ZXh0LCBtX2ltYWdl
U2l6ZSwgbV9kZXN0aW5hdGlvblJlY3QsIG1fc3JjUmVjdCwgbV9vcHRpb25zKTsKK30KKworc3Rh
dGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdOYXRp
dmVQREZEb2N1bWVudCYgaXRlbSkKK3sKKyAgICAvLyBGSVhNRTogZHVtcCBtb3JlIHN0dWZmLgor
ICAgIHRzLmR1bXBQcm9wZXJ0eSgicGRmLWRvY3VtZW50LWlkZW50aWZpZXIiLCBpdGVtLnBkZkRv
Y3VtZW50SWRlbnRpZmllcigpKTsKKyAgICB0cy5kdW1wUHJvcGVydHkoInNvdXJjZS1yZWN0Iiwg
aXRlbS5zb3VyY2UoKSk7CisgICAgdHMuZHVtcFByb3BlcnR5KCJkZXN0LXJlY3QiLCBpdGVtLmRl
c3RpbmF0aW9uUmVjdCgpKTsKKyAgICByZXR1cm4gdHM7Cit9CisKIERyYXdQYXR0ZXJuOjpEcmF3
UGF0dGVybihSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VJZGVudGlmaWVyLCBjb25z
dCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNm
b3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKICAgICA6IG1faW1hZ2VJZGVudGlm
aWVyKGltYWdlSWRlbnRpZmllcikKICAgICAsIG1faW1hZ2VTaXplKGltYWdlU2l6ZSkKQEAgLTEw
MzYsNiArMTA1NSw3IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0m
IHRzLCBJdGVtVHlwZSB0eXBlKQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdHbHlwaHM6IHRzIDw8
ICJkcmF3LWdseXBocyI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZl
cjogdHMgPDwgImRyYXctaW1hZ2UtYnVmZmVyIjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6
RHJhd05hdGl2ZUltYWdlOiB0cyA8PCAiZHJhdy1uYXRpdmUtaW1hZ2UiOyBicmVhazsKKyAgICBj
YXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlUERGRG9jdW1lbnQ6IHRzIDw8ICJkcmF3LW5hdGl2ZS1w
ZGYtZG9jdW1lbnQiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVybjogdHMg
PDwgImRyYXctcGF0dGVybiI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdSZWN0OiB0
cyA8PCAiZHJhdy1yZWN0IjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xpbmU6IHRz
IDw8ICJkcmF3LWxpbmUiOyBicmVhazsKQEAgLTExNTQsNiArMTE3NCw5IEBAIFRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIEl0ZW1IYW5kbGUgaXRlbSkKICAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6CiAgICAgICAgIHRzIDw8IGl0ZW0uZ2V0PERyYXdOYXRp
dmVJbWFnZT4oKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2
ZVBERkRvY3VtZW50OgorICAgICAgICB0cyA8PCBpdGVtLmdldDxEcmF3TmF0aXZlUERGRG9jdW1l
bnQ+KCk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgog
ICAgICAgICB0cyA8PCBpdGVtLmdldDxEcmF3UGF0dGVybj4oKTsKICAgICAgICAgYnJlYWs7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAppbmRleCA3YzEzZTNlNWNlMjVlNjU3Njk1ZTE5
Njg3ZGFlZDliNmZkNWIzOTEzLi4yNDY2MDM2Y2E3ZjhiMmM0MWExYTkxOWJhNmU3MDBmNTZhYzIy
N2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKQEAgLTEwNzYsNiArMTA3Niwz
OSBAQCBwcml2YXRlOgogICAgIEltYWdlUGFpbnRpbmdPcHRpb25zIG1fb3B0aW9uczsKIH07CiAK
K2NsYXNzIERyYXdOYXRpdmVQREZEb2N1bWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0
ZXhwciBJdGVtVHlwZSBpdGVtVHlwZSA9IEl0ZW1UeXBlOjpEcmF3TmF0aXZlUERGRG9jdW1lbnQ7
CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW5saW5lSXRlbSA9IHRydWU7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBib29sIGlzRHJhd2luZ0l0ZW0gPSB0cnVlOworCisgICAgRHJhd05hdGl2
ZVBERkRvY3VtZW50KFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBwZGZEb2N1bWVudElkZW50
aWZpZXIsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JiBvcHRpb25zKQorICAgICAgICA6IG1fcGRmRG9jdW1lbnRJZGVudGlmaWVyKHBkZkRvY3VtZW50
SWRlbnRpZmllcikKKyAgICAgICAgLCBtX2ltYWdlU2l6ZShpbWFnZVNpemUpCisgICAgICAgICwg
bV9kZXN0aW5hdGlvblJlY3QoZGVzdFJlY3QpCisgICAgICAgICwgbV9zcmNSZWN0KHNyY1JlY3Qp
CisgICAgICAgICwgbV9vcHRpb25zKG9wdGlvbnMpCisgICAgeworICAgIH0KKworICAgIFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciBwZGZEb2N1bWVudElkZW50aWZpZXIoKSBjb25zdCB7IHJl
dHVybiBtX3BkZkRvY3VtZW50SWRlbnRpZmllcjsgfQorICAgIGNvbnN0IEZsb2F0UmVjdCYgc291
cmNlKCkgY29uc3QgeyByZXR1cm4gbV9zcmNSZWN0OyB9CisgICAgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0aW5hdGlvblJlY3QoKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uUmVjdDsgfQorCisg
ICAgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBj
b25zdDsKKyAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYsIE5hdGl2ZVBERkRvY3VtZW50
JikgY29uc3Q7CisKKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0
IHsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfQorICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxC
b3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlv
blJlY3Q7IH0KKworcHJpdmF0ZToKKyAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgbV9w
ZGZEb2N1bWVudElkZW50aWZpZXI7CisgICAgRmxvYXRTaXplIG1faW1hZ2VTaXplOworICAgIEZs
b2F0UmVjdCBtX2Rlc3RpbmF0aW9uUmVjdDsKKyAgICBGbG9hdFJlY3QgbV9zcmNSZWN0OworICAg
IEltYWdlUGFpbnRpbmdPcHRpb25zIG1fb3B0aW9uczsKK307CisKIGNsYXNzIERyYXdQYXR0ZXJu
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIEl0ZW1UeXBlIGl0ZW1UeXBlID0gSXRl
bVR5cGU6OkRyYXdQYXR0ZXJuOwpAQCAtMjI4Niw2ICsyMzE5LDcgQEAgdGVtcGxhdGU8PiBzdHJ1
Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU+IHsKICAgICBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdHbHlwaHMsCiAgICAgV2ViQ29yZTo6RGlz
cGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXIsCiAgICAgV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6Okl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2UsCisgICAgV2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW1UeXBlOjpEcmF3TmF0aXZlUERGRG9jdW1lbnQsCiAgICAgV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6Okl0ZW1UeXBlOjpEcmF3UGF0dGVybiwKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
SXRlbVR5cGU6OkRyYXdSZWN0LAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6
RHJhd0xpbmUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXgg
ZjUwMDA1YTQ1NGIzOWY0NWNkMGZmNzFhZDdkMTljYTFjZDdjNzBlZS4uNzczYzU1Mjk2YTUxNzg4
ZTBjMzNkMzEzMmZlN2Y1MTFlNjA2NTZmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmNwcApAQCAtMTgyLDYgKzE4MiwxNCBAQCB2b2lkIFJlY29yZGVyOjpkcmF3TmF0
aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwg
YwogICAgIGFwcGVuZDxEcmF3TmF0aXZlSW1hZ2U+KGltYWdlLnJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcigpLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKIH0KIAor
dm9pZCBSZWNvcmRlcjo6ZHJhd05hdGl2ZVBERkRvY3VtZW50KE5hdGl2ZVBERkRvY3VtZW50JiBw
ZGZEb2N1bWVudCwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmIG9wdGlvbnMpCit7CisgICAgaWYgKG1fZGVsZWdhdGUpCisgICAgICAgIG1fZGVsZWdh
dGUtPmNhY2hlTmF0aXZlUERGRG9jdW1lbnQocGRmRG9jdW1lbnQpOworICAgIG1fZGlzcGxheUxp
c3QuY2FjaGVOYXRpdmVQREZEb2N1bWVudChwZGZEb2N1bWVudCk7CisgICAgYXBwZW5kPERyYXdO
YXRpdmVQREZEb2N1bWVudD4ocGRmRG9jdW1lbnQucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KCksIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOworfQorCiB2b2lkIFJl
Y29yZGVyOjpkcmF3UGF0dGVybihOYXRpdmVJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYg
aW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRp
bGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZs
b2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmIChtX2RlbGVnYXRlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKaW5kZXggNzdjYmEzMzZkYzViOTRmNGRiMjFkYTY2
MTEwN2JkNGMzMmNmNzA4NS4uNDJmZTRlNjBjYWU1MTE3ZmMxNTNhOWY3ZjYwZTUwNzgwNDU4MjNi
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCkBAIC02Nyw2ICs2Nyw3
IEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxBcHBlbmRJdGVtT2ZUeXBlKEl0
ZW1UeXBlKSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEFwcGVuZEl0ZW1PZlR5cGUoSXRl
bVR5cGUpIHsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgY2FjaGVOYXRpdmVJbWFnZShOYXRpdmVJ
bWFnZSYpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgY2FjaGVOYXRpdmVQREZEb2N1bWVudChO
YXRpdmVQREZEb2N1bWVudCYpIHsgfQogICAgIH07CiAKIHByaXZhdGU6CkBAIC0xMDQsNiArMTA1
LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdl
QnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBz
b3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBk
cmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd05hdGl2ZVBE
RkRvY3VtZW50KE5hdGl2ZVBERkRvY3VtZW50JiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdQYXR0ZXJu
KE5hdGl2ZUltYWdlJiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZHJhd1Jl
Y3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKSBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlcGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcAppbmRleCA5YjcxODllOTg5ZGIy
Y2EzN2FlZGM0MDZkMjJlMDEzZTRjODRiNzlhLi43OTAxOGI2NmY5OTk2OGMzZjAxZjVjZmViNmU0
MjM0YTFmZTQ5YzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3Bw
CkBAIC0zNCwxMSArMzQsMTIgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBEaXNw
bGF5TGlzdCB7CiAKLVJlcGxheWVyOjpSZXBsYXllcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IERpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgY29uc3QgSW1hZ2VCdWZmZXJIYXNoTWFw
KiBpbWFnZUJ1ZmZlcnMsIGNvbnN0IE5hdGl2ZUltYWdlSGFzaE1hcCogbmF0aXZlSW1hZ2VzLCBE
ZWxlZ2F0ZSogZGVsZWdhdGUpCitSZXBsYXllcjo6UmVwbGF5ZXIoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIGNvbnN0IEltYWdlQnVmZmVy
SGFzaE1hcCogaW1hZ2VCdWZmZXJzLCBjb25zdCBOYXRpdmVJbWFnZUhhc2hNYXAqIG5hdGl2ZUlt
YWdlcywgY29uc3QgTmF0aXZlUERGRG9jdW1lbnRIYXNoTWFwKiBuYXRpdmVQREZEb2N1bWVudHMs
IERlbGVnYXRlKiBkZWxlZ2F0ZSkKICAgICA6IG1fY29udGV4dChjb250ZXh0KQogICAgICwgbV9k
aXNwbGF5TGlzdChkaXNwbGF5TGlzdCkKICAgICAsIG1faW1hZ2VCdWZmZXJzKGltYWdlQnVmZmVy
cyA/ICppbWFnZUJ1ZmZlcnMgOiBtX2Rpc3BsYXlMaXN0LmltYWdlQnVmZmVycygpKQogICAgICwg
bV9uYXRpdmVJbWFnZXMobmF0aXZlSW1hZ2VzID8gKm5hdGl2ZUltYWdlcyA6IG1fZGlzcGxheUxp
c3QubmF0aXZlSW1hZ2VzKCkpCisgICAgLCBtX25hdGl2ZVBERkRvY3VtZW50cyhuYXRpdmVQREZE
b2N1bWVudHMgPyAqbmF0aXZlUERGRG9jdW1lbnRzIDogbV9kaXNwbGF5TGlzdC5uYXRpdmVQREZE
b2N1bWVudHMoKSkKICAgICAsIG1fZGVsZWdhdGUoZGVsZWdhdGUpCiB7CiB9CkBAIC02Nyw2ICs2
OCwxNiBAQCBpbmxpbmUgc3RhdGljIGJvb2wgYXBwbHlOYXRpdmVJbWFnZUl0ZW0oR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBOYXRpdmVJbQogICAgIHJldHVybiB0cnVlOwogfQogCitp
bmxpbmUgc3RhdGljIGJvb2wgYXBwbHlEcmF3TmF0aXZlUERGRG9jdW1lbnRJdGVtKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgTmF0aXZlUERGRG9jdW1lbnRIYXNoTWFwJiBuYXRpdmVQ
REZEb2N1bWVudHMsIEl0ZW1IYW5kbGUgaXRlbSkKK3sKKyAgICBpZiAoIWl0ZW0uaXM8RHJhd05h
dGl2ZVBERkRvY3VtZW50PigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgYXV0byYgbmF0
aXZlUERGRG9jdW1lbnRJdGVtID0gaXRlbS5nZXQ8RHJhd05hdGl2ZVBERkRvY3VtZW50PigpOwor
ICAgIGlmIChhdXRvKiBwZGZEb2N1bWVudCA9IG5hdGl2ZVBERkRvY3VtZW50cy5nZXQobmF0aXZl
UERGRG9jdW1lbnRJdGVtLnBkZkRvY3VtZW50SWRlbnRpZmllcigpKSkKKyAgICAgICAgbmF0aXZl
UERGRG9jdW1lbnRJdGVtLmFwcGx5KGNvbnRleHQsICpwZGZEb2N1bWVudCk7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKIHZvaWQgUmVwbGF5ZXI6OmFwcGx5SXRlbShJdGVtSGFuZGxlIGl0ZW0pCiB7
CiAgICAgaWYgKG1fZGVsZWdhdGUgJiYgbV9kZWxlZ2F0ZS0+YXBwbHkoaXRlbSwgbV9jb250ZXh0
KSkKQEAgLTgyLDYgKzkzLDkgQEAgdm9pZCBSZXBsYXllcjo6YXBwbHlJdGVtKEl0ZW1IYW5kbGUg
aXRlbSkKICAgICBpZiAoYXBwbHlOYXRpdmVJbWFnZUl0ZW08RHJhd1BhdHRlcm4+KG1fY29udGV4
dCwgbV9uYXRpdmVJbWFnZXMsIGl0ZW0pKQogICAgICAgICByZXR1cm47CiAKKyAgICBpZiAoYXBw
bHlEcmF3TmF0aXZlUERGRG9jdW1lbnRJdGVtKG1fY29udGV4dCwgbV9uYXRpdmVQREZEb2N1bWVu
dHMsIGl0ZW0pKQorICAgICAgICByZXR1cm47CisKICAgICBpdGVtLmFwcGx5KG1fY29udGV4dCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oCmluZGV4IDJjMDE5ZWUw
Y2M4YTM2ZTJjNGY1ZDI1MzAyMDBmODc1ZDE2YWRlMDAuLjJhOGZiNmUyNDBmYWE0MTYwZGM3NmRm
MzVhODIxODA3ZGJkMWZhZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIu
aApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBSZXBsYXllciB7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoUmVwbGF5ZXIpOwogcHVibGljOgogICAgIGNsYXNzIERlbGVnYXRlOwotICAgIFdFQkNP
UkVfRVhQT1JUIFJlcGxheWVyKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IERpc3BsYXlMaXN0Jiwg
Y29uc3QgSW1hZ2VCdWZmZXJIYXNoTWFwKiA9IG51bGxwdHIsIGNvbnN0IE5hdGl2ZUltYWdlSGFz
aE1hcCogPSBudWxscHRyLCBEZWxlZ2F0ZSogPSBudWxscHRyKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBSZXBsYXllcihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBEaXNwbGF5TGlzdCYsIGNvbnN0IElt
YWdlQnVmZmVySGFzaE1hcCogPSBudWxscHRyLCBjb25zdCBOYXRpdmVJbWFnZUhhc2hNYXAqID0g
bnVsbHB0ciwgY29uc3QgTmF0aXZlUERGRG9jdW1lbnRIYXNoTWFwKiA9IG51bGxwdHIsIERlbGVn
YXRlKiA9IG51bGxwdHIpOwogICAgIFdFQkNPUkVfRVhQT1JUIH5SZXBsYXllcigpOwogCiAgICAg
V0VCQ09SRV9FWFBPUlQgc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0PiByZXBsYXkoY29uc3Qg
RmxvYXRSZWN0JiBpbml0aWFsQ2xpcCA9IHsgfSwgYm9vbCB0cmFja1JlcGxheUxpc3QgPSBmYWxz
ZSk7CkBAIC02MCw2ICs2MCw3IEBAIHByaXZhdGU6CiAgICAgY29uc3QgRGlzcGxheUxpc3QmIG1f
ZGlzcGxheUxpc3Q7CiAgICAgY29uc3QgSW1hZ2VCdWZmZXJIYXNoTWFwJiBtX2ltYWdlQnVmZmVy
czsKICAgICBjb25zdCBOYXRpdmVJbWFnZUhhc2hNYXAmIG1fbmF0aXZlSW1hZ2VzOworICAgIGNv
bnN0IE5hdGl2ZVBERkRvY3VtZW50SGFzaE1hcCYgbV9uYXRpdmVQREZEb2N1bWVudHM7CiAgICAg
RGVsZWdhdGUqIG1fZGVsZWdhdGU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvTmF0aXZlUERGRG9jdW1lbnRNYWMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTmF0aXZlUERGRG9jdW1lbnRNYWMubW0KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMTU3N2UwODMyOTVhNTc3NGZhZDZmOGVjNWRmMmRkZGE0OWNiOWJlNwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9OYXRpdmVQREZE
b2N1bWVudE1hYy5tbQpAQCAtMCwwICsxLDEwNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiTmF0aXZl
UERGRG9jdW1lbnQuaCIKKworI2lmIEVOQUJMRShQREZLSVRfRk9SX1BERkRPQ1VNRU5USU1BR0Up
CisKKyNpbXBvcnQgIkxvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5oIgorI2ltcG9ydCAiU2hh
cmVkQnVmZmVyLmgiCisjaW1wb3J0IDxRdWFydHovUXVhcnR6Lmg+CisjaW1wb3J0IDxvYmpjL29i
amMtY2xhc3MuaD4KKyNpbXBvcnQgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CisjaW1w
b3J0IDx3dGYvU29mdExpbmtpbmcuaD4KKworU09GVF9MSU5LX0ZSQU1FV09SS19JTl9VTUJSRUxM
QShRdWFydHosIFBERktpdCkKK1NPRlRfTElOS19DTEFTUyhQREZLaXQsIFBERkRvY3VtZW50KQor
CitleHRlcm4gIkMiIHsKK2Jvb2wgQ0dDb250ZXh0R2V0QWxsb3dzRm9udFNtb290aGluZyhDR0Nv
bnRleHRSZWYpOworYm9vbCBDR0NvbnRleHRHZXRBbGxvd3NGb250U3VicGl4ZWxRdWFudGl6YXRp
b24oQ0dDb250ZXh0UmVmKTsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWZQdHI8TmF0
aXZlUERGRG9jdW1lbnQ+IE5hdGl2ZVBERkRvY3VtZW50OjpjcmVhdGUoU2hhcmVkQnVmZmVyJiBk
YXRhLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKQoreworICAgIGF1dG8gZG9jdW1lbnQgPSBhZG9wdE5TKFthbGxvY1BERkRvY3VtZW50SW5z
dGFuY2UoKSBpbml0V2l0aERhdGE6ZGF0YS5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOworICAgIGlm
ICghZG9jdW1lbnQpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgTmF0aXZlUERGRG9jdW1lbnQoZGF0YSwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
LCBXVEZNb3ZlKGRvY3VtZW50KSkpOworfQorCit2b2lkIE5hdGl2ZVBERkRvY3VtZW50Ojpjb21w
dXRlQm91bmRzRm9yQ3VycmVudFBhZ2UoKQoreworICAgIFBERlBhZ2UgKnBkZlBhZ2UgPSBbbV9w
bGF0Zm9ybVBERkRvY3VtZW50IHBhZ2VBdEluZGV4OjBdOworCisgICAgbV9jcm9wQm94ID0gW3Bk
ZlBhZ2UgYm91bmRzRm9yQm94OmtQREZEaXNwbGF5Qm94Q3JvcEJveF07CisgICAgbV9yb3RhdGlv
bkRlZ3JlZXMgPSBbcGRmUGFnZSByb3RhdGlvbl07Cit9CisKK3Vuc2lnbmVkIE5hdGl2ZVBERkRv
Y3VtZW50OjpwYWdlQ291bnQoKSBjb25zdAoreworICAgIHJldHVybiBbbV9wbGF0Zm9ybVBERkRv
Y3VtZW50IHBhZ2VDb3VudF07Cit9CisKK3ZvaWQgTmF0aXZlUERGRG9jdW1lbnQ6OmRyYXdQREZQ
YWdlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRTaXplJikKK3sKKyAgICBM
b2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgbG9jYWxDdXJyZW50Q29udGV4dChjb250ZXh0KTsK
KworICAgIC8vIFRoZXNlIHN0YXRlcyBjYW4gYmUgbXV0YXRlZCBieSBQREZLaXQgYnV0IGFyZSBu
b3Qgc2F2ZWQKKyAgICAvLyBvbiB0aGUgY29udGV4dCdzIHN0YXRlIHN0YWNrLiAoPHJkYXI6Ly9w
cm9ibGVtLzE0OTUxNzU5JjM1NzM4MTgxPikKKyAgICBib29sIGFsbG93c1Ntb290aGluZyA9IENH
Q29udGV4dEdldEFsbG93c0ZvbnRTbW9vdGhpbmcoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSk7
CisgICAgYm9vbCBhbGxvd3NTdWJwaXhlbFF1YW50aXphdGlvbiA9IENHQ29udGV4dEdldEFsbG93
c0ZvbnRTdWJwaXhlbFF1YW50aXphdGlvbihjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpKTsKKyAg
ICBib29sIGFsbG93c1N1YnBpeGVsUG9zaXRpb25pbmcgPSBDR0NvbnRleHRHZXRBbGxvd3NGb250
U3VicGl4ZWxQb3NpdGlvbmluZyhjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpKTsKKworICAgIEFM
TE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCisgICAgW1ttX3BsYXRmb3JtUERGRG9j
dW1lbnQgcGFnZUF0SW5kZXg6MF0gZHJhd1dpdGhCb3g6a1BERkRpc3BsYXlCb3hDcm9wQm94XTsK
KyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKKworICAgIENHQ29udGV4dFNl
dEFsbG93c0ZvbnRTbW9vdGhpbmcoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgYWxsb3dzU21v
b3RoaW5nKTsKKyAgICBDR0NvbnRleHRTZXRBbGxvd3NGb250U3VicGl4ZWxRdWFudGl6YXRpb24o
Y29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgYWxsb3dzU3VicGl4ZWxRdWFudGl6YXRpb24pOwor
ICAgIENHQ29udGV4dFNldEFsbG93c0ZvbnRTdWJwaXhlbFBvc2l0aW9uaW5nKGNvbnRleHQucGxh
dGZvcm1Db250ZXh0KCksIGFsbG93c1N1YnBpeGVsUG9zaXRpb25pbmcpOworfQorCitSZXRhaW5Q
dHI8Q0ZNdXRhYmxlRGF0YVJlZj4gTmF0aXZlUERGRG9jdW1lbnQ6OmNvbnZlcnRQb3N0U2NyaXB0
RGF0YVRvUERGKFJldGFpblB0cjxDRkRhdGFSZWY+JiYgcG9zdFNjcmlwdERhdGEpCit7CisgICAg
Ly8gQ29udmVydCBQb3N0U2NyaXB0IHRvIFBERiB1c2luZyB0aGUgUXVhcnR6IDJEIEFQSS4KKyAg
ICAvLyBodHRwOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL0dyYXBoaWNzSW1h
Z2luZy9Db25jZXB0dWFsL2RyYXdpbmd3aXRocXVhcnR6MmQvZHFfcHNfY29udmVydC9jaGFwdGVy
XzE2X3NlY3Rpb25fMS5odG1sCisKKyAgICBDR1BTQ29udmVydGVyQ2FsbGJhY2tzIGNhbGxiYWNr
cyA9IHsgfTsKKyAgICBhdXRvIGNvbnZlcnRlciA9IGFkb3B0Q0YoQ0dQU0NvbnZlcnRlckNyZWF0
ZSgwLCAmY2FsbGJhY2tzLCAwKSk7CisgICAgYXV0byBwcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRh
UHJvdmlkZXJDcmVhdGVXaXRoQ0ZEYXRhKHBvc3RTY3JpcHREYXRhLmdldCgpKSk7CisgICAgYXV0
byBwZGZEYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1
bHQsIDApKTsKKyAgICBhdXRvIGNvbnN1bWVyID0gYWRvcHRDRihDR0RhdGFDb25zdW1lckNyZWF0
ZVdpdGhDRkRhdGEocGRmRGF0YS5nZXQoKSkpOworCisgICAgQ0dQU0NvbnZlcnRlckNvbnZlcnQo
Y29udmVydGVyLmdldCgpLCBwcm92aWRlci5nZXQoKSwgY29uc3VtZXIuZ2V0KCksIDApOworICAg
IHJldHVybiBwZGZEYXRhOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBFTkFCTEUoUERGS0lUX0ZPUl9QREZET0NVTUVOVElNQUdFKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5t
bQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODNlNmFmN2IwMzg5MjgzOGMzYmZlYTFj
MGMxMWFhN2ZjZjhhNzdhOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJ
bWFnZU1hYy5tbQorKysgL2Rldi9udWxsCkBAIC0xLDg4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBv
cnQgIlBERkRvY3VtZW50SW1hZ2UuaCIKLQotI2lmIFVTRShQREZLSVRfRk9SX1BERkRPQ1VNRU5U
SU1BR0UpCi0KLSNpbXBvcnQgIkxvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dC5oIgotI2ltcG9y
dCAiU2hhcmVkQnVmZmVyLmgiCi0jaW1wb3J0IDxRdWFydHovUXVhcnR6Lmg+Ci0jaW1wb3J0IDxv
YmpjL29iamMtY2xhc3MuaD4KLSNpbXBvcnQgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+
Ci0jaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+Ci0jaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4K
LQotU09GVF9MSU5LX0ZSQU1FV09SS19JTl9VTUJSRUxMQShRdWFydHosIFBERktpdCkKLVNPRlRf
TElOS19DTEFTUyhQREZLaXQsIFBERkRvY3VtZW50KQotCi1leHRlcm4gIkMiIHsKLWJvb2wgQ0dD
b250ZXh0R2V0QWxsb3dzRm9udFNtb290aGluZyhDR0NvbnRleHRSZWYgY29udGV4dCk7Ci1ib29s
IENHQ29udGV4dEdldEFsbG93c0ZvbnRTdWJwaXhlbFF1YW50aXphdGlvbihDR0NvbnRleHRSZWYg
Y29udGV4dCk7Ci19Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBQREZEb2N1bWVudElt
YWdlOjpjcmVhdGVQREZEb2N1bWVudCgpCi17Ci0gICAgbV9kb2N1bWVudCA9IGFkb3B0TlMoW2Fs
bG9jUERGRG9jdW1lbnRJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpkYXRhKCktPmNyZWF0ZU5TRGF0
YSgpLmdldCgpXSk7Ci19Ci0KLXZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y29tcHV0ZUJvdW5kc0Zv
ckN1cnJlbnRQYWdlKCkKLXsKLSAgICBQREZQYWdlICpwZGZQYWdlID0gW21fZG9jdW1lbnQgcGFn
ZUF0SW5kZXg6MF07Ci0KLSAgICBtX2Nyb3BCb3ggPSBbcGRmUGFnZSBib3VuZHNGb3JCb3g6a1BE
RkRpc3BsYXlCb3hDcm9wQm94XTsKLSAgICBtX3JvdGF0aW9uRGVncmVlcyA9IFtwZGZQYWdlIHJv
dGF0aW9uXTsKLX0KLQotdW5zaWduZWQgUERGRG9jdW1lbnRJbWFnZTo6cGFnZUNvdW50KCkgY29u
c3QKLXsKLSAgICByZXR1cm4gW21fZG9jdW1lbnQgcGFnZUNvdW50XTsKLX0KLQotdm9pZCBQREZE
b2N1bWVudEltYWdlOjpkcmF3UERGUGFnZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCi17Ci0g
ICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGxvY2FsQ3VycmVudENvbnRleHQoY29udGV4
dCk7Ci0KLSAgICAvLyBUaGVzZSBzdGF0ZXMgY2FuIGJlIG11dGF0ZWQgYnkgUERGS2l0IGJ1dCBh
cmUgbm90IHNhdmVkCi0gICAgLy8gb24gdGhlIGNvbnRleHQncyBzdGF0ZSBzdGFjay4gKDxyZGFy
Oi8vcHJvYmxlbS8xNDk1MTc1OSYzNTczODE4MT4pCi0gICAgYm9vbCBhbGxvd3NTbW9vdGhpbmcg
PSBDR0NvbnRleHRHZXRBbGxvd3NGb250U21vb3RoaW5nKGNvbnRleHQucGxhdGZvcm1Db250ZXh0
KCkpOwotICAgIGJvb2wgYWxsb3dzU3VicGl4ZWxRdWFudGl6YXRpb24gPSBDR0NvbnRleHRHZXRB
bGxvd3NGb250U3VicGl4ZWxRdWFudGl6YXRpb24oY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSk7
Ci0gICAgYm9vbCBhbGxvd3NTdWJwaXhlbFBvc2l0aW9uaW5nID0gQ0dDb250ZXh0R2V0QWxsb3dz
Rm9udFN1YnBpeGVsUG9zaXRpb25pbmcoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSk7Ci0KLSAg
ICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgIFtbbV9kb2N1bWVudCBw
YWdlQXRJbmRleDowXSBkcmF3V2l0aEJveDprUERGRGlzcGxheUJveENyb3BCb3hdOwotICAgIEFM
TE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAotCi0gICAgQ0dDb250ZXh0U2V0QWxsb3dz
Rm9udFNtb290aGluZyhjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBhbGxvd3NTbW9vdGhpbmcp
OwotICAgIENHQ29udGV4dFNldEFsbG93c0ZvbnRTdWJwaXhlbFF1YW50aXphdGlvbihjb250ZXh0
LnBsYXRmb3JtQ29udGV4dCgpLCBhbGxvd3NTdWJwaXhlbFF1YW50aXphdGlvbik7Ci0gICAgQ0dD
b250ZXh0U2V0QWxsb3dzRm9udFN1YnBpeGVsUG9zaXRpb25pbmcoY29udGV4dC5wbGF0Zm9ybUNv
bnRleHQoKSwgYWxsb3dzU3VicGl4ZWxQb3NpdGlvbmluZyk7Ci19Ci0KLX0KLQotI2VuZGlmIC8v
IFVTRShQREZLSVRfRk9SX1BERkRPQ1VNRU5USU1BR0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckltYWdlLmNwcAppbmRleCBjMGJkODI3ZmM0NDQ2ZWU3OTcyMGEwZWVmMzZmNDNhOTQ4
ZjhkYzYwLi5kMjEwMzA4MmJiMzlkN2E4MzQ2ZmJlNjZkYjQ2MGI1ZDU0MzIzYjY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAKICNp
bmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVk
ZSAiSW5saW5lRWxlbWVudEJveC5oIgorI2luY2x1ZGUgIlBERkRvY3VtZW50SW1hZ2UuaCIKICNp
bmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFpbnRJbmZvLmgiCiAjaW5jbHVkZSAiUmVuZGVy
RnJhZ21lbnRlZEZsb3cuaCIKQEAgLTY0LDcgKzY1LDYgQEAKICNlbmRpZgogCiAjaWYgVVNFKENH
KQotI2luY2x1ZGUgIlBERkRvY3VtZW50SW1hZ2UuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgog
I2VuZGlmCiAKQEAgLTY2Miw3ICs2NjIsNyBAQCBJbWFnZURyYXdSZXN1bHQgUmVuZGVySW1hZ2U6
OnBhaW50SW50b1JlY3QoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEZsb2F0UmVjdAogICAg
IC8vIEZJWE1FOiBEb2N1bWVudCB3aGVuIGltYWdlICE9IGltZy5nZXQoKS4KICAgICBJbWFnZSog
aW1hZ2UgPSBpbWFnZVJlc291cmNlKCkuaW1hZ2UoKS5nZXQoKTsKIAotI2lmIFVTRShDRykKKyNp
ZiBFTkFCTEUoUERGRE9DVU1FTlRJTUFHRSkKICAgICBpZiAoaXM8UERGRG9jdW1lbnRJbWFnZT4o
aW1hZ2UpKQogICAgICAgICBkb3duY2FzdDxQREZEb2N1bWVudEltYWdlPigqaW1hZ2UpLnNldFBk
ZkltYWdlQ2FjaGluZ1BvbGljeShzZXR0aW5ncygpLnBkZkltYWdlQ2FjaGluZ1BvbGljeSgpKTsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IGUzZGZlNzk1MTZj
MzU5YWQ4NDA3N2JmNWZlODUyZmI5MWY3ZTNlZDAuLmQxYmRjZTUzZDU4M2IzOWE1Y2YyYjNlMzE0
OGY3ZjE3OWM4M2RmMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTE0
Miw2ICsxNDIsNyBAQAogI2luY2x1ZGUgIk5hdmlnYXRvckJlYWNvbi5oIgogI2luY2x1ZGUgIk5h
dmlnYXRvck1lZGlhRGV2aWNlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtMb2FkSW5mb3JtYXRpb24u
aCIKKyNpbmNsdWRlICJQREZEb2N1bWVudEltYWdlLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2lu
Y2x1ZGUgIlBhZ2VPdmVybGF5LmgiCiAjaW5jbHVkZSAiUGF0aFV0aWxpdGllcy5oIgpAQCAtMjI2
LDEwICsyMjcsNiBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KIAotI2lmIFVTRShDRykK
LSNpbmNsdWRlICJQREZEb2N1bWVudEltYWdlLmgiCi0jZW5kaWYKLQogI2lmIEVOQUJMRShJTlBV
VF9UWVBFX0NPTE9SKQogI2luY2x1ZGUgIkNvbG9yQ2hvb3Nlci5oIgogI2VuZGlmCkBAIC05MDcs
NyArOTA0LDcgQEAgc3RhdGljIEJpdG1hcEltYWdlKiBiaXRtYXBJbWFnZUZyb21JbWFnZUVsZW1l
bnQoSFRNTEltYWdlRWxlbWVudCYgZWxlbWVudCkKICAgICByZXR1cm4gaW1hZ2UgJiYgaXM8Qml0
bWFwSW1hZ2U+KGltYWdlKSA/ICZkb3duY2FzdDxCaXRtYXBJbWFnZT4oKmltYWdlKSA6IG51bGxw
dHI7CiB9CiAKLSNpZiBVU0UoQ0cpCisjaWYgRU5BQkxFKFBERkRPQ1VNRU5USU1BR0UpCiBzdGF0
aWMgUERGRG9jdW1lbnRJbWFnZSogcGRmRG9jdW1lbnRJbWFnZUZyb21JbWFnZUVsZW1lbnQoSFRN
TEltYWdlRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBhdXRvKiBpbWFnZSA9IGltYWdlRnJvbUlt
YWdlRWxlbWVudChlbGVtZW50KTsKQEAgLTk3MCw3ICs5NjcsNyBAQCB1bnNpZ25lZCBJbnRlcm5h
bHM6OmltYWdlRGVjb2RlQ291bnQoSFRNTEltYWdlRWxlbWVudCYgZWxlbWVudCkKIAogdW5zaWdu
ZWQgSW50ZXJuYWxzOjpwZGZEb2N1bWVudENhY2hpbmdDb3VudChIVE1MSW1hZ2VFbGVtZW50JiBl
bGVtZW50KQogewotI2lmIFVTRShDRykKKyNpZiBFTkFCTEUoUERGRE9DVU1FTlRJTUFHRSkKICAg
ICBhdXRvKiBwZGZEb2N1bWVudEltYWdlID0gcGRmRG9jdW1lbnRJbWFnZUZyb21JbWFnZUVsZW1l
bnQoZWxlbWVudCk7CiAgICAgcmV0dXJuIHBkZkRvY3VtZW50SW1hZ2UgPyBwZGZEb2N1bWVudElt
YWdlLT5jYWNoaW5nQ291bnRGb3JUZXN0aW5nKCkgOiAwOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKaW5kZXgg
NDdiNDM2YmQ1NjJkMWUxNzA3NzA0NTQyZGY5NTc2MDg1YjVmNDUyMC4uOGI2OTk3NTI1MDA0MjQw
YWE3YzI0OGVjM2NjODhhOWVmMjcxMTdhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKQEAgLTcxLDcgKzcxLDggQEAg
cHJpdmF0ZToKICAgICAgICAgaWYgKCFkaXNwbGF5TGlzdC5pc0VtcHR5KCkpIHsKICAgICAgICAg
ICAgIGNvbnN0IGF1dG8mIGltYWdlQnVmZmVycyA9IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5y
ZW1vdGVSZXNvdXJjZUNhY2hlKCkuaW1hZ2VCdWZmZXJzKCk7CiAgICAgICAgICAgICBjb25zdCBh
dXRvJiBuYXRpdmVJbWFnZXMgPSBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQucmVtb3RlUmVzb3Vy
Y2VDYWNoZSgpLm5hdGl2ZUltYWdlcygpOwotICAgICAgICAgICAgV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OlJlcGxheWVyIHJlcGxheWVyIHsgQmFzZUNvbmNyZXRlSW1hZ2VCdWZmZXI6OmNvbnRleHQo
KSwgZGlzcGxheUxpc3QsICZpbWFnZUJ1ZmZlcnMsICZuYXRpdmVJbWFnZXMsIHRoaXMgfTsKKyAg
ICAgICAgICAgIGNvbnN0IGF1dG8mIG5hdGl2ZVBERkRvY3VtZW50cyA9IG1fcmVtb3RlUmVuZGVy
aW5nQmFja2VuZC5yZW1vdGVSZXNvdXJjZUNhY2hlKCkubmF0aXZlUERGRG9jdW1lbnRzKCk7Cisg
ICAgICAgICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXIgcmVwbGF5ZXIgeyBCYXNl
Q29uY3JldGVJbWFnZUJ1ZmZlcjo6Y29udGV4dCgpLCBkaXNwbGF5TGlzdCwgJmltYWdlQnVmZmVy
cywgJm5hdGl2ZUltYWdlcywgJm5hdGl2ZVBERkRvY3VtZW50cywgdGhpcyB9OwogICAgICAgICAg
ICAgcmVwbGF5ZXIucmVwbGF5KCk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC5jcHAKaW5kZXggODY5Y2VkMTkwMzlhZTYzYTM0ZjA0NDE1M2IyM2RmOTgzY2M1ODQ1My4uMjYx
YWU2YWE0ZGU3OWZlMjM4ZjYyMjBmN2Q3OTkwMWZjYjZlYWJjOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLmNwcApAQCAtMjI1LDYgKzIyNSwxNSBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6
OmNhY2hlTmF0aXZlSW1hZ2UoUmVmPE5hdGl2ZUltYWdlPiYmIGltYWdlKQogICAgIG1fcmVtb3Rl
UmVzb3VyY2VDYWNoZS5jYWNoZU5hdGl2ZUltYWdlKFdURk1vdmUoaW1hZ2UpKTsKIH0KIAordm9p
ZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjYWNoZU5hdGl2ZVBERkRvY3VtZW50KElQQzo6U2hh
cmVkQnVmZmVyQ29weSYmIGRhdGEsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpCit7CisgICAgaWYgKCFkYXRhLmJ1ZmZlcigpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBpZiAoYXV0byBwZGZEb2N1bWVudCA9IE5hdGl2ZVBERkRvY3VtZW50
OjpjcmVhdGUoZGF0YS5idWZmZXIoKS5yZWxlYXNlTm9uTnVsbCgpLCByZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIpKQorICAgICAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVOYXRpdmVQ
REZEb2N1bWVudChtYWtlUmVmKCpwZGZEb2N1bWVudCkpOworfQorCiB2b2lkIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogewogICAgIG1fcmVtb3RlUmVzb3Vy
Y2VDYWNoZS5yZWxlYXNlUmVtb3RlUmVzb3VyY2UocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KTsKQEAgLTMwMiw2ICszMTEsNyBAQCBPcHRpb25hbDxEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZT4g
V0FSTl9VTlVTRURfUkVUVVJOIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRlYwogICAgIGNhc2Ug
RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3RWxsaXBzZToKICAgICBjYXNlIERpc3BsYXlMaXN0
OjpJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyOgogICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1U
eXBlOjpEcmF3TmF0aXZlSW1hZ2U6CisgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRy
YXdOYXRpdmVQREZEb2N1bWVudDoKICAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJh
d1BhdHRlcm46CiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdMaW5lOgogICAg
IGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3UmVjdDoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmggYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5o
CmluZGV4IDk1ZThjOTc2MGRmYjYzYWEwODRjYzZmN2JhZjlkMmRmOWE3ODI5OWMuLmM1MjM3ZjQ4
NzU3OTE5NGU2NGYwYTdjNjM3NjllZTgyMzY1N2EyNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaApA
QCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlICJS
ZW1vdGVSZXNvdXJjZUNhY2hlLmgiCiAjaW5jbHVkZSAiUmVuZGVyaW5nQmFja2VuZElkZW50aWZp
ZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJDb3B5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9D
b2xvclNwYWNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvRGlzcGxheUxpc3RJdGVtcy5oPgpAQCAtMTA3LDYgKzEwOCw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCB3YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpJdGVtQnVmZmVySWRlbnRpZmllciBpbml0aWFsSWRlbnRpZmllciwgdWludDY0X3QgaW5pdGlh
bE9mZnNldCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRlc3RpbmF0aW9u
QnVmZmVySWRlbnRpZmllcik7CiAgICAgdm9pZCBnZXRJbWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIFdlYkNvcmU6OkludFJlY3Qgc3JjUmVjdCwg
V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKElQQzo6SW1hZ2VEYXRhUmVmZXJlbmNlJiYpPiYmKTsKICAgICB2b2lkIGNhY2hlTmF0aXZl
SW1hZ2UoUmVmPFdlYkNvcmU6Ok5hdGl2ZUltYWdlPiYmKTsKKyAgICB2b2lkIGNhY2hlTmF0aXZl
UERGRG9jdW1lbnQoSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiYsIFdlYkNvcmU6OlJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcik7CiAgICAgdm9pZCByZWxlYXNlUmVtb3RlUmVzb3VyY2UoV2ViQ29y
ZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZENyZWF0ZVNoYXJl
ZERpc3BsYXlMaXN0SGFuZGxlKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRp
ZmllciwgY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmLCBXZWJDb3JlOjpSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIgZGVzdGluYXRpb25CdWZmZXJJZGVudGlmaWVyKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbgppbmRleCA4ZTI3ZTA0Zjc3MzgxYTZmYjk5
NTczNDJhMjljMjE0NjA3MmVlY2Y4Li4zYTUwMWY2MTEyZTM3Yzc2YTFlZGE5Mjk5NzQyYWI0MjY2
ODY0YTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbgpAQCAtMjcs
NiArMjcsNyBAQCBtZXNzYWdlcyAtPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kIE5vdFJlZkNvdW50
ZWQgewogICAgIFdha2VVcEFuZEFwcGx5RGlzcGxheUxpc3QoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
Okl0ZW1CdWZmZXJJZGVudGlmaWVyIGluaXRpYWxJZGVudGlmaWVyLCB1aW50NjRfdCBpbml0aWFs
T2Zmc2V0LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZGVzdGluYXRpb25C
dWZmZXJJZGVudGlmaWVyKQogICAgIEdldEltYWdlRGF0YShlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6
QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIFdlYkNvcmU6OkludFJlY3Qgc3Jj
UmVjdCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcikgLT4gKElQQzo6SW1hZ2VEYXRhUmVmZXJlbmNlIGltYWdlRGF0YSkgU3lu
Y2hyb25vdXMKICAgICBDYWNoZU5hdGl2ZUltYWdlKFdlYkNvcmU6Ok5hdGl2ZUltYWdlUmVmZXJl
bmNlIG5hdGl2ZUltYWdlKQorICAgIENhY2hlTmF0aXZlUERGRG9jdW1lbnQoSVBDOjpTaGFyZWRC
dWZmZXJDb3B5IGRhdGEsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiAgICAgRGlkQ3JlYXRlU2hhcmVkRGlzcGxheUxpc3RI
YW5kbGUoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaGFuZGxlLCBXZWJDb3JlOjpSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZGVzdGluYXRpb25CdWZmZXJJZGVudGlmaWVyKQogICAg
IFJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwCmluZGV4
IGMzMzJkMmY3MDRlMTU4NGQ2YzBlNWNmYmRiN2VkNTZkYzRiMmMzNjkuLjkyNzU1MjVjN2U5ZWJm
OWY5OWMyY2UxZTU4MTc4MDRjYjAzNDAwYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAKQEAgLTQ4LDEy
ICs0OCwyMCBAQCB2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlTmF0aXZlSW1hZ2UoUmVm
PE5hdGl2ZUltYWdlPiYmIGltYWdlKQogICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRS
ZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKK3ZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVO
YXRpdmVQREZEb2N1bWVudChSZWY8TmF0aXZlUERGRG9jdW1lbnQ+JiYgcGRmRG9jdW1lbnQpCit7
CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX25hdGl2ZVBERkRvY3VtZW50cy5hZGQocGRmRG9jdW1l
bnQtPnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBXVEZNb3ZlKHBkZkRvY3VtZW50KSk7
CisgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKK30K
Kwogdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpyZWxlYXNlUmVtb3RlUmVzb3VyY2UoUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKIHsKICAg
ICBpZiAobV9pbWFnZUJ1ZmZlcnMucmVtb3ZlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikp
CiAgICAgICAgIHJldHVybjsKICAgICBpZiAobV9uYXRpdmVJbWFnZXMucmVtb3ZlKHJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcikpCiAgICAgICAgIHJldHVybjsKKyAgICBpZiAobV9uYXRpdmVQ
REZEb2N1bWVudHMucmVtb3ZlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikpCisgICAgICAg
IHJldHVybjsKICAgICAvLyBDYWNoaW5nIHRoZSByZW1vdGUgcmVzb3VyY2Ugc2hvdWxkIGhhdmUg
aGFwcGVuZWQgYmVmb3JlIHJlbGVhc2luZyBpdC4KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZXNvdXJjZUNhY2hlLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVzb3VyY2VDYWNoZS5oCmluZGV4IDFmMjEwNThlMzNhMTg3NWJiZDdmNzJjMDEyM2M2NTAzZWM3
OTliMGIuLmY4ZTFmMDRhNWZiZjIxZjM4ZDBhYzBlOTllMmJjMjVmODQxZDM1ZDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hl
LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNl
Q2FjaGUuaApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZUJ1ZmZl
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmF0aXZlSW1hZ2UuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L05hdGl2ZVBERkRvY3VtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCkBAIC00MywxNCArNDQs
MTcgQEAgcHVibGljOgogICAgIHZvaWQgY2FjaGVJbWFnZUJ1ZmZlcihSZWY8V2ViQ29yZTo6SW1h
Z2VCdWZmZXI+JiYpOwogICAgIFdlYkNvcmU6OkltYWdlQnVmZmVyKiBjYWNoZWRJbWFnZUJ1ZmZl
cihXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgY2FjaGVO
YXRpdmVJbWFnZShSZWY8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+JiYpOworICAgIHZvaWQgY2FjaGVO
YXRpdmVQREZEb2N1bWVudChSZWY8V2ViQ29yZTo6TmF0aXZlUERGRG9jdW1lbnQ+JiYpOwogICAg
IHZvaWQgcmVsZWFzZVJlbW90ZVJlc291cmNlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcik7CiAgICAgCiAgICAgY29uc3QgV2ViQ29yZTo6SW1hZ2VCdWZmZXJIYXNoTWFwJiBp
bWFnZUJ1ZmZlcnMoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlQnVmZmVyczsgfQogICAgIGNvbnN0
IFdlYkNvcmU6Ok5hdGl2ZUltYWdlSGFzaE1hcCYgbmF0aXZlSW1hZ2VzKCkgY29uc3QgeyByZXR1
cm4gbV9uYXRpdmVJbWFnZXM7IH0KKyAgICBjb25zdCBXZWJDb3JlOjpOYXRpdmVQREZEb2N1bWVu
dEhhc2hNYXAmIG5hdGl2ZVBERkRvY3VtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fbmF0aXZlUERG
RG9jdW1lbnRzOyB9CiAKIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6SW1hZ2VCdWZmZXJIYXNoTWFw
IG1faW1hZ2VCdWZmZXJzOwogICAgIFdlYkNvcmU6Ok5hdGl2ZUltYWdlSGFzaE1hcCBtX25hdGl2
ZUltYWdlczsKKyAgICBXZWJDb3JlOjpOYXRpdmVQREZEb2N1bWVudEhhc2hNYXAgbV9uYXRpdmVQ
REZEb2N1bWVudHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94
eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1
ZmZlclByb3h5LmgKaW5kZXggMDU3ZGNhZDY2NTI3OGUyODE2Mjc3YjMwY2QyZGE4Njk3YzEzZDU5
Mi4uYWYxOTk3MzA4YzE4MDdhNjgwMTkzODhmOGQ2MWI3OTAxYTVkNGViMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5LmgKQEAgLTIyNiw2ICsyMjYsMTIgQEAgcHJvdGVjdGVkOgogICAgICAg
ICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPnJlbW90ZVJlc291cmNlQ2FjaGVQ
cm94eSgpLmNhY2hlTmF0aXZlSW1hZ2UoaW1hZ2UpOwogICAgIH0KIAorICAgIHZvaWQgY2FjaGVO
YXRpdmVQREZEb2N1bWVudChXZWJDb3JlOjpOYXRpdmVQREZEb2N1bWVudCYgcGRmRG9jdW1lbnQp
IG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAobV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkpCisgICAgICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+cmVtb3RlUmVz
b3VyY2VDYWNoZVByb3h5KCkuY2FjaGVOYXRpdmVQREZEb2N1bWVudChwZGZEb2N1bWVudCk7Cisg
ICAgfQorCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJIYW5kbGUgY3JlYXRl
SXRlbUJ1ZmZlcihzaXplX3QgY2FwYWNpdHkpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAo
bV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCkBAIC0yOTAsNiArMjk2LDcgQEAgcHJvdGVj
dGVkOgogICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0Vs
bGlwc2U6CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3
SW1hZ2VCdWZmZXI6CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBl
OjpEcmF3TmF0aXZlSW1hZ2U6CisgICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0
ZW1UeXBlOjpEcmF3TmF0aXZlUERGRG9jdW1lbnQ6CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6RGlz
cGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3UGF0dGVybjoKICAgICAgICAgY2FzZSBXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdMaW5lOgogICAgICAgICBjYXNlIFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1JlY3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eS5jcHAKaW5kZXggMzZiMDNkMzgxZWQyYzUyNDFjZmNkM2Y1YjM1NTE3OGJiMzhj
ZjZhNS4uOGU4NDMwMjE2ODJjYzZmYWU0ODE0ZTU2NTJmNWI3MzVjMjE3NTA2OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2lu
Y2x1ZGUgIlBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oIgogI2luY2x1ZGUgIlJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyQ29weS5oIgogI2lu
Y2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKIApAQCAtMTc4
LDYgKzE3OSwxMSBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y2FjaGVOYXRp
dmVJbWFnZShOYXRpdmVJbWFnZSYgaW1hZ2UpCiAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6Q2FjaGVOYXRpdmVJbWFnZShtYWtlUmVmKGltYWdlKSksIG1fcmVuZGVy
aW5nQmFja2VuZElkZW50aWZpZXIpOwogfQogCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eTo6Y2FjaGVOYXRpdmVQREZEb2N1bWVudChOYXRpdmVQREZEb2N1bWVudCYgcGRmRG9jdW1l
bnQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Q2FjaGVO
YXRpdmVQREZEb2N1bWVudChwZGZEb2N1bWVudC5kYXRhKCksIHBkZkRvY3VtZW50LnJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcigpKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7Cit9
CisKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpyZWxlYXNlUmVtb3RlUmVzb3Vy
Y2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cikKIHsKICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpSZWxlYXNl
UmVtb3RlUmVzb3VyY2UocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSwgbV9yZW5kZXJpbmdC
YWNrZW5kSWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaApp
bmRleCBiMDk1YTAwNjA1NzRkOWI0NGE4ZDdhNTZkN2Y4NzE0ZWI1NmYyMGRjLi5jZTk0OTQzYmU1
ZDVmNDkyNmNmZDk1ZjliODFkN2EwMjVkYzg2OWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5LmgKQEAgLTc5LDYgKzc5LDcgQEAgcHVibGljOgogICAgIHZvaWQgc3VibWl0
RGlzcGxheUxpc3QoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiwgV2Vi
Q29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uQnVmZmVySWRlbnRp
Zmllcik7CiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllciBmbHVzaERp
c3BsYXlMaXN0QW5kQ29tbWl0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlz
dCYsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgdm9pZCBjYWNo
ZU5hdGl2ZUltYWdlKFdlYkNvcmU6Ok5hdGl2ZUltYWdlJik7CisgICAgdm9pZCBjYWNoZU5hdGl2
ZVBERkRvY3VtZW50KFdlYkNvcmU6Ok5hdGl2ZVBERkRvY3VtZW50Jik7CiAgICAgdm9pZCByZWxl
YXNlUmVtb3RlUmVzb3VyY2UoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsK
IAogICAgIGJvb2wgd2FpdEZvckltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3Vy
Y2VDYWNoZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcAppbmRleCA5MDRhYWVhZDhjYzcxZTg4ZjY0MmI0
YjUzNmU2OWFlMWU4OTM5ODljLi4yNjQ0MWNjOGM2NzU3YmI5NDE4MmYwOGQ0ZTA1MTYxNGQzZTRl
YzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwCkBAIC03Nyw2ICs3Nywz
MCBAQCB2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6cmVsZWFzZU5hdGl2ZUltYWdlKFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZQogICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5LnJlbGVhc2VSZW1vdGVSZXNvdXJjZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
OwogfQogCit2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6Y2FjaGVOYXRpdmVQREZEb2N1
bWVudChOYXRpdmVQREZEb2N1bWVudCYgcGRmRG9jdW1lbnQpCit7CisgICAgaWYgKG1fc2hhcmVk
UERGRG9jdW1lbnRzLmNvbnRhaW5zKHBkZkRvY3VtZW50LnJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllcigpKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIG1fc2hhcmVkUERGRG9jdW1lbnRz
LmFkZChwZGZEb2N1bWVudC5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSk7CisKKyAgICAv
LyBTZXQgaXRzZWxmIGFzIGFuIG9ic2VydmVyIHRvIE5hdGl2ZUltYWdlLCBzbyByZWxlYXNlTmF0
aXZlUERGRG9jdW1lbnQoKQorICAgIC8vIGdldHMgY2FsbGVkIHdoZW4gTmF0aXZlUERGRG9jdW1l
bnQgaXMgYmVpbmcgZGVsZWxldGVkLgorICAgIHBkZkRvY3VtZW50LnNldE9ic2VydmVyKHRoaXMp
OworCisgICAgLy8gVGVsbCB0aGUgR1BVIHByb2Nlc3MgdG8gY2FjaGUgdGhpcyByZXNvdXJjZS4K
KyAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jYWNoZU5hdGl2ZVBERkRvY3VtZW50
KHBkZkRvY3VtZW50KTsKK30KKwordm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OnJlbGVh
c2VOYXRpdmVQREZEb2N1bWVudChSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKQoreworICAgIGlmICghbV9zaGFyZWRQREZEb2N1bWVudHMucmVt
b3ZlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikpCisgICAgICAgIHJldHVybjsKKworICAg
IC8vIFRlbGwgdGhlIEdQVSBwcm9jZXNzIHRvIHJlbW92ZSB0aGlzIHJlc291cmNlLgorICAgIG1f
cmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LnJlbGVhc2VSZW1vdGVSZXNvdXJjZShyZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2Vu
ZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5o
CmluZGV4IDA2ZGQ0ZjY4YjkzYTllOTdmYTU0OWMwM2RmYzQ5ZGI5Mzg4OGJiZmIuLjE3YmRmYjM0
OGE0ZGZhN2QzOTlhYTAyZTg1MWRiNmYzNDA1MDhmZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNh
Y2hlUHJveHkuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAog
I2luY2x1ZGUgPFdlYkNvcmUvTmF0aXZlSW1hZ2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL05hdGl2
ZVBERkRvY3VtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCkBAIC0zOSw3ICs0MCw3IEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7CiAK
LWNsYXNzIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSA6IHB1YmxpYyBXZWJDb3JlOjpOYXRpdmVJ
bWFnZTo6T2JzZXJ2ZXIgeworY2xhc3MgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5IDogcHVibGlj
IFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpPYnNlcnZlciwgcHVibGljIFdlYkNvcmU6Ok5hdGl2ZVBE
RkRvY3VtZW50OjpPYnNlcnZlciB7CiBwdWJsaWM6CiAgICAgUmVtb3RlUmVzb3VyY2VDYWNoZVBy
b3h5KFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYpOwogCkBAIC00OCwxNyArNDksMjEgQEAg
cHVibGljOgogICAgIHZvaWQgcmVsZWFzZUltYWdlQnVmZmVyKFdlYkNvcmU6OlJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcik7CiAKICAgICB2b2lkIGNhY2hlTmF0aXZlSW1hZ2UoV2ViQ29yZTo6
TmF0aXZlSW1hZ2UmKTsKKyAgICB2b2lkIGNhY2hlTmF0aXZlUERGRG9jdW1lbnQoV2ViQ29yZTo6
TmF0aXZlUERGRG9jdW1lbnQmKTsKIAogICAgIHVzaW5nIEltYWdlQnVmZmVySGFzaE1hcCA9IEhh
c2hNYXA8V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBXZWFrUHRyPFdlYkNv
cmU6OkltYWdlQnVmZmVyPj47CiAgICAgY29uc3QgSW1hZ2VCdWZmZXJIYXNoTWFwJiBpbWFnZUJ1
ZmZlcnMoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlQnVmZmVyczsgfQogCiBwcml2YXRlOgogICAg
IHVzaW5nIE5hdGl2ZUltYWdlSGFzaE1hcCA9IEhhc2hNYXA8V2ViQ29yZTo6UmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyLCBXZWFrUHRyPFdlYkNvcmU6Ok5hdGl2ZUltYWdlPj47CisgICAgdXNp
bmcgU2hhcmVkUERGRG9jdW1lbnRIYXNoU2V0ID0gSGFzaFNldDxXZWJDb3JlOjpSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXI+OwogICAgIAogICAgIHZvaWQgcmVsZWFzZU5hdGl2ZUltYWdlKFdl
YkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgb3ZlcnJpZGU7CisgICAgdm9pZCBy
ZWxlYXNlTmF0aXZlUERGRG9jdW1lbnQoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKSBvdmVycmlkZTsKIAogICAgIEltYWdlQnVmZmVySGFzaE1hcCBtX2ltYWdlQnVmZmVyczsK
ICAgICBOYXRpdmVJbWFnZUhhc2hNYXAgbV9uYXRpdmVJbWFnZXM7CisgICAgU2hhcmVkUERGRG9j
dW1lbnRIYXNoU2V0IG1fc2hhcmVkUERGRG9jdW1lbnRzOwogICAgIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eSYgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7CiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQppbmRleCA5
Y2IzYWFlZDc3NWY5YjZmZDkzYWMyNjk1ZWI4OGZlM2NkZGY2N2NhLi40NGI1MDZiMjgxOTMyNjhm
ODg3M2VjNDI2MDNkNWE1ZjhhYWY4ZTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KQEAgLTc2LDcgKzc2LDcgQEAKICNpbXBvcnQg
PFdlYkNvcmUvTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL01vdXNlRXZlbnQuaD4KLSNp
bXBvcnQgPFdlYkNvcmUvUERGRG9jdW1lbnRJbWFnZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9OYXRp
dmVQREZEb2N1bWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYWdlLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1Bhc3RlYm9hcmQuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1TY3JlZW4uaD4KQEAg
LTE1NzIsNyArMTU3Miw3IEBAIHZvaWQgUERGUGx1Z2luOjpjb252ZXJ0UG9zdFNjcmlwdERhdGFJ
Zk5lZWRlZCgpCiAgICAgaWYgKCFtX2lzUG9zdFNjcmlwdCkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgbV9kYXRhID0gUERGRG9jdW1lbnRJbWFnZTo6Y29udmVydFBvc3RTY3JpcHREYXRhVG9QREYo
V1RGTW92ZShtX2RhdGEpKTsKKyAgICBtX2RhdGEgPSBOYXRpdmVQREZEb2N1bWVudDo6Y29udmVy
dFBvc3RTY3JpcHREYXRhVG9QREYoV1RGTW92ZShtX2RhdGEpKTsKIH0KIAogdm9pZCBQREZQbHVn
aW46OmRvY3VtZW50RGF0YURpZEZpbmlzaExvYWRpbmcoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414645</attachid>
            <date>2020-11-19 20:23:06 -0800</date>
            <delta_ts>2020-11-19 22:42:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218871-20201119202305.patch</filename>
            <type>text/plain</type>
            <size>124364</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMDY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGI4NTcwMTA2OWNiM2M0NTVmM2NkYjMz
ZGIxY2NlZWQ0MmJlODMyNTUuLjMxNzA0NjBmMzAzZmU3OWY2NmNmYTdjZmZhMmQwZTQ0ZWEyMDgw
MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjAtMTEtMTkgIFNhaWQgQWJvdS1IYWxsYXdhICA8
c2FpZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBTdXBwb3J0IHJlbmRlcmlu
ZyBQREZEb2N1bWVudEltYWdlIGluIEdQVSBQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg4NzEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybUVuYWJsZS5oOgorCiAyMDIw
LTExLTE5ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBv
c190aHJlYWRfc2VsZl9yZXN0cmljdF9yd3hfaXNfc3VwcG9ydGVkIGluc3RlYWQgb2YgcHRocmVh
ZF9qaXRfd3JpdGVfcHJvdGVjdF9zdXBwb3J0ZWRfbnAgb24gQXBwbGUgSW50ZXJuYWwgU0RLIGJ1
aWxkcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IGQxNDEwNTAxMzEzYTUyODk4ZDAwOGI1OGY2NTkxOGVjYTdiZTBk
YjYuLjgzY2ZmOWUxMmUwM2M5ZDI0MTQ2NzMzZTE3ZjYzMGZkZWFmYzRmNmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMTYgQEAKKzIwMjAtMTEtMTkgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBh
cHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBTdXBwb3J0IHJlbmRlcmluZyBQREZE
b2N1bWVudEltYWdlIGluIEdQVSBQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg4NzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2Nv
YS50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRJbWFnZTo6Y29udmVydGVkRGF0YUlmTmVlZGVkIGNvbnN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlUERGRG9jdW1lbnQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpkcmF3TmF0aXZlUERGRG9jdW1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6Y3JlYXRlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVQREZEb2N1bWVudC5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6TmF0aXZlUERGRG9jdW1lbnQ6Ok5hdGl2ZVBERkRvY3VtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6Ok5hdGl2ZVBERkRvY3VtZW50Ojp+TmF0aXZlUERGRG9jdW1lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6TmF0aXZlUERGRG9jdW1lbnQ6OnNpemUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6dHJhbnNmb3JtQ29udGV4dEZvclBhaW50aW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok5h
dGl2ZVBERkRvY3VtZW50Ojp1cGRhdGVTbmFwc2hvdElmTmVlZGVkKToKKyAgICAgICAgKFdlYkNv
cmU6Ok5hdGl2ZVBERkRvY3VtZW50OjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZVBE
RkRvY3VtZW50OjpkdW1wIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZVBERkRvY3Vt
ZW50OjpTbmFwc2hvdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZVBERkRvY3Vt
ZW50OjpTbmFwc2hvdDo6U25hcHNob3QpOgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlUERGRG9j
dW1lbnQ6OlNuYXBzaG90Ojp+U25hcHNob3QpOgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlUERG
RG9jdW1lbnQ6OlNuYXBzaG90OjpjYWxjdWxhdGVTbmFwc2hvdFJlY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TmF0aXZlUERGRG9jdW1lbnQ6OlNuYXBzaG90OjpjYW5DcmVhdGVTbmFwc2hvdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpOYXRpdmVQREZEb2N1bWVudDo6U25hcHNob3Q6OmNhbkJlUmV1c2Vk
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZVBERkRvY3VtZW50OjpTbmFwc2hvdDo6
bWVtb3J5Q29zdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVQREZEb2N1bWVudDo6
U25hcHNob3Q6OnRyYW5zZmVyVmlld3BvcnQpOgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlUERG
RG9jdW1lbnQ6OlNuYXBzaG90OjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9O
YXRpdmVQREZEb2N1bWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZVBERkRv
Y3VtZW50OjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZVBERkRvY3VtZW50
OjpyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
TmF0aXZlUERGRG9jdW1lbnQ6OnNldE9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2
ZVBERkRvY3VtZW50OjpwZGZJbWFnZUNhY2hpbmdQb2xpY3kgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TmF0aXZlUERGRG9jdW1lbnQ6OnNldFBERkltYWdlQ2FjaGluZ1BvbGljeSk6CisgICAg
ICAgIChXZWJDb3JlOjpOYXRpdmVQREZEb2N1bWVudDo6Y2FjaGluZ0NvdW50Rm9yVGVzdGluZyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVQREZEb2N1bWVudDo6c25hcHNob3RNZW1v
cnlDb3N0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZVBERkRvY3VtZW50OjpjbGVh
clNuYXBzaG90KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QREZEb2N1bWVudEltYWdl
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjpQREZEb2N1
bWVudEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6On5QREZEb2N1
bWVudEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OmZpbGVuYW1l
RXh0ZW5zaW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OnNp
emUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFnZTo6Y2FjaGluZ0Nv
dW50Rm9yVGVzdGluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdl
OjpzZXRQZGZJbWFnZUNhY2hpbmdQb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1l
bnRJbWFnZTo6ZGF0YUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFn
ZTo6ZGVzdHJveURlY29kZWREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1h
Z2U6OmRlY29kZWRTaXplQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudElt
YWdlOjpjb21wdXRlSW50cmluc2ljRGltZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpQREZE
b2N1bWVudEltYWdlOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6
OmR1bXAgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BERkRvY3VtZW50SW1h
Z2UuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BE
RkRvY3VtZW50SW1hZ2UuaC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVBE
RkRvY3VtZW50Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZXNvdXJjZUNhY2hlLmguCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
TmF0aXZlUERGRG9jdW1lbnRDRy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZl
UERGRG9jdW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVQREZEb2N1bWVu
dDo6Y29tcHV0ZUJvdW5kc0ZvckN1cnJlbnRQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2
ZVBERkRvY3VtZW50OjpwYWdlQ291bnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6YXBwbHlS
b3RhdGlvbkZvclBhaW50aW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZVBERkRvY3VtZW50
OjpkcmF3UERGUGFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1l
bnRJbWFnZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWlt
YWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Om5hdGl2ZVBERkRvY3VtZW50cyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6OmNhY2hlTmF0aXZlUERGRG9j
dW1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1CdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1I
YW5kbGU6OmFwcGx5KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxl
OjpkZXN0cm95KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlOjpj
b3B5VG8gY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1UeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0Ojpz
aXplT2ZJdGVtSW5CeXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6aXNEcmF3
aW5nSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6aXNJbmxpbmVJdGVtKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
VHlwZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZl
UERGRG9jdW1lbnQ6OmFwcGx5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpvcGVyYXRvcjw8KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtcy5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdO
YXRpdmVQREZEb2N1bWVudDo6RHJhd05hdGl2ZVBERkRvY3VtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlUERGRG9jdW1lbnQ6OnBkZkRvY3VtZW50SWRlbnRp
ZmllciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZVBE
RkRvY3VtZW50Ojpzb3VyY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkRyYXdOYXRpdmVQREZEb2N1bWVudDo6ZGVzdGluYXRpb25SZWN0IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlUERGRG9jdW1lbnQ6Omdsb2JhbEJvdW5k
cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZVBERkRv
Y3VtZW50Ojpsb2NhbEJvdW5kcyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpkcmF3TmF0aXZlUERGRG9jdW1lbnQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OkRlbGVnYXRlOjpjYWNo
ZU5hdGl2ZVBERkRvY3VtZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6UmVwbGF5ZXI6OlJlcGxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjphcHBseURyYXdOYXRpdmVQREZEb2N1bWVudEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlJlcGxheWVyOjphcHBseUl0ZW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL05hdGl2ZVBERkRvY3VtZW50TWFjLm1tOiBSZW5hbWVkIGZyb20gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0u
CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVQREZEb2N1bWVudDo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6Ok5hdGl2ZVBERkRvY3VtZW50Ojpjb21wdXRlQm91bmRzRm9yQ3VycmVudFBhZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlUERGRG9jdW1lbnQ6OnBhZ2VDb3VudCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVQREZEb2N1bWVudDo6ZHJhd1BERlBhZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6TmF0aXZlUERGRG9jdW1lbnQ6OmNvbnZlcnRQb3N0U2NyaXB0RGF0YVRv
UERGKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVySW1hZ2U6OnBhaW50SW50b1JlY3QpOgorICAgICAgICAqIHRlc3RpbmcvSW50
ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6cGRmRG9jdW1lbnRDYWNo
aW5nQ291bnQpOgorCiAyMDIwLTExLTE5ICBBZGl0eWEgS2VlcnRoaSAgPGFrZWVydGhpQGFwcGxl
LmNvbT4KIAogICAgICAgICBbaU9TXVtGQ1JdIEFkZCBuZXcgbG9vayBmb3IgcHJvZ3Jlc3MgYmFy
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCBjMDg4ZDc0NTBlMDZmN2U0YjM4ODdjYTEyYjljMjU5NTAzMTc1MGRiLi40
N2UzYWFkOTE1MDAwYzdkY2RhYWZmYmNhMjBiNDllZDMyMjhjNzM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDMyIEBACisyMDIwLTExLTE5ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29t
PgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gU3VwcG9ydCByZW5kZXJpbmcgUERGRG9jdW1lbnRJ
bWFnZSBpbiBHUFUgUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE4ODcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmg6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y2FjaGVOYXRpdmVQREZE
b2N1bWVudCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRlY29k
ZUl0ZW0pOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
c291cmNlQ2FjaGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpj
YWNoZU5hdGl2ZVBERkRvY3VtZW50KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VD
YWNoZTo6cmVsZWFzZVJlbW90ZVJlc291cmNlKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3Vy
Y2VDYWNoZTo6bmF0aXZlUERGRG9jdW1lbnRzIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjYWNoZU5hdGl2ZVBERkRv
Y3VtZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJj
ZUNhY2hlUHJveHk6OmNhY2hlTmF0aXZlUERGRG9jdW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OnJlbGVhc2VOYXRpdmVQREZEb2N1bWVudCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5Lmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06CisgICAgICAg
IChXZWJLaXQ6OlBERlBsdWdpbjo6Y29udmVydFBvc3RTY3JpcHREYXRhSWZOZWVkZWQpOgorCiAy
MDIwLTExLTE5ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQgcm9sbG91dCBvZiByMjY5ODkwIGFuZCByMjY5OTExIGR1ZSB0byBFTUUgaXNz
dWVzIG9uIE1hYyBNaW5pLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFi
bGUuaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmgKaW5kZXggNzAwMWJlYmQ5NjRj
ZWVhMjc5MTJkYTJkZGJjYmM0ODA5ZDQ1OGY5NC4uNzgzZWI1Yzg3OWE4NjM1MTMxNTdkNzIwYjk2
MmM5YjQ0NzE3ZTc1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUu
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCkBAIC0yMjUsNiArMjI1LDE0
IEBACiAjZGVmaW5lIEVOQUJMRV9DU1NfQ09OSUNfR1JBRElFTlRTIDAKICNlbmRpZgogCisjaWYg
IWRlZmluZWQoRU5BQkxFX1BERkRPQ1VNRU5USU1BR0UpICYmIFVTRShDRykKKyNkZWZpbmUgRU5B
QkxFX1BERkRPQ1VNRU5USU1BR0UgMQorI2VuZGlmCisKKyNpZiAhZGVmaW5lZChFTkFCTEVfUERG
S0lUX0ZPUl9QREZET0NVTUVOVElNQUdFKSAmJiBQTEFURk9STShNQUMpCisjZGVmaW5lIEVOQUJM
RV9QREZLSVRfRk9SX1BERkRPQ1VNRU5USU1BR0UgMQorI2VuZGlmCisKICNpZiAhZGVmaW5lZChF
TkFCTEVfQ1VTVE9NX0NVUlNPUl9TVVBQT1JUKQogI2RlZmluZSBFTkFCTEVfQ1VTVE9NX0NVUlNP
Ul9TVVBQT1JUIDEKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBhZmNmNDVhYWNiNDc0NzQzNjQx
M2Y4YWU1OTlmM2RhZTRiZWRjZGNmLi45Zjk0ZTc4Y2Y0ODllNzZjZDQ4MDgyYzcxYjdjMDU0Mzk4
NWVmZmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTk1MSwxMCArMTk1MSwxMiBAQCBwbGF0Zm9ybS9n
cmFwaGljcy9NSU1FVHlwZUNhY2hlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
Y3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwCiBwbGF0
Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZVBE
RkRvY3VtZW50LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHAKIHBsYXRmb3JtL2dyYXBo
aWNzL1BhdGhUcmF2ZXJzYWxTdGF0ZS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGhVdGlsaXRp
ZXMuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3Mv
UERGRG9jdW1lbnRJbWFnZS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGltZVJhbmdl
cy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1Jl
bW90ZVZpZGVvU2FtcGxlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0Nv
Y29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggMmIzM2M0YmNl
NzRkZGVhZDgxOGJhM2NiMmE0NDkzMTU0NmI1OWE2MC4uMDQzNTlkZTA4OTk2OGRjYjBhZDdjMDkw
NDM2NmMwMmM2NzFkYWU5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29h
LnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0zNDAsNyArMzQw
LDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW50UG9pbnRDRy5jcHAKIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL0ludFJlY3RDRy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ludFNpemVDRy5jcHAK
IHBsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwCi1wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlUERG
RG9jdW1lbnRDRy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdGhDRy5jcHAKIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1N1YmltYWdl
Q2FjaGVXaXRoVGltZXIuY3BwCkBAIC00MTMsNyArNDEzLDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0ljb25NYWMubW0KIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbQogcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0ludFBvaW50TWFjLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW50
U2l6ZU1hYy5tbQotcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0K
K3BsYXRmb3JtL2dyYXBoaWNzL21hYy9OYXRpdmVQREZEb2N1bWVudE1hYy5tbQogcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhQ29yZVRleHQuY3BwCiBwbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvU3dpdGNoaW5nR1BVQ2xpZW50LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYktp
dE5TSW1hZ2VFeHRyYXMubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCA3NWE1MjJjMmFiZWIwZDE2ZDVjNjg4NmM3MTcwNjU3MjQ5
MjBjOTRlLi4zZjY5NTBlZWQ0NTA3Y2IxMTdiMmZhNWEyYmUxZjJiOTg5YzEwMTgxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0y
MTc3LDYgKzIxNzcsOCBAQAogCQk3MjdBN0YzQTI0MDc4Qjg0MDA0RDI5MzEgLyogSW1hZ2VCdWZm
ZXJJT1N1cmZhY2VCYWNrZW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3MkJBQzNBQjIzRTFFNTQ0MDA4RDc0MUMgLyogSW1hZ2VCdWZmZXJJT1N1cmZh
Y2VCYWNrZW5kLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNzI5OUJDNjcyM0Q2QTUzMjAwQ0M2ODgzIC8qIEFscGhhUHJlbXVsdGlwbGljYXRpb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyOTlCQzY0
MjNENjg2QTYwMENDNjg4MyAvKiBBbHBoYVByZW11bHRpcGxpY2F0aW9uLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzI5OUJDNjgyM0Q2QTUzRTAw
Q0M2ODgzIC8qIFJlbmRlcmluZ01vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDcyOTlCQzY2MjNENjg2QzYwMENDNjg4MyAvKiBSZW5kZXJpbmdNb2Rl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzI5
QzQ1Q0QyNTY2MDUzNDAwMDQwN0NGIC8qIE5hdGl2ZVBERkRvY3VtZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjlDNDVDQTI1NjRGODFCMDAwNDA3
Q0YgLyogTmF0aXZlUERGRG9jdW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk3MjlDNDVDRTI1NjYwNTZDMDAwNDA3Q0YgLyogUGxhdGZvcm1Q
REZEb2N1bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNzI5QzQ1Q0MyNTY1RDZDNzAwMDQwN0NGIC8qIFBsYXRmb3JtUERGRG9jdW1lbnQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjlEMDUzMDI1
MzE0MjQzMDA0MjIwOTggLyogUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjlEMDUyRTI1MzEzRTI2MDA0
MjIwOTggLyogUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzJBNzNCRUYyNDVBM0Y5MDAwMUM5RDAz
IC8qIEFuaW1hdGlvbkZyYW1lUmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNzIyQTgxNUMyMzhGRDUwNTAwQzAwNTgzIC8qIEFuaW1hdGlvbkZyYW1l
UmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTcyQUI5QTIxMjU1QTlGREUwMEU2RUJGMSAvKiBOYXRpdmVJbWFnZVJlZmVyZW5jZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJBQjlBMUYyNTVBOUVB
NjAwRTZFQkYxIC8qIE5hdGl2ZUltYWdlUmVmZXJlbmNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTcwNTUsNyArNzA1Nyw3IEBACiAJCTJENUM5
Q0ZDMTlDN0I1MkUwMEIzQzVDMSAvKiBQYWdlT3ZlcmxheS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBQYWdlT3ZlcmxheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkyRDVDOUNGRDE5QzdCNTJFMDBCM0M1QzEgLyogUGFnZU92ZXJsYXlDb250cm9sbGVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhZ2VPdmVybGF5Q29udHJvbGxl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJENUM5Q0ZFMTlDN0I1MkUwMEIz
QzVDMSAvKiBQYWdlT3ZlcmxheUNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUGFnZU92ZXJsYXlDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTJENkU0NjgyMTdENjYwRjUwMEVDRjhCQiAvKiBQREZEb2N1bWVudEltYWdlTWFjLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUERGRG9jdW1lbnRJbWFn
ZU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkQ2RTQ2ODIxN0Q2NjBGNTAw
RUNGOEJCIC8qIE5hdGl2ZVBERkRvY3VtZW50TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gTmF0aXZlUERGRG9jdW1lbnRNYWMubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTJENkYzRThBMUMxRUNCMUMwMDYxREJENCAvKiBNb2NrUGFnZU92ZXJs
YXkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9ja1BhZ2VPdmVy
bGF5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ2RjNFOEIxQzFFQ0IxQzAw
NjFEQkQ0IC8qIE1vY2tQYWdlT3ZlcmxheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBNb2NrUGFnZU92ZXJsYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ2
RjNFOEMxQzFFQ0IxQzAwNjFEQkQ0IC8qIE1vY2tQYWdlT3ZlcmxheS5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gTW9ja1BhZ2VPdmVybGF5LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTEwMDMwLDYgKzEwMDMyLDEwIEBACiAJCTcyN0FGRUQzMUEyRUE2QTAwMDA0NDJFOCAv
KiBFWFRzUkdCLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBFWFRzUkdCLmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI5OUJDNjQyM0Q2ODZBNjAwQ0M2ODgzIC8qIEFscGhh
UHJlbXVsdGlwbGljYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWxwaGFQcmVtdWx0aXBsaWNhdGlv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Mjk5QkM2NjIzRDY4NkM2MDBDQzY4
ODMgLyogUmVuZGVyaW5nTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJpbmdNb2RlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyOUM0NUM3MjU2NEYwRTEwMDA0MDdDRiAvKiBO
YXRpdmVQREZEb2N1bWVudENHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5hdGl2ZVBERkRvY3Vt
ZW50Q0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjlDNDVDOTI1NjRGODFC
MDAwNDA3Q0YgLyogTmF0aXZlUERGRG9jdW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmF0
aXZlUERGRG9jdW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjlDNDVD
QTI1NjRGODFCMDAwNDA3Q0YgLyogTmF0aXZlUERGRG9jdW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TmF0aXZlUERGRG9jdW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI5QzQ1
Q0MyNTY1RDZDNzAwMDQwN0NGIC8qIFBsYXRmb3JtUERGRG9jdW1lbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUGxhdGZvcm1QREZEb2N1bWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
MjlEMDUyRTI1MzEzRTI2MDA0MjIwOTggLyogUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3MkFCOUExRjI1NUE5RUE2MDBFNkVCRjEgLyogTmF0aXZlSW1h
Z2VSZWZlcmVuY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmF0aXZlSW1hZ2VSZWZlcmVuY2UuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJCQUMzQTQyM0UxNzMyNzAwOEQ3NDFDIC8qIElt
YWdlQnVmZmVyQmFja2VuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MjYyODksMTAgKzI2Mjk1LDkgQEAKIAkJCQkxQzIxRTU3QTE4M0VEMUZGMDAxQzI4OUQgLyogSU9T
dXJmYWNlUG9vbC5jcHAgKi8sCiAJCQkJMUMyMUU1N0IxODNFRDFGRjAwMUMyODlEIC8qIElPU3Vy
ZmFjZVBvb2wuaCAqLywKIAkJCQkzNzdBM0E4RjE1RUZDRTlBMDA1OUY1QzcgLyogTmF0aXZlSW1h
Z2VDRy5jcHAgKi8sCisJCQkJNzI5QzQ1QzcyNTY0RjBFMTAwMDQwN0NGIC8qIE5hdGl2ZVBERkRv
Y3VtZW50Q0cuY3BwICovLAogCQkJCUIyNzUzNTM1MEIwNTM4MTQwMDJDRTY0RiAvKiBQYXRoQ0cu
Y3BwICovLAogCQkJCUE4MEEzOEZEMEU1MENDODIwMEEyNUVCQyAvKiBQYXR0ZXJuQ0cuY3BwICov
LAotCQkJCUIyNzUzNTM2MEIwNTM4MTQwMDJDRTY0RiAvKiBQREZEb2N1bWVudEltYWdlLmNwcCAq
LywKLQkJCQlCMjc1MzUzNzBCMDUzODE0MDAyQ0U2NEYgLyogUERGRG9jdW1lbnRJbWFnZS5oICov
LAogCQkJCTFGQzQwRkI4MTY1NUM1OTEwMDQwRjI5RSAvKiBTdWJpbWFnZUNhY2hlV2l0aFRpbWVy
LmNwcCAqLywKIAkJCQkxRkM0MEZCNzE2NTVDNTkxMDA0MEYyOUUgLyogU3ViaW1hZ2VDYWNoZVdp
dGhUaW1lci5oICovLAogCQkJCUIyNzUzNTJBMEIwNTM4MTQwMDJDRTY0RiAvKiBUcmFuc2Zvcm1h
dGlvbk1hdHJpeENHLmNwcCAqLywKQEAgLTI2MzE4LDcgKzI2MzIzLDcgQEAKIAkJCQlCMjc1MzU0
RTBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2VNYWMubW0gKi8sCiAJCQkJQjI3NTM1NEYwQjA1Mzgx
NDAwMkNFNjRGIC8qIEludFBvaW50TWFjLm1tICovLAogCQkJCUIyNzUzNTUxMEIwNTM4MTQwMDJD
RTY0RiAvKiBJbnRTaXplTWFjLm1tICovLAotCQkJCTJENkU0NjgyMTdENjYwRjUwMEVDRjhCQiAv
KiBQREZEb2N1bWVudEltYWdlTWFjLm1tICovLAorCQkJCTJENkU0NjgyMTdENjYwRjUwMEVDRjhC
QiAvKiBOYXRpdmVQREZEb2N1bWVudE1hYy5tbSAqLywKIAkJCQkxNjNFODhGNTExOEEzOUQyMDBF
RDkyMzEgLyogU2ltcGxlRm9udERhdGFDb3JlVGV4dC5jcHAgKi8sCiAJCQkJQzExQTlFRDIyMTQw
NTc4QjAwQ0ZCMjBBIC8qIFN3aXRjaGluZ0dQVUNsaWVudC5jcHAgKi8sCiAJCQkJQzExQTlFQ0Qy
MTQwM0E1QzAwQ0ZCMjBBIC8qIFN3aXRjaGluZ0dQVUNsaWVudC5oICovLApAQCAtMjY1MzUsNiAr
MjY1NDAsOCBAQAogCQkJCTcyNTIzOTZCMjU0Q0FEQzIwMEY1RkIxNSAvKiBOYXRpdmVJbWFnZS5j
cHAgKi8sCiAJCQkJNTVBMzM2RjYxRDgyMDlGNDAwMjJDNEM3IC8qIE5hdGl2ZUltYWdlLmggKi8s
CiAJCQkJNzJBQjlBMUYyNTVBOUVBNjAwRTZFQkYxIC8qIE5hdGl2ZUltYWdlUmVmZXJlbmNlLmgg
Ki8sCisJCQkJNzI5QzQ1QzkyNTY0RjgxQjAwMDQwN0NGIC8qIE5hdGl2ZVBERkRvY3VtZW50LmNw
cCAqLywKKwkJCQk3MjlDNDVDQTI1NjRGODFCMDAwNDA3Q0YgLyogTmF0aXZlUERGRG9jdW1lbnQu
aCAqLywKIAkJCQlCMjc1MzU1MjBCMDUzODE0MDAyQ0U2NEYgLyogUGF0aC5jcHAgKi8sCiAJCQkJ
QjI3NTM1NTMwQjA1MzgxNDAwMkNFNjRGIC8qIFBhdGguaCAqLywKIAkJCQlBODhERDQ4ODBCNDYy
OUIwMDBDMDI5OTAgLyogUGF0aFRyYXZlcnNhbFN0YXRlLmNwcCAqLywKQEAgLTI2NTQzLDExICsy
NjU1MCwxNCBAQAogCQkJCTJENTAwMkZBMUI1NkQ3OTkwMDIwQUFGNyAvKiBQYXRoVXRpbGl0aWVz
LmggKi8sCiAJCQkJQThGQTZFNUMwRTRDRkRFRDAwRDVDRjQ5IC8qIFBhdHRlcm4uY3BwICovLAog
CQkJCUE4RkE2RTVCMEU0Q0ZERUQwMEQ1Q0Y0OSAvKiBQYXR0ZXJuLmggKi8sCisJCQkJQjI3NTM1
MzYwQjA1MzgxNDAwMkNFNjRGIC8qIFBERkRvY3VtZW50SW1hZ2UuY3BwICovLAorCQkJCUIyNzUz
NTM3MEIwNTM4MTQwMDJDRTY0RiAvKiBQREZEb2N1bWVudEltYWdlLmggKi8sCiAJCQkJNzI2RDU2
RTEyNTNBRTA0MzAwMDJFRjkwIC8qIFBsYXRmb3JtSW1hZ2UuaCAqLywKIAkJCQk3MkJBQzNBNjIz
RTE3MzI4MDA4RDc0MUMgLyogUGxhdGZvcm1JbWFnZUJ1ZmZlci5oICovLAogCQkJCTU1MDY0MEFE
MjQwNzU2REEwMEFBRTA0NSAvKiBQbGF0Zm9ybUltYWdlQnVmZmVyQmFja2VuZC5oICovLAogCQkJ
CTA1NjJGOTYwMTU3M0Y4OEYwMDMxQ0ExNiAvKiBQbGF0Zm9ybUxheWVyLmggKi8sCiAJCQkJQ0VF
RkNEN0IxOURCMzNEQzAwMzg3NkQ3IC8qIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oICov
LAorCQkJCTcyOUM0NUNDMjU2NUQ2QzcwMDA0MDdDRiAvKiBQbGF0Zm9ybVBERkRvY3VtZW50Lmgg
Ki8sCiAJCQkJMDcyODQ3RTIxNkVCQzVCMDAwNDNDRkE0IC8qIFBsYXRmb3JtVGV4dFRyYWNrLmgg
Ki8sCiAJCQkJMDc0RTgyQjgxOEE2OUYwRTAwN0VGNTRDIC8qIFBsYXRmb3JtVGltZVJhbmdlcy5j
cHAgKi8sCiAJCQkJMDc0RTgyQjkxOEE2OUYwRTAwN0VGNTRDIC8qIFBsYXRmb3JtVGltZVJhbmdl
cy5oICovLApAQCAtMzM1ODgsNiArMzM1OTgsNyBAQAogCQkJCTcyNkQ1NkUzMjUzQUUzNjYwMDAy
RUY5MCAvKiBOYXRpdmVJbWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzJBQjlBMjEyNTVBOUZE
RTAwRTZFQkYxIC8qIE5hdGl2ZUltYWdlUmVmZXJlbmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4
M0IyRDE3NTFCOEJDRDZBMDBBMDJFNDcgLyogTmF0aXZlTm9kZUZpbHRlci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNzI5QzQ1Q0QyNTY2MDUzNDAwMDQwN0NGIC8qIE5hdGl2ZVBERkRvY3VtZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlFMTBCOUI2QzBCNzQ3NTk5MDAzRUQ4OTAgLyogTmF0aXZlWFBh
dGhOU1Jlc29sdmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0NDRjAyNzBBRjZDNTI5MDAwMThF
ODkgLyogTmF2aWdhdGlvbkFjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc5RjQzRDQxMDc1
RTQ0QTAwMDBGODNCIC8qIE5hdmlnYXRpb25TY2hlZHVsZXIuaCBpbiBIZWFkZXJzICovLApAQCAt
MzM4MjMsNiArMzM4MzQsNyBAQAogCQkJCTA3Rjk0NDE2MTg2NEQwNDYwMDVEMzFDQiAvKiBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzNUM0NzY5MDlB
QzRENDMwMEE2QUFCNCAvKiBQbGF0Zm9ybU1vdXNlRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUM1OTg5MDU4MTRFOUMyOTkwMEU4RDE4QiAvKiBQbGF0Zm9ybVBhc3RlYm9hcmQuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTcyOUM0NUNFMjU2NjA1NkMwMDA0MDdDRiAvKiBQbGF0Zm9ybVBERkRvY3Vt
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0VDMDFENzBDMjc0RUI0MDA5RjRFQzkgLyogUGxh
dGZvcm1TY3JlZW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTI5N0JFM0Q1MTZDMDNDMDgwMDMzMTZC
RCAvKiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMjk3QkUzRDYxNkMwM0MwQjAwMzMxNkJEIC8qIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9p
Y2UuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJ
bWFnZS5jcHAKaW5kZXggNWNjOTMzODMyNTc0ZGNiZWJlZDgyYzJjMGJjZThmMDBjMmJjYTcyZS4u
NjZiNjUwYzYyYWEwNTI2NTkwN2MwODkyOWQyNTc0ZmJiNzkyZmZhMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5j
bHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1
ZGUgIk1lbW9yeUNhY2hlLmgiCisjaW5jbHVkZSAiTmF0aXZlUERGRG9jdW1lbnQuaCIKICNpbmNs
dWRlICJSZW5kZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHSW1hZ2UuaCIKICNpbmNsdWRlICJT
ZWN1cml0eU9yaWdpbi5oIgpAQCAtNDksMTAgKzUwLDYgQEAKICNpbmNsdWRlICJTeXN0ZW1NZW1v
cnkuaCIKICNlbmRpZgogCi0jaWYgVVNFKENHKQotI2luY2x1ZGUgIlBERkRvY3VtZW50SW1hZ2Uu
aCIKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIENhY2hlZEltYWdlOjpDYWNoZWRJ
bWFnZShDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBQQUw6OlNlc3Npb25J
RCYgc2Vzc2lvbklELCBjb25zdCBDb29raWVKYXIqIGNvb2tpZUphcikKQEAgLTUyNiw4ICs1MjMs
OCBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0YUlmTmVl
ZGVkKFNoYXJlZEJ1ZmZlciogZGF0YSkgY29ucwogewogICAgIGlmICghZGF0YSB8fCAhaXNQb3N0
U2NyaXB0UmVzb3VyY2UoKSkKICAgICAgICAgcmV0dXJuIGRhdGE7Ci0jaWYgUExBVEZPUk0oTUFD
KSAmJiAhVVNFKFdFQktJVF9JTUFHRV9ERUNPREVSUykKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoUERGRG9jdW1lbnRJbWFnZTo6Y29udmVydFBvc3RTY3JpcHREYXRhVG9QREYoZGF0
YS0+Y3JlYXRlQ0ZEYXRhKCkpLmdldCgpKTsKKyNpZiBFTkFCTEUoUERGRE9DVU1FTlRJTUFHRSkg
JiYgRU5BQkxFKFBERktJVF9GT1JfUERGRE9DVU1FTlRJTUFHRSkKKyAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoTmF0aXZlUERGRG9jdW1lbnQ6OmNvbnZlcnRQb3N0U2NyaXB0RGF0YVRv
UERGKGRhdGEtPmNyZWF0ZUNGRGF0YSgpKS5nZXQoKSk7CiAjZWxzZQogICAgIC8vIExvYWRpbmcg
dGhlIGltYWdlIHNob3VsZCBoYXZlIGJlZW4gY2FuY2VsZWQgaWYgdGhlIHN5c3RlbSBkb2VzIG5v
dCBzdXBwb3J0IGNvbnZlcnRpbmcgUG9zdFNjcmlwdCB0byBQREYuCiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmNwcAppbmRleCA1Y2FjYTg1NDUyYzFhNjk4Yjk1ZTRkZjQ0MDA4NThjOTYz
NDVlY2U1Li5jYTQ4OWYwODA3ZWI1MDJhNTc3NWU2ZmM3ZDBiM2YwMDk4NjhlNjI4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5j
cHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiTWVk
aWFQbGF5ZXIuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGUuaCIKKyNpbmNsdWRlICJO
YXRpdmVQREZEb2N1bWVudC5oIgogI2luY2x1ZGUgIlJvdW5kZWRSZWN0LmgiCiAjaW5jbHVkZSAi
VGV4dFJ1bi5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KQEAgLTc0NCw2ICs3
NDUsMTkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFn
ZSYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2UKICAgICBkcmF3UGxhdGZvcm1JbWFnZShp
bWFnZS5wbGF0Zm9ybUltYWdlKCksIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlv
bnMpOwogfQogCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZVBERkRvY3VtZW50KE5h
dGl2ZVBERkRvY3VtZW50JiBwZGZEb2N1bWVudCwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit7CisgICAgaWYgKHBhaW50aW5nRGlz
YWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBt
X2ltcGwtPmRyYXdOYXRpdmVQREZEb2N1bWVudChwZGZEb2N1bWVudCwgaW1hZ2VTaXplLCBkZXN0
UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBw
ZGZEb2N1bWVudC5kcmF3KCp0aGlzLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRp
b25zKTsKK30KKwogSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKElt
YWdlJiBpbWFnZSwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKIHsKICAgICByZXR1cm4gZHJhd0lt
YWdlKGltYWdlLCBGbG9hdFJlY3QoZGVzdGluYXRpb24sIGltYWdlLnNpemUoKSksIEZsb2F0UmVj
dChGbG9hdFBvaW50KCksIGltYWdlLnNpemUoKSksIGltYWdlUGFpbnRpbmdPcHRpb25zKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgK
aW5kZXggNDUzOWZiYjZkYmYzZWM3ODNjNjEzMzg2ZWEyNTQ5NGY0ZWI2YjFhNC4uN2ViMDVjMDJj
OWQ2OTVmYTA3ZDc4NzdjZTNiYzY4MTI0OTIzZjQ4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTkzLDYgKzkzLDggQEAg
Y2xhc3MgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOwogY2xhc3MgSW1hZ2VCdWZmZXI7
CiBjbGFzcyBJbnRSZWN0OwogY2xhc3MgTWVkaWFQbGF5ZXI7CitjbGFzcyBOYXRpdmVJbWFnZTsK
K2NsYXNzIE5hdGl2ZVBERkRvY3VtZW50OwogY2xhc3MgUm91bmRlZFJlY3Q7CiBjbGFzcyBHcmFw
aGljc0NvbnRleHRHTDsKIGNsYXNzIFBhdGg7CkBAIC0zODAsNiArMzgyLDcgQEAgcHVibGljOgog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3Ryb2tlUmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9h
dCBsaW5lV2lkdGgpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3TmF0aXZlSW1hZ2Uo
TmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiA9IHsgfSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3TmF0aXZlUERGRG9j
dW1lbnQoTmF0aXZlUERGRG9jdW1lbnQmLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgSW1hZ2VE
cmF3UmVzdWx0IGRyYXdJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9u
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IEltYWdlT3JpZW50YXRpb246OkZyb21J
bWFnZSB9KTsKICAgICBXRUJDT1JFX0VYUE9SVCBJbWFnZURyYXdSZXN1bHQgZHJhd0ltYWdlKElt
YWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmID0geyBJbWFnZU9yaWVudGF0aW9uOjpGcm9tSW1hZ2UgfSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgKaW5k
ZXggNWM4MjVmN2Q0MWI5ODYxNmQxN2ZkYjhlYmU3Y2ZmZDdkMmJmY2M4Yy4uOTUxM2YxODc5NGNm
MzZkMWU0M2EzZDBlZGNiYWIyNGU1ZGNkZDJmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaApAQCAtNzEsNiArNzEs
NyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVm
ZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3Vy
Y2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBk
cmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd05hdGl2
ZVBERkRvY3VtZW50KE5hdGl2ZVBERkRvY3VtZW50JiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNp
emUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdQ
YXR0ZXJuKE5hdGl2ZUltYWdlJiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3Bh
Y2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZv
aWQgZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKSA9IDA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKaW5kZXggOTM3YWE0
ZDM1OTNkMWQyMzkxNzMzZjBjMDI3NzRhMjExMTMzNjVlMS4uZTVjYjFlMjBkYTIxZTdjZTBiYzU1
MmZlZTkyODBhNzYzOWE0OGQyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkltYWdlT2JzZXJ2ZXIuaCIK
ICNpbmNsdWRlICJMZW5ndGguaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCisjaW5j
bHVkZSAiUERGRG9jdW1lbnRJbWFnZS5oIgogI2luY2x1ZGUgIlNWR0ltYWdlLmgiCiAjaW5jbHVk
ZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8bWF0aC5oPgpAQCAtNDIsNyArNDMsNiBAQAog
I2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAogI2lmIFVTRShDRykKLSNpbmNsdWRl
ICJQREZEb2N1bWVudEltYWdlLmgiCiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5k
YXRpb24uaD4KICNlbmRpZgogCkBAIC03MCw3ICs3MCw3IEBAIFJlZlB0cjxJbWFnZT4gSW1hZ2U6
OmNyZWF0ZShJbWFnZU9ic2VydmVyJiBvYnNlcnZlcikKIAogICAgIGF1dG8gdXJsID0gb2JzZXJ2
ZXIuc291cmNlVXJsKCk7CiAgICAgaWYgKGlzUERGUmVzb3VyY2UobWltZVR5cGUsIHVybCkgfHwg
aXNQb3N0U2NyaXB0UmVzb3VyY2UobWltZVR5cGUsIHVybCkpIHsKLSNpZiBVU0UoQ0cpICYmICFV
U0UoV0VCS0lUX0lNQUdFX0RFQ09ERVJTKQorI2lmIEVOQUJMRShQREZET0NVTUVOVElNQUdFKQog
ICAgICAgICByZXR1cm4gUERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlKCZvYnNlcnZlcik7CiAjZWxz
ZQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL05hdGl2ZVBERkRvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL05hdGl2ZVBERkRvY3VtZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YzliZWRi
YmM0N2Q2ZDkwYzQyZWZjNzQ0MThhYzA1NzRjMTU5NGM3Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlUERGRG9jdW1lbnQuY3BwCkBAIC0w
LDAgKzEsMjQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOYXRpdmVQREZEb2N1bWVudC5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK05hdGl2ZVBERkRvY3VtZW50OjpOYXRpdmVQREZEb2N1
bWVudChTaGFyZWRCdWZmZXImIGRhdGEsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFBsYXRmb3JtUERGRG9jdW1lbnRQdHImJiBwbGF0Zm9y
bVBERkRvY3VtZW50KQorICAgIDogbV9kYXRhKG1ha2VSZWYoZGF0YSkpCisgICAgLCBtX3JlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcihyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCisgICAg
LCBtX3BsYXRmb3JtUERGRG9jdW1lbnQoV1RGTW92ZShwbGF0Zm9ybVBERkRvY3VtZW50KSkKK3sK
KyAgICBpZiAocGFnZUNvdW50KCkpCisgICAgICAgIGNvbXB1dGVCb3VuZHNGb3JDdXJyZW50UGFn
ZSgpOworfQorCitOYXRpdmVQREZEb2N1bWVudDo6fk5hdGl2ZVBERkRvY3VtZW50KCkKK3sKKyAg
ICBpZiAobV9vYnNlcnZlcikKKyAgICAgICAgbV9vYnNlcnZlci0+cmVsZWFzZU5hdGl2ZVBERkRv
Y3VtZW50KG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKK30KKworRmxvYXRTaXplIE5h
dGl2ZVBERkRvY3VtZW50OjpzaXplKCkgY29uc3QKK3sKKyAgICBGbG9hdFNpemUgZXhwYW5kZWRD
cm9wQm94U2l6ZSA9IEZsb2F0U2l6ZShleHBhbmRlZEludFNpemUobV9jcm9wQm94LnNpemUoKSkp
OworCisgICAgaWYgKG1fcm90YXRpb25EZWdyZWVzID09IDkwIHx8IG1fcm90YXRpb25EZWdyZWVz
ID09IDI3MCkKKyAgICAgICAgcmV0dXJuIGV4cGFuZGVkQ3JvcEJveFNpemUudHJhbnNwb3NlZFNp
emUoKTsKKyAgICByZXR1cm4gZXhwYW5kZWRDcm9wQm94U2l6ZTsKK30KKworc3RhdGljIHZvaWQg
dHJhbnNmb3JtQ29udGV4dEZvclBhaW50aW5nKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0KQoreworICAg
IGZsb2F0IGhTY2FsZSA9IGRlc3RSZWN0LndpZHRoKCkgLyBzcmNSZWN0LndpZHRoKCk7CisgICAg
ZmxvYXQgdlNjYWxlID0gZGVzdFJlY3QuaGVpZ2h0KCkgLyBzcmNSZWN0LmhlaWdodCgpOworCisg
ICAgaWYgKGhTY2FsZSAhPSB2U2NhbGUpIHsKKyAgICAgICAgZmxvYXQgbWluaW11bVNjYWxlID0g
c3RkOjptYXgoKGRlc3RSZWN0LndpZHRoKCkgLSAwLjUpIC8gc3JjUmVjdC53aWR0aCgpLCAoZGVz
dFJlY3QuaGVpZ2h0KCkgLSAwLjUpIC8gc3JjUmVjdC5oZWlnaHQoKSk7CisgICAgICAgIGZsb2F0
IG1heGltdW1TY2FsZSA9IHN0ZDo6bWluKChkZXN0UmVjdC53aWR0aCgpICsgMC41KSAvIHNyY1Jl
Y3Qud2lkdGgoKSwgKGRlc3RSZWN0LmhlaWdodCgpICsgMC41KSAvIHNyY1JlY3QuaGVpZ2h0KCkp
OworCisgICAgICAgIC8vIElmIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIHR3byBzY2FsZXMg
aXMgZHVlIHRvIGludGVnZXIgcm91bmRpbmcgb2YgaW1hZ2Ugc2l6ZXMsCisgICAgICAgIC8vIHVz
ZSB0aGUgc21hbGxlciBvZiB0aGUgdHdvIG9yaWdpbmFsIHNjYWxlcyB0byBlbnN1cmUgdGhhdCB0
aGUgaW1hZ2UgZml0cyBpbnNpZGUgdGhlCisgICAgICAgIC8vIHNwYWNlIG9yaWdpbmFsbHkgYWxs
b2NhdGVkIGZvciBpdC4KKyAgICAgICAgaWYgKG1pbmltdW1TY2FsZSA8PSBtYXhpbXVtU2NhbGUp
IHsKKyAgICAgICAgICAgIGhTY2FsZSA9IHN0ZDo6bWluKGhTY2FsZSwgdlNjYWxlKTsKKyAgICAg
ICAgICAgIHZTY2FsZSA9IGhTY2FsZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIGRyYXdQ
REZQYWdlKCkgcmVsaWVzIG9uIGRyYXdpbmcgdGhlIHdob2xlIFBERiBpbnRvIGEgY29udGV4dCBz
dGFydGluZyBhdCAoMCwgMCkuIFdlIG5lZWQKKyAgICAvLyB0byB0cmFuc2Zvcm0gdGhlIGRlc3Rp
bmF0aW9uIGNvbnRleHQgc3VjaCB0aGF0IHNyY1JlY3Qgb2YgdGhlIHNvdXJjZSBjb250ZXh0IHdp
bGwgYmUgZHJhd24KKyAgICAvLyBpbiBkZXN0UmVjdCBvZiBkZXN0aW5hdGlvbiBjb250ZXh0Lgor
ICAgIGNvbnRleHQudHJhbnNsYXRlKGRlc3RSZWN0LmxvY2F0aW9uKCkgLSBzcmNSZWN0LmxvY2F0
aW9uKCkpOworICAgIGNvbnRleHQuc2NhbGUoRmxvYXRTaXplKGhTY2FsZSwgLXZTY2FsZSkpOwor
ICAgIGNvbnRleHQudHJhbnNsYXRlKDAsIC1zcmNSZWN0LmhlaWdodCgpKTsKK30KKwordm9pZCBO
YXRpdmVQREZEb2N1bWVudDo6dXBkYXRlU25hcHNob3RJZk5lZWRlZChHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QpCit7CisgICAgLy8gQ2xpcHBlZCBvcHRp
b24gaXMgZm9yIHRlc3Rpbmcgb25seSBhbmQgaXQgcmVxdWlyZXMgdGhlIFBERiB0byBiZSByZS1j
YWNoZWQgd2l0aCBlYWNoIGRyYXcuCisgICAgYm9vbCBmb3JjZVVwZGF0ZVNuYXBzaG90ID0gbV9w
ZGZJbWFnZUNhY2hpbmdQb2xpY3kgPT0gUERGSW1hZ2VDYWNoaW5nUG9saWN5OjpDbGlwQm91bmRz
T25seTsKKyAgICBpZiAoIWZvcmNlVXBkYXRlU25hcHNob3QgJiYgbV9zbmFwc2hvdCkgeworICAg
ICAgICAvLyBBZGp1c3QgdGhlIHZpZXctcG9ydCByZWN0YW5nbGVzIGlmIG5vIHJlLWNhY2hpbmcg
d2lsbCBoYXBwZW4uCisgICAgICAgIGlmIChtX3NuYXBzaG90LT50cmFuc2ZlclZpZXdwb3J0KGNv
bnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0KSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBtX3NuYXBzaG90ID0gbnVsbHB0cjsKKyAgICAKKyAgICBGbG9hdFJlY3Qgc25hcHNob3RS
ZWN0OworICAgIHN3aXRjaCAobV9wZGZJbWFnZUNhY2hpbmdQb2xpY3kpIHsKKyAgICBjYXNlIFBE
RkltYWdlQ2FjaGluZ1BvbGljeTo6RGlzYWJsZWQ6CisgICAgICAgIHJldHVybjsKKyAgICBjYXNl
IFBERkltYWdlQ2FjaGluZ1BvbGljeTo6QmVsb3dNZW1vcnlMaW1pdDoKKyAgICAgICAgLy8gS2Vl
cCB0aGUgbWVtb3J5IHVzZWQgYnkgdGhlIGNhY2hlZCBpbWFnZSBiZWxvdyBzb21lIHRocmVzaG9s
ZCwgb3RoZXJ3aXNlIFdlYktpdCBwcm9jZXNzCisgICAgICAgIC8vIHdpbGwgamV0c2FtIGlmIGl0
IGV4Y2VlZHMgaXRzIG1lbW9yeSBsaW1pdC4gT25seSBhIHJlY3RhbmdsZSBmcm9tIHRoZSBQREYg
bWF5IGJlIGNhY2hlZC4KKyAgICAgICAgc25hcHNob3RSZWN0ID0gU25hcHNob3Q6OmNhbGN1bGF0
ZVNuYXBzaG90UmVjdChjb250ZXh0LCBkZXN0UmVjdCk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgUERGSW1hZ2VDYWNoaW5nUG9saWN5OjpDbGlwQm91bmRzT25seToKKyAgICAgICAgc25hcHNo
b3RSZWN0ID0gaW50ZXJzZWN0aW9uKGNvbnRleHQuY2xpcEJvdW5kcygpLCBkZXN0UmVjdCk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgUERGSW1hZ2VDYWNoaW5nUG9saWN5OjpFbmFibGVkOgor
ICAgICAgICBzbmFwc2hvdFJlY3QgPSBkZXN0UmVjdDsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
CisgICAgRmxvYXRTaXplIHNuYXBzaG90U2l6ZSA9IEZsb2F0UmVjdChlbmNsb3NpbmdJbnRSZWN0
KHNuYXBzaG90UmVjdCkpLnNpemUoKTsKKyAgICAKKyAgICAvLyBDYWNoZSB0aGUgUERGIGltYWdl
IG9ubHkgaWYgdGhlIHNpemUgb2YgdGhlIG5ldyBpbWFnZSB3b24ndCBleGNlZWQgdGhlIGNhY2hl
IHRocmVzaG9sZC4KKyAgICBpZiAobV9wZGZJbWFnZUNhY2hpbmdQb2xpY3kgPT0gUERGSW1hZ2VD
YWNoaW5nUG9saWN5OjpCZWxvd01lbW9yeUxpbWl0KSB7CisgICAgICAgIGlmICghU25hcHNob3Q6
OmNhbkNyZWF0ZVNuYXBzaG90KGNvbnRleHQsIHNuYXBzaG90U2l6ZSkpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIAorICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihzbmFwc2hvdFNpemUsIGNvbnRleHQpOworICAgIGlmICgh
aW1hZ2VCdWZmZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8mIGJ1ZmZlckNvbnRleHQg
PSBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpOworCisgICAgLy8gV2UgbmVlZCB0byB0cmFuc2Zvcm0g
dGhlIGNvb3JkaW5hdGUgc3lzdGVtIHN1Y2ggdGhhdCB0b3AtbGVmdCBvZiBhZGp1c3RlZERlc3RS
ZWN0IHdpbGwgYmUgbWFwcGVkIHRvIHRoZQorICAgIC8vIHRvcC1sZWZ0IG9mIGRlc3RSZWN0LiBB
bHRob3VnaCBvbmx5IGltYWdlQnVmZmVyUmVjdC5zaXplKCkgb2YgdGhlIGltYWdlIGNvcGllZCwg
dGhlIHNpemVzIG9mIHNyY1JlY3QKKyAgICAvLyBhbmQgZGVzdFJlY3Qgc2hvdWxkIGJlIHBhc3Nl
ZCB0byB0aGlzIGZ1bmN0aW9uIGJlY2F1c2UgdGhleSBhcmUgdXNlZCB0byBjYWxjdWxhdGUgdGhl
IGltYWdlIHNjYWxpbmcuCisgICAgdHJhbnNmb3JtQ29udGV4dEZvclBhaW50aW5nKGJ1ZmZlckNv
bnRleHQsIGRlc3RSZWN0LCBGbG9hdFJlY3Qoc25hcHNob3RSZWN0LmxvY2F0aW9uKCksIHNyY1Jl
Y3Quc2l6ZSgpKSk7CisgICAgZHJhd1BERlBhZ2UoYnVmZmVyQ29udGV4dCwgaW1hZ2VTaXplKTsK
KworICAgIGF1dG8gdHJhbnNmb3JtID0gY29udGV4dC5nZXRDVE0oR3JhcGhpY3NDb250ZXh0OjpE
ZWZpbml0ZWx5SW5jbHVkZURldmljZVNjYWxlKTsKKyAgICBtX3NuYXBzaG90ID0gU25hcHNob3Q6
OmNyZWF0ZShtYWtlUmVmKCppbWFnZUJ1ZmZlciksIHNuYXBzaG90UmVjdCwgZGVzdFJlY3QsIHNy
Y1JlY3QsIHRyYW5zZm9ybSk7CisgICAgCisgICAgQVNTRVJUKG1fc25hcHNob3QpOworICAgICsr
bV9jYWNoaW5nQ291bnRGb3JUZXN0aW5nOworfQorCit2b2lkIE5hdGl2ZVBERkRvY3VtZW50Ojpk
cmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit7CisgICAgR3JhcGhpY3NDb250ZXh0
U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOworICAgIGNvbnRleHQuc2V0Q29tcG9zaXRl
T3BlcmF0aW9uKG9wdGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSk7CisKKyAgICB1cGRhdGVTbmFw
c2hvdElmTmVlZGVkKGNvbnRleHQsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QpOworCisg
ICAgaWYgKG1fc25hcHNob3QpCisgICAgICAgIG1fc25hcHNob3QtPmRyYXcoY29udGV4dCk7Cisg
ICAgZWxzZSB7CisgICAgICAgIHRyYW5zZm9ybUNvbnRleHRGb3JQYWludGluZyhjb250ZXh0LCBk
ZXN0UmVjdCwgc3JjUmVjdCk7CisgICAgICAgIGRyYXdQREZQYWdlKGNvbnRleHQsIGltYWdlU2l6
ZSk7CisgICAgfQorfQorCit2b2lkIE5hdGl2ZVBERkRvY3VtZW50OjpkdW1wKFdURjo6VGV4dFN0
cmVhbSYgdHMpIGNvbnN0Cit7CisgICAgdHMuZHVtcFByb3BlcnR5KCJwYWdlLWNvdW50IiwgcGFn
ZUNvdW50KCkpOworICAgIHRzLmR1bXBQcm9wZXJ0eSgiY3JvcC1ib3giLCBtX2Nyb3BCb3gpOwor
ICAgIGlmIChtX3JvdGF0aW9uRGVncmVlcykKKyAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJyb3Rh
dGlvbiIsIG1fcm90YXRpb25EZWdyZWVzKTsKK30KKworc3RkOjp1bmlxdWVfcHRyPE5hdGl2ZVBE
RkRvY3VtZW50OjpTbmFwc2hvdD4gTmF0aXZlUERGRG9jdW1lbnQ6OlNuYXBzaG90OjpjcmVhdGUo
UmVmPEltYWdlQnVmZmVyPiYmIGltYWdlQnVmZmVyLCBjb25zdCBGbG9hdFJlY3QmIGltYWdlQnVm
ZmVyUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSkKK3sKKyAgICByZXR1cm4gc3Rk
Ojp1bmlxdWVfcHRyPFNuYXBzaG90PihuZXcgU25hcHNob3QoV1RGTW92ZShpbWFnZUJ1ZmZlciks
IGltYWdlQnVmZmVyUmVjdCwgZGVzdFJlY3QsIHNyY1JlY3QsIHRyYW5zZm9ybSkpOworfQorCitO
YXRpdmVQREZEb2N1bWVudDo6U25hcHNob3Q6OlNuYXBzaG90KFJlZjxJbWFnZUJ1ZmZlcj4mJiBp
bWFnZUJ1ZmZlciwgY29uc3QgRmxvYXRSZWN0JiBzbmFwc2hvdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiB0cmFuc2Zvcm0pCisgICAgOiBtX2ltYWdlQnVmZmVyKFdURk1vdmUoaW1hZ2VCdWZmZXIp
KQorICAgICwgbV9zbmFwc2hvdFJlY3Qoc25hcHNob3RSZWN0KQorICAgICwgbV9kZXN0UmVjdChk
ZXN0UmVjdCkKKyAgICAsIG1fc3JjUmVjdChzcmNSZWN0KQorICAgICwgbV90cmFuc2Zvcm0odHJh
bnNmb3JtKQoreworICAgIEFTU0VSVChtYXhTbmFwc2hvdHNNZW1vcnlDb3N0IC0gbV9hbGxTbmFw
c2hvdHNNZW1vcnlDb3N0ID49IG1lbW9yeUNvc3QoKSk7CisgICAgbV9hbGxTbmFwc2hvdHNNZW1v
cnlDb3N0ICs9IG1lbW9yeUNvc3QoKTsKK30KKworTmF0aXZlUERGRG9jdW1lbnQ6OlNuYXBzaG90
Ojp+U25hcHNob3QoKQoreworICAgIEFTU0VSVChtX2FsbFNuYXBzaG90c01lbW9yeUNvc3QgPj0g
bWVtb3J5Q29zdCgpKTsKKyAgICBtX2FsbFNuYXBzaG90c01lbW9yeUNvc3QgLT0gbWVtb3J5Q29z
dCgpOworfQorCitGbG9hdFJlY3QgTmF0aXZlUERGRG9jdW1lbnQ6OlNuYXBzaG90OjpjYWxjdWxh
dGVTbmFwc2hvdFJlY3QoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0KQoreworICAgIEZsb2F0UmVjdCBkaXJ0eVJlY3QgPSBjb250ZXh0LmNsaXBCb3Vu
ZHMoKTsKKworICAgIC8vIENhbGN1bGF0ZSB0aGUgbWF4aW11bSByZWN0YW5nbGUgd2UgY2FuIGNh
Y2hlIGFyb3VuZCB0aGUgY2VudGVyIG9mIHRoZSBjbGlwcGluZyBib3VuZHMuCisgICAgRmxvYXRT
aXplIG1heFNpemUgPSBtYXhTbmFwc2hvdFNpZGUgLyBjb250ZXh0LnNjYWxlRmFjdG9yKCk7Cisg
ICAgRmxvYXRQb2ludCBtaW5Mb2NhdGlvbiA9IEZsb2F0UG9pbnQoZGlydHlSZWN0LmNlbnRlcigp
IC0gbWF4U2l6ZSAvIDIpOworCisgICAgLy8gRW5zdXJlIHRoZSBjbGlwcGluZyBib3VuZHMgYXJl
IGFsbCBpbmNsdWRlZCBidXQgd2l0aGluIHRoZSBib3VuZHMgb2YgdGhlIGRzdFJlY3QKKyAgICBy
ZXR1cm4gaW50ZXJzZWN0aW9uKHVuaW9uUmVjdChkaXJ0eVJlY3QsIEZsb2F0UmVjdChtaW5Mb2Nh
dGlvbiwgbWF4U2l6ZSkpLCBkZXN0UmVjdCk7Cit9CisKK2Jvb2wgTmF0aXZlUERGRG9jdW1lbnQ6
OlNuYXBzaG90OjpjYW5DcmVhdGVTbmFwc2hvdChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IEZsb2F0U2l6ZSYgaW1hZ2VCdWZmZXJTaXplKQoreworICAgIGF1dG8gbWVtb3J5Q29zdCA9
IEltYWdlQnVmZmVyOjpjb21wYXRpYmxlQnVmZmVyU2l6ZShpbWFnZUJ1ZmZlclNpemUsIGNvbnRl
eHQpLnVuY2xhbXBlZEFyZWEoKSAqIDQ7CisgICAgcmV0dXJuIG1heFNuYXBzaG90c01lbW9yeUNv
c3QgLSBtX2FsbFNuYXBzaG90c01lbW9yeUNvc3QgPj0gbWVtb3J5Q29zdDsKK30KKworYm9vbCBO
YXRpdmVQREZEb2N1bWVudDo6U25hcHNob3Q6OmNhbkJlUmV1c2VkKEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0KSBjb25zdAoreworICAgIC8vIE9sZCBhbmQgbmV3IHNvdXJjZSByZWN0YW5nbGVzIGhhdmUg
dG8gbWF0Y2guCisgICAgaWYgKHNyY1JlY3QgIT0gbV9zcmNSZWN0KQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICAvLyBPbGQgYW5kIG5ldyBzY2FsaW5nIGZhY3RvcnMgImRlc3QgLyBzcmMi
IGhhdmUgdG8gbWF0Y2guCisgICAgaWYgKGRlc3RSZWN0LnNpemUoKSAhPSBtX2Rlc3RSZWN0LnNp
emUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gbV9zbmFwc2hvdFJlY3R0IGNh
biBiZSBtb3ZlZCBpZiBzcmNSZWN0IGFuZCBkZXN0UmVjdC5zaXplKCkgZGlkIG5vdCBjaGFuZ2Uu
CisgICAgRmxvYXRSZWN0IG1vdmVkU25hcHNob3RSZWN0ID0gbV9zbmFwc2hvdFJlY3Q7CisgICAg
bW92ZWRTbmFwc2hvdFJlY3QubW92ZShGbG9hdFNpemUoZGVzdFJlY3QubG9jYXRpb24oKSAtIG1f
ZGVzdFJlY3QubG9jYXRpb24oKSkpOworCisgICAgLy8gbW92ZWRDYWNoZWRJbWFnZVJlY3QgaGFz
IHRvIGNvbnRhaW4gdGhlIHdob2xlIGRpcnR5IHJlY3RhbmdsZS4KKyAgICBGbG9hdFJlY3QgZGly
dHlSZWN0ID0gaW50ZXJzZWN0aW9uKGNvbnRleHQuY2xpcEJvdW5kcygpLCBkZXN0UmVjdCk7Cisg
ICAgaWYgKCFtb3ZlZFNuYXBzaG90UmVjdC5jb250YWlucyhkaXJ0eVJlY3QpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICAvLyBPbGQgYW5kIG5ldyBjb250ZXh0IHNjYWxpbmcgZmFjdG9y
cyBoYXZlIHRvIG1hdGNoIGFzIHdlbGwuCisgICAgQWZmaW5lVHJhbnNmb3JtOjpEZWNvbXBvc2Vk
VHlwZSBkZWNvbXBvc2VkVHJhbnNmb3JtOworICAgIGNvbnRleHQuZ2V0Q1RNKEdyYXBoaWNzQ29u
dGV4dDo6RGVmaW5pdGVseUluY2x1ZGVEZXZpY2VTY2FsZSkuZGVjb21wb3NlKGRlY29tcG9zZWRU
cmFuc2Zvcm0pOworCisgICAgQWZmaW5lVHJhbnNmb3JtOjpEZWNvbXBvc2VkVHlwZSBjYWNoZWRE
ZWNvbXBvc2VkVHJhbnNmb3JtOworICAgIG1fdHJhbnNmb3JtLmRlY29tcG9zZShjYWNoZWREZWNv
bXBvc2VkVHJhbnNmb3JtKTsKKyAgICAKKyAgICByZXR1cm4gZGVjb21wb3NlZFRyYW5zZm9ybS5z
Y2FsZVggPT0gY2FjaGVkRGVjb21wb3NlZFRyYW5zZm9ybS5zY2FsZVggJiYgZGVjb21wb3NlZFRy
YW5zZm9ybS5zY2FsZVkgPT0gY2FjaGVkRGVjb21wb3NlZFRyYW5zZm9ybS5zY2FsZVk7Cit9CisK
K3NpemVfdCBOYXRpdmVQREZEb2N1bWVudDo6U25hcHNob3Q6Om1lbW9yeUNvc3QoKSBjb25zdAor
eworICAgIHJldHVybiBtX2ltYWdlQnVmZmVyLT5iYWNrZW5kU2l6ZSgpLnVuY2xhbXBlZEFyZWEo
KSAqIDQ7Cit9CisKK2Jvb2wgTmF0aXZlUERGRG9jdW1lbnQ6OlNuYXBzaG90Ojp0cmFuc2ZlclZp
ZXdwb3J0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0KQoreworICAgIGlmICghY2FuQmVSZXVzZWQoY29u
dGV4dCwgZGVzdFJlY3QsIHNyY1JlY3QpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBt
X3NuYXBzaG90UmVjdC5tb3ZlKEZsb2F0U2l6ZShkZXN0UmVjdC5sb2NhdGlvbigpIC0gbV9kZXN0
UmVjdC5sb2NhdGlvbigpKSk7CisgICAgbV9kZXN0UmVjdCA9IGRlc3RSZWN0OworICAgIHJldHVy
biB0cnVlOworfQorCit2b2lkIE5hdGl2ZVBERkRvY3VtZW50OjpTbmFwc2hvdDo6ZHJhdyhHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQpCit7CisgICAgY29udGV4dC5kcmF3SW1hZ2VCdWZmZXIobV9p
bWFnZUJ1ZmZlciwgbV9kZXN0UmVjdCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZVBERkRvY3Vt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVQREZEb2N1bWVu
dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmViOTEzNjQzOGU3NzM5NjA3ZTcwNDZkZjg3NzY2OTFkODY2ODYzMmEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRp
dmVQREZEb2N1bWVudC5oCkBAIC0wLDAgKzEsMTI4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQWZmaW5l
VHJhbnNmb3JtLmgiCisjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiUERGSW1hZ2VD
YWNoaW5nUG9saWN5LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1QREZEb2N1bWVudC5oIgorI2luY2x1
ZGUgIlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIEltYWdlQnVmZmVyOworc3RydWN0IEltYWdlUGFpbnRpbmdPcHRpb25zOworCitj
bGFzcyBOYXRpdmVQREZEb2N1bWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPE5hdGl2ZVBERkRvY3Vt
ZW50PiB7CitwdWJsaWM6CisgICAgY2xhc3MgT2JzZXJ2ZXIgeworICAgIHB1YmxpYzoKKyAgICAg
ICAgdmlydHVhbCB+T2JzZXJ2ZXIoKSA9IGRlZmF1bHQ7CisgICAgICAgIHZpcnR1YWwgdm9pZCBy
ZWxlYXNlTmF0aXZlUERGRG9jdW1lbnQoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSA9IDA7
CisgICAgcHJvdGVjdGVkOgorICAgICAgICBPYnNlcnZlcigpID0gZGVmYXVsdDsKKyAgICB9Owor
CisgICAgc3RhdGljIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxOYXRpdmVQREZEb2N1bWVudD4gY3Jl
YXRlKFNoYXJlZEJ1ZmZlciYsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciA9IFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSk7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB+
TmF0aXZlUERGRG9jdW1lbnQoKTsKKworICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGF0YS5nZXQoKTsgfQorICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcjsgfQorICAgIHZvaWQgc2V0T2JzZXJ2ZXIoT2JzZXJ2ZXIq
IG9ic2VydmVyKSB7IG1fb2JzZXJ2ZXIgPSBvYnNlcnZlcjsgfQorCisgICAgRmxvYXRTaXplIHNp
emUoKSBjb25zdDsKKyAgICB1bnNpZ25lZCBwYWdlQ291bnQoKSBjb25zdDsKKworICAgIFBERklt
YWdlQ2FjaGluZ1BvbGljeSBwZGZJbWFnZUNhY2hpbmdQb2xpY3koKSBjb25zdCB7IHJldHVybiBt
X3BkZkltYWdlQ2FjaGluZ1BvbGljeTsgfQorICAgIHZvaWQgc2V0UERGSW1hZ2VDYWNoaW5nUG9s
aWN5KFBERkltYWdlQ2FjaGluZ1BvbGljeSBwZGZJbWFnZUNhY2hpbmdQb2xpY3kpIHsgbV9wZGZJ
bWFnZUNhY2hpbmdQb2xpY3kgPSBwZGZJbWFnZUNhY2hpbmdQb2xpY3k7IH0KKworICAgIHZvaWQg
Y29tcHV0ZUJvdW5kc0ZvckN1cnJlbnRQYWdlKCk7CisgICAgdm9pZCBkcmF3KEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
Jik7CisKKyAgICB1bnNpZ25lZCBjYWNoaW5nQ291bnRGb3JUZXN0aW5nKCkgY29uc3QgeyByZXR1
cm4gbV9jYWNoaW5nQ291bnRGb3JUZXN0aW5nOyB9CisgICAgc2l6ZV90IHNuYXBzaG90TWVtb3J5
Q29zdCgpIGNvbnN0IHsgcmV0dXJuIG1fc25hcHNob3QgPyBtX3NuYXBzaG90LT5tZW1vcnlDb3N0
KCkgOiAwOyB9CisgICAgdm9pZCBjbGVhclNuYXBzaG90KCkgeyBtX3NuYXBzaG90ID0gbnVsbHB0
cjsgfQorICAgIAorICAgIHZvaWQgZHVtcChXVEY6OlRleHRTdHJlYW0mKSBjb25zdDsKKworI2lm
IEVOQUJMRShQREZLSVRfRk9SX1BERkRPQ1VNRU5USU1BR0UpCisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFJldGFpblB0cjxDRk11dGFibGVEYXRhUmVmPiBjb252ZXJ0UG9zdFNjcmlwdERhdGFU
b1BERihSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIHBvc3RTY3JpcHREYXRhKTsKKyNlbmRpZgorCitw
cml2YXRlOgorICAgIGNsYXNzIFNuYXBzaG90IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8U25hcHNob3Q+IGNyZWF0ZShSZWY8SW1hZ2VCdWZmZXI+JiYsIGNv
bnN0IEZsb2F0UmVjdCYgaW1hZ2VCdWZmZXJSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpOworCisg
ICAgICAgIH5TbmFwc2hvdCgpOworICAgICAgICAKKyAgICAgICAgLy8gVG8gYXZvaWQgdGhlIGpl
dHNhbSBvbiBpT1MsIHdlIGFyZSBnb2luZyB0byBsaW1pdCB0aGUgc2l6ZSBvZiBhbGwgdGhlIFBE
RiBzbmFwc2hvdHMgdG8gYmUgNjRNQi4KKyAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qg
bWF4U25hcHNob3RTaWRlID0gNCAqIDEwMjQ7CisgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6
ZV90IG1heFNuYXBzaG90QXJlYSA9IG1heFNuYXBzaG90U2lkZSAqIG1heFNuYXBzaG90U2lkZTsK
KyAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgbWF4U25hcHNob3RzTWVtb3J5Q29zdCA9
IG1heFNuYXBzaG90QXJlYSAqIDQ7CisKKyAgICAgICAgc3RhdGljIEZsb2F0UmVjdCBjYWxjdWxh
dGVTbmFwc2hvdFJlY3QoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCk7CisgICAgICAgIHN0YXRpYyBib29sIGNhbkNyZWF0ZVNuYXBzaG90KEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VCdWZmZXJTaXplKTsKKworICAgICAgICBzaXplX3Qg
bWVtb3J5Q29zdCgpIGNvbnN0OworICAgICAgICBib29sIHRyYW5zZmVyVmlld3BvcnQoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0KTsKKyAgICAgICAgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYpOworCisgICAgcHJp
dmF0ZToKKyAgICAgICAgU25hcHNob3QoUmVmPEltYWdlQnVmZmVyPiYmLCBjb25zdCBGbG9hdFJl
Y3QmIGltYWdlQnVmZmVyUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKKyAgICAgICAgYm9vbCBj
YW5CZVJldXNlZChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QpIGNvbnN0OworCisgICAgICAgIFJlZjxJbWFnZUJ1ZmZl
cj4gbV9pbWFnZUJ1ZmZlcjsKKyAgICAgICAgRmxvYXRSZWN0IG1fc25hcHNob3RSZWN0OworICAg
ICAgICBGbG9hdFJlY3QgbV9kZXN0UmVjdDsKKyAgICAgICAgRmxvYXRSZWN0IG1fc3JjUmVjdDsK
KyAgICAgICAgQWZmaW5lVHJhbnNmb3JtIG1fdHJhbnNmb3JtOworICAgICAgICBpbmxpbmUgc3Rh
dGljIHNpemVfdCBtX2FsbFNuYXBzaG90c01lbW9yeUNvc3QgeyAwIH07CisgICAgfTsKKworICAg
IE5hdGl2ZVBERkRvY3VtZW50KFNoYXJlZEJ1ZmZlciYsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciwgUGxhdGZvcm1QREZEb2N1bWVudFB0ciYmKTsKKworICAgIHZvaWQgdXBkYXRlU25hcHNo
b3RJZk5lZWRlZChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0KTsKKyAg
ICB2b2lkIGRyYXdQREZQYWdlKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0U2l6ZSYgaW1h
Z2VTaXplKTsKKworICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7CisKKyAgICBP
YnNlcnZlciogbV9vYnNlcnZlciB7IG51bGxwdHIgfTsKKyAgICBQbGF0Zm9ybVBERkRvY3VtZW50
UHRyIG1fcGxhdGZvcm1QREZEb2N1bWVudDsKKworICAgIEZsb2F0UmVjdCBtX2Nyb3BCb3g7Cisg
ICAgaW50IG1fcm90YXRpb25EZWdyZWVzIHsgMCB9OyAvLyBDYW4gb25seSBiZSAwLCA5MCwgMTgw
LCBvciAyNzAgZGVncmVlcy4KKworICAgIFBERkltYWdlQ2FjaGluZ1BvbGljeSBtX3BkZkltYWdl
Q2FjaGluZ1BvbGljeSB7IGRlZmF1bHRQREZJbWFnZUNhY2hpbmdQb2xpY3kgfTsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8U25hcHNob3Q+IG1fc25hcHNob3Q7CisgICAgdW5zaWduZWQgbV9jYWNoaW5n
Q291bnRGb3JUZXN0aW5nIHsgMCB9OworfTsKKwordXNpbmcgTmF0aXZlUERGRG9jdW1lbnRIYXNo
TWFwID0gSGFzaE1hcDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFJlZjxOYXRpdmVQREZE
b2N1bWVudD4+OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QREZEb2N1bWVudEltYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BERkRvY3VtZW50SW1hZ2UuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljc3ODVmNjQwNTIxZjg0ZThlZWRkYjgxYWI2NjZmZTIwOTJkNDFlZjcKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QREZEb2N1bWVudEltYWdlLmNw
cApAQCAtMCwwICsxLDEzMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIwIEFwcGxl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUERGRG9jdW1l
bnRJbWFnZS5oIgorCisjaWYgRU5BQkxFKFBERkRPQ1VNRU5USU1BR0UpCisKKyNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJJbWFnZU9ic2VydmVyLmgiCisjaW5jbHVkZSAi
TmF0aXZlUERGRG9jdW1lbnQuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworUERGRG9jdW1lbnRJbWFnZTo6UERGRG9jdW1lbnRJbWFn
ZShJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKKyAgICA6IEltYWdlKG9ic2VydmVyKQoreworfQor
CitQREZEb2N1bWVudEltYWdlOjp+UERGRG9jdW1lbnRJbWFnZSgpCit7CisgICAgZGVzdHJveURl
Y29kZWREYXRhKHRydWUpOworfQorCitTdHJpbmcgUERGRG9jdW1lbnRJbWFnZTo6ZmlsZW5hbWVF
eHRlbnNpb24oKSBjb25zdAoreworICAgIHJldHVybiAicGRmIjsKK30KKworRmxvYXRTaXplIFBE
RkRvY3VtZW50SW1hZ2U6OnNpemUoSW1hZ2VPcmllbnRhdGlvbikgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9uYXRpdmVQREZEb2N1bWVudCA/IG1fbmF0aXZlUERGRG9jdW1lbnQtPnNpemUoKSA6IEZs
b2F0U2l6ZSgpOworfQorCit1bnNpZ25lZCBQREZEb2N1bWVudEltYWdlOjpjYWNoaW5nQ291bnRG
b3JUZXN0aW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9uYXRpdmVQREZEb2N1bWVudCA/IG1f
bmF0aXZlUERGRG9jdW1lbnQtPmNhY2hpbmdDb3VudEZvclRlc3RpbmcoKSA6IDA7Cit9CisKK3Zv
aWQgUERGRG9jdW1lbnRJbWFnZTo6c2V0UGRmSW1hZ2VDYWNoaW5nUG9saWN5KFBERkltYWdlQ2Fj
aGluZ1BvbGljeSBwZGZJbWFnZUNhY2hpbmdQb2xpY3kpCit7CisgICAgaWYgKCFtX25hdGl2ZVBE
RkRvY3VtZW50IHx8IG1fbmF0aXZlUERGRG9jdW1lbnQtPnBkZkltYWdlQ2FjaGluZ1BvbGljeSgp
ID09IHBkZkltYWdlQ2FjaGluZ1BvbGljeSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9uYXRp
dmVQREZEb2N1bWVudC0+c2V0UERGSW1hZ2VDYWNoaW5nUG9saWN5KHBkZkltYWdlQ2FjaGluZ1Bv
bGljeSk7CisgICAgZGVzdHJveURlY29kZWREYXRhKCk7Cit9CisKK0VuY29kZWREYXRhU3RhdHVz
IFBERkRvY3VtZW50SW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxsRGF0YVJlY2VpdmVkKQorewor
ICAgIEFTU0VSVCghbV9uYXRpdmVQREZEb2N1bWVudCk7CisKKyAgICBpZiAoYWxsRGF0YVJlY2Vp
dmVkICYmICFtX25hdGl2ZVBERkRvY3VtZW50KQorICAgICAgICBtX25hdGl2ZVBERkRvY3VtZW50
ID0gTmF0aXZlUERGRG9jdW1lbnQ6OmNyZWF0ZSgqZGF0YSgpKTsKKworICAgIHJldHVybiBtX25h
dGl2ZVBERkRvY3VtZW50ID8gRW5jb2RlZERhdGFTdGF0dXM6OkNvbXBsZXRlIDogRW5jb2RlZERh
dGFTdGF0dXM6OlVua25vd247Cit9CisKK3ZvaWQgUERGRG9jdW1lbnRJbWFnZTo6ZGVzdHJveURl
Y29kZWREYXRhKGJvb2wpCit7CisgICAgaWYgKG1fbmF0aXZlUERGRG9jdW1lbnQpCisgICAgICAg
IG1fbmF0aXZlUERGRG9jdW1lbnQtPmNsZWFyU25hcHNob3QoKTsKKyAgICBkZWNvZGVkU2l6ZUNo
YW5nZWQoKTsKK30KKwordm9pZCBQREZEb2N1bWVudEltYWdlOjpkZWNvZGVkU2l6ZUNoYW5nZWQo
KQoreworICAgIHNpemVfdCBuZXdNZW1vcnlDb3N0ID0gbV9uYXRpdmVQREZEb2N1bWVudCA/IG1f
bmF0aXZlUERGRG9jdW1lbnQtPnNuYXBzaG90TWVtb3J5Q29zdCgpIDogMDsKKyAgICBpZiAobV9t
ZW1vcnlDb3N0ID09IG5ld01lbW9yeUNvc3QpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChp
bWFnZU9ic2VydmVyKCkpCisgICAgICAgIGltYWdlT2JzZXJ2ZXIoKS0+ZGVjb2RlZFNpemVDaGFu
Z2VkKCp0aGlzLCAtc3RhdGljX2Nhc3Q8bG9uZyBsb25nPihtX21lbW9yeUNvc3QpICsgbmV3TWVt
b3J5Q29zdCk7CisKKyAgICBtX21lbW9yeUNvc3QgPSBuZXdNZW1vcnlDb3N0OworfQorCit2b2lk
IFBERkRvY3VtZW50SW1hZ2U6OmNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKExlbmd0aCYgaW50
cmluc2ljV2lkdGgsIExlbmd0aCYgaW50cmluc2ljSGVpZ2h0LCBGbG9hdFNpemUmIGludHJpbnNp
Y1JhdGlvKQoreworICAgIC8vIEZJWE1FOiBJZiB3ZSB3YW50IHNpemUgbmVnb3RpYXRpb24gd2l0
aCBQREYgZG9jdW1lbnRzIGFzLWltYWdlLCB0aGlzIGlzIHRoZSBwbGFjZSB0byBpbXBsZW1lbnQg
aXQgKGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjA5NSkuCisgICAg
SW1hZ2U6OmNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKGludHJpbnNpY1dpZHRoLCBpbnRyaW5z
aWNIZWlnaHQsIGludHJpbnNpY1JhdGlvKTsKKyAgICBpbnRyaW5zaWNSYXRpbyA9IEZsb2F0U2l6
ZSgpOworfQorCitJbWFnZURyYXdSZXN1bHQgUERGRG9jdW1lbnRJbWFnZTo6ZHJhdyhHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3sKKyAg
ICBpZiAoIW1fbmF0aXZlUERGRG9jdW1lbnQgfHwgIW1fbmF0aXZlUERGRG9jdW1lbnQtPnBhZ2VD
b3VudCgpKQorICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOworCisg
ICAgY29udGV4dC5kcmF3TmF0aXZlUERGRG9jdW1lbnQoKm1fbmF0aXZlUERGRG9jdW1lbnQsIHNp
emUoKSwgZHN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CisgICAgZGVjb2RlZFNpemVDaGFuZ2Vk
KCk7CisKKyAgICBpZiAoaW1hZ2VPYnNlcnZlcigpKQorICAgICAgICBpbWFnZU9ic2VydmVyKCkt
PmRpZERyYXcoKnRoaXMpOworCisgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkRHJhdzsK
K30KKwordm9pZCBQREZEb2N1bWVudEltYWdlOjpkdW1wKFRleHRTdHJlYW0mIHRzKSBjb25zdAor
eworICAgIEltYWdlOjpkdW1wKHRzKTsKKyAgICBpZiAobV9uYXRpdmVQREZEb2N1bWVudCkKKyAg
ICAgICAgbV9uYXRpdmVQREZEb2N1bWVudC0+ZHVtcCh0cyk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShQREZET0NVTUVOVElNQUdFKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUERGRG9jdW1lbnRJbWFnZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUERGRG9jdW1lbnRJbWFnZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmIyMzZlNWI1NDg5NDc5NzU0ZmE4ZWQzZWE5MjYwMDliMzg4MDU2MTAKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QREZEb2N1bWVudElt
YWdlLmgKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIwIEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShQREZET0NVTUVO
VElNQUdFKQorCisjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NUeXBl
cy5oIgorI2luY2x1ZGUgIkltYWdlLmgiCisjaW5jbHVkZSAiUERGSW1hZ2VDYWNoaW5nUG9saWN5
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR3JhcGhpY3NDb250ZXh0OworY2xh
c3MgTmF0aXZlUERGRG9jdW1lbnQ7CisKK2NsYXNzIFBERkRvY3VtZW50SW1hZ2UgZmluYWwgOiBw
dWJsaWMgSW1hZ2UgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8UERGRG9jdW1lbnRJbWFnZT4g
Y3JlYXRlKEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgUERGRG9jdW1lbnRJbWFnZShvYnNlcnZlcikpOworICAgIH0KKworICAgIFdF
QkNPUkVfRVhQT1JUIHVuc2lnbmVkIGNhY2hpbmdDb3VudEZvclRlc3RpbmcoKSBjb25zdDsKKyAg
ICB2b2lkIHNldFBkZkltYWdlQ2FjaGluZ1BvbGljeShQREZJbWFnZUNhY2hpbmdQb2xpY3kpOwor
ICAgIAorcHJpdmF0ZToKKyAgICBQREZEb2N1bWVudEltYWdlKEltYWdlT2JzZXJ2ZXIqKTsKKyAg
ICB2aXJ0dWFsIH5QREZEb2N1bWVudEltYWdlKCk7CisKKyAgICBib29sIGlzUERGRG9jdW1lbnRJ
bWFnZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIGhhc1Npbmds
ZVNlY3VyaXR5T3JpZ2luKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAg
Ly8gRklYTUU6IEltcGxlbWVudCB0aGlzIHRvIGJlIGxlc3MgY29uc2VydmF0aXZlLgorICAgIGJv
b2wgY3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
ZmFsc2U7IH0KKworICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0IG92ZXJyaWRl
OworICAgIEZsb2F0U2l6ZSBzaXplKEltYWdlT3JpZW50YXRpb24gPSBJbWFnZU9yaWVudGF0aW9u
OjpGcm9tSW1hZ2UpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgZGVjb2RlZFNpemVDaGFuZ2Vk
KCk7CisKKyAgICBFbmNvZGVkRGF0YVN0YXR1cyBkYXRhQ2hhbmdlZChib29sIGFsbERhdGFSZWNl
aXZlZCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoYm9vbCAvKmRlc3Ry
b3lBbGwqLyA9IHRydWUpIG92ZXJyaWRlOworCisgICAgdm9pZCBjb21wdXRlSW50cmluc2ljRGlt
ZW5zaW9ucyhMZW5ndGgmIGludHJpbnNpY1dpZHRoLCBMZW5ndGgmIGludHJpbnNpY0hlaWdodCwg
RmxvYXRTaXplJiBpbnRyaW5zaWNSYXRpbykgb3ZlcnJpZGU7CisgICAgSW1hZ2VEcmF3UmVzdWx0
IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgb3Zl
cnJpZGU7CisKKyAgICB2b2lkIGR1bXAoV1RGOjpUZXh0U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7
CisgICAgCisgICAgUmVmUHRyPE5hdGl2ZVBERkRvY3VtZW50PiBtX25hdGl2ZVBERkRvY3VtZW50
OworICAgIHNpemVfdCBtX21lbW9yeUNvc3QgeyAwIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfSU1BR0UoUERGRG9jdW1lbnRJbWFnZSkK
KworI2VuZGlmIC8vIEVOQUJMRShQREZET0NVTUVOVElNQUdFKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1QREZEb2N1bWVudC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1QREZEb2N1bWVudC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjBhODdhMTc2ZTdmOTEzZTAzMGQ0YjgyMGNiODIzMTM5ODYwNjQyNDEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVBERkRvY3Vt
ZW50LmgKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIFVTRShDRykKKyNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CisjaWYgRU5BQkxFKFBERktJVF9GT1JfUERGRE9DVU1FTlRJTUFHRSkKK09C
SkNfQ0xBU1MgUERGRG9jdW1lbnQ7CisjZWxzZQordXNpbmcgQ0dQREZEb2N1bWVudFJlZiA9IHN0
cnVjdCBDR1BERkRvY3VtZW50ICo7CisjZW5kaWYKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKKyNpZiBVU0UoQ0cpCisjaWYgRU5BQkxFKFBERktJVF9GT1JfUERGRE9DVU1FTlRJTUFH
RSkKK3VzaW5nIFBsYXRmb3JtUERGRG9jdW1lbnRQdHIgPSBSZXRhaW5QdHI8UERGRG9jdW1lbnQ+
OworI2Vsc2UKK3VzaW5nIFBsYXRmb3JtUERGRG9jdW1lbnRQdHIgPSBSZXRhaW5QdHI8Q0dQREZE
b2N1bWVudFJlZj47CisjZW5kaWYKKyNlbHNlCit1c2luZyBQbGF0Zm9ybVBERkRvY3VtZW50UHRy
ID0gdm9pZCo7CisjZW5kaWYKKworI2lmIEVOQUJMRShQREZLSVRfRk9SX1BERkRPQ1VNRU5USU1B
R0UpCitXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGF0YVJlZj4gY29udmVydFBv
c3RTY3JpcHREYXRhVG9QREYoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBwb3N0U2NyaXB0RGF0YSk7
CisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlUERGRG9jdW1lbnRDRy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVQREZEb2N1bWVudENHLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5hOTQ1ZWE1OTU3MGMwZThlNTg0ZGM3YTliOWFkOTk2MWNkOTc3Y2Q1Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZl
UERGRG9jdW1lbnRDRy5jcHAKQEAgLTAsMCArMSwxMDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
Ik5hdGl2ZVBERkRvY3VtZW50LmgiCisKKyNpZiAhRU5BQkxFKFBERktJVF9GT1JfUERGRE9DVU1F
TlRJTUFHRSkKKworI2luY2x1ZGUgPENvcmVHcmFwaGljcy9DR1BERkRvY3VtZW50Lmg+CisjaWYg
UExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4K
KyNlbHNlCisjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NHQ29udGV4dC5oPgorI2VuZGlmCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworUmVmUHRyPE5hdGl2ZVBERkRvY3VtZW50PiBOYXRpdmVQREZE
b2N1bWVudDo6Y3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwgUmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKK3sKKyAgICBhdXRvIGRhdGFQcm92
aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoQ0ZEYXRhKGRhdGEuY3JlYXRl
Q0ZEYXRhKCkuZ2V0KCkpKTsKKyAgICBpZiAoIWRhdGFQcm92aWRlcikKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgCisgICAgYXV0byBkb2N1bWVudCA9IGFkb3B0Q0YoQ0dQREZEb2N1bWVu
dENyZWF0ZVdpdGhQcm92aWRlcihkYXRhUHJvdmlkZXIuZ2V0KCkpKTsKKyAgICBpZiAoIWRvY3Vt
ZW50KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBhZG9wdFJlZihuZXcg
TmF0aXZlUERGRG9jdW1lbnQoZGF0YSwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBXVEZN
b3ZlKGRvY3VtZW50KSkpOworfQorCit2b2lkIE5hdGl2ZVBERkRvY3VtZW50Ojpjb21wdXRlQm91
bmRzRm9yQ3VycmVudFBhZ2UoKQoreworICAgIEFTU0VSVChwYWdlQ291bnQoKSA+IDApOworICAg
IENHUERGUGFnZVJlZiBjZ1BhZ2UgPSBDR1BERkRvY3VtZW50R2V0UGFnZShtX3BsYXRmb3JtUERG
RG9jdW1lbnQuZ2V0KCksIDEpOworICAgIENHUmVjdCBtZWRpYUJveCA9IENHUERGUGFnZUdldEJv
eFJlY3QoY2dQYWdlLCBrQ0dQREZNZWRpYUJveCk7CisKKyAgICAvLyBHZXQgY3JvcCBib3ggKG5v
dCBhbHdheXMgdGhlcmUpLiBJZiBub3QsIHVzZSBtZWRpYSBib3guCisgICAgQ0dSZWN0IHIgPSBD
R1BERlBhZ2VHZXRCb3hSZWN0KGNnUGFnZSwga0NHUERGQ3JvcEJveCk7CisgICAgaWYgKCFDR1Jl
Y3RJc0VtcHR5KHIpKQorICAgICAgICBtX2Nyb3BCb3ggPSByOworICAgIGVsc2UKKyAgICAgICAg
bV9jcm9wQm94ID0gbWVkaWFCb3g7CisKKyAgICBtX3JvdGF0aW9uRGVncmVlcyA9IENHUERGUGFn
ZUdldFJvdGF0aW9uQW5nbGUoY2dQYWdlKTsKK30KKwordW5zaWduZWQgTmF0aXZlUERGRG9jdW1l
bnQ6OnBhZ2VDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIENHUERGRG9jdW1lbnRHZXROdW1i
ZXJPZlBhZ2VzKG1fcGxhdGZvcm1QREZEb2N1bWVudC5nZXQoKSk7Cit9CisKK3N0YXRpYyB2b2lk
IGFwcGx5Um90YXRpb25Gb3JQYWludGluZyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIEZsb2F0
U2l6ZSBzaXplLCBpbnQgcm90YXRpb25EZWdyZWVzKQoreworICAgIGlmIChyb3RhdGlvbkRlZ3Jl
ZXMgPT0gOTApCisgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKDAsIHNpemUuaGVpZ2h0KCkpOwor
ICAgIGVsc2UgaWYgKHJvdGF0aW9uRGVncmVlcyA9PSAxODApCisgICAgICAgIGNvbnRleHQudHJh
bnNsYXRlKHNpemUpOworICAgIGVsc2UgaWYgKHJvdGF0aW9uRGVncmVlcyA9PSAyNzApCisgICAg
ICAgIGNvbnRleHQudHJhbnNsYXRlKHNpemUud2lkdGgoKSwgMCk7CisKKyAgICBjb250ZXh0LnJv
dGF0ZSgtZGVnMnJhZChzdGF0aWNfY2FzdDxmbG9hdD4ocm90YXRpb25EZWdyZWVzKSkpOworfQor
Cit2b2lkIE5hdGl2ZVBERkRvY3VtZW50OjpkcmF3UERGUGFnZShHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplKQoreworICAgIGFwcGx5Um90YXRpb25G
b3JQYWludGluZyhjb250ZXh0LCBpbWFnZVNpemUsIG1fcm90YXRpb25EZWdyZWVzKTsKKworICAg
IGNvbnRleHQudHJhbnNsYXRlKC1tX2Nyb3BCb3gubG9jYXRpb24oKSk7CisKKyNpZiBQTEFURk9S
TShDT0NPQSkKKyAgICBDR0NvbnRleHREcmF3UERGUGFnZVdpdGhBbm5vdGF0aW9ucyhjb250ZXh0
LnBsYXRmb3JtQ29udGV4dCgpLCBDR1BERkRvY3VtZW50R2V0UGFnZShtX3BsYXRmb3JtUERGRG9j
dW1lbnQuZ2V0KCksIDEpLCBudWxscHRyKTsKKyNlbHNlCisgICAgQ0dDb250ZXh0RHJhd1BERlBh
Z2UoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgQ0dQREZEb2N1bWVudEdldFBhZ2UobV9wbGF0
Zm9ybVBERkRvY3VtZW50LmdldCgpLCAxKSk7CisjZW5kaWYKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gIUVOQUJMRShQREZLSVRfRk9SX1BERkRPQ1VNRU5USU1BR0Up
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1
bWVudEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRv
Y3VtZW50SW1hZ2UuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYzQ5ODVmOWM1
OWFhYWNkM2RmNWI1ZGM1NmI5ZDg5MDg0ODFiZjliLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L1BERkRvY3VtZW50SW1hZ2UuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMzg5ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMTMgQXBwbGUgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgot
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJQREZEb2N1bWVudEltYWdlLmgi
Ci0KLSNpZiBVU0UoQ0cpCi0KLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotI2luY2x1ZGUgPENv
cmVHcmFwaGljcy9Db3JlR3JhcGhpY3MuaD4KLSNpbmNsdWRlIDxJbWFnZUlPL0ltYWdlSU8uaD4K
LSNlbmRpZgotCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCi0jaW5jbHVkZSAiSW1hZ2VC
dWZmZXIuaCIKLSNpbmNsdWRlICJJbWFnZU9ic2VydmVyLmgiCi0jaW5jbHVkZSAiSW50UmVjdC5o
IgotI2luY2x1ZGUgIkxlbmd0aC5oIgotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jaW5j
bHVkZSAiU2hhcmVkQnVmZmVyLmgiCi0jaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NHQ29udGV4dC5o
PgotI2luY2x1ZGUgPENvcmVHcmFwaGljcy9DR1BERkRvY3VtZW50Lmg+Ci0jaW5jbHVkZSA8cGFs
L3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KLSNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgot
I2luY2x1ZGUgPHd0Zi9SQU1TaXplLmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFt
Lmg+Ci0KLSNpZiAhUExBVEZPUk0oQ09DT0EpCi0jaW5jbHVkZSAiSW1hZ2VTb3VyY2VDRy5oIgot
I2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUERGRG9jdW1lbnRJbWFnZTo6UERGRG9j
dW1lbnRJbWFnZShJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKLSAgICA6IEltYWdlKG9ic2VydmVy
KQotewotfQotCi1QREZEb2N1bWVudEltYWdlOjp+UERGRG9jdW1lbnRJbWFnZSgpID0gZGVmYXVs
dDsKLQotU3RyaW5nIFBERkRvY3VtZW50SW1hZ2U6OmZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gInBkZiI7Ci19Ci0KLUZsb2F0U2l6ZSBQREZEb2N1bWVudEltYWdlOjpz
aXplKEltYWdlT3JpZW50YXRpb24pIGNvbnN0Ci17Ci0gICAgRmxvYXRTaXplIGV4cGFuZGVkQ3Jv
cEJveFNpemUgPSBGbG9hdFNpemUoZXhwYW5kZWRJbnRTaXplKG1fY3JvcEJveC5zaXplKCkpKTsK
LQotICAgIGlmIChtX3JvdGF0aW9uRGVncmVlcyA9PSA5MCB8fCBtX3JvdGF0aW9uRGVncmVlcyA9
PSAyNzApCi0gICAgICAgIHJldHVybiBleHBhbmRlZENyb3BCb3hTaXplLnRyYW5zcG9zZWRTaXpl
KCk7Ci0gICAgcmV0dXJuIGV4cGFuZGVkQ3JvcEJveFNpemU7Ci19Ci0KLXZvaWQgUERGRG9jdW1l
bnRJbWFnZTo6Y29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMoTGVuZ3RoJiBpbnRyaW5zaWNXaWR0
aCwgTGVuZ3RoJiBpbnRyaW5zaWNIZWlnaHQsIEZsb2F0U2l6ZSYgaW50cmluc2ljUmF0aW8pCi17
Ci0gICAgLy8gRklYTUU6IElmIHdlIHdhbnQgc2l6ZSBuZWdvdGlhdGlvbiB3aXRoIFBERiBkb2N1
bWVudHMgYXMtaW1hZ2UsIHRoaXMgaXMgdGhlIHBsYWNlIHRvIGltcGxlbWVudCBpdCAoaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDk1KS4KLSAgICBJbWFnZTo6Y29t
cHV0ZUludHJpbnNpY0RpbWVuc2lvbnMoaW50cmluc2ljV2lkdGgsIGludHJpbnNpY0hlaWdodCwg
aW50cmluc2ljUmF0aW8pOwotICAgIGludHJpbnNpY1JhdGlvID0gRmxvYXRTaXplKCk7Ci19Ci0K
LUVuY29kZWREYXRhU3RhdHVzIFBERkRvY3VtZW50SW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxs
RGF0YVJlY2VpdmVkKQotewotICAgIEFTU0VSVCghbV9kb2N1bWVudCk7Ci0gICAgaWYgKGFsbERh
dGFSZWNlaXZlZCAmJiAhbV9kb2N1bWVudCkgewotICAgICAgICBjcmVhdGVQREZEb2N1bWVudCgp
OwotCi0gICAgICAgIGlmIChwYWdlQ291bnQoKSkgewotICAgICAgICAgICAgbV9oYXNQYWdlID0g
dHJ1ZTsKLSAgICAgICAgICAgIGNvbXB1dGVCb3VuZHNGb3JDdXJyZW50UGFnZSgpOwotICAgICAg
ICB9Ci0gICAgfQotICAgIHJldHVybiBtX2RvY3VtZW50ID8gRW5jb2RlZERhdGFTdGF0dXM6OkNv
bXBsZXRlIDogRW5jb2RlZERhdGFTdGF0dXM6OlVua25vd247Ci19Ci0KLXZvaWQgUERGRG9jdW1l
bnRJbWFnZTo6c2V0UGRmSW1hZ2VDYWNoaW5nUG9saWN5KFBERkltYWdlQ2FjaGluZ1BvbGljeSBw
ZGZJbWFnZUNhY2hpbmdQb2xpY3kpCi17Ci0gICAgaWYgKG1fcGRmSW1hZ2VDYWNoaW5nUG9saWN5
ID09IHBkZkltYWdlQ2FjaGluZ1BvbGljeSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9wZGZJ
bWFnZUNhY2hpbmdQb2xpY3kgPSBwZGZJbWFnZUNhY2hpbmdQb2xpY3k7Ci0gICAgZGVzdHJveURl
Y29kZWREYXRhKCk7Ci19Ci0KLWJvb2wgUERGRG9jdW1lbnRJbWFnZTo6Y2FjaGVQYXJhbWV0ZXJz
TWF0Y2goR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCkgY29uc3QKLXsKLSAgICAvLyBPbGQgYW5kIG5ldyBz
b3VyY2UgcmVjdGFuZ2xlcyBoYXZlIHRvIG1hdGNoLgotICAgIGlmIChzcmNSZWN0ICE9IG1fY2Fj
aGVkU291cmNlUmVjdCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gT2xkIGFuZCBu
ZXcgc2NhbGluZyBmYWN0b3JzICJkZXN0IC8gc3JjIiBoYXZlIHRvIG1hdGNoLgotICAgIGlmIChk
c3RSZWN0LnNpemUoKSAhPSBtX2NhY2hlZERlc3RpbmF0aW9uUmVjdC5zaXplKCkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgIC8vIG1fY2FjaGVkSW1hZ2VSZWN0IGNhbiBiZSBtb3ZlZCBp
ZiBzcmNSZWN0IGFuZCBkc3RSZWN0LnNpemUoKSBkaWQgbm90IGNoYW5nZS4KLSAgICBGbG9hdFJl
Y3QgbW92ZWRDYWNoZWRJbWFnZVJlY3QgPSBtX2NhY2hlZEltYWdlUmVjdDsKLSAgICBtb3ZlZENh
Y2hlZEltYWdlUmVjdC5tb3ZlKEZsb2F0U2l6ZShkc3RSZWN0LmxvY2F0aW9uKCkgLSBtX2NhY2hl
ZERlc3RpbmF0aW9uUmVjdC5sb2NhdGlvbigpKSk7Ci0KLSAgICAvLyBtb3ZlZENhY2hlZEltYWdl
UmVjdCBoYXMgdG8gY29udGFpbiB0aGUgd2hvbGUgZGlydHkgcmVjdGFuZ2xlLgotICAgIEZsb2F0
UmVjdCBkaXJ0eVJlY3QgPSBpbnRlcnNlY3Rpb24oY29udGV4dC5jbGlwQm91bmRzKCksIGRzdFJl
Y3QpOwotICAgIGlmICghbW92ZWRDYWNoZWRJbWFnZVJlY3QuY29udGFpbnMoZGlydHlSZWN0KSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gT2xkIGFuZCBuZXcgY29udGV4dCBzY2Fs
aW5nIGZhY3RvcnMgaGF2ZSB0byBtYXRjaCBhcyB3ZWxsLgotICAgIEFmZmluZVRyYW5zZm9ybTo6
RGVjb21wb3NlZFR5cGUgZGVjb21wb3NlZFRyYW5zZm9ybTsKLSAgICBjb250ZXh0LmdldENUTShH
cmFwaGljc0NvbnRleHQ6OkRlZmluaXRlbHlJbmNsdWRlRGV2aWNlU2NhbGUpLmRlY29tcG9zZShk
ZWNvbXBvc2VkVHJhbnNmb3JtKTsKLQotICAgIEFmZmluZVRyYW5zZm9ybTo6RGVjb21wb3NlZFR5
cGUgY2FjaGVkRGVjb21wb3NlZFRyYW5zZm9ybTsKLSAgICBtX2NhY2hlZFRyYW5zZm9ybS5kZWNv
bXBvc2UoY2FjaGVkRGVjb21wb3NlZFRyYW5zZm9ybSk7Ci0gICAgaWYgKGRlY29tcG9zZWRUcmFu
c2Zvcm0uc2NhbGVYICE9IGNhY2hlZERlY29tcG9zZWRUcmFuc2Zvcm0uc2NhbGVYIHx8IGRlY29t
cG9zZWRUcmFuc2Zvcm0uc2NhbGVZICE9IGNhY2hlZERlY29tcG9zZWRUcmFuc2Zvcm0uc2NhbGVZ
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotc3RhdGlj
IHZvaWQgdHJhbnNmb3JtQ29udGV4dEZvclBhaW50aW5nKEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QpCi17
Ci0gICAgZmxvYXQgaFNjYWxlID0gZHN0UmVjdC53aWR0aCgpIC8gc3JjUmVjdC53aWR0aCgpOwot
ICAgIGZsb2F0IHZTY2FsZSA9IGRzdFJlY3QuaGVpZ2h0KCkgLyBzcmNSZWN0LmhlaWdodCgpOwot
Ci0gICAgaWYgKGhTY2FsZSAhPSB2U2NhbGUpIHsKLSAgICAgICAgZmxvYXQgbWluaW11bVNjYWxl
ID0gc3RkOjptYXgoKGRzdFJlY3Qud2lkdGgoKSAtIDAuNSkgLyBzcmNSZWN0LndpZHRoKCksIChk
c3RSZWN0LmhlaWdodCgpIC0gMC41KSAvIHNyY1JlY3QuaGVpZ2h0KCkpOwotICAgICAgICBmbG9h
dCBtYXhpbXVtU2NhbGUgPSBzdGQ6Om1pbigoZHN0UmVjdC53aWR0aCgpICsgMC41KSAvIHNyY1Jl
Y3Qud2lkdGgoKSwgKGRzdFJlY3QuaGVpZ2h0KCkgKyAwLjUpIC8gc3JjUmVjdC5oZWlnaHQoKSk7
Ci0KLSAgICAgICAgLy8gSWYgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgdHdvIHNjYWxlcyBp
cyBkdWUgdG8gaW50ZWdlciByb3VuZGluZyBvZiBpbWFnZSBzaXplcywKLSAgICAgICAgLy8gdXNl
IHRoZSBzbWFsbGVyIG9mIHRoZSB0d28gb3JpZ2luYWwgc2NhbGVzIHRvIGVuc3VyZSB0aGF0IHRo
ZSBpbWFnZSBmaXRzIGluc2lkZSB0aGUKLSAgICAgICAgLy8gc3BhY2Ugb3JpZ2luYWxseSBhbGxv
Y2F0ZWQgZm9yIGl0LgotICAgICAgICBpZiAobWluaW11bVNjYWxlIDw9IG1heGltdW1TY2FsZSkg
ewotICAgICAgICAgICAgaFNjYWxlID0gc3RkOjptaW4oaFNjYWxlLCB2U2NhbGUpOwotICAgICAg
ICAgICAgdlNjYWxlID0gaFNjYWxlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gZHJhd1BE
RlBhZ2UoKSByZWxpZXMgb24gZHJhd2luZyB0aGUgd2hvbGUgUERGIGludG8gYSBjb250ZXh0IHN0
YXJ0aW5nIGF0ICgwLCAwKS4gV2UgbmVlZAotICAgIC8vIHRvIHRyYW5zZm9ybSB0aGUgZGVzdGlu
YXRpb24gY29udGV4dCBzdWNoIHRoYXQgc3JjUmVjdCBvZiB0aGUgc291cmNlIGNvbnRleHQgd2ls
bCBiZSBkcmF3bgotICAgIC8vIGluIGRzdFJlY3Qgb2YgZGVzdGluYXRpb24gY29udGV4dC4KLSAg
ICBjb250ZXh0LnRyYW5zbGF0ZShkc3RSZWN0LmxvY2F0aW9uKCkgLSBzcmNSZWN0LmxvY2F0aW9u
KCkpOwotICAgIGNvbnRleHQuc2NhbGUoRmxvYXRTaXplKGhTY2FsZSwgLXZTY2FsZSkpOwotICAg
IGNvbnRleHQudHJhbnNsYXRlKDAsIC1zcmNSZWN0LmhlaWdodCgpKTsKLX0KLQotLy8gVG8gYXZv
aWQgdGhlIGpldHNhbSBvbiBpT1MsIHdlIGFyZSBnb2luZyB0byBsaW1pdCB0aGUgc2l6ZSBvZiBh
bGwgdGhlIFBERiBjYWNoZWRJbWFnZXMgdG8gYmUgNjRNQi4KLXN0YXRpYyBjb25zdCBzaXplX3Qg
c19tYXhDYWNoZWRJbWFnZVNpZGUgPSA0ICogMTAyNDsKLXN0YXRpYyBjb25zdCBzaXplX3Qgc19t
YXhDYWNoZWRJbWFnZUFyZWEgPSBzX21heENhY2hlZEltYWdlU2lkZSAqIHNfbWF4Q2FjaGVkSW1h
Z2VTaWRlOwotCi1zdGF0aWMgY29uc3Qgc2l6ZV90IHNfbWF4RGVjb2RlZERhdGFTaXplID0gc19t
YXhDYWNoZWRJbWFnZUFyZWEgKiA0Owotc3RhdGljIHNpemVfdCBzX2FsbERlY29kZWREYXRhU2l6
ZSA9IDA7Ci0KLXN0YXRpYyBGbG9hdFJlY3QgY2FjaGVkSW1hZ2VSZWN0KEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0KQotewotICAgIEZsb2F0UmVjdCBk
aXJ0eVJlY3QgPSBjb250ZXh0LmNsaXBCb3VuZHMoKTsKLQotICAgIC8vIENhbGN1bGF0ZSB0aGUg
bWF4aW11bSByZWN0YW5nbGUgd2UgY2FuIGNhY2hlIGFyb3VuZCB0aGUgY2VudGVyIG9mIHRoZSBj
bGlwcGluZyBib3VuZHMuCi0gICAgRmxvYXRTaXplIG1heFNpemUgPSBzX21heENhY2hlZEltYWdl
U2lkZSAvIGNvbnRleHQuc2NhbGVGYWN0b3IoKTsKLSAgICBGbG9hdFBvaW50IG1pbkxvY2F0aW9u
ID0gRmxvYXRQb2ludChkaXJ0eVJlY3QuY2VudGVyKCkgLSBtYXhTaXplIC8gMik7Ci0KLSAgICAv
LyBFbnN1cmUgdGhlIGNsaXBwaW5nIGJvdW5kcyBhcmUgYWxsIGluY2x1ZGVkIGJ1dCB3aXRoaW4g
dGhlIGJvdW5kcyBvZiB0aGUgZHN0UmVjdAotICAgIHJldHVybiBpbnRlcnNlY3Rpb24odW5pb25S
ZWN0KGRpcnR5UmVjdCwgRmxvYXRSZWN0KG1pbkxvY2F0aW9uLCBtYXhTaXplKSksIGRzdFJlY3Qp
OwotfQotCi12b2lkIFBERkRvY3VtZW50SW1hZ2U6OmRlY29kZWRTaXplQ2hhbmdlZChzaXplX3Qg
bmV3Q2FjaGVkQnl0ZXMpCi17Ci0gICAgaWYgKCFtX2NhY2hlZEJ5dGVzICYmICFuZXdDYWNoZWRC
eXRlcykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkKLSAgICAg
ICAgaW1hZ2VPYnNlcnZlcigpLT5kZWNvZGVkU2l6ZUNoYW5nZWQoKnRoaXMsIC1zdGF0aWNfY2Fz
dDxsb25nIGxvbmc+KG1fY2FjaGVkQnl0ZXMpICsgbmV3Q2FjaGVkQnl0ZXMpOwotCi0gICAgQVNT
RVJUKHNfYWxsRGVjb2RlZERhdGFTaXplID49IG1fY2FjaGVkQnl0ZXMpOwotICAgIC8vIFVwZGF0
ZSB3aXRoIHRoZSBkaWZmZXJlbmNlIGluIHR3byBzdGVwcyB0byBhdm9pZCB1bnNpZ25lZCB1bmRl
cmZsb3cgc3VidHJhY3Rpb24uCi0gICAgc19hbGxEZWNvZGVkRGF0YVNpemUgLT0gbV9jYWNoZWRC
eXRlczsKLSAgICBzX2FsbERlY29kZWREYXRhU2l6ZSArPSBuZXdDYWNoZWRCeXRlczsKLQotICAg
IG1fY2FjaGVkQnl0ZXMgPSBuZXdDYWNoZWRCeXRlczsKLX0KLQotdm9pZCBQREZEb2N1bWVudElt
YWdlOjp1cGRhdGVDYWNoZWRJbWFnZUlmTmVlZGVkKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QpCi17Ci0g
ICAgLy8gQ2xpcHBlZCBvcHRpb24gaXMgZm9yIHRlc3Rpbmcgb25seS4gRm9yY2UgcmUtY2FjaGlu
ZyB0aGUgUERGIHdpdGggZWFjaCBkcmF3LgotICAgIGJvb2wgZm9yY2VVcGRhdGVDYWNoZWRJbWFn
ZSA9IG1fcGRmSW1hZ2VDYWNoaW5nUG9saWN5ID09IFBERkltYWdlQ2FjaGluZ1BvbGljeTo6Q2xp
cEJvdW5kc09ubHkgfHwgIW1fY2FjaGVkSW1hZ2VCdWZmZXI7Ci0gICAgaWYgKCFmb3JjZVVwZGF0
ZUNhY2hlZEltYWdlICYmIGNhY2hlUGFyYW1ldGVyc01hdGNoKGNvbnRleHQsIGRzdFJlY3QsIHNy
Y1JlY3QpKSB7Ci0gICAgICAgIC8vIEFkanVzdCB0aGUgdmlldy1wb3J0IHJlY3RhbmdsZXMgaWYg
bm8gcmUtY2FjaGluZyB3aWxsIGhhcHBlbi4KLSAgICAgICAgbV9jYWNoZWRJbWFnZVJlY3QubW92
ZShGbG9hdFNpemUoZHN0UmVjdC5sb2NhdGlvbigpIC0gbV9jYWNoZWREZXN0aW5hdGlvblJlY3Qu
bG9jYXRpb24oKSkpOwotICAgICAgICBtX2NhY2hlZERlc3RpbmF0aW9uUmVjdCA9IGRzdFJlY3Q7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBzd2l0Y2ggKG1fcGRmSW1hZ2VDYWNoaW5n
UG9saWN5KSB7Ci0gICAgY2FzZSBQREZJbWFnZUNhY2hpbmdQb2xpY3k6OkRpc2FibGVkOgotICAg
ICAgICByZXR1cm47Ci0gICAgY2FzZSBQREZJbWFnZUNhY2hpbmdQb2xpY3k6OkJlbG93TWVtb3J5
TGltaXQ6Ci0gICAgICAgIC8vIEtlZXAgdGhlIG1lbW9yeSB1c2VkIGJ5IHRoZSBjYWNoZWQgaW1h
Z2UgYmVsb3cgc29tZSB0aHJlc2hvbGQsIG90aGVyd2lzZSBXZWJLaXQgcHJvY2VzcwotICAgICAg
ICAvLyB3aWxsIGpldHNhbSBpZiBpdCBleGNlZWRzIGl0cyBtZW1vcnkgbGltaXQuIE9ubHkgYSBy
ZWN0YW5nbGUgZnJvbSB0aGUgUERGIG1heSBiZSBjYWNoZWQuCi0gICAgICAgIG1fY2FjaGVkSW1h
Z2VSZWN0ID0gY2FjaGVkSW1hZ2VSZWN0KGNvbnRleHQsIGRzdFJlY3QpOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIFBERkltYWdlQ2FjaGluZ1BvbGljeTo6Q2xpcEJvdW5kc09ubHk6Ci0gICAg
ICAgIG1fY2FjaGVkSW1hZ2VSZWN0ID0gaW50ZXJzZWN0aW9uKGNvbnRleHQuY2xpcEJvdW5kcygp
LCBkc3RSZWN0KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQREZJbWFnZUNhY2hpbmdQb2xp
Y3k6OkVuYWJsZWQ6Ci0gICAgICAgIG1fY2FjaGVkSW1hZ2VSZWN0ID0gZHN0UmVjdDsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgfQotCi0gICAgRmxvYXRTaXplIGNhY2hlZEltYWdlU2l6ZSA9IEZsb2F0
UmVjdChlbmNsb3NpbmdJbnRSZWN0KG1fY2FjaGVkSW1hZ2VSZWN0KSkuc2l6ZSgpOwotCi0gICAg
Ly8gQ2FjaGUgdGhlIFBERiBpbWFnZSBvbmx5IGlmIHRoZSBzaXplIG9mIHRoZSBuZXcgaW1hZ2Ug
d29uJ3QgZXhjZWVkIHRoZSBjYWNoZSB0aHJlc2hvbGQuCi0gICAgaWYgKG1fcGRmSW1hZ2VDYWNo
aW5nUG9saWN5ID09IFBERkltYWdlQ2FjaGluZ1BvbGljeTo6QmVsb3dNZW1vcnlMaW1pdCkgewot
ICAgICAgICBJbnRTaXplIHNjYWxlZFNpemUgPSBJbWFnZUJ1ZmZlcjo6Y29tcGF0aWJsZUJ1ZmZl
clNpemUoY2FjaGVkSW1hZ2VTaXplLCBjb250ZXh0KTsKLSAgICAgICAgaWYgKHNfYWxsRGVjb2Rl
ZERhdGFTaXplICsgc2NhbGVkU2l6ZS51bmNsYW1wZWRBcmVhKCkgKiA0IC0gbV9jYWNoZWRCeXRl
cyA+IHNfbWF4RGVjb2RlZERhdGFTaXplKSB7Ci0gICAgICAgICAgICBkZXN0cm95RGVjb2RlZERh
dGEoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIG1fY2Fj
aGVkSW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjYWNo
ZWRJbWFnZVNpemUsIGNvbnRleHQpOwotICAgIGlmICghbV9jYWNoZWRJbWFnZUJ1ZmZlcikgewot
ICAgICAgICBkZXN0cm95RGVjb2RlZERhdGEoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIGF1dG8mIGJ1ZmZlckNvbnRleHQgPSBtX2NhY2hlZEltYWdlQnVmZmVyLT5jb250ZXh0KCk7
Ci0gICAgLy8gV2UgbmVlZCB0byB0cmFuc2Zvcm0gdGhlIGNvb3JkaW5hdGUgc3lzdGVtIHN1Y2gg
dGhhdCB0b3AtbGVmdCBvZiBtX2NhY2hlZEltYWdlUmVjdCB3aWxsIGJlIG1hcHBlZCB0byB0aGUK
LSAgICAvLyB0b3AtbGVmdCBvZiBkc3RSZWN0LiBBbHRob3VnaCBvbmx5IG1fY2FjaGVkSW1hZ2VS
ZWN0LnNpemUoKSBvZiB0aGUgaW1hZ2UgY29waWVkLCB0aGUgc2l6ZXMgb2Ygc3JjUmVjdAotICAg
IC8vIGFuZCBkc3RSZWN0IHNob3VsZCBiZSBwYXNzZWQgdG8gdGhpcyBmdW5jdGlvbiBiZWNhdXNl
IHRoZXkgYXJlIHVzZWQgdG8gY2FsY3VsYXRlIHRoZSBpbWFnZSBzY2FsaW5nLgotICAgIHRyYW5z
Zm9ybUNvbnRleHRGb3JQYWludGluZyhidWZmZXJDb250ZXh0LCBkc3RSZWN0LCBGbG9hdFJlY3Qo
bV9jYWNoZWRJbWFnZVJlY3QubG9jYXRpb24oKSwgc3JjUmVjdC5zaXplKCkpKTsKLSAgICBkcmF3
UERGUGFnZShidWZmZXJDb250ZXh0KTsKLQotICAgIG1fY2FjaGVkVHJhbnNmb3JtID0gY29udGV4
dC5nZXRDVE0oR3JhcGhpY3NDb250ZXh0OjpEZWZpbml0ZWx5SW5jbHVkZURldmljZVNjYWxlKTsK
LSAgICBtX2NhY2hlZERlc3RpbmF0aW9uUmVjdCA9IGRzdFJlY3Q7Ci0gICAgbV9jYWNoZWRTb3Vy
Y2VSZWN0ID0gc3JjUmVjdDsKLSAgICArK21fY2FjaGluZ0NvdW50Rm9yVGVzdGluZzsKLQotICAg
IEludFNpemUgYmFja2VuZFNpemUgPSBtX2NhY2hlZEltYWdlQnVmZmVyLT5iYWNrZW5kU2l6ZSgp
OwotICAgIGRlY29kZWRTaXplQ2hhbmdlZChiYWNrZW5kU2l6ZS51bmNsYW1wZWRBcmVhKCkgKiA0
KTsKLX0KLQotSW1hZ2VEcmF3UmVzdWx0IFBERkRvY3VtZW50SW1hZ2U6OmRyYXcoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCi17Ci0gICAg
aWYgKCFtX2RvY3VtZW50IHx8ICFtX2hhc1BhZ2UpCi0gICAgICAgIHJldHVybiBJbWFnZURyYXdS
ZXN1bHQ6OkRpZE5vdGhpbmc7Ci0KLSAgICB1cGRhdGVDYWNoZWRJbWFnZUlmTmVlZGVkKGNvbnRl
eHQsIGRzdFJlY3QsIHNyY1JlY3QpOwotCi0gICAgewotICAgICAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7Ci0gICAgICAgIGNvbnRleHQuc2V0Q29tcG9z
aXRlT3BlcmF0aW9uKG9wdGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSk7Ci0KLSAgICAgICAgaWYg
KG1fY2FjaGVkSW1hZ2VCdWZmZXIpIHsKLSAgICAgICAgICAgIC8vIERyYXcgdGhlIEltYWdlQnVm
ZmVyICdtX2NhY2hlZEltYWdlQnVmZmVyJyB0byB0aGUgcmVjdGFuZ2xlICdtX2NhY2hlZEltYWdl
UmVjdCcKLSAgICAgICAgICAgIC8vIG9uIHRoZSBkZXN0aW5hdGlvbiBjb250ZXh0LiBTaW5jZSB0
aGUgcGl4ZWxzIG9mIHRoZSByZWN0YW5nbGUgJ21fY2FjaGVkSW1hZ2VSZWN0JwotICAgICAgICAg
ICAgLy8gb2YgdGhlIHNvdXJjZSBQREYgd2FzIGNvcGllZCB0byAnbV9jYWNoZWRJbWFnZUJ1ZmZl
cicsIHRoZSBzaXplcyBvZiB0aGUgc291cmNlCi0gICAgICAgICAgICAvLyBhbmQgdGhlIGRlc3Rp
bmF0aW9uIHJlY3RhbmdsZXMgd2lsbCBiZSBlcXVhbCBhbmQgbm8gc2NhbGluZyB3aWxsIGJlIG5l
ZWRlZCBoZXJlLgotICAgICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKm1fY2FjaGVk
SW1hZ2VCdWZmZXIsIG1fY2FjaGVkSW1hZ2VSZWN0KTsKLSAgICAgICAgfQotICAgICAgICBlbHNl
IHsKLSAgICAgICAgICAgIHRyYW5zZm9ybUNvbnRleHRGb3JQYWludGluZyhjb250ZXh0LCBkc3RS
ZWN0LCBzcmNSZWN0KTsKLSAgICAgICAgICAgIGRyYXdQREZQYWdlKGNvbnRleHQpOwotICAgICAg
ICB9Ci0gICAgfQotCi0gICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkKLSAgICAgICAgaW1hZ2VPYnNl
cnZlcigpLT5kaWREcmF3KCp0aGlzKTsKLQotICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRp
ZERyYXc7Ci19Ci0KLXZvaWQgUERGRG9jdW1lbnRJbWFnZTo6ZGVzdHJveURlY29kZWREYXRhKGJv
b2wpCi17Ci0gICAgbV9jYWNoZWRJbWFnZUJ1ZmZlciA9IG51bGxwdHI7Ci0gICAgbV9jYWNoZWRJ
bWFnZVJlY3QgPSBGbG9hdFJlY3QoKTsKLSAgICBkZWNvZGVkU2l6ZUNoYW5nZWQoMCk7Ci19Ci0K
LSNpZiAhVVNFKFBERktJVF9GT1JfUERGRE9DVU1FTlRJTUFHRSkKLQotdm9pZCBQREZEb2N1bWVu
dEltYWdlOjpjcmVhdGVQREZEb2N1bWVudCgpCi17Ci0gICAgUmV0YWluUHRyPENHRGF0YVByb3Zp
ZGVyUmVmPiBkYXRhUHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENG
RGF0YShkYXRhKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpKSk7Ci0gICAgbV9kb2N1bWVudCA9IGFk
b3B0Q0YoQ0dQREZEb2N1bWVudENyZWF0ZVdpdGhQcm92aWRlcihkYXRhUHJvdmlkZXIuZ2V0KCkp
KTsKLX0KLQotdm9pZCBQREZEb2N1bWVudEltYWdlOjpjb21wdXRlQm91bmRzRm9yQ3VycmVudFBh
Z2UoKQotewotICAgIEFTU0VSVChwYWdlQ291bnQoKSA+IDApOwotICAgIENHUERGUGFnZVJlZiBj
Z1BhZ2UgPSBDR1BERkRvY3VtZW50R2V0UGFnZShtX2RvY3VtZW50LmdldCgpLCAxKTsKLSAgICBD
R1JlY3QgbWVkaWFCb3ggPSBDR1BERlBhZ2VHZXRCb3hSZWN0KGNnUGFnZSwga0NHUERGTWVkaWFC
b3gpOwotCi0gICAgLy8gR2V0IGNyb3AgYm94IChub3QgYWx3YXlzIHRoZXJlKS4gSWYgbm90LCB1
c2UgbWVkaWEgYm94LgotICAgIENHUmVjdCByID0gQ0dQREZQYWdlR2V0Qm94UmVjdChjZ1BhZ2Us
IGtDR1BERkNyb3BCb3gpOwotICAgIGlmICghQ0dSZWN0SXNFbXB0eShyKSkKLSAgICAgICAgbV9j
cm9wQm94ID0gcjsKLSAgICBlbHNlCi0gICAgICAgIG1fY3JvcEJveCA9IG1lZGlhQm94OwotCi0g
ICAgbV9yb3RhdGlvbkRlZ3JlZXMgPSBDR1BERlBhZ2VHZXRSb3RhdGlvbkFuZ2xlKGNnUGFnZSk7
Ci19Ci0KLXVuc2lnbmVkIFBERkRvY3VtZW50SW1hZ2U6OnBhZ2VDb3VudCgpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIENHUERGRG9jdW1lbnRHZXROdW1iZXJPZlBhZ2VzKG1fZG9jdW1lbnQuZ2V0KCkp
OwotfQotCi1zdGF0aWMgdm9pZCBhcHBseVJvdGF0aW9uRm9yUGFpbnRpbmcoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBGbG9hdFNpemUgc2l6ZSwgaW50IHJvdGF0aW9uRGVncmVlcykKLXsKLSAg
ICBpZiAocm90YXRpb25EZWdyZWVzID09IDkwKQotICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZSgw
LCBzaXplLmhlaWdodCgpKTsKLSAgICBlbHNlIGlmIChyb3RhdGlvbkRlZ3JlZXMgPT0gMTgwKQot
ICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZShzaXplKTsKLSAgICBlbHNlIGlmIChyb3RhdGlvbkRl
Z3JlZXMgPT0gMjcwKQotICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZShzaXplLndpZHRoKCksIDAp
OwotCi0gICAgY29udGV4dC5yb3RhdGUoLWRlZzJyYWQoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHJvdGF0
aW9uRGVncmVlcykpKTsKLX0KLQotdm9pZCBQREZEb2N1bWVudEltYWdlOjpkcmF3UERGUGFnZShH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQpCi17Ci0gICAgYXBwbHlSb3RhdGlvbkZvclBhaW50aW5n
KGNvbnRleHQsIHNpemUoKSwgbV9yb3RhdGlvbkRlZ3JlZXMpOwotCi0gICAgY29udGV4dC50cmFu
c2xhdGUoLW1fY3JvcEJveC5sb2NhdGlvbigpKTsKLQotI2lmIFVTRShESVJFQ1QyRCkKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOwotI2Vsc2UKLSAgICAvLyBDR1BERiBwYWdlcyBhcmUgaW5kZXhlZCBm
cm9tIDEuCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgQ0dDb250ZXh0RHJhd1BERlBhZ2VXaXRo
QW5ub3RhdGlvbnMoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgQ0dQREZEb2N1bWVudEdldFBh
Z2UobV9kb2N1bWVudC5nZXQoKSwgMSksIG51bGxwdHIpOwotI2Vsc2UKLSAgICBDR0NvbnRleHRE
cmF3UERGUGFnZShjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBDR1BERkRvY3VtZW50R2V0UGFn
ZShtX2RvY3VtZW50LmdldCgpLCAxKSk7Ci0jZW5kaWYKLSNlbmRpZgotfQotCi0jZW5kaWYgLy8g
IVVTRShQREZLSVRfRk9SX1BERkRPQ1VNRU5USU1BR0UpCi0KLSNpZiBQTEFURk9STShNQUMpCi0K
LVJldGFpblB0cjxDRk11dGFibGVEYXRhUmVmPiBQREZEb2N1bWVudEltYWdlOjpjb252ZXJ0UG9z
dFNjcmlwdERhdGFUb1BERihSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIHBvc3RTY3JpcHREYXRhKQot
ewotICAgIC8vIENvbnZlcnQgUG9zdFNjcmlwdCB0byBQREYgdXNpbmcgdGhlIFF1YXJ0eiAyRCBB
UEkuCi0gICAgLy8gaHR0cDovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi9HcmFw
aGljc0ltYWdpbmcvQ29uY2VwdHVhbC9kcmF3aW5nd2l0aHF1YXJ0ejJkL2RxX3BzX2NvbnZlcnQv
Y2hhcHRlcl8xNl9zZWN0aW9uXzEuaHRtbAotCi0gICAgQ0dQU0NvbnZlcnRlckNhbGxiYWNrcyBj
YWxsYmFja3MgPSB7IH07Ci0gICAgYXV0byBjb252ZXJ0ZXIgPSBhZG9wdENGKENHUFNDb252ZXJ0
ZXJDcmVhdGUoMCwgJmNhbGxiYWNrcywgMCkpOwotICAgIGF1dG8gcHJvdmlkZXIgPSBhZG9wdENG
KENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YShwb3N0U2NyaXB0RGF0YS5nZXQoKSkpOwot
ICAgIGF1dG8gcGRmRGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCAwKSk7Ci0gICAgYXV0byBjb25zdW1lciA9IGFkb3B0Q0YoQ0dEYXRhQ29uc3Vt
ZXJDcmVhdGVXaXRoQ0ZEYXRhKHBkZkRhdGEuZ2V0KCkpKTsKLQotICAgIENHUFNDb252ZXJ0ZXJD
b252ZXJ0KGNvbnZlcnRlci5nZXQoKSwgcHJvdmlkZXIuZ2V0KCksIGNvbnN1bWVyLmdldCgpLCAw
KTsKLSAgICByZXR1cm4gcGRmRGF0YTsKLX0KLQotI2VuZGlmCi0KLXZvaWQgUERGRG9jdW1lbnRJ
bWFnZTo6ZHVtcChUZXh0U3RyZWFtJiB0cykgY29uc3QKLXsKLSAgICBJbWFnZTo6ZHVtcCh0cyk7
Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJwYWdlLWNvdW50IiwgcGFnZUNvdW50KCkpOwotICAgIHRz
LmR1bXBQcm9wZXJ0eSgiY3JvcC1ib3giLCBtX2Nyb3BCb3gpOwotICAgIGlmIChtX3JvdGF0aW9u
RGVncmVlcykKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJyb3RhdGlvbiIsIG1fcm90YXRpb25E
ZWdyZWVzKTsKLX0KLQotfQotCi0jZW5kaWYgLy8gVVNFKENHKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1N2Y4OTQ3NDlkNWVhYzkwNTNiOGQ4YTk0ZWQwODVlNWFm
ZjUxNWE3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuaAorKysg
L2Rldi9udWxsCkBAIC0xLDEyNCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAy
MDA1LCAyMDA2LCAyMDEzIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIFBERkRvY3VtZW50
SW1hZ2VfaAotI2RlZmluZSBQREZEb2N1bWVudEltYWdlX2gKLQotI2luY2x1ZGUgIkFmZmluZVRy
YW5zZm9ybS5oIgotI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgotI2luY2x1ZGUgIkdyYXBoaWNzVHlw
ZXMuaCIKLSNpbmNsdWRlICJJbWFnZS5oIgotI2luY2x1ZGUgIlNldHRpbmdzLmgiCi0KLSNpZiBV
U0UoQ0cpCi0KLSNpZiBQTEFURk9STShNQUMpCi0jZGVmaW5lIFVTRV9QREZLSVRfRk9SX1BERkRP
Q1VNRU5USU1BR0UgMQotI2VuZGlmCi0KLXR5cGVkZWYgc3RydWN0IENHUERGRG9jdW1lbnQgKkNH
UERGRG9jdW1lbnRSZWY7Ci1PQkpDX0NMQVNTIFBERkRvY3VtZW50OwotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLWNsYXNzIEdyYXBoaWNzQ29udGV4dDsKLWNsYXNzIEltYWdlQnVmZmVyOwotCi1j
bGFzcyBQREZEb2N1bWVudEltYWdlIGZpbmFsIDogcHVibGljIEltYWdlIHsKLXB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmPFBERkRvY3VtZW50SW1hZ2U+IGNyZWF0ZShJbWFnZU9ic2VydmVyKiBvYnNl
cnZlcikKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBERkRvY3VtZW50SW1h
Z2Uob2JzZXJ2ZXIpKTsKLSAgICB9Ci0KLSAgICB2b2lkIHNldFBkZkltYWdlQ2FjaGluZ1BvbGlj
eShQREZJbWFnZUNhY2hpbmdQb2xpY3kpOwotICAgIAotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgUmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+IGNvbnZlcnRQ
b3N0U2NyaXB0RGF0YVRvUERGKFJldGFpblB0cjxDRkRhdGFSZWY+JiYgcG9zdFNjcmlwdERhdGEp
OwotI2VuZGlmCi0KLSAgICB1bnNpZ25lZCBjYWNoaW5nQ291bnRGb3JUZXN0aW5nKCkgY29uc3Qg
eyByZXR1cm4gbV9jYWNoaW5nQ291bnRGb3JUZXN0aW5nOyB9Ci0KLXByaXZhdGU6Ci0gICAgUERG
RG9jdW1lbnRJbWFnZShJbWFnZU9ic2VydmVyKik7Ci0gICAgdmlydHVhbCB+UERGRG9jdW1lbnRJ
bWFnZSgpOwotCi0gICAgYm9vbCBpc1BERkRvY3VtZW50SW1hZ2UoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiB0cnVlOyB9Ci0KLSAgICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCBv
dmVycmlkZTsKLQotICAgIGJvb2wgaGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4oKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KLSAgICBFbmNvZGVkRGF0YVN0YXR1cyBkYXRhQ2hhbmdl
ZChib29sIGFsbERhdGFSZWNlaXZlZCkgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIGRlc3Ryb3lEZWNv
ZGVkRGF0YShib29sIC8qZGVzdHJveUFsbCovID0gdHJ1ZSkgb3ZlcnJpZGU7Ci0KLSAgICB2b2lk
IGNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKExlbmd0aCYgaW50cmluc2ljV2lkdGgsIExlbmd0
aCYgaW50cmluc2ljSGVpZ2h0LCBGbG9hdFNpemUmIGludHJpbnNpY1JhdGlvKSBvdmVycmlkZTsK
LSAgICBGbG9hdFNpemUgc2l6ZShJbWFnZU9yaWVudGF0aW9uID0gSW1hZ2VPcmllbnRhdGlvbjo6
RnJvbUltYWdlKSBjb25zdCBvdmVycmlkZTsKLQotICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pIG92ZXJyaWRlOwot
Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHRvIGJlIGxlc3MgY29uc2VydmF0aXZlLgot
ICAgIGJvb2wgY3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gZmFsc2U7IH0KLQotICAgIHZvaWQgZHVtcChXVEY6OlRleHRTdHJlYW0mKSBjb25zdCBv
dmVycmlkZTsKLQotICAgIHZvaWQgY3JlYXRlUERGRG9jdW1lbnQoKTsKLSAgICB2b2lkIGNvbXB1
dGVCb3VuZHNGb3JDdXJyZW50UGFnZSgpOwotICAgIHVuc2lnbmVkIHBhZ2VDb3VudCgpIGNvbnN0
OwotICAgIHZvaWQgZHJhd1BERlBhZ2UoR3JhcGhpY3NDb250ZXh0Jik7Ci0KLSAgICB2b2lkIGRl
Y29kZWRTaXplQ2hhbmdlZChzaXplX3QgbmV3Q2FjaGVkQnl0ZXMpOwotICAgIHZvaWQgdXBkYXRl
Q2FjaGVkSW1hZ2VJZk5lZWRlZChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCk7Ci0gICAgYm9vbCBjYWNoZVBhcmFtZXRl
cnNNYXRjaChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCkgY29uc3Q7Ci0KLSAgICBQREZJbWFnZUNhY2hpbmdQb2xpY3kg
bV9wZGZJbWFnZUNhY2hpbmdQb2xpY3kgeyBkZWZhdWx0UERGSW1hZ2VDYWNoaW5nUG9saWN5IH07
Ci0KLSNpZiBVU0UoUERGS0lUX0ZPUl9QREZET0NVTUVOVElNQUdFKQotICAgIFJldGFpblB0cjxQ
REZEb2N1bWVudD4gbV9kb2N1bWVudDsKLSNlbHNlCi0gICAgUmV0YWluUHRyPENHUERGRG9jdW1l
bnRSZWY+IG1fZG9jdW1lbnQ7Ci0jZW5kaWYKLQotICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gbV9j
YWNoZWRJbWFnZUJ1ZmZlcjsKLSAgICBGbG9hdFJlY3QgbV9jYWNoZWRJbWFnZVJlY3Q7Ci0gICAg
QWZmaW5lVHJhbnNmb3JtIG1fY2FjaGVkVHJhbnNmb3JtOwotICAgIEZsb2F0UmVjdCBtX2NhY2hl
ZERlc3RpbmF0aW9uUmVjdDsKLSAgICBGbG9hdFJlY3QgbV9jYWNoZWRTb3VyY2VSZWN0OwotICAg
IHNpemVfdCBtX2NhY2hlZEJ5dGVzIHsgMCB9OwotICAgIHVuc2lnbmVkIG1fY2FjaGluZ0NvdW50
Rm9yVGVzdGluZyB7IDAgfTsKLQotICAgIEZsb2F0UmVjdCBtX2Nyb3BCb3g7Ci0gICAgaW50IG1f
cm90YXRpb25EZWdyZWVzIHsgMCB9OyAvLyBDYW4gb25seSBiZSAwLCA5MCwgMTgwLCBvciAyNzAg
ZGVncmVlcy4KLSAgICBib29sIG1faGFzUGFnZSB7IGZhbHNlIH07Ci19OwotCi19Ci0KLVNQRUNJ
QUxJWkVfVFlQRV9UUkFJVFNfSU1BR0UoUERGRG9jdW1lbnRJbWFnZSkKLQotI2VuZGlmIC8vIFVT
RShDRykKLQotI2VuZGlmIC8vIFBERkRvY3VtZW50SW1hZ2VfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVy
Q29yZUltYWdlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdl
L0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tCmluZGV4IDM4ZGU4NTUyZjFlNDZhMWQz
NzBhZTZkYzI3ODlhMWVjNjY3NGJhMTIuLmViNzlkZGEzZTc2YTRlMGFmZWZhOWRkNmQxNmYxN2Yz
ZGJjMTM4NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
cmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3Jl
SW1hZ2UubW0KQEAgLTM2LDEyICszNiwxNCBAQAogI2ltcG9ydCAiRmxvYXRDb252ZXJzaW9uLmgi
CiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRDRy5oIgogI2ltcG9ydCAiSW1hZ2VCdWZmZXIuaCIK
KyNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIlBsYXRmb3JtSW1hZ2VCdWZmZXIuaCIKICNp
bXBvcnQgIlNvdXJjZUdyYXBoaWMuaCIKICNpbXBvcnQgPENvcmVJbWFnZS9DSUNvbnRleHQuaD4K
ICNpbXBvcnQgPENvcmVJbWFnZS9DSUZpbHRlci5oPgogI2ltcG9ydCA8Q29yZUltYWdlL0NvcmVJ
bWFnZS5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW1wb3J0IDx3dGYvdGV4
dC9UZXh0U3RyZWFtLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdC5jcHAKaW5kZXggOTIzMzY5OWEwZGRiMjM0Y2MzMGEzMjcxZGQ2YmEwN2RjYjQ2M2MyNi4u
OWI2MjgzODkwNDViOTY1ZWNjMmFlYjExYjA1MzBjNGY2YWE2NTRkNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3QuY3BwCkBAIC0yMzgsNiArMjM4LDggQEAgdm9pZCBEaXNwbGF5TGlzdDo6YXBwZW5k
KEl0ZW1IYW5kbGUgaXRlbSkKICAgICAgICAgcmV0dXJuIGFwcGVuZDxEcmF3SW1hZ2VCdWZmZXI+
KGl0ZW0uZ2V0PERyYXdJbWFnZUJ1ZmZlcj4oKSk7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05h
dGl2ZUltYWdlOgogICAgICAgICByZXR1cm4gYXBwZW5kPERyYXdOYXRpdmVJbWFnZT4oaXRlbS5n
ZXQ8RHJhd05hdGl2ZUltYWdlPigpKTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlUERG
RG9jdW1lbnQ6CisgICAgICAgIHJldHVybiBhcHBlbmQ8RHJhd05hdGl2ZVBERkRvY3VtZW50Pihp
dGVtLmdldDxEcmF3TmF0aXZlUERGRG9jdW1lbnQ+KCkpOwogICAgIGNhc2UgSXRlbVR5cGU6OkRy
YXdQYXR0ZXJuOgogICAgICAgICByZXR1cm4gYXBwZW5kPERyYXdQYXR0ZXJuPihpdGVtLmdldDxE
cmF3UGF0dGVybj4oKSk7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1JlY3Q6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdC5oCmluZGV4IDI2ZmM5NzMwNzIxMTI3MzAzOTNlMmRjYmM4N2QwYzZiOWNhNTQyNTgu
LjFkMDE2ZDgzMGRhZjUyOGQwNDU0OThhZTViNDgwYmMzNDJkMmRiYTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdC5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5j
bHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKKyNpbmNs
dWRlICJOYXRpdmVQREZEb2N1bWVudC5oIgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAj
aW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KQEAg
LTc4LDYgKzc5LDcgQEAgcHVibGljOgogCiAgICAgY29uc3QgSW1hZ2VCdWZmZXJIYXNoTWFwJiBp
bWFnZUJ1ZmZlcnMoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlQnVmZmVyczsgfQogICAgIGNvbnN0
IE5hdGl2ZUltYWdlSGFzaE1hcCYgbmF0aXZlSW1hZ2VzKCkgY29uc3QgeyByZXR1cm4gbV9uYXRp
dmVJbWFnZXM7IH0KKyAgICBjb25zdCBOYXRpdmVQREZEb2N1bWVudEhhc2hNYXAmIG5hdGl2ZVBE
RkRvY3VtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fbmF0aXZlUERGRG9jdW1lbnRzOyB9CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEl0ZW1CdWZmZXJDbGllbnQoSXRlbUJ1ZmZlclJlYWRp
bmdDbGllbnQqKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEl0ZW1CdWZmZXJDbGllbnQo
SXRlbUJ1ZmZlcldyaXRpbmdDbGllbnQqKTsKQEAgLTE4MSwxMSArMTgzLDE5IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICByZXR1cm4gbWFrZVJlZihpbWFnZSk7CiAgICAgICAgIH0pOwogICAgIH0K
LSAgICAKKworICAgIHZvaWQgY2FjaGVOYXRpdmVQREZEb2N1bWVudChOYXRpdmVQREZEb2N1bWVu
dCYgcGRmRG9jdW1lbnQpCisgICAgeworICAgICAgICBtX25hdGl2ZVBERkRvY3VtZW50cy5lbnN1
cmUocGRmRG9jdW1lbnQucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCksIFsmXSgpIHsKKyAg
ICAgICAgICAgIHJldHVybiBtYWtlUmVmKHBkZkRvY3VtZW50KTsKKyAgICAgICAgfSk7CisgICAg
fQorCiAgICAgc3RhdGljIGJvb2wgc2hvdWxkRHVtcEZvckZsYWdzKEFzVGV4dEZsYWdzLCBJdGVt
SGFuZGxlKTsKIAogICAgIEltYWdlQnVmZmVySGFzaE1hcCBtX2ltYWdlQnVmZmVyczsKICAgICBO
YXRpdmVJbWFnZUhhc2hNYXAgbV9uYXRpdmVJbWFnZXM7CisgICAgTmF0aXZlUERGRG9jdW1lbnRI
YXNoTWFwIG1fbmF0aXZlUERGRG9jdW1lbnRzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJdGVtQnVm
ZmVyPiBtX2l0ZW1zOwogICAgIFZlY3RvcjxPcHRpb25hbDxGbG9hdFJlY3Q+PiBtX2RyYXdpbmdJ
dGVtRXh0ZW50czsKICAgICBib29sIG1fdHJhY2tzRHJhd2luZ0l0ZW1FeHRlbnRzIHsgdHJ1ZSB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAppbmRleCBjODc4
YWQzNGM4YzQ4NGU0MWM2NWU3YmUxNDUyYmZhOGFiMzE2ZGMyLi5jMjVkYTJmNDc2Njk2NzIxNDZh
M2I3NmY2ZDBiNWRkOTMyYWE4YTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtQnVmZmVyLmNwcApAQCAtMTQ4LDYgKzE0OCwxMCBAQCB2b2lkIEl0ZW1IYW5kbGU6OmFwcGx5
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKICAgICAgICAgZ2V0PERyYXdOYXRpdmVJbWFnZT4o
KS5hcHBseShjb250ZXh0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBjYXNlIEl0ZW1U
eXBlOjpEcmF3TmF0aXZlUERGRG9jdW1lbnQ6IHsKKyAgICAgICAgZ2V0PERyYXdOYXRpdmVQREZE
b2N1bWVudD4oKS5hcHBseShjb250ZXh0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICBj
YXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVybjogewogICAgICAgICBnZXQ8RHJhd1BhdHRlcm4+KCku
YXBwbHkoY29udGV4dCk7CiAgICAgICAgIHJldHVybjsKQEAgLTQyMCw2ICs0MjQsMTAgQEAgdm9p
ZCBJdGVtSGFuZGxlOjpkZXN0cm95KCkKICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3Ry
aXZpYWxseV9kZXN0cnVjdGlibGU8RHJhd05hdGl2ZUltYWdlPjo6dmFsdWUpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQorICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVQREZEb2N1bWVudDog
eworICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxE
cmF3TmF0aXZlUERGRG9jdW1lbnQ+Ojp2YWx1ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAg
ICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46IHsKICAgICAgICAgc3RhdGljX2Fzc2VydChz
dGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8RHJhd1BhdHRlcm4+Ojp2YWx1ZSk7CiAgICAg
ICAgIHJldHVybjsKQEAgLTU3Nyw2ICs1ODUsMTAgQEAgdm9pZCBJdGVtSGFuZGxlOjpjb3B5VG8o
SXRlbUhhbmRsZSBkZXN0aW5hdGlvbikgY29uc3QKICAgICAgICAgbmV3IChpdGVtT2Zmc2V0KSBE
cmF3TmF0aXZlSW1hZ2UoZ2V0PERyYXdOYXRpdmVJbWFnZT4oKSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZVBERkRvY3VtZW50OiB7CisgICAg
ICAgIG5ldyAoaXRlbU9mZnNldCkgRHJhd05hdGl2ZVBERkRvY3VtZW50KGdldDxEcmF3TmF0aXZl
UERGRG9jdW1lbnQ+KCkpOworICAgICAgICByZXR1cm47CisgICAgfQogICAgIGNhc2UgSXRlbVR5
cGU6OkRyYXdQYXR0ZXJuOiB7CiAgICAgICAgIG5ldyAoaXRlbU9mZnNldCkgRHJhd1BhdHRlcm4o
Z2V0PERyYXdQYXR0ZXJuPigpKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5
cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbVR5cGUuY3BwCmluZGV4IDE2NWQyMjQxMzVkMzRkOTI1MWZjY2JhOTQ4N2Yy
YmNjZjg1ZTExZTYuLjM2N2FkY2E2OWUyOGEyMWNmYzc1MjEzMmUwOGI1OGY1NTRjY2MxOTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1UeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5jcHAKQEAgLTg2LDYgKzg2LDgg
QEAgc3RhdGljIHNpemVfdCBzaXplT2ZJdGVtSW5CeXRlcyhJdGVtVHlwZSB0eXBlKQogICAgICAg
ICByZXR1cm4gc2l6ZW9mKERyYXdJbWFnZUJ1ZmZlcik7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJh
d05hdGl2ZUltYWdlOgogICAgICAgICByZXR1cm4gc2l6ZW9mKERyYXdOYXRpdmVJbWFnZSk7Cisg
ICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZVBERkRvY3VtZW50OgorICAgICAgICByZXR1cm4g
c2l6ZW9mKERyYXdOYXRpdmVQREZEb2N1bWVudCk7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1Bh
dHRlcm46CiAgICAgICAgIHJldHVybiBzaXplb2YoRHJhd1BhdHRlcm4pOwogICAgIGNhc2UgSXRl
bVR5cGU6OkRyYXdSZWN0OgpAQCAtMjA4LDYgKzIxMCw3IEBAIGJvb2wgaXNEcmF3aW5nSXRlbShJ
dGVtVHlwZSB0eXBlKQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lOgogICAgIGNhc2UgSXRl
bVR5cGU6OkRyYXdMaW5lc0ZvclRleHQ6CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUlt
YWdlOgorICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVQREZEb2N1bWVudDoKICAgICBjYXNl
IEl0ZW1UeXBlOjpEcmF3UGF0dGVybjoKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0aDoKICAg
ICBjYXNlIEl0ZW1UeXBlOjpEcmF3UmVjdDoKQEAgLTI4MSw2ICsyODQsNyBAQCBib29sIGlzSW5s
aW5lSXRlbShJdGVtVHlwZSB0eXBlKQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdFbGxpcHNlOgog
ICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjoKICAgICBjYXNlIEl0ZW1UeXBlOjpE
cmF3TmF0aXZlSW1hZ2U6CisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZVBERkRvY3VtZW50
OgogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgogICAgIGNhc2UgSXRlbVR5cGU6OkRy
YXdMaW5lOgogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdSZWN0OgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5
cGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1UeXBlLmgKaW5kZXggZmI1ZGVmZGI3YzZkY2U0OThiMjE5ZjRmYmQxNzNkM2Y5
MmE2MmY1YS4uMWViNTg1ZTQ0MDAzMjBkNjlkMWZiMzMyOGY1MTY5OGE5MmRjZDAwZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbVR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5oCkBAIC01NSw2ICs1NSw3IEBAIGVudW0g
Y2xhc3MgSXRlbVR5cGUgOiB1aW50OF90IHsKICAgICBEcmF3R2x5cGhzLAogICAgIERyYXdJbWFn
ZUJ1ZmZlciwKICAgICBEcmF3TmF0aXZlSW1hZ2UsCisgICAgRHJhd05hdGl2ZVBERkRvY3VtZW50
LAogICAgIERyYXdQYXR0ZXJuLAogICAgIERyYXdSZWN0LAogICAgIERyYXdMaW5lLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCmluZGV4IDhjYmRiYzM3Nzk5NGJiMTAzMWViMDJm
OWU0OGFhYWUxNjk2NTVhNzUuLmRlYzJiNDJiZDNlODM3ZGYyZjEwMWUwNThjODA4MDI3ZTAyMWYw
NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKQEAgLTQ1OCw2ICs0NTgs
MjUgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0
IERyYXdOYXRpdmVJbWFnZSYgaXRlbSkKICAgICByZXR1cm4gdHM7CiB9CiAKK05PX1JFVFVSTl9E
VUVfVE9fQVNTRVJUIHZvaWQgRHJhd05hdGl2ZVBERkRvY3VtZW50OjphcHBseShHcmFwaGljc0Nv
bnRleHQmKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit2b2lkIERy
YXdOYXRpdmVQREZEb2N1bWVudDo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBOYXRp
dmVQREZEb2N1bWVudCYgcGRmRG9jdW1lbnQpIGNvbnN0Cit7CisgICAgcGRmRG9jdW1lbnQuZHJh
dyhjb250ZXh0LCBtX2ltYWdlU2l6ZSwgbV9kZXN0aW5hdGlvblJlY3QsIG1fc3JjUmVjdCwgbV9v
cHRpb25zKTsKK30KKworc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYg
dHMsIGNvbnN0IERyYXdOYXRpdmVQREZEb2N1bWVudCYgaXRlbSkKK3sKKyAgICAvLyBGSVhNRTog
ZHVtcCBtb3JlIHN0dWZmLgorICAgIHRzLmR1bXBQcm9wZXJ0eSgicGRmLWRvY3VtZW50LWlkZW50
aWZpZXIiLCBpdGVtLnBkZkRvY3VtZW50SWRlbnRpZmllcigpKTsKKyAgICB0cy5kdW1wUHJvcGVy
dHkoInNvdXJjZS1yZWN0IiwgaXRlbS5zb3VyY2UoKSk7CisgICAgdHMuZHVtcFByb3BlcnR5KCJk
ZXN0LXJlY3QiLCBpdGVtLmRlc3RpbmF0aW9uUmVjdCgpKTsKKyAgICByZXR1cm4gdHM7Cit9CisK
IERyYXdQYXR0ZXJuOjpEcmF3UGF0dGVybihSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1h
Z2VJZGVudGlmaWVyLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxv
YXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKICAg
ICA6IG1faW1hZ2VJZGVudGlmaWVyKGltYWdlSWRlbnRpZmllcikKICAgICAsIG1faW1hZ2VTaXpl
KGltYWdlU2l6ZSkKQEAgLTEwMzYsNiArMTA1NSw3IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFRleHRTdHJlYW0mIHRzLCBJdGVtVHlwZSB0eXBlKQogICAgIGNhc2UgSXRlbVR5cGU6
OkRyYXdHbHlwaHM6IHRzIDw8ICJkcmF3LWdseXBocyI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5
cGU6OkRyYXdJbWFnZUJ1ZmZlcjogdHMgPDwgImRyYXctaW1hZ2UtYnVmZmVyIjsgYnJlYWs7CiAg
ICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOiB0cyA8PCAiZHJhdy1uYXRpdmUtaW1h
Z2UiOyBicmVhazsKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlUERGRG9jdW1lbnQ6IHRz
IDw8ICJkcmF3LW5hdGl2ZS1wZGYtZG9jdW1lbnQiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBl
OjpEcmF3UGF0dGVybjogdHMgPDwgImRyYXctcGF0dGVybiI7IGJyZWFrOwogICAgIGNhc2UgSXRl
bVR5cGU6OkRyYXdSZWN0OiB0cyA8PCAiZHJhdy1yZWN0IjsgYnJlYWs7CiAgICAgY2FzZSBJdGVt
VHlwZTo6RHJhd0xpbmU6IHRzIDw8ICJkcmF3LWxpbmUiOyBicmVhazsKQEAgLTExNTQsNiArMTE3
NCw5IEBAIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIEl0ZW1IYW5kbGUg
aXRlbSkKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6CiAgICAgICAgIHRzIDw8
IGl0ZW0uZ2V0PERyYXdOYXRpdmVJbWFnZT4oKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJ
dGVtVHlwZTo6RHJhd05hdGl2ZVBERkRvY3VtZW50OgorICAgICAgICB0cyA8PCBpdGVtLmdldDxE
cmF3TmF0aXZlUERGRG9jdW1lbnQ+KCk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5
cGU6OkRyYXdQYXR0ZXJuOgogICAgICAgICB0cyA8PCBpdGVtLmdldDxEcmF3UGF0dGVybj4oKTsK
ICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAppbmRleCAxMDQ5
NDVkNDY2Yzg5YmNlNTIwNTg1M2U2ZGM5YTRhZjc0NjFmNjE1Li42ZjBmYjBmYzEzMDQxZjY1NTRh
Y2UzZDcyYzBkNzAxNDFlYmFjODJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgK
QEAgLTEwNzYsNiArMTA3NiwzOSBAQCBwcml2YXRlOgogICAgIEltYWdlUGFpbnRpbmdPcHRpb25z
IG1fb3B0aW9uczsKIH07CiAKK2NsYXNzIERyYXdOYXRpdmVQREZEb2N1bWVudCB7CitwdWJsaWM6
CisgICAgc3RhdGljIGNvbnN0ZXhwciBJdGVtVHlwZSBpdGVtVHlwZSA9IEl0ZW1UeXBlOjpEcmF3
TmF0aXZlUERGRG9jdW1lbnQ7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW5saW5lSXRl
bSA9IHRydWU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzRHJhd2luZ0l0ZW0gPSB0cnVl
OworCisgICAgRHJhd05hdGl2ZVBERkRvY3VtZW50KFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciBwZGZEb2N1bWVudElkZW50aWZpZXIsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQorICAgICAgICA6IG1fcGRmRG9jdW1lbnRJZGVu
dGlmaWVyKHBkZkRvY3VtZW50SWRlbnRpZmllcikKKyAgICAgICAgLCBtX2ltYWdlU2l6ZShpbWFn
ZVNpemUpCisgICAgICAgICwgbV9kZXN0aW5hdGlvblJlY3QoZGVzdFJlY3QpCisgICAgICAgICwg
bV9zcmNSZWN0KHNyY1JlY3QpCisgICAgICAgICwgbV9vcHRpb25zKG9wdGlvbnMpCisgICAgewor
ICAgIH0KKworICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBwZGZEb2N1bWVudElkZW50
aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3BkZkRvY3VtZW50SWRlbnRpZmllcjsgfQorICAgIGNv
bnN0IEZsb2F0UmVjdCYgc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9zcmNSZWN0OyB9CisgICAg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvblJlY3QoKSBjb25zdCB7IHJldHVybiBtX2Rlc3Rp
bmF0aW9uUmVjdDsgfQorCisgICAgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBhcHBseShH
cmFwaGljc0NvbnRleHQmKSBjb25zdDsKKyAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYs
IE5hdGl2ZVBERkRvY3VtZW50JikgY29uc3Q7CisKKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGds
b2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfQorICAgIE9wdGlvbmFs
PEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QgeyBy
ZXR1cm4gbV9kZXN0aW5hdGlvblJlY3Q7IH0KKworcHJpdmF0ZToKKyAgICBSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIgbV9wZGZEb2N1bWVudElkZW50aWZpZXI7CisgICAgRmxvYXRTaXplIG1f
aW1hZ2VTaXplOworICAgIEZsb2F0UmVjdCBtX2Rlc3RpbmF0aW9uUmVjdDsKKyAgICBGbG9hdFJl
Y3QgbV9zcmNSZWN0OworICAgIEltYWdlUGFpbnRpbmdPcHRpb25zIG1fb3B0aW9uczsKK307CisK
IGNsYXNzIERyYXdQYXR0ZXJuIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIEl0ZW1U
eXBlIGl0ZW1UeXBlID0gSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOwpAQCAtMjI4Niw2ICsyMzE5LDcg
QEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRl
bVR5cGU+IHsKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdHbHlwaHMs
CiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXIsCiAg
ICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2UsCisgICAg
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3TmF0aXZlUERGRG9jdW1lbnQsCiAg
ICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3UGF0dGVybiwKICAgICBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdSZWN0LAogICAgIFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpJdGVtVHlwZTo6RHJhd0xpbmUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZWNvcmRlci5jcHAKaW5kZXggZjUwMDA1YTQ1NGIzOWY0NWNkMGZmNzFhZDdkMTljYTFjZDdjNzBl
ZS4uNzczYzU1Mjk2YTUxNzg4ZTBjMzNkMzEzMmZlN2Y1MTFlNjA2NTZmZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcApAQCAtMTgyLDYgKzE4MiwxNCBAQCB2b2lk
IFJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9h
dFNpemUmIGltYWdlU2l6ZSwgYwogICAgIGFwcGVuZDxEcmF3TmF0aXZlSW1hZ2U+KGltYWdlLnJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0
LCBvcHRpb25zKTsKIH0KIAordm9pZCBSZWNvcmRlcjo6ZHJhd05hdGl2ZVBERkRvY3VtZW50KE5h
dGl2ZVBERkRvY3VtZW50JiBwZGZEb2N1bWVudCwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit7CisgICAgaWYgKG1fZGVsZWdhdGUp
CisgICAgICAgIG1fZGVsZWdhdGUtPmNhY2hlTmF0aXZlUERGRG9jdW1lbnQocGRmRG9jdW1lbnQp
OworICAgIG1fZGlzcGxheUxpc3QuY2FjaGVOYXRpdmVQREZEb2N1bWVudChwZGZEb2N1bWVudCk7
CisgICAgYXBwZW5kPERyYXdOYXRpdmVQREZEb2N1bWVudD4ocGRmRG9jdW1lbnQucmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKCksIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlv
bnMpOworfQorCiB2b2lkIFJlY29yZGVyOjpkcmF3UGF0dGVybihOYXRpdmVJbWFnZSYgaW1hZ2Us
IGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5U
cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNp
bmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmIChtX2Rl
bGVnYXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKaW5kZXggNzdjYmEz
MzZkYzViOTRmNGRiMjFkYTY2MTEwN2JkNGMzMmNmNzA4NS4uNDJmZTRlNjBjYWU1MTE3ZmMxNTNh
OWY3ZjYwZTUwNzgwNDU4MjNiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRl
ci5oCkBAIC02Nyw2ICs2Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxB
cHBlbmRJdGVtT2ZUeXBlKEl0ZW1UeXBlKSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEFw
cGVuZEl0ZW1PZlR5cGUoSXRlbVR5cGUpIHsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgY2FjaGVO
YXRpdmVJbWFnZShOYXRpdmVJbWFnZSYpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgY2FjaGVO
YXRpdmVQREZEb2N1bWVudChOYXRpdmVQREZEb2N1bWVudCYpIHsgfQogICAgIH07CiAKIHByaXZh
dGU6CkBAIC0xMDQsNiArMTA1LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZHJhd0ltYWdlQnVm
ZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwg
Y29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9h
dFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOworICAg
IHZvaWQgZHJhd05hdGl2ZVBERkRvY3VtZW50KE5hdGl2ZVBERkRvY3VtZW50JiwgY29uc3QgRmxv
YXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAg
ICB2b2lkIGRyYXdQYXR0ZXJuKE5hdGl2ZUltYWdlJiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNp
emUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZs
b2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsK
IAogICAgIHZvaWQgZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQgYm9yZGVyVGhpY2tu
ZXNzKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcApp
bmRleCBjYTE5ODQ1YWFmODA0ZTE5NDg5OWYwOWMyYTA2OGI0NjNlZDU1OGZmLi4wOGI2NzhkZDAx
NjVhYWU2YTIyOTViMjNiMjg3OWQyOTA1M2I4OTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVwbGF5ZXIuY3BwCkBAIC0zNCwxMSArMzQsMTIgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiAKLVJlcGxheWVyOjpSZXBsYXllcihHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IERpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgY29uc3Qg
SW1hZ2VCdWZmZXJIYXNoTWFwKiBpbWFnZUJ1ZmZlcnMsIGNvbnN0IE5hdGl2ZUltYWdlSGFzaE1h
cCogbmF0aXZlSW1hZ2VzLCBEZWxlZ2F0ZSogZGVsZWdhdGUpCitSZXBsYXllcjo6UmVwbGF5ZXIo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3Qs
IGNvbnN0IEltYWdlQnVmZmVySGFzaE1hcCogaW1hZ2VCdWZmZXJzLCBjb25zdCBOYXRpdmVJbWFn
ZUhhc2hNYXAqIG5hdGl2ZUltYWdlcywgY29uc3QgTmF0aXZlUERGRG9jdW1lbnRIYXNoTWFwKiBu
YXRpdmVQREZEb2N1bWVudHMsIERlbGVnYXRlKiBkZWxlZ2F0ZSkKICAgICA6IG1fY29udGV4dChj
b250ZXh0KQogICAgICwgbV9kaXNwbGF5TGlzdChkaXNwbGF5TGlzdCkKICAgICAsIG1faW1hZ2VC
dWZmZXJzKGltYWdlQnVmZmVycyA/ICppbWFnZUJ1ZmZlcnMgOiBtX2Rpc3BsYXlMaXN0LmltYWdl
QnVmZmVycygpKQogICAgICwgbV9uYXRpdmVJbWFnZXMobmF0aXZlSW1hZ2VzID8gKm5hdGl2ZUlt
YWdlcyA6IG1fZGlzcGxheUxpc3QubmF0aXZlSW1hZ2VzKCkpCisgICAgLCBtX25hdGl2ZVBERkRv
Y3VtZW50cyhuYXRpdmVQREZEb2N1bWVudHMgPyAqbmF0aXZlUERGRG9jdW1lbnRzIDogbV9kaXNw
bGF5TGlzdC5uYXRpdmVQREZEb2N1bWVudHMoKSkKICAgICAsIG1fZGVsZWdhdGUoZGVsZWdhdGUp
CiB7CiB9CkBAIC02Nyw2ICs2OCwxNiBAQCBpbmxpbmUgc3RhdGljIE9wdGlvbmFsPFN0b3BSZXBs
YXlSZWFzb24+IGFwcGx5TmF0aXZlSW1hZ2VJdGVtKEdyYXBoaWNzQ29udGV4dCYgYwogICAgIHJl
dHVybiBTdG9wUmVwbGF5UmVhc29uOjpNaXNzaW5nQ2FjaGVkUmVzb3VyY2U7CiB9CiAKK2lubGlu
ZSBzdGF0aWMgT3B0aW9uYWw8U3RvcFJlcGxheVJlYXNvbj4gYXBwbHlEcmF3TmF0aXZlUERGRG9j
dW1lbnRJdGVtKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTmF0aXZlUERGRG9jdW1l
bnRIYXNoTWFwJiBuYXRpdmVQREZEb2N1bWVudHMsIEl0ZW1IYW5kbGUgaXRlbSkKK3sKKyAgICBh
dXRvJiBuYXRpdmVQREZEb2N1bWVudEl0ZW0gPSBpdGVtLmdldDxEcmF3TmF0aXZlUERGRG9jdW1l
bnQ+KCk7CisgICAgaWYgKGF1dG8qIHBkZkRvY3VtZW50ID0gbmF0aXZlUERGRG9jdW1lbnRzLmdl
dChuYXRpdmVQREZEb2N1bWVudEl0ZW0ucGRmRG9jdW1lbnRJZGVudGlmaWVyKCkpKSB7CisgICAg
ICAgIG5hdGl2ZVBERkRvY3VtZW50SXRlbS5hcHBseShjb250ZXh0LCAqcGRmRG9jdW1lbnQpOwor
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIH0KKyAgICByZXR1cm4gU3RvcFJlcGxh
eVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlOworfQorCiBPcHRpb25hbDxTdG9wUmVwbGF5
UmVhc29uPiBSZXBsYXllcjo6YXBwbHlJdGVtKEl0ZW1IYW5kbGUgaXRlbSkKIHsKICAgICBpZiAo
bV9kZWxlZ2F0ZSAmJiBtX2RlbGVnYXRlLT5hcHBseShpdGVtLCBtX2NvbnRleHQpKQpAQCAtODQs
NiArOTUsOSBAQCBPcHRpb25hbDxTdG9wUmVwbGF5UmVhc29uPiBSZXBsYXllcjo6YXBwbHlJdGVt
KEl0ZW1IYW5kbGUgaXRlbSkKICAgICBpZiAoaXRlbS5pczxEcmF3UGF0dGVybj4oKSkKICAgICAg
ICAgcmV0dXJuIGFwcGx5TmF0aXZlSW1hZ2VJdGVtPERyYXdQYXR0ZXJuPihtX2NvbnRleHQsIG1f
bmF0aXZlSW1hZ2VzLCBpdGVtKTsKIAorICAgIGlmIChpdGVtLmlzPERyYXdOYXRpdmVQREZEb2N1
bWVudD4oKSkKKyAgICAgICAgcmV0dXJuIGFwcGx5RHJhd05hdGl2ZVBERkRvY3VtZW50SXRlbSht
X2NvbnRleHQsIG1fbmF0aXZlUERGRG9jdW1lbnRzLCBpdGVtKTsKKwogICAgIGl0ZW0uYXBwbHko
bV9jb250ZXh0KTsKICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVw
bGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlcGxheWVyLmgKaW5kZXggZTY3OGI4NjA2MmNlZGI2MTJhZThiY2VkN2MwYjc4
ODQ1NjdjMzc2Ni4uZGQzN2JmYmU2MzBiMDJiZTY3NmM1NjNjMWZkM2NiZWQ0NDBkZDhlYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVwbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oCkBAIC01NCw3ICs1NCw3IEBAIGNs
YXNzIFJlcGxheWVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZXBsYXllcik7CiBwdWJs
aWM6CiAgICAgY2xhc3MgRGVsZWdhdGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVwbGF5ZXIoR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgRGlzcGxheUxpc3QmLCBjb25zdCBJbWFnZUJ1ZmZlckhhc2hN
YXAqID0gbnVsbHB0ciwgY29uc3QgTmF0aXZlSW1hZ2VIYXNoTWFwKiA9IG51bGxwdHIsIERlbGVn
YXRlKiA9IG51bGxwdHIpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlcGxheWVyKEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IERpc3BsYXlMaXN0JiwgY29uc3QgSW1hZ2VCdWZmZXJIYXNoTWFwKiA9IG51
bGxwdHIsIGNvbnN0IE5hdGl2ZUltYWdlSGFzaE1hcCogPSBudWxscHRyLCBjb25zdCBOYXRpdmVQ
REZEb2N1bWVudEhhc2hNYXAqID0gbnVsbHB0ciwgRGVsZWdhdGUqID0gbnVsbHB0cik7CiAgICAg
V0VCQ09SRV9FWFBPUlQgflJlcGxheWVyKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBSZXBsYXlS
ZXN1bHQgcmVwbGF5KGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAgPSB7IH0sIGJvb2wgdHJh
Y2tSZXBsYXlMaXN0ID0gZmFsc2UpOwpAQCAtNzIsNiArNzIsNyBAQCBwcml2YXRlOgogICAgIGNv
bnN0IERpc3BsYXlMaXN0JiBtX2Rpc3BsYXlMaXN0OwogICAgIGNvbnN0IEltYWdlQnVmZmVySGFz
aE1hcCYgbV9pbWFnZUJ1ZmZlcnM7CiAgICAgY29uc3QgTmF0aXZlSW1hZ2VIYXNoTWFwJiBtX25h
dGl2ZUltYWdlczsKKyAgICBjb25zdCBOYXRpdmVQREZEb2N1bWVudEhhc2hNYXAmIG1fbmF0aXZl
UERGRG9jdW1lbnRzOwogICAgIERlbGVnYXRlKiBtX2RlbGVnYXRlOwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL05hdGl2ZVBERkRvY3VtZW50
TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL05hdGl2ZVBERkRv
Y3VtZW50TWFjLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE1NzdlMDgzMjk1YTU3NzRmYWQ2ZjhlYzVkZjJkZGRh
NDljYjliZTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvTmF0aXZlUERGRG9jdW1lbnRNYWMubW0KQEAgLTAsMCArMSwxMDUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcu
aCIKKyNpbXBvcnQgIk5hdGl2ZVBERkRvY3VtZW50LmgiCisKKyNpZiBFTkFCTEUoUERGS0lUX0ZP
Ul9QREZET0NVTUVOVElNQUdFKQorCisjaW1wb3J0ICJMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRl
eHQuaCIKKyNpbXBvcnQgIlNoYXJlZEJ1ZmZlci5oIgorI2ltcG9ydCA8UXVhcnR6L1F1YXJ0ei5o
PgorI2ltcG9ydCA8b2JqYy9vYmpjLWNsYXNzLmg+CisjaW1wb3J0IDxwYWwvc3BpL2NnL0NvcmVH
cmFwaGljc1NQSS5oPgorI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CisKK1NPRlRfTElOS19G
UkFNRVdPUktfSU5fVU1CUkVMTEEoUXVhcnR6LCBQREZLaXQpCitTT0ZUX0xJTktfQ0xBU1MoUERG
S2l0LCBQREZEb2N1bWVudCkKKworZXh0ZXJuICJDIiB7Citib29sIENHQ29udGV4dEdldEFsbG93
c0ZvbnRTbW9vdGhpbmcoQ0dDb250ZXh0UmVmKTsKK2Jvb2wgQ0dDb250ZXh0R2V0QWxsb3dzRm9u
dFN1YnBpeGVsUXVhbnRpemF0aW9uKENHQ29udGV4dFJlZik7Cit9CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworUmVmUHRyPE5hdGl2ZVBERkRvY3VtZW50PiBOYXRpdmVQREZEb2N1bWVudDo6Y3Jl
YXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcikKK3sKKyAgICBhdXRvIGRvY3VtZW50ID0gYWRvcHROUyhb
YWxsb2NQREZEb2N1bWVudEluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmRhdGEuY3JlYXRlTlNEYXRh
KCkuZ2V0KCldKTsKKyAgICBpZiAoIWRvY3VtZW50KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE5hdGl2ZVBERkRvY3VtZW50KGRhdGEsIHJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciwgV1RGTW92ZShkb2N1bWVudCkpKTsKK30KKwordm9pZCBOYXRp
dmVQREZEb2N1bWVudDo6Y29tcHV0ZUJvdW5kc0ZvckN1cnJlbnRQYWdlKCkKK3sKKyAgICBQREZQ
YWdlICpwZGZQYWdlID0gW21fcGxhdGZvcm1QREZEb2N1bWVudCBwYWdlQXRJbmRleDowXTsKKwor
ICAgIG1fY3JvcEJveCA9IFtwZGZQYWdlIGJvdW5kc0ZvckJveDprUERGRGlzcGxheUJveENyb3BC
b3hdOworICAgIG1fcm90YXRpb25EZWdyZWVzID0gW3BkZlBhZ2Ugcm90YXRpb25dOworfQorCit1
bnNpZ25lZCBOYXRpdmVQREZEb2N1bWVudDo6cGFnZUNvdW50KCkgY29uc3QKK3sKKyAgICByZXR1
cm4gW21fcGxhdGZvcm1QREZEb2N1bWVudCBwYWdlQ291bnRdOworfQorCit2b2lkIE5hdGl2ZVBE
RkRvY3VtZW50OjpkcmF3UERGUGFnZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZs
b2F0U2l6ZSYpCit7CisgICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGxvY2FsQ3VycmVu
dENvbnRleHQoY29udGV4dCk7CisKKyAgICAvLyBUaGVzZSBzdGF0ZXMgY2FuIGJlIG11dGF0ZWQg
YnkgUERGS2l0IGJ1dCBhcmUgbm90IHNhdmVkCisgICAgLy8gb24gdGhlIGNvbnRleHQncyBzdGF0
ZSBzdGFjay4gKDxyZGFyOi8vcHJvYmxlbS8xNDk1MTc1OSYzNTczODE4MT4pCisgICAgYm9vbCBh
bGxvd3NTbW9vdGhpbmcgPSBDR0NvbnRleHRHZXRBbGxvd3NGb250U21vb3RoaW5nKGNvbnRleHQu
cGxhdGZvcm1Db250ZXh0KCkpOworICAgIGJvb2wgYWxsb3dzU3VicGl4ZWxRdWFudGl6YXRpb24g
PSBDR0NvbnRleHRHZXRBbGxvd3NGb250U3VicGl4ZWxRdWFudGl6YXRpb24oY29udGV4dC5wbGF0
Zm9ybUNvbnRleHQoKSk7CisgICAgYm9vbCBhbGxvd3NTdWJwaXhlbFBvc2l0aW9uaW5nID0gQ0dD
b250ZXh0R2V0QWxsb3dzRm9udFN1YnBpeGVsUG9zaXRpb25pbmcoY29udGV4dC5wbGF0Zm9ybUNv
bnRleHQoKSk7CisKKyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgorICAg
IFtbbV9wbGF0Zm9ybVBERkRvY3VtZW50IHBhZ2VBdEluZGV4OjBdIGRyYXdXaXRoQm94OmtQREZE
aXNwbGF5Qm94Q3JvcEJveF07CisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5E
CisKKyAgICBDR0NvbnRleHRTZXRBbGxvd3NGb250U21vb3RoaW5nKGNvbnRleHQucGxhdGZvcm1D
b250ZXh0KCksIGFsbG93c1Ntb290aGluZyk7CisgICAgQ0dDb250ZXh0U2V0QWxsb3dzRm9udFN1
YnBpeGVsUXVhbnRpemF0aW9uKGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCksIGFsbG93c1N1YnBp
eGVsUXVhbnRpemF0aW9uKTsKKyAgICBDR0NvbnRleHRTZXRBbGxvd3NGb250U3VicGl4ZWxQb3Np
dGlvbmluZyhjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBhbGxvd3NTdWJwaXhlbFBvc2l0aW9u
aW5nKTsKK30KKworUmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+IE5hdGl2ZVBERkRvY3VtZW50
Ojpjb252ZXJ0UG9zdFNjcmlwdERhdGFUb1BERihSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIHBvc3RT
Y3JpcHREYXRhKQoreworICAgIC8vIENvbnZlcnQgUG9zdFNjcmlwdCB0byBQREYgdXNpbmcgdGhl
IFF1YXJ0eiAyRCBBUEkuCisgICAgLy8gaHR0cDovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1l
bnRhdGlvbi9HcmFwaGljc0ltYWdpbmcvQ29uY2VwdHVhbC9kcmF3aW5nd2l0aHF1YXJ0ejJkL2Rx
X3BzX2NvbnZlcnQvY2hhcHRlcl8xNl9zZWN0aW9uXzEuaHRtbAorCisgICAgQ0dQU0NvbnZlcnRl
ckNhbGxiYWNrcyBjYWxsYmFja3MgPSB7IH07CisgICAgYXV0byBjb252ZXJ0ZXIgPSBhZG9wdENG
KENHUFNDb252ZXJ0ZXJDcmVhdGUoMCwgJmNhbGxiYWNrcywgMCkpOworICAgIGF1dG8gcHJvdmlk
ZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YShwb3N0U2NyaXB0RGF0
YS5nZXQoKSkpOworICAgIGF1dG8gcGRmRGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlTXV0YWJs
ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwKSk7CisgICAgYXV0byBjb25zdW1lciA9IGFkb3B0Q0Yo
Q0dEYXRhQ29uc3VtZXJDcmVhdGVXaXRoQ0ZEYXRhKHBkZkRhdGEuZ2V0KCkpKTsKKworICAgIENH
UFNDb252ZXJ0ZXJDb252ZXJ0KGNvbnZlcnRlci5nZXQoKSwgcHJvdmlkZXIuZ2V0KCksIGNvbnN1
bWVyLmdldCgpLCAwKTsKKyAgICByZXR1cm4gcGRmRGF0YTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFBERktJVF9GT1JfUERGRE9DVU1FTlRJTUFHRSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1
bWVudEltYWdlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BE
RkRvY3VtZW50SW1hZ2VNYWMubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzZTZh
ZjdiMDM4OTI4MzhjM2JmZWExYzBjMTFhYTdmY2Y4YTc3YTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0KKysrIC9kZXYvbnVsbApAQCAtMSw4OCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9y
dCAiY29uZmlnLmgiCi0jaW1wb3J0ICJQREZEb2N1bWVudEltYWdlLmgiCi0KLSNpZiBVU0UoUERG
S0lUX0ZPUl9QREZET0NVTUVOVElNQUdFKQotCi0jaW1wb3J0ICJMb2NhbEN1cnJlbnRHcmFwaGlj
c0NvbnRleHQuaCIKLSNpbXBvcnQgIlNoYXJlZEJ1ZmZlci5oIgotI2ltcG9ydCA8UXVhcnR6L1F1
YXJ0ei5oPgotI2ltcG9ydCA8b2JqYy9vYmpjLWNsYXNzLmg+Ci0jaW1wb3J0IDxwYWwvc3BpL2Nn
L0NvcmVHcmFwaGljc1NQSS5oPgotI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgotI2ltcG9ydCA8
d3RmL1NvZnRMaW5raW5nLmg+Ci0KLVNPRlRfTElOS19GUkFNRVdPUktfSU5fVU1CUkVMTEEoUXVh
cnR6LCBQREZLaXQpCi1TT0ZUX0xJTktfQ0xBU1MoUERGS2l0LCBQREZEb2N1bWVudCkKLQotZXh0
ZXJuICJDIiB7Ci1ib29sIENHQ29udGV4dEdldEFsbG93c0ZvbnRTbW9vdGhpbmcoQ0dDb250ZXh0
UmVmIGNvbnRleHQpOwotYm9vbCBDR0NvbnRleHRHZXRBbGxvd3NGb250U3VicGl4ZWxRdWFudGl6
YXRpb24oQ0dDb250ZXh0UmVmIGNvbnRleHQpOwotfQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LXZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQoKQotewotICAgIG1fZG9j
dW1lbnQgPSBhZG9wdE5TKFthbGxvY1BERkRvY3VtZW50SW5zdGFuY2UoKSBpbml0V2l0aERhdGE6
ZGF0YSgpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwotfQotCi12b2lkIFBERkRvY3VtZW50SW1h
Z2U6OmNvbXB1dGVCb3VuZHNGb3JDdXJyZW50UGFnZSgpCi17Ci0gICAgUERGUGFnZSAqcGRmUGFn
ZSA9IFttX2RvY3VtZW50IHBhZ2VBdEluZGV4OjBdOwotCi0gICAgbV9jcm9wQm94ID0gW3BkZlBh
Z2UgYm91bmRzRm9yQm94OmtQREZEaXNwbGF5Qm94Q3JvcEJveF07Ci0gICAgbV9yb3RhdGlvbkRl
Z3JlZXMgPSBbcGRmUGFnZSByb3RhdGlvbl07Ci19Ci0KLXVuc2lnbmVkIFBERkRvY3VtZW50SW1h
Z2U6OnBhZ2VDb3VudCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFttX2RvY3VtZW50IHBhZ2VDb3Vu
dF07Ci19Ci0KLXZvaWQgUERGRG9jdW1lbnRJbWFnZTo6ZHJhd1BERlBhZ2UoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0KQotewotICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbEN1
cnJlbnRDb250ZXh0KGNvbnRleHQpOwotCi0gICAgLy8gVGhlc2Ugc3RhdGVzIGNhbiBiZSBtdXRh
dGVkIGJ5IFBERktpdCBidXQgYXJlIG5vdCBzYXZlZAotICAgIC8vIG9uIHRoZSBjb250ZXh0J3Mg
c3RhdGUgc3RhY2suICg8cmRhcjovL3Byb2JsZW0vMTQ5NTE3NTkmMzU3MzgxODE+KQotICAgIGJv
b2wgYWxsb3dzU21vb3RoaW5nID0gQ0dDb250ZXh0R2V0QWxsb3dzRm9udFNtb290aGluZyhjb250
ZXh0LnBsYXRmb3JtQ29udGV4dCgpKTsKLSAgICBib29sIGFsbG93c1N1YnBpeGVsUXVhbnRpemF0
aW9uID0gQ0dDb250ZXh0R2V0QWxsb3dzRm9udFN1YnBpeGVsUXVhbnRpemF0aW9uKGNvbnRleHQu
cGxhdGZvcm1Db250ZXh0KCkpOwotICAgIGJvb2wgYWxsb3dzU3VicGl4ZWxQb3NpdGlvbmluZyA9
IENHQ29udGV4dEdldEFsbG93c0ZvbnRTdWJwaXhlbFBvc2l0aW9uaW5nKGNvbnRleHQucGxhdGZv
cm1Db250ZXh0KCkpOwotCi0gICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4K
LSAgICBbW21fZG9jdW1lbnQgcGFnZUF0SW5kZXg6MF0gZHJhd1dpdGhCb3g6a1BERkRpc3BsYXlC
b3hDcm9wQm94XTsKLSAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKLQotICAg
IENHQ29udGV4dFNldEFsbG93c0ZvbnRTbW9vdGhpbmcoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQo
KSwgYWxsb3dzU21vb3RoaW5nKTsKLSAgICBDR0NvbnRleHRTZXRBbGxvd3NGb250U3VicGl4ZWxR
dWFudGl6YXRpb24oY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgYWxsb3dzU3VicGl4ZWxRdWFu
dGl6YXRpb24pOwotICAgIENHQ29udGV4dFNldEFsbG93c0ZvbnRTdWJwaXhlbFBvc2l0aW9uaW5n
KGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCksIGFsbG93c1N1YnBpeGVsUG9zaXRpb25pbmcpOwot
fQotCi19Ci0KLSNlbmRpZiAvLyBVU0UoUERGS0lUX0ZPUl9QREZET0NVTUVOVElNQUdFKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKaW5kZXggYzBiZDgyN2ZjNDQ0NmVl
Nzk3MjBhMGVlZjM2ZjQzYTk0OGY4ZGM2MC4uZDIxMDMwODJiYjM5ZDdhODM0NmZiZTY2ZGI0NjBi
NWQ1NDMyM2I2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklt
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCkBA
IC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSGl0VGVz
dFJlc3VsdC5oIgogI2luY2x1ZGUgIklubGluZUVsZW1lbnRCb3guaCIKKyNpbmNsdWRlICJQREZE
b2N1bWVudEltYWdlLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhaW50SW5mby5o
IgogI2luY2x1ZGUgIlJlbmRlckZyYWdtZW50ZWRGbG93LmgiCkBAIC02NCw3ICs2NSw2IEBACiAj
ZW5kaWYKIAogI2lmIFVTRShDRykKLSNpbmNsdWRlICJQREZEb2N1bWVudEltYWdlLmgiCiAjaW5j
bHVkZSAiU2V0dGluZ3MuaCIKICNlbmRpZgogCkBAIC02NjIsNyArNjYyLDcgQEAgSW1hZ2VEcmF3
UmVzdWx0IFJlbmRlckltYWdlOjpwYWludEludG9SZWN0KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBj
b25zdCBGbG9hdFJlY3QKICAgICAvLyBGSVhNRTogRG9jdW1lbnQgd2hlbiBpbWFnZSAhPSBpbWcu
Z2V0KCkuCiAgICAgSW1hZ2UqIGltYWdlID0gaW1hZ2VSZXNvdXJjZSgpLmltYWdlKCkuZ2V0KCk7
CiAKLSNpZiBVU0UoQ0cpCisjaWYgRU5BQkxFKFBERkRPQ1VNRU5USU1BR0UpCiAgICAgaWYgKGlz
PFBERkRvY3VtZW50SW1hZ2U+KGltYWdlKSkKICAgICAgICAgZG93bmNhc3Q8UERGRG9jdW1lbnRJ
bWFnZT4oKmltYWdlKS5zZXRQZGZJbWFnZUNhY2hpbmdQb2xpY3koc2V0dGluZ3MoKS5wZGZJbWFn
ZUNhY2hpbmdQb2xpY3koKSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNw
cAppbmRleCBlM2RmZTc5NTE2YzM1OWFkODQwNzdiZjVmZTg1MmZiOTFmN2UzZWQwLi5kMWJkY2U1
M2Q1ODNiMzlhNWNmMmIzZTMxNDhmN2YxNzljODNkZjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuY3BwCkBAIC0xNDIsNiArMTQyLDcgQEAKICNpbmNsdWRlICJOYXZpZ2F0b3JCZWFj
b24uaCIKICNpbmNsdWRlICJOYXZpZ2F0b3JNZWRpYURldmljZXMuaCIKICNpbmNsdWRlICJOZXR3
b3JrTG9hZEluZm9ybWF0aW9uLmgiCisjaW5jbHVkZSAiUERGRG9jdW1lbnRJbWFnZS5oIgogI2lu
Y2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdlT3ZlcmxheS5oIgogI2luY2x1ZGUgIlBhdGhV
dGlsaXRpZXMuaCIKQEAgLTIyNiwxMCArMjI3LDYgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJz
Lmg+CiAKLSNpZiBVU0UoQ0cpCi0jaW5jbHVkZSAiUERGRG9jdW1lbnRJbWFnZS5oIgotI2VuZGlm
Ci0KICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKICNpbmNsdWRlICJDb2xvckNob29zZXIu
aCIKICNlbmRpZgpAQCAtOTA3LDcgKzkwNCw3IEBAIHN0YXRpYyBCaXRtYXBJbWFnZSogYml0bWFw
SW1hZ2VGcm9tSW1hZ2VFbGVtZW50KEhUTUxJbWFnZUVsZW1lbnQmIGVsZW1lbnQpCiAgICAgcmV0
dXJuIGltYWdlICYmIGlzPEJpdG1hcEltYWdlPihpbWFnZSkgPyAmZG93bmNhc3Q8Qml0bWFwSW1h
Z2U+KCppbWFnZSkgOiBudWxscHRyOwogfQogCi0jaWYgVVNFKENHKQorI2lmIEVOQUJMRShQREZE
T0NVTUVOVElNQUdFKQogc3RhdGljIFBERkRvY3VtZW50SW1hZ2UqIHBkZkRvY3VtZW50SW1hZ2VG
cm9tSW1hZ2VFbGVtZW50KEhUTUxJbWFnZUVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgYXV0byog
aW1hZ2UgPSBpbWFnZUZyb21JbWFnZUVsZW1lbnQoZWxlbWVudCk7CkBAIC05NzAsNyArOTY3LDcg
QEAgdW5zaWduZWQgSW50ZXJuYWxzOjppbWFnZURlY29kZUNvdW50KEhUTUxJbWFnZUVsZW1lbnQm
IGVsZW1lbnQpCiAKIHVuc2lnbmVkIEludGVybmFsczo6cGRmRG9jdW1lbnRDYWNoaW5nQ291bnQo
SFRNTEltYWdlRWxlbWVudCYgZWxlbWVudCkKIHsKLSNpZiBVU0UoQ0cpCisjaWYgRU5BQkxFKFBE
RkRPQ1VNRU5USU1BR0UpCiAgICAgYXV0byogcGRmRG9jdW1lbnRJbWFnZSA9IHBkZkRvY3VtZW50
SW1hZ2VGcm9tSW1hZ2VFbGVtZW50KGVsZW1lbnQpOwogICAgIHJldHVybiBwZGZEb2N1bWVudElt
YWdlID8gcGRmRG9jdW1lbnRJbWFnZS0+Y2FjaGluZ0NvdW50Rm9yVGVzdGluZygpIDogMDsKICNl
bHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
SW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJ
bWFnZUJ1ZmZlci5oCmluZGV4IDVjNzU0NWJmZTY2OTI2MjBkMDEzZmRjODg2ZDc1ZWYzOWM4MWFm
ZGQuLmY5NTc4MzhiYmMyYTc3MzcxMmYzMmE2MGVhYTJmNzA3YjE5NTE0MTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5o
CkBAIC03Miw3ICs3Miw4IEBAIHB1YmxpYzoKIAogICAgICAgICBjb25zdCBhdXRvJiBpbWFnZUJ1
ZmZlcnMgPSBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQucmVtb3RlUmVzb3VyY2VDYWNoZSgpLmlt
YWdlQnVmZmVycygpOwogICAgICAgICBjb25zdCBhdXRvJiBuYXRpdmVJbWFnZXMgPSBtX3JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQucmVtb3RlUmVzb3VyY2VDYWNoZSgpLm5hdGl2ZUltYWdlcygpOwot
ICAgICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXIgcmVwbGF5ZXIgeyBCYXNlQ29u
Y3JldGVJbWFnZUJ1ZmZlcjo6Y29udGV4dCgpLCBkaXNwbGF5TGlzdCwgJmltYWdlQnVmZmVycywg
Jm5hdGl2ZUltYWdlcywgdGhpcyB9OworICAgICAgICBjb25zdCBhdXRvJiBuYXRpdmVQREZEb2N1
bWVudHMgPSBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQucmVtb3RlUmVzb3VyY2VDYWNoZSgpLm5h
dGl2ZVBERkRvY3VtZW50cygpOworICAgICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5
ZXIgcmVwbGF5ZXIgeyBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6Y29udGV4dCgpLCBkaXNwbGF5
TGlzdCwgJmltYWdlQnVmZmVycywgJm5hdGl2ZUltYWdlcywgJm5hdGl2ZVBERkRvY3VtZW50cywg
dGhpcyB9OwogICAgICAgICByZXR1cm4gcmVwbGF5ZXIucmVwbGF5KCk7CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5jcHAKaW5kZXggZjU5YzM4NzI0ZjhmNjJlZTc4MDJiOTIwMjM3ZjY4ODQ3
M2Q3ZmJmOS4uMjYyYWFjNjhlNTZiZjZiMmFmNmRjNDJiZWZmNTAwNTEwZGY0MzA5YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLmNwcApAQCAtMjI4LDYgKzIyOCwxNSBAQCB2b2lkIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ6OmNhY2hlTmF0aXZlSW1hZ2UoUmVmPE5hdGl2ZUltYWdlPiYmIGltYWdlKQog
ICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZU5hdGl2ZUltYWdlKFdURk1vdmUoaW1hZ2Up
KTsKIH0KIAordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjYWNoZU5hdGl2ZVBERkRvY3Vt
ZW50KElQQzo6U2hhcmVkQnVmZmVyQ29weSYmIGRhdGEsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCit7CisgICAgaWYgKCFkYXRhLmJ1ZmZl
cigpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoYXV0byBwZGZEb2N1bWVudCA9IE5hdGl2
ZVBERkRvY3VtZW50OjpjcmVhdGUoZGF0YS5idWZmZXIoKS5yZWxlYXNlTm9uTnVsbCgpLCByZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpKQorICAgICAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGUu
Y2FjaGVOYXRpdmVQREZEb2N1bWVudChtYWtlUmVmKCpwZGZEb2N1bWVudCkpOworfQorCiB2b2lk
IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZShSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogewogICAgIG1f
cmVtb3RlUmVzb3VyY2VDYWNoZS5yZWxlYXNlUmVtb3RlUmVzb3VyY2UocmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKTsKQEAgLTMwNSw2ICszMTQsNyBAQCBPcHRpb25hbDxEaXNwbGF5TGlzdDo6
SXRlbUhhbmRsZT4gV0FSTl9VTlVTRURfUkVUVVJOIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRl
YwogICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3RWxsaXBzZToKICAgICBjYXNl
IERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyOgogICAgIGNhc2UgRGlzcGxh
eUxpc3Q6Okl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6CisgICAgY2FzZSBEaXNwbGF5TGlzdDo6
SXRlbVR5cGU6OkRyYXdOYXRpdmVQREZEb2N1bWVudDoKICAgICBjYXNlIERpc3BsYXlMaXN0OjpJ
dGVtVHlwZTo6RHJhd1BhdHRlcm46CiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRy
YXdMaW5lOgogICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3UmVjdDoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZC5oCmluZGV4IDY0MDY2NjhmYWUwNTA1N2U5ZGYzMjY0ZjU3NTI0OTQ4OWQ3MDVj
NzguLjBmMTM5ZTZkZGVhMTcxZjk1ZjczNWFmN2I0NDc2OWE2ZGRjZTVhY2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIK
ICNpbmNsdWRlICJSZW1vdGVSZXNvdXJjZUNhY2hlLmgiCiAjaW5jbHVkZSAiUmVuZGVyaW5nQmFj
a2VuZElkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJDb3B5LmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9Db2xvclNwYWNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3RJdGVtcy5oPgpAQCAtMTA3LDYgKzEwOCw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCB3YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciBpbml0aWFsSWRlbnRpZmllciwgdWlu
dDY0X3QgaW5pdGlhbE9mZnNldCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
IGRlc3RpbmF0aW9uQnVmZmVySWRlbnRpZmllcik7CiAgICAgdm9pZCBnZXRJbWFnZURhdGEoV2Vi
Q29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIFdlYkNvcmU6OkludFJl
Y3Qgc3JjUmVjdCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKElQQzo6SW1hZ2VEYXRhUmVmZXJlbmNlJiYpPiYmKTsKICAgICB2b2lk
IGNhY2hlTmF0aXZlSW1hZ2UoUmVmPFdlYkNvcmU6Ok5hdGl2ZUltYWdlPiYmKTsKKyAgICB2b2lk
IGNhY2hlTmF0aXZlUERGRG9jdW1lbnQoSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiYsIFdlYkNvcmU6
OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgdm9pZCByZWxlYXNlUmVtb3RlUmVz
b3VyY2UoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB2b2lkIGRp
ZENyZWF0ZVNoYXJlZERpc3BsYXlMaXN0SGFuZGxlKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVt
QnVmZmVySWRlbnRpZmllciwgY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmLCBXZWJDb3Jl
OjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZGVzdGluYXRpb25CdWZmZXJJZGVudGlmaWVy
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbgppbmRleCA4ZTI3ZTA0
Zjc3MzgxYTZmYjk5NTczNDJhMjljMjE0NjA3MmVlY2Y4Li4zYTUwMWY2MTEyZTM3Yzc2YTFlZGE5
Mjk5NzQyYWI0MjY2ODY0YTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdl
cy5pbgpAQCAtMjcsNiArMjcsNyBAQCBtZXNzYWdlcyAtPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
IE5vdFJlZkNvdW50ZWQgewogICAgIFdha2VVcEFuZEFwcGx5RGlzcGxheUxpc3QoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyIGluaXRpYWxJZGVudGlmaWVyLCB1aW50
NjRfdCBpbml0aWFsT2Zmc2V0LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
ZGVzdGluYXRpb25CdWZmZXJJZGVudGlmaWVyKQogICAgIEdldEltYWdlRGF0YShlbnVtOnVpbnQ4
X3QgV2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIFdlYkNvcmU6
OkludFJlY3Qgc3JjUmVjdCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgLT4gKElQQzo6SW1hZ2VEYXRhUmVmZXJlbmNlIGlt
YWdlRGF0YSkgU3luY2hyb25vdXMKICAgICBDYWNoZU5hdGl2ZUltYWdlKFdlYkNvcmU6Ok5hdGl2
ZUltYWdlUmVmZXJlbmNlIG5hdGl2ZUltYWdlKQorICAgIENhY2hlTmF0aXZlUERGRG9jdW1lbnQo
SVBDOjpTaGFyZWRCdWZmZXJDb3B5IGRhdGEsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiAgICAgRGlkQ3JlYXRlU2hhcmVk
RGlzcGxheUxpc3RIYW5kbGUoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlm
aWVyIGlkZW50aWZpZXIsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaGFuZGxlLCBX
ZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZGVzdGluYXRpb25CdWZmZXJJZGVu
dGlmaWVyKQogICAgIFJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJDb3JlOjpSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUu
Y3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2Fj
aGUuY3BwCmluZGV4IGMzMzJkMmY3MDRlMTU4NGQ2YzBlNWNmYmRiN2VkNTZkYzRiMmMzNjkuLjky
NzU1MjVjN2U5ZWJmOWY5OWMyY2UxZTU4MTc4MDRjYjAzNDAwYjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5j
cHAKQEAgLTQ4LDEyICs0OCwyMCBAQCB2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlTmF0
aXZlSW1hZ2UoUmVmPE5hdGl2ZUltYWdlPiYmIGltYWdlKQogICAgIEFTU0VSVF9VTlVTRUQoYWRk
UmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKK3ZvaWQgUmVtb3RlUmVzb3VyY2VD
YWNoZTo6Y2FjaGVOYXRpdmVQREZEb2N1bWVudChSZWY8TmF0aXZlUERGRG9jdW1lbnQ+JiYgcGRm
RG9jdW1lbnQpCit7CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX25hdGl2ZVBERkRvY3VtZW50cy5h
ZGQocGRmRG9jdW1lbnQtPnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBXVEZNb3ZlKHBk
ZkRvY3VtZW50KSk7CisgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05l
d0VudHJ5KTsKK30KKwogdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpyZWxlYXNlUmVtb3RlUmVz
b3VyY2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllcikKIHsKICAgICBpZiAobV9pbWFnZUJ1ZmZlcnMucmVtb3ZlKHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcikpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAobV9uYXRpdmVJbWFnZXMucmVt
b3ZlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikpCiAgICAgICAgIHJldHVybjsKKyAgICBp
ZiAobV9uYXRpdmVQREZEb2N1bWVudHMucmVtb3ZlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cikpCisgICAgICAgIHJldHVybjsKICAgICAvLyBDYWNoaW5nIHRoZSByZW1vdGUgcmVzb3VyY2Ug
c2hvdWxkIGhhdmUgaGFwcGVuZWQgYmVmb3JlIHJlbGVhc2luZyBpdC4KICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oCmluZGV4IDFmMjEwNThlMzNhMTg3NWJiZDdmNzJj
MDEyM2M2NTAzZWM3OTliMGIuLmY4ZTFmMDRhNWZiZjIxZjM4ZDBhYzBlOTllMmJjMjVmODQxZDM1
ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZXNvdXJjZUNhY2hlLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZVJlc291cmNlQ2FjaGUuaApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSA8V2ViQ29y
ZS9JbWFnZUJ1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmF0aXZlSW1hZ2UuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL05hdGl2ZVBERkRvY3VtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCkBA
IC00MywxNCArNDQsMTcgQEAgcHVibGljOgogICAgIHZvaWQgY2FjaGVJbWFnZUJ1ZmZlcihSZWY8
V2ViQ29yZTo6SW1hZ2VCdWZmZXI+JiYpOwogICAgIFdlYkNvcmU6OkltYWdlQnVmZmVyKiBjYWNo
ZWRJbWFnZUJ1ZmZlcihXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAg
IHZvaWQgY2FjaGVOYXRpdmVJbWFnZShSZWY8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+JiYpOworICAg
IHZvaWQgY2FjaGVOYXRpdmVQREZEb2N1bWVudChSZWY8V2ViQ29yZTo6TmF0aXZlUERGRG9jdW1l
bnQ+JiYpOwogICAgIHZvaWQgcmVsZWFzZVJlbW90ZVJlc291cmNlKFdlYkNvcmU6OlJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgCiAgICAgY29uc3QgV2ViQ29yZTo6SW1hZ2VCdWZm
ZXJIYXNoTWFwJiBpbWFnZUJ1ZmZlcnMoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlQnVmZmVyczsg
fQogICAgIGNvbnN0IFdlYkNvcmU6Ok5hdGl2ZUltYWdlSGFzaE1hcCYgbmF0aXZlSW1hZ2VzKCkg
Y29uc3QgeyByZXR1cm4gbV9uYXRpdmVJbWFnZXM7IH0KKyAgICBjb25zdCBXZWJDb3JlOjpOYXRp
dmVQREZEb2N1bWVudEhhc2hNYXAmIG5hdGl2ZVBERkRvY3VtZW50cygpIGNvbnN0IHsgcmV0dXJu
IG1fbmF0aXZlUERGRG9jdW1lbnRzOyB9CiAKIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6SW1hZ2VC
dWZmZXJIYXNoTWFwIG1faW1hZ2VCdWZmZXJzOwogICAgIFdlYkNvcmU6Ok5hdGl2ZUltYWdlSGFz
aE1hcCBtX25hdGl2ZUltYWdlczsKKyAgICBXZWJDb3JlOjpOYXRpdmVQREZEb2N1bWVudEhhc2hN
YXAgbV9uYXRpdmVQREZEb2N1bWVudHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1h
Z2VCdWZmZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKaW5kZXggMzFjZDAyZDFiMGYyMWVkZTU4MjJiZjk0NWJh
ZDQ2ZWRlZjFlYjM3YS4uNTA4NGVlNGU4OWQzN2QzYTEzY2QyYmE1MGU5NTRmZGJhY2FiZWUyNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKQEAgLTIzMSw2ICsyMzEsMTIgQEAgcHJvdGVj
dGVkOgogICAgICAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPnJlbW90ZVJl
c291cmNlQ2FjaGVQcm94eSgpLmNhY2hlTmF0aXZlSW1hZ2UoaW1hZ2UpOwogICAgIH0KIAorICAg
IHZvaWQgY2FjaGVOYXRpdmVQREZEb2N1bWVudChXZWJDb3JlOjpOYXRpdmVQREZEb2N1bWVudCYg
cGRmRG9jdW1lbnQpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAobV9yZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHkpCisgICAgICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eS0+cmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5KCkuY2FjaGVOYXRpdmVQREZEb2N1bWVudChwZGZE
b2N1bWVudCk7CisgICAgfQorCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJI
YW5kbGUgY3JlYXRlSXRlbUJ1ZmZlcihzaXplX3QgY2FwYWNpdHkpIG92ZXJyaWRlCiAgICAgewog
ICAgICAgICBpZiAobV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCkBAIC0yOTUsNiArMzAx
LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVt
VHlwZTo6RHJhd0VsbGlwc2U6CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0
ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6CisgICAgICAgIGNhc2UgV2ViQ29yZTo6RGlz
cGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3TmF0aXZlUERGRG9jdW1lbnQ6CiAgICAgICAgIGNhc2Ug
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3UGF0dGVybjoKICAgICAgICAgY2Fz
ZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdMaW5lOgogICAgICAgICBjYXNl
IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1JlY3Q6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKaW5kZXggZTUyY2E0MDczNWU5NzllMzg3ZDgzZDE0
ZDI3YzQ5NjYxNzhlY2ZjNy4uZjhhODJiZDI4YjlmZTBjNTUxMTI5YTJjMjdmNThmY2EyYmZmYzNh
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcApAQCAtMzQsNiAr
MzQsNyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oIgogI2lu
Y2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVy
Q29weS5oIgogI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3Mu
aCIKIApAQCAtMTc4LDYgKzE3OSwxMSBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94
eTo6Y2FjaGVOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYgaW1hZ2UpCiAgICAgc2VuZChNZXNzYWdl
czo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Q2FjaGVOYXRpdmVJbWFnZShtYWtlUmVmKGltYWdl
KSksIG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwogfQogCit2b2lkIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRQcm94eTo6Y2FjaGVOYXRpdmVQREZEb2N1bWVudChOYXRpdmVQREZEb2N1bWVu
dCYgcGRmRG9jdW1lbnQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6Q2FjaGVOYXRpdmVQREZEb2N1bWVudChwZGZEb2N1bWVudC5kYXRhKCksIHBkZkRvY3Vt
ZW50LnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRl
bnRpZmllcik7Cit9CisKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpyZWxlYXNl
UmVtb3RlUmVzb3VyY2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcikKIHsKICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjpSZWxlYXNlUmVtb3RlUmVzb3VyY2UocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSwg
bV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkuaAppbmRleCA5NWY4ZDJiNDEyZmI5MWRmNzdjNjhmMTM2YjAwNzg2ZjAyNGQ3ZTI2
Li4yYTdjNzRkOWY5MGI1ZTM4MDdjNTdmMDdkMGFmODk3ZGVhZWRiYzc4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKQEAgLTc5LDYgKzc5LDcgQEAgcHVibGljOgogICAg
IHZvaWQgc3VibWl0RGlzcGxheUxpc3QoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3Bs
YXlMaXN0JiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRlc3RpbmF0aW9u
QnVmZmVySWRlbnRpZmllcik7CiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRp
ZmllciBmbHVzaERpc3BsYXlMaXN0QW5kQ29tbWl0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpEaXNwbGF5TGlzdCYsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAg
ICAgdm9pZCBjYWNoZU5hdGl2ZUltYWdlKFdlYkNvcmU6Ok5hdGl2ZUltYWdlJik7CisgICAgdm9p
ZCBjYWNoZU5hdGl2ZVBERkRvY3VtZW50KFdlYkNvcmU6Ok5hdGl2ZVBERkRvY3VtZW50Jik7CiAg
ICAgdm9pZCByZWxlYXNlUmVtb3RlUmVzb3VyY2UoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKTsKIAogICAgIGJvb2wgd2FpdEZvckltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0
ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcAppbmRleCA5MDRhYWVhZDhj
YzcxZTg4ZjY0MmI0YjUzNmU2OWFlMWU4OTM5ODljLi4yNjQ0MWNjOGM2NzU3YmI5NDE4MmYwOGQ0
ZTA1MTYxNGQzZTRlYzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwCkBA
IC03Nyw2ICs3NywzMCBAQCB2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6cmVsZWFzZU5h
dGl2ZUltYWdlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZQogICAgIG1fcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5LnJlbGVhc2VSZW1vdGVSZXNvdXJjZShyZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIpOwogfQogCit2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6Y2FjaGVO
YXRpdmVQREZEb2N1bWVudChOYXRpdmVQREZEb2N1bWVudCYgcGRmRG9jdW1lbnQpCit7CisgICAg
aWYgKG1fc2hhcmVkUERGRG9jdW1lbnRzLmNvbnRhaW5zKHBkZkRvY3VtZW50LnJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcigpKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIG1fc2hhcmVk
UERGRG9jdW1lbnRzLmFkZChwZGZEb2N1bWVudC5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIo
KSk7CisKKyAgICAvLyBTZXQgaXRzZWxmIGFzIGFuIG9ic2VydmVyIHRvIE5hdGl2ZUltYWdlLCBz
byByZWxlYXNlTmF0aXZlUERGRG9jdW1lbnQoKQorICAgIC8vIGdldHMgY2FsbGVkIHdoZW4gTmF0
aXZlUERGRG9jdW1lbnQgaXMgYmVpbmcgZGVsZWxldGVkLgorICAgIHBkZkRvY3VtZW50LnNldE9i
c2VydmVyKHRoaXMpOworCisgICAgLy8gVGVsbCB0aGUgR1BVIHByb2Nlc3MgdG8gY2FjaGUgdGhp
cyByZXNvdXJjZS4KKyAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jYWNoZU5hdGl2
ZVBERkRvY3VtZW50KHBkZkRvY3VtZW50KTsKK30KKwordm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hl
UHJveHk6OnJlbGVhc2VOYXRpdmVQREZEb2N1bWVudChSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQoreworICAgIGlmICghbV9zaGFyZWRQREZE
b2N1bWVudHMucmVtb3ZlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikpCisgICAgICAgIHJl
dHVybjsKKworICAgIC8vIFRlbGwgdGhlIEdQVSBwcm9jZXNzIHRvIHJlbW92ZSB0aGlzIHJlc291
cmNlLgorICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LnJlbGVhc2VSZW1vdGVSZXNv
dXJjZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNl
Q2FjaGVQcm94eS5oCmluZGV4IDA2ZGQ0ZjY4YjkzYTllOTdmYTU0OWMwM2RmYzQ5ZGI5Mzg4OGJi
ZmIuLjE3YmRmYjM0OGE0ZGZhN2QzOTlhYTAyZTg1MWRiNmYzNDA1MDhmZjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNo
ZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVSZXNvdXJjZUNhY2hlUHJveHkuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykKIAogI2luY2x1ZGUgPFdlYkNvcmUvTmF0aXZlSW1hZ2UuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL05hdGl2ZVBERkRvY3VtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCkBAIC0zOSw3
ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHk7CiAKLWNsYXNzIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSA6IHB1YmxpYyBXZWJD
b3JlOjpOYXRpdmVJbWFnZTo6T2JzZXJ2ZXIgeworY2xhc3MgUmVtb3RlUmVzb3VyY2VDYWNoZVBy
b3h5IDogcHVibGljIFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpPYnNlcnZlciwgcHVibGljIFdlYkNv
cmU6Ok5hdGl2ZVBERkRvY3VtZW50OjpPYnNlcnZlciB7CiBwdWJsaWM6CiAgICAgUmVtb3RlUmVz
b3VyY2VDYWNoZVByb3h5KFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYpOwogCkBAIC00OCwx
NyArNDksMjEgQEAgcHVibGljOgogICAgIHZvaWQgcmVsZWFzZUltYWdlQnVmZmVyKFdlYkNvcmU6
OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAKICAgICB2b2lkIGNhY2hlTmF0aXZlSW1h
Z2UoV2ViQ29yZTo6TmF0aXZlSW1hZ2UmKTsKKyAgICB2b2lkIGNhY2hlTmF0aXZlUERGRG9jdW1l
bnQoV2ViQ29yZTo6TmF0aXZlUERGRG9jdW1lbnQmKTsKIAogICAgIHVzaW5nIEltYWdlQnVmZmVy
SGFzaE1hcCA9IEhhc2hNYXA8V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBX
ZWFrUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPj47CiAgICAgY29uc3QgSW1hZ2VCdWZmZXJIYXNo
TWFwJiBpbWFnZUJ1ZmZlcnMoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlQnVmZmVyczsgfQogCiBw
cml2YXRlOgogICAgIHVzaW5nIE5hdGl2ZUltYWdlSGFzaE1hcCA9IEhhc2hNYXA8V2ViQ29yZTo6
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBXZWFrUHRyPFdlYkNvcmU6Ok5hdGl2ZUltYWdl
Pj47CisgICAgdXNpbmcgU2hhcmVkUERGRG9jdW1lbnRIYXNoU2V0ID0gSGFzaFNldDxXZWJDb3Jl
OjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+OwogICAgIAogICAgIHZvaWQgcmVsZWFzZU5h
dGl2ZUltYWdlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgb3ZlcnJpZGU7
CisgICAgdm9pZCByZWxlYXNlTmF0aXZlUERGRG9jdW1lbnQoV2ViQ29yZTo6UmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKSBvdmVycmlkZTsKIAogICAgIEltYWdlQnVmZmVySGFzaE1hcCBtX2lt
YWdlQnVmZmVyczsKICAgICBOYXRpdmVJbWFnZUhhc2hNYXAgbV9uYXRpdmVJbWFnZXM7CisgICAg
U2hhcmVkUERGRG9jdW1lbnRIYXNoU2V0IG1fc2hhcmVkUERGRG9jdW1lbnRzOwogICAgIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERG
UGx1Z2luLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdp
bi5tbQppbmRleCA5Y2IzYWFlZDc3NWY5YjZmZDkzYWMyNjk1ZWI4OGZlM2NkZGY2N2NhLi40NGI1
MDZiMjgxOTMyNjhmODg3M2VjNDI2MDNkNWE1ZjhhYWY4ZTY4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KQEAgLTc2LDcgKzc2LDcg
QEAKICNpbXBvcnQgPFdlYkNvcmUvTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZS5oPgogI2lt
cG9ydCA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL01vdXNl
RXZlbnQuaD4KLSNpbXBvcnQgPFdlYkNvcmUvUERGRG9jdW1lbnRJbWFnZS5oPgorI2ltcG9ydCA8
V2ViQ29yZS9OYXRpdmVQREZEb2N1bWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYWdlLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1Bhc3RlYm9hcmQuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1T
Y3JlZW4uaD4KQEAgLTE1NzIsNyArMTU3Miw3IEBAIHZvaWQgUERGUGx1Z2luOjpjb252ZXJ0UG9z
dFNjcmlwdERhdGFJZk5lZWRlZCgpCiAgICAgaWYgKCFtX2lzUG9zdFNjcmlwdCkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgbV9kYXRhID0gUERGRG9jdW1lbnRJbWFnZTo6Y29udmVydFBvc3RTY3Jp
cHREYXRhVG9QREYoV1RGTW92ZShtX2RhdGEpKTsKKyAgICBtX2RhdGEgPSBOYXRpdmVQREZEb2N1
bWVudDo6Y29udmVydFBvc3RTY3JpcHREYXRhVG9QREYoV1RGTW92ZShtX2RhdGEpKTsKIH0KIAog
dm9pZCBQREZQbHVnaW46OmRvY3VtZW50RGF0YURpZEZpbmlzaExvYWRpbmcoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414652</attachid>
            <date>2020-11-19 22:42:20 -0800</date>
            <delta_ts>2020-11-19 23:09:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218871-20201119224219.patch</filename>
            <type>text/plain</type>
            <size>132382</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMDY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGI4NTcwMTA2OWNiM2M0NTVmM2NkYjMz
ZGIxY2NlZWQ0MmJlODMyNTUuLjMxNzA0NjBmMzAzZmU3OWY2NmNmYTdjZmZhMmQwZTQ0ZWEyMDgw
MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjAtMTEtMTkgIFNhaWQgQWJvdS1IYWxsYXdhICA8
c2FpZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBTdXBwb3J0IHJlbmRlcmlu
ZyBQREZEb2N1bWVudEltYWdlIGluIEdQVSBQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg4NzEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybUVuYWJsZS5oOgorCiAyMDIw
LTExLTE5ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBv
c190aHJlYWRfc2VsZl9yZXN0cmljdF9yd3hfaXNfc3VwcG9ydGVkIGluc3RlYWQgb2YgcHRocmVh
ZF9qaXRfd3JpdGVfcHJvdGVjdF9zdXBwb3J0ZWRfbnAgb24gQXBwbGUgSW50ZXJuYWwgU0RLIGJ1
aWxkcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IGQxNDEwNTAxMzEzYTUyODk4ZDAwOGI1OGY2NTkxOGVjYTdiZTBk
YjYuLjRhYzkxOTZjYTVhZmY5YjVkYTc0NDUxZmRlMWNhMWVjYmE1NzM0N2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMjUgQEAKKzIwMjAtMTEtMTkgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBh
cHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBTdXBwb3J0IHJlbmRlcmluZyBQREZE
b2N1bWVudEltYWdlIGluIEdQVSBQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg4NzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2Nv
YS50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRJbWFnZTo6Y29udmVydGVkRGF0YUlmTmVlZGVkIGNvbnN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlUERGRG9jdW1lbnQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpkcmF3TmF0aXZlUERGRG9jdW1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6Y3JlYXRlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVQREZEb2N1bWVudC5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6TmF0aXZlUERGRG9jdW1lbnQ6Ok5hdGl2ZVBERkRvY3VtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6Ok5hdGl2ZVBERkRvY3VtZW50Ojp+TmF0aXZlUERGRG9jdW1lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6TmF0aXZlUERGRG9jdW1lbnQ6OnNpemUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6dHJhbnNmb3JtQ29udGV4dEZvclBhaW50aW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok5h
dGl2ZVBERkRvY3VtZW50Ojp1cGRhdGVTbmFwc2hvdElmTmVlZGVkKToKKyAgICAgICAgKFdlYkNv
cmU6Ok5hdGl2ZVBERkRvY3VtZW50OjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZVBE
RkRvY3VtZW50OjpkdW1wIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZVBERkRvY3Vt
ZW50OjpTbmFwc2hvdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZVBERkRvY3Vt
ZW50OjpTbmFwc2hvdDo6U25hcHNob3QpOgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlUERGRG9j
dW1lbnQ6OlNuYXBzaG90Ojp+U25hcHNob3QpOgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlUERG
RG9jdW1lbnQ6OlNuYXBzaG90OjpjYWxjdWxhdGVTbmFwc2hvdFJlY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TmF0aXZlUERGRG9jdW1lbnQ6OlNuYXBzaG90OjpjYW5DcmVhdGVTbmFwc2hvdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpOYXRpdmVQREZEb2N1bWVudDo6U25hcHNob3Q6OmNhbkJlUmV1c2Vk
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZVBERkRvY3VtZW50OjpTbmFwc2hvdDo6
bWVtb3J5Q29zdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVQREZEb2N1bWVudDo6
U25hcHNob3Q6OnRyYW5zZmVyVmlld3BvcnQpOgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlUERG
RG9jdW1lbnQ6OlNuYXBzaG90OjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9O
YXRpdmVQREZEb2N1bWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZVBERkRv
Y3VtZW50OjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZVBERkRvY3VtZW50
OjpyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
TmF0aXZlUERGRG9jdW1lbnQ6OnNldE9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2
ZVBERkRvY3VtZW50OjpwZGZJbWFnZUNhY2hpbmdQb2xpY3kgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TmF0aXZlUERGRG9jdW1lbnQ6OnNldFBERkltYWdlQ2FjaGluZ1BvbGljeSk6CisgICAg
ICAgIChXZWJDb3JlOjpOYXRpdmVQREZEb2N1bWVudDo6Y2FjaGluZ0NvdW50Rm9yVGVzdGluZyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVQREZEb2N1bWVudDo6c25hcHNob3RNZW1v
cnlDb3N0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZVBERkRvY3VtZW50OjpjbGVh
clNuYXBzaG90KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QREZEb2N1bWVudEltYWdl
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjpQREZEb2N1
bWVudEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6On5QREZEb2N1
bWVudEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OmZpbGVuYW1l
RXh0ZW5zaW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OnNp
emUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFnZTo6Y2FjaGluZ0Nv
dW50Rm9yVGVzdGluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdl
OjpzZXRQZGZJbWFnZUNhY2hpbmdQb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1l
bnRJbWFnZTo6ZGF0YUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFn
ZTo6ZGVzdHJveURlY29kZWREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1h
Z2U6OmRlY29kZWRTaXplQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudElt
YWdlOjpjb21wdXRlSW50cmluc2ljRGltZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpQREZE
b2N1bWVudEltYWdlOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6
OmR1bXAgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BERkRvY3VtZW50SW1h
Z2UuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BE
RkRvY3VtZW50SW1hZ2UuaC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVBE
RkRvY3VtZW50Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZXNvdXJjZUNhY2hlLmguCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd05hdGl2ZVBERkRvY3VtZW50KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVQREZEb2N1bWVudENHLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVQREZEb2N1bWVudDo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6Ok5hdGl2ZVBERkRvY3VtZW50Ojpjb21wdXRlQm91bmRzRm9yQ3VycmVudFBhZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlUERGRG9jdW1lbnQ6OnBhZ2VDb3VudCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjphcHBseVJvdGF0aW9uRm9yUGFpbnRpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6TmF0aXZlUERGRG9jdW1lbnQ6OmRyYXdQREZQYWdlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1h
Z2UubW06CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6YXBw
ZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6bmF0aXZl
UERGRG9jdW1lbnRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNw
bGF5TGlzdDo6Y2FjaGVOYXRpdmVQREZEb2N1bWVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZTo6YXBwbHkpOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU6OmRlc3Ryb3kpOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU6OmNvcHlUbyBjb25zdCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OnNpemVPZkl0ZW1JbkJ5dGVzKToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0Ojppc0RyYXdpbmdJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0Ojppc0lubGluZUl0ZW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVQREZEb2N1bWVudDo6YXBwbHkgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Om9wZXJhdG9yPDwpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmg6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZVBERkRvY3VtZW50OjpEcmF3TmF0aXZlUERG
RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRpdmVQREZE
b2N1bWVudDo6cGRmRG9jdW1lbnRJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlUERGRG9jdW1lbnQ6OnNvdXJjZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZVBERkRvY3VtZW50OjpkZXN0aW5h
dGlvblJlY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRp
dmVQREZEb2N1bWVudDo6Z2xvYmFsQm91bmRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpEcmF3TmF0aXZlUERGRG9jdW1lbnQ6OmxvY2FsQm91bmRzIGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmRyYXdOYXRp
dmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmRyYXdO
YXRpdmVQREZEb2N1bWVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpSZWNvcmRlcjo6RGVsZWdhdGU6OmNhY2hlTmF0aXZlUERGRG9jdW1lbnQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6UmVwbGF5ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmFwcGx5RHJhd05hdGl2ZVBERkRvY3VtZW50SXRl
bSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXI6OmFwcGx5SXRlbSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVw
bGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvTmF0aXZlUERGRG9jdW1l
bnRNYWMubW06IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbS4KKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZVBERkRv
Y3VtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlUERGRG9jdW1lbnQ6OmNv
bXB1dGVCb3VuZHNGb3JDdXJyZW50UGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVQREZE
b2N1bWVudDo6cGFnZUNvdW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZVBERkRv
Y3VtZW50OjpkcmF3UERGUGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVQREZEb2N1bWVu
dDo6Y29udmVydFBvc3RTY3JpcHREYXRhVG9QREYpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwOgorICAg
ICAgICAoTmljb3NpYTo6Q2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd05hdGl2ZVBERkRvY3Vt
ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFD
YWlyb09wZXJhdGlvblJlY29yZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6OmRyYXdOYXRpdmVQREZEb2N1bWVudCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJJbWFnZTo6cGFpbnRJbnRvUmVjdCk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpwZGZEb2N1bWVudENhY2hpbmdDb3Vu
dCk6CisKIDIwMjAtMTEtMTkgIEFkaXR5YSBLZWVydGhpICA8YWtlZXJ0aGlAYXBwbGUuY29tPgog
CiAgICAgICAgIFtpT1NdW0ZDUl0gQWRkIG5ldyBsb29rIGZvciBwcm9ncmVzcyBiYXJzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IGMwODhkNzQ1MGUwNmY3ZTRiMzg4N2NhMTJiOWMyNTk1MDMxNzUwZGIuLmY1Zjc3YzMw
NDcxNWE5OGRlZDgzOTBkZGE1NGI5NzgyNTRiYzFiOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMg
QEAKKzIwMjAtMTEtMTkgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CisKKyAg
ICAgICAgW0dQVSBQcm9jZXNzXSBTdXBwb3J0IHJlbmRlcmluZyBQREZEb2N1bWVudEltYWdlIGlu
IEdQVSBQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTg4NzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlSW1hZ2VCdWZmZXI6OnN1Ym1pdERpc3BsYXlMaXN0KToKKyAgICAgICAg
KiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjYWNoZU5hdGl2ZVBERkRvY3VtZW50
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGVjb2RlSXRlbSk6
CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmg6
CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1l
c3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VD
YWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlTmF0
aXZlUERGRG9jdW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpy
ZWxlYXNlUmVtb3RlUmVzb3VyY2UpOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVzb3VyY2VDYWNoZS5oOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hl
OjpuYXRpdmVQREZEb2N1bWVudHMgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNhY2hlTmF0aXZlUERGRG9jdW1lbnQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291
cmNlQ2FjaGVQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlc291cmNlQ2FjaGVQ
cm94eTo6Y2FjaGVOYXRpdmVQREZEb2N1bWVudCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJl
c291cmNlQ2FjaGVQcm94eTo6cmVsZWFzZU5hdGl2ZVBERkRvY3VtZW50KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbToKKyAgICAgICAgKFdlYktp
dDo6UERGUGx1Z2luOjpjb252ZXJ0UG9zdFNjcmlwdERhdGFJZk5lZWRlZCk6CisKIDIwMjAtMTEt
MTkgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCByb2xsb3V0IG9mIHIyNjk4OTAgYW5kIHIyNjk5MTEgZHVlIHRvIEVNRSBpc3N1ZXMgb24g
TWFjIE1pbmkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oIGIv
U291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUuaAppbmRleCA3MDAxYmViZDk2NGNlZWEyNzkx
MmRhMmRkYmNiYzQ4MDlkNDU4Zjk0Li43ODNlYjVjODc5YTg2MzUxMzE1N2Q3MjBiOTYyYzliNDQ3
MTdlNzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCisrKyBi
L1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmgKQEAgLTIyNSw2ICsyMjUsMTQgQEAKICNk
ZWZpbmUgRU5BQkxFX0NTU19DT05JQ19HUkFESUVOVFMgMAogI2VuZGlmCiAKKyNpZiAhZGVmaW5l
ZChFTkFCTEVfUERGRE9DVU1FTlRJTUFHRSkgJiYgVVNFKENHKQorI2RlZmluZSBFTkFCTEVfUERG
RE9DVU1FTlRJTUFHRSAxCisjZW5kaWYKKworI2lmICFkZWZpbmVkKEVOQUJMRV9QREZLSVRfRk9S
X1BERkRPQ1VNRU5USU1BR0UpICYmIFBMQVRGT1JNKE1BQykKKyNkZWZpbmUgRU5BQkxFX1BERktJ
VF9GT1JfUERGRE9DVU1FTlRJTUFHRSAxCisjZW5kaWYKKwogI2lmICFkZWZpbmVkKEVOQUJMRV9D
VVNUT01fQ1VSU09SX1NVUFBPUlQpCiAjZGVmaW5lIEVOQUJMRV9DVVNUT01fQ1VSU09SX1NVUFBP
UlQgMQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGFmY2Y0NWFhY2I0NzQ3NDM2NDEzZjhhZTU5
OWYzZGFlNGJlZGNkY2YuLjlmOTRlNzhjZjQ4OWU3NmNkNDgwODJjNzFiN2MwNTQzOTg1ZWZmZjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0CkBAIC0xOTUxLDEwICsxOTUxLDEyIEBAIHBsYXRmb3JtL2dyYXBoaWNz
L01JTUVUeXBlQ2FjaGUuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKIHBs
YXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5jcHAKIHBsYXRmb3JtL2dy
YXBoaWNzL05hdGl2ZUltYWdlLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlUERGRG9jdW1l
bnQuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvUGF0
aFRyYXZlcnNhbFN0YXRlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFV0aWxpdGllcy5jcHAK
IHBsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9QREZEb2N1
bWVudEltYWdlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UaW1lUmFuZ2VzLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlk
ZW9TYW1wbGUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0
IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCAyYjMzYzRiY2U3NGRkZWFk
ODE4YmEzY2IyYTQ0OTMxNTQ2YjU5YTYwLi4wNDM1OWRlMDg5OTY4ZGNiMGFkN2MwOTA0MzY2YzAy
YzY3MWRhZTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0Cisr
KyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTM0MCw3ICszNDAsNyBAQCBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbnRQb2ludENHLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW50UmVjdENHLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW50U2l6ZUNHLmNwcAogcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHAKLXBsYXRmb3JtL2dyYXBoaWNzL2NnL1BE
RkRvY3VtZW50SW1hZ2UuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVQREZEb2N1bWVu
dENHLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0aENHLmNwcAogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvUGF0dGVybkNHLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvU3ViaW1hZ2VDYWNoZVdp
dGhUaW1lci5jcHAKQEAgLTQxMyw3ICs0MTMsNyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvSWNv
bk1hYy5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tCiBwbGF0Zm9ybS9ncmFw
aGljcy9tYWMvSW50UG9pbnRNYWMubW0KIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9JbnRTaXplTWFj
Lm1tCi1wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQorcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL05hdGl2ZVBERkRvY3VtZW50TWFjLm1tCiBwbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvU2ltcGxlRm9udERhdGFDb3JlVGV4dC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9T
d2l0Y2hpbmdHUFVDbGllbnQuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViS2l0TlNJbWFn
ZUV4dHJhcy5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDc1YTUyMmMyYWJlYjBkMTZkNWM2ODg2YzcxNzA2NTcyNDkyMGM5NGUu
LjNmNjk1MGVlZDQ1MDdjYjExN2IyZmE1YTJiZTFmMmI5ODljMTAxODEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIxNzcsNiAr
MjE3Nyw4IEBACiAJCTcyN0E3RjNBMjQwNzhCODQwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlcklPU3Vy
ZmFjZUJhY2tlbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDcyQkFDM0FCMjNFMUU1NDQwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tl
bmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3
Mjk5QkM2NzIzRDZBNTMyMDBDQzY4ODMgLyogQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI5OUJDNjQyM0Q2ODZB
NjAwQ0M2ODgzIC8qIEFscGhhUHJlbXVsdGlwbGljYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3Mjk5QkM2ODIzRDZBNTNFMDBDQzY4ODMg
LyogUmVuZGVyaW5nTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzI5OUJDNjYyM0Q2ODZDNjAwQ0M2ODgzIC8qIFJlbmRlcmluZ01vZGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MjlDNDVDRDI1
NjYwNTM0MDAwNDA3Q0YgLyogTmF0aXZlUERGRG9jdW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyOUM0NUNBMjU2NEY4MUIwMDA0MDdDRiAvKiBO
YXRpdmVQREZEb2N1bWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTcyOUM0NUNFMjU2NjA1NkMwMDA0MDdDRiAvKiBQbGF0Zm9ybVBERkRvY3Vt
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjlD
NDVDQzI1NjVENkM3MDAwNDA3Q0YgLyogUGxhdGZvcm1QREZEb2N1bWVudC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyOUQwNTMwMjUzMTQyNDMw
MDQyMjA5OCAvKiBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyOUQwNTJFMjUzMTNFMjYwMDQyMjA5OCAv
KiBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MkE3M0JFRjI0NUEzRjkwMDAxQzlEMDMgLyogQW5p
bWF0aW9uRnJhbWVSYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3MjJBODE1QzIzOEZENTA1MDBDMDA1ODMgLyogQW5pbWF0aW9uRnJhbWVSYXRlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzJBQjlB
MjEyNTVBOUZERTAwRTZFQkYxIC8qIE5hdGl2ZUltYWdlUmVmZXJlbmNlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkFCOUExRjI1NUE5RUE2MDBFNkVC
RjEgLyogTmF0aXZlSW1hZ2VSZWZlcmVuY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNzA1NSw3ICs3MDU3LDcgQEAKIAkJMkQ1QzlDRkMxOUM3
QjUyRTAwQjNDNUMxIC8qIFBhZ2VPdmVybGF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFBhZ2VPdmVybGF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJENUM5
Q0ZEMTlDN0I1MkUwMEIzQzVDMSAvKiBQYWdlT3ZlcmxheUNvbnRyb2xsZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFnZU92ZXJsYXlDb250cm9sbGVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ1QzlDRkUxOUM3QjUyRTAwQjNDNUMxIC8q
IFBhZ2VPdmVybGF5Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBQYWdlT3ZlcmxheUNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
MkQ2RTQ2ODIxN0Q2NjBGNTAwRUNGOEJCIC8qIFBERkRvY3VtZW50SW1hZ2VNYWMubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQREZEb2N1bWVudEltYWdlTWFjLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRDZFNDY4MjE3RDY2MEY1MDBFQ0Y4QkIg
LyogTmF0aXZlUERGRG9jdW1lbnRNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBOYXRpdmVQREZEb2N1bWVudE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMkQ2RjNFOEExQzFFQ0IxQzAwNjFEQkQ0IC8qIE1vY2tQYWdlT3ZlcmxheS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2NrUGFnZU92ZXJsYXkuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDZGM0U4QjFDMUVDQjFDMDA2MURCRDQg
LyogTW9ja1BhZ2VPdmVybGF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1v
Y2tQYWdlT3ZlcmxheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDZGM0U4QzFD
MUVDQjFDMDA2MURCRDQgLyogTW9ja1BhZ2VPdmVybGF5LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBNb2NrUGFnZU92ZXJsYXkuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTAwMzAsNiArMTAwMzIsMTAgQEAKIAkJNzI3QUZFRDMxQTJFQTZBMDAwMDQ0MkU4IC8qIEVYVHNS
R0IuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEVYVHNSR0IuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3Mjk5QkM2NDIzRDY4NkE2MDBDQzY4ODMgLyogQWxwaGFQcmVtdWx0
aXBsaWNhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBbHBoYVByZW11bHRpcGxpY2F0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyOTlCQzY2MjNENjg2QzYwMENDNjg4MyAvKiBS
ZW5kZXJpbmdNb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlcmluZ01vZGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI5QzQ1QzcyNTY0RjBFMTAwMDQwN0NGIC8qIE5hdGl2ZVBE
RkRvY3VtZW50Q0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmF0aXZlUERGRG9jdW1lbnRDRy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyOUM0NUM5MjU2NEY4MUIwMDA0MDdD
RiAvKiBOYXRpdmVQREZEb2N1bWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOYXRpdmVQREZE
b2N1bWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyOUM0NUNBMjU2NEY4
MUIwMDA0MDdDRiAvKiBOYXRpdmVQREZEb2N1bWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOYXRpdmVQ
REZEb2N1bWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjlDNDVDQzI1NjVE
NkM3MDAwNDA3Q0YgLyogUGxhdGZvcm1QREZEb2N1bWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0
Zm9ybVBERkRvY3VtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyOUQwNTJF
MjUzMTNFMjYwMDQyMjA5OCAvKiBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTcyQUI5QTFGMjU1QTlFQTYwMEU2RUJGMSAvKiBOYXRpdmVJbWFnZVJlZmVy
ZW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBOYXRpdmVJbWFnZVJlZmVyZW5jZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3MkJBQzNBNDIzRTE3MzI3MDA4RDc0MUMgLyogSW1hZ2VCdWZm
ZXJCYWNrZW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdl
QnVmZmVyQmFja2VuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNjI4OSwx
MCArMjYyOTUsOSBAQAogCQkJCTFDMjFFNTdBMTgzRUQxRkYwMDFDMjg5RCAvKiBJT1N1cmZhY2VQ
b29sLmNwcCAqLywKIAkJCQkxQzIxRTU3QjE4M0VEMUZGMDAxQzI4OUQgLyogSU9TdXJmYWNlUG9v
bC5oICovLAogCQkJCTM3N0EzQThGMTVFRkNFOUEwMDU5RjVDNyAvKiBOYXRpdmVJbWFnZUNHLmNw
cCAqLywKKwkJCQk3MjlDNDVDNzI1NjRGMEUxMDAwNDA3Q0YgLyogTmF0aXZlUERGRG9jdW1lbnRD
Ry5jcHAgKi8sCiAJCQkJQjI3NTM1MzUwQjA1MzgxNDAwMkNFNjRGIC8qIFBhdGhDRy5jcHAgKi8s
CiAJCQkJQTgwQTM4RkQwRTUwQ0M4MjAwQTI1RUJDIC8qIFBhdHRlcm5DRy5jcHAgKi8sCi0JCQkJ
QjI3NTM1MzYwQjA1MzgxNDAwMkNFNjRGIC8qIFBERkRvY3VtZW50SW1hZ2UuY3BwICovLAotCQkJ
CUIyNzUzNTM3MEIwNTM4MTQwMDJDRTY0RiAvKiBQREZEb2N1bWVudEltYWdlLmggKi8sCiAJCQkJ
MUZDNDBGQjgxNjU1QzU5MTAwNDBGMjlFIC8qIFN1YmltYWdlQ2FjaGVXaXRoVGltZXIuY3BwICov
LAogCQkJCTFGQzQwRkI3MTY1NUM1OTEwMDQwRjI5RSAvKiBTdWJpbWFnZUNhY2hlV2l0aFRpbWVy
LmggKi8sCiAJCQkJQjI3NTM1MkEwQjA1MzgxNDAwMkNFNjRGIC8qIFRyYW5zZm9ybWF0aW9uTWF0
cml4Q0cuY3BwICovLApAQCAtMjYzMTgsNyArMjYzMjMsNyBAQAogCQkJCUIyNzUzNTRFMEIwNTM4
MTQwMDJDRTY0RiAvKiBJbWFnZU1hYy5tbSAqLywKIAkJCQlCMjc1MzU0RjBCMDUzODE0MDAyQ0U2
NEYgLyogSW50UG9pbnRNYWMubW0gKi8sCiAJCQkJQjI3NTM1NTEwQjA1MzgxNDAwMkNFNjRGIC8q
IEludFNpemVNYWMubW0gKi8sCi0JCQkJMkQ2RTQ2ODIxN0Q2NjBGNTAwRUNGOEJCIC8qIFBERkRv
Y3VtZW50SW1hZ2VNYWMubW0gKi8sCisJCQkJMkQ2RTQ2ODIxN0Q2NjBGNTAwRUNGOEJCIC8qIE5h
dGl2ZVBERkRvY3VtZW50TWFjLm1tICovLAogCQkJCTE2M0U4OEY1MTE4QTM5RDIwMEVEOTIzMSAv
KiBTaW1wbGVGb250RGF0YUNvcmVUZXh0LmNwcCAqLywKIAkJCQlDMTFBOUVEMjIxNDA1NzhCMDBD
RkIyMEEgLyogU3dpdGNoaW5nR1BVQ2xpZW50LmNwcCAqLywKIAkJCQlDMTFBOUVDRDIxNDAzQTVD
MDBDRkIyMEEgLyogU3dpdGNoaW5nR1BVQ2xpZW50LmggKi8sCkBAIC0yNjUzNSw2ICsyNjU0MCw4
IEBACiAJCQkJNzI1MjM5NkIyNTRDQURDMjAwRjVGQjE1IC8qIE5hdGl2ZUltYWdlLmNwcCAqLywK
IAkJCQk1NUEzMzZGNjFEODIwOUY0MDAyMkM0QzcgLyogTmF0aXZlSW1hZ2UuaCAqLywKIAkJCQk3
MkFCOUExRjI1NUE5RUE2MDBFNkVCRjEgLyogTmF0aXZlSW1hZ2VSZWZlcmVuY2UuaCAqLywKKwkJ
CQk3MjlDNDVDOTI1NjRGODFCMDAwNDA3Q0YgLyogTmF0aXZlUERGRG9jdW1lbnQuY3BwICovLAor
CQkJCTcyOUM0NUNBMjU2NEY4MUIwMDA0MDdDRiAvKiBOYXRpdmVQREZEb2N1bWVudC5oICovLAog
CQkJCUIyNzUzNTUyMEIwNTM4MTQwMDJDRTY0RiAvKiBQYXRoLmNwcCAqLywKIAkJCQlCMjc1MzU1
MzBCMDUzODE0MDAyQ0U2NEYgLyogUGF0aC5oICovLAogCQkJCUE4OERENDg4MEI0NjI5QjAwMEMw
Mjk5MCAvKiBQYXRoVHJhdmVyc2FsU3RhdGUuY3BwICovLApAQCAtMjY1NDMsMTEgKzI2NTUwLDE0
IEBACiAJCQkJMkQ1MDAyRkExQjU2RDc5OTAwMjBBQUY3IC8qIFBhdGhVdGlsaXRpZXMuaCAqLywK
IAkJCQlBOEZBNkU1QzBFNENGREVEMDBENUNGNDkgLyogUGF0dGVybi5jcHAgKi8sCiAJCQkJQThG
QTZFNUIwRTRDRkRFRDAwRDVDRjQ5IC8qIFBhdHRlcm4uaCAqLywKKwkJCQlCMjc1MzUzNjBCMDUz
ODE0MDAyQ0U2NEYgLyogUERGRG9jdW1lbnRJbWFnZS5jcHAgKi8sCisJCQkJQjI3NTM1MzcwQjA1
MzgxNDAwMkNFNjRGIC8qIFBERkRvY3VtZW50SW1hZ2UuaCAqLywKIAkJCQk3MjZENTZFMTI1M0FF
MDQzMDAwMkVGOTAgLyogUGxhdGZvcm1JbWFnZS5oICovLAogCQkJCTcyQkFDM0E2MjNFMTczMjgw
MDhENzQxQyAvKiBQbGF0Zm9ybUltYWdlQnVmZmVyLmggKi8sCiAJCQkJNTUwNjQwQUQyNDA3NTZE
QTAwQUFFMDQ1IC8qIFBsYXRmb3JtSW1hZ2VCdWZmZXJCYWNrZW5kLmggKi8sCiAJCQkJMDU2MkY5
NjAxNTczRjg4RjAwMzFDQTE2IC8qIFBsYXRmb3JtTGF5ZXIuaCAqLywKIAkJCQlDRUVGQ0Q3QjE5
REIzM0RDMDAzODc2RDcgLyogUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmggKi8sCisJCQkJ
NzI5QzQ1Q0MyNTY1RDZDNzAwMDQwN0NGIC8qIFBsYXRmb3JtUERGRG9jdW1lbnQuaCAqLywKIAkJ
CQkwNzI4NDdFMjE2RUJDNUIwMDA0M0NGQTQgLyogUGxhdGZvcm1UZXh0VHJhY2suaCAqLywKIAkJ
CQkwNzRFODJCODE4QTY5RjBFMDA3RUY1NEMgLyogUGxhdGZvcm1UaW1lUmFuZ2VzLmNwcCAqLywK
IAkJCQkwNzRFODJCOTE4QTY5RjBFMDA3RUY1NEMgLyogUGxhdGZvcm1UaW1lUmFuZ2VzLmggKi8s
CkBAIC0zMzU4OCw2ICszMzU5OCw3IEBACiAJCQkJNzI2RDU2RTMyNTNBRTM2NjAwMDJFRjkwIC8q
IE5hdGl2ZUltYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MkFCOUEyMTI1NUE5RkRFMDBFNkVC
RjEgLyogTmF0aXZlSW1hZ2VSZWZlcmVuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzQjJEMTc1
MUI4QkNENkEwMEEwMkU0NyAvKiBOYXRpdmVOb2RlRmlsdGVyLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk3MjlDNDVDRDI1NjYwNTM0MDAwNDA3Q0YgLyogTmF0aXZlUERGRG9jdW1lbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUUxMEI5QjZDMEI3NDc1OTkwMDNFRDg5MCAvKiBOYXRpdmVYUGF0aE5TUmVz
b2x2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzQ0NGMDI3MEFGNkM1MjkwMDAxOEU4OSAvKiBO
YXZpZ2F0aW9uQWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzlGNDNENDEwNzVFNDRBMDAw
MEY4M0IgLyogTmF2aWdhdGlvblNjaGVkdWxlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMzgyMyw2
ICszMzgzNCw3IEBACiAJCQkJMDdGOTQ0MTYxODY0RDA0NjAwNUQzMUNCIC8qIFBsYXRmb3JtTWVk
aWFTZXNzaW9uTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM1QzQ3NjkwOUFDNEQ0MzAw
QTZBQUI0IC8qIFBsYXRmb3JtTW91c2VFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzU5ODkw
NTgxNEU5QzI5OTAwRThEMThCIC8qIFBsYXRmb3JtUGFzdGVib2FyZC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNzI5QzQ1Q0UyNTY2MDU2QzAwMDQwN0NGIC8qIFBsYXRmb3JtUERGRG9jdW1lbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDRUMwMUQ3MEMyNzRFQjQwMDlGNEVDOSAvKiBQbGF0Zm9ybVNj
cmVlbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjk3QkUzRDUxNkMwM0MwODAwMzMxNkJEIC8qIFBs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkyOTdC
RTNENjE2QzAzQzBCMDAzMzE2QkQgLyogUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZS5oIGlu
IEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNw
cAppbmRleCA1Y2M5MzM4MzI1NzRkY2JlYmVkODJjMmMwYmNlOGYwMGMyYmNhNzJlLi42NmI2NTBj
NjJhYTA1MjY1OTA3YzA4OTI5ZDI1NzRmYmI3OTJmZmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJG
cmFtZVZpZXcuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiTWVt
b3J5Q2FjaGUuaCIKKyNpbmNsdWRlICJOYXRpdmVQREZEb2N1bWVudC5oIgogI2luY2x1ZGUgIlJl
bmRlckVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdJbWFnZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5
T3JpZ2luLmgiCkBAIC00OSwxMCArNTAsNiBAQAogI2luY2x1ZGUgIlN5c3RlbU1lbW9yeS5oIgog
I2VuZGlmCiAKLSNpZiBVU0UoQ0cpCi0jaW5jbHVkZSAiUERGRG9jdW1lbnRJbWFnZS5oIgotI2Vu
ZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQ2FjaGVkSW1hZ2U6OkNhY2hlZEltYWdlKENh
Y2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNz
aW9uSUQsIGNvbnN0IENvb2tpZUphciogY29va2llSmFyKQpAQCAtNTI2LDggKzUyMyw4IEBAIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IENhY2hlZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQoU2hh
cmVkQnVmZmVyKiBkYXRhKSBjb25zCiB7CiAgICAgaWYgKCFkYXRhIHx8ICFpc1Bvc3RTY3JpcHRS
ZXNvdXJjZSgpKQogICAgICAgICByZXR1cm4gZGF0YTsKLSNpZiBQTEFURk9STShNQUMpICYmICFV
U0UoV0VCS0lUX0lNQUdFX0RFQ09ERVJTKQotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShQREZEb2N1bWVudEltYWdlOjpjb252ZXJ0UG9zdFNjcmlwdERhdGFUb1BERihkYXRhLT5jcmVh
dGVDRkRhdGEoKSkuZ2V0KCkpOworI2lmIEVOQUJMRShQREZET0NVTUVOVElNQUdFKSAmJiBFTkFC
TEUoUERGS0lUX0ZPUl9QREZET0NVTUVOVElNQUdFKQorICAgIHJldHVybiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShOYXRpdmVQREZEb2N1bWVudDo6Y29udmVydFBvc3RTY3JpcHREYXRhVG9QREYoZGF0
YS0+Y3JlYXRlQ0ZEYXRhKCkpLmdldCgpKTsKICNlbHNlCiAgICAgLy8gTG9hZGluZyB0aGUgaW1h
Z2Ugc2hvdWxkIGhhdmUgYmVlbiBjYW5jZWxlZCBpZiB0aGUgc3lzdGVtIGRvZXMgbm90IHN1cHBv
cnQgY29udmVydGluZyBQb3N0U2NyaXB0IHRvIFBERi4KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuY3BwCmluZGV4IDVjYWNhODU0NTJjMWE2OThiOTVlNGRmNDQwMDg1OGM5NjM0NWVjZTUu
LmNhNDg5ZjA4MDdlYjUwMmE1Nzc1ZTZmYzdkMGIzZjAwOTg2OGU2MjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAt
MzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJNZWRpYVBsYXll
ci5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJpdmF0ZS5oIgorI2luY2x1ZGUgIk5hdGl2ZVBE
RkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiUm91bmRlZFJlY3QuaCIKICNpbmNsdWRlICJUZXh0UnVu
LmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgpAQCAtNzQ0LDYgKzc0NSwxOSBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiBpbWFn
ZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZQogICAgIGRyYXdQbGF0Zm9ybUltYWdlKGltYWdlLnBs
YXRmb3JtSW1hZ2UoKSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CiB9
CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlUERGRG9jdW1lbnQoTmF0aXZlUERG
RG9jdW1lbnQmIHBkZkRvY3VtZW50LCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3sKKyAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgp
KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+
ZHJhd05hdGl2ZVBERkRvY3VtZW50KHBkZkRvY3VtZW50LCBpbWFnZVNpemUsIGRlc3RSZWN0LCBz
cmNSZWN0LCBvcHRpb25zKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHBkZkRvY3Vt
ZW50LmRyYXcoKnRoaXMsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOwor
fQorCiBJbWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UoSW1hZ2UmIGlt
YWdlLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmIGltYWdlUGFpbnRpbmdPcHRpb25zKQogewogICAgIHJldHVybiBkcmF3SW1hZ2UoaW1h
Z2UsIEZsb2F0UmVjdChkZXN0aW5hdGlvbiwgaW1hZ2Uuc2l6ZSgpKSwgRmxvYXRSZWN0KEZsb2F0
UG9pbnQoKSwgaW1hZ2Uuc2l6ZSgpKSwgaW1hZ2VQYWludGluZ09wdGlvbnMpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCA0
NTM5ZmJiNmRiZjNlYzc4M2M2MTMzODZlYTI1NDk0ZjRlYjZiMWE0Li43ZWIwNWMwMmM5ZDY5NWZh
MDdkNzg3N2NlM2JjNjgxMjQ5MjNmNDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtOTMsNiArOTMsOCBAQCBjbGFzcyBH
cmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGU7CiBjbGFzcyBJbWFnZUJ1ZmZlcjsKIGNsYXNz
IEludFJlY3Q7CiBjbGFzcyBNZWRpYVBsYXllcjsKK2NsYXNzIE5hdGl2ZUltYWdlOworY2xhc3Mg
TmF0aXZlUERGRG9jdW1lbnQ7CiBjbGFzcyBSb3VuZGVkUmVjdDsKIGNsYXNzIEdyYXBoaWNzQ29u
dGV4dEdMOwogY2xhc3MgUGF0aDsKQEAgLTM4MCw2ICszODIsNyBAQCBwdWJsaWM6CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzdHJva2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IGxpbmVX
aWR0aCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJ
bWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
ID0geyB9KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdOYXRpdmVQREZEb2N1bWVudChO
YXRpdmVQREZEb2N1bWVudCYsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJiA9IHsgfSk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBJbWFnZURyYXdSZXN1
bHQgZHJhd0ltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgSW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdlIH0p
OwogICAgIFdFQkNPUkVfRVhQT1JUIEltYWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
PSB7IEltYWdlT3JpZW50YXRpb246OkZyb21JbWFnZSB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaAppbmRleCA1Yzgy
NWY3ZDQxYjk4NjE2ZDE3ZmRiOGViZTdjZmZkN2QyYmZjYzhjLi45NTEzZjE4Nzk0Y2YzNmQxZTQz
YTNkMGVkY2JhYjI0ZTVkY2RkMmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCkBAIC03MSw2ICs3MSw3IEBAIHB1
YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdOYXRp
dmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkcmF3TmF0aXZlUERGRG9j
dW1lbnQoTmF0aXZlUERGRG9jdW1lbnQmLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4o
TmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3
UmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCBib3JkZXJUaGlja25lc3MpID0gMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcAppbmRleCA5MzdhYTRkMzU5M2Qx
ZDIzOTE3MzNmMGMwMjc3NGEyMTExMzM2NWUxLi5lNWNiMWUyMGRhMjFlN2NlMGJjNTUyZmVlOTI4
MGE3NjM5YTQ4ZDIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2Uu
Y3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiSW1hZ2VPYnNlcnZlci5oIgogI2luY2x1
ZGUgIkxlbmd0aC5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKKyNpbmNsdWRlICJQ
REZEb2N1bWVudEltYWdlLmgiCiAjaW5jbHVkZSAiU1ZHSW1hZ2UuaCIKICNpbmNsdWRlICJTaGFy
ZWRCdWZmZXIuaCIKICNpbmNsdWRlIDxtYXRoLmg+CkBAIC00Miw3ICs0Myw2IEBACiAjaW5jbHVk
ZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCiAjaWYgVVNFKENHKQotI2luY2x1ZGUgIlBERkRv
Y3VtZW50SW1hZ2UuaCIKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5o
PgogI2VuZGlmCiAKQEAgLTcwLDcgKzcwLDcgQEAgUmVmUHRyPEltYWdlPiBJbWFnZTo6Y3JlYXRl
KEltYWdlT2JzZXJ2ZXImIG9ic2VydmVyKQogCiAgICAgYXV0byB1cmwgPSBvYnNlcnZlci5zb3Vy
Y2VVcmwoKTsKICAgICBpZiAoaXNQREZSZXNvdXJjZShtaW1lVHlwZSwgdXJsKSB8fCBpc1Bvc3RT
Y3JpcHRSZXNvdXJjZShtaW1lVHlwZSwgdXJsKSkgewotI2lmIFVTRShDRykgJiYgIVVTRShXRUJL
SVRfSU1BR0VfREVDT0RFUlMpCisjaWYgRU5BQkxFKFBERkRPQ1VNRU5USU1BR0UpCiAgICAgICAg
IHJldHVybiBQREZEb2N1bWVudEltYWdlOjpjcmVhdGUoJm9ic2VydmVyKTsKICNlbHNlCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTmF0aXZlUERGRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTmF0aXZlUERGRG9jdW1lbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdjOWJlZGJiYzQ3ZDZk
OTBjNDJlZmM3NDQxOGFjMDU3NGMxNTk0YzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVQREZEb2N1bWVudC5jcHAKQEAgLTAsMCArMSwy
NDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk5hdGl2ZVBERkRvY3VtZW50LmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworTmF0aXZlUERGRG9jdW1lbnQ6Ok5hdGl2ZVBERkRvY3VtZW50KFNo
YXJlZEJ1ZmZlciYgZGF0YSwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciwgUGxhdGZvcm1QREZEb2N1bWVudFB0ciYmIHBsYXRmb3JtUERGRG9j
dW1lbnQpCisgICAgOiBtX2RhdGEobWFrZVJlZihkYXRhKSkKKyAgICAsIG1fcmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKKyAgICAsIG1fcGxh
dGZvcm1QREZEb2N1bWVudChXVEZNb3ZlKHBsYXRmb3JtUERGRG9jdW1lbnQpKQoreworICAgIGlm
IChwYWdlQ291bnQoKSkKKyAgICAgICAgY29tcHV0ZUJvdW5kc0ZvckN1cnJlbnRQYWdlKCk7Cit9
CisKK05hdGl2ZVBERkRvY3VtZW50Ojp+TmF0aXZlUERGRG9jdW1lbnQoKQoreworICAgIGlmICht
X29ic2VydmVyKQorICAgICAgICBtX29ic2VydmVyLT5yZWxlYXNlTmF0aXZlUERGRG9jdW1lbnQo
bV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworfQorCitGbG9hdFNpemUgTmF0aXZlUERG
RG9jdW1lbnQ6OnNpemUoKSBjb25zdAoreworICAgIEZsb2F0U2l6ZSBleHBhbmRlZENyb3BCb3hT
aXplID0gRmxvYXRTaXplKGV4cGFuZGVkSW50U2l6ZShtX2Nyb3BCb3guc2l6ZSgpKSk7CisKKyAg
ICBpZiAobV9yb3RhdGlvbkRlZ3JlZXMgPT0gOTAgfHwgbV9yb3RhdGlvbkRlZ3JlZXMgPT0gMjcw
KQorICAgICAgICByZXR1cm4gZXhwYW5kZWRDcm9wQm94U2l6ZS50cmFuc3Bvc2VkU2l6ZSgpOwor
ICAgIHJldHVybiBleHBhbmRlZENyb3BCb3hTaXplOworfQorCitzdGF0aWMgdm9pZCB0cmFuc2Zv
cm1Db250ZXh0Rm9yUGFpbnRpbmcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QpCit7CisgICAgZmxvYXQg
aFNjYWxlID0gZGVzdFJlY3Qud2lkdGgoKSAvIHNyY1JlY3Qud2lkdGgoKTsKKyAgICBmbG9hdCB2
U2NhbGUgPSBkZXN0UmVjdC5oZWlnaHQoKSAvIHNyY1JlY3QuaGVpZ2h0KCk7CisKKyAgICBpZiAo
aFNjYWxlICE9IHZTY2FsZSkgeworICAgICAgICBmbG9hdCBtaW5pbXVtU2NhbGUgPSBzdGQ6Om1h
eCgoZGVzdFJlY3Qud2lkdGgoKSAtIDAuNSkgLyBzcmNSZWN0LndpZHRoKCksIChkZXN0UmVjdC5o
ZWlnaHQoKSAtIDAuNSkgLyBzcmNSZWN0LmhlaWdodCgpKTsKKyAgICAgICAgZmxvYXQgbWF4aW11
bVNjYWxlID0gc3RkOjptaW4oKGRlc3RSZWN0LndpZHRoKCkgKyAwLjUpIC8gc3JjUmVjdC53aWR0
aCgpLCAoZGVzdFJlY3QuaGVpZ2h0KCkgKyAwLjUpIC8gc3JjUmVjdC5oZWlnaHQoKSk7CisKKyAg
ICAgICAgLy8gSWYgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgdHdvIHNjYWxlcyBpcyBkdWUg
dG8gaW50ZWdlciByb3VuZGluZyBvZiBpbWFnZSBzaXplcywKKyAgICAgICAgLy8gdXNlIHRoZSBz
bWFsbGVyIG9mIHRoZSB0d28gb3JpZ2luYWwgc2NhbGVzIHRvIGVuc3VyZSB0aGF0IHRoZSBpbWFn
ZSBmaXRzIGluc2lkZSB0aGUKKyAgICAgICAgLy8gc3BhY2Ugb3JpZ2luYWxseSBhbGxvY2F0ZWQg
Zm9yIGl0LgorICAgICAgICBpZiAobWluaW11bVNjYWxlIDw9IG1heGltdW1TY2FsZSkgeworICAg
ICAgICAgICAgaFNjYWxlID0gc3RkOjptaW4oaFNjYWxlLCB2U2NhbGUpOworICAgICAgICAgICAg
dlNjYWxlID0gaFNjYWxlOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gZHJhd1BERlBhZ2Uo
KSByZWxpZXMgb24gZHJhd2luZyB0aGUgd2hvbGUgUERGIGludG8gYSBjb250ZXh0IHN0YXJ0aW5n
IGF0ICgwLCAwKS4gV2UgbmVlZAorICAgIC8vIHRvIHRyYW5zZm9ybSB0aGUgZGVzdGluYXRpb24g
Y29udGV4dCBzdWNoIHRoYXQgc3JjUmVjdCBvZiB0aGUgc291cmNlIGNvbnRleHQgd2lsbCBiZSBk
cmF3bgorICAgIC8vIGluIGRlc3RSZWN0IG9mIGRlc3RpbmF0aW9uIGNvbnRleHQuCisgICAgY29u
dGV4dC50cmFuc2xhdGUoZGVzdFJlY3QubG9jYXRpb24oKSAtIHNyY1JlY3QubG9jYXRpb24oKSk7
CisgICAgY29udGV4dC5zY2FsZShGbG9hdFNpemUoaFNjYWxlLCAtdlNjYWxlKSk7CisgICAgY29u
dGV4dC50cmFuc2xhdGUoMCwgLXNyY1JlY3QuaGVpZ2h0KCkpOworfQorCit2b2lkIE5hdGl2ZVBE
RkRvY3VtZW50Ojp1cGRhdGVTbmFwc2hvdElmTmVlZGVkKEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCkKK3sKKyAgICAvLyBDbGlwcGVkIG9wdGlvbiBpcyBm
b3IgdGVzdGluZyBvbmx5IGFuZCBpdCByZXF1aXJlcyB0aGUgUERGIHRvIGJlIHJlLWNhY2hlZCB3
aXRoIGVhY2ggZHJhdy4KKyAgICBib29sIGZvcmNlVXBkYXRlU25hcHNob3QgPSBtX3BkZkltYWdl
Q2FjaGluZ1BvbGljeSA9PSBQREZJbWFnZUNhY2hpbmdQb2xpY3k6OkNsaXBCb3VuZHNPbmx5Owor
ICAgIGlmICghZm9yY2VVcGRhdGVTbmFwc2hvdCAmJiBtX3NuYXBzaG90KSB7CisgICAgICAgIC8v
IEFkanVzdCB0aGUgdmlldy1wb3J0IHJlY3RhbmdsZXMgaWYgbm8gcmUtY2FjaGluZyB3aWxsIGhh
cHBlbi4KKyAgICAgICAgaWYgKG1fc25hcHNob3QtPnRyYW5zZmVyVmlld3BvcnQoY29udGV4dCwg
ZGVzdFJlY3QsIHNyY1JlY3QpKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1f
c25hcHNob3QgPSBudWxscHRyOworICAgIAorICAgIEZsb2F0UmVjdCBzbmFwc2hvdFJlY3Q7Cisg
ICAgc3dpdGNoIChtX3BkZkltYWdlQ2FjaGluZ1BvbGljeSkgeworICAgIGNhc2UgUERGSW1hZ2VD
YWNoaW5nUG9saWN5OjpEaXNhYmxlZDoKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgUERGSW1h
Z2VDYWNoaW5nUG9saWN5OjpCZWxvd01lbW9yeUxpbWl0OgorICAgICAgICAvLyBLZWVwIHRoZSBt
ZW1vcnkgdXNlZCBieSB0aGUgY2FjaGVkIGltYWdlIGJlbG93IHNvbWUgdGhyZXNob2xkLCBvdGhl
cndpc2UgV2ViS2l0IHByb2Nlc3MKKyAgICAgICAgLy8gd2lsbCBqZXRzYW0gaWYgaXQgZXhjZWVk
cyBpdHMgbWVtb3J5IGxpbWl0LiBPbmx5IGEgcmVjdGFuZ2xlIGZyb20gdGhlIFBERiBtYXkgYmUg
Y2FjaGVkLgorICAgICAgICBzbmFwc2hvdFJlY3QgPSBTbmFwc2hvdDo6Y2FsY3VsYXRlU25hcHNo
b3RSZWN0KGNvbnRleHQsIGRlc3RSZWN0KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQREZJ
bWFnZUNhY2hpbmdQb2xpY3k6OkNsaXBCb3VuZHNPbmx5OgorICAgICAgICBzbmFwc2hvdFJlY3Qg
PSBpbnRlcnNlY3Rpb24oY29udGV4dC5jbGlwQm91bmRzKCksIGRlc3RSZWN0KTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBQREZJbWFnZUNhY2hpbmdQb2xpY3k6OkVuYWJsZWQ6CisgICAgICAg
IHNuYXBzaG90UmVjdCA9IGRlc3RSZWN0OworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBG
bG9hdFNpemUgc25hcHNob3RTaXplID0gRmxvYXRSZWN0KGVuY2xvc2luZ0ludFJlY3Qoc25hcHNo
b3RSZWN0KSkuc2l6ZSgpOworICAgIAorICAgIC8vIENhY2hlIHRoZSBQREYgaW1hZ2Ugb25seSBp
ZiB0aGUgc2l6ZSBvZiB0aGUgbmV3IGltYWdlIHdvbid0IGV4Y2VlZCB0aGUgY2FjaGUgdGhyZXNo
b2xkLgorICAgIGlmIChtX3BkZkltYWdlQ2FjaGluZ1BvbGljeSA9PSBQREZJbWFnZUNhY2hpbmdQ
b2xpY3k6OkJlbG93TWVtb3J5TGltaXQpIHsKKyAgICAgICAgaWYgKCFTbmFwc2hvdDo6Y2FuQ3Jl
YXRlU25hcHNob3QoY29udGV4dCwgc25hcHNob3RTaXplKSkKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgCisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVD
b21wYXRpYmxlQnVmZmVyKHNuYXBzaG90U2l6ZSwgY29udGV4dCk7CisgICAgaWYgKCFpbWFnZUJ1
ZmZlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYgYnVmZmVyQ29udGV4dCA9IGltYWdl
QnVmZmVyLT5jb250ZXh0KCk7CisKKyAgICAvLyBXZSBuZWVkIHRvIHRyYW5zZm9ybSB0aGUgY29v
cmRpbmF0ZSBzeXN0ZW0gc3VjaCB0aGF0IHRvcC1sZWZ0IG9mIGFkanVzdGVkRGVzdFJlY3Qgd2ls
bCBiZSBtYXBwZWQgdG8gdGhlCisgICAgLy8gdG9wLWxlZnQgb2YgZGVzdFJlY3QuIEFsdGhvdWdo
IG9ubHkgaW1hZ2VCdWZmZXJSZWN0LnNpemUoKSBvZiB0aGUgaW1hZ2UgY29waWVkLCB0aGUgc2l6
ZXMgb2Ygc3JjUmVjdAorICAgIC8vIGFuZCBkZXN0UmVjdCBzaG91bGQgYmUgcGFzc2VkIHRvIHRo
aXMgZnVuY3Rpb24gYmVjYXVzZSB0aGV5IGFyZSB1c2VkIHRvIGNhbGN1bGF0ZSB0aGUgaW1hZ2Ug
c2NhbGluZy4KKyAgICB0cmFuc2Zvcm1Db250ZXh0Rm9yUGFpbnRpbmcoYnVmZmVyQ29udGV4dCwg
ZGVzdFJlY3QsIEZsb2F0UmVjdChzbmFwc2hvdFJlY3QubG9jYXRpb24oKSwgc3JjUmVjdC5zaXpl
KCkpKTsKKyAgICBkcmF3UERGUGFnZShidWZmZXJDb250ZXh0LCBpbWFnZVNpemUpOworCisgICAg
YXV0byB0cmFuc2Zvcm0gPSBjb250ZXh0LmdldENUTShHcmFwaGljc0NvbnRleHQ6OkRlZmluaXRl
bHlJbmNsdWRlRGV2aWNlU2NhbGUpOworICAgIG1fc25hcHNob3QgPSBTbmFwc2hvdDo6Y3JlYXRl
KG1ha2VSZWYoKmltYWdlQnVmZmVyKSwgc25hcHNob3RSZWN0LCBkZXN0UmVjdCwgc3JjUmVjdCwg
dHJhbnNmb3JtKTsKKyAgICAKKyAgICBBU1NFUlQobV9zbmFwc2hvdCk7CisgICAgKyttX2NhY2hp
bmdDb3VudEZvclRlc3Rpbmc7Cit9CisKK3ZvaWQgTmF0aXZlUERGRG9jdW1lbnQ6OmRyYXcoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3sKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNh
dmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CisgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRp
b24ob3B0aW9ucy5jb21wb3NpdGVPcGVyYXRvcigpKTsKKworICAgIHVwZGF0ZVNuYXBzaG90SWZO
ZWVkZWQoY29udGV4dCwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCk7CisKKyAgICBpZiAo
bV9zbmFwc2hvdCkKKyAgICAgICAgbV9zbmFwc2hvdC0+ZHJhdyhjb250ZXh0KTsKKyAgICBlbHNl
IHsKKyAgICAgICAgdHJhbnNmb3JtQ29udGV4dEZvclBhaW50aW5nKGNvbnRleHQsIGRlc3RSZWN0
LCBzcmNSZWN0KTsKKyAgICAgICAgZHJhd1BERlBhZ2UoY29udGV4dCwgaW1hZ2VTaXplKTsKKyAg
ICB9Cit9CisKK3ZvaWQgTmF0aXZlUERGRG9jdW1lbnQ6OmR1bXAoV1RGOjpUZXh0U3RyZWFtJiB0
cykgY29uc3QKK3sKKyAgICB0cy5kdW1wUHJvcGVydHkoInBhZ2UtY291bnQiLCBwYWdlQ291bnQo
KSk7CisgICAgdHMuZHVtcFByb3BlcnR5KCJjcm9wLWJveCIsIG1fY3JvcEJveCk7CisgICAgaWYg
KG1fcm90YXRpb25EZWdyZWVzKQorICAgICAgICB0cy5kdW1wUHJvcGVydHkoInJvdGF0aW9uIiwg
bV9yb3RhdGlvbkRlZ3JlZXMpOworfQorCitzdGQ6OnVuaXF1ZV9wdHI8TmF0aXZlUERGRG9jdW1l
bnQ6OlNuYXBzaG90PiBOYXRpdmVQREZEb2N1bWVudDo6U25hcHNob3Q6OmNyZWF0ZShSZWY8SW1h
Z2VCdWZmZXI+JiYgaW1hZ2VCdWZmZXIsIGNvbnN0IEZsb2F0UmVjdCYgaW1hZ2VCdWZmZXJSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtKQoreworICAgIHJldHVybiBzdGQ6OnVuaXF1
ZV9wdHI8U25hcHNob3Q+KG5ldyBTbmFwc2hvdChXVEZNb3ZlKGltYWdlQnVmZmVyKSwgaW1hZ2VC
dWZmZXJSZWN0LCBkZXN0UmVjdCwgc3JjUmVjdCwgdHJhbnNmb3JtKSk7Cit9CisKK05hdGl2ZVBE
RkRvY3VtZW50OjpTbmFwc2hvdDo6U25hcHNob3QoUmVmPEltYWdlQnVmZmVyPiYmIGltYWdlQnVm
ZmVyLCBjb25zdCBGbG9hdFJlY3QmIHNuYXBzaG90UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRy
YW5zZm9ybSkKKyAgICA6IG1faW1hZ2VCdWZmZXIoV1RGTW92ZShpbWFnZUJ1ZmZlcikpCisgICAg
LCBtX3NuYXBzaG90UmVjdChzbmFwc2hvdFJlY3QpCisgICAgLCBtX2Rlc3RSZWN0KGRlc3RSZWN0
KQorICAgICwgbV9zcmNSZWN0KHNyY1JlY3QpCisgICAgLCBtX3RyYW5zZm9ybSh0cmFuc2Zvcm0p
Cit7CisgICAgQVNTRVJUKG1heFNuYXBzaG90c01lbW9yeUNvc3QgLSBtX2FsbFNuYXBzaG90c01l
bW9yeUNvc3QgPj0gbWVtb3J5Q29zdCgpKTsKKyAgICBtX2FsbFNuYXBzaG90c01lbW9yeUNvc3Qg
Kz0gbWVtb3J5Q29zdCgpOworfQorCitOYXRpdmVQREZEb2N1bWVudDo6U25hcHNob3Q6On5TbmFw
c2hvdCgpCit7CisgICAgQVNTRVJUKG1fYWxsU25hcHNob3RzTWVtb3J5Q29zdCA+PSBtZW1vcnlD
b3N0KCkpOworICAgIG1fYWxsU25hcHNob3RzTWVtb3J5Q29zdCAtPSBtZW1vcnlDb3N0KCk7Cit9
CisKK0Zsb2F0UmVjdCBOYXRpdmVQREZEb2N1bWVudDo6U25hcHNob3Q6OmNhbGN1bGF0ZVNuYXBz
aG90UmVjdChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QpCit7CisgICAgRmxvYXRSZWN0IGRpcnR5UmVjdCA9IGNvbnRleHQuY2xpcEJvdW5kcygpOwor
CisgICAgLy8gQ2FsY3VsYXRlIHRoZSBtYXhpbXVtIHJlY3RhbmdsZSB3ZSBjYW4gY2FjaGUgYXJv
dW5kIHRoZSBjZW50ZXIgb2YgdGhlIGNsaXBwaW5nIGJvdW5kcy4KKyAgICBGbG9hdFNpemUgbWF4
U2l6ZSA9IG1heFNuYXBzaG90U2lkZSAvIGNvbnRleHQuc2NhbGVGYWN0b3IoKTsKKyAgICBGbG9h
dFBvaW50IG1pbkxvY2F0aW9uID0gRmxvYXRQb2ludChkaXJ0eVJlY3QuY2VudGVyKCkgLSBtYXhT
aXplIC8gMik7CisKKyAgICAvLyBFbnN1cmUgdGhlIGNsaXBwaW5nIGJvdW5kcyBhcmUgYWxsIGlu
Y2x1ZGVkIGJ1dCB3aXRoaW4gdGhlIGJvdW5kcyBvZiB0aGUgZHN0UmVjdAorICAgIHJldHVybiBp
bnRlcnNlY3Rpb24odW5pb25SZWN0KGRpcnR5UmVjdCwgRmxvYXRSZWN0KG1pbkxvY2F0aW9uLCBt
YXhTaXplKSksIGRlc3RSZWN0KTsKK30KKworYm9vbCBOYXRpdmVQREZEb2N1bWVudDo6U25hcHNo
b3Q6OmNhbkNyZWF0ZVNuYXBzaG90KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxv
YXRTaXplJiBpbWFnZUJ1ZmZlclNpemUpCit7CisgICAgYXV0byBtZW1vcnlDb3N0ID0gSW1hZ2VC
dWZmZXI6OmNvbXBhdGlibGVCdWZmZXJTaXplKGltYWdlQnVmZmVyU2l6ZSwgY29udGV4dCkudW5j
bGFtcGVkQXJlYSgpICogNDsKKyAgICByZXR1cm4gbWF4U25hcHNob3RzTWVtb3J5Q29zdCAtIG1f
YWxsU25hcHNob3RzTWVtb3J5Q29zdCA+PSBtZW1vcnlDb3N0OworfQorCitib29sIE5hdGl2ZVBE
RkRvY3VtZW50OjpTbmFwc2hvdDo6Y2FuQmVSZXVzZWQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QpIGNv
bnN0Cit7CisgICAgLy8gT2xkIGFuZCBuZXcgc291cmNlIHJlY3RhbmdsZXMgaGF2ZSB0byBtYXRj
aC4KKyAgICBpZiAoc3JjUmVjdCAhPSBtX3NyY1JlY3QpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIC8vIE9sZCBhbmQgbmV3IHNjYWxpbmcgZmFjdG9ycyAiZGVzdCAvIHNyYyIgaGF2ZSB0
byBtYXRjaC4KKyAgICBpZiAoZGVzdFJlY3Quc2l6ZSgpICE9IG1fZGVzdFJlY3Quc2l6ZSgpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBtX3NuYXBzaG90UmVjdHQgY2FuIGJlIG1v
dmVkIGlmIHNyY1JlY3QgYW5kIGRlc3RSZWN0LnNpemUoKSBkaWQgbm90IGNoYW5nZS4KKyAgICBG
bG9hdFJlY3QgbW92ZWRTbmFwc2hvdFJlY3QgPSBtX3NuYXBzaG90UmVjdDsKKyAgICBtb3ZlZFNu
YXBzaG90UmVjdC5tb3ZlKEZsb2F0U2l6ZShkZXN0UmVjdC5sb2NhdGlvbigpIC0gbV9kZXN0UmVj
dC5sb2NhdGlvbigpKSk7CisKKyAgICAvLyBtb3ZlZENhY2hlZEltYWdlUmVjdCBoYXMgdG8gY29u
dGFpbiB0aGUgd2hvbGUgZGlydHkgcmVjdGFuZ2xlLgorICAgIEZsb2F0UmVjdCBkaXJ0eVJlY3Qg
PSBpbnRlcnNlY3Rpb24oY29udGV4dC5jbGlwQm91bmRzKCksIGRlc3RSZWN0KTsKKyAgICBpZiAo
IW1vdmVkU25hcHNob3RSZWN0LmNvbnRhaW5zKGRpcnR5UmVjdCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIC8vIE9sZCBhbmQgbmV3IGNvbnRleHQgc2NhbGluZyBmYWN0b3JzIGhhdmUg
dG8gbWF0Y2ggYXMgd2VsbC4KKyAgICBBZmZpbmVUcmFuc2Zvcm06OkRlY29tcG9zZWRUeXBlIGRl
Y29tcG9zZWRUcmFuc2Zvcm07CisgICAgY29udGV4dC5nZXRDVE0oR3JhcGhpY3NDb250ZXh0OjpE
ZWZpbml0ZWx5SW5jbHVkZURldmljZVNjYWxlKS5kZWNvbXBvc2UoZGVjb21wb3NlZFRyYW5zZm9y
bSk7CisKKyAgICBBZmZpbmVUcmFuc2Zvcm06OkRlY29tcG9zZWRUeXBlIGNhY2hlZERlY29tcG9z
ZWRUcmFuc2Zvcm07CisgICAgbV90cmFuc2Zvcm0uZGVjb21wb3NlKGNhY2hlZERlY29tcG9zZWRU
cmFuc2Zvcm0pOworICAgIAorICAgIHJldHVybiBkZWNvbXBvc2VkVHJhbnNmb3JtLnNjYWxlWCA9
PSBjYWNoZWREZWNvbXBvc2VkVHJhbnNmb3JtLnNjYWxlWCAmJiBkZWNvbXBvc2VkVHJhbnNmb3Jt
LnNjYWxlWSA9PSBjYWNoZWREZWNvbXBvc2VkVHJhbnNmb3JtLnNjYWxlWTsKK30KKworc2l6ZV90
IE5hdGl2ZVBERkRvY3VtZW50OjpTbmFwc2hvdDo6bWVtb3J5Q29zdCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1faW1hZ2VCdWZmZXItPmJhY2tlbmRTaXplKCkudW5jbGFtcGVkQXJlYSgpICogNDsK
K30KKworYm9vbCBOYXRpdmVQREZEb2N1bWVudDo6U25hcHNob3Q6OnRyYW5zZmVyVmlld3BvcnQo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QpCit7CisgICAgaWYgKCFjYW5CZVJldXNlZChjb250ZXh0LCBk
ZXN0UmVjdCwgc3JjUmVjdCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1fc25hcHNo
b3RSZWN0Lm1vdmUoRmxvYXRTaXplKGRlc3RSZWN0LmxvY2F0aW9uKCkgLSBtX2Rlc3RSZWN0Lmxv
Y2F0aW9uKCkpKTsKKyAgICBtX2Rlc3RSZWN0ID0gZGVzdFJlY3Q7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK3ZvaWQgTmF0aXZlUERGRG9jdW1lbnQ6OlNuYXBzaG90OjpkcmF3KEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCkKK3sKKyAgICBjb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihtX2ltYWdlQnVm
ZmVyLCBtX2Rlc3RSZWN0KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlUERGRG9jdW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZVBERkRvY3VtZW50LmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZWI5MTM2NDM4ZTc3Mzk2MDdlNzA0NmRmODc3NjY5MWQ4NjY4NjMyYQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZVBERkRv
Y3VtZW50LmgKQEAgLTAsMCArMSwxMjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBZmZpbmVUcmFuc2Zv
cm0uaCIKKyNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJQREZJbWFnZUNhY2hpbmdQ
b2xpY3kuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVBERkRvY3VtZW50LmgiCisjaW5jbHVkZSAiUmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgSW1hZ2VCdWZmZXI7CitzdHJ1Y3QgSW1hZ2VQYWludGluZ09wdGlvbnM7CisKK2NsYXNzIE5h
dGl2ZVBERkRvY3VtZW50IDogcHVibGljIFJlZkNvdW50ZWQ8TmF0aXZlUERGRG9jdW1lbnQ+IHsK
K3B1YmxpYzoKKyAgICBjbGFzcyBPYnNlcnZlciB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0
dWFsIH5PYnNlcnZlcigpID0gZGVmYXVsdDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHJlbGVhc2VO
YXRpdmVQREZEb2N1bWVudChSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpID0gMDsKKyAgICBw
cm90ZWN0ZWQ6CisgICAgICAgIE9ic2VydmVyKCkgPSBkZWZhdWx0OworICAgIH07CisKKyAgICBz
dGF0aWMgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPE5hdGl2ZVBERkRvY3VtZW50PiBjcmVhdGUoU2hh
cmVkQnVmZmVyJiwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyID0gUmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIH5OYXRpdmVQ
REZEb2N1bWVudCgpOworCisgICAgY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRhKCkgY29uc3QgeyBy
ZXR1cm4gbV9kYXRhLmdldCgpOyB9CisgICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyOyB9CisgICAgdm9pZCBzZXRPYnNlcnZlcihPYnNlcnZlciogb2JzZXJ2
ZXIpIHsgbV9vYnNlcnZlciA9IG9ic2VydmVyOyB9CisKKyAgICBGbG9hdFNpemUgc2l6ZSgpIGNv
bnN0OworICAgIHVuc2lnbmVkIHBhZ2VDb3VudCgpIGNvbnN0OworCisgICAgUERGSW1hZ2VDYWNo
aW5nUG9saWN5IHBkZkltYWdlQ2FjaGluZ1BvbGljeSgpIGNvbnN0IHsgcmV0dXJuIG1fcGRmSW1h
Z2VDYWNoaW5nUG9saWN5OyB9CisgICAgdm9pZCBzZXRQREZJbWFnZUNhY2hpbmdQb2xpY3koUERG
SW1hZ2VDYWNoaW5nUG9saWN5IHBkZkltYWdlQ2FjaGluZ1BvbGljeSkgeyBtX3BkZkltYWdlQ2Fj
aGluZ1BvbGljeSA9IHBkZkltYWdlQ2FjaGluZ1BvbGljeTsgfQorCisgICAgdm9pZCBjb21wdXRl
Qm91bmRzRm9yQ3VycmVudFBhZ2UoKTsKKyAgICB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKTsKKwor
ICAgIHVuc2lnbmVkIGNhY2hpbmdDb3VudEZvclRlc3RpbmcoKSBjb25zdCB7IHJldHVybiBtX2Nh
Y2hpbmdDb3VudEZvclRlc3Rpbmc7IH0KKyAgICBzaXplX3Qgc25hcHNob3RNZW1vcnlDb3N0KCkg
Y29uc3QgeyByZXR1cm4gbV9zbmFwc2hvdCA/IG1fc25hcHNob3QtPm1lbW9yeUNvc3QoKSA6IDA7
IH0KKyAgICB2b2lkIGNsZWFyU25hcHNob3QoKSB7IG1fc25hcHNob3QgPSBudWxscHRyOyB9Cisg
ICAgCisgICAgdm9pZCBkdW1wKFdURjo6VGV4dFN0cmVhbSYpIGNvbnN0OworCisjaWYgRU5BQkxF
KFBERktJVF9GT1JfUERGRE9DVU1FTlRJTUFHRSkKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
UmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+IGNvbnZlcnRQb3N0U2NyaXB0RGF0YVRvUERGKFJl
dGFpblB0cjxDRkRhdGFSZWY+JiYgcG9zdFNjcmlwdERhdGEpOworI2VuZGlmCisKK3ByaXZhdGU6
CisgICAgY2xhc3MgU25hcHNob3QgeworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxTbmFwc2hvdD4gY3JlYXRlKFJlZjxJbWFnZUJ1ZmZlcj4mJiwgY29uc3QgRmxv
YXRSZWN0JiBpbWFnZUJ1ZmZlclJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJik7CisKKyAgICAgICAg
flNuYXBzaG90KCk7CisgICAgICAgIAorICAgICAgICAvLyBUbyBhdm9pZCB0aGUgamV0c2FtIG9u
IGlPUywgd2UgYXJlIGdvaW5nIHRvIGxpbWl0IHRoZSBzaXplIG9mIGFsbCB0aGUgUERGIHNuYXBz
aG90cyB0byBiZSA2NE1CLgorICAgICAgICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBtYXhTbmFw
c2hvdFNpZGUgPSA0ICogMTAyNDsKKyAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgbWF4
U25hcHNob3RBcmVhID0gbWF4U25hcHNob3RTaWRlICogbWF4U25hcHNob3RTaWRlOworICAgICAg
ICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBtYXhTbmFwc2hvdHNNZW1vcnlDb3N0ID0gbWF4U25h
cHNob3RBcmVhICogNDsKKworICAgICAgICBzdGF0aWMgRmxvYXRSZWN0IGNhbGN1bGF0ZVNuYXBz
aG90UmVjdChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KTsKKyAg
ICAgICAgc3RhdGljIGJvb2wgY2FuQ3JlYXRlU25hcHNob3QoR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgRmxvYXRTaXplJiBpbWFnZUJ1ZmZlclNpemUpOworCisgICAgICAgIHNpemVfdCBtZW1vcnlD
b3N0KCkgY29uc3Q7CisgICAgICAgIGJvb2wgdHJhbnNmZXJWaWV3cG9ydChHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qp
OworICAgICAgICB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0Jik7CisKKyAgICBwcml2YXRlOgor
ICAgICAgICBTbmFwc2hvdChSZWY8SW1hZ2VCdWZmZXI+JiYsIGNvbnN0IEZsb2F0UmVjdCYgaW1h
Z2VCdWZmZXJSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpOworICAgICAgICBib29sIGNhbkJlUmV1
c2VkKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCkgY29uc3Q7CisKKyAgICAgICAgUmVmPEltYWdlQnVmZmVyPiBtX2lt
YWdlQnVmZmVyOworICAgICAgICBGbG9hdFJlY3QgbV9zbmFwc2hvdFJlY3Q7CisgICAgICAgIEZs
b2F0UmVjdCBtX2Rlc3RSZWN0OworICAgICAgICBGbG9hdFJlY3QgbV9zcmNSZWN0OworICAgICAg
ICBBZmZpbmVUcmFuc2Zvcm0gbV90cmFuc2Zvcm07CisgICAgICAgIGlubGluZSBzdGF0aWMgc2l6
ZV90IG1fYWxsU25hcHNob3RzTWVtb3J5Q29zdCB7IDAgfTsKKyAgICB9OworCisgICAgTmF0aXZl
UERGRG9jdW1lbnQoU2hhcmVkQnVmZmVyJiwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBQ
bGF0Zm9ybVBERkRvY3VtZW50UHRyJiYpOworCisgICAgdm9pZCB1cGRhdGVTbmFwc2hvdElmTmVl
ZGVkKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QpOworICAgIHZvaWQg
ZHJhd1BERlBhZ2UoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUp
OworCisgICAgUmVmPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOworICAgIFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsKKworICAgIE9ic2VydmVy
KiBtX29ic2VydmVyIHsgbnVsbHB0ciB9OworICAgIFBsYXRmb3JtUERGRG9jdW1lbnRQdHIgbV9w
bGF0Zm9ybVBERkRvY3VtZW50OworCisgICAgRmxvYXRSZWN0IG1fY3JvcEJveDsKKyAgICBpbnQg
bV9yb3RhdGlvbkRlZ3JlZXMgeyAwIH07IC8vIENhbiBvbmx5IGJlIDAsIDkwLCAxODAsIG9yIDI3
MCBkZWdyZWVzLgorCisgICAgUERGSW1hZ2VDYWNoaW5nUG9saWN5IG1fcGRmSW1hZ2VDYWNoaW5n
UG9saWN5IHsgZGVmYXVsdFBERkltYWdlQ2FjaGluZ1BvbGljeSB9OworICAgIHN0ZDo6dW5pcXVl
X3B0cjxTbmFwc2hvdD4gbV9zbmFwc2hvdDsKKyAgICB1bnNpZ25lZCBtX2NhY2hpbmdDb3VudEZv
clRlc3RpbmcgeyAwIH07Cit9OworCit1c2luZyBOYXRpdmVQREZEb2N1bWVudEhhc2hNYXAgPSBI
YXNoTWFwPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgUmVmPE5hdGl2ZVBERkRvY3VtZW50
Pj47CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1BERkRvY3VtZW50SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUERGRG9jdW1lbnRJbWFnZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzc4NWY2
NDA1MjFmODRlOGVlZGRiODFhYjY2NmZlMjA5MmQ0MWVmNwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BERkRvY3VtZW50SW1hZ2UuY3BwCkBAIC0w
LDAgKzEsMTMxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjAgQXBwbGUgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQREZEb2N1bWVudEltYWdl
LmgiCisKKyNpZiBFTkFCTEUoUERGRE9DVU1FTlRJTUFHRSkKKworI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dC5oIgorI2luY2x1ZGUgIkltYWdlT2JzZXJ2ZXIuaCIKKyNpbmNsdWRlICJOYXRpdmVQ
REZEb2N1bWVudC5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitQREZEb2N1bWVudEltYWdlOjpQREZEb2N1bWVudEltYWdlKEltYWdl
T2JzZXJ2ZXIqIG9ic2VydmVyKQorICAgIDogSW1hZ2Uob2JzZXJ2ZXIpCit7Cit9CisKK1BERkRv
Y3VtZW50SW1hZ2U6On5QREZEb2N1bWVudEltYWdlKCkKK3sKKyAgICBkZXN0cm95RGVjb2RlZERh
dGEodHJ1ZSk7Cit9CisKK1N0cmluZyBQREZEb2N1bWVudEltYWdlOjpmaWxlbmFtZUV4dGVuc2lv
bigpIGNvbnN0Cit7CisgICAgcmV0dXJuICJwZGYiOworfQorCitGbG9hdFNpemUgUERGRG9jdW1l
bnRJbWFnZTo6c2l6ZShJbWFnZU9yaWVudGF0aW9uKSBjb25zdAoreworICAgIHJldHVybiBtX25h
dGl2ZVBERkRvY3VtZW50ID8gbV9uYXRpdmVQREZEb2N1bWVudC0+c2l6ZSgpIDogRmxvYXRTaXpl
KCk7Cit9CisKK3Vuc2lnbmVkIFBERkRvY3VtZW50SW1hZ2U6OmNhY2hpbmdDb3VudEZvclRlc3Rp
bmcoKSBjb25zdAoreworICAgIHJldHVybiBtX25hdGl2ZVBERkRvY3VtZW50ID8gbV9uYXRpdmVQ
REZEb2N1bWVudC0+Y2FjaGluZ0NvdW50Rm9yVGVzdGluZygpIDogMDsKK30KKwordm9pZCBQREZE
b2N1bWVudEltYWdlOjpzZXRQZGZJbWFnZUNhY2hpbmdQb2xpY3koUERGSW1hZ2VDYWNoaW5nUG9s
aWN5IHBkZkltYWdlQ2FjaGluZ1BvbGljeSkKK3sKKyAgICBpZiAoIW1fbmF0aXZlUERGRG9jdW1l
bnQgfHwgbV9uYXRpdmVQREZEb2N1bWVudC0+cGRmSW1hZ2VDYWNoaW5nUG9saWN5KCkgPT0gcGRm
SW1hZ2VDYWNoaW5nUG9saWN5KQorICAgICAgICByZXR1cm47CisKKyAgICBtX25hdGl2ZVBERkRv
Y3VtZW50LT5zZXRQREZJbWFnZUNhY2hpbmdQb2xpY3kocGRmSW1hZ2VDYWNoaW5nUG9saWN5KTsK
KyAgICBkZXN0cm95RGVjb2RlZERhdGEoKTsKK30KKworRW5jb2RlZERhdGFTdGF0dXMgUERGRG9j
dW1lbnRJbWFnZTo6ZGF0YUNoYW5nZWQoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit7CisgICAgQVNT
RVJUKCFtX25hdGl2ZVBERkRvY3VtZW50KTsKKworICAgIGlmIChhbGxEYXRhUmVjZWl2ZWQgJiYg
IW1fbmF0aXZlUERGRG9jdW1lbnQpCisgICAgICAgIG1fbmF0aXZlUERGRG9jdW1lbnQgPSBOYXRp
dmVQREZEb2N1bWVudDo6Y3JlYXRlKCpkYXRhKCkpOworCisgICAgcmV0dXJuIG1fbmF0aXZlUERG
RG9jdW1lbnQgPyBFbmNvZGVkRGF0YVN0YXR1czo6Q29tcGxldGUgOiBFbmNvZGVkRGF0YVN0YXR1
czo6VW5rbm93bjsKK30KKwordm9pZCBQREZEb2N1bWVudEltYWdlOjpkZXN0cm95RGVjb2RlZERh
dGEoYm9vbCkKK3sKKyAgICBpZiAobV9uYXRpdmVQREZEb2N1bWVudCkKKyAgICAgICAgbV9uYXRp
dmVQREZEb2N1bWVudC0+Y2xlYXJTbmFwc2hvdCgpOworICAgIGRlY29kZWRTaXplQ2hhbmdlZCgp
OworfQorCit2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmRlY29kZWRTaXplQ2hhbmdlZCgpCit7Cisg
ICAgc2l6ZV90IG5ld01lbW9yeUNvc3QgPSBtX25hdGl2ZVBERkRvY3VtZW50ID8gbV9uYXRpdmVQ
REZEb2N1bWVudC0+c25hcHNob3RNZW1vcnlDb3N0KCkgOiAwOworICAgIGlmIChtX21lbW9yeUNv
c3QgPT0gbmV3TWVtb3J5Q29zdCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGltYWdlT2Jz
ZXJ2ZXIoKSkKKyAgICAgICAgaW1hZ2VPYnNlcnZlcigpLT5kZWNvZGVkU2l6ZUNoYW5nZWQoKnRo
aXMsIC1zdGF0aWNfY2FzdDxsb25nIGxvbmc+KG1fbWVtb3J5Q29zdCkgKyBuZXdNZW1vcnlDb3N0
KTsKKworICAgIG1fbWVtb3J5Q29zdCA9IG5ld01lbW9yeUNvc3Q7Cit9CisKK3ZvaWQgUERGRG9j
dW1lbnRJbWFnZTo6Y29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMoTGVuZ3RoJiBpbnRyaW5zaWNX
aWR0aCwgTGVuZ3RoJiBpbnRyaW5zaWNIZWlnaHQsIEZsb2F0U2l6ZSYgaW50cmluc2ljUmF0aW8p
Cit7CisgICAgLy8gRklYTUU6IElmIHdlIHdhbnQgc2l6ZSBuZWdvdGlhdGlvbiB3aXRoIFBERiBk
b2N1bWVudHMgYXMtaW1hZ2UsIHRoaXMgaXMgdGhlIHBsYWNlIHRvIGltcGxlbWVudCBpdCAoaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDk1KS4KKyAgICBJbWFnZTo6
Y29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMoaW50cmluc2ljV2lkdGgsIGludHJpbnNpY0hlaWdo
dCwgaW50cmluc2ljUmF0aW8pOworICAgIGludHJpbnNpY1JhdGlvID0gRmxvYXRTaXplKCk7Cit9
CisKK0ltYWdlRHJhd1Jlc3VsdCBQREZEb2N1bWVudEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQoreworICAgIGlmICgh
bV9uYXRpdmVQREZEb2N1bWVudCB8fCAhbV9uYXRpdmVQREZEb2N1bWVudC0+cGFnZUNvdW50KCkp
CisgICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7CisKKyAgICBjb250
ZXh0LmRyYXdOYXRpdmVQREZEb2N1bWVudCgqbV9uYXRpdmVQREZEb2N1bWVudCwgc2l6ZSgpLCBk
c3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKKyAgICBkZWNvZGVkU2l6ZUNoYW5nZWQoKTsKKwor
ICAgIGlmIChpbWFnZU9ic2VydmVyKCkpCisgICAgICAgIGltYWdlT2JzZXJ2ZXIoKS0+ZGlkRHJh
dygqdGhpcyk7CisKKyAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWREcmF3OworfQorCit2
b2lkIFBERkRvY3VtZW50SW1hZ2U6OmR1bXAoVGV4dFN0cmVhbSYgdHMpIGNvbnN0Cit7CisgICAg
SW1hZ2U6OmR1bXAodHMpOworICAgIGlmIChtX25hdGl2ZVBERkRvY3VtZW50KQorICAgICAgICBt
X25hdGl2ZVBERkRvY3VtZW50LT5kdW1wKHRzKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gRU5BQkxFKFBERkRPQ1VNRU5USU1BR0UpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QREZEb2N1bWVudEltYWdlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QREZEb2N1bWVudEltYWdlLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YjIzNmU1YjU0ODk0Nzk3NTRmYThlZDNlYTkyNjAwOWIzODgwNTYxMAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BERkRvY3VtZW50SW1hZ2UuaApA
QCAtMCwwICsxLDgwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjAgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFBERkRPQ1VNRU5USU1BR0Up
CisKKyNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJHcmFwaGljc1R5cGVzLmgiCisj
aW5jbHVkZSAiSW1hZ2UuaCIKKyNpbmNsdWRlICJQREZJbWFnZUNhY2hpbmdQb2xpY3kuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHcmFwaGljc0NvbnRleHQ7CitjbGFzcyBOYXRp
dmVQREZEb2N1bWVudDsKKworY2xhc3MgUERGRG9jdW1lbnRJbWFnZSBmaW5hbCA6IHB1YmxpYyBJ
bWFnZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxQREZEb2N1bWVudEltYWdlPiBjcmVhdGUo
SW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBQREZEb2N1bWVudEltYWdlKG9ic2VydmVyKSk7CisgICAgfQorCisgICAgV0VCQ09SRV9F
WFBPUlQgdW5zaWduZWQgY2FjaGluZ0NvdW50Rm9yVGVzdGluZygpIGNvbnN0OworICAgIHZvaWQg
c2V0UGRmSW1hZ2VDYWNoaW5nUG9saWN5KFBERkltYWdlQ2FjaGluZ1BvbGljeSk7CisgICAgCitw
cml2YXRlOgorICAgIFBERkRvY3VtZW50SW1hZ2UoSW1hZ2VPYnNlcnZlciopOworICAgIHZpcnR1
YWwgflBERkRvY3VtZW50SW1hZ2UoKTsKKworICAgIGJvb2wgaXNQREZEb2N1bWVudEltYWdlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgaGFzU2luZ2xlU2VjdXJp
dHlPcmlnaW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisKKyAgICAvLyBGSVhN
RTogSW1wbGVtZW50IHRoaXMgdG8gYmUgbGVzcyBjb25zZXJ2YXRpdmUuCisgICAgYm9vbCBjdXJy
ZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQorCisgICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
RmxvYXRTaXplIHNpemUoSW1hZ2VPcmllbnRhdGlvbiA9IEltYWdlT3JpZW50YXRpb246OkZyb21J
bWFnZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBkZWNvZGVkU2l6ZUNoYW5nZWQoKTsKKwor
ICAgIEVuY29kZWREYXRhU3RhdHVzIGRhdGFDaGFuZ2VkKGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBv
dmVycmlkZTsKKyAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YShib29sIC8qZGVzdHJveUFsbCov
ID0gdHJ1ZSkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIGNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25z
KExlbmd0aCYgaW50cmluc2ljV2lkdGgsIExlbmd0aCYgaW50cmluc2ljSGVpZ2h0LCBGbG9hdFNp
emUmIGludHJpbnNpY1JhdGlvKSBvdmVycmlkZTsKKyAgICBJbWFnZURyYXdSZXN1bHQgZHJhdyhH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSBvdmVycmlkZTsK
KworICAgIHZvaWQgZHVtcChXVEY6OlRleHRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKKyAgICAK
KyAgICBSZWZQdHI8TmF0aXZlUERGRG9jdW1lbnQ+IG1fbmF0aXZlUERGRG9jdW1lbnQ7CisgICAg
c2l6ZV90IG1fbWVtb3J5Q29zdCB7IDAgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19JTUFHRShQREZEb2N1bWVudEltYWdlKQorCisjZW5k
aWYgLy8gRU5BQkxFKFBERkRPQ1VNRU5USU1BR0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVBERkRvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVBERkRvY3VtZW50LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGE4
N2ExNzZlN2Y5MTNlMDMwZDRiODIwY2I4MjMxMzk4NjA2NDI0MQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtUERGRG9jdW1lbnQuaApA
QCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKENHKQorI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KKyNpZiBFTkFCTEUoUERGS0lUX0ZPUl9QREZET0NVTUVOVElNQUdFKQorT0JKQ19DTEFT
UyBQREZEb2N1bWVudDsKKyNlbHNlCit1c2luZyBDR1BERkRvY3VtZW50UmVmID0gc3RydWN0IENH
UERGRG9jdW1lbnQgKjsKKyNlbmRpZgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
I2lmIFVTRShDRykKKyNpZiBFTkFCTEUoUERGS0lUX0ZPUl9QREZET0NVTUVOVElNQUdFKQordXNp
bmcgUGxhdGZvcm1QREZEb2N1bWVudFB0ciA9IFJldGFpblB0cjxQREZEb2N1bWVudD47CisjZWxz
ZQordXNpbmcgUGxhdGZvcm1QREZEb2N1bWVudFB0ciA9IFJldGFpblB0cjxDR1BERkRvY3VtZW50
UmVmPjsKKyNlbmRpZgorI2Vsc2UKK3VzaW5nIFBsYXRmb3JtUERGRG9jdW1lbnRQdHIgPSB2b2lk
KjsKKyNlbmRpZgorCisjaWYgRU5BQkxFKFBERktJVF9GT1JfUERGRE9DVU1FTlRJTUFHRSkKK1dF
QkNPUkVfRVhQT1JUIFJldGFpblB0cjxDRk11dGFibGVEYXRhUmVmPiBjb252ZXJ0UG9zdFNjcmlw
dERhdGFUb1BERihSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIHBvc3RTY3JpcHREYXRhKTsKKyNlbmRp
ZgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENh
aXJvLmNwcAppbmRleCAxNDZhNWVjYWQ1MDUxNDVjOWY4OTUwNmVjOGRiMDU3NzIzNmViM2Y3Li5j
NzMzMDNkOTNmYzQzODgyMjBlYTY1ZmE3YTdhMmMxOTNhNDQ0MGY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fp
cm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBo
aWNzQ29udGV4dEltcGxDYWlyby5jcHAKQEAgLTI3Niw2ICsyNzYsMTEgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYgaW1hZ2UsIGNv
bnN0IEZsb2F0U2kKICAgICBDYWlybzo6ZHJhd1BsYXRmb3JtSW1hZ2UobV9wbGF0Zm9ybUNvbnRl
eHQsIGltYWdlLnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIHsgb3B0
aW9ucywgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSB9LCBzdGF0ZS5hbHBoYSwgQ2Fp
cm86OlNoYWRvd1N0YXRlKHN0YXRlKSk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENh
aXJvOjpkcmF3TmF0aXZlUERGRG9jdW1lbnQoTmF0aXZlUERGRG9jdW1lbnQmLCBjb25zdCBGbG9h
dFNpemUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYpCit7CisgICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KK30KKwog
dm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdQYXR0ZXJuKE5hdGl2ZUltYWdlJiBp
bWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0
dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYg
c3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgVU5V
U0VEX1BBUkFNKHNwYWNpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaAppbmRl
eCAxYmU1YTAyZDRkNjNjMTkwMzM4NTEzYTk1ZWU0NTNkNzNhMDE0Njk2Li5mNWM0NGZiZTFjNDQ2
MDg5YWJkYzA2M2UzZjkxODRjZWJlYWMwNGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBs
Q2Fpcm8uaApAQCAtNzMsNiArNzMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRyYXdJbWFnZUJ1
ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3TmF0aXZl
SW1hZ2UoTmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBGbG9hdFJlY3QmLCBj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwor
ICAgIHZvaWQgZHJhd05hdGl2ZVBERkRvY3VtZW50KE5hdGl2ZVBERkRvY3VtZW50JiwgY29uc3Qg
RmxvYXRTaXplJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdQYXR0ZXJuKE5hdGl2
ZUltYWdlJiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwg
Y29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZHJhd1JlY3QoY29u
c3QgRmxvYXRSZWN0JiwgZmxvYXQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlUERGRG9jdW1lbnRDRy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVQREZEb2N1bWVudENHLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5hOTQ1ZWE1OTU3MGMwZThlNTg0ZGM3YTliOWFkOTk2MWNkOTc3Y2Q1Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlUERG
RG9jdW1lbnRDRy5jcHAKQEAgLTAsMCArMSwxMDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk5h
dGl2ZVBERkRvY3VtZW50LmgiCisKKyNpZiAhRU5BQkxFKFBERktJVF9GT1JfUERGRE9DVU1FTlRJ
TUFHRSkKKworI2luY2x1ZGUgPENvcmVHcmFwaGljcy9DR1BERkRvY3VtZW50Lmg+CisjaWYgUExB
VEZPUk0oQ09DT0EpCisjaW5jbHVkZSA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KKyNl
bHNlCisjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NHQ29udGV4dC5oPgorI2VuZGlmCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworUmVmUHRyPE5hdGl2ZVBERkRvY3VtZW50PiBOYXRpdmVQREZEb2N1
bWVudDo6Y3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKK3sKKyAgICBhdXRvIGRhdGFQcm92aWRl
ciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoQ0ZEYXRhKGRhdGEuY3JlYXRlQ0ZE
YXRhKCkuZ2V0KCkpKTsKKyAgICBpZiAoIWRhdGFQcm92aWRlcikKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgCisgICAgYXV0byBkb2N1bWVudCA9IGFkb3B0Q0YoQ0dQREZEb2N1bWVudENy
ZWF0ZVdpdGhQcm92aWRlcihkYXRhUHJvdmlkZXIuZ2V0KCkpKTsKKyAgICBpZiAoIWRvY3VtZW50
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBhZG9wdFJlZihuZXcgTmF0
aXZlUERGRG9jdW1lbnQoZGF0YSwgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBXVEZNb3Zl
KGRvY3VtZW50KSkpOworfQorCit2b2lkIE5hdGl2ZVBERkRvY3VtZW50Ojpjb21wdXRlQm91bmRz
Rm9yQ3VycmVudFBhZ2UoKQoreworICAgIEFTU0VSVChwYWdlQ291bnQoKSA+IDApOworICAgIENH
UERGUGFnZVJlZiBjZ1BhZ2UgPSBDR1BERkRvY3VtZW50R2V0UGFnZShtX3BsYXRmb3JtUERGRG9j
dW1lbnQuZ2V0KCksIDEpOworICAgIENHUmVjdCBtZWRpYUJveCA9IENHUERGUGFnZUdldEJveFJl
Y3QoY2dQYWdlLCBrQ0dQREZNZWRpYUJveCk7CisKKyAgICAvLyBHZXQgY3JvcCBib3ggKG5vdCBh
bHdheXMgdGhlcmUpLiBJZiBub3QsIHVzZSBtZWRpYSBib3guCisgICAgQ0dSZWN0IHIgPSBDR1BE
RlBhZ2VHZXRCb3hSZWN0KGNnUGFnZSwga0NHUERGQ3JvcEJveCk7CisgICAgaWYgKCFDR1JlY3RJ
c0VtcHR5KHIpKQorICAgICAgICBtX2Nyb3BCb3ggPSByOworICAgIGVsc2UKKyAgICAgICAgbV9j
cm9wQm94ID0gbWVkaWFCb3g7CisKKyAgICBtX3JvdGF0aW9uRGVncmVlcyA9IENHUERGUGFnZUdl
dFJvdGF0aW9uQW5nbGUoY2dQYWdlKTsKK30KKwordW5zaWduZWQgTmF0aXZlUERGRG9jdW1lbnQ6
OnBhZ2VDb3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIENHUERGRG9jdW1lbnRHZXROdW1iZXJP
ZlBhZ2VzKG1fcGxhdGZvcm1QREZEb2N1bWVudC5nZXQoKSk7Cit9CisKK3N0YXRpYyB2b2lkIGFw
cGx5Um90YXRpb25Gb3JQYWludGluZyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIEZsb2F0U2l6
ZSBzaXplLCBpbnQgcm90YXRpb25EZWdyZWVzKQoreworICAgIGlmIChyb3RhdGlvbkRlZ3JlZXMg
PT0gOTApCisgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKDAsIHNpemUuaGVpZ2h0KCkpOworICAg
IGVsc2UgaWYgKHJvdGF0aW9uRGVncmVlcyA9PSAxODApCisgICAgICAgIGNvbnRleHQudHJhbnNs
YXRlKHNpemUpOworICAgIGVsc2UgaWYgKHJvdGF0aW9uRGVncmVlcyA9PSAyNzApCisgICAgICAg
IGNvbnRleHQudHJhbnNsYXRlKHNpemUud2lkdGgoKSwgMCk7CisKKyAgICBjb250ZXh0LnJvdGF0
ZSgtZGVnMnJhZChzdGF0aWNfY2FzdDxmbG9hdD4ocm90YXRpb25EZWdyZWVzKSkpOworfQorCit2
b2lkIE5hdGl2ZVBERkRvY3VtZW50OjpkcmF3UERGUGFnZShHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplKQoreworICAgIGFwcGx5Um90YXRpb25Gb3JQ
YWludGluZyhjb250ZXh0LCBpbWFnZVNpemUsIG1fcm90YXRpb25EZWdyZWVzKTsKKworICAgIGNv
bnRleHQudHJhbnNsYXRlKC1tX2Nyb3BCb3gubG9jYXRpb24oKSk7CisKKyNpZiBQTEFURk9STShD
T0NPQSkKKyAgICBDR0NvbnRleHREcmF3UERGUGFnZVdpdGhBbm5vdGF0aW9ucyhjb250ZXh0LnBs
YXRmb3JtQ29udGV4dCgpLCBDR1BERkRvY3VtZW50R2V0UGFnZShtX3BsYXRmb3JtUERGRG9jdW1l
bnQuZ2V0KCksIDEpLCBudWxscHRyKTsKKyNlbHNlCisgICAgQ0dDb250ZXh0RHJhd1BERlBhZ2Uo
Y29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgQ0dQREZEb2N1bWVudEdldFBhZ2UobV9wbGF0Zm9y
bVBERkRvY3VtZW50LmdldCgpLCAxKSk7CisjZW5kaWYKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gIUVOQUJMRShQREZLSVRfRk9SX1BERkRPQ1VNRU5USU1BR0UpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVu
dEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3Vt
ZW50SW1hZ2UuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYzQ5ODVmOWM1OWFh
YWNkM2RmNWI1ZGM1NmI5ZDg5MDg0ODFiZjliLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BE
RkRvY3VtZW50SW1hZ2UuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMzg5ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMTMgQXBwbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJQREZEb2N1bWVudEltYWdlLmgiCi0K
LSNpZiBVU0UoQ0cpCi0KLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotI2luY2x1ZGUgPENvcmVH
cmFwaGljcy9Db3JlR3JhcGhpY3MuaD4KLSNpbmNsdWRlIDxJbWFnZUlPL0ltYWdlSU8uaD4KLSNl
bmRpZgotCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCi0jaW5jbHVkZSAiSW1hZ2VCdWZm
ZXIuaCIKLSNpbmNsdWRlICJJbWFnZU9ic2VydmVyLmgiCi0jaW5jbHVkZSAiSW50UmVjdC5oIgot
I2luY2x1ZGUgIkxlbmd0aC5oIgotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jaW5jbHVk
ZSAiU2hhcmVkQnVmZmVyLmgiCi0jaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NHQ29udGV4dC5oPgot
I2luY2x1ZGUgPENvcmVHcmFwaGljcy9DR1BERkRvY3VtZW50Lmg+Ci0jaW5jbHVkZSA8cGFsL3Nw
aS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KLSNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgotI2lu
Y2x1ZGUgPHd0Zi9SQU1TaXplLmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotI2luY2x1
ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+
Ci0KLSNpZiAhUExBVEZPUk0oQ09DT0EpCi0jaW5jbHVkZSAiSW1hZ2VTb3VyY2VDRy5oIgotI2Vu
ZGlmCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUERGRG9jdW1lbnRJbWFnZTo6UERGRG9jdW1l
bnRJbWFnZShJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKLSAgICA6IEltYWdlKG9ic2VydmVyKQot
ewotfQotCi1QREZEb2N1bWVudEltYWdlOjp+UERGRG9jdW1lbnRJbWFnZSgpID0gZGVmYXVsdDsK
LQotU3RyaW5nIFBERkRvY3VtZW50SW1hZ2U6OmZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gInBkZiI7Ci19Ci0KLUZsb2F0U2l6ZSBQREZEb2N1bWVudEltYWdlOjpzaXpl
KEltYWdlT3JpZW50YXRpb24pIGNvbnN0Ci17Ci0gICAgRmxvYXRTaXplIGV4cGFuZGVkQ3JvcEJv
eFNpemUgPSBGbG9hdFNpemUoZXhwYW5kZWRJbnRTaXplKG1fY3JvcEJveC5zaXplKCkpKTsKLQot
ICAgIGlmIChtX3JvdGF0aW9uRGVncmVlcyA9PSA5MCB8fCBtX3JvdGF0aW9uRGVncmVlcyA9PSAy
NzApCi0gICAgICAgIHJldHVybiBleHBhbmRlZENyb3BCb3hTaXplLnRyYW5zcG9zZWRTaXplKCk7
Ci0gICAgcmV0dXJuIGV4cGFuZGVkQ3JvcEJveFNpemU7Ci19Ci0KLXZvaWQgUERGRG9jdW1lbnRJ
bWFnZTo6Y29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMoTGVuZ3RoJiBpbnRyaW5zaWNXaWR0aCwg
TGVuZ3RoJiBpbnRyaW5zaWNIZWlnaHQsIEZsb2F0U2l6ZSYgaW50cmluc2ljUmF0aW8pCi17Ci0g
ICAgLy8gRklYTUU6IElmIHdlIHdhbnQgc2l6ZSBuZWdvdGlhdGlvbiB3aXRoIFBERiBkb2N1bWVu
dHMgYXMtaW1hZ2UsIHRoaXMgaXMgdGhlIHBsYWNlIHRvIGltcGxlbWVudCBpdCAoaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDk1KS4KLSAgICBJbWFnZTo6Y29tcHV0
ZUludHJpbnNpY0RpbWVuc2lvbnMoaW50cmluc2ljV2lkdGgsIGludHJpbnNpY0hlaWdodCwgaW50
cmluc2ljUmF0aW8pOwotICAgIGludHJpbnNpY1JhdGlvID0gRmxvYXRTaXplKCk7Ci19Ci0KLUVu
Y29kZWREYXRhU3RhdHVzIFBERkRvY3VtZW50SW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxsRGF0
YVJlY2VpdmVkKQotewotICAgIEFTU0VSVCghbV9kb2N1bWVudCk7Ci0gICAgaWYgKGFsbERhdGFS
ZWNlaXZlZCAmJiAhbV9kb2N1bWVudCkgewotICAgICAgICBjcmVhdGVQREZEb2N1bWVudCgpOwot
Ci0gICAgICAgIGlmIChwYWdlQ291bnQoKSkgewotICAgICAgICAgICAgbV9oYXNQYWdlID0gdHJ1
ZTsKLSAgICAgICAgICAgIGNvbXB1dGVCb3VuZHNGb3JDdXJyZW50UGFnZSgpOwotICAgICAgICB9
Ci0gICAgfQotICAgIHJldHVybiBtX2RvY3VtZW50ID8gRW5jb2RlZERhdGFTdGF0dXM6OkNvbXBs
ZXRlIDogRW5jb2RlZERhdGFTdGF0dXM6OlVua25vd247Ci19Ci0KLXZvaWQgUERGRG9jdW1lbnRJ
bWFnZTo6c2V0UGRmSW1hZ2VDYWNoaW5nUG9saWN5KFBERkltYWdlQ2FjaGluZ1BvbGljeSBwZGZJ
bWFnZUNhY2hpbmdQb2xpY3kpCi17Ci0gICAgaWYgKG1fcGRmSW1hZ2VDYWNoaW5nUG9saWN5ID09
IHBkZkltYWdlQ2FjaGluZ1BvbGljeSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9wZGZJbWFn
ZUNhY2hpbmdQb2xpY3kgPSBwZGZJbWFnZUNhY2hpbmdQb2xpY3k7Ci0gICAgZGVzdHJveURlY29k
ZWREYXRhKCk7Ci19Ci0KLWJvb2wgUERGRG9jdW1lbnRJbWFnZTo6Y2FjaGVQYXJhbWV0ZXJzTWF0
Y2goR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCkgY29uc3QKLXsKLSAgICAvLyBPbGQgYW5kIG5ldyBzb3Vy
Y2UgcmVjdGFuZ2xlcyBoYXZlIHRvIG1hdGNoLgotICAgIGlmIChzcmNSZWN0ICE9IG1fY2FjaGVk
U291cmNlUmVjdCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gT2xkIGFuZCBuZXcg
c2NhbGluZyBmYWN0b3JzICJkZXN0IC8gc3JjIiBoYXZlIHRvIG1hdGNoLgotICAgIGlmIChkc3RS
ZWN0LnNpemUoKSAhPSBtX2NhY2hlZERlc3RpbmF0aW9uUmVjdC5zaXplKCkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIC8vIG1fY2FjaGVkSW1hZ2VSZWN0IGNhbiBiZSBtb3ZlZCBpZiBz
cmNSZWN0IGFuZCBkc3RSZWN0LnNpemUoKSBkaWQgbm90IGNoYW5nZS4KLSAgICBGbG9hdFJlY3Qg
bW92ZWRDYWNoZWRJbWFnZVJlY3QgPSBtX2NhY2hlZEltYWdlUmVjdDsKLSAgICBtb3ZlZENhY2hl
ZEltYWdlUmVjdC5tb3ZlKEZsb2F0U2l6ZShkc3RSZWN0LmxvY2F0aW9uKCkgLSBtX2NhY2hlZERl
c3RpbmF0aW9uUmVjdC5sb2NhdGlvbigpKSk7Ci0KLSAgICAvLyBtb3ZlZENhY2hlZEltYWdlUmVj
dCBoYXMgdG8gY29udGFpbiB0aGUgd2hvbGUgZGlydHkgcmVjdGFuZ2xlLgotICAgIEZsb2F0UmVj
dCBkaXJ0eVJlY3QgPSBpbnRlcnNlY3Rpb24oY29udGV4dC5jbGlwQm91bmRzKCksIGRzdFJlY3Qp
OwotICAgIGlmICghbW92ZWRDYWNoZWRJbWFnZVJlY3QuY29udGFpbnMoZGlydHlSZWN0KSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gT2xkIGFuZCBuZXcgY29udGV4dCBzY2FsaW5n
IGZhY3RvcnMgaGF2ZSB0byBtYXRjaCBhcyB3ZWxsLgotICAgIEFmZmluZVRyYW5zZm9ybTo6RGVj
b21wb3NlZFR5cGUgZGVjb21wb3NlZFRyYW5zZm9ybTsKLSAgICBjb250ZXh0LmdldENUTShHcmFw
aGljc0NvbnRleHQ6OkRlZmluaXRlbHlJbmNsdWRlRGV2aWNlU2NhbGUpLmRlY29tcG9zZShkZWNv
bXBvc2VkVHJhbnNmb3JtKTsKLQotICAgIEFmZmluZVRyYW5zZm9ybTo6RGVjb21wb3NlZFR5cGUg
Y2FjaGVkRGVjb21wb3NlZFRyYW5zZm9ybTsKLSAgICBtX2NhY2hlZFRyYW5zZm9ybS5kZWNvbXBv
c2UoY2FjaGVkRGVjb21wb3NlZFRyYW5zZm9ybSk7Ci0gICAgaWYgKGRlY29tcG9zZWRUcmFuc2Zv
cm0uc2NhbGVYICE9IGNhY2hlZERlY29tcG9zZWRUcmFuc2Zvcm0uc2NhbGVYIHx8IGRlY29tcG9z
ZWRUcmFuc2Zvcm0uc2NhbGVZICE9IGNhY2hlZERlY29tcG9zZWRUcmFuc2Zvcm0uc2NhbGVZKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotc3RhdGljIHZv
aWQgdHJhbnNmb3JtQ29udGV4dEZvclBhaW50aW5nKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QpCi17Ci0g
ICAgZmxvYXQgaFNjYWxlID0gZHN0UmVjdC53aWR0aCgpIC8gc3JjUmVjdC53aWR0aCgpOwotICAg
IGZsb2F0IHZTY2FsZSA9IGRzdFJlY3QuaGVpZ2h0KCkgLyBzcmNSZWN0LmhlaWdodCgpOwotCi0g
ICAgaWYgKGhTY2FsZSAhPSB2U2NhbGUpIHsKLSAgICAgICAgZmxvYXQgbWluaW11bVNjYWxlID0g
c3RkOjptYXgoKGRzdFJlY3Qud2lkdGgoKSAtIDAuNSkgLyBzcmNSZWN0LndpZHRoKCksIChkc3RS
ZWN0LmhlaWdodCgpIC0gMC41KSAvIHNyY1JlY3QuaGVpZ2h0KCkpOwotICAgICAgICBmbG9hdCBt
YXhpbXVtU2NhbGUgPSBzdGQ6Om1pbigoZHN0UmVjdC53aWR0aCgpICsgMC41KSAvIHNyY1JlY3Qu
d2lkdGgoKSwgKGRzdFJlY3QuaGVpZ2h0KCkgKyAwLjUpIC8gc3JjUmVjdC5oZWlnaHQoKSk7Ci0K
LSAgICAgICAgLy8gSWYgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgdHdvIHNjYWxlcyBpcyBk
dWUgdG8gaW50ZWdlciByb3VuZGluZyBvZiBpbWFnZSBzaXplcywKLSAgICAgICAgLy8gdXNlIHRo
ZSBzbWFsbGVyIG9mIHRoZSB0d28gb3JpZ2luYWwgc2NhbGVzIHRvIGVuc3VyZSB0aGF0IHRoZSBp
bWFnZSBmaXRzIGluc2lkZSB0aGUKLSAgICAgICAgLy8gc3BhY2Ugb3JpZ2luYWxseSBhbGxvY2F0
ZWQgZm9yIGl0LgotICAgICAgICBpZiAobWluaW11bVNjYWxlIDw9IG1heGltdW1TY2FsZSkgewot
ICAgICAgICAgICAgaFNjYWxlID0gc3RkOjptaW4oaFNjYWxlLCB2U2NhbGUpOwotICAgICAgICAg
ICAgdlNjYWxlID0gaFNjYWxlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gZHJhd1BERlBh
Z2UoKSByZWxpZXMgb24gZHJhd2luZyB0aGUgd2hvbGUgUERGIGludG8gYSBjb250ZXh0IHN0YXJ0
aW5nIGF0ICgwLCAwKS4gV2UgbmVlZAotICAgIC8vIHRvIHRyYW5zZm9ybSB0aGUgZGVzdGluYXRp
b24gY29udGV4dCBzdWNoIHRoYXQgc3JjUmVjdCBvZiB0aGUgc291cmNlIGNvbnRleHQgd2lsbCBi
ZSBkcmF3bgotICAgIC8vIGluIGRzdFJlY3Qgb2YgZGVzdGluYXRpb24gY29udGV4dC4KLSAgICBj
b250ZXh0LnRyYW5zbGF0ZShkc3RSZWN0LmxvY2F0aW9uKCkgLSBzcmNSZWN0LmxvY2F0aW9uKCkp
OwotICAgIGNvbnRleHQuc2NhbGUoRmxvYXRTaXplKGhTY2FsZSwgLXZTY2FsZSkpOwotICAgIGNv
bnRleHQudHJhbnNsYXRlKDAsIC1zcmNSZWN0LmhlaWdodCgpKTsKLX0KLQotLy8gVG8gYXZvaWQg
dGhlIGpldHNhbSBvbiBpT1MsIHdlIGFyZSBnb2luZyB0byBsaW1pdCB0aGUgc2l6ZSBvZiBhbGwg
dGhlIFBERiBjYWNoZWRJbWFnZXMgdG8gYmUgNjRNQi4KLXN0YXRpYyBjb25zdCBzaXplX3Qgc19t
YXhDYWNoZWRJbWFnZVNpZGUgPSA0ICogMTAyNDsKLXN0YXRpYyBjb25zdCBzaXplX3Qgc19tYXhD
YWNoZWRJbWFnZUFyZWEgPSBzX21heENhY2hlZEltYWdlU2lkZSAqIHNfbWF4Q2FjaGVkSW1hZ2VT
aWRlOwotCi1zdGF0aWMgY29uc3Qgc2l6ZV90IHNfbWF4RGVjb2RlZERhdGFTaXplID0gc19tYXhD
YWNoZWRJbWFnZUFyZWEgKiA0Owotc3RhdGljIHNpemVfdCBzX2FsbERlY29kZWREYXRhU2l6ZSA9
IDA7Ci0KLXN0YXRpYyBGbG9hdFJlY3QgY2FjaGVkSW1hZ2VSZWN0KEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0KQotewotICAgIEZsb2F0UmVjdCBkaXJ0
eVJlY3QgPSBjb250ZXh0LmNsaXBCb3VuZHMoKTsKLQotICAgIC8vIENhbGN1bGF0ZSB0aGUgbWF4
aW11bSByZWN0YW5nbGUgd2UgY2FuIGNhY2hlIGFyb3VuZCB0aGUgY2VudGVyIG9mIHRoZSBjbGlw
cGluZyBib3VuZHMuCi0gICAgRmxvYXRTaXplIG1heFNpemUgPSBzX21heENhY2hlZEltYWdlU2lk
ZSAvIGNvbnRleHQuc2NhbGVGYWN0b3IoKTsKLSAgICBGbG9hdFBvaW50IG1pbkxvY2F0aW9uID0g
RmxvYXRQb2ludChkaXJ0eVJlY3QuY2VudGVyKCkgLSBtYXhTaXplIC8gMik7Ci0KLSAgICAvLyBF
bnN1cmUgdGhlIGNsaXBwaW5nIGJvdW5kcyBhcmUgYWxsIGluY2x1ZGVkIGJ1dCB3aXRoaW4gdGhl
IGJvdW5kcyBvZiB0aGUgZHN0UmVjdAotICAgIHJldHVybiBpbnRlcnNlY3Rpb24odW5pb25SZWN0
KGRpcnR5UmVjdCwgRmxvYXRSZWN0KG1pbkxvY2F0aW9uLCBtYXhTaXplKSksIGRzdFJlY3QpOwot
fQotCi12b2lkIFBERkRvY3VtZW50SW1hZ2U6OmRlY29kZWRTaXplQ2hhbmdlZChzaXplX3QgbmV3
Q2FjaGVkQnl0ZXMpCi17Ci0gICAgaWYgKCFtX2NhY2hlZEJ5dGVzICYmICFuZXdDYWNoZWRCeXRl
cykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkKLSAgICAgICAg
aW1hZ2VPYnNlcnZlcigpLT5kZWNvZGVkU2l6ZUNoYW5nZWQoKnRoaXMsIC1zdGF0aWNfY2FzdDxs
b25nIGxvbmc+KG1fY2FjaGVkQnl0ZXMpICsgbmV3Q2FjaGVkQnl0ZXMpOwotCi0gICAgQVNTRVJU
KHNfYWxsRGVjb2RlZERhdGFTaXplID49IG1fY2FjaGVkQnl0ZXMpOwotICAgIC8vIFVwZGF0ZSB3
aXRoIHRoZSBkaWZmZXJlbmNlIGluIHR3byBzdGVwcyB0byBhdm9pZCB1bnNpZ25lZCB1bmRlcmZs
b3cgc3VidHJhY3Rpb24uCi0gICAgc19hbGxEZWNvZGVkRGF0YVNpemUgLT0gbV9jYWNoZWRCeXRl
czsKLSAgICBzX2FsbERlY29kZWREYXRhU2l6ZSArPSBuZXdDYWNoZWRCeXRlczsKLQotICAgIG1f
Y2FjaGVkQnl0ZXMgPSBuZXdDYWNoZWRCeXRlczsKLX0KLQotdm9pZCBQREZEb2N1bWVudEltYWdl
Ojp1cGRhdGVDYWNoZWRJbWFnZUlmTmVlZGVkKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QpCi17Ci0gICAg
Ly8gQ2xpcHBlZCBvcHRpb24gaXMgZm9yIHRlc3Rpbmcgb25seS4gRm9yY2UgcmUtY2FjaGluZyB0
aGUgUERGIHdpdGggZWFjaCBkcmF3LgotICAgIGJvb2wgZm9yY2VVcGRhdGVDYWNoZWRJbWFnZSA9
IG1fcGRmSW1hZ2VDYWNoaW5nUG9saWN5ID09IFBERkltYWdlQ2FjaGluZ1BvbGljeTo6Q2xpcEJv
dW5kc09ubHkgfHwgIW1fY2FjaGVkSW1hZ2VCdWZmZXI7Ci0gICAgaWYgKCFmb3JjZVVwZGF0ZUNh
Y2hlZEltYWdlICYmIGNhY2hlUGFyYW1ldGVyc01hdGNoKGNvbnRleHQsIGRzdFJlY3QsIHNyY1Jl
Y3QpKSB7Ci0gICAgICAgIC8vIEFkanVzdCB0aGUgdmlldy1wb3J0IHJlY3RhbmdsZXMgaWYgbm8g
cmUtY2FjaGluZyB3aWxsIGhhcHBlbi4KLSAgICAgICAgbV9jYWNoZWRJbWFnZVJlY3QubW92ZShG
bG9hdFNpemUoZHN0UmVjdC5sb2NhdGlvbigpIC0gbV9jYWNoZWREZXN0aW5hdGlvblJlY3QubG9j
YXRpb24oKSkpOwotICAgICAgICBtX2NhY2hlZERlc3RpbmF0aW9uUmVjdCA9IGRzdFJlY3Q7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBzd2l0Y2ggKG1fcGRmSW1hZ2VDYWNoaW5nUG9s
aWN5KSB7Ci0gICAgY2FzZSBQREZJbWFnZUNhY2hpbmdQb2xpY3k6OkRpc2FibGVkOgotICAgICAg
ICByZXR1cm47Ci0gICAgY2FzZSBQREZJbWFnZUNhY2hpbmdQb2xpY3k6OkJlbG93TWVtb3J5TGlt
aXQ6Ci0gICAgICAgIC8vIEtlZXAgdGhlIG1lbW9yeSB1c2VkIGJ5IHRoZSBjYWNoZWQgaW1hZ2Ug
YmVsb3cgc29tZSB0aHJlc2hvbGQsIG90aGVyd2lzZSBXZWJLaXQgcHJvY2VzcwotICAgICAgICAv
LyB3aWxsIGpldHNhbSBpZiBpdCBleGNlZWRzIGl0cyBtZW1vcnkgbGltaXQuIE9ubHkgYSByZWN0
YW5nbGUgZnJvbSB0aGUgUERGIG1heSBiZSBjYWNoZWQuCi0gICAgICAgIG1fY2FjaGVkSW1hZ2VS
ZWN0ID0gY2FjaGVkSW1hZ2VSZWN0KGNvbnRleHQsIGRzdFJlY3QpOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIFBERkltYWdlQ2FjaGluZ1BvbGljeTo6Q2xpcEJvdW5kc09ubHk6Ci0gICAgICAg
IG1fY2FjaGVkSW1hZ2VSZWN0ID0gaW50ZXJzZWN0aW9uKGNvbnRleHQuY2xpcEJvdW5kcygpLCBk
c3RSZWN0KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQREZJbWFnZUNhY2hpbmdQb2xpY3k6
OkVuYWJsZWQ6Ci0gICAgICAgIG1fY2FjaGVkSW1hZ2VSZWN0ID0gZHN0UmVjdDsKLSAgICAgICAg
YnJlYWs7Ci0gICAgfQotCi0gICAgRmxvYXRTaXplIGNhY2hlZEltYWdlU2l6ZSA9IEZsb2F0UmVj
dChlbmNsb3NpbmdJbnRSZWN0KG1fY2FjaGVkSW1hZ2VSZWN0KSkuc2l6ZSgpOwotCi0gICAgLy8g
Q2FjaGUgdGhlIFBERiBpbWFnZSBvbmx5IGlmIHRoZSBzaXplIG9mIHRoZSBuZXcgaW1hZ2Ugd29u
J3QgZXhjZWVkIHRoZSBjYWNoZSB0aHJlc2hvbGQuCi0gICAgaWYgKG1fcGRmSW1hZ2VDYWNoaW5n
UG9saWN5ID09IFBERkltYWdlQ2FjaGluZ1BvbGljeTo6QmVsb3dNZW1vcnlMaW1pdCkgewotICAg
ICAgICBJbnRTaXplIHNjYWxlZFNpemUgPSBJbWFnZUJ1ZmZlcjo6Y29tcGF0aWJsZUJ1ZmZlclNp
emUoY2FjaGVkSW1hZ2VTaXplLCBjb250ZXh0KTsKLSAgICAgICAgaWYgKHNfYWxsRGVjb2RlZERh
dGFTaXplICsgc2NhbGVkU2l6ZS51bmNsYW1wZWRBcmVhKCkgKiA0IC0gbV9jYWNoZWRCeXRlcyA+
IHNfbWF4RGVjb2RlZERhdGFTaXplKSB7Ci0gICAgICAgICAgICBkZXN0cm95RGVjb2RlZERhdGEo
KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIG1fY2FjaGVk
SW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjYWNoZWRJ
bWFnZVNpemUsIGNvbnRleHQpOwotICAgIGlmICghbV9jYWNoZWRJbWFnZUJ1ZmZlcikgewotICAg
ICAgICBkZXN0cm95RGVjb2RlZERhdGEoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IGF1dG8mIGJ1ZmZlckNvbnRleHQgPSBtX2NhY2hlZEltYWdlQnVmZmVyLT5jb250ZXh0KCk7Ci0g
ICAgLy8gV2UgbmVlZCB0byB0cmFuc2Zvcm0gdGhlIGNvb3JkaW5hdGUgc3lzdGVtIHN1Y2ggdGhh
dCB0b3AtbGVmdCBvZiBtX2NhY2hlZEltYWdlUmVjdCB3aWxsIGJlIG1hcHBlZCB0byB0aGUKLSAg
ICAvLyB0b3AtbGVmdCBvZiBkc3RSZWN0LiBBbHRob3VnaCBvbmx5IG1fY2FjaGVkSW1hZ2VSZWN0
LnNpemUoKSBvZiB0aGUgaW1hZ2UgY29waWVkLCB0aGUgc2l6ZXMgb2Ygc3JjUmVjdAotICAgIC8v
IGFuZCBkc3RSZWN0IHNob3VsZCBiZSBwYXNzZWQgdG8gdGhpcyBmdW5jdGlvbiBiZWNhdXNlIHRo
ZXkgYXJlIHVzZWQgdG8gY2FsY3VsYXRlIHRoZSBpbWFnZSBzY2FsaW5nLgotICAgIHRyYW5zZm9y
bUNvbnRleHRGb3JQYWludGluZyhidWZmZXJDb250ZXh0LCBkc3RSZWN0LCBGbG9hdFJlY3QobV9j
YWNoZWRJbWFnZVJlY3QubG9jYXRpb24oKSwgc3JjUmVjdC5zaXplKCkpKTsKLSAgICBkcmF3UERG
UGFnZShidWZmZXJDb250ZXh0KTsKLQotICAgIG1fY2FjaGVkVHJhbnNmb3JtID0gY29udGV4dC5n
ZXRDVE0oR3JhcGhpY3NDb250ZXh0OjpEZWZpbml0ZWx5SW5jbHVkZURldmljZVNjYWxlKTsKLSAg
ICBtX2NhY2hlZERlc3RpbmF0aW9uUmVjdCA9IGRzdFJlY3Q7Ci0gICAgbV9jYWNoZWRTb3VyY2VS
ZWN0ID0gc3JjUmVjdDsKLSAgICArK21fY2FjaGluZ0NvdW50Rm9yVGVzdGluZzsKLQotICAgIElu
dFNpemUgYmFja2VuZFNpemUgPSBtX2NhY2hlZEltYWdlQnVmZmVyLT5iYWNrZW5kU2l6ZSgpOwot
ICAgIGRlY29kZWRTaXplQ2hhbmdlZChiYWNrZW5kU2l6ZS51bmNsYW1wZWRBcmVhKCkgKiA0KTsK
LX0KLQotSW1hZ2VEcmF3UmVzdWx0IFBERkRvY3VtZW50SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCi17Ci0gICAgaWYg
KCFtX2RvY3VtZW50IHx8ICFtX2hhc1BhZ2UpCi0gICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1
bHQ6OkRpZE5vdGhpbmc7Ci0KLSAgICB1cGRhdGVDYWNoZWRJbWFnZUlmTmVlZGVkKGNvbnRleHQs
IGRzdFJlY3QsIHNyY1JlY3QpOwotCi0gICAgewotICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0
ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7Ci0gICAgICAgIGNvbnRleHQuc2V0Q29tcG9zaXRl
T3BlcmF0aW9uKG9wdGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSk7Ci0KLSAgICAgICAgaWYgKG1f
Y2FjaGVkSW1hZ2VCdWZmZXIpIHsKLSAgICAgICAgICAgIC8vIERyYXcgdGhlIEltYWdlQnVmZmVy
ICdtX2NhY2hlZEltYWdlQnVmZmVyJyB0byB0aGUgcmVjdGFuZ2xlICdtX2NhY2hlZEltYWdlUmVj
dCcKLSAgICAgICAgICAgIC8vIG9uIHRoZSBkZXN0aW5hdGlvbiBjb250ZXh0LiBTaW5jZSB0aGUg
cGl4ZWxzIG9mIHRoZSByZWN0YW5nbGUgJ21fY2FjaGVkSW1hZ2VSZWN0JwotICAgICAgICAgICAg
Ly8gb2YgdGhlIHNvdXJjZSBQREYgd2FzIGNvcGllZCB0byAnbV9jYWNoZWRJbWFnZUJ1ZmZlcics
IHRoZSBzaXplcyBvZiB0aGUgc291cmNlCi0gICAgICAgICAgICAvLyBhbmQgdGhlIGRlc3RpbmF0
aW9uIHJlY3RhbmdsZXMgd2lsbCBiZSBlcXVhbCBhbmQgbm8gc2NhbGluZyB3aWxsIGJlIG5lZWRl
ZCBoZXJlLgotICAgICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKm1fY2FjaGVkSW1h
Z2VCdWZmZXIsIG1fY2FjaGVkSW1hZ2VSZWN0KTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsK
LSAgICAgICAgICAgIHRyYW5zZm9ybUNvbnRleHRGb3JQYWludGluZyhjb250ZXh0LCBkc3RSZWN0
LCBzcmNSZWN0KTsKLSAgICAgICAgICAgIGRyYXdQREZQYWdlKGNvbnRleHQpOwotICAgICAgICB9
Ci0gICAgfQotCi0gICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkKLSAgICAgICAgaW1hZ2VPYnNlcnZl
cigpLT5kaWREcmF3KCp0aGlzKTsKLQotICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZERy
YXc7Ci19Ci0KLXZvaWQgUERGRG9jdW1lbnRJbWFnZTo6ZGVzdHJveURlY29kZWREYXRhKGJvb2wp
Ci17Ci0gICAgbV9jYWNoZWRJbWFnZUJ1ZmZlciA9IG51bGxwdHI7Ci0gICAgbV9jYWNoZWRJbWFn
ZVJlY3QgPSBGbG9hdFJlY3QoKTsKLSAgICBkZWNvZGVkU2l6ZUNoYW5nZWQoMCk7Ci19Ci0KLSNp
ZiAhVVNFKFBERktJVF9GT1JfUERGRE9DVU1FTlRJTUFHRSkKLQotdm9pZCBQREZEb2N1bWVudElt
YWdlOjpjcmVhdGVQREZEb2N1bWVudCgpCi17Ci0gICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVy
UmVmPiBkYXRhUHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0
YShkYXRhKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpKSk7Ci0gICAgbV9kb2N1bWVudCA9IGFkb3B0
Q0YoQ0dQREZEb2N1bWVudENyZWF0ZVdpdGhQcm92aWRlcihkYXRhUHJvdmlkZXIuZ2V0KCkpKTsK
LX0KLQotdm9pZCBQREZEb2N1bWVudEltYWdlOjpjb21wdXRlQm91bmRzRm9yQ3VycmVudFBhZ2Uo
KQotewotICAgIEFTU0VSVChwYWdlQ291bnQoKSA+IDApOwotICAgIENHUERGUGFnZVJlZiBjZ1Bh
Z2UgPSBDR1BERkRvY3VtZW50R2V0UGFnZShtX2RvY3VtZW50LmdldCgpLCAxKTsKLSAgICBDR1Jl
Y3QgbWVkaWFCb3ggPSBDR1BERlBhZ2VHZXRCb3hSZWN0KGNnUGFnZSwga0NHUERGTWVkaWFCb3gp
OwotCi0gICAgLy8gR2V0IGNyb3AgYm94IChub3QgYWx3YXlzIHRoZXJlKS4gSWYgbm90LCB1c2Ug
bWVkaWEgYm94LgotICAgIENHUmVjdCByID0gQ0dQREZQYWdlR2V0Qm94UmVjdChjZ1BhZ2UsIGtD
R1BERkNyb3BCb3gpOwotICAgIGlmICghQ0dSZWN0SXNFbXB0eShyKSkKLSAgICAgICAgbV9jcm9w
Qm94ID0gcjsKLSAgICBlbHNlCi0gICAgICAgIG1fY3JvcEJveCA9IG1lZGlhQm94OwotCi0gICAg
bV9yb3RhdGlvbkRlZ3JlZXMgPSBDR1BERlBhZ2VHZXRSb3RhdGlvbkFuZ2xlKGNnUGFnZSk7Ci19
Ci0KLXVuc2lnbmVkIFBERkRvY3VtZW50SW1hZ2U6OnBhZ2VDb3VudCgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIENHUERGRG9jdW1lbnRHZXROdW1iZXJPZlBhZ2VzKG1fZG9jdW1lbnQuZ2V0KCkpOwot
fQotCi1zdGF0aWMgdm9pZCBhcHBseVJvdGF0aW9uRm9yUGFpbnRpbmcoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBGbG9hdFNpemUgc2l6ZSwgaW50IHJvdGF0aW9uRGVncmVlcykKLXsKLSAgICBp
ZiAocm90YXRpb25EZWdyZWVzID09IDkwKQotICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZSgwLCBz
aXplLmhlaWdodCgpKTsKLSAgICBlbHNlIGlmIChyb3RhdGlvbkRlZ3JlZXMgPT0gMTgwKQotICAg
ICAgICBjb250ZXh0LnRyYW5zbGF0ZShzaXplKTsKLSAgICBlbHNlIGlmIChyb3RhdGlvbkRlZ3Jl
ZXMgPT0gMjcwKQotICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZShzaXplLndpZHRoKCksIDApOwot
Ci0gICAgY29udGV4dC5yb3RhdGUoLWRlZzJyYWQoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHJvdGF0aW9u
RGVncmVlcykpKTsKLX0KLQotdm9pZCBQREZEb2N1bWVudEltYWdlOjpkcmF3UERGUGFnZShHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQpCi17Ci0gICAgYXBwbHlSb3RhdGlvbkZvclBhaW50aW5nKGNv
bnRleHQsIHNpemUoKSwgbV9yb3RhdGlvbkRlZ3JlZXMpOwotCi0gICAgY29udGV4dC50cmFuc2xh
dGUoLW1fY3JvcEJveC5sb2NhdGlvbigpKTsKLQotI2lmIFVTRShESVJFQ1QyRCkKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOwotI2Vsc2UKLSAgICAvLyBDR1BERiBwYWdlcyBhcmUgaW5kZXhlZCBmcm9t
IDEuCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgQ0dDb250ZXh0RHJhd1BERlBhZ2VXaXRoQW5u
b3RhdGlvbnMoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgQ0dQREZEb2N1bWVudEdldFBhZ2Uo
bV9kb2N1bWVudC5nZXQoKSwgMSksIG51bGxwdHIpOwotI2Vsc2UKLSAgICBDR0NvbnRleHREcmF3
UERGUGFnZShjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBDR1BERkRvY3VtZW50R2V0UGFnZSht
X2RvY3VtZW50LmdldCgpLCAxKSk7Ci0jZW5kaWYKLSNlbmRpZgotfQotCi0jZW5kaWYgLy8gIVVT
RShQREZLSVRfRk9SX1BERkRPQ1VNRU5USU1BR0UpCi0KLSNpZiBQTEFURk9STShNQUMpCi0KLVJl
dGFpblB0cjxDRk11dGFibGVEYXRhUmVmPiBQREZEb2N1bWVudEltYWdlOjpjb252ZXJ0UG9zdFNj
cmlwdERhdGFUb1BERihSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIHBvc3RTY3JpcHREYXRhKQotewot
ICAgIC8vIENvbnZlcnQgUG9zdFNjcmlwdCB0byBQREYgdXNpbmcgdGhlIFF1YXJ0eiAyRCBBUEku
Ci0gICAgLy8gaHR0cDovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi9HcmFwaGlj
c0ltYWdpbmcvQ29uY2VwdHVhbC9kcmF3aW5nd2l0aHF1YXJ0ejJkL2RxX3BzX2NvbnZlcnQvY2hh
cHRlcl8xNl9zZWN0aW9uXzEuaHRtbAotCi0gICAgQ0dQU0NvbnZlcnRlckNhbGxiYWNrcyBjYWxs
YmFja3MgPSB7IH07Ci0gICAgYXV0byBjb252ZXJ0ZXIgPSBhZG9wdENGKENHUFNDb252ZXJ0ZXJD
cmVhdGUoMCwgJmNhbGxiYWNrcywgMCkpOwotICAgIGF1dG8gcHJvdmlkZXIgPSBhZG9wdENGKENH
RGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YShwb3N0U2NyaXB0RGF0YS5nZXQoKSkpOwotICAg
IGF1dG8gcGRmRGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCAwKSk7Ci0gICAgYXV0byBjb25zdW1lciA9IGFkb3B0Q0YoQ0dEYXRhQ29uc3VtZXJD
cmVhdGVXaXRoQ0ZEYXRhKHBkZkRhdGEuZ2V0KCkpKTsKLQotICAgIENHUFNDb252ZXJ0ZXJDb252
ZXJ0KGNvbnZlcnRlci5nZXQoKSwgcHJvdmlkZXIuZ2V0KCksIGNvbnN1bWVyLmdldCgpLCAwKTsK
LSAgICByZXR1cm4gcGRmRGF0YTsKLX0KLQotI2VuZGlmCi0KLXZvaWQgUERGRG9jdW1lbnRJbWFn
ZTo6ZHVtcChUZXh0U3RyZWFtJiB0cykgY29uc3QKLXsKLSAgICBJbWFnZTo6ZHVtcCh0cyk7Ci0g
ICAgdHMuZHVtcFByb3BlcnR5KCJwYWdlLWNvdW50IiwgcGFnZUNvdW50KCkpOwotICAgIHRzLmR1
bXBQcm9wZXJ0eSgiY3JvcC1ib3giLCBtX2Nyb3BCb3gpOwotICAgIGlmIChtX3JvdGF0aW9uRGVn
cmVlcykKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJyb3RhdGlvbiIsIG1fcm90YXRpb25EZWdy
ZWVzKTsKLX0KLQotfQotCi0jZW5kaWYgLy8gVVNFKENHKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA1N2Y4OTQ3NDlkNWVhYzkwNTNiOGQ4YTk0ZWQwODVlNWFmZjUx
NWE3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuaAorKysgL2Rl
di9udWxsCkBAIC0xLDEyNCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1
LCAyMDA2LCAyMDEzIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIFBERkRvY3VtZW50SW1h
Z2VfaAotI2RlZmluZSBQREZEb2N1bWVudEltYWdlX2gKLQotI2luY2x1ZGUgIkFmZmluZVRyYW5z
Zm9ybS5oIgotI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgotI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMu
aCIKLSNpbmNsdWRlICJJbWFnZS5oIgotI2luY2x1ZGUgIlNldHRpbmdzLmgiCi0KLSNpZiBVU0Uo
Q0cpCi0KLSNpZiBQTEFURk9STShNQUMpCi0jZGVmaW5lIFVTRV9QREZLSVRfRk9SX1BERkRPQ1VN
RU5USU1BR0UgMQotI2VuZGlmCi0KLXR5cGVkZWYgc3RydWN0IENHUERGRG9jdW1lbnQgKkNHUERG
RG9jdW1lbnRSZWY7Ci1PQkpDX0NMQVNTIFBERkRvY3VtZW50OwotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLWNsYXNzIEdyYXBoaWNzQ29udGV4dDsKLWNsYXNzIEltYWdlQnVmZmVyOwotCi1jbGFz
cyBQREZEb2N1bWVudEltYWdlIGZpbmFsIDogcHVibGljIEltYWdlIHsKLXB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmPFBERkRvY3VtZW50SW1hZ2U+IGNyZWF0ZShJbWFnZU9ic2VydmVyKiBvYnNlcnZl
cikKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBERkRvY3VtZW50SW1hZ2Uo
b2JzZXJ2ZXIpKTsKLSAgICB9Ci0KLSAgICB2b2lkIHNldFBkZkltYWdlQ2FjaGluZ1BvbGljeShQ
REZJbWFnZUNhY2hpbmdQb2xpY3kpOwotICAgIAotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+IGNvbnZlcnRQb3N0
U2NyaXB0RGF0YVRvUERGKFJldGFpblB0cjxDRkRhdGFSZWY+JiYgcG9zdFNjcmlwdERhdGEpOwot
I2VuZGlmCi0KLSAgICB1bnNpZ25lZCBjYWNoaW5nQ291bnRGb3JUZXN0aW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV9jYWNoaW5nQ291bnRGb3JUZXN0aW5nOyB9Ci0KLXByaXZhdGU6Ci0gICAgUERGRG9j
dW1lbnRJbWFnZShJbWFnZU9ic2VydmVyKik7Ci0gICAgdmlydHVhbCB+UERGRG9jdW1lbnRJbWFn
ZSgpOwotCi0gICAgYm9vbCBpc1BERkRvY3VtZW50SW1hZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9Ci0KLSAgICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCBvdmVy
cmlkZTsKLQotICAgIGJvb2wgaGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4oKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9Ci0KLSAgICBFbmNvZGVkRGF0YVN0YXR1cyBkYXRhQ2hhbmdlZChi
b29sIGFsbERhdGFSZWNlaXZlZCkgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIGRlc3Ryb3lEZWNvZGVk
RGF0YShib29sIC8qZGVzdHJveUFsbCovID0gdHJ1ZSkgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIGNv
bXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKExlbmd0aCYgaW50cmluc2ljV2lkdGgsIExlbmd0aCYg
aW50cmluc2ljSGVpZ2h0LCBGbG9hdFNpemUmIGludHJpbnNpY1JhdGlvKSBvdmVycmlkZTsKLSAg
ICBGbG9hdFNpemUgc2l6ZShJbWFnZU9yaWVudGF0aW9uID0gSW1hZ2VPcmllbnRhdGlvbjo6RnJv
bUltYWdlKSBjb25zdCBvdmVycmlkZTsKLQotICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pIG92ZXJyaWRlOwotCi0g
ICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHRvIGJlIGxlc3MgY29uc2VydmF0aXZlLgotICAg
IGJvb2wgY3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KLQotICAgIHZvaWQgZHVtcChXVEY6OlRleHRTdHJlYW0mKSBjb25zdCBvdmVy
cmlkZTsKLQotICAgIHZvaWQgY3JlYXRlUERGRG9jdW1lbnQoKTsKLSAgICB2b2lkIGNvbXB1dGVC
b3VuZHNGb3JDdXJyZW50UGFnZSgpOwotICAgIHVuc2lnbmVkIHBhZ2VDb3VudCgpIGNvbnN0Owot
ICAgIHZvaWQgZHJhd1BERlBhZ2UoR3JhcGhpY3NDb250ZXh0Jik7Ci0KLSAgICB2b2lkIGRlY29k
ZWRTaXplQ2hhbmdlZChzaXplX3QgbmV3Q2FjaGVkQnl0ZXMpOwotICAgIHZvaWQgdXBkYXRlQ2Fj
aGVkSW1hZ2VJZk5lZWRlZChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCk7Ci0gICAgYm9vbCBjYWNoZVBhcmFtZXRlcnNN
YXRjaChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCkgY29uc3Q7Ci0KLSAgICBQREZJbWFnZUNhY2hpbmdQb2xpY3kgbV9w
ZGZJbWFnZUNhY2hpbmdQb2xpY3kgeyBkZWZhdWx0UERGSW1hZ2VDYWNoaW5nUG9saWN5IH07Ci0K
LSNpZiBVU0UoUERGS0lUX0ZPUl9QREZET0NVTUVOVElNQUdFKQotICAgIFJldGFpblB0cjxQREZE
b2N1bWVudD4gbV9kb2N1bWVudDsKLSNlbHNlCi0gICAgUmV0YWluUHRyPENHUERGRG9jdW1lbnRS
ZWY+IG1fZG9jdW1lbnQ7Ci0jZW5kaWYKLQotICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gbV9jYWNo
ZWRJbWFnZUJ1ZmZlcjsKLSAgICBGbG9hdFJlY3QgbV9jYWNoZWRJbWFnZVJlY3Q7Ci0gICAgQWZm
aW5lVHJhbnNmb3JtIG1fY2FjaGVkVHJhbnNmb3JtOwotICAgIEZsb2F0UmVjdCBtX2NhY2hlZERl
c3RpbmF0aW9uUmVjdDsKLSAgICBGbG9hdFJlY3QgbV9jYWNoZWRTb3VyY2VSZWN0OwotICAgIHNp
emVfdCBtX2NhY2hlZEJ5dGVzIHsgMCB9OwotICAgIHVuc2lnbmVkIG1fY2FjaGluZ0NvdW50Rm9y
VGVzdGluZyB7IDAgfTsKLQotICAgIEZsb2F0UmVjdCBtX2Nyb3BCb3g7Ci0gICAgaW50IG1fcm90
YXRpb25EZWdyZWVzIHsgMCB9OyAvLyBDYW4gb25seSBiZSAwLCA5MCwgMTgwLCBvciAyNzAgZGVn
cmVlcy4KLSAgICBib29sIG1faGFzUGFnZSB7IGZhbHNlIH07Ci19OwotCi19Ci0KLVNQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfSU1BR0UoUERGRG9jdW1lbnRJbWFnZSkKLQotI2VuZGlmIC8vIFVTRShD
RykKLQotI2VuZGlmIC8vIFBERkRvY3VtZW50SW1hZ2VfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29y
ZUltYWdlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0Zp
bHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tCmluZGV4IDM4ZGU4NTUyZjFlNDZhMWQzNzBh
ZTZkYzI3ODlhMWVjNjY3NGJhMTIuLmViNzlkZGEzZTc2YTRlMGFmZWZhOWRkNmQxNmYxN2YzZGJj
MTM4NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVp
bWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1h
Z2UubW0KQEAgLTM2LDEyICszNiwxNCBAQAogI2ltcG9ydCAiRmxvYXRDb252ZXJzaW9uLmgiCiAj
aW1wb3J0ICJHcmFwaGljc0NvbnRleHRDRy5oIgogI2ltcG9ydCAiSW1hZ2VCdWZmZXIuaCIKKyNp
bXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIlBsYXRmb3JtSW1hZ2VCdWZmZXIuaCIKICNpbXBv
cnQgIlNvdXJjZUdyYXBoaWMuaCIKICNpbXBvcnQgPENvcmVJbWFnZS9DSUNvbnRleHQuaD4KICNp
bXBvcnQgPENvcmVJbWFnZS9DSUZpbHRlci5oPgogI2ltcG9ydCA8Q29yZUltYWdlL0NvcmVJbWFn
ZS5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9U
ZXh0U3RyZWFtLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dC5jcHAKaW5kZXggOTIzMzY5OWEwZGRiMjM0Y2MzMGEzMjcxZGQ2YmEwN2RjYjQ2M2MyNi4uOWI2
MjgzODkwNDViOTY1ZWNjMmFlYjExYjA1MzBjNGY2YWE2NTRkNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3QuY3BwCkBAIC0yMzgsNiArMjM4LDggQEAgdm9pZCBEaXNwbGF5TGlzdDo6YXBwZW5kKEl0
ZW1IYW5kbGUgaXRlbSkKICAgICAgICAgcmV0dXJuIGFwcGVuZDxEcmF3SW1hZ2VCdWZmZXI+KGl0
ZW0uZ2V0PERyYXdJbWFnZUJ1ZmZlcj4oKSk7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2
ZUltYWdlOgogICAgICAgICByZXR1cm4gYXBwZW5kPERyYXdOYXRpdmVJbWFnZT4oaXRlbS5nZXQ8
RHJhd05hdGl2ZUltYWdlPigpKTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlUERGRG9j
dW1lbnQ6CisgICAgICAgIHJldHVybiBhcHBlbmQ8RHJhd05hdGl2ZVBERkRvY3VtZW50PihpdGVt
LmdldDxEcmF3TmF0aXZlUERGRG9jdW1lbnQ+KCkpOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQ
YXR0ZXJuOgogICAgICAgICByZXR1cm4gYXBwZW5kPERyYXdQYXR0ZXJuPihpdGVtLmdldDxEcmF3
UGF0dGVybj4oKSk7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1JlY3Q6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdC5oCmluZGV4IDI2ZmM5NzMwNzIxMTI3MzAzOTNlMmRjYmM4N2QwYzZiOWNhNTQyNTguLjFk
MDE2ZDgzMGRhZjUyOGQwNDU0OThhZTViNDgwYmMzNDJkMmRiYTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdC5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKKyNpbmNsdWRl
ICJOYXRpdmVQREZEb2N1bWVudC5oIgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KQEAgLTc4
LDYgKzc5LDcgQEAgcHVibGljOgogCiAgICAgY29uc3QgSW1hZ2VCdWZmZXJIYXNoTWFwJiBpbWFn
ZUJ1ZmZlcnMoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlQnVmZmVyczsgfQogICAgIGNvbnN0IE5h
dGl2ZUltYWdlSGFzaE1hcCYgbmF0aXZlSW1hZ2VzKCkgY29uc3QgeyByZXR1cm4gbV9uYXRpdmVJ
bWFnZXM7IH0KKyAgICBjb25zdCBOYXRpdmVQREZEb2N1bWVudEhhc2hNYXAmIG5hdGl2ZVBERkRv
Y3VtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fbmF0aXZlUERGRG9jdW1lbnRzOyB9CiAKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldEl0ZW1CdWZmZXJDbGllbnQoSXRlbUJ1ZmZlclJlYWRpbmdD
bGllbnQqKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEl0ZW1CdWZmZXJDbGllbnQoSXRl
bUJ1ZmZlcldyaXRpbmdDbGllbnQqKTsKQEAgLTE4MSwxMSArMTgzLDE5IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICByZXR1cm4gbWFrZVJlZihpbWFnZSk7CiAgICAgICAgIH0pOwogICAgIH0KLSAg
ICAKKworICAgIHZvaWQgY2FjaGVOYXRpdmVQREZEb2N1bWVudChOYXRpdmVQREZEb2N1bWVudCYg
cGRmRG9jdW1lbnQpCisgICAgeworICAgICAgICBtX25hdGl2ZVBERkRvY3VtZW50cy5lbnN1cmUo
cGRmRG9jdW1lbnQucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCksIFsmXSgpIHsKKyAgICAg
ICAgICAgIHJldHVybiBtYWtlUmVmKHBkZkRvY3VtZW50KTsKKyAgICAgICAgfSk7CisgICAgfQor
CiAgICAgc3RhdGljIGJvb2wgc2hvdWxkRHVtcEZvckZsYWdzKEFzVGV4dEZsYWdzLCBJdGVtSGFu
ZGxlKTsKIAogICAgIEltYWdlQnVmZmVySGFzaE1hcCBtX2ltYWdlQnVmZmVyczsKICAgICBOYXRp
dmVJbWFnZUhhc2hNYXAgbV9uYXRpdmVJbWFnZXM7CisgICAgTmF0aXZlUERGRG9jdW1lbnRIYXNo
TWFwIG1fbmF0aXZlUERGRG9jdW1lbnRzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJdGVtQnVmZmVy
PiBtX2l0ZW1zOwogICAgIFZlY3RvcjxPcHRpb25hbDxGbG9hdFJlY3Q+PiBtX2RyYXdpbmdJdGVt
RXh0ZW50czsKICAgICBib29sIG1fdHJhY2tzRHJhd2luZ0l0ZW1FeHRlbnRzIHsgdHJ1ZSB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAppbmRleCBjODc4YWQz
NGM4YzQ4NGU0MWM2NWU3YmUxNDUyYmZhOGFiMzE2ZGMyLi5jMjVkYTJmNDc2Njk2NzIxNDZhM2I3
NmY2ZDBiNWRkOTMyYWE4YTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
QnVmZmVyLmNwcApAQCAtMTQ4LDYgKzE0OCwxMCBAQCB2b2lkIEl0ZW1IYW5kbGU6OmFwcGx5KEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCkKICAgICAgICAgZ2V0PERyYXdOYXRpdmVJbWFnZT4oKS5h
cHBseShjb250ZXh0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBjYXNlIEl0ZW1UeXBl
OjpEcmF3TmF0aXZlUERGRG9jdW1lbnQ6IHsKKyAgICAgICAgZ2V0PERyYXdOYXRpdmVQREZEb2N1
bWVudD4oKS5hcHBseShjb250ZXh0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICBjYXNl
IEl0ZW1UeXBlOjpEcmF3UGF0dGVybjogewogICAgICAgICBnZXQ8RHJhd1BhdHRlcm4+KCkuYXBw
bHkoY29udGV4dCk7CiAgICAgICAgIHJldHVybjsKQEAgLTQyMCw2ICs0MjQsMTAgQEAgdm9pZCBJ
dGVtSGFuZGxlOjpkZXN0cm95KCkKICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZp
YWxseV9kZXN0cnVjdGlibGU8RHJhd05hdGl2ZUltYWdlPjo6dmFsdWUpOwogICAgICAgICByZXR1
cm47CiAgICAgfQorICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVQREZEb2N1bWVudDogewor
ICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxEcmF3
TmF0aXZlUERGRG9jdW1lbnQ+Ojp2YWx1ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAg
Y2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46IHsKICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6
OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8RHJhd1BhdHRlcm4+Ojp2YWx1ZSk7CiAgICAgICAg
IHJldHVybjsKQEAgLTU3Nyw2ICs1ODUsMTAgQEAgdm9pZCBJdGVtSGFuZGxlOjpjb3B5VG8oSXRl
bUhhbmRsZSBkZXN0aW5hdGlvbikgY29uc3QKICAgICAgICAgbmV3IChpdGVtT2Zmc2V0KSBEcmF3
TmF0aXZlSW1hZ2UoZ2V0PERyYXdOYXRpdmVJbWFnZT4oKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZVBERkRvY3VtZW50OiB7CisgICAgICAg
IG5ldyAoaXRlbU9mZnNldCkgRHJhd05hdGl2ZVBERkRvY3VtZW50KGdldDxEcmF3TmF0aXZlUERG
RG9jdW1lbnQ+KCkpOworICAgICAgICByZXR1cm47CisgICAgfQogICAgIGNhc2UgSXRlbVR5cGU6
OkRyYXdQYXR0ZXJuOiB7CiAgICAgICAgIG5ldyAoaXRlbU9mZnNldCkgRHJhd1BhdHRlcm4oZ2V0
PERyYXdQYXR0ZXJuPigpKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbVR5cGUuY3BwCmluZGV4IDE2NWQyMjQxMzVkMzRkOTI1MWZjY2JhOTQ4N2YyYmNj
Zjg1ZTExZTYuLjM2N2FkY2E2OWUyOGEyMWNmYzc1MjEzMmUwOGI1OGY1NTRjY2MxOTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1UeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5jcHAKQEAgLTg2LDYgKzg2LDggQEAg
c3RhdGljIHNpemVfdCBzaXplT2ZJdGVtSW5CeXRlcyhJdGVtVHlwZSB0eXBlKQogICAgICAgICBy
ZXR1cm4gc2l6ZW9mKERyYXdJbWFnZUJ1ZmZlcik7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05h
dGl2ZUltYWdlOgogICAgICAgICByZXR1cm4gc2l6ZW9mKERyYXdOYXRpdmVJbWFnZSk7CisgICAg
Y2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZVBERkRvY3VtZW50OgorICAgICAgICByZXR1cm4gc2l6
ZW9mKERyYXdOYXRpdmVQREZEb2N1bWVudCk7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRl
cm46CiAgICAgICAgIHJldHVybiBzaXplb2YoRHJhd1BhdHRlcm4pOwogICAgIGNhc2UgSXRlbVR5
cGU6OkRyYXdSZWN0OgpAQCAtMjA4LDYgKzIxMCw3IEBAIGJvb2wgaXNEcmF3aW5nSXRlbShJdGVt
VHlwZSB0eXBlKQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lOgogICAgIGNhc2UgSXRlbVR5
cGU6OkRyYXdMaW5lc0ZvclRleHQ6CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdl
OgorICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVQREZEb2N1bWVudDoKICAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3UGF0dGVybjoKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0aDoKICAgICBj
YXNlIEl0ZW1UeXBlOjpEcmF3UmVjdDoKQEAgLTI4MSw2ICsyODQsNyBAQCBib29sIGlzSW5saW5l
SXRlbShJdGVtVHlwZSB0eXBlKQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdFbGxpcHNlOgogICAg
IGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjoKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3
TmF0aXZlSW1hZ2U6CisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZVBERkRvY3VtZW50Ogog
ICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdM
aW5lOgogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdSZWN0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1UeXBlLmgKaW5kZXggZmI1ZGVmZGI3YzZkY2U0OThiMjE5ZjRmYmQxNzNkM2Y5MmE2
MmY1YS4uMWViNTg1ZTQ0MDAzMjBkNjlkMWZiMzMyOGY1MTY5OGE5MmRjZDAwZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlbVR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5oCkBAIC01NSw2ICs1NSw3IEBAIGVudW0gY2xh
c3MgSXRlbVR5cGUgOiB1aW50OF90IHsKICAgICBEcmF3R2x5cGhzLAogICAgIERyYXdJbWFnZUJ1
ZmZlciwKICAgICBEcmF3TmF0aXZlSW1hZ2UsCisgICAgRHJhd05hdGl2ZVBERkRvY3VtZW50LAog
ICAgIERyYXdQYXR0ZXJuLAogICAgIERyYXdSZWN0LAogICAgIERyYXdMaW5lLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlbXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCmluZGV4IDhjYmRiYzM3Nzk5NGJiMTAzMWViMDJmOWU0
OGFhYWUxNjk2NTVhNzUuLmRlYzJiNDJiZDNlODM3ZGYyZjEwMWUwNThjODA4MDI3ZTAyMWYwNTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKQEAgLTQ1OCw2ICs0NTgsMjUg
QEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERy
YXdOYXRpdmVJbWFnZSYgaXRlbSkKICAgICByZXR1cm4gdHM7CiB9CiAKK05PX1JFVFVSTl9EVUVf
VE9fQVNTRVJUIHZvaWQgRHJhd05hdGl2ZVBERkRvY3VtZW50OjphcHBseShHcmFwaGljc0NvbnRl
eHQmKSBjb25zdAoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit2b2lkIERyYXdO
YXRpdmVQREZEb2N1bWVudDo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBOYXRpdmVQ
REZEb2N1bWVudCYgcGRmRG9jdW1lbnQpIGNvbnN0Cit7CisgICAgcGRmRG9jdW1lbnQuZHJhdyhj
b250ZXh0LCBtX2ltYWdlU2l6ZSwgbV9kZXN0aW5hdGlvblJlY3QsIG1fc3JjUmVjdCwgbV9vcHRp
b25zKTsKK30KKworc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMs
IGNvbnN0IERyYXdOYXRpdmVQREZEb2N1bWVudCYgaXRlbSkKK3sKKyAgICAvLyBGSVhNRTogZHVt
cCBtb3JlIHN0dWZmLgorICAgIHRzLmR1bXBQcm9wZXJ0eSgicGRmLWRvY3VtZW50LWlkZW50aWZp
ZXIiLCBpdGVtLnBkZkRvY3VtZW50SWRlbnRpZmllcigpKTsKKyAgICB0cy5kdW1wUHJvcGVydHko
InNvdXJjZS1yZWN0IiwgaXRlbS5zb3VyY2UoKSk7CisgICAgdHMuZHVtcFByb3BlcnR5KCJkZXN0
LXJlY3QiLCBpdGVtLmRlc3RpbmF0aW9uUmVjdCgpKTsKKyAgICByZXR1cm4gdHM7Cit9CisKIERy
YXdQYXR0ZXJuOjpEcmF3UGF0dGVybihSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VJ
ZGVudGlmaWVyLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRT
aXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKICAgICA6
IG1faW1hZ2VJZGVudGlmaWVyKGltYWdlSWRlbnRpZmllcikKICAgICAsIG1faW1hZ2VTaXplKGlt
YWdlU2l6ZSkKQEAgLTEwMzYsNiArMTA1NSw3IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFRleHRTdHJlYW0mIHRzLCBJdGVtVHlwZSB0eXBlKQogICAgIGNhc2UgSXRlbVR5cGU6OkRy
YXdHbHlwaHM6IHRzIDw8ICJkcmF3LWdseXBocyI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6
OkRyYXdJbWFnZUJ1ZmZlcjogdHMgPDwgImRyYXctaW1hZ2UtYnVmZmVyIjsgYnJlYWs7CiAgICAg
Y2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOiB0cyA8PCAiZHJhdy1uYXRpdmUtaW1hZ2Ui
OyBicmVhazsKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlUERGRG9jdW1lbnQ6IHRzIDw8
ICJkcmF3LW5hdGl2ZS1wZGYtZG9jdW1lbnQiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpE
cmF3UGF0dGVybjogdHMgPDwgImRyYXctcGF0dGVybiI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5
cGU6OkRyYXdSZWN0OiB0cyA8PCAiZHJhdy1yZWN0IjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlw
ZTo6RHJhd0xpbmU6IHRzIDw8ICJkcmF3LWxpbmUiOyBicmVhazsKQEAgLTExNTQsNiArMTE3NCw5
IEBAIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIEl0ZW1IYW5kbGUgaXRl
bSkKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6CiAgICAgICAgIHRzIDw8IGl0
ZW0uZ2V0PERyYXdOYXRpdmVJbWFnZT4oKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVt
VHlwZTo6RHJhd05hdGl2ZVBERkRvY3VtZW50OgorICAgICAgICB0cyA8PCBpdGVtLmdldDxEcmF3
TmF0aXZlUERGRG9jdW1lbnQ+KCk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6
OkRyYXdQYXR0ZXJuOgogICAgICAgICB0cyA8PCBpdGVtLmdldDxEcmF3UGF0dGVybj4oKTsKICAg
ICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAppbmRleCAxMDQ5NDVk
NDY2Yzg5YmNlNTIwNTg1M2U2ZGM5YTRhZjc0NjFmNjE1Li42ZjBmYjBmYzEzMDQxZjY1NTRhY2Uz
ZDcyYzBkNzAxNDFlYmFjODJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKQEAg
LTEwNzYsNiArMTA3NiwzOSBAQCBwcml2YXRlOgogICAgIEltYWdlUGFpbnRpbmdPcHRpb25zIG1f
b3B0aW9uczsKIH07CiAKK2NsYXNzIERyYXdOYXRpdmVQREZEb2N1bWVudCB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBJdGVtVHlwZSBpdGVtVHlwZSA9IEl0ZW1UeXBlOjpEcmF3TmF0
aXZlUERGRG9jdW1lbnQ7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW5saW5lSXRlbSA9
IHRydWU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzRHJhd2luZ0l0ZW0gPSB0cnVlOwor
CisgICAgRHJhd05hdGl2ZVBERkRvY3VtZW50KFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBw
ZGZEb2N1bWVudElkZW50aWZpZXIsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBG
bG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQorICAgICAgICA6IG1fcGRmRG9jdW1lbnRJZGVudGlm
aWVyKHBkZkRvY3VtZW50SWRlbnRpZmllcikKKyAgICAgICAgLCBtX2ltYWdlU2l6ZShpbWFnZVNp
emUpCisgICAgICAgICwgbV9kZXN0aW5hdGlvblJlY3QoZGVzdFJlY3QpCisgICAgICAgICwgbV9z
cmNSZWN0KHNyY1JlY3QpCisgICAgICAgICwgbV9vcHRpb25zKG9wdGlvbnMpCisgICAgeworICAg
IH0KKworICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBwZGZEb2N1bWVudElkZW50aWZp
ZXIoKSBjb25zdCB7IHJldHVybiBtX3BkZkRvY3VtZW50SWRlbnRpZmllcjsgfQorICAgIGNvbnN0
IEZsb2F0UmVjdCYgc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9zcmNSZWN0OyB9CisgICAgY29u
c3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvblJlY3QoKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0
aW9uUmVjdDsgfQorCisgICAgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBhcHBseShHcmFw
aGljc0NvbnRleHQmKSBjb25zdDsKKyAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYsIE5h
dGl2ZVBERkRvY3VtZW50JikgY29uc3Q7CisKKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2Jh
bEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfQorICAgIE9wdGlvbmFsPEZs
b2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QgeyByZXR1
cm4gbV9kZXN0aW5hdGlvblJlY3Q7IH0KKworcHJpdmF0ZToKKyAgICBSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIgbV9wZGZEb2N1bWVudElkZW50aWZpZXI7CisgICAgRmxvYXRTaXplIG1faW1h
Z2VTaXplOworICAgIEZsb2F0UmVjdCBtX2Rlc3RpbmF0aW9uUmVjdDsKKyAgICBGbG9hdFJlY3Qg
bV9zcmNSZWN0OworICAgIEltYWdlUGFpbnRpbmdPcHRpb25zIG1fb3B0aW9uczsKK307CisKIGNs
YXNzIERyYXdQYXR0ZXJuIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIEl0ZW1UeXBl
IGl0ZW1UeXBlID0gSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOwpAQCAtMjI4Niw2ICsyMzE5LDcgQEAg
dGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5
cGU+IHsKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdHbHlwaHMsCiAg
ICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXIsCiAgICAg
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2UsCisgICAgV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3TmF0aXZlUERGRG9jdW1lbnQsCiAgICAg
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3UGF0dGVybiwKICAgICBXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdSZWN0LAogICAgIFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpJdGVtVHlwZTo6RHJhd0xpbmUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNv
cmRlci5jcHAKaW5kZXggZjUwMDA1YTQ1NGIzOWY0NWNkMGZmNzFhZDdkMTljYTFjZDdjNzBlZS4u
NzczYzU1Mjk2YTUxNzg4ZTBjMzNkMzEzMmZlN2Y1MTFlNjA2NTZmZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcApAQCAtMTgyLDYgKzE4MiwxNCBAQCB2b2lkIFJl
Y29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFNp
emUmIGltYWdlU2l6ZSwgYwogICAgIGFwcGVuZDxEcmF3TmF0aXZlSW1hZ2U+KGltYWdlLnJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBv
cHRpb25zKTsKIH0KIAordm9pZCBSZWNvcmRlcjo6ZHJhd05hdGl2ZVBERkRvY3VtZW50KE5hdGl2
ZVBERkRvY3VtZW50JiBwZGZEb2N1bWVudCwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit7CisgICAgaWYgKG1fZGVsZWdhdGUpCisg
ICAgICAgIG1fZGVsZWdhdGUtPmNhY2hlTmF0aXZlUERGRG9jdW1lbnQocGRmRG9jdW1lbnQpOwor
ICAgIG1fZGlzcGxheUxpc3QuY2FjaGVOYXRpdmVQREZEb2N1bWVudChwZGZEb2N1bWVudCk7Cisg
ICAgYXBwZW5kPERyYXdOYXRpdmVQREZEb2N1bWVudD4ocGRmRG9jdW1lbnQucmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKCksIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMp
OworfQorCiB2b2lkIFJlY29yZGVyOjpkcmF3UGF0dGVybihOYXRpdmVJbWFnZSYgaW1hZ2UsIGNv
bnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFu
c2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmIChtX2RlbGVn
YXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKaW5kZXggNzdjYmEzMzZk
YzViOTRmNGRiMjFkYTY2MTEwN2JkNGMzMmNmNzA4NS4uNDJmZTRlNjBjYWU1MTE3ZmMxNTNhOWY3
ZjYwZTUwNzgwNDU4MjNiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5o
CkBAIC02Nyw2ICs2Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxBcHBl
bmRJdGVtT2ZUeXBlKEl0ZW1UeXBlKSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEFwcGVu
ZEl0ZW1PZlR5cGUoSXRlbVR5cGUpIHsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgY2FjaGVOYXRp
dmVJbWFnZShOYXRpdmVJbWFnZSYpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgY2FjaGVOYXRp
dmVQREZEb2N1bWVudChOYXRpdmVQREZEb2N1bWVudCYpIHsgfQogICAgIH07CiAKIHByaXZhdGU6
CkBAIC0xMDQsNiArMTA1LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVy
KFdlYkNvcmU6OkltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29u
c3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFNp
emUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOworICAgIHZv
aWQgZHJhd05hdGl2ZVBERkRvY3VtZW50KE5hdGl2ZVBERkRvY3VtZW50JiwgY29uc3QgRmxvYXRT
aXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICB2
b2lkIGRyYXdQYXR0ZXJuKE5hdGl2ZUltYWdlJiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0
U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKIAog
ICAgIHZvaWQgZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQgYm9yZGVyVGhpY2tuZXNz
KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcAppbmRl
eCBjYTE5ODQ1YWFmODA0ZTE5NDg5OWYwOWMyYTA2OGI0NjNlZDU1OGZmLi4wOGI2NzhkZDAxNjVh
YWU2YTIyOTViMjNiMjg3OWQyOTA1M2I4OTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVwbGF5ZXIuY3BwCkBAIC0zNCwxMSArMzQsMTIgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiAKLVJlcGxheWVyOjpSZXBsYXllcihHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IERpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgY29uc3QgSW1h
Z2VCdWZmZXJIYXNoTWFwKiBpbWFnZUJ1ZmZlcnMsIGNvbnN0IE5hdGl2ZUltYWdlSGFzaE1hcCog
bmF0aXZlSW1hZ2VzLCBEZWxlZ2F0ZSogZGVsZWdhdGUpCitSZXBsYXllcjo6UmVwbGF5ZXIoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIGNv
bnN0IEltYWdlQnVmZmVySGFzaE1hcCogaW1hZ2VCdWZmZXJzLCBjb25zdCBOYXRpdmVJbWFnZUhh
c2hNYXAqIG5hdGl2ZUltYWdlcywgY29uc3QgTmF0aXZlUERGRG9jdW1lbnRIYXNoTWFwKiBuYXRp
dmVQREZEb2N1bWVudHMsIERlbGVnYXRlKiBkZWxlZ2F0ZSkKICAgICA6IG1fY29udGV4dChjb250
ZXh0KQogICAgICwgbV9kaXNwbGF5TGlzdChkaXNwbGF5TGlzdCkKICAgICAsIG1faW1hZ2VCdWZm
ZXJzKGltYWdlQnVmZmVycyA/ICppbWFnZUJ1ZmZlcnMgOiBtX2Rpc3BsYXlMaXN0LmltYWdlQnVm
ZmVycygpKQogICAgICwgbV9uYXRpdmVJbWFnZXMobmF0aXZlSW1hZ2VzID8gKm5hdGl2ZUltYWdl
cyA6IG1fZGlzcGxheUxpc3QubmF0aXZlSW1hZ2VzKCkpCisgICAgLCBtX25hdGl2ZVBERkRvY3Vt
ZW50cyhuYXRpdmVQREZEb2N1bWVudHMgPyAqbmF0aXZlUERGRG9jdW1lbnRzIDogbV9kaXNwbGF5
TGlzdC5uYXRpdmVQREZEb2N1bWVudHMoKSkKICAgICAsIG1fZGVsZWdhdGUoZGVsZWdhdGUpCiB7
CiB9CkBAIC02Nyw2ICs2OCwxNiBAQCBpbmxpbmUgc3RhdGljIE9wdGlvbmFsPFN0b3BSZXBsYXlS
ZWFzb24+IGFwcGx5TmF0aXZlSW1hZ2VJdGVtKEdyYXBoaWNzQ29udGV4dCYgYwogICAgIHJldHVy
biBTdG9wUmVwbGF5UmVhc29uOjpNaXNzaW5nQ2FjaGVkUmVzb3VyY2U7CiB9CiAKK2lubGluZSBz
dGF0aWMgT3B0aW9uYWw8U3RvcFJlcGxheVJlYXNvbj4gYXBwbHlEcmF3TmF0aXZlUERGRG9jdW1l
bnRJdGVtKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTmF0aXZlUERGRG9jdW1lbnRI
YXNoTWFwJiBuYXRpdmVQREZEb2N1bWVudHMsIEl0ZW1IYW5kbGUgaXRlbSkKK3sKKyAgICBhdXRv
JiBuYXRpdmVQREZEb2N1bWVudEl0ZW0gPSBpdGVtLmdldDxEcmF3TmF0aXZlUERGRG9jdW1lbnQ+
KCk7CisgICAgaWYgKGF1dG8qIHBkZkRvY3VtZW50ID0gbmF0aXZlUERGRG9jdW1lbnRzLmdldChu
YXRpdmVQREZEb2N1bWVudEl0ZW0ucGRmRG9jdW1lbnRJZGVudGlmaWVyKCkpKSB7CisgICAgICAg
IG5hdGl2ZVBERkRvY3VtZW50SXRlbS5hcHBseShjb250ZXh0LCAqcGRmRG9jdW1lbnQpOworICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIH0KKyAgICByZXR1cm4gU3RvcFJlcGxheVJl
YXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlOworfQorCiBPcHRpb25hbDxTdG9wUmVwbGF5UmVh
c29uPiBSZXBsYXllcjo6YXBwbHlJdGVtKEl0ZW1IYW5kbGUgaXRlbSkKIHsKICAgICBpZiAobV9k
ZWxlZ2F0ZSAmJiBtX2RlbGVnYXRlLT5hcHBseShpdGVtLCBtX2NvbnRleHQpKQpAQCAtODQsNiAr
OTUsOSBAQCBPcHRpb25hbDxTdG9wUmVwbGF5UmVhc29uPiBSZXBsYXllcjo6YXBwbHlJdGVtKEl0
ZW1IYW5kbGUgaXRlbSkKICAgICBpZiAoaXRlbS5pczxEcmF3UGF0dGVybj4oKSkKICAgICAgICAg
cmV0dXJuIGFwcGx5TmF0aXZlSW1hZ2VJdGVtPERyYXdQYXR0ZXJuPihtX2NvbnRleHQsIG1fbmF0
aXZlSW1hZ2VzLCBpdGVtKTsKIAorICAgIGlmIChpdGVtLmlzPERyYXdOYXRpdmVQREZEb2N1bWVu
dD4oKSkKKyAgICAgICAgcmV0dXJuIGFwcGx5RHJhd05hdGl2ZVBERkRvY3VtZW50SXRlbShtX2Nv
bnRleHQsIG1fbmF0aXZlUERGRG9jdW1lbnRzLCBpdGVtKTsKKwogICAgIGl0ZW0uYXBwbHkobV9j
b250ZXh0KTsKICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlcGxheWVyLmgKaW5kZXggZTY3OGI4NjA2MmNlZGI2MTJhZThiY2VkN2MwYjc4ODQ1
NjdjMzc2Ni4uZGQzN2JmYmU2MzBiMDJiZTY3NmM1NjNjMWZkM2NiZWQ0NDBkZDhlYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVwbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oCkBAIC01NCw3ICs1NCw3IEBAIGNsYXNz
IFJlcGxheWVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZXBsYXllcik7CiBwdWJsaWM6
CiAgICAgY2xhc3MgRGVsZWdhdGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVwbGF5ZXIoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgRGlzcGxheUxpc3QmLCBjb25zdCBJbWFnZUJ1ZmZlckhhc2hNYXAq
ID0gbnVsbHB0ciwgY29uc3QgTmF0aXZlSW1hZ2VIYXNoTWFwKiA9IG51bGxwdHIsIERlbGVnYXRl
KiA9IG51bGxwdHIpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlcGxheWVyKEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IERpc3BsYXlMaXN0JiwgY29uc3QgSW1hZ2VCdWZmZXJIYXNoTWFwKiA9IG51bGxw
dHIsIGNvbnN0IE5hdGl2ZUltYWdlSGFzaE1hcCogPSBudWxscHRyLCBjb25zdCBOYXRpdmVQREZE
b2N1bWVudEhhc2hNYXAqID0gbnVsbHB0ciwgRGVsZWdhdGUqID0gbnVsbHB0cik7CiAgICAgV0VC
Q09SRV9FWFBPUlQgflJlcGxheWVyKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBSZXBsYXlSZXN1
bHQgcmVwbGF5KGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAgPSB7IH0sIGJvb2wgdHJhY2tS
ZXBsYXlMaXN0ID0gZmFsc2UpOwpAQCAtNzIsNiArNzIsNyBAQCBwcml2YXRlOgogICAgIGNvbnN0
IERpc3BsYXlMaXN0JiBtX2Rpc3BsYXlMaXN0OwogICAgIGNvbnN0IEltYWdlQnVmZmVySGFzaE1h
cCYgbV9pbWFnZUJ1ZmZlcnM7CiAgICAgY29uc3QgTmF0aXZlSW1hZ2VIYXNoTWFwJiBtX25hdGl2
ZUltYWdlczsKKyAgICBjb25zdCBOYXRpdmVQREZEb2N1bWVudEhhc2hNYXAmIG1fbmF0aXZlUERG
RG9jdW1lbnRzOwogICAgIERlbGVnYXRlKiBtX2RlbGVnYXRlOwogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL05hdGl2ZVBERkRvY3VtZW50TWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL05hdGl2ZVBERkRvY3Vt
ZW50TWFjLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE1NzdlMDgzMjk1YTU3NzRmYWQ2ZjhlYzVkZjJkZGRhNDlj
YjliZTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvTmF0aXZlUERGRG9jdW1lbnRNYWMubW0KQEAgLTAsMCArMSwxMDUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIK
KyNpbXBvcnQgIk5hdGl2ZVBERkRvY3VtZW50LmgiCisKKyNpZiBFTkFCTEUoUERGS0lUX0ZPUl9Q
REZET0NVTUVOVElNQUdFKQorCisjaW1wb3J0ICJMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQu
aCIKKyNpbXBvcnQgIlNoYXJlZEJ1ZmZlci5oIgorI2ltcG9ydCA8UXVhcnR6L1F1YXJ0ei5oPgor
I2ltcG9ydCA8b2JqYy9vYmpjLWNsYXNzLmg+CisjaW1wb3J0IDxwYWwvc3BpL2NnL0NvcmVHcmFw
aGljc1NQSS5oPgorI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CisKK1NPRlRfTElOS19GUkFN
RVdPUktfSU5fVU1CUkVMTEEoUXVhcnR6LCBQREZLaXQpCitTT0ZUX0xJTktfQ0xBU1MoUERGS2l0
LCBQREZEb2N1bWVudCkKKworZXh0ZXJuICJDIiB7Citib29sIENHQ29udGV4dEdldEFsbG93c0Zv
bnRTbW9vdGhpbmcoQ0dDb250ZXh0UmVmKTsKK2Jvb2wgQ0dDb250ZXh0R2V0QWxsb3dzRm9udFN1
YnBpeGVsUXVhbnRpemF0aW9uKENHQ29udGV4dFJlZik7Cit9CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworUmVmUHRyPE5hdGl2ZVBERkRvY3VtZW50PiBOYXRpdmVQREZEb2N1bWVudDo6Y3JlYXRl
KFNoYXJlZEJ1ZmZlciYgZGF0YSwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcikKK3sKKyAgICBhdXRvIGRvY3VtZW50ID0gYWRvcHROUyhbYWxs
b2NQREZEb2N1bWVudEluc3RhbmNlKCkgaW5pdFdpdGhEYXRhOmRhdGEuY3JlYXRlTlNEYXRhKCku
Z2V0KCldKTsKKyAgICBpZiAoIWRvY3VtZW50KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IE5hdGl2ZVBERkRvY3VtZW50KGRhdGEsIHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciwgV1RGTW92ZShkb2N1bWVudCkpKTsKK30KKwordm9pZCBOYXRpdmVQ
REZEb2N1bWVudDo6Y29tcHV0ZUJvdW5kc0ZvckN1cnJlbnRQYWdlKCkKK3sKKyAgICBQREZQYWdl
ICpwZGZQYWdlID0gW21fcGxhdGZvcm1QREZEb2N1bWVudCBwYWdlQXRJbmRleDowXTsKKworICAg
IG1fY3JvcEJveCA9IFtwZGZQYWdlIGJvdW5kc0ZvckJveDprUERGRGlzcGxheUJveENyb3BCb3hd
OworICAgIG1fcm90YXRpb25EZWdyZWVzID0gW3BkZlBhZ2Ugcm90YXRpb25dOworfQorCit1bnNp
Z25lZCBOYXRpdmVQREZEb2N1bWVudDo6cGFnZUNvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4g
W21fcGxhdGZvcm1QREZEb2N1bWVudCBwYWdlQ291bnRdOworfQorCit2b2lkIE5hdGl2ZVBERkRv
Y3VtZW50OjpkcmF3UERGUGFnZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0
U2l6ZSYpCit7CisgICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGxvY2FsQ3VycmVudENv
bnRleHQoY29udGV4dCk7CisKKyAgICAvLyBUaGVzZSBzdGF0ZXMgY2FuIGJlIG11dGF0ZWQgYnkg
UERGS2l0IGJ1dCBhcmUgbm90IHNhdmVkCisgICAgLy8gb24gdGhlIGNvbnRleHQncyBzdGF0ZSBz
dGFjay4gKDxyZGFyOi8vcHJvYmxlbS8xNDk1MTc1OSYzNTczODE4MT4pCisgICAgYm9vbCBhbGxv
d3NTbW9vdGhpbmcgPSBDR0NvbnRleHRHZXRBbGxvd3NGb250U21vb3RoaW5nKGNvbnRleHQucGxh
dGZvcm1Db250ZXh0KCkpOworICAgIGJvb2wgYWxsb3dzU3VicGl4ZWxRdWFudGl6YXRpb24gPSBD
R0NvbnRleHRHZXRBbGxvd3NGb250U3VicGl4ZWxRdWFudGl6YXRpb24oY29udGV4dC5wbGF0Zm9y
bUNvbnRleHQoKSk7CisgICAgYm9vbCBhbGxvd3NTdWJwaXhlbFBvc2l0aW9uaW5nID0gQ0dDb250
ZXh0R2V0QWxsb3dzRm9udFN1YnBpeGVsUG9zaXRpb25pbmcoY29udGV4dC5wbGF0Zm9ybUNvbnRl
eHQoKSk7CisKKyAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgorICAgIFtb
bV9wbGF0Zm9ybVBERkRvY3VtZW50IHBhZ2VBdEluZGV4OjBdIGRyYXdXaXRoQm94OmtQREZEaXNw
bGF5Qm94Q3JvcEJveF07CisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECisK
KyAgICBDR0NvbnRleHRTZXRBbGxvd3NGb250U21vb3RoaW5nKGNvbnRleHQucGxhdGZvcm1Db250
ZXh0KCksIGFsbG93c1Ntb290aGluZyk7CisgICAgQ0dDb250ZXh0U2V0QWxsb3dzRm9udFN1YnBp
eGVsUXVhbnRpemF0aW9uKGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCksIGFsbG93c1N1YnBpeGVs
UXVhbnRpemF0aW9uKTsKKyAgICBDR0NvbnRleHRTZXRBbGxvd3NGb250U3VicGl4ZWxQb3NpdGlv
bmluZyhjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBhbGxvd3NTdWJwaXhlbFBvc2l0aW9uaW5n
KTsKK30KKworUmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+IE5hdGl2ZVBERkRvY3VtZW50Ojpj
b252ZXJ0UG9zdFNjcmlwdERhdGFUb1BERihSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIHBvc3RTY3Jp
cHREYXRhKQoreworICAgIC8vIENvbnZlcnQgUG9zdFNjcmlwdCB0byBQREYgdXNpbmcgdGhlIFF1
YXJ0eiAyRCBBUEkuCisgICAgLy8gaHR0cDovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRh
dGlvbi9HcmFwaGljc0ltYWdpbmcvQ29uY2VwdHVhbC9kcmF3aW5nd2l0aHF1YXJ0ejJkL2RxX3Bz
X2NvbnZlcnQvY2hhcHRlcl8xNl9zZWN0aW9uXzEuaHRtbAorCisgICAgQ0dQU0NvbnZlcnRlckNh
bGxiYWNrcyBjYWxsYmFja3MgPSB7IH07CisgICAgYXV0byBjb252ZXJ0ZXIgPSBhZG9wdENGKENH
UFNDb252ZXJ0ZXJDcmVhdGUoMCwgJmNhbGxiYWNrcywgMCkpOworICAgIGF1dG8gcHJvdmlkZXIg
PSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YShwb3N0U2NyaXB0RGF0YS5n
ZXQoKSkpOworICAgIGF1dG8gcGRmRGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlTXV0YWJsZShr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCAwKSk7CisgICAgYXV0byBjb25zdW1lciA9IGFkb3B0Q0YoQ0dE
YXRhQ29uc3VtZXJDcmVhdGVXaXRoQ0ZEYXRhKHBkZkRhdGEuZ2V0KCkpKTsKKworICAgIENHUFND
b252ZXJ0ZXJDb252ZXJ0KGNvbnZlcnRlci5nZXQoKSwgcHJvdmlkZXIuZ2V0KCksIGNvbnN1bWVy
LmdldCgpLCAwKTsKKyAgICByZXR1cm4gcGRmRGF0YTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFBERktJVF9GT1JfUERGRE9DVU1FTlRJTUFHRSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVu
dEltYWdlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRv
Y3VtZW50SW1hZ2VNYWMubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzZTZhZjdi
MDM4OTI4MzhjM2JmZWExYzBjMTFhYTdmY2Y4YTc3YTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0KKysrIC9kZXYvbnVsbApAQCAtMSw4OCArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAi
Y29uZmlnLmgiCi0jaW1wb3J0ICJQREZEb2N1bWVudEltYWdlLmgiCi0KLSNpZiBVU0UoUERGS0lU
X0ZPUl9QREZET0NVTUVOVElNQUdFKQotCi0jaW1wb3J0ICJMb2NhbEN1cnJlbnRHcmFwaGljc0Nv
bnRleHQuaCIKLSNpbXBvcnQgIlNoYXJlZEJ1ZmZlci5oIgotI2ltcG9ydCA8UXVhcnR6L1F1YXJ0
ei5oPgotI2ltcG9ydCA8b2JqYy9vYmpjLWNsYXNzLmg+Ci0jaW1wb3J0IDxwYWwvc3BpL2NnL0Nv
cmVHcmFwaGljc1NQSS5oPgotI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgotI2ltcG9ydCA8d3Rm
L1NvZnRMaW5raW5nLmg+Ci0KLVNPRlRfTElOS19GUkFNRVdPUktfSU5fVU1CUkVMTEEoUXVhcnR6
LCBQREZLaXQpCi1TT0ZUX0xJTktfQ0xBU1MoUERGS2l0LCBQREZEb2N1bWVudCkKLQotZXh0ZXJu
ICJDIiB7Ci1ib29sIENHQ29udGV4dEdldEFsbG93c0ZvbnRTbW9vdGhpbmcoQ0dDb250ZXh0UmVm
IGNvbnRleHQpOwotYm9vbCBDR0NvbnRleHRHZXRBbGxvd3NGb250U3VicGl4ZWxRdWFudGl6YXRp
b24oQ0dDb250ZXh0UmVmIGNvbnRleHQpOwotfQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZv
aWQgUERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQoKQotewotICAgIG1fZG9jdW1l
bnQgPSBhZG9wdE5TKFthbGxvY1BERkRvY3VtZW50SW5zdGFuY2UoKSBpbml0V2l0aERhdGE6ZGF0
YSgpLT5jcmVhdGVOU0RhdGEoKS5nZXQoKV0pOwotfQotCi12b2lkIFBERkRvY3VtZW50SW1hZ2U6
OmNvbXB1dGVCb3VuZHNGb3JDdXJyZW50UGFnZSgpCi17Ci0gICAgUERGUGFnZSAqcGRmUGFnZSA9
IFttX2RvY3VtZW50IHBhZ2VBdEluZGV4OjBdOwotCi0gICAgbV9jcm9wQm94ID0gW3BkZlBhZ2Ug
Ym91bmRzRm9yQm94OmtQREZEaXNwbGF5Qm94Q3JvcEJveF07Ci0gICAgbV9yb3RhdGlvbkRlZ3Jl
ZXMgPSBbcGRmUGFnZSByb3RhdGlvbl07Ci19Ci0KLXVuc2lnbmVkIFBERkRvY3VtZW50SW1hZ2U6
OnBhZ2VDb3VudCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFttX2RvY3VtZW50IHBhZ2VDb3VudF07
Ci19Ci0KLXZvaWQgUERGRG9jdW1lbnRJbWFnZTo6ZHJhd1BERlBhZ2UoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0KQotewotICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbEN1cnJl
bnRDb250ZXh0KGNvbnRleHQpOwotCi0gICAgLy8gVGhlc2Ugc3RhdGVzIGNhbiBiZSBtdXRhdGVk
IGJ5IFBERktpdCBidXQgYXJlIG5vdCBzYXZlZAotICAgIC8vIG9uIHRoZSBjb250ZXh0J3Mgc3Rh
dGUgc3RhY2suICg8cmRhcjovL3Byb2JsZW0vMTQ5NTE3NTkmMzU3MzgxODE+KQotICAgIGJvb2wg
YWxsb3dzU21vb3RoaW5nID0gQ0dDb250ZXh0R2V0QWxsb3dzRm9udFNtb290aGluZyhjb250ZXh0
LnBsYXRmb3JtQ29udGV4dCgpKTsKLSAgICBib29sIGFsbG93c1N1YnBpeGVsUXVhbnRpemF0aW9u
ID0gQ0dDb250ZXh0R2V0QWxsb3dzRm9udFN1YnBpeGVsUXVhbnRpemF0aW9uKGNvbnRleHQucGxh
dGZvcm1Db250ZXh0KCkpOwotICAgIGJvb2wgYWxsb3dzU3VicGl4ZWxQb3NpdGlvbmluZyA9IENH
Q29udGV4dEdldEFsbG93c0ZvbnRTdWJwaXhlbFBvc2l0aW9uaW5nKGNvbnRleHQucGxhdGZvcm1D
b250ZXh0KCkpOwotCi0gICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAg
ICBbW21fZG9jdW1lbnQgcGFnZUF0SW5kZXg6MF0gZHJhd1dpdGhCb3g6a1BERkRpc3BsYXlCb3hD
cm9wQm94XTsKLSAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKLQotICAgIENH
Q29udGV4dFNldEFsbG93c0ZvbnRTbW9vdGhpbmcoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwg
YWxsb3dzU21vb3RoaW5nKTsKLSAgICBDR0NvbnRleHRTZXRBbGxvd3NGb250U3VicGl4ZWxRdWFu
dGl6YXRpb24oY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgYWxsb3dzU3VicGl4ZWxRdWFudGl6
YXRpb24pOwotICAgIENHQ29udGV4dFNldEFsbG93c0ZvbnRTdWJwaXhlbFBvc2l0aW9uaW5nKGNv
bnRleHQucGxhdGZvcm1Db250ZXh0KCksIGFsbG93c1N1YnBpeGVsUG9zaXRpb25pbmcpOwotfQot
Ci19Ci0KLSNlbmRpZiAvLyBVU0UoUERGS0lUX0ZPUl9QREZET0NVTUVOVElNQUdFKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNv
c2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcApp
bmRleCAyYzlhYTg4Njk2OWViMDUyZWVjNjMyY2U5YzZlOWQ1NTcyMWY5NzZkLi5mZjFmN2M3ODg2
YzA4YTgzN2FmNDNkMzkzMzBmZGUzMjNmZTljZDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJl
Y29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcApAQCAtNTYwLDYgKzU2MCwx
MSBAQCB2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZShOYXRpdmVJ
bWFnZSYgbmF0aXZlSW1hZ2UsIGNvbnN0IEZsbwogICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPERy
YXdOYXRpdmVJbWFnZT4obmF0aXZlSW1hZ2UucGxhdGZvcm1JbWFnZSgpLCBkZXN0UmVjdCwgc3Jj
UmVjdCwgSW1hZ2VQYWludGluZ09wdGlvbnMob3B0aW9ucywgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0
aW9uUXVhbGl0eSksIHN0YXRlLmFscGhhLCBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpKSk7CiB9
CiAKK3ZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd05hdGl2ZVBERkRvY3VtZW50KE5h
dGl2ZVBERkRvY3VtZW50JiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKQoreworICAgIC8vIEZJ
WE1FOiBOb3QgaW1wbGVtZW50ZWQuCit9CisKIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6
ZHJhd1BhdHRlcm4oTmF0aXZlSW1hZ2UmIG5hdGl2ZUltYWdlLCBjb25zdCBGbG9hdFNpemUmIGlt
YWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxl
UmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9h
dFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBzdHJ1Y3QgRHJhd1BhdHRlcm4gZmluYWwgOiBQ
YWludGluZ09wZXJhdGlvbiwgT3BlcmF0aW9uRGF0YTxSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90Piwg
SW50U2l6ZSwgRmxvYXRSZWN0LCBGbG9hdFJlY3QsIEFmZmluZVRyYW5zZm9ybSwgRmxvYXRQb2lu
dCwgSW1hZ2VQYWludGluZ09wdGlvbnM+IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3Jk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmlj
b3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaAppbmRleCA4MGEyNmZkOThlODQ0NzE2N2IxNzYx
YWY4OTMwNzExNmIxMTAyY2FjLi4zYTdjOTdiYzA1ZGZhZGU4ZmEzZDcyODA2NzQ4NzNjY2Y2ZDM0
YTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lh
L2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25S
ZWNvcmRlci5oCkBAIC02Niw2ICs2Niw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRyYXdJbWFn
ZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYg
ZGVzdGluYXRpb24sIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBXZWJD
b3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd05hdGl2
ZUltYWdlKFdlYkNvcmU6Ok5hdGl2ZUltYWdlJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwg
Y29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29u
c3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRy
YXdOYXRpdmVQREZEb2N1bWVudChXZWJDb3JlOjpOYXRpdmVQREZEb2N1bWVudCYsIGNvbnN0IFdl
YkNvcmU6OkZsb2F0U2l6ZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkcmF3UGF0dGVybihXZWJDb3JlOjpOYXRpdmVJbWFnZSYsIGNvbnN0
IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdl
YkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYsIGNvbnN0
IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBjb25zdCBX
ZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkcmF3
UmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBmbG9hdCkgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0
SW1wbERpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9H
cmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwCmluZGV4IDBjNGYzYTQ5NzM2OWIwNDBlNWZl
ZmVjMTcyMWQwYzdlNmVjZjhjOTEuLmUzMmU5Y2JkMWJlZjc5ZjQ0OGM2ZjQ1ZGJhZjRlZDFiYTEx
NmM5MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9H
cmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwCkBAIC0yNzQs
NiArMjc0LDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpkcmF3TmF0aXZl
SW1hZ2UoTmF0aXZlSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hCiAgICAgRGlyZWN0MkQ6OmRyYXdO
YXRpdmVJbWFnZShtX3BsYXRmb3JtQ29udGV4dCwgaW1hZ2UucGxhdGZvcm1JbWFnZSgpLmdldCgp
LCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zLCBzdGF0ZS5hbHBoYSwgRGly
ZWN0MkQ6OlNoYWRvd1N0YXRlKHN0YXRlKSk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0SW1w
bERpcmVjdDJEOjpkcmF3TmF0aXZlUERGRG9jdW1lbnQoTmF0aXZlUERGRG9jdW1lbnQmLCBjb25z
dCBGbG9hdFNpemUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogdm9p
ZCBHcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQ6OmRyYXdQYXR0ZXJuKChOYXRpdmVJbWFnZSYg
aW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBh
dHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUm
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAoYXV0byBz
dXJmYWNlID0gaW1hZ2UucGxhdGZvcm1JbWFnZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxE
aXJlY3QyRC5oCmluZGV4IDkyY2UzZjA5YmI4NmYwOGFjZDVjMjZhYjU4NjA3ZGEyMjhmN2U3OGQu
LmNmNjkxYmUxNWFiYTVjNjgzNjc3OGE1YWIzZjA3MzBkMjg1N2EzYTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGly
ZWN0MkQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhp
Y3NDb250ZXh0SW1wbERpcmVjdDJELmgKQEAgLTcwLDYgKzcwLDcgQEAgcHVibGljOgogCiAgICAg
Ym9vbCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3Rp
bmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmKSBvdmVycmlkZTsKICAgICBib29sIGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYsIGNv
bnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBkcmF3TmF0aXZlUERGRG9jdW1lbnQoTmF0aXZlUERGRG9jdW1lbnQmLCBj
b25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJy
aWRlOwogICAgIHZvaWQgZHJhd1BhdHRlcm4oKE5hdGl2ZUltYWdlJiwgY29uc3QgRmxvYXRTaXpl
JiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFNpemUmLCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkcmF3UmVjdChj
b25zdCBGbG9hdFJlY3QmLCBmbG9hdCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckltYWdlLmNwcAppbmRleCBjMGJkODI3ZmM0NDQ2ZWU3OTcyMGEwZWVmMzZmNDNhOTQ4
ZjhkYzYwLi5kMjEwMzA4MmJiMzlkN2E4MzQ2ZmJlNjZkYjQ2MGI1ZDU0MzIzYjY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAKICNp
bmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVk
ZSAiSW5saW5lRWxlbWVudEJveC5oIgorI2luY2x1ZGUgIlBERkRvY3VtZW50SW1hZ2UuaCIKICNp
bmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFpbnRJbmZvLmgiCiAjaW5jbHVkZSAiUmVuZGVy
RnJhZ21lbnRlZEZsb3cuaCIKQEAgLTY0LDcgKzY1LDYgQEAKICNlbmRpZgogCiAjaWYgVVNFKENH
KQotI2luY2x1ZGUgIlBERkRvY3VtZW50SW1hZ2UuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgog
I2VuZGlmCiAKQEAgLTY2Miw3ICs2NjIsNyBAQCBJbWFnZURyYXdSZXN1bHQgUmVuZGVySW1hZ2U6
OnBhaW50SW50b1JlY3QoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEZsb2F0UmVjdAogICAg
IC8vIEZJWE1FOiBEb2N1bWVudCB3aGVuIGltYWdlICE9IGltZy5nZXQoKS4KICAgICBJbWFnZSog
aW1hZ2UgPSBpbWFnZVJlc291cmNlKCkuaW1hZ2UoKS5nZXQoKTsKIAotI2lmIFVTRShDRykKKyNp
ZiBFTkFCTEUoUERGRE9DVU1FTlRJTUFHRSkKICAgICBpZiAoaXM8UERGRG9jdW1lbnRJbWFnZT4o
aW1hZ2UpKQogICAgICAgICBkb3duY2FzdDxQREZEb2N1bWVudEltYWdlPigqaW1hZ2UpLnNldFBk
ZkltYWdlQ2FjaGluZ1BvbGljeShzZXR0aW5ncygpLnBkZkltYWdlQ2FjaGluZ1BvbGljeSgpKTsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IGUzZGZlNzk1MTZj
MzU5YWQ4NDA3N2JmNWZlODUyZmI5MWY3ZTNlZDAuLmQxYmRjZTUzZDU4M2IzOWE1Y2YyYjNlMzE0
OGY3ZjE3OWM4M2RmMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTE0
Miw2ICsxNDIsNyBAQAogI2luY2x1ZGUgIk5hdmlnYXRvckJlYWNvbi5oIgogI2luY2x1ZGUgIk5h
dmlnYXRvck1lZGlhRGV2aWNlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtMb2FkSW5mb3JtYXRpb24u
aCIKKyNpbmNsdWRlICJQREZEb2N1bWVudEltYWdlLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2lu
Y2x1ZGUgIlBhZ2VPdmVybGF5LmgiCiAjaW5jbHVkZSAiUGF0aFV0aWxpdGllcy5oIgpAQCAtMjI2
LDEwICsyMjcsNiBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KIAotI2lmIFVTRShDRykK
LSNpbmNsdWRlICJQREZEb2N1bWVudEltYWdlLmgiCi0jZW5kaWYKLQogI2lmIEVOQUJMRShJTlBV
VF9UWVBFX0NPTE9SKQogI2luY2x1ZGUgIkNvbG9yQ2hvb3Nlci5oIgogI2VuZGlmCkBAIC05MDcs
NyArOTA0LDcgQEAgc3RhdGljIEJpdG1hcEltYWdlKiBiaXRtYXBJbWFnZUZyb21JbWFnZUVsZW1l
bnQoSFRNTEltYWdlRWxlbWVudCYgZWxlbWVudCkKICAgICByZXR1cm4gaW1hZ2UgJiYgaXM8Qml0
bWFwSW1hZ2U+KGltYWdlKSA/ICZkb3duY2FzdDxCaXRtYXBJbWFnZT4oKmltYWdlKSA6IG51bGxw
dHI7CiB9CiAKLSNpZiBVU0UoQ0cpCisjaWYgRU5BQkxFKFBERkRPQ1VNRU5USU1BR0UpCiBzdGF0
aWMgUERGRG9jdW1lbnRJbWFnZSogcGRmRG9jdW1lbnRJbWFnZUZyb21JbWFnZUVsZW1lbnQoSFRN
TEltYWdlRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBhdXRvKiBpbWFnZSA9IGltYWdlRnJvbUlt
YWdlRWxlbWVudChlbGVtZW50KTsKQEAgLTk3MCw3ICs5NjcsNyBAQCB1bnNpZ25lZCBJbnRlcm5h
bHM6OmltYWdlRGVjb2RlQ291bnQoSFRNTEltYWdlRWxlbWVudCYgZWxlbWVudCkKIAogdW5zaWdu
ZWQgSW50ZXJuYWxzOjpwZGZEb2N1bWVudENhY2hpbmdDb3VudChIVE1MSW1hZ2VFbGVtZW50JiBl
bGVtZW50KQogewotI2lmIFVTRShDRykKKyNpZiBFTkFCTEUoUERGRE9DVU1FTlRJTUFHRSkKICAg
ICBhdXRvKiBwZGZEb2N1bWVudEltYWdlID0gcGRmRG9jdW1lbnRJbWFnZUZyb21JbWFnZUVsZW1l
bnQoZWxlbWVudCk7CiAgICAgcmV0dXJuIHBkZkRvY3VtZW50SW1hZ2UgPyBwZGZEb2N1bWVudElt
YWdlLT5jYWNoaW5nQ291bnRGb3JUZXN0aW5nKCkgOiAwOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKaW5kZXgg
NWM3NTQ1YmZlNjY5MjYyMGQwMTNmZGM4ODZkNzVlZjM5YzgxYWZkZC4uZjk1NzgzOGJiYzJhNzcz
NzEyZjMyYTYwZWFhMmY3MDdiMTk1MTQxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKQEAgLTcyLDcgKzcyLDggQEAg
cHVibGljOgogCiAgICAgICAgIGNvbnN0IGF1dG8mIGltYWdlQnVmZmVycyA9IG1fcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5yZW1vdGVSZXNvdXJjZUNhY2hlKCkuaW1hZ2VCdWZmZXJzKCk7CiAgICAg
ICAgIGNvbnN0IGF1dG8mIG5hdGl2ZUltYWdlcyA9IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5y
ZW1vdGVSZXNvdXJjZUNhY2hlKCkubmF0aXZlSW1hZ2VzKCk7Ci0gICAgICAgIFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpSZXBsYXllciByZXBsYXllciB7IEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjpj
b250ZXh0KCksIGRpc3BsYXlMaXN0LCAmaW1hZ2VCdWZmZXJzLCAmbmF0aXZlSW1hZ2VzLCB0aGlz
IH07CisgICAgICAgIGNvbnN0IGF1dG8mIG5hdGl2ZVBERkRvY3VtZW50cyA9IG1fcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5yZW1vdGVSZXNvdXJjZUNhY2hlKCkubmF0aXZlUERGRG9jdW1lbnRzKCk7
CisgICAgICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllciByZXBsYXllciB7IEJhc2VD
b25jcmV0ZUltYWdlQnVmZmVyOjpjb250ZXh0KCksIGRpc3BsYXlMaXN0LCAmaW1hZ2VCdWZmZXJz
LCAmbmF0aXZlSW1hZ2VzLCAmbmF0aXZlUERGRG9jdW1lbnRzLCB0aGlzIH07CiAgICAgICAgIHJl
dHVybiByZXBsYXllci5yZXBsYXkoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcApp
bmRleCBmNTljMzg3MjRmOGY2MmVlNzgwMmI5MjAyMzdmNjg4NDczZDdmYmY5Li4yNjJhYWM2OGU1
NmJmNmIyYWY2ZGM0MmJlZmY1MDA1MTBkZjQzMDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3Bw
CkBAIC0yMjgsNiArMjI4LDE1IEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y2FjaGVO
YXRpdmVJbWFnZShSZWY8TmF0aXZlSW1hZ2U+JiYgaW1hZ2UpCiAgICAgbV9yZW1vdGVSZXNvdXJj
ZUNhY2hlLmNhY2hlTmF0aXZlSW1hZ2UoV1RGTW92ZShpbWFnZSkpOwogfQogCit2b2lkIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ6OmNhY2hlTmF0aXZlUERGRG9jdW1lbnQoSVBDOjpTaGFyZWRCdWZm
ZXJDb3B5JiYgZGF0YSwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcikKK3sKKyAgICBpZiAoIWRhdGEuYnVmZmVyKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIGlmIChhdXRvIHBkZkRvY3VtZW50ID0gTmF0aXZlUERGRG9jdW1lbnQ6OmNyZWF0
ZShkYXRhLmJ1ZmZlcigpLnJlbGVhc2VOb25OdWxsKCksIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllcikpCisgICAgICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZU5hdGl2ZVBERkRvY3Vt
ZW50KG1ha2VSZWYoKnBkZkRvY3VtZW50KSk7Cit9CisKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6cmVsZWFzZVJlbW90ZVJlc291cmNlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBy
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiB7CiAgICAgbV9yZW1vdGVSZXNvdXJjZUNhY2hl
LnJlbGVhc2VSZW1vdGVSZXNvdXJjZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwpAQCAt
MzA1LDYgKzMxNCw3IEBAIE9wdGlvbmFsPERpc3BsYXlMaXN0OjpJdGVtSGFuZGxlPiBXQVJOX1VO
VVNFRF9SRVRVUk4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGVjCiAgICAgY2FzZSBEaXNwbGF5
TGlzdDo6SXRlbVR5cGU6OkRyYXdFbGxpcHNlOgogICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1U
eXBlOjpEcmF3SW1hZ2VCdWZmZXI6CiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRy
YXdOYXRpdmVJbWFnZToKKyAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd05hdGl2
ZVBERkRvY3VtZW50OgogICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3UGF0dGVy
bjoKICAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0xpbmU6CiAgICAgY2FzZSBE
aXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdSZWN0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKaW5kZXgg
NjQwNjY2OGZhZTA1MDU3ZTlkZjMyNjRmNTc1MjQ5NDg5ZDcwNWM3OC4uMGYxMzllNmRkZWExNzFm
OTVmNzM1YWY3YjQ0NzY5YTZkZGNlNWFjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCkBAIC0zNCw2
ICszNCw3IEBACiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgIlJlbW90ZVJl
c291cmNlQ2FjaGUuaCIKICNpbmNsdWRlICJSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci5oIgor
I2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckNvcHkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yU3Bh
Y2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Rpc3BsYXlMaXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9EaXNwbGF5TGlzdEl0ZW1zLmg+CkBAIC0xMDcsNiArMTA4LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHdha2VVcEFuZEFwcGx5RGlzcGxheUxpc3QoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1C
dWZmZXJJZGVudGlmaWVyIGluaXRpYWxJZGVudGlmaWVyLCB1aW50NjRfdCBpbml0aWFsT2Zmc2V0
LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZGVzdGluYXRpb25CdWZmZXJJ
ZGVudGlmaWVyKTsKICAgICB2b2lkIGdldEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRp
cGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgV2ViQ29yZTo6SW50UmVjdCBzcmNSZWN0LCBXZWJDb3Jl
OjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBD
OjpJbWFnZURhdGFSZWZlcmVuY2UmJik+JiYpOwogICAgIHZvaWQgY2FjaGVOYXRpdmVJbWFnZShS
ZWY8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+JiYpOworICAgIHZvaWQgY2FjaGVOYXRpdmVQREZEb2N1
bWVudChJUEM6OlNoYXJlZEJ1ZmZlckNvcHkmJiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKTsKICAgICB2b2lkIHJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJDb3JlOjpSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZGlkQ3JlYXRlU2hhcmVkRGlzcGxh
eUxpc3RIYW5kbGUoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyLCBj
b25zdCBTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSYsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciBkZXN0aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXIpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCmluZGV4IDhlMjdlMDRmNzczODFhNmZiOTk1NzM0MmEy
OWMyMTQ2MDcyZWVjZjguLjNhNTAxZjYxMTJlMzdjNzZhMWVkYTkyOTk3NDJhYjQyNjY4NjRhOTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmluCkBAIC0yNyw2ICsyNyw3
IEBAIG1lc3NhZ2VzIC0+IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQgTm90UmVmQ291bnRlZCB7CiAg
ICAgV2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1
ZmZlcklkZW50aWZpZXIgaW5pdGlhbElkZW50aWZpZXIsIHVpbnQ2NF90IGluaXRpYWxPZmZzZXQs
IFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbkJ1ZmZlcklk
ZW50aWZpZXIpCiAgICAgR2V0SW1hZ2VEYXRhKGVudW06dWludDhfdCBXZWJDb3JlOjpBbHBoYVBy
ZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwgV2ViQ29yZTo6SW50UmVjdCBzcmNSZWN0LCBX
ZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKSAtPiAoSVBDOjpJbWFnZURhdGFSZWZlcmVuY2UgaW1hZ2VEYXRhKSBTeW5jaHJvbm91
cwogICAgIENhY2hlTmF0aXZlSW1hZ2UoV2ViQ29yZTo6TmF0aXZlSW1hZ2VSZWZlcmVuY2UgbmF0
aXZlSW1hZ2UpCisgICAgQ2FjaGVOYXRpdmVQREZEb2N1bWVudChJUEM6OlNoYXJlZEJ1ZmZlckNv
cHkgZGF0YSwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcikKICAgICBEaWRDcmVhdGVTaGFyZWREaXNwbGF5TGlzdEhhbmRsZShX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIgaWRlbnRpZmllciwgV2Vi
S2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSBoYW5kbGUsIFdlYkNvcmU6OlJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXIpCiAgICAgUmVsZWFz
ZVJlbW90ZVJlc291cmNlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAKaW5kZXggYzMzMmQy
ZjcwNGUxNTg0ZDZjMGU1Y2ZiZGI3ZWQ1NmRjNGIyYzM2OS4uOTI3NTUyNWM3ZTllYmY5Zjk5YzJj
ZTFlNTgxNzgwNGNiMDM0MDBiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNwcApAQCAtNDgsMTIgKzQ4LDIw
IEBAIHZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVOYXRpdmVJbWFnZShSZWY8TmF0aXZl
SW1hZ2U+JiYgaW1hZ2UpCiAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5p
c05ld0VudHJ5KTsKIH0KIAordm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZU5hdGl2ZVBE
RkRvY3VtZW50KFJlZjxOYXRpdmVQREZEb2N1bWVudD4mJiBwZGZEb2N1bWVudCkKK3sKKyAgICBh
dXRvIGFkZFJlc3VsdCA9IG1fbmF0aXZlUERGRG9jdW1lbnRzLmFkZChwZGZEb2N1bWVudC0+cmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCksIFdURk1vdmUocGRmRG9jdW1lbnQpKTsKKyAgICBB
U1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOworfQorCiB2b2lk
IFJlbW90ZVJlc291cmNlQ2FjaGU6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZShSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogewogICAgIGlmICht
X2ltYWdlQnVmZmVycy5yZW1vdmUocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSkKICAgICAg
ICAgcmV0dXJuOwogICAgIGlmIChtX25hdGl2ZUltYWdlcy5yZW1vdmUocmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKSkKICAgICAgICAgcmV0dXJuOworICAgIGlmIChtX25hdGl2ZVBERkRvY3Vt
ZW50cy5yZW1vdmUocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJu
OwogICAgIC8vIENhY2hpbmcgdGhlIHJlbW90ZSByZXNvdXJjZSBzaG91bGQgaGF2ZSBoYXBwZW5l
ZCBiZWZvcmUgcmVsZWFzaW5nIGl0LgogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNl
Q2FjaGUuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJj
ZUNhY2hlLmgKaW5kZXggMWYyMTA1OGUzM2ExODc1YmJkN2Y3MmMwMTIzYzY1MDNlYzc5OWIwYi4u
ZjhlMWYwNGE1ZmJmMjFmMzhkMGFjMGU5OWUyYmMyNWY4NDFkMzVkNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5o
CkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlQnVmZmVyLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9OYXRpdmVJbWFnZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTmF0aXZl
UERGRG9jdW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlcmluZ1Jlc291cmNlSWRlbnRp
Zmllci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKQEAgLTQzLDE0ICs0NCwxNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBjYWNoZUltYWdlQnVmZmVyKFJlZjxXZWJDb3JlOjpJbWFnZUJ1ZmZl
cj4mJik7CiAgICAgV2ViQ29yZTo6SW1hZ2VCdWZmZXIqIGNhY2hlZEltYWdlQnVmZmVyKFdlYkNv
cmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgdm9pZCBjYWNoZU5hdGl2ZUlt
YWdlKFJlZjxXZWJDb3JlOjpOYXRpdmVJbWFnZT4mJik7CisgICAgdm9pZCBjYWNoZU5hdGl2ZVBE
RkRvY3VtZW50KFJlZjxXZWJDb3JlOjpOYXRpdmVQREZEb2N1bWVudD4mJik7CiAgICAgdm9pZCBy
ZWxlYXNlUmVtb3RlUmVzb3VyY2UoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KTsKICAgICAKICAgICBjb25zdCBXZWJDb3JlOjpJbWFnZUJ1ZmZlckhhc2hNYXAmIGltYWdlQnVm
ZmVycygpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VCdWZmZXJzOyB9CiAgICAgY29uc3QgV2ViQ29y
ZTo6TmF0aXZlSW1hZ2VIYXNoTWFwJiBuYXRpdmVJbWFnZXMoKSBjb25zdCB7IHJldHVybiBtX25h
dGl2ZUltYWdlczsgfQorICAgIGNvbnN0IFdlYkNvcmU6Ok5hdGl2ZVBERkRvY3VtZW50SGFzaE1h
cCYgbmF0aXZlUERGRG9jdW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV9uYXRpdmVQREZEb2N1bWVu
dHM7IH0KIAogcHJpdmF0ZToKICAgICBXZWJDb3JlOjpJbWFnZUJ1ZmZlckhhc2hNYXAgbV9pbWFn
ZUJ1ZmZlcnM7CiAgICAgV2ViQ29yZTo6TmF0aXZlSW1hZ2VIYXNoTWFwIG1fbmF0aXZlSW1hZ2Vz
OworICAgIFdlYkNvcmU6Ok5hdGl2ZVBERkRvY3VtZW50SGFzaE1hcCBtX25hdGl2ZVBERkRvY3Vt
ZW50czsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJv
eHkuaAppbmRleCAzMWNkMDJkMWIwZjIxZWRlNTgyMmJmOTQ1YmFkNDZlZGVmMWViMzdhLi41MDg0
ZWU0ZTg5ZDM3ZDNhMTNjZDJiYTUwZTk1NGZkYmFjYWJlZTI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVm
ZmVyUHJveHkuaApAQCAtMjMxLDYgKzIzMSwxMiBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICAgICBt
X3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+cmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5KCku
Y2FjaGVOYXRpdmVJbWFnZShpbWFnZSk7CiAgICAgfQogCisgICAgdm9pZCBjYWNoZU5hdGl2ZVBE
RkRvY3VtZW50KFdlYkNvcmU6Ok5hdGl2ZVBERkRvY3VtZW50JiBwZGZEb2N1bWVudCkgb3ZlcnJp
ZGUKKyAgICB7CisgICAgICAgIGlmIChtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKKyAg
ICAgICAgICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5yZW1vdGVSZXNvdXJjZUNh
Y2hlUHJveHkoKS5jYWNoZU5hdGl2ZVBERkRvY3VtZW50KHBkZkRvY3VtZW50KTsKKyAgICB9CisK
ICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlckhhbmRsZSBjcmVhdGVJdGVtQnVm
ZmVyKHNpemVfdCBjYXBhY2l0eSkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGlmIChtX3JlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKQEAgLTI5NSw2ICszMDEsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3RWxsaXBzZToK
ICAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdJbWFnZUJ1
ZmZlcjoKICAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdO
YXRpdmVJbWFnZToKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6
OkRyYXdOYXRpdmVQREZEb2N1bWVudDoKICAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6SXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgogICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpJdGVtVHlwZTo6RHJhd0xpbmU6CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW1UeXBlOjpEcmF3UmVjdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5LmNwcAppbmRleCBlNTJjYTQwNzM1ZTk3OWUzODdkODNkMTRkMjdjNDk2NjE3OGVjZmM3Li5m
OGE4MmJkMjhiOWZlMGM1NTExMjlhMmMyN2Y1OGZjYTJiZmZjM2FlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAi
UGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgiCiAjaW5jbHVkZSAiUmVtb3RlUmVuZGVy
aW5nQmFja2VuZE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJDb3B5LmgiCiAjaW5jbHVkZSAi
U2hhcmVkTWVtb3J5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogCkBAIC0xNzgsNiArMTc5
LDExIEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjYWNoZU5hdGl2ZUltYWdl
KE5hdGl2ZUltYWdlJiBpbWFnZSkKICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kOjpDYWNoZU5hdGl2ZUltYWdlKG1ha2VSZWYoaW1hZ2UpKSwgbV9yZW5kZXJpbmdCYWNr
ZW5kSWRlbnRpZmllcik7CiB9CiAKK3ZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojpj
YWNoZU5hdGl2ZVBERkRvY3VtZW50KE5hdGl2ZVBERkRvY3VtZW50JiBwZGZEb2N1bWVudCkKK3sK
KyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpDYWNoZU5hdGl2ZVBE
RkRvY3VtZW50KHBkZkRvY3VtZW50LmRhdGEoKSwgcGRmRG9jdW1lbnQucmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKCkpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKK30KKwogdm9p
ZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZShSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogewog
ICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OlJlbGVhc2VSZW1vdGVS
ZXNvdXJjZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpLCBtX3JlbmRlcmluZ0JhY2tlbmRJ
ZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCmluZGV4IDk1
ZjhkMmI0MTJmYjkxZGY3N2M2OGYxMzZiMDA3ODZmMDI0ZDdlMjYuLjJhN2M3NGQ5ZjkwYjVlMzgw
N2M1N2YwN2QwYWY4OTdkZWFlZGJjNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkuaApAQCAtNzksNiArNzksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdWJtaXREaXNwbGF5
TGlzdChjb25zdCBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3QmLCBXZWJDb3JlOjpS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZGVzdGluYXRpb25CdWZmZXJJZGVudGlmaWVyKTsK
ICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyIGZsdXNoRGlzcGxheUxp
c3RBbmRDb21taXQoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiwgV2Vi
Q29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB2b2lkIGNhY2hlTmF0aXZl
SW1hZ2UoV2ViQ29yZTo6TmF0aXZlSW1hZ2UmKTsKKyAgICB2b2lkIGNhY2hlTmF0aXZlUERGRG9j
dW1lbnQoV2ViQ29yZTo6TmF0aXZlUERGRG9jdW1lbnQmKTsKICAgICB2b2lkIHJlbGVhc2VSZW1v
dGVSZXNvdXJjZShXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogCiAgICAg
Ym9vbCB3YWl0Rm9ySW1hZ2VCdWZmZXJCYWNrZW5kV2FzQ3JlYXRlZCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hl
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVS
ZXNvdXJjZUNhY2hlUHJveHkuY3BwCmluZGV4IDkwNGFhZWFkOGNjNzFlODhmNjQyYjRiNTM2ZTY5
YWUxZTg5Mzk4OWMuLjI2NDQxY2M4YzY3NTdiYjk0MTgyZjA4ZDRlMDUxNjE0ZDNlNGVjNWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVz
b3VyY2VDYWNoZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAKQEAgLTc3LDYgKzc3LDMwIEBAIHZv
aWQgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpyZWxlYXNlTmF0aXZlSW1hZ2UoUmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyIHJlCiAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHku
cmVsZWFzZVJlbW90ZVJlc291cmNlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiB9CiAK
K3ZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5OjpjYWNoZU5hdGl2ZVBERkRvY3VtZW50KE5h
dGl2ZVBERkRvY3VtZW50JiBwZGZEb2N1bWVudCkKK3sKKyAgICBpZiAobV9zaGFyZWRQREZEb2N1
bWVudHMuY29udGFpbnMocGRmRG9jdW1lbnQucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkp
KQorICAgICAgICByZXR1cm47CisgICAgCisgICAgbV9zaGFyZWRQREZEb2N1bWVudHMuYWRkKHBk
ZkRvY3VtZW50LnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpKTsKKworICAgIC8vIFNldCBp
dHNlbGYgYXMgYW4gb2JzZXJ2ZXIgdG8gTmF0aXZlSW1hZ2UsIHNvIHJlbGVhc2VOYXRpdmVQREZE
b2N1bWVudCgpCisgICAgLy8gZ2V0cyBjYWxsZWQgd2hlbiBOYXRpdmVQREZEb2N1bWVudCBpcyBi
ZWluZyBkZWxlbGV0ZWQuCisgICAgcGRmRG9jdW1lbnQuc2V0T2JzZXJ2ZXIodGhpcyk7CisKKyAg
ICAvLyBUZWxsIHRoZSBHUFUgcHJvY2VzcyB0byBjYWNoZSB0aGlzIHJlc291cmNlLgorICAgIG1f
cmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNhY2hlTmF0aXZlUERGRG9jdW1lbnQocGRmRG9j
dW1lbnQpOworfQorCit2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6cmVsZWFzZU5hdGl2
ZVBERkRvY3VtZW50KFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIpCit7CisgICAgaWYgKCFtX3NoYXJlZFBERkRvY3VtZW50cy5yZW1vdmUocmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gVGVs
bCB0aGUgR1BVIHByb2Nlc3MgdG8gcmVtb3ZlIHRoaXMgcmVzb3VyY2UuCisgICAgbV9yZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkucmVsZWFzZVJlbW90ZVJlc291cmNlKHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcik7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8g
RU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmgKaW5kZXgg
MDZkZDRmNjhiOTNhOWU5N2ZhNTQ5YzAzZGZjNDlkYjkzODg4YmJmYi4uMTdiZGZiMzQ4YTRkZmE3
ZDM5OWFhMDJlODUxZGI2ZjM0MDUwOGZmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94
eS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVk
ZSA8V2ViQ29yZS9OYXRpdmVJbWFnZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTmF0aXZlUERGRG9j
dW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5o
PgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKQEAgLTM5LDcgKzQwLDcgQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiAKIGNsYXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTsKIAotY2xhc3Mg
UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5IDogcHVibGljIFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpP
YnNlcnZlciB7CitjbGFzcyBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkgOiBwdWJsaWMgV2ViQ29y
ZTo6TmF0aXZlSW1hZ2U6Ok9ic2VydmVyLCBwdWJsaWMgV2ViQ29yZTo6TmF0aXZlUERGRG9jdW1l
bnQ6Ok9ic2VydmVyIHsKIHB1YmxpYzoKICAgICBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkoUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Jik7CiAKQEAgLTQ4LDE3ICs0OSwyMSBAQCBwdWJsaWM6
CiAgICAgdm9pZCByZWxlYXNlSW1hZ2VCdWZmZXIoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKTsKIAogICAgIHZvaWQgY2FjaGVOYXRpdmVJbWFnZShXZWJDb3JlOjpOYXRpdmVJ
bWFnZSYpOworICAgIHZvaWQgY2FjaGVOYXRpdmVQREZEb2N1bWVudChXZWJDb3JlOjpOYXRpdmVQ
REZEb2N1bWVudCYpOwogCiAgICAgdXNpbmcgSW1hZ2VCdWZmZXJIYXNoTWFwID0gSGFzaE1hcDxX
ZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFdlYWtQdHI8V2ViQ29yZTo6SW1h
Z2VCdWZmZXI+PjsKICAgICBjb25zdCBJbWFnZUJ1ZmZlckhhc2hNYXAmIGltYWdlQnVmZmVycygp
IGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VCdWZmZXJzOyB9CiAKIHByaXZhdGU6CiAgICAgdXNpbmcg
TmF0aXZlSW1hZ2VIYXNoTWFwID0gSGFzaE1hcDxXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIsIFdlYWtQdHI8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+PjsKKyAgICB1c2luZyBTaGFy
ZWRQREZEb2N1bWVudEhhc2hTZXQgPSBIYXNoU2V0PFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcj47CiAgICAgCiAgICAgdm9pZCByZWxlYXNlTmF0aXZlSW1hZ2UoV2ViQ29yZTo6
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlbGVhc2VO
YXRpdmVQREZEb2N1bWVudChXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIG92
ZXJyaWRlOwogCiAgICAgSW1hZ2VCdWZmZXJIYXNoTWFwIG1faW1hZ2VCdWZmZXJzOwogICAgIE5h
dGl2ZUltYWdlSGFzaE1hcCBtX25hdGl2ZUltYWdlczsKKyAgICBTaGFyZWRQREZEb2N1bWVudEhh
c2hTZXQgbV9zaGFyZWRQREZEb2N1bWVudHM7CiAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5JiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTsKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0gYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCmluZGV4IDljYjNhYWVk
Nzc1ZjliNmZkOTNhYzI2OTVlYjg4ZmUzY2RkZjY3Y2EuLjQ0YjUwNmIyODE5MzI2OGY4ODczZWM0
MjYwM2Q1YTVmOGFhZjhlNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERlBsdWdpbi5tbQpAQCAtNzYsNyArNzYsNyBAQAogI2ltcG9ydCA8V2ViQ29y
ZS9Mb2NhbERlZmF1bHRTeXN0ZW1BcHBlYXJhbmNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0xvY2Fs
aXplZFN0cmluZ3MuaD4KICNpbXBvcnQgPFdlYkNvcmUvTW91c2VFdmVudC5oPgotI2ltcG9ydCA8
V2ViQ29yZS9QREZEb2N1bWVudEltYWdlLmg+CisjaW1wb3J0IDxXZWJDb3JlL05hdGl2ZVBERkRv
Y3VtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGFz
dGVib2FyZC5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybVNjcmVlbi5oPgpAQCAtMTU3Miw3
ICsxNTcyLDcgQEAgdm9pZCBQREZQbHVnaW46OmNvbnZlcnRQb3N0U2NyaXB0RGF0YUlmTmVlZGVk
KCkKICAgICBpZiAoIW1faXNQb3N0U2NyaXB0KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2Rh
dGEgPSBQREZEb2N1bWVudEltYWdlOjpjb252ZXJ0UG9zdFNjcmlwdERhdGFUb1BERihXVEZNb3Zl
KG1fZGF0YSkpOworICAgIG1fZGF0YSA9IE5hdGl2ZVBERkRvY3VtZW50Ojpjb252ZXJ0UG9zdFNj
cmlwdERhdGFUb1BERihXVEZNb3ZlKG1fZGF0YSkpOwogfQogCiB2b2lkIFBERlBsdWdpbjo6ZG9j
dW1lbnREYXRhRGlkRmluaXNoTG9hZGluZygpCg==
</data>
<flag name="commit-queue"
          id="431600"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414653</attachid>
            <date>2020-11-19 23:09:27 -0800</date>
            <delta_ts>2020-11-20 00:08:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218871-20201119230926.patch</filename>
            <type>text/plain</type>
            <size>134384</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMDY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGI4NTcwMTA2OWNiM2M0NTVmM2NkYjMz
ZGIxY2NlZWQ0MmJlODMyNTUuLjMxNzA0NjBmMzAzZmU3OWY2NmNmYTdjZmZhMmQwZTQ0ZWEyMDgw
MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjAtMTEtMTkgIFNhaWQgQWJvdS1IYWxsYXdhICA8
c2FpZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBTdXBwb3J0IHJlbmRlcmlu
ZyBQREZEb2N1bWVudEltYWdlIGluIEdQVSBQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg4NzEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybUVuYWJsZS5oOgorCiAyMDIw
LTExLTE5ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBv
c190aHJlYWRfc2VsZl9yZXN0cmljdF9yd3hfaXNfc3VwcG9ydGVkIGluc3RlYWQgb2YgcHRocmVh
ZF9qaXRfd3JpdGVfcHJvdGVjdF9zdXBwb3J0ZWRfbnAgb24gQXBwbGUgSW50ZXJuYWwgU0RLIGJ1
aWxkcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IGQxNDEwNTAxMzEzYTUyODk4ZDAwOGI1OGY2NTkxOGVjYTdiZTBk
YjYuLjllYjc1Y2EzM2NiNmQxMTI1NjVhMDA2Mzc5NzJhNzlkOGVmMTg3OGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMjggQEAKKzIwMjAtMTEtMTkgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBh
cHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBTdXBwb3J0IHJlbmRlcmluZyBQREZE
b2N1bWVudEltYWdlIGluIEdQVSBQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg4NzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogUGxhdGZvcm1B
cHBsZVdpbi5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiBT
b3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERh
dGFJZk5lZWRlZCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2
ZVBERkRvY3VtZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZVBERkRv
Y3VtZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBs
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2U6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZl
UERGRG9jdW1lbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZVBERkRvY3Vt
ZW50OjpOYXRpdmVQREZEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVQREZEb2N1
bWVudDo6fk5hdGl2ZVBERkRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZVBERkRv
Y3VtZW50OjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OnRyYW5zZm9ybUNvbnRleHRG
b3JQYWludGluZyk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVQREZEb2N1bWVudDo6dXBkYXRl
U25hcHNob3RJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVQREZEb2N1bWVudDo6
ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVQREZEb2N1bWVudDo6ZHVtcCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVQREZEb2N1bWVudDo6U25hcHNob3Q6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVQREZEb2N1bWVudDo6U25hcHNob3Q6OlNuYXBzaG90
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZVBERkRvY3VtZW50OjpTbmFwc2hvdDo6flNuYXBz
aG90KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZVBERkRvY3VtZW50OjpTbmFwc2hvdDo6Y2Fs
Y3VsYXRlU25hcHNob3RSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZVBERkRvY3VtZW50
OjpTbmFwc2hvdDo6Y2FuQ3JlYXRlU25hcHNob3QpOgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZl
UERGRG9jdW1lbnQ6OlNuYXBzaG90OjpjYW5CZVJldXNlZCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpOYXRpdmVQREZEb2N1bWVudDo6U25hcHNob3Q6Om1lbW9yeUNvc3QgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TmF0aXZlUERGRG9jdW1lbnQ6OlNuYXBzaG90Ojp0cmFuc2ZlclZpZXdw
b3J0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZVBERkRvY3VtZW50OjpTbmFwc2hvdDo6ZHJh
dyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlUERGRG9jdW1lbnQuaDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVQREZEb2N1bWVudDo6ZGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpOYXRpdmVQREZEb2N1bWVudDo6cmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZVBERkRvY3VtZW50OjpzZXRP
YnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVQREZEb2N1bWVudDo6cGRmSW1hZ2VD
YWNoaW5nUG9saWN5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZVBERkRvY3VtZW50
OjpzZXRQREZJbWFnZUNhY2hpbmdQb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlUERG
RG9jdW1lbnQ6OmNhY2hpbmdDb3VudEZvclRlc3RpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TmF0aXZlUERGRG9jdW1lbnQ6OnNuYXBzaG90TWVtb3J5Q29zdCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpOYXRpdmVQREZEb2N1bWVudDo6Y2xlYXJTbmFwc2hvdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvUERGRG9jdW1lbnRJbWFnZS5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6UERGRG9jdW1lbnRJbWFnZTo6UERGRG9jdW1lbnRJbWFnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjp+UERGRG9jdW1lbnRJbWFnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjpmaWxlbmFtZUV4dGVuc2lvbiBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OmNhY2hpbmdDb3VudEZvclRlc3RpbmcgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFnZTo6c2V0UGRmSW1hZ2VDYWNoaW5nUG9s
aWN5KToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OmRhdGFDaGFuZ2VkKToK
KyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OmRlc3Ryb3lEZWNvZGVkRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjpkZWNvZGVkU2l6ZUNoYW5nZWQp
OgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFnZTo6Y29tcHV0ZUludHJpbnNpY0Rp
bWVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFnZTo6ZHJhdyk6Cisg
ICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjpkdW1wIGNvbnN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9QREZEb2N1bWVudEltYWdlLmg6IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmguCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1QREZEb2N1bWVudC5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5o
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxD
YWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRy
YXdOYXRpdmVQREZEb2N1bWVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvTmF0aXZlUERGRG9jdW1lbnRDRy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TmF0
aXZlUERGRG9jdW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVQREZEb2N1
bWVudDo6Y29tcHV0ZUJvdW5kc0ZvckN1cnJlbnRQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5h
dGl2ZVBERkRvY3VtZW50OjpwYWdlQ291bnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6YXBw
bHlSb3RhdGlvbkZvclBhaW50aW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZVBERkRvY3Vt
ZW50OjpkcmF3UERGUGFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9j
dW1lbnRJbWFnZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29y
ZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Om5hdGl2ZVBERkRvY3VtZW50cyBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6OmNhY2hlTmF0aXZlUERG
RG9jdW1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1CdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0
ZW1IYW5kbGU6OmFwcGx5KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFu
ZGxlOjpkZXN0cm95KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxl
Ojpjb3B5VG8gY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpzaXplT2ZJdGVtSW5CeXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6aXNE
cmF3aW5nSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6aXNJbmxpbmVJdGVt
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtVHlwZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0
aXZlUERGRG9jdW1lbnQ6OmFwcGx5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpvcGVyYXRvcjw8KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtcy5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRy
YXdOYXRpdmVQREZEb2N1bWVudDo6RHJhd05hdGl2ZVBERkRvY3VtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlUERGRG9jdW1lbnQ6OnBkZkRvY3VtZW50SWRl
bnRpZmllciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2
ZVBERkRvY3VtZW50Ojpzb3VyY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkRyYXdOYXRpdmVQREZEb2N1bWVudDo6ZGVzdGluYXRpb25SZWN0IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlUERGRG9jdW1lbnQ6Omdsb2JhbEJv
dW5kcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZVBE
RkRvY3VtZW50Ojpsb2NhbEJvdW5kcyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpkcmF3TmF0aXZlUERGRG9jdW1lbnQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OkRlbGVnYXRlOjpj
YWNoZU5hdGl2ZVBERkRvY3VtZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6UmVwbGF5ZXI6OlJlcGxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjphcHBseURyYXdOYXRpdmVQREZEb2N1bWVudEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OlJlcGxheWVyOjphcHBseUl0ZW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL05hdGl2ZVBERkRvY3VtZW50TWFjLm1tOiBSZW5hbWVkIGZyb20g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMu
bW0uCisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVQREZEb2N1bWVudDo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5hdGl2ZVBERkRvY3VtZW50Ojpjb21wdXRlQm91bmRzRm9yQ3VycmVudFBh
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlUERGRG9jdW1lbnQ6OnBhZ2VDb3VudCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVQREZEb2N1bWVudDo6ZHJhd1BERlBhZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6TmF0aXZlUERGRG9jdW1lbnQ6OmNvbnZlcnRQb3N0U2NyaXB0RGF0
YVRvUERGKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29z
aWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcDoKKyAgICAgICAgKE5pY29zaWE6OkNhaXJvT3Bl
cmF0aW9uUmVjb3JkZXI6OmRyYXdOYXRpdmVQREZEb2N1bWVudCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGly
ZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJE
OjpkcmF3TmF0aXZlUERGRG9jdW1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dp
bi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVySW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OnBhaW50SW50b1Jl
Y3QpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkludGVybmFsczo6cGRmRG9jdW1lbnRDYWNoaW5nQ291bnQpOgorCiAyMDIwLTExLTE5ICBBZGl0
eWEgS2VlcnRoaSAgPGFrZWVydGhpQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXVtGQ1JdIEFk
ZCBuZXcgbG9vayBmb3IgcHJvZ3Jlc3MgYmFycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBjMDg4ZDc0NTBlMDZmN2U0
YjM4ODdjYTEyYjljMjU5NTAzMTc1MGRiLi5mNWY3N2MzMDQ3MTVhOThkZWQ4MzkwZGRhNTRiOTc4
MjU0YmMxYjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDIwLTExLTE5ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gU3Vw
cG9ydCByZW5kZXJpbmcgUERGRG9jdW1lbnRJbWFnZSBpbiBHUFUgUHJvY2VzcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4ODcxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZUltYWdlQnVmZmVyLmg6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVm
ZmVyOjpzdWJtaXREaXNwbGF5TGlzdCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6Y2FjaGVOYXRpdmVQREZEb2N1bWVudCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRlY29kZUl0ZW0pOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBH
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZU5hdGl2ZVBERkRvY3VtZW50KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6cmVsZWFzZVJlbW90ZVJlc291cmNlKToK
KyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaDoKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6bmF0aXZlUERGRG9jdW1lbnRzIGNv
bnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZl
clByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5OjpjYWNoZU5hdGl2ZVBERkRvY3VtZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmNhY2hlTmF0aXZlUERGRG9j
dW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OnJlbGVh
c2VOYXRpdmVQREZEb2N1bWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6Y29udmVydFBv
c3RTY3JpcHREYXRhSWZOZWVkZWQpOgorCiAyMDIwLTExLTE5ICBCcmVudCBGdWxnaGFtICA8YmZ1
bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgcm9sbG91dCBvZiByMjY5ODkw
IGFuZCByMjY5OTExIGR1ZSB0byBFTUUgaXNzdWVzIG9uIE1hYyBNaW5pLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUuaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3Jt
RW5hYmxlLmgKaW5kZXggNzAwMWJlYmQ5NjRjZWVhMjc5MTJkYTJkZGJjYmM0ODA5ZDQ1OGY5NC4u
NzgzZWI1Yzg3OWE4NjM1MTMxNTdkNzIwYjk2MmM5YjQ0NzE3ZTc1YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bUVuYWJsZS5oCkBAIC0yMjUsNiArMjI1LDE0IEBACiAjZGVmaW5lIEVOQUJMRV9DU1NfQ09OSUNf
R1JBRElFTlRTIDAKICNlbmRpZgogCisjaWYgIWRlZmluZWQoRU5BQkxFX1BERkRPQ1VNRU5USU1B
R0UpICYmIFVTRShDRykKKyNkZWZpbmUgRU5BQkxFX1BERkRPQ1VNRU5USU1BR0UgMQorI2VuZGlm
CisKKyNpZiAhZGVmaW5lZChFTkFCTEVfUERGS0lUX0ZPUl9QREZET0NVTUVOVElNQUdFKSAmJiBQ
TEFURk9STShNQUMpCisjZGVmaW5lIEVOQUJMRV9QREZLSVRfRk9SX1BERkRPQ1VNRU5USU1BR0Ug
MQorI2VuZGlmCisKICNpZiAhZGVmaW5lZChFTkFCTEVfQ1VTVE9NX0NVUlNPUl9TVVBQT1JUKQog
I2RlZmluZSBFTkFCTEVfQ1VTVE9NX0NVUlNPUl9TVVBQT1JUIDEKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMu
Y21ha2UKaW5kZXggMDIzZTE1M2RhM2M2N2RlMTdhMjUyYmVmMWNhYjI2ODdkNDM5MzA2ZC4uM2Iw
YTkyYjgwMDM4NGEyNjcxODY0OWNkNzAzNmEyMWU2NDMwMDY0YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtl
CkBAIC0xMjI5LDYgKzEyMjksNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFE
RVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFVc2FnZUluZm8uaAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL05hdGl2ZUltYWdlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFn
ZVJlZmVyZW5jZS5oCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlUERGRG9jdW1lbnQuaAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL09wZW5HTEVTU2hpbXMuaAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL09wZW5HTFNoaW1zLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmgKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4uY21ha2UgYi9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlCmluZGV4IDAxNTJlNTdkNzdkNmIyMmFkM2NkZDMwZGM0
MmU2MTgwZjE3NGE4YTguLjIxMTkzYTBkNGZkODk5MmIxNzEzM2JjOTRiY2FmOWYwYmIxYjhhMTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4uY21ha2UKKysrIGIv
U291cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZQpAQCAtMTQ1LDcgKzE0NSw3IEBA
IGVsc2UgKCkKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW50UmVjdENHLmNwcAogICAg
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbnRTaXplQ0cuY3BwCiAgICAgICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwCi0gICAgICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCisgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL05h
dGl2ZVBERkRvY3VtZW50Q0cuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdGhD
Ry5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcAogICAgICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9TdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9Q
bGF0Zm9ybU1hYy5jbWFrZQppbmRleCBjZmViMDM4YWVkOGVhZTUxNzEzYjg2NzA1MTdiNTZhZGMw
YzNiODJlLi41MjQwOGRjMTVhZjYyNjI0NmU2NjAwN2QzNzdkMzk0MDFmZWZkNzYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtMjk2LDcgKzI5Niw3IEBAIGxpc3QoQVBQRU5EIFdlYkNv
cmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ludFJlY3RDRy5jcHAKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbnRTaXplQ0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvTmF0aXZlSW1hZ2VDRy5jcHAKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVu
dEltYWdlLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZVBERkRvY3VtZW50Q0cu
Y3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0aENHLmNwcAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9TdWJpbWFn
ZUNhY2hlV2l0aFRpbWVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBhZmNmNDVhYWNiNDc0NzQzNjQx
M2Y4YWU1OTlmM2RhZTRiZWRjZGNmLi45Zjk0ZTc4Y2Y0ODllNzZjZDQ4MDgyYzcxYjdjMDU0Mzk4
NWVmZmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTk1MSwxMCArMTk1MSwxMiBAQCBwbGF0Zm9ybS9n
cmFwaGljcy9NSU1FVHlwZUNhY2hlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
Y3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9OYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UuY3BwCiBwbGF0
Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZS5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZVBE
RkRvY3VtZW50LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHAKIHBsYXRmb3JtL2dyYXBo
aWNzL1BhdGhUcmF2ZXJzYWxTdGF0ZS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGhVdGlsaXRp
ZXMuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3Mv
UERGRG9jdW1lbnRJbWFnZS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGltZVJhbmdl
cy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1Jl
bW90ZVZpZGVvU2FtcGxlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0Nv
Y29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggMmIzM2M0YmNl
NzRkZGVhZDgxOGJhM2NiMmE0NDkzMTU0NmI1OWE2MC4uMDQzNTlkZTA4OTk2OGRjYjBhZDdjMDkw
NDM2NmMwMmM2NzFkYWU5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29h
LnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0zNDAsNyArMzQw
LDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW50UG9pbnRDRy5jcHAKIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL0ludFJlY3RDRy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ludFNpemVDRy5jcHAK
IHBsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZUltYWdlQ0cuY3BwCi1wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAorcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlUERG
RG9jdW1lbnRDRy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdGhDRy5jcHAKIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1N1YmltYWdl
Q2FjaGVXaXRoVGltZXIuY3BwCkBAIC00MTMsNyArNDEzLDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0ljb25NYWMubW0KIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbQogcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0ludFBvaW50TWFjLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW50
U2l6ZU1hYy5tbQotcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0K
K3BsYXRmb3JtL2dyYXBoaWNzL21hYy9OYXRpdmVQREZEb2N1bWVudE1hYy5tbQogcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL1NpbXBsZUZvbnREYXRhQ29yZVRleHQuY3BwCiBwbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvU3dpdGNoaW5nR1BVQ2xpZW50LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1dlYktp
dE5TSW1hZ2VFeHRyYXMubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCA3NWE1MjJjMmFiZWIwZDE2ZDVjNjg4NmM3MTcwNjU3MjQ5
MjBjOTRlLi4zZjY5NTBlZWQ0NTA3Y2IxMTdiMmZhNWEyYmUxZjJiOTg5YzEwMTgxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0y
MTc3LDYgKzIxNzcsOCBAQAogCQk3MjdBN0YzQTI0MDc4Qjg0MDA0RDI5MzEgLyogSW1hZ2VCdWZm
ZXJJT1N1cmZhY2VCYWNrZW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3MkJBQzNBQjIzRTFFNTQ0MDA4RDc0MUMgLyogSW1hZ2VCdWZmZXJJT1N1cmZh
Y2VCYWNrZW5kLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNzI5OUJDNjcyM0Q2QTUzMjAwQ0M2ODgzIC8qIEFscGhhUHJlbXVsdGlwbGljYXRpb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyOTlCQzY0
MjNENjg2QTYwMENDNjg4MyAvKiBBbHBoYVByZW11bHRpcGxpY2F0aW9uLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzI5OUJDNjgyM0Q2QTUzRTAw
Q0M2ODgzIC8qIFJlbmRlcmluZ01vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDcyOTlCQzY2MjNENjg2QzYwMENDNjg4MyAvKiBSZW5kZXJpbmdNb2Rl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzI5
QzQ1Q0QyNTY2MDUzNDAwMDQwN0NGIC8qIE5hdGl2ZVBERkRvY3VtZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjlDNDVDQTI1NjRGODFCMDAwNDA3
Q0YgLyogTmF0aXZlUERGRG9jdW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk3MjlDNDVDRTI1NjYwNTZDMDAwNDA3Q0YgLyogUGxhdGZvcm1Q
REZEb2N1bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNzI5QzQ1Q0MyNTY1RDZDNzAwMDQwN0NGIC8qIFBsYXRmb3JtUERGRG9jdW1lbnQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MjlEMDUzMDI1
MzE0MjQzMDA0MjIwOTggLyogUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjlEMDUyRTI1MzEzRTI2MDA0
MjIwOTggLyogUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzJBNzNCRUYyNDVBM0Y5MDAwMUM5RDAz
IC8qIEFuaW1hdGlvbkZyYW1lUmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNzIyQTgxNUMyMzhGRDUwNTAwQzAwNTgzIC8qIEFuaW1hdGlvbkZyYW1l
UmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTcyQUI5QTIxMjU1QTlGREUwMEU2RUJGMSAvKiBOYXRpdmVJbWFnZVJlZmVyZW5jZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJBQjlBMUYyNTVBOUVB
NjAwRTZFQkYxIC8qIE5hdGl2ZUltYWdlUmVmZXJlbmNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTcwNTUsNyArNzA1Nyw3IEBACiAJCTJENUM5
Q0ZDMTlDN0I1MkUwMEIzQzVDMSAvKiBQYWdlT3ZlcmxheS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBQYWdlT3ZlcmxheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkyRDVDOUNGRDE5QzdCNTJFMDBCM0M1QzEgLyogUGFnZU92ZXJsYXlDb250cm9sbGVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhZ2VPdmVybGF5Q29udHJvbGxl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJENUM5Q0ZFMTlDN0I1MkUwMEIz
QzVDMSAvKiBQYWdlT3ZlcmxheUNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUGFnZU92ZXJsYXlDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTJENkU0NjgyMTdENjYwRjUwMEVDRjhCQiAvKiBQREZEb2N1bWVudEltYWdlTWFjLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUERGRG9jdW1lbnRJbWFn
ZU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkQ2RTQ2ODIxN0Q2NjBGNTAw
RUNGOEJCIC8qIE5hdGl2ZVBERkRvY3VtZW50TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gTmF0aXZlUERGRG9jdW1lbnRNYWMubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTJENkYzRThBMUMxRUNCMUMwMDYxREJENCAvKiBNb2NrUGFnZU92ZXJs
YXkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9ja1BhZ2VPdmVy
bGF5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ2RjNFOEIxQzFFQ0IxQzAw
NjFEQkQ0IC8qIE1vY2tQYWdlT3ZlcmxheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBNb2NrUGFnZU92ZXJsYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ2
RjNFOEMxQzFFQ0IxQzAwNjFEQkQ0IC8qIE1vY2tQYWdlT3ZlcmxheS5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gTW9ja1BhZ2VPdmVybGF5LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTEwMDMwLDYgKzEwMDMyLDEwIEBACiAJCTcyN0FGRUQzMUEyRUE2QTAwMDA0NDJFOCAv
KiBFWFRzUkdCLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBFWFRzUkdCLmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI5OUJDNjQyM0Q2ODZBNjAwQ0M2ODgzIC8qIEFscGhh
UHJlbXVsdGlwbGljYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWxwaGFQcmVtdWx0aXBsaWNhdGlv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Mjk5QkM2NjIzRDY4NkM2MDBDQzY4
ODMgLyogUmVuZGVyaW5nTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJpbmdNb2RlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyOUM0NUM3MjU2NEYwRTEwMDA0MDdDRiAvKiBO
YXRpdmVQREZEb2N1bWVudENHLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5hdGl2ZVBERkRvY3Vt
ZW50Q0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjlDNDVDOTI1NjRGODFC
MDAwNDA3Q0YgLyogTmF0aXZlUERGRG9jdW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmF0
aXZlUERGRG9jdW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjlDNDVD
QTI1NjRGODFCMDAwNDA3Q0YgLyogTmF0aXZlUERGRG9jdW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TmF0aXZlUERGRG9jdW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI5QzQ1
Q0MyNTY1RDZDNzAwMDQwN0NGIC8qIFBsYXRmb3JtUERGRG9jdW1lbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUGxhdGZvcm1QREZEb2N1bWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
MjlEMDUyRTI1MzEzRTI2MDA0MjIwOTggLyogUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3MkFCOUExRjI1NUE5RUE2MDBFNkVCRjEgLyogTmF0aXZlSW1h
Z2VSZWZlcmVuY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmF0aXZlSW1hZ2VSZWZlcmVuY2UuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJCQUMzQTQyM0UxNzMyNzAwOEQ3NDFDIC8qIElt
YWdlQnVmZmVyQmFja2VuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MjYyODksMTAgKzI2Mjk1LDkgQEAKIAkJCQkxQzIxRTU3QTE4M0VEMUZGMDAxQzI4OUQgLyogSU9T
dXJmYWNlUG9vbC5jcHAgKi8sCiAJCQkJMUMyMUU1N0IxODNFRDFGRjAwMUMyODlEIC8qIElPU3Vy
ZmFjZVBvb2wuaCAqLywKIAkJCQkzNzdBM0E4RjE1RUZDRTlBMDA1OUY1QzcgLyogTmF0aXZlSW1h
Z2VDRy5jcHAgKi8sCisJCQkJNzI5QzQ1QzcyNTY0RjBFMTAwMDQwN0NGIC8qIE5hdGl2ZVBERkRv
Y3VtZW50Q0cuY3BwICovLAogCQkJCUIyNzUzNTM1MEIwNTM4MTQwMDJDRTY0RiAvKiBQYXRoQ0cu
Y3BwICovLAogCQkJCUE4MEEzOEZEMEU1MENDODIwMEEyNUVCQyAvKiBQYXR0ZXJuQ0cuY3BwICov
LAotCQkJCUIyNzUzNTM2MEIwNTM4MTQwMDJDRTY0RiAvKiBQREZEb2N1bWVudEltYWdlLmNwcCAq
LywKLQkJCQlCMjc1MzUzNzBCMDUzODE0MDAyQ0U2NEYgLyogUERGRG9jdW1lbnRJbWFnZS5oICov
LAogCQkJCTFGQzQwRkI4MTY1NUM1OTEwMDQwRjI5RSAvKiBTdWJpbWFnZUNhY2hlV2l0aFRpbWVy
LmNwcCAqLywKIAkJCQkxRkM0MEZCNzE2NTVDNTkxMDA0MEYyOUUgLyogU3ViaW1hZ2VDYWNoZVdp
dGhUaW1lci5oICovLAogCQkJCUIyNzUzNTJBMEIwNTM4MTQwMDJDRTY0RiAvKiBUcmFuc2Zvcm1h
dGlvbk1hdHJpeENHLmNwcCAqLywKQEAgLTI2MzE4LDcgKzI2MzIzLDcgQEAKIAkJCQlCMjc1MzU0
RTBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2VNYWMubW0gKi8sCiAJCQkJQjI3NTM1NEYwQjA1Mzgx
NDAwMkNFNjRGIC8qIEludFBvaW50TWFjLm1tICovLAogCQkJCUIyNzUzNTUxMEIwNTM4MTQwMDJD
RTY0RiAvKiBJbnRTaXplTWFjLm1tICovLAotCQkJCTJENkU0NjgyMTdENjYwRjUwMEVDRjhCQiAv
KiBQREZEb2N1bWVudEltYWdlTWFjLm1tICovLAorCQkJCTJENkU0NjgyMTdENjYwRjUwMEVDRjhC
QiAvKiBOYXRpdmVQREZEb2N1bWVudE1hYy5tbSAqLywKIAkJCQkxNjNFODhGNTExOEEzOUQyMDBF
RDkyMzEgLyogU2ltcGxlRm9udERhdGFDb3JlVGV4dC5jcHAgKi8sCiAJCQkJQzExQTlFRDIyMTQw
NTc4QjAwQ0ZCMjBBIC8qIFN3aXRjaGluZ0dQVUNsaWVudC5jcHAgKi8sCiAJCQkJQzExQTlFQ0Qy
MTQwM0E1QzAwQ0ZCMjBBIC8qIFN3aXRjaGluZ0dQVUNsaWVudC5oICovLApAQCAtMjY1MzUsNiAr
MjY1NDAsOCBAQAogCQkJCTcyNTIzOTZCMjU0Q0FEQzIwMEY1RkIxNSAvKiBOYXRpdmVJbWFnZS5j
cHAgKi8sCiAJCQkJNTVBMzM2RjYxRDgyMDlGNDAwMjJDNEM3IC8qIE5hdGl2ZUltYWdlLmggKi8s
CiAJCQkJNzJBQjlBMUYyNTVBOUVBNjAwRTZFQkYxIC8qIE5hdGl2ZUltYWdlUmVmZXJlbmNlLmgg
Ki8sCisJCQkJNzI5QzQ1QzkyNTY0RjgxQjAwMDQwN0NGIC8qIE5hdGl2ZVBERkRvY3VtZW50LmNw
cCAqLywKKwkJCQk3MjlDNDVDQTI1NjRGODFCMDAwNDA3Q0YgLyogTmF0aXZlUERGRG9jdW1lbnQu
aCAqLywKIAkJCQlCMjc1MzU1MjBCMDUzODE0MDAyQ0U2NEYgLyogUGF0aC5jcHAgKi8sCiAJCQkJ
QjI3NTM1NTMwQjA1MzgxNDAwMkNFNjRGIC8qIFBhdGguaCAqLywKIAkJCQlBODhERDQ4ODBCNDYy
OUIwMDBDMDI5OTAgLyogUGF0aFRyYXZlcnNhbFN0YXRlLmNwcCAqLywKQEAgLTI2NTQzLDExICsy
NjU1MCwxNCBAQAogCQkJCTJENTAwMkZBMUI1NkQ3OTkwMDIwQUFGNyAvKiBQYXRoVXRpbGl0aWVz
LmggKi8sCiAJCQkJQThGQTZFNUMwRTRDRkRFRDAwRDVDRjQ5IC8qIFBhdHRlcm4uY3BwICovLAog
CQkJCUE4RkE2RTVCMEU0Q0ZERUQwMEQ1Q0Y0OSAvKiBQYXR0ZXJuLmggKi8sCisJCQkJQjI3NTM1
MzYwQjA1MzgxNDAwMkNFNjRGIC8qIFBERkRvY3VtZW50SW1hZ2UuY3BwICovLAorCQkJCUIyNzUz
NTM3MEIwNTM4MTQwMDJDRTY0RiAvKiBQREZEb2N1bWVudEltYWdlLmggKi8sCiAJCQkJNzI2RDU2
RTEyNTNBRTA0MzAwMDJFRjkwIC8qIFBsYXRmb3JtSW1hZ2UuaCAqLywKIAkJCQk3MkJBQzNBNjIz
RTE3MzI4MDA4RDc0MUMgLyogUGxhdGZvcm1JbWFnZUJ1ZmZlci5oICovLAogCQkJCTU1MDY0MEFE
MjQwNzU2REEwMEFBRTA0NSAvKiBQbGF0Zm9ybUltYWdlQnVmZmVyQmFja2VuZC5oICovLAogCQkJ
CTA1NjJGOTYwMTU3M0Y4OEYwMDMxQ0ExNiAvKiBQbGF0Zm9ybUxheWVyLmggKi8sCiAJCQkJQ0VF
RkNEN0IxOURCMzNEQzAwMzg3NkQ3IC8qIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oICov
LAorCQkJCTcyOUM0NUNDMjU2NUQ2QzcwMDA0MDdDRiAvKiBQbGF0Zm9ybVBERkRvY3VtZW50Lmgg
Ki8sCiAJCQkJMDcyODQ3RTIxNkVCQzVCMDAwNDNDRkE0IC8qIFBsYXRmb3JtVGV4dFRyYWNrLmgg
Ki8sCiAJCQkJMDc0RTgyQjgxOEE2OUYwRTAwN0VGNTRDIC8qIFBsYXRmb3JtVGltZVJhbmdlcy5j
cHAgKi8sCiAJCQkJMDc0RTgyQjkxOEE2OUYwRTAwN0VGNTRDIC8qIFBsYXRmb3JtVGltZVJhbmdl
cy5oICovLApAQCAtMzM1ODgsNiArMzM1OTgsNyBAQAogCQkJCTcyNkQ1NkUzMjUzQUUzNjYwMDAy
RUY5MCAvKiBOYXRpdmVJbWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzJBQjlBMjEyNTVBOUZE
RTAwRTZFQkYxIC8qIE5hdGl2ZUltYWdlUmVmZXJlbmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4
M0IyRDE3NTFCOEJDRDZBMDBBMDJFNDcgLyogTmF0aXZlTm9kZUZpbHRlci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNzI5QzQ1Q0QyNTY2MDUzNDAwMDQwN0NGIC8qIE5hdGl2ZVBERkRvY3VtZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlFMTBCOUI2QzBCNzQ3NTk5MDAzRUQ4OTAgLyogTmF0aXZlWFBh
dGhOU1Jlc29sdmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0NDRjAyNzBBRjZDNTI5MDAwMThF
ODkgLyogTmF2aWdhdGlvbkFjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc5RjQzRDQxMDc1
RTQ0QTAwMDBGODNCIC8qIE5hdmlnYXRpb25TY2hlZHVsZXIuaCBpbiBIZWFkZXJzICovLApAQCAt
MzM4MjMsNiArMzM4MzQsNyBAQAogCQkJCTA3Rjk0NDE2MTg2NEQwNDYwMDVEMzFDQiAvKiBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzNUM0NzY5MDlB
QzRENDMwMEE2QUFCNCAvKiBQbGF0Zm9ybU1vdXNlRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUM1OTg5MDU4MTRFOUMyOTkwMEU4RDE4QiAvKiBQbGF0Zm9ybVBhc3RlYm9hcmQuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTcyOUM0NUNFMjU2NjA1NkMwMDA0MDdDRiAvKiBQbGF0Zm9ybVBERkRvY3Vt
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0VDMDFENzBDMjc0RUI0MDA5RjRFQzkgLyogUGxh
dGZvcm1TY3JlZW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTI5N0JFM0Q1MTZDMDNDMDgwMDMzMTZC
RCAvKiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMjk3QkUzRDYxNkMwM0MwQjAwMzMxNkJEIC8qIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVm9p
Y2UuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJ
bWFnZS5jcHAKaW5kZXggNWNjOTMzODMyNTc0ZGNiZWJlZDgyYzJjMGJjZThmMDBjMmJjYTcyZS4u
NjZiNjUwYzYyYWEwNTI2NTkwN2MwODkyOWQyNTc0ZmJiNzkyZmZhMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5j
bHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1
ZGUgIk1lbW9yeUNhY2hlLmgiCisjaW5jbHVkZSAiTmF0aXZlUERGRG9jdW1lbnQuaCIKICNpbmNs
dWRlICJSZW5kZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHSW1hZ2UuaCIKICNpbmNsdWRlICJT
ZWN1cml0eU9yaWdpbi5oIgpAQCAtNDksMTAgKzUwLDYgQEAKICNpbmNsdWRlICJTeXN0ZW1NZW1v
cnkuaCIKICNlbmRpZgogCi0jaWYgVVNFKENHKQotI2luY2x1ZGUgIlBERkRvY3VtZW50SW1hZ2Uu
aCIKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIENhY2hlZEltYWdlOjpDYWNoZWRJ
bWFnZShDYWNoZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBQQUw6OlNlc3Npb25J
RCYgc2Vzc2lvbklELCBjb25zdCBDb29raWVKYXIqIGNvb2tpZUphcikKQEAgLTUyNiw4ICs1MjMs
OCBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBDYWNoZWRJbWFnZTo6Y29udmVydGVkRGF0YUlmTmVl
ZGVkKFNoYXJlZEJ1ZmZlciogZGF0YSkgY29ucwogewogICAgIGlmICghZGF0YSB8fCAhaXNQb3N0
U2NyaXB0UmVzb3VyY2UoKSkKICAgICAgICAgcmV0dXJuIGRhdGE7Ci0jaWYgUExBVEZPUk0oTUFD
KSAmJiAhVVNFKFdFQktJVF9JTUFHRV9ERUNPREVSUykKLSAgICByZXR1cm4gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoUERGRG9jdW1lbnRJbWFnZTo6Y29udmVydFBvc3RTY3JpcHREYXRhVG9QREYoZGF0
YS0+Y3JlYXRlQ0ZEYXRhKCkpLmdldCgpKTsKKyNpZiBFTkFCTEUoUERGRE9DVU1FTlRJTUFHRSkg
JiYgRU5BQkxFKFBERktJVF9GT1JfUERGRE9DVU1FTlRJTUFHRSkKKyAgICByZXR1cm4gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoTmF0aXZlUERGRG9jdW1lbnQ6OmNvbnZlcnRQb3N0U2NyaXB0RGF0YVRv
UERGKGRhdGEtPmNyZWF0ZUNGRGF0YSgpKS5nZXQoKSk7CiAjZWxzZQogICAgIC8vIExvYWRpbmcg
dGhlIGltYWdlIHNob3VsZCBoYXZlIGJlZW4gY2FuY2VsZWQgaWYgdGhlIHN5c3RlbSBkb2VzIG5v
dCBzdXBwb3J0IGNvbnZlcnRpbmcgUG9zdFNjcmlwdCB0byBQREYuCiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmNwcAppbmRleCA1Y2FjYTg1NDUyYzFhNjk4Yjk1ZTRkZjQ0MDA4NThjOTYz
NDVlY2U1Li5jYTQ4OWYwODA3ZWI1MDJhNTc3NWU2ZmM3ZDBiM2YwMDk4NjhlNjI4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5j
cHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiTWVk
aWFQbGF5ZXIuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGUuaCIKKyNpbmNsdWRlICJO
YXRpdmVQREZEb2N1bWVudC5oIgogI2luY2x1ZGUgIlJvdW5kZWRSZWN0LmgiCiAjaW5jbHVkZSAi
VGV4dFJ1bi5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KQEAgLTc0NCw2ICs3
NDUsMTkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFn
ZSYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2UKICAgICBkcmF3UGxhdGZvcm1JbWFnZShp
bWFnZS5wbGF0Zm9ybUltYWdlKCksIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlv
bnMpOwogfQogCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZVBERkRvY3VtZW50KE5h
dGl2ZVBERkRvY3VtZW50JiBwZGZEb2N1bWVudCwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit7CisgICAgaWYgKHBhaW50aW5nRGlz
YWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBt
X2ltcGwtPmRyYXdOYXRpdmVQREZEb2N1bWVudChwZGZEb2N1bWVudCwgaW1hZ2VTaXplLCBkZXN0
UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBw
ZGZEb2N1bWVudC5kcmF3KCp0aGlzLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRp
b25zKTsKK30KKwogSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKElt
YWdlJiBpbWFnZSwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJiBpbWFnZVBhaW50aW5nT3B0aW9ucykKIHsKICAgICByZXR1cm4gZHJhd0lt
YWdlKGltYWdlLCBGbG9hdFJlY3QoZGVzdGluYXRpb24sIGltYWdlLnNpemUoKSksIEZsb2F0UmVj
dChGbG9hdFBvaW50KCksIGltYWdlLnNpemUoKSksIGltYWdlUGFpbnRpbmdPcHRpb25zKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgK
aW5kZXggNDUzOWZiYjZkYmYzZWM3ODNjNjEzMzg2ZWEyNTQ5NGY0ZWI2YjFhNC4uN2ViMDVjMDJj
OWQ2OTVmYTA3ZDc4NzdjZTNiYzY4MTI0OTIzZjQ4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTkzLDYgKzkzLDggQEAg
Y2xhc3MgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlOwogY2xhc3MgSW1hZ2VCdWZmZXI7
CiBjbGFzcyBJbnRSZWN0OwogY2xhc3MgTWVkaWFQbGF5ZXI7CitjbGFzcyBOYXRpdmVJbWFnZTsK
K2NsYXNzIE5hdGl2ZVBERkRvY3VtZW50OwogY2xhc3MgUm91bmRlZFJlY3Q7CiBjbGFzcyBHcmFw
aGljc0NvbnRleHRHTDsKIGNsYXNzIFBhdGg7CkBAIC0zODAsNiArMzgyLDcgQEAgcHVibGljOgog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3Ryb2tlUmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9h
dCBsaW5lV2lkdGgpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3TmF0aXZlSW1hZ2Uo
TmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiA9IHsgfSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3TmF0aXZlUERGRG9j
dW1lbnQoTmF0aXZlUERGRG9jdW1lbnQmLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgSW1hZ2VE
cmF3UmVzdWx0IGRyYXdJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9u
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IEltYWdlT3JpZW50YXRpb246OkZyb21J
bWFnZSB9KTsKICAgICBXRUJDT1JFX0VYUE9SVCBJbWFnZURyYXdSZXN1bHQgZHJhd0ltYWdlKElt
YWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmID0geyBJbWFnZU9yaWVudGF0aW9uOjpGcm9tSW1hZ2UgfSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgKaW5k
ZXggNWM4MjVmN2Q0MWI5ODYxNmQxN2ZkYjhlYmU3Y2ZmZDdkMmJmY2M4Yy4uOTUxM2YxODc5NGNm
MzZkMWU0M2EzZDBlZGNiYWIyNGU1ZGNkZDJmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaApAQCAtNzEsNiArNzEs
NyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVm
ZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3Vy
Y2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBk
cmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd05hdGl2
ZVBERkRvY3VtZW50KE5hdGl2ZVBERkRvY3VtZW50JiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNp
emUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdQ
YXR0ZXJuKE5hdGl2ZUltYWdlJiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3Bh
Y2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZv
aWQgZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKSA9IDA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKaW5kZXggOTM3YWE0
ZDM1OTNkMWQyMzkxNzMzZjBjMDI3NzRhMjExMTMzNjVlMS4uZTVjYjFlMjBkYTIxZTdjZTBiYzU1
MmZlZTkyODBhNzYzOWE0OGQyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkltYWdlT2JzZXJ2ZXIuaCIK
ICNpbmNsdWRlICJMZW5ndGguaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCisjaW5j
bHVkZSAiUERGRG9jdW1lbnRJbWFnZS5oIgogI2luY2x1ZGUgIlNWR0ltYWdlLmgiCiAjaW5jbHVk
ZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8bWF0aC5oPgpAQCAtNDIsNyArNDMsNiBAQAog
I2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAogI2lmIFVTRShDRykKLSNpbmNsdWRl
ICJQREZEb2N1bWVudEltYWdlLmgiCiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5k
YXRpb24uaD4KICNlbmRpZgogCkBAIC03MCw3ICs3MCw3IEBAIFJlZlB0cjxJbWFnZT4gSW1hZ2U6
OmNyZWF0ZShJbWFnZU9ic2VydmVyJiBvYnNlcnZlcikKIAogICAgIGF1dG8gdXJsID0gb2JzZXJ2
ZXIuc291cmNlVXJsKCk7CiAgICAgaWYgKGlzUERGUmVzb3VyY2UobWltZVR5cGUsIHVybCkgfHwg
aXNQb3N0U2NyaXB0UmVzb3VyY2UobWltZVR5cGUsIHVybCkpIHsKLSNpZiBVU0UoQ0cpICYmICFV
U0UoV0VCS0lUX0lNQUdFX0RFQ09ERVJTKQorI2lmIEVOQUJMRShQREZET0NVTUVOVElNQUdFKQog
ICAgICAgICByZXR1cm4gUERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlKCZvYnNlcnZlcik7CiAjZWxz
ZQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL05hdGl2ZVBERkRvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL05hdGl2ZVBERkRvY3VtZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YzliZWRi
YmM0N2Q2ZDkwYzQyZWZjNzQ0MThhYzA1NzRjMTU5NGM3Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlUERGRG9jdW1lbnQuY3BwCkBAIC0w
LDAgKzEsMjQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOYXRpdmVQREZEb2N1bWVudC5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK05hdGl2ZVBERkRvY3VtZW50OjpOYXRpdmVQREZEb2N1
bWVudChTaGFyZWRCdWZmZXImIGRhdGEsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFBsYXRmb3JtUERGRG9jdW1lbnRQdHImJiBwbGF0Zm9y
bVBERkRvY3VtZW50KQorICAgIDogbV9kYXRhKG1ha2VSZWYoZGF0YSkpCisgICAgLCBtX3JlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcihyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCisgICAg
LCBtX3BsYXRmb3JtUERGRG9jdW1lbnQoV1RGTW92ZShwbGF0Zm9ybVBERkRvY3VtZW50KSkKK3sK
KyAgICBpZiAocGFnZUNvdW50KCkpCisgICAgICAgIGNvbXB1dGVCb3VuZHNGb3JDdXJyZW50UGFn
ZSgpOworfQorCitOYXRpdmVQREZEb2N1bWVudDo6fk5hdGl2ZVBERkRvY3VtZW50KCkKK3sKKyAg
ICBpZiAobV9vYnNlcnZlcikKKyAgICAgICAgbV9vYnNlcnZlci0+cmVsZWFzZU5hdGl2ZVBERkRv
Y3VtZW50KG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKK30KKworRmxvYXRTaXplIE5h
dGl2ZVBERkRvY3VtZW50OjpzaXplKCkgY29uc3QKK3sKKyAgICBGbG9hdFNpemUgZXhwYW5kZWRD
cm9wQm94U2l6ZSA9IEZsb2F0U2l6ZShleHBhbmRlZEludFNpemUobV9jcm9wQm94LnNpemUoKSkp
OworCisgICAgaWYgKG1fcm90YXRpb25EZWdyZWVzID09IDkwIHx8IG1fcm90YXRpb25EZWdyZWVz
ID09IDI3MCkKKyAgICAgICAgcmV0dXJuIGV4cGFuZGVkQ3JvcEJveFNpemUudHJhbnNwb3NlZFNp
emUoKTsKKyAgICByZXR1cm4gZXhwYW5kZWRDcm9wQm94U2l6ZTsKK30KKworc3RhdGljIHZvaWQg
dHJhbnNmb3JtQ29udGV4dEZvclBhaW50aW5nKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0KQoreworICAg
IGZsb2F0IGhTY2FsZSA9IGRlc3RSZWN0LndpZHRoKCkgLyBzcmNSZWN0LndpZHRoKCk7CisgICAg
ZmxvYXQgdlNjYWxlID0gZGVzdFJlY3QuaGVpZ2h0KCkgLyBzcmNSZWN0LmhlaWdodCgpOworCisg
ICAgaWYgKGhTY2FsZSAhPSB2U2NhbGUpIHsKKyAgICAgICAgZmxvYXQgbWluaW11bVNjYWxlID0g
c3RkOjptYXgoKGRlc3RSZWN0LndpZHRoKCkgLSAwLjUpIC8gc3JjUmVjdC53aWR0aCgpLCAoZGVz
dFJlY3QuaGVpZ2h0KCkgLSAwLjUpIC8gc3JjUmVjdC5oZWlnaHQoKSk7CisgICAgICAgIGZsb2F0
IG1heGltdW1TY2FsZSA9IHN0ZDo6bWluKChkZXN0UmVjdC53aWR0aCgpICsgMC41KSAvIHNyY1Jl
Y3Qud2lkdGgoKSwgKGRlc3RSZWN0LmhlaWdodCgpICsgMC41KSAvIHNyY1JlY3QuaGVpZ2h0KCkp
OworCisgICAgICAgIC8vIElmIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIHR3byBzY2FsZXMg
aXMgZHVlIHRvIGludGVnZXIgcm91bmRpbmcgb2YgaW1hZ2Ugc2l6ZXMsCisgICAgICAgIC8vIHVz
ZSB0aGUgc21hbGxlciBvZiB0aGUgdHdvIG9yaWdpbmFsIHNjYWxlcyB0byBlbnN1cmUgdGhhdCB0
aGUgaW1hZ2UgZml0cyBpbnNpZGUgdGhlCisgICAgICAgIC8vIHNwYWNlIG9yaWdpbmFsbHkgYWxs
b2NhdGVkIGZvciBpdC4KKyAgICAgICAgaWYgKG1pbmltdW1TY2FsZSA8PSBtYXhpbXVtU2NhbGUp
IHsKKyAgICAgICAgICAgIGhTY2FsZSA9IHN0ZDo6bWluKGhTY2FsZSwgdlNjYWxlKTsKKyAgICAg
ICAgICAgIHZTY2FsZSA9IGhTY2FsZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIGRyYXdQ
REZQYWdlKCkgcmVsaWVzIG9uIGRyYXdpbmcgdGhlIHdob2xlIFBERiBpbnRvIGEgY29udGV4dCBz
dGFydGluZyBhdCAoMCwgMCkuIFdlIG5lZWQKKyAgICAvLyB0byB0cmFuc2Zvcm0gdGhlIGRlc3Rp
bmF0aW9uIGNvbnRleHQgc3VjaCB0aGF0IHNyY1JlY3Qgb2YgdGhlIHNvdXJjZSBjb250ZXh0IHdp
bGwgYmUgZHJhd24KKyAgICAvLyBpbiBkZXN0UmVjdCBvZiBkZXN0aW5hdGlvbiBjb250ZXh0Lgor
ICAgIGNvbnRleHQudHJhbnNsYXRlKGRlc3RSZWN0LmxvY2F0aW9uKCkgLSBzcmNSZWN0LmxvY2F0
aW9uKCkpOworICAgIGNvbnRleHQuc2NhbGUoRmxvYXRTaXplKGhTY2FsZSwgLXZTY2FsZSkpOwor
ICAgIGNvbnRleHQudHJhbnNsYXRlKDAsIC1zcmNSZWN0LmhlaWdodCgpKTsKK30KKwordm9pZCBO
YXRpdmVQREZEb2N1bWVudDo6dXBkYXRlU25hcHNob3RJZk5lZWRlZChHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QpCit7CisgICAgLy8gQ2xpcHBlZCBvcHRp
b24gaXMgZm9yIHRlc3Rpbmcgb25seSBhbmQgaXQgcmVxdWlyZXMgdGhlIFBERiB0byBiZSByZS1j
YWNoZWQgd2l0aCBlYWNoIGRyYXcuCisgICAgYm9vbCBmb3JjZVVwZGF0ZVNuYXBzaG90ID0gbV9w
ZGZJbWFnZUNhY2hpbmdQb2xpY3kgPT0gUERGSW1hZ2VDYWNoaW5nUG9saWN5OjpDbGlwQm91bmRz
T25seTsKKyAgICBpZiAoIWZvcmNlVXBkYXRlU25hcHNob3QgJiYgbV9zbmFwc2hvdCkgeworICAg
ICAgICAvLyBBZGp1c3QgdGhlIHZpZXctcG9ydCByZWN0YW5nbGVzIGlmIG5vIHJlLWNhY2hpbmcg
d2lsbCBoYXBwZW4uCisgICAgICAgIGlmIChtX3NuYXBzaG90LT50cmFuc2ZlclZpZXdwb3J0KGNv
bnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0KSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBtX3NuYXBzaG90ID0gbnVsbHB0cjsKKyAgICAKKyAgICBGbG9hdFJlY3Qgc25hcHNob3RS
ZWN0OworICAgIHN3aXRjaCAobV9wZGZJbWFnZUNhY2hpbmdQb2xpY3kpIHsKKyAgICBjYXNlIFBE
RkltYWdlQ2FjaGluZ1BvbGljeTo6RGlzYWJsZWQ6CisgICAgICAgIHJldHVybjsKKyAgICBjYXNl
IFBERkltYWdlQ2FjaGluZ1BvbGljeTo6QmVsb3dNZW1vcnlMaW1pdDoKKyAgICAgICAgLy8gS2Vl
cCB0aGUgbWVtb3J5IHVzZWQgYnkgdGhlIGNhY2hlZCBpbWFnZSBiZWxvdyBzb21lIHRocmVzaG9s
ZCwgb3RoZXJ3aXNlIFdlYktpdCBwcm9jZXNzCisgICAgICAgIC8vIHdpbGwgamV0c2FtIGlmIGl0
IGV4Y2VlZHMgaXRzIG1lbW9yeSBsaW1pdC4gT25seSBhIHJlY3RhbmdsZSBmcm9tIHRoZSBQREYg
bWF5IGJlIGNhY2hlZC4KKyAgICAgICAgc25hcHNob3RSZWN0ID0gU25hcHNob3Q6OmNhbGN1bGF0
ZVNuYXBzaG90UmVjdChjb250ZXh0LCBkZXN0UmVjdCk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgUERGSW1hZ2VDYWNoaW5nUG9saWN5OjpDbGlwQm91bmRzT25seToKKyAgICAgICAgc25hcHNo
b3RSZWN0ID0gaW50ZXJzZWN0aW9uKGNvbnRleHQuY2xpcEJvdW5kcygpLCBkZXN0UmVjdCk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgUERGSW1hZ2VDYWNoaW5nUG9saWN5OjpFbmFibGVkOgor
ICAgICAgICBzbmFwc2hvdFJlY3QgPSBkZXN0UmVjdDsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
CisgICAgRmxvYXRTaXplIHNuYXBzaG90U2l6ZSA9IEZsb2F0UmVjdChlbmNsb3NpbmdJbnRSZWN0
KHNuYXBzaG90UmVjdCkpLnNpemUoKTsKKyAgICAKKyAgICAvLyBDYWNoZSB0aGUgUERGIGltYWdl
IG9ubHkgaWYgdGhlIHNpemUgb2YgdGhlIG5ldyBpbWFnZSB3b24ndCBleGNlZWQgdGhlIGNhY2hl
IHRocmVzaG9sZC4KKyAgICBpZiAobV9wZGZJbWFnZUNhY2hpbmdQb2xpY3kgPT0gUERGSW1hZ2VD
YWNoaW5nUG9saWN5OjpCZWxvd01lbW9yeUxpbWl0KSB7CisgICAgICAgIGlmICghU25hcHNob3Q6
OmNhbkNyZWF0ZVNuYXBzaG90KGNvbnRleHQsIHNuYXBzaG90U2l6ZSkpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIAorICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6
Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihzbmFwc2hvdFNpemUsIGNvbnRleHQpOworICAgIGlmICgh
aW1hZ2VCdWZmZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8mIGJ1ZmZlckNvbnRleHQg
PSBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpOworCisgICAgLy8gV2UgbmVlZCB0byB0cmFuc2Zvcm0g
dGhlIGNvb3JkaW5hdGUgc3lzdGVtIHN1Y2ggdGhhdCB0b3AtbGVmdCBvZiBhZGp1c3RlZERlc3RS
ZWN0IHdpbGwgYmUgbWFwcGVkIHRvIHRoZQorICAgIC8vIHRvcC1sZWZ0IG9mIGRlc3RSZWN0LiBB
bHRob3VnaCBvbmx5IGltYWdlQnVmZmVyUmVjdC5zaXplKCkgb2YgdGhlIGltYWdlIGNvcGllZCwg
dGhlIHNpemVzIG9mIHNyY1JlY3QKKyAgICAvLyBhbmQgZGVzdFJlY3Qgc2hvdWxkIGJlIHBhc3Nl
ZCB0byB0aGlzIGZ1bmN0aW9uIGJlY2F1c2UgdGhleSBhcmUgdXNlZCB0byBjYWxjdWxhdGUgdGhl
IGltYWdlIHNjYWxpbmcuCisgICAgdHJhbnNmb3JtQ29udGV4dEZvclBhaW50aW5nKGJ1ZmZlckNv
bnRleHQsIGRlc3RSZWN0LCBGbG9hdFJlY3Qoc25hcHNob3RSZWN0LmxvY2F0aW9uKCksIHNyY1Jl
Y3Quc2l6ZSgpKSk7CisgICAgZHJhd1BERlBhZ2UoYnVmZmVyQ29udGV4dCwgaW1hZ2VTaXplKTsK
KworICAgIGF1dG8gdHJhbnNmb3JtID0gY29udGV4dC5nZXRDVE0oR3JhcGhpY3NDb250ZXh0OjpE
ZWZpbml0ZWx5SW5jbHVkZURldmljZVNjYWxlKTsKKyAgICBtX3NuYXBzaG90ID0gU25hcHNob3Q6
OmNyZWF0ZShtYWtlUmVmKCppbWFnZUJ1ZmZlciksIHNuYXBzaG90UmVjdCwgZGVzdFJlY3QsIHNy
Y1JlY3QsIHRyYW5zZm9ybSk7CisgICAgCisgICAgQVNTRVJUKG1fc25hcHNob3QpOworICAgICsr
bV9jYWNoaW5nQ291bnRGb3JUZXN0aW5nOworfQorCit2b2lkIE5hdGl2ZVBERkRvY3VtZW50Ojpk
cmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCit7CisgICAgR3JhcGhpY3NDb250ZXh0
U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOworICAgIGNvbnRleHQuc2V0Q29tcG9zaXRl
T3BlcmF0aW9uKG9wdGlvbnMuY29tcG9zaXRlT3BlcmF0b3IoKSk7CisKKyAgICB1cGRhdGVTbmFw
c2hvdElmTmVlZGVkKGNvbnRleHQsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QpOworCisg
ICAgaWYgKG1fc25hcHNob3QpCisgICAgICAgIG1fc25hcHNob3QtPmRyYXcoY29udGV4dCk7Cisg
ICAgZWxzZSB7CisgICAgICAgIHRyYW5zZm9ybUNvbnRleHRGb3JQYWludGluZyhjb250ZXh0LCBk
ZXN0UmVjdCwgc3JjUmVjdCk7CisgICAgICAgIGRyYXdQREZQYWdlKGNvbnRleHQsIGltYWdlU2l6
ZSk7CisgICAgfQorfQorCit2b2lkIE5hdGl2ZVBERkRvY3VtZW50OjpkdW1wKFdURjo6VGV4dFN0
cmVhbSYgdHMpIGNvbnN0Cit7CisgICAgdHMuZHVtcFByb3BlcnR5KCJwYWdlLWNvdW50IiwgcGFn
ZUNvdW50KCkpOworICAgIHRzLmR1bXBQcm9wZXJ0eSgiY3JvcC1ib3giLCBtX2Nyb3BCb3gpOwor
ICAgIGlmIChtX3JvdGF0aW9uRGVncmVlcykKKyAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJyb3Rh
dGlvbiIsIG1fcm90YXRpb25EZWdyZWVzKTsKK30KKworc3RkOjp1bmlxdWVfcHRyPE5hdGl2ZVBE
RkRvY3VtZW50OjpTbmFwc2hvdD4gTmF0aXZlUERGRG9jdW1lbnQ6OlNuYXBzaG90OjpjcmVhdGUo
UmVmPEltYWdlQnVmZmVyPiYmIGltYWdlQnVmZmVyLCBjb25zdCBGbG9hdFJlY3QmIGltYWdlQnVm
ZmVyUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSkKK3sKKyAgICByZXR1cm4gc3Rk
Ojp1bmlxdWVfcHRyPFNuYXBzaG90PihuZXcgU25hcHNob3QoV1RGTW92ZShpbWFnZUJ1ZmZlciks
IGltYWdlQnVmZmVyUmVjdCwgZGVzdFJlY3QsIHNyY1JlY3QsIHRyYW5zZm9ybSkpOworfQorCitO
YXRpdmVQREZEb2N1bWVudDo6U25hcHNob3Q6OlNuYXBzaG90KFJlZjxJbWFnZUJ1ZmZlcj4mJiBp
bWFnZUJ1ZmZlciwgY29uc3QgRmxvYXRSZWN0JiBzbmFwc2hvdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiB0cmFuc2Zvcm0pCisgICAgOiBtX2ltYWdlQnVmZmVyKFdURk1vdmUoaW1hZ2VCdWZmZXIp
KQorICAgICwgbV9zbmFwc2hvdFJlY3Qoc25hcHNob3RSZWN0KQorICAgICwgbV9kZXN0UmVjdChk
ZXN0UmVjdCkKKyAgICAsIG1fc3JjUmVjdChzcmNSZWN0KQorICAgICwgbV90cmFuc2Zvcm0odHJh
bnNmb3JtKQoreworICAgIEFTU0VSVChtYXhTbmFwc2hvdHNNZW1vcnlDb3N0IC0gbV9hbGxTbmFw
c2hvdHNNZW1vcnlDb3N0ID49IG1lbW9yeUNvc3QoKSk7CisgICAgbV9hbGxTbmFwc2hvdHNNZW1v
cnlDb3N0ICs9IG1lbW9yeUNvc3QoKTsKK30KKworTmF0aXZlUERGRG9jdW1lbnQ6OlNuYXBzaG90
Ojp+U25hcHNob3QoKQoreworICAgIEFTU0VSVChtX2FsbFNuYXBzaG90c01lbW9yeUNvc3QgPj0g
bWVtb3J5Q29zdCgpKTsKKyAgICBtX2FsbFNuYXBzaG90c01lbW9yeUNvc3QgLT0gbWVtb3J5Q29z
dCgpOworfQorCitGbG9hdFJlY3QgTmF0aXZlUERGRG9jdW1lbnQ6OlNuYXBzaG90OjpjYWxjdWxh
dGVTbmFwc2hvdFJlY3QoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0KQoreworICAgIEZsb2F0UmVjdCBkaXJ0eVJlY3QgPSBjb250ZXh0LmNsaXBCb3Vu
ZHMoKTsKKworICAgIC8vIENhbGN1bGF0ZSB0aGUgbWF4aW11bSByZWN0YW5nbGUgd2UgY2FuIGNh
Y2hlIGFyb3VuZCB0aGUgY2VudGVyIG9mIHRoZSBjbGlwcGluZyBib3VuZHMuCisgICAgRmxvYXRT
aXplIG1heFNpemUgPSBtYXhTbmFwc2hvdFNpZGUgLyBjb250ZXh0LnNjYWxlRmFjdG9yKCk7Cisg
ICAgRmxvYXRQb2ludCBtaW5Mb2NhdGlvbiA9IEZsb2F0UG9pbnQoZGlydHlSZWN0LmNlbnRlcigp
IC0gbWF4U2l6ZSAvIDIpOworCisgICAgLy8gRW5zdXJlIHRoZSBjbGlwcGluZyBib3VuZHMgYXJl
IGFsbCBpbmNsdWRlZCBidXQgd2l0aGluIHRoZSBib3VuZHMgb2YgdGhlIGRzdFJlY3QKKyAgICBy
ZXR1cm4gaW50ZXJzZWN0aW9uKHVuaW9uUmVjdChkaXJ0eVJlY3QsIEZsb2F0UmVjdChtaW5Mb2Nh
dGlvbiwgbWF4U2l6ZSkpLCBkZXN0UmVjdCk7Cit9CisKK2Jvb2wgTmF0aXZlUERGRG9jdW1lbnQ6
OlNuYXBzaG90OjpjYW5DcmVhdGVTbmFwc2hvdChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IEZsb2F0U2l6ZSYgaW1hZ2VCdWZmZXJTaXplKQoreworICAgIGF1dG8gbWVtb3J5Q29zdCA9
IEltYWdlQnVmZmVyOjpjb21wYXRpYmxlQnVmZmVyU2l6ZShpbWFnZUJ1ZmZlclNpemUsIGNvbnRl
eHQpLnVuY2xhbXBlZEFyZWEoKSAqIDQ7CisgICAgcmV0dXJuIG1heFNuYXBzaG90c01lbW9yeUNv
c3QgLSBtX2FsbFNuYXBzaG90c01lbW9yeUNvc3QgPj0gbWVtb3J5Q29zdDsKK30KKworYm9vbCBO
YXRpdmVQREZEb2N1bWVudDo6U25hcHNob3Q6OmNhbkJlUmV1c2VkKEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0KSBjb25zdAoreworICAgIC8vIE9sZCBhbmQgbmV3IHNvdXJjZSByZWN0YW5nbGVzIGhhdmUg
dG8gbWF0Y2guCisgICAgaWYgKHNyY1JlY3QgIT0gbV9zcmNSZWN0KQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICAvLyBPbGQgYW5kIG5ldyBzY2FsaW5nIGZhY3RvcnMgImRlc3QgLyBzcmMi
IGhhdmUgdG8gbWF0Y2guCisgICAgaWYgKGRlc3RSZWN0LnNpemUoKSAhPSBtX2Rlc3RSZWN0LnNp
emUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gbV9zbmFwc2hvdFJlY3R0IGNh
biBiZSBtb3ZlZCBpZiBzcmNSZWN0IGFuZCBkZXN0UmVjdC5zaXplKCkgZGlkIG5vdCBjaGFuZ2Uu
CisgICAgRmxvYXRSZWN0IG1vdmVkU25hcHNob3RSZWN0ID0gbV9zbmFwc2hvdFJlY3Q7CisgICAg
bW92ZWRTbmFwc2hvdFJlY3QubW92ZShGbG9hdFNpemUoZGVzdFJlY3QubG9jYXRpb24oKSAtIG1f
ZGVzdFJlY3QubG9jYXRpb24oKSkpOworCisgICAgLy8gbW92ZWRDYWNoZWRJbWFnZVJlY3QgaGFz
IHRvIGNvbnRhaW4gdGhlIHdob2xlIGRpcnR5IHJlY3RhbmdsZS4KKyAgICBGbG9hdFJlY3QgZGly
dHlSZWN0ID0gaW50ZXJzZWN0aW9uKGNvbnRleHQuY2xpcEJvdW5kcygpLCBkZXN0UmVjdCk7Cisg
ICAgaWYgKCFtb3ZlZFNuYXBzaG90UmVjdC5jb250YWlucyhkaXJ0eVJlY3QpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICAvLyBPbGQgYW5kIG5ldyBjb250ZXh0IHNjYWxpbmcgZmFjdG9y
cyBoYXZlIHRvIG1hdGNoIGFzIHdlbGwuCisgICAgQWZmaW5lVHJhbnNmb3JtOjpEZWNvbXBvc2Vk
VHlwZSBkZWNvbXBvc2VkVHJhbnNmb3JtOworICAgIGNvbnRleHQuZ2V0Q1RNKEdyYXBoaWNzQ29u
dGV4dDo6RGVmaW5pdGVseUluY2x1ZGVEZXZpY2VTY2FsZSkuZGVjb21wb3NlKGRlY29tcG9zZWRU
cmFuc2Zvcm0pOworCisgICAgQWZmaW5lVHJhbnNmb3JtOjpEZWNvbXBvc2VkVHlwZSBjYWNoZWRE
ZWNvbXBvc2VkVHJhbnNmb3JtOworICAgIG1fdHJhbnNmb3JtLmRlY29tcG9zZShjYWNoZWREZWNv
bXBvc2VkVHJhbnNmb3JtKTsKKyAgICAKKyAgICByZXR1cm4gZGVjb21wb3NlZFRyYW5zZm9ybS5z
Y2FsZVggPT0gY2FjaGVkRGVjb21wb3NlZFRyYW5zZm9ybS5zY2FsZVggJiYgZGVjb21wb3NlZFRy
YW5zZm9ybS5zY2FsZVkgPT0gY2FjaGVkRGVjb21wb3NlZFRyYW5zZm9ybS5zY2FsZVk7Cit9CisK
K3NpemVfdCBOYXRpdmVQREZEb2N1bWVudDo6U25hcHNob3Q6Om1lbW9yeUNvc3QoKSBjb25zdAor
eworICAgIHJldHVybiBtX2ltYWdlQnVmZmVyLT5iYWNrZW5kU2l6ZSgpLnVuY2xhbXBlZEFyZWEo
KSAqIDQ7Cit9CisKK2Jvb2wgTmF0aXZlUERGRG9jdW1lbnQ6OlNuYXBzaG90Ojp0cmFuc2ZlclZp
ZXdwb3J0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0KQoreworICAgIGlmICghY2FuQmVSZXVzZWQoY29u
dGV4dCwgZGVzdFJlY3QsIHNyY1JlY3QpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBt
X3NuYXBzaG90UmVjdC5tb3ZlKEZsb2F0U2l6ZShkZXN0UmVjdC5sb2NhdGlvbigpIC0gbV9kZXN0
UmVjdC5sb2NhdGlvbigpKSk7CisgICAgbV9kZXN0UmVjdCA9IGRlc3RSZWN0OworICAgIHJldHVy
biB0cnVlOworfQorCit2b2lkIE5hdGl2ZVBERkRvY3VtZW50OjpTbmFwc2hvdDo6ZHJhdyhHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQpCit7CisgICAgY29udGV4dC5kcmF3SW1hZ2VCdWZmZXIobV9p
bWFnZUJ1ZmZlciwgbV9kZXN0UmVjdCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZVBERkRvY3Vt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVQREZEb2N1bWVu
dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmViOTEzNjQzOGU3NzM5NjA3ZTcwNDZkZjg3NzY2OTFkODY2ODYzMmEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRp
dmVQREZEb2N1bWVudC5oCkBAIC0wLDAgKzEsMTI4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQWZmaW5l
VHJhbnNmb3JtLmgiCisjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiUERGSW1hZ2VD
YWNoaW5nUG9saWN5LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1QREZEb2N1bWVudC5oIgorI2luY2x1
ZGUgIlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIEltYWdlQnVmZmVyOworc3RydWN0IEltYWdlUGFpbnRpbmdPcHRpb25zOworCitj
bGFzcyBOYXRpdmVQREZEb2N1bWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPE5hdGl2ZVBERkRvY3Vt
ZW50PiB7CitwdWJsaWM6CisgICAgY2xhc3MgT2JzZXJ2ZXIgeworICAgIHB1YmxpYzoKKyAgICAg
ICAgdmlydHVhbCB+T2JzZXJ2ZXIoKSA9IGRlZmF1bHQ7CisgICAgICAgIHZpcnR1YWwgdm9pZCBy
ZWxlYXNlTmF0aXZlUERGRG9jdW1lbnQoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSA9IDA7
CisgICAgcHJvdGVjdGVkOgorICAgICAgICBPYnNlcnZlcigpID0gZGVmYXVsdDsKKyAgICB9Owor
CisgICAgc3RhdGljIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxOYXRpdmVQREZEb2N1bWVudD4gY3Jl
YXRlKFNoYXJlZEJ1ZmZlciYsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciA9IFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcjo6Z2VuZXJhdGUoKSk7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB+
TmF0aXZlUERGRG9jdW1lbnQoKTsKKworICAgIGNvbnN0IFNoYXJlZEJ1ZmZlciYgZGF0YSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGF0YS5nZXQoKTsgfQorICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcjsgfQorICAgIHZvaWQgc2V0T2JzZXJ2ZXIoT2JzZXJ2ZXIq
IG9ic2VydmVyKSB7IG1fb2JzZXJ2ZXIgPSBvYnNlcnZlcjsgfQorCisgICAgRmxvYXRTaXplIHNp
emUoKSBjb25zdDsKKyAgICB1bnNpZ25lZCBwYWdlQ291bnQoKSBjb25zdDsKKworICAgIFBERklt
YWdlQ2FjaGluZ1BvbGljeSBwZGZJbWFnZUNhY2hpbmdQb2xpY3koKSBjb25zdCB7IHJldHVybiBt
X3BkZkltYWdlQ2FjaGluZ1BvbGljeTsgfQorICAgIHZvaWQgc2V0UERGSW1hZ2VDYWNoaW5nUG9s
aWN5KFBERkltYWdlQ2FjaGluZ1BvbGljeSBwZGZJbWFnZUNhY2hpbmdQb2xpY3kpIHsgbV9wZGZJ
bWFnZUNhY2hpbmdQb2xpY3kgPSBwZGZJbWFnZUNhY2hpbmdQb2xpY3k7IH0KKworICAgIHZvaWQg
Y29tcHV0ZUJvdW5kc0ZvckN1cnJlbnRQYWdlKCk7CisgICAgdm9pZCBkcmF3KEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
Jik7CisKKyAgICB1bnNpZ25lZCBjYWNoaW5nQ291bnRGb3JUZXN0aW5nKCkgY29uc3QgeyByZXR1
cm4gbV9jYWNoaW5nQ291bnRGb3JUZXN0aW5nOyB9CisgICAgc2l6ZV90IHNuYXBzaG90TWVtb3J5
Q29zdCgpIGNvbnN0IHsgcmV0dXJuIG1fc25hcHNob3QgPyBtX3NuYXBzaG90LT5tZW1vcnlDb3N0
KCkgOiAwOyB9CisgICAgdm9pZCBjbGVhclNuYXBzaG90KCkgeyBtX3NuYXBzaG90ID0gbnVsbHB0
cjsgfQorICAgIAorICAgIHZvaWQgZHVtcChXVEY6OlRleHRTdHJlYW0mKSBjb25zdDsKKworI2lm
IEVOQUJMRShQREZLSVRfRk9SX1BERkRPQ1VNRU5USU1BR0UpCisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFJldGFpblB0cjxDRk11dGFibGVEYXRhUmVmPiBjb252ZXJ0UG9zdFNjcmlwdERhdGFU
b1BERihSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIHBvc3RTY3JpcHREYXRhKTsKKyNlbmRpZgorCitw
cml2YXRlOgorICAgIGNsYXNzIFNuYXBzaG90IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8U25hcHNob3Q+IGNyZWF0ZShSZWY8SW1hZ2VCdWZmZXI+JiYsIGNv
bnN0IEZsb2F0UmVjdCYgaW1hZ2VCdWZmZXJSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpOworCisg
ICAgICAgIH5TbmFwc2hvdCgpOworICAgICAgICAKKyAgICAgICAgLy8gVG8gYXZvaWQgdGhlIGpl
dHNhbSBvbiBpT1MsIHdlIGFyZSBnb2luZyB0byBsaW1pdCB0aGUgc2l6ZSBvZiBhbGwgdGhlIFBE
RiBzbmFwc2hvdHMgdG8gYmUgNjRNQi4KKyAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qg
bWF4U25hcHNob3RTaWRlID0gNCAqIDEwMjQ7CisgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6
ZV90IG1heFNuYXBzaG90QXJlYSA9IG1heFNuYXBzaG90U2lkZSAqIG1heFNuYXBzaG90U2lkZTsK
KyAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgbWF4U25hcHNob3RzTWVtb3J5Q29zdCA9
IG1heFNuYXBzaG90QXJlYSAqIDQ7CisKKyAgICAgICAgc3RhdGljIEZsb2F0UmVjdCBjYWxjdWxh
dGVTbmFwc2hvdFJlY3QoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCk7CisgICAgICAgIHN0YXRpYyBib29sIGNhbkNyZWF0ZVNuYXBzaG90KEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VCdWZmZXJTaXplKTsKKworICAgICAgICBzaXplX3Qg
bWVtb3J5Q29zdCgpIGNvbnN0OworICAgICAgICBib29sIHRyYW5zZmVyVmlld3BvcnQoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0KTsKKyAgICAgICAgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYpOworCisgICAgcHJp
dmF0ZToKKyAgICAgICAgU25hcHNob3QoUmVmPEltYWdlQnVmZmVyPiYmLCBjb25zdCBGbG9hdFJl
Y3QmIGltYWdlQnVmZmVyUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKKyAgICAgICAgYm9vbCBj
YW5CZVJldXNlZChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QpIGNvbnN0OworCisgICAgICAgIFJlZjxJbWFnZUJ1ZmZl
cj4gbV9pbWFnZUJ1ZmZlcjsKKyAgICAgICAgRmxvYXRSZWN0IG1fc25hcHNob3RSZWN0OworICAg
ICAgICBGbG9hdFJlY3QgbV9kZXN0UmVjdDsKKyAgICAgICAgRmxvYXRSZWN0IG1fc3JjUmVjdDsK
KyAgICAgICAgQWZmaW5lVHJhbnNmb3JtIG1fdHJhbnNmb3JtOworICAgICAgICBpbmxpbmUgc3Rh
dGljIHNpemVfdCBtX2FsbFNuYXBzaG90c01lbW9yeUNvc3QgeyAwIH07CisgICAgfTsKKworICAg
IE5hdGl2ZVBERkRvY3VtZW50KFNoYXJlZEJ1ZmZlciYsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciwgUGxhdGZvcm1QREZEb2N1bWVudFB0ciYmKTsKKworICAgIHZvaWQgdXBkYXRlU25hcHNo
b3RJZk5lZWRlZChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0KTsKKyAg
ICB2b2lkIGRyYXdQREZQYWdlKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0U2l6ZSYgaW1h
Z2VTaXplKTsKKworICAgIFJlZjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKKyAgICBSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7CisKKyAgICBP
YnNlcnZlciogbV9vYnNlcnZlciB7IG51bGxwdHIgfTsKKyAgICBQbGF0Zm9ybVBERkRvY3VtZW50
UHRyIG1fcGxhdGZvcm1QREZEb2N1bWVudDsKKworICAgIEZsb2F0UmVjdCBtX2Nyb3BCb3g7Cisg
ICAgaW50IG1fcm90YXRpb25EZWdyZWVzIHsgMCB9OyAvLyBDYW4gb25seSBiZSAwLCA5MCwgMTgw
LCBvciAyNzAgZGVncmVlcy4KKworICAgIFBERkltYWdlQ2FjaGluZ1BvbGljeSBtX3BkZkltYWdl
Q2FjaGluZ1BvbGljeSB7IGRlZmF1bHRQREZJbWFnZUNhY2hpbmdQb2xpY3kgfTsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8U25hcHNob3Q+IG1fc25hcHNob3Q7CisgICAgdW5zaWduZWQgbV9jYWNoaW5n
Q291bnRGb3JUZXN0aW5nIHsgMCB9OworfTsKKwordXNpbmcgTmF0aXZlUERGRG9jdW1lbnRIYXNo
TWFwID0gSGFzaE1hcDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFJlZjxOYXRpdmVQREZE
b2N1bWVudD4+OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QREZEb2N1bWVudEltYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BERkRvY3VtZW50SW1hZ2UuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljc3ODVmNjQwNTIxZjg0ZThlZWRkYjgxYWI2NjZmZTIwOTJkNDFlZjcKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QREZEb2N1bWVudEltYWdlLmNw
cApAQCAtMCwwICsxLDEzMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIwIEFwcGxl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUERGRG9jdW1l
bnRJbWFnZS5oIgorCisjaWYgRU5BQkxFKFBERkRPQ1VNRU5USU1BR0UpCisKKyNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJJbWFnZU9ic2VydmVyLmgiCisjaW5jbHVkZSAi
TmF0aXZlUERGRG9jdW1lbnQuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworUERGRG9jdW1lbnRJbWFnZTo6UERGRG9jdW1lbnRJbWFn
ZShJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKKyAgICA6IEltYWdlKG9ic2VydmVyKQoreworfQor
CitQREZEb2N1bWVudEltYWdlOjp+UERGRG9jdW1lbnRJbWFnZSgpCit7CisgICAgZGVzdHJveURl
Y29kZWREYXRhKHRydWUpOworfQorCitTdHJpbmcgUERGRG9jdW1lbnRJbWFnZTo6ZmlsZW5hbWVF
eHRlbnNpb24oKSBjb25zdAoreworICAgIHJldHVybiAicGRmIjsKK30KKworRmxvYXRTaXplIFBE
RkRvY3VtZW50SW1hZ2U6OnNpemUoSW1hZ2VPcmllbnRhdGlvbikgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9uYXRpdmVQREZEb2N1bWVudCA/IG1fbmF0aXZlUERGRG9jdW1lbnQtPnNpemUoKSA6IEZs
b2F0U2l6ZSgpOworfQorCit1bnNpZ25lZCBQREZEb2N1bWVudEltYWdlOjpjYWNoaW5nQ291bnRG
b3JUZXN0aW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9uYXRpdmVQREZEb2N1bWVudCA/IG1f
bmF0aXZlUERGRG9jdW1lbnQtPmNhY2hpbmdDb3VudEZvclRlc3RpbmcoKSA6IDA7Cit9CisKK3Zv
aWQgUERGRG9jdW1lbnRJbWFnZTo6c2V0UGRmSW1hZ2VDYWNoaW5nUG9saWN5KFBERkltYWdlQ2Fj
aGluZ1BvbGljeSBwZGZJbWFnZUNhY2hpbmdQb2xpY3kpCit7CisgICAgaWYgKCFtX25hdGl2ZVBE
RkRvY3VtZW50IHx8IG1fbmF0aXZlUERGRG9jdW1lbnQtPnBkZkltYWdlQ2FjaGluZ1BvbGljeSgp
ID09IHBkZkltYWdlQ2FjaGluZ1BvbGljeSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9uYXRp
dmVQREZEb2N1bWVudC0+c2V0UERGSW1hZ2VDYWNoaW5nUG9saWN5KHBkZkltYWdlQ2FjaGluZ1Bv
bGljeSk7CisgICAgZGVzdHJveURlY29kZWREYXRhKCk7Cit9CisKK0VuY29kZWREYXRhU3RhdHVz
IFBERkRvY3VtZW50SW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxsRGF0YVJlY2VpdmVkKQorewor
ICAgIEFTU0VSVCghbV9uYXRpdmVQREZEb2N1bWVudCk7CisKKyAgICBpZiAoYWxsRGF0YVJlY2Vp
dmVkICYmICFtX25hdGl2ZVBERkRvY3VtZW50KQorICAgICAgICBtX25hdGl2ZVBERkRvY3VtZW50
ID0gTmF0aXZlUERGRG9jdW1lbnQ6OmNyZWF0ZSgqZGF0YSgpKTsKKworICAgIHJldHVybiBtX25h
dGl2ZVBERkRvY3VtZW50ID8gRW5jb2RlZERhdGFTdGF0dXM6OkNvbXBsZXRlIDogRW5jb2RlZERh
dGFTdGF0dXM6OlVua25vd247Cit9CisKK3ZvaWQgUERGRG9jdW1lbnRJbWFnZTo6ZGVzdHJveURl
Y29kZWREYXRhKGJvb2wpCit7CisgICAgaWYgKG1fbmF0aXZlUERGRG9jdW1lbnQpCisgICAgICAg
IG1fbmF0aXZlUERGRG9jdW1lbnQtPmNsZWFyU25hcHNob3QoKTsKKyAgICBkZWNvZGVkU2l6ZUNo
YW5nZWQoKTsKK30KKwordm9pZCBQREZEb2N1bWVudEltYWdlOjpkZWNvZGVkU2l6ZUNoYW5nZWQo
KQoreworICAgIHNpemVfdCBuZXdNZW1vcnlDb3N0ID0gbV9uYXRpdmVQREZEb2N1bWVudCA/IG1f
bmF0aXZlUERGRG9jdW1lbnQtPnNuYXBzaG90TWVtb3J5Q29zdCgpIDogMDsKKyAgICBpZiAobV9t
ZW1vcnlDb3N0ID09IG5ld01lbW9yeUNvc3QpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChp
bWFnZU9ic2VydmVyKCkpCisgICAgICAgIGltYWdlT2JzZXJ2ZXIoKS0+ZGVjb2RlZFNpemVDaGFu
Z2VkKCp0aGlzLCAtc3RhdGljX2Nhc3Q8bG9uZyBsb25nPihtX21lbW9yeUNvc3QpICsgbmV3TWVt
b3J5Q29zdCk7CisKKyAgICBtX21lbW9yeUNvc3QgPSBuZXdNZW1vcnlDb3N0OworfQorCit2b2lk
IFBERkRvY3VtZW50SW1hZ2U6OmNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKExlbmd0aCYgaW50
cmluc2ljV2lkdGgsIExlbmd0aCYgaW50cmluc2ljSGVpZ2h0LCBGbG9hdFNpemUmIGludHJpbnNp
Y1JhdGlvKQoreworICAgIC8vIEZJWE1FOiBJZiB3ZSB3YW50IHNpemUgbmVnb3RpYXRpb24gd2l0
aCBQREYgZG9jdW1lbnRzIGFzLWltYWdlLCB0aGlzIGlzIHRoZSBwbGFjZSB0byBpbXBsZW1lbnQg
aXQgKGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjA5NSkuCisgICAg
SW1hZ2U6OmNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKGludHJpbnNpY1dpZHRoLCBpbnRyaW5z
aWNIZWlnaHQsIGludHJpbnNpY1JhdGlvKTsKKyAgICBpbnRyaW5zaWNSYXRpbyA9IEZsb2F0U2l6
ZSgpOworfQorCitJbWFnZURyYXdSZXN1bHQgUERGRG9jdW1lbnRJbWFnZTo6ZHJhdyhHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3sKKyAg
ICBpZiAoIW1fbmF0aXZlUERGRG9jdW1lbnQgfHwgIW1fbmF0aXZlUERGRG9jdW1lbnQtPnBhZ2VD
b3VudCgpKQorICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOworCisg
ICAgY29udGV4dC5kcmF3TmF0aXZlUERGRG9jdW1lbnQoKm1fbmF0aXZlUERGRG9jdW1lbnQsIHNp
emUoKSwgZHN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CisgICAgZGVjb2RlZFNpemVDaGFuZ2Vk
KCk7CisKKyAgICBpZiAoaW1hZ2VPYnNlcnZlcigpKQorICAgICAgICBpbWFnZU9ic2VydmVyKCkt
PmRpZERyYXcoKnRoaXMpOworCisgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6RGlkRHJhdzsK
K30KKwordm9pZCBQREZEb2N1bWVudEltYWdlOjpkdW1wKFRleHRTdHJlYW0mIHRzKSBjb25zdAor
eworICAgIEltYWdlOjpkdW1wKHRzKTsKKyAgICBpZiAobV9uYXRpdmVQREZEb2N1bWVudCkKKyAg
ICAgICAgbV9uYXRpdmVQREZEb2N1bWVudC0+ZHVtcCh0cyk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShQREZET0NVTUVOVElNQUdFKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUERGRG9jdW1lbnRJbWFnZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUERGRG9jdW1lbnRJbWFnZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmIyMzZlNWI1NDg5NDc5NzU0ZmE4ZWQzZWE5MjYwMDliMzg4MDU2MTAKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QREZEb2N1bWVudElt
YWdlLmgKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIwIEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShQREZET0NVTUVO
VElNQUdFKQorCisjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NUeXBl
cy5oIgorI2luY2x1ZGUgIkltYWdlLmgiCisjaW5jbHVkZSAiUERGSW1hZ2VDYWNoaW5nUG9saWN5
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR3JhcGhpY3NDb250ZXh0OworY2xh
c3MgTmF0aXZlUERGRG9jdW1lbnQ7CisKK2NsYXNzIFBERkRvY3VtZW50SW1hZ2UgZmluYWwgOiBw
dWJsaWMgSW1hZ2UgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8UERGRG9jdW1lbnRJbWFnZT4g
Y3JlYXRlKEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgUERGRG9jdW1lbnRJbWFnZShvYnNlcnZlcikpOworICAgIH0KKworICAgIFdF
QkNPUkVfRVhQT1JUIHVuc2lnbmVkIGNhY2hpbmdDb3VudEZvclRlc3RpbmcoKSBjb25zdDsKKyAg
ICB2b2lkIHNldFBkZkltYWdlQ2FjaGluZ1BvbGljeShQREZJbWFnZUNhY2hpbmdQb2xpY3kpOwor
ICAgIAorcHJpdmF0ZToKKyAgICBQREZEb2N1bWVudEltYWdlKEltYWdlT2JzZXJ2ZXIqKTsKKyAg
ICB2aXJ0dWFsIH5QREZEb2N1bWVudEltYWdlKCk7CisKKyAgICBib29sIGlzUERGRG9jdW1lbnRJ
bWFnZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIGhhc1Npbmds
ZVNlY3VyaXR5T3JpZ2luKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAg
Ly8gRklYTUU6IEltcGxlbWVudCB0aGlzIHRvIGJlIGxlc3MgY29uc2VydmF0aXZlLgorICAgIGJv
b2wgY3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
ZmFsc2U7IH0KKworICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0IG92ZXJyaWRl
OworICAgIEZsb2F0U2l6ZSBzaXplKEltYWdlT3JpZW50YXRpb24gPSBJbWFnZU9yaWVudGF0aW9u
OjpGcm9tSW1hZ2UpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgZGVjb2RlZFNpemVDaGFuZ2Vk
KCk7CisKKyAgICBFbmNvZGVkRGF0YVN0YXR1cyBkYXRhQ2hhbmdlZChib29sIGFsbERhdGFSZWNl
aXZlZCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoYm9vbCAvKmRlc3Ry
b3lBbGwqLyA9IHRydWUpIG92ZXJyaWRlOworCisgICAgdm9pZCBjb21wdXRlSW50cmluc2ljRGlt
ZW5zaW9ucyhMZW5ndGgmIGludHJpbnNpY1dpZHRoLCBMZW5ndGgmIGludHJpbnNpY0hlaWdodCwg
RmxvYXRTaXplJiBpbnRyaW5zaWNSYXRpbykgb3ZlcnJpZGU7CisgICAgSW1hZ2VEcmF3UmVzdWx0
IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSkgb3Zl
cnJpZGU7CisKKyAgICB2b2lkIGR1bXAoV1RGOjpUZXh0U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7
CisgICAgCisgICAgUmVmUHRyPE5hdGl2ZVBERkRvY3VtZW50PiBtX25hdGl2ZVBERkRvY3VtZW50
OworICAgIHNpemVfdCBtX21lbW9yeUNvc3QgeyAwIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfSU1BR0UoUERGRG9jdW1lbnRJbWFnZSkK
KworI2VuZGlmIC8vIEVOQUJMRShQREZET0NVTUVOVElNQUdFKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1QREZEb2N1bWVudC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1QREZEb2N1bWVudC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjBhODdhMTc2ZTdmOTEzZTAzMGQ0YjgyMGNiODIzMTM5ODYwNjQyNDEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVBERkRvY3Vt
ZW50LmgKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIFVTRShDRykKKyNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CisjaWYgRU5BQkxFKFBERktJVF9GT1JfUERGRE9DVU1FTlRJTUFHRSkKK09C
SkNfQ0xBU1MgUERGRG9jdW1lbnQ7CisjZWxzZQordXNpbmcgQ0dQREZEb2N1bWVudFJlZiA9IHN0
cnVjdCBDR1BERkRvY3VtZW50ICo7CisjZW5kaWYKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKKyNpZiBVU0UoQ0cpCisjaWYgRU5BQkxFKFBERktJVF9GT1JfUERGRE9DVU1FTlRJTUFH
RSkKK3VzaW5nIFBsYXRmb3JtUERGRG9jdW1lbnRQdHIgPSBSZXRhaW5QdHI8UERGRG9jdW1lbnQ+
OworI2Vsc2UKK3VzaW5nIFBsYXRmb3JtUERGRG9jdW1lbnRQdHIgPSBSZXRhaW5QdHI8Q0dQREZE
b2N1bWVudFJlZj47CisjZW5kaWYKKyNlbHNlCit1c2luZyBQbGF0Zm9ybVBERkRvY3VtZW50UHRy
ID0gdm9pZCo7CisjZW5kaWYKKworI2lmIEVOQUJMRShQREZLSVRfRk9SX1BERkRPQ1VNRU5USU1B
R0UpCitXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGF0YVJlZj4gY29udmVydFBv
c3RTY3JpcHREYXRhVG9QREYoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBwb3N0U2NyaXB0RGF0YSk7
CisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4
dEltcGxDYWlyby5jcHAKaW5kZXggMTQ2YTVlY2FkNTA1MTQ1YzlmODk1MDZlYzhkYjA1NzcyMzZl
YjNmNy4uYzczMzAzZDkzZmM0Mzg4MjIwZWE2NWZhN2E3YTJjMTkzYTQ0NDBmNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0
SW1wbENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCkBAIC0yNzYsNiArMjc2LDExIEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmIGlt
YWdlLCBjb25zdCBGbG9hdFNpCiAgICAgQ2Fpcm86OmRyYXdQbGF0Zm9ybUltYWdlKG1fcGxhdGZv
cm1Db250ZXh0LCBpbWFnZS5wbGF0Zm9ybUltYWdlKCkuZ2V0KCksIGRlc3RSZWN0LCBzcmNSZWN0
LCB7IG9wdGlvbnMsIHN0YXRlLmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkgfSwgc3RhdGUuYWxw
aGEsIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOwogfQogCit2b2lkIEdyYXBoaWNzQ29udGV4
dEltcGxDYWlybzo6ZHJhd05hdGl2ZVBERkRvY3VtZW50KE5hdGl2ZVBERkRvY3VtZW50JiwgY29u
c3QgRmxvYXRTaXplJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmKQoreworICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQu
Cit9CisKIHZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpkcmF3UGF0dGVybihOYXRpdmVJ
bWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9h
dFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewog
ICAgIFVOVVNFRF9QQVJBTShzcGFjaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJv
LmgKaW5kZXggMWJlNWEwMmQ0ZDYzYzE5MDMzODUxM2E5NWVlNDUzZDczYTAxNDY5Ni4uZjVjNDRm
YmUxYzQ0NjA4OWFiZGMwNjNlM2Y5MTg0Y2ViZWFjMDRjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250
ZXh0SW1wbENhaXJvLmgKQEAgLTczLDYgKzczLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBkcmF3
SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJh
d05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGRyYXdOYXRpdmVQREZEb2N1bWVudChOYXRpdmVQREZEb2N1bWVudCYs
IGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3UGF0dGVy
bihOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRyYXdS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZVBERkRvY3VtZW50Q0cuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlUERGRG9jdW1lbnRDRy5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYTk0NWVhNTk1NzBjMGU4ZTU4NGRjN2E5YjlhZDk5NjFjZDk3N2NkNQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL05h
dGl2ZVBERkRvY3VtZW50Q0cuY3BwCkBAIC0wLDAgKzEsMTAxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJOYXRpdmVQREZEb2N1bWVudC5oIgorCisjaWYgIUVOQUJMRShQREZLSVRfRk9SX1BERkRP
Q1VNRU5USU1BR0UpCisKKyNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dQREZEb2N1bWVudC5oPgor
I2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJ
Lmg+CisjZWxzZQorI2luY2x1ZGUgPENvcmVHcmFwaGljcy9DR0NvbnRleHQuaD4KKyNlbmRpZgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZlB0cjxOYXRpdmVQREZEb2N1bWVudD4gTmF0aXZl
UERGRG9jdW1lbnQ6OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEsIFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCit7CisgICAgYXV0byBkYXRh
UHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YShkYXRhLmNy
ZWF0ZUNGRGF0YSgpLmdldCgpKSk7CisgICAgaWYgKCFkYXRhUHJvdmlkZXIpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIAorICAgIGF1dG8gZG9jdW1lbnQgPSBhZG9wdENGKENHUERGRG9j
dW1lbnRDcmVhdGVXaXRoUHJvdmlkZXIoZGF0YVByb3ZpZGVyLmdldCgpKSk7CisgICAgaWYgKCFk
b2N1bWVudCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IE5hdGl2ZVBERkRvY3VtZW50KGRhdGEsIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwg
V1RGTW92ZShkb2N1bWVudCkpKTsKK30KKwordm9pZCBOYXRpdmVQREZEb2N1bWVudDo6Y29tcHV0
ZUJvdW5kc0ZvckN1cnJlbnRQYWdlKCkKK3sKKyAgICBBU1NFUlQocGFnZUNvdW50KCkgPiAwKTsK
KyAgICBDR1BERlBhZ2VSZWYgY2dQYWdlID0gQ0dQREZEb2N1bWVudEdldFBhZ2UobV9wbGF0Zm9y
bVBERkRvY3VtZW50LmdldCgpLCAxKTsKKyAgICBDR1JlY3QgbWVkaWFCb3ggPSBDR1BERlBhZ2VH
ZXRCb3hSZWN0KGNnUGFnZSwga0NHUERGTWVkaWFCb3gpOworCisgICAgLy8gR2V0IGNyb3AgYm94
IChub3QgYWx3YXlzIHRoZXJlKS4gSWYgbm90LCB1c2UgbWVkaWEgYm94LgorICAgIENHUmVjdCBy
ID0gQ0dQREZQYWdlR2V0Qm94UmVjdChjZ1BhZ2UsIGtDR1BERkNyb3BCb3gpOworICAgIGlmICgh
Q0dSZWN0SXNFbXB0eShyKSkKKyAgICAgICAgbV9jcm9wQm94ID0gcjsKKyAgICBlbHNlCisgICAg
ICAgIG1fY3JvcEJveCA9IG1lZGlhQm94OworCisgICAgbV9yb3RhdGlvbkRlZ3JlZXMgPSBDR1BE
RlBhZ2VHZXRSb3RhdGlvbkFuZ2xlKGNnUGFnZSk7Cit9CisKK3Vuc2lnbmVkIE5hdGl2ZVBERkRv
Y3VtZW50OjpwYWdlQ291bnQoKSBjb25zdAoreworICAgIHJldHVybiBDR1BERkRvY3VtZW50R2V0
TnVtYmVyT2ZQYWdlcyhtX3BsYXRmb3JtUERGRG9jdW1lbnQuZ2V0KCkpOworfQorCitzdGF0aWMg
dm9pZCBhcHBseVJvdGF0aW9uRm9yUGFpbnRpbmcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBG
bG9hdFNpemUgc2l6ZSwgaW50IHJvdGF0aW9uRGVncmVlcykKK3sKKyAgICBpZiAocm90YXRpb25E
ZWdyZWVzID09IDkwKQorICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZSgwLCBzaXplLmhlaWdodCgp
KTsKKyAgICBlbHNlIGlmIChyb3RhdGlvbkRlZ3JlZXMgPT0gMTgwKQorICAgICAgICBjb250ZXh0
LnRyYW5zbGF0ZShzaXplKTsKKyAgICBlbHNlIGlmIChyb3RhdGlvbkRlZ3JlZXMgPT0gMjcwKQor
ICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZShzaXplLndpZHRoKCksIDApOworCisgICAgY29udGV4
dC5yb3RhdGUoLWRlZzJyYWQoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHJvdGF0aW9uRGVncmVlcykpKTsK
K30KKwordm9pZCBOYXRpdmVQREZEb2N1bWVudDo6ZHJhd1BERlBhZ2UoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSkKK3sKKyAgICBhcHBseVJvdGF0
aW9uRm9yUGFpbnRpbmcoY29udGV4dCwgaW1hZ2VTaXplLCBtX3JvdGF0aW9uRGVncmVlcyk7CisK
KyAgICBjb250ZXh0LnRyYW5zbGF0ZSgtbV9jcm9wQm94LmxvY2F0aW9uKCkpOworCisjaWYgUExB
VEZPUk0oQ09DT0EpCisgICAgQ0dDb250ZXh0RHJhd1BERlBhZ2VXaXRoQW5ub3RhdGlvbnMoY29u
dGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgQ0dQREZEb2N1bWVudEdldFBhZ2UobV9wbGF0Zm9ybVBE
RkRvY3VtZW50LmdldCgpLCAxKSwgbnVsbHB0cik7CisjZWxzZQorICAgIENHQ29udGV4dERyYXdQ
REZQYWdlKGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCksIENHUERGRG9jdW1lbnRHZXRQYWdlKG1f
cGxhdGZvcm1QREZEb2N1bWVudC5nZXQoKSwgMSkpOworI2VuZGlmCit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vICFFTkFCTEUoUERGS0lUX0ZPUl9QREZET0NVTUVOVElN
QUdFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERG
RG9jdW1lbnRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Q
REZEb2N1bWVudEltYWdlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGM0OTg1
ZjljNTlhYWFjZDNkZjViNWRjNTZiOWQ4OTA4NDgxYmY5Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDM4OSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDEzIEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUERGRG9jdW1lbnRJbWFn
ZS5oIgotCi0jaWYgVVNFKENHKQotCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSNpbmNsdWRl
IDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNzLmg+Ci0jaW5jbHVkZSA8SW1hZ2VJTy9JbWFnZUlP
Lmg+Ci0jZW5kaWYKLQotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgotI2luY2x1ZGUgIklt
YWdlQnVmZmVyLmgiCi0jaW5jbHVkZSAiSW1hZ2VPYnNlcnZlci5oIgotI2luY2x1ZGUgIkludFJl
Y3QuaCIKLSNpbmNsdWRlICJMZW5ndGguaCIKLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgot
I2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgotI2luY2x1ZGUgPENvcmVHcmFwaGljcy9DR0NvbnRl
eHQuaD4KLSNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dQREZEb2N1bWVudC5oPgotI2luY2x1ZGUg
PHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+Ci0jaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMu
aD4KLSNpbmNsdWRlIDx3dGYvUkFNU2l6ZS5oPgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
LSNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0
cmVhbS5oPgotCi0jaWYgIVBMQVRGT1JNKENPQ09BKQotI2luY2x1ZGUgIkltYWdlU291cmNlQ0cu
aCIKLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVBERkRvY3VtZW50SW1hZ2U6OlBE
RkRvY3VtZW50SW1hZ2UoSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCi0gICAgOiBJbWFnZShvYnNl
cnZlcikKLXsKLX0KLQotUERGRG9jdW1lbnRJbWFnZTo6flBERkRvY3VtZW50SW1hZ2UoKSA9IGRl
ZmF1bHQ7Ci0KLVN0cmluZyBQREZEb2N1bWVudEltYWdlOjpmaWxlbmFtZUV4dGVuc2lvbigpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuICJwZGYiOwotfQotCi1GbG9hdFNpemUgUERGRG9jdW1lbnRJbWFn
ZTo6c2l6ZShJbWFnZU9yaWVudGF0aW9uKSBjb25zdAotewotICAgIEZsb2F0U2l6ZSBleHBhbmRl
ZENyb3BCb3hTaXplID0gRmxvYXRTaXplKGV4cGFuZGVkSW50U2l6ZShtX2Nyb3BCb3guc2l6ZSgp
KSk7Ci0KLSAgICBpZiAobV9yb3RhdGlvbkRlZ3JlZXMgPT0gOTAgfHwgbV9yb3RhdGlvbkRlZ3Jl
ZXMgPT0gMjcwKQotICAgICAgICByZXR1cm4gZXhwYW5kZWRDcm9wQm94U2l6ZS50cmFuc3Bvc2Vk
U2l6ZSgpOwotICAgIHJldHVybiBleHBhbmRlZENyb3BCb3hTaXplOwotfQotCi12b2lkIFBERkRv
Y3VtZW50SW1hZ2U6OmNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKExlbmd0aCYgaW50cmluc2lj
V2lkdGgsIExlbmd0aCYgaW50cmluc2ljSGVpZ2h0LCBGbG9hdFNpemUmIGludHJpbnNpY1JhdGlv
KQotewotICAgIC8vIEZJWE1FOiBJZiB3ZSB3YW50IHNpemUgbmVnb3RpYXRpb24gd2l0aCBQREYg
ZG9jdW1lbnRzIGFzLWltYWdlLCB0aGlzIGlzIHRoZSBwbGFjZSB0byBpbXBsZW1lbnQgaXQgKGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjA5NSkuCi0gICAgSW1hZ2U6
OmNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKGludHJpbnNpY1dpZHRoLCBpbnRyaW5zaWNIZWln
aHQsIGludHJpbnNpY1JhdGlvKTsKLSAgICBpbnRyaW5zaWNSYXRpbyA9IEZsb2F0U2l6ZSgpOwot
fQotCi1FbmNvZGVkRGF0YVN0YXR1cyBQREZEb2N1bWVudEltYWdlOjpkYXRhQ2hhbmdlZChib29s
IGFsbERhdGFSZWNlaXZlZCkKLXsKLSAgICBBU1NFUlQoIW1fZG9jdW1lbnQpOwotICAgIGlmIChh
bGxEYXRhUmVjZWl2ZWQgJiYgIW1fZG9jdW1lbnQpIHsKLSAgICAgICAgY3JlYXRlUERGRG9jdW1l
bnQoKTsKLQotICAgICAgICBpZiAocGFnZUNvdW50KCkpIHsKLSAgICAgICAgICAgIG1faGFzUGFn
ZSA9IHRydWU7Ci0gICAgICAgICAgICBjb21wdXRlQm91bmRzRm9yQ3VycmVudFBhZ2UoKTsKLSAg
ICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gbV9kb2N1bWVudCA/IEVuY29kZWREYXRhU3RhdHVz
OjpDb21wbGV0ZSA6IEVuY29kZWREYXRhU3RhdHVzOjpVbmtub3duOwotfQotCi12b2lkIFBERkRv
Y3VtZW50SW1hZ2U6OnNldFBkZkltYWdlQ2FjaGluZ1BvbGljeShQREZJbWFnZUNhY2hpbmdQb2xp
Y3kgcGRmSW1hZ2VDYWNoaW5nUG9saWN5KQotewotICAgIGlmIChtX3BkZkltYWdlQ2FjaGluZ1Bv
bGljeSA9PSBwZGZJbWFnZUNhY2hpbmdQb2xpY3kpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1f
cGRmSW1hZ2VDYWNoaW5nUG9saWN5ID0gcGRmSW1hZ2VDYWNoaW5nUG9saWN5OwotICAgIGRlc3Ry
b3lEZWNvZGVkRGF0YSgpOwotfQotCi1ib29sIFBERkRvY3VtZW50SW1hZ2U6OmNhY2hlUGFyYW1l
dGVyc01hdGNoKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QpIGNvbnN0Ci17Ci0gICAgLy8gT2xkIGFuZCBu
ZXcgc291cmNlIHJlY3RhbmdsZXMgaGF2ZSB0byBtYXRjaC4KLSAgICBpZiAoc3JjUmVjdCAhPSBt
X2NhY2hlZFNvdXJjZVJlY3QpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIE9sZCBh
bmQgbmV3IHNjYWxpbmcgZmFjdG9ycyAiZGVzdCAvIHNyYyIgaGF2ZSB0byBtYXRjaC4KLSAgICBp
ZiAoZHN0UmVjdC5zaXplKCkgIT0gbV9jYWNoZWREZXN0aW5hdGlvblJlY3Quc2l6ZSgpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBtX2NhY2hlZEltYWdlUmVjdCBjYW4gYmUgbW92
ZWQgaWYgc3JjUmVjdCBhbmQgZHN0UmVjdC5zaXplKCkgZGlkIG5vdCBjaGFuZ2UuCi0gICAgRmxv
YXRSZWN0IG1vdmVkQ2FjaGVkSW1hZ2VSZWN0ID0gbV9jYWNoZWRJbWFnZVJlY3Q7Ci0gICAgbW92
ZWRDYWNoZWRJbWFnZVJlY3QubW92ZShGbG9hdFNpemUoZHN0UmVjdC5sb2NhdGlvbigpIC0gbV9j
YWNoZWREZXN0aW5hdGlvblJlY3QubG9jYXRpb24oKSkpOwotCi0gICAgLy8gbW92ZWRDYWNoZWRJ
bWFnZVJlY3QgaGFzIHRvIGNvbnRhaW4gdGhlIHdob2xlIGRpcnR5IHJlY3RhbmdsZS4KLSAgICBG
bG9hdFJlY3QgZGlydHlSZWN0ID0gaW50ZXJzZWN0aW9uKGNvbnRleHQuY2xpcEJvdW5kcygpLCBk
c3RSZWN0KTsKLSAgICBpZiAoIW1vdmVkQ2FjaGVkSW1hZ2VSZWN0LmNvbnRhaW5zKGRpcnR5UmVj
dCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIE9sZCBhbmQgbmV3IGNvbnRleHQg
c2NhbGluZyBmYWN0b3JzIGhhdmUgdG8gbWF0Y2ggYXMgd2VsbC4KLSAgICBBZmZpbmVUcmFuc2Zv
cm06OkRlY29tcG9zZWRUeXBlIGRlY29tcG9zZWRUcmFuc2Zvcm07Ci0gICAgY29udGV4dC5nZXRD
VE0oR3JhcGhpY3NDb250ZXh0OjpEZWZpbml0ZWx5SW5jbHVkZURldmljZVNjYWxlKS5kZWNvbXBv
c2UoZGVjb21wb3NlZFRyYW5zZm9ybSk7Ci0KLSAgICBBZmZpbmVUcmFuc2Zvcm06OkRlY29tcG9z
ZWRUeXBlIGNhY2hlZERlY29tcG9zZWRUcmFuc2Zvcm07Ci0gICAgbV9jYWNoZWRUcmFuc2Zvcm0u
ZGVjb21wb3NlKGNhY2hlZERlY29tcG9zZWRUcmFuc2Zvcm0pOwotICAgIGlmIChkZWNvbXBvc2Vk
VHJhbnNmb3JtLnNjYWxlWCAhPSBjYWNoZWREZWNvbXBvc2VkVHJhbnNmb3JtLnNjYWxlWCB8fCBk
ZWNvbXBvc2VkVHJhbnNmb3JtLnNjYWxlWSAhPSBjYWNoZWREZWNvbXBvc2VkVHJhbnNmb3JtLnNj
YWxlWSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXN0
YXRpYyB2b2lkIHRyYW5zZm9ybUNvbnRleHRGb3JQYWludGluZyhHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
KQotewotICAgIGZsb2F0IGhTY2FsZSA9IGRzdFJlY3Qud2lkdGgoKSAvIHNyY1JlY3Qud2lkdGgo
KTsKLSAgICBmbG9hdCB2U2NhbGUgPSBkc3RSZWN0LmhlaWdodCgpIC8gc3JjUmVjdC5oZWlnaHQo
KTsKLQotICAgIGlmIChoU2NhbGUgIT0gdlNjYWxlKSB7Ci0gICAgICAgIGZsb2F0IG1pbmltdW1T
Y2FsZSA9IHN0ZDo6bWF4KChkc3RSZWN0LndpZHRoKCkgLSAwLjUpIC8gc3JjUmVjdC53aWR0aCgp
LCAoZHN0UmVjdC5oZWlnaHQoKSAtIDAuNSkgLyBzcmNSZWN0LmhlaWdodCgpKTsKLSAgICAgICAg
ZmxvYXQgbWF4aW11bVNjYWxlID0gc3RkOjptaW4oKGRzdFJlY3Qud2lkdGgoKSArIDAuNSkgLyBz
cmNSZWN0LndpZHRoKCksIChkc3RSZWN0LmhlaWdodCgpICsgMC41KSAvIHNyY1JlY3QuaGVpZ2h0
KCkpOwotCi0gICAgICAgIC8vIElmIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIHR3byBzY2Fs
ZXMgaXMgZHVlIHRvIGludGVnZXIgcm91bmRpbmcgb2YgaW1hZ2Ugc2l6ZXMsCi0gICAgICAgIC8v
IHVzZSB0aGUgc21hbGxlciBvZiB0aGUgdHdvIG9yaWdpbmFsIHNjYWxlcyB0byBlbnN1cmUgdGhh
dCB0aGUgaW1hZ2UgZml0cyBpbnNpZGUgdGhlCi0gICAgICAgIC8vIHNwYWNlIG9yaWdpbmFsbHkg
YWxsb2NhdGVkIGZvciBpdC4KLSAgICAgICAgaWYgKG1pbmltdW1TY2FsZSA8PSBtYXhpbXVtU2Nh
bGUpIHsKLSAgICAgICAgICAgIGhTY2FsZSA9IHN0ZDo6bWluKGhTY2FsZSwgdlNjYWxlKTsKLSAg
ICAgICAgICAgIHZTY2FsZSA9IGhTY2FsZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIGRy
YXdQREZQYWdlKCkgcmVsaWVzIG9uIGRyYXdpbmcgdGhlIHdob2xlIFBERiBpbnRvIGEgY29udGV4
dCBzdGFydGluZyBhdCAoMCwgMCkuIFdlIG5lZWQKLSAgICAvLyB0byB0cmFuc2Zvcm0gdGhlIGRl
c3RpbmF0aW9uIGNvbnRleHQgc3VjaCB0aGF0IHNyY1JlY3Qgb2YgdGhlIHNvdXJjZSBjb250ZXh0
IHdpbGwgYmUgZHJhd24KLSAgICAvLyBpbiBkc3RSZWN0IG9mIGRlc3RpbmF0aW9uIGNvbnRleHQu
Ci0gICAgY29udGV4dC50cmFuc2xhdGUoZHN0UmVjdC5sb2NhdGlvbigpIC0gc3JjUmVjdC5sb2Nh
dGlvbigpKTsKLSAgICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZShoU2NhbGUsIC12U2NhbGUpKTsK
LSAgICBjb250ZXh0LnRyYW5zbGF0ZSgwLCAtc3JjUmVjdC5oZWlnaHQoKSk7Ci19Ci0KLS8vIFRv
IGF2b2lkIHRoZSBqZXRzYW0gb24gaU9TLCB3ZSBhcmUgZ29pbmcgdG8gbGltaXQgdGhlIHNpemUg
b2YgYWxsIHRoZSBQREYgY2FjaGVkSW1hZ2VzIHRvIGJlIDY0TUIuCi1zdGF0aWMgY29uc3Qgc2l6
ZV90IHNfbWF4Q2FjaGVkSW1hZ2VTaWRlID0gNCAqIDEwMjQ7Ci1zdGF0aWMgY29uc3Qgc2l6ZV90
IHNfbWF4Q2FjaGVkSW1hZ2VBcmVhID0gc19tYXhDYWNoZWRJbWFnZVNpZGUgKiBzX21heENhY2hl
ZEltYWdlU2lkZTsKLQotc3RhdGljIGNvbnN0IHNpemVfdCBzX21heERlY29kZWREYXRhU2l6ZSA9
IHNfbWF4Q2FjaGVkSW1hZ2VBcmVhICogNDsKLXN0YXRpYyBzaXplX3Qgc19hbGxEZWNvZGVkRGF0
YVNpemUgPSAwOwotCi1zdGF0aWMgRmxvYXRSZWN0IGNhY2hlZEltYWdlUmVjdChHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCkKLXsKLSAgICBGbG9hdFJl
Y3QgZGlydHlSZWN0ID0gY29udGV4dC5jbGlwQm91bmRzKCk7Ci0KLSAgICAvLyBDYWxjdWxhdGUg
dGhlIG1heGltdW0gcmVjdGFuZ2xlIHdlIGNhbiBjYWNoZSBhcm91bmQgdGhlIGNlbnRlciBvZiB0
aGUgY2xpcHBpbmcgYm91bmRzLgotICAgIEZsb2F0U2l6ZSBtYXhTaXplID0gc19tYXhDYWNoZWRJ
bWFnZVNpZGUgLyBjb250ZXh0LnNjYWxlRmFjdG9yKCk7Ci0gICAgRmxvYXRQb2ludCBtaW5Mb2Nh
dGlvbiA9IEZsb2F0UG9pbnQoZGlydHlSZWN0LmNlbnRlcigpIC0gbWF4U2l6ZSAvIDIpOwotCi0g
ICAgLy8gRW5zdXJlIHRoZSBjbGlwcGluZyBib3VuZHMgYXJlIGFsbCBpbmNsdWRlZCBidXQgd2l0
aGluIHRoZSBib3VuZHMgb2YgdGhlIGRzdFJlY3QKLSAgICByZXR1cm4gaW50ZXJzZWN0aW9uKHVu
aW9uUmVjdChkaXJ0eVJlY3QsIEZsb2F0UmVjdChtaW5Mb2NhdGlvbiwgbWF4U2l6ZSkpLCBkc3RS
ZWN0KTsKLX0KLQotdm9pZCBQREZEb2N1bWVudEltYWdlOjpkZWNvZGVkU2l6ZUNoYW5nZWQoc2l6
ZV90IG5ld0NhY2hlZEJ5dGVzKQotewotICAgIGlmICghbV9jYWNoZWRCeXRlcyAmJiAhbmV3Q2Fj
aGVkQnl0ZXMpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChpbWFnZU9ic2VydmVyKCkpCi0g
ICAgICAgIGltYWdlT2JzZXJ2ZXIoKS0+ZGVjb2RlZFNpemVDaGFuZ2VkKCp0aGlzLCAtc3RhdGlj
X2Nhc3Q8bG9uZyBsb25nPihtX2NhY2hlZEJ5dGVzKSArIG5ld0NhY2hlZEJ5dGVzKTsKLQotICAg
IEFTU0VSVChzX2FsbERlY29kZWREYXRhU2l6ZSA+PSBtX2NhY2hlZEJ5dGVzKTsKLSAgICAvLyBV
cGRhdGUgd2l0aCB0aGUgZGlmZmVyZW5jZSBpbiB0d28gc3RlcHMgdG8gYXZvaWQgdW5zaWduZWQg
dW5kZXJmbG93IHN1YnRyYWN0aW9uLgotICAgIHNfYWxsRGVjb2RlZERhdGFTaXplIC09IG1fY2Fj
aGVkQnl0ZXM7Ci0gICAgc19hbGxEZWNvZGVkRGF0YVNpemUgKz0gbmV3Q2FjaGVkQnl0ZXM7Ci0K
LSAgICBtX2NhY2hlZEJ5dGVzID0gbmV3Q2FjaGVkQnl0ZXM7Ci19Ci0KLXZvaWQgUERGRG9jdW1l
bnRJbWFnZTo6dXBkYXRlQ2FjaGVkSW1hZ2VJZk5lZWRlZChHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0KQot
ewotICAgIC8vIENsaXBwZWQgb3B0aW9uIGlzIGZvciB0ZXN0aW5nIG9ubHkuIEZvcmNlIHJlLWNh
Y2hpbmcgdGhlIFBERiB3aXRoIGVhY2ggZHJhdy4KLSAgICBib29sIGZvcmNlVXBkYXRlQ2FjaGVk
SW1hZ2UgPSBtX3BkZkltYWdlQ2FjaGluZ1BvbGljeSA9PSBQREZJbWFnZUNhY2hpbmdQb2xpY3k6
OkNsaXBCb3VuZHNPbmx5IHx8ICFtX2NhY2hlZEltYWdlQnVmZmVyOwotICAgIGlmICghZm9yY2VV
cGRhdGVDYWNoZWRJbWFnZSAmJiBjYWNoZVBhcmFtZXRlcnNNYXRjaChjb250ZXh0LCBkc3RSZWN0
LCBzcmNSZWN0KSkgewotICAgICAgICAvLyBBZGp1c3QgdGhlIHZpZXctcG9ydCByZWN0YW5nbGVz
IGlmIG5vIHJlLWNhY2hpbmcgd2lsbCBoYXBwZW4uCi0gICAgICAgIG1fY2FjaGVkSW1hZ2VSZWN0
Lm1vdmUoRmxvYXRTaXplKGRzdFJlY3QubG9jYXRpb24oKSAtIG1fY2FjaGVkRGVzdGluYXRpb25S
ZWN0LmxvY2F0aW9uKCkpKTsKLSAgICAgICAgbV9jYWNoZWREZXN0aW5hdGlvblJlY3QgPSBkc3RS
ZWN0OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgc3dpdGNoIChtX3BkZkltYWdlQ2Fj
aGluZ1BvbGljeSkgewotICAgIGNhc2UgUERGSW1hZ2VDYWNoaW5nUG9saWN5OjpEaXNhYmxlZDoK
LSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgUERGSW1hZ2VDYWNoaW5nUG9saWN5OjpCZWxvd01l
bW9yeUxpbWl0OgotICAgICAgICAvLyBLZWVwIHRoZSBtZW1vcnkgdXNlZCBieSB0aGUgY2FjaGVk
IGltYWdlIGJlbG93IHNvbWUgdGhyZXNob2xkLCBvdGhlcndpc2UgV2ViS2l0IHByb2Nlc3MKLSAg
ICAgICAgLy8gd2lsbCBqZXRzYW0gaWYgaXQgZXhjZWVkcyBpdHMgbWVtb3J5IGxpbWl0LiBPbmx5
IGEgcmVjdGFuZ2xlIGZyb20gdGhlIFBERiBtYXkgYmUgY2FjaGVkLgotICAgICAgICBtX2NhY2hl
ZEltYWdlUmVjdCA9IGNhY2hlZEltYWdlUmVjdChjb250ZXh0LCBkc3RSZWN0KTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBQREZJbWFnZUNhY2hpbmdQb2xpY3k6OkNsaXBCb3VuZHNPbmx5Ogot
ICAgICAgICBtX2NhY2hlZEltYWdlUmVjdCA9IGludGVyc2VjdGlvbihjb250ZXh0LmNsaXBCb3Vu
ZHMoKSwgZHN0UmVjdCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUERGSW1hZ2VDYWNoaW5n
UG9saWN5OjpFbmFibGVkOgotICAgICAgICBtX2NhY2hlZEltYWdlUmVjdCA9IGRzdFJlY3Q7Ci0g
ICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIEZsb2F0U2l6ZSBjYWNoZWRJbWFnZVNpemUgPSBG
bG9hdFJlY3QoZW5jbG9zaW5nSW50UmVjdChtX2NhY2hlZEltYWdlUmVjdCkpLnNpemUoKTsKLQot
ICAgIC8vIENhY2hlIHRoZSBQREYgaW1hZ2Ugb25seSBpZiB0aGUgc2l6ZSBvZiB0aGUgbmV3IGlt
YWdlIHdvbid0IGV4Y2VlZCB0aGUgY2FjaGUgdGhyZXNob2xkLgotICAgIGlmIChtX3BkZkltYWdl
Q2FjaGluZ1BvbGljeSA9PSBQREZJbWFnZUNhY2hpbmdQb2xpY3k6OkJlbG93TWVtb3J5TGltaXQp
IHsKLSAgICAgICAgSW50U2l6ZSBzY2FsZWRTaXplID0gSW1hZ2VCdWZmZXI6OmNvbXBhdGlibGVC
dWZmZXJTaXplKGNhY2hlZEltYWdlU2l6ZSwgY29udGV4dCk7Ci0gICAgICAgIGlmIChzX2FsbERl
Y29kZWREYXRhU2l6ZSArIHNjYWxlZFNpemUudW5jbGFtcGVkQXJlYSgpICogNCAtIG1fY2FjaGVk
Qnl0ZXMgPiBzX21heERlY29kZWREYXRhU2l6ZSkgewotICAgICAgICAgICAgZGVzdHJveURlY29k
ZWREYXRhKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBt
X2NhY2hlZEltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIo
Y2FjaGVkSW1hZ2VTaXplLCBjb250ZXh0KTsKLSAgICBpZiAoIW1fY2FjaGVkSW1hZ2VCdWZmZXIp
IHsKLSAgICAgICAgZGVzdHJveURlY29kZWREYXRhKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBhdXRvJiBidWZmZXJDb250ZXh0ID0gbV9jYWNoZWRJbWFnZUJ1ZmZlci0+Y29udGV4
dCgpOwotICAgIC8vIFdlIG5lZWQgdG8gdHJhbnNmb3JtIHRoZSBjb29yZGluYXRlIHN5c3RlbSBz
dWNoIHRoYXQgdG9wLWxlZnQgb2YgbV9jYWNoZWRJbWFnZVJlY3Qgd2lsbCBiZSBtYXBwZWQgdG8g
dGhlCi0gICAgLy8gdG9wLWxlZnQgb2YgZHN0UmVjdC4gQWx0aG91Z2ggb25seSBtX2NhY2hlZElt
YWdlUmVjdC5zaXplKCkgb2YgdGhlIGltYWdlIGNvcGllZCwgdGhlIHNpemVzIG9mIHNyY1JlY3QK
LSAgICAvLyBhbmQgZHN0UmVjdCBzaG91bGQgYmUgcGFzc2VkIHRvIHRoaXMgZnVuY3Rpb24gYmVj
YXVzZSB0aGV5IGFyZSB1c2VkIHRvIGNhbGN1bGF0ZSB0aGUgaW1hZ2Ugc2NhbGluZy4KLSAgICB0
cmFuc2Zvcm1Db250ZXh0Rm9yUGFpbnRpbmcoYnVmZmVyQ29udGV4dCwgZHN0UmVjdCwgRmxvYXRS
ZWN0KG1fY2FjaGVkSW1hZ2VSZWN0LmxvY2F0aW9uKCksIHNyY1JlY3Quc2l6ZSgpKSk7Ci0gICAg
ZHJhd1BERlBhZ2UoYnVmZmVyQ29udGV4dCk7Ci0KLSAgICBtX2NhY2hlZFRyYW5zZm9ybSA9IGNv
bnRleHQuZ2V0Q1RNKEdyYXBoaWNzQ29udGV4dDo6RGVmaW5pdGVseUluY2x1ZGVEZXZpY2VTY2Fs
ZSk7Ci0gICAgbV9jYWNoZWREZXN0aW5hdGlvblJlY3QgPSBkc3RSZWN0OwotICAgIG1fY2FjaGVk
U291cmNlUmVjdCA9IHNyY1JlY3Q7Ci0gICAgKyttX2NhY2hpbmdDb3VudEZvclRlc3Rpbmc7Ci0K
LSAgICBJbnRTaXplIGJhY2tlbmRTaXplID0gbV9jYWNoZWRJbWFnZUJ1ZmZlci0+YmFja2VuZFNp
emUoKTsKLSAgICBkZWNvZGVkU2l6ZUNoYW5nZWQoYmFja2VuZFNpemUudW5jbGFtcGVkQXJlYSgp
ICogNCk7Ci19Ci0KLUltYWdlRHJhd1Jlc3VsdCBQREZEb2N1bWVudEltYWdlOjpkcmF3KEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQotewot
ICAgIGlmICghbV9kb2N1bWVudCB8fCAhbV9oYXNQYWdlKQotICAgICAgICByZXR1cm4gSW1hZ2VE
cmF3UmVzdWx0OjpEaWROb3RoaW5nOwotCi0gICAgdXBkYXRlQ2FjaGVkSW1hZ2VJZk5lZWRlZChj
b250ZXh0LCBkc3RSZWN0LCBzcmNSZWN0KTsKLQotICAgIHsKLSAgICAgICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwotICAgICAgICBjb250ZXh0LnNldENv
bXBvc2l0ZU9wZXJhdGlvbihvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9yKCkpOwotCi0gICAgICAg
IGlmIChtX2NhY2hlZEltYWdlQnVmZmVyKSB7Ci0gICAgICAgICAgICAvLyBEcmF3IHRoZSBJbWFn
ZUJ1ZmZlciAnbV9jYWNoZWRJbWFnZUJ1ZmZlcicgdG8gdGhlIHJlY3RhbmdsZSAnbV9jYWNoZWRJ
bWFnZVJlY3QnCi0gICAgICAgICAgICAvLyBvbiB0aGUgZGVzdGluYXRpb24gY29udGV4dC4gU2lu
Y2UgdGhlIHBpeGVscyBvZiB0aGUgcmVjdGFuZ2xlICdtX2NhY2hlZEltYWdlUmVjdCcKLSAgICAg
ICAgICAgIC8vIG9mIHRoZSBzb3VyY2UgUERGIHdhcyBjb3BpZWQgdG8gJ21fY2FjaGVkSW1hZ2VC
dWZmZXInLCB0aGUgc2l6ZXMgb2YgdGhlIHNvdXJjZQotICAgICAgICAgICAgLy8gYW5kIHRoZSBk
ZXN0aW5hdGlvbiByZWN0YW5nbGVzIHdpbGwgYmUgZXF1YWwgYW5kIG5vIHNjYWxpbmcgd2lsbCBi
ZSBuZWVkZWQgaGVyZS4KLSAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCptX2Nh
Y2hlZEltYWdlQnVmZmVyLCBtX2NhY2hlZEltYWdlUmVjdCk7Ci0gICAgICAgIH0KLSAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICB0cmFuc2Zvcm1Db250ZXh0Rm9yUGFpbnRpbmcoY29udGV4dCwg
ZHN0UmVjdCwgc3JjUmVjdCk7Ci0gICAgICAgICAgICBkcmF3UERGUGFnZShjb250ZXh0KTsKLSAg
ICAgICAgfQotICAgIH0KLQotICAgIGlmIChpbWFnZU9ic2VydmVyKCkpCi0gICAgICAgIGltYWdl
T2JzZXJ2ZXIoKS0+ZGlkRHJhdygqdGhpcyk7Ci0KLSAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0
OjpEaWREcmF3OwotfQotCi12b2lkIFBERkRvY3VtZW50SW1hZ2U6OmRlc3Ryb3lEZWNvZGVkRGF0
YShib29sKQotewotICAgIG1fY2FjaGVkSW1hZ2VCdWZmZXIgPSBudWxscHRyOwotICAgIG1fY2Fj
aGVkSW1hZ2VSZWN0ID0gRmxvYXRSZWN0KCk7Ci0gICAgZGVjb2RlZFNpemVDaGFuZ2VkKDApOwot
fQotCi0jaWYgIVVTRShQREZLSVRfRk9SX1BERkRPQ1VNRU5USU1BR0UpCi0KLXZvaWQgUERGRG9j
dW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQoKQotewotICAgIFJldGFpblB0cjxDR0RhdGFQ
cm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdp
dGhDRkRhdGEoZGF0YSgpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSkpOwotICAgIG1fZG9jdW1lbnQg
PSBhZG9wdENGKENHUERGRG9jdW1lbnRDcmVhdGVXaXRoUHJvdmlkZXIoZGF0YVByb3ZpZGVyLmdl
dCgpKSk7Ci19Ci0KLXZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y29tcHV0ZUJvdW5kc0ZvckN1cnJl
bnRQYWdlKCkKLXsKLSAgICBBU1NFUlQocGFnZUNvdW50KCkgPiAwKTsKLSAgICBDR1BERlBhZ2VS
ZWYgY2dQYWdlID0gQ0dQREZEb2N1bWVudEdldFBhZ2UobV9kb2N1bWVudC5nZXQoKSwgMSk7Ci0g
ICAgQ0dSZWN0IG1lZGlhQm94ID0gQ0dQREZQYWdlR2V0Qm94UmVjdChjZ1BhZ2UsIGtDR1BERk1l
ZGlhQm94KTsKLQotICAgIC8vIEdldCBjcm9wIGJveCAobm90IGFsd2F5cyB0aGVyZSkuIElmIG5v
dCwgdXNlIG1lZGlhIGJveC4KLSAgICBDR1JlY3QgciA9IENHUERGUGFnZUdldEJveFJlY3QoY2dQ
YWdlLCBrQ0dQREZDcm9wQm94KTsKLSAgICBpZiAoIUNHUmVjdElzRW1wdHkocikpCi0gICAgICAg
IG1fY3JvcEJveCA9IHI7Ci0gICAgZWxzZQotICAgICAgICBtX2Nyb3BCb3ggPSBtZWRpYUJveDsK
LQotICAgIG1fcm90YXRpb25EZWdyZWVzID0gQ0dQREZQYWdlR2V0Um90YXRpb25BbmdsZShjZ1Bh
Z2UpOwotfQotCi11bnNpZ25lZCBQREZEb2N1bWVudEltYWdlOjpwYWdlQ291bnQoKSBjb25zdAot
ewotICAgIHJldHVybiBDR1BERkRvY3VtZW50R2V0TnVtYmVyT2ZQYWdlcyhtX2RvY3VtZW50Lmdl
dCgpKTsKLX0KLQotc3RhdGljIHZvaWQgYXBwbHlSb3RhdGlvbkZvclBhaW50aW5nKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgRmxvYXRTaXplIHNpemUsIGludCByb3RhdGlvbkRlZ3JlZXMpCi17
Ci0gICAgaWYgKHJvdGF0aW9uRGVncmVlcyA9PSA5MCkKLSAgICAgICAgY29udGV4dC50cmFuc2xh
dGUoMCwgc2l6ZS5oZWlnaHQoKSk7Ci0gICAgZWxzZSBpZiAocm90YXRpb25EZWdyZWVzID09IDE4
MCkKLSAgICAgICAgY29udGV4dC50cmFuc2xhdGUoc2l6ZSk7Ci0gICAgZWxzZSBpZiAocm90YXRp
b25EZWdyZWVzID09IDI3MCkKLSAgICAgICAgY29udGV4dC50cmFuc2xhdGUoc2l6ZS53aWR0aCgp
LCAwKTsKLQotICAgIGNvbnRleHQucm90YXRlKC1kZWcycmFkKHN0YXRpY19jYXN0PGZsb2F0Pihy
b3RhdGlvbkRlZ3JlZXMpKSk7Ci19Ci0KLXZvaWQgUERGRG9jdW1lbnRJbWFnZTo6ZHJhd1BERlBh
Z2UoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQotewotICAgIGFwcGx5Um90YXRpb25Gb3JQYWlu
dGluZyhjb250ZXh0LCBzaXplKCksIG1fcm90YXRpb25EZWdyZWVzKTsKLQotICAgIGNvbnRleHQu
dHJhbnNsYXRlKC1tX2Nyb3BCb3gubG9jYXRpb24oKSk7Ci0KLSNpZiBVU0UoRElSRUNUMkQpCi0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKLSNlbHNlCi0gICAgLy8gQ0dQREYgcGFnZXMgYXJlIGluZGV4
ZWQgZnJvbSAxLgotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIENHQ29udGV4dERyYXdQREZQYWdl
V2l0aEFubm90YXRpb25zKGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCksIENHUERGRG9jdW1lbnRH
ZXRQYWdlKG1fZG9jdW1lbnQuZ2V0KCksIDEpLCBudWxscHRyKTsKLSNlbHNlCi0gICAgQ0dDb250
ZXh0RHJhd1BERlBhZ2UoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgQ0dQREZEb2N1bWVudEdl
dFBhZ2UobV9kb2N1bWVudC5nZXQoKSwgMSkpOwotI2VuZGlmCi0jZW5kaWYKLX0KLQotI2VuZGlm
IC8vICFVU0UoUERGS0lUX0ZPUl9QREZET0NVTUVOVElNQUdFKQotCi0jaWYgUExBVEZPUk0oTUFD
KQotCi1SZXRhaW5QdHI8Q0ZNdXRhYmxlRGF0YVJlZj4gUERGRG9jdW1lbnRJbWFnZTo6Y29udmVy
dFBvc3RTY3JpcHREYXRhVG9QREYoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBwb3N0U2NyaXB0RGF0
YSkKLXsKLSAgICAvLyBDb252ZXJ0IFBvc3RTY3JpcHQgdG8gUERGIHVzaW5nIHRoZSBRdWFydHog
MkQgQVBJLgotICAgIC8vIGh0dHA6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24v
R3JhcGhpY3NJbWFnaW5nL0NvbmNlcHR1YWwvZHJhd2luZ3dpdGhxdWFydHoyZC9kcV9wc19jb252
ZXJ0L2NoYXB0ZXJfMTZfc2VjdGlvbl8xLmh0bWwKLQotICAgIENHUFNDb252ZXJ0ZXJDYWxsYmFj
a3MgY2FsbGJhY2tzID0geyB9OwotICAgIGF1dG8gY29udmVydGVyID0gYWRvcHRDRihDR1BTQ29u
dmVydGVyQ3JlYXRlKDAsICZjYWxsYmFja3MsIDApKTsKLSAgICBhdXRvIHByb3ZpZGVyID0gYWRv
cHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEocG9zdFNjcmlwdERhdGEuZ2V0KCkp
KTsKLSAgICBhdXRvIHBkZkRhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgMCkpOwotICAgIGF1dG8gY29uc3VtZXIgPSBhZG9wdENGKENHRGF0YUNv
bnN1bWVyQ3JlYXRlV2l0aENGRGF0YShwZGZEYXRhLmdldCgpKSk7Ci0KLSAgICBDR1BTQ29udmVy
dGVyQ29udmVydChjb252ZXJ0ZXIuZ2V0KCksIHByb3ZpZGVyLmdldCgpLCBjb25zdW1lci5nZXQo
KSwgMCk7Ci0gICAgcmV0dXJuIHBkZkRhdGE7Ci19Ci0KLSNlbmRpZgotCi12b2lkIFBERkRvY3Vt
ZW50SW1hZ2U6OmR1bXAoVGV4dFN0cmVhbSYgdHMpIGNvbnN0Ci17Ci0gICAgSW1hZ2U6OmR1bXAo
dHMpOwotICAgIHRzLmR1bXBQcm9wZXJ0eSgicGFnZS1jb3VudCIsIHBhZ2VDb3VudCgpKTsKLSAg
ICB0cy5kdW1wUHJvcGVydHkoImNyb3AtYm94IiwgbV9jcm9wQm94KTsKLSAgICBpZiAobV9yb3Rh
dGlvbkRlZ3JlZXMpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgicm90YXRpb24iLCBtX3JvdGF0
aW9uRGVncmVlcyk7Ci19Ci0KLX0KLQotI2VuZGlmIC8vIFVTRShDRykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTdmODk0NzQ5ZDVlYWM5MDUzYjhkOGE5NGVkMDg1
ZTVhZmY1MTVhNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmgK
KysrIC9kZXYvbnVsbApAQCAtMSwxMjQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
NCwgMjAwNSwgMjAwNiwgMjAxMyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBQREZEb2N1
bWVudEltYWdlX2gKLSNkZWZpbmUgUERGRG9jdW1lbnRJbWFnZV9oCi0KLSNpbmNsdWRlICJBZmZp
bmVUcmFuc2Zvcm0uaCIKLSNpbmNsdWRlICJGbG9hdFJlY3QuaCIKLSNpbmNsdWRlICJHcmFwaGlj
c1R5cGVzLmgiCi0jaW5jbHVkZSAiSW1hZ2UuaCIKLSNpbmNsdWRlICJTZXR0aW5ncy5oIgotCi0j
aWYgVVNFKENHKQotCi0jaWYgUExBVEZPUk0oTUFDKQotI2RlZmluZSBVU0VfUERGS0lUX0ZPUl9Q
REZET0NVTUVOVElNQUdFIDEKLSNlbmRpZgotCi10eXBlZGVmIHN0cnVjdCBDR1BERkRvY3VtZW50
ICpDR1BERkRvY3VtZW50UmVmOwotT0JKQ19DTEFTUyBQREZEb2N1bWVudDsKLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1jbGFzcyBHcmFwaGljc0NvbnRleHQ7Ci1jbGFzcyBJbWFnZUJ1ZmZlcjsK
LQotY2xhc3MgUERGRG9jdW1lbnRJbWFnZSBmaW5hbCA6IHB1YmxpYyBJbWFnZSB7Ci1wdWJsaWM6
Ci0gICAgc3RhdGljIFJlZjxQREZEb2N1bWVudEltYWdlPiBjcmVhdGUoSW1hZ2VPYnNlcnZlciog
b2JzZXJ2ZXIpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQREZEb2N1bWVu
dEltYWdlKG9ic2VydmVyKSk7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRQZGZJbWFnZUNhY2hpbmdQ
b2xpY3koUERGSW1hZ2VDYWNoaW5nUG9saWN5KTsKLSAgICAKLSNpZiBQTEFURk9STShNQUMpCi0g
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJldGFpblB0cjxDRk11dGFibGVEYXRhUmVmPiBjb252
ZXJ0UG9zdFNjcmlwdERhdGFUb1BERihSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIHBvc3RTY3JpcHRE
YXRhKTsKLSNlbmRpZgotCi0gICAgdW5zaWduZWQgY2FjaGluZ0NvdW50Rm9yVGVzdGluZygpIGNv
bnN0IHsgcmV0dXJuIG1fY2FjaGluZ0NvdW50Rm9yVGVzdGluZzsgfQotCi1wcml2YXRlOgotICAg
IFBERkRvY3VtZW50SW1hZ2UoSW1hZ2VPYnNlcnZlciopOwotICAgIHZpcnR1YWwgflBERkRvY3Vt
ZW50SW1hZ2UoKTsKLQotICAgIGJvb2wgaXNQREZEb2N1bWVudEltYWdlKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQotCi0gICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29u
c3Qgb3ZlcnJpZGU7Ci0KLSAgICBib29sIGhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCi0gICAgRW5jb2RlZERhdGFTdGF0dXMgZGF0YUNo
YW5nZWQoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIG92ZXJyaWRlOwotCi0gICAgdm9pZCBkZXN0cm95
RGVjb2RlZERhdGEoYm9vbCAvKmRlc3Ryb3lBbGwqLyA9IHRydWUpIG92ZXJyaWRlOwotCi0gICAg
dm9pZCBjb21wdXRlSW50cmluc2ljRGltZW5zaW9ucyhMZW5ndGgmIGludHJpbnNpY1dpZHRoLCBM
ZW5ndGgmIGludHJpbnNpY0hlaWdodCwgRmxvYXRTaXplJiBpbnRyaW5zaWNSYXRpbykgb3ZlcnJp
ZGU7Ci0gICAgRmxvYXRTaXplIHNpemUoSW1hZ2VPcmllbnRhdGlvbiA9IEltYWdlT3JpZW50YXRp
b246OkZyb21JbWFnZSkgY29uc3Qgb3ZlcnJpZGU7Ci0KLSAgICBJbWFnZURyYXdSZXN1bHQgZHJh
dyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSBvdmVycmlk
ZTsKLQotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyB0byBiZSBsZXNzIGNvbnNlcnZhdGl2
ZS4KLSAgICBib29sIGN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9Ci0KLSAgICB2b2lkIGR1bXAoV1RGOjpUZXh0U3RyZWFtJikgY29u
c3Qgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIGNyZWF0ZVBERkRvY3VtZW50KCk7Ci0gICAgdm9pZCBj
b21wdXRlQm91bmRzRm9yQ3VycmVudFBhZ2UoKTsKLSAgICB1bnNpZ25lZCBwYWdlQ291bnQoKSBj
b25zdDsKLSAgICB2b2lkIGRyYXdQREZQYWdlKEdyYXBoaWNzQ29udGV4dCYpOwotCi0gICAgdm9p
ZCBkZWNvZGVkU2l6ZUNoYW5nZWQoc2l6ZV90IG5ld0NhY2hlZEJ5dGVzKTsKLSAgICB2b2lkIHVw
ZGF0ZUNhY2hlZEltYWdlSWZOZWVkZWQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0
JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QpOwotICAgIGJvb2wgY2FjaGVQYXJh
bWV0ZXJzTWF0Y2goR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QpIGNvbnN0OwotCi0gICAgUERGSW1hZ2VDYWNoaW5nUG9s
aWN5IG1fcGRmSW1hZ2VDYWNoaW5nUG9saWN5IHsgZGVmYXVsdFBERkltYWdlQ2FjaGluZ1BvbGlj
eSB9OwotCi0jaWYgVVNFKFBERktJVF9GT1JfUERGRE9DVU1FTlRJTUFHRSkKLSAgICBSZXRhaW5Q
dHI8UERGRG9jdW1lbnQ+IG1fZG9jdW1lbnQ7Ci0jZWxzZQotICAgIFJldGFpblB0cjxDR1BERkRv
Y3VtZW50UmVmPiBtX2RvY3VtZW50OwotI2VuZGlmCi0KLSAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+
IG1fY2FjaGVkSW1hZ2VCdWZmZXI7Ci0gICAgRmxvYXRSZWN0IG1fY2FjaGVkSW1hZ2VSZWN0Owot
ICAgIEFmZmluZVRyYW5zZm9ybSBtX2NhY2hlZFRyYW5zZm9ybTsKLSAgICBGbG9hdFJlY3QgbV9j
YWNoZWREZXN0aW5hdGlvblJlY3Q7Ci0gICAgRmxvYXRSZWN0IG1fY2FjaGVkU291cmNlUmVjdDsK
LSAgICBzaXplX3QgbV9jYWNoZWRCeXRlcyB7IDAgfTsKLSAgICB1bnNpZ25lZCBtX2NhY2hpbmdD
b3VudEZvclRlc3RpbmcgeyAwIH07Ci0KLSAgICBGbG9hdFJlY3QgbV9jcm9wQm94OwotICAgIGlu
dCBtX3JvdGF0aW9uRGVncmVlcyB7IDAgfTsgLy8gQ2FuIG9ubHkgYmUgMCwgOTAsIDE4MCwgb3Ig
MjcwIGRlZ3JlZXMuCi0gICAgYm9vbCBtX2hhc1BhZ2UgeyBmYWxzZSB9OwotfTsKLQotfQotCi1T
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX0lNQUdFKFBERkRvY3VtZW50SW1hZ2UpCi0KLSNlbmRpZiAv
LyBVU0UoQ0cpCi0KLSNlbmRpZiAvLyBQREZEb2N1bWVudEltYWdlX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5k
ZXJlckNvcmVJbWFnZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVp
bWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbQppbmRleCAzOGRlODU1MmYxZTQ2
YTFkMzcwYWU2ZGMyNzg5YTFlYzY2NzRiYTEyLi5lYjc5ZGRhM2U3NmE0ZTBhZmVmYTlkZDZkMTZm
MTdmM2RiYzEzODc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVy
Q29yZUltYWdlLm1tCkBAIC0zNiwxMiArMzYsMTQgQEAKICNpbXBvcnQgIkZsb2F0Q29udmVyc2lv
bi5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKICNpbXBvcnQgIkltYWdlQnVmZmVy
LmgiCisjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybUltYWdlQnVmZmVyLmgi
CiAjaW1wb3J0ICJTb3VyY2VHcmFwaGljLmgiCiAjaW1wb3J0IDxDb3JlSW1hZ2UvQ0lDb250ZXh0
Lmg+CiAjaW1wb3J0IDxDb3JlSW1hZ2UvQ0lGaWx0ZXIuaD4KICNpbXBvcnQgPENvcmVJbWFnZS9D
b3JlSW1hZ2UuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2ltcG9ydCA8d3Rm
L3RleHQvVGV4dFN0cmVhbS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3QuY3BwCmluZGV4IDkyMzM2OTlhMGRkYjIzNGNjMzBhMzI3MWRkNmJhMDdkY2I0NjNj
MjYuLjliNjI4Mzg5MDQ1Yjk2NWVjYzJhZWIxMWIwNTMwYzRmNmFhNjU0ZDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0LmNwcApAQCAtMjM4LDYgKzIzOCw4IEBAIHZvaWQgRGlzcGxheUxpc3Q6OmFw
cGVuZChJdGVtSGFuZGxlIGl0ZW0pCiAgICAgICAgIHJldHVybiBhcHBlbmQ8RHJhd0ltYWdlQnVm
ZmVyPihpdGVtLmdldDxEcmF3SW1hZ2VCdWZmZXI+KCkpOwogICAgIGNhc2UgSXRlbVR5cGU6OkRy
YXdOYXRpdmVJbWFnZToKICAgICAgICAgcmV0dXJuIGFwcGVuZDxEcmF3TmF0aXZlSW1hZ2U+KGl0
ZW0uZ2V0PERyYXdOYXRpdmVJbWFnZT4oKSk7CisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2
ZVBERkRvY3VtZW50OgorICAgICAgICByZXR1cm4gYXBwZW5kPERyYXdOYXRpdmVQREZEb2N1bWVu
dD4oaXRlbS5nZXQ8RHJhd05hdGl2ZVBERkRvY3VtZW50PigpKTsKICAgICBjYXNlIEl0ZW1UeXBl
OjpEcmF3UGF0dGVybjoKICAgICAgICAgcmV0dXJuIGFwcGVuZDxEcmF3UGF0dGVybj4oaXRlbS5n
ZXQ8RHJhd1BhdHRlcm4+KCkpOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdSZWN0OgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3QuaAppbmRleCAyNmZjOTczMDcyMTEyNzMwMzkzZTJkY2JjODdkMGM2YjljYTU0
MjU4Li4xZDAxNmQ4MzBkYWY1MjhkMDQ1NDk4YWU1YjQ4MGJjMzQyZDJkYmExIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3QuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgog
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCisj
aW5jbHVkZSAiTmF0aXZlUERGRG9jdW1lbnQuaCIKICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5o
PgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+
CkBAIC03OCw2ICs3OSw3IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IEltYWdlQnVmZmVySGFzaE1h
cCYgaW1hZ2VCdWZmZXJzKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZUJ1ZmZlcnM7IH0KICAgICBj
b25zdCBOYXRpdmVJbWFnZUhhc2hNYXAmIG5hdGl2ZUltYWdlcygpIGNvbnN0IHsgcmV0dXJuIG1f
bmF0aXZlSW1hZ2VzOyB9CisgICAgY29uc3QgTmF0aXZlUERGRG9jdW1lbnRIYXNoTWFwJiBuYXRp
dmVQREZEb2N1bWVudHMoKSBjb25zdCB7IHJldHVybiBtX25hdGl2ZVBERkRvY3VtZW50czsgfQog
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRJdGVtQnVmZmVyQ2xpZW50KEl0ZW1CdWZmZXJS
ZWFkaW5nQ2xpZW50Kik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRJdGVtQnVmZmVyQ2xp
ZW50KEl0ZW1CdWZmZXJXcml0aW5nQ2xpZW50Kik7CkBAIC0xODEsMTEgKzE4MywxOSBAQCBwcml2
YXRlOgogICAgICAgICAgICAgcmV0dXJuIG1ha2VSZWYoaW1hZ2UpOwogICAgICAgICB9KTsKICAg
ICB9Ci0gICAgCisKKyAgICB2b2lkIGNhY2hlTmF0aXZlUERGRG9jdW1lbnQoTmF0aXZlUERGRG9j
dW1lbnQmIHBkZkRvY3VtZW50KQorICAgIHsKKyAgICAgICAgbV9uYXRpdmVQREZEb2N1bWVudHMu
ZW5zdXJlKHBkZkRvY3VtZW50LnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBbJl0oKSB7
CisgICAgICAgICAgICByZXR1cm4gbWFrZVJlZihwZGZEb2N1bWVudCk7CisgICAgICAgIH0pOwor
ICAgIH0KKwogICAgIHN0YXRpYyBib29sIHNob3VsZER1bXBGb3JGbGFncyhBc1RleHRGbGFncywg
SXRlbUhhbmRsZSk7CiAKICAgICBJbWFnZUJ1ZmZlckhhc2hNYXAgbV9pbWFnZUJ1ZmZlcnM7CiAg
ICAgTmF0aXZlSW1hZ2VIYXNoTWFwIG1fbmF0aXZlSW1hZ2VzOworICAgIE5hdGl2ZVBERkRvY3Vt
ZW50SGFzaE1hcCBtX25hdGl2ZVBERkRvY3VtZW50czsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SXRl
bUJ1ZmZlcj4gbV9pdGVtczsKICAgICBWZWN0b3I8T3B0aW9uYWw8RmxvYXRSZWN0Pj4gbV9kcmF3
aW5nSXRlbUV4dGVudHM7CiAgICAgYm9vbCBtX3RyYWNrc0RyYXdpbmdJdGVtRXh0ZW50cyB7IHRy
dWUgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKaW5kZXgg
Yzg3OGFkMzRjOGM0ODRlNDFjNjVlN2JlMTQ1MmJmYThhYjMxNmRjMi4uYzI1ZGEyZjQ3NjY5Njcy
MTQ2YTNiNzZmNmQwYjVkZDkzMmFhOGE4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlbUJ1ZmZlci5jcHAKQEAgLTE0OCw2ICsxNDgsMTAgQEAgdm9pZCBJdGVtSGFuZGxlOjph
cHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAgICAgIGdldDxEcmF3TmF0aXZlSW1h
Z2U+KCkuYXBwbHkoY29udGV4dCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgY2FzZSBJ
dGVtVHlwZTo6RHJhd05hdGl2ZVBERkRvY3VtZW50OiB7CisgICAgICAgIGdldDxEcmF3TmF0aXZl
UERGRG9jdW1lbnQ+KCkuYXBwbHkoY29udGV4dCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAg
ICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46IHsKICAgICAgICAgZ2V0PERyYXdQYXR0ZXJu
PigpLmFwcGx5KGNvbnRleHQpOwogICAgICAgICByZXR1cm47CkBAIC00MjAsNiArNDI0LDEwIEBA
IHZvaWQgSXRlbUhhbmRsZTo6ZGVzdHJveSgpCiAgICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjpp
c190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPERyYXdOYXRpdmVJbWFnZT46OnZhbHVlKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlUERGRG9jdW1l
bnQ6IHsKKyAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGli
bGU8RHJhd05hdGl2ZVBERkRvY3VtZW50Pjo6dmFsdWUpOworICAgICAgICByZXR1cm47CisgICAg
fQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOiB7CiAgICAgICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPERyYXdQYXR0ZXJuPjo6dmFsdWUpOwog
ICAgICAgICByZXR1cm47CkBAIC01NzcsNiArNTg1LDEwIEBAIHZvaWQgSXRlbUhhbmRsZTo6Y29w
eVRvKEl0ZW1IYW5kbGUgZGVzdGluYXRpb24pIGNvbnN0CiAgICAgICAgIG5ldyAoaXRlbU9mZnNl
dCkgRHJhd05hdGl2ZUltYWdlKGdldDxEcmF3TmF0aXZlSW1hZ2U+KCkpOwogICAgICAgICByZXR1
cm47CiAgICAgfQorICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVQREZEb2N1bWVudDogewor
ICAgICAgICBuZXcgKGl0ZW1PZmZzZXQpIERyYXdOYXRpdmVQREZEb2N1bWVudChnZXQ8RHJhd05h
dGl2ZVBERkRvY3VtZW50PigpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3UGF0dGVybjogewogICAgICAgICBuZXcgKGl0ZW1PZmZzZXQpIERyYXdQYXR0
ZXJuKGdldDxEcmF3UGF0dGVybj4oKSk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1UeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcAppbmRleCAxNjVkMjI0MTM1ZDM0ZDkyNTFmY2NiYTk0
ODdmMmJjY2Y4NWUxMWU2Li4zNjdhZGNhNjllMjhhMjFjZmM3NTIxMzJlMDhiNThmNTU0Y2NjMTkw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuY3BwCkBAIC04Niw2ICs4
Niw4IEBAIHN0YXRpYyBzaXplX3Qgc2l6ZU9mSXRlbUluQnl0ZXMoSXRlbVR5cGUgdHlwZSkKICAg
ICAgICAgcmV0dXJuIHNpemVvZihEcmF3SW1hZ2VCdWZmZXIpOwogICAgIGNhc2UgSXRlbVR5cGU6
OkRyYXdOYXRpdmVJbWFnZToKICAgICAgICAgcmV0dXJuIHNpemVvZihEcmF3TmF0aXZlSW1hZ2Up
OworICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVQREZEb2N1bWVudDoKKyAgICAgICAgcmV0
dXJuIHNpemVvZihEcmF3TmF0aXZlUERGRG9jdW1lbnQpOwogICAgIGNhc2UgSXRlbVR5cGU6OkRy
YXdQYXR0ZXJuOgogICAgICAgICByZXR1cm4gc2l6ZW9mKERyYXdQYXR0ZXJuKTsKICAgICBjYXNl
IEl0ZW1UeXBlOjpEcmF3UmVjdDoKQEAgLTIwOCw2ICsyMTAsNyBAQCBib29sIGlzRHJhd2luZ0l0
ZW0oSXRlbVR5cGUgdHlwZSkKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TGluZToKICAgICBjYXNl
IEl0ZW1UeXBlOjpEcmF3TGluZXNGb3JUZXh0OgogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRp
dmVJbWFnZToKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlUERGRG9jdW1lbnQ6CiAgICAg
Y2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdGg6
CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1JlY3Q6CkBAIC0yODEsNiArMjg0LDcgQEAgYm9vbCBp
c0lubGluZUl0ZW0oSXRlbVR5cGUgdHlwZSkKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RWxsaXBz
ZToKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6CiAgICAgY2FzZSBJdGVtVHlw
ZTo6RHJhd05hdGl2ZUltYWdlOgorICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVQREZEb2N1
bWVudDoKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVybjoKICAgICBjYXNlIEl0ZW1UeXBl
OjpEcmF3TGluZToKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UmVjdDoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1UeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtVHlwZS5oCmluZGV4IGZiNWRlZmRiN2M2ZGNlNDk4YjIxOWY0ZmJkMTcz
ZDNmOTJhNjJmNWEuLjFlYjU4NWU0NDAwMzIwZDY5ZDFmYjMzMjhmNTE2OThhOTJkY2QwMGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1UeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuaApAQCAtNTUsNiArNTUsNyBAQCBl
bnVtIGNsYXNzIEl0ZW1UeXBlIDogdWludDhfdCB7CiAgICAgRHJhd0dseXBocywKICAgICBEcmF3
SW1hZ2VCdWZmZXIsCiAgICAgRHJhd05hdGl2ZUltYWdlLAorICAgIERyYXdOYXRpdmVQREZEb2N1
bWVudCwKICAgICBEcmF3UGF0dGVybiwKICAgICBEcmF3UmVjdCwKICAgICBEcmF3TGluZSwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAppbmRleCA4Y2JkYmMzNzc5OTRiYjEwMzFl
YjAyZjllNDhhYWFlMTY5NjU1YTc1Li5kZWMyYjQyYmQzZTgzN2RmMmYxMDFlMDU4YzgwODAyN2Uw
MjFmMDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCkBAIC00NTgsNiAr
NDU4LDI1IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBj
b25zdCBEcmF3TmF0aXZlSW1hZ2UmIGl0ZW0pCiAgICAgcmV0dXJuIHRzOwogfQogCitOT19SRVRV
Uk5fRFVFX1RPX0FTU0VSVCB2b2lkIERyYXdOYXRpdmVQREZEb2N1bWVudDo6YXBwbHkoR3JhcGhp
Y3NDb250ZXh0JikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9p
ZCBEcmF3TmF0aXZlUERGRG9jdW1lbnQ6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
TmF0aXZlUERGRG9jdW1lbnQmIHBkZkRvY3VtZW50KSBjb25zdAoreworICAgIHBkZkRvY3VtZW50
LmRyYXcoY29udGV4dCwgbV9pbWFnZVNpemUsIG1fZGVzdGluYXRpb25SZWN0LCBtX3NyY1JlY3Qs
IG1fb3B0aW9ucyk7Cit9CisKK3N0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mIHRzLCBjb25zdCBEcmF3TmF0aXZlUERGRG9jdW1lbnQmIGl0ZW0pCit7CisgICAgLy8gRklY
TUU6IGR1bXAgbW9yZSBzdHVmZi4KKyAgICB0cy5kdW1wUHJvcGVydHkoInBkZi1kb2N1bWVudC1p
ZGVudGlmaWVyIiwgaXRlbS5wZGZEb2N1bWVudElkZW50aWZpZXIoKSk7CisgICAgdHMuZHVtcFBy
b3BlcnR5KCJzb3VyY2UtcmVjdCIsIGl0ZW0uc291cmNlKCkpOworICAgIHRzLmR1bXBQcm9wZXJ0
eSgiZGVzdC1yZWN0IiwgaXRlbS5kZXN0aW5hdGlvblJlY3QoKSk7CisgICAgcmV0dXJuIHRzOwor
fQorCiBEcmF3UGF0dGVybjo6RHJhd1BhdHRlcm4oUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
IGltYWdlSWRlbnRpZmllciwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0
UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0
IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMp
CiAgICAgOiBtX2ltYWdlSWRlbnRpZmllcihpbWFnZUlkZW50aWZpZXIpCiAgICAgLCBtX2ltYWdl
U2l6ZShpbWFnZVNpemUpCkBAIC0xMDM2LDYgKzEwNTUsNyBAQCBzdGF0aWMgVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgSXRlbVR5cGUgdHlwZSkKICAgICBjYXNlIEl0ZW1U
eXBlOjpEcmF3R2x5cGhzOiB0cyA8PCAiZHJhdy1nbHlwaHMiOyBicmVhazsKICAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6IHRzIDw8ICJkcmF3LWltYWdlLWJ1ZmZlciI7IGJyZWFr
OwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZTogdHMgPDwgImRyYXctbmF0aXZl
LWltYWdlIjsgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZVBERkRvY3VtZW50
OiB0cyA8PCAiZHJhdy1uYXRpdmUtcGRmLWRvY3VtZW50IjsgYnJlYWs7CiAgICAgY2FzZSBJdGVt
VHlwZTo6RHJhd1BhdHRlcm46IHRzIDw8ICJkcmF3LXBhdHRlcm4iOyBicmVhazsKICAgICBjYXNl
IEl0ZW1UeXBlOjpEcmF3UmVjdDogdHMgPDwgImRyYXctcmVjdCI7IGJyZWFrOwogICAgIGNhc2Ug
SXRlbVR5cGU6OkRyYXdMaW5lOiB0cyA8PCAiZHJhdy1saW5lIjsgYnJlYWs7CkBAIC0xMTU0LDYg
KzExNzQsOSBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBJdGVtSGFu
ZGxlIGl0ZW0pCiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOgogICAgICAgICB0
cyA8PCBpdGVtLmdldDxEcmF3TmF0aXZlSW1hZ2U+KCk7CiAgICAgICAgIGJyZWFrOworICAgIGNh
c2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVQREZEb2N1bWVudDoKKyAgICAgICAgdHMgPDwgaXRlbS5n
ZXQ8RHJhd05hdGl2ZVBERkRvY3VtZW50PigpOworICAgICAgICBicmVhazsKICAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3UGF0dGVybjoKICAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJhd1BhdHRlcm4+
KCk7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKaW5kZXgg
MTA0OTQ1ZDQ2NmM4OWJjZTUyMDU4NTNlNmRjOWE0YWY3NDYxZjYxNS4uNmYwZmIwZmMxMzA0MWY2
NTU0YWNlM2Q3MmMwZDcwMTQxZWJhYzgyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
cy5oCkBAIC0xMDc2LDYgKzEwNzYsMzkgQEAgcHJpdmF0ZToKICAgICBJbWFnZVBhaW50aW5nT3B0
aW9ucyBtX29wdGlvbnM7CiB9OwogCitjbGFzcyBEcmF3TmF0aXZlUERGRG9jdW1lbnQgeworcHVi
bGljOgorICAgIHN0YXRpYyBjb25zdGV4cHIgSXRlbVR5cGUgaXRlbVR5cGUgPSBJdGVtVHlwZTo6
RHJhd05hdGl2ZVBERkRvY3VtZW50OworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0lubGlu
ZUl0ZW0gPSB0cnVlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0RyYXdpbmdJdGVtID0g
dHJ1ZTsKKworICAgIERyYXdOYXRpdmVQREZEb2N1bWVudChSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIgcGRmRG9jdW1lbnRJZGVudGlmaWVyLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKKyAgICAgICAgOiBtX3BkZkRvY3VtZW50
SWRlbnRpZmllcihwZGZEb2N1bWVudElkZW50aWZpZXIpCisgICAgICAgICwgbV9pbWFnZVNpemUo
aW1hZ2VTaXplKQorICAgICAgICAsIG1fZGVzdGluYXRpb25SZWN0KGRlc3RSZWN0KQorICAgICAg
ICAsIG1fc3JjUmVjdChzcmNSZWN0KQorICAgICAgICAsIG1fb3B0aW9ucyhvcHRpb25zKQorICAg
IHsKKyAgICB9CisKKyAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcGRmRG9jdW1lbnRJ
ZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9wZGZEb2N1bWVudElkZW50aWZpZXI7IH0KKyAg
ICBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3JjUmVjdDsgfQor
ICAgIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb25SZWN0KCkgY29uc3QgeyByZXR1cm4gbV9k
ZXN0aW5hdGlvblJlY3Q7IH0KKworICAgIE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJUIHZvaWQgYXBw
bHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CisgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRl
eHQmLCBOYXRpdmVQREZEb2N1bWVudCYpIGNvbnN0OworCisgICAgT3B0aW9uYWw8RmxvYXRSZWN0
PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KKyAgICBPcHRp
b25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0
IHsgcmV0dXJuIG1fZGVzdGluYXRpb25SZWN0OyB9CisKK3ByaXZhdGU6CisgICAgUmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyIG1fcGRmRG9jdW1lbnRJZGVudGlmaWVyOworICAgIEZsb2F0U2l6
ZSBtX2ltYWdlU2l6ZTsKKyAgICBGbG9hdFJlY3QgbV9kZXN0aW5hdGlvblJlY3Q7CisgICAgRmxv
YXRSZWN0IG1fc3JjUmVjdDsKKyAgICBJbWFnZVBhaW50aW5nT3B0aW9ucyBtX29wdGlvbnM7Cit9
OworCiBjbGFzcyBEcmF3UGF0dGVybiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBJ
dGVtVHlwZSBpdGVtVHlwZSA9IEl0ZW1UeXBlOjpEcmF3UGF0dGVybjsKQEAgLTIyODYsNiArMjMx
OSw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6RGlzcGxheUxpc3Q6
Okl0ZW1UeXBlPiB7CiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3R2x5
cGhzLAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVy
LAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlLAor
ICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd05hdGl2ZVBERkRvY3VtZW50
LAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1BhdHRlcm4sCiAgICAg
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3UmVjdCwKICAgICBXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdMaW5lLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVjb3JkZXIuY3BwCmluZGV4IGY1MDAwNWE0NTRiMzlmNDVjZDBmZjcxYWQ3ZDE5Y2ExY2Q3
YzcwZWUuLjc3M2M1NTI5NmE1MTc4OGUwYzMzZDMxMzJmZTdmNTExZTYwNjU2ZmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTE4Miw2ICsxODIsMTQgQEAg
dm9pZCBSZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiBpbWFnZSwgY29uc3Qg
RmxvYXRTaXplJiBpbWFnZVNpemUsIGMKICAgICBhcHBlbmQ8RHJhd05hdGl2ZUltYWdlPihpbWFn
ZS5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3Jj
UmVjdCwgb3B0aW9ucyk7CiB9CiAKK3ZvaWQgUmVjb3JkZXI6OmRyYXdOYXRpdmVQREZEb2N1bWVu
dChOYXRpdmVQREZEb2N1bWVudCYgcGRmRG9jdW1lbnQsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VT
aXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQoreworICAgIGlmIChtX2RlbGVn
YXRlKQorICAgICAgICBtX2RlbGVnYXRlLT5jYWNoZU5hdGl2ZVBERkRvY3VtZW50KHBkZkRvY3Vt
ZW50KTsKKyAgICBtX2Rpc3BsYXlMaXN0LmNhY2hlTmF0aXZlUERGRG9jdW1lbnQocGRmRG9jdW1l
bnQpOworICAgIGFwcGVuZDxEcmF3TmF0aXZlUERGRG9jdW1lbnQ+KHBkZkRvY3VtZW50LnJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBv
cHRpb25zKTsKK30KKwogdm9pZCBSZWNvcmRlcjo6ZHJhd1BhdHRlcm4oTmF0aXZlSW1hZ2UmIGlt
YWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0
ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBz
cGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAo
bV9kZWxlZ2F0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCmluZGV4IDc3
Y2JhMzM2ZGM1Yjk0ZjRkYjIxZGE2NjExMDdiZDRjMzJjZjcwODUuLjQyZmU0ZTYwY2FlNTExN2Zj
MTUzYTlmN2Y2MGU1MDc4MDQ1ODIzYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXIuaApAQCAtNjcsNiArNjcsNyBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCB3
aWxsQXBwZW5kSXRlbU9mVHlwZShJdGVtVHlwZSkgeyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBk
aWRBcHBlbmRJdGVtT2ZUeXBlKEl0ZW1UeXBlKSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIGNh
Y2hlTmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGNh
Y2hlTmF0aXZlUERGRG9jdW1lbnQoTmF0aXZlUERGRG9jdW1lbnQmKSB7IH0KICAgICB9OwogCiBw
cml2YXRlOgpAQCAtMTA0LDYgKzEwNSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRyYXdJbWFn
ZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRp
b24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYp
IG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiwgY29uc3Qg
RmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsK
KyAgICB2b2lkIGRyYXdOYXRpdmVQREZEb2N1bWVudChOYXRpdmVQREZEb2N1bWVudCYsIGNvbnN0
IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBkcmF3UGF0dGVybihOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYgaW1h
Z2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25z
dCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJp
ZGU7CiAKICAgICB2b2lkIGRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IGJvcmRlclRo
aWNrbmVzcykgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5j
cHAKaW5kZXggY2ExOTg0NWFhZjgwNGUxOTQ4OTlmMDljMmEwNjhiNDYzZWQ1NThmZi4uMDhiNjc4
ZGQwMTY1YWFlNmEyMjk1YjIzYjI4NzlkMjkwNTNiODk0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlcGxheWVyLmNwcApAQCAtMzQsMTEgKzM0LDEyIEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewogCi1SZXBsYXllcjo6UmVwbGF5ZXIoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIGNv
bnN0IEltYWdlQnVmZmVySGFzaE1hcCogaW1hZ2VCdWZmZXJzLCBjb25zdCBOYXRpdmVJbWFnZUhh
c2hNYXAqIG5hdGl2ZUltYWdlcywgRGVsZWdhdGUqIGRlbGVnYXRlKQorUmVwbGF5ZXI6OlJlcGxh
eWVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRGlzcGxheUxpc3QmIGRpc3BsYXlM
aXN0LCBjb25zdCBJbWFnZUJ1ZmZlckhhc2hNYXAqIGltYWdlQnVmZmVycywgY29uc3QgTmF0aXZl
SW1hZ2VIYXNoTWFwKiBuYXRpdmVJbWFnZXMsIGNvbnN0IE5hdGl2ZVBERkRvY3VtZW50SGFzaE1h
cCogbmF0aXZlUERGRG9jdW1lbnRzLCBEZWxlZ2F0ZSogZGVsZWdhdGUpCiAgICAgOiBtX2NvbnRl
eHQoY29udGV4dCkKICAgICAsIG1fZGlzcGxheUxpc3QoZGlzcGxheUxpc3QpCiAgICAgLCBtX2lt
YWdlQnVmZmVycyhpbWFnZUJ1ZmZlcnMgPyAqaW1hZ2VCdWZmZXJzIDogbV9kaXNwbGF5TGlzdC5p
bWFnZUJ1ZmZlcnMoKSkKICAgICAsIG1fbmF0aXZlSW1hZ2VzKG5hdGl2ZUltYWdlcyA/ICpuYXRp
dmVJbWFnZXMgOiBtX2Rpc3BsYXlMaXN0Lm5hdGl2ZUltYWdlcygpKQorICAgICwgbV9uYXRpdmVQ
REZEb2N1bWVudHMobmF0aXZlUERGRG9jdW1lbnRzID8gKm5hdGl2ZVBERkRvY3VtZW50cyA6IG1f
ZGlzcGxheUxpc3QubmF0aXZlUERGRG9jdW1lbnRzKCkpCiAgICAgLCBtX2RlbGVnYXRlKGRlbGVn
YXRlKQogewogfQpAQCAtNjcsNiArNjgsMTYgQEAgaW5saW5lIHN0YXRpYyBPcHRpb25hbDxTdG9w
UmVwbGF5UmVhc29uPiBhcHBseU5hdGl2ZUltYWdlSXRlbShHcmFwaGljc0NvbnRleHQmIGMKICAg
ICByZXR1cm4gU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlOwogfQogCitp
bmxpbmUgc3RhdGljIE9wdGlvbmFsPFN0b3BSZXBsYXlSZWFzb24+IGFwcGx5RHJhd05hdGl2ZVBE
RkRvY3VtZW50SXRlbShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IE5hdGl2ZVBERkRv
Y3VtZW50SGFzaE1hcCYgbmF0aXZlUERGRG9jdW1lbnRzLCBJdGVtSGFuZGxlIGl0ZW0pCit7Cisg
ICAgYXV0byYgbmF0aXZlUERGRG9jdW1lbnRJdGVtID0gaXRlbS5nZXQ8RHJhd05hdGl2ZVBERkRv
Y3VtZW50PigpOworICAgIGlmIChhdXRvKiBwZGZEb2N1bWVudCA9IG5hdGl2ZVBERkRvY3VtZW50
cy5nZXQobmF0aXZlUERGRG9jdW1lbnRJdGVtLnBkZkRvY3VtZW50SWRlbnRpZmllcigpKSkgewor
ICAgICAgICBuYXRpdmVQREZEb2N1bWVudEl0ZW0uYXBwbHkoY29udGV4dCwgKnBkZkRvY3VtZW50
KTsKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICB9CisgICAgcmV0dXJuIFN0b3BS
ZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNvdXJjZTsKK30KKwogT3B0aW9uYWw8U3RvcFJl
cGxheVJlYXNvbj4gUmVwbGF5ZXI6OmFwcGx5SXRlbShJdGVtSGFuZGxlIGl0ZW0pCiB7CiAgICAg
aWYgKG1fZGVsZWdhdGUgJiYgbV9kZWxlZ2F0ZS0+YXBwbHkoaXRlbSwgbV9jb250ZXh0KSkKQEAg
LTg0LDYgKzk1LDkgQEAgT3B0aW9uYWw8U3RvcFJlcGxheVJlYXNvbj4gUmVwbGF5ZXI6OmFwcGx5
SXRlbShJdGVtSGFuZGxlIGl0ZW0pCiAgICAgaWYgKGl0ZW0uaXM8RHJhd1BhdHRlcm4+KCkpCiAg
ICAgICAgIHJldHVybiBhcHBseU5hdGl2ZUltYWdlSXRlbTxEcmF3UGF0dGVybj4obV9jb250ZXh0
LCBtX25hdGl2ZUltYWdlcywgaXRlbSk7CiAKKyAgICBpZiAoaXRlbS5pczxEcmF3TmF0aXZlUERG
RG9jdW1lbnQ+KCkpCisgICAgICAgIHJldHVybiBhcHBseURyYXdOYXRpdmVQREZEb2N1bWVudEl0
ZW0obV9jb250ZXh0LCBtX25hdGl2ZVBERkRvY3VtZW50cywgaXRlbSk7CisKICAgICBpdGVtLmFw
cGx5KG1fY29udGV4dCk7CiAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlcGxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZXBsYXllci5oCmluZGV4IGU2NzhiODYwNjJjZWRiNjEyYWU4YmNlZDdj
MGI3ODg0NTY3YzM3NjYuLmRkMzdiZmJlNjMwYjAyYmU2NzZjNTYzYzFmZDNjYmVkNDQwZGQ4ZWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlcGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaApAQCAtNTQsNyArNTQsNyBA
QCBjbGFzcyBSZXBsYXllciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVwbGF5ZXIpOwog
cHVibGljOgogICAgIGNsYXNzIERlbGVnYXRlOwotICAgIFdFQkNPUkVfRVhQT1JUIFJlcGxheWVy
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IERpc3BsYXlMaXN0JiwgY29uc3QgSW1hZ2VCdWZmZXJI
YXNoTWFwKiA9IG51bGxwdHIsIGNvbnN0IE5hdGl2ZUltYWdlSGFzaE1hcCogPSBudWxscHRyLCBE
ZWxlZ2F0ZSogPSBudWxscHRyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXBsYXllcihHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBEaXNwbGF5TGlzdCYsIGNvbnN0IEltYWdlQnVmZmVySGFzaE1hcCog
PSBudWxscHRyLCBjb25zdCBOYXRpdmVJbWFnZUhhc2hNYXAqID0gbnVsbHB0ciwgY29uc3QgTmF0
aXZlUERGRG9jdW1lbnRIYXNoTWFwKiA9IG51bGxwdHIsIERlbGVnYXRlKiA9IG51bGxwdHIpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIH5SZXBsYXllcigpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgUmVw
bGF5UmVzdWx0IHJlcGxheShjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwID0geyB9LCBib29s
IHRyYWNrUmVwbGF5TGlzdCA9IGZhbHNlKTsKQEAgLTcyLDYgKzcyLDcgQEAgcHJpdmF0ZToKICAg
ICBjb25zdCBEaXNwbGF5TGlzdCYgbV9kaXNwbGF5TGlzdDsKICAgICBjb25zdCBJbWFnZUJ1ZmZl
ckhhc2hNYXAmIG1faW1hZ2VCdWZmZXJzOwogICAgIGNvbnN0IE5hdGl2ZUltYWdlSGFzaE1hcCYg
bV9uYXRpdmVJbWFnZXM7CisgICAgY29uc3QgTmF0aXZlUERGRG9jdW1lbnRIYXNoTWFwJiBtX25h
dGl2ZVBERkRvY3VtZW50czsKICAgICBEZWxlZ2F0ZSogbV9kZWxlZ2F0ZTsKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9OYXRpdmVQREZEb2N1
bWVudE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9OYXRpdmVQ
REZEb2N1bWVudE1hYy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNTc3ZTA4MzI5NWE1Nzc0ZmFkNmY4ZWM1ZGYy
ZGRkYTQ5Y2I5YmU3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL05hdGl2ZVBERkRvY3VtZW50TWFjLm1tCkBAIC0wLDAgKzEsMTA1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29u
ZmlnLmgiCisjaW1wb3J0ICJOYXRpdmVQREZEb2N1bWVudC5oIgorCisjaWYgRU5BQkxFKFBERktJ
VF9GT1JfUERGRE9DVU1FTlRJTUFHRSkKKworI2ltcG9ydCAiTG9jYWxDdXJyZW50R3JhcGhpY3ND
b250ZXh0LmgiCisjaW1wb3J0ICJTaGFyZWRCdWZmZXIuaCIKKyNpbXBvcnQgPFF1YXJ0ei9RdWFy
dHouaD4KKyNpbXBvcnQgPG9iamMvb2JqYy1jbGFzcy5oPgorI2ltcG9ydCA8cGFsL3NwaS9jZy9D
b3JlR3JhcGhpY3NTUEkuaD4KKyNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgorCitTT0ZUX0xJ
TktfRlJBTUVXT1JLX0lOX1VNQlJFTExBKFF1YXJ0eiwgUERGS2l0KQorU09GVF9MSU5LX0NMQVNT
KFBERktpdCwgUERGRG9jdW1lbnQpCisKK2V4dGVybiAiQyIgeworYm9vbCBDR0NvbnRleHRHZXRB
bGxvd3NGb250U21vb3RoaW5nKENHQ29udGV4dFJlZik7Citib29sIENHQ29udGV4dEdldEFsbG93
c0ZvbnRTdWJwaXhlbFF1YW50aXphdGlvbihDR0NvbnRleHRSZWYpOworfQorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK1JlZlB0cjxOYXRpdmVQREZEb2N1bWVudD4gTmF0aXZlUERGRG9jdW1lbnQ6
OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBy
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCit7CisgICAgYXV0byBkb2N1bWVudCA9IGFkb3B0
TlMoW2FsbG9jUERGRG9jdW1lbnRJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpkYXRhLmNyZWF0ZU5T
RGF0YSgpLmdldCgpXSk7CisgICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBOYXRpdmVQREZEb2N1bWVudChkYXRhLCByZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFdURk1vdmUoZG9jdW1lbnQpKSk7Cit9CisKK3ZvaWQg
TmF0aXZlUERGRG9jdW1lbnQ6OmNvbXB1dGVCb3VuZHNGb3JDdXJyZW50UGFnZSgpCit7CisgICAg
UERGUGFnZSAqcGRmUGFnZSA9IFttX3BsYXRmb3JtUERGRG9jdW1lbnQgcGFnZUF0SW5kZXg6MF07
CisKKyAgICBtX2Nyb3BCb3ggPSBbcGRmUGFnZSBib3VuZHNGb3JCb3g6a1BERkRpc3BsYXlCb3hD
cm9wQm94XTsKKyAgICBtX3JvdGF0aW9uRGVncmVlcyA9IFtwZGZQYWdlIHJvdGF0aW9uXTsKK30K
KwordW5zaWduZWQgTmF0aXZlUERGRG9jdW1lbnQ6OnBhZ2VDb3VudCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIFttX3BsYXRmb3JtUERGRG9jdW1lbnQgcGFnZUNvdW50XTsKK30KKwordm9pZCBOYXRp
dmVQREZEb2N1bWVudDo6ZHJhd1BERlBhZ2UoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBGbG9hdFNpemUmKQoreworICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbEN1
cnJlbnRDb250ZXh0KGNvbnRleHQpOworCisgICAgLy8gVGhlc2Ugc3RhdGVzIGNhbiBiZSBtdXRh
dGVkIGJ5IFBERktpdCBidXQgYXJlIG5vdCBzYXZlZAorICAgIC8vIG9uIHRoZSBjb250ZXh0J3Mg
c3RhdGUgc3RhY2suICg8cmRhcjovL3Byb2JsZW0vMTQ5NTE3NTkmMzU3MzgxODE+KQorICAgIGJv
b2wgYWxsb3dzU21vb3RoaW5nID0gQ0dDb250ZXh0R2V0QWxsb3dzRm9udFNtb290aGluZyhjb250
ZXh0LnBsYXRmb3JtQ29udGV4dCgpKTsKKyAgICBib29sIGFsbG93c1N1YnBpeGVsUXVhbnRpemF0
aW9uID0gQ0dDb250ZXh0R2V0QWxsb3dzRm9udFN1YnBpeGVsUXVhbnRpemF0aW9uKGNvbnRleHQu
cGxhdGZvcm1Db250ZXh0KCkpOworICAgIGJvb2wgYWxsb3dzU3VicGl4ZWxQb3NpdGlvbmluZyA9
IENHQ29udGV4dEdldEFsbG93c0ZvbnRTdWJwaXhlbFBvc2l0aW9uaW5nKGNvbnRleHQucGxhdGZv
cm1Db250ZXh0KCkpOworCisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4K
KyAgICBbW21fcGxhdGZvcm1QREZEb2N1bWVudCBwYWdlQXRJbmRleDowXSBkcmF3V2l0aEJveDpr
UERGRGlzcGxheUJveENyb3BCb3hdOworICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0VORAorCisgICAgQ0dDb250ZXh0U2V0QWxsb3dzRm9udFNtb290aGluZyhjb250ZXh0LnBsYXRm
b3JtQ29udGV4dCgpLCBhbGxvd3NTbW9vdGhpbmcpOworICAgIENHQ29udGV4dFNldEFsbG93c0Zv
bnRTdWJwaXhlbFF1YW50aXphdGlvbihjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBhbGxvd3NT
dWJwaXhlbFF1YW50aXphdGlvbik7CisgICAgQ0dDb250ZXh0U2V0QWxsb3dzRm9udFN1YnBpeGVs
UG9zaXRpb25pbmcoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgYWxsb3dzU3VicGl4ZWxQb3Np
dGlvbmluZyk7Cit9CisKK1JldGFpblB0cjxDRk11dGFibGVEYXRhUmVmPiBOYXRpdmVQREZEb2N1
bWVudDo6Y29udmVydFBvc3RTY3JpcHREYXRhVG9QREYoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBw
b3N0U2NyaXB0RGF0YSkKK3sKKyAgICAvLyBDb252ZXJ0IFBvc3RTY3JpcHQgdG8gUERGIHVzaW5n
IHRoZSBRdWFydHogMkQgQVBJLgorICAgIC8vIGh0dHA6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2Rv
Y3VtZW50YXRpb24vR3JhcGhpY3NJbWFnaW5nL0NvbmNlcHR1YWwvZHJhd2luZ3dpdGhxdWFydHoy
ZC9kcV9wc19jb252ZXJ0L2NoYXB0ZXJfMTZfc2VjdGlvbl8xLmh0bWwKKworICAgIENHUFNDb252
ZXJ0ZXJDYWxsYmFja3MgY2FsbGJhY2tzID0geyB9OworICAgIGF1dG8gY29udmVydGVyID0gYWRv
cHRDRihDR1BTQ29udmVydGVyQ3JlYXRlKDAsICZjYWxsYmFja3MsIDApKTsKKyAgICBhdXRvIHBy
b3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEocG9zdFNjcmlw
dERhdGEuZ2V0KCkpKTsKKyAgICBhdXRvIHBkZkRhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZU11
dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCkpOworICAgIGF1dG8gY29uc3VtZXIgPSBhZG9w
dENGKENHRGF0YUNvbnN1bWVyQ3JlYXRlV2l0aENGRGF0YShwZGZEYXRhLmdldCgpKSk7CisKKyAg
ICBDR1BTQ29udmVydGVyQ29udmVydChjb252ZXJ0ZXIuZ2V0KCksIHByb3ZpZGVyLmdldCgpLCBj
b25zdW1lci5nZXQoKSwgMCk7CisgICAgcmV0dXJuIHBkZkRhdGE7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShQREZLSVRfRk9SX1BERkRPQ1VNRU5USU1B
R0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERG
RG9jdW1lbnRJbWFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9QREZEb2N1bWVudEltYWdlTWFjLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4
M2U2YWY3YjAzODkyODM4YzNiZmVhMWMwYzExYWE3ZmNmOGE3N2E5Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tCisrKyAvZGV2L251bGwKQEAgLTEsODgg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiUERGRG9jdW1lbnRJbWFnZS5oIgotCi0jaWYgVVNF
KFBERktJVF9GT1JfUERGRE9DVU1FTlRJTUFHRSkKLQotI2ltcG9ydCAiTG9jYWxDdXJyZW50R3Jh
cGhpY3NDb250ZXh0LmgiCi0jaW1wb3J0ICJTaGFyZWRCdWZmZXIuaCIKLSNpbXBvcnQgPFF1YXJ0
ei9RdWFydHouaD4KLSNpbXBvcnQgPG9iamMvb2JqYy1jbGFzcy5oPgotI2ltcG9ydCA8cGFsL3Nw
aS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KLSNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KLSNpbXBv
cnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgotCi1TT0ZUX0xJTktfRlJBTUVXT1JLX0lOX1VNQlJFTExB
KFF1YXJ0eiwgUERGS2l0KQotU09GVF9MSU5LX0NMQVNTKFBERktpdCwgUERGRG9jdW1lbnQpCi0K
LWV4dGVybiAiQyIgewotYm9vbCBDR0NvbnRleHRHZXRBbGxvd3NGb250U21vb3RoaW5nKENHQ29u
dGV4dFJlZiBjb250ZXh0KTsKLWJvb2wgQ0dDb250ZXh0R2V0QWxsb3dzRm9udFN1YnBpeGVsUXVh
bnRpemF0aW9uKENHQ29udGV4dFJlZiBjb250ZXh0KTsKLX0KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi12b2lkIFBERkRvY3VtZW50SW1hZ2U6OmNyZWF0ZVBERkRvY3VtZW50KCkKLXsKLSAgICBt
X2RvY3VtZW50ID0gYWRvcHROUyhbYWxsb2NQREZEb2N1bWVudEluc3RhbmNlKCkgaW5pdFdpdGhE
YXRhOmRhdGEoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKLX0KLQotdm9pZCBQREZEb2N1bWVu
dEltYWdlOjpjb21wdXRlQm91bmRzRm9yQ3VycmVudFBhZ2UoKQotewotICAgIFBERlBhZ2UgKnBk
ZlBhZ2UgPSBbbV9kb2N1bWVudCBwYWdlQXRJbmRleDowXTsKLQotICAgIG1fY3JvcEJveCA9IFtw
ZGZQYWdlIGJvdW5kc0ZvckJveDprUERGRGlzcGxheUJveENyb3BCb3hdOwotICAgIG1fcm90YXRp
b25EZWdyZWVzID0gW3BkZlBhZ2Ugcm90YXRpb25dOwotfQotCi11bnNpZ25lZCBQREZEb2N1bWVu
dEltYWdlOjpwYWdlQ291bnQoKSBjb25zdAotewotICAgIHJldHVybiBbbV9kb2N1bWVudCBwYWdl
Q291bnRdOwotfQotCi12b2lkIFBERkRvY3VtZW50SW1hZ2U6OmRyYXdQREZQYWdlKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCkKLXsKLSAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQgbG9j
YWxDdXJyZW50Q29udGV4dChjb250ZXh0KTsKLQotICAgIC8vIFRoZXNlIHN0YXRlcyBjYW4gYmUg
bXV0YXRlZCBieSBQREZLaXQgYnV0IGFyZSBub3Qgc2F2ZWQKLSAgICAvLyBvbiB0aGUgY29udGV4
dCdzIHN0YXRlIHN0YWNrLiAoPHJkYXI6Ly9wcm9ibGVtLzE0OTUxNzU5JjM1NzM4MTgxPikKLSAg
ICBib29sIGFsbG93c1Ntb290aGluZyA9IENHQ29udGV4dEdldEFsbG93c0ZvbnRTbW9vdGhpbmco
Y29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSk7Ci0gICAgYm9vbCBhbGxvd3NTdWJwaXhlbFF1YW50
aXphdGlvbiA9IENHQ29udGV4dEdldEFsbG93c0ZvbnRTdWJwaXhlbFF1YW50aXphdGlvbihjb250
ZXh0LnBsYXRmb3JtQ29udGV4dCgpKTsKLSAgICBib29sIGFsbG93c1N1YnBpeGVsUG9zaXRpb25p
bmcgPSBDR0NvbnRleHRHZXRBbGxvd3NGb250U3VicGl4ZWxQb3NpdGlvbmluZyhjb250ZXh0LnBs
YXRmb3JtQ29udGV4dCgpKTsKLQotICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JF
R0lOCi0gICAgW1ttX2RvY3VtZW50IHBhZ2VBdEluZGV4OjBdIGRyYXdXaXRoQm94OmtQREZEaXNw
bGF5Qm94Q3JvcEJveF07Ci0gICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECi0K
LSAgICBDR0NvbnRleHRTZXRBbGxvd3NGb250U21vb3RoaW5nKGNvbnRleHQucGxhdGZvcm1Db250
ZXh0KCksIGFsbG93c1Ntb290aGluZyk7Ci0gICAgQ0dDb250ZXh0U2V0QWxsb3dzRm9udFN1YnBp
eGVsUXVhbnRpemF0aW9uKGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCksIGFsbG93c1N1YnBpeGVs
UXVhbnRpemF0aW9uKTsKLSAgICBDR0NvbnRleHRTZXRBbGxvd3NGb250U3VicGl4ZWxQb3NpdGlv
bmluZyhjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBhbGxvd3NTdWJwaXhlbFBvc2l0aW9uaW5n
KTsKLX0KLQotfQotCi0jZW5kaWYgLy8gVVNFKFBERktJVF9GT1JfUERGRE9DVU1FTlRJTUFHRSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fp
cm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRl
ci5jcHAKaW5kZXggMmM5YWE4ODY5NjllYjA1MmVlYzYzMmNlOWM2ZTlkNTU3MjFmOTc2ZC4uZmYx
ZjdjNzg4NmMwOGE4MzdhZjQzZDM5MzMwZmRlMzIzZmU5Y2QxOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVy
YXRpb25SZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKQEAgLTU2MCw2
ICs1NjAsMTEgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2Uo
TmF0aXZlSW1hZ2UmIG5hdGl2ZUltYWdlLCBjb25zdCBGbG8KICAgICBhcHBlbmQoY3JlYXRlQ29t
bWFuZDxEcmF3TmF0aXZlSW1hZ2U+KG5hdGl2ZUltYWdlLnBsYXRmb3JtSW1hZ2UoKSwgZGVzdFJl
Y3QsIHNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9wdGlvbnMsIHN0YXRlLmltYWdlSW50
ZXJwb2xhdGlvblF1YWxpdHkpLCBzdGF0ZS5hbHBoYSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRl
KSkpOwogfQogCit2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdOYXRpdmVQREZEb2N1
bWVudChOYXRpdmVQREZEb2N1bWVudCYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0UmVj
dCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikKK3sKKyAg
ICAvLyBGSVhNRTogTm90IGltcGxlbWVudGVkLgorfQorCiB2b2lkIENhaXJvT3BlcmF0aW9uUmVj
b3JkZXI6OmRyYXdQYXR0ZXJuKE5hdGl2ZUltYWdlJiBuYXRpdmVJbWFnZSwgY29uc3QgRmxvYXRT
aXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29u
c3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgc3RydWN0IERyYXdQYXR0ZXJuIGZp
bmFsIDogUGFpbnRpbmdPcGVyYXRpb24sIE9wZXJhdGlvbkRhdGE8UmVmUHRyPGNhaXJvX3N1cmZh
Y2VfdD4sIEludFNpemUsIEZsb2F0UmVjdCwgRmxvYXRSZWN0LCBBZmZpbmVUcmFuc2Zvcm0sIEZs
b2F0UG9pbnQsIEltYWdlUGFpbnRpbmdPcHRpb25zPiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlv
blJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2Nh
aXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgKaW5kZXggODBhMjZmZDk4ZTg0NDcx
NjdiMTc2MWFmODkzMDcxMTZiMTEwMmNhYy4uM2E3Yzk3YmMwNWRmYWRlOGZhM2Q3MjgwNjc0ODcz
Y2NmNmQzNGEzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3Bl
cmF0aW9uUmVjb3JkZXIuaApAQCAtNjYsNiArNjYsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBk
cmF3SW1hZ2VCdWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZmZXImLCBjb25zdCBXZWJDb3JlOjpGbG9h
dFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHNvdXJjZSwgY29u
c3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICB2b2lkIGRy
YXdOYXRpdmVJbWFnZShXZWJDb3JlOjpOYXRpdmVJbWFnZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0
U2l6ZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVj
dCYsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CisgICAg
dm9pZCBkcmF3TmF0aXZlUERGRG9jdW1lbnQoV2ViQ29yZTo6TmF0aXZlUERGRG9jdW1lbnQmLCBj
b25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25z
dCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9u
cyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd1BhdHRlcm4oV2ViQ29yZTo6TmF0aXZlSW1hZ2Um
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBj
b25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0m
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwg
Y29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKIAogICAgIHZv
aWQgZHJhd1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgZmxvYXQpIG92ZXJyaWRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNz
Q29udGV4dEltcGxEaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcAppbmRleCAwYzRmM2E0OTczNjli
MDQwZTVmZWZlYzE3MjFkMGM3ZTZlY2Y4YzkxLi5lMzJlOWNiZDFiZWY3OWY0NDhjNmY0NWRiYWY0
ZWQxYmExMTZjOTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcApA
QCAtMjc0LDYgKzI3NCwxMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6ZHJh
d05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiBpbWFnZSwgY29uc3QgRmxvYQogICAgIERpcmVjdDJE
OjpkcmF3TmF0aXZlSW1hZ2UobV9wbGF0Zm9ybUNvbnRleHQsIGltYWdlLnBsYXRmb3JtSW1hZ2Uo
KS5nZXQoKSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucywgc3RhdGUuYWxw
aGEsIERpcmVjdDJEOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOwogfQogCit2b2lkIEdyYXBoaWNzQ29u
dGV4dEltcGxEaXJlY3QyRDo6ZHJhd05hdGl2ZVBERkRvY3VtZW50KE5hdGl2ZVBERkRvY3VtZW50
JiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0Jiwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKIHZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpkcmF3UGF0dGVybigoTmF0aXZl
SW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxv
YXRTaXplJiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgaWYg
KGF1dG8gc3VyZmFjZSA9IGltYWdlLnBsYXRmb3JtSW1hZ2UoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0
MkQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRl
eHRJbXBsRGlyZWN0MkQuaAppbmRleCA5MmNlM2YwOWJiODZmMDhhY2Q1YzI2YWI1ODYwN2RhMjI4
ZjdlNzhkLi5jZjY5MWJlMTVhYmE1YzY4MzY3NzhhNWFiM2YwNzMwZDI4NTdhM2ExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0
SW1wbERpcmVjdDJELmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5oCkBAIC03MCw2ICs3MCw3IEBAIHB1YmxpYzoK
IAogICAgIGJvb2wgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1h
Z2UmLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYp
IG92ZXJyaWRlOworICAgIHZvaWQgZHJhd05hdGl2ZVBERkRvY3VtZW50KE5hdGl2ZVBERkRvY3Vt
ZW50JiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
KSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdQYXR0ZXJuKChOYXRpdmVJbWFnZSYsIGNvbnN0IEZs
b2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRTaXpl
JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZHJh
d1JlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKaW5kZXggYzBiZDgyN2ZjNDQ0NmVlNzk3MjBhMGVlZjM2
ZjQzYTk0OGY4ZGM2MC4uZDIxMDMwODJiYjM5ZDdhODM0NmZiZTY2ZGI0NjBiNWQ1NDMyM2I2NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCkBAIC00NSw2ICs0NSw3
IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgog
I2luY2x1ZGUgIklubGluZUVsZW1lbnRCb3guaCIKKyNpbmNsdWRlICJQREZEb2N1bWVudEltYWdl
LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhaW50SW5mby5oIgogI2luY2x1ZGUg
IlJlbmRlckZyYWdtZW50ZWRGbG93LmgiCkBAIC02NCw3ICs2NSw2IEBACiAjZW5kaWYKIAogI2lm
IFVTRShDRykKLSNpbmNsdWRlICJQREZEb2N1bWVudEltYWdlLmgiCiAjaW5jbHVkZSAiU2V0dGlu
Z3MuaCIKICNlbmRpZgogCkBAIC02NjIsNyArNjYyLDcgQEAgSW1hZ2VEcmF3UmVzdWx0IFJlbmRl
ckltYWdlOjpwYWludEludG9SZWN0KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBGbG9hdFJl
Y3QKICAgICAvLyBGSVhNRTogRG9jdW1lbnQgd2hlbiBpbWFnZSAhPSBpbWcuZ2V0KCkuCiAgICAg
SW1hZ2UqIGltYWdlID0gaW1hZ2VSZXNvdXJjZSgpLmltYWdlKCkuZ2V0KCk7CiAKLSNpZiBVU0Uo
Q0cpCisjaWYgRU5BQkxFKFBERkRPQ1VNRU5USU1BR0UpCiAgICAgaWYgKGlzPFBERkRvY3VtZW50
SW1hZ2U+KGltYWdlKSkKICAgICAgICAgZG93bmNhc3Q8UERGRG9jdW1lbnRJbWFnZT4oKmltYWdl
KS5zZXRQZGZJbWFnZUNhY2hpbmdQb2xpY3koc2V0dGluZ3MoKS5wZGZJbWFnZUNhY2hpbmdQb2xp
Y3koKSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBlM2Rm
ZTc5NTE2YzM1OWFkODQwNzdiZjVmZTg1MmZiOTFmN2UzZWQwLi5kMWJkY2U1M2Q1ODNiMzlhNWNm
MmIzZTMxNDhmN2YxNzljODNkZjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
CkBAIC0xNDIsNiArMTQyLDcgQEAKICNpbmNsdWRlICJOYXZpZ2F0b3JCZWFjb24uaCIKICNpbmNs
dWRlICJOYXZpZ2F0b3JNZWRpYURldmljZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrTG9hZEluZm9y
bWF0aW9uLmgiCisjaW5jbHVkZSAiUERGRG9jdW1lbnRJbWFnZS5oIgogI2luY2x1ZGUgIlBhZ2Uu
aCIKICNpbmNsdWRlICJQYWdlT3ZlcmxheS5oIgogI2luY2x1ZGUgIlBhdGhVdGlsaXRpZXMuaCIK
QEAgLTIyNiwxMCArMjI3LDYgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CiAKLSNpZiBV
U0UoQ0cpCi0jaW5jbHVkZSAiUERGRG9jdW1lbnRJbWFnZS5oIgotI2VuZGlmCi0KICNpZiBFTkFC
TEUoSU5QVVRfVFlQRV9DT0xPUikKICNpbmNsdWRlICJDb2xvckNob29zZXIuaCIKICNlbmRpZgpA
QCAtOTA3LDcgKzkwNCw3IEBAIHN0YXRpYyBCaXRtYXBJbWFnZSogYml0bWFwSW1hZ2VGcm9tSW1h
Z2VFbGVtZW50KEhUTUxJbWFnZUVsZW1lbnQmIGVsZW1lbnQpCiAgICAgcmV0dXJuIGltYWdlICYm
IGlzPEJpdG1hcEltYWdlPihpbWFnZSkgPyAmZG93bmNhc3Q8Qml0bWFwSW1hZ2U+KCppbWFnZSkg
OiBudWxscHRyOwogfQogCi0jaWYgVVNFKENHKQorI2lmIEVOQUJMRShQREZET0NVTUVOVElNQUdF
KQogc3RhdGljIFBERkRvY3VtZW50SW1hZ2UqIHBkZkRvY3VtZW50SW1hZ2VGcm9tSW1hZ2VFbGVt
ZW50KEhUTUxJbWFnZUVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgYXV0byogaW1hZ2UgPSBpbWFn
ZUZyb21JbWFnZUVsZW1lbnQoZWxlbWVudCk7CkBAIC05NzAsNyArOTY3LDcgQEAgdW5zaWduZWQg
SW50ZXJuYWxzOjppbWFnZURlY29kZUNvdW50KEhUTUxJbWFnZUVsZW1lbnQmIGVsZW1lbnQpCiAK
IHVuc2lnbmVkIEludGVybmFsczo6cGRmRG9jdW1lbnRDYWNoaW5nQ291bnQoSFRNTEltYWdlRWxl
bWVudCYgZWxlbWVudCkKIHsKLSNpZiBVU0UoQ0cpCisjaWYgRU5BQkxFKFBERkRPQ1VNRU5USU1B
R0UpCiAgICAgYXV0byogcGRmRG9jdW1lbnRJbWFnZSA9IHBkZkRvY3VtZW50SW1hZ2VGcm9tSW1h
Z2VFbGVtZW50KGVsZW1lbnQpOwogICAgIHJldHVybiBwZGZEb2N1bWVudEltYWdlID8gcGRmRG9j
dW1lbnRJbWFnZS0+Y2FjaGluZ0NvdW50Rm9yVGVzdGluZygpIDogMDsKICNlbHNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIu
aCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5o
CmluZGV4IDVjNzU0NWJmZTY2OTI2MjBkMDEzZmRjODg2ZDc1ZWYzOWM4MWFmZGQuLmY5NTc4Mzhi
YmMyYTc3MzcxMmYzMmE2MGVhYTJmNzA3YjE5NTE0MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCkBAIC03Miw3ICs3
Miw4IEBAIHB1YmxpYzoKIAogICAgICAgICBjb25zdCBhdXRvJiBpbWFnZUJ1ZmZlcnMgPSBtX3Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQucmVtb3RlUmVzb3VyY2VDYWNoZSgpLmltYWdlQnVmZmVycygp
OwogICAgICAgICBjb25zdCBhdXRvJiBuYXRpdmVJbWFnZXMgPSBtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQucmVtb3RlUmVzb3VyY2VDYWNoZSgpLm5hdGl2ZUltYWdlcygpOwotICAgICAgICBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXIgcmVwbGF5ZXIgeyBCYXNlQ29uY3JldGVJbWFnZUJ1
ZmZlcjo6Y29udGV4dCgpLCBkaXNwbGF5TGlzdCwgJmltYWdlQnVmZmVycywgJm5hdGl2ZUltYWdl
cywgdGhpcyB9OworICAgICAgICBjb25zdCBhdXRvJiBuYXRpdmVQREZEb2N1bWVudHMgPSBtX3Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQucmVtb3RlUmVzb3VyY2VDYWNoZSgpLm5hdGl2ZVBERkRvY3Vt
ZW50cygpOworICAgICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXIgcmVwbGF5ZXIg
eyBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6Y29udGV4dCgpLCBkaXNwbGF5TGlzdCwgJmltYWdl
QnVmZmVycywgJm5hdGl2ZUltYWdlcywgJm5hdGl2ZVBERkRvY3VtZW50cywgdGhpcyB9OwogICAg
ICAgICByZXR1cm4gcmVwbGF5ZXIucmVwbGF5KCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC5jcHAKaW5kZXggZjU5YzM4NzI0ZjhmNjJlZTc4MDJiOTIwMjM3ZjY4ODQ3M2Q3ZmJmOS4uMjYy
YWFjNjhlNTZiZjZiMmFmNmRjNDJiZWZmNTAwNTEwZGY0MzA5YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLmNwcApAQCAtMjI4LDYgKzIyOCwxNSBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6
OmNhY2hlTmF0aXZlSW1hZ2UoUmVmPE5hdGl2ZUltYWdlPiYmIGltYWdlKQogICAgIG1fcmVtb3Rl
UmVzb3VyY2VDYWNoZS5jYWNoZU5hdGl2ZUltYWdlKFdURk1vdmUoaW1hZ2UpKTsKIH0KIAordm9p
ZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjYWNoZU5hdGl2ZVBERkRvY3VtZW50KElQQzo6U2hh
cmVkQnVmZmVyQ29weSYmIGRhdGEsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpCit7CisgICAgaWYgKCFkYXRhLmJ1ZmZlcigpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBpZiAoYXV0byBwZGZEb2N1bWVudCA9IE5hdGl2ZVBERkRvY3VtZW50
OjpjcmVhdGUoZGF0YS5idWZmZXIoKS5yZWxlYXNlTm9uTnVsbCgpLCByZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIpKQorICAgICAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2FjaGVOYXRpdmVQ
REZEb2N1bWVudChtYWtlUmVmKCpwZGZEb2N1bWVudCkpOworfQorCiB2b2lkIFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmQ6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogewogICAgIG1fcmVtb3RlUmVzb3Vy
Y2VDYWNoZS5yZWxlYXNlUmVtb3RlUmVzb3VyY2UocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KTsKQEAgLTMwNSw2ICszMTQsNyBAQCBPcHRpb25hbDxEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZT4g
V0FSTl9VTlVTRURfUkVUVVJOIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRlYwogICAgIGNhc2Ug
RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3RWxsaXBzZToKICAgICBjYXNlIERpc3BsYXlMaXN0
OjpJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyOgogICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1U
eXBlOjpEcmF3TmF0aXZlSW1hZ2U6CisgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRy
YXdOYXRpdmVQREZEb2N1bWVudDoKICAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJh
d1BhdHRlcm46CiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdMaW5lOgogICAg
IGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3UmVjdDoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmggYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5o
CmluZGV4IDY0MDY2NjhmYWUwNTA1N2U5ZGYzMjY0ZjU3NTI0OTQ4OWQ3MDVjNzguLjBmMTM5ZTZk
ZGVhMTcxZjk1ZjczNWFmN2I0NDc2OWE2ZGRjZTVhY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuaApA
QCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlICJS
ZW1vdGVSZXNvdXJjZUNhY2hlLmgiCiAjaW5jbHVkZSAiUmVuZGVyaW5nQmFja2VuZElkZW50aWZp
ZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJDb3B5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9D
b2xvclNwYWNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvRGlzcGxheUxpc3RJdGVtcy5oPgpAQCAtMTA3LDYgKzEwOCw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCB3YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpJdGVtQnVmZmVySWRlbnRpZmllciBpbml0aWFsSWRlbnRpZmllciwgdWludDY0X3QgaW5pdGlh
bE9mZnNldCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRlc3RpbmF0aW9u
QnVmZmVySWRlbnRpZmllcik7CiAgICAgdm9pZCBnZXRJbWFnZURhdGEoV2ViQ29yZTo6QWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIFdlYkNvcmU6OkludFJlY3Qgc3JjUmVjdCwg
V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKElQQzo6SW1hZ2VEYXRhUmVmZXJlbmNlJiYpPiYmKTsKICAgICB2b2lkIGNhY2hlTmF0aXZl
SW1hZ2UoUmVmPFdlYkNvcmU6Ok5hdGl2ZUltYWdlPiYmKTsKKyAgICB2b2lkIGNhY2hlTmF0aXZl
UERGRG9jdW1lbnQoSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiYsIFdlYkNvcmU6OlJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcik7CiAgICAgdm9pZCByZWxlYXNlUmVtb3RlUmVzb3VyY2UoV2ViQ29y
ZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZENyZWF0ZVNoYXJl
ZERpc3BsYXlMaXN0SGFuZGxlKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRp
ZmllciwgY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmLCBXZWJDb3JlOjpSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIgZGVzdGluYXRpb25CdWZmZXJJZGVudGlmaWVyKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbgppbmRleCA4ZTI3ZTA0Zjc3MzgxYTZmYjk5
NTczNDJhMjljMjE0NjA3MmVlY2Y4Li4zYTUwMWY2MTEyZTM3Yzc2YTFlZGE5Mjk5NzQyYWI0MjY2
ODY0YTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbgpAQCAtMjcs
NiArMjcsNyBAQCBtZXNzYWdlcyAtPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kIE5vdFJlZkNvdW50
ZWQgewogICAgIFdha2VVcEFuZEFwcGx5RGlzcGxheUxpc3QoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
Okl0ZW1CdWZmZXJJZGVudGlmaWVyIGluaXRpYWxJZGVudGlmaWVyLCB1aW50NjRfdCBpbml0aWFs
T2Zmc2V0LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZGVzdGluYXRpb25C
dWZmZXJJZGVudGlmaWVyKQogICAgIEdldEltYWdlRGF0YShlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6
QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIFdlYkNvcmU6OkludFJlY3Qgc3Jj
UmVjdCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcikgLT4gKElQQzo6SW1hZ2VEYXRhUmVmZXJlbmNlIGltYWdlRGF0YSkgU3lu
Y2hyb25vdXMKICAgICBDYWNoZU5hdGl2ZUltYWdlKFdlYkNvcmU6Ok5hdGl2ZUltYWdlUmVmZXJl
bmNlIG5hdGl2ZUltYWdlKQorICAgIENhY2hlTmF0aXZlUERGRG9jdW1lbnQoSVBDOjpTaGFyZWRC
dWZmZXJDb3B5IGRhdGEsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiAgICAgRGlkQ3JlYXRlU2hhcmVkRGlzcGxheUxpc3RI
YW5kbGUoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaGFuZGxlLCBXZWJDb3JlOjpSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZGVzdGluYXRpb25CdWZmZXJJZGVudGlmaWVyKQogICAg
IFJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwCmluZGV4
IGMzMzJkMmY3MDRlMTU4NGQ2YzBlNWNmYmRiN2VkNTZkYzRiMmMzNjkuLjkyNzU1MjVjN2U5ZWJm
OWY5OWMyY2UxZTU4MTc4MDRjYjAzNDAwYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAKQEAgLTQ4LDEy
ICs0OCwyMCBAQCB2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlTmF0aXZlSW1hZ2UoUmVm
PE5hdGl2ZUltYWdlPiYmIGltYWdlKQogICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRS
ZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKK3ZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZTo6Y2FjaGVO
YXRpdmVQREZEb2N1bWVudChSZWY8TmF0aXZlUERGRG9jdW1lbnQ+JiYgcGRmRG9jdW1lbnQpCit7
CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX25hdGl2ZVBERkRvY3VtZW50cy5hZGQocGRmRG9jdW1l
bnQtPnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBXVEZNb3ZlKHBkZkRvY3VtZW50KSk7
CisgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKK30K
Kwogdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpyZWxlYXNlUmVtb3RlUmVzb3VyY2UoUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKIHsKICAg
ICBpZiAobV9pbWFnZUJ1ZmZlcnMucmVtb3ZlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikp
CiAgICAgICAgIHJldHVybjsKICAgICBpZiAobV9uYXRpdmVJbWFnZXMucmVtb3ZlKHJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcikpCiAgICAgICAgIHJldHVybjsKKyAgICBpZiAobV9uYXRpdmVQ
REZEb2N1bWVudHMucmVtb3ZlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikpCisgICAgICAg
IHJldHVybjsKICAgICAvLyBDYWNoaW5nIHRoZSByZW1vdGUgcmVzb3VyY2Ugc2hvdWxkIGhhdmUg
aGFwcGVuZWQgYmVmb3JlIHJlbGVhc2luZyBpdC4KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZXNvdXJjZUNhY2hlLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVzb3VyY2VDYWNoZS5oCmluZGV4IDFmMjEwNThlMzNhMTg3NWJiZDdmNzJjMDEyM2M2NTAzZWM3
OTliMGIuLmY4ZTFmMDRhNWZiZjIxZjM4ZDBhYzBlOTllMmJjMjVmODQxZDM1ZDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hl
LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNl
Q2FjaGUuaApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSA8V2ViQ29yZS9JbWFnZUJ1ZmZl
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmF0aXZlSW1hZ2UuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L05hdGl2ZVBERkRvY3VtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCkBAIC00MywxNCArNDQs
MTcgQEAgcHVibGljOgogICAgIHZvaWQgY2FjaGVJbWFnZUJ1ZmZlcihSZWY8V2ViQ29yZTo6SW1h
Z2VCdWZmZXI+JiYpOwogICAgIFdlYkNvcmU6OkltYWdlQnVmZmVyKiBjYWNoZWRJbWFnZUJ1ZmZl
cihXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZvaWQgY2FjaGVO
YXRpdmVJbWFnZShSZWY8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+JiYpOworICAgIHZvaWQgY2FjaGVO
YXRpdmVQREZEb2N1bWVudChSZWY8V2ViQ29yZTo6TmF0aXZlUERGRG9jdW1lbnQ+JiYpOwogICAg
IHZvaWQgcmVsZWFzZVJlbW90ZVJlc291cmNlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcik7CiAgICAgCiAgICAgY29uc3QgV2ViQ29yZTo6SW1hZ2VCdWZmZXJIYXNoTWFwJiBp
bWFnZUJ1ZmZlcnMoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlQnVmZmVyczsgfQogICAgIGNvbnN0
IFdlYkNvcmU6Ok5hdGl2ZUltYWdlSGFzaE1hcCYgbmF0aXZlSW1hZ2VzKCkgY29uc3QgeyByZXR1
cm4gbV9uYXRpdmVJbWFnZXM7IH0KKyAgICBjb25zdCBXZWJDb3JlOjpOYXRpdmVQREZEb2N1bWVu
dEhhc2hNYXAmIG5hdGl2ZVBERkRvY3VtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fbmF0aXZlUERG
RG9jdW1lbnRzOyB9CiAKIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6SW1hZ2VCdWZmZXJIYXNoTWFw
IG1faW1hZ2VCdWZmZXJzOwogICAgIFdlYkNvcmU6Ok5hdGl2ZUltYWdlSGFzaE1hcCBtX25hdGl2
ZUltYWdlczsKKyAgICBXZWJDb3JlOjpOYXRpdmVQREZEb2N1bWVudEhhc2hNYXAgbV9uYXRpdmVQ
REZEb2N1bWVudHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94
eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1
ZmZlclByb3h5LmgKaW5kZXggMzFjZDAyZDFiMGYyMWVkZTU4MjJiZjk0NWJhZDQ2ZWRlZjFlYjM3
YS4uNTA4NGVlNGU4OWQzN2QzYTEzY2QyYmE1MGU5NTRmZGJhY2FiZWUyNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5LmgKQEAgLTIzMSw2ICsyMzEsMTIgQEAgcHJvdGVjdGVkOgogICAgICAg
ICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPnJlbW90ZVJlc291cmNlQ2FjaGVQ
cm94eSgpLmNhY2hlTmF0aXZlSW1hZ2UoaW1hZ2UpOwogICAgIH0KIAorICAgIHZvaWQgY2FjaGVO
YXRpdmVQREZEb2N1bWVudChXZWJDb3JlOjpOYXRpdmVQREZEb2N1bWVudCYgcGRmRG9jdW1lbnQp
IG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAobV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkpCisgICAgICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+cmVtb3RlUmVz
b3VyY2VDYWNoZVByb3h5KCkuY2FjaGVOYXRpdmVQREZEb2N1bWVudChwZGZEb2N1bWVudCk7Cisg
ICAgfQorCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJIYW5kbGUgY3JlYXRl
SXRlbUJ1ZmZlcihzaXplX3QgY2FwYWNpdHkpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAo
bV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCkBAIC0yOTUsNiArMzAxLDcgQEAgcHJvdGVj
dGVkOgogICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0Vs
bGlwc2U6CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3
SW1hZ2VCdWZmZXI6CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBl
OjpEcmF3TmF0aXZlSW1hZ2U6CisgICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0
ZW1UeXBlOjpEcmF3TmF0aXZlUERGRG9jdW1lbnQ6CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6RGlz
cGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3UGF0dGVybjoKICAgICAgICAgY2FzZSBXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdMaW5lOgogICAgICAgICBjYXNlIFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1JlY3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eS5jcHAKaW5kZXggZTUyY2E0MDczNWU5NzllMzg3ZDgzZDE0ZDI3YzQ5NjYxNzhl
Y2ZjNy4uZjhhODJiZDI4YjlmZTBjNTUxMTI5YTJjMjdmNThmY2EyYmZmYzNhZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2lu
Y2x1ZGUgIlBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oIgogI2luY2x1ZGUgIlJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyQ29weS5oIgogI2lu
Y2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKIApAQCAtMTc4
LDYgKzE3OSwxMSBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y2FjaGVOYXRp
dmVJbWFnZShOYXRpdmVJbWFnZSYgaW1hZ2UpCiAgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6Q2FjaGVOYXRpdmVJbWFnZShtYWtlUmVmKGltYWdlKSksIG1fcmVuZGVy
aW5nQmFja2VuZElkZW50aWZpZXIpOwogfQogCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eTo6Y2FjaGVOYXRpdmVQREZEb2N1bWVudChOYXRpdmVQREZEb2N1bWVudCYgcGRmRG9jdW1l
bnQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Q2FjaGVO
YXRpdmVQREZEb2N1bWVudChwZGZEb2N1bWVudC5kYXRhKCksIHBkZkRvY3VtZW50LnJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcigpKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7Cit9
CisKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpyZWxlYXNlUmVtb3RlUmVzb3Vy
Y2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cikKIHsKICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpSZWxlYXNl
UmVtb3RlUmVzb3VyY2UocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSwgbV9yZW5kZXJpbmdC
YWNrZW5kSWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaApp
bmRleCA5NWY4ZDJiNDEyZmI5MWRmNzdjNjhmMTM2YjAwNzg2ZjAyNGQ3ZTI2Li4yYTdjNzRkOWY5
MGI1ZTM4MDdjNTdmMDdkMGFmODk3ZGVhZWRiYzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5LmgKQEAgLTc5LDYgKzc5LDcgQEAgcHVibGljOgogICAgIHZvaWQgc3VibWl0
RGlzcGxheUxpc3QoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiwgV2Vi
Q29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uQnVmZmVySWRlbnRp
Zmllcik7CiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmllciBmbHVzaERp
c3BsYXlMaXN0QW5kQ29tbWl0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlz
dCYsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgdm9pZCBjYWNo
ZU5hdGl2ZUltYWdlKFdlYkNvcmU6Ok5hdGl2ZUltYWdlJik7CisgICAgdm9pZCBjYWNoZU5hdGl2
ZVBERkRvY3VtZW50KFdlYkNvcmU6Ok5hdGl2ZVBERkRvY3VtZW50Jik7CiAgICAgdm9pZCByZWxl
YXNlUmVtb3RlUmVzb3VyY2UoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsK
IAogICAgIGJvb2wgd2FpdEZvckltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3Vy
Y2VDYWNoZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcAppbmRleCA5MDRhYWVhZDhjYzcxZTg4ZjY0MmI0
YjUzNmU2OWFlMWU4OTM5ODljLi4yNjQ0MWNjOGM2NzU3YmI5NDE4MmYwOGQ0ZTA1MTYxNGQzZTRl
YzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1Jl
bW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwCkBAIC03Nyw2ICs3Nywz
MCBAQCB2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6cmVsZWFzZU5hdGl2ZUltYWdlKFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZQogICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5LnJlbGVhc2VSZW1vdGVSZXNvdXJjZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
OwogfQogCit2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6Y2FjaGVOYXRpdmVQREZEb2N1
bWVudChOYXRpdmVQREZEb2N1bWVudCYgcGRmRG9jdW1lbnQpCit7CisgICAgaWYgKG1fc2hhcmVk
UERGRG9jdW1lbnRzLmNvbnRhaW5zKHBkZkRvY3VtZW50LnJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllcigpKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIG1fc2hhcmVkUERGRG9jdW1lbnRz
LmFkZChwZGZEb2N1bWVudC5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSk7CisKKyAgICAv
LyBTZXQgaXRzZWxmIGFzIGFuIG9ic2VydmVyIHRvIE5hdGl2ZUltYWdlLCBzbyByZWxlYXNlTmF0
aXZlUERGRG9jdW1lbnQoKQorICAgIC8vIGdldHMgY2FsbGVkIHdoZW4gTmF0aXZlUERGRG9jdW1l
bnQgaXMgYmVpbmcgZGVsZWxldGVkLgorICAgIHBkZkRvY3VtZW50LnNldE9ic2VydmVyKHRoaXMp
OworCisgICAgLy8gVGVsbCB0aGUgR1BVIHByb2Nlc3MgdG8gY2FjaGUgdGhpcyByZXNvdXJjZS4K
KyAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jYWNoZU5hdGl2ZVBERkRvY3VtZW50
KHBkZkRvY3VtZW50KTsKK30KKwordm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OnJlbGVh
c2VOYXRpdmVQREZEb2N1bWVudChSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKQoreworICAgIGlmICghbV9zaGFyZWRQREZEb2N1bWVudHMucmVt
b3ZlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikpCisgICAgICAgIHJldHVybjsKKworICAg
IC8vIFRlbGwgdGhlIEdQVSBwcm9jZXNzIHRvIHJlbW92ZSB0aGlzIHJlc291cmNlLgorICAgIG1f
cmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LnJlbGVhc2VSZW1vdGVSZXNvdXJjZShyZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2Vu
ZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5o
CmluZGV4IDA2ZGQ0ZjY4YjkzYTllOTdmYTU0OWMwM2RmYzQ5ZGI5Mzg4OGJiZmIuLjE3YmRmYjM0
OGE0ZGZhN2QzOTlhYTAyZTg1MWRiNmYzNDA1MDhmZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNh
Y2hlUHJveHkuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKIAog
I2luY2x1ZGUgPFdlYkNvcmUvTmF0aXZlSW1hZ2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL05hdGl2
ZVBERkRvY3VtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCkBAIC0zOSw3ICs0MCw3IEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7CiAK
LWNsYXNzIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSA6IHB1YmxpYyBXZWJDb3JlOjpOYXRpdmVJ
bWFnZTo6T2JzZXJ2ZXIgeworY2xhc3MgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5IDogcHVibGlj
IFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpPYnNlcnZlciwgcHVibGljIFdlYkNvcmU6Ok5hdGl2ZVBE
RkRvY3VtZW50OjpPYnNlcnZlciB7CiBwdWJsaWM6CiAgICAgUmVtb3RlUmVzb3VyY2VDYWNoZVBy
b3h5KFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYpOwogCkBAIC00OCwxNyArNDksMjEgQEAg
cHVibGljOgogICAgIHZvaWQgcmVsZWFzZUltYWdlQnVmZmVyKFdlYkNvcmU6OlJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcik7CiAKICAgICB2b2lkIGNhY2hlTmF0aXZlSW1hZ2UoV2ViQ29yZTo6
TmF0aXZlSW1hZ2UmKTsKKyAgICB2b2lkIGNhY2hlTmF0aXZlUERGRG9jdW1lbnQoV2ViQ29yZTo6
TmF0aXZlUERGRG9jdW1lbnQmKTsKIAogICAgIHVzaW5nIEltYWdlQnVmZmVySGFzaE1hcCA9IEhh
c2hNYXA8V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBXZWFrUHRyPFdlYkNv
cmU6OkltYWdlQnVmZmVyPj47CiAgICAgY29uc3QgSW1hZ2VCdWZmZXJIYXNoTWFwJiBpbWFnZUJ1
ZmZlcnMoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlQnVmZmVyczsgfQogCiBwcml2YXRlOgogICAg
IHVzaW5nIE5hdGl2ZUltYWdlSGFzaE1hcCA9IEhhc2hNYXA8V2ViQ29yZTo6UmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyLCBXZWFrUHRyPFdlYkNvcmU6Ok5hdGl2ZUltYWdlPj47CisgICAgdXNp
bmcgU2hhcmVkUERGRG9jdW1lbnRIYXNoU2V0ID0gSGFzaFNldDxXZWJDb3JlOjpSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXI+OwogICAgIAogICAgIHZvaWQgcmVsZWFzZU5hdGl2ZUltYWdlKFdl
YkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgb3ZlcnJpZGU7CisgICAgdm9pZCBy
ZWxlYXNlTmF0aXZlUERGRG9jdW1lbnQoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKSBvdmVycmlkZTsKIAogICAgIEltYWdlQnVmZmVySGFzaE1hcCBtX2ltYWdlQnVmZmVyczsK
ICAgICBOYXRpdmVJbWFnZUhhc2hNYXAgbV9uYXRpdmVJbWFnZXM7CisgICAgU2hhcmVkUERGRG9j
dW1lbnRIYXNoU2V0IG1fc2hhcmVkUERGRG9jdW1lbnRzOwogICAgIFJlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eSYgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7CiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQppbmRleCA5
Y2IzYWFlZDc3NWY5YjZmZDkzYWMyNjk1ZWI4OGZlM2NkZGY2N2NhLi40NGI1MDZiMjgxOTMyNjhm
ODg3M2VjNDI2MDNkNWE1ZjhhYWY4ZTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KQEAgLTc2LDcgKzc2LDcgQEAKICNpbXBvcnQg
PFdlYkNvcmUvTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL01vdXNlRXZlbnQuaD4KLSNp
bXBvcnQgPFdlYkNvcmUvUERGRG9jdW1lbnRJbWFnZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9OYXRp
dmVQREZEb2N1bWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYWdlLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1Bhc3RlYm9hcmQuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1TY3JlZW4uaD4KQEAg
LTE1NzIsNyArMTU3Miw3IEBAIHZvaWQgUERGUGx1Z2luOjpjb252ZXJ0UG9zdFNjcmlwdERhdGFJ
Zk5lZWRlZCgpCiAgICAgaWYgKCFtX2lzUG9zdFNjcmlwdCkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgbV9kYXRhID0gUERGRG9jdW1lbnRJbWFnZTo6Y29udmVydFBvc3RTY3JpcHREYXRhVG9QREYo
V1RGTW92ZShtX2RhdGEpKTsKKyAgICBtX2RhdGEgPSBOYXRpdmVQREZEb2N1bWVudDo6Y29udmVy
dFBvc3RTY3JpcHREYXRhVG9QREYoV1RGTW92ZShtX2RhdGEpKTsKIH0KIAogdm9pZCBQREZQbHVn
aW46OmRvY3VtZW50RGF0YURpZEZpbmlzaExvYWRpbmcoKQo=
</data>
<flag name="commit-queue"
          id="431604"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414654</attachid>
            <date>2020-11-19 23:18:08 -0800</date>
            <delta_ts>2020-11-20 01:20:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218871-20201119231807.patch</filename>
            <type>text/plain</type>
            <size>134752</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMDY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGI4NTcwMTA2OWNiM2M0NTVmM2NkYjMz
ZGIxY2NlZWQ0MmJlODMyNTUuLjMxNzA0NjBmMzAzZmU3OWY2NmNmYTdjZmZhMmQwZTQ0ZWEyMDgw
MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjAtMTEtMTkgIFNhaWQgQWJvdS1IYWxsYXdhICA8
c2FpZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBTdXBwb3J0IHJlbmRlcmlu
ZyBQREZEb2N1bWVudEltYWdlIGluIEdQVSBQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg4NzEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybUVuYWJsZS5oOgorCiAyMDIw
LTExLTE5ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBv
c190aHJlYWRfc2VsZl9yZXN0cmljdF9yd3hfaXNfc3VwcG9ydGVkIGluc3RlYWQgb2YgcHRocmVh
ZF9qaXRfd3JpdGVfcHJvdGVjdF9zdXBwb3J0ZWRfbnAgb24gQXBwbGUgSW50ZXJuYWwgU0RLIGJ1
aWxkcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IGQxNDEwNTAxMzEzYTUyODk4ZDAwOGI1OGY2NTkxOGVjYTdiZTBk
YjYuLjllYjc1Y2EzM2NiNmQxMTI1NjVhMDA2Mzc5NzJhNzlkOGVmMTg3OGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMjggQEAKKzIwMjAtMTEtMTkgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBh
cHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBTdXBwb3J0IHJlbmRlcmluZyBQREZE
b2N1bWVudEltYWdlIGluIEdQVSBQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg4NzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogUGxhdGZvcm1B
cHBsZVdpbi5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiBT
b3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERh
dGFJZk5lZWRlZCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2
ZVBERkRvY3VtZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZVBERkRv
Y3VtZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBs
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2U6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZl
UERGRG9jdW1lbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZVBERkRvY3Vt
ZW50OjpOYXRpdmVQREZEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVQREZEb2N1
bWVudDo6fk5hdGl2ZVBERkRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZVBERkRv
Y3VtZW50OjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OnRyYW5zZm9ybUNvbnRleHRG
b3JQYWludGluZyk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVQREZEb2N1bWVudDo6dXBkYXRl
U25hcHNob3RJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVQREZEb2N1bWVudDo6
ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVQREZEb2N1bWVudDo6ZHVtcCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVQREZEb2N1bWVudDo6U25hcHNob3Q6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVQREZEb2N1bWVudDo6U25hcHNob3Q6OlNuYXBzaG90
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZVBERkRvY3VtZW50OjpTbmFwc2hvdDo6flNuYXBz
aG90KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZVBERkRvY3VtZW50OjpTbmFwc2hvdDo6Y2Fs
Y3VsYXRlU25hcHNob3RSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZVBERkRvY3VtZW50
OjpTbmFwc2hvdDo6Y2FuQ3JlYXRlU25hcHNob3QpOgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZl
UERGRG9jdW1lbnQ6OlNuYXBzaG90OjpjYW5CZVJldXNlZCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpOYXRpdmVQREZEb2N1bWVudDo6U25hcHNob3Q6Om1lbW9yeUNvc3QgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TmF0aXZlUERGRG9jdW1lbnQ6OlNuYXBzaG90Ojp0cmFuc2ZlclZpZXdw
b3J0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZVBERkRvY3VtZW50OjpTbmFwc2hvdDo6ZHJh
dyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlUERGRG9jdW1lbnQuaDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVQREZEb2N1bWVudDo6ZGF0YSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpOYXRpdmVQREZEb2N1bWVudDo6cmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZVBERkRvY3VtZW50OjpzZXRP
YnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVQREZEb2N1bWVudDo6cGRmSW1hZ2VD
YWNoaW5nUG9saWN5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZVBERkRvY3VtZW50
OjpzZXRQREZJbWFnZUNhY2hpbmdQb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlUERG
RG9jdW1lbnQ6OmNhY2hpbmdDb3VudEZvclRlc3RpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TmF0aXZlUERGRG9jdW1lbnQ6OnNuYXBzaG90TWVtb3J5Q29zdCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpOYXRpdmVQREZEb2N1bWVudDo6Y2xlYXJTbmFwc2hvdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvUERGRG9jdW1lbnRJbWFnZS5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6UERGRG9jdW1lbnRJbWFnZTo6UERGRG9jdW1lbnRJbWFnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjp+UERGRG9jdW1lbnRJbWFnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjpmaWxlbmFtZUV4dGVuc2lvbiBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjpzaXplIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OmNhY2hpbmdDb3VudEZvclRlc3RpbmcgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFnZTo6c2V0UGRmSW1hZ2VDYWNoaW5nUG9s
aWN5KToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OmRhdGFDaGFuZ2VkKToK
KyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OmRlc3Ryb3lEZWNvZGVkRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjpkZWNvZGVkU2l6ZUNoYW5nZWQp
OgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFnZTo6Y29tcHV0ZUludHJpbnNpY0Rp
bWVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFnZTo6ZHJhdyk6Cisg
ICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjpkdW1wIGNvbnN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9QREZEb2N1bWVudEltYWdlLmg6IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmguCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1QREZEb2N1bWVudC5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5o
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxD
YWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRy
YXdOYXRpdmVQREZEb2N1bWVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvTmF0aXZlUERGRG9jdW1lbnRDRy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TmF0
aXZlUERGRG9jdW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVQREZEb2N1
bWVudDo6Y29tcHV0ZUJvdW5kc0ZvckN1cnJlbnRQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5h
dGl2ZVBERkRvY3VtZW50OjpwYWdlQ291bnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6YXBw
bHlSb3RhdGlvbkZvclBhaW50aW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZVBERkRvY3Vt
ZW50OjpkcmF3UERGUGFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9j
dW1lbnRJbWFnZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29y
ZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Om5hdGl2ZVBERkRvY3VtZW50cyBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6OmNhY2hlTmF0aXZlUERG
RG9jdW1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1CdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0
ZW1IYW5kbGU6OmFwcGx5KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFu
ZGxlOjpkZXN0cm95KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxl
Ojpjb3B5VG8gY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpzaXplT2ZJdGVtSW5CeXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6aXNE
cmF3aW5nSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6aXNJbmxpbmVJdGVt
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtVHlwZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0
aXZlUERGRG9jdW1lbnQ6OmFwcGx5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpvcGVyYXRvcjw8KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtcy5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRy
YXdOYXRpdmVQREZEb2N1bWVudDo6RHJhd05hdGl2ZVBERkRvY3VtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlUERGRG9jdW1lbnQ6OnBkZkRvY3VtZW50SWRl
bnRpZmllciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2
ZVBERkRvY3VtZW50Ojpzb3VyY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkRyYXdOYXRpdmVQREZEb2N1bWVudDo6ZGVzdGluYXRpb25SZWN0IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlUERGRG9jdW1lbnQ6Omdsb2JhbEJv
dW5kcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZVBE
RkRvY3VtZW50Ojpsb2NhbEJvdW5kcyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpkcmF3TmF0aXZlUERGRG9jdW1lbnQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OkRlbGVnYXRlOjpj
YWNoZU5hdGl2ZVBERkRvY3VtZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6UmVwbGF5ZXI6OlJlcGxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjphcHBseURyYXdOYXRpdmVQREZEb2N1bWVudEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OlJlcGxheWVyOjphcHBseUl0ZW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL05hdGl2ZVBERkRvY3VtZW50TWFjLm1tOiBSZW5hbWVkIGZyb20g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMu
bW0uCisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVQREZEb2N1bWVudDo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5hdGl2ZVBERkRvY3VtZW50Ojpjb21wdXRlQm91bmRzRm9yQ3VycmVudFBh
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlUERGRG9jdW1lbnQ6OnBhZ2VDb3VudCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVQREZEb2N1bWVudDo6ZHJhd1BERlBhZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6TmF0aXZlUERGRG9jdW1lbnQ6OmNvbnZlcnRQb3N0U2NyaXB0RGF0
YVRvUERGKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29z
aWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcDoKKyAgICAgICAgKE5pY29zaWE6OkNhaXJvT3Bl
cmF0aW9uUmVjb3JkZXI6OmRyYXdOYXRpdmVQREZEb2N1bWVudCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGly
ZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJE
OjpkcmF3TmF0aXZlUERGRG9jdW1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dp
bi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVySW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OnBhaW50SW50b1Jl
Y3QpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkludGVybmFsczo6cGRmRG9jdW1lbnRDYWNoaW5nQ291bnQpOgorCiAyMDIwLTExLTE5ICBBZGl0
eWEgS2VlcnRoaSAgPGFrZWVydGhpQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXVtGQ1JdIEFk
ZCBuZXcgbG9vayBmb3IgcHJvZ3Jlc3MgYmFycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBjMDg4ZDc0NTBlMDZmN2U0
YjM4ODdjYTEyYjljMjU5NTAzMTc1MGRiLi5mNWY3N2MzMDQ3MTVhOThkZWQ4MzkwZGRhNTRiOTc4
MjU0YmMxYjlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDIwLTExLTE5ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gU3Vw
cG9ydCByZW5kZXJpbmcgUERGRG9jdW1lbnRJbWFnZSBpbiBHUFUgUHJvY2VzcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4ODcxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZUltYWdlQnVmZmVyLmg6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVm
ZmVyOjpzdWJtaXREaXNwbGF5TGlzdCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6Y2FjaGVOYXRpdmVQREZEb2N1bWVudCk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRlY29kZUl0ZW0pOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oOgorICAgICAgICAqIEdQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBH
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZU5hdGl2ZVBERkRvY3VtZW50KToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6cmVsZWFzZVJlbW90ZVJlc291cmNlKToK
KyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaDoKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6bmF0aXZlUERGRG9jdW1lbnRzIGNv
bnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZl
clByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5OjpjYWNoZU5hdGl2ZVBERkRvY3VtZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmNhY2hlTmF0aXZlUERGRG9j
dW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OnJlbGVh
c2VOYXRpdmVQREZEb2N1bWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6Y29udmVydFBv
c3RTY3JpcHREYXRhSWZOZWVkZWQpOgorCiAyMDIwLTExLTE5ICBCcmVudCBGdWxnaGFtICA8YmZ1
bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgcm9sbG91dCBvZiByMjY5ODkw
IGFuZCByMjY5OTExIGR1ZSB0byBFTUUgaXNzdWVzIG9uIE1hYyBNaW5pLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUuaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3Jt
RW5hYmxlLmgKaW5kZXggNzAwMWJlYmQ5NjRjZWVhMjc5MTJkYTJkZGJjYmM0ODA5ZDQ1OGY5NC4u
NzgzZWI1Yzg3OWE4NjM1MTMxNTdkNzIwYjk2MmM5YjQ0NzE3ZTc1YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bUVuYWJsZS5oCkBAIC0yMjUsNiArMjI1LDE0IEBACiAjZGVmaW5lIEVOQUJMRV9DU1NfQ09OSUNf
R1JBRElFTlRTIDAKICNlbmRpZgogCisjaWYgIWRlZmluZWQoRU5BQkxFX1BERkRPQ1VNRU5USU1B
R0UpICYmIFVTRShDRykKKyNkZWZpbmUgRU5BQkxFX1BERkRPQ1VNRU5USU1BR0UgMQorI2VuZGlm
CisKKyNpZiAhZGVmaW5lZChFTkFCTEVfUERGS0lUX0ZPUl9QREZET0NVTUVOVElNQUdFKSAmJiBQ
TEFURk9STShNQUMpCisjZGVmaW5lIEVOQUJMRV9QREZLSVRfRk9SX1BERkRPQ1VNRU5USU1BR0Ug
MQorI2VuZGlmCisKICNpZiAhZGVmaW5lZChFTkFCTEVfQ1VTVE9NX0NVUlNPUl9TVVBQT1JUKQog
I2RlZmluZSBFTkFCTEVfQ1VTVE9NX0NVUlNPUl9TVVBQT1JUIDEKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMu
Y21ha2UKaW5kZXggMDIzZTE1M2RhM2M2N2RlMTdhMjUyYmVmMWNhYjI2ODdkNDM5MzA2ZC4uZTk0
MWRhNWRjZTBmOGUzZjZlMGUyZTg0YjhkZWNhMDFiMzdiYWY5ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtl
CkBAIC0xMjI5LDYgKzEyMjksNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFE
RVJTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFVc2FnZUluZm8uaAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL05hdGl2ZUltYWdlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFn
ZVJlZmVyZW5jZS5oCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlUERGRG9jdW1lbnQuaAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL09wZW5HTEVTU2hpbXMuaAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL09wZW5HTFNoaW1zLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmgKQEAgLTEyNDAs
NiArMTI0MSw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybUltYWdlQnVmZmVyQmFja2VuZC5oCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvUGxhdGZvcm1MYXllci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZv
cm1NZWRpYVJlc291cmNlTG9hZGVyLmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVBE
RkRvY3VtZW50LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVRleHRUcmFjay5oCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UaW1lUmFuZ2VzLmgKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9SZWdpb24uaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBs
ZVdpbi5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4uY21ha2UKaW5kZXgg
MDE1MmU1N2Q3N2Q2YjIyYWQzY2RkMzBkYzQyZTYxODBmMTc0YThhOC4uMjExOTNhMGQ0ZmQ4OTky
YjE3MTMzYmM5NGJjYWY5ZjBiYjFiOGExNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1BcHBsZVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2lu
LmNtYWtlCkBAIC0xNDUsNyArMTQ1LDcgQEAgZWxzZSAoKQogICAgICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbnRSZWN0Q0cuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ludFNp
emVDRy5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHAK
LSAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKKyAgICAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlUERGRG9jdW1lbnRDRy5jcHAKICAgICAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0aENHLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9QYXR0ZXJuQ0cuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1N1YmltYWdl
Q2FjaGVXaXRoVGltZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1h
Yy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IGNmZWIwMzhh
ZWQ4ZWFlNTE3MTNiODY3MDUxN2I1NmFkYzBjM2I4MmUuLjUyNDA4ZGMxNWFmNjI2MjQ2ZTY2MDA3
ZDM3N2QzOTQwMWZlZmQ3NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFj
LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC0yOTYsNyAr
Mjk2LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW50UmVjdENHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ludFNpemVDRy5j
cHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJbWFnZUNHLmNwcAotICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvTmF0aXZlUERGRG9jdW1lbnRDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9Q
YXRoQ0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL1N1YmltYWdlQ2FjaGVXaXRoVGltZXIuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
CmluZGV4IGFmY2Y0NWFhY2I0NzQ3NDM2NDEzZjhhZTU5OWYzZGFlNGJlZGNkY2YuLjlmOTRlNzhj
ZjQ4OWU3NmNkNDgwODJjNzFiN2MwNTQzOTg1ZWZmZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xOTUx
LDEwICsxOTUxLDEyIEBAIHBsYXRmb3JtL2dyYXBoaWNzL01JTUVUeXBlQ2FjaGUuY3BwCiBwbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL05hbWVkSW1h
Z2VHZW5lcmF0ZWRJbWFnZS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZUltYWdlLmNwcAor
cGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlUERGRG9jdW1lbnQuY3BwCiBwbGF0Zm9ybS9ncmFwaGlj
cy9QYXRoLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFRyYXZlcnNhbFN0YXRlLmNwcAogcGxh
dGZvcm0vZ3JhcGhpY3MvUGF0aFV0aWxpdGllcy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1BhdHRl
cm4uY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9QREZEb2N1bWVudEltYWdlLmNwcAogcGxhdGZvcm0v
Z3JhcGhpY3MvUGxhdGZvcm1UaW1lUmFuZ2VzLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9u
LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNl
c0NvY29hLnR4dAppbmRleCAyYjMzYzRiY2U3NGRkZWFkODE4YmEzY2IyYTQ0OTMxNTQ2YjU5YTYw
Li4wNDM1OWRlMDg5OTY4ZGNiMGFkN2MwOTA0MzY2YzAyYzY3MWRhZTlhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXNDb2NvYS50eHQKQEAgLTM0MCw3ICszNDAsNyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbnRQ
b2ludENHLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW50UmVjdENHLmNwcAogcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW50U2l6ZUNHLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1h
Z2VDRy5jcHAKLXBsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCitwbGF0
Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVQREZEb2N1bWVudENHLmNwcAogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvUGF0aENHLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcAogcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5jcHAKQEAgLTQxMyw3ICs0
MTMsNyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvSWNvbk1hYy5tbQogcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0ltYWdlTWFjLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW50UG9pbnRNYWMubW0K
IHBsYXRmb3JtL2dyYXBoaWNzL21hYy9JbnRTaXplTWFjLm1tCi1wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbQorcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL05hdGl2ZVBE
RkRvY3VtZW50TWFjLm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2ltcGxlRm9udERhdGFDb3Jl
VGV4dC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Td2l0Y2hpbmdHUFVDbGllbnQuY3BwCiBw
bGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViS2l0TlNJbWFnZUV4dHJhcy5tbQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDc1YTUyMmMy
YWJlYjBkMTZkNWM2ODg2YzcxNzA2NTcyNDkyMGM5NGUuLjNmNjk1MGVlZDQ1MDdjYjExN2IyZmE1
YTJiZTFmMmI5ODljMTAxODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIxNzcsNiArMjE3Nyw4IEBACiAJCTcyN0E3RjNBMjQw
NzhCODQwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyQkFDM0FCMjNFMUU1NDQwMDhE
NzQxQyAvKiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3Mjk5QkM2NzIzRDZBNTMyMDBDQzY4ODMg
LyogQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzI5OUJDNjQyM0Q2ODZBNjAwQ0M2ODgzIC8qIEFscGhhUHJlbXVs
dGlwbGljYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk3Mjk5QkM2ODIzRDZBNTNFMDBDQzY4ODMgLyogUmVuZGVyaW5nTW9kZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI5OUJDNjYyM0Q2ODZD
NjAwQ0M2ODgzIC8qIFJlbmRlcmluZ01vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQk3MjlDNDVDRDI1NjYwNTM0MDAwNDA3Q0YgLyogTmF0aXZl
UERGRG9jdW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDcyOUM0NUNBMjU2NEY4MUIwMDA0MDdDRiAvKiBOYXRpdmVQREZEb2N1bWVudC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTcyOUM0NUNFMjU2
NjA1NkMwMDA0MDdDRiAvKiBQbGF0Zm9ybVBERkRvY3VtZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjlDNDVDQzI1NjVENkM3MDAwNDA3Q0YgLyog
UGxhdGZvcm1QREZEb2N1bWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTcyOUQwNTMwMjUzMTQyNDMwMDQyMjA5OCAvKiBSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDcyOUQwNTJFMjUzMTNFMjYwMDQyMjA5OCAvKiBSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk3MkE3M0JFRjI0NUEzRjkwMDAxQzlEMDMgLyogQW5pbWF0aW9uRnJhbWVSYXRlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjJBODE1QzIzOEZENTA1
MDBDMDA1ODMgLyogQW5pbWF0aW9uRnJhbWVSYXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzJBQjlBMjEyNTVBOUZERTAwRTZFQkYxIC8qIE5h
dGl2ZUltYWdlUmVmZXJlbmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3MkFCOUExRjI1NUE5RUE2MDBFNkVCRjEgLyogTmF0aXZlSW1hZ2VSZWZlcmVu
Y2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
NzA1NSw3ICs3MDU3LDcgQEAKIAkJMkQ1QzlDRkMxOUM3QjUyRTAwQjNDNUMxIC8qIFBhZ2VPdmVy
bGF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhZ2VPdmVybGF5Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJENUM5Q0ZEMTlDN0I1MkUwMEIzQzVDMSAvKiBQ
YWdlT3ZlcmxheUNvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUGFnZU92ZXJsYXlDb250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMkQ1QzlDRkUxOUM3QjUyRTAwQjNDNUMxIC8qIFBhZ2VPdmVybGF5Q29udHJvbGxlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWdlT3ZlcmxheUNvbnRyb2xsZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMkQ2RTQ2ODIxN0Q2NjBGNTAwRUNGOEJC
IC8qIFBERkRvY3VtZW50SW1hZ2VNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBQREZEb2N1bWVudEltYWdlTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkyRDZFNDY4MjE3RDY2MEY1MDBFQ0Y4QkIgLyogTmF0aXZlUERGRG9jdW1lbnRNYWMu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBOYXRpdmVQREZEb2N1
bWVudE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ2RjNFOEExQzFFQ0Ix
QzAwNjFEQkQ0IC8qIE1vY2tQYWdlT3ZlcmxheS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBNb2NrUGFnZU92ZXJsYXkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkyRDZGM0U4QjFDMUVDQjFDMDA2MURCRDQgLyogTW9ja1BhZ2VPdmVybGF5LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vY2tQYWdlT3ZlcmxheS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkyRDZGM0U4QzFDMUVDQjFDMDA2MURCRDQgLyogTW9ja1Bh
Z2VPdmVybGF5LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBNb2NrUGFnZU92ZXJsYXkuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTAwMzAsNiArMTAwMzIsMTAgQEAKIAkJ
NzI3QUZFRDMxQTJFQTZBMDAwMDQ0MkU4IC8qIEVYVHNSR0IuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IEVYVHNSR0IuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Mjk5QkM2
NDIzRDY4NkE2MDBDQzY4ODMgLyogQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBbHBoYVByZW11bHRpcGxpY2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTcyOTlCQzY2MjNENjg2QzYwMENDNjg4MyAvKiBSZW5kZXJpbmdNb2RlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlbmRlcmluZ01vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI5
QzQ1QzcyNTY0RjBFMTAwMDQwN0NGIC8qIE5hdGl2ZVBERkRvY3VtZW50Q0cuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gTmF0aXZlUERGRG9jdW1lbnRDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTcyOUM0NUM5MjU2NEY4MUIwMDA0MDdDRiAvKiBOYXRpdmVQREZEb2N1bWVudC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOYXRpdmVQREZEb2N1bWVudC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTcyOUM0NUNBMjU2NEY4MUIwMDA0MDdDRiAvKiBOYXRpdmVQREZE
b2N1bWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOYXRpdmVQREZEb2N1bWVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk3MjlDNDVDQzI1NjVENkM3MDAwNDA3Q0YgLyogUGxhdGZvcm1Q
REZEb2N1bWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVBERkRvY3VtZW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyOUQwNTJFMjUzMTNFMjYwMDQyMjA5OCAvKiBSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyQUI5QTFGMjU1
QTlFQTYwMEU2RUJGMSAvKiBOYXRpdmVJbWFnZVJlZmVyZW5jZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBO
YXRpdmVJbWFnZVJlZmVyZW5jZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkJB
QzNBNDIzRTE3MzI3MDA4RDc0MUMgLyogSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlQnVmZmVyQmFja2VuZC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNjI4OSwxMCArMjYyOTUsOSBAQAogCQkJCTFDMjFF
NTdBMTgzRUQxRkYwMDFDMjg5RCAvKiBJT1N1cmZhY2VQb29sLmNwcCAqLywKIAkJCQkxQzIxRTU3
QjE4M0VEMUZGMDAxQzI4OUQgLyogSU9TdXJmYWNlUG9vbC5oICovLAogCQkJCTM3N0EzQThGMTVF
RkNFOUEwMDU5RjVDNyAvKiBOYXRpdmVJbWFnZUNHLmNwcCAqLywKKwkJCQk3MjlDNDVDNzI1NjRG
MEUxMDAwNDA3Q0YgLyogTmF0aXZlUERGRG9jdW1lbnRDRy5jcHAgKi8sCiAJCQkJQjI3NTM1MzUw
QjA1MzgxNDAwMkNFNjRGIC8qIFBhdGhDRy5jcHAgKi8sCiAJCQkJQTgwQTM4RkQwRTUwQ0M4MjAw
QTI1RUJDIC8qIFBhdHRlcm5DRy5jcHAgKi8sCi0JCQkJQjI3NTM1MzYwQjA1MzgxNDAwMkNFNjRG
IC8qIFBERkRvY3VtZW50SW1hZ2UuY3BwICovLAotCQkJCUIyNzUzNTM3MEIwNTM4MTQwMDJDRTY0
RiAvKiBQREZEb2N1bWVudEltYWdlLmggKi8sCiAJCQkJMUZDNDBGQjgxNjU1QzU5MTAwNDBGMjlF
IC8qIFN1YmltYWdlQ2FjaGVXaXRoVGltZXIuY3BwICovLAogCQkJCTFGQzQwRkI3MTY1NUM1OTEw
MDQwRjI5RSAvKiBTdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmggKi8sCiAJCQkJQjI3NTM1MkEwQjA1
MzgxNDAwMkNFNjRGIC8qIFRyYW5zZm9ybWF0aW9uTWF0cml4Q0cuY3BwICovLApAQCAtMjYzMTgs
NyArMjYzMjMsNyBAQAogCQkJCUIyNzUzNTRFMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZU1hYy5t
bSAqLywKIAkJCQlCMjc1MzU0RjBCMDUzODE0MDAyQ0U2NEYgLyogSW50UG9pbnRNYWMubW0gKi8s
CiAJCQkJQjI3NTM1NTEwQjA1MzgxNDAwMkNFNjRGIC8qIEludFNpemVNYWMubW0gKi8sCi0JCQkJ
MkQ2RTQ2ODIxN0Q2NjBGNTAwRUNGOEJCIC8qIFBERkRvY3VtZW50SW1hZ2VNYWMubW0gKi8sCisJ
CQkJMkQ2RTQ2ODIxN0Q2NjBGNTAwRUNGOEJCIC8qIE5hdGl2ZVBERkRvY3VtZW50TWFjLm1tICov
LAogCQkJCTE2M0U4OEY1MTE4QTM5RDIwMEVEOTIzMSAvKiBTaW1wbGVGb250RGF0YUNvcmVUZXh0
LmNwcCAqLywKIAkJCQlDMTFBOUVEMjIxNDA1NzhCMDBDRkIyMEEgLyogU3dpdGNoaW5nR1BVQ2xp
ZW50LmNwcCAqLywKIAkJCQlDMTFBOUVDRDIxNDAzQTVDMDBDRkIyMEEgLyogU3dpdGNoaW5nR1BV
Q2xpZW50LmggKi8sCkBAIC0yNjUzNSw2ICsyNjU0MCw4IEBACiAJCQkJNzI1MjM5NkIyNTRDQURD
MjAwRjVGQjE1IC8qIE5hdGl2ZUltYWdlLmNwcCAqLywKIAkJCQk1NUEzMzZGNjFEODIwOUY0MDAy
MkM0QzcgLyogTmF0aXZlSW1hZ2UuaCAqLywKIAkJCQk3MkFCOUExRjI1NUE5RUE2MDBFNkVCRjEg
LyogTmF0aXZlSW1hZ2VSZWZlcmVuY2UuaCAqLywKKwkJCQk3MjlDNDVDOTI1NjRGODFCMDAwNDA3
Q0YgLyogTmF0aXZlUERGRG9jdW1lbnQuY3BwICovLAorCQkJCTcyOUM0NUNBMjU2NEY4MUIwMDA0
MDdDRiAvKiBOYXRpdmVQREZEb2N1bWVudC5oICovLAogCQkJCUIyNzUzNTUyMEIwNTM4MTQwMDJD
RTY0RiAvKiBQYXRoLmNwcCAqLywKIAkJCQlCMjc1MzU1MzBCMDUzODE0MDAyQ0U2NEYgLyogUGF0
aC5oICovLAogCQkJCUE4OERENDg4MEI0NjI5QjAwMEMwMjk5MCAvKiBQYXRoVHJhdmVyc2FsU3Rh
dGUuY3BwICovLApAQCAtMjY1NDMsMTEgKzI2NTUwLDE0IEBACiAJCQkJMkQ1MDAyRkExQjU2RDc5
OTAwMjBBQUY3IC8qIFBhdGhVdGlsaXRpZXMuaCAqLywKIAkJCQlBOEZBNkU1QzBFNENGREVEMDBE
NUNGNDkgLyogUGF0dGVybi5jcHAgKi8sCiAJCQkJQThGQTZFNUIwRTRDRkRFRDAwRDVDRjQ5IC8q
IFBhdHRlcm4uaCAqLywKKwkJCQlCMjc1MzUzNjBCMDUzODE0MDAyQ0U2NEYgLyogUERGRG9jdW1l
bnRJbWFnZS5jcHAgKi8sCisJCQkJQjI3NTM1MzcwQjA1MzgxNDAwMkNFNjRGIC8qIFBERkRvY3Vt
ZW50SW1hZ2UuaCAqLywKIAkJCQk3MjZENTZFMTI1M0FFMDQzMDAwMkVGOTAgLyogUGxhdGZvcm1J
bWFnZS5oICovLAogCQkJCTcyQkFDM0E2MjNFMTczMjgwMDhENzQxQyAvKiBQbGF0Zm9ybUltYWdl
QnVmZmVyLmggKi8sCiAJCQkJNTUwNjQwQUQyNDA3NTZEQTAwQUFFMDQ1IC8qIFBsYXRmb3JtSW1h
Z2VCdWZmZXJCYWNrZW5kLmggKi8sCiAJCQkJMDU2MkY5NjAxNTczRjg4RjAwMzFDQTE2IC8qIFBs
YXRmb3JtTGF5ZXIuaCAqLywKIAkJCQlDRUVGQ0Q3QjE5REIzM0RDMDAzODc2RDcgLyogUGxhdGZv
cm1NZWRpYVJlc291cmNlTG9hZGVyLmggKi8sCisJCQkJNzI5QzQ1Q0MyNTY1RDZDNzAwMDQwN0NG
IC8qIFBsYXRmb3JtUERGRG9jdW1lbnQuaCAqLywKIAkJCQkwNzI4NDdFMjE2RUJDNUIwMDA0M0NG
QTQgLyogUGxhdGZvcm1UZXh0VHJhY2suaCAqLywKIAkJCQkwNzRFODJCODE4QTY5RjBFMDA3RUY1
NEMgLyogUGxhdGZvcm1UaW1lUmFuZ2VzLmNwcCAqLywKIAkJCQkwNzRFODJCOTE4QTY5RjBFMDA3
RUY1NEMgLyogUGxhdGZvcm1UaW1lUmFuZ2VzLmggKi8sCkBAIC0zMzU4OCw2ICszMzU5OCw3IEBA
CiAJCQkJNzI2RDU2RTMyNTNBRTM2NjAwMDJFRjkwIC8qIE5hdGl2ZUltYWdlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk3MkFCOUEyMTI1NUE5RkRFMDBFNkVCRjEgLyogTmF0aXZlSW1hZ2VSZWZlcmVu
Y2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzQjJEMTc1MUI4QkNENkEwMEEwMkU0NyAvKiBOYXRp
dmVOb2RlRmlsdGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MjlDNDVDRDI1NjYwNTM0MDAwNDA3
Q0YgLyogTmF0aXZlUERGRG9jdW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxMEI5QjZDMEI3
NDc1OTkwMDNFRDg5MCAvKiBOYXRpdmVYUGF0aE5TUmVzb2x2ZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTkzQ0NGMDI3MEFGNkM1MjkwMDAxOEU4OSAvKiBOYXZpZ2F0aW9uQWN0aW9uLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5NzlGNDNENDEwNzVFNDRBMDAwMEY4M0IgLyogTmF2aWdhdGlvblNjaGVk
dWxlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMzgyMyw2ICszMzgzNCw3IEBACiAJCQkJMDdGOTQ0
MTYxODY0RDA0NjAwNUQzMUNCIC8qIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTM1QzQ3NjkwOUFDNEQ0MzAwQTZBQUI0IC8qIFBsYXRmb3JtTW91c2VF
dmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzU5ODkwNTgxNEU5QzI5OTAwRThEMThCIC8qIFBs
YXRmb3JtUGFzdGVib2FyZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzI5QzQ1Q0UyNTY2MDU2QzAw
MDQwN0NGIC8qIFBsYXRmb3JtUERGRG9jdW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRUMw
MUQ3MEMyNzRFQjQwMDlGNEVDOSAvKiBQbGF0Zm9ybVNjcmVlbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMjk3QkUzRDUxNkMwM0MwODAwMzMxNkJEIC8qIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkyOTdCRTNENjE2QzAzQzBCMDAzMzE2QkQgLyog
UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAppbmRleCA1Y2M5MzM4MzI1NzRkY2Jl
YmVkODJjMmMwYmNlOGYwMGMyYmNhNzJlLi42NmI2NTBjNjJhYTA1MjY1OTA3YzA4OTI5ZDI1NzRm
YmI3OTJmZmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
SW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5j
cHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJN
SU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKKyNpbmNsdWRlICJO
YXRpdmVQREZEb2N1bWVudC5oIgogI2luY2x1ZGUgIlJlbmRlckVsZW1lbnQuaCIKICNpbmNsdWRl
ICJTVkdJbWFnZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCkBAIC00OSwxMCArNTAs
NiBAQAogI2luY2x1ZGUgIlN5c3RlbU1lbW9yeS5oIgogI2VuZGlmCiAKLSNpZiBVU0UoQ0cpCi0j
aW5jbHVkZSAiUERGRG9jdW1lbnRJbWFnZS5oIgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogQ2FjaGVkSW1hZ2U6OkNhY2hlZEltYWdlKENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QsIGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQsIGNvbnN0IENvb2tpZUphciog
Y29va2llSmFyKQpAQCAtNTI2LDggKzUyMyw4IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IENhY2hl
ZEltYWdlOjpjb252ZXJ0ZWREYXRhSWZOZWVkZWQoU2hhcmVkQnVmZmVyKiBkYXRhKSBjb25zCiB7
CiAgICAgaWYgKCFkYXRhIHx8ICFpc1Bvc3RTY3JpcHRSZXNvdXJjZSgpKQogICAgICAgICByZXR1
cm4gZGF0YTsKLSNpZiBQTEFURk9STShNQUMpICYmICFVU0UoV0VCS0lUX0lNQUdFX0RFQ09ERVJT
KQotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShQREZEb2N1bWVudEltYWdlOjpjb252
ZXJ0UG9zdFNjcmlwdERhdGFUb1BERihkYXRhLT5jcmVhdGVDRkRhdGEoKSkuZ2V0KCkpOworI2lm
IEVOQUJMRShQREZET0NVTUVOVElNQUdFKSAmJiBFTkFCTEUoUERGS0lUX0ZPUl9QREZET0NVTUVO
VElNQUdFKQorICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShOYXRpdmVQREZEb2N1bWVu
dDo6Y29udmVydFBvc3RTY3JpcHREYXRhVG9QREYoZGF0YS0+Y3JlYXRlQ0ZEYXRhKCkpLmdldCgp
KTsKICNlbHNlCiAgICAgLy8gTG9hZGluZyB0aGUgaW1hZ2Ugc2hvdWxkIGhhdmUgYmVlbiBjYW5j
ZWxlZCBpZiB0aGUgc3lzdGVtIGRvZXMgbm90IHN1cHBvcnQgY29udmVydGluZyBQb3N0U2NyaXB0
IHRvIFBERi4KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCmluZGV4IDVjYWNhODU0
NTJjMWE2OThiOTVlNGRmNDQwMDg1OGM5NjM0NWVjZTUuLmNhNDg5ZjA4MDdlYjUwMmE1Nzc1ZTZm
YzdkMGIzZjAwOTg2OGU2MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUg
IkludFJlY3QuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllci5oIgogI2luY2x1ZGUgIk1lZGlhUGxh
eWVyUHJpdmF0ZS5oIgorI2luY2x1ZGUgIk5hdGl2ZVBERkRvY3VtZW50LmgiCiAjaW5jbHVkZSAi
Um91bmRlZFJlY3QuaCIKICNpbmNsdWRlICJUZXh0UnVuLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQv
VGV4dFN0cmVhbS5oPgpAQCAtNzQ0LDYgKzc0NSwxOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFn
ZQogICAgIGRyYXdQbGF0Zm9ybUltYWdlKGltYWdlLnBsYXRmb3JtSW1hZ2UoKSwgaW1hZ2VTaXpl
LCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
OjpkcmF3TmF0aXZlUERGRG9jdW1lbnQoTmF0aXZlUERGRG9jdW1lbnQmIHBkZkRvY3VtZW50LCBj
b25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9u
cykKK3sKKyAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+ZHJhd05hdGl2ZVBERkRvY3VtZW50KHBk
ZkRvY3VtZW50LCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIHBkZkRvY3VtZW50LmRyYXcoKnRoaXMsIGltYWdlU2l6
ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOworfQorCiBJbWFnZURyYXdSZXN1bHQgR3Jh
cGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFBvaW50JiBk
ZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIGltYWdlUGFpbnRpbmdPcHRp
b25zKQogewogICAgIHJldHVybiBkcmF3SW1hZ2UoaW1hZ2UsIEZsb2F0UmVjdChkZXN0aW5hdGlv
biwgaW1hZ2Uuc2l6ZSgpKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2Uuc2l6ZSgpKSwg
aW1hZ2VQYWludGluZ09wdGlvbnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCA0NTM5ZmJiNmRiZjNlYzc4M2M2MTMzODZl
YTI1NDk0ZjRlYjZiMWE0Li43ZWIwNWMwMmM5ZDY5NWZhMDdkNzg3N2NlM2JjNjgxMjQ5MjNmNDg0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuaApAQCAtOTMsNiArOTMsOCBAQCBjbGFzcyBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVBy
aXZhdGU7CiBjbGFzcyBJbWFnZUJ1ZmZlcjsKIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBNZWRpYVBs
YXllcjsKK2NsYXNzIE5hdGl2ZUltYWdlOworY2xhc3MgTmF0aXZlUERGRG9jdW1lbnQ7CiBjbGFz
cyBSb3VuZGVkUmVjdDsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dEdMOwogY2xhc3MgUGF0aDsKQEAg
LTM4MCw2ICszODIsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdHJva2VS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IGxpbmVXaWR0aCk7CiAKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYg
c2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGRyYXdOYXRpdmVQREZEb2N1bWVudChOYXRpdmVQREZEb2N1bWVudCYsIGNvbnN0
IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgfSk7CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCBJbWFnZURyYXdSZXN1bHQgZHJhd0ltYWdlKEltYWdlJiwgY29u
c3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9
IHsgSW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdlIH0pOwogICAgIFdFQkNPUkVfRVhQT1JUIElt
YWdlRHJhd1Jlc3VsdCBkcmF3SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0
aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IEltYWdlT3JpZW50YXRpb246OkZy
b21JbWFnZSB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dEltcGwuaAppbmRleCA1YzgyNWY3ZDQxYjk4NjE2ZDE3ZmRiOGViZTdj
ZmZkN2QyYmZjYzhjLi45NTEzZjE4Nzk0Y2YzNmQxZTQzYTNkMGVkY2JhYjI0ZTVkY2RkMmZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0SW1wbC5oCkBAIC03MSw2ICs3MSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9p
ZCBkcmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0
aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYsIGNv
bnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBkcmF3TmF0aXZlUERGRG9jdW1lbnQoTmF0aXZlUERGRG9jdW1lbnQm
LCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oTmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9h
dFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBw
aGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmLCBm
bG9hdCBib3JkZXJUaGlja25lc3MpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlLmNwcAppbmRleCA5MzdhYTRkMzU5M2QxZDIzOTE3MzNmMGMwMjc3NGEyMTExMzM2
NWUxLi5lNWNiMWUyMGRhMjFlN2NlMGJjNTUyZmVlOTI4MGE3NjM5YTQ4ZDIyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAj
aW5jbHVkZSAiSW1hZ2VPYnNlcnZlci5oIgogI2luY2x1ZGUgIkxlbmd0aC5oIgogI2luY2x1ZGUg
Ik1JTUVUeXBlUmVnaXN0cnkuaCIKKyNpbmNsdWRlICJQREZEb2N1bWVudEltYWdlLmgiCiAjaW5j
bHVkZSAiU1ZHSW1hZ2UuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDxt
YXRoLmg+CkBAIC00Miw3ICs0Myw2IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5o
PgogCiAjaWYgVVNFKENHKQotI2luY2x1ZGUgIlBERkRvY3VtZW50SW1hZ2UuaCIKICNpbmNsdWRl
IDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgogI2VuZGlmCiAKQEAgLTcwLDcgKzcw
LDcgQEAgUmVmUHRyPEltYWdlPiBJbWFnZTo6Y3JlYXRlKEltYWdlT2JzZXJ2ZXImIG9ic2VydmVy
KQogCiAgICAgYXV0byB1cmwgPSBvYnNlcnZlci5zb3VyY2VVcmwoKTsKICAgICBpZiAoaXNQREZS
ZXNvdXJjZShtaW1lVHlwZSwgdXJsKSB8fCBpc1Bvc3RTY3JpcHRSZXNvdXJjZShtaW1lVHlwZSwg
dXJsKSkgewotI2lmIFVTRShDRykgJiYgIVVTRShXRUJLSVRfSU1BR0VfREVDT0RFUlMpCisjaWYg
RU5BQkxFKFBERkRPQ1VNRU5USU1BR0UpCiAgICAgICAgIHJldHVybiBQREZEb2N1bWVudEltYWdl
OjpjcmVhdGUoJm9ic2VydmVyKTsKICNlbHNlCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlUERGRG9jdW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlUERGRG9jdW1l
bnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjdjOWJlZGJiYzQ3ZDZkOTBjNDJlZmM3NDQxOGFjMDU3NGMxNTk0
YzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9O
YXRpdmVQREZEb2N1bWVudC5jcHAKQEAgLTAsMCArMSwyNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIk5hdGl2ZVBERkRvY3VtZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworTmF0aXZl
UERGRG9jdW1lbnQ6Ok5hdGl2ZVBERkRvY3VtZW50KFNoYXJlZEJ1ZmZlciYgZGF0YSwgUmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgUGxhdGZv
cm1QREZEb2N1bWVudFB0ciYmIHBsYXRmb3JtUERGRG9jdW1lbnQpCisgICAgOiBtX2RhdGEobWFr
ZVJlZihkYXRhKSkKKyAgICAsIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKHJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcikKKyAgICAsIG1fcGxhdGZvcm1QREZEb2N1bWVudChXVEZNb3Zl
KHBsYXRmb3JtUERGRG9jdW1lbnQpKQoreworICAgIGlmIChwYWdlQ291bnQoKSkKKyAgICAgICAg
Y29tcHV0ZUJvdW5kc0ZvckN1cnJlbnRQYWdlKCk7Cit9CisKK05hdGl2ZVBERkRvY3VtZW50Ojp+
TmF0aXZlUERGRG9jdW1lbnQoKQoreworICAgIGlmIChtX29ic2VydmVyKQorICAgICAgICBtX29i
c2VydmVyLT5yZWxlYXNlTmF0aXZlUERGRG9jdW1lbnQobV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIpOworfQorCitGbG9hdFNpemUgTmF0aXZlUERGRG9jdW1lbnQ6OnNpemUoKSBjb25zdAor
eworICAgIEZsb2F0U2l6ZSBleHBhbmRlZENyb3BCb3hTaXplID0gRmxvYXRTaXplKGV4cGFuZGVk
SW50U2l6ZShtX2Nyb3BCb3guc2l6ZSgpKSk7CisKKyAgICBpZiAobV9yb3RhdGlvbkRlZ3JlZXMg
PT0gOTAgfHwgbV9yb3RhdGlvbkRlZ3JlZXMgPT0gMjcwKQorICAgICAgICByZXR1cm4gZXhwYW5k
ZWRDcm9wQm94U2l6ZS50cmFuc3Bvc2VkU2l6ZSgpOworICAgIHJldHVybiBleHBhbmRlZENyb3BC
b3hTaXplOworfQorCitzdGF0aWMgdm9pZCB0cmFuc2Zvcm1Db250ZXh0Rm9yUGFpbnRpbmcoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QpCit7CisgICAgZmxvYXQgaFNjYWxlID0gZGVzdFJlY3Qud2lkdGgo
KSAvIHNyY1JlY3Qud2lkdGgoKTsKKyAgICBmbG9hdCB2U2NhbGUgPSBkZXN0UmVjdC5oZWlnaHQo
KSAvIHNyY1JlY3QuaGVpZ2h0KCk7CisKKyAgICBpZiAoaFNjYWxlICE9IHZTY2FsZSkgeworICAg
ICAgICBmbG9hdCBtaW5pbXVtU2NhbGUgPSBzdGQ6Om1heCgoZGVzdFJlY3Qud2lkdGgoKSAtIDAu
NSkgLyBzcmNSZWN0LndpZHRoKCksIChkZXN0UmVjdC5oZWlnaHQoKSAtIDAuNSkgLyBzcmNSZWN0
LmhlaWdodCgpKTsKKyAgICAgICAgZmxvYXQgbWF4aW11bVNjYWxlID0gc3RkOjptaW4oKGRlc3RS
ZWN0LndpZHRoKCkgKyAwLjUpIC8gc3JjUmVjdC53aWR0aCgpLCAoZGVzdFJlY3QuaGVpZ2h0KCkg
KyAwLjUpIC8gc3JjUmVjdC5oZWlnaHQoKSk7CisKKyAgICAgICAgLy8gSWYgdGhlIGRpZmZlcmVu
Y2UgYmV0d2VlbiB0aGUgdHdvIHNjYWxlcyBpcyBkdWUgdG8gaW50ZWdlciByb3VuZGluZyBvZiBp
bWFnZSBzaXplcywKKyAgICAgICAgLy8gdXNlIHRoZSBzbWFsbGVyIG9mIHRoZSB0d28gb3JpZ2lu
YWwgc2NhbGVzIHRvIGVuc3VyZSB0aGF0IHRoZSBpbWFnZSBmaXRzIGluc2lkZSB0aGUKKyAgICAg
ICAgLy8gc3BhY2Ugb3JpZ2luYWxseSBhbGxvY2F0ZWQgZm9yIGl0LgorICAgICAgICBpZiAobWlu
aW11bVNjYWxlIDw9IG1heGltdW1TY2FsZSkgeworICAgICAgICAgICAgaFNjYWxlID0gc3RkOjpt
aW4oaFNjYWxlLCB2U2NhbGUpOworICAgICAgICAgICAgdlNjYWxlID0gaFNjYWxlOworICAgICAg
ICB9CisgICAgfQorCisgICAgLy8gZHJhd1BERlBhZ2UoKSByZWxpZXMgb24gZHJhd2luZyB0aGUg
d2hvbGUgUERGIGludG8gYSBjb250ZXh0IHN0YXJ0aW5nIGF0ICgwLCAwKS4gV2UgbmVlZAorICAg
IC8vIHRvIHRyYW5zZm9ybSB0aGUgZGVzdGluYXRpb24gY29udGV4dCBzdWNoIHRoYXQgc3JjUmVj
dCBvZiB0aGUgc291cmNlIGNvbnRleHQgd2lsbCBiZSBkcmF3bgorICAgIC8vIGluIGRlc3RSZWN0
IG9mIGRlc3RpbmF0aW9uIGNvbnRleHQuCisgICAgY29udGV4dC50cmFuc2xhdGUoZGVzdFJlY3Qu
bG9jYXRpb24oKSAtIHNyY1JlY3QubG9jYXRpb24oKSk7CisgICAgY29udGV4dC5zY2FsZShGbG9h
dFNpemUoaFNjYWxlLCAtdlNjYWxlKSk7CisgICAgY29udGV4dC50cmFuc2xhdGUoMCwgLXNyY1Jl
Y3QuaGVpZ2h0KCkpOworfQorCit2b2lkIE5hdGl2ZVBERkRvY3VtZW50Ojp1cGRhdGVTbmFwc2hv
dElmTmVlZGVkKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRTaXplJiBpbWFn
ZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCkKK3sKKyAgICAvLyBDbGlwcGVkIG9wdGlvbiBpcyBmb3IgdGVzdGluZyBvbmx5IGFuZCBpdCBy
ZXF1aXJlcyB0aGUgUERGIHRvIGJlIHJlLWNhY2hlZCB3aXRoIGVhY2ggZHJhdy4KKyAgICBib29s
IGZvcmNlVXBkYXRlU25hcHNob3QgPSBtX3BkZkltYWdlQ2FjaGluZ1BvbGljeSA9PSBQREZJbWFn
ZUNhY2hpbmdQb2xpY3k6OkNsaXBCb3VuZHNPbmx5OworICAgIGlmICghZm9yY2VVcGRhdGVTbmFw
c2hvdCAmJiBtX3NuYXBzaG90KSB7CisgICAgICAgIC8vIEFkanVzdCB0aGUgdmlldy1wb3J0IHJl
Y3RhbmdsZXMgaWYgbm8gcmUtY2FjaGluZyB3aWxsIGhhcHBlbi4KKyAgICAgICAgaWYgKG1fc25h
cHNob3QtPnRyYW5zZmVyVmlld3BvcnQoY29udGV4dCwgZGVzdFJlY3QsIHNyY1JlY3QpKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fc25hcHNob3QgPSBudWxscHRyOworICAg
IAorICAgIEZsb2F0UmVjdCBzbmFwc2hvdFJlY3Q7CisgICAgc3dpdGNoIChtX3BkZkltYWdlQ2Fj
aGluZ1BvbGljeSkgeworICAgIGNhc2UgUERGSW1hZ2VDYWNoaW5nUG9saWN5OjpEaXNhYmxlZDoK
KyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgUERGSW1hZ2VDYWNoaW5nUG9saWN5OjpCZWxvd01l
bW9yeUxpbWl0OgorICAgICAgICAvLyBLZWVwIHRoZSBtZW1vcnkgdXNlZCBieSB0aGUgY2FjaGVk
IGltYWdlIGJlbG93IHNvbWUgdGhyZXNob2xkLCBvdGhlcndpc2UgV2ViS2l0IHByb2Nlc3MKKyAg
ICAgICAgLy8gd2lsbCBqZXRzYW0gaWYgaXQgZXhjZWVkcyBpdHMgbWVtb3J5IGxpbWl0LiBPbmx5
IGEgcmVjdGFuZ2xlIGZyb20gdGhlIFBERiBtYXkgYmUgY2FjaGVkLgorICAgICAgICBzbmFwc2hv
dFJlY3QgPSBTbmFwc2hvdDo6Y2FsY3VsYXRlU25hcHNob3RSZWN0KGNvbnRleHQsIGRlc3RSZWN0
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQREZJbWFnZUNhY2hpbmdQb2xpY3k6OkNsaXBC
b3VuZHNPbmx5OgorICAgICAgICBzbmFwc2hvdFJlY3QgPSBpbnRlcnNlY3Rpb24oY29udGV4dC5j
bGlwQm91bmRzKCksIGRlc3RSZWN0KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQREZJbWFn
ZUNhY2hpbmdQb2xpY3k6OkVuYWJsZWQ6CisgICAgICAgIHNuYXBzaG90UmVjdCA9IGRlc3RSZWN0
OworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBGbG9hdFNpemUgc25hcHNob3RTaXplID0g
RmxvYXRSZWN0KGVuY2xvc2luZ0ludFJlY3Qoc25hcHNob3RSZWN0KSkuc2l6ZSgpOworICAgIAor
ICAgIC8vIENhY2hlIHRoZSBQREYgaW1hZ2Ugb25seSBpZiB0aGUgc2l6ZSBvZiB0aGUgbmV3IGlt
YWdlIHdvbid0IGV4Y2VlZCB0aGUgY2FjaGUgdGhyZXNob2xkLgorICAgIGlmIChtX3BkZkltYWdl
Q2FjaGluZ1BvbGljeSA9PSBQREZJbWFnZUNhY2hpbmdQb2xpY3k6OkJlbG93TWVtb3J5TGltaXQp
IHsKKyAgICAgICAgaWYgKCFTbmFwc2hvdDo6Y2FuQ3JlYXRlU25hcHNob3QoY29udGV4dCwgc25h
cHNob3RTaXplKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgYXV0byBp
bWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKHNuYXBzaG90
U2l6ZSwgY29udGV4dCk7CisgICAgaWYgKCFpbWFnZUJ1ZmZlcikKKyAgICAgICAgcmV0dXJuOwor
CisgICAgYXV0byYgYnVmZmVyQ29udGV4dCA9IGltYWdlQnVmZmVyLT5jb250ZXh0KCk7CisKKyAg
ICAvLyBXZSBuZWVkIHRvIHRyYW5zZm9ybSB0aGUgY29vcmRpbmF0ZSBzeXN0ZW0gc3VjaCB0aGF0
IHRvcC1sZWZ0IG9mIGFkanVzdGVkRGVzdFJlY3Qgd2lsbCBiZSBtYXBwZWQgdG8gdGhlCisgICAg
Ly8gdG9wLWxlZnQgb2YgZGVzdFJlY3QuIEFsdGhvdWdoIG9ubHkgaW1hZ2VCdWZmZXJSZWN0LnNp
emUoKSBvZiB0aGUgaW1hZ2UgY29waWVkLCB0aGUgc2l6ZXMgb2Ygc3JjUmVjdAorICAgIC8vIGFu
ZCBkZXN0UmVjdCBzaG91bGQgYmUgcGFzc2VkIHRvIHRoaXMgZnVuY3Rpb24gYmVjYXVzZSB0aGV5
IGFyZSB1c2VkIHRvIGNhbGN1bGF0ZSB0aGUgaW1hZ2Ugc2NhbGluZy4KKyAgICB0cmFuc2Zvcm1D
b250ZXh0Rm9yUGFpbnRpbmcoYnVmZmVyQ29udGV4dCwgZGVzdFJlY3QsIEZsb2F0UmVjdChzbmFw
c2hvdFJlY3QubG9jYXRpb24oKSwgc3JjUmVjdC5zaXplKCkpKTsKKyAgICBkcmF3UERGUGFnZShi
dWZmZXJDb250ZXh0LCBpbWFnZVNpemUpOworCisgICAgYXV0byB0cmFuc2Zvcm0gPSBjb250ZXh0
LmdldENUTShHcmFwaGljc0NvbnRleHQ6OkRlZmluaXRlbHlJbmNsdWRlRGV2aWNlU2NhbGUpOwor
ICAgIG1fc25hcHNob3QgPSBTbmFwc2hvdDo6Y3JlYXRlKG1ha2VSZWYoKmltYWdlQnVmZmVyKSwg
c25hcHNob3RSZWN0LCBkZXN0UmVjdCwgc3JjUmVjdCwgdHJhbnNmb3JtKTsKKyAgICAKKyAgICBB
U1NFUlQobV9zbmFwc2hvdCk7CisgICAgKyttX2NhY2hpbmdDb3VudEZvclRlc3Rpbmc7Cit9CisK
K3ZvaWQgTmF0aXZlUERGRG9jdW1lbnQ6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9u
cykKK3sKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7
CisgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24ob3B0aW9ucy5jb21wb3NpdGVPcGVy
YXRvcigpKTsKKworICAgIHVwZGF0ZVNuYXBzaG90SWZOZWVkZWQoY29udGV4dCwgaW1hZ2VTaXpl
LCBkZXN0UmVjdCwgc3JjUmVjdCk7CisKKyAgICBpZiAobV9zbmFwc2hvdCkKKyAgICAgICAgbV9z
bmFwc2hvdC0+ZHJhdyhjb250ZXh0KTsKKyAgICBlbHNlIHsKKyAgICAgICAgdHJhbnNmb3JtQ29u
dGV4dEZvclBhaW50aW5nKGNvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0KTsKKyAgICAgICAgZHJh
d1BERlBhZ2UoY29udGV4dCwgaW1hZ2VTaXplKTsKKyAgICB9Cit9CisKK3ZvaWQgTmF0aXZlUERG
RG9jdW1lbnQ6OmR1bXAoV1RGOjpUZXh0U3RyZWFtJiB0cykgY29uc3QKK3sKKyAgICB0cy5kdW1w
UHJvcGVydHkoInBhZ2UtY291bnQiLCBwYWdlQ291bnQoKSk7CisgICAgdHMuZHVtcFByb3BlcnR5
KCJjcm9wLWJveCIsIG1fY3JvcEJveCk7CisgICAgaWYgKG1fcm90YXRpb25EZWdyZWVzKQorICAg
ICAgICB0cy5kdW1wUHJvcGVydHkoInJvdGF0aW9uIiwgbV9yb3RhdGlvbkRlZ3JlZXMpOworfQor
CitzdGQ6OnVuaXF1ZV9wdHI8TmF0aXZlUERGRG9jdW1lbnQ6OlNuYXBzaG90PiBOYXRpdmVQREZE
b2N1bWVudDo6U25hcHNob3Q6OmNyZWF0ZShSZWY8SW1hZ2VCdWZmZXI+JiYgaW1hZ2VCdWZmZXIs
IGNvbnN0IEZsb2F0UmVjdCYgaW1hZ2VCdWZmZXJSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJh
bnNmb3JtKQoreworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8U25hcHNob3Q+KG5ldyBTbmFw
c2hvdChXVEZNb3ZlKGltYWdlQnVmZmVyKSwgaW1hZ2VCdWZmZXJSZWN0LCBkZXN0UmVjdCwgc3Jj
UmVjdCwgdHJhbnNmb3JtKSk7Cit9CisKK05hdGl2ZVBERkRvY3VtZW50OjpTbmFwc2hvdDo6U25h
cHNob3QoUmVmPEltYWdlQnVmZmVyPiYmIGltYWdlQnVmZmVyLCBjb25zdCBGbG9hdFJlY3QmIHNu
YXBzaG90UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSkKKyAgICA6IG1faW1hZ2VC
dWZmZXIoV1RGTW92ZShpbWFnZUJ1ZmZlcikpCisgICAgLCBtX3NuYXBzaG90UmVjdChzbmFwc2hv
dFJlY3QpCisgICAgLCBtX2Rlc3RSZWN0KGRlc3RSZWN0KQorICAgICwgbV9zcmNSZWN0KHNyY1Jl
Y3QpCisgICAgLCBtX3RyYW5zZm9ybSh0cmFuc2Zvcm0pCit7CisgICAgQVNTRVJUKG1heFNuYXBz
aG90c01lbW9yeUNvc3QgLSBtX2FsbFNuYXBzaG90c01lbW9yeUNvc3QgPj0gbWVtb3J5Q29zdCgp
KTsKKyAgICBtX2FsbFNuYXBzaG90c01lbW9yeUNvc3QgKz0gbWVtb3J5Q29zdCgpOworfQorCitO
YXRpdmVQREZEb2N1bWVudDo6U25hcHNob3Q6On5TbmFwc2hvdCgpCit7CisgICAgQVNTRVJUKG1f
YWxsU25hcHNob3RzTWVtb3J5Q29zdCA+PSBtZW1vcnlDb3N0KCkpOworICAgIG1fYWxsU25hcHNo
b3RzTWVtb3J5Q29zdCAtPSBtZW1vcnlDb3N0KCk7Cit9CisKK0Zsb2F0UmVjdCBOYXRpdmVQREZE
b2N1bWVudDo6U25hcHNob3Q6OmNhbGN1bGF0ZVNuYXBzaG90UmVjdChHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpCit7CisgICAgRmxvYXRSZWN0IGRp
cnR5UmVjdCA9IGNvbnRleHQuY2xpcEJvdW5kcygpOworCisgICAgLy8gQ2FsY3VsYXRlIHRoZSBt
YXhpbXVtIHJlY3RhbmdsZSB3ZSBjYW4gY2FjaGUgYXJvdW5kIHRoZSBjZW50ZXIgb2YgdGhlIGNs
aXBwaW5nIGJvdW5kcy4KKyAgICBGbG9hdFNpemUgbWF4U2l6ZSA9IG1heFNuYXBzaG90U2lkZSAv
IGNvbnRleHQuc2NhbGVGYWN0b3IoKTsKKyAgICBGbG9hdFBvaW50IG1pbkxvY2F0aW9uID0gRmxv
YXRQb2ludChkaXJ0eVJlY3QuY2VudGVyKCkgLSBtYXhTaXplIC8gMik7CisKKyAgICAvLyBFbnN1
cmUgdGhlIGNsaXBwaW5nIGJvdW5kcyBhcmUgYWxsIGluY2x1ZGVkIGJ1dCB3aXRoaW4gdGhlIGJv
dW5kcyBvZiB0aGUgZHN0UmVjdAorICAgIHJldHVybiBpbnRlcnNlY3Rpb24odW5pb25SZWN0KGRp
cnR5UmVjdCwgRmxvYXRSZWN0KG1pbkxvY2F0aW9uLCBtYXhTaXplKSksIGRlc3RSZWN0KTsKK30K
KworYm9vbCBOYXRpdmVQREZEb2N1bWVudDo6U25hcHNob3Q6OmNhbkNyZWF0ZVNuYXBzaG90KEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRTaXplJiBpbWFnZUJ1ZmZlclNpemUp
Cit7CisgICAgYXV0byBtZW1vcnlDb3N0ID0gSW1hZ2VCdWZmZXI6OmNvbXBhdGlibGVCdWZmZXJT
aXplKGltYWdlQnVmZmVyU2l6ZSwgY29udGV4dCkudW5jbGFtcGVkQXJlYSgpICogNDsKKyAgICBy
ZXR1cm4gbWF4U25hcHNob3RzTWVtb3J5Q29zdCAtIG1fYWxsU25hcHNob3RzTWVtb3J5Q29zdCA+
PSBtZW1vcnlDb3N0OworfQorCitib29sIE5hdGl2ZVBERkRvY3VtZW50OjpTbmFwc2hvdDo6Y2Fu
QmVSZXVzZWQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QpIGNvbnN0Cit7CisgICAgLy8gT2xkIGFuZCBu
ZXcgc291cmNlIHJlY3RhbmdsZXMgaGF2ZSB0byBtYXRjaC4KKyAgICBpZiAoc3JjUmVjdCAhPSBt
X3NyY1JlY3QpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIE9sZCBhbmQgbmV3IHNj
YWxpbmcgZmFjdG9ycyAiZGVzdCAvIHNyYyIgaGF2ZSB0byBtYXRjaC4KKyAgICBpZiAoZGVzdFJl
Y3Quc2l6ZSgpICE9IG1fZGVzdFJlY3Quc2l6ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICAvLyBtX3NuYXBzaG90UmVjdHQgY2FuIGJlIG1vdmVkIGlmIHNyY1JlY3QgYW5kIGRlc3RS
ZWN0LnNpemUoKSBkaWQgbm90IGNoYW5nZS4KKyAgICBGbG9hdFJlY3QgbW92ZWRTbmFwc2hvdFJl
Y3QgPSBtX3NuYXBzaG90UmVjdDsKKyAgICBtb3ZlZFNuYXBzaG90UmVjdC5tb3ZlKEZsb2F0U2l6
ZShkZXN0UmVjdC5sb2NhdGlvbigpIC0gbV9kZXN0UmVjdC5sb2NhdGlvbigpKSk7CisKKyAgICAv
LyBtb3ZlZENhY2hlZEltYWdlUmVjdCBoYXMgdG8gY29udGFpbiB0aGUgd2hvbGUgZGlydHkgcmVj
dGFuZ2xlLgorICAgIEZsb2F0UmVjdCBkaXJ0eVJlY3QgPSBpbnRlcnNlY3Rpb24oY29udGV4dC5j
bGlwQm91bmRzKCksIGRlc3RSZWN0KTsKKyAgICBpZiAoIW1vdmVkU25hcHNob3RSZWN0LmNvbnRh
aW5zKGRpcnR5UmVjdCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIE9sZCBhbmQg
bmV3IGNvbnRleHQgc2NhbGluZyBmYWN0b3JzIGhhdmUgdG8gbWF0Y2ggYXMgd2VsbC4KKyAgICBB
ZmZpbmVUcmFuc2Zvcm06OkRlY29tcG9zZWRUeXBlIGRlY29tcG9zZWRUcmFuc2Zvcm07CisgICAg
Y29udGV4dC5nZXRDVE0oR3JhcGhpY3NDb250ZXh0OjpEZWZpbml0ZWx5SW5jbHVkZURldmljZVNj
YWxlKS5kZWNvbXBvc2UoZGVjb21wb3NlZFRyYW5zZm9ybSk7CisKKyAgICBBZmZpbmVUcmFuc2Zv
cm06OkRlY29tcG9zZWRUeXBlIGNhY2hlZERlY29tcG9zZWRUcmFuc2Zvcm07CisgICAgbV90cmFu
c2Zvcm0uZGVjb21wb3NlKGNhY2hlZERlY29tcG9zZWRUcmFuc2Zvcm0pOworICAgIAorICAgIHJl
dHVybiBkZWNvbXBvc2VkVHJhbnNmb3JtLnNjYWxlWCA9PSBjYWNoZWREZWNvbXBvc2VkVHJhbnNm
b3JtLnNjYWxlWCAmJiBkZWNvbXBvc2VkVHJhbnNmb3JtLnNjYWxlWSA9PSBjYWNoZWREZWNvbXBv
c2VkVHJhbnNmb3JtLnNjYWxlWTsKK30KKworc2l6ZV90IE5hdGl2ZVBERkRvY3VtZW50OjpTbmFw
c2hvdDo6bWVtb3J5Q29zdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXItPmJh
Y2tlbmRTaXplKCkudW5jbGFtcGVkQXJlYSgpICogNDsKK30KKworYm9vbCBOYXRpdmVQREZEb2N1
bWVudDo6U25hcHNob3Q6OnRyYW5zZmVyVmlld3BvcnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QpCit7
CisgICAgaWYgKCFjYW5CZVJldXNlZChjb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIG1fc25hcHNob3RSZWN0Lm1vdmUoRmxvYXRTaXplKGRl
c3RSZWN0LmxvY2F0aW9uKCkgLSBtX2Rlc3RSZWN0LmxvY2F0aW9uKCkpKTsKKyAgICBtX2Rlc3RS
ZWN0ID0gZGVzdFJlY3Q7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgTmF0aXZlUERGRG9j
dW1lbnQ6OlNuYXBzaG90OjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBj
b250ZXh0LmRyYXdJbWFnZUJ1ZmZlcihtX2ltYWdlQnVmZmVyLCBtX2Rlc3RSZWN0KTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTmF0aXZlUERGRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL05hdGl2ZVBERkRvY3VtZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWI5MTM2NDM4ZTc3Mzk2
MDdlNzA0NmRmODc3NjY5MWQ4NjY4NjMyYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL05hdGl2ZVBERkRvY3VtZW50LmgKQEAgLTAsMCArMSwxMjgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKKyNpbmNsdWRlICJGbG9hdFJl
Y3QuaCIKKyNpbmNsdWRlICJQREZJbWFnZUNhY2hpbmdQb2xpY3kuaCIKKyNpbmNsdWRlICJQbGF0
Zm9ybVBERkRvY3VtZW50LmgiCisjaW5jbHVkZSAiUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSW1hZ2VCdWZmZXI7CitzdHJ1Y3Qg
SW1hZ2VQYWludGluZ09wdGlvbnM7CisKK2NsYXNzIE5hdGl2ZVBERkRvY3VtZW50IDogcHVibGlj
IFJlZkNvdW50ZWQ8TmF0aXZlUERGRG9jdW1lbnQ+IHsKK3B1YmxpYzoKKyAgICBjbGFzcyBPYnNl
cnZlciB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5PYnNlcnZlcigpID0gZGVmYXVs
dDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHJlbGVhc2VOYXRpdmVQREZEb2N1bWVudChSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpID0gMDsKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIE9ic2Vy
dmVyKCkgPSBkZWZhdWx0OworICAgIH07CisKKyAgICBzdGF0aWMgV0VCQ09SRV9FWFBPUlQgUmVm
UHRyPE5hdGl2ZVBERkRvY3VtZW50PiBjcmVhdGUoU2hhcmVkQnVmZmVyJiwgUmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyID0gUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgp
KTsKKworICAgIFdFQkNPUkVfRVhQT1JUIH5OYXRpdmVQREZEb2N1bWVudCgpOworCisgICAgY29u
c3QgU2hhcmVkQnVmZmVyJiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmdldCgpOyB9Cisg
ICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cigpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOyB9CisgICAg
dm9pZCBzZXRPYnNlcnZlcihPYnNlcnZlciogb2JzZXJ2ZXIpIHsgbV9vYnNlcnZlciA9IG9ic2Vy
dmVyOyB9CisKKyAgICBGbG9hdFNpemUgc2l6ZSgpIGNvbnN0OworICAgIHVuc2lnbmVkIHBhZ2VD
b3VudCgpIGNvbnN0OworCisgICAgUERGSW1hZ2VDYWNoaW5nUG9saWN5IHBkZkltYWdlQ2FjaGlu
Z1BvbGljeSgpIGNvbnN0IHsgcmV0dXJuIG1fcGRmSW1hZ2VDYWNoaW5nUG9saWN5OyB9CisgICAg
dm9pZCBzZXRQREZJbWFnZUNhY2hpbmdQb2xpY3koUERGSW1hZ2VDYWNoaW5nUG9saWN5IHBkZklt
YWdlQ2FjaGluZ1BvbGljeSkgeyBtX3BkZkltYWdlQ2FjaGluZ1BvbGljeSA9IHBkZkltYWdlQ2Fj
aGluZ1BvbGljeTsgfQorCisgICAgdm9pZCBjb21wdXRlQm91bmRzRm9yQ3VycmVudFBhZ2UoKTsK
KyAgICB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNp
emUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKTsKKworICAgIHVuc2lnbmVkIGNhY2hpbmdDb3Vu
dEZvclRlc3RpbmcoKSBjb25zdCB7IHJldHVybiBtX2NhY2hpbmdDb3VudEZvclRlc3Rpbmc7IH0K
KyAgICBzaXplX3Qgc25hcHNob3RNZW1vcnlDb3N0KCkgY29uc3QgeyByZXR1cm4gbV9zbmFwc2hv
dCA/IG1fc25hcHNob3QtPm1lbW9yeUNvc3QoKSA6IDA7IH0KKyAgICB2b2lkIGNsZWFyU25hcHNo
b3QoKSB7IG1fc25hcHNob3QgPSBudWxscHRyOyB9CisgICAgCisgICAgdm9pZCBkdW1wKFdURjo6
VGV4dFN0cmVhbSYpIGNvbnN0OworCisjaWYgRU5BQkxFKFBERktJVF9GT1JfUERGRE9DVU1FTlRJ
TUFHRSkKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmV0YWluUHRyPENGTXV0YWJsZURhdGFS
ZWY+IGNvbnZlcnRQb3N0U2NyaXB0RGF0YVRvUERGKFJldGFpblB0cjxDRkRhdGFSZWY+JiYgcG9z
dFNjcmlwdERhdGEpOworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgY2xhc3MgU25hcHNob3Qgewor
ICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTbmFwc2hvdD4gY3Jl
YXRlKFJlZjxJbWFnZUJ1ZmZlcj4mJiwgY29uc3QgRmxvYXRSZWN0JiBpbWFnZUJ1ZmZlclJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJik7CisKKyAgICAgICAgflNuYXBzaG90KCk7CisgICAgICAgIAor
ICAgICAgICAvLyBUbyBhdm9pZCB0aGUgamV0c2FtIG9uIGlPUywgd2UgYXJlIGdvaW5nIHRvIGxp
bWl0IHRoZSBzaXplIG9mIGFsbCB0aGUgUERGIHNuYXBzaG90cyB0byBiZSA2NE1CLgorICAgICAg
ICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBtYXhTbmFwc2hvdFNpZGUgPSA0ICogMTAyNDsKKyAg
ICAgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgbWF4U25hcHNob3RBcmVhID0gbWF4U25hcHNo
b3RTaWRlICogbWF4U25hcHNob3RTaWRlOworICAgICAgICBzdGF0aWMgY29uc3RleHByIHNpemVf
dCBtYXhTbmFwc2hvdHNNZW1vcnlDb3N0ID0gbWF4U25hcHNob3RBcmVhICogNDsKKworICAgICAg
ICBzdGF0aWMgRmxvYXRSZWN0IGNhbGN1bGF0ZVNuYXBzaG90UmVjdChHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KTsKKyAgICAgICAgc3RhdGljIGJvb2wgY2FuQ3Jl
YXRlU25hcHNob3QoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZUJ1ZmZl
clNpemUpOworCisgICAgICAgIHNpemVfdCBtZW1vcnlDb3N0KCkgY29uc3Q7CisgICAgICAgIGJv
b2wgdHJhbnNmZXJWaWV3cG9ydChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QpOworICAgICAgICB2b2lkIGRyYXcoR3Jh
cGhpY3NDb250ZXh0Jik7CisKKyAgICBwcml2YXRlOgorICAgICAgICBTbmFwc2hvdChSZWY8SW1h
Z2VCdWZmZXI+JiYsIGNvbnN0IEZsb2F0UmVjdCYgaW1hZ2VCdWZmZXJSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYpOworICAgICAgICBib29sIGNhbkJlUmV1c2VkKEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCkgY29uc3Q7
CisKKyAgICAgICAgUmVmPEltYWdlQnVmZmVyPiBtX2ltYWdlQnVmZmVyOworICAgICAgICBGbG9h
dFJlY3QgbV9zbmFwc2hvdFJlY3Q7CisgICAgICAgIEZsb2F0UmVjdCBtX2Rlc3RSZWN0OworICAg
ICAgICBGbG9hdFJlY3QgbV9zcmNSZWN0OworICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gbV90cmFu
c2Zvcm07CisgICAgICAgIGlubGluZSBzdGF0aWMgc2l6ZV90IG1fYWxsU25hcHNob3RzTWVtb3J5
Q29zdCB7IDAgfTsKKyAgICB9OworCisgICAgTmF0aXZlUERGRG9jdW1lbnQoU2hhcmVkQnVmZmVy
JiwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBQbGF0Zm9ybVBERkRvY3VtZW50UHRyJiYp
OworCisgICAgdm9pZCB1cGRhdGVTbmFwc2hvdElmTmVlZGVkKEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QpOworICAgIHZvaWQgZHJhd1BERlBhZ2UoR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUpOworCisgICAgUmVmPFNoYXJlZEJ1ZmZl
cj4gbV9kYXRhOworICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBtX3JlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcjsKKworICAgIE9ic2VydmVyKiBtX29ic2VydmVyIHsgbnVsbHB0ciB9
OworICAgIFBsYXRmb3JtUERGRG9jdW1lbnRQdHIgbV9wbGF0Zm9ybVBERkRvY3VtZW50OworCisg
ICAgRmxvYXRSZWN0IG1fY3JvcEJveDsKKyAgICBpbnQgbV9yb3RhdGlvbkRlZ3JlZXMgeyAwIH07
IC8vIENhbiBvbmx5IGJlIDAsIDkwLCAxODAsIG9yIDI3MCBkZWdyZWVzLgorCisgICAgUERGSW1h
Z2VDYWNoaW5nUG9saWN5IG1fcGRmSW1hZ2VDYWNoaW5nUG9saWN5IHsgZGVmYXVsdFBERkltYWdl
Q2FjaGluZ1BvbGljeSB9OworICAgIHN0ZDo6dW5pcXVlX3B0cjxTbmFwc2hvdD4gbV9zbmFwc2hv
dDsKKyAgICB1bnNpZ25lZCBtX2NhY2hpbmdDb3VudEZvclRlc3RpbmcgeyAwIH07Cit9OworCit1
c2luZyBOYXRpdmVQREZEb2N1bWVudEhhc2hNYXAgPSBIYXNoTWFwPFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciwgUmVmPE5hdGl2ZVBERkRvY3VtZW50Pj47CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BERkRv
Y3VtZW50SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUERGRG9j
dW1lbnRJbWFnZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzc4NWY2NDA1MjFmODRlOGVlZGRiODFhYjY2NmZl
MjA5MmQ0MWVmNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1BERkRvY3VtZW50SW1hZ2UuY3BwCkBAIC0wLDAgKzEsMTMxIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA0LTIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJQREZEb2N1bWVudEltYWdlLmgiCisKKyNpZiBFTkFCTEUoUERGRE9D
VU1FTlRJTUFHRSkKKworI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIklt
YWdlT2JzZXJ2ZXIuaCIKKyNpbmNsdWRlICJOYXRpdmVQREZEb2N1bWVudC5oIgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQREZEb2N1
bWVudEltYWdlOjpQREZEb2N1bWVudEltYWdlKEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQorICAg
IDogSW1hZ2Uob2JzZXJ2ZXIpCit7Cit9CisKK1BERkRvY3VtZW50SW1hZ2U6On5QREZEb2N1bWVu
dEltYWdlKCkKK3sKKyAgICBkZXN0cm95RGVjb2RlZERhdGEodHJ1ZSk7Cit9CisKK1N0cmluZyBQ
REZEb2N1bWVudEltYWdlOjpmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0Cit7CisgICAgcmV0dXJu
ICJwZGYiOworfQorCitGbG9hdFNpemUgUERGRG9jdW1lbnRJbWFnZTo6c2l6ZShJbWFnZU9yaWVu
dGF0aW9uKSBjb25zdAoreworICAgIHJldHVybiBtX25hdGl2ZVBERkRvY3VtZW50ID8gbV9uYXRp
dmVQREZEb2N1bWVudC0+c2l6ZSgpIDogRmxvYXRTaXplKCk7Cit9CisKK3Vuc2lnbmVkIFBERkRv
Y3VtZW50SW1hZ2U6OmNhY2hpbmdDb3VudEZvclRlc3RpbmcoKSBjb25zdAoreworICAgIHJldHVy
biBtX25hdGl2ZVBERkRvY3VtZW50ID8gbV9uYXRpdmVQREZEb2N1bWVudC0+Y2FjaGluZ0NvdW50
Rm9yVGVzdGluZygpIDogMDsKK30KKwordm9pZCBQREZEb2N1bWVudEltYWdlOjpzZXRQZGZJbWFn
ZUNhY2hpbmdQb2xpY3koUERGSW1hZ2VDYWNoaW5nUG9saWN5IHBkZkltYWdlQ2FjaGluZ1BvbGlj
eSkKK3sKKyAgICBpZiAoIW1fbmF0aXZlUERGRG9jdW1lbnQgfHwgbV9uYXRpdmVQREZEb2N1bWVu
dC0+cGRmSW1hZ2VDYWNoaW5nUG9saWN5KCkgPT0gcGRmSW1hZ2VDYWNoaW5nUG9saWN5KQorICAg
ICAgICByZXR1cm47CisKKyAgICBtX25hdGl2ZVBERkRvY3VtZW50LT5zZXRQREZJbWFnZUNhY2hp
bmdQb2xpY3kocGRmSW1hZ2VDYWNoaW5nUG9saWN5KTsKKyAgICBkZXN0cm95RGVjb2RlZERhdGEo
KTsKK30KKworRW5jb2RlZERhdGFTdGF0dXMgUERGRG9jdW1lbnRJbWFnZTo6ZGF0YUNoYW5nZWQo
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpCit7CisgICAgQVNTRVJUKCFtX25hdGl2ZVBERkRvY3VtZW50
KTsKKworICAgIGlmIChhbGxEYXRhUmVjZWl2ZWQgJiYgIW1fbmF0aXZlUERGRG9jdW1lbnQpCisg
ICAgICAgIG1fbmF0aXZlUERGRG9jdW1lbnQgPSBOYXRpdmVQREZEb2N1bWVudDo6Y3JlYXRlKCpk
YXRhKCkpOworCisgICAgcmV0dXJuIG1fbmF0aXZlUERGRG9jdW1lbnQgPyBFbmNvZGVkRGF0YVN0
YXR1czo6Q29tcGxldGUgOiBFbmNvZGVkRGF0YVN0YXR1czo6VW5rbm93bjsKK30KKwordm9pZCBQ
REZEb2N1bWVudEltYWdlOjpkZXN0cm95RGVjb2RlZERhdGEoYm9vbCkKK3sKKyAgICBpZiAobV9u
YXRpdmVQREZEb2N1bWVudCkKKyAgICAgICAgbV9uYXRpdmVQREZEb2N1bWVudC0+Y2xlYXJTbmFw
c2hvdCgpOworICAgIGRlY29kZWRTaXplQ2hhbmdlZCgpOworfQorCit2b2lkIFBERkRvY3VtZW50
SW1hZ2U6OmRlY29kZWRTaXplQ2hhbmdlZCgpCit7CisgICAgc2l6ZV90IG5ld01lbW9yeUNvc3Qg
PSBtX25hdGl2ZVBERkRvY3VtZW50ID8gbV9uYXRpdmVQREZEb2N1bWVudC0+c25hcHNob3RNZW1v
cnlDb3N0KCkgOiAwOworICAgIGlmIChtX21lbW9yeUNvc3QgPT0gbmV3TWVtb3J5Q29zdCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkKKyAgICAgICAgaW1hZ2VP
YnNlcnZlcigpLT5kZWNvZGVkU2l6ZUNoYW5nZWQoKnRoaXMsIC1zdGF0aWNfY2FzdDxsb25nIGxv
bmc+KG1fbWVtb3J5Q29zdCkgKyBuZXdNZW1vcnlDb3N0KTsKKworICAgIG1fbWVtb3J5Q29zdCA9
IG5ld01lbW9yeUNvc3Q7Cit9CisKK3ZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y29tcHV0ZUludHJp
bnNpY0RpbWVuc2lvbnMoTGVuZ3RoJiBpbnRyaW5zaWNXaWR0aCwgTGVuZ3RoJiBpbnRyaW5zaWNI
ZWlnaHQsIEZsb2F0U2l6ZSYgaW50cmluc2ljUmF0aW8pCit7CisgICAgLy8gRklYTUU6IElmIHdl
IHdhbnQgc2l6ZSBuZWdvdGlhdGlvbiB3aXRoIFBERiBkb2N1bWVudHMgYXMtaW1hZ2UsIHRoaXMg
aXMgdGhlIHBsYWNlIHRvIGltcGxlbWVudCBpdCAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEyMDk1KS4KKyAgICBJbWFnZTo6Y29tcHV0ZUludHJpbnNpY0RpbWVuc2lv
bnMoaW50cmluc2ljV2lkdGgsIGludHJpbnNpY0hlaWdodCwgaW50cmluc2ljUmF0aW8pOworICAg
IGludHJpbnNpY1JhdGlvID0gRmxvYXRTaXplKCk7Cit9CisKK0ltYWdlRHJhd1Jlc3VsdCBQREZE
b2N1bWVudEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRS
ZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiBvcHRpb25zKQoreworICAgIGlmICghbV9uYXRpdmVQREZEb2N1bWVudCB8fCAh
bV9uYXRpdmVQREZEb2N1bWVudC0+cGFnZUNvdW50KCkpCisgICAgICAgIHJldHVybiBJbWFnZURy
YXdSZXN1bHQ6OkRpZE5vdGhpbmc7CisKKyAgICBjb250ZXh0LmRyYXdOYXRpdmVQREZEb2N1bWVu
dCgqbV9uYXRpdmVQREZEb2N1bWVudCwgc2l6ZSgpLCBkc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25z
KTsKKyAgICBkZWNvZGVkU2l6ZUNoYW5nZWQoKTsKKworICAgIGlmIChpbWFnZU9ic2VydmVyKCkp
CisgICAgICAgIGltYWdlT2JzZXJ2ZXIoKS0+ZGlkRHJhdygqdGhpcyk7CisKKyAgICByZXR1cm4g
SW1hZ2VEcmF3UmVzdWx0OjpEaWREcmF3OworfQorCit2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmR1
bXAoVGV4dFN0cmVhbSYgdHMpIGNvbnN0Cit7CisgICAgSW1hZ2U6OmR1bXAodHMpOworICAgIGlm
IChtX25hdGl2ZVBERkRvY3VtZW50KQorICAgICAgICBtX25hdGl2ZVBERkRvY3VtZW50LT5kdW1w
KHRzKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFBE
RkRPQ1VNRU5USU1BR0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9QREZEb2N1bWVudEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9QREZEb2N1bWVudEltYWdlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjIzNmU1YjU0ODk0Nzk3NTRmYThlZDNl
YTkyNjAwOWIzODgwNTYxMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BERkRvY3VtZW50SW1hZ2UuaApAQCAtMCwwICsxLDgwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA0LTIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKFBERkRPQ1VNRU5USU1BR0UpCisKKyNpbmNsdWRlICJGbG9hdFJlY3Qu
aCIKKyNpbmNsdWRlICJHcmFwaGljc1R5cGVzLmgiCisjaW5jbHVkZSAiSW1hZ2UuaCIKKyNpbmNs
dWRlICJQREZJbWFnZUNhY2hpbmdQb2xpY3kuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBHcmFwaGljc0NvbnRleHQ7CitjbGFzcyBOYXRpdmVQREZEb2N1bWVudDsKKworY2xhc3Mg
UERGRG9jdW1lbnRJbWFnZSBmaW5hbCA6IHB1YmxpYyBJbWFnZSB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFJlZjxQREZEb2N1bWVudEltYWdlPiBjcmVhdGUoSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIp
CisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQREZEb2N1bWVudEltYWdlKG9i
c2VydmVyKSk7CisgICAgfQorCisgICAgV0VCQ09SRV9FWFBPUlQgdW5zaWduZWQgY2FjaGluZ0Nv
dW50Rm9yVGVzdGluZygpIGNvbnN0OworICAgIHZvaWQgc2V0UGRmSW1hZ2VDYWNoaW5nUG9saWN5
KFBERkltYWdlQ2FjaGluZ1BvbGljeSk7CisgICAgCitwcml2YXRlOgorICAgIFBERkRvY3VtZW50
SW1hZ2UoSW1hZ2VPYnNlcnZlciopOworICAgIHZpcnR1YWwgflBERkRvY3VtZW50SW1hZ2UoKTsK
KworICAgIGJvb2wgaXNQREZEb2N1bWVudEltYWdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQorICAgIGJvb2wgaGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4oKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CisKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgdG8gYmUg
bGVzcyBjb25zZXJ2YXRpdmUuCisgICAgYm9vbCBjdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorCisgICAgU3RyaW5nIGZpbGVuYW1l
RXh0ZW5zaW9uKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgRmxvYXRTaXplIHNpemUoSW1hZ2VPcmll
bnRhdGlvbiA9IEltYWdlT3JpZW50YXRpb246OkZyb21JbWFnZSkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBkZWNvZGVkU2l6ZUNoYW5nZWQoKTsKKworICAgIEVuY29kZWREYXRhU3RhdHVzIGRh
dGFDaGFuZ2VkKGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBvdmVycmlkZTsKKyAgICB2b2lkIGRlc3Ry
b3lEZWNvZGVkRGF0YShib29sIC8qZGVzdHJveUFsbCovID0gdHJ1ZSkgb3ZlcnJpZGU7CisKKyAg
ICB2b2lkIGNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKExlbmd0aCYgaW50cmluc2ljV2lkdGgs
IExlbmd0aCYgaW50cmluc2ljSGVpZ2h0LCBGbG9hdFNpemUmIGludHJpbnNpY1JhdGlvKSBvdmVy
cmlkZTsKKyAgICBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBG
bG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmID0geyB9KSBvdmVycmlkZTsKKworICAgIHZvaWQgZHVtcChXVEY6OlRl
eHRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKKyAgICAKKyAgICBSZWZQdHI8TmF0aXZlUERGRG9j
dW1lbnQ+IG1fbmF0aXZlUERGRG9jdW1lbnQ7CisgICAgc2l6ZV90IG1fbWVtb3J5Q29zdCB7IDAg
fTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19JTUFHRShQREZEb2N1bWVudEltYWdlKQorCisjZW5kaWYgLy8gRU5BQkxFKFBERkRPQ1VNRU5U
SU1BR0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0
Zm9ybVBERkRvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0
Zm9ybVBERkRvY3VtZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGE4N2ExNzZlN2Y5MTNlMDMwZDRiODIwY2I4
MjMxMzk4NjA2NDI0MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1BsYXRmb3JtUERGRG9jdW1lbnQuaApAQCAtMCwwICsxLDUzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aWYgVVNFKENHKQorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpZiBFTkFCTEUoUERGS0lU
X0ZPUl9QREZET0NVTUVOVElNQUdFKQorT0JKQ19DTEFTUyBQREZEb2N1bWVudDsKKyNlbHNlCit1
c2luZyBDR1BERkRvY3VtZW50UmVmID0gc3RydWN0IENHUERGRG9jdW1lbnQgKjsKKyNlbmRpZgor
I2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2lmIFVTRShDRykKKyNpZiBFTkFCTEUo
UERGS0lUX0ZPUl9QREZET0NVTUVOVElNQUdFKQordXNpbmcgUGxhdGZvcm1QREZEb2N1bWVudFB0
ciA9IFJldGFpblB0cjxQREZEb2N1bWVudD47CisjZWxzZQordXNpbmcgUGxhdGZvcm1QREZEb2N1
bWVudFB0ciA9IFJldGFpblB0cjxDR1BERkRvY3VtZW50UmVmPjsKKyNlbmRpZgorI2Vsc2UKK3Vz
aW5nIFBsYXRmb3JtUERGRG9jdW1lbnRQdHIgPSB2b2lkKjsKKyNlbmRpZgorCisjaWYgRU5BQkxF
KFBERktJVF9GT1JfUERGRE9DVU1FTlRJTUFHRSkKK1dFQkNPUkVfRVhQT1JUIFJldGFpblB0cjxD
Rk11dGFibGVEYXRhUmVmPiBjb252ZXJ0UG9zdFNjcmlwdERhdGFUb1BERihSZXRhaW5QdHI8Q0ZE
YXRhUmVmPiYmIHBvc3RTY3JpcHREYXRhKTsKKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9H
cmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcAppbmRleCAxNDZhNWVjYWQ1
MDUxNDVjOWY4OTUwNmVjOGRiMDU3NzIzNmViM2Y3Li5jNzMzMDNkOTNmYzQzODgyMjBlYTY1ZmE3
YTdhMmMxOTNhNDQ0MGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAK
QEAgLTI3Niw2ICsyNzYsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdO
YXRpdmVJbWFnZShOYXRpdmVJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0U2kKICAgICBDYWlybzo6
ZHJhd1BsYXRmb3JtSW1hZ2UobV9wbGF0Zm9ybUNvbnRleHQsIGltYWdlLnBsYXRmb3JtSW1hZ2Uo
KS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIHsgb3B0aW9ucywgc3RhdGUuaW1hZ2VJbnRlcnBv
bGF0aW9uUXVhbGl0eSB9LCBzdGF0ZS5hbHBoYSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSk7
CiB9CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvOjpkcmF3TmF0aXZlUERGRG9jdW1l
bnQoTmF0aXZlUERGRG9jdW1lbnQmLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpCit7CisgICAg
Ly8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KK30KKwogdm9pZCBHcmFwaGljc0NvbnRleHRJbXBs
Q2Fpcm86OmRyYXdQYXR0ZXJuKE5hdGl2ZUltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBp
bWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGls
ZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxv
YXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHNwYWNpbmcpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3ND
b250ZXh0SW1wbENhaXJvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaAppbmRleCAxYmU1YTAyZDRkNjNjMTkwMzM4NTEz
YTk1ZWU0NTNkNzNhMDE0Njk2Li5mNWM0NGZiZTFjNDQ2MDg5YWJkYzA2M2UzZjkxODRjZWJlYWMw
NGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9H
cmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uaApAQCAtNzMsNiArNzMsNyBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0
IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmLCBjb25z
dCBGbG9hdFNpemUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd05hdGl2ZVBERkRv
Y3VtZW50KE5hdGl2ZVBERkRvY3VtZW50JiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVy
cmlkZTsKICAgICB2b2lkIGRyYXdQYXR0ZXJuKE5hdGl2ZUltYWdlJiwgY29uc3QgRmxvYXRTaXpl
JiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2Us
IGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBv
dmVycmlkZTsKIAogICAgIHZvaWQgZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQpIG92
ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
TmF0aXZlUERGRG9jdW1lbnRDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9OYXRpdmVQREZEb2N1bWVudENHLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hOTQ1ZWE1OTU3MGMwZThl
NTg0ZGM3YTliOWFkOTk2MWNkOTc3Y2Q1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlUERGRG9jdW1lbnRDRy5jcHAKQEAgLTAsMCAr
MSwxMDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk5hdGl2ZVBERkRvY3VtZW50LmgiCisKKyNp
ZiAhRU5BQkxFKFBERktJVF9GT1JfUERGRE9DVU1FTlRJTUFHRSkKKworI2luY2x1ZGUgPENvcmVH
cmFwaGljcy9DR1BERkRvY3VtZW50Lmg+CisjaWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSA8
cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KKyNlbHNlCisjaW5jbHVkZSA8Q29yZUdyYXBo
aWNzL0NHQ29udGV4dC5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmUHRy
PE5hdGl2ZVBERkRvY3VtZW50PiBOYXRpdmVQREZEb2N1bWVudDo6Y3JlYXRlKFNoYXJlZEJ1ZmZl
ciYgZGF0YSwgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcikKK3sKKyAgICBhdXRvIGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlk
ZXJDcmVhdGVXaXRoQ0ZEYXRhKGRhdGEuY3JlYXRlQ0ZEYXRhKCkuZ2V0KCkpKTsKKyAgICBpZiAo
IWRhdGFQcm92aWRlcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgCisgICAgYXV0byBk
b2N1bWVudCA9IGFkb3B0Q0YoQ0dQREZEb2N1bWVudENyZWF0ZVdpdGhQcm92aWRlcihkYXRhUHJv
dmlkZXIuZ2V0KCkpKTsKKyAgICBpZiAoIWRvY3VtZW50KQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgIHJldHVybiBhZG9wdFJlZihuZXcgTmF0aXZlUERGRG9jdW1lbnQoZGF0YSwgcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBXVEZNb3ZlKGRvY3VtZW50KSkpOworfQorCit2b2lk
IE5hdGl2ZVBERkRvY3VtZW50Ojpjb21wdXRlQm91bmRzRm9yQ3VycmVudFBhZ2UoKQoreworICAg
IEFTU0VSVChwYWdlQ291bnQoKSA+IDApOworICAgIENHUERGUGFnZVJlZiBjZ1BhZ2UgPSBDR1BE
RkRvY3VtZW50R2V0UGFnZShtX3BsYXRmb3JtUERGRG9jdW1lbnQuZ2V0KCksIDEpOworICAgIENH
UmVjdCBtZWRpYUJveCA9IENHUERGUGFnZUdldEJveFJlY3QoY2dQYWdlLCBrQ0dQREZNZWRpYUJv
eCk7CisKKyAgICAvLyBHZXQgY3JvcCBib3ggKG5vdCBhbHdheXMgdGhlcmUpLiBJZiBub3QsIHVz
ZSBtZWRpYSBib3guCisgICAgQ0dSZWN0IHIgPSBDR1BERlBhZ2VHZXRCb3hSZWN0KGNnUGFnZSwg
a0NHUERGQ3JvcEJveCk7CisgICAgaWYgKCFDR1JlY3RJc0VtcHR5KHIpKQorICAgICAgICBtX2Ny
b3BCb3ggPSByOworICAgIGVsc2UKKyAgICAgICAgbV9jcm9wQm94ID0gbWVkaWFCb3g7CisKKyAg
ICBtX3JvdGF0aW9uRGVncmVlcyA9IENHUERGUGFnZUdldFJvdGF0aW9uQW5nbGUoY2dQYWdlKTsK
K30KKwordW5zaWduZWQgTmF0aXZlUERGRG9jdW1lbnQ6OnBhZ2VDb3VudCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIENHUERGRG9jdW1lbnRHZXROdW1iZXJPZlBhZ2VzKG1fcGxhdGZvcm1QREZEb2N1
bWVudC5nZXQoKSk7Cit9CisKK3N0YXRpYyB2b2lkIGFwcGx5Um90YXRpb25Gb3JQYWludGluZyhH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIEZsb2F0U2l6ZSBzaXplLCBpbnQgcm90YXRpb25EZWdy
ZWVzKQoreworICAgIGlmIChyb3RhdGlvbkRlZ3JlZXMgPT0gOTApCisgICAgICAgIGNvbnRleHQu
dHJhbnNsYXRlKDAsIHNpemUuaGVpZ2h0KCkpOworICAgIGVsc2UgaWYgKHJvdGF0aW9uRGVncmVl
cyA9PSAxODApCisgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKHNpemUpOworICAgIGVsc2UgaWYg
KHJvdGF0aW9uRGVncmVlcyA9PSAyNzApCisgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKHNpemUu
d2lkdGgoKSwgMCk7CisKKyAgICBjb250ZXh0LnJvdGF0ZSgtZGVnMnJhZChzdGF0aWNfY2FzdDxm
bG9hdD4ocm90YXRpb25EZWdyZWVzKSkpOworfQorCit2b2lkIE5hdGl2ZVBERkRvY3VtZW50Ojpk
cmF3UERGUGFnZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZSYgaW1h
Z2VTaXplKQoreworICAgIGFwcGx5Um90YXRpb25Gb3JQYWludGluZyhjb250ZXh0LCBpbWFnZVNp
emUsIG1fcm90YXRpb25EZWdyZWVzKTsKKworICAgIGNvbnRleHQudHJhbnNsYXRlKC1tX2Nyb3BC
b3gubG9jYXRpb24oKSk7CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBDR0NvbnRleHREcmF3
UERGUGFnZVdpdGhBbm5vdGF0aW9ucyhjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBDR1BERkRv
Y3VtZW50R2V0UGFnZShtX3BsYXRmb3JtUERGRG9jdW1lbnQuZ2V0KCksIDEpLCBudWxscHRyKTsK
KyNlbHNlCisgICAgQ0dDb250ZXh0RHJhd1BERlBhZ2UoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQo
KSwgQ0dQREZEb2N1bWVudEdldFBhZ2UobV9wbGF0Zm9ybVBERkRvY3VtZW50LmdldCgpLCAxKSk7
CisjZW5kaWYKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gIUVOQUJM
RShQREZLSVRfRk9SX1BERkRPQ1VNRU5USU1BR0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBkYzQ5ODVmOWM1OWFhYWNkM2RmNWI1ZGM1NmI5ZDg5MDg0ODFi
ZjliLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsMzg5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIw
MDUsIDIwMDYsIDIwMTMgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJQREZEb2N1bWVudEltYWdlLmgiCi0KLSNpZiBVU0UoQ0cpCi0KLSNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQotI2luY2x1ZGUgPENvcmVHcmFwaGljcy9Db3JlR3JhcGhpY3MuaD4K
LSNpbmNsdWRlIDxJbWFnZUlPL0ltYWdlSU8uaD4KLSNlbmRpZgotCi0jaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0LmgiCi0jaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKLSNpbmNsdWRlICJJbWFnZU9i
c2VydmVyLmgiCi0jaW5jbHVkZSAiSW50UmVjdC5oIgotI2luY2x1ZGUgIkxlbmd0aC5oIgotI2lu
Y2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCi0jaW5j
bHVkZSA8Q29yZUdyYXBoaWNzL0NHQ29udGV4dC5oPgotI2luY2x1ZGUgPENvcmVHcmFwaGljcy9D
R1BERkRvY3VtZW50Lmg+Ci0jaW5jbHVkZSA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4K
LSNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgotI2luY2x1ZGUgPHd0Zi9SQU1TaXplLmg+Ci0j
aW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4K
LSNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+Ci0KLSNpZiAhUExBVEZPUk0oQ09DT0Ep
Ci0jaW5jbHVkZSAiSW1hZ2VTb3VyY2VDRy5oIgotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotUERGRG9jdW1lbnRJbWFnZTo6UERGRG9jdW1lbnRJbWFnZShJbWFnZU9ic2VydmVyKiBv
YnNlcnZlcikKLSAgICA6IEltYWdlKG9ic2VydmVyKQotewotfQotCi1QREZEb2N1bWVudEltYWdl
Ojp+UERGRG9jdW1lbnRJbWFnZSgpID0gZGVmYXVsdDsKLQotU3RyaW5nIFBERkRvY3VtZW50SW1h
Z2U6OmZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QKLXsKLSAgICByZXR1cm4gInBkZiI7Ci19Ci0K
LUZsb2F0U2l6ZSBQREZEb2N1bWVudEltYWdlOjpzaXplKEltYWdlT3JpZW50YXRpb24pIGNvbnN0
Ci17Ci0gICAgRmxvYXRTaXplIGV4cGFuZGVkQ3JvcEJveFNpemUgPSBGbG9hdFNpemUoZXhwYW5k
ZWRJbnRTaXplKG1fY3JvcEJveC5zaXplKCkpKTsKLQotICAgIGlmIChtX3JvdGF0aW9uRGVncmVl
cyA9PSA5MCB8fCBtX3JvdGF0aW9uRGVncmVlcyA9PSAyNzApCi0gICAgICAgIHJldHVybiBleHBh
bmRlZENyb3BCb3hTaXplLnRyYW5zcG9zZWRTaXplKCk7Ci0gICAgcmV0dXJuIGV4cGFuZGVkQ3Jv
cEJveFNpemU7Ci19Ci0KLXZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y29tcHV0ZUludHJpbnNpY0Rp
bWVuc2lvbnMoTGVuZ3RoJiBpbnRyaW5zaWNXaWR0aCwgTGVuZ3RoJiBpbnRyaW5zaWNIZWlnaHQs
IEZsb2F0U2l6ZSYgaW50cmluc2ljUmF0aW8pCi17Ci0gICAgLy8gRklYTUU6IElmIHdlIHdhbnQg
c2l6ZSBuZWdvdGlhdGlvbiB3aXRoIFBERiBkb2N1bWVudHMgYXMtaW1hZ2UsIHRoaXMgaXMgdGhl
IHBsYWNlIHRvIGltcGxlbWVudCBpdCAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEyMDk1KS4KLSAgICBJbWFnZTo6Y29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMoaW50
cmluc2ljV2lkdGgsIGludHJpbnNpY0hlaWdodCwgaW50cmluc2ljUmF0aW8pOwotICAgIGludHJp
bnNpY1JhdGlvID0gRmxvYXRTaXplKCk7Ci19Ci0KLUVuY29kZWREYXRhU3RhdHVzIFBERkRvY3Vt
ZW50SW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxsRGF0YVJlY2VpdmVkKQotewotICAgIEFTU0VS
VCghbV9kb2N1bWVudCk7Ci0gICAgaWYgKGFsbERhdGFSZWNlaXZlZCAmJiAhbV9kb2N1bWVudCkg
ewotICAgICAgICBjcmVhdGVQREZEb2N1bWVudCgpOwotCi0gICAgICAgIGlmIChwYWdlQ291bnQo
KSkgewotICAgICAgICAgICAgbV9oYXNQYWdlID0gdHJ1ZTsKLSAgICAgICAgICAgIGNvbXB1dGVC
b3VuZHNGb3JDdXJyZW50UGFnZSgpOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBtX2Rv
Y3VtZW50ID8gRW5jb2RlZERhdGFTdGF0dXM6OkNvbXBsZXRlIDogRW5jb2RlZERhdGFTdGF0dXM6
OlVua25vd247Ci19Ci0KLXZvaWQgUERGRG9jdW1lbnRJbWFnZTo6c2V0UGRmSW1hZ2VDYWNoaW5n
UG9saWN5KFBERkltYWdlQ2FjaGluZ1BvbGljeSBwZGZJbWFnZUNhY2hpbmdQb2xpY3kpCi17Ci0g
ICAgaWYgKG1fcGRmSW1hZ2VDYWNoaW5nUG9saWN5ID09IHBkZkltYWdlQ2FjaGluZ1BvbGljeSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9wZGZJbWFnZUNhY2hpbmdQb2xpY3kgPSBwZGZJbWFn
ZUNhY2hpbmdQb2xpY3k7Ci0gICAgZGVzdHJveURlY29kZWREYXRhKCk7Ci19Ci0KLWJvb2wgUERG
RG9jdW1lbnRJbWFnZTo6Y2FjaGVQYXJhbWV0ZXJzTWF0Y2goR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCkg
Y29uc3QKLXsKLSAgICAvLyBPbGQgYW5kIG5ldyBzb3VyY2UgcmVjdGFuZ2xlcyBoYXZlIHRvIG1h
dGNoLgotICAgIGlmIChzcmNSZWN0ICE9IG1fY2FjaGVkU291cmNlUmVjdCkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgLy8gT2xkIGFuZCBuZXcgc2NhbGluZyBmYWN0b3JzICJkZXN0IC8g
c3JjIiBoYXZlIHRvIG1hdGNoLgotICAgIGlmIChkc3RSZWN0LnNpemUoKSAhPSBtX2NhY2hlZERl
c3RpbmF0aW9uUmVjdC5zaXplKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIG1f
Y2FjaGVkSW1hZ2VSZWN0IGNhbiBiZSBtb3ZlZCBpZiBzcmNSZWN0IGFuZCBkc3RSZWN0LnNpemUo
KSBkaWQgbm90IGNoYW5nZS4KLSAgICBGbG9hdFJlY3QgbW92ZWRDYWNoZWRJbWFnZVJlY3QgPSBt
X2NhY2hlZEltYWdlUmVjdDsKLSAgICBtb3ZlZENhY2hlZEltYWdlUmVjdC5tb3ZlKEZsb2F0U2l6
ZShkc3RSZWN0LmxvY2F0aW9uKCkgLSBtX2NhY2hlZERlc3RpbmF0aW9uUmVjdC5sb2NhdGlvbigp
KSk7Ci0KLSAgICAvLyBtb3ZlZENhY2hlZEltYWdlUmVjdCBoYXMgdG8gY29udGFpbiB0aGUgd2hv
bGUgZGlydHkgcmVjdGFuZ2xlLgotICAgIEZsb2F0UmVjdCBkaXJ0eVJlY3QgPSBpbnRlcnNlY3Rp
b24oY29udGV4dC5jbGlwQm91bmRzKCksIGRzdFJlY3QpOwotICAgIGlmICghbW92ZWRDYWNoZWRJ
bWFnZVJlY3QuY29udGFpbnMoZGlydHlSZWN0KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgLy8gT2xkIGFuZCBuZXcgY29udGV4dCBzY2FsaW5nIGZhY3RvcnMgaGF2ZSB0byBtYXRjaCBh
cyB3ZWxsLgotICAgIEFmZmluZVRyYW5zZm9ybTo6RGVjb21wb3NlZFR5cGUgZGVjb21wb3NlZFRy
YW5zZm9ybTsKLSAgICBjb250ZXh0LmdldENUTShHcmFwaGljc0NvbnRleHQ6OkRlZmluaXRlbHlJ
bmNsdWRlRGV2aWNlU2NhbGUpLmRlY29tcG9zZShkZWNvbXBvc2VkVHJhbnNmb3JtKTsKLQotICAg
IEFmZmluZVRyYW5zZm9ybTo6RGVjb21wb3NlZFR5cGUgY2FjaGVkRGVjb21wb3NlZFRyYW5zZm9y
bTsKLSAgICBtX2NhY2hlZFRyYW5zZm9ybS5kZWNvbXBvc2UoY2FjaGVkRGVjb21wb3NlZFRyYW5z
Zm9ybSk7Ci0gICAgaWYgKGRlY29tcG9zZWRUcmFuc2Zvcm0uc2NhbGVYICE9IGNhY2hlZERlY29t
cG9zZWRUcmFuc2Zvcm0uc2NhbGVYIHx8IGRlY29tcG9zZWRUcmFuc2Zvcm0uc2NhbGVZICE9IGNh
Y2hlZERlY29tcG9zZWRUcmFuc2Zvcm0uc2NhbGVZKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotc3RhdGljIHZvaWQgdHJhbnNmb3JtQ29udGV4dEZvclBh
aW50aW5nKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QpCi17Ci0gICAgZmxvYXQgaFNjYWxlID0gZHN0UmVj
dC53aWR0aCgpIC8gc3JjUmVjdC53aWR0aCgpOwotICAgIGZsb2F0IHZTY2FsZSA9IGRzdFJlY3Qu
aGVpZ2h0KCkgLyBzcmNSZWN0LmhlaWdodCgpOwotCi0gICAgaWYgKGhTY2FsZSAhPSB2U2NhbGUp
IHsKLSAgICAgICAgZmxvYXQgbWluaW11bVNjYWxlID0gc3RkOjptYXgoKGRzdFJlY3Qud2lkdGgo
KSAtIDAuNSkgLyBzcmNSZWN0LndpZHRoKCksIChkc3RSZWN0LmhlaWdodCgpIC0gMC41KSAvIHNy
Y1JlY3QuaGVpZ2h0KCkpOwotICAgICAgICBmbG9hdCBtYXhpbXVtU2NhbGUgPSBzdGQ6Om1pbigo
ZHN0UmVjdC53aWR0aCgpICsgMC41KSAvIHNyY1JlY3Qud2lkdGgoKSwgKGRzdFJlY3QuaGVpZ2h0
KCkgKyAwLjUpIC8gc3JjUmVjdC5oZWlnaHQoKSk7Ci0KLSAgICAgICAgLy8gSWYgdGhlIGRpZmZl
cmVuY2UgYmV0d2VlbiB0aGUgdHdvIHNjYWxlcyBpcyBkdWUgdG8gaW50ZWdlciByb3VuZGluZyBv
ZiBpbWFnZSBzaXplcywKLSAgICAgICAgLy8gdXNlIHRoZSBzbWFsbGVyIG9mIHRoZSB0d28gb3Jp
Z2luYWwgc2NhbGVzIHRvIGVuc3VyZSB0aGF0IHRoZSBpbWFnZSBmaXRzIGluc2lkZSB0aGUKLSAg
ICAgICAgLy8gc3BhY2Ugb3JpZ2luYWxseSBhbGxvY2F0ZWQgZm9yIGl0LgotICAgICAgICBpZiAo
bWluaW11bVNjYWxlIDw9IG1heGltdW1TY2FsZSkgewotICAgICAgICAgICAgaFNjYWxlID0gc3Rk
OjptaW4oaFNjYWxlLCB2U2NhbGUpOwotICAgICAgICAgICAgdlNjYWxlID0gaFNjYWxlOwotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgLy8gZHJhd1BERlBhZ2UoKSByZWxpZXMgb24gZHJhd2luZyB0
aGUgd2hvbGUgUERGIGludG8gYSBjb250ZXh0IHN0YXJ0aW5nIGF0ICgwLCAwKS4gV2UgbmVlZAot
ICAgIC8vIHRvIHRyYW5zZm9ybSB0aGUgZGVzdGluYXRpb24gY29udGV4dCBzdWNoIHRoYXQgc3Jj
UmVjdCBvZiB0aGUgc291cmNlIGNvbnRleHQgd2lsbCBiZSBkcmF3bgotICAgIC8vIGluIGRzdFJl
Y3Qgb2YgZGVzdGluYXRpb24gY29udGV4dC4KLSAgICBjb250ZXh0LnRyYW5zbGF0ZShkc3RSZWN0
LmxvY2F0aW9uKCkgLSBzcmNSZWN0LmxvY2F0aW9uKCkpOwotICAgIGNvbnRleHQuc2NhbGUoRmxv
YXRTaXplKGhTY2FsZSwgLXZTY2FsZSkpOwotICAgIGNvbnRleHQudHJhbnNsYXRlKDAsIC1zcmNS
ZWN0LmhlaWdodCgpKTsKLX0KLQotLy8gVG8gYXZvaWQgdGhlIGpldHNhbSBvbiBpT1MsIHdlIGFy
ZSBnb2luZyB0byBsaW1pdCB0aGUgc2l6ZSBvZiBhbGwgdGhlIFBERiBjYWNoZWRJbWFnZXMgdG8g
YmUgNjRNQi4KLXN0YXRpYyBjb25zdCBzaXplX3Qgc19tYXhDYWNoZWRJbWFnZVNpZGUgPSA0ICog
MTAyNDsKLXN0YXRpYyBjb25zdCBzaXplX3Qgc19tYXhDYWNoZWRJbWFnZUFyZWEgPSBzX21heENh
Y2hlZEltYWdlU2lkZSAqIHNfbWF4Q2FjaGVkSW1hZ2VTaWRlOwotCi1zdGF0aWMgY29uc3Qgc2l6
ZV90IHNfbWF4RGVjb2RlZERhdGFTaXplID0gc19tYXhDYWNoZWRJbWFnZUFyZWEgKiA0Owotc3Rh
dGljIHNpemVfdCBzX2FsbERlY29kZWREYXRhU2l6ZSA9IDA7Ci0KLXN0YXRpYyBGbG9hdFJlY3Qg
Y2FjaGVkSW1hZ2VSZWN0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiBkc3RSZWN0KQotewotICAgIEZsb2F0UmVjdCBkaXJ0eVJlY3QgPSBjb250ZXh0LmNsaXBCb3Vu
ZHMoKTsKLQotICAgIC8vIENhbGN1bGF0ZSB0aGUgbWF4aW11bSByZWN0YW5nbGUgd2UgY2FuIGNh
Y2hlIGFyb3VuZCB0aGUgY2VudGVyIG9mIHRoZSBjbGlwcGluZyBib3VuZHMuCi0gICAgRmxvYXRT
aXplIG1heFNpemUgPSBzX21heENhY2hlZEltYWdlU2lkZSAvIGNvbnRleHQuc2NhbGVGYWN0b3Io
KTsKLSAgICBGbG9hdFBvaW50IG1pbkxvY2F0aW9uID0gRmxvYXRQb2ludChkaXJ0eVJlY3QuY2Vu
dGVyKCkgLSBtYXhTaXplIC8gMik7Ci0KLSAgICAvLyBFbnN1cmUgdGhlIGNsaXBwaW5nIGJvdW5k
cyBhcmUgYWxsIGluY2x1ZGVkIGJ1dCB3aXRoaW4gdGhlIGJvdW5kcyBvZiB0aGUgZHN0UmVjdAot
ICAgIHJldHVybiBpbnRlcnNlY3Rpb24odW5pb25SZWN0KGRpcnR5UmVjdCwgRmxvYXRSZWN0KG1p
bkxvY2F0aW9uLCBtYXhTaXplKSksIGRzdFJlY3QpOwotfQotCi12b2lkIFBERkRvY3VtZW50SW1h
Z2U6OmRlY29kZWRTaXplQ2hhbmdlZChzaXplX3QgbmV3Q2FjaGVkQnl0ZXMpCi17Ci0gICAgaWYg
KCFtX2NhY2hlZEJ5dGVzICYmICFuZXdDYWNoZWRCeXRlcykKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkKLSAgICAgICAgaW1hZ2VPYnNlcnZlcigpLT5kZWNvZGVk
U2l6ZUNoYW5nZWQoKnRoaXMsIC1zdGF0aWNfY2FzdDxsb25nIGxvbmc+KG1fY2FjaGVkQnl0ZXMp
ICsgbmV3Q2FjaGVkQnl0ZXMpOwotCi0gICAgQVNTRVJUKHNfYWxsRGVjb2RlZERhdGFTaXplID49
IG1fY2FjaGVkQnl0ZXMpOwotICAgIC8vIFVwZGF0ZSB3aXRoIHRoZSBkaWZmZXJlbmNlIGluIHR3
byBzdGVwcyB0byBhdm9pZCB1bnNpZ25lZCB1bmRlcmZsb3cgc3VidHJhY3Rpb24uCi0gICAgc19h
bGxEZWNvZGVkRGF0YVNpemUgLT0gbV9jYWNoZWRCeXRlczsKLSAgICBzX2FsbERlY29kZWREYXRh
U2l6ZSArPSBuZXdDYWNoZWRCeXRlczsKLQotICAgIG1fY2FjaGVkQnl0ZXMgPSBuZXdDYWNoZWRC
eXRlczsKLX0KLQotdm9pZCBQREZEb2N1bWVudEltYWdlOjp1cGRhdGVDYWNoZWRJbWFnZUlmTmVl
ZGVkKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QpCi17Ci0gICAgLy8gQ2xpcHBlZCBvcHRpb24gaXMgZm9y
IHRlc3Rpbmcgb25seS4gRm9yY2UgcmUtY2FjaGluZyB0aGUgUERGIHdpdGggZWFjaCBkcmF3Lgot
ICAgIGJvb2wgZm9yY2VVcGRhdGVDYWNoZWRJbWFnZSA9IG1fcGRmSW1hZ2VDYWNoaW5nUG9saWN5
ID09IFBERkltYWdlQ2FjaGluZ1BvbGljeTo6Q2xpcEJvdW5kc09ubHkgfHwgIW1fY2FjaGVkSW1h
Z2VCdWZmZXI7Ci0gICAgaWYgKCFmb3JjZVVwZGF0ZUNhY2hlZEltYWdlICYmIGNhY2hlUGFyYW1l
dGVyc01hdGNoKGNvbnRleHQsIGRzdFJlY3QsIHNyY1JlY3QpKSB7Ci0gICAgICAgIC8vIEFkanVz
dCB0aGUgdmlldy1wb3J0IHJlY3RhbmdsZXMgaWYgbm8gcmUtY2FjaGluZyB3aWxsIGhhcHBlbi4K
LSAgICAgICAgbV9jYWNoZWRJbWFnZVJlY3QubW92ZShGbG9hdFNpemUoZHN0UmVjdC5sb2NhdGlv
bigpIC0gbV9jYWNoZWREZXN0aW5hdGlvblJlY3QubG9jYXRpb24oKSkpOwotICAgICAgICBtX2Nh
Y2hlZERlc3RpbmF0aW9uUmVjdCA9IGRzdFJlY3Q7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBzd2l0Y2ggKG1fcGRmSW1hZ2VDYWNoaW5nUG9saWN5KSB7Ci0gICAgY2FzZSBQREZJbWFn
ZUNhY2hpbmdQb2xpY3k6OkRpc2FibGVkOgotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBQREZJ
bWFnZUNhY2hpbmdQb2xpY3k6OkJlbG93TWVtb3J5TGltaXQ6Ci0gICAgICAgIC8vIEtlZXAgdGhl
IG1lbW9yeSB1c2VkIGJ5IHRoZSBjYWNoZWQgaW1hZ2UgYmVsb3cgc29tZSB0aHJlc2hvbGQsIG90
aGVyd2lzZSBXZWJLaXQgcHJvY2VzcwotICAgICAgICAvLyB3aWxsIGpldHNhbSBpZiBpdCBleGNl
ZWRzIGl0cyBtZW1vcnkgbGltaXQuIE9ubHkgYSByZWN0YW5nbGUgZnJvbSB0aGUgUERGIG1heSBi
ZSBjYWNoZWQuCi0gICAgICAgIG1fY2FjaGVkSW1hZ2VSZWN0ID0gY2FjaGVkSW1hZ2VSZWN0KGNv
bnRleHQsIGRzdFJlY3QpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBERkltYWdlQ2FjaGlu
Z1BvbGljeTo6Q2xpcEJvdW5kc09ubHk6Ci0gICAgICAgIG1fY2FjaGVkSW1hZ2VSZWN0ID0gaW50
ZXJzZWN0aW9uKGNvbnRleHQuY2xpcEJvdW5kcygpLCBkc3RSZWN0KTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBQREZJbWFnZUNhY2hpbmdQb2xpY3k6OkVuYWJsZWQ6Ci0gICAgICAgIG1fY2Fj
aGVkSW1hZ2VSZWN0ID0gZHN0UmVjdDsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgRmxv
YXRTaXplIGNhY2hlZEltYWdlU2l6ZSA9IEZsb2F0UmVjdChlbmNsb3NpbmdJbnRSZWN0KG1fY2Fj
aGVkSW1hZ2VSZWN0KSkuc2l6ZSgpOwotCi0gICAgLy8gQ2FjaGUgdGhlIFBERiBpbWFnZSBvbmx5
IGlmIHRoZSBzaXplIG9mIHRoZSBuZXcgaW1hZ2Ugd29uJ3QgZXhjZWVkIHRoZSBjYWNoZSB0aHJl
c2hvbGQuCi0gICAgaWYgKG1fcGRmSW1hZ2VDYWNoaW5nUG9saWN5ID09IFBERkltYWdlQ2FjaGlu
Z1BvbGljeTo6QmVsb3dNZW1vcnlMaW1pdCkgewotICAgICAgICBJbnRTaXplIHNjYWxlZFNpemUg
PSBJbWFnZUJ1ZmZlcjo6Y29tcGF0aWJsZUJ1ZmZlclNpemUoY2FjaGVkSW1hZ2VTaXplLCBjb250
ZXh0KTsKLSAgICAgICAgaWYgKHNfYWxsRGVjb2RlZERhdGFTaXplICsgc2NhbGVkU2l6ZS51bmNs
YW1wZWRBcmVhKCkgKiA0IC0gbV9jYWNoZWRCeXRlcyA+IHNfbWF4RGVjb2RlZERhdGFTaXplKSB7
Ci0gICAgICAgICAgICBkZXN0cm95RGVjb2RlZERhdGEoKTsKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQotICAgIH0KLQotICAgIG1fY2FjaGVkSW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjYWNoZWRJbWFnZVNpemUsIGNvbnRleHQpOwotICAg
IGlmICghbV9jYWNoZWRJbWFnZUJ1ZmZlcikgewotICAgICAgICBkZXN0cm95RGVjb2RlZERhdGEo
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGF1dG8mIGJ1ZmZlckNvbnRleHQgPSBt
X2NhY2hlZEltYWdlQnVmZmVyLT5jb250ZXh0KCk7Ci0gICAgLy8gV2UgbmVlZCB0byB0cmFuc2Zv
cm0gdGhlIGNvb3JkaW5hdGUgc3lzdGVtIHN1Y2ggdGhhdCB0b3AtbGVmdCBvZiBtX2NhY2hlZElt
YWdlUmVjdCB3aWxsIGJlIG1hcHBlZCB0byB0aGUKLSAgICAvLyB0b3AtbGVmdCBvZiBkc3RSZWN0
LiBBbHRob3VnaCBvbmx5IG1fY2FjaGVkSW1hZ2VSZWN0LnNpemUoKSBvZiB0aGUgaW1hZ2UgY29w
aWVkLCB0aGUgc2l6ZXMgb2Ygc3JjUmVjdAotICAgIC8vIGFuZCBkc3RSZWN0IHNob3VsZCBiZSBw
YXNzZWQgdG8gdGhpcyBmdW5jdGlvbiBiZWNhdXNlIHRoZXkgYXJlIHVzZWQgdG8gY2FsY3VsYXRl
IHRoZSBpbWFnZSBzY2FsaW5nLgotICAgIHRyYW5zZm9ybUNvbnRleHRGb3JQYWludGluZyhidWZm
ZXJDb250ZXh0LCBkc3RSZWN0LCBGbG9hdFJlY3QobV9jYWNoZWRJbWFnZVJlY3QubG9jYXRpb24o
KSwgc3JjUmVjdC5zaXplKCkpKTsKLSAgICBkcmF3UERGUGFnZShidWZmZXJDb250ZXh0KTsKLQot
ICAgIG1fY2FjaGVkVHJhbnNmb3JtID0gY29udGV4dC5nZXRDVE0oR3JhcGhpY3NDb250ZXh0OjpE
ZWZpbml0ZWx5SW5jbHVkZURldmljZVNjYWxlKTsKLSAgICBtX2NhY2hlZERlc3RpbmF0aW9uUmVj
dCA9IGRzdFJlY3Q7Ci0gICAgbV9jYWNoZWRTb3VyY2VSZWN0ID0gc3JjUmVjdDsKLSAgICArK21f
Y2FjaGluZ0NvdW50Rm9yVGVzdGluZzsKLQotICAgIEludFNpemUgYmFja2VuZFNpemUgPSBtX2Nh
Y2hlZEltYWdlQnVmZmVyLT5iYWNrZW5kU2l6ZSgpOwotICAgIGRlY29kZWRTaXplQ2hhbmdlZChi
YWNrZW5kU2l6ZS51bmNsYW1wZWRBcmVhKCkgKiA0KTsKLX0KLQotSW1hZ2VEcmF3UmVzdWx0IFBE
RkRvY3VtZW50SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9h
dFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmIG9wdGlvbnMpCi17Ci0gICAgaWYgKCFtX2RvY3VtZW50IHx8ICFtX2hhc1Bh
Z2UpCi0gICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7Ci0KLSAgICB1
cGRhdGVDYWNoZWRJbWFnZUlmTmVlZGVkKGNvbnRleHQsIGRzdFJlY3QsIHNyY1JlY3QpOwotCi0g
ICAgewotICAgICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4
dCk7Ci0gICAgICAgIGNvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKG9wdGlvbnMuY29tcG9z
aXRlT3BlcmF0b3IoKSk7Ci0KLSAgICAgICAgaWYgKG1fY2FjaGVkSW1hZ2VCdWZmZXIpIHsKLSAg
ICAgICAgICAgIC8vIERyYXcgdGhlIEltYWdlQnVmZmVyICdtX2NhY2hlZEltYWdlQnVmZmVyJyB0
byB0aGUgcmVjdGFuZ2xlICdtX2NhY2hlZEltYWdlUmVjdCcKLSAgICAgICAgICAgIC8vIG9uIHRo
ZSBkZXN0aW5hdGlvbiBjb250ZXh0LiBTaW5jZSB0aGUgcGl4ZWxzIG9mIHRoZSByZWN0YW5nbGUg
J21fY2FjaGVkSW1hZ2VSZWN0JwotICAgICAgICAgICAgLy8gb2YgdGhlIHNvdXJjZSBQREYgd2Fz
IGNvcGllZCB0byAnbV9jYWNoZWRJbWFnZUJ1ZmZlcicsIHRoZSBzaXplcyBvZiB0aGUgc291cmNl
Ci0gICAgICAgICAgICAvLyBhbmQgdGhlIGRlc3RpbmF0aW9uIHJlY3RhbmdsZXMgd2lsbCBiZSBl
cXVhbCBhbmQgbm8gc2NhbGluZyB3aWxsIGJlIG5lZWRlZCBoZXJlLgotICAgICAgICAgICAgY29u
dGV4dC5kcmF3SW1hZ2VCdWZmZXIoKm1fY2FjaGVkSW1hZ2VCdWZmZXIsIG1fY2FjaGVkSW1hZ2VS
ZWN0KTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHRyYW5zZm9ybUNv
bnRleHRGb3JQYWludGluZyhjb250ZXh0LCBkc3RSZWN0LCBzcmNSZWN0KTsKLSAgICAgICAgICAg
IGRyYXdQREZQYWdlKGNvbnRleHQpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKGltYWdl
T2JzZXJ2ZXIoKSkKLSAgICAgICAgaW1hZ2VPYnNlcnZlcigpLT5kaWREcmF3KCp0aGlzKTsKLQot
ICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZERyYXc7Ci19Ci0KLXZvaWQgUERGRG9jdW1l
bnRJbWFnZTo6ZGVzdHJveURlY29kZWREYXRhKGJvb2wpCi17Ci0gICAgbV9jYWNoZWRJbWFnZUJ1
ZmZlciA9IG51bGxwdHI7Ci0gICAgbV9jYWNoZWRJbWFnZVJlY3QgPSBGbG9hdFJlY3QoKTsKLSAg
ICBkZWNvZGVkU2l6ZUNoYW5nZWQoMCk7Ci19Ci0KLSNpZiAhVVNFKFBERktJVF9GT1JfUERGRE9D
VU1FTlRJTUFHRSkKLQotdm9pZCBQREZEb2N1bWVudEltYWdlOjpjcmVhdGVQREZEb2N1bWVudCgp
Ci17Ci0gICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIgPSBhZG9w
dENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YShkYXRhKCktPmNyZWF0ZUNGRGF0YSgp
LmdldCgpKSk7Ci0gICAgbV9kb2N1bWVudCA9IGFkb3B0Q0YoQ0dQREZEb2N1bWVudENyZWF0ZVdp
dGhQcm92aWRlcihkYXRhUHJvdmlkZXIuZ2V0KCkpKTsKLX0KLQotdm9pZCBQREZEb2N1bWVudElt
YWdlOjpjb21wdXRlQm91bmRzRm9yQ3VycmVudFBhZ2UoKQotewotICAgIEFTU0VSVChwYWdlQ291
bnQoKSA+IDApOwotICAgIENHUERGUGFnZVJlZiBjZ1BhZ2UgPSBDR1BERkRvY3VtZW50R2V0UGFn
ZShtX2RvY3VtZW50LmdldCgpLCAxKTsKLSAgICBDR1JlY3QgbWVkaWFCb3ggPSBDR1BERlBhZ2VH
ZXRCb3hSZWN0KGNnUGFnZSwga0NHUERGTWVkaWFCb3gpOwotCi0gICAgLy8gR2V0IGNyb3AgYm94
IChub3QgYWx3YXlzIHRoZXJlKS4gSWYgbm90LCB1c2UgbWVkaWEgYm94LgotICAgIENHUmVjdCBy
ID0gQ0dQREZQYWdlR2V0Qm94UmVjdChjZ1BhZ2UsIGtDR1BERkNyb3BCb3gpOwotICAgIGlmICgh
Q0dSZWN0SXNFbXB0eShyKSkKLSAgICAgICAgbV9jcm9wQm94ID0gcjsKLSAgICBlbHNlCi0gICAg
ICAgIG1fY3JvcEJveCA9IG1lZGlhQm94OwotCi0gICAgbV9yb3RhdGlvbkRlZ3JlZXMgPSBDR1BE
RlBhZ2VHZXRSb3RhdGlvbkFuZ2xlKGNnUGFnZSk7Ci19Ci0KLXVuc2lnbmVkIFBERkRvY3VtZW50
SW1hZ2U6OnBhZ2VDb3VudCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIENHUERGRG9jdW1lbnRHZXRO
dW1iZXJPZlBhZ2VzKG1fZG9jdW1lbnQuZ2V0KCkpOwotfQotCi1zdGF0aWMgdm9pZCBhcHBseVJv
dGF0aW9uRm9yUGFpbnRpbmcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBGbG9hdFNpemUgc2l6
ZSwgaW50IHJvdGF0aW9uRGVncmVlcykKLXsKLSAgICBpZiAocm90YXRpb25EZWdyZWVzID09IDkw
KQotICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZSgwLCBzaXplLmhlaWdodCgpKTsKLSAgICBlbHNl
IGlmIChyb3RhdGlvbkRlZ3JlZXMgPT0gMTgwKQotICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZShz
aXplKTsKLSAgICBlbHNlIGlmIChyb3RhdGlvbkRlZ3JlZXMgPT0gMjcwKQotICAgICAgICBjb250
ZXh0LnRyYW5zbGF0ZShzaXplLndpZHRoKCksIDApOwotCi0gICAgY29udGV4dC5yb3RhdGUoLWRl
ZzJyYWQoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHJvdGF0aW9uRGVncmVlcykpKTsKLX0KLQotdm9pZCBQ
REZEb2N1bWVudEltYWdlOjpkcmF3UERGUGFnZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCi17
Ci0gICAgYXBwbHlSb3RhdGlvbkZvclBhaW50aW5nKGNvbnRleHQsIHNpemUoKSwgbV9yb3RhdGlv
bkRlZ3JlZXMpOwotCi0gICAgY29udGV4dC50cmFuc2xhdGUoLW1fY3JvcEJveC5sb2NhdGlvbigp
KTsKLQotI2lmIFVTRShESVJFQ1QyRCkKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotI2Vsc2UKLSAg
ICAvLyBDR1BERiBwYWdlcyBhcmUgaW5kZXhlZCBmcm9tIDEuCi0jaWYgUExBVEZPUk0oQ09DT0Ep
Ci0gICAgQ0dDb250ZXh0RHJhd1BERlBhZ2VXaXRoQW5ub3RhdGlvbnMoY29udGV4dC5wbGF0Zm9y
bUNvbnRleHQoKSwgQ0dQREZEb2N1bWVudEdldFBhZ2UobV9kb2N1bWVudC5nZXQoKSwgMSksIG51
bGxwdHIpOwotI2Vsc2UKLSAgICBDR0NvbnRleHREcmF3UERGUGFnZShjb250ZXh0LnBsYXRmb3Jt
Q29udGV4dCgpLCBDR1BERkRvY3VtZW50R2V0UGFnZShtX2RvY3VtZW50LmdldCgpLCAxKSk7Ci0j
ZW5kaWYKLSNlbmRpZgotfQotCi0jZW5kaWYgLy8gIVVTRShQREZLSVRfRk9SX1BERkRPQ1VNRU5U
SU1BR0UpCi0KLSNpZiBQTEFURk9STShNQUMpCi0KLVJldGFpblB0cjxDRk11dGFibGVEYXRhUmVm
PiBQREZEb2N1bWVudEltYWdlOjpjb252ZXJ0UG9zdFNjcmlwdERhdGFUb1BERihSZXRhaW5QdHI8
Q0ZEYXRhUmVmPiYmIHBvc3RTY3JpcHREYXRhKQotewotICAgIC8vIENvbnZlcnQgUG9zdFNjcmlw
dCB0byBQREYgdXNpbmcgdGhlIFF1YXJ0eiAyRCBBUEkuCi0gICAgLy8gaHR0cDovL2RldmVsb3Bl
ci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi9HcmFwaGljc0ltYWdpbmcvQ29uY2VwdHVhbC9kcmF3
aW5nd2l0aHF1YXJ0ejJkL2RxX3BzX2NvbnZlcnQvY2hhcHRlcl8xNl9zZWN0aW9uXzEuaHRtbAot
Ci0gICAgQ0dQU0NvbnZlcnRlckNhbGxiYWNrcyBjYWxsYmFja3MgPSB7IH07Ci0gICAgYXV0byBj
b252ZXJ0ZXIgPSBhZG9wdENGKENHUFNDb252ZXJ0ZXJDcmVhdGUoMCwgJmNhbGxiYWNrcywgMCkp
OwotICAgIGF1dG8gcHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENG
RGF0YShwb3N0U2NyaXB0RGF0YS5nZXQoKSkpOwotICAgIGF1dG8gcGRmRGF0YSA9IGFkb3B0Q0Yo
Q0ZEYXRhQ3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwKSk7Ci0gICAgYXV0byBj
b25zdW1lciA9IGFkb3B0Q0YoQ0dEYXRhQ29uc3VtZXJDcmVhdGVXaXRoQ0ZEYXRhKHBkZkRhdGEu
Z2V0KCkpKTsKLQotICAgIENHUFNDb252ZXJ0ZXJDb252ZXJ0KGNvbnZlcnRlci5nZXQoKSwgcHJv
dmlkZXIuZ2V0KCksIGNvbnN1bWVyLmdldCgpLCAwKTsKLSAgICByZXR1cm4gcGRmRGF0YTsKLX0K
LQotI2VuZGlmCi0KLXZvaWQgUERGRG9jdW1lbnRJbWFnZTo6ZHVtcChUZXh0U3RyZWFtJiB0cykg
Y29uc3QKLXsKLSAgICBJbWFnZTo6ZHVtcCh0cyk7Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJwYWdl
LWNvdW50IiwgcGFnZUNvdW50KCkpOwotICAgIHRzLmR1bXBQcm9wZXJ0eSgiY3JvcC1ib3giLCBt
X2Nyb3BCb3gpOwotICAgIGlmIChtX3JvdGF0aW9uRGVncmVlcykKLSAgICAgICAgdHMuZHVtcFBy
b3BlcnR5KCJyb3RhdGlvbiIsIG1fcm90YXRpb25EZWdyZWVzKTsKLX0KLQotfQotCi0jZW5kaWYg
Ly8gVVNFKENHKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvUERGRG9jdW1lbnRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvUERGRG9jdW1lbnRJbWFnZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1N2Y4
OTQ3NDlkNWVhYzkwNTNiOGQ4YTk0ZWQwODVlNWFmZjUxNWE3Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDEyNCArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDEzIEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKLSAqLwotCi0jaWZuZGVmIFBERkRvY3VtZW50SW1hZ2VfaAotI2RlZmluZSBQREZEb2N1bWVu
dEltYWdlX2gKLQotI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgotI2luY2x1ZGUgIkZsb2F0
UmVjdC5oIgotI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMuaCIKLSNpbmNsdWRlICJJbWFnZS5oIgot
I2luY2x1ZGUgIlNldHRpbmdzLmgiCi0KLSNpZiBVU0UoQ0cpCi0KLSNpZiBQTEFURk9STShNQUMp
Ci0jZGVmaW5lIFVTRV9QREZLSVRfRk9SX1BERkRPQ1VNRU5USU1BR0UgMQotI2VuZGlmCi0KLXR5
cGVkZWYgc3RydWN0IENHUERGRG9jdW1lbnQgKkNHUERGRG9jdW1lbnRSZWY7Ci1PQkpDX0NMQVNT
IFBERkRvY3VtZW50OwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdyYXBoaWNzQ29u
dGV4dDsKLWNsYXNzIEltYWdlQnVmZmVyOwotCi1jbGFzcyBQREZEb2N1bWVudEltYWdlIGZpbmFs
IDogcHVibGljIEltYWdlIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFBERkRvY3VtZW50SW1h
Z2U+IGNyZWF0ZShJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKLSAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFBERkRvY3VtZW50SW1hZ2Uob2JzZXJ2ZXIpKTsKLSAgICB9Ci0KLSAg
ICB2b2lkIHNldFBkZkltYWdlQ2FjaGluZ1BvbGljeShQREZJbWFnZUNhY2hpbmdQb2xpY3kpOwot
ICAgIAotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmV0YWlu
UHRyPENGTXV0YWJsZURhdGFSZWY+IGNvbnZlcnRQb3N0U2NyaXB0RGF0YVRvUERGKFJldGFpblB0
cjxDRkRhdGFSZWY+JiYgcG9zdFNjcmlwdERhdGEpOwotI2VuZGlmCi0KLSAgICB1bnNpZ25lZCBj
YWNoaW5nQ291bnRGb3JUZXN0aW5nKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoaW5nQ291bnRGb3JU
ZXN0aW5nOyB9Ci0KLXByaXZhdGU6Ci0gICAgUERGRG9jdW1lbnRJbWFnZShJbWFnZU9ic2VydmVy
Kik7Ci0gICAgdmlydHVhbCB+UERGRG9jdW1lbnRJbWFnZSgpOwotCi0gICAgYm9vbCBpc1BERkRv
Y3VtZW50SW1hZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KLSAgICBTdHJp
bmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCBvdmVycmlkZTsKLQotICAgIGJvb2wgaGFzU2lu
Z2xlU2VjdXJpdHlPcmlnaW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KLSAg
ICBFbmNvZGVkRGF0YVN0YXR1cyBkYXRhQ2hhbmdlZChib29sIGFsbERhdGFSZWNlaXZlZCkgb3Zl
cnJpZGU7Ci0KLSAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YShib29sIC8qZGVzdHJveUFsbCov
ID0gdHJ1ZSkgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIGNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25z
KExlbmd0aCYgaW50cmluc2ljV2lkdGgsIExlbmd0aCYgaW50cmluc2ljSGVpZ2h0LCBGbG9hdFNp
emUmIGludHJpbnNpY1JhdGlvKSBvdmVycmlkZTsKLSAgICBGbG9hdFNpemUgc2l6ZShJbWFnZU9y
aWVudGF0aW9uID0gSW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdlKSBjb25zdCBvdmVycmlkZTsK
LQotICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYgPSB7IH0pIG92ZXJyaWRlOwotCi0gICAgLy8gRklYTUU6IEltcGxlbWVudCB0
aGlzIHRvIGJlIGxlc3MgY29uc2VydmF0aXZlLgotICAgIGJvb2wgY3VycmVudEZyYW1lS25vd25U
b0JlT3BhcXVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgIHZvaWQg
ZHVtcChXVEY6OlRleHRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKLQotICAgIHZvaWQgY3JlYXRl
UERGRG9jdW1lbnQoKTsKLSAgICB2b2lkIGNvbXB1dGVCb3VuZHNGb3JDdXJyZW50UGFnZSgpOwot
ICAgIHVuc2lnbmVkIHBhZ2VDb3VudCgpIGNvbnN0OwotICAgIHZvaWQgZHJhd1BERlBhZ2UoR3Jh
cGhpY3NDb250ZXh0Jik7Ci0KLSAgICB2b2lkIGRlY29kZWRTaXplQ2hhbmdlZChzaXplX3QgbmV3
Q2FjaGVkQnl0ZXMpOwotICAgIHZvaWQgdXBkYXRlQ2FjaGVkSW1hZ2VJZk5lZWRlZChHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCk7Ci0gICAgYm9vbCBjYWNoZVBhcmFtZXRlcnNNYXRjaChHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCkgY29uc3Q7
Ci0KLSAgICBQREZJbWFnZUNhY2hpbmdQb2xpY3kgbV9wZGZJbWFnZUNhY2hpbmdQb2xpY3kgeyBk
ZWZhdWx0UERGSW1hZ2VDYWNoaW5nUG9saWN5IH07Ci0KLSNpZiBVU0UoUERGS0lUX0ZPUl9QREZE
T0NVTUVOVElNQUdFKQotICAgIFJldGFpblB0cjxQREZEb2N1bWVudD4gbV9kb2N1bWVudDsKLSNl
bHNlCi0gICAgUmV0YWluUHRyPENHUERGRG9jdW1lbnRSZWY+IG1fZG9jdW1lbnQ7Ci0jZW5kaWYK
LQotICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gbV9jYWNoZWRJbWFnZUJ1ZmZlcjsKLSAgICBGbG9h
dFJlY3QgbV9jYWNoZWRJbWFnZVJlY3Q7Ci0gICAgQWZmaW5lVHJhbnNmb3JtIG1fY2FjaGVkVHJh
bnNmb3JtOwotICAgIEZsb2F0UmVjdCBtX2NhY2hlZERlc3RpbmF0aW9uUmVjdDsKLSAgICBGbG9h
dFJlY3QgbV9jYWNoZWRTb3VyY2VSZWN0OwotICAgIHNpemVfdCBtX2NhY2hlZEJ5dGVzIHsgMCB9
OwotICAgIHVuc2lnbmVkIG1fY2FjaGluZ0NvdW50Rm9yVGVzdGluZyB7IDAgfTsKLQotICAgIEZs
b2F0UmVjdCBtX2Nyb3BCb3g7Ci0gICAgaW50IG1fcm90YXRpb25EZWdyZWVzIHsgMCB9OyAvLyBD
YW4gb25seSBiZSAwLCA5MCwgMTgwLCBvciAyNzAgZGVncmVlcy4KLSAgICBib29sIG1faGFzUGFn
ZSB7IGZhbHNlIH07Ci19OwotCi19Ci0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfSU1BR0UoUERG
RG9jdW1lbnRJbWFnZSkKLQotI2VuZGlmIC8vIFVTRShDRykKLQotI2VuZGlmIC8vIFBERkRvY3Vt
ZW50SW1hZ2VfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUlt
YWdlLm1tCmluZGV4IDM4ZGU4NTUyZjFlNDZhMWQzNzBhZTZkYzI3ODlhMWVjNjY3NGJhMTIuLmVi
NzlkZGEzZTc2YTRlMGFmZWZhOWRkNmQxNmYxN2YzZGJjMTM4NzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJl
ckNvcmVJbWFnZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3Jl
aW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW0KQEAgLTM2LDEyICszNiwxNCBA
QAogI2ltcG9ydCAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW1wb3J0ICJHcmFwaGljc0NvbnRleHRD
Ry5oIgogI2ltcG9ydCAiSW1hZ2VCdWZmZXIuaCIKKyNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBv
cnQgIlBsYXRmb3JtSW1hZ2VCdWZmZXIuaCIKICNpbXBvcnQgIlNvdXJjZUdyYXBoaWMuaCIKICNp
bXBvcnQgPENvcmVJbWFnZS9DSUNvbnRleHQuaD4KICNpbXBvcnQgPENvcmVJbWFnZS9DSUZpbHRl
ci5oPgogI2ltcG9ydCA8Q29yZUltYWdlL0NvcmVJbWFnZS5oPgogI2ltcG9ydCA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKaW5kZXggOTIzMzY5OWEwZGRi
MjM0Y2MzMGEzMjcxZGQ2YmEwN2RjYjQ2M2MyNi4uOWI2MjgzODkwNDViOTY1ZWNjMmFlYjExYjA1
MzBjNGY2YWE2NTRkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCkBAIC0yMzgsNiArMjM4
LDggQEAgdm9pZCBEaXNwbGF5TGlzdDo6YXBwZW5kKEl0ZW1IYW5kbGUgaXRlbSkKICAgICAgICAg
cmV0dXJuIGFwcGVuZDxEcmF3SW1hZ2VCdWZmZXI+KGl0ZW0uZ2V0PERyYXdJbWFnZUJ1ZmZlcj4o
KSk7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOgogICAgICAgICByZXR1cm4g
YXBwZW5kPERyYXdOYXRpdmVJbWFnZT4oaXRlbS5nZXQ8RHJhd05hdGl2ZUltYWdlPigpKTsKKyAg
ICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlUERGRG9jdW1lbnQ6CisgICAgICAgIHJldHVybiBh
cHBlbmQ8RHJhd05hdGl2ZVBERkRvY3VtZW50PihpdGVtLmdldDxEcmF3TmF0aXZlUERGRG9jdW1l
bnQ+KCkpOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgogICAgICAgICByZXR1cm4g
YXBwZW5kPERyYXdQYXR0ZXJuPihpdGVtLmdldDxEcmF3UGF0dGVybj4oKSk7CiAgICAgY2FzZSBJ
dGVtVHlwZTo6RHJhd1JlY3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCmluZGV4IDI2ZmM5NzMwNzIx
MTI3MzAzOTNlMmRjYmM4N2QwYzZiOWNhNTQyNTguLjFkMDE2ZDgzMGRhZjUyOGQwNDU0OThhZTVi
NDgwYmMzNDJkMmRiYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5oCkBAIC0zMCw2ICszMCw3IEBA
CiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAj
aW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKKyNpbmNsdWRlICJOYXRpdmVQREZEb2N1bWVudC5oIgog
I2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNp
bmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KQEAgLTc4LDYgKzc5LDcgQEAgcHVibGljOgogCiAg
ICAgY29uc3QgSW1hZ2VCdWZmZXJIYXNoTWFwJiBpbWFnZUJ1ZmZlcnMoKSBjb25zdCB7IHJldHVy
biBtX2ltYWdlQnVmZmVyczsgfQogICAgIGNvbnN0IE5hdGl2ZUltYWdlSGFzaE1hcCYgbmF0aXZl
SW1hZ2VzKCkgY29uc3QgeyByZXR1cm4gbV9uYXRpdmVJbWFnZXM7IH0KKyAgICBjb25zdCBOYXRp
dmVQREZEb2N1bWVudEhhc2hNYXAmIG5hdGl2ZVBERkRvY3VtZW50cygpIGNvbnN0IHsgcmV0dXJu
IG1fbmF0aXZlUERGRG9jdW1lbnRzOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEl0
ZW1CdWZmZXJDbGllbnQoSXRlbUJ1ZmZlclJlYWRpbmdDbGllbnQqKTsKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldEl0ZW1CdWZmZXJDbGllbnQoSXRlbUJ1ZmZlcldyaXRpbmdDbGllbnQqKTsK
QEAgLTE4MSwxMSArMTgzLDE5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm4gbWFrZVJl
ZihpbWFnZSk7CiAgICAgICAgIH0pOwogICAgIH0KLSAgICAKKworICAgIHZvaWQgY2FjaGVOYXRp
dmVQREZEb2N1bWVudChOYXRpdmVQREZEb2N1bWVudCYgcGRmRG9jdW1lbnQpCisgICAgeworICAg
ICAgICBtX25hdGl2ZVBERkRvY3VtZW50cy5lbnN1cmUocGRmRG9jdW1lbnQucmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKCksIFsmXSgpIHsKKyAgICAgICAgICAgIHJldHVybiBtYWtlUmVmKHBk
ZkRvY3VtZW50KTsKKyAgICAgICAgfSk7CisgICAgfQorCiAgICAgc3RhdGljIGJvb2wgc2hvdWxk
RHVtcEZvckZsYWdzKEFzVGV4dEZsYWdzLCBJdGVtSGFuZGxlKTsKIAogICAgIEltYWdlQnVmZmVy
SGFzaE1hcCBtX2ltYWdlQnVmZmVyczsKICAgICBOYXRpdmVJbWFnZUhhc2hNYXAgbV9uYXRpdmVJ
bWFnZXM7CisgICAgTmF0aXZlUERGRG9jdW1lbnRIYXNoTWFwIG1fbmF0aXZlUERGRG9jdW1lbnRz
OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJdGVtQnVmZmVyPiBtX2l0ZW1zOwogICAgIFZlY3RvcjxP
cHRpb25hbDxGbG9hdFJlY3Q+PiBtX2RyYXdpbmdJdGVtRXh0ZW50czsKICAgICBib29sIG1fdHJh
Y2tzRHJhd2luZ0l0ZW1FeHRlbnRzIHsgdHJ1ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtQnVmZmVyLmNwcAppbmRleCBjODc4YWQzNGM4YzQ4NGU0MWM2NWU3YmUxNDUyYmZh
OGFiMzE2ZGMyLi5jMjVkYTJmNDc2Njk2NzIxNDZhM2I3NmY2ZDBiNWRkOTMyYWE4YTgwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcApAQCAtMTQ4LDYgKzE0
OCwxMCBAQCB2b2lkIEl0ZW1IYW5kbGU6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkK
ICAgICAgICAgZ2V0PERyYXdOYXRpdmVJbWFnZT4oKS5hcHBseShjb250ZXh0KTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlUERGRG9jdW1lbnQ6
IHsKKyAgICAgICAgZ2V0PERyYXdOYXRpdmVQREZEb2N1bWVudD4oKS5hcHBseShjb250ZXh0KTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVybjog
ewogICAgICAgICBnZXQ8RHJhd1BhdHRlcm4+KCkuYXBwbHkoY29udGV4dCk7CiAgICAgICAgIHJl
dHVybjsKQEAgLTQyMCw2ICs0MjQsMTAgQEAgdm9pZCBJdGVtSGFuZGxlOjpkZXN0cm95KCkKICAg
ICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8RHJhd05h
dGl2ZUltYWdlPjo6dmFsdWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIGNhc2UgSXRl
bVR5cGU6OkRyYXdOYXRpdmVQREZEb2N1bWVudDogeworICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0
ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0aWJsZTxEcmF3TmF0aXZlUERGRG9jdW1lbnQ+Ojp2YWx1
ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRl
cm46IHsKICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGli
bGU8RHJhd1BhdHRlcm4+Ojp2YWx1ZSk7CiAgICAgICAgIHJldHVybjsKQEAgLTU3Nyw2ICs1ODUs
MTAgQEAgdm9pZCBJdGVtSGFuZGxlOjpjb3B5VG8oSXRlbUhhbmRsZSBkZXN0aW5hdGlvbikgY29u
c3QKICAgICAgICAgbmV3IChpdGVtT2Zmc2V0KSBEcmF3TmF0aXZlSW1hZ2UoZ2V0PERyYXdOYXRp
dmVJbWFnZT4oKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgY2FzZSBJdGVtVHlwZTo6
RHJhd05hdGl2ZVBERkRvY3VtZW50OiB7CisgICAgICAgIG5ldyAoaXRlbU9mZnNldCkgRHJhd05h
dGl2ZVBERkRvY3VtZW50KGdldDxEcmF3TmF0aXZlUERGRG9jdW1lbnQ+KCkpOworICAgICAgICBy
ZXR1cm47CisgICAgfQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOiB7CiAgICAgICAg
IG5ldyAoaXRlbU9mZnNldCkgRHJhd1BhdHRlcm4oZ2V0PERyYXdQYXR0ZXJuPigpKTsKICAgICAg
ICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuY3BwCmluZGV4
IDE2NWQyMjQxMzVkMzRkOTI1MWZjY2JhOTQ4N2YyYmNjZjg1ZTExZTYuLjM2N2FkY2E2OWUyOGEy
MWNmYzc1MjEzMmUwOGI1OGY1NTRjY2MxOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtVHlwZS5jcHAKQEAgLTg2LDYgKzg2LDggQEAgc3RhdGljIHNpemVfdCBzaXplT2ZJdGVt
SW5CeXRlcyhJdGVtVHlwZSB0eXBlKQogICAgICAgICByZXR1cm4gc2l6ZW9mKERyYXdJbWFnZUJ1
ZmZlcik7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOgogICAgICAgICByZXR1
cm4gc2l6ZW9mKERyYXdOYXRpdmVJbWFnZSk7CisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2
ZVBERkRvY3VtZW50OgorICAgICAgICByZXR1cm4gc2l6ZW9mKERyYXdOYXRpdmVQREZEb2N1bWVu
dCk7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46CiAgICAgICAgIHJldHVybiBzaXpl
b2YoRHJhd1BhdHRlcm4pOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdSZWN0OgpAQCAtMjA4LDYg
KzIxMCw3IEBAIGJvb2wgaXNEcmF3aW5nSXRlbShJdGVtVHlwZSB0eXBlKQogICAgIGNhc2UgSXRl
bVR5cGU6OkRyYXdMaW5lOgogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lc0ZvclRleHQ6CiAg
ICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOgorICAgIGNhc2UgSXRlbVR5cGU6OkRy
YXdOYXRpdmVQREZEb2N1bWVudDoKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVybjoKICAg
ICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0aDoKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UmVjdDoK
QEAgLTI4MSw2ICsyODQsNyBAQCBib29sIGlzSW5saW5lSXRlbShJdGVtVHlwZSB0eXBlKQogICAg
IGNhc2UgSXRlbVR5cGU6OkRyYXdFbGxpcHNlOgogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFn
ZUJ1ZmZlcjoKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6CisgICAgY2FzZSBJ
dGVtVHlwZTo6RHJhd05hdGl2ZVBERkRvY3VtZW50OgogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQ
YXR0ZXJuOgogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lOgogICAgIGNhc2UgSXRlbVR5cGU6
OkRyYXdSZWN0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmgKaW5kZXggZmI1
ZGVmZGI3YzZkY2U0OThiMjE5ZjRmYmQxNzNkM2Y5MmE2MmY1YS4uMWViNTg1ZTQ0MDAzMjBkNjlk
MWZiMzMyOGY1MTY5OGE5MmRjZDAwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
VHlwZS5oCkBAIC01NSw2ICs1NSw3IEBAIGVudW0gY2xhc3MgSXRlbVR5cGUgOiB1aW50OF90IHsK
ICAgICBEcmF3R2x5cGhzLAogICAgIERyYXdJbWFnZUJ1ZmZlciwKICAgICBEcmF3TmF0aXZlSW1h
Z2UsCisgICAgRHJhd05hdGl2ZVBERkRvY3VtZW50LAogICAgIERyYXdQYXR0ZXJuLAogICAgIERy
YXdSZWN0LAogICAgIERyYXdMaW5lLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3Bw
CmluZGV4IDhjYmRiYzM3Nzk5NGJiMTAzMWViMDJmOWU0OGFhYWUxNjk2NTVhNzUuLmRlYzJiNDJi
ZDNlODM3ZGYyZjEwMWUwNThjODA4MDI3ZTAyMWYwNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtcy5jcHAKQEAgLTQ1OCw2ICs0NTgsMjUgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdOYXRpdmVJbWFnZSYgaXRlbSkKICAg
ICByZXR1cm4gdHM7CiB9CiAKK05PX1JFVFVSTl9EVUVfVE9fQVNTRVJUIHZvaWQgRHJhd05hdGl2
ZVBERkRvY3VtZW50OjphcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdAoreworICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworfQorCit2b2lkIERyYXdOYXRpdmVQREZEb2N1bWVudDo6YXBwbHko
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBOYXRpdmVQREZEb2N1bWVudCYgcGRmRG9jdW1lbnQp
IGNvbnN0Cit7CisgICAgcGRmRG9jdW1lbnQuZHJhdyhjb250ZXh0LCBtX2ltYWdlU2l6ZSwgbV9k
ZXN0aW5hdGlvblJlY3QsIG1fc3JjUmVjdCwgbV9vcHRpb25zKTsKK30KKworc3RhdGljIFRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERyYXdOYXRpdmVQREZEb2N1
bWVudCYgaXRlbSkKK3sKKyAgICAvLyBGSVhNRTogZHVtcCBtb3JlIHN0dWZmLgorICAgIHRzLmR1
bXBQcm9wZXJ0eSgicGRmLWRvY3VtZW50LWlkZW50aWZpZXIiLCBpdGVtLnBkZkRvY3VtZW50SWRl
bnRpZmllcigpKTsKKyAgICB0cy5kdW1wUHJvcGVydHkoInNvdXJjZS1yZWN0IiwgaXRlbS5zb3Vy
Y2UoKSk7CisgICAgdHMuZHVtcFByb3BlcnR5KCJkZXN0LXJlY3QiLCBpdGVtLmRlc3RpbmF0aW9u
UmVjdCgpKTsKKyAgICByZXR1cm4gdHM7Cit9CisKIERyYXdQYXR0ZXJuOjpEcmF3UGF0dGVybihS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VJZGVudGlmaWVyLCBjb25zdCBGbG9hdFNp
emUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25z
dCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKICAgICA6IG1faW1hZ2VJZGVudGlmaWVyKGltYWdl
SWRlbnRpZmllcikKICAgICAsIG1faW1hZ2VTaXplKGltYWdlU2l6ZSkKQEAgLTEwMzYsNiArMTA1
NSw3IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBJdGVt
VHlwZSB0eXBlKQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdHbHlwaHM6IHRzIDw8ICJkcmF3LWds
eXBocyI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjogdHMgPDwg
ImRyYXctaW1hZ2UtYnVmZmVyIjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2
ZUltYWdlOiB0cyA8PCAiZHJhdy1uYXRpdmUtaW1hZ2UiOyBicmVhazsKKyAgICBjYXNlIEl0ZW1U
eXBlOjpEcmF3TmF0aXZlUERGRG9jdW1lbnQ6IHRzIDw8ICJkcmF3LW5hdGl2ZS1wZGYtZG9jdW1l
bnQiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVybjogdHMgPDwgImRyYXct
cGF0dGVybiI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdSZWN0OiB0cyA8PCAiZHJh
dy1yZWN0IjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xpbmU6IHRzIDw8ICJkcmF3
LWxpbmUiOyBicmVhazsKQEAgLTExNTQsNiArMTE3NCw5IEBAIFRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYgdHMsIEl0ZW1IYW5kbGUgaXRlbSkKICAgICBjYXNlIEl0ZW1UeXBlOjpE
cmF3TmF0aXZlSW1hZ2U6CiAgICAgICAgIHRzIDw8IGl0ZW0uZ2V0PERyYXdOYXRpdmVJbWFnZT4o
KTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZVBERkRvY3Vt
ZW50OgorICAgICAgICB0cyA8PCBpdGVtLmdldDxEcmF3TmF0aXZlUERGRG9jdW1lbnQ+KCk7Cisg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgogICAgICAgICB0
cyA8PCBpdGVtLmdldDxEcmF3UGF0dGVybj4oKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SXRlbXMuaAppbmRleCAxMDQ5NDVkNDY2Yzg5YmNlNTIwNTg1M2U2ZGM5YTRh
Zjc0NjFmNjE1Li42ZjBmYjBmYzEzMDQxZjY1NTRhY2UzZDcyYzBkNzAxNDFlYmFjODJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKQEAgLTEwNzYsNiArMTA3NiwzOSBAQCBwcml2
YXRlOgogICAgIEltYWdlUGFpbnRpbmdPcHRpb25zIG1fb3B0aW9uczsKIH07CiAKK2NsYXNzIERy
YXdOYXRpdmVQREZEb2N1bWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciBJdGVt
VHlwZSBpdGVtVHlwZSA9IEl0ZW1UeXBlOjpEcmF3TmF0aXZlUERGRG9jdW1lbnQ7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBib29sIGlzSW5saW5lSXRlbSA9IHRydWU7CisgICAgc3RhdGljIGNvbnN0
ZXhwciBib29sIGlzRHJhd2luZ0l0ZW0gPSB0cnVlOworCisgICAgRHJhd05hdGl2ZVBERkRvY3Vt
ZW50KFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBwZGZEb2N1bWVudElkZW50aWZpZXIsIGNv
bnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25z
KQorICAgICAgICA6IG1fcGRmRG9jdW1lbnRJZGVudGlmaWVyKHBkZkRvY3VtZW50SWRlbnRpZmll
cikKKyAgICAgICAgLCBtX2ltYWdlU2l6ZShpbWFnZVNpemUpCisgICAgICAgICwgbV9kZXN0aW5h
dGlvblJlY3QoZGVzdFJlY3QpCisgICAgICAgICwgbV9zcmNSZWN0KHNyY1JlY3QpCisgICAgICAg
ICwgbV9vcHRpb25zKG9wdGlvbnMpCisgICAgeworICAgIH0KKworICAgIFJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciBwZGZEb2N1bWVudElkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3Bk
ZkRvY3VtZW50SWRlbnRpZmllcjsgfQorICAgIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlKCkgY29u
c3QgeyByZXR1cm4gbV9zcmNSZWN0OyB9CisgICAgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlv
blJlY3QoKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uUmVjdDsgfQorCisgICAgTk9fUkVU
VVJOX0RVRV9UT19BU1NFUlQgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKKyAg
ICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYsIE5hdGl2ZVBERkRvY3VtZW50JikgY29uc3Q7
CisKKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGdsb2JhbEJvdW5kcygpIGNvbnN0IHsgcmV0dXJu
IFdURjo6bnVsbG9wdDsgfQorICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29u
c3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlvblJlY3Q7IH0K
KworcHJpdmF0ZToKKyAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgbV9wZGZEb2N1bWVu
dElkZW50aWZpZXI7CisgICAgRmxvYXRTaXplIG1faW1hZ2VTaXplOworICAgIEZsb2F0UmVjdCBt
X2Rlc3RpbmF0aW9uUmVjdDsKKyAgICBGbG9hdFJlY3QgbV9zcmNSZWN0OworICAgIEltYWdlUGFp
bnRpbmdPcHRpb25zIG1fb3B0aW9uczsKK307CisKIGNsYXNzIERyYXdQYXR0ZXJuIHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgY29uc3RleHByIEl0ZW1UeXBlIGl0ZW1UeXBlID0gSXRlbVR5cGU6OkRy
YXdQYXR0ZXJuOwpAQCAtMjI4Niw2ICsyMzE5LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRy
YWl0czxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU+IHsKICAgICBXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdHbHlwaHMsCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6
Okl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXIsCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0
ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2UsCisgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1U
eXBlOjpEcmF3TmF0aXZlUERGRG9jdW1lbnQsCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0
ZW1UeXBlOjpEcmF3UGF0dGVybiwKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6
OkRyYXdSZWN0LAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0xpbmUs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXggZjUwMDA1YTQ1
NGIzOWY0NWNkMGZmNzFhZDdkMTljYTFjZDdjNzBlZS4uNzczYzU1Mjk2YTUxNzg4ZTBjMzNkMzEz
MmZlN2Y1MTFlNjA2NTZmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
LmNwcApAQCAtMTgyLDYgKzE4MiwxNCBAQCB2b2lkIFJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2Uo
TmF0aXZlSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgYwogICAgIGFw
cGVuZDxEcmF3TmF0aXZlSW1hZ2U+KGltYWdlLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigp
LCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKIH0KIAordm9pZCBSZWNv
cmRlcjo6ZHJhd05hdGl2ZVBERkRvY3VtZW50KE5hdGl2ZVBERkRvY3VtZW50JiBwZGZEb2N1bWVu
dCwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9w
dGlvbnMpCit7CisgICAgaWYgKG1fZGVsZWdhdGUpCisgICAgICAgIG1fZGVsZWdhdGUtPmNhY2hl
TmF0aXZlUERGRG9jdW1lbnQocGRmRG9jdW1lbnQpOworICAgIG1fZGlzcGxheUxpc3QuY2FjaGVO
YXRpdmVQREZEb2N1bWVudChwZGZEb2N1bWVudCk7CisgICAgYXBwZW5kPERyYXdOYXRpdmVQREZE
b2N1bWVudD4ocGRmRG9jdW1lbnQucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCksIGltYWdl
U2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOworfQorCiB2b2lkIFJlY29yZGVyOjpk
cmF3UGF0dGVybihOYXRpdmVJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXpl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQm
IHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRp
b25zJiBvcHRpb25zKQogewogICAgIGlmIChtX2RlbGVnYXRlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3Jk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlY29yZGVyLmgKaW5kZXggNzdjYmEzMzZkYzViOTRmNGRiMjFkYTY2MTEwN2JkNGMz
MmNmNzA4NS4uNDJmZTRlNjBjYWU1MTE3ZmMxNTNhOWY3ZjYwZTUwNzgwNDU4MjNiZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCkBAIC02Nyw2ICs2Nyw3IEBAIHB1Ymxp
YzoKICAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxBcHBlbmRJdGVtT2ZUeXBlKEl0ZW1UeXBlKSB7
IH0KICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEFwcGVuZEl0ZW1PZlR5cGUoSXRlbVR5cGUpIHsg
fQogICAgICAgICB2aXJ0dWFsIHZvaWQgY2FjaGVOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYpIHsg
fQorICAgICAgICB2aXJ0dWFsIHZvaWQgY2FjaGVOYXRpdmVQREZEb2N1bWVudChOYXRpdmVQREZE
b2N1bWVudCYpIHsgfQogICAgIH07CiAKIHByaXZhdGU6CkBAIC0xMDQsNiArMTA1LDcgQEAgcHJp
dmF0ZToKIAogICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJiwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3TmF0aXZl
SW1hZ2UoTmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd05hdGl2ZVBERkRvY3VtZW50
KE5hdGl2ZVBERkRvY3VtZW50JiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdQYXR0ZXJuKE5hdGl2ZUlt
YWdlJiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29u
c3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZHJhd1JlY3QoY29uc3Qg
RmxvYXRSZWN0JiwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlcGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcAppbmRleCBjYTE5ODQ1YWFmODA0ZTE5NDg5OWYw
OWMyYTA2OGI0NjNlZDU1OGZmLi4wOGI2NzhkZDAxNjVhYWU2YTIyOTViMjNiMjg3OWQyOTA1M2I4
OTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCkBAIC0zNCwx
MSArMzQsMTIgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7
CiAKLVJlcGxheWVyOjpSZXBsYXllcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IERp
c3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgY29uc3QgSW1hZ2VCdWZmZXJIYXNoTWFwKiBpbWFnZUJ1
ZmZlcnMsIGNvbnN0IE5hdGl2ZUltYWdlSGFzaE1hcCogbmF0aXZlSW1hZ2VzLCBEZWxlZ2F0ZSog
ZGVsZWdhdGUpCitSZXBsYXllcjo6UmVwbGF5ZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIGNvbnN0IEltYWdlQnVmZmVySGFzaE1hcCog
aW1hZ2VCdWZmZXJzLCBjb25zdCBOYXRpdmVJbWFnZUhhc2hNYXAqIG5hdGl2ZUltYWdlcywgY29u
c3QgTmF0aXZlUERGRG9jdW1lbnRIYXNoTWFwKiBuYXRpdmVQREZEb2N1bWVudHMsIERlbGVnYXRl
KiBkZWxlZ2F0ZSkKICAgICA6IG1fY29udGV4dChjb250ZXh0KQogICAgICwgbV9kaXNwbGF5TGlz
dChkaXNwbGF5TGlzdCkKICAgICAsIG1faW1hZ2VCdWZmZXJzKGltYWdlQnVmZmVycyA/ICppbWFn
ZUJ1ZmZlcnMgOiBtX2Rpc3BsYXlMaXN0LmltYWdlQnVmZmVycygpKQogICAgICwgbV9uYXRpdmVJ
bWFnZXMobmF0aXZlSW1hZ2VzID8gKm5hdGl2ZUltYWdlcyA6IG1fZGlzcGxheUxpc3QubmF0aXZl
SW1hZ2VzKCkpCisgICAgLCBtX25hdGl2ZVBERkRvY3VtZW50cyhuYXRpdmVQREZEb2N1bWVudHMg
PyAqbmF0aXZlUERGRG9jdW1lbnRzIDogbV9kaXNwbGF5TGlzdC5uYXRpdmVQREZEb2N1bWVudHMo
KSkKICAgICAsIG1fZGVsZWdhdGUoZGVsZWdhdGUpCiB7CiB9CkBAIC02Nyw2ICs2OCwxNiBAQCBp
bmxpbmUgc3RhdGljIE9wdGlvbmFsPFN0b3BSZXBsYXlSZWFzb24+IGFwcGx5TmF0aXZlSW1hZ2VJ
dGVtKEdyYXBoaWNzQ29udGV4dCYgYwogICAgIHJldHVybiBTdG9wUmVwbGF5UmVhc29uOjpNaXNz
aW5nQ2FjaGVkUmVzb3VyY2U7CiB9CiAKK2lubGluZSBzdGF0aWMgT3B0aW9uYWw8U3RvcFJlcGxh
eVJlYXNvbj4gYXBwbHlEcmF3TmF0aXZlUERGRG9jdW1lbnRJdGVtKEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgTmF0aXZlUERGRG9jdW1lbnRIYXNoTWFwJiBuYXRpdmVQREZEb2N1bWVu
dHMsIEl0ZW1IYW5kbGUgaXRlbSkKK3sKKyAgICBhdXRvJiBuYXRpdmVQREZEb2N1bWVudEl0ZW0g
PSBpdGVtLmdldDxEcmF3TmF0aXZlUERGRG9jdW1lbnQ+KCk7CisgICAgaWYgKGF1dG8qIHBkZkRv
Y3VtZW50ID0gbmF0aXZlUERGRG9jdW1lbnRzLmdldChuYXRpdmVQREZEb2N1bWVudEl0ZW0ucGRm
RG9jdW1lbnRJZGVudGlmaWVyKCkpKSB7CisgICAgICAgIG5hdGl2ZVBERkRvY3VtZW50SXRlbS5h
cHBseShjb250ZXh0LCAqcGRmRG9jdW1lbnQpOworICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgIH0KKyAgICByZXR1cm4gU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291
cmNlOworfQorCiBPcHRpb25hbDxTdG9wUmVwbGF5UmVhc29uPiBSZXBsYXllcjo6YXBwbHlJdGVt
KEl0ZW1IYW5kbGUgaXRlbSkKIHsKICAgICBpZiAobV9kZWxlZ2F0ZSAmJiBtX2RlbGVnYXRlLT5h
cHBseShpdGVtLCBtX2NvbnRleHQpKQpAQCAtODQsNiArOTUsOSBAQCBPcHRpb25hbDxTdG9wUmVw
bGF5UmVhc29uPiBSZXBsYXllcjo6YXBwbHlJdGVtKEl0ZW1IYW5kbGUgaXRlbSkKICAgICBpZiAo
aXRlbS5pczxEcmF3UGF0dGVybj4oKSkKICAgICAgICAgcmV0dXJuIGFwcGx5TmF0aXZlSW1hZ2VJ
dGVtPERyYXdQYXR0ZXJuPihtX2NvbnRleHQsIG1fbmF0aXZlSW1hZ2VzLCBpdGVtKTsKIAorICAg
IGlmIChpdGVtLmlzPERyYXdOYXRpdmVQREZEb2N1bWVudD4oKSkKKyAgICAgICAgcmV0dXJuIGFw
cGx5RHJhd05hdGl2ZVBERkRvY3VtZW50SXRlbShtX2NvbnRleHQsIG1fbmF0aXZlUERGRG9jdW1l
bnRzLCBpdGVtKTsKKwogICAgIGl0ZW0uYXBwbHkobV9jb250ZXh0KTsKICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmgKaW5kZXgg
ZTY3OGI4NjA2MmNlZGI2MTJhZThiY2VkN2MwYjc4ODQ1NjdjMzc2Ni4uZGQzN2JmYmU2MzBiMDJi
ZTY3NmM1NjNjMWZkM2NiZWQ0NDBkZDhlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZXBsYXllci5oCkBAIC01NCw3ICs1NCw3IEBAIGNsYXNzIFJlcGxheWVyIHsKICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShSZXBsYXllcik7CiBwdWJsaWM6CiAgICAgY2xhc3MgRGVsZWdhdGU7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgUmVwbGF5ZXIoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRGlzcGxh
eUxpc3QmLCBjb25zdCBJbWFnZUJ1ZmZlckhhc2hNYXAqID0gbnVsbHB0ciwgY29uc3QgTmF0aXZl
SW1hZ2VIYXNoTWFwKiA9IG51bGxwdHIsIERlbGVnYXRlKiA9IG51bGxwdHIpOworICAgIFdFQkNP
UkVfRVhQT1JUIFJlcGxheWVyKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IERpc3BsYXlMaXN0Jiwg
Y29uc3QgSW1hZ2VCdWZmZXJIYXNoTWFwKiA9IG51bGxwdHIsIGNvbnN0IE5hdGl2ZUltYWdlSGFz
aE1hcCogPSBudWxscHRyLCBjb25zdCBOYXRpdmVQREZEb2N1bWVudEhhc2hNYXAqID0gbnVsbHB0
ciwgRGVsZWdhdGUqID0gbnVsbHB0cik7CiAgICAgV0VCQ09SRV9FWFBPUlQgflJlcGxheWVyKCk7
CiAKICAgICBXRUJDT1JFX0VYUE9SVCBSZXBsYXlSZXN1bHQgcmVwbGF5KGNvbnN0IEZsb2F0UmVj
dCYgaW5pdGlhbENsaXAgPSB7IH0sIGJvb2wgdHJhY2tSZXBsYXlMaXN0ID0gZmFsc2UpOwpAQCAt
NzIsNiArNzIsNyBAQCBwcml2YXRlOgogICAgIGNvbnN0IERpc3BsYXlMaXN0JiBtX2Rpc3BsYXlM
aXN0OwogICAgIGNvbnN0IEltYWdlQnVmZmVySGFzaE1hcCYgbV9pbWFnZUJ1ZmZlcnM7CiAgICAg
Y29uc3QgTmF0aXZlSW1hZ2VIYXNoTWFwJiBtX25hdGl2ZUltYWdlczsKKyAgICBjb25zdCBOYXRp
dmVQREZEb2N1bWVudEhhc2hNYXAmIG1fbmF0aXZlUERGRG9jdW1lbnRzOwogICAgIERlbGVnYXRl
KiBtX2RlbGVnYXRlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL05hdGl2ZVBERkRvY3VtZW50TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL05hdGl2ZVBERkRvY3VtZW50TWFjLm1tCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE1
NzdlMDgzMjk1YTU3NzRmYWQ2ZjhlYzVkZjJkZGRhNDljYjliZTcKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTmF0aXZlUERGRG9jdW1lbnRN
YWMubW0KQEAgLTAsMCArMSwxMDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIk5hdGl2ZVBERkRvY3Vt
ZW50LmgiCisKKyNpZiBFTkFCTEUoUERGS0lUX0ZPUl9QREZET0NVTUVOVElNQUdFKQorCisjaW1w
b3J0ICJMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQuaCIKKyNpbXBvcnQgIlNoYXJlZEJ1ZmZl
ci5oIgorI2ltcG9ydCA8UXVhcnR6L1F1YXJ0ei5oPgorI2ltcG9ydCA8b2JqYy9vYmpjLWNsYXNz
Lmg+CisjaW1wb3J0IDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgorI2ltcG9ydCA8d3Rm
L1NvZnRMaW5raW5nLmg+CisKK1NPRlRfTElOS19GUkFNRVdPUktfSU5fVU1CUkVMTEEoUXVhcnR6
LCBQREZLaXQpCitTT0ZUX0xJTktfQ0xBU1MoUERGS2l0LCBQREZEb2N1bWVudCkKKworZXh0ZXJu
ICJDIiB7Citib29sIENHQ29udGV4dEdldEFsbG93c0ZvbnRTbW9vdGhpbmcoQ0dDb250ZXh0UmVm
KTsKK2Jvb2wgQ0dDb250ZXh0R2V0QWxsb3dzRm9udFN1YnBpeGVsUXVhbnRpemF0aW9uKENHQ29u
dGV4dFJlZik7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmUHRyPE5hdGl2ZVBERkRv
Y3VtZW50PiBOYXRpdmVQREZEb2N1bWVudDo6Y3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwgUmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKK3sK
KyAgICBhdXRvIGRvY3VtZW50ID0gYWRvcHROUyhbYWxsb2NQREZEb2N1bWVudEluc3RhbmNlKCkg
aW5pdFdpdGhEYXRhOmRhdGEuY3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKKyAgICBpZiAoIWRvY3Vt
ZW50KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE5h
dGl2ZVBERkRvY3VtZW50KGRhdGEsIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgV1RGTW92
ZShkb2N1bWVudCkpKTsKK30KKwordm9pZCBOYXRpdmVQREZEb2N1bWVudDo6Y29tcHV0ZUJvdW5k
c0ZvckN1cnJlbnRQYWdlKCkKK3sKKyAgICBQREZQYWdlICpwZGZQYWdlID0gW21fcGxhdGZvcm1Q
REZEb2N1bWVudCBwYWdlQXRJbmRleDowXTsKKworICAgIG1fY3JvcEJveCA9IFtwZGZQYWdlIGJv
dW5kc0ZvckJveDprUERGRGlzcGxheUJveENyb3BCb3hdOworICAgIG1fcm90YXRpb25EZWdyZWVz
ID0gW3BkZlBhZ2Ugcm90YXRpb25dOworfQorCit1bnNpZ25lZCBOYXRpdmVQREZEb2N1bWVudDo6
cGFnZUNvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gW21fcGxhdGZvcm1QREZEb2N1bWVudCBw
YWdlQ291bnRdOworfQorCit2b2lkIE5hdGl2ZVBERkRvY3VtZW50OjpkcmF3UERGUGFnZShHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZSYpCit7CisgICAgTG9jYWxDdXJy
ZW50R3JhcGhpY3NDb250ZXh0IGxvY2FsQ3VycmVudENvbnRleHQoY29udGV4dCk7CisKKyAgICAv
LyBUaGVzZSBzdGF0ZXMgY2FuIGJlIG11dGF0ZWQgYnkgUERGS2l0IGJ1dCBhcmUgbm90IHNhdmVk
CisgICAgLy8gb24gdGhlIGNvbnRleHQncyBzdGF0ZSBzdGFjay4gKDxyZGFyOi8vcHJvYmxlbS8x
NDk1MTc1OSYzNTczODE4MT4pCisgICAgYm9vbCBhbGxvd3NTbW9vdGhpbmcgPSBDR0NvbnRleHRH
ZXRBbGxvd3NGb250U21vb3RoaW5nKGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCkpOworICAgIGJv
b2wgYWxsb3dzU3VicGl4ZWxRdWFudGl6YXRpb24gPSBDR0NvbnRleHRHZXRBbGxvd3NGb250U3Vi
cGl4ZWxRdWFudGl6YXRpb24oY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSk7CisgICAgYm9vbCBh
bGxvd3NTdWJwaXhlbFBvc2l0aW9uaW5nID0gQ0dDb250ZXh0R2V0QWxsb3dzRm9udFN1YnBpeGVs
UG9zaXRpb25pbmcoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSk7CisKKyAgICBBTExPV19ERVBS
RUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgorICAgIFtbbV9wbGF0Zm9ybVBERkRvY3VtZW50IHBh
Z2VBdEluZGV4OjBdIGRyYXdXaXRoQm94OmtQREZEaXNwbGF5Qm94Q3JvcEJveF07CisgICAgQUxM
T1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECisKKyAgICBDR0NvbnRleHRTZXRBbGxvd3NG
b250U21vb3RoaW5nKGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCksIGFsbG93c1Ntb290aGluZyk7
CisgICAgQ0dDb250ZXh0U2V0QWxsb3dzRm9udFN1YnBpeGVsUXVhbnRpemF0aW9uKGNvbnRleHQu
cGxhdGZvcm1Db250ZXh0KCksIGFsbG93c1N1YnBpeGVsUXVhbnRpemF0aW9uKTsKKyAgICBDR0Nv
bnRleHRTZXRBbGxvd3NGb250U3VicGl4ZWxQb3NpdGlvbmluZyhjb250ZXh0LnBsYXRmb3JtQ29u
dGV4dCgpLCBhbGxvd3NTdWJwaXhlbFBvc2l0aW9uaW5nKTsKK30KKworUmV0YWluUHRyPENGTXV0
YWJsZURhdGFSZWY+IE5hdGl2ZVBERkRvY3VtZW50Ojpjb252ZXJ0UG9zdFNjcmlwdERhdGFUb1BE
RihSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIHBvc3RTY3JpcHREYXRhKQoreworICAgIC8vIENvbnZl
cnQgUG9zdFNjcmlwdCB0byBQREYgdXNpbmcgdGhlIFF1YXJ0eiAyRCBBUEkuCisgICAgLy8gaHR0
cDovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi9HcmFwaGljc0ltYWdpbmcvQ29u
Y2VwdHVhbC9kcmF3aW5nd2l0aHF1YXJ0ejJkL2RxX3BzX2NvbnZlcnQvY2hhcHRlcl8xNl9zZWN0
aW9uXzEuaHRtbAorCisgICAgQ0dQU0NvbnZlcnRlckNhbGxiYWNrcyBjYWxsYmFja3MgPSB7IH07
CisgICAgYXV0byBjb252ZXJ0ZXIgPSBhZG9wdENGKENHUFNDb252ZXJ0ZXJDcmVhdGUoMCwgJmNh
bGxiYWNrcywgMCkpOworICAgIGF1dG8gcHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVy
Q3JlYXRlV2l0aENGRGF0YShwb3N0U2NyaXB0RGF0YS5nZXQoKSkpOworICAgIGF1dG8gcGRmRGF0
YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwKSk7
CisgICAgYXV0byBjb25zdW1lciA9IGFkb3B0Q0YoQ0dEYXRhQ29uc3VtZXJDcmVhdGVXaXRoQ0ZE
YXRhKHBkZkRhdGEuZ2V0KCkpKTsKKworICAgIENHUFNDb252ZXJ0ZXJDb252ZXJ0KGNvbnZlcnRl
ci5nZXQoKSwgcHJvdmlkZXIuZ2V0KCksIGNvbnN1bWVyLmdldCgpLCAwKTsKKyAgICByZXR1cm4g
cGRmRGF0YTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KFBERktJVF9GT1JfUERGRE9DVU1FTlRJTUFHRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0KZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzZTZhZjdiMDM4OTI4MzhjM2JmZWExYzBjMTFhYTdm
Y2Y4YTc3YTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMu
bW0KKysrIC9kZXYvbnVsbApAQCAtMSw4OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJQREZE
b2N1bWVudEltYWdlLmgiCi0KLSNpZiBVU0UoUERGS0lUX0ZPUl9QREZET0NVTUVOVElNQUdFKQot
Ci0jaW1wb3J0ICJMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQuaCIKLSNpbXBvcnQgIlNoYXJl
ZEJ1ZmZlci5oIgotI2ltcG9ydCA8UXVhcnR6L1F1YXJ0ei5oPgotI2ltcG9ydCA8b2JqYy9vYmpj
LWNsYXNzLmg+Ci0jaW1wb3J0IDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgotI2ltcG9y
dCA8d3RmL1JldGFpblB0ci5oPgotI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+Ci0KLVNPRlRf
TElOS19GUkFNRVdPUktfSU5fVU1CUkVMTEEoUXVhcnR6LCBQREZLaXQpCi1TT0ZUX0xJTktfQ0xB
U1MoUERGS2l0LCBQREZEb2N1bWVudCkKLQotZXh0ZXJuICJDIiB7Ci1ib29sIENHQ29udGV4dEdl
dEFsbG93c0ZvbnRTbW9vdGhpbmcoQ0dDb250ZXh0UmVmIGNvbnRleHQpOwotYm9vbCBDR0NvbnRl
eHRHZXRBbGxvd3NGb250U3VicGl4ZWxRdWFudGl6YXRpb24oQ0dDb250ZXh0UmVmIGNvbnRleHQp
OwotfQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y3Jl
YXRlUERGRG9jdW1lbnQoKQotewotICAgIG1fZG9jdW1lbnQgPSBhZG9wdE5TKFthbGxvY1BERkRv
Y3VtZW50SW5zdGFuY2UoKSBpbml0V2l0aERhdGE6ZGF0YSgpLT5jcmVhdGVOU0RhdGEoKS5nZXQo
KV0pOwotfQotCi12b2lkIFBERkRvY3VtZW50SW1hZ2U6OmNvbXB1dGVCb3VuZHNGb3JDdXJyZW50
UGFnZSgpCi17Ci0gICAgUERGUGFnZSAqcGRmUGFnZSA9IFttX2RvY3VtZW50IHBhZ2VBdEluZGV4
OjBdOwotCi0gICAgbV9jcm9wQm94ID0gW3BkZlBhZ2UgYm91bmRzRm9yQm94OmtQREZEaXNwbGF5
Qm94Q3JvcEJveF07Ci0gICAgbV9yb3RhdGlvbkRlZ3JlZXMgPSBbcGRmUGFnZSByb3RhdGlvbl07
Ci19Ci0KLXVuc2lnbmVkIFBERkRvY3VtZW50SW1hZ2U6OnBhZ2VDb3VudCgpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIFttX2RvY3VtZW50IHBhZ2VDb3VudF07Ci19Ci0KLXZvaWQgUERGRG9jdW1lbnRJ
bWFnZTo6ZHJhd1BERlBhZ2UoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQotewotICAgIExvY2Fs
Q3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbEN1cnJlbnRDb250ZXh0KGNvbnRleHQpOwotCi0g
ICAgLy8gVGhlc2Ugc3RhdGVzIGNhbiBiZSBtdXRhdGVkIGJ5IFBERktpdCBidXQgYXJlIG5vdCBz
YXZlZAotICAgIC8vIG9uIHRoZSBjb250ZXh0J3Mgc3RhdGUgc3RhY2suICg8cmRhcjovL3Byb2Js
ZW0vMTQ5NTE3NTkmMzU3MzgxODE+KQotICAgIGJvb2wgYWxsb3dzU21vb3RoaW5nID0gQ0dDb250
ZXh0R2V0QWxsb3dzRm9udFNtb290aGluZyhjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpKTsKLSAg
ICBib29sIGFsbG93c1N1YnBpeGVsUXVhbnRpemF0aW9uID0gQ0dDb250ZXh0R2V0QWxsb3dzRm9u
dFN1YnBpeGVsUXVhbnRpemF0aW9uKGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCkpOwotICAgIGJv
b2wgYWxsb3dzU3VicGl4ZWxQb3NpdGlvbmluZyA9IENHQ29udGV4dEdldEFsbG93c0ZvbnRTdWJw
aXhlbFBvc2l0aW9uaW5nKGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCkpOwotCi0gICAgQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICBbW21fZG9jdW1lbnQgcGFnZUF0SW5k
ZXg6MF0gZHJhd1dpdGhCb3g6a1BERkRpc3BsYXlCb3hDcm9wQm94XTsKLSAgICBBTExPV19ERVBS
RUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKLQotICAgIENHQ29udGV4dFNldEFsbG93c0ZvbnRTbW9v
dGhpbmcoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgYWxsb3dzU21vb3RoaW5nKTsKLSAgICBD
R0NvbnRleHRTZXRBbGxvd3NGb250U3VicGl4ZWxRdWFudGl6YXRpb24oY29udGV4dC5wbGF0Zm9y
bUNvbnRleHQoKSwgYWxsb3dzU3VicGl4ZWxRdWFudGl6YXRpb24pOwotICAgIENHQ29udGV4dFNl
dEFsbG93c0ZvbnRTdWJwaXhlbFBvc2l0aW9uaW5nKGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCks
IGFsbG93c1N1YnBpeGVsUG9zaXRpb25pbmcpOwotfQotCi19Ci0KLSNlbmRpZiAvLyBVU0UoUERG
S0lUX0ZPUl9QREZET0NVTUVOVElNQUdFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05p
Y29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcAppbmRleCAyYzlhYTg4Njk2OWViMDUyZWVj
NjMyY2U5YzZlOWQ1NTcyMWY5NzZkLi5mZjFmN2M3ODg2YzA4YTgzN2FmNDNkMzkzMzBmZGUzMjNm
ZTljZDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJh
dGlvblJlY29yZGVyLmNwcApAQCAtNTYwLDYgKzU2MCwxMSBAQCB2b2lkIENhaXJvT3BlcmF0aW9u
UmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYgbmF0aXZlSW1hZ2UsIGNvbnN0
IEZsbwogICAgIGFwcGVuZChjcmVhdGVDb21tYW5kPERyYXdOYXRpdmVJbWFnZT4obmF0aXZlSW1h
Z2UucGxhdGZvcm1JbWFnZSgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgSW1hZ2VQYWludGluZ09wdGlv
bnMob3B0aW9ucywgc3RhdGUuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSksIHN0YXRlLmFscGhh
LCBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpKSk7CiB9CiAKK3ZvaWQgQ2Fpcm9PcGVyYXRpb25S
ZWNvcmRlcjo6ZHJhd05hdGl2ZVBERkRvY3VtZW50KE5hdGl2ZVBERkRvY3VtZW50JiwgY29uc3Qg
RmxvYXRTaXplJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmKQoreworICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuCit9
CisKIHZvaWQgQ2Fpcm9PcGVyYXRpb25SZWNvcmRlcjo6ZHJhd1BhdHRlcm4oTmF0aXZlSW1hZ2Um
IG5hdGl2ZUltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxv
YXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsK
ICAgICBzdHJ1Y3QgRHJhd1BhdHRlcm4gZmluYWwgOiBQYWludGluZ09wZXJhdGlvbiwgT3BlcmF0
aW9uRGF0YTxSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiwgSW50U2l6ZSwgRmxvYXRSZWN0LCBGbG9h
dFJlY3QsIEFmZmluZVRyYW5zZm9ybSwgRmxvYXRQb2ludCwgSW1hZ2VQYWludGluZ09wdGlvbnM+
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
Y2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3Jk
ZXIuaAppbmRleCA4MGEyNmZkOThlODQ0NzE2N2IxNzYxYWY4OTMwNzExNmIxMTAyY2FjLi4zYTdj
OTdiYzA1ZGZhZGU4ZmEzZDcyODA2NzQ4NzNjY2Y2ZDM0YTNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJh
dGlvblJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmlj
b3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCkBAIC02Niw2ICs2Niw3
IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1
ZmZlciYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IFdlYkNv
cmU6OkZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9u
cyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKFdlYkNvcmU6Ok5hdGl2ZUlt
YWdlJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0
JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGlu
Z09wdGlvbnMmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdOYXRpdmVQREZEb2N1bWVudChXZWJD
b3JlOjpOYXRpdmVQREZEb2N1bWVudCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIGNvbnN0
IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdl
YkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3UGF0
dGVybihXZWJDb3JlOjpOYXRpdmVJbWFnZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIGNv
bnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0
IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCBj
b25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0
aW9ucyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkcmF3UmVjdChjb25zdCBXZWJDb3JlOjpGbG9h
dFJlY3QmLCBmbG9hdCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0
MkQuY3BwCmluZGV4IDBjNGYzYTQ5NzM2OWIwNDBlNWZlZmVjMTcyMWQwYzdlNmVjZjhjOTEuLmUz
MmU5Y2JkMWJlZjc5ZjQ0OGM2ZjQ1ZGJhZjRlZDFiYTExNmM5MTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0
MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGlj
c0NvbnRleHRJbXBsRGlyZWN0MkQuY3BwCkBAIC0yNzQsNiArMjc0LDExIEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0SW1wbERpcmVjdDJEOjpkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmIGltYWdl
LCBjb25zdCBGbG9hCiAgICAgRGlyZWN0MkQ6OmRyYXdOYXRpdmVJbWFnZShtX3BsYXRmb3JtQ29u
dGV4dCwgaW1hZ2UucGxhdGZvcm1JbWFnZSgpLmdldCgpLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBz
cmNSZWN0LCBvcHRpb25zLCBzdGF0ZS5hbHBoYSwgRGlyZWN0MkQ6OlNoYWRvd1N0YXRlKHN0YXRl
KSk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpkcmF3TmF0aXZlUERG
RG9jdW1lbnQoTmF0aXZlUERGRG9jdW1lbnQmLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBGbG9h
dFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsRGly
ZWN0MkQ6OmRyYXdQYXR0ZXJuKChOYXRpdmVJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYg
aW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRp
bGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZs
b2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAoYXV0byBzdXJmYWNlID0gaW1hZ2UucGxhdGZvcm1J
bWFnZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5oCmluZGV4IDkyY2UzZjA5
YmI4NmYwOGFjZDVjMjZhYjU4NjA3ZGEyMjhmN2U3OGQuLmNmNjkxYmUxNWFiYTVjNjgzNjc3OGE1
YWIzZjA3MzBkMjg1N2EzYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmgK
QEAgLTcwLDYgKzcwLDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBkcmF3SW1hZ2VCdWZmZXIoSW1h
Z2VCdWZmZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3Qm
IHNvdXJjZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICBib29s
IGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXpl
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3TmF0aXZl
UERGRG9jdW1lbnQoTmF0aXZlUERGRG9jdW1lbnQmLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6
ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd1BhdHRl
cm4oKE5hdGl2ZUltYWdlJiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZs
b2F0UG9pbnQmLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYp
IG92ZXJyaWRlOwogCiAgICAgdm9pZCBkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCkg
b3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1h
Z2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAppbmRleCBj
MGJkODI3ZmM0NDQ2ZWU3OTcyMGEwZWVmMzZmNDNhOTQ4ZjhkYzYwLi5kMjEwMzA4MmJiMzlkN2E4
MzQ2ZmJlNjZkYjQ2MGI1ZDU0MzIzYjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJbWFnZS5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNp
bmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiSW5saW5lRWxlbWVudEJveC5oIgor
I2luY2x1ZGUgIlBERkRvY3VtZW50SW1hZ2UuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVk
ZSAiUGFpbnRJbmZvLmgiCiAjaW5jbHVkZSAiUmVuZGVyRnJhZ21lbnRlZEZsb3cuaCIKQEAgLTY0
LDcgKzY1LDYgQEAKICNlbmRpZgogCiAjaWYgVVNFKENHKQotI2luY2x1ZGUgIlBERkRvY3VtZW50
SW1hZ2UuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2VuZGlmCiAKQEAgLTY2Miw3ICs2NjIs
NyBAQCBJbWFnZURyYXdSZXN1bHQgUmVuZGVySW1hZ2U6OnBhaW50SW50b1JlY3QoUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IEZsb2F0UmVjdAogICAgIC8vIEZJWE1FOiBEb2N1bWVudCB3aGVu
IGltYWdlICE9IGltZy5nZXQoKS4KICAgICBJbWFnZSogaW1hZ2UgPSBpbWFnZVJlc291cmNlKCku
aW1hZ2UoKS5nZXQoKTsKIAotI2lmIFVTRShDRykKKyNpZiBFTkFCTEUoUERGRE9DVU1FTlRJTUFH
RSkKICAgICBpZiAoaXM8UERGRG9jdW1lbnRJbWFnZT4oaW1hZ2UpKQogICAgICAgICBkb3duY2Fz
dDxQREZEb2N1bWVudEltYWdlPigqaW1hZ2UpLnNldFBkZkltYWdlQ2FjaGluZ1BvbGljeShzZXR0
aW5ncygpLnBkZkltYWdlQ2FjaGluZ1BvbGljeSgpKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwCmluZGV4IGUzZGZlNzk1MTZjMzU5YWQ4NDA3N2JmNWZlODUyZmI5MWY3
ZTNlZDAuLmQxYmRjZTUzZDU4M2IzOWE1Y2YyYjNlMzE0OGY3ZjE3OWM4M2RmMmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTE0Miw2ICsxNDIsNyBAQAogI2luY2x1ZGUg
Ik5hdmlnYXRvckJlYWNvbi5oIgogI2luY2x1ZGUgIk5hdmlnYXRvck1lZGlhRGV2aWNlcy5oIgog
I2luY2x1ZGUgIk5ldHdvcmtMb2FkSW5mb3JtYXRpb24uaCIKKyNpbmNsdWRlICJQREZEb2N1bWVu
dEltYWdlLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhZ2VPdmVybGF5LmgiCiAj
aW5jbHVkZSAiUGF0aFV0aWxpdGllcy5oIgpAQCAtMjI2LDEwICsyMjcsNiBAQAogI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25j
YXRlbmF0ZU51bWJlcnMuaD4KIAotI2lmIFVTRShDRykKLSNpbmNsdWRlICJQREZEb2N1bWVudElt
YWdlLmgiCi0jZW5kaWYKLQogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQogI2luY2x1ZGUg
IkNvbG9yQ2hvb3Nlci5oIgogI2VuZGlmCkBAIC05MDcsNyArOTA0LDcgQEAgc3RhdGljIEJpdG1h
cEltYWdlKiBiaXRtYXBJbWFnZUZyb21JbWFnZUVsZW1lbnQoSFRNTEltYWdlRWxlbWVudCYgZWxl
bWVudCkKICAgICByZXR1cm4gaW1hZ2UgJiYgaXM8Qml0bWFwSW1hZ2U+KGltYWdlKSA/ICZkb3du
Y2FzdDxCaXRtYXBJbWFnZT4oKmltYWdlKSA6IG51bGxwdHI7CiB9CiAKLSNpZiBVU0UoQ0cpCisj
aWYgRU5BQkxFKFBERkRPQ1VNRU5USU1BR0UpCiBzdGF0aWMgUERGRG9jdW1lbnRJbWFnZSogcGRm
RG9jdW1lbnRJbWFnZUZyb21JbWFnZUVsZW1lbnQoSFRNTEltYWdlRWxlbWVudCYgZWxlbWVudCkK
IHsKICAgICBhdXRvKiBpbWFnZSA9IGltYWdlRnJvbUltYWdlRWxlbWVudChlbGVtZW50KTsKQEAg
LTk3MCw3ICs5NjcsNyBAQCB1bnNpZ25lZCBJbnRlcm5hbHM6OmltYWdlRGVjb2RlQ291bnQoSFRN
TEltYWdlRWxlbWVudCYgZWxlbWVudCkKIAogdW5zaWduZWQgSW50ZXJuYWxzOjpwZGZEb2N1bWVu
dENhY2hpbmdDb3VudChIVE1MSW1hZ2VFbGVtZW50JiBlbGVtZW50KQogewotI2lmIFVTRShDRykK
KyNpZiBFTkFCTEUoUERGRE9DVU1FTlRJTUFHRSkKICAgICBhdXRvKiBwZGZEb2N1bWVudEltYWdl
ID0gcGRmRG9jdW1lbnRJbWFnZUZyb21JbWFnZUVsZW1lbnQoZWxlbWVudCk7CiAgICAgcmV0dXJu
IHBkZkRvY3VtZW50SW1hZ2UgPyBwZGZEb2N1bWVudEltYWdlLT5jYWNoaW5nQ291bnRGb3JUZXN0
aW5nKCkgOiAwOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyLmgKaW5kZXggNWM3NTQ1YmZlNjY5MjYyMGQwMTNmZGM4
ODZkNzVlZjM5YzgxYWZkZC4uZjk1NzgzOGJiYzJhNzczNzEyZjMyYTYwZWFhMmY3MDdiMTk1MTQx
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZUlt
YWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZUltYWdlQnVmZmVyLmgKQEAgLTcyLDcgKzcyLDggQEAgcHVibGljOgogCiAgICAgICAgIGNvbnN0
IGF1dG8mIGltYWdlQnVmZmVycyA9IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5yZW1vdGVSZXNv
dXJjZUNhY2hlKCkuaW1hZ2VCdWZmZXJzKCk7CiAgICAgICAgIGNvbnN0IGF1dG8mIG5hdGl2ZUlt
YWdlcyA9IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5yZW1vdGVSZXNvdXJjZUNhY2hlKCkubmF0
aXZlSW1hZ2VzKCk7Ci0gICAgICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllciByZXBs
YXllciB7IEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjpjb250ZXh0KCksIGRpc3BsYXlMaXN0LCAm
aW1hZ2VCdWZmZXJzLCAmbmF0aXZlSW1hZ2VzLCB0aGlzIH07CisgICAgICAgIGNvbnN0IGF1dG8m
IG5hdGl2ZVBERkRvY3VtZW50cyA9IG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZC5yZW1vdGVSZXNv
dXJjZUNhY2hlKCkubmF0aXZlUERGRG9jdW1lbnRzKCk7CisgICAgICAgIFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpSZXBsYXllciByZXBsYXllciB7IEJhc2VDb25jcmV0ZUltYWdlQnVmZmVyOjpjb250
ZXh0KCksIGRpc3BsYXlMaXN0LCAmaW1hZ2VCdWZmZXJzLCAmbmF0aXZlSW1hZ2VzLCAmbmF0aXZl
UERGRG9jdW1lbnRzLCB0aGlzIH07CiAgICAgICAgIHJldHVybiByZXBsYXllci5yZXBsYXkoKTsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAppbmRleCBmNTljMzg3MjRmOGY2MmVlNzgw
MmI5MjAyMzdmNjg4NDczZDdmYmY5Li4yNjJhYWM2OGU1NmJmNmIyYWY2ZGM0MmJlZmY1MDA1MTBk
ZjQzMDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCkBAIC0yMjgsNiArMjI4LDE1IEBAIHZv
aWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y2FjaGVOYXRpdmVJbWFnZShSZWY8TmF0aXZlSW1h
Z2U+JiYgaW1hZ2UpCiAgICAgbV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNhY2hlTmF0aXZlSW1hZ2Uo
V1RGTW92ZShpbWFnZSkpOwogfQogCit2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmNhY2hl
TmF0aXZlUERGRG9jdW1lbnQoSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiYgZGF0YSwgUmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKK3sKKyAgICBp
ZiAoIWRhdGEuYnVmZmVyKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChhdXRvIHBkZkRv
Y3VtZW50ID0gTmF0aXZlUERGRG9jdW1lbnQ6OmNyZWF0ZShkYXRhLmJ1ZmZlcigpLnJlbGVhc2VO
b25OdWxsKCksIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikpCisgICAgICAgIG1fcmVtb3Rl
UmVzb3VyY2VDYWNoZS5jYWNoZU5hdGl2ZVBERkRvY3VtZW50KG1ha2VSZWYoKnBkZkRvY3VtZW50
KSk7Cit9CisKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6cmVsZWFzZVJlbW90ZVJlc291
cmNlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIpCiB7CiAgICAgbV9yZW1vdGVSZXNvdXJjZUNhY2hlLnJlbGVhc2VSZW1vdGVSZXNvdXJjZShy
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwpAQCAtMzA1LDYgKzMxNCw3IEBAIE9wdGlvbmFs
PERpc3BsYXlMaXN0OjpJdGVtSGFuZGxlPiBXQVJOX1VOVVNFRF9SRVRVUk4gUmVtb3RlUmVuZGVy
aW5nQmFja2VuZDo6ZGVjCiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdFbGxp
cHNlOgogICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6CiAg
ICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKKyAgICBjYXNl
IERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd05hdGl2ZVBERkRvY3VtZW50OgogICAgIGNhc2Ug
RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3UGF0dGVybjoKICAgICBjYXNlIERpc3BsYXlMaXN0
OjpJdGVtVHlwZTo6RHJhd0xpbmU6CiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRy
YXdSZWN0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZVJlbmRlcmluZ0JhY2tlbmQuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgKaW5kZXggNjQwNjY2OGZhZTA1MDU3ZTlkZjMyNjRm
NTc1MjQ5NDg5ZDcwNWM3OC4uMGYxMzllNmRkZWExNzFmOTVmNzM1YWY3YjQ0NzY5YTZkZGNlNWFj
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3Mv
UmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiTWVz
c2FnZVNlbmRlci5oIgogI2luY2x1ZGUgIlJlbW90ZVJlc291cmNlQ2FjaGUuaCIKICNpbmNsdWRl
ICJSZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckNv
cHkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yU3BhY2UuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0Rpc3BsYXlMaXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdEl0ZW1zLmg+CkBA
IC0xMDcsNiArMTA4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHdha2VVcEFuZEFwcGx5RGlzcGxh
eUxpc3QoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyIGluaXRpYWxJ
ZGVudGlmaWVyLCB1aW50NjRfdCBpbml0aWFsT2Zmc2V0LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIgZGVzdGluYXRpb25CdWZmZXJJZGVudGlmaWVyKTsKICAgICB2b2lkIGdl
dEltYWdlRGF0YShXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZvcm1hdCwg
V2ViQ29yZTo6SW50UmVjdCBzcmNSZWN0LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpJbWFnZURhdGFSZWZlcmVuY2UmJik+
JiYpOwogICAgIHZvaWQgY2FjaGVOYXRpdmVJbWFnZShSZWY8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+
JiYpOworICAgIHZvaWQgY2FjaGVOYXRpdmVQREZEb2N1bWVudChJUEM6OlNoYXJlZEJ1ZmZlckNv
cHkmJiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB2b2lkIHJl
bGVhc2VSZW1vdGVSZXNvdXJjZShXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
OwogICAgIHZvaWQgZGlkQ3JlYXRlU2hhcmVkRGlzcGxheUxpc3RIYW5kbGUoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyLCBjb25zdCBTaGFyZWRNZW1vcnk6OklQQ0hh
bmRsZSYsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbkJ1
ZmZlcklkZW50aWZpZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmlu
CmluZGV4IDhlMjdlMDRmNzczODFhNmZiOTk1NzM0MmEyOWMyMTQ2MDcyZWVjZjguLjNhNTAxZjYx
MTJlMzdjNzZhMWVkYTkyOTk3NDJhYjQyNjY4NjRhOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLm1lc3NhZ2VzLmluCkBAIC0yNyw2ICsyNyw3IEBAIG1lc3NhZ2VzIC0+IFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQgTm90UmVmQ291bnRlZCB7CiAgICAgV2FrZVVwQW5kQXBwbHlEaXNwbGF5
TGlzdChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUJ1ZmZlcklkZW50aWZpZXIgaW5pdGlhbElk
ZW50aWZpZXIsIHVpbnQ2NF90IGluaXRpYWxPZmZzZXQsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllciBkZXN0aW5hdGlvbkJ1ZmZlcklkZW50aWZpZXIpCiAgICAgR2V0SW1hZ2VE
YXRhKGVudW06dWludDhfdCBXZWJDb3JlOjpBbHBoYVByZW11bHRpcGxpY2F0aW9uIG91dHB1dEZv
cm1hdCwgV2ViQ29yZTo6SW50UmVjdCBzcmNSZWN0LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSAtPiAoSVBDOjpJbWFnZURh
dGFSZWZlcmVuY2UgaW1hZ2VEYXRhKSBTeW5jaHJvbm91cwogICAgIENhY2hlTmF0aXZlSW1hZ2Uo
V2ViQ29yZTo6TmF0aXZlSW1hZ2VSZWZlcmVuY2UgbmF0aXZlSW1hZ2UpCisgICAgQ2FjaGVOYXRp
dmVQREZEb2N1bWVudChJUEM6OlNoYXJlZEJ1ZmZlckNvcHkgZGF0YSwgV2ViQ29yZTo6UmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKICAgICBE
aWRDcmVhdGVTaGFyZWREaXNwbGF5TGlzdEhhbmRsZShXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRl
bUJ1ZmZlcklkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hh
bmRsZSBoYW5kbGUsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBkZXN0aW5h
dGlvbkJ1ZmZlcklkZW50aWZpZXIpCiAgICAgUmVsZWFzZVJlbW90ZVJlc291cmNlKFdlYkNvcmU6
OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVzb3VyY2VDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVt
b3RlUmVzb3VyY2VDYWNoZS5jcHAKaW5kZXggYzMzMmQyZjcwNGUxNTg0ZDZjMGU1Y2ZiZGI3ZWQ1
NmRjNGIyYzM2OS4uOTI3NTUyNWM3ZTllYmY5Zjk5YzJjZTFlNTgxNzgwNGNiMDM0MDBiNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNl
Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZXNvdXJjZUNhY2hlLmNwcApAQCAtNDgsMTIgKzQ4LDIwIEBAIHZvaWQgUmVtb3RlUmVzb3VyY2VD
YWNoZTo6Y2FjaGVOYXRpdmVJbWFnZShSZWY8TmF0aXZlSW1hZ2U+JiYgaW1hZ2UpCiAgICAgQVNT
RVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKIH0KIAordm9pZCBS
ZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZU5hdGl2ZVBERkRvY3VtZW50KFJlZjxOYXRpdmVQREZE
b2N1bWVudD4mJiBwZGZEb2N1bWVudCkKK3sKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fbmF0aXZl
UERGRG9jdW1lbnRzLmFkZChwZGZEb2N1bWVudC0+cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KCksIFdURk1vdmUocGRmRG9jdW1lbnQpKTsKKyAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwg
YWRkUmVzdWx0LmlzTmV3RW50cnkpOworfQorCiB2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGU6OnJl
bGVhc2VSZW1vdGVSZXNvdXJjZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyKQogewogICAgIGlmIChtX2ltYWdlQnVmZmVycy5yZW1vdmUocmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmIChtX25h
dGl2ZUltYWdlcy5yZW1vdmUocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSkKICAgICAgICAg
cmV0dXJuOworICAgIGlmIChtX25hdGl2ZVBERkRvY3VtZW50cy5yZW1vdmUocmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuOwogICAgIC8vIENhY2hpbmcgdGhlIHJl
bW90ZSByZXNvdXJjZSBzaG91bGQgaGF2ZSBoYXBwZW5lZCBiZWZvcmUgcmVsZWFzaW5nIGl0Lgog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaCBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmgKaW5kZXggMWYyMTA1OGUz
M2ExODc1YmJkN2Y3MmMwMTIzYzY1MDNlYzc5OWIwYi4uZjhlMWYwNGE1ZmJmMjFmMzhkMGFjMGU5
OWUyYmMyNWY4NDFkMzVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNp
bmNsdWRlIDxXZWJDb3JlL0ltYWdlQnVmZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9OYXRpdmVJ
bWFnZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTmF0aXZlUERGRG9jdW1lbnQuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CiAKQEAgLTQzLDE0ICs0NCwxNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjYWNoZUlt
YWdlQnVmZmVyKFJlZjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4mJik7CiAgICAgV2ViQ29yZTo6SW1h
Z2VCdWZmZXIqIGNhY2hlZEltYWdlQnVmZmVyKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcik7CiAgICAgdm9pZCBjYWNoZU5hdGl2ZUltYWdlKFJlZjxXZWJDb3JlOjpOYXRpdmVJ
bWFnZT4mJik7CisgICAgdm9pZCBjYWNoZU5hdGl2ZVBERkRvY3VtZW50KFJlZjxXZWJDb3JlOjpO
YXRpdmVQREZEb2N1bWVudD4mJik7CiAgICAgdm9pZCByZWxlYXNlUmVtb3RlUmVzb3VyY2UoV2Vi
Q29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICAKICAgICBjb25zdCBXZWJD
b3JlOjpJbWFnZUJ1ZmZlckhhc2hNYXAmIGltYWdlQnVmZmVycygpIGNvbnN0IHsgcmV0dXJuIG1f
aW1hZ2VCdWZmZXJzOyB9CiAgICAgY29uc3QgV2ViQ29yZTo6TmF0aXZlSW1hZ2VIYXNoTWFwJiBu
YXRpdmVJbWFnZXMoKSBjb25zdCB7IHJldHVybiBtX25hdGl2ZUltYWdlczsgfQorICAgIGNvbnN0
IFdlYkNvcmU6Ok5hdGl2ZVBERkRvY3VtZW50SGFzaE1hcCYgbmF0aXZlUERGRG9jdW1lbnRzKCkg
Y29uc3QgeyByZXR1cm4gbV9uYXRpdmVQREZEb2N1bWVudHM7IH0KIAogcHJpdmF0ZToKICAgICBX
ZWJDb3JlOjpJbWFnZUJ1ZmZlckhhc2hNYXAgbV9pbWFnZUJ1ZmZlcnM7CiAgICAgV2ViQ29yZTo6
TmF0aXZlSW1hZ2VIYXNoTWFwIG1fbmF0aXZlSW1hZ2VzOworICAgIFdlYkNvcmU6Ok5hdGl2ZVBE
RkRvY3VtZW50SGFzaE1hcCBtX25hdGl2ZVBERkRvY3VtZW50czsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFw
aGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAppbmRleCAzMWNkMDJkMWIwZjIx
ZWRlNTgyMmJmOTQ1YmFkNDZlZGVmMWViMzdhLi41MDg0ZWU0ZTg5ZDM3ZDNhMTNjZDJiYTUwZTk1
NGZkYmFjYWJlZTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaApAQCAtMjMxLDYgKzIz
MSwxMiBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eS0+cmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5KCkuY2FjaGVOYXRpdmVJbWFnZShpbWFnZSk7
CiAgICAgfQogCisgICAgdm9pZCBjYWNoZU5hdGl2ZVBERkRvY3VtZW50KFdlYkNvcmU6Ok5hdGl2
ZVBERkRvY3VtZW50JiBwZGZEb2N1bWVudCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmICht
X3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKKyAgICAgICAgICAgIG1fcmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5LT5yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkoKS5jYWNoZU5hdGl2ZVBE
RkRvY3VtZW50KHBkZkRvY3VtZW50KTsKKyAgICB9CisKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6SXRlbUJ1ZmZlckhhbmRsZSBjcmVhdGVJdGVtQnVmZmVyKHNpemVfdCBjYXBhY2l0eSkgb3Zl
cnJpZGUKICAgICB7CiAgICAgICAgIGlmIChtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkK
QEAgLTI5NSw2ICszMDEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6RGlz
cGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3RWxsaXBzZToKICAgICAgICAgY2FzZSBXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjoKICAgICAgICAgY2FzZSBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKKyAgICAgICAgY2Fz
ZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdOYXRpdmVQREZEb2N1bWVudDoK
ICAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdQYXR0ZXJu
OgogICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0xpbmU6
CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3UmVjdDoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAppbmRleCBlNTJjYTQwNzM1
ZTk3OWUzODdkODNkMTRkMjdjNDk2NjE3OGVjZmM3Li5mOGE4MmJkMjhiOWZlMGM1NTExMjlhMmMy
N2Y1OGZjYTJiZmZjM2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHku
Y3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1SZW1vdGVJbWFnZUJ1ZmZl
clByb3h5LmgiCiAjaW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZE1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRl
ICJTaGFyZWRCdWZmZXJDb3B5LmgiCiAjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCiAjaW5jbHVk
ZSAiV2ViUHJvY2Vzcy5oIgogCkBAIC0xNzgsNiArMTc5LDExIEBAIHZvaWQgUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5OjpjYWNoZU5hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiBpbWFnZSkKICAg
ICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpDYWNoZU5hdGl2ZUltYWdl
KG1ha2VSZWYoaW1hZ2UpKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CiB9CiAKK3Zv
aWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpjYWNoZU5hdGl2ZVBERkRvY3VtZW50KE5h
dGl2ZVBERkRvY3VtZW50JiBwZGZEb2N1bWVudCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kOjpDYWNoZU5hdGl2ZVBERkRvY3VtZW50KHBkZkRvY3VtZW50LmRh
dGEoKSwgcGRmRG9jdW1lbnQucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkpLCBtX3JlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKK30KKwogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHk6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogewogICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90
ZVJlbmRlcmluZ0JhY2tlbmQ6OlJlbGVhc2VSZW1vdGVSZXNvdXJjZShyZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIpLCBtX3JlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oCmluZGV4IDk1ZjhkMmI0MTJmYjkxZGY3N2M2OGYxMzZi
MDA3ODZmMDI0ZDdlMjYuLjJhN2M3NGQ5ZjkwYjVlMzgwN2M1N2YwN2QwYWY4OTdkZWFlZGJjNzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaApAQCAtNzksNiArNzksNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzdWJtaXREaXNwbGF5TGlzdChjb25zdCBXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RGlzcGxheUxpc3QmLCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIgZGVzdGluYXRpb25CdWZmZXJJZGVudGlmaWVyKTsKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6Rmx1c2hJZGVudGlmaWVyIGZsdXNoRGlzcGxheUxpc3RBbmRDb21taXQoY29uc3QgV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0JiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKTsKICAgICB2b2lkIGNhY2hlTmF0aXZlSW1hZ2UoV2ViQ29yZTo6TmF0aXZlSW1h
Z2UmKTsKKyAgICB2b2lkIGNhY2hlTmF0aXZlUERGRG9jdW1lbnQoV2ViQ29yZTo6TmF0aXZlUERG
RG9jdW1lbnQmKTsKICAgICB2b2lkIHJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJDb3JlOjpSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogCiAgICAgYm9vbCB3YWl0Rm9ySW1hZ2VCdWZmZXJC
YWNrZW5kV2FzQ3JlYXRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwCmlu
ZGV4IDkwNGFhZWFkOGNjNzFlODhmNjQyYjRiNTM2ZTY5YWUxZTg5Mzk4OWMuLjI2NDQxY2M4YzY3
NTdiYjk0MTgyZjA4ZDRlMDUxNjE0ZDNlNGVjNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2Fj
aGVQcm94eS5jcHAKQEAgLTc3LDYgKzc3LDMwIEBAIHZvaWQgUmVtb3RlUmVzb3VyY2VDYWNoZVBy
b3h5OjpyZWxlYXNlTmF0aXZlSW1hZ2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlCiAg
ICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkucmVsZWFzZVJlbW90ZVJlc291cmNlKHJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiB9CiAKK3ZvaWQgUmVtb3RlUmVzb3VyY2VDYWNo
ZVByb3h5OjpjYWNoZU5hdGl2ZVBERkRvY3VtZW50KE5hdGl2ZVBERkRvY3VtZW50JiBwZGZEb2N1
bWVudCkKK3sKKyAgICBpZiAobV9zaGFyZWRQREZEb2N1bWVudHMuY29udGFpbnMocGRmRG9jdW1l
bnQucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkpKQorICAgICAgICByZXR1cm47CisgICAg
CisgICAgbV9zaGFyZWRQREZEb2N1bWVudHMuYWRkKHBkZkRvY3VtZW50LnJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcigpKTsKKworICAgIC8vIFNldCBpdHNlbGYgYXMgYW4gb2JzZXJ2ZXIgdG8g
TmF0aXZlSW1hZ2UsIHNvIHJlbGVhc2VOYXRpdmVQREZEb2N1bWVudCgpCisgICAgLy8gZ2V0cyBj
YWxsZWQgd2hlbiBOYXRpdmVQREZEb2N1bWVudCBpcyBiZWluZyBkZWxlbGV0ZWQuCisgICAgcGRm
RG9jdW1lbnQuc2V0T2JzZXJ2ZXIodGhpcyk7CisKKyAgICAvLyBUZWxsIHRoZSBHUFUgcHJvY2Vz
cyB0byBjYWNoZSB0aGlzIHJlc291cmNlLgorICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5LmNhY2hlTmF0aXZlUERGRG9jdW1lbnQocGRmRG9jdW1lbnQpOworfQorCit2b2lkIFJlbW90
ZVJlc291cmNlQ2FjaGVQcm94eTo6cmVsZWFzZU5hdGl2ZVBERkRvY3VtZW50KFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCit7CisgICAgaWYg
KCFtX3NoYXJlZFBERkRvY3VtZW50cy5yZW1vdmUocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gVGVsbCB0aGUgR1BVIHByb2Nlc3MgdG8gcmVt
b3ZlIHRoaXMgcmVzb3VyY2UuCisgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkucmVs
ZWFzZVJlbW90ZVJlc291cmNlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNv
dXJjZUNhY2hlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmgKaW5kZXggMDZkZDRmNjhiOTNhOWU5N2ZhNTQ5YzAz
ZGZjNDlkYjkzODg4YmJmYi4uMTdiZGZiMzQ4YTRkZmE3ZDM5OWFhMDJlODUxZGI2ZjM0MDUwOGZm
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVSZXNvdXJjZUNhY2hlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5oCkBAIC0yOCw2ICsyOCw3IEBACiAj
aWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCiAjaW5jbHVkZSA8V2ViQ29yZS9OYXRpdmVJbWFnZS5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvTmF0aXZlUERGRG9jdW1lbnQuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CiAKQEAgLTM5LDcgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFJlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTsKIAotY2xhc3MgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5
IDogcHVibGljIFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpPYnNlcnZlciB7CitjbGFzcyBSZW1vdGVS
ZXNvdXJjZUNhY2hlUHJveHkgOiBwdWJsaWMgV2ViQ29yZTo6TmF0aXZlSW1hZ2U6Ok9ic2VydmVy
LCBwdWJsaWMgV2ViQ29yZTo6TmF0aXZlUERGRG9jdW1lbnQ6Ok9ic2VydmVyIHsKIHB1YmxpYzoK
ICAgICBSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkoUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
Jik7CiAKQEAgLTQ4LDE3ICs0OSwyMSBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWxlYXNlSW1hZ2VC
dWZmZXIoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKIAogICAgIHZvaWQg
Y2FjaGVOYXRpdmVJbWFnZShXZWJDb3JlOjpOYXRpdmVJbWFnZSYpOworICAgIHZvaWQgY2FjaGVO
YXRpdmVQREZEb2N1bWVudChXZWJDb3JlOjpOYXRpdmVQREZEb2N1bWVudCYpOwogCiAgICAgdXNp
bmcgSW1hZ2VCdWZmZXJIYXNoTWFwID0gSGFzaE1hcDxXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIsIFdlYWtQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+PjsKICAgICBjb25zdCBJ
bWFnZUJ1ZmZlckhhc2hNYXAmIGltYWdlQnVmZmVycygpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VC
dWZmZXJzOyB9CiAKIHByaXZhdGU6CiAgICAgdXNpbmcgTmF0aXZlSW1hZ2VIYXNoTWFwID0gSGFz
aE1hcDxXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFdlYWtQdHI8V2ViQ29y
ZTo6TmF0aXZlSW1hZ2U+PjsKKyAgICB1c2luZyBTaGFyZWRQREZEb2N1bWVudEhhc2hTZXQgPSBI
YXNoU2V0PFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj47CiAgICAgCiAgICAg
dm9pZCByZWxlYXNlTmF0aXZlSW1hZ2UoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlbGVhc2VOYXRpdmVQREZEb2N1bWVudChXZWJDb3Jl
OjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpIG92ZXJyaWRlOwogCiAgICAgSW1hZ2VCdWZm
ZXJIYXNoTWFwIG1faW1hZ2VCdWZmZXJzOwogICAgIE5hdGl2ZUltYWdlSGFzaE1hcCBtX25hdGl2
ZUltYWdlczsKKyAgICBTaGFyZWRQREZEb2N1bWVudEhhc2hTZXQgbV9zaGFyZWRQREZEb2N1bWVu
dHM7CiAgICAgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiBtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lu
cy9QREYvUERGUGx1Z2luLm1tCmluZGV4IDljYjNhYWVkNzc1ZjliNmZkOTNhYzI2OTVlYjg4ZmUz
Y2RkZjY3Y2EuLjQ0YjUwNmIyODE5MzI2OGY4ODczZWM0MjYwM2Q1YTVmOGFhZjhlNjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0K
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQpA
QCAtNzYsNyArNzYsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9Mb2NhbERlZmF1bHRTeXN0ZW1BcHBl
YXJhbmNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3MuaD4KICNpbXBvcnQg
PFdlYkNvcmUvTW91c2VFdmVudC5oPgotI2ltcG9ydCA8V2ViQ29yZS9QREZEb2N1bWVudEltYWdl
Lmg+CisjaW1wb3J0IDxXZWJDb3JlL05hdGl2ZVBERkRvY3VtZW50Lmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1BhZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGFzdGVib2FyZC5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9QbGF0Zm9ybVNjcmVlbi5oPgpAQCAtMTU3Miw3ICsxNTcyLDcgQEAgdm9pZCBQREZQbHVn
aW46OmNvbnZlcnRQb3N0U2NyaXB0RGF0YUlmTmVlZGVkKCkKICAgICBpZiAoIW1faXNQb3N0U2Ny
aXB0KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2RhdGEgPSBQREZEb2N1bWVudEltYWdlOjpj
b252ZXJ0UG9zdFNjcmlwdERhdGFUb1BERihXVEZNb3ZlKG1fZGF0YSkpOworICAgIG1fZGF0YSA9
IE5hdGl2ZVBERkRvY3VtZW50Ojpjb252ZXJ0UG9zdFNjcmlwdERhdGFUb1BERihXVEZNb3ZlKG1f
ZGF0YSkpOwogfQogCiB2b2lkIFBERlBsdWdpbjo6ZG9jdW1lbnREYXRhRGlkRmluaXNoTG9hZGlu
ZygpCg==
</data>
<flag name="commit-queue"
          id="431609"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414656</attachid>
            <date>2020-11-20 00:26:58 -0800</date>
            <delta_ts>2020-11-30 02:08:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218871-20201120002658.patch</filename>
            <type>text/plain</type>
            <size>139238</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMDY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGI4NTcwMTA2OWNiM2M0NTVmM2NkYjMz
ZGIxY2NlZWQ0MmJlODMyNTUuLmE0OTRjYzRkMjI0NmE1MTIzNWI2OGQ3M2JmZjFlOTFhMjM4ZTcz
NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjAtMTEtMjAgIFNhaWQgQWJvdS1IYWxsYXdhICA8
c2FpZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBTdXBwb3J0IHJlbmRlcmlu
ZyBQREZEb2N1bWVudEltYWdlIGluIEdQVSBQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg4NzEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybUVuYWJsZS5oOgorCiAyMDIw
LTExLTE5ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBv
c190aHJlYWRfc2VsZl9yZXN0cmljdF9yd3hfaXNfc3VwcG9ydGVkIGluc3RlYWQgb2YgcHRocmVh
ZF9qaXRfd3JpdGVfcHJvdGVjdF9zdXBwb3J0ZWRfbnAgb24gQXBwbGUgSW50ZXJuYWwgU0RLIGJ1
aWxkcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IGQxNDEwNTAxMzEzYTUyODk4ZDAwOGI1OGY2NTkxOGVjYTdiZTBk
YjYuLmUyZjk2N2QxMmJhZTljNWE1YzI1ZTBkODk2OGVkMGMyYThmNzVhODcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMzQgQEAKKzIwMjAtMTEtMjAgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBh
cHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBTdXBwb3J0IHJlbmRlcmluZyBQREZE
b2N1bWVudEltYWdlIGluIEdQVSBQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg4NzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogUGxhdGZvcm1B
cHBsZVdpbi5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiBT
b3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERh
dGFJZk5lZWRlZCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vU291cmNlc0NhaXJvLnR4dDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlUERGRG9jdW1lbnQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlUERGRG9jdW1lbnQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZTo6Y3JlYXRl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVQREZEb2N1bWVudC5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlUERGRG9jdW1lbnQ6Ok5hdGl2ZVBERkRvY3Vt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZVBERkRvY3VtZW50Ojp+TmF0aXZlUERGRG9j
dW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlUERGRG9jdW1lbnQ6OnNpemUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6dHJhbnNmb3JtQ29udGV4dEZvclBhaW50aW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5hdGl2ZVBERkRvY3VtZW50Ojp1cGRhdGVTbmFwc2hvdElmTmVlZGVkKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZVBERkRvY3VtZW50OjpkcmF3KToKKyAgICAgICAgKFdl
YkNvcmU6Ok5hdGl2ZVBERkRvY3VtZW50OjpkdW1wIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok5hdGl2ZVBERkRvY3VtZW50OjpTbmFwc2hvdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5hdGl2ZVBERkRvY3VtZW50OjpTbmFwc2hvdDo6U25hcHNob3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TmF0aXZlUERGRG9jdW1lbnQ6OlNuYXBzaG90Ojp+U25hcHNob3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TmF0aXZlUERGRG9jdW1lbnQ6OlNuYXBzaG90OjpjYWxjdWxhdGVTbmFwc2hvdFJlY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlUERGRG9jdW1lbnQ6OlNuYXBzaG90OjpjYW5DcmVh
dGVTbmFwc2hvdCk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVQREZEb2N1bWVudDo6U25hcHNo
b3Q6OmNhbkJlUmV1c2VkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZVBERkRvY3Vt
ZW50OjpTbmFwc2hvdDo6bWVtb3J5Q29zdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOYXRp
dmVQREZEb2N1bWVudDo6U25hcHNob3Q6OnRyYW5zZmVyVmlld3BvcnQpOgorICAgICAgICAoV2Vi
Q29yZTo6TmF0aXZlUERGRG9jdW1lbnQ6OlNuYXBzaG90OjpkcmF3KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9OYXRpdmVQREZEb2N1bWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6Ok5hdGl2ZVBERkRvY3VtZW50OjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5h
dGl2ZVBERkRvY3VtZW50OjpyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TmF0aXZlUERGRG9jdW1lbnQ6OnNldE9ic2VydmVyKToKKyAgICAgICAg
KFdlYkNvcmU6Ok5hdGl2ZVBERkRvY3VtZW50OjpwZGZJbWFnZUNhY2hpbmdQb2xpY3kgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlUERGRG9jdW1lbnQ6OnNldFBERkltYWdlQ2FjaGlu
Z1BvbGljeSk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVQREZEb2N1bWVudDo6Y2FjaGluZ0Nv
dW50Rm9yVGVzdGluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVQREZEb2N1bWVu
dDo6c25hcHNob3RNZW1vcnlDb3N0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZVBE
RkRvY3VtZW50OjpjbGVhclNuYXBzaG90KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Q
REZEb2N1bWVudEltYWdlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVu
dEltYWdlOjpQREZEb2N1bWVudEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50
SW1hZ2U6On5QREZEb2N1bWVudEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50
SW1hZ2U6OmZpbGVuYW1lRXh0ZW5zaW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRv
Y3VtZW50SW1hZ2U6OnNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJ
bWFnZTo6Y2FjaGluZ0NvdW50Rm9yVGVzdGluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQ
REZEb2N1bWVudEltYWdlOjpzZXRQZGZJbWFnZUNhY2hpbmdQb2xpY3kpOgorICAgICAgICAoV2Vi
Q29yZTo6UERGRG9jdW1lbnRJbWFnZTo6ZGF0YUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6
UERGRG9jdW1lbnRJbWFnZTo6ZGVzdHJveURlY29kZWREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OlBERkRvY3VtZW50SW1hZ2U6OmRlY29kZWRTaXplQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpQREZEb2N1bWVudEltYWdlOjpjb21wdXRlSW50cmluc2ljRGltZW5zaW9ucyk6CisgICAgICAg
IChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OlBE
RkRvY3VtZW50SW1hZ2U6OmR1bXAgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L1BERkRvY3VtZW50SW1hZ2UuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuaC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9QbGF0Zm9ybVBERkRvY3VtZW50Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmguCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd05hdGl2ZVBERkRvY3VtZW50
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBs
Q2Fpcm8uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVQREZEb2N1
bWVudENhaXJvLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaC4KKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZVBERkRv
Y3VtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlUERGRG9jdW1lbnQ6OmNv
bXB1dGVCb3VuZHNGb3JDdXJyZW50UGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVQREZE
b2N1bWVudDo6cGFnZUNvdW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZVBERkRv
Y3VtZW50OjpkcmF3UERGUGFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0
aXZlUERGRG9jdW1lbnRDRy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlUERG
RG9jdW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVQREZEb2N1bWVudDo6
Y29tcHV0ZUJvdW5kc0ZvckN1cnJlbnRQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZVBE
RkRvY3VtZW50OjpwYWdlQ291bnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6YXBwbHlSb3Rh
dGlvbkZvclBhaW50aW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZVBERkRvY3VtZW50Ojpk
cmF3UERGUGFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJ
bWFnZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdl
L0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6OmFwcGVuZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6RGlzcGxheUxpc3Q6Om5hdGl2ZVBERkRvY3VtZW50cyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6OmNhY2hlTmF0aXZlUERGRG9jdW1l
bnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZW1CdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5k
bGU6OmFwcGx5KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlOjpk
ZXN0cm95KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlOjpjb3B5
VG8gY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1UeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpzaXpl
T2ZJdGVtSW5CeXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6aXNEcmF3aW5n
SXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6aXNJbmxpbmVJdGVtKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlw
ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZW1zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlUERG
RG9jdW1lbnQ6OmFwcGx5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0Ojpv
cGVyYXRvcjw8KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtcy5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdOYXRp
dmVQREZEb2N1bWVudDo6RHJhd05hdGl2ZVBERkRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlUERGRG9jdW1lbnQ6OnBkZkRvY3VtZW50SWRlbnRpZmll
ciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZVBERkRv
Y3VtZW50Ojpzb3VyY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRy
YXdOYXRpdmVQREZEb2N1bWVudDo6ZGVzdGluYXRpb25SZWN0IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlUERGRG9jdW1lbnQ6Omdsb2JhbEJvdW5kcyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd05hdGl2ZVBERkRvY3Vt
ZW50Ojpsb2NhbEJvdW5kcyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpkcmF3TmF0aXZlUERGRG9jdW1lbnQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OkRlbGVnYXRlOjpjYWNoZU5h
dGl2ZVBERkRvY3VtZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6UmVwbGF5ZXI6OlJlcGxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0Ojph
cHBseURyYXdOYXRpdmVQREZEb2N1bWVudEl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6OlJlcGxheWVyOjphcHBseUl0ZW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL05hdGl2ZVBERkRvY3VtZW50TWFjLm1tOiBSZW5hbWVkIGZyb20gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1BERkRvY3VtZW50SW1hZ2VNYWMubW0uCisg
ICAgICAgIChXZWJDb3JlOjpOYXRpdmVQREZEb2N1bWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5hdGl2ZVBERkRvY3VtZW50Ojpjb21wdXRlQm91bmRzRm9yQ3VycmVudFBhZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6TmF0aXZlUERGRG9jdW1lbnQ6OnBhZ2VDb3VudCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpOYXRpdmVQREZEb2N1bWVudDo6ZHJhd1BERlBhZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6TmF0aXZlUERGRG9jdW1lbnQ6OmNvbnZlcnRQb3N0U2NyaXB0RGF0YVRvUERG
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWly
b09wZXJhdGlvblJlY29yZGVyLmNwcDoKKyAgICAgICAgKE5pY29zaWE6OkNhaXJvT3BlcmF0aW9u
UmVjb3JkZXI6OmRyYXdOYXRpdmVQREZEb2N1bWVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJbXBsRGlyZWN0MkQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpkcmF3
TmF0aXZlUERGRG9jdW1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFw
aGljc0NvbnRleHRJbXBsRGlyZWN0MkQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1h
Z2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OnBhaW50SW50b1JlY3QpOgor
ICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVy
bmFsczo6cGRmRG9jdW1lbnRDYWNoaW5nQ291bnQpOgorCiAyMDIwLTExLTE5ICBBZGl0eWEgS2Vl
cnRoaSAgPGFrZWVydGhpQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXVtGQ1JdIEFkZCBuZXcg
bG9vayBmb3IgcHJvZ3Jlc3MgYmFycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBjMDg4ZDc0NTBlMDZmN2U0YjM4ODdj
YTEyYjljMjU5NTAzMTc1MGRiLi5iNmE0MjFhZDhkNTNmNDg0OWE0NmEyNGU4NmQ5NmFmMjY4NmJj
YTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDIwLTExLTIwICBTYWlkIEFib3UtSGFs
bGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gU3VwcG9ydCBy
ZW5kZXJpbmcgUERGRG9jdW1lbnRJbWFnZSBpbiBHUFUgUHJvY2VzcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4ODcxCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1Jl
bW90ZUltYWdlQnVmZmVyLmg6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUltYWdlQnVmZmVyOjpz
dWJtaXREaXNwbGF5TGlzdCk6CisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFj
a2VuZDo6Y2FjaGVOYXRpdmVQREZEb2N1bWVudCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJl
bmRlcmluZ0JhY2tlbmQ6OmRlY29kZUl0ZW0pOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVSZXNvdXJjZUNhY2hlOjpjYWNoZU5hdGl2ZVBERkRvY3VtZW50KToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6cmVsZWFzZVJlbW90ZVJlc291cmNlKToKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuaDoKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlUmVzb3VyY2VDYWNoZTo6bmF0aXZlUERGRG9jdW1lbnRzIGNvbnN0KToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5OjpjYWNoZU5hdGl2ZVBERkRvY3VtZW50KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OmNhY2hlTmF0aXZlUERGRG9jdW1lbnQp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZXNvdXJjZUNhY2hlUHJveHk6OnJlbGVhc2VOYXRp
dmVQREZEb2N1bWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
UmVzb3VyY2VDYWNoZVByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9Q
REZQbHVnaW4ubW06CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6Y29udmVydFBvc3RTY3Jp
cHREYXRhSWZOZWVkZWQpOgorCiAyMDIwLTExLTE5ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1A
YXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgcm9sbG91dCBvZiByMjY5ODkwIGFuZCBy
MjY5OTExIGR1ZSB0byBFTUUgaXNzdWVzIG9uIE1hYyBNaW5pLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvUGxhdGZvcm1FbmFibGUuaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxl
LmgKaW5kZXggNzAwMWJlYmQ5NjRjZWVhMjc5MTJkYTJkZGJjYmM0ODA5ZDQ1OGY5NC4uNzgzZWI1
Yzg3OWE4NjM1MTMxNTdkNzIwYjk2MmM5YjQ0NzE3ZTc1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvUGxhdGZvcm1FbmFibGUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJs
ZS5oCkBAIC0yMjUsNiArMjI1LDE0IEBACiAjZGVmaW5lIEVOQUJMRV9DU1NfQ09OSUNfR1JBRElF
TlRTIDAKICNlbmRpZgogCisjaWYgIWRlZmluZWQoRU5BQkxFX1BERkRPQ1VNRU5USU1BR0UpICYm
IFVTRShDRykKKyNkZWZpbmUgRU5BQkxFX1BERkRPQ1VNRU5USU1BR0UgMQorI2VuZGlmCisKKyNp
ZiAhZGVmaW5lZChFTkFCTEVfUERGS0lUX0ZPUl9QREZET0NVTUVOVElNQUdFKSAmJiBQTEFURk9S
TShNQUMpCisjZGVmaW5lIEVOQUJMRV9QREZLSVRfRk9SX1BERkRPQ1VNRU5USU1BR0UgMQorI2Vu
ZGlmCisKICNpZiAhZGVmaW5lZChFTkFCTEVfQ1VTVE9NX0NVUlNPUl9TVVBQT1JUKQogI2RlZmlu
ZSBFTkFCTEVfQ1VTVE9NX0NVUlNPUl9TVVBQT1JUIDEKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UK
aW5kZXggMDIzZTE1M2RhM2M2N2RlMTdhMjUyYmVmMWNhYjI2ODdkNDM5MzA2ZC4uZTk0MWRhNWRj
ZTBmOGUzZjZlMGUyZTg0YjhkZWNhMDFiMzdiYWY5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0x
MjI5LDYgKzEyMjksNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFVc2FnZUluZm8uaAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL05hdGl2ZUltYWdlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVJbWFnZVJlZmVy
ZW5jZS5oCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlUERGRG9jdW1lbnQuaAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL09wZW5HTEVTU2hpbXMuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL09w
ZW5HTFNoaW1zLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmgKQEAgLTEyNDAsNiArMTI0
MSw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9QbGF0Zm9ybUltYWdlQnVmZmVyQmFja2VuZC5oCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvUGxhdGZvcm1MYXllci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRp
YVJlc291cmNlTG9hZGVyLmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVBERkRvY3Vt
ZW50LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVRleHRUcmFjay5oCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UaW1lUmFuZ2VzLmgKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9SZWdpb24uaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdpbi5j
bWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4uY21ha2UKaW5kZXggMDE1MmU1
N2Q3N2Q2YjIyYWQzY2RkMzBkYzQyZTYxODBmMTc0YThhOC4uYTJhZmVhNjJjZjVhOGE3N2ViNTI4
NGYwZjkxYTJjZmM1Nzc1ODBlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1B
cHBsZVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtl
CkBAIC0xNDUsNyArMTQ1LDcgQEAgZWxzZSAoKQogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbnRSZWN0Q0cuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ludFNpemVDRy5j
cHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlSW1hZ2VDRy5jcHAKLSAgICAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKKyAgICAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlUERGRG9jdW1lbnRDRy5jcHAKICAgICAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvUGF0aENHLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9Q
YXR0ZXJuQ0cuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1N1YmltYWdlQ2FjaGVX
aXRoVGltZXIuY3BwCkBAIC0xODgsNyArMTg4LDYgQEAgZWxzZSAoKQogICAgICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5oCiAgICAgICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oCiAgICAgICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyVXRpbGl0aWVzQ0cuaAotICAgICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmgKICAgICAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvVVRJUmVnaXN0cnkuaAogICAgICkKIGVuZGlmICgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFj
LmNtYWtlCmluZGV4IGNmZWIwMzhhZWQ4ZWFlNTE3MTNiODY3MDUxN2I1NmFkYzBjM2I4MmUuLjIw
ZWVjN2ViM2RmZTVhOTllYTVkY2U1NTVkZWUxMTlhOGNiMTQ3YmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
TWFjLmNtYWtlCkBAIC0yOTYsNyArMjk2LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VT
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW50UmVjdENHLmNwcAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL0ludFNpemVDRy5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJ
bWFnZUNHLmNwcAotICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3Bw
CisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlUERGRG9jdW1lbnRDRy5jcHAKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9QYXRoQ0cuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
UGF0dGVybkNHLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1N1YmltYWdlQ2FjaGVXaXRo
VGltZXIuY3BwCkBAIC0zNDIsNyArMzQyLDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VT
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0ludFBvaW50TWFjLm1tCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ludFNp
emVNYWMubW0KLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5t
bQorICAgIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9OYXRpdmVQREZEb2N1bWVudE1hYy5jcHAKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvU2ltcGxlRm9udERhdGFDb3JlVGV4dC5jcHAKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9tYWMvV2ViTGF5ZXIubW0KIApAQCAtNTQ5LDcgKzU0OSw2IEBAIGxp
c3QoQVBQRU5EIFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmgKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlQnVmZmVyVXRpbGl0aWVzQ0cuaAotICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL1BERkRvY3VtZW50SW1hZ2UuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1VUSVJlZ2lz
dHJ5LmgKIAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmgK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQKaW5kZXggYWZjZjQ1YWFjYjQ3NDc0MzY0MTNmOGFlNTk5ZjNkYWU0YmVkY2Rj
Zi4uOWY5NGU3OGNmNDg5ZTc2Y2Q0ODA4MmM3MWI3YzA1NDM5ODVlZmZmMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQKQEAgLTE5NTEsMTAgKzE5NTEsMTIgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvTUlNRVR5cGVDYWNo
ZS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAogcGxhdGZvcm0vZ3JhcGhp
Y3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZl
SW1hZ2UuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVQREZEb2N1bWVudC5jcHAKIHBsYXRm
b3JtL2dyYXBoaWNzL1BhdGguY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVHJhdmVyc2FsU3Rh
dGUuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVXRpbGl0aWVzLmNwcAogcGxhdGZvcm0vZ3Jh
cGhpY3MvUGF0dGVybi5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL1BERkRvY3VtZW50SW1hZ2UuY3Bw
CiBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybVRpbWVSYW5nZXMuY3BwCiBwbGF0Zm9ybS9ncmFw
aGljcy9SZWdpb24uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9SZW1vdGVWaWRlb1NhbXBsZS5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDJiMzNjNGJjZTc0ZGRlYWQ4MThiYTNjYjJhNDQ5
MzE1NDZiNTlhNjAuLjA0MzU5ZGUwODk5NjhkY2IwYWQ3YzA5MDQzNjZjMDJjNjcxZGFlOWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dl
YkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtMzQwLDcgKzM0MCw3IEBAIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL0ludFBvaW50Q0cuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbnRSZWN0Q0cuY3Bw
CiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbnRTaXplQ0cuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9OYXRpdmVJbWFnZUNHLmNwcAotcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFn
ZS5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZVBERkRvY3VtZW50Q0cuY3BwCiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9QYXRoQ0cuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJu
Q0cuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9TdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmNwcApA
QCAtNDEzLDcgKzQxMyw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9JY29uTWFjLm1tCiBwbGF0
Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW0KIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9JbnRQ
b2ludE1hYy5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ludFNpemVNYWMubW0KLXBsYXRmb3Jt
L2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tCitwbGF0Zm9ybS9ncmFwaGljcy9t
YWMvTmF0aXZlUERGRG9jdW1lbnRNYWMubW0KIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9TaW1wbGVG
b250RGF0YUNvcmVUZXh0LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL1N3aXRjaGluZ0dQVUNs
aWVudC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9XZWJLaXROU0ltYWdlRXh0cmFzLm1tCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggNzVhNTIyYzJhYmViMGQxNmQ1YzY4ODZjNzE3MDY1NzI0OTIwYzk0ZS4uM2Y2OTUwZWVkNDUw
N2NiMTE3YjJmYTVhMmJlMWYyYjk4OWMxMDE4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjE3Nyw2ICsyMTc3LDggQEAKIAkJ
NzI3QTdGM0EyNDA3OEI4NDAwNEQyOTMxIC8qIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJCQUMzQUIy
M0UxRTU0NDAwOEQ3NDFDIC8qIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyOTlCQzY3MjNENkE1
MzIwMENDNjg4MyAvKiBBbHBoYVByZW11bHRpcGxpY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Mjk5QkM2NDIzRDY4NkE2MDBDQzY4ODMgLyog
QWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTcyOTlCQzY4MjNENkE1M0UwMENDNjg4MyAvKiBSZW5kZXJpbmdN
b2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Mjk5
QkM2NjIzRDY4NkM2MDBDQzY4ODMgLyogUmVuZGVyaW5nTW9kZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTcyOUM0NUNEMjU2NjA1MzQwMDA0MDdD
RiAvKiBOYXRpdmVQREZEb2N1bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNzI5QzQ1Q0EyNTY0RjgxQjAwMDQwN0NGIC8qIE5hdGl2ZVBERkRvY3Vt
ZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
NzI5QzQ1Q0UyNTY2MDU2QzAwMDQwN0NGIC8qIFBsYXRmb3JtUERGRG9jdW1lbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyOUM0NUNDMjU2NUQ2Qzcw
MDA0MDdDRiAvKiBQbGF0Zm9ybVBERkRvY3VtZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzI5RDA1MzAyNTMxNDI0MzAwNDIyMDk4IC8qIFJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzI5RDA1MkUyNTMxM0UyNjAwNDIyMDk4IC8qIFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTcyQTczQkVGMjQ1QTNGOTAwMDFDOUQwMyAvKiBBbmltYXRpb25GcmFtZVJh
dGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyMkE4
MTVDMjM4RkQ1MDUwMEMwMDU4MyAvKiBBbmltYXRpb25GcmFtZVJhdGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MkFCOUEyMTI1NUE5RkRFMDBF
NkVCRjEgLyogTmF0aXZlSW1hZ2VSZWZlcmVuY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyQUI5QTFGMjU1QTlFQTYwMEU2RUJGMSAvKiBOYXRpdmVJ
bWFnZVJlZmVyZW5jZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CkBAIC03MDU1LDcgKzcwNTcsNyBAQAogCQkyRDVDOUNGQzE5QzdCNTJFMDBCM0M1QzEg
LyogUGFnZU92ZXJsYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFnZU92
ZXJsYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ1QzlDRkQxOUM3QjUyRTAw
QjNDNUMxIC8qIFBhZ2VPdmVybGF5Q29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBQYWdlT3ZlcmxheUNvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkyRDVDOUNGRTE5QzdCNTJFMDBCM0M1QzEgLyogUGFnZU92ZXJsYXlD
b250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhZ2VPdmVybGF5
Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkyRDZFNDY4MjE3RDY2
MEY1MDBFQ0Y4QkIgLyogUERGRG9jdW1lbnRJbWFnZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBERkRvY3VtZW50SW1hZ2VNYWMubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTJENkU0NjgyMTdENjYwRjUwMEVDRjhCQiAvKiBOYXRpdmVQREZE
b2N1bWVudE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE5h
dGl2ZVBERkRvY3VtZW50TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDZG
M0U4QTFDMUVDQjFDMDA2MURCRDQgLyogTW9ja1BhZ2VPdmVybGF5LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vY2tQYWdlT3ZlcmxheS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTJENkYzRThCMUMxRUNCMUMwMDYxREJENCAvKiBNb2NrUGFnZU92
ZXJsYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9ja1BhZ2VPdmVybGF5
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJENkYzRThDMUMxRUNCMUMwMDYxREJE
NCAvKiBNb2NrUGFnZU92ZXJsYXkuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE1vY2tQYWdl
T3ZlcmxheS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDAzMCw2ICsxMDAz
MiwxMCBAQAogCQk3MjdBRkVEMzFBMkVBNkEwMDAwNDQyRTggLyogRVhUc1JHQi5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gRVhUc1JHQi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTcyOTlCQzY0MjNENjg2QTYwMENDNjg4MyAvKiBBbHBoYVByZW11bHRpcGxpY2F0aW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEFscGhhUHJlbXVsdGlwbGljYXRpb24uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNzI5OUJDNjYyM0Q2ODZDNjAwQ0M2ODgzIC8qIFJlbmRlcmluZ01vZGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyaW5nTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3MjlDNDVDNzI1NjRGMEUxMDAwNDA3Q0YgLyogTmF0aXZlUERGRG9jdW1lbnRDRy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOYXRpdmVQREZEb2N1bWVudENHLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI5QzQ1QzkyNTY0RjgxQjAwMDQwN0NGIC8qIE5hdGl2ZVBE
RkRvY3VtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5hdGl2ZVBERkRvY3VtZW50LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI5QzQ1Q0EyNTY0RjgxQjAwMDQwN0NGIC8q
IE5hdGl2ZVBERkRvY3VtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5hdGl2ZVBERkRvY3VtZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyOUM0NUNDMjU2NUQ2QzcwMDA0MDdDRiAv
KiBQbGF0Zm9ybVBERkRvY3VtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtUERGRG9jdW1l
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI5RDA1MkUyNTMxM0UyNjAwNDIy
MDk4IC8qIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NzJBQjlBMUYyNTVBOUVBNjAwRTZFQkYxIC8qIE5hdGl2ZUltYWdlUmVmZXJlbmNlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE5hdGl2ZUltYWdlUmVmZXJlbmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTcyQkFDM0E0MjNFMTczMjcwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlckJhY2tlbmQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VCdWZmZXJCYWNrZW5k
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI2Mjg5LDEwICsyNjI5NSw5IEBA
CiAJCQkJMUMyMUU1N0ExODNFRDFGRjAwMUMyODlEIC8qIElPU3VyZmFjZVBvb2wuY3BwICovLAog
CQkJCTFDMjFFNTdCMTgzRUQxRkYwMDFDMjg5RCAvKiBJT1N1cmZhY2VQb29sLmggKi8sCiAJCQkJ
Mzc3QTNBOEYxNUVGQ0U5QTAwNTlGNUM3IC8qIE5hdGl2ZUltYWdlQ0cuY3BwICovLAorCQkJCTcy
OUM0NUM3MjU2NEYwRTEwMDA0MDdDRiAvKiBOYXRpdmVQREZEb2N1bWVudENHLmNwcCAqLywKIAkJ
CQlCMjc1MzUzNTBCMDUzODE0MDAyQ0U2NEYgLyogUGF0aENHLmNwcCAqLywKIAkJCQlBODBBMzhG
RDBFNTBDQzgyMDBBMjVFQkMgLyogUGF0dGVybkNHLmNwcCAqLywKLQkJCQlCMjc1MzUzNjBCMDUz
ODE0MDAyQ0U2NEYgLyogUERGRG9jdW1lbnRJbWFnZS5jcHAgKi8sCi0JCQkJQjI3NTM1MzcwQjA1
MzgxNDAwMkNFNjRGIC8qIFBERkRvY3VtZW50SW1hZ2UuaCAqLywKIAkJCQkxRkM0MEZCODE2NTVD
NTkxMDA0MEYyOUUgLyogU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5jcHAgKi8sCiAJCQkJMUZDNDBG
QjcxNjU1QzU5MTAwNDBGMjlFIC8qIFN1YmltYWdlQ2FjaGVXaXRoVGltZXIuaCAqLywKIAkJCQlC
Mjc1MzUyQTBCMDUzODE0MDAyQ0U2NEYgLyogVHJhbnNmb3JtYXRpb25NYXRyaXhDRy5jcHAgKi8s
CkBAIC0yNjMxOCw3ICsyNjMyMyw3IEBACiAJCQkJQjI3NTM1NEUwQjA1MzgxNDAwMkNFNjRGIC8q
IEltYWdlTWFjLm1tICovLAogCQkJCUIyNzUzNTRGMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRQb2lu
dE1hYy5tbSAqLywKIAkJCQlCMjc1MzU1MTBCMDUzODE0MDAyQ0U2NEYgLyogSW50U2l6ZU1hYy5t
bSAqLywKLQkJCQkyRDZFNDY4MjE3RDY2MEY1MDBFQ0Y4QkIgLyogUERGRG9jdW1lbnRJbWFnZU1h
Yy5tbSAqLywKKwkJCQkyRDZFNDY4MjE3RDY2MEY1MDBFQ0Y4QkIgLyogTmF0aXZlUERGRG9jdW1l
bnRNYWMubW0gKi8sCiAJCQkJMTYzRTg4RjUxMThBMzlEMjAwRUQ5MjMxIC8qIFNpbXBsZUZvbnRE
YXRhQ29yZVRleHQuY3BwICovLAogCQkJCUMxMUE5RUQyMjE0MDU3OEIwMENGQjIwQSAvKiBTd2l0
Y2hpbmdHUFVDbGllbnQuY3BwICovLAogCQkJCUMxMUE5RUNEMjE0MDNBNUMwMENGQjIwQSAvKiBT
d2l0Y2hpbmdHUFVDbGllbnQuaCAqLywKQEAgLTI2NTM1LDYgKzI2NTQwLDggQEAKIAkJCQk3MjUy
Mzk2QjI1NENBREMyMDBGNUZCMTUgLyogTmF0aXZlSW1hZ2UuY3BwICovLAogCQkJCTU1QTMzNkY2
MUQ4MjA5RjQwMDIyQzRDNyAvKiBOYXRpdmVJbWFnZS5oICovLAogCQkJCTcyQUI5QTFGMjU1QTlF
QTYwMEU2RUJGMSAvKiBOYXRpdmVJbWFnZVJlZmVyZW5jZS5oICovLAorCQkJCTcyOUM0NUM5MjU2
NEY4MUIwMDA0MDdDRiAvKiBOYXRpdmVQREZEb2N1bWVudC5jcHAgKi8sCisJCQkJNzI5QzQ1Q0Ey
NTY0RjgxQjAwMDQwN0NGIC8qIE5hdGl2ZVBERkRvY3VtZW50LmggKi8sCiAJCQkJQjI3NTM1NTIw
QjA1MzgxNDAwMkNFNjRGIC8qIFBhdGguY3BwICovLAogCQkJCUIyNzUzNTUzMEIwNTM4MTQwMDJD
RTY0RiAvKiBQYXRoLmggKi8sCiAJCQkJQTg4REQ0ODgwQjQ2MjlCMDAwQzAyOTkwIC8qIFBhdGhU
cmF2ZXJzYWxTdGF0ZS5jcHAgKi8sCkBAIC0yNjU0MywxMSArMjY1NTAsMTQgQEAKIAkJCQkyRDUw
MDJGQTFCNTZENzk5MDAyMEFBRjcgLyogUGF0aFV0aWxpdGllcy5oICovLAogCQkJCUE4RkE2RTVD
MEU0Q0ZERUQwMEQ1Q0Y0OSAvKiBQYXR0ZXJuLmNwcCAqLywKIAkJCQlBOEZBNkU1QjBFNENGREVE
MDBENUNGNDkgLyogUGF0dGVybi5oICovLAorCQkJCUIyNzUzNTM2MEIwNTM4MTQwMDJDRTY0RiAv
KiBQREZEb2N1bWVudEltYWdlLmNwcCAqLywKKwkJCQlCMjc1MzUzNzBCMDUzODE0MDAyQ0U2NEYg
LyogUERGRG9jdW1lbnRJbWFnZS5oICovLAogCQkJCTcyNkQ1NkUxMjUzQUUwNDMwMDAyRUY5MCAv
KiBQbGF0Zm9ybUltYWdlLmggKi8sCiAJCQkJNzJCQUMzQTYyM0UxNzMyODAwOEQ3NDFDIC8qIFBs
YXRmb3JtSW1hZ2VCdWZmZXIuaCAqLywKIAkJCQk1NTA2NDBBRDI0MDc1NkRBMDBBQUUwNDUgLyog
UGxhdGZvcm1JbWFnZUJ1ZmZlckJhY2tlbmQuaCAqLywKIAkJCQkwNTYyRjk2MDE1NzNGODhGMDAz
MUNBMTYgLyogUGxhdGZvcm1MYXllci5oICovLAogCQkJCUNFRUZDRDdCMTlEQjMzREMwMDM4NzZE
NyAvKiBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaCAqLywKKwkJCQk3MjlDNDVDQzI1NjVE
NkM3MDAwNDA3Q0YgLyogUGxhdGZvcm1QREZEb2N1bWVudC5oICovLAogCQkJCTA3Mjg0N0UyMTZF
QkM1QjAwMDQzQ0ZBNCAvKiBQbGF0Zm9ybVRleHRUcmFjay5oICovLAogCQkJCTA3NEU4MkI4MThB
NjlGMEUwMDdFRjU0QyAvKiBQbGF0Zm9ybVRpbWVSYW5nZXMuY3BwICovLAogCQkJCTA3NEU4MkI5
MThBNjlGMEUwMDdFRjU0QyAvKiBQbGF0Zm9ybVRpbWVSYW5nZXMuaCAqLywKQEAgLTMzNTg4LDYg
KzMzNTk4LDcgQEAKIAkJCQk3MjZENTZFMzI1M0FFMzY2MDAwMkVGOTAgLyogTmF0aXZlSW1hZ2Uu
aCBpbiBIZWFkZXJzICovLAogCQkJCTcyQUI5QTIxMjU1QTlGREUwMEU2RUJGMSAvKiBOYXRpdmVJ
bWFnZVJlZmVyZW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNCMkQxNzUxQjhCQ0Q2QTAwQTAy
RTQ3IC8qIE5hdGl2ZU5vZGVGaWx0ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTcyOUM0NUNEMjU2
NjA1MzQwMDA0MDdDRiAvKiBOYXRpdmVQREZEb2N1bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RTEwQjlCNkMwQjc0NzU5OTAwM0VEODkwIC8qIE5hdGl2ZVhQYXRoTlNSZXNvbHZlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTNDQ0YwMjcwQUY2QzUyOTAwMDE4RTg5IC8qIE5hdmlnYXRpb25BY3Rp
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCTk3OUY0M0Q0MTA3NUU0NEEwMDAwRjgzQiAvKiBOYXZp
Z2F0aW9uU2NoZWR1bGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTMzODIzLDYgKzMzODM0LDcgQEAK
IAkJCQkwN0Y5NDQxNjE4NjREMDQ2MDA1RDMxQ0IgLyogUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5h
Z2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzVDNDc2OTA5QUM0RDQzMDBBNkFBQjQgLyogUGxh
dGZvcm1Nb3VzZUV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlDNTk4OTA1ODE0RTlDMjk5MDBF
OEQxOEIgLyogUGxhdGZvcm1QYXN0ZWJvYXJkLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MjlDNDVD
RTI1NjYwNTZDMDAwNDA3Q0YgLyogUGxhdGZvcm1QREZEb2N1bWVudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkNFQzAxRDcwQzI3NEVCNDAwOUY0RUM5IC8qIFBsYXRmb3JtU2NyZWVuLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkyOTdCRTNENTE2QzAzQzA4MDAzMzE2QkQgLyogUGxhdGZvcm1TcGVlY2hT
eW50aGVzaXNVdHRlcmFuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5N0JFM0Q2MTZDMDNDMEIw
MDMzMTZCRCAvKiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1ZvaWNlLmggaW4gSGVhZGVycyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCmluZGV4IDVjYzkz
MzgzMjU3NGRjYmViZWQ4MmMyYzBiY2U4ZjAwYzJiY2E3MmUuLjY2YjY1MGM2MmFhMDUyNjU5MDdj
MDg5MjlkMjU3NGZiYjc5MmZmYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZEltYWdlLmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgog
I2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgor
I2luY2x1ZGUgIk5hdGl2ZVBERkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyRWxlbWVudC5o
IgogI2luY2x1ZGUgIlNWR0ltYWdlLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKQEAg
LTQ5LDEwICs1MCw2IEBACiAjaW5jbHVkZSAiU3lzdGVtTWVtb3J5LmgiCiAjZW5kaWYKIAotI2lm
IFVTRShDRykKLSNpbmNsdWRlICJQREZEb2N1bWVudEltYWdlLmgiCi0jZW5kaWYKLQogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBDYWNoZWRJbWFnZTo6Q2FjaGVkSW1hZ2UoQ2FjaGVkUmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUEFMOjpTZXNzaW9uSUQmIHNlc3Npb25JRCwgY29uc3Qg
Q29va2llSmFyKiBjb29raWVKYXIpCkBAIC01MjYsOCArNTIzLDggQEAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gQ2FjaGVkSW1hZ2U6OmNvbnZlcnRlZERhdGFJZk5lZWRlZChTaGFyZWRCdWZmZXIqIGRh
dGEpIGNvbnMKIHsKICAgICBpZiAoIWRhdGEgfHwgIWlzUG9zdFNjcmlwdFJlc291cmNlKCkpCiAg
ICAgICAgIHJldHVybiBkYXRhOwotI2lmIFBMQVRGT1JNKE1BQykgJiYgIVVTRShXRUJLSVRfSU1B
R0VfREVDT0RFUlMpCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFBERkRvY3VtZW50
SW1hZ2U6OmNvbnZlcnRQb3N0U2NyaXB0RGF0YVRvUERGKGRhdGEtPmNyZWF0ZUNGRGF0YSgpKS5n
ZXQoKSk7CisjaWYgRU5BQkxFKFBERkRPQ1VNRU5USU1BR0UpICYmIEVOQUJMRShQREZLSVRfRk9S
X1BERkRPQ1VNRU5USU1BR0UpCisgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKE5hdGl2
ZVBERkRvY3VtZW50Ojpjb252ZXJ0UG9zdFNjcmlwdERhdGFUb1BERihkYXRhLT5jcmVhdGVDRkRh
dGEoKSkuZ2V0KCkpOwogI2Vsc2UKICAgICAvLyBMb2FkaW5nIHRoZSBpbWFnZSBzaG91bGQgaGF2
ZSBiZWVuIGNhbmNlbGVkIGlmIHRoZSBzeXN0ZW0gZG9lcyBub3Qgc3VwcG9ydCBjb252ZXJ0aW5n
IFBvc3RTY3JpcHQgdG8gUERGLgogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU291cmNlc0NhaXJvLnR4dCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NvdXJjZXNDYWlyby50eHQKaW5kZXggNWYwMTQ5NGYzY2ExZTMxZDc0N2Jm
N2M3YWZiNzZhZDBjZDdmNjcwYi4uMGE4YTJmODRlYzA1M2VhNTZjNjMyNzkwNWE1OGZkOWNkYzFk
OWVhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU291cmNlc0NhaXJvLnR4
dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Tb3VyY2VzQ2Fpcm8udHh0CkBAIC0zNiw2
ICszNiw3IEBAIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9TdXJmYWNl
QmFja2VuZC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyVXRpbGl0aWVz
Q2Fpcm8uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbnRSZWN0Q2Fpcm8uY3BwCiBwbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVJbWFnZUNhaXJvLmNwcAorcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vTmF0aXZlUERGRG9jdW1lbnRDYWlyby5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL1BhdGhDYWlyby5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdHRlcm5DYWlyby5j
cHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5j
cHAKaW5kZXggNWNhY2E4NTQ1MmMxYTY5OGI5NWU0ZGY0NDAwODU4Yzk2MzQ1ZWNlNS4uY2E0ODlm
MDgwN2ViNTAyYTU3NzVlNmZjN2QwYjNmMDA5ODY4ZTYyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC0zNSw2ICsz
NSw3IEBACiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCiAj
aW5jbHVkZSAiTWVkaWFQbGF5ZXJQcml2YXRlLmgiCisjaW5jbHVkZSAiTmF0aXZlUERGRG9jdW1l
bnQuaCIKICNpbmNsdWRlICJSb3VuZGVkUmVjdC5oIgogI2luY2x1ZGUgIlRleHRSdW4uaCIKICNp
bmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CkBAIC03NDQsNiArNzQ1LDE5IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmIGltYWdlLCBjb25z
dCBGbG9hdFNpemUmIGltYWdlCiAgICAgZHJhd1BsYXRmb3JtSW1hZ2UoaW1hZ2UucGxhdGZvcm1J
bWFnZSgpLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKIH0KIAordm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRpdmVQREZEb2N1bWVudChOYXRpdmVQREZEb2N1bWVu
dCYgcGRmRG9jdW1lbnQsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiBvcHRpb25zKQoreworICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT5kcmF3TmF0
aXZlUERGRG9jdW1lbnQocGRmRG9jdW1lbnQsIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3Qs
IG9wdGlvbnMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgcGRmRG9jdW1lbnQuZHJh
dygqdGhpcywgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7Cit9CisKIElt
YWdlRHJhd1Jlc3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdJbWFnZShJbWFnZSYgaW1hZ2UsIGNv
bnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
aW1hZ2VQYWludGluZ09wdGlvbnMpCiB7CiAgICAgcmV0dXJuIGRyYXdJbWFnZShpbWFnZSwgRmxv
YXRSZWN0KGRlc3RpbmF0aW9uLCBpbWFnZS5zaXplKCkpLCBGbG9hdFJlY3QoRmxvYXRQb2ludCgp
LCBpbWFnZS5zaXplKCkpLCBpbWFnZVBhaW50aW5nT3B0aW9ucyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IDQ1MzlmYmI2
ZGJmM2VjNzgzYzYxMzM4NmVhMjU0OTRmNGViNmIxYTQuLjdlYjA1YzAyYzlkNjk1ZmEwN2Q3ODc3
Y2UzYmM2ODEyNDkyM2Y0ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC05Myw2ICs5Myw4IEBAIGNsYXNzIEdyYXBoaWNz
Q29udGV4dFBsYXRmb3JtUHJpdmF0ZTsKIGNsYXNzIEltYWdlQnVmZmVyOwogY2xhc3MgSW50UmVj
dDsKIGNsYXNzIE1lZGlhUGxheWVyOworY2xhc3MgTmF0aXZlSW1hZ2U7CitjbGFzcyBOYXRpdmVQ
REZEb2N1bWVudDsKIGNsYXNzIFJvdW5kZWRSZWN0OwogY2xhc3MgR3JhcGhpY3NDb250ZXh0R0w7
CiBjbGFzcyBQYXRoOwpAQCAtMzgwLDYgKzM4Miw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHN0cm9rZVJlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQgbGluZVdpZHRoKTsK
IAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiwg
Y29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0p
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd05hdGl2ZVBERkRvY3VtZW50KE5hdGl2ZVBE
RkRvY3VtZW50JiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09w
dGlvbnMmID0geyB9KTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIEltYWdlRHJhd1Jlc3VsdCBkcmF3
SW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbiwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmID0geyBJbWFnZU9yaWVudGF0aW9uOjpGcm9tSW1hZ2UgfSk7CiAgICAg
V0VCQ09SRV9FWFBPUlQgSW1hZ2VEcmF3UmVzdWx0IGRyYXdJbWFnZShJbWFnZSYsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IHsgSW1h
Z2VPcmllbnRhdGlvbjo6RnJvbUltYWdlIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCmluZGV4IDVjODI1ZjdkNDFi
OTg2MTZkMTdmZGI4ZWJlN2NmZmQ3ZDJiZmNjOGMuLjk1MTNmMTg3OTRjZjM2ZDFlNDNhM2QwZWRj
YmFiMjRlNWRjZGQyZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgKQEAgLTcxLDYgKzcxLDcgQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd05hdGl2ZUltYWdl
KE5hdGl2ZUltYWdlJiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRyYXdOYXRpdmVQREZEb2N1bWVudChO
YXRpdmVQREZEb2N1bWVudCYsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihOYXRpdmVJ
bWFnZSYsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNv
bnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdSZWN0KGNv
bnN0IEZsb2F0UmVjdCYsIGZsb2F0IGJvcmRlclRoaWNrbmVzcykgPSAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3BwCmluZGV4IDkzN2FhNGQzNTkzZDFkMjM5MTcz
M2YwYzAyNzc0YTIxMTEzMzY1ZTEuLmU1Y2IxZTIwZGEyMWU3Y2UwYmM1NTJmZWU5MjgwYTc2Mzlh
NDhkMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5jcHAKQEAg
LTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJJbWFnZU9ic2VydmVyLmgiCiAjaW5jbHVkZSAiTGVu
Z3RoLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgorI2luY2x1ZGUgIlBERkRvY3Vt
ZW50SW1hZ2UuaCIKICNpbmNsdWRlICJTVkdJbWFnZS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZl
ci5oIgogI2luY2x1ZGUgPG1hdGguaD4KQEAgLTQyLDcgKzQzLDYgQEAKICNpbmNsdWRlIDx3dGYv
dGV4dC9UZXh0U3RyZWFtLmg+CiAKICNpZiBVU0UoQ0cpCi0jaW5jbHVkZSAiUERGRG9jdW1lbnRJ
bWFnZS5oIgogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CiAjZW5k
aWYKIApAQCAtNzAsNyArNzAsNyBAQCBSZWZQdHI8SW1hZ2U+IEltYWdlOjpjcmVhdGUoSW1hZ2VP
YnNlcnZlciYgb2JzZXJ2ZXIpCiAKICAgICBhdXRvIHVybCA9IG9ic2VydmVyLnNvdXJjZVVybCgp
OwogICAgIGlmIChpc1BERlJlc291cmNlKG1pbWVUeXBlLCB1cmwpIHx8IGlzUG9zdFNjcmlwdFJl
c291cmNlKG1pbWVUeXBlLCB1cmwpKSB7Ci0jaWYgVVNFKENHKSAmJiAhVVNFKFdFQktJVF9JTUFH
RV9ERUNPREVSUykKKyNpZiBFTkFCTEUoUERGRE9DVU1FTlRJTUFHRSkKICAgICAgICAgcmV0dXJu
IFBERkRvY3VtZW50SW1hZ2U6OmNyZWF0ZSgmb2JzZXJ2ZXIpOwogI2Vsc2UKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9OYXRpdmVQREZEb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9OYXRpdmVQREZEb2N1bWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2M5YmVkYmJjNDdkNmQ5MGM0MmVm
Yzc0NDE4YWMwNTc0YzE1OTRjNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL05hdGl2ZVBERkRvY3VtZW50LmNwcApAQCAtMCwwICsxLDI0OSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiTmF0aXZlUERGRG9jdW1lbnQuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitOYXRpdmVQREZEb2N1bWVudDo6TmF0aXZlUERGRG9jdW1lbnQoU2hhcmVkQnVm
ZmVyJiBkYXRhLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyLCBQbGF0Zm9ybVBERkRvY3VtZW50UHRyJiYgcGxhdGZvcm1QREZEb2N1bWVudCkK
KyAgICA6IG1fZGF0YShtYWtlUmVmKGRhdGEpKQorICAgICwgbV9yZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQorICAgICwgbV9wbGF0Zm9ybVBE
RkRvY3VtZW50KFdURk1vdmUocGxhdGZvcm1QREZEb2N1bWVudCkpCit7CisgICAgaWYgKHBhZ2VD
b3VudCgpKQorICAgICAgICBjb21wdXRlQm91bmRzRm9yQ3VycmVudFBhZ2UoKTsKK30KKworTmF0
aXZlUERGRG9jdW1lbnQ6On5OYXRpdmVQREZEb2N1bWVudCgpCit7CisgICAgaWYgKG1fb2JzZXJ2
ZXIpCisgICAgICAgIG1fb2JzZXJ2ZXItPnJlbGVhc2VOYXRpdmVQREZEb2N1bWVudChtX3JlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcik7Cit9CisKK0Zsb2F0U2l6ZSBOYXRpdmVQREZEb2N1bWVu
dDo6c2l6ZSgpIGNvbnN0Cit7CisgICAgRmxvYXRTaXplIGV4cGFuZGVkQ3JvcEJveFNpemUgPSBG
bG9hdFNpemUoZXhwYW5kZWRJbnRTaXplKG1fY3JvcEJveC5zaXplKCkpKTsKKworICAgIGlmICht
X3JvdGF0aW9uRGVncmVlcyA9PSA5MCB8fCBtX3JvdGF0aW9uRGVncmVlcyA9PSAyNzApCisgICAg
ICAgIHJldHVybiBleHBhbmRlZENyb3BCb3hTaXplLnRyYW5zcG9zZWRTaXplKCk7CisgICAgcmV0
dXJuIGV4cGFuZGVkQ3JvcEJveFNpemU7Cit9CisKK3N0YXRpYyB2b2lkIHRyYW5zZm9ybUNvbnRl
eHRGb3JQYWludGluZyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCkKK3sKKyAgICBmbG9hdCBoU2NhbGUg
PSBkZXN0UmVjdC53aWR0aCgpIC8gc3JjUmVjdC53aWR0aCgpOworICAgIGZsb2F0IHZTY2FsZSA9
IGRlc3RSZWN0LmhlaWdodCgpIC8gc3JjUmVjdC5oZWlnaHQoKTsKKworICAgIGlmIChoU2NhbGUg
IT0gdlNjYWxlKSB7CisgICAgICAgIGZsb2F0IG1pbmltdW1TY2FsZSA9IHN0ZDo6bWF4KChkZXN0
UmVjdC53aWR0aCgpIC0gMC41KSAvIHNyY1JlY3Qud2lkdGgoKSwgKGRlc3RSZWN0LmhlaWdodCgp
IC0gMC41KSAvIHNyY1JlY3QuaGVpZ2h0KCkpOworICAgICAgICBmbG9hdCBtYXhpbXVtU2NhbGUg
PSBzdGQ6Om1pbigoZGVzdFJlY3Qud2lkdGgoKSArIDAuNSkgLyBzcmNSZWN0LndpZHRoKCksIChk
ZXN0UmVjdC5oZWlnaHQoKSArIDAuNSkgLyBzcmNSZWN0LmhlaWdodCgpKTsKKworICAgICAgICAv
LyBJZiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSB0d28gc2NhbGVzIGlzIGR1ZSB0byBpbnRl
Z2VyIHJvdW5kaW5nIG9mIGltYWdlIHNpemVzLAorICAgICAgICAvLyB1c2UgdGhlIHNtYWxsZXIg
b2YgdGhlIHR3byBvcmlnaW5hbCBzY2FsZXMgdG8gZW5zdXJlIHRoYXQgdGhlIGltYWdlIGZpdHMg
aW5zaWRlIHRoZQorICAgICAgICAvLyBzcGFjZSBvcmlnaW5hbGx5IGFsbG9jYXRlZCBmb3IgaXQu
CisgICAgICAgIGlmIChtaW5pbXVtU2NhbGUgPD0gbWF4aW11bVNjYWxlKSB7CisgICAgICAgICAg
ICBoU2NhbGUgPSBzdGQ6Om1pbihoU2NhbGUsIHZTY2FsZSk7CisgICAgICAgICAgICB2U2NhbGUg
PSBoU2NhbGU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBkcmF3UERGUGFnZSgpIHJlbGll
cyBvbiBkcmF3aW5nIHRoZSB3aG9sZSBQREYgaW50byBhIGNvbnRleHQgc3RhcnRpbmcgYXQgKDAs
IDApLiBXZSBuZWVkCisgICAgLy8gdG8gdHJhbnNmb3JtIHRoZSBkZXN0aW5hdGlvbiBjb250ZXh0
IHN1Y2ggdGhhdCBzcmNSZWN0IG9mIHRoZSBzb3VyY2UgY29udGV4dCB3aWxsIGJlIGRyYXduCisg
ICAgLy8gaW4gZGVzdFJlY3Qgb2YgZGVzdGluYXRpb24gY29udGV4dC4KKyAgICBjb250ZXh0LnRy
YW5zbGF0ZShkZXN0UmVjdC5sb2NhdGlvbigpIC0gc3JjUmVjdC5sb2NhdGlvbigpKTsKKyAgICBj
b250ZXh0LnNjYWxlKEZsb2F0U2l6ZShoU2NhbGUsIC12U2NhbGUpKTsKKyAgICBjb250ZXh0LnRy
YW5zbGF0ZSgwLCAtc3JjUmVjdC5oZWlnaHQoKSk7Cit9CisKK3ZvaWQgTmF0aXZlUERGRG9jdW1l
bnQ6OnVwZGF0ZVNuYXBzaG90SWZOZWVkZWQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0KQoreworICAgIC8vIENsaXBwZWQgb3B0aW9uIGlzIGZvciB0ZXN0
aW5nIG9ubHkgYW5kIGl0IHJlcXVpcmVzIHRoZSBQREYgdG8gYmUgcmUtY2FjaGVkIHdpdGggZWFj
aCBkcmF3LgorICAgIGJvb2wgZm9yY2VVcGRhdGVTbmFwc2hvdCA9IG1fcGRmSW1hZ2VDYWNoaW5n
UG9saWN5ID09IFBERkltYWdlQ2FjaGluZ1BvbGljeTo6Q2xpcEJvdW5kc09ubHk7CisgICAgaWYg
KCFmb3JjZVVwZGF0ZVNuYXBzaG90ICYmIG1fc25hcHNob3QpIHsKKyAgICAgICAgLy8gQWRqdXN0
IHRoZSB2aWV3LXBvcnQgcmVjdGFuZ2xlcyBpZiBubyByZS1jYWNoaW5nIHdpbGwgaGFwcGVuLgor
ICAgICAgICBpZiAobV9zbmFwc2hvdC0+dHJhbnNmZXJWaWV3cG9ydChjb250ZXh0LCBkZXN0UmVj
dCwgc3JjUmVjdCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9zbmFwc2hv
dCA9IG51bGxwdHI7CisgICAgCisgICAgRmxvYXRSZWN0IHNuYXBzaG90UmVjdDsKKyAgICBzd2l0
Y2ggKG1fcGRmSW1hZ2VDYWNoaW5nUG9saWN5KSB7CisgICAgY2FzZSBQREZJbWFnZUNhY2hpbmdQ
b2xpY3k6OkRpc2FibGVkOgorICAgICAgICByZXR1cm47CisgICAgY2FzZSBQREZJbWFnZUNhY2hp
bmdQb2xpY3k6OkJlbG93TWVtb3J5TGltaXQ6CisgICAgICAgIC8vIEtlZXAgdGhlIG1lbW9yeSB1
c2VkIGJ5IHRoZSBjYWNoZWQgaW1hZ2UgYmVsb3cgc29tZSB0aHJlc2hvbGQsIG90aGVyd2lzZSBX
ZWJLaXQgcHJvY2VzcworICAgICAgICAvLyB3aWxsIGpldHNhbSBpZiBpdCBleGNlZWRzIGl0cyBt
ZW1vcnkgbGltaXQuIE9ubHkgYSByZWN0YW5nbGUgZnJvbSB0aGUgUERGIG1heSBiZSBjYWNoZWQu
CisgICAgICAgIHNuYXBzaG90UmVjdCA9IFNuYXBzaG90OjpjYWxjdWxhdGVTbmFwc2hvdFJlY3Qo
Y29udGV4dCwgZGVzdFJlY3QpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBERkltYWdlQ2Fj
aGluZ1BvbGljeTo6Q2xpcEJvdW5kc09ubHk6CisgICAgICAgIHNuYXBzaG90UmVjdCA9IGludGVy
c2VjdGlvbihjb250ZXh0LmNsaXBCb3VuZHMoKSwgZGVzdFJlY3QpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIFBERkltYWdlQ2FjaGluZ1BvbGljeTo6RW5hYmxlZDoKKyAgICAgICAgc25hcHNo
b3RSZWN0ID0gZGVzdFJlY3Q7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIEZsb2F0U2l6
ZSBzbmFwc2hvdFNpemUgPSBGbG9hdFJlY3QoZW5jbG9zaW5nSW50UmVjdChzbmFwc2hvdFJlY3Qp
KS5zaXplKCk7CisgICAgCisgICAgLy8gQ2FjaGUgdGhlIFBERiBpbWFnZSBvbmx5IGlmIHRoZSBz
aXplIG9mIHRoZSBuZXcgaW1hZ2Ugd29uJ3QgZXhjZWVkIHRoZSBjYWNoZSB0aHJlc2hvbGQuCisg
ICAgaWYgKG1fcGRmSW1hZ2VDYWNoaW5nUG9saWN5ID09IFBERkltYWdlQ2FjaGluZ1BvbGljeTo6
QmVsb3dNZW1vcnlMaW1pdCkgeworICAgICAgICBpZiAoIVNuYXBzaG90OjpjYW5DcmVhdGVTbmFw
c2hvdChjb250ZXh0LCBzbmFwc2hvdFNpemUpKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICAKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGli
bGVCdWZmZXIoc25hcHNob3RTaXplLCBjb250ZXh0KTsKKyAgICBpZiAoIWltYWdlQnVmZmVyKQor
ICAgICAgICByZXR1cm47CisKKyAgICBhdXRvJiBidWZmZXJDb250ZXh0ID0gaW1hZ2VCdWZmZXIt
PmNvbnRleHQoKTsKKworICAgIC8vIFdlIG5lZWQgdG8gdHJhbnNmb3JtIHRoZSBjb29yZGluYXRl
IHN5c3RlbSBzdWNoIHRoYXQgdG9wLWxlZnQgb2YgYWRqdXN0ZWREZXN0UmVjdCB3aWxsIGJlIG1h
cHBlZCB0byB0aGUKKyAgICAvLyB0b3AtbGVmdCBvZiBkZXN0UmVjdC4gQWx0aG91Z2ggb25seSBp
bWFnZUJ1ZmZlclJlY3Quc2l6ZSgpIG9mIHRoZSBpbWFnZSBjb3BpZWQsIHRoZSBzaXplcyBvZiBz
cmNSZWN0CisgICAgLy8gYW5kIGRlc3RSZWN0IHNob3VsZCBiZSBwYXNzZWQgdG8gdGhpcyBmdW5j
dGlvbiBiZWNhdXNlIHRoZXkgYXJlIHVzZWQgdG8gY2FsY3VsYXRlIHRoZSBpbWFnZSBzY2FsaW5n
LgorICAgIHRyYW5zZm9ybUNvbnRleHRGb3JQYWludGluZyhidWZmZXJDb250ZXh0LCBkZXN0UmVj
dCwgRmxvYXRSZWN0KHNuYXBzaG90UmVjdC5sb2NhdGlvbigpLCBzcmNSZWN0LnNpemUoKSkpOwor
ICAgIGRyYXdQREZQYWdlKGJ1ZmZlckNvbnRleHQsIGltYWdlU2l6ZSk7CisKKyAgICBhdXRvIHRy
YW5zZm9ybSA9IGNvbnRleHQuZ2V0Q1RNKEdyYXBoaWNzQ29udGV4dDo6RGVmaW5pdGVseUluY2x1
ZGVEZXZpY2VTY2FsZSk7CisgICAgbV9zbmFwc2hvdCA9IFNuYXBzaG90OjpjcmVhdGUobWFrZVJl
ZigqaW1hZ2VCdWZmZXIpLCBzbmFwc2hvdFJlY3QsIGRlc3RSZWN0LCBzcmNSZWN0LCB0cmFuc2Zv
cm0pOworICAgIAorICAgIEFTU0VSVChtX3NuYXBzaG90KTsKKyAgICArK21fY2FjaGluZ0NvdW50
Rm9yVGVzdGluZzsKK30KKwordm9pZCBOYXRpdmVQREZEb2N1bWVudDo6ZHJhdyhHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiBvcHRpb25zKQoreworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3Rh
dGVTYXZlcihjb250ZXh0KTsKKyAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihvcHRp
b25zLmNvbXBvc2l0ZU9wZXJhdG9yKCkpOworCisgICAgdXBkYXRlU25hcHNob3RJZk5lZWRlZChj
b250ZXh0LCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0KTsKKworICAgIGlmIChtX3NuYXBz
aG90KQorICAgICAgICBtX3NuYXBzaG90LT5kcmF3KGNvbnRleHQpOworICAgIGVsc2UgeworICAg
ICAgICB0cmFuc2Zvcm1Db250ZXh0Rm9yUGFpbnRpbmcoY29udGV4dCwgZGVzdFJlY3QsIHNyY1Jl
Y3QpOworICAgICAgICBkcmF3UERGUGFnZShjb250ZXh0LCBpbWFnZVNpemUpOworICAgIH0KK30K
Kwordm9pZCBOYXRpdmVQREZEb2N1bWVudDo6ZHVtcChXVEY6OlRleHRTdHJlYW0mIHRzKSBjb25z
dAoreworICAgIHRzLmR1bXBQcm9wZXJ0eSgicGFnZS1jb3VudCIsIHBhZ2VDb3VudCgpKTsKKyAg
ICB0cy5kdW1wUHJvcGVydHkoImNyb3AtYm94IiwgbV9jcm9wQm94KTsKKyAgICBpZiAobV9yb3Rh
dGlvbkRlZ3JlZXMpCisgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgicm90YXRpb24iLCBtX3JvdGF0
aW9uRGVncmVlcyk7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxOYXRpdmVQREZEb2N1bWVudDo6U25h
cHNob3Q+IE5hdGl2ZVBERkRvY3VtZW50OjpTbmFwc2hvdDo6Y3JlYXRlKFJlZjxJbWFnZUJ1ZmZl
cj4mJiBpbWFnZUJ1ZmZlciwgY29uc3QgRmxvYXRSZWN0JiBpbWFnZUJ1ZmZlclJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0pCit7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxT
bmFwc2hvdD4obmV3IFNuYXBzaG90KFdURk1vdmUoaW1hZ2VCdWZmZXIpLCBpbWFnZUJ1ZmZlclJl
Y3QsIGRlc3RSZWN0LCBzcmNSZWN0LCB0cmFuc2Zvcm0pKTsKK30KKworTmF0aXZlUERGRG9jdW1l
bnQ6OlNuYXBzaG90OjpTbmFwc2hvdChSZWY8SW1hZ2VCdWZmZXI+JiYgaW1hZ2VCdWZmZXIsIGNv
bnN0IEZsb2F0UmVjdCYgc25hcHNob3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3Jt
KQorICAgIDogbV9pbWFnZUJ1ZmZlcihXVEZNb3ZlKGltYWdlQnVmZmVyKSkKKyAgICAsIG1fc25h
cHNob3RSZWN0KHNuYXBzaG90UmVjdCkKKyAgICAsIG1fZGVzdFJlY3QoZGVzdFJlY3QpCisgICAg
LCBtX3NyY1JlY3Qoc3JjUmVjdCkKKyAgICAsIG1fdHJhbnNmb3JtKHRyYW5zZm9ybSkKK3sKKyAg
ICBBU1NFUlQobWF4U25hcHNob3RzTWVtb3J5Q29zdCAtIG1fYWxsU25hcHNob3RzTWVtb3J5Q29z
dCA+PSBtZW1vcnlDb3N0KCkpOworICAgIG1fYWxsU25hcHNob3RzTWVtb3J5Q29zdCArPSBtZW1v
cnlDb3N0KCk7Cit9CisKK05hdGl2ZVBERkRvY3VtZW50OjpTbmFwc2hvdDo6flNuYXBzaG90KCkK
K3sKKyAgICBBU1NFUlQobV9hbGxTbmFwc2hvdHNNZW1vcnlDb3N0ID49IG1lbW9yeUNvc3QoKSk7
CisgICAgbV9hbGxTbmFwc2hvdHNNZW1vcnlDb3N0IC09IG1lbW9yeUNvc3QoKTsKK30KKworRmxv
YXRSZWN0IE5hdGl2ZVBERkRvY3VtZW50OjpTbmFwc2hvdDo6Y2FsY3VsYXRlU25hcHNob3RSZWN0
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCkKK3sK
KyAgICBGbG9hdFJlY3QgZGlydHlSZWN0ID0gY29udGV4dC5jbGlwQm91bmRzKCk7CisKKyAgICAv
LyBDYWxjdWxhdGUgdGhlIG1heGltdW0gcmVjdGFuZ2xlIHdlIGNhbiBjYWNoZSBhcm91bmQgdGhl
IGNlbnRlciBvZiB0aGUgY2xpcHBpbmcgYm91bmRzLgorICAgIEZsb2F0U2l6ZSBtYXhTaXplID0g
bWF4U25hcHNob3RTaWRlIC8gY29udGV4dC5zY2FsZUZhY3RvcigpOworICAgIEZsb2F0UG9pbnQg
bWluTG9jYXRpb24gPSBGbG9hdFBvaW50KGRpcnR5UmVjdC5jZW50ZXIoKSAtIG1heFNpemUgLyAy
KTsKKworICAgIC8vIEVuc3VyZSB0aGUgY2xpcHBpbmcgYm91bmRzIGFyZSBhbGwgaW5jbHVkZWQg
YnV0IHdpdGhpbiB0aGUgYm91bmRzIG9mIHRoZSBkc3RSZWN0CisgICAgcmV0dXJuIGludGVyc2Vj
dGlvbih1bmlvblJlY3QoZGlydHlSZWN0LCBGbG9hdFJlY3QobWluTG9jYXRpb24sIG1heFNpemUp
KSwgZGVzdFJlY3QpOworfQorCitib29sIE5hdGl2ZVBERkRvY3VtZW50OjpTbmFwc2hvdDo6Y2Fu
Q3JlYXRlU25hcHNob3QoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFNpemUm
IGltYWdlQnVmZmVyU2l6ZSkKK3sKKyAgICBhdXRvIG1lbW9yeUNvc3QgPSBJbWFnZUJ1ZmZlcjo6
Y29tcGF0aWJsZUJ1ZmZlclNpemUoaW1hZ2VCdWZmZXJTaXplLCBjb250ZXh0KS51bmNsYW1wZWRB
cmVhKCkgKiA0OworICAgIHJldHVybiBtYXhTbmFwc2hvdHNNZW1vcnlDb3N0IC0gbV9hbGxTbmFw
c2hvdHNNZW1vcnlDb3N0ID49IG1lbW9yeUNvc3Q7Cit9CisKK2Jvb2wgTmF0aXZlUERGRG9jdW1l
bnQ6OlNuYXBzaG90OjpjYW5CZVJldXNlZChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCkgY29uc3QKK3sK
KyAgICAvLyBPbGQgYW5kIG5ldyBzb3VyY2UgcmVjdGFuZ2xlcyBoYXZlIHRvIG1hdGNoLgorICAg
IGlmIChzcmNSZWN0ICE9IG1fc3JjUmVjdCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
Ly8gT2xkIGFuZCBuZXcgc2NhbGluZyBmYWN0b3JzICJkZXN0IC8gc3JjIiBoYXZlIHRvIG1hdGNo
LgorICAgIGlmIChkZXN0UmVjdC5zaXplKCkgIT0gbV9kZXN0UmVjdC5zaXplKCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIC8vIG1fc25hcHNob3RSZWN0dCBjYW4gYmUgbW92ZWQgaWYg
c3JjUmVjdCBhbmQgZGVzdFJlY3Quc2l6ZSgpIGRpZCBub3QgY2hhbmdlLgorICAgIEZsb2F0UmVj
dCBtb3ZlZFNuYXBzaG90UmVjdCA9IG1fc25hcHNob3RSZWN0OworICAgIG1vdmVkU25hcHNob3RS
ZWN0Lm1vdmUoRmxvYXRTaXplKGRlc3RSZWN0LmxvY2F0aW9uKCkgLSBtX2Rlc3RSZWN0LmxvY2F0
aW9uKCkpKTsKKworICAgIC8vIG1vdmVkQ2FjaGVkSW1hZ2VSZWN0IGhhcyB0byBjb250YWluIHRo
ZSB3aG9sZSBkaXJ0eSByZWN0YW5nbGUuCisgICAgRmxvYXRSZWN0IGRpcnR5UmVjdCA9IGludGVy
c2VjdGlvbihjb250ZXh0LmNsaXBCb3VuZHMoKSwgZGVzdFJlY3QpOworICAgIGlmICghbW92ZWRT
bmFwc2hvdFJlY3QuY29udGFpbnMoZGlydHlSZWN0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgLy8gT2xkIGFuZCBuZXcgY29udGV4dCBzY2FsaW5nIGZhY3RvcnMgaGF2ZSB0byBtYXRj
aCBhcyB3ZWxsLgorICAgIEFmZmluZVRyYW5zZm9ybTo6RGVjb21wb3NlZFR5cGUgZGVjb21wb3Nl
ZFRyYW5zZm9ybTsKKyAgICBjb250ZXh0LmdldENUTShHcmFwaGljc0NvbnRleHQ6OkRlZmluaXRl
bHlJbmNsdWRlRGV2aWNlU2NhbGUpLmRlY29tcG9zZShkZWNvbXBvc2VkVHJhbnNmb3JtKTsKKwor
ICAgIEFmZmluZVRyYW5zZm9ybTo6RGVjb21wb3NlZFR5cGUgY2FjaGVkRGVjb21wb3NlZFRyYW5z
Zm9ybTsKKyAgICBtX3RyYW5zZm9ybS5kZWNvbXBvc2UoY2FjaGVkRGVjb21wb3NlZFRyYW5zZm9y
bSk7CisgICAgCisgICAgcmV0dXJuIGRlY29tcG9zZWRUcmFuc2Zvcm0uc2NhbGVYID09IGNhY2hl
ZERlY29tcG9zZWRUcmFuc2Zvcm0uc2NhbGVYICYmIGRlY29tcG9zZWRUcmFuc2Zvcm0uc2NhbGVZ
ID09IGNhY2hlZERlY29tcG9zZWRUcmFuc2Zvcm0uc2NhbGVZOworfQorCitzaXplX3QgTmF0aXZl
UERGRG9jdW1lbnQ6OlNuYXBzaG90OjptZW1vcnlDb3N0KCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9pbWFnZUJ1ZmZlci0+YmFja2VuZFNpemUoKS51bmNsYW1wZWRBcmVhKCkgKiA0OworfQorCiti
b29sIE5hdGl2ZVBERkRvY3VtZW50OjpTbmFwc2hvdDo6dHJhbnNmZXJWaWV3cG9ydChHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCkKK3sKKyAgICBpZiAoIWNhbkJlUmV1c2VkKGNvbnRleHQsIGRlc3RSZWN0
LCBzcmNSZWN0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbV9zbmFwc2hvdFJlY3Qu
bW92ZShGbG9hdFNpemUoZGVzdFJlY3QubG9jYXRpb24oKSAtIG1fZGVzdFJlY3QubG9jYXRpb24o
KSkpOworICAgIG1fZGVzdFJlY3QgPSBkZXN0UmVjdDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
dm9pZCBOYXRpdmVQREZEb2N1bWVudDo6U25hcHNob3Q6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0KQoreworICAgIGNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKG1faW1hZ2VCdWZmZXIsIG1f
ZGVzdFJlY3QpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9OYXRpdmVQREZEb2N1bWVudC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlUERGRG9jdW1lbnQuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li45MjY1OWVmYzhhMjkwOGY1MjA5N2M1NDE1MWFmMjUyYWVlMzgyMWJjCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmF0aXZlUERGRG9jdW1lbnQu
aApAQCAtMCwwICsxLDEyOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgor
I2luY2x1ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1ZGUgIlBERkltYWdlQ2FjaGluZ1BvbGljeS5o
IgorI2luY2x1ZGUgIlBsYXRmb3JtUERGRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBJbWFn
ZUJ1ZmZlcjsKK3N0cnVjdCBJbWFnZVBhaW50aW5nT3B0aW9uczsKKworY2xhc3MgTmF0aXZlUERG
RG9jdW1lbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxOYXRpdmVQREZEb2N1bWVudD4geworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGNsYXNzIE9ic2VydmVyIHsKKyAg
ICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgfk9ic2VydmVyKCkgPSBkZWZhdWx0OworICAgICAg
ICB2aXJ0dWFsIHZvaWQgcmVsZWFzZU5hdGl2ZVBERkRvY3VtZW50KFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcikgPSAwOworICAgIHByb3RlY3RlZDoKKyAgICAgICAgT2JzZXJ2ZXIoKSA9IGRl
ZmF1bHQ7CisgICAgfTsKKworICAgIHN0YXRpYyBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8TmF0aXZl
UERGRG9jdW1lbnQ+IGNyZWF0ZShTaGFyZWRCdWZmZXImLCBSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIgPSBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI6OmdlbmVyYXRlKCkpOworCisgICAg
V0VCQ09SRV9FWFBPUlQgfk5hdGl2ZVBERkRvY3VtZW50KCk7CisKKyAgICBjb25zdCBTaGFyZWRC
dWZmZXImIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuZ2V0KCk7IH0KKyAgICBSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCkgY29uc3Qg
eyByZXR1cm4gbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7IH0KKyAgICB2b2lkIHNldE9i
c2VydmVyKE9ic2VydmVyKiBvYnNlcnZlcikgeyBtX29ic2VydmVyID0gb2JzZXJ2ZXI7IH0KKwor
ICAgIEZsb2F0U2l6ZSBzaXplKCkgY29uc3Q7CisgICAgdW5zaWduZWQgcGFnZUNvdW50KCkgY29u
c3Q7CisKKyAgICBQREZJbWFnZUNhY2hpbmdQb2xpY3kgcGRmSW1hZ2VDYWNoaW5nUG9saWN5KCkg
Y29uc3QgeyByZXR1cm4gbV9wZGZJbWFnZUNhY2hpbmdQb2xpY3k7IH0KKyAgICB2b2lkIHNldFBE
RkltYWdlQ2FjaGluZ1BvbGljeShQREZJbWFnZUNhY2hpbmdQb2xpY3kgcGRmSW1hZ2VDYWNoaW5n
UG9saWN5KSB7IG1fcGRmSW1hZ2VDYWNoaW5nUG9saWN5ID0gcGRmSW1hZ2VDYWNoaW5nUG9saWN5
OyB9CisKKyAgICB2b2lkIGNvbXB1dGVCb3VuZHNGb3JDdXJyZW50UGFnZSgpOworICAgIHZvaWQg
ZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYpOworCisgICAgdW5zaWduZWQgY2FjaGluZ0NvdW50Rm9yVGVzdGlu
ZygpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGluZ0NvdW50Rm9yVGVzdGluZzsgfQorICAgIHNpemVf
dCBzbmFwc2hvdE1lbW9yeUNvc3QoKSBjb25zdCB7IHJldHVybiBtX3NuYXBzaG90ID8gbV9zbmFw
c2hvdC0+bWVtb3J5Q29zdCgpIDogMDsgfQorICAgIHZvaWQgY2xlYXJTbmFwc2hvdCgpIHsgbV9z
bmFwc2hvdCA9IG51bGxwdHI7IH0KKyAgICAKKyAgICB2b2lkIGR1bXAoV1RGOjpUZXh0U3RyZWFt
JikgY29uc3Q7CisKKyNpZiBFTkFCTEUoUERGS0lUX0ZPUl9QREZET0NVTUVOVElNQUdFKQorICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGF0YVJlZj4gY29udmVy
dFBvc3RTY3JpcHREYXRhVG9QREYoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBwb3N0U2NyaXB0RGF0
YSk7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBjbGFzcyBTbmFwc2hvdCB7CisgICAgcHVibGlj
OgorICAgICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNuYXBzaG90PiBjcmVhdGUoUmVmPElt
YWdlQnVmZmVyPiYmLCBjb25zdCBGbG9hdFJlY3QmIGltYWdlQnVmZmVyUmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mKTsKKworICAgICAgICB+U25hcHNob3QoKTsKKyAgICAgICAgCisgICAgICAgIC8v
IFRvIGF2b2lkIHRoZSBqZXRzYW0gb24gaU9TLCB3ZSBhcmUgZ29pbmcgdG8gbGltaXQgdGhlIHNp
emUgb2YgYWxsIHRoZSBQREYgc25hcHNob3RzIHRvIGJlIDY0TUIuCisgICAgICAgIHN0YXRpYyBj
b25zdGV4cHIgc2l6ZV90IG1heFNuYXBzaG90U2lkZSA9IDQgKiAxMDI0OworICAgICAgICBzdGF0
aWMgY29uc3RleHByIHNpemVfdCBtYXhTbmFwc2hvdEFyZWEgPSBtYXhTbmFwc2hvdFNpZGUgKiBt
YXhTbmFwc2hvdFNpZGU7CisgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1heFNuYXBz
aG90c01lbW9yeUNvc3QgPSBtYXhTbmFwc2hvdEFyZWEgKiA0OworCisgICAgICAgIHN0YXRpYyBG
bG9hdFJlY3QgY2FsY3VsYXRlU25hcHNob3RSZWN0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QpOworICAgICAgICBzdGF0aWMgYm9vbCBjYW5DcmVhdGVTbmFwc2hv
dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFNpemUmIGltYWdlQnVmZmVyU2l6ZSk7CisK
KyAgICAgICAgc2l6ZV90IG1lbW9yeUNvc3QoKSBjb25zdDsKKyAgICAgICAgYm9vbCB0cmFuc2Zl
clZpZXdwb3J0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCk7CisgICAgICAgIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRl
eHQmKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIFNuYXBzaG90KFJlZjxJbWFnZUJ1ZmZlcj4m
JiwgY29uc3QgRmxvYXRSZWN0JiBpbWFnZUJ1ZmZlclJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJik7
CisgICAgICAgIGJvb2wgY2FuQmVSZXVzZWQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0KSBjb25zdDsKKworICAgICAg
ICBSZWY8SW1hZ2VCdWZmZXI+IG1faW1hZ2VCdWZmZXI7CisgICAgICAgIEZsb2F0UmVjdCBtX3Nu
YXBzaG90UmVjdDsKKyAgICAgICAgRmxvYXRSZWN0IG1fZGVzdFJlY3Q7CisgICAgICAgIEZsb2F0
UmVjdCBtX3NyY1JlY3Q7CisgICAgICAgIEFmZmluZVRyYW5zZm9ybSBtX3RyYW5zZm9ybTsKKyAg
ICAgICAgaW5saW5lIHN0YXRpYyBzaXplX3QgbV9hbGxTbmFwc2hvdHNNZW1vcnlDb3N0IHsgMCB9
OworICAgIH07CisKKyAgICBOYXRpdmVQREZEb2N1bWVudChTaGFyZWRCdWZmZXImLCBSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIsIFBsYXRmb3JtUERGRG9jdW1lbnRQdHImJik7CisKKyAgICB2
b2lkIHVwZGF0ZVNuYXBzaG90SWZOZWVkZWQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRT
aXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCk7CisgICAgdm9pZCBkcmF3UERGUGFnZShHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBGbG9hdFNpemUmIGltYWdlU2l6ZSk7CisKKyAgICBSZWY8U2hhcmVkQnVmZmVyPiBtX2RhdGE7
CisgICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyOworCisgICAgT2JzZXJ2ZXIqIG1fb2JzZXJ2ZXIgeyBudWxscHRyIH07CisgICAgUGxh
dGZvcm1QREZEb2N1bWVudFB0ciBtX3BsYXRmb3JtUERGRG9jdW1lbnQ7CisKKyAgICBGbG9hdFJl
Y3QgbV9jcm9wQm94OworICAgIGludCBtX3JvdGF0aW9uRGVncmVlcyB7IDAgfTsgLy8gQ2FuIG9u
bHkgYmUgMCwgOTAsIDE4MCwgb3IgMjcwIGRlZ3JlZXMuCisKKyAgICBQREZJbWFnZUNhY2hpbmdQ
b2xpY3kgbV9wZGZJbWFnZUNhY2hpbmdQb2xpY3kgeyBkZWZhdWx0UERGSW1hZ2VDYWNoaW5nUG9s
aWN5IH07CisgICAgc3RkOjp1bmlxdWVfcHRyPFNuYXBzaG90PiBtX3NuYXBzaG90OworICAgIHVu
c2lnbmVkIG1fY2FjaGluZ0NvdW50Rm9yVGVzdGluZyB7IDAgfTsKK307CisKK3VzaW5nIE5hdGl2
ZVBERkRvY3VtZW50SGFzaE1hcCA9IEhhc2hNYXA8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
LCBSZWY8TmF0aXZlUERGRG9jdW1lbnQ+PjsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUERGRG9jdW1lbnRJbWFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QREZEb2N1bWVudEltYWdl
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi43Nzg1ZjY0MDUyMWY4NGU4ZWVkZGI4MWFiNjY2ZmUyMDkyZDQxZWY3
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUERG
RG9jdW1lbnRJbWFnZS5jcHAKQEAgLTAsMCArMSwxMzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDQtMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlBERkRvY3VtZW50SW1hZ2UuaCIKKworI2lmIEVOQUJMRShQREZET0NVTUVOVElNQUdF
KQorCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiSW1hZ2VPYnNlcnZl
ci5oIgorI2luY2x1ZGUgIk5hdGl2ZVBERkRvY3VtZW50LmgiCisjaW5jbHVkZSA8d3RmL3RleHQv
VGV4dFN0cmVhbS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1BERkRvY3VtZW50SW1hZ2U6
OlBERkRvY3VtZW50SW1hZ2UoSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCisgICAgOiBJbWFnZShv
YnNlcnZlcikKK3sKK30KKworUERGRG9jdW1lbnRJbWFnZTo6flBERkRvY3VtZW50SW1hZ2UoKQor
eworICAgIGRlc3Ryb3lEZWNvZGVkRGF0YSh0cnVlKTsKK30KKworU3RyaW5nIFBERkRvY3VtZW50
SW1hZ2U6OmZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gInBkZiI7Cit9
CisKK0Zsb2F0U2l6ZSBQREZEb2N1bWVudEltYWdlOjpzaXplKEltYWdlT3JpZW50YXRpb24pIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fbmF0aXZlUERGRG9jdW1lbnQgPyBtX25hdGl2ZVBERkRvY3Vt
ZW50LT5zaXplKCkgOiBGbG9hdFNpemUoKTsKK30KKwordW5zaWduZWQgUERGRG9jdW1lbnRJbWFn
ZTo6Y2FjaGluZ0NvdW50Rm9yVGVzdGluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbmF0aXZl
UERGRG9jdW1lbnQgPyBtX25hdGl2ZVBERkRvY3VtZW50LT5jYWNoaW5nQ291bnRGb3JUZXN0aW5n
KCkgOiAwOworfQorCit2b2lkIFBERkRvY3VtZW50SW1hZ2U6OnNldFBkZkltYWdlQ2FjaGluZ1Bv
bGljeShQREZJbWFnZUNhY2hpbmdQb2xpY3kgcGRmSW1hZ2VDYWNoaW5nUG9saWN5KQoreworICAg
IGlmICghbV9uYXRpdmVQREZEb2N1bWVudCB8fCBtX25hdGl2ZVBERkRvY3VtZW50LT5wZGZJbWFn
ZUNhY2hpbmdQb2xpY3koKSA9PSBwZGZJbWFnZUNhY2hpbmdQb2xpY3kpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fbmF0aXZlUERGRG9jdW1lbnQtPnNldFBERkltYWdlQ2FjaGluZ1BvbGljeShw
ZGZJbWFnZUNhY2hpbmdQb2xpY3kpOworICAgIGRlc3Ryb3lEZWNvZGVkRGF0YSgpOworfQorCitF
bmNvZGVkRGF0YVN0YXR1cyBQREZEb2N1bWVudEltYWdlOjpkYXRhQ2hhbmdlZChib29sIGFsbERh
dGFSZWNlaXZlZCkKK3sKKyAgICBBU1NFUlQoIW1fbmF0aXZlUERGRG9jdW1lbnQpOworCisgICAg
aWYgKGFsbERhdGFSZWNlaXZlZCAmJiAhbV9uYXRpdmVQREZEb2N1bWVudCkKKyAgICAgICAgbV9u
YXRpdmVQREZEb2N1bWVudCA9IE5hdGl2ZVBERkRvY3VtZW50OjpjcmVhdGUoKmRhdGEoKSk7CisK
KyAgICByZXR1cm4gbV9uYXRpdmVQREZEb2N1bWVudCA/IEVuY29kZWREYXRhU3RhdHVzOjpDb21w
bGV0ZSA6IEVuY29kZWREYXRhU3RhdHVzOjpVbmtub3duOworfQorCit2b2lkIFBERkRvY3VtZW50
SW1hZ2U6OmRlc3Ryb3lEZWNvZGVkRGF0YShib29sKQoreworICAgIGlmIChtX25hdGl2ZVBERkRv
Y3VtZW50KQorICAgICAgICBtX25hdGl2ZVBERkRvY3VtZW50LT5jbGVhclNuYXBzaG90KCk7Cisg
ICAgZGVjb2RlZFNpemVDaGFuZ2VkKCk7Cit9CisKK3ZvaWQgUERGRG9jdW1lbnRJbWFnZTo6ZGVj
b2RlZFNpemVDaGFuZ2VkKCkKK3sKKyAgICBzaXplX3QgbmV3TWVtb3J5Q29zdCA9IG1fbmF0aXZl
UERGRG9jdW1lbnQgPyBtX25hdGl2ZVBERkRvY3VtZW50LT5zbmFwc2hvdE1lbW9yeUNvc3QoKSA6
IDA7CisgICAgaWYgKG1fbWVtb3J5Q29zdCA9PSBuZXdNZW1vcnlDb3N0KQorICAgICAgICByZXR1
cm47CisKKyAgICBpZiAoaW1hZ2VPYnNlcnZlcigpKQorICAgICAgICBpbWFnZU9ic2VydmVyKCkt
PmRlY29kZWRTaXplQ2hhbmdlZCgqdGhpcywgLXN0YXRpY19jYXN0PGxvbmcgbG9uZz4obV9tZW1v
cnlDb3N0KSArIG5ld01lbW9yeUNvc3QpOworCisgICAgbV9tZW1vcnlDb3N0ID0gbmV3TWVtb3J5
Q29zdDsKK30KKwordm9pZCBQREZEb2N1bWVudEltYWdlOjpjb21wdXRlSW50cmluc2ljRGltZW5z
aW9ucyhMZW5ndGgmIGludHJpbnNpY1dpZHRoLCBMZW5ndGgmIGludHJpbnNpY0hlaWdodCwgRmxv
YXRTaXplJiBpbnRyaW5zaWNSYXRpbykKK3sKKyAgICAvLyBGSVhNRTogSWYgd2Ugd2FudCBzaXpl
IG5lZ290aWF0aW9uIHdpdGggUERGIGRvY3VtZW50cyBhcy1pbWFnZSwgdGhpcyBpcyB0aGUgcGxh
Y2UgdG8gaW1wbGVtZW50IGl0IChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTIwOTUpLgorICAgIEltYWdlOjpjb21wdXRlSW50cmluc2ljRGltZW5zaW9ucyhpbnRyaW5z
aWNXaWR0aCwgaW50cmluc2ljSGVpZ2h0LCBpbnRyaW5zaWNSYXRpbyk7CisgICAgaW50cmluc2lj
UmF0aW8gPSBGbG9hdFNpemUoKTsKK30KKworSW1hZ2VEcmF3UmVzdWx0IFBERkRvY3VtZW50SW1h
Z2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
IG9wdGlvbnMpCit7CisgICAgaWYgKCFtX25hdGl2ZVBERkRvY3VtZW50IHx8ICFtX25hdGl2ZVBE
RkRvY3VtZW50LT5wYWdlQ291bnQoKSkKKyAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jlc3VsdDo6
RGlkTm90aGluZzsKKworICAgIGNvbnRleHQuZHJhd05hdGl2ZVBERkRvY3VtZW50KCptX25hdGl2
ZVBERkRvY3VtZW50LCBzaXplKCksIGRzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOworICAgIGRl
Y29kZWRTaXplQ2hhbmdlZCgpOworCisgICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkKKyAgICAgICAg
aW1hZ2VPYnNlcnZlcigpLT5kaWREcmF3KCp0aGlzKTsKKworICAgIHJldHVybiBJbWFnZURyYXdS
ZXN1bHQ6OkRpZERyYXc7Cit9CisKK3ZvaWQgUERGRG9jdW1lbnRJbWFnZTo6ZHVtcChUZXh0U3Ry
ZWFtJiB0cykgY29uc3QKK3sKKyAgICBJbWFnZTo6ZHVtcCh0cyk7CisgICAgaWYgKG1fbmF0aXZl
UERGRG9jdW1lbnQpCisgICAgICAgIG1fbmF0aXZlUERGRG9jdW1lbnQtPmR1bXAodHMpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoUERGRE9DVU1FTlRJ
TUFHRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BERkRv
Y3VtZW50SW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BERkRvY3Vt
ZW50SW1hZ2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMjM2ZTViNTQ4OTQ3OTc1NGZhOGVkM2VhOTI2MDA5YjM4
ODA1NjEwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUERGRG9jdW1lbnRJbWFnZS5oCkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDQtMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBF
TkFCTEUoUERGRE9DVU1FTlRJTUFHRSkKKworI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1
ZGUgIkdyYXBoaWNzVHlwZXMuaCIKKyNpbmNsdWRlICJJbWFnZS5oIgorI2luY2x1ZGUgIlBERklt
YWdlQ2FjaGluZ1BvbGljeS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdyYXBo
aWNzQ29udGV4dDsKK2NsYXNzIE5hdGl2ZVBERkRvY3VtZW50OworCitjbGFzcyBQREZEb2N1bWVu
dEltYWdlIGZpbmFsIDogcHVibGljIEltYWdlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFBE
RkRvY3VtZW50SW1hZ2U+IGNyZWF0ZShJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKKyAgICB7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBERkRvY3VtZW50SW1hZ2Uob2JzZXJ2ZXIpKTsK
KyAgICB9CisKKyAgICBXRUJDT1JFX0VYUE9SVCB1bnNpZ25lZCBjYWNoaW5nQ291bnRGb3JUZXN0
aW5nKCkgY29uc3Q7CisgICAgdm9pZCBzZXRQZGZJbWFnZUNhY2hpbmdQb2xpY3koUERGSW1hZ2VD
YWNoaW5nUG9saWN5KTsKKyAgICAKK3ByaXZhdGU6CisgICAgUERGRG9jdW1lbnRJbWFnZShJbWFn
ZU9ic2VydmVyKik7CisgICAgdmlydHVhbCB+UERGRG9jdW1lbnRJbWFnZSgpOworCisgICAgYm9v
bCBpc1BERkRvY3VtZW50SW1hZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Cisg
ICAgYm9vbCBoYXNTaW5nbGVTZWN1cml0eU9yaWdpbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHRydWU7IH0KKworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyB0byBiZSBsZXNzIGNvbnNl
cnZhdGl2ZS4KKyAgICBib29sIGN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24o
KSBjb25zdCBvdmVycmlkZTsKKyAgICBGbG9hdFNpemUgc2l6ZShJbWFnZU9yaWVudGF0aW9uID0g
SW1hZ2VPcmllbnRhdGlvbjo6RnJvbUltYWdlKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGRl
Y29kZWRTaXplQ2hhbmdlZCgpOworCisgICAgRW5jb2RlZERhdGFTdGF0dXMgZGF0YUNoYW5nZWQo
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpIG92ZXJyaWRlOworICAgIHZvaWQgZGVzdHJveURlY29kZWRE
YXRhKGJvb2wgLypkZXN0cm95QWxsKi8gPSB0cnVlKSBvdmVycmlkZTsKKworICAgIHZvaWQgY29t
cHV0ZUludHJpbnNpY0RpbWVuc2lvbnMoTGVuZ3RoJiBpbnRyaW5zaWNXaWR0aCwgTGVuZ3RoJiBp
bnRyaW5zaWNIZWlnaHQsIEZsb2F0U2l6ZSYgaW50cmluc2ljUmF0aW8pIG92ZXJyaWRlOworICAg
IEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgPSB7IH0pIG92ZXJyaWRlOworCisgICAgdm9pZCBkdW1wKFdURjo6VGV4dFN0cmVhbSYp
IGNvbnN0IG92ZXJyaWRlOworICAgIAorICAgIFJlZlB0cjxOYXRpdmVQREZEb2N1bWVudD4gbV9u
YXRpdmVQREZEb2N1bWVudDsKKyAgICBzaXplX3QgbV9tZW1vcnlDb3N0IHsgMCB9OworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0lNQUdFKFBE
RkRvY3VtZW50SW1hZ2UpCisKKyNlbmRpZiAvLyBFTkFCTEUoUERGRE9DVU1FTlRJTUFHRSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtUERGRG9j
dW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtUERGRG9j
dW1lbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wYTg3YTE3NmU3ZjkxM2UwMzBkNGI4MjBjYjgyMzEzOTg2MDY0
MjQxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UGxhdGZvcm1QREZEb2N1bWVudC5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBVU0UoQ0cp
CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2lmIEVOQUJMRShQREZLSVRfRk9SX1BERkRP
Q1VNRU5USU1BR0UpCitPQkpDX0NMQVNTIFBERkRvY3VtZW50OworI2Vsc2UKK3VzaW5nIENHUERG
RG9jdW1lbnRSZWYgPSBzdHJ1Y3QgQ0dQREZEb2N1bWVudCAqOworI2VuZGlmCisjZW5kaWYKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCisjaWYgVVNFKENHKQorI2lmIEVOQUJMRShQREZLSVRfRk9S
X1BERkRPQ1VNRU5USU1BR0UpCit1c2luZyBQbGF0Zm9ybVBERkRvY3VtZW50UHRyID0gUmV0YWlu
UHRyPFBERkRvY3VtZW50PjsKKyNlbHNlCit1c2luZyBQbGF0Zm9ybVBERkRvY3VtZW50UHRyID0g
UmV0YWluUHRyPENHUERGRG9jdW1lbnRSZWY+OworI2VuZGlmCisjZWxzZQordXNpbmcgUGxhdGZv
cm1QREZEb2N1bWVudFB0ciA9IHZvaWQqOworI2VuZGlmCisKKyNpZiBFTkFCTEUoUERGS0lUX0ZP
Ul9QREZET0NVTUVOVElNQUdFKQorV0VCQ09SRV9FWFBPUlQgUmV0YWluUHRyPENGTXV0YWJsZURh
dGFSZWY+IGNvbnZlcnRQb3N0U2NyaXB0RGF0YVRvUERGKFJldGFpblB0cjxDRkRhdGFSZWY+JiYg
cG9zdFNjcmlwdERhdGEpOworI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29u
dGV4dEltcGxDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9HcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm8uY3BwCmluZGV4IDE0NmE1ZWNhZDUwNTE0NWM5Zjg5
NTA2ZWM4ZGIwNTc3MjM2ZWIzZjcuLmM3MzMwM2Q5M2ZjNDM4ODIyMGVhNjVmYTdhN2EyYzE5M2E0
NDQwZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmNwcApAQCAtMjc2LDYg
KzI3NiwxMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJhd05hdGl2ZUltYWdl
KE5hdGl2ZUltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRTaQogICAgIENhaXJvOjpkcmF3UGxhdGZv
cm1JbWFnZShtX3BsYXRmb3JtQ29udGV4dCwgaW1hZ2UucGxhdGZvcm1JbWFnZSgpLmdldCgpLCBk
ZXN0UmVjdCwgc3JjUmVjdCwgeyBvcHRpb25zLCBzdGF0ZS5pbWFnZUludGVycG9sYXRpb25RdWFs
aXR5IH0sIHN0YXRlLmFscGhhLCBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpKTsKIH0KIAordm9p
ZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmRyYXdOYXRpdmVQREZEb2N1bWVudChOYXRpdmVQ
REZEb2N1bWVudCYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikKK3sKKyAgICAvLyBGSVhNRTog
Tm90IGltcGxlbWVudGVkLgorfQorCiB2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZHJh
d1BhdHRlcm4oTmF0aXZlSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBw
aGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYgb3B0aW9ucykKIHsKICAgICBVTlVTRURfUEFSQU0oc3BhY2luZyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRJbXBs
Q2Fpcm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNz
Q29udGV4dEltcGxDYWlyby5oCmluZGV4IDFiZTVhMDJkNGQ2M2MxOTAzMzg1MTNhOTVlZTQ1M2Q3
M2EwMTQ2OTYuLmY1YzQ0ZmJlMWM0NDYwODlhYmRjMDYzZTNmOTE4NGNlYmVhYzA0YzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29u
dGV4dEltcGxDYWlyby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5oCkBAIC03Myw2ICs3Myw3IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0
JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlk
ZTsKICAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0U2l6
ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3TmF0aXZlUERGRG9jdW1lbnQoTmF0
aXZlUERGRG9jdW1lbnQmLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAg
IHZvaWQgZHJhd1BhdHRlcm4oTmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6
ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxv
YXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwog
CiAgICAgdm9pZCBkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCkgb3ZlcnJpZGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVQ
REZEb2N1bWVudENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
aXJvL05hdGl2ZVBERkRvY3VtZW50Q2Fpcm8uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEzYWEyNDdhMDcxZGFk
OTk3NTRjNGNhMWFhMGYwNmI5NWI2MmI2YTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9OYXRpdmVQREZEb2N1bWVudENhaXJvLmNwcApA
QCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOYXRpdmVQREZEb2N1bWVudC5o
IgorCisjaWYgVVNFKENBSVJPKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZlB0cjxOYXRp
dmVQREZEb2N1bWVudD4gTmF0aXZlUERGRG9jdW1lbnQ6OmNyZWF0ZShTaGFyZWRCdWZmZXImLCBS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCit7CisgICAgLy8gRklYTUU6IE5vdCBpbXBsZW1l
bnRlZC4KKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwordm9pZCBOYXRpdmVQREZEb2N1bWVudDo6
Y29tcHV0ZUJvdW5kc0ZvckN1cnJlbnRQYWdlKCkKK3sKKyAgICAvLyBGSVhNRTogTm90IGltcGxl
bWVudGVkLgorfQorCit1bnNpZ25lZCBOYXRpdmVQREZEb2N1bWVudDo6cGFnZUNvdW50KCkgY29u
c3QKK3sKKyAgICAvLyBGSVhNRTogTm90IGltcGxlbWVudGVkLgorICAgIHJldHVybiAwOworfQor
Cit2b2lkIE5hdGl2ZVBERkRvY3VtZW50OjpkcmF3UERGUGFnZShHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBGbG9hdFNpemUmKQoreworICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuCit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFVTRShDQUlSTykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL05hdGl2ZVBERkRvY3VtZW50
Q0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZlUERGRG9j
dW1lbnRDRy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTk0NWVhNTk1NzBjMGU4ZTU4NGRjN2E5YjlhZDk5NjFj
ZDk3N2NkNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL05hdGl2ZVBERkRvY3VtZW50Q0cuY3BwCkBAIC0wLDAgKzEsMTAxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJOYXRpdmVQREZEb2N1bWVudC5oIgorCisjaWYgIUVOQUJMRShQREZLSVRf
Rk9SX1BERkRPQ1VNRU5USU1BR0UpCisKKyNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dQREZEb2N1
bWVudC5oPgorI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgPHBhbC9zcGkvY2cvQ29yZUdy
YXBoaWNzU1BJLmg+CisjZWxzZQorI2luY2x1ZGUgPENvcmVHcmFwaGljcy9DR0NvbnRleHQuaD4K
KyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZlB0cjxOYXRpdmVQREZEb2N1bWVu
dD4gTmF0aXZlUERGRG9jdW1lbnQ6OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEsIFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCit7CisgICAg
YXV0byBkYXRhUHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0
YShkYXRhLmNyZWF0ZUNGRGF0YSgpLmdldCgpKSk7CisgICAgaWYgKCFkYXRhUHJvdmlkZXIpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIAorICAgIGF1dG8gZG9jdW1lbnQgPSBhZG9wdENG
KENHUERGRG9jdW1lbnRDcmVhdGVXaXRoUHJvdmlkZXIoZGF0YVByb3ZpZGVyLmdldCgpKSk7Cisg
ICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4g
YWRvcHRSZWYobmV3IE5hdGl2ZVBERkRvY3VtZW50KGRhdGEsIHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciwgV1RGTW92ZShkb2N1bWVudCkpKTsKK30KKwordm9pZCBOYXRpdmVQREZEb2N1bWVu
dDo6Y29tcHV0ZUJvdW5kc0ZvckN1cnJlbnRQYWdlKCkKK3sKKyAgICBBU1NFUlQocGFnZUNvdW50
KCkgPiAwKTsKKyAgICBDR1BERlBhZ2VSZWYgY2dQYWdlID0gQ0dQREZEb2N1bWVudEdldFBhZ2Uo
bV9wbGF0Zm9ybVBERkRvY3VtZW50LmdldCgpLCAxKTsKKyAgICBDR1JlY3QgbWVkaWFCb3ggPSBD
R1BERlBhZ2VHZXRCb3hSZWN0KGNnUGFnZSwga0NHUERGTWVkaWFCb3gpOworCisgICAgLy8gR2V0
IGNyb3AgYm94IChub3QgYWx3YXlzIHRoZXJlKS4gSWYgbm90LCB1c2UgbWVkaWEgYm94LgorICAg
IENHUmVjdCByID0gQ0dQREZQYWdlR2V0Qm94UmVjdChjZ1BhZ2UsIGtDR1BERkNyb3BCb3gpOwor
ICAgIGlmICghQ0dSZWN0SXNFbXB0eShyKSkKKyAgICAgICAgbV9jcm9wQm94ID0gcjsKKyAgICBl
bHNlCisgICAgICAgIG1fY3JvcEJveCA9IG1lZGlhQm94OworCisgICAgbV9yb3RhdGlvbkRlZ3Jl
ZXMgPSBDR1BERlBhZ2VHZXRSb3RhdGlvbkFuZ2xlKGNnUGFnZSk7Cit9CisKK3Vuc2lnbmVkIE5h
dGl2ZVBERkRvY3VtZW50OjpwYWdlQ291bnQoKSBjb25zdAoreworICAgIHJldHVybiBDR1BERkRv
Y3VtZW50R2V0TnVtYmVyT2ZQYWdlcyhtX3BsYXRmb3JtUERGRG9jdW1lbnQuZ2V0KCkpOworfQor
CitzdGF0aWMgdm9pZCBhcHBseVJvdGF0aW9uRm9yUGFpbnRpbmcoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBGbG9hdFNpemUgc2l6ZSwgaW50IHJvdGF0aW9uRGVncmVlcykKK3sKKyAgICBpZiAo
cm90YXRpb25EZWdyZWVzID09IDkwKQorICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZSgwLCBzaXpl
LmhlaWdodCgpKTsKKyAgICBlbHNlIGlmIChyb3RhdGlvbkRlZ3JlZXMgPT0gMTgwKQorICAgICAg
ICBjb250ZXh0LnRyYW5zbGF0ZShzaXplKTsKKyAgICBlbHNlIGlmIChyb3RhdGlvbkRlZ3JlZXMg
PT0gMjcwKQorICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZShzaXplLndpZHRoKCksIDApOworCisg
ICAgY29udGV4dC5yb3RhdGUoLWRlZzJyYWQoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHJvdGF0aW9uRGVn
cmVlcykpKTsKK30KKwordm9pZCBOYXRpdmVQREZEb2N1bWVudDo6ZHJhd1BERlBhZ2UoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSkKK3sKKyAgICBh
cHBseVJvdGF0aW9uRm9yUGFpbnRpbmcoY29udGV4dCwgaW1hZ2VTaXplLCBtX3JvdGF0aW9uRGVn
cmVlcyk7CisKKyAgICBjb250ZXh0LnRyYW5zbGF0ZSgtbV9jcm9wQm94LmxvY2F0aW9uKCkpOwor
CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgQ0dDb250ZXh0RHJhd1BERlBhZ2VXaXRoQW5ub3Rh
dGlvbnMoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgQ0dQREZEb2N1bWVudEdldFBhZ2UobV9w
bGF0Zm9ybVBERkRvY3VtZW50LmdldCgpLCAxKSwgbnVsbHB0cik7CisjZWxzZQorICAgIENHQ29u
dGV4dERyYXdQREZQYWdlKGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCksIENHUERGRG9jdW1lbnRH
ZXRQYWdlKG1fcGxhdGZvcm1QREZEb2N1bWVudC5nZXQoKSwgMSkpOworI2VuZGlmCit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vICFFTkFCTEUoUERGS0lUX0ZPUl9QREZE
T0NVTUVOVElNQUdFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZGM0OTg1ZjljNTlhYWFjZDNkZjViNWRjNTZiOWQ4OTA4NDgxYmY5Yi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDM4
OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDEzIEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUERGRG9j
dW1lbnRJbWFnZS5oIgotCi0jaWYgVVNFKENHKQotCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
LSNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNzLmg+Ci0jaW5jbHVkZSA8SW1hZ2VJ
Ty9JbWFnZUlPLmg+Ci0jZW5kaWYKLQotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgotI2lu
Y2x1ZGUgIkltYWdlQnVmZmVyLmgiCi0jaW5jbHVkZSAiSW1hZ2VPYnNlcnZlci5oIgotI2luY2x1
ZGUgIkludFJlY3QuaCIKLSNpbmNsdWRlICJMZW5ndGguaCIKLSNpbmNsdWRlICJOb3RJbXBsZW1l
bnRlZC5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgotI2luY2x1ZGUgPENvcmVHcmFwaGlj
cy9DR0NvbnRleHQuaD4KLSNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dQREZEb2N1bWVudC5oPgot
I2luY2x1ZGUgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+Ci0jaW5jbHVkZSA8d3RmL01h
dGhFeHRyYXMuaD4KLSNpbmNsdWRlIDx3dGYvUkFNU2l6ZS5oPgotI2luY2x1ZGUgPHd0Zi9SZXRh
aW5QdHIuaD4KLSNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL3Rl
eHQvVGV4dFN0cmVhbS5oPgotCi0jaWYgIVBMQVRGT1JNKENPQ09BKQotI2luY2x1ZGUgIkltYWdl
U291cmNlQ0cuaCIKLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVBERkRvY3VtZW50
SW1hZ2U6OlBERkRvY3VtZW50SW1hZ2UoSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCi0gICAgOiBJ
bWFnZShvYnNlcnZlcikKLXsKLX0KLQotUERGRG9jdW1lbnRJbWFnZTo6flBERkRvY3VtZW50SW1h
Z2UoKSA9IGRlZmF1bHQ7Ci0KLVN0cmluZyBQREZEb2N1bWVudEltYWdlOjpmaWxlbmFtZUV4dGVu
c2lvbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICJwZGYiOwotfQotCi1GbG9hdFNpemUgUERGRG9j
dW1lbnRJbWFnZTo6c2l6ZShJbWFnZU9yaWVudGF0aW9uKSBjb25zdAotewotICAgIEZsb2F0U2l6
ZSBleHBhbmRlZENyb3BCb3hTaXplID0gRmxvYXRTaXplKGV4cGFuZGVkSW50U2l6ZShtX2Nyb3BC
b3guc2l6ZSgpKSk7Ci0KLSAgICBpZiAobV9yb3RhdGlvbkRlZ3JlZXMgPT0gOTAgfHwgbV9yb3Rh
dGlvbkRlZ3JlZXMgPT0gMjcwKQotICAgICAgICByZXR1cm4gZXhwYW5kZWRDcm9wQm94U2l6ZS50
cmFuc3Bvc2VkU2l6ZSgpOwotICAgIHJldHVybiBleHBhbmRlZENyb3BCb3hTaXplOwotfQotCi12
b2lkIFBERkRvY3VtZW50SW1hZ2U6OmNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKExlbmd0aCYg
aW50cmluc2ljV2lkdGgsIExlbmd0aCYgaW50cmluc2ljSGVpZ2h0LCBGbG9hdFNpemUmIGludHJp
bnNpY1JhdGlvKQotewotICAgIC8vIEZJWE1FOiBJZiB3ZSB3YW50IHNpemUgbmVnb3RpYXRpb24g
d2l0aCBQREYgZG9jdW1lbnRzIGFzLWltYWdlLCB0aGlzIGlzIHRoZSBwbGFjZSB0byBpbXBsZW1l
bnQgaXQgKGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjA5NSkuCi0g
ICAgSW1hZ2U6OmNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKGludHJpbnNpY1dpZHRoLCBpbnRy
aW5zaWNIZWlnaHQsIGludHJpbnNpY1JhdGlvKTsKLSAgICBpbnRyaW5zaWNSYXRpbyA9IEZsb2F0
U2l6ZSgpOwotfQotCi1FbmNvZGVkRGF0YVN0YXR1cyBQREZEb2N1bWVudEltYWdlOjpkYXRhQ2hh
bmdlZChib29sIGFsbERhdGFSZWNlaXZlZCkKLXsKLSAgICBBU1NFUlQoIW1fZG9jdW1lbnQpOwot
ICAgIGlmIChhbGxEYXRhUmVjZWl2ZWQgJiYgIW1fZG9jdW1lbnQpIHsKLSAgICAgICAgY3JlYXRl
UERGRG9jdW1lbnQoKTsKLQotICAgICAgICBpZiAocGFnZUNvdW50KCkpIHsKLSAgICAgICAgICAg
IG1faGFzUGFnZSA9IHRydWU7Ci0gICAgICAgICAgICBjb21wdXRlQm91bmRzRm9yQ3VycmVudFBh
Z2UoKTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gbV9kb2N1bWVudCA/IEVuY29kZWRE
YXRhU3RhdHVzOjpDb21wbGV0ZSA6IEVuY29kZWREYXRhU3RhdHVzOjpVbmtub3duOwotfQotCi12
b2lkIFBERkRvY3VtZW50SW1hZ2U6OnNldFBkZkltYWdlQ2FjaGluZ1BvbGljeShQREZJbWFnZUNh
Y2hpbmdQb2xpY3kgcGRmSW1hZ2VDYWNoaW5nUG9saWN5KQotewotICAgIGlmIChtX3BkZkltYWdl
Q2FjaGluZ1BvbGljeSA9PSBwZGZJbWFnZUNhY2hpbmdQb2xpY3kpCi0gICAgICAgIHJldHVybjsK
LQotICAgIG1fcGRmSW1hZ2VDYWNoaW5nUG9saWN5ID0gcGRmSW1hZ2VDYWNoaW5nUG9saWN5Owot
ICAgIGRlc3Ryb3lEZWNvZGVkRGF0YSgpOwotfQotCi1ib29sIFBERkRvY3VtZW50SW1hZ2U6OmNh
Y2hlUGFyYW1ldGVyc01hdGNoKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRS
ZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QpIGNvbnN0Ci17Ci0gICAgLy8g
T2xkIGFuZCBuZXcgc291cmNlIHJlY3RhbmdsZXMgaGF2ZSB0byBtYXRjaC4KLSAgICBpZiAoc3Jj
UmVjdCAhPSBtX2NhY2hlZFNvdXJjZVJlY3QpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IC8vIE9sZCBhbmQgbmV3IHNjYWxpbmcgZmFjdG9ycyAiZGVzdCAvIHNyYyIgaGF2ZSB0byBtYXRj
aC4KLSAgICBpZiAoZHN0UmVjdC5zaXplKCkgIT0gbV9jYWNoZWREZXN0aW5hdGlvblJlY3Quc2l6
ZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBtX2NhY2hlZEltYWdlUmVjdCBj
YW4gYmUgbW92ZWQgaWYgc3JjUmVjdCBhbmQgZHN0UmVjdC5zaXplKCkgZGlkIG5vdCBjaGFuZ2Uu
Ci0gICAgRmxvYXRSZWN0IG1vdmVkQ2FjaGVkSW1hZ2VSZWN0ID0gbV9jYWNoZWRJbWFnZVJlY3Q7
Ci0gICAgbW92ZWRDYWNoZWRJbWFnZVJlY3QubW92ZShGbG9hdFNpemUoZHN0UmVjdC5sb2NhdGlv
bigpIC0gbV9jYWNoZWREZXN0aW5hdGlvblJlY3QubG9jYXRpb24oKSkpOwotCi0gICAgLy8gbW92
ZWRDYWNoZWRJbWFnZVJlY3QgaGFzIHRvIGNvbnRhaW4gdGhlIHdob2xlIGRpcnR5IHJlY3Rhbmds
ZS4KLSAgICBGbG9hdFJlY3QgZGlydHlSZWN0ID0gaW50ZXJzZWN0aW9uKGNvbnRleHQuY2xpcEJv
dW5kcygpLCBkc3RSZWN0KTsKLSAgICBpZiAoIW1vdmVkQ2FjaGVkSW1hZ2VSZWN0LmNvbnRhaW5z
KGRpcnR5UmVjdCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIE9sZCBhbmQgbmV3
IGNvbnRleHQgc2NhbGluZyBmYWN0b3JzIGhhdmUgdG8gbWF0Y2ggYXMgd2VsbC4KLSAgICBBZmZp
bmVUcmFuc2Zvcm06OkRlY29tcG9zZWRUeXBlIGRlY29tcG9zZWRUcmFuc2Zvcm07Ci0gICAgY29u
dGV4dC5nZXRDVE0oR3JhcGhpY3NDb250ZXh0OjpEZWZpbml0ZWx5SW5jbHVkZURldmljZVNjYWxl
KS5kZWNvbXBvc2UoZGVjb21wb3NlZFRyYW5zZm9ybSk7Ci0KLSAgICBBZmZpbmVUcmFuc2Zvcm06
OkRlY29tcG9zZWRUeXBlIGNhY2hlZERlY29tcG9zZWRUcmFuc2Zvcm07Ci0gICAgbV9jYWNoZWRU
cmFuc2Zvcm0uZGVjb21wb3NlKGNhY2hlZERlY29tcG9zZWRUcmFuc2Zvcm0pOwotICAgIGlmIChk
ZWNvbXBvc2VkVHJhbnNmb3JtLnNjYWxlWCAhPSBjYWNoZWREZWNvbXBvc2VkVHJhbnNmb3JtLnNj
YWxlWCB8fCBkZWNvbXBvc2VkVHJhbnNmb3JtLnNjYWxlWSAhPSBjYWNoZWREZWNvbXBvc2VkVHJh
bnNmb3JtLnNjYWxlWSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRydWU7
Ci19Ci0KLXN0YXRpYyB2b2lkIHRyYW5zZm9ybUNvbnRleHRGb3JQYWludGluZyhHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0KQotewotICAgIGZsb2F0IGhTY2FsZSA9IGRzdFJlY3Qud2lkdGgoKSAvIHNyY1Jl
Y3Qud2lkdGgoKTsKLSAgICBmbG9hdCB2U2NhbGUgPSBkc3RSZWN0LmhlaWdodCgpIC8gc3JjUmVj
dC5oZWlnaHQoKTsKLQotICAgIGlmIChoU2NhbGUgIT0gdlNjYWxlKSB7Ci0gICAgICAgIGZsb2F0
IG1pbmltdW1TY2FsZSA9IHN0ZDo6bWF4KChkc3RSZWN0LndpZHRoKCkgLSAwLjUpIC8gc3JjUmVj
dC53aWR0aCgpLCAoZHN0UmVjdC5oZWlnaHQoKSAtIDAuNSkgLyBzcmNSZWN0LmhlaWdodCgpKTsK
LSAgICAgICAgZmxvYXQgbWF4aW11bVNjYWxlID0gc3RkOjptaW4oKGRzdFJlY3Qud2lkdGgoKSAr
IDAuNSkgLyBzcmNSZWN0LndpZHRoKCksIChkc3RSZWN0LmhlaWdodCgpICsgMC41KSAvIHNyY1Jl
Y3QuaGVpZ2h0KCkpOwotCi0gICAgICAgIC8vIElmIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhl
IHR3byBzY2FsZXMgaXMgZHVlIHRvIGludGVnZXIgcm91bmRpbmcgb2YgaW1hZ2Ugc2l6ZXMsCi0g
ICAgICAgIC8vIHVzZSB0aGUgc21hbGxlciBvZiB0aGUgdHdvIG9yaWdpbmFsIHNjYWxlcyB0byBl
bnN1cmUgdGhhdCB0aGUgaW1hZ2UgZml0cyBpbnNpZGUgdGhlCi0gICAgICAgIC8vIHNwYWNlIG9y
aWdpbmFsbHkgYWxsb2NhdGVkIGZvciBpdC4KLSAgICAgICAgaWYgKG1pbmltdW1TY2FsZSA8PSBt
YXhpbXVtU2NhbGUpIHsKLSAgICAgICAgICAgIGhTY2FsZSA9IHN0ZDo6bWluKGhTY2FsZSwgdlNj
YWxlKTsKLSAgICAgICAgICAgIHZTY2FsZSA9IGhTY2FsZTsKLSAgICAgICAgfQotICAgIH0KLQot
ICAgIC8vIGRyYXdQREZQYWdlKCkgcmVsaWVzIG9uIGRyYXdpbmcgdGhlIHdob2xlIFBERiBpbnRv
IGEgY29udGV4dCBzdGFydGluZyBhdCAoMCwgMCkuIFdlIG5lZWQKLSAgICAvLyB0byB0cmFuc2Zv
cm0gdGhlIGRlc3RpbmF0aW9uIGNvbnRleHQgc3VjaCB0aGF0IHNyY1JlY3Qgb2YgdGhlIHNvdXJj
ZSBjb250ZXh0IHdpbGwgYmUgZHJhd24KLSAgICAvLyBpbiBkc3RSZWN0IG9mIGRlc3RpbmF0aW9u
IGNvbnRleHQuCi0gICAgY29udGV4dC50cmFuc2xhdGUoZHN0UmVjdC5sb2NhdGlvbigpIC0gc3Jj
UmVjdC5sb2NhdGlvbigpKTsKLSAgICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZShoU2NhbGUsIC12
U2NhbGUpKTsKLSAgICBjb250ZXh0LnRyYW5zbGF0ZSgwLCAtc3JjUmVjdC5oZWlnaHQoKSk7Ci19
Ci0KLS8vIFRvIGF2b2lkIHRoZSBqZXRzYW0gb24gaU9TLCB3ZSBhcmUgZ29pbmcgdG8gbGltaXQg
dGhlIHNpemUgb2YgYWxsIHRoZSBQREYgY2FjaGVkSW1hZ2VzIHRvIGJlIDY0TUIuCi1zdGF0aWMg
Y29uc3Qgc2l6ZV90IHNfbWF4Q2FjaGVkSW1hZ2VTaWRlID0gNCAqIDEwMjQ7Ci1zdGF0aWMgY29u
c3Qgc2l6ZV90IHNfbWF4Q2FjaGVkSW1hZ2VBcmVhID0gc19tYXhDYWNoZWRJbWFnZVNpZGUgKiBz
X21heENhY2hlZEltYWdlU2lkZTsKLQotc3RhdGljIGNvbnN0IHNpemVfdCBzX21heERlY29kZWRE
YXRhU2l6ZSA9IHNfbWF4Q2FjaGVkSW1hZ2VBcmVhICogNDsKLXN0YXRpYyBzaXplX3Qgc19hbGxE
ZWNvZGVkRGF0YVNpemUgPSAwOwotCi1zdGF0aWMgRmxvYXRSZWN0IGNhY2hlZEltYWdlUmVjdChH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCkKLXsKLSAg
ICBGbG9hdFJlY3QgZGlydHlSZWN0ID0gY29udGV4dC5jbGlwQm91bmRzKCk7Ci0KLSAgICAvLyBD
YWxjdWxhdGUgdGhlIG1heGltdW0gcmVjdGFuZ2xlIHdlIGNhbiBjYWNoZSBhcm91bmQgdGhlIGNl
bnRlciBvZiB0aGUgY2xpcHBpbmcgYm91bmRzLgotICAgIEZsb2F0U2l6ZSBtYXhTaXplID0gc19t
YXhDYWNoZWRJbWFnZVNpZGUgLyBjb250ZXh0LnNjYWxlRmFjdG9yKCk7Ci0gICAgRmxvYXRQb2lu
dCBtaW5Mb2NhdGlvbiA9IEZsb2F0UG9pbnQoZGlydHlSZWN0LmNlbnRlcigpIC0gbWF4U2l6ZSAv
IDIpOwotCi0gICAgLy8gRW5zdXJlIHRoZSBjbGlwcGluZyBib3VuZHMgYXJlIGFsbCBpbmNsdWRl
ZCBidXQgd2l0aGluIHRoZSBib3VuZHMgb2YgdGhlIGRzdFJlY3QKLSAgICByZXR1cm4gaW50ZXJz
ZWN0aW9uKHVuaW9uUmVjdChkaXJ0eVJlY3QsIEZsb2F0UmVjdChtaW5Mb2NhdGlvbiwgbWF4U2l6
ZSkpLCBkc3RSZWN0KTsKLX0KLQotdm9pZCBQREZEb2N1bWVudEltYWdlOjpkZWNvZGVkU2l6ZUNo
YW5nZWQoc2l6ZV90IG5ld0NhY2hlZEJ5dGVzKQotewotICAgIGlmICghbV9jYWNoZWRCeXRlcyAm
JiAhbmV3Q2FjaGVkQnl0ZXMpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChpbWFnZU9ic2Vy
dmVyKCkpCi0gICAgICAgIGltYWdlT2JzZXJ2ZXIoKS0+ZGVjb2RlZFNpemVDaGFuZ2VkKCp0aGlz
LCAtc3RhdGljX2Nhc3Q8bG9uZyBsb25nPihtX2NhY2hlZEJ5dGVzKSArIG5ld0NhY2hlZEJ5dGVz
KTsKLQotICAgIEFTU0VSVChzX2FsbERlY29kZWREYXRhU2l6ZSA+PSBtX2NhY2hlZEJ5dGVzKTsK
LSAgICAvLyBVcGRhdGUgd2l0aCB0aGUgZGlmZmVyZW5jZSBpbiB0d28gc3RlcHMgdG8gYXZvaWQg
dW5zaWduZWQgdW5kZXJmbG93IHN1YnRyYWN0aW9uLgotICAgIHNfYWxsRGVjb2RlZERhdGFTaXpl
IC09IG1fY2FjaGVkQnl0ZXM7Ci0gICAgc19hbGxEZWNvZGVkRGF0YVNpemUgKz0gbmV3Q2FjaGVk
Qnl0ZXM7Ci0KLSAgICBtX2NhY2hlZEJ5dGVzID0gbmV3Q2FjaGVkQnl0ZXM7Ci19Ci0KLXZvaWQg
UERGRG9jdW1lbnRJbWFnZTo6dXBkYXRlQ2FjaGVkSW1hZ2VJZk5lZWRlZChHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBz
cmNSZWN0KQotewotICAgIC8vIENsaXBwZWQgb3B0aW9uIGlzIGZvciB0ZXN0aW5nIG9ubHkuIEZv
cmNlIHJlLWNhY2hpbmcgdGhlIFBERiB3aXRoIGVhY2ggZHJhdy4KLSAgICBib29sIGZvcmNlVXBk
YXRlQ2FjaGVkSW1hZ2UgPSBtX3BkZkltYWdlQ2FjaGluZ1BvbGljeSA9PSBQREZJbWFnZUNhY2hp
bmdQb2xpY3k6OkNsaXBCb3VuZHNPbmx5IHx8ICFtX2NhY2hlZEltYWdlQnVmZmVyOwotICAgIGlm
ICghZm9yY2VVcGRhdGVDYWNoZWRJbWFnZSAmJiBjYWNoZVBhcmFtZXRlcnNNYXRjaChjb250ZXh0
LCBkc3RSZWN0LCBzcmNSZWN0KSkgewotICAgICAgICAvLyBBZGp1c3QgdGhlIHZpZXctcG9ydCBy
ZWN0YW5nbGVzIGlmIG5vIHJlLWNhY2hpbmcgd2lsbCBoYXBwZW4uCi0gICAgICAgIG1fY2FjaGVk
SW1hZ2VSZWN0Lm1vdmUoRmxvYXRTaXplKGRzdFJlY3QubG9jYXRpb24oKSAtIG1fY2FjaGVkRGVz
dGluYXRpb25SZWN0LmxvY2F0aW9uKCkpKTsKLSAgICAgICAgbV9jYWNoZWREZXN0aW5hdGlvblJl
Y3QgPSBkc3RSZWN0OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgc3dpdGNoIChtX3Bk
ZkltYWdlQ2FjaGluZ1BvbGljeSkgewotICAgIGNhc2UgUERGSW1hZ2VDYWNoaW5nUG9saWN5OjpE
aXNhYmxlZDoKLSAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgUERGSW1hZ2VDYWNoaW5nUG9saWN5
OjpCZWxvd01lbW9yeUxpbWl0OgotICAgICAgICAvLyBLZWVwIHRoZSBtZW1vcnkgdXNlZCBieSB0
aGUgY2FjaGVkIGltYWdlIGJlbG93IHNvbWUgdGhyZXNob2xkLCBvdGhlcndpc2UgV2ViS2l0IHBy
b2Nlc3MKLSAgICAgICAgLy8gd2lsbCBqZXRzYW0gaWYgaXQgZXhjZWVkcyBpdHMgbWVtb3J5IGxp
bWl0LiBPbmx5IGEgcmVjdGFuZ2xlIGZyb20gdGhlIFBERiBtYXkgYmUgY2FjaGVkLgotICAgICAg
ICBtX2NhY2hlZEltYWdlUmVjdCA9IGNhY2hlZEltYWdlUmVjdChjb250ZXh0LCBkc3RSZWN0KTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQREZJbWFnZUNhY2hpbmdQb2xpY3k6OkNsaXBCb3Vu
ZHNPbmx5OgotICAgICAgICBtX2NhY2hlZEltYWdlUmVjdCA9IGludGVyc2VjdGlvbihjb250ZXh0
LmNsaXBCb3VuZHMoKSwgZHN0UmVjdCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUERGSW1h
Z2VDYWNoaW5nUG9saWN5OjpFbmFibGVkOgotICAgICAgICBtX2NhY2hlZEltYWdlUmVjdCA9IGRz
dFJlY3Q7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIEZsb2F0U2l6ZSBjYWNoZWRJbWFn
ZVNpemUgPSBGbG9hdFJlY3QoZW5jbG9zaW5nSW50UmVjdChtX2NhY2hlZEltYWdlUmVjdCkpLnNp
emUoKTsKLQotICAgIC8vIENhY2hlIHRoZSBQREYgaW1hZ2Ugb25seSBpZiB0aGUgc2l6ZSBvZiB0
aGUgbmV3IGltYWdlIHdvbid0IGV4Y2VlZCB0aGUgY2FjaGUgdGhyZXNob2xkLgotICAgIGlmICht
X3BkZkltYWdlQ2FjaGluZ1BvbGljeSA9PSBQREZJbWFnZUNhY2hpbmdQb2xpY3k6OkJlbG93TWVt
b3J5TGltaXQpIHsKLSAgICAgICAgSW50U2l6ZSBzY2FsZWRTaXplID0gSW1hZ2VCdWZmZXI6OmNv
bXBhdGlibGVCdWZmZXJTaXplKGNhY2hlZEltYWdlU2l6ZSwgY29udGV4dCk7Ci0gICAgICAgIGlm
IChzX2FsbERlY29kZWREYXRhU2l6ZSArIHNjYWxlZFNpemUudW5jbGFtcGVkQXJlYSgpICogNCAt
IG1fY2FjaGVkQnl0ZXMgPiBzX21heERlY29kZWREYXRhU2l6ZSkgewotICAgICAgICAgICAgZGVz
dHJveURlY29kZWREYXRhKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9
Ci0KLSAgICBtX2NhY2hlZEltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGli
bGVCdWZmZXIoY2FjaGVkSW1hZ2VTaXplLCBjb250ZXh0KTsKLSAgICBpZiAoIW1fY2FjaGVkSW1h
Z2VCdWZmZXIpIHsKLSAgICAgICAgZGVzdHJveURlY29kZWREYXRhKCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBhdXRvJiBidWZmZXJDb250ZXh0ID0gbV9jYWNoZWRJbWFnZUJ1ZmZl
ci0+Y29udGV4dCgpOwotICAgIC8vIFdlIG5lZWQgdG8gdHJhbnNmb3JtIHRoZSBjb29yZGluYXRl
IHN5c3RlbSBzdWNoIHRoYXQgdG9wLWxlZnQgb2YgbV9jYWNoZWRJbWFnZVJlY3Qgd2lsbCBiZSBt
YXBwZWQgdG8gdGhlCi0gICAgLy8gdG9wLWxlZnQgb2YgZHN0UmVjdC4gQWx0aG91Z2ggb25seSBt
X2NhY2hlZEltYWdlUmVjdC5zaXplKCkgb2YgdGhlIGltYWdlIGNvcGllZCwgdGhlIHNpemVzIG9m
IHNyY1JlY3QKLSAgICAvLyBhbmQgZHN0UmVjdCBzaG91bGQgYmUgcGFzc2VkIHRvIHRoaXMgZnVu
Y3Rpb24gYmVjYXVzZSB0aGV5IGFyZSB1c2VkIHRvIGNhbGN1bGF0ZSB0aGUgaW1hZ2Ugc2NhbGlu
Zy4KLSAgICB0cmFuc2Zvcm1Db250ZXh0Rm9yUGFpbnRpbmcoYnVmZmVyQ29udGV4dCwgZHN0UmVj
dCwgRmxvYXRSZWN0KG1fY2FjaGVkSW1hZ2VSZWN0LmxvY2F0aW9uKCksIHNyY1JlY3Quc2l6ZSgp
KSk7Ci0gICAgZHJhd1BERlBhZ2UoYnVmZmVyQ29udGV4dCk7Ci0KLSAgICBtX2NhY2hlZFRyYW5z
Zm9ybSA9IGNvbnRleHQuZ2V0Q1RNKEdyYXBoaWNzQ29udGV4dDo6RGVmaW5pdGVseUluY2x1ZGVE
ZXZpY2VTY2FsZSk7Ci0gICAgbV9jYWNoZWREZXN0aW5hdGlvblJlY3QgPSBkc3RSZWN0OwotICAg
IG1fY2FjaGVkU291cmNlUmVjdCA9IHNyY1JlY3Q7Ci0gICAgKyttX2NhY2hpbmdDb3VudEZvclRl
c3Rpbmc7Ci0KLSAgICBJbnRTaXplIGJhY2tlbmRTaXplID0gbV9jYWNoZWRJbWFnZUJ1ZmZlci0+
YmFja2VuZFNpemUoKTsKLSAgICBkZWNvZGVkU2l6ZUNoYW5nZWQoYmFja2VuZFNpemUudW5jbGFt
cGVkQXJlYSgpICogNCk7Ci19Ci0KLUltYWdlRHJhd1Jlc3VsdCBQREZEb2N1bWVudEltYWdlOjpk
cmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRp
b25zKQotewotICAgIGlmICghbV9kb2N1bWVudCB8fCAhbV9oYXNQYWdlKQotICAgICAgICByZXR1
cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOwotCi0gICAgdXBkYXRlQ2FjaGVkSW1hZ2VJ
Zk5lZWRlZChjb250ZXh0LCBkc3RSZWN0LCBzcmNSZWN0KTsKLQotICAgIHsKLSAgICAgICAgR3Jh
cGhpY3NDb250ZXh0U3RhdGVTYXZlciBzdGF0ZVNhdmVyKGNvbnRleHQpOwotICAgICAgICBjb250
ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihvcHRpb25zLmNvbXBvc2l0ZU9wZXJhdG9yKCkpOwot
Ci0gICAgICAgIGlmIChtX2NhY2hlZEltYWdlQnVmZmVyKSB7Ci0gICAgICAgICAgICAvLyBEcmF3
IHRoZSBJbWFnZUJ1ZmZlciAnbV9jYWNoZWRJbWFnZUJ1ZmZlcicgdG8gdGhlIHJlY3RhbmdsZSAn
bV9jYWNoZWRJbWFnZVJlY3QnCi0gICAgICAgICAgICAvLyBvbiB0aGUgZGVzdGluYXRpb24gY29u
dGV4dC4gU2luY2UgdGhlIHBpeGVscyBvZiB0aGUgcmVjdGFuZ2xlICdtX2NhY2hlZEltYWdlUmVj
dCcKLSAgICAgICAgICAgIC8vIG9mIHRoZSBzb3VyY2UgUERGIHdhcyBjb3BpZWQgdG8gJ21fY2Fj
aGVkSW1hZ2VCdWZmZXInLCB0aGUgc2l6ZXMgb2YgdGhlIHNvdXJjZQotICAgICAgICAgICAgLy8g
YW5kIHRoZSBkZXN0aW5hdGlvbiByZWN0YW5nbGVzIHdpbGwgYmUgZXF1YWwgYW5kIG5vIHNjYWxp
bmcgd2lsbCBiZSBuZWVkZWQgaGVyZS4KLSAgICAgICAgICAgIGNvbnRleHQuZHJhd0ltYWdlQnVm
ZmVyKCptX2NhY2hlZEltYWdlQnVmZmVyLCBtX2NhY2hlZEltYWdlUmVjdCk7Ci0gICAgICAgIH0K
LSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICB0cmFuc2Zvcm1Db250ZXh0Rm9yUGFpbnRpbmco
Y29udGV4dCwgZHN0UmVjdCwgc3JjUmVjdCk7Ci0gICAgICAgICAgICBkcmF3UERGUGFnZShjb250
ZXh0KTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChpbWFnZU9ic2VydmVyKCkpCi0gICAg
ICAgIGltYWdlT2JzZXJ2ZXIoKS0+ZGlkRHJhdygqdGhpcyk7Ci0KLSAgICByZXR1cm4gSW1hZ2VE
cmF3UmVzdWx0OjpEaWREcmF3OwotfQotCi12b2lkIFBERkRvY3VtZW50SW1hZ2U6OmRlc3Ryb3lE
ZWNvZGVkRGF0YShib29sKQotewotICAgIG1fY2FjaGVkSW1hZ2VCdWZmZXIgPSBudWxscHRyOwot
ICAgIG1fY2FjaGVkSW1hZ2VSZWN0ID0gRmxvYXRSZWN0KCk7Ci0gICAgZGVjb2RlZFNpemVDaGFu
Z2VkKDApOwotfQotCi0jaWYgIVVTRShQREZLSVRfRk9SX1BERkRPQ1VNRU5USU1BR0UpCi0KLXZv
aWQgUERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQoKQotewotICAgIFJldGFpblB0
cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRl
ckNyZWF0ZVdpdGhDRkRhdGEoZGF0YSgpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSkpOwotICAgIG1f
ZG9jdW1lbnQgPSBhZG9wdENGKENHUERGRG9jdW1lbnRDcmVhdGVXaXRoUHJvdmlkZXIoZGF0YVBy
b3ZpZGVyLmdldCgpKSk7Ci19Ci0KLXZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y29tcHV0ZUJvdW5k
c0ZvckN1cnJlbnRQYWdlKCkKLXsKLSAgICBBU1NFUlQocGFnZUNvdW50KCkgPiAwKTsKLSAgICBD
R1BERlBhZ2VSZWYgY2dQYWdlID0gQ0dQREZEb2N1bWVudEdldFBhZ2UobV9kb2N1bWVudC5nZXQo
KSwgMSk7Ci0gICAgQ0dSZWN0IG1lZGlhQm94ID0gQ0dQREZQYWdlR2V0Qm94UmVjdChjZ1BhZ2Us
IGtDR1BERk1lZGlhQm94KTsKLQotICAgIC8vIEdldCBjcm9wIGJveCAobm90IGFsd2F5cyB0aGVy
ZSkuIElmIG5vdCwgdXNlIG1lZGlhIGJveC4KLSAgICBDR1JlY3QgciA9IENHUERGUGFnZUdldEJv
eFJlY3QoY2dQYWdlLCBrQ0dQREZDcm9wQm94KTsKLSAgICBpZiAoIUNHUmVjdElzRW1wdHkocikp
Ci0gICAgICAgIG1fY3JvcEJveCA9IHI7Ci0gICAgZWxzZQotICAgICAgICBtX2Nyb3BCb3ggPSBt
ZWRpYUJveDsKLQotICAgIG1fcm90YXRpb25EZWdyZWVzID0gQ0dQREZQYWdlR2V0Um90YXRpb25B
bmdsZShjZ1BhZ2UpOwotfQotCi11bnNpZ25lZCBQREZEb2N1bWVudEltYWdlOjpwYWdlQ291bnQo
KSBjb25zdAotewotICAgIHJldHVybiBDR1BERkRvY3VtZW50R2V0TnVtYmVyT2ZQYWdlcyhtX2Rv
Y3VtZW50LmdldCgpKTsKLX0KLQotc3RhdGljIHZvaWQgYXBwbHlSb3RhdGlvbkZvclBhaW50aW5n
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgRmxvYXRTaXplIHNpemUsIGludCByb3RhdGlvbkRl
Z3JlZXMpCi17Ci0gICAgaWYgKHJvdGF0aW9uRGVncmVlcyA9PSA5MCkKLSAgICAgICAgY29udGV4
dC50cmFuc2xhdGUoMCwgc2l6ZS5oZWlnaHQoKSk7Ci0gICAgZWxzZSBpZiAocm90YXRpb25EZWdy
ZWVzID09IDE4MCkKLSAgICAgICAgY29udGV4dC50cmFuc2xhdGUoc2l6ZSk7Ci0gICAgZWxzZSBp
ZiAocm90YXRpb25EZWdyZWVzID09IDI3MCkKLSAgICAgICAgY29udGV4dC50cmFuc2xhdGUoc2l6
ZS53aWR0aCgpLCAwKTsKLQotICAgIGNvbnRleHQucm90YXRlKC1kZWcycmFkKHN0YXRpY19jYXN0
PGZsb2F0Pihyb3RhdGlvbkRlZ3JlZXMpKSk7Ci19Ci0KLXZvaWQgUERGRG9jdW1lbnRJbWFnZTo6
ZHJhd1BERlBhZ2UoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQotewotICAgIGFwcGx5Um90YXRp
b25Gb3JQYWludGluZyhjb250ZXh0LCBzaXplKCksIG1fcm90YXRpb25EZWdyZWVzKTsKLQotICAg
IGNvbnRleHQudHJhbnNsYXRlKC1tX2Nyb3BCb3gubG9jYXRpb24oKSk7Ci0KLSNpZiBVU0UoRElS
RUNUMkQpCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSNlbHNlCi0gICAgLy8gQ0dQREYgcGFnZXMg
YXJlIGluZGV4ZWQgZnJvbSAxLgotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIENHQ29udGV4dERy
YXdQREZQYWdlV2l0aEFubm90YXRpb25zKGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCksIENHUERG
RG9jdW1lbnRHZXRQYWdlKG1fZG9jdW1lbnQuZ2V0KCksIDEpLCBudWxscHRyKTsKLSNlbHNlCi0g
ICAgQ0dDb250ZXh0RHJhd1BERlBhZ2UoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgQ0dQREZE
b2N1bWVudEdldFBhZ2UobV9kb2N1bWVudC5nZXQoKSwgMSkpOwotI2VuZGlmCi0jZW5kaWYKLX0K
LQotI2VuZGlmIC8vICFVU0UoUERGS0lUX0ZPUl9QREZET0NVTUVOVElNQUdFKQotCi0jaWYgUExB
VEZPUk0oTUFDKQotCi1SZXRhaW5QdHI8Q0ZNdXRhYmxlRGF0YVJlZj4gUERGRG9jdW1lbnRJbWFn
ZTo6Y29udmVydFBvc3RTY3JpcHREYXRhVG9QREYoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBwb3N0
U2NyaXB0RGF0YSkKLXsKLSAgICAvLyBDb252ZXJ0IFBvc3RTY3JpcHQgdG8gUERGIHVzaW5nIHRo
ZSBRdWFydHogMkQgQVBJLgotICAgIC8vIGh0dHA6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3Vt
ZW50YXRpb24vR3JhcGhpY3NJbWFnaW5nL0NvbmNlcHR1YWwvZHJhd2luZ3dpdGhxdWFydHoyZC9k
cV9wc19jb252ZXJ0L2NoYXB0ZXJfMTZfc2VjdGlvbl8xLmh0bWwKLQotICAgIENHUFNDb252ZXJ0
ZXJDYWxsYmFja3MgY2FsbGJhY2tzID0geyB9OwotICAgIGF1dG8gY29udmVydGVyID0gYWRvcHRD
RihDR1BTQ29udmVydGVyQ3JlYXRlKDAsICZjYWxsYmFja3MsIDApKTsKLSAgICBhdXRvIHByb3Zp
ZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEocG9zdFNjcmlwdERh
dGEuZ2V0KCkpKTsKLSAgICBhdXRvIHBkZkRhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZU11dGFi
bGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCkpOwotICAgIGF1dG8gY29uc3VtZXIgPSBhZG9wdENG
KENHRGF0YUNvbnN1bWVyQ3JlYXRlV2l0aENGRGF0YShwZGZEYXRhLmdldCgpKSk7Ci0KLSAgICBD
R1BTQ29udmVydGVyQ29udmVydChjb252ZXJ0ZXIuZ2V0KCksIHByb3ZpZGVyLmdldCgpLCBjb25z
dW1lci5nZXQoKSwgMCk7Ci0gICAgcmV0dXJuIHBkZkRhdGE7Ci19Ci0KLSNlbmRpZgotCi12b2lk
IFBERkRvY3VtZW50SW1hZ2U6OmR1bXAoVGV4dFN0cmVhbSYgdHMpIGNvbnN0Ci17Ci0gICAgSW1h
Z2U6OmR1bXAodHMpOwotICAgIHRzLmR1bXBQcm9wZXJ0eSgicGFnZS1jb3VudCIsIHBhZ2VDb3Vu
dCgpKTsKLSAgICB0cy5kdW1wUHJvcGVydHkoImNyb3AtYm94IiwgbV9jcm9wQm94KTsKLSAgICBp
ZiAobV9yb3RhdGlvbkRlZ3JlZXMpCi0gICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgicm90YXRpb24i
LCBtX3JvdGF0aW9uRGVncmVlcyk7Ci19Ci0KLX0KLQotI2VuZGlmIC8vIFVTRShDRykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1h
Z2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1h
Z2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTdmODk0NzQ5ZDVlYWM5MDUzYjhk
OGE5NGVkMDg1ZTVhZmY1MTVhNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVu
dEltYWdlLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMjQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAxMyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
Ci0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRl
ZiBQREZEb2N1bWVudEltYWdlX2gKLSNkZWZpbmUgUERGRG9jdW1lbnRJbWFnZV9oCi0KLSNpbmNs
dWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKLSNpbmNsdWRlICJGbG9hdFJlY3QuaCIKLSNpbmNsdWRl
ICJHcmFwaGljc1R5cGVzLmgiCi0jaW5jbHVkZSAiSW1hZ2UuaCIKLSNpbmNsdWRlICJTZXR0aW5n
cy5oIgotCi0jaWYgVVNFKENHKQotCi0jaWYgUExBVEZPUk0oTUFDKQotI2RlZmluZSBVU0VfUERG
S0lUX0ZPUl9QREZET0NVTUVOVElNQUdFIDEKLSNlbmRpZgotCi10eXBlZGVmIHN0cnVjdCBDR1BE
RkRvY3VtZW50ICpDR1BERkRvY3VtZW50UmVmOwotT0JKQ19DTEFTUyBQREZEb2N1bWVudDsKLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHcmFwaGljc0NvbnRleHQ7Ci1jbGFzcyBJbWFn
ZUJ1ZmZlcjsKLQotY2xhc3MgUERGRG9jdW1lbnRJbWFnZSBmaW5hbCA6IHB1YmxpYyBJbWFnZSB7
Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxQREZEb2N1bWVudEltYWdlPiBjcmVhdGUoSW1hZ2VP
YnNlcnZlciogb2JzZXJ2ZXIpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQ
REZEb2N1bWVudEltYWdlKG9ic2VydmVyKSk7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRQZGZJbWFn
ZUNhY2hpbmdQb2xpY3koUERGSW1hZ2VDYWNoaW5nUG9saWN5KTsKLSAgICAKLSNpZiBQTEFURk9S
TShNQUMpCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJldGFpblB0cjxDRk11dGFibGVEYXRh
UmVmPiBjb252ZXJ0UG9zdFNjcmlwdERhdGFUb1BERihSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIHBv
c3RTY3JpcHREYXRhKTsKLSNlbmRpZgotCi0gICAgdW5zaWduZWQgY2FjaGluZ0NvdW50Rm9yVGVz
dGluZygpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGluZ0NvdW50Rm9yVGVzdGluZzsgfQotCi1wcml2
YXRlOgotICAgIFBERkRvY3VtZW50SW1hZ2UoSW1hZ2VPYnNlcnZlciopOwotICAgIHZpcnR1YWwg
flBERkRvY3VtZW50SW1hZ2UoKTsKLQotICAgIGJvb2wgaXNQREZEb2N1bWVudEltYWdlKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCi0gICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5z
aW9uKCkgY29uc3Qgb3ZlcnJpZGU7Ci0KLSAgICBib29sIGhhc1NpbmdsZVNlY3VyaXR5T3JpZ2lu
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCi0gICAgRW5jb2RlZERhdGFTdGF0
dXMgZGF0YUNoYW5nZWQoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIG92ZXJyaWRlOwotCi0gICAgdm9p
ZCBkZXN0cm95RGVjb2RlZERhdGEoYm9vbCAvKmRlc3Ryb3lBbGwqLyA9IHRydWUpIG92ZXJyaWRl
OwotCi0gICAgdm9pZCBjb21wdXRlSW50cmluc2ljRGltZW5zaW9ucyhMZW5ndGgmIGludHJpbnNp
Y1dpZHRoLCBMZW5ndGgmIGludHJpbnNpY0hlaWdodCwgRmxvYXRTaXplJiBpbnRyaW5zaWNSYXRp
bykgb3ZlcnJpZGU7Ci0gICAgRmxvYXRTaXplIHNpemUoSW1hZ2VPcmllbnRhdGlvbiA9IEltYWdl
T3JpZW50YXRpb246OkZyb21JbWFnZSkgY29uc3Qgb3ZlcnJpZGU7Ci0KLSAgICBJbWFnZURyYXdS
ZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9
KSBvdmVycmlkZTsKLQotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyB0byBiZSBsZXNzIGNv
bnNlcnZhdGl2ZS4KLSAgICBib29sIGN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0KLSAgICB2b2lkIGR1bXAoV1RGOjpUZXh0U3Ry
ZWFtJikgY29uc3Qgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIGNyZWF0ZVBERkRvY3VtZW50KCk7Ci0g
ICAgdm9pZCBjb21wdXRlQm91bmRzRm9yQ3VycmVudFBhZ2UoKTsKLSAgICB1bnNpZ25lZCBwYWdl
Q291bnQoKSBjb25zdDsKLSAgICB2b2lkIGRyYXdQREZQYWdlKEdyYXBoaWNzQ29udGV4dCYpOwot
Ci0gICAgdm9pZCBkZWNvZGVkU2l6ZUNoYW5nZWQoc2l6ZV90IG5ld0NhY2hlZEJ5dGVzKTsKLSAg
ICB2b2lkIHVwZGF0ZUNhY2hlZEltYWdlSWZOZWVkZWQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
RmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QpOwotICAgIGJvb2wg
Y2FjaGVQYXJhbWV0ZXJzTWF0Y2goR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBk
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QpIGNvbnN0OwotCi0gICAgUERGSW1hZ2VD
YWNoaW5nUG9saWN5IG1fcGRmSW1hZ2VDYWNoaW5nUG9saWN5IHsgZGVmYXVsdFBERkltYWdlQ2Fj
aGluZ1BvbGljeSB9OwotCi0jaWYgVVNFKFBERktJVF9GT1JfUERGRE9DVU1FTlRJTUFHRSkKLSAg
ICBSZXRhaW5QdHI8UERGRG9jdW1lbnQ+IG1fZG9jdW1lbnQ7Ci0jZWxzZQotICAgIFJldGFpblB0
cjxDR1BERkRvY3VtZW50UmVmPiBtX2RvY3VtZW50OwotI2VuZGlmCi0KLSAgICBSZWZQdHI8SW1h
Z2VCdWZmZXI+IG1fY2FjaGVkSW1hZ2VCdWZmZXI7Ci0gICAgRmxvYXRSZWN0IG1fY2FjaGVkSW1h
Z2VSZWN0OwotICAgIEFmZmluZVRyYW5zZm9ybSBtX2NhY2hlZFRyYW5zZm9ybTsKLSAgICBGbG9h
dFJlY3QgbV9jYWNoZWREZXN0aW5hdGlvblJlY3Q7Ci0gICAgRmxvYXRSZWN0IG1fY2FjaGVkU291
cmNlUmVjdDsKLSAgICBzaXplX3QgbV9jYWNoZWRCeXRlcyB7IDAgfTsKLSAgICB1bnNpZ25lZCBt
X2NhY2hpbmdDb3VudEZvclRlc3RpbmcgeyAwIH07Ci0KLSAgICBGbG9hdFJlY3QgbV9jcm9wQm94
OwotICAgIGludCBtX3JvdGF0aW9uRGVncmVlcyB7IDAgfTsgLy8gQ2FuIG9ubHkgYmUgMCwgOTAs
IDE4MCwgb3IgMjcwIGRlZ3JlZXMuCi0gICAgYm9vbCBtX2hhc1BhZ2UgeyBmYWxzZSB9OwotfTsK
LQotfQotCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0lNQUdFKFBERkRvY3VtZW50SW1hZ2UpCi0K
LSNlbmRpZiAvLyBVU0UoQ0cpCi0KLSNlbmRpZiAvLyBQREZEb2N1bWVudEltYWdlX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJF
ZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbQppbmRleCAzOGRl
ODU1MmYxZTQ2YTFkMzcwYWU2ZGMyNzg5YTFlYzY2NzRiYTEyLi5lYjc5ZGRhM2U3NmE0ZTBhZmVm
YTlkZDZkMTZmMTdmM2RiYzEzODc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVj
dFJlbmRlcmVyQ29yZUltYWdlLm1tCkBAIC0zNiwxMiArMzYsMTQgQEAKICNpbXBvcnQgIkZsb2F0
Q29udmVyc2lvbi5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKICNpbXBvcnQgIklt
YWdlQnVmZmVyLmgiCisjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybUltYWdl
QnVmZmVyLmgiCiAjaW1wb3J0ICJTb3VyY2VHcmFwaGljLmgiCiAjaW1wb3J0IDxDb3JlSW1hZ2Uv
Q0lDb250ZXh0Lmg+CiAjaW1wb3J0IDxDb3JlSW1hZ2UvQ0lGaWx0ZXIuaD4KICNpbXBvcnQgPENv
cmVJbWFnZS9Db3JlSW1hZ2UuaD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2lt
cG9ydCA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3QuY3BwCmluZGV4IDkyMzM2OTlhMGRkYjIzNGNjMzBhMzI3MWRkNmJh
MDdkY2I0NjNjMjYuLjliNjI4Mzg5MDQ1Yjk2NWVjYzJhZWIxMWIwNTMwYzRmNmFhNjU0ZDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcApAQCAtMjM4LDYgKzIzOCw4IEBAIHZvaWQgRGlzcGxh
eUxpc3Q6OmFwcGVuZChJdGVtSGFuZGxlIGl0ZW0pCiAgICAgICAgIHJldHVybiBhcHBlbmQ8RHJh
d0ltYWdlQnVmZmVyPihpdGVtLmdldDxEcmF3SW1hZ2VCdWZmZXI+KCkpOwogICAgIGNhc2UgSXRl
bVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKICAgICAgICAgcmV0dXJuIGFwcGVuZDxEcmF3TmF0aXZl
SW1hZ2U+KGl0ZW0uZ2V0PERyYXdOYXRpdmVJbWFnZT4oKSk7CisgICAgY2FzZSBJdGVtVHlwZTo6
RHJhd05hdGl2ZVBERkRvY3VtZW50OgorICAgICAgICByZXR1cm4gYXBwZW5kPERyYXdOYXRpdmVQ
REZEb2N1bWVudD4oaXRlbS5nZXQ8RHJhd05hdGl2ZVBERkRvY3VtZW50PigpKTsKICAgICBjYXNl
IEl0ZW1UeXBlOjpEcmF3UGF0dGVybjoKICAgICAgICAgcmV0dXJuIGFwcGVuZDxEcmF3UGF0dGVy
bj4oaXRlbS5nZXQ8RHJhd1BhdHRlcm4+KCkpOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdSZWN0
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3QuaAppbmRleCAyNmZjOTczMDcyMTEyNzMwMzkzZTJkY2JjODdk
MGM2YjljYTU0MjU4Li4xZDAxNmQ4MzBkYWY1MjhkMDQ1NDk4YWU1YjQ4MGJjMzQyZDJkYmExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3QuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkZsb2F0
UmVjdC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkltYWdlQnVm
ZmVyLmgiCisjaW5jbHVkZSAiTmF0aXZlUERGRG9jdW1lbnQuaCIKICNpbmNsdWRlIDx3dGYvRmFz
dE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL05vbmNv
cHlhYmxlLmg+CkBAIC03OCw2ICs3OSw3IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IEltYWdlQnVm
ZmVySGFzaE1hcCYgaW1hZ2VCdWZmZXJzKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZUJ1ZmZlcnM7
IH0KICAgICBjb25zdCBOYXRpdmVJbWFnZUhhc2hNYXAmIG5hdGl2ZUltYWdlcygpIGNvbnN0IHsg
cmV0dXJuIG1fbmF0aXZlSW1hZ2VzOyB9CisgICAgY29uc3QgTmF0aXZlUERGRG9jdW1lbnRIYXNo
TWFwJiBuYXRpdmVQREZEb2N1bWVudHMoKSBjb25zdCB7IHJldHVybiBtX25hdGl2ZVBERkRvY3Vt
ZW50czsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRJdGVtQnVmZmVyQ2xpZW50KEl0
ZW1CdWZmZXJSZWFkaW5nQ2xpZW50Kik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRJdGVt
QnVmZmVyQ2xpZW50KEl0ZW1CdWZmZXJXcml0aW5nQ2xpZW50Kik7CkBAIC0xODEsMTEgKzE4Mywx
OSBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuIG1ha2VSZWYoaW1hZ2UpOwogICAgICAg
ICB9KTsKICAgICB9Ci0gICAgCisKKyAgICB2b2lkIGNhY2hlTmF0aXZlUERGRG9jdW1lbnQoTmF0
aXZlUERGRG9jdW1lbnQmIHBkZkRvY3VtZW50KQorICAgIHsKKyAgICAgICAgbV9uYXRpdmVQREZE
b2N1bWVudHMuZW5zdXJlKHBkZkRvY3VtZW50LnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigp
LCBbJl0oKSB7CisgICAgICAgICAgICByZXR1cm4gbWFrZVJlZihwZGZEb2N1bWVudCk7CisgICAg
ICAgIH0pOworICAgIH0KKwogICAgIHN0YXRpYyBib29sIHNob3VsZER1bXBGb3JGbGFncyhBc1Rl
eHRGbGFncywgSXRlbUhhbmRsZSk7CiAKICAgICBJbWFnZUJ1ZmZlckhhc2hNYXAgbV9pbWFnZUJ1
ZmZlcnM7CiAgICAgTmF0aXZlSW1hZ2VIYXNoTWFwIG1fbmF0aXZlSW1hZ2VzOworICAgIE5hdGl2
ZVBERkRvY3VtZW50SGFzaE1hcCBtX25hdGl2ZVBERkRvY3VtZW50czsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8SXRlbUJ1ZmZlcj4gbV9pdGVtczsKICAgICBWZWN0b3I8T3B0aW9uYWw8RmxvYXRSZWN0
Pj4gbV9kcmF3aW5nSXRlbUV4dGVudHM7CiAgICAgYm9vbCBtX3RyYWNrc0RyYXdpbmdJdGVtRXh0
ZW50cyB7IHRydWUgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5j
cHAKaW5kZXggYzg3OGFkMzRjOGM0ODRlNDFjNjVlN2JlMTQ1MmJmYThhYjMxNmRjMi4uYzI1ZGEy
ZjQ3NjY5NjcyMTQ2YTNiNzZmNmQwYjVkZDkzMmFhOGE4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKQEAgLTE0OCw2ICsxNDgsMTAgQEAgdm9pZCBJdGVt
SGFuZGxlOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAgICAgIGdldDxEcmF3
TmF0aXZlSW1hZ2U+KCkuYXBwbHkoY29udGV4dCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Cisg
ICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZVBERkRvY3VtZW50OiB7CisgICAgICAgIGdldDxE
cmF3TmF0aXZlUERGRG9jdW1lbnQ+KCkuYXBwbHkoY29udGV4dCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46IHsKICAgICAgICAgZ2V0PERy
YXdQYXR0ZXJuPigpLmFwcGx5KGNvbnRleHQpOwogICAgICAgICByZXR1cm47CkBAIC00MjAsNiAr
NDI0LDEwIEBAIHZvaWQgSXRlbUhhbmRsZTo6ZGVzdHJveSgpCiAgICAgICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPERyYXdOYXRpdmVJbWFnZT46OnZhbHVl
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZl
UERGRG9jdW1lbnQ6IHsKKyAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9k
ZXN0cnVjdGlibGU8RHJhd05hdGl2ZVBERkRvY3VtZW50Pjo6dmFsdWUpOworICAgICAgICByZXR1
cm47CisgICAgfQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOiB7CiAgICAgICAgIHN0
YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPERyYXdQYXR0ZXJuPjo6
dmFsdWUpOwogICAgICAgICByZXR1cm47CkBAIC01NzcsNiArNTg1LDEwIEBAIHZvaWQgSXRlbUhh
bmRsZTo6Y29weVRvKEl0ZW1IYW5kbGUgZGVzdGluYXRpb24pIGNvbnN0CiAgICAgICAgIG5ldyAo
aXRlbU9mZnNldCkgRHJhd05hdGl2ZUltYWdlKGdldDxEcmF3TmF0aXZlSW1hZ2U+KCkpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQorICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVQREZEb2N1
bWVudDogeworICAgICAgICBuZXcgKGl0ZW1PZmZzZXQpIERyYXdOYXRpdmVQREZEb2N1bWVudChn
ZXQ8RHJhd05hdGl2ZVBERkRvY3VtZW50PigpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAg
ICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVybjogewogICAgICAgICBuZXcgKGl0ZW1PZmZzZXQp
IERyYXdQYXR0ZXJuKGdldDxEcmF3UGF0dGVybj4oKSk7CiAgICAgICAgIHJldHVybjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1UeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcAppbmRleCAxNjVkMjI0MTM1ZDM0ZDky
NTFmY2NiYTk0ODdmMmJjY2Y4NWUxMWU2Li4zNjdhZGNhNjllMjhhMjFjZmM3NTIxMzJlMDhiNThm
NTU0Y2NjMTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuY3BwCkBA
IC04Niw2ICs4Niw4IEBAIHN0YXRpYyBzaXplX3Qgc2l6ZU9mSXRlbUluQnl0ZXMoSXRlbVR5cGUg
dHlwZSkKICAgICAgICAgcmV0dXJuIHNpemVvZihEcmF3SW1hZ2VCdWZmZXIpOwogICAgIGNhc2Ug
SXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKICAgICAgICAgcmV0dXJuIHNpemVvZihEcmF3TmF0
aXZlSW1hZ2UpOworICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVQREZEb2N1bWVudDoKKyAg
ICAgICAgcmV0dXJuIHNpemVvZihEcmF3TmF0aXZlUERGRG9jdW1lbnQpOwogICAgIGNhc2UgSXRl
bVR5cGU6OkRyYXdQYXR0ZXJuOgogICAgICAgICByZXR1cm4gc2l6ZW9mKERyYXdQYXR0ZXJuKTsK
ICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UmVjdDoKQEAgLTIwOCw2ICsyMTAsNyBAQCBib29sIGlz
RHJhd2luZ0l0ZW0oSXRlbVR5cGUgdHlwZSkKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TGluZToK
ICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TGluZXNGb3JUZXh0OgogICAgIGNhc2UgSXRlbVR5cGU6
OkRyYXdOYXRpdmVJbWFnZToKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlUERGRG9jdW1l
bnQ6CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46CiAgICAgY2FzZSBJdGVtVHlwZTo6
RHJhd1BhdGg6CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1JlY3Q6CkBAIC0yODEsNiArMjg0LDcg
QEAgYm9vbCBpc0lubGluZUl0ZW0oSXRlbVR5cGUgdHlwZSkKICAgICBjYXNlIEl0ZW1UeXBlOjpE
cmF3RWxsaXBzZToKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6CiAgICAgY2Fz
ZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOgorICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRp
dmVQREZEb2N1bWVudDoKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVybjoKICAgICBjYXNl
IEl0ZW1UeXBlOjpEcmF3TGluZToKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UmVjdDoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1UeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5oCmluZGV4IGZiNWRlZmRiN2M2ZGNlNDk4YjIx
OWY0ZmJkMTczZDNmOTJhNjJmNWEuLjFlYjU4NWU0NDAwMzIwZDY5ZDFmYjMzMjhmNTE2OThhOTJk
Y2QwMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuaApAQCAtNTUsNiAr
NTUsNyBAQCBlbnVtIGNsYXNzIEl0ZW1UeXBlIDogdWludDhfdCB7CiAgICAgRHJhd0dseXBocywK
ICAgICBEcmF3SW1hZ2VCdWZmZXIsCiAgICAgRHJhd05hdGl2ZUltYWdlLAorICAgIERyYXdOYXRp
dmVQREZEb2N1bWVudCwKICAgICBEcmF3UGF0dGVybiwKICAgICBEcmF3UmVjdCwKICAgICBEcmF3
TGluZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAppbmRleCA4Y2JkYmMzNzc5
OTRiYjEwMzFlYjAyZjllNDhhYWFlMTY5NjU1YTc1Li5kZWMyYjQyYmQzZTgzN2RmMmYxMDFlMDU4
YzgwODAyN2UwMjFmMDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCkBA
IC00NTgsNiArNDU4LDI1IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mIHRzLCBjb25zdCBEcmF3TmF0aXZlSW1hZ2UmIGl0ZW0pCiAgICAgcmV0dXJuIHRzOwogfQog
CitOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2b2lkIERyYXdOYXRpdmVQREZEb2N1bWVudDo6YXBw
bHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
K30KKwordm9pZCBEcmF3TmF0aXZlUERGRG9jdW1lbnQ6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwgTmF0aXZlUERGRG9jdW1lbnQmIHBkZkRvY3VtZW50KSBjb25zdAoreworICAgIHBk
ZkRvY3VtZW50LmRyYXcoY29udGV4dCwgbV9pbWFnZVNpemUsIG1fZGVzdGluYXRpb25SZWN0LCBt
X3NyY1JlY3QsIG1fb3B0aW9ucyk7Cit9CisKK3N0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3TmF0aXZlUERGRG9jdW1lbnQmIGl0ZW0pCit7Cisg
ICAgLy8gRklYTUU6IGR1bXAgbW9yZSBzdHVmZi4KKyAgICB0cy5kdW1wUHJvcGVydHkoInBkZi1k
b2N1bWVudC1pZGVudGlmaWVyIiwgaXRlbS5wZGZEb2N1bWVudElkZW50aWZpZXIoKSk7CisgICAg
dHMuZHVtcFByb3BlcnR5KCJzb3VyY2UtcmVjdCIsIGl0ZW0uc291cmNlKCkpOworICAgIHRzLmR1
bXBQcm9wZXJ0eSgiZGVzdC1yZWN0IiwgaXRlbS5kZXN0aW5hdGlvblJlY3QoKSk7CisgICAgcmV0
dXJuIHRzOworfQorCiBEcmF3UGF0dGVybjo6RHJhd1BhdHRlcm4oUmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyIGltYWdlSWRlbnRpZmllciwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhh
c2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMm
IG9wdGlvbnMpCiAgICAgOiBtX2ltYWdlSWRlbnRpZmllcihpbWFnZUlkZW50aWZpZXIpCiAgICAg
LCBtX2ltYWdlU2l6ZShpbWFnZVNpemUpCkBAIC0xMDM2LDYgKzEwNTUsNyBAQCBzdGF0aWMgVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgSXRlbVR5cGUgdHlwZSkKICAgICBj
YXNlIEl0ZW1UeXBlOjpEcmF3R2x5cGhzOiB0cyA8PCAiZHJhdy1nbHlwaHMiOyBicmVhazsKICAg
ICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6IHRzIDw8ICJkcmF3LWltYWdlLWJ1ZmZl
ciI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZTogdHMgPDwgImRy
YXctbmF0aXZlLWltYWdlIjsgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZVBE
RkRvY3VtZW50OiB0cyA8PCAiZHJhdy1uYXRpdmUtcGRmLWRvY3VtZW50IjsgYnJlYWs7CiAgICAg
Y2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46IHRzIDw8ICJkcmF3LXBhdHRlcm4iOyBicmVhazsK
ICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UmVjdDogdHMgPDwgImRyYXctcmVjdCI7IGJyZWFrOwog
ICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lOiB0cyA8PCAiZHJhdy1saW5lIjsgYnJlYWs7CkBA
IC0xMTU0LDYgKzExNzQsOSBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRz
LCBJdGVtSGFuZGxlIGl0ZW0pCiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOgog
ICAgICAgICB0cyA8PCBpdGVtLmdldDxEcmF3TmF0aXZlSW1hZ2U+KCk7CiAgICAgICAgIGJyZWFr
OworICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVQREZEb2N1bWVudDoKKyAgICAgICAgdHMg
PDwgaXRlbS5nZXQ8RHJhd05hdGl2ZVBERkRvY3VtZW50PigpOworICAgICAgICBicmVhazsKICAg
ICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0dGVybjoKICAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJh
d1BhdHRlcm4+KCk7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1z
LmgKaW5kZXggMTA0OTQ1ZDQ2NmM4OWJjZTUyMDU4NTNlNmRjOWE0YWY3NDYxZjYxNS4uNmYwZmIw
ZmMxMzA0MWY2NTU0YWNlM2Q3MmMwZDcwMTQxZWJhYzgyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtcy5oCkBAIC0xMDc2LDYgKzEwNzYsMzkgQEAgcHJpdmF0ZToKICAgICBJbWFnZVBh
aW50aW5nT3B0aW9ucyBtX29wdGlvbnM7CiB9OwogCitjbGFzcyBEcmF3TmF0aXZlUERGRG9jdW1l
bnQgeworcHVibGljOgorICAgIHN0YXRpYyBjb25zdGV4cHIgSXRlbVR5cGUgaXRlbVR5cGUgPSBJ
dGVtVHlwZTo6RHJhd05hdGl2ZVBERkRvY3VtZW50OworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9v
bCBpc0lubGluZUl0ZW0gPSB0cnVlOworICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0RyYXdp
bmdJdGVtID0gdHJ1ZTsKKworICAgIERyYXdOYXRpdmVQREZEb2N1bWVudChSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIgcGRmRG9jdW1lbnRJZGVudGlmaWVyLCBjb25zdCBGbG9hdFNpemUmIGlt
YWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKKyAgICAgICAgOiBtX3Bk
ZkRvY3VtZW50SWRlbnRpZmllcihwZGZEb2N1bWVudElkZW50aWZpZXIpCisgICAgICAgICwgbV9p
bWFnZVNpemUoaW1hZ2VTaXplKQorICAgICAgICAsIG1fZGVzdGluYXRpb25SZWN0KGRlc3RSZWN0
KQorICAgICAgICAsIG1fc3JjUmVjdChzcmNSZWN0KQorICAgICAgICAsIG1fb3B0aW9ucyhvcHRp
b25zKQorICAgIHsKKyAgICB9CisKKyAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgcGRm
RG9jdW1lbnRJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9wZGZEb2N1bWVudElkZW50aWZp
ZXI7IH0KKyAgICBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Jj
UmVjdDsgfQorICAgIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb25SZWN0KCkgY29uc3QgeyBy
ZXR1cm4gbV9kZXN0aW5hdGlvblJlY3Q7IH0KKworICAgIE5PX1JFVFVSTl9EVUVfVE9fQVNTRVJU
IHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CisgICAgdm9pZCBhcHBseShHcmFw
aGljc0NvbnRleHQmLCBOYXRpdmVQREZEb2N1bWVudCYpIGNvbnN0OworCisgICAgT3B0aW9uYWw8
RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25zdCB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0K
KyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4
dCYpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb25SZWN0OyB9CisKK3ByaXZhdGU6CisgICAg
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIG1fcGRmRG9jdW1lbnRJZGVudGlmaWVyOworICAg
IEZsb2F0U2l6ZSBtX2ltYWdlU2l6ZTsKKyAgICBGbG9hdFJlY3QgbV9kZXN0aW5hdGlvblJlY3Q7
CisgICAgRmxvYXRSZWN0IG1fc3JjUmVjdDsKKyAgICBJbWFnZVBhaW50aW5nT3B0aW9ucyBtX29w
dGlvbnM7Cit9OworCiBjbGFzcyBEcmF3UGF0dGVybiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNv
bnN0ZXhwciBJdGVtVHlwZSBpdGVtVHlwZSA9IEl0ZW1UeXBlOjpEcmF3UGF0dGVybjsKQEAgLTIy
ODYsNiArMjMxOSw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6RGlz
cGxheUxpc3Q6Okl0ZW1UeXBlPiB7CiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBl
OjpEcmF3R2x5cGhzLAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0lt
YWdlQnVmZmVyLAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd05hdGl2
ZUltYWdlLAorICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd05hdGl2ZVBE
RkRvY3VtZW50LAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1BhdHRl
cm4sCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3UmVjdCwKICAgICBX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdMaW5lLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCmluZGV4IGY1MDAwNWE0NTRiMzlmNDVjZDBmZjcxYWQ3
ZDE5Y2ExY2Q3YzcwZWUuLjc3M2M1NTI5NmE1MTc4OGUwYzMzZDMxMzJmZTdmNTExZTYwNjU2ZmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTE4Miw2ICsx
ODIsMTQgQEAgdm9pZCBSZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiBpbWFn
ZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGMKICAgICBhcHBlbmQ8RHJhd05hdGl2ZUlt
YWdlPihpbWFnZS5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgaW1hZ2VTaXplLCBkZXN0
UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CiB9CiAKK3ZvaWQgUmVjb3JkZXI6OmRyYXdOYXRpdmVQ
REZEb2N1bWVudChOYXRpdmVQREZEb2N1bWVudCYgcGRmRG9jdW1lbnQsIGNvbnN0IEZsb2F0U2l6
ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQoreworICAgIGlm
IChtX2RlbGVnYXRlKQorICAgICAgICBtX2RlbGVnYXRlLT5jYWNoZU5hdGl2ZVBERkRvY3VtZW50
KHBkZkRvY3VtZW50KTsKKyAgICBtX2Rpc3BsYXlMaXN0LmNhY2hlTmF0aXZlUERGRG9jdW1lbnQo
cGRmRG9jdW1lbnQpOworICAgIGFwcGVuZDxEcmF3TmF0aXZlUERGRG9jdW1lbnQ+KHBkZkRvY3Vt
ZW50LnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBz
cmNSZWN0LCBvcHRpb25zKTsKK30KKwogdm9pZCBSZWNvcmRlcjo6ZHJhd1BhdHRlcm4oTmF0aXZl
SW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxv
YXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsK
ICAgICBpZiAobV9kZWxlZ2F0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5o
CmluZGV4IDc3Y2JhMzM2ZGM1Yjk0ZjRkYjIxZGE2NjExMDdiZDRjMzJjZjcwODUuLjQyZmU0ZTYw
Y2FlNTExN2ZjMTUzYTlmN2Y2MGU1MDc4MDQ1ODIzYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVjb3JkZXIuaApAQCAtNjcsNiArNjcsNyBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1
YWwgdm9pZCB3aWxsQXBwZW5kSXRlbU9mVHlwZShJdGVtVHlwZSkgeyB9CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBkaWRBcHBlbmRJdGVtT2ZUeXBlKEl0ZW1UeXBlKSB7IH0KICAgICAgICAgdmlydHVh
bCB2b2lkIGNhY2hlTmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmKSB7IH0KKyAgICAgICAgdmlydHVh
bCB2b2lkIGNhY2hlTmF0aXZlUERGRG9jdW1lbnQoTmF0aXZlUERGRG9jdW1lbnQmKSB7IH0KICAg
ICB9OwogCiBwcml2YXRlOgpAQCAtMTA0LDYgKzEwNSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lk
IGRyYXdJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdl
JiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3Qs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBv
dmVycmlkZTsKKyAgICB2b2lkIGRyYXdOYXRpdmVQREZEb2N1bWVudChOYXRpdmVQREZEb2N1bWVu
dCYsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3UGF0dGVybihOYXRpdmVJbWFnZSYsIGNvbnN0IEZsb2F0
U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBo
YXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
Jikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0
IGJvcmRlclRoaWNrbmVzcykgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZXBsYXllci5jcHAKaW5kZXggY2ExOTg0NWFhZjgwNGUxOTQ4OTlmMDljMmEwNjhiNDYzZWQ1NThm
Zi4uMDhiNjc4ZGQwMTY1YWFlNmEyMjk1YjIzYjI4NzlkMjkwNTNiODk0MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVwbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcApAQCAtMzQsMTEgKzM0LDEyIEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgRGlzcGxheUxpc3QgewogCi1SZXBsYXllcjo6UmVw
bGF5ZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBEaXNwbGF5TGlzdCYgZGlzcGxh
eUxpc3QsIGNvbnN0IEltYWdlQnVmZmVySGFzaE1hcCogaW1hZ2VCdWZmZXJzLCBjb25zdCBOYXRp
dmVJbWFnZUhhc2hNYXAqIG5hdGl2ZUltYWdlcywgRGVsZWdhdGUqIGRlbGVnYXRlKQorUmVwbGF5
ZXI6OlJlcGxheWVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRGlzcGxheUxpc3Qm
IGRpc3BsYXlMaXN0LCBjb25zdCBJbWFnZUJ1ZmZlckhhc2hNYXAqIGltYWdlQnVmZmVycywgY29u
c3QgTmF0aXZlSW1hZ2VIYXNoTWFwKiBuYXRpdmVJbWFnZXMsIGNvbnN0IE5hdGl2ZVBERkRvY3Vt
ZW50SGFzaE1hcCogbmF0aXZlUERGRG9jdW1lbnRzLCBEZWxlZ2F0ZSogZGVsZWdhdGUpCiAgICAg
OiBtX2NvbnRleHQoY29udGV4dCkKICAgICAsIG1fZGlzcGxheUxpc3QoZGlzcGxheUxpc3QpCiAg
ICAgLCBtX2ltYWdlQnVmZmVycyhpbWFnZUJ1ZmZlcnMgPyAqaW1hZ2VCdWZmZXJzIDogbV9kaXNw
bGF5TGlzdC5pbWFnZUJ1ZmZlcnMoKSkKICAgICAsIG1fbmF0aXZlSW1hZ2VzKG5hdGl2ZUltYWdl
cyA/ICpuYXRpdmVJbWFnZXMgOiBtX2Rpc3BsYXlMaXN0Lm5hdGl2ZUltYWdlcygpKQorICAgICwg
bV9uYXRpdmVQREZEb2N1bWVudHMobmF0aXZlUERGRG9jdW1lbnRzID8gKm5hdGl2ZVBERkRvY3Vt
ZW50cyA6IG1fZGlzcGxheUxpc3QubmF0aXZlUERGRG9jdW1lbnRzKCkpCiAgICAgLCBtX2RlbGVn
YXRlKGRlbGVnYXRlKQogewogfQpAQCAtNjcsNiArNjgsMTYgQEAgaW5saW5lIHN0YXRpYyBPcHRp
b25hbDxTdG9wUmVwbGF5UmVhc29uPiBhcHBseU5hdGl2ZUltYWdlSXRlbShHcmFwaGljc0NvbnRl
eHQmIGMKICAgICByZXR1cm4gU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNl
OwogfQogCitpbmxpbmUgc3RhdGljIE9wdGlvbmFsPFN0b3BSZXBsYXlSZWFzb24+IGFwcGx5RHJh
d05hdGl2ZVBERkRvY3VtZW50SXRlbShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IE5h
dGl2ZVBERkRvY3VtZW50SGFzaE1hcCYgbmF0aXZlUERGRG9jdW1lbnRzLCBJdGVtSGFuZGxlIGl0
ZW0pCit7CisgICAgYXV0byYgbmF0aXZlUERGRG9jdW1lbnRJdGVtID0gaXRlbS5nZXQ8RHJhd05h
dGl2ZVBERkRvY3VtZW50PigpOworICAgIGlmIChhdXRvKiBwZGZEb2N1bWVudCA9IG5hdGl2ZVBE
RkRvY3VtZW50cy5nZXQobmF0aXZlUERGRG9jdW1lbnRJdGVtLnBkZkRvY3VtZW50SWRlbnRpZmll
cigpKSkgeworICAgICAgICBuYXRpdmVQREZEb2N1bWVudEl0ZW0uYXBwbHkoY29udGV4dCwgKnBk
ZkRvY3VtZW50KTsKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICB9CisgICAgcmV0
dXJuIFN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNvdXJjZTsKK30KKwogT3B0aW9u
YWw8U3RvcFJlcGxheVJlYXNvbj4gUmVwbGF5ZXI6OmFwcGx5SXRlbShJdGVtSGFuZGxlIGl0ZW0p
CiB7CiAgICAgaWYgKG1fZGVsZWdhdGUgJiYgbV9kZWxlZ2F0ZS0+YXBwbHkoaXRlbSwgbV9jb250
ZXh0KSkKQEAgLTg0LDYgKzk1LDkgQEAgT3B0aW9uYWw8U3RvcFJlcGxheVJlYXNvbj4gUmVwbGF5
ZXI6OmFwcGx5SXRlbShJdGVtSGFuZGxlIGl0ZW0pCiAgICAgaWYgKGl0ZW0uaXM8RHJhd1BhdHRl
cm4+KCkpCiAgICAgICAgIHJldHVybiBhcHBseU5hdGl2ZUltYWdlSXRlbTxEcmF3UGF0dGVybj4o
bV9jb250ZXh0LCBtX25hdGl2ZUltYWdlcywgaXRlbSk7CiAKKyAgICBpZiAoaXRlbS5pczxEcmF3
TmF0aXZlUERGRG9jdW1lbnQ+KCkpCisgICAgICAgIHJldHVybiBhcHBseURyYXdOYXRpdmVQREZE
b2N1bWVudEl0ZW0obV9jb250ZXh0LCBtX25hdGl2ZVBERkRvY3VtZW50cywgaXRlbSk7CisKICAg
ICBpdGVtLmFwcGx5KG1fY29udGV4dCk7CiAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlcGxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5oCmluZGV4IGU2NzhiODYwNjJjZWRiNjEy
YWU4YmNlZDdjMGI3ODg0NTY3YzM3NjYuLmRkMzdiZmJlNjMwYjAyYmU2NzZjNTYzYzFmZDNjYmVk
NDQwZGQ4ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaApAQCAtNTQs
NyArNTQsNyBAQCBjbGFzcyBSZXBsYXllciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVw
bGF5ZXIpOwogcHVibGljOgogICAgIGNsYXNzIERlbGVnYXRlOwotICAgIFdFQkNPUkVfRVhQT1JU
IFJlcGxheWVyKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IERpc3BsYXlMaXN0JiwgY29uc3QgSW1h
Z2VCdWZmZXJIYXNoTWFwKiA9IG51bGxwdHIsIGNvbnN0IE5hdGl2ZUltYWdlSGFzaE1hcCogPSBu
dWxscHRyLCBEZWxlZ2F0ZSogPSBudWxscHRyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZXBsYXll
cihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBEaXNwbGF5TGlzdCYsIGNvbnN0IEltYWdlQnVmZmVy
SGFzaE1hcCogPSBudWxscHRyLCBjb25zdCBOYXRpdmVJbWFnZUhhc2hNYXAqID0gbnVsbHB0ciwg
Y29uc3QgTmF0aXZlUERGRG9jdW1lbnRIYXNoTWFwKiA9IG51bGxwdHIsIERlbGVnYXRlKiA9IG51
bGxwdHIpOwogICAgIFdFQkNPUkVfRVhQT1JUIH5SZXBsYXllcigpOwogCiAgICAgV0VCQ09SRV9F
WFBPUlQgUmVwbGF5UmVzdWx0IHJlcGxheShjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwID0g
eyB9LCBib29sIHRyYWNrUmVwbGF5TGlzdCA9IGZhbHNlKTsKQEAgLTcyLDYgKzcyLDcgQEAgcHJp
dmF0ZToKICAgICBjb25zdCBEaXNwbGF5TGlzdCYgbV9kaXNwbGF5TGlzdDsKICAgICBjb25zdCBJ
bWFnZUJ1ZmZlckhhc2hNYXAmIG1faW1hZ2VCdWZmZXJzOwogICAgIGNvbnN0IE5hdGl2ZUltYWdl
SGFzaE1hcCYgbV9uYXRpdmVJbWFnZXM7CisgICAgY29uc3QgTmF0aXZlUERGRG9jdW1lbnRIYXNo
TWFwJiBtX25hdGl2ZVBERkRvY3VtZW50czsKICAgICBEZWxlZ2F0ZSogbV9kZWxlZ2F0ZTsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9OYXRp
dmVQREZEb2N1bWVudE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9OYXRpdmVQREZEb2N1bWVudE1hYy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNTc3ZTA4MzI5NWE1Nzc0ZmFk
NmY4ZWM1ZGYyZGRkYTQ5Y2I5YmU3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL05hdGl2ZVBERkRvY3VtZW50TWFjLm1tCkBAIC0wLDAgKzEs
MTA1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lt
cG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJOYXRpdmVQREZEb2N1bWVudC5oIgorCisjaWYgRU5B
QkxFKFBERktJVF9GT1JfUERGRE9DVU1FTlRJTUFHRSkKKworI2ltcG9ydCAiTG9jYWxDdXJyZW50
R3JhcGhpY3NDb250ZXh0LmgiCisjaW1wb3J0ICJTaGFyZWRCdWZmZXIuaCIKKyNpbXBvcnQgPFF1
YXJ0ei9RdWFydHouaD4KKyNpbXBvcnQgPG9iamMvb2JqYy1jbGFzcy5oPgorI2ltcG9ydCA8cGFs
L3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KKyNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgor
CitTT0ZUX0xJTktfRlJBTUVXT1JLX0lOX1VNQlJFTExBKFF1YXJ0eiwgUERGS2l0KQorU09GVF9M
SU5LX0NMQVNTKFBERktpdCwgUERGRG9jdW1lbnQpCisKK2V4dGVybiAiQyIgeworYm9vbCBDR0Nv
bnRleHRHZXRBbGxvd3NGb250U21vb3RoaW5nKENHQ29udGV4dFJlZik7Citib29sIENHQ29udGV4
dEdldEFsbG93c0ZvbnRTdWJwaXhlbFF1YW50aXphdGlvbihDR0NvbnRleHRSZWYpOworfQorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZlB0cjxOYXRpdmVQREZEb2N1bWVudD4gTmF0aXZlUERG
RG9jdW1lbnQ6OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEsIFJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCit7CisgICAgYXV0byBkb2N1bWVu
dCA9IGFkb3B0TlMoW2FsbG9jUERGRG9jdW1lbnRJbnN0YW5jZSgpIGluaXRXaXRoRGF0YTpkYXRh
LmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CisgICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBOYXRpdmVQREZEb2N1bWVudChk
YXRhLCByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIFdURk1vdmUoZG9jdW1lbnQpKSk7Cit9
CisKK3ZvaWQgTmF0aXZlUERGRG9jdW1lbnQ6OmNvbXB1dGVCb3VuZHNGb3JDdXJyZW50UGFnZSgp
Cit7CisgICAgUERGUGFnZSAqcGRmUGFnZSA9IFttX3BsYXRmb3JtUERGRG9jdW1lbnQgcGFnZUF0
SW5kZXg6MF07CisKKyAgICBtX2Nyb3BCb3ggPSBbcGRmUGFnZSBib3VuZHNGb3JCb3g6a1BERkRp
c3BsYXlCb3hDcm9wQm94XTsKKyAgICBtX3JvdGF0aW9uRGVncmVlcyA9IFtwZGZQYWdlIHJvdGF0
aW9uXTsKK30KKwordW5zaWduZWQgTmF0aXZlUERGRG9jdW1lbnQ6OnBhZ2VDb3VudCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIFttX3BsYXRmb3JtUERGRG9jdW1lbnQgcGFnZUNvdW50XTsKK30KKwor
dm9pZCBOYXRpdmVQREZEb2N1bWVudDo6ZHJhd1BERlBhZ2UoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBGbG9hdFNpemUmKQoreworICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4
dCBsb2NhbEN1cnJlbnRDb250ZXh0KGNvbnRleHQpOworCisgICAgLy8gVGhlc2Ugc3RhdGVzIGNh
biBiZSBtdXRhdGVkIGJ5IFBERktpdCBidXQgYXJlIG5vdCBzYXZlZAorICAgIC8vIG9uIHRoZSBj
b250ZXh0J3Mgc3RhdGUgc3RhY2suICg8cmRhcjovL3Byb2JsZW0vMTQ5NTE3NTkmMzU3MzgxODE+
KQorICAgIGJvb2wgYWxsb3dzU21vb3RoaW5nID0gQ0dDb250ZXh0R2V0QWxsb3dzRm9udFNtb290
aGluZyhjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpKTsKKyAgICBib29sIGFsbG93c1N1YnBpeGVs
UXVhbnRpemF0aW9uID0gQ0dDb250ZXh0R2V0QWxsb3dzRm9udFN1YnBpeGVsUXVhbnRpemF0aW9u
KGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCkpOworICAgIGJvb2wgYWxsb3dzU3VicGl4ZWxQb3Np
dGlvbmluZyA9IENHQ29udGV4dEdldEFsbG93c0ZvbnRTdWJwaXhlbFBvc2l0aW9uaW5nKGNvbnRl
eHQucGxhdGZvcm1Db250ZXh0KCkpOworCisgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElP
TlNfQkVHSU4KKyAgICBbW21fcGxhdGZvcm1QREZEb2N1bWVudCBwYWdlQXRJbmRleDowXSBkcmF3
V2l0aEJveDprUERGRGlzcGxheUJveENyb3BCb3hdOworICAgIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0VORAorCisgICAgQ0dDb250ZXh0U2V0QWxsb3dzRm9udFNtb290aGluZyhjb250
ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBhbGxvd3NTbW9vdGhpbmcpOworICAgIENHQ29udGV4dFNl
dEFsbG93c0ZvbnRTdWJwaXhlbFF1YW50aXphdGlvbihjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgp
LCBhbGxvd3NTdWJwaXhlbFF1YW50aXphdGlvbik7CisgICAgQ0dDb250ZXh0U2V0QWxsb3dzRm9u
dFN1YnBpeGVsUG9zaXRpb25pbmcoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgYWxsb3dzU3Vi
cGl4ZWxQb3NpdGlvbmluZyk7Cit9CisKK1JldGFpblB0cjxDRk11dGFibGVEYXRhUmVmPiBOYXRp
dmVQREZEb2N1bWVudDo6Y29udmVydFBvc3RTY3JpcHREYXRhVG9QREYoUmV0YWluUHRyPENGRGF0
YVJlZj4mJiBwb3N0U2NyaXB0RGF0YSkKK3sKKyAgICAvLyBDb252ZXJ0IFBvc3RTY3JpcHQgdG8g
UERGIHVzaW5nIHRoZSBRdWFydHogMkQgQVBJLgorICAgIC8vIGh0dHA6Ly9kZXZlbG9wZXIuYXBw
bGUuY29tL2RvY3VtZW50YXRpb24vR3JhcGhpY3NJbWFnaW5nL0NvbmNlcHR1YWwvZHJhd2luZ3dp
dGhxdWFydHoyZC9kcV9wc19jb252ZXJ0L2NoYXB0ZXJfMTZfc2VjdGlvbl8xLmh0bWwKKworICAg
IENHUFNDb252ZXJ0ZXJDYWxsYmFja3MgY2FsbGJhY2tzID0geyB9OworICAgIGF1dG8gY29udmVy
dGVyID0gYWRvcHRDRihDR1BTQ29udmVydGVyQ3JlYXRlKDAsICZjYWxsYmFja3MsIDApKTsKKyAg
ICBhdXRvIHByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEo
cG9zdFNjcmlwdERhdGEuZ2V0KCkpKTsKKyAgICBhdXRvIHBkZkRhdGEgPSBhZG9wdENGKENGRGF0
YUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCkpOworICAgIGF1dG8gY29uc3Vt
ZXIgPSBhZG9wdENGKENHRGF0YUNvbnN1bWVyQ3JlYXRlV2l0aENGRGF0YShwZGZEYXRhLmdldCgp
KSk7CisKKyAgICBDR1BTQ29udmVydGVyQ29udmVydChjb252ZXJ0ZXIuZ2V0KCksIHByb3ZpZGVy
LmdldCgpLCBjb25zdW1lci5nZXQoKSwgMCk7CisgICAgcmV0dXJuIHBkZkRhdGE7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShQREZLSVRfRk9SX1BERkRP
Q1VNRU5USU1BR0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA4M2U2YWY3YjAzODkyODM4YzNiZmVhMWMwYzExYWE3ZmNmOGE3N2E5Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tCisrKyAvZGV2L251bGwK
QEAgLTEsODggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
LSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiUERGRG9jdW1lbnRJbWFnZS5oIgot
Ci0jaWYgVVNFKFBERktJVF9GT1JfUERGRE9DVU1FTlRJTUFHRSkKLQotI2ltcG9ydCAiTG9jYWxD
dXJyZW50R3JhcGhpY3NDb250ZXh0LmgiCi0jaW1wb3J0ICJTaGFyZWRCdWZmZXIuaCIKLSNpbXBv
cnQgPFF1YXJ0ei9RdWFydHouaD4KLSNpbXBvcnQgPG9iamMvb2JqYy1jbGFzcy5oPgotI2ltcG9y
dCA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KLSNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIu
aD4KLSNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgotCi1TT0ZUX0xJTktfRlJBTUVXT1JLX0lO
X1VNQlJFTExBKFF1YXJ0eiwgUERGS2l0KQotU09GVF9MSU5LX0NMQVNTKFBERktpdCwgUERGRG9j
dW1lbnQpCi0KLWV4dGVybiAiQyIgewotYm9vbCBDR0NvbnRleHRHZXRBbGxvd3NGb250U21vb3Ro
aW5nKENHQ29udGV4dFJlZiBjb250ZXh0KTsKLWJvb2wgQ0dDb250ZXh0R2V0QWxsb3dzRm9udFN1
YnBpeGVsUXVhbnRpemF0aW9uKENHQ29udGV4dFJlZiBjb250ZXh0KTsKLX0KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi12b2lkIFBERkRvY3VtZW50SW1hZ2U6OmNyZWF0ZVBERkRvY3VtZW50KCkK
LXsKLSAgICBtX2RvY3VtZW50ID0gYWRvcHROUyhbYWxsb2NQREZEb2N1bWVudEluc3RhbmNlKCkg
aW5pdFdpdGhEYXRhOmRhdGEoKS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKLX0KLQotdm9pZCBQ
REZEb2N1bWVudEltYWdlOjpjb21wdXRlQm91bmRzRm9yQ3VycmVudFBhZ2UoKQotewotICAgIFBE
RlBhZ2UgKnBkZlBhZ2UgPSBbbV9kb2N1bWVudCBwYWdlQXRJbmRleDowXTsKLQotICAgIG1fY3Jv
cEJveCA9IFtwZGZQYWdlIGJvdW5kc0ZvckJveDprUERGRGlzcGxheUJveENyb3BCb3hdOwotICAg
IG1fcm90YXRpb25EZWdyZWVzID0gW3BkZlBhZ2Ugcm90YXRpb25dOwotfQotCi11bnNpZ25lZCBQ
REZEb2N1bWVudEltYWdlOjpwYWdlQ291bnQoKSBjb25zdAotewotICAgIHJldHVybiBbbV9kb2N1
bWVudCBwYWdlQ291bnRdOwotfQotCi12b2lkIFBERkRvY3VtZW50SW1hZ2U6OmRyYXdQREZQYWdl
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKLXsKLSAgICBMb2NhbEN1cnJlbnRHcmFwaGljc0Nv
bnRleHQgbG9jYWxDdXJyZW50Q29udGV4dChjb250ZXh0KTsKLQotICAgIC8vIFRoZXNlIHN0YXRl
cyBjYW4gYmUgbXV0YXRlZCBieSBQREZLaXQgYnV0IGFyZSBub3Qgc2F2ZWQKLSAgICAvLyBvbiB0
aGUgY29udGV4dCdzIHN0YXRlIHN0YWNrLiAoPHJkYXI6Ly9wcm9ibGVtLzE0OTUxNzU5JjM1NzM4
MTgxPikKLSAgICBib29sIGFsbG93c1Ntb290aGluZyA9IENHQ29udGV4dEdldEFsbG93c0ZvbnRT
bW9vdGhpbmcoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSk7Ci0gICAgYm9vbCBhbGxvd3NTdWJw
aXhlbFF1YW50aXphdGlvbiA9IENHQ29udGV4dEdldEFsbG93c0ZvbnRTdWJwaXhlbFF1YW50aXph
dGlvbihjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpKTsKLSAgICBib29sIGFsbG93c1N1YnBpeGVs
UG9zaXRpb25pbmcgPSBDR0NvbnRleHRHZXRBbGxvd3NGb250U3VicGl4ZWxQb3NpdGlvbmluZyhj
b250ZXh0LnBsYXRmb3JtQ29udGV4dCgpKTsKLQotICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFS
QVRJT05TX0JFR0lOCi0gICAgW1ttX2RvY3VtZW50IHBhZ2VBdEluZGV4OjBdIGRyYXdXaXRoQm94
OmtQREZEaXNwbGF5Qm94Q3JvcEJveF07Ci0gICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElP
TlNfRU5ECi0KLSAgICBDR0NvbnRleHRTZXRBbGxvd3NGb250U21vb3RoaW5nKGNvbnRleHQucGxh
dGZvcm1Db250ZXh0KCksIGFsbG93c1Ntb290aGluZyk7Ci0gICAgQ0dDb250ZXh0U2V0QWxsb3dz
Rm9udFN1YnBpeGVsUXVhbnRpemF0aW9uKGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCksIGFsbG93
c1N1YnBpeGVsUXVhbnRpemF0aW9uKTsKLSAgICBDR0NvbnRleHRTZXRBbGxvd3NGb250U3VicGl4
ZWxQb3NpdGlvbmluZyhjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLCBhbGxvd3NTdWJwaXhlbFBv
c2l0aW9uaW5nKTsKLX0KLQotfQotCi0jZW5kaWYgLy8gVVNFKFBERktJVF9GT1JfUERGRE9DVU1F
TlRJTUFHRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvY2Fpcm8vTmljb3NpYUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRp
b25SZWNvcmRlci5jcHAKaW5kZXggMmM5YWE4ODY5NjllYjA1MmVlYzYzMmNlOWM2ZTlkNTU3MjFm
OTc2ZC4uZmYxZjdjNzg4NmMwOGE4MzdhZjQzZDM5MzMwZmRlMzIzZmU5Y2QxOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lh
Q2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAK
QEAgLTU2MCw2ICs1NjAsMTEgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpkcmF3TmF0
aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmIG5hdGl2ZUltYWdlLCBjb25zdCBGbG8KICAgICBhcHBlbmQo
Y3JlYXRlQ29tbWFuZDxEcmF3TmF0aXZlSW1hZ2U+KG5hdGl2ZUltYWdlLnBsYXRmb3JtSW1hZ2Uo
KSwgZGVzdFJlY3QsIHNyY1JlY3QsIEltYWdlUGFpbnRpbmdPcHRpb25zKG9wdGlvbnMsIHN0YXRl
LmltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkpLCBzdGF0ZS5hbHBoYSwgQ2Fpcm86OlNoYWRvd1N0
YXRlKHN0YXRlKSkpOwogfQogCit2b2lkIENhaXJvT3BlcmF0aW9uUmVjb3JkZXI6OmRyYXdOYXRp
dmVQREZEb2N1bWVudChOYXRpdmVQREZEb2N1bWVudCYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0
IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25z
JikKK3sKKyAgICAvLyBGSVhNRTogTm90IGltcGxlbWVudGVkLgorfQorCiB2b2lkIENhaXJvT3Bl
cmF0aW9uUmVjb3JkZXI6OmRyYXdQYXR0ZXJuKE5hdGl2ZUltYWdlJiBuYXRpdmVJbWFnZSwgY29u
c3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5z
Zm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywg
Y29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgc3RydWN0IERyYXdQ
YXR0ZXJuIGZpbmFsIDogUGFpbnRpbmdPcGVyYXRpb24sIE9wZXJhdGlvbkRhdGE8UmVmUHRyPGNh
aXJvX3N1cmZhY2VfdD4sIEludFNpemUsIEZsb2F0UmVjdCwgRmxvYXRSZWN0LCBBZmZpbmVUcmFu
c2Zvcm0sIEZsb2F0UG9pbnQsIEltYWdlUGFpbnRpbmdPcHRpb25zPiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL2NhaXJvL05pY29zaWFDYWly
b09wZXJhdGlvblJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9u
aWNvc2lhL2NhaXJvL05pY29zaWFDYWlyb09wZXJhdGlvblJlY29yZGVyLmgKaW5kZXggODBhMjZm
ZDk4ZTg0NDcxNjdiMTc2MWFmODkzMDcxMTZiMTEwMmNhYy4uM2E3Yzk3YmMwNWRmYWRlOGZhM2Q3
MjgwNjc0ODczY2NmNmQzNGEzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3Np
YUNhaXJvT3BlcmF0aW9uUmVjb3JkZXIuaApAQCAtNjYsNiArNjYsNyBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCBkcmF3SW1hZ2VCdWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZmZXImLCBjb25zdCBXZWJD
b3JlOjpGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHNv
dXJjZSwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAg
ICB2b2lkIGRyYXdOYXRpdmVJbWFnZShXZWJDb3JlOjpOYXRpdmVJbWFnZSYsIGNvbnN0IFdlYkNv
cmU6OkZsb2F0U2l6ZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6
OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBkcmF3TmF0aXZlUERGRG9jdW1lbnQoV2ViQ29yZTo6TmF0aXZlUERGRG9j
dW1lbnQmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJl
Y3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50
aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd1BhdHRlcm4oV2ViQ29yZTo6TmF0
aXZlSW1hZ2UmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBjb25zdCBXZWJDb3JlOjpGbG9h
dFJlY3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpBZmZpbmVU
cmFuc2Zvcm0mLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiwgY29uc3QgV2ViQ29yZTo6Rmxv
YXRTaXplJiwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsK
IAogICAgIHZvaWQgZHJhd1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgZmxvYXQpIG92
ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcAppbmRleCAwYzRm
M2E0OTczNjliMDQwZTVmZWZlYzE3MjFkMGM3ZTZlY2Y4YzkxLi5lMzJlOWNiZDFiZWY3OWY0NDhj
NmY0NWRiYWY0ZWQxYmExMTZjOTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJELmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhpY3NDb250ZXh0SW1wbERpcmVj
dDJELmNwcApAQCAtMjc0LDYgKzI3NCwxMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxEaXJl
Y3QyRDo6ZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiBpbWFnZSwgY29uc3QgRmxvYQogICAg
IERpcmVjdDJEOjpkcmF3TmF0aXZlSW1hZ2UobV9wbGF0Zm9ybUNvbnRleHQsIGltYWdlLnBsYXRm
b3JtSW1hZ2UoKS5nZXQoKSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucywg
c3RhdGUuYWxwaGEsIERpcmVjdDJEOjpTaGFkb3dTdGF0ZShzdGF0ZSkpOwogfQogCit2b2lkIEdy
YXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRDo6ZHJhd05hdGl2ZVBERkRvY3VtZW50KE5hdGl2ZVBE
RkRvY3VtZW50JiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxv
YXRSZWN0JiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7Cit9CisKIHZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbERpcmVjdDJEOjpkcmF3UGF0dGVy
bigoTmF0aXZlSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwg
Y29uc3QgRmxvYXRTaXplJiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7
CiAgICAgaWYgKGF1dG8gc3VyZmFjZSA9IGltYWdlLnBsYXRmb3JtSW1hZ2UoKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRJ
bXBsRGlyZWN0MkQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFw
aGljc0NvbnRleHRJbXBsRGlyZWN0MkQuaAppbmRleCA5MmNlM2YwOWJiODZmMDhhY2Q1YzI2YWI1
ODYwN2RhMjI4ZjdlNzhkLi5jZjY5MWJlMTVhYmE1YzY4MzY3NzhhNWFiM2YwNzMwZDI4NTdhM2Ex
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vR3JhcGhp
Y3NDb250ZXh0SW1wbERpcmVjdDJELmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dEltcGxEaXJlY3QyRC5oCkBAIC03MCw2ICs3MCw3IEBA
IHB1YmxpYzoKIAogICAgIGJvb2wgZHJhd0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBkcmF3TmF0aXZlSW1hZ2Uo
TmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd05hdGl2ZVBERkRvY3VtZW50KE5hdGl2
ZVBERkRvY3VtZW50JiwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGlu
Z09wdGlvbnMmKSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdQYXR0ZXJuKChOYXRpdmVJbWFnZSYs
IGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9h
dFJlY3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3Qg
RmxvYXRTaXplJiwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKIAogICAg
IHZvaWQgZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQpIG92ZXJyaWRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKaW5kZXggYzBiZDgyN2ZjNDQ0NmVlNzk3
MjBhMGVlZjM2ZjQzYTk0OGY4ZGM2MC4uZDIxMDMwODJiYjM5ZDdhODM0NmZiZTY2ZGI0NjBiNWQ1
NDMyM2I2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCkBAIC00
NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJl
c3VsdC5oIgogI2luY2x1ZGUgIklubGluZUVsZW1lbnRCb3guaCIKKyNpbmNsdWRlICJQREZEb2N1
bWVudEltYWdlLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhaW50SW5mby5oIgog
I2luY2x1ZGUgIlJlbmRlckZyYWdtZW50ZWRGbG93LmgiCkBAIC02NCw3ICs2NSw2IEBACiAjZW5k
aWYKIAogI2lmIFVTRShDRykKLSNpbmNsdWRlICJQREZEb2N1bWVudEltYWdlLmgiCiAjaW5jbHVk
ZSAiU2V0dGluZ3MuaCIKICNlbmRpZgogCkBAIC02NjIsNyArNjYyLDcgQEAgSW1hZ2VEcmF3UmVz
dWx0IFJlbmRlckltYWdlOjpwYWludEludG9SZWN0KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBGbG9hdFJlY3QKICAgICAvLyBGSVhNRTogRG9jdW1lbnQgd2hlbiBpbWFnZSAhPSBpbWcuZ2V0
KCkuCiAgICAgSW1hZ2UqIGltYWdlID0gaW1hZ2VSZXNvdXJjZSgpLmltYWdlKCkuZ2V0KCk7CiAK
LSNpZiBVU0UoQ0cpCisjaWYgRU5BQkxFKFBERkRPQ1VNRU5USU1BR0UpCiAgICAgaWYgKGlzPFBE
RkRvY3VtZW50SW1hZ2U+KGltYWdlKSkKICAgICAgICAgZG93bmNhc3Q8UERGRG9jdW1lbnRJbWFn
ZT4oKmltYWdlKS5zZXRQZGZJbWFnZUNhY2hpbmdQb2xpY3koc2V0dGluZ3MoKS5wZGZJbWFnZUNh
Y2hpbmdQb2xpY3koKSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApp
bmRleCBlM2RmZTc5NTE2YzM1OWFkODQwNzdiZjVmZTg1MmZiOTFmN2UzZWQwLi5kMWJkY2U1M2Q1
ODNiMzlhNWNmMmIzZTMxNDhmN2YxNzljODNkZjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuY3BwCkBAIC0xNDIsNiArMTQyLDcgQEAKICNpbmNsdWRlICJOYXZpZ2F0b3JCZWFjb24u
aCIKICNpbmNsdWRlICJOYXZpZ2F0b3JNZWRpYURldmljZXMuaCIKICNpbmNsdWRlICJOZXR3b3Jr
TG9hZEluZm9ybWF0aW9uLmgiCisjaW5jbHVkZSAiUERGRG9jdW1lbnRJbWFnZS5oIgogI2luY2x1
ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdlT3ZlcmxheS5oIgogI2luY2x1ZGUgIlBhdGhVdGls
aXRpZXMuaCIKQEAgLTIyNiwxMCArMjI3LDYgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdC
dWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+
CiAKLSNpZiBVU0UoQ0cpCi0jaW5jbHVkZSAiUERGRG9jdW1lbnRJbWFnZS5oIgotI2VuZGlmCi0K
ICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKICNpbmNsdWRlICJDb2xvckNob29zZXIuaCIK
ICNlbmRpZgpAQCAtOTA3LDcgKzkwNCw3IEBAIHN0YXRpYyBCaXRtYXBJbWFnZSogYml0bWFwSW1h
Z2VGcm9tSW1hZ2VFbGVtZW50KEhUTUxJbWFnZUVsZW1lbnQmIGVsZW1lbnQpCiAgICAgcmV0dXJu
IGltYWdlICYmIGlzPEJpdG1hcEltYWdlPihpbWFnZSkgPyAmZG93bmNhc3Q8Qml0bWFwSW1hZ2U+
KCppbWFnZSkgOiBudWxscHRyOwogfQogCi0jaWYgVVNFKENHKQorI2lmIEVOQUJMRShQREZET0NV
TUVOVElNQUdFKQogc3RhdGljIFBERkRvY3VtZW50SW1hZ2UqIHBkZkRvY3VtZW50SW1hZ2VGcm9t
SW1hZ2VFbGVtZW50KEhUTUxJbWFnZUVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgYXV0byogaW1h
Z2UgPSBpbWFnZUZyb21JbWFnZUVsZW1lbnQoZWxlbWVudCk7CkBAIC05NzAsNyArOTY3LDcgQEAg
dW5zaWduZWQgSW50ZXJuYWxzOjppbWFnZURlY29kZUNvdW50KEhUTUxJbWFnZUVsZW1lbnQmIGVs
ZW1lbnQpCiAKIHVuc2lnbmVkIEludGVybmFsczo6cGRmRG9jdW1lbnRDYWNoaW5nQ291bnQoSFRN
TEltYWdlRWxlbWVudCYgZWxlbWVudCkKIHsKLSNpZiBVU0UoQ0cpCisjaWYgRU5BQkxFKFBERkRP
Q1VNRU5USU1BR0UpCiAgICAgYXV0byogcGRmRG9jdW1lbnRJbWFnZSA9IHBkZkRvY3VtZW50SW1h
Z2VGcm9tSW1hZ2VFbGVtZW50KGVsZW1lbnQpOwogICAgIHJldHVybiBwZGZEb2N1bWVudEltYWdl
ID8gcGRmRG9jdW1lbnRJbWFnZS0+Y2FjaGluZ0NvdW50Rm9yVGVzdGluZygpIDogMDsKICNlbHNl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1h
Z2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFn
ZUJ1ZmZlci5oCmluZGV4IDVjNzU0NWJmZTY2OTI2MjBkMDEzZmRjODg2ZDc1ZWYzOWM4MWFmZGQu
LmY5NTc4MzhiYmMyYTc3MzcxMmYzMmE2MGVhYTJmNzA3YjE5NTE0MTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCkBA
IC03Miw3ICs3Miw4IEBAIHB1YmxpYzoKIAogICAgICAgICBjb25zdCBhdXRvJiBpbWFnZUJ1ZmZl
cnMgPSBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQucmVtb3RlUmVzb3VyY2VDYWNoZSgpLmltYWdl
QnVmZmVycygpOwogICAgICAgICBjb25zdCBhdXRvJiBuYXRpdmVJbWFnZXMgPSBtX3JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQucmVtb3RlUmVzb3VyY2VDYWNoZSgpLm5hdGl2ZUltYWdlcygpOwotICAg
ICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXIgcmVwbGF5ZXIgeyBCYXNlQ29uY3Jl
dGVJbWFnZUJ1ZmZlcjo6Y29udGV4dCgpLCBkaXNwbGF5TGlzdCwgJmltYWdlQnVmZmVycywgJm5h
dGl2ZUltYWdlcywgdGhpcyB9OworICAgICAgICBjb25zdCBhdXRvJiBuYXRpdmVQREZEb2N1bWVu
dHMgPSBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmQucmVtb3RlUmVzb3VyY2VDYWNoZSgpLm5hdGl2
ZVBERkRvY3VtZW50cygpOworICAgICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXIg
cmVwbGF5ZXIgeyBCYXNlQ29uY3JldGVJbWFnZUJ1ZmZlcjo6Y29udGV4dCgpLCBkaXNwbGF5TGlz
dCwgJmltYWdlQnVmZmVycywgJm5hdGl2ZUltYWdlcywgJm5hdGl2ZVBERkRvY3VtZW50cywgdGhp
cyB9OwogICAgICAgICByZXR1cm4gcmVwbGF5ZXIucmVwbGF5KCk7CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVy
aW5nQmFja2VuZC5jcHAKaW5kZXggZjU5YzM4NzI0ZjhmNjJlZTc4MDJiOTIwMjM3ZjY4ODQ3M2Q3
ZmJmOS4uMjYyYWFjNjhlNTZiZjZiMmFmNmRjNDJiZWZmNTAwNTEwZGY0MzA5YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kLmNwcApAQCAtMjI4LDYgKzIyOCwxNSBAQCB2b2lkIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQ6OmNhY2hlTmF0aXZlSW1hZ2UoUmVmPE5hdGl2ZUltYWdlPiYmIGltYWdlKQogICAg
IG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZU5hdGl2ZUltYWdlKFdURk1vdmUoaW1hZ2UpKTsK
IH0KIAordm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjYWNoZU5hdGl2ZVBERkRvY3VtZW50
KElQQzo6U2hhcmVkQnVmZmVyQ29weSYmIGRhdGEsIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCit7CisgICAgaWYgKCFkYXRhLmJ1ZmZlcigp
KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoYXV0byBwZGZEb2N1bWVudCA9IE5hdGl2ZVBE
RkRvY3VtZW50OjpjcmVhdGUoZGF0YS5idWZmZXIoKS5yZWxlYXNlTm9uTnVsbCgpLCByZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIpKQorICAgICAgICBtX3JlbW90ZVJlc291cmNlQ2FjaGUuY2Fj
aGVOYXRpdmVQREZEb2N1bWVudChtYWtlUmVmKCpwZGZEb2N1bWVudCkpOworfQorCiB2b2lkIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmQ6OnJlbGVhc2VSZW1vdGVSZXNvdXJjZShSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogewogICAgIG1fcmVt
b3RlUmVzb3VyY2VDYWNoZS5yZWxlYXNlUmVtb3RlUmVzb3VyY2UocmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKTsKQEAgLTMwNSw2ICszMTQsNyBAQCBPcHRpb25hbDxEaXNwbGF5TGlzdDo6SXRl
bUhhbmRsZT4gV0FSTl9VTlVTRURfUkVUVVJOIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRlYwog
ICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3RWxsaXBzZToKICAgICBjYXNlIERp
c3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyOgogICAgIGNhc2UgRGlzcGxheUxp
c3Q6Okl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6CisgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRl
bVR5cGU6OkRyYXdOYXRpdmVQREZEb2N1bWVudDoKICAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVt
VHlwZTo6RHJhd1BhdHRlcm46CiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdM
aW5lOgogICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3UmVjdDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5n
QmFja2VuZC5oCmluZGV4IDY0MDY2NjhmYWUwNTA1N2U5ZGYzMjY0ZjU3NTI0OTQ4OWQ3MDVjNzgu
LjBmMTM5ZTZkZGVhMTcxZjk1ZjczNWFmN2I0NDc2OWE2ZGRjZTVhY2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmgK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmQuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNp
bmNsdWRlICJSZW1vdGVSZXNvdXJjZUNhY2hlLmgiCiAjaW5jbHVkZSAiUmVuZGVyaW5nQmFja2Vu
ZElkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXJDb3B5LmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9Db2xvclNwYWNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaXNwbGF5TGlzdC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvRGlzcGxheUxpc3RJdGVtcy5oPgpAQCAtMTA3LDYgKzEwOCw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCB3YWtlVXBBbmRBcHBseURpc3BsYXlMaXN0KFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpJdGVtQnVmZmVySWRlbnRpZmllciBpbml0aWFsSWRlbnRpZmllciwgdWludDY0
X3QgaW5pdGlhbE9mZnNldCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRl
c3RpbmF0aW9uQnVmZmVySWRlbnRpZmllcik7CiAgICAgdm9pZCBnZXRJbWFnZURhdGEoV2ViQ29y
ZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIFdlYkNvcmU6OkludFJlY3Qg
c3JjUmVjdCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKElQQzo6SW1hZ2VEYXRhUmVmZXJlbmNlJiYpPiYmKTsKICAgICB2b2lkIGNh
Y2hlTmF0aXZlSW1hZ2UoUmVmPFdlYkNvcmU6Ok5hdGl2ZUltYWdlPiYmKTsKKyAgICB2b2lkIGNh
Y2hlTmF0aXZlUERGRG9jdW1lbnQoSVBDOjpTaGFyZWRCdWZmZXJDb3B5JiYsIFdlYkNvcmU6OlJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgdm9pZCByZWxlYXNlUmVtb3RlUmVzb3Vy
Y2UoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZENy
ZWF0ZVNoYXJlZERpc3BsYXlMaXN0SGFuZGxlKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVm
ZmVySWRlbnRpZmllciwgY29uc3QgU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUmLCBXZWJDb3JlOjpS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZGVzdGluYXRpb25CdWZmZXJJZGVudGlmaWVyKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbgppbmRleCA4ZTI3ZTA0Zjc3
MzgxYTZmYjk5NTczNDJhMjljMjE0NjA3MmVlY2Y4Li4zYTUwMWY2MTEyZTM3Yzc2YTFlZGE5Mjk5
NzQyYWI0MjY2ODY0YTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5tZXNzYWdlcy5p
bgpAQCAtMjcsNiArMjcsNyBAQCBtZXNzYWdlcyAtPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kIE5v
dFJlZkNvdW50ZWQgewogICAgIFdha2VVcEFuZEFwcGx5RGlzcGxheUxpc3QoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVyIGluaXRpYWxJZGVudGlmaWVyLCB1aW50NjRf
dCBpbml0aWFsT2Zmc2V0LCBXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZGVz
dGluYXRpb25CdWZmZXJJZGVudGlmaWVyKQogICAgIEdldEltYWdlRGF0YShlbnVtOnVpbnQ4X3Qg
V2ViQ29yZTo6QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBvdXRwdXRGb3JtYXQsIFdlYkNvcmU6Oklu
dFJlY3Qgc3JjUmVjdCwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllcikgLT4gKElQQzo6SW1hZ2VEYXRhUmVmZXJlbmNlIGltYWdl
RGF0YSkgU3luY2hyb25vdXMKICAgICBDYWNoZU5hdGl2ZUltYWdlKFdlYkNvcmU6Ok5hdGl2ZUlt
YWdlUmVmZXJlbmNlIG5hdGl2ZUltYWdlKQorICAgIENhY2hlTmF0aXZlUERGRG9jdW1lbnQoSVBD
OjpTaGFyZWRCdWZmZXJDb3B5IGRhdGEsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllciByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiAgICAgRGlkQ3JlYXRlU2hhcmVkRGlz
cGxheUxpc3RIYW5kbGUoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJJZGVudGlmaWVy
IGlkZW50aWZpZXIsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgaGFuZGxlLCBXZWJD
b3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZGVzdGluYXRpb25CdWZmZXJJZGVudGlm
aWVyKQogICAgIFJlbGVhc2VSZW1vdGVSZXNvdXJjZShXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJj
ZUlkZW50aWZpZXIgcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUuY3Bw
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGUu
Y3BwCmluZGV4IGMzMzJkMmY3MDRlMTU4NGQ2YzBlNWNmYmRiN2VkNTZkYzRiMmMzNjkuLjkyNzU1
MjVjN2U5ZWJmOWY5OWMyY2UxZTU4MTc4MDRjYjAzNDAwYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5jcHAK
QEAgLTQ4LDEyICs0OCwyMCBAQCB2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGU6OmNhY2hlTmF0aXZl
SW1hZ2UoUmVmPE5hdGl2ZUltYWdlPiYmIGltYWdlKQogICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVz
dWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKK3ZvaWQgUmVtb3RlUmVzb3VyY2VDYWNo
ZTo6Y2FjaGVOYXRpdmVQREZEb2N1bWVudChSZWY8TmF0aXZlUERGRG9jdW1lbnQ+JiYgcGRmRG9j
dW1lbnQpCit7CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX25hdGl2ZVBERkRvY3VtZW50cy5hZGQo
cGRmRG9jdW1lbnQtPnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBXVEZNb3ZlKHBkZkRv
Y3VtZW50KSk7CisgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0Vu
dHJ5KTsKK30KKwogdm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlOjpyZWxlYXNlUmVtb3RlUmVzb3Vy
Y2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cikKIHsKICAgICBpZiAobV9pbWFnZUJ1ZmZlcnMucmVtb3ZlKHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcikpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAobV9uYXRpdmVJbWFnZXMucmVtb3Zl
KHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikpCiAgICAgICAgIHJldHVybjsKKyAgICBpZiAo
bV9uYXRpdmVQREZEb2N1bWVudHMucmVtb3ZlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikp
CisgICAgICAgIHJldHVybjsKICAgICAvLyBDYWNoaW5nIHRoZSByZW1vdGUgcmVzb3VyY2Ugc2hv
dWxkIGhhdmUgaGFwcGVuZWQgYmVmb3JlIHJlbGVhc2luZyBpdC4KICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGlj
cy9SZW1vdGVSZXNvdXJjZUNhY2hlLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVzb3VyY2VDYWNoZS5oCmluZGV4IDFmMjEwNThlMzNhMTg3NWJiZDdmNzJjMDEy
M2M2NTAzZWM3OTliMGIuLmY4ZTFmMDRhNWZiZjIxZjM4ZDBhYzBlOTllMmJjMjVmODQxZDM1ZDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZXNv
dXJjZUNhY2hlLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlc291cmNlQ2FjaGUuaApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSA8V2ViQ29yZS9J
bWFnZUJ1ZmZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmF0aXZlSW1hZ2UuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL05hdGl2ZVBERkRvY3VtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCkBAIC00
MywxNCArNDQsMTcgQEAgcHVibGljOgogICAgIHZvaWQgY2FjaGVJbWFnZUJ1ZmZlcihSZWY8V2Vi
Q29yZTo6SW1hZ2VCdWZmZXI+JiYpOwogICAgIFdlYkNvcmU6OkltYWdlQnVmZmVyKiBjYWNoZWRJ
bWFnZUJ1ZmZlcihXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIHZv
aWQgY2FjaGVOYXRpdmVJbWFnZShSZWY8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+JiYpOworICAgIHZv
aWQgY2FjaGVOYXRpdmVQREZEb2N1bWVudChSZWY8V2ViQ29yZTo6TmF0aXZlUERGRG9jdW1lbnQ+
JiYpOwogICAgIHZvaWQgcmVsZWFzZVJlbW90ZVJlc291cmNlKFdlYkNvcmU6OlJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcik7CiAgICAgCiAgICAgY29uc3QgV2ViQ29yZTo6SW1hZ2VCdWZmZXJI
YXNoTWFwJiBpbWFnZUJ1ZmZlcnMoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlQnVmZmVyczsgfQog
ICAgIGNvbnN0IFdlYkNvcmU6Ok5hdGl2ZUltYWdlSGFzaE1hcCYgbmF0aXZlSW1hZ2VzKCkgY29u
c3QgeyByZXR1cm4gbV9uYXRpdmVJbWFnZXM7IH0KKyAgICBjb25zdCBXZWJDb3JlOjpOYXRpdmVQ
REZEb2N1bWVudEhhc2hNYXAmIG5hdGl2ZVBERkRvY3VtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1f
bmF0aXZlUERGRG9jdW1lbnRzOyB9CiAKIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6SW1hZ2VCdWZm
ZXJIYXNoTWFwIG1faW1hZ2VCdWZmZXJzOwogICAgIFdlYkNvcmU6Ok5hdGl2ZUltYWdlSGFzaE1h
cCBtX25hdGl2ZUltYWdlczsKKyAgICBXZWJDb3JlOjpOYXRpdmVQREZEb2N1bWVudEhhc2hNYXAg
bV9uYXRpdmVQREZEb2N1bWVudHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VC
dWZmZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVJbWFnZUJ1ZmZlclByb3h5LmgKaW5kZXggMzFjZDAyZDFiMGYyMWVkZTU4MjJiZjk0NWJhZDQ2
ZWRlZjFlYjM3YS4uNTA4NGVlNGU4OWQzN2QzYTEzY2QyYmE1MGU5NTRmZGJhY2FiZWUyNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFn
ZUJ1ZmZlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKQEAgLTIzMSw2ICsyMzEsMTIgQEAgcHJvdGVjdGVk
OgogICAgICAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPnJlbW90ZVJlc291
cmNlQ2FjaGVQcm94eSgpLmNhY2hlTmF0aXZlSW1hZ2UoaW1hZ2UpOwogICAgIH0KIAorICAgIHZv
aWQgY2FjaGVOYXRpdmVQREZEb2N1bWVudChXZWJDb3JlOjpOYXRpdmVQREZEb2N1bWVudCYgcGRm
RG9jdW1lbnQpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAobV9yZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkpCisgICAgICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+
cmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5KCkuY2FjaGVOYXRpdmVQREZEb2N1bWVudChwZGZEb2N1
bWVudCk7CisgICAgfQorCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXJIYW5k
bGUgY3JlYXRlSXRlbUJ1ZmZlcihzaXplX3QgY2FwYWNpdHkpIG92ZXJyaWRlCiAgICAgewogICAg
ICAgICBpZiAobV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCkBAIC0yOTUsNiArMzAxLDcg
QEAgcHJvdGVjdGVkOgogICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlw
ZTo6RHJhd0VsbGlwc2U6CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1U
eXBlOjpEcmF3SW1hZ2VCdWZmZXI6CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6
Okl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2U6CisgICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6Okl0ZW1UeXBlOjpEcmF3TmF0aXZlUERGRG9jdW1lbnQ6CiAgICAgICAgIGNhc2UgV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3UGF0dGVybjoKICAgICAgICAgY2FzZSBX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdMaW5lOgogICAgICAgICBjYXNlIFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd1JlY3Q6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eS5jcHAKaW5kZXggZTUyY2E0MDczNWU5NzllMzg3ZDgzZDE0ZDI3
YzQ5NjYxNzhlY2ZjNy4uZjhhODJiZDI4YjlmZTBjNTUxMTI5YTJjMjdmNThmY2EyYmZmYzNhZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcApAQCAtMzQsNiArMzQs
NyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oIgogI2luY2x1
ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyQ29w
eS5oIgogI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIK
IApAQCAtMTc4LDYgKzE3OSwxMSBAQCB2b2lkIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6
Y2FjaGVOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYgaW1hZ2UpCiAgICAgc2VuZChNZXNzYWdlczo6
UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Q2FjaGVOYXRpdmVJbWFnZShtYWtlUmVmKGltYWdlKSks
IG1fcmVuZGVyaW5nQmFja2VuZElkZW50aWZpZXIpOwogfQogCit2b2lkIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eTo6Y2FjaGVOYXRpdmVQREZEb2N1bWVudChOYXRpdmVQREZEb2N1bWVudCYg
cGRmRG9jdW1lbnQpCit7CisgICAgc2VuZChNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZDo6Q2FjaGVOYXRpdmVQREZEb2N1bWVudChwZGZEb2N1bWVudC5kYXRhKCksIHBkZkRvY3VtZW50
LnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpKSwgbV9yZW5kZXJpbmdCYWNrZW5kSWRlbnRp
Zmllcik7Cit9CisKIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpyZWxlYXNlUmVt
b3RlUmVzb3VyY2UoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcikKIHsKICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OjpSZWxlYXNlUmVtb3RlUmVzb3VyY2UocmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKSwgbV9y
ZW5kZXJpbmdCYWNrZW5kSWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkuaAppbmRleCA5NWY4ZDJiNDEyZmI5MWRmNzdjNjhmMTM2YjAwNzg2ZjAyNGQ3ZTI2Li4y
YTdjNzRkOWY5MGI1ZTM4MDdjNTdmMDdkMGFmODk3ZGVhZWRiYzc4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5LmgKQEAgLTc5LDYgKzc5LDcgQEAgcHVibGljOgogICAgIHZv
aWQgc3VibWl0RGlzcGxheUxpc3QoY29uc3QgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlM
aXN0JiwgV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uQnVm
ZmVySWRlbnRpZmllcik7CiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkZsdXNoSWRlbnRpZmll
ciBmbHVzaERpc3BsYXlMaXN0QW5kQ29tbWl0KGNvbnN0IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpE
aXNwbGF5TGlzdCYsIFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAg
dm9pZCBjYWNoZU5hdGl2ZUltYWdlKFdlYkNvcmU6Ok5hdGl2ZUltYWdlJik7CisgICAgdm9pZCBj
YWNoZU5hdGl2ZVBERkRvY3VtZW50KFdlYkNvcmU6Ok5hdGl2ZVBERkRvY3VtZW50Jik7CiAgICAg
dm9pZCByZWxlYXNlUmVtb3RlUmVzb3VyY2UoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyKTsKIAogICAgIGJvb2wgd2FpdEZvckltYWdlQnVmZmVyQmFja2VuZFdhc0NyZWF0ZWQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5LmNwcAppbmRleCA5MDRhYWVhZDhjYzcx
ZTg4ZjY0MmI0YjUzNmU2OWFlMWU4OTM5ODljLi4yNjQ0MWNjOGM2NzU3YmI5NDE4MmYwOGQ0ZTA1
MTYxNGQzZTRlYzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZVJlc291cmNlQ2FjaGVQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkuY3BwCkBAIC03
Nyw2ICs3NywzMCBAQCB2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6cmVsZWFzZU5hdGl2
ZUltYWdlKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciByZQogICAgIG1fcmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5LnJlbGVhc2VSZW1vdGVSZXNvdXJjZShyZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIpOwogfQogCit2b2lkIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eTo6Y2FjaGVOYXRp
dmVQREZEb2N1bWVudChOYXRpdmVQREZEb2N1bWVudCYgcGRmRG9jdW1lbnQpCit7CisgICAgaWYg
KG1fc2hhcmVkUERGRG9jdW1lbnRzLmNvbnRhaW5zKHBkZkRvY3VtZW50LnJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcigpKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIG1fc2hhcmVkUERG
RG9jdW1lbnRzLmFkZChwZGZEb2N1bWVudC5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSk7
CisKKyAgICAvLyBTZXQgaXRzZWxmIGFzIGFuIG9ic2VydmVyIHRvIE5hdGl2ZUltYWdlLCBzbyBy
ZWxlYXNlTmF0aXZlUERGRG9jdW1lbnQoKQorICAgIC8vIGdldHMgY2FsbGVkIHdoZW4gTmF0aXZl
UERGRG9jdW1lbnQgaXMgYmVpbmcgZGVsZWxldGVkLgorICAgIHBkZkRvY3VtZW50LnNldE9ic2Vy
dmVyKHRoaXMpOworCisgICAgLy8gVGVsbCB0aGUgR1BVIHByb2Nlc3MgdG8gY2FjaGUgdGhpcyBy
ZXNvdXJjZS4KKyAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5jYWNoZU5hdGl2ZVBE
RkRvY3VtZW50KHBkZkRvY3VtZW50KTsKK30KKwordm9pZCBSZW1vdGVSZXNvdXJjZUNhY2hlUHJv
eHk6OnJlbGVhc2VOYXRpdmVQREZEb2N1bWVudChSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQoreworICAgIGlmICghbV9zaGFyZWRQREZEb2N1
bWVudHMucmVtb3ZlKHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikpCisgICAgICAgIHJldHVy
bjsKKworICAgIC8vIFRlbGwgdGhlIEdQVSBwcm9jZXNzIHRvIHJlbW92ZSB0aGlzIHJlc291cmNl
LgorICAgIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LnJlbGVhc2VSZW1vdGVSZXNvdXJj
ZShyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKIAogI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlc291cmNlQ2Fj
aGVQcm94eS5oCmluZGV4IDA2ZGQ0ZjY4YjkzYTllOTdmYTU0OWMwM2RmYzQ5ZGI5Mzg4OGJiZmIu
LjE3YmRmYjM0OGE0ZGZhN2QzOTlhYTAyZTg1MWRiNmYzNDA1MDhmZjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVzb3VyY2VDYWNoZVBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVS
ZXNvdXJjZUNhY2hlUHJveHkuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShHUFVfUFJP
Q0VTUykKIAogI2luY2x1ZGUgPFdlYkNvcmUvTmF0aXZlSW1hZ2UuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL05hdGl2ZVBERkRvY3VtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCkBAIC0zOSw3ICs0
MCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHk7CiAKLWNsYXNzIFJlbW90ZVJlc291cmNlQ2FjaGVQcm94eSA6IHB1YmxpYyBXZWJDb3Jl
OjpOYXRpdmVJbWFnZTo6T2JzZXJ2ZXIgeworY2xhc3MgUmVtb3RlUmVzb3VyY2VDYWNoZVByb3h5
IDogcHVibGljIFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpPYnNlcnZlciwgcHVibGljIFdlYkNvcmU6
Ok5hdGl2ZVBERkRvY3VtZW50OjpPYnNlcnZlciB7CiBwdWJsaWM6CiAgICAgUmVtb3RlUmVzb3Vy
Y2VDYWNoZVByb3h5KFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYpOwogCkBAIC00OCwxNyAr
NDksMjEgQEAgcHVibGljOgogICAgIHZvaWQgcmVsZWFzZUltYWdlQnVmZmVyKFdlYkNvcmU6OlJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAKICAgICB2b2lkIGNhY2hlTmF0aXZlSW1hZ2Uo
V2ViQ29yZTo6TmF0aXZlSW1hZ2UmKTsKKyAgICB2b2lkIGNhY2hlTmF0aXZlUERGRG9jdW1lbnQo
V2ViQ29yZTo6TmF0aXZlUERGRG9jdW1lbnQmKTsKIAogICAgIHVzaW5nIEltYWdlQnVmZmVySGFz
aE1hcCA9IEhhc2hNYXA8V2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBXZWFr
UHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPj47CiAgICAgY29uc3QgSW1hZ2VCdWZmZXJIYXNoTWFw
JiBpbWFnZUJ1ZmZlcnMoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlQnVmZmVyczsgfQogCiBwcml2
YXRlOgogICAgIHVzaW5nIE5hdGl2ZUltYWdlSGFzaE1hcCA9IEhhc2hNYXA8V2ViQ29yZTo6UmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBXZWFrUHRyPFdlYkNvcmU6Ok5hdGl2ZUltYWdlPj47
CisgICAgdXNpbmcgU2hhcmVkUERGRG9jdW1lbnRIYXNoU2V0ID0gSGFzaFNldDxXZWJDb3JlOjpS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+OwogICAgIAogICAgIHZvaWQgcmVsZWFzZU5hdGl2
ZUltYWdlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCByZWxlYXNlTmF0aXZlUERGRG9jdW1lbnQoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKSBvdmVycmlkZTsKIAogICAgIEltYWdlQnVmZmVySGFzaE1hcCBtX2ltYWdl
QnVmZmVyczsKICAgICBOYXRpdmVJbWFnZUhhc2hNYXAgbV9uYXRpdmVJbWFnZXM7CisgICAgU2hh
cmVkUERGRG9jdW1lbnRIYXNoU2V0IG1fc2hhcmVkUERGRG9jdW1lbnRzOwogICAgIFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRQcm94eSYgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1
Z2luLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5t
bQppbmRleCA5Y2IzYWFlZDc3NWY5YjZmZDkzYWMyNjk1ZWI4OGZlM2NkZGY2N2NhLi40NGI1MDZi
MjgxOTMyNjhmODg3M2VjNDI2MDNkNWE1ZjhhYWY4ZTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KQEAgLTc2LDcgKzc2LDcgQEAK
ICNpbXBvcnQgPFdlYkNvcmUvTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9Mb2NhbGl6ZWRTdHJpbmdzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL01vdXNlRXZl
bnQuaD4KLSNpbXBvcnQgPFdlYkNvcmUvUERGRG9jdW1lbnRJbWFnZS5oPgorI2ltcG9ydCA8V2Vi
Q29yZS9OYXRpdmVQREZEb2N1bWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYWdlLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1Bhc3RlYm9hcmQuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1TY3Jl
ZW4uaD4KQEAgLTE1NzIsNyArMTU3Miw3IEBAIHZvaWQgUERGUGx1Z2luOjpjb252ZXJ0UG9zdFNj
cmlwdERhdGFJZk5lZWRlZCgpCiAgICAgaWYgKCFtX2lzUG9zdFNjcmlwdCkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgbV9kYXRhID0gUERGRG9jdW1lbnRJbWFnZTo6Y29udmVydFBvc3RTY3JpcHRE
YXRhVG9QREYoV1RGTW92ZShtX2RhdGEpKTsKKyAgICBtX2RhdGEgPSBOYXRpdmVQREZEb2N1bWVu
dDo6Y29udmVydFBvc3RTY3JpcHREYXRhVG9QREYoV1RGTW92ZShtX2RhdGEpKTsKIH0KIAogdm9p
ZCBQREZQbHVnaW46OmRvY3VtZW50RGF0YURpZEZpbmlzaExvYWRpbmcoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415008</attachid>
            <date>2020-11-30 02:08:11 -0800</date>
            <delta_ts>2020-12-01 00:02:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218871-20201130020811.patch</filename>
            <type>text/plain</type>
            <size>47248</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMjM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTkyOGJiMmM0ZWE4Mzg3
MzI4NTY4NDE2MWI2MjY4YjM3OGM4N2E1Zi4uM2NkYzE4MTgxMzBhZWNjODNmZTkwZjI5YjczMThi
OTc3YjU3NTNkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDIwLTExLTMwICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
U3VwcG9ydCByZW5kZXJpbmcgUERGRG9jdW1lbnRJbWFnZSBpbiBHUFUgUHJvY2VzcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4ODcxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQbGF0Zm9ybUFwcGxl
V2luLmNtYWtlOgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OmRyYXdJbWFnZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0SW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0SW1wbDo6Y2Fu
UmVjb3JkRHJhd0ltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UERGRG9jdW1lbnRJbWFnZTo6ZGVjb2RlZFNpemVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OlBERkRvY3VtZW50SW1hZ2U6OmRhdGFDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlBE
RkRvY3VtZW50SW1hZ2U6OnNuYXBzaG90SW1hZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRv
Y3VtZW50SW1hZ2U6OmNhbGN1bGF0ZVNuYXBzaG90UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpQ
REZEb2N1bWVudEltYWdlOjp1cGRhdGVTbmFwc2hvdElmTmVlZGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlBERkRvY3VtZW50SW1hZ2U6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1l
bnRJbWFnZTo6ZGVzdHJveURlY29kZWREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3Vt
ZW50SW1hZ2U6OmR1bXAgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFn
ZTo6U25hcHNob3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdl
OjpTbmFwc2hvdDo6U25hcHNob3QpOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFn
ZTo6U25hcHNob3Q6On5TbmFwc2hvdCk6CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudElt
YWdlOjpTbmFwc2hvdDo6Y2FuQmVSZXVzZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UERG
RG9jdW1lbnRJbWFnZTo6U25hcHNob3Q6Om1lbW9yeUNvc3QgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UERGRG9jdW1lbnRJbWFnZTo6U25hcHNob3Q6OnRyYW5zZmVyVmlld3BvcnQpOgorICAg
ICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFnZTo6U25hcHNob3Q6OmRyYXcpOgorICAgICAg
ICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFnZTo6U25hcHNob3RJbWFnZXM6OnJlbW92ZUFsbFVu
dXNlZEFib3ZlTGltaXQpOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFnZTo6Y2Fj
aGVQYXJhbWV0ZXJzTWF0Y2ggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Y2Fj
aGVkSW1hZ2VSZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1h
Z2U6OnVwZGF0ZUNhY2hlZEltYWdlSWZOZWVkZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6UERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFnZTo6Y29tcHV0ZUJvdW5kc0ZvckN1cnJlbnRQYWdl
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OnBhZ2VDb3Vu
dCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjphcHBseVJvdGF0aW9uRm9yUGFp
bnRpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFnZTo6ZHJh
d1BERlBhZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFnZTo6
Y29udmVydFBvc3RTY3JpcHREYXRhVG9QREYpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jZy9QREZEb2N1bWVudEltYWdlQ0cuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlBERkRvY3VtZW50SW1hZ2U6OmNyZWF0ZVBERkRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlBERkRvY3VtZW50SW1hZ2U6OmNvbXB1dGVCb3VuZHNGb3JDdXJyZW50UGFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjpwYWdlQ291bnQgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6YXBwbHlSb3RhdGlvbkZvclBhaW50aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlBE
RkRvY3VtZW50SW1hZ2U6OmRyYXdQREZQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3Vt
ZW50SW1hZ2U6OmNvbnZlcnRQb3N0U2NyaXB0RGF0YVRvUERGKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmNhblJlY29yZERyYXdJbWFnZUJ1ZmZl
ciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVjb3JkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRl
cjo6RGVsZWdhdGU6OmlzQ2FjaGVkSW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6UERGRG9jdW1lbnRJbWFnZTo6Y29udmVydFBvc3RTY3JpcHREYXRhVG9QREYpOgorCiAyMDIw
LTExLTMwICBYYWJpZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgW0dTdHJlYW1lcl0gTWVkaWEgcGxheWVyIGRvZXMgbm90IHByb3Blcmx5IGluaGli
aXQsIHVuaW5oaWJpdCBzbGVlcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBiMTYwYTI1MTdjOTM0ODFhODdjNjIyODRm
Njg4ZDIzMzQzYWM4YTJmLi5jZjEzYzVjYjBhZjhmYmM4MWUyNTU2ZTI0MzdkY2ZiYTNmZDZmYTkz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIwLTExLTMwICBTYWlkIEFib3UtSGFsbGF3
YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gU3VwcG9ydCByZW5k
ZXJpbmcgUERGRG9jdW1lbnRJbWFnZSBpbiBHUFUgUHJvY2VzcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4ODcxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9S
ZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lmg6CisKIDIwMjAtMTEtMjkgIEFkYW0gTWF6YW5kZXIgIDxt
YXphbmRlckBhcHBsZS5jb20+CiAKICAgICAgICAgRGVueSBsb2dzIGZvciBiZW5pZ24gZm9udHNl
cnZpY2VzZCBkYWVtb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVX
aW4uY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlCmluZGV4IDAx
NTJlNTdkNzdkNmIyMmFkM2NkZDMwZGM0MmU2MTgwZjE3NGE4YTguLmIxYzc5NGRkOTFiYmI3MDdh
Y2U3NmQ1YWE3ODBlMjAxM2JmYjVlODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRm
b3JtQXBwbGVXaW4uY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdpbi5j
bWFrZQpAQCAtMTQ2LDYgKzE0Niw3IEBAIGVsc2UgKCkKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW50U2l6ZUNHLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9OYXRpdmVJ
bWFnZUNHLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdl
LmNwcAorICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlQ0cuY3Bw
CiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdGhDRy5jcHAKICAgICAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9j
Zy9TdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
U291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXgg
NjY4NzUyYzc5NTI2YmM2Y2QxNDNjMmVmNjU5NmYxNGM3YjA3MzNlZC4uYTUwNTE5Njc1YzBlMjY2
MDcyZTA0NGI4MWQ0OWU5M2JmOGJhMDE1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291
cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0z
NDIsNiArMzQyLDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW50UmVjdENHLmNwcAogcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW50U2l6ZUNHLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvTmF0aXZl
SW1hZ2VDRy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwCitw
bGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlQ0cuY3BwCiBwbGF0Zm9ybS9ncmFw
aGljcy9jZy9QYXRoQ0cuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCiBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9TdWJpbWFnZUNhY2hlV2l0aFRpbWVyLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDM4NDUz
OWM0ZDQ4MTNlNWU2ODg3MjQxODExYmI1NDk3MDA0MWI4MTUuLjBiYjFjNjc0NGFhM2VjNjliNDVi
MTNlZmMwZjNhMjQ4MmYyZGNjOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwMDc4LDYgKzEwMDc4LDcgQEAKIAkJNzI5OUJD
NjQyM0Q2ODZBNjAwQ0M2ODgzIC8qIEFscGhhUHJlbXVsdGlwbGljYXRpb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3Mjk5QkM2NjIzRDY4NkM2MDBDQzY4ODMgLyogUmVuZGVyaW5nTW9kZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZW5kZXJpbmdNb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcy
OUQwNTJFMjUzMTNFMjYwMDQyMjA5OCAvKiBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTcyQTcxMDdDMjU3NDYyRTIwMDY4NEVCRSAvKiBQREZEb2N1bWVu
dEltYWdlQ0cuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUERGRG9jdW1lbnRJbWFnZUNHLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJBQjlBMUYyNTVBOUVBNjAwRTZFQkYxIC8q
IE5hdGl2ZUltYWdlUmVmZXJlbmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5hdGl2ZUltYWdlUmVmZXJl
bmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyQkFDM0E0MjNFMTczMjcwMDhE
NzQxQyAvKiBJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSW1hZ2VCdWZmZXJCYWNrZW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNzJCQUMzQTUyM0UxNzMyODAwOEQ3NDFDIC8qIEltYWdlQnVmZmVyQmFja2VuZC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZUJ1ZmZlckJhY2tlbmQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI2MzQ1LDYgKzI2MzQ2LDcgQEAKIAkJCQlB
ODBBMzhGRDBFNTBDQzgyMDBBMjVFQkMgLyogUGF0dGVybkNHLmNwcCAqLywKIAkJCQlCMjc1MzUz
NjBCMDUzODE0MDAyQ0U2NEYgLyogUERGRG9jdW1lbnRJbWFnZS5jcHAgKi8sCiAJCQkJQjI3NTM1
MzcwQjA1MzgxNDAwMkNFNjRGIC8qIFBERkRvY3VtZW50SW1hZ2UuaCAqLywKKwkJCQk3MkE3MTA3
QzI1NzQ2MkUyMDA2ODRFQkUgLyogUERGRG9jdW1lbnRJbWFnZUNHLmNwcCAqLywKIAkJCQkxRkM0
MEZCODE2NTVDNTkxMDA0MEYyOUUgLyogU3ViaW1hZ2VDYWNoZVdpdGhUaW1lci5jcHAgKi8sCiAJ
CQkJMUZDNDBGQjcxNjU1QzU5MTAwNDBGMjlFIC8qIFN1YmltYWdlQ2FjaGVXaXRoVGltZXIuaCAq
LywKIAkJCQlCMjc1MzUyQTBCMDUzODE0MDAyQ0U2NEYgLyogVHJhbnNmb3JtYXRpb25NYXRyaXhD
Ry5jcHAgKi8sCkBAIC0zMTIyNCw2ICszMTIyNiw3IEBACiAJCQkJMDc5RDA4NkIxNjJGMjFGOTAw
REI4NjU4IC8qIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwN0I3MTE2RDFEODk5RTYzMDA5RjBGRkIgLyogQ2FwdHVyZURldmljZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMDdCNzExNkYxRDg5OUU2MzAwOUYwRkZCIC8qIENhcHR1cmVEZXZpY2VNYW5h
Z2VyLmggaW4gSGVhZGVycyAqLywKKwkJCQlFNEYwQkUzMTI1NzEyRjZFMDA5RTc0MzEgLyogQ2Fy
ZXRSZWN0Q29tcHV0YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQzczNDE1MTk3Nzg5NkQw
MDQ2QkZDNSAvKiBDQVJpbmdCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0QUJBQkY1MjM2
OEM2RUYwMEZBNDM0NSAvKiBDYXNjYWRlTGV2ZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3MzAz
QkJCMjAwNkM2RUUwMDM1NTk2NSAvKiBDQk9SQmluYXJ5LmggaW4gSGVhZGVycyAqLywKQEAgLTM1
MTIxLDcgKzM1MTI0LDYgQEAKIAkJCQlBMEVFMERGODE0NEY4MjU1MDBGODBCMEQgLyogV2ViR0xE
ZWJ1Z1NoYWRlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTZFM0ZBRThGMTQ3MzNGREIwMEU0MjMw
NyAvKiBXZWJHTERlcHRoVGV4dHVyZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUIzMDY5NUUxOEIz
RDM0NTAwOTlENUU4IC8qIFdlYkdMRHJhd0J1ZmZlcnMuaCBpbiBIZWFkZXJzICovLAotCQkJCUU0
RjBCRTMxMjU3MTJGNkUwMDlFNzQzMSAvKiBDYXJldFJlY3RDb21wdXRhdGlvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNkVCRjBFNTUxMkE4OTI5ODAwREIxNzA5IC8qIFdlYkdMRXh0ZW5zaW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0OUM3QjlDRjEwNDJEMzJGMDAwOUQ0NDcgLyogV2ViR0xGcmFt
ZWJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlGRkJGM0YxMUM5M0VFMzAwNkE3MTE4IC8q
IFdlYkdMTGF5ZXIuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggNWNhY2E4NTQ1MmMxYTY5
OGI5NWU0ZGY0NDAwODU4Yzk2MzQ1ZWNlNS4uMjEyYTg2ODQyNWVlZmJmOWUxN2UxYzQ2ZTJmYjc4
Nzg4ZGRmNWFhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC04MDMsNyArODAzLDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmRyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdGkKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBpZiAobV9pbXBsKSB7CisgICAgaWYgKG1faW1wbCAmJiBtX2ltcGwtPmNhblJlY29yZERy
YXdJbWFnZUJ1ZmZlcihpbWFnZSkpIHsKICAgICAgICAgbV9pbXBsLT5kcmF3SW1hZ2VCdWZmZXIo
aW1hZ2UsIGRlc3RpbmF0aW9uLCBzb3VyY2UsIG9wdGlvbnMpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0SW1wbC5oCmluZGV4IDVjODI1ZjdkNDFiOTg2MTZkMTdmZGI4ZWJlN2NmZmQ3ZDJi
ZmNjOGMuLmY1MmI2NmMzYTM0OTZmMDE1OWM3YjZhMzdjMDJlOGIzNmY3NWRiMDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJ
bXBsLmgKQEAgLTM5LDYgKzM5LDcgQEAgcHVibGljOgogICAgIEdyYXBoaWNzQ29udGV4dCYgZ3Jh
cGhpY3NDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9ncmFwaGljc0NvbnRleHQ7IH0KIAogICAg
IHZpcnR1YWwgYm9vbCBoYXNQbGF0Zm9ybUNvbnRleHQoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBib29sIGNhblJlY29yZERyYXdJbWFnZUJ1ZmZlcihjb25zdCBJbWFnZUJ1ZmZlciYpIGNvbnN0
IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KiBw
bGF0Zm9ybUNvbnRleHQoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3Rh
dGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Rh
dGVDaGFuZ2VGbGFncykgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuY3BwCmlu
ZGV4IGYyMThmMjdmMmY1M2M1YTRhZGJiNmE1YWVkYzNjNDllNDhjZDYzYTQuLjg4ZmI0ZGE1NDZl
YmQzNTJmZDRmNjU2N2RiNzRkNzBhNGI2N2NiNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFw
QmFja2VuZC5jcHAKQEAgLTc1LDkgKzc1LDkgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVy
Q0dCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y3JlYXRlKGMKIAog
c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kPiBJbWFnZUJ1ZmZlckNH
Qml0bWFwQmFja2VuZDo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgY29uc3QgR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0KQogewotICAgIGlmIChhdXRvIGNnQ29sb3JTcGFjZSA9IGNvbnRl
eHRDb2xvclNwYWNlKGNvbnRleHQpKQorICAgIGlmIChhdXRvIGNnQ29sb3JTcGFjZSA9IGNvbnRl
eHQuaGFzUGxhdGZvcm1Db250ZXh0KCkgPyBjb250ZXh0Q29sb3JTcGFjZShjb250ZXh0KSA6IG51
bGxwdHIpCiAgICAgICAgIHJldHVybiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y3JlYXRl
KHNpemUsIDEsIENvbG9yU3BhY2U6OlNSR0IsIGNnQ29sb3JTcGFjZS5nZXQoKSwgUGl4ZWxGb3Jt
YXQ6OkJHUkE4LCBudWxscHRyKTsKLSAgICAKKwogICAgIHJldHVybiBJbWFnZUJ1ZmZlckNHQml0
bWFwQmFja2VuZDo6Y3JlYXRlKHNpemUsIDEsIENvbG9yU3BhY2U6OlNSR0IsIFBpeGVsRm9ybWF0
OjpCR1JBOCwgbnVsbHB0cik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQu
Y3BwCmluZGV4IGFkM2ZmMWQ3OTc3MjAzNzY0MGUyZDY5OTU0MTI4ODYwYjc3NDhjMzYuLmJlMzQw
ZTg1MjNiNGFkMzRhMDlhNTkwZTM4NGIxYjhjOGU2Y2E0ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJ
T1N1cmZhY2VCYWNrZW5kLmNwcApAQCAtODUsNyArODUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNy
ZWF0ZQogCiBzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kPiBJbWFn
ZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGNv
bnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICBpZiAoYXV0byBjZ0NvbG9yU3Bh
Y2UgPSBjb250ZXh0Q29sb3JTcGFjZShjb250ZXh0KSkKKyAgICBpZiAoYXV0byBjZ0NvbG9yU3Bh
Y2UgPSBjb250ZXh0Lmhhc1BsYXRmb3JtQ29udGV4dCgpID8gY29udGV4dENvbG9yU3BhY2UoY29u
dGV4dCkgOiBudWxscHRyKQogICAgICAgICByZXR1cm4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNr
ZW5kOjpjcmVhdGUoc2l6ZSwgMSwgQ29sb3JTcGFjZTo6U1JHQiwgY2dDb2xvclNwYWNlLmdldCgp
LCBQaXhlbEZvcm1hdDo6QkdSQTgsIG51bGxwdHIpOwogICAgIAogICAgIHJldHVybiBJbWFnZUJ1
ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNyZWF0ZShzaXplLCAxLCBDb2xvclNwYWNlOjpTUkdCLCBQ
aXhlbEZvcm1hdDo6QkdSQTgsIG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAppbmRleCBkYzQ5ODVm
OWM1OWFhYWNkM2RmNWI1ZGM1NmI5ZDg5MDg0ODFiZjliLi5mMTIzY2VjMzAzYzZhYWJiYzg2Yjkw
Nzc1MGY4MDdlNmI3ZGZhODJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMTMgQXBwbGUgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIwIEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTI4LDMxICsyOCwxMiBAQAogCiAjaWYgVVNFKENHKQogCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKLSNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNzLmg+Ci0jaW5jbHVkZSA8SW1h
Z2VJTy9JbWFnZUlPLmg+Ci0jZW5kaWYKLQogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgog
I2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiSW1hZ2VPYnNlcnZlci5oIgotI2lu
Y2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJMZW5ndGguaCIKLSNpbmNsdWRlICJOb3RJbXBs
ZW1lbnRlZC5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgotI2luY2x1ZGUgPENvcmVHcmFw
aGljcy9DR0NvbnRleHQuaD4KLSNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dQREZEb2N1bWVudC5o
PgotI2luY2x1ZGUgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+Ci0jaW5jbHVkZSA8d3Rm
L01hdGhFeHRyYXMuaD4KLSNpbmNsdWRlIDx3dGYvUkFNU2l6ZS5oPgotI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KLSNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvVGV4dFN0cmVhbS5oPgogCi0jaWYgIVBMQVRGT1JNKENPQ09BKQotI2luY2x1ZGUgIklt
YWdlU291cmNlQ0cuaCIKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBERkRvY3Vt
ZW50SW1hZ2U6OlBERkRvY3VtZW50SW1hZ2UoSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCkBAIC04
MywxMiArNjQsMTggQEAgdm9pZCBQREZEb2N1bWVudEltYWdlOjpjb21wdXRlSW50cmluc2ljRGlt
ZW5zaW9ucyhMZW5ndGgmIGludHJpbnNpY1dpZHRoLCBMZW5ndGgKICAgICBpbnRyaW5zaWNSYXRp
byA9IEZsb2F0U2l6ZSgpOwogfQogCit2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmRlY29kZWRTaXpl
Q2hhbmdlZChzaXplX3Qgb2xkU2l6ZSwgc2l6ZV90IG5ld1NpemUpCit7CisgICAgaWYgKCFpbWFn
ZU9ic2VydmVyKCkgfHwgb2xkU2l6ZSA9PSBuZXdTaXplKQorICAgICAgICByZXR1cm47CisgICAg
aW1hZ2VPYnNlcnZlcigpLT5kZWNvZGVkU2l6ZUNoYW5nZWQoKnRoaXMsIC1zdGF0aWNfY2FzdDxs
b25nIGxvbmc+KG9sZFNpemUpICsgbmV3U2l6ZSk7Cit9CisKIEVuY29kZWREYXRhU3RhdHVzIFBE
RkRvY3VtZW50SW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAg
IEFTU0VSVCghbV9kb2N1bWVudCk7CiAgICAgaWYgKGFsbERhdGFSZWNlaXZlZCAmJiAhbV9kb2N1
bWVudCkgewogICAgICAgICBjcmVhdGVQREZEb2N1bWVudCgpOwotCiAgICAgICAgIGlmIChwYWdl
Q291bnQoKSkgewogICAgICAgICAgICAgbV9oYXNQYWdlID0gdHJ1ZTsKICAgICAgICAgICAgIGNv
bXB1dGVCb3VuZHNGb3JDdXJyZW50UGFnZSgpOwpAQCAtMTA2LDM3ICs5Myw2IEBAIHZvaWQgUERG
RG9jdW1lbnRJbWFnZTo6c2V0UGRmSW1hZ2VDYWNoaW5nUG9saWN5KFBERkltYWdlQ2FjaGluZ1Bv
bGljeSBwZGZJbWFnZUNhCiAgICAgZGVzdHJveURlY29kZWREYXRhKCk7CiB9CiAKLWJvb2wgUERG
RG9jdW1lbnRJbWFnZTo6Y2FjaGVQYXJhbWV0ZXJzTWF0Y2goR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCkg
Y29uc3QKLXsKLSAgICAvLyBPbGQgYW5kIG5ldyBzb3VyY2UgcmVjdGFuZ2xlcyBoYXZlIHRvIG1h
dGNoLgotICAgIGlmIChzcmNSZWN0ICE9IG1fY2FjaGVkU291cmNlUmVjdCkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgLy8gT2xkIGFuZCBuZXcgc2NhbGluZyBmYWN0b3JzICJkZXN0IC8g
c3JjIiBoYXZlIHRvIG1hdGNoLgotICAgIGlmIChkc3RSZWN0LnNpemUoKSAhPSBtX2NhY2hlZERl
c3RpbmF0aW9uUmVjdC5zaXplKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIG1f
Y2FjaGVkSW1hZ2VSZWN0IGNhbiBiZSBtb3ZlZCBpZiBzcmNSZWN0IGFuZCBkc3RSZWN0LnNpemUo
KSBkaWQgbm90IGNoYW5nZS4KLSAgICBGbG9hdFJlY3QgbW92ZWRDYWNoZWRJbWFnZVJlY3QgPSBt
X2NhY2hlZEltYWdlUmVjdDsKLSAgICBtb3ZlZENhY2hlZEltYWdlUmVjdC5tb3ZlKEZsb2F0U2l6
ZShkc3RSZWN0LmxvY2F0aW9uKCkgLSBtX2NhY2hlZERlc3RpbmF0aW9uUmVjdC5sb2NhdGlvbigp
KSk7Ci0KLSAgICAvLyBtb3ZlZENhY2hlZEltYWdlUmVjdCBoYXMgdG8gY29udGFpbiB0aGUgd2hv
bGUgZGlydHkgcmVjdGFuZ2xlLgotICAgIEZsb2F0UmVjdCBkaXJ0eVJlY3QgPSBpbnRlcnNlY3Rp
b24oY29udGV4dC5jbGlwQm91bmRzKCksIGRzdFJlY3QpOwotICAgIGlmICghbW92ZWRDYWNoZWRJ
bWFnZVJlY3QuY29udGFpbnMoZGlydHlSZWN0KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgLy8gT2xkIGFuZCBuZXcgY29udGV4dCBzY2FsaW5nIGZhY3RvcnMgaGF2ZSB0byBtYXRjaCBh
cyB3ZWxsLgotICAgIEFmZmluZVRyYW5zZm9ybTo6RGVjb21wb3NlZFR5cGUgZGVjb21wb3NlZFRy
YW5zZm9ybTsKLSAgICBjb250ZXh0LmdldENUTShHcmFwaGljc0NvbnRleHQ6OkRlZmluaXRlbHlJ
bmNsdWRlRGV2aWNlU2NhbGUpLmRlY29tcG9zZShkZWNvbXBvc2VkVHJhbnNmb3JtKTsKLQotICAg
IEFmZmluZVRyYW5zZm9ybTo6RGVjb21wb3NlZFR5cGUgY2FjaGVkRGVjb21wb3NlZFRyYW5zZm9y
bTsKLSAgICBtX2NhY2hlZFRyYW5zZm9ybS5kZWNvbXBvc2UoY2FjaGVkRGVjb21wb3NlZFRyYW5z
Zm9ybSk7Ci0gICAgaWYgKGRlY29tcG9zZWRUcmFuc2Zvcm0uc2NhbGVYICE9IGNhY2hlZERlY29t
cG9zZWRUcmFuc2Zvcm0uc2NhbGVYIHx8IGRlY29tcG9zZWRUcmFuc2Zvcm0uc2NhbGVZICE9IGNh
Y2hlZERlY29tcG9zZWRUcmFuc2Zvcm0uc2NhbGVZKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogc3RhdGljIHZvaWQgdHJhbnNmb3JtQ29udGV4dEZvclBh
aW50aW5nKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0
LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QpCiB7CiAgICAgZmxvYXQgaFNjYWxlID0gZHN0UmVj
dC53aWR0aCgpIC8gc3JjUmVjdC53aWR0aCgpOwpAQCAtMTYzLDEyNCArMTE5LDk4IEBAIHN0YXRp
YyB2b2lkIHRyYW5zZm9ybUNvbnRleHRGb3JQYWludGluZyhHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjCiAgICAgY29udGV4dC50cmFuc2xhdGUoMCwgLXNyY1JlY3QuaGVp
Z2h0KCkpOwogfQogCi0vLyBUbyBhdm9pZCB0aGUgamV0c2FtIG9uIGlPUywgd2UgYXJlIGdvaW5n
IHRvIGxpbWl0IHRoZSBzaXplIG9mIGFsbCB0aGUgUERGIGNhY2hlZEltYWdlcyB0byBiZSA2NE1C
Lgotc3RhdGljIGNvbnN0IHNpemVfdCBzX21heENhY2hlZEltYWdlU2lkZSA9IDQgKiAxMDI0Owot
c3RhdGljIGNvbnN0IHNpemVfdCBzX21heENhY2hlZEltYWdlQXJlYSA9IHNfbWF4Q2FjaGVkSW1h
Z2VTaWRlICogc19tYXhDYWNoZWRJbWFnZVNpZGU7Ci0KLXN0YXRpYyBjb25zdCBzaXplX3Qgc19t
YXhEZWNvZGVkRGF0YVNpemUgPSBzX21heENhY2hlZEltYWdlQXJlYSAqIDQ7Ci1zdGF0aWMgc2l6
ZV90IHNfYWxsRGVjb2RlZERhdGFTaXplID0gMDsKK1BERkRvY3VtZW50SW1hZ2U6OlNuYXBzaG90
SW1hZ2VzJiBQREZEb2N1bWVudEltYWdlOjpzbmFwc2hvdEltYWdlcygpCit7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFNuYXBzaG90SW1hZ2VzPiBzbmFwc2hvdEltYWdlczsKKyAgICByZXR1
cm4gc25hcHNob3RJbWFnZXM7Cit9CiAKLXN0YXRpYyBGbG9hdFJlY3QgY2FjaGVkSW1hZ2VSZWN0
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0KQorRmxv
YXRSZWN0IFBERkRvY3VtZW50SW1hZ2U6OmNhbGN1bGF0ZVNuYXBzaG90UmVjdChHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpCiB7CiAgICAgRmxvYXRS
ZWN0IGRpcnR5UmVjdCA9IGNvbnRleHQuY2xpcEJvdW5kcygpOwogCiAgICAgLy8gQ2FsY3VsYXRl
IHRoZSBtYXhpbXVtIHJlY3RhbmdsZSB3ZSBjYW4gY2FjaGUgYXJvdW5kIHRoZSBjZW50ZXIgb2Yg
dGhlIGNsaXBwaW5nIGJvdW5kcy4KLSAgICBGbG9hdFNpemUgbWF4U2l6ZSA9IHNfbWF4Q2FjaGVk
SW1hZ2VTaWRlIC8gY29udGV4dC5zY2FsZUZhY3RvcigpOworICAgIEZsb2F0U2l6ZSBtYXhTaXpl
ID0gbWF4U25hcHNob3RTaWRlIC8gY29udGV4dC5zY2FsZUZhY3RvcigpOwogICAgIEZsb2F0UG9p
bnQgbWluTG9jYXRpb24gPSBGbG9hdFBvaW50KGRpcnR5UmVjdC5jZW50ZXIoKSAtIG1heFNpemUg
LyAyKTsKIAogICAgIC8vIEVuc3VyZSB0aGUgY2xpcHBpbmcgYm91bmRzIGFyZSBhbGwgaW5jbHVk
ZWQgYnV0IHdpdGhpbiB0aGUgYm91bmRzIG9mIHRoZSBkc3RSZWN0Ci0gICAgcmV0dXJuIGludGVy
c2VjdGlvbih1bmlvblJlY3QoZGlydHlSZWN0LCBGbG9hdFJlY3QobWluTG9jYXRpb24sIG1heFNp
emUpKSwgZHN0UmVjdCk7CisgICAgcmV0dXJuIGludGVyc2VjdGlvbih1bmlvblJlY3QoZGlydHlS
ZWN0LCBGbG9hdFJlY3QobWluTG9jYXRpb24sIG1heFNpemUpKSwgZGVzdFJlY3QpOwogfQogCi12
b2lkIFBERkRvY3VtZW50SW1hZ2U6OmRlY29kZWRTaXplQ2hhbmdlZChzaXplX3QgbmV3Q2FjaGVk
Qnl0ZXMpCit2b2lkIFBERkRvY3VtZW50SW1hZ2U6OnVwZGF0ZVNuYXBzaG90SWZOZWVkZWQoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QpCiB7Ci0gICAgaWYgKCFtX2NhY2hlZEJ5dGVzICYmICFuZXdDYWNo
ZWRCeXRlcykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkKLSAg
ICAgICAgaW1hZ2VPYnNlcnZlcigpLT5kZWNvZGVkU2l6ZUNoYW5nZWQoKnRoaXMsIC1zdGF0aWNf
Y2FzdDxsb25nIGxvbmc+KG1fY2FjaGVkQnl0ZXMpICsgbmV3Q2FjaGVkQnl0ZXMpOwotCi0gICAg
QVNTRVJUKHNfYWxsRGVjb2RlZERhdGFTaXplID49IG1fY2FjaGVkQnl0ZXMpOwotICAgIC8vIFVw
ZGF0ZSB3aXRoIHRoZSBkaWZmZXJlbmNlIGluIHR3byBzdGVwcyB0byBhdm9pZCB1bnNpZ25lZCB1
bmRlcmZsb3cgc3VidHJhY3Rpb24uCi0gICAgc19hbGxEZWNvZGVkRGF0YVNpemUgLT0gbV9jYWNo
ZWRCeXRlczsKLSAgICBzX2FsbERlY29kZWREYXRhU2l6ZSArPSBuZXdDYWNoZWRCeXRlczsKLQot
ICAgIG1fY2FjaGVkQnl0ZXMgPSBuZXdDYWNoZWRCeXRlczsKLX0KLQotdm9pZCBQREZEb2N1bWVu
dEltYWdlOjp1cGRhdGVDYWNoZWRJbWFnZUlmTmVlZGVkKEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QpCi17
Ci0gICAgLy8gQ2xpcHBlZCBvcHRpb24gaXMgZm9yIHRlc3Rpbmcgb25seS4gRm9yY2UgcmUtY2Fj
aGluZyB0aGUgUERGIHdpdGggZWFjaCBkcmF3LgotICAgIGJvb2wgZm9yY2VVcGRhdGVDYWNoZWRJ
bWFnZSA9IG1fcGRmSW1hZ2VDYWNoaW5nUG9saWN5ID09IFBERkltYWdlQ2FjaGluZ1BvbGljeTo6
Q2xpcEJvdW5kc09ubHkgfHwgIW1fY2FjaGVkSW1hZ2VCdWZmZXI7Ci0gICAgaWYgKCFmb3JjZVVw
ZGF0ZUNhY2hlZEltYWdlICYmIGNhY2hlUGFyYW1ldGVyc01hdGNoKGNvbnRleHQsIGRzdFJlY3Qs
IHNyY1JlY3QpKSB7CisgICAgLy8gQ2xpcHBlZCBvcHRpb24gaXMgZm9yIHRlc3Rpbmcgb25seSBh
bmQgaXQgcmVxdWlyZXMgdGhlIFBERiB0byBiZSByZS1jYWNoZWQgd2l0aCBlYWNoIGRyYXcuCisg
ICAgYm9vbCBmb3JjZVVwZGF0ZVNuYXBzaG90ID0gbV9wZGZJbWFnZUNhY2hpbmdQb2xpY3kgPT0g
UERGSW1hZ2VDYWNoaW5nUG9saWN5OjpDbGlwQm91bmRzT25seTsKKyAgICBpZiAoIWZvcmNlVXBk
YXRlU25hcHNob3QgJiYgbV9zbmFwc2hvdCkgewogICAgICAgICAvLyBBZGp1c3QgdGhlIHZpZXct
cG9ydCByZWN0YW5nbGVzIGlmIG5vIHJlLWNhY2hpbmcgd2lsbCBoYXBwZW4uCi0gICAgICAgIG1f
Y2FjaGVkSW1hZ2VSZWN0Lm1vdmUoRmxvYXRTaXplKGRzdFJlY3QubG9jYXRpb24oKSAtIG1fY2Fj
aGVkRGVzdGluYXRpb25SZWN0LmxvY2F0aW9uKCkpKTsKLSAgICAgICAgbV9jYWNoZWREZXN0aW5h
dGlvblJlY3QgPSBkc3RSZWN0OwotICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChtX3NuYXBz
aG90LT50cmFuc2ZlclZpZXdwb3J0KGNvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0KSkgeworICAg
ICAgICAgICAgc25hcHNob3RJbWFnZXMoKS5tYXJrVXNlZCh0aGlzKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQogICAgIH0KIAorICAgIGRlc3Ryb3lEZWNvZGVkRGF0YSgpOworCisg
ICAgRmxvYXRSZWN0IHNuYXBzaG90UmVjdDsKICAgICBzd2l0Y2ggKG1fcGRmSW1hZ2VDYWNoaW5n
UG9saWN5KSB7CiAgICAgY2FzZSBQREZJbWFnZUNhY2hpbmdQb2xpY3k6OkRpc2FibGVkOgogICAg
ICAgICByZXR1cm47CiAgICAgY2FzZSBQREZJbWFnZUNhY2hpbmdQb2xpY3k6OkJlbG93TWVtb3J5
TGltaXQ6CiAgICAgICAgIC8vIEtlZXAgdGhlIG1lbW9yeSB1c2VkIGJ5IHRoZSBjYWNoZWQgaW1h
Z2UgYmVsb3cgc29tZSB0aHJlc2hvbGQsIG90aGVyd2lzZSBXZWJLaXQgcHJvY2VzcwogICAgICAg
ICAvLyB3aWxsIGpldHNhbSBpZiBpdCBleGNlZWRzIGl0cyBtZW1vcnkgbGltaXQuIE9ubHkgYSBy
ZWN0YW5nbGUgZnJvbSB0aGUgUERGIG1heSBiZSBjYWNoZWQuCi0gICAgICAgIG1fY2FjaGVkSW1h
Z2VSZWN0ID0gY2FjaGVkSW1hZ2VSZWN0KGNvbnRleHQsIGRzdFJlY3QpOworICAgICAgICBzbmFw
c2hvdFJlY3QgPSBjYWxjdWxhdGVTbmFwc2hvdFJlY3QoY29udGV4dCwgZGVzdFJlY3QpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIFBERkltYWdlQ2FjaGluZ1BvbGljeTo6Q2xpcEJvdW5kc09u
bHk6Ci0gICAgICAgIG1fY2FjaGVkSW1hZ2VSZWN0ID0gaW50ZXJzZWN0aW9uKGNvbnRleHQuY2xp
cEJvdW5kcygpLCBkc3RSZWN0KTsKKyAgICAgICAgc25hcHNob3RSZWN0ID0gaW50ZXJzZWN0aW9u
KGNvbnRleHQuY2xpcEJvdW5kcygpLCBkZXN0UmVjdCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgUERGSW1hZ2VDYWNoaW5nUG9saWN5OjpFbmFibGVkOgotICAgICAgICBtX2NhY2hlZEltYWdl
UmVjdCA9IGRzdFJlY3Q7CisgICAgICAgIHNuYXBzaG90UmVjdCA9IGRlc3RSZWN0OwogICAgICAg
ICBicmVhazsKICAgICB9CiAKLSAgICBGbG9hdFNpemUgY2FjaGVkSW1hZ2VTaXplID0gRmxvYXRS
ZWN0KGVuY2xvc2luZ0ludFJlY3QobV9jYWNoZWRJbWFnZVJlY3QpKS5zaXplKCk7CisgICAgRmxv
YXRTaXplIHNuYXBzaG90U2l6ZSA9IEZsb2F0UmVjdChlbmNsb3NpbmdJbnRSZWN0KHNuYXBzaG90
UmVjdCkpLnNpemUoKTsKIAotICAgIC8vIENhY2hlIHRoZSBQREYgaW1hZ2Ugb25seSBpZiB0aGUg
c2l6ZSBvZiB0aGUgbmV3IGltYWdlIHdvbid0IGV4Y2VlZCB0aGUgY2FjaGUgdGhyZXNob2xkLgot
ICAgIGlmIChtX3BkZkltYWdlQ2FjaGluZ1BvbGljeSA9PSBQREZJbWFnZUNhY2hpbmdQb2xpY3k6
OkJlbG93TWVtb3J5TGltaXQpIHsKLSAgICAgICAgSW50U2l6ZSBzY2FsZWRTaXplID0gSW1hZ2VC
dWZmZXI6OmNvbXBhdGlibGVCdWZmZXJTaXplKGNhY2hlZEltYWdlU2l6ZSwgY29udGV4dCk7Ci0g
ICAgICAgIGlmIChzX2FsbERlY29kZWREYXRhU2l6ZSArIHNjYWxlZFNpemUudW5jbGFtcGVkQXJl
YSgpICogNCAtIG1fY2FjaGVkQnl0ZXMgPiBzX21heERlY29kZWREYXRhU2l6ZSkgewotICAgICAg
ICAgICAgZGVzdHJveURlY29kZWREYXRhKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLSAgICB9CisgICAgLy8gQ2FjaGUgdGhlIFBERiBpbWFnZSBidXQgZW5zdXJlIHRoZSBzaXpl
IG9mIHRoZSBuZXcgaW1hZ2Ugd29uJ3QgZXhjZWVkIHRoZSBjYWNoZSB0aHJlc2hvbGQuCisgICAg
aWYgKG1fcGRmSW1hZ2VDYWNoaW5nUG9saWN5ID09IFBERkltYWdlQ2FjaGluZ1BvbGljeTo6QmVs
b3dNZW1vcnlMaW1pdCkKKyAgICAgICAgc25hcHNob3RJbWFnZXMoKS5yZW1vdmVBbGxVbnVzZWRB
Ym92ZUxpbWl0KGNvbnRleHQsIHNuYXBzaG90U2l6ZSk7CiAKLSAgICBtX2NhY2hlZEltYWdlQnVm
ZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVCdWZmZXIoY2FjaGVkSW1hZ2VTaXpl
LCBjb250ZXh0KTsKLSAgICBpZiAoIW1fY2FjaGVkSW1hZ2VCdWZmZXIpIHsKLSAgICAgICAgZGVz
dHJveURlY29kZWREYXRhKCk7CisgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpj
cmVhdGVDb21wYXRpYmxlQnVmZmVyKHNuYXBzaG90U2l6ZSwgY29udGV4dCk7CisgICAgaWYgKCFp
bWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAotICAgIGF1dG8mIGJ1ZmZlckNv
bnRleHQgPSBtX2NhY2hlZEltYWdlQnVmZmVyLT5jb250ZXh0KCk7Ci0gICAgLy8gV2UgbmVlZCB0
byB0cmFuc2Zvcm0gdGhlIGNvb3JkaW5hdGUgc3lzdGVtIHN1Y2ggdGhhdCB0b3AtbGVmdCBvZiBt
X2NhY2hlZEltYWdlUmVjdCB3aWxsIGJlIG1hcHBlZCB0byB0aGUKLSAgICAvLyB0b3AtbGVmdCBv
ZiBkc3RSZWN0LiBBbHRob3VnaCBvbmx5IG1fY2FjaGVkSW1hZ2VSZWN0LnNpemUoKSBvZiB0aGUg
aW1hZ2UgY29waWVkLCB0aGUgc2l6ZXMgb2Ygc3JjUmVjdAotICAgIC8vIGFuZCBkc3RSZWN0IHNo
b3VsZCBiZSBwYXNzZWQgdG8gdGhpcyBmdW5jdGlvbiBiZWNhdXNlIHRoZXkgYXJlIHVzZWQgdG8g
Y2FsY3VsYXRlIHRoZSBpbWFnZSBzY2FsaW5nLgotICAgIHRyYW5zZm9ybUNvbnRleHRGb3JQYWlu
dGluZyhidWZmZXJDb250ZXh0LCBkc3RSZWN0LCBGbG9hdFJlY3QobV9jYWNoZWRJbWFnZVJlY3Qu
bG9jYXRpb24oKSwgc3JjUmVjdC5zaXplKCkpKTsKKyAgICBhdXRvJiBidWZmZXJDb250ZXh0ID0g
aW1hZ2VCdWZmZXItPmNvbnRleHQoKTsKKworICAgIC8vIFdlIG5lZWQgdG8gdHJhbnNmb3JtIHRo
ZSBjb29yZGluYXRlIHN5c3RlbSBzdWNoIHRoYXQgdG9wLWxlZnQgb2YgYWRqdXN0ZWREZXN0UmVj
dCB3aWxsIGJlIG1hcHBlZCB0byB0aGUKKyAgICAvLyB0b3AtbGVmdCBvZiBkZXN0UmVjdC4gQWx0
aG91Z2ggb25seSBpbWFnZUJ1ZmZlclJlY3Quc2l6ZSgpIG9mIHRoZSBpbWFnZSBjb3BpZWQsIHRo
ZSBzaXplcyBvZiBzcmNSZWN0CisgICAgLy8gYW5kIGRlc3RSZWN0IHNob3VsZCBiZSBwYXNzZWQg
dG8gdGhpcyBmdW5jdGlvbiBiZWNhdXNlIHRoZXkgYXJlIHVzZWQgdG8gY2FsY3VsYXRlIHRoZSBp
bWFnZSBzY2FsaW5nLgorICAgIHRyYW5zZm9ybUNvbnRleHRGb3JQYWludGluZyhidWZmZXJDb250
ZXh0LCBkZXN0UmVjdCwgRmxvYXRSZWN0KHNuYXBzaG90UmVjdC5sb2NhdGlvbigpLCBzcmNSZWN0
LnNpemUoKSkpOwogICAgIGRyYXdQREZQYWdlKGJ1ZmZlckNvbnRleHQpOwogCi0gICAgbV9jYWNo
ZWRUcmFuc2Zvcm0gPSBjb250ZXh0LmdldENUTShHcmFwaGljc0NvbnRleHQ6OkRlZmluaXRlbHlJ
bmNsdWRlRGV2aWNlU2NhbGUpOwotICAgIG1fY2FjaGVkRGVzdGluYXRpb25SZWN0ID0gZHN0UmVj
dDsKLSAgICBtX2NhY2hlZFNvdXJjZVJlY3QgPSBzcmNSZWN0OworICAgIGF1dG8gdHJhbnNmb3Jt
ID0gY29udGV4dC5nZXRDVE0oR3JhcGhpY3NDb250ZXh0OjpEZWZpbml0ZWx5SW5jbHVkZURldmlj
ZVNjYWxlKTsKKyAgICBtX3NuYXBzaG90ID0gU25hcHNob3Q6OmNyZWF0ZShtYWtlUmVmKCppbWFn
ZUJ1ZmZlciksIHNuYXBzaG90UmVjdCwgZGVzdFJlY3QsIHNyY1JlY3QsIHRyYW5zZm9ybSk7CisK
KyAgICBBU1NFUlQobV9zbmFwc2hvdCk7CiAgICAgKyttX2NhY2hpbmdDb3VudEZvclRlc3Rpbmc7
CiAKLSAgICBJbnRTaXplIGJhY2tlbmRTaXplID0gbV9jYWNoZWRJbWFnZUJ1ZmZlci0+YmFja2Vu
ZFNpemUoKTsKLSAgICBkZWNvZGVkU2l6ZUNoYW5nZWQoYmFja2VuZFNpemUudW5jbGFtcGVkQXJl
YSgpICogNCk7CisgICAgLy8gVXBkYXRlIHRoZSBvYnNlcnZlciB3aXRoIHRoZSBuZXcgYWxsb2Nh
dGlvbi4KKyAgICBkZWNvZGVkU2l6ZUNoYW5nZWQoMCwgbV9zbmFwc2hvdC0+bWVtb3J5Q29zdCgp
KTsKKyAgICBzbmFwc2hvdEltYWdlcygpLmFwcGVuZCh0aGlzKTsKIH0KIAotSW1hZ2VEcmF3UmVz
dWx0IFBERkRvY3VtZW50SW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1h
Z2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCitJbWFnZURyYXdSZXN1bHQgUERGRG9jdW1lbnRJ
bWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmIG9wdGlvbnMpCiB7CiAgICAgaWYgKCFtX2RvY3VtZW50IHx8ICFtX2hhc1BhZ2UpCiAgICAg
ICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7CiAKLSAgICB1cGRhdGVDYWNo
ZWRJbWFnZUlmTmVlZGVkKGNvbnRleHQsIGRzdFJlY3QsIHNyY1JlY3QpOworICAgIHVwZGF0ZVNu
YXBzaG90SWZOZWVkZWQoY29udGV4dCwgZGVzdFJlY3QsIHNyY1JlY3QpOwogCi0gICAgewotICAg
ICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7Ci0gICAg
ICAgIGNvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKG9wdGlvbnMuY29tcG9zaXRlT3BlcmF0
b3IoKSk7CisgICAgaWYgKCFtX3NuYXBzaG90KQorICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVz
dWx0OjpEaWROb3RoaW5nOwogCi0gICAgICAgIGlmIChtX2NhY2hlZEltYWdlQnVmZmVyKSB7Ci0g
ICAgICAgICAgICAvLyBEcmF3IHRoZSBJbWFnZUJ1ZmZlciAnbV9jYWNoZWRJbWFnZUJ1ZmZlcicg
dG8gdGhlIHJlY3RhbmdsZSAnbV9jYWNoZWRJbWFnZVJlY3QnCi0gICAgICAgICAgICAvLyBvbiB0
aGUgZGVzdGluYXRpb24gY29udGV4dC4gU2luY2UgdGhlIHBpeGVscyBvZiB0aGUgcmVjdGFuZ2xl
ICdtX2NhY2hlZEltYWdlUmVjdCcKLSAgICAgICAgICAgIC8vIG9mIHRoZSBzb3VyY2UgUERGIHdh
cyBjb3BpZWQgdG8gJ21fY2FjaGVkSW1hZ2VCdWZmZXInLCB0aGUgc2l6ZXMgb2YgdGhlIHNvdXJj
ZQotICAgICAgICAgICAgLy8gYW5kIHRoZSBkZXN0aW5hdGlvbiByZWN0YW5nbGVzIHdpbGwgYmUg
ZXF1YWwgYW5kIG5vIHNjYWxpbmcgd2lsbCBiZSBuZWVkZWQgaGVyZS4KLSAgICAgICAgICAgIGNv
bnRleHQuZHJhd0ltYWdlQnVmZmVyKCptX2NhY2hlZEltYWdlQnVmZmVyLCBtX2NhY2hlZEltYWdl
UmVjdCk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICB0cmFuc2Zvcm1D
b250ZXh0Rm9yUGFpbnRpbmcoY29udGV4dCwgZHN0UmVjdCwgc3JjUmVjdCk7Ci0gICAgICAgICAg
ICBkcmF3UERGUGFnZShjb250ZXh0KTsKLSAgICAgICAgfQotICAgIH0KKyAgICBHcmFwaGljc0Nv
bnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4dCk7CisgICAgY29udGV4dC5zZXRDb21w
b3NpdGVPcGVyYXRpb24ob3B0aW9ucy5jb21wb3NpdGVPcGVyYXRvcigpKTsKKworICAgIG1fc25h
cHNob3QtPmRyYXcoY29udGV4dCk7CiAKICAgICBpZiAoaW1hZ2VPYnNlcnZlcigpKQogICAgICAg
ICBpbWFnZU9ic2VydmVyKCktPmRpZERyYXcoKnRoaXMpOwpAQCAtMjkwLDEwMCArMjIwLDExNiBA
QCBJbWFnZURyYXdSZXN1bHQgUERGRG9jdW1lbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdAogCiB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmRlc3Ry
b3lEZWNvZGVkRGF0YShib29sKQogewotICAgIG1fY2FjaGVkSW1hZ2VCdWZmZXIgPSBudWxscHRy
OwotICAgIG1fY2FjaGVkSW1hZ2VSZWN0ID0gRmxvYXRSZWN0KCk7Ci0gICAgZGVjb2RlZFNpemVD
aGFuZ2VkKDApOwotfQorICAgIGlmICghbV9zbmFwc2hvdCkKKyAgICAgICAgcmV0dXJuOwogCi0j
aWYgIVVTRShQREZLSVRfRk9SX1BERkRPQ1VNRU5USU1BR0UpCisgICAgc3RkOjp1bmlxdWVfcHRy
PFNuYXBzaG90PiBzbmFwc2hvdDsKKyAgICBzbmFwc2hvdC5zd2FwKG1fc25hcHNob3QpOworICAg
IGRlY29kZWRTaXplQ2hhbmdlZChzbmFwc2hvdC0+bWVtb3J5Q29zdCgpLCAwKTsKIAotdm9pZCBQ
REZEb2N1bWVudEltYWdlOjpjcmVhdGVQREZEb2N1bWVudCgpCi17Ci0gICAgUmV0YWluUHRyPENH
RGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3Jl
YXRlV2l0aENGRGF0YShkYXRhKCktPmNyZWF0ZUNGRGF0YSgpLmdldCgpKSk7Ci0gICAgbV9kb2N1
bWVudCA9IGFkb3B0Q0YoQ0dQREZEb2N1bWVudENyZWF0ZVdpdGhQcm92aWRlcihkYXRhUHJvdmlk
ZXIuZ2V0KCkpKTsKKyAgICBzbmFwc2hvdEltYWdlcygpLnJlbW92ZSh0aGlzKTsKIH0KIAotdm9p
ZCBQREZEb2N1bWVudEltYWdlOjpjb21wdXRlQm91bmRzRm9yQ3VycmVudFBhZ2UoKQordm9pZCBQ
REZEb2N1bWVudEltYWdlOjpkdW1wKFRleHRTdHJlYW0mIHRzKSBjb25zdAogewotICAgIEFTU0VS
VChwYWdlQ291bnQoKSA+IDApOwotICAgIENHUERGUGFnZVJlZiBjZ1BhZ2UgPSBDR1BERkRvY3Vt
ZW50R2V0UGFnZShtX2RvY3VtZW50LmdldCgpLCAxKTsKLSAgICBDR1JlY3QgbWVkaWFCb3ggPSBD
R1BERlBhZ2VHZXRCb3hSZWN0KGNnUGFnZSwga0NHUERGTWVkaWFCb3gpOwotCi0gICAgLy8gR2V0
IGNyb3AgYm94IChub3QgYWx3YXlzIHRoZXJlKS4gSWYgbm90LCB1c2UgbWVkaWEgYm94LgotICAg
IENHUmVjdCByID0gQ0dQREZQYWdlR2V0Qm94UmVjdChjZ1BhZ2UsIGtDR1BERkNyb3BCb3gpOwot
ICAgIGlmICghQ0dSZWN0SXNFbXB0eShyKSkKLSAgICAgICAgbV9jcm9wQm94ID0gcjsKLSAgICBl
bHNlCi0gICAgICAgIG1fY3JvcEJveCA9IG1lZGlhQm94OwotCi0gICAgbV9yb3RhdGlvbkRlZ3Jl
ZXMgPSBDR1BERlBhZ2VHZXRSb3RhdGlvbkFuZ2xlKGNnUGFnZSk7CisgICAgSW1hZ2U6OmR1bXAo
dHMpOworICAgIHRzLmR1bXBQcm9wZXJ0eSgicGFnZS1jb3VudCIsIHBhZ2VDb3VudCgpKTsKKyAg
ICB0cy5kdW1wUHJvcGVydHkoImNyb3AtYm94IiwgbV9jcm9wQm94KTsKKyAgICBpZiAobV9yb3Rh
dGlvbkRlZ3JlZXMpCisgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgicm90YXRpb24iLCBtX3JvdGF0
aW9uRGVncmVlcyk7CiB9CiAKLXVuc2lnbmVkIFBERkRvY3VtZW50SW1hZ2U6OnBhZ2VDb3VudCgp
IGNvbnN0CitzdGQ6OnVuaXF1ZV9wdHI8UERGRG9jdW1lbnRJbWFnZTo6U25hcHNob3Q+IFBERkRv
Y3VtZW50SW1hZ2U6OlNuYXBzaG90OjpjcmVhdGUoUmVmPEltYWdlQnVmZmVyPiYmIGltYWdlQnVm
ZmVyLCBjb25zdCBGbG9hdFJlY3QmIGltYWdlQnVmZmVyUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IHRyYW5zZm9ybSkKIHsKLSAgICByZXR1cm4gQ0dQREZEb2N1bWVudEdldE51bWJlck9mUGFnZXMo
bV9kb2N1bWVudC5nZXQoKSk7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxTbmFwc2hvdD4o
bmV3IFNuYXBzaG90KFdURk1vdmUoaW1hZ2VCdWZmZXIpLCBpbWFnZUJ1ZmZlclJlY3QsIGRlc3RS
ZWN0LCBzcmNSZWN0LCB0cmFuc2Zvcm0pKTsKIH0KIAotc3RhdGljIHZvaWQgYXBwbHlSb3RhdGlv
bkZvclBhaW50aW5nKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgRmxvYXRTaXplIHNpemUsIGlu
dCByb3RhdGlvbkRlZ3JlZXMpCitQREZEb2N1bWVudEltYWdlOjpTbmFwc2hvdDo6U25hcHNob3Qo
UmVmPEltYWdlQnVmZmVyPiYmIGltYWdlQnVmZmVyLCBjb25zdCBGbG9hdFJlY3QmIHNuYXBzaG90
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSkKKyAgICA6IG1faW1hZ2VCdWZmZXIo
V1RGTW92ZShpbWFnZUJ1ZmZlcikpCisgICAgLCBtX3NuYXBzaG90UmVjdChzbmFwc2hvdFJlY3Qp
CisgICAgLCBtX2Rlc3RSZWN0KGRlc3RSZWN0KQorICAgICwgbV9zcmNSZWN0KHNyY1JlY3QpCisg
ICAgLCBtX3RyYW5zZm9ybSh0cmFuc2Zvcm0pCiB7Ci0gICAgaWYgKHJvdGF0aW9uRGVncmVlcyA9
PSA5MCkKLSAgICAgICAgY29udGV4dC50cmFuc2xhdGUoMCwgc2l6ZS5oZWlnaHQoKSk7Ci0gICAg
ZWxzZSBpZiAocm90YXRpb25EZWdyZWVzID09IDE4MCkKLSAgICAgICAgY29udGV4dC50cmFuc2xh
dGUoc2l6ZSk7Ci0gICAgZWxzZSBpZiAocm90YXRpb25EZWdyZWVzID09IDI3MCkKLSAgICAgICAg
Y29udGV4dC50cmFuc2xhdGUoc2l6ZS53aWR0aCgpLCAwKTsKLQotICAgIGNvbnRleHQucm90YXRl
KC1kZWcycmFkKHN0YXRpY19jYXN0PGZsb2F0Pihyb3RhdGlvbkRlZ3JlZXMpKSk7CisgICAgQVNT
RVJUKG1heFNuYXBzaG90c01lbW9yeUNvc3QgLSBtX2FsbFNuYXBzaG90c01lbW9yeUNvc3QgPj0g
bWVtb3J5Q29zdCgpKTsKKyAgICBtX2FsbFNuYXBzaG90c01lbW9yeUNvc3QgKz0gbWVtb3J5Q29z
dCgpOwogfQogCi12b2lkIFBERkRvY3VtZW50SW1hZ2U6OmRyYXdQREZQYWdlKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCkKK1BERkRvY3VtZW50SW1hZ2U6OlNuYXBzaG90Ojp+U25hcHNob3QoKQog
ewotICAgIGFwcGx5Um90YXRpb25Gb3JQYWludGluZyhjb250ZXh0LCBzaXplKCksIG1fcm90YXRp
b25EZWdyZWVzKTsKLQotICAgIGNvbnRleHQudHJhbnNsYXRlKC1tX2Nyb3BCb3gubG9jYXRpb24o
KSk7Ci0KLSNpZiBVU0UoRElSRUNUMkQpCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSNlbHNlCi0g
ICAgLy8gQ0dQREYgcGFnZXMgYXJlIGluZGV4ZWQgZnJvbSAxLgotI2lmIFBMQVRGT1JNKENPQ09B
KQotICAgIENHQ29udGV4dERyYXdQREZQYWdlV2l0aEFubm90YXRpb25zKGNvbnRleHQucGxhdGZv
cm1Db250ZXh0KCksIENHUERGRG9jdW1lbnRHZXRQYWdlKG1fZG9jdW1lbnQuZ2V0KCksIDEpLCBu
dWxscHRyKTsKLSNlbHNlCi0gICAgQ0dDb250ZXh0RHJhd1BERlBhZ2UoY29udGV4dC5wbGF0Zm9y
bUNvbnRleHQoKSwgQ0dQREZEb2N1bWVudEdldFBhZ2UobV9kb2N1bWVudC5nZXQoKSwgMSkpOwot
I2VuZGlmCi0jZW5kaWYKKyAgICBBU1NFUlQobV9hbGxTbmFwc2hvdHNNZW1vcnlDb3N0ID49IG1l
bW9yeUNvc3QoKSk7CisgICAgbV9hbGxTbmFwc2hvdHNNZW1vcnlDb3N0IC09IG1lbW9yeUNvc3Qo
KTsKIH0KIAotI2VuZGlmIC8vICFVU0UoUERGS0lUX0ZPUl9QREZET0NVTUVOVElNQUdFKQorYm9v
bCBQREZEb2N1bWVudEltYWdlOjpTbmFwc2hvdDo6Y2FuQmVSZXVzZWQoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QpIGNvbnN0Cit7CisgICAgLy8gT2xkIGFuZCBuZXcgc291cmNlIHJlY3RhbmdsZXMgaGF2
ZSB0byBtYXRjaC4KKyAgICBpZiAoc3JjUmVjdCAhPSBtX3NyY1JlY3QpCisgICAgICAgIHJldHVy
biBmYWxzZTsKIAotI2lmIFBMQVRGT1JNKE1BQykKKyAgICAvLyBPbGQgYW5kIG5ldyBzY2FsaW5n
IGZhY3RvcnMgImRlc3QgLyBzcmMiIGhhdmUgdG8gbWF0Y2guCisgICAgaWYgKGRlc3RSZWN0LnNp
emUoKSAhPSBtX2Rlc3RSZWN0LnNpemUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi1SZXRh
aW5QdHI8Q0ZNdXRhYmxlRGF0YVJlZj4gUERGRG9jdW1lbnRJbWFnZTo6Y29udmVydFBvc3RTY3Jp
cHREYXRhVG9QREYoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBwb3N0U2NyaXB0RGF0YSkKLXsKLSAg
ICAvLyBDb252ZXJ0IFBvc3RTY3JpcHQgdG8gUERGIHVzaW5nIHRoZSBRdWFydHogMkQgQVBJLgot
ICAgIC8vIGh0dHA6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24vR3JhcGhpY3NJ
bWFnaW5nL0NvbmNlcHR1YWwvZHJhd2luZ3dpdGhxdWFydHoyZC9kcV9wc19jb252ZXJ0L2NoYXB0
ZXJfMTZfc2VjdGlvbl8xLmh0bWwKKyAgICAvLyBtX3NuYXBzaG90UmVjdHQgY2FuIGJlIG1vdmVk
IGlmIHNyY1JlY3QgYW5kIGRlc3RSZWN0LnNpemUoKSBkaWQgbm90IGNoYW5nZS4KKyAgICBGbG9h
dFJlY3QgbW92ZWRTbmFwc2hvdFJlY3QgPSBtX3NuYXBzaG90UmVjdDsKKyAgICBtb3ZlZFNuYXBz
aG90UmVjdC5tb3ZlKEZsb2F0U2l6ZShkZXN0UmVjdC5sb2NhdGlvbigpIC0gbV9kZXN0UmVjdC5s
b2NhdGlvbigpKSk7CiAKLSAgICBDR1BTQ29udmVydGVyQ2FsbGJhY2tzIGNhbGxiYWNrcyA9IHsg
fTsKLSAgICBhdXRvIGNvbnZlcnRlciA9IGFkb3B0Q0YoQ0dQU0NvbnZlcnRlckNyZWF0ZSgwLCAm
Y2FsbGJhY2tzLCAwKSk7Ci0gICAgYXV0byBwcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlk
ZXJDcmVhdGVXaXRoQ0ZEYXRhKHBvc3RTY3JpcHREYXRhLmdldCgpKSk7Ci0gICAgYXV0byBwZGZE
YXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDAp
KTsKLSAgICBhdXRvIGNvbnN1bWVyID0gYWRvcHRDRihDR0RhdGFDb25zdW1lckNyZWF0ZVdpdGhD
RkRhdGEocGRmRGF0YS5nZXQoKSkpOworICAgIC8vIG1vdmVkQ2FjaGVkSW1hZ2VSZWN0IGhhcyB0
byBjb250YWluIHRoZSB3aG9sZSBkaXJ0eSByZWN0YW5nbGUuCisgICAgRmxvYXRSZWN0IGRpcnR5
UmVjdCA9IGludGVyc2VjdGlvbihjb250ZXh0LmNsaXBCb3VuZHMoKSwgZGVzdFJlY3QpOworICAg
IGlmICghbW92ZWRTbmFwc2hvdFJlY3QuY29udGFpbnMoZGlydHlSZWN0KSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgLy8gT2xkIGFuZCBuZXcgY29udGV4dCBzY2FsaW5nIGZhY3RvcnMg
aGF2ZSB0byBtYXRjaCBhcyB3ZWxsLgorICAgIEFmZmluZVRyYW5zZm9ybTo6RGVjb21wb3NlZFR5
cGUgZGVjb21wb3NlZFRyYW5zZm9ybTsKKyAgICBjb250ZXh0LmdldENUTShHcmFwaGljc0NvbnRl
eHQ6OkRlZmluaXRlbHlJbmNsdWRlRGV2aWNlU2NhbGUpLmRlY29tcG9zZShkZWNvbXBvc2VkVHJh
bnNmb3JtKTsKKworICAgIEFmZmluZVRyYW5zZm9ybTo6RGVjb21wb3NlZFR5cGUgY2FjaGVkRGVj
b21wb3NlZFRyYW5zZm9ybTsKKyAgICBtX3RyYW5zZm9ybS5kZWNvbXBvc2UoY2FjaGVkRGVjb21w
b3NlZFRyYW5zZm9ybSk7CiAKLSAgICBDR1BTQ29udmVydGVyQ29udmVydChjb252ZXJ0ZXIuZ2V0
KCksIHByb3ZpZGVyLmdldCgpLCBjb25zdW1lci5nZXQoKSwgMCk7Ci0gICAgcmV0dXJuIHBkZkRh
dGE7CisgICAgcmV0dXJuIGRlY29tcG9zZWRUcmFuc2Zvcm0uc2NhbGVYID09IGNhY2hlZERlY29t
cG9zZWRUcmFuc2Zvcm0uc2NhbGVYICYmIGRlY29tcG9zZWRUcmFuc2Zvcm0uc2NhbGVZID09IGNh
Y2hlZERlY29tcG9zZWRUcmFuc2Zvcm0uc2NhbGVZOwogfQogCi0jZW5kaWYKK3NpemVfdCBQREZE
b2N1bWVudEltYWdlOjpTbmFwc2hvdDo6bWVtb3J5Q29zdCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1faW1hZ2VCdWZmZXItPm1lbW9yeUNvc3QoKTsKK30KIAotdm9pZCBQREZEb2N1bWVudEltYWdl
OjpkdW1wKFRleHRTdHJlYW0mIHRzKSBjb25zdAorYm9vbCBQREZEb2N1bWVudEltYWdlOjpTbmFw
c2hvdDo6dHJhbnNmZXJWaWV3cG9ydChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCkKIHsKLSAgICBJbWFn
ZTo6ZHVtcCh0cyk7Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJwYWdlLWNvdW50IiwgcGFnZUNvdW50
KCkpOwotICAgIHRzLmR1bXBQcm9wZXJ0eSgiY3JvcC1ib3giLCBtX2Nyb3BCb3gpOwotICAgIGlm
IChtX3JvdGF0aW9uRGVncmVlcykKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJyb3RhdGlvbiIs
IG1fcm90YXRpb25EZWdyZWVzKTsKKyAgICBpZiAoIWNhbkJlUmV1c2VkKGNvbnRleHQsIGRlc3RS
ZWN0LCBzcmNSZWN0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbV9zbmFwc2hvdFJl
Y3QubW92ZShGbG9hdFNpemUoZGVzdFJlY3QubG9jYXRpb24oKSAtIG1fZGVzdFJlY3QubG9jYXRp
b24oKSkpOworICAgIG1fZGVzdFJlY3QgPSBkZXN0UmVjdDsKKyAgICByZXR1cm4gdHJ1ZTsKIH0K
IAordm9pZCBQREZEb2N1bWVudEltYWdlOjpTbmFwc2hvdDo6ZHJhdyhHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQpCit7CisgICAgY29udGV4dC5kcmF3SW1hZ2VCdWZmZXIobV9pbWFnZUJ1ZmZlciwg
bV9kZXN0UmVjdCk7Cit9CisKK3ZvaWQgUERGRG9jdW1lbnRJbWFnZTo6U25hcHNob3RJbWFnZXM6
OnJlbW92ZUFsbFVudXNlZEFib3ZlTGltaXQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBGbG9hdFNpemUmIGltYWdlQnVmZmVyU2l6ZSkKK3sKKyAgICBzaXplX3QgbWVtb3J5Q29zdCA9
IEltYWdlQnVmZmVyOjpjb21wYXRpYmxlQnVmZmVyU2l6ZShpbWFnZUJ1ZmZlclNpemUsIGNvbnRl
eHQpLnVuY2xhbXBlZEFyZWEoKSAqIDQ7CisgICAgc2l6ZV90IGFsbFNuYXBzaG90c01lbW9yeUNv
c3QgPSAwOworCisgICAgZm9yIChhdXRvIGltYWdlIDogbV9pbWFnZXMpCisgICAgICAgIGFsbFNu
YXBzaG90c01lbW9yeUNvc3QgKz0gaW1hZ2UtPmRlY29kZWRTaXplKCk7CisKKyAgICBWZWN0b3I8
UERGRG9jdW1lbnRJbWFnZSo+IGltYWdlc1RvQmVSZW1vdmVkOworICAgIGZvciAoYXV0byBpbWFn
ZSA6IG1faW1hZ2VzKSB7CisgICAgICAgIGlmIChhbGxTbmFwc2hvdHNNZW1vcnlDb3N0ICsgbWVt
b3J5Q29zdCA8PSBtYXhTbmFwc2hvdHNNZW1vcnlDb3N0KQorICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGFsbFNuYXBzaG90c01lbW9yeUNvc3QgLT0gaW1hZ2UtPmRlY29kZWRTaXplKCk7Cisg
ICAgICAgIGltYWdlc1RvQmVSZW1vdmVkLmFwcGVuZChpbWFnZSk7CisgICAgfQorICAgIAorICAg
IGZvciAoYXV0byBpbWFnZSA6IGltYWdlc1RvQmVSZW1vdmVkKQorICAgICAgICBpbWFnZS0+ZGVz
dHJveURlY29kZWREYXRhKCk7CiB9CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNl
bmRpZiAvLyBVU0UoQ0cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9QREZEb2N1bWVudEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9QREZEb2N1bWVudEltYWdlLmgKaW5kZXggNTdmODk0NzQ5ZDVlYWM5MDUzYjhkOGE5
NGVkMDg1ZTVhZmY1MTVhNy4uNGM4NzExYjAwYmRjZWJjNzA1YmE2NTU3OTBmMDRlZDZiYjJhMWYx
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9j
dW1lbnRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BE
RkRvY3VtZW50SW1hZ2UuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDUsIDIwMDYsIDIwMTMgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAwNC0yMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDE2ICsyMywxNSBAQAogICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRlZiBQREZEb2N1bWVudEltYWdlX2gKLSNkZWZpbmUg
UERGRG9jdW1lbnRJbWFnZV9oCisjcHJhZ21hIG9uY2UKKworI2lmIFVTRShDRykKIAogI2luY2x1
ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUg
IkdyYXBoaWNzVHlwZXMuaCIKICNpbmNsdWRlICJJbWFnZS5oIgotI2luY2x1ZGUgIlNldHRpbmdz
LmgiCi0KLSNpZiBVU0UoQ0cpCisjaW5jbHVkZSAiUERGSW1hZ2VDYWNoaW5nUG9saWN5LmgiCiAK
ICNpZiBQTEFURk9STShNQUMpCiAjZGVmaW5lIFVTRV9QREZLSVRfRk9SX1BERkRPQ1VNRU5USU1B
R0UgMQpAQCAtNDYsNiArNDUsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgR3JhcGhp
Y3NDb250ZXh0OwogY2xhc3MgSW1hZ2VCdWZmZXI7CiAKKyNpZiBVU0UoUERGS0lUX0ZPUl9QREZE
T0NVTUVOVElNQUdFKQordXNpbmcgUGxhdGZvcm1QREZEb2N1bWVudFB0ciA9IFJldGFpblB0cjxQ
REZEb2N1bWVudD47CisjZWxzZQordXNpbmcgUGxhdGZvcm1QREZEb2N1bWVudFB0ciA9IFJldGFp
blB0cjxDR1BERkRvY3VtZW50UmVmPjsKKyNlbmRpZgorCiBjbGFzcyBQREZEb2N1bWVudEltYWdl
IGZpbmFsIDogcHVibGljIEltYWdlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFBERkRvY3Vt
ZW50SW1hZ2U+IGNyZWF0ZShJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKQEAgLTUzLDcyICs1OCwx
MDEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQREZEb2N1bWVudElt
YWdlKG9ic2VydmVyKSk7CiAgICAgfQogCisgICAgdW5zaWduZWQgY2FjaGluZ0NvdW50Rm9yVGVz
dGluZygpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGluZ0NvdW50Rm9yVGVzdGluZzsgfQogICAgIHZv
aWQgc2V0UGRmSW1hZ2VDYWNoaW5nUG9saWN5KFBERkltYWdlQ2FjaGluZ1BvbGljeSk7Ci0gICAg
Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZXRhaW5QdHI8
Q0ZNdXRhYmxlRGF0YVJlZj4gY29udmVydFBvc3RTY3JpcHREYXRhVG9QREYoUmV0YWluUHRyPENG
RGF0YVJlZj4mJiBwb3N0U2NyaXB0RGF0YSk7Ci0jZW5kaWYKIAotICAgIHVuc2lnbmVkIGNhY2hp
bmdDb3VudEZvclRlc3RpbmcoKSBjb25zdCB7IHJldHVybiBtX2NhY2hpbmdDb3VudEZvclRlc3Rp
bmc7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmV0YWluUHRyPENGTXV0YWJsZURhdGFS
ZWY+IGNvbnZlcnRQb3N0U2NyaXB0RGF0YVRvUERGKFJldGFpblB0cjxDRkRhdGFSZWY+JiYgcG9z
dFNjcmlwdERhdGEpOwogCiBwcml2YXRlOgorICAgIC8vIFRvIGF2b2lkIHRoZSBqZXRzYW0gb24g
aU9TLCB3ZSBhcmUgZ29pbmcgdG8gbGltaXQgdGhlIHNpemUgb2YgYWxsIHRoZSBQREYgc25hcHNo
b3RzIHRvIGJlIDY0TUIuCisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgbWF4U25hcHNob3RT
aWRlID0gNCAqIDEwMjQ7CisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgbWF4U25hcHNob3RB
cmVhID0gbWF4U25hcHNob3RTaWRlICogbWF4U25hcHNob3RTaWRlOworICAgIHN0YXRpYyBjb25z
dGV4cHIgc2l6ZV90IG1heFNuYXBzaG90c01lbW9yeUNvc3QgPSBtYXhTbmFwc2hvdEFyZWEgKiA0
OworCisgICAgY2xhc3MgU25hcHNob3QgeworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxTbmFwc2hvdD4gY3JlYXRlKFJlZjxJbWFnZUJ1ZmZlcj4mJiwgY29uc3Qg
RmxvYXRSZWN0JiBpbWFnZUJ1ZmZlclJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJik7CisgICAgICAg
IH5TbmFwc2hvdCgpOworCisgICAgICAgIHNpemVfdCBtZW1vcnlDb3N0KCkgY29uc3Q7CisgICAg
ICAgIGJvb2wgdHJhbnNmZXJWaWV3cG9ydChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QpOworICAgICAgICB2b2lkIGRy
YXcoR3JhcGhpY3NDb250ZXh0Jik7CisKKyAgICBwcml2YXRlOgorICAgICAgICBTbmFwc2hvdChS
ZWY8SW1hZ2VCdWZmZXI+JiYsIGNvbnN0IEZsb2F0UmVjdCYgaW1hZ2VCdWZmZXJSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYpOworICAgICAgICBib29sIGNhbkJlUmV1c2VkKEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCkg
Y29uc3Q7CisKKyAgICAgICAgUmVmPEltYWdlQnVmZmVyPiBtX2ltYWdlQnVmZmVyOworICAgICAg
ICBGbG9hdFJlY3QgbV9zbmFwc2hvdFJlY3Q7CisgICAgICAgIEZsb2F0UmVjdCBtX2Rlc3RSZWN0
OworICAgICAgICBGbG9hdFJlY3QgbV9zcmNSZWN0OworICAgICAgICBBZmZpbmVUcmFuc2Zvcm0g
bV90cmFuc2Zvcm07CisgICAgICAgIGlubGluZSBzdGF0aWMgc2l6ZV90IG1fYWxsU25hcHNob3Rz
TWVtb3J5Q29zdCB7IDAgfTsKKyAgICB9OworCisgICAgY2xhc3MgU25hcHNob3RJbWFnZXMgewor
ICAgIHB1YmxpYzoKKyAgICAgICAgU25hcHNob3RJbWFnZXMoKSA9IGRlZmF1bHQ7CisgICAgICAg
IH5TbmFwc2hvdEltYWdlcygpID0gZGVmYXVsdDsKKworICAgICAgICB2b2lkIGFwcGVuZChQREZE
b2N1bWVudEltYWdlKiBpbWFnZSkgeyBtX2ltYWdlcy5hcHBlbmQoaW1hZ2UpOyB9CisgICAgICAg
IHZvaWQgcmVtb3ZlKFBERkRvY3VtZW50SW1hZ2UqIGltYWdlKSB7IG1faW1hZ2VzLnJlbW92ZUZp
cnN0KGltYWdlKTsgfQorCisgICAgICAgIHZvaWQgbWFya1VzZWQoUERGRG9jdW1lbnRJbWFnZSog
aW1hZ2UpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJlbW92ZShpbWFnZSk7CisgICAgICAgICAg
ICBhcHBlbmQoaW1hZ2UpOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCByZW1vdmVBbGxVbnVz
ZWRBYm92ZUxpbWl0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VCdWZm
ZXJTaXplKTsKKyAgICBwcml2YXRlOgorICAgICAgICBWZWN0b3I8UERGRG9jdW1lbnRJbWFnZSo+
IG1faW1hZ2VzOworICAgIH07CisKICAgICBQREZEb2N1bWVudEltYWdlKEltYWdlT2JzZXJ2ZXIq
KTsKICAgICB2aXJ0dWFsIH5QREZEb2N1bWVudEltYWdlKCk7CiAKICAgICBib29sIGlzUERGRG9j
dW1lbnRJbWFnZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIGhh
c1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQor
ICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyB0byBiZSBsZXNzIGNvbnNlcnZhdGl2ZS4KKyAg
ICBib29sIGN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9CiAKICAgICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCBvdmVy
cmlkZTsKLQotICAgIGJvb2wgaGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4oKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CisgICAgRmxvYXRTaXplIHNpemUoSW1hZ2VPcmllbnRhdGlvbiA9
IEltYWdlT3JpZW50YXRpb246OkZyb21JbWFnZSkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBFbmNv
ZGVkRGF0YVN0YXR1cyBkYXRhQ2hhbmdlZChib29sIGFsbERhdGFSZWNlaXZlZCkgb3ZlcnJpZGU7
Ci0KICAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YShib29sIC8qZGVzdHJveUFsbCovID0gdHJ1
ZSkgb3ZlcnJpZGU7CisgICAgc2l6ZV90IGRlY29kZWRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9z
bmFwc2hvdCA/IG1fc25hcHNob3QtPm1lbW9yeUNvc3QoKSA6IDA7IH0KKyAgICB2b2lkIGRlY29k
ZWRTaXplQ2hhbmdlZChzaXplX3Qgb2xkU2l6ZSwgc2l6ZV90IG5ld1NpemUpOwogCiAgICAgdm9p
ZCBjb21wdXRlSW50cmluc2ljRGltZW5zaW9ucyhMZW5ndGgmIGludHJpbnNpY1dpZHRoLCBMZW5n
dGgmIGludHJpbnNpY0hlaWdodCwgRmxvYXRTaXplJiBpbnRyaW5zaWNSYXRpbykgb3ZlcnJpZGU7
Ci0gICAgRmxvYXRTaXplIHNpemUoSW1hZ2VPcmllbnRhdGlvbiA9IEltYWdlT3JpZW50YXRpb246
OkZyb21JbWFnZSkgY29uc3Qgb3ZlcnJpZGU7Ci0KICAgICBJbWFnZURyYXdSZXN1bHQgZHJhdyhH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmID0geyB9KSBvdmVycmlkZTsK
IAotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyB0byBiZSBsZXNzIGNvbnNlcnZhdGl2ZS4K
LSAgICBib29sIGN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIGZhbHNlOyB9Ci0KLSAgICB2b2lkIGR1bXAoV1RGOjpUZXh0U3RyZWFtJikgY29uc3Qg
b3ZlcnJpZGU7CisgICAgc3RhdGljIFNuYXBzaG90SW1hZ2VzJiBzbmFwc2hvdEltYWdlcygpOwor
ICAgIHN0YXRpYyBGbG9hdFJlY3QgY2FsY3VsYXRlU25hcHNob3RSZWN0KEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpOworICAgIHZvaWQgdXBkYXRlU25hcHNob3RJ
Zk5lZWRlZChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QpOwogCiAgICAgdm9pZCBjcmVhdGVQREZEb2N1bWVudCgpOwog
ICAgIHZvaWQgY29tcHV0ZUJvdW5kc0ZvckN1cnJlbnRQYWdlKCk7CiAgICAgdW5zaWduZWQgcGFn
ZUNvdW50KCkgY29uc3Q7CiAgICAgdm9pZCBkcmF3UERGUGFnZShHcmFwaGljc0NvbnRleHQmKTsK
IAotICAgIHZvaWQgZGVjb2RlZFNpemVDaGFuZ2VkKHNpemVfdCBuZXdDYWNoZWRCeXRlcyk7Ci0g
ICAgdm9pZCB1cGRhdGVDYWNoZWRJbWFnZUlmTmVlZGVkKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0KTsKLSAgICBib29s
IGNhY2hlUGFyYW1ldGVyc01hdGNoKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0KSBjb25zdDsKKyAgICB2b2lkIGR1bXAo
V1RGOjpUZXh0U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBQREZJbWFnZUNhY2hpbmdQ
b2xpY3kgbV9wZGZJbWFnZUNhY2hpbmdQb2xpY3kgeyBkZWZhdWx0UERGSW1hZ2VDYWNoaW5nUG9s
aWN5IH07CisgICAgUGxhdGZvcm1QREZEb2N1bWVudFB0ciBtX2RvY3VtZW50OworICAgIGJvb2wg
bV9oYXNQYWdlIHsgZmFsc2UgfTsKIAotI2lmIFVTRShQREZLSVRfRk9SX1BERkRPQ1VNRU5USU1B
R0UpCi0gICAgUmV0YWluUHRyPFBERkRvY3VtZW50PiBtX2RvY3VtZW50OwotI2Vsc2UKLSAgICBS
ZXRhaW5QdHI8Q0dQREZEb2N1bWVudFJlZj4gbV9kb2N1bWVudDsKLSNlbmRpZgorICAgIEZsb2F0
UmVjdCBtX2Nyb3BCb3g7CisgICAgaW50IG1fcm90YXRpb25EZWdyZWVzIHsgMCB9OyAvLyBDYW4g
b25seSBiZSAwLCA5MCwgMTgwLCBvciAyNzAgZGVncmVlcy4KIAotICAgIFJlZlB0cjxJbWFnZUJ1
ZmZlcj4gbV9jYWNoZWRJbWFnZUJ1ZmZlcjsKLSAgICBGbG9hdFJlY3QgbV9jYWNoZWRJbWFnZVJl
Y3Q7Ci0gICAgQWZmaW5lVHJhbnNmb3JtIG1fY2FjaGVkVHJhbnNmb3JtOwotICAgIEZsb2F0UmVj
dCBtX2NhY2hlZERlc3RpbmF0aW9uUmVjdDsKLSAgICBGbG9hdFJlY3QgbV9jYWNoZWRTb3VyY2VS
ZWN0OwotICAgIHNpemVfdCBtX2NhY2hlZEJ5dGVzIHsgMCB9OworICAgIFBERkltYWdlQ2FjaGlu
Z1BvbGljeSBtX3BkZkltYWdlQ2FjaGluZ1BvbGljeSB7IGRlZmF1bHRQREZJbWFnZUNhY2hpbmdQ
b2xpY3kgfTsKICAgICB1bnNpZ25lZCBtX2NhY2hpbmdDb3VudEZvclRlc3RpbmcgeyAwIH07CiAK
LSAgICBGbG9hdFJlY3QgbV9jcm9wQm94OwotICAgIGludCBtX3JvdGF0aW9uRGVncmVlcyB7IDAg
fTsgLy8gQ2FuIG9ubHkgYmUgMCwgOTAsIDE4MCwgb3IgMjcwIGRlZ3JlZXMuCi0gICAgYm9vbCBt
X2hhc1BhZ2UgeyBmYWxzZSB9OworICAgIHN0ZDo6dW5pcXVlX3B0cjxTbmFwc2hvdD4gbV9zbmFw
c2hvdDsKIH07CiAKLX0KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19JTUFHRShQREZEb2N1bWVudEltYWdlKQogCiAjZW5kaWYgLy8gVVNFKENHKQotCi0j
ZW5kaWYgLy8gUERGRG9jdW1lbnRJbWFnZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdlQ0cuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZUNHLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44NDdlMTc0YmJlYjM1YTdkOTE4MDY0YTIyMDNkMzZkNzQwZTQ0NzBmCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFn
ZUNHLmNwcApAQCAtMCwwICsxLDEwMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUERGRG9jdW1l
bnRJbWFnZS5oIgorCisjaWYgIVVTRShQREZLSVRfRk9SX1BERkRPQ1VNRU5USU1BR0UpCisKKyNp
bmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dQREZEb2N1bWVudC5oPgorI2lmIFBMQVRGT1JNKENPQ09B
KQorI2luY2x1ZGUgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CisjZWxzZQorI2luY2x1
ZGUgPENvcmVHcmFwaGljcy9DR0NvbnRleHQuaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK3ZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQoKQoreworICAg
IFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0Rh
dGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoZGF0YSgpLT5jcmVhdGVDRkRhdGEoKS5nZXQoKSkp
OworICAgIG1fZG9jdW1lbnQgPSBhZG9wdENGKENHUERGRG9jdW1lbnRDcmVhdGVXaXRoUHJvdmlk
ZXIoZGF0YVByb3ZpZGVyLmdldCgpKSk7Cit9CisKK3ZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y29t
cHV0ZUJvdW5kc0ZvckN1cnJlbnRQYWdlKCkKK3sKKyAgICBBU1NFUlQocGFnZUNvdW50KCkgPiAw
KTsKKyAgICBDR1BERlBhZ2VSZWYgY2dQYWdlID0gQ0dQREZEb2N1bWVudEdldFBhZ2UobV9kb2N1
bWVudC5nZXQoKSwgMSk7CisgICAgQ0dSZWN0IG1lZGlhQm94ID0gQ0dQREZQYWdlR2V0Qm94UmVj
dChjZ1BhZ2UsIGtDR1BERk1lZGlhQm94KTsKKworICAgIC8vIEdldCBjcm9wIGJveCAobm90IGFs
d2F5cyB0aGVyZSkuIElmIG5vdCwgdXNlIG1lZGlhIGJveC4KKyAgICBDR1JlY3QgciA9IENHUERG
UGFnZUdldEJveFJlY3QoY2dQYWdlLCBrQ0dQREZDcm9wQm94KTsKKyAgICBpZiAoIUNHUmVjdElz
RW1wdHkocikpCisgICAgICAgIG1fY3JvcEJveCA9IHI7CisgICAgZWxzZQorICAgICAgICBtX2Ny
b3BCb3ggPSBtZWRpYUJveDsKKworICAgIG1fcm90YXRpb25EZWdyZWVzID0gQ0dQREZQYWdlR2V0
Um90YXRpb25BbmdsZShjZ1BhZ2UpOworfQorCit1bnNpZ25lZCBQREZEb2N1bWVudEltYWdlOjpw
YWdlQ291bnQoKSBjb25zdAoreworICAgIHJldHVybiBDR1BERkRvY3VtZW50R2V0TnVtYmVyT2ZQ
YWdlcyhtX2RvY3VtZW50LmdldCgpKTsKK30KKworc3RhdGljIHZvaWQgYXBwbHlSb3RhdGlvbkZv
clBhaW50aW5nKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgRmxvYXRTaXplIHNpemUsIGludCBy
b3RhdGlvbkRlZ3JlZXMpCit7CisgICAgaWYgKHJvdGF0aW9uRGVncmVlcyA9PSA5MCkKKyAgICAg
ICAgY29udGV4dC50cmFuc2xhdGUoMCwgc2l6ZS5oZWlnaHQoKSk7CisgICAgZWxzZSBpZiAocm90
YXRpb25EZWdyZWVzID09IDE4MCkKKyAgICAgICAgY29udGV4dC50cmFuc2xhdGUoc2l6ZSk7Cisg
ICAgZWxzZSBpZiAocm90YXRpb25EZWdyZWVzID09IDI3MCkKKyAgICAgICAgY29udGV4dC50cmFu
c2xhdGUoc2l6ZS53aWR0aCgpLCAwKTsKKworICAgIGNvbnRleHQucm90YXRlKC1kZWcycmFkKHN0
YXRpY19jYXN0PGZsb2F0Pihyb3RhdGlvbkRlZ3JlZXMpKSk7Cit9CisKK3ZvaWQgUERGRG9jdW1l
bnRJbWFnZTo6ZHJhd1BERlBhZ2UoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQoreworICAgIGFw
cGx5Um90YXRpb25Gb3JQYWludGluZyhjb250ZXh0LCBzaXplKCksIG1fcm90YXRpb25EZWdyZWVz
KTsKKworICAgIGNvbnRleHQudHJhbnNsYXRlKC1tX2Nyb3BCb3gubG9jYXRpb24oKSk7CisKKyAg
ICAvLyBDR1BERiBwYWdlcyBhcmUgaW5kZXhlZCBmcm9tIDEuCisjaWYgUExBVEZPUk0oQ09DT0Ep
CisgICAgQ0dDb250ZXh0RHJhd1BERlBhZ2VXaXRoQW5ub3RhdGlvbnMoY29udGV4dC5wbGF0Zm9y
bUNvbnRleHQoKSwgQ0dQREZEb2N1bWVudEdldFBhZ2UobV9kb2N1bWVudC5nZXQoKSwgMSksIG51
bGxwdHIpOworI2Vsc2UKKyAgICBDR0NvbnRleHREcmF3UERGUGFnZShjb250ZXh0LnBsYXRmb3Jt
Q29udGV4dCgpLCBDR1BERkRvY3VtZW50R2V0UGFnZShtX2RvY3VtZW50LmdldCgpLCAxKSk7Cisj
ZW5kaWYKK30KKworUmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+IFBERkRvY3VtZW50SW1hZ2U6
OmNvbnZlcnRQb3N0U2NyaXB0RGF0YVRvUERGKFJldGFpblB0cjxDRkRhdGFSZWY+JiYpCit7Cisg
ICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vICFVU0UoUERGS0lUX0ZPUl9QREZET0NVTUVOVElNQUdFKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3Jk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVjb3JkZXIuY3BwCmluZGV4IGY1MDAwNWE0NTRiMzlmNDVjZDBmZjcxYWQ3ZDE5
Y2ExY2Q3YzcwZWUuLmVmOTJhNGQ3OWVkN2Y2OTEwMzNkOGE2ZmQxZDBmNTljMTZlNzk0MDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTEzNyw2ICsxMzcs
MTEgQEAgdm9pZCBSZWNvcmRlcjo6dXBkYXRlU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3Rh
dGUmIHN0YXRlLCBHcmFwaGljc0NvbnRleHRTdGEKICAgICBjdXJyZW50U3RhdGUoKS5zdGF0ZUNo
YW5nZS5hY2N1bXVsYXRlKHN0YXRlLCBmbGFncyk7CiB9CiAKK2Jvb2wgUmVjb3JkZXI6OmNhblJl
Y29yZERyYXdJbWFnZUJ1ZmZlcihjb25zdCBJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIpIGNvbnN0
Cit7CisgICAgcmV0dXJuICFtX2RlbGVnYXRlIHx8IG1fZGVsZWdhdGUtPmlzQ2FjaGVkSW1hZ2VC
dWZmZXIoaW1hZ2VCdWZmZXIpOworfQorCiB2b2lkIFJlY29yZGVyOjpjbGVhclNoYWRvdygpCiB7
CiAgICAgYXBwZW5kPENsZWFyU2hhZG93PigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJl
Y29yZGVyLmgKaW5kZXggNzdjYmEzMzZkYzViOTRmNGRiMjFkYTY2MTEwN2JkNGMzMmNmNzA4NS4u
ZWNkZDQxODEzMjU2MzE2ODdhNTRkNDA3M2ZjOGRjYTcwMjI4OTJkNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCkBAIC02NywxMSArNjcsMTMgQEAgcHVibGljOgogICAg
ICAgICB2aXJ0dWFsIHZvaWQgd2lsbEFwcGVuZEl0ZW1PZlR5cGUoSXRlbVR5cGUpIHsgfQogICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlkQXBwZW5kSXRlbU9mVHlwZShJdGVtVHlwZSkgeyB9CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBjYWNoZU5hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJikgeyB9CisgICAg
ICAgIHZpcnR1YWwgYm9vbCBpc0NhY2hlZEltYWdlQnVmZmVyKGNvbnN0IEltYWdlQnVmZmVyJikg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB9OwogCiBwcml2YXRlOgogICAgIGZyaWVuZCBj
bGFzcyBEcmF3R2x5cGhzUmVjb3JkZXI7CiAgICAgYm9vbCBoYXNQbGF0Zm9ybUNvbnRleHQoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgY2FuUmVjb3JkRHJhd0lt
YWdlQnVmZmVyKGNvbnN0IEltYWdlQnVmZmVyJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgUGxhdGZv
cm1HcmFwaGljc0NvbnRleHQqIHBsYXRmb3JtQ29udGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG51bGxwdHI7IH0KIAogICAgIHZvaWQgdXBkYXRlU3RhdGUoY29uc3QgR3JhcGhpY3NDb250
ZXh0U3RhdGUmLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncykgb3ZlcnJp
ZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvUERG
RG9jdW1lbnRJbWFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9QREZEb2N1bWVudEltYWdlTWFjLm1tCmluZGV4IDgzZTZhZjdiMDM4OTI4MzhjM2JmZWExYzBj
MTFhYTdmY2Y4YTc3YTkuLjE3NTlkYjY4NTYwNGIzYTgyOTczMGIwMzBjODNhODBiNDdlMmYxMGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9QREZEb2N1
bWVudEltYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9QREZEb2N1bWVudEltYWdlTWFjLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTgzLDYgKzgzLDIxIEBAIHZvaWQgUERGRG9jdW1lbnRJ
bWFnZTo6ZHJhd1BERlBhZ2UoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogICAgIENHQ29udGV4
dFNldEFsbG93c0ZvbnRTdWJwaXhlbFBvc2l0aW9uaW5nKGNvbnRleHQucGxhdGZvcm1Db250ZXh0
KCksIGFsbG93c1N1YnBpeGVsUG9zaXRpb25pbmcpOwogfQogCitSZXRhaW5QdHI8Q0ZNdXRhYmxl
RGF0YVJlZj4gUERGRG9jdW1lbnRJbWFnZTo6Y29udmVydFBvc3RTY3JpcHREYXRhVG9QREYoUmV0
YWluUHRyPENGRGF0YVJlZj4mJiBwb3N0U2NyaXB0RGF0YSkKK3sKKyAgICAvLyBDb252ZXJ0IFBv
c3RTY3JpcHQgdG8gUERGIHVzaW5nIHRoZSBRdWFydHogMkQgQVBJLgorICAgIC8vIGh0dHA6Ly9k
ZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24vR3JhcGhpY3NJbWFnaW5nL0NvbmNlcHR1
YWwvZHJhd2luZ3dpdGhxdWFydHoyZC9kcV9wc19jb252ZXJ0L2NoYXB0ZXJfMTZfc2VjdGlvbl8x
Lmh0bWwKKworICAgIENHUFNDb252ZXJ0ZXJDYWxsYmFja3MgY2FsbGJhY2tzID0geyB9OworICAg
IGF1dG8gY29udmVydGVyID0gYWRvcHRDRihDR1BTQ29udmVydGVyQ3JlYXRlKDAsICZjYWxsYmFj
a3MsIDApKTsKKyAgICBhdXRvIHByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0
ZVdpdGhDRkRhdGEocG9zdFNjcmlwdERhdGEuZ2V0KCkpKTsKKyAgICBhdXRvIHBkZkRhdGEgPSBh
ZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCkpOworICAg
IGF1dG8gY29uc3VtZXIgPSBhZG9wdENGKENHRGF0YUNvbnN1bWVyQ3JlYXRlV2l0aENGRGF0YShw
ZGZEYXRhLmdldCgpKSk7CisKKyAgICBDR1BTQ29udmVydGVyQ29udmVydChjb252ZXJ0ZXIuZ2V0
KCksIHByb3ZpZGVyLmdldCgpLCBjb25zdW1lci5nZXQoKSwgMCk7CisgICAgcmV0dXJuIHBkZkRh
dGE7CiB9CiAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwogI2VuZGlmIC8vIFVTRShQREZLSVRf
Rk9SX1BERkRPQ1VNRU5USU1BR0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCmluZGV4IDUx
YmQ1NzEyOTU4YWYxMmEyMzE1ZDQxYmEzZDJkNmI5ZWQ1N2YyYmEuLjljMzQ1OTc4MWQyYmUwY2E4
YjA2NjJlMGFlMDA1ODZjM2M2N2Y5ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCkBA
IC0yMjUsNiArMjI1LDE1IEBAIHByb3RlY3RlZDoKICAgICAgICAgZGlzcGxheUxpc3QuY2xlYXIo
KTsKICAgICB9CiAKKyAgICBib29sIGlzQ2FjaGVkSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6
SW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyKSBjb25zdCBvdmVycmlkZQorICAgIHsKKyAgICAgICAg
aWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgYXV0byBjYWNoZWRJbWFnZUJ1ZmZlciA9IG1fcmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5LT5yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkoKS5jYWNoZWRJbWFnZUJ1ZmZl
cihpbWFnZUJ1ZmZlci5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSk7CisgICAgICAgIEFT
U0VSVCghY2FjaGVkSW1hZ2VCdWZmZXIgfHwgY2FjaGVkSW1hZ2VCdWZmZXIgPT0gJmltYWdlQnVm
ZmVyKTsKKyAgICAgICAgcmV0dXJuIGNhY2hlZEltYWdlQnVmZmVyOworICAgIH0KKwogICAgIHZv
aWQgY2FjaGVOYXRpdmVJbWFnZShXZWJDb3JlOjpOYXRpdmVJbWFnZSYgaW1hZ2UpIG92ZXJyaWRl
CiAgICAgewogICAgICAgICBpZiAobV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415103</attachid>
            <date>2020-12-01 00:02:22 -0800</date>
            <delta_ts>2020-12-01 03:54:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218871-20201201000222.patch</filename>
            <type>text/plain</type>
            <size>46456</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMjgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGY2NjgzMDI0N2JhNGRm
MTEzNTg0YjQwZjFjMDg3NDI4NDlmMGNlMy4uZjQyYmZhMjFjYzBhMWMwNGY0NDE2NjVjM2MyN2M5
MzczZjMxNDFjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDIwLTExLTMwICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
U3VwcG9ydCByZW5kZXJpbmcgUERGRG9jdW1lbnRJbWFnZSBpbiBHUFUgUHJvY2VzcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4ODcxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQbGF0Zm9ybUFwcGxl
V2luLmNtYWtlOgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OmRyYXdJbWFnZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0SW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0SW1wbDo6Y2Fu
UmVjb3JkRHJhd0ltYWdlQnVmZmVyIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZDo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UERGRG9jdW1lbnRJbWFnZTo6ZGVjb2RlZFNpemVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OlBERkRvY3VtZW50SW1hZ2U6OmRhdGFDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlBE
RkRvY3VtZW50SW1hZ2U6OnNuYXBzaG90SW1hZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRv
Y3VtZW50SW1hZ2U6OmNhbGN1bGF0ZVNuYXBzaG90UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpQ
REZEb2N1bWVudEltYWdlOjp1cGRhdGVTbmFwc2hvdElmTmVlZGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlBERkRvY3VtZW50SW1hZ2U6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1l
bnRJbWFnZTo6ZGVzdHJveURlY29kZWREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3Vt
ZW50SW1hZ2U6OmR1bXAgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFn
ZTo6U25hcHNob3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdl
OjpTbmFwc2hvdDo6U25hcHNob3QpOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFn
ZTo6U25hcHNob3Q6On5TbmFwc2hvdCk6CisgICAgICAgIChXZWJDb3JlOjpQREZEb2N1bWVudElt
YWdlOjpTbmFwc2hvdDo6Y2FuQmVSZXVzZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UERG
RG9jdW1lbnRJbWFnZTo6U25hcHNob3Q6Om1lbW9yeUNvc3QgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UERGRG9jdW1lbnRJbWFnZTo6U25hcHNob3Q6OnRyYW5zZmVyVmlld3BvcnQpOgorICAg
ICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFnZTo6U25hcHNob3Q6OmRyYXcpOgorICAgICAg
ICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFnZTo6U25hcHNob3RJbWFnZXM6OnJlbW92ZUFsbFVu
dXNlZEFib3ZlTGltaXQpOgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFnZTo6Y2Fj
aGVQYXJhbWV0ZXJzTWF0Y2ggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Y2Fj
aGVkSW1hZ2VSZWN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1h
Z2U6OnVwZGF0ZUNhY2hlZEltYWdlSWZOZWVkZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6UERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFnZTo6Y29tcHV0ZUJvdW5kc0ZvckN1cnJlbnRQYWdl
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3VtZW50SW1hZ2U6OnBhZ2VDb3Vu
dCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjphcHBseVJvdGF0aW9uRm9yUGFp
bnRpbmcpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFnZTo6ZHJh
d1BERlBhZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UERGRG9jdW1lbnRJbWFnZTo6
Y29udmVydFBvc3RTY3JpcHREYXRhVG9QREYpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jZy9QREZEb2N1bWVudEltYWdlQ0cuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlBERkRvY3VtZW50SW1hZ2U6OmNyZWF0ZVBERkRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlBERkRvY3VtZW50SW1hZ2U6OmNvbXB1dGVCb3VuZHNGb3JDdXJyZW50UGFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpQREZEb2N1bWVudEltYWdlOjpwYWdlQ291bnQgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6YXBwbHlSb3RhdGlvbkZvclBhaW50aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlBE
RkRvY3VtZW50SW1hZ2U6OmRyYXdQREZQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBERkRvY3Vt
ZW50SW1hZ2U6OmNvbnZlcnRQb3N0U2NyaXB0RGF0YVRvUERGKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmNhblJlY29yZERyYXdJbWFnZUJ1ZmZl
ciBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVjb3JkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRl
cjo6RGVsZWdhdGU6OmlzQ2FjaGVkSW1hZ2VCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6UERGRG9jdW1lbnRJbWFnZTo6Y29udmVydFBvc3RTY3JpcHREYXRhVG9QREYpOgorCiAyMDIw
LTExLTMwICBBbmRyZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgZG9BWEF0dHJpYnV0ZWRTdHJpbmdGb3JS
YW5nZV0gbmVlZHMgdG8gcnVuIG9uIHRoZSBtYWluIHRocmVhZC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYzBiZDVh
MDNlZTAxMTNkMGQ5ZjhjMGFlYTcwNDFiMTg4YjlhM2I0OC4uYzdmOWY5YmNiNGY5ZWY2MWM5ZWQw
NTU2NjZjMTJmNDI5ZmJlMDc1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMC0xMS0z
MCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFBy
b2Nlc3NdIFN1cHBvcnQgcmVuZGVyaW5nIFBERkRvY3VtZW50SW1hZ2UgaW4gR1BVIFByb2Nlc3MK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODg3MQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oOgorCiAyMDIwLTExLTMw
ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIHJldmVydGluZyByMjcwMjc1LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1BcHBsZVdpbi5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4uY21h
a2UKaW5kZXggMDE1MmU1N2Q3N2Q2YjIyYWQzY2RkMzBkYzQyZTYxODBmMTc0YThhOC4uYjFjNzk0
ZGQ5MWJiYjcwN2FjZTc2ZDVhYTc4MGUyMDEzYmZiNWU4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bUFwcGxlV2luLmNtYWtlCkBAIC0xNDYsNiArMTQ2LDcgQEAgZWxzZSAoKQogICAgICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbnRTaXplQ0cuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2NnL05hdGl2ZUltYWdlQ0cuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRv
Y3VtZW50SW1hZ2UuY3BwCisgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50
SW1hZ2VDRy5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0aENHLmNwcAogICAg
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCiAgICAgICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL1N1YmltYWdlQ2FjaGVXaXRoVGltZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29h
LnR4dAppbmRleCA2Njg3NTJjNzk1MjZiYzZjZDE0M2MyZWY2NTk2ZjE0YzdiMDczM2VkLi5hNTA1
MTk2NzVjMGUyNjYwNzJlMDQ0YjgxZDQ5ZTkzYmY4YmEwMTViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2Nv
YS50eHQKQEAgLTM0Miw2ICszNDIsNyBAQCBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbnRSZWN0Q0cu
Y3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbnRTaXplQ0cuY3BwCiBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9OYXRpdmVJbWFnZUNHLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJ
bWFnZS5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2VDRy5jcHAKIHBs
YXRmb3JtL2dyYXBoaWNzL2NnL1BhdGhDRy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRl
cm5DRy5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NnL1N1YmltYWdlQ2FjaGVXaXRoVGltZXIuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggOGEyMzk1MDdlYmJkODU5OTAyMjVmYmViMTg1MDUwMTA0ODg2MTEyZC4uZmViNTEwMWMz
ZjI0MzY0ODg5NjRkNDkyZTg1OWNmZjhiNzQ4NDA1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTAwNzgsNiArMTAwNzgsNyBA
QAogCQk3Mjk5QkM2NDIzRDY4NkE2MDBDQzY4ODMgLyogQWxwaGFQcmVtdWx0aXBsaWNhdGlvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBBbHBoYVByZW11bHRpcGxpY2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTcyOTlCQzY2MjNENjg2QzYwMENDNjg4MyAvKiBSZW5kZXJpbmdNb2Rl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlcmluZ01vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNzI5RDA1MkUyNTMxM0UyNjAwNDIyMDk4IC8qIFJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzJBNzEwN0MyNTc0NjJFMjAwNjg0RUJFIC8q
IFBERkRvY3VtZW50SW1hZ2VDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQREZEb2N1bWVudElt
YWdlQ0cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkFCOUExRjI1NUE5RUE2
MDBFNkVCRjEgLyogTmF0aXZlSW1hZ2VSZWZlcmVuY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmF0aXZl
SW1hZ2VSZWZlcmVuY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJCQUMzQTQy
M0UxNzMyNzAwOEQ3NDFDIC8qIEltYWdlQnVmZmVyQmFja2VuZC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZUJ1ZmZlckJhY2tlbmQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3MkJBQzNBNTIzRTE3MzI4MDA4RDc0MUMgLyogSW1hZ2VCdWZm
ZXJCYWNrZW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlQnVmZmVy
QmFja2VuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjYzNTEsNiArMjYzNTIs
NyBAQAogCQkJCUE4MEEzOEZEMEU1MENDODIwMEEyNUVCQyAvKiBQYXR0ZXJuQ0cuY3BwICovLAog
CQkJCUIyNzUzNTM2MEIwNTM4MTQwMDJDRTY0RiAvKiBQREZEb2N1bWVudEltYWdlLmNwcCAqLywK
IAkJCQlCMjc1MzUzNzBCMDUzODE0MDAyQ0U2NEYgLyogUERGRG9jdW1lbnRJbWFnZS5oICovLAor
CQkJCTcyQTcxMDdDMjU3NDYyRTIwMDY4NEVCRSAvKiBQREZEb2N1bWVudEltYWdlQ0cuY3BwICov
LAogCQkJCTFGQzQwRkI4MTY1NUM1OTEwMDQwRjI5RSAvKiBTdWJpbWFnZUNhY2hlV2l0aFRpbWVy
LmNwcCAqLywKIAkJCQkxRkM0MEZCNzE2NTVDNTkxMDA0MEYyOUUgLyogU3ViaW1hZ2VDYWNoZVdp
dGhUaW1lci5oICovLAogCQkJCUIyNzUzNTJBMEIwNTM4MTQwMDJDRTY0RiAvKiBUcmFuc2Zvcm1h
dGlvbk1hdHJpeENHLmNwcCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCmluZGV4IDVjYWNhODU0NTJjMWE2OThiOTVlNGRm
NDQwMDg1OGM5NjM0NWVjZTUuLjIxMmE4Njg0MjVlZWZiZjllMTdlMWM0NmUyZmI3ODc4OGRkZjVh
YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmNwcApAQCAtODAzLDcgKzgwMyw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpk
cmF3SW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3Rp
CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYg
KG1faW1wbCkgeworICAgIGlmIChtX2ltcGwgJiYgbV9pbXBsLT5jYW5SZWNvcmREcmF3SW1hZ2VC
dWZmZXIoaW1hZ2UpKSB7CiAgICAgICAgIG1faW1wbC0+ZHJhd0ltYWdlQnVmZmVyKGltYWdlLCBk
ZXN0aW5hdGlvbiwgc291cmNlLCBvcHRpb25zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dEltcGwuaAppbmRleCA1YzgyNWY3ZDQxYjk4NjE2ZDE3ZmRiOGViZTdjZmZkN2QyYmZjYzhjLi5m
NTJiNjZjM2EzNDk2ZjAxNTljN2I2YTM3YzAyZThiMzZmNzVkYjA4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCkBA
IC0zOSw2ICszOSw3IEBAIHB1YmxpYzoKICAgICBHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29u
dGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fZ3JhcGhpY3NDb250ZXh0OyB9CiAKICAgICB2aXJ0dWFs
IGJvb2wgaGFzUGxhdGZvcm1Db250ZXh0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBj
YW5SZWNvcmREcmF3SW1hZ2VCdWZmZXIoY29uc3QgSW1hZ2VCdWZmZXImKSBjb25zdCB7IHJldHVy
biB0cnVlOyB9CiAgICAgdmlydHVhbCBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCogcGxhdGZvcm1D
b250ZXh0KCkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVN0YXRlKGNvbnN0
IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdl
RmxhZ3MpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmNwcAppbmRleCBmMjE4
ZjI3ZjJmNTNjNWE0YWRiYjZhNWFlZGMzYzQ5ZTQ4Y2Q2M2E0Li44OGZiNGRhNTQ2ZWJkMzUyZmQ0
ZjY1NjdkYjc0ZDcwYTRiNjdjYjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQu
Y3BwCkBAIC03NSw5ICs3NSw5IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFw
QmFja2VuZD4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShjCiAKIHN0ZDo6dW5p
cXVlX3B0cjxJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZD4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJh
Y2tlbmQ6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHNpemUsIGNvbnN0IEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCkKIHsKLSAgICBpZiAoYXV0byBjZ0NvbG9yU3BhY2UgPSBjb250ZXh0Q29sb3JT
cGFjZShjb250ZXh0KSkKKyAgICBpZiAoYXV0byBjZ0NvbG9yU3BhY2UgPSBjb250ZXh0Lmhhc1Bs
YXRmb3JtQ29udGV4dCgpID8gY29udGV4dENvbG9yU3BhY2UoY29udGV4dCkgOiBudWxscHRyKQog
ICAgICAgICByZXR1cm4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQ6OmNyZWF0ZShzaXplLCAx
LCBDb2xvclNwYWNlOjpTUkdCLCBjZ0NvbG9yU3BhY2UuZ2V0KCksIFBpeGVsRm9ybWF0OjpCR1JB
OCwgbnVsbHB0cik7Ci0gICAgCisKICAgICByZXR1cm4gSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tl
bmQ6OmNyZWF0ZShzaXplLCAxLCBDb2xvclNwYWNlOjpTUkdCLCBQaXhlbEZvcm1hdDo6QkdSQTgs
IG51bGxwdHIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcAppbmRl
eCBhZDNmZjFkNzk3NzIwMzc2NDBlMmQ2OTk1NDEyODg2MGI3NzQ4YzM2Li5iZTM0MGU4NTIzYjRh
ZDM0YTA5YTU5MGUzODRiMWI4YzhlNmNhNGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNl
QmFja2VuZC5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVy
SU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUKIAog
c3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZD4gSW1hZ2VCdWZmZXJJ
T1N1cmZhY2VCYWNrZW5kOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplLCBjb25zdCBHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAgaWYgKGF1dG8gY2dDb2xvclNwYWNlID0gY29u
dGV4dENvbG9yU3BhY2UoY29udGV4dCkpCisgICAgaWYgKGF1dG8gY2dDb2xvclNwYWNlID0gY29u
dGV4dC5oYXNQbGF0Zm9ybUNvbnRleHQoKSA/IGNvbnRleHRDb2xvclNwYWNlKGNvbnRleHQpIDog
bnVsbHB0cikKICAgICAgICAgcmV0dXJuIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y3Jl
YXRlKHNpemUsIDEsIENvbG9yU3BhY2U6OlNSR0IsIGNnQ29sb3JTcGFjZS5nZXQoKSwgUGl4ZWxG
b3JtYXQ6OkJHUkE4LCBudWxscHRyKTsKICAgICAKICAgICByZXR1cm4gSW1hZ2VCdWZmZXJJT1N1
cmZhY2VCYWNrZW5kOjpjcmVhdGUoc2l6ZSwgMSwgQ29sb3JTcGFjZTo6U1JHQiwgUGl4ZWxGb3Jt
YXQ6OkJHUkE4LCBudWxscHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKaW5kZXggZGM0OTg1ZjljNTlhYWFj
ZDNkZjViNWRjNTZiOWQ4OTA4NDgxYmY5Yi4uMjViY2JhZGNkOGYwNjM4MzA2ZGJjMzk4ZDViYjU4
OTQ1MzFjNWU2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDEzIEFwcGxlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAyMCBBcHBsZSBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCwzMSAr
MjgsMTIgQEAKIAogI2lmIFVTRShDRykKIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0jaW5j
bHVkZSA8Q29yZUdyYXBoaWNzL0NvcmVHcmFwaGljcy5oPgotI2luY2x1ZGUgPEltYWdlSU8vSW1h
Z2VJTy5oPgotI2VuZGlmCi0KICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRl
ICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIkltYWdlT2JzZXJ2ZXIuaCIKLSNpbmNsdWRlICJJ
bnRSZWN0LmgiCiAjaW5jbHVkZSAiTGVuZ3RoLmgiCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQu
aCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKLSNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dD
b250ZXh0Lmg+Ci0jaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NHUERGRG9jdW1lbnQuaD4KLSNpbmNs
dWRlIDxwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oPgotI2luY2x1ZGUgPHd0Zi9NYXRoRXh0
cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL1JBTVNpemUuaD4KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRy
Lmg+Ci0jaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1Rl
eHRTdHJlYW0uaD4KIAotI2lmICFQTEFURk9STShDT0NPQSkKLSNpbmNsdWRlICJJbWFnZVNvdXJj
ZUNHLmgiCi0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQREZEb2N1bWVudEltYWdl
OjpQREZEb2N1bWVudEltYWdlKEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQpAQCAtODMsMTIgKzY0
LDE4IEBAIHZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMo
TGVuZ3RoJiBpbnRyaW5zaWNXaWR0aCwgTGVuZ3RoCiAgICAgaW50cmluc2ljUmF0aW8gPSBGbG9h
dFNpemUoKTsKIH0KIAordm9pZCBQREZEb2N1bWVudEltYWdlOjpkZWNvZGVkU2l6ZUNoYW5nZWQo
c2l6ZV90IG9sZFNpemUsIHNpemVfdCBuZXdTaXplKQoreworICAgIGlmICghaW1hZ2VPYnNlcnZl
cigpIHx8IG9sZFNpemUgPT0gbmV3U2l6ZSkKKyAgICAgICAgcmV0dXJuOworICAgIGltYWdlT2Jz
ZXJ2ZXIoKS0+ZGVjb2RlZFNpemVDaGFuZ2VkKCp0aGlzLCAtc3RhdGljX2Nhc3Q8bG9uZyBsb25n
PihvbGRTaXplKSArIG5ld1NpemUpOworfQorCiBFbmNvZGVkRGF0YVN0YXR1cyBQREZEb2N1bWVu
dEltYWdlOjpkYXRhQ2hhbmdlZChib29sIGFsbERhdGFSZWNlaXZlZCkKIHsKICAgICBBU1NFUlQo
IW1fZG9jdW1lbnQpOwogICAgIGlmIChhbGxEYXRhUmVjZWl2ZWQgJiYgIW1fZG9jdW1lbnQpIHsK
ICAgICAgICAgY3JlYXRlUERGRG9jdW1lbnQoKTsKLQogICAgICAgICBpZiAocGFnZUNvdW50KCkp
IHsKICAgICAgICAgICAgIG1faGFzUGFnZSA9IHRydWU7CiAgICAgICAgICAgICBjb21wdXRlQm91
bmRzRm9yQ3VycmVudFBhZ2UoKTsKQEAgLTEwNiwzNyArOTMsNiBAQCB2b2lkIFBERkRvY3VtZW50
SW1hZ2U6OnNldFBkZkltYWdlQ2FjaGluZ1BvbGljeShQREZJbWFnZUNhY2hpbmdQb2xpY3kgcGRm
SW1hZ2VDYQogICAgIGRlc3Ryb3lEZWNvZGVkRGF0YSgpOwogfQogCi1ib29sIFBERkRvY3VtZW50
SW1hZ2U6OmNhY2hlUGFyYW1ldGVyc01hdGNoKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QpIGNvbnN0Ci17
Ci0gICAgLy8gT2xkIGFuZCBuZXcgc291cmNlIHJlY3RhbmdsZXMgaGF2ZSB0byBtYXRjaC4KLSAg
ICBpZiAoc3JjUmVjdCAhPSBtX2NhY2hlZFNvdXJjZVJlY3QpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIC8vIE9sZCBhbmQgbmV3IHNjYWxpbmcgZmFjdG9ycyAiZGVzdCAvIHNyYyIgaGF2
ZSB0byBtYXRjaC4KLSAgICBpZiAoZHN0UmVjdC5zaXplKCkgIT0gbV9jYWNoZWREZXN0aW5hdGlv
blJlY3Quc2l6ZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBtX2NhY2hlZElt
YWdlUmVjdCBjYW4gYmUgbW92ZWQgaWYgc3JjUmVjdCBhbmQgZHN0UmVjdC5zaXplKCkgZGlkIG5v
dCBjaGFuZ2UuCi0gICAgRmxvYXRSZWN0IG1vdmVkQ2FjaGVkSW1hZ2VSZWN0ID0gbV9jYWNoZWRJ
bWFnZVJlY3Q7Ci0gICAgbW92ZWRDYWNoZWRJbWFnZVJlY3QubW92ZShGbG9hdFNpemUoZHN0UmVj
dC5sb2NhdGlvbigpIC0gbV9jYWNoZWREZXN0aW5hdGlvblJlY3QubG9jYXRpb24oKSkpOwotCi0g
ICAgLy8gbW92ZWRDYWNoZWRJbWFnZVJlY3QgaGFzIHRvIGNvbnRhaW4gdGhlIHdob2xlIGRpcnR5
IHJlY3RhbmdsZS4KLSAgICBGbG9hdFJlY3QgZGlydHlSZWN0ID0gaW50ZXJzZWN0aW9uKGNvbnRl
eHQuY2xpcEJvdW5kcygpLCBkc3RSZWN0KTsKLSAgICBpZiAoIW1vdmVkQ2FjaGVkSW1hZ2VSZWN0
LmNvbnRhaW5zKGRpcnR5UmVjdCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIE9s
ZCBhbmQgbmV3IGNvbnRleHQgc2NhbGluZyBmYWN0b3JzIGhhdmUgdG8gbWF0Y2ggYXMgd2VsbC4K
LSAgICBBZmZpbmVUcmFuc2Zvcm06OkRlY29tcG9zZWRUeXBlIGRlY29tcG9zZWRUcmFuc2Zvcm07
Ci0gICAgY29udGV4dC5nZXRDVE0oR3JhcGhpY3NDb250ZXh0OjpEZWZpbml0ZWx5SW5jbHVkZURl
dmljZVNjYWxlKS5kZWNvbXBvc2UoZGVjb21wb3NlZFRyYW5zZm9ybSk7Ci0KLSAgICBBZmZpbmVU
cmFuc2Zvcm06OkRlY29tcG9zZWRUeXBlIGNhY2hlZERlY29tcG9zZWRUcmFuc2Zvcm07Ci0gICAg
bV9jYWNoZWRUcmFuc2Zvcm0uZGVjb21wb3NlKGNhY2hlZERlY29tcG9zZWRUcmFuc2Zvcm0pOwot
ICAgIGlmIChkZWNvbXBvc2VkVHJhbnNmb3JtLnNjYWxlWCAhPSBjYWNoZWREZWNvbXBvc2VkVHJh
bnNmb3JtLnNjYWxlWCB8fCBkZWNvbXBvc2VkVHJhbnNmb3JtLnNjYWxlWSAhPSBjYWNoZWREZWNv
bXBvc2VkVHJhbnNmb3JtLnNjYWxlWSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0
dXJuIHRydWU7Ci19Ci0KIHN0YXRpYyB2b2lkIHRyYW5zZm9ybUNvbnRleHRGb3JQYWludGluZyhH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0KQogewogICAgIGZsb2F0IGhTY2FsZSA9IGRzdFJlY3Qud2lkdGgo
KSAvIHNyY1JlY3Qud2lkdGgoKTsKQEAgLTE2MywxMjQgKzExOSw5OCBAQCBzdGF0aWMgdm9pZCB0
cmFuc2Zvcm1Db250ZXh0Rm9yUGFpbnRpbmcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBGbG9hdFJlYwogICAgIGNvbnRleHQudHJhbnNsYXRlKDAsIC1zcmNSZWN0LmhlaWdodCgpKTsK
IH0KIAotLy8gVG8gYXZvaWQgdGhlIGpldHNhbSBvbiBpT1MsIHdlIGFyZSBnb2luZyB0byBsaW1p
dCB0aGUgc2l6ZSBvZiBhbGwgdGhlIFBERiBjYWNoZWRJbWFnZXMgdG8gYmUgNjRNQi4KLXN0YXRp
YyBjb25zdCBzaXplX3Qgc19tYXhDYWNoZWRJbWFnZVNpZGUgPSA0ICogMTAyNDsKLXN0YXRpYyBj
b25zdCBzaXplX3Qgc19tYXhDYWNoZWRJbWFnZUFyZWEgPSBzX21heENhY2hlZEltYWdlU2lkZSAq
IHNfbWF4Q2FjaGVkSW1hZ2VTaWRlOwotCi1zdGF0aWMgY29uc3Qgc2l6ZV90IHNfbWF4RGVjb2Rl
ZERhdGFTaXplID0gc19tYXhDYWNoZWRJbWFnZUFyZWEgKiA0Owotc3RhdGljIHNpemVfdCBzX2Fs
bERlY29kZWREYXRhU2l6ZSA9IDA7CitQREZEb2N1bWVudEltYWdlOjpTbmFwc2hvdEltYWdlcyYg
UERGRG9jdW1lbnRJbWFnZTo6c25hcHNob3RJbWFnZXMoKQoreworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxTbmFwc2hvdEltYWdlcz4gc25hcHNob3RJbWFnZXM7CisgICAgcmV0dXJuIHNuYXBz
aG90SW1hZ2VzOworfQogCi1zdGF0aWMgRmxvYXRSZWN0IGNhY2hlZEltYWdlUmVjdChHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCkKK0Zsb2F0UmVjdCBQ
REZEb2N1bWVudEltYWdlOjpjYWxjdWxhdGVTbmFwc2hvdFJlY3QoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0KQogewogICAgIEZsb2F0UmVjdCBkaXJ0
eVJlY3QgPSBjb250ZXh0LmNsaXBCb3VuZHMoKTsKIAogICAgIC8vIENhbGN1bGF0ZSB0aGUgbWF4
aW11bSByZWN0YW5nbGUgd2UgY2FuIGNhY2hlIGFyb3VuZCB0aGUgY2VudGVyIG9mIHRoZSBjbGlw
cGluZyBib3VuZHMuCi0gICAgRmxvYXRTaXplIG1heFNpemUgPSBzX21heENhY2hlZEltYWdlU2lk
ZSAvIGNvbnRleHQuc2NhbGVGYWN0b3IoKTsKKyAgICBGbG9hdFNpemUgbWF4U2l6ZSA9IG1heFNu
YXBzaG90U2lkZSAvIGNvbnRleHQuc2NhbGVGYWN0b3IoKTsKICAgICBGbG9hdFBvaW50IG1pbkxv
Y2F0aW9uID0gRmxvYXRQb2ludChkaXJ0eVJlY3QuY2VudGVyKCkgLSBtYXhTaXplIC8gMik7CiAK
ICAgICAvLyBFbnN1cmUgdGhlIGNsaXBwaW5nIGJvdW5kcyBhcmUgYWxsIGluY2x1ZGVkIGJ1dCB3
aXRoaW4gdGhlIGJvdW5kcyBvZiB0aGUgZHN0UmVjdAotICAgIHJldHVybiBpbnRlcnNlY3Rpb24o
dW5pb25SZWN0KGRpcnR5UmVjdCwgRmxvYXRSZWN0KG1pbkxvY2F0aW9uLCBtYXhTaXplKSksIGRz
dFJlY3QpOwotfQotCi12b2lkIFBERkRvY3VtZW50SW1hZ2U6OmRlY29kZWRTaXplQ2hhbmdlZChz
aXplX3QgbmV3Q2FjaGVkQnl0ZXMpCi17Ci0gICAgaWYgKCFtX2NhY2hlZEJ5dGVzICYmICFuZXdD
YWNoZWRCeXRlcykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkK
LSAgICAgICAgaW1hZ2VPYnNlcnZlcigpLT5kZWNvZGVkU2l6ZUNoYW5nZWQoKnRoaXMsIC1zdGF0
aWNfY2FzdDxsb25nIGxvbmc+KG1fY2FjaGVkQnl0ZXMpICsgbmV3Q2FjaGVkQnl0ZXMpOwotCi0g
ICAgQVNTRVJUKHNfYWxsRGVjb2RlZERhdGFTaXplID49IG1fY2FjaGVkQnl0ZXMpOwotICAgIC8v
IFVwZGF0ZSB3aXRoIHRoZSBkaWZmZXJlbmNlIGluIHR3byBzdGVwcyB0byBhdm9pZCB1bnNpZ25l
ZCB1bmRlcmZsb3cgc3VidHJhY3Rpb24uCi0gICAgc19hbGxEZWNvZGVkRGF0YVNpemUgLT0gbV9j
YWNoZWRCeXRlczsKLSAgICBzX2FsbERlY29kZWREYXRhU2l6ZSArPSBuZXdDYWNoZWRCeXRlczsK
LQotICAgIG1fY2FjaGVkQnl0ZXMgPSBuZXdDYWNoZWRCeXRlczsKKyAgICByZXR1cm4gaW50ZXJz
ZWN0aW9uKHVuaW9uUmVjdChkaXJ0eVJlY3QsIEZsb2F0UmVjdChtaW5Mb2NhdGlvbiwgbWF4U2l6
ZSkpLCBkZXN0UmVjdCk7CiB9CiAKLXZvaWQgUERGRG9jdW1lbnRJbWFnZTo6dXBkYXRlQ2FjaGVk
SW1hZ2VJZk5lZWRlZChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0KQordm9pZCBQREZEb2N1bWVudEltYWdl
Ojp1cGRhdGVTbmFwc2hvdElmTmVlZGVkKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0KQogewotICAgIC8v
IENsaXBwZWQgb3B0aW9uIGlzIGZvciB0ZXN0aW5nIG9ubHkuIEZvcmNlIHJlLWNhY2hpbmcgdGhl
IFBERiB3aXRoIGVhY2ggZHJhdy4KLSAgICBib29sIGZvcmNlVXBkYXRlQ2FjaGVkSW1hZ2UgPSBt
X3BkZkltYWdlQ2FjaGluZ1BvbGljeSA9PSBQREZJbWFnZUNhY2hpbmdQb2xpY3k6OkNsaXBCb3Vu
ZHNPbmx5IHx8ICFtX2NhY2hlZEltYWdlQnVmZmVyOwotICAgIGlmICghZm9yY2VVcGRhdGVDYWNo
ZWRJbWFnZSAmJiBjYWNoZVBhcmFtZXRlcnNNYXRjaChjb250ZXh0LCBkc3RSZWN0LCBzcmNSZWN0
KSkgeworICAgIC8vIENsaXBwZWQgb3B0aW9uIGlzIGZvciB0ZXN0aW5nIG9ubHkgYW5kIGl0IHJl
cXVpcmVzIHRoZSBQREYgdG8gYmUgcmUtY2FjaGVkIHdpdGggZWFjaCBkcmF3LgorICAgIGJvb2wg
Zm9yY2VVcGRhdGVTbmFwc2hvdCA9IG1fcGRmSW1hZ2VDYWNoaW5nUG9saWN5ID09IFBERkltYWdl
Q2FjaGluZ1BvbGljeTo6Q2xpcEJvdW5kc09ubHk7CisgICAgaWYgKCFmb3JjZVVwZGF0ZVNuYXBz
aG90ICYmIG1fc25hcHNob3QpIHsKICAgICAgICAgLy8gQWRqdXN0IHRoZSB2aWV3LXBvcnQgcmVj
dGFuZ2xlcyBpZiBubyByZS1jYWNoaW5nIHdpbGwgaGFwcGVuLgotICAgICAgICBtX2NhY2hlZElt
YWdlUmVjdC5tb3ZlKEZsb2F0U2l6ZShkc3RSZWN0LmxvY2F0aW9uKCkgLSBtX2NhY2hlZERlc3Rp
bmF0aW9uUmVjdC5sb2NhdGlvbigpKSk7Ci0gICAgICAgIG1fY2FjaGVkRGVzdGluYXRpb25SZWN0
ID0gZHN0UmVjdDsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAobV9zbmFwc2hvdC0+dHJh
bnNmZXJWaWV3cG9ydChjb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCkpIHsKKyAgICAgICAgICAg
IHNuYXBzaG90SW1hZ2VzKCkubWFya1VzZWQodGhpcyk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KICAgICB9CiAKKyAgICBkZXN0cm95RGVjb2RlZERhdGEoKTsKKworICAgIEZsb2F0
UmVjdCBzbmFwc2hvdFJlY3Q7CiAgICAgc3dpdGNoIChtX3BkZkltYWdlQ2FjaGluZ1BvbGljeSkg
ewogICAgIGNhc2UgUERGSW1hZ2VDYWNoaW5nUG9saWN5OjpEaXNhYmxlZDoKLSAgICAgICAgcmV0
dXJuOwogICAgIGNhc2UgUERGSW1hZ2VDYWNoaW5nUG9saWN5OjpCZWxvd01lbW9yeUxpbWl0Ogog
ICAgICAgICAvLyBLZWVwIHRoZSBtZW1vcnkgdXNlZCBieSB0aGUgY2FjaGVkIGltYWdlIGJlbG93
IHNvbWUgdGhyZXNob2xkLCBvdGhlcndpc2UgV2ViS2l0IHByb2Nlc3MKICAgICAgICAgLy8gd2ls
bCBqZXRzYW0gaWYgaXQgZXhjZWVkcyBpdHMgbWVtb3J5IGxpbWl0LiBPbmx5IGEgcmVjdGFuZ2xl
IGZyb20gdGhlIFBERiBtYXkgYmUgY2FjaGVkLgotICAgICAgICBtX2NhY2hlZEltYWdlUmVjdCA9
IGNhY2hlZEltYWdlUmVjdChjb250ZXh0LCBkc3RSZWN0KTsKKyAgICAgICAgc25hcHNob3RSZWN0
ID0gY2FsY3VsYXRlU25hcHNob3RSZWN0KGNvbnRleHQsIGRlc3RSZWN0KTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBQREZJbWFnZUNhY2hpbmdQb2xpY3k6OkNsaXBCb3VuZHNPbmx5OgotICAg
ICAgICBtX2NhY2hlZEltYWdlUmVjdCA9IGludGVyc2VjdGlvbihjb250ZXh0LmNsaXBCb3VuZHMo
KSwgZHN0UmVjdCk7CisgICAgICAgIHNuYXBzaG90UmVjdCA9IGludGVyc2VjdGlvbihjb250ZXh0
LmNsaXBCb3VuZHMoKSwgZGVzdFJlY3QpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFBERklt
YWdlQ2FjaGluZ1BvbGljeTo6RW5hYmxlZDoKLSAgICAgICAgbV9jYWNoZWRJbWFnZVJlY3QgPSBk
c3RSZWN0OworICAgICAgICBzbmFwc2hvdFJlY3QgPSBkZXN0UmVjdDsKICAgICAgICAgYnJlYWs7
CiAgICAgfQogCi0gICAgRmxvYXRTaXplIGNhY2hlZEltYWdlU2l6ZSA9IEZsb2F0UmVjdChlbmNs
b3NpbmdJbnRSZWN0KG1fY2FjaGVkSW1hZ2VSZWN0KSkuc2l6ZSgpOworICAgIEZsb2F0U2l6ZSBz
bmFwc2hvdFNpemUgPSBGbG9hdFJlY3QoZW5jbG9zaW5nSW50UmVjdChzbmFwc2hvdFJlY3QpKS5z
aXplKCk7CiAKLSAgICAvLyBDYWNoZSB0aGUgUERGIGltYWdlIG9ubHkgaWYgdGhlIHNpemUgb2Yg
dGhlIG5ldyBpbWFnZSB3b24ndCBleGNlZWQgdGhlIGNhY2hlIHRocmVzaG9sZC4KLSAgICBpZiAo
bV9wZGZJbWFnZUNhY2hpbmdQb2xpY3kgPT0gUERGSW1hZ2VDYWNoaW5nUG9saWN5OjpCZWxvd01l
bW9yeUxpbWl0KSB7Ci0gICAgICAgIEludFNpemUgc2NhbGVkU2l6ZSA9IEltYWdlQnVmZmVyOjpj
b21wYXRpYmxlQnVmZmVyU2l6ZShjYWNoZWRJbWFnZVNpemUsIGNvbnRleHQpOwotICAgICAgICBp
ZiAoc19hbGxEZWNvZGVkRGF0YVNpemUgKyBzY2FsZWRTaXplLnVuY2xhbXBlZEFyZWEoKSAqIDQg
LSBtX2NhY2hlZEJ5dGVzID4gc19tYXhEZWNvZGVkRGF0YVNpemUpIHsKLSAgICAgICAgICAgIGRl
c3Ryb3lEZWNvZGVkRGF0YSgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAg
fQorICAgIC8vIENhY2hlIHRoZSBQREYgaW1hZ2UgYnV0IGVuc3VyZSB0aGUgc2l6ZSBvZiB0aGUg
bmV3IGltYWdlIHdvbid0IGV4Y2VlZCB0aGUgY2FjaGUgdGhyZXNob2xkLgorICAgIGlmIChtX3Bk
ZkltYWdlQ2FjaGluZ1BvbGljeSA9PSBQREZJbWFnZUNhY2hpbmdQb2xpY3k6OkJlbG93TWVtb3J5
TGltaXQpCisgICAgICAgIHNuYXBzaG90SW1hZ2VzKCkucmVtb3ZlQWxsVW51c2VkQWJvdmVMaW1p
dChjb250ZXh0LCBzbmFwc2hvdFNpemUpOwogCi0gICAgbV9jYWNoZWRJbWFnZUJ1ZmZlciA9IElt
YWdlQnVmZmVyOjpjcmVhdGVDb21wYXRpYmxlQnVmZmVyKGNhY2hlZEltYWdlU2l6ZSwgY29udGV4
dCk7Ci0gICAgaWYgKCFtX2NhY2hlZEltYWdlQnVmZmVyKSB7Ci0gICAgICAgIGRlc3Ryb3lEZWNv
ZGVkRGF0YSgpOworICAgIGF1dG8gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29t
cGF0aWJsZUJ1ZmZlcihzbmFwc2hvdFNpemUsIGNvbnRleHQpOworICAgIGlmICghaW1hZ2VCdWZm
ZXIpCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKLSAgICBhdXRvJiBidWZmZXJDb250ZXh0ID0g
bV9jYWNoZWRJbWFnZUJ1ZmZlci0+Y29udGV4dCgpOwotICAgIC8vIFdlIG5lZWQgdG8gdHJhbnNm
b3JtIHRoZSBjb29yZGluYXRlIHN5c3RlbSBzdWNoIHRoYXQgdG9wLWxlZnQgb2YgbV9jYWNoZWRJ
bWFnZVJlY3Qgd2lsbCBiZSBtYXBwZWQgdG8gdGhlCi0gICAgLy8gdG9wLWxlZnQgb2YgZHN0UmVj
dC4gQWx0aG91Z2ggb25seSBtX2NhY2hlZEltYWdlUmVjdC5zaXplKCkgb2YgdGhlIGltYWdlIGNv
cGllZCwgdGhlIHNpemVzIG9mIHNyY1JlY3QKLSAgICAvLyBhbmQgZHN0UmVjdCBzaG91bGQgYmUg
cGFzc2VkIHRvIHRoaXMgZnVuY3Rpb24gYmVjYXVzZSB0aGV5IGFyZSB1c2VkIHRvIGNhbGN1bGF0
ZSB0aGUgaW1hZ2Ugc2NhbGluZy4KLSAgICB0cmFuc2Zvcm1Db250ZXh0Rm9yUGFpbnRpbmcoYnVm
ZmVyQ29udGV4dCwgZHN0UmVjdCwgRmxvYXRSZWN0KG1fY2FjaGVkSW1hZ2VSZWN0LmxvY2F0aW9u
KCksIHNyY1JlY3Quc2l6ZSgpKSk7CisgICAgYXV0byYgYnVmZmVyQ29udGV4dCA9IGltYWdlQnVm
ZmVyLT5jb250ZXh0KCk7CisKKyAgICAvLyBXZSBuZWVkIHRvIHRyYW5zZm9ybSB0aGUgY29vcmRp
bmF0ZSBzeXN0ZW0gc3VjaCB0aGF0IHRvcC1sZWZ0IG9mIGFkanVzdGVkRGVzdFJlY3Qgd2lsbCBi
ZSBtYXBwZWQgdG8gdGhlCisgICAgLy8gdG9wLWxlZnQgb2YgZGVzdFJlY3QuIEFsdGhvdWdoIG9u
bHkgaW1hZ2VCdWZmZXJSZWN0LnNpemUoKSBvZiB0aGUgaW1hZ2UgY29waWVkLCB0aGUgc2l6ZXMg
b2Ygc3JjUmVjdAorICAgIC8vIGFuZCBkZXN0UmVjdCBzaG91bGQgYmUgcGFzc2VkIHRvIHRoaXMg
ZnVuY3Rpb24gYmVjYXVzZSB0aGV5IGFyZSB1c2VkIHRvIGNhbGN1bGF0ZSB0aGUgaW1hZ2Ugc2Nh
bGluZy4KKyAgICB0cmFuc2Zvcm1Db250ZXh0Rm9yUGFpbnRpbmcoYnVmZmVyQ29udGV4dCwgZGVz
dFJlY3QsIEZsb2F0UmVjdChzbmFwc2hvdFJlY3QubG9jYXRpb24oKSwgc3JjUmVjdC5zaXplKCkp
KTsKICAgICBkcmF3UERGUGFnZShidWZmZXJDb250ZXh0KTsKIAotICAgIG1fY2FjaGVkVHJhbnNm
b3JtID0gY29udGV4dC5nZXRDVE0oR3JhcGhpY3NDb250ZXh0OjpEZWZpbml0ZWx5SW5jbHVkZURl
dmljZVNjYWxlKTsKLSAgICBtX2NhY2hlZERlc3RpbmF0aW9uUmVjdCA9IGRzdFJlY3Q7Ci0gICAg
bV9jYWNoZWRTb3VyY2VSZWN0ID0gc3JjUmVjdDsKKyAgICBhdXRvIHRyYW5zZm9ybSA9IGNvbnRl
eHQuZ2V0Q1RNKEdyYXBoaWNzQ29udGV4dDo6RGVmaW5pdGVseUluY2x1ZGVEZXZpY2VTY2FsZSk7
CisgICAgbV9zbmFwc2hvdCA9IFNuYXBzaG90OjpjcmVhdGUobWFrZVJlZigqaW1hZ2VCdWZmZXIp
LCBzbmFwc2hvdFJlY3QsIGRlc3RSZWN0LCBzcmNSZWN0LCB0cmFuc2Zvcm0pOworCisgICAgQVNT
RVJUKG1fc25hcHNob3QpOwogICAgICsrbV9jYWNoaW5nQ291bnRGb3JUZXN0aW5nOwogCi0gICAg
SW50U2l6ZSBiYWNrZW5kU2l6ZSA9IG1fY2FjaGVkSW1hZ2VCdWZmZXItPmJhY2tlbmRTaXplKCk7
Ci0gICAgZGVjb2RlZFNpemVDaGFuZ2VkKGJhY2tlbmRTaXplLnVuY2xhbXBlZEFyZWEoKSAqIDQp
OworICAgIC8vIFVwZGF0ZSB0aGUgb2JzZXJ2ZXIgd2l0aCB0aGUgbmV3IGFsbG9jYXRpb24uCisg
ICAgZGVjb2RlZFNpemVDaGFuZ2VkKDAsIG1fc25hcHNob3QtPm1lbW9yeUNvc3QoKSk7CisgICAg
c25hcHNob3RJbWFnZXMoKS5hcHBlbmQodGhpcyk7CiB9CiAKLUltYWdlRHJhd1Jlc3VsdCBQREZE
b2N1bWVudEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRS
ZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiBvcHRpb25zKQorSW1hZ2VEcmF3UmVzdWx0IFBERkRvY3VtZW50SW1hZ2U6OmRy
YXcoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRp
b25zKQogewogICAgIGlmICghbV9kb2N1bWVudCB8fCAhbV9oYXNQYWdlKQogICAgICAgICByZXR1
cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWROb3RoaW5nOwogCi0gICAgdXBkYXRlQ2FjaGVkSW1hZ2VJ
Zk5lZWRlZChjb250ZXh0LCBkc3RSZWN0LCBzcmNSZWN0KTsKKyAgICB1cGRhdGVTbmFwc2hvdElm
TmVlZGVkKGNvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0KTsKKyAgICBpZiAoIW1fc25hcHNob3Qp
CisgICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7CiAKLSAgICB7Ci0g
ICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250ZXh0KTsKLSAg
ICAgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24ob3B0aW9ucy5jb21wb3NpdGVPcGVy
YXRvcigpKTsKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29udGV4
dCk7CisgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24ob3B0aW9ucy5jb21wb3NpdGVP
cGVyYXRvcigpKTsKIAotICAgICAgICBpZiAobV9jYWNoZWRJbWFnZUJ1ZmZlcikgewotICAgICAg
ICAgICAgLy8gRHJhdyB0aGUgSW1hZ2VCdWZmZXIgJ21fY2FjaGVkSW1hZ2VCdWZmZXInIHRvIHRo
ZSByZWN0YW5nbGUgJ21fY2FjaGVkSW1hZ2VSZWN0JwotICAgICAgICAgICAgLy8gb24gdGhlIGRl
c3RpbmF0aW9uIGNvbnRleHQuIFNpbmNlIHRoZSBwaXhlbHMgb2YgdGhlIHJlY3RhbmdsZSAnbV9j
YWNoZWRJbWFnZVJlY3QnCi0gICAgICAgICAgICAvLyBvZiB0aGUgc291cmNlIFBERiB3YXMgY29w
aWVkIHRvICdtX2NhY2hlZEltYWdlQnVmZmVyJywgdGhlIHNpemVzIG9mIHRoZSBzb3VyY2UKLSAg
ICAgICAgICAgIC8vIGFuZCB0aGUgZGVzdGluYXRpb24gcmVjdGFuZ2xlcyB3aWxsIGJlIGVxdWFs
IGFuZCBubyBzY2FsaW5nIHdpbGwgYmUgbmVlZGVkIGhlcmUuCi0gICAgICAgICAgICBjb250ZXh0
LmRyYXdJbWFnZUJ1ZmZlcigqbV9jYWNoZWRJbWFnZUJ1ZmZlciwgbV9jYWNoZWRJbWFnZVJlY3Qp
OwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgdHJhbnNmb3JtQ29udGV4
dEZvclBhaW50aW5nKGNvbnRleHQsIGRzdFJlY3QsIHNyY1JlY3QpOwotICAgICAgICAgICAgZHJh
d1BERlBhZ2UoY29udGV4dCk7Ci0gICAgICAgIH0KLSAgICB9CisgICAgbV9zbmFwc2hvdC0+ZHJh
dyhjb250ZXh0KTsKKyAgICBpZiAobV9wZGZJbWFnZUNhY2hpbmdQb2xpY3kgPT0gUERGSW1hZ2VD
YWNoaW5nUG9saWN5OjpEaXNhYmxlZCkKKyAgICAgICAgZGVzdHJveURlY29kZWREYXRhKCk7CiAK
ICAgICBpZiAoaW1hZ2VPYnNlcnZlcigpKQogICAgICAgICBpbWFnZU9ic2VydmVyKCktPmRpZERy
YXcoKnRoaXMpOwpAQCAtMjkwLDEwMCArMjIwLDExNiBAQCBJbWFnZURyYXdSZXN1bHQgUERGRG9j
dW1lbnRJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVj
dAogCiB2b2lkIFBERkRvY3VtZW50SW1hZ2U6OmRlc3Ryb3lEZWNvZGVkRGF0YShib29sKQogewot
ICAgIG1fY2FjaGVkSW1hZ2VCdWZmZXIgPSBudWxscHRyOwotICAgIG1fY2FjaGVkSW1hZ2VSZWN0
ID0gRmxvYXRSZWN0KCk7Ci0gICAgZGVjb2RlZFNpemVDaGFuZ2VkKDApOwotfQorICAgIGlmICgh
bV9zbmFwc2hvdCkKKyAgICAgICAgcmV0dXJuOwogCi0jaWYgIVVTRShQREZLSVRfRk9SX1BERkRP
Q1VNRU5USU1BR0UpCisgICAgc3RkOjp1bmlxdWVfcHRyPFNuYXBzaG90PiBzbmFwc2hvdDsKKyAg
ICBzbmFwc2hvdC5zd2FwKG1fc25hcHNob3QpOworICAgIGRlY29kZWRTaXplQ2hhbmdlZChzbmFw
c2hvdC0+bWVtb3J5Q29zdCgpLCAwKTsKIAotdm9pZCBQREZEb2N1bWVudEltYWdlOjpjcmVhdGVQ
REZEb2N1bWVudCgpCi17Ci0gICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJv
dmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YShkYXRhKCktPmNy
ZWF0ZUNGRGF0YSgpLmdldCgpKSk7Ci0gICAgbV9kb2N1bWVudCA9IGFkb3B0Q0YoQ0dQREZEb2N1
bWVudENyZWF0ZVdpdGhQcm92aWRlcihkYXRhUHJvdmlkZXIuZ2V0KCkpKTsKKyAgICBzbmFwc2hv
dEltYWdlcygpLnJlbW92ZSh0aGlzKTsKIH0KIAotdm9pZCBQREZEb2N1bWVudEltYWdlOjpjb21w
dXRlQm91bmRzRm9yQ3VycmVudFBhZ2UoKQordm9pZCBQREZEb2N1bWVudEltYWdlOjpkdW1wKFRl
eHRTdHJlYW0mIHRzKSBjb25zdAogewotICAgIEFTU0VSVChwYWdlQ291bnQoKSA+IDApOwotICAg
IENHUERGUGFnZVJlZiBjZ1BhZ2UgPSBDR1BERkRvY3VtZW50R2V0UGFnZShtX2RvY3VtZW50Lmdl
dCgpLCAxKTsKLSAgICBDR1JlY3QgbWVkaWFCb3ggPSBDR1BERlBhZ2VHZXRCb3hSZWN0KGNnUGFn
ZSwga0NHUERGTWVkaWFCb3gpOwotCi0gICAgLy8gR2V0IGNyb3AgYm94IChub3QgYWx3YXlzIHRo
ZXJlKS4gSWYgbm90LCB1c2UgbWVkaWEgYm94LgotICAgIENHUmVjdCByID0gQ0dQREZQYWdlR2V0
Qm94UmVjdChjZ1BhZ2UsIGtDR1BERkNyb3BCb3gpOwotICAgIGlmICghQ0dSZWN0SXNFbXB0eShy
KSkKLSAgICAgICAgbV9jcm9wQm94ID0gcjsKLSAgICBlbHNlCi0gICAgICAgIG1fY3JvcEJveCA9
IG1lZGlhQm94OwotCi0gICAgbV9yb3RhdGlvbkRlZ3JlZXMgPSBDR1BERlBhZ2VHZXRSb3RhdGlv
bkFuZ2xlKGNnUGFnZSk7CisgICAgSW1hZ2U6OmR1bXAodHMpOworICAgIHRzLmR1bXBQcm9wZXJ0
eSgicGFnZS1jb3VudCIsIHBhZ2VDb3VudCgpKTsKKyAgICB0cy5kdW1wUHJvcGVydHkoImNyb3At
Ym94IiwgbV9jcm9wQm94KTsKKyAgICBpZiAobV9yb3RhdGlvbkRlZ3JlZXMpCisgICAgICAgIHRz
LmR1bXBQcm9wZXJ0eSgicm90YXRpb24iLCBtX3JvdGF0aW9uRGVncmVlcyk7CiB9CiAKLXVuc2ln
bmVkIFBERkRvY3VtZW50SW1hZ2U6OnBhZ2VDb3VudCgpIGNvbnN0CitzdGQ6OnVuaXF1ZV9wdHI8
UERGRG9jdW1lbnRJbWFnZTo6U25hcHNob3Q+IFBERkRvY3VtZW50SW1hZ2U6OlNuYXBzaG90Ojpj
cmVhdGUoUmVmPEltYWdlQnVmZmVyPiYmIGltYWdlQnVmZmVyLCBjb25zdCBGbG9hdFJlY3QmIGlt
YWdlQnVmZmVyUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSkKIHsKLSAgICByZXR1
cm4gQ0dQREZEb2N1bWVudEdldE51bWJlck9mUGFnZXMobV9kb2N1bWVudC5nZXQoKSk7CisgICAg
cmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxTbmFwc2hvdD4obmV3IFNuYXBzaG90KFdURk1vdmUoaW1h
Z2VCdWZmZXIpLCBpbWFnZUJ1ZmZlclJlY3QsIGRlc3RSZWN0LCBzcmNSZWN0LCB0cmFuc2Zvcm0p
KTsKIH0KIAotc3RhdGljIHZvaWQgYXBwbHlSb3RhdGlvbkZvclBhaW50aW5nKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgRmxvYXRTaXplIHNpemUsIGludCByb3RhdGlvbkRlZ3JlZXMpCitQREZE
b2N1bWVudEltYWdlOjpTbmFwc2hvdDo6U25hcHNob3QoUmVmPEltYWdlQnVmZmVyPiYmIGltYWdl
QnVmZmVyLCBjb25zdCBGbG9hdFJlY3QmIHNuYXBzaG90UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IHRyYW5zZm9ybSkKKyAgICA6IG1faW1hZ2VCdWZmZXIoV1RGTW92ZShpbWFnZUJ1ZmZlcikpCisg
ICAgLCBtX3NuYXBzaG90UmVjdChzbmFwc2hvdFJlY3QpCisgICAgLCBtX2Rlc3RSZWN0KGRlc3RS
ZWN0KQorICAgICwgbV9zcmNSZWN0KHNyY1JlY3QpCisgICAgLCBtX3RyYW5zZm9ybSh0cmFuc2Zv
cm0pCiB7Ci0gICAgaWYgKHJvdGF0aW9uRGVncmVlcyA9PSA5MCkKLSAgICAgICAgY29udGV4dC50
cmFuc2xhdGUoMCwgc2l6ZS5oZWlnaHQoKSk7Ci0gICAgZWxzZSBpZiAocm90YXRpb25EZWdyZWVz
ID09IDE4MCkKLSAgICAgICAgY29udGV4dC50cmFuc2xhdGUoc2l6ZSk7Ci0gICAgZWxzZSBpZiAo
cm90YXRpb25EZWdyZWVzID09IDI3MCkKLSAgICAgICAgY29udGV4dC50cmFuc2xhdGUoc2l6ZS53
aWR0aCgpLCAwKTsKLQotICAgIGNvbnRleHQucm90YXRlKC1kZWcycmFkKHN0YXRpY19jYXN0PGZs
b2F0Pihyb3RhdGlvbkRlZ3JlZXMpKSk7CisgICAgQVNTRVJUKG1heFNuYXBzaG90c01lbW9yeUNv
c3QgLSBtX2FsbFNuYXBzaG90c01lbW9yeUNvc3QgPj0gbWVtb3J5Q29zdCgpKTsKKyAgICBtX2Fs
bFNuYXBzaG90c01lbW9yeUNvc3QgKz0gbWVtb3J5Q29zdCgpOwogfQogCi12b2lkIFBERkRvY3Vt
ZW50SW1hZ2U6OmRyYXdQREZQYWdlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKK1BERkRvY3Vt
ZW50SW1hZ2U6OlNuYXBzaG90Ojp+U25hcHNob3QoKQogewotICAgIGFwcGx5Um90YXRpb25Gb3JQ
YWludGluZyhjb250ZXh0LCBzaXplKCksIG1fcm90YXRpb25EZWdyZWVzKTsKLQotICAgIGNvbnRl
eHQudHJhbnNsYXRlKC1tX2Nyb3BCb3gubG9jYXRpb24oKSk7Ci0KLSNpZiBVU0UoRElSRUNUMkQp
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSNlbHNlCi0gICAgLy8gQ0dQREYgcGFnZXMgYXJlIGlu
ZGV4ZWQgZnJvbSAxLgotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIENHQ29udGV4dERyYXdQREZQ
YWdlV2l0aEFubm90YXRpb25zKGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCksIENHUERGRG9jdW1l
bnRHZXRQYWdlKG1fZG9jdW1lbnQuZ2V0KCksIDEpLCBudWxscHRyKTsKLSNlbHNlCi0gICAgQ0dD
b250ZXh0RHJhd1BERlBhZ2UoY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgQ0dQREZEb2N1bWVu
dEdldFBhZ2UobV9kb2N1bWVudC5nZXQoKSwgMSkpOwotI2VuZGlmCi0jZW5kaWYKKyAgICBBU1NF
UlQobV9hbGxTbmFwc2hvdHNNZW1vcnlDb3N0ID49IG1lbW9yeUNvc3QoKSk7CisgICAgbV9hbGxT
bmFwc2hvdHNNZW1vcnlDb3N0IC09IG1lbW9yeUNvc3QoKTsKIH0KIAotI2VuZGlmIC8vICFVU0Uo
UERGS0lUX0ZPUl9QREZET0NVTUVOVElNQUdFKQorYm9vbCBQREZEb2N1bWVudEltYWdlOjpTbmFw
c2hvdDo6Y2FuQmVSZXVzZWQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QpIGNvbnN0Cit7CisgICAgLy8g
T2xkIGFuZCBuZXcgc291cmNlIHJlY3RhbmdsZXMgaGF2ZSB0byBtYXRjaC4KKyAgICBpZiAoc3Jj
UmVjdCAhPSBtX3NyY1JlY3QpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAotI2lmIFBMQVRGT1JN
KE1BQykKKyAgICAvLyBPbGQgYW5kIG5ldyBzY2FsaW5nIGZhY3RvcnMgImRlc3QgLyBzcmMiIGhh
dmUgdG8gbWF0Y2guCisgICAgaWYgKGRlc3RSZWN0LnNpemUoKSAhPSBtX2Rlc3RSZWN0LnNpemUo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi1SZXRhaW5QdHI8Q0ZNdXRhYmxlRGF0YVJlZj4g
UERGRG9jdW1lbnRJbWFnZTo6Y29udmVydFBvc3RTY3JpcHREYXRhVG9QREYoUmV0YWluUHRyPENG
RGF0YVJlZj4mJiBwb3N0U2NyaXB0RGF0YSkKLXsKLSAgICAvLyBDb252ZXJ0IFBvc3RTY3JpcHQg
dG8gUERGIHVzaW5nIHRoZSBRdWFydHogMkQgQVBJLgotICAgIC8vIGh0dHA6Ly9kZXZlbG9wZXIu
YXBwbGUuY29tL2RvY3VtZW50YXRpb24vR3JhcGhpY3NJbWFnaW5nL0NvbmNlcHR1YWwvZHJhd2lu
Z3dpdGhxdWFydHoyZC9kcV9wc19jb252ZXJ0L2NoYXB0ZXJfMTZfc2VjdGlvbl8xLmh0bWwKKyAg
ICAvLyBtX3NuYXBzaG90UmVjdHQgY2FuIGJlIG1vdmVkIGlmIHNyY1JlY3QgYW5kIGRlc3RSZWN0
LnNpemUoKSBkaWQgbm90IGNoYW5nZS4KKyAgICBGbG9hdFJlY3QgbW92ZWRTbmFwc2hvdFJlY3Qg
PSBtX3NuYXBzaG90UmVjdDsKKyAgICBtb3ZlZFNuYXBzaG90UmVjdC5tb3ZlKEZsb2F0U2l6ZShk
ZXN0UmVjdC5sb2NhdGlvbigpIC0gbV9kZXN0UmVjdC5sb2NhdGlvbigpKSk7CiAKLSAgICBDR1BT
Q29udmVydGVyQ2FsbGJhY2tzIGNhbGxiYWNrcyA9IHsgfTsKLSAgICBhdXRvIGNvbnZlcnRlciA9
IGFkb3B0Q0YoQ0dQU0NvbnZlcnRlckNyZWF0ZSgwLCAmY2FsbGJhY2tzLCAwKSk7Ci0gICAgYXV0
byBwcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoQ0ZEYXRhKHBvc3RT
Y3JpcHREYXRhLmdldCgpKSk7Ci0gICAgYXV0byBwZGZEYXRhID0gYWRvcHRDRihDRkRhdGFDcmVh
dGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDApKTsKLSAgICBhdXRvIGNvbnN1bWVyID0g
YWRvcHRDRihDR0RhdGFDb25zdW1lckNyZWF0ZVdpdGhDRkRhdGEocGRmRGF0YS5nZXQoKSkpOwor
ICAgIC8vIG1vdmVkQ2FjaGVkSW1hZ2VSZWN0IGhhcyB0byBjb250YWluIHRoZSB3aG9sZSBkaXJ0
eSByZWN0YW5nbGUuCisgICAgRmxvYXRSZWN0IGRpcnR5UmVjdCA9IGludGVyc2VjdGlvbihjb250
ZXh0LmNsaXBCb3VuZHMoKSwgZGVzdFJlY3QpOworICAgIGlmICghbW92ZWRTbmFwc2hvdFJlY3Qu
Y29udGFpbnMoZGlydHlSZWN0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gT2xk
IGFuZCBuZXcgY29udGV4dCBzY2FsaW5nIGZhY3RvcnMgaGF2ZSB0byBtYXRjaCBhcyB3ZWxsLgor
ICAgIEFmZmluZVRyYW5zZm9ybTo6RGVjb21wb3NlZFR5cGUgZGVjb21wb3NlZFRyYW5zZm9ybTsK
KyAgICBjb250ZXh0LmdldENUTShHcmFwaGljc0NvbnRleHQ6OkRlZmluaXRlbHlJbmNsdWRlRGV2
aWNlU2NhbGUpLmRlY29tcG9zZShkZWNvbXBvc2VkVHJhbnNmb3JtKTsKIAotICAgIENHUFNDb252
ZXJ0ZXJDb252ZXJ0KGNvbnZlcnRlci5nZXQoKSwgcHJvdmlkZXIuZ2V0KCksIGNvbnN1bWVyLmdl
dCgpLCAwKTsKLSAgICByZXR1cm4gcGRmRGF0YTsKKyAgICBBZmZpbmVUcmFuc2Zvcm06OkRlY29t
cG9zZWRUeXBlIGNhY2hlZERlY29tcG9zZWRUcmFuc2Zvcm07CisgICAgbV90cmFuc2Zvcm0uZGVj
b21wb3NlKGNhY2hlZERlY29tcG9zZWRUcmFuc2Zvcm0pOworCisgICAgcmV0dXJuIGRlY29tcG9z
ZWRUcmFuc2Zvcm0uc2NhbGVYID09IGNhY2hlZERlY29tcG9zZWRUcmFuc2Zvcm0uc2NhbGVYICYm
IGRlY29tcG9zZWRUcmFuc2Zvcm0uc2NhbGVZID09IGNhY2hlZERlY29tcG9zZWRUcmFuc2Zvcm0u
c2NhbGVZOwogfQogCi0jZW5kaWYKK3NpemVfdCBQREZEb2N1bWVudEltYWdlOjpTbmFwc2hvdDo6
bWVtb3J5Q29zdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXItPm1lbW9yeUNv
c3QoKTsKK30KIAotdm9pZCBQREZEb2N1bWVudEltYWdlOjpkdW1wKFRleHRTdHJlYW0mIHRzKSBj
b25zdAorYm9vbCBQREZEb2N1bWVudEltYWdlOjpTbmFwc2hvdDo6dHJhbnNmZXJWaWV3cG9ydChH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCkKIHsKLSAgICBJbWFnZTo6ZHVtcCh0cyk7Ci0gICAgdHMuZHVt
cFByb3BlcnR5KCJwYWdlLWNvdW50IiwgcGFnZUNvdW50KCkpOwotICAgIHRzLmR1bXBQcm9wZXJ0
eSgiY3JvcC1ib3giLCBtX2Nyb3BCb3gpOwotICAgIGlmIChtX3JvdGF0aW9uRGVncmVlcykKLSAg
ICAgICAgdHMuZHVtcFByb3BlcnR5KCJyb3RhdGlvbiIsIG1fcm90YXRpb25EZWdyZWVzKTsKKyAg
ICBpZiAoIWNhbkJlUmV1c2VkKGNvbnRleHQsIGRlc3RSZWN0LCBzcmNSZWN0KSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgbV9zbmFwc2hvdFJlY3QubW92ZShGbG9hdFNpemUoZGVzdFJl
Y3QubG9jYXRpb24oKSAtIG1fZGVzdFJlY3QubG9jYXRpb24oKSkpOworICAgIG1fZGVzdFJlY3Qg
PSBkZXN0UmVjdDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBQREZEb2N1bWVudEltYWdl
OjpTbmFwc2hvdDo6ZHJhdyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCit7CisgICAgY29udGV4
dC5kcmF3SW1hZ2VCdWZmZXIobV9pbWFnZUJ1ZmZlciwgbV9kZXN0UmVjdCk7CiB9CiAKK3ZvaWQg
UERGRG9jdW1lbnRJbWFnZTo6U25hcHNob3RJbWFnZXM6OnJlbW92ZUFsbFVudXNlZEFib3ZlTGlt
aXQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFNpemUmIGltYWdlQnVmZmVy
U2l6ZSkKK3sKKyAgICBzaXplX3QgbWVtb3J5Q29zdCA9IEltYWdlQnVmZmVyOjpjb21wYXRpYmxl
QnVmZmVyU2l6ZShpbWFnZUJ1ZmZlclNpemUsIGNvbnRleHQpLnVuY2xhbXBlZEFyZWEoKSAqIDQ7
CisgICAgc2l6ZV90IGFsbFNuYXBzaG90c01lbW9yeUNvc3QgPSAwOworCisgICAgZm9yIChhdXRv
IGltYWdlIDogbV9pbWFnZXMpCisgICAgICAgIGFsbFNuYXBzaG90c01lbW9yeUNvc3QgKz0gaW1h
Z2UtPmRlY29kZWRTaXplKCk7CisKKyAgICBWZWN0b3I8UERGRG9jdW1lbnRJbWFnZSo+IGltYWdl
c1RvQmVSZW1vdmVkOworICAgIGZvciAoYXV0byBpbWFnZSA6IG1faW1hZ2VzKSB7CisgICAgICAg
IGlmIChhbGxTbmFwc2hvdHNNZW1vcnlDb3N0ICsgbWVtb3J5Q29zdCA8PSBtYXhTbmFwc2hvdHNN
ZW1vcnlDb3N0KQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGFsbFNuYXBzaG90c01lbW9y
eUNvc3QgLT0gaW1hZ2UtPmRlY29kZWRTaXplKCk7CisgICAgICAgIGltYWdlc1RvQmVSZW1vdmVk
LmFwcGVuZChpbWFnZSk7CisgICAgfQorICAgIAorICAgIGZvciAoYXV0byBpbWFnZSA6IGltYWdl
c1RvQmVSZW1vdmVkKQorICAgICAgICBpbWFnZS0+ZGVzdHJveURlY29kZWREYXRhKCk7CiB9Cisg
ICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBVU0UoQ0cpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZEb2N1bWVudEltYWdl
LmgKaW5kZXggNTdmODk0NzQ5ZDVlYWM5MDUzYjhkOGE5NGVkMDg1ZTVhZmY1MTVhNy4uNGM4NzEx
YjAwYmRjZWJjNzA1YmE2NTU3OTBmMDRlZDZiYjJhMWYxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BERkRvY3VtZW50SW1hZ2UuaApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMTMgQXBw
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIw
IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTIzLDE2ICsyMywxNSBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lm
bmRlZiBQREZEb2N1bWVudEltYWdlX2gKLSNkZWZpbmUgUERGRG9jdW1lbnRJbWFnZV9oCisjcHJh
Z21hIG9uY2UKKworI2lmIFVTRShDRykKIAogI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgog
I2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMuaCIKICNpbmNs
dWRlICJJbWFnZS5oIgotI2luY2x1ZGUgIlNldHRpbmdzLmgiCi0KLSNpZiBVU0UoQ0cpCisjaW5j
bHVkZSAiUERGSW1hZ2VDYWNoaW5nUG9saWN5LmgiCiAKICNpZiBQTEFURk9STShNQUMpCiAjZGVm
aW5lIFVTRV9QREZLSVRfRk9SX1BERkRPQ1VNRU5USU1BR0UgMQpAQCAtNDYsNiArNDUsMTIgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogY2xhc3MgSW1hZ2VC
dWZmZXI7CiAKKyNpZiBVU0UoUERGS0lUX0ZPUl9QREZET0NVTUVOVElNQUdFKQordXNpbmcgUGxh
dGZvcm1QREZEb2N1bWVudFB0ciA9IFJldGFpblB0cjxQREZEb2N1bWVudD47CisjZWxzZQordXNp
bmcgUGxhdGZvcm1QREZEb2N1bWVudFB0ciA9IFJldGFpblB0cjxDR1BERkRvY3VtZW50UmVmPjsK
KyNlbmRpZgorCiBjbGFzcyBQREZEb2N1bWVudEltYWdlIGZpbmFsIDogcHVibGljIEltYWdlIHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFBERkRvY3VtZW50SW1hZ2U+IGNyZWF0ZShJbWFnZU9i
c2VydmVyKiBvYnNlcnZlcikKQEAgLTUzLDcyICs1OCwxMDEgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBQREZEb2N1bWVudEltYWdlKG9ic2VydmVyKSk7CiAgICAgfQog
CisgICAgdW5zaWduZWQgY2FjaGluZ0NvdW50Rm9yVGVzdGluZygpIGNvbnN0IHsgcmV0dXJuIG1f
Y2FjaGluZ0NvdW50Rm9yVGVzdGluZzsgfQogICAgIHZvaWQgc2V0UGRmSW1hZ2VDYWNoaW5nUG9s
aWN5KFBERkltYWdlQ2FjaGluZ1BvbGljeSk7Ci0gICAgCi0jaWYgUExBVEZPUk0oTUFDKQotICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGF0YVJlZj4gY29udmVy
dFBvc3RTY3JpcHREYXRhVG9QREYoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBwb3N0U2NyaXB0RGF0
YSk7Ci0jZW5kaWYKIAotICAgIHVuc2lnbmVkIGNhY2hpbmdDb3VudEZvclRlc3RpbmcoKSBjb25z
dCB7IHJldHVybiBtX2NhY2hpbmdDb3VudEZvclRlc3Rpbmc7IH0KKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgUmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+IGNvbnZlcnRQb3N0U2NyaXB0RGF0
YVRvUERGKFJldGFpblB0cjxDRkRhdGFSZWY+JiYgcG9zdFNjcmlwdERhdGEpOwogCiBwcml2YXRl
OgorICAgIC8vIFRvIGF2b2lkIHRoZSBqZXRzYW0gb24gaU9TLCB3ZSBhcmUgZ29pbmcgdG8gbGlt
aXQgdGhlIHNpemUgb2YgYWxsIHRoZSBQREYgc25hcHNob3RzIHRvIGJlIDY0TUIuCisgICAgc3Rh
dGljIGNvbnN0ZXhwciBzaXplX3QgbWF4U25hcHNob3RTaWRlID0gNCAqIDEwMjQ7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBzaXplX3QgbWF4U25hcHNob3RBcmVhID0gbWF4U25hcHNob3RTaWRlICog
bWF4U25hcHNob3RTaWRlOworICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1heFNuYXBzaG90
c01lbW9yeUNvc3QgPSBtYXhTbmFwc2hvdEFyZWEgKiA0OworCisgICAgY2xhc3MgU25hcHNob3Qg
eworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTbmFwc2hvdD4g
Y3JlYXRlKFJlZjxJbWFnZUJ1ZmZlcj4mJiwgY29uc3QgRmxvYXRSZWN0JiBpbWFnZUJ1ZmZlclJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJik7CisgICAgICAgIH5TbmFwc2hvdCgpOworCisgICAgICAg
IHNpemVfdCBtZW1vcnlDb3N0KCkgY29uc3Q7CisgICAgICAgIGJvb2wgdHJhbnNmZXJWaWV3cG9y
dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QpOworICAgICAgICB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0Jik7CisK
KyAgICBwcml2YXRlOgorICAgICAgICBTbmFwc2hvdChSZWY8SW1hZ2VCdWZmZXI+JiYsIGNvbnN0
IEZsb2F0UmVjdCYgaW1hZ2VCdWZmZXJSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpOworICAgICAg
ICBib29sIGNhbkJlUmV1c2VkKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCkgY29uc3Q7CisKKyAgICAgICAgUmVmPElt
YWdlQnVmZmVyPiBtX2ltYWdlQnVmZmVyOworICAgICAgICBGbG9hdFJlY3QgbV9zbmFwc2hvdFJl
Y3Q7CisgICAgICAgIEZsb2F0UmVjdCBtX2Rlc3RSZWN0OworICAgICAgICBGbG9hdFJlY3QgbV9z
cmNSZWN0OworICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gbV90cmFuc2Zvcm07CisgICAgICAgIGlu
bGluZSBzdGF0aWMgc2l6ZV90IG1fYWxsU25hcHNob3RzTWVtb3J5Q29zdCB7IDAgfTsKKyAgICB9
OworCisgICAgY2xhc3MgU25hcHNob3RJbWFnZXMgeworICAgIHB1YmxpYzoKKyAgICAgICAgU25h
cHNob3RJbWFnZXMoKSA9IGRlZmF1bHQ7CisgICAgICAgIH5TbmFwc2hvdEltYWdlcygpID0gZGVm
YXVsdDsKKworICAgICAgICB2b2lkIGFwcGVuZChQREZEb2N1bWVudEltYWdlKiBpbWFnZSkgeyBt
X2ltYWdlcy5hcHBlbmQoaW1hZ2UpOyB9CisgICAgICAgIHZvaWQgcmVtb3ZlKFBERkRvY3VtZW50
SW1hZ2UqIGltYWdlKSB7IG1faW1hZ2VzLnJlbW92ZUZpcnN0KGltYWdlKTsgfQorCisgICAgICAg
IHZvaWQgbWFya1VzZWQoUERGRG9jdW1lbnRJbWFnZSogaW1hZ2UpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHJlbW92ZShpbWFnZSk7CisgICAgICAgICAgICBhcHBlbmQoaW1hZ2UpOworICAgICAg
ICB9CisKKyAgICAgICAgdm9pZCByZW1vdmVBbGxVbnVzZWRBYm92ZUxpbWl0KEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VCdWZmZXJTaXplKTsKKyAgICBwcml2YXRlOgor
ICAgICAgICBWZWN0b3I8UERGRG9jdW1lbnRJbWFnZSo+IG1faW1hZ2VzOworICAgIH07CisKICAg
ICBQREZEb2N1bWVudEltYWdlKEltYWdlT2JzZXJ2ZXIqKTsKICAgICB2aXJ0dWFsIH5QREZEb2N1
bWVudEltYWdlKCk7CiAKICAgICBib29sIGlzUERGRG9jdW1lbnRJbWFnZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIGhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQg
dGhpcyB0byBiZSBsZXNzIGNvbnNlcnZhdGl2ZS4KKyAgICBib29sIGN1cnJlbnRGcmFtZUtub3du
VG9CZU9wYXF1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBTdHJp
bmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCBvdmVycmlkZTsKLQotICAgIGJvb2wgaGFzU2lu
Z2xlU2VjdXJpdHlPcmlnaW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAg
RmxvYXRTaXplIHNpemUoSW1hZ2VPcmllbnRhdGlvbiA9IEltYWdlT3JpZW50YXRpb246OkZyb21J
bWFnZSkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBFbmNvZGVkRGF0YVN0YXR1cyBkYXRhQ2hhbmdl
ZChib29sIGFsbERhdGFSZWNlaXZlZCkgb3ZlcnJpZGU7Ci0KICAgICB2b2lkIGRlc3Ryb3lEZWNv
ZGVkRGF0YShib29sIC8qZGVzdHJveUFsbCovID0gdHJ1ZSkgb3ZlcnJpZGU7CisgICAgc2l6ZV90
IGRlY29kZWRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9zbmFwc2hvdCA/IG1fc25hcHNob3QtPm1l
bW9yeUNvc3QoKSA6IDA7IH0KKyAgICB2b2lkIGRlY29kZWRTaXplQ2hhbmdlZChzaXplX3Qgb2xk
U2l6ZSwgc2l6ZV90IG5ld1NpemUpOwogCiAgICAgdm9pZCBjb21wdXRlSW50cmluc2ljRGltZW5z
aW9ucyhMZW5ndGgmIGludHJpbnNpY1dpZHRoLCBMZW5ndGgmIGludHJpbnNpY0hlaWdodCwgRmxv
YXRTaXplJiBpbnRyaW5zaWNSYXRpbykgb3ZlcnJpZGU7Ci0gICAgRmxvYXRTaXplIHNpemUoSW1h
Z2VPcmllbnRhdGlvbiA9IEltYWdlT3JpZW50YXRpb246OkZyb21JbWFnZSkgY29uc3Qgb3ZlcnJp
ZGU7Ci0KICAgICBJbWFnZURyYXdSZXN1bHQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBG
bG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmID0geyB9KSBvdmVycmlkZTsKIAotICAgIC8vIEZJWE1FOiBJbXBsZW1l
bnQgdGhpcyB0byBiZSBsZXNzIGNvbnNlcnZhdGl2ZS4KLSAgICBib29sIGN1cnJlbnRGcmFtZUtu
b3duVG9CZU9wYXF1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0KLSAgICB2
b2lkIGR1bXAoV1RGOjpUZXh0U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgc3RhdGljIFNu
YXBzaG90SW1hZ2VzJiBzbmFwc2hvdEltYWdlcygpOworICAgIHN0YXRpYyBGbG9hdFJlY3QgY2Fs
Y3VsYXRlU25hcHNob3RSZWN0KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVz
dFJlY3QpOworICAgIHZvaWQgdXBkYXRlU25hcHNob3RJZk5lZWRlZChHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QpOwog
CiAgICAgdm9pZCBjcmVhdGVQREZEb2N1bWVudCgpOwogICAgIHZvaWQgY29tcHV0ZUJvdW5kc0Zv
ckN1cnJlbnRQYWdlKCk7CiAgICAgdW5zaWduZWQgcGFnZUNvdW50KCkgY29uc3Q7CiAgICAgdm9p
ZCBkcmF3UERGUGFnZShHcmFwaGljc0NvbnRleHQmKTsKIAotICAgIHZvaWQgZGVjb2RlZFNpemVD
aGFuZ2VkKHNpemVfdCBuZXdDYWNoZWRCeXRlcyk7Ci0gICAgdm9pZCB1cGRhdGVDYWNoZWRJbWFn
ZUlmTmVlZGVkKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0KTsKLSAgICBib29sIGNhY2hlUGFyYW1ldGVyc01hdGNoKEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0KSBjb25zdDsKKyAgICB2b2lkIGR1bXAoV1RGOjpUZXh0U3RyZWFtJikgY29uc3Qg
b3ZlcnJpZGU7CiAKLSAgICBQREZJbWFnZUNhY2hpbmdQb2xpY3kgbV9wZGZJbWFnZUNhY2hpbmdQ
b2xpY3kgeyBkZWZhdWx0UERGSW1hZ2VDYWNoaW5nUG9saWN5IH07CisgICAgUGxhdGZvcm1QREZE
b2N1bWVudFB0ciBtX2RvY3VtZW50OworICAgIGJvb2wgbV9oYXNQYWdlIHsgZmFsc2UgfTsKIAot
I2lmIFVTRShQREZLSVRfRk9SX1BERkRPQ1VNRU5USU1BR0UpCi0gICAgUmV0YWluUHRyPFBERkRv
Y3VtZW50PiBtX2RvY3VtZW50OwotI2Vsc2UKLSAgICBSZXRhaW5QdHI8Q0dQREZEb2N1bWVudFJl
Zj4gbV9kb2N1bWVudDsKLSNlbmRpZgorICAgIEZsb2F0UmVjdCBtX2Nyb3BCb3g7CisgICAgaW50
IG1fcm90YXRpb25EZWdyZWVzIHsgMCB9OyAvLyBDYW4gb25seSBiZSAwLCA5MCwgMTgwLCBvciAy
NzAgZGVncmVlcy4KIAotICAgIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gbV9jYWNoZWRJbWFnZUJ1ZmZl
cjsKLSAgICBGbG9hdFJlY3QgbV9jYWNoZWRJbWFnZVJlY3Q7Ci0gICAgQWZmaW5lVHJhbnNmb3Jt
IG1fY2FjaGVkVHJhbnNmb3JtOwotICAgIEZsb2F0UmVjdCBtX2NhY2hlZERlc3RpbmF0aW9uUmVj
dDsKLSAgICBGbG9hdFJlY3QgbV9jYWNoZWRTb3VyY2VSZWN0OwotICAgIHNpemVfdCBtX2NhY2hl
ZEJ5dGVzIHsgMCB9OworICAgIFBERkltYWdlQ2FjaGluZ1BvbGljeSBtX3BkZkltYWdlQ2FjaGlu
Z1BvbGljeSB7IGRlZmF1bHRQREZJbWFnZUNhY2hpbmdQb2xpY3kgfTsKICAgICB1bnNpZ25lZCBt
X2NhY2hpbmdDb3VudEZvclRlc3RpbmcgeyAwIH07CiAKLSAgICBGbG9hdFJlY3QgbV9jcm9wQm94
OwotICAgIGludCBtX3JvdGF0aW9uRGVncmVlcyB7IDAgfTsgLy8gQ2FuIG9ubHkgYmUgMCwgOTAs
IDE4MCwgb3IgMjcwIGRlZ3JlZXMuCi0gICAgYm9vbCBtX2hhc1BhZ2UgeyBmYWxzZSB9OworICAg
IHN0ZDo6dW5pcXVlX3B0cjxTbmFwc2hvdD4gbV9zbmFwc2hvdDsKIH07CiAKLX0KK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19JTUFHRShQREZEb2N1bWVu
dEltYWdlKQogCiAjZW5kaWYgLy8gVVNFKENHKQotCi0jZW5kaWYgLy8gUERGRG9jdW1lbnRJbWFn
ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QREZE
b2N1bWVudEltYWdlQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
UERGRG9jdW1lbnRJbWFnZUNHLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NzAxYWZlMWIwYTk5NmZhODhiYmU1
MWZkODg1YjhkNjkxNzc4YTRmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZUNHLmNwcApAQCAtMCwwICsxLDEwNCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUERGRG9jdW1lbnRJbWFnZS5oIgorCisjaWYgIVVTRShQ
REZLSVRfRk9SX1BERkRPQ1VNRU5USU1BR0UpCisKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQu
aCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dQ
REZEb2N1bWVudC5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworI2lmIFBMQVRGT1JN
KENPQ09BKQorI2luY2x1ZGUgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CisjZWxzZQor
I2luY2x1ZGUgPENvcmVHcmFwaGljcy9DR0NvbnRleHQuaD4KKyNlbmRpZgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK3ZvaWQgUERGRG9jdW1lbnRJbWFnZTo6Y3JlYXRlUERGRG9jdW1lbnQoKQor
eworICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRD
RihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoZGF0YSgpLT5jcmVhdGVDRkRhdGEoKS5n
ZXQoKSkpOworICAgIG1fZG9jdW1lbnQgPSBhZG9wdENGKENHUERGRG9jdW1lbnRDcmVhdGVXaXRo
UHJvdmlkZXIoZGF0YVByb3ZpZGVyLmdldCgpKSk7Cit9CisKK3ZvaWQgUERGRG9jdW1lbnRJbWFn
ZTo6Y29tcHV0ZUJvdW5kc0ZvckN1cnJlbnRQYWdlKCkKK3sKKyAgICBBU1NFUlQocGFnZUNvdW50
KCkgPiAwKTsKKyAgICBDR1BERlBhZ2VSZWYgY2dQYWdlID0gQ0dQREZEb2N1bWVudEdldFBhZ2Uo
bV9kb2N1bWVudC5nZXQoKSwgMSk7CisgICAgQ0dSZWN0IG1lZGlhQm94ID0gQ0dQREZQYWdlR2V0
Qm94UmVjdChjZ1BhZ2UsIGtDR1BERk1lZGlhQm94KTsKKworICAgIC8vIEdldCBjcm9wIGJveCAo
bm90IGFsd2F5cyB0aGVyZSkuIElmIG5vdCwgdXNlIG1lZGlhIGJveC4KKyAgICBDR1JlY3QgciA9
IENHUERGUGFnZUdldEJveFJlY3QoY2dQYWdlLCBrQ0dQREZDcm9wQm94KTsKKyAgICBpZiAoIUNH
UmVjdElzRW1wdHkocikpCisgICAgICAgIG1fY3JvcEJveCA9IHI7CisgICAgZWxzZQorICAgICAg
ICBtX2Nyb3BCb3ggPSBtZWRpYUJveDsKKworICAgIG1fcm90YXRpb25EZWdyZWVzID0gQ0dQREZQ
YWdlR2V0Um90YXRpb25BbmdsZShjZ1BhZ2UpOworfQorCit1bnNpZ25lZCBQREZEb2N1bWVudElt
YWdlOjpwYWdlQ291bnQoKSBjb25zdAoreworICAgIHJldHVybiBDR1BERkRvY3VtZW50R2V0TnVt
YmVyT2ZQYWdlcyhtX2RvY3VtZW50LmdldCgpKTsKK30KKworc3RhdGljIHZvaWQgYXBwbHlSb3Rh
dGlvbkZvclBhaW50aW5nKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgRmxvYXRTaXplIHNpemUs
IGludCByb3RhdGlvbkRlZ3JlZXMpCit7CisgICAgaWYgKHJvdGF0aW9uRGVncmVlcyA9PSA5MCkK
KyAgICAgICAgY29udGV4dC50cmFuc2xhdGUoMCwgc2l6ZS5oZWlnaHQoKSk7CisgICAgZWxzZSBp
ZiAocm90YXRpb25EZWdyZWVzID09IDE4MCkKKyAgICAgICAgY29udGV4dC50cmFuc2xhdGUoc2l6
ZSk7CisgICAgZWxzZSBpZiAocm90YXRpb25EZWdyZWVzID09IDI3MCkKKyAgICAgICAgY29udGV4
dC50cmFuc2xhdGUoc2l6ZS53aWR0aCgpLCAwKTsKKworICAgIGNvbnRleHQucm90YXRlKC1kZWcy
cmFkKHN0YXRpY19jYXN0PGZsb2F0Pihyb3RhdGlvbkRlZ3JlZXMpKSk7Cit9CisKK3ZvaWQgUERG
RG9jdW1lbnRJbWFnZTo6ZHJhd1BERlBhZ2UoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQorewor
ICAgIGFwcGx5Um90YXRpb25Gb3JQYWludGluZyhjb250ZXh0LCBzaXplKCksIG1fcm90YXRpb25E
ZWdyZWVzKTsKKworICAgIGNvbnRleHQudHJhbnNsYXRlKC1tX2Nyb3BCb3gubG9jYXRpb24oKSk7
CisKKyAgICAvLyBDR1BERiBwYWdlcyBhcmUgaW5kZXhlZCBmcm9tIDEuCisjaWYgUExBVEZPUk0o
Q09DT0EpCisgICAgQ0dDb250ZXh0RHJhd1BERlBhZ2VXaXRoQW5ub3RhdGlvbnMoY29udGV4dC5w
bGF0Zm9ybUNvbnRleHQoKSwgQ0dQREZEb2N1bWVudEdldFBhZ2UobV9kb2N1bWVudC5nZXQoKSwg
MSksIG51bGxwdHIpOworI2Vsc2UKKyAgICBDR0NvbnRleHREcmF3UERGUGFnZShjb250ZXh0LnBs
YXRmb3JtQ29udGV4dCgpLCBDR1BERkRvY3VtZW50R2V0UGFnZShtX2RvY3VtZW50LmdldCgpLCAx
KSk7CisjZW5kaWYKK30KKworUmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+IFBERkRvY3VtZW50
SW1hZ2U6OmNvbnZlcnRQb3N0U2NyaXB0RGF0YVRvUERGKFJldGFpblB0cjxDRkRhdGFSZWY+JiYp
Cit7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vICFVU0UoUERGS0lUX0ZPUl9QREZET0NVTUVOVElNQUdFKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCmluZGV4IGY1MDAwNWE0NTRiMzlmNDVjZDBmZjcx
YWQ3ZDE5Y2ExY2Q3YzcwZWUuLmVmOTJhNGQ3OWVkN2Y2OTEwMzNkOGE2ZmQxZDBmNTljMTZlNzk0
MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTEzNyw2
ICsxMzcsMTEgQEAgdm9pZCBSZWNvcmRlcjo6dXBkYXRlU3RhdGUoY29uc3QgR3JhcGhpY3NDb250
ZXh0U3RhdGUmIHN0YXRlLCBHcmFwaGljc0NvbnRleHRTdGEKICAgICBjdXJyZW50U3RhdGUoKS5z
dGF0ZUNoYW5nZS5hY2N1bXVsYXRlKHN0YXRlLCBmbGFncyk7CiB9CiAKK2Jvb2wgUmVjb3JkZXI6
OmNhblJlY29yZERyYXdJbWFnZUJ1ZmZlcihjb25zdCBJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIp
IGNvbnN0Cit7CisgICAgcmV0dXJuICFtX2RlbGVnYXRlIHx8IG1fZGVsZWdhdGUtPmlzQ2FjaGVk
SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIpOworfQorCiB2b2lkIFJlY29yZGVyOjpjbGVhclNoYWRv
dygpCiB7CiAgICAgYXBwZW5kPENsZWFyU2hhZG93PigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlY29yZGVyLmgKaW5kZXggNzdjYmEzMzZkYzViOTRmNGRiMjFkYTY2MTEwN2JkNGMzMmNm
NzA4NS4uZWNkZDQxODEzMjU2MzE2ODdhNTRkNDA3M2ZjOGRjYTcwMjI4OTJkNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCkBAIC02NywxMSArNjcsMTMgQEAgcHVibGlj
OgogICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbEFwcGVuZEl0ZW1PZlR5cGUoSXRlbVR5cGUpIHsg
fQogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQXBwZW5kSXRlbU9mVHlwZShJdGVtVHlwZSkgeyB9
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjYWNoZU5hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJikgeyB9
CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc0NhY2hlZEltYWdlQnVmZmVyKGNvbnN0IEltYWdlQnVm
ZmVyJikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB9OwogCiBwcml2YXRlOgogICAgIGZy
aWVuZCBjbGFzcyBEcmF3R2x5cGhzUmVjb3JkZXI7CiAgICAgYm9vbCBoYXNQbGF0Zm9ybUNvbnRl
eHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgY2FuUmVjb3Jk
RHJhd0ltYWdlQnVmZmVyKGNvbnN0IEltYWdlQnVmZmVyJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
UGxhdGZvcm1HcmFwaGljc0NvbnRleHQqIHBsYXRmb3JtQ29udGV4dCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG51bGxwdHI7IH0KIAogICAgIHZvaWQgdXBkYXRlU3RhdGUoY29uc3QgR3JhcGhp
Y3NDb250ZXh0U3RhdGUmLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncykg
b3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvUERGRG9jdW1lbnRJbWFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tCmluZGV4IDgzZTZhZjdiMDM4OTI4MzhjM2Jm
ZWExYzBjMTFhYTdmY2Y4YTc3YTkuLjE3NTlkYjY4NTYwNGIzYTgyOTczMGIwMzBjODNhODBiNDdl
MmYxMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Q
REZEb2N1bWVudEltYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9QREZEb2N1bWVudEltYWdlTWFjLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTgzLDYgKzgzLDIxIEBAIHZvaWQgUERGRG9j
dW1lbnRJbWFnZTo6ZHJhd1BERlBhZ2UoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogICAgIENH
Q29udGV4dFNldEFsbG93c0ZvbnRTdWJwaXhlbFBvc2l0aW9uaW5nKGNvbnRleHQucGxhdGZvcm1D
b250ZXh0KCksIGFsbG93c1N1YnBpeGVsUG9zaXRpb25pbmcpOwogfQogCitSZXRhaW5QdHI8Q0ZN
dXRhYmxlRGF0YVJlZj4gUERGRG9jdW1lbnRJbWFnZTo6Y29udmVydFBvc3RTY3JpcHREYXRhVG9Q
REYoUmV0YWluUHRyPENGRGF0YVJlZj4mJiBwb3N0U2NyaXB0RGF0YSkKK3sKKyAgICAvLyBDb252
ZXJ0IFBvc3RTY3JpcHQgdG8gUERGIHVzaW5nIHRoZSBRdWFydHogMkQgQVBJLgorICAgIC8vIGh0
dHA6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24vR3JhcGhpY3NJbWFnaW5nL0Nv
bmNlcHR1YWwvZHJhd2luZ3dpdGhxdWFydHoyZC9kcV9wc19jb252ZXJ0L2NoYXB0ZXJfMTZfc2Vj
dGlvbl8xLmh0bWwKKworICAgIENHUFNDb252ZXJ0ZXJDYWxsYmFja3MgY2FsbGJhY2tzID0geyB9
OworICAgIGF1dG8gY29udmVydGVyID0gYWRvcHRDRihDR1BTQ29udmVydGVyQ3JlYXRlKDAsICZj
YWxsYmFja3MsIDApKTsKKyAgICBhdXRvIHByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRl
ckNyZWF0ZVdpdGhDRkRhdGEocG9zdFNjcmlwdERhdGEuZ2V0KCkpKTsKKyAgICBhdXRvIHBkZkRh
dGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCkp
OworICAgIGF1dG8gY29uc3VtZXIgPSBhZG9wdENGKENHRGF0YUNvbnN1bWVyQ3JlYXRlV2l0aENG
RGF0YShwZGZEYXRhLmdldCgpKSk7CisKKyAgICBDR1BTQ29udmVydGVyQ29udmVydChjb252ZXJ0
ZXIuZ2V0KCksIHByb3ZpZGVyLmdldCgpLCBjb25zdW1lci5nZXQoKSwgMCk7CisgICAgcmV0dXJu
IHBkZkRhdGE7CiB9CiAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwogI2VuZGlmIC8vIFVTRShQ
REZLSVRfRk9SX1BERkRPQ1VNRU5USU1BR0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCmlu
ZGV4IDUxYmQ1NzEyOTU4YWYxMmEyMzE1ZDQxYmEzZDJkNmI5ZWQ1N2YyYmEuLjljMzQ1OTc4MWQy
YmUwY2E4YjA2NjJlMGFlMDA1ODZjM2M2N2Y5ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94
eS5oCkBAIC0yMjUsNiArMjI1LDE1IEBAIHByb3RlY3RlZDoKICAgICAgICAgZGlzcGxheUxpc3Qu
Y2xlYXIoKTsKICAgICB9CiAKKyAgICBib29sIGlzQ2FjaGVkSW1hZ2VCdWZmZXIoY29uc3QgV2Vi
Q29yZTo6SW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyKSBjb25zdCBvdmVycmlkZQorICAgIHsKKyAg
ICAgICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgYXV0byBjYWNoZWRJbWFnZUJ1ZmZlciA9IG1fcmVtb3RlUmVu
ZGVyaW5nQmFja2VuZFByb3h5LT5yZW1vdGVSZXNvdXJjZUNhY2hlUHJveHkoKS5jYWNoZWRJbWFn
ZUJ1ZmZlcihpbWFnZUJ1ZmZlci5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSk7CisgICAg
ICAgIEFTU0VSVCghY2FjaGVkSW1hZ2VCdWZmZXIgfHwgY2FjaGVkSW1hZ2VCdWZmZXIgPT0gJmlt
YWdlQnVmZmVyKTsKKyAgICAgICAgcmV0dXJuIGNhY2hlZEltYWdlQnVmZmVyOworICAgIH0KKwog
ICAgIHZvaWQgY2FjaGVOYXRpdmVJbWFnZShXZWJDb3JlOjpOYXRpdmVJbWFnZSYgaW1hZ2UpIG92
ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAobV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkp
Cg==
</data>
<flag name="commit-queue"
          id="432231"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>