<?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>236685</bug_id>
          
          <creation_ts>2022-02-15 18:38:35 -0800</creation_ts>
          <short_desc>[GPU Process] Implement RemoteImageBufferProxy::drawConsuming()</short_desc>
          <delta_ts>2022-03-01 16:41:38 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=236925</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=236929</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=236930</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>236508</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>jonlee</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1842087</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-02-15 18:38:35 -0800</bug_when>
    <thetext>The current implementation calls the virtual method ImageBufferBackend::drawConsuming(). But this is wrong if GPU Process rendering is enabled because the following assertion will fire:

SHOULD NEVER BE REACHED
/Volumes/Data/WebKit/OpenSource/Source/WebKit/WebProcess/GPU/graphics/cocoa/ImageBufferRemoteIOSurfaceBackend.cpp(103) : virtual void WebKit::ImageBufferRemoteIOSurfaceBackend::draw(WebCore::GraphicsContext &amp;, const WebCore::FloatRect &amp;, const WebCore::FloatRect &amp;, const WebCore::ImagePaintingOptions &amp;)
1   0x3393baad9 WTFCrash
2   0x31d12db8b WTFCrashWithInfo(int, char const*, char const*, int)
3   0x31f1aae9f WebKit::ImageBufferRemoteIOSurfaceBackend::draw(WebCore::GraphicsContext&amp;, WebCore::FloatRect const&amp;, WebCore::FloatRect const&amp;, WebCore::ImagePaintingOptions const&amp;)
4   0x361738c46 WebCore::ImageBufferBackend::drawConsuming(WebCore::GraphicsContext&amp;, WebCore::FloatRect const&amp;, WebCore::FloatRect const&amp;, WebCore::ImagePaintingOptions const&amp;)
5   0x31f198b58 WebCore::ConcreteImageBuffer&lt;WebKit::ImageBufferRemoteIOSurfaceBackend&gt;::drawConsuming(WebCore::GraphicsContext&amp;, WebCore::FloatRect const&amp;, WebCore::FloatRect const&amp;, WebCore::ImagePaintingOptions const&amp;)
6   0x361738929 WebCore::ImageBuffer::drawConsuming(WTF::RefPtr&lt;WebCore::ImageBuffer, WTF::RawPtrTraits&lt;WebCore::ImageBuffer&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::ImageBuffer&gt; &gt;, WebCore::GraphicsContext&amp;, WebCore::FloatRect const&amp;, WebCore::FloatRect const&amp;, WebCore::ImagePaintingOptions const&amp;)
7   0x36170cf3d WebCore::GraphicsContext::drawConsumingImageBuffer(WTF::RefPtr&lt;WebCore::ImageBuffer, WTF::RawPtrTraits&lt;WebCore::ImageBuffer&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::ImageBuffer&gt; &gt;, WebCore::FloatRect const&amp;, WebCore::FloatRect const&amp;, WebCore::ImagePaintingOptions const&amp;)
8   0x36170ce98 WebCore::GraphicsContext::drawConsumingImageBuffer(WTF::RefPtr&lt;WebCore::ImageBuffer, WTF::RawPtrTraits&lt;WebCore::ImageBuffer&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::ImageBuffer&gt; &gt;, WebCore::FloatRect const&amp;, WebCore::ImagePaintingOptions const&amp;)
9   0x361c6dcea WebCore::RenderBoxModelObject::paintFillLayerExtended(WebCore::PaintInfo const&amp;, WebCore::Color const&amp;, WebCore::FillLayer const&amp;, WebCore::LayoutRect const&amp;, WebCore::BackgroundBleedAvoidance, WebCore::InlineIterator::InlineBoxIterator const&amp;, WebCore::LayoutRect const&amp;, WebCore::CompositeOperator, WebCore::RenderElement*, WebCore::BaseBackgroundColorUsage)
10  0x361c6bdfd WebCore::RenderBox::paintFillLayer(WebCore::PaintInfo const&amp;, WebCore::Color const&amp;, WebCore::FillLayer const&amp;, WebCore::LayoutRect const&amp;, WebCore::BackgroundBleedAvoidance, WebCore::CompositeOperator, WebCore::RenderElement*, WebCore::BaseBackgroundColorUsage)
11  0x361c653f1 WebCore::RenderBox::paintFillLayers(WebCore::PaintInfo const&amp;, WebCore::Color const&amp;, WebCore::FillLayer const&amp;, WebCore::LayoutRect const&amp;, WebCore::BackgroundBleedAvoidance, WebCore::CompositeOperator, WebCore::RenderElement*)
12  0x361c686d5 WebCore::RenderBox::paintBackground(WebCore::PaintInfo const&amp;, WebCore::LayoutRect const&amp;, WebCore::BackgroundBleedAvoidance)
13  0x361c65e2f WebCore::RenderBox::paintBoxDecorations(WebCore::PaintInfo&amp;, WebCore::LayoutPoint const&amp;)
14  0x361c33c74 WebCore::RenderBlock::paintObject(WebCore::PaintInfo&amp;, WebCore::LayoutPoint const&amp;)
15  0x361c32983 WebCore::RenderBlock::paint(WebCore::PaintInfo&amp;, WebCore::LayoutPoint const&amp;)
16  0x361d60a54 WebCore::RenderLayer::paintBackgroundForFragments(WTF::Vector&lt;WebCore::LayerFragment, 1ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc&gt; const&amp;, WebCore::GraphicsContext&amp;, WebCore::GraphicsContext&amp;, WebCore::LayoutRect const&amp;, bool, WebCore::RenderLayer::LayerPaintingInfo const&amp;, WTF::OptionSet&lt;WebCore::PaintBehavior&gt;, WebCore::RenderObject*)
17  0x361d5c997 WebCore::RenderLayer::paintLayerContents(WebCore::GraphicsContext&amp;, WebCore::RenderLayer::LayerPaintingInfo const&amp;, WTF::OptionSet&lt;WebCore::RenderLayer::PaintLayerFlag&gt;)
18  0x361d80b12 WebCore::RenderLayerBacking::paintIntoLayer(WebCore::GraphicsLayer const*, WebCore::GraphicsContext&amp;, WebCore::IntRect const&amp;, WTF::OptionSet&lt;WebCore::PaintBehavior&gt;, WebCore::EventRegionContext*)::$_25::operator()(WebCore::RenderLayer&amp;, WTF::OptionSet&lt;WebCore::RenderLayer::PaintLayerFlag&gt;) const
19  0x361d80433 WebCore::RenderLayerBacking::paintIntoLayer(WebCore::GraphicsLayer const*, WebCore::GraphicsContext&amp;, WebCore::IntRect const&amp;, WTF::OptionSet&lt;WebCore::PaintBehavior&gt;, WebCore::EventRegionContext*)
20  0x361d820a6 WebCore::RenderLayerBacking::paintContents(WebCore::GraphicsLayer const*, WebCore::GraphicsContext&amp;, WebCore::FloatRect const&amp;, unsigned int)
21  0x36171f76f WebCore::GraphicsLayer::paintGraphicsLayerContents(WebCore::GraphicsContext&amp;, WebCore::FloatRect const&amp;, unsigned int)
22  0x3617d9cef WebCore::GraphicsLayerCA::platformCALayerPaintContents(WebCore::PlatformCALayer*, WebCore::GraphicsContext&amp;, WebCore::FloatRect const&amp;, unsigned int)
23  0x35f3a7c9c WebCore::PlatformCALayer::drawLayerContents(WebCore::GraphicsContext&amp;, WebCore::PlatformCALayer*, WTF::Vector&lt;WebCore::FloatRect, 5ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc&gt;&amp;, unsigned int)
24  0x31df3025c WebKit::RemoteLayerBackingStore::drawInContext(WebCore::GraphicsContext&amp;)
25  0x31df2f6dd WebKit::RemoteLayerBackingStore::display()
26  0x31f5762fc WebKit::PlatformCALayerRemote::recursiveBuildTransaction(WebKit::RemoteLayerTreeContext&amp;, WebKit::RemoteLayerTreeTransaction&amp;)
27  0x31f57658b WebKit::PlatformCALayerRemote::recursiveBuildTransaction(WebKit::RemoteLayerTreeContext&amp;, WebKit::RemoteLayerTreeTransaction&amp;)
28  0x31f57658b WebKit::PlatformCALayerRemote::recursiveBuildTransaction(WebKit::RemoteLayerTreeContext&amp;, WebKit::RemoteLayerTreeTransaction&amp;)
29  0x31f57658b WebKit::PlatformCALayerRemote::recursiveBuildTransaction(WebKit::RemoteLayerTreeContext&amp;, WebKit::RemoteLayerTreeTransaction&amp;)
30  0x31f57658b WebKit::PlatformCALayerRemote::recursiveBuildTransaction(WebKit::RemoteLayerTreeContext&amp;, WebKit::RemoteLayerTreeTransaction&amp;)
31  0x31eaad5a1 WebKit::RemoteLayerTreeContext::buildTransaction(WebKit::RemoteLayerTreeTransaction&amp;, WebCore::PlatformCALayer&amp;)

Also GraphicsContext::drawConsumingImageBuffer() is a virtual method but it is only overriden by NullGraphicsContext. We need DisplayList::Recorder to override it so we can record the drawing command. DisplayList::RecorderImpl and RemoteDisplayListRecorderProxy need to implement the helper method recordDrawConsumingImageBuffer().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842130</commentid>
    <comment_count>1</comment_count>
      <attachid>452144</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-02-15 22:08:42 -0800</bug_when>
    <thetext>Created attachment 452144
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842131</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-02-15 22:10:11 -0800</bug_when>
    <thetext>&lt;rdar://problem/89007426&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846205</commentid>
    <comment_count>3</comment_count>
      <attachid>453270</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-02-25 15:15:14 -0800</bug_when>
    <thetext>Created attachment 453270
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846237</commentid>
    <comment_count>4</comment_count>
      <attachid>453270</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2022-02-25 16:49:39 -0800</bug_when>
    <thetext>Comment on attachment 453270
Patch

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

&gt; Source/WebKit/ChangeLog:22
&gt; +           drawConsuming() in this case because the backend is till owned by

&quot;till owned&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846253</commentid>
    <comment_count>5</comment_count>
      <attachid>453281</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-02-25 17:48:05 -0800</bug_when>
    <thetext>Created attachment 453281
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846276</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-25 21:07:20 -0800</bug_when>
    <thetext>Committed r290542 (247820@main): &lt;https://commits.webkit.org/247820@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 453281.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846947</commentid>
    <comment_count>7</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2022-03-01 01:22:38 -0800</bug_when>
    <thetext>This fixed a few crashes on the GPU Process bot, which need to be gardened</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847244</commentid>
    <comment_count>8</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2022-03-01 16:24:46 -0800</bug_when>
    <thetext>Gardening: &lt;https://commits.webkit.org/r290707&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847251</commentid>
    <comment_count>9</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2022-03-01 16:41:38 -0800</bug_when>
    <thetext>Gardening: &lt;https://commits.webkit.org/r290711&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452144</attachid>
            <date>2022-02-15 22:08:42 -0800</date>
            <delta_ts>2022-02-25 15:15:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236685-20220215220841.patch</filename>
            <type>text/plain</type>
            <size>43423</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NzgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDAwN2Q3YTU4NDYyYmFi
ZGRhZDlmNjE0MzBmMTIxMWJkZTU3YzlkNy4uMWQ0M2YzM2ZhNmEzYmI4YzI4YTRhNGNlZDgxYzY3
MzkxNmM4MTE0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg1IEBACisyMDIyLTAyLTE1ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
UmVtb3ZlIEltYWdlQnVmZmVyQmFja2VuZDo6ZHJhd0NvbnN1bWluZygpCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY2ODUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbWFnZUJ1ZmZlcjo6ZHJhd0NvbnN1
bWluZygpIGlzIGNvbW1vbmx5IHVzZWQgd2hlbiB0aGUgSW1hZ2VCdWZmZXIgaXMganVzdAorICAg
ICAgICBhIHNjcmF0Y2ggYnVmZmVyLiBUbyBkcmF3IHRoZSBzY3JhdGNoIGJ1ZmZlciB0byBhIGRl
c3RpbmF0aW9uIEdyYXBoaWNzQ29udGV4dCwKKyAgICAgICAgd2Ugd2FudCB0byBzYXZlIHRpbWUg
YW5kIG1lbW9yeSBieSBzaW5raW5nIHRoZSBwaXhlbHMgb2YgdGhlIEltYWdlQnVmZmVyCisgICAg
ICAgIHRvIGEgTmF0aXZlSW1hZ2UgaW5zdGVhZCBvZiBjb3B5aW5nIHRoZSBwaXhlbHMgdG8gYSBu
ZXcgTmF0aXZlSW1hZ2UuCisKKyAgICAgICAgVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gb2Yg
SW1hZ2VCdWZmZXI6OmRyYXdDb25zdW1pbmcoKSBpcyB0byBjYWxsIAorICAgICAgICB0aGUgZHJh
d0NvbnN1bWluZygpIG9mIHRoZSBiYWNrZW5kLiBCdXQgdGhpcyBpcyBpbmNvcnJlY3Qgd2hlbiBH
UFVQcm9jZXNzCisgICAgICAgIGlzIHVzZWQgZm9yIHJlbmRlcmluZyBiZWNhdXNlIHRoZSBXZWJQ
b3JjZXMgc2hvdWxkIG5vdCBoYXZlIGFjY2VzcyB0byB0aGUKKyAgICAgICAgYmFja2VuZC4gQmVz
aWRlcyB3ZSBzaG91bGQgbm90IHNpbmsgdGhlIFJlbW90ZUltYWdlQnVmZmVyIHRvIGEgTmF0aXZl
SW1hZ2UsCisgICAgICAgIHNlbmQgdG8gV2ViUHJvY2VzcyBhbmQgdGhlbiBzZW5kIGl0IGJhY2sg
dG8gR1BVUHJvY2VzcyBmb3IgZHJhd2luZyBpdCBvbgorICAgICAgICBhbm90aGVyIFJlbW90ZUlt
YWdlQnVmZmVyLgorCisgICAgICAgIFRoZSBmaXggaXM6CisKKyAgICAgICAgMSkgSW1hZ2VCdWZm
ZXI6OmRyYXdDb25zdW1pbmcoKSBjYWxscyBpdHMgc2lua0ludG9OYXRpdmVJbWFnZSgpIGFuZCB0
aGVuCisgICAgICAgIGRyYXcgdGhlIE5hdGl2ZUltYWdlLiBzaW5rSW50b05hdGl2ZUltYWdlKCkg
aXMgYWxyZWFkeSBpbXBsZW1lbnRlZCBmb3IKKyAgICAgICAgUmVtb3RlSW1hZ2VCdWZmZXJQcm94
eS4KKworICAgICAgICAyKSBNYWtlIERpc3BsYXlMaXN0OjpSZWNvcmRlciBvdmVycmlkZSBkcmF3
Q29uc3VtaW5nSW1hZ2VCdWZmZXIoKSBzbyB0aGUKKyAgICAgICAgY29tbWFuZCBpcyByZWNvcmRl
ZCBhbmQgc2VudCB0byBHUFVQcm9jZXNzLgorCisgICAgICAgIDMpIERpc3BsYXlMaXN0OjpSZWNv
cmRlckltcGwgYW5kIFJlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eSBuZWVkIHRvCisgICAg
ICAgIGltcGxlbWVudCB0aGUgaGVscGVyIG1ldGhvZCByZWNvcmREcmF3Q29uc3VtaW5nSW1hZ2VC
dWZmZXIoKSB3aGljaCByZWNvcmRzCisgICAgICAgIHRoZSBuZXcgaXRlbSBEcmF3Q29uc3VtaW5n
SW1hZ2VCdWZmZXIuCisKKyAgICAgICAgNCkgRW5zdXJlIHRoYXQgUmVtb3RlSW1hZ2VCdWZmZXIg
Y2FuIHdvcmsgY29ycmVjdGx5IGFmdGVyIHNpbmtpbmcgaXRzIAorICAgICAgICBiYWNrZW5kIGlu
dG8gYSBOYXRpdmVJbWFnZSBhbmQgZHJhd2luZyBpdC4gV2UgbmVlZCB0byBlbnN1cmUgUmVtb3Rl
SW1hZ2VCdWZmZXIKKyAgICAgICAgd2lsbCB0ZXJtaW5hdGUgc2FmZWx5IHdoZW4gaXQgaXMgcmVt
b3ZlZCBmcm9tIFJlbW90ZVJlc291cmNlQ2FjaGUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJh
Y2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpkcmF3Q29u
c3VtaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZl
ckJhY2tlbmQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQmFja2VuZDo6cHJlcGFy
ZVRvRHJhd0ludG9Db250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZUJ1ZmZlckNHQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQmFj
a2VuZDo6cHJlcGFyZVRvRHJhd0ludG9Db250ZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmRyYXcpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpkcmF3Q29uc3VtaW5nKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFj
ZUJhY2tlbmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRpc3BsYXlMaXN0
OjphcHBlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1CdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0
ZW1IYW5kbGU6OmFwcGx5KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFu
ZGxlOjpkZXN0cm95KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxl
OjpzYWZlQ29weSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OnNpemVPZkl0ZW1JbkJ5dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0Ojpp
c0RyYXdpbmdJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0Ojppc0lubGluZUl0
ZW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZW1UeXBlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdD
b25zdW1pbmdJbWFnZUJ1ZmZlcjo6YXBwbHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6Om9wZXJhdG9yPDwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6RHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVyOjpEcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdDb25zdW1pbmdJbWFnZUJ1ZmZlcjo6
aW1hZ2VCdWZmZXJJZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpEcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXI6OnNvdXJjZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVyOjpkZXN0aW5hdGlv
blJlY3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdDb25zdW1p
bmdJbWFnZUJ1ZmZlcjo6b3B0aW9ucyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6RHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVyOjppc1ZhbGlkIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXI6Omdsb2JhbEJv
dW5kcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0NvbnN1bWlu
Z0ltYWdlQnVmZmVyOjpsb2NhbEJvdW5kcyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpkcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVjb3JkZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNv
cmRlckltcGw6OnJlY29yZERyYXdDb25zdW1pbmdJbWFnZUJ1ZmZlcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmFwcGx5RHJhd0NvbnN1bWlu
Z0ltYWdlQnVmZmVySXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5
ZXI6OmFwcGx5SXRlbSk6CisKIDIwMjItMDItMTQgIERhbiBHbGFzdG9uYnVyeSAgPGRqZ0BhcHBs
ZS5jb20+CiAKICAgICAgICAgTW92ZSBQREZEb2N1bWVudC5jcHAvaCBpbiBjb3JyZWN0IHBvc2l0
aW9uIGluIFdlYkNvcmUueGNvZGVwcm9qCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGE2OWZlZWU2ZWViOTQ5YzlhNTRj
ZjE1MWRkNWEzZmJkMWVlOTY1MjAuLjZjY2EwM2I1Y2E1MGI3NjU3ZDhhOTNkNTA1NzIyMmQ2ZTg4
NzVlMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMjItMDItMTUgIFNhaWQgQWJvdS1I
YWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBSZW1vdmUg
SW1hZ2VCdWZmZXJCYWNrZW5kOjpkcmF3Q29uc3VtaW5nKCkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjY4NQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlY29yZCBhbmQgcmVwbGF5IGJhY2sgdGhlIG5l
dyBpdGVtIERyYXdDb25zdW1pbmdJbWFnZUJ1ZmZlci4gTWFrZSBzdXJlCisgICAgICAgIFJlbW90
ZUltYWdlQnVmZmVyIGJlIGF3YXJlIHRoYXQgdGhlIGJhY2tlbmQgY2FuIGJlIG51bGwgd2hlbiBp
dCBpcyBiZWluZworICAgICAgICBkZXN0cm95ZWQuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dy
YXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjpkcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjpkcmF3Q29uc3VtaW5nSW1h
Z2VCdWZmZXJXaXRoUXVhbGlmaWVkSWRlbnRpZmllcik6CisgICAgICAgICogR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmg6CisgICAgICAgICogR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlSW1hZ2VCdWZmZXI6On5SZW1vdGVJbWFnZUJ1ZmZlcik6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5OjpyZWNv
cmREcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5oOgorCiAyMDIyLTAyLTE0ICBT
YWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUgUHJvY2Vz
c10gUmVtb3RlSW1hZ2VCdWZmZXJQcm94eSBzaG91bGQgbm90IHNpbmsgaXRzZWxmIHRvIGFuIElt
YWdlIG9yIGEgTmF0aXZlSW1hZ2UgdGhvdWdoIGl0cyBiYWNrZW5kCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgKaW5kZXgg
ZTMyZTcwNDdlYjFiZTQ4ZmEzOGNmOGQzMjVmNzcwNDhkOGRmZGE4ZS4uODNkZDFmMWE1ZGMzMTIy
OWJhMGU3YTJlMzI1YTE1OTNmODQ1NTFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaApAQCAtMjgsNiArMjgsNyBA
QAogI2luY2x1ZGUgIkZpbHRlci5oIgogI2luY2x1ZGUgIkZpbHRlckltYWdlLmgiCiAjaW5jbHVk
ZSAiRmlsdGVyUmVzdWx0cy5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1
ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiUGl4ZWxCdWZmZXIuaCIKIApAQCAtMTIyLDYg
KzEyMywxMiBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHJldHVybiBCYWNrZW5kVHlwZTo6Y2FsY3Vs
YXRlRXh0ZXJuYWxNZW1vcnlDb3N0KG1fcGFyYW1ldGVycyk7CiAgICAgfQogCisgICAgdm9pZCBw
cmVwYXJlVG9EcmF3SW50b0NvbnRleHQoR3JhcGhpY3NDb250ZXh0JiBkZXN0aW5hdGlvbkNvbnRl
eHQpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoYXV0byogYmFja2VuZCA9IGVuc3VyZUJh
Y2tlbmRDcmVhdGVkKCkpCisgICAgICAgICAgICBiYWNrZW5kLT5wcmVwYXJlVG9EcmF3SW50b0Nv
bnRleHQoZGVzdGluYXRpb25Db250ZXh0KTsKKyAgICB9CisKICAgICBSZWZQdHI8TmF0aXZlSW1h
Z2U+IGNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvciA9IENvcHlC
YWNraW5nU3RvcmUpIGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAoYXV0byogYmFj
a2VuZCA9IGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpIHsKQEAgLTE5NiwxMiArMjAzLDE4IEBAIHBy
b3RlY3RlZDoKIAogICAgIHZvaWQgZHJhd0NvbnN1bWluZyhHcmFwaGljc0NvbnRleHQmIGRlc3RD
b250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKSBvdmVycmlkZQogICAgIHsK
LSAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBlbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKSB7Ci0g
ICAgICAgICAgICBmbHVzaERyYXdpbmdDb250ZXh0KCk7Ci0gICAgICAgICAgICBiYWNrZW5kLT5k
cmF3Q29uc3VtaW5nKGRlc3RDb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7Ci0g
ICAgICAgIH0KKyAgICAgICAgcHJlcGFyZVRvRHJhd0ludG9Db250ZXh0KGRlc3RDb250ZXh0KTsK
KworICAgICAgICBGbG9hdFJlY3QgYWRqdXN0ZWRTcmNSZWN0ID0gc3JjUmVjdDsKKyAgICAgICAg
YWRqdXN0ZWRTcmNSZWN0LnNjYWxlKHJlc29sdXRpb25TY2FsZSgpKTsKKworICAgICAgICBpZiAo
YXV0byBpbWFnZSA9IHNpbmtJbnRvTmF0aXZlSW1hZ2UoKSkKKyAgICAgICAgICAgIGRlc3RDb250
ZXh0LmRyYXdOYXRpdmVJbWFnZSgqaW1hZ2UsIGltYWdlLT5zaXplKCksIGRlc3RSZWN0LCBhZGp1
c3RlZFNyY1JlY3QsIG9wdGlvbnMpOworCisgICAgICAgIC8vIENsZWFyIHRoZSBiYWNrZW5kIHNv
IGNhbGxzIHRvIGFueSBmdW5jdGlvbiBpbiB0aGlzIGNsYXNzIHdpbGwgZmFpbCBidXQgd29uJ3Qg
Y3Jhc2guCisgICAgICAgIGNsZWFyQmFja2VuZCgpOwogICAgIH0KLSAgICAKKwogICAgIHZvaWQg
Y2xpcFRvTWFzayhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0KSBvdmVycmlkZQogICAgIHsKICAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBl
bnN1cmVCYWNrZW5kQ3JlYXRlZCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXIuaAppbmRleCAzZWRhMjVmNDRiYjRhODlhNmFlNTA2NjMwOGIxMDc4
ZTMxYzU5OWYxLi45NWU0YTg2ZmMzNjM4ODhlNjEzMTRmN2QxM2NmZGY0OTAxNDhmNDZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKQEAgLTk2
LDYgKzk2LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8VGhyZWFk
U2FmZUltYWdlQnVmZmVyRmx1c2hlcj4gY3JlYXRlRmx1c2hlcigpID0gMDsKIAorICAgIHZpcnR1
YWwgdm9pZCBwcmVwYXJlVG9EcmF3SW50b0NvbnRleHQoR3JhcGhpY3NDb250ZXh0JikgPSAwOwor
CiAgICAgdmlydHVhbCBSZWZQdHI8TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShCYWNraW5n
U3RvcmVDb3B5ID0gQ29weUJhY2tpbmdTdG9yZSkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUmVm
UHRyPEltYWdlPiBjb3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5nU3RvcmUs
IFByZXNlcnZlUmVzb2x1dGlvbiA9IFByZXNlcnZlUmVzb2x1dGlvbjo6Tm8pIGNvbnN0ID0gMDsK
ICAgICB2aXJ0dWFsIFJlZlB0cjxJbWFnZT4gZmlsdGVyZWRJbWFnZShGaWx0ZXImKSA9IDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJh
Y2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJC
YWNrZW5kLmNwcAppbmRleCBjNjhkMzE4ZDNmMzllN2M0NmE0NTMyMGI4ODhlYzFiYWRjMTQ0ODhh
Li5kMGUzMTM0MjAwYjYxYmY5OTc5ZjY2NTUwMzAwMjg4ZjNiZjZiOGIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5j
cHAKQEAgLTY1LDExICs2NSw2IEBAIFJlZlB0cjxJbWFnZT4gSW1hZ2VCdWZmZXJCYWNrZW5kOjpz
aW5rSW50b0ltYWdlKFByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sCiAgICAgcmV0dXJu
IGNvcHlJbWFnZShEb250Q29weUJhY2tpbmdTdG9yZSwgcHJlc2VydmVSZXNvbHV0aW9uKTsKIH0K
IAotdm9pZCBJbWFnZUJ1ZmZlckJhY2tlbmQ6OmRyYXdDb25zdW1pbmcoR3JhcGhpY3NDb250ZXh0
JiBkZXN0aW5hdGlvbkNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb25SZWN0LCBj
b25zdCBGbG9hdFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBv
cHRpb25zKQotewotICAgIGRyYXcoZGVzdGluYXRpb25Db250ZXh0LCBkZXN0aW5hdGlvblJlY3Qs
IHNvdXJjZVJlY3QsIG9wdGlvbnMpOwotfQotCiB2b2lkIEltYWdlQnVmZmVyQmFja2VuZDo6Y29u
dmVydFRvTHVtaW5hbmNlTWFzaygpCiB7CiAgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsg
QWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdC
QTgsIGNvbG9yU3BhY2UoKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaAppbmRleCA0NTA3OGQ0MDlmM2E5ZDA1MjQ2MDI1
YjNmZWJlMGY0ODhkZGMwMjVkLi4yMWViZDUwZTdmOTUzMmM1YmNkNDJjYmIwYTRmN2UxY2ZjYzEz
ODE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlckJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlckJhY2tlbmQuaApAQCAtOTAsNiArOTAsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IEludFNpemUgYmFja2VuZFNpemUoKSBjb25zdCB7IHJldHVybiB7IH07IH0KIAorICAgIHZpcnR1
YWwgdm9pZCBwcmVwYXJlVG9EcmF3SW50b0NvbnRleHQoR3JhcGhpY3NDb250ZXh0JikgeyB9CisK
ICAgICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUltYWdlKEJhY2tpbmdT
dG9yZUNvcHkpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFJlZlB0cjxJbWFnZT4gY29weUltYWdl
KEJhY2tpbmdTdG9yZUNvcHksIFByZXNlcnZlUmVzb2x1dGlvbikgY29uc3QgPSAwOwogCkBAIC05
OCw3ICsxMDAsNiBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIFJlZlB0
cjxOYXRpdmVJbWFnZT4gc2lua0ludG9OYXRpdmVJbWFnZSgpOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZpcnR1YWwgUmVmUHRyPEltYWdlPiBzaW5rSW50b0ltYWdlKFByZXNlcnZlUmVzb2x1dGlvbik7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRyYXdDb25zdW1pbmcoR3JhcGhpY3ND
b250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOwogCiAgICAgdmly
dHVhbCB2b2lkIGNsaXBUb01hc2soR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jikg
eyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlQnVmZmVyQ0dCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcAppbmRleCAxYWMxYmEzZTQ2ZmY1NDk2YzhkNmIw
NzI1MGYxNmE5MGU5MGM2ZDFjLi5kNDk5OTVjOTgwOTNhYmUzNzUxYmE5NDhhNDk0NGQxOWQzNjJi
YzAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZUJ1ZmZlckNHQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3BwCkBAIC0yNDgsMTAgKzI0OCw2IEBAIHN0ZDo6
dW5pcXVlX3B0cjxUaHJlYWRTYWZlSW1hZ2VCdWZmZXJGbHVzaGVyPiBJbWFnZUJ1ZmZlckNHQmFj
a2VuZDo6Y3JlYXRlRmx1c2hlCiAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VGhyZWFkU2FmZUltYWdl
QnVmZmVyRmx1c2hlckNHPihjb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCkpOwogfQogCi12b2lk
IEltYWdlQnVmZmVyQ0dCYWNrZW5kOjpwcmVwYXJlVG9EcmF3SW50b0NvbnRleHQoR3JhcGhpY3ND
b250ZXh0JikKLXsKLX0KLQogYm9vbCBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6b3JpZ2luQXRCb3R0
b21MZWZ0Q29ybmVyKCkgY29uc3QKIHsKICAgICByZXR1cm4gaXNPcmlnaW5BdEJvdHRvbUxlZnRD
b3JuZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZUJ1ZmZlckNHQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuaAppbmRleCAxMmJlNDI5Y2Y2MGU2OTQyYTE5YWFmZGRh
ZTc3MjBhZThhNTkyY2I0Li5jNTJhMjg0NjYwZjcwN2E0NTIxNDdiYzA4NjNmNjYzMDRkNjgzZGIx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlckNHQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmgKQEAgLTYwLDggKzYwLDYgQEAgcHJvdGVjdGVkOgogCiAg
ICAgc3RhdGljIFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IGNvbnRleHRDb2xvclNwYWNlKGNv
bnN0IEdyYXBoaWNzQ29udGV4dCYpOwogCi0gICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb0RyYXdJ
bnRvQ29udGV4dChHcmFwaGljc0NvbnRleHQmKTsKLQogICAgIHZpcnR1YWwgUmV0YWluUHRyPENH
SW1hZ2VSZWY+IGNvcHlDR0ltYWdlRm9yRW5jb2RpbmcoQ0ZTdHJpbmdSZWYgZGVzdGluYXRpb25V
VEksIFByZXNlcnZlUmVzb2x1dGlvbikgY29uc3Q7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1
cmZhY2VCYWNrZW5kLmNwcAppbmRleCA4ZjZlMGZhMmU3NmNiZDhkNDRiYjc1YjkwYTdhNmFmNDFj
ZjUyNzMxLi42NmZkZjkyYzJmNDBiM2ZlNzgyMjZiMTIxZDA0MjM2ZTJlZGM5NzllIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3Vy
ZmFjZUJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAKQEAgLTE4MywxNyArMTgzLDYgQEAgdm9p
ZCBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmRyYXcoR3JhcGhpY3NDb250ZXh0JiBkZXN0
Q29udGV4dCwgY29uc3QgRmxvYXQKICAgICBpZiAoZGVzdENvbnRleHQucmVuZGVyaW5nTW9kZSgp
ICE9IGNvbnRleHQoKS5yZW5kZXJpbmdNb2RlKCkpCiAgICAgICAgIGludmFsaWRhdGVDYWNoZWRO
YXRpdmVJbWFnZSgpOwogfQotdm9pZCBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmRyYXdD
b25zdW1pbmcoR3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgb3B0aW9ucykKLXsKLSAgICBwcmVwYXJlVG9EcmF3SW50b0NvbnRleHQoZGVzdENvbnRl
eHQpOwotCi0gICAgRmxvYXRSZWN0IGFkanVzdGVkU3JjUmVjdCA9IHNyY1JlY3Q7Ci0gICAgYWRq
dXN0ZWRTcmNSZWN0LnNjYWxlKHJlc29sdXRpb25TY2FsZSgpKTsKLQotICAgIGF1dG8gYmFja2Vu
ZFNpemUgPSB0aGlzLT5iYWNrZW5kU2l6ZSgpOwotICAgIGlmIChhdXRvIGltYWdlID0gc2lua0lu
dG9OYXRpdmVJbWFnZSgpKQotICAgICAgICBkZXN0Q29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoKmlt
YWdlLCBiYWNrZW5kU2l6ZSwgZGVzdFJlY3QsIGFkanVzdGVkU3JjUmVjdCwgb3B0aW9ucyk7Ci19
CiAKIFJldGFpblB0cjxDR0ltYWdlUmVmPiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNv
cHlDR0ltYWdlRm9yRW5jb2RpbmcoQ0ZTdHJpbmdSZWYgZGVzdGluYXRpb25VVEksIFByZXNlcnZl
UmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tl
bmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9T
dXJmYWNlQmFja2VuZC5oCmluZGV4IDFhOGRlYTI2YTM4MDRlZGFmZGUwOGViOTRkN2NmZmE2MmNh
OGVmOWYuLjVjMDgyMjNiMmVmYWVlZmY0YzAwMmI4MjIxMmIyNjU3YmExYzA4ZTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJm
YWNlQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oCkBAIC02MSw3ICs2MSw2IEBAIHByb3RlY3RlZDoK
ICAgICBSZWZQdHI8TmF0aXZlSW1hZ2U+IHNpbmtJbnRvTmF0aXZlSW1hZ2UoKSBvdmVycmlkZTsK
IAogICAgIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3Q29uc3VtaW5nKEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKIAogICAgIHN0ZDo6
b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IGdldFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyRm9y
bWF0JiBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3QmKSBjb25zdCBvdmVycmlkZTsKICAgICB2
b2lkIHB1dFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyJiwgY29uc3QgSW50UmVjdCYgc3Jj
UmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBk
ZXN0Rm9ybWF0KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCmluZGV4IDc5ZjRj
NDY5OGM3MjUwMzZhNDc1MjU2OGIxMTljMjc0M2I2ZGZiMzMuLjJiNTAyMmRlN2FmY2ZkNWIyZjNh
YTU3N2RmZjkwMWRmZjY4N2U0YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcApAQCAtMjQ2
LDYgKzI0Niw4IEBAIHZvaWQgRGlzcGxheUxpc3Q6OmFwcGVuZChJdGVtSGFuZGxlIGl0ZW0pCiAg
ICAgICAgIHJldHVybiBhcHBlbmQ8RHJhd0dseXBocz4oaXRlbS5nZXQ8RHJhd0dseXBocz4oKSk7
CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyOgogICAgICAgICByZXR1cm4gYXBw
ZW5kPERyYXdJbWFnZUJ1ZmZlcj4oaXRlbS5nZXQ8RHJhd0ltYWdlQnVmZmVyPigpKTsKKyAgICBj
YXNlIEl0ZW1UeXBlOjpEcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXI6CisgICAgICAgIHJldHVybiBh
cHBlbmQ8RHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVyPihpdGVtLmdldDxEcmF3Q29uc3VtaW5nSW1h
Z2VCdWZmZXI+KCkpOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKICAgICAg
ICAgcmV0dXJuIGFwcGVuZDxEcmF3TmF0aXZlSW1hZ2U+KGl0ZW0uZ2V0PERyYXdOYXRpdmVJbWFn
ZT4oKSk7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
QnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCmluZGV4IGNmNjE2ODczZGZmMGQ4YmFkN2Q2ZjFi
MTMwMWE3Y2MxMWY3ZTAzOGIuLmY5NmM1MmQ0ZTQ2ODcwMzE5OTZmOTE1M2NlZDljZjdjNzEyZDUw
ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCkBAIC0x
MTgsNiArMTE4LDkgQEAgdm9pZCBJdGVtSGFuZGxlOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQpCiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyOgogICAgICAgICBnZXQ8
RHJhd0ltYWdlQnVmZmVyPigpLmFwcGx5KGNvbnRleHQpOwogICAgICAgICByZXR1cm47CisgICAg
Y2FzZSBJdGVtVHlwZTo6RHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVyOgorICAgICAgICBnZXQ8RHJh
d0NvbnN1bWluZ0ltYWdlQnVmZmVyPigpLmFwcGx5KGNvbnRleHQpOworICAgICAgICByZXR1cm47
CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOgogICAgICAgICBnZXQ8RHJhd05h
dGl2ZUltYWdlPigpLmFwcGx5KGNvbnRleHQpOwogICAgICAgICByZXR1cm47CkBAIC0zMzUsNiAr
MzM4LDkgQEAgdm9pZCBJdGVtSGFuZGxlOjpkZXN0cm95KCkKICAgICBjYXNlIEl0ZW1UeXBlOjpE
cmF3SW1hZ2VCdWZmZXI6CiAgICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlf
ZGVzdHJ1Y3RpYmxlPERyYXdJbWFnZUJ1ZmZlcj46OnZhbHVlKTsKICAgICAgICAgcmV0dXJuOwor
ICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdDb25zdW1pbmdJbWFnZUJ1ZmZlcjoKKyAgICAgICAgc3Rh
dGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8RHJhd0NvbnN1bWluZ0lt
YWdlQnVmZmVyPjo6dmFsdWUpOworICAgICAgICByZXR1cm47CiAgICAgY2FzZSBJdGVtVHlwZTo6
RHJhd05hdGl2ZUltYWdlOgogICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5
X2Rlc3RydWN0aWJsZTxEcmF3TmF0aXZlSW1hZ2U+Ojp2YWx1ZSk7CiAgICAgICAgIHJldHVybjsK
QEAgLTQ4NSw2ICs0OTEsOCBAQCBib29sIEl0ZW1IYW5kbGU6OnNhZmVDb3B5KEl0ZW1UeXBlIGl0
ZW1UeXBlLCBJdGVtSGFuZGxlIGRlc3RpbmF0aW9uKSBjb25zdAogICAgICAgICByZXR1cm4gY29w
eUludG88RHJhd0dseXBocz4oaXRlbU9mZnNldCwgKnRoaXMpOwogICAgIGNhc2UgSXRlbVR5cGU6
OkRyYXdJbWFnZUJ1ZmZlcjoKICAgICAgICAgcmV0dXJuIGNvcHlJbnRvPERyYXdJbWFnZUJ1ZmZl
cj4oaXRlbU9mZnNldCwgKnRoaXMpOworICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdDb25zdW1pbmdJ
bWFnZUJ1ZmZlcjoKKyAgICAgICAgcmV0dXJuIGNvcHlJbnRvPERyYXdDb25zdW1pbmdJbWFnZUJ1
ZmZlcj4oaXRlbU9mZnNldCwgKnRoaXMpOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lc0Zv
clRleHQ6CiAgICAgICAgIHJldHVybiBjb3B5SW50bzxEcmF3TGluZXNGb3JUZXh0PihpdGVtT2Zm
c2V0LCAqdGhpcyk7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuY3BwCmluZGV4IGRhMDVkNmNiZTM4ZmEwYjYx
NGZlYzllMzM2MTgwMDQ5N2Y2NzI0Y2YuLmJiNGY5ZWVlMDI4N2JjNDBlM2NkYmRiNWFmMGI0YmU3
OTQ5MmU3ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtVHlwZS5jcHAKQEAg
LTgyLDYgKzgyLDggQEAgc3RhdGljIHNpemVfdCBzaXplT2ZJdGVtSW5CeXRlcyhJdGVtVHlwZSB0
eXBlKQogICAgICAgICByZXR1cm4gc2l6ZW9mKERyYXdHbHlwaHMpOwogICAgIGNhc2UgSXRlbVR5
cGU6OkRyYXdJbWFnZUJ1ZmZlcjoKICAgICAgICAgcmV0dXJuIHNpemVvZihEcmF3SW1hZ2VCdWZm
ZXIpOworICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdDb25zdW1pbmdJbWFnZUJ1ZmZlcjoKKyAgICAg
ICAgcmV0dXJuIHNpemVvZihEcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIpOwogICAgIGNhc2UgSXRl
bVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKICAgICAgICAgcmV0dXJuIHNpemVvZihEcmF3TmF0aXZl
SW1hZ2UpOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgpAQCAtMjEyLDYgKzIxNCw3
IEBAIGJvb2wgaXNEcmF3aW5nSXRlbShJdGVtVHlwZSB0eXBlKQogICAgIGNhc2UgSXRlbVR5cGU6
OkRyYXdGb2N1c1JpbmdSZWN0czoKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3R2x5cGhzOgogICAg
IGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjoKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3
Q29uc3VtaW5nSW1hZ2VCdWZmZXI6CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xpbmU6CiAgICAg
Y2FzZSBJdGVtVHlwZTo6RHJhd0xpbmVzRm9yVGV4dDoKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3
TmF0aXZlSW1hZ2U6CkBAIC0zMTEsNiArMzE0LDcgQEAgYm9vbCBpc0lubGluZUl0ZW0oSXRlbVR5
cGUgdHlwZSkKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RWxsaXBzZToKICAgICBjYXNlIEl0ZW1U
eXBlOjpEcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcjoKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1h
Z2VCdWZmZXI6CisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVyOgog
ICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKICAgICBjYXNlIEl0ZW1UeXBlOjpE
cmF3UGF0dGVybjoKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TGluZToKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1UeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtVHlwZS5oCmluZGV4IGE0ZGZhM2Q3NjlhYjk1MDk3NTM1ZDMxM2ZmOTYx
YzRhYzBhMTAwYTIuLjNkZmM0Y2RkMmYzMzFjZDZlMmFjZDIyOWU4YWQ0MDFhZDY4NTcyMTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1UeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuaApAQCAtNTMsNiArNTMsNyBAQCBl
bnVtIGNsYXNzIEl0ZW1UeXBlIDogdWludDhfdCB7CiAgICAgRHJhd0ZpbHRlcmVkSW1hZ2VCdWZm
ZXIsCiAgICAgRHJhd0dseXBocywKICAgICBEcmF3SW1hZ2VCdWZmZXIsCisgICAgRHJhd0NvbnN1
bWluZ0ltYWdlQnVmZmVyLAogICAgIERyYXdOYXRpdmVJbWFnZSwKICAgICBEcmF3UGF0dGVybiwK
ICAgICBEcmF3UmVjdCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAppbmRleCBi
OTM4YmZkMjY4MTRkMGMxY2JjNjQxNDlmMTRjOTk0ZDNjNGEzN2MxLi5jNjgzMjk0MmJjOGNlYzkx
NWZjZTU2YzczZDE0YjQ5Nzc4OTEwNzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bXMuY3BwCkBAIC0zNzksNiArMzc5LDI0IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEcmF3SW1hZ2VCdWZmZXImIGl0ZW0pCiAgICAgcmV0dXJu
IHRzOwogfQogCitOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2b2lkIERyYXdDb25zdW1pbmdJbWFn
ZUJ1ZmZlcjo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKK30KKwordm9pZCBEcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXI6OmFwcGx5KEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBpbWFn
ZUJ1ZmZlcikgY29uc3QKK3sKKyAgICBjb250ZXh0LmRyYXdDb25zdW1pbmdJbWFnZUJ1ZmZlcihX
VEZNb3ZlKGltYWdlQnVmZmVyKSwgbV9kZXN0aW5hdGlvblJlY3QsIG1fc3JjUmVjdCwgbV9vcHRp
b25zKTsKK30KKworc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMs
IGNvbnN0IERyYXdDb25zdW1pbmdJbWFnZUJ1ZmZlciYgaXRlbSkKK3sKKyAgICB0cy5kdW1wUHJv
cGVydHkoImltYWdlLWJ1ZmZlci1pZGVudGlmaWVyIiwgaXRlbS5pbWFnZUJ1ZmZlcklkZW50aWZp
ZXIoKSk7CisgICAgdHMuZHVtcFByb3BlcnR5KCJzb3VyY2UtcmVjdCIsIGl0ZW0uc291cmNlKCkp
OworICAgIHRzLmR1bXBQcm9wZXJ0eSgiZGVzdC1yZWN0IiwgaXRlbS5kZXN0aW5hdGlvblJlY3Qo
KSk7CisgICAgcmV0dXJuIHRzOworfQorCiBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2b2lkIERy
YXdOYXRpdmVJbWFnZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3QKIHsKICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKQEAgLTEwMTEsNiArMTAyOSw3IEBAIHN0YXRpYyBUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBJdGVtVHlwZSB0eXBlKQogICAgIGNhc2UgSXRl
bVR5cGU6OkRyYXdGaWx0ZXJlZEltYWdlQnVmZmVyOiB0cyA8PCAiZHJhdy1maWx0ZXJlZC1pbWFn
ZS1idWZmZXIiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3R2x5cGhzOiB0cyA8PCAi
ZHJhdy1nbHlwaHMiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6
IHRzIDw8ICJkcmF3LWltYWdlLWJ1ZmZlciI7IGJyZWFrOworICAgIGNhc2UgSXRlbVR5cGU6OkRy
YXdDb25zdW1pbmdJbWFnZUJ1ZmZlcjogdHMgPDwgImRyYXctY29uc3VtaW5nLWltYWdlLWJ1ZmZl
ciI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZTogdHMgPDwgImRy
YXctbmF0aXZlLWltYWdlIjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46
IHRzIDw8ICJkcmF3LXBhdHRlcm4iOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UmVj
dDogdHMgPDwgImRyYXctcmVjdCI7IGJyZWFrOwpAQCAtMTEyOSw2ICsxMTQ4LDkgQEAgVGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgSXRlbUhhbmRsZSBpdGVtKQogICAgIGNh
c2UgSXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjoKICAgICAgICAgdHMgPDwgaXRlbS5nZXQ8RHJh
d0ltYWdlQnVmZmVyPigpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3
Q29uc3VtaW5nSW1hZ2VCdWZmZXI6CisgICAgICAgIHRzIDw8IGl0ZW0uZ2V0PERyYXdDb25zdW1p
bmdJbWFnZUJ1ZmZlcj4oKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJh
d05hdGl2ZUltYWdlOgogICAgICAgICB0cyA8PCBpdGVtLmdldDxEcmF3TmF0aXZlSW1hZ2U+KCk7
CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKaW5kZXggMDZi
MWFlNjQ5MzY2ZjgyNDdlMTYwMTA5YmQwZGQ2NDk0MWQyNzIwOC4uMmU4NDhlMTdmYzAyYjIzNGQ0
ZTFlMzk0Mzc2MzNhNDQxMzg0ODliNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5o
CkBAIC05NTgsNiArOTU4LDQxIEBAIHByaXZhdGU6CiAgICAgSW1hZ2VQYWludGluZ09wdGlvbnMg
bV9vcHRpb25zOwogfTsKIAorY2xhc3MgRHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVyIHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgY29uc3RleHByIEl0ZW1UeXBlIGl0ZW1UeXBlID0gSXRlbVR5cGU6OkRy
YXdDb25zdW1pbmdJbWFnZUJ1ZmZlcjsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJbmxp
bmVJdGVtID0gdHJ1ZTsKKyAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNEcmF3aW5nSXRlbSA9
IHRydWU7CisKKyAgICBEcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIoUmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyIGltYWdlQnVmZmVySWRlbnRpZmllciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYg
b3B0aW9ucykKKyAgICAgICAgOiBtX2ltYWdlQnVmZmVySWRlbnRpZmllcihpbWFnZUJ1ZmZlcklk
ZW50aWZpZXIpCisgICAgICAgICwgbV9kZXN0aW5hdGlvblJlY3QoZGVzdFJlY3QpCisgICAgICAg
ICwgbV9zcmNSZWN0KHNyY1JlY3QpCisgICAgICAgICwgbV9vcHRpb25zKG9wdGlvbnMpCisgICAg
eworICAgIH0KKworICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZlcklk
ZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlQnVmZmVySWRlbnRpZmllcjsgfQorICAg
IEZsb2F0UmVjdCBzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX3NyY1JlY3Q7IH0KKyAgICBGbG9h
dFJlY3QgZGVzdGluYXRpb25SZWN0KCkgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlvblJlY3Q7
IH0KKyAgICBJbWFnZVBhaW50aW5nT3B0aW9ucyBvcHRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9v
cHRpb25zOyB9CisgICAgLy8gRklYTUU6IFdlIG1pZ2h0IHdhbnQgdG8gdmFsaWRhdGUgSW1hZ2VQ
YWludGluZ09wdGlvbnMuCisgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9pbWFn
ZUJ1ZmZlcklkZW50aWZpZXIuaXNWYWxpZCgpOyB9CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGFwcGx5KEdyYXBoaWNzQ29udGV4dCYsIFJlZlB0cjxJbWFnZUJ1ZmZlcj4pIGNvbnN0OworCisg
ICAgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBj
b25zdDsKKworICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRSZWN0PiBnbG9iYWxCb3VuZHMoKSBjb25z
dCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UmVjdD4g
bG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3QgeyByZXR1cm4gbV9kZXN0
aW5hdGlvblJlY3Q7IH0KKworcHJpdmF0ZToKKyAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIgbV9pbWFnZUJ1ZmZlcklkZW50aWZpZXI7CisgICAgRmxvYXRSZWN0IG1fZGVzdGluYXRpb25S
ZWN0OworICAgIEZsb2F0UmVjdCBtX3NyY1JlY3Q7CisgICAgSW1hZ2VQYWludGluZ09wdGlvbnMg
bV9vcHRpb25zOworfTsKKwogY2xhc3MgRHJhd05hdGl2ZUltYWdlIHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgY29uc3RleHByIEl0ZW1UeXBlIGl0ZW1UeXBlID0gSXRlbVR5cGU6OkRyYXdOYXRpdmVJ
bWFnZTsKQEAgLTIzMDcsNiArMjM0Miw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlPiB7CiAgICAgV2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW1UeXBlOjpDbGlwUGF0aCwKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5
cGU6OkRyYXdHbHlwaHMsCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3
SW1hZ2VCdWZmZXIsCisgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3Q29u
c3VtaW5nSW1hZ2VCdWZmZXIsCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpE
cmF3TmF0aXZlSW1hZ2UsCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3
UGF0dGVybiwKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdSZWN0LApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCmluZGV4IGNlOTJjZTU1ODc3
YjRiZmQ3ODI0NGQwYTQ0Y2M1NGViYTVjODYwNjAuLjc4MDEyZmM1ZTFkOTM1NDA3ZjUzMzc4NjZj
MTIxOTE1MDhjYTUzZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5j
cHAKQEAgLTE5NSw2ICsxOTUsMjEgQEAgdm9pZCBSZWNvcmRlcjo6ZHJhd0ltYWdlQnVmZmVyKElt
YWdlQnVmZmVyJiBpbWFnZUJ1ZmZlciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmUKICAgICByZWNv
cmREcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25z
KTsKIH0KIAordm9pZCBSZWNvcmRlcjo6ZHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVyKFJlZlB0cjxJ
bWFnZUJ1ZmZlcj4gaW1hZ2VCdWZmZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMp
Cit7CisgICAgaWYgKCFpbWFnZUJ1ZmZlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXBwZW5k
U3RhdGVDaGFuZ2VJdGVtSWZOZWNlc3NhcnkoKTsKKworICAgIGlmICghcmVjb3JkUmVzb3VyY2VV
c2UoKmltYWdlQnVmZmVyKSkgeworICAgICAgICBHcmFwaGljc0NvbnRleHQ6OmRyYXdDb25zdW1p
bmdJbWFnZUJ1ZmZlcihXVEZNb3ZlKGltYWdlQnVmZmVyKSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9w
dGlvbnMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgcmVjb3JkRHJhd0NvbnN1bWlu
Z0ltYWdlQnVmZmVyKCppbWFnZUJ1ZmZlciwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOwor
fQorCiB2b2lkIFJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmIGltYWdlLCBj
b25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9u
cykKIHsKICAgICBhcHBlbmRTdGF0ZUNoYW5nZUl0ZW1JZk5lY2Vzc2FyeSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKaW5kZXggNmFhMTNkOGQwMDZjZGYyNjdmYThlZDQy
Mzc4MmQ4NzI5OTdlMjVhMy4uYjkxMDgxYjk0MDk4MDU0YzI4YjJhZWJiMWM0OWViMGI2ZjQ1NzNh
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCkBAIC04NSw2ICs4NSw3
IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgcmVjb3JkRHJhd0ZpbHRlcmVkSW1hZ2VC
dWZmZXIoSW1hZ2VCdWZmZXIqLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCwgRmls
dGVyJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZWNvcmREcmF3R2x5cGhzKGNvbnN0IEZvbnQm
LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiwgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5z
aWduZWQgY291bnQsIGNvbnN0IEZsb2F0UG9pbnQmIGxvY2FsQW5jaG9yLCBGb250U21vb3RoaW5n
TW9kZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZWNvcmREcmF3SW1hZ2VCdWZmZXIoSW1hZ2VC
dWZmZXImLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBy
ZWNvcmREcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZWNvcmREcmF3TmF0aXZlSW1hZ2Uo
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGltYWdlSWRlbnRpZmllciwgY29uc3QgRmxvYXRT
aXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHJlY29yZERyYXdQYXR0ZXJuKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgY29u
c3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0
UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiA9IHsgfSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZWNvcmRCZWdpblRyYW5z
cGFyZW5jeUxheWVyKGZsb2F0KSA9IDA7CkBAIC0yMjEsNiArMjIyLDcgQEAgcHJpdmF0ZToKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRyYXdHbHlwaHNBbmRDYWNoZUZvbnQoY29uc3QgRm9udCYs
IGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqLCB1bnNp
Z25lZCBjb3VudCwgY29uc3QgRmxvYXRQb2ludCYgbG9jYWxBbmNob3IsIEZvbnRTbW9vdGhpbmdN
b2RlKSBmaW5hbDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd0ltYWdlQnVmZmVyKElt
YWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0
JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgZmluYWw7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBkcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXIoUmVmUHRyPEltYWdlQnVmZmVy
PiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2Us
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgZmluYWw7CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFNpemUmIGltYWdl
U2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZHJhd1BhdHRlcm4oTmF0aXZlSW1hZ2UmLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6
ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxv
YXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIGZpbmFsOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZWNvcmRlckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmNwcAppbmRleCBjMjkx
NDhlMDQzODExYzVlZTA0YmU2MTNhN2YxYzc1YTQ5NDkwMGQ2Li4xMDk4MGYzMTdjOGMxZGI5Mzc1
ZDdhZjRhYTY2YjQzYTk4OTNmOTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVySW1wbC5jcHAKQEAgLTE3Nyw2ICsxNzcsMTEgQEAgdm9pZCBSZWNvcmRlckltcGw6
OnJlY29yZERyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIsIGNvbnN0IEZs
b2F0UmUKICAgICBhcHBlbmQ8RHJhd0ltYWdlQnVmZmVyPihpbWFnZUJ1ZmZlci5yZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOwogfQogCit2
b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkRHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVyKEltYWdlQnVm
ZmVyJiBpbWFnZUJ1ZmZlciwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3sKKyAg
ICBhcHBlbmQ8RHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVyPihpbWFnZUJ1ZmZlci5yZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOworfQorCiB2
b2lkIFJlY29yZGVySW1wbDo6cmVjb3JkRHJhd05hdGl2ZUltYWdlKFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciBpbWFnZUlkZW50aWZpZXIsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0
IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewogICAgIGFwcGVuZDxEcmF3TmF0aXZl
SW1hZ2U+KGltYWdlSWRlbnRpZmllciwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0
aW9ucyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5oCmluZGV4
IDBmOWRmYThhNDRjMjg0OTFhYzgwZTQ5NWEyNmY1YWVkMGNhYWE4ZWIuLjY5NTUyZWFjYmM0NjVj
ZTJlZWExZDk5M2ZkNGM4YmI2NmQ2ZWZmMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlY29yZGVySW1wbC5oCkBAIC02OSw2ICs2OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBy
ZWNvcmREcmF3RmlsdGVyZWRJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciosIGNvbnN0IEZsb2F0UmVj
dCYgc291cmNlSW1hZ2VSZWN0LCBGaWx0ZXImKSBmaW5hbDsKICAgICB2b2lkIHJlY29yZERyYXdH
bHlwaHMoY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1
ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCBjb3VudCwgY29uc3QgRmxvYXRQb2ludCYgbG9jYWxBbmNo
b3IsIEZvbnRTbW9vdGhpbmdNb2RlKSBmaW5hbDsKICAgICB2b2lkIHJlY29yZERyYXdJbWFnZUJ1
ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBmaW5hbDsKKyAgICB2
b2lkIHJlY29yZERyYXdDb25zdW1pbmdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQ
YWludGluZ09wdGlvbnMmKSBmaW5hbDsKICAgICB2b2lkIHJlY29yZERyYXdOYXRpdmVJbWFnZShS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VJZGVudGlmaWVyLCBjb25zdCBGbG9hdFNp
emUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIGZpbmFsOwogICAgIHZvaWQg
cmVjb3JkRHJhd1BhdHRlcm4oUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBGbG9h
dFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYg
cGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlv
bnMmID0geyB9KSBmaW5hbDsKICAgICB2b2lkIHJlY29yZEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIo
ZmxvYXQpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCmlu
ZGV4IDYyZWUzYmJiNGFjZDU5NTM0MDQxMmU1NjE1NTQzNjdmMmQ2ZmQ3YTEuLjgwMDQ4NTMxMGJl
NzhhNDM3ZWMyM2VlOTQ2OTRlZDMzMzQzMDM4YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZXBsYXllci5jcHAKQEAgLTU2LDYgKzU2LDE3IEBAIGlubGluZSBzdGF0aWMgc3RkOjpv
cHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5SW1hZ2VCdWZmZXJJdGVt
KEdyCiAgICAgcmV0dXJuIHJlc291cmNlSWRlbnRpZmllcjsKIH0KIAoraW5saW5lIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlEcmF3Q29uc3Vt
aW5nSW1hZ2VCdWZmZXJJdGVtKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgUmVzb3Vy
Y2VIZWFwJiByZXNvdXJjZUhlYXAsIEl0ZW1IYW5kbGUgaXRlbSkKK3sKKyAgICBhdXRvJiBkcmF3
Q29uc3VtaW5nSW1hZ2VCdWZmZXJJdGVtID0gaXRlbS5nZXQ8RHJhd0NvbnN1bWluZ0ltYWdlQnVm
ZmVyPigpOworICAgIGF1dG8gcmVzb3VyY2VJZGVudGlmaWVyID0gZHJhd0NvbnN1bWluZ0ltYWdl
QnVmZmVySXRlbS5pbWFnZUJ1ZmZlcklkZW50aWZpZXIoKTsKKyAgICBpZiAoYXV0byogaW1hZ2VC
dWZmZXIgPSByZXNvdXJjZUhlYXAuZ2V0SW1hZ2VCdWZmZXIocmVzb3VyY2VJZGVudGlmaWVyKSkg
eworICAgICAgICBkcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXJJdGVtLmFwcGx5KGNvbnRleHQsIFJl
ZlB0ciB7IGltYWdlQnVmZmVyIH0pOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAg
IH0KKyAgICByZXR1cm4gcmVzb3VyY2VJZGVudGlmaWVyOworfQorCiB0ZW1wbGF0ZTxjbGFzcyBU
PgogaW5saW5lIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cj4gYXBwbHlOYXRpdmVJbWFnZUl0ZW0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBS
ZXNvdXJjZUhlYXAmIHJlc291cmNlSGVhcCwgSXRlbUhhbmRsZSBpdGVtKQogewpAQCAtMTE1LDYg
KzEyNiwxMiBAQCBzdGQ6OnBhaXI8c3RkOjpvcHRpb25hbDxTdG9wUmVwbGF5UmVhc29uPiwgc3Rk
OjpvcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aQogICAgICAgICByZXR1cm4geyBzdGQ6
Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCB9OwogICAgIH0KIAorICAgIGlmIChpdGVtLmlzPERyYXdJ
bWFnZUJ1ZmZlcj4oKSkgeworICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJ
ZGVudGlmaWVyID0gYXBwbHlEcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXJJdGVtKG1fY29udGV4dCwg
bV9yZXNvdXJjZUhlYXAsIGl0ZW0pKQorICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJl
YXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJj
ZUlkZW50aWZpZXIpIH07CisgICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxs
b3B0IH07CisgICAgfQorCiAgICAgaWYgKGl0ZW0uaXM8Q2xpcFRvSW1hZ2VCdWZmZXI+KCkpIHsK
ICAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5
SW1hZ2VCdWZmZXJJdGVtPENsaXBUb0ltYWdlQnVmZmVyPihtX2NvbnRleHQsIG1fcmVzb3VyY2VI
ZWFwLCBpdGVtKSkKICAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3Np
bmdDYWNoZWRSZXNvdXJjZSwgV1RGTW92ZShtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVy
KSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBo
aWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCmluZGV4IDNmMTMzZjNlMDg3ZTI5NzIz
MjY0Mzc2NmEyY2FkMzFiMTdkZmZiZWEuLmM3NjkyZDk2OGVkYjkzZmYwZjk2NDE1ZjI2MzhiZjNh
NGJmYzRkZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTI2NSw2ICsyNjUs
MjQgQEAgdm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjpkcmF3SW1hZ2VCdWZmZXJXaXRo
UXVhbGlmaWVkSWRlbnRpZmllcihRdWFsaWZpZWQKICAgICBoYW5kbGVJdGVtKERpc3BsYXlMaXN0
OjpEcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXJJZGVudGlmaWVyLm9iamVjdCgpLCBkZXN0aW5h
dGlvblJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpLCAqaW1hZ2VCdWZmZXIpOwogfQogCit2b2lkIFJl
bW90ZURpc3BsYXlMaXN0UmVjb3JkZXI6OmRyYXdDb25zdW1pbmdJbWFnZUJ1ZmZlcihSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RpbmF0aW9uUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKK3sKKyAgICAvLyBJbW1lZGlhdGVseSB0dXJuIHRo
ZSBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgKHdoaWNoIGlzIGVycm9yLXByb25lKSB0byBh
IFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwKKyAgICAvLyBhbmQgdXNlIGEg
aGVscGVyIGZ1bmN0aW9uIHRvIG1ha2Ugc3VyZSB0aGF0IGRvbid0IGFjY2lkZW50YWxseSB1c2Ug
dGhlIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciAoYmVjYXVzZSB0aGUgaGVscGVyIGZ1bmN0
aW9uIGNhbid0IHNlZSBpdCkuCisgICAgZHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVyV2l0aFF1YWxp
ZmllZElkZW50aWZpZXIoeyBpbWFnZUJ1ZmZlcklkZW50aWZpZXIsIG1fd2ViUHJvY2Vzc0lkZW50
aWZpZXIgfSwgZGVzdGluYXRpb25SZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKK30KKwordm9pZCBS
ZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjpkcmF3Q29uc3VtaW5nSW1hZ2VCdWZmZXJXaXRoUXVh
bGlmaWVkSWRlbnRpZmllcihRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1h
Z2VCdWZmZXJJZGVudGlmaWVyLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uUmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9u
cykKK3sKKyAgICBSZWZQdHIgaW1hZ2VCdWZmZXIgPSByZXNvdXJjZUNhY2hlKCkuY2FjaGVkSW1h
Z2VCdWZmZXIoaW1hZ2VCdWZmZXJJZGVudGlmaWVyKTsKKyAgICBpZiAoIWltYWdlQnVmZmVyKSB7
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgaGFuZGxlSXRlbShEaXNwbGF5TGlzdDo6RHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVyKGlt
YWdlQnVmZmVySWRlbnRpZmllci5vYmplY3QoKSwgZGVzdGluYXRpb25SZWN0LCBzcmNSZWN0LCBv
cHRpb25zKSwgV1RGTW92ZShpbWFnZUJ1ZmZlcikpOworfQorCiB2b2lkIFJlbW90ZURpc3BsYXlM
aXN0UmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
aW1hZ2VJZGVudGlmaWVyLCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICAvLyBJbW1lZGlhdGVseSB0dXJuIHRoZSBSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgKHdoaWNoIGlzIGVycm9yLXByb25lKSB0byBhIFF1YWxp
ZmllZFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmggYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5o
CmluZGV4IDBjZmViYzg2ZjUxNGVmZTdlZmM0YTM3NGE2Mzg3ZjY5MmQyYTAyZDUuLmZlMmY0MDMw
NmYyYzE3YzA4OTE1OWUzNGMyNjQwZTAxNzAzMzRmZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyLmgKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3Jk
ZXIuaApAQCAtODEsNiArODEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkcmF3R2x5cGhzKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpEcmF3R2x5cGhzJiYpOwogICAgIHZvaWQgZHJhd0ZpbHRlcmVkSW1h
Z2VCdWZmZXIoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXI+IHNvdXJjZUltYWdlSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBzb3Vy
Y2VJbWFnZVJlY3QsIElQQzo6RmlsdGVyUmVmZXJlbmNlKTsKICAgICB2b2lkIGRyYXdJbWFnZUJ1
ZmZlcihXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVu
dGlmaWVyLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGRlc3RpbmF0aW9uUmVjdCwgY29uc3Qg
V2ViQ29yZTo6RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5n
T3B0aW9ucyYpOworICAgIHZvaWQgZHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVyKFdlYkNvcmU6OlJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIsIGNvbnN0IFdl
YkNvcmU6OkZsb2F0UmVjdCYgZGVzdGluYXRpb25SZWN0LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJik7CiAgICAg
dm9pZCBkcmF3TmF0aXZlSW1hZ2UoV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
IGltYWdlSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBpbWFnZVNpemUsIGNv
bnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVj
dCYgc3JjUmVjdCwgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKTsKICAgICB2
b2lkIGRyYXdQYXR0ZXJuKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpbWFn
ZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBX
ZWJDb3JlOjpGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHRp
bGVSZWN0LCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBXZWJDb3JlOjpG
bG9hdFBvaW50JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBXZWJD
b3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpOwogICAgIHZvaWQgYmVnaW5UcmFuc3BhcmVuY3lM
YXllcihmbG9hdCBvcGFjaXR5KTsKQEAgLTEzNCw2ICsxMzUsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgY2xpcFRvSW1hZ2VCdWZmZXJXaXRoUXVhbGlmaWVkSWRlbnRpZmllcihRdWFsaWZpZWRSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGVzdGlu
YXRpb25SZWN0KTsKICAgICB2b2lkIGRyYXdHbHlwaHNXaXRoUXVhbGlmaWVkSWRlbnRpZmllcihX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0dseXBocyYmLCBRdWFsaWZpZWRSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIgZm9udElkZW50aWZpZXIpOwogICAgIHZvaWQgZHJhd0ltYWdlQnVmZmVy
V2l0aFF1YWxpZmllZElkZW50aWZpZXIoUXVhbGlmaWVkUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyIGltYWdlQnVmZmVySWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBkZXN0
aW5hdGlvblJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgV2Vi
Q29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMmKTsKKyAgICB2b2lkIGRyYXdDb25zdW1pbmdJbWFn
ZUJ1ZmZlcldpdGhRdWFsaWZpZWRJZGVudGlmaWVyKFF1YWxpZmllZFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVj
dCYgZGVzdGluYXRpb25SZWN0LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJik7CiAgICAgdm9pZCBkcmF3TmF0aXZl
SW1hZ2VXaXRoUXVhbGlmaWVkSWRlbnRpZmllcihRdWFsaWZpZWRSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXIgaW1hZ2VJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGltYWdl
U2l6ZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgV2ViQ29yZTo6
RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYp
OwogICAgIHZvaWQgZHJhd1BhdHRlcm5XaXRoUXVhbGlmaWVkSWRlbnRpZmllcihRdWFsaWZpZWRS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VJZGVudGlmaWVyLCBjb25zdCBXZWJDb3Jl
OjpGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBkZXN0UmVj
dCwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgV2ViQ29yZTo6QWZm
aW5lVHJhbnNmb3JtJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYsIGNvbnN0IFdlYkNvcmU6
OkZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgV2ViQ29yZTo6SW1hZ2VQYWludGluZ09wdGlvbnMm
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZURpc3BsYXlMaXN0UmVjb3JkZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5tZXNzYWdlcy5pbgppbmRleCA2
Y2RjODI3ZGFjMTJhNzVkZTUzNTEzMDJkMzhjMDIzOGRiMDY5MDhkLi5hZWE5Yjk3ZjFlOWZmZmZl
MWU3M2JmMzYwOGU4ZTBjODIwYTM1NzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlci5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxpc3RSZWNv
cmRlci5tZXNzYWdlcy5pbgpAQCAtNDcsNiArNDcsNyBAQCBtZXNzYWdlcyAtPiBSZW1vdGVEaXNw
bGF5TGlzdFJlY29yZGVyIE5vdFJlZkNvdW50ZWQgU3RyZWFtIHsKICAgICBEcmF3R2x5cGhzKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3R2x5cGhzIGl0ZW0pCiAgICAgRHJhd0ZpbHRlcmVkSW1h
Z2VCdWZmZXIoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXI+IHNvdXJjZUltYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6RmxvYXRSZWN0IHNvdXJjZUltYWdl
UmVjdCwgSVBDOjpGaWx0ZXJSZWZlcmVuY2UgZmlsdGVyKQogICAgIERyYXdJbWFnZUJ1ZmZlcihX
ZWJDb3JlOjpSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVy
LCBXZWJDb3JlOjpGbG9hdFJlY3QgZGVzdGluYXRpb25SZWN0LCBXZWJDb3JlOjpGbG9hdFJlY3Qg
c3JjUmVjdCwgc3RydWN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zIG9wdGlvbnMpCisg
ICAgRHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVyKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIsIFdlYkNvcmU6OkZsb2F0UmVjdCBkZXN0aW5h
dGlvblJlY3QsIFdlYkNvcmU6OkZsb2F0UmVjdCBzcmNSZWN0LCBzdHJ1Y3QgV2ViQ29yZTo6SW1h
Z2VQYWludGluZ09wdGlvbnMgb3B0aW9ucykKICAgICBEcmF3TmF0aXZlSW1hZ2UoV2ViQ29yZTo6
UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGltYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6Rmxv
YXRTaXplIGltYWdlU2l6ZSwgV2ViQ29yZTo6RmxvYXRSZWN0IGRlc3RSZWN0LCBXZWJDb3JlOjpG
bG9hdFJlY3Qgc3JjUmVjdCwgc3RydWN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zIG9w
dGlvbnMpCiAgICAgRHJhd1BhdHRlcm4oV2ViQ29yZTo6UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyIGltYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6RmxvYXRTaXplIGltYWdlU2l6ZSwgV2ViQ29y
ZTo6RmxvYXRSZWN0IGRlc3RSZWN0LCBXZWJDb3JlOjpGbG9hdFJlY3QgdGlsZVJlY3QsIFdlYkNv
cmU6OkFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm0sIFdlYkNvcmU6OkZsb2F0UG9pbnQgcGhhc2Us
IFdlYkNvcmU6OkZsb2F0U2l6ZSBzcGFjaW5nLCBzdHJ1Y3QgV2ViQ29yZTo6SW1hZ2VQYWludGlu
Z09wdGlvbnMgb3B0aW9ucykKICAgICBCZWdpblRyYW5zcGFyZW5jeUxheWVyKGZsb2F0IG9wYWNp
dHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
SW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJ
bWFnZUJ1ZmZlci5oCmluZGV4IDM1YjQ1MjcwYjQ1ODQyNDgwOTgxMDQyZGM3NTUzNGZiYWJhZWJm
MmQuLmE5ZTk2Nzg0NDA0ZTc0ZTY0YTA2NjZlZTU2NTQ2NzU0YWU3YjA2MWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlci5o
CkBAIC02Myw2ICs2Myw5IEBAIHB1YmxpYzoKIAogICAgIH5SZW1vdGVJbWFnZUJ1ZmZlcigpCiAg
ICAgeworICAgICAgICBpZiAoIW1fYmFja2VuZCkKKyAgICAgICAgICAgIHJldHVybjsKKwogICAg
ICAgICAvLyBVbndpbmQgdGhlIGNvbnRleHQncyBzdGF0ZSBzdGFjayBiZWZvcmUgZGVzdHJ1Y3Rp
b24sIHNpbmNlIGNhbGxzIHRvIHJlc3RvcmUgbWF5IG5vdCBoYXZlCiAgICAgICAgIC8vIGJlZW4g
Zmx1c2hlZCB5ZXQsIG9yIHRoZSB3ZWIgcHJvY2VzcyBtYXkgaGF2ZSB0ZXJtaW5hdGVkLgogICAg
ICAgICB3aGlsZSAoY29udGV4dCgpLnN0YWNrU2l6ZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNw
bGF5TGlzdFJlY29yZGVyUHJveHkuY3BwCmluZGV4IDk4NjU3MTllYTc3MTVlYWZhZWM0NzdiYmNh
MTVjMTE4NTVhZTY4NzMuLjFkMjkwNTY2OWJlYzA0Y2MwM2QxODNjZTBhYmU4NmNjNmRkZDVhYjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3Rl
RGlzcGxheUxpc3RSZWNvcmRlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5jcHAKQEAgLTE5
OCw2ICsxOTgsMTEgQEAgdm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHk6OnJlY29y
ZERyYXdJbWFnZUJ1ZmZlcihJbWFnZUJ1ZmZlciYgaW1hZ2VCdWYKICAgICBzZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjpEcmF3SW1hZ2VCdWZmZXIoaW1hZ2VCdWZmZXIu
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCksIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25z
KSk7CiB9CiAKK3ZvaWQgUmVtb3RlRGlzcGxheUxpc3RSZWNvcmRlclByb3h5OjpyZWNvcmREcmF3
Q29uc3VtaW5nSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJiBvcHRpb25zKQoreworICAgIHNlbmQoTWVzc2FnZXM6OlJlbW90ZURpc3Bs
YXlMaXN0UmVjb3JkZXI6OkRyYXdDb25zdW1pbmdJbWFnZUJ1ZmZlcihpbWFnZUJ1ZmZlci5yZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpKTsK
K30KKwogdm9pZCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHk6OnJlY29yZERyYXdOYXRp
dmVJbWFnZShSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VJZGVudGlmaWVyLCBjb25z
dCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykK
IHsKICAgICBzZW5kKE1lc3NhZ2VzOjpSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyOjpEcmF3TmF0
aXZlSW1hZ2UoaW1hZ2VJZGVudGlmaWVyLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBv
cHRpb25zKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHkuaAppbmRl
eCA3YmU3NDRiMzQyYTY1NDY1OTJlNzM0MTJkYTEwZDFiNDNlZDY5OGU2Li4xMDdhZDc0NTkxOGI5
MzI5YjIxNDdmZDNiOTIyZWRkOWRkMzVlMmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZURpc3BsYXlMaXN0UmVjb3JkZXJQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlRGlzcGxheUxp
c3RSZWNvcmRlclByb3h5LmgKQEAgLTkwLDYgKzkwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJl
Y29yZERyYXdGaWx0ZXJlZEltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyKiwgY29uc3Qg
V2ViQ29yZTo6RmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QsIFdlYkNvcmU6OkZpbHRlciYpIGZp
bmFsOwogICAgIHZvaWQgcmVjb3JkRHJhd0dseXBocyhjb25zdCBXZWJDb3JlOjpGb250JiwgY29u
c3QgV2ViQ29yZTo6R2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IFdlYkNvcmU6OkdseXBoQnVmZmVy
QWR2YW5jZSosIHVuc2lnbmVkIGNvdW50LCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBsb2Nh
bEFuY2hvciwgV2ViQ29yZTo6Rm9udFNtb290aGluZ01vZGUpIGZpbmFsOwogICAgIHZvaWQgcmVj
b3JkRHJhd0ltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJiwgY29uc3QgV2ViQ29yZTo6
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBzcmNSZWN0LCBj
b25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIGZpbmFsOworICAgIHZvaWQgcmVj
b3JkRHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVmZmVyJiwgY29uc3Qg
V2ViQ29yZTo6RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBz
cmNSZWN0LCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYpIGZpbmFsOwogICAg
IHZvaWQgcmVjb3JkRHJhd05hdGl2ZUltYWdlKFdlYkNvcmU6OlJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllciBpbWFnZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgaW1hZ2VT
aXplLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBXZWJDb3JlOjpG
bG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikg
ZmluYWw7CiAgICAgdm9pZCByZWNvcmREcmF3UGF0dGVybihXZWJDb3JlOjpSZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25z
dCBXZWJDb3JlOjpGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3Qm
IHRpbGVSZWN0LCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBXZWJDb3Jl
OjpGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzcGFjaW5nLCBj
b25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSB7IH0pIGZpbmFsOwogICAgIHZv
aWQgcmVjb3JkQmVnaW5UcmFuc3BhcmVuY3lMYXllcihmbG9hdCkgZmluYWw7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453270</attachid>
            <date>2022-02-25 15:15:14 -0800</date>
            <delta_ts>2022-02-25 17:45:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236685-20220225151514.patch</filename>
            <type>text/plain</type>
            <size>4666</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwNDcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDZmNWEyYjFhNDAzNjU5
ODJiYjVjYmE5ODQ2MzI5ZDIxYWM2ODhlMi4uNzljNmViMmUxZDBlMmI2NTZiMzM2MGZhOGQxYzUy
YjMxMWJlYmFlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIyLTAyLTI1ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
SW1wbGVtZW50IFJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmRyYXdDb25zdW1pbmcoKQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2Njg1CisgICAgICAg
IHJkYXI6Ly84OTAwNzQyNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFzc2VydCBkcmF3Q29uc3VtaW5nKCkgZG9lcyBub3QgZHJhdyBpbnRvIGl0cyBi
YWNrZW5kIGJlZm9yZSBpdCB3aWxsIGJlCisgICAgICAgIGRlc3Ryb3llZC4KKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaDoKKwogMjAyMi0wMi0yNCAg
SmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBbUmVmYWN0b3JdIEFk
b3B0IExvZ2dlckhlbHBlciBpbiBMb2dnaW5nIEVNRSBjbGFzc2VzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDFmMWQ1
ZjYyYTYxYzJjODc3NzExNjM1YmJlOTZkODE0Mzk4N2RiOWYuLmIwMWViNWFkYzA1MzVjZmRiODU1
NWQ0YThmOWRmNDZiNTc1NjhmZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMjItMDIt
MjUgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQ
cm9jZXNzXSBJbXBsZW1lbnQgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6ZHJhd0NvbnN1bWluZygp
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY2ODUK
KyAgICAgICAgcmRhcjovLzg5MDA3NDI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6ZHJhd0NvbnN1bWluZygp
IHNob3VsZCBjYWxsIGRyYXdJbWFnZUJ1ZmZlcigpIG9mCisgICAgICAgIHRoZSBkZXN0aW5hdGlv
biBHcmFwaGljc0NvbnRleHQuIE5vIHJlY3Vyc2lvbiB3aWxsIGhhcHBlbiBhbmQgdGhlIGV4cGVj
dGVkCisgICAgICAgIGJlaGF2aW9yIHdpbGwgYmUgYWNoaWV2ZWQgYnkgdGhpcyBjaGFuZ2UuIAor
CisgICAgICAgIFRoaXMgaXMgdGhlIHNlcXVlbmNlIG9mIGNhbGxzIHdoZW4gdGhlIERlc3RpbmF0
aW9uIEdyYXBoaWNzQ29udGV4dCBpcworICAgICAgICBsb2NhbCBhbmQgd2hlbiBpdCBpcyByZW1v
dGU6CisKKyAgICAgICAgLS0gRGVzdGluYXRpb24gR3JhcGhpY3NDb250ZXh0IGlzIGxvY2FsOgor
ICAgICAgICAgICBJbiB0aGlzIGNhc2UsIHRoZSBiYWNrZW5kIG9mIHRoZSBSZW1vdGVJbWFnZUJ1
ZmZlclByb3h5IGNhbiBiZSBtYXBwZWQKKyAgICAgICAgICAgaW4gV2ViUHJvY2VzczsgaS5lLiB3
ZSBkbyBoYXZlIGFjY2VzcyB0byBpdHMgbWVtb3J5LgorICAgICAgICAgICBDb25jcmV0ZUltYWdl
QnVmZmVyOjpkcmF3KCkgd2lsbCBiZSBjYWxsZWQgZXZlbnR1YWxseS4gVGhpcyBmdW5jdGlvbgor
ICAgICAgICAgICB3aWxsIGNhbGwgaXRzIGJhY2tlbmQtPmRyYXcoKSB3aGljaCB3aWxsIGdldCBh
IE5hdGl2ZUltYWdlIGJ5IGNhbGxpbmcKKyAgICAgICAgICAgYmFja2VuZC0+Y29weU5hdGl2ZUlt
YWdlKCkuIFRoZXJlIGlzIG5vIGRpZmZlcmVuY2UgYmV0d2VlbiBkcmF3KCkgYW5kCisgICAgICAg
ICAgIGRyYXdDb25zdW1pbmcoKSBpbiB0aGlzIGNhc2UgYmVjYXVzZSB0aGUgYmFja2VuZCBpcyB0
aWxsIG93bmVkIGJ5CisgICAgICAgICAgIEdQVVByb2Nlc3MuIFNvIGl0IHdpbGwgbm90IGJlIHJl
bGVhc2VkIGltbWVkaWF0ZWx5LiBXZSBkbyBub3QgY29weQorICAgICAgICAgICB0aGUgcGl4ZWxz
IHNpbmNlIHdlIGhhdmUgdG8gdXNlIERvbnRDb3B5QmFja2luZ1N0b3JlLgorCisgICAgICAgIC0t
IERlc3RpbmF0aW9uIEdyYXBoaWNzQ29udGV4dCBpcyByZW1vdGU6CisgICAgICAgICAgIEluIHRo
aXMgY2FzZSwgUmVjb3JkZXI6OmRyYXdJbWFnZUJ1ZmZlcigpIHdpbGwgYmUgY2FsbGVkIHdoaWNo
IHdpbGwKKyAgICAgICAgICAgY2FsbCBSZW1vdGVEaXNwbGF5TGlzdFJlY29yZGVyUHJveHk6OnJl
Y29yZERyYXdJbWFnZUJ1ZmZlcigpLiBUaGlzCisgICAgICAgICAgIHdpbGwgc2VuZCBhIG1lc3Nh
Z2UgdG8gR1BVUHJvY2VzcyBhbmQgaGVuY2UgYWxsIHRoZSBkcmF3aW5nIHdpbGwgCisgICAgICAg
ICAgIGhhcHBlbiBpbiBHUFVQcm9jZXNzLiBTaW1pbGFyIHRvIHRoZSBjYXNlIG9mIHRoZSBsb2Nh
bCBHcmFwaGljc0NvbnRleHQsCisgICAgICAgICAgIG5vIHBpeGVscyB3aWxsIGJlIGNvcGllZCBm
cm9tIHRoZSBSZW1vdGVJbWFnZUJ1ZmZlciBiYWNrZW5kIHRvIHRoZQorICAgICAgICAgICBOYXRp
dmVJbWFnZSBpbiBhbGwgY2FzZXMuIFRoZSBhc3N1bXB0aW9uIGlzIHRoZSBiYWNrZW5kIHdpbGwg
YmUgZGVzdHJveWVkCisgICAgICAgICAgIGF1dG9tYXRpY2FsbHkgYWZ0ZXIgY2FsbGluZyBkcmF3
Q29uc3VtaW5nKCkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJ
bWFnZUJ1ZmZlclByb3h5Lmg6CisKIDIwMjItMDItMjQgIEplciBOb2JsZSAgPGplci5ub2JsZUBh
cHBsZS5jb20+CiAKICAgICAgICAgW1JlZmFjdG9yXSBBZG9wdCBMb2dnZXJIZWxwZXIgaW4gTGVn
YWN5IEVNRSBjbGFzc2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgKaW5kZXggZTMyZTcwNDdlYjFiZTQ4ZmEzOGNmOGQz
MjVmNzcwNDhkOGRmZGE4ZS4uOWE5ODgyYTMyNzZmY2IxY2ZjYjEzNDdjODg3NzY0MGE4ZTc0ZDhi
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJ
bWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNy
ZXRlSW1hZ2VCdWZmZXIuaApAQCAtMTk2LDYgKzE5Niw3IEBAIHByb3RlY3RlZDoKIAogICAgIHZv
aWQgZHJhd0NvbnN1bWluZyhHcmFwaGljc0NvbnRleHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFp
bnRpbmdPcHRpb25zJiBvcHRpb25zKSBvdmVycmlkZQogICAgIHsKKyAgICAgICAgQVNTRVJUKCZk
ZXN0Q29udGV4dCAhPSAmY29udGV4dCgpKTsKICAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBl
bnN1cmVCYWNrZW5kQ3JlYXRlZCgpKSB7CiAgICAgICAgICAgICBmbHVzaERyYXdpbmdDb250ZXh0
KCk7CiAgICAgICAgICAgICBiYWNrZW5kLT5kcmF3Q29uc3VtaW5nKGRlc3RDb250ZXh0LCBkZXN0
UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCmluZGV4
IDYyYjY5MjZkN2M1MmYwMjQ1YjA5YmRhMDg0YzEyYjg0ZDFiZmRkN2UuLjFhY2VjZDk2ZjBkOWUw
OTBjY2MxOTk5ZDk3NGE4MmZlNjA0NmYzYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5o
CkBAIC0xOTEsNiArMTkxLDEyIEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIGJpdG1hcC0+
Y3JlYXRlSW1hZ2UoKTsKICAgICB9CiAKKyAgICB2b2lkIGRyYXdDb25zdW1pbmcoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBXZWJDb3Jl
OjpJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykgZmluYWwKKyAgICB7CisgICAgICAgIEFT
U0VSVCgmZGVzdENvbnRleHQgIT0gJmNvbnRleHQoKSk7CisgICAgICAgIGRlc3RDb250ZXh0LmRy
YXdJbWFnZUJ1ZmZlcigqdGhpcywgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOworICAgIH0K
KwogICAgIFJlZlB0cjxXZWJDb3JlOjpOYXRpdmVJbWFnZT4gc2lua0ludG9OYXRpdmVJbWFnZSgp
IGZpbmFsCiAgICAgewogICAgICAgICByZXR1cm4gY29weU5hdGl2ZUltYWdlKCk7Cg==
</data>
<flag name="review"
          id="480564"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
    <flag name="commit-queue"
          id="480584"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453281</attachid>
            <date>2022-02-25 17:48:05 -0800</date>
            <delta_ts>2022-02-25 21:07:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236685-20220225174804.patch</filename>
            <type>text/plain</type>
            <size>4693</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwNDcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDZmNWEyYjFhNDAzNjU5
ODJiYjVjYmE5ODQ2MzI5ZDIxYWM2ODhlMi4uZWUyNGU4YzE0ZjI4N2ZkZGQxZDcxNWM2Y2FkNzNm
NzUxOGFlNTUwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIyLTAyLTI1ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
SW1wbGVtZW50IFJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmRyYXdDb25zdW1pbmcoKQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2Njg1CisgICAgICAg
IHJkYXI6Ly84OTAwNzQyNgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKwor
ICAgICAgICBBc3NlcnQgSW1hZ2VCdWZmZXI6OmRyYXdDb25zdW1pbmcoKSBkb2VzIG5vdCBkcmF3
IGludG8gaXRzIGJhY2tlbmQgYmVmb3JlCisgICAgICAgIGl0IGlzIGRlc3Ryb3llZC4KKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaDoKKwogMjAyMi0w
Mi0yNCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBbUmVmYWN0
b3JdIEFkb3B0IExvZ2dlckhlbHBlciBpbiBMb2dnaW5nIEVNRSBjbGFzc2VzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4
IDFmMWQ1ZjYyYTYxYzJjODc3NzExNjM1YmJlOTZkODE0Mzk4N2RiOWYuLmQyYWU4ODIyYmJmYmI2
NDg3OTY1ZTJmZTUyMjMxYTgxZTRjOGM1ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIw
MjItMDItMjUgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CisKKyAgICAgICAg
W0dQVSBQcm9jZXNzXSBJbXBsZW1lbnQgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eTo6ZHJhd0NvbnN1
bWluZygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzY2ODUKKyAgICAgICAgcmRhcjovLzg5MDA3NDI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2lt
b24gRnJhc2VyLgorCisgICAgICAgIFJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmRyYXdDb25zdW1p
bmcoKSBzaG91bGQgY2FsbCBkcmF3SW1hZ2VCdWZmZXIoKSBvZgorICAgICAgICB0aGUgZGVzdGlu
YXRpb24gR3JhcGhpY3NDb250ZXh0LiBObyByZWN1cnNpb24gd2lsbCBoYXBwZW4gYW5kIHRoZSBl
eHBlY3RlZAorICAgICAgICBiZWhhdmlvciB3aWxsIGJlIGFjaGlldmVkIGJ5IHRoaXMgY2hhbmdl
LiAKKworICAgICAgICBUaGlzIGlzIHRoZSBzZXF1ZW5jZSBvZiBjYWxscyB3aGVuIHRoZSBEZXN0
aW5hdGlvbiBHcmFwaGljc0NvbnRleHQgaXMKKyAgICAgICAgbG9jYWwgYW5kIHdoZW4gaXQgaXMg
cmVtb3RlOgorCisgICAgICAgIC0tIERlc3RpbmF0aW9uIEdyYXBoaWNzQ29udGV4dCBpcyBsb2Nh
bDoKKyAgICAgICAgICAgSW4gdGhpcyBjYXNlLCB0aGUgYmFja2VuZCBvZiB0aGUgUmVtb3RlSW1h
Z2VCdWZmZXJQcm94eSBjYW4gYmUgbWFwcGVkCisgICAgICAgICAgIGluIFdlYlByb2Nlc3M7IGku
ZS4gd2UgZG8gaGF2ZSBhY2Nlc3MgdG8gaXRzIG1lbW9yeS4KKyAgICAgICAgICAgQ29uY3JldGVJ
bWFnZUJ1ZmZlcjo6ZHJhdygpIHdpbGwgYmUgY2FsbGVkIGV2ZW50dWFsbHkuIFRoaXMgZnVuY3Rp
b24KKyAgICAgICAgICAgd2lsbCBjYWxsIGl0cyBiYWNrZW5kLT5kcmF3KCkgd2hpY2ggd2lsbCBn
ZXQgYSBOYXRpdmVJbWFnZSBieSBjYWxsaW5nCisgICAgICAgICAgIGJhY2tlbmQtPmNvcHlOYXRp
dmVJbWFnZSgpLiBUaGVyZSBpcyBubyBkaWZmZXJlbmNlIGJldHdlZW4gZHJhdygpIGFuZAorICAg
ICAgICAgICBkcmF3Q29uc3VtaW5nKCkgaW4gdGhpcyBjYXNlIGJlY2F1c2UgdGhlIGJhY2tlbmQg
aXMgc3RpbGwgb3duZWQgYnkKKyAgICAgICAgICAgR1BVUHJvY2Vzcy4gU28gaXQgd2lsbCBub3Qg
YmUgcmVsZWFzZWQgaW1tZWRpYXRlbHkuIFdlIGRvIG5vdCBjb3B5IHRoZQorICAgICAgICAgICBw
aXhlbHMgc2luY2Ugd2UgaGF2ZSB0byBwYXNzIERvbnRDb3B5QmFja2luZ1N0b3JlIHRvIGNvcHlO
YXRpdmVJbWFnZSgpLgorCisgICAgICAgIC0tIERlc3RpbmF0aW9uIEdyYXBoaWNzQ29udGV4dCBp
cyByZW1vdGU6CisgICAgICAgICAgIEluIHRoaXMgY2FzZSwgUmVjb3JkZXI6OmRyYXdJbWFnZUJ1
ZmZlcigpIHdpbGwgYmUgY2FsbGVkIHdoaWNoIHdpbGwKKyAgICAgICAgICAgY2FsbCBSZW1vdGVE
aXNwbGF5TGlzdFJlY29yZGVyUHJveHk6OnJlY29yZERyYXdJbWFnZUJ1ZmZlcigpLiBUaGlzCisg
ICAgICAgICAgIHdpbGwgc2VuZCBhIG1lc3NhZ2UgdG8gR1BVUHJvY2VzcyBhbmQgaGVuY2UgYWxs
IHRoZSBkcmF3aW5nIHdpbGwgCisgICAgICAgICAgIGhhcHBlbiBpbiBHUFVQcm9jZXNzLiBTaW1p
bGFyIHRvIHRoZSBjYXNlIG9mIHRoZSBsb2NhbCBHcmFwaGljc0NvbnRleHQsCisgICAgICAgICAg
IG5vIHBpeGVscyB3aWxsIGJlIGNvcGllZCBmcm9tIHRoZSBSZW1vdGVJbWFnZUJ1ZmZlciBiYWNr
ZW5kIHRvIHRoZQorICAgICAgICAgICBOYXRpdmVJbWFnZSBpbiBhbGwgY2FzZXMuIFRoZSBhc3N1
bXB0aW9uIGlzIHRoZSBiYWNrZW5kIHdpbGwgYmUgZGVzdHJveWVkCisgICAgICAgICAgIGF1dG9t
YXRpY2FsbHkgYWZ0ZXIgY2FsbGluZyBkcmF3Q29uc3VtaW5nKCkuCisKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lmg6CisKIDIwMjItMDIt
MjQgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgW1JlZmFjdG9y
XSBBZG9wdCBMb2dnZXJIZWxwZXIgaW4gTGVnYWN5IEVNRSBjbGFzc2VzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgKaW5k
ZXggZTMyZTcwNDdlYjFiZTQ4ZmEzOGNmOGQzMjVmNzcwNDhkOGRmZGE4ZS4uOWE5ODgyYTMyNzZm
Y2IxY2ZjYjEzNDdjODg3NzY0MGE4ZTc0ZDhiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaApAQCAtMTk2LDYgKzE5
Niw3IEBAIHByb3RlY3RlZDoKIAogICAgIHZvaWQgZHJhd0NvbnN1bWluZyhHcmFwaGljc0NvbnRl
eHQmIGRlc3RDb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKSBvdmVycmlk
ZQogICAgIHsKKyAgICAgICAgQVNTRVJUKCZkZXN0Q29udGV4dCAhPSAmY29udGV4dCgpKTsKICAg
ICAgICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBlbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKSB7CiAgICAg
ICAgICAgICBmbHVzaERyYXdpbmdDb250ZXh0KCk7CiAgICAgICAgICAgICBiYWNrZW5kLT5kcmF3
Q29uc3VtaW5nKGRlc3RDb250ZXh0LCBkZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdl
QnVmZmVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVt
b3RlSW1hZ2VCdWZmZXJQcm94eS5oCmluZGV4IDYyYjY5MjZkN2M1MmYwMjQ1YjA5YmRhMDg0YzEy
Yjg0ZDFiZmRkN2UuLjFhY2VjZDk2ZjBkOWUwOTBjY2MxOTk5ZDk3NGE4MmZlNjA0NmYzYjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1h
Z2VCdWZmZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCkBAIC0xOTEsNiArMTkxLDEyIEBAIHByb3RlY3Rl
ZDoKICAgICAgICAgcmV0dXJuIGJpdG1hcC0+Y3JlYXRlSW1hZ2UoKTsKICAgICB9CiAKKyAgICB2
b2lkIGRyYXdDb25zdW1pbmcoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBkZXN0Q29udGV4dCwg
Y29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBXZWJDb3JlOjpJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9u
cykgZmluYWwKKyAgICB7CisgICAgICAgIEFTU0VSVCgmZGVzdENvbnRleHQgIT0gJmNvbnRleHQo
KSk7CisgICAgICAgIGRlc3RDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqdGhpcywgZGVzdFJlY3Qs
IHNyY1JlY3QsIG9wdGlvbnMpOworICAgIH0KKwogICAgIFJlZlB0cjxXZWJDb3JlOjpOYXRpdmVJ
bWFnZT4gc2lua0ludG9OYXRpdmVJbWFnZSgpIGZpbmFsCiAgICAgewogICAgICAgICByZXR1cm4g
Y29weU5hdGl2ZUltYWdlKCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>